All functions:
  Elements:
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/fuzzer/dbfuzz.c:54,1
    - Dst: vsnprintf
      Src: /src/fuzzer/dbfuzz.c:55,1
    - Dst: va_end
      Src: /src/fuzzer/dbfuzz.c:56,1
    - Dst: strchr
      Src: /src/fuzzer/dbfuzz.c:60,1
    - Dst: snprintf
      Src: /src/fuzzer/dbfuzz.c:66,1
    - Dst: system
      Src: /src/fuzzer/dbfuzz.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - database
    - query
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 70
    functionName: psql_command
    functionSourceFile: /src/fuzzer/dbfuzz.c
    functionUses: 0
    functionsReached:
    - va_end
    - strchr
    - va_start
    - vsnprintf
    - system
    - snprintf
    linkageType: ''
    returnType: void
    signature: void psql_command(const char *database, const char *query, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/fuzzer/dbfuzz.c:75,1
    - Dst: psprintf
      Src: /src/fuzzer/dbfuzz.c:78,1
    - Dst: execl
      Src: /src/fuzzer/dbfuzz.c:79,1
    - Dst: fprintf
      Src: /src/fuzzer/dbfuzz.c:80,1
    - Dst: _
      Src: /src/fuzzer/dbfuzz.c:80,1
    - Dst: strerror
      Src: /src/fuzzer/dbfuzz.c:81,1
    - Dst: _exit
      Src: /src/fuzzer/dbfuzz.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - cmdline
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 86
    functionName: spawn_process
    functionSourceFile: /src/fuzzer/dbfuzz.c
    functionUses: 0
    functionsReached:
    - execl
    - fork
    - _
    - psprintf
    - strerror
    - _exit
    - fprintf
    linkageType: ''
    returnType: PID_TYPE
    signature: PID_TYPE spawn_process(const char *cmdline)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/fuzzer/dbfuzz.c:95,1
    - Dst: get_progname
      Src: /src/fuzzer/dbfuzz.c:96,1
    - Dst: set_pglocale_pgservice
      Src: /src/fuzzer/dbfuzz.c:97,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/fuzzer/dbfuzz.c:97,1
    - Dst: get_restricted_token
      Src: /src/fuzzer/dbfuzz.c:98,1
    - Dst: make_absolute_path
      Src: /src/fuzzer/dbfuzz.c:100,1
    - Dst: make_absolute_path
      Src: /src/fuzzer/dbfuzz.c:102,1
    - Dst: mkdtemp
      Src: /src/fuzzer/dbfuzz.c:103,1
    - Dst: psprintf
      Src: /src/fuzzer/dbfuzz.c:103,1
    - Dst: putenv
      Src: /src/fuzzer/dbfuzz.c:104,1
    - Dst: psprintf
      Src: /src/fuzzer/dbfuzz.c:104,1
    - Dst: mkdir
      Src: /src/fuzzer/dbfuzz.c:106,1
    - Dst: snprintf
      Src: /src/fuzzer/dbfuzz.c:108,1
    - Dst: mkdir
      Src: /src/fuzzer/dbfuzz.c:109,1
    - Dst: snprintf
      Src: /src/fuzzer/dbfuzz.c:111,1
    - Dst: system
      Src: /src/fuzzer/dbfuzz.c:115,1
    - Dst: snprintf
      Src: /src/fuzzer/dbfuzz.c:117,1
    - Dst: snprintf
      Src: /src/fuzzer/dbfuzz.c:119,1
    - Dst: snprintf
      Src: /src/fuzzer/dbfuzz.c:122,1
    - Dst: spawn_process
      Src: /src/fuzzer/dbfuzz.c:128,1
    - Dst: system
      Src: /src/fuzzer/dbfuzz.c:131,1
    - Dst: waitpid
      Src: /src/fuzzer/dbfuzz.c:133,1
    - Dst: pg_usleep
      Src: /src/fuzzer/dbfuzz.c:134,1
    - Dst: psql_command
      Src: /src/fuzzer/dbfuzz.c:137,1
    - Dst: snprintf
      Src: /src/fuzzer/dbfuzz.c:140,1
    - Dst: system
      Src: /src/fuzzer/dbfuzz.c:142,1
    - Dst: rmdir
      Src: /src/fuzzer/dbfuzz.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 146
    functionName: main
    functionSourceFile: /src/fuzzer/dbfuzz.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - waitpid
    - get_progname
    - spawn_process
    - rmdir
    - putenv
    - psql_command
    - pg_logging_init
    - psprintf
    - mkdir
    - system
    - get_restricted_token
    - make_absolute_path
    - mkdtemp
    - pg_usleep
    - set_pglocale_pgservice
    - snprintf
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/fuzzer/fuzzer_initialize.c:52,1
    - Dst: dirname
      Src: /src/fuzzer/fuzzer_initialize.c:53,1
    - Dst: chdir
      Src: /src/fuzzer/fuzzer_initialize.c:54,1
    - Dst: free
      Src: /src/fuzzer/fuzzer_initialize.c:55,1
    - Dst: snprintf
      Src: /src/fuzzer/fuzzer_initialize.c:57,1
    - Dst: snprintf
      Src: /src/fuzzer/fuzzer_initialize.c:58,1
    - Dst: snprintf
      Src: /src/fuzzer/fuzzer_initialize.c:59,1
    - Dst: system
      Src: /src/fuzzer/fuzzer_initialize.c:67,1
    - Dst: get_progname
      Src: /src/fuzzer/fuzzer_initialize.c:69,1
    - Dst: MemoryContextInit
      Src: /src/fuzzer/fuzzer_initialize.c:70,1
    - Dst: InitStandaloneProcess
      Src: /src/fuzzer/fuzzer_initialize.c:72,1
    - Dst: SetProcessingMode
      Src: /src/fuzzer/fuzzer_initialize.c:73,1
    - Dst: InitializeGUCOptions
      Src: /src/fuzzer/fuzzer_initialize.c:74,1
    - Dst: process_postgres_switches
      Src: /src/fuzzer/fuzzer_initialize.c:75,1
    - Dst: SelectConfigFiles
      Src: /src/fuzzer/fuzzer_initialize.c:77,1
    - Dst: checkDataDir
      Src: /src/fuzzer/fuzzer_initialize.c:79,1
    - Dst: ChangeToDataDir
      Src: /src/fuzzer/fuzzer_initialize.c:80,1
    - Dst: CreateDataDirLockFile
      Src: /src/fuzzer/fuzzer_initialize.c:81,1
    - Dst: LocalProcessControlFile
      Src: /src/fuzzer/fuzzer_initialize.c:82,1
    - Dst: InitializeMaxBackends
      Src: /src/fuzzer/fuzzer_initialize.c:83,1
    - Dst: InitProcess
      Src: /src/fuzzer/fuzzer_initialize.c:86,1
    - Dst: BaseInit
      Src: /src/fuzzer/fuzzer_initialize.c:87,1
    - Dst: sigprocmask
      Src: /src/fuzzer/fuzzer_initialize.c:88,1
    - Dst: InitPostgres
      Src: /src/fuzzer/fuzzer_initialize.c:89,1
    - Dst: SetProcessingMode
      Src: /src/fuzzer/fuzzer_initialize.c:91,1
    - Dst: BeginReportingGUCOptions
      Src: /src/fuzzer/fuzzer_initialize.c:93,1
    - Dst: process_session_preload_libraries
      Src: /src/fuzzer/fuzzer_initialize.c:94,1
    - Dst: AllocSetContextCreate
      Src: /src/fuzzer/fuzzer_initialize.c:96,1
    - Dst: AllocSetContextCreate
      Src: /src/fuzzer/fuzzer_initialize.c:99,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/fuzzer_initialize.c:102,1
    - Dst: initStringInfo
      Src: /src/fuzzer/fuzzer_initialize.c:103,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/fuzzer_initialize.c:104,1
    - Dst: GetCurrentTimestamp
      Src: /src/fuzzer/fuzzer_initialize.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 40
    argCount: 2
    argNames:
    - dbname
    - argv
    argTypes:
    - char*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 110
    functionName: FuzzerInitialize
    functionSourceFile: /src/fuzzer/fuzzer_initialize.c
    functionUses: 0
    functionsReached:
    - get_progname
    - CreateDataDirLockFile
    - checkDataDir
    - sigprocmask
    - process_postgres_switches
    - MemoryContextInit
    - InitializeMaxBackends
    - BeginReportingGUCOptions
    - process_session_preload_libraries
    - BaseInit
    - InitPostgres
    - SetProcessingMode
    - strdup
    - GetCurrentTimestamp
    - chdir
    - initStringInfo
    - ChangeToDataDir
    - AllocSetContextCreate
    - InitProcess
    - InitializeGUCOptions
    - dirname
    - LocalProcessControlFile
    - MemoryContextSwitchTo
    - InitStandaloneProcess
    - free
    - system
    - SelectConfigFiles
    - snprintf
    linkageType: ''
    returnType: int
    signature: int FuzzerInitialize(char *dbname, char ***argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:43,1
    - Dst: raw_parser
      Src: /src/fuzzer/simple_query_fuzzer.c:44,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:45,1
    - Dst: lfirst_node
      Src: /src/fuzzer/simple_query_fuzzer.c:48,1
    - Dst: lnext
      Src: /src/fuzzer/simple_query_fuzzer.c:52,1
    - Dst: AllocSetContextCreate
      Src: /src/fuzzer/simple_query_fuzzer.c:54,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:55,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:57,1
    - Dst: pg_analyze_and_rewrite_fixedparams
      Src: /src/fuzzer/simple_query_fuzzer.c:60,1
    - Dst: pg_plan_queries
      Src: /src/fuzzer/simple_query_fuzzer.c:61,1
    - Dst: MemoryContextDelete
      Src: /src/fuzzer/simple_query_fuzzer.c:64,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - query_string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 69
    functionName: exec_simple_query
    functionSourceFile: /src/fuzzer/simple_query_fuzzer.c
    functionUses: 0
    functionsReached:
    - pg_plan_queries
    - pg_analyze_and_rewrite_fixedparams
    - raw_parser
    - lnext
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - AllocSetContextCreate
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void exec_simple_query(const char *query_string)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/fuzzer/simple_query_fuzzer.c:48,1
    - Dst: lnext
      Src: /src/fuzzer/simple_query_fuzzer.c:52,1
    - Dst: AllocSetContextCreate
      Src: /src/fuzzer/simple_query_fuzzer.c:54,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:55,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:57,1
    - Dst: pg_analyze_and_rewrite_fixedparams
      Src: /src/fuzzer/simple_query_fuzzer.c:60,1
    - Dst: pg_plan_queries
      Src: /src/fuzzer/simple_query_fuzzer.c:61,1
    - Dst: MemoryContextDelete
      Src: /src/fuzzer/simple_query_fuzzer.c:64,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 68
    functionName: foreach
    functionSourceFile: /src/fuzzer/simple_query_fuzzer.c
    functionUses: 0
    functionsReached:
    - pg_plan_queries
    - lnext
    - AllocSetContextCreate
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - pg_analyze_and_rewrite_fixedparams
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach (parsetree_item, parsetree_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextInit
      Src: /src/fuzzer/simple_query_fuzzer.c:72,1
    - Dst: InitializeGUCOptions
      Src: /src/fuzzer/simple_query_fuzzer.c:73,1
    - Dst: InitializeMaxBackends
      Src: /src/fuzzer/simple_query_fuzzer.c:74,1
    - Dst: AllocSetContextCreate
      Src: /src/fuzzer/simple_query_fuzzer.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 80
    functionName: LLVMFuzzerInitialize
    functionSourceFile: /src/fuzzer/simple_query_fuzzer.c
    functionUses: 0
    functionsReached:
    - InitializeMaxBackends
    - InitializeGUCOptions
    - MemoryContextInit
    - AllocSetContextCreate
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerInitialize(int *argc, char ***argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/fuzzer/simple_query_fuzzer.c:87,1
    - Dst: memcpy
      Src: /src/fuzzer/simple_query_fuzzer.c:88,1
    - Dst: sigsetjmp
      Src: /src/fuzzer/simple_query_fuzzer.c:90,1
    - Dst: set_stack_base
      Src: /src/fuzzer/simple_query_fuzzer.c:93,1
    - Dst: disable_all_timeouts
      Src: /src/fuzzer/simple_query_fuzzer.c:95,1
    - Dst: pq_comm_reset
      Src: /src/fuzzer/simple_query_fuzzer.c:97,1
    - Dst: EmitErrorReport
      Src: /src/fuzzer/simple_query_fuzzer.c:98,1
    - Dst: jit_reset_after_error
      Src: /src/fuzzer/simple_query_fuzzer.c:99,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:101,1
    - Dst: FlushErrorState
      Src: /src/fuzzer/simple_query_fuzzer.c:102,1
    - Dst: MemoryContextSwitchTo
      Src: /src/fuzzer/simple_query_fuzzer.c:103,1
    - Dst: MemoryContextReset
      Src: /src/fuzzer/simple_query_fuzzer.c:104,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/fuzzer/simple_query_fuzzer.c:105,1
    - Dst: exec_simple_query
      Src: /src/fuzzer/simple_query_fuzzer.c:107,1
    - Dst: free
      Src: /src/fuzzer/simple_query_fuzzer.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 112
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/fuzzer/simple_query_fuzzer.c
    functionUses: 0
    functionsReached:
    - set_stack_base
    - memcpy
    - MemoryContextReset
    - SetCurrentStatementStartTimestamp
    - MemoryContextSwitchTo
    - jit_reset_after_error
    - exec_simple_query
    - sigsetjmp
    - EmitErrorReport
    - free
    - FlushErrorState
    - pq_comm_reset
    - calloc
    - disable_all_timeouts
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/fuzzer/protocol_fuzzer.c:58,1
    - Dst: dirname
      Src: /src/fuzzer/protocol_fuzzer.c:59,1
    - Dst: chdir
      Src: /src/fuzzer/protocol_fuzzer.c:60,1
    - Dst: free
      Src: /src/fuzzer/protocol_fuzzer.c:61,1
    - Dst: system
      Src: /src/fuzzer/protocol_fuzzer.c:70,1
    - Dst: system
      Src: /src/fuzzer/protocol_fuzzer.c:71,1
    - Dst: MemoryContextInit
      Src: /src/fuzzer/protocol_fuzzer.c:73,1
    - Dst: sigsetjmp
      Src: /src/fuzzer/protocol_fuzzer.c:74,1
    - Dst: PostgresSingleUserMain
      Src: /src/fuzzer/protocol_fuzzer.c:76,1
    - Dst: pq_endmsgread
      Src: /src/fuzzer/protocol_fuzzer.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 80
    functionName: LLVMFuzzerInitialize
    functionSourceFile: /src/fuzzer/protocol_fuzzer.c
    functionUses: 0
    functionsReached:
    - dirname
    - chdir
    - pq_endmsgread
    - sigsetjmp
    - free
    - strdup
    - MemoryContextInit
    - PostgresSingleUserMain
    - system
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerInitialize(int *argc, char ***argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: siglongjmp
      Src: /src/fuzzer/protocol_fuzzer.c:84,1
    - Dst: __real_exit
      Src: /src/fuzzer/protocol_fuzzer.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: __wrap_exit
    functionSourceFile: /src/fuzzer/protocol_fuzzer.c
    functionUses: 0
    functionsReached:
    - __real_exit
    - siglongjmp
    linkageType: ''
    returnType: void
    signature: void __wrap_exit(int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: __wrap_pq_getbyte
    functionSourceFile: /src/fuzzer/protocol_fuzzer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int __wrap_pq_getbyte(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/fuzzer/protocol_fuzzer.c:102,1
    - Dst: memcpy
      Src: /src/fuzzer/protocol_fuzzer.c:104,1
    - Dst: sigsetjmp
      Src: /src/fuzzer/protocol_fuzzer.c:106,1
    - Dst: PostgresSingleUserMain
      Src: /src/fuzzer/protocol_fuzzer.c:108,1
    - Dst: pq_endmsgread
      Src: /src/fuzzer/protocol_fuzzer.c:110,1
    - Dst: free
      Src: /src/fuzzer/protocol_fuzzer.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 114
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/fuzzer/protocol_fuzzer.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pq_endmsgread
    - sigsetjmp
    - free
    - PostgresSingleUserMain
    - calloc
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: LLVMFuzzerInitialize
    functionSourceFile: /src/fuzzer/json_parser_fuzzer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerInitialize(int *argc, char ***argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/fuzzer/json_parser_fuzzer.c:39,1
    - Dst: memcpy
      Src: /src/fuzzer/json_parser_fuzzer.c:40,1
    - Dst: MemoryContextInit
      Src: /src/fuzzer/json_parser_fuzzer.c:42,1
    - Dst: set_stack_base
      Src: /src/fuzzer/json_parser_fuzzer.c:43,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/fuzzer/json_parser_fuzzer.c:45,1
    - Dst: sigsetjmp
      Src: /src/fuzzer/json_parser_fuzzer.c:47,1
    - Dst: pg_parse_json
      Src: /src/fuzzer/json_parser_fuzzer.c:50,1
    - Dst: free
      Src: /src/fuzzer/json_parser_fuzzer.c:52,1
    - Dst: FlushErrorState
      Src: /src/fuzzer/json_parser_fuzzer.c:53,1
    - Dst: MemoryContextReset
      Src: /src/fuzzer/json_parser_fuzzer.c:54,1
    - Dst: methods::delete_context
      Src: /src/fuzzer/json_parser_fuzzer.c:56,1
    - Dst: VALGRIND_DESTROY_MEMPOOL
      Src: /src/fuzzer/json_parser_fuzzer.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 59
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/fuzzer/json_parser_fuzzer.c
    functionUses: 0
    functionsReached:
    - set_stack_base
    - memcpy
    - MemoryContextReset
    - methods::delete_context
    - VALGRIND_DESTROY_MEMPOOL
    - sigsetjmp
    - pg_parse_json
    - free
    - MemoryContextInit
    - FlushErrorState
    - calloc
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: die
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: die(msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:105,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:106,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:106,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:107,1
    - Dst: handle_args
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:109,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:112,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:113,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:117,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:118,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:121,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:121,1
    - Dst: prepare_buf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:123,1
    - Dst: test_open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:125,1
    - Dst: test_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:128,1
    - Dst: test_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:131,1
    - Dst: test_open_syncs
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:133,1
    - Dst: test_file_descriptor_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:135,1
    - Dst: test_non_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:137,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 142
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - test_open_syncs
    - pqsignal
    - unlink
    - test_open
    - test_file_descriptor_sync
    - pg_logging_init
    - handle_args
    - test_non_sync
    - time
    - test_sync
    - prepare_buf
    - pg_prng_seed
    - set_pglocale_pgservice
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:160,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:160,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:162,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:162,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:163,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:165,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:165,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:167,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:168,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:172,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:178,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:183,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:188,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:189,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:190,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:195,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:201,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:202,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:208,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:210,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:211,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:214,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:214,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:219,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:219,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:221,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:221,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:223,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:223,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 225
    functionName: handle_args
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - strtoul
    - _
    - strcmp
    - getopt_long
    - pg_fatal
    - ngettext
    - printf
    - puts
    - pg_log_error
    - exit
    - pg_log_error_hint
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void handle_args(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_int32
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 235
    functionName: prepare_buf
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - pg_prng_int32
    linkageType: ''
    returnType: void
    signature: void prepare_buf(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:245,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:246,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:248,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:250,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:253,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:254,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 257
    functionName: test_open
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - write
    - fsync
    - die
    - close
    - open
    linkageType: ''
    returnType: void
    signature: void test_open(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:268,1
    - Dst: fcntl
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:271,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:275,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - path
    - flags
    - mode
    argTypes:
    - char*
    - int
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 282
    functionName: open_direct
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached:
    - open
    - fcntl
    - close
    linkageType: ''
    returnType: int
    signature: int open_direct(const char *path, int flags, mode_t mode)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:293,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:293,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:295,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:295,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:296,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:296,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:301,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:302,1
    - Dst: open_direct
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:305,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:307,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:307,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:316,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:320,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:323,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:326,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:326,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:332,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:333,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:335,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:336,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:341,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:345,1
    - Dst: fdatasync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:346,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:349,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:354,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:355,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:357,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:358,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:363,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:367,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:368,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:369,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:372,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:377,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:378,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:381,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:382,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:387,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:391,1
    - Dst: pg_fsync_writethrough
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:392,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:393,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:396,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:398,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:398,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:404,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:405,1
    - Dst: open_direct
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:408,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:410,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:410,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:419,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:430,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:433,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:436,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:436,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:441,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:441,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 82
    argCount: 1
    argNames:
    - writes_per_op
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 444
    functionName: test_sync
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - open_direct
    - _
    - pg_pwrite
    - fsync
    - die
    - printf
    - fflush
    - close
    - open
    - fdatasync
    - pg_fsync_writethrough
    linkageType: ''
    returnType: void
    signature: void test_sync(int writes_per_op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:449,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:449,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:450,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:450,1
    - Dst: test_open_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:453,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:453,1
    - Dst: test_open_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:454,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:454,1
    - Dst: test_open_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:455,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:455,1
    - Dst: test_open_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:456,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:456,1
    - Dst: test_open_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:457,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 458
    functionName: test_open_syncs
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - test_open_sync
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void test_open_syncs(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:472,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:473,1
    - Dst: open_direct
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:476,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:477,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:477,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:484,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:489,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:492,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:495,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:495,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - msg
    - writes_size
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 463
    functionDepth: 2
    functionLinenumber: 463
    functionLinenumberEnd: 497
    functionName: test_open_sync
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - open_direct
    - _
    - pg_pwrite
    - die
    - printf
    - fflush
    - close
    linkageType: ''
    returnType: void
    signature: void test_open_sync(const char *msg, int writes_size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:511,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:511,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:512,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:512,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:519,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:520,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:525,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:526,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:527,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:528,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:529,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:530,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:531,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:537,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:538,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:539,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:547,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:548,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:553,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:554,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:555,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:556,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:557,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:559,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:560,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:561,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:562,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:563,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 566
    functionName: test_file_descriptor_sync
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - _
    - write
    - fsync
    - die
    - printf
    - fflush
    - close
    - open
    linkageType: ''
    returnType: void
    signature: void test_file_descriptor_sync(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:577,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:577,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:578,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:579,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:581,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:582,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:586,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:587,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:590,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 568
    functionDepth: 1
    functionLinenumber: 568
    functionLinenumberEnd: 591
    functionName: test_non_sync
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - _
    - pg_pwrite
    - die
    - printf
    - fflush
    - close
    - open
    linkageType: ''
    returnType: void
    signature: void test_non_sync(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:600,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:602,1
    - Dst: _exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:604,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 605
    functionName: signal_cleanup
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached:
    - write
    - unlink
    - _exit
    linkageType: ''
    returnType: void
    signature: void signal_cleanup(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 609
    functionDepth: 0
    functionLinenumber: 609
    functionLinenumberEnd: 618
    functionName: pg_fsync_writethrough
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: int
    signature: int pg_fsync_writethrough(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:632,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - start_t
    - stop_t
    - ops
    argTypes:
    - struct timeval
    - struct timeval
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 633
    functionName: print_elapse
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void print_elapse(struct timeval start_t, struct timeval stop_t, int
      ops)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 640
    functionName: process_alarm
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void process_alarm(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Sleep
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:646,1
    - Dst: ExitThread
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - param
    argTypes:
    - LPVOID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 649
    functionName: process_alarm
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached:
    - Sleep
    - ExitThread
    linkageType: ''
    returnType: DWORD
    signature: DWORD process_alarm(LPVOID param)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: wcstombs
      Src: /src/postgres/src/bin/pgevent/pgevent.c:42,1
    - Dst: DllRegisterServer
      Src: /src/postgres/src/bin/pgevent/pgevent.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - bInstall
    - pszCmdLine
    argTypes:
    - BOOL
    - LPCWSTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 58
    functionName: DllInstall
    functionSourceFile: /src/postgres/src/bin/pgevent/pgevent.c
    functionUses: 0
    functionsReached:
    - DllRegisterServer
    - wcstombs
    linkageType: ''
    returnType: HRESULT
    signature: "HRESULT DllInstall(BOOL bInstall,\n\t\t   LPCWSTR pszCmdLine)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GetModuleFileName
      Src: /src/postgres/src/bin/pgevent/pgevent.c:73,1
    - Dst: MessageBox
      Src: /src/postgres/src/bin/pgevent/pgevent.c:75,1
    - Dst: _snprintf
      Src: /src/postgres/src/bin/pgevent/pgevent.c:83,1
    - Dst: RegCreateKey
      Src: /src/postgres/src/bin/pgevent/pgevent.c:86,1
    - Dst: MessageBox
      Src: /src/postgres/src/bin/pgevent/pgevent.c:88,1
    - Dst: RegSetValueEx
      Src: /src/postgres/src/bin/pgevent/pgevent.c:93,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgevent/pgevent.c:98,1
    - Dst: MessageBox
      Src: /src/postgres/src/bin/pgevent/pgevent.c:100,1
    - Dst: RegSetValueEx
      Src: /src/postgres/src/bin/pgevent/pgevent.c:107,1
    - Dst: MessageBox
      Src: /src/postgres/src/bin/pgevent/pgevent.c:114,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/pgevent/pgevent.c:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 120
    functionName: DllRegisterServer
    functionSourceFile: /src/postgres/src/bin/pgevent/pgevent.c
    functionUses: 1
    functionsReached:
    - _snprintf
    - RegCreateKey
    - GetModuleFileName
    - MessageBox
    - strlen
    - RegSetValueEx
    - RegCloseKey
    linkageType: ''
    returnType: STDAPI
    signature: STDAPI DllRegisterServer(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _snprintf
      Src: /src/postgres/src/bin/pgevent/pgevent.c:136,1
    - Dst: RegDeleteKey
      Src: /src/postgres/src/bin/pgevent/pgevent.c:139,1
    - Dst: MessageBox
      Src: /src/postgres/src/bin/pgevent/pgevent.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 145
    functionName: DllUnregisterServer
    functionSourceFile: /src/postgres/src/bin/pgevent/pgevent.c
    functionUses: 0
    functionsReached:
    - MessageBox
    - _snprintf
    - RegDeleteKey
    linkageType: ''
    returnType: STDAPI
    signature: STDAPI DllUnregisterServer(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - hModule
    - ul_reason_for_call
    - lpReserved
    argTypes:
    - HANDLE
    - DWORD
    - LPVOID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 160
    functionName: DllMain
    functionSourceFile: /src/postgres/src/bin/pgevent/pgevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BOOL
    signature: "BOOL DllMain(HANDLE hModule,\n\t\tDWORD ul_reason_for_call,\n\t\tLPVOID
      lpReserved\n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 213
    functionName: log_no_match
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_no_match(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: FREE_AND_SET_NULL
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE_AND_SET_NULL(x)
  - BBCount: 89
    BranchProfiles: []
    Callsites:
    - Dst: pg_get_encoding_from_locale
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:289,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:292,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:293,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:294,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:294,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:296,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:299,1
    - Dst: append_database_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:312,1
    - Dst: append_database_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:316,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:322,1
    - Dst: append_btree_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:326,1
    - Dst: append_btree_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:330,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:333,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:335,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:338,1
    - Dst: append_relation_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:345,1
    - Dst: append_relation_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:350,1
    - Dst: append_schema_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:354,1
    - Dst: append_schema_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:358,1
    - Dst: append_heap_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:362,1
    - Dst: append_heap_pattern
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:366,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:369,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:373,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:382,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:397,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:399,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:401,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:404,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:408,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:410,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:412,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:417,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:419,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:421,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:440,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:447,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:448,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:453,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:467,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:469,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:470,1
    - Dst: setup_cancel_handler
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:481,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:487,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:493,1
    - Dst: connectMaintenanceDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:499,1
    - Dst: compile_database_list
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:500,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:506,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:507,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:508,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:509,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:511,1
    - Dst: connectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:513,1
    - Dst: compile_database_list
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:514,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:514,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:520,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:521,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:522,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:536,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:536,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:539,1
    - Dst: connectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:540,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:556,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:557,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:558,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:561,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:562,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:563,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:573,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:574,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:577,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:578,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:578,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:579,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:580,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:581,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:582,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:584,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:588,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:589,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:590,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:591,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:595,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:597,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:598,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:598,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:599,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:600,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:617,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:619,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:626,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:634,1
    - Dst: compile_relation_list_one_db
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:636,1
    - Dst: log_no_match
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:652,1
    - Dst: log_no_match
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:655,1
    - Dst: log_no_match
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:658,1
    - Dst: log_no_match
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:661,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:669,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:670,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:688,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:689,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:691,1
    - Dst: ParallelSlotsSetup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:703,1
    - Dst: ParallelSlotsAdoptConn
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:707,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:711,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:733,1
    - Dst: ParallelSlotsGetIdle
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:745,1
    - Dst: PQsetErrorVerbosity
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:758,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:771,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:772,1
    - Dst: prepare_heap_command
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:776,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:777,1
    - Dst: ParallelSlotSetHandler
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:778,1
    - Dst: run_command
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:779,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:786,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:788,1
    - Dst: prepare_btree_command
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:792,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:793,1
    - Dst: ParallelSlotSetHandler
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:794,1
    - Dst: run_command
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:795,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:798,1
    - Dst: ParallelSlotsWaitCompletion
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:808,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:811,1
    - Dst: ParallelSlotsTerminate
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:816,1
    - Dst: FREE_AND_SET_NULL
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:817,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:821,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:824,1
    CyclomaticComplexity: 110
    EdgeCount: 110
    ICount: 332
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 825
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - PQclear
    - strcmp
    - ParallelSlotsSetup
    - compile_relation_list_one_db
    - append_btree_pattern
    - get_user_name_or_exit
    - pstrdup
    - PQescapeIdentifier
    - pg_log_warning
    - connectMaintenanceDatabase
    - PQsetErrorVerbosity
    - PQgetvalue
    - pg_log_error
    - setup_cancel_handler
    - disconnectDatabase
    - run_command
    - set_pglocale_pgservice
    - executeQuery
    - fprintf
    - pfree
    - progress_report
    - append_database_pattern
    - pg_log_error_detail
    - pg_get_encoding_from_locale
    - append_schema_pattern
    - ParallelSlotsTerminate
    - getenv
    - PQdb
    - prepare_btree_command
    - PQresultStatus
    - PQntuples
    - ParallelSlotsGetIdle
    - strtoul
    - append_heap_pattern
    - option_parse_int
    - sscanf
    - psprintf
    - getopt_long
    - compile_database_list
    - prepare_heap_command
    - strlen
    - ParallelSlotsAdoptConn
    - PQfreemem
    - pg_log_info
    - exit
    - PQerrorMessage
    - pg_log_error_hint
    - ParallelSlotSetHandler
    - termPQExpBuffer
    - pg_strdup
    - pg_strcasecmp
    - pg_logging_init
    - log_no_match
    - connectDatabase
    - pg_fatal
    - pg_logging_increase_verbosity
    - initPQExpBuffer
    - executeCommand
    - ParallelSlotsWaitCompletion
    - FREE_AND_SET_NULL
    - handle_help_version_opts
    - append_relation_pattern
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:845,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:846,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:856,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:858,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:860,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - sql
    - rel
    - conn
    argTypes:
    - PQExpBuffer
    - RelationInfo*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 864
    functionName: prepare_heap_command
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - resetPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void prepare_heap_command(PQExpBuffer sql, RelationInfo *rel, PGconn
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:885,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:888,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:903,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - sql
    - rel
    - conn
    argTypes:
    - PQExpBuffer
    - RelationInfo*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 882
    functionDepth: 1
    functionLinenumber: 882
    functionLinenumberEnd: 916
    functionName: prepare_btree_command
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - resetPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void prepare_btree_command(PQExpBuffer sql, RelationInfo *rel, PGconn
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:935,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:937,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:939,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:940,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:941,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:942,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:943,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - slot
    - sql
    argTypes:
    - ParallelSlot*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 931
    functionDepth: 1
    functionLinenumber: 931
    functionLinenumberEnd: 945
    functionName: run_command
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - pg_log_error_detail
    - PQsendQuery
    - exit
    - PQdb
    - printf
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: void run_command(ParallelSlot *slot, const char *sql)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:968,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:978,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:981,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:983,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 963
    functionDepth: 1
    functionLinenumber: 963
    functionLinenumberEnd: 1000
    functionName: should_processing_continue
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - PQresultErrorField
    - strcmp
    - PQresultStatus
    linkageType: ''
    returnType: bool
    signature: bool should_processing_continue(PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1014,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1015,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1018,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1020,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1022,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1023,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1007
    functionDepth: 1
    functionLinenumber: 1007
    functionLinenumberEnd: 1026
    functionName: indent_lines
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - initPQExpBuffer
    - appendPQExpBufferChar
    - termPQExpBuffer
    - appendPQExpBufferStr
    linkageType: ''
    returnType: char
    signature: 'char *

      indent_lines(const char *str)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1043,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1046,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1056,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1059,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1061,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1062,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1062,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1064,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1065,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1066,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1068,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1069,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1069,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1071,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1072,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1074,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1075,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1075,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1077,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1080,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1080,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1083,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1086,1
    - Dst: indent_lines
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1088,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1088,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1091,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1091,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1093,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1095,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1095,1
    - Dst: FREE_AND_SET_NULL
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1096,1
    - Dst: FREE_AND_SET_NULL
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1099,1
    - Dst: FREE_AND_SET_NULL
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1100,1
    - Dst: FREE_AND_SET_NULL
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1101,1
    - Dst: should_processing_continue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1103,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 3
    argNames:
    - res
    - conn
    - context
    argTypes:
    - PGresult*
    - PGconn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1038
    functionDepth: 2
    functionLinenumber: 1038
    functionLinenumberEnd: 1104
    functionName: verify_heap_slot_handler
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - _
    - PQerrorMessage
    - printf
    - PQresultStatus
    - PQgetvalue
    - FREE_AND_SET_NULL
    - PQgetisnull
    - PQntuples
    - should_processing_continue
    - indent_lines
    linkageType: ''
    returnType: bool
    signature: bool verify_heap_slot_handler(PGresult *res, PGconn *conn, void *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1124,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1126,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1145,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1146,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1149,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1150,1
    - Dst: indent_lines
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1157,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1157,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1160,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1160,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1162,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1164,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1164,1
    - Dst: FREE_AND_SET_NULL
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1165,1
    - Dst: FREE_AND_SET_NULL
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1168,1
    - Dst: FREE_AND_SET_NULL
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1169,1
    - Dst: FREE_AND_SET_NULL
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1170,1
    - Dst: should_processing_continue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1172,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - res
    - conn
    - context
    argTypes:
    - PGresult*
    - PGconn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1119
    functionDepth: 2
    functionLinenumber: 1119
    functionLinenumberEnd: 1173
    functionName: verify_btree_slot_handler
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - _
    - PQerrorMessage
    - pg_log_warning_hint
    - pg_log_warning
    - printf
    - PQresultStatus
    - FREE_AND_SET_NULL
    - pg_log_warning_detail
    - PQntuples
    - should_processing_continue
    - indent_lines
    - fprintf
    linkageType: ''
    returnType: bool
    signature: bool verify_btree_slot_handler(PGresult *res, PGconn *conn, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1185,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1185,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1186,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1186,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1187,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1187,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1188,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1188,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1189,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1189,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1190,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1190,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1191,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1191,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1192,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1192,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1193,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1193,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1194,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1194,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1195,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1195,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1196,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1196,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1197,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1197,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1198,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1198,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1199,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1199,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1200,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1200,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1201,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1201,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1202,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1202,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1203,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1203,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1204,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1204,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1205,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1205,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1206,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1206,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1207,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1207,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1208,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1208,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1209,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1209,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1210,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1210,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1211,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1211,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1212,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1212,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1213,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1213,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1214,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1214,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1215,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1215,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1216,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1216,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1217,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1217,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1218,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1218,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1219,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1219,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1220,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1220,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1221,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1221,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1222,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1222,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1223,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1223,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1224,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1224,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1225,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1225,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1226,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1226,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1227,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1227,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1228,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1228,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1230,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1230,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1231,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1182
    functionDepth: 0
    functionLinenumber: 1182
    functionLinenumberEnd: 1232
    functionName: help
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1259,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1269,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1270,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1271,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1272,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1283,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1284,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1285,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1287,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1292,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1294,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1295,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1296,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1298,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1305,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1309,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1310,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1311,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1313,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1320,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1320,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1322,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1326,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 7
    argNames:
    - relations_total
    - relations_checked
    - relpages_total
    - relpages_checked
    - datname
    - force
    - finished
    argTypes:
    - uint64
    - uint64
    - uint64
    - uint64
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1243
    functionDepth: 0
    functionLinenumber: 1243
    functionLinenumberEnd: 1327
    functionName: progress_report
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - _
    - fputc
    - isatty
    - snprintf
    - strlen
    - time
    - fileno
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void progress_report(uint64 relations_total, uint64 relations_checked,\n\t\t\t\tuint64
      relpages_total, uint64 relpages_checked,\n\t\t\t\tconst char *datname, bool
      force, bool finished)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1341,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - pia
    argTypes:
    - PatternInfoArray*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1335
    functionDepth: 1
    functionLinenumber: 1335
    functionLinenumberEnd: 1346
    functionName: extend_pattern_info_array
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - pg_realloc_array
    - memset
    linkageType: ''
    returnType: PatternInfo
    signature: 'PatternInfo *

      extend_pattern_info_array(PatternInfoArray *pia)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: extend_pattern_info_array
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1362,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1364,1
    - Dst: patternToSQLRegex
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1365,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1369,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1370,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1373,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - pia
    - pattern
    - encoding
    argTypes:
    - PatternInfoArray*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1357
    functionDepth: 2
    functionLinenumber: 1357
    functionLinenumberEnd: 1376
    functionName: append_database_pattern
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - extend_pattern_info_array
    - pstrdup
    - patternToSQLRegex
    - initPQExpBuffer
    - pg_log_error
    - exit
    linkageType: ''
    returnType: void
    signature: void append_database_pattern(PatternInfoArray *pia, const char *pattern,
      int encoding)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: extend_pattern_info_array
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1393,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1395,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1396,1
    - Dst: patternToSQLRegex
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1398,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1402,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1403,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1409,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1412,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1414,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1415,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - pia
    - pattern
    - encoding
    argTypes:
    - PatternInfoArray*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1387
    functionDepth: 2
    functionLinenumber: 1387
    functionLinenumberEnd: 1416
    functionName: append_schema_pattern
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - extend_pattern_info_array
    - pstrdup
    - patternToSQLRegex
    - initPQExpBuffer
    - pg_log_error
    - exit
    linkageType: ''
    returnType: void
    signature: void append_schema_pattern(PatternInfoArray *pia, const char *pattern,
      int encoding)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: extend_pattern_info_array
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1437,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1439,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1440,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1441,1
    - Dst: patternToSQLRegex
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1443,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1447,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1448,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1454,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1457,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1459,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1461,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1462,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 5
    argNames:
    - pia
    - pattern
    - encoding
    - heap_only
    - btree_only
    argTypes:
    - PatternInfoArray*
    - char*
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1429
    functionDepth: 2
    functionLinenumber: 1429
    functionLinenumberEnd: 1467
    functionName: append_relation_pattern_helper
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - extend_pattern_info_array
    - pstrdup
    - patternToSQLRegex
    - initPQExpBuffer
    - pg_log_error
    - exit
    linkageType: ''
    returnType: void
    signature: "void append_relation_pattern_helper(PatternInfoArray *pia, const char
      *pattern,\n\t\t\t\t\t\t\t   int encoding, bool heap_only, bool btree_only)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: append_relation_pattern_helper
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - pia
    - pattern
    - encoding
    argTypes:
    - PatternInfoArray*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1479
    functionDepth: 3
    functionLinenumber: 1479
    functionLinenumberEnd: 1483
    functionName: append_relation_pattern
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - append_relation_pattern_helper
    linkageType: ''
    returnType: void
    signature: void append_relation_pattern(PatternInfoArray *pia, const char *pattern,
      int encoding)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: append_relation_pattern_helper
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - pia
    - pattern
    - encoding
    argTypes:
    - PatternInfoArray*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1495
    functionDepth: 3
    functionLinenumber: 1495
    functionLinenumberEnd: 1499
    functionName: append_heap_pattern
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - append_relation_pattern_helper
    linkageType: ''
    returnType: void
    signature: void append_heap_pattern(PatternInfoArray *pia, const char *pattern,
      int encoding)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: append_relation_pattern_helper
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - pia
    - pattern
    - encoding
    argTypes:
    - PatternInfoArray*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1511
    functionDepth: 3
    functionLinenumber: 1511
    functionLinenumberEnd: 1515
    functionName: append_btree_pattern
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - append_relation_pattern_helper
    linkageType: ''
    returnType: void
    signature: void append_btree_pattern(PatternInfoArray *pia, const char *pattern,
      int encoding)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1556,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1558,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1559,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1560,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1566,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 4
    argNames:
    - buf
    - pia
    - conn
    - inclusive
    argTypes:
    - PQExpBuffer
    - PatternInfoArray*
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1538
    functionDepth: 1
    functionLinenumber: 1538
    functionLinenumberEnd: 1569
    functionName: append_db_pattern_cte
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBuffer
    - appendStringLiteralConn
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: "bool append_db_pattern_cte(PQExpBuffer buf, const PatternInfoArray
      *pia,\n\t\t\t\t\t  PGconn *conn, bool inclusive)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1596,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1600,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1602,1
    - Dst: simple_ptr_list_append
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1603,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1606,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1609,1
    - Dst: append_db_pattern_cte
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1610,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1621,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1626,1
    - Dst: append_db_pattern_cte
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1627,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1628,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1635,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1673,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1676,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1692,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1693,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1695,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1695,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1696,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1697,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1698,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1700,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1702,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1708,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1709,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1709,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1710,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1711,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1721,1
    - Dst: log_no_match
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1723,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1731,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1734,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1739,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1741,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1742,1
    - Dst: simple_ptr_list_append
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1743,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1746,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1751,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1752,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 3
    argNames:
    - conn
    - databases
    - initial_dbname
    argTypes:
    - PGconn*
    - SimplePtrList*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1584
    functionDepth: 2
    functionLinenumber: 1584
    functionLinenumberEnd: 1754
    functionName: compile_database_list
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - pstrdup
    - append_db_pattern_cte
    - PQgetvalue
    - pg_log_error
    - disconnectDatabase
    - appendPQExpBufferStr
    - executeQuery
    - Assert
    - simple_ptr_list_append
    - pg_log_error_detail
    - PQresultStatus
    - PQntuples
    - termPQExpBuffer
    - exit
    - pg_log_info
    - PQgetisnull
    - PQerrorMessage
    - log_no_match
    - pg_fatal
    - initPQExpBuffer
    - atoi
    - pg_malloc0_object
    linkageType: ''
    returnType: void
    signature: "void compile_database_list(PGconn *conn, SimplePtrList *databases,\n\t\t\t\t\t
      \ const char *initial_dbname)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1791,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1793,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1795,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1797,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1798,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1800,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1802,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1803,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1805,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1807,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1809,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1811,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1813,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1815,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1816,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1821,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - buf
    - pia
    - conn
    argTypes:
    - PQExpBuffer
    - PatternInfoArray*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1825
      start: 1776
    functionDepth: 1
    functionLinenumber: 1776
    functionLinenumberEnd: 1825
    functionName: append_rel_pattern_raw_cte
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBuffer
    - appendStringLiteralConn
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: "void append_rel_pattern_raw_cte(PQExpBuffer buf, const PatternInfoArray
      *pia,\n\t\t\t\t\t\t   PGconn *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1849,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1856,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1856,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1857,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - buf
    - raw
    - filtered
    - conn
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1845
    functionDepth: 1
    functionLinenumber: 1845
    functionLinenumberEnd: 1862
    functionName: append_rel_pattern_filtered_cte
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferStr
    - appendStringLiteralConn
    - appendPQExpBuffer
    - PQdb
    linkageType: ''
    returnType: void
    signature: "void append_rel_pattern_filtered_cte(PQExpBuffer buf, const char *raw,\n\t\t\t\t\t\t\t\tconst
      char *filtered, PGconn *conn)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1894,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1895,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1900,1
    - Dst: append_rel_pattern_raw_cte
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1902,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1903,1
    - Dst: append_rel_pattern_filtered_cte
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1904,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1910,1
    - Dst: append_rel_pattern_raw_cte
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1912,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1913,1
    - Dst: append_rel_pattern_filtered_cte
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1914,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1918,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1922,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1924,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1925,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1934,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1942,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1957,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1958,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1960,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1976,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1980,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1981,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1982,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1986,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1990,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1991,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1992,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1993,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1996,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1997,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:1998,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2004,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2014,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2021,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2028,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2038,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2048,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2057,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2059,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2064,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2067,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2077,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2087,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2094,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2096,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2110,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2113,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2128,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2135,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2142,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2148,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2152,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2153,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2155,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2155,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2156,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2157,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2158,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2160,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2162,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2173,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2174,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2174,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2175,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2176,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2177,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2178,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2179,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2180,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2180,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2181,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2182,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2183,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2184,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2185,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2186,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2186,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2196,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2205,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2207,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2207,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2208,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2213,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2214,1
    - Dst: simple_ptr_list_append
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2236,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c:2239,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 115
    argCount: 4
    argNames:
    - conn
    - relations
    - dat
    - pagecount
    argTypes:
    - PGconn*
    - SimplePtrList*
    - DatabaseInfo*
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 1884
    functionDepth: 2
    functionLinenumber: 1884
    functionLinenumberEnd: 2240
    functionName: compile_relation_list_one_db
    functionSourceFile: /src/postgres/src/bin/pg_amcheck/pg_amcheck.c
    functionUses: 1
    functionsReached:
    - CppAsString2
    - PQclear
    - append_rel_pattern_filtered_cte
    - pstrdup
    - PQgetvalue
    - pg_log_error
    - disconnectDatabase
    - appendPQExpBufferStr
    - executeQuery
    - Assert
    - simple_ptr_list_append
    - pg_log_error_detail
    - PQresultStatus
    - OidIsValid
    - PQntuples
    - atooid
    - append_rel_pattern_raw_cte
    - termPQExpBuffer
    - exit
    - PQgetisnull
    - PQerrorMessage
    - pg_fatal
    - initPQExpBuffer
    - atoi
    - pg_malloc0_object
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,\n\t\t\t\t\t\t\t
      const DatabaseInfo *dat,\n\t\t\t\t\t\t\t uint64 *pagecount)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - symname
    - ','
    - name
    - ','
    - redo
    - ','
    - desc
    - ','
    - identify
    - ','
    - startup
    - ','
    - cleanup
    - ','
    - mask
    - ','
    - decode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: PG_RMGR
    functionSourceFile: /src/postgres/src/bin/pg_waldump/rmgrdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask,decode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_waldump/rmgrdesc.c:54,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/bin/pg_waldump/rmgrdesc.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: default_desc
    functionSourceFile: /src/postgres/src/bin/pg_waldump/rmgrdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - XLogRecGetRmid
    linkageType: ''
    returnType: void
    signature: void default_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: default_identify
    functionSourceFile: /src/postgres/src/bin/pg_waldump/rmgrdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      default_identify(uint8 info)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/rmgrdesc.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 84
    functionName: initialize_custom_rmgrs
    functionSourceFile: /src/postgres/src/bin/pg_waldump/rmgrdesc.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void initialize_custom_rmgrs(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/rmgrdesc.c:89,1
    - Dst: RmgrIdIsValid
      Src: /src/postgres/src/bin/pg_waldump/rmgrdesc.c:89,1
    - Dst: RmgrIdIsBuiltin
      Src: /src/postgres/src/bin/pg_waldump/rmgrdesc.c:91,1
    - Dst: initialize_custom_rmgrs
      Src: /src/postgres/src/bin/pg_waldump/rmgrdesc.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - rmid
    argTypes:
    - RmgrId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 99
    functionName: GetRmgrDesc
    functionSourceFile: /src/postgres/src/bin/pg_waldump/rmgrdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - RmgrIdIsValid
    - RmgrIdIsBuiltin
    - initialize_custom_rmgrs
    linkageType: ''
    returnType: RmgrDescData
    signature: 'RmgrDescData *

      GetRmgrDesc(RmgrId rmid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 34
    functionName: timestamptz_to_time_t
    functionSourceFile: /src/postgres/src/bin/pg_waldump/compat.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pg_time_t
    signature: pg_time_t timestamptz_to_time_t(TimestampTz t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamptz_to_time_t
      Src: /src/postgres/src/bin/pg_waldump/compat.c:54,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_waldump/compat.c:55,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_waldump/compat.c:57,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_waldump/compat.c:58,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/compat.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 64
    functionName: timestamptz_to_str
    functionSourceFile: /src/postgres/src/bin/pg_waldump/compat.c
    functionUses: 0
    functionsReached:
    - strftime
    - localtime
    - timestamptz_to_time_t
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      timestamptz_to_str(TimestampTz t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - privateInfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: READ_ANY_WAL
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_ANY_WAL(privateInfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:139,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:143,1
    - Dst: astreamer_waldump_new
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:148,1
    - Dst: astreamer_tar_parser_new
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:151,1
    - Dst: astreamer_gzip_decompressor_new
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:155,1
    - Dst: astreamer_lz4_decompressor_new
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:157,1
    - Dst: astreamer_zstd_decompressor_new
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:159,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:167,1
    - Dst: ArchivedWAL_create
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:174,1
    - Dst: read_archive_file
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:187,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:188,1
    - Dst: ArchivedWAL_start_iterate
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:191,1
    - Dst: ArchivedWAL_iterate
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:192,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:203,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:205,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:205,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:209,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:210,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:219,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:219,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:220,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:223,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:224,1
    - Dst: ArchivedWAL_start_iterate
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:234,1
    - Dst: ArchivedWAL_iterate
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:235,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:241,1
    - Dst: free_archive_wal_entry
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:245,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 2
    argNames:
    - privateInfo
    - compression
    argTypes:
    - XLogDumpPrivate*
    - pg_compress_algorithm
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 247
    functionName: init_archive_reader
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached:
    - astreamer_lz4_decompressor_new
    - ArchivedWAL_start_iterate
    - astreamer_gzip_decompressor_new
    - XLogFromFileName
    - pg_log_error
    - XLByteToSeg
    - ArchivedWAL_create
    - open_file_in_directory
    - XLogRecPtrIsValid
    - free_archive_wal_entry
    - Assert
    - pg_log_error_detail
    - astreamer_zstd_decompressor_new
    - astreamer_tar_parser_new
    - astreamer_waldump_new
    - ArchivedWAL_iterate
    - exit
    - pg_malloc
    - read_archive_file
    - pg_fatal
    - ngettext
    - IsValidWalSegSize
    linkageType: ''
    returnType: void
    signature: "void init_archive_reader(XLogDumpPrivate *privateInfo,\n\t\t\t\t\tpg_compress_algorithm
      compression)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:263,1
    - Dst: ArchivedWAL_start_iterate
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:271,1
    - Dst: ArchivedWAL_iterate
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:272,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:276,1
    - Dst: ArchivedWAL_destroy
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:278,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:285,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:290,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:291,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - privateInfo
    argTypes:
    - XLogDumpPrivate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 293
    functionName: free_archive_reader
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - pg_free
    - ArchivedWAL_start_iterate
    - close
    - ArchivedWAL_iterate
    - pg_log_error
    - destroyStringInfo
    - ArchivedWAL_destroy
    linkageType: ''
    returnType: void
    signature: void free_archive_reader(XLogDumpPrivate *privateInfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:313,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:314,1
    - Dst: get_archive_wal_entry
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:315,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:316,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:332,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:348,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:350,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:351,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:367,1
    - Dst: read_archive_file
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:370,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:371,1
    - Dst: ArchivedWAL_lookup
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:379,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:381,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 4
    argNames:
    - privateInfo
    - targetPagePtr
    - count
    - readBuff
    argTypes:
    - XLogDumpPrivate*
    - XLogRecPtr
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 396
    functionName: read_archive_wal_page
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached:
    - read_archive_file
    - memcpy
    - Assert
    - ArchivedWAL_lookup
    - XLogSegNoOffsetToRecPtr
    - pg_fatal
    - get_archive_wal_entry
    - XLogFileName
    - Min
    - XLByteToSeg
    linkageType: ''
    returnType: int
    signature: "int read_archive_wal_page(XLogDumpPrivate *privateInfo, XLogRecPtr
      targetPagePtr,\n\t\t\t\t\t  size_t count, char *readBuff)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ArchivedWAL_lookup
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:410,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:416,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:424,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:426,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:427,1
    - Dst: ArchivedWAL_delete_item
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:442,1
    - Dst: ArchivedWAL_lookup
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:446,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:449,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - fname
    - privateInfo
    argTypes:
    - char*
    - XLogDumpPrivate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 451
    functionName: free_archive_wal_entry
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 1
    functionsReached:
    - unlink
    - Assert
    - ArchivedWAL_lookup
    - snprintf
    - destroyStringInfo
    - ArchivedWAL_delete_item
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void free_archive_wal_entry(const char *fname, XLogDumpPrivate *privateInfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ArchivedWAL_lookup
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:476,1
    - Dst: ArchivedWAL_start_iterate
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:487,1
    - Dst: ArchivedWAL_iterate
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:488,1
    - Dst: prepare_tmp_write
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:500,1
    - Dst: perform_tmp_write
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:501,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:502,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:503,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:507,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:508,1
    - Dst: read_archive_file
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:515,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:516,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - fname
    - privateInfo
    argTypes:
    - char*
    - XLogDumpPrivate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 519
    functionName: get_archive_wal_entry
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 1
    functionsReached:
    - read_archive_file
    - prepare_tmp_write
    - ArchivedWAL_lookup
    - fclose
    - pg_fatal
    - ArchivedWAL_start_iterate
    - ArchivedWAL_iterate
    - destroyStringInfo
    - makeStringInfo
    - perform_tmp_write
    linkageType: ''
    returnType: ArchivedWALFile
    signature: 'ArchivedWALFile *

      get_archive_wal_entry(const char *fname, XLogDumpPrivate *privateInfo)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:545,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:548,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:556,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:566,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - privateInfo
    argTypes:
    - XLogDumpPrivate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 572
    functionName: read_archive_file
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 3
    functionsReached:
    - astreamer_finalize
    - astreamer_content
    - pg_fatal
    - read
    linkageType: ''
    returnType: bool
    signature: bool read_archive_file(XLogDumpPrivate *privateInfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:580,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:583,1
    - Dst: mkdtemp
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:592,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:595,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:597,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:599,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - waldir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 600
    functionName: setup_tmpwal_dir
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached:
    - Assert
    - canonicalize_path
    - pg_fatal
    - getenv
    - mkdtemp
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void setup_tmpwal_dir(const char *waldir)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:614,1
    - Dst: setup_tmpwal_dir
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:615,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:617,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:620,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:622,1
    - Dst: chmod
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:625,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:626,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:630,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - fname
    - privateInfo
    argTypes:
    - char*
    - XLogDumpPrivate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 633
    functionName: prepare_tmp_write
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 1
    functionsReached:
    - pg_log_debug
    - fopen
    - chmod
    - pg_fatal
    - unlikely
    - setup_tmpwal_dir
    - snprintf
    linkageType: ''
    returnType: FILE
    signature: 'FILE *

      prepare_tmp_write(const char *fname, XLogDumpPrivate *privateInfo)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:641,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:644,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - fname
    - buf
    - file
    argTypes:
    - char*
    - StringInfo
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 638
    functionDepth: 1
    functionLinenumber: 638
    functionLinenumberEnd: 653
    functionName: perform_tmp_write
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 1
    functionsReached:
    - Assert
    - fwrite
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void perform_tmp_write(const char *fname, StringInfo buf, FILE *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - privateInfo
    argTypes:
    - XLogDumpPrivate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 670
    functionName: astreamer_waldump_new
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_waldump_new(XLogDumpPrivate *privateInfo)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:686,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:697,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:699,1
    - Dst: member_is_wal_file
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:701,1
    - Dst: READ_ANY_WAL
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:708,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:717,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:722,1
    - Dst: ArchivedWAL_insert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:734,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:743,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:745,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:749,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:759,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:779,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 678
    functionDepth: 1
    functionLinenumber: 678
    functionLinenumberEnd: 781
    functionName: astreamer_waldump_content
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached:
    - appendBinaryStringInfo
    - member_is_wal_file
    - Assert
    - pfree
    - ArchivedWAL_insert
    - READ_ANY_WAL
    - pg_fatal
    - pg_log_warning
    - XLogFromFileName
    - makeStringInfo
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: "void astreamer_waldump_content(astreamer *streamer, astreamer_member
      *member,\n\t\t\t\t\t\t  const char *data, int len,\n\t\t\t\t\t\t  astreamer_archive_context
      context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 791
    functionName: astreamer_waldump_finalize
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void astreamer_waldump_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:799,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 796
    functionDepth: 1
    functionLinenumber: 796
    functionLinenumberEnd: 801
    functionName: astreamer_waldump_free
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_waldump_free(astreamer *streamer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:819,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:828,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:829,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:830,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:834,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:834,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:839,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:842,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - mystreamer
    - member
    - fname
    argTypes:
    - astreamer_waldump*
    - astreamer_member*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 807
    functionDepth: 1
    functionLinenumber: 807
    functionLinenumberEnd: 845
    functionName: member_is_wal_file
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 1
    functionsReached:
    - IsXLogFileName
    - canonicalize_path
    - pnstrdup
    - strncmp
    - strlen
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool member_is_wal_file(astreamer_waldump *mystreamer, astreamer_member
      *member,\n\t\t\t\t   char **fname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_bytes
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:855,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_waldump/archive_waldump.c:855,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 856
    functionName: hash_string_pointer
    functionSourceFile: /src/postgres/src/bin/pg_waldump/archive_waldump.c
    functionUses: 0
    functionsReached:
    - hash_bytes
    - strlen
    linkageType: ''
    returnType: uint32
    signature: uint32 hash_string_pointer(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: sigint_handler
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sigint_handler(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:98,1
    - Dst: GetRmgrDesc
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: print_rmgr_list
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - printf
    - GetRmgrDesc
    linkageType: ''
    returnType: void
    signature: void print_rmgr_list(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:109,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - directory
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 115
    functionName: verify_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - closedir
    - opendir
    linkageType: ''
    returnType: bool
    signature: bool verify_directory(const char *directory)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:126,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:130,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:131,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:140,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:144,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 146
    functionName: create_fullpage_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - pg_mkdir_p
    - pg_fatal
    - pg_check_dir
    linkageType: ''
    returnType: void
    signature: void create_fullpage_directory(char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:160,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:165,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:166,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - path
    - dir
    - fname
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 174
    functionName: split_path
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - pnstrdup
    - strrchr
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void split_path(const char *path, char **dir, char **fname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:187,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:189,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:190,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - directory
    - fname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 195
    functionName: open_file_in_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 1
    functionsReached:
    - Assert
    - open
    - pg_fatal
    - snprintf
    linkageType: ''
    returnType: int
    signature: int open_file_in_directory(const char *directory, const char *fname)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:211,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:218,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:222,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:224,1
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:226,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:227,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:232,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:241,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:246,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:248,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:248,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:252,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:253,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:259,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:262,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:264,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 3
    argNames:
    - directory
    - fname
    - WalSegSz
    argTypes:
    - char*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 269
    functionName: search_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - open_file_in_directory
    - IsXLogFileName
    - pg_log_error
    - pg_log_error_detail
    - readdir
    - ngettext
    - pg_fatal
    - closedir
    - read
    - close
    - IsValidWalSegSize
    - exit
    - opendir
    - pg_strdup
    linkageType: ''
    returnType: bool
    signature: bool search_directory(const char *directory, const char *fname, int
      *WalSegSz)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: search_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:293,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:294,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:297,1
    - Dst: search_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:298,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:299,1
    - Dst: search_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:306,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:307,1
    - Dst: search_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:309,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:310,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:312,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:316,1
    - Dst: search_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:317,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:318,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:324,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:326,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - directory
    - fname
    - WalSegSz
    argTypes:
    - char*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 329
    functionName: identify_target_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - search_directory
    - pg_strdup
    - getenv
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      identify_target_directory(char *directory, char *fname, int *WalSegSz)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - private
    - targetPagePtr
    - reqLen
    argTypes:
    - XLogDumpPrivate*
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 355
    functionName: required_read_len
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    linkageType: ''
    returnType: int
    signature: "int required_read_len(XLogDumpPrivate *private, XLogRecPtr targetPagePtr,\n\t\t\t\t
      \ int reqLen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:366,1
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:376,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:384,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:393,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - state
    - nextSegNo
    - tli_p
    argTypes:
    - XLogReaderState*
    - XLogSegNo
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 394
    functionName: WALDumpOpenSegment
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - open_file_in_directory
    - pg_usleep
    - pg_fatal
    - XLogFileName
    linkageType: ''
    returnType: void
    signature: "void WALDumpOpenSegment(XLogReaderState *state, XLogSegNo nextSegNo,\n\t\t\t\t
      \  TimeLineID *tli_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 406
    functionName: WALDumpCloseSegment
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void WALDumpCloseSegment(XLogReaderState *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: required_read_len
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:414,1
    - Dst: WALRead
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:421,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:427,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:433,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:437,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - state
    - targetPagePtr
    - reqLen
    - targetPtr
    - readBuff
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 443
    functionName: WALDumpReadPage
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - WALRead
    - required_read_len
    - pg_fatal
    - XLogFileName
    linkageType: ''
    returnType: int
    signature: "int WALDumpReadPage(XLogReaderState *state, XLogRecPtr targetPagePtr,
      int reqLen,\n\t\t\t\tXLogRecPtr targetPtr, char *readBuff)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - state
    - nextSegNo
    - tli_p
    argTypes:
    - XLogReaderState*
    - XLogSegNo
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 455
    functionName: TarWALDumpOpenSegment
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void TarWALDumpOpenSegment(XLogReaderState *state, XLogSegNo nextSegNo,\n\t\t\t\t\t
      \ TimeLineID *tli_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 467
    functionName: TarWALDumpCloseSegment
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void TarWALDumpCloseSegment(XLogReaderState *state)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: required_read_len
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:478,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:497,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:506,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:513,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:525,1
    - Dst: free_archive_wal_entry
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:526,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:535,1
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:536,1
    - Dst: WALDumpReadPage
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:542,1
    - Dst: read_archive_wal_page
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:546,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - state
    - targetPagePtr
    - reqLen
    - targetPtr
    - readBuff
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 473
    functionDepth: 3
    functionLinenumber: 473
    functionLinenumberEnd: 547
    functionName: TarWALDumpReadPage
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - free_archive_wal_entry
    - open_file_in_directory
    - WALDumpReadPage
    - read_archive_wal_page
    - XLByteInSeg
    - required_read_len
    - close
    - XLogFileName
    - XLByteToSeg
    linkageType: ''
    returnType: int
    signature: "int TarWALDumpReadPage(XLogReaderState *state, XLogRecPtr targetPagePtr,
      int reqLen,\n\t\t\t\t   XLogRecPtr targetPtr, char *readBuff)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:561,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:567,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:572,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:573,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 8
    argCount: 4
    argNames:
    - record
    - matchRlocator
    - matchBlock
    - matchFork
    argTypes:
    - XLogReaderState*
    - RelFileLocator
    - BlockNumber
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 579
    functionName: XLogRecordMatchesRelationBlock
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - RelFileLocatorEquals
    - XLogRecGetBlockTagExtended
    - XLogRecMaxBlockId
    linkageType: ''
    returnType: bool
    signature: "bool XLogRecordMatchesRelationBlock(XLogReaderState *record,\n\t\t\t\t\t\t\t
      \  RelFileLocator matchRlocator,\n\t\t\t\t\t\t\t   BlockNumber matchBlock,\n\t\t\t\t\t\t\t
      \  ForkNumber matchFork)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:589,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:591,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:594,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 599
    functionName: XLogRecordHasFPW
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - XLogRecHasBlockRef
    - XLogRecHasBlockImage
    - XLogRecMaxBlockId
    linkageType: ''
    returnType: bool
    signature: bool XLogRecordHasFPW(XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:610,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:621,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:624,1
    - Dst: RestoreBlockImage
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:630,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:631,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:633,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:637,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:639,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:641,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:643,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:646,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:648,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:650,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:651,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:653,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:654,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 2
    argNames:
    - record
    - savepath
    argTypes:
    - XLogReaderState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 656
    functionName: XLogRecordSaveFPWs
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - fopen
    - pg_fatal
    - RestoreBlockImage
    - XLogRecHasBlockImage
    - fclose
    - snprintf
    - XLogRecMaxBlockId
    - XLogRecHasBlockRef
    - XLogRecGetBlockTagExtended
    - fwrite
    - LSN_FORMAT_ARGS
    - sprintf
    linkageType: ''
    returnType: void
    signature: void XLogRecordSaveFPWs(XLogReaderState *record, const char *savepath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetRmgrDesc
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:665,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:665,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:668,1
    - Dst: XLogRecGetPrev
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:669,1
    - Dst: XLogRecGetLen
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:672,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:674,1
    - Dst: XLogRecGetTotalLen
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:676,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:677,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:678,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:679,1
    - Dst: RmgrDescData*::rm_identify
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:681,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:683,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:685,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:687,1
    - Dst: RmgrDescData*::rm_desc
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:688,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:689,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:691,1
    - Dst: XLogRecGetBlockRefInfo
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:692,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:693,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:694,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - config
    - record
    argTypes:
    - XLogDumpConfig*
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 661
    functionDepth: 2
    functionLinenumber: 661
    functionLinenumberEnd: 695
    functionName: XLogDumpDisplayRecord
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - XLogRecGetXid
    - resetStringInfo
    - XLogRecGetTotalLen
    - pfree
    - XLogRecGetPrev
    - LSN_FORMAT_ARGS
    - initStringInfo
    - GetRmgrDesc
    - RmgrDescData*::rm_identify
    - RmgrDescData*::rm_desc
    - XLogRecGetRmid
    - printf
    - XLogRecGetLen
    - XLogRecGetBlockRefInfo
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void XLogDumpDisplayRecord(XLogDumpConfig *config, XLogReaderState
      *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:728,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 9
    argNames:
    - name
    - n
    - total_count
    - rec_len
    - total_rec_len
    - fpi_len
    - total_fpi_len
    - tot_len
    - total_len
    argTypes:
    - char*
    - uint64
    - uint64
    - uint64
    - uint64
    - uint64
    - uint64
    - uint64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 700
    functionDepth: 0
    functionLinenumber: 700
    functionLinenumberEnd: 735
    functionName: XLogDumpStatsRow
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: "void XLogDumpStatsRow(const char *name,\n\t\t\t\t uint64 n, uint64
      total_count,\n\t\t\t\t uint64 rec_len, uint64 total_rec_len,\n\t\t\t\t uint64
      fpi_len, uint64 total_fpi_len,\n\t\t\t\t uint64 tot_len, uint64 total_len)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:756,1
    - Dst: RmgrIdIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:766,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:775,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:776,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:776,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:783,1
    - Dst: RmgrIdIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:796,1
    - Dst: GetRmgrDesc
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:799,1
    - Dst: RmgrIdIsCustom
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:808,1
    - Dst: XLogDumpStatsRow
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:811,1
    - Dst: RmgrDescData*::rm_identify
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:831,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:833,1
    - Dst: XLogDumpStatsRow
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:835,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:835,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:842,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:860,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:866,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:867,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 2
    argNames:
    - config
    - stats
    argTypes:
    - XLogDumpConfig*
    - XLogStats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 741
    functionDepth: 2
    functionLinenumber: 741
    functionLinenumberEnd: 869
    functionName: XLogDumpDisplayStats
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - XLogDumpStatsRow
    - psprintf
    - GetRmgrDesc
    - RmgrIdIsCustom
    - RmgrDescData*::rm_identify
    - RmgrIdIsValid
    - printf
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void XLogDumpDisplayStats(XLogDumpConfig *config, XLogStats *stats)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WALDumpCloseSegment
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:883,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:887,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 874
    functionDepth: 2
    functionLinenumber: 874
    functionLinenumberEnd: 890
    functionName: cleanup_tmpwal_dir_atexit
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - rmtree
    - WALDumpCloseSegment
    linkageType: ''
    returnType: void
    signature: void cleanup_tmpwal_dir_atexit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:895,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:895,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:897,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:897,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:898,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:898,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:899,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:899,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:900,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:900,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:901,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:901,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:902,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:902,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:903,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:903,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:904,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:904,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:906,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:906,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:907,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:907,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:910,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:910,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:911,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:911,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:913,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:913,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:914,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:914,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:915,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:915,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:917,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:917,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:918,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:918,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:919,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:919,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:920,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:920,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:922,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:922,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:923,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:923,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:924,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:924,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:925,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 926
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 84
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:969,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:972,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:973,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:973,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:974,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:978,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:978,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:980,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:981,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:983,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:983,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:985,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:986,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:990,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:991,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:992,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1027,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1031,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1040,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1041,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1043,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1050,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1052,1
    - Dst: forkname_to_number
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1062,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1065,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1071,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1073,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1078,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1087,1
    - Dst: print_rmgr_list
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1089,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1090,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1100,1
    - Dst: RmgrIdIsCustom
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1102,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1104,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1116,1
    - Dst: GetRmgrDesc
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1116,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1125,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1133,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1137,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1138,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1140,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1141,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1148,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1150,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1169,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1171,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1176,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1183,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1196,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1198,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1209,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1211,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1213,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1220,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1230,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1237,1
    - Dst: parse_tar_compress_algorithm
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1245,1
    - Dst: split_path
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1247,1
    - Dst: verify_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1250,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1252,1
    - Dst: create_fullpage_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1258,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1274,1
    - Dst: split_path
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1279,1
    - Dst: verify_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1285,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1286,1
    - Dst: parse_tar_compress_algorithm
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1289,1
    - Dst: identify_target_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1296,1
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1297,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1299,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1300,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1303,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1305,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1306,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1307,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1309,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1310,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1316,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1317,1
    - Dst: split_path
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1325,1
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1327,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1329,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1330,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1333,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1336,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1339,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1340,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1347,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1350,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1351,1
    - Dst: identify_target_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1358,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1361,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1363,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1370,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1384,1
    - Dst: init_archive_reader
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1387,1
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1391,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1392,1
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1400,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1401,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1408,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1415,1
    - Dst: XLogFindNextRecord
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1419,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1421,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1424,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1425,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1427,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1428,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1437,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1438,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1438,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1441,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1442,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1460,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1467,1
    - Dst: XLogRecordMatchesRelationBlock
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1483,1
    - Dst: XLogRecordHasFPW
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1493,1
    - Dst: XLogRecStoreStats
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1501,1
    - Dst: XLogDumpDisplayRecord
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1505,1
    - Dst: XLogRecordSaveFPWs
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1510,1
    - Dst: XLogDumpDisplayStats
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1520,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1523,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1526,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1527,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1536,1
    - Dst: free_archive_reader
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1539,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1544,1
    CyclomaticComplexity: 141
    EdgeCount: 141
    ICount: 350
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 928
    functionDepth: 4
    functionLinenumber: 928
    functionLinenumberEnd: 1546
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - strcmp
    - XLByteInSeg
    - BlockNumberIsValid
    - init_archive_reader
    - print_rmgr_list
    - XLogFindNextRecord
    - XLogFromFileName
    - puts
    - pg_log_error
    - atexit
    - set_pglocale_pgservice
    - LSN_FORMAT_ARGS
    - identify_target_directory
    - open_file_in_directory
    - XLogRecPtrIsValid
    - pg_log_error_detail
    - XLogSegNoOffsetToRecPtr
    - GetRmgrDesc
    - XLogRecordHasFPW
    - XLogReaderFree
    - XLogDumpDisplayRecord
    - OidIsValid
    - usage
    - free_archive_reader
    - parse_tar_compress_algorithm
    - XLogRecordMatchesRelationBlock
    - strtoul
    - XLogSegmentOffset
    - XLogRecordSaveFPWs
    - sscanf
    - XLogDumpDisplayStats
    - isspace
    - getopt_long
    - XLogReaderAllocate
    - memset
    - XL_ROUTINE
    - split_path
    - exit
    - pg_log_info
    - XLogReadRecord
    - pg_usleep
    - pg_log_error_hint
    - pg_strdup
    - pg_strcasecmp
    - pqsignal
    - pg_logging_init
    - RmgrIdIsCustom
    - verify_directory
    - pg_fatal
    - ngettext
    - create_fullpage_directory
    - close
    - RelFileNumberIsValid
    - XLogRecStoreStats
    - forkname_to_number
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:44,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:44,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:45,1
    - Dst: handle_args
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:47,1
    - Dst: pg_initialize_timing
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:50,1
    - Dst: test_system_timing
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:52,1
    - Dst: test_tsc_timing
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 59
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - handle_args
    - pg_initialize_timing
    - test_tsc_timing
    - test_system_timing
    - set_pglocale_pgservice
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:77,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:77,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:79,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:79,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:80,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:82,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:82,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:84,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:85,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:89,1
    - Dst: strtod
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:96,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:100,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:100,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:102,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:102,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:103,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:108,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:108,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:110,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:116,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:121,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:121,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:123,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:123,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:124,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:130,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:130,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:132,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:137,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:137,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:139,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:146,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:147,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:149,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:149,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:151,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:154,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:154,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 52
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 158
    functionName: handle_args
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 2
    functionsReached:
    - strtoul
    - _
    - strcmp
    - getopt_long
    - ngettext
    - printf
    - puts
    - exit
    - strtod
    - fprintf
    linkageType: ''
    returnType: void
    signature: void handle_args(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_timing
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:169,1
    - Dst: output
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 171
    functionName: test_system_timing
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 1
    functionsReached:
    - test_timing
    - output
    linkageType: ''
    returnType: void
    signature: void test_system_timing(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:190,1
    - Dst: test_timing
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:191,1
    - Dst: output
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:194,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:195,1
    - Dst: test_timing
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:198,1
    - Dst: output
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:199,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:200,1
    - Dst: pg_timing_tsc_clock_source_info
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:207,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:209,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:209,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:210,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:210,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:216,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:216,1
    - Dst: fabs
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:218,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:223,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:223,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:225,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:225,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:226,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:230,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:230,1
    - Dst: pg_set_timing_clock_source
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:238,1
    - Dst: pg_current_timing_clock_source
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:239,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:240,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:240,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:242,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:242,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:245,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:245,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 246
    functionName: test_tsc_timing
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 1
    functionsReached:
    - test_timing
    - pg_current_timing_clock_source
    - _
    - pg_set_timing_clock_source
    - fabs
    - pg_timing_tsc_clock_source_info
    - printf
    - exit
    - output
    linkageType: ''
    returnType: void
    signature: void test_tsc_timing(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pg_set_timing_clock_source
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:259,1
    - Dst: pg_current_timing_clock_source
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:265,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:270,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:270,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:272,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:272,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:274,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:274,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:281,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:282,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:286,1
    - Dst: INSTR_TIME_ADD_NANOSEC
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:290,1
    - Dst: INSTR_TIME_GT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:292,1
    - Dst: INSTR_TIME_SET_CURRENT_FAST
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:301,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:303,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:306,1
    - Dst: INSTR_TIME_GET_NANOSEC
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:307,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:310,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:312,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:312,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:313,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:313,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:314,1
    - Dst: pg_leftmost_one_pos64
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:320,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:322,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:322,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:347,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:349,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:351,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:351,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:352,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 52
    argCount: 3
    argNames:
    - duration
    - source
    - fast_timing
    argTypes:
    - unsigned int
    - TimingClockSourceType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 355
    functionName: test_timing
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 2
    functionsReached:
    - pg_current_timing_clock_source
    - _
    - INSTR_TIME_ADD_NANOSEC
    - INSTR_TIME_SET_CURRENT_FAST
    - Assert
    - lengthof
    - INSTR_TIME_GET_DOUBLE
    - INSTR_TIME_GT
    - INSTR_TIME_SUBTRACT
    - unlikely
    - memset
    - printf
    - INSTR_TIME_GET_NANOSEC
    - INSTR_TIME_SET_CURRENT
    - exit
    - pg_set_timing_clock_source
    - pg_leftmost_one_pos64
    - fprintf
    linkageType: ''
    returnType: uint64
    signature: uint64 test_timing(unsigned int duration, TimingClockSourceType source,
      bool fast_timing)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:360,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:361,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:362,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:363,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:364,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:365,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:366,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:367,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:368,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:369,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:375,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:375,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:384,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:385,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:386,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:387,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:389,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:389,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:390,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:402,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:409,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:409,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:410,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:430,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:435,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:450,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:451,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 1
    argNames:
    - loop_count
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 457
    functionName: output
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 2
    functionsReached:
    - _
    - Max
    - printf
    - strlen
    - lengthof
    linkageType: ''
    returnType: void
    signature: void output(uint64 loop_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: should_verify_checksum
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: should_verify_checksum(m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:149,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:150,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:150,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:151,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:153,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:157,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:157,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:159,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:160,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:162,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:162,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:164,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:165,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:184,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:185,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:186,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:187,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:188,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:190,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:199,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:201,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:202,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:206,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:207,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:210,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:210,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:212,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:212,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:215,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:231,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:232,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:236,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:237,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:244,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:245,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:246,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:248,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:249,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:254,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:256,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:257,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:262,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:270,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:271,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:278,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:279,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:282,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:285,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:292,1
    - Dst: parse_manifest_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:300,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:305,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:307,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:321,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:322,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:326,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:327,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:334,1
    - Dst: verify_plain_backup_directory
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:342,1
    - Dst: verify_tar_backup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:345,1
    - Dst: report_extra_backup_files
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:352,1
    - Dst: verify_backup_checksums
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:361,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:372,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:379,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:380,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:382,1
    - Dst: parse_required_wal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:391,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:398,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:398,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 128
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 401
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - parse_required_wal
    - strcmp
    - parse_manifest_file
    - pstrdup
    - printf
    - puts
    - pg_log_error
    - report_extra_backup_files
    - set_pglocale_pgservice
    - strlcpy
    - _
    - pfree
    - simple_string_list_append
    - usage
    - psprintf
    - getopt_long
    - canonicalize_path
    - verify_tar_backup
    - memset
    - report_fatal_error
    - verify_backup_checksums
    - exit
    - pg_malloc
    - pg_log_error_hint
    - find_my_exec
    - pg_logging_init
    - verify_plain_backup_directory
    - stat
    - pg_fatal
    - find_other_exec
    - opendir
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:422,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:423,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:426,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:427,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:431,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:431,1
    - Dst: manifest_files_create
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:434,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:436,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:450,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:451,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:455,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:457,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:462,1
    - Dst: json_parse_manifest
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:465,1
    - Dst: json_parse_manifest_incremental_init
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:472,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:474,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:489,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:493,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:495,1
    - Dst: json_parse_manifest_incremental_chunk
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:501,1
    - Dst: json_parse_manifest_incremental_shutdown
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:506,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:508,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:512,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 1
    argNames:
    - manifest_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 515
    functionName: parse_manifest_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - json_parse_manifest_incremental_shutdown
    - pg_free
    - manifest_files_create
    - json_parse_manifest_incremental_init
    - pg_fatal
    - json_parse_manifest_incremental_chunk
    - Max
    - pg_malloc0_object
    - report_fatal_error
    - close
    - open
    - Min
    - json_parse_manifest
    - pg_malloc
    - fstat
    - read
    linkageType: ''
    returnType: manifest_data
    signature: 'manifest_data *

      parse_manifest_file(char *manifest_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:528,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:529,1
    - Dst: gettext
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:529,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:530,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - context
    - fmt
    argTypes:
    - JsonManifestParseContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 533
    functionName: report_manifest_error
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - gettext
    - pg_log_generic_v
    - exit
    linkageType: ''
    returnType: void
    signature: void report_manifest_error(JsonManifestParseContext *context, const
      char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - manifest_version
    argTypes:
    - JsonManifestParseContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 546
    functionName: verifybackup_version_cb
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void verifybackup_version_cb(JsonManifestParseContext *context,\n\t\t\t\t\t\tint
      manifest_version)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - manifest_system_identifier
    argTypes:
    - JsonManifestParseContext*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 559
    functionName: verifybackup_system_identifier
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void verifybackup_system_identifier(JsonManifestParseContext *context,\n\t\t\t\t\t\t\t
      \  uint64 manifest_system_identifier)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: manifest_files_insert
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:576,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - context
    - pathname
    - size
    - checksum_type
    - checksum_length
    - checksum_payload
    argTypes:
    - JsonManifestParseContext*
    - char*
    - uint64
    - pg_checksum_type
    - int
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 588
    functionName: verifybackup_per_file_cb
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached:
    - manifest_files_insert
    - report_fatal_error
    linkageType: ''
    returnType: void
    signature: "void verifybackup_per_file_cb(JsonManifestParseContext *context,\n\t\t\t\t\t\t
      const char *pathname, uint64 size,\n\t\t\t\t\t\t pg_checksum_type checksum_type,\n\t\t\t\t\t\t
      int checksum_length, uint8 *checksum_payload)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - context
    - tli
    - start_lsn
    - end_lsn
    argTypes:
    - JsonManifestParseContext*
    - TimeLineID
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 615
    functionName: verifybackup_per_wal_range_cb
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: void
    signature: "void verifybackup_per_wal_range_cb(JsonManifestParseContext *context,\n\t\t\t\t\t\t\t
      \ TimeLineID tli,\n\t\t\t\t\t\t\t  XLogRecPtr start_lsn, XLogRecPtr end_lsn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:637,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:639,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:641,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:646,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:649,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:654,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:658,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:660,1
    - Dst: should_ignore_relpath
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:662,1
    - Dst: verify_plain_backup_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:663,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:665,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:666,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:669,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:671,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 4
    argNames:
    - context
    - relpath
    - fullpath
    - dir
    argTypes:
    - verifier_context*
    - char*
    - char*
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 675
    functionName: verify_plain_backup_directory
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pfree
    - psprintf
    - pstrdup
    - readdir
    - should_ignore_relpath
    - simple_string_list_append
    - closedir
    - verify_plain_backup_file
    - report_backup_error
    - opendir
    linkageType: ''
    returnType: void
    signature: "void verify_plain_backup_directory(verifier_context *context, char
      *relpath,\n\t\t\t\t\t\t\t  char *fullpath, DIR *dir)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:690,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:692,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:700,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:706,1
    - Dst: verify_plain_backup_directory
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:708,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:713,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:715,1
    - Dst: manifest_files_lookup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:722,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:725,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:737,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:749,1
    - Dst: verify_control_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:750,1
    - Dst: should_verify_checksum
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:754,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 3
    argNames:
    - context
    - relpath
    - fullpath
    argTypes:
    - verifier_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 683
    functionDepth: 2
    functionLinenumber: 683
    functionLinenumberEnd: 763
    functionName: verify_plain_backup_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - S_ISREG
    - manifest_files_lookup
    - strcmp
    - should_verify_checksum
    - verify_plain_backup_directory
    - stat
    - simple_string_list_append
    - verify_control_file
    - report_backup_error
    - S_ISDIR
    linkageType: ''
    returnType: void
    signature: "void verify_plain_backup_file(verifier_context *context, char *relpath,\n\t\t\t\t\t\t
      char *fullpath)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:775,1
    - Dst: get_controlfile_by_exact_path
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:776,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:780,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:784,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:789,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:795,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - controlpath
    - manifest_system_identifier
    argTypes:
    - char*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 769
    functionDepth: 1
    functionLinenumber: 769
    functionLinenumberEnd: 796
    functionName: verify_control_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - pfree
    - report_fatal_error
    - get_controlfile_by_exact_path
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void verify_control_file(const char *controlpath, uint64 manifest_system_identifier)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:812,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:814,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:817,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:823,1
    - Dst: should_ignore_relpath
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:830,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:834,1
    - Dst: precheck_tar_backup_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:835,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:837,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:841,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:843,1
    - Dst: create_archive_verifier
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:860,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:866,1
    - Dst: verify_tar_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:870,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:873,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:874,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:875,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:877,1
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:878,1
    - Dst: simple_ptr_list_destroy
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:880,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:882,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - context
    - dir
    - base_archive_path
    - wal_archive_path
    argTypes:
    - verifier_context*
    - DIR*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 883
    functionName: verify_tar_backup
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - astreamer_free
    - precheck_tar_backup_file
    - strcmp
    - Assert
    - progress_report
    - psprintf
    - pfree
    - readdir
    - create_archive_verifier
    - verify_tar_file
    - should_ignore_relpath
    - astreamer_finalize
    - simple_ptr_list_destroy
    - closedir
    - report_backup_error
    linkageType: ''
    returnType: void
    signature: "void verify_tar_backup(verifier_context *context, DIR *dir, char **base_archive_path,\n\t\t\t\t
      \ char **wal_archive_path)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:912,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:915,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:917,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:924,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:926,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:941,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:946,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:954,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:962,1
    - Dst: parse_tar_compress_algorithm
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:971,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:973,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:985,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:989,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:995,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:996,1
    - Dst: simple_ptr_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1000,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 6
    argNames:
    - context
    - relpath
    - fullpath
    - tarfiles
    - base_archive_path
    - wal_archive_path
    argTypes:
    - verifier_context*
    - char*
    - char*
    - SimplePtrList*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 898
    functionDepth: 1
    functionLinenumber: 898
    functionLinenumberEnd: 1005
    functionName: precheck_tar_backup_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - strtoul
    - pg_malloc_object
    - S_ISREG
    - Assert
    - simple_ptr_list_append
    - pstrdup
    - stat
    - strncmp
    - report_backup_error
    - parse_tar_compress_algorithm
    linkageType: ''
    returnType: void
    signature: "void precheck_tar_backup_file(verifier_context *context, char *relpath,\n\t\t\t\t\t\t
      char *fullpath, SimplePtrList *tarfiles,\n\t\t\t\t\t\t char **base_archive_path,
      char **wal_archive_path)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1022,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1025,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1027,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1032,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1035,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1037,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1041,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1044,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1047,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1051,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1052,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - context
    - relpath
    - fullpath
    - streamer
    argTypes:
    - verifier_context*
    - char*
    - char*
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1054
    functionName: verify_tar_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - astreamer_content
    - pg_log_debug
    - pg_free
    - progress_report
    - close
    - open
    - report_backup_error
    - pg_malloc
    - read
    linkageType: ''
    returnType: void
    signature: "void verify_tar_file(verifier_context *context, char *relpath, char
      *fullpath,\n\t\t\t\tastreamer *streamer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: manifest_files_start_iterate
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1067,1
    - Dst: manifest_files_iterate
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1068,1
    - Dst: should_ignore_relpath
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1069,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1070,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - context
    argTypes:
    - verifier_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1060
    functionDepth: 1
    functionLinenumber: 1060
    functionLinenumberEnd: 1073
    functionName: report_extra_backup_files
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - should_ignore_relpath
    - manifest_files_start_iterate
    - report_backup_error
    - manifest_files_iterate
    linkageType: ''
    returnType: void
    signature: void report_extra_backup_files(verifier_context *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1088,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1090,1
    - Dst: manifest_files_start_iterate
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1092,1
    - Dst: manifest_files_iterate
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1093,1
    - Dst: should_verify_checksum
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1095,1
    - Dst: should_ignore_relpath
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1096,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1101,1
    - Dst: verify_file_checksum
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1105,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1108,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1112,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - context
    argTypes:
    - verifier_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1080
    functionDepth: 1
    functionLinenumber: 1080
    functionLinenumberEnd: 1115
    functionName: verify_backup_checksums
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - manifest_files_start_iterate
    - verify_file_checksum
    - should_verify_checksum
    - pfree
    - progress_report
    - psprintf
    - pg_malloc_array
    - manifest_files_iterate
    - should_ignore_relpath
    - pg_free
    linkageType: ''
    returnType: void
    signature: void verify_backup_checksums(verifier_context *context)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1133,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1135,1
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1141,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1143,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1145,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1150,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1153,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1155,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1157,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1163,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1166,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1170,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1172,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1190,1
    - Dst: pg_checksum_final
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1197,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1200,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1208,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1211,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1212,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 4
    argNames:
    - context
    - m
    - fullpath
    - buffer
    argTypes:
    - verifier_context*
    - manifest_file*
    - char*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1120
    functionDepth: 1
    functionLinenumber: 1120
    functionLinenumberEnd: 1215
    functionName: verify_file_checksum
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - pg_checksum_final
    - pg_checksum_init
    - progress_report
    - pg_checksum_update
    - close
    - open
    - report_backup_error
    - memcmp
    - read
    linkageType: ''
    returnType: void
    signature: "void verify_file_checksum(verifier_context *context, manifest_file
      *m,\n\t\t\t\t\t char *fullpath, uint8 *buffer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1232,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1234,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1235,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1236,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1237,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - context
    - pg_waldump_path
    - wal_path
    argTypes:
    - verifier_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1221
    functionDepth: 1
    functionLinenumber: 1221
    functionLinenumberEnd: 1244
    functionName: parse_required_wal
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - psprintf
    - fflush
    - report_backup_error
    - system
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: "void parse_required_wal(verifier_context *context, char *pg_waldump_path,\n\t\t\t\t
      \  char *wal_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1257,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1258,1
    - Dst: gettext
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1258,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1259,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - context
    - pg_restrict
    argTypes:
    - verifier_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1264
    functionName: report_backup_error
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 8
    functionsReached:
    - va_end
    - va_start
    - gettext
    - pg_log_generic_v
    - exit
    linkageType: ''
    returnType: void
    signature: void report_backup_error(verifier_context *context, const char *pg_restrict
      fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1274,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1275,1
    - Dst: gettext
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1275,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1276,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pg_restrict
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1269
    functionDepth: 1
    functionLinenumber: 1269
    functionLinenumberEnd: 1279
    functionName: report_fatal_error
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 4
    functionsReached:
    - va_end
    - va_start
    - gettext
    - pg_log_generic_v
    - exit
    linkageType: ''
    returnType: void
    signature: void report_fatal_error(const char *pg_restrict fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - context
    - relpath
    argTypes:
    - verifier_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1288
    functionDepth: 0
    functionLinenumber: 1288
    functionLinenumberEnd: 1306
    functionName: should_ignore_relpath
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool should_ignore_relpath(verifier_context *context, const char *relpath)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1319,1
    - Dst: astreamer_verify_content_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1322,1
    - Dst: astreamer_tar_parser_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1326,1
    - Dst: astreamer_gzip_decompressor_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1330,1
    - Dst: astreamer_lz4_decompressor_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1332,1
    - Dst: astreamer_zstd_decompressor_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - context
    - archive_name
    - tblspc_oid
    - compress_algo
    argTypes:
    - verifier_context*
    - char*
    - Oid
    - pg_compress_algorithm
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1312
    functionDepth: 1
    functionLinenumber: 1312
    functionLinenumberEnd: 1337
    functionName: create_archive_verifier
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - astreamer_tar_parser_new
    - Assert
    - astreamer_lz4_decompressor_new
    - astreamer_gzip_decompressor_new
    - astreamer_zstd_decompressor_new
    - astreamer_verify_content_new
    linkageType: ''
    returnType: astreamer
    signature: "astreamer *\ncreate_archive_verifier(verifier_context *context, char
      *archive_name,\n\t\t\t\t\t\tOid tblspc_oid, pg_compress_algorithm compress_algo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1360,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1367,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1369,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1372,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1373,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1374,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1381,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1381,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1381,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - finished
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1348
    functionDepth: 0
    functionLinenumber: 1348
    functionLinenumberEnd: 1382
    functionName: progress_report
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 5
    functionsReached:
    - _
    - fputc
    - isatty
    - snprintf
    - strlen
    - time
    - fileno
    - fprintf
    linkageType: ''
    returnType: void
    signature: void progress_report(bool finished)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1390,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1390,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1391,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1391,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1392,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1392,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1393,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1393,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1394,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1394,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1395,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1395,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1396,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1396,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1397,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1397,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1398,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1398,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1399,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1399,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1400,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1400,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1401,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1401,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1402,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1402,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1403,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1403,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1404,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1404,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1405,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1405,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1406,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1387
    functionDepth: 0
    functionLinenumber: 1387
    functionLinenumberEnd: 1407
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 2
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:72,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - next
    - context
    - archive_name
    - tblspc_oid
    argTypes:
    - astreamer*
    - verifier_context*
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 85
    functionName: astreamer_verify_content_new
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - pg_malloc_object
    linkageType: ''
    returnType: astreamer
    signature: "astreamer *\nastreamer_verify_content_new(astreamer *next, verifier_context
      *context,\n\t\t\t\t\t\t\t char *archive_name, Oid tblspc_oid)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:97,1
    - Dst: member_verify_header
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:103,1
    - Dst: member_compute_checksum
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:109,1
    - Dst: member_copy_control_data
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:111,1
    - Dst: member_verify_checksum
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:117,1
    - Dst: member_verify_control_data
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:119,1
    - Dst: member_reset_info
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:122,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:130,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 132
    functionName: astreamer_verify_content
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 0
    functionsReached:
    - member_verify_checksum
    - Assert
    - member_verify_control_data
    - pg_fatal
    - member_copy_control_data
    - member_verify_header
    - member_reset_info
    - member_compute_checksum
    linkageType: ''
    returnType: void
    signature: "void astreamer_verify_content(astreamer *streamer, astreamer_member
      *member,\n\t\t\t\t\t\t const char *data, int len,\n\t\t\t\t\t\t astreamer_archive_context
      context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 141
    functionName: astreamer_verify_finalize
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void astreamer_verify_finalize(astreamer *streamer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:152,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 155
    functionName: astreamer_verify_free
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_verify_free(astreamer *streamer)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:182,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:183,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:186,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:187,1
    - Dst: should_ignore_relpath
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:190,1
    - Dst: manifest_files_lookup
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:194,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:197,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:210,1
    - Dst: should_verify_checksum
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:226,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:229,1
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:233,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:235,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 2
    argNames:
    - streamer
    - member
    argTypes:
    - astreamer*
    - astreamer_member*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 245
    functionName: member_verify_header
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 1
    functionsReached:
    - pg_checksum_init
    - manifest_files_lookup
    - should_verify_checksum
    - strcmp
    - canonicalize_path
    - should_ignore_relpath
    - OidIsValid
    - report_backup_error
    - snprintf
    linkageType: ''
    returnType: void
    signature: void member_verify_header(astreamer *streamer, astreamer_member *member)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:261,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:262,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:271,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - streamer
    - member
    - data
    - len
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 278
    functionName: member_compute_checksum
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 1
    functionsReached:
    - Assert
    - report_backup_error
    - pg_checksum_update
    linkageType: ''
    returnType: void
    signature: "void member_compute_checksum(astreamer *streamer, astreamer_member
      *member,\n\t\t\t\t\t\tconst char *data, int len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:292,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:299,1
    - Dst: pg_checksum_final
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:308,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:311,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:319,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:323,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:324,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 327
    functionName: member_verify_checksum
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 1
    functionsReached:
    - Assert
    - report_backup_error
    - memcmp
    - pg_checksum_final
    linkageType: ''
    returnType: void
    signature: void member_verify_checksum(astreamer *streamer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:340,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:353,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - streamer
    - member
    - data
    - len
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 360
    functionName: member_copy_control_data
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 1
    functionsReached:
    - Assert
    - Min
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void member_copy_control_data(astreamer *streamer, astreamer_member
      *member,\n\t\t\t\t\t\t const char *data, int len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:374,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:374,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:375,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:387,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:392,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:393,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:395,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:398,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:399,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:405,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:412,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 417
    functionName: member_verify_control_data
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 1
    functionsReached:
    - strcmp
    - Assert
    - FIN_CRC32C
    - EQ_CRC32C
    - COMP_CRC32C
    - INIT_CRC32C
    - report_fatal_error
    linkageType: ''
    returnType: void
    signature: void member_verify_control_data(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 432
    functionName: member_reset_info
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void member_reset_info(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: pg_TZDIR
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_TZDIR(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:70,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:72,1
    - Dst: pg_TZDIR
      Src: /src/postgres/src/bin/initdb/findtimezone.c:72,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:73,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:73,1
    - Dst: strcat
      Src: /src/postgres/src/bin/initdb/findtimezone.c:75,1
    - Dst: strcat
      Src: /src/postgres/src/bin/initdb/findtimezone.c:76,1
    - Dst: open
      Src: /src/postgres/src/bin/initdb/findtimezone.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - name
    - canonname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 79
    functionName: pg_open_tzfile
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - strcat
    - strlcpy
    - strlen
    - open
    - pg_TZDIR
    linkageType: ''
    returnType: int
    signature: int pg_open_tzfile(const char *name, char *canonname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:95,1
    - Dst: pg_tzload
      Src: /src/postgres/src/bin/initdb/findtimezone.c:101,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 107
    functionName: pg_load_tz
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - strcpy
    - strlen
    - pg_tzload
    linkageType: ''
    returnType: pg_tz
    signature: 'pg_tz *

      pg_load_tz(const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 171
    functionName: get_timezone_offset
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_timezone_offset(struct tm *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:181,1
    - Dst: mktime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - year
    - month
    - day
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 188
    functionName: build_time_t
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - mktime
    - memset
    linkageType: ''
    returnType: time_t
    signature: time_t build_time_t(int year, int month, int day)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 4
    argCount: 2
    argNames:
    - s
    - p
    argTypes:
    - struct tm*
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 207
    functionName: compare_tm
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool compare_tm(struct tm *s, struct pg_tm *p)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_load_tz
      Src: /src/postgres/src/bin/initdb/findtimezone.c:231,1
    - Dst: pg_tz_acceptable
      Src: /src/postgres/src/bin/initdb/findtimezone.c:236,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:239,1
    - Dst: pg_localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:248,1
    - Dst: localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:251,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:255,1
    - Dst: compare_tm
      Src: /src/postgres/src/bin/initdb/findtimezone.c:263,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:266,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:282,1
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:283,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:284,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:287,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:297,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - tzname
    - tt
    argTypes:
    - char*
    - struct tztry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 301
    functionName: score_timezone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - pg_load_tz
    - strcmp
    - localtime
    - strftime
    - memset
    - compare_tm
    - pg_tz_acceptable
    - pg_localtime
    - fprintf
    linkageType: ''
    returnType: int
    signature: int score_timezone(const char *tzname, struct tztry *tt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: score_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tzname
    - tt
    argTypes:
    - char*
    - struct tztry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 306
    functionDepth: 3
    functionLinenumber: 306
    functionLinenumberEnd: 310
    functionName: perfect_timezone_match
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - score_timezone
    linkageType: ''
    returnType: bool
    signature: bool perfect_timezone_match(const char *tzname, struct tztry *tt)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: tzset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:334,1
    - Dst: time
      Src: /src/postgres/src/bin/initdb/findtimezone.c:355,1
    - Dst: localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:356,1
    - Dst: build_time_t
      Src: /src/postgres/src/bin/initdb/findtimezone.c:361,1
    - Dst: build_time_t
      Src: /src/postgres/src/bin/initdb/findtimezone.c:374,1
    - Dst: check_system_link_file
      Src: /src/postgres/src/bin/initdb/findtimezone.c:393,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:397,1
    - Dst: pg_TZDIR
      Src: /src/postgres/src/bin/initdb/findtimezone.c:397,1
    - Dst: scan_available_timezones
      Src: /src/postgres/src/bin/initdb/findtimezone.c:400,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:400,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:406,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:419,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:420,1
    - Dst: time
      Src: /src/postgres/src/bin/initdb/findtimezone.c:423,1
    - Dst: localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:438,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:446,1
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:447,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:448,1
    - Dst: get_timezone_offset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:449,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:454,1
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:455,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:456,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:467,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:475,1
    - Dst: score_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:477,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:482,1
    - Dst: score_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:483,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:487,1
    - Dst: score_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:489,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:498,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:502,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 317
    functionDepth: 3
    functionLinenumber: 317
    functionLinenumberEnd: 506
    functionName: identify_system_timezone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - tzset
    - fprintf
    - strcmp
    - build_time_t
    - localtime
    - strftime
    - time
    - strlen
    - scan_available_timezones
    - memset
    - snprintf
    - score_timezone
    - check_system_link_file
    - get_timezone_offset
    - strcpy
    - pg_TZDIR
    linkageType: ''
    returnType: char
    signature: 'char *

      identify_system_timezone(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: readlink
      Src: /src/postgres/src/bin/initdb/findtimezone.c:543,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:549,1
    - Dst: strchr
      Src: /src/postgres/src/bin/initdb/findtimezone.c:564,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:579,1
    - Dst: perfect_timezone_match
      Src: /src/postgres/src/bin/initdb/findtimezone.c:580,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:583,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 3
    argNames:
    - linkname
    - tt
    - bestzonename
    argTypes:
    - char*
    - struct tztry*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 530
    functionDepth: 4
    functionLinenumber: 530
    functionLinenumberEnd: 594
    functionName: check_system_link_file
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 1
    functionsReached:
    - perfect_timezone_match
    - strchr
    - readlink
    - strlen
    - strcpy
    - fprintf
    linkageType: ''
    returnType: bool
    signature: "bool check_system_link_file(const char *linkname, struct tztry *tt,\n\t\t\t\t\t
      \  char *bestzonename)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:608,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:610,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:617,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:618,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - zonename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 622
    functionName: zone_name_pref
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int zone_name_pref(const char *zonename)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:647,1
    - Dst: pgfnames
      Src: /src/postgres/src/bin/initdb/findtimezone.c:651,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:664,1
    - Dst: stat
      Src: /src/postgres/src/bin/initdb/findtimezone.c:667,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:670,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/initdb/findtimezone.c:677,1
    - Dst: scan_available_timezones
      Src: /src/postgres/src/bin/initdb/findtimezone.c:680,1
    - Dst: score_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:686,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:691,1
    - Dst: zone_name_pref
      Src: /src/postgres/src/bin/initdb/findtimezone.c:696,1
    - Dst: zone_name_pref
      Src: /src/postgres/src/bin/initdb/findtimezone.c:697,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:701,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:701,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:702,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:702,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:703,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:704,1
    - Dst: pgfnames_cleanup
      Src: /src/postgres/src/bin/initdb/findtimezone.c:712,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 5
    argNames:
    - tzdir
    - tzdirsub
    - tt
    - bestscore
    - bestzonename
    argTypes:
    - char*
    - char*
    - struct tztry*
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 643
    functionDepth: 3
    functionLinenumber: 643
    functionLinenumberEnd: 713
    functionName: scan_available_timezones
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 2
    functionsReached:
    - strlcpy
    - pgfnames_cleanup
    - strcmp
    - stat
    - zone_name_pref
    - snprintf
    - strlen
    - scan_available_timezones
    - pgfnames
    - score_timezone
    - S_ISDIR
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void scan_available_timezones(char *tzdir, char *tzdirsub, struct
      tztry *tt,\n\t\t\t\t\t\t int *bestscore, char *bestzonename)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1557,1
    - Dst: localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1558,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1565,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1570,1
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1571,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1575,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1576,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1579,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1591,1
    - Dst: RegOpenKeyEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1592,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1599,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1600,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1614,1
    - Dst: RegEnumKeyEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1616,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1628,1
    - Dst: RegOpenKeyEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1634,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1637,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1643,1
    - Dst: RegQueryValueEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1645,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1648,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1651,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1654,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1657,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1658,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1661,1
    - Dst: RegQueryValueEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1663,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1666,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1669,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1672,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1675,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1676,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1680,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1683,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1690,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1691,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1694,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1703,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1707
      start: 1551
    functionDepth: 0
    functionLinenumber: 1551
    functionLinenumberEnd: 1707
    functionName: identify_system_timezone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - strcmp
    - RegQueryValueEx
    - RegOpenKeyEx
    - GetLastError
    - strftime
    - localtime
    - time
    - memset
    - RegEnumKeyEx
    - RegCloseKey
    - strcpy
    - fprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      identify_system_timezone(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_load_tz
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1722,1
    - Dst: pg_tz_acceptable
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1726,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - tzname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1714
    functionDepth: 2
    functionLinenumber: 1714
    functionLinenumberEnd: 1730
    functionName: validate_zone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - pg_load_tz
    - pg_tz_acceptable
    linkageType: ''
    returnType: bool
    signature: bool validate_zone(const char *tzname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1750,1
    - Dst: getenv
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1754,1
    - Dst: validate_zone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1755,1
    - Dst: identify_system_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1759,1
    - Dst: validate_zone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - share_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1743
    functionDepth: 4
    functionLinenumber: 1743
    functionLinenumberEnd: 1764
    functionName: select_default_timezone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - getenv
    - validate_zone
    - identify_system_timezone
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      select_default_timezone(const char *share_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - line
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 340
    functionName: PG_CMD_PUTS
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_CMD_PUTS(line)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 346
    functionName: PG_CMD_PRINTF
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_CMD_PRINTF(fmt, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _wsetlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:371,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:373,1
    - Dst: wcsdup
      Src: /src/postgres/src/bin/initdb/initdb.c:374,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:376,1
    - Dst: setlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:378,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:380,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - category
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 384
    functionName: save_global_locale
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - setlocale
    - wcsdup
    - pg_fatal
    - _wsetlocale
    - pg_strdup
    linkageType: ''
    returnType: save_locale_t
    signature: save_locale_t save_global_locale(int category)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _wsetlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:393,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:394,1
    - Dst: setlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:396,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:397,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:399,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - category
    - save
    argTypes:
    - int
    - save_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 400
    functionName: restore_global_locale
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - setlocale
    - _wsetlocale
    - free
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void restore_global_locale(int category, save_locale_t save)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: escape_single_quotes_ascii
      Src: /src/postgres/src/bin/initdb/initdb.c:409,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 414
    functionName: escape_quotes
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - escape_single_quotes_ascii
    - pg_fatal
    linkageType: ''
    returnType: char
    signature: 'char *

      escape_quotes(const char *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:426,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:430,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:430,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 440
    functionName: escape_quotes_bki
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - free
    - escape_quotes
    - pg_malloc
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      escape_quotes_bki(const char *src)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/initdb/initdb.c:448,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - listhead
    - str
    argTypes:
    - _stringlist**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 461
    functionName: add_stringlist_item
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void add_stringlist_item(_stringlist **listhead, const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:481,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:482,1
    - Dst: strstr
      Src: /src/postgres/src/bin/initdb/initdb.c:493,1
    - Dst: isspace
      Src: /src/postgres/src/bin/initdb/initdb.c:501,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:503,1
    - Dst: isspace
      Src: /src/postgres/src/bin/initdb/initdb.c:504,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:509,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:509,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:513,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:515,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:517,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:519,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 524
    functionName: replace_token
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - memcpy
    - isspace
    - strstr
    - strlen
    - free
    - pg_malloc
    - strcpy
    linkageType: ''
    returnType: char
    signature: 'char **

      replace_token(char **lines, const char *token, const char *replacement)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:545,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:546,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:551,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:552,1
    - Dst: guc_value_requires_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:553,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:554,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:554,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:556,1
    - Dst: isspace
      Src: /src/postgres/src/bin/initdb/initdb.c:570,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/initdb/initdb.c:572,1
    - Dst: isspace
      Src: /src/postgres/src/bin/initdb/initdb.c:576,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:582,1
    - Dst: strrchr
      Src: /src/postgres/src/bin/initdb/initdb.c:585,1
    - Dst: Max
      Src: /src/postgres/src/bin/initdb/initdb.c:606,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:613,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:618,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:623,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:627,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:629,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:641,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/initdb/initdb.c:642,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:647,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 650
    functionName: replace_guc_value
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - memcpy
    - escape_quotes
    - isspace
    - guc_value_requires_quotes
    - appendPQExpBufferStr
    - pg_strncasecmp
    - strrchr
    - strlen
    - Max
    - free
    - appendPQExpBufferChar
    - pg_realloc_array
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: char
    signature: "char **\nreplace_guc_value(char **lines, const char *guc_name, const
      char *guc_value,\n\t\t\t\t  bool mark_as_comment)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/initdb/initdb.c:666,1
    - Dst: strspn
      Src: /src/postgres/src/bin/initdb/initdb.c:668,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:668,1
    - Dst: strchr
      Src: /src/postgres/src/bin/initdb/initdb.c:672,1
    - Dst: strspn
      Src: /src/postgres/src/bin/initdb/initdb.c:675,1
    - Dst: strspn
      Src: /src/postgres/src/bin/initdb/initdb.c:677,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:677,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - guc_value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 682
    functionName: guc_value_requires_quotes
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 1
    functionsReached:
    - strspn
    - strlen
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool guc_value_requires_quotes(const char *guc_value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/bin/initdb/initdb.c:698,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:699,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/initdb/initdb.c:701,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/initdb/initdb.c:704,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/bin/initdb/initdb.c:707,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/initdb/initdb.c:713,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:716,1
    - Dst: pfree
      Src: /src/postgres/src/bin/initdb/initdb.c:720,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:722,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 725
    functionName: readfile
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_get_line_buf
    - pfree
    - fopen
    - initStringInfo
    - pg_malloc_array
    - pg_fatal
    - fclose
    - pg_realloc_array
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char **

      readfile(const char *path)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/bin/initdb/initdb.c:742,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:743,1
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:746,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:747,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:748,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:750,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:751,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:752,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - path
    - lines
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 753
    functionName: writefile
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - fopen
    - fputs
    - fclose
    - pg_fatal
    - free
    linkageType: ''
    returnType: void
    signature: void writefile(char *path, char **lines)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:763,1
    - Dst: popen
      Src: /src/postgres/src/bin/initdb/initdb.c:765,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:767,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - command
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 769
    functionName: popen_check
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - fflush
    - popen
    linkageType: ''
    returnType: FILE
    signature: 'FILE *

      popen_check(const char *command, const char *mode)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:785,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/initdb/initdb.c:786,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:787,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:791,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/initdb/initdb.c:793,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:794,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:799,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/initdb/initdb.c:800,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:801,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:805,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/initdb/initdb.c:806,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:807,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:814,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:818,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 821
    functionName: cleanup_directories_atexit
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_log_info
    - rmtree
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void cleanup_directories_atexit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/postgres/src/bin/initdb/initdb.c:834,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:836,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:837,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:838,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/initdb/initdb.c:842,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:844,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 845
    functionName: get_id
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - geteuid
    - get_user_name_or_exit
    - pg_log_error
    - exit
    - pg_log_error_hint
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      get_id(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:852,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - enc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 854
    functionName: encodingid_to_string
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - sprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      encodingid_to_string(int enc)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_valid_server_encoding
      Src: /src/postgres/src/bin/initdb/initdb.c:866,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:869,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - encoding_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 859
    functionDepth: 1
    functionLinenumber: 859
    functionLinenumberEnd: 871
    functionName: get_encoding_id
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_valid_server_encoding
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int get_encoding_id(const char *encoding_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:972,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:975,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/initdb/initdb.c:984,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/initdb/initdb.c:986,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/initdb/initdb.c:991,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - lc_type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 993
    functionName: find_matching_ts_config
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_free
    - pg_strcasecmp
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      find_matching_ts_config(const char *lc_type)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - filename
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1003
    functionName: set_input
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - psprintf
    linkageType: ''
    returnType: void
    signature: void set_input(char **dest, const char *filename)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/bin/initdb/initdb.c:1013,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:1017,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:1018,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:1022,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:1023,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:1025,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/initdb/initdb.c:1027,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:1029,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:1030,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:1031,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1033
    functionName: check_input
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - S_ISREG
    - stat
    - pg_log_error
    - exit
    - pg_log_error_hint
    linkageType: ''
    returnType: void
    signature: void check_input(char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1046,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1048,1
    - Dst: fopen
      Src: /src/postgres/src/bin/initdb/initdb.c:1050,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1051,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1052,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:1053,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1054,1
    - Dst: pfree
      Src: /src/postgres/src/bin/initdb/initdb.c:1055,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - extrapath
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1039
    functionDepth: 1
    functionLinenumber: 1039
    functionLinenumberEnd: 1056
    functionName: write_version_file
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pfree
    - psprintf
    - fopen
    - fclose
    - pg_fatal
    - fprintf
    linkageType: ''
    returnType: void
    signature: void write_version_file(const char *extrapath)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1068,1
    - Dst: fopen
      Src: /src/postgres/src/bin/initdb/initdb.c:1069,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1071,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:1072,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1073,1
    - Dst: pfree
      Src: /src/postgres/src/bin/initdb/initdb.c:1074,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1062
    functionDepth: 1
    functionLinenumber: 1062
    functionLinenumberEnd: 1075
    functionName: set_null_conf
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pfree
    - psprintf
    - fopen
    - fclose
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void set_null_conf(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_seed
      Src: /src/postgres/src/bin/initdb/initdb.c:1099,1
    - Dst: getpid
      Src: /src/postgres/src/bin/initdb/initdb.c:1099,1
    - Dst: time
      Src: /src/postgres/src/bin/initdb/initdb.c:1099,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/bin/initdb/initdb.c:1107,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1108,1
    - Dst: shm_open
      Src: /src/postgres/src/bin/initdb/initdb.c:1109,1
    - Dst: close
      Src: /src/postgres/src/bin/initdb/initdb.c:1111,1
    - Dst: shm_unlink
      Src: /src/postgres/src/bin/initdb/initdb.c:1112,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1091
    functionDepth: 1
    functionLinenumber: 1091
    functionLinenumberEnd: 1126
    functionName: choose_dsm_implementation
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - getpid
    - pg_prng_uint32
    - time
    - close
    - shm_unlink
    - shm_open
    - pg_prng_seed
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      choose_dsm_implementation(void)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1173,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1173,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1174,1
    - Dst: choose_dsm_implementation
      Src: /src/postgres/src/bin/initdb/initdb.c:1175,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1176,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1183,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1183,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1184,1
    - Dst: AV_SLOTS_FOR_CONNS
      Src: /src/postgres/src/bin/initdb/initdb.c:1189,1
    - Dst: MIN_BUFS_FOR_CONNS
      Src: /src/postgres/src/bin/initdb/initdb.c:1190,1
    - Dst: test_specific_config_settings
      Src: /src/postgres/src/bin/initdb/initdb.c:1192,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1202,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1204,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1204,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1205,1
    - Dst: test_specific_config_settings
      Src: /src/postgres/src/bin/initdb/initdb.c:1217,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1223,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1225,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1227,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1227,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1228,1
    - Dst: select_default_timezone
      Src: /src/postgres/src/bin/initdb/initdb.c:1229,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1230,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1133
    functionDepth: 5
    functionLinenumber: 1133
    functionLinenumberEnd: 1231
    functionName: test_config_settings
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - MIN_BUFS_FOR_CONNS
    - test_specific_config_settings
    - _
    - AV_SLOTS_FOR_CONNS
    - select_default_timezone
    - choose_dsm_implementation
    - printf
    - fflush
    linkageType: ''
    returnType: void
    signature: void test_config_settings(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nconns
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1140
    functionDepth: 0
    functionLinenumber: 1140
    functionLinenumberEnd: 1141
    functionName: MIN_BUFS_FOR_CONNS
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MIN_BUFS_FOR_CONNS(nconns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nconns
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1151
    functionDepth: 0
    functionLinenumber: 1151
    functionLinenumberEnd: 1152
    functionName: AV_SLOTS_FOR_CONNS
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AV_SLOTS_FOR_CONNS(nconns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1244,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1247,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1262,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/initdb/initdb.c:1263,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1266,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1270,1
    - Dst: system
      Src: /src/postgres/src/bin/initdb/initdb.c:1271,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - test_conns
    - test_av_slots
    - test_buffs
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1236
    functionDepth: 1
    functionLinenumber: 1236
    functionLinenumberEnd: 1276
    functionName: test_specific_config_settings
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 1
    functionsReached:
    - appendShellString
    - printfPQExpBuffer
    - initPQExpBuffer
    - fflush
    - termPQExpBuffer
    - system
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool test_specific_config_settings(int test_conns, int test_av_slots,
      int test_buffs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:1285,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1288,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - segment_count
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1281
    functionDepth: 1
    functionLinenumber: 1281
    functionLinenumberEnd: 1293
    functionName: pretty_wal_size
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      pretty_wal_size(int segment_count)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:1307,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1307,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1308,1
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1312,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1314,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1315,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1318,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1319,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1323,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1326,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1328,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1331,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1334,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1337,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1340,1
    - Dst: locale_date_order
      Src: /src/postgres/src/bin/initdb/initdb.c:1343,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:1346,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:1349,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:1353,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1356,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1359,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1361,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1366,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1368,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1372,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1376,1
    - Dst: pretty_wal_size
      Src: /src/postgres/src/bin/initdb/initdb.c:1377,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1379,1
    - Dst: pretty_wal_size
      Src: /src/postgres/src/bin/initdb/initdb.c:1380,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1386,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1389,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1393,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1395,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1400,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1402,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1407,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1409,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1414,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1422,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1423,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1424,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1425,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1427,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1439,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1444,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1455,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1460,1
    - Dst: writefile
      Src: /src/postgres/src/bin/initdb/initdb.c:1462,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:1463,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1464,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/initdb/initdb.c:1469,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:1470,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:1471,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1474,1
    - Dst: writefile
      Src: /src/postgres/src/bin/initdb/initdb.c:1476,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:1477,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1478,1
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1483,1
    - Dst: WSAStartup
      Src: /src/postgres/src/bin/initdb/initdb.c:1501,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/bin/initdb/initdb.c:1501,1
    - Dst: getaddrinfo
      Src: /src/postgres/src/bin/initdb/initdb.c:1515,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1517,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1520,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1527,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1530,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1534,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1536,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1536,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1538,1
    - Dst: writefile
      Src: /src/postgres/src/bin/initdb/initdb.c:1540,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:1541,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1542,1
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1547,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1549,1
    - Dst: writefile
      Src: /src/postgres/src/bin/initdb/initdb.c:1551,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:1552,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1553,1
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1556,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1557,1
    - Dst: writefile
      Src: /src/postgres/src/bin/initdb/initdb.c:1559,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:1560,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1561,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:1563,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 102
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1298
    functionDepth: 2
    functionLinenumber: 1298
    functionLinenumberEnd: 1564
    functionName: setup_config
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - WSAStartup
    - MAKEWORD
    - _
    - pretty_wal_size
    - chmod
    - fputs
    - replace_token
    - fflush
    - replace_guc_value
    - getaddrinfo
    - check_ok
    - readfile
    - pg_malloc_array
    - pg_strdup
    - locale_date_order
    - pg_fatal
    - writefile
    - sprintf
    - strcpy
    - snprintf
    linkageType: ''
    returnType: void
    signature: void setup_config(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1580,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1580,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1581,1
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1583,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1587,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1590,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:1592,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:1594,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:1595,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1600,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1601,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1603,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1604,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1606,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1609,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1610,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1612,1
    - Dst: encodingid_to_string
      Src: /src/postgres/src/bin/initdb/initdb.c:1613,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1615,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1616,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1618,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1619,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1621,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1622,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1624,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1625,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1627,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1628,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/initdb/initdb.c:1631,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1633,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1635,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1636,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:1638,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:1640,1
    - Dst: PG_CMD_OPEN
      Src: /src/postgres/src/bin/initdb/initdb.c:1643,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1647,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1648,1
    - Dst: PG_CMD_CLOSE
      Src: /src/postgres/src/bin/initdb/initdb.c:1651,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1653,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1654,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:1656,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1570
    functionDepth: 2
    functionLinenumber: 1570
    functionLinenumberEnd: 1657
    functionName: bootstrap_template1
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - printf
    - pg_log_error
    - appendPQExpBufferStr
    - _
    - printfPQExpBuffer
    - PG_CMD_CLOSE
    - replace_token
    - fflush
    - check_ok
    - readfile
    - unsetenv
    - termPQExpBuffer
    - exit
    - pg_log_error_hint
    - encodingid_to_string
    - PG_CMD_PUTS
    - PG_CMD_OPEN
    - escape_quotes_bki
    - initPQExpBuffer
    - free
    - sprintf
    - appendPQExpBuffer
    - snprintf
    linkageType: ''
    returnType: void
    signature: void bootstrap_template1(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1669,1
    - Dst: PG_CMD_PRINTF
      Src: /src/postgres/src/bin/initdb/initdb.c:1672,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:1673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1674
      start: 1662
    functionDepth: 1
    functionLinenumber: 1662
    functionLinenumberEnd: 1674
    functionName: setup_auth
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    - escape_quotes
    - PG_CMD_PRINTF
    linkageType: ''
    returnType: void
    signature: void setup_auth(FILE *cmdfd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1691,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1692,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/initdb/initdb.c:1693,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/initdb/initdb.c:1694,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1695,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1697,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1697,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:1698,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1700,1
    - Dst: fopen
      Src: /src/postgres/src/bin/initdb/initdb.c:1712,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1715,1
    - Dst: pg_get_line
      Src: /src/postgres/src/bin/initdb/initdb.c:1717,1
    - Dst: ferror
      Src: /src/postgres/src/bin/initdb/initdb.c:1720,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1721,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1724,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:1727,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/initdb/initdb.c:1729,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1733
      start: 1679
    functionDepth: 1
    functionLinenumber: 1679
    functionLinenumberEnd: 1733
    functionName: get_su_pwd
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - ferror
    - strcmp
    - _
    - pg_get_line
    - fopen
    - simple_prompt
    - pg_strip_crlf
    - pg_fatal
    - fclose
    - free
    - printf
    - fflush
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void get_su_pwd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1738
    functionDepth: 1
    functionLinenumber: 1738
    functionLinenumberEnd: 1746
    functionName: setup_depend
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    linkageType: ''
    returnType: void
    signature: void setup_depend(FILE *cmdfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1756,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1760,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1761,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1764,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1766,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - cmdfd
    - filename
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1751
    functionDepth: 1
    functionLinenumber: 1751
    functionLinenumberEnd: 1767
    functionName: setup_run_file
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - readfile
    - PG_CMD_PUTS
    - free
    linkageType: ''
    returnType: void
    signature: void setup_run_file(FILE *cmdfd, const char *filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1788
      start: 1772
    functionDepth: 1
    functionLinenumber: 1772
    functionLinenumberEnd: 1788
    functionName: setup_description
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    linkageType: ''
    returnType: void
    signature: void setup_description(FILE *cmdfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1801,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1793
    functionDepth: 1
    functionLinenumber: 1793
    functionLinenumberEnd: 1805
    functionName: setup_collation
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    linkageType: ''
    returnType: void
    signature: void setup_collation(FILE *cmdfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PRINTF
      Src: /src/postgres/src/bin/initdb/initdb.c:1829,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1837,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1838,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:1840,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1841,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1847,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1848,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1849,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1862,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1863,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1864,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1878,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1879,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1880,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1892,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1904,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1916,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1929,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1941,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1967
      start: 1826
    functionDepth: 1
    functionLinenumber: 1826
    functionLinenumberEnd: 1967
    functionName: setup_privileges
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    - escape_quotes
    - PG_CMD_PRINTF
    - CppAsString2
    linkageType: ''
    returnType: void
    signature: void setup_privileges(FILE *cmdfd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:1981,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:1984,1
    - Dst: strtol
      Src: /src/postgres/src/bin/initdb/initdb.c:1988,1
    - Dst: strtol
      Src: /src/postgres/src/bin/initdb/initdb.c:1990,1
    - Dst: strtol
      Src: /src/postgres/src/bin/initdb/initdb.c:1992,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1993,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1973
    functionDepth: 1
    functionLinenumber: 1973
    functionLinenumberEnd: 1995
    functionName: set_info_version
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - snprintf
    - strtol
    - strlen
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void set_info_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_run_file
      Src: /src/postgres/src/bin/initdb/initdb.c:2003,1
    - Dst: PG_CMD_PRINTF
      Src: /src/postgres/src/bin/initdb/initdb.c:2005,1
    - Dst: PG_CMD_PRINTF
      Src: /src/postgres/src/bin/initdb/initdb.c:2010,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:2014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 2000
    functionDepth: 2
    functionLinenumber: 2000
    functionLinenumberEnd: 2015
    functionName: setup_schema
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - setup_run_file
    - PG_CMD_PRINTF
    - escape_quotes
    linkageType: ''
    returnType: void
    signature: void setup_schema(FILE *cmdfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2020
    functionDepth: 1
    functionLinenumber: 2020
    functionLinenumberEnd: 2024
    functionName: load_plpgsql
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    linkageType: ''
    returnType: void
    signature: void load_plpgsql(FILE *cmdfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2029
    functionDepth: 1
    functionLinenumber: 2029
    functionLinenumberEnd: 2034
    functionName: vacuum_db
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    linkageType: ''
    returnType: void
    signature: void vacuum_db(FILE *cmdfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2059,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2068,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2073,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2079,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2080,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2082,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 2039
    functionDepth: 1
    functionLinenumber: 2039
    functionLinenumberEnd: 2088
    functionName: make_template0
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    linkageType: ''
    returnType: void
    signature: void make_template0(FILE *cmdfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2100,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:2100,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2103
      start: 2093
    functionDepth: 1
    functionLinenumber: 2093
    functionLinenumberEnd: 2103
    functionName: make_postgres
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    - CppAsString2
    linkageType: ''
    returnType: void
    signature: void make_postgres(FILE *cmdfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2132
      start: 2126
    functionDepth: 0
    functionLinenumber: 2126
    functionLinenumberEnd: 2132
    functionName: trapsig
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pqsignal
    linkageType: ''
    returnType: void
    signature: void trapsig(SIGNAL_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2142,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2142,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2143,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2144,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2148,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2148,1
    - Dst: strerror
      Src: /src/postgres/src/bin/initdb/initdb.c:2149,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2150,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2151,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2156,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2156,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 2137
    functionDepth: 0
    functionLinenumber: 2137
    functionLinenumberEnd: 2159
    functionName: check_ok
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 2
    functionsReached:
    - strerror
    - _
    - printf
    - fflush
    - exit
    linkageType: ''
    returnType: void
    signature: void check_ok(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/initdb.c:2165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - s
    - max
    - fmt
    - tm
    argTypes:
    - char*
    - size_t
    - char*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2162
    functionDepth: 0
    functionLinenumber: 2162
    functionLinenumberEnd: 2166
    functionName: my_strftime
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - strftime
    linkageType: ''
    returnType: size_t
    signature: size_t my_strftime(char *s, size_t max, const char *fmt, const struct
      tm *tm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: save_global_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2185,1
    - Dst: setlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:2187,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/initdb.c:2189,1
    - Dst: my_strftime
      Src: /src/postgres/src/bin/initdb/initdb.c:2194,1
    - Dst: restore_global_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2196,1
    - Dst: strstr
      Src: /src/postgres/src/bin/initdb/initdb.c:2201,1
    - Dst: strstr
      Src: /src/postgres/src/bin/initdb/initdb.c:2202,1
    - Dst: strstr
      Src: /src/postgres/src/bin/initdb/initdb.c:2203,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - locale
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2171
    functionDepth: 2
    functionLinenumber: 2171
    functionLinenumberEnd: 2216
    functionName: locale_date_order
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 1
    functionsReached:
    - save_global_locale
    - setlocale
    - strstr
    - memset
    - my_strftime
    - restore_global_locale
    linkageType: ''
    returnType: int
    signature: int locale_date_order(const char *locale)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_is_ascii
      Src: /src/postgres/src/bin/initdb/initdb.c:2237,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2238,1
    - Dst: save_global_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2243,1
    - Dst: setlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:2250,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:2254,1
    - Dst: restore_global_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2257,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2264,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2265,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2266,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2278,1
    - Dst: pg_is_ascii
      Src: /src/postgres/src/bin/initdb/initdb.c:2283,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2284,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - category
    - locale
    - canonname
    argTypes:
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2286
      start: 2230
    functionDepth: 2
    functionLinenumber: 2230
    functionLinenumberEnd: 2286
    functionName: check_locale_name
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - save_global_locale
    - pg_log_error
    - setlocale
    - pg_is_ascii
    - pg_fatal
    - restore_global_locale
    - exit
    - pg_log_error_hint
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void check_locale_name(int category, const char *locale, char **canonname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_get_encoding_from_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2298,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2309,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/initdb/initdb.c:2310,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2313,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2314,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2315,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - locale
    - user_enc
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2321
      start: 2293
    functionDepth: 1
    functionLinenumber: 2293
    functionLinenumberEnd: 2321
    functionName: check_locale_encoding
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_log_error_detail
    - pg_get_encoding_from_locale
    - pg_encoding_to_char
    - pg_log_error
    - pg_log_error_hint
    linkageType: ''
    returnType: bool
    signature: bool check_locale_encoding(const char *locale, int user_enc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_encoding_supported_by_icu
      Src: /src/postgres/src/bin/initdb/initdb.c:2331,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2333,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/initdb/initdb.c:2334,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2335,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - user_enc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2342
      start: 2328
    functionDepth: 1
    functionLinenumber: 2328
    functionLinenumberEnd: 2342
    functionName: check_icu_locale_encoding
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - is_encoding_supported_by_icu
    - pg_log_error_detail
    - pg_encoding_to_char
    - pg_log_error
    - pg_log_error_hint
    linkageType: ''
    returnType: bool
    signature: bool check_icu_locale_encoding(int user_enc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:2363,1
    - Dst: uloc_toLanguageTag
      Src: /src/postgres/src/bin/initdb/initdb.c:2367,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/initdb/initdb.c:2374,1
    - Dst: U_FAILURE
      Src: /src/postgres/src/bin/initdb/initdb.c:2381,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/initdb/initdb.c:2383,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2385,1
    - Dst: u_errorName
      Src: /src/postgres/src/bin/initdb/initdb.c:2386,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2391,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - loc_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2394
      start: 2348
    functionDepth: 1
    functionLinenumber: 2348
    functionLinenumberEnd: 2394
    functionName: icu_language_tag
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - uloc_toLanguageTag
    - U_FAILURE
    - pg_realloc
    - pg_free
    - pg_malloc
    - u_errorName
    linkageType: ''
    returnType: char
    signature: 'char *

      icu_language_tag(const char *loc_str)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: uloc_getLanguage
      Src: /src/postgres/src/bin/initdb/initdb.c:2411,1
    - Dst: U_FAILURE
      Src: /src/postgres/src/bin/initdb/initdb.c:2412,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2414,1
    - Dst: u_errorName
      Src: /src/postgres/src/bin/initdb/initdb.c:2415,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2420,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2421,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2421,1
    - Dst: uloc_countAvailable
      Src: /src/postgres/src/bin/initdb/initdb.c:2425,1
    - Dst: uloc_getAvailable
      Src: /src/postgres/src/bin/initdb/initdb.c:2427,1
    - Dst: uloc_getLanguage
      Src: /src/postgres/src/bin/initdb/initdb.c:2431,1
    - Dst: U_FAILURE
      Src: /src/postgres/src/bin/initdb/initdb.c:2432,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2435,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2440,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2443,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 1
    argNames:
    - loc_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2401
    functionDepth: 0
    functionLinenumber: 2401
    functionLinenumberEnd: 2445
    functionName: icu_validate_locale
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - uloc_getAvailable
    - uloc_countAvailable
    - strcmp
    - pg_fatal
    - U_FAILURE
    - uloc_getLanguage
    - u_errorName
    linkageType: ''
    returnType: void
    signature: void icu_validate_locale(const char *loc_str)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2481,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2483,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2485,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2487,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2489,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2492,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2496,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2501,1
    - Dst: collprovider_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2502,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2506,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2508,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2509,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2511,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2514,1
    - Dst: icu_language_tag
      Src: /src/postgres/src/bin/initdb/initdb.c:2524,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2525,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2525,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/initdb/initdb.c:2527,1
    - Dst: icu_validate_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2530,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2537,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2540
      start: 2452
    functionDepth: 3
    functionLinenumber: 2452
    functionLinenumberEnd: 2540
    functionName: setlocales
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - _
    - pg_free
    - icu_language_tag
    - pg_fatal
    - check_locale_name
    - printf
    - collprovider_name
    - icu_validate_locale
    linkageType: ''
    returnType: void
    signature: void setlocales(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2548,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2548,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2549,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2549,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2550,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2550,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2551,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2551,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2552,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2552,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2553,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2553,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2554,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2554,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2555,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2555,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2556,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2556,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2557,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2557,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2558,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2558,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2559,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2559,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2560,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2560,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2561,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2561,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2562,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2562,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2566,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2566,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2567,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2567,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2569,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2569,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2571,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2571,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2572,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2572,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2573,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2573,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2575,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2575,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2576,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2576,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2577,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2577,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2578,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2578,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2579,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2579,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2580,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2580,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2581,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2581,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2582,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2582,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2583,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2583,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2584,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2584,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2585,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2585,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2586,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2586,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2587,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2587,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2588,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2588,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2589,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2589,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2590,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2590,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2591,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2591,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2592,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2592,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2593,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2593,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2594,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2594,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2596,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2596,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2597,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2598
      start: 2545
    functionDepth: 0
    functionLinenumber: 2545
    functionLinenumberEnd: 2598
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 2
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(const char *progname)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - authmethod
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2608
      start: 2600
    functionDepth: 0
    functionLinenumber: 2600
    functionLinenumberEnd: 2608
    functionName: check_authmethod_unspecified
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void check_authmethod_unspecified(const char **authmethod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2617,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - authmethod
    - valid_methods
    - conntype
    argTypes:
    - char*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2623
      start: 2610
    functionDepth: 0
    functionLinenumber: 2610
    functionLinenumberEnd: 2623
    functionName: check_authmethod_valid
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void check_authmethod_valid(const char *authmethod, const char *const
      *valid_methods, const char *conntype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2628,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2629,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2630,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2631,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2632,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2633,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2635,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 3
    argCount: 2
    argNames:
    - authmethodlocal
    - authmethodhost
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2625
    functionDepth: 0
    functionLinenumber: 2625
    functionLinenumberEnd: 2636
    functionName: check_need_password
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void check_need_password(const char *authmethodlocal, const char *authmethodhost)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/bin/initdb/initdb.c:2646,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:2647,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:2650,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2654,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2655,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2658,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:2662,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2663,1
    - Dst: setenv
      Src: /src/postgres/src/bin/initdb/initdb.c:2671,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2672,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2673
      start: 2639
    functionDepth: 1
    functionLinenumber: 2639
    functionLinenumberEnd: 2673
    functionName: setup_pgdata
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - setenv
    - canonicalize_path
    - pg_fatal
    - getenv
    - strlen
    - pg_log_error
    - exit
    - pg_log_error_hint
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void setup_pgdata(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/initdb/initdb.c:2681,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/initdb/initdb.c:2686,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:2687,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2690,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2693,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:2698,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/bin/initdb/initdb.c:2699,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2700,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:2704,1
    - Dst: get_share_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2705,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2707,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2708,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2710,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2676
    functionDepth: 1
    functionLinenumber: 2676
    functionLinenumberEnd: 2711
    functionName: setup_bin_paths
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - find_my_exec
    - strlcpy
    - is_absolute_path
    - get_share_path
    - canonicalize_path
    - pg_fatal
    - pg_malloc
    - last_dir_separator
    - find_other_exec
    - strcpy
    linkageType: ''
    returnType: void
    signature: void setup_bin_paths(const char *argv0)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: setlocales
      Src: /src/postgres/src/bin/initdb/initdb.c:2716,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2719,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2720,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2721,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2722,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2723,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2724,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2725,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2725,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2728,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2728,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2729,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2729,1
    - Dst: collprovider_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2729,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2731,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2731,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2732,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2732,1
    - Dst: pg_get_encoding_from_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2750,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2762,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2764,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2765,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2766,1
    - Dst: pg_valid_server_encoding_id
      Src: /src/postgres/src/bin/initdb/initdb.c:2768,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2777,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2777,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2779,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2780,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2782,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2783,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/initdb/initdb.c:2784,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2785,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2786,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2788,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2794,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2794,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2795,1
    - Dst: get_encoding_id
      Src: /src/postgres/src/bin/initdb/initdb.c:2799,1
    - Dst: check_locale_encoding
      Src: /src/postgres/src/bin/initdb/initdb.c:2801,1
    - Dst: check_locale_encoding
      Src: /src/postgres/src/bin/initdb/initdb.c:2802,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2803,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2807,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2808,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2810,1
    - Dst: check_icu_locale_encoding
      Src: /src/postgres/src/bin/initdb/initdb.c:2815,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2816,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2817
      start: 2713
    functionDepth: 4
    functionLinenumber: 2713
    functionLinenumberEnd: 2817
    functionName: setup_locale_encoding
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - check_locale_encoding
    - setlocales
    - _
    - strcmp
    - pg_log_error_detail
    - pg_get_encoding_from_locale
    - pg_fatal
    - pg_encoding_to_char
    - get_encoding_id
    - check_icu_locale_encoding
    - printf
    - collprovider_name
    - pg_log_error
    - exit
    - pg_log_error_hint
    - pg_valid_server_encoding_id
    linkageType: ''
    returnType: void
    signature: void setup_locale_encoding(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2823,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2824,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2825,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2826,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2827,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2828,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2829,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2830,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2831,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2832,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2833,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:2837,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2849,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2852,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2853,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2854,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2855,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2856,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2857,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2858,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2859,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2860,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2861,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2862,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2863
      start: 2820
    functionDepth: 2
    functionLinenumber: 2820
    functionLinenumberEnd: 2863
    functionName: setup_data_file_paths
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - check_input
    - exit
    - set_input
    - fprintf
    linkageType: ''
    returnType: void
    signature: void setup_data_file_paths(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find_matching_ts_config
      Src: /src/postgres/src/bin/initdb/initdb.c:2871,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:2874,1
    - Dst: find_matching_ts_config
      Src: /src/postgres/src/bin/initdb/initdb.c:2881,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/initdb/initdb.c:2885,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2888,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/initdb/initdb.c:2890,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2895,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2895,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2897
      start: 2866
    functionDepth: 2
    functionLinenumber: 2866
    functionLinenumberEnd: 2897
    functionName: setup_text_search
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - _
    - find_matching_ts_config
    - pg_log_warning
    - printf
    - pg_log_info
    linkageType: ''
    returnType: void
    signature: void setup_text_search(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2903,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2904,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2908,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2909,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2912,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2917
      start: 2900
    functionDepth: 0
    functionLinenumber: 2900
    functionLinenumberEnd: 2917
    functionName: setup_signals
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pqsignal
    linkageType: ''
    returnType: void
    signature: void setup_signals(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/initdb/initdb.c:2925,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2929,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2929,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2931,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/initdb/initdb.c:2933,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2934,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:2936,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2943,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2943,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2945,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:2947,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2948,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:2951,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2960,1
    - Dst: warn_on_mount_point
      Src: /src/postgres/src/bin/initdb/initdb.c:2962,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2964,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2968,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2972,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2974
      start: 2920
    functionDepth: 1
    functionLinenumber: 2920
    functionLinenumberEnd: 2974
    functionName: create_data_directory
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - check_ok
    - _
    - chmod
    - pg_check_dir
    - pg_fatal
    - pg_mkdir_p
    - fflush
    - printf
    - warn_on_mount_point
    - pg_log_error
    - exit
    - pg_log_error_hint
    linkageType: ''
    returnType: void
    signature: void create_data_directory(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:2984,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2991,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2992,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2993,1
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/initdb/initdb.c:2996,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3000,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3000,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3002,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/initdb/initdb.c:3004,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3005,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3008,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3015,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3015,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3017,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:3019,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3020,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3023,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:3032,1
    - Dst: warn_on_mount_point
      Src: /src/postgres/src/bin/initdb/initdb.c:3034,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3036,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3038,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3042,1
    - Dst: symlink
      Src: /src/postgres/src/bin/initdb/initdb.c:3045,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3046,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/initdb/initdb.c:3052,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3053,1
    - Dst: pfree
      Src: /src/postgres/src/bin/initdb/initdb.c:3057,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3058
      start: 2978
    functionDepth: 1
    functionLinenumber: 2978
    functionLinenumberEnd: 3058
    functionName: create_xlog_or_symlink
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - check_ok
    - is_absolute_path
    - _
    - pfree
    - psprintf
    - chmod
    - mkdir
    - canonicalize_path
    - pg_check_dir
    - pg_fatal
    - pg_mkdir_p
    - printf
    - fflush
    - warn_on_mount_point
    - pg_log_error
    - exit
    - symlink
    - pg_log_error_hint
    linkageType: ''
    returnType: void
    signature: void create_xlog_or_symlink(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/initdb/initdb.c:3065,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/initdb/initdb.c:3067,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3069,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - error
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3061
    functionDepth: 1
    functionLinenumber: 3061
    functionLinenumberEnd: 3071
    functionName: warn_on_mount_point
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 2
    functionsReached:
    - pg_log_error_detail
    - pg_log_error_hint
    linkageType: ''
    returnType: void
    signature: void warn_on_mount_point(int error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setup_signals
      Src: /src/postgres/src/bin/initdb/initdb.c:3081,1
    - Dst: umask
      Src: /src/postgres/src/bin/initdb/initdb.c:3089,1
    - Dst: create_data_directory
      Src: /src/postgres/src/bin/initdb/initdb.c:3091,1
    - Dst: create_xlog_or_symlink
      Src: /src/postgres/src/bin/initdb/initdb.c:3093,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3096,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3096,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3097,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/initdb/initdb.c:3099,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:3103,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/initdb/initdb.c:3109,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3110,1
    - Dst: pfree
      Src: /src/postgres/src/bin/initdb/initdb.c:3112,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3115,1
    - Dst: write_version_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3118,1
    - Dst: set_null_conf
      Src: /src/postgres/src/bin/initdb/initdb.c:3121,1
    - Dst: test_config_settings
      Src: /src/postgres/src/bin/initdb/initdb.c:3122,1
    - Dst: setup_config
      Src: /src/postgres/src/bin/initdb/initdb.c:3125,1
    - Dst: bootstrap_template1
      Src: /src/postgres/src/bin/initdb/initdb.c:3128,1
    - Dst: write_version_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3133,1
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:3139,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3139,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3140,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3142,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3143,1
    - Dst: PG_CMD_OPEN
      Src: /src/postgres/src/bin/initdb/initdb.c:3146,1
    - Dst: setup_auth
      Src: /src/postgres/src/bin/initdb/initdb.c:3148,1
    - Dst: setup_run_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3150,1
    - Dst: setup_run_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3152,1
    - Dst: setup_depend
      Src: /src/postgres/src/bin/initdb/initdb.c:3154,1
    - Dst: setup_run_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3161,1
    - Dst: setup_description
      Src: /src/postgres/src/bin/initdb/initdb.c:3163,1
    - Dst: setup_collation
      Src: /src/postgres/src/bin/initdb/initdb.c:3165,1
    - Dst: setup_run_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3167,1
    - Dst: setup_privileges
      Src: /src/postgres/src/bin/initdb/initdb.c:3169,1
    - Dst: setup_schema
      Src: /src/postgres/src/bin/initdb/initdb.c:3171,1
    - Dst: load_plpgsql
      Src: /src/postgres/src/bin/initdb/initdb.c:3173,1
    - Dst: vacuum_db
      Src: /src/postgres/src/bin/initdb/initdb.c:3175,1
    - Dst: make_template0
      Src: /src/postgres/src/bin/initdb/initdb.c:3177,1
    - Dst: make_postgres
      Src: /src/postgres/src/bin/initdb/initdb.c:3179,1
    - Dst: PG_CMD_CLOSE
      Src: /src/postgres/src/bin/initdb/initdb.c:3181,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3182,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3185
      start: 3074
    functionDepth: 6
    functionLinenumber: 3074
    functionLinenumberEnd: 3185
    functionName: initialize_data_directory
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - setup_description
    - set_null_conf
    - printf
    - make_postgres
    - _
    - setup_signals
    - pfree
    - printfPQExpBuffer
    - PG_CMD_CLOSE
    - setup_auth
    - fputs
    - setup_schema
    - fflush
    - lengthof
    - check_ok
    - psprintf
    - mkdir
    - write_version_file
    - vacuum_db
    - create_data_directory
    - termPQExpBuffer
    - setup_collation
    - bootstrap_template1
    - make_template0
    - load_plpgsql
    - setup_run_file
    - create_xlog_or_symlink
    - setup_config
    - pg_fatal
    - PG_CMD_OPEN
    - test_config_settings
    - initPQExpBuffer
    - setup_privileges
    - setup_depend
    - umask
    linkageType: ''
    returnType: void
    signature: void initialize_data_directory(void)
  - BBCount: 66
    BranchProfiles: []
    Callsites:
    - Dst: setvbuf
      Src: /src/postgres/src/bin/initdb/initdb.c:3251,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/initdb/initdb.c:3253,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/initdb/initdb.c:3254,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/initdb/initdb.c:3255,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/initdb/initdb.c:3255,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3259,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3259,1
    - Dst: usage
      Src: /src/postgres/src/bin/initdb/initdb.c:3261,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3262,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3264,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3264,1
    - Dst: puts
      Src: /src/postgres/src/bin/initdb/initdb.c:3266,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3267,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/initdb/initdb.c:3273,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3279,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3286,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3288,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3292,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3295,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3299,1
    - Dst: strchr
      Src: /src/postgres/src/bin/initdb/initdb.c:3300,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:3304,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3305,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3307,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/bin/initdb/initdb.c:3310,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/bin/initdb/initdb.c:3311,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/initdb/initdb.c:3312,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3316,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3319,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3325,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3329,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3329,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3333,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3333,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3345,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3348,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3351,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3354,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3357,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3360,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3363,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3366,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3372,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3378,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3381,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/initdb/initdb.c:3384,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3385,1
    - Dst: SetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/initdb/initdb.c:3391,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:3394,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3399,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3401,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3403,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3406,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3409,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3413,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3417,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/initdb/initdb.c:3420,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3421,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3431,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3432,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3443,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:3449,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3451,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3452,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3456,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3460,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3464,1
    - Dst: atexit
      Src: /src/postgres/src/bin/initdb/initdb.c:3467,1
    - Dst: setup_pgdata
      Src: /src/postgres/src/bin/initdb/initdb.c:3472,1
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/initdb/initdb.c:3475,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3476,1
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:3478,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3478,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3479,1
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/initdb/initdb.c:3480,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3481,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3486,1
    - Dst: check_authmethod_unspecified
      Src: /src/postgres/src/bin/initdb/initdb.c:3488,1
    - Dst: check_authmethod_unspecified
      Src: /src/postgres/src/bin/initdb/initdb.c:3489,1
    - Dst: check_authmethod_valid
      Src: /src/postgres/src/bin/initdb/initdb.c:3491,1
    - Dst: check_authmethod_valid
      Src: /src/postgres/src/bin/initdb/initdb.c:3492,1
    - Dst: check_need_password
      Src: /src/postgres/src/bin/initdb/initdb.c:3494,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/initdb/initdb.c:3496,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3497,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/initdb/initdb.c:3499,1
    - Dst: setup_pgdata
      Src: /src/postgres/src/bin/initdb/initdb.c:3501,1
    - Dst: setup_bin_paths
      Src: /src/postgres/src/bin/initdb/initdb.c:3503,1
    - Dst: get_id
      Src: /src/postgres/src/bin/initdb/initdb.c:3505,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3509,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3510,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3512,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3512,1
    - Dst: set_info_version
      Src: /src/postgres/src/bin/initdb/initdb.c:3517,1
    - Dst: setup_data_file_paths
      Src: /src/postgres/src/bin/initdb/initdb.c:3519,1
    - Dst: setup_locale_encoding
      Src: /src/postgres/src/bin/initdb/initdb.c:3521,1
    - Dst: setup_text_search
      Src: /src/postgres/src/bin/initdb/initdb.c:3523,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3525,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3528,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3528,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3530,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3530,1
    - Dst: get_su_pwd
      Src: /src/postgres/src/bin/initdb/initdb.c:3533,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3535,1
    - Dst: initialize_data_directory
      Src: /src/postgres/src/bin/initdb/initdb.c:3537,1
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:3541,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3541,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3542,1
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/initdb/initdb.c:3543,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3544,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3547,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3547,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3551,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/initdb/initdb.c:3552,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3553,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3562,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:3565,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:3566,1
    - Dst: get_parent_directory
      Src: /src/postgres/src/bin/initdb/initdb.c:3567,1
    - Dst: join_path_components
      Src: /src/postgres/src/bin/initdb/initdb.c:3569,1
    - Dst: make_native_path
      Src: /src/postgres/src/bin/initdb/initdb.c:3572,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/initdb/initdb.c:3575,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:3578,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/initdb/initdb.c:3579,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3583,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3583,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3585,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3585,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3589,1
    CyclomaticComplexity: 74
    EdgeCount: 74
    ICount: 242
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3595
      start: 3188
    functionDepth: 7
    functionLinenumber: 3188
    functionLinenumberEnd: 3595
    functionName: main
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - join_path_components
    - strcmp
    - strchr
    - get_id
    - pg_check_dir
    - pg_log_warning
    - printf
    - atexit
    - puts
    - pg_log_error
    - setup_text_search
    - initialize_data_directory
    - appendPQExpBufferStr
    - set_pglocale_pgservice
    - createPQExpBuffer
    - setup_locale_encoding
    - destroyPQExpBuffer
    - strlcpy
    - check_authmethod_unspecified
    - _
    - setup_bin_paths
    - fputs
    - pg_log_warning_hint
    - check_need_password
    - check_authmethod_valid
    - fflush
    - usage
    - check_ok
    - get_su_pwd
    - option_parse_int
    - psprintf
    - getopt_long
    - canonicalize_path
    - get_restricted_token
    - SetDataDirectoryCreatePerm
    - setup_data_file_paths
    - add_stringlist_item
    - sync_pgdata
    - pg_free
    - exit
    - pg_log_error_hint
    - pg_strdup
    - parse_sync_method
    - appendShellString
    - pg_logging_init
    - pg_fatal
    - make_native_path
    - strncmp
    - get_parent_directory
    - setvbuf
    - IsValidWalSegSize
    - set_info_version
    - setup_pgdata
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:167,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:168,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:169,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:169,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:170,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:172,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:178,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:185,1
    - Dst: add_tablespace_mapping
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:200,1
    - Dst: pg_checksum_parse_type
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:203,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:205,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:212,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:213,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:226,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:227,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:233,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:234,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:235,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:239,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:247,1
    - Dst: pg_log_info_detail
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:248,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:258,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:260,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:263,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:271,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:273,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:276,1
    - Dst: get_pg_version
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:282,1
    - Dst: GET_PG_MAJORVERSION_NUM
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:283,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:284,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:285,1
    - Dst: GET_PG_MAJORVERSION_NUM
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:286,1
    - Dst: check_control_files
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:290,1
    - Dst: check_backup_label_files
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:293,1
    - Dst: load_backup_manifests
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:303,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:316,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:318,1
    - Dst: check_input_dir_permissions
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:327,1
    - Dst: scan_for_existing_tablespaces
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:328,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:341,1
    - Dst: create_output_directory
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:342,1
    - Dst: create_output_directory
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:345,1
    - Dst: create_manifest_writer
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:350,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:357,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:364,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:367,1
    - Dst: write_backup_label
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:369,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:374,1
    - Dst: process_directory_recursively
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:375,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:382,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:393,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:397,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:401,1
    - Dst: symlink
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:403,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:404,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:411,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:414,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:415,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:416,1
    - Dst: process_directory_recursively
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:422,1
    - Dst: finalize_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:429,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:436,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:439,1
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:440,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:446,1
    - Dst: reset_directory_cleanup_list
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:450,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:451,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 152
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 452
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - check_backup_label_files
    - get_progname
    - create_manifest_writer
    - check_input_dir_permissions
    - pg_log_warning
    - GET_PG_MAJORVERSION_NUM
    - atexit
    - pg_log_error
    - symlink
    - set_pglocale_pgservice
    - add_tablespace_mapping
    - get_pg_version
    - pg_log_info_detail
    - load_backup_manifests
    - scan_for_existing_tablespaces
    - write_backup_label
    - create_output_directory
    - process_directory_recursively
    - psprintf
    - pg_checksum_parse_type
    - getopt_long
    - check_control_files
    - pg_mkdir_p
    - snprintf
    - memset
    - sync_pgdata
    - pg_log_info
    - exit
    - pg_log_error_hint
    - reset_directory_cleanup_list
    - parse_sync_method
    - pg_logging_init
    - finalize_manifest
    - pg_fatal
    - pg_logging_increase_verbosity
    - handle_help_version_opts
    - pg_log_debug
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:460,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:476,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:483,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:491,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:501,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:502,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:505,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:506,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:510,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:511,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - opt
    - arg
    argTypes:
    - cb_options*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 516
    functionName: add_tablespace_mapping
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - pg_malloc0_object
    - canonicalize_path
    - is_absolute_path
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void add_tablespace_mapping(cb_options *opt, char *arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: makeStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:525,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:542,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:543,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:544,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:545,1
    - Dst: slurp_file
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:556,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:559,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:560,1
    - Dst: parse_backup_label
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:563,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:575,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:578,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:581,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:584,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:586,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:587,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:596,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:598,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:603,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 2
    argNames:
    - n_backups
    - backup_dirs
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 610
    functionName: check_backup_label_files
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - parse_backup_label
    - slurp_file
    - resetStringInfo
    - pg_fatal
    - snprintf
    - close
    - open
    - destroyStringInfo
    - makeStringInfo
    - LSN_FORMAT_ARGS
    - pg_log_debug
    linkageType: ''
    returnType: StringInfo
    signature: StringInfo check_backup_label_files(int n_backups, char **backup_dirs)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:630,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:631,1
    - Dst: get_controlfile_by_exact_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:632,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:636,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:640,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:647,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:662,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:663,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:670,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:678,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:679,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - n_backups
    - backup_dirs
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 683
    functionName: check_control_files
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - pfree
    - psprintf
    - get_controlfile_by_exact_path
    - pg_fatal
    - pg_log_warning_hint
    - pg_log_warning
    - pg_log_debug
    linkageType: ''
    returnType: uint64
    signature: uint64 check_control_files(int n_backups, char **backup_dirs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:696,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:697,1
    - Dst: SetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:699,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 700
    functionName: check_input_dir_permissions
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - SetDataDirectoryCreatePerm
    - stat
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void check_input_dir_permissions(char *dir)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:714,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:715,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:716,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:720,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:722,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:723,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:727,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 729
    functionName: cleanup_directories_atexit
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 0
    functionsReached:
    - pfree
    - pg_log_info
    - rmtree
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void cleanup_directories_atexit(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:741,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:746,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:749,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:750,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:751,1
    - Dst: remember_to_cleanup_directory
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:752,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:756,1
    - Dst: remember_to_cleanup_directory
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:757,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:763,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:766,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - dirname
    - opt
    argTypes:
    - char*
    - cb_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 768
    functionName: create_output_directory
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - pg_check_dir
    - pg_mkdir_p
    - remember_to_cleanup_directory
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void create_output_directory(char *dirname, cb_options *opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:780,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:780,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:781,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:781,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:782,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:782,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:783,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:783,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:784,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:784,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:785,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:785,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:786,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:786,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:787,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:787,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:788,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:788,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:789,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:789,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:791,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:791,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:792,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:792,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:793,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:793,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:794,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:794,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:796,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:796,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:797,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:797,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:798,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:798,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:799,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:799,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:801,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:801,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:802,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 777
    functionDepth: 0
    functionLinenumber: 777
    functionLinenumberEnd: 803
    functionName: help
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 0
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:817,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - s
    - result
    argTypes:
    - char*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 810
    functionDepth: 0
    functionLinenumber: 810
    functionLinenumberEnd: 823
    functionName: parse_oid
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 0
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: bool
    signature: bool parse_oid(char *s, Oid *result)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:888,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:892,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:893,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:894,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:895,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:896,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:897,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:917,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:918,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:919,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:920,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:926,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:928,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:930,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:931,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:934,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:944,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:947,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:948,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:949,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:954,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:955,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:956,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:968,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:969,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:973,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:976,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:978,1
    - Dst: parse_oid
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:988,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:999,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1001,1
    - Dst: process_directory_recursively
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1005,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1017,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1019,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1028,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1029,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1037,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1041,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1046,1
    - Dst: reconstruct_from_incremental_file
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1050,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1067,1
    - Dst: manifest_files_lookup
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1083,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1093,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1095,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1097,1
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1112,1
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1114,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1117,1
    - Dst: copy_file
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1118,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1128,1
    - Dst: pg_checksum_final
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1129,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1152,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1153,1
    - Dst: add_file_to_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1156,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1164,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1167,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 95
    argCount: 9
    argNames:
    - tsoid
    - input_directory
    - output_directory
    - relative_path
    - n_prior_backups
    - prior_backup_dirs
    - manifests
    - mwriter
    - opt
    argTypes:
    - Oid
    - char*
    - char*
    - char*
    - int
    - char**
    - manifest_data**
    - manifest_writer*
    - cb_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 1168
    functionName: process_directory_recursively
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 2
    functionsReached:
    - pg_checksum_final
    - strcmp
    - pg_log_warning
    - strlcpy
    - pg_checksum_init
    - pfree
    - get_dirent_type
    - parse_oid
    - process_directory_recursively
    - OidIsValid
    - psprintf
    - mkdir
    - readdir
    - snprintf
    - closedir
    - pg_free
    - exit
    - pg_malloc
    - copy_file
    - manifest_files_lookup
    - reconstruct_from_incremental_file
    - stat
    - pg_fatal
    - strncmp
    - add_file_to_manifest
    - opendir
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: "void process_directory_recursively(Oid tsoid,\n\t\t\t\t\t\t\t  char
      *input_directory,\n\t\t\t\t\t\t\t  char *output_directory,\n\t\t\t\t\t\t\t  char
      *relative_path,\n\t\t\t\t\t\t\t  int n_prior_backups,\n\t\t\t\t\t\t\t  char
      **prior_backup_dirs,\n\t\t\t\t\t\t\t  manifest_data **manifests,\n\t\t\t\t\t\t\t
      \ manifest_writer *mwriter,\n\t\t\t\t\t\t\t  cb_options *opt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - target_path
    - rmtopdir
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1182
    functionName: remember_to_cleanup_directory
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - pg_malloc_object
    linkageType: ''
    returnType: void
    signature: void remember_to_cleanup_directory(char *target_path, bool rmtopdir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1194
    functionDepth: 0
    functionLinenumber: 1194
    functionLinenumberEnd: 1204
    functionName: reset_directory_cleanup_list
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void reset_directory_cleanup_list(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1221,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1222,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1224,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1225,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1227,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1238,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1238,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1242,1
    - Dst: parse_oid
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1245,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1247,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1253,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1255,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1258,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1264,1
    - Dst: readlink
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1276,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1278,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1281,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1283,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1284,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1287,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1295,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1297,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1298,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1306,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1315,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1316,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1323,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1324,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1332,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1333,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 56
    argCount: 2
    argNames:
    - pathname
    - opt
    argTypes:
    - char*
    - cb_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1213
    functionDepth: 1
    functionLinenumber: 1213
    functionLinenumberEnd: 1336
    functionName: scan_for_existing_tablespaces
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - strcmp
    - is_absolute_path
    - readdir
    - readlink
    - pg_fatal
    - canonicalize_path
    - get_dirent_type
    - snprintf
    - closedir
    - parse_oid
    - pg_malloc0_object
    - exit
    - opendir
    - pg_log_debug
    linkageType: ''
    returnType: cb_tablespace
    signature: 'cb_tablespace *

      scan_for_existing_tablespaces(char *pathname, cb_options *opt)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1351,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1352,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1354,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1357,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1360,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1369,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1371,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - fd
    - filename
    - buf
    - maxlen
    argTypes:
    - int
    - char*
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1344
    functionDepth: 1
    functionLinenumber: 1344
    functionLinenumberEnd: 1378
    functionName: slurp_file
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - read
    - fstat
    - enlargeStringInfo
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void slurp_file(int fd, char *filename, StringInfo buf, int maxlen)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:68,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:69,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:70,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:71,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:115,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:118,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:124,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:127,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:130,1
    - Dst: pg_checksum_type_name
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:131,1
    - Dst: strategy_implementation
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:133,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 5
    argNames:
    - src
    - dst
    - checksum_ctx
    - copy_method
    - dry_run
    argTypes:
    - char*
    - char*
    - pg_checksum_context*
    - CopyMethod
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 135
    functionName: copy_file
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/copy_file.c
    functionUses: 1
    functionsReached:
    - pg_checksum_type_name
    - pg_fatal
    - close
    - open
    - strategy_implementation
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: "void copy_file(const char *src, const char *dst,\n\t\t  pg_checksum_context
      *checksum_ctx,\n\t\t  CopyMethod copy_method, bool dry_run)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:152,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:153,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:155,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:157,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:159,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:160,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:164,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:166,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:167,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - src
    - checksum_ctx
    argTypes:
    - char*
    - pg_checksum_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 168
    functionName: checksum_file
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/copy_file.c
    functionUses: 0
    functionsReached:
    - pg_free
    - pg_fatal
    - read
    - close
    - open
    - pg_malloc
    - pg_checksum_update
    linkageType: ''
    returnType: void
    signature: void checksum_file(const char *src, pg_checksum_context *checksum_ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:184,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:185,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:187,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:189,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:191,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:193,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:197,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:200,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:202,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:206,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:207,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:213,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:215,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:216,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - src
    - dst
    - checksum_ctx
    argTypes:
    - char*
    - char*
    - pg_checksum_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 218
    functionName: copy_file_blocks
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/copy_file.c
    functionUses: 0
    functionsReached:
    - pg_free
    - write
    - pg_fatal
    - pg_checksum_update
    - close
    - open
    - pg_malloc
    - read
    linkageType: ''
    returnType: void
    signature: "void copy_file_blocks(const char *src, const char *dst,\n\t\t\t\t
      pg_checksum_context *checksum_ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: copyfile
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:231,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:232,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:238,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:239,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:241,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:243,1
    - Dst: ioctl
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:245,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:249,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:251,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:252,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:255,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:256,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:259,1
    - Dst: checksum_file
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:263,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - src
    - dest
    - checksum_ctx
    argTypes:
    - char*
    - char*
    - pg_checksum_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 264
    functionName: copy_file_clone
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/copy_file.c
    functionUses: 0
    functionsReached:
    - checksum_file
    - copyfile
    - unlink
    - ioctl
    - pg_fatal
    - close
    - open
    - strerror
    linkageType: ''
    returnType: void
    signature: "void copy_file_clone(const char *src, const char *dest,\n\t\t\t\tpg_checksum_context
      *checksum_ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:281,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:282,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:284,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:286,1
    - Dst: copy_file_range
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:290,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:292,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:296,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:297,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:299,1
    - Dst: checksum_file
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:303,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - src
    - dest
    - checksum_ctx
    argTypes:
    - char*
    - char*
    - pg_checksum_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 304
    functionName: copy_file_by_range
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/copy_file.c
    functionUses: 0
    functionsReached:
    - checksum_file
    - pg_fatal
    - close
    - open
    - copy_file_range
    linkageType: ''
    returnType: void
    signature: "void copy_file_by_range(const char *src, const char *dest,\n\t\t\t\t
      \  pg_checksum_context *checksum_ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CopyFile
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:311,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:313,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:313,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:314,1
    - Dst: checksum_file
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - src
    - dst
    - checksum_ctx
    argTypes:
    - char*
    - char*
    - pg_checksum_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 319
    functionName: copy_file_copyfile
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/copy_file.c
    functionUses: 0
    functionsReached:
    - checksum_file
    - pg_fatal
    - GetLastError
    - _dosmaperr
    - CopyFile
    linkageType: ''
    returnType: void
    signature: "void copy_file_copyfile(const char *src, const char *dst,\n\t\t\t\t
      \  pg_checksum_context *checksum_ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: link
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:332,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:333,1
    - Dst: checksum_file
      Src: /src/postgres/src/bin/pg_combinebackup/copy_file.c:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - src
    - dest
    - checksum_ctx
    argTypes:
    - char*
    - char*
    - pg_checksum_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 328
    functionDepth: 2
    functionLinenumber: 328
    functionLinenumberEnd: 338
    functionName: copy_file_link
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/copy_file.c
    functionUses: 0
    functionsReached:
    - checksum_file
    - pg_fatal
    - link
    linkageType: ''
    returnType: void
    signature: "void copy_file_link(const char *src, const char *dest,\n\t\t\t   pg_checksum_context
      *checksum_ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/load_manifest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/load_manifest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:88,1
    - Dst: load_backup_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 93
    functionName: load_backup_manifests
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/load_manifest.c
    functionUses: 1
    functionsReached:
    - load_backup_manifest
    - pg_malloc_array
    linkageType: ''
    returnType: manifest_data
    signature: 'manifest_data **

      load_backup_manifests(int n_backups, char **backup_directories)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:120,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:121,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:125,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:128,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:132,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:133,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:137,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:137,1
    - Dst: manifest_files_create
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:140,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:142,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:156,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:157,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:161,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:163,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:168,1
    - Dst: json_parse_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:171,1
    - Dst: json_parse_manifest_incremental_init
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:178,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:180,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:195,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:199,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:201,1
    - Dst: json_parse_manifest_incremental_chunk
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:207,1
    - Dst: json_parse_manifest_incremental_shutdown
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:211,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:213,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:217,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 1
    argNames:
    - backup_directory
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 219
    functionName: load_backup_manifest
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/load_manifest.c
    functionUses: 1
    functionsReached:
    - json_parse_manifest_incremental_shutdown
    - pg_free
    - manifest_files_create
    - json_parse_manifest_incremental_init
    - pg_fatal
    - json_parse_manifest_incremental_chunk
    - pg_log_warning
    - Max
    - pg_malloc0_object
    - read
    - close
    - open
    - Min
    - json_parse_manifest
    - pg_malloc
    - fstat
    - snprintf
    linkageType: ''
    returnType: manifest_data
    signature: 'manifest_data *

      load_backup_manifest(char *backup_directory)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:232,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:233,1
    - Dst: gettext
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:233,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:234,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - context
    - fmt
    argTypes:
    - JsonManifestParseContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 237
    functionName: report_manifest_error
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/load_manifest.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - gettext
    - pg_log_generic_v
    - exit
    linkageType: ''
    returnType: void
    signature: void report_manifest_error(JsonManifestParseContext *context, const
      char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - context
    - manifest_version
    argTypes:
    - JsonManifestParseContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 249
    functionName: combinebackup_version_cb
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/load_manifest.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void combinebackup_version_cb(JsonManifestParseContext *context,\n\t\t\t\t\t\t
      int manifest_version)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - manifest_system_identifier
    argTypes:
    - JsonManifestParseContext*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 262
    functionName: combinebackup_system_identifier_cb
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/load_manifest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void combinebackup_system_identifier_cb(JsonManifestParseContext *context,\n\t\t\t\t\t\t\t\t
      \  uint64 manifest_system_identifier)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: manifest_files_insert
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:278,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - context
    - pathname
    - size
    - checksum_type
    - checksum_length
    - checksum_payload
    argTypes:
    - JsonManifestParseContext*
    - char*
    - uint64
    - pg_checksum_type
    - int
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 287
    functionName: combinebackup_per_file_cb
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/load_manifest.c
    functionUses: 0
    functionsReached:
    - manifest_files_insert
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void combinebackup_per_file_cb(JsonManifestParseContext *context,\n\t\t\t\t\t\t
      \ const char *pathname, uint64 size,\n\t\t\t\t\t\t  pg_checksum_type checksum_type,\n\t\t\t\t\t\t
      \ int checksum_length, uint8 *checksum_payload)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/bin/pg_combinebackup/load_manifest.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - context
    - tli
    - start_lsn
    - end_lsn
    argTypes:
    - JsonManifestParseContext*
    - TimeLineID
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 314
    functionName: combinebackup_per_wal_range_cb
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/load_manifest.c
    functionUses: 0
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: void
    signature: "void combinebackup_per_wal_range_cb(JsonManifestParseContext *context,\n\t\t\t\t\t\t\t
      \  TimeLineID tli,\n\t\t\t\t\t\t\t   XLogRecPtr start_lsn, XLogRecPtr end_lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:50,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:52,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:54,1
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:57,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - directory
    - system_identifier
    argTypes:
    - char*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 66
    functionName: create_manifest_writer
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/write_manifest.c
    functionUses: 1
    functionsReached:
    - pg_malloc_object
    - pg_checksum_init
    - appendStringInfo
    - initStringInfo
    - snprintf
    linkageType: ''
    returnType: manifest_writer
    signature: 'manifest_writer *

      create_manifest_writer(char *directory, uint64 system_identifier)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:82,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:86,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:90,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:92,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:94,1
    - Dst: escape_json
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:95,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:96,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:100,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:101,1
    - Dst: hex_encode
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:102,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:104,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:107,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:109,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:110,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:111,1
    - Dst: gmtime
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:113,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:114,1
    - Dst: flush_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:117,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:121,1
    - Dst: pg_checksum_type_name
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:123,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:125,1
    - Dst: hex_encode
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:126,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:129,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:132,1
    - Dst: flush_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:135,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 7
    argNames:
    - mwriter
    - manifest_path
    - size
    - mtime
    - checksum_type
    - checksum_length
    - checksum_payload
    argTypes:
    - manifest_writer*
    - char*
    - uint64
    - time_t
    - pg_checksum_type
    - int
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 136
    functionName: add_file_to_manifest
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/write_manifest.c
    functionUses: 1
    functionsReached:
    - hex_encode
    - escape_json
    - appendStringInfoString
    - appendStringInfo
    - pg_encoding_verifymbstr
    - strftime
    - strlen
    - flush_manifest
    - enlargeStringInfo
    - pg_checksum_type_name
    - gmtime
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void add_file_to_manifest(manifest_writer *mwriter, const char *manifest_path,\n\t\t\t\t\t
      uint64 size, time_t mtime,\n\t\t\t\t\t pg_checksum_type checksum_type,\n\t\t\t\t\t
      int checksum_length,\n\t\t\t\t\t uint8 *checksum_payload)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:150,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:153,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:157,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:161,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:162,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:165,1
    - Dst: flush_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:168,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:174,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:175,1
    - Dst: pg_checksum_final
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:176,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:177,1
    - Dst: hex_encode
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:179,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:180,1
    - Dst: flush_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:183,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:186,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - mwriter
    - first_wal_range
    argTypes:
    - manifest_writer*
    - manifest_wal_range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 189
    functionName: finalize_manifest
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/write_manifest.c
    functionUses: 1
    functionsReached:
    - pg_checksum_final
    - hex_encode
    - Assert
    - appendStringInfo
    - appendStringInfoString
    - pg_fatal
    - flush_manifest
    - enlargeStringInfo
    - close
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: "void finalize_manifest(manifest_writer *mwriter,\n\t\t\t\t  manifest_wal_range
      *first_wal_range)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:199,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:205,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:208,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:211,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:214,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:217,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:220,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:223,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:227,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:229,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:233,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 234
    functionName: escape_json
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/write_manifest.c
    functionUses: 1
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: void
    signature: void escape_json(StringInfo buf, const char *str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:247,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:250,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:256,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:260,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:262,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:267,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:270,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/write_manifest.c:272,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - mwriter
    argTypes:
    - manifest_writer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 274
    functionName: flush_manifest
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/write_manifest.c
    functionUses: 2
    functionsReached:
    - write
    - pg_fatal
    - open
    - resetStringInfo
    - pg_checksum_update
    linkageType: ''
    returnType: void
    signature: void flush_manifest(manifest_writer *mwriter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - src
    - len
    - dst
    argTypes:
    - uint8*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 295
    functionName: hex_encode
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/write_manifest.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t hex_encode(const uint8 *src, size_t len, char *dst)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:116,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:117,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:117,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:123,1
    - Dst: make_incremental_rfile
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:129,1
    - Dst: find_reconstructed_block_length
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:131,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:138,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:139,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:154,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:182,1
    - Dst: make_rfile
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:184,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:186,1
    - Dst: make_incremental_rfile
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:188,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:203,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:204,1
    - Dst: manifest_files_lookup
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:294,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:298,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:305,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:308,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:313,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:314,1
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:321,1
    - Dst: copy_file
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:335,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:339,1
    - Dst: write_reconstructed_file
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:344,1
    - Dst: debug_reconstruction
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:348,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:354,1
    - Dst: pg_checksum_final
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:355,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:368,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:369,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:371,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:372,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:373,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:375,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:376,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:377,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 92
    argCount: 14
    argNames:
    - input_filename
    - output_filename
    - relative_path
    - bare_file_name
    - n_prior_backups
    - prior_backup_dirs
    - manifests
    - manifest_path
    - checksum_type
    - checksum_length
    - checksum_payload
    - copy_method
    - debug
    - dry_run
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - int
    - char**
    - manifest_data**
    - char*
    - pg_checksum_type
    - int*
    - uint8**
    - CopyMethod
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 378
    functionName: reconstruct_from_incremental_file
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - pg_checksum_final
    - write_reconstructed_file
    - pg_log_warning
    - debug_reconstruction
    - pg_checksum_init
    - memcpy
    - Assert
    - pfree
    - make_rfile
    - fstat
    - make_incremental_rfile
    - psprintf
    - pg_malloc0_array
    - strlen
    - pg_free
    - pg_malloc
    - find_reconstructed_block_length
    - copy_file
    - manifest_files_lookup
    - pg_fatal
    - close
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void reconstruct_from_incremental_file(char *input_filename,\n\t\t\t\t\t\t\t\t
      \ char *output_filename,\n\t\t\t\t\t\t\t\t  char *relative_path,\n\t\t\t\t\t\t\t\t
      \ char *bare_file_name,\n\t\t\t\t\t\t\t\t  int n_prior_backups,\n\t\t\t\t\t\t\t\t
      \ char **prior_backup_dirs,\n\t\t\t\t\t\t\t\t  manifest_data **manifests,\n\t\t\t\t\t\t\t\t
      \ char *manifest_path,\n\t\t\t\t\t\t\t\t  pg_checksum_type checksum_type,\n\t\t\t\t\t\t\t\t
      \ int *checksum_length,\n\t\t\t\t\t\t\t\t  uint8 **checksum_payload,\n\t\t\t\t\t\t\t\t
      \ CopyMethod copy_method,\n\t\t\t\t\t\t\t\t  bool debug,\n\t\t\t\t\t\t\t\t  bool
      dry_run)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:402,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:405,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:421,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:422,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:424,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 3
    argNames:
    - n_source
    - sources
    - dry_run
    argTypes:
    - int
    - rfile**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 430
    functionName: debug_reconstruction
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - fstat
    - pg_fatal
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void debug_reconstruction(int n_source, rfile **sources, bool dry_run)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - rfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 449
    functionName: find_reconstructed_block_length
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned find_reconstructed_block_length(rfile *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: make_rfile
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:461,1
    - Dst: read_bytes
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:464,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:466,1
    - Dst: read_bytes
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:470,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:472,1
    - Dst: read_bytes
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:476,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:479,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:486,1
    - Dst: read_bytes
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:487,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 505
    functionName: make_incremental_rfile
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - read_bytes
    - pg_malloc0_array
    - make_rfile
    - pg_fatal
    linkageType: ''
    returnType: rfile
    signature: 'rfile *

      make_incremental_rfile(char *filename)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:515,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:516,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:517,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:521,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:522,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:525,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - filename
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 529
    functionName: make_rfile
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 2
    functionsReached:
    - pg_free
    - pfree
    - pstrdup
    - pg_fatal
    - open
    - pg_malloc0_object
    linkageType: ''
    returnType: rfile
    signature: 'rfile *

      make_rfile(char *filename, bool missing_ok)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:537,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:542,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - rf
    - buffer
    - length
    argTypes:
    - rfile*
    - void*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 547
    functionName: read_bytes
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - read
    linkageType: ''
    returnType: void
    signature: void read_bytes(rfile *rf, void *buffer, unsigned length)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:576,1
    - Dst: pg_checksum_type_name
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:578,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:580,1
    - Dst: pg_checksum_type_name
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:582,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:585,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:602,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:604,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:610,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:614,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:626,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:627,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:632,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:637,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:640,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:654,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:669,1
    - Dst: write_block
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:672,1
    - Dst: read_block
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:685,1
    - Dst: write_block
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:686,1
    - Dst: copy_file_range
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:703,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:706,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:709,1
    - Dst: read_block
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:723,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:725,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:726,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:729,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:738,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:740,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:744,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:745,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 70
    argCount: 9
    argNames:
    - input_filename
    - output_filename
    - block_length
    - sourcemap
    - offsetmap
    - checksum_ctx
    - copy_method
    - debug
    - dry_run
    argTypes:
    - char*
    - char*
    - unsigned
    - rfile**
    - off_t*
    - pg_checksum_context*
    - CopyMethod
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 746
    functionName: write_reconstructed_file
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - open
    - pfree
    - appendStringInfo
    - initStringInfo
    - read_block
    - pg_fatal
    - Max
    - memset
    - copy_file_range
    - pg_checksum_update
    - pg_checksum_type_name
    - close
    - write_block
    - resetStringInfo
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: "void write_reconstructed_file(char *input_filename,\n\t\t\t\t\t\t
      char *output_filename,\n\t\t\t\t\t\t unsigned block_length,\n\t\t\t\t\t\t rfile
      **sourcemap,\n\t\t\t\t\t\t off_t *offsetmap,\n\t\t\t\t\t\t pg_checksum_context
      *checksum_ctx,\n\t\t\t\t\t\t CopyMethod copy_method,\n\t\t\t\t\t\t bool debug,\n\t\t\t\t\t\t
      bool dry_run)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:761,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:764,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:766,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:771,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:772,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - fd
    - output_filename
    - buffer
    - checksum_ctx
    argTypes:
    - int
    - char*
    - uint8*
    - pg_checksum_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 755
    functionDepth: 1
    functionLinenumber: 755
    functionLinenumberEnd: 774
    functionName: write_block
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - pg_checksum_update
    - write
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void write_block(int fd, char *output_filename,\n\t\t\tuint8 *buffer,
      pg_checksum_context *checksum_ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_pread
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:785,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:789,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:791,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - s
    - 'off'
    - buffer
    argTypes:
    - rfile*
    - off_t
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 794
    functionName: read_block
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - pg_pread
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void read_block(rfile *s, off_t off, uint8 *buffer)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: get_eol_offset
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:59,1
    - Dst: line_starts_with
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:63,1
    - Dst: parse_lsn
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:65,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:66,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:69,1
    - Dst: line_starts_with
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:73,1
    - Dst: parse_tli
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:75,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:76,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:79,1
    - Dst: line_starts_with
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:82,1
    - Dst: parse_lsn
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:84,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:85,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:88,1
    - Dst: line_starts_with
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:92,1
    - Dst: parse_tli
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:94,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:95,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:98,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:106,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:108,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:110,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:113,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 44
    argCount: 6
    argNames:
    - filename
    - buf
    - start_tli
    - start_lsn
    - previous_tli
    - previous_lsn
    argTypes:
    - char*
    - StringInfo
    - TimeLineID*
    - XLogRecPtr*
    - TimeLineID*
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 115
    functionName: parse_backup_label
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/backup_label.c
    functionUses: 1
    functionsReached:
    - parse_tli
    - pg_fatal
    - get_eol_offset
    - parse_lsn
    - line_starts_with
    linkageType: ''
    returnType: void
    signature: "void parse_backup_label(char *filename, StringInfo buf,\n\t\t\t\t
      \  TimeLineID *start_tli, XLogRecPtr *start_lsn,\n\t\t\t\t   TimeLineID *previous_tli,
      XLogRecPtr *previous_lsn)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:136,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:138,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:140,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:143,1
    - Dst: get_eol_offset
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:148,1
    - Dst: line_starts_with
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:151,1
    - Dst: line_starts_with
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:152,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:156,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:160,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:162,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:165,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:166,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:173,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:174,1
    - Dst: pg_checksum_final
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:176,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:186,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:187,1
    - Dst: add_file_to_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:188,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 4
    argNames:
    - output_directory
    - buf
    - checksum_type
    - mwriter
    argTypes:
    - char*
    - StringInfo
    - pg_checksum_type
    - manifest_writer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 192
    functionName: write_backup_label
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/backup_label.c
    functionUses: 1
    functionsReached:
    - pg_checksum_final
    - pg_checksum_init
    - stat
    - write
    - pg_fatal
    - get_eol_offset
    - pg_checksum_update
    - line_starts_with
    - close
    - open
    - add_file_to_manifest
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void write_backup_label(char *output_directory, StringInfo buf,\n\t\t\t\t
      \  pg_checksum_type checksum_type, manifest_writer *mwriter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 213
    functionName: get_eol_offset
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/backup_label.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_eol_offset(StringInfo buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 4
    argNames:
    - s
    - e
    - match
    - sout
    argTypes:
    - char*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 233
    functionName: line_starts_with
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/backup_label.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool line_starts_with(char *s, char *e, char *match, char **sout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - s
    - e
    - lsn
    - c
    argTypes:
    - char*
    - char*
    - XLogRecPtr*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 260
    functionName: parse_lsn
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/backup_label.c
    functionUses: 1
    functionsReached:
    - sscanf
    linkageType: ''
    returnType: bool
    signature: bool parse_lsn(char *s, char *e, XLogRecPtr *lsn, char **c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_combinebackup/backup_label.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - s
    - e
    - tli
    argTypes:
    - char*
    - char*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 283
    functionName: parse_tli
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/backup_label.c
    functionUses: 1
    functionsReached:
    - sscanf
    linkageType: ''
    returnType: bool
    signature: bool parse_tli(char *s, char *e, TimeLineID *tli)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:85,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:87,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:87,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:88,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:96,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:97,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:98,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:99,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:102,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:107,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:109,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:114,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:117,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:120,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:125,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:129,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:131,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:132,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:136,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:139,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:141,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 143
    functionName: describeAggregates
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describeAggregates(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:157,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:159,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:159,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:160,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:166,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:167,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:168,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:169,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:173,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:176,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:177,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:180,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:183,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:188,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:192,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:194,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:195,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:199,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:202,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:204,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 208
    functionName: describeAccessMethods
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool describeAccessMethods(const char *pattern, bool verbose)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:221,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:223,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:223,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:224,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:228,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:229,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:230,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:234,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:235,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:236,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:240,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:241,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:242,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:245,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:248,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:253,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:257,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:259,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:260,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:264,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:267,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:269,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 271
    functionName: describeTablespaces
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describeTablespaces(const char *pattern, bool verbose)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:294,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:295,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:296,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:297,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:298,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/describe.c:305,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/describe.c:305,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:307,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:315,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/describe.c:317,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:329,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:331,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:331,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:332,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:335,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:336,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:339,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:348,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:349,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:351,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:352,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:353,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:354,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:355,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:357,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:366,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:367,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:369,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:370,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:371,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:372,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:373,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:377,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:386,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:387,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:388,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:389,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:390,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:399,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:400,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:401,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:402,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:403,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:407,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:408,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:409,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:410,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:411,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:412,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:413,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:414,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:415,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:416,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:418,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:419,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:421,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:422,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:424,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:427,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:433,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:440,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:453,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:456,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:460,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:461,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:463,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:468,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:471,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:474,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:475,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:480,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:483,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:486,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:491,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:494,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:498,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:499,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:501,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:508,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:514,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:515,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:517,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:523,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:524,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:531,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:532,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:533,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:539,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:541,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:542,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:544,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:546,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:549,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:557,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:569,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:570,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:571,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:573,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:575,1
    - Dst: map_typename_pattern
      Src: /src/postgres/src/bin/psql/describe.c:576,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:585,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:590,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:593,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:595,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:596,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:600,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:603,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:605,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:607,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:611,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 140
    argCount: 6
    argNames:
    - functypes
    - func_pattern
    - arg_patterns
    - num_arg_patterns
    - verbose
    - showSystem
    argTypes:
    - char*
    - char*
    - char**
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 613
    functionName: describeFunctions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - CppAsString2
    - PQclear
    - strcmp
    - strchr
    - validateSQLNamePattern
    - gettext_noop
    - pg_log_error
    - appendPQExpBufferStr
    - _
    - printfPQExpBuffer
    - printQuery
    - strspn
    - lengthof
    - map_typename_pattern
    - printACLColumn
    - formatPGVersionNumber
    - strlen
    - PSQLexec
    - termPQExpBuffer
    - initPQExpBuffer
    - appendPQExpBuffer
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool describeFunctions(const char *functypes, const char *func_pattern,\n\t\t\t\t
      \ char **arg_patterns, int num_arg_patterns,\n\t\t\t\t  bool verbose, bool showSystem)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:628,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:630,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:630,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:631,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:634,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:635,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:638,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:656,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:657,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:658,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:659,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:660,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:661,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:664,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:666,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:668,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:675,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:676,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:676,1
    - Dst: strstr
      Src: /src/postgres/src/bin/psql/describe.c:683,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:684,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:687,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:691,1
    - Dst: map_typename_pattern
      Src: /src/postgres/src/bin/psql/describe.c:691,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:698,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:702,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:704,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:705,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:709,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:712,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:714,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 716
    functionName: describeTypes
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - map_typename_pattern
    - CppAsString2
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - appendPQExpBufferStr
    - strstr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describeTypes(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/describe.c:766,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 770
    functionName: map_typename_pattern
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 2
    functionsReached:
    - pg_strcasecmp
    linkageType: ''
    returnType: char
    signature: 'char *

      map_typename_pattern(const char *pattern)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:787,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:805,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:805,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:806,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:812,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:813,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:814,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:815,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:816,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:819,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:822,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:823,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:824,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:825,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:827,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:832,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:837,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:845,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:851,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:855,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:858,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:866,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:870,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:882,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:883,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:884,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:886,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:888,1
    - Dst: map_typename_pattern
      Src: /src/postgres/src/bin/psql/describe.c:889,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:898,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:902,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:904,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:905,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:909,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:912,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:914,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:916,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:920,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 5
    argNames:
    - oper_pattern
    - arg_patterns
    - num_arg_patterns
    - verbose
    - showSystem
    argTypes:
    - char*
    - char**
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 777
    functionDepth: 2
    functionLinenumber: 777
    functionLinenumberEnd: 922
    functionName: describeOperators
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - map_typename_pattern
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - strcmp
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool describeOperators(const char *oper_pattern,\n\t\t\t\t  char **arg_patterns,
      int num_arg_patterns,\n\t\t\t\t  bool verbose, bool showSystem)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:937,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:939,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:939,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:940,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:945,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:946,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:947,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:949,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:955,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:957,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:959,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:960,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:963,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:964,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:966,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:968,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:970,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:972,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:974,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:976,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:978,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:980,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:982,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:984,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:985,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:986,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:988,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:995,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:996,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:997,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:998,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1001,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1006,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1010,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1015,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1016,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1017,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1021,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1024,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1026,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 1028
    functionName: listAllDbs
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listAllDbs(const char *pattern, bool verbose)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1043,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1048,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1049,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1050,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1063,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1064,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1065,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1066,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1067,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1068,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1069,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1070,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1071,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1072,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:1074,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1081,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1087,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1089,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1120,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1122,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1126,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1127,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1128,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1129,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1130,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1131,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1134,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1137,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1143,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1145,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1149,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1149,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:1153,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1155,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1157,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1158,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1162,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - pattern
    - showSystem
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1164
    functionName: permissionsList
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - CppAsString2
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool permissionsList(const char *pattern, bool showSystem)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1180,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1182,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1182,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1183,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1190,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1191,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1193,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1195,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1197,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1199,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1201,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1203,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1204,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:1206,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1208,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1211,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1219,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1221,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1225,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1225,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:1229,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1231,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1233,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1234,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1238,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1240
    functionName: listDefaultACLs
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool listDefaultACLs(const char *pattern)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1262,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1264,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1264,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1265,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1268,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1269,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1270,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1271,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1274,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1284,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1287,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1290,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1297,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1308,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1311,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1314,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1321,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1332,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1335,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1338,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1345,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1356,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1359,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1362,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1369,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1379,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1382,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1385,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1392,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1401,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1404,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1407,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1413,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1417,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1419,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1420,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1424,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:1427,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1429,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1431,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1435,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 57
    argCount: 2
    argNames:
    - pattern
    - showSystem
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1254
    functionDepth: 1
    functionLinenumber: 1254
    functionLinenumberEnd: 1437
    functionName: objectDescription
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool objectDescription(const char *pattern, bool showSystem)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1455,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1457,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1458,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1459,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1467,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1470,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1475,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1479,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1481,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1482,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1486,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:1491,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:1494,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1496,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1500,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1506,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1507,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1508,1
    - Dst: describeOneTableDetails
      Src: /src/postgres/src/bin/psql/describe.c:1510,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1512,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1517,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1522,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1448
    functionDepth: 1
    functionLinenumber: 1448
    functionLinenumberEnd: 1524
    functionName: describeTableDetails
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - pg_log_error
    - initPQExpBuffer
    - describeOneTableDetails
    - PQgetvalue
    - PSQLexec
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: bool describeTableDetails(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 230
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1590,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1591,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1592,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1595,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1596,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1599,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1617,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1633,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1638,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:1641,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/describe.c:1645,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1645,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1646,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1647,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1647,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1648,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1648,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1649,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1649,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1650,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1650,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1651,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1651,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1652,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1652,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1653,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1653,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1654,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1654,1
    - Dst: atooid
      Src: /src/postgres/src/bin/psql/describe.c:1655,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1655,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1656,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1656,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1657,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1657,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1658,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1659,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:1661,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1662,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1662,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1665,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1677,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1677,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1678,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1686,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1687,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1688,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1689,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1690,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1691,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1692,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1693,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1694,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1695,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1700,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1705,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1706,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1707,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1723,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1732,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1734,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/describe.c:1737,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1737,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1738,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/describe.c:1741,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1741,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1742,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1746,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1751,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1752,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1753,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1759,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1762,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1766,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1766,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1768,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1768,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1772,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1774,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1776,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1779,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1784,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1784,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1787,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1787,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1795,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:1797,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:1798,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1812,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1812,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1813,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1828,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1829,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1830,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1831,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1832,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1835,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1839,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1839,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1847,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1847,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1848,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1851,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1855,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1857,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1857,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1858,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1858,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1860,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1869,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:1871,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:1872,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1896,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1897,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1898,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1900,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1906,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1913,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1916,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1919,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1921,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1929,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1931,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1932,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1935,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1941,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1948,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1958,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1970,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1985,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1990,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1991,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1992,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1994,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1997,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2004,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2004,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2007,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2007,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2011,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2011,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2015,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2015,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2020,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2020,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2023,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2023,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2028,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2028,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2031,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2031,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2035,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2035,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2039,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2039,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2043,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2043,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2048,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2048,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2051,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2051,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2056,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2063,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2064,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2067,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2068,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2069,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2072,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2074,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2076,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2078,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2080,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2082,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2084,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/describe.c:2086,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:2086,1
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/describe.c:2088,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:2092,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2098,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2098,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2101,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2101,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2111,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2111,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2113,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2114,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2114,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2117,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2118,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/describe.c:2126,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2127,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/describe.c:2132,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2133,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2137,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2139,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2144,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2144,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2146,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2146,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2150,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2150,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2155,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2158,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2169,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2172,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2181,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2181,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2186,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2186,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2197,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2198,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2199,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2203,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2209,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2211,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2216,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2220,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2222,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2223,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2224,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2226,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2226,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2228,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2229,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2235,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2236,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2239,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2239,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2241,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2241,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2243,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2246,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2254,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2255,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2256,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2259,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2263,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2265,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2267,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2267,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2268,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2270,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2278,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2279,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2280,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2286,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2290,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2292,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2293,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2295,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2295,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2297,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2299,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2308,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2308,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2309,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2317,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2318,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2325,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2326,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2329,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2332,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2334,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2336,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2343,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2346,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2348,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2353,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2354,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2355,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2356,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2357,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2358,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2359,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2360,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2361,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2362,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2363,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2365,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2366,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2366,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2367,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2369,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2370,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2370,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2372,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2372,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2375,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2379,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2379,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/describe.c:2382,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2383,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2383,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2385,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2386,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2386,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2388,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2389,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2389,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2391,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2392,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2392,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2394,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2395,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2395,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2397,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2398,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2398,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2400,1
    - Dst: add_tablespace_footer
      Src: /src/postgres/src/bin/psql/describe.c:2406,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2410,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2427,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2427,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2428,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2434,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2435,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2437,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2439,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2440,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2444,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2445,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2449,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2453,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2457,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2457,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2461,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2462,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2468,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2468,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2469,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2469,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2471,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2472,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2480,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2480,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2481,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2482,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2482,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2484,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2484,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2485,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2487,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2491,1
    - Dst: strstr
      Src: /src/postgres/src/bin/psql/describe.c:2492,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2495,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2498,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2498,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2499,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2501,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2501,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2502,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2506,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2506,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2507,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2509,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2509,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2510,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2512,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2512,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2513,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2515,1
    - Dst: add_tablespace_footer
      Src: /src/postgres/src/bin/psql/describe.c:2518,1
    - Dst: atooid
      Src: /src/postgres/src/bin/psql/describe.c:2519,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2519,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2523,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2529,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2530,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2531,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2539,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2543,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2547,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2547,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2551,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2552,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2553,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2555,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2558,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2562,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2563,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2571,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2584,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2593,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2594,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2597,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2601,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2605,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2606,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2607,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2608,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2610,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2610,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2618,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2618,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2619,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2620,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2621,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2622,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2624,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2625,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2626,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2628,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2631,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2634,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2635,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2638,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2650,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2659,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2663,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2667,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2668,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2669,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2671,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2671,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2674,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2675,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2676,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2677,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2679,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2682,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2685,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2686,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2687,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2688,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2690,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2704,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2708,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2715,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2715,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2718,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2718,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2721,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2721,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2724,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2724,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2727,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2727,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2732,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2733,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2735,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2736,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2738,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2739,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2740,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2742,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2744,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2745,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2748,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2749,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2750,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2752,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2753,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2754,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2756,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2758,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2763,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2764,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2765,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2780,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2784,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2788,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2788,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2799,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2799,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2800,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2800,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2801,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2801,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2803,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2806,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2807,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2808,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2823,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2828,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2834,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2840,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/describe.c:2843,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2846,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2847,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2848,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2851,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2852,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2852,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2853,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2854,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2856,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2859,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2863,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2864,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2865,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2879,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2881,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2882,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2887,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2891,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2895,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2895,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2901,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2904,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2905,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2906,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2909,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2909,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2911,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2915,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2915,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2917,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2921,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2921,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2923,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2926,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2927,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2928,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2931,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2931,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2932,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2933,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2935,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2938,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2944,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2945,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2946,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2952,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2956,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2975,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2979,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2983,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2987,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2999,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2999,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3002,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3002,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3005,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3005,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3008,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3008,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3011,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3016,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3018,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3019,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3023,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3027,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3028,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3031,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3060,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3078,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3091,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3108,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3112,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3115,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3115,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3120,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3121,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:3124,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3125,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3126,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:3129,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3130,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3131,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3133,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3135,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3140,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3141,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3142,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3150,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3154,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3157,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3157,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3162,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3162,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3164,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3166,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3174,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3175,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3176,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3188,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3192,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3195,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3195,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3200,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3201,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3202,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3204,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3205,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3206,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3207,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3209,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3210,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3213,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3215,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3225,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3225,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3226,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3229,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3233,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:3234,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3234,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3236,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3244,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3244,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3245,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3250,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3250,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3251,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3256,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3260,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3262,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3262,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3263,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3268,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3271,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3272,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3275,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3288,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3289,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3290,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3310,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3320,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3322,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3335,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3340,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3341,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3343,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3347,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3373,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3374,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3410,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3410,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3413,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3413,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3416,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3416,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3419,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3419,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3422,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3422,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3425,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3430,1
    - Dst: strstr
      Src: /src/postgres/src/bin/psql/describe.c:3431,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3435,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:3438,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3439,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3440,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3442,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3446,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3473,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3474,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3475,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3485,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3488,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3490,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3495,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3495,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3496,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3497,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3500,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3503,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3503,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3504,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3506,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3510,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3511,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3512,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3521,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3526,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3528,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3532,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3533,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3538,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3538,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3539,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3542,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3546,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3546,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3548,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3558,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3568,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3571,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3581,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3581,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3582,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3590,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3590,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3592,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3592,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3593,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3599,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3599,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3603,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3604,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3609,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3611,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3611,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:3612,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3613,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3613,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3616,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3618,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3619,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3619,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3620,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3622,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3625,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3630,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3630,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3631,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3643,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3645,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3648,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3650,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3656,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3661,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3661,1
    - Dst: add_tablespace_footer
      Src: /src/postgres/src/bin/psql/describe.c:3664,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3670,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3670,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3671,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3679,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3681,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3682,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/describe.c:3685,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/describe.c:3693,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3694,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3695,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3696,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:3698,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3700,1
    CyclomaticComplexity: 365
    EdgeCount: 365
    ICount: 953
    argCount: 4
    argNames:
    - schemaname
    - relationname
    - oid
    - verbose
    argTypes:
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3703
      start: 1533
    functionDepth: 1
    functionLinenumber: 1533
    functionLinenumberEnd: 3703
    functionName: describeOneTableDetails
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - CppAsString2
    - PQclear
    - strcmp
    - add_tablespace_footer
    - strstr
    - gettext_noop
    - PQgetvalue
    - pg_log_error
    - appendPQExpBufferStr
    - _
    - printfPQExpBuffer
    - Assert
    - printQuery
    - printTableAddCell
    - printTableAddFooter
    - printTableInit
    - PQfnumber
    - PQntuples
    - lengthof
    - atooid
    - psprintf
    - printTableAddHeader
    - resetPQExpBuffer
    - strlen
    - pg_free
    - PQgetisnull
    - PSQLexec
    - appendPQExpBufferChar
    - termPQExpBuffer
    - pg_strdup
    - printTable
    - printTableCleanup
    - initPQExpBuffer
    - atoi
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool describeOneTableDetails(const char *schemaname,\n\t\t\t\t\t\tconst
      char *relationname,\n\t\t\t\t\t\tconst char *oid,\n\t\t\t\t\t\tbool verbose)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3731,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3732,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3733,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3734,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3737,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3740,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3744,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3749,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3749,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3750,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3751,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3756,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3761,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3761,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3762,1
    - Dst: printTableSetFooter
      Src: /src/postgres/src/bin/psql/describe.c:3763,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3766,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3767,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 4
    argNames:
    - cont
    - relkind
    - tablespace
    - newline
    argTypes:
    - printTableContent*
    - char
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3770
      start: 3710
    functionDepth: 1
    functionLinenumber: 3710
    functionLinenumberEnd: 3770
    functionName: add_tablespace_footer
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - printTableSetFooter
    - printTableAddFooter
    - initPQExpBuffer
    - PQgetvalue
    - PSQLexec
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void add_tablespace_footer(printTableContent *const cont, char relkind,\n\t\t\t\t\t
      \ Oid tablespace, const bool newline)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3793,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3795,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3795,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3796,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3803,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3806,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3807,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3809,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3812,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:3814,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3818,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3822,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3824,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3828,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/psql/describe.c:3829,1
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/describe.c:3831,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3831,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:3833,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3833,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:3834,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3834,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:3837,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3837,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:3841,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3841,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3843,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3844,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3844,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3845,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3845,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3847,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3847,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3848,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3848,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3850,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3850,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3851,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3851,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3853,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3853,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3854,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3854,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3856,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3856,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3857,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3857,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3859,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3859,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3860,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3860,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3862,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3862,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3863,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3863,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/describe.c:3865,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3865,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/describe.c:3869,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3872,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3872,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3874,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/psql/describe.c:3874,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3880,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3880,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/describe.c:3883,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3884,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3884,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3885,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3885,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:3888,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:3890,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:3893,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3893,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3895,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/describe.c:3897,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/describe.c:3898,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:3901,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:3902,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3904,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 73
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3906
      start: 3777
    functionDepth: 1
    functionLinenumber: 3777
    functionLinenumberEnd: 3906
    functionName: describeRoles
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - validateSQLNamePattern
    - gettext_noop
    - PQgetvalue
    - appendPQExpBufferStr
    - _
    - printfPQExpBuffer
    - printTableAddCell
    - printTableInit
    - PQntuples
    - printTableAddHeader
    - add_role_attribute
    - pg_malloc0_array
    - resetPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBufferChar
    - pg_free
    - pg_strdup
    - printTable
    - printTableCleanup
    - ngettext
    - initPQExpBuffer
    - atoi
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describeRoles(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3912,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3915
      start: 3908
    functionDepth: 1
    functionLinenumber: 3908
    functionLinenumberEnd: 3915
    functionName: add_role_attribute
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void add_role_attribute(PQExpBuffer buf, const char *const str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3928,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3930,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3930,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3931,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3936,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3937,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3938,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:3939,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:3942,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3946,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3948,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3949,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3959,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:3962,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:3965,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:3968,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3972,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:3975,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3978,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3982,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - pattern
    - pattern2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3984
      start: 3920
    functionDepth: 1
    functionLinenumber: 3920
    functionLinenumberEnd: 3984
    functionName: listDbRoleSettings
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - pg_log_error
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listDbRoleSettings(const char *pattern, const char *pattern2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3997,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3998,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3998,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3999,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4002,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4003,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4006,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4011,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4016,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4019,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4020,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4022,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4029,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4031,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4035,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4039,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4041,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4042,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4046,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4049,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4051,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - pattern
    - showSystem
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4053
      start: 3990
    functionDepth: 1
    functionLinenumber: 3990
    functionLinenumberEnd: 4053
    functionName: describeRoleGrants
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describeRoleGrants(const char *pattern, bool showSystem)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4074,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4075,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4076,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4077,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4078,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4079,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4080,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4096,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4098,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4098,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4099,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4115,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4116,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4117,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4118,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4119,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4120,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4121,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4122,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4123,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4124,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4125,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4126,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4127,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4128,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4133,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4135,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4144,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4150,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4151,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4152,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4153,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4167,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4169,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4171,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4174,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4175,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4178,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4184,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4188,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4192,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4195,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4195,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4196,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4199,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4199,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4202,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4202,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4204,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4204,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4206,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4206,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4207,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4209,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4209,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4211,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4213,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4213,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4215,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4215,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4217,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4218,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4221,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4225,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4230,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4234,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4236,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4237,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:4246,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4251,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4254,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4257,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4260,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4263,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4266,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4269,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4272,1
    - Dst: pg_log_error_internal
      Src: /src/postgres/src/bin/psql/describe.c:4275,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4281,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4283,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4285,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4287,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4289,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4291,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4293,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4295,1
    - Dst: pg_log_error_internal
      Src: /src/postgres/src/bin/psql/describe.c:4297,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4303,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4304,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4305,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4306,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4307,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4308,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4309,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4310,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:4314,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4316,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4319,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 104
    argCount: 4
    argNames:
    - tabtypes
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4321
      start: 4071
    functionDepth: 1
    functionLinenumber: 4071
    functionLinenumberEnd: 4321
    functionName: listTables
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - CppAsString2
    - PQclear
    - _
    - printfPQExpBuffer
    - strchr
    - validateSQLNamePattern
    - pg_log_error
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - pg_log_error_internal
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool listTables(const char *tabtypes, const char *pattern, bool verbose,
      bool showSystem)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4341,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4342,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4343,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4357,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4359,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4363,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4367,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4369,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4370,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4371,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4375,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4376,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4377,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4381,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4386,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4387,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4388,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4394,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4396,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4399,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4401,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4409,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4410,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4414,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4416,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4417,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4419,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4423,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4425,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4427,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4429,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4432,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4437,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4442,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4447,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4452,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4471,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4482,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4484,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4484,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4486,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4486,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4487,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4488,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4490,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4494,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4498,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4503,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4507,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4511,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4512,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4516,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4517,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:4522,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4524,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4526,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4528,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 72
    argCount: 3
    argNames:
    - reltypes
    - pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4530
      start: 4338
    functionDepth: 1
    functionLinenumber: 4338
    functionLinenumberEnd: 4530
    functionName: listPartitionedTables
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - CppAsString2
    - PQclear
    - _
    - printfPQExpBuffer
    - strchr
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool listPartitionedTables(const char *reltypes, const char *pattern,
      bool verbose)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4544,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4546,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4546,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4547,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4551,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4552,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4553,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4557,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4562,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4563,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4564,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4565,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:4566,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4569,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4575,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4579,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4583,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4589,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4592,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4594,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4595,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4599,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4602,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4604,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4606
      start: 4537
    functionDepth: 1
    functionLinenumber: 4537
    functionLinenumberEnd: 4606
    functionName: listLanguages
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listLanguages(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4621,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4623,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4623,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4624,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4635,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4636,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4637,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4638,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4639,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4640,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4641,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4645,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:4646,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4647,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4649,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4652,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4657,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4662,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4665,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4668,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4673,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4677,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4679,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4680,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4684,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4687,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4689,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4691
      start: 4614
    functionDepth: 1
    functionLinenumber: 4614
    functionLinenumberEnd: 4691
    functionName: listDomains
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listDomains(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4707,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4709,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4709,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4710,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4717,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4718,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4719,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4720,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4721,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4721,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4722,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4725,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4727,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4729,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4735,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4741,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4744,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4747,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4752,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4756,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4758,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4759,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4763,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:4766,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4768,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4770,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4772
      start: 4698
    functionDepth: 1
    functionLinenumber: 4698
    functionLinenumberEnd: 4772
    functionName: listConversions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool listConversions(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4787,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4789,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4790,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4791,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4794,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4795,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4799,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4801,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4802,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:4804,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4806,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4807,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4810,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4813,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4818,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4823,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4826,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4828,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4829,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4834,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4836,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4839,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4841,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4843
      start: 4779
    functionDepth: 1
    functionLinenumber: 4779
    functionLinenumberEnd: 4843
    functionName: describeConfigurationParameters
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - printACLColumn
    - appendPQExpBufferStr
    - processSQLNamePattern
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool describeConfigurationParameters(const char *pattern, bool verbose,\n\t\t\t\t\t\t\t\tbool
      showSystem)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4859,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4861,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4861,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4862,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4873,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4874,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4875,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4876,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4877,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4878,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4879,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4880,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4881,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4882,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4884,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4886,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4887,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4890,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4894,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4898,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4900,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4901,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4905,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:4908,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4910,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4912,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4914
      start: 4850
    functionDepth: 1
    functionLinenumber: 4850
    functionLinenumberEnd: 4914
    functionName: listEventTriggers
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool listEventTriggers(const char *pattern, bool verbose)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4928,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4930,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4930,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4931,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4935,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4936,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4939,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4943,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4945,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4954,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4956,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4957,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4961,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4962,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4969,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4970,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4972,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4976,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4978,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4980,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4983,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4989,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4993,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4995,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4996,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5000,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5003,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5005,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5007
      start: 4921
    functionDepth: 1
    functionLinenumber: 4921
    functionLinenumberEnd: 5007
    functionName: listExtendedStats
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - CppAsString2
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listExtendedStats(const char *pattern, bool verbose)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5022,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5024,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5024,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5025,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5028,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5029,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5036,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5043,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5045,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5051,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5053,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5054,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5055,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5058,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5063,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5064,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5065,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5066,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5072,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5085,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5090,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5096,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5103,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5105,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5112,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5114,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5115,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5119,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:5122,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5124,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5126,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5130,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5132
      start: 5014
    functionDepth: 1
    functionLinenumber: 5014
    functionLinenumberEnd: 5132
    functionName: listCasts
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool listCasts(const char *pattern, bool verbose)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5147,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5149,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5149,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5150,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5154,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5155,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5157,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5164,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5166,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5169,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5170,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5173,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5175,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5177,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5179,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5181,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5183,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5186,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5188,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5190,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5192,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5195,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5197,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5197,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5198,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5200,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5202,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5203,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5206,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5208,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5210,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5215,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5224,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5226,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5231,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5235,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5237,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5238,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5242,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:5245,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5247,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5249,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5251
      start: 5139
    functionDepth: 1
    functionLinenumber: 5139
    functionLinenumberEnd: 5251
    functionName: listCollations
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool listCollations(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5267,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5269,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5269,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5270,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5273,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5274,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5278,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:5279,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5280,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5282,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5285,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5289,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5292,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5299,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5301,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5305,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5313,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5314,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5315,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5323,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5327,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/describe.c:5336,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:5337,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5337,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5342,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5343,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:5345,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5352,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5355,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5357,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5358,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:5366,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:5368,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5374,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5376
      start: 5258
    functionDepth: 1
    functionLinenumber: 5258
    functionLinenumberEnd: 5376
    functionName: listSchemas
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - pg_free
    - appendPQExpBufferStr
    - pg_malloc_array
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PQgetvalue
    - PSQLexec
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: bool
    signature: bool listSchemas(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: listTSParsersVerbose
      Src: /src/postgres/src/bin/psql/describe.c:5391,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5393,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5395,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5395,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5396,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5403,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5404,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5405,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5408,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5413,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5417,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5419,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5420,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5424,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5427,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5429,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5431
      start: 5383
    functionDepth: 1
    functionLinenumber: 5383
    functionLinenumberEnd: 5431
    functionName: listTSParsers
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - listTSParsersVerbose
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listTSParsers(const char *pattern, bool verbose)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5443,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5445,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5445,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5446,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5454,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5459,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5463,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5465,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5466,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5470,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:5475,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:5478,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5480,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5484,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5490,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:5491,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5492,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5493,1
    - Dst: describeOneTSParser
      Src: /src/postgres/src/bin/psql/describe.c:5495,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5497,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5503,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5508,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5510
      start: 5436
    functionDepth: 1
    functionLinenumber: 5436
    functionLinenumberEnd: 5510
    functionName: listTSParsersVerbose
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - pg_log_error
    - describeOneTSParser
    - initPQExpBuffer
    - PQgetisnull
    - PQgetvalue
    - PSQLexec
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: bool listTSParsersVerbose(const char *pattern)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5521,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5523,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5523,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5524,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5554,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5555,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5556,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5557,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5559,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5561,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5563,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5565,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5568,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5569,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5573,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5575,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5575,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5578,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5578,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:5584,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5586,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5588,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5590,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5592,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5593,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5594,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5599,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5600,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5603,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5604,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5607,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5612,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5612,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5615,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5615,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5623,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5625,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5626,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 3
    argNames:
    - oid
    - nspname
    - prsname
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5628
      start: 5512
    functionDepth: 1
    functionLinenumber: 5512
    functionLinenumberEnd: 5628
    functionName: describeOneTSParser
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool describeOneTSParser(const char *oid, const char *nspname, const
      char *prsname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5642,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5644,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5644,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5645,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5649,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5650,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5654,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5660,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5661,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5664,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5666,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5668,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5671,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5676,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5680,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5682,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5683,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5687,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5690,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5692,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5694
      start: 5635
    functionDepth: 1
    functionLinenumber: 5635
    functionLinenumberEnd: 5694
    functionName: listTSDictionaries
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listTSDictionaries(const char *pattern, bool verbose)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5708,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5710,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5710,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5712,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5719,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5720,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5721,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5722,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5723,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5725,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5730,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5731,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5732,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5734,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5737,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5742,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5746,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5748,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5749,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5753,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5756,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5760
      start: 5701
    functionDepth: 1
    functionLinenumber: 5701
    functionLinenumberEnd: 5760
    functionName: listTSTemplates
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listTSTemplates(const char *pattern, bool verbose)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: listTSConfigsVerbose
      Src: /src/postgres/src/bin/psql/describe.c:5775,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5777,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5779,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5779,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5780,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5787,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5788,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5789,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5792,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5797,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5801,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5803,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5804,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5808,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5811,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5813,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5815
      start: 5767
    functionDepth: 1
    functionLinenumber: 5767
    functionLinenumberEnd: 5815
    functionName: listTSConfigs
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - listTSConfigsVerbose
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listTSConfigs(const char *pattern, bool verbose)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5824,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5826,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5826,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5827,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5839,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5844,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5848,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5850,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5851,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5855,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:5860,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:5863,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5865,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5869,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5877,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5878,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:5879,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5880,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5881,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:5882,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5883,1
    - Dst: describeOneTSConfig
      Src: /src/postgres/src/bin/psql/describe.c:5885,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5887,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5893,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5898,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5900
      start: 5817
    functionDepth: 1
    functionLinenumber: 5817
    functionLinenumberEnd: 5900
    functionName: listTSConfigsVerbose
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - pg_log_error
    - initPQExpBuffer
    - PQgetisnull
    - describeOneTSConfig
    - PQgetvalue
    - PSQLexec
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: bool listTSConfigsVerbose(const char *pattern)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5911,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5913,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5913,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5914,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5930,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5931,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5934,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5935,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5939,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5942,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5942,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5945,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5945,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5949,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5949,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5952,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5952,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5960,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5962,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5964,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 5
    argNames:
    - oid
    - nspname
    - cfgname
    - pnspname
    - prsname
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5966
      start: 5902
    functionDepth: 1
    functionLinenumber: 5902
    functionLinenumberEnd: 5966
    functionName: describeOneTSConfig
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool describeOneTSConfig(const char *oid, const char *nspname, const
      char *cfgname,\n\t\t\t\t\tconst char *pnspname, const char *prsname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5981,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5983,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5983,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5984,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5989,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5990,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5991,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5992,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5996,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:5997,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5998,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6006,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6007,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6010,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6013,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6018,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6022,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6026,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6028,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6029,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6033,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6036,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6038,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6040
      start: 5974
    functionDepth: 1
    functionLinenumber: 5974
    functionLinenumberEnd: 6040
    functionName: listForeignDataWrappers
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listForeignDataWrappers(const char *pattern, bool verbose)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6054,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6056,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6056,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6057,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6061,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6062,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6063,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6067,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:6068,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6069,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6080,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6081,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6082,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6083,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6086,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6091,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6096,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6100,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6104,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6106,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6107,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6111,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6114,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6118
      start: 6047
    functionDepth: 1
    functionLinenumber: 6047
    functionLinenumberEnd: 6118
    functionName: listForeignServers
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - printACLColumn
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listForeignServers(const char *pattern, bool verbose)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6132,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6134,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6134,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6135,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6138,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6139,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6142,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6149,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6151,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6153,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6157,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6161,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6163,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6164,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6168,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6171,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6175
      start: 6125
    functionDepth: 1
    functionLinenumber: 6125
    functionLinenumberEnd: 6175
    functionName: listUserMappings
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listUserMappings(const char *pattern, bool verbose)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6189,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6191,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6191,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6192,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6196,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6197,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6198,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6201,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6209,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6210,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6212,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6221,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6226,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6231,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6235,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6237,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6238,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6242,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6245,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6249
      start: 6182
    functionDepth: 1
    functionLinenumber: 6182
    functionLinenumberEnd: 6249
    functionName: listForeignTables
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listForeignTables(const char *pattern, bool verbose)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6263,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6265,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6265,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6266,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6275,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6276,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6277,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6278,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6279,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6281,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6287,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6291,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6293,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6294,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6298,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6301,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6305
      start: 6256
    functionDepth: 1
    functionLinenumber: 6256
    functionLinenumberEnd: 6305
    functionName: listExtensions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listExtensions(const char *pattern)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6319,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6321,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6321,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6322,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6326,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6332,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6336,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6338,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6339,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6343,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6348,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6351,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6353,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6357,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6362,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6363,1
    - Dst: listOneExtensionContents
      Src: /src/postgres/src/bin/psql/describe.c:6365,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6367,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6372,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6377,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6379
      start: 6312
    functionDepth: 1
    functionLinenumber: 6312
    functionLinenumberEnd: 6379
    functionName: listExtensionContents
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - pg_log_error
    - initPQExpBuffer
    - listOneExtensionContents
    - PQgetvalue
    - PSQLexec
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: bool listExtensionContents(const char *pattern)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6389,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6391,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6391,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6392,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6397,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6400,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6401,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6405,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6406,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6406,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6410,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6412,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6413,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - extname
    - oid
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6415
      start: 6381
    functionDepth: 1
    functionLinenumber: 6381
    functionLinenumberEnd: 6415
    functionName: listOneExtensionContents
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listOneExtensionContents(const char *extname, const char *oid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6438,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6439,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6447,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/describe.c:6454,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6456,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:6459,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/describe.c:6459,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6461,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6466,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6470,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 10
    argNames:
    - buf
    - pattern
    - have_where
    - force_escape
    - schemavar
    - namevar
    - altnamevar
    - visibilityrule
    - added_clause
    - maxparts
    argTypes:
    - PQExpBuffer
    - char*
    - bool
    - bool
    - char*
    - char*
    - char*
    - char*
    - bool*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6472
      start: 6427
    functionDepth: 1
    functionLinenumber: 6427
    functionLinenumberEnd: 6472
    functionName: validateSQLNamePattern
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 36
    functionsReached:
    - termPQExpBuffer
    - strcmp
    - processSQLNamePattern
    - PQdb
    - initPQExpBuffer
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: "bool validateSQLNamePattern(PQExpBuffer buf, const char *pattern,
      bool have_where,\n\t\t\t\t\t   bool force_escape, const char *schemavar,\n\t\t\t\t\t
      \  const char *namevar, const char *altnamevar,\n\t\t\t\t\t   const char *visibilityrule,
      bool *added_clause,\n\t\t\t\t\t   int maxparts)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6488,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6490,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6490,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6491,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6495,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6496,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6497,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6500,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6502,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6504,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6508,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6509,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6510,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6512,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6514,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6516,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6523,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6525,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6527,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6529,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6532,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6537,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6541,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6543,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6544,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6548,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:6551,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6553,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6555,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6558
      start: 6480
    functionDepth: 2
    functionLinenumber: 6480
    functionLinenumberEnd: 6558
    functionName: listPublications
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool listPublications(const char *pattern)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6571,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6575,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:6578,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6583,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6583,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6586,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6586,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6587,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:6589,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6590,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6590,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:6592,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6593,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6593,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:6596,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6599,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - buf
    - footermsg
    - as_schema
    - cont
    argTypes:
    - PQExpBuffer
    - char*
    - bool
    - printTableContent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6601
      start: 6563
    functionDepth: 1
    functionLinenumber: 6563
    functionLinenumberEnd: 6601
    functionName: addFooterToPublicationDesc
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - printfPQExpBuffer
    - printTableAddFooter
    - PQgetvalue
    - PSQLexec
    - PQgetisnull
    - PQntuples
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool addFooterToPublicationDesc(PQExpBuffer buf, const char *footermsg,\n\t\t\t\t\t\t
      \  bool as_schema, printTableContent *const cont)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6630,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6632,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6632,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6633,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6639,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6642,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6645,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6649,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6652,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6656,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6663,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6665,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6669,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6672,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6675,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6678,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6681,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6686,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6690,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6692,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6695,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6699,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6704,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6707,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6710,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6711,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6724,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6727,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6728,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:6729,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6729,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6732,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6733,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6733,1
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/describe.c:6734,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6736,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6736,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6737,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6737,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6739,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6739,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6740,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6740,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6741,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6741,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6742,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6742,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6744,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6744,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6746,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6746,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6748,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6748,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6749,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6749,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6751,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6751,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6752,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6752,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6754,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6754,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6755,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6755,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6756,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6756,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6757,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6757,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6759,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6759,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6761,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6761,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6763,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6763,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6764,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6764,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6769,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6770,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6771,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6774,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6776,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6787,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6789,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6798,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6800,1
    - Dst: addFooterToPublicationDesc
      Src: /src/postgres/src/bin/psql/describe.c:6801,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6801,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6807,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6808,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6809,1
    - Dst: addFooterToPublicationDesc
      Src: /src/postgres/src/bin/psql/describe.c:6815,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6815,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6825,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6826,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6827,1
    - Dst: addFooterToPublicationDesc
      Src: /src/postgres/src/bin/psql/describe.c:6834,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6834,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/describe.c:6840,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/describe.c:6841,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6843,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6846,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6847,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/describe.c:6852,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6853,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6854,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6855,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 128
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6857
      start: 6609
    functionDepth: 2
    functionLinenumber: 6609
    functionLinenumberEnd: 6857
    functionName: describePublications
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - validateSQLNamePattern
    - gettext_noop
    - PQgetvalue
    - pg_log_error
    - appendPQExpBufferStr
    - _
    - printfPQExpBuffer
    - printTableAddCell
    - printTableInit
    - PQntuples
    - printTableAddHeader
    - addFooterToPublicationDesc
    - PSQLexec
    - termPQExpBuffer
    - printTable
    - printTableCleanup
    - initPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describePublications(const char *pattern)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6875,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6877,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6877,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6878,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6883,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6884,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6885,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6886,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6893,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6895,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6898,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6904,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6906,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6908,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6913,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6916,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6917,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6920,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6924,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6925,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6926,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6929,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6931,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6934,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6936,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6938,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6940,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6942,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6944,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6946,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6948,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6951,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6954,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6955,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6958,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6960,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6964,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6966,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6968,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6970,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6974,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6980,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6985,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6989,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6991,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6992,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6996,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:6999,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7001,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7003,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7005
      start: 6865
    functionDepth: 2
    functionLinenumber: 6865
    functionLinenumberEnd: 7005
    functionName: describeSubscriptions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool describeSubscriptions(const char *pattern, bool verbose)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7020,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7025,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - colname
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7027
      start: 7017
    functionDepth: 1
    functionLinenumber: 7017
    functionLinenumberEnd: 7027
    functionName: printACLColumn
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 12
    functionsReached:
    - gettext_noop
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void printACLColumn(PQExpBuffer buf, const char *colname)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7045,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7047,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7047,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7048,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7066,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7067,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7068,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7069,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7070,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7071,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7072,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7074,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7081,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7082,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7083,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7090,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7095,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7102,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7110,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:7111,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7112,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7116,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:7119,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7121,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7123,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7127,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 3
    argNames:
    - access_method_pattern
    - type_pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7129
      start: 7035
    functionDepth: 2
    functionLinenumber: 7035
    functionLinenumberEnd: 7129
    functionName: listOperatorClasses
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: "bool listOperatorClasses(const char *access_method_pattern,\n\t\t\t\t\tconst
      char *type_pattern, bool verbose)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7147,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7149,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7149,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7150,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7162,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7163,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7164,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7166,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7168,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7169,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7175,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7181,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7190,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7196,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7199,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:7200,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7201,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7205,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:7208,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7210,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7212,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7216,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - access_method_pattern
    - type_pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7218
      start: 7137
    functionDepth: 2
    functionLinenumber: 7137
    functionLinenumberEnd: 7218
    functionName: listOperatorFamilies
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: "bool listOperatorFamilies(const char *access_method_pattern,\n\t\t\t\t\t
      const char *type_pattern, bool verbose)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7238,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7240,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7240,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7241,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7255,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7256,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7257,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7258,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7259,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7260,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7261,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7264,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7270,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7271,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7272,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7273,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7274,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7280,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7287,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7296,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7302,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:7308,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7309,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7313,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:7316,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7318,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7320,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7324,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 3
    argNames:
    - access_method_pattern
    - family_pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7326
      start: 7227
    functionDepth: 2
    functionLinenumber: 7227
    functionLinenumberEnd: 7326
    functionName: listOpFamilyOperators
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: "bool listOpFamilyOperators(const char *access_method_pattern,\n\t\t\t\t\t
      \ const char *family_pattern, bool verbose)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7345,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7347,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7348,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7349,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7360,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7361,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7362,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7363,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7364,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7367,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7369,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7371,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7373,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7375,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7384,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7392,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7398,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:7402,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7403,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7407,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:7410,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7412,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7414,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7418,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - access_method_pattern
    - family_pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7420
      start: 7335
    functionDepth: 2
    functionLinenumber: 7335
    functionLinenumberEnd: 7420
    functionName: listOpFamilyFunctions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - validateSQLNamePattern
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    - lengthof
    linkageType: ''
    returnType: bool
    signature: "bool listOpFamilyFunctions(const char *access_method_pattern,\n\t\t\t\t\t
      \ const char *family_pattern, bool verbose)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7433,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7435,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7435,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7436,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7439,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7440,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:7444,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7445,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7448,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7452,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:7454,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7455,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7459,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7462,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - verbose
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7466
      start: 7426
    functionDepth: 2
    functionLinenumber: 7426
    functionLinenumberEnd: 7466
    functionName: listLargeObjects
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQclear
    - _
    - printfPQExpBuffer
    - printACLColumn
    - appendPQExpBufferStr
    - printQuery
    - gettext_noop
    - initPQExpBuffer
    - PSQLexec
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listLargeObjects(bool verbose)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - query
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 259
    functionName: COMPLETE_WITH_QUERY
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_QUERY(query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: COMPLETE_WITH_QUERY_LIST
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_QUERY_LIST(query, list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 273
    functionName: COMPLETE_WITH_QUERY_PLUS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_QUERY_PLUS(query, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - query
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 276
    functionName: COMPLETE_WITH_QUERY_VERBATIM
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_QUERY_VERBATIM(query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 284
    functionName: COMPLETE_WITH_QUERY_VERBATIM_LIST
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_QUERY_VERBATIM_LIST(query, list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 290
    functionName: COMPLETE_WITH_QUERY_VERBATIM_PLUS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_QUERY_VERBATIM_PLUS(query, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - query
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 293
    functionName: COMPLETE_WITH_VERSIONED_QUERY
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_VERSIONED_QUERY(query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 301
    functionName: COMPLETE_WITH_VERSIONED_QUERY_LIST
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_VERSIONED_QUERY_LIST(query, list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 307
    functionName: COMPLETE_WITH_VERSIONED_QUERY_PLUS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_VERSIONED_QUERY_PLUS(query, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - query
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 310
    functionName: COMPLETE_WITH_SCHEMA_QUERY
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_SCHEMA_QUERY(query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 318
    functionName: COMPLETE_WITH_SCHEMA_QUERY_LIST
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_SCHEMA_QUERY_LIST(query, list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 324
    functionName: COMPLETE_WITH_SCHEMA_QUERY_PLUS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_SCHEMA_QUERY_PLUS(query, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - query
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 332
    functionName: COMPLETE_WITH_SCHEMA_QUERY_VERBATIM
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_SCHEMA_QUERY_VERBATIM(query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - query
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 335
    functionName: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 343
    functionName: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - query
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 349
    functionName: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_PLUS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_PLUS(query, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cs
    - ','
    - con
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 360
    functionName: COMPLETE_WITH_CONST
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_CONST(cs, con)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cs
    - ','
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 367
    functionName: COMPLETE_WITH_LIST_INT
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_LIST_INT(cs, list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 369
    functionName: COMPLETE_WITH_LIST
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_LIST(list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 370
    functionName: COMPLETE_WITH_LIST_CS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_LIST_CS(list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: COMPLETE_WITH
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 382
    functionName: COMPLETE_WITH_CS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_CS(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 385
    functionName: COMPLETE_WITH_ATTR
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_ATTR(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - relation
    - ','
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 394
    functionName: COMPLETE_WITH_ATTR_LIST
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_ATTR_LIST(relation, list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - relation
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 400
    functionName: COMPLETE_WITH_ATTR_PLUS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_ATTR_PLUS(relation, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 419
    functionName: COMPLETE_WITH_ENUM_VALUE
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_ENUM_VALUE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 437
    functionName: COMPLETE_WITH_TIMEZONE_NAME
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_TIMEZONE_NAME()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - function
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 446
    functionName: COMPLETE_WITH_FUNCTION_ARG
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_FUNCTION_ARG(function)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - escape
    - ','
    - force_quote
    - ','
    - list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 454
    functionName: COMPLETE_WITH_FILES_LIST
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_FILES_LIST(escape, force_quote, list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - escape
    - ','
    - force_quote
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 457
    functionName: COMPLETE_WITH_FILES
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_FILES(escape, force_quote)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - escape
    - ','
    - force_quote
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 463
    functionName: COMPLETE_WITH_FILES_PLUS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_FILES_PLUS(escape, force_quote, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - generator
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 466
    functionName: COMPLETE_WITH_GENERATOR
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPLETE_WITH_GENERATOR(generator)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pattern
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1385
    functionDepth: 0
    functionLinenumber: 1385
    functionLinenumberEnd: 1386
    functionName: MatchAnyExcept
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MatchAnyExcept(pattern)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - id
    - ','
    - kind
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1398
    functionDepth: 0
    functionLinenumber: 1398
    functionLinenumberEnd: 1401
    functionName: TCPAT
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TCPAT(id, kind, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1522
    functionDepth: 1
    functionLinenumber: 1522
    functionLinenumberEnd: 1567
    functionName: initialize_readline
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    linkageType: ''
    returnType: void
    signature: void initialize_readline(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: word_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1600,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1603,1
    - Dst: cimatch
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1625,1
    - Dst: cimatch
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1626,1
    - Dst: cimatch
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1633,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 3
    argNames:
    - pattern
    - word
    - case_sensitive
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1584
    functionDepth: 1
    functionLinenumber: 1584
    functionLinenumberEnd: 1644
    functionName: word_matches
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - cimatch
    - word_matches
    - strlen
    linkageType: ''
    returnType: bool
    signature: "bool word_matches(const char *pattern,\n\t\t\t const char *word,\n\t\t\t
      bool case_sensitive)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s1
    - ','
    - s2
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1591
    functionDepth: 0
    functionLinenumber: 1591
    functionLinenumberEnd: 1593
    functionName: cimatch
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cimatch(s1, s2, n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: word_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1665,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - case_sensitive
    - previous_words_count
    - previous_words
    - narg
    - args
    argTypes:
    - bool
    - int
    - char**
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1653
    functionDepth: 2
    functionLinenumber: 1653
    functionLinenumberEnd: 1671
    functionName: TailMatchesArray
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - word_matches
    linkageType: ''
    returnType: bool
    signature: "bool TailMatchesArray(bool case_sensitive,\n\t\t\t\t int previous_words_count,
      char **previous_words,\n\t\t\t\t int narg, const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1684,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1684,1
    - Dst: va_start
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1689,1
    - Dst: va_arg
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1691,1
    - Dst: va_end
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1692,1
    - Dst: TailMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1694,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - case_sensitive
    - previous_words_count
    - previous_words
    - narg
    argTypes:
    - bool
    - int
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1697
      start: 1676
    functionDepth: 3
    functionLinenumber: 1676
    functionLinenumberEnd: 1697
    functionName: TailMatchesImpl
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_arg
    - Assert
    - va_start
    - TailMatchesArray
    - lengthof
    linkageType: ''
    returnType: bool
    signature: "bool TailMatchesImpl(bool case_sensitive,\n\t\t\t\tint previous_words_count,
      char **previous_words,\n\t\t\t\tint narg, ...)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: word_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1715,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - case_sensitive
    - previous_words_count
    - previous_words
    - narg
    - args
    argTypes:
    - bool
    - int
    - char**
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1703
    functionDepth: 2
    functionLinenumber: 1703
    functionLinenumberEnd: 1721
    functionName: HeadMatchesArray
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - word_matches
    linkageType: ''
    returnType: bool
    signature: "bool HeadMatchesArray(bool case_sensitive,\n\t\t\t\t int previous_words_count,
      char **previous_words,\n\t\t\t\t int narg, const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1734,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1734,1
    - Dst: va_start
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1739,1
    - Dst: va_arg
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1741,1
    - Dst: va_end
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1742,1
    - Dst: HeadMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - case_sensitive
    - previous_words_count
    - previous_words
    - narg
    argTypes:
    - bool
    - int
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1726
    functionDepth: 3
    functionLinenumber: 1726
    functionLinenumberEnd: 1747
    functionName: HeadMatchesImpl
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_arg
    - Assert
    - va_start
    - HeadMatchesArray
    - lengthof
    linkageType: ''
    returnType: bool
    signature: "bool HeadMatchesImpl(bool case_sensitive,\n\t\t\t\tint previous_words_count,
      char **previous_words,\n\t\t\t\tint narg, ...)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: HeadMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1786,1
    - Dst: HeadMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1794,1
    - Dst: TailMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1800,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 5
    argNames:
    - case_sensitive
    - previous_words_count
    - previous_words
    - narg
    - args
    argTypes:
    - bool
    - int
    - char**
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1756
    functionDepth: 3
    functionLinenumber: 1756
    functionLinenumberEnd: 1808
    functionName: MatchesArray
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 3
    functionsReached:
    - TailMatchesArray
    - HeadMatchesArray
    linkageType: ''
    returnType: bool
    signature: "bool MatchesArray(bool case_sensitive,\n\t\t\t int previous_words_count,
      char **previous_words,\n\t\t\t int narg, const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1821,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1821,1
    - Dst: va_start
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1827,1
    - Dst: va_arg
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1829,1
    - Dst: va_end
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1830,1
    - Dst: MatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1832,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - case_sensitive
    - previous_words_count
    - previous_words
    - narg
    argTypes:
    - bool
    - int
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1835
      start: 1813
    functionDepth: 4
    functionLinenumber: 1813
    functionLinenumberEnd: 1835
    functionName: MatchesImpl
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_arg
    - Assert
    - va_start
    - MatchesArray
    - lengthof
    linkageType: ''
    returnType: bool
    signature: "bool MatchesImpl(bool case_sensitive,\n\t\t\tint previous_words_count,
      char **previous_words,\n\t\t\tint narg, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - s
    - c
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1840
    functionDepth: 0
    functionLinenumber: 1840
    functionLinenumberEnd: 1846
    functionName: ends_with
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool ends_with(const char *s, char c)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1958,1
    - Dst: get_previous_words
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1980,1
    - Dst: COMPLETE_WITH_LIST_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1986,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1992,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1994,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1996,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1998,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2003,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2021,1
    - Dst: MatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2029,1
    - Dst: MatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2035,1
    - Dst: HeadMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2041,1
    - Dst: HeadMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2047,1
    - Dst: TailMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2053,1
    - Dst: TailMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2059,1
    - Dst: match_previous_words
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2067,1
    - Dst: match_previous_words
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2079,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2096,1
    - Dst: COMPLETE_WITH_QUERY_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2099,1
    - Dst: COMPLETE_WITH_VERSIONED_QUERY_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2102,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2105,1
    - Dst: COMPLETE_WITH_CONST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2119,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2128,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2129,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2130,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2131,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2133,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2138
      start: 1856
    functionDepth: 4
    functionLinenumber: 1856
    functionLinenumberEnd: 2138
    functionName: psql_completion
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - pg_free
    - COMPLETE_WITH_CONST
    - pfree
    - match_previous_words
    - HeadMatchesArray
    - COMPLETE_WITH_VERSIONED_QUERY_LIST
    - COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST
    - pnstrdup
    - get_previous_words
    - COMPLETE_WITH_LIST
    - complete_from_variables
    - MatchesArray
    - TailMatchesArray
    - lengthof
    - COMPLETE_WITH_QUERY_LIST
    - COMPLETE_WITH_LIST_CS
    linkageType: ''
    returnType: char
    signature: 'char **

      psql_completion(const char *text, int start, int end)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1892
      start: 1889
    functionDepth: 0
    functionLinenumber: 1889
    functionLinenumberEnd: 1892
    functionName: TailMatches
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TailMatches(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1894
    functionDepth: 0
    functionLinenumber: 1894
    functionLinenumberEnd: 1897
    functionName: TailMatchesCS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TailMatchesCS(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1899
    functionDepth: 0
    functionLinenumber: 1899
    functionLinenumberEnd: 1902
    functionName: Matches
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Matches(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1907
      start: 1904
    functionDepth: 0
    functionLinenumber: 1904
    functionLinenumberEnd: 1907
    functionName: MatchesCS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MatchesCS(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1909
    functionDepth: 0
    functionLinenumber: 1909
    functionLinenumberEnd: 1912
    functionName: HeadMatches
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeadMatches(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1914
    functionDepth: 0
    functionLinenumber: 1914
    functionLinenumberEnd: 1917
    functionName: HeadMatchesCS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeadMatchesCS(...)
  - BBCount: 910
    BranchProfiles: []
    Callsites:
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2197,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2200,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2201,1
    - Dst: COMPLETE_WITH_GENERATOR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2209,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2212,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2213,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2218,1
    - Dst: COMPLETE_WITH_GENERATOR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2219,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2224,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2225,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2229,1
    - Dst: COMPLETE_WITH_GENERATOR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2230,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2232,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2233,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2235,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2236,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2238,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2239,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2241,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2242,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2244,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2246,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2247,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2249,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2252,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2254,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2255,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2257,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2260,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2262,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2263,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2265,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2268,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2270,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2271,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2273,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2276,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2277,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2279,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2280,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2281,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2283,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2284,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2287,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2288,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2292,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2293,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2295,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2296,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2297,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2298,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2299,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2300,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2301,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2310,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2311,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2312,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2313,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2314,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2315,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2316,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2317,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2318,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2320,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2321,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2323,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2324,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2325,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2326,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2327,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2328,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2329,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2330,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2331,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2332,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2334,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2335,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2336,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2336,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2337,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2338,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2338,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2339,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2340,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2341,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2345,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2346,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2348,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2349,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2352,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2353,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2355,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2356,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2358,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2359,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2361,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2362,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2364,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2365,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2372,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2373,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2375,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2380,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2382,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2384,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2386,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2389,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2390,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2393,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2394,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2397,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2398,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2401,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2402,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2407,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2409,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2410,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2414,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2415,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2418,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2419,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2422,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2423,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2426,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2427,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2430,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2431,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2434,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2435,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2443,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2444,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2447,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2448,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2451,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2452,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2455,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2456,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2459,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2461,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2462,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2466,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2467,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2470,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2471,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2473,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2474,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2477,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2478,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2483,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2484,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2487,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2488,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2491,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2492,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2493,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2494,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2496,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2497,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2499,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2501,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_VERBATIM
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2502,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2505,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2506,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2508,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2509,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2511,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2516,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2517,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2519,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2520,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2522,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2523,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2529,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2530,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2536,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2537,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2538,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2539,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2542,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2543,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2546,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2547,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2550,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2551,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2555,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2556,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2557,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2564,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2565,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2567,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2568,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2570,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2571,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2573,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2574,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2577,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2579,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2580,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2584,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2586,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2594,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2595,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2597,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2598,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2600,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2601,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2603,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2605,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2607,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2609,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2611,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2613,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2616,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2618,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2620,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2622,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2623,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2626,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2627,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2629,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2630,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2632,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2633,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2635,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2637,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2638,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2641,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2642,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2644,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2645,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2648,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2649,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2651,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2652,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2656,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2657,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2659,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2660,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2662,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2663,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2665,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2666,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2668,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2669,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2671,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2672,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2673,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2674,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2676,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2677,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2679,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2680,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2682,1
    - Dst: COMPLETE_WITH_ATTR_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2683,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2684,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2685,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2687,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2688,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2689,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2691,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2691,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2692,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2694,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2694,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2695,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2697,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2698,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2700,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2701,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2703,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2704,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2705,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2706,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2707,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2708,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2709,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2710,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2713,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2714,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2718,1
    - Dst: COMPLETE_WITH_ATTR_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2719,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2720,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2721,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2723,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2723,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2724,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2726,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2726,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2727,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2729,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2730,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2732,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2733,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2736,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2737,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2739,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2740,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2742,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2744,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2745,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2748,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2749,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2751,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2752,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2755,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2756,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2758,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2759,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2762,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2763,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2764,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2765,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2766,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2767,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2768,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2769,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2770,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2770,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2771,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2772,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2773,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2776,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2777,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2780,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2782,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2783,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2787,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2788,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2791,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2792,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2794,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2795,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2798,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2799,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2801,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2803,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2804,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2808,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2809,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2815,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2816,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2824,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2829,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2833,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2834,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2834,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2835,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2837,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2838,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2840,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2841,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2842,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2843,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2845,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2846,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2847,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2848,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2849,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2851,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2853,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2854,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2857,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2859,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2860,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2863,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2866,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2867,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2870,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2873,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2874,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2877,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2878,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2880,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2881,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2882,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2884,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2885,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2887,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2889,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2890,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2892,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2894,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2895,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2897,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2899,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2900,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2903,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2904,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2906,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2907,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2909,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2910,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2912,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2913,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2914,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2916,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2917,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2919,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2921,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2922,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2926,1
    - Dst: COMPLETE_WITH_ATTR_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2927,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2930,1
    - Dst: COMPLETE_WITH_ATTR_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2931,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2932,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2933,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2936,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2936,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2937,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2940,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2940,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2941,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2944,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2945,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2947,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2948,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2950,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2952,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2953,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2956,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2958,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2959,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2962,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2963,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2964,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2966,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2967,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2968,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2970,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2971,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2972,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2974,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2975,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2976,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2977,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2978,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2980,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2981,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2982,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2987,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2988,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2989,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2991,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2992,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2993,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2995,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2996,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2997,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2999,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3000,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3001,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3003,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3004,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3005,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3007,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3008,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3009,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3011,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3012,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3013,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3015,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3016,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3021,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3022,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3023,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3024,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3025,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3026,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3028,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3029,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3032,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3033,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3040,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3041,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3048,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3049,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3051,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3052,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3054,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3055,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3057,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3058,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3059,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3061,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3062,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3064,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3065,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3066,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3067,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3068,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3069,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3075,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3076,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3078,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3079,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3080,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3081,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3087,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3089,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3090,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3092,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3093,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3096,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3097,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3100,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3102,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3103,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3105,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3106,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3109,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3110,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3113,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3114,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3116,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3117,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3119,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3120,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3124,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3125,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3126,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3127,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3128,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3129,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3130,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3131,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3136,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3137,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3141,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3142,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3144,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3145,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3147,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3148,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3150,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3151,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3157,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3158,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3160,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3161,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3163,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3164,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3166,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3167,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3169,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3170,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3172,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3173,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3175,1
    - Dst: COMPLETE_WITH_ENUM_VALUE
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3176,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3178,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3179,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3181,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3182,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3186,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3187,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3189,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3190,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3192,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3193,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3199,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3200,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3202,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3203,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3205,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3206,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3213,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3213,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3214,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3215,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3216,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3218,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3219,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3221,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3223,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3224,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3225,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3228,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3229,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3231,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3232,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3234,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3235,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3237,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3238,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3240,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3241,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3242,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3243,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3245,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3246,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3247,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3248,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3250,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3251,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3252,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3253,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3260,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3260,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3261,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3262,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3263,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3264,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3265,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3268,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3269,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3272,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3273,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3275,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3276,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3277,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3279,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3279,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3280,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3282,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3283,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3285,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3286,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3288,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3289,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3291,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3292,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3299,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3299,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3300,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3304,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3305,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3306,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3307,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3318,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3319,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3320,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3321,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3322,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3323,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3324,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3326,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3327,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3330,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3331,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3332,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3333,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3334,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3335,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3336,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3337,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3338,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3339,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3340,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3341,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3342,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3343,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3344,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3346,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3347,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3349,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3350,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3351,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3352,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3353,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3354,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3355,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3357,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3358,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3360,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3361,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3362,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3363,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3364,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3365,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3366,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3367,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3368,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3369,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3370,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3371,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3372,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3373,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3374,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3376,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3377,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3379,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3380,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3381,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3383,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3384,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3386,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3386,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3387,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3387,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3388,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3388,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3389,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3389,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3390,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3398,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3399,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3401,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3402,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3404,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3405,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3407,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3409,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3412,1
    - Dst: COMPLETE_WITH_FILES_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3413,1
    - Dst: COMPLETE_WITH_FILES_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3415,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3420,1
    - Dst: COMPLETE_WITH_FILES_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3421,1
    - Dst: COMPLETE_WITH_FILES_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3423,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3428,1
    - Dst: COMPLETE_WITH_FILES
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3429,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3429,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3433,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3433,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3434,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3435,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3438,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3438,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3439,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3440,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3443,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3443,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3444,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3446,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3446,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3447,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3455,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3455,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3457,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3458,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3460,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3464,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3465,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3468,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3469,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3472,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3473,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3476,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3477,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3480,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3481,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3488,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3488,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3489,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3490,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3494,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3495,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3497,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3498,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3500,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3501,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3504,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3505,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3506,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3507,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3508,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3510,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3511,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3513,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3514,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3515,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3516,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3520,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3521,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3527,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3528,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3529,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3530,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3533,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3534,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3535,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3536,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3537,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3538,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3540,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3541,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3545,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3546,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3548,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3549,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3551,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3553,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3554,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3558,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3559,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3562,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3563,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3566,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3567,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3571,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3572,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3578,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3579,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3586,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3587,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3588,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3594,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3595,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3598,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3599,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3600,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3606,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3607,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3608,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3609,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3610,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3611,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3613,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3614,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3616,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3617,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3618,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3619,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3620,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3621,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3622,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3623,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3626,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3627,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3631,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3632,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3634,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3635,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3637,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3638,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3640,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3641,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3647,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3648,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3650,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3651,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3653,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3654,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3656,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3657,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3659,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3660,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3662,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3663,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3666,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3667,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3673,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3674,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3680,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3681,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3687,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3688,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3694,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3695,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3701,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3702,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3709,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3710,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3713,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3714,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3715,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3716,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3717,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3718,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3719,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3720,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3721,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3722,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3723,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3724,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3725,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3725,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3726,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3727,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3727,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3728,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3729,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3729,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3730,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3733,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3734,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3735,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3736,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3737,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3738,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3739,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3740,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3741,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3742,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3743,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3744,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3745,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3746,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3747,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3747,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3748,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3749,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3749,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3750,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3751,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3752,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3753,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3753,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3754,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3756,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3757,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3763,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3764,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3765,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3766,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3767,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3768,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3773,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3774,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3777,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3777,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3778,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3780,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3781,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3785,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3786,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3787,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3789,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3790,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3791,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3797,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3798,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3799,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3801,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3802,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3804,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3805,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3808,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3809,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3811,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3812,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3813,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3815,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3816,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3817,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3818,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3819,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3822,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3823,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3824,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3826,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3827,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3828,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3829,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3830,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3831,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3834,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3835,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3838,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3839,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3840,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3841,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3842,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3843,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3844,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3845,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3849,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3850,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3852,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3853,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3855,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3856,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3858,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3859,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3861,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3862,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3864,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3865,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3866,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3868,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3869,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3870,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3872,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3873,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3874,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3875,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3876,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3878,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3879,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3880,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3881,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3882,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3883,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3886,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3887,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3888,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3890,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3891,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3892,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3894,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3895,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3898,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3899,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3901,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3902,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3905,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3906,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3907,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3908,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3911,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3912,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3913,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3914,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3915,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3916,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3917,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3918,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3919,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3920,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3921,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3923,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3924,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3928,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3929,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3930,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3931,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3932,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3933,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3934,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3935,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3936,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3941,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3946,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3947,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3949,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3950,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3964,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3965,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3966,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3972,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3973,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3974,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3976,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3977,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3978,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3984,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3985,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3986,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3987,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3988,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3995,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3996,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3997,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4003,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4004,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4005,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4006,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4008,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4012,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4015,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4018,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4020,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4022,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4024,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4028,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4030,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4032,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4034,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4036,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4037,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4039,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4041,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4042,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4044,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4046,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4048,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4052,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4054,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4056,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4058,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4060,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4062,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4066,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4068,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4070,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4072,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4074,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4076,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4078,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4080,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4082,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4084,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4088,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4090,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4092,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4094,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4096,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4097,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4099,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4101,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4102,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4104,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4106,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4108,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4112,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4114,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4116,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4118,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4122,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4124,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4131,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4133,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4137,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4139,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4141,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4143,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4145,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4148,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4149,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4150,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4159,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4161,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4170,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4171,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4174,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4175,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4176,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4177,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4178,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4180,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4181,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4182,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4182,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4183,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4185,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4186,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4187,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4189,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4190,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4196,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4196,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4197,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4198,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4198,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4199,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4201,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4203,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4204,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4207,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4207,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4208,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4209,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4209,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4210,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4215,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4216,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4217,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4219,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4220,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4221,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4223,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4224,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4225,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4226,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4227,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4228,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4229,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4230,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4231,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4232,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4233,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4234,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4236,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4237,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4238,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4240,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4241,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4242,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4245,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4246,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4248,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4249,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4255,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4256,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4258,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4259,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4265,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4266,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4267,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4270,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4271,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4273,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4274,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4276,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4277,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4285,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4288,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4290,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4292,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4295,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4297,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4299,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4300,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4303,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4304,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4313,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4314,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4324,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4325,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4326,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4327,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4328,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4329,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4331,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4332,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4338,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4339,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4341,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4342,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4344,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4345,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4349,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4350,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4352,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4353,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4355,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4356,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4358,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4359,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4361,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4362,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4364,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4365,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4367,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4368,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4370,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4371,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4374,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4375,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4378,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4379,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4383,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4386,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4387,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4388,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4389,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4390,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4391,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4392,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4393,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4394,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4397,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4398,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4399,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4400,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4401,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4402,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4403,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4404,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4405,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4405,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4406,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4409,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4410,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4412,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4413,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4414,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4415,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4416,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4417,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4420,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4421,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4422,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4423,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4424,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4425,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4428,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4429,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4430,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4431,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4432,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4433,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4436,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4437,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4440,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4441,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4442,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4444,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4445,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4447,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4448,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4451,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4452,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4453,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4454,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4457,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4458,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4459,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4460,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4463,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4464,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4466,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4467,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4469,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4471,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4472,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4474,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4475,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4478,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4479,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4480,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4481,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4484,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4485,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4486,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4488,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4489,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4491,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4492,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4495,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4496,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4497,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4498,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4499,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4500,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4501,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4503,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4504,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4506,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4507,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4510,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4511,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4517,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4518,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4520,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4521,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4528,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4528,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4529,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4532,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4533,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4534,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4535,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4536,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4537,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4539,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4540,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4542,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4543,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4544,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4545,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4554,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4555,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4572,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4573,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4583,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4584,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4585,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4586,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4590,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4591,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4595,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4596,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4597,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4599,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4600,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4603,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4604,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4605,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4608,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4609,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4616,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4617,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4623,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4625,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4626,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4627,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4630,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4631,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4636,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4637,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4639,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4640,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4646,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4647,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4648,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4649,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4652,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4653,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4654,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4656,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4657,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4658,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4659,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4660,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4661,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4662,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4664,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4665,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4666,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4667,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4668,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4670,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4671,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4672,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4674,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4675,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4676,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4677,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4678,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4684,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4685,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4687,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4688,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4689,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4690,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4692,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4702,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4703,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4709,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4710,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4712,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4735,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4736,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4737,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4749,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4750,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4752,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4753,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4754,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4755,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4756,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4757,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4758,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4759,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4760,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4761,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4762,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4764,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4765,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4767,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4769,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4770,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4771,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4772,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4773,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4774,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4775,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4776,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4777,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4778,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4779,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4780,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4781,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4782,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4783,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4784,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4786,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4793,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4794,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4795,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4801,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4802,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4807,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4808,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4812,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4813,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4814,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4815,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4816,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4817,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4820,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4821,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4824,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4825,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4827,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4828,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4828,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4830,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4831,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4833,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4837,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4838,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4840,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4841,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4843,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4847,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4848,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4850,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4851,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4853,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4857,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4858,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4860,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4861,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4863,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4867,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4868,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4870,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4871,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4873,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4877,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4878,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4880,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4881,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4883,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4887,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4888,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4889,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4890,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4891,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4892,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4895,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4896,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4899,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4900,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4901,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4902,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4903,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4904,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4905,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4906,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4907,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4908,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4909,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4910,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4911,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4912,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4913,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4917,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4918,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4920,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4921,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4923,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4924,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4926,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4927,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4933,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4934,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4940,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4941,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4942,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4945,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4946,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4949,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4950,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4953,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4953,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4954,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4958,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4959,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4961,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4962,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4964,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4964,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4965,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4969,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4969,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4970,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4970,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4971,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4972,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4973,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4976,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4977,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4987,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4988,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4991,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4992,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4996,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4997,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5000,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5001,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5002,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5003,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5006,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5007,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5008,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5009,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5009,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5010,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5016,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5017,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5018,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5019,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5025,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5026,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5027,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5028,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5029,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5030,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5031,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5032,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5032,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5033,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5033,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5034,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5034,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5035,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5038,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5039,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5040,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5041,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5042,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5043,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5050,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5051,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5052,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5053,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5053,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5053,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5054,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5054,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5054,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5055,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5055,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5055,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5056,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5057,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5058,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5059,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5060,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5061,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5062,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5063,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5069,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5070,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5071,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5074,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5075,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5078,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5079,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5085,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5086,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5087,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5092,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5093,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5094,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5097,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5098,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5101,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5102,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5105,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5106,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5110,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5111,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5112,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5113,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5116,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5117,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5126,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5127,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5128,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5129,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5130,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5131,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5132,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5133,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5134,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5135,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5138,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5139,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5140,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5141,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5142,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5143,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5145,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5146,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5147,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5148,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5149,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5150,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5151,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5152,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5153,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5154,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5155,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5156,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5157,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5158,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5161,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5162,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5163,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5164,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5165,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5166,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5168,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5169,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5170,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5172,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5173,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5174,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5176,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5177,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5178,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5180,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5181,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5182,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5183,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5184,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5185,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5186,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5187,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5188,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5189,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5190,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5191,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5192,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5193,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5200,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5200,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5201,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5202,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5203,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5207,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5208,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5210,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5211,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5213,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5213,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5214,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5215,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5215,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5216,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5217,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5218,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5220,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5221,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5228,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5230,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5231,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5233,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5234,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5241,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5241,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5242,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5243,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5244,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5248,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5249,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5250,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5251,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5252,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5253,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5254,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5255,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5256,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5261,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5262,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5269,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5270,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5271,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5272,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5279,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5280,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5283,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5284,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5286,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5287,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5288,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5289,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5290,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5291,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5292,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5293,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5294,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5295,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5296,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5297,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5298,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5299,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5300,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5301,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5302,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5303,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5304,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5305,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5306,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5307,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5308,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5309,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5310,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5311,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5312,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5313,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5314,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5315,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5316,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5318,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5319,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5322,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5323,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5325,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5326,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5328,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5329,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5331,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5332,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5335,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5336,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5338,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5339,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5345,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5345,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5346,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5352,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5353,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5356,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5357,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5361,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5364,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5369,1
    - Dst: COMPLETE_WITH_TIMEZONE_NAME
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5370,1
    - Dst: get_guctype
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5374,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5383,1
    - Dst: set_completion_reference_verbatim
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5385,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5386,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5389,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5390,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5393,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5395,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5401,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5402,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5405,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5406,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5409,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5410,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5411,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5412,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5415,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5416,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5418,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5419,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5421,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5422,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5423,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5424,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5425,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5426,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5427,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5428,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5431,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5432,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5436,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5437,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5439,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5440,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5442,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5443,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5445,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5446,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5448,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5449,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5451,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5452,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5454,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5455,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5457,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5457,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5458,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5461,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5462,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5463,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5464,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5469,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5470,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5471,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5472,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5473,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5474,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5480,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5481,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5488,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5489,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5496,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5496,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5497,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5502,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5503,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5504,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5505,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5507,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5508,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5510,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5511,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5516,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5517,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5521,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5522,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5525,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5526,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5528,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5530,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5531,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5532,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5543,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5544,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5545,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5546,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5547,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5550,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5551,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5552,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5553,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5565,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5566,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5568,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5568,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5569,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5570,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5571,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5580,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5581,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5585,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5586,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5590,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5590,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5591,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5594,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5595,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5596,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5596,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5597,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5598,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5599,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5599,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5600,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5601,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5602,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5602,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5603,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5604,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5605,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5606,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5607,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5608,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5609,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5610,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5611,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5614,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5615,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5616,1
    - Dst: COMPLETE_WITH_TIMEZONE_NAME
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5617,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5621,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5622,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5623,1
    - Dst: recognized_connection_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5625,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5626,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5628,1
    - Dst: recognized_connection_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5630,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5631,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5633,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5634,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5635,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5636,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5637,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5638,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5639,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5640,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5641,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5642,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5643,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5644,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5645,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5646,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5647,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5648,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5649,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5650,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5651,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5652,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5653,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5654,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5655,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5656,1
    - Dst: HeadMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5657,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5658,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5660,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5661,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5662,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5663,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5664,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5665,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5667,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5668,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5670,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5671,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5672,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5673,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5674,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5675,1
    - Dst: HeadMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5677,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5678,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5679,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5679,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5680,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5681,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5682,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5683,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5684,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5685,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5686,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5687,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5688,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5689,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5690,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5691,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5692,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5693,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5694,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5695,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5696,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5697,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5698,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5699,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5700,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5701,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5702,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5703,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5704,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5705,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5706,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5707,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5708,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5709,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5710,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5711,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5712,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5715,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5716,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5718,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5719,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5720,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5721,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5723,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5724,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5725,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5726,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5727,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5729,1
    - Dst: COMPLETE_WITH_GENERATOR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5730,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5731,1
    - Dst: COMPLETE_WITH_GENERATOR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5732,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5739,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5741,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5742,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5743,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5744,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5745,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5746,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5747,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5748,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5749,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5750,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5751,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5752,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5753,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5754,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5755,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5756,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5757,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5758,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5760,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5762,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5763,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5764,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5765,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5766,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5767,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5769,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5769,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5770,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5771,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5772,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5773,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5774,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5785,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5787,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5788,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5791,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5792,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5793,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5794,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5795,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5796,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5797,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5800,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5802,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5803,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5804,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5805,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5806,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5808,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5810,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5811,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5812,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5814,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5815,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5816,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5817,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5818,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5819,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5821,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5822,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5823,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5824,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5825,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5826,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5828,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5829,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5830,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5831,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5832,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5835,1
    - Dst: COMPLETE_WITH_FILES
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5836,1
    CyclomaticComplexity: 1157
    EdgeCount: 1157
    ICount: 1932
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5842
      start: 2178
    functionDepth: 1
    functionLinenumber: 2178
    functionLinenumberEnd: 5842
    functionName: match_previous_words
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - COMPLETE_WITH_FILES_PLUS
    - strcmp
    - COMPLETE_WITH_QUERY_VERBATIM_PLUS
    - COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
    - complete_from_variables
    - COMPLETE_WITH_TIMEZONE_NAME
    - ends_with
    - COMPLETE_WITH_FUNCTION_ARG
    - COMPLETE_WITH_QUERY_PLUS
    - COMPLETE_WITH_QUERY_VERBATIM
    - COMPLETE_WITH_LIST
    - Matches
    - COMPLETE_WITH_FILES
    - COMPLETE_WITH_CS
    - COMPLETE_WITH_SCHEMA_QUERY_VERBATIM
    - COMPLETE_WITH_ATTR_PLUS
    - TailMatches
    - set_completion_reference_verbatim
    - COMPLETE_WITH
    - HeadMatches
    - COMPLETE_WITH_ATTR
    - TailMatchesCS
    - HeadMatchesCS
    - get_guctype
    - COMPLETE_WITH_QUERY
    - MatchAnyExcept
    - recognized_connection_string
    - COMPLETE_WITH_SCHEMA_QUERY_PLUS
    - COMPLETE_WITH_SCHEMA_QUERY
    - COMPLETE_WITH_GENERATOR
    - free
    - set_completion_reference
    - COMPLETE_WITH_ENUM_VALUE
    linkageType: ''
    returnType: char
    signature: "char **\nmatch_previous_words(int pattern_id,\n\t\t\t\t\t const char
      *text, int start, int end,\n\t\t\t\t\t char **previous_words, int previous_words_count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5874,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5880,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5882,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - text
    - state
    - excluded
    argTypes:
    - char*
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5886
      start: 5863
    functionDepth: 1
    functionLinenumber: 5863
    functionLinenumberEnd: 5886
    functionName: create_or_drop_command_generator
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - strlen
    - pg_strncasecmp
    - pg_strdup_keyword_case
    linkageType: ''
    returnType: char
    signature: 'char *

      create_or_drop_command_generator(const char *text, int state, uint32 excluded)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_or_drop_command_generator
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5896
      start: 5892
    functionDepth: 2
    functionLinenumber: 5892
    functionLinenumberEnd: 5896
    functionName: create_command_generator
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - create_or_drop_command_generator
    linkageType: ''
    returnType: char
    signature: 'char *

      create_command_generator(const char *text, int state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_or_drop_command_generator
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5905
      start: 5901
    functionDepth: 2
    functionLinenumber: 5901
    functionLinenumberEnd: 5905
    functionName: drop_command_generator
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 2
    functionsReached:
    - create_or_drop_command_generator
    linkageType: ''
    returnType: char
    signature: 'char *

      drop_command_generator(const char *text, int state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_or_drop_command_generator
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5914
      start: 5910
    functionDepth: 2
    functionLinenumber: 5910
    functionLinenumberEnd: 5914
    functionName: alter_command_generator
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - create_or_drop_command_generator
    linkageType: ''
    returnType: char
    signature: 'char *

      alter_command_generator(const char *text, int state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _complete_from_query
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5927
      start: 5921
    functionDepth: 1
    functionLinenumber: 5921
    functionLinenumberEnd: 5927
    functionName: complete_from_query
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - _complete_from_query
    linkageType: ''
    returnType: char
    signature: 'char *

      complete_from_query(const char *text, int state)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _complete_from_query
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5941,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5943
      start: 5929
    functionDepth: 1
    functionLinenumber: 5929
    functionLinenumberEnd: 5943
    functionName: complete_from_versioned_query
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - _complete_from_query
    linkageType: ''
    returnType: char
    signature: 'char *

      complete_from_versioned_query(const char *text, int state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _complete_from_query
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5951
      start: 5945
    functionDepth: 1
    functionLinenumber: 5945
    functionLinenumberEnd: 5951
    functionName: complete_from_schema_query
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - _complete_from_query
    linkageType: ''
    returnType: char
    signature: 'char *

      complete_from_schema_query(const char *text, int state)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _complete_from_query
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5965,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5967
      start: 5953
    functionDepth: 1
    functionLinenumber: 5953
    functionLinenumberEnd: 5967
    functionName: complete_from_versioned_schema_query
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - _complete_from_query
    linkageType: ''
    returnType: char
    signature: 'char *

      complete_from_versioned_schema_query(const char *text, int state)'
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6046,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6052,1
    - Dst: parse_identifier
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6057,1
    - Dst: make_like_pattern
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6069,1
    - Dst: escape_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6072,1
    - Dst: escape_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6077,1
    - Dst: escape_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6082,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6086,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6090,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6100,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6102,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6103,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6108,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6110,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6112,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6114,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6118,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6122,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6123,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6126,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6131,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6143,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6145,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6147,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6158,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6168,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6169,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6183,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6185,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6186,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6191,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6193,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6196,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6198,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6201,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6205,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6206,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6209,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6214,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6222,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6224,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6230,1
    - Dst: exec_query
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6234,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6237,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6238,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6239,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6240,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6241,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6242,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6243,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6247,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6251,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6256,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6257,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6258,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6259,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6260,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6267,1
    - Dst: identifier_needs_quotes
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6279,1
    - Dst: identifier_needs_quotes
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6281,1
    - Dst: requote_identifier
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6291,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6299,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6311,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6311,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6314,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6329,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6329,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6332,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6347,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 144
    argCount: 6
    argNames:
    - simple_query
    - schema_query
    - keywords
    - verbatim
    - text
    - state
    argTypes:
    - char*
    - SchemaQuery*
    - char**
    - bool
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6350
      start: 6011
    functionDepth: 1
    functionLinenumber: 6011
    functionLinenumberEnd: 6350
    functionName: _complete_from_query
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 4
    functionsReached:
    - PQclear
    - strcmp
    - make_like_pattern
    - parse_identifier
    - PQgetvalue
    - appendPQExpBufferStr
    - PQnfields
    - identifier_needs_quotes
    - Assert
    - PQresultStatus
    - PQntuples
    - exec_query
    - escape_string
    - strlen
    - pg_strdup_keyword_case
    - pg_free
    - termPQExpBuffer
    - PQgetisnull
    - pg_strdup
    - requote_identifier
    - pg_strncasecmp
    - initPQExpBuffer
    - strncmp
    - appendPQExpBuffer
    linkageType: ''
    returnType: char
    signature: "char *\n_complete_from_query(const char *simple_query,\n\t\t\t\t\t
      const SchemaQuery *schema_query,\n\t\t\t\t\t const char *const *keywords,\n\t\t\t\t\t
      bool verbatim,\n\t\t\t\t\t const char *text, int state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parse_identifier
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - word
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6367
      start: 6358
    functionDepth: 1
    functionLinenumber: 6358
    functionLinenumberEnd: 6367
    functionName: set_completion_reference
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - parse_identifier
    linkageType: ''
    returnType: void
    signature: void set_completion_reference(const char *word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - word
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6378
      start: 6373
    functionDepth: 1
    functionLinenumber: 6373
    functionLinenumberEnd: 6378
    functionName: set_completion_reference_verbatim
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void set_completion_reference_verbatim(const char *word)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6396,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6402,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6410,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6413,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6417,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6420,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6427,1
    - Dst: complete_from_list
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6440,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6445
      start: 6386
    functionDepth: 1
    functionLinenumber: 6386
    functionLinenumberEnd: 6445
    functionName: complete_from_list
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - Assert
    - pg_strncasecmp
    - strncmp
    - strlen
    - pg_strdup_keyword_case
    - complete_from_list
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      complete_from_list(const char *text, int state)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6469,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6473,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6484
      start: 6466
    functionDepth: 1
    functionLinenumber: 6466
    functionLinenumberEnd: 6484
    functionName: complete_from_const
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strdup_keyword_case
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      complete_from_const(const char *text, int state)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6499,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - varnames
    - nvars
    - maxvars
    - varname
    - prefix
    - suffix
    argTypes:
    - char***
    - int*
    - int*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6503
      start: 6491
    functionDepth: 1
    functionLinenumber: 6491
    functionLinenumberEnd: 6503
    functionName: append_variable_names
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - psprintf
    - pg_realloc_array
    linkageType: ''
    returnType: void
    signature: "void append_variable_names(char ***varnames, int *nvars,\n\t\t\t\t\t
      \ int *maxvars, const char *varname,\n\t\t\t\t\t  const char *prefix, const
      char *suffix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6524,1
    - Dst: append_variable_names
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6530,1
    - Dst: COMPLETE_WITH_LIST_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6535,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6538,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6539,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6542
      start: 6513
    functionDepth: 2
    functionLinenumber: 6513
    functionLinenumberEnd: 6542
    functionName: complete_from_variables
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 2
    functionsReached:
    - pg_free
    - append_variable_names
    - pg_malloc_array
    - COMPLETE_WITH_LIST_CS
    linkageType: ''
    returnType: char
    signature: "char **\ncomplete_from_variables(const char *text, const char *prefix,
      const char *suffix,\n\t\t\t\t\t\tbool need_value)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _complete_from_files
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6569,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6588,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6588,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6591,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6596
      start: 6553
    functionDepth: 1
    functionLinenumber: 6553
    functionLinenumberEnd: 6596
    functionName: complete_from_files
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - _complete_from_files
    - strlen
    - pg_strncasecmp
    - pg_strdup_keyword_case
    linkageType: ''
    returnType: char
    signature: 'char *

      complete_from_files(const char *text, int state)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rl_filename_completion_function
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6639,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6656,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6661,1
    - Dst: rl_filename_completion_function
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6666,1
    - Dst: stat
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6670,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6671,1
    - Dst: quote_if_needed
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6674,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6679,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6690,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6692,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6701
      start: 6611
    functionDepth: 1
    functionLinenumber: 6611
    functionLinenumberEnd: 6701
    functionName: _complete_from_files
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - quote_if_needed
    - rl_filename_completion_function
    - Assert
    - stat
    - free
    - strlen
    - strtokx
    - S_ISDIR
    linkageType: ''
    returnType: char
    signature: 'char *

      _complete_from_files(const char *text, int state)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6718,1
    - Dst: islower
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6722,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6723,1
    - Dst: pg_tolower
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6726,1
    - Dst: pg_toupper
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6731,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 2
    argNames:
    - s
    - ref
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6735
      start: 6711
    functionDepth: 1
    functionLinenumber: 6711
    functionLinenumberEnd: 6735
    functionName: pg_strdup_keyword_case
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 5
    functionsReached:
    - islower
    - isalpha
    - pg_toupper
    - pg_tolower
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_strdup_keyword_case(const char *s, const char *ref)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6749,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6751,1
    - Dst: PQescapeStringConn
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - text
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6755
      start: 6743
    functionDepth: 1
    functionLinenumber: 6743
    functionLinenumberEnd: 6755
    functionName: escape_string
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - PQescapeStringConn
    - pg_malloc
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      escape_string(const char *text)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6770,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6770,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6777,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6783,1
    - Dst: escape_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6794,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6795,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - word
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6797
      start: 6766
    functionDepth: 1
    functionLinenumber: 6766
    functionLinenumberEnd: 6797
    functionName: make_like_pattern
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - PQmblenBounded
    - IS_HIGHBIT_SET
    - escape_string
    - strlen
    - pg_free
    - pg_malloc
    linkageType: ''
    returnType: char
    signature: 'char *

      make_like_pattern(const char *word)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6817,1
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6818,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6826,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6853,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6855,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6860,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6868,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6887,1
    - Dst: isupper
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6887,1
    - Dst: tolower
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6888,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 5
    argNames:
    - ident
    - schemaname
    - objectname
    - schemaquoted
    - objectquoted
    argTypes:
    - char*
    - char**
    - char**
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6897
      start: 6812
    functionDepth: 1
    functionLinenumber: 6812
    functionLinenumberEnd: 6897
    functionName: parse_identifier
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 2
    functionsReached:
    - PQmblenBounded
    - tolower
    - IS_HIGHBIT_SET
    - isupper
    - free
    - strlen
    - pg_malloc
    - pg_encoding_max_length
    linkageType: ''
    returnType: void
    signature: "void parse_identifier(const char *ident,\n\t\t\t\t char **schemaname,
      char **objectname,\n\t\t\t\t bool *schemaquoted, bool *objectquoted)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6925,1
    - Dst: identifier_needs_quotes
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6927,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6940,1
    - Dst: identifier_needs_quotes
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6942,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6953,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 4
    argNames:
    - schemaname
    - objectname
    - quote_schema
    - quote_object
    argTypes:
    - char*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6984
      start: 6911
    functionDepth: 1
    functionLinenumber: 6911
    functionLinenumberEnd: 6984
    functionName: requote_identifier
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    - strlen
    - identifier_needs_quotes
    linkageType: ''
    returnType: char
    signature: "char *\nrequote_identifier(const char *schemaname, const char *objectname,\n\t\t\t\t
      \  bool quote_schema, bool quote_object)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7001,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7001,1
    - Dst: ScanKeywordLookup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7013,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - ident
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7019
      start: 6993
    functionDepth: 1
    functionLinenumber: 6993
    functionLinenumberEnd: 7019
    functionName: identifier_needs_quotes
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 2
    functionsReached:
    - strspn
    - strlen
    - ScanKeywordLookup
    linkageType: ''
    returnType: bool
    signature: bool identifier_needs_quotes(const char *ident)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQstatus
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7031,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7034,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7036,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7044,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7045,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7047,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7052
      start: 7026
    functionDepth: 1
    functionLinenumber: 7026
    functionLinenumberEnd: 7052
    functionName: exec_query
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - PQclear
    - PQexec
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    - PQstatus
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      exec_query(const char *query)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7083,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7084,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7086,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7102,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7103,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7112,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7133,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7163,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7171,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7181,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7185
      start: 7066
    functionDepth: 1
    functionLinenumber: 7066
    functionLinenumberEnd: 7185
    functionName: get_previous_words
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - memcpy
    - strchr
    - isspace
    - pg_malloc_array
    - pg_free
    - pg_malloc
    linkageType: ''
    returnType: char
    signature: 'char **

      get_previous_words(int point, char **buffer, int *nwords)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: escape_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7201,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7203,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7204,1
    - Dst: exec_query
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7209,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7210,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7211,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7213,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7213,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7214,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7214,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - varname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7219
      start: 7193
    functionDepth: 2
    functionLinenumber: 7193
    functionLinenumberEnd: 7219
    functionName: get_guctype
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - exec_query
    - PQclear
    - escape_string
    - PQgetvalue
    - initPQExpBuffer
    - free
    - PQresultStatus
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      get_guctype(const char *varname)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: quote_if_needed
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7236,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7241,1
    - Dst: stat
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7256,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7257,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7259,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7261,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 12
    argCount: 3
    argNames:
    - fname
    - match_type
    - quote_pointer
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7283
      start: 7229
    functionDepth: 1
    functionLinenumber: 7229
    functionLinenumberEnd: 7283
    functionName: quote_file_name
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - Assert
    - stat
    - pg_strdup
    - strlen
    - quote_if_needed
    - S_ISDIR
    linkageType: ''
    returnType: char
    signature: 'char *

      quote_file_name(char *fname, int match_type, char *quote_pointer)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7302,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7302,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7305,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7306,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7308,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7311,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7317,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:7322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - fname
    - quote_char
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7323
      start: 7290
    functionDepth: 1
    functionLinenumber: 7290
    functionLinenumberEnd: 7323
    functionName: dequote_file_name
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - Assert
    - strlen
    - pg_free
    - strtokx
    - pg_malloc
    - strcpy
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      dequote_file_name(char *fname, int quote_char)'
  - BBCount: 90
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/prompt.c:104,1
    - Dst: memset
      Src: /src/postgres/src/bin/psql/prompt.c:107,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:115,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/prompt.c:115,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/prompt.c:122,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/prompt.c:122,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/prompt.c:122,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/prompt.c:123,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/prompt.c:123,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/prompt.c:123,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:124,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:126,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/prompt.c:126,1
    - Dst: memset
      Src: /src/postgres/src/bin/psql/prompt.c:133,1
    - Dst: Min
      Src: /src/postgres/src/bin/psql/prompt.c:134,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/prompt.c:142,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/psql/prompt.c:145,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:147,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/psql/prompt.c:149,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/prompt.c:155,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:157,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/prompt.c:159,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/prompt.c:165,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:166,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/prompt.c:166,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:171,1
    - Dst: session_username
      Src: /src/postgres/src/bin/psql/prompt.c:171,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/prompt.c:177,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:180,1
    - Dst: GetVariable
      Src: /src/postgres/src/bin/psql/prompt.c:186,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:189,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/bin/psql/prompt.c:196,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/prompt.c:199,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/prompt.c:206,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:209,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:211,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:213,1
    - Dst: strtol
      Src: /src/postgres/src/bin/psql/prompt.c:224,1
    - Dst: unconstify
      Src: /src/postgres/src/bin/psql/prompt.c:224,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/prompt.c:231,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/prompt.c:266,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/prompt.c:270,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:271,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:273,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/psql/prompt.c:284,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/prompt.c:303,1
    - Dst: is_superuser
      Src: /src/postgres/src/bin/psql/prompt.c:311,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/psql/prompt.c:320,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/psql/prompt.c:321,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/prompt.c:324,1
    - Dst: popen
      Src: /src/postgres/src/bin/psql/prompt.c:325,1
    - Dst: fgets
      Src: /src/postgres/src/bin/psql/prompt.c:328,1
    - Dst: pclose
      Src: /src/postgres/src/bin/psql/prompt.c:330,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/psql/prompt.c:334,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/prompt.c:336,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/psql/prompt.c:344,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/psql/prompt.c:345,1
    - Dst: GetVariable
      Src: /src/postgres/src/bin/psql/prompt.c:348,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:350,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/prompt.c:351,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/psql/prompt.c:387,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/prompt.c:394,1
    - Dst: PQmblen
      Src: /src/postgres/src/bin/psql/prompt.c:417,1
    - Dst: PQdsplen
      Src: /src/postgres/src/bin/psql/prompt.c:423,1
    CyclomaticComplexity: 92
    EdgeCount: 92
    ICount: 236
    argCount: 2
    argNames:
    - status
    - cstack
    argTypes:
    - promptStatus_t
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 437
    functionName: get_prompt
    functionSourceFile: /src/postgres/src/bin/psql/prompt.c
    functionUses: 0
    functionsReached:
    - PQtransactionStatus
    - strcmp
    - is_unixsock_path
    - pclose
    - PQuser
    - pg_strip_crlf
    - PQmblen
    - conditional_active
    - strlcpy
    - is_superuser
    - PQhost
    - pfree
    - PQdsplen
    - PQdb
    - getenv
    - GetVariable
    - fflush
    - PQport
    - strtol
    - PQpipelineStatus
    - pnstrdup
    - strlen
    - memset
    - fgets
    - popen
    - strlcat
    - PQbackendPID
    - PQparameterStatus
    - unconstify
    - strcspn
    - session_username
    - Min
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      get_prompt(promptStatus_t status, ConditionalStack cstack)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: HELP0
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HELP0(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: HELPN
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HELPN(str,...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: 'ON'
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ON(var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:58,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:60,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:61,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:62,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:64,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:65,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:66,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:67,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:68,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:69,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:72,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:73,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:74,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:76,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:77,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:78,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:80,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:81,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:82,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:83,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:84,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:85,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:86,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:87,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:88,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:89,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:90,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:92,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:93,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:94,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:95,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:98,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:99,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:100,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:102,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:103,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:104,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:105,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:107,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:110,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:111,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:112,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:113,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:114,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:115,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:117,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:120,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:121,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:132,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/help.c:134,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/help.c:136,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 58
    argCount: 1
    argNames:
    - pager
    argTypes:
    - unsigned short int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 139
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 3
    functionsReached:
    - ClosePager
    - HELP0
    - HELPN
    - fputs
    - initPQExpBuffer
    - PageOutput
    - termPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void usage(unsigned short int pager)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/help.c:155,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:161,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:163,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:164,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:165,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:166,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:167,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:169,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:170,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:171,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:172,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:173,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:174,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:176,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:178,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:181,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:183,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:185,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:186,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:187,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:188,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:189,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:191,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:192,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:193,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:194,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:195,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:196,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:198,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:200,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:201,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:203,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:204,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:205,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:206,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:207,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:208,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:209,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:210,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:211,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:213,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:214,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:215,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:216,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:217,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:218,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:220,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:221,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:222,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:223,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:224,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:225,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:226,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:227,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:228,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:229,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:230,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:231,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:232,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:233,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:234,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:235,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:236,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:237,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:238,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:239,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:240,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:241,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:242,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:244,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:245,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:246,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:247,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:248,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:249,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:250,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:251,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:252,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:253,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:254,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:255,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:257,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:258,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:259,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:260,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:262,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:263,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:264,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:265,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:266,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:267,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:268,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:269,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:270,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:271,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:272,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:273,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:274,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:275,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:276,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:277,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:279,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:280,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:281,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:283,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:284,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:285,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:287,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:288,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:289,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:290,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:291,1
    - Dst: 'ON'
      Src: /src/postgres/src/bin/psql/help.c:292,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:293,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:295,1
    - Dst: 'ON'
      Src: /src/postgres/src/bin/psql/help.c:296,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:297,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:298,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/help.c:299,1
    - Dst: 'ON'
      Src: /src/postgres/src/bin/psql/help.c:299,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:300,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:302,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:304,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:308,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:310,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:311,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:312,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:313,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:315,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:316,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:317,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:318,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:319,1
    - Dst: 'ON'
      Src: /src/postgres/src/bin/psql/help.c:320,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:321,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:322,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:324,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:325,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:326,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:327,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:328,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:330,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:331,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:332,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:334,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:336,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:337,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:338,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:339,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:340,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:341,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:342,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:343,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:354,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/help.c:356,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/help.c:358,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:360,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 159
    argCount: 1
    argNames:
    - pager
    argTypes:
    - unsigned short int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 361
    functionName: slashUsage
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 0
    functionsReached:
    - ClosePager
    - _
    - HELP0
    - HELPN
    - fputs
    - 'ON'
    - PQdb
    - initPQExpBuffer
    - PageOutput
    - termPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void slashUsage(unsigned short int pager)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:380,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:382,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:384,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:385,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:386,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:388,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:390,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:393,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:395,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:398,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:401,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:403,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:405,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:407,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:409,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:411,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:413,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:415,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:417,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:419,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:421,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:423,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:426,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:428,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:430,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:432,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:434,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:436,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:438,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:440,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:442,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:445,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:447,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:449,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:451,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:453,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:455,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:457,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:459,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:461,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:463,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:467,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:471,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:472,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:473,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:475,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:477,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:479,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:482,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:484,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:486,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:488,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:491,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:493,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:495,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:497,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:499,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:501,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:503,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:505,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:507,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:509,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:512,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:514,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:516,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:520,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:524,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:525,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:528,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:530,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:533,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:535,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:537,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:539,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:541,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:543,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:545,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:547,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:549,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:551,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:553,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:555,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:558,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:561,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:563,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:565,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:577,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/help.c:579,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/help.c:581,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:583,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 96
    argCount: 1
    argNames:
    - pager
    argTypes:
    - unsigned short int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 584
    functionName: helpVariables
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 0
    functionsReached:
    - ClosePager
    - HELP0
    - HELPN
    - fputs
    - initPQExpBuffer
    - PageOutput
    - termPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void helpVariables(unsigned short int pager)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/help.c:597,1
    - Dst: ioctl
      Src: /src/postgres/src/bin/psql/help.c:611,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/help.c:611,1
    - Dst: Max
      Src: /src/postgres/src/bin/psql/help.c:620,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:623,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/help.c:625,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/help.c:625,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:629,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:631,1
    - Dst: VALUE_OR_NULL
      Src: /src/postgres/src/bin/psql/help.c:633,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:635,1
    - Dst: VALUE_OR_NULL
      Src: /src/postgres/src/bin/psql/help.c:636,1
    - Dst: fputc
      Src: /src/postgres/src/bin/psql/help.c:637,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/help.c:640,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/help.c:657,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/help.c:688,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/help.c:689,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/help.c:695,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:704,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/help.c:708,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/help.c:709,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:714,1
    - Dst: syntaxfunc
      Src: /src/postgres/src/bin/psql/help.c:715,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/help.c:716,1
    - Dst: strstr
      Src: /src/postgres/src/bin/psql/help.c:717,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:720,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/help.c:720,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/help.c:725,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/help.c:728,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:729,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/help.c:732,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:742,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:743,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/help.c:743,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/help.c:748,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 69
    argCount: 2
    argNames:
    - topic
    - pager
    argTypes:
    - char*
    - unsigned short int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 750
    functionName: helpSQL
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 0
    functionsReached:
    - strcmp
    - fputc
    - strstr
    - syntaxfunc
    - fprintf
    - fileno
    - _
    - VALUE_OR_NULL
    - pfree
    - fputs
    - ClosePager
    - psprintf
    - ioctl
    - strlen
    - PageOutput
    - termPQExpBuffer
    - pg_strcasecmp
    - pg_strncasecmp
    - Max
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void helpSQL(const char *topic, unsigned short int pager)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 596
    functionName: VALUE_OR_NULL
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALUE_OR_NULL(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: puts
      Src: /src/postgres/src/bin/psql/help.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 775
    functionName: print_copyright
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 0
    functionsReached:
    - puts
    linkageType: ''
    returnType: void
    signature: void print_copyright(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:65,1
    - Dst: popen
      Src: /src/postgres/src/bin/psql/common.c:66,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/common.c:71,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:77,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - fname
    - fout
    - is_pipe
    argTypes:
    - char*
    - FILE**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 82
    functionName: openQueryOutputFile
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - fopen
    - fflush
    - popen
    linkageType: ''
    returnType: bool
    signature: bool openQueryOutputFile(const char *fname, FILE **fout, bool *is_pipe)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: openQueryOutputFile
      Src: /src/postgres/src/bin/psql/common.c:95,1
    - Dst: disable_sigpipe_trap
      Src: /src/postgres/src/bin/psql/common.c:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - gfile_fout
    - is_pipe
    argTypes:
    - FILE**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 104
    functionName: SetupGOutput
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - openQueryOutputFile
    - disable_sigpipe_trap
    linkageType: ''
    returnType: bool
    signature: bool SetupGOutput(FILE **gfile_fout, bool *is_pipe)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SetShellResultVariables
      Src: /src/postgres/src/bin/psql/common.c:116,1
    - Dst: pclose
      Src: /src/postgres/src/bin/psql/common.c:116,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/bin/psql/common.c:117,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/common.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - gfile_fout
    - is_pipe
    argTypes:
    - FILE*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 122
    functionName: CloseGOutput
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - restore_sigpipe_trap
    - fclose
    - pclose
    - SetShellResultVariables
    linkageType: ''
    returnType: void
    signature: void CloseGOutput(FILE *gfile_fout, bool is_pipe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 134
    functionName: pipelineReset
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pipelineReset(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: openQueryOutputFile
      Src: /src/postgres/src/bin/psql/common.c:150,1
    - Dst: SetShellResultVariables
      Src: /src/postgres/src/bin/psql/common.c:157,1
    - Dst: pclose
      Src: /src/postgres/src/bin/psql/common.c:157,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/common.c:159,1
    - Dst: set_sigpipe_trap_state
      Src: /src/postgres/src/bin/psql/common.c:166,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/bin/psql/common.c:167,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 170
    functionName: setQFout
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - openQueryOutputFile
    - SetShellResultVariables
    - pclose
    - fclose
    - set_sigpipe_trap_state
    - restore_sigpipe_trap
    linkageType: ''
    returnType: bool
    signature: bool setQFout(const char *fname)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/common.c:195,1
    - Dst: GetVariable
      Src: /src/postgres/src/bin/psql/common.c:198,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/common.c:205,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:218,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/psql/common.c:224,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:224,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/psql/common.c:227,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:227,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:231,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:233,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/common.c:242,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/common.c:243,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:256,1
    - Dst: appendShellStringNoError
      Src: /src/postgres/src/bin/psql/common.c:257,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:259,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:261,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 3
    argNames:
    - varname
    - quote
    - passthrough
    argTypes:
    - char*
    - PsqlScanQuoteType
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 272
    functionName: psql_get_variable
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - appendShellStringNoError
    - PQerrorMessage
    - PQescapeIdentifier
    - GetVariable
    - strlen
    - pg_log_info
    - initPQExpBuffer
    - PQfreemem
    - conditional_active
    - PQescapeLiteral
    - free
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: "char *\npsql_get_variable(const char *varname, PsqlScanQuoteType quote,\n\t\t\t\t
      \ void *passthrough)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - arg
    - message
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 283
    functionName: NoticeProcessor
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - pg_log_info
    linkageType: ''
    returnType: void
    signature: void NoticeProcessor(void *arg, const char *message)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: siglongjmp
      Src: /src/postgres/src/bin/psql/common.c:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 322
    functionName: psql_cancel_callback
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - siglongjmp
    linkageType: ''
    returnType: void
    signature: void psql_cancel_callback(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_cancel_handler
      Src: /src/postgres/src/bin/psql/common.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 328
    functionName: psql_setup_cancel_handler
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - setup_cancel_handler
    linkageType: ''
    returnType: void
    signature: void psql_setup_cancel_handler(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQstatus
      Src: /src/postgres/src/bin/psql/common.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 340
    functionName: ConnectionUp
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQstatus
    linkageType: ''
    returnType: bool
    signature: bool ConnectionUp(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ConnectionUp
      Src: /src/postgres/src/bin/psql/common.c:360,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:365,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/common.c:366,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:369,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:369,1
    - Dst: PQreset
      Src: /src/postgres/src/bin/psql/common.c:370,1
    - Dst: pipelineReset
      Src: /src/postgres/src/bin/psql/common.c:371,1
    - Dst: ConnectionUp
      Src: /src/postgres/src/bin/psql/common.c:372,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:375,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:375,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/common.c:384,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:387,1
    - Dst: UnsyncVariables
      Src: /src/postgres/src/bin/psql/common.c:388,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:392,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:392,1
    - Dst: SyncVariables
      Src: /src/postgres/src/bin/psql/common.c:398,1
    - Dst: connection_warnings
      Src: /src/postgres/src/bin/psql/common.c:399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 404
    functionName: CheckConnection
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - pipelineReset
    - _
    - ConnectionUp
    - PQreset
    - PQfinish
    - SyncVariables
    - ResetCancelConn
    - connection_warnings
    - pg_log_error
    - exit
    - UnsyncVariables
    - fprintf
    linkageType: ''
    returnType: bool
    signature: bool CheckConnection(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:425,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:447,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:448,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:454,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:456,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:457,1
    - Dst: CheckConnection
      Src: /src/postgres/src/bin/psql/common.c:459,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - result
    - show_error
    argTypes:
    - PGresult*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 463
    functionName: AcceptResult
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - pg_log_info
    - strlen
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    - CheckConnection
    linkageType: ''
    returnType: bool
    signature: bool AcceptResult(const PGresult *result, bool show_error)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQcmdTuples
      Src: /src/postgres/src/bin/psql/common.c:482,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:484,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:485,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:486,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/psql/common.c:490,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/psql/common.c:491,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:493,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:501,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:502,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:503,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - result
    - success
    argTypes:
    - PGresult*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 506
    functionName: SetResultVariables
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQcmdTuples
    - SetVariable
    - PQresultErrorField
    linkageType: ''
    returnType: void
    signature: void SetResultVariables(PGresult *result, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:522,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:524,1
    - Dst: wait_result_to_exit_code
      Src: /src/postgres/src/bin/psql/common.c:524,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - wait_result
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 526
    functionName: SetShellResultVariables
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 2
    functionsReached:
    - SetVariable
    - wait_result_to_exit_code
    - snprintf
    linkageType: ''
    returnType: void
    signature: void SetShellResultVariables(int wait_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:540,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:541,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:542,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:543,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:544,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 546
    functionName: SetPipelineVariables
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - SetVariable
    - snprintf
    linkageType: ''
    returnType: void
    signature: void SetPipelineVariables(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:564,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:568,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:573,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - result
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 577
    functionName: ClearOrSaveResult
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQresultStatus
    linkageType: ''
    returnType: void
    signature: void ClearOrSaveResult(PGresult *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:588,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 583
    functionDepth: 2
    functionLinenumber: 583
    functionLinenumberEnd: 590
    functionName: ClearOrSaveAllResults
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQgetResult
    - ClearOrSaveResult
    linkageType: ''
    returnType: void
    signature: void ClearOrSaveAllResults(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:608,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:608,1
    - Dst: floor
      Src: /src/postgres/src/bin/psql/common.c:619,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:623,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:623,1
    - Dst: floor
      Src: /src/postgres/src/bin/psql/common.c:628,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:632,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:632,1
    - Dst: floor
      Src: /src/postgres/src/bin/psql/common.c:637,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:639,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:639,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - elapsed_msec
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 641
    functionName: PrintTiming
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - floor
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void PrintTiming(double elapsed_msec)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:663,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:669,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:669,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:672,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:675,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:676,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:679,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:686,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:688,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:690,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:692,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:694,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 656
    functionDepth: 4
    functionLinenumber: 656
    functionLinenumberEnd: 699
    functionName: PSQLexec
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 51
    functionsReached:
    - _
    - PQexec
    - ClearOrSaveResult
    - AcceptResult
    - printf
    - fflush
    - ResetCancelConn
    - pg_log_error
    - SetCancelConn
    - fprintf
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PSQLexec(const char *query)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:720,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:724,1
    - Dst: ExecQueryAndProcessResults
      Src: /src/postgres/src/bin/psql/common.c:726,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:728,1
    - Dst: PrintTiming
      Src: /src/postgres/src/bin/psql/common.c:732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - query
    - opt
    - printQueryFout
    - min_rows
    argTypes:
    - char*
    - printQueryOpt*
    - FILE*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 735
    functionName: PSQLexecWatch
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PrintTiming
    - ExecQueryAndProcessResults
    - ResetCancelConn
    - pg_log_error
    - SetCancelConn
    linkageType: ''
    returnType: int
    signature: int PSQLexecWatch(const char *query, const printQueryOpt *opt, FILE
      *printQueryFout, int min_rows)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/psql/common.c:746,1
    - Dst: PQnotifies
      Src: /src/postgres/src/bin/psql/common.c:747,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:751,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:751,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:754,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:754,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:756,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/common.c:757,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/psql/common.c:758,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 760
    functionName: PrintNotifications
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - _
    - PQnotifies
    - PQconsumeInput
    - fflush
    - PQfreemem
    - fprintf
    linkageType: ''
    returnType: void
    signature: void PrintNotifications(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/common.c:781,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:782,1
    - Dst: ferror
      Src: /src/postgres/src/bin/psql/common.c:783,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:785,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - result
    - opt
    - printQueryFout
    argTypes:
    - PGresult*
    - printQueryOpt*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 790
    functionName: PrintQueryTuples
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - ferror
    - pg_log_error
    - fflush
    - printQuery
    linkageType: ''
    returnType: bool
    signature: "bool PrintQueryTuples(const PGresult *result, const printQueryOpt
      *opt,\n\t\t\t\t FILE *printQueryFout)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:803,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:805,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:808,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:810,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/common.c:817,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/psql/common.c:819,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/common.c:824,1
    - Dst: VariableHasHook
      Src: /src/postgres/src/bin/psql/common.c:826,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/common.c:828,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/common.c:833,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/common.c:834,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:841,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/common.c:843,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/common.c:848,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - result
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 853
    functionName: StoreQueryTuple
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQfname
    - pfree
    - psprintf
    - VariableHasHook
    - pg_log_warning
    - PQgetisnull
    - SetVariable
    - PQgetvalue
    - pg_log_error
    - PQntuples
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: bool StoreQueryTuple(const PGresult *result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:866,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/common.c:867,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/common.c:880,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/common.c:882,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/common.c:894,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:895,1
    - Dst: SendQuery
      Src: /src/postgres/src/bin/psql/common.c:898,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - result
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 862
    functionDepth: 1
    functionLinenumber: 862
    functionLinenumberEnd: 920
    functionName: ExecQueryTuples
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - fflush
    - PQgetvalue
    - puts
    - PQgetisnull
    - PQntuples
    - SendQuery
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: bool ExecQueryTuples(const PGresult *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:943,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:945,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:948,1
    - Dst: handleCopyOut
      Src: /src/postgres/src/bin/psql/common.c:952,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:964,1
    - Dst: handleCopyIn
      Src: /src/postgres/src/bin/psql/common.c:973,1
    - Dst: PQbinaryTuples
      Src: /src/postgres/src/bin/psql/common.c:975,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:978,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:984,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - resultp
    - copystream
    argTypes:
    - PGresult**
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 988
    functionName: HandleCopyResult
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - handleCopyIn
    - PQclear
    - Assert
    - PQbinaryTuples
    - ResetCancelConn
    - PQresultStatus
    - handleCopyOut
    - SetCancelConn
    linkageType: ''
    returnType: bool
    signature: bool HandleCopyResult(PGresult **resultp, FILE *copystream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQcmdStatus
      Src: /src/postgres/src/bin/psql/common.c:997,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1001,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:1003,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:1004,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:1005,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:1006,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/common.c:1014,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/bin/psql/common.c:1015,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/common.c:1016,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:1019,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1020,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:1024,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:1026,1
    - Dst: PQoidValue
      Src: /src/postgres/src/bin/psql/common.c:1026,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:1027,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - result
    - printQueryFout
    argTypes:
    - PGresult*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 993
    functionDepth: 1
    functionLinenumber: 993
    functionLinenumberEnd: 1028
    functionName: PrintQueryStatus
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQoidValue
    - fputs
    - PQcmdStatus
    - snprintf
    - strncmp
    - fflush
    - SetVariable
    - PQresultStatus
    - html_escaped_print
    - fprintf
    linkageType: ''
    returnType: void
    signature: void PrintQueryStatus(PGresult *result, FILE *printQueryFout)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1050,1
    - Dst: StoreQueryTuple
      Src: /src/postgres/src/bin/psql/common.c:1055,1
    - Dst: ExecQueryTuples
      Src: /src/postgres/src/bin/psql/common.c:1057,1
    - Dst: PrintResultInCrosstab
      Src: /src/postgres/src/bin/psql/common.c:1059,1
    - Dst: PrintQueryTuples
      Src: /src/postgres/src/bin/psql/common.c:1061,1
    - Dst: PrintQueryStatus
      Src: /src/postgres/src/bin/psql/common.c:1070,1
    - Dst: PrintQueryStatus
      Src: /src/postgres/src/bin/psql/common.c:1076,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:1099,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1100,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 41
    argCount: 5
    argNames:
    - result
    - last
    - opt
    - printQueryFout
    - printStatusFout
    argTypes:
    - PGresult*
    - bool
    - printQueryOpt*
    - FILE*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1040
    functionDepth: 2
    functionLinenumber: 1040
    functionLinenumberEnd: 1105
    functionName: PrintQueryResult
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - ExecQueryTuples
    - pg_log_error
    - PrintResultInCrosstab
    - PrintQueryStatus
    - StoreQueryTuple
    - PQresultStatus
    - PrintQueryTuples
    linkageType: ''
    returnType: bool
    signature: "bool PrintQueryResult(PGresult *result, bool last,\n\t\t\t\t const
      printQueryOpt *opt, FILE *printQueryFout,\n\t\t\t\t FILE *printStatusFout)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:1132,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1140,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:1141,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:1141,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1145,1
    - Dst: fgets
      Src: /src/postgres/src/bin/psql/common.c:1146,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/common.c:1154,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1155,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:1160,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:1161,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1164,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:1167,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/psql/common.c:1169,1
    - Dst: command_no_begin
      Src: /src/postgres/src/bin/psql/common.c:1173,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:1177,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1178,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1180,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1180,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1181,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1184,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/psql/common.c:1185,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:1195,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1196,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1198,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1198,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1199,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1202,1
    - Dst: DescribeQuery
      Src: /src/postgres/src/bin/psql/common.c:1209,1
    - Dst: ExecQueryAndProcessResults
      Src: /src/postgres/src/bin/psql/common.c:1214,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1218,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/psql/common.c:1225,1
    - Dst: ConnectionUp
      Src: /src/postgres/src/bin/psql/common.c:1253,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:1254,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:1263,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1264,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1266,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1266,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1267,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1272,1
    - Dst: PrintTiming
      Src: /src/postgres/src/bin/psql/common.c:1278,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/common.c:1282,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/common.c:1283,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/common.c:1286,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:1288,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/psql/common.c:1289,1
    - Dst: PrintNotifications
      Src: /src/postgres/src/bin/psql/common.c:1292,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:1299,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:1304,1
    - Dst: restorePsetInfo
      Src: /src/postgres/src/bin/psql/common.c:1311,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/common.c:1316,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:1321,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/common.c:1333,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/common.c:1335,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 121
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1119
    functionDepth: 2
    functionLinenumber: 1119
    functionLinenumberEnd: 1340
    functionName: SendQuery
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - PQtransactionStatus
    - command_no_begin
    - PQclear
    - ConnectionUp
    - PQclientEncoding
    - PrintNotifications
    - printf
    - puts
    - pg_log_error
    - fprintf
    - _
    - clean_extended_state
    - PrintTiming
    - pg_encoding_to_char
    - fflush
    - PQresultStatus
    - ResetCancelConn
    - restorePsetInfo
    - SetCancelConn
    - lengthof
    - fgets
    - pg_free
    - pg_log_info
    - PQerrorMessage
    - PQexec
    - ClearOrSaveResult
    - DescribeQuery
    - ExecQueryAndProcessResults
    - free
    - SetVariable
    linkageType: ''
    returnType: bool
    signature: bool SendQuery(const char *query)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/psql/common.c:1363,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/bin/psql/common.c:1365,1
    - Dst: PQprepare
      Src: /src/postgres/src/bin/psql/common.c:1375,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1376,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1378,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1378,1
    - Dst: SetResultVariables
      Src: /src/postgres/src/bin/psql/common.c:1379,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1380,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1383,1
    - Dst: PQdescribePrepared
      Src: /src/postgres/src/bin/psql/common.c:1385,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:1386,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1387,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/common.c:1390,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1395,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1397,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/common.c:1400,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/common.c:1401,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/common.c:1403,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/common.c:1409,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/psql/common.c:1411,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/psql/common.c:1412,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:1412,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1416,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1416,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1417,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1418,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1422,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/psql/common.c:1424,1
    - Dst: PQfmod
      Src: /src/postgres/src/bin/psql/common.c:1425,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/common.c:1427,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/common.c:1430,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1431,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:1433,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:1434,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/psql/common.c:1438,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/psql/common.c:1439,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/bin/psql/common.c:1440,1
    - Dst: PrintQueryResult
      Src: /src/postgres/src/bin/psql/common.c:1444,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1446,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:1449,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:1450,1
    - Dst: SetResultVariables
      Src: /src/postgres/src/bin/psql/common.c:1453,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1454,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 2
    argNames:
    - query
    - elapsed_msec
    argTypes:
    - char*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1351
    functionDepth: 4
    functionLinenumber: 1351
    functionLinenumberEnd: 1457
    functionName: DescribeQuery
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - PQfname
    - PQclear
    - INSTR_TIME_SET_ZERO
    - gettext_noop
    - PQdescribePrepared
    - AcceptResult
    - appendPQExpBufferStr
    - PQnfields
    - fprintf
    - _
    - printfPQExpBuffer
    - PQftype
    - PQresultStatus
    - PQescapeLiteral
    - PrintQueryResult
    - PQfmod
    - SetResultVariables
    - INSTR_TIME_GET_MILLISEC
    - PQprepare
    - INSTR_TIME_SUBTRACT
    - strlen
    - appendPQExpBufferChar
    - pg_log_info
    - INSTR_TIME_SET_CURRENT
    - PQerrorMessage
    - termPQExpBuffer
    - PQfreemem
    - PQexec
    - ClearOrSaveResult
    - initPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool DescribeQuery(const char *query, double *elapsed_msec)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:1472,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1473,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:1496,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1497,1
    - Dst: ConnectionUp
      Src: /src/postgres/src/bin/psql/common.c:1514,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1542,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1543,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1467
    functionDepth: 2
    functionLinenumber: 1467
    functionLinenumberEnd: 1545
    functionName: discardAbortedPipelineResults
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQclear
    - ConnectionUp
    - Assert
    - PQresultStatus
    - PQgetResult
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      discardAbortedPipelineResults(void)'
  - BBCount: 78
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/psql/common.c:1587,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/bin/psql/common.c:1589,1
    - Dst: PQsendClosePrepared
      Src: /src/postgres/src/bin/psql/common.c:1594,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1595,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/bin/psql/common.c:1599,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1600,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1604,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/bin/psql/common.c:1605,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1609,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1613,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/bin/psql/common.c:1614,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1618,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/bin/psql/common.c:1622,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/bin/psql/common.c:1625,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1626,1
    - Dst: PQsendPipelineSync
      Src: /src/postgres/src/bin/psql/common.c:1647,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1648,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/psql/common.c:1661,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/bin/psql/common.c:1664,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1665,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1685,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1703,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/bin/psql/common.c:1705,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/psql/common.c:1711,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1717,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:1719,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1720,1
    - Dst: CheckConnection
      Src: /src/postgres/src/bin/psql/common.c:1722,1
    - Dst: SetPipelineVariables
      Src: /src/postgres/src/bin/psql/common.c:1724,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1730,1
    - Dst: SetPipelineVariables
      Src: /src/postgres/src/bin/psql/common.c:1737,1
    - Dst: PQsetChunkedRowsMode
      Src: /src/postgres/src/bin/psql/common.c:1762,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/common.c:1763,1
    - Dst: ClearOrSaveAllResults
      Src: /src/postgres/src/bin/psql/common.c:1773,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:1778,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:1779,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:1791,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1797,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:1799,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1800,1
    - Dst: CheckConnection
      Src: /src/postgres/src/bin/psql/common.c:1802,1
    - Dst: SetResultVariables
      Src: /src/postgres/src/bin/psql/common.c:1804,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1807,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1808,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1812,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1830,1
    - Dst: discardAbortedPipelineResults
      Src: /src/postgres/src/bin/psql/common.c:1843,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:1846,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/psql/common.c:1853,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/psql/common.c:1854,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/bin/psql/common.c:1855,1
    - Dst: PQcmdStatus
      Src: /src/postgres/src/bin/psql/common.c:1868,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:1870,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:1871,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:1872,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:1873,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1876,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1879,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1885,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1908,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/common.c:1909,1
    - Dst: SetupGOutput
      Src: /src/postgres/src/bin/psql/common.c:1933,1
    - Dst: HandleCopyResult
      Src: /src/postgres/src/bin/psql/common.c:1949,1
    - Dst: SetupGOutput
      Src: /src/postgres/src/bin/psql/common.c:1967,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/common.c:1974,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/common.c:1991,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1992,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:1999,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:2000,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:2002,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:2005,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:2006,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:2009,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:2013,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:2013,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/common.c:2019,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:2020,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/common.c:2024,1
    - Dst: PrintQueryStatus
      Src: /src/postgres/src/bin/psql/common.c:2030,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:2036,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:2037,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:2038,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:2039,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:2044,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/common.c:2051,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:2053,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/bin/psql/common.c:2082,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:2084,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:2102,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:2103,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:2113,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:2114,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:2119,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/psql/common.c:2138,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/psql/common.c:2139,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/bin/psql/common.c:2140,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:2159,1
    - Dst: SetupGOutput
      Src: /src/postgres/src/bin/psql/common.c:2160,1
    - Dst: PrintQueryResult
      Src: /src/postgres/src/bin/psql/common.c:2164,1
    - Dst: SetResultVariables
      Src: /src/postgres/src/bin/psql/common.c:2170,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:2172,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:2175,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:2184,1
    - Dst: ClearOrSaveAllResults
      Src: /src/postgres/src/bin/psql/common.c:2185,1
    - Dst: CloseGOutput
      Src: /src/postgres/src/bin/psql/common.c:2191,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:2204,1
    - Dst: ConnectionUp
      Src: /src/postgres/src/bin/psql/common.c:2208,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:2212,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:2214,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:2221,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/bin/psql/common.c:2222,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:2224,1
    - Dst: SetPipelineVariables
      Src: /src/postgres/src/bin/psql/common.c:2226,1
    - Dst: CheckConnection
      Src: /src/postgres/src/bin/psql/common.c:2229,1
    CyclomaticComplexity: 124
    EdgeCount: 124
    ICount: 274
    argCount: 7
    argNames:
    - query
    - elapsed_msec
    - svpt_gone_p
    - is_watch
    - min_rows
    - opt
    - printQueryFout
    argTypes:
    - char*
    - double*
    - bool*
    - bool
    - int
    - printQueryOpt*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2236
      start: 1570
    functionDepth: 4
    functionLinenumber: 1570
    functionLinenumberEnd: 2236
    functionName: ExecQueryAndProcessResults
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 2
    functionsReached:
    - PQclear
    - strcmp
    - ConnectionUp
    - INSTR_TIME_SET_ZERO
    - PrintQueryStatus
    - ClearOrSaveAllResults
    - pg_log_warning
    - PQsendPrepare
    - AcceptResult
    - PQsendQueryPrepared
    - PQgetResult
    - CheckConnection
    - Assert
    - PQsetChunkedRowsMode
    - PQsendQueryParams
    - printQuery
    - fflush
    - PQresultStatus
    - PQexitPipelineMode
    - PQntuples
    - PrintQueryResult
    - PQsendPipelineSync
    - ClosePager
    - SetResultVariables
    - PQpipelineStatus
    - PQenterPipelineMode
    - PQsendQuery
    - INSTR_TIME_GET_MILLISEC
    - PQflush
    - INSTR_TIME_SUBTRACT
    - PQcmdStatus
    - strlen
    - SetPipelineVariables
    - HandleCopyResult
    - PageOutput
    - snprintf
    - pg_log_info
    - INSTR_TIME_SET_CURRENT
    - PQerrorMessage
    - exit
    - CloseGOutput
    - ClearOrSaveResult
    - PQpipelineSync
    - PQsendClosePrepared
    - PQresultErrorMessage
    - SetupGOutput
    - SetVariable
    - discardAbortedPipelineResults
    - PQsendFlushRequest
    linkageType: ''
    returnType: int
    signature: "int ExecQueryAndProcessResults(const char *query,\n\t\t\t\t\t\t   double
      *elapsed_msec, bool *svpt_gone_p,\n\t\t\t\t\t\t   bool is_watch, int min_rows,\n\t\t\t\t\t\t
      \  const printQueryOpt *opt, FILE *printQueryFout)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2249,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/common.c:2259,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2286,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 27
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2242
    functionDepth: 1
    functionLinenumber: 2242
    functionLinenumberEnd: 2296
    functionName: skip_white_space
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQmblenBounded
    - isspace
    linkageType: ''
    returnType: char
    signature: 'char *

      skip_white_space(const char *query)'
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2314,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2320,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2321,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2331,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2333,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2335,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2337,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2339,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2341,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2343,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2348,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2351,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2352,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2354,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2364,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2366,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2371,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2373,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2378,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2382,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2385,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2386,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2388,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2390,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2394,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2398,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2401,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2402,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2405,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2409,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2412,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2413,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2415,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2422,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2426,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2429,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2430,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2433,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2444,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2445,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2449,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2452,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2453,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2455,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2457,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2459,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2461,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2462,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2465,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2467,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2468,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2474,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2479,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2483,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2486,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2487,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2489,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2499,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2503,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2506,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2507,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2509,1
    CyclomaticComplexity: 70
    EdgeCount: 70
    ICount: 118
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2306
    functionDepth: 2
    functionLinenumber: 2306
    functionLinenumberEnd: 2515
    functionName: command_no_begin
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - PQmblenBounded
    - skip_white_space
    - isalpha
    - pg_strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool command_no_begin(const char *query)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/common.c:2529,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:2531,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2535
      start: 2521
    functionDepth: 1
    functionLinenumber: 2521
    functionLinenumberEnd: 2535
    functionName: is_superuser
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - PQparameterStatus
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool is_superuser(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/common.c:2549,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:2551,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2555
      start: 2541
    functionDepth: 1
    functionLinenumber: 2541
    functionLinenumberEnd: 2555
    functionName: standard_strings
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQparameterStatus
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool standard_strings(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/common.c:2569,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/common.c:2573,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2574
      start: 2561
    functionDepth: 1
    functionLinenumber: 2561
    functionLinenumberEnd: 2574
    functionName: session_username
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - PQparameterStatus
    - PQuser
    linkageType: ''
    returnType: char
    signature: 'char *

      session_username(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfo
      Src: /src/postgres/src/bin/psql/common.c:2591,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:2597,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/common.c:2606,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/psql/common.c:2607,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - keyword
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2610
      start: 2581
    functionDepth: 1
    functionLinenumber: 2581
    functionLinenumberEnd: 2610
    functionName: get_conninfo_value
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - PQconninfoFree
    - strcmp
    - PQconninfo
    linkageType: ''
    returnType: char
    signature: 'char *

      get_conninfo_value(const char *keyword)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_home_path
      Src: /src/postgres/src/bin/psql/common.c:2651,1
    - Dst: getpwnam
      Src: /src/postgres/src/bin/psql/common.c:2652,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/common.c:2653,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:2656,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/common.c:2660,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2661,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2666
      start: 2618
    functionDepth: 1
    functionLinenumber: 2618
    functionLinenumberEnd: 2666
    functionName: expand_tilde
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - get_home_path
    - getpwnam
    - psprintf
    - strlen
    - free
    linkageType: ''
    returnType: void
    signature: void expand_tilde(char **filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:2683,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:2687,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - connstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2692
      start: 2676
    functionDepth: 0
    functionLinenumber: 2676
    functionLinenumberEnd: 2692
    functionName: uri_prefix_length
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int uri_prefix_length(const char *connstr)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2710,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2713,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2718,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2719,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2720,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2735
      start: 2702
    functionDepth: 1
    functionLinenumber: 2702
    functionLinenumberEnd: 2735
    functionName: clean_extended_state
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void clean_extended_state(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_prefix_length
      Src: /src/postgres/src/bin/psql/common.c:2749,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/common.c:2749,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - connstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2750
      start: 2746
    functionDepth: 0
    functionLinenumber: 2746
    functionLinenumberEnd: 2750
    functionName: recognized_connection_string
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - strchr
    - uri_prefix_length
    linkageType: ''
    returnType: bool
    signature: bool recognized_connection_string(const char *connstr)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: avlInit
      Src: /src/postgres/src/bin/psql/crosstabview.c:122,1
    - Dst: avlInit
      Src: /src/postgres/src/bin/psql/crosstabview.c:123,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/crosstabview.c:125,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:127,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:131,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:133,1
    - Dst: indexOfColumn
      Src: /src/postgres/src/bin/psql/crosstabview.c:142,1
    - Dst: indexOfColumn
      Src: /src/postgres/src/bin/psql/crosstabview.c:152,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:160,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:174,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:176,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:181,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/crosstabview.c:189,1
    - Dst: indexOfColumn
      Src: /src/postgres/src/bin/psql/crosstabview.c:193,1
    - Dst: indexOfColumn
      Src: /src/postgres/src/bin/psql/crosstabview.c:203,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/crosstabview.c:214,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:220,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:221,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:225,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:226,1
    - Dst: avlMergeValue
      Src: /src/postgres/src/bin/psql/crosstabview.c:228,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:232,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:238,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:239,1
    - Dst: avlMergeValue
      Src: /src/postgres/src/bin/psql/crosstabview.c:241,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/crosstabview.c:251,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/crosstabview.c:253,1
    - Dst: avlCollectFields
      Src: /src/postgres/src/bin/psql/crosstabview.c:255,1
    - Dst: avlCollectFields
      Src: /src/postgres/src/bin/psql/crosstabview.c:256,1
    - Dst: rankSort
      Src: /src/postgres/src/bin/psql/crosstabview.c:263,1
    - Dst: printCrosstab
      Src: /src/postgres/src/bin/psql/crosstabview.c:268,1
    - Dst: avlFree
      Src: /src/postgres/src/bin/psql/crosstabview.c:274,1
    - Dst: avlFree
      Src: /src/postgres/src/bin/psql/crosstabview.c:275,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:276,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:277,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 89
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 280
    functionName: PrintResultInCrosstab
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - indexOfColumn
    - Assert
    - pg_malloc_array
    - avlCollectFields
    - avlFree
    - PQgetvalue
    - printCrosstab
    - PQgetisnull
    - avlInit
    - PQresultStatus
    - pg_free
    - pg_log_error
    - PQntuples
    - rankSort
    - avlMergeValue
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: bool PrintResultInCrosstab(const PGresult *res)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQftype
      Src: /src/postgres/src/bin/psql/crosstabview.c:298,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/psql/crosstabview.c:299,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/psql/crosstabview.c:300,1
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/crosstabview.c:303,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/crosstabview.c:308,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/psql/crosstabview.c:309,1
    - Dst: column_type_alignment
      Src: /src/postgres/src/bin/psql/crosstabview.c:311,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/crosstabview.c:318,1
    - Dst: column_type_alignment
      Src: /src/postgres/src/bin/psql/crosstabview.c:325,1
    - Dst: displayValue
      Src: /src/postgres/src/bin/psql/crosstabview.c:331,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/crosstabview.c:333,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:335,1
    - Dst: displayValue
      Src: /src/postgres/src/bin/psql/crosstabview.c:343,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/crosstabview.c:350,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:359,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:360,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/psql/crosstabview.c:363,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/crosstabview.c:368,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:372,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:373,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/psql/crosstabview.c:377,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/crosstabview.c:382,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:399,1
    - Dst: displayValue
      Src: /src/postgres/src/bin/psql/crosstabview.c:400,1
    - Dst: displayValue
      Src: /src/postgres/src/bin/psql/crosstabview.c:401,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:405,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:408,1
    - Dst: displayValue
      Src: /src/postgres/src/bin/psql/crosstabview.c:409,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/crosstabview.c:423,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/crosstabview.c:427,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 52
    argCount: 8
    argNames:
    - result
    - num_columns
    - piv_columns
    - field_for_columns
    - num_rows
    - piv_rows
    - field_for_rows
    - field_for_data
    argTypes:
    - PGresult*
    - int
    - pivot_field*
    - int
    - int
    - pivot_field*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 430
    functionName: printCrosstab
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - PQfname
    - bsearch
    - pg_log_error
    - Assert
    - printTableCleanup
    - pg_malloc_array
    - printTableAddHeader
    - PQftype
    - displayValue
    - PQgetvalue
    - printTableInit
    - pg_free
    - PQgetisnull
    - PQntuples
    - column_type_alignment
    - printTable
    linkageType: ''
    returnType: bool
    signature: "bool printCrosstab(const PGresult *result,\n\t\t\t  int num_columns,
      pivot_field *piv_columns, int field_for_columns,\n\t\t\t  int num_rows, pivot_field
      *piv_rows, int field_for_rows,\n\t\t\t  int field_for_data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 3
    argNames:
    - value
    - ftype
    - default_null
    argTypes:
    - char*
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 454
    functionName: displayValue
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      displayValue(char *value, Oid ftype, char *default_null)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/psql/crosstabview.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tree
    argTypes:
    - avl_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 469
    functionName: avlInit
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - pg_malloc0_object
    linkageType: ''
    returnType: void
    signature: void avlInit(avl_tree *tree)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: avlFree
      Src: /src/postgres/src/bin/psql/crosstabview.c:477,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:478,1
    - Dst: avlFree
      Src: /src/postgres/src/bin/psql/crosstabview.c:482,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:483,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:489,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:491,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - avl_tree*
    - avl_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 493
    functionName: avlFree
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 2
    functionsReached:
    - pg_free
    - avlFree
    linkageType: ''
    returnType: void
    signature: void avlFree(avl_tree *tree, avl_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - avl_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 502
    functionName: avlUpdateHeight
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void avlUpdateHeight(avl_node *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: avlUpdateHeight
      Src: /src/postgres/src/bin/psql/crosstabview.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - current
    - dir
    argTypes:
    - avl_node**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 517
    functionName: avlRotate
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 0
    functionsReached:
    - avlUpdateHeight
    linkageType: ''
    returnType: avl_node
    signature: 'avl_node *

      avlRotate(avl_node **current, int dir)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - avl_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 523
    functionName: avlBalance
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int avlBalance(avl_node *n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: avlBalance
      Src: /src/postgres/src/bin/psql/crosstabview.c:534,1
    - Dst: avlBalance
      Src: /src/postgres/src/bin/psql/crosstabview.c:540,1
    - Dst: avlRotate
      Src: /src/postgres/src/bin/psql/crosstabview.c:541,1
    - Dst: avlRotate
      Src: /src/postgres/src/bin/psql/crosstabview.c:542,1
    - Dst: avlUpdateHeight
      Src: /src/postgres/src/bin/psql/crosstabview.c:545,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - avl_tree*
    - avl_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 530
    functionDepth: 2
    functionLinenumber: 530
    functionLinenumberEnd: 546
    functionName: avlAdjustBalance
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 0
    functionsReached:
    - avlBalance
    - avlUpdateHeight
    - avlRotate
    linkageType: ''
    returnType: void
    signature: void avlAdjustBalance(avl_tree *tree, avl_node **node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/psql/crosstabview.c:560,1
    - Dst: pivotFieldCompare
      Src: /src/postgres/src/bin/psql/crosstabview.c:570,1
    - Dst: avlInsertNode
      Src: /src/postgres/src/bin/psql/crosstabview.c:574,1
    - Dst: avlAdjustBalance
      Src: /src/postgres/src/bin/psql/crosstabview.c:577,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - tree
    - node
    - field
    argTypes:
    - avl_tree*
    - avl_node**
    - pivot_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 553
    functionDepth: 3
    functionLinenumber: 553
    functionLinenumberEnd: 580
    functionName: avlInsertNode
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - pivotFieldCompare
    - pg_malloc_object
    - avlInsertNode
    - avlAdjustBalance
    linkageType: ''
    returnType: void
    signature: void avlInsertNode(avl_tree *tree, avl_node **node, pivot_field field)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: avlInsertNode
      Src: /src/postgres/src/bin/psql/crosstabview.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tree
    - name
    - sort_value
    argTypes:
    - avl_tree*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 583
    functionDepth: 4
    functionLinenumber: 583
    functionLinenumberEnd: 592
    functionName: avlMergeValue
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - avlInsertNode
    linkageType: ''
    returnType: void
    signature: void avlMergeValue(avl_tree *tree, char *name, char *sort_value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: avlCollectFields
      Src: /src/postgres/src/bin/psql/crosstabview.c:606,1
    - Dst: avlCollectFields
      Src: /src/postgres/src/bin/psql/crosstabview.c:608,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - tree
    - node
    - fields
    - idx
    argTypes:
    - avl_tree*
    - avl_node*
    - pivot_field*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 609
    functionName: avlCollectFields
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 2
    functionsReached:
    - avlCollectFields
    linkageType: ''
    returnType: int
    signature: int avlCollectFields(avl_tree *tree, avl_node *node, pivot_field *fields,
      int idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/crosstabview.c:618,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/crosstabview.c:626,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/crosstabview.c:626,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/crosstabview.c:627,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/crosstabview.c:627,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/crosstabview.c:629,1
    - Dst: qsort
      Src: /src/postgres/src/bin/psql/crosstabview.c:640,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:647,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - num_columns
    - piv_columns
    argTypes:
    - int
    - pivot_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 648
    functionName: rankSort
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - qsort
    - pg_malloc_array
    - strspn
    - strlen
    - atoi
    - pg_free
    linkageType: ''
    returnType: void
    signature: void rankSort(int num_columns, pivot_field *piv_columns)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/crosstabview.c:664,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/crosstabview.c:664,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/crosstabview.c:667,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:668,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:670,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:671,1
    - Dst: dequote_downcase_identifier
      Src: /src/postgres/src/bin/psql/crosstabview.c:684,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:688,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/crosstabview.c:690,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/psql/crosstabview.c:690,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:695,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:703,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - arg
    - res
    argTypes:
    - char*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 709
    functionName: indexOfColumn
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - PQfname
    - strcmp
    - dequote_downcase_identifier
    - strspn
    - strlen
    - atoi
    - pg_log_error
    - PQnfields
    linkageType: ''
    returnType: int
    signature: int indexOfColumn(char *arg, const PGresult *res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/crosstabview.c:731,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 732
    functionName: pivotFieldCompare
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int pivotFieldCompare(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/bin/psql/crosstabview.c:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 738
    functionName: rankCompare
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int rankCompare(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rl_reset_screen_size
      Src: /src/postgres/src/bin/psql/input.c:82,1
    - Dst: readline
      Src: /src/postgres/src/bin/psql/input.c:91,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/input.c:103,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/input.c:104,1
    - Dst: gets_fromFile
      Src: /src/postgres/src/bin/psql/input.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - prompt
    - query_buf
    argTypes:
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 106
    functionName: gets_interactive
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached:
    - readline
    - rl_reset_screen_size
    - fputs
    - fflush
    - gets_fromFile
    linkageType: ''
    returnType: char
    signature: 'char *

      gets_interactive(const char *prompt, PQExpBuffer query_buf)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/input.c:118,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/input.c:119,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/input.c:120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - s
    - history_buf
    argTypes:
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 123
    functionName: pg_append_history
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - strlen
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void pg_append_history(const char *s, PQExpBuffer history_buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/input.c:144,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/input.c:153,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/input.c:160,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/input.c:161,1
    - Dst: add_history
      Src: /src/postgres/src/bin/psql/input.c:163,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/input.c:169,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 1
    argNames:
    - history_buf
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 171
    functionName: pg_send_history
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached:
    - strcmp
    - add_history
    - resetPQExpBuffer
    - strlen
    - pg_free
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void pg_send_history(PQExpBuffer history_buf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/input.c:193,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/input.c:195,1
    - Dst: fgets
      Src: /src/postgres/src/bin/psql/input.c:205,1
    - Dst: ferror
      Src: /src/postgres/src/bin/psql/input.c:213,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/input.c:215,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/input.c:221,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/bin/psql/input.c:223,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/input.c:225,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/input.c:233,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/input.c:238,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - source
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 242
    functionName: gets_fromFile
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 1
    functionsReached:
    - ferror
    - resetPQExpBuffer
    - fgets
    - PQExpBufferBroken
    - pg_log_error
    - appendPQExpBufferStr
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      gets_fromFile(FILE *source)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - VARNAME
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 289
    functionName: BEGIN_ITERATE_HISTORY
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BEGIN_ITERATE_HISTORY(VARNAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: END_ITERATE_HISTORY
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: END_ITERATE_HISTORY()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BEGIN_ITERATE_HISTORY
      Src: /src/postgres/src/bin/psql/input.c:301,1
    - Dst: END_ITERATE_HISTORY
      Src: /src/postgres/src/bin/psql/input.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 313
    functionName: encode_history
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached:
    - END_ITERATE_HISTORY
    - BEGIN_ITERATE_HISTORY
    linkageType: ''
    returnType: void
    signature: void encode_history(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BEGIN_ITERATE_HISTORY
      Src: /src/postgres/src/bin/psql/input.c:321,1
    - Dst: END_ITERATE_HISTORY
      Src: /src/postgres/src/bin/psql/input.c:332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 333
    functionName: decode_history
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached:
    - END_ITERATE_HISTORY
    - BEGIN_ITERATE_HISTORY
    linkageType: ''
    returnType: void
    signature: void decode_history(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initialize_readline
      Src: /src/postgres/src/bin/psql/input.c:355,1
    - Dst: rl_variable_bind
      Src: /src/postgres/src/bin/psql/input.c:359,1
    - Dst: rl_initialize
      Src: /src/postgres/src/bin/psql/input.c:363,1
    - Dst: using_history
      Src: /src/postgres/src/bin/psql/input.c:366,1
    - Dst: GetVariable
      Src: /src/postgres/src/bin/psql/input.c:369,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/input.c:375,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/input.c:376,1
    - Dst: get_home_path
      Src: /src/postgres/src/bin/psql/input.c:382,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/input.c:383,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/input.c:387,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/input.c:388,1
    - Dst: read_history
      Src: /src/postgres/src/bin/psql/input.c:393,1
    - Dst: decode_history
      Src: /src/postgres/src/bin/psql/input.c:394,1
    - Dst: atexit
      Src: /src/postgres/src/bin/psql/input.c:399,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 400
    functionName: initializeInput
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached:
    - initialize_readline
    - get_home_path
    - decode_history
    - psprintf
    - expand_tilde
    - read_history
    - rl_initialize
    - using_history
    - getenv
    - GetVariable
    - strlen
    - atexit
    - rl_variable_bind
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void initializeInput(int flags)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/input.c:423,1
    - Dst: encode_history
      Src: /src/postgres/src/bin/psql/input.c:431,1
    - Dst: Max
      Src: /src/postgres/src/bin/psql/input.c:448,1
    - Dst: history_truncate_file
      Src: /src/postgres/src/bin/psql/input.c:449,1
    - Dst: open
      Src: /src/postgres/src/bin/psql/input.c:452,1
    - Dst: close
      Src: /src/postgres/src/bin/psql/input.c:454,1
    - Dst: Min
      Src: /src/postgres/src/bin/psql/input.c:457,1
    - Dst: append_history
      Src: /src/postgres/src/bin/psql/input.c:460,1
    - Dst: stifle_history
      Src: /src/postgres/src/bin/psql/input.c:468,1
    - Dst: write_history
      Src: /src/postgres/src/bin/psql/input.c:470,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/input.c:476,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - fname
    - max_lines
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 412
    functionDepth: 2
    functionLinenumber: 412
    functionLinenumberEnd: 479
    functionName: saveHistory
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached:
    - write_history
    - open
    - strcmp
    - pg_log_error
    - history_truncate_file
    - append_history
    - stifle_history
    - Max
    - close
    - encode_history
    - Min
    linkageType: ''
    returnType: bool
    signature: bool saveHistory(char *fname, int max_lines)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/input.c:506,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/input.c:511,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/input.c:514,1
    - Dst: BEGIN_ITERATE_HISTORY
      Src: /src/postgres/src/bin/psql/input.c:520,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/input.c:522,1
    - Dst: END_ITERATE_HISTORY
      Src: /src/postgres/src/bin/psql/input.c:524,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/input.c:527,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/input.c:529,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/input.c:533,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - fname
    - pager
    argTypes:
    - char*
    - unsigned short int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 536
    functionName: printHistory
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached:
    - ClosePager
    - fopen
    - fclose
    - END_ITERATE_HISTORY
    - PageOutput
    - pg_log_error
    - BEGIN_ITERATE_HISTORY
    - fprintf
    linkageType: ''
    returnType: bool
    signature: bool printHistory(const char *fname, unsigned short int pager)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: saveHistory
      Src: /src/postgres/src/bin/psql/input.c:545,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/input.c:546,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 539
    functionDepth: 3
    functionLinenumber: 539
    functionLinenumberEnd: 550
    functionName: finishInput
    functionSourceFile: /src/postgres/src/bin/psql/input.c
    functionUses: 0
    functionsReached:
    - saveHistory
    - free
    linkageType: ''
    returnType: void
    signature: void finishInput(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/psql/copy.c:69,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/copy.c:70,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/copy.c:71,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/copy.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - struct copy_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 73
    functionName: free_copy_options
    functionSourceFile: /src/postgres/src/bin/psql/copy.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free_copy_options(struct copy_options *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/copy.c:82,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/copy.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - var
    - more
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: xstrcat
    functionSourceFile: /src/postgres/src/bin/psql/copy.c
    functionUses: 0
    functionsReached:
    - psprintf
    - free
    linkageType: ''
    returnType: void
    signature: void xstrcat(char **var, const char *more)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: standard_strings
      Src: /src/postgres/src/bin/psql/copy.c:94,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:98,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/psql/copy.c:102,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/copy.c:104,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:106,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/copy.c:112,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:114,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:115,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:128,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:129,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:130,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:141,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:142,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:143,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:155,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:156,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:160,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:161,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:172,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:173,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:174,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:181,1
    - Dst: xstrcat
      Src: /src/postgres/src/bin/psql/copy.c:182,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:183,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/copy.c:189,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/copy.c:191,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:197,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/copy.c:202,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:206,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/copy.c:215,1
    - Dst: strip_quotes
      Src: /src/postgres/src/bin/psql/copy.c:219,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/copy.c:222,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/copy.c:224,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/copy.c:225,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/copy.c:229,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/copy.c:230,1
    - Dst: strip_quotes
      Src: /src/postgres/src/bin/psql/copy.c:238,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/copy.c:239,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/copy.c:240,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/copy.c:244,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/copy.c:247,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:253,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:255,1
    - Dst: free_copy_options
      Src: /src/postgres/src/bin/psql/copy.c:256,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 113
    argCount: 1
    argNames:
    - args
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 259
    functionName: parse_slash_copy
    functionSourceFile: /src/postgres/src/bin/psql/copy.c
    functionUses: 0
    functionsReached:
    - standard_strings
    - pg_strcasecmp
    - xstrcat
    - free_copy_options
    - expand_tilde
    - strlen
    - pg_malloc0_object
    - strip_quotes
    - pg_log_error
    - strtokx
    - pg_strdup
    linkageType: ''
    returnType: struct copy_options
    signature: 'struct copy_options *

      parse_slash_copy(const char *args)'
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: parse_slash_copy
      Src: /src/postgres/src/bin/psql/copy.c:276,1
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/bin/psql/copy.c:283,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/copy.c:291,1
    - Dst: popen
      Src: /src/postgres/src/bin/psql/copy.c:293,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/copy.c:296,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/copy.c:309,1
    - Dst: disable_sigpipe_trap
      Src: /src/postgres/src/bin/psql/copy.c:310,1
    - Dst: popen
      Src: /src/postgres/src/bin/psql/copy.c:312,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/copy.c:315,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:326,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:329,1
    - Dst: free_copy_options
      Src: /src/postgres/src/bin/psql/copy.c:331,1
    - Dst: fstat
      Src: /src/postgres/src/bin/psql/copy.c:341,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/copy.c:341,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:342,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/psql/copy.c:345,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:346,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/psql/copy.c:349,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/copy.c:351,1
    - Dst: free_copy_options
      Src: /src/postgres/src/bin/psql/copy.c:352,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/copy.c:358,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/copy.c:359,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/copy.c:360,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/copy.c:362,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/copy.c:364,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/copy.c:366,1
    - Dst: SendQuery
      Src: /src/postgres/src/bin/psql/copy.c:370,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/copy.c:372,1
    - Dst: pclose
      Src: /src/postgres/src/bin/psql/copy.c:378,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:383,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/psql/copy.c:386,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:388,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/copy.c:390,1
    - Dst: SetShellResultVariables
      Src: /src/postgres/src/bin/psql/copy.c:394,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/bin/psql/copy.c:395,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/copy.c:399,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:401,1
    - Dst: free_copy_options
      Src: /src/postgres/src/bin/psql/copy.c:406,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 83
    argCount: 1
    argNames:
    - args
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 267
    functionDepth: 3
    functionLinenumber: 267
    functionLinenumberEnd: 408
    functionName: do_copy
    functionSourceFile: /src/postgres/src/bin/psql/copy.c
    functionUses: 0
    functionsReached:
    - fopen
    - pclose
    - pg_log_error
    - appendPQExpBufferStr
    - SendQuery
    - fileno
    - restore_sigpipe_trap
    - printfPQExpBuffer
    - disable_sigpipe_trap
    - fflush
    - fstat
    - S_ISDIR
    - canonicalize_path_enc
    - free_copy_options
    - SetShellResultVariables
    - wait_result_to_str
    - fclose
    - popen
    - termPQExpBuffer
    - initPQExpBuffer
    - free
    - parse_slash_copy
    linkageType: ''
    returnType: bool
    signature: bool do_copy(const char *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/psql/copy.c:442,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/psql/copy.c:449,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:451,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/copy.c:455,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/copy.c:459,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:461,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/copy.c:467,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/copy.c:467,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/copy.c:483,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/copy.c:484,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/copy.c:486,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/copy.c:486,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 3
    argNames:
    - conn
    - copystream
    - res
    argTypes:
    - PGconn*
    - FILE*
    - PGresult**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 491
    functionName: handleCopyOut
    functionSourceFile: /src/postgres/src/bin/psql/copy.c
    functionUses: 1
    functionsReached:
    - PQgetCopyData
    - pg_log_info
    - fflush
    - PQresultStatus
    - PQfreemem
    - pg_log_error
    - PQerrorMessage
    - PQgetResult
    - fwrite
    linkageType: ''
    returnType: bool
    signature: bool handleCopyOut(PGconn *conn, FILE *copystream, PGresult **res)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: sigsetjmp
      Src: /src/postgres/src/bin/psql/copy.c:521,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/psql/copy.c:526,1
    - Dst: PQprotocolVersion
      Src: /src/postgres/src/bin/psql/copy.c:527,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/copy.c:528,1
    - Dst: isatty
      Src: /src/postgres/src/bin/psql/copy.c:535,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/copy.c:535,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/copy.c:539,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/copy.c:539,1
    - Dst: get_prompt
      Src: /src/postgres/src/bin/psql/copy.c:552,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/copy.c:554,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/copy.c:555,1
    - Dst: fread
      Src: /src/postgres/src/bin/psql/copy.c:565,1
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/psql/copy.c:572,1
    - Dst: get_prompt
      Src: /src/postgres/src/bin/psql/copy.c:598,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/copy.c:600,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/copy.c:601,1
    - Dst: fgets
      Src: /src/postgres/src/bin/psql/copy.c:607,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/copy.c:617,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/psql/copy.c:633,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/psql/copy.c:634,1
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/psql/copy.c:670,1
    - Dst: ferror
      Src: /src/postgres/src/bin/psql/copy.c:682,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/psql/copy.c:691,1
    - Dst: PQprotocolVersion
      Src: /src/postgres/src/bin/psql/copy.c:692,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/copy.c:693,1
    - Dst: clearerr
      Src: /src/postgres/src/bin/psql/copy.c:706,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/copy.c:720,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/copy.c:720,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/copy.c:723,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/psql/copy.c:725,1
    - Dst: PQprotocolVersion
      Src: /src/postgres/src/bin/psql/copy.c:726,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/copy.c:727,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/copy.c:729,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/copy.c:731,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/copy.c:731,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 86
    argCount: 4
    argNames:
    - conn
    - copystream
    - isbinary
    - res
    argTypes:
    - PGconn*
    - FILE*
    - bool
    - PGresult**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 736
    functionName: handleCopyIn
    functionSourceFile: /src/postgres/src/bin/psql/copy.c
    functionUses: 1
    functionsReached:
    - PQclear
    - sigsetjmp
    - puts
    - PQgetResult
    - PQputCopyData
    - fileno
    - ferror
    - _
    - get_prompt
    - fputs
    - fflush
    - PQputCopyEnd
    - PQresultStatus
    - memcmp
    - isatty
    - strlen
    - fgets
    - pg_log_info
    - PQerrorMessage
    - clearerr
    - PQprotocolVersion
    - fread
    linkageType: ''
    returnType: bool
    signature: bool handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary, PGresult
      **res)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/large_obj.c:26,1
    - Dst: va_start
      Src: /src/postgres/src/bin/psql/large_obj.c:28,1
    - Dst: vfprintf
      Src: /src/postgres/src/bin/psql/large_obj.c:29,1
    - Dst: va_end
      Src: /src/postgres/src/bin/psql/large_obj.c:30,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/large_obj.c:33,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/large_obj.c:35,1
    - Dst: va_start
      Src: /src/postgres/src/bin/psql/large_obj.c:40,1
    - Dst: vfprintf
      Src: /src/postgres/src/bin/psql/large_obj.c:41,1
    - Dst: va_end
      Src: /src/postgres/src/bin/psql/large_obj.c:42,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/large_obj.c:43,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 45
    functionName: print_lo_result
    functionSourceFile: /src/postgres/src/bin/psql/large_obj.c
    functionUses: 0
    functionsReached:
    - va_start
    - vfprintf
    - va_end
    - fputs
    linkageType: ''
    returnType: void
    signature: void print_lo_result(const char *fmt, ...)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/large_obj.c:65,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/psql/large_obj.c:69,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/large_obj.c:75,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/large_obj.c:77,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/large_obj.c:84,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/large_obj.c:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - operation
    - own_transaction
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 55
    functionDepth: 5
    functionLinenumber: 55
    functionLinenumberEnd: 92
    functionName: start_lo_xact
    functionSourceFile: /src/postgres/src/bin/psql/large_obj.c
    functionUses: 0
    functionsReached:
    - PSQLexec
    - pg_log_error
    - PQtransactionStatus
    - PQclear
    linkageType: ''
    returnType: bool
    signature: bool start_lo_xact(const char *operation, bool *own_transaction)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/large_obj.c:105,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/large_obj.c:107,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/large_obj.c:108,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/large_obj.c:111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - operation
    - own_transaction
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 97
    functionDepth: 5
    functionLinenumber: 97
    functionLinenumberEnd: 115
    functionName: finish_lo_xact
    functionSourceFile: /src/postgres/src/bin/psql/large_obj.c
    functionUses: 0
    functionsReached:
    - PSQLexec
    - PQclear
    linkageType: ''
    returnType: bool
    signature: bool finish_lo_xact(const char *operation, bool own_transaction)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/large_obj.c:128,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/large_obj.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - operation
    - own_transaction
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 120
    functionDepth: 5
    functionLinenumber: 120
    functionLinenumberEnd: 133
    functionName: fail_lo_xact
    functionSourceFile: /src/postgres/src/bin/psql/large_obj.c
    functionUses: 0
    functionsReached:
    - PSQLexec
    - PQclear
    linkageType: ''
    returnType: bool
    signature: bool fail_lo_xact(const char *operation, bool own_transaction)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: start_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:147,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/large_obj.c:150,1
    - Dst: lo_export
      Src: /src/postgres/src/bin/psql/large_obj.c:151,1
    - Dst: atooid
      Src: /src/postgres/src/bin/psql/large_obj.c:151,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/large_obj.c:152,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/large_obj.c:157,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/large_obj.c:157,1
    - Dst: fail_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:158,1
    - Dst: finish_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:161,1
    - Dst: print_lo_result
      Src: /src/postgres/src/bin/psql/large_obj.c:164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - loid_arg
    - filename_arg
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 141
    functionDepth: 6
    functionLinenumber: 141
    functionLinenumberEnd: 167
    functionName: do_lo_export
    functionSourceFile: /src/postgres/src/bin/psql/large_obj.c
    functionUses: 0
    functionsReached:
    - atooid
    - fail_lo_xact
    - finish_lo_xact
    - lo_export
    - print_lo_result
    - ResetCancelConn
    - pg_log_info
    - PQerrorMessage
    - SetCancelConn
    - start_lo_xact
    linkageType: ''
    returnType: bool
    signature: bool do_lo_export(const char *loid_arg, const char *filename_arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: start_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:183,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/large_obj.c:186,1
    - Dst: lo_import
      Src: /src/postgres/src/bin/psql/large_obj.c:187,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/large_obj.c:188,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/large_obj.c:192,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/large_obj.c:192,1
    - Dst: fail_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:193,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/large_obj.c:201,1
    - Dst: pg_malloc_extended
      Src: /src/postgres/src/bin/psql/large_obj.c:203,1
    - Dst: fail_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:205,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/psql/large_obj.c:206,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/large_obj.c:207,1
    - Dst: PQescapeStringConn
      Src: /src/postgres/src/bin/psql/large_obj.c:208,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/psql/large_obj.c:209,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/large_obj.c:211,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/large_obj.c:213,1
    - Dst: fail_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:214,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/large_obj.c:217,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/large_obj.c:218,1
    - Dst: finish_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:221,1
    - Dst: print_lo_result
      Src: /src/postgres/src/bin/psql/large_obj.c:224,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/psql/large_obj.c:226,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/large_obj.c:227,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - filename_arg
    - comment_arg
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 175
    functionDepth: 6
    functionLinenumber: 175
    functionLinenumberEnd: 230
    functionName: do_lo_import
    functionSourceFile: /src/postgres/src/bin/psql/large_obj.c
    functionUses: 0
    functionsReached:
    - fail_lo_xact
    - PQclear
    - pg_malloc_extended
    - pg_free
    - finish_lo_xact
    - lo_import
    - PQescapeStringConn
    - print_lo_result
    - strlen
    - strcpy
    - SetVariable
    - ResetCancelConn
    - PSQLexec
    - pg_log_info
    - PQerrorMessage
    - SetCancelConn
    - start_lo_xact
    - sprintf
    linkageType: ''
    returnType: bool
    signature: bool do_lo_import(const char *filename_arg, const char *comment_arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: atooid
      Src: /src/postgres/src/bin/psql/large_obj.c:242,1
    - Dst: start_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:245,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/large_obj.c:248,1
    - Dst: lo_unlink
      Src: /src/postgres/src/bin/psql/large_obj.c:249,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/large_obj.c:250,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/large_obj.c:254,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/large_obj.c:254,1
    - Dst: fail_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:255,1
    - Dst: finish_lo_xact
      Src: /src/postgres/src/bin/psql/large_obj.c:258,1
    - Dst: print_lo_result
      Src: /src/postgres/src/bin/psql/large_obj.c:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - loid_arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 238
    functionDepth: 6
    functionLinenumber: 238
    functionLinenumberEnd: 264
    functionName: do_lo_unlink
    functionSourceFile: /src/postgres/src/bin/psql/large_obj.c
    functionUses: 0
    functionsReached:
    - atooid
    - fail_lo_xact
    - finish_lo_xact
    - print_lo_result
    - lo_unlink
    - ResetCancelConn
    - pg_log_info
    - PQerrorMessage
    - SetCancelConn
    - start_lo_xact
    linkageType: ''
    returnType: bool
    signature: bool do_lo_unlink(const char *loid_arg)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_create
      Src: /src/postgres/src/bin/psql/mainloop.c:70,1
    - Dst: conditional_stack_create
      Src: /src/postgres/src/bin/psql/mainloop.c:71,1
    - Dst: psql_scan_set_passthrough
      Src: /src/postgres/src/bin/psql/mainloop.c:72,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/mainloop.c:74,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/mainloop.c:75,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/mainloop.c:76,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/bin/psql/mainloop.c:77,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/bin/psql/mainloop.c:78,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/bin/psql/mainloop.c:79,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/mainloop.c:80,1
    - Dst: sigsetjmp
      Src: /src/postgres/src/bin/psql/mainloop.c:107,1
    - Dst: psql_scan_finish
      Src: /src/postgres/src/bin/psql/mainloop.c:112,1
    - Dst: psql_scan_reset
      Src: /src/postgres/src/bin/psql/mainloop.c:113,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/mainloop.c:114,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/mainloop.c:115,1
    - Dst: putc
      Src: /src/postgres/src/bin/psql/mainloop.c:125,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/psql/mainloop.c:131,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/mainloop.c:133,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/psql/mainloop.c:134,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/mainloop.c:144,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/mainloop.c:159,1
    - Dst: get_prompt
      Src: /src/postgres/src/bin/psql/mainloop.c:159,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/mainloop.c:160,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/mainloop.c:161,1
    - Dst: gets_interactive
      Src: /src/postgres/src/bin/psql/mainloop.c:166,1
    - Dst: get_prompt
      Src: /src/postgres/src/bin/psql/mainloop.c:166,1
    - Dst: gets_fromFile
      Src: /src/postgres/src/bin/psql/mainloop.c:171,1
    - Dst: ferror
      Src: /src/postgres/src/bin/psql/mainloop.c:172,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/mainloop.c:192,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:192,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:196,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/mainloop.c:206,1
    - Dst: memmove
      Src: /src/postgres/src/bin/psql/mainloop.c:207,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/mainloop.c:207,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/mainloop.c:211,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/mainloop.c:213,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:214,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:214,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/mainloop.c:216,1
    - Dst: psql_scan_in_quote
      Src: /src/postgres/src/bin/psql/mainloop.c:222,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/mainloop.c:224,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/mainloop.c:243,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/mainloop.c:248,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/mainloop.c:249,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/mainloop.c:254,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/mainloop.c:272,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/mainloop.c:276,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:295,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:295,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:297,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:297,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:301,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:301,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/mainloop.c:302,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:302,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/mainloop.c:307,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/mainloop.c:308,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:326,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:326,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:329,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:329,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:331,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:331,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/mainloop.c:337,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/mainloop.c:338,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:353,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:353,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:355,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/mainloop.c:355,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/mainloop.c:362,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/mainloop.c:363,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/mainloop.c:369,1
    - Dst: psql_scan_setup
      Src: /src/postgres/src/bin/psql/mainloop.c:381,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/mainloop.c:381,1
    - Dst: standard_strings
      Src: /src/postgres/src/bin/psql/mainloop.c:382,1
    - Dst: psql_scan
      Src: /src/postgres/src/bin/psql/mainloop.c:394,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/bin/psql/mainloop.c:397,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/mainloop.c:398,1
    - Dst: pg_append_history
      Src: /src/postgres/src/bin/psql/mainloop.c:431,1
    - Dst: pg_send_history
      Src: /src/postgres/src/bin/psql/mainloop.c:432,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/mainloop.c:437,1
    - Dst: SendQuery
      Src: /src/postgres/src/bin/psql/mainloop.c:439,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/mainloop.c:450,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/mainloop.c:459,1
    - Dst: pg_send_history
      Src: /src/postgres/src/bin/psql/mainloop.c:483,1
    - Dst: pg_append_history
      Src: /src/postgres/src/bin/psql/mainloop.c:490,1
    - Dst: pg_send_history
      Src: /src/postgres/src/bin/psql/mainloop.c:491,1
    - Dst: HandleSlashCmds
      Src: /src/postgres/src/bin/psql/mainloop.c:496,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/mainloop.c:513,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/mainloop.c:513,1
    - Dst: SendQuery
      Src: /src/postgres/src/bin/psql/mainloop.c:515,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/mainloop.c:524,1
    - Dst: psql_scan_reset
      Src: /src/postgres/src/bin/psql/mainloop.c:527,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/mainloop.c:532,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/mainloop.c:532,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/mainloop.c:536,1
    - Dst: psql_scan_finish
      Src: /src/postgres/src/bin/psql/mainloop.c:538,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/mainloop.c:539,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/mainloop.c:540,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/mainloop.c:541,1
    - Dst: psql_scan_reset
      Src: /src/postgres/src/bin/psql/mainloop.c:543,1
    - Dst: psql_scan_setup
      Src: /src/postgres/src/bin/psql/mainloop.c:544,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/mainloop.c:544,1
    - Dst: standard_strings
      Src: /src/postgres/src/bin/psql/mainloop.c:545,1
    - Dst: pg_append_history
      Src: /src/postgres/src/bin/psql/mainloop.c:571,1
    - Dst: pg_send_history
      Src: /src/postgres/src/bin/psql/mainloop.c:573,1
    - Dst: psql_scan_finish
      Src: /src/postgres/src/bin/psql/mainloop.c:576,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/mainloop.c:577,1
    CyclomaticComplexity: 96
    EdgeCount: 96
    ICount: 256
    argCount: 1
    argNames:
    - source
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 32
    functionDepth: 3
    functionLinenumber: 32
    functionLinenumberEnd: 593
    functionName: MainLoop
    functionSourceFile: /src/postgres/src/bin/psql/mainloop.c
    functionUses: 0
    functionsReached:
    - gets_interactive
    - pg_send_history
    - sigsetjmp
    - printf
    - HandleSlashCmds
    - puts
    - pg_log_error
    - pg_append_history
    - conditional_active
    - createPQExpBuffer
    - SendQuery
    - ferror
    - _
    - psql_scan_set_passthrough
    - Assert
    - get_prompt
    - psql_scan
    - fputs
    - fflush
    - PQExpBufferBroken
    - conditional_stack_pop
    - standard_strings
    - memmove
    - isspace
    - conditional_stack_create
    - conditional_stack_empty
    - resetPQExpBuffer
    - strlen
    - pg_free
    - appendPQExpBufferChar
    - gets_fromFile
    - pg_strdup
    - psql_scan_setup
    - psql_scan_finish
    - pg_strncasecmp
    - pg_fatal
    - strncmp
    - psql_scan_reset
    - psql_scan_in_quote
    - putc
    - psql_scan_create
    linkageType: ''
    returnType: int
    signature: int MainLoop(FILE *source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/psql/variables.c:34,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/variables.c:35,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 43
    functionName: valid_variable_name
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool valid_variable_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/psql/variables.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: CreateVariableSpace
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    linkageType: ''
    returnType: VariableSpace
    signature: VariableSpace CreateVariableSpace(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/variables.c:82,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - space
    - name
    argTypes:
    - VariableSpace
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 94
    functionName: GetVariable
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 3
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: char
    signature: 'char *

      GetVariable(VariableSpace space, const char *name)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/variables.c:118,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/variables.c:120,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/variables.c:122,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/variables.c:124,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/variables.c:126,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/variables.c:129,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/variables.c:131,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/variables.c:133,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/variables.c:135,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:141,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 3
    argNames:
    - value
    - name
    - result
    argTypes:
    - char*
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 146
    functionName: ParseVariableBool
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - pg_strcasecmp
    - strlen
    - pg_strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool ParseVariableBool(const char *value, const char *name, bool *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/postgres/src/bin/psql/variables.c:168,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:178,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - value
    - name
    - result
    argTypes:
    - char*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 182
    functionName: ParseVariableNum
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - strtol
    linkageType: ''
    returnType: bool
    signature: bool ParseVariableNum(const char *value, const char *name, int *result)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:207,1
    - Dst: strtod
      Src: /src/postgres/src/bin/psql/variables.c:212,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:218,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:225,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:242,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:248,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 31
    argCount: 5
    argNames:
    - value
    - name
    - result
    - min
    - max
    argTypes:
    - char*
    - char*
    - double*
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 251
    functionName: ParseVariableDouble
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - strtod
    linkageType: ''
    returnType: bool
    signature: bool ParseVariableDouble(const char *value, const char *name, double
      *result, double min, double max)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/psql/variables.c:267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - space
    argTypes:
    - VariableSpace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 271
    functionName: PrintVariables
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void PrintVariables(VariableSpace space)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: valid_variable_name
      Src: /src/postgres/src/bin/psql/variables.c:290,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:295,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/variables.c:303,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/variables.c:316,1
    - Dst: struct _variable*::substitute_hook
      Src: /src/postgres/src/bin/psql/variables.c:320,1
    - Dst: struct _variable*::assign_hook
      Src: /src/postgres/src/bin/psql/variables.c:323,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/variables.c:329,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/variables.c:341,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/variables.c:342,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/variables.c:346,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/psql/variables.c:357,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/variables.c:358,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/variables.c:359,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 3
    argNames:
    - space
    - name
    - value
    argTypes:
    - VariableSpace
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 366
    functionName: SetVariable
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 8
    functionsReached:
    - valid_variable_name
    - pg_malloc_object
    - strcmp
    - struct _variable*::substitute_hook
    - free
    - pg_free
    - pg_log_error
    - struct _variable*::assign_hook
    - pg_strdup
    linkageType: ''
    returnType: bool
    signature: bool SetVariable(VariableSpace space, const char *name, const char
      *value)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: valid_variable_name
      Src: /src/postgres/src/bin/psql/variables.c:395,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/variables.c:402,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/psql/variables.c:420,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/variables.c:421,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 4
    argNames:
    - space
    - name
    - shook
    - ahook
    argTypes:
    - VariableSpace
    - char*
    - VariableSubstituteHook
    - VariableAssignHook
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 431
    functionName: SetVariableHooks
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - valid_variable_name
    - pg_malloc_object
    - strcmp
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void SetVariableHooks(VariableSpace space, const char *name,\n\t\t\t\t
      VariableSubstituteHook shook,\n\t\t\t\t VariableAssignHook ahook)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/variables.c:442,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/variables.c:443,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/variables.c:447,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - space
    - name
    argTypes:
    - VariableSpace
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 457
    functionName: VariableHasHook
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 1
    functionsReached:
    - Assert
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool VariableHasHook(VariableSpace space, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/variables.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - space
    - name
    argTypes:
    - VariableSpace
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 466
    functionName: SetVariableBool
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - SetVariable
    linkageType: ''
    returnType: bool
    signature: bool SetVariableBool(VariableSpace space, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/variables.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - space
    - name
    argTypes:
    - VariableSpace
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 474
    functionDepth: 2
    functionLinenumber: 474
    functionLinenumberEnd: 478
    functionName: DeleteVariable
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - SetVariable
    linkageType: ''
    returnType: bool
    signature: bool DeleteVariable(VariableSpace space, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - name
    - value
    - suggestions
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 492
    functionName: PsqlVarEnumError
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void PsqlVarEnumError(const char *name, const char *value, const char
      *suggestions)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:240,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:241,1
    - Dst: psql_scan_slash_command
      Src: /src/postgres/src/bin/psql/command.c:244,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:252,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:254,1
    - Dst: exec_command
      Src: /src/postgres/src/bin/psql/command.c:258,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:262,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/psql/command.c:264,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/command.c:275,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/psql/command.c:277,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:278,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/command.c:282,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:283,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/psql/command.c:285,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:290,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:292,1
    - Dst: psql_scan_slash_command_end
      Src: /src/postgres/src/bin/psql/command.c:296,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:298,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:301,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - scan_state
    - cstack
    - query_buf
    - previous_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 304
    functionName: HandleSlashCmds
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - conditional_stack_pop
    - psql_scan_slash_command_end
    - conditional_stack_push
    - strcmp
    - Assert
    - exec_command
    - psql_scan_slash_command
    - psql_scan_slash_option
    - pg_log_warning
    - conditional_active
    - free
    - fflush
    - pg_log_error
    - pg_log_error_hint
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult HandleSlashCmds(PsqlScanState scan_state,\n\t\t\t\tConditionalStack
      cstack,\n\t\t\t\tPQExpBuffer query_buf,\n\t\t\t\tPQExpBuffer previous_buf)"
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/command.c:322,1
    - Dst: is_branching_command
      Src: /src/postgres/src/bin/psql/command.c:332,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/command.c:334,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:338,1
    - Dst: exec_command_a
      Src: /src/postgres/src/bin/psql/command.c:339,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:340,1
    - Dst: exec_command_bind
      Src: /src/postgres/src/bin/psql/command.c:341,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:342,1
    - Dst: exec_command_bind_named
      Src: /src/postgres/src/bin/psql/command.c:343,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:344,1
    - Dst: exec_command_C
      Src: /src/postgres/src/bin/psql/command.c:345,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:346,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:346,1
    - Dst: exec_command_connect
      Src: /src/postgres/src/bin/psql/command.c:347,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:348,1
    - Dst: exec_command_cd
      Src: /src/postgres/src/bin/psql/command.c:349,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:350,1
    - Dst: exec_command_close_prepared
      Src: /src/postgres/src/bin/psql/command.c:351,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:352,1
    - Dst: exec_command_conninfo
      Src: /src/postgres/src/bin/psql/command.c:353,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:354,1
    - Dst: exec_command_copy
      Src: /src/postgres/src/bin/psql/command.c:355,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:356,1
    - Dst: exec_command_copyright
      Src: /src/postgres/src/bin/psql/command.c:357,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:358,1
    - Dst: exec_command_crosstabview
      Src: /src/postgres/src/bin/psql/command.c:359,1
    - Dst: exec_command_d
      Src: /src/postgres/src/bin/psql/command.c:361,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:362,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:362,1
    - Dst: exec_command_edit
      Src: /src/postgres/src/bin/psql/command.c:363,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:365,1
    - Dst: exec_command_ef_ev
      Src: /src/postgres/src/bin/psql/command.c:366,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:367,1
    - Dst: exec_command_ef_ev
      Src: /src/postgres/src/bin/psql/command.c:368,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:369,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:369,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:370,1
    - Dst: exec_command_echo
      Src: /src/postgres/src/bin/psql/command.c:371,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:372,1
    - Dst: exec_command_elif
      Src: /src/postgres/src/bin/psql/command.c:373,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:374,1
    - Dst: exec_command_else
      Src: /src/postgres/src/bin/psql/command.c:375,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:376,1
    - Dst: exec_command_endif
      Src: /src/postgres/src/bin/psql/command.c:377,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:378,1
    - Dst: exec_command_endpipeline
      Src: /src/postgres/src/bin/psql/command.c:379,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:380,1
    - Dst: exec_command_encoding
      Src: /src/postgres/src/bin/psql/command.c:381,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:382,1
    - Dst: exec_command_errverbose
      Src: /src/postgres/src/bin/psql/command.c:383,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:384,1
    - Dst: exec_command_f
      Src: /src/postgres/src/bin/psql/command.c:385,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:386,1
    - Dst: exec_command_flush
      Src: /src/postgres/src/bin/psql/command.c:387,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:388,1
    - Dst: exec_command_flushrequest
      Src: /src/postgres/src/bin/psql/command.c:389,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:390,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:390,1
    - Dst: exec_command_g
      Src: /src/postgres/src/bin/psql/command.c:391,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:392,1
    - Dst: exec_command_gdesc
      Src: /src/postgres/src/bin/psql/command.c:393,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:394,1
    - Dst: exec_command_getenv
      Src: /src/postgres/src/bin/psql/command.c:395,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:396,1
    - Dst: exec_command_getresults
      Src: /src/postgres/src/bin/psql/command.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:398,1
    - Dst: exec_command_gexec
      Src: /src/postgres/src/bin/psql/command.c:399,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:400,1
    - Dst: exec_command_gset
      Src: /src/postgres/src/bin/psql/command.c:401,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:402,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:402,1
    - Dst: exec_command_help
      Src: /src/postgres/src/bin/psql/command.c:403,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:404,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:404,1
    - Dst: exec_command_html
      Src: /src/postgres/src/bin/psql/command.c:405,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:406,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:406,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:407,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:407,1
    - Dst: exec_command_include
      Src: /src/postgres/src/bin/psql/command.c:408,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:409,1
    - Dst: exec_command_if
      Src: /src/postgres/src/bin/psql/command.c:410,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:411,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:411,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:412,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:412,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:413,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:413,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:414,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:414,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:415,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:415,1
    - Dst: exec_command_list
      Src: /src/postgres/src/bin/psql/command.c:416,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:417,1
    - Dst: exec_command_lo
      Src: /src/postgres/src/bin/psql/command.c:418,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:419,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:419,1
    - Dst: exec_command_out
      Src: /src/postgres/src/bin/psql/command.c:420,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:421,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:421,1
    - Dst: exec_command_print
      Src: /src/postgres/src/bin/psql/command.c:422,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:424,1
    - Dst: exec_command_parse
      Src: /src/postgres/src/bin/psql/command.c:425,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:426,1
    - Dst: exec_command_password
      Src: /src/postgres/src/bin/psql/command.c:427,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:428,1
    - Dst: exec_command_prompt
      Src: /src/postgres/src/bin/psql/command.c:429,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:430,1
    - Dst: exec_command_pset
      Src: /src/postgres/src/bin/psql/command.c:431,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:432,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:432,1
    - Dst: exec_command_quit
      Src: /src/postgres/src/bin/psql/command.c:433,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:434,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:434,1
    - Dst: exec_command_reset
      Src: /src/postgres/src/bin/psql/command.c:435,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:436,1
    - Dst: exec_command_restrict
      Src: /src/postgres/src/bin/psql/command.c:437,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:438,1
    - Dst: exec_command_s
      Src: /src/postgres/src/bin/psql/command.c:439,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:440,1
    - Dst: exec_command_sendpipeline
      Src: /src/postgres/src/bin/psql/command.c:441,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:442,1
    - Dst: exec_command_set
      Src: /src/postgres/src/bin/psql/command.c:443,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:444,1
    - Dst: exec_command_setenv
      Src: /src/postgres/src/bin/psql/command.c:445,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:446,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:446,1
    - Dst: exec_command_sf_sv
      Src: /src/postgres/src/bin/psql/command.c:447,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:448,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:448,1
    - Dst: exec_command_sf_sv
      Src: /src/postgres/src/bin/psql/command.c:449,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:450,1
    - Dst: exec_command_startpipeline
      Src: /src/postgres/src/bin/psql/command.c:451,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:452,1
    - Dst: exec_command_syncpipeline
      Src: /src/postgres/src/bin/psql/command.c:453,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:454,1
    - Dst: exec_command_t
      Src: /src/postgres/src/bin/psql/command.c:455,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:456,1
    - Dst: exec_command_T
      Src: /src/postgres/src/bin/psql/command.c:457,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:458,1
    - Dst: exec_command_timing
      Src: /src/postgres/src/bin/psql/command.c:459,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:460,1
    - Dst: exec_command_unrestrict
      Src: /src/postgres/src/bin/psql/command.c:461,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:462,1
    - Dst: exec_command_unset
      Src: /src/postgres/src/bin/psql/command.c:463,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:464,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:464,1
    - Dst: exec_command_write
      Src: /src/postgres/src/bin/psql/command.c:465,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:467,1
    - Dst: exec_command_watch
      Src: /src/postgres/src/bin/psql/command.c:468,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:470,1
    - Dst: exec_command_x
      Src: /src/postgres/src/bin/psql/command.c:471,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:472,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:473,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:473,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:474,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:474,1
    - Dst: exec_command_z
      Src: /src/postgres/src/bin/psql/command.c:475,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:476,1
    - Dst: exec_command_shell_escape
      Src: /src/postgres/src/bin/psql/command.c:477,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:478,1
    - Dst: exec_command_slash_command_help
      Src: /src/postgres/src/bin/psql/command.c:479,1
    - Dst: copy_previous_query
      Src: /src/postgres/src/bin/psql/command.c:489,1
    CyclomaticComplexity: 99
    EdgeCount: 99
    ICount: 138
    argCount: 5
    argNames:
    - cmd
    - scan_state
    - cstack
    - query_buf
    - previous_buf
    argTypes:
    - char*
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 492
    functionName: exec_command
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - exec_command_copy
    - exec_command_gset
    - exec_command_a
    - exec_command_crosstabview
    - exec_command_reset
    - exec_command_connect
    - strcmp
    - exec_command_unset
    - exec_command_restrict
    - exec_command_bind_named
    - exec_command_quit
    - exec_command_write
    - pg_log_warning
    - conditional_active
    - exec_command_unrestrict
    - exec_command_sf_sv
    - exec_command_t
    - copy_previous_query
    - exec_command_C
    - exec_command_endif
    - exec_command_password
    - exec_command_gdesc
    - exec_command_pset
    - exec_command_setenv
    - exec_command_conninfo
    - exec_command_f
    - exec_command_lo
    - exec_command_syncpipeline
    - exec_command_ef_ev
    - exec_command_x
    - exec_command_copyright
    - exec_command_sendpipeline
    - is_branching_command
    - exec_command_encoding
    - exec_command_d
    - exec_command_flushrequest
    - exec_command_include
    - exec_command_errverbose
    - exec_command_flush
    - exec_command_elif
    - exec_command_z
    - exec_command_html
    - exec_command_s
    - exec_command_gexec
    - exec_command_getenv
    - exec_command_T
    - exec_command_parse
    - exec_command_echo
    - exec_command_prompt
    - exec_command_close_prepared
    - exec_command_cd
    - exec_command_endpipeline
    - pg_strcasecmp
    - exec_command_help
    - exec_command_slash_command_help
    - exec_command_startpipeline
    - exec_command_print
    - exec_command_g
    - exec_command_set
    - exec_command_out
    - exec_command_timing
    - exec_command_edit
    - strncmp
    - exec_command_if
    - exec_command_watch
    - exec_command_shell_escape
    - exec_command_else
    - exec_command_list
    - exec_command_bind
    - exec_command_getresults
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command(const char *cmd,\n\t\t\t PsqlScanState
      scan_state,\n\t\t\t ConditionalStack cstack,\n\t\t\t PQExpBuffer query_buf,\n\t\t\t
      PQExpBuffer previous_buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:508,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 514
    functionName: exec_command_a
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_pset
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_a(PsqlScanState scan_state, bool active_branch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:530,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:532,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/psql/command.c:538,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 519
    functionDepth: 2
    functionLinenumber: 519
    functionLinenumberEnd: 550
    functionName: exec_command_bind
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - pg_realloc_array
    - psql_scan_slash_option
    - ignore_slash_options
    - clean_extended_state
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_bind(PsqlScanState scan_state, bool active_branch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:567,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:570,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:573,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:582,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/psql/command.c:588,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:596,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 555
    functionDepth: 2
    functionLinenumber: 555
    functionLinenumberEnd: 599
    functionName: exec_command_bind_named
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - clean_extended_state
    - psql_scan_slash_option
    - ignore_slash_options
    - pg_log_error
    - pg_realloc_array
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_bind_named(PsqlScanState scan_state,
      bool active_branch,\n\t\t\t\t\t\tconst char *cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:611,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:614,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:615,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 621
    functionName: exec_command_C
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - do_pset
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_C(PsqlScanState scan_state, bool active_branch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read_connect_arg
      Src: /src/postgres/src/bin/psql/command.c:651,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:652,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:656,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:662,1
    - Dst: read_connect_arg
      Src: /src/postgres/src/bin/psql/command.c:663,1
    - Dst: read_connect_arg
      Src: /src/postgres/src/bin/psql/command.c:669,1
    - Dst: read_connect_arg
      Src: /src/postgres/src/bin/psql/command.c:670,1
    - Dst: read_connect_arg
      Src: /src/postgres/src/bin/psql/command.c:671,1
    - Dst: do_connect
      Src: /src/postgres/src/bin/psql/command.c:673,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:675,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:676,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:677,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:679,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:682,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 637
    functionDepth: 2
    functionLinenumber: 637
    functionLinenumberEnd: 685
    functionName: exec_command_connect
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_connect
    - read_connect_arg
    - free
    - strncmp
    - ParseVariableBool
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_connect(PsqlScanState scan_state, bool
      active_branch)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:697,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:707,1
    - Dst: geteuid
      Src: /src/postgres/src/bin/psql/command.c:710,1
    - Dst: getpwuid
      Src: /src/postgres/src/bin/psql/command.c:714,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:719,1
    - Dst: strerror
      Src: /src/postgres/src/bin/psql/command.c:721,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:721,1
    - Dst: chdir
      Src: /src/postgres/src/bin/psql/command.c:736,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:738,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:743,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:746,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 690
    functionDepth: 1
    functionLinenumber: 690
    functionLinenumberEnd: 749
    functionName: exec_command_cd
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - geteuid
    - _
    - chdir
    - psql_scan_slash_option
    - getenv
    - free
    - ignore_slash_options
    - pg_log_error
    - strerror
    - getpwuid
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_cd(PsqlScanState scan_state, bool active_branch,
      const char *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:761,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:764,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:768,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:779,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 754
    functionDepth: 2
    functionLinenumber: 754
    functionLinenumberEnd: 782
    functionName: exec_command_close_prepared
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - pg_log_error
    - psql_scan_slash_option
    - ignore_slash_options
    - clean_extended_state
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_close_prepared(PsqlScanState scan_state,
      bool active_branch, const char *cmd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:808,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:811,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:811,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:816,1
    - Dst: PQhostaddr
      Src: /src/postgres/src/bin/psql/command.c:817,1
    - Dst: PQfullProtocolVersion
      Src: /src/postgres/src/bin/psql/command.c:818,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:819,1
    - Dst: PQsslInUse
      Src: /src/postgres/src/bin/psql/command.c:821,1
    - Dst: PQconnectionUsedPassword
      Src: /src/postgres/src/bin/psql/command.c:822,1
    - Dst: PQconnectionUsedGSSAPI
      Src: /src/postgres/src/bin/psql/command.c:823,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:824,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/bin/psql/command.c:824,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/psql/command.c:827,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:828,1
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/command.c:839,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:839,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/command.c:840,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:840,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/command.c:841,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:841,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:844,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:844,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:845,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:848,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:848,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:849,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:849,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/psql/command.c:852,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:857,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:857,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:858,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:862,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:862,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:863,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:868,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:868,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:869,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:872,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:872,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:873,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:878,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:878,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:879,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:879,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:882,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:882,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:883,1
    - Dst: PQoptions
      Src: /src/postgres/src/bin/psql/command.c:883,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:886,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:886,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:887,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:890,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:890,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:891,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:891,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:891,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:894,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:894,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:895,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:895,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:895,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:898,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:898,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:899,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:902,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:902,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:903,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:903,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:903,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:915,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:916,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:917,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:918,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:919,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:920,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:922,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:922,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:923,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:923,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:925,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:925,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:926,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:926,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:928,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:928,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:929,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:929,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:931,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:931,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:932,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:932,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:934,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:934,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:935,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:935,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:936,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:936,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:938,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:938,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:939,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:939,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/command.c:942,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:943,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:944,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:944,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/command.c:946,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:947,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:948,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:948,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/command.c:950,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/command.c:951,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/command.c:953,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/command.c:954,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 91
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 957
    functionName: exec_command_conninfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcmp
    - PQsslInUse
    - PQsslAttribute
    - is_unixsock_path
    - PQuser
    - printf
    - PQconnectionUsedGSSAPI
    - PQhostaddr
    - _
    - PQhost
    - pfree
    - PQoptions
    - printTableAddCell
    - PQdb
    - PQport
    - printTableInit
    - PQfullProtocolVersion
    - psprintf
    - printTableAddHeader
    - printTable
    - PQbackendPID
    - printTableCleanup
    - PQconnectionUsedPassword
    - PQparameterStatus
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_conninfo(PsqlScanState scan_state, bool
      active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:969,1
    - Dst: do_copy
      Src: /src/postgres/src/bin/psql/command.c:972,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:973,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:976,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 962
    functionDepth: 4
    functionLinenumber: 962
    functionLinenumberEnd: 979
    functionName: exec_command_copy
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - free
    - psql_scan_slash_option
    - do_copy
    - ignore_slash_whole_line
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_copy(PsqlScanState scan_state, bool active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: print_copyright
      Src: /src/postgres/src/bin/psql/command.c:988,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 984
    functionDepth: 1
    functionLinenumber: 984
    functionLinenumberEnd: 991
    functionName: exec_command_copyright
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - print_copyright
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_copyright(PsqlScanState scan_state, bool
      active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/command.c:1005,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1006,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1012,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 996
    functionDepth: 1
    functionLinenumber: 996
    functionLinenumberEnd: 1015
    functionName: exec_command_crosstabview
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - lengthof
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_crosstabview(PsqlScanState scan_state,
      bool active_branch)
  - BBCount: 89
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1034,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1037,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1038,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1047,1
    - Dst: describeTableDetails
      Src: /src/postgres/src/bin/psql/command.c:1056,1
    - Dst: listTables
      Src: /src/postgres/src/bin/psql/command.c:1059,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1066,1
    - Dst: describeAccessMethods
      Src: /src/postgres/src/bin/psql/command.c:1073,1
    - Dst: listOperatorClasses
      Src: /src/postgres/src/bin/psql/command.c:1076,1
    - Dst: listOperatorFamilies
      Src: /src/postgres/src/bin/psql/command.c:1079,1
    - Dst: listOpFamilyOperators
      Src: /src/postgres/src/bin/psql/command.c:1082,1
    - Dst: listOpFamilyFunctions
      Src: /src/postgres/src/bin/psql/command.c:1085,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1092,1
    - Dst: describeAggregates
      Src: /src/postgres/src/bin/psql/command.c:1096,1
    - Dst: describeTablespaces
      Src: /src/postgres/src/bin/psql/command.c:1099,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1102,1
    - Dst: describeConfigurationParameters
      Src: /src/postgres/src/bin/psql/command.c:1103,1
    - Dst: listConversions
      Src: /src/postgres/src/bin/psql/command.c:1107,1
    - Dst: listCasts
      Src: /src/postgres/src/bin/psql/command.c:1112,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1115,1
    - Dst: listDefaultACLs
      Src: /src/postgres/src/bin/psql/command.c:1116,1
    - Dst: objectDescription
      Src: /src/postgres/src/bin/psql/command.c:1118,1
    - Dst: listDomains
      Src: /src/postgres/src/bin/psql/command.c:1121,1
    - Dst: exec_command_dfo
      Src: /src/postgres/src/bin/psql/command.c:1135,1
    - Dst: describeRoles
      Src: /src/postgres/src/bin/psql/command.c:1145,1
    - Dst: listLargeObjects
      Src: /src/postgres/src/bin/psql/command.c:1148,1
    - Dst: listLanguages
      Src: /src/postgres/src/bin/psql/command.c:1151,1
    - Dst: listSchemas
      Src: /src/postgres/src/bin/psql/command.c:1154,1
    - Dst: exec_command_dfo
      Src: /src/postgres/src/bin/psql/command.c:1157,1
    - Dst: listCollations
      Src: /src/postgres/src/bin/psql/command.c:1161,1
    - Dst: permissionsList
      Src: /src/postgres/src/bin/psql/command.c:1164,1
    - Dst: listPartitionedTables
      Src: /src/postgres/src/bin/psql/command.c:1176,1
    - Dst: describeTypes
      Src: /src/postgres/src/bin/psql/command.c:1185,1
    - Dst: listTables
      Src: /src/postgres/src/bin/psql/command.c:1194,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1202,1
    - Dst: listDbRoleSettings
      Src: /src/postgres/src/bin/psql/command.c:1204,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1206,1
    - Dst: describeRoleGrants
      Src: /src/postgres/src/bin/psql/command.c:1209,1
    - Dst: describePublications
      Src: /src/postgres/src/bin/psql/command.c:1218,1
    - Dst: listPublications
      Src: /src/postgres/src/bin/psql/command.c:1220,1
    - Dst: describeSubscriptions
      Src: /src/postgres/src/bin/psql/command.c:1223,1
    - Dst: describeRoles
      Src: /src/postgres/src/bin/psql/command.c:1230,1
    - Dst: listTSConfigs
      Src: /src/postgres/src/bin/psql/command.c:1238,1
    - Dst: listTSParsers
      Src: /src/postgres/src/bin/psql/command.c:1241,1
    - Dst: listTSDictionaries
      Src: /src/postgres/src/bin/psql/command.c:1244,1
    - Dst: listTSTemplates
      Src: /src/postgres/src/bin/psql/command.c:1247,1
    - Dst: listForeignServers
      Src: /src/postgres/src/bin/psql/command.c:1258,1
    - Dst: listUserMappings
      Src: /src/postgres/src/bin/psql/command.c:1261,1
    - Dst: listForeignDataWrappers
      Src: /src/postgres/src/bin/psql/command.c:1264,1
    - Dst: listForeignTables
      Src: /src/postgres/src/bin/psql/command.c:1267,1
    - Dst: listExtensionContents
      Src: /src/postgres/src/bin/psql/command.c:1276,1
    - Dst: listExtensions
      Src: /src/postgres/src/bin/psql/command.c:1278,1
    - Dst: listExtendedStats
      Src: /src/postgres/src/bin/psql/command.c:1281,1
    - Dst: listEventTriggers
      Src: /src/postgres/src/bin/psql/command.c:1284,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1293,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1296,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 222
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1020
    functionDepth: 3
    functionLinenumber: 1020
    functionLinenumberEnd: 1302
    functionName: exec_command_d
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - permissionsList
    - describeSubscriptions
    - listDomains
    - strchr
    - listOpFamilyFunctions
    - describePublications
    - exec_command_dfo
    - listPublications
    - listTables
    - listConversions
    - listTSDictionaries
    - listEventTriggers
    - listTSTemplates
    - ignore_slash_options
    - listOpFamilyOperators
    - describeTypes
    - describeRoles
    - describeAccessMethods
    - describeTableDetails
    - listExtensionContents
    - listExtendedStats
    - listDefaultACLs
    - listLanguages
    - listForeignServers
    - listCollations
    - listCasts
    - listPartitionedTables
    - listTSConfigs
    - listUserMappings
    - objectDescription
    - listOperatorFamilies
    - listOperatorClasses
    - describeTablespaces
    - describeAggregates
    - listLargeObjects
    - describeConfigurationParameters
    - listTSParsers
    - listDbRoleSettings
    - describeRoleGrants
    - listSchemas
    - psql_scan_slash_option
    - free
    - strncmp
    - listForeignTables
    - listForeignDataWrappers
    - listExtensions
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_d(PsqlScanState scan_state, bool active_branch,
      const char *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1319,1
    - Dst: describeFunctions
      Src: /src/postgres/src/bin/psql/command.c:1329,1
    - Dst: describeOperators
      Src: /src/postgres/src/bin/psql/command.c:1333,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1338,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 5
    argNames:
    - scan_state
    - cmd
    - pattern
    - show_verbose
    - show_system
    argTypes:
    - PsqlScanState
    - char*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1305
    functionDepth: 3
    functionLinenumber: 1305
    functionLinenumberEnd: 1341
    functionName: exec_command_dfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - describeFunctions
    - psql_scan_slash_option
    - free
    - describeOperators
    linkageType: ''
    returnType: bool
    signature: "bool exec_command_dfo(PsqlScanState scan_state, const char *cmd,\n\t\t\t\t
      const char *pattern,\n\t\t\t\t bool show_verbose, bool show_system)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1357,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1366,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1371,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/command.c:1377,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:1377,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:1387,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1390,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:1398,1
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/bin/psql/command.c:1401,1
    - Dst: copy_previous_query
      Src: /src/postgres/src/bin/psql/command.c:1412,1
    - Dst: do_edit
      Src: /src/postgres/src/bin/psql/command.c:1416,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:1427,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1429,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1430,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1434,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 4
    argNames:
    - scan_state
    - active_branch
    - query_buf
    - previous_buf
    argTypes:
    - PsqlScanState
    - bool
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1347
    functionDepth: 2
    functionLinenumber: 1347
    functionLinenumberEnd: 1437
    functionName: exec_command_edit
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_edit
    - canonicalize_path_enc
    - expand_tilde
    - resetPQExpBuffer
    - psql_scan_slash_option
    - strlen
    - strspn
    - copy_previous_query
    - atoi
    - free
    - pg_log_error
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_edit(PsqlScanState scan_state, bool active_branch,\n\t\t\t\t
      \ PQExpBuffer query_buf, PQExpBuffer previous_buf)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1451,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1458,1
    - Dst: strip_lineno_from_objdesc
      Src: /src/postgres/src/bin/psql/command.c:1466,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:1475,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:1477,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:1485,1
    - Dst: lookup_object_oid
      Src: /src/postgres/src/bin/psql/command.c:1490,1
    - Dst: get_create_object_cmd
      Src: /src/postgres/src/bin/psql/command.c:1495,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1515,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1516,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1517,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1521,1
    - Dst: do_edit
      Src: /src/postgres/src/bin/psql/command.c:1533,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:1536,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:1536,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:1546,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1548,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:1551,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 47
    argCount: 4
    argNames:
    - scan_state
    - active_branch
    - query_buf
    - is_func
    argTypes:
    - PsqlScanState
    - bool
    - PQExpBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1443
    functionDepth: 1
    functionLinenumber: 1443
    functionLinenumberEnd: 1554
    functionName: exec_command_ef_ev
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_edit
    - _
    - strchr
    - strip_lineno_from_objdesc
    - resetPQExpBuffer
    - psql_scan_slash_option
    - get_create_object_cmd
    - strncmp
    - free
    - ignore_slash_whole_line
    - puts
    - pg_log_error
    - lookup_object_oid
    - appendPQExpBufferStr
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_ef_ev(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t   PQExpBuffer query_buf, bool is_func)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:1570,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:1572,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1577,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:1580,1
    - Dst: fputc
      Src: /src/postgres/src/bin/psql/command.c:1587,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/command.c:1588,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1590,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/command.c:1593,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1596,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1559
    functionDepth: 1
    functionLinenumber: 1559
    functionLinenumberEnd: 1599
    functionName: exec_command_echo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcmp
    - fputc
    - fputs
    - psql_scan_slash_option
    - free
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_echo(PsqlScanState scan_state, bool active_branch,
      const char *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1609,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:1615,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/psql/command.c:1615,1
    - Dst: PQsetClientEncoding
      Src: /src/postgres/src/bin/psql/command.c:1620,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1621,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/command.c:1625,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/psql/command.c:1627,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:1628,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/psql/command.c:1629,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1631,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1635,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1604
    functionDepth: 2
    functionLinenumber: 1604
    functionLinenumberEnd: 1638
    functionName: exec_command_encoding
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - PQsetClientEncoding
    - setFmtEncoding
    - PQclientEncoding
    - pg_encoding_to_char
    - psql_scan_slash_option
    - free
    - SetVariable
    - ignore_slash_options
    - puts
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_encoding(PsqlScanState scan_state, bool
      active_branch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQresultVerboseErrorMessage
      Src: /src/postgres/src/bin/psql/command.c:1652,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1657,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/command.c:1658,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:1661,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:1661,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:1664,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:1664,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1643
    functionDepth: 1
    functionLinenumber: 1643
    functionLinenumberEnd: 1668
    functionName: exec_command_errverbose
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - _
    - puts
    - PQresultVerboseErrorMessage
    - PQfreemem
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_errverbose(PsqlScanState scan_state, bool
      active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1680,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:1683,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1684,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1687,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1690
      start: 1673
    functionDepth: 1
    functionLinenumber: 1673
    functionLinenumberEnd: 1690
    functionName: exec_command_f
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - do_pset
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_f(PsqlScanState scan_state, bool active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1709
      start: 1695
    functionDepth: 1
    functionLinenumber: 1695
    functionLinenumberEnd: 1709
    functionName: exec_command_flush
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_flush(PsqlScanState scan_state, bool active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1725,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1714
    functionDepth: 1
    functionLinenumber: 1714
    functionLinenumberEnd: 1728
    functionName: exec_command_flushrequest
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_flushrequest(PsqlScanState scan_state,
      bool active_branch)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1749,1
    - Dst: process_command_g_options
      Src: /src/postgres/src/bin/psql/command.c:1755,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1757,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1759,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/command.c:1765,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1767,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:1768,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1769,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:1777,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:1778,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:1780,1
    - Dst: savePsetInfo
      Src: /src/postgres/src/bin/psql/command.c:1784,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1790,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1793
      start: 1739
    functionDepth: 2
    functionLinenumber: 1739
    functionLinenumberEnd: 1793
    functionName: exec_command_g
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - process_command_g_options
    - strcmp
    - clean_extended_state
    - PQpipelineStatus
    - expand_tilde
    - psql_scan_slash_option
    - free
    - savePsetInfo
    - pg_log_error
    - pg_strdup
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_g(PsqlScanState scan_state, bool active_branch,
      const char *cmd)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1817,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1823,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:1831,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1842,1
    - Dst: savePsetInfo
      Src: /src/postgres/src/bin/psql/command.c:1850,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:1851,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1859,1
    - Dst: restorePsetInfo
      Src: /src/postgres/src/bin/psql/command.c:1865,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 36
    argCount: 4
    argNames:
    - first_option
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - char*
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1800
    functionDepth: 1
    functionLinenumber: 1800
    functionLinenumberEnd: 1870
    functionName: process_command_g_options
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strchr
    - do_pset
    - psql_scan_slash_option
    - strlen
    - free
    - savePsetInfo
    - pg_log_error
    - restorePsetInfo
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult process_command_g_options(char *first_option, PsqlScanState
      scan_state,\n\t\t\t\t\t\t  bool active_branch, const char *cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1875
    functionDepth: 0
    functionLinenumber: 1875
    functionLinenumberEnd: 1887
    functionName: exec_command_gdesc
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_gdesc(PsqlScanState scan_state, bool active_branch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1900,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1902,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1907,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:1912,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:1914,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1917,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1918,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1921,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1892
    functionDepth: 2
    functionLinenumber: 1892
    functionLinenumberEnd: 1924
    functionName: exec_command_getenv
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - getenv
    - SetVariable
    - ignore_slash_options
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_getenv(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t\tconst char *cmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1941,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:1946,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1949,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1956,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1929
    functionDepth: 1
    functionLinenumber: 1929
    functionLinenumberEnd: 1959
    functionName: exec_command_getresults
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - pg_log_error
    - psql_scan_slash_option
    - ignore_slash_options
    - atoi
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_getresults(PsqlScanState scan_state, bool
      active_branch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/command.c:1972,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1974,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:1975,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1965
    functionDepth: 2
    functionLinenumber: 1965
    functionLinenumberEnd: 1983
    functionName: exec_command_gexec
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - pg_log_error
    - PQpipelineStatus
    - clean_extended_state
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_gexec(PsqlScanState scan_state, bool active_branch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1995,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/command.c:1998,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2000,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:2001,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:2010,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2016,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2019
      start: 1988
    functionDepth: 2
    functionLinenumber: 1988
    functionLinenumberEnd: 2019
    functionName: exec_command_gset
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - clean_extended_state
    - PQpipelineStatus
    - psql_scan_slash_option
    - ignore_slash_options
    - pg_log_error
    - pg_strdup
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_gset(PsqlScanState scan_state, bool active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2029,1
    - Dst: helpSQL
      Src: /src/postgres/src/bin/psql/command.c:2032,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2033,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:2036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 2024
    functionDepth: 2
    functionLinenumber: 2024
    functionLinenumberEnd: 2039
    functionName: exec_command_help
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - helpSQL
    - psql_scan_slash_option
    - free
    - ignore_slash_whole_line
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_help(PsqlScanState scan_state, bool active_branch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:2052,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:2054,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2044
    functionDepth: 1
    functionLinenumber: 2044
    functionLinenumberEnd: 2058
    functionName: exec_command_html
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_pset
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_html(PsqlScanState scan_state, bool active_branch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2070,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2075,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2082,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2083,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2084,1
    - Dst: process_file
      Src: /src/postgres/src/bin/psql/command.c:2085,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2086,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2090,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2093
      start: 2063
    functionDepth: 2
    functionLinenumber: 2063
    functionLinenumberEnd: 2093
    functionName: exec_command_include
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcmp
    - expand_tilde
    - process_file
    - psql_scan_slash_option
    - free
    - ignore_slash_options
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_include(PsqlScanState scan_state, bool
      active_branch, const char *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/command.c:2108,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/psql/command.c:2116,1
    - Dst: save_query_text_state
      Src: /src/postgres/src/bin/psql/command.c:2119,1
    - Dst: is_true_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2124,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2125,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/psql/command.c:2134,1
    - Dst: save_query_text_state
      Src: /src/postgres/src/bin/psql/command.c:2137,1
    - Dst: ignore_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2143
      start: 2104
    functionDepth: 1
    functionLinenumber: 2104
    functionLinenumberEnd: 2143
    functionName: exec_command_if
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - is_true_boolean_expression
    - conditional_stack_poke
    - conditional_stack_push
    - save_query_text_state
    - ignore_boolean_expression
    - conditional_active
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_if(PsqlScanState scan_state, ConditionalStack
      cstack,\n\t\t\t\tPQExpBuffer query_buf)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/psql/command.c:2156,1
    - Dst: save_query_text_state
      Src: /src/postgres/src/bin/psql/command.c:2165,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2172,1
    - Dst: ignore_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2173,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2180,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2187,1
    - Dst: is_true_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2188,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2189,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2196,1
    - Dst: ignore_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2202,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2206,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2211,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2217
      start: 2150
    functionDepth: 1
    functionLinenumber: 2150
    functionLinenumberEnd: 2217
    functionName: exec_command_elif
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - conditional_stack_peek
    - conditional_stack_poke
    - pg_log_error
    - save_query_text_state
    - ignore_boolean_expression
    - discard_query_text
    - is_true_boolean_expression
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_elif(PsqlScanState scan_state, ConditionalStack
      cstack,\n\t\t\t\t  PQExpBuffer query_buf)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/psql/command.c:2232,1
    - Dst: save_query_text_state
      Src: /src/postgres/src/bin/psql/command.c:2241,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2244,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2251,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2257,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2264,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2271,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2275,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2280,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2286
      start: 2226
    functionDepth: 1
    functionLinenumber: 2226
    functionLinenumberEnd: 2286
    functionName: exec_command_else
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - conditional_stack_peek
    - conditional_stack_poke
    - save_query_text_state
    - discard_query_text
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_else(PsqlScanState scan_state, ConditionalStack
      cstack,\n\t\t\t\t  PQExpBuffer query_buf)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/psql/command.c:2297,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/psql/command.c:2302,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:2303,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2312,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/psql/command.c:2315,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:2316,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2320,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2326
      start: 2291
    functionDepth: 1
    functionLinenumber: 2291
    functionLinenumberEnd: 2326
    functionName: exec_command_endif
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - conditional_stack_peek
    - conditional_stack_pop
    - Assert
    - discard_query_text
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_endif(PsqlScanState scan_state, ConditionalStack
      cstack,\n\t\t\t\t   PQExpBuffer query_buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2342,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2345,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2349,1
    - Dst: listAllDbs
      Src: /src/postgres/src/bin/psql/command.c:2352,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2357,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2363
      start: 2331
    functionDepth: 2
    functionLinenumber: 2331
    functionLinenumberEnd: 2363
    functionName: exec_command_list
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strchr
    - psql_scan_slash_option
    - free
    - ignore_slash_options
    - listAllDbs
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_list(PsqlScanState scan_state, bool active_branch,
      const char *cmd)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2379,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2381,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2384,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2388,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2393,1
    - Dst: do_lo_export
      Src: /src/postgres/src/bin/psql/command.c:2394,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2398,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2402,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2407,1
    - Dst: do_lo_import
      Src: /src/postgres/src/bin/psql/command.c:2408,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:2412,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2417,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2421,1
    - Dst: listLargeObjects
      Src: /src/postgres/src/bin/psql/command.c:2424,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2430,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2434,1
    - Dst: do_lo_unlink
      Src: /src/postgres/src/bin/psql/command.c:2438,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2444,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2445,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2448,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2454
      start: 2368
    functionDepth: 7
    functionLinenumber: 2368
    functionLinenumberEnd: 2454
    functionName: exec_command_lo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_lo_import
    - strcmp
    - strchr
    - do_lo_export
    - expand_tilde
    - do_lo_unlink
    - psql_scan_slash_option
    - strncmp
    - free
    - ignore_slash_options
    - pg_log_error
    - listLargeObjects
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_lo(PsqlScanState scan_state, bool active_branch,
      const char *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2466,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2469,1
    - Dst: setQFout
      Src: /src/postgres/src/bin/psql/command.c:2470,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2471,1
    - Dst: ignore_slash_filepipe
      Src: /src/postgres/src/bin/psql/command.c:2474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2477
      start: 2459
    functionDepth: 3
    functionLinenumber: 2459
    functionLinenumberEnd: 2477
    functionName: exec_command_out
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_filepipe
    - expand_tilde
    - psql_scan_slash_option
    - free
    - setQFout
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_out(PsqlScanState scan_state, bool active_branch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:2494,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:2496,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:2498,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:2498,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:2499,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 4
    argNames:
    - scan_state
    - active_branch
    - query_buf
    - previous_buf
    argTypes:
    - PsqlScanState
    - bool
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2503
      start: 2482
    functionDepth: 0
    functionLinenumber: 2482
    functionLinenumberEnd: 2503
    functionName: exec_command_print
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - puts
    - fflush
    - _
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_print(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t   PQExpBuffer query_buf, PQExpBuffer previous_buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2516,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:2519,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2523,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2537
      start: 2508
    functionDepth: 2
    functionLinenumber: 2508
    functionLinenumberEnd: 2537
    functionName: exec_command_parse
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - pg_log_error
    - psql_scan_slash_option
    - ignore_slash_options
    - clean_extended_state
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_parse(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t   const char *cmd)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2549,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/command.c:2561,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:2565,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:2565,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/command.c:2566,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2574,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2575,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:2575,1
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/bin/psql/command.c:2577,1
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/bin/psql/command.c:2579,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2586,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2588,1
    - Dst: PQchangePassword
      Src: /src/postgres/src/bin/psql/command.c:2593,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/command.c:2595,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/command.c:2597,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/command.c:2597,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/command.c:2601,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:2604,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2605,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2606,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2607,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2610,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2542
    functionDepth: 5
    functionLinenumber: 2542
    functionLinenumberEnd: 2613
    functionName: exec_command_password
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - simple_prompt_extended
    - ignore_slash_options
    - PQgetvalue
    - pg_log_error
    - _
    - printfPQExpBuffer
    - PQresultStatus
    - PQchangePassword
    - pg_free
    - termPQExpBuffer
    - pg_log_info
    - PSQLexec
    - PQerrorMessage
    - pg_strdup
    - psql_scan_slash_option
    - initPQExpBuffer
    - free
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_password(PsqlScanState scan_state, bool
      active_branch)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2631,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2632,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2636,1
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/bin/psql/command.c:2659,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/command.c:2665,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:2666,1
    - Dst: gets_fromFile
      Src: /src/postgres/src/bin/psql/command.c:2668,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2671,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:2678,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2681,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2682,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2683,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2687,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2690
      start: 2618
    functionDepth: 2
    functionLinenumber: 2618
    functionLinenumberEnd: 2690
    functionName: exec_command_prompt
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - fputs
    - simple_prompt_extended
    - psql_scan_slash_option
    - free
    - fflush
    - SetVariable
    - ignore_slash_options
    - pg_log_error
    - gets_fromFile
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_prompt(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t\tconst char *cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2702,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2704,1
    - Dst: pset_value_string
      Src: /src/postgres/src/bin/psql/command.c:2728,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:2730,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2731,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:2737,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2739,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2740,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2743,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2746
      start: 2695
    functionDepth: 1
    functionLinenumber: 2695
    functionLinenumberEnd: 2746
    functionName: exec_command_pset
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - pset_value_string
    - do_pset
    - psql_scan_slash_option
    - free
    - printf
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_pset(PsqlScanState scan_state, bool active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2760
      start: 2751
    functionDepth: 0
    functionLinenumber: 2751
    functionLinenumberEnd: 2760
    functionName: exec_command_quit
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_quit(PsqlScanState scan_state, bool active_branch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2771,1
    - Dst: psql_scan_reset
      Src: /src/postgres/src/bin/psql/command.c:2772,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:2774,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:2774,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - query_buf
    argTypes:
    - PsqlScanState
    - bool
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2778
      start: 2765
    functionDepth: 1
    functionLinenumber: 2765
    functionLinenumberEnd: 2778
    functionName: exec_command_reset
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - puts
    - resetPQExpBuffer
    - _
    - psql_scan_reset
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_reset(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t   PQExpBuffer query_buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:2791,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2793,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2796,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:2800,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2804,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2783
    functionDepth: 1
    functionLinenumber: 2783
    functionLinenumberEnd: 2807
    functionName: exec_command_restrict
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - Assert
    - pstrdup
    - psql_scan_slash_option
    - ignore_slash_options
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_restrict(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t\t  const char *cmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2819,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2822,1
    - Dst: printHistory
      Src: /src/postgres/src/bin/psql/command.c:2823,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:2825,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:2825,1
    - Dst: putchar
      Src: /src/postgres/src/bin/psql/command.c:2827,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2828,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2831,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2834
      start: 2812
    functionDepth: 2
    functionLinenumber: 2812
    functionLinenumberEnd: 2834
    functionName: exec_command_s
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - _
    - printHistory
    - expand_tilde
    - putchar
    - psql_scan_slash_option
    - free
    - printf
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_s(PsqlScanState scan_state, bool active_branch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/command.c:2846,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2855,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:2856,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2862,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:2863,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2868,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2871
      start: 2839
    functionDepth: 2
    functionLinenumber: 2839
    functionLinenumberEnd: 2871
    functionName: exec_command_sendpipeline
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - pg_log_error
    - PQpipelineStatus
    - ignore_slash_options
    - clean_extended_state
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_sendpipeline(PsqlScanState scan_state,
      bool active_branch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2883,1
    - Dst: PrintVariables
      Src: /src/postgres/src/bin/psql/command.c:2889,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2900,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:2902,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2903,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2905,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/psql/command.c:2908,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:2908,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:2908,1
    - Dst: strcat
      Src: /src/postgres/src/bin/psql/command.c:2909,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2910,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:2913,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:2916,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2918,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2921,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2924
      start: 2876
    functionDepth: 2
    functionLinenumber: 2876
    functionLinenumberEnd: 2924
    functionName: exec_command_set
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcat
    - PrintVariables
    - psql_scan_slash_option
    - free
    - pg_realloc
    - strlen
    - ignore_slash_options
    - pg_free
    - SetVariable
    - pg_strdup
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_set(PsqlScanState scan_state, bool active_branch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2937,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2939,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2944,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2947,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2949,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/psql/command.c:2956,1
    - Dst: setenv
      Src: /src/postgres/src/bin/psql/command.c:2962,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2965,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2966,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2969,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2972
      start: 2929
    functionDepth: 1
    functionLinenumber: 2929
    functionLinenumberEnd: 2972
    functionName: exec_command_setenv
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - setenv
    - strchr
    - unsetenv
    - psql_scan_slash_option
    - free
    - ignore_slash_options
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_setenv(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t\tconst char *cmd)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2985,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2991,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2992,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2997,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2999,1
    - Dst: lookup_object_oid
      Src: /src/postgres/src/bin/psql/command.c:3002,1
    - Dst: get_create_object_cmd
      Src: /src/postgres/src/bin/psql/command.c:3007,1
    - Dst: count_lines_in_buf
      Src: /src/postgres/src/bin/psql/command.c:3021,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/command.c:3023,1
    - Dst: print_with_linenumbers
      Src: /src/postgres/src/bin/psql/command.c:3036,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/command.c:3041,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/command.c:3045,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3048,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:3049,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:3052,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 4
    argNames:
    - scan_state
    - active_branch
    - cmd
    - is_func
    argTypes:
    - PsqlScanState
    - bool
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3055
      start: 2977
    functionDepth: 1
    functionLinenumber: 2977
    functionLinenumberEnd: 3055
    functionName: exec_command_sf_sv
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ClosePager
    - ignore_slash_whole_line
    - strchr
    - fputs
    - psql_scan_slash_option
    - get_create_object_cmd
    - print_with_linenumbers
    - PageOutput
    - free
    - pg_log_error
    - count_lines_in_buf
    - lookup_object_oid
    - destroyPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_sf_sv(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t   const char *cmd, bool is_func)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3074
      start: 3060
    functionDepth: 1
    functionLinenumber: 3060
    functionLinenumberEnd: 3074
    functionName: exec_command_startpipeline
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_startpipeline(PsqlScanState scan_state,
      bool active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3090,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3093
      start: 3079
    functionDepth: 1
    functionLinenumber: 3079
    functionLinenumberEnd: 3093
    functionName: exec_command_syncpipeline
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_syncpipeline(PsqlScanState scan_state,
      bool active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3112
      start: 3098
    functionDepth: 1
    functionLinenumber: 3098
    functionLinenumberEnd: 3112
    functionName: exec_command_endpipeline
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_endpipeline(PsqlScanState scan_state,
      bool active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3124,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:3127,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3128,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3134
      start: 3117
    functionDepth: 1
    functionLinenumber: 3117
    functionLinenumberEnd: 3134
    functionName: exec_command_t
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - do_pset
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_t(PsqlScanState scan_state, bool active_branch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3146,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:3149,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3150,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3156
      start: 3139
    functionDepth: 1
    functionLinenumber: 3139
    functionLinenumberEnd: 3156
    functionName: exec_command_T
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - do_pset
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_T(PsqlScanState scan_state, bool active_branch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3168,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:3172,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:3178,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:3178,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:3180,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:3180,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3182,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3185,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3188
      start: 3161
    functionDepth: 2
    functionLinenumber: 3161
    functionLinenumberEnd: 3188
    functionName: exec_command_timing
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - _
    - psql_scan_slash_option
    - free
    - ParseVariableBool
    - ignore_slash_options
    - puts
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_timing(PsqlScanState scan_state, bool
      active_branch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3201,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3204,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3210,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3213,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/command.c:3215,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3220,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3228
      start: 3193
    functionDepth: 1
    functionLinenumber: 3193
    functionLinenumberEnd: 3228
    functionName: exec_command_unrestrict
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pfree
    - psql_scan_slash_option
    - ignore_slash_options
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_unrestrict(PsqlScanState scan_state,
      bool active_branch,\n\t\t\t\t\t\tconst char *cmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3241,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3246,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:3249,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3252,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3258
      start: 3233
    functionDepth: 2
    functionLinenumber: 3233
    functionLinenumberEnd: 3258
    functionName: exec_command_unset
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - SetVariable
    - ignore_slash_options
    - pg_log_error
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_unset(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t   const char *cmd)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3272,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3279,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3286,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:3291,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:3295,1
    - Dst: disable_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:3296,1
    - Dst: popen
      Src: /src/postgres/src/bin/psql/command.c:3297,1
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/bin/psql/command.c:3301,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/command.c:3302,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3306,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:3323,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:3325,1
    - Dst: pclose
      Src: /src/postgres/src/bin/psql/command.c:3329,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3333,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/psql/command.c:3333,1
    - Dst: SetShellResultVariables
      Src: /src/postgres/src/bin/psql/command.c:3336,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:3340,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3344,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:3351,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3353,1
    - Dst: ignore_slash_filepipe
      Src: /src/postgres/src/bin/psql/command.c:3356,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 5
    argNames:
    - scan_state
    - active_branch
    - cmd
    - query_buf
    - previous_buf
    argTypes:
    - PsqlScanState
    - bool
    - char*
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3359
      start: 3263
    functionDepth: 2
    functionLinenumber: 3263
    functionLinenumberEnd: 3359
    functionName: exec_command_write
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_filepipe
    - canonicalize_path_enc
    - SetShellResultVariables
    - wait_result_to_str
    - fopen
    - pclose
    - expand_tilde
    - fclose
    - disable_sigpipe_trap
    - psql_scan_slash_option
    - free
    - fflush
    - popen
    - restore_sigpipe_trap
    - pg_log_error
    - fprintf
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_write(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t   const char *cmd,\n\t\t\t\t   PQExpBuffer query_buf,
      PQExpBuffer previous_buf)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/command.c:3380,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3382,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:3383,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3396,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:3404,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3409,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3409,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3410,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3410,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3414,1
    - Dst: strtod
      Src: /src/postgres/src/bin/psql/command.c:3421,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3424,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3429,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3429,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3430,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3430,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3434,1
    - Dst: strtoint
      Src: /src/postgres/src/bin/psql/command.c:3441,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3444,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3449,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3449,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3450,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3450,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3454,1
    - Dst: strtoint
      Src: /src/postgres/src/bin/psql/command.c:3461,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3464,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3471,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3480,1
    - Dst: strtod
      Src: /src/postgres/src/bin/psql/command.c:3487,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3490,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3496,1
    - Dst: copy_previous_query
      Src: /src/postgres/src/bin/psql/command.c:3503,1
    - Dst: do_watch
      Src: /src/postgres/src/bin/psql/command.c:3505,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:3509,1
    - Dst: psql_scan_reset
      Src: /src/postgres/src/bin/psql/command.c:3510,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3513,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 83
    argCount: 4
    argNames:
    - scan_state
    - active_branch
    - query_buf
    - previous_buf
    argTypes:
    - PsqlScanState
    - bool
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3516
      start: 3365
    functionDepth: 2
    functionLinenumber: 3365
    functionLinenumberEnd: 3516
    functionName: exec_command_watch
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strtoint
    - strchr
    - clean_extended_state
    - do_watch
    - PQpipelineStatus
    - resetPQExpBuffer
    - psql_scan_slash_option
    - strncmp
    - strlen
    - free
    - copy_previous_query
    - psql_scan_reset
    - pg_log_error
    - ignore_slash_options
    - strtod
    linkageType: ''
    returnType: backslashResult
    signature: "backslashResult exec_command_watch(PsqlScanState scan_state, bool
      active_branch,\n\t\t\t\t   PQExpBuffer query_buf, PQExpBuffer previous_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3528,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:3531,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3532,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3538
      start: 3521
    functionDepth: 1
    functionLinenumber: 3521
    functionLinenumberEnd: 3538
    functionName: exec_command_x
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - do_pset
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_x(PsqlScanState scan_state, bool active_branch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3554,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:3557,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:3561,1
    - Dst: permissionsList
      Src: /src/postgres/src/bin/psql/command.c:3564,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3569,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3572,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3575
      start: 3543
    functionDepth: 2
    functionLinenumber: 3543
    functionLinenumberEnd: 3575
    functionName: exec_command_z
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - permissionsList
    - strchr
    - psql_scan_slash_option
    - free
    - ignore_slash_options
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_z(PsqlScanState scan_state, bool active_branch,
      const char *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3587,1
    - Dst: do_shell
      Src: /src/postgres/src/bin/psql/command.c:3590,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3591,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:3594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3597
      start: 3580
    functionDepth: 1
    functionLinenumber: 3580
    functionLinenumberEnd: 3597
    functionName: exec_command_shell_escape
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_shell
    - psql_scan_slash_option
    - free
    - ignore_slash_whole_line
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_shell_escape(PsqlScanState scan_state,
      bool active_branch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3607,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3610,1
    - Dst: slashUsage
      Src: /src/postgres/src/bin/psql/command.c:3611,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3612,1
    - Dst: usage
      Src: /src/postgres/src/bin/psql/command.c:3613,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3614,1
    - Dst: helpVariables
      Src: /src/postgres/src/bin/psql/command.c:3615,1
    - Dst: slashUsage
      Src: /src/postgres/src/bin/psql/command.c:3617,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3619,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3622,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3625
      start: 3602
    functionDepth: 2
    functionLinenumber: 3602
    functionLinenumberEnd: 3625
    functionName: exec_command_slash_command_help
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcmp
    - slashUsage
    - psql_scan_slash_option
    - free
    - ignore_slash_options
    - helpVariables
    - usage
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_slash_command_help(PsqlScanState scan_state,
      bool active_branch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3648,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3656,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3658,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3663
      start: 3633
    functionDepth: 1
    functionLinenumber: 3633
    functionLinenumberEnd: 3663
    functionName: read_connect_arg
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - strcmp
    linkageType: ''
    returnType: char
    signature: 'char *

      read_connect_arg(PsqlScanState scan_state)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:3676,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3681,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:3686,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:3687,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3693
      start: 3673
    functionDepth: 1
    functionLinenumber: 3673
    functionLinenumberEnd: 3693
    functionName: gather_boolean_expression
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - psql_scan_slash_option
    - free
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: PQExpBuffer
    signature: PQExpBuffer gather_boolean_expression(PsqlScanState scan_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gather_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:3706,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:3708,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:3710,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - scan_state
    - name
    argTypes:
    - PsqlScanState
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3712
      start: 3703
    functionDepth: 2
    functionLinenumber: 3703
    functionLinenumberEnd: 3712
    functionName: is_true_boolean_expression
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - ParseVariableBool
    - destroyPQExpBuffer
    - gather_boolean_expression
    linkageType: ''
    returnType: bool
    signature: bool is_true_boolean_expression(PsqlScanState scan_state, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gather_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:3723,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:3725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3726
      start: 3720
    functionDepth: 2
    functionLinenumber: 3720
    functionLinenumberEnd: 3726
    functionName: ignore_boolean_expression
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - destroyPQExpBuffer
    - gather_boolean_expression
    linkageType: ''
    returnType: void
    signature: void ignore_boolean_expression(PsqlScanState scan_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3741,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3743,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3744
      start: 3736
    functionDepth: 1
    functionLinenumber: 3736
    functionLinenumberEnd: 3744
    functionName: ignore_slash_options
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 41
    functionsReached:
    - psql_scan_slash_option
    - free
    linkageType: ''
    returnType: void
    signature: void ignore_slash_options(PsqlScanState scan_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3756,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3760
      start: 3753
    functionDepth: 1
    functionLinenumber: 3753
    functionLinenumberEnd: 3760
    functionName: ignore_slash_filepipe
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - psql_scan_slash_option
    - free
    linkageType: ''
    returnType: void
    signature: void ignore_slash_filepipe(PsqlScanState scan_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3776,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3780
      start: 3773
    functionDepth: 1
    functionLinenumber: 3773
    functionLinenumberEnd: 3780
    functionName: ignore_slash_whole_line
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 5
    functionsReached:
    - psql_scan_slash_option
    - free
    linkageType: ''
    returnType: void
    signature: void ignore_slash_whole_line(PsqlScanState scan_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3788,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3789,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3790,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3791,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3792
      start: 3785
    functionDepth: 0
    functionLinenumber: 3785
    functionLinenumberEnd: 3792
    functionName: is_branching_command
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool is_branching_command(const char *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_set_query_len
      Src: /src/postgres/src/bin/psql/command.c:3806,1
    - Dst: conditional_stack_set_paren_depth
      Src: /src/postgres/src/bin/psql/command.c:3807,1
    - Dst: psql_scan_get_paren_depth
      Src: /src/postgres/src/bin/psql/command.c:3808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3809
      start: 3801
    functionDepth: 1
    functionLinenumber: 3801
    functionLinenumberEnd: 3809
    functionName: save_query_text_state
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 3
    functionsReached:
    - conditional_stack_set_paren_depth
    - psql_scan_get_paren_depth
    - conditional_stack_set_query_len
    linkageType: ''
    returnType: void
    signature: "void save_query_text_state(PsqlScanState scan_state, ConditionalStack
      cstack,\n\t\t\t\t\t  PQExpBuffer query_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_get_query_len
      Src: /src/postgres/src/bin/psql/command.c:3827,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:3829,1
    - Dst: psql_scan_set_paren_depth
      Src: /src/postgres/src/bin/psql/command.c:3833,1
    - Dst: conditional_stack_get_paren_depth
      Src: /src/postgres/src/bin/psql/command.c:3834,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3835
      start: 3821
    functionDepth: 1
    functionLinenumber: 3821
    functionLinenumberEnd: 3835
    functionName: discard_query_text
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 3
    functionsReached:
    - Assert
    - conditional_stack_get_paren_depth
    - psql_scan_set_paren_depth
    - conditional_stack_get_query_len
    linkageType: ''
    returnType: void
    signature: "void discard_query_text(PsqlScanState scan_state, ConditionalStack
      cstack,\n\t\t\t\t   PQExpBuffer query_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:3852,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - query_buf
    - previous_buf
    argTypes:
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3856
      start: 3847
    functionDepth: 1
    functionLinenumber: 3847
    functionLinenumberEnd: 3856
    functionName: copy_previous_query
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 3
    functionsReached:
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: bool copy_previous_query(PQExpBuffer query_buf, PQExpBuffer previous_buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/bin/psql/command.c:3877,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:3882,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:3882,1
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/bin/psql/command.c:3883,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/command.c:3884,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - username
    - canceled
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3891
      start: 3865
    functionDepth: 1
    functionLinenumber: 3865
    functionLinenumberEnd: 3891
    functionName: prompt_for_password
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - pfree
    - simple_prompt_extended
    - psprintf
    - _
    linkageType: ''
    returnType: char
    signature: 'char *

      prompt_for_password(const char *username, bool *canceled)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3899,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - old_val
    - new_val
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3903
      start: 3893
    functionDepth: 0
    functionLinenumber: 3893
    functionLinenumberEnd: 3903
    functionName: param_is_newly_set
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool param_is_newly_set(const char *old_val, const char *new_val)
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: recognized_connection_string
      Src: /src/postgres/src/bin/psql/command.c:3933,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3938,1
    - Dst: PQconninfo
      Src: /src/postgres/src/bin/psql/command.c:3967,1
    - Dst: PQconninfo
      Src: /src/postgres/src/bin/psql/command.c:3969,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3973,1
    - Dst: PQconndefaults
      Src: /src/postgres/src/bin/psql/command.c:3978,1
    - Dst: PQconninfoParse
      Src: /src/postgres/src/bin/psql/command.c:3988,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:3999,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3999,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4021,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4023,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4024,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4025,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4026,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4030,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:4053,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/psql/command.c:4058,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4076,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/command.c:4077,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4080,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4103,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4105,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4108,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4110,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4115,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4117,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4129,1
    - Dst: prompt_for_password
      Src: /src/postgres/src/bin/psql/command.c:4154,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4164,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/command.c:4172,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/command.c:4173,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4190,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4192,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4194,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4196,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4201,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4205,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4207,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4210,1
    - Dst: PQconnectStartParams
      Src: /src/postgres/src/bin/psql/command.c:4221,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:4223,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:4224,1
    - Dst: wait_until_connected
      Src: /src/postgres/src/bin/psql/command.c:4226,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/psql/command.c:4227,1
    - Dst: PQconnectionNeedsPassword
      Src: /src/postgres/src/bin/psql/command.c:4234,1
    - Dst: prompt_for_password
      Src: /src/postgres/src/bin/psql/command.c:4242,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4242,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4243,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4254,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:4260,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/psql/command.c:4261,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/command.c:4274,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/command.c:4274,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4275,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/command.c:4280,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4286,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/command.c:4286,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4287,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4301,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/command.c:4303,1
    - Dst: UnsyncVariables
      Src: /src/postgres/src/bin/psql/command.c:4304,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4310,1
    - Dst: PQsetNoticeProcessor
      Src: /src/postgres/src/bin/psql/command.c:4323,1
    - Dst: SyncVariables
      Src: /src/postgres/src/bin/psql/command.c:4325,1
    - Dst: connection_warnings
      Src: /src/postgres/src/bin/psql/command.c:4326,1
    - Dst: param_is_newly_set
      Src: /src/postgres/src/bin/psql/command.c:4332,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:4332,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:4332,1
    - Dst: param_is_newly_set
      Src: /src/postgres/src/bin/psql/command.c:4333,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4333,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4333,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:4335,1
    - Dst: PQhostaddr
      Src: /src/postgres/src/bin/psql/command.c:4336,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/psql/command.c:4338,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4342,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4342,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4343,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4343,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4343,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4345,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4345,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4346,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4346,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4346,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4350,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4351,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4351,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4352,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4352,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4352,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4354,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4354,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4355,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4355,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4355,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4359,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4359,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4360,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4360,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4365,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4368,1
    CyclomaticComplexity: 91
    EdgeCount: 91
    ICount: 186
    argCount: 5
    argNames:
    - reuse_previous_specification
    - dbname
    - user
    - host
    - port
    argTypes:
    - enum trivalue
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4373
      start: 3916
    functionDepth: 2
    functionLinenumber: 3916
    functionLinenumberEnd: 4373
    functionName: do_connect
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcmp
    - is_unixsock_path
    - PQuser
    - printf
    - connection_warnings
    - pg_log_error
    - PQhostaddr
    - PQconninfoFree
    - _
    - PQhost
    - Assert
    - PQfinish
    - getenv
    - PQdb
    - ResetCancelConn
    - wait_until_connected
    - PQport
    - PQstatus
    - PQconninfoParse
    - PQsetNoticeProcessor
    - PQconndefaults
    - pg_malloc_array
    - SyncVariables
    - prompt_for_password
    - PQconnectStartParams
    - PQconninfo
    - pg_free
    - PQfreemem
    - pg_log_info
    - PQerrorMessage
    - UnsyncVariables
    - recognized_connection_string
    - param_is_newly_set
    - PQconnectionNeedsPassword
    linkageType: ''
    returnType: bool
    signature: "bool do_connect(enum trivalue reuse_previous_specification,\n\t\t
      \  char *dbname, char *user, char *host, char *port)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PQsocket
      Src: /src/postgres/src/bin/psql/command.c:4402,1
    - Dst: PQgetCurrentTimeUSec
      Src: /src/postgres/src/bin/psql/command.c:4420,1
    - Dst: PQsocketPoll
      Src: /src/postgres/src/bin/psql/command.c:4421,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/bin/psql/command.c:4425,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/bin/psql/command.c:4437,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4440
      start: 4380
    functionDepth: 1
    functionLinenumber: 4380
    functionLinenumberEnd: 4440
    functionName: wait_until_connected
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - PQsocket
    - PQconnectPoll
    - pg_unreachable
    - PQgetCurrentTimeUSec
    - PQsocketPoll
    linkageType: ''
    returnType: void
    signature: void wait_until_connected(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/command.c:4456,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/command.c:4460,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4465,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4465,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4470,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4478,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4478,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/command.c:4481,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/command.c:4483,1
    - Dst: checkWin32Codepage
      Src: /src/postgres/src/bin/psql/command.c:4488,1
    - Dst: printSSLInfo
      Src: /src/postgres/src/bin/psql/command.c:4490,1
    - Dst: printGSSInfo
      Src: /src/postgres/src/bin/psql/command.c:4491,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - in_startup
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4493
      start: 4442
    functionDepth: 1
    functionLinenumber: 4442
    functionLinenumberEnd: 4493
    functionName: connection_warnings
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - printSSLInfo
    - _
    - checkWin32Codepage
    - formatPGVersionNumber
    - PQparameterStatus
    - printf
    - printGSSInfo
    linkageType: ''
    returnType: void
    signature: void connection_warnings(bool in_startup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQsslInUse
      Src: /src/postgres/src/bin/psql/command.c:4509,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:4512,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:4513,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:4514,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:4515,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4517,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4517,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4518,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4519,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4520,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4520,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4520,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4521,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4522
      start: 4501
    functionDepth: 1
    functionLinenumber: 4501
    functionLinenumberEnd: 4522
    functionName: printSSLInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - _
    - strcmp
    - PQsslInUse
    - PQsslAttribute
    - printf
    linkageType: ''
    returnType: void
    signature: void printSSLInfo(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgssEncInUse
      Src: /src/postgres/src/bin/psql/command.c:4532,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4535,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4536
      start: 4529
    functionDepth: 0
    functionLinenumber: 4529
    functionLinenumberEnd: 4536
    functionName: printGSSInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - PQgssEncInUse
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void printGSSInfo(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetACP
      Src: /src/postgres/src/bin/psql/command.c:4551,1
    - Dst: GetConsoleCP
      Src: /src/postgres/src/bin/psql/command.c:4552,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4555,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4560
      start: 4545
    functionDepth: 0
    functionLinenumber: 4545
    functionLinenumberEnd: 4560
    functionName: checkWin32Codepage
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - GetACP
    - GetConsoleCP
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void checkWin32Codepage(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/command.c:4579,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/psql/command.c:4581,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/psql/command.c:4583,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4585,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4585,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4586,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4586,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4587,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:4587,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4588,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4588,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4589,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/psql/command.c:4589,1
    - Dst: get_conninfo_value
      Src: /src/postgres/src/bin/psql/command.c:4591,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4592,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:4594,1
    - Dst: get_conninfo_value
      Src: /src/postgres/src/bin/psql/command.c:4596,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4597,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:4599,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/command.c:4603,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/command.c:4607,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4610,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:4612,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4613,1
    - Dst: PQsetErrorVerbosity
      Src: /src/postgres/src/bin/psql/command.c:4616,1
    - Dst: PQsetErrorContextVisibility
      Src: /src/postgres/src/bin/psql/command.c:4617,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4618
      start: 4570
    functionDepth: 2
    functionLinenumber: 4570
    functionLinenumberEnd: 4618
    functionName: SyncVariables
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - get_conninfo_value
    - PQhost
    - pg_free
    - formatPGVersionNumber
    - setFmtEncoding
    - PQuser
    - PQparameterStatus
    - PQclientEncoding
    - pg_encoding_to_char
    - PQsetErrorContextVisibility
    - PQdb
    - PQsetErrorVerbosity
    - PQport
    - PQserverVersion
    - SetVariable
    - snprintf
    linkageType: ''
    returnType: void
    signature: void SyncVariables(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4628,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4629,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4630,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4631,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4632,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4633,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4634,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4635,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4637
      start: 4625
    functionDepth: 2
    functionLinenumber: 4625
    functionLinenumberEnd: 4637
    functionName: UnsyncVariables
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - SetVariable
    linkageType: ''
    returnType: void
    signature: void UnsyncVariables(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:4655,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4658,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4660,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4662,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4669,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4676,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:4690,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:4693,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:4697,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:4700,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:4703,1
    - Dst: system
      Src: /src/postgres/src/bin/psql/command.c:4704,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4706,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4708,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/command.c:4709,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - fname
    - lineno
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4712
      start: 4647
    functionDepth: 1
    functionLinenumber: 4647
    functionLinenumberEnd: 4712
    functionName: editFile
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    - psprintf
    - getenv
    - fflush
    - pg_log_error
    - system
    linkageType: ''
    returnType: bool
    signature: bool editFile(const char *fname, int lineno)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4747,1
    - Dst: GetTempPath
      Src: /src/postgres/src/bin/psql/command.c:4755,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4758,1
    - Dst: strerror
      Src: /src/postgres/src/bin/psql/command.c:4759,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:4770,1
    - Dst: getpid
      Src: /src/postgres/src/bin/psql/command.c:4771,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:4773,1
    - Dst: getpid
      Src: /src/postgres/src/bin/psql/command.c:4774,1
    - Dst: open
      Src: /src/postgres/src/bin/psql/command.c:4779,1
    - Dst: fdopen
      Src: /src/postgres/src/bin/psql/command.c:4781,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4785,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:4795,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/psql/command.c:4799,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4801,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:4803,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4804,1
    - Dst: remove
      Src: /src/postgres/src/bin/psql/command.c:4806,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4807,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:4811,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4813,1
    - Dst: remove
      Src: /src/postgres/src/bin/psql/command.c:4814,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4815,1
    - Dst: time
      Src: /src/postgres/src/bin/psql/command.c:4833,1
    - Dst: utime
      Src: /src/postgres/src/bin/psql/command.c:4834,1
    - Dst: stat
      Src: /src/postgres/src/bin/psql/command.c:4839,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4841,1
    - Dst: editFile
      Src: /src/postgres/src/bin/psql/command.c:4847,1
    - Dst: stat
      Src: /src/postgres/src/bin/psql/command.c:4849,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4851,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/command.c:4860,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4863,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:4871,1
    - Dst: fgets
      Src: /src/postgres/src/bin/psql/command.c:4872,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:4873,1
    - Dst: ferror
      Src: /src/postgres/src/bin/psql/command.c:4875,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4877,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:4879,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:4886,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:4896,1
    - Dst: remove
      Src: /src/postgres/src/bin/psql/command.c:4902,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4904,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 83
    argCount: 5
    argNames:
    - filename_arg
    - query_buf
    - lineno
    - discard_on_quit
    - edited
    argTypes:
    - char*
    - PQExpBuffer
    - int
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4910
      start: 4729
    functionDepth: 2
    functionLinenumber: 4729
    functionLinenumberEnd: 4910
    functionName: do_edit
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - fopen
    - editFile
    - pg_log_error
    - remove
    - utime
    - appendPQExpBufferStr
    - getpid
    - ferror
    - GetTempPath
    - getenv
    - time
    - fclose
    - fdopen
    - resetPQExpBuffer
    - fgets
    - open
    - appendPQExpBufferChar
    - strerror
    - stat
    - fwrite
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool do_edit(const char *filename_arg, PQExpBuffer query_buf,\n\t\tint
      lineno, bool discard_on_quit, bool *edited)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4937,1
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/bin/psql/command.c:4939,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/psql/command.c:4948,1
    - Dst: has_drive_prefix
      Src: /src/postgres/src/bin/psql/command.c:4948,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/command.c:4950,1
    - Dst: get_parent_directory
      Src: /src/postgres/src/bin/psql/command.c:4951,1
    - Dst: join_path_components
      Src: /src/postgres/src/bin/psql/command.c:4952,1
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/bin/psql/command.c:4953,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/command.c:4958,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4962,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/command.c:4975,1
    - Dst: MainLoop
      Src: /src/postgres/src/bin/psql/command.c:4977,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:4980,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/command.c:4984,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - filename
    - use_relative_path
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4987
      start: 4924
    functionDepth: 4
    functionLinenumber: 4924
    functionLinenumberEnd: 4987
    functionName: process_file
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - join_path_components
    - canonicalize_path_enc
    - strcmp
    - is_absolute_path
    - fopen
    - has_drive_prefix
    - pg_logging_config
    - fclose
    - get_parent_directory
    - pg_log_error
    - MainLoop
    linkageType: ''
    returnType: int
    signature: int process_file(char *filename, bool use_relative_path)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - in
    argTypes:
    - enum printFormat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5028
      start: 4991
    functionDepth: 0
    functionLinenumber: 4991
    functionLinenumberEnd: 5028
    functionName: _align2string
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      _align2string(enum printFormat in)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5038,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5040,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - value
    - vallen
    - linestyle
    argTypes:
    - char*
    - size_t
    - unicode_linestyle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5045
      start: 5034
    functionDepth: 1
    functionLinenumber: 5034
    functionLinenumberEnd: 5045
    functionName: set_unicode_line_style
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - pg_strncasecmp
    linkageType: ''
    returnType: bool
    signature: "bool set_unicode_line_style(const char *value, size_t vallen,\n\t\t\t\t\t
      \  unicode_linestyle *linestyle)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - linestyle
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5060
      start: 5047
    functionDepth: 0
    functionLinenumber: 5047
    functionLinenumberEnd: 5060
    functionName: _unicode_linestyle2string
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      _unicode_linestyle2string(int linestyle)'
  - BBCount: 70
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5082,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:5085,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5088,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/command.c:5113,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5115,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5121,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5130,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5141,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5148,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5152,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5154,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5156,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5160,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5166,1
    - Dst: set_unicode_line_style
      Src: /src/postgres/src/bin/psql/command.c:5170,1
    - Dst: refresh_utf8format
      Src: /src/postgres/src/bin/psql/command.c:5172,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5175,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5181,1
    - Dst: set_unicode_line_style
      Src: /src/postgres/src/bin/psql/command.c:5185,1
    - Dst: refresh_utf8format
      Src: /src/postgres/src/bin/psql/command.c:5187,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5190,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5196,1
    - Dst: set_unicode_line_style
      Src: /src/postgres/src/bin/psql/command.c:5200,1
    - Dst: refresh_utf8format
      Src: /src/postgres/src/bin/psql/command.c:5202,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5205,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5211,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:5214,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5218,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5219,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5220,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5222,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5228,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/command.c:5232,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5241,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5245,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5247,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5249,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:5253,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5257,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5267,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:5272,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5274,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5279,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5287,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5290,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5296,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5300,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5301,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5306,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5310,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5311,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5316,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5320,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5321,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5326,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5330,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5331,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5336,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5338,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5344,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5348,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5349,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5354,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5356,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5362,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5362,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5365,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5371,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5371,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5373,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5377,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5381,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5381,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5383,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5387,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5391,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5393,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5399,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/command.c:5401,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5413,1
    - Dst: ParseVariableNum
      Src: /src/postgres/src/bin/psql/command.c:5416,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5421,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5424,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5430,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:5433,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5437,1
    - Dst: printPsetInfo
      Src: /src/postgres/src/bin/psql/command.c:5442,1
    CyclomaticComplexity: 80
    EdgeCount: 80
    ICount: 209
    argCount: 4
    argNames:
    - param
    - value
    - popt
    - quiet
    argTypes:
    - char*
    - char*
    - printQueryOpt*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5445
      start: 5077
    functionDepth: 2
    functionLinenumber: 5077
    functionLinenumberEnd: 5445
    functionName: do_pset
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 9
    functionsReached:
    - ParseVariableNum
    - pg_strcasecmp
    - strcmp
    - Assert
    - set_unicode_line_style
    - PsqlVarEnumError
    - pg_strncasecmp
    - strlen
    - ParseVariableBool
    - free
    - atoi
    - printPsetInfo
    - pg_log_error
    - refresh_utf8format
    - lengthof
    - pg_strdup
    linkageType: ''
    returnType: bool
    signature: bool do_pset(const char *param, const char *value, printQueryOpt *popt,
      bool quiet)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5453,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5456,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5457,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5457,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5460,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5463,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5463,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5465,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5465,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5469,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5469,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5469,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5472,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5472,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5474,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5474,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5476,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5476,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5480,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5483,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5483,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5485,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5485,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5487,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5487,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5489,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5489,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5493,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5495,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5495,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5500,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5502,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5502,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5507,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5509,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5509,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5514,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5517,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5517,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5519,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5519,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5523,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5525,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5525,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5529,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5532,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5532,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5534,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5534,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5538,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5540,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5540,1
    - Dst: _align2string
      Src: /src/postgres/src/bin/psql/command.c:5540,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5544,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5546,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5546,1
    - Dst: get_line_style
      Src: /src/postgres/src/bin/psql/command.c:5547,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5551,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5553,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5553,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5558,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5561,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5561,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5563,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5563,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5567,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5570,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5570,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5572,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5572,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5574,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5574,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5578,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5580,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/psql/command.c:5580,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5587,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5590,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5590,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5591,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5592,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5592,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5594,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5594,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5598,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5600,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5600,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5604,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5604,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5607,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5607,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5610,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5610,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5614,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5614,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5617,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5617,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5619,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5619,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5623,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5623,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5626,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5626,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5628,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5628,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5632,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5634,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5634,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5635,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5638,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5640,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5640,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5641,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5644,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5646,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5646,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5647,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5652,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 110
    argCount: 2
    argNames:
    - param
    - popt
    argTypes:
    - char*
    - printQueryOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5657
      start: 5450
    functionDepth: 1
    functionLinenumber: 5450
    functionLinenumberEnd: 5657
    functionName: printPsetInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - _
    - strcmp
    - Assert
    - _align2string
    - ngettext
    - get_line_style
    - printf
    - _unicode_linestyle2string
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: bool printPsetInfo(const char *param, printQueryOpt *popt)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/psql/command.c:5669,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/command.c:5672,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5676,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5678,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5680,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5682,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5684,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5686,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5688,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5694,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5695,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - popt
    argTypes:
    - printQueryOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5698
      start: 5664
    functionDepth: 1
    functionLinenumber: 5664
    functionLinenumberEnd: 5698
    functionName: savePsetInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - Assert
    - pg_malloc_object
    - memcpy
    - pg_strdup
    linkageType: ''
    returnType: printQueryOpt
    signature: 'printQueryOpt *

      savePsetInfo(const printQueryOpt *popt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5710,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5711,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5712,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5713,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5714,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5715,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5716,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5722,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5723,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/command.c:5726,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - popt
    - save
    argTypes:
    - printQueryOpt*
    - printQueryOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5730
      start: 5704
    functionDepth: 1
    functionLinenumber: 5704
    functionLinenumberEnd: 5730
    functionName: restorePsetInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - Assert
    - free
    - memcpy
    linkageType: ''
    returnType: void
    signature: void restorePsetInfo(printQueryOpt *popt, printQueryOpt *save)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5736
      start: 5732
    functionDepth: 0
    functionLinenumber: 5732
    functionLinenumberEnd: 5736
    functionName: pset_bool_string
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      pset_bool_string(bool val)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/command.c:5742,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:5742,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5767
      start: 5739
    functionDepth: 1
    functionLinenumber: 5739
    functionLinenumberEnd: 5767
    functionName: pset_quoted_string
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      pset_quoted_string(const char *str)'
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5780,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5782,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5783,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5784,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5785,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5786,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5787,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5788,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5789,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5790,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5791,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5792,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5793,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5795,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5796,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5797,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5800,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5801,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5801,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5802,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5803,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5803,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5804,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5805,1
    - Dst: _align2string
      Src: /src/postgres/src/bin/psql/command.c:5805,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5806,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5807,1
    - Dst: get_line_style
      Src: /src/postgres/src/bin/psql/command.c:5807,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5808,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5809,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5812,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5813,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5813,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5814,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5815,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5816,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5817,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5818,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5819,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5822,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5823,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5823,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5824,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5825,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5825,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5826,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5827,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5827,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5828,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5829,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5829,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5830,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5831,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5831,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5832,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5833,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5833,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5834,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5835,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5835,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5836,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5839,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5841,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5843,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:5849,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5851,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5855,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 60
    argCount: 2
    argNames:
    - param
    - popt
    argTypes:
    - char*
    - printQueryOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5856
      start: 5777
    functionDepth: 2
    functionLinenumber: 5777
    functionLinenumberEnd: 5856
    functionName: pset_value_string
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcmp
    - Assert
    - pset_bool_string
    - psprintf
    - pstrdup
    - _align2string
    - get_line_style
    - pset_quoted_string
    - _unicode_linestyle2string
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      pset_value_string(const char *param, printQueryOpt *popt)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:5875,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:5881,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:5884,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5891,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5893,1
    - Dst: system
      Src: /src/postgres/src/bin/psql/command.c:5895,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/command.c:5896,1
    - Dst: system
      Src: /src/postgres/src/bin/psql/command.c:5899,1
    - Dst: SetShellResultVariables
      Src: /src/postgres/src/bin/psql/command.c:5901,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5905,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - command
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5909
      start: 5870
    functionDepth: 2
    functionLinenumber: 5870
    functionLinenumberEnd: 5909
    functionName: do_shell
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - SetShellResultVariables
    - pfree
    - psprintf
    - getenv
    - fflush
    - pg_log_error
    - system
    linkageType: ''
    returnType: bool
    signature: bool do_shell(const char *command)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5943,1
    - Dst: sigemptyset
      Src: /src/postgres/src/bin/psql/command.c:5948,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5949,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5950,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5951,1
    - Dst: sigemptyset
      Src: /src/postgres/src/bin/psql/command.c:5953,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5954,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5955,1
    - Dst: sigemptyset
      Src: /src/postgres/src/bin/psql/command.c:5957,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5958,1
    - Dst: sigprocmask
      Src: /src/postgres/src/bin/psql/command.c:5964,1
    - Dst: setitimer
      Src: /src/postgres/src/bin/psql/command.c:5973,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5975,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:5989,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/command.c:5991,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:5991,1
    - Dst: isatty
      Src: /src/postgres/src/bin/psql/command.c:5995,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/command.c:5995,1
    - Dst: isatty
      Src: /src/postgres/src/bin/psql/command.c:5995,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/command.c:5995,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:5997,1
    - Dst: disable_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:5998,1
    - Dst: popen
      Src: /src/postgres/src/bin/psql/command.c:5999,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:6003,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:6026,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/command.c:6027,1
    - Dst: time
      Src: /src/postgres/src/bin/psql/command.c:6040,1
    - Dst: strftime
      Src: /src/postgres/src/bin/psql/command.c:6041,1
    - Dst: localtime
      Src: /src/postgres/src/bin/psql/command.c:6041,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:6044,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6044,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:6047,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6047,1
    - Dst: PSQLexecWatch
      Src: /src/postgres/src/bin/psql/command.c:6052,1
    - Dst: ferror
      Src: /src/postgres/src/bin/psql/command.c:6066,1
    - Dst: Min
      Src: /src/postgres/src/bin/psql/command.c:6082,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/psql/command.c:6084,1
    - Dst: sigprocmask
      Src: /src/postgres/src/bin/psql/command.c:6094,1
    - Dst: sigwait
      Src: /src/postgres/src/bin/psql/command.c:6103,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:6111,1
    - Dst: sigprocmask
      Src: /src/postgres/src/bin/psql/command.c:6124,1
    - Dst: pclose
      Src: /src/postgres/src/bin/psql/command.c:6130,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:6131,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:6142,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:6143,1
    - Dst: memset
      Src: /src/postgres/src/bin/psql/command.c:6148,1
    - Dst: setitimer
      Src: /src/postgres/src/bin/psql/command.c:6149,1
    - Dst: sigprocmask
      Src: /src/postgres/src/bin/psql/command.c:6151,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:6154,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 93
    argCount: 4
    argNames:
    - query_buf
    - sleep
    - iter
    - min_rows
    argTypes:
    - PQExpBuffer
    - double
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6156
      start: 5921
    functionDepth: 2
    functionLinenumber: 5921
    functionLinenumberEnd: 6156
    functionName: do_watch
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - pclose
    - localtime
    - sigprocmask
    - pg_log_error
    - restore_sigpipe_trap
    - fileno
    - ferror
    - fprintf
    - _
    - disable_sigpipe_trap
    - getenv
    - sigemptyset
    - strspn
    - setitimer
    - fflush
    - time
    - sigwait
    - sigaddset
    - isatty
    - strftime
    - PSQLexecWatch
    - strlen
    - memset
    - popen
    - pg_free
    - pg_malloc
    - pg_usleep
    - Min
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool do_watch(PQExpBuffer query_buf, double sleep, int iter, int min_rows)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:6167,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6167,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:6170,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:6173,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6174,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:6177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6184
      start: 6162
    functionDepth: 0
    functionLinenumber: 6162
    functionLinenumberEnd: 6184
    functionName: echo_hidden_command
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - fprintf
    - printf
    - _
    - fflush
    linkageType: ''
    returnType: bool
    signature: bool echo_hidden_command(const char *query)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6199,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6211,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6211,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6212,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/psql/command.c:6213,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6214,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:6215,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6225,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6225,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6226,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/psql/command.c:6227,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6228,1
    - Dst: echo_hidden_command
      Src: /src/postgres/src/bin/psql/command.c:6232,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6234,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/command.c:6237,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/command.c:6238,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/command.c:6238,1
    - Dst: atooid
      Src: /src/postgres/src/bin/psql/command.c:6239,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6239,1
    - Dst: minimal_error_message
      Src: /src/postgres/src/bin/psql/command.c:6242,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/command.c:6246,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6247,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - obj_type
    - desc
    - obj_oid
    argTypes:
    - EditableObjectType
    - char*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6250
      start: 6194
    functionDepth: 1
    functionLinenumber: 6194
    functionLinenumberEnd: 6250
    functionName: lookup_object_oid
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - atooid
    - PQclear
    - _
    - printfPQExpBuffer
    - strchr
    - PQexec
    - minimal_error_message
    - PQgetvalue
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - PQresultStatus
    - PQntuples
    - appendStringLiteralConn
    - appendPQExpBufferStr
    - echo_hidden_command
    - createPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool lookup_object_oid(EditableObjectType obj_type, const char *desc,\n\t\t\t\t
      \ Oid *obj_oid)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6261,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6267,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6267,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6268,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6286,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6286,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6287,1
    - Dst: echo_hidden_command
      Src: /src/postgres/src/bin/psql/command.c:6300,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6302,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/command.c:6305,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/command.c:6306,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/command.c:6306,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6308,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6312,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6312,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6317,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6318,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6319,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6320,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6321,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6322,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6334,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6338,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:6341,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6346,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/psql/command.c:6346,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6347,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/psql/command.c:6347,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:6350,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6352,1
    - Dst: appendReloptionsArray
      Src: /src/postgres/src/bin/psql/command.c:6353,1
    - Dst: standard_strings
      Src: /src/postgres/src/bin/psql/command.c:6355,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:6357,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:6360,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6364,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6372,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:6379,1
    - Dst: minimal_error_message
      Src: /src/postgres/src/bin/psql/command.c:6383,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/command.c:6387,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6388,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 62
    argCount: 3
    argNames:
    - obj_type
    - oid
    - buf
    argTypes:
    - EditableObjectType
    - Oid
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6391
      start: 6256
    functionDepth: 2
    functionLinenumber: 6256
    functionLinenumberEnd: 6391
    functionName: get_create_object_cmd
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - PQclear
    - PQgetvalue
    - pg_log_error
    - fmtId
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - appendReloptionsArray
    - _
    - printfPQExpBuffer
    - PQresultStatus
    - PQntuples
    - standard_strings
    - resetPQExpBuffer
    - strlen
    - appendPQExpBufferChar
    - minimal_error_message
    - PQexec
    - appendPQExpBuffer
    - echo_hidden_command
    linkageType: ''
    returnType: bool
    signature: "bool get_create_object_cmd(EditableObjectType obj_type, Oid oid,\n\t\t\t\t\t
      \ PQExpBuffer buf)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:6411,1
    - Dst: isascii
      Src: /src/postgres/src/bin/psql/command.c:6424,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/command.c:6424,1
    - Dst: isascii
      Src: /src/postgres/src/bin/psql/command.c:6428,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/psql/command.c:6428,1
    - Dst: isascii
      Src: /src/postgres/src/bin/psql/command.c:6432,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/psql/command.c:6432,1
    - Dst: isascii
      Src: /src/postgres/src/bin/psql/command.c:6437,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/command.c:6438,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:6443,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:6446,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 20
    argCount: 1
    argNames:
    - obj
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6454
      start: 6402
    functionDepth: 1
    functionLinenumber: 6402
    functionLinenumberEnd: 6454
    functionName: strip_lineno_from_objdesc
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - isdigit
    - isspace
    - isascii
    - strlen
    - atoi
    - pg_log_error
    linkageType: ''
    returnType: int
    signature: int strip_lineno_from_objdesc(char *obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:6470,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - buf
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6477
      start: 6460
    functionDepth: 0
    functionLinenumber: 6460
    functionLinenumberEnd: 6477
    functionName: count_lines_in_buf
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strchr
    linkageType: ''
    returnType: int
    signature: int count_lines_in_buf(PQExpBuffer buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:6501,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:6502,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:6503,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:6511,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:6517,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:6519,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 3
    argNames:
    - output
    - lines
    - is_func
    argTypes:
    - FILE*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6526
      start: 6490
    functionDepth: 0
    functionLinenumber: 6490
    functionLinenumberEnd: 6526
    functionName: print_with_linenumbers
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - fprintf
    - strncmp
    - strchr
    linkageType: ''
    returnType: void
    signature: void print_with_linenumbers(FILE *output, char *lines, bool is_func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6538,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/psql/command.c:6540,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6542,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6544,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/psql/command.c:6545,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6547,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6549,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:6550,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:6552,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6554,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6555
      start: 6532
    functionDepth: 1
    functionLinenumber: 6532
    functionLinenumberEnd: 6555
    functionName: minimal_error_message
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - printfPQExpBuffer
    - PQresultErrorField
    - destroyPQExpBuffer
    - appendPQExpBufferChar
    - pg_log_error
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void minimal_error_message(PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/startup.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: log_pre_callback
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - fflush
    linkageType: ''
    returnType: void
    signature: void log_pre_callback(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - filename
    - lineno
    argTypes:
    - char**
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 112
    functionName: log_locus_callback
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void log_locus_callback(const char **filename, uint64 *lineno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: empty_signal_handler
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void empty_signal_handler(SIGNAL_ARGS)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/psql/startup.c:134,1
    - Dst: pg_logging_set_pre_callback
      Src: /src/postgres/src/bin/psql/startup.c:135,1
    - Dst: pg_logging_set_locus_callback
      Src: /src/postgres/src/bin/psql/startup.c:136,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/psql/startup.c:137,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/psql/startup.c:137,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:141,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:141,1
    - Dst: usage
      Src: /src/postgres/src/bin/psql/startup.c:143,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:144,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:146,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:146,1
    - Dst: showVersion
      Src: /src/postgres/src/bin/psql/startup.c:148,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:149,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/psql/startup.c:153,1
    - Dst: setDecimalLocale
      Src: /src/postgres/src/bin/psql/startup.c:157,1
    - Dst: PQenv2encoding
      Src: /src/postgres/src/bin/psql/startup.c:158,1
    - Dst: refresh_utf8format
      Src: /src/postgres/src/bin/psql/startup.c:182,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/startup.c:185,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/startup.c:185,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/startup.c:185,1
    - Dst: isatty
      Src: /src/postgres/src/bin/psql/startup.c:187,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/startup.c:187,1
    - Dst: isatty
      Src: /src/postgres/src/bin/psql/startup.c:187,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/startup.c:187,1
    - Dst: EstablishVariableSpace
      Src: /src/postgres/src/bin/psql/startup.c:191,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:194,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:195,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:196,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/startup.c:196,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:199,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:200,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:203,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:204,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:205,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:206,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:207,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:210,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:211,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:212,1
    - Dst: parse_psql_options
      Src: /src/postgres/src/bin/psql/startup.c:214,1
    - Dst: simple_action_list_append
      Src: /src/postgres/src/bin/psql/startup.c:222,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/startup.c:226,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:231,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:237,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/psql/startup.c:249,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/startup.c:256,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/startup.c:257,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/startup.c:273,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/bin/psql/startup.c:278,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/startup.c:279,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/startup.c:280,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/psql/startup.c:282,1
    - Dst: PQconnectionNeedsPassword
      Src: /src/postgres/src/bin/psql/startup.c:283,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/startup.c:292,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/startup.c:296,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/startup.c:296,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:299,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/startup.c:299,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:300,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/psql/startup.c:302,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/startup.c:303,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/psql/startup.c:308,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/startup.c:310,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/startup.c:310,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:311,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:312,1
    - Dst: psql_setup_cancel_handler
      Src: /src/postgres/src/bin/psql/startup.c:315,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/psql/startup.c:325,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/psql/startup.c:326,1
    - Dst: PQsetNoticeProcessor
      Src: /src/postgres/src/bin/psql/startup.c:329,1
    - Dst: pg_initialize_timing
      Src: /src/postgres/src/bin/psql/startup.c:332,1
    - Dst: SyncVariables
      Src: /src/postgres/src/bin/psql/startup.c:334,1
    - Dst: process_psqlrc
      Src: /src/postgres/src/bin/psql/startup.c:341,1
    - Dst: listAllDbs
      Src: /src/postgres/src/bin/psql/startup.c:343,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:344,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:345,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/startup.c:350,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/startup.c:352,1
    - Dst: process_psqlrc
      Src: /src/postgres/src/bin/psql/startup.c:357,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/startup.c:372,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/startup.c:381,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/startup.c:388,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/startup.c:391,1
    - Dst: SendQuery
      Src: /src/postgres/src/bin/psql/startup.c:393,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/startup.c:401,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/startup.c:404,1
    - Dst: psql_scan_create
      Src: /src/postgres/src/bin/psql/startup.c:406,1
    - Dst: psql_scan_setup
      Src: /src/postgres/src/bin/psql/startup.c:407,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/startup.c:408,1
    - Dst: standard_strings
      Src: /src/postgres/src/bin/psql/startup.c:409,1
    - Dst: conditional_stack_create
      Src: /src/postgres/src/bin/psql/startup.c:410,1
    - Dst: psql_scan_set_passthrough
      Src: /src/postgres/src/bin/psql/startup.c:411,1
    - Dst: HandleSlashCmds
      Src: /src/postgres/src/bin/psql/startup.c:413,1
    - Dst: psql_scan_destroy
      Src: /src/postgres/src/bin/psql/startup.c:419,1
    - Dst: conditional_stack_destroy
      Src: /src/postgres/src/bin/psql/startup.c:420,1
    - Dst: process_file
      Src: /src/postgres/src/bin/psql/startup.c:424,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/startup.c:429,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/startup.c:443,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/startup.c:454,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/startup.c:466,1
    - Dst: connection_warnings
      Src: /src/postgres/src/bin/psql/startup.c:467,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/startup.c:469,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/startup.c:469,1
    - Dst: initializeInput
      Src: /src/postgres/src/bin/psql/startup.c:470,1
    - Dst: MainLoop
      Src: /src/postgres/src/bin/psql/startup.c:471,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/startup.c:476,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:478,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:480,1
    - Dst: setQFout
      Src: /src/postgres/src/bin/psql/startup.c:481,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 197
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 126
    functionDepth: 5
    functionLinenumber: 126
    functionLinenumberEnd: 484
    functionName: main
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - CppAsString2
    - PQclear
    - strcmp
    - fopen
    - showVersion
    - setDecimalLocale
    - PQuser
    - conditional_stack_destroy
    - simple_action_list_append
    - process_psqlrc
    - printf
    - HandleSlashCmds
    - puts
    - pg_log_error
    - connection_warnings
    - set_pglocale_pgservice
    - SendQuery
    - fileno
    - setQFout
    - psql_setup_cancel_handler
    - _
    - pfree
    - EstablishVariableSpace
    - psql_scan_set_passthrough
    - Assert
    - pg_logging_set_pre_callback
    - PQfinish
    - PQconnectdbParams
    - initializeInput
    - getenv
    - usage
    - PQstatus
    - MainLoop
    - standard_strings
    - PQsetNoticeProcessor
    - psprintf
    - isatty
    - pg_malloc_array
    - pg_initialize_timing
    - SyncVariables
    - pg_logging_config
    - conditional_stack_create
    - process_file
    - strlen
    - fclose
    - pg_free
    - PSQLexec
    - refresh_utf8format
    - exit
    - PQerrorMessage
    - SetVariableBool
    - psql_scan_destroy
    - pg_strdup
    - listAllDbs
    - psql_scan_setup
    - pg_logging_set_locus_callback
    - PQenv2encoding
    - pqsignal
    - parse_psql_options
    - pg_logging_init
    - simple_prompt
    - pg_fatal
    - atoi
    - SetVariable
    - PQconnectionNeedsPassword
    - psql_scan_create
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/psql/startup.c:538,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/psql/startup.c:540,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:546,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:552,1
    - Dst: simple_action_list_append
      Src: /src/postgres/src/bin/psql/startup.c:556,1
    - Dst: simple_action_list_append
      Src: /src/postgres/src/bin/psql/startup.c:560,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:565,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:568,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:571,1
    - Dst: simple_action_list_append
      Src: /src/postgres/src/bin/psql/startup.c:574,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:579,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:583,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:592,1
    - Dst: setQFout
      Src: /src/postgres/src/bin/psql/startup.c:598,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:599,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:602,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:610,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/startup.c:611,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/startup.c:613,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/startup.c:617,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/startup.c:621,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/startup.c:623,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:627,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:630,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:634,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:637,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:643,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:646,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:653,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/startup.c:654,1
    - Dst: DeleteVariable
      Src: /src/postgres/src/bin/psql/startup.c:657,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:658,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:663,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:664,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/startup.c:667,1
    - Dst: showVersion
      Src: /src/postgres/src/bin/psql/startup.c:671,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:672,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:696,1
    - Dst: usage
      Src: /src/postgres/src/bin/psql/startup.c:699,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:700,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:710,1
    - Dst: usage
      Src: /src/postgres/src/bin/psql/startup.c:711,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:712,1
    - Dst: slashUsage
      Src: /src/postgres/src/bin/psql/startup.c:713,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:714,1
    - Dst: helpVariables
      Src: /src/postgres/src/bin/psql/startup.c:715,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:719,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/psql/startup.c:728,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:730,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/startup.c:744,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 169
    argCount: 3
    argNames:
    - argc
    - argv
    - options
    argTypes:
    - int
    - char*[]
    - struct adhoc_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 491
    functionDepth: 3
    functionLinenumber: 491
    functionLinenumberEnd: 749
    functionName: parse_psql_options
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strchr
    - showVersion
    - simple_action_list_append
    - pg_log_warning
    - setQFout
    - usage
    - slashUsage
    - getopt_long
    - memset
    - pg_free
    - exit
    - pg_log_error_hint
    - SetVariableBool
    - pg_strdup
    - do_pset
    - pg_fatal
    - helpVariables
    - SetVariable
    - DeleteVariable
    linkageType: ''
    returnType: void
    signature: void parse_psql_options(int argc, char *argv[], struct adhoc_opts *options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/psql/startup.c:762,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:767,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - list
    - action
    - val
    argTypes:
    - SimpleActionList*
    - enum _actions
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 776
    functionName: simple_action_list_append
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 2
    functionsReached:
    - pg_malloc_object
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void simple_action_list_append(SimpleActionList *list,\n\t\t\t\t\t\t
      \ enum _actions action, const char *val)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/startup.c:789,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/psql/startup.c:791,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/startup.c:792,1
    - Dst: get_etc_path
      Src: /src/postgres/src/bin/psql/startup.c:794,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/startup.c:796,1
    - Dst: process_psqlrc_file
      Src: /src/postgres/src/bin/psql/startup.c:797,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/startup.c:799,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/startup.c:802,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/startup.c:804,1
    - Dst: process_psqlrc_file
      Src: /src/postgres/src/bin/psql/startup.c:805,1
    - Dst: get_home_path
      Src: /src/postgres/src/bin/psql/startup.c:807,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/startup.c:809,1
    - Dst: process_psqlrc_file
      Src: /src/postgres/src/bin/psql/startup.c:810,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 782
    functionDepth: 2
    functionLinenumber: 782
    functionLinenumberEnd: 812
    functionName: process_psqlrc
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 1
    functionsReached:
    - find_my_exec
    - get_etc_path
    - process_psqlrc_file
    - get_home_path
    - pstrdup
    - expand_tilde
    - pg_fatal
    - getenv
    - strlen
    - snprintf
    linkageType: ''
    returnType: void
    signature: void process_psqlrc(char *argv0)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/startup.c:826,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/startup.c:827,1
    - Dst: access
      Src: /src/postgres/src/bin/psql/startup.c:830,1
    - Dst: process_file
      Src: /src/postgres/src/bin/psql/startup.c:831,1
    - Dst: access
      Src: /src/postgres/src/bin/psql/startup.c:832,1
    - Dst: process_file
      Src: /src/postgres/src/bin/psql/startup.c:833,1
    - Dst: access
      Src: /src/postgres/src/bin/psql/startup.c:834,1
    - Dst: process_file
      Src: /src/postgres/src/bin/psql/startup.c:835,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/startup.c:837,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/startup.c:838,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 839
    functionName: process_psqlrc_file
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 1
    functionsReached:
    - pfree
    - psprintf
    - access
    - process_file
    linkageType: ''
    returnType: void
    signature: void process_psqlrc_file(char *filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: puts
      Src: /src/postgres/src/bin/psql/startup.c:851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 848
    functionDepth: 0
    functionLinenumber: 848
    functionLinenumberEnd: 852
    functionName: showVersion
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 2
    functionsReached:
    - puts
    linkageType: ''
    returnType: void
    signature: void showVersion(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:873,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/startup.c:878,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:879,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 867
    functionDepth: 1
    functionLinenumber: 867
    functionLinenumberEnd: 882
    functionName: bool_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_free
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      bool_substitute_hook(char *newval)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 884
    functionDepth: 2
    functionLinenumber: 884
    functionLinenumberEnd: 888
    functionName: autocommit_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool autocommit_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 890
    functionDepth: 2
    functionLinenumber: 890
    functionLinenumberEnd: 894
    functionName: on_error_stop_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool on_error_stop_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 896
    functionDepth: 2
    functionLinenumber: 896
    functionLinenumberEnd: 900
    functionName: quiet_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool quiet_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 902
    functionDepth: 2
    functionLinenumber: 902
    functionLinenumberEnd: 906
    functionName: singleline_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool singleline_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 908
    functionDepth: 2
    functionLinenumber: 908
    functionLinenumberEnd: 912
    functionName: singlestep_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool singlestep_hook(const char *newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:918,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 914
    functionDepth: 1
    functionLinenumber: 914
    functionLinenumberEnd: 920
    functionName: fetch_count_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      fetch_count_substitute_hook(char *newval)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableNum
      Src: /src/postgres/src/bin/psql/startup.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 922
    functionDepth: 2
    functionLinenumber: 922
    functionLinenumberEnd: 926
    functionName: fetch_count_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableNum
    linkageType: ''
    returnType: bool
    signature: bool fetch_count_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 928
    functionDepth: 0
    functionLinenumber: 928
    functionLinenumberEnd: 936
    functionName: histfile_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool histfile_hook(const char *newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 944
    functionName: histsize_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      histsize_substitute_hook(char *newval)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableNum
      Src: /src/postgres/src/bin/psql/startup.c:949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 946
    functionDepth: 2
    functionLinenumber: 946
    functionLinenumberEnd: 950
    functionName: histsize_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableNum
    linkageType: ''
    returnType: bool
    signature: bool histsize_hook(const char *newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:956,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 952
    functionDepth: 1
    functionLinenumber: 952
    functionLinenumberEnd: 958
    functionName: watch_interval_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      watch_interval_substitute_hook(char *newval)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableDouble
      Src: /src/postgres/src/bin/psql/startup.c:963,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 960
    functionDepth: 2
    functionLinenumber: 960
    functionLinenumberEnd: 965
    functionName: watch_interval_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableDouble
    linkageType: ''
    returnType: bool
    signature: bool watch_interval_hook(const char *newval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:982,1
    - Dst: ParseVariableNum
      Src: /src/postgres/src/bin/psql/startup.c:983,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:984,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 967
    functionDepth: 2
    functionLinenumber: 967
    functionLinenumberEnd: 986
    functionName: ignoreeof_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableNum
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      ignoreeof_substitute_hook(char *newval)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableNum
      Src: /src/postgres/src/bin/psql/startup.c:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 988
    functionDepth: 2
    functionLinenumber: 988
    functionLinenumberEnd: 992
    functionName: ignoreeof_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableNum
    linkageType: ''
    returnType: bool
    signature: bool ignoreeof_hook(const char *newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 994
    functionDepth: 1
    functionLinenumber: 994
    functionLinenumberEnd: 1000
    functionName: echo_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      echo_substitute_hook(char *newval)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/startup.c:1005,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1006,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1008,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1010,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1012,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1016,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 1002
    functionDepth: 2
    functionLinenumber: 1002
    functionLinenumberEnd: 1020
    functionName: echo_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strcasecmp
    - PsqlVarEnumError
    linkageType: ''
    returnType: bool
    signature: bool echo_hook(const char *newval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/startup.c:1025,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1026,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:1032,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1036,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1022
    functionDepth: 2
    functionLinenumber: 1022
    functionLinenumberEnd: 1041
    functionName: echo_hidden_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - PsqlVarEnumError
    - pg_strcasecmp
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool echo_hidden_hook(const char *newval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/startup.c:1046,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1047,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:1053,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1057,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1043
    functionDepth: 2
    functionLinenumber: 1043
    functionLinenumberEnd: 1062
    functionName: on_error_rollback_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - PsqlVarEnumError
    - pg_strcasecmp
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool on_error_rollback_hook(const char *newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:1068,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1070
    functionName: comp_keyword_case_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      comp_keyword_case_substitute_hook(char *newval)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/startup.c:1075,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1076,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1078,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1080,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1082,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1086,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1072
    functionDepth: 2
    functionLinenumber: 1072
    functionLinenumberEnd: 1091
    functionName: comp_keyword_case_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strcasecmp
    - PsqlVarEnumError
    linkageType: ''
    returnType: bool
    signature: bool comp_keyword_case_hook(const char *newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:1097,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1099
    functionName: histcontrol_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      histcontrol_substitute_hook(char *newval)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/startup.c:1104,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1105,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1107,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1109,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1111,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1115,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1101
    functionDepth: 2
    functionLinenumber: 1101
    functionLinenumberEnd: 1120
    functionName: histcontrol_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strcasecmp
    - PsqlVarEnumError
    linkageType: ''
    returnType: bool
    signature: bool histcontrol_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1122
    functionDepth: 0
    functionLinenumber: 1122
    functionLinenumberEnd: 1127
    functionName: prompt1_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool prompt1_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1129
    functionDepth: 0
    functionLinenumber: 1129
    functionLinenumberEnd: 1134
    functionName: prompt2_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool prompt2_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1136
    functionDepth: 0
    functionLinenumber: 1136
    functionLinenumberEnd: 1141
    functionName: prompt3_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool prompt3_hook(const char *newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:1147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1143
    functionDepth: 1
    functionLinenumber: 1143
    functionLinenumberEnd: 1149
    functionName: verbosity_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      verbosity_substitute_hook(char *newval)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/startup.c:1154,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1155,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1157,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1159,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1161,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1165,1
    - Dst: PQsetErrorVerbosity
      Src: /src/postgres/src/bin/psql/startup.c:1170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1151
    functionDepth: 2
    functionLinenumber: 1151
    functionLinenumberEnd: 1172
    functionName: verbosity_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strcasecmp
    - PsqlVarEnumError
    - PQsetErrorVerbosity
    linkageType: ''
    returnType: bool
    signature: bool verbosity_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:1177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1174
    functionDepth: 2
    functionLinenumber: 1174
    functionLinenumberEnd: 1178
    functionName: show_all_results_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool show_all_results_hook(const char *newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:1184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1180
    functionDepth: 1
    functionLinenumber: 1180
    functionLinenumberEnd: 1186
    functionName: show_context_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      show_context_substitute_hook(char *newval)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/startup.c:1191,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1192,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1194,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1196,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1200,1
    - Dst: PQsetErrorContextVisibility
      Src: /src/postgres/src/bin/psql/startup.c:1205,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1188
    functionDepth: 2
    functionLinenumber: 1188
    functionLinenumberEnd: 1207
    functionName: show_context_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQsetErrorContextVisibility
    - pg_strcasecmp
    - PsqlVarEnumError
    linkageType: ''
    returnType: bool
    signature: bool show_context_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:1212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1209
    functionDepth: 2
    functionLinenumber: 1209
    functionLinenumberEnd: 1214
    functionName: hide_compression_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool hide_compression_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:1219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1216
    functionDepth: 2
    functionLinenumber: 1216
    functionLinenumberEnd: 1220
    functionName: hide_tableam_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - ParseVariableBool
    linkageType: ''
    returnType: bool
    signature: bool hide_tableam_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateVariableSpace
      Src: /src/postgres/src/bin/psql/startup.c:1225,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1227,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1230,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1233,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1236,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1239,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1242,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1245,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1248,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1251,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1254,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1257,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1260,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1263,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1266,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1269,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1272,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1275,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1278,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1281,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1284,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1287,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1290,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1222
    functionDepth: 2
    functionLinenumber: 1222
    functionLinenumberEnd: 1296
    functionName: EstablishVariableSpace
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 1
    functionsReached:
    - CreateVariableSpace
    - SetVariableHooks
    linkageType: ''
    returnType: void
    signature: void EstablishVariableSpace(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/stringutils.c:73,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/stringutils.c:80,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/stringutils.c:80,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/psql/stringutils.c:81,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/stringutils.c:89,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/stringutils.c:96,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/stringutils.c:103,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/stringutils.c:115,1
    - Dst: memmove
      Src: /src/postgres/src/bin/psql/stringutils.c:116,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/stringutils.c:116,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/stringutils.c:141,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/stringutils.c:146,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/stringutils.c:165,1
    - Dst: memmove
      Src: /src/postgres/src/bin/psql/stringutils.c:166,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/stringutils.c:166,1
    - Dst: strip_quotes
      Src: /src/postgres/src/bin/psql/stringutils.c:178,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/psql/stringutils.c:188,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/psql/stringutils.c:192,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/psql/stringutils.c:200,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/stringutils.c:214,1
    - Dst: memmove
      Src: /src/postgres/src/bin/psql/stringutils.c:215,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/stringutils.c:215,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 77
    argCount: 8
    argNames:
    - s
    - whitespace
    - delim
    - quote
    - escape
    - e_strings
    - del_quotes
    - encoding
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char
    - bool
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 226
    functionName: strtokx
    functionSourceFile: /src/postgres/src/bin/psql/stringutils.c
    functionUses: 3
    functionsReached:
    - PQmblenBounded
    - strchr
    - memmove
    - strcspn
    - strspn
    - strlen
    - strip_quotes
    - pg_free
    - pg_malloc
    - strcpy
    linkageType: ''
    returnType: char
    signature: "char *\nstrtokx(const char *s,\n\t\tconst char *whitespace,\n\t\tconst
      char *delim,\n\t\tconst char *quote,\n\t\tchar escape,\n\t\tbool e_strings,\n\t\tbool
      del_quotes,\n\t\tint encoding)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/stringutils.c:245,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/stringutils.c:246,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/stringutils.c:265,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 4
    argNames:
    - source
    - quote
    - escape
    - encoding
    argTypes:
    - char*
    - char
    - char
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 271
    functionName: strip_quotes
    functionSourceFile: /src/postgres/src/bin/psql/stringutils.c
    functionUses: 2
    functionsReached:
    - Assert
    - PQmblenBounded
    linkageType: ''
    returnType: void
    signature: void strip_quotes(char *source, char quote, char escape, int encoding)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/stringutils.c:301,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/stringutils.c:302,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/stringutils.c:305,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/stringutils.c:305,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/stringutils.c:324,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/stringutils.c:327,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/stringutils.c:337,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 6
    argNames:
    - source
    - entails_quote
    - quote
    - escape
    - force_quote
    - encoding
    argTypes:
    - char*
    - char*
    - char
    - char
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 342
    functionName: quote_if_needed
    functionSourceFile: /src/postgres/src/bin/psql/stringutils.c
    functionUses: 2
    functionsReached:
    - PQmblenBounded
    - strchr
    - Assert
    - strlen
    - pg_free
    - pg_malloc
    linkageType: ''
    returnType: char
    signature: "char *\nquote_if_needed(const char *source, const char *entails_quote,\n\t\t\t\tchar
      quote, char escape, bool force_quote,\n\t\t\t\tint encoding)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:66,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:67,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:69,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 73
    functionName: Initialize
    functionSourceFile: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - exit
    - stat
    - S_ISDIR
    linkageType: ''
    returnType: void
    signature: void Initialize(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:84,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:85,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - filename
    - extension
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 89
    functionName: TrimExtension
    functionSourceFile: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c
    functionUses: 0
    functionsReached:
    - strlen
    - strcmp
    linkageType: ''
    returnType: void
    signature: void TrimExtension(char *filename, char *extension)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:99,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:101,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:104,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:115,1
    - Dst: TrimExtension
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:116,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:122,1
    - Dst: IsPartialXLogFileName
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:122,1
    - Dst: IsBackupHistoryFileName
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:123,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:139,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:146,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:156,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:157,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:161,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:163,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:165,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:170,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:172,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:173,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 175
    functionName: CleanupPriorWALFiles
    functionSourceFile: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - IsXLogFileName
    - IsPartialXLogFileName
    - strcmp
    - pg_log_debug
    - unlink
    - readdir
    - pg_fatal
    - TrimExtension
    - closedir
    - printf
    - IsBackupHistoryFileName
    - opendir
    - snprintf
    linkageType: ''
    returnType: void
    signature: void CleanupPriorWALFiles(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TrimExtension
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:188,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:198,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:200,1
    - Dst: IsPartialXLogFileName
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:203,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:210,1
    - Dst: XLogFileNameById
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:220,1
    - Dst: IsBackupHistoryFileName
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:223,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:231,1
    - Dst: XLogFileNameById
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:240,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:246,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:247,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:248,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 250
    functionName: SetWALFileNameForCleanup
    functionSourceFile: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c
    functionUses: 0
    functionsReached:
    - IsXLogFileName
    - sscanf
    - TrimExtension
    - XLogFileNameById
    - pg_log_error_hint
    - pg_log_error
    - exit
    - IsBackupHistoryFileName
    - strcpy
    - IsPartialXLogFileName
    linkageType: ''
    returnType: void
    signature: void SetWALFileNameForCleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:260,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:260,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:261,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:261,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:262,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:262,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:263,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:263,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:264,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:264,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:265,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:265,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:266,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:266,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:268,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:268,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:269,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:269,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:271,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:271,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:272,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:272,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:277,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:277,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:281,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:281,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:282,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 283
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c
    functionUses: 6
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:298,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:299,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:299,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:300,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:304,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:304,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:306,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:307,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:309,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:309,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:311,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:312,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:316,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:324,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:330,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:335,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:336,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:354,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:355,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:356,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:366,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:367,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:368,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:373,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:374,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:375,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:380,1
    - Dst: pg_log_info_detail
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:381,1
    - Dst: Initialize
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:387,1
    - Dst: SetWALFileNameForCleanup
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:392,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:394,1
    - Dst: CleanupPriorWALFiles
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:400,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:402,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 403
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - Initialize
    - strcmp
    - puts
    - pg_log_error
    - set_pglocale_pgservice
    - CleanupPriorWALFiles
    - pg_log_info_detail
    - usage
    - getopt_long
    - pg_log_info
    - exit
    - pg_log_error_hint
    - pg_strdup
    - SetWALFileNameForCleanup
    - pg_logging_init
    - pg_logging_increase_verbosity
    - pg_log_debug
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/scripts/dropuser.c:59,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/scripts/dropuser.c:60,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/scripts/dropuser.c:61,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/scripts/dropuser.c:61,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/scripts/dropuser.c:63,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/scripts/dropuser.c:65,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/dropuser.c:73,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/dropuser.c:79,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/dropuser.c:82,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/dropuser.c:95,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropuser.c:96,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/dropuser.c:108,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/dropuser.c:110,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropuser.c:111,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/scripts/dropuser.c:118,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/dropuser.c:122,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/dropuser.c:123,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropuser.c:124,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:130,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:130,1
    - Dst: yesno_prompt
      Src: /src/postgres/src/bin/scripts/dropuser.c:131,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropuser.c:132,1
    - Dst: connectMaintenanceDatabase
      Src: /src/postgres/src/bin/scripts/dropuser.c:142,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/dropuser.c:144,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/dropuser.c:145,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/bin/scripts/dropuser.c:147,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/dropuser.c:147,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:150,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/scripts/dropuser.c:151,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/scripts/dropuser.c:153,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/dropuser.c:155,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/dropuser.c:156,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/dropuser.c:157,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropuser.c:158,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/dropuser.c:161,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/dropuser.c:162,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropuser.c:163,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 80
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 164
    functionName: main
    functionSourceFile: /src/postgres/src/bin/scripts/dropuser.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - PQclear
    - PQclientEncoding
    - connectMaintenanceDatabase
    - printf
    - pg_log_error
    - set_pglocale_pgservice
    - _
    - fmtIdEnc
    - PQfinish
    - PQresultStatus
    - getopt_long
    - exit
    - PQerrorMessage
    - pg_log_error_hint
    - pg_strdup
    - yesno_prompt
    - PQexec
    - pg_logging_init
    - simple_prompt
    - initPQExpBuffer
    - handle_help_version_opts
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:170,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:170,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:171,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:171,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:172,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:172,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:173,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:173,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:174,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:174,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:175,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:175,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:177,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:177,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:178,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:178,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:179,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:179,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:180,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:180,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:181,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:181,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:182,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:182,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:183,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:183,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:184,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:184,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:185,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:185,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:186,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:186,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropuser.c:187,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropuser.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 188
    functionName: help
    functionSourceFile: /src/postgres/src/bin/scripts/dropuser.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 76
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/scripts/createuser.c:96,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/scripts/createuser.c:97,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/scripts/createuser.c:98,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/scripts/createuser.c:98,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/scripts/createuser.c:100,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/scripts/createuser.c:102,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/createuser.c:108,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/createuser.c:111,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/createuser.c:113,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/createuser.c:128,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createuser.c:131,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/createuser.c:146,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createuser.c:149,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createuser.c:167,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createuser.c:170,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/createuser.c:195,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/createuser.c:196,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/createuser.c:208,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/createuser.c:210,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/createuser.c:211,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/scripts/createuser.c:218,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/createuser.c:222,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/createuser.c:223,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/scripts/createuser.c:225,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/scripts/createuser.c:233,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/scripts/createuser.c:234,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/scripts/createuser.c:235,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/scripts/createuser.c:237,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:237,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/createuser.c:238,1
    - Dst: free
      Src: /src/postgres/src/bin/scripts/createuser.c:240,1
    - Dst: yesno_prompt
      Src: /src/postgres/src/bin/scripts/createuser.c:245,1
    - Dst: yesno_prompt
      Src: /src/postgres/src/bin/scripts/createuser.c:260,1
    - Dst: yesno_prompt
      Src: /src/postgres/src/bin/scripts/createuser.c:268,1
    - Dst: connectMaintenanceDatabase
      Src: /src/postgres/src/bin/scripts/createuser.c:293,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/scripts/createuser.c:295,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/createuser.c:295,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createuser.c:297,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createuser.c:299,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createuser.c:299,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:304,1
    - Dst: PQencryptPasswordConn
      Src: /src/postgres/src/bin/scripts/createuser.c:306,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/createuser.c:311,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/createuser.c:312,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/createuser.c:313,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/scripts/createuser.c:314,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:317,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:319,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:321,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:323,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:325,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:327,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:329,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:331,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:333,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:335,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:337,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:339,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:341,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:343,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createuser.c:345,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:348,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/createuser.c:349,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:355,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createuser.c:360,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createuser.c:360,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:362,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createuser.c:362,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:369,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createuser.c:374,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createuser.c:374,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:376,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createuser.c:376,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:383,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createuser.c:388,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createuser.c:388,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createuser.c:390,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createuser.c:390,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/createuser.c:394,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:397,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/scripts/createuser.c:398,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/scripts/createuser.c:400,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/createuser.c:402,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/createuser.c:402,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/createuser.c:403,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/createuser.c:404,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/createuser.c:407,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/createuser.c:408,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/createuser.c:409,1
    CyclomaticComplexity: 82
    EdgeCount: 82
    ICount: 240
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 410
    functionName: main
    functionSourceFile: /src/postgres/src/bin/scripts/createuser.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - PQclear
    - strcmp
    - get_user_name_or_exit
    - PQclientEncoding
    - connectMaintenanceDatabase
    - printf
    - pg_log_error
    - fmtId
    - appendPQExpBufferStr
    - set_pglocale_pgservice
    - fprintf
    - appendStringLiteralConn
    - _
    - printfPQExpBuffer
    - PQfinish
    - simple_string_list_append
    - getenv
    - PQresultStatus
    - option_parse_int
    - setFmtEncoding
    - getopt_long
    - PQfreemem
    - appendPQExpBufferChar
    - exit
    - PQerrorMessage
    - pg_log_error_hint
    - pg_strdup
    - yesno_prompt
    - PQexec
    - pg_logging_init
    - simple_prompt
    - PQencryptPasswordConn
    - pg_fatal
    - free
    - initPQExpBuffer
    - handle_help_version_opts
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:416,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:416,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:417,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:417,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:418,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:418,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:419,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:419,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:420,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:420,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:422,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:422,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:423,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:423,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:424,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:424,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:425,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:425,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:426,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:426,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:427,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:427,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:428,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:428,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:430,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:430,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:431,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:431,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:432,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:432,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:433,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:433,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:434,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:434,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:435,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:435,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:436,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:436,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:437,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:437,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:438,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:438,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:439,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:439,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:441,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:441,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:442,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:442,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:444,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:444,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:445,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:445,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:447,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:447,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:448,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:448,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:449,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:449,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:450,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:450,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:451,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:451,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:452,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:452,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:453,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:453,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:454,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:454,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:455,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:455,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:456,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:456,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createuser.c:457,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createuser.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 458
    functionName: help
    functionSourceFile: /src/postgres/src/bin/scripts/createuser.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/scripts/common.c:54,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/scripts/common.c:56,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 4
    argNames:
    - spec
    - encoding
    - table
    - columns
    argTypes:
    - char*
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 58
    functionName: splitTableColumnsSpec
    functionSourceFile: /src/postgres/src/bin/scripts/common.c
    functionUses: 0
    functionsReached:
    - PQmblenBounded
    - pnstrdup
    linkageType: ''
    returnType: void
    signature: "void splitTableColumnsSpec(const char *spec, int encoding,\n\t\t\t\t\t
      \ char **table, const char **columns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: splitTableColumnsSpec
      Src: /src/postgres/src/bin/scripts/common.c:77,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/common.c:77,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/common.c:84,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/common.c:85,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/common.c:91,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/common.c:92,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/scripts/common.c:94,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/common.c:102,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/common.c:103,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/common.c:106,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/scripts/common.c:106,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/common.c:110,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/common.c:111,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/common.c:113,1
    - Dst: fmtQualifiedIdEnc
      Src: /src/postgres/src/bin/scripts/common.c:114,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/common.c:114,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/common.c:115,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/common.c:116,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/common.c:117,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/common.c:118,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/common.c:119,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/scripts/common.c:120,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/common.c:122,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/common.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 4
    argNames:
    - buf
    - spec
    - conn
    - echo
    argTypes:
    - PQExpBuffer
    - char*
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 123
    functionName: appendQualifiedRelation
    functionSourceFile: /src/postgres/src/bin/scripts/common.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - fmtQualifiedIdEnc
    - PQclear
    - PQclientEncoding
    - ngettext
    - PQfinish
    - exit
    - initPQExpBuffer
    - executeCommand
    - PQntuples
    - PQgetvalue
    - pg_free
    - pg_log_error
    - splitTableColumnsSpec
    - appendStringLiteralConn
    - appendPQExpBufferStr
    - executeQuery
    linkageType: ''
    returnType: void
    signature: "void appendQualifiedRelation(PQExpBuffer buf, const char *spec,\n\t\t\t\t\t\tPGconn
      *conn, bool echo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/scripts/common.c:143,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/common.c:143,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/common.c:144,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/common.c:144,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/common.c:144,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/scripts/common.c:150,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/scripts/common.c:152,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/common.c:152,1
    - Dst: free
      Src: /src/postgres/src/bin/scripts/common.c:154,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/scripts/common.c:157,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/common.c:157,1
    - Dst: free
      Src: /src/postgres/src/bin/scripts/common.c:159,1
    - Dst: free
      Src: /src/postgres/src/bin/scripts/common.c:162,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/common.c:164,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/common.c:164,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/common.c:165,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/common.c:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - question
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 167
    functionName: yesno_prompt
    functionSourceFile: /src/postgres/src/bin/scripts/common.c
    functionUses: 2
    functionsReached:
    - strcmp
    - _
    - simple_prompt
    - free
    - printf
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool yesno_prompt(const char *question)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/scripts/reindexdb.c:115,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/scripts/reindexdb.c:116,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/scripts/reindexdb.c:117,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/scripts/reindexdb.c:117,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/scripts/reindexdb.c:119,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/scripts/reindexdb.c:122,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/reindexdb.c:130,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/reindexdb.c:136,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/reindexdb.c:139,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/reindexdb.c:142,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/reindexdb.c:144,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/reindexdb.c:150,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/reindexdb.c:156,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/reindexdb.c:159,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/reindexdb.c:162,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/reindexdb.c:177,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/reindexdb.c:180,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/reindexdb.c:184,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/reindexdb.c:185,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/reindexdb.c:201,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/reindexdb.c:203,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/reindexdb.c:204,1
    - Dst: setup_cancel_handler
      Src: /src/postgres/src/bin/scripts/reindexdb.c:214,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/reindexdb.c:217,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/reindexdb.c:222,1
    - Dst: reindex_all_databases
      Src: /src/postgres/src/bin/scripts/reindexdb.c:226,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/reindexdb.c:234,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/reindexdb.c:235,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/reindexdb.c:236,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/reindexdb.c:237,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/scripts/reindexdb.c:239,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:245,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:250,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:255,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:260,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:270,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/reindexdb.c:275,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 110
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 276
    functionName: main
    functionSourceFile: /src/postgres/src/bin/scripts/reindexdb.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - setup_cancel_handler
    - option_parse_int
    - pg_logging_init
    - get_user_name_or_exit
    - getopt_long
    - pg_fatal
    - reindex_one_database
    - simple_string_list_append
    - getenv
    - reindex_all_databases
    - pg_log_error
    - exit
    - handle_help_version_opts
    - pg_log_error_hint
    - set_pglocale_pgservice
    - pg_strdup
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: connectDatabase
      Src: /src/postgres/src/bin/scripts/reindexdb.c:297,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/reindexdb.c:299,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/reindexdb.c:301,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/reindexdb.c:302,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/reindexdb.c:306,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/reindexdb.c:308,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/reindexdb.c:309,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:324,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/scripts/reindexdb.c:325,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/reindexdb.c:326,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/reindexdb.c:326,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:333,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:342,1
    - Dst: get_parallel_tables_list
      Src: /src/postgres/src/bin/scripts/reindexdb.c:348,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/reindexdb.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:361,1
    - Dst: get_parallel_tabidx_list
      Src: /src/postgres/src/bin/scripts/reindexdb.c:367,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/reindexdb.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:384,1
    - Dst: Min
      Src: /src/postgres/src/bin/scripts/reindexdb.c:407,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:408,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:410,1
    - Dst: ParallelSlotsSetup
      Src: /src/postgres/src/bin/scripts/reindexdb.c:412,1
    - Dst: ParallelSlotsAdoptConn
      Src: /src/postgres/src/bin/scripts/reindexdb.c:413,1
    - Dst: ParallelSlotsGetIdle
      Src: /src/postgres/src/bin/scripts/reindexdb.c:428,1
    - Dst: ParallelSlotSetHandler
      Src: /src/postgres/src/bin/scripts/reindexdb.c:435,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/reindexdb.c:436,1
    - Dst: gen_reindex_command
      Src: /src/postgres/src/bin/scripts/reindexdb.c:445,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/reindexdb.c:453,1
    - Dst: gen_reindex_command
      Src: /src/postgres/src/bin/scripts/reindexdb.c:454,1
    - Dst: gen_reindex_command
      Src: /src/postgres/src/bin/scripts/reindexdb.c:461,1
    - Dst: run_reindex_command
      Src: /src/postgres/src/bin/scripts/reindexdb.c:464,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/reindexdb.c:466,1
    - Dst: ParallelSlotsWaitCompletion
      Src: /src/postgres/src/bin/scripts/reindexdb.c:471,1
    - Dst: simple_string_list_destroy
      Src: /src/postgres/src/bin/scripts/reindexdb.c:477,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/scripts/reindexdb.c:478,1
    - Dst: simple_oid_list_destroy
      Src: /src/postgres/src/bin/scripts/reindexdb.c:483,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/scripts/reindexdb.c:484,1
    - Dst: ParallelSlotsTerminate
      Src: /src/postgres/src/bin/scripts/reindexdb.c:487,1
    - Dst: pfree
      Src: /src/postgres/src/bin/scripts/reindexdb.c:488,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/reindexdb.c:491,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 117
    argCount: 9
    argNames:
    - cparams
    - type
    - user_list
    - progname
    - echo
    - verbose
    - concurrently
    - concurrentCons
    - tablespace
    argTypes:
    - ConnParams*
    - ReindexType
    - SimpleStringList*
    - char*
    - bool
    - bool
    - bool
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 492
    functionName: reindex_one_database
    functionSourceFile: /src/postgres/src/bin/scripts/reindexdb.c
    functionUses: 1
    functionsReached:
    - simple_string_list_destroy
    - ParallelSlotsSetup
    - simple_oid_list_destroy
    - gen_reindex_command
    - pg_malloc0_object
    - get_parallel_tabidx_list
    - Assert
    - pfree
    - PQfinish
    - ParallelSlotsTerminate
    - simple_string_list_append
    - PQdb
    - ParallelSlotsGetIdle
    - get_parallel_tables_list
    - ParallelSlotsAdoptConn
    - run_reindex_command
    - PQserverVersion
    - appendPQExpBufferChar
    - termPQExpBuffer
    - pg_free
    - ParallelSlotSetHandler
    - exit
    - connectDatabase
    - pg_fatal
    - initPQExpBuffer
    - ParallelSlotsWaitCompletion
    - Min
    linkageType: ''
    returnType: void
    signature: "void reindex_one_database(ConnParams *cparams, ReindexType type,\n\t\t\t\t\t
      SimpleStringList *user_list,\n\t\t\t\t\t const char *progname, bool echo,\n\t\t\t\t\t
      bool verbose, bool concurrently, int concurrentCons,\n\t\t\t\t\t const char
      *tablespace)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:507,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:510,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/reindexdb.c:514,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/reindexdb.c:520,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/bin/scripts/reindexdb.c:521,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/reindexdb.c:521,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:526,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:532,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:535,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:538,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:541,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:544,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:554,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:561,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/bin/scripts/reindexdb.c:562,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/reindexdb.c:562,1
    - Dst: appendQualifiedRelation
      Src: /src/postgres/src/bin/scripts/reindexdb.c:566,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:569,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/reindexdb.c:574,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 8
    argNames:
    - conn
    - type
    - name
    - echo
    - verbose
    - concurrently
    - tablespace
    - sql
    argTypes:
    - PGconn*
    - ReindexType
    - char*
    - bool
    - bool
    - bool
    - char*
    - PQExpBufferData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 498
    functionDepth: 3
    functionLinenumber: 498
    functionLinenumberEnd: 575
    functionName: gen_reindex_command
    functionSourceFile: /src/postgres/src/bin/scripts/reindexdb.c
    functionUses: 1
    functionsReached:
    - Assert
    - fmtIdEnc
    - appendPQExpBufferStr
    - PQclientEncoding
    - appendQualifiedRelation
    - appendPQExpBufferChar
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void gen_reindex_command(PGconn *conn, ReindexType type, const char
      *name,\n\t\t\t\t\tbool echo, bool verbose, bool concurrently,\n\t\t\t\t\tconst
      char *tablespace, PQExpBufferData *sql)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:588,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/scripts/reindexdb.c:590,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/reindexdb.c:597,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/reindexdb.c:598,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/reindexdb.c:598,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/reindexdb.c:601,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/reindexdb.c:602,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/reindexdb.c:602,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/reindexdb.c:605,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/reindexdb.c:606,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/reindexdb.c:606,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/reindexdb.c:609,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/reindexdb.c:610,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/reindexdb.c:610,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/reindexdb.c:613,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/reindexdb.c:614,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/reindexdb.c:614,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 5
    argNames:
    - conn
    - type
    - name
    - echo
    - sql
    argTypes:
    - PGconn*
    - ReindexType
    - char*
    - bool
    - PQExpBufferData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 618
    functionName: run_reindex_command
    functionSourceFile: /src/postgres/src/bin/scripts/reindexdb.c
    functionUses: 1
    functionsReached:
    - PQsendQuery
    - PQdb
    - printf
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: "void run_reindex_command(PGconn *conn, ReindexType type, const char
      *name,\n\t\t\t\t\tbool echo, PQExpBufferData *sql)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/reindexdb.c:637,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:646,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:647,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/reindexdb.c:655,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:665,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:671,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/reindexdb.c:678,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/reindexdb.c:686,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/reindexdb.c:688,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:691,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:699,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/reindexdb.c:703,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/reindexdb.c:704,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/reindexdb.c:709,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/reindexdb.c:712,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/scripts/reindexdb.c:716,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/reindexdb.c:721,1
    - Dst: fmtQualifiedIdEnc
      Src: /src/postgres/src/bin/scripts/reindexdb.c:722,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/reindexdb.c:722,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/reindexdb.c:723,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/reindexdb.c:724,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/reindexdb.c:726,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 4
    argNames:
    - conn
    - type
    - user_list
    - echo
    argTypes:
    - PGconn*
    - ReindexType
    - SimpleStringList*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 729
    functionName: get_parallel_tables_list
    functionSourceFile: /src/postgres/src/bin/scripts/reindexdb.c
    functionUses: 1
    functionsReached:
    - CppAsString2
    - PQclear
    - fmtQualifiedIdEnc
    - Assert
    - PQclientEncoding
    - simple_string_list_append
    - initPQExpBuffer
    - pg_malloc0_object
    - PQgetvalue
    - appendPQExpBufferChar
    - termPQExpBuffer
    - PQntuples
    - appendStringLiteralConn
    - appendPQExpBufferStr
    - executeQuery
    linkageType: ''
    returnType: SimpleStringList
    signature: "SimpleStringList *\nget_parallel_tables_list(PGconn *conn, ReindexType
      type,\n\t\t\t\t\t\t SimpleStringList *user_list, bool echo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/reindexdb.c:754,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/reindexdb.c:756,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:770,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:780,1
    - Dst: appendQualifiedRelation
      Src: /src/postgres/src/bin/scripts/reindexdb.c:782,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/reindexdb.c:789,1
    - Dst: simple_string_list_destroy
      Src: /src/postgres/src/bin/scripts/reindexdb.c:796,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/reindexdb.c:799,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/reindexdb.c:800,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/reindexdb.c:805,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/reindexdb.c:808,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/scripts/reindexdb.c:812,1
    - Dst: simple_oid_list_append
      Src: /src/postgres/src/bin/scripts/reindexdb.c:820,1
    - Dst: atooid
      Src: /src/postgres/src/bin/scripts/reindexdb.c:820,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/reindexdb.c:820,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/reindexdb.c:821,1
    - Dst: fmtQualifiedIdEnc
      Src: /src/postgres/src/bin/scripts/reindexdb.c:822,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/reindexdb.c:822,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/reindexdb.c:823,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/reindexdb.c:824,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/reindexdb.c:827,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 4
    argNames:
    - conn
    - index_list
    - table_list
    - echo
    argTypes:
    - PGconn*
    - SimpleStringList*
    - SimpleOidList**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 743
    functionDepth: 3
    functionLinenumber: 743
    functionLinenumberEnd: 828
    functionName: get_parallel_tabidx_list
    functionSourceFile: /src/postgres/src/bin/scripts/reindexdb.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - simple_oid_list_append
    - atooid
    - PQclear
    - fmtQualifiedIdEnc
    - Assert
    - appendPQExpBufferStr
    - PQclientEncoding
    - simple_string_list_append
    - initPQExpBuffer
    - pg_malloc0_object
    - PQgetvalue
    - simple_string_list_destroy
    - PQntuples
    - appendQualifiedRelation
    - executeQuery
    linkageType: ''
    returnType: void
    signature: "void get_parallel_tabidx_list(PGconn *conn,\n\t\t\t\t\t\t SimpleStringList
      *index_list,\n\t\t\t\t\t\t SimpleOidList **table_list,\n\t\t\t\t\t\t bool echo)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: connectMaintenanceDatabase
      Src: /src/postgres/src/bin/scripts/reindexdb.c:842,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/reindexdb.c:843,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/reindexdb.c:846,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/reindexdb.c:848,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/reindexdb.c:850,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:854,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:854,1
    - Dst: fflush
      Src: /src/postgres/src/bin/scripts/reindexdb.c:855,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:861,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:866,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:871,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:876,1
    - Dst: reindex_one_database
      Src: /src/postgres/src/bin/scripts/reindexdb.c:886,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/reindexdb.c:891,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 12
    argNames:
    - cparams
    - progname
    - echo
    - quiet
    - verbose
    - concurrently
    - concurrentCons
    - tablespace
    - syscatalog
    - schemas
    - tables
    - indexes
    argTypes:
    - ConnParams*
    - char*
    - bool
    - bool
    - bool
    - bool
    - int
    - char*
    - bool
    - SimpleStringList*
    - SimpleStringList*
    - SimpleStringList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 830
    functionDepth: 2
    functionLinenumber: 830
    functionLinenumberEnd: 892
    functionName: reindex_all_databases
    functionSourceFile: /src/postgres/src/bin/scripts/reindexdb.c
    functionUses: 1
    functionsReached:
    - PQclear
    - _
    - PQfinish
    - reindex_one_database
    - connectMaintenanceDatabase
    - printf
    - fflush
    - PQgetvalue
    - PQntuples
    - executeQuery
    linkageType: ''
    returnType: void
    signature: "void reindex_all_databases(ConnParams *cparams,\n\t\t\t\t\t  const
      char *progname, bool echo, bool quiet, bool verbose,\n\t\t\t\t\t  bool concurrently,
      int concurrentCons,\n\t\t\t\t\t  const char *tablespace, bool syscatalog,\n\t\t\t\t\t
      \ SimpleStringList *schemas, SimpleStringList *tables,\n\t\t\t\t\t  SimpleStringList
      *indexes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:897,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:897,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:898,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:898,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:899,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:899,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:900,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:900,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:901,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:901,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:902,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:902,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:903,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:903,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:904,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:904,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:905,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:905,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:906,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:906,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:907,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:907,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:908,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:908,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:909,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:909,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:910,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:910,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:911,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:911,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:912,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:912,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:913,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:913,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:914,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:914,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:915,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:915,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:916,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:916,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:917,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:917,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:918,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:918,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:919,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:919,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:920,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:920,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:921,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:921,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:922,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:922,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:923,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:923,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/reindexdb.c:924,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/reindexdb.c:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 925
    functionName: help
    functionSourceFile: /src/postgres/src/bin/scripts/reindexdb.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/scripts/clusterdb.c:65,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/scripts/clusterdb.c:66,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/scripts/clusterdb.c:67,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/scripts/clusterdb.c:67,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/scripts/clusterdb.c:69,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/scripts/clusterdb.c:71,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/clusterdb.c:79,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/clusterdb.c:85,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/clusterdb.c:88,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/clusterdb.c:94,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/clusterdb.c:97,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/clusterdb.c:109,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/clusterdb.c:113,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/clusterdb.c:114,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/clusterdb.c:130,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/clusterdb.c:132,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/clusterdb.c:133,1
    - Dst: setup_cancel_handler
      Src: /src/postgres/src/bin/scripts/clusterdb.c:143,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/clusterdb.c:148,1
    - Dst: cluster_all_databases
      Src: /src/postgres/src/bin/scripts/clusterdb.c:152,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/clusterdb.c:159,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/clusterdb.c:160,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/clusterdb.c:161,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/clusterdb.c:162,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/scripts/clusterdb.c:164,1
    - Dst: cluster_one_database
      Src: /src/postgres/src/bin/scripts/clusterdb.c:175,1
    - Dst: cluster_one_database
      Src: /src/postgres/src/bin/scripts/clusterdb.c:180,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/clusterdb.c:184,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 85
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 185
    functionName: main
    functionSourceFile: /src/postgres/src/bin/scripts/clusterdb.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - setup_cancel_handler
    - cluster_all_databases
    - cluster_one_database
    - pg_logging_init
    - get_user_name_or_exit
    - getopt_long
    - pg_fatal
    - simple_string_list_append
    - getenv
    - pg_log_error
    - exit
    - handle_help_version_opts
    - pg_log_error_hint
    - set_pglocale_pgservice
    - pg_strdup
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connectDatabase
      Src: /src/postgres/src/bin/scripts/clusterdb.c:196,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/clusterdb.c:198,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/clusterdb.c:200,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/clusterdb.c:202,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/clusterdb.c:205,1
    - Dst: appendQualifiedRelation
      Src: /src/postgres/src/bin/scripts/clusterdb.c:206,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/clusterdb.c:208,1
    - Dst: executeMaintenanceCommand
      Src: /src/postgres/src/bin/scripts/clusterdb.c:210,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/clusterdb.c:213,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/clusterdb.c:214,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/clusterdb.c:214,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/clusterdb.c:216,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/clusterdb.c:217,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/clusterdb.c:217,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/clusterdb.c:218,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/clusterdb.c:219,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/clusterdb.c:221,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/clusterdb.c:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 5
    argNames:
    - cparams
    - table
    - progname
    - verbose
    - echo
    argTypes:
    - ConnParams*
    - char*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 188
    functionDepth: 3
    functionLinenumber: 188
    functionLinenumberEnd: 223
    functionName: cluster_one_database
    functionSourceFile: /src/postgres/src/bin/scripts/clusterdb.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - connectDatabase
    - executeMaintenanceCommand
    - PQfinish
    - exit
    - appendQualifiedRelation
    - initPQExpBuffer
    - PQdb
    - appendPQExpBufferChar
    - pg_log_error
    - PQerrorMessage
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: "void cluster_one_database(const ConnParams *cparams, const char *table,\n\t\t\t\t\t
      const char *progname, bool verbose, bool echo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connectMaintenanceDatabase
      Src: /src/postgres/src/bin/scripts/clusterdb.c:235,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/clusterdb.c:236,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/clusterdb.c:239,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/clusterdb.c:241,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/clusterdb.c:243,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:247,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:247,1
    - Dst: fflush
      Src: /src/postgres/src/bin/scripts/clusterdb.c:248,1
    - Dst: cluster_one_database
      Src: /src/postgres/src/bin/scripts/clusterdb.c:258,1
    - Dst: cluster_one_database
      Src: /src/postgres/src/bin/scripts/clusterdb.c:262,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/clusterdb.c:266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 6
    argNames:
    - cparams
    - tables
    - progname
    - verbose
    - echo
    - quiet
    argTypes:
    - ConnParams*
    - SimpleStringList*
    - char*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 267
    functionName: cluster_all_databases
    functionSourceFile: /src/postgres/src/bin/scripts/clusterdb.c
    functionUses: 1
    functionsReached:
    - PQclear
    - _
    - cluster_one_database
    - PQfinish
    - connectMaintenanceDatabase
    - printf
    - fflush
    - PQgetvalue
    - PQntuples
    - executeQuery
    linkageType: ''
    returnType: void
    signature: "void cluster_all_databases(ConnParams *cparams, SimpleStringList *tables,\n\t\t\t\t\t
      \ const char *progname, bool verbose, bool echo,\n\t\t\t\t\t  bool quiet)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:273,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:273,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:274,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:274,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:275,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:275,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:276,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:276,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:277,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:277,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:278,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:278,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:279,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:279,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:280,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:280,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:281,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:281,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:282,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:282,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:283,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:283,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:284,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:284,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:285,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:285,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:286,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:286,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:287,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:287,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:288,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:288,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:289,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:289,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:290,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:290,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:291,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:291,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:292,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:292,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:293,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:293,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/clusterdb.c:294,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/clusterdb.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 295
    functionName: help
    functionSourceFile: /src/postgres/src/bin/scripts/clusterdb.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: setup_cancel_handler
      Src: /src/postgres/src/bin/scripts/vacuuming.c:61,1
    - Dst: vacuum_all_databases
      Src: /src/postgres/src/bin/scripts/vacuuming.c:71,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/vacuuming.c:80,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/vacuuming.c:81,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/vacuuming.c:82,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/vacuuming.c:83,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/scripts/vacuuming.c:85,1
    - Dst: vacuum_one_database
      Src: /src/postgres/src/bin/scripts/vacuuming.c:98,1
    - Dst: free_retrieved_objects
      Src: /src/postgres/src/bin/scripts/vacuuming.c:106,1
    - Dst: free_retrieved_objects
      Src: /src/postgres/src/bin/scripts/vacuuming.c:111,1
    - Dst: vacuum_one_database
      Src: /src/postgres/src/bin/scripts/vacuuming.c:115,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 8
    argNames:
    - cparams
    - dbname
    - maintenance_db
    - vacopts
    - objects
    - tbl_count
    - concurrentCons
    - progname
    argTypes:
    - ConnParams*
    - char*
    - char*
    - vacuumingOptions*
    - SimpleStringList*
    - unsigned int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 121
    functionName: vacuuming_main
    functionSourceFile: /src/postgres/src/bin/scripts/vacuuming.c
    functionUses: 0
    functionsReached:
    - vacuum_one_database
    - get_user_name_or_exit
    - free_retrieved_objects
    - vacuum_all_databases
    - getenv
    - setup_cancel_handler
    linkageType: ''
    returnType: int
    signature: "int vacuuming_main(ConnParams *cparams, const char *dbname,\n\t\t\t
      \  const char *maintenance_db, vacuumingOptions *vacopts,\n\t\t\t   SimpleStringList
      *objects,\n\t\t\t   unsigned int tbl_count, int concurrentCons,\n\t\t\t   const
      char *progname)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/scripts/vacuuming.c:187,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/scripts/vacuuming.c:188,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/scripts/vacuuming.c:189,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:192,1
    - Dst: connectDatabase
      Src: /src/postgres/src/bin/scripts/vacuuming.c:195,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:197,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:199,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:200,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:204,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:206,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:207,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:211,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:213,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:214,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:218,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:220,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:221,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:225,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:227,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:228,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:232,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:234,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:235,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:239,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:241,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:242,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:246,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:248,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:249,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:253,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:255,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:256,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:260,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:262,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:263,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:267,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:269,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:270,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:274,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:276,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:277,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:282,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuuming.c:287,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuuming.c:287,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/vacuuming.c:288,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuuming.c:288,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuuming.c:290,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuuming.c:290,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/vacuuming.c:291,1
    - Dst: fflush
      Src: /src/postgres/src/bin/scripts/vacuuming.c:292,1
    - Dst: retrieve_objects
      Src: /src/postgres/src/bin/scripts/vacuuming.c:305,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:321,1
    - Dst: free_retrieved_objects
      Src: /src/postgres/src/bin/scripts/vacuuming.c:323,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuuming.c:346,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/scripts/vacuuming.c:348,1
    - Dst: ParallelSlotsSetup
      Src: /src/postgres/src/bin/scripts/vacuuming.c:358,1
    - Dst: ParallelSlotsAdoptConn
      Src: /src/postgres/src/bin/scripts/vacuuming.c:360,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:362,1
    - Dst: ParallelSlotsGetIdle
      Src: /src/postgres/src/bin/scripts/vacuuming.c:376,1
    - Dst: prepare_vacuum_command
      Src: /src/postgres/src/bin/scripts/vacuuming.c:383,1
    - Dst: ParallelSlotSetHandler
      Src: /src/postgres/src/bin/scripts/vacuuming.c:390,1
    - Dst: run_vacuum_command
      Src: /src/postgres/src/bin/scripts/vacuuming.c:391,1
    - Dst: ParallelSlotsWaitCompletion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:396,1
    - Dst: ParallelSlotsGetIdle
      Src: /src/postgres/src/bin/scripts/vacuuming.c:406,1
    - Dst: ParallelSlotSetHandler
      Src: /src/postgres/src/bin/scripts/vacuuming.c:414,1
    - Dst: run_vacuum_command
      Src: /src/postgres/src/bin/scripts/vacuuming.c:415,1
    - Dst: ParallelSlotsWaitCompletion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:417,1
    - Dst: ParallelSlotsTerminate
      Src: /src/postgres/src/bin/scripts/vacuuming.c:422,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/scripts/vacuuming.c:423,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:424,1
    - Dst: free_retrieved_objects
      Src: /src/postgres/src/bin/scripts/vacuuming.c:426,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 129
    argCount: 7
    argNames:
    - cparams
    - vacopts
    - stage
    - objects
    - found_objs
    - concurrentCons
    - progname
    argTypes:
    - ConnParams*
    - vacuumingOptions*
    - int
    - SimpleStringList*
    - SimpleStringList**
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 429
    functionName: vacuum_one_database
    functionSourceFile: /src/postgres/src/bin/scripts/vacuuming.c
    functionUses: 1
    functionsReached:
    - ParallelSlotsSetup
    - free_retrieved_objects
    - gettext_noop
    - run_vacuum_command
    - printf
    - _
    - Assert
    - PQfinish
    - ParallelSlotsTerminate
    - PQdb
    - fflush
    - ParallelSlotsGetIdle
    - ParallelSlotsAdoptConn
    - PQserverVersion
    - pg_free
    - termPQExpBuffer
    - ParallelSlotSetHandler
    - prepare_vacuum_command
    - connectDatabase
    - pg_fatal
    - initPQExpBuffer
    - executeCommand
    - ParallelSlotsWaitCompletion
    - retrieve_objects
    linkageType: ''
    returnType: int
    signature: "int vacuum_one_database(ConnParams *cparams,\n\t\t\t\t\tvacuumingOptions
      *vacopts,\n\t\t\t\t\tint stage,\n\t\t\t\t\tSimpleStringList *objects,\n\t\t\t\t\tSimpleStringList
      **found_objs,\n\t\t\t\t\tint concurrentCons,\n\t\t\t\t\tconst char *progname)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: connectMaintenanceDatabase
      Src: /src/postgres/src/bin/scripts/vacuuming.c:450,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/vacuuming.c:451,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/vacuuming.c:454,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuuming.c:455,1
    - Dst: palloc0
      Src: /src/postgres/src/bin/scripts/vacuuming.c:462,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuuming.c:476,1
    - Dst: vacuum_one_database
      Src: /src/postgres/src/bin/scripts/vacuuming.c:477,1
    - Dst: free_retrieved_objects
      Src: /src/postgres/src/bin/scripts/vacuuming.c:492,1
    - Dst: pfree
      Src: /src/postgres/src/bin/scripts/vacuuming.c:493,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuuming.c:500,1
    - Dst: vacuum_one_database
      Src: /src/postgres/src/bin/scripts/vacuuming.c:501,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/vacuuming.c:512,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 5
    argNames:
    - cparams
    - vacopts
    - objects
    - concurrentCons
    - progname
    argTypes:
    - ConnParams*
    - vacuumingOptions*
    - SimpleStringList*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 515
    functionName: vacuum_all_databases
    functionSourceFile: /src/postgres/src/bin/scripts/vacuuming.c
    functionUses: 1
    functionsReached:
    - PQclear
    - vacuum_one_database
    - pfree
    - palloc0
    - free_retrieved_objects
    - PQfinish
    - connectMaintenanceDatabase
    - PQgetvalue
    - PQntuples
    - executeQuery
    linkageType: ''
    returnType: int
    signature: "int vacuum_all_databases(ConnParams *cparams,\n\t\t\t\t\t vacuumingOptions
      *vacopts,\n\t\t\t\t\t SimpleStringList *objects,\n\t\t\t\t\t int concurrentCons,\n\t\t\t\t\t
      const char *progname)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/bin/scripts/vacuuming.c:537,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:540,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:548,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:554,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/vacuuming.c:558,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:559,1
    - Dst: splitTableColumnsSpec
      Src: /src/postgres/src/bin/scripts/vacuuming.c:570,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/vacuuming.c:570,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/vacuuming.c:573,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:574,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/vacuuming.c:578,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:580,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:582,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/scripts/vacuuming.c:584,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:589,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:591,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:594,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:596,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuuming.c:602,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:612,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:617,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:619,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:625,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuuming.c:627,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:636,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:639,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:662,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuuming.c:664,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuuming.c:665,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuuming.c:666,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:668,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuuming.c:670,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuuming.c:671,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:683,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:694,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:705,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:708,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:722,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:731,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:747,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:765,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:777,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:784,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/scripts/vacuuming.c:785,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/vacuuming.c:786,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:787,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/vacuuming.c:788,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/vacuuming.c:788,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:794,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/vacuuming.c:795,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:797,1
    - Dst: fmtQualifiedIdEnc
      Src: /src/postgres/src/bin/scripts/vacuuming.c:798,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuuming.c:798,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuuming.c:799,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/vacuuming.c:800,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/scripts/vacuuming.c:802,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:803,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuuming.c:803,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/vacuuming.c:805,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:806,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:808,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/vacuuming.c:809,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 77
    argCount: 3
    argNames:
    - conn
    - vacopts
    - objects
    argTypes:
    - PGconn*
    - vacuumingOptions*
    - SimpleStringList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 529
    functionDepth: 2
    functionLinenumber: 529
    functionLinenumberEnd: 812
    functionName: retrieve_objects
    functionSourceFile: /src/postgres/src/bin/scripts/vacuuming.c
    functionUses: 1
    functionsReached:
    - CppAsString2
    - PQclear
    - PQclientEncoding
    - PQgetvalue
    - splitTableColumnsSpec
    - appendPQExpBufferStr
    - executeQuery
    - simple_string_list_append
    - PQntuples
    - palloc0_object
    - resetPQExpBuffer
    - pg_free
    - termPQExpBuffer
    - PQgetisnull
    - fmtQualifiedIdEnc
    - initPQExpBuffer
    - executeCommand
    - appendStringLiteralConn
    - appendPQExpBuffer
    linkageType: ''
    returnType: SimpleStringList
    signature: "SimpleStringList *\nretrieve_objects(PGconn *conn, vacuumingOptions
      *vacopts,\n\t\t\t\t SimpleStringList *objects)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: simple_string_list_destroy
      Src: /src/postgres/src/bin/scripts/vacuuming.c:825,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/scripts/vacuuming.c:826,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - SimpleStringList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 828
    functionName: free_retrieved_objects
    functionSourceFile: /src/postgres/src/bin/scripts/vacuuming.c
    functionUses: 3
    functionsReached:
    - pg_free
    - simple_string_list_destroy
    linkageType: ''
    returnType: void
    signature: void free_retrieved_objects(SimpleStringList *list)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuuming.c:841,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:846,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:851,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:859,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:860,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:865,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:870,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:871,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/vacuuming.c:876,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:881,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:886,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:894,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:895,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:901,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:902,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:903,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:909,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:910,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:911,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:917,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:918,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:924,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:925,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:931,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:932,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:938,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:939,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:945,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:946,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:951,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:956,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:961,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:966,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:972,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:973,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuuming.c:979,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:980,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/vacuuming.c:985,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:990,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:992,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:994,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuuming.c:996,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1000,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 110
    argCount: 4
    argNames:
    - conn
    - sql
    - vacopts
    - table
    argTypes:
    - PGconn*
    - PQExpBuffer
    - vacuumingOptions*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 837
    functionDepth: 1
    functionLinenumber: 837
    functionLinenumberEnd: 1001
    functionName: prepare_vacuum_command
    functionSourceFile: /src/postgres/src/bin/scripts/vacuuming.c
    functionUses: 1
    functionsReached:
    - Assert
    - appendPQExpBufferStr
    - resetPQExpBuffer
    - PQserverVersion
    - appendPQExpBufferChar
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void prepare_vacuum_command(PGconn *conn, PQExpBuffer sql,\n\t\t\t\t\t
      \  vacuumingOptions *vacopts, const char *table)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1018,1
    - Dst: ParallelSlotSetIdle
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1021,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1023,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1029,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1030,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1030,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1034,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1035,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1035,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - free_slot
    - vacopts
    - sql
    - table
    argTypes:
    - ParallelSlot*
    - vacuumingOptions*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1038
    functionName: run_vacuum_command
    functionSourceFile: /src/postgres/src/bin/scripts/vacuuming.c
    functionUses: 1
    functionsReached:
    - ParallelSlotSetIdle
    - PQsendQuery
    - PQdb
    - printf
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: "void run_vacuum_command(ParallelSlot *free_slot, vacuumingOptions
      *vacopts,\n\t\t\t\t   const char *sql, const char *table)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: escape_single_quotes_ascii
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1047,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuuming.c:1050,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1052
    functionName: escape_quotes
    functionSourceFile: /src/postgres/src/bin/scripts/vacuuming.c
    functionUses: 5
    functionsReached:
    - escape_single_quotes_ascii
    - pg_fatal
    linkageType: ''
    returnType: char
    signature: 'char *

      escape_quotes(const char *src)'
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/scripts/pg_isready.c:68,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/scripts/pg_isready.c:69,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/scripts/pg_isready.c:70,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/scripts/pg_isready.c:70,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/scripts/pg_isready.c:71,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/scripts/pg_isready.c:73,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/pg_isready.c:78,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/pg_isready.c:81,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/pg_isready.c:84,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/pg_isready.c:90,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/pg_isready.c:93,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/pg_isready.c:97,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/pg_isready.c:103,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/pg_isready.c:109,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/pg_isready.c:111,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/pg_isready.c:117,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/scripts/pg_isready.c:139,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/scripts/pg_isready.c:140,1
    - Dst: strchr
      Src: /src/postgres/src/bin/scripts/pg_isready.c:141,1
    - Dst: PQconninfoParse
      Src: /src/postgres/src/bin/scripts/pg_isready.c:143,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/pg_isready.c:146,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/pg_isready.c:147,1
    - Dst: PQconndefaults
      Src: /src/postgres/src/bin/scripts/pg_isready.c:151,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/pg_isready.c:154,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/pg_isready.c:155,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/scripts/pg_isready.c:160,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/scripts/pg_isready.c:171,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/scripts/pg_isready.c:178,1
    - Dst: PQpingParams
      Src: /src/postgres/src/bin/scripts/pg_isready.c:192,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:196,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:203,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:203,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:206,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:206,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:209,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:209,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:212,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:212,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:215,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:215,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/pg_isready.c:219,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 109
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 220
    functionName: main
    functionSourceFile: /src/postgres/src/bin/scripts/pg_isready.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - PQpingParams
    - get_progname
    - strcmp
    - strchr
    - PQconndefaults
    - _
    - pg_logging_init
    - getopt_long
    - PQconninfoParse
    - strncmp
    - printf
    - pg_log_error
    - exit
    - handle_help_version_opts
    - pg_log_error_hint
    - set_pglocale_pgservice
    - pg_strdup
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:225,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:225,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:226,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:226,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:227,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:227,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:229,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:229,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:230,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:230,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:231,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:231,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:232,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:232,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:233,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:233,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:235,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:235,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:236,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:236,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:237,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:237,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:238,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:238,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:239,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:239,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:240,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:240,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/pg_isready.c:241,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/pg_isready.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 242
    functionName: help
    functionSourceFile: /src/postgres/src/bin/scripts/pg_isready.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/scripts/createdb.c:80,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/scripts/createdb.c:81,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/scripts/createdb.c:82,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/scripts/createdb.c:82,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/scripts/createdb.c:84,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/scripts/createdb.c:86,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:91,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:97,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:100,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:103,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:106,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:109,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:112,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:118,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:127,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:130,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:133,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:136,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:139,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:142,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/createdb.c:145,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/createdb.c:149,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/createdb.c:150,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/createdb.c:166,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/createdb.c:168,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/createdb.c:169,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/bin/scripts/createdb.c:174,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/createdb.c:175,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/createdb.c:180,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/createdb.c:181,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/createdb.c:182,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/createdb.c:183,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/scripts/createdb.c:185,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/scripts/createdb.c:189,1
    - Dst: connectMaintenanceDatabase
      Src: /src/postgres/src/bin/scripts/createdb.c:199,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/scripts/createdb.c:201,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/createdb.c:201,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createdb.c:203,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createdb.c:205,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createdb.c:206,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createdb.c:209,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createdb.c:209,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createdb.c:211,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createdb.c:211,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createdb.c:214,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/createdb.c:215,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/createdb.c:218,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/scripts/createdb.c:218,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/createdb.c:223,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/createdb.c:224,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 124
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 225
    functionName: main
    functionSourceFile: /src/postgres/src/bin/scripts/createdb.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - strcmp
    - get_user_name_or_exit
    - PQclientEncoding
    - connectMaintenanceDatabase
    - pg_log_error
    - fmtId
    - appendPQExpBufferStr
    - set_pglocale_pgservice
    - appendStringLiteralConn
    - getenv
    - setFmtEncoding
    - getopt_long
    - pg_char_to_encoding
    - exit
    - pg_log_error_hint
    - pg_strdup
    - pg_logging_init
    - pg_fatal
    - initPQExpBuffer
    - handle_help_version_opts
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:299,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:299,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:300,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:300,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:301,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:301,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:302,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:302,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:303,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:303,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:304,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:304,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:305,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:305,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:306,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:306,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:307,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:307,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:308,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:308,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:309,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:309,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:310,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:310,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:311,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:311,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:312,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:312,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:314,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:314,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:315,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:315,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:316,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:316,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:317,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:317,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:318,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:318,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:319,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:319,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:320,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:320,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:321,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:321,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:322,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:322,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:323,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:323,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:324,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:324,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:325,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:325,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:326,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:326,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:327,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:327,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/createdb.c:328,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/createdb.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 329
    functionName: help
    functionSourceFile: /src/postgres/src/bin/scripts/createdb.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/scripts/dropdb.c:62,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/scripts/dropdb.c:63,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/scripts/dropdb.c:64,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/scripts/dropdb.c:64,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/scripts/dropdb.c:66,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/scripts/dropdb.c:68,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/dropdb.c:79,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/dropdb.c:85,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/dropdb.c:88,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/dropdb.c:100,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/dropdb.c:104,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropdb.c:105,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/dropdb.c:112,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/dropdb.c:113,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropdb.c:114,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/dropdb.c:119,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/dropdb.c:121,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropdb.c:122,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:127,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:127,1
    - Dst: yesno_prompt
      Src: /src/postgres/src/bin/scripts/dropdb.c:128,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropdb.c:129,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/scripts/dropdb.c:133,1
    - Dst: connectMaintenanceDatabase
      Src: /src/postgres/src/bin/scripts/dropdb.c:143,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/dropdb.c:145,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/dropdb.c:146,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/bin/scripts/dropdb.c:148,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/dropdb.c:148,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:152,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/scripts/dropdb.c:153,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/scripts/dropdb.c:154,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/dropdb.c:156,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/dropdb.c:156,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/dropdb.c:157,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropdb.c:158,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/dropdb.c:161,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/dropdb.c:162,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/dropdb.c:163,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 81
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 164
    functionName: main
    functionSourceFile: /src/postgres/src/bin/scripts/dropdb.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - PQclear
    - strcmp
    - PQclientEncoding
    - connectMaintenanceDatabase
    - printf
    - pg_log_error
    - set_pglocale_pgservice
    - _
    - fmtIdEnc
    - PQfinish
    - PQresultStatus
    - getopt_long
    - exit
    - PQerrorMessage
    - pg_log_error_hint
    - pg_strdup
    - yesno_prompt
    - PQexec
    - pg_logging_init
    - initPQExpBuffer
    - handle_help_version_opts
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:170,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:170,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:171,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:171,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:172,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:172,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:173,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:173,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:174,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:174,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:175,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:175,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:176,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:176,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:177,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:177,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:178,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:178,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:179,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:179,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:180,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:180,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:181,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:181,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:182,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:182,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:183,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:183,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:184,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:184,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:185,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:185,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:186,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:186,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:187,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:187,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/dropdb.c:188,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/dropdb.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 189
    functionName: help
    functionSourceFile: /src/postgres/src/bin/scripts/dropdb.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:79,1
    - Dst: memset
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:86,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:89,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:90,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:91,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:91,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:93,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:95,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:105,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:117,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:120,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:122,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:126,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:130,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:133,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:136,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:138,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:145,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:149,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:169,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:181,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:183,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:186,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:188,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:206,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:216,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:217,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:234,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:236,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:237,1
    - Dst: check_objfilter
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:244,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:250,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:253,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:256,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:259,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:262,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:265,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:271,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:281,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:284,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:290,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:298,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:307,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:312,1
    - Dst: pg_log_info_detail
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:313,1
    - Dst: vacuuming_main
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:316,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:320,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 175
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 321
    functionName: main
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - pg_log_error
    - set_pglocale_pgservice
    - pg_log_info_detail
    - check_objfilter
    - simple_string_list_append
    - option_parse_int
    - getopt_long
    - vacuuming_main
    - memset
    - pg_log_info
    - exit
    - pg_log_error_hint
    - pg_strdup
    - pg_logging_init
    - escape_quotes
    - pg_fatal
    - handle_help_version_opts
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:331,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:335,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:339,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:343,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 9
    argCount: 1
    argNames:
    - objfilter
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 344
    functionName: check_objfilter
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void check_objfilter(uint32 objfilter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:350,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:350,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:351,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:351,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:352,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:352,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:353,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:353,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:354,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:354,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:355,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:355,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:356,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:356,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:357,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:357,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:358,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:358,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:359,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:359,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:360,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:360,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:361,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:361,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:362,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:362,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:363,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:363,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:364,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:364,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:365,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:365,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:366,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:366,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:367,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:367,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:368,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:368,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:369,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:369,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:370,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:370,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:371,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:371,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:372,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:372,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:373,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:373,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:374,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:374,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:375,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:375,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:376,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:376,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:377,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:377,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:378,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:378,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:379,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:379,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:380,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:380,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:381,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:381,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:383,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:383,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:384,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:384,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:385,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:385,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:386,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:386,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:387,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:387,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:388,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:388,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:389,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:389,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:390,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:390,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:391,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:391,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:392,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:392,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:393,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 394
    functionName: help
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: copyfile
      Src: /src/postgres/src/bin/pg_upgrade/file.c:39,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:40,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:46,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:47,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:50,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:52,1
    - Dst: ioctl
      Src: /src/postgres/src/bin/pg_upgrade/file.c:55,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:59,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:61,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_upgrade/file.c:62,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:65,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:66,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - src
    - dst
    - schemaName
    - relName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 68
    functionName: cloneFile
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - copyfile
    - unlink
    - ioctl
    - pg_fatal
    - close
    - open
    - strerror
    linkageType: ''
    returnType: void
    signature: "void cloneFile(const char *src, const char *dst,\n\t\t  const char
      *schemaName, const char *relName)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:86,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:87,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:90,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:92,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/file.c:98,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_upgrade/file.c:103,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:106,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_upgrade/file.c:113,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:118,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/file.c:123,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:124,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:125,1
    - Dst: CopyFile
      Src: /src/postgres/src/bin/pg_upgrade/file.c:129,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/bin/pg_upgrade/file.c:131,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_upgrade/file.c:131,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:132,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 4
    argNames:
    - src
    - dst
    - schemaName
    - relName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 137
    functionName: copyFile
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - pg_free
    - write
    - pg_fatal
    - GetLastError
    - _dosmaperr
    - close
    - open
    - CopyFile
    - pg_malloc
    - read
    linkageType: ''
    returnType: void
    signature: "void copyFile(const char *src, const char *dst,\n\t\t const char *schemaName,
      const char *relName)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:155,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:156,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:159,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:161,1
    - Dst: copy_file_range
      Src: /src/postgres/src/bin/pg_upgrade/file.c:166,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:168,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:173,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - src
    - dst
    - schemaName
    - relName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 176
    functionName: copyFileByRange
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - open
    - copy_file_range
    - close
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void copyFileByRange(const char *src, const char *dst,\n\t\t\t\tconst
      char *schemaName, const char *relName)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: link
      Src: /src/postgres/src/bin/pg_upgrade/file.c:189,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - src
    - dst
    - schemaName
    - relName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 192
    functionName: linkFile
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - link
    linkageType: ''
    returnType: void
    signature: "void linkFile(const char *src, const char *dst,\n\t\t const char *schemaName,
      const char *relName)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:201,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:202,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:203,1
    - Dst: copyfile
      Src: /src/postgres/src/bin/pg_upgrade/file.c:206,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:207,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:213,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:214,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:217,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:219,1
    - Dst: ioctl
      Src: /src/postgres/src/bin/pg_upgrade/file.c:222,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:223,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:225,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:226,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:229,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:232,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 233
    functionName: check_file_clone
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - copyfile
    - unlink
    - ioctl
    - pg_fatal
    - close
    - open
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_file_clone(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:241,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:242,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:243,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:250,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:251,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:254,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:256,1
    - Dst: copy_file_range
      Src: /src/postgres/src/bin/pg_upgrade/file.c:259,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:260,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:262,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:263,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:266,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:269,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 270
    functionName: check_copy_file_range
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - unlink
    - pg_fatal
    - close
    - open
    - copy_file_range
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_copy_file_range(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:278,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:279,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:280,1
    - Dst: link
      Src: /src/postgres/src/bin/pg_upgrade/file.c:282,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:285,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:288,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:291,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:294,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - transfer_mode
    argTypes:
    - transferMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 295
    functionName: check_hard_link
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - link
    - pg_fatal
    - unlink
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_hard_link(transferMode transfer_mode)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:76,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:77,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:78,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:82,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:88,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:94,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:102,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:108,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:113,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:119,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:122,1
    - Dst: _exit
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:125,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:125,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:128,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:134,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:135,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:136,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:137,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:138,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:139,1
    - Dst: _beginthreadex
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:141,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:144,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 3
    argNames:
    - log_file
    - opt_log_file
    - fmt
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 149
    functionName: parallel_exec_prog
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/parallel.c
    functionUses: 0
    functionsReached:
    - va_end
    - fork
    - reap_child
    - va_start
    - exec_prog
    - pg_malloc_array
    - _beginthreadex
    - pg_fatal
    - pg_malloc0_object
    - fflush
    - pg_free
    - vsnprintf
    - _exit
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void parallel_exec_prog(const char *log_file, const char *opt_log_file,\n\t\t\t\t
      \  const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - exec_thread_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 162
    functionName: win32_exec_prog
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/parallel.c
    functionUses: 0
    functionsReached:
    - exec_prog
    linkageType: ''
    returnType: DWORD
    signature: DWORD win32_exec_prog(exec_thread_arg *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: transfer_all_new_dbs
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:185,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:191,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:197,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:205,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:211,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:216,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:222,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:225,1
    - Dst: transfer_all_new_dbs
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:228,1
    - Dst: _exit
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:232,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:236,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:244,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:245,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:246,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:247,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:248,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:249,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:250,1
    - Dst: _beginthreadex
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:252,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:255,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 6
    argNames:
    - old_db_arr
    - new_db_arr
    - old_pgdata
    - new_pgdata
    - old_tablespace
    - new_tablespace
    argTypes:
    - DbInfoArr*
    - DbInfoArr*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 260
    functionName: parallel_transfer_all_new_dbs
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/parallel.c
    functionUses: 0
    functionsReached:
    - fork
    - reap_child
    - pg_malloc_array
    - _beginthreadex
    - pg_fatal
    - fflush
    - pg_free
    - pg_malloc0_object
    - transfer_all_new_dbs
    - _exit
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void parallel_transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr
      *new_db_arr,\n\t\t\t\t\t\t\t  char *old_pgdata, char *new_pgdata,\n\t\t\t\t\t\t\t
      \ char *old_tablespace, char *new_tablespace)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: transfer_all_new_dbs
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - transfer_thread_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 273
    functionName: win32_transfer_all_new_dbs
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/parallel.c
    functionUses: 0
    functionsReached:
    - transfer_all_new_dbs
    linkageType: ''
    returnType: DWORD
    signature: DWORD win32_transfer_all_new_dbs(transfer_thread_arg *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:295,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:297,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:301,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:304,1
    - Dst: GetExitCodeThread
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:314,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:316,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:319,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - wait_for_child
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 344
    functionName: reap_child
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/parallel.c
    functionUses: 2
    functionsReached:
    - CloseHandle
    - WaitForMultipleObjects
    - pg_fatal
    - GetExitCodeThread
    - waitpid
    linkageType: ''
    returnType: bool
    signature: bool reap_child(bool wait_for_child)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_tablespace_paths
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:21,1
    - Dst: set_tablespace_directory_suffix
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:23,1
    - Dst: set_tablespace_directory_suffix
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:24,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:27,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:35,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:36,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 40
    functionName: init_tablespaces
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/tablespace.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pg_fatal
    - set_tablespace_directory_suffix
    - get_tablespace_paths
    linkageType: ''
    returnType: void
    signature: void init_tablespaces(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:52,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:58,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:64,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:66,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:67,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:69,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:72,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:74,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:82,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:87,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:98,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:98,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:100,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:105,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:106,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:118,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:121,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:125,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:129,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:130,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:135,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 138
    functionName: get_tablespace_paths
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/tablespace.c
    functionUses: 1
    functionsReached:
    - report_status
    - connectToServer
    - PQclear
    - is_absolute_path
    - S_ISDIR
    - psprintf
    - stat
    - pg_malloc_array
    - PQfinish
    - pg_strdup
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - executeQueryOrDie
    - snprintf
    linkageType: ''
    returnType: void
    signature: void get_tablespace_paths(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 150
    functionName: set_tablespace_directory_suffix
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/tablespace.c
    functionUses: 1
    functionsReached:
    - psprintf
    linkageType: ''
    returnType: void
    signature: void set_tablespace_directory_suffix(ClusterInfo *cluster)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_upgrade/task.c:119,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/task.c:121,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/task.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 127
    functionName: upgrade_task_create
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - pg_malloc0_object
    - upgrade_task_add_step
    - createPQExpBuffer
    linkageType: ''
    returnType: UpgradeTask
    signature: 'UpgradeTask *

      upgrade_task_create(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/task.c:135,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/task.c:136,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/task.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - task
    argTypes:
    - UpgradeTask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: upgrade_task_free
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - pg_free
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void upgrade_task_free(UpgradeTask *task)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_upgrade/task.c:157,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/task.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - task
    - query
    - process_cb
    - free_result
    - arg
    argTypes:
    - UpgradeTask*
    - char*
    - UpgradeTaskProcessCB
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 166
    functionName: upgrade_task_add_step
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 1
    functionsReached:
    - pg_realloc_array
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void upgrade_task_add_step(UpgradeTask *task, const char *query,\n\t\t\t\t\t
      \ UpgradeTaskProcessCB process_cb, bool free_result,\n\t\t\t\t\t  void *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/task.c:180,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/task.c:181,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:182,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/task.c:183,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:184,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/task.c:185,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/task.c:188,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:189,1
    - Dst: protocol_negotiation_supported
      Src: /src/postgres/src/bin/pg_upgrade/task.c:191,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/task.c:192,1
    - Dst: PQconnectStart
      Src: /src/postgres/src/bin/pg_upgrade/task.c:194,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:197,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/task.c:199,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - cluster
    - slot
    argTypes:
    - ClusterInfo*
    - UpgradeTaskSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 200
    functionName: start_conn
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - appendConnStrVal
    - appendPQExpBufferStr
    - protocol_negotiation_supported
    - PQconnectStart
    - pg_fatal
    - initPQExpBuffer
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void start_conn(const ClusterInfo *cluster, UpgradeTaskSlot *slot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_upgrade/task.c:213,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_upgrade/task.c:215,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_upgrade/task.c:216,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_upgrade/task.c:217,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:218,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/task.c:218,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/task.c:229,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - cluster
    - slot
    - task
    argTypes:
    - ClusterInfo*
    - UpgradeTaskSlot*
    - UpgradeTask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 230
    functionName: process_query_result
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - PQclear
    - pg_fatal
    - PQresultStatus
    - PQgetResult
    - PQerrorMessage
    - PQstatus
    linkageType: ''
    returnType: void
    signature: "void process_query_result(const ClusterInfo *cluster, UpgradeTaskSlot
      *slot,\n\t\t\t\t\t const UpgradeTask *task)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: start_conn
      Src: /src/postgres/src/bin/pg_upgrade/task.c:260,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/bin/pg_upgrade/task.c:267,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:269,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/task.c:269,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pg_upgrade/task.c:283,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:284,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/task.c:284,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pg_upgrade/task.c:294,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:295,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/task.c:295,1
    - Dst: PQisBusy
      Src: /src/postgres/src/bin/pg_upgrade/task.c:304,1
    - Dst: process_query_result
      Src: /src/postgres/src/bin/pg_upgrade/task.c:307,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/task.c:318,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_upgrade/task.c:319,1
    - Dst: process_slot
      Src: /src/postgres/src/bin/pg_upgrade/task.c:322,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 3
    argNames:
    - cluster
    - slot
    - task
    argTypes:
    - ClusterInfo*
    - UpgradeTaskSlot*
    - UpgradeTask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 326
    functionName: process_slot
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 1
    functionsReached:
    - PQconsumeInput
    - start_conn
    - PQsendQuery
    - pg_fatal
    - process_query_result
    - PQfinish
    - PQconnectPoll
    - process_slot
    - memset
    - PQisBusy
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: void process_slot(const ClusterInfo *cluster, UpgradeTaskSlot *slot,
      const UpgradeTask *task)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: select
      Src: /src/postgres/src/bin/pg_upgrade/task.c:347,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_upgrade/task.c:353,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 3
    argNames:
    - maxFd
    - input
    - output
    argTypes:
    - int
    - fd_set*
    - fd_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 358
    functionName: select_loop
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - WSAGetLastError
    - select
    linkageType: ''
    returnType: int
    signature: int select_loop(int maxFd, fd_set *input, fd_set *output)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pg_upgrade/task.c:371,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pg_upgrade/task.c:372,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pg_upgrade/task.c:395,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:397,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_upgrade/task.c:398,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_upgrade/task.c:399,1
    - Dst: select_loop
      Src: /src/postgres/src/bin/pg_upgrade/task.c:405,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:406,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/bin/pg_upgrade/task.c:412,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/bin/pg_upgrade/task.c:413,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - slots
    - numslots
    argTypes:
    - UpgradeTaskSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 414
    functionName: wait_on_slots
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - FD_ISSET
    - pg_fatal
    - FD_SET
    - PQsocket
    - Max
    - select_loop
    - FD_ZERO
    linkageType: ''
    returnType: void
    signature: void wait_on_slots(UpgradeTaskSlot *slots, int numslots)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/bin/pg_upgrade/task.c:423,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_upgrade/task.c:424,1
    - Dst: process_slot
      Src: /src/postgres/src/bin/pg_upgrade/task.c:438,1
    - Dst: wait_on_slots
      Src: /src/postgres/src/bin/pg_upgrade/task.c:440,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/task.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - task
    - cluster
    argTypes:
    - UpgradeTask*
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 420
    functionDepth: 3
    functionLinenumber: 420
    functionLinenumberEnd: 444
    functionName: upgrade_task_run
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - pg_malloc0_array
    - wait_on_slots
    - process_slot
    - Max
    - pg_free
    linkageType: ''
    returnType: void
    signature: void upgrade_task_run(const UpgradeTask *task, const ClusterInfo *cluster)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:43,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:44,1
    - Dst: popen
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:46,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:47,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:48,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:50,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:52,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:53,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:55,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 59
    functionName: get_bin_version
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 0
    functionsReached:
    - wait_result_to_str
    - sscanf
    - pclose
    - pg_fatal
    - fflush
    - fgets
    - popen
    - snprintf
    linkageType: ''
    returnType: void
    signature: void get_bin_version(ClusterInfo *cluster)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:94,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:97,1
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:100,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:101,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:102,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:104,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:105,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:108,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:110,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:123,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:125,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:126,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:130,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:145,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:146,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:152,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:156,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:157,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:159,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:162,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:163,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:170,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:174,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:177,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:178,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:184,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:185,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:187,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:189,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:194,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:209,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:210,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:211,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:212,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 5
    argNames:
    - log_filename
    - opt_log_file
    - report_error
    - exit_on_error
    - fmt
    argTypes:
    - char*
    - char*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 216
    functionName: exec_prog
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 2
    functionsReached:
    - va_end
    - report_status
    - va_start
    - system
    - fopen
    - pg_fatal
    - fclose
    - fflush
    - GetCurrentThreadId
    - vsnprintf
    - pg_log
    - pg_usleep
    - fprintf
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool exec_prog(const char *log_filename, const char *opt_log_file,\n\t\t
      \ bool report_error, bool exit_on_error, const char *fmt, ...)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:230,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:232,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:236,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:241,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - datadir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 243
    functionName: pid_lock_file_exists
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 0
    functionsReached:
    - open
    - pg_fatal
    - close
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool pid_lock_file_exists(const char *datadir)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: access
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:258,1
    - Dst: win32_check_directory_write_permissions
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:260,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:262,1
    - Dst: check_bin_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:264,1
    - Dst: check_data_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:265,1
    - Dst: check_bin_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:266,1
    - Dst: check_data_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 268
    functionName: verify_directories
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 0
    functionsReached:
    - access
    - check_bin_dir
    - pg_fatal
    - check_data_dir
    - win32_check_directory_write_permissions
    linkageType: ''
    returnType: void
    signature: void verify_directories(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:288,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:290,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 293
    functionName: win32_check_directory_write_permissions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 1
    functionsReached:
    - open
    - close
    - unlink
    linkageType: ''
    returnType: int
    signature: int win32_check_directory_write_permissions(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:309,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:314,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:315,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:317,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pg_data
    - subdir
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 320
    functionName: check_single_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 0
    functionsReached:
    - report_status
    - stat
    - S_ISDIR
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_single_dir(const char *pg_data, const char *subdir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_pg_version
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:338,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:340,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:341,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:342,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:343,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:344,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:345,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:346,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:347,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 349
    functionName: check_data_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 1
    functionsReached:
    - get_pg_version
    - check_single_dir
    linkageType: ''
    returnType: void
    signature: void check_data_dir(ClusterInfo *cluster)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:370,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:371,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:373,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:374,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:377,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:378,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:379,1
    - Dst: get_bin_version
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:386,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:388,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:397,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:398,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:399,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:400,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:401,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:402,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - cluster
    - check_versions
    argTypes:
    - ClusterInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 364
    functionDepth: 2
    functionLinenumber: 364
    functionLinenumberEnd: 404
    functionName: check_bin_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 1
    functionsReached:
    - report_status
    - stat
    - check_exec
    - get_bin_version
    - S_ISDIR
    linkageType: ''
    returnType: void
    signature: void check_bin_dir(ClusterInfo *cluster, bool check_versions)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:414,1
    - Dst: validate_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:416,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:417,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:419,1
    - Dst: pipe_read_line
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:421,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:422,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:427,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:429,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:431,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:432,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - dir
    - program
    - check_version
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 437
    functionName: check_exec
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pg_strip_crlf
    - validate_exec
    - pg_fatal
    - pipe_read_line
    - pg_free
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_exec(const char *dir, const char *program, bool check_version)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/function.c:33,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/function.c:34,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/function.c:35,1
    - Dst: pg_cmp_size
      Src: /src/postgres/src/bin/pg_upgrade/function.c:38,1
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/bin/pg_upgrade/function.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 43
    functionName: library_name_compare
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/function.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    - pg_cmp_size
    - strlen
    - strcmp
    linkageType: ''
    returnType: int
    signature: int library_name_compare(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/function.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: process_loadable_libraries
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/function.c
    functionUses: 0
    functionsReached:
    - PQntuples
    linkageType: ''
    returnType: void
    signature: void process_loadable_libraries(DbInfo *dbinfo, PGresult *res, void
      *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/function.c:82,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/function.c:86,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/function.c:89,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/function.c:97,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/function.c:100,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/function.c:101,1
    - Dst: count_old_cluster_logical_slots
      Src: /src/postgres/src/bin/pg_upgrade/function.c:107,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/function.c:108,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/function.c:118,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/function.c:121,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_upgrade/function.c:128,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/function.c:131,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/function.c:136,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/function.c:149,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/function.c:156,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_upgrade/function.c:157,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 76
    functionDepth: 4
    functionLinenumber: 76
    functionLinenumberEnd: 160
    functionName: get_loadable_libraries
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/function.c
    functionUses: 0
    functionsReached:
    - count_old_cluster_logical_slots
    - PQclear
    - pfree
    - psprintf
    - upgrade_task_free
    - pg_malloc_array
    - PQgetvalue
    - upgrade_task_add_step
    - PQntuples
    - strncmp
    - upgrade_task_run
    - pg_free
    - upgrade_task_create
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void get_loadable_libraries(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/function.c:173,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/function.c:179,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/function.c:181,1
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_upgrade/function.c:190,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/function.c:196,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/function.c:201,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_upgrade/function.c:203,1
    - Dst: PQescapeStringConn
      Src: /src/postgres/src/bin/pg_upgrade/function.c:204,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/function.c:204,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pg_upgrade/function.c:205,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_upgrade/function.c:207,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_upgrade/function.c:209,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/function.c:213,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/function.c:214,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/function.c:215,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/function.c:215,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/function.c:217,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/function.c:222,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/function.c:226,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/function.c:226,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/function.c:230,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/function.c:234,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/function.c:235,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/function.c:236,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/function.c:243,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 244
    functionName: check_loadable_libraries
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/function.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - prep_status
    - pg_log
    - fprintf
    - qsort
    - _
    - PQescapeStringConn
    - PQfinish
    - PQresultStatus
    - fopen_priv
    - check_ok
    - fclose
    - strlen
    - PQerrorMessage
    - strcat
    - connectToServer
    - PQexec
    - pg_fatal
    - strcpy
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_loadable_libraries(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:29,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 40
    functionName: AllocSlruSegState
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    - pstrdup
    linkageType: ''
    returnType: SlruSegState
    signature: 'SlruSegState *

      AllocSlruSegState(const char *dir)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:48,1
    - Dst: INT64CONST
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:48,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:49,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:53,1
    - Dst: INT64CONST
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:53,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - state
    - segno
    argTypes:
    - SlruSegState*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 56
    functionName: SlruFileName
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.c
    functionUses: 0
    functionsReached:
    - Assert
    - psprintf
    - INT64CONST
    linkageType: ''
    returnType: char
    signature: 'char *

      SlruFileName(SlruSegState *state, int64 segno)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSlruSegState
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dir
    - long_segment_names
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 70
    functionName: AllocSlruRead
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.c
    functionUses: 0
    functionsReached:
    - AllocSlruSegState
    linkageType: ''
    returnType: SlruSegState
    signature: 'SlruSegState *

      AllocSlruRead(const char *dir, bool long_segment_names)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:91,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:102,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:105,1
    - Dst: SlruFileName
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:111,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:112,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:113,1
    - Dst: pg_pread
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:123,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:131,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:136,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:138,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 2
    argNames:
    - state
    - pageno
    argTypes:
    - SlruSegState*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 147
    functionName: SlruReadSwitchPageSlow
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.c
    functionUses: 0
    functionsReached:
    - SlruFileName
    - pg_free
    - Assert
    - pg_log
    - pg_fatal
    - memset
    - close
    - open
    - pg_pread
    linkageType: ''
    returnType: char
    signature: 'char *

      SlruReadSwitchPageSlow(SlruSegState *state, uint64 pageno)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:155,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:158,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - SlruSegState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 160
    functionName: FreeSlruRead
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.c
    functionUses: 0
    functionsReached:
    - Assert
    - close
    - pg_free
    linkageType: ''
    returnType: void
    signature: void FreeSlruRead(SlruSegState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSlruSegState
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dir
    - long_segment_names
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 174
    functionName: AllocSlruWrite
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.c
    functionUses: 0
    functionsReached:
    - AllocSlruSegState
    linkageType: ''
    returnType: SlruSegState
    signature: 'SlruSegState *

      AllocSlruWrite(const char *dir, bool long_segment_names)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:192,1
    - Dst: SlruFlush
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:200,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:201,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:207,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:210,1
    - Dst: SlruFileName
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:217,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:218,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:221,1
    - Dst: pg_pwrite_zeros
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:228,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:229,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - state
    - pageno
    argTypes:
    - SlruSegState*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 236
    functionName: SlruWriteSwitchPageSlow
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.c
    functionUses: 0
    functionsReached:
    - SlruFileName
    - SlruFlush
    - open
    - Assert
    - pg_pwrite_zeros
    - pg_fatal
    - memset
    - close
    - pg_free
    linkageType: ''
    returnType: char
    signature: 'char *

      SlruWriteSwitchPageSlow(SlruSegState *state, uint64 pageno)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_pwritev_with_retry
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:252,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - SlruSegState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 254
    functionName: SlruFlush
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.c
    functionUses: 1
    functionsReached:
    - pg_pwritev_with_retry
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void SlruFlush(SlruSegState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:262,1
    - Dst: SlruFlush
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:264,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:267,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.c:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - SlruSegState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 269
    functionName: FreeSlruWrite
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.c
    functionUses: 0
    functionsReached:
    - Assert
    - SlruFlush
    - close
    - pg_free
    linkageType: ''
    returnType: void
    signature: void FreeSlruWrite(SlruSegState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlruReadSwitchPageSlow
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.h:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - pageno
    argTypes:
    - SlruSegState*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: SlruReadSwitchPage
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.h
    functionUses: 0
    functionsReached:
    - SlruReadSwitchPageSlow
    linkageType: ''
    returnType: char
    signature: 'char *

      SlruReadSwitchPage(SlruSegState *state, uint64 pageno)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlruWriteSwitchPageSlow
      Src: /src/postgres/src/bin/pg_upgrade/slru_io.h:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - pageno
    argTypes:
    - SlruSegState*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: SlruWriteSwitchPage
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/slru_io.h
    functionUses: 0
    functionsReached:
    - SlruWriteSwitchPageSlow
    linkageType: ''
    returnType: char
    signature: 'char *

      SlruWriteSwitchPage(SlruSegState *state, uint64 pageno)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_upgrade/util.c:36,1
    - Dst: pg_log_v
      Src: /src/postgres/src/bin/pg_upgrade/util.c:37,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/util.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type
    - fmt
    argTypes:
    - eLogType
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: report_status
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 4
    functionsReached:
    - va_start
    - va_end
    - pg_log_v
    linkageType: ''
    returnType: void
    signature: void report_status(eLogType type, const char *fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:52,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/util.c:53,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/util.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 57
    functionName: end_progress_output
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 0
    functionsReached:
    - pg_log
    - printf
    linkageType: ''
    returnType: void
    signature: void end_progress_output(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/util.c:65,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_upgrade/util.c:75,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_upgrade/util.c:76,1
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/pg_upgrade/util.c:79,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/util.c:83,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_upgrade/util.c:93,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_upgrade/util.c:94,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/util.c:107,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 111
    functionName: cleanup_output_dirs
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_check_dir
    - fclose
    - rmtree
    - pg_log
    linkageType: ''
    returnType: void
    signature: void cleanup_output_dirs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_upgrade/util.c:134,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:135,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/util.c:136,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/util.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: prep_status
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 1
    functionsReached:
    - va_start
    - vsnprintf
    - pg_log
    - va_end
    linkageType: ''
    returnType: void
    signature: void prep_status(const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_upgrade/util.c:161,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:162,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/util.c:163,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/util.c:170,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/util.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 173
    functionName: prep_status_progress
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 0
    functionsReached:
    - va_start
    - vsnprintf
    - pg_log
    - va_end
    linkageType: ''
    returnType: void
    signature: void prep_status_progress(const char *fmt, ...)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/util.c:181,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/util.c:182,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/util.c:182,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:184,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/util.c:184,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:193,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:195,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:197,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/util.c:198,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:205,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/util.c:222,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:225,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/util.c:229,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:232,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:237,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:242,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:247,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:248,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/util.c:248,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/util.c:249,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/util.c:254,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 38
    argCount: 3
    argNames:
    - type
    - fmt
    - ap
    argTypes:
    - eLogType
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 255
    functionName: pg_log_v
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 1
    functionsReached:
    - _
    - Assert
    - strlen
    - fflush
    - printf
    - vsnprintf
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pg_log_v(eLogType type, const char *fmt, va_list ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_upgrade/util.c:263,1
    - Dst: pg_log_v
      Src: /src/postgres/src/bin/pg_upgrade/util.c:264,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/util.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type
    - fmt
    argTypes:
    - eLogType
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 266
    functionName: pg_log
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 7
    functionsReached:
    - va_start
    - va_end
    - pg_log_v
    linkageType: ''
    returnType: void
    signature: void pg_log(eLogType type, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_upgrade/util.c:274,1
    - Dst: pg_log_v
      Src: /src/postgres/src/bin/pg_upgrade/util.c:275,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/util.c:276,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/util.c:278,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/util.c:278,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/util.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 280
    functionName: pg_fatal
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 115
    functionsReached:
    - va_end
    - _
    - va_start
    - printf
    - exit
    - pg_log_v
    linkageType: ''
    returnType: void
    signature: void pg_fatal(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/util.c:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 288
    functionName: check_ok
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 7
    functionsReached:
    - report_status
    linkageType: ''
    returnType: void
    signature: void check_ok(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/util.c:301,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/util.c:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 316
    functionName: quote_identifier
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      quote_identifier(const char *s)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/postgres/src/bin/pg_upgrade/util.c:330,1
    - Dst: get_user_name
      Src: /src/postgres/src/bin/pg_upgrade/util.c:335,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/util.c:337,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/util.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - user_name_p
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 343
    functionName: get_user_info
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 0
    functionsReached:
    - geteuid
    - get_user_name
    - pg_strdup
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int get_user_info(char **user_name_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_upgrade/util.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 355
    functionName: str2uint
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/util.c
    functionUses: 0
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int str2uint(const char *str)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/info.c:56,1
    - Dst: report_unmatched_relation
      Src: /src/postgres/src/bin/pg_upgrade/info.c:79,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:92,1
    - Dst: report_unmatched_relation
      Src: /src/postgres/src/bin/pg_upgrade/info.c:94,1
    - Dst: report_unmatched_relation
      Src: /src/postgres/src/bin/pg_upgrade/info.c:105,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:113,1
    - Dst: report_unmatched_relation
      Src: /src/postgres/src/bin/pg_upgrade/info.c:115,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:127,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:128,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:130,1
    - Dst: create_rel_filename_map
      Src: /src/postgres/src/bin/pg_upgrade/info.c:142,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/info.c:150,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 5
    argNames:
    - old_db
    - new_db
    - nmaps
    - old_pgdata
    - new_pgdata
    argTypes:
    - DbInfo*
    - DbInfo*
    - int*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 44
    functionDepth: 3
    functionLinenumber: 44
    functionLinenumberEnd: 155
    functionName: gen_db_file_maps
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pg_log
    - pg_malloc_array
    - create_rel_filename_map
    - pg_fatal
    - report_unmatched_relation
    linkageType: ''
    returnType: FileNameMap
    signature: "FileNameMap *\ngen_db_file_maps(DbInfo *old_db, DbInfo *new_db,\n\t\t\t\t
      int *nmaps,\n\t\t\t\t const char *old_pgdata, const char *new_pgdata)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:170,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 7
    argNames:
    - old_data
    - new_data
    - old_db
    - new_db
    - old_rel
    - new_rel
    - map
    argTypes:
    - char*
    - char*
    - DbInfo*
    - DbInfo*
    - RelInfo*
    - RelInfo*
    - FileNameMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 205
    functionName: create_rel_filename_map
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: "void create_rel_filename_map(const char *old_data, const char *new_data,\n\t\t\t\t\t\tconst
      DbInfo *old_db, const DbInfo *new_db,\n\t\t\t\t\t\tconst RelInfo *old_rel, const
      RelInfo *new_rel,\n\t\t\t\t\t\tFileNameMap *map)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:219,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:229,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:229,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:230,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/info.c:231,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:239,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:239,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:240,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/info.c:241,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:251,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:251,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:252,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/info.c:253,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:259,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:259,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:260,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/info.c:261,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:265,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:268,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 3
    argNames:
    - rel
    - db
    - is_new_db
    argTypes:
    - RelInfo*
    - DbInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 212
    functionDepth: 3
    functionLinenumber: 212
    functionLinenumberEnd: 270
    functionName: report_unmatched_relation
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - pg_log
    - strlen
    - _
    - snprintf
    linkageType: ''
    returnType: void
    signature: void report_unmatched_relation(const RelInfo *rel, const DbInfo *db,
      bool is_new_db)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/info.c:281,1
    - Dst: free_db_and_rel_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:285,1
    - Dst: get_template0_info
      Src: /src/postgres/src/bin/pg_upgrade/info.c:287,1
    - Dst: get_db_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:288,1
    - Dst: get_rel_infos_query
      Src: /src/postgres/src/bin/pg_upgrade/info.c:290,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/info.c:291,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:306,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/info.c:307,1
    - Dst: get_old_cluster_logical_slot_infos_query
      Src: /src/postgres/src/bin/pg_upgrade/info.c:308,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/info.c:312,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:313,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:315,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:318,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:320,1
    - Dst: print_db_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:323,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 278
    functionDepth: 4
    functionLinenumber: 278
    functionLinenumberEnd: 324
    functionName: get_db_rel_and_slot_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - get_old_cluster_logical_slot_infos_query
    - pg_free
    - upgrade_task_run
    - upgrade_task_free
    - pg_log
    - get_template0_info
    - print_db_infos
    - free_db_and_rel_infos
    - get_rel_infos_query
    - upgrade_task_add_step
    - get_db_infos
    - GET_MAJOR_VERSION
    - upgrade_task_create
    linkageType: ''
    returnType: void
    signature: void get_db_rel_and_slot_infos(ClusterInfo *cluster)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/info.c:334,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:343,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:344,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:349,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:350,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:356,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/info.c:363,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/info.c:364,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_upgrade/info.c:366,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:368,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:369,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:370,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:371,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:372,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/info.c:374,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:374,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:375,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:376,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:376,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:377,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:377,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_upgrade/info.c:378,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:381,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:381,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/info.c:385,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/info.c:386,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 387
    functionName: get_template0_info
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - pg_malloc_object
    - PQclear
    - pg_fatal
    - PQgetvalue
    - PQfinish
    - GET_MAJOR_VERSION
    - atoi
    - PQfnumber
    - PQgetisnull
    - PQntuples
    - executeQueryOrDie
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void get_template0_info(ClusterInfo *cluster)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/info.c:399,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:409,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:411,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:412,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:412,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:412,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:414,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:415,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:415,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:415,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:418,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:418,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:418,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:420,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:420,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:420,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:428,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:430,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:431,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:432,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/info.c:434,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_upgrade/info.c:435,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:439,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_upgrade/info.c:440,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:442,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:442,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:443,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:443,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:452,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:456,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/info.c:460,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/info.c:462,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 466
    functionName: get_db_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - atooid
    - PQclear
    - is_absolute_path
    - PQfinish
    - pg_malloc0_array
    - pg_strdup
    - strlen
    - GET_MAJOR_VERSION
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - executeQueryOrDie
    - snprintf
    linkageType: ''
    returnType: void
    signature: void get_db_infos(ClusterInfo *cluster)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/info.c:484,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/info.c:499,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/info.c:505,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/info.c:515,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:517,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/info.c:525,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/info.c:538,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/info.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 570
    functionName: get_rel_infos_query
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - CppAsString2
    - appendPQExpBuffer
    - initPQExpBuffer
    - GET_MAJOR_VERSION
    - appendPQExpBufferStr
    linkageType: ''
    returnType: char
    signature: 'char *

      get_rel_infos_query(void)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/info.c:580,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/info.c:581,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:582,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:583,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:584,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:585,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:586,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:587,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:588,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:589,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:601,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:601,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:602,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:602,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:603,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:603,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:605,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:614,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:618,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:622,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:623,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:625,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:625,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:629,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:629,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:631,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_upgrade/info.c:632,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:641,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:648,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:652,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_upgrade/info.c:658,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 667
    functionName: process_rel_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - atooid
    - strcmp
    - is_absolute_path
    - pfree
    - psprintf
    - pg_malloc_array
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void process_rel_infos(DbInfo *dbinfo, PGresult *res, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 766
    functionName: get_old_cluster_logical_slot_infos_query
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - GET_MAJOR_VERSION
    linkageType: ''
    returnType: char
    signature: 'char *

      get_old_cluster_logical_slot_infos_query(ClusterInfo *cluster)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/info.c:777,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_upgrade/info.c:788,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:790,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:791,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:792,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:793,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:794,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:795,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:801,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:801,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:802,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:802,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:803,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:803,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:804,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:804,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:805,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:805,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:806,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:806,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 812
    functionName: process_old_cluster_logical_slot_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pg_malloc_array
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void process_old_cluster_logical_slot_infos(DbInfo *dbinfo, PGresult
      *res, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 824
    functionDepth: 0
    functionLinenumber: 824
    functionLinenumberEnd: 833
    functionName: count_old_cluster_logical_slots
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int count_old_cluster_logical_slots(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/info.c:848,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:849,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:850,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:854,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:858,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:859,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/info.c:861,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:861,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:862,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:862,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/info.c:864,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/info.c:865,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 866
    functionName: get_subscription_info
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - connectToServer
    - PQclear
    - strcmp
    - PQfinish
    - PQgetvalue
    - GET_MAJOR_VERSION
    - atoi
    - PQfnumber
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void get_subscription_info(ClusterInfo *cluster)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_rel_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:875,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:876,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:878,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - db_arr
    argTypes:
    - DbInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 868
    functionDepth: 1
    functionLinenumber: 868
    functionLinenumberEnd: 881
    functionName: free_db_and_rel_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - pg_free
    - free_rel_infos
    linkageType: ''
    returnType: void
    signature: void free_db_and_rel_infos(DbInfoArr *db_arr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:892,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:893,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:895,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - rel_arr
    argTypes:
    - RelInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 899
    functionName: free_rel_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void free_rel_infos(RelInfoArr *rel_arr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:911,1
    - Dst: print_rel_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:912,1
    - Dst: print_slot_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:913,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - db_arr
    argTypes:
    - DbInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 902
    functionDepth: 3
    functionLinenumber: 902
    functionLinenumberEnd: 915
    functionName: print_db_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - pg_log
    - print_rel_infos
    - print_slot_infos
    linkageType: ''
    returnType: void
    signature: void print_db_infos(DbInfoArr *db_arr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:924,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - rel_arr
    argTypes:
    - RelInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 918
    functionDepth: 3
    functionLinenumber: 918
    functionLinenumberEnd: 929
    functionName: print_rel_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - pg_log
    linkageType: ''
    returnType: void
    signature: void print_rel_infos(RelInfoArr *rel_arr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:938,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:944,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - slot_arr
    argTypes:
    - LogicalSlotInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 931
    functionDepth: 3
    functionLinenumber: 931
    functionLinenumberEnd: 949
    functionName: print_slot_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - pg_log
    linkageType: ''
    returnType: void
    signature: void print_slot_infos(LogicalSlotInfoArr *slot_arr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_db_conn
      Src: /src/postgres/src/bin/pg_upgrade/server.c:30,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_upgrade/server.c:32,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/server.c:34,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/server.c:34,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/server.c:37,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:39,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/server.c:39,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/server.c:40,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/server.c:43,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/server.c:43,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - cluster
    - db_name
    argTypes:
    - ClusterInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 27
    functionDepth: 3
    functionLinenumber: 27
    functionLinenumberEnd: 46
    functionName: connectToServer
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 5
    functionsReached:
    - PQclear
    - _
    - pg_log
    - PQfinish
    - exit
    - printf
    - PQerrorMessage
    - get_db_conn
    - executeQueryOrDie
    - PQstatus
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      connectToServer(ClusterInfo *cluster, const char *db_name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:63,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:64,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:65,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:66,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:67,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:68,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:71,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:72,1
    - Dst: protocol_negotiation_supported
      Src: /src/postgres/src/bin/pg_upgrade/server.c:74,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:75,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/bin/pg_upgrade/server.c:77,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - cluster
    - db_name
    argTypes:
    - ClusterInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 80
    functionName: get_db_conn
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 1
    functionsReached:
    - PQconnectdb
    - appendConnStrVal
    - appendPQExpBufferStr
    - protocol_negotiation_supported
    - initPQExpBuffer
    - termPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      get_db_conn(ClusterInfo *cluster, const char *db_name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:99,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:101,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:105,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_upgrade/server.c:106,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_upgrade/server.c:107,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:109,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_upgrade/server.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 113
    functionName: cluster_conn_opts
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 0
    functionsReached:
    - appendShellString
    - resetPQExpBuffer
    - appendPQExpBuffer
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      cluster_conn_opts(ClusterInfo *cluster)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_upgrade/server.c:131,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:132,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/server.c:133,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/server.c:135,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_upgrade/server.c:136,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_upgrade/server.c:137,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/server.c:141,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/server.c:142,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/server.c:143,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/server.c:144,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:145,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/server.c:145,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/server.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - conn
    - fmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 150
    functionName: executeQueryOrDie
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 5
    functionsReached:
    - va_end
    - PQclear
    - _
    - PQexec
    - va_start
    - PQerrorMessage
    - PQfinish
    - exit
    - printf
    - PQresultStatus
    - vsnprintf
    - pg_log
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      executeQueryOrDie(PGconn *conn, const char *fmt, ...)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/server.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 157
    functionName: stop_postmaster_atexit
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 0
    functionsReached:
    - stop_postmaster
    linkageType: ''
    returnType: void
    signature: void stop_postmaster_atexit(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_upgrade/server.c:173,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pg_upgrade/server.c:181,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:186,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/server.c:186,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/server.c:187,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:193,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:204,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:210,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:218,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/server.c:224,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:226,1
    - Dst: get_db_conn
      Src: /src/postgres/src/bin/pg_upgrade/server.c:258,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_upgrade/server.c:259,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/server.c:261,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/server.c:261,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/server.c:263,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:265,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:269,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/server.c:273,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:283,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:285,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 2
    argNames:
    - cluster
    - report_and_exit_on_error
    argTypes:
    - ClusterInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 289
    functionName: start_postmaster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 0
    functionsReached:
    - strcat
    - PQstatus
    - strcmp
    - PQerrorMessage
    - exec_prog
    - PQfinish
    - pg_fatal
    - initPQExpBuffer
    - strlen
    - atexit
    - termPQExpBuffer
    - pg_log
    - get_db_conn
    - appendPQExpBufferStr
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool start_postmaster(ClusterInfo *cluster, bool report_and_exit_on_error)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/server.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - in_atexit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 311
    functionName: stop_postmaster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 1
    functionsReached:
    - exec_prog
    linkageType: ''
    returnType: void
    signature: void stop_postmaster(bool in_atexit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQconndefaults
      Src: /src/postgres/src/bin/pg_upgrade/server.c:327,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:330,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:334,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:335,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/server.c:337,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/server.c:339,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:341,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:341,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:342,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/pg_upgrade/server.c:342,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:343,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/pg_upgrade/server.c:349,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 350
    functionName: check_pghost_envvar
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 0
    functionsReached:
    - PQconninfoFree
    - strcmp
    - PQconndefaults
    - is_unixsock_path
    - pg_fatal
    - getenv
    - strlen
    linkageType: ''
    returnType: void
    signature: void check_pghost_envvar(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: MultiXactIdToOffsetPage
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 MultiXactIdToOffsetPage(MultiXactId multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: MultiXactIdToOffsetEntry
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int MultiXactIdToOffsetEntry(MultiXactId multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: MXOffsetToMemberPage
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 MXOffsetToMemberPage(MultiXactOffset32 offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 91
    functionName: MXOffsetToFlagsOffset
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int MXOffsetToFlagsOffset(MultiXactOffset32 offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: MXOffsetToMemberOffset
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c
    functionUses: 0
    functionsReached:
    - MXOffsetToFlagsOffset
    linkageType: ''
    returnType: int
    signature: int MXOffsetToMemberOffset(MultiXactOffset32 offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 111
    functionName: MXOffsetToFlagsBitShift
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int MXOffsetToFlagsBitShift(MultiXactOffset32 offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:122,1
    - Dst: pg_sprintf
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:128,1
    - Dst: AllocSlruRead
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:129,1
    - Dst: pg_sprintf
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:131,1
    - Dst: AllocSlruRead
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - pgdata
    - nextMulti
    - nextOffset
    argTypes:
    - char*
    - MultiXactId
    - MultiXactOffset32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 135
    functionName: AllocOldMultiXactRead
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c
    functionUses: 0
    functionsReached:
    - AllocSlruRead
    - pg_malloc_object
    - pg_sprintf
    linkageType: ''
    returnType: OldMultiXactReader
    signature: "OldMultiXactReader *\nAllocOldMultiXactRead(char *pgdata, MultiXactId
      nextMulti,\n\t\t\t\t\t  MultiXactOffset32 nextOffset)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:207,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:208,1
    - Dst: SlruReadSwitchPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:210,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:240,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:241,1
    - Dst: SlruReadSwitchPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:244,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:264,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:287,1
    - Dst: MXOffsetToMemberOffset
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:288,1
    - Dst: SlruReadSwitchPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:292,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:297,1
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:316,1
    - Dst: MXOffsetToFlagsBitShift
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:317,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:326,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:329,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:335,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:341,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 69
    argCount: 3
    argNames:
    - state
    - multi
    - member
    argTypes:
    - OldMultiXactReader*
    - MultiXactId
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 351
    functionName: GetOldMultiXactIdSingleMember
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c
    functionUses: 0
    functionsReached:
    - MXOffsetToMemberPage
    - MultiXactIdToOffsetPage
    - MXOffsetToFlagsBitShift
    - pg_fatal
    - MultiXactIdToOffsetEntry
    - TransactionIdIsValid
    - MXOffsetToMemberOffset
    - ISUPDATE_from_mxstatus
    - MXOffsetToFlagsOffset
    - SlruReadSwitchPage
    linkageType: ''
    returnType: bool
    signature: "bool GetOldMultiXactIdSingleMember(OldMultiXactReader *state, MultiXactId
      multi,\n\t\t\t\t\t\t\t  MultiXactMember *member)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FreeSlruRead
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:359,1
    - Dst: FreeSlruRead
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:360,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - OldMultiXactReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 363
    functionName: FreeOldMultiXactReader
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_read_v18.c
    functionUses: 0
    functionsReached:
    - pfree
    - FreeSlruRead
    linkageType: ''
    returnType: void
    signature: void FreeOldMultiXactReader(OldMultiXactReader *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_sprintf
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:52,1
    - Dst: AllocSlruWrite
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:53,1
    - Dst: SlruWriteSwitchPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:54,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:54,1
    - Dst: pg_sprintf
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:56,1
    - Dst: AllocSlruWrite
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:57,1
    - Dst: SlruWriteSwitchPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:58,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:58,1
    - Dst: AllocOldMultiXactRead
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:64,1
    - Dst: GetOldMultiXactIdSingleMember
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:82,1
    - Dst: RecordMultiXactOffset
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:92,1
    - Dst: RecordMultiXactMembers
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:98,1
    - Dst: FreeOldMultiXactReader
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:109,1
    - Dst: RecordMultiXactOffset
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:112,1
    - Dst: FreeSlruWrite
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:116,1
    - Dst: FreeSlruWrite
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:117,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - from_multi
    - to_multi
    argTypes:
    - MultiXactId
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 34
    functionDepth: 4
    functionLinenumber: 34
    functionLinenumberEnd: 120
    functionName: rewrite_multixacts
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c
    functionUses: 0
    functionsReached:
    - GetOldMultiXactIdSingleMember
    - SlruWriteSwitchPage
    - MXOffsetToMemberPage
    - AllocOldMultiXactRead
    - MultiXactIdToOffsetPage
    - RecordMultiXactOffset
    - FreeOldMultiXactReader
    - AllocSlruWrite
    - FreeSlruWrite
    - pg_sprintf
    - RecordMultiXactMembers
    linkageType: ''
    returnType: MultiXactOffset
    signature: MultiXactOffset rewrite_multixacts(MultiXactId from_multi, MultiXactId
      to_multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:135,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:136,1
    - Dst: SlruWriteSwitchPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - offsets_writer
    - multi
    - offset
    argTypes:
    - SlruSegState*
    - MultiXactId
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 141
    functionName: RecordMultiXactOffset
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c
    functionUses: 1
    functionsReached:
    - MultiXactIdToOffsetPage
    - SlruWriteSwitchPage
    - MultiXactIdToOffsetEntry
    linkageType: ''
    returnType: void
    signature: "void RecordMultiXactOffset(SlruSegState *offsets_writer, MultiXactId
      multi,\n\t\t\t\t\t  MultiXactOffset offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:164,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:166,1
    - Dst: MXOffsetToMemberOffset
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:167,1
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:168,1
    - Dst: MXOffsetToFlagsBitShift
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:169,1
    - Dst: SlruWriteSwitchPage
      Src: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - members_writer
    - offset
    - nmembers
    - members
    argTypes:
    - SlruSegState*
    - MultiXactOffset
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 184
    functionName: RecordMultiXactMembers
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/multixact_rewrite.c
    functionUses: 1
    functionsReached:
    - SlruWriteSwitchPage
    - MXOffsetToMemberPage
    - Assert
    - MXOffsetToFlagsBitShift
    - MXOffsetToMemberOffset
    - MXOffsetToFlagsOffset
    linkageType: ''
    returnType: void
    signature: "void RecordMultiXactMembers(SlruSegState *members_writer,\n\t\t\t\t\t
      \  MultiXactOffset offset,\n\t\t\t\t\t   int nmembers, MultiXactMember *members)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:20,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:23,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:26,1
    - Dst: protocol_negotiation_supported
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:27,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:31,1
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:33,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:44,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:45,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:46,1
    - Dst: protocol_negotiation_supported
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:47,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:48,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:50,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:51,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:52,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:54,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:55,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:56,1
    - Dst: parallel_exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:58,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:61,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:69,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:73,1
    - Dst: end_progress_output
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:76,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 78
    functionName: generate_old_dump
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/dump.c
    functionUses: 0
    functionsReached:
    - check_ok
    - appendShellString
    - reap_child
    - prep_status
    - exec_prog
    - appendConnStrVal
    - pg_log
    - protocol_negotiation_supported
    - prep_status_progress
    - initPQExpBuffer
    - end_progress_output
    - parallel_exec_prog
    - termPQExpBuffer
    - cluster_conn_opts
    - appendPQExpBufferStr
    - snprintf
    linkageType: ''
    returnType: void
    signature: void generate_old_dump(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 57
    functionName: sync_queue_init
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: void
    signature: void sync_queue_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:67,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:68,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 72
    functionName: sync_queue_sync_all
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - fsync_fname
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void sync_queue_sync_all(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sync_queue_init
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:77,1
    - Dst: pre_sync_fname
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:79,1
    - Dst: strncpy
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:81,1
    - Dst: sync_queue_sync_all
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 84
    functionName: sync_queue_push
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - pre_sync_fname
    - sync_queue_sync_all
    - strncpy
    - sync_queue_init
    linkageType: ''
    returnType: void
    signature: void sync_queue_push(const char *fname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 99
    functionName: sync_queue_destroy
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void sync_queue_destroy(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:114,1
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:117,1
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:120,1
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:123,1
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:126,1
    - Dst: parallel_transfer_all_new_dbs
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:138,1
    - Dst: parallel_transfer_all_new_dbs
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:145,1
    - Dst: parallel_transfer_all_new_dbs
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:149,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:156,1
    - Dst: end_progress_output
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:160,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:161,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 4
    argNames:
    - old_db_arr
    - new_db_arr
    - old_pgdata
    - new_pgdata
    argTypes:
    - DbInfoArr*
    - DbInfoArr*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 162
    functionName: transfer_all_new_tablespaces
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - parallel_transfer_all_new_dbs
    - check_ok
    - reap_child
    - prep_status_progress
    - end_progress_output
    linkageType: ''
    returnType: void
    signature: "void transfer_all_new_tablespaces(DbInfoArr *old_db_arr, DbInfoArr
      *new_db_arr,\n\t\t\t\t\t\t\t char *old_pgdata, char *new_pgdata)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:197,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:202,1
    - Dst: gen_db_file_maps
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:205,1
    - Dst: transfer_single_new_db
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:209,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:212,1
    - Dst: sync_queue_sync_all
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:219,1
    - Dst: sync_queue_destroy
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:220,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 6
    argNames:
    - old_db_arr
    - new_db_arr
    - old_pgdata
    - new_pgdata
    - old_tablespace
    - new_tablespace
    argTypes:
    - DbInfoArr*
    - DbInfoArr*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 171
    functionDepth: 4
    functionLinenumber: 171
    functionLinenumberEnd: 221
    functionName: transfer_all_new_dbs
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 3
    functionsReached:
    - transfer_single_new_db
    - strcmp
    - sync_queue_sync_all
    - sync_queue_destroy
    - pg_fatal
    - gen_db_file_maps
    - pg_free
    linkageType: ''
    returnType: void
    signature: "void transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr,\n\t\t\t\t\t
      char *old_pgdata, char *new_pgdata,\n\t\t\t\t\t char *old_tablespace, char *new_tablespace)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:251,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:256,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:262,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:263,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:264,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:265,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:271,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:272,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:273,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:276,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:279,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:284,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:285,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:288,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:289,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:292,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:293,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:296,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:297,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 6
    argNames:
    - old_tablespace
    - new_tablespace
    - db_oid
    - old_catalog_dir
    - new_db_dir
    - moved_db_dir
    argTypes:
    - char*
    - char*
    - Oid
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 300
    functionName: prepare_for_swap
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - rename
    - strcmp
    - stat
    - pg_fatal
    - pg_mkdir_p
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool prepare_for_swap(const char *old_tablespace, const char *new_tablespace,\n\t\t\t\t
      Oid db_oid, char *old_catalog_dir, char *new_db_dir,\n\t\t\t\t char *moved_db_dir)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 314
    functionName: FileNameMapCmp
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int FileNameMapCmp(const void *a, const void *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:333,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 338
    functionName: parse_relfilenumber
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: RelFileNumber
    signature: RelFileNumber parse_relfilenumber(const char *filename)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:365,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:367,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:368,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:370,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:371,1
    - Dst: parse_relfilenumber
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:374,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:375,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:379,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:383,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:384,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:385,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:388,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:389,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:392,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:394,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:395,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:397,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:398,1
    - Dst: parse_relfilenumber
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:401,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:402,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:406,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:410,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:411,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:412,1
    - Dst: sync_queue_push
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:423,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:426,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:427,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:430,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:431,1
    - Dst: fsync_parent_path
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:432,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:433,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 45
    argCount: 5
    argNames:
    - maps
    - size
    - old_catalog_dir
    - new_db_dir
    - moved_db_dir
    argTypes:
    - FileNameMap*
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 434
    functionName: swap_catalog_files
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - rename
    - sync_queue_push
    - fsync_parent_path
    - bsearch
    - readdir
    - pg_fatal
    - fsync_fname
    - get_dirent_type
    - closedir
    - parse_relfilenumber
    - RelFileNumberIsValid
    - opendir
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void swap_catalog_files(FileNameMap *maps, int size, const char *old_catalog_dir,\n\t\t\t\t
      \  const char *new_db_dir, const char *moved_db_dir)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:456,1
    - Dst: prepare_for_swap
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:465,1
    - Dst: swap_catalog_files
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:467,1
    - Dst: prepare_for_swap
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:472,1
    - Dst: swap_catalog_files
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:474,1
    - Dst: prepare_for_swap
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:479,1
    - Dst: swap_catalog_files
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:483,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - maps
    - size
    - old_tablespace
    - new_tablespace
    argTypes:
    - FileNameMap*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 444
    functionDepth: 3
    functionLinenumber: 444
    functionLinenumberEnd: 487
    functionName: do_swap
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - qsort
    - swap_catalog_files
    - prepare_for_swap
    linkageType: ''
    returnType: void
    signature: void do_swap(FileNameMap *maps, int size, char *old_tablespace, char
      *new_tablespace)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: do_swap
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:503,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:510,1
    - Dst: transfer_relfile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:513,1
    - Dst: transfer_relfile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:518,1
    - Dst: transfer_relfile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:519,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - maps
    - size
    - old_tablespace
    - new_tablespace
    argTypes:
    - FileNameMap*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 494
    functionDepth: 4
    functionLinenumber: 494
    functionLinenumberEnd: 522
    functionName: transfer_single_new_db
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 1
    functionsReached:
    - transfer_relfile
    - strcmp
    - do_swap
    linkageType: ''
    returnType: void
    signature: "void transfer_single_new_db(FileNameMap *maps, int size,\n\t\t\t\t\t
      \  char *old_tablespace, char *new_tablespace)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:549,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:551,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:558,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:570,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:576,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:585,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:588,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:593,1
    - Dst: cloneFile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:595,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:598,1
    - Dst: copyFile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:600,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:603,1
    - Dst: copyFileByRange
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:605,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:608,1
    - Dst: linkFile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:610,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:614,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - map
    - type_suffix
    argTypes:
    - FileNameMap*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 530
    functionDepth: 3
    functionLinenumber: 530
    functionLinenumberEnd: 618
    functionName: transfer_relfile
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 1
    functionsReached:
    - cloneFile
    - unlink
    - stat
    - copyFileByRange
    - pg_fatal
    - pg_log
    - linkFile
    - copyFile
    - snprintf
    linkageType: ''
    returnType: void
    signature: void transfer_relfile(FileNameMap *map, const char *type_suffix)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_upgrade/option.c:79,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:82,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/option.c:82,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:82,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:83,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/option.c:83,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:83,1
    - Dst: get_user_info
      Src: /src/postgres/src/bin/pg_upgrade/option.c:85,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:87,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/option.c:89,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:91,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:91,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/option.c:96,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/option.c:96,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_upgrade/option.c:98,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/option.c:99,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/option.c:101,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/option.c:101,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_upgrade/option.c:103,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/option.c:104,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:110,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_upgrade/option.c:112,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:118,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:122,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:130,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:134,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/option.c:138,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:152,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:157,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_upgrade/option.c:158,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:165,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:170,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_upgrade/option.c:171,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/option.c:176,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:177,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/option.c:181,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:182,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:190,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/option.c:194,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:195,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_upgrade/option.c:215,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/option.c:216,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:217,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_upgrade/option.c:225,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_upgrade/option.c:227,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:230,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:238,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:238,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/option.c:240,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:245,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:248,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/option.c:251,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_upgrade/option.c:253,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_upgrade/option.c:253,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:256,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:258,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:259,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:261,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_upgrade/option.c:262,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:265,1
    - Dst: check_required_directory
      Src: /src/postgres/src/bin/pg_upgrade/option.c:268,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:269,1
    - Dst: check_required_directory
      Src: /src/postgres/src/bin/pg_upgrade/option.c:270,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:271,1
    - Dst: check_required_directory
      Src: /src/postgres/src/bin/pg_upgrade/option.c:272,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:273,1
    - Dst: check_required_directory
      Src: /src/postgres/src/bin/pg_upgrade/option.c:274,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:275,1
    - Dst: check_required_directory
      Src: /src/postgres/src/bin/pg_upgrade/option.c:276,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:277,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_upgrade/option.c:290,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/option.c:291,1
    - Dst: getcwd
      Src: /src/postgres/src/bin/pg_upgrade/option.c:293,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:294,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/option.c:295,1
    - Dst: path_is_prefix_of_path
      Src: /src/postgres/src/bin/pg_upgrade/option.c:296,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:297,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 144
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 300
    functionName: parseCommandLine
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/option.c
    functionUses: 0
    functionsReached:
    - get_progname
    - strcmp
    - getcwd
    - puts
    - pg_log
    - fprintf
    - fileno
    - strlcpy
    - _
    - pfree
    - getenv
    - check_required_directory
    - usage
    - setenv
    - path_is_prefix_of_path
    - psprintf
    - getopt_long
    - isatty
    - canonicalize_path
    - pg_free
    - exit
    - pg_strdup
    - parse_sync_method
    - pg_strcasecmp
    - pg_fatal
    - free
    - atoi
    - get_user_info
    linkageType: ''
    returnType: void
    signature: void parseCommandLine(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:306,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:306,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:307,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:307,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:308,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:308,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:309,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:309,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:310,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:310,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:311,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:311,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:313,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:313,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:314,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:314,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:315,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:315,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:316,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:316,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:317,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:317,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:318,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:318,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:319,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:319,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:320,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:320,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:321,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:321,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:322,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:322,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:323,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:323,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:324,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:324,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:325,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:325,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:326,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:326,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:327,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:327,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:328,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:328,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:329,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:329,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:330,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:330,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:331,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:331,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:332,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:332,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:334,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:334,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:335,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:335,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:336,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:336,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:337,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:337,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:342,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:342,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:348,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:348,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:353,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:353,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:359,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:359,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:365,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:365,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:366,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/option.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 367
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/option.c
    functionUses: 8
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/option.c:389,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/option.c:393,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/option.c:393,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:394,1
    - Dst: getcwd
      Src: /src/postgres/src/bin/pg_upgrade/option.c:399,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:400,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:401,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:406,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/option.c:415,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 6
    argNames:
    - dirpath
    - envVarName
    - useCwd
    - cmdLineOption
    - description
    - missingOk
    argTypes:
    - char**
    - char*
    - bool
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 416
    functionName: check_required_directory
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/option.c
    functionUses: 1
    functionsReached:
    - getcwd
    - canonicalize_path
    - pg_fatal
    - getenv
    - strlen
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void check_required_directory(char **dirpath, const char *envVarName,
      bool useCwd,\n\t\t\t\t\t\t const char *cmdLineOption, const char *description,\n\t\t\t\t\t\t
      bool missingOk)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:440,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:443,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/option.c:444,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/option.c:446,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:449,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/option.c:450,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/option.c:452,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/option.c:459,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/option.c:461,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:468,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/option.c:470,1
    - Dst: popen
      Src: /src/postgres/src/bin/pg_upgrade/option.c:472,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_upgrade/option.c:473,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:474,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pg_upgrade/option.c:476,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:478,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_upgrade/option.c:479,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:482,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:484,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/option.c:486,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 429
    functionDepth: 2
    functionLinenumber: 429
    functionLinenumberEnd: 487
    functionName: adjust_data_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/option.c
    functionUses: 0
    functionsReached:
    - check_ok
    - prep_status
    - wait_result_to_str
    - fopen
    - pclose
    - pg_strip_crlf
    - fclose
    - pg_fatal
    - pg_strdup
    - fflush
    - fgets
    - popen
    - snprintf
    linkageType: ''
    returnType: void
    signature: void adjust_data_dir(ClusterInfo *cluster)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:516,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/option.c:518,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:519,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_upgrade/option.c:522,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_upgrade/option.c:525,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/option.c:526,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:531,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/option.c:535,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_upgrade/option.c:536,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/option.c:539,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/option.c:543,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 498
    functionDepth: 3
    functionLinenumber: 498
    functionLinenumberEnd: 549
    functionName: get_sock_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/option.c
    functionUses: 0
    functionsReached:
    - sscanf
    - fopen
    - pg_strip_crlf
    - pg_fatal
    - fclose
    - pg_strdup
    - Max
    - fgets
    - pg_log
    - snprintf
    linkageType: ''
    returnType: void
    signature: void get_sock_dir(ClusterInfo *cluster)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: GET_MAJOR_VERSION
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_MAJOR_VERSION(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - path
    - ','
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 414
    functionName: fopen_priv
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fopen_priv(path, mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:281,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/check.c:317,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/check.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - checknum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 326
    functionName: data_type_check_query
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - psprintf
    - CppAsString2
    linkageType: ''
    returnType: char
    signature: 'char *

      data_type_check_query(int checknum)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:337,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:339,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:340,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:341,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:347,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:356,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:364,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/check.c:364,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:365,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/check.c:366,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/check.c:367,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:372,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:373,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:375,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:378,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:379,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:380,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:381,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:383,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 384
    functionName: process_data_type_check
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - fprintf
    - _
    - pg_log
    - pg_fatal
    - fclose
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - appendPQExpBuffer
    - createPQExpBuffer
    - snprintf
    linkageType: ''
    returnType: void
    signature: void process_data_type_check(DbInfo *dbinfo, PGresult *res, void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:411,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:415,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_upgrade/check.c:425,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_upgrade/check.c:426,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:434,1
    - Dst: DataTypesUsageChecks*::version_hook
      Src: /src/postgres/src/bin/pg_upgrade/check.c:440,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:445,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:449,1
    - Dst: data_type_check_query
      Src: /src/postgres/src/bin/pg_upgrade/check.c:451,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:456,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:464,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:465,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:469,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:470,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:476,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:478,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:479,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:481,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 405
    functionDepth: 4
    functionLinenumber: 405
    functionLinenumberEnd: 482
    functionName: check_for_data_types_usage
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - check_ok
    - prep_status
    - Assert
    - data_type_check_query
    - upgrade_task_free
    - pg_fatal
    - pg_malloc0_array
    - DataTypesUsageChecks*::version_hook
    - GET_MAJOR_VERSION
    - upgrade_task_add_step
    - upgrade_task_run
    - pg_free
    - upgrade_task_create
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void check_for_data_types_usage(ClusterInfo *cluster)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/check.c:499,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 510
    functionName: fix_path_separator
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      fix_path_separator(char *path)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:517,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 512
    functionDepth: 3
    functionLinenumber: 512
    functionLinenumberEnd: 527
    functionName: output_check_banner
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - pg_log
    linkageType: ''
    returnType: void
    signature: void output_check_banner(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/check.c:536,1
    - Dst: check_for_connection_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:542,1
    - Dst: check_for_unsupported_encodings
      Src: /src/postgres/src/bin/pg_upgrade/check.c:547,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:554,1
    - Dst: check_old_cluster_global_names
      Src: /src/postgres/src/bin/pg_upgrade/check.c:555,1
    - Dst: get_db_rel_and_slot_infos
      Src: /src/postgres/src/bin/pg_upgrade/check.c:561,1
    - Dst: init_tablespaces
      Src: /src/postgres/src/bin/pg_upgrade/check.c:563,1
    - Dst: get_loadable_libraries
      Src: /src/postgres/src/bin/pg_upgrade/check.c:565,1
    - Dst: check_is_install_user
      Src: /src/postgres/src/bin/pg_upgrade/check.c:571,1
    - Dst: check_for_prepared_transactions
      Src: /src/postgres/src/bin/pg_upgrade/check.c:572,1
    - Dst: check_for_isn_and_int8_passing_mismatch
      Src: /src/postgres/src/bin/pg_upgrade/check.c:573,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:575,1
    - Dst: check_old_cluster_for_valid_slots
      Src: /src/postgres/src/bin/pg_upgrade/check.c:581,1
    - Dst: get_subscription_info
      Src: /src/postgres/src/bin/pg_upgrade/check.c:588,1
    - Dst: check_old_cluster_subscription_state
      Src: /src/postgres/src/bin/pg_upgrade/check.c:589,1
    - Dst: check_for_data_types_usage
      Src: /src/postgres/src/bin/pg_upgrade/check.c:592,1
    - Dst: check_for_unicode_update
      Src: /src/postgres/src/bin/pg_upgrade/check.c:598,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:606,1
    - Dst: check_for_user_defined_encoding_conversions
      Src: /src/postgres/src/bin/pg_upgrade/check.c:607,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:613,1
    - Dst: check_for_user_defined_postfix_ops
      Src: /src/postgres/src/bin/pg_upgrade/check.c:614,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:620,1
    - Dst: check_for_incompatible_polymorphics
      Src: /src/postgres/src/bin/pg_upgrade/check.c:621,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:627,1
    - Dst: check_for_tables_with_oids
      Src: /src/postgres/src/bin/pg_upgrade/check.c:628,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:635,1
    - Dst: check_for_not_null_inheritance
      Src: /src/postgres/src/bin/pg_upgrade/check.c:636,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:650,1
    - Dst: check_for_gist_inet_ops
      Src: /src/postgres/src/bin/pg_upgrade/check.c:651,1
    - Dst: generate_old_dump
      Src: /src/postgres/src/bin/pg_upgrade/check.c:658,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/check.c:661,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 530
    functionDepth: 5
    functionLinenumber: 530
    functionLinenumberEnd: 662
    functionName: check_and_dump_old_cluster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - check_old_cluster_global_names
    - start_postmaster
    - check_is_install_user
    - check_for_not_null_inheritance
    - check_for_isn_and_int8_passing_mismatch
    - get_loadable_libraries
    - check_for_tables_with_oids
    - check_old_cluster_for_valid_slots
    - check_for_prepared_transactions
    - stop_postmaster
    - check_for_incompatible_polymorphics
    - check_for_unsupported_encodings
    - check_for_data_types_usage
    - check_for_connection_status
    - init_tablespaces
    - check_for_unicode_update
    - check_for_user_defined_encoding_conversions
    - get_db_rel_and_slot_infos
    - generate_old_dump
    - check_for_gist_inet_ops
    - check_for_user_defined_postfix_ops
    - GET_MAJOR_VERSION
    - check_old_cluster_subscription_state
    - get_subscription_info
    linkageType: ''
    returnType: void
    signature: void check_and_dump_old_cluster(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_db_rel_and_slot_infos
      Src: /src/postgres/src/bin/pg_upgrade/check.c:668,1
    - Dst: check_new_cluster_is_empty
      Src: /src/postgres/src/bin/pg_upgrade/check.c:670,1
    - Dst: check_loadable_libraries
      Src: /src/postgres/src/bin/pg_upgrade/check.c:672,1
    - Dst: check_file_clone
      Src: /src/postgres/src/bin/pg_upgrade/check.c:677,1
    - Dst: check_copy_file_range
      Src: /src/postgres/src/bin/pg_upgrade/check.c:682,1
    - Dst: check_hard_link
      Src: /src/postgres/src/bin/pg_upgrade/check.c:685,1
    - Dst: check_hard_link
      Src: /src/postgres/src/bin/pg_upgrade/check.c:698,1
    - Dst: check_is_install_user
      Src: /src/postgres/src/bin/pg_upgrade/check.c:702,1
    - Dst: check_for_prepared_transactions
      Src: /src/postgres/src/bin/pg_upgrade/check.c:704,1
    - Dst: check_for_new_tablespace_dir
      Src: /src/postgres/src/bin/pg_upgrade/check.c:706,1
    - Dst: check_new_cluster_replication_slots
      Src: /src/postgres/src/bin/pg_upgrade/check.c:708,1
    - Dst: check_new_cluster_subscription_configuration
      Src: /src/postgres/src/bin/pg_upgrade/check.c:710,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 665
    functionDepth: 5
    functionLinenumber: 665
    functionLinenumberEnd: 711
    functionName: check_new_cluster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - check_hard_link
    - get_db_rel_and_slot_infos
    - check_new_cluster_subscription_configuration
    - check_loadable_libraries
    - check_for_new_tablespace_dir
    - check_new_cluster_is_empty
    - check_for_prepared_transactions
    - check_is_install_user
    - check_copy_file_range
    - check_file_clone
    - check_new_cluster_replication_slots
    linkageType: ''
    returnType: void
    signature: void check_new_cluster(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:719,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/check.c:721,1
    - Dst: cleanup_output_dirs
      Src: /src/postgres/src/bin/pg_upgrade/check.c:723,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/check.c:724,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:727,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 714
    functionDepth: 3
    functionLinenumber: 714
    functionLinenumberEnd: 730
    functionName: report_clusters_compatible
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - exit
    - pg_log
    - stop_postmaster
    - cleanup_output_dirs
    linkageType: ''
    returnType: void
    signature: void report_clusters_compatible(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/check.c:742,1
    - Dst: report_extension_updates
      Src: /src/postgres/src/bin/pg_upgrade/check.c:744,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/check.c:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 747
    functionName: issue_warnings_and_set_wal_level
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - start_postmaster
    - stop_postmaster
    - report_extension_updates
    linkageType: ''
    returnType: void
    signature: void issue_warnings_and_set_wal_level(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:755,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/check.c:758,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_upgrade/check.c:759,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_upgrade/check.c:760,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:763,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:772,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:777,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:783,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - deletion_script_file_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 750
    functionDepth: 3
    functionLinenumber: 750
    functionLinenumberEnd: 784
    functionName: output_completion_banner
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - appendShellString
    - initPQExpBuffer
    - appendPQExpBufferChar
    - termPQExpBuffer
    - pg_log
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void output_completion_banner(char *deletion_script_file_name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:790,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:793,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:794,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:801,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:802,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:806,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:806,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:807,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:816,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:819,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:820,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:821,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:822,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:823,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:824,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:833,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:835,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:838,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 787
    functionDepth: 2
    functionLinenumber: 787
    functionLinenumberEnd: 839
    functionName: check_cluster_versions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - check_ok
    - prep_status
    - Assert
    - pg_fatal
    - GET_MAJOR_VERSION
    linkageType: ''
    returnType: void
    signature: void check_cluster_versions(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_control_data
      Src: /src/postgres/src/bin/pg_upgrade/check.c:846,1
    - Dst: get_control_data
      Src: /src/postgres/src/bin/pg_upgrade/check.c:847,1
    - Dst: check_control_data
      Src: /src/postgres/src/bin/pg_upgrade/check.c:848,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 853
    functionName: check_cluster_compatibility
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - check_control_data
    - get_control_data
    linkageType: ''
    returnType: void
    signature: void check_cluster_compatibility(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:870,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:871,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 877
    functionName: check_new_cluster_is_empty
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void check_new_cluster_is_empty(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:894,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:900,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/check.c:904,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:905,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:909,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 888
    functionDepth: 2
    functionLinenumber: 888
    functionLinenumberEnd: 910
    functionName: check_for_new_tablespace_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - check_ok
    - prep_status
    - stat
    - pg_fatal
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_new_tablespace_dir(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:926,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_upgrade/check.c:929,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:930,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_upgrade/check.c:932,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:933,1
    - Dst: path_is_prefix_of_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:936,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:938,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/check.c:942,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_upgrade/check.c:943,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_upgrade/check.c:957,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:958,1
    - Dst: path_is_prefix_of_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:959,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:962,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/check.c:966,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_upgrade/check.c:967,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:973,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:975,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:976,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:981,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:985,1
    - Dst: fix_path_separator
      Src: /src/postgres/src/bin/pg_upgrade/check.c:986,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/check.c:989,1
    - Dst: fix_path_separator
      Src: /src/postgres/src/bin/pg_upgrade/check.c:990,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:992,1
    - Dst: fix_path_separator
      Src: /src/postgres/src/bin/pg_upgrade/check.c:993,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:995,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:997,1
    - Dst: chmod
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1000,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1001,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1005,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - deletion_script_file_name
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 917
    functionDepth: 3
    functionLinenumber: 917
    functionLinenumberEnd: 1006
    functionName: create_script_for_old_cluster_deletion
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - check_ok
    - path_is_prefix_of_path
    - unlink
    - prep_status
    - pfree
    - psprintf
    - chmod
    - canonicalize_path
    - pg_fatal
    - fclose
    - pg_strdup
    - pg_free
    - pg_log
    - fix_path_separator
    - fprintf
    - fopen_priv
    linkageType: ''
    returnType: void
    signature: void create_script_for_old_cluster_deletion(char **deletion_script_file_name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1019,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1021,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1024,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1035,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1036,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1036,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1037,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1040,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1042,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1047,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1048,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1055,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1055,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1056,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1058,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1060,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1062,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1015
    functionDepth: 4
    functionLinenumber: 1015
    functionLinenumberEnd: 1063
    functionName: check_is_install_user
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 2
    functionsReached:
    - atooid
    - connectToServer
    - check_ok
    - PQclear
    - strcmp
    - prep_status
    - pg_fatal
    - PQfinish
    - PQgetvalue
    - PQntuples
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void check_is_install_user(ClusterInfo *cluster)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1086,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1088,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1092,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1095,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1099,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1100,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1101,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1103,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1106,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1107,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1108,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1110,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1113,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1114,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1124,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1124,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1126,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1127,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1129,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1134,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1136,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1140,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1141,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1142,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1151,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1073
    functionDepth: 4
    functionLinenumber: 1073
    functionLinenumberEnd: 1152
    functionName: check_for_connection_status
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - fopen_priv
    - connectToServer
    - check_ok
    - PQclear
    - strcmp
    - prep_status
    - pg_log
    - pg_fatal
    - PQfinish
    - fclose
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    - executeQueryOrDie
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_connection_status(ClusterInfo *cluster)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1169,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1171,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1175,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1177,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1180,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1181,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1182,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1185,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1186,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1186,1
    - Dst: PG_VALID_BE_ENCODING
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1188,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1190,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1191,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1193,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1196,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1197,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1201,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1202,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1203,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1209,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1158
    functionDepth: 4
    functionLinenumber: 1158
    functionLinenumberEnd: 1210
    functionName: check_for_unsupported_encodings
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - fopen_priv
    - connectToServer
    - check_ok
    - PQclear
    - prep_status
    - pg_log
    - atoi
    - pg_fatal
    - PQfinish
    - fclose
    - PG_VALID_BE_ENCODING
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    - executeQueryOrDie
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_unsupported_encodings(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1223,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1225,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1227,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1231,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1234,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1236,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1239,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1241,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1219
    functionDepth: 4
    functionLinenumber: 1219
    functionLinenumberEnd: 1244
    functionName: check_for_prepared_transactions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 2
    functionsReached:
    - connectToServer
    - check_ok
    - PQclear
    - prep_status
    - pg_fatal
    - PQfinish
    - PQntuples
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void check_for_prepared_transactions(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1255,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1256,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1257,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1264,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1265,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1267,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1270,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1271,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1273
    functionName: process_isn_and_int8_passing_mismatch
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - pg_fatal
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: void process_isn_and_int8_passing_mismatch(DbInfo *dbinfo, PGresult
      *res, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1293,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1299,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1304,1
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1308,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1309,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1311,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1312,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1316,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1317,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1318,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1282
    functionDepth: 4
    functionLinenumber: 1282
    functionLinenumberEnd: 1328
    functionName: check_for_isn_and_int8_passing_mismatch
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - check_ok
    - prep_status
    - upgrade_task_free
    - pg_log
    - fclose
    - pg_fatal
    - upgrade_task_add_step
    - upgrade_task_run
    - upgrade_task_create
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_isn_and_int8_passing_mismatch(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1339,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1340,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1341,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1342,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1343,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1344,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1350,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1351,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1353,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1356,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1357,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1358,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1359,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1360,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1361,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1335
    functionDepth: 1
    functionLinenumber: 1335
    functionLinenumberEnd: 1362
    functionName: process_user_defined_postfix_ops
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - pg_fatal
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: void process_user_defined_postfix_ops(DbInfo *dbinfo, PGresult *res,
      void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1371,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1395,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1398,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1402,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1404,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1405,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1409,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1410,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1411,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1367
    functionDepth: 4
    functionLinenumber: 1367
    functionLinenumberEnd: 1419
    functionName: check_for_user_defined_postfix_ops
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - check_ok
    - prep_status
    - upgrade_task_free
    - pg_log
    - fclose
    - pg_fatal
    - upgrade_task_add_step
    - upgrade_task_run
    - upgrade_task_create
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_user_defined_postfix_ops(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1430,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1431,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1432,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1438,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1439,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1441,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1444,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1445,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1446,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1426
    functionDepth: 1
    functionLinenumber: 1426
    functionLinenumberEnd: 1447
    functionName: process_incompat_polymorphics
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - pg_fatal
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: void process_incompat_polymorphics(DbInfo *dbinfo, PGresult *res, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1459,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1463,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1466,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1471,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1473,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1478,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1482,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1496,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1525,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1527,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1528,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1532,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1533,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1534,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1543,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1545,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1455
    functionDepth: 4
    functionLinenumber: 1455
    functionLinenumberEnd: 1547
    functionName: check_for_incompatible_polymorphics
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - check_ok
    - prep_status
    - pfree
    - psprintf
    - upgrade_task_free
    - pg_log
    - fclose
    - pg_fatal
    - initPQExpBuffer
    - upgrade_task_add_step
    - upgrade_task_run
    - termPQExpBuffer
    - upgrade_task_create
    - appendPQExpBufferStr
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_incompatible_polymorphics(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1558,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1559,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1560,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1566,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1567,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1569,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1572,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1573,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1574,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1554
    functionDepth: 1
    functionLinenumber: 1554
    functionLinenumberEnd: 1575
    functionName: process_with_oids_check
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - pg_fatal
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: void process_with_oids_check(DbInfo *dbinfo, PGresult *res, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1584,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1592,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1595,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1599,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1601,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1602,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1606,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1607,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1608,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1580
    functionDepth: 4
    functionLinenumber: 1580
    functionLinenumberEnd: 1616
    functionName: check_for_tables_with_oids
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - check_ok
    - prep_status
    - upgrade_task_free
    - pg_log
    - fclose
    - pg_fatal
    - upgrade_task_add_step
    - upgrade_task_run
    - upgrade_task_create
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_tables_with_oids(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1626,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1627,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1628,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1629,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1635,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1636,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1638,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1642,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1643,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1644,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1645,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1622
    functionDepth: 1
    functionLinenumber: 1622
    functionLinenumberEnd: 1647
    functionName: process_inconsistent_notnull
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - pg_fatal
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: void process_inconsistent_notnull(DbInfo *dbinfo, PGresult *res, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1664,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1667,1
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1680,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1681,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1684,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1685,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1689,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1690,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1691,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1657
    functionDepth: 4
    functionLinenumber: 1657
    functionLinenumberEnd: 1701
    functionName: check_for_not_null_inheritance
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - check_ok
    - prep_status
    - upgrade_task_free
    - pg_log
    - fclose
    - pg_fatal
    - upgrade_task_add_step
    - upgrade_task_run
    - upgrade_task_create
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_not_null_inheritance(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1712,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1713,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1714,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1720,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1721,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1723,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1726,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1727,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1728,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1729
      start: 1708
    functionDepth: 1
    functionLinenumber: 1708
    functionLinenumberEnd: 1729
    functionName: process_gist_inet_ops_check
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - pg_fatal
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: void process_gist_inet_ops_check(DbInfo *dbinfo, PGresult *res, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1740,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1750,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1753,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1757,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1759,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1760,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1764,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1765,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1766,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1774,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1736
    functionDepth: 4
    functionLinenumber: 1736
    functionLinenumberEnd: 1775
    functionName: check_for_gist_inet_ops
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - check_ok
    - prep_status
    - upgrade_task_free
    - pg_log
    - fclose
    - pg_fatal
    - upgrade_task_add_step
    - upgrade_task_run
    - upgrade_task_create
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_gist_inet_ops(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1787,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1788,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1789,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1790,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1796,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1797,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1799,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1802,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1803,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1804,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1805,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1783
    functionDepth: 1
    functionLinenumber: 1783
    functionLinenumberEnd: 1806
    functionName: process_user_defined_encoding_conversions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - pg_fatal
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: void process_user_defined_encoding_conversions(DbInfo *dbinfo, PGresult
      *res, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1815,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1818,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1821,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1837,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1840,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1841,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1845,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1846,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1847,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1855,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1811
    functionDepth: 4
    functionLinenumber: 1811
    functionLinenumberEnd: 1856
    functionName: check_for_user_defined_encoding_conversions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - check_ok
    - prep_status
    - upgrade_task_free
    - pg_log
    - fclose
    - pg_fatal
    - upgrade_task_add_step
    - upgrade_task_run
    - upgrade_task_create
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_user_defined_encoding_conversions(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1867,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1868,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1869,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1870,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1876,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1877,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1879,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1882,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1883,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1884,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1885,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1886
      start: 1863
    functionDepth: 1
    functionLinenumber: 1863
    functionLinenumberEnd: 1886
    functionName: process_unicode_update
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - pg_fatal
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: void process_unicode_update(DbInfo *dbinfo, PGresult *res, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1895,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1900,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1901,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1902,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1904,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1892
    functionDepth: 4
    functionLinenumber: 1892
    functionLinenumberEnd: 1908
    functionName: unicode_version_changed
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - connectToServer
    - PQclear
    - strcmp
    - PQfinish
    - PQgetvalue
    - executeQueryOrDie
    linkageType: ''
    returnType: bool
    signature: bool unicode_version_changed(ClusterInfo *cluster)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1929,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1932,1
    - Dst: unicode_version_changed
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1934,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1936,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1941,1
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2021,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2022,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2025,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2026,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2030,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2031,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2032,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2037,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 1917
    functionDepth: 5
    functionLinenumber: 1917
    functionLinenumberEnd: 2038
    functionName: check_for_unicode_update
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - report_status
    - check_ok
    - prep_status
    - upgrade_task_free
    - unicode_version_changed
    - pg_log
    - fclose
    - upgrade_task_add_step
    - GET_MAJOR_VERSION
    - upgrade_task_run
    - upgrade_task_create
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_for_unicode_update(ClusterInfo *cluster)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2068,1
    - Dst: count_old_cluster_logical_slots
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2071,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2080,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2082,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2084,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2093,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2094,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2096,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2097,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2099,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2099,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2103,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2104,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2108,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2108,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2112,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2113,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2116,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2118,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2122,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2123,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2125,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2128,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2129,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2132,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2132,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2136,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2142,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2146,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2147,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2149,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2150
      start: 2051
    functionDepth: 4
    functionLinenumber: 2051
    functionLinenumberEnd: 2150
    functionName: check_new_cluster_replication_slots
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - check_ok
    - count_old_cluster_logical_slots
    - PQclear
    - prep_status
    - Assert
    - strcmp
    - pg_fatal
    - PQgetvalue
    - PQfinish
    - GET_MAJOR_VERSION
    - atoi
    - PQfnumber
    - PQntuples
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void check_new_cluster_replication_slots(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2167,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2174,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2176,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2178,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2181,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2182,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2184,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2184,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2186,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2190,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2191,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2194
      start: 2159
    functionDepth: 4
    functionLinenumber: 2159
    functionLinenumberEnd: 2194
    functionName: check_new_cluster_subscription_configuration
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - check_ok
    - PQclear
    - prep_status
    - pg_fatal
    - PQgetvalue
    - PQfinish
    - GET_MAJOR_VERSION
    - atoi
    - PQntuples
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void check_new_cluster_subscription_configuration(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2208,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2210,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2226,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2227,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2229,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2245,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2246,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2248,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2258,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2261,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2262,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2264,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2273,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2275,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2276,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2283,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2284
      start: 2202
    functionDepth: 3
    functionLinenumber: 2202
    functionLinenumberEnd: 2284
    functionName: check_old_cluster_for_valid_slots
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - check_ok
    - strcmp
    - prep_status
    - pg_fatal
    - fclose
    - snprintf
    - pg_log
    - fprintf
    - fopen_priv
    linkageType: ''
    returnType: void
    signature: void check_old_cluster_for_valid_slots(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2295,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2296,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2297,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2298,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2299,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2305,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2306,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2309,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2310,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2312,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2313,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2315
      start: 2291
    functionDepth: 1
    functionLinenumber: 2291
    functionLinenumberEnd: 2315
    functionName: process_old_sub_state_check
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - fopen_priv
    - pg_fatal
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: void process_old_sub_state_check(DbInfo *dbinfo, PGresult *res, void
      *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2327,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2334,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2337,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2345,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2346,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2354,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2358,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2359,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2360,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2361,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2362,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2364,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2365,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2406,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2409,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2410,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2414,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2415,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2416,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2422,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2324
    functionDepth: 4
    functionLinenumber: 2324
    functionLinenumberEnd: 2423
    functionName: check_old_cluster_subscription_state
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - fopen_priv
    - connectToServer
    - check_ok
    - PQclear
    - prep_status
    - upgrade_task_run
    - upgrade_task_free
    - pg_log
    - pg_fatal
    - PQfinish
    - fclose
    - PQntuples
    - upgrade_task_add_step
    - PQgetvalue
    - upgrade_task_create
    - fprintf
    - executeQueryOrDie
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_old_cluster_subscription_state(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2442,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2444,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2448,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2454,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2462,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2465,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2466,1
    - Dst: strpbrk
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2469,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2471,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2472,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2474,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2478,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2479,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2483,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2484,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2485,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2492,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2493
      start: 2431
    functionDepth: 4
    functionLinenumber: 2431
    functionLinenumberEnd: 2493
    functionName: check_old_cluster_global_names
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - fopen_priv
    - connectToServer
    - fprintf
    - check_ok
    - PQclear
    - prep_status
    - pg_log
    - pg_fatal
    - PQfinish
    - fclose
    - PQgetvalue
    - PQntuples
    - strpbrk
    - executeQueryOrDie
    - snprintf
    linkageType: ''
    returnType: void
    signature: void check_old_cluster_global_names(ClusterInfo *cluster)
  - BBCount: 103
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:82,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:83,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:83,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:84,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:85,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:85,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:86,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:87,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:87,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:88,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:89,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:89,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:90,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:91,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:91,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:92,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:93,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:93,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:94,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:95,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:95,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:96,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:97,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:97,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:98,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:99,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:99,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:101,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:102,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:103,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:104,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:105,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:107,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:110,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:112,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:113,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:114,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:122,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:124,1
    - Dst: popen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:126,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:127,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:130,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:132,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:134,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:136,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:137,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:150,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:153,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:156,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:158,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:160,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:163,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:165,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:171,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:173,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:174,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:179,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:181,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:185,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:189,1
    - Dst: popen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:191,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:192,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:195,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:198,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:199,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:201,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:203,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:205,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:206,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:209,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:211,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:213,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:215,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:216,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:219,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:221,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:223,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:225,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:226,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:229,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:231,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:233,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:234,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:237,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:240,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:242,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:244,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:245,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:248,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:251,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:253,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:255,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:256,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:259,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:262,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:264,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:266,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:267,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:270,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:273,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:275,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:277,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:278,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:281,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:284,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:286,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:288,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:289,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:292,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:295,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:298,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:299,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:300,1
    - Dst: strpbrk
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:301,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:302,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:303,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:306,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:307,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:309,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:312,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:314,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:316,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:317,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:321,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:324,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:326,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:328,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:329,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:332,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:335,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:337,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:339,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:340,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:343,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:346,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:348,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:350,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:351,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:354,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:357,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:359,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:361,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:362,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:365,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:368,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:370,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:372,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:373,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:376,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:379,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:381,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:383,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:384,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:387,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:390,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:392,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:394,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:395,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:398,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:401,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:403,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:405,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:406,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:409,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:412,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:414,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:416,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:417,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:420,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:423,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:425,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:427,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:428,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:431,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:434,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:436,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:438,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:439,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:442,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:445,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:447,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:449,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:450,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:454,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:458,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:458,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:459,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:461,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:466,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:468,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:469,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:476,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:478,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:480,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:482,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:484,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:486,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:488,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:490,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:492,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:494,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:496,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:498,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:499,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:500,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:501,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:502,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:503,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:504,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:505,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:506,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:515,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:537,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:540,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:544,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:547,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:550,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:553,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:556,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:559,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:562,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:565,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:568,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:571,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:574,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:577,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:580,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:583,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:586,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:589,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:592,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:595,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:599,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:603,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:605,1
    CyclomaticComplexity: 156
    EdgeCount: 156
    ICount: 343
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 607
    functionName: get_control_data
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/controldata.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strchr
    - pclose
    - pg_strip_crlf
    - strstr
    - pg_log
    - strpbrk
    - strlcpy
    - Assert
    - getenv
    - strspn
    - fflush
    - setenv
    - wait_result_to_str
    - isspace
    - unsetenv
    - strlen
    - fgets
    - popen
    - pg_free
    - str2uint
    - pg_strdup
    - pg_fatal
    - snprintf
    linkageType: ''
    returnType: void
    signature: void get_control_data(ClusterInfo *cluster)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:620,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:624,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:627,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:630,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:633,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:636,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:639,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:642,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:646,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:649,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:662,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:670,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:673,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:675,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 29
    argCount: 2
    argNames:
    - oldctrl
    - newctrl
    argTypes:
    - ControlData*
    - ControlData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 615
    functionDepth: 0
    functionLinenumber: 615
    functionLinenumberEnd: 676
    functionName: check_control_data
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/controldata.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void check_control_data(ControlData *oldctrl,\n\t\t\t\t   ControlData
      *newctrl)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:687,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:689,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:690,1
    - Dst: pg_mv_file
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:691,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:692,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:694,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:698,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:705,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:709,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - transfer_mode
    argTypes:
    - transferMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 679
    functionDepth: 3
    functionLinenumber: 679
    functionLinenumberEnd: 710
    functionName: disable_old_cluster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/controldata.c
    functionUses: 0
    functionsReached:
    - check_ok
    - prep_status
    - pg_fatal
    - pg_log
    - pg_mv_file
    - snprintf
    linkageType: ''
    returnType: void
    signature: void disable_old_cluster(transferMode transfer_mode)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:99,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:100,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:100,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:103,1
    - Dst: parseCommandLine
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:105,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:107,1
    - Dst: adjust_data_dir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:109,1
    - Dst: adjust_data_dir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:110,1
    - Dst: GetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:116,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:117,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:120,1
    - Dst: make_outputdirs
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:126,1
    - Dst: setup
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:128,1
    - Dst: output_check_banner
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:130,1
    - Dst: check_cluster_versions
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:132,1
    - Dst: get_sock_dir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:134,1
    - Dst: get_sock_dir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:135,1
    - Dst: check_cluster_compatibility
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:137,1
    - Dst: check_and_dump_old_cluster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:139,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:143,1
    - Dst: check_new_cluster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:145,1
    - Dst: report_clusters_compatible
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:146,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:148,1
    - Dst: set_locale_and_encoding
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:153,1
    - Dst: prepare_new_cluster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:155,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:157,1
    - Dst: copy_xact_xlog_xid
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:163,1
    - Dst: set_new_cluster_char_signedness
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:164,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:169,1
    - Dst: prepare_new_globals
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:171,1
    - Dst: create_new_objects
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:173,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:175,1
    - Dst: disable_old_cluster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:186,1
    - Dst: transfer_all_new_tablespaces
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:188,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:197,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:198,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:202,1
    - Dst: count_old_cluster_logical_slots
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:204,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:229,1
    - Dst: create_logical_replication_slots
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:232,1
    - Dst: create_conflict_detection_slot
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:235,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:237,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:242,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:243,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:250,1
    - Dst: create_script_for_old_cluster_deletion
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:253,1
    - Dst: issue_warnings_and_set_wal_level
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:255,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:257,1
    - Dst: output_completion_banner
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:262,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:264,1
    - Dst: cleanup_output_dirs
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:266,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 59
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 89
    functionDepth: 6
    functionLinenumber: 89
    functionLinenumberEnd: 269
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - prep_status
    - get_sock_dir
    - set_locale_and_encoding
    - start_postmaster
    - create_script_for_old_cluster_deletion
    - pg_log
    - set_pglocale_pgservice
    - prepare_new_cluster
    - create_new_objects
    - exec_prog
    - copy_xact_xlog_xid
    - parseCommandLine
    - check_new_cluster
    - adjust_data_dir
    - make_outputdirs
    - stop_postmaster
    - create_logical_replication_slots
    - check_cluster_compatibility
    - GetDataDirectoryCreatePerm
    - check_ok
    - count_old_cluster_logical_slots
    - create_conflict_detection_slot
    - output_completion_banner
    - cleanup_output_dirs
    - get_restricted_token
    - report_clusters_compatible
    - pg_free
    - set_new_cluster_char_signedness
    - output_check_banner
    - check_and_dump_old_cluster
    - disable_old_cluster
    - pg_logging_init
    - check_cluster_versions
    - pg_fatal
    - transfer_all_new_tablespaces
    - setup
    - prepare_new_globals
    - issue_warnings_and_set_wal_level
    - umask
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:281,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:288,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:289,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:291,1
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:294,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:296,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:296,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:298,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:298,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:298,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:300,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:301,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:304,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:307,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:308,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:311,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:314,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:315,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:318,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:324,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:325,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:326,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:327,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:328,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:329,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:330,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:331,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:333,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:336,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:338,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:339,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:344,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:347,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:348,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:349,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:351,1
    - Dst: ctime
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:355,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:356,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 1
    argNames:
    - pgdata
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 358
    functionName: make_outputdirs
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - fopen_priv
    - gettimeofday
    - ctime
    - mkdir
    - pg_fatal
    - pg_malloc0
    - strftime
    - localtime
    - fclose
    - time
    - strlen
    - fprintf
    - snprintf
    linkageType: ''
    returnType: void
    signature: void make_outputdirs(char *pgdata)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: check_pghost_envvar
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:368,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:379,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:380,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:382,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:383,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:384,1
    - Dst: verify_directories
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:387,1
    - Dst: pid_lock_file_exists
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:390,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:401,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:402,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:406,1
    - Dst: pid_lock_file_exists
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:414,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:416,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:417,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:419,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 422
    functionName: setup
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 3
    functionsReached:
    - find_my_exec
    - verify_directories
    - check_pghost_envvar
    - canonicalize_path
    - pg_fatal
    - pid_lock_file_exists
    - start_postmaster
    - last_dir_separator
    - stop_postmaster
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void setup(char *argv0)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:445,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:447,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:453,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 428
    functionDepth: 2
    functionLinenumber: 428
    functionLinenumberEnd: 455
    functionName: set_new_cluster_char_signedness
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - exec_prog
    - check_ok
    - prep_status
    linkageType: ''
    returnType: void
    signature: void set_new_cluster_char_signedness(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:473,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:476,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:478,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:480,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:481,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:483,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:486,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:488,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:493,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:494,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:494,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:507,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:508,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:508,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:522,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:522,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:532,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:533,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:535,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:537,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:539,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 464
    functionDepth: 4
    functionLinenumber: 464
    functionLinenumberEnd: 540
    functionName: set_locale_and_encoding
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - check_ok
    - PQclear
    - prep_status
    - PQfinish
    - strlen
    - GET_MAJOR_VERSION
    - PQfreemem
    - PQescapeLiteral
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void set_locale_and_encoding(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:551,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:552,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:554,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:556,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:564,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:565,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:567,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 570
    functionName: prepare_new_cluster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - cluster_conn_opts
    - exec_prog
    - check_ok
    - prep_status
    linkageType: ''
    returnType: void
    signature: void prepare_new_cluster(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_frozenxids
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:579,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:584,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:586,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:588,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 592
    functionName: prepare_new_globals
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - check_ok
    - set_frozenxids
    - prep_status
    - exec_prog
    - cluster_conn_opts
    linkageType: ''
    returnType: void
    signature: void prepare_new_globals(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:601,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:610,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:611,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:611,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:612,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:627,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:630,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:631,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:632,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:641,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:649,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:667,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:670,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:671,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:672,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:679,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:694,1
    - Dst: parallel_exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:697,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:703,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:711,1
    - Dst: end_progress_output
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:714,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:715,1
    - Dst: get_db_rel_and_slot_infos
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:718,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 595
    functionDepth: 5
    functionLinenumber: 595
    functionLinenumberEnd: 719
    functionName: create_new_objects
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - cluster_conn_opts
    - connectToServer
    - check_ok
    - PQclear
    - strcmp
    - reap_child
    - get_db_rel_and_slot_infos
    - exec_prog
    - PQfinish
    - prep_status_progress
    - Max
    - end_progress_output
    - parallel_exec_prog
    - pg_log
    - executeQueryOrDie
    - snprintf
    linkageType: ''
    returnType: void
    signature: void create_new_objects(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:729,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:731,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:732,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:733,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:735,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - subdir
    - rmtopdir
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 724
    functionDepth: 2
    functionLinenumber: 724
    functionLinenumberEnd: 736
    functionName: remove_new_subdir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 0
    functionsReached:
    - check_ok
    - prep_status
    - pg_fatal
    - rmtree
    - snprintf
    linkageType: ''
    returnType: void
    signature: void remove_new_subdir(const char *subdir, bool rmtopdir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove_new_subdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:747,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:749,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:750,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:752,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:754,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - old_subdir
    - new_subdir
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 741
    functionDepth: 3
    functionLinenumber: 741
    functionLinenumberEnd: 764
    functionName: copy_subdir_files
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 0
    functionsReached:
    - remove_new_subdir
    - check_ok
    - prep_status
    - exec_prog
    - snprintf
    linkageType: ''
    returnType: void
    signature: void copy_subdir_files(const char *old_subdir, const char *new_subdir)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: copy_subdir_files
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:773,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:775,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:776,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:780,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:783,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:784,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:788,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:793,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:799,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:802,1
    - Dst: copy_subdir_files
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:809,1
    - Dst: copy_subdir_files
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:810,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:812,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:818,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:823,1
    - Dst: remove_new_subdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:847,1
    - Dst: remove_new_subdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:848,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:853,1
    - Dst: rewrite_multixacts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:854,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:855,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:857,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:858,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:863,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:867,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:868,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:873,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 766
    functionDepth: 5
    functionLinenumber: 766
    functionLinenumberEnd: 874
    functionName: copy_xact_xlog_xid
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - rewrite_multixacts
    - check_ok
    - remove_new_subdir
    - prep_status
    - Assert
    - copy_subdir_files
    - exec_prog
    linkageType: ''
    returnType: void
    signature: void copy_xact_xlog_xid(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:901,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:903,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:906,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:906,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:912,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:912,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:918,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:922,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:923,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:925,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:928,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:929,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:938,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:939,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:939,1
    - Dst: quote_identifier
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:941,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:943,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:946,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:946,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:952,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:953,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:957,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:957,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:963,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:964,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:966,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:969,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:970,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:970,1
    - Dst: quote_identifier
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:972,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:975,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:977,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:979,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 890
    functionDepth: 4
    functionLinenumber: 890
    functionLinenumberEnd: 980
    functionName: set_frozenxids
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - CppAsString2
    - PQclear
    - strcmp
    - prep_status
    - check_ok
    - quote_identifier
    - PQfinish
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void set_frozenxids(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:990,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1003,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1004,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1006,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1013,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1016,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1017,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1018,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1020,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1024,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1024,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1026,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1029,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1031,1
    - Dst: end_progress_output
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1034,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1035,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 987
    functionDepth: 4
    functionLinenumber: 987
    functionLinenumberEnd: 1038
    functionName: create_logical_replication_slots
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - check_ok
    - PQclear
    - PQfinish
    - prep_status_progress
    - resetPQExpBuffer
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - end_progress_output
    - pg_log
    - appendStringLiteralConn
    - appendPQExpBufferStr
    - executeQueryOrDie
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void create_logical_replication_slots(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1052,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1054,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1055,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1055,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1056,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1047
    functionDepth: 4
    functionLinenumber: 1047
    functionLinenumberEnd: 1059
    functionName: create_conflict_detection_slot
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - check_ok
    - PQclear
    - prep_status
    - PQfinish
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void create_conflict_detection_slot(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/version.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 31
    functionName: protocol_negotiation_supported
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/version.c
    functionUses: 3
    functionsReached:
    - GET_MAJOR_VERSION
    linkageType: ''
    returnType: bool
    signature: bool protocol_negotiation_supported(const ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/version.c:41,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/version.c:42,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/version.c:50,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/version.c:51,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/version.c:53,1
    - Dst: appendPsqlMetaConnect
      Src: /src/postgres/src/bin/pg_upgrade/version.c:54,1
    - Dst: fputs
      Src: /src/postgres/src/bin/pg_upgrade/version.c:55,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/version.c:56,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/version.c:59,1
    - Dst: quote_identifier
      Src: /src/postgres/src/bin/pg_upgrade/version.c:60,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/version.c:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 61
    functionName: process_extension_updates
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/version.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - quote_identifier
    - fputs
    - pg_fatal
    - initPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - appendPsqlMetaConnect
    - PQntuples
    - fprintf
    - fopen_priv
    linkageType: ''
    returnType: void
    signature: void process_extension_updates(DbInfo *dbinfo, PGresult *res, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/version.c:71,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/version.c:76,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_upgrade/version.c:79,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/version.c:81,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/version.c:84,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/version.c:85,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/version.c:89,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/version.c:90,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/version.c:91,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/version.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 101
    functionName: report_extension_updates
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/version.c
    functionUses: 1
    functionsReached:
    - report_status
    - check_ok
    - prep_status
    - upgrade_task_free
    - pg_log
    - fclose
    - upgrade_task_add_step
    - upgrade_task_run
    - upgrade_task_create
    - strcpy
    linkageType: ''
    returnType: void
    signature: void report_extension_updates(ClusterInfo *cluster)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:63,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:69,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:74,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:75,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:76,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:80,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:81,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:82,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:86,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:87,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:88,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:94,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:107,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:108,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:109,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:118,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:120,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 3
    argNames:
    - buffer
    - targetTLI
    - nentries
    argTypes:
    - char*
    - TimeLineID
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 129
    functionName: rewind_parseTimeLineHistory
    functionSourceFile: /src/postgres/src/bin/pg_rewind/timeline.c
    functionUses: 0
    functionsReached:
    - sscanf
    - pg_log_error_detail
    - isspace
    - pg_malloc_array
    - pg_log_error
    - exit
    - pg_realloc_array
    linkageType: ''
    returnType: TimeLineHistoryEntry
    signature: 'TimeLineHistoryEntry *

      rewind_parseTimeLineHistory(char *buffer, TimeLineID targetTLI, int *nentries)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:94,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:94,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:95,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:95,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:96,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:96,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:97,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:97,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:99,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:99,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:100,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:100,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:101,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:101,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:102,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:102,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:103,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:103,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:105,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:105,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:106,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:106,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:108,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:108,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:110,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:110,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:111,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:111,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:112,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:112,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:113,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:113,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:114,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:114,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:115,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:115,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:116,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 117
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 9
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(const char *progname)
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:158,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:159,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:159,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:160,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:165,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:165,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:167,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:168,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:170,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:170,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:172,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:173,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:177,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:203,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:207,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:211,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:215,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:223,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:227,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:228,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:233,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:234,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:240,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:241,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:242,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:247,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:248,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:249,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:254,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:255,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:256,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:261,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:262,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:263,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:268,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:270,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:271,1
    - Dst: geteuid
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:281,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:283,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:284,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:286,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:290,1
    - Dst: GetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:293,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:294,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:297,1
    - Dst: getRestoreCommand
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:299,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:301,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:306,1
    - Dst: pg_log_info_detail
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:307,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:313,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:315,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:316,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:316,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:319,1
    - Dst: init_libpq_source
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:321,1
    - Dst: init_local_source
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:324,1
    - Dst: slurpFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:336,1
    - Dst: digestControlFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:337,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:338,1
    - Dst: ensureCleanShutdown
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:344,1
    - Dst: slurpFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:346,1
    - Dst: digestControlFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:347,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:348,1
    - Dst: fetch_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:351,1
    - Dst: digestControlFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:352,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:353,1
    - Dst: sanityChecks
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:355,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:365,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:369,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:380,1
    - Dst: getTimelineHistory
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:394,1
    - Dst: getTimelineHistory
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:395,1
    - Dst: findCommonAncestorTimeline
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:397,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:401,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:402,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:409,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:415,1
    - Dst: readOneRecord
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:428,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:454,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:462,1
    - Dst: WriteRecoveryConfig
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:464,1
    - Dst: GenerateRecoveryConfig
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:465,1
    - Dst: GetDbnameFromConnectionOptions
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:466,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:467,1
    - Dst: keepwal_init
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:471,1
    - Dst: findLastCheckpoint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:473,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:475,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:476,1
    - Dst: filehash_init
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:479,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:485,1
    - Dst: traverse_files
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:486,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:489,1
    - Dst: traverse_datadir
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:490,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:498,1
    - Dst: extractPageMap
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:499,1
    - Dst: decide_file_actions
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:506,1
    - Dst: calculate_totals
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:508,1
    - Dst: print_filemap
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:512,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:519,1
    - Dst: perform_rewind
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:534,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:537,1
    - Dst: sync_target_dir
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:538,1
    - Dst: WriteRecoveryConfig
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:542,1
    - Dst: GenerateRecoveryConfig
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:543,1
    - Dst: GetDbnameFromConnectionOptions
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:544,1
    - Dst: destroy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:547,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:550,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:554,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 189
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 557
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - findLastCheckpoint
    - GenerateRecoveryConfig
    - get_progname
    - PQconnectdb
    - strcmp
    - extractPageMap
    - init_libpq_source
    - getRestoreCommand
    - puts
    - pg_log_error
    - atexit
    - init_local_source
    - sync_target_dir
    - set_pglocale_pgservice
    - LSN_FORMAT_ARGS
    - XLByteToSeg
    - pg_log_info_detail
    - pfree
    - Assert
    - filehash_init
    - PQfinish
    - sanityChecks
    - traverse_files
    - digestControlFile
    - WriteRecoveryConfig
    - usage
    - slurpFile
    - calculate_totals
    - PQstatus
    - getTimelineHistory
    - GetDataDirectoryCreatePerm
    - traverse_datadir
    - decide_file_actions
    - fetch_file
    - getopt_long
    - get_restricted_token
    - perform_rewind
    - pg_free
    - pg_log_info
    - exit
    - PQerrorMessage
    - pg_log_error_hint
    - keepwal_init
    - pg_strdup
    - geteuid
    - findCommonAncestorTimeline
    - parse_sync_method
    - pg_logging_init
    - pg_fatal
    - readOneRecord
    - pg_logging_increase_verbosity
    - ensureCleanShutdown
    - print_filemap
    - Max
    - GetDbnameFromConnectionOptions
    - destroy
    - umask
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: datapagemap_iterate
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:596,1
    - Dst: datapagemap_next
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:597,1
    - Dst: rewind_source*::queue_fetch_range
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:600,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:602,1
    - Dst: rewind_source*::queue_fetch_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:612,1
    - Dst: truncate_target_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:616,1
    - Dst: rewind_source*::queue_fetch_range
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:620,1
    - Dst: remove_target
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:626,1
    - Dst: create_target
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:630,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:634,1
    - Dst: rewind_source*::finish_fetch
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:640,1
    - Dst: close_target_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:642,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:644,1
    - Dst: rewind_source*::fetch_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:650,1
    - Dst: digestControlFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:651,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:652,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:663,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:666,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:670,1
    - Dst: createBackupLabel
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:691,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:720,1
    - Dst: rewind_source*::get_current_wal_insert_lsn
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:722,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:723,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:737,1
    - Dst: update_controlfile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:742,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 70
    argCount: 5
    argNames:
    - filemap
    - source
    - chkptrec
    - chkpttli
    - chkptredo
    argTypes:
    - filemap_t*
    - rewind_source*
    - XLogRecPtr
    - TimeLineID
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 743
    functionName: perform_rewind
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - datapagemap_iterate
    - update_controlfile
    - datapagemap_next
    - memcpy
    - progress_report
    - rewind_source*::queue_fetch_range
    - digestControlFile
    - truncate_target_file
    - memcmp
    - close_target_file
    - rewind_source*::finish_fetch
    - pg_free
    - pg_log_info
    - create_target
    - rewind_source*::fetch_file
    - rewind_source*::queue_fetch_file
    - rewind_source*::get_current_wal_insert_lsn
    - createBackupLabel
    - pg_fatal
    - Max
    - remove_target
    linkageType: ''
    returnType: void
    signature: "void perform_rewind(filemap_t *filemap, rewind_source *source,\n\t\t\t
      \  XLogRecPtr chkptrec,\n\t\t\t   TimeLineID chkpttli,\n\t\t\t   XLogRecPtr
      chkptredo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:752,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:760,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:770,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:781,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:791,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 745
    functionDepth: 0
    functionLinenumber: 745
    functionLinenumberEnd: 792
    functionName: sanityChecks
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void sanityChecks(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:815,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:833,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:835,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:838,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:838,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:839,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:846,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:846,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:846,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - finished
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 847
    functionName: progress_report
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 6
    functionsReached:
    - _
    - fputc
    - isatty
    - snprintf
    - strlen
    - time
    - fileno
    - fprintf
    linkageType: ''
    returnType: void
    signature: void progress_report(bool finished)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:857,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:859,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:862,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 863
    functionName: MinXLogRecPtr
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 0
    functionsReached:
    - Min
    - XLogRecPtrIsValid
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr MinXLogRecPtr(XLogRecPtr a, XLogRecPtr b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:879,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:889,1
    - Dst: fetch_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:893,1
    - Dst: slurpFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:895,1
    - Dst: rewind_parseTimeLineHistory
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:897,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:898,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:907,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:909,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:916,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:917,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:918,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - tli
    - is_source
    - nentries
    argTypes:
    - TimeLineID
    - bool
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 868
    functionDepth: 2
    functionLinenumber: 868
    functionLinenumberEnd: 923
    functionName: getTimelineHistory
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - TLHistoryFilePath
    - pg_malloc_object
    - fetch_file
    - rewind_parseTimeLineHistory
    - pg_free
    - slurpFile
    - LSN_FORMAT_ARGS
    - pg_log_debug
    linkageType: ''
    returnType: TimeLineHistoryEntry
    signature: 'TimeLineHistoryEntry *

      getTimelineHistory(TimeLineID tli, bool is_source, int *nentries)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:947,1
    - Dst: MinXLogRecPtr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:958,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:964,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 6
    argNames:
    - a_history
    - a_nentries
    - b_history
    - b_nentries
    - recptr
    - tliIndex
    argTypes:
    - TimeLineHistoryEntry*
    - int
    - TimeLineHistoryEntry*
    - int
    - XLogRecPtr*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 931
    functionDepth: 2
    functionLinenumber: 931
    functionLinenumberEnd: 966
    functionName: findCommonAncestorTimeline
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - MinXLogRecPtr
    - Min
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void findCommonAncestorTimeline(TimeLineHistoryEntry *a_history, int
      a_nentries,\n\t\t\t\t\t\t   TimeLineHistoryEntry *b_history, int b_nentries,\n\t\t\t\t\t\t
      \  XLogRecPtr *recptr, int *tliIndex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:984,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:985,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:990,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:991,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:992,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:994,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1001,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1002,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1005,1
    - Dst: open_target_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1008,1
    - Dst: write_target_range
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1009,1
    - Dst: close_target_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1010,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - startpoint
    - starttli
    - checkpointloc
    argTypes:
    - XLogRecPtr
    - TimeLineID
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 1011
    functionName: createBackupLabel
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - close_target_file
    - LSN_FORMAT_ARGS
    - pg_fatal
    - strftime
    - localtime
    - write_target_range
    - time
    - XLogFileName
    - open_target_file
    - XLByteToSeg
    - snprintf
    linkageType: ''
    returnType: void
    signature: void createBackupLabel(XLogRecPtr startpoint, TimeLineID starttli,
      XLogRecPtr checkpointloc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1022,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1023,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1024,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1027,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1028,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ControlFile
    argTypes:
    - ControlFileData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1016
    functionDepth: 1
    functionLinenumber: 1016
    functionLinenumberEnd: 1029
    functionName: checkControlFile
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 0
    functionsReached:
    - FIN_CRC32C
    - EQ_CRC32C
    - COMP_CRC32C
    - pg_fatal
    - INIT_CRC32C
    linkageType: ''
    returnType: void
    signature: void checkControlFile(ControlFileData *ControlFile)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1040,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1043,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1048,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1050,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1050,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1054,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1055,1
    - Dst: checkControlFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1059,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - ControlFile
    - content
    - size
    argTypes:
    - ControlFileData*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1060
    functionName: digestControlFile
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 2
    functionsReached:
    - memcpy
    - pg_log_error
    - pg_log_error_detail
    - ngettext
    - pg_fatal
    - IsValidWalSegSize
    - exit
    - checkControlFile
    linkageType: ''
    returnType: void
    signature: "void digestControlFile(ControlFileData *ControlFile, const char *content,\n\t\t\t\t
      \ size_t size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1079,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1087,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1088,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1091,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1094,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1102,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1105,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1108,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1109,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1114,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1115,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1119,1
    - Dst: pipe_read_line
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1121,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1123,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1125,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1127,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1128,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1130,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1133,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1068
    functionDepth: 1
    functionLinenumber: 1068
    functionLinenumberEnd: 1134
    functionName: getRestoreCommand
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - find_my_exec
    - strlcpy
    - appendShellString
    - strcmp
    - pg_strip_crlf
    - pg_fatal
    - pipe_read_line
    - destroyPQExpBuffer
    - find_other_exec
    - appendPQExpBufferStr
    - createPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void getRestoreCommand(const char *argv0)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1149,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1155,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1156,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1159,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1162,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1166,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1181,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1184,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1187,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1188,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1193,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1194,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1198,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1199,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1201,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1202,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1204,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1205,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1206,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1209,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1141
    functionDepth: 1
    functionLinenumber: 1141
    functionLinenumberEnd: 1210
    functionName: ensureCleanShutdown
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - find_my_exec
    - strlcpy
    - appendShellString
    - pg_log_error
    - pg_log_error_detail
    - pg_fatal
    - exit
    - fflush
    - destroyPQExpBuffer
    - pg_log_info
    - system
    - find_other_exec
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void ensureCleanShutdown(const char *argv0)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1212
    functionDepth: 1
    functionLinenumber: 1212
    functionLinenumberEnd: 1217
    functionName: disconnect_atexit
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 0
    functionsReached:
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void disconnect_atexit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - datadir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 55
    functionName: init_local_source
    functionSourceFile: /src/postgres/src/bin/pg_rewind/local_source.c
    functionUses: 1
    functionsReached:
    - pg_malloc0_object
    linkageType: ''
    returnType: rewind_source
    signature: 'rewind_source *

      init_local_source(const char *datadir)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: traverse_datadir
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - source
    - callback
    argTypes:
    - rewind_source*
    - process_file_callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: local_traverse_files
    functionSourceFile: /src/postgres/src/bin/pg_rewind/local_source.c
    functionUses: 0
    functionsReached:
    - traverse_datadir
    linkageType: ''
    returnType: void
    signature: void local_traverse_files(rewind_source *source, process_file_callback_t
      callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slurpFile
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - source
    - path
    - filesize
    argTypes:
    - rewind_source*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: local_fetch_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/local_source.c
    functionUses: 0
    functionsReached:
    - slurpFile
    linkageType: ''
    returnType: char
    signature: 'char *

      local_fetch_file(rewind_source *source, const char *path, size_t *filesize)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:83,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:86,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:88,1
    - Dst: open_target_file
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:92,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:99,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:102,1
    - Dst: write_target_range
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:106,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:115,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:118,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:119,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - source
    - path
    - len
    argTypes:
    - rewind_source*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 120
    functionName: local_queue_fetch_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/local_source.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - snprintf
    - write_target_range
    - close
    - open_target_file
    - open
    - read
    linkageType: ''
    returnType: void
    signature: void local_queue_fetch_file(rewind_source *source, const char *path,
      size_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:136,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:138,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:140,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:143,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:144,1
    - Dst: open_target_file
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:146,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:158,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:161,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:163,1
    - Dst: write_target_range
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:165,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:169,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:170,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - source
    - path
    - 'off'
    - len
    argTypes:
    - rewind_source*
    - char*
    - off_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 171
    functionName: local_queue_fetch_range
    functionSourceFile: /src/postgres/src/bin/pg_rewind/local_source.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - write_target_range
    - read
    - close
    - open_target_file
    - open
    - lseek
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void local_queue_fetch_range(rewind_source *source, const char *path,
      off_t off,\n\t\t\t\t\t\tsize_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - source
    argTypes:
    - rewind_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 179
    functionName: local_finish_fetch
    functionSourceFile: /src/postgres/src/bin/pg_rewind/local_source.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void local_finish_fetch(rewind_source *source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/local_source.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - source
    argTypes:
    - rewind_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 185
    functionName: local_destroy
    functionSourceFile: /src/postgres/src/bin/pg_rewind/local_source.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void local_destroy(rewind_source *source)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - symname
    - ','
    - name
    - ','
    - redo
    - ','
    - desc
    - ','
    - identify
    - ','
    - startup
    - ','
    - cleanup
    - ','
    - mask
    - ','
    - decode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: PG_RMGR
    functionSourceFile: /src/postgres/src/bin/pg_rewind/parsexlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask,decode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rmid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: RmgrName
    functionSourceFile: /src/postgres/src/bin/pg_rewind/parsexlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RmgrName(rmid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:76,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:77,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:80,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:82,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:85,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:92,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:93,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:96,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:97,1
    - Dst: extractPageInfo
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:100,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:108,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:109,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:109,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:111,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:114,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 5
    argNames:
    - datadir
    - startpoint
    - tliIndex
    - endpoint
    - restoreCommand
    argTypes:
    - char*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 117
    functionName: extractPageMap
    functionSourceFile: /src/postgres/src/bin/pg_rewind/parsexlog.c
    functionUses: 1
    functionsReached:
    - extractPageInfo
    - pg_fatal
    - XLogReaderAllocate
    - XLogBeginRead
    - XLogReaderFree
    - XL_ROUTINE
    - close
    - XLogReadRecord
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: "void extractPageMap(const char *datadir, XLogRecPtr startpoint, int
      tliIndex,\n\t\t\t   XLogRecPtr endpoint, const char *restoreCommand)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:135,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:136,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:139,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:141,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:142,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:146,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:147,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:149,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:150,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:154,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - datadir
    - ptr
    - tliIndex
    - restoreCommand
    argTypes:
    - char*
    - XLogRecPtr
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 162
    functionName: readOneRecord
    functionSourceFile: /src/postgres/src/bin/pg_rewind/parsexlog.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - XLogReaderAllocate
    - XLogBeginRead
    - XLogReaderFree
    - XL_ROUTINE
    - close
    - XLogReadRecord
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr readOneRecord(const char *datadir, XLogRecPtr ptr, int
      tliIndex,\n\t\t\t  const char *restoreCommand)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:189,1
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:197,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:198,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:201,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:208,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:209,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:214,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:215,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:218,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:219,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:228,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:234,1
    - Dst: keepwal_add_entry
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:238,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:246,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:248,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:254,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:254,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:265,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:268,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 7
    argNames:
    - datadir
    - forkptr
    - tliIndex
    - lastchkptrec
    - lastchkpttli
    - lastchkptredo
    - restoreCommand
    argTypes:
    - char*
    - XLogRecPtr
    - int
    - XLogRecPtr*
    - TimeLineID*
    - XLogRecPtr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 271
    functionName: findLastCheckpoint
    functionSourceFile: /src/postgres/src/bin/pg_rewind/parsexlog.c
    functionUses: 1
    functionsReached:
    - keepwal_add_entry
    - XLogSegmentOffset
    - memcpy
    - XLogRecGetData
    - pg_fatal
    - XLogReaderAllocate
    - XLogBeginRead
    - XLogRecGetInfo
    - XLogRecGetRmid
    - XLogReaderFree
    - XL_ROUTINE
    - XLogFileName
    - close
    - XLogReadRecord
    - LSN_FORMAT_ARGS
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void findLastCheckpoint(const char *datadir, XLogRecPtr forkptr, int
      tliIndex,\n\t\t\t\t   XLogRecPtr *lastchkptrec, TimeLineID *lastchkpttli,\n\t\t\t\t
      \  XLogRecPtr *lastchkptredo, const char *restoreCommand)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:284,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:285,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:286,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:293,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:295,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:299,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:318,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:321,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:324,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:333,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:341,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:349,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:357,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:360,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:362,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:367,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:371,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:379,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 5
    argNames:
    - xlogreader
    - targetPagePtr
    - reqLen
    - targetRecPtr
    - readBuf
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 383
    functionName: SimpleXLogPageRead
    functionSourceFile: /src/postgres/src/bin/pg_rewind/parsexlog.c
    functionUses: 0
    functionsReached:
    - RestoreArchivedFile
    - XLogSegmentOffset
    - pg_log_debug
    - Assert
    - XLByteInSeg
    - XLogSegNoOffsetToRecPtr
    - read
    - close
    - XLogFileName
    - open
    - pg_log_error
    - lseek
    - XLByteToSeg
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,\n\t\t\t\t
      \  int reqLen, XLogRecPtr targetRecPtr, char *readBuf)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:392,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:393,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:461,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:463,1
    - Dst: RmgrName
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:464,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:467,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:473,1
    - Dst: process_target_wal_block_change
      Src: /src/postgres/src/bin/pg_rewind/parsexlog.c:481,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 23
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 483
    functionName: extractPageInfo
    functionSourceFile: /src/postgres/src/bin/pg_rewind/parsexlog.c
    functionUses: 1
    functionsReached:
    - process_target_wal_block_change
    - RmgrName
    - pg_fatal
    - XLogRecGetRmid
    - XLogRecGetInfo
    - XLogRecMaxBlockId
    - XLogRecGetBlockTagExtended
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void extractPageInfo(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_rewind/datapagemap.c:55,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_rewind/datapagemap.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - map
    - blkno
    argTypes:
    - datapagemap_t*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 65
    functionName: datapagemap_add
    functionSourceFile: /src/postgres/src/bin/pg_rewind/datapagemap.c
    functionUses: 0
    functionsReached:
    - memset
    - pg_realloc
    linkageType: ''
    returnType: void
    signature: void datapagemap_add(datapagemap_t *map, BlockNumber blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_rewind/datapagemap.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - map
    argTypes:
    - datapagemap_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 84
    functionName: datapagemap_iterate
    functionSourceFile: /src/postgres/src/bin/pg_rewind/datapagemap.c
    functionUses: 1
    functionsReached:
    - pg_malloc0_object
    linkageType: ''
    returnType: datapagemap_iterator_t
    signature: 'datapagemap_iterator_t *

      datapagemap_iterate(datapagemap_t *map)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - iter
    - blkno
    argTypes:
    - datapagemap_iterator_t*
    - BlockNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 111
    functionName: datapagemap_next
    functionSourceFile: /src/postgres/src/bin/pg_rewind/datapagemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool datapagemap_next(datapagemap_iterator_t *iter, BlockNumber *blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: datapagemap_iterate
      Src: /src/postgres/src/bin/pg_rewind/datapagemap.c:122,1
    - Dst: datapagemap_next
      Src: /src/postgres/src/bin/pg_rewind/datapagemap.c:123,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/datapagemap.c:124,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/datapagemap.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - map
    argTypes:
    - datapagemap_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 127
    functionName: datapagemap_print
    functionSourceFile: /src/postgres/src/bin/pg_rewind/datapagemap.c
    functionUses: 0
    functionsReached:
    - pg_free
    - datapagemap_iterate
    - datapagemap_next
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void datapagemap_print(datapagemap_t *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: filehash_create
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 200
    functionName: filehash_init
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 1
    functionsReached:
    - filehash_create
    linkageType: ''
    returnType: void
    signature: void filehash_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: filehash_insert
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:209,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:212,1
    - Dst: getFileContentType
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 231
    functionName: insert_filehash_entry
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - getFileContentType
    - filehash_insert
    - pg_strdup
    linkageType: ''
    returnType: file_entry_t
    signature: 'file_entry_t *

      insert_filehash_entry(const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: filehash_lookup
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 237
    functionName: lookup_filehash_entry
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - filehash_lookup
    linkageType: ''
    returnType: file_entry_t
    signature: 'file_entry_t *

      lookup_filehash_entry(const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: keepwal_create
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 247
    functionName: keepwal_init
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 1
    functionsReached:
    - keepwal_create
    linkageType: ''
    returnType: void
    signature: void keepwal_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:257,1
    - Dst: keepwal_insert
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:259,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 263
    functionName: keepwal_add_entry
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 1
    functionsReached:
    - Assert
    - keepwal_insert
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void keepwal_add_entry(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: keepwal_lookup
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: keepwal_entry_exists
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - keepwal_lookup
    linkageType: ''
    returnType: bool
    signature: bool keepwal_entry_exists(const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:290,1
    - Dst: getFileContentType
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:297,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:298,1
    - Dst: insert_filehash_entry
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:301,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:303,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:307,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - path
    - type
    - size
    - link_target
    argTypes:
    - char*
    - file_type_t
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 308
    functionName: process_source_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - insert_filehash_entry
    - strcmp
    - getFileContentType
    - pg_fatal
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void process_source_file(const char *path, file_type_t type, size_t
      size,\n\t\t\t\t\tconst char *link_target)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:330,1
    - Dst: insert_filehash_entry
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:334,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:336,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - path
    - type
    - size
    - link_target
    argTypes:
    - char*
    - file_type_t
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 341
    functionName: process_target_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - pg_fatal
    - strcmp
    - insert_filehash_entry
    linkageType: ''
    returnType: void
    signature: "void process_target_file(const char *path, file_type_t type, size_t
      size,\n\t\t\t\t\tconst char *link_target)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: datasegpath
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:364,1
    - Dst: lookup_filehash_entry
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:365,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:366,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:386,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:391,1
    - Dst: datapagemap_add
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:400,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - forknum
    - rlocator
    - blkno
    argTypes:
    - ForkNumber
    - RelFileLocator
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 404
    functionName: process_target_wal_block_change
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 1
    functionsReached:
    - lookup_filehash_entry
    - pfree
    - Assert
    - pg_fatal
    - datasegpath
    - datapagemap_add
    linkageType: ''
    returnType: void
    signature: "void process_target_wal_block_change(ForkNumber forknum, RelFileLocator
      rlocator,\n\t\t\t\t\t\t\t\tBlockNumber blkno)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:419,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:420,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:428,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:430,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:438,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:441,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:444,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:456,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:458,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:461,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:464,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - path
    - is_source
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 471
    functionName: check_file_excluded
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - strstr
    - snprintf
    - strncmp
    - strlen
    - last_dir_separator
    - pg_log_debug
    linkageType: ''
    returnType: bool
    signature: bool check_file_excluded(const char *path, bool is_source)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - action
    argTypes:
    - file_action_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 473
    functionDepth: 0
    functionLinenumber: 473
    functionLinenumberEnd: 494
    functionName: action_to_str
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      action_to_str(file_action_t action)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: datapagemap_iterate
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:531,1
    - Dst: datapagemap_next
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:532,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:535,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - filemap
    argTypes:
    - filemap_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 499
    functionDepth: 2
    functionLinenumber: 499
    functionLinenumberEnd: 538
    functionName: calculate_totals
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 1
    functionsReached:
    - pg_free
    - datapagemap_iterate
    - datapagemap_next
    linkageType: ''
    returnType: void
    signature: void calculate_totals(filemap_t *filemap)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:554,1
    - Dst: action_to_str
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:555,1
    - Dst: datapagemap_print
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:558,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:561,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - filemap
    argTypes:
    - filemap_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 540
    functionDepth: 3
    functionLinenumber: 540
    functionLinenumberEnd: 562
    functionName: print_filemap
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 1
    functionsReached:
    - fflush
    - action_to_str
    - datapagemap_print
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void print_filemap(filemap_t *filemap)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:576,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:580,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:618,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:627,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:636,1
    - Dst: datasegpath
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:652,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:654,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:657,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 661
    functionName: getFileContentType
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 2
    functionsReached:
    - IsXLogFileName
    - strcmp
    - pfree
    - sscanf
    - datasegpath
    - strncmp
    linkageType: ''
    returnType: file_content_type_t
    signature: file_content_type_t getFileContentType(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: relpathperm
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:674,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:677,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:681,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rlocator
    - forknum
    - segno
    argTypes:
    - RelFileLocator
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 682
    functionName: datasegpath
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 2
    functionsReached:
    - psprintf
    - relpathperm
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      datasegpath(RelFileLocator rlocator, ForkNumber forknum, BlockNumber segno)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:706,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:708,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 709
    functionName: final_filemap_cmp
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int final_filemap_cmp(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:726,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - fname
    - last_common_segno
    - source_size
    - target_size
    argTypes:
    - char*
    - XLogSegNo
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 718
    functionDepth: 1
    functionLinenumber: 718
    functionLinenumberEnd: 743
    functionName: decide_wal_file_action
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - XLogFromFileName
    linkageType: ''
    returnType: file_action_t
    signature: "file_action_t decide_wal_file_action(const char *fname, XLogSegNo
      last_common_segno,\n\t\t\t\t\t   size_t source_size, size_t target_size)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:757,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:761,1
    - Dst: check_file_excluded
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:767,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:793,1
    - Dst: keepwal_entry_exists
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:803,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:805,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:816,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:823,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:828,1
    - Dst: pg_str_endswith
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:835,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:854,1
    - Dst: decide_wal_file_action
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:861,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:909,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:914,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 66
    argCount: 2
    argNames:
    - entry
    - last_common_segno
    argTypes:
    - file_entry_t*
    - XLogSegNo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 748
    functionDepth: 2
    functionLinenumber: 748
    functionLinenumberEnd: 915
    functionName: decide_file_action
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pg_log_debug
    - check_file_excluded
    - Assert
    - pg_str_endswith
    - strstr
    - pg_fatal
    - decide_wal_file_action
    - last_dir_separator
    - keepwal_entry_exists
    linkageType: ''
    returnType: file_action_t
    signature: file_action_t decide_file_action(file_entry_t *entry, XLogSegNo last_common_segno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: filehash_start_iterate
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:931,1
    - Dst: filehash_iterate
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:932,1
    - Dst: decide_file_action
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:934,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:941,1
    - Dst: filehash_start_iterate
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:944,1
    - Dst: filehash_iterate
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:946,1
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:951,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - last_common_segno
    argTypes:
    - XLogSegNo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 923
    functionDepth: 3
    functionLinenumber: 923
    functionLinenumberEnd: 955
    functionName: decide_file_actions
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 1
    functionsReached:
    - qsort
    - filehash_start_iterate
    - filehash_iterate
    - decide_file_action
    - pg_malloc
    linkageType: ''
    returnType: filemap_t
    signature: 'filemap_t *

      decide_file_actions(XLogSegNo last_common_segno)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:51,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:52,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:58,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:58,1
    - Dst: close_target_file
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:61,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:63,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:68,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:70,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - path
    - trunc
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 72
    functionName: open_target_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 3
    functionsReached:
    - close_target_file
    - path_is_safe_for_extraction
    - strcmp
    - pg_fatal
    - strlen
    - open
    - snprintf
    linkageType: ''
    returnType: void
    signature: void open_target_file(const char *path, bool trunc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:83,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 88
    functionName: close_target_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 3
    functionsReached:
    - close
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void close_target_file(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:98,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:103,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:104,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:114,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:120,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - buf
    - begin
    - size
    argTypes:
    - char*
    - off_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 129
    functionName: write_target_range
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 3
    functionsReached:
    - progress_report
    - lseek
    - write
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void write_target_range(char *buf, off_t begin, size_t size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:135,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:136,1
    - Dst: remove_target_dir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:141,1
    - Dst: remove_target_file
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:145,1
    - Dst: remove_target_symlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:149,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:153,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - entry
    argTypes:
    - file_entry_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 156
    functionName: remove_target
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - Assert
    - remove_target_dir
    - remove_target_symlink
    - pg_fatal
    - remove_target_file
    linkageType: ''
    returnType: void
    signature: void remove_target(file_entry_t *entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:161,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:162,1
    - Dst: create_target_dir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:167,1
    - Dst: create_target_symlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:171,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:176,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - entry
    argTypes:
    - file_entry_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 183
    functionName: create_target
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - Assert
    - create_target_symlink
    - create_target_dir
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void create_target(file_entry_t *entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:194,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:195,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:200,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:201,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:206,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - path
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 209
    functionName: remove_target_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - snprintf
    - path_is_safe_for_extraction
    - unlink
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void remove_target_file(const char *path, bool missing_ok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:217,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:218,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:223,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:225,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:227,1
    - Dst: ftruncate
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:230,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:231,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:234,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - path
    - newsize
    argTypes:
    - char*
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 235
    functionName: truncate_target_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - path_is_safe_for_extraction
    - pg_fatal
    - ftruncate
    - close
    - open
    - snprintf
    linkageType: ''
    returnType: void
    signature: void truncate_target_file(const char *path, off_t newsize)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:242,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:243,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:249,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:250,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:251,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 253
    functionName: create_target_dir
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - mkdir
    - snprintf
    - path_is_safe_for_extraction
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void create_target_dir(const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:260,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:261,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:267,1
    - Dst: rmdir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:269,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 271
    functionName: remove_target_dir
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - snprintf
    - path_is_safe_for_extraction
    - rmdir
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void remove_target_dir(const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:278,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:279,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:284,1
    - Dst: symlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:285,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - path
    - link
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 288
    functionName: create_target_symlink
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - symlink
    - snprintf
    - path_is_safe_for_extraction
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void create_target_symlink(const char *path, const char *link)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:295,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:296,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:301,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:302,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:303,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 305
    functionName: remove_target_symlink
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - snprintf
    - path_is_safe_for_extraction
    - unlink
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void remove_target_symlink(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 323
    functionName: sync_target_dir
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - sync_pgdata
    linkageType: ''
    returnType: void
    signature: void sync_target_dir(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:346,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:348,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:349,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:352,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:353,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:358,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:360,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:364,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:367,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:370,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - datadir
    - path
    - filesize
    argTypes:
    - char*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 378
    functionName: slurpFile
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 3
    functionsReached:
    - pg_fatal
    - read
    - close
    - open
    - pg_malloc
    - fstat
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      slurpFile(const char *datadir, const char *path, size_t *filesize)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: recurse_dir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - datadir
    - callback
    argTypes:
    - char*
    - process_file_callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 388
    functionName: traverse_datadir
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 2
    functionsReached:
    - recurse_dir
    linkageType: ''
    returnType: void
    signature: void traverse_datadir(const char *datadir, process_file_callback_t
      callback)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:405,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:407,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:409,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:411,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:414,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:420,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:421,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:424,1
    - Dst: lstat
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:426,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:440,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:445,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:447,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:449,1
    - Dst: callback
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:450,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:451,1
    - Dst: callback
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:453,1
    - Dst: recurse_dir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:455,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:457,1
    - Dst: readlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:462,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:464,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:467,1
    - Dst: callback
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:471,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:478,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:479,1
    - Dst: recurse_dir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:480,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:485,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:488,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:489,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 3
    argNames:
    - datadir
    - parentpath
    - callback
    argTypes:
    - char*
    - char*
    - process_file_callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 491
    functionName: recurse_dir
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 2
    functionsReached:
    - callback
    - recurse_dir
    - S_ISREG
    - strcmp
    - lstat
    - readdir
    - readlink
    - pg_fatal
    - closedir
    - S_ISLNK
    - S_ISDIR
    - opendir
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void recurse_dir(const char *datadir, const char *parentpath,\n\t\t\tprocess_file_callback_t
      callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_libpq_conn
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:85,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:87,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:99,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:100,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 104
    functionName: init_libpq_source
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 1
    functionsReached:
    - pg_malloc0_object
    - initStringInfo
    - init_libpq_conn
    linkageType: ''
    returnType: rewind_source
    signature: 'rewind_source *

      init_libpq_source(PGconn *conn)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: run_simple_command
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:116,1
    - Dst: run_simple_command
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:117,1
    - Dst: run_simple_command
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:118,1
    - Dst: run_simple_command
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:119,1
    - Dst: run_simple_command
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:125,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:128,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:129,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:130,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:131,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:132,1
    - Dst: run_simple_query
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:139,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:140,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:141,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:142,1
    - Dst: PQprepare
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:145,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:151,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:152,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:153,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 155
    functionName: init_libpq_conn
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - run_simple_query
    - run_simple_command
    - pg_fatal
    - PQprepare
    - PQresultErrorMessage
    - PQresultStatus
    - pg_free
    linkageType: ''
    returnType: void
    signature: void init_libpq_conn(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:168,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:170,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:171,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:172,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:175,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:175,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:175,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:176,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:178,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:178,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - sql
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 183
    functionName: run_simple_query
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 1
    functionsReached:
    - PQclear
    - PQexec
    - pg_fatal
    - PQgetvalue
    - PQresultErrorMessage
    - pg_strdup
    - PQresultStatus
    - PQgetisnull
    - PQntuples
    - PQnfields
    linkageType: ''
    returnType: char
    signature: 'char *

      run_simple_query(PGconn *conn, const char *sql)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:195,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:197,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:198,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:199,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - sql
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 202
    functionName: run_simple_command
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 1
    functionsReached:
    - PQclear
    - PQexec
    - pg_fatal
    - PQresultErrorMessage
    - PQresultStatus
    linkageType: ''
    returnType: void
    signature: void run_simple_command(PGconn *conn, const char *sql)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: run_simple_query
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:216,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:218,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:219,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - source
    argTypes:
    - rewind_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 226
    functionName: libpq_get_current_wal_insert_lsn
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 0
    functionsReached:
    - run_simple_query
    - sscanf
    - pg_free
    - pg_fatal
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr libpq_get_current_wal_insert_lsn(rewind_source *source)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:267,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:269,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:270,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:271,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:274,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:275,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:278,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:286,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:295,1
    - Dst: atoll
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:296,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:296,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:297,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:297,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:298,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:306,1
    - Dst: callback
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:316,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:318,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - source
    - callback
    argTypes:
    - rewind_source*
    - process_file_callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 319
    functionName: libpq_traverse_files
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 0
    functionsReached:
    - atoll
    - callback
    - PQclear
    - strcmp
    - PQexec
    - is_absolute_path
    - pg_fatal
    - PQgetvalue
    - PQresultErrorMessage
    - PQresultStatus
    - PQgetisnull
    - PQntuples
    - PQnfields
    linkageType: ''
    returnType: void
    signature: void libpq_traverse_files(rewind_source *source, process_file_callback_t
      callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: open_target_file
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:347,1
    - Dst: libpq_queue_fetch_range
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:348,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - source
    - path
    - len
    argTypes:
    - rewind_source*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 349
    functionName: libpq_queue_fetch_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 0
    functionsReached:
    - libpq_queue_fetch_range
    - Max
    - open_target_file
    linkageType: ''
    returnType: void
    signature: void libpq_queue_fetch_file(rewind_source *source, const char *path,
      size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:383,1
    - Dst: process_queued_fetch_requests
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:403,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:405,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - source
    - path
    - 'off'
    - len
    argTypes:
    - rewind_source*
    - char*
    - off_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 414
    functionName: libpq_queue_fetch_range
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 1
    functionsReached:
    - Min
    - process_queued_fetch_requests
    linkageType: ''
    returnType: void
    signature: "void libpq_queue_fetch_range(rewind_source *source, const char *path,
      off_t off,\n\t\t\t\t\t\tsize_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: process_queued_fetch_requests
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - source
    argTypes:
    - rewind_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 423
    functionName: libpq_finish_fetch
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 0
    functionsReached:
    - process_queued_fetch_requests
    linkageType: ''
    returnType: void
    signature: void libpq_finish_fetch(rewind_source *source)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:435,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:442,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:443,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:444,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:446,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:447,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:448,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:455,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:456,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:457,1
    - Dst: appendArrayEscapedString
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:460,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:461,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:462,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:464,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:465,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:466,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:475,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:476,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:476,1
    - Dst: PQsetSingleRowMode
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:478,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:479,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:490,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:499,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:505,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:509,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:510,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:514,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:517,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:517,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:518,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:520,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:521,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:522,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:524,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:525,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:525,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:525,1
    - Dst: PQfformat
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:528,1
    - Dst: PQfformat
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:529,1
    - Dst: PQfformat
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:530,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:532,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:535,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:536,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:538,1
    - Dst: PQgetlength
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:541,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:542,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:545,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:545,1
    - Dst: pg_ntoh64
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:546,1
    - Dst: PQgetlength
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:547,1
    - Dst: PQgetlength
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:549,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:550,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:551,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:551,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:554,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:562,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:564,1
    - Dst: remove_target_file
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:566,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:570,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:573,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:575,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:579,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:591,1
    - Dst: open_target_file
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:593,1
    - Dst: write_target_range
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:595,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:598,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:600,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:604,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 86
    argCount: 1
    argNames:
    - src
    argTypes:
    - libpq_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 425
    functionDepth: 2
    functionLinenumber: 425
    functionLinenumberEnd: 607
    functionName: process_queued_fetch_requests
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 2
    functionsReached:
    - PQclear
    - strcmp
    - PQsetSingleRowMode
    - PQsendQueryPrepared
    - PQgetResult
    - PQgetvalue
    - pg_ntoh64
    - resetStringInfo
    - PQnfields
    - memcpy
    - PQftype
    - write_target_range
    - remove_target_file
    - PQresultStatus
    - open_target_file
    - PQntuples
    - appendStringInfoChar
    - pg_free
    - PQgetisnull
    - PQerrorMessage
    - pg_malloc
    - appendArrayEscapedString
    - appendStringInfo
    - pg_fatal
    - PQfformat
    - PQresultErrorMessage
    - PQgetlength
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void process_queued_fetch_requests(libpq_source *src)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:615,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:621,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:623,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:627,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 628
    functionName: appendArrayEscapedString
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 1
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: void
    signature: void appendArrayEscapedString(StringInfo buf, const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQexecParams
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:643,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:646,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:647,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:648,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:651,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:651,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:652,1
    - Dst: PQgetlength
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:656,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:657,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:658,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:658,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:661,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:663,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - source
    - path
    - filesize
    argTypes:
    - rewind_source*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 668
    functionName: libpq_fetch_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 0
    functionsReached:
    - PQgetlength
    - memcpy
    - PQexecParams
    - PQclear
    - pg_fatal
    - PQgetvalue
    - PQresultErrorMessage
    - PQresultStatus
    - PQgetisnull
    - PQntuples
    - pg_malloc
    - pg_log_debug
    linkageType: ''
    returnType: char
    signature: 'char *

      libpq_fetch_file(rewind_source *source, const char *path, size_t *filesize)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:678,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:679,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:680,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/libpq_source.c:681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - source
    argTypes:
    - rewind_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 684
    functionName: libpq_destroy
    functionSourceFile: /src/postgres/src/bin/pg_rewind/libpq_source.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void libpq_destroy(rewind_source *source)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:65,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:67,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:68,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:69,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:69,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:70,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:73,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:86,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:87,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:93,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:94,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:95,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:107,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:108,1
    - Dst: CreateBlockRefTableReader
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:110,1
    - Dst: BlockRefTableReaderNextRelation
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:113,1
    - Dst: dump_one_relation
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:115,1
    - Dst: DestroyBlockRefTableReader
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:117,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:118,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:121,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 122
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - BlockRefTableReaderNextRelation
    - get_progname
    - DestroyBlockRefTableReader
    - pg_logging_init
    - getopt_long
    - pg_fatal
    - memset
    - CreateBlockRefTableReader
    - close
    - open
    - pg_log_error
    - exit
    - handle_help_version_opts
    - pg_log_error_hint
    - set_pglocale_pgservice
    - dump_one_relation
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:139,1
    - Dst: palloc_array
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:145,1
    - Dst: BlockRefTableReaderGetBlocks
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:148,1
    - Dst: repalloc_array
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:161,1
    - Dst: BlockRefTableReaderGetBlocks
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:165,1
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:183,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:204,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:208,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 5
    argNames:
    - opt
    - rlocator
    - forknum
    - limit_block
    - reader
    argTypes:
    - ws_options*
    - RelFileLocator*
    - ForkNumber
    - BlockNumber
    - BlockRefTableReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 212
    functionName: dump_one_relation
    functionSourceFile: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c
    functionUses: 1
    functionsReached:
    - qsort
    - BlockRefTableReaderGetBlocks
    - palloc_array
    - printf
    - repalloc_array
    linkageType: ''
    returnType: void
    signature: "void dump_one_relation(ws_options *opt, RelFileLocator *rlocator,\n\t\t\t\t
      \ ForkNumber forknum, BlockNumber limit_block,\n\t\t\t\t  BlockRefTableReader
      *reader)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: compare_block_numbers
    functionSourceFile: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int compare_block_numbers(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:234,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:235,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:236,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - callback_arg
    - fmt
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 239
    functionName: walsummary_error_callback
    functionSourceFile: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - exit
    - pg_log_generic_v
    linkageType: ''
    returnType: void
    signature: void walsummary_error_callback(void *callback_arg, char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:250,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - callback_arg
    - data
    - length
    argTypes:
    - void*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 254
    functionName: walsummary_read_callback
    functionSourceFile: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - read
    linkageType: ''
    returnType: int
    signature: int walsummary_read_callback(void *callback_arg, void *data, int length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:266,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:266,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:267,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:267,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:268,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:268,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:269,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:269,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:270,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:270,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:271,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:271,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:272,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:272,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:273,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:273,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:275,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:275,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:276,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 277
    functionName: help
    functionSourceFile: /src/postgres/src/bin/pg_walsummary/pg_walsummary.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:73,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:73,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:74,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:74,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:75,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:75,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:76,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:76,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:77,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:77,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:78,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:78,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:79,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:79,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:80,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:80,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:82,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:82,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:83,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:83,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:84,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:84,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:85,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:85,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:86,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:86,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:87,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:87,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:88,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:88,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:89,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:89,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:90,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:90,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:91,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:91,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:93,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:93,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:94,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:94,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:95,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:95,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:96,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:96,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:97,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:97,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:98,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:98,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:99,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:99,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:100,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:100,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:101,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:101,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:102,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:102,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:103,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:103,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:104,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:104,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:105,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 106
    functionName: help
    functionSourceFile: /src/postgres/src/bin/pg_config/pg_config.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:111,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: advice
    functionSourceFile: /src/postgres/src/bin/pg_config/pg_config.c
    functionUses: 0
    functionsReached:
    - _
    - fprintf
    linkageType: ''
    returnType: void
    signature: void advice(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_config/pg_config.c:123,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - configname
    - configdata
    - configdata_len
    argTypes:
    - char*
    - ConfigData*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 126
    functionName: show_item
    functionSourceFile: /src/postgres/src/bin/pg_config/pg_config.c
    functionUses: 0
    functionsReached:
    - printf
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void show_item(const char *configname,\n\t\t  ConfigData *configdata,\n\t\t
      \ size_t configdata_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_config/pg_config.c:137,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_config/pg_config.c:137,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_config/pg_config.c:139,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_config/pg_config.c:144,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_config/pg_config.c:144,1
    - Dst: help
      Src: /src/postgres/src/bin/pg_config/pg_config.c:146,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_config/pg_config.c:147,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_config/pg_config.c:151,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:153,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:153,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_config/pg_config.c:154,1
    - Dst: get_configdata
      Src: /src/postgres/src/bin/pg_config/pg_config.c:157,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:162,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_config/pg_config.c:163,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_config/pg_config.c:171,1
    - Dst: show_item
      Src: /src/postgres/src/bin/pg_config/pg_config.c:173,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_config/pg_config.c:180,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_config/pg_config.c:180,1
    - Dst: advice
      Src: /src/postgres/src/bin/pg_config/pg_config.c:182,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_config/pg_config.c:183,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 188
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_config/pg_config.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - find_my_exec
    - get_progname
    - strcmp
    - _
    - advice
    - help
    - printf
    - get_configdata
    - show_item
    - exit
    - set_pglocale_pgservice
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:70,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:70,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:71,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:71,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:72,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:72,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:73,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:73,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:74,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:74,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:75,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:75,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:76,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:76,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:77,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:77,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:78,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:78,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:79,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:79,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:80,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:80,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:81,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:81,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:82,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:82,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:83,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:83,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:84,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:84,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:85,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:85,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:87,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:87,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:88,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 89
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 10
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:129,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:131,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:145,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:145,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:154,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:154,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:154,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - finished
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 155
    functionName: progress_report
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 7
    functionsReached:
    - _
    - Assert
    - fputc
    - isatty
    - time
    - fileno
    - fprintf
    linkageType: ''
    returnType: void
    signature: void progress_report(bool finished)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:164,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - fn
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 173
    functionName: skipfile
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool skipfile(const char *fn)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:185,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:189,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:192,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:199,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:206,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:209,1
    - Dst: PageIsNew
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:223,1
    - Dst: pg_checksum_page
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:226,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:232,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:254,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:255,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:258,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:262,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:265,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:271,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:277,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:279,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:289,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 55
    argCount: 2
    argNames:
    - fn
    - segmentno
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 290
    functionName: scan_file
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_checksum_page
    - progress_report
    - PageIsNew
    - write
    - pg_fatal
    - pg_log_info
    - close
    - open
    - pg_log_error
    - lseek
    - read
    linkageType: ''
    returnType: void
    signature: void scan_file(const char *fn, int segmentno)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:307,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:308,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:310,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:311,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:316,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:317,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:321,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:323,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:327,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:329,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:333,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:336,1
    - Dst: lstat
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:337,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:338,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:339,1
    - Dst: skipfile
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:346,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:355,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:356,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:360,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:362,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:366,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:370,1
    - Dst: scan_file
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:381,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:383,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:383,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:391,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:391,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:403,1
    - Dst: lstat
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:406,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:407,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:414,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:418,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:424,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:428,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 51
    argCount: 3
    argNames:
    - basedir
    - subdir
    - sizeonly
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 299
    functionDepth: 2
    functionLinenumber: 299
    functionLinenumberEnd: 430
    functionName: scan_directory
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - S_ISREG
    - strcmp
    - strchr
    - lstat
    - scan_directory
    - readdir
    - pg_fatal
    - scan_file
    - strncmp
    - strlen
    - S_ISLNK
    - atoi
    - closedir
    - skipfile
    - S_ISDIR
    - opendir
    - snprintf
    linkageType: ''
    returnType: int64
    signature: int64 scan_directory(const char *basedir, const char *subdir, bool
      sizeonly)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:455,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:456,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:456,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:457,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:461,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:461,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:463,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:464,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:466,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:466,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:468,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:469,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:473,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:490,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:493,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:494,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:506,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:507,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:511,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:512,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:521,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:526,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:527,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:528,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:535,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:537,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:538,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:544,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:545,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:546,1
    - Dst: GET_PG_MAJORVERSION_NUM
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:554,1
    - Dst: get_pg_version
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:554,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:557,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:558,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:560,1
    - Dst: get_controlfile
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:564,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:566,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:569,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:573,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:574,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:576,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:586,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:590,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:594,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:598,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:610,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:611,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:612,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:615,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:616,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:617,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:620,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:622,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:622,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:623,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:623,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:624,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:624,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:627,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:627,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:628,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:628,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:631,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:635,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:635,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:636,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:636,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:652,1
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:653,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:656,1
    - Dst: update_controlfile
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:657,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:660,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:660,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:662,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:662,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:664,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:664,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 135
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 432
    functionDepth: 3
    functionLinenumber: 432
    functionLinenumberEnd: 668
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - strcmp
    - pstrdup
    - update_controlfile
    - GET_PG_MAJORVERSION_NUM
    - printf
    - puts
    - pg_log_error
    - set_pglocale_pgservice
    - scan_directory
    - get_pg_version
    - _
    - progress_report
    - pg_log_error_detail
    - getenv
    - usage
    - option_parse_int
    - getopt_long
    - sync_pgdata
    - get_controlfile
    - exit
    - pg_log_info
    - pg_log_error_hint
    - parse_sync_method
    - pg_logging_init
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:35,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:35,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:36,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:36,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:37,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:37,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:38,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:38,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:39,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:39,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:40,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:40,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:41,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:41,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:42,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:42,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:44,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:44,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:45,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 46
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_controldata/pg_controldata.c
    functionUses: 11
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(const char *progname)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:55,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:57,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:59,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:61,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:63,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:65,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:67,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - DBState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 70
    functionName: dbState
    functionSourceFile: /src/postgres/src/bin/pg_controldata/pg_controldata.c
    functionUses: 0
    functionsReached:
    - _
    linkageType: ''
    returnType: char
    signature: 'char *

      dbState(DBState state)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - wal_level
    argTypes:
    - WalLevel
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 85
    functionName: wal_level_str
    functionSourceFile: /src/postgres/src/bin/pg_controldata/pg_controldata.c
    functionUses: 0
    functionsReached:
    - _
    linkageType: ''
    returnType: char
    signature: 'char *

      wal_level_str(WalLevel wal_level)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:111,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:112,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:112,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:113,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:117,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:117,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:119,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:120,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:122,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:122,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:124,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:125,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:129,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:139,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:140,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:149,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:155,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:157,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:158,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:163,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:164,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:165,1
    - Dst: get_controlfile
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:169,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:172,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:174,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:179,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:180,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:187,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:189,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:189,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:193,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:194,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:207,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:210,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:212,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:212,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:215,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:218,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:220,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:220,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:234,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:235,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:239,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:239,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:242,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:245,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:245,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:247,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:247,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:249,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:249,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:251,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:251,1
    - Dst: dbState
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:252,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:253,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:253,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:255,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:255,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:256,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:257,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:257,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:258,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:259,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:259,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:261,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:261,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:263,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:263,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:265,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:265,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:266,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:266,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:267,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:267,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:268,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:269,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:270,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:270,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:272,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:272,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:274,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:274,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:276,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:276,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:278,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:278,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:280,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:280,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:282,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:282,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:284,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:284,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:286,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:286,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:288,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:288,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:290,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:290,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:292,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:292,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:294,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:294,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:295,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:296,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:296,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:297,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:298,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:298,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:300,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:300,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:301,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:302,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:302,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:303,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:304,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:304,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:305,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:305,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:306,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:306,1
    - Dst: wal_level_str
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:307,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:308,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:308,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:309,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:309,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:310,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:310,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:312,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:312,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:314,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:314,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:316,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:316,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:318,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:318,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:320,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:320,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:321,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:321,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:322,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:322,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:325,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:325,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:327,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:327,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:329,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:329,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:331,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:331,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:333,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:333,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:335,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:335,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:337,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:337,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:339,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:339,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:341,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:341,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:344,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:344,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:345,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:346,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:346,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:347,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:347,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:348,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:348,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:350,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:350,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:351,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:351,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:352,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:352,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 125
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 355
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_controldata/pg_controldata.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - strcmp
    - localtime
    - wal_level_str
    - pg_log_warning
    - printf
    - puts
    - pg_log_error
    - set_pglocale_pgservice
    - XLByteToSeg
    - LSN_FORMAT_ARGS
    - _
    - XidFromFullTransactionId
    - getenv
    - XLogFileName
    - usage
    - getopt_long
    - EpochFromFullTransactionId
    - strftime
    - dbState
    - get_controlfile
    - pg_log_warning_detail
    - exit
    - pg_log_error_hint
    - pg_logging_init
    - ngettext
    - IsValidWalSegSize
    - strcpy
    - snprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 66
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:150,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:151,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:151,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:152,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:156,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:156,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:158,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:159,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:161,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:161,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:163,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:164,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:169,1
    - Dst: strtouint32_strict
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:187,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:192,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:193,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:194,1
    - Dst: strtouint32_strict
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:201,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:204,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:205,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:206,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:208,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:209,1
    - Dst: strtouint32_strict
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:215,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:218,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:219,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:220,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:222,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:223,1
    - Dst: strtouint32_strict
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:229,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:232,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:233,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:234,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:236,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:239,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:240,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:241,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:246,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:250,1
    - Dst: strtouint32_strict
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:256,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:259,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:260,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:261,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:264,1
    - Dst: strtouint32_strict
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:270,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:273,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:274,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:275,1
    - Dst: strtouint32_strict
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:278,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:281,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:282,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:283,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:291,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:293,1
    - Dst: strtouint64_strict
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:299,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:302,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:303,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:304,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:310,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:312,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:313,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:314,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:321,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:328,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:329,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:331,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:332,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:341,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:343,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:347,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:348,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:349,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:357,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:358,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:368,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:370,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:371,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:376,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:377,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:378,1
    - Dst: geteuid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:388,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:390,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:391,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:393,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:397,1
    - Dst: GetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:400,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:401,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:404,1
    - Dst: chdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:406,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:407,1
    - Dst: CheckDataVersion
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:411,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:417,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:420,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:425,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:426,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:427,1
    - Dst: read_controlfile
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:433,1
    - Dst: GuessControlValues
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:434,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:445,1
    - Dst: FindEndOfXLOG
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:450,1
    - Dst: PrintControlValues
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:457,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:465,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:466,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:476,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:476,1
    - Dst: PrintNewControlValues
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:518,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:519,1
    - Dst: PrintNewControlValues
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:528,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:529,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:530,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:531,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:539,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:540,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:541,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:542,1
    - Dst: RewriteControlFile
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:548,1
    - Dst: KillExistingXLOG
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:549,1
    - Dst: KillExistingArchiveStatus
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:550,1
    - Dst: KillExistingWALSummaries
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:551,1
    - Dst: WriteEmptyXLOG
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:552,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:554,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:554,1
    CyclomaticComplexity: 93
    EdgeCount: 93
    ICount: 254
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 556
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - KillExistingXLOG
    - get_progname
    - strcmp
    - WriteEmptyXLOG
    - strtouint32_strict
    - FullTransactionIdFromEpochAndXid
    - printf
    - XLogFromFileName
    - puts
    - strtouint64_strict
    - pg_log_error
    - set_pglocale_pgservice
    - PrintControlValues
    - _
    - RewriteControlFile
    - pg_log_error_detail
    - XidFromFullTransactionId
    - strspn
    - usage
    - strtoul
    - GetDataDirectoryCreatePerm
    - option_parse_int
    - chdir
    - getopt_long
    - GuessControlValues
    - FindEndOfXLOG
    - get_restricted_token
    - EpochFromFullTransactionId
    - CheckDataVersion
    - open
    - exit
    - read_controlfile
    - pg_log_error_hint
    - KillExistingWALSummaries
    - pg_strdup
    - geteuid
    - pg_strcasecmp
    - KillExistingArchiveStatus
    - pg_logging_init
    - pg_fatal
    - TransactionIdIsNormal
    - IsValidWalSegSize
    - PrintNewControlValues
    - umask
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_pg_version
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:575,1
    - Dst: GET_PG_MAJORVERSION_NUM
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:577,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:579,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:580,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 586
    functionName: CheckDataVersion
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - get_pg_version
    - pg_log_error_detail
    - GET_PG_MAJORVERSION_NUM
    - pg_log_error
    - exit
    linkageType: ''
    returnType: void
    signature: void CheckDataVersion(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:603,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:610,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:613,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:617,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:621,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:623,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:625,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:626,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:632,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:633,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:636,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:638,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:641,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:645,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:648,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:650,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:650,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:661,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 663
    functionName: read_controlfile
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - memcpy
    - FIN_CRC32C
    - EQ_CRC32C
    - COMP_CRC32C
    - pg_fatal
    - INIT_CRC32C
    - IsValidWalSegSize
    - ngettext
    - pg_log_warning
    - close
    - open
    - pg_log_error
    - exit
    - pg_malloc
    - pg_log_error_hint
    - read
    linkageType: ''
    returnType: bool
    signature: bool read_controlfile(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:679,1
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:688,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:691,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:700,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:708,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 744
    functionName: GuessControlValues
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - getpid
    - gettimeofday
    - FullTransactionIdFromEpochAndXid
    - memset
    - time
    linkageType: ''
    returnType: void
    signature: void GuessControlValues(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:757,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:757,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:759,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:759,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:761,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:761,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:763,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:763,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:765,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:765,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:767,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:767,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:769,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:769,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:770,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:770,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:771,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:771,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:772,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:773,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:774,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:774,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:776,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:776,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:778,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:778,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:780,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:780,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:782,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:782,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:784,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:784,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:786,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:786,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:788,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:788,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:790,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:790,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:792,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:792,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:794,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:794,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:797,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:797,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:799,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:799,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:801,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:801,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:803,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:803,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:805,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:805,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:807,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:807,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:809,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:809,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:811,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:811,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:813,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:813,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:816,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:816,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:817,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:818,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:818,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:819,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:819,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:820,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:820,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:822,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:822,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:823,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:823,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 34
    argCount: 1
    argNames:
    - guessed
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 824
    functionName: PrintControlValues
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - EpochFromFullTransactionId
    - XidFromFullTransactionId
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void PrintControlValues(bool guessed)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:836,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:836,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:838,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:840,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:840,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:844,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:844,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:846,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:846,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:848,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:848,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:854,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:854,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:860,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:860,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:866,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:866,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:867,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:872,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:872,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:874,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:874,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:880,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:880,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:881,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:886,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:886,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:888,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:888,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:894,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:894,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 897
    functionName: PrintNewControlValues
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - _
    - EpochFromFullTransactionId
    - XidFromFullTransactionId
    - printf
    - XLogFileName
    linkageType: ''
    returnType: void
    signature: void PrintNewControlValues(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:910,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:912,1
    - Dst: update_controlfile
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 903
    functionDepth: 1
    functionLinenumber: 903
    functionLinenumberEnd: 938
    functionName: RewriteControlFile
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - update_controlfile
    - time
    - XLogSegNoOffsetToRecPtr
    linkageType: ''
    returnType: void
    signature: void RewriteControlFile(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:961,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:969,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:971,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:973,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:975,1
    - Dst: IsPartialXLogFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:976,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:982,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:997,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:999,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1000,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 949
    functionDepth: 1
    functionLinenumber: 949
    functionLinenumberEnd: 1009
    functionName: FindEndOfXLOG
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - IsXLogFileName
    - IsPartialXLogFileName
    - XLByteToSeg
    - readdir
    - pg_fatal
    - closedir
    - XLogFromFileName
    - opendir
    linkageType: ''
    returnType: void
    signature: void FindEndOfXLOG(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1022,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1024,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1026,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1028,1
    - Dst: IsPartialXLogFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1029,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1031,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1032,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1033,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1038,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1040,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1041,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1015
    functionDepth: 1
    functionLinenumber: 1015
    functionLinenumberEnd: 1042
    functionName: KillExistingXLOG
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - IsXLogFileName
    - unlink
    - opendir
    - readdir
    - pg_fatal
    - closedir
    - IsPartialXLogFileName
    - snprintf
    linkageType: ''
    returnType: void
    signature: void KillExistingXLOG(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1057,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1059,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1061,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1063,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1064,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1065,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1066,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1067,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1069,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1070,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1071,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1076,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1078,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1079,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1048
    functionDepth: 1
    functionLinenumber: 1048
    functionLinenumberEnd: 1082
    functionName: KillExistingArchiveStatus
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - strcmp
    - unlink
    - readdir
    - pg_fatal
    - strspn
    - closedir
    - opendir
    - snprintf
    linkageType: ''
    returnType: void
    signature: void KillExistingArchiveStatus(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1097,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1099,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1101,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1103,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1104,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1106,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1107,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1108,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1113,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1115,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1116,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1087
    functionDepth: 1
    functionLinenumber: 1087
    functionLinenumberEnd: 1120
    functionName: KillExistingWALSummaries
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - strcmp
    - unlink
    - readdir
    - pg_fatal
    - strspn
    - closedir
    - opendir
    - snprintf
    linkageType: ''
    returnType: void
    signature: void KillExistingWALSummaries(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1139,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1164,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1167,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1168,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1169,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1170,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1174,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1177,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1179,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1182,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1185,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1190,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1194,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1198,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1202,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1206,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1207,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1209,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1126
    functionDepth: 1
    functionLinenumber: 1126
    functionLinenumberEnd: 1210
    functionName: WriteEmptyXLOG
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - memcpy
    - unlink
    - FIN_CRC32C
    - COMP_CRC32C
    - write
    - INIT_CRC32C
    - XLogFilePath
    - pg_fatal
    - fsync
    - memset
    - close
    - open
    linkageType: ''
    returnType: void
    signature: void WriteEmptyXLOG(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1216,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1216,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1217,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1217,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1218,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1218,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1220,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1220,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1221,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1221,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1222,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1222,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1224,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1224,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1225,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1225,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1226,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1226,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1228,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1228,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1229,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1229,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1232,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1232,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1233,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1233,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1234,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1234,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1235,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1235,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1236,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1236,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1237,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1237,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1238,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1238,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1239,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1239,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1240,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1240,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1242,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1242,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1243,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1213
    functionDepth: 0
    functionLinenumber: 1213
    functionLinenumberEnd: 1244
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 13
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1257,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1266,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - s
    - endptr
    - base
    argTypes:
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1250
    functionDepth: 0
    functionLinenumber: 1250
    functionLinenumberEnd: 1286
    functionName: strtouint32_strict
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - strtoul
    - isspace
    linkageType: ''
    returnType: uint32
    signature: uint32 strtouint32_strict(const char *restrict s, char **restrict endptr,
      int base)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1298,1
    - Dst: strtou64
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1307,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - s
    - endptr
    - base
    argTypes:
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1291
    functionDepth: 1
    functionLinenumber: 1291
    functionLinenumberEnd: 1317
    functionName: strtouint64_strict
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - strtou64
    - isspace
    linkageType: ''
    returnType: uint64
    signature: uint64 strtouint64_strict(const char *restrict s, char **restrict endptr,
      int base)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wwmethod
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: clear_error
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: clear_error(wwmethod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:105,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - wwmethod
    - pathname
    - temp_suffix
    argTypes:
    - WalWriteMethod*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 114
    functionName: dir_get_file_name
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - pg_malloc0_array
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *\ndir_get_file_name(WalWriteMethod *wwmethod,\n\t\t\t\t  const
      char *pathname, const char *temp_suffix)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:134,1
    - Dst: dir_get_file_name
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:136,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:137,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:139,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:147,1
    - Dst: gzdopen
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:157,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:161,1
    - Dst: gzsetparams
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:165,1
    - Dst: gzclose
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:169,1
    - Dst: LZ4F_createCompressionContext
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:181,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:182,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:184,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:185,1
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:189,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:190,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:193,1
    - Dst: LZ4F_compressBegin
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:197,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:198,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:200,1
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:201,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:202,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:203,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:208,1
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:212,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:213,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:214,1
    - Dst: pg_pwrite_zeros
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:225,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:230,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:238,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:241,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:254,1
    - Dst: fsync_parent_path
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:255,1
    - Dst: gzclose
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:260,1
    - Dst: LZ4F_compressEnd
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:266,1
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:267,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:268,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:269,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:273,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:278,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:294,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:296,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:298,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 95
    argCount: 4
    argNames:
    - wwmethod
    - pathname
    - temp_suffix
    - pad_to_size
    argTypes:
    - WalWriteMethod*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 301
    functionName: dir_open_for_write
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - gzdopen
    - LZ4F_createCompressionContext
    - LZ4F_compressEnd
    - pg_pwrite_zeros
    - write
    - LZ4F_isError
    - lseek
    - gzclose
    - fsync_fname
    - snprintf
    - memset
    - open
    - pg_free
    - dir_get_file_name
    - pg_strdup
    - fsync_parent_path
    - LZ4F_compressBound
    - LZ4F_compressBegin
    - pg_malloc0
    - gzsetparams
    - close
    - pg_malloc0_object
    - LZ4F_freeCompressionContext
    - clear_error
    linkageType: ''
    returnType: Walfile
    signature: "Walfile *\ndir_open_for_write(WalWriteMethod *wwmethod, const char
      *pathname,\n\t\t\t\t   const char *temp_suffix, size_t pad_to_size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:309,1
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:310,1
    - Dst: gzwrite
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:316,1
    - Dst: LZ4F_compressUpdate
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:343,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:348,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:350,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:355,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:372,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 3
    argNames:
    - f
    - buf
    - count
    argTypes:
    - Walfile*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 382
    functionName: dir_write
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - Assert
    - gzwrite
    - write
    - LZ4F_compressUpdate
    - LZ4F_isError
    - clear_error
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t dir_write(Walfile *f, const void *buf, size_t count)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:393,1
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:394,1
    - Dst: gzclose
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:400,1
    - Dst: LZ4F_compressEnd
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:409,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:413,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:415,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:420,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:427,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:431,1
    - Dst: dir_get_file_name
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:445,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:447,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:449,1
    - Dst: dir_get_file_name
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:452,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:453,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:455,1
    - Dst: durable_rename
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:457,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:460,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:462,1
    - Dst: dir_get_file_name
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:473,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:475,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:477,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:478,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:489,1
    - Dst: fsync_parent_path
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:491,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:500,1
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:502,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:505,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:506,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:507,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:508,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 59
    argCount: 2
    argNames:
    - f
    - method
    argTypes:
    - Walfile*
    - WalCloseMethod
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 511
    functionName: dir_close
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - LZ4F_compressEnd
    - rename
    - fsync_parent_path
    - pg_log_error
    - unlink
    - Assert
    - gzclose
    - write
    - fsync_fname
    - snprintf
    - durable_rename
    - close
    - pg_free
    - dir_get_file_name
    - LZ4F_freeCompressionContext
    - LZ4F_isError
    - clear_error
    linkageType: ''
    returnType: int
    signature: int dir_close(Walfile *f, WalCloseMethod method)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:518,1
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:519,1
    - Dst: gzflush
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:527,1
    - Dst: LZ4F_flush
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:541,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:542,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:544,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:549,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:558,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - f
    argTypes:
    - Walfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 562
    functionName: dir_sync
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - Assert
    - LZ4F_flush
    - write
    - gzflush
    - fsync
    - LZ4F_isError
    - clear_error
    linkageType: ''
    returnType: int
    signature: int dir_sync(Walfile *f)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:571,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:574,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - wwmethod
    - pathname
    argTypes:
    - WalWriteMethod*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 581
    functionName: dir_get_file_size
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - stat
    - snprintf
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t dir_get_file_size(WalWriteMethod *wwmethod, const char *pathname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:590,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:592,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:595,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - wwmethod
    - pathname
    argTypes:
    - WalWriteMethod*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 605
    functionName: dir_existsfile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - open
    - snprintf
    - close
    - clear_error
    linkageType: ''
    returnType: bool
    signature: bool dir_existsfile(WalWriteMethod *wwmethod, const char *pathname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:610,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:620,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - wwmethod
    argTypes:
    - WalWriteMethod*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 627
    functionName: dir_finish
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - fsync_fname
    - clear_error
    linkageType: ''
    returnType: bool
    signature: bool dir_finish(WalWriteMethod *wwmethod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:634,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - wwmethod
    argTypes:
    - WalWriteMethod*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 636
    functionName: dir_free
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void dir_free(WalWriteMethod *wwmethod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:646,1
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:652,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - basedir
    - compression_algorithm
    - compression_level
    - sync
    argTypes:
    - char*
    - pg_compress_algorithm
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 639
    functionDepth: 1
    functionLinenumber: 639
    functionLinenumberEnd: 656
    functionName: CreateWalDirectoryMethod
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - pg_malloc0_object
    - pg_strdup
    - clear_error
    linkageType: ''
    returnType: WalWriteMethod
    signature: "WalWriteMethod *\nCreateWalDirectoryMethod(const char *basedir,\n\t\t\t\t\t\t
      pg_compress_algorithm compression_algorithm,\n\t\t\t\t\t\t int compression_level,
      bool sync)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: deflate
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:723,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:726,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:735,1
    - Dst: deflateReset
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:753,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:755,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 4
    argNames:
    - tar_data
    - buf
    - count
    - flush
    argTypes:
    - TarMethodData*
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 761
    functionName: tar_write_compressed_data
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - deflate
    - deflateReset
    - write
    - _
    linkageType: ''
    returnType: bool
    signature: "bool tar_write_compressed_data(TarMethodData *tar_data, const void
      *buf, size_t count,\n\t\t\t\t\t\t  bool flush)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:770,1
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:771,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:777,1
    - Dst: tar_write_compressed_data
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:790,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - f
    - buf
    - count
    argTypes:
    - Walfile*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 764
    functionDepth: 2
    functionLinenumber: 764
    functionLinenumberEnd: 801
    functionName: tar_write
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - Assert
    - write
    - tar_write_compressed_data
    - clear_error
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t tar_write(Walfile *f, const void *buf, size_t count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:810,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:813,1
    - Dst: tar_write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - f
    - bytes
    argTypes:
    - TarMethodFile*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 804
    functionDepth: 3
    functionLinenumber: 804
    functionLinenumberEnd: 822
    functionName: tar_write_padding_data
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - Min
    - tar_write
    - memset
    linkageType: ''
    returnType: bool
    signature: bool tar_write_padding_data(TarMethodFile *f, size_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:828,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - wwmethod
    - pathname
    - temp_suffix
    argTypes:
    - WalWriteMethod*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 834
    functionName: tar_get_file_name
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - pg_malloc0_array
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *\ntar_get_file_name(WalWriteMethod *wwmethod, const char *pathname,\n\t\t\t\t
      \ const char *temp_suffix)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:843,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:850,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:862,1
    - Dst: deflateInit2
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:874,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:877,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:880,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:892,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:896,1
    - Dst: tar_get_file_name
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:899,1
    - Dst: tarCreateHeader
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:902,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:902,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:904,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:905,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:907,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:911,1
    - Dst: tar_write_compressed_data
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:917,1
    - Dst: deflateParams
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:921,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:924,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:930,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:934,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:943,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:948,1
    - Dst: tar_write_compressed_data
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:957,1
    - Dst: deflateParams
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:962,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:965,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:973,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 71
    argCount: 4
    argNames:
    - wwmethod
    - pathname
    - temp_suffix
    - pad_to_size
    argTypes:
    - WalWriteMethod*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 836
    functionDepth: 2
    functionLinenumber: 836
    functionLinenumberEnd: 974
    functionName: tar_open_for_write
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    - _
    - pg_free
    - Assert
    - tarCreateHeader
    - deflateInit2
    - write
    - tar_write_compressed_data
    - tar_get_file_name
    - deflateParams
    - time
    - open
    - pg_malloc0_object
    - lseek
    - clear_error
    linkageType: ''
    returnType: Walfile
    signature: "Walfile *\ntar_open_for_write(WalWriteMethod *wwmethod, const char
      *pathname,\n\t\t\t\t   const char *temp_suffix, size_t pad_to_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - wwmethod
    - pathname
    argTypes:
    - WalWriteMethod*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1014
    functionName: tar_get_file_size
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - clear_error
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t tar_get_file_size(WalWriteMethod *wwmethod, const char *pathname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1022,1
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1023,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1035,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - f
    argTypes:
    - Walfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1016
    functionDepth: 1
    functionLinenumber: 1016
    functionLinenumberEnd: 1039
    functionName: tar_sync
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - Assert
    - fsync
    - clear_error
    linkageType: ''
    returnType: int
    signature: int tar_sync(Walfile *f)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1049,1
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1050,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1056,1
    - Dst: ftruncate
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1065,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1071,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1072,1
    - Dst: tar_write_padding_data
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1095,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1114,1
    - Dst: tar_write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1119,1
    - Dst: tar_write_compressed_data
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1128,1
    - Dst: print_tar_number
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1138,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1146,1
    - Dst: print_tar_number
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1148,1
    - Dst: tarChecksum
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1149,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1150,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1158,1
    - Dst: deflateParams
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1169,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1171,1
    - Dst: tar_write_compressed_data
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1176,1
    - Dst: deflateParams
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1181,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1184,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1192,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 64
    argCount: 2
    argNames:
    - f
    - method
    argTypes:
    - Walfile*
    - WalCloseMethod
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1041
    functionDepth: 4
    functionLinenumber: 1041
    functionLinenumberEnd: 1193
    functionName: tar_close
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - tar_write
    - strlcpy
    - _
    - Assert
    - tarChecksum
    - write
    - tar_write_compressed_data
    - tar_write_padding_data
    - ftruncate
    - deflateParams
    - print_tar_number
    - pg_free
    - lseek
    - tarPaddingBytesRequired
    - clear_error
    linkageType: ''
    returnType: int
    signature: int tar_close(Walfile *f, WalCloseMethod method)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - wwmethod
    - pathname
    argTypes:
    - WalWriteMethod*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1218
    functionDepth: 1
    functionLinenumber: 1218
    functionLinenumberEnd: 1224
    functionName: tar_existsfile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - clear_error
    linkageType: ''
    returnType: bool
    signature: bool tar_existsfile(WalWriteMethod *wwmethod, const char *pathname)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1232,1
    - Dst: tar_close
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1236,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1244,1
    - Dst: tar_write_compressed_data
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1254,1
    - Dst: deflate
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1265,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1269,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1277,1
    - Dst: deflateEnd
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1291,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1293,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1301,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 1
    argNames:
    - wwmethod
    argTypes:
    - WalWriteMethod*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1226
    functionDepth: 5
    functionLinenumber: 1226
    functionLinenumberEnd: 1302
    functionName: tar_finish
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - deflate
    - _
    - Assert
    - write
    - tar_write_compressed_data
    - tar_close
    - deflateEnd
    - clear_error
    linkageType: ''
    returnType: bool
    signature: bool tar_finish(WalWriteMethod *wwmethod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1340,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1343,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - wwmethod
    argTypes:
    - WalWriteMethod*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1335
    functionDepth: 1
    functionLinenumber: 1335
    functionLinenumberEnd: 1346
    functionName: tar_free
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void tar_free(WalWriteMethod *wwmethod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1363,1
    - Dst: clear_error
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1369,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1371,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1371,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1371,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1372,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - tarbase
    - compression_algorithm
    - compression_level
    - sync
    argTypes:
    - char*
    - pg_compress_algorithm
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1354
    functionDepth: 1
    functionLinenumber: 1354
    functionLinenumberEnd: 1380
    functionName: CreateWalTarMethod
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - pg_malloc0
    - strlen
    - sprintf
    - pg_malloc0_object
    - pg_malloc
    - clear_error
    linkageType: ''
    returnType: WalWriteMethod
    signature: "WalWriteMethod *\nCreateWalTarMethod(const char *tarbase,\n\t\t\t\t
      \  pg_compress_algorithm compression_algorithm,\n\t\t\t\t   int compression_level,
      bool sync)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_basebackup/walmethods.c:1387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - wwmethod
    argTypes:
    - WalWriteMethod*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1382
    functionDepth: 0
    functionLinenumber: 1382
    functionLinenumberEnd: 1388
    functionName: GetLastWalMethodError
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/walmethods.c
    functionUses: 0
    functionsReached:
    - strerror
    linkageType: ''
    returnType: char
    signature: 'char *

      GetLastWalMethodError(WalWriteMethod *wwmethod)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:84,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:84,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:86,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:86,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:87,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:87,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:88,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:88,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:89,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:89,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:90,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:90,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:91,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:91,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:92,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:92,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:93,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:93,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:95,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:95,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:96,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:96,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:97,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:97,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:99,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:99,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:100,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:100,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:101,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:101,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:102,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:102,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:105,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:105,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:106,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:106,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:108,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:108,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:109,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:109,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:110,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:110,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:111,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:111,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:112,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:112,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:113,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:113,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:114,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:114,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:115,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:115,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:116,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:116,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:117,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:117,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:118,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:118,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:119,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:119,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:120,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:120,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:121,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:121,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:122,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 123
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 13
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:148,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:149,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:150,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:155,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:157,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:159,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:161,1
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:170,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:170,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:172,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:173,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - conn
    - now
    - force
    - replyRequested
    argTypes:
    - PGconn*
    - TimestampTz
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 178
    functionName: sendFeedback
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - fe_sendint64
    - PQflush
    - pg_log_info
    - PQerrorMessage
    - PQputCopyData
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: bool
    signature: bool sendFeedback(PGconn *conn, TimestampTz now, bool force, bool replyRequested)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 185
    functionName: disconnect_atexit
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached:
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void disconnect_atexit(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:213,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - now
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 215
    functionName: OutputFsync
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached:
    - fsync
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void OutputFsync(TimestampTz now)
  - BBCount: 54
    BranchProfiles: []
    Callsites:
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:236,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:245,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:246,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:250,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:251,1
    - Dst: AppendQuotedIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:252,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:253,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:253,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:257,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:263,1
    - Dst: AppendQuotedIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:266,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:271,1
    - Dst: AppendQuotedLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:272,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:277,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:279,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:280,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:282,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:283,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:284,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:287,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:288,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:291,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:305,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:312,1
    - Dst: feTimestampDifferenceExceeds
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:315,1
    - Dst: OutputFsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:317,1
    - Dst: feTimestampDifferenceExceeds
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:320,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:324,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:331,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:333,1
    - Dst: OutputFsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:334,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:335,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:345,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:346,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:348,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:352,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:356,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:358,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:362,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:362,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:365,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:379,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:381,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:381,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:385,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:386,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:386,1
    - Dst: feTimestampDifference
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:410,1
    - Dst: select
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:422,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:422,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:434,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:439,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:441,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:442,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:455,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:456,1
    - Dst: fe_recvint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:474,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:475,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:483,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:488,1
    - Dst: flushAndSendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:502,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:518,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:534,1
    - Dst: fe_recvint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:539,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:541,1
    - Dst: flushAndSendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:547,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:554,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:566,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:572,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:582,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:584,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:589,1
    - Dst: flushAndSendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:592,1
    - Dst: prepareToTerminate
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:602,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:604,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:605,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:607,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:623,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:626,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:631,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:632,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:638,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:640,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:642,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:643,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:644,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:647,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:649,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:651,1
    - Dst: OutputFsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:653,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:654,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:655,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:661,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:664,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:665,1
    CyclomaticComplexity: 98
    EdgeCount: 98
    ICount: 244
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 667
    functionName: StreamLogicalLog
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached:
    - PQclear
    - feTimestampDifferenceExceeds
    - strcmp
    - S_ISREG
    - PQconsumeInput
    - GetConnection
    - OutputFsync
    - pg_log_error
    - feGetCurrentTimestamp
    - PQgetResult
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - LSN_FORMAT_ARGS
    - createPQExpBuffer
    - fileno
    - XLogRecPtrIsValid
    - write
    - PQfinish
    - FD_SET
    - PQresultStatus
    - fe_recvint64
    - fstat
    - feTimestampDifference
    - AppendQuotedIdentifier
    - isatty
    - PQgetCopyData
    - PQsocket
    - resetPQExpBuffer
    - PQfreemem
    - appendPQExpBufferChar
    - pg_log_info
    - open
    - PQerrorMessage
    - prepareToTerminate
    - AppendQuotedLiteral
    - PQexec
    - sendFeedback
    - FD_ZERO
    - PQresultErrorMessage
    - Max
    - flushAndSendFeedback
    - close
    - select
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void StreamLogicalLog(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 683
    functionName: sigexit_handler
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sigexit_handler(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 692
    functionName: sighup_handler
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sighup_handler(SIGNAL_ARGS)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:737,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:738,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:739,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:739,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:743,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:743,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:745,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:746,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:748,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:749,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:751,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:752,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:756,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:763,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:766,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:769,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:786,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:789,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:792,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:795,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:805,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:806,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:810,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:811,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:816,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:817,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:827,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:835,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:838,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:841,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:845,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:863,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:864,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:873,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:875,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:876,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:884,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:885,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:886,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:891,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:892,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:893,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:898,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:899,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:900,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:905,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:906,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:907,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:912,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:913,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:914,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:917,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:919,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:920,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:921,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:924,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:926,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:927,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:928,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:935,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:936,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:937,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:942,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:943,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:944,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:952,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:955,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:956,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:963,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:964,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:965,1
    - Dst: RunIdentifySystem
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:975,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:976,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:979,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:989,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:995,1
    - Dst: DropReplicationSlot
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:997,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:998,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1005,1
    - Dst: CreateReplicationSlot
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1007,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1010,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1015,1
    - Dst: StreamLogicalLog
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1020,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1027,1
    - Dst: OutputFsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1035,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1035,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1039,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1044,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1046,1
    CyclomaticComplexity: 69
    EdgeCount: 69
    ICount: 196
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 696
    functionDepth: 3
    functionLinenumber: 696
    functionLinenumberEnd: 1049
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - strcmp
    - strchr
    - GetConnection
    - OutputFsync
    - atexit
    - puts
    - pg_log_error
    - feGetCurrentTimestamp
    - pg_realloc_array
    - set_pglocale_pgservice
    - XLogRecPtrIsValid
    - CreateReplicationSlot
    - usage
    - RunIdentifySystem
    - option_parse_int
    - sscanf
    - getopt_long
    - StreamLogicalLog
    - pg_log_info
    - exit
    - pg_usleep
    - pg_log_error_hint
    - pg_strdup
    - pqsignal
    - pg_logging_init
    - pg_fatal
    - DropReplicationSlot
    - umask
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OutputFsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1062,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1063,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1064,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - now
    argTypes:
    - PGconn*
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1058
    functionDepth: 2
    functionLinenumber: 1058
    functionLinenumberEnd: 1068
    functionName: flushAndSendFeedback
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 1
    functionsReached:
    - feGetCurrentTimestamp
    - OutputFsync
    - sendFeedback
    linkageType: ''
    returnType: bool
    signature: bool flushAndSendFeedback(PGconn *conn, TimestampTz *now)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1096,1
    - Dst: flushAndSendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1098,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1101,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1102,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1109,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1112,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1113,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1116,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1116,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1117,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1118,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1118,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1121,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - conn
    - endpos
    - reason
    - lsn
    argTypes:
    - PGconn*
    - XLogRecPtr
    - StreamStopReason
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1074
    functionDepth: 3
    functionLinenumber: 1074
    functionLinenumberEnd: 1125
    functionName: prepareToTerminate
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - Assert
    - PQflush
    - pg_log_info
    - flushAndSendFeedback
    - PQputCopyEnd
    - feGetCurrentTimestamp
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: "void prepareToTerminate(PGconn *conn, XLogRecPtr endpos, StreamStopReason
      reason,\n\t\t\t\t   XLogRecPtr lsn)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:209,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:211,1
    - Dst: durable_rename
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:214,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:217,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:231,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:232,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:244,1
    - Dst: drop_publication
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:248,1
    - Dst: drop_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:250,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:251,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:262,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:265,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:269,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:272,1
    - Dst: stop_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:279,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 280
    functionName: cleanup_objects_atexit
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - drop_replication_slot
    - stop_standby_server
    - pg_log_warning_hint
    - drop_publication
    - pg_log_warning
    - durable_rename
    - connect_database
    - disconnect_database
    - snprintf
    linkageType: ''
    returnType: void
    signature: void cleanup_objects_atexit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:285,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:285,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:287,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:287,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:288,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:288,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:289,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:289,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:290,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:290,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:292,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:292,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:293,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:293,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:294,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:294,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:295,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:295,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:296,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:296,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:297,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:297,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:298,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:298,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:299,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:299,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:300,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:300,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:301,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:301,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:302,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:302,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:303,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:303,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:305,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:305,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:307,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:307,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:308,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:308,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:309,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:309,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:310,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:310,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:311,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:311,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:312,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:312,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:313,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 314
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 14
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:324,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:325,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:326,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - keyword
    - val
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 328
    functionName: appendConnStrItem
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendConnStrVal
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void appendConnStrItem(PQExpBuffer buf, const char *keyword, const
      char *val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfoParse
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:351,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:354,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:355,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:359,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:364,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:367,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:370,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:374,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:376,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:377,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - conninfo
    - dbname
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 380
    functionName: get_base_conninfo
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQconninfoFree
    - strcmp
    - appendConnStrItem
    - pg_strdup
    - PQfreemem
    - pg_log_error
    - destroyPQExpBuffer
    - createPQExpBuffer
    - PQconninfoParse
    linkageType: ''
    returnType: char
    signature: 'char *

      get_base_conninfo(const char *conninfo, char **dbname)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:389,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:392,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:394,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:397,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:398,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:400,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - opt
    argTypes:
    - struct CreateSubscriberOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 386
    functionDepth: 2
    functionLinenumber: 386
    functionLinenumberEnd: 405
    functionName: get_sub_conninfo
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - destroyPQExpBuffer
    - appendConnStrItem
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      get_sub_conninfo(const struct CreateSubscriberOptions *opt)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:419,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:420,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:421,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:427,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:428,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:431,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:434,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - argv0
    - progname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 441
    functionName: get_exec_path
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - find_my_exec
    - strlcpy
    - pg_log_debug
    - psprintf
    - pg_fatal
    - pg_malloc
    - find_other_exec
    linkageType: ''
    returnType: char
    signature: 'char *

      get_exec_path(const char *argv0, const char *progname)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:455,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:458,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:461,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:463,1
    - Dst: GET_PG_MAJORVERSION_NUM
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:471,1
    - Dst: get_pg_version
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:471,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:474,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:475,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:477,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - datadir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 479
    functionName: check_data_directory
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - get_pg_version
    - pg_log_error
    - pg_log_error_detail
    - stat
    - pg_fatal
    - GET_PG_MAJORVERSION_NUM
    - pg_log_info
    - exit
    linkageType: ''
    returnType: void
    signature: void check_data_directory(const char *datadir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:491,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:494,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:496,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:497,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:499,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - conninfo
    - dbname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 503
    functionName: concat_conninfo_dbname
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendConnStrItem
    - destroyPQExpBuffer
    - appendPQExpBufferStr
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      concat_conninfo_dbname(const char *conninfo, const char *dbname)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:523,1
    - Dst: concat_conninfo_dbname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:537,1
    - Dst: concat_conninfo_dbname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:551,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:559,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:563,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 3
    argNames:
    - opt
    - pub_base_conninfo
    - sub_base_conninfo
    argTypes:
    - struct CreateSubscriberOptions*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 512
    functionDepth: 3
    functionLinenumber: 512
    functionLinenumberEnd: 579
    functionName: store_pub_sub_info
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - concat_conninfo_dbname
    - pg_malloc_array
    - pg_log_debug
    linkageType: ''
    returnType: struct LogicalRepInfo
    signature: "struct LogicalRepInfo *\nstore_pub_sub_info(const struct CreateSubscriberOptions
      *opt,\n\t\t\t\t   const char *pub_base_conninfo,\n\t\t\t\t   const char *sub_base_conninfo)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectdb
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:591,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:592,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:594,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:595,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:596,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:599,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:604,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:605,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:607,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:608,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:609,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:610,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:613,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:616,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - conninfo
    - exit_on_error
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 619
    functionName: connect_database
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQconnectdb
    - PQclear
    - PQexec
    - PQfinish
    - exit
    - PQresultErrorMessage
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    - PQstatus
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      connect_database(const char *conninfo, bool exit_on_error)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:628,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:630,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - exit_on_error
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 634
    functionName: disconnect_database
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - Assert
    - exit
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void disconnect_database(PGconn *conn, bool exit_on_error)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:647,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:649,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:651,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:652,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:654,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:655,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:656,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:658,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:660,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:661,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:662,1
    - Dst: strtou64
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:665,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:665,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:667,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:669,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:670,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - conninfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 673
    functionName: get_primary_sysid
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - strtou64
    - PQclear
    - pg_log_error
    - PQexec
    - PQgetvalue
    - PQresultErrorMessage
    - connect_database
    - PQresultStatus
    - pg_log_info
    - PQntuples
    - disconnect_database
    linkageType: ''
    returnType: uint64
    signature: uint64 get_primary_sysid(const char *conninfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:687,1
    - Dst: get_controlfile
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:689,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:691,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:695,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - datadir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 680
    functionDepth: 1
    functionLinenumber: 680
    functionLinenumberEnd: 700
    functionName: get_standby_sysid
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - get_controlfile
    - pg_log_info
    - pg_free
    - pg_fatal
    linkageType: ''
    returnType: uint64
    signature: uint64 get_standby_sysid(const char *datadir)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:717,1
    - Dst: get_controlfile
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:719,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:721,1
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:728,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:731,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:734,1
    - Dst: update_controlfile
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:738,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:739,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:744,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:746,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:754,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:758,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:761,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:763,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:767,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:770,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:772,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:772,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:775,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:776,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - opt
    argTypes:
    - struct CreateSubscriberOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 777
    functionName: modify_subscriber_sysid
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - getpid
    - gettimeofday
    - pfree
    - wait_result_to_str
    - psprintf
    - pg_fatal
    - update_controlfile
    - pg_log_info
    - get_controlfile
    - system
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void modify_subscriber_sysid(const struct CreateSubscriberOptions *opt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:792,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:795,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:797,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:798,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:799,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:802,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:804,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:805,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:806,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:810,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:810,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:812,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:815,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:822,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 784
    functionDepth: 2
    functionLinenumber: 784
    functionLinenumberEnd: 825
    functionName: generate_object_name
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - strtoul
    - PQclear
    - PQexec
    - psprintf
    - pg_prng_uint32
    - PQgetvalue
    - PQresultErrorMessage
    - PQresultStatus
    - pg_log_error
    - PQntuples
    - disconnect_database
    linkageType: ''
    returnType: char
    signature: 'char *

      generate_object_name(PGconn *conn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:833,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:836,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:836,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:838,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:842,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:843,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:845,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:846,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:847,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:850,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:853,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:854,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:855,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - conn
    - pubname
    - dbname
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 830
    functionDepth: 2
    functionLinenumber: 830
    functionLinenumberEnd: 858
    functionName: find_publication
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQexec
    - PQerrorMessage
    - strlen
    - PQntuples
    - destroyPQExpBuffer
    - PQresultStatus
    - PQfreemem
    - pg_log_error
    - PQescapeLiteral
    - disconnect_database
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool find_publication(PGconn *conn, const char *pubname, const char
      *dbname)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_seed
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:871,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:871,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:871,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:878,1
    - Dst: generate_object_name
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:888,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:890,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:892,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:894,1
    - Dst: find_publication
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:896,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:899,1
    - Dst: create_publication
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:913,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:918,1
    - Dst: create_logical_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:919,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:921,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:935,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:936,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:938,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:939,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:940,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:942,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:945,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 1
    argNames:
    - dbinfo
    argTypes:
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 866
    functionDepth: 3
    functionLinenumber: 866
    functionLinenumberEnd: 949
    functionName: setup_publisher
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - getpid
    - find_publication
    - PQclear
    - pg_log_error
    - PQexec
    - create_logical_replication_slot
    - create_publication
    - PQresultErrorMessage
    - time
    - connect_database
    - PQresultStatus
    - generate_object_name
    - pg_free
    - pg_log_info
    - exit
    - disconnect_database
    - pg_prng_seed
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      setup_publisher(struct LogicalRepInfo *dbinfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:960,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:962,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:964,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:965,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:966,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:970,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:970,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:972,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 954
    functionDepth: 2
    functionLinenumber: 954
    functionLinenumberEnd: 975
    functionName: server_is_in_recovery
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - PQgetvalue
    - PQresultErrorMessage
    - PQresultStatus
    - pg_log_error
    - disconnect_database
    linkageType: ''
    returnType: bool
    signature: bool server_is_in_recovery(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:986,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:989,1
    - Dst: localtime_r
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:990,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:993,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:993,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:994,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:998,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1001,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1002,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1005,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1006,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - log_basedir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 977
    functionDepth: 1
    functionLinenumber: 977
    functionLinenumberEnd: 1007
    functionName: make_output_dirs
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - gettimeofday
    - localtime_r
    - psprintf
    - mkdir
    - pg_fatal
    - strftime
    - strlen
    - snprintf
    linkageType: ''
    returnType: void
    signature: void make_output_dirs(const char *log_basedir)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1029,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1031,1
    - Dst: server_is_in_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1037,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1039,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1040,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1054,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1063,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1065,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1066,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1067,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1070,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1070,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1071,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1071,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1072,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1072,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1073,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1073,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1074,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1074,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1075,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1075,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1076,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1076,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1078,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1080,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1081,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1082,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1083,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1084,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1085,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1087,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1090,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1092,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1094,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1100,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1102,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1109,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1111,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1118,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1119,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1121,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1129,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1131,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1132,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1136,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1139,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 54
    argCount: 1
    argNames:
    - dbinfo
    argTypes:
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1014
    functionDepth: 3
    functionLinenumber: 1014
    functionLinenumberEnd: 1140
    functionName: check_publisher
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - server_is_in_recovery
    - pg_log_warning
    - PQgetvalue
    - pg_log_error
    - pg_log_warning_hint
    - PQresultStatus
    - disconnect_database
    - connect_database
    - pg_free
    - pg_log_warning_detail
    - pg_log_info
    - exit
    - pg_log_error_hint
    - pg_strdup
    - PQexec
    - PQresultErrorMessage
    - atoi
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void check_publisher(const struct LogicalRepInfo *dbinfo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1164,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1166,1
    - Dst: server_is_in_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1169,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1171,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1172,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1185,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1193,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1195,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1196,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1197,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1200,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1200,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1201,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1201,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1202,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1202,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1203,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1203,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1204,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1204,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1206,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1208,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1209,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1211,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1213,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1215,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1219,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1221,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1228,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1230,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1237,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1239,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1245,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 1
    argNames:
    - dbinfo
    argTypes:
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1153
    functionDepth: 3
    functionLinenumber: 1153
    functionLinenumberEnd: 1246
    functionName: check_subscriber
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQclear
    - pg_log_error
    - PQexec
    - strcmp
    - pg_log_debug
    - server_is_in_recovery
    - atoi
    - PQgetvalue
    - PQresultErrorMessage
    - connect_database
    - PQresultStatus
    - pg_log_info
    - exit
    - disconnect_database
    - pg_log_error_hint
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void check_subscriber(const struct LogicalRepInfo *dbinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1257,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1261,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1263,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1263,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1269,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1271,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1273,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1275,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1278,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1282,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1285,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1287,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1289,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1290,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1291,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1294,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - conn
    - subname
    - dbname
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1254
    functionDepth: 2
    functionLinenumber: 1254
    functionLinenumberEnd: 1298
    functionName: drop_existing_subscription
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQclear
    - pg_log_error
    - PQexec
    - Assert
    - PQescapeIdentifier
    - PQresultErrorMessage
    - strlen
    - destroyPQExpBuffer
    - PQresultStatus
    - PQfreemem
    - pg_log_info
    - disconnect_database
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void drop_existing_subscription(PGconn *conn, const char *subname,
      const char *dbname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1307,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1311,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1313,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1313,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1315,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1320,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1322,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1324,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1325,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1326,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1329,1
    - Dst: drop_existing_subscription
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1330,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1330,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1333,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1334,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1303
    functionDepth: 3
    functionLinenumber: 1303
    functionLinenumberEnd: 1336
    functionName: check_and_drop_existing_subscriptions
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQexec
    - Assert
    - drop_existing_subscription
    - PQgetvalue
    - PQresultErrorMessage
    - strlen
    - PQntuples
    - destroyPQExpBuffer
    - PQresultStatus
    - PQfreemem
    - pg_log_error
    - PQescapeLiteral
    - disconnect_database
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void check_and_drop_existing_subscriptions(PGconn *conn,\n\t\t\t\t\t\t\t\t\t
      \ const struct LogicalRepInfo *dbinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1351,1
    - Dst: check_and_drop_existing_subscriptions
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1359,1
    - Dst: check_and_drop_publications
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1362,1
    - Dst: create_subscription
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1364,1
    - Dst: set_replication_progress
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1367,1
    - Dst: enable_subscription
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1370,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1372,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - dbinfo
    - consistent_lsn
    argTypes:
    - struct LogicalRepInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1343
    functionDepth: 4
    functionLinenumber: 1343
    functionLinenumberEnd: 1374
    functionName: setup_subscriber
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - enable_subscription
    - check_and_drop_existing_subscriptions
    - create_subscription
    - set_replication_progress
    - connect_database
    - check_and_drop_publications
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void setup_subscriber(struct LogicalRepInfo *dbinfo, const char *consistent_lsn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1390,1
    - Dst: GenerateRecoveryConfig
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1402,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1403,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1404,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1415,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1417,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1419,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1420,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1421,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1425,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1426,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1428,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1432,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1436,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1444,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1446,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1448,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1450,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1451,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1453,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1457,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1458,1
    - Dst: WriteRecoveryConfig
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1460,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 3
    argNames:
    - dbinfo
    - datadir
    - lsn
    argTypes:
    - struct LogicalRepInfo*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1379
    functionDepth: 2
    functionLinenumber: 1379
    functionLinenumberEnd: 1464
    functionName: setup_recovery
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - GenerateRecoveryConfig
    - fopen
    - appendPQExpBufferStr
    - pg_fatal
    - fclose
    - resetPQExpBuffer
    - snprintf
    - connect_database
    - WriteRecoveryConfig
    - disconnect_database
    - appendPQExpBuffer
    - fwrite
    - LSN_FORMAT_ARGS
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void setup_recovery(const struct LogicalRepInfo *dbinfo, const char
      *datadir, const char *lsn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1482,1
    - Dst: drop_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1485,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1486,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1490,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1492,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dbinfo
    - slotname
    argTypes:
    - struct LogicalRepInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1473
    functionDepth: 2
    functionLinenumber: 1473
    functionLinenumberEnd: 1494
    functionName: drop_primary_replication_slot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - drop_replication_slot
    - pg_log_warning_hint
    - pg_log_warning
    - connect_database
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void drop_primary_replication_slot(struct LogicalRepInfo *dbinfo, const
      char *slotname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1509,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1513,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1516,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1519,1
    - Dst: drop_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1520,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1520,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1524,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1525,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1526,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1529,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1530,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1534,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1535,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - dbinfo
    argTypes:
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1503
    functionDepth: 2
    functionLinenumber: 1503
    functionLinenumberEnd: 1537
    functionName: drop_failover_replication_slots
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQexec
    - drop_replication_slot
    - PQgetvalue
    - pg_log_warning_hint
    - PQresultErrorMessage
    - pg_log_warning
    - connect_database
    - PQresultStatus
    - PQntuples
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void drop_failover_replication_slots(struct LogicalRepInfo *dbinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1548,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1554,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1557,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1560,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1563,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1563,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1565,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1570,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1572,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1576,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1577,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1579,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1581,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1582,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1583,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1587,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1587,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1588,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1594,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1545
    functionDepth: 1
    functionLinenumber: 1545
    functionLinenumberEnd: 1597
    functionName: create_logical_replication_slot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQclear
    - pg_log_error
    - PQexec
    - Assert
    - PQgetvalue
    - PQresultErrorMessage
    - pg_strdup
    - strlen
    - destroyPQExpBuffer
    - PQresultStatus
    - PQfreemem
    - pg_log_info
    - PQescapeLiteral
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: char
    signature: 'char *

      create_logical_replication_slot(PGconn *conn, struct LogicalRepInfo *dbinfo)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1603,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1607,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1610,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1613,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1616,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1616,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1618,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1620,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1622,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1626,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1627,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1629,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1630,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1633,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1636,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - conn
    - dbinfo
    - slot_name
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1599
    functionDepth: 1
    functionLinenumber: 1599
    functionLinenumberEnd: 1637
    functionName: drop_replication_slot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 3
    functionsReached:
    - PQclear
    - pg_log_error
    - PQexec
    - Assert
    - PQresultErrorMessage
    - strlen
    - destroyPQExpBuffer
    - PQresultStatus
    - PQfreemem
    - pg_log_info
    - PQescapeLiteral
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: "void drop_replication_slot(PGconn *conn, struct LogicalRepInfo *dbinfo,\n\t\t\t\t\t
      \ const char *slot_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: WIFEXITED
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1647,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1649,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1649,1
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1651,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1654,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1655,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1656,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1658,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1659,1
    - Dst: pg_strsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1659,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1659,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1664,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1667,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1668,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - pg_ctl_cmd
    - rc
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1670
      start: 1642
    functionDepth: 1
    functionLinenumber: 1642
    functionLinenumberEnd: 1670
    functionName: pg_ctl_status
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - WIFSIGNALED
    - pg_strsignal
    - WTERMSIG
    - pg_log_error_detail
    - WEXITSTATUS
    - pg_log_error
    - exit
    - WIFEXITED
    linkageType: ''
    returnType: void
    signature: void pg_ctl_status(const char *pg_ctl_cmd, int rc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1676,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1679,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1680,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1681,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1684,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1688,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1697,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1699,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1701,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1705,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1710,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1713,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1715,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1716,1
    - Dst: pg_ctl_status
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1717,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1719,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1720,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - opt
    - restricted_access
    - restrict_logical_worker
    argTypes:
    - struct CreateSubscriberOptions*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1672
    functionDepth: 2
    functionLinenumber: 1672
    functionLinenumberEnd: 1721
    functionName: start_standby_server
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - appendShellString
    - pg_ctl_status
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - appendPQExpBufferChar
    - pg_log_info
    - system
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: "void start_standby_server(const struct CreateSubscriberOptions *opt,
      bool restricted_access,\n\t\t\t\t\t bool restrict_logical_worker)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1729,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1731,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1732,1
    - Dst: pg_ctl_status
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1733,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - datadir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1736
      start: 1723
    functionDepth: 2
    functionLinenumber: 1723
    functionLinenumberEnd: 1736
    functionName: stop_standby_server
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - pg_ctl_status
    - psprintf
    - pg_log_info
    - system
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void stop_standby_server(const char *datadir)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1754,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1756,1
    - Dst: server_is_in_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1761,1
    - Dst: stop_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1771,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1772,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1773,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1777,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1781,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1784,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1786,1
    - Dst: pg_log_info_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1787,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - conninfo
    - opt
    argTypes:
    - char*
    - struct CreateSubscriberOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1788
      start: 1747
    functionDepth: 3
    functionLinenumber: 1747
    functionLinenumberEnd: 1788
    functionName: wait_for_end_recovery
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - pg_usleep
    - pg_log_error
    - server_is_in_recovery
    - stop_standby_server
    - pg_fatal
    - connect_database
    - pg_log_info_hint
    - pg_log_info
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void wait_for_end_recovery(const char *conninfo, const struct CreateSubscriberOptions
      *opt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1796,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1801,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1803,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1803,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1804,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1804,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1807,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1811,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1812,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1814,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1815,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1816,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1819,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1828,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1829,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1830,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1833,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1834,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1837,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1840,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1843,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1846,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1850,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1851,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1853,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1854,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1855,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1857,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1863,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1864,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1865,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1866
      start: 1793
    functionDepth: 2
    functionLinenumber: 1793
    functionLinenumberEnd: 1866
    functionName: create_publication
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQclear
    - PQescapeIdentifier
    - pg_log_error
    - destroyPQExpBuffer
    - createPQExpBuffer
    - Assert
    - PQresultStatus
    - PQntuples
    - PQescapeLiteral
    - disconnect_database
    - resetPQExpBuffer
    - strlen
    - PQfreemem
    - pg_log_info
    - pg_log_error_hint
    - PQexec
    - PQresultErrorMessage
    - appendPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void create_publication(PGconn *conn, struct LogicalRepInfo *dbinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1874,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1878,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1880,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1880,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1883,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1886,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1889,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1891,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1893,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1897,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1898,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1900,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1901,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1911,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1914,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - conn
    - pubname
    - dbname
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1915
      start: 1871
    functionDepth: 1
    functionLinenumber: 1871
    functionLinenumberEnd: 1915
    functionName: drop_publication
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQclear
    - pg_log_error
    - PQexec
    - Assert
    - PQescapeIdentifier
    - PQresultErrorMessage
    - strlen
    - destroyPQExpBuffer
    - PQresultStatus
    - PQfreemem
    - pg_log_info
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void drop_publication(PGconn *conn, const char *pubname, const char
      *dbname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1931,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1935,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1939,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1940,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1942,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1943,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1944,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1945,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1949,1
    - Dst: drop_publication
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1950,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1950,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1952,1
    - Dst: drop_publication
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1959,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1964,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1967,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1971
      start: 1925
    functionDepth: 2
    functionLinenumber: 1925
    functionLinenumberEnd: 1971
    functionName: check_and_drop_publications
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQclear
    - pg_log_error
    - PQexec
    - Assert
    - drop_publication
    - PQgetvalue
    - PQresultErrorMessage
    - PQresultStatus
    - pg_log_info
    - PQntuples
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void check_and_drop_publications(PGconn *conn, struct LogicalRepInfo
      *dbinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1987,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1994,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1996,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1996,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1997,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1997,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1998,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1998,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1999,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1999,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2002,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2005,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2008,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2015,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2016,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2017,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2018,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2020,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2024,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2025,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2027,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2028,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2029,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2031,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2034,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 1984
    functionDepth: 2
    functionLinenumber: 1984
    functionLinenumberEnd: 2035
    functionName: create_subscription
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQclear
    - pg_log_error
    - PQexec
    - Assert
    - PQescapeIdentifier
    - PQresultErrorMessage
    - strlen
    - destroyPQExpBuffer
    - PQresultStatus
    - PQfreemem
    - pg_log_info
    - PQescapeLiteral
    - disconnect_database
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void create_subscription(PGconn *conn, const struct LogicalRepInfo
      *dbinfo)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2050,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2058,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2060,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2060,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2061,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2061,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2063,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2069,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2070,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2072,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2073,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2074,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2077,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2079,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2080,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2081,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2087,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2087,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2091,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2091,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2092,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2095,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2101,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2104,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2107,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2110,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2111,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2115,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2119,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2120,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2122,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2123,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2124,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2126,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2129,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2130,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2131,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2132,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2133,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 3
    argNames:
    - conn
    - dbinfo
    - lsn
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2134
      start: 2047
    functionDepth: 2
    functionLinenumber: 2047
    functionLinenumberEnd: 2134
    functionName: set_replication_progress
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQclear
    - PQgetvalue
    - pg_log_error
    - destroyPQExpBuffer
    - LSN_FORMAT_ARGS
    - createPQExpBuffer
    - Assert
    - pfree
    - PQresultStatus
    - PQntuples
    - PQescapeLiteral
    - disconnect_database
    - strtoul
    - psprintf
    - resetPQExpBuffer
    - strlen
    - PQfreemem
    - pg_log_info
    - PQexec
    - PQresultErrorMessage
    - appendPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void set_replication_progress(PGconn *conn, const struct LogicalRepInfo
      *dbinfo, const char *lsn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2145,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2149,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2151,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2151,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2154,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2157,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2160,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2162,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2166,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2167,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2169,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2170,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2171,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2174,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2177,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2142
    functionDepth: 2
    functionLinenumber: 2142
    functionLinenumberEnd: 2179
    functionName: enable_subscription
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQclear
    - pg_log_error
    - PQexec
    - Assert
    - PQescapeIdentifier
    - PQresultErrorMessage
    - strlen
    - destroyPQExpBuffer
    - PQresultStatus
    - PQfreemem
    - pg_log_info
    - disconnect_database
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void enable_subscription(PGconn *conn, const struct LogicalRepInfo
      *dbinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2195,1
    - Dst: concat_conninfo_dbname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2201,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2202,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2203,1
    - Dst: concat_conninfo_dbname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2206,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2207,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2208,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2212,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2213,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2215,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2215,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2216,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2217,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2220,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2222,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2224,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2230,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2231,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - opt
    - dbnamespecified
    argTypes:
    - struct CreateSubscriberOptions*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2186
    functionDepth: 3
    functionLinenumber: 2186
    functionLinenumberEnd: 2232
    functionName: get_publisher_databases
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - concat_conninfo_dbname
    - PQclear
    - PQexec
    - PQgetvalue
    - simple_string_list_append
    - PQresultErrorMessage
    - connect_database
    - PQresultStatus
    - pg_free
    - pg_log_error
    - PQntuples
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: "void get_publisher_databases(struct CreateSubscriberOptions *opt,\n\t\t\t\t\t\tbool
      dbnamespecified)"
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2278,1
    - Dst: pg_logging_set_level
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2279,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2280,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2281,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2281,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2285,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2285,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2287,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2288,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2290,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2291,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2293,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2294,1
    - Dst: geteuid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2319,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2321,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2322,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2324,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2328,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2330,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2339,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2341,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2345,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2348,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2349,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2352,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2353,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2359,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2362,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2365,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2366,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2369,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2375,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2378,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2381,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2384,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2388,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2390,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2394,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2397,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2399,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2403,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2406,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2407,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2409,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2413,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2414,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2434,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2436,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2437,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2444,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2446,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2447,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2453,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2454,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2455,1
    - Dst: getcwd
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2463,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2464,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2465,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2466,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2481,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2482,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2483,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2491,1
    - Dst: GetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2501,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2502,1
    - Dst: make_output_dirs
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2504,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2505,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2507,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2509,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2511,1
    - Dst: pg_logging_set_logfile
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2513,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2518,1
    - Dst: pg_log_info_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2519,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2522,1
    - Dst: get_base_conninfo
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2523,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2526,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2528,1
    - Dst: get_sub_conninfo
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2529,1
    - Dst: get_publisher_databases
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2540,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2545,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2553,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2556,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2561,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2562,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2564,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2571,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2572,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2574,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2578,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2579,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2581,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2585,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2586,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2588,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2594,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2598,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2600,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2601,1
    - Dst: get_exec_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2606,1
    - Dst: get_exec_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2607,1
    - Dst: check_data_directory
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2610,1
    - Dst: store_pub_sub_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2619,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2622,1
    - Dst: get_primary_sysid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2628,1
    - Dst: get_standby_sysid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2629,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2631,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2634,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2642,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2644,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2645,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2646,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2654,1
    - Dst: start_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2655,1
    - Dst: check_subscriber
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2658,1
    - Dst: check_publisher
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2661,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2670,1
    - Dst: stop_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2671,1
    - Dst: setup_publisher
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2674,1
    - Dst: setup_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2677,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2684,1
    - Dst: start_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2685,1
    - Dst: wait_for_end_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2688,1
    - Dst: setup_subscriber
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2696,1
    - Dst: drop_primary_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2699,1
    - Dst: drop_failover_replication_slots
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2702,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2705,1
    - Dst: stop_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2706,1
    - Dst: modify_subscriber_sysid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2709,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2713,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 240
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2716
      start: 2234
    functionDepth: 5
    functionLinenumber: 2234
    functionLinenumberEnd: 2716
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - store_pub_sub_info
    - strcmp
    - getcwd
    - fopen
    - atexit
    - puts
    - pg_log_error
    - check_data_directory
    - set_pglocale_pgservice
    - pg_log_info_detail
    - get_exec_path
    - pfree
    - get_standby_sysid
    - pg_log_error_detail
    - setup_publisher
    - atoi
    - simple_string_list_append
    - usage
    - get_primary_sysid
    - get_publisher_databases
    - GetDataDirectoryCreatePerm
    - setup_recovery
    - psprintf
    - get_base_conninfo
    - getopt_long
    - canonicalize_path
    - get_restricted_token
    - start_standby_server
    - get_sub_conninfo
    - snprintf
    - modify_subscriber_sysid
    - drop_failover_replication_slots
    - pg_log_info
    - exit
    - pg_log_error_hint
    - wait_for_end_recovery
    - setup_subscriber
    - pg_strdup
    - geteuid
    - pg_strcasecmp
    - drop_primary_replication_slot
    - pg_logging_init
    - pg_logging_set_level
    - stat
    - stop_standby_server
    - pg_fatal
    - check_publisher
    - pg_logging_increase_verbosity
    - pg_logging_set_logfile
    - check_subscriber
    - simple_string_list_member
    - make_output_dirs
    - umask
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: AppendQuotedIdentifier
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AppendQuotedIdentifier(b, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: AppendQuotedLiteral
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AppendQuotedLiteral(b, s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: disconnect_atexit
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 0
    functionsReached:
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void disconnect_atexit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:77,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:77,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:79,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:79,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:80,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:80,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:81,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:81,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:82,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:82,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:83,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:83,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:84,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:84,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:85,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:85,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:86,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:86,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:87,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:87,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:89,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:89,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:90,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:90,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:91,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:91,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:92,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:92,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:93,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:93,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:95,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:95,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:96,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:96,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:97,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:97,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:98,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:98,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:99,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:99,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:100,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:100,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:101,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:101,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:102,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:102,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:103,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:103,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:104,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:104,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:105,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:105,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:106,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:106,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:107,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 108
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 15
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:119,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:120,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:135,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:136,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:144,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:145,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:153,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:154,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:162,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:163,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:171,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:172,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 3
    argNames:
    - filename
    - ispartial
    - wal_compression_algorithm
    argTypes:
    - char*
    - bool*
    - pg_compress_algorithm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 181
    functionName: is_xlogfilename
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 0
    functionsReached:
    - strspn
    - strlen
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool is_xlogfilename(const char *filename, bool *ispartial,\n\t\t\t\tpg_compress_algorithm
      *wal_compression_algorithm)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:191,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:192,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:195,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:198,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:199,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:214,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:216,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:224,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 3
    argNames:
    - xlogpos
    - timeline
    - segment_finished
    argTypes:
    - XLogRecPtr
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 228
    functionName: stop_streaming
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 0
    functionsReached:
    - pg_log_info
    - XLogRecPtrIsValid
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: bool
    signature: bool stop_streaming(XLogRecPtr xlogpos, uint32 timeline, bool segment_finished)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:239,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:240,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - dest_folder
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 245
    functionName: get_destination_dir
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 0
    functionsReached:
    - Assert
    - opendir
    - pg_fatal
    linkageType: ''
    returnType: DIR
    signature: 'DIR *

      get_destination_dir(char *dest_folder)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:254,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:255,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - dest_dir
    - dest_folder
    argTypes:
    - DIR*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 257
    functionName: close_destination_dir
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 0
    functionsReached:
    - Assert
    - closedir
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void close_destination_dir(DIR *dest_dir, char *dest_folder)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: get_destination_dir
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:276,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:278,1
    - Dst: is_xlogfilename
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:285,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:292,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:317,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:318,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:319,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:323,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:336,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:338,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:340,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:342,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:343,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:345,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:349,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:352,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:356,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:362,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:381,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:382,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:384,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:386,1
    - Dst: LZ4F_createDecompressionContext
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:388,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:389,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:390,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:391,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:393,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:394,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:400,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:402,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:416,1
    - Dst: LZ4F_decompress
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:417,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:419,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:420,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:422,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:437,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:438,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:439,1
    - Dst: LZ4F_freeDecompressionContext
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:441,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:442,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:443,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:444,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:448,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:453,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:455,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:471,1
    - Dst: close_destination_dir
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:473,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:487,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 93
    argCount: 1
    argNames:
    - tli
    argTypes:
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 494
    functionName: FindStreamingStart
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - pg_log_warning
    - XLogFromFileName
    - pg_log_error
    - read
    - XLogSegNoOffsetToRecPtr
    - LZ4F_freeDecompressionContext
    - get_destination_dir
    - is_xlogfilename
    - close_destination_dir
    - LZ4F_isError
    - lseek
    - LZ4F_decompress
    - readdir
    - memset
    - pg_free
    - open
    - exit
    - stat
    - pg_fatal
    - pg_malloc0
    - LZ4F_createDecompressionContext
    - close
    - snprintf
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr FindStreamingStart(uint32 *tli)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:511,1
    - Dst: CheckServerVersionForStreaming
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:516,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:523,1
    - Dst: RunIdentifySystem
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:531,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:532,1
    - Dst: FindStreamingStart
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:537,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:538,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:545,1
    - Dst: GetSlotInformation
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:547,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:559,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:566,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:566,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:572,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:578,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:579,1
    - Dst: CreateWalDirectoryMethod
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:588,1
    - Dst: ReceiveXlogStream
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:596,1
    - Dst: StreamCtl::walmethod::ops::finish
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:598,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:600,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:604,1
    - Dst: StreamCtl::walmethod::ops::free
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:607,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 499
    functionDepth: 3
    functionLinenumber: 499
    functionLinenumberEnd: 608
    functionName: StreamLog
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - XLogSegmentOffset
    - ReceiveXlogStream
    - Assert
    - GetConnection
    - StreamCtl::walmethod::ops::finish
    - PQfinish
    - GetSlotInformation
    - CheckServerVersionForStreaming
    - CreateWalDirectoryMethod
    - StreamCtl::walmethod::ops::free
    - PQserverVersion
    - pg_log_info
    - exit
    - FindStreamingStart
    - LSN_FORMAT_ARGS
    - RunIdentifySystem
    linkageType: ''
    returnType: void
    signature: void StreamLog(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 620
    functionName: sigexit_handler
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sigexit_handler(SIGNAL_ARGS)
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:661,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:662,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:663,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:663,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:667,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:667,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:669,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:670,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:672,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:673,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:675,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:676,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:680,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:686,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:689,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:692,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:693,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:697,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:703,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:706,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:709,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:713,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:716,1
    - Dst: parse_compress_options
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:728,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:748,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:749,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:758,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:760,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:761,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:766,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:767,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:768,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:774,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:776,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:777,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:782,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:783,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:784,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:792,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:793,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:794,1
    - Dst: parse_compress_algorithm
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:800,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:802,1
    - Dst: parse_compress_specification
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:805,1
    - Dst: validate_compress_specification
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:807,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:809,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:816,1
    - Dst: get_destination_dir
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:823,1
    - Dst: close_destination_dir
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:825,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:831,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:834,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:835,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:842,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:843,1
    - Dst: RunIdentifySystem
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:851,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:852,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:859,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:870,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:878,1
    - Dst: DropReplicationSlot
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:880,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:881,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:882,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:889,1
    - Dst: CreateReplicationSlot
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:891,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:893,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:894,1
    - Dst: RetrieveWalSegSize
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:898,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:899,1
    - Dst: StreamLog
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:908,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:915,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:918,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:922,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c:924,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 154
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 623
    functionDepth: 4
    functionLinenumber: 623
    functionLinenumberEnd: 927
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_receivewal.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - strcmp
    - GetConnection
    - RetrieveWalSegSize
    - atexit
    - puts
    - pg_log_error
    - DropReplicationSlot
    - set_pglocale_pgservice
    - get_destination_dir
    - CreateReplicationSlot
    - close_destination_dir
    - usage
    - RunIdentifySystem
    - parse_compress_specification
    - parse_compress_options
    - option_parse_int
    - sscanf
    - validate_compress_specification
    - StreamLog
    - getopt_long
    - pg_log_info
    - exit
    - pg_usleep
    - pg_log_error_hint
    - pg_strdup
    - pqsignal
    - pg_logging_init
    - pg_fatal
    - parse_compress_algorithm
    - umask
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:59,1
    - Dst: StreamCtl*::walmethod::ops::open_for_write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:62,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:66,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:67,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:71,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:73,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - stream
    - fname
    argTypes:
    - StreamCtl*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 79
    functionName: mark_file_as_archived
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - StreamCtl*::walmethod::ops::close
    - pg_log_error
    - StreamCtl*::walmethod::ops::open_for_write
    - GetLastWalMethodError
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool mark_file_as_archived(StreamCtl *stream, const char *fname)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:98,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:99,1
    - Dst: StreamCtl*::walmethod::ops::get_file_name
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:102,1
    - Dst: StreamCtl*::walmethod::ops::existsfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:117,1
    - Dst: StreamCtl*::walmethod::ops::get_file_size
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:119,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:122,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:123,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:124,1
    - Dst: StreamCtl*::walmethod::ops::open_for_write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:130,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:133,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:134,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:135,1
    - Dst: StreamCtl*::walmethod::ops::sync
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:140,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:142,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:143,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:144,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:145,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:149,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:157,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:157,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:161,1
    - Dst: StreamCtl*::walmethod::ops::open_for_write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:169,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:175,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:176,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:177,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:181,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 2
    argNames:
    - stream
    - startpoint
    argTypes:
    - StreamCtl*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 184
    functionName: open_walfile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - StreamCtl*::walmethod::ops::sync
    - StreamCtl*::walmethod::ops::close
    - StreamCtl*::walmethod::ops::open_for_write
    - XLByteToSeg
    - GetLastWalMethodError
    - ngettext
    - StreamCtl*::walmethod::ops::get_file_name
    - exit
    - XLogFileName
    - pg_free
    - pg_log_error
    - StreamCtl*::walmethod::ops::existsfile
    - StreamCtl*::walmethod::ops::get_file_size
    linkageType: ''
    returnType: bool
    signature: bool open_walfile(StreamCtl *stream, XLogRecPtr startpoint)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:202,1
    - Dst: StreamCtl*::walmethod::ops::get_file_name
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:206,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:213,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:216,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:217,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:221,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:227,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:228,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:230,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:234,1
    - Dst: mark_file_as_archived
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:245,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - stream
    - pos
    argTypes:
    - StreamCtl*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 251
    functionName: close_walfile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - StreamCtl*::walmethod::ops::close
    - pg_log_error
    - mark_file_as_archived
    - GetLastWalMethodError
    - StreamCtl*::walmethod::ops::get_file_name
    - pg_free
    - pg_log_info
    linkageType: ''
    returnType: bool
    signature: bool close_walfile(StreamCtl *stream, XLogRecPtr pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:269,1
    - Dst: StreamCtl*::walmethod::ops::existsfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - StreamCtl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 272
    functionName: existsTimeLineHistoryFile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - StreamCtl*::walmethod::ops::existsfile
    - TLHistoryFileName
    linkageType: ''
    returnType: bool
    signature: bool existsTimeLineHistoryFile(StreamCtl *stream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:277,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:285,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:286,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:288,1
    - Dst: StreamCtl*::walmethod::ops::open_for_write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:293,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:297,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:298,1
    - Dst: StreamCtl*::walmethod::ops::write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:302,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:304,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:305,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:310,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:315,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:317,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:318,1
    - Dst: mark_file_as_archived
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:326,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - stream
    - filename
    - content
    argTypes:
    - StreamCtl*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 331
    functionName: writeTimeLineHistoryFile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - StreamCtl*::walmethod::ops::close
    - strcmp
    - TLHistoryFileName
    - StreamCtl*::walmethod::ops::open_for_write
    - mark_file_as_archived
    - GetLastWalMethodError
    - strlen
    - pg_log_error
    - StreamCtl*::walmethod::ops::write
    linkageType: ''
    returnType: bool
    signature: bool writeTimeLineHistoryFile(StreamCtl *stream, char *filename, char
      *content)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:344,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:347,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:349,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:351,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:353,1
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:358,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:358,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:360,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:361,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - conn
    - blockpos
    - now
    - replyRequested
    argTypes:
    - PGconn*
    - XLogRecPtr
    - TimestampTz
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 366
    functionName: sendFeedback
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 2
    functionsReached:
    - fe_sendint64
    - PQflush
    - pg_log_error
    - PQerrorMessage
    - PQputCopyData
    linkageType: ''
    returnType: bool
    signature: bool sendFeedback(PGconn *conn, XLogRecPtr blockpos, TimestampTz now,
      bool replyRequested)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:389,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:392,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:394,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:401,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:403,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 409
    functionName: CheckServerVersionForStreaming
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - PQserverVersion
    - pg_log_error
    - PQparameterStatus
    linkageType: ''
    returnType: bool
    signature: bool CheckServerVersionForStreaming(PGconn *conn)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: CheckServerVersionForStreaming
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:463,1
    - Dst: RunIdentifySystem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:497,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:499,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:503,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:505,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:506,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:509,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:513,1
    - Dst: existsTimeLineHistoryFile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:533,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:535,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:536,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:537,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:538,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:539,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:542,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:543,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:544,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:552,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:552,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:554,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:555,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:555,1
    - Dst: writeTimeLineHistoryFile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:559,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:560,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:561,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:563,1
    - Dst: StreamCtl*::stream_stop
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:570,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:574,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:575,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:578,1
    - Dst: AppendQuotedIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:579,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:581,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:582,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:584,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:585,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:586,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:588,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:589,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:590,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:593,1
    - Dst: HandleCopyStream
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:596,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:610,1
    - Dst: ReadEndOfStreamingResult
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:624,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:625,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:632,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:638,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:639,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:640,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:645,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:646,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:648,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:649,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:650,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:653,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:661,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:664,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:666,1
    - Dst: StreamCtl*::stream_stop
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:674,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:678,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:685,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:686,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:687,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:693,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:694,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:695,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 114
    argCount: 2
    argNames:
    - conn
    - stream
    argTypes:
    - PGconn*
    - StreamCtl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 452
    functionDepth: 2
    functionLinenumber: 452
    functionLinenumberEnd: 698
    functionName: ReceiveXlogStream
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - HandleCopyStream
    - StreamCtl*::stream_stop
    - pg_log_warning
    - PQgetvalue
    - pg_log_error
    - PQgetResult
    - destroyPQExpBuffer
    - appendPQExpBufferStr
    - createPQExpBuffer
    - PQnfields
    - LSN_FORMAT_ARGS
    - PQresultStatus
    - PQntuples
    - RunIdentifySystem
    - ReadEndOfStreamingResult
    - XLogSegmentOffset
    - AppendQuotedIdentifier
    - pg_free
    - writeTimeLineHistoryFile
    - existsTimeLineHistoryFile
    - StreamCtl*::walmethod::ops::close
    - PQexec
    - PQresultErrorMessage
    - CheckServerVersionForStreaming
    - GetLastWalMethodError
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool ReceiveXlogStream(PGconn *conn, StreamCtl *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:722,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:722,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:724,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:725,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:725,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:729,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:729,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:730,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:730,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:733,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:734,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - res
    - startpos
    - timeline
    argTypes:
    - PGresult*
    - XLogRecPtr*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 704
    functionDepth: 1
    functionLinenumber: 704
    functionLinenumberEnd: 740
    functionName: ReadEndOfStreamingResult
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - sscanf
    - atoi
    - PQgetvalue
    - pg_log_error
    - PQntuples
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: bool ReadEndOfStreamingResult(PGresult *res, XLogRecPtr *startpos,
      uint32 *timeline)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: CheckCopyStreamStop
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:769,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:772,1
    - Dst: StreamCtl*::walmethod::ops::sync
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:780,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:781,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:782,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:789,1
    - Dst: feTimestampDifferenceExceeds
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:798,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:802,1
    - Dst: CalculateCopyStreamSleeptime
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:810,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:814,1
    - Dst: CopyStreamReceive
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:817,1
    - Dst: HandleEndOfCopyStream
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:824,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:828,1
    - Dst: ProcessKeepaliveMsg
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:835,1
    - Dst: ProcessWALDataMsg
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:841,1
    - Dst: CheckCopyStreamStop
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:848,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:853,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:859,1
    - Dst: CopyStreamReceive
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:866,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:871,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 63
    argCount: 3
    argNames:
    - conn
    - stream
    - stoppos
    argTypes:
    - PGconn*
    - StreamCtl*
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 873
    functionName: HandleCopyStream
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - StreamCtl*::walmethod::ops::sync
    - ProcessKeepaliveMsg
    - feTimestampDifferenceExceeds
    - pg_log_error
    - CalculateCopyStreamSleeptime
    - CheckCopyStreamStop
    - GetLastWalMethodError
    - CopyStreamReceive
    - pg_fatal
    - sendFeedback
    - ProcessWALDataMsg
    - HandleEndOfCopyStream
    - PQfreemem
    - feGetCurrentTimestamp
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\nHandleCopyStream(PGconn *conn, StreamCtl *stream,\n\t\t\t\t
      XLogRecPtr *stoppos)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:893,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:896,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:896,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:900,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:901,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:905,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:906,1
    - Dst: select
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:918,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:924,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:927,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - conn
    - timeout_ms
    - stop_socket
    argTypes:
    - PGconn*
    - long
    - pgsocket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 883
    functionDepth: 1
    functionLinenumber: 883
    functionLinenumberEnd: 931
    functionName: CopyStreamPoll
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - FD_ISSET
    - FD_SET
    - PQsocket
    - Max
    - select
    - pg_log_error
    - PQerrorMessage
    - FD_ZERO
    linkageType: ''
    returnType: int
    signature: int CopyStreamPoll(PGconn *conn, long timeout_ms, pgsocket stop_socket)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:953,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:956,1
    - Dst: CopyStreamPoll
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:966,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:971,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:973,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:974,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:979,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:987,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:987,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - conn
    - timeout
    - stop_socket
    - buffer
    argTypes:
    - PGconn*
    - long
    - pgsocket
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 945
    functionDepth: 2
    functionLinenumber: 945
    functionLinenumberEnd: 994
    functionName: CopyStreamReceive
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - Assert
    - PQconsumeInput
    - CopyStreamPoll
    - PQgetCopyData
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: int
    signature: "int CopyStreamReceive(PGconn *conn, long timeout, pgsocket stop_socket,\n\t\t\t\t
      \ char **buffer)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1017,1
    - Dst: StreamCtl*::walmethod::ops::sync
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1035,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1036,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1037,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1041,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1042,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 6
    argNames:
    - conn
    - stream
    - copybuf
    - len
    - blockpos
    - last_status
    argTypes:
    - PGconn*
    - StreamCtl*
    - char*
    - int
    - XLogRecPtr
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1048
    functionName: ProcessKeepaliveMsg
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - StreamCtl*::walmethod::ops::sync
    - GetLastWalMethodError
    - pg_fatal
    - sendFeedback
    - feGetCurrentTimestamp
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: "bool ProcessKeepaliveMsg(PGconn *conn, StreamCtl *stream, char *copybuf,
      int len,\n\t\t\t\t\tXLogRecPtr blockpos, TimestampTz *last_status)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1080,1
    - Dst: fe_recvint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1083,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1086,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1097,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1107,1
    - Dst: open_walfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1131,1
    - Dst: StreamCtl*::walmethod::ops::write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1138,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1142,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1144,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1155,1
    - Dst: close_walfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1157,1
    - Dst: StreamCtl*::stream_stop
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1163,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1165,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1165,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1167,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1168,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 5
    argNames:
    - conn
    - stream
    - copybuf
    - len
    - blockpos
    argTypes:
    - PGconn*
    - StreamCtl*
    - char*
    - int
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1053
    functionDepth: 3
    functionLinenumber: 1053
    functionLinenumberEnd: 1179
    functionName: ProcessWALDataMsg
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - open_walfile
    - GetLastWalMethodError
    - fe_recvint64
    - StreamCtl*::stream_stop
    - PQflush
    - close_walfile
    - PQputCopyEnd
    - pg_log_error
    - PQerrorMessage
    - StreamCtl*::walmethod::ops::write
    linkageType: ''
    returnType: bool
    signature: "bool ProcessWALDataMsg(PGconn *conn, StreamCtl *stream, char *copybuf,
      int len,\n\t\t\t\t  XLogRecPtr *blockpos)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1188,1
    - Dst: close_walfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1197,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1200,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1203,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1205,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1205,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1207,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1208,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1209,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1212,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 5
    argNames:
    - conn
    - stream
    - copybuf
    - blockpos
    - stoppos
    argTypes:
    - PGconn*
    - StreamCtl*
    - char*
    - XLogRecPtr
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1184
    functionDepth: 3
    functionLinenumber: 1184
    functionLinenumberEnd: 1218
    functionName: HandleEndOfCopyStream
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - PQclear
    - pg_log_error
    - PQflush
    - PQresultStatus
    - close_walfile
    - PQputCopyEnd
    - PQgetResult
    - PQerrorMessage
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\nHandleEndOfCopyStream(PGconn *conn, StreamCtl *stream,
      char *copybuf,\n\t\t\t\t\t  XLogRecPtr blockpos, XLogRecPtr *stoppos)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: StreamCtl*::stream_stop
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1226,1
    - Dst: close_walfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1228,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1233,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1233,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1235,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1236,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - conn
    - stream
    - blockpos
    argTypes:
    - PGconn*
    - StreamCtl*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1223
    functionDepth: 3
    functionLinenumber: 1223
    functionLinenumberEnd: 1243
    functionName: CheckCopyStreamStop
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - StreamCtl*::stream_stop
    - PQflush
    - close_walfile
    - PQputCopyEnd
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: bool
    signature: bool CheckCopyStreamStop(PGconn *conn, StreamCtl *stream, XLogRecPtr
      blockpos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: feTimestampDifference
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - now
    - standby_message_timeout
    - last_status
    argTypes:
    - TimestampTz
    - int
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1248
    functionDepth: 1
    functionLinenumber: 1248
    functionLinenumberEnd: 1281
    functionName: CalculateCopyStreamSleeptime
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - feTimestampDifference
    linkageType: ''
    returnType: long
    signature: "long CalculateCopyStreamSleeptime(TimestampTz now, int standby_message_timeout,\n\t\t\t\t\t\t\t
      TimestampTz last_status)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:246,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:247,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:248,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:252,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:253,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:254,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:259,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:260,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:261,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:265,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:266,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:267,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:273,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:276,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:280,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 281
    functionName: cleanup_directories_atexit
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - pg_log_info
    - rmtree
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void cleanup_directories_atexit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 288
    functionName: disconnect_atexit
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void disconnect_atexit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 301
    functionName: sigchld_handler
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sigchld_handler(SIGNAL_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kill
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 313
    functionName: kill_bgchild_atexit
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - kill
    linkageType: ''
    returnType: void
    signature: void kill_bgchild_atexit(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:323,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:332,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:339,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:348,1
    - Dst: is_nonwindows_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:365,1
    - Dst: is_windows_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:366,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:367,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:370,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:371,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:379,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:380,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 387
    functionName: tablespace_list_append
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - is_absolute_path
    - canonicalize_path
    - pg_fatal
    - is_windows_absolute_path
    - pg_malloc0_object
    - is_nonwindows_absolute_path
    linkageType: ''
    returnType: void
    signature: void tablespace_list_append(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:393,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:393,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:395,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:395,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:396,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:396,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:397,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:397,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:398,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:398,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:399,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:399,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:400,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:400,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:402,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:402,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:404,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:404,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:406,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:406,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:408,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:408,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:410,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:410,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:411,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:411,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:413,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:413,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:414,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:414,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:416,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:416,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:417,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:417,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:418,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:418,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:420,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:420,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:421,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:421,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:422,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:422,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:423,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:423,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:424,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:424,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:425,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:425,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:426,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:426,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:427,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:427,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:428,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:428,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:430,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:430,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:432,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:432,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:433,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:433,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:434,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:434,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:435,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:435,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:437,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:437,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:439,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:439,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:440,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:440,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:441,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:441,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:442,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:442,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:443,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:443,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:444,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:444,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:446,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:446,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:447,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:447,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:448,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:448,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:449,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:449,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:450,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 451
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 16
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:477,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:478,1
    - Dst: select
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:480,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:487,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:489,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:491,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:492,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - segendpos
    - timeline
    - segment_finished
    argTypes:
    - XLogRecPtr
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 532
    functionName: reached_end_position
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - sscanf
    - pg_fatal
    - FD_SET
    - select
    - FD_ZERO
    - read
    linkageType: ''
    returnType: bool
    signature: "bool reached_end_position(XLogRecPtr segendpos, uint32 timeline,\n\t\t\t\t\t
      bool segment_finished)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CreateWalDirectoryMethod
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:569,1
    - Dst: CreateWalTarMethod
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:573,1
    - Dst: ReceiveXlogStream
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:578,1
    - Dst: StreamCtl::walmethod::ops::finish
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:595,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:597,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:604,1
    - Dst: StreamCtl::walmethod::ops::free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:606,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 1
    argNames:
    - param
    argTypes:
    - logstreamer_param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 545
    functionDepth: 3
    functionLinenumber: 545
    functionLinenumberEnd: 609
    functionName: LogStreamerMain
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - ReceiveXlogStream
    - PQfinish
    - CreateWalTarMethod
    - CreateWalDirectoryMethod
    - StreamCtl::walmethod::ops::free
    - pg_log_error
    - StreamCtl::walmethod::ops::finish
    linkageType: ''
    returnType: int
    signature: int LogStreamerMain(logstreamer_param *param)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:626,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:633,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:634,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:638,1
    - Dst: pipe
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:642,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:643,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:647,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:650,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:653,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:655,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:659,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:666,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:667,1
    - Dst: CreateReplicationSlot
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:670,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:673,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:678,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:681,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:694,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:696,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:699,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:700,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:705,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:709,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:712,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:714,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:723,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:727,1
    - Dst: LogStreamerMain
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:727,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:730,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:735,1
    - Dst: _beginthreadex
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:737,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:739,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 49
    argCount: 5
    argNames:
    - startpos
    - timeline
    - sysidentifier
    - wal_compress_algorithm
    - wal_compress_level
    argTypes:
    - char*
    - uint32
    - char*
    - pg_compress_algorithm
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 616
    functionDepth: 4
    functionLinenumber: 616
    functionLinenumberEnd: 741
    functionName: StartLogStreamer
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - pipe
    - XLogSegmentOffset
    - fork
    - sscanf
    - GetConnection
    - psprintf
    - PQbackendPID
    - _beginthreadex
    - pg_fatal
    - pg_mkdir_p
    - CreateReplicationSlot
    - pg_log_info
    - atexit
    - PQserverVersion
    - pg_malloc0_object
    - exit
    - LogStreamerMain
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void StartLogStreamer(char *startpos, uint32 timeline, char *sysidentifier,\n\t\t\t\t
      pg_compress_algorithm wal_compress_algorithm,\n\t\t\t\t int wal_compress_level)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:751,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:758,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:759,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:778,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:784,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - dirname
    - created
    - found
    argTypes:
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 748
    functionDepth: 1
    functionLinenumber: 748
    functionLinenumberEnd: 786
    functionName: verify_dir_is_empty_or_create
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - pg_mkdir_p
    - pg_fatal
    - pg_check_dir
    linkageType: ''
    returnType: void
    signature: void verify_dir_is_empty_or_create(char *dirname, bool *created, bool
      *found)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:799,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:801,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 793
    functionDepth: 1
    functionLinenumber: 793
    functionLinenumberEnd: 805
    functionName: progress_update_filename
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - pg_free
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void progress_update_filename(const char *filename)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:828,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:846,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:848,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:859,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:860,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:863,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:869,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:871,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:872,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:875,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:883,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:887,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:888,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:891,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:899,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:899,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:899,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - tablespacenum
    - force
    - finished
    argTypes:
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 900
    functionName: progress_report
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 9
    functionsReached:
    - fputc
    - isatty
    - ngettext
    - snprintf
    - time
    - strlen
    - fileno
    - fprintf
    linkageType: ''
    returnType: void
    signature: void progress_report(int tablespacenum, bool force, bool finished)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strtod
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:910,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:912,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:914,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:921,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:928,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:947,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:951,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:955,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:962,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 965
    functionName: parse_max_rate
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - strtod
    - isspace
    - pg_fatal
    linkageType: ''
    returnType: int32
    signature: int32 parse_max_rate(char *src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:994,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:999,1
    - Dst: parse_compress_options
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1008,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - option
    - algorithm
    - detail
    - locationres
    argTypes:
    - char*
    - char**
    - char**
    - CompressionLocation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1009
    functionName: backup_parse_compress_options
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - strncmp
    - parse_compress_options
    linkageType: ''
    returnType: void
    signature: "void backup_parse_compress_options(char *option, char **algorithm,
      char **detail,\n\t\t\t\t\t\t\t  CompressionLocation *locationres)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1022,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1023,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1024,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1025,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1026,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1034,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1041,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1042,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1045,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1049,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - conn
    - callback
    - callback_data
    argTypes:
    - PGconn*
    - WriteDataCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1015
    functionDepth: 1
    functionLinenumber: 1015
    functionLinenumberEnd: 1051
    functionName: ReceiveCopyData
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - PQclear
    - pg_fatal
    - PQgetCopyData
    - PQresultStatus
    - PQfreemem
    - PQgetResult
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: "void ReceiveCopyData(PGconn *conn, WriteDataCallback callback,\n\t\t\t\tvoid
      *callback_data)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1082,1
    - Dst: parse_tar_compress_algorithm
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1085,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1102,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1103,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1105,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1119,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1120,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1122,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1124,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1126,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1127,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1147,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1148,1
    - Dst: get_tablespace_mapping
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1150,1
    - Dst: astreamer_extractor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1151,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1166,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1168,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1173,1
    - Dst: astreamer_plain_writer_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1179,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1183,1
    - Dst: astreamer_gzip_writer_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1184,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1189,1
    - Dst: astreamer_plain_writer_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1190,1
    - Dst: astreamer_lz4_compressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1192,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1196,1
    - Dst: astreamer_plain_writer_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1197,1
    - Dst: astreamer_zstd_compressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1199,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1203,1
    - Dst: astreamer_tar_archiver_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1213,1
    - Dst: progress_update_filename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1214,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1231,1
    - Dst: astreamer_recovery_injector_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1232,1
    - Dst: astreamer_tar_parser_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1244,1
    - Dst: astreamer_tar_terminator_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1246,1
    - Dst: astreamer_gzip_decompressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1255,1
    - Dst: astreamer_lz4_decompressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1257,1
    - Dst: astreamer_zstd_decompressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1259,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 78
    argCount: 6
    argNames:
    - archive_name
    - spclocation
    - manifest_inject_streamer_p
    - is_recovery_guc_supported
    - expect_unterminated_tarfile
    - compress
    argTypes:
    - char*
    - char*
    - astreamer**
    - bool
    - bool
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1062
    functionDepth: 2
    functionLinenumber: 1062
    functionLinenumberEnd: 1265
    functionName: CreateBackupStreamer
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - progress_update_filename
    - strcmp
    - is_absolute_path
    - get_tablespace_mapping
    - astreamer_zstd_compressor_new
    - astreamer_lz4_decompressor_new
    - astreamer_gzip_decompressor_new
    - pg_log_error
    - astreamer_plain_writer_new
    - astreamer_tar_terminator_new
    - astreamer_recovery_injector_new
    - Assert
    - pg_log_error_detail
    - astreamer_zstd_decompressor_new
    - astreamer_extractor_new
    - astreamer_tar_parser_new
    - psprintf
    - astreamer_gzip_writer_new
    - astreamer_lz4_compressor_new
    - exit
    - pg_log_error_hint
    - strlcat
    - astreamer_tar_archiver_new
    - parse_tar_compress_algorithm
    - snprintf
    linkageType: ''
    returnType: astreamer
    signature: "astreamer *\nCreateBackupStreamer(char *archive_name, char *spclocation,\n\t\t\t\t\t
      astreamer **manifest_inject_streamer_p,\n\t\t\t\t\t bool is_recovery_guc_supported,\n\t\t\t\t\t
      bool expect_unterminated_tarfile,\n\t\t\t\t\t pg_compress_specification *compress)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1277,1
    - Dst: ReceiveCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1282,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1287,1
    - Dst: astreamer_inject_file
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1298,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1302,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1309,1
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1310,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - compress
    argTypes:
    - PGconn*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1271
    functionDepth: 2
    functionLinenumber: 1271
    functionLinenumberEnd: 1313
    functionName: ReceiveArchiveStream
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - fclose
    - ReceiveCopyData
    - astreamer_finalize
    - memset
    - astreamer_inject_file
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void ReceiveArchiveStream(PGconn *conn, pg_compress_specification *compress)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: GetCopyDataByte
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1326,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1340,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1345,1
    - Dst: GetCopyDataString
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1348,1
    - Dst: GetCopyDataString
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1349,1
    - Dst: GetCopyDataEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1350,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1358,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1359,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1360,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1374,1
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1375,1
    - Dst: CreateBackupStreamer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1391,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1406,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1412,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1421,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1428,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1432,1
    - Dst: GetCopyDataUInt64
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1444,1
    - Dst: GetCopyDataEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1445,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1451,1
    - Dst: GetCopyDataEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1461,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1476,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1479,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1483,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1485,1
    - Dst: ReportCopyDataParseError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1493,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 64
    argCount: 3
    argNames:
    - r
    - copybuf
    - callback_data
    argTypes:
    - size_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1319
    functionDepth: 3
    functionLinenumber: 1319
    functionLinenumberEnd: 1496
    functionName: ReceiveArchiveStreamChunk
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - astreamer_content
    - GetCopyDataString
    - strchr
    - progress_report
    - GetCopyDataUInt64
    - fopen
    - pg_fatal
    - astreamer_finalize
    - ReportCopyDataParseError
    - CreateBackupStreamer
    - GetCopyDataEnd
    - fwrite
    - appendPQExpBuffer
    - GetCopyDataByte
    - createPQExpBuffer
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ReceiveArchiveStreamChunk(size_t r, char *copybuf, void *callback_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReportCopyDataParseError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - r
    - copybuf
    - cursor
    argTypes:
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1503
    functionDepth: 1
    functionLinenumber: 1503
    functionLinenumberEnd: 1510
    functionName: GetCopyDataByte
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 1
    functionsReached:
    - ReportCopyDataParseError
    linkageType: ''
    returnType: char
    signature: char GetCopyDataByte(size_t r, char *copybuf, size_t *cursor)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReportCopyDataParseError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - r
    - copybuf
    - cursor
    argTypes:
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1517
    functionDepth: 1
    functionLinenumber: 1517
    functionLinenumberEnd: 1534
    functionName: GetCopyDataString
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 1
    functionsReached:
    - ReportCopyDataParseError
    linkageType: ''
    returnType: char
    signature: 'char *

      GetCopyDataString(size_t r, char *copybuf, size_t *cursor)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReportCopyDataParseError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1547,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1548,1
    - Dst: pg_ntoh64
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - r
    - copybuf
    - cursor
    argTypes:
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1541
    functionDepth: 1
    functionLinenumber: 1541
    functionLinenumberEnd: 1551
    functionName: GetCopyDataUInt64
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 1
    functionsReached:
    - pg_ntoh64
    - memcpy
    - ReportCopyDataParseError
    linkageType: ''
    returnType: uint64
    signature: uint64 GetCopyDataUInt64(size_t r, char *copybuf, size_t *cursor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReportCopyDataParseError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - r
    - copybuf
    - cursor
    argTypes:
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1556
    functionDepth: 1
    functionLinenumber: 1556
    functionLinenumberEnd: 1561
    functionName: GetCopyDataEnd
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 1
    functionsReached:
    - ReportCopyDataParseError
    linkageType: ''
    returnType: void
    signature: void GetCopyDataEnd(size_t r, char *copybuf, size_t cursor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1575,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - r
    - copybuf
    argTypes:
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1571
    functionDepth: 0
    functionLinenumber: 1571
    functionLinenumberEnd: 1579
    functionName: ReportCopyDataParseError
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 5
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void ReportCopyDataParseError(size_t r, char *copybuf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1596,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1598,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1600,1
    - Dst: CreateBackupStreamer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1601,1
    - Dst: ReceiveCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1607,1
    - Dst: progress_update_filename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1608,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1621,1
    - Dst: ReceiveBackupManifestInMemory
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1622,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1623,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1624,1
    - Dst: astreamer_inject_file
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1627,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1631,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1635,1
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1636,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 5
    argNames:
    - conn
    - archive_name
    - spclocation
    - tablespacenum
    - compress
    argTypes:
    - PGconn*
    - char*
    - char*
    - bool
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1586
    functionDepth: 3
    functionLinenumber: 1586
    functionLinenumberEnd: 1644
    functionName: ReceiveTarFile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - progress_update_filename
    - progress_report
    - ReceiveCopyData
    - pg_fatal
    - astreamer_finalize
    - CreateBackupStreamer
    - memset
    - initPQExpBuffer
    - ReceiveBackupManifestInMemory
    - PQserverVersion
    - termPQExpBuffer
    - PQExpBufferDataBroken
    - astreamer_inject_file
    linkageType: ''
    returnType: void
    signature: "void ReceiveTarFile(PGconn *conn, char *archive_name, char *spclocation,\n\t\t\t
      \  bool tablespacenum, pg_compress_specification *compress)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1654,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1657,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - r
    - copybuf
    - callback_data
    argTypes:
    - size_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1658
      start: 1649
    functionDepth: 1
    functionLinenumber: 1649
    functionLinenumberEnd: 1658
    functionName: ReceiveTarCopyChunk
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - progress_report
    - astreamer_content
    linkageType: ''
    returnType: void
    signature: void ReceiveTarCopyChunk(size_t r, char *copybuf, void *callback_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1672,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1673,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1665
    functionDepth: 1
    functionLinenumber: 1665
    functionLinenumberEnd: 1680
    functionName: get_tablespace_mapping
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - canonicalize_path
    - strcmp
    linkageType: ''
    returnType: char
    signature: 'char *

      get_tablespace_mapping(const char *dir)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1690,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1692,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1694,1
    - Dst: ReceiveCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1696,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1685
    functionDepth: 2
    functionLinenumber: 1685
    functionLinenumberEnd: 1699
    functionName: ReceiveBackupManifest
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - fopen
    - fclose
    - ReceiveCopyData
    - pg_fatal
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ReceiveBackupManifest(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1710,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1715,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - r
    - copybuf
    - callback_data
    argTypes:
    - size_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1704
    functionDepth: 0
    functionLinenumber: 1704
    functionLinenumberEnd: 1717
    functionName: ReceiveBackupManifestChunk
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - fwrite
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void ReceiveBackupManifestChunk(size_t r, char *copybuf, void *callback_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReceiveCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - buf
    argTypes:
    - PGconn*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1726
      start: 1722
    functionDepth: 2
    functionLinenumber: 1722
    functionLinenumberEnd: 1726
    functionName: ReceiveBackupManifestInMemory
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 1
    functionsReached:
    - ReceiveCopyData
    linkageType: ''
    returnType: void
    signature: void ReceiveBackupManifestInMemory(PGconn *conn, PQExpBuffer buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - r
    - copybuf
    - callback_data
    argTypes:
    - size_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1731
    functionDepth: 1
    functionLinenumber: 1731
    functionLinenumberEnd: 1738
    functionName: ReceiveBackupManifestInMemoryChunk
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void ReceiveBackupManifestInMemoryChunk(size_t r, char *copybuf,\n\t\t\t\t\t\t\t\t
      \  void *callback_data)"
  - BBCount: 85
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1762,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1763,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1771,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1775,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1777,1
    - Dst: CheckServerVersionForStreaming
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1787,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1793,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1794,1
    - Dst: GenerateRecoveryConfig
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1807,1
    - Dst: GetDbnameFromConnectionOptions
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1809,1
    - Dst: RunIdentifySystem
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1814,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1815,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1829,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1832,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1834,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1837,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1838,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1839,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1840,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1841,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1843,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1844,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1845,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1847,1
    - Dst: PQresStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1848,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1848,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1852,1
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1854,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1855,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1856,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1861,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1864,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1865,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1866,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1869,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1870,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1871,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1872,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1873,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1874,1
    - Dst: PQresStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1875,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1875,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1878,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1880,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1883,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1889,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1891,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1893,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1897,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1900,1
    - Dst: AppendIntegerCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1905,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1907,1
    - Dst: AppendIntegerCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1910,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1913,1
    - Dst: AppendIntegerCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1917,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1920,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1926,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1929,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1938,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1941,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1943,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1945,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1947,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1954,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1955,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1957,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1962,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1968,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1969,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1972,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1978,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1982,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1982,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1983,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1983,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1984,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1986,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1990,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1992,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1995,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1996,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1997,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2002,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2003,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2004,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2005,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2006,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2007,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2008,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2008,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2010,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2010,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2013,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2020,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2021,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2021,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2024,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2027,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2033,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2034,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2035,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2036,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2037,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2038,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2044,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2045,1
    - Dst: atoll
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2047,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2047,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2059,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2061,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2063,1
    - Dst: unconstify
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2064,1
    - Dst: get_tablespace_mapping
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2064,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2068,1
    - Dst: verify_dir_is_empty_or_create
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2071,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2079,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2080,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2081,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2082,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2094,1
    - Dst: StartLogStreamer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2107,1
    - Dst: ReceiveArchiveStream
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2115,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2120,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2133,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2135,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2140,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2141,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2142,1
    - Dst: ReceiveTarFile
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2145,1
    - Dst: ReceiveBackupManifest
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2161,1
    - Dst: progress_update_filename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2166,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2167,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2167,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2170,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2175,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2176,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2177,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2178,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2179,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2180,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2181,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2181,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2183,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2184,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2186,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2187,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2189,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2192,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2194,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2199,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2200,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2202,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2223,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2226,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2226,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2226,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2227,1
    - Dst: waitpid
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2230,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2232,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2234,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2236,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2236,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2245,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2246,1
    - Dst: InterlockedIncrement
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2249,1
    - Dst: WaitForSingleObjectEx
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2252,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2255,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2255,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2256,1
    - Dst: GetExitCodeThread
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2258,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2260,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2260,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2261,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2264,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2271,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2276,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2277,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2293,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2296,1
    - Dst: sync_dir_recurse
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2297,1
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2301,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2318,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2320,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2321,1
    - Dst: durable_rename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2326,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2327,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2331,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2332,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2338,1
    CyclomaticComplexity: 103
    EdgeCount: 103
    ICount: 259
    argCount: 5
    argNames:
    - compression_algorithm
    - compression_detail
    - compressloc
    - client_compress
    - incremental_manifest
    argTypes:
    - char*
    - char*
    - CompressionLocation
    - pg_compress_specification*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2339
      start: 1740
    functionDepth: 5
    functionLinenumber: 1740
    functionLinenumberEnd: 2339
    functionName: BaseBackup
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - atoll
    - GenerateRecoveryConfig
    - progress_update_filename
    - WaitForSingleObjectEx
    - PQclear
    - is_absolute_path
    - strchr
    - get_tablespace_mapping
    - strcmp
    - ReceiveArchiveStream
    - GetLastError
    - ReceiveBackupManifest
    - durable_rename
    - PQgetvalue
    - PQgetResult
    - pg_log_error
    - PQputCopyData
    - destroyPQExpBuffer
    - sync_dir_recurse
    - read
    - fprintf
    - PQresStatus
    - fileno
    - PQnfields
    - strlcpy
    - verify_dir_is_empty_or_create
    - _
    - rename
    - Assert
    - progress_report
    - InterlockedIncrement
    - AppendIntegerCommandOption
    - write
    - PQfinish
    - _dosmaperr
    - PQresultStatus
    - PQputCopyEnd
    - PQntuples
    - AppendStringCommandOption
    - RunIdentifySystem
    - waitpid
    - wait_result_to_str
    - psprintf
    - PQresultErrorField
    - sscanf
    - isatty
    - PQsendQuery
    - StartLogStreamer
    - pnstrdup
    - strlen
    - sync_pgdata
    - open
    - PQserverVersion
    - PQerrorMessage
    - exit
    - pg_log_error_hint
    - pg_log_info
    - PQgetisnull
    - ReceiveTarFile
    - AppendPlainCommandOption
    - PQparameterStatus
    - unconstify
    - pg_fatal
    - CheckServerVersionForStreaming
    - initPQExpBuffer
    - GetDbnameFromConnectionOptions
    - atoi
    - GetExitCodeThread
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void BaseBackup(char *compression_algorithm, char *compression_detail,\n\t\t
      \  CompressionLocation compressloc,\n\t\t   pg_compress_specification *client_compress,\n\t\t
      \  char *incremental_manifest)"
  - BBCount: 81
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2392,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2393,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2394,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2394,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2398,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2398,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2400,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2401,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2403,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2404,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2406,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2407,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2411,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2413,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2419,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2421,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2424,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2431,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2434,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2437,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2437,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2439,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2439,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2442,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2446,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2449,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2452,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2461,1
    - Dst: parse_max_rate
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2467,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2473,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2476,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2485,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2489,1
    - Dst: tablespace_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2492,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2495,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2507,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2508,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2512,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2513,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2517,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2518,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2523,1
    - Dst: backup_parse_compress_options
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2532,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2536,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2554,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2557,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2558,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2562,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2563,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2572,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2574,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2575,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2583,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2585,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2595,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2596,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2597,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2607,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2608,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2609,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2613,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2614,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2615,1
    - Dst: parse_compress_algorithm
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2642,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2643,1
    - Dst: parse_compress_specification
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2646,1
    - Dst: validate_compress_specification
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2647,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2649,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2654,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2665,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2666,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2667,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2676,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2677,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2678,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2686,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2687,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2688,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2690,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2692,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2693,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2694,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2699,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2700,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2701,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2711,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2712,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2713,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2722,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2724,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2725,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2730,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2732,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2733,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2744,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2745,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2746,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2750,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2751,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2752,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2756,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2757,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2759,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2760,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2761,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2770,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2772,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2773,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2781,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2783,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2784,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2789,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2791,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2792,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2796,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2800,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2802,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2814,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2825,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2828,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2836,1
    - Dst: verify_dir_is_empty_or_create
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2837,1
    - Dst: RetrieveWalSegSize
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2840,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2841,1
    - Dst: verify_dir_is_empty_or_create
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2848,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2854,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2855,1
    - Dst: symlink
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2858,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2859,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2860,1
    - Dst: BaseBackup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2863,1
    CyclomaticComplexity: 104
    EdgeCount: 104
    ICount: 288
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2868
      start: 2342
    functionDepth: 6
    functionLinenumber: 2342
    functionLinenumberEnd: 2868
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - BaseBackup
    - get_progname
    - strcmp
    - is_absolute_path
    - GetConnection
    - RetrieveWalSegSize
    - atexit
    - puts
    - pg_log_error
    - symlink
    - set_pglocale_pgservice
    - verify_dir_is_empty_or_create
    - Assert
    - pfree
    - parse_max_rate
    - usage
    - parse_compress_specification
    - option_parse_int
    - validate_compress_specification
    - psprintf
    - getopt_long
    - canonicalize_path
    - pg_free
    - PQserverVersion
    - exit
    - pg_log_error_hint
    - pg_strdup
    - tablespace_list_append
    - pg_strcasecmp
    - parse_sync_method
    - pqsignal
    - pg_logging_init
    - pg_fatal
    - backup_parse_compress_options
    - parse_compress_algorithm
    - umask
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - next
    - is_recovery_guc_supported
    - recoveryconfcontents
    argTypes:
    - astreamer*
    - bool
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 79
    functionName: astreamer_recovery_injector_new
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: astreamer
    signature: "astreamer *\nastreamer_recovery_injector_new(astreamer *next,\n\t\t\t\t\t\t\t\tbool
      is_recovery_guc_supported,\n\t\t\t\t\t\t\t\tPQExpBuffer recoveryconfcontents)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:93,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:99,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:108,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:110,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:131,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:151,1
    - Dst: astreamer_inject_file
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:166,1
    - Dst: astreamer_inject_file
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:172,1
    - Dst: astreamer_inject_file
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:178,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:189,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:192,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 194
    functionName: astreamer_recovery_injector_content
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c
    functionUses: 0
    functionsReached:
    - astreamer_content
    - memcpy
    - strcmp
    - Assert
    - pg_fatal
    - astreamer_inject_file
    linkageType: ''
    returnType: void
    signature: "void astreamer_recovery_injector_content(astreamer *streamer,\n\t\t\t\t\t\t\t\t\tastreamer_member
      *member,\n\t\t\t\t\t\t\t\t\tconst char *data, int len,\n\t\t\t\t\t\t\t\t\tastreamer_archive_context
      context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: astreamer_recovery_injector_finalize
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c
    functionUses: 0
    functionsReached:
    - astreamer_finalize
    linkageType: ''
    returnType: void
    signature: void astreamer_recovery_injector_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:211,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: astreamer_recovery_injector_free
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_recovery_injector_free(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:224,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:244,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:246,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - streamer
    - pathname
    - data
    - len
    argTypes:
    - astreamer*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 250
    functionName: astreamer_inject_file
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c
    functionUses: 3
    functionsReached:
    - strlcpy
    - astreamer_content
    linkageType: ''
    returnType: void
    signature: "void astreamer_inject_file(astreamer *streamer, char *pathname, char
      *data,\n\t\t\t\t\t  int len)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:78,1
    - Dst: PQconninfoParse
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:87,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:89,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:97,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:98,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:120,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:121,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:161,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:162,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:182,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:189,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:192,1
    - Dst: PQconnectionNeedsPassword
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:193,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:196,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:202,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:204,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:204,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:205,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:206,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:207,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:208,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:213,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:214,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:215,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:223,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:227,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:228,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:230,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:231,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:232,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:233,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:234,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:236,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:243,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:246,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:247,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:248,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:251,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:253,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:254,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:255,1
    - Dst: RetrieveDataDirCreatePerm
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:262,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:264,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:265,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 110
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 269
    functionName: GetConnection
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 6
    functionsReached:
    - PQclear
    - strcmp
    - pg_log_error
    - PQconninfoFree
    - Assert
    - RetrieveDataDirCreatePerm
    - PQfinish
    - PQconnectdbParams
    - PQresultStatus
    - PQstatus
    - PQconninfoParse
    - pg_malloc0_array
    - PQserverVersion
    - pg_free
    - exit
    - PQerrorMessage
    - PQexec
    - simple_prompt
    - PQparameterStatus
    - pg_fatal
    - free
    - PQconnectionNeedsPassword
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      GetConnection(void)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:284,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:287,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:293,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:294,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:296,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:297,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:299,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:302,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:302,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:304,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:305,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:305,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:307,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:312,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:312,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:314,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:315,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:319,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:322,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:324,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:330,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:332,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:332,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:336,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 341
    functionName: RetrieveWalSegSize
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - Assert
    - sscanf
    - pg_log_error_detail
    - ngettext
    - PQgetvalue
    - IsValidWalSegSize
    - PQntuples
    - PQresultStatus
    - PQserverVersion
    - pg_log_error
    - PQerrorMessage
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: bool RetrieveWalSegSize(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:361,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:364,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:367,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:368,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:370,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:371,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:373,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:376,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:376,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:378,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:379,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:379,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:381,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:385,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:385,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:387,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:388,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:390,1
    - Dst: SetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:394,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:396,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 398
    functionName: RetrieveDataDirCreatePerm
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 1
    functionsReached:
    - PQclear
    - PQexec
    - Assert
    - sscanf
    - PQgetvalue
    - SetDataDirectoryCreatePerm
    - PQntuples
    - PQresultStatus
    - PQserverVersion
    - pg_log_error
    - PQerrorMessage
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: bool RetrieveDataDirCreatePerm(PGconn *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:417,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:419,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:420,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:422,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:423,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:425,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:428,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:428,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:430,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:431,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:431,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:433,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:439,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:439,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:443,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:443,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:448,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:448,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:450,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:451,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:453,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:463,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:465,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:467,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:468,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:468,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:470,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:473,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:474,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:474,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:478,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 5
    argNames:
    - conn
    - sysid
    - starttli
    - startpos
    - db_name
    argTypes:
    - PGconn*
    - char**
    - TimeLineID*
    - XLogRecPtr*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 480
    functionName: RunIdentifySystem
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 5
    functionsReached:
    - PQclear
    - PQexec
    - Assert
    - sscanf
    - atoi
    - PQgetvalue
    - pg_strdup
    - PQntuples
    - PQgetisnull
    - PQresultStatus
    - PQserverVersion
    - pg_log_error
    - PQerrorMessage
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: "bool RunIdentifySystem(PGconn *conn, char **sysid, TimeLineID *starttli,\n\t\t\t\t
      \ XLogRecPtr *startpos, char **db_name)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:503,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:504,1
    - Dst: AppendQuotedIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:505,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:506,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:507,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:509,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:511,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:512,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:513,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:518,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:518,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:520,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:521,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:521,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:522,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:530,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:532,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:533,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:541,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:541,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:543,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:544,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:545,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:550,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:555,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:555,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:557,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:558,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:559,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:566,1
    - Dst: atoll
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:567,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:567,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:569,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 4
    argNames:
    - conn
    - slot_name
    - restart_lsn
    - restart_tli
    argTypes:
    - PGconn*
    - char*
    - XLogRecPtr*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 578
    functionName: GetSlotInformation
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 1
    functionsReached:
    - atoll
    - PQclear
    - strcmp
    - PQexec
    - sscanf
    - AppendQuotedIdentifier
    - PQgetvalue
    - PQntuples
    - destroyPQExpBuffer
    - PQgetisnull
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    - appendPQExpBufferStr
    - createPQExpBuffer
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: "bool GetSlotInformation(PGconn *conn, const char *slot_name,\n\t\t\t\t
      \  XLogRecPtr *restart_lsn, TimeLineID *restart_tli)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:591,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:593,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:595,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:597,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:598,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:599,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:602,1
    - Dst: AppendQuotedIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:603,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:605,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:607,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:610,1
    - Dst: AppendQuotedIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:611,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:616,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:620,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:625,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:626,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:629,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:630,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:633,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:637,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:640,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:653,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:657,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:658,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:660,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:664,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:666,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:667,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:672,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:673,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:675,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:676,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:681,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:681,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:683,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:685,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:685,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:687,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:688,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:692,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:693,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 9
    argNames:
    - conn
    - slot_name
    - plugin
    - is_temporary
    - is_physical
    - reserve_wal
    - slot_exists_ok
    - two_phase
    - failover
    argTypes:
    - PGconn*
    - char*
    - char*
    - bool
    - bool
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 695
    functionName: CreateReplicationSlot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 3
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - Assert
    - AppendPlainCommandOption
    - PQresultErrorField
    - AppendQuotedIdentifier
    - appendPQExpBufferChar
    - PQntuples
    - destroyPQExpBuffer
    - PQresultStatus
    - PQserverVersion
    - pg_log_error
    - PQerrorMessage
    - AppendStringCommandOption
    - appendPQExpBufferStr
    - createPQExpBuffer
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: "bool CreateReplicationSlot(PGconn *conn, const char *slot_name, const
      char *plugin,\n\t\t\t\t\t  bool is_temporary, bool is_physical, bool reserve_wal,\n\t\t\t\t\t
      \ bool slot_exists_ok, bool two_phase, bool failover)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:707,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:709,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:712,1
    - Dst: AppendQuotedIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:713,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:714,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:715,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:717,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:718,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:720,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:721,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:725,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:725,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:727,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:729,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:729,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:731,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:732,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:736,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:737,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - conn
    - slot_name
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 739
    functionName: DropReplicationSlot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - PQclear
    - PQexec
    - Assert
    - AppendQuotedIdentifier
    - PQntuples
    - destroyPQExpBuffer
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    - appendPQExpBufferStr
    - createPQExpBuffer
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: bool DropReplicationSlot(PGconn *conn, const char *slot_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:752,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:758,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:759,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:761,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - buf
    - str
    - quote
    argTypes:
    - PQExpBuffer
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 762
    functionName: AppendQuotedString
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    linkageType: ''
    returnType: void
    signature: void AppendQuotedString(PQExpBuffer buf, const char *str, char quote)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:783,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:785,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:788,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - buf
    - use_new_option_syntax
    - option_name
    argTypes:
    - PQExpBuffer
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 776
    functionDepth: 1
    functionLinenumber: 776
    functionLinenumberEnd: 789
    functionName: AppendPlainCommandOption
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBuffer
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: "void AppendPlainCommandOption(PQExpBuffer buf, bool use_new_option_syntax,\n\t\t\t\t\t\t
      const char *option_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:801,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:805,1
    - Dst: AppendQuotedLiteral
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - buf
    - use_new_option_syntax
    - option_name
    - option_value
    argTypes:
    - PQExpBuffer
    - bool
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 797
    functionDepth: 2
    functionLinenumber: 797
    functionLinenumberEnd: 808
    functionName: AppendStringCommandOption
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - appendPQExpBufferChar
    - AppendPlainCommandOption
    - AppendQuotedLiteral
    linkageType: ''
    returnType: void
    signature: "void AppendStringCommandOption(PQExpBuffer buf, bool use_new_option_syntax,\n\t\t\t\t\t\t
      \ const char *option_name, const char *option_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:820,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - buf
    - use_new_option_syntax
    - option_name
    - option_value
    argTypes:
    - PQExpBuffer
    - bool
    - char*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 816
    functionDepth: 2
    functionLinenumber: 816
    functionLinenumberEnd: 823
    functionName: AppendIntegerCommandOption
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 1
    functionsReached:
    - AppendPlainCommandOption
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void AppendIntegerCommandOption(PQExpBuffer buf, bool use_new_option_syntax,\n\t\t\t\t\t\t
      \  const char *option_name, int32 option_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 842
    functionName: feGetCurrentTimestamp
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 6
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz feGetCurrentTimestamp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - start_time
    - stop_time
    - secs
    - microsecs
    argTypes:
    - TimestampTz
    - TimestampTz
    - long*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 848
    functionDepth: 0
    functionLinenumber: 848
    functionLinenumberEnd: 864
    functionName: feTimestampDifference
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void feTimestampDifference(TimestampTz start_time, TimestampTz stop_time,\n\t\t\t\t\t
      \ long *secs, int *microsecs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - start_time
    - stop_time
    - msec
    argTypes:
    - TimestampTz
    - TimestampTz
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 878
    functionName: feTimestampDifferenceExceeds
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - INT64CONST
    linkageType: ''
    returnType: bool
    signature: "bool feTimestampDifferenceExceeds(TimestampTz start_time,\n\t\t\t\t\t\t\t
      TimestampTz stop_time,\n\t\t\t\t\t\t\t int msec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton64
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:886,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i
    - buf
    argTypes:
    - int64
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 883
    functionDepth: 1
    functionLinenumber: 883
    functionLinenumberEnd: 889
    functionName: fe_sendint64
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - pg_hton64
    - memcpy
    linkageType: ''
    returnType: void
    signature: void fe_sendint64(int64 i, char *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:899,1
    - Dst: pg_ntoh64
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 894
    functionDepth: 1
    functionLinenumber: 894
    functionLinenumberEnd: 902
    functionName: fe_recvint64
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - memcpy
    - pg_ntoh64
    linkageType: ''
    returnType: int64
    signature: int64 fe_recvint64(char *buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RegisterEventSource
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:177,1
    - Dst: ReportEvent
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - level
    - line
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 195
    functionName: write_eventlog
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - RegisterEventSource
    - ReportEvent
    linkageType: ''
    returnType: void
    signature: void write_eventlog(int level, const char *line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:207,1
    - Dst: vfprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:210,1
    - Dst: pgwin32_is_service
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:217,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:221,1
    - Dst: write_eventlog
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:223,1
    - Dst: vfprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:227,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 230
    functionName: write_stderr
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - vfprintf
    - va_end
    - va_start
    - vsnprintf
    - pgwin32_is_service
    - write_eventlog
    linkageType: ''
    returnType: void
    signature: void write_stderr(const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:241,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 244
    functionName: print_msg
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - fputs
    - fflush
    linkageType: ''
    returnType: void
    signature: void print_msg(const char *msg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:253,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:256,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:256,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:259,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:259,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:267,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:270,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:272,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:272,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:274,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:277,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:285,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:285,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:287,1
    - Dst: fscanf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:290,1
    - Dst: ftell
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:293,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:293,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:294,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:294,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:297,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:297,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:299,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:301,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - is_status_request
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 303
    functionName: get_pgpid
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - fopen
    - feof
    - stat
    - fclose
    - write_stderr
    - ftell
    - exit
    - fscanf
    linkageType: ''
    returnType: pid_t
    signature: pid_t get_pgpid(bool is_status_request)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:337,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:340,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:342,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:348,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:349,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:353,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:355,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:356,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:360,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:377,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:388,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:390,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:401,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 404
    functionName: readfile
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 3
    functionsReached:
    - pg_malloc_object
    - memcpy
    - pg_free
    - pg_malloc_array
    - close
    - open
    - pg_malloc
    - fstat
    - read
    linkageType: ''
    returnType: char
    signature: 'char **

      readfile(const char *path, int *numlines)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:420,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - optlines
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 423
    functionName: free_readfile
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free_readfile(char **optlines)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:449,1
    - Dst: pg_disable_aslr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:452,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:455,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:459,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:459,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:461,1
    - Dst: setsid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:477,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:479,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:479,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:481,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:491,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:495,1
    - Dst: execl
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:498,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:501,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:501,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:503,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:518,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:538,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:549,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:549,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:551,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:555,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:557,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:561,1
    - Dst: CreateRestrictedProcess
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:564,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:566,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:566,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:567,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:568,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:572,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 575
    functionName: start_postmaster
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 4
    functionsReached:
    - CloseHandle
    - pg_disable_aslr
    - fork
    - _
    - setsid
    - psprintf
    - CreateRestrictedProcess
    - write_stderr
    - GetLastError
    - getenv
    - fflush
    - close
    - open
    - exit
    - execl
    linkageType: ''
    returnType: pid_t
    signature: pid_t start_postmaster(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:607,1
    - Dst: atol
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:621,1
    - Dst: atoll
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:622,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:638,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:639,1
    - Dst: free_readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:642,1
    - Dst: free_readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:653,1
    - Dst: waitpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:667,1
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:669,1
    - Dst: get_control_dbstate
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:674,1
    - Dst: SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:696,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:700,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:703,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - pm_pid
    - do_checkpoint
    argTypes:
    - pid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 708
    functionName: wait_for_postmaster_start
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - atoll
    - strcmp
    - readfile
    - get_control_dbstate
    - print_msg
    - free_readfile
    - SetServiceStatus
    - WaitForSingleObject
    - pg_usleep
    - atol
    - waitpid
    linkageType: ''
    returnType: WaitPMResult
    signature: WaitPMResult wait_for_postmaster_start(pid_t pm_pid, bool do_checkpoint)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:726,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:729,1
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:735,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:741,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:742,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 717
    functionDepth: 2
    functionLinenumber: 717
    functionLinenumberEnd: 745
    functionName: wait_for_postmaster_stop
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - get_pgpid
    - print_msg
    - pg_usleep
    - kill
    linkageType: ''
    returnType: bool
    signature: bool wait_for_postmaster_stop(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:764,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:766,1
    - Dst: get_control_dbstate
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:769,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:774,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:775,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 754
    functionDepth: 2
    functionLinenumber: 754
    functionLinenumberEnd: 778
    functionName: wait_for_postmaster_promote
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - print_msg
    - kill
    - get_pgpid
    - get_control_dbstate
    - pg_usleep
    linkageType: ''
    returnType: bool
    signature: bool wait_for_postmaster_promote(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:787,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:790,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:790,1
    - Dst: setrlimit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:797,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 782
    functionDepth: 0
    functionLinenumber: 782
    functionLinenumberEnd: 799
    functionName: unlimit_core_size
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - write_stderr
    - getrlimit
    - _
    - setrlimit
    linkageType: ''
    returnType: void
    signature: void unlimit_core_size(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:813,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:816,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:816,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:817,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:821,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:821,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:823,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:836,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:839,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:842,1
    - Dst: free_readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:846,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 802
    functionDepth: 2
    functionLinenumber: 802
    functionLinenumberEnd: 849
    functionName: read_post_opts
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - readfile
    - free_readfile
    - strstr
    - write_stderr
    - exit
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void read_post_opts(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:862,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:863,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:863,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:871,1
    - Dst: raise
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:872,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 873
    functionName: trap_sigint_during_startup
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - pqsignal
    - _
    - kill
    - write_stderr
    - raise
    linkageType: ''
    returnType: void
    signature: void trap_sigint_during_startup(SIGNAL_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:881,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:883,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:887,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:888,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:891,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:891,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:894,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:894,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:896,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - argv0
    - target
    - versionstr
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 875
    functionDepth: 1
    functionLinenumber: 875
    functionLinenumberEnd: 900
    functionName: find_other_exec_or_die
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - find_my_exec
    - strlcpy
    - _
    - write_stderr
    - exit
    - pg_malloc
    - find_other_exec
    linkageType: ''
    returnType: char
    signature: 'char *

      find_other_exec_or_die(const char *argv0, const char *target, const char *versionstr)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_other_exec_or_die
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:908,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:917,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:920,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:923,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:924,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:926,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:926,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:927,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 902
    functionDepth: 2
    functionLinenumber: 902
    functionLinenumberEnd: 929
    functionName: do_init
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - psprintf
    - find_other_exec_or_die
    - write_stderr
    - exit
    - fflush
    - system
    linkageType: ''
    returnType: void
    signature: void do_init(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:939,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:941,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:941,1
    - Dst: read_post_opts
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:946,1
    - Dst: find_other_exec_or_die
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:953,1
    - Dst: unlimit_core_size
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:957,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:969,1
    - Dst: getppid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:969,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:970,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:974,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:987,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:989,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:989,1
    - Dst: wait_for_postmaster_start
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:991,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:994,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:994,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:995,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:995,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:998,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:998,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:999,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:999,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1001,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1004,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1004,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1005,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1005,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1008,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1008,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1009,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1009,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1012,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1017,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1017,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1021,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 931
    functionDepth: 3
    functionLinenumber: 931
    functionLinenumberEnd: 1024
    functionName: do_start
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - CloseHandle
    - setenv
    - _
    - pqsignal
    - print_msg
    - find_other_exec_or_die
    - get_pgpid
    - write_stderr
    - getppid
    - start_postmaster
    - read_post_opts
    - exit
    - unlimit_core_size
    - wait_for_postmaster_start
    - snprintf
    linkageType: ''
    returnType: void
    signature: void do_start(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1032,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1036,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1036,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1037,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1037,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1038,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1043,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1043,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1046,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1049,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1051,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1051,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1052,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1057,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1057,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1062,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1062,1
    - Dst: wait_for_postmaster_stop
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1064,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1066,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1066,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1068,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1068,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1070,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1070,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1072,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1074,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1074,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1076,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1076,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1027
    functionDepth: 3
    functionLinenumber: 1027
    functionLinenumberEnd: 1078
    functionName: do_stop
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - print_msg
    - kill
    - get_pgpid
    - write_stderr
    - wait_for_postmaster_stop
    - exit
    linkageType: ''
    returnType: void
    signature: void do_stop(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1090,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1094,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1094,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1096,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1096,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1097,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1097,1
    - Dst: do_start
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1098,1
    - Dst: postmaster_is_alive
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1104,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1106,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1106,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1109,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1109,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1110,1
    - Dst: postmaster_is_alive
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1114,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1116,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1118,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1118,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1119,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1122,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1122,1
    - Dst: wait_for_postmaster_stop
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1125,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1127,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1127,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1129,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1129,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1131,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1131,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1133,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1136,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1136,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1137,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1137,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1141,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1141,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1143,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1143,1
    - Dst: do_start
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1146,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1085
    functionDepth: 4
    functionLinenumber: 1085
    functionLinenumberEnd: 1147
    functionName: do_restart
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - print_msg
    - kill
    - postmaster_is_alive
    - get_pgpid
    - do_start
    - write_stderr
    - wait_for_postmaster_stop
    - exit
    linkageType: ''
    returnType: void
    signature: void do_restart(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1154,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1157,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1157,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1158,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1158,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1159,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1164,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1164,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1167,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1167,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1168,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1171,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1173,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1173,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1175,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1178,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1149
    functionDepth: 2
    functionLinenumber: 1149
    functionLinenumberEnd: 1179
    functionName: do_reload
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - print_msg
    - kill
    - get_pgpid
    - write_stderr
    - exit
    linkageType: ''
    returnType: void
    signature: void do_reload(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1192,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1196,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1196,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1197,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1197,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1198,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1203,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1203,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1206,1
    - Dst: get_control_dbstate
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1209,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1211,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1211,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1214,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1217,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1219,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1221,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1221,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1223,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1225,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1227,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1227,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1229,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1233,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1235,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1235,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1237,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1238,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1238,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1240,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1245,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1245,1
    - Dst: wait_for_postmaster_promote
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1246,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1248,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1248,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1249,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1249,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1253,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1253,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1254,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1254,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1256,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1260,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1260,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1261
      start: 1186
    functionDepth: 3
    functionLinenumber: 1186
    functionLinenumberEnd: 1261
    functionName: do_promote
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - unlink
    - print_msg
    - fopen
    - kill
    - wait_for_postmaster_promote
    - fclose
    - get_pgpid
    - exit
    - write_stderr
    - get_control_dbstate
    - snprintf
    linkageType: ''
    returnType: void
    signature: void do_promote(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1273,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1277,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1277,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1278,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1278,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1279,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1284,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1284,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1287,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1290,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1292,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1294,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1294,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1296,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1298,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1300,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1300,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1302,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1306,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1308,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1308,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1310,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1311,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1311,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1313,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1316,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1316,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1267
    functionDepth: 2
    functionLinenumber: 1267
    functionLinenumberEnd: 1317
    functionName: do_logrotate
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - unlink
    - print_msg
    - fopen
    - kill
    - fclose
    - get_pgpid
    - write_stderr
    - exit
    - snprintf
    linkageType: ''
    returnType: void
    signature: void do_logrotate(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1337,1
    - Dst: getppid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1340,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1343,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1324
    functionDepth: 1
    functionLinenumber: 1324
    functionLinenumberEnd: 1346
    functionName: postmaster_is_alive
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 1
    functionsReached:
    - getpid
    - getppid
    - kill
    linkageType: ''
    returnType: bool
    signature: bool postmaster_is_alive(pid_t pid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1353,1
    - Dst: postmaster_is_alive
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1361,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1363,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1363,1
    - Dst: postmaster_is_alive
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1371,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1377,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1377,1
    - Dst: readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1380,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1384,1
    - Dst: free_readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1387,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1393,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1393,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1400,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1348
    functionDepth: 2
    functionLinenumber: 1348
    functionLinenumberEnd: 1401
    functionName: do_status
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - readfile
    - free_readfile
    - postmaster_is_alive
    - get_pgpid
    - printf
    - puts
    - exit
    linkageType: ''
    returnType: void
    signature: void do_status(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1408,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1410,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1410,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1405
    functionDepth: 1
    functionLinenumber: 1405
    functionLinenumberEnd: 1414
    functionName: do_kill
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - write_stderr
    - exit
    - kill
    - _
    linkageType: ''
    returnType: void
    signature: void do_kill(pid_t pid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OpenService
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1421,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hSCM
    argTypes:
    - SC_HANDLE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1418
    functionDepth: 0
    functionLinenumber: 1418
    functionLinenumberEnd: 1427
    functionName: pgwin32_IsInstalled
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - CloseServiceHandle
    - OpenService
    linkageType: ''
    returnType: bool
    signature: bool pgwin32_IsInstalled(SC_HANDLE hSCM)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1432,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1438,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1441,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1441,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1442,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1447,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1451,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1451,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1452,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1457,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1458,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1458,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1459,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1459,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1459,1
    - Dst: make_native_path
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1463,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1466,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1471,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1479,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1482,1
    - Dst: make_native_path
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1484,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1485,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1486,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1490,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1493,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1497,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1500,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1505,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1507,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 42
    argCount: 1
    argNames:
    - registration
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1429
    functionDepth: 1
    functionLinenumber: 1429
    functionLinenumberEnd: 1511
    functionName: pgwin32_CommandLine
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - find_my_exec
    - pg_strcasecmp
    - _
    - appendPQExpBufferStr
    - write_stderr
    - make_native_path
    - strlen
    - free
    - exit
    - find_other_exec
    - appendPQExpBuffer
    - make_absolute_path
    - createPQExpBuffer
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      pgwin32_CommandLine(bool registration)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OpenSCManager
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1517,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1521,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1521,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1522,1
    - Dst: pgwin32_IsInstalled
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1524,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1526,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1527,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1527,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1528,1
    - Dst: CreateService
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1531,1
    - Dst: pgwin32_CommandLine
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1534,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1537,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1538,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1538,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1540,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1541,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1543,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1544,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1513
    functionDepth: 2
    functionLinenumber: 1513
    functionLinenumberEnd: 1545
    functionName: pgwin32_doRegister
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - OpenSCManager
    - CloseServiceHandle
    - write_stderr
    - GetLastError
    - CreateService
    - pgwin32_CommandLine
    - pgwin32_IsInstalled
    - exit
    linkageType: ''
    returnType: void
    signature: void pgwin32_doRegister(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OpenSCManager
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1551,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1555,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1555,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1556,1
    - Dst: pgwin32_IsInstalled
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1558,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1560,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1561,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1561,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1562,1
    - Dst: OpenService
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1565,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1567,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1568,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1568,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1570,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1571,1
    - Dst: DeleteService
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1573,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1575,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1576,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1577,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1577,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1579,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1580,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1582,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1583,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1584
      start: 1547
    functionDepth: 1
    functionLinenumber: 1547
    functionLinenumberEnd: 1584
    functionName: pgwin32_doUnregister
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - OpenSCManager
    - CloseServiceHandle
    - write_stderr
    - GetLastError
    - DeleteService
    - pgwin32_IsInstalled
    - exit
    - OpenService
    linkageType: ''
    returnType: void
    signature: void pgwin32_doUnregister(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - currentState
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1586
    functionDepth: 0
    functionLinenumber: 1586
    functionLinenumberEnd: 1591
    functionName: pgwin32_SetServiceStatus
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - SetServiceStatus
    linkageType: ''
    returnType: void
    signature: void pgwin32_SetServiceStatus(DWORD currentState)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1607,1
    - Dst: SetEvent
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1608,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1614,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - request
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1593
    functionDepth: 1
    functionLinenumber: 1593
    functionLinenumberEnd: 1623
    functionName: pgwin32_ServiceHandler
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - pgwin32_SetServiceStatus
    - kill
    - SetEvent
    linkageType: ''
    returnType: void
    signature: void pgwin32_ServiceHandler(DWORD request)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1640,1
    - Dst: read_post_opts
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1642,1
    - Dst: RegisterServiceCtrlHandler
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1645,1
    - Dst: CreateEvent
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1648,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1652,1
    - Dst: CreateRestrictedProcess
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1653,1
    - Dst: pgwin32_CommandLine
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1653,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1655,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1660,1
    - Dst: write_eventlog
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1664,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1664,1
    - Dst: wait_for_postmaster_start
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1665,1
    - Dst: write_eventlog
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1667,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1667,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1668,1
    - Dst: write_eventlog
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1671,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1671,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1674,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1677,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1679,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1690,1
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1696,1
    - Dst: SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1699,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1712,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1713,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1715,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - DWORD
    - LPTSTR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1625
    functionDepth: 3
    functionLinenumber: 1625
    functionLinenumberEnd: 1716
    functionName: pgwin32_ServiceMain
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - pgwin32_SetServiceStatus
    - CloseHandle
    - _
    - RegisterServiceCtrlHandler
    - WaitForMultipleObjects
    - kill
    - CreateRestrictedProcess
    - SetServiceStatus
    - memset
    - pgwin32_CommandLine
    - read_post_opts
    - CreateEvent
    - WaitForSingleObject
    - wait_for_postmaster_start
    - write_eventlog
    linkageType: ''
    returnType: void
    signature: void pgwin32_ServiceMain(DWORD argc, LPTSTR *argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: StartServiceCtrlDispatcher
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1724,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1726,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1726,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1728,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1731
      start: 1718
    functionDepth: 0
    functionLinenumber: 1718
    functionLinenumberEnd: 1731
    functionName: pgwin32_doRunAsService
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - _
    - StartServiceCtrlDispatcher
    - GetLastError
    - write_stderr
    - exit
    linkageType: ''
    returnType: void
    signature: void pgwin32_doRunAsService(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetStdHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1748,1
    - Dst: GetStdHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1751,1
    - Dst: GetStdHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1754,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - si
    argTypes:
    - STARTUPINFO*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1757
      start: 1744
    functionDepth: 0
    functionLinenumber: 1744
    functionLinenumberEnd: 1757
    functionName: InheritStdHandles
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - GetStdHandle
    linkageType: ''
    returnType: void
    signature: void InheritStdHandles(STARTUPINFO *si)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ZeroMemory
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1781,1
    - Dst: InheritStdHandles
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1790,1
    - Dst: OpenProcessToken
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1793,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1793,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1799,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1799,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1800,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1805,1
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1806,1
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1809,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1813,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1813,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1814,1
    - Dst: GetPrivilegesToDelete
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1819,1
    - Dst: CreateRestrictedToken
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1824,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1832,1
    - Dst: FreeSid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1833,1
    - Dst: FreeSid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1834,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1835,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1839,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1839,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1840,1
    - Dst: AddUserToTokenDacl
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1844,1
    - Dst: CreateProcessAsUser
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1845,1
    - Dst: IsProcessInJob
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1847,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1859,1
    - Dst: CreateJobObject
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1861,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1868,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1869,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1870,1
    - Dst: SetInformationJobObject
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1874,1
    - Dst: SetInformationJobObject
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1880,1
    - Dst: SetInformationJobObject
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1884,1
    - Dst: AssignProcessToJobObject
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1886,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1891,1
    - Dst: ResumeThread
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1893,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 50
    argCount: 3
    argNames:
    - cmd
    - processInfo
    - as_service
    argTypes:
    - char*
    - PROCESS_INFORMATION*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1768
    functionDepth: 1
    functionLinenumber: 1768
    functionLinenumberEnd: 1900
    functionName: CreateRestrictedProcess
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 2
    functionsReached:
    - FreeSid
    - GetLastError
    - CreateJobObject
    - CreateProcessAsUser
    - CreateRestrictedToken
    - CloseHandle
    - _
    - GetPrivilegesToDelete
    - GetCurrentProcess
    - ZeroMemory
    - sprintf
    - AddUserToTokenDacl
    - AssignProcessToJobObject
    - IsProcessInJob
    - AllocateAndInitializeSid
    - InheritStdHandles
    - write_stderr
    - free
    - ResumeThread
    - SetInformationJobObject
    - OpenProcessToken
    linkageType: ''
    returnType: int
    signature: int CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo,
      bool as_service)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LookupPrivilegeValue
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1917,1
    - Dst: LookupPrivilegeValue
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1918,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1920,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1920,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1921,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1925,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1926,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1928,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1928,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1929,1
    - Dst: pg_malloc_extended
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1933,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1937,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1937,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1941,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1943,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1943,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1944,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1945,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1951,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1952,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - hToken
    argTypes:
    - HANDLE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1907
    functionDepth: 1
    functionLinenumber: 1907
    functionLinenumberEnd: 1961
    functionName: GetPrivilegesToDelete
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 1
    functionsReached:
    - _
    - GetTokenInformation
    - write_stderr
    - GetLastError
    - free
    - pg_malloc_extended
    - memcmp
    - LookupPrivilegeValue
    linkageType: ''
    returnType: PTOKEN_PRIVILEGES
    signature: PTOKEN_PRIVILEGES GetPrivilegesToDelete(HANDLE hToken)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1967,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1964
    functionDepth: 0
    functionLinenumber: 1964
    functionLinenumberEnd: 1968
    functionName: do_advice
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - write_stderr
    - _
    linkageType: ''
    returnType: void
    signature: void do_advice(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1975,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1975,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1976,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1976,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1977,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1977,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1978,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1978,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1980,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1980,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1981,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1981,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1983,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1983,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1984,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1984,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1985,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1985,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1986,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1986,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1987,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1987,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1989,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1989,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1991,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1991,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1994,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1994,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1995,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1995,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1997,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1997,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1999,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1999,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2000,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2000,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2001,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2001,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2002,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2002,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2003,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2003,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2004,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2004,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2005,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2005,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2007,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2007,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2009,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2009,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2011,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2011,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2013,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2013,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2014,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2014,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2016,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2016,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2017,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2017,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2018,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2018,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2020,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2020,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2021,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2021,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2022,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2022,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2023,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2023,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2025,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2025,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2026,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2029,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2029,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2030,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2030,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2031,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2031,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2032,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2032,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2033,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2033,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2035,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2035,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2036,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2036,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2037,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2037,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2040,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2040,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2041,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2042
      start: 1972
    functionDepth: 0
    functionLinenumber: 1972
    functionLinenumberEnd: 2042
    functionName: do_help
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void do_help(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2049,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2049,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2054,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2054,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2059,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2059,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2066,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2066,1
    - Dst: do_advice
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2067,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2068,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - modeopt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2046
    functionDepth: 1
    functionLinenumber: 2046
    functionLinenumberEnd: 2070
    functionName: set_mode
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - do_advice
    - _
    - strcmp
    - write_stderr
    - exit
    linkageType: ''
    returnType: void
    signature: void set_mode(char *modeopt)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2077,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2079,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2081,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2083,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2085,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2087,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2089,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2091,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2095,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2095,1
    - Dst: do_advice
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2096,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2097,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - signame
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2099
      start: 2074
    functionDepth: 1
    functionLinenumber: 2074
    functionLinenumberEnd: 2099
    functionName: set_sig
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - do_advice
    - _
    - strcmp
    - write_stderr
    - exit
    linkageType: ''
    returnType: void
    signature: void set_sig(char *signame)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2106,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2106,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2108,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2108,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2112,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2112,1
    - Dst: do_advice
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2113,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2114,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - starttypeopt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2116
      start: 2103
    functionDepth: 1
    functionLinenumber: 2103
    functionLinenumberEnd: 2116
    functionName: set_starttype
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - do_advice
    - _
    - strcmp
    - write_stderr
    - exit
    linkageType: ''
    returnType: void
    signature: void set_starttype(char *starttypeopt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2137,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2138,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2140,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2143,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2144,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2146,1
    - Dst: find_other_exec_or_die
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2154,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2156,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2159,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2163,1
    - Dst: popen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2165,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2166,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2166,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2168,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2168,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2169,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2171,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2174,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2176,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2177,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2178,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2124
    functionDepth: 2
    functionLinenumber: 2124
    functionLinenumberEnd: 2179
    functionName: adjust_data_dir
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 1
    functionsReached:
    - _
    - fopen
    - psprintf
    - find_other_exec_or_die
    - pclose
    - pg_strip_crlf
    - fclose
    - write_stderr
    - canonicalize_path
    - snprintf
    - fflush
    - fgets
    - popen
    - pg_free
    - exit
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void adjust_data_dir(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_controlfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2187,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2191,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2191,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2192,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2198
      start: 2182
    functionDepth: 1
    functionLinenumber: 2182
    functionLinenumberEnd: 2198
    functionName: get_control_dbstate
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 3
    functionsReached:
    - _
    - pfree
    - write_stderr
    - get_controlfile
    - exit
    linkageType: ''
    returnType: DBState
    signature: DBState get_control_dbstate(void)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2224,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2225,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2226,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2226,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2227,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2236,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2241,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2241,1
    - Dst: do_help
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2243,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2244,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2246,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2246,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2248,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2249,1
    - Dst: geteuid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2257,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2259,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2259,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2264,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2268,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2270,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2273,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2282,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2283,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2284,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2290,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2291,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2295,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2298,1
    - Dst: set_mode
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2301,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2304,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2309,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2314,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2315,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2319,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2322,1
    - Dst: set_starttype
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2329,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2331,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2331,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2333,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2337,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2341,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2342,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2345,1
    - Dst: do_advice
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2358,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2359,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2366,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2367,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2369,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2371,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2373,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2375,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2377,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2379,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2381,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2383,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2387,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2387,1
    - Dst: do_advice
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2388,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2389,1
    - Dst: set_sig
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2392,1
    - Dst: atol
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2393,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2396,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2398,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2400,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2405,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2405,1
    - Dst: do_advice
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2406,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:2407,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 125
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2410
      start: 2201
    functionDepth: 2
    functionLinenumber: 2201
    functionLinenumberEnd: 2410
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - strcmp
    - strchr
    - puts
    - set_pglocale_pgservice
    - set_starttype
    - _
    - set_sig
    - getenv
    - time
    - atol
    - setenv
    - psprintf
    - getopt_long
    - canonicalize_path
    - pg_free
    - exit
    - do_advice
    - do_help
    - pg_strdup
    - geteuid
    - set_mode
    - pg_logging_init
    - write_stderr
    - free
    - atoi
    - umask
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 125
    functionName: GETERRNO
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETERRNO()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - handle
    - ','
    - function
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: THREAD_CREATE
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_CREATE(handle, function, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - handle
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 134
    functionName: THREAD_JOIN
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_JOIN(handle)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - barrier
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 137
    functionName: THREAD_BARRIER_INIT
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_BARRIER_INIT(barrier, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - barrier
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: THREAD_BARRIER_WAIT
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_BARRIER_WAIT(barrier)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - handle
    - ','
    - function
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: THREAD_CREATE
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_CREATE(handle, function, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - handle
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 152
    functionName: THREAD_JOIN
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_JOIN(handle)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - barrier
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: THREAD_BARRIER_INIT
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_BARRIER_INIT(barrier, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - barrier
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    functionName: THREAD_BARRIER_WAIT
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_BARRIER_WAIT(barrier)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - barrier
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: THREAD_BARRIER_DESTROY
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_BARRIER_DESTROY(barrier)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQexecParams
      Src: /src/postgres/src/bin/pgbench/pgbench.c:870,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:871,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:873,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:873,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:874,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:875,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:877,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:878,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:878,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:880,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - con
    - table
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 883
    functionName: get_table_relkind
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQexecParams
    - Assert
    - pg_log_error_detail
    - PQgetvalue
    - exit
    - strlen
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: char
    signature: char get_table_relkind(PGconn *con, const char *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/pgbench/pgbench.c:890,1
    - Dst: INSTR_TIME_GET_MICROSEC
      Src: /src/postgres/src/bin/pgbench/pgbench.c:892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 885
    functionDepth: 1
    functionLinenumber: 885
    functionLinenumberEnd: 893
    functionName: pg_time_now
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - INSTR_TIME_SET_CURRENT
    - INSTR_TIME_GET_MICROSEC
    linkageType: ''
    returnType: pg_time_usec_t
    signature: pg_time_usec_t pg_time_now(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - now
    argTypes:
    - pg_time_usec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 895
    functionDepth: 2
    functionLinenumber: 895
    functionLinenumberEnd: 900
    functionName: pg_time_now_lazy
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_time_now
    linkageType: ''
    returnType: void
    signature: void pg_time_now_lazy(pg_time_usec_t *now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 903
    functionName: PG_TIME_GET_DOUBLE
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_TIME_GET_DOUBLE(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 983
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 17
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/bin/pgbench/pgbench.c:996,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1004,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1008,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 1013
    functionName: is_an_int
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - isspace
    - isdigit
    linkageType: ''
    returnType: bool
    signature: bool is_an_int(const char *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1030,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1032,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1035,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1039,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1042,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - str
    - errorOK
    - result
    argTypes:
    - char*
    - bool
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1024
    functionDepth: 1
    functionLinenumber: 1024
    functionLinenumberEnd: 1046
    functionName: strtoint64
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strtoi64
    - unlikely
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: bool strtoint64(const char *str, bool errorOK, int64 *result)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strtod
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1055,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1057,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1060,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1064,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1067,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - str
    - errorOK
    - dv
    argTypes:
    - char*
    - bool
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1071
    functionName: strtodouble
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - unlikely
    - strtod
    linkageType: ''
    returnType: bool
    signature: bool strtodouble(const char *str, bool errorOK, double *dv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_seed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1081,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1078
    functionDepth: 1
    functionLinenumber: 1078
    functionLinenumberEnd: 1082
    functionName: initRandomState
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_prng_uint64
    - pg_prng_seed
    linkageType: ''
    returnType: void
    signature: void initRandomState(pg_prng_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1095,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - min
    - max
    argTypes:
    - pg_prng_state*
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1092
    functionDepth: 1
    functionLinenumber: 1092
    functionLinenumberEnd: 1096
    functionName: getrand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_prng_uint64_range
    linkageType: ''
    returnType: int64
    signature: int64 getrand(pg_prng_state *state, int64 min, int64 max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1112,1
    - Dst: exp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1113,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1115,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1120,1
    - Dst: log
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - state
    - min
    - max
    - parameter
    argTypes:
    - pg_prng_state*
    - int64
    - int64
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1103
    functionDepth: 1
    functionLinenumber: 1103
    functionLinenumberEnd: 1124
    functionName: getExponentialRand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_prng_double
    - exp
    - log
    linkageType: ''
    returnType: int64
    signature: "int64 getExponentialRand(pg_prng_state *state, int64 min, int64 max,\n\t\t\t\t
      \  double parameter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1135,1
    - Dst: pg_prng_double_normal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - state
    - min
    - max
    - parameter
    argTypes:
    - pg_prng_state*
    - int64
    - int64
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1127
    functionDepth: 1
    functionLinenumber: 1127
    functionLinenumberEnd: 1160
    functionName: getGaussianRand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_prng_double_normal
    linkageType: ''
    returnType: int64
    signature: "int64 getGaussianRand(pg_prng_state *state, int64 min, int64 max,\n\t\t\t\tdouble
      parameter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_double
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1179,1
    - Dst: log
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - center
    argTypes:
    - pg_prng_state*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1182
    functionName: getPoissonRand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_prng_double
    - log
    linkageType: ''
    returnType: int64
    signature: int64 getPoissonRand(pg_prng_state *state, double center)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1194,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1207,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1208,1
    - Dst: floor
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1210,1
    - Dst: pow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1210,1
    - Dst: pow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1212,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - state
    - n
    - s
    argTypes:
    - pg_prng_state*
    - int64
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1191
    functionDepth: 1
    functionLinenumber: 1191
    functionLinenumberEnd: 1218
    functionName: computeIterativeZipfian
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_prng_double
    - floor
    - pow
    linkageType: ''
    returnType: int64
    signature: int64 computeIterativeZipfian(pg_prng_state *state, int64 n, double
      s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1227,1
    - Dst: computeIterativeZipfian
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - state
    - min
    - max
    - s
    argTypes:
    - pg_prng_state*
    - int64
    - int64
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1221
    functionDepth: 2
    functionLinenumber: 1221
    functionLinenumberEnd: 1230
    functionName: getZipfianRand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - computeIterativeZipfian
    linkageType: ''
    returnType: int64
    signature: int64 getZipfianRand(pg_prng_state *state, int64 min, int64 max, double
      s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - val
    - seed
    argTypes:
    - int64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1235
    functionDepth: 0
    functionLinenumber: 1235
    functionLinenumberEnd: 1252
    functionName: getHashFnv1a
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 getHashFnv1a(int64 val, uint64 seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - val
    - seed
    argTypes:
    - int64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1260
    functionDepth: 0
    functionLinenumber: 1260
    functionLinenumberEnd: 1278
    functionName: getHashMurmur2
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 getHashMurmur2(int64 val, uint64 seed)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_seed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1308,1
    - Dst: pg_leftmost_one_pos64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1315,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1354,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1355,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1363,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1364,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - val
    - isize
    - seed
    argTypes:
    - int64
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1293
    functionDepth: 1
    functionLinenumber: 1293
    functionLinenumberEnd: 1379
    functionName: permute
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_prng_uint64
    - pg_prng_seed
    - pg_prng_uint64_range
    - pg_leftmost_one_pos64
    linkageType: ''
    returnType: int64
    signature: int64 permute(const int64 val, const int64 isize, const int64 seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ss
    argTypes:
    - SimpleStats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1384
    functionDepth: 0
    functionLinenumber: 1384
    functionLinenumberEnd: 1388
    functionName: initSimpleStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void initSimpleStats(SimpleStats *ss)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ss
    - val
    argTypes:
    - SimpleStats*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1393
    functionDepth: 0
    functionLinenumber: 1393
    functionLinenumberEnd: 1403
    functionName: addToSimpleStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void addToSimpleStats(SimpleStats *ss, double val)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - acc
    - ss
    argTypes:
    - SimpleStats*
    - SimpleStats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1408
    functionDepth: 0
    functionLinenumber: 1408
    functionLinenumberEnd: 1418
    functionName: mergeSimpleStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mergeSimpleStats(SimpleStats *acc, SimpleStats *ss)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1435,1
    - Dst: initSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - sd
    - start
    argTypes:
    - StatsData*
    - pg_time_usec_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1424
    functionDepth: 1
    functionLinenumber: 1424
    functionLinenumberEnd: 1437
    functionName: initStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - initSimpleStats
    linkageType: ''
    returnType: void
    signature: void initStats(StatsData *sd, pg_time_usec_t start)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: addToSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1470,1
    - Dst: addToSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1474,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1489,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 6
    argNames:
    - stats
    - skipped
    - lat
    - lag
    - estatus
    - tries
    argTypes:
    - StatsData*
    - bool
    - double
    - double
    - EStatus
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1442
    functionDepth: 1
    functionLinenumber: 1442
    functionLinenumberEnd: 1491
    functionName: accumStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - addToSimpleStats
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void accumStats(StatsData *stats, bool skipped, double lat, double
      lag,\n\t\t   EStatus estatus, int64 tries)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1499,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1500,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1502,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1502,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1503,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1504,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1506,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - con
    - sql
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1494
    functionDepth: 1
    functionLinenumber: 1494
    functionLinenumberEnd: 1507
    functionName: executeStatement
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQexec
    - pg_log_error_detail
    - exit
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: void executeStatement(PGconn *con, const char *sql)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1515,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1516,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1518,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1518,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1519,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - con
    - sql
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1510
    functionDepth: 1
    functionLinenumber: 1510
    functionLinenumberEnd: 1522
    functionName: tryExecuteStatement
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQexec
    - pg_log_error_detail
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: void tryExecuteStatement(PGconn *con, const char *sql)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1560,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1564,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1568,1
    - Dst: PQconnectionNeedsPassword
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1569,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1572,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1573,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1579,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1581,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1581,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1582,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1525
    functionDepth: 1
    functionLinenumber: 1525
    functionLinenumberEnd: 1587
    functionName: doConnect
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - simple_prompt
    - PQfinish
    - PQconnectdbParams
    - pg_log_error
    - PQerrorMessage
    - PQconnectionNeedsPassword
    - PQstatus
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      doConnect(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1590
    functionDepth: 0
    functionLinenumber: 1590
    functionLinenumberEnd: 1595
    functionName: compareVariableNames
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int compareVariableNames(const void *v1, const void *v2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1610,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1617,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - variables
    - name
    argTypes:
    - Variables*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1598
    functionDepth: 1
    functionLinenumber: 1598
    functionLinenumberEnd: 1622
    functionName: lookupVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - qsort
    - bsearch
    linkageType: ''
    returnType: Variable
    signature: 'Variable *

      lookupVariable(Variables *variables, char *name)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1631,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1639,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1641,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1643,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1646,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1649,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1652,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1653,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - variables
    - name
    argTypes:
    - Variables*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1655
      start: 1625
    functionDepth: 2
    functionLinenumber: 1625
    functionLinenumberEnd: 1655
    functionName: getVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strdup
    - snprintf
    - lookupVariable
    linkageType: ''
    returnType: char
    signature: 'char *

      getVariable(Variables *variables, char *name)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1666,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1672,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1674,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1681,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1682,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1683,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1685,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1687,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1688,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1689,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1690,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1692,1
    - Dst: is_an_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1694,1
    - Dst: strtoint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1699,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1702,1
    - Dst: strtodouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1708,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1710,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1714,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 1
    argNames:
    - var
    argTypes:
    - Variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1658
    functionDepth: 2
    functionLinenumber: 1658
    functionLinenumberEnd: 1717
    functionName: makeVariableValue
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strtodouble
    - setBoolValue
    - pg_strcasecmp
    - setDoubleValue
    - pg_strncasecmp
    - is_an_int
    - setIntValue
    - setNullValue
    - strlen
    - pg_log_error
    - strtoint64
    linkageType: ''
    returnType: bool
    signature: bool makeVariableValue(Variable *var)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1742,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1743,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1752,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1753,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1732
    functionDepth: 1
    functionLinenumber: 1732
    functionLinenumberEnd: 1761
    functionName: valid_variable_name
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 2
    functionsReached:
    - IS_HIGHBIT_SET
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool valid_variable_name(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - variables
    - needed
    argTypes:
    - Variables*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1779
      start: 1767
    functionDepth: 1
    functionLinenumber: 1767
    functionLinenumberEnd: 1779
    functionName: enlargeVariables
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_realloc_array
    linkageType: ''
    returnType: void
    signature: void enlargeVariables(Variables *variables, int needed)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1791,1
    - Dst: valid_variable_name
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1798,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1800,1
    - Dst: enlargeVariables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1805,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1809,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - variables
    - context
    - name
    argTypes:
    - Variables*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1819
      start: 1786
    functionDepth: 2
    functionLinenumber: 1786
    functionLinenumberEnd: 1819
    functionName: lookupCreateVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - valid_variable_name
    - enlargeVariables
    - lookupVariable
    - pg_log_error
    - pg_strdup
    linkageType: ''
    returnType: Variable
    signature: 'Variable *

      lookupCreateVariable(Variables *variables, const char *context, char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookupCreateVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1830,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1835,1
    - Dst: free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1837,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - variables
    - context
    - name
    - value
    argTypes:
    - Variables*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1842
      start: 1823
    functionDepth: 3
    functionLinenumber: 1823
    functionLinenumberEnd: 1842
    functionName: putVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - lookupCreateVariable
    - free
    - pg_strdup
    linkageType: ''
    returnType: bool
    signature: "bool putVariable(Variables *variables, const char *context, char *name,\n\t\t\tconst
      char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookupCreateVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1852,1
    - Dst: free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1856,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - variables
    - context
    - name
    - value
    argTypes:
    - Variables*
    - char*
    - char*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1846
    functionDepth: 3
    functionLinenumber: 1846
    functionLinenumberEnd: 1861
    functionName: putVariableValue
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - lookupCreateVariable
    - free
    linkageType: ''
    returnType: bool
    signature: "bool putVariableValue(Variables *variables, const char *context, char
      *name,\n\t\t\t\t const PgBenchValue *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1871,1
    - Dst: putVariableValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - variables
    - context
    - name
    - value
    argTypes:
    - Variables*
    - char*
    - char*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1873
      start: 1865
    functionDepth: 4
    functionLinenumber: 1865
    functionLinenumberEnd: 1873
    functionName: putVariableInt
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - setIntValue
    - putVariableValue
    linkageType: ''
    returnType: bool
    signature: "bool putVariableInt(Variables *variables, const char *context, char
      *name,\n\t\t\t   int64 value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1890,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1891,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1897,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1898,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1902,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1903,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - sql
    - eaten
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1883
    functionDepth: 1
    functionLinenumber: 1883
    functionLinenumberEnd: 1908
    functionName: parseVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_malloc
    - memcpy
    - strchr
    linkageType: ''
    returnType: char
    signature: 'char *

      parseVariable(const char *sql, int *eaten)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1913,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1919,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1919,1
    - Dst: memmove
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1924,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1924,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1925,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - sql
    - param
    - len
    - value
    argTypes:
    - char**
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1928
      start: 1910
    functionDepth: 1
    functionLinenumber: 1910
    functionLinenumberEnd: 1928
    functionName: replaceVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - memmove
    - strlen
    - pg_realloc
    - memcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      replaceVariable(char **sql, char *param, int len, char *value)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1938,1
    - Dst: parseVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1942,1
    - Dst: getVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1952,1
    - Dst: free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1953,1
    - Dst: replaceVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1960,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - variables
    - sql
    argTypes:
    - Variables*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1930
    functionDepth: 3
    functionLinenumber: 1930
    functionLinenumberEnd: 1964
    functionName: assignVariables
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - getVariable
    - strchr
    - parseVariable
    - free
    - replaceVariable
    linkageType: ''
    returnType: char
    signature: 'char *

      assignVariables(Variables *variables, char *sql)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1973,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - variables
    - command
    - params
    argTypes:
    - Variables*
    - Command*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1966
    functionDepth: 3
    functionLinenumber: 1966
    functionLinenumberEnd: 1974
    functionName: getQueryParams
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - getVariable
    linkageType: ''
    returnType: void
    signature: "void getQueryParams(Variables *variables, const Command *command,\n\t\t\t
      \  const char **params)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1992,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - pval
    argTypes:
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1976
    functionDepth: 1
    functionLinenumber: 1976
    functionLinenumberEnd: 1995
    functionName: valueTypeName
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      valueTypeName(PgBenchValue *pval)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2008,1
    - Dst: valueTypeName
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2008,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pval
    - bval
    argTypes:
    - PgBenchValue*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2012
      start: 1998
    functionDepth: 2
    functionLinenumber: 1998
    functionLinenumberEnd: 2012
    functionName: coerceToBool
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - valueTypeName
    linkageType: ''
    returnType: bool
    signature: bool coerceToBool(PgBenchValue *pval, bool *bval)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2033,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - pval
    argTypes:
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2018
    functionDepth: 1
    functionLinenumber: 2018
    functionLinenumberEnd: 2036
    functionName: valueTruth
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool valueTruth(PgBenchValue *pval)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2049,1
    - Dst: isnan
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2051,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2051,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2053,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2061,1
    - Dst: valueTypeName
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2061,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - pval
    - ival
    argTypes:
    - PgBenchValue*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 2039
    functionDepth: 2
    functionLinenumber: 2039
    functionLinenumberEnd: 2064
    functionName: coerceToInt
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - FLOAT8_FITS_IN_INT64
    - valueTypeName
    - rint
    - pg_log_error
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool coerceToInt(PgBenchValue *pval, int64 *ival)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2082,1
    - Dst: valueTypeName
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2082,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - pval
    - dval
    argTypes:
    - PgBenchValue*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 2067
    functionDepth: 2
    functionLinenumber: 2067
    functionLinenumberEnd: 2085
    functionName: coerceToDouble
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - valueTypeName
    linkageType: ''
    returnType: bool
    signature: bool coerceToDouble(PgBenchValue *pval, double *dval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pv
    argTypes:
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2093
      start: 2088
    functionDepth: 0
    functionLinenumber: 2088
    functionLinenumberEnd: 2093
    functionName: setNullValue
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setNullValue(PgBenchValue *pv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pv
    - bval
    argTypes:
    - PgBenchValue*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2096
    functionDepth: 0
    functionLinenumber: 2096
    functionLinenumberEnd: 2101
    functionName: setBoolValue
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setBoolValue(PgBenchValue *pv, bool bval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pv
    - ival
    argTypes:
    - PgBenchValue*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2104
    functionDepth: 0
    functionLinenumber: 2104
    functionLinenumberEnd: 2109
    functionName: setIntValue
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setIntValue(PgBenchValue *pv, int64 ival)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pv
    - dval
    argTypes:
    - PgBenchValue*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2112
    functionDepth: 0
    functionLinenumber: 2112
    functionLinenumberEnd: 2117
    functionName: setDoubleValue
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDoubleValue(PgBenchValue *pv, double dval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - func
    argTypes:
    - PgBenchFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2123
      start: 2119
    functionDepth: 0
    functionLinenumber: 2119
    functionLinenumberEnd: 2123
    functionName: isLazyFunc
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isLazyFunc(PgBenchFunction func)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2135,1
    - Dst: isLazyFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2135,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2138,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2149,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2153,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2158,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2162,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2167,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2170,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2174,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2184,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2188,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2193,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2197,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2202,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2205,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2209,1
    - Dst: valueTruth
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2215,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2216,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2223,1
    - Dst: evalLazyFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2226,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2230,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 63
    argCount: 4
    argNames:
    - st
    - func
    - args
    - retval
    argTypes:
    - CState*
    - PgBenchFunction
    - PgBenchExprLink*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2234
      start: 2126
    functionDepth: 3
    functionLinenumber: 2126
    functionLinenumberEnd: 2234
    functionName: evalLazyFunc
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - evaluateExpr
    - setBoolValue
    - evalLazyFunc
    - coerceToBool
    - Assert
    - setNullValue
    - valueTruth
    - isLazyFunc
    linkageType: ''
    returnType: bool
    signature: "bool evalLazyFunc(CState *st,\n\t\t\t PgBenchFunction func, PgBenchExprLink
      *args, PgBenchValue *retval)"
  - BBCount: 110
    BranchProfiles: []
    Callsites:
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2256,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2263,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2270,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2291,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2300,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2301,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2307,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2311,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2315,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2319,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2323,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2327,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2331,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2335,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2340,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2349,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2350,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2356,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2358,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2361,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2365,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2367,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2370,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2374,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2376,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2379,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2383,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2387,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2391,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2395,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2402,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2413,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2417,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2420,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2425,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2427,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2433,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2437,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2451,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2451,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2455,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2457,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2459,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2461,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2463,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2465,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2475,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2478,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2484,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2492,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2498,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2504,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2505,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2515,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2517,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2521,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2523,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2525,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2527,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2529,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2544,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2546,1
    - Dst: sqrt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2550,1
    - Dst: log
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2552,1
    - Dst: exp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2554,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2557,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2566,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2568,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2571,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2582,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2598,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2604,1
    - Dst: Min
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2607,1
    - Dst: Max
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2609,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2611,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2617,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2623,1
    - Dst: Min
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2626,1
    - Dst: Max
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2628,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2630,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2645,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2647,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2648,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2652,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2654,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2657,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2657,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2658,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2661,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2667,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2668,1
    - Dst: getrand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2668,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2674,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2676,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2683,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2688,1
    - Dst: getGaussianRand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2689,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2696,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2701,1
    - Dst: getZipfianRand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2702,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2708,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2713,1
    - Dst: getExponentialRand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2714,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2729,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2731,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2732,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2735,1
    - Dst: pow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2735,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2742,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2748,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2761,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2763,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2764,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2768,1
    - Dst: getHashMurmur2
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2768,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2770,1
    - Dst: getHashFnv1a
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2770,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2773,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2784,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2786,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2787,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2788,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2793,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2797,1
    - Dst: permute
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2797,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2803,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 317
    argCount: 4
    argNames:
    - st
    - func
    - args
    - retval
    argTypes:
    - CState*
    - PgBenchFunction
    - PgBenchExprLink*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2243
    functionDepth: 3
    functionLinenumber: 2243
    functionLinenumberEnd: 2807
    functionName: evalStandardFunc
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - coerceToDouble
    - setDoubleValue
    - coerceToInt
    - pg_log_error
    - getExponentialRand
    - pow
    - fprintf
    - permute
    - setBoolValue
    - coerceToBool
    - Assert
    - setNullValue
    - log
    - getHashMurmur2
    - evaluateExpr
    - pg_sub_s64_overflow
    - pg_add_s64_overflow
    - unlikely
    - getZipfianRand
    - pg_mul_s64_overflow
    - sqrt
    - getGaussianRand
    - getrand
    - setIntValue
    - getHashFnv1a
    - Max
    - exp
    - Min
    linkageType: ''
    returnType: bool
    signature: "bool evalStandardFunc(CState *st,\n\t\t\t\t PgBenchFunction func,
      PgBenchExprLink *args,\n\t\t\t\t PgBenchValue *retval)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isLazyFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2814,1
    - Dst: evalLazyFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2815,1
    - Dst: evalStandardFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - st
    - func
    - args
    - retval
    argTypes:
    - CState*
    - PgBenchFunction
    - PgBenchExprLink*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2818
      start: 2810
    functionDepth: 4
    functionLinenumber: 2810
    functionLinenumberEnd: 2818
    functionName: evalFunc
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - evalLazyFunc
    - evalStandardFunc
    - isLazyFunc
    linkageType: ''
    returnType: bool
    signature: "bool evalFunc(CState *st,\n\t\t PgBenchFunction func, PgBenchExprLink
      *args, PgBenchValue *retval)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2841,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2843,1
    - Dst: makeVariableValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2847,1
    - Dst: evalFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2855,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2862,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - st
    - expr
    - retval
    argTypes:
    - CState*
    - PgBenchExpr*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2864
      start: 2826
    functionDepth: 5
    functionLinenumber: 2826
    functionLinenumberEnd: 2864
    functionName: evaluateExpr
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 2
    functionsReached:
    - evalFunc
    - pg_fatal
    - makeVariableValue
    - lookupVariable
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: bool evaluateExpr(CState *st, PgBenchExpr *expr, PgBenchValue *retval)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2876,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2878,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2880,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2882,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2884,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2886,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2888,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2890,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2892,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2894,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2896,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2898,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2900,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2905
      start: 2869
    functionDepth: 1
    functionLinenumber: 2869
    functionLinenumberEnd: 2905
    functionName: getMetaCommand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    linkageType: ''
    returnType: MetaCommand
    signature: MetaCommand getMetaCommand(const char *cmd)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: getVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2943,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2945,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2949,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2952,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2958,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2964,1
    - Dst: system
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2969,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2972,1
    - Dst: popen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2979,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2981,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2984,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2987,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2988,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2991,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2993,1
    - Dst: strtol
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2998,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2999,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3003,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3006,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3009,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 57
    argCount: 4
    argNames:
    - variables
    - variable
    - argv
    - argc
    argTypes:
    - Variables*
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3012
      start: 2911
    functionDepth: 5
    functionLinenumber: 2911
    functionLinenumberEnd: 3012
    functionName: runShellCommand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - getVariable
    - memcpy
    - pclose
    - strtol
    - isspace
    - putVariableInt
    - strlen
    - fflush
    - fgets
    - popen
    - pg_log_error
    - system
    - pg_log_debug
    linkageType: ''
    returnType: bool
    signature: bool runShellCommand(Variables *variables, char *variable, char **argv,
      int argc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - st
    - cmd
    - message
    argTypes:
    - CState*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3022
      start: 3017
    functionDepth: 1
    functionLinenumber: 3017
    functionLinenumberEnd: 3022
    functionName: commandFailed
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void commandFailed(CState *st, const char *cmd, const char *message)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3035,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3038,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - st
    - message
    argTypes:
    - CState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3040
      start: 3027
    functionDepth: 1
    functionLinenumber: 3027
    functionLinenumberEnd: 3040
    functionName: commandError
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_log_info
    linkageType: ''
    returnType: void
    signature: void commandError(CState *st, const char *message)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3052,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - TState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3059
      start: 3043
    functionDepth: 2
    functionLinenumber: 3043
    functionLinenumberEnd: 3059
    functionName: chooseScript
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - getrand
    linkageType: ''
    returnType: int
    signature: int chooseScript(TState *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3068,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3070,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3078,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - st
    argTypes:
    - CState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3080
      start: 3065
    functionDepth: 1
    functionLinenumber: 3065
    functionLinenumberEnd: 3080
    functionName: allocCStatePrepared
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_malloc0_array
    - pg_malloc_array
    linkageType: ''
    returnType: void
    signature: void allocCStatePrepared(CState *st)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: allocCStatePrepared
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3095,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3101,1
    - Dst: PQprepare
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3102,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3104,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3105,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3105,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - st
    - command_num
    argTypes:
    - CState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3109
      start: 3085
    functionDepth: 2
    functionLinenumber: 3085
    functionLinenumberEnd: 3109
    functionName: prepareCommand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQprepare
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    - allocCStatePrepared
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void prepareCommand(CState *st, int command_num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3124,1
    - Dst: allocCStatePrepared
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3128,1
    - Dst: prepareCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3144,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - st
    argTypes:
    - CState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3148
      start: 3118
    functionDepth: 3
    functionLinenumber: 3118
    functionLinenumberEnd: 3148
    functionName: prepareCommandsInPipeline
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - prepareCommand
    - allocCStatePrepared
    linkageType: ''
    returnType: void
    signature: void prepareCommandsInPipeline(CState *st)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3160,1
    - Dst: assignVariables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3161,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3163,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3164,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3165,1
    - Dst: getQueryParams
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3172,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3174,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3175,1
    - Dst: prepareCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3182,1
    - Dst: getQueryParams
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3183,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3185,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3186,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - st
    - command
    argTypes:
    - CState*
    - Command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3199
      start: 3151
    functionDepth: 4
    functionLinenumber: 3151
    functionLinenumberEnd: 3199
    functionName: sendCommand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - prepareCommand
    - assignVariables
    - PQsendQueryParams
    - PQsendQuery
    - pg_strdup
    - getQueryParams
    - PQsendQueryPrepared
    - pg_free
    - pg_log_debug
    linkageType: ''
    returnType: bool
    signature: bool sendCommand(CState *st, Command *command)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3211,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3220,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3221,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3224,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3226,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - st
    argTypes:
    - CState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3227
      start: 3204
    functionDepth: 1
    functionLinenumber: 3204
    functionLinenumberEnd: 3227
    functionName: discardAvailableResults
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQgetResult
    - PQpipelineStatus
    - PQclear
    - PQstatus
    linkageType: ''
    returnType: void
    signature: void discardAvailableResults(CState *st)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: discardAvailableResults
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3235,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3236,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3241,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3243,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - st
    - sqlState
    argTypes:
    - CState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3248
      start: 3232
    functionDepth: 2
    functionLinenumber: 3232
    functionLinenumberEnd: 3248
    functionName: getSQLErrorStatus
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - discardAvailableResults
    - strcmp
    - PQstatus
    linkageType: ''
    returnType: EStatus
    signature: EStatus getSQLErrorStatus(CState *st, const char *sqlState)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - estatus
    argTypes:
    - EStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3258
      start: 3253
    functionDepth: 0
    functionLinenumber: 3253
    functionLinenumberEnd: 3258
    functionName: canRetryError
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool canRetryError(EStatus estatus)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - estatus
    argTypes:
    - EStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3269
      start: 3264
    functionDepth: 0
    functionLinenumber: 3264
    functionLinenumberEnd: 3269
    functionName: canContinueOnError
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool canContinueOnError(EStatus estatus)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3291,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3295,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3302,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3305,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3311,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3321,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3326,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3327,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3338,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3340,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3344,1
    - Dst: putVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3347,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3348,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3351,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3358,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3365,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3368,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3369,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3370,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3376,1
    - Dst: PQendcopy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3384,1
    - Dst: getSQLErrorStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3389,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3389,1
    - Dst: canRetryError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3391,1
    - Dst: canContinueOnError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3391,1
    - Dst: commandError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3394,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3394,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3401,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3403,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3407,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3414,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3421,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3422,1
    - Dst: discardAvailableResults
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3423,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 84
    argCount: 3
    argNames:
    - st
    - meta
    - varprefix
    argTypes:
    - CState*
    - MetaCommand
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3426
      start: 3280
    functionDepth: 4
    functionLinenumber: 3280
    functionLinenumberEnd: 3426
    functionName: readCommandResponse
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - canRetryError
    - PQfname
    - PQclear
    - putVariable
    - PQgetvalue
    - pg_log_error
    - PQgetResult
    - getSQLErrorStatus
    - PQnfields
    - Assert
    - pfree
    - PQendcopy
    - discardAvailableResults
    - PQresultStatus
    - PQexitPipelineMode
    - PQntuples
    - psprintf
    - PQresultErrorField
    - canContinueOnError
    - commandError
    - PQresultErrorMessage
    - pg_log_debug
    linkageType: ''
    returnType: bool
    signature: bool readCommandResponse(CState *st, MetaCommand meta, char *varprefix)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3440,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3442,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3446,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3449,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3451,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3457,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3461,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3463,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - variables
    - argc
    - argv
    - usecs
    argTypes:
    - Variables*
    - int
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3471
      start: 3432
    functionDepth: 3
    functionLinenumber: 3432
    functionLinenumberEnd: 3471
    functionName: evaluateSleep
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - getVariable
    - pg_strcasecmp
    - isdigit
    - atoi
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: bool evaluateSleep(Variables *variables, int argc, char **argv, int
      *usecs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3480,1
    - Dst: canRetryError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3483,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3490,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3505,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - st
    - now
    argTypes:
    - CState*
    - pg_time_usec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3518
      start: 3477
    functionDepth: 3
    functionLinenumber: 3477
    functionLinenumberEnd: 3518
    functionName: doRetry
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - canRetryError
    - pg_time_now_lazy
    linkageType: ''
    returnType: bool
    signature: bool doRetry(CState *st, pg_time_usec_t *now)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQpipelineSync
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3533,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3535,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3546,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3548,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3550,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3552,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3556,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3576,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3580,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3582,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - st
    argTypes:
    - CState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3587
      start: 3523
    functionDepth: 1
    functionLinenumber: 3523
    functionLinenumberEnd: 3587
    functionName: discardUntilSync
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQpipelineSync
    - PQresultStatus
    - PQexitPipelineMode
    - pg_log_error
    - PQgetResult
    - PQstatus
    linkageType: ''
    returnType: int
    signature: int discardUntilSync(CState *st)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3598,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3608,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3618,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3623,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3625
      start: 3593
    functionDepth: 1
    functionLinenumber: 3593
    functionLinenumberEnd: 3625
    functionName: getTransactionStatus
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQtransactionStatus
    - pg_log_error
    - PQstatus
    linkageType: ''
    returnType: TStatus
    signature: TStatus getTransactionStatus(PGconn *con)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3635,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3637,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3638,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3641,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3645,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3653,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3654,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3657,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3659,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3661,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - st
    - now
    - is_retry
    argTypes:
    - CState*
    - pg_time_usec_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3662
      start: 3630
    functionDepth: 3
    functionLinenumber: 3630
    functionLinenumberEnd: 3662
    functionName: printVerboseErrorMessages
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - printfPQExpBuffer
    - pg_time_now_lazy
    - appendPQExpBufferStr
    - initPQExpBuffer
    - pg_log_info
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void printVerboseErrorMessages(CState *st, pg_time_usec_t *now, bool
      is_retry)
  - BBCount: 76
    BranchProfiles: []
    Callsites:
    - Dst: chooseScript
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3698,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3699,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3699,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3705,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3718,1
    - Dst: doConnect
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3725,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3731,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3737,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3742,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3782,1
    - Dst: getPoissonRand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3785,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3796,1
    - Dst: processXactStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3800,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3837,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3858,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3862,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3873,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3881,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3885,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3891,1
    - Dst: sendCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3897,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3899,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3905,1
    - Dst: executeMetaCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3919,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3929,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3939,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3939,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3946,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3958,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3964,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3976,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3983,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3983,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3984,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3985,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3995,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3999,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3999,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4000,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4001,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4017,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4036,1
    - Dst: PQisBusy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4044,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4044,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4047,1
    - Dst: PQisBusy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4051,1
    - Dst: readCommandResponse
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4055,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4064,1
    - Dst: canRetryError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4067,1
    - Dst: canContinueOnError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4067,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4080,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4099,1
    - Dst: addToSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4103,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4104,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4109,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4120,1
    - Dst: conditional_stack_reset
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4123,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4126,1
    - Dst: discardUntilSync
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4128,1
    - Dst: getTransactionStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4139,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4143,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4145,1
    - Dst: doRetry
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4159,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4164,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4166,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4179,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4180,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4182,1
    - Dst: PQisBusy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4187,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4193,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4194,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4198,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4200,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4201,1
    - Dst: doRetry
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4208,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4211,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4212,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4213,1
    - Dst: printVerboseErrorMessages
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4231,1
    - Dst: printVerboseErrorMessages
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4262,1
    - Dst: processXactStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4276,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4282,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4282,1
    - Dst: getTransactionStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4288,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4291,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4299,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4301,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4310,1
    - Dst: finishCon
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4311,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4312,1
    - Dst: finishCon
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4352,1
    CyclomaticComplexity: 98
    EdgeCount: 98
    ICount: 285
    argCount: 3
    argNames:
    - thread
    - st
    - agg
    argTypes:
    - TState*
    - CState*
    - StatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4356
      start: 3667
    functionDepth: 5
    functionLinenumber: 3667
    functionLinenumberEnd: 4356
    functionName: advanceConnectionState
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - canRetryError
    - conditional_stack_poke
    - PQclear
    - PQconsumeInput
    - doConnect
    - PQisBusy
    - conditional_active
    - pg_log_error
    - PQgetResult
    - conditional_stack_reset
    - conditional_stack_peek
    - getPoissonRand
    - Assert
    - PQresultStatus
    - addToSimpleStats
    - sendCommand
    - chooseScript
    - conditional_stack_pop
    - commandFailed
    - conditional_stack_push
    - processXactStats
    - getTransactionStatus
    - pg_time_now_lazy
    - PQpipelineStatus
    - PQsendQuery
    - conditional_stack_empty
    - pg_free
    - doRetry
    - PQerrorMessage
    - printVerboseErrorMessages
    - canContinueOnError
    - discardUntilSync
    - PG_TIME_GET_DOUBLE
    - executeMetaCommand
    - finishCon
    - pg_time_now
    - readCommandResponse
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void advanceConnectionState(TState *thread, CState *st, StatsData *agg)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4372,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4377,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4381,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4383,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4385,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4387,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4389,1
    - Dst: evaluateSleep
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4402,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4404,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4408,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4417,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4419,1
    - Dst: putVariableValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4423,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4425,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4436,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4438,1
    - Dst: valueTruth
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4442,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4443,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4452,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4455,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4459,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4461,1
    - Dst: valueTruth
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4465,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4466,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4466,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4467,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4471,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4474,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4483,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4488,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4488,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4489,1
    - Dst: runShellCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4493,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4495,1
    - Dst: runShellCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4501,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4503,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4515,1
    - Dst: prepareCommandsInPipeline
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4527,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4529,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4531,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4534,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4536,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4542,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4544,1
    - Dst: PQsendPipelineSync
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4547,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4549,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4556,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4558,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4561,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4563,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 123
    argCount: 2
    argNames:
    - st
    - now
    argTypes:
    - CState*
    - pg_time_usec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4579
      start: 4365
    functionDepth: 6
    functionLinenumber: 4365
    functionLinenumberEnd: 4579
    functionName: executeMetaCommand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - conditional_stack_poke
    - conditional_stack_peek
    - printfPQExpBuffer
    - Assert
    - valueTruth
    - PQsendPipelineSync
    - evaluateExpr
    - conditional_stack_pop
    - evaluateSleep
    - commandFailed
    - conditional_stack_push
    - pg_time_now_lazy
    - PQpipelineStatus
    - PQenterPipelineMode
    - conditional_stack_empty
    - unlikely
    - prepareCommandsInPipeline
    - termPQExpBuffer
    - PQpipelineSync
    - runShellCommand
    - initPQExpBuffer
    - appendPQExpBuffer
    - putVariableValue
    - pg_log_debug
    linkageType: ''
    returnType: ConnectionStateEnum
    signature: ConnectionStateEnum executeMetaCommand(CState *st, pg_time_usec_t *now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - StatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4590
      start: 4584
    functionDepth: 0
    functionLinenumber: 4584
    functionLinenumberEnd: 4590
    functionName: getFailures
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 getFailures(const StatsData *stats)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4613,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - skipped
    - estatus
    argTypes:
    - bool
    - EStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4618
      start: 4596
    functionDepth: 0
    functionLinenumber: 4596
    functionLinenumberEnd: 4618
    functionName: getResultString
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: char
    signature: 'char *

      getResultString(bool skipped, EStatus estatus)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4634,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4636,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4643,1
    - Dst: INT64CONST
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4657,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4671,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4686,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4694,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4701,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4709,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4714,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4717,1
    - Dst: accumStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4721,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4727,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4732,1
    - Dst: getResultString
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4734,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4738,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4740,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4741,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 6
    argNames:
    - thread
    - st
    - agg
    - skipped
    - latency
    - lag
    argTypes:
    - TState*
    - CState*
    - StatsData*
    - bool
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4743
      start: 4629
    functionDepth: 2
    functionLinenumber: 4629
    functionLinenumberEnd: 4743
    functionName: doLog
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - INT64CONST
    - Assert
    - pg_prng_double
    - accumStats
    - fputc
    - initStats
    - pg_time_now
    - getResultString
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void doLog(TState *thread, CState *st,\n\t  StatsData *agg, bool skipped,
      double latency, double lag)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4763,1
    - Dst: accumStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4771,1
    - Dst: doLog
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4781,1
    - Dst: accumStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4785,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 14
    argCount: 5
    argNames:
    - thread
    - st
    - now
    - skipped
    - agg
    argTypes:
    - TState*
    - CState*
    - pg_time_usec_t*
    - bool
    - StatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4787
      start: 4752
    functionDepth: 3
    functionLinenumber: 4752
    functionLinenumberEnd: 4787
    functionName: processXactStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - pg_time_now_lazy
    - doLog
    - accumStats
    linkageType: ''
    returnType: void
    signature: "void processXactStats(TState *thread, CState *st, pg_time_usec_t *now,\n\t\t\t\t
      bool skipped, StatsData *agg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: finishCon
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4797,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - state
    - length
    argTypes:
    - CState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4798
      start: 4791
    functionDepth: 1
    functionLinenumber: 4791
    functionLinenumberEnd: 4798
    functionName: disconnect_all
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - finishCon
    linkageType: ''
    returnType: void
    signature: void disconnect_all(CState *state, int length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4806,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4817
      start: 4803
    functionDepth: 2
    functionLinenumber: 4803
    functionLinenumberEnd: 4817
    functionName: initDropTables
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - executeStatement
    - fprintf
    linkageType: ''
    returnType: void
    signature: void initDropTables(PGconn *con)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4831,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4833,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4835,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4843,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4856,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4858,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4860,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4863,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4865,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4867,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4870,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4877,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4883,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4885,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4888,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4889
      start: 4825
    functionDepth: 2
    functionLinenumber: 4825
    functionLinenumberEnd: 4889
    functionName: createPartitions
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - printfPQExpBuffer
    - Assert
    - initPQExpBuffer
    - appendPQExpBuffer
    - executeStatement
    - appendPQExpBufferChar
    - termPQExpBuffer
    - appendPQExpBufferStr
    - fprintf
    linkageType: ''
    returnType: void
    signature: void createPartitions(PGconn *con)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4944,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4946,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4948,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4953,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4959,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4960,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4965,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4972,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4972,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4973,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4974,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4977,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4980,1
    - Dst: createPartitions
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4983,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4984
      start: 4894
    functionDepth: 3
    functionLinenumber: 4894
    functionLinenumberEnd: 4984
    functionName: initCreateTables
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strcmp
    - printfPQExpBuffer
    - PQescapeIdentifier
    - initPQExpBuffer
    - strlen
    - executeStatement
    - PQfreemem
    - termPQExpBuffer
    - createPartitions
    - appendPQExpBuffer
    - lengthof
    - fprintf
    linkageType: ''
    returnType: void
    signature: void initCreateTables(PGconn *con)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4997
      start: 4989
    functionDepth: 2
    functionLinenumber: 4989
    functionLinenumberEnd: 4997
    functionName: initTruncateTables
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - executeStatement
    linkageType: ''
    returnType: void
    signature: void initTruncateTables(PGconn *con)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5003,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sql
    - curr
    argTypes:
    - PQExpBufferData*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5006
      start: 4999
    functionDepth: 1
    functionLinenumber: 4999
    functionLinenumberEnd: 5006
    functionName: initBranch
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - printfPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void initBranch(PQExpBufferData *sql, int64 curr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sql
    - curr
    argTypes:
    - PQExpBufferData*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5015
      start: 5008
    functionDepth: 1
    functionLinenumber: 5008
    functionLinenumberEnd: 5015
    functionName: initTeller
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - printfPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void initTeller(PQExpBufferData *sql, int64 curr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sql
    - curr
    argTypes:
    - PQExpBufferData*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5024
      start: 5017
    functionDepth: 1
    functionLinenumber: 5017
    functionLinenumberEnd: 5024
    functionName: initAccount
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - printfPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void initAccount(PQExpBufferData *sql, int64 curr)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: isatty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5045,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5045,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5047,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5050,1
    - Dst: get_table_relkind
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5051,1
    - Dst: pg_snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5055,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5057,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5059,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5061,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5063,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5064,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5064,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5065,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5067,1
    - Dst: init_row
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5073,1
    - Dst: PQputline
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5074,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5075,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5086,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5086,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5089,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5100,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5101,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5107,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5107,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5113,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5124,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5125,1
    - Dst: ceil
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5129,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5135,1
    - Dst: PQputline
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5137,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5138,1
    - Dst: PQendcopy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5139,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5140,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5142,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 45
    argCount: 4
    argNames:
    - con
    - table
    - base
    - init_row
    argTypes:
    - PGconn*
    - char*
    - int64
    - initRowMethod
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5143
      start: 5026
    functionDepth: 2
    functionLinenumber: 5026
    functionLinenumberEnd: 5143
    functionName: initPopulateTable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQclear
    - fputc
    - ceil
    - fprintf
    - fileno
    - PQendcopy
    - PQresultStatus
    - init_row
    - isatty
    - PQserverVersion
    - PQputline
    - PQerrorMessage
    - termPQExpBuffer
    - PQexec
    - pg_snprintf
    - pg_fatal
    - PG_TIME_GET_DOUBLE
    - initPQExpBuffer
    - pg_time_now
    - get_table_relkind
    linkageType: ''
    returnType: void
    signature: "void initPopulateTable(PGconn *con, const char *table, int64 base,\n\t\t\t\t
      \ initRowMethod init_row)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5154,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5160,1
    - Dst: initTruncateTables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5163,1
    - Dst: initPopulateTable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5169,1
    - Dst: initPopulateTable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5170,1
    - Dst: initPopulateTable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5171,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5174
      start: 5151
    functionDepth: 3
    functionLinenumber: 5151
    functionLinenumberEnd: 5174
    functionName: initGenerateDataClientSide
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - initPopulateTable
    - executeStatement
    - initTruncateTables
    - fprintf
    linkageType: ''
    returnType: void
    signature: void initGenerateDataClientSide(PGconn *con)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5188,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5194,1
    - Dst: initTruncateTables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5197,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5199,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5201,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5205,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5207,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5211,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5213,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5218,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5220,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5223
      start: 5183
    functionDepth: 3
    functionLinenumber: 5183
    functionLinenumberEnd: 5223
    functionName: initGenerateDataServerSide
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - printfPQExpBuffer
    - initPQExpBuffer
    - termPQExpBuffer
    - executeStatement
    - initTruncateTables
    - fprintf
    linkageType: ''
    returnType: void
    signature: void initGenerateDataServerSide(PGconn *con)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5231,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5232,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5233,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5234,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5236
      start: 5228
    functionDepth: 2
    functionLinenumber: 5228
    functionLinenumberEnd: 5236
    functionName: initVacuum
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - executeStatement
    - fprintf
    linkageType: ''
    returnType: void
    signature: void initVacuum(PGconn *con)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5252,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5253,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5255,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5257,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5258,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5264,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5265,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5266,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5267,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5270,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5274
      start: 5241
    functionDepth: 2
    functionLinenumber: 5241
    functionLinenumberEnd: 5274
    functionName: initCreatePKeys
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQescapeIdentifier
    - resetPQExpBuffer
    - initPQExpBuffer
    - strlen
    - appendPQExpBuffer
    - executeStatement
    - PQfreemem
    - termPQExpBuffer
    - appendPQExpBufferStr
    - lengthof
    - fprintf
    linkageType: ''
    returnType: void
    signature: void initCreatePKeys(PGconn *con)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5291,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5292,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5296
      start: 5279
    functionDepth: 2
    functionLinenumber: 5279
    functionLinenumberEnd: 5296
    functionName: initCreateFKeys
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - executeStatement
    - lengthof
    - fprintf
    linkageType: ''
    returnType: void
    signature: void initCreateFKeys(PGconn *con)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5309,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5313,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5315,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5316,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - initialize_steps
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5320
      start: 5305
    functionDepth: 1
    functionLinenumber: 5305
    functionLinenumberEnd: 5320
    functionName: checkInitSteps
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strchr
    - pg_log_error_detail
    - pg_fatal
    - pg_log_error
    - exit
    linkageType: ''
    returnType: void
    signature: void checkInitSteps(const char *initialize_steps)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5334,1
    - Dst: doConnect
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5336,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5337,1
    - Dst: setup_cancel_handler
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5339,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5340,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5345,1
    - Dst: initDropTables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5351,1
    - Dst: initCreateTables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5355,1
    - Dst: initGenerateDataClientSide
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5359,1
    - Dst: initGenerateDataServerSide
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5363,1
    - Dst: initVacuum
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5367,1
    - Dst: initCreatePKeys
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5371,1
    - Dst: initCreateFKeys
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5375,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5380,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5381,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5382,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5387,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5387,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5390,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5394,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5400,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5401,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5402,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5403,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 1
    argNames:
    - initialize_steps
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5404
      start: 5325
    functionDepth: 4
    functionLinenumber: 5325
    functionLinenumberEnd: 5404
    functionName: runInitSteps
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - doConnect
    - pg_log_error
    - setup_cancel_handler
    - appendPQExpBufferStr
    - initGenerateDataServerSide
    - fprintf
    - initCreateTables
    - initGenerateDataClientSide
    - PQfinish
    - ResetCancelConn
    - SetCancelConn
    - initCreateFKeys
    - initVacuum
    - termPQExpBuffer
    - exit
    - initDropTables
    - pg_fatal
    - PG_TIME_GET_DOUBLE
    - initCreatePKeys
    - initPQExpBuffer
    - pg_time_now
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void runInitSteps(const char *initialize_steps)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5419,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5420,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5422,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5424,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5424,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5426,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5427,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5428,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5430,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5432,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5432,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5434,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5435,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5436,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5440,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5458,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5470,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5476,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5482,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5483,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5483,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5484,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5489,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5493,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5496,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5498,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5500,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5505,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5509,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5509,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5512,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - con
    - scale_given
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5513
      start: 5410
    functionDepth: 1
    functionLinenumber: 5410
    functionLinenumberEnd: 5513
    functionName: GetTableInfo
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - Assert
    - PQresultErrorField
    - atoi
    - PQgetvalue
    - exit
    - pg_fatal
    - PQdb
    - pg_log_warning
    - PQntuples
    - PQgetisnull
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    - pg_log_error_hint
    linkageType: ''
    returnType: void
    signature: void GetTableInfo(PGconn *con, bool scale_given)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5527,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5528,1
    - Dst: parseVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5534,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5550,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5552,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5556,1
    - Dst: replaceVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5557,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5563,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - Command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5566
      start: 5519
    functionDepth: 2
    functionLinenumber: 5519
    functionLinenumberEnd: 5566
    functionName: parseQuery
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strchr
    - Assert
    - parseVariable
    - sprintf
    - pg_free
    - pg_log_error
    - replaceVariable
    - pg_strdup
    linkageType: ''
    returnType: bool
    signature: bool parseQuery(Command *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5587,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5589,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5591,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5593,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5595,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5597,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5599,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5603,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5605,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5608,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 7
    argNames:
    - source
    - lineno
    - line
    - command
    - msg
    - more
    - column
    argTypes:
    - char*
    - int
    - char*
    - char*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5609
      start: 5580
    functionDepth: 1
    functionLinenumber: 5580
    functionLinenumberEnd: 5609
    functionName: syntax_error
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - printfPQExpBuffer
    - initPQExpBuffer
    - termPQExpBuffer
    - exit
    - appendPQExpBuffer
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void syntax_error(const char *source, int lineno,\n\t\t\t const char
      *line, const char *command,\n\t\t\t const char *msg, const char *more, int column)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5624,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5626,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5628,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - sql_command
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5642
      start: 5616
    functionDepth: 0
    functionLinenumber: 5616
    functionLinenumberEnd: 5642
    functionName: skip_sql_comments
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strncmp
    - isspace
    - strchr
    linkageType: ''
    returnType: char
    signature: 'char *

      skip_sql_comments(char *sql_command)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skip_sql_comments
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5655,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5661,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5662,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5663,1
    - Dst: memset
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5670,1
    - Dst: initSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - buf
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5677
      start: 5651
    functionDepth: 1
    functionLinenumber: 5651
    functionLinenumberEnd: 5677
    functionName: create_sql_command
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - initSimpleStats
    - skip_sql_comments
    - initPQExpBuffer
    - memset
    - pg_malloc0_object
    - appendPQExpBufferStr
    linkageType: ''
    returnType: Command
    signature: 'Command *

      create_sql_command(PQExpBuffer buf)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5683,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5684,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5686,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5687,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - command
    argTypes:
    - Command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5694
      start: 5680
    functionDepth: 1
    functionLinenumber: 5680
    functionLinenumberEnd: 5694
    functionName: free_command
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_free
    - termPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void free_command(Command *command)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5706,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5709,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5710,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5711,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5721,1
    - Dst: parseQuery
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5724,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5725,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5728,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - my_command
    argTypes:
    - Command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5730
      start: 5700
    functionDepth: 3
    functionLinenumber: 5700
    functionLinenumberEnd: 5730
    functionName: postprocess_sql_command
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - Assert
    - psprintf
    - parseQuery
    - strcspn
    - exit
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void postprocess_sql_command(Command *my_command)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5747,1
    - Dst: expr_lex_one_word
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5750,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5752,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5757,1
    - Dst: initSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5760,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5765,1
    - Dst: getMetaCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5769,1
    - Dst: expr_lex_one_word
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5780,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5781,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5785,1
    - Dst: expr_scanner_init
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5790,1
    - Dst: expr_yyparse
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5793,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5796,1
    - Dst: expr_scanner_get_substring
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5801,1
    - Dst: expr_scanner_finish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5805,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5807,1
    - Dst: expr_lex_one_word
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5813,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5820,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5824,1
    - Dst: expr_scanner_get_substring
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5830,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5837,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5841,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5861,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5865,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5882,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5891,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5892,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5893,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5894,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5902,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5908,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5917,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5923,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5929,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5933,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 87
    argCount: 4
    argNames:
    - sstate
    - source
    - lineno
    - start_offset
    argTypes:
    - PsqlScanState
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5936
      start: 5737
    functionDepth: 2
    functionLinenumber: 5737
    functionLinenumberEnd: 5936
    functionName: process_backslash_command
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - isdigit
    - expr_scanner_get_substring
    - initSimpleStats
    - syntax_error
    - expr_lex_one_word
    - expr_scanner_finish
    - initPQExpBuffer
    - pg_malloc0_object
    - expr_yyparse
    - getMetaCommand
    - termPQExpBuffer
    - exit
    - expr_scanner_init
    - pg_strdup
    linkageType: ''
    returnType: Command
    signature: "Command *\nprocess_backslash_command(PsqlScanState sstate, const char
      *source,\n\t\t\t\t\t\t  int lineno, int start_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - desc
    - cmdn
    - msg
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5943
      start: 5938
    functionDepth: 0
    functionLinenumber: 5938
    functionLinenumberEnd: 5943
    functionName: ConditionError
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void ConditionError(const char *desc, int cmdn, const char *msg)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_create
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5952,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5964,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5967,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5968,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5969,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5970,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5973,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5974,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5975,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5976,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5977,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5980,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5981,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5989,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5990,1
    - Dst: conditional_stack_destroy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5991,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 32
    argCount: 1
    argNames:
    - ps
    argTypes:
    - ParsedScript*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5992
      start: 5948
    functionDepth: 1
    functionLinenumber: 5948
    functionLinenumberEnd: 5992
    functionName: CheckConditional
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - conditional_stack_peek
    - conditional_stack_pop
    - conditional_stack_push
    - conditional_stack_poke
    - ConditionError
    - conditional_stack_create
    - conditional_stack_empty
    - conditional_stack_destroy
    linkageType: ''
    returnType: void
    signature: void CheckConditional(const ParsedScript *ps)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6013,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6014,1
    - Dst: psql_scan_create
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6017,1
    - Dst: psql_scan_setup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6028,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6028,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6030,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6040,1
    - Dst: psql_scan
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6042,1
    - Dst: create_sql_command
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6045,1
    - Dst: psql_scan_get_location
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6058,1
    - Dst: process_backslash_command
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6061,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6075,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6083,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6089,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6091,1
    - Dst: free_command
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6097,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6116,1
    - Dst: addScript
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6126,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6128,1
    - Dst: psql_scan_finish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6129,1
    - Dst: psql_scan_destroy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6130,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 3
    argNames:
    - script
    - desc
    - weight
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6131
      start: 5998
    functionDepth: 3
    functionLinenumber: 5998
    functionLinenumberEnd: 6131
    functionName: ParseScript
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - addScript
    - pg_realloc_array
    - process_backslash_command
    - psql_scan
    - initStats
    - create_sql_command
    - pg_malloc_array
    - resetPQExpBuffer
    - free_command
    - strlen
    - termPQExpBuffer
    - psql_scan_destroy
    - pg_strdup
    - psql_scan_setup
    - psql_scan_finish
    - syntax_error
    - initPQExpBuffer
    - psql_scan_get_location
    - psql_scan_create
    linkageType: ''
    returnType: void
    signature: void ParseScript(const char *script, const char *desc, int weight)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6146,1
    - Dst: fread
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6152,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - fd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6165
      start: 6139
    functionDepth: 1
    functionLinenumber: 6139
    functionLinenumberEnd: 6165
    functionName: read_file_contents
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - pg_realloc
    - fread
    linkageType: ''
    returnType: char
    signature: 'char *

      read_file_contents(FILE *fd)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6179,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6181,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6182,1
    - Dst: read_file_contents
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6184,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6186,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6187,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6190,1
    - Dst: ParseScript
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6192,1
    - Dst: free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - filename
    - weight
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6195
      start: 6172
    functionDepth: 4
    functionLinenumber: 6172
    functionLinenumberEnd: 6195
    functionName: process_file
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 3
    functionsReached:
    - ferror
    - strcmp
    - fopen
    - pg_fatal
    - fclose
    - read_file_contents
    - free
    - ParseScript
    linkageType: ''
    returnType: void
    signature: void process_file(const char *filename, int weight)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseScript
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bi
    - weight
    argTypes:
    - BuiltinScript*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6202
      start: 6198
    functionDepth: 4
    functionLinenumber: 6198
    functionLinenumberEnd: 6202
    functionName: process_builtin
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - ParseScript
    linkageType: ''
    returnType: void
    signature: void process_builtin(const BuiltinScript *bi, int weight)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6210,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6211,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6212,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6214
      start: 6205
    functionDepth: 1
    functionLinenumber: 6205
    functionLinenumberEnd: 6214
    functionName: listAvailableScripts
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - lengthof
    - fprintf
    linkageType: ''
    returnType: void
    signature: void listAvailableScripts(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6222,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6225,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6227,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6240,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6242,1
    - Dst: listAvailableScripts
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6244,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6246
      start: 6217
    functionDepth: 2
    functionLinenumber: 6217
    functionLinenumberEnd: 6246
    functionName: findBuiltin
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - listAvailableScripts
    - strncmp
    - strlen
    - pg_log_error
    - exit
    - lengthof
    linkageType: ''
    returnType: BuiltinScript
    signature: 'BuiltinScript *

      findBuiltin(const char *name)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6259,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6266,1
    - Dst: strncpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6267,1
    - Dst: strtol
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6272,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6274,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6276,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6282,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - option
    - script
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6287
      start: 6253
    functionDepth: 1
    functionLinenumber: 6253
    functionLinenumberEnd: 6287
    functionName: parseScriptWeight
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strncpy
    - strtol
    - strrchr
    - pg_fatal
    - pg_malloc
    - pg_strdup
    linkageType: ''
    returnType: int
    signature: int parseScriptWeight(const char *option, char **script)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6294,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6297,1
    - Dst: CheckConditional
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - script
    argTypes:
    - ParsedScript*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6303
      start: 6290
    functionDepth: 2
    functionLinenumber: 6290
    functionLinenumberEnd: 6303
    functionName: addScript
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - CheckConditional
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void addScript(const ParsedScript *script)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6339,1
    - Dst: mergeSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6342,1
    - Dst: mergeSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6343,1
    - Dst: sqrt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6362,1
    - Dst: getFailures
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6369,1
    - Dst: getFailures
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6369,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6374,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6375,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6380,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6383,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6389,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6391,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6397,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6400,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 5
    argNames:
    - threads
    - test_start
    - now
    - last
    - last_report
    argTypes:
    - TState*
    - int64
    - pg_time_usec_t
    - StatsData*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6404
      start: 6311
    functionDepth: 2
    functionLinenumber: 6311
    functionLinenumberEnd: 6404
    functionName: printProgressReport
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - mergeSimpleStats
    - PG_TIME_GET_DOUBLE
    - initStats
    - getFailures
    - fprintf
    - sqrt
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void printProgressReport(TState *threads, int64 test_start, pg_time_usec_t
      now,\n\t\t\t\t\tStatsData *last, int64 *last_report)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqrt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6412,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6414,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - prefix
    - ss
    argTypes:
    - char*
    - SimpleStats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6417
      start: 6406
    functionDepth: 0
    functionLinenumber: 6406
    functionLinenumberEnd: 6417
    functionName: printSimpleStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - sqrt
    - printf
    linkageType: ''
    returnType: void
    signature: void printSimpleStats(const char *prefix, SimpleStats *ss)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6423,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6432,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6436,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6441,1
    - Dst: _
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6441,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6446,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6448
      start: 6420
    functionDepth: 1
    functionLinenumber: 6420
    functionLinenumberEnd: 6448
    functionName: printVersion
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - _
    - formatPGVersionNumber
    - PQparameterStatus
    - printf
    - fflush
    - PQserverVersion
    linkageType: ''
    returnType: void
    signature: void printVersion(PGconn *con)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: getFailures
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6459,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6461,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6465,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6467,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6470,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6472,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6473,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6474,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6477,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6481,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6482,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6487,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6488,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6500,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6505,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6508,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6511,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6519,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6521,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6525,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6529,1
    - Dst: printSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6534,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6538,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6551,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6566,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6567,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6571,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6572,1
    - Dst: getFailures
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6585,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6589,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6600,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6603,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6609,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6613,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6617,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6629,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6632,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6637,1
    - Dst: printSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6642,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6653,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6666,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6672,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 78
    argCount: 5
    argNames:
    - total
    - total_duration
    - conn_total_duration
    - conn_elapsed_duration
    - latency_late
    argTypes:
    - StatsData*
    - pg_time_usec_t
    - pg_time_usec_t
    - pg_time_usec_t
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6682
      start: 6451
    functionDepth: 1
    functionLinenumber: 6451
    functionLinenumberEnd: 6682
    functionName: printResults
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - getFailures
    - printf
    - printSimpleStats
    - PG_TIME_GET_DOUBLE
    linkageType: ''
    returnType: void
    signature: "void printResults(StatsData *total,\n\t\t\t pg_time_usec_t total_duration,
      /* benchmarking time */\n\t\t\t pg_time_usec_t conn_total_duration,\t/* is_connect
      */\n\t\t\t pg_time_usec_t conn_elapsed_duration,\t/* !is_connect */\n\t\t\t
      int64 latency_late)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6693,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6696,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6698,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6701,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6703,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6711,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6713,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6714,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6720,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6725,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - seed
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6728
      start: 6688
    functionDepth: 2
    functionLinenumber: 6688
    functionLinenumberEnd: 6728
    functionName: set_random_seed
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - strcmp
    - sscanf
    - pg_log_error_detail
    - pg_log_info
    - pg_strong_random
    - pg_time_now
    - pg_prng_seed
    linkageType: ''
    returnType: bool
    signature: bool set_random_seed(const char *seed)
  - BBCount: 130
    BranchProfiles: []
    Callsites:
    - Dst: pg_initialize_timing
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6823,1
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6829,1
    - Dst: INT64CONST
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6830,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6830,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6832,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6833,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6837,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6837,1
    - Dst: usage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6839,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6840,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6842,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6842,1
    - Dst: puts
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6844,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6845,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6849,1
    - Dst: set_random_seed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6852,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6852,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6853,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6855,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6862,1
    - Dst: listAvailableScripts
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6864,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6865,1
    - Dst: parseScriptWeight
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6867,1
    - Dst: process_builtin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6868,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6868,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6874,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6877,1
    - Dst: getrlimit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6880,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6881,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6885,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6887,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6888,1
    - Dst: setrlimit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6894,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6896,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6898,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6899,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6909,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6917,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6918,1
    - Dst: putVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6921,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6922,1
    - Dst: parseScriptWeight
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6926,1
    - Dst: process_file
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6927,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6932,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6934,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6937,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6943,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6944,1
    - Dst: checkInitSteps
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6945,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6950,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6953,1
    - Dst: atof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6962,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6965,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6973,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6976,1
    - Dst: process_builtin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6982,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6982,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6987,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6991,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6993,1
    - Dst: atof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7006,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7011,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7018,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7020,1
    - Dst: process_builtin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7023,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7023,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7029,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7031,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7035,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7037,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7040,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7052,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7056,1
    - Dst: atof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7060,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7062,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7066,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7068,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7076,1
    - Dst: set_random_seed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7084,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7085,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7089,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7091,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7092,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7097,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7099,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7103,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7105,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7108,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7117,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7120,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7135,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7143,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7144,1
    - Dst: process_builtin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7151,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7151,1
    - Dst: postprocess_sql_command
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7163,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7170,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7197,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7199,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7202,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7208,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7210,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7211,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7217,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7220,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7227,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7234,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7241,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7244,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7245,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7246,1
    - Dst: runInitSteps
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7250,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7251,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7256,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7260,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7272,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7275,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7278,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7281,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7284,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7287,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7292,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7299,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7303,1
    - Dst: memset
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7304,1
    - Dst: putVariableValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7318,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7320,1
    - Dst: putVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7324,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7326,1
    - Dst: conditional_stack_create
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7335,1
    - Dst: initRandomState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7336,1
    - Dst: doConnect
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7340,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7342,1
    - Dst: printVersion
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7345,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7347,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7348,1
    - Dst: PQport
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7348,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7350,1
    - Dst: GetTableInfo
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7353,1
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7359,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7363,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7364,1
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7372,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7375,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7376,1
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7380,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7382,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7385,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7387,1
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7391,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7394,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7396,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7401,1
    - Dst: tryExecuteStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7402,1
    - Dst: tryExecuteStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7403,1
    - Dst: tryExecuteStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7404,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7405,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7409,1
    - Dst: tryExecuteStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7410,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7411,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7414,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7417,1
    - Dst: initRandomState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7428,1
    - Dst: initRandomState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7429,1
    - Dst: initRandomState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7430,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7433,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7439,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7442,1
    - Dst: setalarm
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7446,1
    - Dst: THREAD_BARRIER_INIT
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7448,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7450,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7457,1
    - Dst: THREAD_CREATE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7458,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7461,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7465,1
    - Dst: threadRun
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7470,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7473,1
    - Dst: THREAD_JOIN
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7481,1
    - Dst: mergeSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7488,1
    - Dst: mergeSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7489,1
    - Dst: disconnect_all
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7510,1
    - Dst: printResults
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7519,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7519,1
    - Dst: THREAD_BARRIER_DESTROY
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7522,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7525,1
    CyclomaticComplexity: 169
    EdgeCount: 169
    ICount: 463
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7528
      start: 6730
    functionDepth: 5
    functionLinenumber: 6730
    functionLinenumberEnd: 7528
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - tryExecuteStatement
    - gettimeofday
    - get_progname
    - strcmp
    - set_random_seed
    - strchr
    - putVariable
    - runInitSteps
    - get_user_name_or_exit
    - disconnect_all
    - getrlimit
    - doConnect
    - pg_realloc
    - GetTableInfo
    - lookupVariable
    - puts
    - pg_log_error
    - pg_realloc_array
    - fprintf
    - listAvailableScripts
    - getpid
    - mergeSimpleStats
    - THREAD_CREATE
    - pg_log_debug
    - postprocess_sql_command
    - findBuiltin
    - PQhost
    - Assert
    - PQfinish
    - process_builtin
    - checkInitSteps
    - getenv
    - PQdb
    - PQport
    - usage
    - initStats
    - printResults
    - THREAD_BARRIER_INIT
    - option_parse_int
    - setalarm
    - getopt_long
    - pg_initialize_timing
    - process_file
    - atof
    - conditional_stack_create
    - initRandomState
    - putVariableInt
    - strlen
    - memset
    - printVersion
    - pg_malloc_array
    - pg_free
    - exit
    - pg_log_error_hint
    - threadRun
    - pg_strdup
    - strcat
    - pg_prng_uint64
    - pg_strcasecmp
    - INT64CONST
    - THREAD_BARRIER_DESTROY
    - pg_logging_init
    - THREAD_JOIN
    - pg_time_now
    - pg_fatal
    - parseScriptWeight
    - pg_logging_increase_verbosity
    - atoi
    - pg_malloc0_object
    - putVariableValue
    - setrlimit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: alloc_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7538,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7552,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7554,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7556,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7559,1
    - Dst: THREAD_BARRIER_WAIT
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7567,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7569,1
    - Dst: doConnect
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7581,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7584,1
    - Dst: THREAD_BARRIER_WAIT
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7591,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7593,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7604,1
    - Dst: clear_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7618,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7631,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7646,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7650,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7650,1
    - Dst: add_socket_to_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7654,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7671,1
    - Dst: wait_on_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7691,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7695,1
    - Dst: wait_on_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7700,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7711,1
    - Dst: clear_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7720,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7733,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7737,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7737,1
    - Dst: socket_has_input
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7741,1
    - Dst: advanceConnectionState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7751,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7772,1
    - Dst: printProgressReport
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7782,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7807,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7809,1
    - Dst: disconnect_all
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7814,1
    - Dst: doLog
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7821,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7823,1
    - Dst: free_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7826,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 132
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7828
      start: 7530
    functionDepth: 6
    functionLinenumber: 7530
    functionLinenumberEnd: 7828
    functionName: THREAD_FUNC_CC::threadRun
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - disconnect_all
    - fopen
    - doConnect
    - pg_log_error
    - free_socket_set
    - wait_on_socket_set
    - socket_has_input
    - doLog
    - initStats
    - clear_socket_set
    - add_socket_to_set
    - pg_time_now_lazy
    - fclose
    - PQsocket
    - alloc_socket_set
    - PQerrorMessage
    - pg_usleep
    - exit
    - pg_fatal
    - advanceConnectionState
    - pg_time_now
    - THREAD_BARRIER_WAIT
    - printProgressReport
    - snprintf
    linkageType: ''
    returnType: THREAD_FUNC_RETURN_TYPE
    signature: 'THREAD_FUNC_RETURN_TYPE THREAD_FUNC_CC

      threadRun(void *arg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - st
    argTypes:
    - CState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7838
      start: 7830
    functionDepth: 1
    functionLinenumber: 7830
    functionLinenumberEnd: 7838
    functionName: finishCon
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 2
    functionsReached:
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void finishCon(CState *st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7850
      start: 7846
    functionDepth: 0
    functionLinenumber: 7846
    functionLinenumberEnd: 7850
    functionName: handle_sig_alarm
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handle_sig_alarm(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7855,1
    - Dst: alarm
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - seconds
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7857
      start: 7852
    functionDepth: 0
    functionLinenumber: 7852
    functionLinenumberEnd: 7857
    functionName: setalarm
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - pqsignal
    - alarm
    linkageType: ''
    returnType: void
    signature: void setalarm(int seconds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lpParameter
    - TimerOrWaitFired
    argTypes:
    - PVOID
    - BOOLEAN
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7865
      start: 7861
    functionDepth: 0
    functionLinenumber: 7861
    functionLinenumberEnd: 7865
    functionName: win32_timer_callback
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: VOID
    signature: VOID win32_timer_callback(PVOID lpParameter, BOOLEAN TimerOrWaitFired)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CreateTimerQueue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7874,1
    - Dst: CreateTimerQueueTimer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7876,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7879,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - seconds
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7880
      start: 7867
    functionDepth: 0
    functionLinenumber: 7867
    functionLinenumberEnd: 7880
    functionName: setalarm
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - CreateTimerQueueTimer
    - CreateTimerQueue
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void setalarm(int seconds)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - count
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7932
      start: 7922
    functionDepth: 1
    functionLinenumber: 7922
    functionLinenumberEnd: 7932
    functionName: alloc_socket_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - pg_malloc0
    linkageType: ''
    returnType: socket_set
    signature: 'socket_set *

      alloc_socket_set(int count)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sa
    argTypes:
    - socket_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7938
      start: 7934
    functionDepth: 1
    functionLinenumber: 7934
    functionLinenumberEnd: 7938
    functionName: free_socket_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void free_socket_set(socket_set *sa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sa
    argTypes:
    - socket_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7944
      start: 7940
    functionDepth: 0
    functionLinenumber: 7940
    functionLinenumberEnd: 7944
    functionName: clear_socket_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void clear_socket_set(socket_set *sa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - sa
    - fd
    - idx
    argTypes:
    - socket_set*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7954
      start: 7946
    functionDepth: 1
    functionLinenumber: 7946
    functionLinenumberEnd: 7954
    functionName: add_socket_to_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void add_socket_to_set(socket_set *sa, int fd, int idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ppoll
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7965,1
    - Dst: ppoll
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7969,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - sa
    - usecs
    argTypes:
    - socket_set*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7971
      start: 7956
    functionDepth: 0
    functionLinenumber: 7956
    functionLinenumberEnd: 7971
    functionName: wait_on_socket_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - ppoll
    linkageType: ''
    returnType: int
    signature: int wait_on_socket_set(socket_set *sa, int64 usecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7987,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - sa
    - fd
    - idx
    argTypes:
    - socket_set*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7989
      start: 7973
    functionDepth: 1
    functionLinenumber: 7973
    functionLinenumberEnd: 7989
    functionName: socket_has_input
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool socket_has_input(socket_set *sa, int fd, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - count
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7999
      start: 7995
    functionDepth: 1
    functionLinenumber: 7995
    functionLinenumberEnd: 7999
    functionName: alloc_socket_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - pg_malloc0_object
    linkageType: ''
    returnType: socket_set
    signature: 'socket_set *

      alloc_socket_set(int count)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sa
    argTypes:
    - socket_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8005
      start: 8001
    functionDepth: 1
    functionLinenumber: 8001
    functionLinenumberEnd: 8005
    functionName: free_socket_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void free_socket_set(socket_set *sa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sa
    argTypes:
    - socket_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8012
      start: 8007
    functionDepth: 0
    functionLinenumber: 8007
    functionLinenumberEnd: 8012
    functionName: clear_socket_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - FD_ZERO
    linkageType: ''
    returnType: void
    signature: void clear_socket_set(socket_set *sa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8021,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8023,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8028,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8030,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8031,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8034,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - sa
    - fd
    - idx
    argTypes:
    - socket_set*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8037
      start: 8014
    functionDepth: 1
    functionLinenumber: 8014
    functionLinenumberEnd: 8037
    functionName: add_socket_to_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - FD_SET
    - pg_log_error
    - exit
    - pg_log_error_hint
    linkageType: ''
    returnType: void
    signature: void add_socket_to_set(socket_set *sa, int fd, int idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: select
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8048,1
    - Dst: select
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8052,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - sa
    - usecs
    argTypes:
    - socket_set*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8054
      start: 8039
    functionDepth: 1
    functionLinenumber: 8039
    functionLinenumberEnd: 8054
    functionName: wait_on_socket_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - select
    linkageType: ''
    returnType: int
    signature: int wait_on_socket_set(socket_set *sa, int64 usecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FD_ISSET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:8059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sa
    - fd
    - idx
    argTypes:
    - socket_set*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8060
      start: 8056
    functionDepth: 0
    functionLinenumber: 8056
    functionLinenumberEnd: 8060
    functionName: socket_has_input
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - FD_ISSET
    linkageType: ''
    returnType: bool
    signature: bool socket_has_input(socket_set *sa, int fd, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - workerStatus
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: WORKER_IS_RUNNING
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WORKER_IS_RUNNING(workerStatus)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 134
    functionName: piperead
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: piperead(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: pipewrite
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pipewrite(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: pgpipe
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgpipe(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: piperead
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: piperead(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 142
    functionName: pipewrite
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pipewrite(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 193
    functionName: write_stderr
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: write_stderr(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - msg
    - ','
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: messageStartsWith
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: messageStartsWith(msg, prefix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TlsAlloc
      Src: /src/postgres/src/bin/pg_dump/parallel.c:247,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:248,1
    - Dst: WSAStartup
      Src: /src/postgres/src/bin/pg_dump/parallel.c:251,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/bin/pg_dump/parallel.c:251,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 258
    functionName: init_parallel_dump_utils
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - TlsAlloc
    - pg_fatal
    - WSAStartup
    - GetCurrentThreadId
    - MAKEWORD
    linkageType: ''
    returnType: void
    signature: void init_parallel_dump_utils(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:273,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_dump/parallel.c:275,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 281
    functionName: GetMyPSlot
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - getpid
    - GetCurrentThreadId
    linkageType: ''
    returnType: ParallelSlot
    signature: 'ParallelSlot *

      GetMyPSlot(ParallelState *pstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TlsGetValue
      Src: /src/postgres/src/bin/pg_dump/parallel.c:302,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/parallel.c:309,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/parallel.c:314,1
    - Dst: TlsSetValue
      Src: /src/postgres/src/bin/pg_dump/parallel.c:316,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 322
    functionName: getThreadLocalPQExpBuffer
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - resetPQExpBuffer
    - TlsSetValue
    - TlsGetValue
    - createPQExpBuffer
    linkageType: ''
    returnType: PQExpBuffer
    signature: PQExpBuffer getThreadLocalPQExpBuffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: on_exit_nicely
      Src: /src/postgres/src/bin/pg_dump/parallel.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 334
    functionName: on_exit_close_archive
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - on_exit_nicely
    linkageType: ''
    returnType: void
    signature: void on_exit_close_archive(Archive *AHX)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetMyPSlot
      Src: /src/postgres/src/bin/pg_dump/parallel.c:348,1
    - Dst: ShutdownWorkersHard
      Src: /src/postgres/src/bin/pg_dump/parallel.c:356,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/parallel.c:359,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/parallel.c:372,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:375,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:376,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/parallel.c:384,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 386
    functionName: archive_close_connection
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - ShutdownWorkersHard
    - GetMyPSlot
    - closesocket
    - DisconnectDatabase
    linkageType: ''
    returnType: void
    signature: void archive_close_connection(int code, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:408,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_dump/parallel.c:420,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:428,1
    - Dst: PQcancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:435,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:437,1
    - Dst: WaitForTerminatingWorkers
      Src: /src/postgres/src/bin/pg_dump/parallel.c:441,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 442
    functionName: ShutdownWorkersHard
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - WaitForTerminatingWorkers
    - kill
    - LeaveCriticalSection
    - PQcancel
    - EnterCriticalSection
    - closesocket
    linkageType: ''
    returnType: void
    signature: void ShutdownWorkersHard(ParallelState *pstate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HasEveryWorkerTerminated
      Src: /src/postgres/src/bin/pg_dump/parallel.c:450,1
    - Dst: wait
      Src: /src/postgres/src/bin/pg_dump/parallel.c:458,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/parallel.c:472,1
    - Dst: WORKER_IS_RUNNING
      Src: /src/postgres/src/bin/pg_dump/parallel.c:479,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/bin/pg_dump/parallel.c:485,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:486,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:488,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_dump/parallel.c:497,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:505,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 509
    functionName: WaitForTerminatingWorkers
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - CloseHandle
    - Assert
    - WaitForMultipleObjects
    - pg_malloc_array
    - HasEveryWorkerTerminated
    - wait
    - pg_free
    - WORKER_IS_RUNNING
    linkageType: ''
    returnType: void
    signature: void WaitForTerminatingWorkers(ParallelState *pstate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:558,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:559,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:560,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_dump/parallel.c:575,1
    - Dst: PQcancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:584,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:594,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:595,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:597,1
    - Dst: _exit
      Src: /src/postgres/src/bin/pg_dump/parallel.c:604,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 605
    functionName: sigTermHandler
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - pqsignal
    - kill
    - PQcancel
    - write_stderr
    - _exit
    linkageType: ''
    returnType: void
    signature: void sigTermHandler(SIGNAL_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:621,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:622,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 610
    functionDepth: 0
    functionLinenumber: 610
    functionLinenumberEnd: 625
    functionName: set_cancel_handler
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - pqsignal
    linkageType: ''
    returnType: void
    signature: void set_cancel_handler(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: set_cancel_in_progress
      Src: /src/postgres/src/bin/pg_dump/parallel.c:652,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:655,1
    - Dst: PQcancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:671,1
    - Dst: PQcancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:680,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:683,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:692,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:693,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:695,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - dwCtrlType
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 700
    functionName: consoleHandler
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - set_cancel_in_progress
    - LeaveCriticalSection
    - PQcancel
    - write_stderr
    - EnterCriticalSection
    linkageType: ''
    returnType: BOOL
    signature: BOOL consoleHandler(DWORD dwCtrlType)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: InitializeCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:712,1
    - Dst: SetConsoleCtrlHandler
      Src: /src/postgres/src/bin/pg_dump/parallel.c:714,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 716
    functionName: set_cancel_handler
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - SetConsoleCtrlHandler
    - InitializeCriticalSection
    linkageType: ''
    returnType: void
    signature: void set_cancel_handler(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: set_cancel_handler
      Src: /src/postgres/src/bin/pg_dump/parallel.c:738,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:746,1
    - Dst: PQfreeCancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:755,1
    - Dst: PQgetCancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:759,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:771,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:776,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - AH
    - conn
    argTypes:
    - ArchiveHandle*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 778
    functionName: set_archive_cancel_info
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - PQgetCancel
    - set_cancel_handler
    - LeaveCriticalSection
    - PQfreeCancel
    - EnterCriticalSection
    - GetCurrentThreadId
    linkageType: ''
    returnType: void
    signature: void set_archive_cancel_info(ArchiveHandle *AH, PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:790,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 798
    functionName: set_cancel_pstate
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - EnterCriticalSection
    - LeaveCriticalSection
    linkageType: ''
    returnType: void
    signature: void set_cancel_pstate(ParallelState *pstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:810,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slot
    - AH
    argTypes:
    - ParallelSlot*
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 806
    functionDepth: 0
    functionLinenumber: 806
    functionLinenumberEnd: 818
    functionName: set_cancel_slot_archive
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - EnterCriticalSection
    - LeaveCriticalSection
    linkageType: ''
    returnType: void
    signature: void set_cancel_slot_archive(ParallelSlot *slot, ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CloneArchive
      Src: /src/postgres/src/bin/pg_dump/parallel.c:844,1
    - Dst: set_cancel_slot_archive
      Src: /src/postgres/src/bin/pg_dump/parallel.c:847,1
    - Dst: WaitForCommands
      Src: /src/postgres/src/bin/pg_dump/parallel.c:857,1
    - Dst: set_cancel_slot_archive
      Src: /src/postgres/src/bin/pg_dump/parallel.c:862,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/parallel.c:863,1
    - Dst: DeCloneArchive
      Src: /src/postgres/src/bin/pg_dump/parallel.c:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - AH
    - slot
    argTypes:
    - ArchiveHandle*
    - ParallelSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 865
    functionName: RunWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - CloneArchive
    - DisconnectDatabase
    - set_cancel_slot_archive
    - WaitForCommands
    - DeCloneArchive
    linkageType: ''
    returnType: void
    signature: void RunWorker(ArchiveHandle *AH, ParallelSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:878,1
    - Dst: RunWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:881,1
    - Dst: _endthreadex
      Src: /src/postgres/src/bin/pg_dump/parallel.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - wi
    argTypes:
    - WorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 871
    functionDepth: 2
    functionLinenumber: 871
    functionLinenumberEnd: 886
    functionName: init_spawned_worker_win32
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - _endthreadex
    - RunWorker
    - free
    linkageType: ''
    returnType: unsigned
    signature: unsigned init_spawned_worker_win32(WorkerInfo *wi)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:900,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/parallel.c:902,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/parallel.c:913,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/parallel.c:915,1
    - Dst: set_archive_cancel_info
      Src: /src/postgres/src/bin/pg_dump/parallel.c:937,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_dump/parallel.c:940,1
    - Dst: pgpipe
      Src: /src/postgres/src/bin/pg_dump/parallel.c:956,1
    - Dst: pgpipe
      Src: /src/postgres/src/bin/pg_dump/parallel.c:956,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:957,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/parallel.c:968,1
    - Dst: _beginthreadex
      Src: /src/postgres/src/bin/pg_dump/parallel.c:973,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:976,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_dump/parallel.c:980,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_dump/parallel.c:987,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:993,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:995,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1003,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1004,1
    - Dst: RunWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1008,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1011,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1016,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1024,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1026,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1036,1
    - Dst: set_archive_cancel_info
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1042,1
    - Dst: set_cancel_pstate
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1050,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 54
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 894
    functionDepth: 2
    functionLinenumber: 894
    functionLinenumberEnd: 1053
    functionName: ParallelBackupStart
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - getpid
    - pg_malloc_object
    - set_cancel_pstate
    - fork
    - pqsignal
    - Assert
    - _beginthreadex
    - pg_fatal
    - pg_malloc0_array
    - RunWorker
    - set_archive_cancel_info
    - fflush
    - pgpipe
    - closesocket
    - exit
    linkageType: ''
    returnType: ParallelState
    signature: 'ParallelState *

      ParallelBackupStart(ArchiveHandle *AH)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1068,1
    - Dst: IsEveryWorkerIdle
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1068,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1073,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1074,1
    - Dst: WaitForTerminatingWorkers
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1078,1
    - Dst: set_cancel_pstate
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1085,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1088,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1089,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1090,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - AH
    - pstate
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1058
    functionDepth: 2
    functionLinenumber: 1058
    functionLinenumberEnd: 1091
    functionName: ParallelBackupEnd
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - WaitForTerminatingWorkers
    - set_cancel_pstate
    - IsEveryWorkerIdle
    - Assert
    - free
    - closesocket
    linkageType: ''
    returnType: void
    signature: void ParallelBackupEnd(ArchiveHandle *AH, ParallelState *pstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1112,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1114,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - AH
    - te
    - act
    - buf
    - buflen
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - T_Action
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1107
    functionDepth: 1
    functionLinenumber: 1107
    functionLinenumberEnd: 1117
    functionName: buildWorkerCommand
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void buildWorkerCommand(ArchiveHandle *AH, TocEntry *te, T_Action
      act,\n\t\t\t\t   char *buf, int buflen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: messageStartsWith
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1129,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1132,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1133,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1133,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1134,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1135,1
    - Dst: messageStartsWith
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1137,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1140,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1141,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1141,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1142,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1143,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - AH
    - te
    - act
    - msg
    argTypes:
    - ArchiveHandle*
    - TocEntry**
    - T_Action*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1122
    functionDepth: 1
    functionLinenumber: 1122
    functionLinenumberEnd: 1148
    functionName: parseWorkerCommand
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - sscanf
    - getTocEntryByDumpId
    - pg_fatal
    - messageStartsWith
    - strlen
    linkageType: ''
    returnType: void
    signature: "void parseWorkerCommand(ArchiveHandle *AH, TocEntry **te, T_Action
      *act,\n\t\t\t\t   const char *msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - AH
    - te
    - act
    - status
    - buf
    - buflen
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - T_Action
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1155
    functionDepth: 0
    functionLinenumber: 1155
    functionLinenumberEnd: 1163
    functionName: buildWorkerResponse
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void buildWorkerResponse(ArchiveHandle *AH, TocEntry *te, T_Action
      act, int status,\n\t\t\t\t\tchar *buf, int buflen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: messageStartsWith
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1179,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1181,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1183,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1184,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1184,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - AH
    - te
    - msg
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1170
    functionDepth: 1
    functionLinenumber: 1170
    functionLinenumberEnd: 1193
    functionName: parseWorkerResponse
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - sscanf
    - pg_fatal
    - messageStartsWith
    - strlen
    linkageType: ''
    returnType: int
    signature: "int parseWorkerResponse(ArchiveHandle *AH, TocEntry *te,\n\t\t\t\t\tconst
      char *msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetIdleWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1216,1
    - Dst: WaitForWorkers
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1217,1
    - Dst: buildWorkerCommand
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1220,1
    - Dst: sendMessageToWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - AH
    - pstate
    - te
    - act
    - callback
    - callback_data
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    - TocEntry*
    - T_Action
    - ParallelCompletionPtr
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1204
    functionDepth: 2
    functionLinenumber: 1204
    functionLinenumberEnd: 1229
    functionName: DispatchJobForTocEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - sendMessageToWorker
    - WaitForWorkers
    - GetIdleWorker
    - buildWorkerCommand
    linkageType: ''
    returnType: void
    signature: "void DispatchJobForTocEntry(ArchiveHandle *AH,\n\t\t\t\t\t   ParallelState
      *pstate,\n\t\t\t\t\t   TocEntry *te,\n\t\t\t\t\t   T_Action act,\n\t\t\t\t\t
      \  ParallelCompletionPtr callback,\n\t\t\t\t\t   void *callback_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1235
    functionDepth: 0
    functionLinenumber: 1235
    functionLinenumberEnd: 1246
    functionName: GetIdleWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int GetIdleWorker(ParallelState *pstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WORKER_IS_RUNNING
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1251
    functionDepth: 1
    functionLinenumber: 1251
    functionLinenumberEnd: 1262
    functionName: HasEveryWorkerTerminated
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - WORKER_IS_RUNNING
    linkageType: ''
    returnType: bool
    signature: bool HasEveryWorkerTerminated(ParallelState *pstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1267
    functionDepth: 0
    functionLinenumber: 1267
    functionLinenumberEnd: 1278
    functionName: IsEveryWorkerIdle
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsEveryWorkerIdle(ParallelState *pstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1308,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1311,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1313,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1315,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1318,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1320,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1321,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1326,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1300
    functionDepth: 1
    functionLinenumber: 1300
    functionLinenumberEnd: 1328
    functionName: lockTableForWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - fmtQualifiedId
    - pg_fatal
    - destroyPQExpBuffer
    - PQresultStatus
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void lockTableForWorker(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getMessageFromLeader
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1346,1
    - Dst: parseWorkerCommand
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1353,1
    - Dst: lockTableForWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1358,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1369,1
    - Dst: buildWorkerResponse
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1372,1
    - Dst: sendMessageToLeader
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1374,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1377,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - AH
    - pipefd
    argTypes:
    - ArchiveHandle*
    - int[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1335
    functionDepth: 2
    functionLinenumber: 1335
    functionLinenumberEnd: 1379
    functionName: WaitForCommands
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - sendMessageToLeader
    - buildWorkerResponse
    - Assert
    - parseWorkerCommand
    - lockTableForWorker
    - free
    - getMessageFromLeader
    linkageType: ''
    returnType: void
    signature: void WaitForCommands(ArchiveHandle *AH, int pipefd[2])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getMessageFromWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1404,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1410,1
    - Dst: messageStartsWith
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1415,1
    - Dst: parseWorkerResponse
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1421,1
    - Dst: ParallelSlot*::callback
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1422,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1427,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1431,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - AH
    - pstate
    - do_wait
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1397
    functionDepth: 2
    functionLinenumber: 1397
    functionLinenumberEnd: 1434
    functionName: ListenToWorkers
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - ParallelSlot*::callback
    - pg_fatal
    - messageStartsWith
    - free
    - parseWorkerResponse
    - getMessageFromWorker
    linkageType: ''
    returnType: bool
    signature: bool ListenToWorkers(ArchiveHandle *AH, ParallelState *pstate, bool
      do_wait)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1463,1
    - Dst: IsEveryWorkerIdle
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1463,1
    - Dst: ListenToWorkers
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1474,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1491,1
    - Dst: GetIdleWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1494,1
    - Dst: IsEveryWorkerIdle
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1498,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - AH
    - pstate
    - mode
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    - WFW_WaitOption
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1450
    functionDepth: 3
    functionLinenumber: 1450
    functionLinenumberEnd: 1506
    functionName: WaitForWorkers
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - Assert
    - GetIdleWorker
    - ListenToWorkers
    - IsEveryWorkerIdle
    linkageType: ''
    returnType: void
    signature: void WaitForWorkers(ArchiveHandle *AH, ParallelState *pstate, WFW_WaitOption
      mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readMessageFromPipe
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pipefd
    argTypes:
    - int[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1515
    functionDepth: 1
    functionLinenumber: 1515
    functionLinenumberEnd: 1519
    functionName: getMessageFromLeader
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - readMessageFromPipe
    linkageType: ''
    returnType: char
    signature: 'char *

      getMessageFromLeader(int pipefd[2])'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1529,1
    - Dst: pipewrite
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1531,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - pipefd
    - str
    argTypes:
    - int[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1526
    functionDepth: 1
    functionLinenumber: 1526
    functionLinenumberEnd: 1533
    functionName: sendMessageToLeader
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - pipewrite
    - strlen
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void sendMessageToLeader(int pipefd[2], const char *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: select
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1548,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1554,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 2
    argNames:
    - maxFd
    - workerset
    argTypes:
    - int
    - fd_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1539
    functionDepth: 1
    functionLinenumber: 1539
    functionLinenumberEnd: 1561
    functionName: select_loop
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - WSAGetLastError
    - select
    linkageType: ''
    returnType: int
    signature: int select_loop(int maxFd, fd_set *workerset)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1587,1
    - Dst: WORKER_IS_RUNNING
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1590,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1592,1
    - Dst: select_loop
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1599,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1600,1
    - Dst: select
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1604,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1609,1
    - Dst: WORKER_IS_RUNNING
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1615,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1617,1
    - Dst: readMessageFromPipe
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1630,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1634,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 3
    argNames:
    - pstate
    - do_wait
    - worker
    argTypes:
    - ParallelState*
    - bool
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1636
      start: 1578
    functionDepth: 1
    functionLinenumber: 1578
    functionLinenumberEnd: 1636
    functionName: getMessageFromWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - Assert
    - select
    - FD_ISSET
    - pg_fatal
    - FD_SET
    - readMessageFromPipe
    - select_loop
    - WORKER_IS_RUNNING
    - FD_ZERO
    linkageType: ''
    returnType: char
    signature: 'char *

      getMessageFromWorker(ParallelState *pstate, bool do_wait, int *worker)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1646,1
    - Dst: pipewrite
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1648,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - pstate
    - worker
    - str
    argTypes:
    - ParallelState*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1643
    functionDepth: 1
    functionLinenumber: 1643
    functionLinenumberEnd: 1652
    functionName: sendMessageToWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - pipewrite
    - strlen
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void sendMessageToWorker(ParallelState *pstate, int worker, const char
      *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1679,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1683,1
    - Dst: piperead
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1684,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1688,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1697,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1702,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1661
    functionDepth: 1
    functionLinenumber: 1661
    functionLinenumberEnd: 1704
    functionName: readMessageFromPipe
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 2
    functionsReached:
    - Assert
    - pg_realloc
    - pg_free
    - pg_malloc
    - piperead
    linkageType: ''
    returnType: char
    signature: 'char *

      readMessageFromPipe(int fd)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1732,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1734,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1735,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1739,1
    - Dst: pg_hton16
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1741,1
    - Dst: pg_hton32
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1742,1
    - Dst: bind
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1743,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1745,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1746,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1747,1
    - Dst: listen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1750,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1752,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1753,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1754,1
    - Dst: getsockname
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1757,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1759,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1760,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1761,1
    - Dst: socket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1768,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1770,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1771,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1772,1
    - Dst: connect
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1777,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1779,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1780,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1781,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1783,1
    - Dst: accept
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1786,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1788,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1789,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1790,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1792,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1797,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 1
    argNames:
    - handles
    argTypes:
    - int[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1718
    functionDepth: 1
    functionLinenumber: 1718
    functionLinenumberEnd: 1799
    functionName: pgpipe
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - connect
    - pg_hton32
    - getsockname
    - accept
    - listen
    - pg_hton16
    - bind
    - memset
    - WSAGetLastError
    - socket
    - closesocket
    - pg_log_error
    linkageType: ''
    returnType: int
    signature: int pgpipe(int handles[2])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: InitCompressorZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void InitCompressorZstd(CompressorState *cs, const pg_compress_specification
      compression_spec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: InitCompressFileHandleZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void InitCompressFileHandleZstd(CompressFileHandle *CFH, const pg_compress_specification
      compression_spec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_CCtx_setParameter
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:65,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:66,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:67,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - cstream
    - param
    - value
    - paramname
    argTypes:
    - ZSTD_CStream*
    - ZSTD_cParameter
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 69
    functionName: _Zstd_CCtx_setParam_or_die
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_CCtx_setParameter
    - ZSTD_isError
    - ZSTD_getErrorName
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void _Zstd_CCtx_setParam_or_die(ZSTD_CStream *cstream,\n\t\t\t\t\t\t
      \  ZSTD_cParameter param, int value, char *paramname)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_createCStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:77,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:79,1
    - Dst: _Zstd_CCtx_setParam_or_die
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:81,1
    - Dst: _Zstd_CCtx_setParam_or_die
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - compress
    argTypes:
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 90
    functionName: _ZstdCStreamParams
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - _Zstd_CCtx_setParam_or_die
    - ZSTD_createCStream
    - pg_fatal
    linkageType: ''
    returnType: ZSTD_CStream
    signature: 'ZSTD_CStream *

      _ZstdCStreamParams(pg_compress_specification compress)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:105,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:108,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:109,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:109,1
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:114,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - AH
    - cs
    - flush
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 121
    functionName: _ZstdWriteCommon
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - CompressorState*::writeF
    - ZSTD_compressStream2
    - ZSTD_isError
    - ZSTD_getErrorName
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _ZstdWriteCommon(ArchiveHandle *AH, CompressorState *cs, bool
      flush)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:130,1
    - Dst: ZSTD_freeDStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:131,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:136,1
    - Dst: _ZstdWriteCommon
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:137,1
    - Dst: ZSTD_freeCStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:138,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:142,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 145
    functionName: EndCompressorZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - Assert
    - ZSTD_freeCStream
    - _ZstdWriteCommon
    - pg_free
    - ZSTD_freeDStream
    linkageType: ''
    returnType: void
    signature: void EndCompressorZstd(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ZstdWriteCommon
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - AH
    - cs
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 158
    functionName: WriteDataToArchiveZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - _ZstdWriteCommon
    linkageType: ''
    returnType: void
    signature: "void WriteDataToArchiveZstd(ArchiveHandle *AH, CompressorState *cs,\n\t\t\t\t\t
      \  const void *data, size_t dLen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_DStreamInSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:166,1
    - Dst: CompressorState*::readF
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:178,1
    - Dst: unconstify
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:178,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:181,1
    - Dst: ZSTD_decompressStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:193,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:194,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:195,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:195,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:201,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 207
    functionName: ReadDataFromArchiveZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_isError
    - ZSTD_getErrorName
    - Assert
    - CompressorState*::readF
    - unconstify
    - pg_fatal
    - ahwrite
    - ZSTD_decompressStream
    - ZSTD_DStreamInSize
    linkageType: ''
    returnType: void
    signature: void ReadDataFromArchiveZstd(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:222,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:226,1
    - Dst: ZSTD_createDStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:230,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:232,1
    - Dst: ZSTD_DStreamInSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:234,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:235,1
    - Dst: ZSTD_DStreamOutSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:243,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:244,1
    - Dst: _ZstdCStreamParams
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:248,1
    - Dst: ZSTD_CStreamOutSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:250,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:251,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 254
    functionName: InitCompressorZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_fatal
    - ZSTD_DStreamOutSize
    - ZSTD_DStreamInSize
    - ZSTD_createDStream
    - pg_malloc0_object
    - pg_malloc
    - ZSTD_CStreamOutSize
    - _ZstdCStreamParams
    linkageType: ''
    returnType: void
    signature: "void InitCompressorZstd(CompressorState *cs,\n\t\t\t\t   const pg_compress_specification
      compression_spec)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_DStreamInSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:266,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:276,1
    - Dst: ZSTD_createDStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:277,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:281,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:292,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:293,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:309,1
    - Dst: unconstify
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:309,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:310,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:313,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:319,1
    - Dst: ZSTD_decompressStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:329,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:331,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:334,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:334,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 46
    argCount: 4
    argNames:
    - ptr
    - size
    - CFH
    - exit_on_error
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 347
    functionName: Zstd_read_internal
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ferror
    - ZSTD_isError
    - ZSTD_getErrorName
    - Assert
    - unconstify
    - pg_fatal
    - pg_malloc0
    - fread
    - ZSTD_createDStream
    - ZSTD_decompressStream
    - ZSTD_DStreamInSize
    linkageType: ''
    returnType: size_t
    signature: size_t Zstd_read_internal(void *ptr, size_t size, CompressFileHandle
      *CFH, bool exit_on_error)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_CStreamOutSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:364,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:365,1
    - Dst: _ZstdCStreamParams
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:367,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:369,1
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:375,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:376,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:377,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:377,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:383,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:387,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 392
    functionName: Zstd_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_compressStream2
    - ZSTD_isError
    - ZSTD_getErrorName
    - pg_fatal
    - fwrite
    - pg_malloc
    - ZSTD_CStreamOutSize
    - _ZstdCStreamParams
    linkageType: ''
    returnType: void
    signature: void Zstd_write(const void *ptr, size_t size, CompressFileHandle *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::read_func
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:399,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 402
    functionName: Zstd_getc
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - CompressFileHandle*::read_func
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int Zstd_getc(CompressFileHandle *CFH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:409,1
    - Dst: Zstd_read_internal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:417,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - buf
    - len
    - CFH
    argTypes:
    - char*
    - int
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 427
    functionName: Zstd_gets
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - Assert
    - Zstd_read_internal
    linkageType: ''
    returnType: char
    signature: 'char *

      Zstd_gets(char *buf, int len, CompressFileHandle *CFH)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Zstd_read_internal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 429
    functionDepth: 2
    functionLinenumber: 429
    functionLinenumberEnd: 433
    functionName: Zstd_read
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - Zstd_read_internal
    linkageType: ''
    returnType: size_t
    signature: size_t Zstd_read(void *ptr, size_t size, CompressFileHandle *CFH)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:451,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:452,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:454,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:460,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:464,1
    - Dst: ZSTD_freeCStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:474,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:475,1
    - Dst: ZSTD_freeDStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:480,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:485,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:487,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:491,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 494
    functionName: Zstd_close
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_compressStream2
    - ZSTD_isError
    - ZSTD_getErrorName
    - ZSTD_freeCStream
    - fclose
    - pg_free
    - strerror
    - ZSTD_freeDStream
    - fwrite
    linkageType: ''
    returnType: bool
    signature: bool Zstd_close(CompressFileHandle *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 502
    functionName: Zstd_eof
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - feof
    linkageType: ''
    returnType: bool
    signature: bool Zstd_eof(CompressFileHandle *CFH)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_extended
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:517,1
    - Dst: dup
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:527,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:531,1
    - Dst: fdopen
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:534,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:537,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:538,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:544,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:547,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - path
    - fd
    - mode
    - CFH
    argTypes:
    - char*
    - int
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 556
    functionName: Zstd_open
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - dup
    - fopen
    - fdopen
    - close
    - pg_malloc_extended
    - pg_free
    linkageType: ''
    returnType: bool
    signature: "bool Zstd_open(const char *path, int fd, const char *mode,\n\t\t  CompressFileHandle
      *CFH)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:563,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - path
    - mode
    - CFH
    argTypes:
    - char*
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 565
    functionName: Zstd_open_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - CompressFileHandle*::open_func
    - sprintf
    linkageType: ''
    returnType: bool
    signature: bool Zstd_open_write(const char *path, const char *mode, CompressFileHandle
      *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 573
    functionName: Zstd_get_error
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      Zstd_get_error(CompressFileHandle *CFH)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 592
    functionName: InitCompressFileHandleZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void InitCompressFileHandleZstd(CompressFileHandle *CFH,\n\t\t\t\t\t\t
      \  const pg_compress_specification compression_spec)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:139,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:147,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:149,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:151,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:157,1
    - Dst: checkSeek
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:160,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:164,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:166,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:168,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:174,1
    - Dst: checkSeek
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:177,1
    - Dst: ReadHead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:179,1
    - Dst: ReadToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:180,1
    - Dst: _getFilePos
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:186,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 188
    functionName: InitArchiveFmt_Custom
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - checkSeek
    - strcmp
    - fopen
    - pg_fatal
    - ReadHead
    - ReadToc
    - _getFilePos
    - pg_malloc0_object
    linkageType: ''
    returnType: void
    signature: void InitArchiveFmt_Custom(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 209
    functionName: _ArchiveEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - pg_malloc0_object
    linkageType: ''
    returnType: void
    signature: void _ArchiveEntry(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WriteOffset
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 226
    functionName: _WriteExtraToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - WriteOffset
    linkageType: ''
    returnType: void
    signature: void _WriteExtraToc(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:243,1
    - Dst: ReadOffset
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:247,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 255
    functionName: _ReadExtraToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - pg_malloc0_object
    - ReadOffset
    - ReadInt
    linkageType: ''
    returnType: void
    signature: void _ReadExtraToc(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 271
    functionName: _PrintExtraToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void _PrintExtraToc(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _getFilePos
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:289,1
    - Dst: _WriteByte
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:293,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:294,1
    - Dst: AllocateCompressor
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 299
    functionName: _StartData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - AllocateCompressor
    - _WriteByte
    - _getFilePos
    - WriteInt
    linkageType: ''
    returnType: void
    signature: void _StartData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CompressorState*::writeData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: _WriteData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - CompressorState*::writeData
    linkageType: ''
    returnType: void
    signature: void _WriteData(ArchiveHandle *AH, const void *data, size_t dLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EndCompressor
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:332,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 337
    functionName: _EndData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - EndCompressor
    - WriteInt
    linkageType: ''
    returnType: void
    signature: void _EndData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _getFilePos
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:354,1
    - Dst: _WriteByte
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:358,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 360
    functionName: _StartLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - _WriteByte
    - _getFilePos
    - WriteInt
    linkageType: ''
    returnType: void
    signature: void _StartLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:375,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:377,1
    - Dst: AllocateCompressor
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 382
    functionName: _StartLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - WriteInt
    - AllocateCompressor
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _StartLO(ArchiveHandle *AH, TocEntry *te, Oid oid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EndCompressor
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:394,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 397
    functionName: _EndLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - EndCompressor
    - WriteInt
    linkageType: ''
    returnType: void
    signature: void _EndLO(ArchiveHandle *AH, TocEntry *te, Oid oid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 409
    functionName: _EndLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - WriteInt
    linkageType: ''
    returnType: void
    signature: void _EndLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:439,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:440,1
    - Dst: _getFilePos
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:445,1
    - Dst: _readBlockHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:447,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:455,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:479,1
    - Dst: _skipData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:488,1
    - Dst: _skipLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:492,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:496,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:505,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:506,1
    - Dst: _readBlockHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:508,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:518,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:523,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:530,1
    - Dst: _PrintData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:536,1
    - Dst: _LoadLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:540,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:544,1
    - Dst: _getFilePos
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:557,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 62
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 562
    functionName: _PrintTocData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - fseeko
    - _skipLOs
    - _skipData
    - getTocEntryByDumpId
    - pg_fatal
    - pg_log_warning
    - _getFilePos
    - _PrintData
    - _LoadLOs
    - _readBlockHeader
    linkageType: ''
    returnType: void
    signature: void _PrintTocData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocateCompressor
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:572,1
    - Dst: CompressorState*::readData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:574,1
    - Dst: EndCompressor
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 576
    functionName: _PrintData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 1
    functionsReached:
    - CompressorState*::readData
    - EndCompressor
    - AllocateCompressor
    linkageType: ''
    returnType: void
    signature: void _PrintData(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StartRestoreLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:583,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:585,1
    - Dst: StartRestoreLO
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:588,1
    - Dst: _PrintData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:589,1
    - Dst: EndRestoreLO
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:590,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:591,1
    - Dst: EndRestoreLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - AH
    - drop
    argTypes:
    - ArchiveHandle*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 595
    functionName: _LoadLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 1
    functionsReached:
    - StartRestoreLO
    - ReadInt
    - StartRestoreLOs
    - EndRestoreLO
    - EndRestoreLOs
    - _PrintData
    linkageType: ''
    returnType: void
    signature: void _LoadLOs(ArchiveHandle *AH, bool drop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:608,1
    - Dst: _skipData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:611,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:612,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 614
    functionName: _skipLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 1
    functionsReached:
    - _skipData
    - ReadInt
    linkageType: ''
    returnType: void
    signature: void _skipLOs(ArchiveHandle *AH)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:629,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:641,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:642,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:648,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:649,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:650,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:652,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:654,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:655,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:657,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:661,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:664,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 665
    functionName: _skipData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 2
    functionsReached:
    - ReadInt
    - fseeko
    - feof
    - pg_fatal
    - fread
    - Max
    - pg_free
    - pg_malloc
    linkageType: ''
    returnType: void
    signature: void _skipData(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:677,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - i
    argTypes:
    - ArchiveHandle*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 674
    functionDepth: 0
    functionLinenumber: 674
    functionLinenumberEnd: 681
    functionName: _WriteByte
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 2
    functionsReached:
    - fputc
    linkageType: ''
    returnType: int
    signature: int _WriteByte(ArchiveHandle *AH, const int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:696,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 700
    functionName: _ReadByte
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - getc
    - READ_ERROR_EXIT
    linkageType: ''
    returnType: int
    signature: int _ReadByte(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 714
    functionName: _WriteBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - fwrite
    linkageType: ''
    returnType: void
    signature: void _WriteBuf(ArchiveHandle *AH, const void *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:726,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:727,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 723
    functionDepth: 1
    functionLinenumber: 723
    functionLinenumberEnd: 728
    functionName: _ReadBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - fread
    - READ_ERROR_EXIT
    linkageType: ''
    returnType: void
    signature: void _ReadBuf(ArchiveHandle *AH, void *buf, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: WriteHead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:753,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:755,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:757,1
    - Dst: WriteToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:758,1
    - Dst: WriteDataChunks
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:759,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:770,1
    - Dst: WriteToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:771,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:774,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:775,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:779,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 782
    functionName: _CloseArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - WriteToc
    - fseeko
    - WriteHead
    - pg_fatal
    - fclose
    - fsync_fname
    - WriteDataChunks
    - ftello
    linkageType: ''
    returnType: void
    signature: void _CloseArchive(ArchiveHandle *AH)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:798,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:804,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:805,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:807,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:809,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:811,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:814,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:815,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:818,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:820,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:822,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:823,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 791
    functionDepth: 1
    functionLinenumber: 791
    functionLinenumberEnd: 824
    functionName: _ReopenArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - fseeko
    - strcmp
    - fopen
    - fclose
    - pg_fatal
    - ftello
    linkageType: ''
    returnType: void
    signature: void _ReopenArchive(ArchiveHandle *AH)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:877,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:878,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:879,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 883
    functionName: _PrepParallelRestore
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - ftello
    - fseeko
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _PrepParallelRestore(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:896,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:897,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:902,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 888
    functionDepth: 1
    functionLinenumber: 888
    functionLinenumberEnd: 910
    functionName: _Clone
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    - memcpy
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _Clone(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 912
    functionDepth: 1
    functionLinenumber: 912
    functionLinenumberEnd: 918
    functionName: _DeClone
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void _DeClone(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parallel_restore
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 924
    functionDepth: 1
    functionLinenumber: 924
    functionLinenumberEnd: 928
    functionName: _WorkerJobRestoreCustom
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - parallel_restore
    linkageType: ''
    returnType: int
    signature: int _WorkerJobRestoreCustom(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:948,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:953,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - AH
    - ctx
    argTypes:
    - ArchiveHandle*
    - lclContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 956
    functionName: _getFilePos
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 4
    functionsReached:
    - pg_fatal
    - ftello
    linkageType: ''
    returnType: pgoff_t
    signature: pgoff_t _getFilePos(ArchiveHandle *AH, lclContext *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:979,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:988,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - AH
    - type
    - id
    argTypes:
    - ArchiveHandle*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 963
    functionDepth: 1
    functionLinenumber: 963
    functionLinenumberEnd: 989
    functionName: _readBlockHeader
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 1
    functionsReached:
    - getc
    - ReadInt
    linkageType: ''
    returnType: void
    signature: void _readBlockHeader(ArchiveHandle *AH, int *type, int *id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:1001,1
    - Dst: _WriteBuf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:1002,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 1004
    functionName: _CustomWriteFunc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - _WriteBuf
    - WriteInt
    linkageType: ''
    returnType: void
    signature: void _CustomWriteFunc(ArchiveHandle *AH, const char *buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:1016,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:1023,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:1024,1
    - Dst: _ReadBuf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:1029,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - AH
    - buf
    - buflen
    argTypes:
    - ArchiveHandle*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1032
    functionName: _CustomReadFunc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - _ReadBuf
    - pg_malloc
    - free
    - ReadInt
    linkageType: ''
    returnType: size_t
    signature: size_t _CustomReadFunc(ArchiveHandle *AH, char **buf, size_t *buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: oidcmp
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: oidcmp(x,y)
  - BBCount: 76
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:149,1
    - Dst: pg_logging_set_level
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:150,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:151,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:151,1
    - Dst: init_parallel_dump_utils
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:153,1
    - Dst: NewRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:155,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:157,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:161,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:161,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:163,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:164,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:166,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:166,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:168,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:169,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:173,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:188,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:194,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:197,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:198,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:201,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:202,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:206,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:209,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:217,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:221,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:225,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:233,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:234,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:242,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:247,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:252,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:258,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:259,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:264,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:268,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:273,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:301,1
    - Dst: set_dump_section
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:305,1
    - Dst: read_restore_filters
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:309,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:313,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:316,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:321,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:326,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:327,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:340,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:342,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:343,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:348,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:355,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:357,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:358,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:362,1
    - Dst: generate_restrict_key
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:373,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:375,1
    - Dst: valid_restrict_key
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:376,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:377,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:382,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:385,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:388,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:393,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:396,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:399,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:404,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:409,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:412,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:416,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:420,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:428,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:433,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:460,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:467,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:468,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:470,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:471,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:473,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:474,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:476,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:477,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:480,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:484,1
    - Dst: OpenArchive
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:488,1
    - Dst: SetArchiveOptions
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:490,1
    - Dst: on_exit_close_archive
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:497,1
    - Dst: SortTocFromFile
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:508,1
    - Dst: PrintTOCSummary
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:513,1
    - Dst: ProcessArchiveRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:516,1
    - Dst: RestoreArchive
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:517,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:522,1
    - Dst: CloseArchive
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:527,1
    CyclomaticComplexity: 111
    EdgeCount: 111
    ICount: 242
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 530
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - strcmp
    - NewRestoreOptions
    - pg_log_warning
    - puts
    - pg_log_error
    - set_pglocale_pgservice
    - SetArchiveOptions
    - simple_string_list_append
    - usage
    - ProcessArchiveRestoreOptions
    - read_restore_filters
    - option_parse_int
    - on_exit_close_archive
    - getopt_long
    - set_dump_section
    - valid_restrict_key
    - strlen
    - RestoreArchive
    - exit
    - exit_nicely
    - pg_log_error_hint
    - pg_strdup
    - generate_restrict_key
    - pg_strcasecmp
    - SortTocFromFile
    - pg_logging_init
    - pg_logging_set_level
    - CloseArchive
    - pg_fatal
    - pg_logging_increase_verbosity
    - OpenArchive
    - PrintTOCSummary
    - init_parallel_dump_utils
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:535,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:535,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:536,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:536,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:537,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:537,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:539,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:539,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:540,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:540,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:541,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:541,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:542,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:542,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:543,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:543,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:544,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:544,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:545,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:545,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:546,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:546,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:548,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:548,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:549,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:549,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:550,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:550,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:551,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:551,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:552,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:552,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:553,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:553,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:554,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:554,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:555,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:555,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:557,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:557,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:558,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:558,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:559,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:559,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:560,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:560,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:561,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:561,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:562,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:562,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:563,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:563,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:564,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:564,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:565,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:565,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:566,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:566,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:567,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:567,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:568,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:568,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:569,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:569,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:571,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:571,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:572,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:572,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:573,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:573,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:574,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:574,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:576,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:576,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:577,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:577,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:578,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:578,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:579,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:579,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:580,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:580,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:581,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:581,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:582,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:582,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:583,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:583,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:584,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:584,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:585,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:585,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:586,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:586,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:587,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:587,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:588,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:588,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:590,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:590,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:591,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:591,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:595,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:595,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:596,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:596,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:597,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:597,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:598,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:598,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:599,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:599,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:600,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:600,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:601,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:601,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:603,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:603,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:606,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:606,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:607,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:607,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:608,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 63
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 609
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 19
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(const char *progname)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: filter_init
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:626,1
    - Dst: filter_read_item
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:628,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:642,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:642,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:644,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:645,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:650,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:655,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:658,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:663,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:668,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:688,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:688,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:690,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:691,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:694,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:700,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:701,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:705,1
    - Dst: filter_free
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:708,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 68
    argCount: 2
    argNames:
    - filename
    - opts
    argTypes:
    - char*
    - RestoreOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 709
    functionName: read_restore_filters
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 1
    functionsReached:
    - filter_init
    - _
    - Assert
    - filter_read_item
    - simple_string_list_append
    - free
    - pg_log_filter_error
    - filter_object_type_name
    - exit_nicely
    - filter_free
    linkageType: ''
    returnType: void
    signature: void read_restore_filters(const char *filename, RestoreOptions *opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: SH_GET_HASH
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_GET_HASH(tb, a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:112,1
    - Dst: getExtensions
      Src: /src/postgres/src/bin/pg_dump/common.c:113,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:115,1
    - Dst: getExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/common.c:116,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:118,1
    - Dst: getNamespaces
      Src: /src/postgres/src/bin/pg_dump/common.c:119,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:127,1
    - Dst: getTables
      Src: /src/postgres/src/bin/pg_dump/common.c:128,1
    - Dst: getOwnedSeqs
      Src: /src/postgres/src/bin/pg_dump/common.c:130,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:132,1
    - Dst: getFuncs
      Src: /src/postgres/src/bin/pg_dump/common.c:133,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:136,1
    - Dst: getTypes
      Src: /src/postgres/src/bin/pg_dump/common.c:137,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:140,1
    - Dst: getProcLangs
      Src: /src/postgres/src/bin/pg_dump/common.c:141,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:143,1
    - Dst: getAggregates
      Src: /src/postgres/src/bin/pg_dump/common.c:144,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:146,1
    - Dst: getOperators
      Src: /src/postgres/src/bin/pg_dump/common.c:147,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:149,1
    - Dst: getAccessMethods
      Src: /src/postgres/src/bin/pg_dump/common.c:150,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:152,1
    - Dst: getOpclasses
      Src: /src/postgres/src/bin/pg_dump/common.c:153,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:155,1
    - Dst: getOpfamilies
      Src: /src/postgres/src/bin/pg_dump/common.c:156,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:158,1
    - Dst: getTSParsers
      Src: /src/postgres/src/bin/pg_dump/common.c:159,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:161,1
    - Dst: getTSTemplates
      Src: /src/postgres/src/bin/pg_dump/common.c:162,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:164,1
    - Dst: getTSDictionaries
      Src: /src/postgres/src/bin/pg_dump/common.c:165,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:167,1
    - Dst: getTSConfigurations
      Src: /src/postgres/src/bin/pg_dump/common.c:168,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:170,1
    - Dst: getForeignDataWrappers
      Src: /src/postgres/src/bin/pg_dump/common.c:171,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:173,1
    - Dst: getForeignServers
      Src: /src/postgres/src/bin/pg_dump/common.c:174,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:176,1
    - Dst: getDefaultACLs
      Src: /src/postgres/src/bin/pg_dump/common.c:177,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:179,1
    - Dst: getCollations
      Src: /src/postgres/src/bin/pg_dump/common.c:180,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:182,1
    - Dst: getConversions
      Src: /src/postgres/src/bin/pg_dump/common.c:183,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:185,1
    - Dst: getCasts
      Src: /src/postgres/src/bin/pg_dump/common.c:186,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:188,1
    - Dst: getTransforms
      Src: /src/postgres/src/bin/pg_dump/common.c:189,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:191,1
    - Dst: getInherits
      Src: /src/postgres/src/bin/pg_dump/common.c:192,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:194,1
    - Dst: getEventTriggers
      Src: /src/postgres/src/bin/pg_dump/common.c:195,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:198,1
    - Dst: processExtensionTables
      Src: /src/postgres/src/bin/pg_dump/common.c:199,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:202,1
    - Dst: flagInhTables
      Src: /src/postgres/src/bin/pg_dump/common.c:203,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:205,1
    - Dst: getTableAttrs
      Src: /src/postgres/src/bin/pg_dump/common.c:206,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:208,1
    - Dst: flagInhAttrs
      Src: /src/postgres/src/bin/pg_dump/common.c:209,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:211,1
    - Dst: getPartitioningInfo
      Src: /src/postgres/src/bin/pg_dump/common.c:212,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:214,1
    - Dst: getIndexes
      Src: /src/postgres/src/bin/pg_dump/common.c:215,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:217,1
    - Dst: flagInhIndexes
      Src: /src/postgres/src/bin/pg_dump/common.c:218,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:220,1
    - Dst: getExtendedStatistics
      Src: /src/postgres/src/bin/pg_dump/common.c:221,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:223,1
    - Dst: getConstraints
      Src: /src/postgres/src/bin/pg_dump/common.c:224,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:226,1
    - Dst: getTriggers
      Src: /src/postgres/src/bin/pg_dump/common.c:227,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:229,1
    - Dst: getRules
      Src: /src/postgres/src/bin/pg_dump/common.c:230,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:232,1
    - Dst: getPolicies
      Src: /src/postgres/src/bin/pg_dump/common.c:233,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:235,1
    - Dst: getPublications
      Src: /src/postgres/src/bin/pg_dump/common.c:236,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:238,1
    - Dst: getPublicationTables
      Src: /src/postgres/src/bin/pg_dump/common.c:239,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:241,1
    - Dst: getPublicationNamespaces
      Src: /src/postgres/src/bin/pg_dump/common.c:242,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:244,1
    - Dst: getSubscriptions
      Src: /src/postgres/src/bin/pg_dump/common.c:245,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:247,1
    - Dst: getSubscriptionRelations
      Src: /src/postgres/src/bin/pg_dump/common.c:248,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/common.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 89
    argCount: 2
    argNames:
    - fout
    - numTablesPtr
    argTypes:
    - Archive*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 254
    functionName: getSchemaData
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - getPolicies
    - getConstraints
    - getInherits
    - getNamespaces
    - flagInhTables
    - getTSParsers
    - getPublicationTables
    - getPublicationNamespaces
    - getOperators
    - getForeignServers
    - getFuncs
    - getForeignDataWrappers
    - getTables
    - getExtensions
    - getDefaultACLs
    - getAggregates
    - getExtendedStatistics
    - getOpfamilies
    - getProcLangs
    - getEventTriggers
    - getSubscriptionRelations
    - flagInhAttrs
    - getPublications
    - getOwnedSeqs
    - getRules
    - getPartitioningInfo
    - getIndexes
    - getTriggers
    - pg_log_info
    - getTSTemplates
    - getExtensionMembership
    - processExtensionTables
    - flagInhIndexes
    - getCollations
    - getTSConfigurations
    - getAccessMethods
    - getTableAttrs
    - getTSDictionaries
    - getSubscriptions
    - free
    - getOpclasses
    - getCasts
    - getTransforms
    - getTypes
    - getConversions
    linkageType: ''
    returnType: TableInfo
    signature: 'TableInfo *

      getSchemaData(Archive *fout, int *numTablesPtr)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/common.c:297,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/common.c:309,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/common.c:311,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:318,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:322,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/common.c:353,1
    - Dst: palloc_object
      Src: /src/postgres/src/bin/pg_dump/common.c:357,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/common.c:361,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/common.c:362,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:376,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:377,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 5
    argNames:
    - fout
    - tblinfo
    - numTables
    - inhinfo
    - numInherits
    argTypes:
    - Archive*
    - TableInfo*
    - int
    - InhInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 380
    functionName: flagInhTables
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - addObjectDependency
    - findTableByOid
    - AssignDumpId
    - pg_malloc_array
    - pg_fatal
    - palloc_object
    - pg_realloc_array
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void flagInhTables(Archive *fout, TableInfo *tblinfo, int numTables,\n\t\t\t
      \ InhInfo *inhinfo, int numInherits)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:398,1
    - Dst: findIndexByOid
      Src: /src/postgres/src/bin/pg_dump/common.c:409,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/common.c:413,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/common.c:418,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/common.c:419,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:439,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:440,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:441,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:443,1
    - Dst: simple_ptr_list_append
      Src: /src/postgres/src/bin/pg_dump/common.c:447,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 450
    functionName: flagInhIndexes
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - addObjectDependency
    - pg_malloc_object
    - Assert
    - simple_ptr_list_append
    - AssignDumpId
    - findIndexByOid
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void flagInhIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strInArray
      Src: /src/postgres/src/bin/pg_dump/common.c:539,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/common.c:568,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/common.c:575,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/common.c:612,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/common.c:616,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/common.c:617,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/common.c:623,1
    - Dst: shouldPrintColumn
      Src: /src/postgres/src/bin/pg_dump/common.c:626,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:636,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 60
    argCount: 4
    argNames:
    - fout
    - dopt
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - DumpOptions*
    - TableInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 649
    functionName: flagInhAttrs
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - addObjectDependency
    - pg_malloc_object
    - strcmp
    - AssignDumpId
    - shouldPrintColumn
    - strInArray
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void flagInhAttrs(Archive *fout, DumpOptions *dopt, TableInfo *tblinfo,
      int numTables)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:683,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:688,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/common.c:690,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/common.c:697,1
    - Dst: catalogid_create
      Src: /src/postgres/src/bin/pg_dump/common.c:704,1
    - Dst: catalogid_insert
      Src: /src/postgres/src/bin/pg_dump/common.c:706,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:712,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 1
    argNames:
    - dobj
    argTypes:
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 715
    functionName: AssignDumpId
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 3
    functionsReached:
    - catalogid_insert
    - Assert
    - pg_malloc_array
    - catalogid_create
    - memset
    - OidIsValid
    - pg_realloc_array
    linkageType: ''
    returnType: void
    signature: void AssignDumpId(DumpableObject *dobj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:728,1
    - Dst: catalogid_insert
      Src: /src/postgres/src/bin/pg_dump/common.c:731,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - catId
    - dobj
    argTypes:
    - CatalogId
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 739
    functionName: recordAdditionalCatalogID
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - Assert
    - catalogid_insert
    linkageType: ''
    returnType: void
    signature: void recordAdditionalCatalogID(CatalogId catId, DumpableObject *dobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 747
    functionDepth: 0
    functionLinenumber: 747
    functionLinenumberEnd: 751
    functionName: createDumpId
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DumpId
    signature: DumpId createDumpId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 760
    functionName: getMaxDumpId
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DumpId
    signature: DumpId getMaxDumpId(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - dumpId
    argTypes:
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 773
    functionName: findObjectByDumpId
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DumpableObject
    signature: 'DumpableObject *

      findObjectByDumpId(DumpId dumpId)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: catalogid_lookup
      Src: /src/postgres/src/bin/pg_dump/common.c:788,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - catalogId
    argTypes:
    - CatalogId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 780
    functionDepth: 0
    functionLinenumber: 780
    functionLinenumberEnd: 792
    functionName: findObjectByCatalogId
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - catalogid_lookup
    linkageType: ''
    returnType: DumpableObject
    signature: 'DumpableObject *

      findObjectByCatalogId(CatalogId catalogId)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:805,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - objs
    - numObjs
    argTypes:
    - DumpableObject***
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 813
    functionName: getDumpableObjects
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - pg_malloc_array
    linkageType: ''
    returnType: void
    signature: void getDumpableObjects(DumpableObject ***objs, int *numObjs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:828,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:833,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dobj
    - refId
    argTypes:
    - DumpableObject*
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 838
    functionName: addObjectDependency
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 3
    functionsReached:
    - pg_realloc_array
    - pg_malloc_array
    linkageType: ''
    returnType: void
    signature: void addObjectDependency(DumpableObject *dobj, DumpId refId)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dobj
    - refId
    argTypes:
    - DumpableObject*
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 845
    functionDepth: 0
    functionLinenumber: 845
    functionLinenumberEnd: 857
    functionName: removeObjectDependency
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void removeObjectDependency(DumpableObject *dobj, DumpId refId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:874,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 876
    functionName: findTableByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: TableInfo
    signature: 'TableInfo *

      findTableByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:891,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:892,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 883
    functionDepth: 1
    functionLinenumber: 883
    functionLinenumberEnd: 894
    functionName: findIndexByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: IndxInfo
    signature: 'IndxInfo *

      findIndexByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:909,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:910,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 913
    functionName: findTypeByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: TypeInfo
    signature: 'TypeInfo *

      findTypeByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:928,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:929,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 931
    functionName: findFuncByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: FuncInfo
    signature: 'FuncInfo *

      findFuncByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:946,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:947,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 949
    functionName: findOprByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: OprInfo
    signature: 'OprInfo *

      findOprByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:964,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:965,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 956
    functionDepth: 1
    functionLinenumber: 956
    functionLinenumberEnd: 967
    functionName: findAccessMethodByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: AccessMethodInfo
    signature: 'AccessMethodInfo *

      findAccessMethodByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:982,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:983,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 974
    functionDepth: 1
    functionLinenumber: 974
    functionLinenumberEnd: 985
    functionName: findCollationByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: CollInfo
    signature: 'CollInfo *

      findCollationByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:1000,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:1001,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 1003
    functionName: findNamespaceByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: NamespaceInfo
    signature: 'NamespaceInfo *

      findNamespaceByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:1018,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:1019,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1021
    functionName: findExtensionByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: ExtensionInfo
    signature: 'ExtensionInfo *

      findExtensionByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:1036,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:1037,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1028
    functionDepth: 1
    functionLinenumber: 1028
    functionLinenumberEnd: 1039
    functionName: findPublicationByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: PublicationInfo
    signature: 'PublicationInfo *

      findPublicationByOid(Oid oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/common.c:1054,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1046
    functionDepth: 1
    functionLinenumber: 1046
    functionLinenumberEnd: 1057
    functionName: findSubscriptionByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - findObjectByCatalogId
    - Assert
    linkageType: ''
    returnType: SubscriptionInfo
    signature: 'SubscriptionInfo *

      findSubscriptionByOid(Oid oid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:1072,1
    - Dst: catalogid_insert
      Src: /src/postgres/src/bin/pg_dump/common.c:1075,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:1081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - catId
    - ext
    argTypes:
    - CatalogId
    - ExtensionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1065
    functionDepth: 1
    functionLinenumber: 1065
    functionLinenumberEnd: 1083
    functionName: recordExtensionMembership
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - Assert
    - catalogid_insert
    linkageType: ''
    returnType: void
    signature: void recordExtensionMembership(CatalogId catId, ExtensionInfo *ext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: catalogid_lookup
      Src: /src/postgres/src/bin/pg_dump/common.c:1097,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - catalogId
    argTypes:
    - CatalogId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1089
    functionDepth: 0
    functionLinenumber: 1089
    functionLinenumberEnd: 1101
    functionName: findOwningExtension
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - catalogid_lookup
    linkageType: ''
    returnType: ExtensionInfo
    signature: 'ExtensionInfo *

      findOwningExtension(CatalogId catalogId)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/common.c:1131,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/common.c:1133,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pg_dump/common.c:1141,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/common.c:1143,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - str
    - array
    - arraysize
    argTypes:
    - char*
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1113
    functionDepth: 1
    functionLinenumber: 1113
    functionLinenumberEnd: 1150
    functionName: parseOidArray
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - atooid
    - isdigit
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void parseOidArray(const char *str, Oid *array, int arraysize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/common.c:1167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - pattern
    - arr
    - arr_size
    argTypes:
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1160
    functionDepth: 0
    functionLinenumber: 1160
    functionLinenumberEnd: 1171
    functionName: strInArray
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int strInArray(const char *pattern, char **arr, int arr_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:108,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:108,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:109,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - compression_spec
    argTypes:
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 112
    functionName: supports_compression
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 0
    functionsReached:
    - psprintf
    - _
    - get_compress_algorithm_name
    linkageType: ''
    returnType: char
    signature: 'char *

      supports_compression(const pg_compress_specification compression_spec)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:128,1
    - Dst: InitCompressorNone
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:133,1
    - Dst: InitCompressorGzip
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:135,1
    - Dst: InitCompressorLZ4
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:137,1
    - Dst: InitCompressorZstd
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:139,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - compression_spec
    - readF
    - writeF
    argTypes:
    - pg_compress_specification
    - ReadFunc
    - WriteFunc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 142
    functionName: AllocateCompressor
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 3
    functionsReached:
    - InitCompressorZstd
    - InitCompressorGzip
    - InitCompressorNone
    - pg_malloc0_object
    - InitCompressorLZ4
    linkageType: ''
    returnType: CompressorState
    signature: "CompressorState *\nAllocateCompressor(const pg_compress_specification
      compression_spec,\n\t\t\t\t   ReadFunc readF, WriteFunc writeF)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CompressorState*::end
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:150,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 152
    functionName: EndCompressor
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 3
    functionsReached:
    - pg_free
    - CompressorState*::end
    linkageType: ''
    returnType: void
    signature: void EndCompressor(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:165,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:166,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - filename
    - suffix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 174
    functionName: hasSuffix
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 0
    functionsReached:
    - memcmp
    - strlen
    linkageType: ''
    returnType: int
    signature: int hasSuffix(const char *filename, const char *suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 184
    functionName: free_keep_errno
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free_keep_errno(void *p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:198,1
    - Dst: InitCompressFileHandleNone
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:201,1
    - Dst: InitCompressFileHandleGzip
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:203,1
    - Dst: InitCompressFileHandleLZ4
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:205,1
    - Dst: InitCompressFileHandleZstd
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:207,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - compression_spec
    argTypes:
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 210
    functionName: InitCompressFileHandle
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 0
    functionsReached:
    - InitCompressFileHandleGzip
    - InitCompressFileHandleZstd
    - InitCompressFileHandleNone
    - InitCompressFileHandleLZ4
    - pg_malloc0_object
    linkageType: ''
    returnType: CompressFileHandle
    signature: 'CompressFileHandle *

      InitCompressFileHandle(const pg_compress_specification compression_spec)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_keep_errno
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:221,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:222,1
    - Dst: access
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - path
    - fname
    - ext
    argTypes:
    - char*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 224
    functionName: check_compressed_file
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 0
    functionsReached:
    - free_keep_errno
    - psprintf
    - access
    linkageType: ''
    returnType: bool
    signature: bool check_compressed_file(const char *path, char **fname, char *ext)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:249,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:249,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:251,1
    - Dst: hasSuffix
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:253,1
    - Dst: hasSuffix
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:255,1
    - Dst: hasSuffix
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:257,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:261,1
    - Dst: check_compressed_file
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:263,1
    - Dst: check_compressed_file
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:265,1
    - Dst: check_compressed_file
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:267,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:271,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:273,1
    - Dst: free_keep_errno
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:275,1
    - Dst: free_keep_errno
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:278,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - path
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 281
    functionName: InitDiscoverCompressFileHandle
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 0
    functionsReached:
    - InitCompressFileHandle
    - strcmp
    - Assert
    - hasSuffix
    - free_keep_errno
    - check_compressed_file
    - stat
    - CompressFileHandle*::open_func
    - pg_strdup
    linkageType: ''
    returnType: CompressFileHandle
    signature: 'CompressFileHandle *

      InitDiscoverCompressFileHandle(const char *path, const char *mode)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::close_func
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:295,1
    - Dst: free_keep_errno
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 300
    functionName: EndCompressFileHandle
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 0
    functionsReached:
    - free_keep_errno
    - CompressFileHandle*::close_func
    linkageType: ''
    returnType: bool
    signature: bool EndCompressFileHandle(CompressFileHandle *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 239
    functionName: fmtQualifiedDumpable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fmtQualifiedDumpable(obj)
  - BBCount: 98
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:542,1
    - Dst: pg_logging_set_level
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:543,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:544,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:544,1
    - Dst: init_parallel_dump_utils
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:550,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:552,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:556,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:556,1
    - Dst: help
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:558,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:559,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:561,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:561,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:563,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:564,1
    - Dst: InitDumpOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:568,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:570,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:596,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:600,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:605,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:609,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:613,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:617,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:621,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:624,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:628,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:633,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:641,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:653,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:657,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:662,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:666,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:671,1
    - Dst: parse_compress_options
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:687,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:697,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:701,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:705,1
    - Dst: set_dump_section
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:709,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:713,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:722,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:724,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:738,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:740,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:744,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:749,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:755,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:760,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:765,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:766,1
    - Dst: read_dump_filters
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:770,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:774,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:799,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:804,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:805,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:819,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:821,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:822,1
    - Dst: check_mut_excl_opts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:830,1
    - Dst: check_mut_excl_opts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:835,1
    - Dst: check_mut_excl_opts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:837,1
    - Dst: check_mut_excl_opts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:839,1
    - Dst: check_mut_excl_opts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:843,1
    - Dst: check_mut_excl_opts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:847,1
    - Dst: check_mut_excl_opts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:852,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:856,1
    - Dst: check_mut_excl_opts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:860,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:864,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:885,1
    - Dst: parseArchiveFormat
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:890,1
    - Dst: generate_restrict_key
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:901,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:903,1
    - Dst: valid_restrict_key
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:904,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:905,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:908,1
    - Dst: parse_compress_algorithm
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:929,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:931,1
    - Dst: parse_compress_specification
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:934,1
    - Dst: validate_compress_specification
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:936,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:938,1
    - Dst: supports_compression
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:941,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:943,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:951,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:963,1
    - Dst: CreateArchive
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:966,1
    - Dst: SetArchiveOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:970,1
    - Dst: on_exit_close_archive
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:973,1
    - Dst: ConnectDatabaseAhx
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:992,1
    - Dst: setup_connection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:993,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1009,1
    - Dst: expand_schema_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1014,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1018,1
    - Dst: expand_schema_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1020,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1026,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1029,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1035,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1037,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1040,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1044,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1047,1
    - Dst: expand_foreign_server_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1051,1
    - Dst: expand_extension_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1059,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1063,1
    - Dst: expand_extension_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1065,1
    - Dst: collectRoleNames
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1085,1
    - Dst: getSchemaData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1091,1
    - Dst: getTableData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1095,1
    - Dst: buildMatViewRefreshDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1096,1
    - Dst: getTableDataFKConstraints
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1098,1
    - Dst: getTableData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1102,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1114,1
    - Dst: makeTableDataInfo
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1115,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1135,1
    - Dst: makeTableDataInfo
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1136,1
    - Dst: getLOs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1149,1
    - Dst: getDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1154,1
    - Dst: getAdditionalACLs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1160,1
    - Dst: collectComments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1162,1
    - Dst: collectSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1164,1
    - Dst: collectBinaryUpgradeClassOids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1168,1
    - Dst: collectSequences
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1171,1
    - Dst: createBoundaryObjects
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1174,1
    - Dst: getDumpableObjects
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1177,1
    - Dst: addBoundaryDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1182,1
    - Dst: sortDumpableObjectsByTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1191,1
    - Dst: sortDumpableObjects
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1193,1
    - Dst: dumpEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1204,1
    - Dst: dumpStdStrings
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1205,1
    - Dst: dumpSearchPath
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1206,1
    - Dst: dumpDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1210,1
    - Dst: dumpDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1214,1
    - Dst: NewRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1219,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1223,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1224,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1225,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1226,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1255,1
    - Dst: SetArchiveOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1261,1
    - Dst: ProcessArchiveRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1264,1
    - Dst: BuildArchiveDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1272,1
    - Dst: RestoreArchive
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1282,1
    - Dst: CloseArchive
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1284,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1286,1
    CyclomaticComplexity: 128
    EdgeCount: 128
    ICount: 365
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 417
    functionDepth: 2
    functionLinenumber: 417
    functionLinenumberEnd: 1287
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - getTableDataFKConstraints
    - get_progname
    - getDependencies
    - dumpDumpableObject
    - strcmp
    - expand_extension_name_patterns
    - expand_foreign_server_name_patterns
    - NewRestoreOptions
    - check_mut_excl_opts
    - BuildArchiveDependencies
    - pg_log_warning
    - getAdditionalACLs
    - collectComments
    - puts
    - pg_log_error
    - makeTableDataInfo
    - sortDumpableObjectsByTypeName
    - set_pglocale_pgservice
    - collectBinaryUpgradeClassOids
    - findTableByOid
    - InitDumpOptions
    - SetArchiveOptions
    - expand_table_name_patterns
    - dumpStdStrings
    - simple_string_list_append
    - ConnectDatabaseAhx
    - sortDumpableObjects
    - parseArchiveFormat
    - supports_compression
    - getLOs
    - dumpDatabase
    - collectRoleNames
    - getSchemaData
    - dumpEncoding
    - parse_compress_specification
    - ProcessArchiveRestoreOptions
    - parse_compress_options
    - option_parse_int
    - validate_compress_specification
    - on_exit_close_archive
    - expand_schema_name_patterns
    - createBoundaryObjects
    - getopt_long
    - set_dump_section
    - collectSequences
    - valid_restrict_key
    - read_dump_filters
    - buildMatViewRefreshDependencies
    - pg_log_info
    - RestoreArchive
    - addBoundaryDependencies
    - exit_nicely
    - pg_log_error_hint
    - getDumpableObjects
    - pg_strdup
    - getTableData
    - generate_restrict_key
    - parse_sync_method
    - collectSecLabels
    - CreateArchive
    - pg_logging_init
    - pg_logging_set_level
    - dumpSearchPath
    - CloseArchive
    - pg_fatal
    - pg_logging_increase_verbosity
    - help
    - setup_connection
    - parse_compress_algorithm
    - init_parallel_dump_utils
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1293,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1293,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1294,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1294,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1295,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1295,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1297,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1297,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1298,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1298,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1299,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1299,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1301,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1301,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1302,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1302,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1303,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1303,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1304,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1304,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1306,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1306,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1307,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1307,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1308,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1308,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1309,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1309,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1311,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1311,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1312,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1312,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1313,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1313,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1314,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1314,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1315,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1315,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1316,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1316,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1317,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1317,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1318,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1318,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1319,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1319,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1320,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1320,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1321,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1321,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1322,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1322,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1323,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1323,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1325,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1325,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1326,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1326,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1327,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1327,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1328,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1328,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1329,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1329,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1330,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1330,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1331,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1331,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1332,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1332,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1333,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1333,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1334,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1334,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1336,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1336,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1337,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1337,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1340,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1340,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1341,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1341,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1344,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1344,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1345,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1345,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1347,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1347,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1348,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1348,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1351,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1351,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1352,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1352,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1353,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1353,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1354,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1354,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1355,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1355,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1356,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1356,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1357,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1357,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1358,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1358,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1359,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1359,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1360,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1360,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1361,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1361,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1362,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1362,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1363,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1363,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1364,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1364,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1365,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1365,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1366,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1366,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1367,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1367,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1368,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1368,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1369,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1369,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1370,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1370,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1371,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1371,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1372,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1372,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1373,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1373,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1374,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1374,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1375,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1375,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1377,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1377,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1379,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1379,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1383,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1383,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1384,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1384,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1385,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1385,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1386,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1386,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1387,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1387,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1388,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1388,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1389,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1389,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1390,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1390,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1392,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1392,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1394,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1394,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1395,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 84
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1290
    functionDepth: 0
    functionLinenumber: 1290
    functionLinenumberEnd: 1396
    functionName: help
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 4
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1403,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1405,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1405,1
    - Dst: PQsetClientEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1412,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1413,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1422,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1436,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1437,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1450,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1452,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1452,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1453,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1454,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1458,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1462,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1465,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1474,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1476,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1478,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1479,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1482,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1488,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1493,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1494,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1495,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1497,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1503,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1509,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1511,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1518,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1524,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1529,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1540,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1544,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1554,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1558,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1560,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1561,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1562,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1563,1
    - Dst: get_synchronized_snapshot
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1566,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 4
    argNames:
    - AH
    - dumpencoding
    - dumpsnapshot
    - use_role
    argTypes:
    - Archive*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1398
    functionDepth: 1
    functionLinenumber: 1398
    functionLinenumberEnd: 1567
    functionName: setup_connection
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQsetClientEncoding
    - PQclear
    - GetConnection
    - setFmtEncoding
    - appendPQExpBufferStr
    - pg_fatal
    - ExecuteSqlStatement
    - PQclientEncoding
    - pg_malloc0_array
    - ExecuteSqlQueryForSingleRow
    - destroyPQExpBuffer
    - get_synchronized_snapshot
    - set_restrict_relation_kind
    - fmtId
    - appendStringLiteralConn
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void setup_connection(Archive *AH, const char *dumpencoding,\n\t\t\t\t
      const char *dumpsnapshot, char *use_role)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_connection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1579,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1570
    functionDepth: 2
    functionLinenumber: 1570
    functionLinenumberEnd: 1583
    functionName: setupDumpWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - pg_encoding_to_char
    - setup_connection
    linkageType: ''
    returnType: void
    signature: void setupDumpWorker(Archive *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1592,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1593,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1593,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1585
    functionDepth: 1
    functionLinenumber: 1585
    functionLinenumberEnd: 1597
    functionName: get_synchronized_snapshot
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQgetvalue
    - ExecuteSqlQueryForSingleRow
    - PQclear
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      get_synchronized_snapshot(Archive *fout)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1606,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1606,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1612,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1614,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1616,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1618,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1620,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1622,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1624,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1626,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1629,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - format
    - mode
    argTypes:
    - char*
    - ArchiveMode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1599
    functionDepth: 1
    functionLinenumber: 1599
    functionLinenumberEnd: 1631
    functionName: parseArchiveFormat
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    - pg_fatal
    linkageType: ''
    returnType: ArchiveFormat
    signature: ArchiveFormat parseArchiveFormat(const char *format, ArchiveMode *mode)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1651,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1663,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1665,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1666,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1666,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1670,1
    - Dst: prohibit_crossdb_refs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1673,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1673,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1674,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1676,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1677,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1678,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1680,1
    - Dst: simple_oid_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1682,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1682,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1682,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1685,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1686,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1689,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - fout
    - patterns
    - oids
    - strict_names
    argTypes:
    - Archive*
    - SimpleStringList*
    - SimpleOidList*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1690
      start: 1637
    functionDepth: 1
    functionLinenumber: 1637
    functionLinenumberEnd: 1690
    functionName: expand_schema_name_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - simple_oid_list_append
    - prohibit_crossdb_refs
    - atooid
    - PQclear
    - GetConnection
    - processSQLNamePattern
    - pg_fatal
    - ExecuteSqlQuery
    - resetPQExpBuffer
    - initPQExpBuffer
    - destroyPQExpBuffer
    - PQgetvalue
    - termPQExpBuffer
    - PQntuples
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void expand_schema_name_patterns(Archive *fout,\n\t\t\t\t\t\t\tSimpleStringList
      *patterns,\n\t\t\t\t\t\t\tSimpleOidList *oids,\n\t\t\t\t\t\t\tbool strict_names)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1710,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1720,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1722,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1722,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1726,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1729,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1730,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1731,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1733,1
    - Dst: simple_oid_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1735,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1735,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1735,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1738,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1739,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1742,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - fout
    - patterns
    - oids
    - strict_names
    argTypes:
    - Archive*
    - SimpleStringList*
    - SimpleOidList*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1696
    functionDepth: 1
    functionLinenumber: 1696
    functionLinenumberEnd: 1743
    functionName: expand_extension_name_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - simple_oid_list_append
    - atooid
    - PQclear
    - GetConnection
    - processSQLNamePattern
    - pg_fatal
    - ExecuteSqlQuery
    - resetPQExpBuffer
    - destroyPQExpBuffer
    - PQgetvalue
    - PQntuples
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void expand_extension_name_patterns(Archive *fout,\n\t\t\t\t\t\t\t
      \  SimpleStringList *patterns,\n\t\t\t\t\t\t\t   SimpleOidList *oids,\n\t\t\t\t\t\t\t
      \  bool strict_names)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1762,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1773,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1775,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1775,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1779,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1782,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1783,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1784,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1786,1
    - Dst: simple_oid_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1787,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1787,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1787,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1789,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1790,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1793,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - fout
    - patterns
    - oids
    argTypes:
    - Archive*
    - SimpleStringList*
    - SimpleOidList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1794
      start: 1749
    functionDepth: 1
    functionLinenumber: 1749
    functionLinenumberEnd: 1794
    functionName: expand_foreign_server_name_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - simple_oid_list_append
    - atooid
    - PQclear
    - GetConnection
    - processSQLNamePattern
    - pg_fatal
    - ExecuteSqlQuery
    - resetPQExpBuffer
    - destroyPQExpBuffer
    - PQgetvalue
    - PQntuples
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void expand_foreign_server_name_patterns(Archive *fout,\n\t\t\t\t\t\t\t\t\tSimpleStringList
      *patterns,\n\t\t\t\t\t\t\t\t\tSimpleOidList *oids)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1814,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1836,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1839,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1849,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1850,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1850,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1855,1
    - Dst: prohibit_crossdb_refs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1858,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1858,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1859,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1863,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1872,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1873,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1874,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1874,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1876,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1877,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1879,1
    - Dst: simple_oid_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1881,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1881,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1881,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1884,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1885,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1888,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 5
    argNames:
    - fout
    - patterns
    - oids
    - strict_names
    - with_child_tables
    argTypes:
    - Archive*
    - SimpleStringList*
    - SimpleOidList*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1801
    functionDepth: 1
    functionLinenumber: 1801
    functionLinenumberEnd: 1889
    functionName: expand_table_name_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - simple_oid_list_append
    - prohibit_crossdb_refs
    - PQclear
    - GetConnection
    - processSQLNamePattern
    - PQgetvalue
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - destroyPQExpBuffer
    - createPQExpBuffer
    - ExecuteSqlQueryForSingleRow
    - PQntuples
    - atooid
    - ExecuteSqlStatement
    - resetPQExpBuffer
    - termPQExpBuffer
    - pg_fatal
    - initPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void expand_table_name_patterns(Archive *fout,\n\t\t\t\t\t\t   SimpleStringList
      *patterns, SimpleOidList *oids,\n\t\t\t\t\t\t   bool strict_names, bool with_child_tables)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1902,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1904,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1906,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1907,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - conn
    - dbname
    - pattern
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1897
    functionDepth: 1
    functionLinenumber: 1897
    functionLinenumberEnd: 1909
    functionName: prohibit_crossdb_refs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - PQdb
    - strcmp
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void prohibit_crossdb_refs(PGconn *conn, const char *dbname, const
      char *pattern)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: findOwningExtension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1925,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - dobj
    - fout
    argTypes:
    - DumpableObject*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1922
    functionDepth: 2
    functionLinenumber: 1922
    functionLinenumberEnd: 1958
    functionName: checkExtensionMembership
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - addObjectDependency
    - findOwningExtension
    linkageType: ''
    returnType: bool
    signature: bool checkExtensionMembership(DumpableObject *dobj, Archive *fout)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1983,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1986,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1995,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1996,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2001,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2031,1
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2042,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - nsinfo
    - fout
    argTypes:
    - NamespaceInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2043
      start: 1964
    functionDepth: 3
    functionLinenumber: 1964
    functionLinenumberEnd: 2043
    functionName: selectDumpableNamespace
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - strncmp
    - checkExtensionMembership
    - simple_oid_list_member
    - strcmp
    linkageType: ''
    returnType: void
    signature: void selectDumpableNamespace(NamespaceInfo *nsinfo, Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2052,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2060,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2070,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - tbinfo
    - fout
    argTypes:
    - TableInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2073
      start: 2049
    functionDepth: 3
    functionLinenumber: 2049
    functionLinenumberEnd: 2073
    functionName: selectDumpableTable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - checkExtensionMembership
    - simple_oid_list_member
    linkageType: ''
    returnType: void
    signature: void selectDumpableTable(TableInfo *tbinfo, Archive *fout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2092,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2095,1
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2118,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - tyinfo
    - fout
    argTypes:
    - TypeInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2123
      start: 2088
    functionDepth: 3
    functionLinenumber: 2088
    functionLinenumberEnd: 2123
    functionName: selectDumpableType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - checkExtensionMembership
    - findTableByOid
    linkageType: ''
    returnType: void
    signature: void selectDumpableType(TypeInfo *tyinfo, Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dinfo
    - dopt
    argTypes:
    - DefaultACLInfo*
    - DumpOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2133
    functionDepth: 0
    functionLinenumber: 2133
    functionLinenumberEnd: 2144
    functionName: selectDumpableDefaultACL
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void selectDumpableDefaultACL(DefaultACLInfo *dinfo, DumpOptions *dopt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - cast
    - fout
    argTypes:
    - CastInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2170
      start: 2155
    functionDepth: 3
    functionLinenumber: 2155
    functionLinenumberEnd: 2170
    functionName: selectDumpableCast
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - checkExtensionMembership
    linkageType: ''
    returnType: void
    signature: void selectDumpableCast(CastInfo *cast, Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - plang
    - fout
    argTypes:
    - ProcLangInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2202
      start: 2180
    functionDepth: 3
    functionLinenumber: 2180
    functionLinenumberEnd: 2202
    functionName: selectDumpableProcLang
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - checkExtensionMembership
    linkageType: ''
    returnType: void
    signature: void selectDumpableProcLang(ProcLangInfo *plang, Archive *fout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - method
    - fout
    argTypes:
    - AccessMethodInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 2212
    functionDepth: 3
    functionLinenumber: 2212
    functionLinenumberEnd: 2227
    functionName: selectDumpableAccessMethod
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - checkExtensionMembership
    linkageType: ''
    returnType: void
    signature: void selectDumpableAccessMethod(AccessMethodInfo *method, Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2255,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - extinfo
    - dopt
    argTypes:
    - ExtensionInfo*
    - DumpOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2269
      start: 2240
    functionDepth: 1
    functionLinenumber: 2240
    functionLinenumberEnd: 2269
    functionName: selectDumpableExtension
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - simple_oid_list_member
    linkageType: ''
    returnType: void
    signature: void selectDumpableExtension(ExtensionInfo *extinfo, DumpOptions *dopt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dobj
    - fout
    argTypes:
    - DumpableObject*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2287
      start: 2279
    functionDepth: 3
    functionLinenumber: 2279
    functionLinenumberEnd: 2287
    functionName: selectDumpablePublicationObject
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - checkExtensionMembership
    linkageType: ''
    returnType: void
    signature: void selectDumpablePublicationObject(DumpableObject *dobj, Archive
      *fout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - sobj
    - fout
    argTypes:
    - StatsExtInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2307
      start: 2297
    functionDepth: 3
    functionLinenumber: 2297
    functionLinenumberEnd: 2307
    functionName: selectDumpableStatisticsObject
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - checkExtensionMembership
    linkageType: ''
    returnType: void
    signature: void selectDumpableStatisticsObject(StatsExtInfo *sobj, Archive *fout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dobj
    - fout
    argTypes:
    - DumpableObject*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2330
      start: 2315
    functionDepth: 3
    functionLinenumber: 2315
    functionLinenumberEnd: 2330
    functionName: selectDumpableObject
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - checkExtensionMembership
    linkageType: ''
    returnType: void
    signature: void selectDumpableObject(DumpableObject *dobj, Archive *fout)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2343,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2349,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2350,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2356,1
    - Dst: fmtCopyColumnList
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2365,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2379,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2381,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2383,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2385,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2389,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2391,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2392,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2397,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2398,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2401,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2402,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2403,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2407,1
    - Dst: WriteData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2414,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2415,1
    - Dst: archprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2464,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2469,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2470,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2470,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2471,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2472,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2476,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2477,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2479,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2480,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2480,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2481,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2482,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2484,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2487,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2488,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2491,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2495,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 2
    argNames:
    - fout
    - dcontext
    argTypes:
    - Archive*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2498
      start: 2337
    functionDepth: 1
    functionLinenumber: 2337
    functionLinenumberEnd: 2498
    functionName: dumpTableData_copy
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - WriteData
    - PQclear
    - GetConnection
    - pg_log_warning
    - set_restrict_relation_kind
    - pg_log_error
    - PQgetResult
    - ExecuteSqlQuery
    - destroyPQExpBuffer
    - appendPQExpBufferStr
    - createPQExpBuffer
    - pg_log_error_detail
    - fmtQualifiedDumpable
    - PQresultStatus
    - PQgetCopyData
    - strlen
    - PQfreemem
    - pg_log_info
    - PQerrorMessage
    - exit_nicely
    - archprintf
    - fmtCopyColumnList
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int dumpTableData_copy(Archive *fout, const void *dcontext)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2514,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2525,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2534,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2535,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2544,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2546,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2548,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2548,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2554,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2555,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2556,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2558,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2560,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2564,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2568,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2569,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2570,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2584,1
    - Dst: forcePartitionRootLoad
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2593,1
    - Dst: getRootTableInfo
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2594,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2598,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2599,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2604,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2611,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2615,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2616,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2617,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2617,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2619,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2623,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2625,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2629,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2633,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2649,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2651,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2653,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2658,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2661,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2664,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2666,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2671,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2692,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2694,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2694,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2695,1
    - Dst: archprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2697,1
    - Dst: archprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2703,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2704,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2708,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2708,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2709,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2711,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2716,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2717,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2718,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2720,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2726,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2732,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2734,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2740,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2742,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2745,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2752,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2754,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2757,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2759,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2761,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2763,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2764,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2768,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 130
    argCount: 2
    argNames:
    - fout
    - dcontext
    argTypes:
    - Archive*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2771
      start: 2508
    functionDepth: 1
    functionLinenumber: 2508
    functionLinenumberEnd: 2771
    functionName: dumpTableData_insert
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - PQfname
    - PQclear
    - strcmp
    - PQgetvalue
    - set_restrict_relation_kind
    - fmtId
    - ExecuteSqlQuery
    - appendPQExpBufferStr
    - createPQExpBuffer
    - PQnfields
    - destroyPQExpBuffer
    - PQftype
    - fmtQualifiedDumpable
    - strspn
    - PQntuples
    - pg_malloc_array
    - ExecuteSqlStatement
    - getRootTableInfo
    - resetPQExpBuffer
    - strlen
    - archputs
    - PQgetisnull
    - appendPQExpBufferChar
    - pg_free
    - forcePartitionRootLoad
    - appendStringLiteralAH
    - archprintf
    - pg_fatal
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int dumpTableData_insert(Archive *fout, const void *dcontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2782,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2783,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2788,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - tbinfo
    argTypes:
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2793
      start: 2777
    functionDepth: 1
    functionLinenumber: 2777
    functionLinenumberEnd: 2793
    functionName: getRootTableInfo
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: TableInfo
    signature: 'TableInfo *

      getRootTableInfo(const TableInfo *tbinfo)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2807,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2808,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2815,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - tbinfo
    argTypes:
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2822
      start: 2802
    functionDepth: 1
    functionLinenumber: 2802
    functionLinenumberEnd: 2822
    functionName: forcePartitionRootLoad
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool forcePartitionRootLoad(const TableInfo *tbinfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2835,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2836,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2843,1
    - Dst: forcePartitionRootLoad
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2853,1
    - Dst: getRootTableInfo
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2858,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2859,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2860,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2861,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2863,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2864,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2867,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2874,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2876,1
    - Dst: fmtCopyColumnList
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2877,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2896,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2897,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2934,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2935,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - fout
    - tdinfo
    argTypes:
    - Archive*
    - TableDataInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2936
      start: 2830
    functionDepth: 2
    functionLinenumber: 2830
    functionLinenumberEnd: 2936
    functionName: dumpTableData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - forcePartitionRootLoad
    - printfPQExpBuffer
    - Assert
    - ArchiveEntry
    - fmtCopyColumnList
    - getRootTableInfo
    - fmtQualifiedDumpable
    - free
    - destroyPQExpBuffer
    - sanitize_line
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpTableData(Archive *fout, const TableDataInfo *tdinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2955,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2957,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2958,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2961,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2964,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2973,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - fout
    - tdinfo
    argTypes:
    - Archive*
    - TableDataInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2974
      start: 2945
    functionDepth: 1
    functionLinenumber: 2945
    functionLinenumberEnd: 2974
    functionName: refreshMatViewData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - ArchiveEntry
    - fmtQualifiedDumpable
    - destroyPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void refreshMatViewData(Archive *fout, const TableDataInfo *tdinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeTableDataInfo
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2989,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 4
    argNames:
    - dopt
    - tblinfo
    - numTables
    - relkind
    argTypes:
    - DumpOptions*
    - TableInfo*
    - int
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2991
      start: 2980
    functionDepth: 1
    functionLinenumber: 2980
    functionLinenumberEnd: 2991
    functionName: getTableData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - makeTableDataInfo
    linkageType: ''
    returnType: void
    signature: void getTableData(DumpOptions *dopt, TableInfo *tblinfo, int numTables,
      char relkind)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3020,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3033,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3038,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3053,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3058,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3075,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - dopt
    - tbinfo
    argTypes:
    - DumpOptions*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3080
      start: 2999
    functionDepth: 2
    functionLinenumber: 2999
    functionLinenumberEnd: 3080
    functionName: makeTableDataInfo
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - addObjectDependency
    - pg_malloc_object
    - AssignDumpId
    - simple_oid_list_member
    linkageType: ''
    returnType: void
    signature: void makeTableDataInfo(DumpOptions *dopt, TableInfo *tbinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3100,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3102,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3114,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3125,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3131,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3133,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3135,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3136,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3137,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3148,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3148,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3149,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3149,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3151,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3151,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3153,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3157,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3159,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3163,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3165,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3169,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3171,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3175,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3177,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3183,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3185,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3186
      start: 3089
    functionDepth: 2
    functionLinenumber: 3089
    functionLinenumberEnd: 3186
    functionName: buildMatViewRefreshDependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findObjectByCatalogId
    - addObjectDependency
    - atooid
    - CppAsString2
    - PQclear
    - Assert
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void buildMatViewRefreshDependencies(Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getDumpableObjects
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3208,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3220,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3229,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3233,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3234
      start: 3200
    functionDepth: 2
    functionLinenumber: 3200
    functionLinenumberEnd: 3234
    functionName: getTableDataFKConstraints
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - free
    - addObjectDependency
    - findTableByOid
    - getDumpableObjects
    linkageType: ''
    returnType: void
    signature: void getTableDataFKConstraints(void)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3245,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3246,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3247,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3248,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3249,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3287,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3292,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3298,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3300,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3302,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3304,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3306,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3308,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3309,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3315,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3317,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3318,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3319,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3320,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3321,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3322,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3323,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3324,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3325,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3326,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3327,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3328,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3329,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3330,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3331,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3332,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3333,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3334,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3336,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3336,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3337,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3337,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3338,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3339,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3339,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3340,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3341,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3342,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3343,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3344,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3345,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3348,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3349,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3352,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3352,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3353,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3353,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3354,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3355,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3356,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3357,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3358,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3360,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3360,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3375,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3382,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3385,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3387,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3388,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3391,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3393,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3395,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3397,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3399,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3402,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3402,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3404,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3405,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3409,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3411,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3412,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3414,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3416,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3417,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3423,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3425,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3427,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3432,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3433,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3442,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3444,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3445,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3446,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3459,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3459,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3461,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3462,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3463,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3465,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3468,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3470,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3473,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3481,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3490,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3490,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3494,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3500,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3501,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3502,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3504,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3504,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3505,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3521,1
    - Dst: buildShSecLabelQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3523,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3524,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3525,1
    - Dst: emitShSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3526,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3528,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3528,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3529,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3536,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3537,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3547,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3559,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3560,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3562,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3562,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3563,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3566,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3568,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3578,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3580,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3581,1
    - Dst: dumpDatabaseConfig
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3590,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3598,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3599,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3603,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3604,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3608,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3608,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3609,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3630,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3631,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3632,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3633,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3634,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3640,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3646,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3648,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3649,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3650,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3651,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3653,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3654,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3655,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3656,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3657,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3664,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3664,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3665,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3665,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3679,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3682,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3682,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3683,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3683,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3684,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3684,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3688,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3693,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3698,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3700,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3703,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3704,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3706,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3706,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3707,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3713,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3713,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3714,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3719,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3721,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3722,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3723,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3724,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3725,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3728,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3730,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3731,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3732,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3733,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3734,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 195
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3735
      start: 3241
    functionDepth: 1
    functionLinenumber: 3241
    functionLinenumberEnd: 3735
    functionName: dumpDatabase
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - GetConnection
    - ArchiveEntry
    - PQgetvalue
    - createDumpId
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - dumpACL
    - ExecuteSqlQueryForSingleRow
    - PQfnumber
    - PQntuples
    - atooid
    - getRoleName
    - resetPQExpBuffer
    - strlen
    - pg_free
    - PQgetisnull
    - pg_log_info
    - emitShSecLabels
    - dumpDatabaseConfig
    - pg_strdup
    - appendStringLiteralAH
    - pg_fatal
    - buildShSecLabelQuery
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpDatabase(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3745,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3746,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3750,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3754,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3756,1
    - Dst: makeAlterConfigCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3757,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3757,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3761,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3764,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3769,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3771,1
    - Dst: makeAlterConfigCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3772,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3772,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3773,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3777,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3779,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - AH
    - outbuf
    - dbname
    - dboid
    argTypes:
    - Archive*
    - PQExpBuffer
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3780
      start: 3741
    functionDepth: 1
    functionLinenumber: 3741
    functionLinenumberEnd: 3780
    functionName: dumpDatabaseConfig
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - makeAlterConfigCommand
    - printfPQExpBuffer
    - GetConnection
    - destroyPQExpBuffer
    - PQgetvalue
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void dumpDatabaseConfig(Archive *AH, PQExpBuffer outbuf,\n\t\t\t\t
      \  const char *dbname, Oid dboid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3788,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3789,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3791,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3793,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3794,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3795,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3797,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3797,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3798,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - AH
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3804
      start: 3785
    functionDepth: 1
    functionLinenumber: 3785
    functionLinenumberEnd: 3804
    functionName: dumpEncoding
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - ArchiveEntry
    - pg_encoding_to_char
    - destroyPQExpBuffer
    - createDumpId
    - pg_log_info
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpEncoding(Archive *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3814,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3816,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3819,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3822,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3822,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3823,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - AH
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3829
      start: 3810
    functionDepth: 1
    functionLinenumber: 3810
    functionLinenumberEnd: 3829
    functionName: dumpStdStrings
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - ArchiveEntry
    - destroyPQExpBuffer
    - createDumpId
    - pg_log_info
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpStdStrings(Archive *AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3837,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3838,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3851,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3854,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3854,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3855,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3866,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3867,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3867,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3870,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3871,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3872,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3874,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3876,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3876,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3877,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3883,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3885,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3886,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3887,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3888,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - AH
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3889
      start: 3834
    functionDepth: 1
    functionLinenumber: 3834
    functionLinenumberEnd: 3889
    functionName: dumpSearchPath
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - PQclear
    - ARCHIVE_OPTS
    - ArchiveEntry
    - pg_fatal
    - ExecuteSqlQueryForSingleRow
    - free
    - destroyPQExpBuffer
    - PQgetvalue
    - createDumpId
    - pg_log_info
    - fmtId
    - createPQExpBuffer
    - appendPQExpBufferStr
    - parsePGArray
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpSearchPath(Archive *AH)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3900,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3910,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3916,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3929,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3936,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3939,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3941,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3942,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3943,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3944,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3946,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3958,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3958,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3959,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3960,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3969,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3969,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3970,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3970,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3976,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3981,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3984,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3985,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3985,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3987,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3988,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3989,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3990,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3990,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3993,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4001,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4001,1
    - Dst: recordAdditionalCatalogID
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4006,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4013,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4029,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4032,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4033,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4036,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4041,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4042,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 58
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4043
      start: 3896
    functionDepth: 2
    functionLinenumber: 3896
    functionLinenumberEnd: 4043
    functionName: getLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_malloc_object
    - PQclear
    - strcmp
    - PQgetvalue
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - ExecuteSqlQuery
    - createPQExpBuffer
    - PQfnumber
    - PQntuples
    - atooid
    - getRoleName
    - recordAdditionalCatalogID
    - PQgetisnull
    - pg_log_info
    - pg_malloc
    - pg_strdup
    - AssignDumpId
    - snprintf
    linkageType: ''
    returnType: void
    signature: void getLOs(Archive *fout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4053,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4060,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4063,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4064,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4086,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4089,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4094,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4112,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4118,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4121,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4127,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4133,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - fout
    - loinfo
    argTypes:
    - Archive*
    - LoInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4134
      start: 4050
    functionDepth: 1
    functionLinenumber: 4050
    functionLinenumberEnd: 4134
    functionName: dumpLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - dumpACL
    - ArchiveEntry
    - dumpComment
    - dumpSecLabel
    - destroyPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dumpLO(Archive *fout, const LoInfo *loinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4144,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4147,1
    - Dst: lo_open
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4156,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4158,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4159,1
    - Dst: StartLO
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4161,1
    - Dst: lo_read
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4166,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4168,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4169,1
    - Dst: WriteData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4171,1
    - Dst: lo_close
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4174,1
    - Dst: EndLO
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4176,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - fout
    - arg
    argTypes:
    - Archive*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4180
      start: 4140
    functionDepth: 1
    functionLinenumber: 4140
    functionLinenumberEnd: 4180
    functionName: dumpLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - StartLO
    - WriteData
    - lo_read
    - GetConnection
    - lo_close
    - pg_fatal
    - EndLO
    - lo_open
    - pg_log_info
    - PQerrorMessage
    linkageType: ''
    returnType: int
    signature: int dumpLOs(Archive *fout, const void *arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4211,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4212,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4217,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4233,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4234,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4248,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4252,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4254,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4264,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4272,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4274,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4276,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4277,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4286,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4288,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4291,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4292,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4293,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4294,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4295,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4296,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4297,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4298,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4299,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4301,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4305,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4305,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4306,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4312,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4312,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4313,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4313,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4314,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4317,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4317,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4318,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4320,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4321,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4323,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4326,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4326,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4328,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4331,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4331,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4333,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4337,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4337,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4341,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4343,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4344,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 76
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4345
      start: 4186
    functionDepth: 2
    functionLinenumber: 4186
    functionLinenumberEnd: 4345
    functionName: getPolicies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_malloc_object
    - PQclear
    - PQgetvalue
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - destroyPQExpBuffer
    - createPQExpBuffer
    - findTableByOid
    - printfPQExpBuffer
    - PQfnumber
    - PQntuples
    - atooid
    - pg_malloc_array
    - appendPQExpBufferChar
    - PQgetisnull
    - pg_log_info
    - pg_strdup
    - AssignDumpId
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getPolicies(Archive *fout, TableInfo tblinfo[], int numTables)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4374,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4376,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4377,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4385,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4386,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4395,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4410,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4413,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4414,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4415,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4417,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4417,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4419,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4419,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4421,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4421,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4425,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4428,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4431,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4433,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4435,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4435,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4436,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4436,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4438,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4439,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4441,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4444,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4445,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4454,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4458,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4459,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4460,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4461,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4462,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 2
    argNames:
    - fout
    - polinfo
    argTypes:
    - Archive*
    - PolicyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4463
      start: 4351
    functionDepth: 1
    functionLinenumber: 4351
    functionLinenumberEnd: 4463
    functionName: dumpPolicy
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - pfree
    - psprintf
    - ArchiveEntry
    - appendPQExpBufferStr
    - pg_fatal
    - fmtQualifiedDumpable
    - destroyPQExpBuffer
    - dumpComment
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpPolicy(Archive *fout, const PolicyInfo *polinfo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4494,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4497,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4502,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4504,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4507,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4509,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4512,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4514,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4517,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4519,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4521,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4523,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4525,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4530,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4531,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4532,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4533,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4534,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4535,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4536,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4537,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4538,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4539,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4540,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4541,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4543,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4549,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4549,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4550,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4550,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4551,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4552,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4552,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4553,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4553,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4555,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4555,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4557,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4557,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4559,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4559,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4561,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4561,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4563,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4563,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4565,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4565,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4567,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4567,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4569,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4576,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4597,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4598,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4604,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4606,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4613,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4613,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4615,1
    - Dst: simple_ptr_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4618,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4621,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4626,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4628,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 71
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4629
      start: 4469
    functionDepth: 4
    functionLinenumber: 4469
    functionLinenumberEnd: 4629
    functionName: getPublications
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - PQgetvalue
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - destroyPQExpBuffer
    - createPQExpBuffer
    - findTableByOid
    - simple_ptr_list_append
    - selectDumpableObject
    - PQfnumber
    - PQntuples
    - atooid
    - getRoleName
    - pg_malloc_array
    - resetPQExpBuffer
    - pg_strdup
    - AssignDumpId
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getPublications(Archive *fout)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4648,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4649,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4651,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4651,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4653,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4656,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4663,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4671,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4673,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4674,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4674,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4677,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4680,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4683,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4685,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4688,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4695,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4697,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4704,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4706,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4713,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4715,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4719,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4722,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4725,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4727,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4730,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4731,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4739,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4744,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4748,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4749,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4750,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 61
    argCount: 2
    argNames:
    - fout
    - pubinfo
    argTypes:
    - Archive*
    - PublicationInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4751
      start: 4635
    functionDepth: 1
    functionLinenumber: 4635
    functionLinenumberEnd: 4751
    functionName: dumpPublication
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - pg_free
    - ArchiveEntry
    - appendPQExpBufferStr
    - fmtQualifiedDumpable
    - dumpComment
    - dumpSecLabel
    - destroyPQExpBuffer
    - appendPQExpBufferChar
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpPublication(Archive *fout, const PublicationInfo *pubinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4775,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4778,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4781,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4783,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4785,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4786,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4787,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4788,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4791,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4796,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4796,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4797,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4797,1
    - Dst: findPublicationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4805,1
    - Dst: findNamespaceByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4808,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4815,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4815,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4816,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4816,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4817,1
    - Dst: selectDumpablePublicationObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4824,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4829,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4830,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4831
      start: 4757
    functionDepth: 4
    functionLinenumber: 4757
    functionLinenumberEnd: 4831
    functionName: getPublicationNamespaces
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - findPublicationByOid
    - findNamespaceByOid
    - PQclear
    - AssignDumpId
    - selectDumpablePublicationObject
    - appendPQExpBufferStr
    - pg_malloc_array
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getPublicationNamespaces(Archive *fout)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4857,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4862,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4875,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4878,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4882,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4884,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4886,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4887,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4888,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4889,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4890,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4891,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4894,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4899,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4899,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4900,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4900,1
    - Dst: findPublicationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4908,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4911,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4918,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4918,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4919,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4919,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4920,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4925,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4928,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4928,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4930,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4936,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4936,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4938,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4939,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4943,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4945,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4945,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4948,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4949,1
    - Dst: selectDumpablePublicationObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4955,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4960,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4961,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4962
      start: 4837
    functionDepth: 4
    functionLinenumber: 4837
    functionLinenumberEnd: 4962
    functionName: getPublicationTables
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - PQgetvalue
    - fmtId
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - findTableByOid
    - PQfnumber
    - PQntuples
    - atooid
    - pg_malloc_array
    - PQgetisnull
    - pg_strdup
    - AssignDumpId
    - selectDumpablePublicationObject
    - pg_fatal
    - free
    - findPublicationByOid
    - parsePGArray
    linkageType: ''
    returnType: void
    signature: void getPublicationTables(Archive *fout, TableInfo tblinfo[], int numTables)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4981,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4983,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4985,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4985,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4986,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4986,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4993,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4994,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5003,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5004,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fout
    - pubsinfo
    argTypes:
    - Archive*
    - PublicationSchemaInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5005
      start: 4968
    functionDepth: 1
    functionLinenumber: 4968
    functionLinenumberEnd: 5005
    functionName: dumpPublicationNamespace
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - pfree
    - psprintf
    - ArchiveEntry
    - destroyPQExpBuffer
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpPublicationNamespace(Archive *fout, const PublicationSchemaInfo
      *pubsinfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5024,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5026,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5028,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5029,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5030,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5031,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5034,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5043,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5045,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5055,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5056,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5065,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5066,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - fout
    - pubrinfo
    argTypes:
    - Archive*
    - PublicationRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5067
      start: 5011
    functionDepth: 1
    functionLinenumber: 5011
    functionLinenumberEnd: 5067
    functionName: dumpPublicationTable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - pfree
    - psprintf
    - ArchiveEntry
    - appendPQExpBufferStr
    - fmtQualifiedDumpable
    - destroyPQExpBuffer
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpPublicationTable(Archive *fout, const PublicationRelInfo *pubrinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5078,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5080,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5084
      start: 5072
    functionDepth: 1
    functionLinenumber: 5072
    functionLinenumberEnd: 5084
    functionName: is_superuser
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQparameterStatus
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool is_superuser(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5094,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5097,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5102,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5104,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - value
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5106
      start: 5091
    functionDepth: 1
    functionLinenumber: 5091
    functionLinenumberEnd: 5106
    functionName: set_restrict_relation_kind
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 3
    functionsReached:
    - PQclear
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void set_restrict_relation_kind(Archive *AH, const char *value)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: is_superuser
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5147,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5151,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5156,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5156,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5158,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5159,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5163,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5166,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5173,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5175,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5178,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5180,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5183,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5187,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5193,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5198,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5205,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5208,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5212,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5215,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5219,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5222,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5226,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5229,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5232,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5235,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5239,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5241,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5243,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5247,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5252,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5256,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5260,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5262,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5268,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5269,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5270,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5271,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5272,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5273,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5274,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5275,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5276,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5277,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5278,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5279,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5280,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5281,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5282,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5283,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5284,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5285,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5286,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5287,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5288,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5289,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5291,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5297,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5297,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5298,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5298,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5299,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5300,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5300,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5301,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5301,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5304,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5304,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5305,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5308,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5308,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5310,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5310,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5311,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5312,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5314,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5314,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5316,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5316,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5318,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5318,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5320,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5320,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5322,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5322,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5324,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5324,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5325,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5329,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5329,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5330,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5334,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5334,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5336,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5336,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5338,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5338,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5340,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5340,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5341,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5341,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5342,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5346,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5346,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5349,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5351,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5353,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 111
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5354
      start: 5112
    functionDepth: 4
    functionLinenumber: 5112
    functionLinenumberEnd: 5354
    functionName: getSubscriptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - pg_log_warning
    - PQgetvalue
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - is_superuser
    - selectDumpableObject
    - PQfnumber
    - PQntuples
    - atooid
    - getRoleName
    - pg_malloc_array
    - PQgetisnull
    - pg_strdup
    - AssignDumpId
    - atoi
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getSubscriptions(Archive *fout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5379,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5384,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5389,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5390,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5391,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5392,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5394,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5397,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5397,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5398,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5398,1
    - Dst: findSubscriptionByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5407,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5409,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5414,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5416,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5423,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5428,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5429,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5432,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5432,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5435,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5439,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5440
      start: 5361
    functionDepth: 4
    functionLinenumber: 5361
    functionLinenumberEnd: 5440
    functionName: getSubscriptionRelations
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - findTableByOid
    - PQclear
    - findSubscriptionByOid
    - AssignDumpId
    - pg_malloc_array
    - pg_fatal
    - selectDumpableObject
    - PQgetvalue
    - PQfnumber
    - PQgetisnull
    - PQntuples
    - ExecuteSqlQuery
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getSubscriptionRelations(Archive *fout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5459,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5461,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5463,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5472,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5474,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5476,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5477,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5483,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5485,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5487,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5498,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5499,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5508,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5509,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - fout
    - subrinfo
    argTypes:
    - Archive*
    - SubRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5510
      start: 5447
    functionDepth: 1
    functionLinenumber: 5447
    functionLinenumberEnd: 5510
    functionName: dumpSubscriptionTable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - Assert
    - pfree
    - psprintf
    - ArchiveEntry
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpSubscriptionTable(Archive *fout, const SubRelInfo *subrinfo)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5532,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5533,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5535,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5535,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5537,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5540,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5544,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5544,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5548,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5549,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5553,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5554,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5556,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5560,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5562,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5562,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5565,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5567,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5569,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5572,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5575,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5577,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5579,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5582,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5585,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5588,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5591,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5594,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5597,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5600,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5602,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5603,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5603,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5605,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5606,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5606,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5608,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5609,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5611,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5630,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5632,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5634,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5635,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5644,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5646,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5651,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5652,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5660,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5665,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5669,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5670,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5672,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5673,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5674,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 77
    argCount: 2
    argNames:
    - fout
    - subinfo
    argTypes:
    - Archive*
    - SubscriptionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5675
      start: 5516
    functionDepth: 1
    functionLinenumber: 5516
    functionLinenumberEnd: 5675
    functionName: dumpSubscription
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - parsePGArray
    - pg_strcasecmp
    - strcmp
    - ArchiveEntry
    - appendPQExpBufferStr
    - pg_fatal
    - free
    - dumpComment
    - dumpSecLabel
    - destroyPQExpBuffer
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpSubscription(Archive *fout, const SubscriptionInfo *subinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5699,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5701,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5702,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5710,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5711,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5712,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5715,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5717,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5717,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5720,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5721,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5722,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 6
    argNames:
    - fout
    - create
    - dobj
    - catalog
    - keyword
    - objname
    argTypes:
    - Archive*
    - PQExpBuffer
    - DumpableObject*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5724
      start: 5681
    functionDepth: 1
    functionLinenumber: 5681
    functionLinenumberEnd: 5724
    functionName: append_depends_on_extension
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - PQclear
    - pg_free
    - PQgetvalue
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - fmtId
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void append_depends_on_extension(Archive *fout,\n\t\t\t\t\t\t\tPQExpBuffer
      create,\n\t\t\t\t\t\t\tconst DumpableObject *dobj,\n\t\t\t\t\t\t\tconst char
      *catalog,\n\t\t\t\t\t\t\tconst char *keyword,\n\t\t\t\t\t\t\tconst char *objname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5744,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5749,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5750,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - fout
    - upgrade_query
    argTypes:
    - Archive*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5755
      start: 5726
    functionDepth: 1
    functionLinenumber: 5726
    functionLinenumberEnd: 5755
    functionName: get_next_possible_free_pg_type_oid
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - PQgetvalue
    - ExecuteSqlQueryForSingleRow
    - PQclear
    - printfPQExpBuffer
    linkageType: ''
    returnType: Oid
    signature: Oid get_next_possible_free_pg_type_oid(Archive *fout, PQExpBuffer upgrade_query)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5764,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5771,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5772,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5776,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5782,1
    - Dst: get_next_possible_free_pg_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5783,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5785,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5787,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5789,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5801,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5809,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5811,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5811,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5811,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5812,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5812,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5812,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5814,1
    - Dst: get_next_possible_free_pg_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5818,1
    - Dst: get_next_possible_free_pg_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5819,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5822,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5824,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5827,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5829,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5834,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 5
    argNames:
    - fout
    - upgrade_buffer
    - pg_type_oid
    - force_array_type
    - include_multirange_type
    argTypes:
    - Archive*
    - PQExpBuffer
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5835
      start: 5757
    functionDepth: 2
    functionLinenumber: 5757
    functionLinenumberEnd: 5835
    functionName: binary_upgrade_set_type_oids_by_type_oid
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - atooid
    - PQfnumber
    - PQclear
    - printfPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQueryForSingleRow
    - findTypeByOid
    - destroyPQExpBuffer
    - PQgetvalue
    - OidIsValid
    - appendPQExpBuffer
    - createPQExpBuffer
    - get_next_possible_free_pg_type_oid
    linkageType: ''
    returnType: void
    signature: "void binary_upgrade_set_type_oids_by_type_oid(Archive *fout,\n\t\t\t\t\t\t\t\t\t\t
      PQExpBuffer upgrade_buffer,\n\t\t\t\t\t\t\t\t\t\t Oid pg_type_oid,\n\t\t\t\t\t\t\t\t\t\t
      bool force_array_type,\n\t\t\t\t\t\t\t\t\t\t bool include_multirange_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5844,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5845,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - fout
    - upgrade_buffer
    - tbinfo
    argTypes:
    - Archive*
    - PQExpBuffer
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5847
      start: 5837
    functionDepth: 3
    functionLinenumber: 5837
    functionLinenumberEnd: 5847
    functionName: binary_upgrade_set_type_oids_by_rel
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - binary_upgrade_set_type_oids_by_type_oid
    linkageType: ''
    returnType: void
    signature: "void binary_upgrade_set_type_oids_by_rel(Archive *fout,\n\t\t\t\t\t\t\t\t\tPQExpBuffer
      upgrade_buffer,\n\t\t\t\t\t\t\t\t\tconst TableInfo *tbinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5859
      start: 5852
    functionDepth: 1
    functionLinenumber: 5852
    functionLinenumberEnd: 5859
    functionName: BinaryUpgradeClassOidItemCmp
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int BinaryUpgradeClassOidItemCmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5882,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5884,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5886,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5890,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5890,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5891,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5892,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5892,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5893,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5893,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5894,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5894,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5895,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5895,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5896,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5896,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5900
      start: 5868
    functionDepth: 1
    functionLinenumber: 5868
    functionLinenumberEnd: 5900
    functionName: collectBinaryUpgradeClassOids
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - pg_malloc_array
    - PQgetvalue
    - PQntuples
    - ExecuteSqlQuery
    linkageType: ''
    returnType: void
    signature: void collectBinaryUpgradeClassOids(Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5909,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5923,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5927,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5933,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5942,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5944,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5952,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5955,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5958,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5963,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5966,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5974,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5977,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5982,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - fout
    - upgrade_buffer
    - pg_class_oid
    argTypes:
    - Archive*
    - PQExpBuffer
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5983
      start: 5902
    functionDepth: 1
    functionLinenumber: 5902
    functionLinenumberEnd: 5983
    functionName: binary_upgrade_set_pg_class_oids
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - bsearch
    - Assert
    - appendPQExpBufferStr
    - OidIsValid
    - RelFileNumberIsValid
    - appendPQExpBufferChar
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void binary_upgrade_set_pg_class_oids(Archive *fout,\n\t\t\t\t\t\t\t\t
      PQExpBuffer upgrade_buffer, Oid pg_class_oid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6013,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6019,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6022,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6024,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6025,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6028,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6028,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6029,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 5
    argNames:
    - upgrade_buffer
    - dobj
    - objtype
    - objname
    - objnamespace
    argTypes:
    - PQExpBuffer
    - DumpableObject*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6030
      start: 5992
    functionDepth: 1
    functionLinenumber: 5992
    functionLinenumberEnd: 6030
    functionName: binary_upgrade_extension_member
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - findObjectByDumpId
    - appendPQExpBufferStr
    - pg_fatal
    - fmtId
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void binary_upgrade_extension_member(PQExpBuffer upgrade_buffer,\n\t\t\t\t\t\t\t\tconst
      DumpableObject *dobj,\n\t\t\t\t\t\t\t\tconst char *objtype,\n\t\t\t\t\t\t\t\tconst
      char *objname,\n\t\t\t\t\t\t\t\tconst char *objnamespace)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6051,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6057,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6063,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6065,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6067,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6069,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6070,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6071,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6072,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6073,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6074,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6081,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6081,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6082,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6082,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6083,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6084,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6084,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6085,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6085,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6086,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6086,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6089,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6090,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6091,1
    - Dst: selectDumpableNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6094,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6097,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6116,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6118,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6119,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6122,1
    - Dst: quoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6123,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6124,1
    - Dst: quoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6125,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6126,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6127,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6128,1
    - Dst: quoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6129,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6130,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6131,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6134,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6137,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6138,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6142,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 48
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6144
      start: 6036
    functionDepth: 4
    functionLinenumber: 6036
    functionLinenumberEnd: 6144
    functionName: getNamespaces
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - pstrdup
    - PQgetvalue
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - PQfnumber
    - PQntuples
    - selectDumpableNamespace
    - atooid
    - getRoleName
    - pg_malloc_array
    - resetPQExpBuffer
    - quoteAclUserName
    - appendPGArray
    - appendPQExpBufferChar
    - PQgetisnull
    - pg_strdup
    - AssignDumpId
    linkageType: ''
    returnType: void
    signature: void getNamespaces(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: findNamespaceByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6155,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - nsoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6159
      start: 6150
    functionDepth: 2
    functionLinenumber: 6150
    functionLinenumberEnd: 6159
    functionName: findNamespace
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - findNamespaceByOid
    - pg_fatal
    linkageType: ''
    returnType: NamespaceInfo
    signature: 'NamespaceInfo *

      findNamespace(Oid nsoid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6186,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6188,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6193,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6195,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6199,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6201,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6202,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6203,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6204,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6205,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6206,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6207,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6208,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6213,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6213,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6214,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6214,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6215,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6216,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6216,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6217,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6217,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6218,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6219,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6219,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6220,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6220,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6221,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6221,1
    - Dst: selectDumpableExtension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6224,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6228,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 2
    argNames:
    - fout
    - numExtensions
    argTypes:
    - Archive*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6234
      start: 6168
    functionDepth: 2
    functionLinenumber: 6168
    functionLinenumberEnd: 6234
    functionName: getExtensions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - destroyPQExpBuffer
    - selectDumpableExtension
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: ExtensionInfo
    signature: 'ExtensionInfo *

      getExtensions(Archive *fout, int *numExtensions)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6249,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6282,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6294,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6296,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6298,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6300,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6301,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6302,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6303,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6304,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6305,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6306,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6307,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6308,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6309,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6310,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6311,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6312,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6313,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6318,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6318,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6319,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6319,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6320,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6321,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6321,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6323,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6323,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6323,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6324,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6324,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6325,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6325,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6329,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6329,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6330,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6330,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6331,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6331,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6332,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6333,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6336,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6336,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6341,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6341,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6346,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6346,1
    - Dst: selectDumpableType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6354,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6357,1
    - Dst: getDomainConstraints
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6368,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6384,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6387,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6388,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6402,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6404,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 69
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6405
      start: 6243
    functionDepth: 4
    functionLinenumber: 6243
    functionLinenumberEnd: 6405
    functionName: getTypes
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - getDomainConstraints
    - pg_malloc_object
    - PQclear
    - strcmp
    - findNamespace
    - selectDumpableType
    - PQgetvalue
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - ExecuteSqlQuery
    - createPQExpBuffer
    - PQfnumber
    - PQntuples
    - atooid
    - getRoleName
    - pg_malloc_array
    - PQgetisnull
    - pg_strdup
    - AssignDumpId
    linkageType: ''
    returnType: void
    signature: void getTypes(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6417,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6434,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6443,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6445,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6447,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6449,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6450,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6451,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6452,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6453,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6454,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6455,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6456,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6457,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6462,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6462,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6463,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6463,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6464,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6465,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6465,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6467,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6467,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6467,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6468,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6468,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6469,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6470,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6470,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6471,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6471,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6472,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6472,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6475,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6478,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6481
      start: 6411
    functionDepth: 4
    functionLinenumber: 6411
    functionLinenumberEnd: 6481
    functionName: getOperators
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getOperators(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6502,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6509,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6515,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6517,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6519,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6521,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6522,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6523,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6524,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6525,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6526,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6531,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6531,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6532,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6532,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6533,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6534,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6534,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6536,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6536,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6536,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6537,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6537,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6538,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6538,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6541,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6544,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6547
      start: 6487
    functionDepth: 4
    functionLinenumber: 6487
    functionLinenumberEnd: 6547
    functionName: getCollations
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - atoi
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getCollations(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6567,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6574,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6579,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6581,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6583,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6585,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6586,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6587,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6588,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6589,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6594,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6594,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6595,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6595,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6596,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6597,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6597,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6599,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6599,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6599,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6600,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6600,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6603,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6606,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6608,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6609
      start: 6553
    functionDepth: 4
    functionLinenumber: 6553
    functionLinenumberEnd: 6609
    functionName: getConversions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getConversions(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6629,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6634,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6635,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6638,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6640,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6642,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6644,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6646,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6647,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6648,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6649,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6650,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6655,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6655,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6656,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6656,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6657,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6658,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6658,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6660,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6660,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6661,1
    - Dst: selectDumpableAccessMethod
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6664,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6667,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6670
      start: 6615
    functionDepth: 4
    functionLinenumber: 6615
    functionLinenumberEnd: 6670
    functionName: getAccessMethods
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - selectDumpableAccessMethod
    - PQclear
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getAccessMethods(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6683,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6697,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6702,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6704,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6706,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6708,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6709,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6710,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6711,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6712,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6713,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6718,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6718,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6719,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6719,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6720,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6721,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6721,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6723,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6723,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6723,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6724,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6724,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6725,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6725,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6728,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6731,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6734
      start: 6677
    functionDepth: 4
    functionLinenumber: 6677
    functionLinenumberEnd: 6734
    functionName: getOpclasses
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getOpclasses(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6755,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6762,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6767,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6769,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6771,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6773,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6774,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6775,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6776,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6777,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6778,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6783,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6783,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6784,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6784,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6785,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6786,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6786,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6788,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6788,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6788,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6789,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6789,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6790,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6790,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6793,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6796,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6798,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6799
      start: 6740
    functionDepth: 4
    functionLinenumber: 6740
    functionLinenumberEnd: 6799
    functionName: getOpfamilies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getOpfamilies(Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6812,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6832,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6851,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6857,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6859,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6861,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6863,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6865,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6866,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6867,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6868,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6869,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6870,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6871,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6872,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6873,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6878,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6878,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6879,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6879,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6880,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6881,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6881,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6883,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6883,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6883,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6884,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6884,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6885,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6885,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6888,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6888,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6891,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6891,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6896,1
    - Dst: parseOidArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6897,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6897,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6904,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6907,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6911,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6913,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 45
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6914
      start: 6805
    functionDepth: 4
    functionLinenumber: 6805
    functionLinenumberEnd: 6914
    functionName: getAggregates
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - findNamespace
    - PQgetvalue
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - selectDumpableObject
    - PQfnumber
    - PQntuples
    - atooid
    - getRoleName
    - parseOidArray
    - pg_malloc_array
    - appendPQExpBufferChar
    - PQgetisnull
    - pg_strdup
    - AssignDumpId
    - atoi
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getAggregates(Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6927,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6966,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6997,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7003,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7005,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7007,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7009,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7011,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7013,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7014,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7015,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7016,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7017,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7018,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7019,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7020,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7021,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7022,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7023,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7028,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7028,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7029,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7029,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7030,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7031,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7031,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7033,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7033,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7033,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7034,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7034,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7035,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7035,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7038,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7038,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7039,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7039,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7040,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7040,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7041,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7041,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7046,1
    - Dst: parseOidArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7047,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7047,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7053,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7056,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7060,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7062,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 48
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7063
      start: 6920
    functionDepth: 4
    functionLinenumber: 6920
    functionLinenumberEnd: 7063
    functionName: getFuncs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - findNamespace
    - PQgetvalue
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - selectDumpableObject
    - PQfnumber
    - PQntuples
    - atooid
    - getRoleName
    - parseOidArray
    - pg_malloc_array
    - pg_malloc0_array
    - appendPQExpBufferChar
    - PQgetisnull
    - pg_strdup
    - AssignDumpId
    - atoi
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getFuncs(Archive *fout)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7088,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7094,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7095,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7100,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7104,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7134,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 9
    argNames:
    - fout
    - rel
    - relpages
    - reltuples
    - relallvisible
    - relallfrozen
    - relkind
    - indAttNames
    - nindAttNames
    argTypes:
    - Archive*
    - DumpableObject*
    - int32
    - char*
    - int32
    - int32
    - char
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7141
      start: 7072
    functionDepth: 2
    functionLinenumber: 7072
    functionLinenumberEnd: 7141
    functionName: getRelationStatistics
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    - AssignDumpId
    - pstrdup
    - pg_fatal
    - pg_malloc0_object
    - pg_strdup
    linkageType: ''
    returnType: RelStatsInfo
    signature: "RelStatsInfo *\ngetRelationStatistics(Archive *fout, DumpableObject
      *rel, int32 relpages,\n\t\t\t\t\t  char *reltuples, int32 relallvisible,\n\t\t\t\t\t
      \ int32 relallfrozen, char relkind,\n\t\t\t\t\t  char **indAttNames, int nindAttNames)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7157,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7217,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7226,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7228,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7230,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7237,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7241,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7242,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7257,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7260,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7263,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7266,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7269,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7272,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7275,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7280,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7283,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7286,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7295,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7307,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7315,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7318,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7330,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7332,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7333,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7334,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7335,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7336,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7337,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7338,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7339,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7342,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7344,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7357,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7359,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7360,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7361,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7362,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7363,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7364,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7365,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7366,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7367,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7368,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7369,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7370,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7371,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7372,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7373,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7374,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7375,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7376,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7377,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7378,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7379,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7380,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7381,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7382,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7383,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7384,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7385,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7386,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7387,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7388,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7389,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7390,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7391,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7392,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7393,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7394,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7395,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7396,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7397,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7398,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7409,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7410,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7411,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7411,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7412,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7415,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7419,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7419,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7420,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7420,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7423,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7423,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7424,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7424,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7425,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7426,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7426,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7428,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7428,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7428,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7429,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7429,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7433,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7434,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7434,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7435,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7435,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7436,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7436,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7437,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7437,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7438,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7438,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7439,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7439,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7440,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7443,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7443,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7444,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7451,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7451,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7452,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7452,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7454,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7454,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7455,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7455,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7456,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7456,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7457,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7458,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7458,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7459,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7460,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7460,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7461,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7461,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7462,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7462,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7463,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7463,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7464,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7464,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7465,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7465,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7466,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7466,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7467,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7467,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7468,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7471,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7471,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7472,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7472,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7473,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7473,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7474,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7474,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7475,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7478,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7478,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7479,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7479,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7480,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7480,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7485,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7486,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7489,1
    - Dst: quoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7490,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7491,1
    - Dst: quoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7492,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7493,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7494,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7496,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7498,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7499,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7502,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7502,1
    - Dst: selectDumpableTable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7512,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7537,1
    - Dst: getRelationStatistics
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7546,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7548,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7580,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7581,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7584,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7585,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7591,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7592,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7593,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7602,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7603,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7608,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7611,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7613,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 175
    argCount: 2
    argNames:
    - fout
    - numTables
    argTypes:
    - Archive*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7616
      start: 7150
    functionDepth: 4
    functionLinenumber: 7150
    functionLinenumberEnd: 7616
    functionName: getTables
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - CppAsString2
    - PQclear
    - strcmp
    - GetConnection
    - findNamespace
    - pstrdup
    - PQgetvalue
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - fmtQualifiedDumpable
    - getRelationStatistics
    - PQfnumber
    - PQntuples
    - atooid
    - getRoleName
    - ExecuteSqlStatement
    - pg_malloc0_array
    - resetPQExpBuffer
    - quoteAclUserName
    - appendPGArray
    - appendPQExpBufferChar
    - PQgetisnull
    - pg_strdup
    - AssignDumpId
    - atoi
    - appendStringLiteralConn
    - appendPQExpBuffer
    - selectDumpableTable
    linkageType: ''
    returnType: TableInfo
    signature: 'TableInfo *

      getTables(Archive *fout, int *numTables)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7639,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7642,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7644,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7681
      start: 7625
    functionDepth: 2
    functionLinenumber: 7625
    functionLinenumberEnd: 7681
    functionName: getOwnedSeqs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - OidIsValid
    - findTableByOid
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void getOwnedSeqs(Archive *fout, TableInfo tblinfo[], int numTables)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7696,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7703,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7705,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7707,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7711,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7713,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7714,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7718,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7718,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7719,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7719,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7722,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - fout
    - numInherits
    argTypes:
    - Archive*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7727
      start: 7690
    functionDepth: 1
    functionLinenumber: 7690
    functionLinenumberEnd: 7727
    functionName: getInherits
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - appendPQExpBufferStr
    - pg_malloc_array
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: InhInfo
    signature: 'InhInfo *

      getInherits(Archive *fout, int *numInherits)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7760,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7770,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7778,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7780,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7784,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7784,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7787,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7789,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7794,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7796,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7797
      start: 7746
    functionDepth: 2
    functionLinenumber: 7746
    functionLinenumberEnd: 7797
    functionName: getPartitioningInfo
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - findTableByOid
    - PQclear
    - appendPQExpBufferStr
    - pg_fatal
    - destroyPQExpBuffer
    - PQgetvalue
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getPartitioningInfo(Archive *fout)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7809,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7810,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7853,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7869,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7870,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7872,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7874,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7880,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7882,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7884,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7901,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7905,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7918,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7926,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7929,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7933,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7936,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7950,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7972,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7985,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7987,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7989,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7990,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7991,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7992,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7993,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7994,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7995,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7996,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7997,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7998,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7999,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8000,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8001,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8002,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8003,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8004,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8005,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8006,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8007,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8008,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8009,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8010,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8011,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8012,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8013,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8014,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8015,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8016,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8017,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8019,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8028,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8028,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8034,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8034,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8048,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8052,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8066,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8066,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8067,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8067,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8068,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8068,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8071,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8071,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8072,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8072,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8073,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8075,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8075,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8078,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8078,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8079,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8079,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8080,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8080,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8081,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8081,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8082,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8082,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8083,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8083,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8084,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8084,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8085,1
    - Dst: parseOidArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8086,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8086,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8088,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8089,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8090,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8091,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8091,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8102,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8104,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8104,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8106,1
    - Dst: getRelationStatistics
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8109,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8110,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8114,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8123,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8125,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8125,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8126,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8126,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8127,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8129,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8129,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8135,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8135,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8140,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8141,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8142,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8148,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8158,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8160,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8161,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 145
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8162
      start: 7806
    functionDepth: 3
    functionLinenumber: 7806
    functionLinenumberEnd: 8162
    functionName: getIndexes
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_malloc_object
    - PQclear
    - PQgetvalue
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - getRelationStatistics
    - PQfnumber
    - PQntuples
    - atooid
    - parseOidArray
    - pg_malloc_array
    - appendPQExpBufferChar
    - PQgetisnull
    - pg_strdup
    - addObjectDependency
    - AssignDumpId
    - pg_fatal
    - atoi
    - appendPQExpBuffer
    - parsePGArray
    linkageType: ''
    returnType: void
    signature: void getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8187,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8190,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8194,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8198,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8200,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8202,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8203,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8204,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8205,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8206,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8207,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8208,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8210,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8215,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8215,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8216,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8216,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8217,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8218,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8218,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8220,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8220,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8220,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8221,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8221,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8223,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8223,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8223,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8224,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8227,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8227,1
    - Dst: selectDumpableStatisticsObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8230,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8236,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8237,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8238
      start: 8171
    functionDepth: 4
    functionLinenumber: 8171
    functionLinenumberEnd: 8238
    functionName: getExtendedStatistics
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - findTableByOid
    - PQclear
    - getRoleName
    - findNamespace
    - AssignDumpId
    - selectDumpableStatisticsObject
    - appendPQExpBufferStr
    - pg_malloc_array
    - atoi
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQgetisnull
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getExtendedStatistics(Archive *fout)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8252,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8253,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8275,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8285,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8286,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8288,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8290,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8294,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8296,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8297,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8304,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8306,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8309,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8311,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8313,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8314,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8315,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8316,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8317,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8318,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8319,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8321,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8326,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8326,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8342,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8346,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8346,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8347,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8347,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8348,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8349,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8349,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8354,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8354,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8355,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8355,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8368,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8371,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8371,1
    - Dst: addConstrChildIdxDeps
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8384,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8391,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8393,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8394,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 71
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8395
      start: 8249
    functionDepth: 2
    functionLinenumber: 8249
    functionLinenumberEnd: 8395
    functionName: getConstraints
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQfnumber
    - atooid
    - findTableByOid
    - PQclear
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - pg_fatal
    - appendPQExpBuffer
    - addConstrChildIdxDeps
    - destroyPQExpBuffer
    - PQgetvalue
    - appendPQExpBufferChar
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getConstraints(Archive *fout, TableInfo tblinfo[], int numTables)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8413,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8419,1
    - Dst: addConstrChildIdxDeps
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - dobj
    - refidx
    argTypes:
    - DumpableObject*
    - IndxInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8424
      start: 8408
    functionDepth: 2
    functionLinenumber: 8408
    functionLinenumberEnd: 8424
    functionName: addConstrChildIdxDeps
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - Assert
    - addObjectDependency
    - addConstrChildIdxDeps
    linkageType: ''
    returnType: void
    signature: void addConstrChildIdxDeps(DumpableObject *dobj, const IndxInfo *refidx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8435,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8452,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8462,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8467,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8471,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8473,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8475,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8476,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8477,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8478,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8479,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8480,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8482,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8488,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8489,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8499,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8500,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8507,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8507,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8508,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8508,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8509,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8510,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8510,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8515,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8515,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8531,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8534,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8536,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 48
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8537
      start: 8431
    functionDepth: 2
    functionLinenumber: 8431
    functionLinenumberEnd: 8537
    functionName: getDomainConstraints
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - addObjectDependency
    - atooid
    - PQclear
    - printfPQExpBuffer
    - Assert
    - AssignDumpId
    - pg_malloc_array
    - ExecuteSqlStatement
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getDomainConstraints(Archive *fout, TypeInfo *tyinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8549,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8559,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8566,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8568,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8570,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8572,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8573,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8574,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8575,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8576,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8577,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8578,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8585,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8585,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8586,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8586,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8587,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8588,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8588,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8589,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8589,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8590,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8592,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8596,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8597,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8598,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8612,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8619,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8628,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8630,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8631
      start: 8543
    functionDepth: 2
    functionLinenumber: 8543
    functionLinenumberEnd: 8631
    functionName: getRules
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - addObjectDependency
    - atooid
    - findTableByOid
    - PQclear
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - pg_fatal
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getRules(Archive *fout)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8643,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8644,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8665,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8676,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8677,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8679,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8691,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8714,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8734,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8752,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8764,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8766,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8768,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8769,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8770,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8771,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8772,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8773,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8774,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8776,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8785,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8785,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8791,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8791,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8805,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8814,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8814,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8815,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8815,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8816,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8817,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8817,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8820,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8821,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8822,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8822,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8826,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8828,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8829,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 61
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8830
      start: 8640
    functionDepth: 2
    functionLinenumber: 8640
    functionLinenumberEnd: 8830
    functionName: getTriggers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQfnumber
    - atooid
    - PQclear
    - AssignDumpId
    - pg_malloc_array
    - pg_fatal
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - PQgetvalue
    - appendPQExpBufferChar
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8853,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8855,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8865,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8867,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8869,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8871,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8872,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8873,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8874,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8875,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8876,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8877,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8878,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8883,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8883,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8884,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8884,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8885,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8886,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8886,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8887,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8887,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8888,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8888,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8889,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8889,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8890,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8890,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8891,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8891,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8892,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8895,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8898,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8900,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8901
      start: 8836
    functionDepth: 4
    functionLinenumber: 8836
    functionLinenumberEnd: 8901
    functionName: getEventTriggers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getEventTriggers(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8916,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8929,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8939,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8941,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8943,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8945,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8946,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8947,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8948,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8949,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8950,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8951,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8952,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8953,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8954,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8959,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8959,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8960,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8960,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8961,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8963,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8963,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8964,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8964,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8965,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8965,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8968,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8969,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8969,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8970,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8970,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8971,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8971,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8972,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8972,1
    - Dst: selectDumpableProcLang
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8975,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8978,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8982,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8984,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8985
      start: 8910
    functionDepth: 4
    functionLinenumber: 8910
    functionLinenumberEnd: 8985
    functionName: getProcLangs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableProcLang
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQgetisnull
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getProcLangs(Archive *fout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9000,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9012,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9025,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9031,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9033,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9035,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9037,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9038,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9039,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9040,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9041,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9042,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9043,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9052,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9052,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9053,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9053,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9054,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9055,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9055,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9056,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9056,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9057,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9057,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9058,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9059,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9066,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9067,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9068,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9070,1
    - Dst: selectDumpableCast
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9075,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9078,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9080,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9081
      start: 8994
    functionDepth: 4
    functionLinenumber: 8994
    functionLinenumberEnd: 9081
    functionName: getCasts
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableCast
    - initPQExpBuffer
    - findTypeByOid
    - appendPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - destroyPQExpBuffer
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getCasts(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9090,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9091,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9092,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9093,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9093,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9093,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9094,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9095,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - fout
    - langid
    argTypes:
    - Archive*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9098
      start: 9083
    functionDepth: 1
    functionLinenumber: 9083
    functionLinenumberEnd: 9098
    functionName: get_language_name
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - PQclear
    - ExecuteSqlQueryForSingleRow
    - destroyPQExpBuffer
    - PQgetvalue
    - fmtId
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      get_language_name(Archive *fout, Oid langid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9119,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9121,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9126,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9128,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9130,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9132,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9133,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9134,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9135,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9136,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9137,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9146,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9146,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9147,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9147,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9148,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9149,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9149,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9150,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9150,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9151,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9151,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9152,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9152,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9159,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9160,1
    - Dst: get_language_name
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9161,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9163,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9166,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9169,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9172,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9175
      start: 9104
    functionDepth: 4
    functionLinenumber: 9104
    functionLinenumberEnd: 9175
    functionName: getTransforms
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - get_language_name
    - selectDumpableObject
    - initPQExpBuffer
    - findTypeByOid
    - appendPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - free
    - PQntuples
    - destroyPQExpBuffer
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getTransforms(Archive *fout)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9188,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9189,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9190,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9230,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9231,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9256,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9257,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9263,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9264,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9267,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9268,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9277,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9320,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9329,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9340,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9343,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9346,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9350,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9354,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9358,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9361,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9365,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9377,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9385,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9393,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9395,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9397,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9400,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9402,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9404,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9405,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9406,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9407,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9408,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9409,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9410,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9411,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9412,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9413,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9414,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9415,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9416,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9417,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9418,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9419,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9420,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9421,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9422,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9423,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9424,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9425,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9426,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9427,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9430,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9431,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9440,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9440,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9447,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9447,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9461,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9468,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9473,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9474,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9475,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9476,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9477,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9478,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9479,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9480,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9481,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9482,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9483,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9484,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9485,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9486,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9487,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9488,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9489,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9490,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9491,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9492,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9493,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9494,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9499,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9499,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9502,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9504,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9504,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9505,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9505,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9506,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9509,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9509,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9510,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9511,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9512,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9513,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9515,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9516,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9516,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9517,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9518,1
    - Dst: determineNotNullFlags
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9521,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9530,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9531,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9531,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9532,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9532,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9533,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9533,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9534,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9535,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9535,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9536,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9536,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9538,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9546,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9547,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9553,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9555,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9567,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9569,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9571,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9578,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9580,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9581,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9586,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9586,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9587,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9587,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9588,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9588,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9589,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9589,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9590,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9605,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9609,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9622,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9625,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9627,1
    - Dst: shouldPrintColumn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9659,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9677,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9684,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9702,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9704,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9705,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9714,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9716,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9717,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9719,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9720,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9721,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9722,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9723,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9724,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9730,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9730,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9736,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9736,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9750,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9755,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9755,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9756,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9756,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9757,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9758,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9758,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9763,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9763,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9768,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9781,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9800,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9802,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9803,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9813,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9815,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9816,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9818,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9819,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9820,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9821,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9822,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9823,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9824,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9830,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9830,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9836,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9836,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9850,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9854,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9854,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9858,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9859,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9866,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9869,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9869,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9870,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9870,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9871,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9872,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9872,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9877,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9877,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9882,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9903,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9913,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9916,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9917,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9918,1
    CyclomaticComplexity: 83
    EdgeCount: 83
    ICount: 299
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9919
      start: 9184
    functionDepth: 2
    functionLinenumber: 9184
    functionLinenumberEnd: 9919
    functionName: getTableAttrs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - CppAsString2
    - PQclear
    - PQgetvalue
    - pg_log_error
    - determineNotNullFlags
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - printfPQExpBuffer
    - shouldPrintColumn
    - PQfnumber
    - PQntuples
    - atooid
    - pg_malloc_array
    - resetPQExpBuffer
    - appendPQExpBufferChar
    - pg_log_info
    - PQgetisnull
    - pg_log_error_hint
    - exit_nicely
    - pg_strdup
    - addObjectDependency
    - AssignDumpId
    - pg_fatal
    - ngettext
    - atoi
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9989,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9991,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9995,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9996,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9997,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10000,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10017,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10018,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10033,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10040,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10052,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10055,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10055,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10062,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10064,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10065,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10070,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10070,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10072,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 11
    argNames:
    - fout
    - res
    - r
    - tbinfo
    - j
    - i_notnull_name
    - i_notnull_comment
    - i_notnull_invalidoid
    - i_notnull_noinherit
    - i_notnull_islocal
    - invalidnotnulloids
    argTypes:
    - Archive*
    - PGresult*
    - int
    - TableInfo*
    - int
    - int
    - int
    - int
    - int
    - int
    - PQExpBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10076
      start: 9968
    functionDepth: 1
    functionLinenumber: 9968
    functionLinenumberEnd: 10076
    functionName: determineNotNullFlags
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pfree
    - psprintf
    - pstrdup
    - appendPQExpBuffer
    - PQgetvalue
    - appendPQExpBufferChar
    - PQgetisnull
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void determineNotNullFlags(Archive *fout, PGresult *res, int r,\n\t\t\t\t\t
      \ TableInfo *tbinfo, int j,\n\t\t\t\t\t  int i_notnull_name,\n\t\t\t\t\t  int
      i_notnull_comment,\n\t\t\t\t\t  int i_notnull_invalidoid,\n\t\t\t\t\t  int i_notnull_noinherit,\n\t\t\t\t\t
      \ int i_notnull_islocal,\n\t\t\t\t\t  PQExpBuffer *invalidnotnulloids)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - dopt
    - tbinfo
    - colno
    argTypes:
    - DumpOptions*
    - TableInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10103
      start: 10095
    functionDepth: 0
    functionLinenumber: 10095
    functionLinenumberEnd: 10103
    functionName: shouldPrintColumn
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool shouldPrintColumn(const DumpOptions *dopt, const TableInfo *tbinfo,
      int colno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10128,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10135,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10140,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10142,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10144,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10146,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10147,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10148,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10149,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10150,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10151,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10152,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10153,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10154,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10159,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10159,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10160,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10160,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10161,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10162,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10162,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10164,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10164,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10164,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10165,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10165,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10166,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10166,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10167,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10167,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10168,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10168,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10169,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10169,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10172,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10175,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10178
      start: 10110
    functionDepth: 4
    functionLinenumber: 10110
    functionLinenumberEnd: 10178
    functionName: getTSParsers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getTSParsers(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10200,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10202,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10207,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10209,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10211,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10213,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10214,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10215,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10216,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10217,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10218,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10219,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10224,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10224,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10225,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10225,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10226,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10227,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10227,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10229,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10229,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10229,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10230,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10230,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10231,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10231,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10232,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10235,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10235,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10238,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10241,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10244
      start: 10184
    functionDepth: 4
    functionLinenumber: 10184
    functionLinenumberEnd: 10244
    functionName: getTSDictionaries
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQgetisnull
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getTSDictionaries(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10265,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10267,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10271,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10273,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10275,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10277,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10278,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10279,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10280,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10281,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10282,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10287,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10287,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10288,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10288,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10289,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10290,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10290,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10292,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10292,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10292,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10293,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10293,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10294,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10294,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10297,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10300,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10303
      start: 10250
    functionDepth: 4
    functionLinenumber: 10250
    functionLinenumberEnd: 10303
    functionName: getTSTemplates
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getTSTemplates(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10324,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10326,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10330,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10332,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10334,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10336,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10337,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10338,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10339,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10340,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10341,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10346,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10346,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10347,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10347,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10348,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10349,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10349,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10351,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10351,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10351,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10352,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10352,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10353,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10353,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10356,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10359,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10362
      start: 10309
    functionDepth: 4
    functionLinenumber: 10309
    functionLinenumberEnd: 10362
    functionName: getTSConfigurations
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getTSConfigurations(Archive *fout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10387,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10389,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10395,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10397,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10399,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10410,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10412,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10414,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10416,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10417,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10418,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10419,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10420,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10421,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10422,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10423,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10424,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10425,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10430,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10430,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10431,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10431,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10432,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10433,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10433,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10435,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10435,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10436,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10436,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10439,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10439,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10440,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10440,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10441,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10441,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10442,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10442,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10443,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10443,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10446,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10449,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10453,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10455,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 42
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10456
      start: 10368
    functionDepth: 4
    functionLinenumber: 10368
    functionLinenumberEnd: 10456
    functionName: getForeignDataWrappers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQgetisnull
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getForeignDataWrappers(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10481,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10483,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10495,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10497,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10499,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10501,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10502,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10503,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10504,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10505,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10506,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10507,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10508,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10509,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10510,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10515,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10515,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10516,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10516,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10517,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10518,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10518,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10520,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10520,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10521,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10521,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10524,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10524,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10525,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10525,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10526,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10526,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10527,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10527,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10528,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10528,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10531,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10537,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10541,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10543,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10544
      start: 10462
    functionDepth: 4
    functionLinenumber: 10462
    functionLinenumberEnd: 10544
    functionName: getForeignServers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - getRoleName
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - selectDumpableObject
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQgetisnull
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getForeignServers(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10567,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10581,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10593,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10595,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10597,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10599,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10600,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10601,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10602,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10603,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10604,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10605,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10609,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10609,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10612,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10612,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10613,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10613,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10614,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10616,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10616,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10619,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10623,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10623,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10624,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10624,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10627,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10627,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10628,1
    - Dst: selectDumpableDefaultACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10634,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10637,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10639,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10640
      start: 10550
    functionDepth: 3
    functionLinenumber: 10550
    functionLinenumberEnd: 10640
    functionName: getDefaultACLs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - selectDumpableDefaultACL
    - PQclear
    - getRoleName
    - findNamespace
    - AssignDumpId
    - appendPQExpBufferStr
    - pg_malloc_array
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void getDefaultACLs(Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10650,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10673,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - roleoid_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10675
      start: 10647
    functionDepth: 1
    functionLinenumber: 10647
    functionLinenumberEnd: 10675
    functionName: getRoleName
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 22
    functionsReached:
    - atooid
    - pg_fatal
    linkageType: ''
    returnType: char
    signature: 'char *

      getRoleName(const char *roleoid_str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10692,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10694,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10696,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10700,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10700,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10701,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10701,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10705
      start: 10683
    functionDepth: 1
    functionLinenumber: 10683
    functionLinenumberEnd: 10705
    functionName: collectRoleNames
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - pg_malloc_array
    - PQgetvalue
    - PQntuples
    - ExecuteSqlQuery
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void collectRoleNames(Archive *fout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10721,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10727,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10731,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10733,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10736,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10736,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10739,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10747,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10750,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10754,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10756,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10759,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10759,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10760,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10760,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10761,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10761,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10762,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10763,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10769,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10783,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10793,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10809,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10812,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10816,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10818,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 39
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10819
      start: 10718
    functionDepth: 2
    functionLinenumber: 10718
    functionLinenumberEnd: 10819
    functionName: getAdditionalACLs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findObjectByCatalogId
    - atooid
    - findTableByOid
    - PQclear
    - strcmp
    - printfPQExpBuffer
    - pstrdup
    - appendPQExpBufferStr
    - atoi
    - pg_log_warning
    - destroyPQExpBuffer
    - PQgetvalue
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getAdditionalACLs(Archive *fout)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10860,1
    - Dst: findComments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10873,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10900,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10907,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10908,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10910,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10912,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10912,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10913,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10914,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10915,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10917,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10924,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10924,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10925,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10934,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10935,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 9
    argNames:
    - fout
    - type
    - name
    - namespace
    - owner
    - catalogId
    - subid
    - dumpId
    - initdb_comment
    argTypes:
    - Archive*
    - char*
    - char*
    - char*
    - char*
    - CatalogId
    - int
    - DumpId
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10937
      start: 10844
    functionDepth: 1
    functionLinenumber: 10844
    functionLinenumberEnd: 10937
    functionName: dumpCommentExtended
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - strcmp
    - ArchiveEntry
    - appendPQExpBufferStr
    - createDumpId
    - destroyPQExpBuffer
    - findComments
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void dumpCommentExtended(Archive *fout, const char *type,\n\t\t\t\t\tconst
      char *name, const char *namespace,\n\t\t\t\t\tconst char *owner, CatalogId catalogId,\n\t\t\t\t\tint
      subid, DumpId dumpId,\n\t\t\t\t\tconst char *initdb_comment)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dumpCommentExtended
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - fout
    - type
    - name
    - namespace
    - owner
    - catalogId
    - subid
    - dumpId
    argTypes:
    - Archive*
    - char*
    - char*
    - char*
    - char*
    - CatalogId
    - int
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10952
      start: 10944
    functionDepth: 2
    functionLinenumber: 10944
    functionLinenumberEnd: 10952
    functionName: dumpComment
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 4
    functionsReached:
    - dumpCommentExtended
    linkageType: ''
    returnType: void
    signature: "void dumpComment(Archive *fout, const char *type,\n\t\t\tconst char
      *name, const char *namespace,\n\t\t\tconst char *owner, CatalogId catalogId,\n\t\t\tint
      subid, DumpId dumpId)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10964,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10966,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10967,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10969,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - out
    - fout
    - argname
    - argtype
    - argval
    argTypes:
    - PQExpBuffer
    - Archive*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10971
      start: 10960
    functionDepth: 1
    functionLinenumber: 10960
    functionLinenumberEnd: 10971
    functionName: appendNamedArgument
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendPQExpBuffer
    - appendStringLiteralAH
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: "void appendNamedArgument(PQExpBuffer out, Archive *fout, const char
      *argname,\n\t\t\t\t\tconst char *argtype, const char *argval)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10982,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10983,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10984,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11009,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11010,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11011,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11022,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11030,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11031,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11035,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11036,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11042,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11043,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11044,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11049,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11051,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11055,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11056,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11060,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11061,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11062,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11063,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11066,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11067,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11070,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11071,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11072,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11074
      start: 10978
    functionDepth: 1
    functionLinenumber: 10978
    functionLinenumberEnd: 11074
    functionName: fetchAttributeStats
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - strcmp
    - ExecuteSqlQuery
    - destroyPQExpBuffer
    - appendPGArray
    - sprintf
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      fetchAttributeStats(Archive *fout)'
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11120,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11124,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11128,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11132,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11135,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11138,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11147,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11152,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11168,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11174,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11182,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11185,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11188,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11191,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11192,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11194,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11195,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11196,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11197,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11198,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11199,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11200,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11210,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11211,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11213,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11215,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11219,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11221,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11224,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11226,1
    - Dst: fetchAttributeStats
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11227,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11231,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11232,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11233,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11234,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11235,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11236,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11237,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11238,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11239,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11240,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11241,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11242,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11243,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11244,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11245,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11246,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11247,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11250,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11255,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11255,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11256,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11256,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11259,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11260,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11262,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11263,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11264,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11265,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11267,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11268,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11269,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11278,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11279,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11287,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11289,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11297,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11300,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11301,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11302,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11303,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11304,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11305,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11306,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11307,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11308,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11309,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11310,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11311,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11312,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11313,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11314,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11315,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11316,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11317,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11318,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11319,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11320,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11321,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11322,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11323,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11324,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11325,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11326,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11327,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11328,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11329,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11330,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11331,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11332,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11335,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11336,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11337,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11338,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11339,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11340,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11341,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11342,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11343,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11345,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11348,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 123
    argCount: 3
    argNames:
    - fout
    - userArg
    - te
    argTypes:
    - Archive*
    - void*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11350
      start: 11083
    functionDepth: 2
    functionLinenumber: 11083
    functionLinenumberEnd: 11350
    functionName: dumpRelationStats_dumper
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - PQclear
    - strcmp
    - fetchAttributeStats
    - pg_fatal
    - ExecuteSqlStatement
    - appendNamedArgument
    - resetPQExpBuffer
    - initPQExpBuffer
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQgetisnull
    - PQntuples
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      dumpRelationStats_dumper(Archive *fout, const void *userArg, const TocEntry
      *te)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11368,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11368,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - fout
    - rsinfo
    argTypes:
    - Archive*
    - RelStatsInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11377
      start: 11359
    functionDepth: 1
    functionLinenumber: 11359
    functionLinenumberEnd: 11377
    functionName: dumpRelationStats
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - createDumpId
    - ARCHIVE_OPTS
    - ArchiveEntry
    linkageType: ''
    returnType: void
    signature: void dumpRelationStats(Archive *fout, const RelStatsInfo *rsinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: findComments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11404,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11412,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11413,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11422,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11423,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11424,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11426,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11427,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11428,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11429,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11430,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11432,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11432,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11433,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11444,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11445,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11446,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11447,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11447,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11449,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11450,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11451,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11452,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11453,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11454,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11455,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11457,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11457,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11458,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11472,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11473,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 3
    argNames:
    - fout
    - tbinfo
    - reltypename
    argTypes:
    - Archive*
    - TableInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11474
      start: 11385
    functionDepth: 1
    functionLinenumber: 11385
    functionLinenumberEnd: 11474
    functionName: dumpTableComment
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - ArchiveEntry
    - appendPQExpBufferStr
    - fmtQualifiedDumpable
    - resetPQExpBuffer
    - createDumpId
    - destroyPQExpBuffer
    - findComments
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void dumpTableComment(Archive *fout, const TableInfo *tbinfo,\n\t\t\t\t
      const char *reltypename)"
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 3
    argNames:
    - classoid
    - objoid
    - items
    argTypes:
    - Oid
    - Oid
    - CommentItem**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11546
      start: 11483
    functionDepth: 0
    functionLinenumber: 11483
    functionLinenumberEnd: 11546
    functionName: findComments
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int findComments(Oid classoid, Oid objoid, CommentItem **items)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11573,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11575,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11579,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11583,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11584,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11585,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11586,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11588,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11590,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11599,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11599,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11600,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11600,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11601,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11601,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11607,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11621,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11628,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11628,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11635,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11636,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11637
      start: 11560
    functionDepth: 2
    functionLinenumber: 11560
    functionLinenumberEnd: 11637
    functionName: collectComments
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findObjectByCatalogId
    - atooid
    - PQclear
    - appendPQExpBufferStr
    - pg_malloc_array
    - atoi
    - findTypeByOid
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void collectComments(Archive *fout)
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: dumpNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11662,1
    - Dst: dumpExtension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11665,1
    - Dst: dumpType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11668,1
    - Dst: dumpShellType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11671,1
    - Dst: dumpFunc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11674,1
    - Dst: dumpAgg
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11677,1
    - Dst: dumpOpr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11680,1
    - Dst: dumpAccessMethod
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11683,1
    - Dst: dumpOpclass
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11686,1
    - Dst: dumpOpfamily
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11689,1
    - Dst: dumpCollation
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11692,1
    - Dst: dumpConversion
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11695,1
    - Dst: dumpTable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11698,1
    - Dst: dumpTableAttach
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11701,1
    - Dst: dumpAttrDef
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11704,1
    - Dst: dumpIndex
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11707,1
    - Dst: dumpIndexAttach
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11710,1
    - Dst: dumpStatisticsExt
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11713,1
    - Dst: dumpStatisticsExtStats
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11714,1
    - Dst: refreshMatViewData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11717,1
    - Dst: dumpRule
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11720,1
    - Dst: dumpTrigger
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11723,1
    - Dst: dumpEventTrigger
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11726,1
    - Dst: dumpConstraint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11729,1
    - Dst: dumpConstraint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11732,1
    - Dst: dumpProcLang
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11735,1
    - Dst: dumpCast
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11738,1
    - Dst: dumpTransform
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11741,1
    - Dst: dumpSequenceData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11744,1
    - Dst: dumpTableData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11747,1
    - Dst: dumpTSParser
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11753,1
    - Dst: dumpTSDictionary
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11756,1
    - Dst: dumpTSTemplate
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11759,1
    - Dst: dumpTSConfig
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11762,1
    - Dst: dumpForeignDataWrapper
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11765,1
    - Dst: dumpForeignServer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11768,1
    - Dst: dumpDefaultACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11771,1
    - Dst: dumpLO
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11774,1
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11782,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11784,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11787,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11788,1
    - Dst: dumpPolicy
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11810,1
    - Dst: dumpPublication
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11813,1
    - Dst: dumpPublicationTable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11816,1
    - Dst: dumpPublicationNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11819,1
    - Dst: dumpSubscription
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11823,1
    - Dst: dumpSubscriptionTable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11826,1
    - Dst: dumpRelationStats
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11829,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 153
    argCount: 2
    argNames:
    - fout
    - dobj
    argTypes:
    - Archive*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11836
      start: 11645
    functionDepth: 3
    functionLinenumber: 11645
    functionLinenumberEnd: 11836
    functionName: dumpDumpableObject
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpOpr
    - dumpTSTemplate
    - ArchiveEntry
    - refreshMatViewData
    - dumpStatisticsExtStats
    - dumpFunc
    - dumpExtension
    - ARCHIVE_OPTS
    - dumpEventTrigger
    - dumpPublication
    - dumpRule
    - dumpTSParser
    - dumpCast
    - dumpProcLang
    - dumpAccessMethod
    - dumpOpclass
    - dumpTable
    - dumpTransform
    - dumpTableData
    - dumpLO
    - dumpOpfamily
    - dumpShellType
    - dumpSubscription
    - dumpCollation
    - dumpStatisticsExt
    - dumpSubscriptionTable
    - dumpRelationStats
    - dumpPublicationTable
    - dumpType
    - dumpSequenceData
    - dumpTSDictionary
    - dumpDefaultACL
    - dumpAttrDef
    - dumpPublicationNamespace
    - findObjectByDumpId
    - dumpAgg
    - dumpTableAttach
    - dumpPolicy
    - dumpConstraint
    - dumpIndex
    - dumpIndexAttach
    - dumpTrigger
    - dumpTSConfig
    - dumpForeignServer
    - pg_fatal
    - dumpNamespace
    - dumpForeignDataWrapper
    - dumpConversion
    linkageType: ''
    returnType: void
    signature: void dumpDumpableObject(Archive *fout, DumpableObject *dobj)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11854,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11855,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11857,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11857,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11861,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11862,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11867,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11869,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11874,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11878,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11879,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11891,1
    - Dst: dumpCommentExtended
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11893,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11900,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11905,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11909,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11911,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11912,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - fout
    - nspinfo
    argTypes:
    - Archive*
    - NamespaceInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11913
      start: 11842
    functionDepth: 2
    functionLinenumber: 11842
    functionLinenumberEnd: 11913
    functionName: dumpNamespace
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpACL
    - dumpCommentExtended
    - strcmp
    - ArchiveEntry
    - appendPQExpBufferStr
    - binary_upgrade_extension_member
    - dumpSecLabel
    - destroyPQExpBuffer
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpNamespace(Archive *fout, const NamespaceInfo *nspinfo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11931,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11932,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11934,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11934,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11936,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11950,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11951,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11966,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11973,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11975,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11977,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11978,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11979,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11980,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11981,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11982,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11983,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11990,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11991,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11993,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11994,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11995,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11996,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11998,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11999,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12000,1
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12006,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12010,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12011,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12014,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12015,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12019,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12020,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12028,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12032,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12034,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12035,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 2
    argNames:
    - fout
    - extinfo
    argTypes:
    - Archive*
    - ExtensionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12036
      start: 11919
    functionDepth: 3
    functionLinenumber: 11919
    functionLinenumberEnd: 12036
    functionName: dumpExtension
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findObjectByDumpId
    - appendStringLiteralAH
    - pg_free
    - ArchiveEntry
    - appendPQExpBufferStr
    - strlen
    - dumpComment
    - destroyPQExpBuffer
    - appendPQExpBufferChar
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpExtension(Archive *fout, const ExtensionInfo *extinfo)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dumpBaseType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12053,1
    - Dst: dumpDomain
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12055,1
    - Dst: dumpCompositeType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12057,1
    - Dst: dumpEnumType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12059,1
    - Dst: dumpRangeType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12061,1
    - Dst: dumpUndefinedType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12063,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12065,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12067
      start: 12042
    functionDepth: 1
    functionLinenumber: 12042
    functionLinenumberEnd: 12067
    functionName: dumpType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpCompositeType
    - dumpDomain
    - dumpEnumType
    - pg_log_warning
    - dumpBaseType
    - dumpRangeType
    - dumpUndefinedType
    linkageType: ''
    returnType: void
    signature: void dumpType(Archive *fout, const TypeInfo *tyinfo)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12077,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12078,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12079,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12093,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12100,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12105,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12109,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12111,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12113,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12113,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12114,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12114,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12120,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12123,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12127,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12132,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12137,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12139,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12140,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12141,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12145,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12149,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12150,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12155,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12155,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12156,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12159,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12160,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12163,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12164,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12165,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12170,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12175,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12176,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12186,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12191,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12196,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12201,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12202,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12203,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12204,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12205,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12206,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12207
      start: 12073
    functionDepth: 3
    functionLinenumber: 12073
    functionLinenumberEnd: 12207
    functionName: dumpEnumType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - ArchiveEntry
    - dumpSecLabel
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - dumpACL
    - printfPQExpBuffer
    - binary_upgrade_set_type_oids_by_type_oid
    - fmtQualifiedDumpable
    - PQfnumber
    - PQntuples
    - atooid
    - ExecuteSqlStatement
    - binary_upgrade_extension_member
    - dumpComment
    - appendPQExpBufferChar
    - pg_free
    - pg_strdup
    - appendStringLiteralAH
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpEnumType(Archive *fout, const TypeInfo *tyinfo)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12217,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12218,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12219,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12229,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12232,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12236,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12239,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12242,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12256,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12261,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12265,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12267,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12267,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12268,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12268,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12274,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12277,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12281,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12284,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12285,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12285,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12287,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12287,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12288,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12289,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12289,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12292,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12292,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12294,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12294,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12295,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12295,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12297,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12298,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12299,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12299,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12302,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12302,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12302,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12303,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12305,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12308,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12309,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12312,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12312,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12313,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12314,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12316,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12316,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12317,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12318,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12320,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12323,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12328,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12329,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12339,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12344,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12349,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12354,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12355,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12356,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12357,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12358,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12359,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12360
      start: 12213
    functionDepth: 3
    functionLinenumber: 12213
    functionLinenumberEnd: 12360
    functionName: dumpRangeType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - ArchiveEntry
    - dumpSecLabel
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - findCollationByOid
    - createPQExpBuffer
    - dumpACL
    - printfPQExpBuffer
    - binary_upgrade_set_type_oids_by_type_oid
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - OidIsValid
    - PQfnumber
    - atooid
    - ExecuteSqlStatement
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - PQgetisnull
    - pg_strdup
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpRangeType(Archive *fout, const TypeInfo *tyinfo)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12375,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12376,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12380,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12380,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12381,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12381,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12383,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12386,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12390,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12394,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12399,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12400,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12410,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12415,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12420,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12425,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12426,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12427,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12428,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12429
      start: 12371
    functionDepth: 3
    functionLinenumber: 12371
    functionLinenumberEnd: 12429
    functionName: dumpUndefinedType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpACL
    - pg_free
    - binary_upgrade_set_type_oids_by_type_oid
    - ArchiveEntry
    - fmtQualifiedDumpable
    - binary_upgrade_extension_member
    - dumpComment
    - dumpSecLabel
    - destroyPQExpBuffer
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpUndefinedType(Archive *fout, const TypeInfo *tyinfo)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12439,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12440,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12441,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12473,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12490,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12494,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12497,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12500,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12505,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12509,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12511,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12511,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12512,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12512,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12513,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12513,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12514,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12514,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12515,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12515,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12516,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12516,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12517,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12517,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12518,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12518,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12519,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12519,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12520,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12520,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12520,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12521,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12521,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12521,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12522,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12522,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12522,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12523,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12523,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12523,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12524,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12524,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12524,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12525,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12525,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12525,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12526,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12526,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12527,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12527,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12528,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12528,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12529,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12529,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12530,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12530,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12531,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12531,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12532,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12532,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12533,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12533,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12534,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12534,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12535,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12535,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12537,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12537,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12543,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12543,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12544,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12544,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12551,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12558,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12562,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12566,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12569,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12570,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12571,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12572,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12573,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12574,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12575,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12576,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12577,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12578,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12579,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12580,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12582,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12583,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12587,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12589,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12591,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12594,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12595,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12597,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12598,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12599,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12602,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12604,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12605,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12608,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12609,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12611,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12613,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12614,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12618,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12620,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12622,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12624,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12627,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12629,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12631,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12633,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12635,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12636,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12638,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12641,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12646,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12647,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12657,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12662,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12667,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12672,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12673,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12674,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12675,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12676,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12677,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 116
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12678
      start: 12435
    functionDepth: 3
    functionLinenumber: 12435
    functionLinenumberEnd: 12678
    functionName: dumpBaseType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - ArchiveEntry
    - dumpSecLabel
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - dumpACL
    - printfPQExpBuffer
    - binary_upgrade_set_type_oids_by_type_oid
    - fmtQualifiedDumpable
    - getFormattedTypeName
    - ExecuteSqlQueryForSingleRow
    - OidIsValid
    - PQfnumber
    - atooid
    - ExecuteSqlStatement
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - PQgetisnull
    - pg_strdup
    - appendStringLiteralAH
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpBaseType(Archive *fout, const TypeInfo *tyinfo)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12688,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12689,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12690,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12704,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12707,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12717,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12722,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12726,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12728,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12728,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12729,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12729,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12730,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12730,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12731,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12731,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12732,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12732,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12734,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12734,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12739,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12739,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12739,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12742,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12747,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12747,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12748,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12748,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12750,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12756,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12760,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12762,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12762,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12774,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12784,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12786,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12787,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12789,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12790,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12791,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12798,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12800,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12802,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12805,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12815,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12816,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12819,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12821,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12824,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12829,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12830,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12840,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12845,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12850,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12865,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12866,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12867,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12870,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12875,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12884,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12886,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12887,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12890,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12894,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12897,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12898,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12899,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12900,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12901,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 84
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12902
      start: 12684
    functionDepth: 3
    functionLinenumber: 12684
    functionLinenumberEnd: 12902
    functionName: dumpDomain
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - ArchiveEntry
    - dumpSecLabel
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - findCollationByOid
    - createPQExpBuffer
    - dumpACL
    - printfPQExpBuffer
    - pfree
    - binary_upgrade_set_type_oids_by_type_oid
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - OidIsValid
    - PQfnumber
    - atooid
    - psprintf
    - ExecuteSqlStatement
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - PQgetisnull
    - pg_strdup
    - appendStringLiteralAH
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpDomain(Archive *fout, const TypeInfo *tyinfo)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12913,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12914,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12915,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12916,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12940,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12953,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12958,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12962,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12964,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12966,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12967,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12968,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12969,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12970,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12971,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12975,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12978,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12981,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12981,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12982,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12982,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12984,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12997,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12998,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12999,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13000,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13001,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13002,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13002,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13009,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13010,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13014,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13014,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13017,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13021,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13023,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13024,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13035,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13035,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13038,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13040,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13044,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13045,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13046,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13047,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13049,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13051,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13052,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13055,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13056,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13058,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13061,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13066,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13067,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13078,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13083,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13088,1
    - Dst: dumpCompositeTypeColComments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13095,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13097,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13098,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13099,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13100,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13101,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13102,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13103,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 76
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13104
      start: 12909
    functionDepth: 3
    functionLinenumber: 12909
    functionLinenumberEnd: 13104
    functionName: dumpCompositeType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - ArchiveEntry
    - dumpCompositeTypeColComments
    - dumpSecLabel
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - findCollationByOid
    - createPQExpBuffer
    - destroyPQExpBuffer
    - dumpACL
    - printfPQExpBuffer
    - binary_upgrade_set_type_oids_by_type_oid
    - fmtQualifiedDumpable
    - OidIsValid
    - PQfnumber
    - PQntuples
    - atooid
    - ExecuteSqlStatement
    - binary_upgrade_extension_member
    - dumpComment
    - appendPQExpBufferChar
    - pg_free
    - pg_strdup
    - appendStringLiteralAH
    - binary_upgrade_set_pg_class_oids
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpCompositeType(Archive *fout, const TypeInfo *tyinfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: findComments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13134,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13142,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13143,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13145,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13146,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13147,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13148,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13156,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13156,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13157,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13159,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13167,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13168,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13169,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13170,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13170,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13172,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13173,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13174,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13175,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13175,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13176,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13177,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13179,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13179,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13180,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13194,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13195,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 3
    argNames:
    - fout
    - tyinfo
    - res
    argTypes:
    - Archive*
    - TypeInfo*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13196
      start: 13115
    functionDepth: 1
    functionLinenumber: 13115
    functionLinenumberEnd: 13196
    functionName: dumpCompositeTypeColComments
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQfnumber
    - appendStringLiteralAH
    - fmtId
    - appendPQExpBufferStr
    - ArchiveEntry
    - PQgetvalue
    - fmtQualifiedDumpable
    - resetPQExpBuffer
    - createDumpId
    - destroyPQExpBuffer
    - atoi
    - findComments
    - PQntuples
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void dumpCompositeTypeColComments(Archive *fout, const TypeInfo *tyinfo,\n\t\t\t\t\t\t\t
      PGresult *res)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13214,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13226,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13230,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13231,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13234,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13235,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13242,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - fout
    - stinfo
    argTypes:
    - Archive*
    - ShellTypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13243
      start: 13204
    functionDepth: 3
    functionLinenumber: 13204
    functionLinenumberEnd: 13243
    functionName: dumpShellType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - binary_upgrade_set_type_oids_by_type_oid
    - ArchiveEntry
    - fmtQualifiedDumpable
    - destroyPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpShellType(Archive *fout, const ShellTypeInfo *stinfo)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13274,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13278,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13280,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13285,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13287,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13298,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13299,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13301,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13302,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13304,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13304,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13306,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13311,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13314,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13315,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13316,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13317,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13318,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13319,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13320,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13321,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13334,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13337,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13340,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13344,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13345,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13355,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13360,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13365,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13369,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13371,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13372,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 45
    argCount: 2
    argNames:
    - fout
    - plang
    argTypes:
    - Archive*
    - ProcLangInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13373
      start: 13250
    functionDepth: 3
    functionLinenumber: 13250
    functionLinenumberEnd: 13373
    functionName: dumpProcLang
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpACL
    - findFuncByOid
    - pg_free
    - ArchiveEntry
    - appendPQExpBufferStr
    - fmtQualifiedDumpable
    - binary_upgrade_extension_member
    - dumpComment
    - dumpSecLabel
    - OidIsValid
    - destroyPQExpBuffer
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpProcLang(Archive *fout, const ProcLangInfo *plang)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13387,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13388,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13388,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13390,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - finfo
    - funcargs
    - is_agg
    argTypes:
    - FuncInfo*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13394
      start: 13382
    functionDepth: 1
    functionLinenumber: 13382
    functionLinenumberEnd: 13394
    functionName: format_function_arguments
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendPQExpBuffer
    - fmtId
    - initPQExpBuffer
    - appendPQExpBufferStr
    linkageType: ''
    returnType: char
    signature: 'char *

      format_function_arguments(const FuncInfo *finfo, const char *funcargs, bool
      is_agg)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13411,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13413,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13413,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13415,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13419,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13421,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13422,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13425,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - fout
    - finfo
    - honor_quotes
    argTypes:
    - Archive*
    - FuncInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13427
      start: 13405
    functionDepth: 1
    functionLinenumber: 13405
    functionLinenumberEnd: 13427
    functionName: format_function_signature
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferStr
    - getFormattedTypeName
    - initPQExpBuffer
    - appendPQExpBufferChar
    - fmtId
    - appendPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      format_function_signature(Archive *fout, const FuncInfo *finfo, bool honor_quotes)'
  - BBCount: 47
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13474,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13475,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13476,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13477,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13482,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13485,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13502,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13505,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13509,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13512,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13516,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13519,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13523,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13526,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13529,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13534,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13539,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13543,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13545,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13545,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13546,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13546,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13548,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13548,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13549,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13549,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13556,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13556,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13558,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13558,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13559,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13559,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13560,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13560,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13561,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13561,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13562,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13562,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13563,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13563,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13564,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13564,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13565,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13565,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13566,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13566,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13567,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13567,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13568,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13568,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13569,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13569,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13570,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13570,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13571,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13571,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13572,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13572,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13580,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13584,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13585,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13588,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13595,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13595,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13596,1
    - Dst: appendStringLiteralDQ
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13598,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13603,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13606,1
    - Dst: appendStringLiteralDQ
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13608,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13613,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13614,1
    - Dst: format_function_arguments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13622,1
    - Dst: format_function_arguments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13623,1
    - Dst: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13625,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13627,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13628,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13636,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13639,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13641,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13648,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13650,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13652,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13655,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13655,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13659,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13662,1
    - Dst: parseOidArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13663,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13667,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13668,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13669,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13672,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13676,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13681,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13683,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13685,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13690,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13693,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13696,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13703,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13705,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13705,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13708,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13709,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13714,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13715,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13719,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13719,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13720,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13722,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13725,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13731,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13733,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13735,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13745,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13749,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13749,1
    - Dst: variable_is_guc_list_quote
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13767,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13774,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13778,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13782,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13783,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13786,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13789,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13792,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13794,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13799,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13804,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13805,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13816,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13821,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13826,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13831,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13833,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13834,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13835,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13836,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13837,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13838,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13839,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13840,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13841,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 182
    argCount: 2
    argNames:
    - fout
    - finfo
    argTypes:
    - Archive*
    - FuncInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13842
      start: 13434
    functionDepth: 3
    functionLinenumber: 13434
    functionLinenumberEnd: 13842
    functionName: dumpFunc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - append_depends_on_extension
    - format_function_arguments
    - PQclear
    - strcmp
    - strchr
    - ArchiveEntry
    - dumpSecLabel
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - format_function_signature
    - dumpACL
    - printfPQExpBuffer
    - pfree
    - appendStringLiteralDQ
    - getFormattedTypeName
    - ExecuteSqlQueryForSingleRow
    - PQfnumber
    - SplitGUCList
    - parseOidArray
    - psprintf
    - pg_malloc_array
    - ExecuteSqlStatement
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - PQgetisnull
    - variable_is_guc_list_quote
    - appendStringLiteralAH
    - pg_fatal
    - free
    - appendPQExpBuffer
    - parsePGArray
    linkageType: ''
    returnType: void
    signature: void dumpFunc(Archive *fout, const FuncInfo *finfo)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13865,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13867,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13869,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13873,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13874,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13875,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13876,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13878,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13879,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13880,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13883,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13889,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13892,1
    - Dst: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13897,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13903,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13904,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13905,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13908,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13911,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13915,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13917,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13918,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13920,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13923,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13927,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13931,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13932,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13940,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13944,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13945,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13946,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13947,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 2
    argNames:
    - fout
    - cast
    argTypes:
    - Archive*
    - CastInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13948
      start: 13848
    functionDepth: 3
    functionLinenumber: 13848
    functionLinenumberEnd: 13948
    functionName: dumpCast
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - format_function_signature
    - findFuncByOid
    - ArchiveEntry
    - appendPQExpBufferStr
    - pg_fatal
    - getFormattedTypeName
    - pg_log_warning
    - free
    - binary_upgrade_extension_member
    - dumpComment
    - destroyPQExpBuffer
    - OidIsValid
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpCast(Archive *fout, const CastInfo *cast)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13971,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13973,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13975,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13978,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13980,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13982,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13986,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13987,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13988,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13989,1
    - Dst: get_language_name
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13991,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13992,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13994,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13997,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14001,1
    - Dst: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14007,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14013,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14014,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14015,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14018,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14024,1
    - Dst: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14028,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14034,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14035,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14036,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14039,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14042,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14044,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14047,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14051,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14055,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14056,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14066,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14070,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14071,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14072,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14073,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14074,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 2
    argNames:
    - fout
    - transform
    argTypes:
    - Archive*
    - TransformInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14075
      start: 13953
    functionDepth: 3
    functionLinenumber: 13953
    functionLinenumberEnd: 14075
    functionName: dumpTransform
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - format_function_signature
    - findFuncByOid
    - ArchiveEntry
    - get_language_name
    - appendPQExpBufferStr
    - pg_fatal
    - getFormattedTypeName
    - pg_log_warning
    - free
    - binary_upgrade_extension_member
    - dumpComment
    - destroyPQExpBuffer
    - OidIsValid
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpTransform(Archive *fout, const TransformInfo *transform)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14123,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14126,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14127,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14128,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14129,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14130,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14135,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14149,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14154,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14158,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14160,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14161,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14162,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14163,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14164,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14165,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14166,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14167,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14168,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14169,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14171,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14172,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14173,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14174,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14175,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14176,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14177,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14178,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14179,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14180,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14183,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14184,1
    - Dst: convertRegProcReference
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14187,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14190,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14191,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14194,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14202,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14203,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14205,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14206,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14209,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14211,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14212,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14214,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14215,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14218,1
    - Dst: getFormattedOperatorName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14220,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14223,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14224,1
    - Dst: getFormattedOperatorName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14227,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14230,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14231,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14234,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14235,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14237,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14238,1
    - Dst: convertRegProcReference
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14240,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14243,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14244,1
    - Dst: convertRegProcReference
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14247,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14250,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14251,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14254,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14255,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14258,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14259,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14263,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14268,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14269,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14279,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14283,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14285,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14286,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14287,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14288,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14289,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 93
    argCount: 2
    argNames:
    - fout
    - oprinfo
    argTypes:
    - Archive*
    - OprInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14290
      start: 14082
    functionDepth: 3
    functionLinenumber: 14082
    functionLinenumberEnd: 14290
    functionName: dumpOpr
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - ArchiveEntry
    - pg_log_warning
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - printfPQExpBuffer
    - ExecuteSqlQueryForSingleRow
    - PQfnumber
    - OidIsValid
    - convertRegProcReference
    - ExecuteSqlStatement
    - binary_upgrade_extension_member
    - dumpComment
    - getFormattedOperatorName
    - free
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpOpr(Archive *fout, const OprInfo *oprinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14309,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14312,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - proc
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14326
      start: 14301
    functionDepth: 1
    functionLinenumber: 14301
    functionLinenumberEnd: 14326
    functionName: convertRegProcReference
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      convertRegProcReference(const char *proc)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14348,1
    - Dst: findOprByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14351,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14351,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14354,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14359,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - oproid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14362
      start: 14342
    functionDepth: 2
    functionLinenumber: 14342
    functionLinenumberEnd: 14362
    functionName: getFormattedOperatorName
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - strcmp
    - psprintf
    - pg_log_warning
    - fmtId
    - findOprByOid
    linkageType: ''
    returnType: char
    signature: 'char *

      getFormattedOperatorName(const char *oproid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14379,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14381,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14383,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14383,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - fout
    - funcOid
    argTypes:
    - Archive*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14388
      start: 14372
    functionDepth: 1
    functionLinenumber: 14372
    functionLinenumberEnd: 14388
    functionName: convertTSFunction
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - PQclear
    - ExecuteSqlQueryForSingleRow
    - snprintf
    - PQgetvalue
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      convertTSFunction(Archive *fout, Oid funcOid)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14406,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14407,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14409,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14409,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14411,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14416,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14419,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14422,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14424,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14425,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14426,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14430,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14432,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14436,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14440,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14441,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14449,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14453,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14454,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14455,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - fout
    - aminfo
    argTypes:
    - Archive*
    - AccessMethodInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14456
      start: 14394
    functionDepth: 3
    functionLinenumber: 14394
    functionLinenumberEnd: 14456
    functionName: dumpAccessMethod
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - ArchiveEntry
    - appendPQExpBufferStr
    - pg_log_warning
    - destroyPQExpBuffer
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpAccessMethod(Archive *fout, const AccessMethodInfo *aminfo)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14509,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14510,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14511,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14512,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14515,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14527,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14529,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14530,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14531,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14532,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14533,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14534,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14535,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14538,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14538,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14539,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14540,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14542,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14542,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14543,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14544,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14546,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14546,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14548,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14549,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14550,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14551,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14554,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14555,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14556,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14557,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14558,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14560,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14561,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14563,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14564,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14564,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14565,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14565,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14567,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14571,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14573,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14578,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14586,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14587,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14602,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14604,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14606,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14607,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14608,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14609,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14613,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14614,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14615,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14616,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14619,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14621,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14624,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14626,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14627,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14627,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14628,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14628,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14634,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14646,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14648,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14660,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14662,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14664,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14665,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14666,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14667,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14671,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14672,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14673,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14674,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14677,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14679,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14682,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14684,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14689,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14698,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14700,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14702,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14702,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14703,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14704,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14707,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14712,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14713,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14723,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14727,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14728,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14729,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14730,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14731,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14732,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14733,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 105
    argCount: 2
    argNames:
    - fout
    - opcinfo
    argTypes:
    - Archive*
    - OpclassInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14734
      start: 14462
    functionDepth: 3
    functionLinenumber: 14462
    functionLinenumberEnd: 14734
    functionName: dumpOpclass
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - ArchiveEntry
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - PQfnumber
    - PQntuples
    - resetPQExpBuffer
    - strlen
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - pg_strdup
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpOpclass(Archive *fout, const OpclassInfo *opcinfo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14780,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14781,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14782,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14783,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14789,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14804,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14806,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14808,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14820,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14823,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14825,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14831,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14833,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14836,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14836,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14838,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14839,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14840,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14841,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14844,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14845,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14846,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14847,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14849,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14852,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14852,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14854,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14855,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14856,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14857,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14864,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14866,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14867,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14868,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14869,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14873,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14874,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14875,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14876,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14879,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14881,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14884,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14886,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14887,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14887,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14888,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14888,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14897,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14899,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14900,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14901,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14902,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14906,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14907,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14908,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14909,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14912,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14914,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14921,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14924,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14924,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14925,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14926,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14929,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14934,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14935,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14945,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14949,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14950,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14951,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14952,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14953,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14954,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14955,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 78
    argCount: 2
    argNames:
    - fout
    - opfinfo
    argTypes:
    - Archive*
    - OpfamilyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14956
      start: 14743
    functionDepth: 3
    functionLinenumber: 14743
    functionLinenumberEnd: 14956
    functionName: dumpOpfamily
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - ArchiveEntry
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - PQfnumber
    - PQntuples
    - resetPQExpBuffer
    - strlen
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - pg_strdup
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpOpfamily(Archive *fout, const OpfamilyInfo *opfinfo)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14987,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14988,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14989,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14991,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14991,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14994,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14996,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15001,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15004,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15008,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15011,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15014,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15018,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15021,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15024,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15031,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15033,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15034,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15035,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15036,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15037,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15038,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15040,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15042,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15043,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15047,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15048,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15064,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15065,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15069,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15070,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15074,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15075,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15077,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15078,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15080,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15082,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15084,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15086,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15089,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15091,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15094,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15094,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15095,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15100,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15107,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15109,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15110,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15118,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15120,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15121,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15127,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15128,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15130,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15131,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15136,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15137,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15143,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15145,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15147,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15148,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15152,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15153,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15154,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15155,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15159,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15169,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15170,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15172,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15173,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15174,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15179,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15182,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15187,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15188,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15198,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15202,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15204,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15205,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15206,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15207,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 121
    argCount: 2
    argNames:
    - fout
    - collinfo
    argTypes:
    - Archive*
    - CollInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15208
      start: 14962
    functionDepth: 3
    functionLinenumber: 14962
    functionLinenumberEnd: 15208
    functionName: dumpCollation
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - ArchiveEntry
    - pg_log_warning
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - PQfnumber
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - PQgetisnull
    - pg_strdup
    - appendStringLiteralAH
    - pg_fatal
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpCollation(Archive *fout, const CollInfo *collinfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15236,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15237,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15238,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15240,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15240,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15243,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15251,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15253,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15254,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15255,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15256,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15258,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15259,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15260,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15261,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15263,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15264,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15266,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15268,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15269,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15270,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15271,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15273,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15276,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15281,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15282,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15292,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15296,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15298,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15299,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15300,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15301,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 2
    argNames:
    - fout
    - convinfo
    argTypes:
    - Archive*
    - ConvInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15302
      start: 15214
    functionDepth: 3
    functionLinenumber: 15214
    functionLinenumberEnd: 15302
    functionName: dumpConversion
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - PQclear
    - pg_free
    - ArchiveEntry
    - appendPQExpBufferStr
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - binary_upgrade_extension_member
    - dumpComment
    - PQgetvalue
    - PQfnumber
    - destroyPQExpBuffer
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpConversion(Archive *fout, const ConvInfo *convinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15316,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15318,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15318,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15320,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15323,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15326,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15328,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15330,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - agginfo
    - fout
    - honor_quotes
    argTypes:
    - AggInfo*
    - Archive*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15336
      start: 15310
    functionDepth: 1
    functionLinenumber: 15310
    functionLinenumberEnd: 15336
    functionName: format_aggregate_signature
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferStr
    - getFormattedTypeName
    - initPQExpBuffer
    - appendPQExpBufferChar
    - fmtId
    - appendPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      format_aggregate_signature(const AggInfo *agginfo, Archive *fout, bool honor_quotes)'
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15384,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15385,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15386,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15387,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15392,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15395,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15405,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15417,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15424,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15428,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15432,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15437,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15442,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15446,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15448,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15449,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15451,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15451,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15452,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15452,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15453,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15453,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15454,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15454,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15455,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15455,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15456,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15456,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15457,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15457,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15458,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15458,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15459,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15459,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15460,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15460,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15461,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15461,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15462,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15462,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15463,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15463,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15464,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15464,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15465,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15465,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15466,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15466,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15467,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15467,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15468,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15468,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15469,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15470,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15471,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15471,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15477,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15477,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15478,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15478,1
    - Dst: format_function_arguments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15479,1
    - Dst: format_function_arguments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15480,1
    - Dst: format_aggregate_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15483,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15494,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15497,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15499,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15503,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15505,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15506,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15509,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15511,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15514,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15520,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15523,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15526,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15529,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15536,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15537,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15539,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15540,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15542,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15543,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15545,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15547,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15553,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15555,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15559,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15561,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15562,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15565,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15567,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15570,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15576,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15579,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15582,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15585,1
    - Dst: getFormattedOperatorName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15592,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15595,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15597,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15601,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15606,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15608,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15610,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15614,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15615,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15618,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15619,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15623,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15628,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15630,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15640,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15646,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15656,1
    - Dst: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15658,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15661,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15666,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15667,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15668,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15670,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15672,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15673,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15674,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15675,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 158
    argCount: 2
    argNames:
    - fout
    - agginfo
    argTypes:
    - Archive*
    - AggInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15676
      start: 15342
    functionDepth: 3
    functionLinenumber: 15342
    functionLinenumberEnd: 15676
    functionName: dumpAgg
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - format_function_arguments
    - PQclear
    - strcmp
    - ArchiveEntry
    - dumpSecLabel
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - format_function_signature
    - dumpACL
    - printfPQExpBuffer
    - ExecuteSqlQueryForSingleRow
    - PQfnumber
    - ExecuteSqlStatement
    - binary_upgrade_extension_member
    - dumpComment
    - PQgetisnull
    - appendStringLiteralAH
    - getFormattedOperatorName
    - pg_fatal
    - format_aggregate_signature
    - free
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpAgg(Archive *fout, const AggInfo *agginfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15694,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15695,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15697,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15697,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15699,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15700,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15702,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15703,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15704,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15705,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15706,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15707,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15709,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15710,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15711,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15712,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15714,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15715,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15718,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15723,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15724,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15733,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15737,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15738,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15739,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - fout
    - prsinfo
    argTypes:
    - Archive*
    - TSParserInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15740
      start: 15682
    functionDepth: 3
    functionLinenumber: 15682
    functionLinenumberEnd: 15740
    functionName: dumpTSParser
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - convertTSFunction
    - ArchiveEntry
    - fmtQualifiedDumpable
    - binary_upgrade_extension_member
    - dumpComment
    - destroyPQExpBuffer
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpTSParser(Archive *fout, const TSParserInfo *prsinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15762,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15763,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15764,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15766,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15766,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15769,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15773,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15774,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15775,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15777,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15778,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15780,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15781,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15781,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15782,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15782,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15784,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15788,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15790,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15792,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15793,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15796,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15801,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15802,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15812,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15816,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15817,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15818,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15819,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - fout
    - dictinfo
    argTypes:
    - Archive*
    - TSDictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15820
      start: 15746
    functionDepth: 3
    functionLinenumber: 15746
    functionLinenumberEnd: 15820
    functionName: dumpTSDictionary
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - pg_free
    - ArchiveEntry
    - appendPQExpBufferStr
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - binary_upgrade_extension_member
    - dumpComment
    - PQgetvalue
    - destroyPQExpBuffer
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpTSDictionary(Archive *fout, const TSDictInfo *dictinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15838,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15839,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15841,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15841,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15843,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15844,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15847,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15848,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15849,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15850,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15852,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15853,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15856,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15861,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15862,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15871,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15875,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15876,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15877,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - fout
    - tmplinfo
    argTypes:
    - Archive*
    - TSTemplateInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15878
      start: 15826
    functionDepth: 3
    functionLinenumber: 15826
    functionLinenumberEnd: 15878
    functionName: dumpTSTemplate
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - convertTSFunction
    - ArchiveEntry
    - fmtQualifiedDumpable
    - binary_upgrade_extension_member
    - dumpComment
    - destroyPQExpBuffer
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpTSTemplate(Archive *fout, const TSTemplateInfo *tmplinfo)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15904,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15905,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15906,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15908,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15908,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15911,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15915,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15916,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15917,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15919,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15920,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15922,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15922,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15923,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15923,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15925,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15927,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15928,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15938,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15939,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15941,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15942,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15946,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15947,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15950,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15950,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15954,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15955,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15956,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15958,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15959,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15962,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15966,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15968,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15970,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15971,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15974,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15979,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15980,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15990,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15994,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15995,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15996,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15997,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 2
    argNames:
    - fout
    - cfginfo
    argTypes:
    - Archive*
    - TSConfigInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15998
      start: 15884
    functionDepth: 3
    functionLinenumber: 15884
    functionLinenumberEnd: 15998
    functionName: dumpTSConfig
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - ArchiveEntry
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - destroyPQExpBuffer
    - createPQExpBuffer
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - PQfnumber
    - PQntuples
    - resetPQExpBuffer
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - pg_strdup
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpTSConfig(Archive *fout, const TSConfigInfo *cfginfo)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16016,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16017,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16019,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16019,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16021,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16024,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16025,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16027,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16028,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16030,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16031,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16033,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16034,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16036,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16038,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16042,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16047,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16048,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16057,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16063,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16067,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16069,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16070,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - fout
    - fdwinfo
    argTypes:
    - Archive*
    - FdwInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16071
      start: 16004
    functionDepth: 3
    functionLinenumber: 16004
    functionLinenumberEnd: 16071
    functionName: dumpForeignDataWrapper
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpACL
    - strcmp
    - ArchiveEntry
    - appendPQExpBufferStr
    - strlen
    - binary_upgrade_extension_member
    - dumpComment
    - destroyPQExpBuffer
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpForeignDataWrapper(Archive *fout, const FdwInfo *fdwinfo)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16092,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16093,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16094,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16096,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16096,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16099,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16103,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16104,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16106,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16107,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16109,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16110,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16112,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16114,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16115,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16118,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16119,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16119,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16121,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16122,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16124,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16126,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16130,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16134,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16135,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16144,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16150,1
    - Dst: dumpUserMappings
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16156,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16161,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16163,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16165,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16166,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16167,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - fout
    - srvinfo
    argTypes:
    - Archive*
    - ForeignServerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16168
      start: 16077
    functionDepth: 3
    functionLinenumber: 16077
    functionLinenumberEnd: 16168
    functionName: dumpForeignServer
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpACL
    - appendStringLiteralAH
    - dumpUserMappings
    - PQclear
    - ArchiveEntry
    - appendPQExpBufferStr
    - ExecuteSqlQueryForSingleRow
    - strlen
    - binary_upgrade_extension_member
    - dumpComment
    - PQgetvalue
    - pg_free
    - destroyPQExpBuffer
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpForeignServer(Archive *fout, const ForeignServerInfo *srvinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16193,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16194,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16195,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16196,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16206,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16219,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16221,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16222,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16223,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16230,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16231,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16233,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16234,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16234,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16235,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16235,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16237,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16238,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16240,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16242,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16243,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16243,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16244,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16244,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16246,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16247,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16250,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16250,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16251,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16260,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16262,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16263,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16264,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16265,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 6
    argNames:
    - fout
    - servername
    - namespace
    - owner
    - catalogId
    - dumpId
    argTypes:
    - Archive*
    - char*
    - char*
    - char*
    - CatalogId
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16266
      start: 16177
    functionDepth: 1
    functionLinenumber: 16177
    functionLinenumberEnd: 16266
    functionName: dumpUserMappings
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - fmtId
    - appendPQExpBufferStr
    - ArchiveEntry
    - resetPQExpBuffer
    - appendPQExpBuffer
    - strlen
    - createDumpId
    - PQgetvalue
    - PQfnumber
    - destroyPQExpBuffer
    - PQntuples
    - ARCHIVE_OPTS
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void dumpUserMappings(Archive *fout,\n\t\t\t\t const char *servername,
      const char *namespace,\n\t\t\t\t const char *owner,\n\t\t\t\t CatalogId catalogId,
      DumpId dumpId)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16283,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16284,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16308,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16313,1
    - Dst: buildDefaultACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16316,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16324,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16328,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16329,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16337,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16338,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - fout
    - daclinfo
    argTypes:
    - Archive*
    - DefaultACLInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16339
      start: 16271
    functionDepth: 1
    functionLinenumber: 16271
    functionLinenumberEnd: 16339
    functionName: dumpDefaultACL
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - ArchiveEntry
    - pg_fatal
    - buildDefaultACLCommands
    - destroyPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpDefaultACL(Archive *fout, const DefaultACLInfo *daclinfo)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16383,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16386,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16404,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16405,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16408,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16410,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16430,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16433,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16438,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16443,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16445,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16447,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16453,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16455,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16456,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16465,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16468,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 10
    argNames:
    - fout
    - objDumpId
    - altDumpId
    - type
    - name
    - subname
    - nspname
    - tag
    - owner
    - dacl
    argTypes:
    - Archive*
    - DumpId
    - DumpId
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - DumpableAcl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16471
      start: 16363
    functionDepth: 1
    functionLinenumber: 16363
    functionLinenumberEnd: 16471
    functionName: dumpACL
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 14
    functionsReached:
    - buildACLCommands
    - strcmp
    - ArchiveEntry
    - pg_fatal
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - createDumpId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: DumpId
    signature: "DumpId dumpACL(Archive *fout, DumpId objDumpId, DumpId altDumpId,\n\t\tconst
      char *type, const char *name, const char *subname,\n\t\tconst char *nspname,
      const char *tag, const char *owner,\n\t\tconst DumpableAcl *dacl)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16510,1
    - Dst: findSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16523,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16525,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16535,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16537,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16539,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16539,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16540,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16541,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16542,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16547,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16549,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16550,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16550,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16551,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16559,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16562,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 8
    argNames:
    - fout
    - type
    - name
    - namespace
    - owner
    - catalogId
    - subid
    - dumpId
    argTypes:
    - Archive*
    - char*
    - char*
    - char*
    - char*
    - CatalogId
    - int
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16563
      start: 16491
    functionDepth: 1
    functionLinenumber: 16491
    functionLinenumberEnd: 16563
    functionName: dumpSecLabel
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 13
    functionsReached:
    - appendStringLiteralAH
    - strcmp
    - findSecLabels
    - appendPQExpBufferStr
    - ArchiveEntry
    - destroyPQExpBuffer
    - createDumpId
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void dumpSecLabel(Archive *fout, const char *type, const char *name,\n\t\t\t
      const char *namespace, const char *owner,\n\t\t\t CatalogId catalogId, int subid,
      DumpId dumpId)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: findSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16590,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16598,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16599,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16608,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16611,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16612,1
    - Dst: getAttrName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16616,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16618,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16619,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16620,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16620,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16622,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16623,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16624,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16625,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16629,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16630,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16631,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16632,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16632,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16633,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16642,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16643,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - fout
    - tbinfo
    - reltypename
    argTypes:
    - Archive*
    - TableInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16644
      start: 16571
    functionDepth: 1
    functionLinenumber: 16571
    functionLinenumberEnd: 16644
    functionName: dumpTableSecLabel
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - getAttrName
    - findSecLabels
    - appendPQExpBufferStr
    - ArchiveEntry
    - fmtQualifiedDumpable
    - resetPQExpBuffer
    - destroyPQExpBuffer
    - createDumpId
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpTableSecLabel(Archive *fout, const TableInfo *tbinfo, const
      char *reltypename)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 3
    argNames:
    - classoid
    - objoid
    - items
    argTypes:
    - Oid
    - Oid
    - SecLabelItem**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16722
      start: 16653
    functionDepth: 0
    functionLinenumber: 16653
    functionLinenumberEnd: 16722
    functionName: findSecLabels
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int findSecLabels(Oid classoid, Oid objoid, SecLabelItem **items)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16746,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16748,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16753,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16756,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16757,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16758,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16759,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16760,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16762,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16764,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16773,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16773,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16774,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16774,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16775,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16775,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16781,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16795,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16802,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16802,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16803,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16803,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16810,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16811,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16812
      start: 16732
    functionDepth: 2
    functionLinenumber: 16732
    functionLinenumberEnd: 16812
    functionName: collectSecLabels
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findObjectByCatalogId
    - atooid
    - PQclear
    - appendPQExpBufferStr
    - pg_malloc_array
    - atoi
    - findTypeByOid
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void collectSecLabels(Archive *fout)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dumpSequence
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16832,1
    - Dst: dumpTableSchema
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16834,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16838,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16838,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16857,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16871,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16878,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16891,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16906,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16911,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16915,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16917,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16919,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16920,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16921,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16922,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16923,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16931,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16931,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16938,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16942,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16944,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16945,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16948,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16949
      start: 16818
    functionDepth: 2
    functionLinenumber: 16818
    functionLinenumberEnd: 16949
    functionName: dumpTable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpACL
    - PQclear
    - printfPQExpBuffer
    - ExecuteSqlStatement
    - ExecuteSqlQuery
    - PQgetvalue
    - PQntuples
    - destroyPQExpBuffer
    - dumpSequence
    - pg_free
    - fmtId
    - createPQExpBuffer
    - appendPQExpBufferStr
    - dumpTableSchema
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpTable(Archive *fout, const TableInfo *tbinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16960,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16961,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16966,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16970,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16972,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16974,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16975,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16978,1
    - Dst: PQgetlength
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16982,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16985,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16989,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16989,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16990,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16990,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16992,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16993,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16996
      start: 16957
    functionDepth: 1
    functionLinenumber: 16957
    functionLinenumberEnd: 16996
    functionName: createViewAsClause
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendBinaryPQExpBuffer
    - PQclear
    - Assert
    - pg_fatal
    - PQgetvalue
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - PQgetlength
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: PQExpBuffer
    signature: PQExpBuffer createViewAsClause(Archive *fout, const TableInfo *tbinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17009,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17012,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17017,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17018,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17020,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17026,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17030,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17032,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17033,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17036,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17036,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17040
      start: 17006
    functionDepth: 2
    functionLinenumber: 17006
    functionLinenumberEnd: 17040
    functionName: createDummyViewAsClause
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - appendPQExpBufferStr
    - fmtQualifiedDumpable
    - appendPQExpBufferChar
    - fmtId
    - findCollationByOid
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: PQExpBuffer
    signature: PQExpBuffer createDummyViewAsClause(Archive *fout, const TableInfo
      *tbinfo)
  - BBCount: 109
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17050,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17051,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17052,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17064,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17066,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17066,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17067,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17067,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17070,1
    - Dst: binary_upgrade_set_type_oids_by_rel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17074,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17088,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17091,1
    - Dst: createDummyViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17094,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17097,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17099,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17100,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17101,1
    - Dst: createViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17103,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17105,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17106,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17109,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17110,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17114,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17121,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17124,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17128,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17130,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17132,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17133,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17136,1
    - Dst: PQgetlength
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17140,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17143,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17146,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17146,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17148,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17149,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17151,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17168,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17174,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17177,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17178,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17178,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17179,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17180,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17185,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17193,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17206,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17207,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17208,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17209,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17209,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17210,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17210,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17211,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17212,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17229,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17236,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17247,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17248,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17249,1
    - Dst: shouldPrintColumn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17264,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17291,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17298,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17300,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17301,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17305,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17305,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17315,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17325,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17327,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17334,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17337,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17340,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17347,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17349,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17350,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17353,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17357,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17361,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17363,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17364,1
    - Dst: shouldPrintColumn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17378,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17385,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17387,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17388,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17392,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17393,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17395,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17397,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17400,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17421,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17423,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17425,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17426,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17427,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17433,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17434,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17440,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17450,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17456,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17457,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17457,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17459,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17463,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17466,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17466,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17469,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17470,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17474,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17475,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17478,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17480,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17483,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17484,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17487,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17492,1
    - Dst: createViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17502,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17503,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17505,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17508,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17512,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17527,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17528,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17530,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17531,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17532,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17533,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17534,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17535,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17575,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17583,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17592,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17593,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17594,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17595,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17599,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17601,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17602,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17607,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17609,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17610,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17613,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17628,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17629,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17632,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17633,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17638,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17639,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17643,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17653,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17672,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17675,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17676,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17681,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17682,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17688,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17691,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17692,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17697,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17698,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17703,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17705,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17708,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17722,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17732,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17733,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17735,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17740,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17743,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17744,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17745,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17749,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17750,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17754,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17755,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17760,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17765,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17767,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17771,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17773,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17774,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17776,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17792,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17793,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17797,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17798,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17806,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17807,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17825,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17826,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17829,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17830,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17849,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17851,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17882,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17884,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17909,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17911,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17919,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17921,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17929,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17934,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17938,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17939,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17940,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17957,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17962,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17968,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17971,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17974,1
    - Dst: RELKIND_HAS_TABLESPACE
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17990,1
    - Dst: RELKIND_HAS_TABLE_AM
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17993,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17997,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17998,1
    - Dst: dumpTableComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18013,1
    - Dst: dumpTableSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18017,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18036,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18037,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18041,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18042,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18045,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18046,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18047,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18048,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18050,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18051,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18053,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18053,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18054,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18065,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18066,1
    - Dst: dumpTableConstraintComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18078,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18081,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18082,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18083,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18084,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18085,1
    CyclomaticComplexity: 171
    EdgeCount: 171
    ICount: 430
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18086
      start: 17046
    functionDepth: 4
    functionLinenumber: 17046
    functionLinenumberEnd: 18086
    functionName: dumpTableSchema
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendBinaryPQExpBuffer
    - append_depends_on_extension
    - PQclear
    - dumpTableComment
    - ArchiveEntry
    - pg_log_warning
    - PQgetvalue
    - createDumpId
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - destroyPQExpBuffer
    - binary_upgrade_set_type_oids_by_rel
    - createPQExpBuffer
    - findCollationByOid
    - RELKIND_HAS_TABLE_AM
    - Assert
    - fmtQualifiedDumpable
    - getFormattedTypeName
    - ExecuteSqlQueryForSingleRow
    - shouldPrintColumn
    - PQfnumber
    - OidIsValid
    - PQntuples
    - RELKIND_HAS_TABLESPACE
    - createViewAsClause
    - dumpTableSecLabel
    - resetPQExpBuffer
    - binary_upgrade_extension_member
    - appendPQExpBufferChar
    - pg_free
    - pg_strdup
    - nonemptyReloptions
    - dumpTableConstraintComment
    - appendStringLiteralAH
    - binary_upgrade_set_pg_class_oids
    - pg_fatal
    - PQgetlength
    - createDummyViewAsClause
    - appendReloptionsArrayAH
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpTableSchema(Archive *fout, const TableInfo *tbinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18115,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18120,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18123,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18128,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18133,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18137,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18138,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18141,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18143,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18144,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18146,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18156,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18157,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18164,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - fout
    - attachinfo
    argTypes:
    - Archive*
    - TableAttachInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18166
      start: 18103
    functionDepth: 1
    functionLinenumber: 18103
    functionLinenumberEnd: 18166
    functionName: dumpTableAttach
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - printfPQExpBuffer
    - ArchiveEntry
    - ExecuteSqlStatement
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - PQgetvalue
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpTableAttach(Archive *fout, const TableAttachInfo *attachinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18191,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18192,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18194,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18194,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18198,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18200,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18203,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18205,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18207,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18210,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18211,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18219,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18220,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18221,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - fout
    - adinfo
    argTypes:
    - Archive*
    - AttrDefInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18223
      start: 18171
    functionDepth: 1
    functionLinenumber: 18171
    functionLinenumberEnd: 18223
    functionName: dumpAttrDef
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pfree
    - psprintf
    - ArchiveEntry
    - fmtQualifiedDumpable
    - destroyPQExpBuffer
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpAttrDef(Archive *fout, const AttrDefInfo *adinfo)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - attrnum
    - tblInfo
    argTypes:
    - int
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18255
      start: 18232
    functionDepth: 0
    functionLinenumber: 18232
    functionLinenumberEnd: 18255
    functionName: getAttrName
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: char
    signature: 'char *

      getAttrName(int attrnum, const TableInfo *tblInfo)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18276,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18277,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18279,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18279,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18280,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18280,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18299,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18303,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18314,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18315,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18317,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18325,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18325,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18329,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18330,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18331,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18332,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18334,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18338,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18344,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18346,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18352,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18359,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18360,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18362,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18376,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18379,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18380,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18389,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18390,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18395,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18402,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18403,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18404,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18405,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 2
    argNames:
    - fout
    - indxinfo
    argTypes:
    - Archive*
    - IndxInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18406
      start: 18261
    functionDepth: 3
    functionLinenumber: 18261
    functionLinenumberEnd: 18406
    functionName: dumpIndex
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - append_depends_on_extension
    - parsePGArray
    - binary_upgrade_set_pg_class_oids
    - ArchiveEntry
    - pg_fatal
    - fmtQualifiedDumpable
    - strlen
    - free
    - dumpComment
    - destroyPQExpBuffer
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpIndex(Archive *fout, const IndxInfo *indxinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18421,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18423,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18424,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18425,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18426,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18439,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18440,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - fout
    - attachinfo
    argTypes:
    - Archive*
    - IndexAttachInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18449
      start: 18412
    functionDepth: 1
    functionLinenumber: 18412
    functionLinenumberEnd: 18449
    functionName: dumpIndexAttach
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - ArchiveEntry
    - fmtQualifiedDumpable
    - destroyPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpIndexAttach(Archive *fout, const IndexAttachInfo *attachinfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18470,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18471,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18472,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18474,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18474,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18476,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18480,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18482,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18485,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18493,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18494,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18495,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18499,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18500,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18503,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18505,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18515,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18521,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18522,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18523,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18524,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18525,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - fout
    - statsextinfo
    argTypes:
    - Archive*
    - StatsExtInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18526
      start: 18455
    functionDepth: 3
    functionLinenumber: 18455
    functionLinenumberEnd: 18526
    functionName: dumpStatisticsExt
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - ArchiveEntry
    - fmtQualifiedDumpable
    - ExecuteSqlQueryForSingleRow
    - dumpComment
    - destroyPQExpBuffer
    - PQgetvalue
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpStatisticsExt(Archive *fout, const StatsExtInfo *statsextinfo)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18546,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18562,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18573,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18575,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18604,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18606,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18632,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18636,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18648,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18668,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18674,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18680,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18682,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18685,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18689,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18694,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18706,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18708,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18712,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18715,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18717,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18718,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18719,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18720,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18721,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18723,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18725,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18727,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18731,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18733,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18734,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18735,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18736,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18737,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18738,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18739,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18745,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18746,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18748,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18750,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18754,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18755,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18756,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18757,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18760,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18761,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18762,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18763,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18764,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18765,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18767,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18768,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18769,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18771,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18772,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18773,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18775,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18776,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18777,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18779,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18780,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18781,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18783,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18784,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18785,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18787,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18788,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18789,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18791,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18794,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18794,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18795,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18803,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18805,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 74
    argCount: 2
    argNames:
    - fout
    - statsextinfo
    argTypes:
    - Archive*
    - StatsExtInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18806
      start: 18532
    functionDepth: 2
    functionLinenumber: 18532
    functionLinenumberEnd: 18806
    functionName: dumpStatisticsExtStats
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - PQclear
    - ArchiveEntry
    - pg_fatal
    - ExecuteSqlStatement
    - ExecuteSqlQuery
    - appendNamedArgument
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - createDumpId
    - PQgetvalue
    - PQfnumber
    - PQgetisnull
    - PQntuples
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpStatisticsExtStats(Archive *fout, const StatsExtInfo *statsextinfo)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18826,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18827,1
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18840,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18843,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18847,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18850,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18851,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18852,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18853,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18858,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18862,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18872,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18873,1
    - Dst: getAttrName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18881,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18883,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18885,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18888,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18891,1
    - Dst: getAttrName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18900,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18902,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18904,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18907,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18909,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18911,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18912,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18913,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18918,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18920,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18923,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18935,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18936,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18938,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18939,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18945,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18946,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18948,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18949,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18953,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18955,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18957,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18958,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18959,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18960,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18962,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18965,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18966,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18991,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18992,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18993,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18994,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18997,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18998,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18999,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19000,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19002,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19005,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19006,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19029,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19030,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19031,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19032,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19035,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19036,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19037,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19038,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19040,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19043,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19044,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19058,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19070,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19071,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19072,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19073,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19076,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19077,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19078,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19079,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19081,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19084,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19085,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19095,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19096,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19096,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19098,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19099,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19101,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19105,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19106,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19112,1
    - Dst: dumpTableConstraintComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19119,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19121,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19122,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19123,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 117
    argCount: 2
    argNames:
    - fout
    - coninfo
    argTypes:
    - Archive*
    - ConstraintInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19124
      start: 18812
    functionDepth: 3
    functionLinenumber: 18812
    functionLinenumberEnd: 19124
    functionName: dumpConstraint
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - append_depends_on_extension
    - ArchiveEntry
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - getAttrName
    - Assert
    - pfree
    - fmtQualifiedDumpable
    - psprintf
    - dumpComment
    - appendPQExpBufferChar
    - pg_free
    - pg_strdup
    - findObjectByDumpId
    - nonemptyReloptions
    - dumpTableConstraintComment
    - binary_upgrade_set_pg_class_oids
    - pg_fatal
    - appendReloptionsArrayAH
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpConstraint(Archive *fout, const ConstraintInfo *coninfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19137,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19140,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19140,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19142,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19143,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19146,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19152,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fout
    - coninfo
    argTypes:
    - Archive*
    - ConstraintInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19154
      start: 19133
    functionDepth: 3
    functionLinenumber: 19133
    functionLinenumberEnd: 19154
    functionName: dumpTableConstraintComment
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - dumpComment
    - destroyPQExpBuffer
    - pg_free
    - fmtId
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpTableConstraintComment(Archive *fout, const ConstraintInfo
      *coninfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19159,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19161,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19167
      start: 19156
    functionDepth: 1
    functionLinenumber: 19156
    functionLinenumberEnd: 19167
    functionName: parse_sequence_type
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - lengthof
    - strcmp
    - pg_fatal
    linkageType: ''
    returnType: SeqType
    signature: SeqType parse_sequence_type(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19179
      start: 19172
    functionDepth: 1
    functionLinenumber: 19172
    functionLinenumberEnd: 19179
    functionName: SequenceItemCmp
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int SequenceItemCmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19216,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19218,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19219,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19223,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19223,1
    - Dst: parse_sequence_type
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19224,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19224,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19225,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19225,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19226,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19226,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19227,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19227,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19228,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19228,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19229,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19229,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19230,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19230,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19231,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19231,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19232,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19232,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19233,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19233,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19236,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19237
      start: 19187
    functionDepth: 2
    functionLinenumber: 19187
    functionLinenumberEnd: 19237
    functionName: collectSequences
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - strcmp
    - pg_malloc_array
    - strtoi64
    - PQgetvalue
    - PQgetisnull
    - PQntuples
    - ExecuteSqlQuery
    - parse_sequence_type
    linkageType: ''
    returnType: void
    signature: void collectSequences(Archive *fout)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19251,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19252,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19257,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19257,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19263,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19266,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19288,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19297,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19298,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19301,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19305,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19316,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19318,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19320,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19321,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19323,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19325,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19327,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19328,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19329,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19336,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19342,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19346,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19349,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19352,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19354,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19357,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19359,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19362,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19364,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19366,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19371,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19373,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19378,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19383,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19384,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19404,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19406,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19409,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19414,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19415,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19416,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19417,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19418,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19419,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19420,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19423,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19423,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19424,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19437,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19442,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19446,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19447,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19448,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 80
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19449
      start: 19243
    functionDepth: 3
    functionLinenumber: 19243
    functionLinenumberEnd: 19449
    functionName: dumpSequence
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - ArchiveEntry
    - dumpSecLabel
    - createDumpId
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - findTableByOid
    - Assert
    - fmtQualifiedDumpable
    - OidIsValid
    - bsearch
    - resetPQExpBuffer
    - binary_upgrade_extension_member
    - dumpComment
    - pg_free
    - pg_strdup
    - binary_upgrade_set_pg_class_oids
    - pg_fatal
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpSequence(Archive *fout, const TableInfo *tbinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19467,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19481,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19483,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19485,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19487,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19488,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19488,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19490,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19491,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19493,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19493,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19494,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19494,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19496,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19503,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19504,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19507,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19511,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19520,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19521,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19522,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19522,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19523,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19527,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19527,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19528,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19537,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - fout
    - tdinfo
    argTypes:
    - Archive*
    - TableDataInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19538
      start: 19455
    functionDepth: 1
    functionLinenumber: 19455
    functionLinenumberEnd: 19538
    functionName: dumpSequenceData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - ArchiveEntry
    - PQgetvalue
    - createDumpId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - createPQExpBuffer
    - destroyPQExpBuffer
    - Assert
    - fmtQualifiedDumpable
    - PQntuples
    - bsearch
    - resetPQExpBuffer
    - appendStringLiteralAH
    - pg_fatal
    - ngettext
    - strtoi64
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpSequenceData(Archive *fout, const TableDataInfo *tdinfo)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19560,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19561,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19562,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19563,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19565,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19565,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19567,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19567,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19568,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19568,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19570,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19571,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19574,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19580,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19588,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19589,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19590,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19592,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19597,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19601,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19604,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19607,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19610,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19611,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19615,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19617,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19622,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19625,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19628,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19631,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19634,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19635,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19638,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19639,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19641,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19644,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19645,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19654,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19658,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19659,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19660,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19661,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19662,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19663,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 67
    argCount: 2
    argNames:
    - fout
    - tginfo
    argTypes:
    - Archive*
    - TriggerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19664
      start: 19544
    functionDepth: 3
    functionLinenumber: 19544
    functionLinenumberEnd: 19664
    functionName: dumpTrigger
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - append_depends_on_extension
    - Assert
    - pfree
    - psprintf
    - ArchiveEntry
    - appendPQExpBufferStr
    - fmtQualifiedDumpable
    - resetPQExpBuffer
    - dumpComment
    - destroyPQExpBuffer
    - pg_free
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpTrigger(Archive *fout, const TriggerInfo *tginfo)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19682,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19683,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19685,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19685,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19687,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19688,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19689,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19690,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19690,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19692,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19694,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19695,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19696,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19699,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19700,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19701,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19705,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19710,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19713,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19716,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19719,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19722,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19725,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19729,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19733,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19734,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19742,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19747,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19751,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19752,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19753,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 2
    argNames:
    - fout
    - evtinfo
    argTypes:
    - Archive*
    - EventTriggerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19754
      start: 19670
    functionDepth: 3
    functionLinenumber: 19670
    functionLinenumberEnd: 19754
    functionName: dumpEventTrigger
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pg_free
    - ArchiveEntry
    - appendPQExpBuffer
    - binary_upgrade_extension_member
    - dumpComment
    - dumpSecLabel
    - appendPQExpBufferChar
    - destroyPQExpBuffer
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void dumpEventTrigger(Archive *fout, const EventTriggerInfo *evtinfo)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19791,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19792,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19793,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19794,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19796,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19796,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19806,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19807,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19808,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19810,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19811,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19812,1
    - Dst: createViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19814,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19815,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19816,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19818,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19820,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19825,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19829,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19831,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19832,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19835,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19835,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19837,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19846,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19846,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19850,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19851,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19854,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19855,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19858,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19859,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19873,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19874,1
    - Dst: createDummyViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19875,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19876,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19877,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19881,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19882,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19883,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19884,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19887,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19888,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19890,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19893,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19894,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19904,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19909,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19910,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19911,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19912,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19913,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19914,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 67
    argCount: 2
    argNames:
    - fout
    - rinfo
    argTypes:
    - Archive*
    - RuleInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19915
      start: 19760
    functionDepth: 3
    functionLinenumber: 19760
    functionLinenumberEnd: 19915
    functionName: dumpRule
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQclear
    - ArchiveEntry
    - PQgetvalue
    - fmtId
    - ARCHIVE_OPTS
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - destroyPQExpBuffer
    - createPQExpBuffer
    - printfPQExpBuffer
    - pfree
    - fmtQualifiedDumpable
    - PQntuples
    - psprintf
    - createViewAsClause
    - dumpComment
    - appendPQExpBufferChar
    - pg_free
    - pg_strdup
    - nonemptyReloptions
    - pg_fatal
    - createDummyViewAsClause
    - appendReloptionsArrayAH
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpRule(Archive *fout, const RuleInfo *rinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19944,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19947,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19954,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19956,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19958,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19959,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19960,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19974,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19974,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19975,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19975,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19976,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19976,1
    - Dst: findExtensionByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19980,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19985,1
    - Dst: recordExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19989,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19992,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19994,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - fout
    - extinfo
    - numExtensions
    argTypes:
    - Archive*
    - ExtensionInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19995
      start: 19927
    functionDepth: 2
    functionLinenumber: 19927
    functionLinenumberEnd: 19995
    functionName: getExtensionMembership
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - atooid
    - PQclear
    - findExtensionByOid
    - appendPQExpBufferStr
    - pg_log_warning
    - recordExtensionMembership
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void getExtensionMembership(Archive *fout, ExtensionInfo extinfo[],\n\t\t\t\t\t
      \  int numExtensions)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20062,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20071,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20075,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20075,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20079,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20080,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20081,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20082,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20084,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20089,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20093,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20105,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20117,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20122,1
    - Dst: makeTableDataInfo
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20128,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20131,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20132,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20138,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20140,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20152,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20154,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20162,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20163,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20165,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20166,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20176,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20176,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20177,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20177,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20178,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20179,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20191,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20194,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20195,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 60
    argCount: 3
    argNames:
    - fout
    - extinfo
    - numExtensions
    argTypes:
    - Archive*
    - ExtensionInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20196
      start: 20020
    functionDepth: 3
    functionLinenumber: 20020
    functionLinenumberEnd: 20196
    functionName: processExtensionTables
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - addObjectDependency
    - atooid
    - findTableByOid
    - PQclear
    - printfPQExpBuffer
    - simple_oid_list_member
    - pg_fatal
    - strlen
    - free
    - PQntuples
    - PQgetvalue
    - PQfnumber
    - destroyPQExpBuffer
    - makeTableDataInfo
    - createPQExpBuffer
    - ExecuteSqlQuery
    - parsePGArray
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void processExtensionTables(Archive *fout, ExtensionInfo extinfo[],\n\t\t\t\t\t
      \  int numExtensions)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20216,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20218,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20228,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20243,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20251,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20263,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20270,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20272,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20274,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20276,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20277,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20278,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20279,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20280,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20295,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20295,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20296,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20296,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20297,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20297,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20298,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20298,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20299,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20304,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20313,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20319,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20324,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20349,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20352,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20355,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20357,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20358
      start: 20201
    functionDepth: 2
    functionLinenumber: 20201
    functionLinenumberEnd: 20358
    functionName: getDependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findObjectByCatalogId
    - addObjectDependency
    - atooid
    - PQclear
    - appendPQExpBufferStr
    - pg_log_warning
    - destroyPQExpBuffer
    - PQgetvalue
    - PQfnumber
    - pg_log_info
    - PQntuples
    - ExecuteSqlQuery
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getDependencies(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20370,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20374,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20375,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20379,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20383
      start: 20365
    functionDepth: 2
    functionLinenumber: 20365
    functionLinenumberEnd: 20383
    functionName: createBoundaryObjects
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - AssignDumpId
    - pg_malloc_array
    - pg_strdup
    linkageType: ''
    returnType: DumpableObject
    signature: 'DumpableObject *

      createBoundaryObjects(void)'
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20433,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20440,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20441,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20457,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20462,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20468,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20475,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20481,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20482,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20485,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 75
    argCount: 3
    argNames:
    - dobjs
    - numObjs
    - boundaryObjs
    argTypes:
    - DumpableObject**
    - int
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20489
      start: 20389
    functionDepth: 2
    functionLinenumber: 20389
    functionLinenumberEnd: 20489
    functionName: addBoundaryDependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - addObjectDependency
    linkageType: ''
    returnType: void
    signature: "void addBoundaryDependencies(DumpableObject **dobjs, int numObjs,\n\t\t\t\t\t\tDumpableObject
      *boundaryObjs)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20536,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20544,1
    - Dst: findDumpableDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20547,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20552,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20557,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20559
      start: 20515
    functionDepth: 1
    functionLinenumber: 20515
    functionLinenumberEnd: 20559
    functionName: BuildArchiveDependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findObjectByDumpId
    - pg_malloc_array
    - pg_free
    - pg_realloc_array
    - findDumpableDependencies
    linkageType: ''
    returnType: void
    signature: void BuildArchiveDependencies(Archive *fout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TocIDRequired
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20580,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20586,1
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20598,1
    - Dst: findDumpableDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20601,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 5
    argNames:
    - AH
    - dobj
    - dependencies
    - nDeps
    - allocDeps
    argTypes:
    - ArchiveHandle*
    - DumpableObject*
    - DumpId**
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20605
      start: 20562
    functionDepth: 1
    functionLinenumber: 20562
    functionLinenumberEnd: 20605
    functionName: findDumpableDependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - findObjectByDumpId
    - pg_realloc_array
    - findDumpableDependencies
    - TocIDRequired
    linkageType: ''
    returnType: void
    signature: "void findDumpableDependencies(ArchiveHandle *AH, const DumpableObject
      *dobj,\n\t\t\t\t\t\t DumpId **dependencies, int *nDeps, int *allocDeps)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20634,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20638,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20639,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20642,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20645,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20645,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20647,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20648,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - fout
    - oid
    - opts
    argTypes:
    - Archive*
    - Oid
    - OidOptions
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20660
      start: 20617
    functionDepth: 2
    functionLinenumber: 20617
    functionLinenumberEnd: 20660
    functionName: getFormattedTypeName
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 7
    functionsReached:
    - PQclear
    - ExecuteSqlQueryForSingleRow
    - findTypeByOid
    - destroyPQExpBuffer
    - PQgetvalue
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      getFormattedTypeName(Archive *fout, Oid oid, OidOptions opts)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20678,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20687,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20688,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20688,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20695,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - ti
    - buffer
    argTypes:
    - TableInfo*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20697
      start: 20668
    functionDepth: 1
    functionLinenumber: 20668
    functionLinenumberEnd: 20697
    functionName: fmtCopyColumnList
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - appendPQExpBufferChar
    - fmtId
    - appendPQExpBufferStr
    linkageType: ''
    returnType: char
    signature: 'char *

      fmtCopyColumnList(const TableInfo *ti, PQExpBuffer buffer)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - reloptions
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20707
      start: 20702
    functionDepth: 0
    functionLinenumber: 20702
    functionLinenumberEnd: 20707
    functionName: nonemptyReloptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 3
    functionsReached:
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool nonemptyReloptions(const char *reloptions)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendReloptionsArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20720,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - buffer
    - reloptions
    - prefix
    - fout
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20724
      start: 20714
    functionDepth: 1
    functionLinenumber: 20714
    functionLinenumberEnd: 20724
    functionName: appendReloptionsArrayAH
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 3
    functionsReached:
    - appendReloptionsArray
    - pg_log_warning
    linkageType: ''
    returnType: void
    signature: "void appendReloptionsArrayAH(PQExpBuffer buffer, const char *reloptions,\n\t\t\t\t\t\tconst
      char *prefix, Archive *fout)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: filter_init
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20741,1
    - Dst: filter_read_item
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20743,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20757,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20757,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20759,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20760,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20764,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20767,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20770,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20774,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20778,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20795,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20795,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20797,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20798,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20802,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20805,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20809,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20813,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20816,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20819,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20826,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20827,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20831,1
    - Dst: filter_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20834,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 75
    argCount: 2
    argNames:
    - filename
    - dopt
    argTypes:
    - char*
    - DumpOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20835
      start: 20733
    functionDepth: 1
    functionLinenumber: 20733
    functionLinenumberEnd: 20835
    functionName: read_dump_filters
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - filter_init
    - _
    - Assert
    - filter_read_item
    - simple_string_list_append
    - free
    - pg_log_filter_error
    - filter_object_type_name
    - exit_nicely
    - filter_free
    linkageType: ''
    returnType: void
    signature: void read_dump_filters(const char *filename, DumpOptions *dopt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:49,1
    - Dst: CompressorState*::readF
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:51,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:53,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 57
    functionName: ReadDataFromArchiveNone
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - pg_free
    - pg_malloc
    - CompressorState*::readF
    - ahwrite
    linkageType: ''
    returnType: void
    signature: void ReadDataFromArchiveNone(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:74,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - AH
    - cs
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 86
    functionName: WriteDataToArchiveNone
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - CompressorState*::writeF
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void WriteDataToArchiveNone(ArchiveHandle *AH, CompressorState *cs,\n\t\t\t\t\t
      \  const void *data, size_t dLen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:97,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:99,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 103
    functionName: EndCompressorNone
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - pg_free
    - CompressorState*::writeF
    linkageType: ''
    returnType: void
    signature: void EndCompressorNone(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:127,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 134
    functionName: InitCompressorNone
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 1
    functionsReached:
    - pg_malloc_object
    - pg_malloc
    linkageType: ''
    returnType: void
    signature: "void InitCompressorNone(CompressorState *cs,\n\t\t\t\t   const pg_compress_specification
      compression_spec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:152,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:153,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 157
    functionName: read_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - ferror
    - fread
    - pg_fatal
    linkageType: ''
    returnType: size_t
    signature: size_t read_none(void *ptr, size_t size, CompressFileHandle *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:165,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 171
    functionName: write_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - fwrite
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void write_none(const void *ptr, size_t size, CompressFileHandle *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: get_error_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - strerror
    linkageType: ''
    returnType: char
    signature: 'char *

      get_error_none(CompressFileHandle *CFH)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - char*
    - int
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 183
    functionName: gets_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - fgets
    linkageType: ''
    returnType: char
    signature: 'char *

      gets_none(char *ptr, int size, CompressFileHandle *CFH)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fgetc
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:191,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:194,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:195,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 201
    functionName: getc_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - fgetc
    - feof
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int getc_none(CompressFileHandle *CFH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:214,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 220
    functionName: close_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - fclose
    linkageType: ''
    returnType: bool
    signature: bool close_none(CompressFileHandle *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 226
    functionName: eof_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - feof
    linkageType: ''
    returnType: bool
    signature: bool eof_none(CompressFileHandle *CFH)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:231,1
    - Dst: dup
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:235,1
    - Dst: fdopen
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:239,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:242,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:248,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - path
    - fd
    - mode
    - CFH
    argTypes:
    - char*
    - int
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 254
    functionName: open_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - dup
    - Assert
    - fopen
    - fdopen
    - close
    linkageType: ''
    returnType: bool
    signature: bool open_none(const char *path, int fd, const char *mode, CompressFileHandle
      *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:259,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - path
    - mode
    - CFH
    argTypes:
    - char*
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 266
    functionName: open_write_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - Assert
    - fopen
    linkageType: ''
    returnType: bool
    signature: bool open_write_none(const char *path, const char *mode, CompressFileHandle
      *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 287
    functionName: InitCompressFileHandleNone
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void InitCompressFileHandleNone(CompressFileHandle *CFH,\n\t\t\t\t\t\t
      \  const pg_compress_specification compression_spec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:38,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:39,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:41,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:43,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:52,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:53,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:55,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:62,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:64,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:64,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:65,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 66
    functionName: _check_database_version
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - pg_log_error_detail
    - PQparameterStatus
    - pg_fatal
    - ExecuteSqlQueryForSingleRow
    - PQgetvalue
    - PQserverVersion
    - pg_log_error
    - exit
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void _check_database_version(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:83,1
    - Dst: ConnectDatabaseAhx
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:92,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - dbname
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 95
    functionName: ReconnectToServer
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - ConnectDatabaseAhx
    - PQfinish
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void ReconnectToServer(ArchiveHandle *AH, const char *dbname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:118,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:126,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:128,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:134,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:134,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:138,1
    - Dst: PQconnectionUsedPassword
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:144,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:146,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:147,1
    - Dst: PQpass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:147,1
    - Dst: _check_database_version
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:151,1
    - Dst: PQsetNoticeProcessor
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:153,1
    - Dst: set_archive_cancel_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:156,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - AHX
    - cparams
    - isReconnect
    argTypes:
    - Archive*
    - ConnParams*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 157
    functionName: ConnectDatabaseAhx
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 2
    functionsReached:
    - ConnectDatabase
    - PQsetNoticeProcessor
    - PQclear
    - simple_prompt
    - PQconnectionUsedPassword
    - pg_fatal
    - PQpass
    - ExecuteSqlQueryForSingleRow
    - free
    - set_archive_cancel_info
    - pg_free
    - _check_database_version
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void ConnectDatabaseAhx(Archive *AHX,\n\t\t\t\t   const ConnParams
      *cparams,\n\t\t\t\t   bool isReconnect)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:179,1
    - Dst: PQcancel
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:180,1
    - Dst: set_archive_cancel_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:185,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 190
    functionName: DisconnectDatabase
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 2
    functionsReached:
    - PQtransactionStatus
    - set_archive_cancel_info
    - PQcancel
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void DisconnectDatabase(Archive *AHX)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 198
    functionName: GetConnection
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      GetConnection(Archive *AHX)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - message
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 204
    functionName: notice_processor
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - pg_log_info
    linkageType: ''
    returnType: void
    signature: void notice_processor(void *arg, const char *message)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_cancel_in_progress
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:210,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:212,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:213,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:214,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - query
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 218
    functionName: die_on_query_failure
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - is_cancel_in_progress
    - pg_log_error_detail
    - pg_log_error
    - PQerrorMessage
    - exit_nicely
    linkageType: ''
    returnType: void
    signature: void die_on_query_failure(ArchiveHandle *AH, const char *query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:226,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:227,1
    - Dst: die_on_query_failure
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:228,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AHX
    - query
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 230
    functionName: ExecuteSqlStatement
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 17
    functionsReached:
    - die_on_query_failure
    - PQresultStatus
    - PQclear
    - PQexec
    linkageType: ''
    returnType: void
    signature: void ExecuteSqlStatement(Archive *AHX, const char *query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:238,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:239,1
    - Dst: die_on_query_failure
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - AHX
    - query
    - status
    argTypes:
    - Archive*
    - char*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 242
    functionName: ExecuteSqlQuery
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 72
    functionsReached:
    - die_on_query_failure
    - PQresultStatus
    - PQexec
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      ExecuteSqlQuery(Archive *AHX, const char *query, ExecStatusType status)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:253,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:256,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:258,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fout
    - query
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 247
    functionDepth: 3
    functionLinenumber: 247
    functionLinenumberEnd: 264
    functionName: ExecuteSqlQueryForSingleRow
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 28
    functionsReached:
    - PQntuples
    - ngettext
    - ExecuteSqlQuery
    - pg_fatal
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      ExecuteSqlQueryForSingleRow(Archive *fout, const char *query)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:277,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:279,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:281,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:294,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:295,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - AH
    - qry
    - desc
    argTypes:
    - ArchiveHandle*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 300
    functionName: ExecuteSqlCommand
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - warn_or_exit_horribly
    - PQclear
    - PQexec
    - PQresultStatus
    - PQerrorMessage
    - fprintf
    linkageType: ''
    returnType: void
    signature: void ExecuteSqlCommand(ArchiveHandle *AH, const char *qry, const char
      *desc)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:330,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:338,1
    - Dst: ExecuteSqlCommand
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:349,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:351,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 33
    argCount: 3
    argNames:
    - AH
    - buf
    - bufLen
    argTypes:
    - ArchiveHandle*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 381
    functionName: ExecuteSimpleCommands
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - resetPQExpBuffer
    - ExecuteSqlCommand
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void ExecuteSimpleCommands(ArchiveHandle *AH, const char *buf, size_t
      bufLen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:402,1
    - Dst: is_cancel_in_progress
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:405,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:406,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:407,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:408,1
    - Dst: ExecuteSimpleCommands
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:417,1
    - Dst: ExecuteSqlCommand
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:429,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:432,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:434,1
    - Dst: ExecuteSqlCommand
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:436,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:437,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - AHX
    - buf
    - bufLen
    argTypes:
    - Archive*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 442
    functionName: ExecuteSqlCommandBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - is_cancel_in_progress
    - memcpy
    - pg_malloc
    - ExecuteSqlCommand
    - pg_free
    - pg_log_error
    - PQerrorMessage
    - PQputCopyData
    - exit_nicely
    - ExecuteSimpleCommands
    linkageType: ''
    returnType: int
    signature: int ExecuteSqlCommandBuf(Archive *AHX, const char *buf, size_t bufLen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:456,1
    - Dst: is_cancel_in_progress
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:459,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:460,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:461,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:462,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:466,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:467,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:468,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:469,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:470,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:473,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:474,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - AHX
    - tocEntryTag
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 479
    functionName: EndDBCopyMode
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - is_cancel_in_progress
    - warn_or_exit_horribly
    - PQclear
    - pg_log_warning
    - PQresultStatus
    - PQputCopyEnd
    - pg_log_error
    - PQerrorMessage
    - PQgetResult
    - exit_nicely
    linkageType: ''
    returnType: void
    signature: void EndDBCopyMode(Archive *AHX, const char *tocEntryTag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlCommand
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 487
    functionName: StartTransaction
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - ExecuteSqlCommand
    linkageType: ''
    returnType: void
    signature: void StartTransaction(Archive *AHX)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlCommand
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 495
    functionName: CommitTransaction
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - ExecuteSqlCommand
    linkageType: ''
    returnType: void
    signature: void CommitTransaction(Archive *AHX)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:509,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:515,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:518,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:527,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:528,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:531,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:538,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:539,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - AH
    - te
    - cmdBegin
    - cmdEnd
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 540
    functionName: IssueCommandPerBlob
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - CommitTransaction
    - strchr
    - ahprintf
    - pg_free
    - StartTransaction
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void IssueCommandPerBlob(ArchiveHandle *AH, TocEntry *te,\n\t\t\t\t\tconst
      char *cmdBegin, const char *cmdEnd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:554,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:563,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:563,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:566,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:591,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:595,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:595,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:598,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:601,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:609,1
    - Dst: IssueCommandPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:611,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:613,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:622,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 551
    functionDepth: 2
    functionLinenumber: 551
    functionLinenumberEnd: 623
    functionName: IssueACLPerBlob
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - strcmp
    - isdigit
    - Assert
    - IssueCommandPerBlob
    - isspace
    - getTocEntryByDumpId
    - pg_fatal
    - strncmp
    - pg_free
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void IssueACLPerBlob(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - oid
    argTypes:
    - ArchiveHandle*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 633
    functionName: DropLOIfExists
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void DropLOIfExists(ArchiveHandle *AH, Oid oid)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:56,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:69,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:70,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:71,1
    - Dst: PQconninfoParse
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:81,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:83,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:88,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:92,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:93,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:98,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:108,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:109,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:154,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:157,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:159,1
    - Dst: PQconnectionNeedsPassword
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:160,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:164,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:165,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:171,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:174,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:174,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:177,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:179,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:180,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:181,1
    - Dst: constructConnStr
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:192,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:194,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:195,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:196,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:199,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:201,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:203,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:205,1
    - Dst: "server_version_temp < 100000 ||\n\t\t\t(server_version_temp / 100) >"
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:219,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:222,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:223,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:225,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:228,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:228,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 102
    argCount: 12
    argNames:
    - dbname
    - connection_string
    - pghost
    - pgport
    - pguser
    - prompt_password
    - fail_on_error
    - progname
    - connstr
    - server_version
    - password
    - override_dbname
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - trivalue
    - bool
    - char*
    - char**
    - int*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 231
    functionName: ConnectDatabase
    functionSourceFile: /src/postgres/src/bin/pg_dump/connectdb.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - "server_version_temp < 100000 ||\n\t\t\t(server_version_temp / 100) >"
    - pg_log_error
    - constructConnStr
    - executeQuery
    - PQconninfoFree
    - pg_log_error_detail
    - PQfinish
    - PQconnectdbParams
    - PQstatus
    - PQconninfoParse
    - pg_malloc0_array
    - PQserverVersion
    - pg_free
    - PQerrorMessage
    - exit_nicely
    - simple_prompt
    - PQparameterStatus
    - pg_fatal
    - PQconnectionNeedsPassword
    linkageType: ''
    returnType: PGconn
    signature: "PGconn *\nConnectDatabase(const char *dbname, const char *connection_string,\n\t\t\t\tconst
      char *pghost, const char *pgport, const char *pguser,\n\t\t\t\ttrivalue prompt_password,
      bool fail_on_error, const char *progname,\n\t\t\t\tconst char **connstr, int
      *server_version, char *password,\n\t\t\t\tchar *override_dbname)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:247,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:255,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:256,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:257,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:261,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:263,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:264,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:267,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:268,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - keywords
    - values
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 270
    functionName: constructConnStr
    functionSourceFile: /src/postgres/src/bin/pg_dump/connectdb.c
    functionUses: 1
    functionsReached:
    - strcmp
    - appendConnStrVal
    - destroyPQExpBuffer
    - appendPQExpBufferChar
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      constructConnStr(const char **keywords, const char **values)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:282,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:284,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:286,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:288,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:288,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:289,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:290,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - query
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 295
    functionName: executeQuery
    functionSourceFile: /src/postgres/src/bin/pg_dump/connectdb.c
    functionUses: 11
    functionsReached:
    - pg_log_error
    - PQexec
    - pg_log_error_detail
    - PQfinish
    - PQresultStatus
    - pg_log_info
    - PQerrorMessage
    - exit_nicely
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      executeQuery(PGconn *conn, const char *query)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 71
    functionName: InitArchiveFmt_Null
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void InitArchiveFmt_Null(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - AH
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: _WriteData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached:
    - ahwrite
    linkageType: ''
    returnType: void
    signature: void _WriteData(ArchiveHandle *AH, const void *data, size_t dLen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:96,1
    - Dst: appendByteaLiteralAHX
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:98,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:103,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - AH
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 107
    functionName: _WriteLOData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached:
    - ahprintf
    - destroyPQExpBuffer
    - createPQExpBuffer
    - appendByteaLiteralAHX
    linkageType: ''
    returnType: void
    signature: void _WriteLOData(ArchiveHandle *AH, const void *data, size_t dLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: _EndData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached:
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void _EndData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: _StartLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached:
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void _StartLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:143,1
    - Dst: DropLOIfExists
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:147,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:150,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 157
    functionName: _StartLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached:
    - DropLOIfExists
    - ahprintf
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _StartLO(ArchiveHandle *AH, TocEntry *te, Oid oid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 170
    functionName: _EndLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached:
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void _EndLO(ArchiveHandle *AH, TocEntry *te, Oid oid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: _EndLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached:
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void _EndLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:195,1
    - Dst: _StartLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:196,1
    - Dst: TocEntry*::dataDumper
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:198,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:200,1
    - Dst: _EndLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_null.c:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 205
    functionName: _PrintTocData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached:
    - TocEntry*::dataDumper
    - _StartLOs
    - _EndLOs
    - strcmp
    linkageType: ''
    returnType: void
    signature: void _PrintTocData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - i
    argTypes:
    - ArchiveHandle*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: _WriteByte
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _WriteByte(ArchiveHandle *AH, const int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: _WriteBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _WriteBuf(ArchiveHandle *AH, const void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 224
    functionName: _CloseArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_null.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _CloseArchive(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: set_cancel_in_progress
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_cancel_in_progress(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: is_cancel_in_progress
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_cancel_in_progress(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:86,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:88,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:90,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:94,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:95,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:96,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - arg
    - dumpSections
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 98
    functionName: set_dump_section
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.c
    functionUses: 2
    functionsReached:
    - pg_log_error
    - exit_nicely
    - pg_log_error_hint
    - strcmp
    linkageType: ''
    returnType: void
    signature: void set_dump_section(const char *arg, int *dumpSections)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - function
    - arg
    argTypes:
    - on_exit_nicely_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 110
    functionName: on_exit_nicely
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void on_exit_nicely(on_exit_nicely_callback function, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: function
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:135,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:139,1
    - Dst: _endthreadex
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:140,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - code
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 144
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.c
    functionUses: 13
    functionsReached:
    - exit
    - _endthreadex
    - function
    - GetCurrentThreadId
    linkageType: ''
    returnType: void
    signature: void exit_nicely(int code)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:143,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:153,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:154,1
    - Dst: create_or_open_dir
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:161,1
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:168,1
    - Dst: InitDiscoverCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:170,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:172,1
    - Dst: ReadHead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:181,1
    - Dst: ReadToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:183,1
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:186,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:187,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 47
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 109
    functionDepth: 4
    functionLinenumber: 109
    functionLinenumberEnd: 190
    functionName: InitArchiveFmt_Directory
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - strcmp
    - InitDiscoverCompressFileHandle
    - EndCompressFileHandle
    - pg_fatal
    - create_or_open_dir
    - ReadHead
    - ReadToc
    - setFilePath
    - pg_malloc0_object
    linkageType: ''
    returnType: void
    signature: void InitArchiveFmt_Directory(ArchiveHandle *AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:203,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:204,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:206,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:207,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:211,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 218
    functionName: _ArchiveEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - pg_malloc0_object
    - pg_strdup
    - strcmp
    - snprintf
    linkageType: ''
    returnType: void
    signature: void _ArchiveEntry(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:237,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 240
    functionName: _WriteExtraToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - WriteStr
    linkageType: ''
    returnType: void
    signature: void _WriteExtraToc(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:255,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:259,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:260,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 265
    functionName: _ReadExtraToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - free
    - pg_malloc0_object
    - ReadStr
    - strlen
    linkageType: ''
    returnType: void
    signature: void _ReadExtraToc(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 278
    functionName: _PrintExtraToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void _PrintExtraToc(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:296,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:298,1
    - Dst: lclContext*::dataFH::open_write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:300,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 302
    functionName: _StartData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - setFilePath
    - InitCompressFileHandle
    - lclContext*::dataFH::open_write_func
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _StartData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - AH
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 322
    functionName: _WriteData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - CompressFileHandle*::write_func
    linkageType: ''
    returnType: void
    signature: void _WriteData(ArchiveHandle *AH, const void *data, size_t dLen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:336,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 330
    functionDepth: 3
    functionLinenumber: 330
    functionLinenumberEnd: 340
    functionName: _EndData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - EndCompressFileHandle
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _EndData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InitDiscoverCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:356,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:358,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:361,1
    - Dst: CompressFileHandle*::read_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:363,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:365,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:368,1
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:369,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:370,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - AH
    - filename
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 345
    functionDepth: 4
    functionLinenumber: 345
    functionLinenumberEnd: 371
    functionName: _PrintFileData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - InitDiscoverCompressFileHandle
    - EndCompressFileHandle
    - pg_fatal
    - ahwrite
    - CompressFileHandle*::read_func
    - pg_free
    - pg_malloc
    linkageType: ''
    returnType: void
    signature: void _PrintFileData(ArchiveHandle *AH, char *filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:384,1
    - Dst: _LoadLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:385,1
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:390,1
    - Dst: _PrintFileData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 393
    functionName: _PrintTocData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - _LoadLOs
    - _PrintFileData
    - strcmp
    - setFilePath
    linkageType: ''
    returnType: void
    signature: void _PrintTocData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: StartRestoreLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:405,1
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:415,1
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:417,1
    - Dst: InitDiscoverCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:419,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:422,1
    - Dst: CompressFileHandle*::gets_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:426,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:432,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:432,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:433,1
    - Dst: StartRestoreLO
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:436,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:437,1
    - Dst: _PrintFileData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:438,1
    - Dst: EndRestoreLO
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:439,1
    - Dst: CompressFileHandle*::eof_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:441,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:442,1
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:445,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:446,1
    - Dst: EndRestoreLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:451,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 395
    functionDepth: 4
    functionLinenumber: 395
    functionLinenumberEnd: 452
    functionName: _LoadLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 2
    functionsReached:
    - StartRestoreLO
    - CppAsString2
    - _PrintFileData
    - StartRestoreLOs
    - sscanf
    - InitDiscoverCompressFileHandle
    - EndRestoreLO
    - CompressFileHandle*::gets_func
    - pg_fatal
    - EndCompressFileHandle
    - EndRestoreLOs
    - CompressFileHandle*::eof_func
    - setFilePath
    - snprintf
    linkageType: ''
    returnType: void
    signature: void _LoadLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - i
    argTypes:
    - ArchiveHandle*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 469
    functionName: _WriteByte
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 2
    functionsReached:
    - CompressFileHandle*::write_func
    linkageType: ''
    returnType: int
    signature: int _WriteByte(ArchiveHandle *AH, const int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::getc_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 484
    functionName: _ReadByte
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - CompressFileHandle*::getc_func
    linkageType: ''
    returnType: int
    signature: int _ReadByte(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 497
    functionName: _WriteBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 1
    functionsReached:
    - CompressFileHandle*::write_func
    linkageType: ''
    returnType: void
    signature: void _WriteBuf(ArchiveHandle *AH, const void *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::read_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:514,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 516
    functionName: _ReadBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 1
    functionsReached:
    - CompressFileHandle*::read_func
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _ReadBuf(ArchiveHandle *AH, void *buf, size_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:541,1
    - Dst: ParallelBackupStart
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:544,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:548,1
    - Dst: CompressFileHandle*::open_write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:549,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:550,1
    - Dst: WriteHead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:559,1
    - Dst: WriteToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:561,1
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:562,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:563,1
    - Dst: WriteDataChunks
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:564,1
    - Dst: ParallelBackupEnd
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:566,1
    - Dst: sync_dir_recurse
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:573,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 530
    functionDepth: 3
    functionLinenumber: 530
    functionLinenumberEnd: 576
    functionName: _CloseArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - InitCompressFileHandle
    - WriteToc
    - ParallelBackupEnd
    - CompressFileHandle*::open_write_func
    - WriteHead
    - ParallelBackupStart
    - EndCompressFileHandle
    - pg_fatal
    - WriteDataChunks
    - setFilePath
    - sync_dir_recurse
    linkageType: ''
    returnType: void
    signature: void _CloseArchive(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 581
    functionDepth: 0
    functionLinenumber: 581
    functionLinenumberEnd: 589
    functionName: _ReopenArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _ReopenArchive(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:610,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:614,1
    - Dst: lclContext*::LOsTocFH::open_write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:615,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 602
    functionDepth: 2
    functionLinenumber: 602
    functionLinenumberEnd: 617
    functionName: _StartLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 1
    functionsReached:
    - setFilePath
    - InitCompressFileHandle
    - lclContext*::LOsTocFH::open_write_func
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _StartLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:630,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:632,1
    - Dst: lclContext*::dataFH::open_write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:633,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 624
    functionDepth: 2
    functionLinenumber: 624
    functionLinenumberEnd: 635
    functionName: _StartLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - InitCompressFileHandle
    - lclContext*::dataFH::open_write_func
    - pg_fatal
    - snprintf
    linkageType: ''
    returnType: void
    signature: void _StartLO(ArchiveHandle *AH, TocEntry *te, Oid oid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:651,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:652,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:656,1
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 642
    functionDepth: 3
    functionLinenumber: 642
    functionLinenumberEnd: 658
    functionName: _EndLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - snprintf
    - CompressFileHandle*::write_func
    - EndCompressFileHandle
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _EndLO(ArchiveHandle *AH, TocEntry *te, Oid oid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:670,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 665
    functionDepth: 3
    functionLinenumber: 665
    functionLinenumberEnd: 673
    functionName: _EndLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 1
    functionsReached:
    - EndCompressFileHandle
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _EndLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:689,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:689,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:690,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:692,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:693,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:694,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - AH
    - buf
    - relativeFilename
    argTypes:
    - ArchiveHandle*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 681
    functionDepth: 0
    functionLinenumber: 681
    functionLinenumberEnd: 695
    functionName: setFilePath
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 6
    functionsReached:
    - strcat
    - strcpy
    - strlen
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void setFilePath(ArchiveHandle *AH, char *buf, const char *relativeFilename)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:735,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:737,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:742,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:744,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:746,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:748,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:759,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 762
    functionName: _PrepParallelRestore
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - setFilePath
    - strlcat
    - stat
    - strcmp
    linkageType: ''
    returnType: void
    signature: void _PrepParallelRestore(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:772,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 785
    functionName: _Clone
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    - memcpy
    linkageType: ''
    returnType: void
    signature: void _Clone(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 793
    functionName: _DeClone
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void _DeClone(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WriteDataChunksForTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 810
    functionName: _WorkerJobDumpDirectory
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - WriteDataChunksForTocEntry
    linkageType: ''
    returnType: int
    signature: int _WorkerJobDumpDirectory(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parallel_restore
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 820
    functionName: _WorkerJobRestoreDirectory
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - parallel_restore
    linkageType: ''
    returnType: int
    signature: int _WorkerJobRestoreDirectory(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:100,1
    - Dst: LZ4F_createCompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:119,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:120,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:126,1
    - Dst: LZ4F_compressBegin
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:131,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - LZ4State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 143
    functionName: LZ4State_compression_init
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_createCompressionContext
    - LZ4F_compressBound
    - LZ4F_compressBegin
    - pg_malloc
    - LZ4F_isError
    linkageType: ''
    returnType: bool
    signature: bool LZ4State_compression_init(LZ4State *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:163,1
    - Dst: LZ4F_createDecompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:164,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:165,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:166,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:167,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:169,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:170,1
    - Dst: CompressorState*::readF
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:172,1
    - Dst: LZ4F_decompress
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:185,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:187,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:188,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:189,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:191,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:196,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:197,1
    - Dst: LZ4F_freeDecompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:199,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:200,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:201,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:202,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 203
    functionName: ReadDataFromArchiveLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - CompressorState*::readF
    - LZ4F_decompress
    - pg_fatal
    - LZ4F_freeDecompressionContext
    - LZ4F_createDecompressionContext
    - ahwrite
    - memset
    - pg_free
    - pg_malloc
    - LZ4F_isError
    linkageType: ''
    returnType: void
    signature: void ReadDataFromArchiveLZ4(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:219,1
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:222,1
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:225,1
    - Dst: LZ4F_compressUpdate
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:229,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:234,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:235,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - AH
    - cs
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 243
    functionName: WriteDataToArchiveLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - CompressorState*::writeF
    - LZ4F_getErrorName
    - pg_fatal
    - LZ4F_compressUpdate
    - Min
    - LZ4F_compressBound
    - LZ4F_isError
    linkageType: ''
    returnType: void
    signature: "void WriteDataToArchiveLZ4(ArchiveHandle *AH, CompressorState *cs,\n\t\t\t\t\t
      \ const void *data, size_t dLen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:257,1
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:260,1
    - Dst: LZ4F_compressEnd
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:264,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:269,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:270,1
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:274,1
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:276,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:277,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:278,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:279,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:281,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:282,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 285
    functionName: EndCompressorLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - CompressorState*::writeF
    - LZ4F_getErrorName
    - LZ4F_compressEnd
    - LZ4F_freeCompressionContext
    - pg_fatal
    - pg_free
    - LZ4F_compressBound
    - LZ4F_isError
    linkageType: ''
    returnType: void
    signature: void EndCompressorLZ4(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:308,1
    - Dst: LZ4State_compression_init
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:312,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:313,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:314,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 317
    functionName: InitCompressorLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 1
    functionsReached:
    - pg_malloc0_object
    - LZ4State_compression_init
    - LZ4F_getErrorName
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void InitCompressorLZ4(CompressorState *cs, const pg_compress_specification
      compression_spec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 337
    functionName: LZ4Stream_eof
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - feof
    linkageType: ''
    returnType: bool
    signature: bool LZ4Stream_eof(CompressFileHandle *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:345,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:346,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 351
    functionName: LZ4Stream_get_error
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - strerror
    - LZ4F_isError
    linkageType: ''
    returnType: char
    signature: 'char *

      LZ4Stream_get_error(CompressFileHandle *CFH)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LZ4State_compression_init
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:377,1
    - Dst: LZ4F_createDecompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:382,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:383,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:390,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:392,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - state
    - compressing
    argTypes:
    - LZ4State*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 365
    functionDepth: 2
    functionLinenumber: 365
    functionLinenumberEnd: 397
    functionName: LZ4Stream_init
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_createDecompressionContext
    - pg_malloc
    - LZ4State_compression_init
    - LZ4F_isError
    linkageType: ''
    returnType: bool
    signature: bool LZ4Stream_init(LZ4State *state, bool compressing)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LZ4Stream_init
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:416,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:418,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:419,1
    - Dst: memchr
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:440,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:448,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:456,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:467,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:468,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:470,1
    - Dst: LZ4F_decompress
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:487,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:492,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:495,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:496,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 4
    argNames:
    - state
    - ptr
    - ptrsize
    - eol_flag
    argTypes:
    - LZ4State*
    - void*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 409
    functionDepth: 3
    functionLinenumber: 409
    functionLinenumberEnd: 506
    functionName: LZ4Stream_read_internal
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - memcpy
    - LZ4Stream_init
    - memchr
    - Assert
    - feof
    - LZ4F_decompress
    - fread
    - pg_log_error
    - LZ4F_isError
    linkageType: ''
    returnType: int
    signature: int LZ4Stream_read_internal(LZ4State *state, void *ptr, int ptrsize,
      bool eol_flag)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LZ4Stream_init
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:518,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:519,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:520,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:529,1
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:532,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:536,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:539,1
    - Dst: LZ4F_compressUpdate
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:544,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:548,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:549,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:549,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 511
    functionDepth: 3
    functionLinenumber: 511
    functionLinenumberEnd: 555
    functionName: LZ4Stream_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - LZ4Stream_init
    - pg_fatal
    - LZ4F_compressUpdate
    - Min
    - LZ4F_compressBound
    - LZ4F_isError
    - fwrite
    linkageType: ''
    returnType: void
    signature: void LZ4Stream_write(const void *ptr, size_t size, CompressFileHandle
      *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LZ4Stream_read_internal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:566,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:567,1
    - Dst: LZ4Stream_get_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 560
    functionDepth: 4
    functionLinenumber: 560
    functionLinenumberEnd: 570
    functionName: LZ4Stream_read
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4Stream_get_error
    - LZ4Stream_read_internal
    - pg_fatal
    linkageType: ''
    returnType: size_t
    signature: size_t LZ4Stream_read(void *ptr, size_t size, CompressFileHandle *CFH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LZ4Stream_read_internal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:581,1
    - Dst: LZ4Stream_eof
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:583,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:584,1
    - Dst: LZ4Stream_get_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:584,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:586,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 575
    functionDepth: 4
    functionLinenumber: 575
    functionLinenumberEnd: 590
    functionName: LZ4Stream_getc
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4Stream_get_error
    - LZ4Stream_read_internal
    - LZ4Stream_eof
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int LZ4Stream_getc(CompressFileHandle *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LZ4Stream_read_internal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - char*
    - int
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 595
    functionDepth: 4
    functionLinenumber: 595
    functionLinenumberEnd: 618
    functionName: LZ4Stream_gets
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4Stream_read_internal
    linkageType: ''
    returnType: char
    signature: 'char *

      LZ4Stream_gets(char *ptr, int size, CompressFileHandle *CFH)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:640,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:644,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:647,1
    - Dst: LZ4F_compressEnd
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:653,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:657,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:659,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:660,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:667,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:670,1
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:674,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:675,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:677,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:678,1
    - Dst: LZ4F_freeDecompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:684,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:685,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:687,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:688,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:691,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:694,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:697,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:701,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:704,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 709
    functionName: LZ4Stream_close
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - LZ4F_compressEnd
    - LZ4F_freeCompressionContext
    - LZ4F_freeDecompressionContext
    - fclose
    - pg_free
    - pg_log_error
    - LZ4F_compressBound
    - LZ4F_isError
    - fwrite
    linkageType: ''
    returnType: bool
    signature: bool LZ4Stream_close(CompressFileHandle *CFH)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:719,1
    - Dst: fdopen
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:726,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:730,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:736,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - path
    - fd
    - mode
    - CFH
    argTypes:
    - char*
    - int
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 745
    functionName: LZ4Stream_open
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - fdopen
    - fopen
    - dup
    - close
    linkageType: ''
    returnType: bool
    signature: "bool LZ4Stream_open(const char *path, int fd, const char *mode,\n\t\t\t
      \  CompressFileHandle *CFH)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:754,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:755,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - path
    - mode
    - CFH
    argTypes:
    - char*
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 747
    functionDepth: 1
    functionLinenumber: 747
    functionLinenumberEnd: 762
    functionName: LZ4Stream_open_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - pfree
    - psprintf
    - CompressFileHandle*::open_func
    linkageType: ''
    returnType: bool
    signature: bool LZ4Stream_open_write(const char *path, const char *mode, CompressFileHandle
      *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:784,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 789
    functionName: InitCompressFileHandleLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 1
    functionsReached:
    - pg_malloc0_object
    linkageType: ''
    returnType: void
    signature: "void InitCompressFileHandleLZ4(CompressFileHandle *CFH,\n\t\t\t\t\t\t
      \ const pg_compress_specification compression_spec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 791
    functionDepth: 0
    functionLinenumber: 791
    functionLinenumberEnd: 796
    functionName: InitCompressorLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void InitCompressorLZ4(CompressorState *cs,\n\t\t\t\t  const pg_compress_specification
      compression_spec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 798
    functionDepth: 0
    functionLinenumber: 798
    functionLinenumberEnd: 803
    functionName: InitCompressFileHandleLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void InitCompressFileHandleLZ4(CompressFileHandle *CFH,\n\t\t\t\t\t\t
      \ const pg_compress_specification compression_spec)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:154,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:164,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:166,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:168,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:175,1
    - Dst: checkSeek
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:186,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:194,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:198,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:200,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:202,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:209,1
    - Dst: checkSeek
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:220,1
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:222,1
    - Dst: ReadHead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:223,1
    - Dst: ReadToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:224,1
    - Dst: tarClose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:225,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 58
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 227
    functionName: InitArchiveFmt_Tar
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - checkSeek
    - strcmp
    - fopen
    - tarOpen
    - pg_fatal
    - ReadHead
    - ReadToc
    - pg_malloc0_object
    - tarClose
    linkageType: ''
    returnType: void
    signature: void InitArchiveFmt_Tar(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:239,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:242,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 251
    functionName: _ArchiveEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - pg_malloc0_object
    - pg_strdup
    - snprintf
    linkageType: ''
    returnType: void
    signature: void _ArchiveEntry(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:259,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 262
    functionName: _WriteExtraToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - WriteStr
    linkageType: ''
    returnType: void
    signature: void _WriteExtraToc(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:271,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:275,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:276,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 282
    functionName: _ReadExtraToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - free
    - pg_malloc0_object
    - ReadStr
    - strlen
    linkageType: ''
    returnType: void
    signature: void _ReadExtraToc(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 291
    functionName: _PrintExtraToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void _PrintExtraToc(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: _StartData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - tarOpen
    linkageType: ''
    returnType: void
    signature: void _StartData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: _tarPositionTo
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:309,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:318,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:330,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:336,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:344,1
    - Dst: tmpfile
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:347,1
    - Dst: _tempnam
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:360,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:363,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:365,1
    - Dst: fdopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:369,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:378,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:380,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:385,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:388,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 3
    argNames:
    - AH
    - filename
    - mode
    argTypes:
    - ArchiveHandle*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 395
    functionName: tarOpen
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 2
    functionsReached:
    - tmpfile
    - pg_fatal
    - _tarPositionTo
    - fdopen
    - pg_strdup
    - _tempnam
    - free
    - open
    - pg_malloc0_object
    - umask
    linkageType: ''
    returnType: TAR_MEMBER
    signature: 'TAR_MEMBER *

      tarOpen(ArchiveHandle *AH, const char *filename, char mode)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:401,1
    - Dst: _tarAddFile
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:404,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - AH
    - th
    argTypes:
    - ArchiveHandle*
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 414
    functionName: tarClose
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - _tarAddFile
    - free
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void tarClose(ArchiveHandle *AH, TAR_MEMBER *th)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _tarReadRaw
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:431,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:449,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - buf
    - len
    - th
    argTypes:
    - char*
    - size_t
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 454
    functionName: tarGets
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - strlen
    - _tarReadRaw
    linkageType: ''
    returnType: char
    signature: 'char *

      tarGets(char *buf, size_t len, TAR_MEMBER *th)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:469,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:481,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:493,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:494,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:495,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:499,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:500,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:501,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 5
    argNames:
    - AH
    - buf
    - len
    - th
    - fh
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    - TAR_MEMBER*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 508
    functionName: _tarReadRaw
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - memcpy
    - READ_ERROR_EXIT
    - Assert
    - feof
    - fread
    linkageType: ''
    returnType: size_t
    signature: size_t _tarReadRaw(ArchiveHandle *AH, void *buf, size_t len, TAR_MEMBER
      *th, FILE *fh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _tarReadRaw
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:521,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - buf
    - len
    - th
    argTypes:
    - void*
    - size_t
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 526
    functionName: tarRead
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - _tarReadRaw
    linkageType: ''
    returnType: size_t
    signature: size_t tarRead(void *buf, size_t len, TAR_MEMBER *th)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - buf
    - len
    - th
    argTypes:
    - void*
    - size_t
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 537
    functionName: tarWrite
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - fwrite
    linkageType: ''
    returnType: size_t
    signature: size_t tarWrite(const void *buf, size_t len, TAR_MEMBER *th)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tarWrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 546
    functionName: _WriteData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - tarWrite
    linkageType: ''
    returnType: void
    signature: void _WriteData(ArchiveHandle *AH, const void *data, size_t dLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tarClose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 556
    functionName: _EndData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - tarClose
    linkageType: ''
    returnType: void
    signature: void _EndData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:572,1
    - Dst: tarRead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:575,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:578,1
    - Dst: tarClose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:581,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - AH
    - filename
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 561
    functionDepth: 3
    functionLinenumber: 561
    functionLinenumberEnd: 582
    functionName: _PrintFileData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 2
    functionsReached:
    - tarRead
    - ahwrite
    - tarOpen
    - tarClose
    linkageType: ''
    returnType: void
    signature: void _PrintFileData(ArchiveHandle *AH, char *filename)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:610,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:616,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:617,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:618,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:619,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:623,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:625,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:630,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:636,1
    - Dst: _LoadLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:637,1
    - Dst: _PrintFileData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:639,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 640
    functionName: _PrintTocData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - strcmp
    - _PrintFileData
    - ahprintf
    - pg_fatal
    - ahwrite
    - strncmp
    - strlen
    - _LoadLOs
    linkageType: ''
    returnType: void
    signature: void _PrintTocData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: StartRestoreLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:652,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:667,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:668,1
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:669,1
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:672,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:678,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:680,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:683,1
    - Dst: StartRestoreLO
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:685,1
    - Dst: tarRead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:687,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:690,1
    - Dst: EndRestoreLO
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:692,1
    - Dst: tarClose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:695,1
    - Dst: tarClose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:699,1
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:711,1
    - Dst: EndRestoreLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:713,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 642
    functionDepth: 3
    functionLinenumber: 642
    functionLinenumberEnd: 714
    functionName: _LoadLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 3
    functionsReached:
    - StartRestoreLO
    - atooid
    - StartRestoreLOs
    - tarClose
    - EndRestoreLO
    - tarOpen
    - EndRestoreLOs
    - tarRead
    - strncmp
    - ahwrite
    - pg_log_info
    - snprintf
    linkageType: ''
    returnType: void
    signature: void _LoadLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tarWrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - i
    argTypes:
    - ArchiveHandle*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 717
    functionDepth: 1
    functionLinenumber: 717
    functionLinenumberEnd: 728
    functionName: _WriteByte
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 2
    functionsReached:
    - tarWrite
    linkageType: ''
    returnType: int
    signature: int _WriteByte(ArchiveHandle *AH, const int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tarRead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:737,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:740,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 730
    functionDepth: 3
    functionLinenumber: 730
    functionLinenumberEnd: 743
    functionName: _ReadByte
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - tarRead
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int _ReadByte(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tarWrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 754
    functionName: _WriteBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - tarWrite
    linkageType: ''
    returnType: void
    signature: void _WriteBuf(ArchiveHandle *AH, const void *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tarRead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:761,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:763,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 756
    functionDepth: 3
    functionLinenumber: 756
    functionLinenumberEnd: 766
    functionName: _ReadBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - tarRead
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _ReadBuf(ArchiveHandle *AH, void *buf, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:784,1
    - Dst: WriteHead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:786,1
    - Dst: WriteToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:787,1
    - Dst: tarClose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:788,1
    - Dst: WriteDataChunks
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:793,1
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:799,1
    - Dst: tarPrintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:801,1
    - Dst: NewRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:814,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:815,1
    - Dst: SetArchiveOptions
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:824,1
    - Dst: RestoreArchive
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:829,1
    - Dst: SetArchiveOptions
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:831,1
    - Dst: tarClose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:835,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:844,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:850,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 768
    functionDepth: 2
    functionLinenumber: 768
    functionLinenumberEnd: 854
    functionName: _CloseArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - WriteToc
    - memcpy
    - SetArchiveOptions
    - NewRestoreOptions
    - WriteHead
    - fputc
    - tarPrintf
    - tarOpen
    - fsync_fname
    - WriteDataChunks
    - RestoreArchive
    - tarClose
    linkageType: ''
    returnType: void
    signature: void _CloseArchive(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tarWrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 862
    functionName: _scriptOut
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - tarWrite
    linkageType: ''
    returnType: size_t
    signature: size_t _scriptOut(ArchiveHandle *AH, const void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:884,1
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 878
    functionDepth: 2
    functionLinenumber: 878
    functionLinenumberEnd: 886
    functionName: _StartLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - tarOpen
    - sprintf
    linkageType: ''
    returnType: void
    signature: void _StartLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:903,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:906,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:908,1
    - Dst: tarPrintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:910,1
    - Dst: tarOpen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:912,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 895
    functionDepth: 2
    functionLinenumber: 895
    functionLinenumberEnd: 913
    functionName: _StartLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - sprintf
    - tarPrintf
    - tarOpen
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void _StartLO(ArchiveHandle *AH, TocEntry *te, Oid oid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tarClose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 921
    functionDepth: 2
    functionLinenumber: 921
    functionLinenumberEnd: 927
    functionName: _EndLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - tarClose
    linkageType: ''
    returnType: void
    signature: void _EndLO(ArchiveHandle *AH, TocEntry *te, Oid oid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tarClose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 935
    functionDepth: 2
    functionLinenumber: 935
    functionLinenumberEnd: 944
    functionName: _EndLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - tarClose
    linkageType: ''
    returnType: void
    signature: void _EndLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:966,1
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:970,1
    - Dst: pvsnprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:971,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:972,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:978,1
    - Dst: tarWrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:982,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:983,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - th
    - fmt
    argTypes:
    - TAR_MEMBER*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 985
    functionName: tarPrintf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 2
    functionsReached:
    - va_end
    - tarWrite
    - va_start
    - pvsnprintf
    - pg_free
    - pg_malloc
    linkageType: ''
    returnType: int
    signature: int tarPrintf(TAR_MEMBER *th, const char *fmt, ...)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1003,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1004,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1005,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1007,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1008,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1009,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1011,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1013,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1015,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1019,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1020,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1022,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1023,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1026,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1029,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1032,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - AH
    - th
    argTypes:
    - ArchiveHandle*
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 1037
    functionName: _tarAddFile
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - fseeko
    - READ_ERROR_EXIT
    - feof
    - fputc
    - _tarWriteHeader
    - pg_fatal
    - fclose
    - fread
    - ftello
    - tarPaddingBytesRequired
    - fwrite
    linkageType: ''
    returnType: void
    signature: void _tarAddFile(ArchiveHandle *AH, TAR_MEMBER *th)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1044,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1057,1
    - Dst: _tarReadRaw
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1061,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1064,1
    - Dst: _tarGetHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1069,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1072,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1079,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1084,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1086,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1088,1
    - Dst: TocIDRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1089,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1090,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1096,1
    - Dst: _tarReadRaw
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1100,1
    - Dst: _tarGetHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1102,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1103,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1107,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - AH
    - filename
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1040
    functionDepth: 2
    functionLinenumber: 1040
    functionLinenumberEnd: 1111
    functionName: _tarPositionTo
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - _tarGetHeader
    - strcmp
    - _tarReadRaw
    - pg_fatal
    - atoi
    - pg_free
    - pg_malloc0_object
    - tarPaddingBytesRequired
    - TocIDRequired
    - pg_log_debug
    linkageType: ''
    returnType: TAR_MEMBER
    signature: 'TAR_MEMBER *

      _tarPositionTo(ArchiveHandle *AH, const char *filename)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _tarReadRaw
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1132,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1137,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1137,1
    - Dst: tarChecksum
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1143,1
    - Dst: read_tar_number
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1144,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1168,1
    - Dst: read_tar_number
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1170,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1172,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1176,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1177,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1179,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - AH
    - th
    argTypes:
    - ArchiveHandle*
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1114
    functionDepth: 2
    functionLinenumber: 1114
    functionLinenumberEnd: 1183
    functionName: _tarGetHeader
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - tarChecksum
    - _tarReadRaw
    - read_tar_number
    - ngettext
    - pg_fatal
    - pg_strdup
    - ftello
    - pg_log_debug
    linkageType: ''
    returnType: int
    signature: int _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tarCreateHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1191,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1192,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - th
    argTypes:
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1186
    functionDepth: 1
    functionLinenumber: 1186
    functionLinenumberEnd: 1197
    functionName: _tarWriteHeader
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - tarCreateHeader
    - time
    - fwrite
    linkageType: ''
    returnType: void
    signature: void _tarWriteHeader(TAR_MEMBER *th)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cstr
    - ','
    - str
    - ','
    - bytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: is_keyword_str
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_keyword_str(cstr, str, bytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_dump/filter.c:41,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/filter.c:43,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/filter.c:45,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:48,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - fstate
    - filename
    - f_exit
    argTypes:
    - FilterStateData*
    - char*
    - exit_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 54
    functionName: filter_init
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 2
    functionsReached:
    - strcmp
    - fopen
    - initStringInfo
    - FilterStateData*::exit_nicely
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void filter_init(FilterStateData *fstate, const char *filename, exit_function
      f_exit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/filter.c:65,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/filter.c:70,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - fstate
    argTypes:
    - FilterStateData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 75
    functionName: filter_free
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 2
    functionsReached:
    - pg_log_error
    - free
    - fclose
    linkageType: ''
    returnType: void
    signature: void filter_free(FilterStateData *fstate)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pg_unreachable
      Src: /src/postgres/src/bin/pg_dump/filter.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 1
    argNames:
    - fot
    argTypes:
    - FilterObjectType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 114
    functionName: filter_object_type_name
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 2
    functionsReached:
    - pg_unreachable
    linkageType: ''
    returnType: char
    signature: 'char *

      filter_object_type_name(FilterObjectType fot)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:124,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:126,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:128,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:130,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:132,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:134,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:136,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:138,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:140,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:142,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:144,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 3
    argNames:
    - keyword
    - size
    - objtype
    argTypes:
    - char*
    - int
    - FilterObjectType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 150
    functionName: get_object_type
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 0
    functionsReached:
    - is_keyword_str
    linkageType: ''
    returnType: bool
    signature: bool get_object_type(const char *keyword, int size, FilterObjectType
      *objtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_dump/filter.c:159,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_dump/filter.c:160,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_dump/filter.c:161,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:164,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fstate
    - fmt
    argTypes:
    - FilterStateData*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 169
    functionName: pg_log_filter_error
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 2
    functionsReached:
    - va_start
    - vsnprintf
    - va_end
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void pg_log_filter_error(FilterStateData *fstate, const char *fmt,
      ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/filter.c:185,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:191,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:195,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:199,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - line
    - size
    argTypes:
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 208
    functionName: filter_get_keyword
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 0
    functionsReached:
    - Assert
    - isspace
    linkageType: ''
    returnType: char
    signature: 'char *

      filter_get_keyword(const char **line, int *size)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:221,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/filter.c:238,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/bin/pg_dump/filter.c:240,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pg_dump/filter.c:242,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:243,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:246,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:246,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:248,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:253,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:259,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:264,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:274,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:276,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:281,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 3
    argNames:
    - fstate
    - str
    - pattern
    argTypes:
    - FilterStateData*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 285
    functionName: read_quoted_string
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 0
    functionsReached:
    - ferror
    - pg_log_filter_error
    - pg_get_line_buf
    - _
    - Assert
    - FilterStateData*::exit_nicely
    - appendPQExpBufferChar
    - pg_log_error
    linkageType: ''
    returnType: char
    signature: "char *\nread_quoted_string(FilterStateData *fstate,\n\t\t\t\t   const
      char *str,\n\t\t\t\t   PQExpBuffer pattern)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:308,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:313,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:313,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:314,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:319,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/filter.c:319,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:327,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:331,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:339,1
    - Dst: read_quoted_string
      Src: /src/postgres/src/bin/pg_dump/filter.c:341,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/filter.c:345,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/filter.c:349,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:351,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:358,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 3
    argNames:
    - fstate
    - str
    - pattern
    argTypes:
    - FilterStateData*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 301
    functionDepth: 3
    functionLinenumber: 301
    functionLinenumberEnd: 366
    functionName: read_pattern
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 0
    functionsReached:
    - _
    - strchr
    - isspace
    - FilterStateData*::exit_nicely
    - appendPQExpBufferChar
    - pg_log_filter_error
    - appendPQExpBufferStr
    - read_quoted_string
    linkageType: ''
    returnType: char
    signature: 'char *

      read_pattern(FilterStateData *fstate, const char *str, PQExpBuffer pattern)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/bin/pg_dump/filter.c:397,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:407,1
    - Dst: filter_get_keyword
      Src: /src/postgres/src/bin/pg_dump/filter.c:420,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:423,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:424,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:425,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:428,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:430,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:434,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:435,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:436,1
    - Dst: filter_get_keyword
      Src: /src/postgres/src/bin/pg_dump/filter.c:439,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:442,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:442,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:443,1
    - Dst: get_object_type
      Src: /src/postgres/src/bin/pg_dump/filter.c:446,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:448,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:449,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:450,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/filter.c:453,1
    - Dst: read_pattern
      Src: /src/postgres/src/bin/pg_dump/filter.c:455,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pg_dump/filter.c:468,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:470,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:471,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 4
    argNames:
    - fstate
    - objname
    - comtype
    - objtype
    argTypes:
    - FilterStateData*
    - char**
    - FilterCommandType*
    - FilterObjectType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 391
    functionDepth: 4
    functionLinenumber: 391
    functionLinenumberEnd: 475
    functionName: filter_read_item
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 2
    functionsReached:
    - is_keyword_str
    - ferror
    - pg_get_line_buf
    - read_pattern
    - _
    - pg_log_error
    - filter_get_keyword
    - isspace
    - initPQExpBuffer
    - FilterStateData*::exit_nicely
    - pg_log_filter_error
    - get_object_type
    linkageType: ''
    returnType: bool
    signature: "bool filter_read_item(FilterStateData *fstate,\n\t\t\t\t char **objname,\n\t\t\t\t
      FilterCommandType *comtype,\n\t\t\t\t FilterObjectType *objtype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:138,1
    - Dst: InitDumpOptions
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 142
    functionName: NewDumpOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    - InitDumpOptions
    linkageType: ''
    returnType: DumpOptions
    signature: 'DumpOptions *

      NewDumpOptions(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - opts
    argTypes:
    - DumpOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 158
    functionName: InitDumpOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void InitDumpOptions(DumpOptions *opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NewDumpOptions
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:167,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:170,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:171,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:172,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:173,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 1
    argNames:
    - ropt
    argTypes:
    - RestoreOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 204
    functionName: dumpOptionsFromRestoreOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - NewDumpOptions
    - pg_strdup
    linkageType: ''
    returnType: DumpOptions
    signature: 'DumpOptions *

      dumpOptionsFromRestoreOptions(RestoreOptions *ropt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveHandle*::ReopenPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 226
    functionName: setupRestoreWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - ArchiveHandle*::ReopenPtr
    linkageType: ''
    returnType: void
    signature: void setupRestoreWorker(Archive *AHX)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _allocAH
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - FileSpec
    - fmt
    - compression_spec
    - dosync
    - mode
    - setupDumpWorker
    - sync_method
    argTypes:
    - char*
    - ArchiveFormat
    - pg_compress_specification
    - bool
    - ArchiveMode
    - SetupWorkerPtrType
    - DataDirSyncMethod
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 243
    functionName: CreateArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - _allocAH
    linkageType: ''
    returnType: Archive
    signature: "Archive *\nCreateArchive(const char *FileSpec, const ArchiveFormat
      fmt,\n\t\t\t  const pg_compress_specification compression_spec,\n\t\t\t  bool
      dosync, ArchiveMode mode,\n\t\t\t  SetupWorkerPtrType setupDumpWorker,\n\t\t\t
      \ DataDirSyncMethod sync_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _allocAH
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - FileSpec
    - fmt
    argTypes:
    - char*
    - ArchiveFormat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 259
    functionName: OpenArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - _allocAH
    linkageType: ''
    returnType: Archive
    signature: 'Archive *

      OpenArchive(const char *FileSpec, const ArchiveFormat fmt)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveHandle*::ClosePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:267,1
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:271,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 262
    functionDepth: 3
    functionLinenumber: 262
    functionLinenumberEnd: 273
    functionName: CloseArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - ArchiveHandle*::ClosePtr
    - EndCompressFileHandle
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void CloseArchive(Archive *AHX)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dumpOptionsFromRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - AH
    - dopt
    - ropt
    argTypes:
    - Archive*
    - DumpOptions*
    - RestoreOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 276
    functionDepth: 3
    functionLinenumber: 276
    functionLinenumberEnd: 286
    functionName: SetArchiveOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - dumpOptionsFromRestoreOptions
    linkageType: ''
    returnType: void
    signature: void SetArchiveOptions(Archive *AH, DumpOptions *dopt, RestoreOptions
      *ropt)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:316,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:320,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:326,1
    - Dst: _tocEntryRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:335,1
    - Dst: StrictNamesCheck
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:340,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 341
    functionName: ProcessArchiveRestoreOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - _tocEntryRequired
    - pg_log_warning
    - StrictNamesCheck
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void ProcessArchiveRestoreOptions(Archive *AHX)
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:363,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:367,1
    - Dst: ArchiveHandle*::ReopenPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:373,1
    - Dst: supports_compression
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:385,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:388,1
    - Dst: buildTocEntryArrays
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:401,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:408,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:410,1
    - Dst: ConnectDatabaseAhx
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:420,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:453,1
    - Dst: SaveOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:460,1
    - Dst: SetOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:462,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:464,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:475,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:478,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:481,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:484,1
    - Dst: dumpTimestamp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:487,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:492,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:494,1
    - Dst: _doSetFixedOutputState
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:500,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:522,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:523,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:532,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:541,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:542,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:546,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:548,1
    - Dst: _becomeOwner
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:553,1
    - Dst: _selectOutputSchema
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:554,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:561,1
    - Dst: IssueCommandPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:565,1
    - Dst: IssueCommandPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:570,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:577,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:584,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:595,1
    - Dst: DropLOIfExists
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:597,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:601,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:603,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:609,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:611,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:635,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:636,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:637,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:638,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:644,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:645,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:646,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:647,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:649,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:652,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:657,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:659,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:664,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:666,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:670,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:672,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:673,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:687,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:689,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:696,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:697,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:700,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:719,1
    - Dst: ArchiveHandle*::PrepParallelRestorePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:733,1
    - Dst: pending_list_header_init
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:735,1
    - Dst: restore_toc_entries_prefork
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:738,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:739,1
    - Dst: ParallelBackupStart
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:742,1
    - Dst: restore_toc_entries_parallel
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:743,1
    - Dst: ParallelBackupEnd
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:744,1
    - Dst: restore_toc_entries_postfork
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:747,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:748,1
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:765,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:768,1
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:784,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:785,1
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:794,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:795,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:807,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:809,1
    - Dst: dumpTimestamp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:813,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:813,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:815,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:823,1
    - Dst: RestoreOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:831,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:834,1
    CyclomaticComplexity: 83
    EdgeCount: 83
    ICount: 193
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 344
    functionDepth: 3
    functionLinenumber: 344
    functionLinenumberEnd: 835
    functionName: RestoreArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - SetOutput
    - _doSetFixedOutputState
    - strcmp
    - ParallelBackupEnd
    - ArchiveHandle*::ReopenPtr
    - strstr
    - dumpTimestamp
    - pg_log_warning
    - strcpy
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - DropLOIfExists
    - restore_toc_entries_parallel
    - pending_list_header_init
    - Assert
    - ParallelBackupStart
    - _selectOutputSchema
    - time
    - ConnectDatabaseAhx
    - restore_toc_entries_prefork
    - restore_toc_entries_postfork
    - supports_compression
    - CommitTransaction
    - _tocEntryRestorePass
    - buildTocEntryArrays
    - ahprintf
    - strlen
    - pg_free
    - pg_log_info
    - RestoreOutput
    - StartTransaction
    - pg_strdup
    - DisconnectDatabase
    - IssueCommandPerBlob
    - restore_toc_entry
    - ArchiveHandle*::PrepParallelRestorePtr
    - pg_fatal
    - strncmp
    - _becomeOwner
    - appendPQExpBuffer
    - free
    - SaveOutput
    - snprintf
    linkageType: ''
    returnType: void
    signature: void RestoreArchive(Archive *AHX)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:855,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:857,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:858,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:859,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:860,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:879,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:880,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:886,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:888,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:894,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:897,1
    - Dst: _printTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:900,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:903,1
    - Dst: inhibit_data_for_failed_table
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:920,1
    - Dst: mark_create_done
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:935,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:947,1
    - Dst: _reconnectToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:948,1
    - Dst: _printTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:969,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:971,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:972,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:974,1
    - Dst: _selectOutputSchema
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:976,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:979,1
    - Dst: ArchiveHandle*::PrintTocDataPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:982,1
    - Dst: _disableTriggersIfNecessary
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:990,1
    - Dst: _becomeOwner
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:993,1
    - Dst: _selectOutputSchema
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:994,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:996,1
    - Dst: is_load_via_partition_root
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1016,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1024,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1030,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1031,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1037,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1039,1
    - Dst: ArchiveHandle*::PrintTocDataPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1045,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1051,1
    - Dst: EndDBCopyMode
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1052,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1057,1
    - Dst: _enableTriggersIfNecessary
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1059,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1066,1
    - Dst: _printTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1067,1
    - Dst: _printTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1075,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1087,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1088,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1091,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 98
    argCount: 3
    argNames:
    - AH
    - te
    - is_parallel
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 844
    functionDepth: 2
    functionLinenumber: 844
    functionLinenumberEnd: 1100
    functionName: restore_toc_entry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - strcmp
    - _disableTriggersIfNecessary
    - pg_log_warning
    - _printTocEntry
    - mark_create_done
    - EndDBCopyMode
    - is_load_via_partition_root
    - _selectOutputSchema
    - ArchiveHandle*::PrintTocDataPtr
    - CommitTransaction
    - _reconnectToDB
    - fmtQualifiedId
    - RestoringToDB
    - ahprintf
    - strlen
    - pg_log_info
    - StartTransaction
    - inhibit_data_for_failed_table
    - _becomeOwner
    - _enableTriggersIfNecessary
    linkageType: ''
    returnType: int
    signature: int restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1106
    functionDepth: 1
    functionLinenumber: 1106
    functionLinenumberEnd: 1124
    functionName: NewRestoreOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - pg_malloc0_object
    linkageType: ''
    returnType: RestoreOptions
    signature: 'RestoreOptions *

      NewRestoreOptions(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1135,1
    - Dst: _becomeUser
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1143,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1148,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1126
    functionDepth: 1
    functionLinenumber: 1126
    functionLinenumberEnd: 1150
    functionName: _disableTriggersIfNecessary
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedId
    - pg_log_info
    - ahprintf
    - _becomeUser
    linkageType: ''
    returnType: void
    signature: void _disableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1161,1
    - Dst: _becomeUser
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1169,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1174,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1152
    functionDepth: 1
    functionLinenumber: 1152
    functionLinenumberEnd: 1176
    functionName: _enableTriggersIfNecessary
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedId
    - pg_log_info
    - ahprintf
    - _becomeUser
    linkageType: ''
    returnType: void
    signature: void _enableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1193,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1197,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1205,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1206,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1207,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1208,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - te
    argTypes:
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1189
    functionDepth: 1
    functionLinenumber: 1189
    functionLinenumberEnd: 1213
    functionName: is_load_via_partition_root
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedId
    - strncmp
    - destroyPQExpBuffer
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool is_load_via_partition_root(TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1226,1
    - Dst: ArchiveHandle*::WriteDataPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - AHX
    - data
    - dLen
    argTypes:
    - Archive*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1220
    functionDepth: 0
    functionLinenumber: 1220
    functionLinenumberEnd: 1229
    functionName: WriteData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - ArchiveHandle*::WriteDataPtr
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void WriteData(Archive *AHX, const void *data, size_t dLen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1248,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1263,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1264,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1265,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1266,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1268,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1269,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1270,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1271,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1272,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1276,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1277,1
    - Dst: ArchiveHandle*::ArchiveEntryPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 40
    argCount: 4
    argNames:
    - AHX
    - catalogId
    - dumpId
    - opts
    argTypes:
    - Archive*
    - CatalogId
    - DumpId
    - ArchiveOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1241
    functionDepth: 1
    functionLinenumber: 1241
    functionLinenumberEnd: 1300
    functionName: ArchiveEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 62
    functionsReached:
    - memcpy
    - ArchiveHandle*::ArchiveEntryPtr
    - pg_malloc_array
    - pg_malloc0_object
    - pg_strdup
    linkageType: ''
    returnType: TocEntry
    signature: "TocEntry *\nArchiveEntry(Archive *AHX, CatalogId catalogId, DumpId
      dumpId,\n\t\t\t ArchiveOpts *opts)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: SaveOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1318,1
    - Dst: SetOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1320,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1322,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1323,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1324,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1326,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1327,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1328,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1330,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1347,1
    - Dst: ARCHIVE_MAJOR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1348,1
    - Dst: ARCHIVE_MINOR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1348,1
    - Dst: ARCHIVE_REV
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1348,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1349,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1350,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1351,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1353,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1356,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1359,1
    - Dst: _tocEntryRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1367,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1378,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1379,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1380,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1382,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1387,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1388,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1389,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1395,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1397,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1398,1
    - Dst: StrictNamesCheck
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1404,1
    - Dst: RestoreOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1407,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1303
    functionDepth: 1
    functionLinenumber: 1303
    functionLinenumberEnd: 1408
    functionName: PrintTOCSummary
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - SaveOutput
    - ARCHIVE_MINOR
    - SetOutput
    - StrictNamesCheck
    - ahprintf
    - RestoreOutput
    - strftime
    - localtime
    - ARCHIVE_MAJOR
    - _tocEntryRequired
    - free
    - sanitize_line
    - get_compress_algorithm_name
    - ARCHIVE_REV
    - strcpy
    linkageType: ''
    returnType: void
    signature: void PrintTOCSummary(Archive *AHX)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1421,1
    - Dst: ArchiveHandle*::StartLOPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AHX
    - oid
    argTypes:
    - Archive*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1415
    functionDepth: 0
    functionLinenumber: 1415
    functionLinenumberEnd: 1426
    functionName: StartLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - ArchiveHandle*::StartLOPtr
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int StartLO(Archive *AHX, Oid oid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveHandle*::EndLOPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AHX
    - oid
    argTypes:
    - Archive*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1429
    functionDepth: 0
    functionLinenumber: 1429
    functionLinenumberEnd: 1438
    functionName: EndLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - ArchiveHandle*::EndLOPtr
    linkageType: ''
    returnType: int
    signature: int EndLO(Archive *AHX, Oid oid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1460,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1462,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1466
      start: 1447
    functionDepth: 1
    functionLinenumber: 1447
    functionLinenumberEnd: 1466
    functionName: StartRestoreLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - ahprintf
    - StartTransaction
    linkageType: ''
    returnType: void
    signature: void StartRestoreLOs(ArchiveHandle *AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1479,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1481,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1484,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1484,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1471
    functionDepth: 1
    functionLinenumber: 1471
    functionLinenumberEnd: 1488
    functionName: EndRestoreLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - CommitTransaction
    - ahprintf
    - pg_log_info
    - ngettext
    linkageType: ''
    returnType: void
    signature: void EndRestoreLOs(ArchiveHandle *AH)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1507,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1511,1
    - Dst: DropLOIfExists
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1515,1
    - Dst: lo_create
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1521,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1523,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1524,1
    - Dst: lo_open
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1526,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1528,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1529,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1534,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1537,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - AH
    - oid
    - drop
    argTypes:
    - ArchiveHandle*
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1494
    functionDepth: 2
    functionLinenumber: 1494
    functionLinenumberEnd: 1542
    functionName: StartRestoreLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - DropLOIfExists
    - lo_create
    - ahprintf
    - pg_fatal
    - lo_open
    - pg_log_info
    - PQerrorMessage
    - pg_malloc
    linkageType: ''
    returnType: void
    signature: void StartRestoreLO(ArchiveHandle *AH, Oid oid, bool drop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump_lo_buf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1550,1
    - Dst: lo_close
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1557,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - AH
    - oid
    argTypes:
    - ArchiveHandle*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1544
    functionDepth: 1
    functionLinenumber: 1544
    functionLinenumberEnd: 1564
    functionName: EndRestoreLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - dump_lo_buf
    - lo_close
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void EndRestoreLO(ArchiveHandle *AH, Oid oid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1579,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1582,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1584,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1586,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1588,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1596,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1604,1
    - Dst: strtol
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1608,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1612,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1617,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1619,1
    - Dst: _moveBefore
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1636,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1639,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1641,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1642,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1643
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 1643
    functionName: SortTocFromFile
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_get_line_buf
    - strchr
    - fopen
    - initStringInfo
    - strtol
    - getTocEntryByDumpId
    - pg_fatal
    - fclose
    - pg_malloc0_array
    - _moveBefore
    - strspn
    - pg_log_warning
    - pg_free
    linkageType: ''
    returnType: void
    signature: void SortTocFromFile(Archive *AHX)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WriteData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1654,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - AH
    argTypes:
    - char*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1655
      start: 1651
    functionDepth: 1
    functionLinenumber: 1651
    functionLinenumberEnd: 1655
    functionName: archputs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - WriteData
    - strlen
    linkageType: ''
    returnType: void
    signature: void archputs(const char *s, Archive *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1671,1
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1675,1
    - Dst: pvsnprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1676,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1677,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1683,1
    - Dst: WriteData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1687,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1688,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - AH
    - fmt
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1690
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1690
    functionName: archprintf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - va_end
    - WriteData
    - va_start
    - pvsnprintf
    - pg_free
    - pg_malloc
    linkageType: ''
    returnType: int
    signature: int archprintf(Archive *AH, const char *fmt, ...)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1707,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1708,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1711,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1717,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1724,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1726,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1729,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1731,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - AH
    - filename
    - compression_spec
    argTypes:
    - ArchiveHandle*
    - char*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1735
      start: 1697
    functionDepth: 2
    functionLinenumber: 1697
    functionLinenumberEnd: 1735
    functionName: SetOutput
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - InitCompressFileHandle
    - strcmp
    - CompressFileHandle*::open_func
    - pg_fatal
    - fileno
    linkageType: ''
    returnType: void
    signature: "void SetOutput(ArchiveHandle *AH, const char *filename,\n\t\t  const
      pg_compress_specification compression_spec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1737
    functionDepth: 0
    functionLinenumber: 1737
    functionLinenumberEnd: 1741
    functionName: SaveOutput
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: CompressFileHandle
    signature: 'CompressFileHandle *

      SaveOutput(ArchiveHandle *AH)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1747,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - savedOutput
    argTypes:
    - ArchiveHandle*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1751
      start: 1743
    functionDepth: 3
    functionLinenumber: 1743
    functionLinenumberEnd: 1751
    functionName: RestoreOutput
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - EndCompressFileHandle
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void RestoreOutput(ArchiveHandle *AH, CompressFileHandle *savedOutput)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1771,1
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1775,1
    - Dst: pvsnprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1776,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1777,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1783,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1787,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1788,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - AH
    - fmt
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1758
    functionDepth: 1
    functionLinenumber: 1758
    functionLinenumberEnd: 1790
    functionName: ahprintf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 21
    functionsReached:
    - va_end
    - va_start
    - pvsnprintf
    - ahwrite
    - pg_free
    - pg_malloc
    linkageType: ''
    returnType: int
    signature: int ahprintf(ArchiveHandle *AH, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1795
    functionDepth: 0
    functionLinenumber: 1795
    functionLinenumberEnd: 1801
    functionName: RestoringToDB
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int RestoringToDB(ArchiveHandle *AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_write
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1813,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1814,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1814,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1820,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1821,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1825,1
    - Dst: appendByteaLiteralAHX
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1827,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1834,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1837,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1840
      start: 1806
    functionDepth: 2
    functionLinenumber: 1806
    functionLinenumberEnd: 1840
    functionName: dump_lo_buf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - warn_or_exit_horribly
    - lo_write
    - ahprintf
    - ngettext
    - appendByteaLiteralAHX
    - PQerrorMessage
    - destroyPQExpBuffer
    - createPQExpBuffer
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void dump_lo_buf(ArchiveHandle *AH)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1862,1
    - Dst: dump_lo_buf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1866,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1869,1
    - Dst: ArchiveHandle*::CustomOutPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1875,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1881,1
    - Dst: ExecuteSqlCommandBuf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1882,1
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1887,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - ptr
    - size
    - nmemb
    - AH
    argTypes:
    - void*
    - size_t
    - size_t
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1893
      start: 1849
    functionDepth: 4
    functionLinenumber: 1849
    functionLinenumberEnd: 1893
    functionName: ahwrite
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 9
    functionsReached:
    - memcpy
    - ExecuteSqlCommandBuf
    - dump_lo_buf
    - RestoringToDB
    - ArchiveHandle*::CustomOutPtr
    - CompressFileHandle*::write_func
    linkageType: ''
    returnType: void
    signature: void ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle
      *AH)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: is_cancel_in_progress
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1900,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1913,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1918,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1923,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1928,1
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1937,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1938,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1939,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1946,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - AH
    - fmt
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1896
    functionDepth: 1
    functionLinenumber: 1896
    functionLinenumberEnd: 1949
    functionName: warn_or_exit_horribly
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - va_end
    - is_cancel_in_progress
    - va_start
    - pg_log_generic_v
    - pg_log_info
    - exit_nicely
    linkageType: ''
    returnType: void
    signature: void warn_or_exit_horribly(ArchiveHandle *AH, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - AH
    - pos
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1953
    functionDepth: 0
    functionLinenumber: 1953
    functionLinenumberEnd: 1965
    functionName: _moveAfter
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _moveAfter(ArchiveHandle *AH, TocEntry *pos, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - pos
    - te
    argTypes:
    - TocEntry*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1968
    functionDepth: 0
    functionLinenumber: 1968
    functionLinenumberEnd: 1980
    functionName: _moveBefore
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _moveBefore(TocEntry *pos, TocEntry *te)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1999,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2000,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2006,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2017,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2027,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 1993
    functionDepth: 1
    functionLinenumber: 1993
    functionLinenumberEnd: 2032
    functionName: buildTocEntryArrays
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_malloc0_array
    - strcmp
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void buildTocEntryArrays(ArchiveHandle *AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: buildTocEntryArrays
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2039,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - id
    argTypes:
    - ArchiveHandle*
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2045
      start: 2034
    functionDepth: 2
    functionLinenumber: 2034
    functionLinenumberEnd: 2045
    functionName: getTocEntryByDumpId
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 4
    functionsReached:
    - buildTocEntryArrays
    linkageType: ''
    returnType: TocEntry
    signature: 'TocEntry *

      getTocEntryByDumpId(ArchiveHandle *AH, DumpId id)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2050,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - id
    argTypes:
    - ArchiveHandle*
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 2047
    functionDepth: 3
    functionLinenumber: 2047
    functionLinenumberEnd: 2056
    functionName: TocIDRequired
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - getTocEntryByDumpId
    linkageType: ''
    returnType: int
    signature: int TocIDRequired(ArchiveHandle *AH, DumpId id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2064,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2069,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - AH
    - o
    - wasSet
    argTypes:
    - ArchiveHandle*
    - pgoff_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2073
      start: 2058
    functionDepth: 0
    functionLinenumber: 2058
    functionLinenumberEnd: 2073
    functionName: WriteOffset
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - ArchiveHandle*::WriteBytePtr
    linkageType: ''
    returnType: size_t
    signature: size_t WriteOffset(ArchiveHandle *AH, pgoff_t o, int wasSet)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2089,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2108,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2119,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2128,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2131,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2132,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - AH
    - o
    argTypes:
    - ArchiveHandle*
    - pgoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2137
      start: 2075
    functionDepth: 1
    functionLinenumber: 2075
    functionLinenumberEnd: 2137
    functionName: ReadOffset
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - ArchiveHandle*::ReadBytePtr
    - ReadInt
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int ReadOffset(ArchiveHandle *AH, pgoff_t *o)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2155,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2159,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - AH
    - i
    argTypes:
    - ArchiveHandle*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2168
      start: 2139
    functionDepth: 0
    functionLinenumber: 2139
    functionLinenumberEnd: 2168
    functionName: WriteInt
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 7
    functionsReached:
    - ArchiveHandle*::WriteBytePtr
    linkageType: ''
    returnType: size_t
    signature: size_t WriteInt(ArchiveHandle *AH, int i)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2181,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2185,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2170
    functionDepth: 0
    functionLinenumber: 2170
    functionLinenumberEnd: 2195
    functionName: ReadInt
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 7
    functionsReached:
    - ArchiveHandle*::ReadBytePtr
    linkageType: ''
    returnType: int
    signature: int ReadInt(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2204,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2206,1
    - Dst: ArchiveHandle*::WriteBufPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2207,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - c
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2214
      start: 2197
    functionDepth: 1
    functionLinenumber: 2197
    functionLinenumberEnd: 2214
    functionName: WriteStr
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - ArchiveHandle*::WriteBufPtr
    - strlen
    - WriteInt
    linkageType: ''
    returnType: size_t
    signature: size_t WriteStr(ArchiveHandle *AH, const char *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2222,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2227,1
    - Dst: ArchiveHandle*::ReadBufPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2234
      start: 2216
    functionDepth: 1
    functionLinenumber: 2216
    functionLinenumberEnd: 2234
    functionName: ReadStr
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - pg_malloc
    - ReadInt
    - ArchiveHandle*::ReadBufPtr
    linkageType: ''
    returnType: char
    signature: 'char *

      ReadStr(ArchiveHandle *AH)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2242,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2243,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2245,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - dir
    - filename
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2246
      start: 2236
    functionDepth: 1
    functionLinenumber: 2236
    functionLinenumberEnd: 2246
    functionName: _fileExistsInDirectory
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - S_ISREG
    - stat
    - pg_fatal
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool _fileExistsInDirectory(const char *dir, const char *filename)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2256,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2258,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2262,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2276,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2276,1
    - Dst: _fileExistsInDirectory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2279,1
    - Dst: _fileExistsInDirectory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2282,1
    - Dst: _fileExistsInDirectory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2286,1
    - Dst: _fileExistsInDirectory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2290,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2293,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2299,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2301,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2308,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2311,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2313,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2314,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2316,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2320,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2323,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2335,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2339,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2340,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2340,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2341,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2341,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2347,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2352,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2353,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2355,1
    - Dst: isValidTarHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2358,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2359,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2367,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2368,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2375
      start: 2248
    functionDepth: 2
    functionLinenumber: 2248
    functionLinenumberEnd: 2375
    functionName: _discoverArchiveFormat
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - ferror
    - _fileExistsInDirectory
    - memcpy
    - READ_ERROR_EXIT
    - pg_log_debug
    - isValidTarHeader
    - fopen
    - feof
    - stat
    - pg_malloc0
    - pg_fatal
    - fclose
    - fread
    - strncmp
    - strlen
    - pg_free
    - S_ISDIR
    linkageType: ''
    returnType: int
    signature: int _discoverArchiveFormat(ArchiveHandle *AH)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2391,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2394,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2408,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2414,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2431,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2441,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2445,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2446,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2446,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2447,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2457,1
    - Dst: _setmode
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2460,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2460,1
    - Dst: _setmode
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2462,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2462,1
    - Dst: _discoverArchiveFormat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2469,1
    - Dst: InitArchiveFmt_Custom
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2476,1
    - Dst: InitArchiveFmt_Null
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2480,1
    - Dst: InitArchiveFmt_Directory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2484,1
    - Dst: InitArchiveFmt_Tar
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2488,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2492,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 59
    argCount: 7
    argNames:
    - FileSpec
    - fmt
    - compression_spec
    - dosync
    - mode
    - setupWorkerPtr
    - sync_method
    argTypes:
    - char*
    - ArchiveFormat
    - pg_compress_specification
    - bool
    - ArchiveMode
    - SetupWorkerPtrType
    - DataDirSyncMethod
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2496
      start: 2381
    functionDepth: 5
    functionLinenumber: 2381
    functionLinenumberEnd: 2496
    functionName: _allocAH
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - InitCompressFileHandle
    - _discoverArchiveFormat
    - strcmp
    - pg_log_debug
    - InitArchiveFmt_Directory
    - CompressFileHandle*::open_func
    - pg_fatal
    - InitArchiveFmt_Null
    - time
    - memset
    - fileno
    - _setmode
    - InitArchiveFmt_Custom
    - pg_malloc0_object
    - InitArchiveFmt_Tar
    - pg_strdup
    linkageType: ''
    returnType: ArchiveHandle
    signature: "ArchiveHandle *\n_allocAH(const char *FileSpec, const ArchiveFormat
      fmt,\n\t\t const pg_compress_specification compression_spec,\n\t\t bool dosync,
      ArchiveMode mode,\n\t\t SetupWorkerPtrType setupWorkerPtr, DataDirSyncMethod
      sync_method)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2518,1
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2533,1
    - Dst: DispatchJobForTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2536,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2539,1
    - Dst: WaitForWorkers
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2542,1
    - Dst: WriteDataChunksForTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2555,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 2
    argNames:
    - AH
    - pstate
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2558
      start: 2501
    functionDepth: 4
    functionLinenumber: 2501
    functionLinenumberEnd: 2558
    functionName: WriteDataChunks
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - qsort
    - WaitForWorkers
    - DispatchJobForTocEntry
    - pg_malloc_array
    - WriteDataChunksForTocEntry
    - pg_free
    linkageType: ''
    returnType: void
    signature: void WriteDataChunks(ArchiveHandle *AH, ParallelState *pstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2573,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - AH
    - te
    - status
    - callback_data
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2579
      start: 2567
    functionDepth: 1
    functionLinenumber: 2567
    functionLinenumberEnd: 2579
    functionName: mark_dump_job_done
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - pg_log_info
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void mark_dump_job_done(ArchiveHandle *AH,\n\t\t\t\t   TocEntry *te,\n\t\t\t\t
      \  int status,\n\t\t\t\t   void *callback_data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2590,1
    - Dst: TocEntry*::dataDumper
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2582
    functionDepth: 0
    functionLinenumber: 2582
    functionLinenumberEnd: 2613
    functionName: WriteDataChunksForTocEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - TocEntry*::dataDumper
    - strcmp
    linkageType: ''
    returnType: void
    signature: void WriteDataChunksForTocEntry(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2633,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2640,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2641,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2644,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2645,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2646,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2647,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2649,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2650,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2651,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2675,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2678,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2679,1
    - Dst: TocEntry*::defnDumper
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2683,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2685,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2686,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2689,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2691,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2692,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2693,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2694,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2695,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2696,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2697,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2698,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2703,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2704,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2706,1
    - Dst: ArchiveHandle*::WriteExtraTocPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2709,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2615
    functionDepth: 2
    functionLinenumber: 2615
    functionLinenumberEnd: 2711
    functionName: WriteToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - fseeko
    - WriteStr
    - TocEntry*::defnDumper
    - pg_fatal
    - WriteInt
    - sprintf
    - pg_free
    - ArchiveHandle*::WriteExtraTocPtr
    linkageType: ''
    returnType: void
    signature: void WriteToc(ArchiveHandle *AH)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2724,1
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2729,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2730,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2737,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2740,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2744,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2745,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2746,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2750,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2751,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2752,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2754,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2755,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2759,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2768,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2769,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2770,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2772,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2773,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2774,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2776,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2777,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2778,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2779,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2780,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2781,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2787,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2788,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2791,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2794,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2797,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2800,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2803,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2805,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2811,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2813,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2816,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2820,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2826,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2830,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2836,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2838,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2839,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2845,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2851,1
    - Dst: ArchiveHandle*::ReadExtraTocPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2864,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2866,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2876,1
    - Dst: processEncodingEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2877,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2878,1
    - Dst: processStdStringsEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2879,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2880,1
    - Dst: processSearchPathEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2881,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 100
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2883
      start: 2713
    functionDepth: 2
    functionLinenumber: 2713
    functionLinenumberEnd: 2883
    functionName: ReadToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - processSearchPathEntry
    - ReadStr
    - ArchiveHandle*::ReadExtraTocPtr
    - ReadInt
    - strcmp
    - sscanf
    - pg_malloc_array
    - pg_fatal
    - pg_log_warning
    - free
    - processEncodingEntry
    - pg_free
    - pg_malloc0_object
    - pg_realloc_array
    - processStdStringsEntry
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void ReadToc(ArchiveHandle *AH)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2889,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2894,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2896,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2900,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2902,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2905,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2908,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2911,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2912
      start: 2885
    functionDepth: 1
    functionLinenumber: 2885
    functionLinenumberEnd: 2912
    functionName: processEncodingEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - strchr
    - setFmtEncoding
    - pg_fatal
    - pg_char_to_encoding
    - pg_free
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void processEncodingEntry(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2920,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2921,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2923,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2926,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2928
      start: 2914
    functionDepth: 0
    functionLinenumber: 2914
    functionLinenumberEnd: 2928
    functionName: processStdStringsEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - strncmp
    - pg_fatal
    - strchr
    linkageType: ''
    returnType: void
    signature: void processStdStringsEntry(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2938
      start: 2930
    functionDepth: 1
    functionLinenumber: 2930
    functionLinenumberEnd: 2938
    functionName: processSearchPathEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void processSearchPathEntry(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2945,1
    - Dst: simple_string_list_not_touched
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2949,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2951,1
    - Dst: simple_string_list_not_touched
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2956,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2958,1
    - Dst: simple_string_list_not_touched
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2963,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2965,1
    - Dst: simple_string_list_not_touched
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2970,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2972,1
    - Dst: simple_string_list_not_touched
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2977,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2979,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - ropt
    argTypes:
    - RestoreOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2981
      start: 2940
    functionDepth: 1
    functionLinenumber: 2940
    functionLinenumberEnd: 2981
    functionName: StrictNamesCheck
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - Assert
    - pg_fatal
    - simple_string_list_not_touched
    linkageType: ''
    returnType: void
    signature: void StrictNamesCheck(RestoreOptions *ropt)
  - BBCount: 67
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3002,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3008,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3009,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3010,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3013,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3014,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3027,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3028,1
    - Dst: _tocEntryIsACL
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3041,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3045,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3050,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3051,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3058,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3061,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3061,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3065,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3065,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3069,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3069,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3078,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3079,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3080,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3084,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3091,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3094,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3094,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3098,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3098,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3103,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3133,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3134,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3135,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3138,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3170,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3174,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3194,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3200,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3205,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3216,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3222,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3223,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3224,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3225,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3228,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3233,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3236,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3243,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3244,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3245,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3246,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3247,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3248,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3249,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3250,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3255,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3258,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3263,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3266,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3267,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3268,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3273,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3276,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3281,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3305,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3306,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3307,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3308,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3309,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3310,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3311,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3312,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3313,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3324,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3331,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3331,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3345,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3347,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3348,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3349,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3350,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3351,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3352,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3353,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3354,1
    CyclomaticComplexity: 142
    EdgeCount: 142
    ICount: 147
    argCount: 3
    argNames:
    - te
    - curSection
    - AH
    argTypes:
    - TocEntry*
    - teSection
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3363
      start: 2991
    functionDepth: 3
    functionLinenumber: 2991
    functionLinenumberEnd: 3363
    functionName: _tocEntryRequired
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - strcmp
    - _tocEntryIsACL
    - getTocEntryByDumpId
    - strlen
    - strncmp
    - simple_string_list_member
    linkageType: ''
    returnType: int
    signature: int _tocEntryRequired(TocEntry *te, teSection curSection, ArchiveHandle
      *AH)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3374,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3375,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3376,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3378,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3379,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3389,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3390,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3391,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3403,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 10
    argCount: 1
    argNames:
    - te
    argTypes:
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3409
      start: 3370
    functionDepth: 0
    functionLinenumber: 3370
    functionLinenumberEnd: 3409
    functionName: _tocEntryRestorePass
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - strncmp
    - strcmp
    linkageType: ''
    returnType: RestorePass
    signature: RestorePass _tocEntryRestorePass(TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3422,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3423,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3424,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - te
    argTypes:
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3427
      start: 3418
    functionDepth: 0
    functionLinenumber: 3418
    functionLinenumberEnd: 3427
    functionName: _tocEntryIsACL
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool _tocEntryIsACL(TocEntry *te)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3441,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3442,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3443,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3444,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3447,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3448,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3451,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3456,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3456,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3460,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3463,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3466,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3469,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3473,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3475,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3484,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3486,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3490,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3491
      start: 3433
    functionDepth: 2
    functionLinenumber: 3433
    functionLinenumberEnd: 3491
    functionName: _doSetFixedOutputState
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_encoding_to_char
    - fmtId
    - ahprintf
    - StartTransaction
    linkageType: ''
    returnType: void
    signature: void _doSetFixedOutputState(ArchiveHandle *AH)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3501,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3503,1
    - Dst: appendStringLiteralAHX
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3509,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3511,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3512,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3514,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3518,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3520,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3522,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3523,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3525,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3528,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3530,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - AH
    - user
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3531
      start: 3498
    functionDepth: 2
    functionLinenumber: 3498
    functionLinenumberEnd: 3531
    functionName: _doSetSessionAuth
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQexec
    - RestoringToDB
    - appendStringLiteralAHX
    - ahprintf
    - pg_fatal
    - destroyPQExpBuffer
    - PQresultStatus
    - appendPQExpBufferChar
    - PQerrorMessage
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void _doSetSessionAuth(ArchiveHandle *AH, const char *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3544,1
    - Dst: ReconnectToServer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3545,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3556,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3558,1
    - Dst: appendPsqlMetaConnect
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3559,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3560,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3561,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3563,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3570,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3574,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3577,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3580,1
    - Dst: _doSetFixedOutputState
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - AH
    - dbname
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3585
      start: 3541
    functionDepth: 3
    functionLinenumber: 3541
    functionLinenumberEnd: 3585
    functionName: _reconnectToDB
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - ReconnectToServer
    - _doSetFixedOutputState
    - RestoringToDB
    - ahprintf
    - initPQExpBuffer
    - free
    - appendPsqlMetaConnect
    linkageType: ''
    returnType: void
    signature: void _reconnectToDB(ArchiveHandle *AH, const char *dbname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3598,1
    - Dst: _doSetSessionAuth
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3601,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3607,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3608,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - user
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3609
      start: 3592
    functionDepth: 3
    functionLinenumber: 3592
    functionLinenumberEnd: 3609
    functionName: _becomeUser
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - pg_free
    - _doSetSessionAuth
    - strcmp
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void _becomeUser(ArchiveHandle *AH, const char *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _becomeUser
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3623,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3624
      start: 3615
    functionDepth: 4
    functionLinenumber: 3615
    functionLinenumberEnd: 3624
    functionName: _becomeOwner
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - _becomeUser
    linkageType: ''
    returnType: void
    signature: void _becomeOwner(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3646,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3649,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3651,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3652,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3653,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3654,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3656,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3660,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3662,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3663,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3665,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3667,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3670,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3672,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3673,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3675,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - AH
    - schemaName
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3676
      start: 3631
    functionDepth: 2
    functionLinenumber: 3631
    functionLinenumberEnd: 3676
    functionName: _selectOutputSchema
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - warn_or_exit_horribly
    - PQclear
    - strcmp
    - PQexec
    - RestoringToDB
    - PQerrorMessage
    - ahprintf
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - PQresultStatus
    - pg_free
    - fmtId
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void _selectOutputSchema(ArchiveHandle *AH, const char *schemaName)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3701,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3704,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3706,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3709,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3714,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3714,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3717,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3721,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3723,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3724,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3726,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3726,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3728,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3731,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3733,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3734,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3736,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - AH
    - tablespace
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3737
      start: 3682
    functionDepth: 2
    functionLinenumber: 3682
    functionLinenumberEnd: 3737
    functionName: _selectTablespace
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - warn_or_exit_horribly
    - PQclear
    - strcmp
    - PQexec
    - RestoringToDB
    - PQerrorMessage
    - ahprintf
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - PQresultStatus
    - pg_free
    - fmtId
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void _selectTablespace(ArchiveHandle *AH, const char *tablespace)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3760,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3763,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3764,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3764,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3766,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3770,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3772,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3773,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3775,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3777,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3780,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3782,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3784,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3785,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - AH
    - tableam
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3786
      start: 3742
    functionDepth: 2
    functionLinenumber: 3742
    functionLinenumberEnd: 3786
    functionName: _selectTableAccessMethod
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - warn_or_exit_horribly
    - PQclear
    - strcmp
    - PQexec
    - RestoringToDB
    - PQerrorMessage
    - ahprintf
    - destroyPQExpBuffer
    - PQresultStatus
    - pg_free
    - fmtId
    - appendPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void _selectTableAccessMethod(ArchiveHandle *AH, const char *tableam)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3806,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3808,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3810,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3811,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3811,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3812,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3813,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3815,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3819,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3821,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3822,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3824,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3825,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3828,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3830,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3831
      start: 3792
    functionDepth: 2
    functionLinenumber: 3792
    functionLinenumberEnd: 3831
    functionName: _printTableAccessMethodNoStorage
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - warn_or_exit_horribly
    - PQclear
    - PQexec
    - Assert
    - fmtQualifiedId
    - RestoringToDB
    - PQerrorMessage
    - ahprintf
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - PQresultStatus
    - fmtId
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void _printTableAccessMethodNoStorage(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3846,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3847,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3848,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3849,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3850,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3851,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3852,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3853,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3854,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3855,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3856,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3857,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3858,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3860,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3861,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3862,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3863,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3864,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3865,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3866,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3867,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3869,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3871,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3871,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3872,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3872,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3875,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3877,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3884,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3885,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3886,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3887,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3888,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3889,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3892,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3896,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3903,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3905,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3909,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3910,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3911,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3912,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3913,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3914,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3915,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3916,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3917,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3918,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3919,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3920,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3925,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 22
    argCount: 2
    argNames:
    - buf
    - te
    argTypes:
    - PQExpBuffer
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3926
      start: 3840
    functionDepth: 1
    functionLinenumber: 3840
    functionLinenumberEnd: 3926
    functionName: _getObjectDescription
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - strcmp
    - appendPQExpBufferStr
    - pg_fatal
    - strlen
    - pg_free
    - fmtId
    - appendPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void _getObjectDescription(PQExpBuffer buf, const TocEntry *te)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: _becomeOwner
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3946,1
    - Dst: _selectOutputSchema
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3947,1
    - Dst: _selectTablespace
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3948,1
    - Dst: _selectTableAccessMethod
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3950,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3959,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3962,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3968,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3970,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3971,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3975,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3976,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3977,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3979,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3983,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3984,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3985,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3987,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3991,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3992,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3993,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3995,1
    - Dst: ArchiveHandle*::PrintExtraTocPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3998,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3999,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4024,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4024,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4026,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4026,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4028,1
    - Dst: IssueCommandPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4030,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4032,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4033,1
    - Dst: IssueACLPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4035,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4060,1
    - Dst: TocEntry*::defnDumper
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4065,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4067,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4068,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4070,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4072,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4082,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4083,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4088,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4107,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4108,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4109,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4110,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4112,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4115,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4115,1
    - Dst: IssueCommandPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4117,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4118,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4125,1
    - Dst: _getObjectDescription
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4126,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4133,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4134,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4135,1
    - Dst: _printTableAccessMethodNoStorage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4144,1
    - Dst: _tocEntryIsACL
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4150,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4152,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 79
    argCount: 3
    argNames:
    - AH
    - te
    - pfx
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4155
      start: 3935
    functionDepth: 5
    functionLinenumber: 3935
    functionLinenumberEnd: 4155
    functionName: _printTocEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - ArchiveHandle*::PrintExtraTocPtr
    - strcmp
    - strchr
    - TocEntry*::defnDumper
    - sanitize_line
    - fmtId
    - pfree
    - _selectOutputSchema
    - _selectTableAccessMethod
    - _selectTablespace
    - _tocEntryIsACL
    - psprintf
    - ahprintf
    - _printTableAccessMethodNoStorage
    - strlen
    - _getObjectDescription
    - pg_free
    - termPQExpBuffer
    - IssueCommandPerBlob
    - IssueACLPerBlob
    - pg_fatal
    - free
    - _becomeOwner
    - strncmp
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void _printTocEntry(ArchiveHandle *AH, TocEntry *te, const char *pfx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveHandle*::WriteBufPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4165,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4166,1
    - Dst: ARCHIVE_MAJOR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4166,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4167,1
    - Dst: ARCHIVE_MINOR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4167,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4168,1
    - Dst: ARCHIVE_REV
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4168,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4169,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4170,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4171,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4172,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4173,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4174,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4175,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4176,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4177,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4178,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4179,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4180,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4181,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4181,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4182,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4184
      start: 4160
    functionDepth: 2
    functionLinenumber: 4160
    functionLinenumberEnd: 4184
    functionName: WriteHead
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - ARCHIVE_MINOR
    - WriteStr
    - WriteInt
    - localtime
    - ARCHIVE_MAJOR
    - ArchiveHandle*::WriteBufPtr
    - PQdb
    - ARCHIVE_REV
    - ArchiveHandle*::WriteBytePtr
    linkageType: ''
    returnType: void
    signature: void WriteHead(ArchiveHandle *AH)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveHandle*::ReadBufPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4205,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4207,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4208,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4211,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4212,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4215,1
    - Dst: MAKE_ARCHIVE_VERSION
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4219,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4222,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4225,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4227,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4230,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4233,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4237,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4240,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4244,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4249,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4251,1
    - Dst: supports_compression
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4259,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4262,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4264,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4271,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4272,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4273,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4274,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4275,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4276,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4277,1
    - Dst: mktime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4292,1
    - Dst: mktime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4296,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4298,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4304,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4309,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4310,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 63
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4312
      start: 4186
    functionDepth: 2
    functionLinenumber: 4186
    functionLinenumberEnd: 4312
    functionName: ReadHead
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - ReadStr
    - ReadInt
    - MAKE_ARCHIVE_VERSION
    - mktime
    - ArchiveHandle*::ReadBufPtr
    - pg_fatal
    - pg_log_warning
    - strncmp
    - ArchiveHandle*::ReadBytePtr
    - pg_free
    - supports_compression
    linkageType: ''
    returnType: void
    signature: void ReadHead(ArchiveHandle *AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4325,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fp
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4338
      start: 4319
    functionDepth: 1
    functionLinenumber: 4319
    functionLinenumberEnd: 4338
    functionName: checkSeek
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - fseeko
    - ftello
    linkageType: ''
    returnType: bool
    signature: bool checkSeek(FILE *fp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4349,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4349,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - msg
    - tim
    argTypes:
    - ArchiveHandle*
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4351
      start: 4344
    functionDepth: 2
    functionLinenumber: 4344
    functionLinenumberEnd: 4351
    functionName: dumpTimestamp
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - strftime
    - localtime
    - ahprintf
    linkageType: ''
    returnType: void
    signature: void dumpTimestamp(ArchiveHandle *AH, const char *msg, time_t tim)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4368,1
    - Dst: fix_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4371,1
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4426,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4432,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4436,1
    - Dst: reduce_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4439,1
    - Dst: pending_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4444,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4454,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4461,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4464,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4466,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4468,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4470,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 2
    argNames:
    - AH
    - pending_list
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4472
      start: 4362
    functionDepth: 3
    functionLinenumber: 4362
    functionLinenumberEnd: 4472
    functionName: restore_toc_entries_prefork
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - CommitTransaction
    - _tocEntryRestorePass
    - DisconnectDatabase
    - pending_list_append
    - reduce_dependencies
    - restore_toc_entry
    - fix_dependencies
    - free
    - pg_log_info
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void restore_toc_entries_prefork(ArchiveHandle *AH, TocEntry *pending_list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4492,1
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4495,1
    - Dst: move_to_ready_heap
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4508,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4517,1
    - Dst: pop_next_work_item
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4522,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4528,1
    - Dst: reduce_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4532,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4537,1
    - Dst: DispatchJobForTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4542,1
    - Dst: IsEveryWorkerIdle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4545,1
    - Dst: move_to_ready_heap
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4557,1
    - Dst: WaitForWorkers
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4582,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4587,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4587,1
    - Dst: binaryheap_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4589,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4591,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - AH
    - pstate
    - pending_list
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4592
      start: 4485
    functionDepth: 4
    functionLinenumber: 4485
    functionLinenumberEnd: 4592
    functionName: restore_toc_entries_parallel
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - IsEveryWorkerIdle
    - WaitForWorkers
    - binaryheap_allocate
    - reduce_dependencies
    - DispatchJobForTocEntry
    - Assert
    - move_to_ready_heap
    - binaryheap_empty
    - binaryheap_free
    - pop_next_work_item
    - pg_log_info
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: "void restore_toc_entries_parallel(ArchiveHandle *AH, ParallelState
      *pstate,\n\t\t\t\t\t\t\t TocEntry *pending_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4609,1
    - Dst: ConnectDatabaseAhx
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4614,1
    - Dst: _doSetFixedOutputState
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4617,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4627,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - pending_list
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4631
      start: 4603
    functionDepth: 3
    functionLinenumber: 4603
    functionLinenumberEnd: 4631
    functionName: restore_toc_entries_postfork
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - _doSetFixedOutputState
    - restore_toc_entry
    - ConnectDatabaseAhx
    - pg_log_info
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void restore_toc_entries_postfork(ArchiveHandle *AH, TocEntry *pending_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - te1
    - te2
    argTypes:
    - TocEntry*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4652
      start: 4637
    functionDepth: 0
    functionLinenumber: 4637
    functionLinenumberEnd: 4652
    functionName: has_lock_conflicts
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool has_lock_conflicts(TocEntry *te1, TocEntry *te2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4666
      start: 4662
    functionDepth: 0
    functionLinenumber: 4662
    functionLinenumberEnd: 4666
    functionName: pending_list_header_init
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pending_list_header_init(TocEntry *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - l
    - te
    argTypes:
    - TocEntry*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4676
      start: 4669
    functionDepth: 0
    functionLinenumber: 4669
    functionLinenumberEnd: 4676
    functionName: pending_list_append
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pending_list_append(TocEntry *l, TocEntry *te)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - te
    argTypes:
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4686
      start: 4679
    functionDepth: 0
    functionLinenumber: 4679
    functionLinenumberEnd: 4686
    functionName: pending_list_remove
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pending_list_remove(TocEntry *te)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4709
      start: 4690
    functionDepth: 0
    functionLinenumber: 4690
    functionLinenumberEnd: 4709
    functionName: TocEntrySizeCompareQsort
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int TocEntrySizeCompareQsort(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TocEntrySizeCompareQsort
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - p1
    - p2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4717
      start: 4712
    functionDepth: 1
    functionLinenumber: 4712
    functionLinenumberEnd: 4717
    functionName: TocEntrySizeCompareBinaryheap
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - TocEntrySizeCompareQsort
    linkageType: ''
    returnType: int
    signature: int TocEntrySizeCompareBinaryheap(void *p1, void *p2, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4741,1
    - Dst: pending_list_remove
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4744,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4746,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - pending_list
    - ready_heap
    - pass
    argTypes:
    - TocEntry*
    - binaryheap*
    - RestorePass
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4749
      start: 4727
    functionDepth: 1
    functionLinenumber: 4727
    functionLinenumberEnd: 4749
    functionName: move_to_ready_heap
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - _tocEntryRestorePass
    - binaryheap_add
    - pending_list_remove
    linkageType: ''
    returnType: void
    signature: "void move_to_ready_heap(TocEntry *pending_list,\n\t\t\t\t   binaryheap
      *ready_heap,\n\t\t\t\t   RestorePass pass)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_size
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4774,1
    - Dst: binaryheap_get_node
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4776,1
    - Dst: has_lock_conflicts
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4790,1
    - Dst: has_lock_conflicts
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4791,1
    - Dst: binaryheap_remove_node
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4802,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4806,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - ready_heap
    - pstate
    argTypes:
    - binaryheap*
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4808
      start: 4762
    functionDepth: 1
    functionLinenumber: 4762
    functionLinenumberEnd: 4808
    functionName: pop_next_work_item
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - binaryheap_size
    - binaryheap_remove_node
    - has_lock_conflicts
    - binaryheap_get_node
    - pg_log_debug
    linkageType: ''
    returnType: TocEntry
    signature: "TocEntry *\npop_next_work_item(binaryheap *ready_heap,\n\t\t\t\t   ParallelState
      *pstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4824,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4833
      start: 4819
    functionDepth: 3
    functionLinenumber: 4819
    functionLinenumberEnd: 4833
    functionName: parallel_restore
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - Assert
    - restore_toc_entry
    linkageType: ''
    returnType: int
    signature: int parallel_restore(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4850,1
    - Dst: mark_create_done
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4854,1
    - Dst: inhibit_data_for_failed_table
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4857,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4863,1
    - Dst: reduce_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4866,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - AH
    - te
    - status
    - callback_data
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4867
      start: 4842
    functionDepth: 1
    functionLinenumber: 4842
    functionLinenumberEnd: 4867
    functionName: mark_restore_job_done
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - reduce_dependencies
    - pg_fatal
    - pg_log_info
    - mark_create_done
    - inhibit_data_for_failed_table
    linkageType: ''
    returnType: void
    signature: "void mark_restore_job_done(ArchiveHandle *AH,\n\t\t\t\t\t  TocEntry
      *te,\n\t\t\t\t\t  int status,\n\t\t\t\t\t  void *callback_data)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: repoint_table_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4907,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4918,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4924,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4926,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4969,1
    - Dst: identify_locking_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4999,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 49
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5001
      start: 4883
    functionDepth: 1
    functionLinenumber: 4883
    functionLinenumberEnd: 5001
    functionName: fix_dependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_malloc_object
    - identify_locking_dependencies
    - strcmp
    - pg_malloc_array
    - repoint_table_dependencies
    linkageType: ''
    returnType: void
    signature: void fix_dependencies(ArchiveHandle *AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5034,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5035,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5040
      start: 5013
    functionDepth: 1
    functionLinenumber: 5013
    functionLinenumberEnd: 5040
    functionName: repoint_table_dependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - Max
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: void repoint_table_dependencies(ArchiveHandle *AH)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5071,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5084,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5091,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5092,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5098,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5102,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5104
      start: 5047
    functionDepth: 1
    functionLinenumber: 5047
    functionLinenumberEnd: 5104
    functionName: identify_locking_dependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_free
    - pg_realloc_array
    - pg_malloc_array
    - strcmp
    linkageType: ''
    returnType: void
    signature: void identify_locking_dependencies(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5117,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5123,1
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5135,1
    - Dst: pending_list_remove
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5140,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5142,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - AH
    - te
    - ready_heap
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5145
      start: 5111
    functionDepth: 1
    functionLinenumber: 5111
    functionLinenumberEnd: 5145
    functionName: reduce_dependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - _tocEntryRestorePass
    - pending_list_remove
    - Assert
    - binaryheap_add
    - pg_log_debug
    linkageType: ''
    returnType: void
    signature: "void reduce_dependencies(ArchiveHandle *AH, TocEntry *te,\n\t\t\t\t\tbinaryheap
      *ready_heap)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5160
      start: 5151
    functionDepth: 0
    functionLinenumber: 5151
    functionLinenumberEnd: 5160
    functionName: mark_create_done
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mark_create_done(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5178
      start: 5166
    functionDepth: 1
    functionLinenumber: 5166
    functionLinenumberEnd: 5178
    functionName: inhibit_data_for_failed_table
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - pg_log_info
    linkageType: ''
    returnType: void
    signature: void inhibit_data_for_failed_table(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5192,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5193,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5196,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5197,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5200,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5212,1
    - Dst: ConnectDatabaseAhx
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5231,1
    - Dst: _doSetFixedOutputState
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5235,1
    - Dst: ArchiveHandle*::ClonePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5239,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5243
      start: 5186
    functionDepth: 3
    functionLinenumber: 5186
    functionLinenumberEnd: 5243
    functionName: CloneArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_malloc_object
    - memcpy
    - _doSetFixedOutputState
    - Assert
    - ArchiveHandle*::ClonePtr
    - memset
    - ConnectDatabaseAhx
    - pg_strdup
    linkageType: ''
    returnType: ArchiveHandle
    signature: 'ArchiveHandle *

      CloneArchive(ArchiveHandle *AH)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5254,1
    - Dst: ArchiveHandle*::DeClonePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5257,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5261,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5264,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5265,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5266,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5267,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5268,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5271
      start: 5250
    functionDepth: 1
    functionLinenumber: 5250
    functionLinenumberEnd: 5271
    functionName: DeCloneArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - Assert
    - destroyPQExpBuffer
    - ArchiveHandle*::DeClonePtr
    - free
    linkageType: ''
    returnType: void
    signature: void DeCloneArchive(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: is_cancel_in_progress
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_cancel_in_progress()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: pg_fatal
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.h
    functionUses: 411
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_fatal(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - buf
    - ','
    - str
    - ','
    - AH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 346
    functionName: appendStringLiteralAH
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup.h
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: appendStringLiteralAH(buf,str,AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:58,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - str
    - want_hyphen
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 69
    functionName: sanitize_line
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 3
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      sanitize_line(const char *str, bool want_hyphen)'
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:139,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:141,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:146,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:148,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:149,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:163,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:170,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:179,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:186,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:197,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:198,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:199,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:200,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:205,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:206,1
    - Dst: parseAclItem
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:213,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:223,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:226,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:226,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:228,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:229,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:231,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:233,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:234,1
    - Dst: parseAclItem
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:263,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:277,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:281,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:282,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:288,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:289,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:290,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:294,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:297,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:297,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:299,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:300,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:302,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:304,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:304,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:308,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:311,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:311,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:313,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:314,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:316,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:318,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:318,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:319,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:323,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:324,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:335,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:336,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:337,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:338,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:340,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:341,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:342,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:344,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:345,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:346,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:347,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 112
    argCount: 10
    argNames:
    - name
    - subname
    - nspname
    - type
    - acls
    - baseacls
    - owner
    - prefix
    - remoteVersion
    - sql
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - int
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 350
    functionName: buildACLCommands
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - parsePGArray
    - strcmp
    - printfPQExpBuffer
    - pg_malloc_array
    - appendPQExpBufferStr
    - free
    - destroyPQExpBuffer
    - fmtId
    - pg_free
    - parseAclItem
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool buildACLCommands(const char *name, const char *subname, const
      char *nspname,\n\t\t\t\t const char *type, const char *acls, const char *baseacls,\n\t\t\t\t
      const char *owner, const char *prefix, int remoteVersion,\n\t\t\t\t PQExpBuffer
      sql)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:374,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:382,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:383,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:385,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:385,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:391,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:395,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:399,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 7
    argNames:
    - type
    - nspname
    - acls
    - acldefault
    - owner
    - remoteVersion
    - sql
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - int
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 365
    functionDepth: 2
    functionLinenumber: 365
    functionLinenumberEnd: 402
    functionName: buildDefaultACLCommands
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - buildACLCommands
    - destroyPQExpBuffer
    - fmtId
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool buildDefaultACLCommands(const char *type, const char *nspname,\n\t\t\t\t\t\tconst
      char *acls, const char *acldefault,\n\t\t\t\t\t\tconst char *owner,\n\t\t\t\t\t\tint
      remoteVersion,\n\t\t\t\t\t\tPQExpBuffer sql)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:435,1
    - Dst: dequoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:438,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:441,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:446,1
    - Dst: dequoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:450,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:453,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:459,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:483,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:484,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:486,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:486,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:487,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:487,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:489,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:491,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:492,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:494,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:498,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:499,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:503,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:504,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:505,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:506,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:511,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:513,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:514,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:515,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:516,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:517,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:518,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:519,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:520,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:521,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:522,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:523,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:524,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:525,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:527,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:528,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:530,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:532,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:533,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:534,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:536,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:537,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:538,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:539,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:540,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:541,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:542,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:543,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:544,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:545,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:546,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:547,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:549,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:550,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:552,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:553,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:555,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:556,1
    - Dst: abort
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:559,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:565,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:566,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:568,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:572,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:573,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:575,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:578,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 86
    argCount: 9
    argNames:
    - item
    - type
    - name
    - subname
    - remoteVersion
    - grantee
    - grantor
    - privs
    - privswgo
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - int
    - PQExpBuffer
    - PQExpBuffer
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 581
    functionName: parseAclItem
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - abort
    - CONVERT_PRIV
    - strcmp
    - strchr
    - printfPQExpBuffer
    - resetPQExpBuffer
    - pg_free
    - dequoteAclUserName
    - appendPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: bool
    signature: "bool parseAclItem(const char *item, const char *type,\n\t\t\t const
      char *name, const char *subname, int remoteVersion,\n\t\t\t PQExpBuffer grantee,
      PQExpBuffer grantor,\n\t\t\t PQExpBuffer privs, PQExpBuffer privswgo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - code
    - ','
    - keywd
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 482
    functionName: CONVERT_PRIV
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONVERT_PRIV(code, keywd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:596,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:603,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:608,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:609,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:612,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - output
    - input
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 613
    functionName: quoteAclUserName
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 3
    functionsReached:
    - appendPQExpBufferChar
    - isalnum
    linkageType: ''
    returnType: void
    signature: void quoteAclUserName(PQExpBuffer output, const char *input)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:624,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:632,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:649,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - output
    - input
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 655
    functionName: dequoteAclUserName
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - resetPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      dequoteAclUserName(PQExpBuffer output, char *input)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:664,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:665,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:667,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - aclbuf
    - keyword
    - subname
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 660
    functionDepth: 1
    functionLinenumber: 660
    functionLinenumberEnd: 668
    functionName: AddAcl
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBuffer
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void AddAcl(PQExpBuffer aclbuf, const char *keyword, const char *subname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - catalog_name
    - objectId
    - sql
    argTypes:
    - char*
    - Oid
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 680
    functionDepth: 1
    functionLinenumber: 680
    functionLinenumberEnd: 688
    functionName: buildShSecLabelQuery
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void buildShSecLabelQuery(const char *catalog_name, Oid objectId,\n\t\t\t\t\t
      PQExpBuffer sql)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:704,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:706,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:707,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:710,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:712,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:713,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:715,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:716,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - conn
    - res
    - buffer
    - objtype
    - objname
    argTypes:
    - PGconn*
    - PGresult*
    - PQExpBuffer
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 698
    functionDepth: 1
    functionLinenumber: 698
    functionLinenumberEnd: 719
    functionName: emitShSecLabels
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferStr
    - PQgetvalue
    - fmtId
    - PQntuples
    - appendStringLiteralConn
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void emitShSecLabels(PGconn *conn, PGresult *res, PQExpBuffer buffer,\n\t\t\t\tconst
      char *objtype, const char *objname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:735,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:736,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:737,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:738,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:739,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:740,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:741,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 745
    functionName: variable_is_guc_list_quote
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool variable_is_guc_list_quote(const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:781,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:781,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:784,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:802,1
    - Dst: memmove
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:808,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:808,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:819,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:826,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:832,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 3
    argNames:
    - rawstring
    - separator
    - namelist
    argTypes:
    - char*
    - char
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 854
    functionName: SplitGUCList
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - strchr
    - memmove
    - pg_malloc_array
    - isspace
    - strlen
    linkageType: ''
    returnType: bool
    signature: "bool SplitGUCList(char *rawstring, char separator,\n\t\t\t char ***namelist)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:877,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:878,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:881,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:887,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:887,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:889,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:889,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:890,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:890,1
    - Dst: variable_is_guc_list_quote
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:907,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:914,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:918,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:922,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:923,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:926,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:929,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:931,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:933,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 7
    argNames:
    - conn
    - configitem
    - type
    - name
    - type2
    - name2
    - buf
    argTypes:
    - PGconn*
    - char*
    - char*
    - char*
    - char*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 867
    functionDepth: 2
    functionLinenumber: 867
    functionLinenumberEnd: 934
    functionName: makeAlterConfigCommand
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - strchr
    - appendPQExpBufferStr
    - SplitGUCList
    - pg_free
    - variable_is_guc_list_quote
    - fmtId
    - appendStringLiteralConn
    - appendPQExpBuffer
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: "void makeAlterConfigCommand(PGconn *conn, const char *configitem,\n\t\t\t\t\t
      \  const char *type, const char *name,\n\t\t\t\t\t   const char *type2, const
      char *name2,\n\t\t\t\t\t   PQExpBuffer buf)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:947,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:951,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:955,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:956,1
    - Dst: chmod
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:960,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:961,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:966,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - dirname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 942
    functionDepth: 1
    functionLinenumber: 942
    functionLinenumberEnd: 968
    functionName: create_or_open_dir
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - chmod
    - mkdir
    - pg_fatal
    - pg_check_dir
    linkageType: ''
    returnType: void
    signature: void create_or_open_dir(const char *dirname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:979,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:981,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 993
    functionName: generate_restrict_key
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 2
    functionsReached:
    - strlen
    - pg_strong_random
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      generate_restrict_key(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:1004,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:1004,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - restrict_key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 1005
    functionName: valid_restrict_key
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 2
    functionsReached:
    - strspn
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool valid_restrict_key(const char *restrict_key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: SH_GET_HASH
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_GET_HASH(tb, a)
  - BBCount: 94
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:211,1
    - Dst: pg_logging_set_level
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:212,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:213,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:213,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:214,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:218,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:218,1
    - Dst: help
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:220,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:221,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:223,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:223,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:225,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:226,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:230,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:235,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:236,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:239,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:242,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:246,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:248,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:254,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:262,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:266,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:267,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:268,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:272,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:273,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:274,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:282,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:286,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:290,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:294,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:302,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:306,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:307,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:315,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:320,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:321,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:326,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:331,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:336,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:343,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:344,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:348,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:349,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:350,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:355,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:359,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:360,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:364,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:368,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:369,1
    - Dst: read_dumpall_filters
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:373,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:377,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:378,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:379,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:384,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:385,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:392,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:394,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:395,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:401,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:404,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:405,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:411,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:413,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:414,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:419,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:421,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:422,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:426,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:431,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:436,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:438,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:439,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:448,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:450,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:454,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:456,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:458,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:460,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:462,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:464,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:466,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:468,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:470,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:472,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:474,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:476,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:478,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:480,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:482,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:484,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:486,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:488,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:490,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:492,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:494,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:496,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:498,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:500,1
    - Dst: generate_restrict_key
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:506,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:508,1
    - Dst: valid_restrict_key
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:509,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:510,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:519,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:524,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:528,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:532,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:538,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:540,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:541,1
    - Dst: expand_dbname_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:548,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:556,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:558,1
    - Dst: PQsetClientEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:569,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:570,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:579,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:584,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:585,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:590,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:592,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:592,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:593,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:594,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:599,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:601,1
    - Dst: dumpTimestamp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:603,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:613,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:623,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:626,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:627,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:628,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:629,1
    - Dst: dropDBs
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:642,1
    - Dst: dropTablespaces
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:645,1
    - Dst: dropRoles
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:648,1
    - Dst: dumpRoles
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:658,1
    - Dst: dumpRoleMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:661,1
    - Dst: dumpRoleGUCPrivs
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:665,1
    - Dst: dumpTablespaces
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:670,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:677,1
    - Dst: dumpDatabases
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:680,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:682,1
    - Dst: dumpTimestamp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:685,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:686,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:690,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:694,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:697,1
    CyclomaticComplexity: 113
    EdgeCount: 113
    ICount: 292
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 698
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 2
    functionsReached:
    - PG_TEXTDOMAIN
    - PQsetClientEncoding
    - get_progname
    - dropRoles
    - dropDBs
    - strcmp
    - fopen
    - PQclientEncoding
    - dumpTimestamp
    - dumpRoleMembership
    - read_dumpall_filters
    - puts
    - pg_log_error
    - fmtId
    - appendPQExpBufferStr
    - set_pglocale_pgservice
    - createPQExpBuffer
    - destroyPQExpBuffer
    - fprintf
    - strlcpy
    - dropTablespaces
    - PQfinish
    - simple_string_list_append
    - pg_encoding_to_char
    - dumpTablespaces
    - ConnectDatabase
    - dumpRoleGUCPrivs
    - setFmtEncoding
    - getopt_long
    - fclose
    - fsync_fname
    - valid_restrict_key
    - exit_nicely
    - pg_log_error_hint
    - pg_strdup
    - find_my_exec
    - generate_restrict_key
    - expand_dbname_patterns
    - appendShellString
    - pg_logging_init
    - pg_logging_set_level
    - dumpRoles
    - dumpDatabases
    - pg_fatal
    - pg_logging_increase_verbosity
    - help
    - executeCommand
    - sprintf
    - find_other_exec
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:704,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:704,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:705,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:705,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:706,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:706,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:708,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:708,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:709,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:709,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:710,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:710,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:711,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:711,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:712,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:712,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:713,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:713,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:714,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:714,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:715,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:715,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:716,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:716,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:717,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:717,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:718,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:718,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:719,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:719,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:720,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:720,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:721,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:721,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:722,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:722,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:723,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:723,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:724,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:724,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:725,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:725,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:726,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:726,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:727,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:727,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:728,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:728,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:729,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:729,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:730,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:730,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:731,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:731,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:732,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:732,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:733,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:733,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:734,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:734,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:735,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:735,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:736,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:736,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:737,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:737,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:738,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:738,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:739,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:739,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:740,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:740,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:741,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:741,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:742,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:742,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:743,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:743,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:744,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:744,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:745,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:745,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:746,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:746,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:747,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:747,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:748,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:748,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:749,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:749,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:750,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:750,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:751,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:751,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:752,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:752,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:753,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:753,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:754,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:754,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:755,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:755,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:756,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:756,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:760,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:760,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:761,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:761,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:762,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:762,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:763,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:763,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:764,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:764,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:765,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:765,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:766,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:766,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:767,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:767,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:768,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:768,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:770,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:770,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:772,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:772,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:773,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 701
    functionDepth: 0
    functionLinenumber: 701
    functionLinenumberEnd: 774
    functionName: help
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 5
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:783,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:788,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:794,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:796,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:798,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:799,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:801,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:805,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:807,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:809,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:812,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:813,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 780
    functionDepth: 1
    functionLinenumber: 780
    functionLinenumberEnd: 816
    functionName: dropRoles
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQclear
    - printfPQExpBuffer
    - fmtId
    - PQgetvalue
    - PQfnumber
    - PQntuples
    - createPQExpBuffer
    - destroyPQExpBuffer
    - executeQuery
    - fprintf
    linkageType: ''
    returnType: void
    signature: void dropRoles(PGconn *conn)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:824,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:846,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:857,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:859,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:860,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:861,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:862,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:863,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:864,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:865,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:866,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:867,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:868,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:869,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:870,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:871,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:872,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:874,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:875,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:877,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:882,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:882,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:883,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:885,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:887,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:892,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:896,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:897,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:911,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:911,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:912,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:912,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:913,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:913,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:915,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:915,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:916,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:918,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:920,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:920,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:921,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:923,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:925,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:925,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:926,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:928,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:930,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:930,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:931,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:933,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:935,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:935,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:936,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:938,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:940,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:940,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:941,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:943,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:945,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:945,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:946,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:948,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:950,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:950,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:951,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:952,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:955,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:957,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:958,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:958,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:961,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:962,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:963,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:965,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:967,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:969,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:969,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:970,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:970,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:971,1
    - Dst: buildShSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:975,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:979,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:987,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:988,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:990,1
    - Dst: dumpUserConfig
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:991,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:991,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:993,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:995,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:997,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 80
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 998
    functionName: dumpRoles
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - pg_log_warning
    - PQgetvalue
    - fmtId
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - executeQuery
    - fprintf
    - buildShSecLabels
    - printfPQExpBuffer
    - PQfnumber
    - PQntuples
    - atooid
    - resetPQExpBuffer
    - PQgetisnull
    - dumpUserConfig
    - strncmp
    - appendStringLiteralConn
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpRoles(PGconn *conn)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1010,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1011,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1047,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1055,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1056,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1062,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1063,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1064,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1065,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1066,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1067,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1068,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1069,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1070,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1071,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1073,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1074,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1090,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1093,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1101,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1104,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1105,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1114,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1115,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1120,1
    - Dst: rolename_create
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1126,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1142,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1144,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1145,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1165,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1168,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1169,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1174,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1177,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1180,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1183,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1185,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1189,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1192,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1194,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1203,1
    - Dst: rolename_lookup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1204,1
    - Dst: rolename_insert
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1216,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1219,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1220,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1220,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1221,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1221,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1223,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1229,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1230,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1231,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1238,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1239,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1242,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1244,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1244,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1245,1
    - Dst: rolename_destroy
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1249,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1250,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1254,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1255,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1257,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 98
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1007
    functionDepth: 1
    functionLinenumber: 1007
    functionLinenumberEnd: 1258
    functionName: dumpRoleMembership
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - rolename_create
    - pg_log_warning
    - PQgetvalue
    - pg_log_error
    - fmtId
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - createPQExpBuffer
    - executeQuery
    - fprintf
    - printfPQExpBuffer
    - PQfinish
    - rolename_lookup
    - PQfnumber
    - PQntuples
    - atooid
    - pg_malloc0_array
    - resetPQExpBuffer
    - pg_free
    - pg_log_warning_detail
    - PQgetisnull
    - exit_nicely
    - rolename_insert
    - rolename_destroy
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpRoleMembership(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1277,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1284,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1285,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1287,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1289,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1290,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1291,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1292,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1293,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1297,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1297,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1299,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1303,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1305,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1306,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1309,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1311,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1312,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1315,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1316,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1268
    functionDepth: 2
    functionLinenumber: 1268
    functionLinenumberEnd: 1317
    functionName: dumpRoleGUCPrivs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - buildACLCommands
    - PQclear
    - fmtId
    - PQfinish
    - pg_strdup
    - destroyPQExpBuffer
    - PQgetvalue
    - pg_free
    - pg_log_error
    - PQntuples
    - executeQuery
    - exit_nicely
    - createPQExpBuffer
    - fprintf
    linkageType: ''
    returnType: void
    signature: void dumpRoleGUCPrivs(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1333,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1338,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1339,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1341,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1343,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1345,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1347,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1350,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1353
    functionName: dropTablespaces
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQclear
    - fmtId
    - PQgetvalue
    - PQntuples
    - executeQuery
    - fprintf
    linkageType: ''
    returnType: void
    signature: void dropTablespaces(PGconn *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1368,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1378,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1379,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1381,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1383,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1384,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1384,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1385,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1386,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1387,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1388,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1389,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1390,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1391,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1395,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1395,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1399,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1400,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1403,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1404,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1404,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1406,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1412,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1413,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1415,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1417,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1420,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1426,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1430,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1432,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1433,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1438,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1439,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1440,1
    - Dst: buildShSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1444,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1448,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1450,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1451,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1454,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1455,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1358
    functionDepth: 2
    functionLinenumber: 1358
    functionLinenumberEnd: 1456
    functionName: dumpTablespaces
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQclear
    - is_absolute_path
    - PQgetvalue
    - pg_log_error
    - fmtId
    - destroyPQExpBuffer
    - appendPQExpBufferStr
    - executeQuery
    - createPQExpBuffer
    - fprintf
    - buildShSecLabels
    - buildACLCommands
    - PQfinish
    - PQntuples
    - atooid
    - pg_free
    - exit_nicely
    - pg_strdup
    - appendStringLiteralConn
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dumpTablespaces(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1472,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1478,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1479,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1481,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1483,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1490,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1491,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1492,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1494,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1496,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1500,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1502,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1462
    functionDepth: 1
    functionLinenumber: 1462
    functionLinenumberEnd: 1503
    functionName: dropDBs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - fmtId
    - PQgetvalue
    - PQntuples
    - executeQuery
    - fprintf
    linkageType: ''
    returnType: void
    signature: void dropDBs(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1512,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1515,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1519,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1520,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1522,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1524,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1528,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1529,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1530,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1533,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1535,1
    - Dst: makeAlterConfigCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1536,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1536,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1539,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1542,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - username
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1509
    functionDepth: 3
    functionLinenumber: 1509
    functionLinenumberEnd: 1545
    functionName: dumpUserConfig
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQclear
    - makeAlterConfigCommand
    - printfPQExpBuffer
    - createPQExpBuffer
    - resetPQExpBuffer
    - free
    - sanitize_line
    - PQgetvalue
    - appendPQExpBufferChar
    - PQntuples
    - appendStringLiteralConn
    - destroyPQExpBuffer
    - executeQuery
    - fprintf
    linkageType: ''
    returnType: void
    signature: void dumpUserConfig(PGconn *conn, const char *username)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1562,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1574,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1576,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1582,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1584,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1585,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1588,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1589,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1591,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1591,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1594,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1595,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1598,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - conn
    - patterns
    - names
    argTypes:
    - PGconn*
    - SimpleStringList*
    - SimpleStringList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1551
    functionDepth: 1
    functionLinenumber: 1551
    functionLinenumberEnd: 1599
    functionName: expand_dbname_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQclear
    - exit_nicely
    - processSQLNamePattern
    - PQfinish
    - simple_string_list_append
    - resetPQExpBuffer
    - destroyPQExpBuffer
    - PQgetvalue
    - pg_log_error
    - PQntuples
    - executeQuery
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void expand_dbname_patterns(PGconn *conn,\n\t\t\t\t\t   SimpleStringList
      *patterns,\n\t\t\t\t\t   SimpleStringList *names)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1621,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1627,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1628,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1630,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1632,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1638,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1642,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1644,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1648,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1650,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1651,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1652,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1662,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1662,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1670,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1677,1
    - Dst: runPgDump
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1679,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1681,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1685,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1687,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1692,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1604
    functionDepth: 2
    functionLinenumber: 1604
    functionLinenumberEnd: 1693
    functionName: dumpDatabases
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - runPgDump
    - strcmp
    - PQclear
    - fopen
    - fclose
    - pg_fatal
    - simple_string_list_member
    - free
    - sanitize_line
    - PQgetvalue
    - pg_log_info
    - PQntuples
    - executeQuery
    - fprintf
    linkageType: ''
    returnType: void
    signature: void dumpDatabases(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1707,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1708,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1710,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1718,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1720,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1726,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1727,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1729,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1731,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1733,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1735,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1737,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - dbname
    - create_opts
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1700
    functionDepth: 1
    functionLinenumber: 1700
    functionLinenumberEnd: 1741
    functionName: runPgDump
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - appendShellString
    - printfPQExpBuffer
    - appendConnStrVal
    - appendPQExpBufferStr
    - initPQExpBuffer
    - fflush
    - pg_log_info
    - system
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int runPgDump(const char *dbname, const char *create_opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1759,1
    - Dst: buildShSecLabelQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1762,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1763,1
    - Dst: emitShSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1764,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1766,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - conn
    - catalog_name
    - objectId
    - objtype
    - objname
    - buffer
    argTypes:
    - PGconn*
    - char*
    - Oid
    - char*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1754
    functionDepth: 2
    functionLinenumber: 1754
    functionLinenumberEnd: 1768
    functionName: buildShSecLabels
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 2
    functionsReached:
    - PQclear
    - buildShSecLabelQuery
    - emitShSecLabels
    - createPQExpBuffer
    - destroyPQExpBuffer
    - executeQuery
    linkageType: ''
    returnType: void
    signature: "void buildShSecLabels(PGconn *conn, const char *catalog_name, Oid
      objectId,\n\t\t\t\t const char *objtype, const char *objname,\n\t\t\t\t PQExpBuffer
      buffer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1778,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1780,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1782,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1784,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1784,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1785,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1786,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1787,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - query
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1773
    functionDepth: 1
    functionLinenumber: 1773
    functionLinenumberEnd: 1791
    functionName: executeCommand
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 5
    functionsReached:
    - PQclear
    - pg_log_error
    - PQexec
    - pg_log_error_detail
    - PQfinish
    - PQresultStatus
    - pg_log_info
    - PQerrorMessage
    - exit_nicely
    linkageType: ''
    returnType: void
    signature: void executeCommand(PGconn *conn, const char *query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1801,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1803,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1803,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1804,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1797
    functionDepth: 0
    functionLinenumber: 1797
    functionLinenumberEnd: 1805
    functionName: dumpTimestamp
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 2
    functionsReached:
    - strftime
    - localtime
    - time
    - fprintf
    linkageType: ''
    returnType: void
    signature: void dumpTimestamp(const char *msg)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: filter_init
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1824,1
    - Dst: filter_read_item
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1826,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1830,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1830,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1832,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1833,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1850,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1850,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1851,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1855,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1860,1
    - Dst: filter_free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1863,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - filename
    - pattern
    argTypes:
    - char*
    - SimpleStringList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1816
    functionDepth: 5
    functionLinenumber: 1816
    functionLinenumberEnd: 1864
    functionName: read_dumpall_filters
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - filter_init
    - _
    - filter_read_item
    - simple_string_list_append
    - free
    - pg_log_filter_error
    - filter_object_type_name
    - exit_nicely
    - filter_free
    linkageType: ''
    returnType: void
    signature: void read_dumpall_filters(const char *filename, SimpleStringList *pattern)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - objs
    - numObjs
    argTypes:
    - DumpableObject**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 197
    functionName: sortDumpableObjectsByTypeName
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - qsort
    linkageType: ''
    returnType: void
    signature: void sortDumpableObjectsByTypeName(DumpableObject **objs, int numObjs)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:222,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:241,1
    - Dst: pgTypeNameCompare
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:278,1
    - Dst: pgTypeNameCompare
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:294,1
    - Dst: pgTypeNameCompare
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:297,1
    - Dst: accessMethodNameCompare
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:307,1
    - Dst: accessMethodNameCompare
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:318,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:361,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:372,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:383,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:403,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:416,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:431,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:441,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:452,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:463,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:479,1
    - Dst: oidcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:480,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 114
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 481
    functionName: DOTypeNameCompare
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - oidcmp
    - strcmp
    - Assert
    - pgTypeNameCompare
    - accessMethodNameCompare
    linkageType: ''
    returnType: int
    signature: int DOTypeNameCompare(const void *p1, const void *p2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:494,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:495,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:511,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:516,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:519,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:524,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - typid1
    - typid2
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 484
    functionDepth: 2
    functionLinenumber: 484
    functionLinenumberEnd: 525
    functionName: pgTypeNameCompare
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - Assert
    - findTypeByOid
    - strcmp
    linkageType: ''
    returnType: int
    signature: int pgTypeNameCompare(Oid typid1, Oid typid2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: findAccessMethodByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:537,1
    - Dst: findAccessMethodByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:538,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:543,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - am1
    - am2
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 528
    functionDepth: 2
    functionLinenumber: 528
    functionLinenumberEnd: 548
    functionName: accessMethodNameCompare
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - Assert
    - findAccessMethodByOid
    - strcmp
    linkageType: ''
    returnType: int
    signature: int accessMethodNameCompare(Oid am1, Oid am2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:575,1
    - Dst: TopoSort
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:576,1
    - Dst: findDependencyLoops
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:577,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:579,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:581,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - objs
    - numObjs
    - preBoundaryId
    - postBoundaryId
    argTypes:
    - DumpableObject**
    - int
    - DumpId
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 582
    functionName: sortDumpableObjects
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - memcpy
    - TopoSort
    - pg_malloc_array
    - pg_free
    - findDependencyLoops
    linkageType: ''
    returnType: void
    signature: "void sortDumpableObjects(DumpableObject **objs, int numObjs,\n\t\t\t\t\tDumpId
      preBoundaryId, DumpId postBoundaryId)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getMaxDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:616,1
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:645,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:654,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:655,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:661,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:667,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:683,1
    - Dst: binaryheap_build
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:685,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:703,1
    - Dst: binaryheap_remove_first
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:706,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:716,1
    - Dst: binaryheap_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:736,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:737,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:738,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 4
    argNames:
    - objs
    - numObjs
    - ordering
    - nOrdering
    argTypes:
    - DumpableObject**
    - int
    - DumpableObject**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 610
    functionDepth: 1
    functionLinenumber: 610
    functionLinenumberEnd: 741
    functionName: TopoSort
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - binaryheap_allocate
    - getMaxDumpId
    - pg_malloc_array
    - binaryheap_empty
    - pg_fatal
    - binaryheap_add_unordered
    - pg_malloc0_array
    - binaryheap_free
    - binaryheap_remove_first
    - binaryheap_add
    - pg_free
    - binaryheap_build
    linkageType: ''
    returnType: bool
    signature: "bool TopoSort(DumpableObject **objs,\n\t\t int numObjs,\n\t\t DumpableObject
      **ordering, /* output argument */\n\t\t int *nOrdering)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:790,1
    - Dst: getMaxDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:790,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:791,1
    - Dst: getMaxDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:791,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:792,1
    - Dst: findLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:801,1
    - Dst: repairDependencyLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:811,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:831,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:833,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:834,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:835,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - objs
    - nObjs
    - totObjs
    argTypes:
    - DumpableObject**
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 759
    functionDepth: 1
    functionLinenumber: 759
    functionLinenumberEnd: 836
    functionName: findDependencyLoops
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - getMaxDumpId
    - pg_malloc_array
    - pg_fatal
    - repairDependencyLoop
    - pg_malloc0_array
    - pg_free
    - findLoop
    linkageType: ''
    returnType: void
    signature: void findDependencyLoops(DumpableObject **objs, int nObjs, int totObjs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:910,1
    - Dst: findLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:915,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 6
    argNames:
    - obj
    - startPoint
    - processed
    - searchFailed
    - workspace
    - depth
    argTypes:
    - DumpableObject*
    - DumpId
    - bool*
    - DumpId*
    - DumpableObject**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 855
    functionDepth: 1
    functionLinenumber: 855
    functionLinenumberEnd: 931
    functionName: findLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 2
    functionsReached:
    - findObjectByDumpId
    - findLoop
    linkageType: ''
    returnType: int
    signature: "int findLoop(DumpableObject *obj,\n\t\t DumpId startPoint,\n\t\t bool
      *processed,\n\t\t DumpId *searchFailed,\n\t\t DumpableObject **workspace,\n\t\t
      int depth)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:946,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:951,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - typeobj
    - funcobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 940
    functionDepth: 2
    functionLinenumber: 940
    functionLinenumberEnd: 962
    functionName: repairTypeFuncLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - addObjectDependency
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: void repairTypeFuncLoop(DumpableObject *typeobj, DumpableObject *funcobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - viewobj
    - ruleobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 978
    functionName: repairViewRuleLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairViewRuleLoop(DumpableObject *viewobj,\n\t\t\t\t   DumpableObject
      *ruleobj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:999,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1005,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - viewobj
    - ruleobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 991
    functionDepth: 2
    functionLinenumber: 991
    functionLinenumberEnd: 1008
    functionName: repairViewRuleMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - addObjectDependency
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairViewRuleMultiLoop(DumpableObject *viewobj,\n\t\t\t\t\t\tDumpableObject
      *ruleobj)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1030,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - boundaryobj
    - nextobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1025
    functionDepth: 1
    functionLinenumber: 1025
    functionLinenumberEnd: 1050
    functionName: repairMatViewBoundaryMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairMatViewBoundaryMultiLoop(DumpableObject *boundaryobj,\n\t\t\t\t\t\t\t
      \  DumpableObject *nextobj)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1064,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - boundaryobj
    - nextobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1059
    functionDepth: 1
    functionLinenumber: 1059
    functionLinenumberEnd: 1072
    functionName: repairFunctionBoundaryMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairFunctionBoundaryMultiLoop(DumpableObject *boundaryobj,\n\t\t\t\t\t\t\t\tDumpableObject
      *nextobj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1085,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tableobj
    - constraintobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1080
    functionDepth: 1
    functionLinenumber: 1080
    functionLinenumberEnd: 1086
    functionName: repairTableConstraintLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairTableConstraintLoop(DumpableObject *tableobj,\n\t\t\t\t\t\t
      \ DumpableObject *constraintobj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1102,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1106,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tableobj
    - constraintobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1097
    functionDepth: 2
    functionLinenumber: 1097
    functionLinenumberEnd: 1109
    functionName: repairTableConstraintMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - addObjectDependency
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairTableConstraintMultiLoop(DumpableObject *tableobj,\n\t\t\t\t\t\t\t
      \  DumpableObject *constraintobj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tableobj
    - attrdefobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1120
    functionName: repairTableAttrDefLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairTableAttrDefLoop(DumpableObject *tableobj,\n\t\t\t\t\t
      \  DumpableObject *attrdefobj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1127,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tableobj
    - attrdefobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1122
    functionDepth: 2
    functionLinenumber: 1122
    functionLinenumberEnd: 1132
    functionName: repairTableAttrDefMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - addObjectDependency
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairTableAttrDefMultiLoop(DumpableObject *tableobj,\n\t\t\t\t\t\t\tDumpableObject
      *attrdefobj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - domainobj
    - constraintobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1137
    functionDepth: 1
    functionLinenumber: 1137
    functionLinenumberEnd: 1143
    functionName: repairDomainConstraintLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairDomainConstraintLoop(DumpableObject *domainobj,\n\t\t\t\t\t\t
      \  DumpableObject *constraintobj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1150,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1154,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - domainobj
    - constraintobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1145
    functionDepth: 2
    functionLinenumber: 1145
    functionLinenumberEnd: 1157
    functionName: repairDomainConstraintMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - addObjectDependency
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairDomainConstraintMultiLoop(DumpableObject *domainobj,\n\t\t\t\t\t\t\t\tDumpableObject
      *constraintobj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - partedindex
    - partindex
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1159
    functionDepth: 1
    functionLinenumber: 1159
    functionLinenumberEnd: 1164
    functionName: repairIndexLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    linkageType: ''
    returnType: void
    signature: "void repairIndexLoop(DumpableObject *partedindex,\n\t\t\t\tDumpableObject
      *partindex)"
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: repairTypeFuncLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1185,1
    - Dst: repairTypeFuncLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1192,1
    - Dst: repairViewRuleLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1206,1
    - Dst: repairViewRuleLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1218,1
    - Dst: repairViewRuleMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1237,1
    - Dst: repairMatViewBoundaryMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1260,1
    - Dst: repairMatViewBoundaryMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1275,1
    - Dst: repairFunctionBoundaryMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1297,1
    - Dst: repairTableConstraintLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1312,1
    - Dst: repairTableConstraintLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1321,1
    - Dst: repairTableConstraintMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1338,1
    - Dst: repairTableAttrDefLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1352,1
    - Dst: repairTableAttrDefLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1360,1
    - Dst: repairIndexLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1371,1
    - Dst: repairIndexLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1376,1
    - Dst: repairTableAttrDefMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1393,1
    - Dst: repairDomainConstraintLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1409,1
    - Dst: repairDomainConstraintLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1419,1
    - Dst: repairDomainConstraintMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1437,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1458,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1475,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1475,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1479,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1480,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1481,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1483,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1485,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1493,1
    - Dst: describeDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1498,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1499,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1503,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1505,1
    CyclomaticComplexity: 112
    EdgeCount: 112
    ICount: 163
    argCount: 2
    argNames:
    - loop
    - nLoop
    argTypes:
    - DumpableObject**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1173
    functionDepth: 3
    functionLinenumber: 1173
    functionLinenumberEnd: 1506
    functionName: repairDependencyLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - repairMatViewBoundaryMultiLoop
    - repairFunctionBoundaryMultiLoop
    - repairDomainConstraintLoop
    - ngettext
    - repairTableConstraintLoop
    - pg_log_warning_detail
    - repairViewRuleLoop
    - repairViewRuleMultiLoop
    - repairTypeFuncLoop
    - repairTableConstraintMultiLoop
    - repairTableAttrDefMultiLoop
    - repairDomainConstraintMultiLoop
    - removeObjectDependency
    - pg_log_warning
    - pg_log_warning_hint
    - repairIndexLoop
    - describeDumpableObject
    - repairTableAttrDefLoop
    linkageType: ''
    returnType: void
    signature: "void repairDependencyLoop(DumpableObject **loop,\n\t\t\t\t\t int nLoop)"
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1519,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1524,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1529,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1534,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1539,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1544,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1549,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1554,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1559,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1564,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1569,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1574,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1579,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1584,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1589,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1596,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1601,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1606,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1611,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1616,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1621,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1626,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1631,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1636,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1641,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1646,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1653,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1660,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1665,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1670,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1675,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1680,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1685,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1690,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1695,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1700,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1705,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1710,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1715,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1720,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1725,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1730,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1735,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1740,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1745,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1750,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1755,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1760,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1766,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 148
    argCount: 3
    argNames:
    - obj
    - buf
    - bufsize
    argTypes:
    - DumpableObject*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1513
    functionDepth: 0
    functionLinenumber: 1513
    functionLinenumberEnd: 1770
    functionName: describeDumpableObject
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void describeDumpableObject(DumpableObject *obj, char *buf, int bufsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1773
    functionDepth: 1
    functionLinenumber: 1773
    functionLinenumberEnd: 1780
    functionName: int_cmp
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int int_cmp(void *a, void *b, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:60,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:61,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:72,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:75,1
    - Dst: deflateInit
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:77,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - cs
    argTypes:
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 86
    functionName: DeflateCompressorInit
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    - Assert
    - deflateInit
    - pg_fatal
    - pg_malloc0_object
    - pg_malloc
    linkageType: ''
    returnType: void
    signature: void DeflateCompressorInit(CompressorState *cs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DeflateCompressorCommon
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:99,1
    - Dst: deflateEnd
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:101,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:102,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:104,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:105,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 108
    functionName: DeflateCompressorEnd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - deflateEnd
    - DeflateCompressorCommon
    - pg_free
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void DeflateCompressorEnd(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: deflate
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:120,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:122,1
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:141,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 3
    argNames:
    - AH
    - cs
    - flush
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 150
    functionName: DeflateCompressorCommon
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 1
    functionsReached:
    - deflate
    - CompressorState*::writeF
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void DeflateCompressorCommon(ArchiveHandle *AH, CompressorState *cs,
      bool flush)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DeflateCompressorEnd
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 158
    functionName: EndCompressorGzip
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - DeflateCompressorEnd
    linkageType: ''
    returnType: void
    signature: void EndCompressorGzip(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DeflateCompressorCommon
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - AH
    - cs
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 169
    functionName: WriteDataToArchiveGzip
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - DeflateCompressorCommon
    linkageType: ''
    returnType: void
    signature: "void WriteDataToArchiveGzip(ArchiveHandle *AH, CompressorState *cs,\n\t\t\t\t\t
      \  const void *data, size_t dLen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:181,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:187,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:189,1
    - Dst: inflateInit
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:191,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:192,1
    - Dst: CompressorState*::readF
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:196,1
    - Dst: inflate
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:206,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:208,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:211,1
    - Dst: inflate
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:221,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:223,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:226,1
    - Dst: inflateEnd
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:229,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:230,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:232,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:233,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:234,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 171
    functionDepth: 5
    functionLinenumber: 171
    functionLinenumberEnd: 235
    functionName: ReadDataFromArchiveGzip
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - inflateInit
    - pg_malloc_object
    - CompressorState*::readF
    - pg_fatal
    - inflateEnd
    - ahwrite
    - pg_free
    - pg_malloc
    - inflate
    linkageType: ''
    returnType: void
    signature: void ReadDataFromArchiveGzip(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DeflateCompressorInit
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 255
    functionName: InitCompressorGzip
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 1
    functionsReached:
    - DeflateCompressorInit
    linkageType: ''
    returnType: void
    signature: "void InitCompressorGzip(CompressorState *cs,\n\t\t\t\t   const pg_compress_specification
      compression_spec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gzread
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:273,1
    - Dst: gzeof
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:285,1
    - Dst: gzerror
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:288,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:290,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:291,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 295
    functionName: Gzip_read
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzeof
    - gzerror
    - pg_fatal
    - strerror
    - gzread
    linkageType: ''
    returnType: size_t
    signature: size_t Gzip_read(void *ptr, size_t size, CompressFileHandle *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gzwrite
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:304,1
    - Dst: gzerror
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:306,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:307,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 310
    functionName: Gzip_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzerror
    - gzwrite
    - strerror
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void Gzip_write(const void *ptr, size_t size, CompressFileHandle *CFH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gzgetc
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:319,1
    - Dst: gzeof
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:322,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:323,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 329
    functionName: Gzip_getc
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzeof
    - gzgetc
    - pg_fatal
    linkageType: ''
    returnType: int
    signature: int Gzip_getc(CompressFileHandle *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gzgets
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - char*
    - int
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 337
    functionName: Gzip_gets
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzgets
    linkageType: ''
    returnType: char
    signature: 'char *

      Gzip_gets(char *ptr, int size, CompressFileHandle *CFH)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gzclose
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 347
    functionName: Gzip_close
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzclose
    linkageType: ''
    returnType: bool
    signature: bool Gzip_close(CompressFileHandle *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gzeof
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 355
    functionName: Gzip_eof
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzeof
    linkageType: ''
    returnType: bool
    signature: bool Gzip_eof(CompressFileHandle *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gzerror
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:364,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 369
    functionName: Gzip_get_error
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzerror
    - strerror
    linkageType: ''
    returnType: char
    signature: 'char *

      Gzip_get_error(CompressFileHandle *CFH)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:382,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:386,1
    - Dst: dup
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:390,1
    - Dst: gzdopen
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:394,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:397,1
    - Dst: gzopen
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:403,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - path
    - fd
    - mode
    - CFH
    argTypes:
    - char*
    - int
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 411
    functionName: Gzip_open
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzdopen
    - dup
    - gzopen
    - close
    - strcpy
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool Gzip_open(const char *path, int fd, const char *mode, CompressFileHandle
      *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:420,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:421,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - path
    - mode
    - CFH
    argTypes:
    - char*
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 428
    functionName: Gzip_open_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - pfree
    - psprintf
    - CompressFileHandle*::open_func
    linkageType: ''
    returnType: bool
    signature: bool Gzip_open_write(const char *path, const char *mode, CompressFileHandle
      *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 447
    functionName: InitCompressFileHandleGzip
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void InitCompressFileHandleGzip(CompressFileHandle *CFH,\n\t\t\t\t\t\t
      \  const pg_compress_specification compression_spec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 454
    functionName: InitCompressorGzip
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void InitCompressorGzip(CompressorState *cs,\n\t\t\t\t   const pg_compress_specification
      compression_spec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 461
    functionName: InitCompressFileHandleGzip
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void InitCompressFileHandleGzip(CompressFileHandle *CFH,\n\t\t\t\t\t\t
      \  const pg_compress_specification compression_spec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - major
    - ','
    - minor
    - ','
    - rev
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: MAKE_ARCHIVE_VERSION
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAKE_ARCHIVE_VERSION(major, minor, rev)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - version
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: ARCHIVE_MAJOR
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARCHIVE_MAJOR(version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - version
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: ARCHIVE_MINOR
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARCHIVE_MINOR(version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - version
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: ARCHIVE_REV
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARCHIVE_REV(version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fd
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 110
    functionName: READ_ERROR_EXIT
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_ERROR_EXIT(fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 422
    functionName: ARCHIVE_OPTS
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.h
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARCHIVE_OPTS(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - buf
    - ','
    - str
    - ','
    - AH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 441
    functionName: appendStringLiteralAHX
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: appendStringLiteralAHX(buf,str,AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - buf
    - ','
    - str
    - ','
    - len
    - ','
    - AH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 444
    functionName: appendByteaLiteralAHX
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: appendByteaLiteralAHX(buf,str,len,AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_share_path
      Src: /src/postgres/src/timezone/pgtz.c:53,1
    - Dst: strlcpy
      Src: /src/postgres/src/timezone/pgtz.c:54,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:54,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 62
    functionName: pg_TZDIR
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 2
    functionsReached:
    - get_share_path
    - strlcpy
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_TZDIR(void)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/timezone/pgtz.c:84,1
    - Dst: pg_TZDIR
      Src: /src/postgres/src/timezone/pgtz.c:84,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:85,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:87,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/pgtz.c:103,1
    - Dst: open
      Src: /src/postgres/src/timezone/pgtz.c:104,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/pgtz.c:121,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:125,1
    - Dst: scan_directory_ci
      Src: /src/postgres/src/timezone/pgtz.c:126,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:131,1
    - Dst: strlcpy
      Src: /src/postgres/src/timezone/pgtz.c:139,1
    - Dst: open
      Src: /src/postgres/src/timezone/pgtz.c:141,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - name
    - canonname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 142
    functionName: pg_open_tzfile
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - strchr
    - strlen
    - open
    - strcpy
    - scan_directory_ci
    - pg_TZDIR
    linkageType: ''
    returnType: int
    signature: int pg_open_tzfile(const char *name, char *canonname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/timezone/pgtz.c:158,1
    - Dst: ReadDirExtended
      Src: /src/postgres/src/timezone/pgtz.c:160,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:169,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/timezone/pgtz.c:170,1
    - Dst: strlcpy
      Src: /src/postgres/src/timezone/pgtz.c:173,1
    - Dst: FreeDir
      Src: /src/postgres/src/timezone/pgtz.c:179,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 5
    argNames:
    - dirname
    - fname
    - fnamelen
    - canonname
    - canonnamelen
    argTypes:
    - char*
    - char*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 182
    functionName: scan_directory_ci
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - ReadDirExtended
    - AllocateDir
    - FreeDir
    - pg_strncasecmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: "bool scan_directory_ci(const char *dirname, const char *fname, int
      fnamelen,\n\t\t\t\t  char *canonname, int canonnamelen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/timezone/pgtz.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 217
    functionName: init_timezone_hashtable
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: bool
    signature: bool init_timezone_hashtable(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:232,1
    - Dst: init_timezone_hashtable
      Src: /src/postgres/src/timezone/pgtz.c:236,1
    - Dst: pg_toupper
      Src: /src/postgres/src/timezone/pgtz.c:247,1
    - Dst: hash_search
      Src: /src/postgres/src/timezone/pgtz.c:250,1
    - Dst: pg_tzload
      Src: /src/postgres/src/timezone/pgtz.c:263,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/pgtz.c:265,1
    - Dst: elog
      Src: /src/postgres/src/timezone/pgtz.c:268,1
    - Dst: hash_search
      Src: /src/postgres/src/timezone/pgtz.c:275,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/pgtz.c:281,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/pgtz.c:282,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - tzname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 285
    functionName: pg_tzset
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - elog
    - hash_search
    - strcmp
    - memcpy
    - init_timezone_hashtable
    - pg_toupper
    - pg_tzload
    - strlen
    - strcpy
    linkageType: ''
    returnType: pg_tz
    signature: 'pg_tz *

      pg_tzset(const char *tzname)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:306,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:311,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:311,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:312,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:316,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:316,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:317,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:321,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:324,1
    - Dst: pg_tzset
      Src: /src/postgres/src/timezone/pgtz.c:327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - gmtoffset
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 328
    functionName: pg_tzset_offset
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - strlen
    - pg_tzset
    - snprintf
    linkageType: ''
    returnType: pg_tz
    signature: 'pg_tz *

      pg_tzset_offset(long gmtoffset)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_tzset
      Src: /src/postgres/src/timezone/pgtz.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 340
    functionDepth: 3
    functionLinenumber: 340
    functionLinenumberEnd: 352
    functionName: pg_timezone_initialize
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - pg_tzset
    linkageType: ''
    returnType: void
    signature: void pg_timezone_initialize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/timezone/pgtz.c:379,1
    - Dst: pstrdup
      Src: /src/postgres/src/timezone/pgtz.c:380,1
    - Dst: pg_TZDIR
      Src: /src/postgres/src/timezone/pgtz.c:380,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:382,1
    - Dst: AllocateDir
      Src: /src/postgres/src/timezone/pgtz.c:385,1
    - Dst: ereport
      Src: /src/postgres/src/timezone/pgtz.c:387,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/timezone/pgtz.c:388,1
    - Dst: errmsg
      Src: /src/postgres/src/timezone/pgtz.c:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 391
    functionName: pg_tzenumerate_start
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - AllocateDir
    - pstrdup
    - ereport
    - strlen
    - errmsg
    - errcode_for_file_access
    - pg_TZDIR
    linkageType: ''
    returnType: pg_tzenum
    signature: 'pg_tzenum *

      pg_tzenumerate_start(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FreeDir
      Src: /src/postgres/src/timezone/pgtz.c:398,1
    - Dst: pfree
      Src: /src/postgres/src/timezone/pgtz.c:399,1
    - Dst: pfree
      Src: /src/postgres/src/timezone/pgtz.c:402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - dir
    argTypes:
    - pg_tzenum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 403
    functionName: pg_tzenumerate_end
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - pfree
    - FreeDir
    linkageType: ''
    returnType: void
    signature: void pg_tzenumerate_end(pg_tzenum *dir)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ReadDir
      Src: /src/postgres/src/timezone/pgtz.c:413,1
    - Dst: FreeDir
      Src: /src/postgres/src/timezone/pgtz.c:418,1
    - Dst: pfree
      Src: /src/postgres/src/timezone/pgtz.c:419,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:427,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/timezone/pgtz.c:430,1
    - Dst: ereport
      Src: /src/postgres/src/timezone/pgtz.c:434,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/timezone/pgtz.c:435,1
    - Dst: pstrdup
      Src: /src/postgres/src/timezone/pgtz.c:437,1
    - Dst: AllocateDir
      Src: /src/postgres/src/timezone/pgtz.c:438,1
    - Dst: ereport
      Src: /src/postgres/src/timezone/pgtz.c:440,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/timezone/pgtz.c:441,1
    - Dst: errmsg
      Src: /src/postgres/src/timezone/pgtz.c:442,1
    - Dst: pg_tzload
      Src: /src/postgres/src/timezone/pgtz.c:455,1
    - Dst: pg_tz_acceptable
      Src: /src/postgres/src/timezone/pgtz.c:461,1
    - Dst: strlcpy
      Src: /src/postgres/src/timezone/pgtz.c:468,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 1
    argNames:
    - dir
    argTypes:
    - pg_tzenum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 477
    functionName: pg_tzenumerate_next
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - errmsg_internal
    - pfree
    - AllocateDir
    - FreeDir
    - ereport
    - pstrdup
    - pg_tzload
    - get_dirent_type
    - errmsg
    - ReadDir
    - pg_tz_acceptable
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: pg_tz
    signature: 'pg_tz *

      pg_tzenumerate_next(pg_tzenum *dir)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: UNCONST
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNCONST(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sp
    argTypes:
    - ATTRIBUTE_MAYBE_UNUSED*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: leapcount
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int leapcount(ATTRIBUTE_MAYBE_UNUSED struct state const *sp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sp
    - leapcnt
    argTypes:
    - ATTRIBUTE_MAYBE_UNUSED*
    - ATTRIBUTE_MAYBE_UNUSED
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: set_leapcount
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void set_leapcount(ATTRIBUTE_MAYBE_UNUSED struct state *sp,\n\t\t\t
      \ ATTRIBUTE_MAYBE_UNUSED int leapcnt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unreachable
      Src: /src/postgres/src/timezone/localtime.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sp
    - int
    argTypes:
    - ATTRIBUTE_MAYBE_UNUSED*
    - ATTRIBUTE_MAYBE_UNUSED
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 98
    functionName: lsinfo
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - unreachable
    linkageType: ''
    returnType: struct lsinfo
    signature: "struct lsinfo lsinfo(ATTRIBUTE_MAYBE_UNUSED struct state const *sp,\n\t
      \  ATTRIBUTE_MAYBE_UNUSED int i)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sp
    - int
    - struct
    argTypes:
    - ATTRIBUTE_MAYBE_UNUSED*
    - ATTRIBUTE_MAYBE_UNUSED
    - ATTRIBUTE_MAYBE_UNUSED
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 107
    functionName: set_lsinfo
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void set_lsinfo(ATTRIBUTE_MAYBE_UNUSED struct state *sp,\n\t\t   ATTRIBUTE_MAYBE_UNUSED
      int i,\n\t\t   ATTRIBUTE_MAYBE_UNUSED struct lsinfo lsinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - s
    - utoff
    - isdst
    - desigidx
    argTypes:
    - struct ttinfo*
    - int_fast32_t
    - bool
    - desigidx_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 160
    functionName: init_ttinfo
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void init_ttinfo(struct ttinfo *s, int_fast32_t utoff, bool isdst,\n\t\t\tdesigidx_type
      desigidx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - codep
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 184
    functionName: detzcode
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int_fast32_2s
    signature: int_fast32_2s detzcode(const char *const codep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TWOS_COMPLEMENT
      Src: /src/postgres/src/timezone/localtime.c:194,1
    - Dst: TWOS_COMPLEMENT
      Src: /src/postgres/src/timezone/localtime.c:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - codep
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 210
    functionName: detzcode64
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - TWOS_COMPLEMENT
    linkageType: ''
    returnType: int_fast64_t
    signature: int_fast64_t detzcode64(const char *const codep)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: pg_open_tzfile
      Src: /src/postgres/src/timezone/localtime.c:291,1
    - Dst: read
      Src: /src/postgres/src/timezone/localtime.c:296,1
    - Dst: close
      Src: /src/postgres/src/timezone/localtime.c:301,1
    - Dst: close
      Src: /src/postgres/src/timezone/localtime.c:304,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:313,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:314,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:315,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:316,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:317,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:318,1
    - Dst: set_leapcount
      Src: /src/postgres/src/timezone/localtime.c:354,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:368,1
    - Dst: detzcode64
      Src: /src/postgres/src/timezone/localtime.c:368,1
    - Dst: TYPE_SIGNED
      Src: /src/postgres/src/timezone/localtime.c:374,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:405,1
    - Dst: memset
      Src: /src/postgres/src/timezone/localtime.c:434,1
    - Dst: leapcount
      Src: /src/postgres/src/timezone/localtime.c:438,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:440,1
    - Dst: detzcode64
      Src: /src/postgres/src/timezone/localtime.c:440,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:441,1
    - Dst: set_lsinfo
      Src: /src/postgres/src/timezone/localtime.c:474,1
    - Dst: set_leapcount
      Src: /src/postgres/src/timezone/localtime.c:478,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/localtime.c:511,1
    - Dst: tzparse
      Src: /src/postgres/src/timezone/localtime.c:524,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/localtime.c:543,1
    - Dst: strnlen
      Src: /src/postgres/src/timezone/localtime.c:551,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/localtime.c:557,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:586,1
    - Dst: leapcorr
      Src: /src/postgres/src/timezone/localtime.c:586,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 160
    argCount: 5
    argNames:
    - name
    - canonname
    - sp
    - tzloadflags
    - lspp
    argTypes:
    - char*
    - char*
    - struct state*
    - char
    - union local_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 609
    functionName: tzloadbody
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - strnlen
    - leapcorr
    - memcpy
    - strcmp
    - detzcode64
    - detzcode
    - memmove
    - tzparse
    - pg_open_tzfile
    - leapcount
    - set_leapcount
    - memset
    - close
    - TYPE_SIGNED
    - increment_overflow_time
    - set_lsinfo
    - read
    linkageType: ''
    returnType: int
    signature: "int tzloadbody(char const *name, char *canonname,\n\t\t   struct state
      *sp, char tzloadflags,\n\t\t   union local_storage **lspp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tzloadbody
      Src: /src/postgres/src/timezone/localtime.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - name
    - canonname
    - sp
    - tzloadflags
    argTypes:
    - char*
    - char*
    - struct state*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 617
    functionDepth: 3
    functionLinenumber: 617
    functionLinenumberEnd: 626
    functionName: tzload
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 3
    functionsReached:
    - tzloadbody
    linkageType: ''
    returnType: int
    signature: int tzload(char const *name, char *canonname, struct state *sp, char
      tzloadflags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 638
    functionDepth: 0
    functionLinenumber: 638
    functionLinenumberEnd: 642
    functionName: is_digit
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_digit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_digit
      Src: /src/postgres/src/timezone/localtime.c:655,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - strp
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 650
    functionDepth: 0
    functionLinenumber: 650
    functionLinenumberEnd: 659
    functionName: getzname
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - is_digit
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833
    signature: 'ATTRIBUTE_PURE_114833 *

      getzname(const char *strp)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - strp
    - delim
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 679
    functionName: getqzname
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833
    signature: 'ATTRIBUTE_PURE_114833 *

      getqzname(const char *strp, const int delim)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_digit
      Src: /src/postgres/src/timezone/localtime.c:694,1
    - Dst: is_digit
      Src: /src/postgres/src/timezone/localtime.c:703,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - strp
    - nump
    - min
    - max
    argTypes:
    - char*
    - int*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 708
    functionName: getnum
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - is_digit
    linkageType: ''
    returnType: char
    signature: 'char *

      getnum(const char *strp, int *const nump, const int min, const int max)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:729,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:736,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:744,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - strp
    - secsp
    argTypes:
    - char*
    - int_fast32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 718
    functionDepth: 1
    functionLinenumber: 718
    functionLinenumberEnd: 751
    functionName: getsecs
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - getnum
    linkageType: ''
    returnType: char
    signature: 'char *

      getsecs(const char *strp, int_fast32_t *const secsp)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getsecs
      Src: /src/postgres/src/timezone/localtime.c:772,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - strp
    - offsetp
    argTypes:
    - char*
    - int_fast32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 778
    functionName: getoffset
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - getsecs
    linkageType: ''
    returnType: char
    signature: 'char *

      getoffset(const char *strp, int_fast32_t *const offsetp)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:798,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:807,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:812,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:817,1
    - Dst: is_digit
      Src: /src/postgres/src/timezone/localtime.c:819,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:825,1
    - Dst: getoffset
      Src: /src/postgres/src/timezone/localtime.c:837,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - strp
    - rulep
    argTypes:
    - char*
    - struct rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 788
    functionDepth: 3
    functionLinenumber: 788
    functionLinenumberEnd: 842
    functionName: getrule
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - getnum
    - getoffset
    - is_digit
    linkageType: ''
    returnType: char
    signature: 'char *

      getrule(const char *strp, struct rule *const rulep)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:863,1
    - Dst: unreachable
      Src: /src/postgres/src/timezone/localtime.c:932,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 3
    argNames:
    - year
    - rulep
    - offset
    argTypes:
    - int
    - struct rule*
    - int_fast32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 849
    functionDepth: 1
    functionLinenumber: 849
    functionLinenumberEnd: 941
    functionName: transtime
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - unreachable
    - isleap
    linkageType: ''
    returnType: int_fast32_t
    signature: "int_fast32_t transtime(const int year, const struct rule *const rulep,\n\t\t
      \ const int_fast32_t offset)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: getqzname
      Src: /src/postgres/src/timezone/localtime.c:967,1
    - Dst: getzname
      Src: /src/postgres/src/timezone/localtime.c:975,1
    - Dst: getoffset
      Src: /src/postgres/src/timezone/localtime.c:980,1
    - Dst: set_leapcount
      Src: /src/postgres/src/timezone/localtime.c:988,1
    - Dst: leapcount
      Src: /src/postgres/src/timezone/localtime.c:988,1
    - Dst: leapcount
      Src: /src/postgres/src/timezone/localtime.c:989,1
    - Dst: leapcount
      Src: /src/postgres/src/timezone/localtime.c:993,1
    - Dst: set_lsinfo
      Src: /src/postgres/src/timezone/localtime.c:994,1
    - Dst: lsinfo
      Src: /src/postgres/src/timezone/localtime.c:994,1
    - Dst: lsinfo
      Src: /src/postgres/src/timezone/localtime.c:995,1
    - Dst: leapcount
      Src: /src/postgres/src/timezone/localtime.c:995,1
    - Dst: set_leapcount
      Src: /src/postgres/src/timezone/localtime.c:999,1
    - Dst: getqzname
      Src: /src/postgres/src/timezone/localtime.c:1015,1
    - Dst: getzname
      Src: /src/postgres/src/timezone/localtime.c:1024,1
    - Dst: getoffset
      Src: /src/postgres/src/timezone/localtime.c:1032,1
    - Dst: getrule
      Src: /src/postgres/src/timezone/localtime.c:1044,1
    - Dst: getrule
      Src: /src/postgres/src/timezone/localtime.c:1049,1
    - Dst: init_ttinfo
      Src: /src/postgres/src/timezone/localtime.c:1057,1
    - Dst: init_ttinfo
      Src: /src/postgres/src/timezone/localtime.c:1058,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1066,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:1070,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1082,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:1086,1
    - Dst: increment_overflow
      Src: /src/postgres/src/timezone/localtime.c:1087,1
    - Dst: increment_overflow
      Src: /src/postgres/src/timezone/localtime.c:1095,1
    - Dst: transtime
      Src: /src/postgres/src/timezone/localtime.c:1100,1
    - Dst: transtime
      Src: /src/postgres/src/timezone/localtime.c:1101,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1102,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:1119,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:1124,1
    - Dst: increment_overflow
      Src: /src/postgres/src/timezone/localtime.c:1134,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:1137,1
    - Dst: init_ttinfo
      Src: /src/postgres/src/timezone/localtime.c:1155,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/localtime.c:1159,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/localtime.c:1164,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 138
    argCount: 3
    argNames:
    - name
    - sp
    - basep
    argTypes:
    - char*
    - struct state*
    - struct state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 948
    functionDepth: 4
    functionLinenumber: 948
    functionLinenumberEnd: 1169
    functionName: tzparse
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - lsinfo
    - memcpy
    - transtime
    - getrule
    - leapcount
    - set_leapcount
    - init_ttinfo
    - isleap
    - increment_overflow
    - increment_overflow_time
    - getzname
    - getoffset
    - set_lsinfo
    - getqzname
    linkageType: ''
    returnType: bool
    signature: bool tzparse(const char *name, struct state *sp, struct state const
      *basep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tzparse
      Src: /src/postgres/src/timezone/localtime.c:1175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sp
    argTypes:
    - struct state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1171
    functionDepth: 5
    functionLinenumber: 1171
    functionLinenumberEnd: 1176
    functionName: gmtload
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - tzparse
    linkageType: ''
    returnType: void
    signature: void gmtload(struct state *const sp)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: gmtsub
      Src: /src/postgres/src/timezone/localtime.c:1195,1
    - Dst: localsub
      Src: /src/postgres/src/timezone/localtime.c:1224,1
    - Dst: ckd_sub
      Src: /src/postgres/src/timezone/localtime.c:1229,1
    - Dst: ckd_add
      Src: /src/postgres/src/timezone/localtime.c:1231,1
    - Dst: timesub
      Src: /src/postgres/src/timezone/localtime.c:1276,1
    - Dst: UNCONST
      Src: /src/postgres/src/timezone/localtime.c:1281,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 47
    argCount: 3
    argNames:
    - sp
    - timep
    - tmp
    argTypes:
    - struct state*
    - pg_time_t*
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1185
    functionDepth: 1
    functionLinenumber: 1185
    functionLinenumberEnd: 1285
    functionName: localsub
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - gmtsub
    - ckd_sub
    - timesub
    - localsub
    - ckd_add
    - UNCONST
    linkageType: ''
    returnType: struct pg_tm
    signature: "struct pg_tm *\nlocalsub(struct state const *sp, pg_time_t const *timep,\n\t\t
      struct pg_tm *const tmp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localsub
      Src: /src/postgres/src/timezone/localtime.c:1291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - timep
    - tz
    argTypes:
    - pg_time_t*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1288
    functionDepth: 2
    functionLinenumber: 1288
    functionLinenumberEnd: 1292
    functionName: pg_localtime
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - localsub
    linkageType: ''
    returnType: struct pg_tm
    signature: 'struct pg_tm *

      pg_localtime(const pg_time_t *timep, const pg_tz *tz)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/timezone/localtime.c:1313,1
    - Dst: gmtload
      Src: /src/postgres/src/timezone/localtime.c:1316,1
    - Dst: timesub
      Src: /src/postgres/src/timezone/localtime.c:1319,1
    - Dst: UNCONST
      Src: /src/postgres/src/timezone/localtime.c:1326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - timep
    - offset
    - tmp
    argTypes:
    - pg_time_t*
    - int_fast32_t
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1330
      start: 1301
    functionDepth: 6
    functionLinenumber: 1301
    functionLinenumberEnd: 1330
    functionName: gmtsub
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - gmtload
    - malloc
    - UNCONST
    - timesub
    linkageType: ''
    returnType: struct pg_tm
    signature: "struct pg_tm *\ngmtsub(pg_time_t const *timep,\n\t   int_fast32_t
      offset, struct pg_tm *tmp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gmtsub
      Src: /src/postgres/src/timezone/localtime.c:1335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timep
    argTypes:
    - pg_time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1332
    functionDepth: 7
    functionLinenumber: 1332
    functionLinenumberEnd: 1336
    functionName: pg_gmtime
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - gmtsub
    linkageType: ''
    returnType: struct pg_tm
    signature: 'struct pg_tm *

      pg_gmtime(const pg_time_t *timep)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - y
    argTypes:
    - pg_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1343
    functionDepth: 0
    functionLinenumber: 1343
    functionLinenumberEnd: 1347
    functionName: leaps_thru_end_of_nonneg
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pg_time_t
    signature: pg_time_t leaps_thru_end_of_nonneg(pg_time_t y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: leaps_thru_end_of_nonneg
      Src: /src/postgres/src/timezone/localtime.c:1353,1
    - Dst: leaps_thru_end_of_nonneg
      Src: /src/postgres/src/timezone/localtime.c:1354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - y
    argTypes:
    - pg_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1349
    functionDepth: 1
    functionLinenumber: 1349
    functionLinenumberEnd: 1355
    functionName: leaps_thru_end_of
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - leaps_thru_end_of_nonneg
    linkageType: ''
    returnType: pg_time_t
    signature: pg_time_t leaps_thru_end_of(pg_time_t y)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: leapcount
      Src: /src/postgres/src/timezone/localtime.c:1379,1
    - Dst: lsinfo
      Src: /src/postgres/src/timezone/localtime.c:1382,1
    - Dst: lsinfo
      Src: /src/postgres/src/timezone/localtime.c:1387,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1421,1
    - Dst: leaps_thru_end_of
      Src: /src/postgres/src/timezone/localtime.c:1428,1
    - Dst: leaps_thru_end_of
      Src: /src/postgres/src/timezone/localtime.c:1429,1
    - Dst: ckd_add
      Src: /src/postgres/src/timezone/localtime.c:1436,1
    - Dst: TYPE_SIGNED
      Src: /src/postgres/src/timezone/localtime.c:1442,1
    - Dst: TYPE_SIGNED
      Src: /src/postgres/src/timezone/localtime.c:1448,1
    - Dst: leaps_thru_end_of
      Src: /src/postgres/src/timezone/localtime.c:1465,1
    - Dst: leaps_thru_end_of
      Src: /src/postgres/src/timezone/localtime.c:1466,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1482,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 4
    argNames:
    - timep
    - offset
    - sp
    - tmp
    argTypes:
    - pg_time_t*
    - int_fast32_t
    - struct state*
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1357
    functionDepth: 2
    functionLinenumber: 1357
    functionLinenumberEnd: 1491
    functionName: timesub
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 2
    functionsReached:
    - lsinfo
    - leaps_thru_end_of
    - ckd_add
    - leapcount
    - isleap
    - TYPE_SIGNED
    linkageType: ''
    returnType: struct pg_tm
    signature: "struct pg_tm *\ntimesub(const pg_time_t *timep, int_fast32_t offset,\n\t\tconst
      struct state *sp, struct pg_tm *tmp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ckd_add
      Src: /src/postgres/src/timezone/localtime.c:1514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ip
    - j
    argTypes:
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1510
    functionDepth: 1
    functionLinenumber: 1510
    functionLinenumberEnd: 1530
    functionName: increment_overflow
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - ckd_add
    linkageType: ''
    returnType: bool
    signature: bool increment_overflow(int *ip, int j)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ckd_add
      Src: /src/postgres/src/timezone/localtime.c:1536,1
    - Dst: TYPE_SIGNED
      Src: /src/postgres/src/timezone/localtime.c:1545,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - tp
    - j
    argTypes:
    - pg_time_t*
    - int_fast32_2s
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1532
    functionDepth: 1
    functionLinenumber: 1532
    functionLinenumberEnd: 1551
    functionName: increment_overflow_time
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 2
    functionsReached:
    - ckd_add
    - TYPE_SIGNED
    linkageType: ''
    returnType: bool
    signature: bool increment_overflow_time(pg_time_t *tp, int_fast32_2s j)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: leapcount
      Src: /src/postgres/src/timezone/localtime.c:1558,1
    - Dst: lsinfo
      Src: /src/postgres/src/timezone/localtime.c:1561,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - sp
    - t
    argTypes:
    - struct state*
    - pg_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1553
    functionDepth: 2
    functionLinenumber: 1553
    functionLinenumberEnd: 1567
    functionName: leapcorr
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - lsinfo
    - leapcount
    linkageType: ''
    returnType: int_fast32_2s
    signature: int_fast32_2s leapcorr(struct state const *sp, pg_time_t t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/localtime.c:1592,1
    - Dst: gmtload
      Src: /src/postgres/src/timezone/localtime.c:1594,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/localtime.c:1597,1
    - Dst: tzload
      Src: /src/postgres/src/timezone/localtime.c:1599,1
    - Dst: tzparse
      Src: /src/postgres/src/timezone/localtime.c:1601,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/localtime.c:1608,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - name
    - canonname
    - sp
    argTypes:
    - char*
    - char*
    - struct state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1589
    functionDepth: 6
    functionLinenumber: 1589
    functionLinenumberEnd: 1611
    functionName: pg_tzload
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 3
    functionsReached:
    - tzload
    - strcmp
    - tzparse
    - gmtload
    - strcpy
    linkageType: ''
    returnType: bool
    signature: bool pg_tzload(const char *name, char *canonname, struct state *sp)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pg_next_dst_boundary
      Src: /src/postgres/src/timezone/localtime.c:1688,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 67
    argCount: 7
    argNames:
    - timep
    - before_gmtoff
    - before_isdst
    - boundary
    - after_gmtoff
    - after_isdst
    - tz
    argTypes:
    - pg_time_t*
    - long int*
    - int*
    - pg_time_t*
    - long int*
    - int*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1750
      start: 1633
    functionDepth: 1
    functionLinenumber: 1633
    functionLinenumberEnd: 1750
    functionName: pg_next_dst_boundary
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - pg_next_dst_boundary
    linkageType: ''
    returnType: int
    signature: "int pg_next_dst_boundary(const pg_time_t *timep,\n\t\t\t\t\t long
      int *before_gmtoff,\n\t\t\t\t\t int *before_isdst,\n\t\t\t\t\t pg_time_t *boundary,\n\t\t\t\t\t
      long int *after_gmtoff,\n\t\t\t\t\t int *after_isdst,\n\t\t\t\t\t const pg_tz
      *tz)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/localtime.c:1791,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 5
    argNames:
    - abbrev
    - timep
    - gmtoff
    - isdst
    - tz
    argTypes:
    - char*
    - pg_time_t*
    - long int*
    - int*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1868
      start: 1766
    functionDepth: 0
    functionLinenumber: 1766
    functionLinenumberEnd: 1868
    functionName: pg_interpret_timezone_abbrev
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool pg_interpret_timezone_abbrev(const char *abbrev,\n\t\t\t\t\t\t\t
      const pg_time_t *timep,\n\t\t\t\t\t\t\t long int *gmtoff,\n\t\t\t\t\t\t\t int
      *isdst,\n\t\t\t\t\t\t\t const pg_tz *tz)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/localtime.c:1904,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 5
    argNames:
    - abbrev
    - isfixed
    - gmtoff
    - isdst
    - tz
    argTypes:
    - char*
    - bool*
    - long int*
    - int*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1944
      start: 1884
    functionDepth: 0
    functionLinenumber: 1884
    functionLinenumberEnd: 1944
    functionName: pg_timezone_abbrev_is_known
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool pg_timezone_abbrev_is_known(const char *abbrev,\n\t\t\t\t\t\t\tbool
      *isfixed,\n\t\t\t\t\t\t\tlong int *gmtoff,\n\t\t\t\t\t\t\tint *isdst,\n\t\t\t\t\t\t\tconst
      pg_tz *tz)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - indx
    - tz
    argTypes:
    - int*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1959
    functionDepth: 0
    functionLinenumber: 1959
    functionLinenumberEnd: 1982
    functionName: pg_get_next_timezone_abbrev
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *\npg_get_next_timezone_abbrev(int *indx,\n\t\t\t\t\t\t\tconst
      pg_tz *tz)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - tz
    - gmtoff
    argTypes:
    - pg_tz*
    - long int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2007
      start: 1988
    functionDepth: 0
    functionLinenumber: 1988
    functionLinenumberEnd: 2007
    functionName: pg_get_timezone_offset
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pg_get_timezone_offset(const pg_tz *tz, long int *gmtoff)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tz
    argTypes:
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2018
      start: 2012
    functionDepth: 0
    functionLinenumber: 2012
    functionLinenumberEnd: 2018
    functionName: pg_get_timezone_name
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_get_timezone_name(pg_tz *tz)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_localtime
      Src: /src/postgres/src/timezone/localtime.c:2039,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - tz
    argTypes:
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 2027
    functionDepth: 3
    functionLinenumber: 2027
    functionLinenumberEnd: 2044
    functionName: pg_tz_acceptable
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 3
    functionsReached:
    - pg_localtime
    linkageType: ''
    returnType: bool
    signature: bool pg_tz_acceptable(pg_tz *tz)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:135,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - s
    - maxsize
    - format
    - t
    argTypes:
    - char*
    - size_t
    - char*
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 153
    functionName: pg_strftime
    functionSourceFile: /src/postgres/src/timezone/strftime.c
    functionUses: 0
    functionsReached:
    - _fmt
    linkageType: ''
    returnType: size_t
    signature: size_t pg_strftime(char *s, size_t maxsize, const char *format, const
      struct pg_tm *t)
  - BBCount: 61
    BranchProfiles: []
    Callsites:
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:179,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:185,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:191,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:198,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:210,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:217,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:225,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:228,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:241,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:244,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:247,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:250,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:255,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:266,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:274,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:285,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:290,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:293,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:296,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:299,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:305,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:308,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:311,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:314,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:317,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:320,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:331,1
    - Dst: isleap_sum
      Src: /src/postgres/src/timezone/strftime.c:373,1
    - Dst: isleap_sum
      Src: /src/postgres/src/timezone/strftime.c:405,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:410,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:415,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:420,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:431,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:434,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:441,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:444,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:450,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:459,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:464,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:470,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:498,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:502,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:506,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 196
    argCount: 5
    argNames:
    - format
    - t
    - pt
    - ptlim
    - warnp
    argTypes:
    - char*
    - struct pg_tm*
    - char*
    - char*
    - enum warn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 518
    functionName: _fmt
    functionSourceFile: /src/postgres/src/timezone/strftime.c
    functionUses: 2
    functionsReached:
    - isleap_sum
    - _fmt
    - _conv
    - _add
    - _yconv
    linkageType: ''
    returnType: char
    signature: "char *\n_fmt(const char *format, const struct pg_tm *t, char *pt,\n\t
      const char *ptlim, enum warn *warnp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INT_STRLEN_MAXIMUM
      Src: /src/postgres/src/timezone/strftime.c:523,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/strftime.c:525,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - n
    - format
    - pt
    - ptlim
    argTypes:
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 527
    functionName: _conv
    functionSourceFile: /src/postgres/src/timezone/strftime.c
    functionUses: 1
    functionsReached:
    - INT_STRLEN_MAXIMUM
    - _add
    - sprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      _conv(int n, const char *format, char *pt, const char *ptlim)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - str
    - pt
    - ptlim
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 529
    functionDepth: 0
    functionLinenumber: 529
    functionLinenumberEnd: 535
    functionName: _add
    functionSourceFile: /src/postgres/src/timezone/strftime.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      _add(const char *str, char *pt, const char *ptlim)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:570,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:572,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:575,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 6
    argNames:
    - a
    - b
    - convert_top
    - convert_yy
    - pt
    - ptlim
    argTypes:
    - int
    - int
    - bool
    - bool
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 577
    functionName: _yconv
    functionSourceFile: /src/postgres/src/timezone/strftime.c
    functionUses: 1
    functionsReached:
    - _conv
    - _add
    linkageType: ''
    returnType: char
    signature: "char *\n_yconv(int a, int b, bool convert_top, bool convert_yy,\n\t
      \  char *pt, const char *ptlim)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: alignof
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: alignof(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - targetdir
    - ','
    - target
    - ','
    - linknamedir
    - ','
    - linkname
    - ','
    - flag
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 170
    functionName: linkat
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: linkat(targetdir, target, linknamedir, linkname, flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 215
    functionName: is_digit
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_digit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:500,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:500,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 502
    functionName: memory_exhausted
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - exit
    - _
    - fprintf
    linkageType: ''
    returnType: ATTRIBUTE_NORETURN
    signature: ATTRIBUTE_NORETURN memory_exhausted(const char *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memory_exhausted
      Src: /src/postgres/src/timezone/zic.c:507,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 508
    functionName: size_overflow
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - memory_exhausted
    - _
    linkageType: ''
    returnType: ATTRIBUTE_NORETURN
    signature: ATTRIBUTE_NORETURN size_overflow(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ckd_add
      Src: /src/postgres/src/timezone/zic.c:517,1
    - Dst: size_overflow
      Src: /src/postgres/src/timezone/zic.c:523,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 524
    functionName: size_sum
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - size_overflow
    - ckd_add
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833_HACK
    signature: ATTRIBUTE_PURE_114833_HACK size_sum(size_t a, size_t b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ckd_mul
      Src: /src/postgres/src/timezone/zic.c:533,1
    - Dst: size_overflow
      Src: /src/postgres/src/timezone/zic.c:541,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - nitems
    - itemsize
    argTypes:
    - ptrdiff_t
    - ptrdiff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 542
    functionName: size_product
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - ckd_mul
    - size_overflow
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833_HACK
    signature: ATTRIBUTE_PURE_114833_HACK size_product(ptrdiff_t nitems, ptrdiff_t
      itemsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size_sum
      Src: /src/postgres/src/timezone/zic.c:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - size
    - alignment
    argTypes:
    - ptrdiff_t
    - ptrdiff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 544
    functionDepth: 3
    functionLinenumber: 544
    functionLinenumberEnd: 552
    functionName: align_to
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - size_sum
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833_HACK
    signature: ATTRIBUTE_PURE_114833_HACK align_to(ptrdiff_t size, ptrdiff_t alignment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memory_exhausted
      Src: /src/postgres/src/timezone/zic.c:558,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 560
    functionName: memcheck
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strerror
    - memory_exhausted
    linkageType: ''
    returnType: void
    signature: 'void *

      memcheck(void *ptr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcheck
      Src: /src/postgres/src/timezone/zic.c:565,1
    - Dst: malloc
      Src: /src/postgres/src/timezone/zic.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 562
    functionDepth: 2
    functionLinenumber: 562
    functionLinenumberEnd: 566
    functionName: xmalloc
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - malloc
    - memcheck
    linkageType: ''
    returnType: void
    signature: 'void *

      xmalloc(size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcheck
      Src: /src/postgres/src/timezone/zic.c:571,1
    - Dst: realloc
      Src: /src/postgres/src/timezone/zic.c:571,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 572
    functionName: xrealloc
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - realloc
    - memcheck
    linkageType: ''
    returnType: void
    signature: 'void *

      xrealloc(void *ptr, size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcheck
      Src: /src/postgres/src/timezone/zic.c:577,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 574
    functionDepth: 2
    functionLinenumber: 574
    functionLinenumberEnd: 578
    functionName: xstrdup
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strdup
    - memcheck
    linkageType: ''
    returnType: char
    signature: 'char *

      xstrdup(char const *str)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ckd_add
      Src: /src/postgres/src/timezone/zic.c:587,1
    - Dst: ckd_mul
      Src: /src/postgres/src/timezone/zic.c:588,1
    - Dst: memory_exhausted
      Src: /src/postgres/src/timezone/zic.c:597,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:597,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - nitems_alloc
    - itemsize
    argTypes:
    - ptrdiff_t*
    - ptrdiff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 598
    functionName: grow_nitems_alloc
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - ckd_mul
    - memory_exhausted
    - ckd_add
    - _
    linkageType: ''
    returnType: ptrdiff_t
    signature: ptrdiff_t grow_nitems_alloc(ptrdiff_t *nitems_alloc, ptrdiff_t itemsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xrealloc
      Src: /src/postgres/src/timezone/zic.c:606,1
    - Dst: grow_nitems_alloc
      Src: /src/postgres/src/timezone/zic.c:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ptr
    - itemsize
    - nitems
    - nitems_alloc
    argTypes:
    - void*
    - ptrdiff_t
    - ptrdiff_t
    - ptrdiff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 600
    functionDepth: 3
    functionLinenumber: 600
    functionLinenumberEnd: 607
    functionName: growalloc
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - grow_nitems_alloc
    - xrealloc
    linkageType: ''
    returnType: void
    signature: "void *\ngrowalloc(void *ptr, ptrdiff_t itemsize, ptrdiff_t nitems,\n\t\t
      \ ptrdiff_t *nitems_alloc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:627,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:632,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 634
    functionName: filename
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 4
    functionsReached:
    - _
    - strcmp
    linkageType: ''
    returnType: char
    signature: 'char *

      filename(int i)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - fnum
    - num
    - rfnum
    - rnum
    argTypes:
    - int
    - lineno_t
    - int
    - lineno_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 643
    functionName: eats
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void eats(int fnum, lineno_t num, int rfnum, lineno_t rnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fnum
    - num
    argTypes:
    - int
    - lineno_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 649
    functionName: eat
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - eats
    linkageType: ''
    returnType: void
    signature: void eat(int fnum, lineno_t num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:654,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:661,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:661,1
    - Dst: filename
      Src: /src/postgres/src/timezone/zic.c:662,1
    - Dst: vfprintf
      Src: /src/postgres/src/timezone/zic.c:663,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:665,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:665,1
    - Dst: filename
      Src: /src/postgres/src/timezone/zic.c:666,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:667,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - string
    - args
    argTypes:
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 668
    functionName: verror
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - vfprintf
    - _
    - filename
    - check_for_signal
    - fprintf
    linkageType: ''
    returnType: void
    signature: void verror(const char *const string, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/timezone/zic.c:675,1
    - Dst: verror
      Src: /src/postgres/src/timezone/zic.c:676,1
    - Dst: va_end
      Src: /src/postgres/src/timezone/zic.c:677,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 670
    functionDepth: 2
    functionLinenumber: 670
    functionLinenumberEnd: 679
    functionName: error
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 305
    functionsReached:
    - va_start
    - va_end
    - verror
    linkageType: ''
    returnType: void
    signature: void error(const char *const string, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:686,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:686,1
    - Dst: va_start
      Src: /src/postgres/src/timezone/zic.c:687,1
    - Dst: verror
      Src: /src/postgres/src/timezone/zic.c:688,1
    - Dst: va_end
      Src: /src/postgres/src/timezone/zic.c:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 681
    functionDepth: 2
    functionLinenumber: 681
    functionLinenumberEnd: 691
    functionName: warning
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 51
    functionsReached:
    - va_end
    - _
    - va_start
    - verror
    - fprintf
    linkageType: ''
    returnType: void
    signature: void warning(const char *const string, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/postgres/src/timezone/zic.c:704,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:707,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:707,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:708,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - arg
    - base
    - maxval
    - msgid
    argTypes:
    - char*
    - int
    - unsigned long
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 697
    functionDepth: 0
    functionLinenumber: 697
    functionLinenumberEnd: 711
    functionName: arg2num
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strtoul
    - exit
    - _
    - fprintf
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long arg2num(char const *arg, int base, unsigned long maxval,
      char const *msgid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setmode
      Src: /src/postgres/src/timezone/zic.c:733,1
    - Dst: getmode
      Src: /src/postgres/src/timezone/zic.c:737,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:739,1
    - Dst: arg2num
      Src: /src/postgres/src/timezone/zic.c:743,1
    - Dst: min
      Src: /src/postgres/src/timezone/zic.c:743,1
    - Dst: N_
      Src: /src/postgres/src/timezone/zic.c:744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 745
    functionName: mode_option
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - min
    - getmode
    - N_
    - arg2num
    - free
    - setmode
    linkageType: ''
    returnType: mode_t
    signature: mode_t mode_option(char const *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fchown
      Src: /src/postgres/src/timezone/zic.c:753,1
    - Dst: fileno
      Src: /src/postgres/src/timezone/zic.c:753,1
    - Dst: fchmod
      Src: /src/postgres/src/timezone/zic.c:758,1
    - Dst: fileno
      Src: /src/postgres/src/timezone/zic.c:758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 747
    functionDepth: 0
    functionLinenumber: 747
    functionLinenumberEnd: 762
    functionName: chmetadata
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - fileno
    - fchmod
    - fchown
    linkageType: ''
    returnType: int
    signature: int chmetadata(FILE *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ferror
      Src: /src/postgres/src/timezone/zic.c:775,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:775,1
    - Dst: fflush
      Src: /src/postgres/src/timezone/zic.c:777,1
    - Dst: chmetadata
      Src: /src/postgres/src/timezone/zic.c:777,1
    - Dst: fclose
      Src: /src/postgres/src/timezone/zic.c:778,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:779,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:785,1
    - Dst: remove
      Src: /src/postgres/src/timezone/zic.c:790,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:791,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 4
    argNames:
    - stream
    - dir
    - name
    - tempname
    argTypes:
    - FILE*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 793
    functionName: close_file
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - ferror
    - remove
    - _
    - chmetadata
    - fclose
    - exit
    - fflush
    - strerror
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void close_file(FILE *stream, char const *dir, char const *name,\n\t\t
      \  char const *tempname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:798,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:798,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - opt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 800
    functionName: duplicate_options
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - exit
    - _
    - fprintf
    linkageType: ''
    returnType: ATTRIBUTE_NORETURN
    signature: ATTRIBUTE_NORETURN duplicate_options(char const *opt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:805,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:806,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:815,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - status
    argTypes:
    - FILE*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 802
    functionDepth: 2
    functionLinenumber: 802
    functionLinenumberEnd: 817
    functionName: usage
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 19
    functionsReached:
    - close_file
    - exit
    - _
    - fprintf
    linkageType: ''
    returnType: ATTRIBUTE_NORETURN
    signature: ATTRIBUTE_NORETURN usage(FILE *stream, int status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:827,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:827,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:828,1
    - Dst: getgrnam
      Src: /src/postgres/src/timezone/zic.c:832,1
    - Dst: arg2num
      Src: /src/postgres/src/timezone/zic.c:835,1
    - Dst: min
      Src: /src/postgres/src/timezone/zic.c:835,1
    - Dst: N_
      Src: /src/postgres/src/timezone/zic.c:836,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 819
    functionDepth: 1
    functionLinenumber: 819
    functionLinenumberEnd: 840
    functionName: group_option
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - _
    - min
    - N_
    - arg2num
    - exit
    - getgrnam
    - fprintf
    linkageType: ''
    returnType: void
    signature: void group_option(char const *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:850,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:850,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:851,1
    - Dst: getpwnam
      Src: /src/postgres/src/timezone/zic.c:855,1
    - Dst: arg2num
      Src: /src/postgres/src/timezone/zic.c:858,1
    - Dst: min
      Src: /src/postgres/src/timezone/zic.c:858,1
    - Dst: N_
      Src: /src/postgres/src/timezone/zic.c:859,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 863
    functionName: owner_option
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - _
    - min
    - getpwnam
    - N_
    - arg2num
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void owner_option(char const *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/postgres/src/timezone/zic.c:880,1
    - Dst: umask
      Src: /src/postgres/src/timezone/zic.c:882,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 907
    functionName: use_safe_temp_permissions
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - umask
    linkageType: ''
    returnType: void
    signature: void use_safe_temp_permissions(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: chdir
      Src: /src/postgres/src/timezone/zic.c:917,1
    - Dst: mkdirs
      Src: /src/postgres/src/timezone/zic.c:923,1
    - Dst: chdir
      Src: /src/postgres/src/timezone/zic.c:924,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:928,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:928,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:929,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:930,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 914
    functionDepth: 1
    functionLinenumber: 914
    functionLinenumberEnd: 933
    functionName: change_directory
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - _
    - chdir
    - mkdirs
    - exit
    - strerror
    - fprintf
    linkageType: ''
    returnType: void
    signature: void change_directory(char const *dir)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:941,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 955
    functionName: qsort_linkcmp
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int qsort_linkcmp(void const *a, void const *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:963,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 958
    functionDepth: 0
    functionLinenumber: 958
    functionLinenumberEnd: 964
    functionName: bsearch_linkcmp
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int bsearch_linkcmp(void const *key, void const *b)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/timezone/zic.c:976,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:983,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:1020,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1027,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1027,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1039,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1041,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1041,1
    - Dst: bsearch
      Src: /src/postgres/src/timezone/zic.c:1046,1
    - Dst: bsearch
      Src: /src/postgres/src/timezone/zic.c:1049,1
    - Dst: dolink
      Src: /src/postgres/src/timezone/zic.c:1052,1
    - Dst: growalloc
      Src: /src/postgres/src/timezone/zic.c:1059,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1066,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1066,1
    - Dst: bsearch
      Src: /src/postgres/src/timezone/zic.c:1068,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1070,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1070,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:1073,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 967
    functionDepth: 4
    functionLinenumber: 967
    functionLinenumberEnd: 1075
    functionName: make_links
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - qsort
    - eat
    - warning
    - _
    - strcmp
    - bsearch
    - error
    - check_for_signal
    - growalloc
    - dolink
    linkageType: ''
    returnType: void
    signature: void make_links(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/postgres/src/timezone/zic.c:1089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1085
    functionDepth: 0
    functionLinenumber: 1085
    functionLinenumberEnd: 1092
    functionName: signal_handler
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - signal
    linkageType: ''
    returnType: void
    signature: void signal_handler(int sig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/postgres/src/timezone/zic.c:1117,1
    - Dst: sigaction
      Src: /src/postgres/src/timezone/zic.c:1119,1
    - Dst: sigaction
      Src: /src/postgres/src/timezone/zic.c:1122,1
    - Dst: signal
      Src: /src/postgres/src/timezone/zic.c:1126,1
    - Dst: signal
      Src: /src/postgres/src/timezone/zic.c:1128,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1133
    functionName: catch_signals
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - sigaction
    - sigemptyset
    - signal
    linkageType: ''
    returnType: void
    signature: void catch_signals(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/postgres/src/timezone/zic.c:1143,1
    - Dst: raise
      Src: /src/postgres/src/timezone/zic.c:1144,1
    - Dst: abort
      Src: /src/postgres/src/timezone/zic.c:1145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1136
    functionDepth: 0
    functionLinenumber: 1136
    functionLinenumberEnd: 1147
    functionName: check_for_signal
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - abort
    - raise
    - signal
    linkageType: ''
    returnType: void
    signature: void check_for_signal(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strtoimax
      Src: /src/postgres/src/timezone/zic.c:1188,1
    - Dst: strtoimax
      Src: /src/postgres/src/timezone/zic.c:1196,1
    - Dst: max
      Src: /src/postgres/src/timezone/zic.c:1203,1
    - Dst: min
      Src: /src/postgres/src/timezone/zic.c:1204,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 1
    argNames:
    - timerange
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1177
    functionDepth: 1
    functionLinenumber: 1177
    functionLinenumberEnd: 1206
    functionName: timerange_option
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strtoimax
    - min
    - max
    linkageType: ''
    returnType: bool
    signature: bool timerange_option(char *timerange)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtoimax
      Src: /src/postgres/src/timezone/zic.c:1217,1
    - Dst: max
      Src: /src/postgres/src/timezone/zic.c:1220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - opt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1209
    functionDepth: 1
    functionLinenumber: 1209
    functionLinenumberEnd: 1225
    functionName: redundant_time_option
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strtoimax
    - max
    linkageType: ''
    returnType: bool
    signature: bool redundant_time_option(char *opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1242
    functionDepth: 0
    functionLinenumber: 1242
    functionLinenumberEnd: 1246
    functionName: want_bloat
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool want_bloat(void)
  - BBCount: 50
    BranchProfiles: []
    Callsites:
    - Dst: TYPE_BIT
      Src: /src/postgres/src/timezone/zic.c:1263,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1265,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1266,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1270,1
    - Dst: printf
      Src: /src/postgres/src/timezone/zic.c:1272,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:1273,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1276,1
    - Dst: usage
      Src: /src/postgres/src/timezone/zic.c:1278,1
    - Dst: getopt
      Src: /src/postgres/src/timezone/zic.c:1280,1
    - Dst: usage
      Src: /src/postgres/src/timezone/zic.c:1284,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1286,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1289,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1289,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1292,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1295,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1295,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1299,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1299,1
    - Dst: duplicate_options
      Src: /src/postgres/src/timezone/zic.c:1303,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:1304,1
    - Dst: group_option
      Src: /src/postgres/src/timezone/zic.c:1315,1
    - Dst: duplicate_options
      Src: /src/postgres/src/timezone/zic.c:1319,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:1320,1
    - Dst: duplicate_options
      Src: /src/postgres/src/timezone/zic.c:1324,1
    - Dst: mode_option
      Src: /src/postgres/src/timezone/zic.c:1325,1
    - Dst: duplicate_options
      Src: /src/postgres/src/timezone/zic.c:1329,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1330,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1331,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1331,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:1333,1
    - Dst: duplicate_options
      Src: /src/postgres/src/timezone/zic.c:1337,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:1338,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1342,1
    - Dst: owner_option
      Src: /src/postgres/src/timezone/zic.c:1346,1
    - Dst: group_option
      Src: /src/postgres/src/timezone/zic.c:1348,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1352,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1352,1
    - Dst: duplicate_options
      Src: /src/postgres/src/timezone/zic.c:1356,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:1357,1
    - Dst: time
      Src: /src/postgres/src/timezone/zic.c:1364,1
    - Dst: duplicate_options
      Src: /src/postgres/src/timezone/zic.c:1368,1
    - Dst: timerange_option
      Src: /src/postgres/src/timezone/zic.c:1369,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1371,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1372,1
    - Dst: redundant_time_option
      Src: /src/postgres/src/timezone/zic.c:1379,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1381,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1381,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1387,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1387,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1390,1
    - Dst: usage
      Src: /src/postgres/src/timezone/zic.c:1391,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1394,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1394,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1403,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1405,1
    - Dst: abort
      Src: /src/postgres/src/timezone/zic.c:1408,1
    - Dst: infile
      Src: /src/postgres/src/timezone/zic.c:1417,1
    - Dst: adjleap
      Src: /src/postgres/src/timezone/zic.c:1418,1
    - Dst: infile
      Src: /src/postgres/src/timezone/zic.c:1422,1
    - Dst: associate
      Src: /src/postgres/src/timezone/zic.c:1425,1
    - Dst: use_safe_temp_permissions
      Src: /src/postgres/src/timezone/zic.c:1426,1
    - Dst: change_directory
      Src: /src/postgres/src/timezone/zic.c:1427,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1428,1
    - Dst: catch_signals
      Src: /src/postgres/src/timezone/zic.c:1429,1
    - Dst: outzone
      Src: /src/postgres/src/timezone/zic.c:1437,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:1438,1
    - Dst: make_links
      Src: /src/postgres/src/timezone/zic.c:1440,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:1443,1
    - Dst: dolink
      Src: /src/postgres/src/timezone/zic.c:1444,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:1448,1
    - Dst: dolink
      Src: /src/postgres/src/timezone/zic.c:1449,1
    - Dst: ferror
      Src: /src/postgres/src/timezone/zic.c:1451,1
    - Dst: fclose
      Src: /src/postgres/src/timezone/zic.c:1451,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 158
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1252
    functionDepth: 5
    functionLinenumber: 1252
    functionLinenumberEnd: 1454
    functionName: main
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - adjleap
    - close_file
    - warning
    - abort
    - use_safe_temp_permissions
    - strcmp
    - getopt
    - strchr
    - owner_option
    - error
    - printf
    - change_directory
    - TYPE_BIT
    - check_for_signal
    - fprintf
    - ferror
    - eat
    - _
    - group_option
    - associate
    - make_links
    - time
    - strdup
    - duplicate_options
    - usage
    - catch_signals
    - infile
    - fclose
    - redundant_time_option
    - strlen
    - timerange_option
    - dolink
    - outzone
    - mode_option
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1468,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1468,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1470,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1470,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1483,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1483,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1490,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1490,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1493,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1493,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 3
    argNames:
    - name
    - component
    - component_end
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1456
    functionDepth: 3
    functionLinenumber: 1456
    functionLinenumberEnd: 1498
    functionName: componentcheck
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - error
    - warning
    - _
    linkageType: ''
    returnType: bool
    signature: "bool componentcheck(char const *name, char const *component,\n\t\t\t
      \  char const *component_end)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1524,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1526,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1526,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1527,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1528,1
    - Dst: componentcheck
      Src: /src/postgres/src/timezone/zic.c:1533,1
    - Dst: componentcheck
      Src: /src/postgres/src/timezone/zic.c:1538,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1500
    functionDepth: 4
    functionLinenumber: 1500
    functionLinenumberEnd: 1539
    functionName: namecheck
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - componentcheck
    - warning
    - _
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool namecheck(const char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/postgres/src/timezone/zic.c:1546,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:1553,1
    - Dst: getrandom
      Src: /src/postgres/src/timezone/zic.c:1555,1
    - Dst: srand
      Src: /src/postgres/src/timezone/zic.c:1576,1
    - Dst: time
      Src: /src/postgres/src/timezone/zic.c:1576,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:1593,1
    - Dst: rand
      Src: /src/postgres/src/timezone/zic.c:1607,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1542
    functionDepth: 1
    functionLinenumber: 1542
    functionLinenumberEnd: 1615
    functionName: get_rand_u64
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - rand
    - getrandom
    - check_for_signal
    - time
    - max
    - srand
    linkageType: ''
    returnType: uint_fast64_t
    signature: uint_fast64_t get_rand_u64(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/postgres/src/timezone/zic.c:1638,1
    - Dst: xmalloc
      Src: /src/postgres/src/timezone/zic.c:1658,1
    - Dst: size_sum
      Src: /src/postgres/src/timezone/zic.c:1658,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:1660,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:1662,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:1668,1
    - Dst: get_rand_u64
      Src: /src/postgres/src/timezone/zic.c:1670,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - name
    - namealloc
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1624
    functionDepth: 3
    functionLinenumber: 1624
    functionLinenumberEnd: 1680
    functionName: random_dirent
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - memcpy
    - get_rand_u64
    - xmalloc
    - strrchr
    - check_for_signal
    - size_sum
    linkageType: ''
    returnType: void
    signature: void random_dirent(char const **name, char **namealloc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1691
      start: 1687
    functionDepth: 0
    functionLinenumber: 1687
    functionLinenumberEnd: 1691
    functionName: diagdir
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      diagdir(char const *filename)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1696
      start: 1692
    functionDepth: 0
    functionLinenumber: 1692
    functionLinenumberEnd: 1696
    functionName: diagslash
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      diagslash(char const *filename)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: random_dirent
      Src: /src/postgres/src/timezone/zic.c:1712,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:1714,1
    - Dst: open
      Src: /src/postgres/src/timezone/zic.c:1717,1
    - Dst: fdopen
      Src: /src/postgres/src/timezone/zic.c:1724,1
    - Dst: close
      Src: /src/postgres/src/timezone/zic.c:1729,1
    - Dst: mkdirs
      Src: /src/postgres/src/timezone/zic.c:1733,1
    - Dst: random_dirent
      Src: /src/postgres/src/timezone/zic.c:1737,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1740,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1740,1
    - Dst: diagdir
      Src: /src/postgres/src/timezone/zic.c:1741,1
    - Dst: diagslash
      Src: /src/postgres/src/timezone/zic.c:1741,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1742,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1743,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - outname
    - tempname
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1706
    functionDepth: 4
    functionLinenumber: 1706
    functionLinenumberEnd: 1746
    functionName: open_outfile
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - _
    - random_dirent
    - mkdirs
    - diagdir
    - exit
    - fdopen
    - diagslash
    - close
    - check_for_signal
    - open
    - strerror
    - fprintf
    linkageType: ''
    returnType: FILE
    signature: 'FILE *

      open_outfile(char const **outname, char **tempname)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/postgres/src/timezone/zic.c:1758,1
    - Dst: remove
      Src: /src/postgres/src/timezone/zic.c:1762,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1763,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1763,1
    - Dst: diagdir
      Src: /src/postgres/src/timezone/zic.c:1764,1
    - Dst: diagslash
      Src: /src/postgres/src/timezone/zic.c:1764,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1765,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1766,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - tempname
    - name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1753
    functionDepth: 1
    functionLinenumber: 1753
    functionLinenumberEnd: 1770
    functionName: rename_dest
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - rename
    - strerror
    - _
    - diagdir
    - exit
    - diagslash
    - free
    - remove
    - fprintf
    linkageType: ''
    returnType: void
    signature: void rename_dest(char *tempname, char const *name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1795,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1798,1
    - Dst: size_sum
      Src: /src/postgres/src/timezone/zic.c:1803,1
    - Dst: xmalloc
      Src: /src/postgres/src/timezone/zic.c:1804,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:1805,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:1808,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1815,1
    - Dst: size_sum
      Src: /src/postgres/src/timezone/zic.c:1816,1
    - Dst: size_product
      Src: /src/postgres/src/timezone/zic.c:1816,1
    - Dst: xmalloc
      Src: /src/postgres/src/timezone/zic.c:1822,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:1826,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/zic.c:1829,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - target
    - linkname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1832
      start: 1780
    functionDepth: 3
    functionLinenumber: 1780
    functionLinenumberEnd: 1832
    functionName: relname
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - memcpy
    - size_product
    - memmove
    - strlen
    - xmalloc
    - size_sum
    linkageType: ''
    returnType: char
    signature: 'char *

      relname(char const *target, char const *linkname)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1847,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1847,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1848
      start: 1840
    functionDepth: 0
    functionLinenumber: 1840
    functionLinenumberEnd: 1848
    functionName: same_parent_dirs
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833
    signature: ATTRIBUTE_PURE_114833 same_parent_dirs(char const *a, char const *b)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1860,1
    - Dst: remove
      Src: /src/postgres/src/timezone/zic.c:1862,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1866,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1868,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1868,1
    - Dst: diagdir
      Src: /src/postgres/src/timezone/zic.c:1869,1
    - Dst: diagslash
      Src: /src/postgres/src/timezone/zic.c:1869,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1871,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:1875,1
    - Dst: linkat
      Src: /src/postgres/src/timezone/zic.c:1877,1
    - Dst: same_parent_dirs
      Src: /src/postgres/src/timezone/zic.c:1895,1
    - Dst: itssymlink
      Src: /src/postgres/src/timezone/zic.c:1896,1
    - Dst: link
      Src: /src/postgres/src/timezone/zic.c:1898,1
    - Dst: random_dirent
      Src: /src/postgres/src/timezone/zic.c:1911,1
    - Dst: itssymlink
      Src: /src/postgres/src/timezone/zic.c:1912,1
    - Dst: mkdirs
      Src: /src/postgres/src/timezone/zic.c:1917,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1922,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1922,1
    - Dst: diagdir
      Src: /src/postgres/src/timezone/zic.c:1923,1
    - Dst: diagslash
      Src: /src/postgres/src/timezone/zic.c:1923,1
    - Dst: diagdir
      Src: /src/postgres/src/timezone/zic.c:1924,1
    - Dst: diagslash
      Src: /src/postgres/src/timezone/zic.c:1924,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1925,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1926,1
    - Dst: relname
      Src: /src/postgres/src/timezone/zic.c:1933,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:1939,1
    - Dst: symlink
      Src: /src/postgres/src/timezone/zic.c:1941,1
    - Dst: random_dirent
      Src: /src/postgres/src/timezone/zic.c:1948,1
    - Dst: mkdirs
      Src: /src/postgres/src/timezone/zic.c:1951,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1958,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1962,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1962,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1963,1
    - Dst: fopen
      Src: /src/postgres/src/timezone/zic.c:1972,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1975,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1977,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1977,1
    - Dst: diagdir
      Src: /src/postgres/src/timezone/zic.c:1978,1
    - Dst: diagslash
      Src: /src/postgres/src/timezone/zic.c:1978,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1979,1
    - Dst: open_outfile
      Src: /src/postgres/src/timezone/zic.c:1981,1
    - Dst: getc
      Src: /src/postgres/src/timezone/zic.c:1982,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:1982,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:1983,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:1984,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:1985,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1987,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1987,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1988,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1991,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1991,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1993,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1993,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1994,1
    - Dst: rename_dest
      Src: /src/postgres/src/timezone/zic.c:1998,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 78
    argCount: 3
    argNames:
    - target
    - linkname
    - staysymlink
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1999
      start: 1850
    functionDepth: 5
    functionLinenumber: 1850
    functionLinenumberEnd: 1999
    functionName: dolink
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - close_file
    - warning
    - open_outfile
    - strcmp
    - mkdirs
    - fopen
    - diagslash
    - check_for_signal
    - remove
    - symlink
    - rename_dest
    - fprintf
    - same_parent_dirs
    - _
    - linkat
    - random_dirent
    - strerror
    - exit
    - link
    - itssymlink
    - relname
    - diagdir
    - free
    - getc
    - putc
    linkageType: ''
    returnType: void
    signature: void dolink(char const *target, char const *linkname, bool staysymlink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: readlink
      Src: /src/postgres/src/timezone/zic.c:2014,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - name
    - cache
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2020
      start: 2006
    functionDepth: 0
    functionLinenumber: 2006
    functionLinenumberEnd: 2020
    functionName: itssymlink
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - readlink
    linkageType: ''
    returnType: int
    signature: int itssymlink(char const *name, int *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cp1
    - cp2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2037
      start: 2030
    functionDepth: 0
    functionLinenumber: 2030
    functionLinenumberEnd: 2037
    functionName: rcomp
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int rcomp(const void *cp1, const void *cp2)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/timezone/zic.c:2051,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2054,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:2059,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:2060,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2060,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:2061,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:2062,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2062,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2065,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2088,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2093,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:2107,1
    - Dst: getsave
      Src: /src/postgres/src/timezone/zic.c:2108,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2115,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2115,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:2119,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2120
      start: 2039
    functionDepth: 3
    functionLinenumber: 2039
    functionLinenumberEnd: 2120
    functionName: associate
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - qsort
    - eat
    - warning
    - _
    - strcmp
    - getsave
    - error
    - exit
    linkageType: ''
    returnType: void
    signature: void associate(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/postgres/src/timezone/zic.c:2134,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:2134,1
    - Dst: ferror
      Src: /src/postgres/src/timezone/zic.c:2138,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2140,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2140,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:2141,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2145,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2145,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:2146,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2150,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2150,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:2151,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2156,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2156,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:2157,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - fp
    - buf
    - bufsize
    argTypes:
    - FILE*
    - char*
    - ptrdiff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2128
    functionDepth: 1
    functionLinenumber: 2128
    functionLinenumberEnd: 2162
    functionName: inputline
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - ferror
    - _
    - error
    - check_for_signal
    - getc
    - exit
    linkageType: ''
    returnType: bool
    signature: bool inputline(FILE *fp, char *buf, ptrdiff_t bufsize)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2172,1
    - Dst: fopen
      Src: /src/postgres/src/timezone/zic.c:2176,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:2178,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:2180,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2180,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:2182,1
    - Dst: min
      Src: /src/postgres/src/timezone/zic.c:2190,1
    - Dst: min
      Src: /src/postgres/src/timezone/zic.c:2191,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:2195,1
    - Dst: inputline
      Src: /src/postgres/src/timezone/zic.c:2196,1
    - Dst: getfields
      Src: /src/postgres/src/timezone/zic.c:2198,1
    - Dst: inzcont
      Src: /src/postgres/src/timezone/zic.c:2206,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:2213,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2215,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2215,1
    - Dst: inrule
      Src: /src/postgres/src/timezone/zic.c:2220,1
    - Dst: inzone
      Src: /src/postgres/src/timezone/zic.c:2224,1
    - Dst: inlink
      Src: /src/postgres/src/timezone/zic.c:2227,1
    - Dst: inleap
      Src: /src/postgres/src/timezone/zic.c:2231,1
    - Dst: inexpires
      Src: /src/postgres/src/timezone/zic.c:2235,1
    - Dst: unreachable
      Src: /src/postgres/src/timezone/zic.c:2239,1
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:2242,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:2244,1
    - Dst: filename
      Src: /src/postgres/src/timezone/zic.c:2244,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2246,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2246,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 2
    argNames:
    - fnum
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2164
    functionDepth: 2
    functionLinenumber: 2164
    functionLinenumberEnd: 2247
    functionName: infile
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - close_file
    - strcmp
    - min
    - unreachable
    - fopen
    - error
    - check_for_signal
    - fprintf
    - eat
    - _
    - getfields
    - inlink
    - byword
    - inrule
    - inexpires
    - exit
    - strerror
    - inleap
    - filename
    - inzone
    - inputline
    - inzcont
    linkageType: ''
    returnType: void
    signature: void infile(int fnum, char const *name)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:2281,1
    - Dst: is_digit
      Src: /src/postgres/src/timezone/zic.c:2289,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:2294,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2294,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2308,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2315,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:2321,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2321,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:2322,1
    - Dst: omul
      Src: /src/postgres/src/timezone/zic.c:2322,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 2
    argNames:
    - string
    - errstring
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2324
      start: 2257
    functionDepth: 3
    functionLinenumber: 2257
    functionLinenumberEnd: 2324
    functionName: gethms
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - warning
    - _
    - sscanf
    - oadd
    - error
    - is_digit
    - omul
    linkageType: ''
    returnType: zic_t
    signature: zic_t gethms(char const *string, char const *errstring)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:2331,1
    - Dst: gethms
      Src: /src/postgres/src/timezone/zic.c:2349,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - field
    - isdst
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2352
      start: 2326
    functionDepth: 4
    functionLinenumber: 2326
    functionLinenumberEnd: 2352
    functionName: getsave
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - gethms
    - strlen
    - _
    linkageType: ''
    returnType: zic_t
    signature: zic_t getsave(char *field, bool *isdst)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2361,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2361,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2385,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2385,1
    - Dst: getsave
      Src: /src/postgres/src/timezone/zic.c:2390,1
    - Dst: rulesub
      Src: /src/postgres/src/timezone/zic.c:2391,1
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:2395,1
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:2396,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:2397,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:2398,1
    - Dst: growalloc
      Src: /src/postgres/src/timezone/zic.c:2399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2401
      start: 2354
    functionDepth: 5
    functionLinenumber: 2354
    functionLinenumberEnd: 2401
    functionName: inrule
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - rulesub
    - _
    - getsave
    - xstrdup
    - error
    - strlen
    - growalloc
    linkageType: ''
    returnType: void
    signature: void inrule(char **fields, int nfields)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2410,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2410,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2413,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2415,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2415,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2419,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2421,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2421,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2427,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2429,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2429,1
    - Dst: filename
      Src: /src/postgres/src/timezone/zic.c:2432,1
    - Dst: inzsub
      Src: /src/postgres/src/timezone/zic.c:2436,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2403
    functionDepth: 1
    functionLinenumber: 2403
    functionLinenumberEnd: 2437
    functionName: inzone
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - inzsub
    - _
    - strcmp
    - filename
    - error
    linkageType: ''
    returnType: bool
    signature: bool inzone(char **fields, int nfields)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2444,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2444,1
    - Dst: inzsub
      Src: /src/postgres/src/timezone/zic.c:2447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2448
      start: 2439
    functionDepth: 1
    functionLinenumber: 2439
    functionLinenumberEnd: 2448
    functionName: inzcont
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - error
    - inzsub
    - _
    linkageType: ''
    returnType: bool
    signature: bool inzcont(char **fields, int nfields)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: namecheck
      Src: /src/postgres/src/timezone/zic.c:2476,1
    - Dst: gethms
      Src: /src/postgres/src/timezone/zic.c:2490,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2490,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:2491,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:2494,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:2495,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2497,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2497,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:2502,1
    - Dst: rulesub
      Src: /src/postgres/src/timezone/zic.c:2510,1
    - Dst: rpytime
      Src: /src/postgres/src/timezone/zic.c:2520,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2525,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2525,1
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:2530,1
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:2531,1
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:2532,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:2537,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2537,1
    - Dst: growalloc
      Src: /src/postgres/src/timezone/zic.c:2540,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 57
    argCount: 3
    argNames:
    - fields
    - nfields
    - iscont
    argTypes:
    - char**
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2548
      start: 2450
    functionDepth: 5
    functionLinenumber: 2450
    functionLinenumberEnd: 2548
    functionName: inzsub
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - gethms
    - warning
    - rulesub
    - _
    - strchr
    - xstrdup
    - error
    - strlen
    - namecheck
    - rpytime
    - growalloc
    linkageType: ''
    returnType: bool
    signature: bool inzsub(char **fields, int nfields, bool iscont)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:2567,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2572,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2572,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:2588,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:2594,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:2596,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:2598,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2600,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2600,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:2607,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:2608,1
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:2612,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:2613,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2615,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2615,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:2618,1
    - Dst: omul
      Src: /src/postgres/src/timezone/zic.c:2619,1
    - Dst: gethms
      Src: /src/postgres/src/timezone/zic.c:2620,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2620,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:2621,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2623,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2623,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 2
    argNames:
    - fields
    - expire_line
    argTypes:
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2625
      start: 2550
    functionDepth: 4
    functionLinenumber: 2550
    functionLinenumberEnd: 2625
    functionName: getleapdatetime
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - gethms
    - _
    - byword
    - sscanf
    - oadd
    - tadd
    - error
    - isleap
    - omul
    linkageType: ''
    returnType: zic_t
    signature: zic_t getleapdatetime(char **fields, bool expire_line)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2631,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2631,1
    - Dst: getleapdatetime
      Src: /src/postgres/src/timezone/zic.c:2634,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:2638,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2641,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2641,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2648,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2651,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2651,1
    - Dst: leapadd
      Src: /src/postgres/src/timezone/zic.c:2653,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2657
      start: 2627
    functionDepth: 5
    functionLinenumber: 2627
    functionLinenumberEnd: 2657
    functionName: inleap
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - _
    - strcmp
    - byword
    - error
    - getleapdatetime
    - leapadd
    linkageType: ''
    returnType: void
    signature: void inleap(char **fields, int nfields)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2663,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2663,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2665,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2665,1
    - Dst: getleapdatetime
      Src: /src/postgres/src/timezone/zic.c:2667,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2659
    functionDepth: 5
    functionLinenumber: 2659
    functionLinenumberEnd: 2668
    functionName: inexpires
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - error
    - getleapdatetime
    - _
    linkageType: ''
    returnType: void
    signature: void inexpires(char **fields, int nfields)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2677,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2677,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2682,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2682,1
    - Dst: namecheck
      Src: /src/postgres/src/timezone/zic.c:2685,1
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:2689,1
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:2690,1
    - Dst: growalloc
      Src: /src/postgres/src/timezone/zic.c:2691,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2670
    functionDepth: 5
    functionLinenumber: 2670
    functionLinenumberEnd: 2693
    functionName: inlink
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - _
    - xstrdup
    - error
    - namecheck
    - growalloc
    linkageType: ''
    returnType: void
    signature: void inlink(char **fields, int nfields)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:2706,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2708,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2708,1
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:2714,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:2717,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:2718,1
    - Dst: gethms
      Src: /src/postgres/src/timezone/zic.c:2739,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2739,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:2740,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:2746,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:2751,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2751,1
    - Dst: unreachable
      Src: /src/postgres/src/timezone/zic.c:2757,1
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:2759,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2761,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2761,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:2765,1
    - Dst: unreachable
      Src: /src/postgres/src/timezone/zic.c:2777,1
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:2779,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2781,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2781,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2786,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2786,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2791,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2791,1
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:2800,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:2801,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:2809,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:2814,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2828,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2828,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:2829,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:2832,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2834,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2834,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:2835,1
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:2840,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2844,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2844,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:2845,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:2849,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 112
    argCount: 7
    argNames:
    - rp
    - loyearp
    - hiyearp
    - typep
    - monthp
    - dayp
    - timep
    argTypes:
    - struct rule*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2851
      start: 2695
    functionDepth: 4
    functionLinenumber: 2695
    functionLinenumberEnd: 2851
    functionName: rulesub
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - gethms
    - warning
    - _
    - strchr
    - byword
    - unreachable
    - sscanf
    - xstrdup
    - error
    - strlen
    - lowerit
    - free
    linkageType: ''
    returnType: bool
    signature: "bool rulesub(struct rule *rp, const char *loyearp, const char *hiyearp,\n\t\tconst
      char *typep, const char *monthp, const char *dayp,\n\t\tconst char *timep)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - val
    - buf
    argTypes:
    - uint_fast32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2862
      start: 2853
    functionDepth: 0
    functionLinenumber: 2853
    functionLinenumberEnd: 2862
    functionName: convert
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void convert(uint_fast32_t val, char *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - val
    - buf
    argTypes:
    - uint_fast64_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2873
      start: 2864
    functionDepth: 0
    functionLinenumber: 2864
    functionLinenumberEnd: 2873
    functionName: convert64
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void convert64(uint_fast64_t val, char *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:2880,1
    - Dst: fwrite
      Src: /src/postgres/src/timezone/zic.c:2881,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - val
    - fp
    argTypes:
    - zic_t
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2882
      start: 2875
    functionDepth: 1
    functionLinenumber: 2875
    functionLinenumberEnd: 2882
    functionName: puttzcode
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - fwrite
    - convert
    linkageType: ''
    returnType: void
    signature: void puttzcode(zic_t val, FILE *fp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: puttzcode
      Src: /src/postgres/src/timezone/zic.c:2888,1
    - Dst: convert64
      Src: /src/postgres/src/timezone/zic.c:2893,1
    - Dst: fwrite
      Src: /src/postgres/src/timezone/zic.c:2894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - val
    - fp
    - pass
    argTypes:
    - zic_t
    - FILE*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2896
      start: 2884
    functionDepth: 2
    functionLinenumber: 2884
    functionLinenumberEnd: 2896
    functionName: puttzcodepass
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - convert64
    - puttzcode
    - fwrite
    linkageType: ''
    returnType: void
    signature: void puttzcodepass(zic_t val, FILE *fp, int pass)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - avp
    - bvp
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2907
      start: 2898
    functionDepth: 0
    functionLinenumber: 2898
    functionLinenumberEnd: 2907
    functionName: atcomp
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int atcomp(const void *avp, const void *bvp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 5
    argNames:
    - r
    - lo
    - hi
    - ats
    - types
    argTypes:
    - struct timerange
    - zic_t
    - zic_t
    - zic_t*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2965
      start: 2919
    functionDepth: 0
    functionLinenumber: 2919
    functionLinenumberEnd: 2965
    functionName: limitrange
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timerange
    signature: "struct timerange limitrange(struct timerange r, zic_t lo, zic_t hi,\n\t\t
      \  zic_t const *ats, unsigned char const *types)"
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: xmalloc
      Src: /src/postgres/src/timezone/zic.c:2983,1
    - Dst: align_to
      Src: /src/postgres/src/timezone/zic.c:2983,1
    - Dst: size_product
      Src: /src/postgres/src/timezone/zic.c:2983,1
    - Dst: qsort
      Src: /src/postgres/src/timezone/zic.c:2994,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3053,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3053,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3057,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3057,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3061,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3061,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:3083,1
    - Dst: limitrange
      Src: /src/postgres/src/timezone/zic.c:3091,1
    - Dst: max
      Src: /src/postgres/src/timezone/zic.c:3092,1
    - Dst: limitrange
      Src: /src/postgres/src/timezone/zic.c:3095,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:3106,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3111,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3111,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3120,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3120,1
    - Dst: open_outfile
      Src: /src/postgres/src/timezone/zic.c:3129,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3184,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3184,1
    - Dst: memset
      Src: /src/postgres/src/timezone/zic.c:3189,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:3231,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:3241,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:3279,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:3291,1
    - Dst: addabbr
      Src: /src/postgres/src/timezone/zic.c:3318,1
    - Dst: addabbr
      Src: /src/postgres/src/timezone/zic.c:3330,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:3333,1
    - Dst: memset
      Src: /src/postgres/src/timezone/zic.c:3341,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:3342,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:3344,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:3345,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:3346,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:3347,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:3349,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:3350,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:3351,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:3352,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:3353,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:3354,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:3355,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:3356,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:3357,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:3358,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:3359,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:3361,1
    - Dst: puttzcode
      Src: /src/postgres/src/timezone/zic.c:3364,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3365,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3366,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3367,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:3382,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:3394,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3402,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3402,1
    - Dst: puttzcodepass
      Src: /src/postgres/src/timezone/zic.c:3413,1
    - Dst: puttzcodepass
      Src: /src/postgres/src/timezone/zic.c:3416,1
    - Dst: puttzcodepass
      Src: /src/postgres/src/timezone/zic.c:3419,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3421,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3423,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3425,1
    - Dst: puttzcode
      Src: /src/postgres/src/timezone/zic.c:3434,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3435,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3436,1
    - Dst: fwrite
      Src: /src/postgres/src/timezone/zic.c:3440,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:3467,1
    - Dst: puttzcodepass
      Src: /src/postgres/src/timezone/zic.c:3471,1
    - Dst: puttzcode
      Src: /src/postgres/src/timezone/zic.c:3472,1
    - Dst: puttzcodepass
      Src: /src/postgres/src/timezone/zic.c:3482,1
    - Dst: puttzcode
      Src: /src/postgres/src/timezone/zic.c:3483,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3488,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:3492,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:3494,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:3495,1
    - Dst: rename_dest
      Src: /src/postgres/src/timezone/zic.c:3496,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:3497,1
    CyclomaticComplexity: 114
    EdgeCount: 114
    ICount: 259
    argCount: 4
    argNames:
    - name
    - string
    - version
    - defaulttype
    argTypes:
    - char*
    - char*
    - char
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3498
      start: 2967
    functionDepth: 5
    functionLinenumber: 2967
    functionLinenumberEnd: 3498
    functionName: writezone
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - close_file
    - warning
    - open_outfile
    - convert
    - size_product
    - error
    - limitrange
    - rename_dest
    - fprintf
    - qsort
    - memcpy
    - _
    - addabbr
    - puttzcode
    - DO
    - want_bloat
    - align_to
    - puttzcodepass
    - memset
    - strlen
    - xmalloc
    - tadd
    - free
    - max
    - addtype
    - putc
    - fwrite
    linkageType: ''
    returnType: void
    signature: "void writezone(const char *const name, const char *const string, char
      version,\n\t\t  int defaulttype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3341
      start: 3340
    functionDepth: 0
    functionLinenumber: 3340
    functionLinenumberEnd: 3341
    functionName: DO
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO(field)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3519,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3519,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - buf
    - offset
    argTypes:
    - char*
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3542
      start: 3500
    functionDepth: 0
    functionLinenumber: 3500
    functionLinenumberEnd: 3542
    functionName: abbroffset
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - error
    - _
    linkageType: ''
    returnType: char
    signature: 'char *

      abbroffset(char *buf, zic_t offset)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:3553,1
    - Dst: abbroffset
      Src: /src/postgres/src/timezone/zic.c:3560,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:3565,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/zic.c:3568,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:3571,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:3574,1
    - Dst: is_alpha
      Src: /src/postgres/src/timezone/zic.c:3577,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/zic.c:3583,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 6
    argNames:
    - abbr
    - zp
    - letters
    - isdst
    - save
    - doquotes
    argTypes:
    - char*
    - struct zone*
    - char*
    - bool
    - zic_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3586
      start: 3546
    functionDepth: 1
    functionLinenumber: 3546
    functionLinenumberEnd: 3586
    functionName: doabbr
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strchr
    - memmove
    - is_alpha
    - abbroffset
    - strlen
    - sprintf
    - strcpy
    linkageType: ''
    returnType: ptrdiff_t
    signature: "ptrdiff_t doabbr(char *abbr, struct zone const *zp, char const *letters,\n\t
      \  bool isdst, zic_t save, bool doquotes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - x
    argTypes:
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3595
      start: 3588
    functionDepth: 0
    functionLinenumber: 3588
    functionLinenumberEnd: 3595
    functionName: updateminmax
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void updateminmax(const zic_t x)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:3621,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:3624,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:3626,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - result
    - offset
    argTypes:
    - char*
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3629
      start: 3597
    functionDepth: 0
    functionLinenumber: 3597
    functionLinenumberEnd: 3629
    functionName: stringoffset
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - sprintf
    linkageType: ''
    returnType: int
    signature: int stringoffset(char *result, zic_t offset)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:3649,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:3651,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:3686,1
    - Dst: stringoffset
      Src: /src/postgres/src/timezone/zic.c:3696,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 4
    argNames:
    - result
    - rp
    - save
    - stdoff
    argTypes:
    - char*
    - struct rule*
    - zic_t
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3710
      start: 3631
    functionDepth: 1
    functionLinenumber: 3631
    functionLinenumberEnd: 3710
    functionName: stringrule
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - stringoffset
    - sprintf
    linkageType: ''
    returnType: int
    signature: int stringrule(char *result, struct rule *const rp, zic_t save, zic_t
      stdoff)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct rule*
    - struct rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3726
      start: 3712
    functionDepth: 0
    functionLinenumber: 3712
    functionLinenumberEnd: 3726
    functionName: rule_cmp
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rule_cmp(struct rule const *a, struct rule const *b)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: rule_cmp
      Src: /src/postgres/src/timezone/zic.c:3771,1
    - Dst: rule_cmp
      Src: /src/postgres/src/timezone/zic.c:3779,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:3829,1
    - Dst: stringoffset
      Src: /src/postgres/src/timezone/zic.c:3831,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:3840,1
    - Dst: stringoffset
      Src: /src/postgres/src/timezone/zic.c:3844,1
    - Dst: stringrule
      Src: /src/postgres/src/timezone/zic.c:3854,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:3862,1
    - Dst: stringrule
      Src: /src/postgres/src/timezone/zic.c:3864,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 87
    argCount: 3
    argNames:
    - result
    - zpfirst
    - zonecount
    argTypes:
    - char*
    - struct zone*
    - ptrdiff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3873
      start: 3734
    functionDepth: 2
    functionLinenumber: 3734
    functionLinenumberEnd: 3873
    functionName: stringzone
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - stringrule
    - doabbr
    - rule_cmp
    - strlen
    - stringoffset
    linkageType: ''
    returnType: int
    signature: int stringzone(char *result, struct zone const *zpfirst, ptrdiff_t
      zonecount)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: check_for_signal
      Src: /src/postgres/src/timezone/zic.c:3900,1
    - Dst: xmalloc
      Src: /src/postgres/src/timezone/zic.c:3907,1
    - Dst: xmalloc
      Src: /src/postgres/src/timezone/zic.c:3908,1
    - Dst: xmalloc
      Src: /src/postgres/src/timezone/zic.c:3909,1
    - Dst: INITIALIZE
      Src: /src/postgres/src/timezone/zic.c:3910,1
    - Dst: INITIALIZE
      Src: /src/postgres/src/timezone/zic.c:3911,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3929,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3930,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3937,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3942,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3944,1
    - Dst: stringzone
      Src: /src/postgres/src/timezone/zic.c:3951,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3957,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3958,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3966,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3966,1
    - Dst: max
      Src: /src/postgres/src/timezone/zic.c:3982,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:3985,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:3998,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:4014,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:4021,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:4022,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4022,1
    - Dst: addtt
      Src: /src/postgres/src/timezone/zic.c:4027,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:4058,1
    - Dst: rpytime
      Src: /src/postgres/src/timezone/zic.c:4064,1
    - Dst: INITIALIZE
      Src: /src/postgres/src/timezone/zic.c:4079,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:4088,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:4091,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:4106,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4110,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:4112,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4121,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:4123,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:4125,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:4127,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4129,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4139,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:4141,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4153,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:4155,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4163,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:4166,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:4174,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:4176,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4178,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:4179,1
    - Dst: addtt
      Src: /src/postgres/src/timezone/zic.c:4183,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:4198,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:4200,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4202,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4202,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:4206,1
    - Dst: addtt
      Src: /src/postgres/src/timezone/zic.c:4211,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:4224,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:4226,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:4231,1
    - Dst: max
      Src: /src/postgres/src/timezone/zic.c:4253,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:4260,1
    - Dst: rpytime
      Src: /src/postgres/src/timezone/zic.c:4287,1
    - Dst: addtt
      Src: /src/postgres/src/timezone/zic.c:4289,1
    - Dst: rpytime
      Src: /src/postgres/src/timezone/zic.c:4289,1
    - Dst: writezone
      Src: /src/postgres/src/timezone/zic.c:4294,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:4295,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:4296,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:4297,1
    CyclomaticComplexity: 87
    EdgeCount: 87
    ICount: 210
    argCount: 2
    argNames:
    - zpfirst
    - zonecount
    argTypes:
    - struct zone*
    - ptrdiff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4298
      start: 3875
    functionDepth: 6
    functionLinenumber: 3875
    functionLinenumberEnd: 4298
    functionName: outzone
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - warning
    - INITIALIZE
    - strchr
    - error
    - check_for_signal
    - updateminmax
    - eat
    - _
    - rpytime
    - want_bloat
    - eats
    - doabbr
    - xmalloc
    - stringzone
    - oadd
    - tadd
    - addtt
    - free
    - max
    - writezone
    - addtype
    linkageType: ''
    returnType: void
    signature: void outzone(const struct zone *zpfirst, ptrdiff_t zonecount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: growalloc
      Src: /src/postgres/src/timezone/zic.c:4303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - starttime
    - type
    argTypes:
    - zic_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4308
      start: 4300
    functionDepth: 4
    functionLinenumber: 4300
    functionLinenumberEnd: 4308
    functionName: addtt
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - growalloc
    linkageType: ''
    returnType: void
    signature: void addtt(zic_t starttime, int type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4320,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4320,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4321,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:4323,1
    - Dst: checkabbr
      Src: /src/postgres/src/timezone/zic.c:4326,1
    - Dst: addabbr
      Src: /src/postgres/src/timezone/zic.c:4329,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4355,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4355,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4356,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 5
    argNames:
    - utoff
    - abbr
    - isdst
    - ttisstd
    - ttisut
    argTypes:
    - zic_t
    - char*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4365
      start: 4310
    functionDepth: 1
    functionLinenumber: 4310
    functionLinenumberEnd: 4365
    functionName: addtype
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - _
    - want_bloat
    - error
    - addabbr
    - exit
    - checkabbr
    linkageType: ''
    returnType: int
    signature: int addtype(zic_t utoff, char const *abbr, bool isdst, bool ttisstd,
      bool ttisut)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4374,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4374,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4375,1
    - Dst: growalloc
      Src: /src/postgres/src/timezone/zic.c:4377,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/zic.c:4381,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - t
    - correction
    - rolling
    argTypes:
    - zic_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4386
      start: 4367
    functionDepth: 4
    functionLinenumber: 4367
    functionLinenumberEnd: 4386
    functionName: leapadd
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - _
    - memmove
    - error
    - growalloc
    - exit
    linkageType: ''
    returnType: void
    signature: void leapadd(zic_t t, int correction, int rolling)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4402,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4402,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4403,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:4406,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4412,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4415,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4415,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4416,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4419
      start: 4388
    functionDepth: 1
    functionLinenumber: 4388
    functionLinenumberEnd: 4419
    functionName: adjleap
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - _
    - oadd
    - tadd
    - error
    - exit
    linkageType: ''
    returnType: void
    signature: void adjleap(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - a
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4437
      start: 4422
    functionDepth: 0
    functionLinenumber: 4422
    functionLinenumberEnd: 4437
    functionName: is_space
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_space(char a)
  - BBCount: 54
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 58
    argCount: 1
    argNames:
    - a
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4501
      start: 4440
    functionDepth: 0
    functionLinenumber: 4440
    functionLinenumberEnd: 4501
    functionName: is_alpha
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_alpha(char a)
  - BBCount: 28
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 57
    argCount: 1
    argNames:
    - a
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4567
      start: 4507
    functionDepth: 0
    functionLinenumber: 4507
    functionLinenumberEnd: 4567
    functionName: lowerit
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char lowerit(char a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:4574,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:4574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ap
    - bp
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4578
      start: 4570
    functionDepth: 1
    functionLinenumber: 4570
    functionLinenumberEnd: 4578
    functionName: ciequal
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - lowerit
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833
    signature: ATTRIBUTE_PURE_114833 ciequal(const char *ap, const char *bp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:4584,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:4584,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:4592,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:4592,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - abbr
    - word
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4594
      start: 4580
    functionDepth: 1
    functionLinenumber: 4580
    functionLinenumberEnd: 4594
    functionName: itsabbr
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - lowerit
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833
    signature: ATTRIBUTE_PURE_114833 itsabbr(const char *abbr, const char *word)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:4605,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:4605,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - abbr
    - word
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4608
      start: 4598
    functionDepth: 1
    functionLinenumber: 4598
    functionLinenumberEnd: 4608
    functionName: ciprefix
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - lowerit
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833
    signature: ATTRIBUTE_PURE_114833 ciprefix(char const *abbr, char const *word)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ciprefix
      Src: /src/postgres/src/timezone/zic.c:4624,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:4627,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4627,1
    - Dst: ciequal
      Src: /src/postgres/src/timezone/zic.c:4640,1
    - Dst: ciprefix
      Src: /src/postgres/src/timezone/zic.c:4648,1
    - Dst: itsabbr
      Src: /src/postgres/src/timezone/zic.c:4662,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:4666,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4666,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 31
    argCount: 2
    argNames:
    - word
    - table
    argTypes:
    - char*
    - struct lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4674
      start: 4610
    functionDepth: 3
    functionLinenumber: 4610
    functionLinenumberEnd: 4674
    functionName: byword
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 4
    functionsReached:
    - warning
    - itsabbr
    - _
    - ciequal
    - ciprefix
    linkageType: ''
    returnType: struct lookup
    signature: 'struct lookup *

      byword(const char *word, const struct lookup *table)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_space
      Src: /src/postgres/src/timezone/zic.c:4687,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4702,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4702,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4703,1
    - Dst: is_space
      Src: /src/postgres/src/timezone/zic.c:4705,1
    - Dst: is_space
      Src: /src/postgres/src/timezone/zic.c:4706,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4711,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4711,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4712,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 3
    argNames:
    - cp
    - array
    - arrayelts
    argTypes:
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4717
      start: 4676
    functionDepth: 1
    functionLinenumber: 4676
    functionLinenumberEnd: 4717
    functionName: getfields
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - _
    - error
    - exit
    - is_space
    linkageType: ''
    returnType: int
    signature: int getfields(char *cp, char **array, int arrayelts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4722,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4722,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4724
      start: 4719
    functionDepth: 0
    functionLinenumber: 4719
    functionLinenumberEnd: 4724
    functionName: time_overflow
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - error
    - exit
    - _
    linkageType: ''
    returnType: ATTRIBUTE_NORETURN
    signature: ATTRIBUTE_NORETURN time_overflow(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ckd_add
      Src: /src/postgres/src/timezone/zic.c:4734,1
    - Dst: time_overflow
      Src: /src/postgres/src/timezone/zic.c:4740,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - zic_t
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4741
      start: 4727
    functionDepth: 1
    functionLinenumber: 4727
    functionLinenumberEnd: 4741
    functionName: oadd
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 4
    functionsReached:
    - time_overflow
    - ckd_add
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833_HACK
    signature: ATTRIBUTE_PURE_114833_HACK oadd(zic_t t1, zic_t t2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4752,1
    - Dst: time_overflow
      Src: /src/postgres/src/timezone/zic.c:4756,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - zic_t
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4757
      start: 4748
    functionDepth: 2
    functionLinenumber: 4748
    functionLinenumberEnd: 4757
    functionName: tadd
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 4
    functionsReached:
    - time_overflow
    - oadd
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833_HACK
    signature: ATTRIBUTE_PURE_114833_HACK tadd(zic_t t1, zic_t t2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ckd_mul
      Src: /src/postgres/src/timezone/zic.c:4767,1
    - Dst: time_overflow
      Src: /src/postgres/src/timezone/zic.c:4775,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - zic_t
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4776
      start: 4760
    functionDepth: 1
    functionLinenumber: 4760
    functionLinenumberEnd: 4776
    functionName: omul
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - time_overflow
    - ckd_mul
    linkageType: ''
    returnType: ATTRIBUTE_PURE_114833_HACK
    signature: ATTRIBUTE_PURE_114833_HACK omul(zic_t t1, zic_t t2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:4810,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4811,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:4816,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4817,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:4821,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4827,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4827,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4828,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4832,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4844,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:4851,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:4856,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:4859,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4859,1
    - Dst: omul
      Src: /src/postgres/src/timezone/zic.c:4863,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:4864,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 2
    argNames:
    - rp
    - wantedy
    argTypes:
    - struct rule*
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4865
      start: 4784
    functionDepth: 3
    functionLinenumber: 4784
    functionLinenumberEnd: 4865
    functionName: rpytime
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - warning
    - _
    - oadd
    - tadd
    - error
    - isleap
    - exit
    - omul
    linkageType: ''
    returnType: zic_t
    signature: zic_t rpytime(const struct rule *rp, zic_t wantedy)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:4870,1
    - Dst: is_alpha
      Src: /src/postgres/src/timezone/zic.c:4877,1
    - Dst: is_digit
      Src: /src/postgres/src/timezone/zic.c:4877,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4881,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4883,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4885,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:4887,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4889
      start: 4867
    functionDepth: 3
    functionLinenumber: 4867
    functionLinenumberEnd: 4889
    functionName: checkabbr
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - warning
    - _
    - strcmp
    - is_alpha
    - is_digit
    linkageType: ''
    returnType: void
    signature: void checkabbr(char const *string)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:4908,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:4914,1
    - Dst: memcmp
      Src: /src/postgres/src/timezone/zic.c:4924,1
    - Dst: memcmp
      Src: /src/postgres/src/timezone/zic.c:4927,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:4941,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:4941,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:4942,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/zic.c:4944,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:4945,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - chs
    - pnchs
    - abbr
    argTypes:
    - char[]
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4948
      start: 4904
    functionDepth: 0
    functionLinenumber: 4904
    functionLinenumberEnd: 4948
    functionName: addabbr
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - memcpy
    - _
    - memmove
    - error
    - exit
    - strlen
    - memcmp
    linkageType: ''
    returnType: int
    signature: int addabbr(char chs[TZ_MAX_CHARS], int *pnchs, char const *abbr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: xstrdup
      Src: /src/postgres/src/timezone/zic.c:4966,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:4982,1
    - Dst: mkdir
      Src: /src/postgres/src/timezone/zic.c:4993,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:5009,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:5009,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:5010,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:5011,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:5017,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 18
    argCount: 2
    argNames:
    - argname
    - ancestors
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5019
      start: 4956
    functionDepth: 3
    functionLinenumber: 4956
    functionLinenumberEnd: 5019
    functionName: mkdirs
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 3
    functionsReached:
    - _
    - strchr
    - mkdir
    - xstrdup
    - error
    - exit
    - free
    - strerror
    linkageType: ''
    returnType: void
    signature: void mkdirs(char const *argname, bool ancestors)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cond
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: static_assert
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: static_assert(cond)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - r
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: ckd_add
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckd_add(r, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - r
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: ckd_sub
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckd_sub(r, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - r
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 125
    functionName: ckd_mul
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckd_mul(r, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - r
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    functionName: ckd_add
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckd_add(r, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - r
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    functionName: ckd_sub
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckd_sub(r, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - r
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: ckd_mul
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckd_mul(r, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: TYPE_BIT
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPE_BIT(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: TYPE_SIGNED
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPE_SIGNED(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 147
    functionName: TWOS_COMPLEMENT
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TWOS_COMPLEMENT(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 155
    functionName: max
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: max(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    functionName: min
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: min(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: MAXVAL
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAXVAL(t, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: MINVAL
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MINVAL(t, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: INT_STRLEN_MAXIMUM
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT_STRLEN_MAXIMUM(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    functionName: INITIALIZE
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INITIALIZE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    functionName: unreachable
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unreachable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msgid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 200
    functionName: _
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 256
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(msgid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msgid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 201
    functionName: N_
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: N_(msgid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 279
    functionName: isleap
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isleap(y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 293
    functionName: isleap_sum
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isleap_sum(a, b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress_main.c:47,1
    - Dst: file_exists
      Src: /src/postgres/src/test/regress/pg_regress_main.c:49,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress_main.c:50,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress_main.c:53,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress_main.c:56,1
    - Dst: file_exists
      Src: /src/postgres/src/test/regress/pg_regress_main.c:58,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress_main.c:59,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress_main.c:62,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress_main.c:63,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/regress/pg_regress_main.c:65,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress_main.c:68,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress_main.c:74,1
    - Dst: psprintf
      Src: /src/postgres/src/test/regress/pg_regress_main.c:83,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress_main.c:84,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/pg_regress_main.c:85,1
    - Dst: spawn_process
      Src: /src/postgres/src/test/regress/pg_regress_main.c:87,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress_main.c:91,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress_main.c:91,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress_main.c:93,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress_main.c:96,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/pg_regress_main.c:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 4
    argNames:
    - testname
    - resultfiles
    - expectfiles
    - tags
    argTypes:
    - char*
    - _stringlist**
    - _stringlist**
    - _stringlist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 101
    functionName: psql_start_test
    functionSourceFile: /src/postgres/src/test/regress/pg_regress_main.c
    functionUses: 0
    functionsReached:
    - file_exists
    - setenv
    - spawn_process
    - _
    - pfree
    - appendStringInfo
    - psprintf
    - initStringInfo
    - unsetenv
    - add_stringlist_item
    - exit
    - fprintf
    - snprintf
    linkageType: ''
    returnType: PID_TYPE
    signature: "PID_TYPE psql_start_test(const char *testname,\n\t\t\t\t_stringlist
      **resultfiles,\n\t\t\t\t_stringlist **expectfiles,\n\t\t\t\t_stringlist **tags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress_main.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 108
    functionName: psql_init
    functionSourceFile: /src/postgres/src/test/regress/pg_regress_main.c
    functionUses: 0
    functionsReached:
    - add_stringlist_item
    linkageType: ''
    returnType: void
    signature: void psql_init(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regression_main
      Src: /src/postgres/src/test/regress/pg_regress_main.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 117
    functionName: main
    functionSourceFile: /src/postgres/src/test/regress/pg_regress_main.c
    functionUses: 3
    functionsReached:
    - regression_main
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: EXPECT_TRUE
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPECT_TRUE(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - result_expr
    - ','
    - expected_expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: EXPECT_EQ_U32
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPECT_EQ_U32(result_expr, expected_expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - result_expr
    - ','
    - expected_expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 85
    functionName: EXPECT_EQ_U64
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPECT_EQ_U64(result_expr, expected_expr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/test/regress/regress.c:104,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/test/regress/regress.c:105,1
    - Dst: regress_lseg_construct
      Src: /src/postgres/src/test/regress/regress.c:116,1
    - Dst: regress_lseg_construct
      Src: /src/postgres/src/test/regress/regress.c:119,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/test/regress/regress.c:120,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/test/regress/regress.c:120,1
    - Dst: LsegPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:121,1
    - Dst: LsegPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:122,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/regress/regress.c:128,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/regress/regress.c:135,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/test/regress/regress.c:135,1
    - Dst: LsegPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:136,1
    - Dst: LsegPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 138
    functionName: interpt_pp
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_RETURN_NULL
    - regress_lseg_construct
    - PG_GETARG_PATH_P
    - DirectFunctionCall2
    - DatumGetBool
    - LsegPGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum interpt_pp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - lseg
    - pt1
    - pt2
    argTypes:
    - LSEG*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 149
    functionName: regress_lseg_construct
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void regress_lseg_construct(LSEG *lseg, Point *pt1, Point *pt2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/test/regress/regress.c:156,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/regress/regress.c:160,1
    - Dst: GetAttributeByName
      Src: /src/postgres/src/test/regress/regress.c:160,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/regress/regress.c:162,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 164
    functionName: overpaid
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_HEAPTUPLEHEADER
    - DatumGetInt32
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - GetAttributeByName
    linkageType: ''
    returnType: Datum
    signature: Datum overpaid(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/test/regress/regress.c:186,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:204,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:205,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:206,1
    - Dst: palloc_object
      Src: /src/postgres/src/test/regress/regress.c:209,1
    - Dst: atof
      Src: /src/postgres/src/test/regress/regress.c:210,1
    - Dst: atof
      Src: /src/postgres/src/test/regress/regress.c:211,1
    - Dst: atof
      Src: /src/postgres/src/test/regress/regress.c:212,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:214,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 215
    functionName: widget_in
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_GETARG_CSTRING
    - ereport
    - atof
    - errmsg
    - palloc_object
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum widget_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/regress/regress.c:220,1
    - Dst: psprintf
      Src: /src/postgres/src/test/regress/regress.c:221,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/test/regress/regress.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 225
    functionName: widget_out
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - psprintf
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum widget_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/test/regress/regress.c:232,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/regress/regress.c:233,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/test/regress/regress.c:236,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/test/regress/regress.c:236,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:237,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:238,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 241
    functionName: pt_in_widget
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PointPGetDatum
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - DirectFunctionCall2
    - PG_GETARG_POINTER
    - DatumGetFloat8
    linkageType: ''
    returnType: Datum
    signature: Datum pt_in_widget(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/test/regress/regress.c:248,1
    - Dst: palloc0
      Src: /src/postgres/src/test/regress/regress.c:253,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/test/regress/regress.c:261,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 262
    functionName: reverse_name
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - palloc0
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum reverse_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/test/regress/regress.c:272,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:273,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/regress/regress.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 278
    functionName: trigger_return_old
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - CALLED_AS_TRIGGER
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum trigger_return_old(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/test/regress/regress.c:296,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:297,1
    - Dst: sscanf
      Src: /src/postgres/src/test/regress/regress.c:300,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 310
    functionName: int44in
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - sscanf
    - PG_RETURN_POINTER
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum int44in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/regress/regress.c:320,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:321,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/regress.c:323,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/test/regress/regress.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 330
    functionName: int44out
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - snprintf
    - PG_RETURN_CSTRING
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum int44out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/regress/regress.c:336,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/regress/regress.c:336,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/test/regress/regress.c:338,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/regress/regress.c:339,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/regress/regress.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 340
    functionName: test_canonicalize_path
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - canonicalize_path
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_canonicalize_path(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/test/regress/regress.c:346,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/test/regress/regress.c:363,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/test/regress/regress.c:364,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/test/regress/regress.c:365,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/test/regress/regress.c:369,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/test/regress/regress.c:370,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:374,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:375,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/test/regress/regress.c:377,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/regress/regress.c:379,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/test/regress/regress.c:388,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/test/regress/regress.c:390,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/test/regress/regress.c:391,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/regress/regress.c:394,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/test/regress/regress.c:397,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/test/regress/regress.c:401,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/test/regress/regress.c:402,1
    - Dst: palloc0
      Src: /src/postgres/src/test/regress/regress.c:407,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/test/regress/regress.c:407,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:408,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/test/regress/regress.c:408,1
    - Dst: palloc0
      Src: /src/postgres/src/test/regress/regress.c:412,1
    - Dst: SET_VARTAG_EXTERNAL
      Src: /src/postgres/src/test/regress/regress.c:414,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:415,1
    - Dst: VARDATA_EXTERNAL
      Src: /src/postgres/src/test/regress/regress.c:415,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/regress/regress.c:418,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/regress/regress.c:421,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/regress.c:422,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/regress.c:423,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/test/regress/regress.c:424,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/regress/regress.c:426,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:437,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 438
    functionName: make_tuple_indirect
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - detoast_external_attr
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - heap_form_tuple
    - PG_RETURN_POINTER
    - VARATT_IS_EXTERNAL_ONDISK
    - memcpy
    - VARDATA_EXTERNAL
    - HeapTupleHeaderGetTypMod
    - pfree
    - VARSIZE_ANY
    - PointerGetDatum
    - heap_deform_tuple
    - PG_GETARG_HEAPTUPLEHEADER
    - HeapTupleHeaderGetTypeId
    - SET_VARTAG_EXTERNAL
    - TupleDescAttr
    - VARATT_IS_EXTERNAL_INDIRECT
    - palloc0
    - MemoryContextSwitchTo
    - lookup_rowtype_tupdesc
    - palloc
    - ItemPointerSetInvalid
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum make_tuple_indirect(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:455,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/regress/regress.c:458,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/test/regress/regress.c:460,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:462,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 463
    functionName: get_environ
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - construct_array_builtin
    - CStringGetTextDatum
    - PG_RETURN_POINTER
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum get_environ(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/regress/regress.c:470,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/regress/regress.c:470,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/regress/regress.c:471,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/regress/regress.c:471,1
    - Dst: superuser
      Src: /src/postgres/src/test/regress/regress.c:473,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:474,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/regress.c:476,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:477,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/regress/regress.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 480
    functionName: regress_setenv
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - superuser
    - PG_RETURN_VOID
    - setenv
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum regress_setenv(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/regress/regress.c:488,1
    - Dst: superuser
      Src: /src/postgres/src/test/regress/regress.c:490,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:491,1
    - Dst: kill
      Src: /src/postgres/src/test/regress/regress.c:493,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/regress/regress.c:495,1
    - Dst: pg_usleep
      Src: /src/postgres/src/test/regress/regress.c:496,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:500,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/regress/regress.c:502,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 503
    functionName: wait_pid
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - superuser
    - PG_RETURN_VOID
    - kill
    - CHECK_FOR_INTERRUPTS
    - pg_usleep
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum wait_pid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_init_flag
      Src: /src/postgres/src/test/regress/regress.c:510,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:511,1
    - Dst: pg_atomic_unlocked_test_flag
      Src: /src/postgres/src/test/regress/regress.c:511,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:512,1
    - Dst: pg_atomic_test_set_flag
      Src: /src/postgres/src/test/regress/regress.c:512,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:513,1
    - Dst: pg_atomic_unlocked_test_flag
      Src: /src/postgres/src/test/regress/regress.c:513,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:514,1
    - Dst: pg_atomic_test_set_flag
      Src: /src/postgres/src/test/regress/regress.c:514,1
    - Dst: pg_atomic_clear_flag
      Src: /src/postgres/src/test/regress/regress.c:515,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:516,1
    - Dst: pg_atomic_unlocked_test_flag
      Src: /src/postgres/src/test/regress/regress.c:516,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:517,1
    - Dst: pg_atomic_test_set_flag
      Src: /src/postgres/src/test/regress/regress.c:517,1
    - Dst: pg_atomic_clear_flag
      Src: /src/postgres/src/test/regress/regress.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 519
    functionName: test_atomic_flag
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - EXPECT_TRUE
    - pg_atomic_unlocked_test_flag
    - pg_atomic_test_set_flag
    - pg_atomic_init_flag
    - pg_atomic_clear_flag
    linkageType: ''
    returnType: void
    signature: void test_atomic_flag(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/test/regress/regress.c:528,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:529,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:529,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/test/regress/regress.c:530,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:531,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:531,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:532,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:532,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:532,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:534,1
    - Dst: pg_atomic_fetch_sub_u32
      Src: /src/postgres/src/test/regress/regress.c:534,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:535,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/test/regress/regress.c:535,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:536,1
    - Dst: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/test/regress/regress.c:536,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:537,1
    - Dst: pg_atomic_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:537,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:538,1
    - Dst: pg_atomic_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:538,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:541,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:541,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:542,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:542,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:543,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:544,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:544,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:545,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:545,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:547,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:547,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:549,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:549,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:551,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:552,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:552,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:553,1
    - Dst: pg_atomic_fetch_sub_u32
      Src: /src/postgres/src/test/regress/regress.c:553,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:554,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:554,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:555,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/test/regress/regress.c:555,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/test/regress/regress.c:556,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:558,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:558,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:560,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:560,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:562,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:562,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:564,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:564,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:568,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:568,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:574,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:578,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:579,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:579,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/test/regress/regress.c:580,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:583,1
    - Dst: pg_atomic_fetch_or_u32
      Src: /src/postgres/src/test/regress/regress.c:583,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:584,1
    - Dst: pg_atomic_fetch_or_u32
      Src: /src/postgres/src/test/regress/regress.c:584,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:585,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:585,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:587,1
    - Dst: pg_atomic_fetch_and_u32
      Src: /src/postgres/src/test/regress/regress.c:587,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:588,1
    - Dst: pg_atomic_fetch_and_u32
      Src: /src/postgres/src/test/regress/regress.c:588,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:590,1
    - Dst: pg_atomic_fetch_and_u32
      Src: /src/postgres/src/test/regress/regress.c:590,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 591
    functionName: test_atomic_uint32
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_atomic_init_u32
    - pg_atomic_sub_fetch_u32
    - EXPECT_TRUE
    - pg_atomic_compare_exchange_u32
    - EXPECT_EQ_U32
    - pg_atomic_fetch_and_u32
    - pg_atomic_fetch_sub_u32
    - pg_atomic_write_u32
    - pg_atomic_read_u32
    - pg_atomic_fetch_or_u32
    - pg_atomic_exchange_u32
    - pg_atomic_fetch_add_u32
    - pg_atomic_add_fetch_u32
    linkageType: ''
    returnType: void
    signature: void test_atomic_uint32(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/test/regress/regress.c:600,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:601,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:601,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/test/regress/regress.c:602,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:603,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:603,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:604,1
    - Dst: pg_atomic_fetch_add_u64
      Src: /src/postgres/src/test/regress/regress.c:604,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:604,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:606,1
    - Dst: pg_atomic_fetch_sub_u64
      Src: /src/postgres/src/test/regress/regress.c:606,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:607,1
    - Dst: pg_atomic_sub_fetch_u64
      Src: /src/postgres/src/test/regress/regress.c:607,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:608,1
    - Dst: pg_atomic_add_fetch_u64
      Src: /src/postgres/src/test/regress/regress.c:608,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:609,1
    - Dst: pg_atomic_exchange_u64
      Src: /src/postgres/src/test/regress/regress.c:609,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:610,1
    - Dst: pg_atomic_exchange_u64
      Src: /src/postgres/src/test/regress/regress.c:610,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:614,1
    - Dst: pg_atomic_compare_exchange_u64
      Src: /src/postgres/src/test/regress/regress.c:614,1
    - Dst: pg_atomic_compare_exchange_u64
      Src: /src/postgres/src/test/regress/regress.c:620,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:624,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:625,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:625,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/test/regress/regress.c:627,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:630,1
    - Dst: pg_atomic_fetch_or_u64
      Src: /src/postgres/src/test/regress/regress.c:630,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:631,1
    - Dst: pg_atomic_fetch_or_u64
      Src: /src/postgres/src/test/regress/regress.c:631,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:632,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:632,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:634,1
    - Dst: pg_atomic_fetch_and_u64
      Src: /src/postgres/src/test/regress/regress.c:634,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:635,1
    - Dst: pg_atomic_fetch_and_u64
      Src: /src/postgres/src/test/regress/regress.c:635,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:637,1
    - Dst: pg_atomic_fetch_and_u64
      Src: /src/postgres/src/test/regress/regress.c:637,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 638
    functionName: test_atomic_uint64
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_atomic_fetch_sub_u64
    - EXPECT_TRUE
    - pg_atomic_fetch_or_u64
    - pg_atomic_init_u64
    - pg_atomic_sub_fetch_u64
    - pg_atomic_exchange_u64
    - pg_atomic_add_fetch_u64
    - pg_atomic_compare_exchange_u64
    - pg_atomic_write_u64
    - EXPECT_EQ_U64
    - pg_atomic_read_u64
    - pg_atomic_fetch_add_u64
    - pg_atomic_fetch_and_u64
    linkageType: ''
    returnType: void
    signature: void test_atomic_uint64(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:663,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:664,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/test/regress/regress.c:667,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/regress/regress.c:668,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/regress/regress.c:669,1
    - Dst: S_INIT_LOCK
      Src: /src/postgres/src/test/regress/regress.c:672,1
    - Dst: S_LOCK
      Src: /src/postgres/src/test/regress/regress.c:673,1
    - Dst: S_UNLOCK
      Src: /src/postgres/src/test/regress/regress.c:674,1
    - Dst: s_lock
      Src: /src/postgres/src/test/regress/regress.c:677,1
    - Dst: S_UNLOCK
      Src: /src/postgres/src/test/regress/regress.c:678,1
    - Dst: S_LOCK
      Src: /src/postgres/src/test/regress/regress.c:685,1
    - Dst: TAS
      Src: /src/postgres/src/test/regress/regress.c:687,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:688,1
    - Dst: TAS_SPIN
      Src: /src/postgres/src/test/regress/regress.c:691,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:692,1
    - Dst: S_UNLOCK
      Src: /src/postgres/src/test/regress/regress.c:695,1
    - Dst: memcmp
      Src: /src/postgres/src/test/regress/regress.c:702,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:703,1
    - Dst: memcmp
      Src: /src/postgres/src/test/regress/regress.c:704,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:705,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 707
    functionName: test_spinlock
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - memcmp
    - S_UNLOCK
    - TAS_SPIN
    - memcpy
    - SpinLockInit
    - SpinLockRelease
    - S_LOCK
    - TAS
    - SpinLockAcquire
    - S_INIT_LOCK
    - s_lock
    linkageType: ''
    returnType: void
    signature: void test_spinlock(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_atomic_flag
      Src: /src/postgres/src/test/regress/regress.c:713,1
    - Dst: test_atomic_uint32
      Src: /src/postgres/src/test/regress/regress.c:715,1
    - Dst: test_atomic_uint64
      Src: /src/postgres/src/test/regress/regress.c:717,1
    - Dst: test_spinlock
      Src: /src/postgres/src/test/regress/regress.c:723,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 710
    functionDepth: 2
    functionLinenumber: 710
    functionLinenumberEnd: 726
    functionName: test_atomic_ops
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - test_atomic_uint32
    - test_atomic_flag
    - test_atomic_uint64
    - PG_RETURN_BOOL
    - test_spinlock
    linkageType: ''
    returnType: Datum
    signature: Datum test_atomic_ops(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:732,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/regress/regress.c:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 734
    functionName: test_fdw_handler
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum test_fdw_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetUserMapping
      Src: /src/postgres/src/test/regress/regress.c:741,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/regress/regress.c:741,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/regress/regress.c:741,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/regress/regress.c:742,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/regress/regress.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 743
    functionName: test_fdw_connection
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - PG_GETARG_OID
    - GetUserMapping
    linkageType: ''
    returnType: Datum
    signature: Datum test_fdw_connection(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/regress/regress.c:749,1
    - Dst: IsCatalogTextUniqueIndexOid
      Src: /src/postgres/src/test/regress/regress.c:749,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/regress/regress.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 750
    functionName: is_catalog_text_unique_index_oid
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - BoolGetDatum
    - PG_GETARG_OID
    - IsCatalogTextUniqueIndexOid
    linkageType: ''
    returnType: Datum
    signature: Datum is_catalog_text_unique_index_oid(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/regress/regress.c:756,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:759,1
    - Dst: join_selectivity
      Src: /src/postgres/src/test/regress/regress.c:769,1
    - Dst: restriction_selectivity
      Src: /src/postgres/src/test/regress/regress.c:775,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:784,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:794,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:802,1
    - Dst: linitial
      Src: /src/postgres/src/test/regress/regress.c:805,1
    - Dst: lsecond
      Src: /src/postgres/src/test/regress/regress.c:806,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:808,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:810,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/regress/regress.c:813,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/regress/regress.c:814,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:822,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 823
    functionName: test_support_func
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - restriction_selectivity
    - linitial
    - join_selectivity
    - lsecond
    - DatumGetInt32
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum test_support_func(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/regress/regress.c:829,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:831,1
    - Dst: list_length
      Src: /src/postgres/src/test/regress/regress.c:850,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:852,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:852,1
    - Dst: list_length
      Src: /src/postgres/src/test/regress/regress.c:852,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:853,1
    - Dst: linitial
      Src: /src/postgres/src/test/regress/regress.c:857,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:858,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:860,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:860,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:861,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:867,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:867,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:868,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/regress/regress.c:870,1
    - Dst: lsecond
      Src: /src/postgres/src/test/regress/regress.c:873,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:874,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:876,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:876,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:877,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:883,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:883,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:884,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/regress/regress.c:886,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/regress/regress.c:889,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/regress.c:890,1
    - Dst: quote_identifier
      Src: /src/postgres/src/test/regress/regress.c:891,1
    - Dst: quote_identifier
      Src: /src/postgres/src/test/regress/regress.c:892,1
    - Dst: lthird
      Src: /src/postgres/src/test/regress/regress.c:895,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:896,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/regress.c:903,1
    - Dst: quote_identifier
      Src: /src/postgres/src/test/regress/regress.c:904,1
    - Dst: prepare_sql_fn_parse_info
      Src: /src/postgres/src/test/regress/regress.c:908,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/test/regress/regress.c:913,1
    - Dst: list_length
      Src: /src/postgres/src/test/regress/regress.c:914,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:916,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:916,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:917,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/test/regress/regress.c:921,1
    - Dst: linitial
      Src: /src/postgres/src/test/regress/regress.c:921,1
    - Dst: list_length
      Src: /src/postgres/src/test/regress/regress.c:925,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:927,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:927,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:928,1
    - Dst: linitial
      Src: /src/postgres/src/test/regress/regress.c:931,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:932,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:934,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:934,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:935,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:938,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:941,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 942
    functionName: test_inline_in_from_support_func
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - pg_parse_query
    - lthird
    - linitial
    - appendStringInfo
    - initStringInfo
    - ereport
    - quote_identifier
    - prepare_sql_fn_parse_info
    - pg_analyze_and_rewrite_withcb
    - lsecond
    - TextDatumGetCString
    - errmsg
    - list_length
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum test_inline_in_from_support_func(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/regress/regress.c:948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 945
    functionDepth: 1
    functionLinenumber: 945
    functionLinenumberEnd: 949
    functionName: test_opclass_options_func
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum test_opclass_options_func(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/test/regress/regress.c:965,1
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/test/regress/regress.c:967,1
    - Dst: pg_encoding_set_invalid
      Src: /src/postgres/src/test/regress/regress.c:969,1
    - Dst: strnlen
      Src: /src/postgres/src/test/regress/regress.c:970,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:972,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/test/regress/regress.c:975,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:977,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/regress/regress.c:980,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:982,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/regress/regress.c:985,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:987,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/regress.c:990,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/regress/regress.c:993,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:995,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/regress/regress.c:1000,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 1001
    functionName: test_enc_setup
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_encoding_mblen
    - strnlen
    - PG_RETURN_VOID
    - PG_VALID_ENCODING
    - pg_encoding_verifymbstr
    - pg_encoding_set_invalid
    - memset
    - pg_encoding_max_length
    linkageType: ''
    returnType: Datum
    signature: Datum test_enc_setup(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/regress/regress.c:1021,1
    - Dst: NameStr
      Src: /src/postgres/src/test/regress/regress.c:1022,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/test/regress/regress.c:1022,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/test/regress/regress.c:1023,1
    - Dst: NameStr
      Src: /src/postgres/src/test/regress/regress.c:1024,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/test/regress/regress.c:1024,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/test/regress/regress.c:1025,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/regress/regress.c:1026,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1041,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:1042,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1043,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1046,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:1047,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1048,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/test/regress/regress.c:1052,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1053,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/test/regress/regress.c:1054,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/regress/regress.c:1056,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/regress/regress.c:1057,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/regress/regress.c:1064,1
    - Dst: report_invalid_encoding
      Src: /src/postgres/src/test/regress/regress.c:1073,1
    - Dst: Assert
      Src: /src/postgres/src/test/regress/regress.c:1080,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:1082,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/regress/regress.c:1083,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:1084,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/regress/regress.c:1084,1
    - Dst: FindDefaultConversionProc
      Src: /src/postgres/src/test/regress/regress.c:1089,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/regress/regress.c:1090,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1091,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:1092,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1093,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/test/regress/regress.c:1094,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/test/regress/regress.c:1095,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1098,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:1099,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1100,1
    - Dst: errdetail
      Src: /src/postgres/src/test/regress/regress.c:1101,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/test/regress/regress.c:1105,1
    - Dst: pg_do_encoding_conversion_buf
      Src: /src/postgres/src/test/regress/regress.c:1108,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/regress.c:1114,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:1119,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/regress/regress.c:1120,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:1121,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/regress/regress.c:1121,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/regress.c:1123,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/regress/regress.c:1126,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/regress/regress.c:1127,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/regress/regress.c:1128,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/regress/regress.c:1130,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/test/regress/regress.c:1130,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1018
    functionDepth: 1
    functionLinenumber: 1018
    functionLinenumberEnd: 1131
    functionName: test_enc_conversion
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - errcode
    - heap_form_tuple
    - VARDATA_ANY
    - NameStr
    - SET_VARSIZE
    - VARDATA
    - report_invalid_encoding
    - elog
    - PG_GETARG_NAME
    - memcpy
    - errdetail
    - Assert
    - pfree
    - Int32GetDatum
    - PG_RETURN_DATUM
    - VARSIZE_ANY_EXHDR
    - pg_encoding_to_char
    - errmsg
    - PointerGetDatum
    - OidIsValid
    - get_call_result_type
    - pg_do_encoding_conversion_buf
    - ereport
    - pg_char_to_encoding
    - pg_encoding_verifymbstr
    - strlen
    - BlessTupleDesc
    - PG_GETARG_BYTEA_PP
    - PG_GETARG_BOOL
    - MemoryContextAlloc
    - HeapTupleGetDatum
    - FindDefaultConversionProc
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum test_enc_conversion(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/regress/regress.c:1138,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/regress/regress.c:1138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1135
    functionDepth: 1
    functionLinenumber: 1135
    functionLinenumberEnd: 1139
    functionName: test_bytea_to_text
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum test_bytea_to_text(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/test/regress/regress.c:1146,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/regress/regress.c:1146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1143
    functionDepth: 1
    functionLinenumber: 1143
    functionLinenumberEnd: 1147
    functionName: test_text_to_bytea
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_text_to_bytea(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/regress/regress.c:1154,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/regress/regress.c:1154,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/regress/regress.c:1155,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/regress/regress.c:1155,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/regress/regress.c:1156,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/regress/regress.c:1157,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/regress/regress.c:1158,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/regress/regress.c:1159,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/regress.c:1162,1
    - Dst: pg_mblen_unbounded
      Src: /src/postgres/src/test/regress/regress.c:1163,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/regress.c:1164,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/test/regress/regress.c:1165,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/regress.c:1166,1
    - Dst: pg_mblen_with_len
      Src: /src/postgres/src/test/regress/regress.c:1167,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/regress.c:1168,1
    - Dst: pg_mblen_range
      Src: /src/postgres/src/test/regress/regress.c:1169,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/regress.c:1170,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/test/regress/regress.c:1171,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/test/regress/regress.c:1171,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1173,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/regress/regress.c:1175,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1151
    functionDepth: 1
    functionLinenumber: 1151
    functionLinenumberEnd: 1176
    functionName: test_mblen_func
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - pg_encoding_mblen
    - PG_GETARG_BYTEA_PP
    - elog
    - pg_mblen_range
    - strcmp
    - pg_mblen_unbounded
    - PG_RETURN_INT32
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - pg_char_to_encoding
    - text_to_cstring
    - pg_mblen_with_len
    - pg_mblen_cstr
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_mblen_func(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/regress/regress.c:1182,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/regress/regress.c:1182,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/regress/regress.c:1183,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/regress/regress.c:1184,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/regress/regress.c:1185,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:1186,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/test/regress/regress.c:1191,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1193,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:1197,1
    - Dst: pg_encoding_mb2wchar_with_len
      Src: /src/postgres/src/test/regress/regress.c:1198,1
    - Dst: Assert
      Src: /src/postgres/src/test/regress/regress.c:1202,1
    - Dst: Assert
      Src: /src/postgres/src/test/regress/regress.c:1203,1
    - Dst: Assert
      Src: /src/postgres/src/test/regress/regress.c:1204,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/test/regress/regress.c:1207,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/test/regress/regress.c:1215,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/test/regress/regress.c:1215,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1179
    functionDepth: 1
    functionLinenumber: 1179
    functionLinenumberEnd: 1216
    functionName: test_text_to_wchars
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - construct_array_builtin
    - Assert
    - UInt32GetDatum
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - pg_char_to_encoding
    - PG_RETURN_ARRAYTYPE_P
    - text_to_cstring
    - pg_encoding_mb2wchar_with_len
    - palloc
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_text_to_wchars(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/regress/regress.c:1222,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/regress/regress.c:1222,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/test/regress/regress.c:1223,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/test/regress/regress.c:1232,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1234,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/test/regress/regress.c:1236,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:1240,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1245,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/regress/regress.c:1246,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:1249,1
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/test/regress/regress.c:1249,1
    - Dst: pg_encoding_wchar2mb_with_len
      Src: /src/postgres/src/test/regress/regress.c:1250,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:1258,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/regress/regress.c:1259,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:1260,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/regress/regress.c:1260,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/regress/regress.c:1262,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1219
    functionDepth: 1
    functionLinenumber: 1219
    functionLinenumberEnd: 1263
    functionName: test_wchars_to_text
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - deconstruct_array_builtin
    - memcpy
    - PG_RETURN_TEXT_P
    - pg_char_to_encoding
    - DatumGetInt32
    - text_to_cstring
    - PG_GETARG_ARRAYTYPE_P
    - palloc
    - pg_encoding_wchar2mb_with_len
    - SET_VARSIZE
    - VARDATA
    - pg_encoding_max_length
    linkageType: ''
    returnType: Datum
    signature: Datum test_wchars_to_text(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:1269,1
    - Dst: pg_valid_server_encoding
      Src: /src/postgres/src/test/regress/regress.c:1269,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/regress/regress.c:1269,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/regress/regress.c:1269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1266
    functionDepth: 1
    functionLinenumber: 1266
    functionLinenumberEnd: 1270
    functionName: test_valid_server_encoding
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - text_to_cstring
    - pg_valid_server_encoding
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_valid_server_encoding(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/regress/regress.c:1277,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/regress/regress.c:1278,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:1280,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/test/regress/regress.c:1280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1274
    functionDepth: 1
    functionLinenumber: 1274
    functionLinenumberEnd: 1281
    functionName: binary_coercible
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - IsBinaryCoercible
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum binary_coercible(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ceil
      Src: /src/postgres/src/test/regress/regress.c:1297,1
    - Dst: log10
      Src: /src/postgres/src/test/regress/regress.c:1297,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1298,1
    - Dst: GetRelationPath
      Src: /src/postgres/src/test/regress/regress.c:1301,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/regress.c:1304,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1305,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/regress.c:1306,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/regress/regress.c:1308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1287
    functionDepth: 1
    functionLinenumber: 1287
    functionLinenumberEnd: 1309
    functionName: test_relpath
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - log10
    - GetRelationPath
    - ceil
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum test_relpath(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setenv
      Src: /src/postgres/src/test/regress/regress.c:1340,1
    - Dst: pg_bindtextdomain
      Src: /src/postgres/src/test/regress/regress.c:1342,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/regress.c:1351,1
    - Dst: GetConfigOption
      Src: /src/postgres/src/test/regress/regress.c:1351,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1352,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1354,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1357,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1358,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1359,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1360,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1361,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1362,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1363,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1364,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1366,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1367,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1368,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1369,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1370,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1371,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1372,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1373,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1375,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1376,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1377,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1378,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1379,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1380,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1381,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1382,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1384,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1385,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1386,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1387,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1388,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1389,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:1390,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:1391,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/regress/regress.c:1393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1319
    functionDepth: 1
    functionLinenumber: 1319
    functionLinenumberEnd: 1394
    functionName: test_translation
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - GetConfigOption
    - setenv
    - strcmp
    - ereport
    - errmsg
    - pg_bindtextdomain
    linkageType: ''
    returnType: Datum
    signature: Datum test_translation(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/test/regress/regress.c:1402,1
    - Dst: lengthof
      Src: /src/postgres/src/test/regress/regress.c:1412,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/test/regress/regress.c:1416,1
    - Dst: INSTR_TIME_ADD_NANOSEC
      Src: /src/postgres/src/test/regress/regress.c:1417,1
    - Dst: INSTR_TIME_GET_NANOSEC
      Src: /src/postgres/src/test/regress/regress.c:1418,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1421,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:1428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1398
    functionDepth: 1
    functionLinenumber: 1398
    functionLinenumberEnd: 1429
    functionName: test_instr_time
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - INSTR_TIME_ADD_NANOSEC
    - INT64CONST
    - INSTR_TIME_SET_ZERO
    - PG_RETURN_BOOL
    - INSTR_TIME_GET_NANOSEC
    - lengthof
    linkageType: ''
    returnType: Datum
    signature: Datum test_instr_time(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/regress/regress.c:1443,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/regress/regress.c:1444,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/regress/regress.c:1445,1
    - Dst: PGLZ_MAX_OUTPUT
      Src: /src/postgres/src/test/regress/regress.c:1446,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:1450,1
    - Dst: pglz_compress
      Src: /src/postgres/src/test/regress/regress.c:1451,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/regress/regress.c:1451,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/regress/regress.c:1454,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/regress/regress.c:1456,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/test/regress/regress.c:1457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1440
    functionDepth: 1
    functionLinenumber: 1440
    functionLinenumberEnd: 1458
    functionName: test_pglz_compress
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_BYTEA_P
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - VARDATA
    - PGLZ_MAX_OUTPUT
    - PG_RETURN_NULL
    - SET_VARSIZE
    - pglz_compress
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum test_pglz_compress(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/regress/regress.c:1474,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/regress/regress.c:1475,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/regress/regress.c:1476,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/regress/regress.c:1477,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/regress/regress.c:1478,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1483,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:1485,1
    - Dst: pglz_decompress
      Src: /src/postgres/src/test/regress/regress.c:1487,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/regress/regress.c:1487,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1490,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/regress/regress.c:1492,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/test/regress/regress.c:1493,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1471
    functionDepth: 1
    functionLinenumber: 1471
    functionLinenumberEnd: 1494
    functionName: test_pglz_decompress
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - PG_GETARG_BOOL
    - pglz_decompress
    - PG_RETURN_BYTEA_P
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - VARDATA
    - palloc
    - SET_VARSIZE
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_pglz_decompress(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 165
    functionName: plan
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: plan(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 166
    functionName: note
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: note(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    functionName: note_detail
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: note_detail(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    functionName: diag
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: diag(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    functionName: diag_detail
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: diag_detail(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 170
    functionName: diag_end
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: diag_end()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 171
    functionName: note_end
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: note_end()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: bail_noatexit
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bail_noatexit(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: bail
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bail(...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/postgres/src/test/regress/pg_regress.c:183,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:186,1
    - Dst: setrlimit
      Src: /src/postgres/src/test/regress/pg_regress.c:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 194
    functionName: unlimit_core_size
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - diag
    - getrlimit
    - setrlimit
    linkageType: ''
    returnType: void
    signature: void unlimit_core_size(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/test/regress/pg_regress.c:204,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - listhead
    - str
    argTypes:
    - _stringlist**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 217
    functionName: add_stringlist_item
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 3
    functionsReached:
    - pg_malloc_object
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void add_stringlist_item(_stringlist **listhead, const char *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:228,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:229,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - listhead
    argTypes:
    - _stringlist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: free_stringlist
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - free_stringlist
    - free
    linkageType: ''
    returnType: void
    signature: void free_stringlist(_stringlist **listhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:244,1
    - Dst: strsep
      Src: /src/postgres/src/test/regress/pg_regress.c:246,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:248,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - s
    - delim
    - listhead
    argTypes:
    - char*
    - char*
    - _stringlist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 251
    functionName: split_to_stringlist
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - free
    - strsep
    - add_stringlist_item
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void split_to_stringlist(const char *s, const char *delim, _stringlist
      **listhead)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/test/regress/pg_regress.c:264,1
    - Dst: emit_tap_output_v
      Src: /src/postgres/src/test/regress/pg_regress.c:265,1
    - Dst: va_end
      Src: /src/postgres/src/test/regress/pg_regress.c:266,1
    - Dst: _exit
      Src: /src/postgres/src/test/regress/pg_regress.c:269,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - noatexit
    - fmt
    argTypes:
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 272
    functionName: bail_out
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - emit_tap_output_v
    - exit
    - _exit
    linkageType: ''
    returnType: void
    signature: void bail_out(bool noatexit, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emit_tap_output
      Src: /src/postgres/src/test/regress/pg_regress.c:295,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ok
    - testname
    - runtime
    - parallel
    argTypes:
    - bool
    - char*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 305
    functionName: test_status_print
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - emit_tap_output
    - strlen
    linkageType: ''
    returnType: void
    signature: void test_status_print(bool ok, const char *testname, double runtime,
      bool parallel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_status_print
      Src: /src/postgres/src/test/regress/pg_regress.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - testname
    - runtime
    - parallel
    argTypes:
    - char*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 313
    functionName: test_status_ok
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - test_status_print
    linkageType: ''
    returnType: void
    signature: void test_status_ok(const char *testname, double runtime, bool parallel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:323,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/test/regress/pg_regress.c:325,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:327,1
    - Dst: test_status_print
      Src: /src/postgres/src/test/regress/pg_regress.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - testname
    - runtime
    - parallel
    argTypes:
    - char*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 332
    functionName: test_status_failed
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - test_status_print
    - makeStringInfo
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void test_status_failed(const char *testname, double runtime, bool
      parallel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/test/regress/pg_regress.c:340,1
    - Dst: emit_tap_output_v
      Src: /src/postgres/src/test/regress/pg_regress.c:341,1
    - Dst: va_end
      Src: /src/postgres/src/test/regress/pg_regress.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type
    - fmt
    argTypes:
    - TAPtype
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 343
    functionName: emit_tap_output
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - va_start
    - emit_tap_output_v
    - va_end
    linkageType: ''
    returnType: void
    signature: void emit_tap_output(TAPtype type, const char *fmt, ...)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:379,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:381,1
    - Dst: va_copy
      Src: /src/postgres/src/test/regress/pg_regress.c:386,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:396,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:398,1
    - Dst: vfprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:401,1
    - Dst: vfprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:405,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:424,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:426,1
    - Dst: va_end
      Src: /src/postgres/src/test/regress/pg_regress.c:429,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:433,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:435,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:437,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 42
    argCount: 3
    argNames:
    - type
    - fmt
    - argp
    argTypes:
    - TAPtype
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 438
    functionName: emit_tap_output_v
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 2
    functionsReached:
    - vfprintf
    - va_end
    - fflush
    - va_copy
    - fprintf
    linkageType: ''
    returnType: void
    signature: void emit_tap_output_v(TAPtype type, const char *fmt, va_list argp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:452,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:457,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:458,1
    - Dst: bail_noatexit
      Src: /src/postgres/src/test/regress/pg_regress.c:462,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:462,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 467
    functionName: stop_postmaster
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 6
    functionsReached:
    - _
    - bail_noatexit
    - fflush
    - system
    - snprintf
    linkageType: ''
    returnType: void
    signature: void stop_postmaster(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/test/regress/pg_regress.c:481,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:482,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:483,1
    - Dst: rmdir
      Src: /src/postgres/src/test/regress/pg_regress.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 485
    functionName: remove_temp
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - Assert
    - rmdir
    - unlink
    linkageType: ''
    returnType: void
    signature: void remove_temp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove_temp
      Src: /src/postgres/src/test/regress/pg_regress.c:493,1
    - Dst: pqsignal
      Src: /src/postgres/src/test/regress/pg_regress.c:495,1
    - Dst: raise
      Src: /src/postgres/src/test/regress/pg_regress.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 490
    functionDepth: 2
    functionLinenumber: 490
    functionLinenumberEnd: 497
    functionName: signal_remove_temp
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - raise
    - pqsignal
    - remove_temp
    linkageType: ''
    returnType: void
    signature: void signal_remove_temp(SIGNAL_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: string_matches_pattern
      Src: /src/postgres/src/test/regress/pg_regress.c:580,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 2
    argNames:
    - str
    - pattern
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 615
    functionName: string_matches_pattern
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - string_matches_pattern
    linkageType: ''
    returnType: bool
    signature: bool string_matches_pattern(const char *str, const char *pattern)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:637,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:638,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:644,1
    - Dst: fgets
      Src: /src/postgres/src/test/regress/pg_regress.c:647,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:655,1
    - Dst: isspace
      Src: /src/postgres/src/test/regress/pg_regress.c:656,1
    - Dst: strchr
      Src: /src/postgres/src/test/regress/pg_regress.c:660,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:663,1
    - Dst: strchr
      Src: /src/postgres/src/test/regress/pg_regress.c:667,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:670,1
    - Dst: strchr
      Src: /src/postgres/src/test/regress/pg_regress.c:673,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:676,1
    - Dst: string_matches_pattern
      Src: /src/postgres/src/test/regress/pg_regress.c:686,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/test/regress/pg_regress.c:688,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:690,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:691,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:692,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:697,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 698
    functionName: load_resultmap
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - pg_malloc_object
    - strchr
    - fopen
    - isspace
    - fclose
    - string_matches_pattern
    - pg_strdup
    - strlen
    - fgets
    - bail
    - snprintf
    linkageType: ''
    returnType: void
    signature: void load_resultmap(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/postgres/src/test/regress/pg_regress.c:714,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/pg_regress.c:721,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/pg_regress.c:721,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - testname
    - file
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 703
    functionDepth: 0
    functionLinenumber: 703
    functionLinenumberEnd: 728
    functionName: get_expectfile
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - strrchr
    - strcmp
    linkageType: ''
    returnType: char
    signature: 'char *

      get_expectfile(const char *testname, const char *file)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:740,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:745,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:746,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:747,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:748,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:755,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:756,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:757,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:758,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:759,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:760,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:771,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:781,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:782,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:783,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:789,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:791,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:796,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:797,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:806,1
    - Dst: psprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:811,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:813,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/pg_regress.c:814,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:828,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:830,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:831,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:832,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:833,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:834,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:835,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:837,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:838,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:839,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:840,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:841,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:842,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:843,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:844,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:845,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:846,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:847,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:848,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:849,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:850,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:851,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:852,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:853,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:854,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:859,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:862,1
    - Dst: make_temp_sockdir
      Src: /src/postgres/src/test/regress/pg_regress.c:864,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:865,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:867,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:872,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:873,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:887,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:888,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:894,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:895,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:898,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:906,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:911,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:912,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:923,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:925,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:927,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:929,1
    - Dst: load_resultmap
      Src: /src/postgres/src/test/regress/pg_regress.c:932,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 96
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 733
    functionDepth: 3
    functionLinenumber: 733
    functionLinenumberEnd: 933
    functionName: initialize_environment
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - setenv
    - make_temp_sockdir
    - load_resultmap
    - pfree
    - psprintf
    - unsetenv
    - getenv
    - note
    - snprintf
    linkageType: ''
    returnType: void
    signature: void initialize_environment(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc
      Src: /src/postgres/src/test/regress/pg_regress.c:945,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:945,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - raw
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 958
    functionName: fmtHba
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - strlen
    - pg_realloc
    linkageType: ''
    returnType: char
    signature: 'char *

      fmtHba(const char *raw)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OpenProcessToken
      Src: /src/postgres/src/test/regress/pg_regress.c:976,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/test/regress/pg_regress.c:976,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:978,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:978,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/test/regress/pg_regress.c:981,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:981,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:983,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:984,1
    - Dst: pg_malloc
      Src: /src/postgres/src/test/regress/pg_regress.c:986,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/test/regress/pg_regress.c:987,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:989,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:990,1
    - Dst: LookupAccountSid
      Src: /src/postgres/src/test/regress/pg_regress.c:993,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:996,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:997,1
    - Dst: pg_free
      Src: /src/postgres/src/test/regress/pg_regress.c:1000,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - acct
    - dom
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 1004
    functionName: current_windows_user
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - LookupAccountSid
    - GetTokenInformation
    - GetLastError
    - GetCurrentProcess
    - bail
    - pg_free
    - pg_malloc
    - OpenProcessToken
    linkageType: ''
    returnType: void
    signature: void current_windows_user(const char **acct, const char **dom)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: current_windows_user
      Src: /src/postgres/src/test/regress/pg_regress.c:1028,1
    - Dst: get_user_name
      Src: /src/postgres/src/test/regress/pg_regress.c:1040,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1043,1
    - Dst: WSAStartup
      Src: /src/postgres/src/test/regress/pg_regress.c:1065,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/test/regress/pg_regress.c:1065,1
    - Dst: getaddrinfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1066,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1076,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1083,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1085,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1088,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1090,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:1090,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1091,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:1091,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1094,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:1094,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1096,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1096,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1098,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1099,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1102,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1104,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:1104,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1111,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1111,1
    - Dst: fmtHba
      Src: /src/postgres/src/test/regress/pg_regress.c:1112,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1114,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1114,1
    - Dst: fmtHba
      Src: /src/postgres/src/test/regress/pg_regress.c:1115,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1116,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1116,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 2
    argNames:
    - pgdata
    - superuser_name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1014
    functionDepth: 2
    functionLinenumber: 1014
    functionLinenumberEnd: 1117
    functionName: config_sspi_auth
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - getaddrinfo
    - current_windows_user
    - fopen
    - CW
    - fputs
    - fclose
    - WSAStartup
    - snprintf
    - MAKEWORD
    - get_user_name
    - fprintf
    - fmtHba
    - bail
    linkageType: ''
    returnType: void
    signature: void config_sspi_auth(const char *pgdata, const char *superuser_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cond
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1075
    functionName: CW
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CW(cond)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1133,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1130
    functionDepth: 1
    functionLinenumber: 1130
    functionLinenumberEnd: 1140
    functionName: psql_start_command
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - makeStringInfo
    linkageType: ''
    returnType: StringInfo
    signature: StringInfo psql_start_command(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/regress/pg_regress.c:1149,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1152,1
    - Dst: va_start
      Src: /src/postgres/src/test/regress/pg_regress.c:1158,1
    - Dst: appendStringInfoVA
      Src: /src/postgres/src/test/regress/pg_regress.c:1159,1
    - Dst: va_end
      Src: /src/postgres/src/test/regress/pg_regress.c:1160,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1163,1
    - Dst: strchr
      Src: /src/postgres/src/test/regress/pg_regress.c:1169,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/test/regress/pg_regress.c:1170,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/test/regress/pg_regress.c:1171,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/test/regress/pg_regress.c:1174,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/pg_regress.c:1176,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - buf
    - query
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1142
    functionDepth: 1
    functionLinenumber: 1142
    functionLinenumberEnd: 1177
    functionName: psql_add_command
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - va_end
    - strchr
    - va_start
    - appendStringInfoVA
    - appendStringInfoString
    - initStringInfo
    - pfree
    - enlargeStringInfo
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void psql_add_command(StringInfo buf, const char *query, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1183,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:1188,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:1189,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1192,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - database
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1179
    functionDepth: 1
    functionLinenumber: 1179
    functionLinenumberEnd: 1197
    functionName: psql_end_command
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - system
    - fflush
    - bail
    - destroyStringInfo
    linkageType: ''
    returnType: void
    signature: void psql_end_command(StringInfo buf, const char *database)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - database
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1202
    functionDepth: 0
    functionLinenumber: 1202
    functionLinenumberEnd: 1208
    functionName: psql_command
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: psql_command(database, ...)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:1223,1
    - Dst: pg_disable_aslr
      Src: /src/postgres/src/test/regress/pg_regress.c:1226,1
    - Dst: fork
      Src: /src/postgres/src/test/regress/pg_regress.c:1229,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1232,1
    - Dst: psprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1245,1
    - Dst: execl
      Src: /src/postgres/src/test/regress/pg_regress.c:1246,1
    - Dst: bail_noatexit
      Src: /src/postgres/src/test/regress/pg_regress.c:1248,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:1258,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/pg_regress.c:1262,1
    - Dst: psprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1263,1
    - Dst: CreateRestrictedProcess
      Src: /src/postgres/src/test/regress/pg_regress.c:1265,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:1266,1
    - Dst: CloseHandle
      Src: /src/postgres/src/test/regress/pg_regress.c:1268,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - cmdline
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1214
    functionDepth: 1
    functionLinenumber: 1214
    functionLinenumberEnd: 1271
    functionName: spawn_process
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 2
    functionsReached:
    - CloseHandle
    - pg_disable_aslr
    - fork
    - bail_noatexit
    - psprintf
    - CreateRestrictedProcess
    - getenv
    - memset
    - fflush
    - bail
    - exit
    - execl
    linkageType: ''
    returnType: PID_TYPE
    signature: PID_TYPE spawn_process(const char *cmdline)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1280,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1284,1
    - Dst: fseek
      Src: /src/postgres/src/test/regress/pg_regress.c:1287,1
    - Dst: ftell
      Src: /src/postgres/src/test/regress/pg_regress.c:1288,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1276
    functionDepth: 1
    functionLinenumber: 1276
    functionLinenumberEnd: 1291
    functionName: file_size
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - fopen
    - fseek
    - fclose
    - ftell
    - diag
    linkageType: ''
    returnType: long
    signature: long file_size(const char *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1301,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1305,1
    - Dst: fgetc
      Src: /src/postgres/src/test/regress/pg_regress.c:1308,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1313,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1296
    functionDepth: 1
    functionLinenumber: 1296
    functionLinenumberEnd: 1315
    functionName: file_line_count
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - diag
    - fopen
    - fgetc
    - fclose
    linkageType: ''
    returnType: int
    signature: int file_line_count(const char *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1320,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1326
    functionName: file_exists
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 2
    functionsReached:
    - fopen
    - fclose
    linkageType: ''
    returnType: bool
    signature: bool file_exists(const char *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/test/regress/pg_regress.c:1333,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/test/regress/pg_regress.c:1335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1328
    functionDepth: 1
    functionLinenumber: 1328
    functionLinenumberEnd: 1338
    functionName: directory_exists
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - stat
    - S_ISDIR
    linkageType: ''
    returnType: bool
    signature: bool directory_exists(const char *dir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mkdir
      Src: /src/postgres/src/test/regress/pg_regress.c:1344,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1341
    functionDepth: 1
    functionLinenumber: 1341
    functionLinenumberEnd: 1346
    functionName: make_directory
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - mkdir
    - bail
    linkageType: ''
    returnType: void
    signature: void make_directory(const char *dir)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:1355,1
    - Dst: malloc
      Src: /src/postgres/src/test/regress/pg_regress.c:1359,1
    - Dst: malloc
      Src: /src/postgres/src/test/regress/pg_regress.c:1362,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1364,1
    - Dst: strcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1368,1
    - Dst: strrchr
      Src: /src/postgres/src/test/regress/pg_regress.c:1369,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1372,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1373,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1377,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - expectfile
    - i
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1351
    functionDepth: 1
    functionLinenumber: 1351
    functionLinenumberEnd: 1380
    functionName: get_alternative_expectfile
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - strrchr
    - malloc
    - strlen
    - free
    - strcpy
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      get_alternative_expectfile(const char *expectfile, int i)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:1390,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:1391,1
    - Dst: WIFEXITED
      Src: /src/postgres/src/test/regress/pg_regress.c:1392,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/test/regress/pg_regress.c:1392,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1394,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/test/regress/pg_regress.c:1402,1
    - Dst: file_size
      Src: /src/postgres/src/test/regress/pg_regress.c:1402,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1404,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/test/regress/pg_regress.c:1408,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - cmd
    - filename
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1385
    functionDepth: 2
    functionLinenumber: 1385
    functionLinenumberEnd: 1409
    functionName: run_diff
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - fflush
    - WEXITSTATUS
    - bail
    - file_size
    - system
    - WIFEXITED
    linkageType: ''
    returnType: int
    signature: int run_diff(const char *cmd, const char *filename)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: get_expectfile
      Src: /src/postgres/src/test/regress/pg_regress.c:1435,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1437,1
    - Dst: strrchr
      Src: /src/postgres/src/test/regress/pg_regress.c:1444,1
    - Dst: strcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1447,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1451,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1454,1
    - Dst: run_diff
      Src: /src/postgres/src/test/regress/pg_regress.c:1459,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:1461,1
    - Dst: file_line_count
      Src: /src/postgres/src/test/regress/pg_regress.c:1466,1
    - Dst: strcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1467,1
    - Dst: get_alternative_expectfile
      Src: /src/postgres/src/test/regress/pg_regress.c:1473,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1475,1
    - Dst: file_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:1477,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1479,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1483,1
    - Dst: run_diff
      Src: /src/postgres/src/test/regress/pg_regress.c:1487,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:1489,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1490,1
    - Dst: file_line_count
      Src: /src/postgres/src/test/regress/pg_regress.c:1494,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1499,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1501,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1511,1
    - Dst: run_diff
      Src: /src/postgres/src/test/regress/pg_regress.c:1515,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:1518,1
    - Dst: file_line_count
      Src: /src/postgres/src/test/regress/pg_regress.c:1522,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1527,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1536,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1538,1
    - Dst: ftell
      Src: /src/postgres/src/test/regress/pg_regress.c:1539,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1542,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1545,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1548,1
    - Dst: run_diff
      Src: /src/postgres/src/test/regress/pg_regress.c:1551,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1560,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1562,1
    - Dst: fseek
      Src: /src/postgres/src/test/regress/pg_regress.c:1579,1
    - Dst: fgets
      Src: /src/postgres/src/test/regress/pg_regress.c:1581,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:1583,1
    - Dst: diag_detail
      Src: /src/postgres/src/test/regress/pg_regress.c:1589,1
    - Dst: diag_end
      Src: /src/postgres/src/test/regress/pg_regress.c:1592,1
    - Dst: diag_end
      Src: /src/postgres/src/test/regress/pg_regress.c:1603,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1608,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1610,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:1613,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 79
    argCount: 3
    argNames:
    - testname
    - resultsfile
    - default_expectfile
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1417
    functionDepth: 3
    functionLinenumber: 1417
    functionLinenumberEnd: 1615
    functionName: results_differ
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - file_exists
    - fopen
    - diag_end
    - fprintf
    - strlcpy
    - strrchr
    - fseek
    - get_alternative_expectfile
    - ftell
    - diag_detail
    - fclose
    - strlen
    - fgets
    - diag
    - file_line_count
    - get_expectfile
    - unlink
    - free
    - bail
    - strcpy
    - run_diff
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool results_differ(const char *testname, const char *resultsfile,
      const char *default_expectfile)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/test/regress/pg_regress.c:1633,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1635,1
    - Dst: wait
      Src: /src/postgres/src/test/regress/pg_regress.c:1646,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1649,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/test/regress/pg_regress.c:1654,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1657,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:1658,1
    - Dst: GetExitCodeProcess
      Src: /src/postgres/src/test/regress/pg_regress.c:1670,1
    - Dst: CloseHandle
      Src: /src/postgres/src/test/regress/pg_regress.c:1671,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/test/regress/pg_regress.c:1675,1
    - Dst: note_detail
      Src: /src/postgres/src/test/regress/pg_regress.c:1677,1
    - Dst: pg_free
      Src: /src/postgres/src/test/regress/pg_regress.c:1685,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 5
    argNames:
    - pids
    - statuses
    - stoptimes
    - names
    - num_tests
    argTypes:
    - PID_TYPE*
    - int*
    - instr_time*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1625
    functionDepth: 1
    functionLinenumber: 1625
    functionLinenumberEnd: 1687
    functionName: wait_for_tests
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - INSTR_TIME_SET_CURRENT
    - CloseHandle
    - memcpy
    - WaitForMultipleObjects
    - pg_malloc_array
    - GetLastError
    - note_detail
    - wait
    - bail
    - pg_free
    - GetExitCodeProcess
    linkageType: ''
    returnType: void
    signature: "void wait_for_tests(PID_TYPE * pids, int *statuses, instr_time *stoptimes,\n\t\t\t
      \  char **names, int num_tests)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WIFEXITED
      Src: /src/postgres/src/test/regress/pg_regress.c:1695,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1696,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/test/regress/pg_regress.c:1697,1
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/test/regress/pg_regress.c:1698,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1701,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/test/regress/pg_regress.c:1702,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1704,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/test/regress/pg_regress.c:1705,1
    - Dst: pg_strsignal
      Src: /src/postgres/src/test/regress/pg_regress.c:1705,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/test/regress/pg_regress.c:1705,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - exitstatus
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1692
    functionDepth: 1
    functionLinenumber: 1692
    functionLinenumberEnd: 1710
    functionName: log_child_failure
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - WIFSIGNALED
    - pg_strsignal
    - WTERMSIG
    - WEXITSTATUS
    - diag
    - WIFEXITED
    linkageType: ''
    returnType: void
    signature: void log_child_failure(int exitstatus)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/test/regress/pg_regress.c:1732,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/pg_regress.c:1733,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/pg_regress.c:1734,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/pg_regress.c:1735,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1737,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1739,1
    - Dst: fgets
      Src: /src/postgres/src/test/regress/pg_regress.c:1741,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:1752,1
    - Dst: isspace
      Src: /src/postgres/src/test/regress/pg_regress.c:1753,1
    - Dst: strncmp
      Src: /src/postgres/src/test/regress/pg_regress.c:1758,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1762,1
    - Dst: isspace
      Src: /src/postgres/src/test/regress/pg_regress.c:1770,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1779,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:1784,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1802,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/test/regress/pg_regress.c:1809,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1810,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1815,1
    - Dst: note_detail
      Src: /src/postgres/src/test/regress/pg_regress.c:1822,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1828,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/test/regress/pg_regress.c:1834,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1836,1
    - Dst: note_end
      Src: /src/postgres/src/test/regress/pg_regress.c:1839,1
    - Dst: note_detail
      Src: /src/postgres/src/test/regress/pg_regress.c:1843,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/test/regress/pg_regress.c:1847,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1849,1
    - Dst: note_end
      Src: /src/postgres/src/test/regress/pg_regress.c:1850,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/test/regress/pg_regress.c:1861,1
    - Dst: results_differ
      Src: /src/postgres/src/test/regress/pg_regress.c:1879,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1882,1
    - Dst: test_status_failed
      Src: /src/postgres/src/test/regress/pg_regress.c:1889,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1889,1
    - Dst: log_child_failure
      Src: /src/postgres/src/test/regress/pg_regress.c:1890,1
    - Dst: test_status_failed
      Src: /src/postgres/src/test/regress/pg_regress.c:1896,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1896,1
    - Dst: test_status_ok
      Src: /src/postgres/src/test/regress/pg_regress.c:1900,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1900,1
    - Dst: pg_free
      Src: /src/postgres/src/test/regress/pg_regress.c:1907,1
    - Dst: free_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:1909,1
    - Dst: free_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:1910,1
    - Dst: free_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:1911,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1915,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 105
    argCount: 3
    argNames:
    - schedule
    - startfunc
    - postfunc
    argTypes:
    - char*
    - test_start_function
    - postprocess_result_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1715
    functionDepth: 4
    functionLinenumber: 1715
    functionLinenumberEnd: 1916
    functionName: run_schedule
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - log_child_failure
    - fopen
    - test_status_ok
    - test_status_failed
    - isspace
    - INSTR_TIME_GET_MILLISEC
    - fclose
    - INSTR_TIME_SUBTRACT
    - note_end
    - strlen
    - memset
    - fgets
    - diag
    - INSTR_TIME_SET_CURRENT
    - pg_free
    - pg_strdup
    - wait_for_tests
    - free_stringlist
    - note_detail
    - strncmp
    - results_differ
    - bail
    linkageType: ''
    returnType: void
    signature: "void run_schedule(const char *schedule, test_start_function startfunc,\n\t\t\t
      postprocess_result_function postfunc)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/test/regress/pg_regress.c:1938,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1939,1
    - Dst: results_differ
      Src: /src/postgres/src/test/regress/pg_regress.c:1957,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1960,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/test/regress/pg_regress.c:1965,1
    - Dst: test_status_failed
      Src: /src/postgres/src/test/regress/pg_regress.c:1969,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1969,1
    - Dst: log_child_failure
      Src: /src/postgres/src/test/regress/pg_regress.c:1970,1
    - Dst: test_status_failed
      Src: /src/postgres/src/test/regress/pg_regress.c:1976,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1976,1
    - Dst: test_status_ok
      Src: /src/postgres/src/test/regress/pg_regress.c:1980,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1980,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - test
    - startfunc
    - postfunc
    argTypes:
    - char*
    - test_start_function
    - postprocess_result_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1921
    functionDepth: 4
    functionLinenumber: 1921
    functionLinenumberEnd: 1983
    functionName: run_single_test
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - test_status_ok
    - log_child_failure
    - wait_for_tests
    - test_status_failed
    - INSTR_TIME_GET_MILLISEC
    - INSTR_TIME_SUBTRACT
    - results_differ
    - diag
    - INSTR_TIME_SET_CURRENT
    linkageType: ''
    returnType: void
    signature: "void run_single_test(const char *test, test_start_function startfunc,\n\t\t\t\tpostprocess_result_function
      postfunc)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: directory_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:1995,1
    - Dst: make_directory
      Src: /src/postgres/src/test/regress/pg_regress.c:1996,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1999,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2000,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:2001,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2003,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2006,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2007,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:2008,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2010,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:2013,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2016,1
    - Dst: directory_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:2017,1
    - Dst: make_directory
      Src: /src/postgres/src/test/regress/pg_regress.c:2018,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2019
      start: 1988
    functionDepth: 2
    functionLinenumber: 1988
    functionLinenumberEnd: 2019
    functionName: open_result_files
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - fopen
    - fclose
    - snprintf
    - directory_exists
    - bail
    - make_directory
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void open_result_files(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psql_start_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2024,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2027,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2028,1
    - Dst: psql_end_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - dbname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2030
      start: 2021
    functionDepth: 2
    functionLinenumber: 2021
    functionLinenumberEnd: 2030
    functionName: drop_database_if_exists
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - psql_start_command
    - psql_end_command
    - psql_add_command
    linkageType: ''
    returnType: void
    signature: void drop_database_if_exists(const char *dbname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psql_start_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2035,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2043,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2046,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2048,1
    - Dst: psql_end_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2056,1
    - Dst: psql_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2063,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - dbname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 2032
    functionDepth: 2
    functionLinenumber: 2032
    functionLinenumberEnd: 2064
    functionName: create_database
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - psql_command
    - psql_start_command
    - psql_end_command
    - psql_add_command
    linkageType: ''
    returnType: void
    signature: void create_database(const char *dbname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psql_start_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2069,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2072,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2073,1
    - Dst: psql_end_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2074,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rolename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2075
      start: 2066
    functionDepth: 2
    functionLinenumber: 2066
    functionLinenumberEnd: 2075
    functionName: drop_role_if_exists
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - psql_start_command
    - psql_end_command
    - psql_add_command
    linkageType: ''
    returnType: void
    signature: void drop_role_if_exists(const char *rolename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psql_start_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2080,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2082,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2085,1
    - Dst: psql_end_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2088,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rolename
    - granted_dbs
    argTypes:
    - char*
    - _stringlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2089
      start: 2077
    functionDepth: 2
    functionLinenumber: 2077
    functionLinenumberEnd: 2089
    functionName: create_role
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - psql_start_command
    - psql_end_command
    - psql_add_command
    linkageType: ''
    returnType: void
    signature: void create_role(const char *rolename, const _stringlist *granted_dbs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2094,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2094,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2095,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2095,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2096,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2096,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2097,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2097,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2098,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2098,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2099,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2099,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2100,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2100,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2101,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2101,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2102,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2102,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2103,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2103,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2104,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2104,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2105,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2105,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2106,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2106,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2107,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2107,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2108,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2108,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2109,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2109,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2110,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2110,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2111,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2111,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2112,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2112,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2113,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2113,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2114,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2114,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2115,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2115,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2116,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2116,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2117,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2117,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2118,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2118,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2119,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2119,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2120,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2120,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2121,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2121,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2122,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2122,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2123,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2123,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2124,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2124,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2125,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2125,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2126,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2126,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2127,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2127,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2128,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2128,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2129,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2129,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2130,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2130,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2131,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2131,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2132,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2132,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2133,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2133,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2134,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2134,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2135,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2135,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2136,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2136,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2137,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2137,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2138,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2139
      start: 2091
    functionDepth: 0
    functionLinenumber: 2091
    functionLinenumberEnd: 2139
    functionName: help
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 5
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(void)
  - BBCount: 67
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/test/regress/pg_regress.c:2182,1
    - Dst: get_progname
      Src: /src/postgres/src/test/regress/pg_regress.c:2183,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/test/regress/pg_regress.c:2184,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/test/regress/pg_regress.c:2184,1
    - Dst: pg_initialize_timing
      Src: /src/postgres/src/test/regress/pg_regress.c:2186,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/test/regress/pg_regress.c:2188,1
    - Dst: atexit
      Src: /src/postgres/src/test/regress/pg_regress.c:2190,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2198,1
    - Dst: ifunc
      Src: /src/postgres/src/test/regress/pg_regress.c:2210,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2212,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2213,1
    - Dst: getopt_long
      Src: /src/postgres/src/test/regress/pg_regress.c:2215,1
    - Dst: help
      Src: /src/postgres/src/test/regress/pg_regress.c:2220,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2221,1
    - Dst: puts
      Src: /src/postgres/src/test/regress/pg_regress.c:2223,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2224,1
    - Dst: free_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:2231,1
    - Dst: split_to_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:2232,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2238,1
    - Dst: atoi
      Src: /src/postgres/src/test/regress/pg_regress.c:2241,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2244,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2247,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:2250,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2253,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2259,1
    - Dst: atoi
      Src: /src/postgres/src/test/regress/pg_regress.c:2262,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2266,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:2270,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2271,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2276,1
    - Dst: split_to_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:2279,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:2282,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2288,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:2291,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2294,1
    - Dst: atoi
      Src: /src/postgres/src/test/regress/pg_regress.c:2297,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2300,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/test/regress/pg_regress.c:2304,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2306,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:2315,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2325,1
    - Dst: config_sspi_auth
      Src: /src/postgres/src/test/regress/pg_regress.c:2332,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2334,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2348,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2349,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2350,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2351,1
    - Dst: open_result_files
      Src: /src/postgres/src/test/regress/pg_regress.c:2356,1
    - Dst: initialize_environment
      Src: /src/postgres/src/test/regress/pg_regress.c:2358,1
    - Dst: unlimit_core_size
      Src: /src/postgres/src/test/regress/pg_regress.c:2361,1
    - Dst: directory_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:2380,1
    - Dst: rmtree
      Src: /src/postgres/src/test/regress/pg_regress.c:2382,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2384,1
    - Dst: make_directory
      Src: /src/postgres/src/test/regress/pg_regress.c:2389,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2392,1
    - Dst: directory_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:2393,1
    - Dst: make_directory
      Src: /src/postgres/src/test/regress/pg_regress.c:2394,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2396,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2398,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2409,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2412,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2414,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/regress/pg_regress.c:2420,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/regress/pg_regress.c:2422,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2424,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2425,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:2426,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:2427,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2429,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2445,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2447,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2451,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:2452,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:2453,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2455,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/pg_regress.c:2462,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2472,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:2473,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2475,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2477,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2478,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2479,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2480,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2481,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2482,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2483,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2484,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:2492,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2495,1
    - Dst: fgets
      Src: /src/postgres/src/test/regress/pg_regress.c:2498,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2499,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:2500,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:2503,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2512,1
    - Dst: config_sspi_auth
      Src: /src/postgres/src/test/regress/pg_regress.c:2513,1
    - Dst: sprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2521,1
    - Dst: PQpingParams
      Src: /src/postgres/src/test/regress/pg_regress.c:2536,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2542,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2544,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2545,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2548,1
    - Dst: sprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2550,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2551,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2560,1
    - Dst: spawn_process
      Src: /src/postgres/src/test/regress/pg_regress.c:2569,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2571,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2580,1
    - Dst: atoi
      Src: /src/postgres/src/test/regress/pg_regress.c:2583,1
    - Dst: pg_usleep
      Src: /src/postgres/src/test/regress/pg_regress.c:2597,1
    - Dst: PQpingParams
      Src: /src/postgres/src/test/regress/pg_regress.c:2599,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2606,1
    - Dst: waitpid
      Src: /src/postgres/src/test/regress/pg_regress.c:2612,1
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/test/regress/pg_regress.c:2614,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2617,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2623,1
    - Dst: kill
      Src: /src/postgres/src/test/regress/pg_regress.c:2633,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2634,1
    - Dst: TerminateProcess
      Src: /src/postgres/src/test/regress/pg_regress.c:2636,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2637,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:2638,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2640,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2651,1
    - Dst: ULONGPID
      Src: /src/postgres/src/test/regress/pg_regress.c:2652,1
    - Dst: drop_database_if_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:2663,1
    - Dst: drop_role_if_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:2665,1
    - Dst: create_database
      Src: /src/postgres/src/test/regress/pg_regress.c:2675,1
    - Dst: create_role
      Src: /src/postgres/src/test/regress/pg_regress.c:2677,1
    - Dst: run_schedule
      Src: /src/postgres/src/test/regress/pg_regress.c:2685,1
    - Dst: run_single_test
      Src: /src/postgres/src/test/regress/pg_regress.c:2690,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/test/regress/pg_regress.c:2698,1
    - Dst: rmtree
      Src: /src/postgres/src/test/regress/pg_regress.c:2708,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2709,1
    - Dst: plan
      Src: /src/postgres/src/test/regress/pg_regress.c:2716,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2722,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2724,1
    - Dst: file_size
      Src: /src/postgres/src/test/regress/pg_regress.c:2726,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2728,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2730,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:2735,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:2736,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:2739,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2743,1
    CyclomaticComplexity: 87
    EdgeCount: 87
    ICount: 283
    argCount: 5
    argNames:
    - argc
    - argv
    - ifunc
    - startfunc
    - postfunc
    argTypes:
    - int
    - char*[]
    - init_function
    - test_start_function
    - postprocess_result_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2746
      start: 2141
    functionDepth: 5
    functionLinenumber: 2141
    functionLinenumberEnd: 2746
    functionName: regression_main
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - TerminateProcess
    - ifunc
    - get_progname
    - run_schedule
    - fopen
    - GetLastError
    - plan
    - note
    - drop_database_if_exists
    - atexit
    - puts
    - file_size
    - set_pglocale_pgservice
    - unlimit_core_size
    - config_sspi_auth
    - spawn_process
    - ULONGPID
    - pfree
    - appendStringInfoString
    - split_to_stringlist
    - fputs
    - getenv
    - fflush
    - WaitForSingleObject
    - make_absolute_path
    - stop_postmaster
    - bail
    - sprintf
    - waitpid
    - setenv
    - initStringInfo
    - kill
    - getopt_long
    - pg_initialize_timing
    - fclose
    - get_restricted_token
    - add_stringlist_item
    - strlen
    - fgets
    - diag
    - exit
    - pg_usleep
    - pg_log_error_hint
    - pg_strdup
    - drop_role_if_exists
    - PQpingParams
    - unlink
    - free_stringlist
    - pg_logging_init
    - appendStringInfo
    - create_role
    - open_result_files
    - directory_exists
    - help
    - initialize_environment
    - atoi
    - run_single_test
    - rmtree
    - system
    - create_database
    - make_directory
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int regression_main(int argc, char *argv[],\n\t\t\t\tinit_function
      ifunc,\n\t\t\t\ttest_start_function startfunc,\n\t\t\t\tpostprocess_result_function
      postfunc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2648
      start: 2647
    functionDepth: 0
    functionLinenumber: 2647
    functionLinenumberEnd: 2648
    functionName: ULONGPID
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ULONGPID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2650
      start: 2649
    functionDepth: 0
    functionLinenumber: 2649
    functionLinenumberEnd: 2650
    functionName: ULONGPID
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ULONGPID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_empty
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:106,1
    - Dst: test_huge_distances
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:107,1
    - Dst: test_single_value
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:108,1
    - Dst: test_single_value
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:109,1
    - Dst: test_single_value
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:110,1
    - Dst: test_single_value
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:111,1
    - Dst: test_single_value_and_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:112,1
    - Dst: test_single_value_and_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:113,1
    - Dst: test_single_value_and_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:114,1
    - Dst: test_single_value_and_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:115,1
    - Dst: test_single_value_and_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:116,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:119,1
    - Dst: test_pattern
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:121,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 125
    functionName: test_integerset
    functionSourceFile: /src/postgres/src/test/modules/test_integerset/test_integerset.c
    functionUses: 0
    functionsReached:
    - test_huge_distances
    - PG_RETURN_VOID
    - test_single_value_and_filler
    - test_pattern
    - test_single_value
    - test_empty
    - lengthof
    linkageType: ''
    returnType: Datum
    signature: Datum test_integerset(PG_FUNCTION_ARGS)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:144,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:146,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:149,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:150,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:166,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:169,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:170,1
    - Dst: intset_create
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:171,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:172,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:177,1
    - Dst: intset_add_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:189,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:195,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:198,1
    - Dst: intset_memory_usage
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:218,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:219,1
    - Dst: MemoryContextStats
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:222,1
    - Dst: intset_num_entries
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:226,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:228,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:233,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:248,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:266,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:269,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:271,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:273,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:279,1
    - Dst: intset_begin_iterate
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:281,1
    - Dst: intset_iterate_next
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:291,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:295,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:300,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:302,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:306,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:308,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:310,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 78
    argCount: 1
    argNames:
    - spec
    argTypes:
    - test_spec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 311
    functionName: test_pattern
    functionSourceFile: /src/postgres/src/test/modules/test_integerset/test_integerset.c
    functionUses: 1
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - intset_add_member
    - intset_create
    - intset_num_entries
    - MemoryContextStats
    - pg_prng_uint64_range
    - AllocSetContextCreate
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - intset_is_member
    - strlen
    - intset_begin_iterate
    - palloc
    - intset_iterate_next
    - MemoryContextSetIdentifier
    - intset_memory_usage
    - fprintf
    linkageType: ''
    returnType: void
    signature: void test_pattern(const test_spec *spec)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:324,1
    - Dst: intset_create
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:327,1
    - Dst: intset_add_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:328,1
    - Dst: intset_num_entries
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:331,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:333,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:339,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:340,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:341,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:342,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:343,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:344,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:345,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:346,1
    - Dst: intset_begin_iterate
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:351,1
    - Dst: intset_iterate_next
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:352,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:354,1
    - Dst: intset_iterate_next
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:356,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:358,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 359
    functionName: test_single_value
    functionSourceFile: /src/postgres/src/test/modules/test_integerset/test_integerset.c
    functionUses: 1
    functionsReached:
    - elog
    - intset_add_member
    - intset_num_entries
    - intset_create
    - intset_begin_iterate
    - intset_iterate_next
    - intset_is_member
    linkageType: ''
    returnType: void
    signature: void test_single_value(uint64 value)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:383,1
    - Dst: intset_create
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:386,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:388,1
    - Dst: intset_add_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:391,1
    - Dst: intset_add_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:397,1
    - Dst: intset_add_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:403,1
    - Dst: intset_num_entries
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:408,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:410,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:416,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:418,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:420,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:422,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:424,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:426,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:428,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:430,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:432,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:434,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:436,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:438,1
    - Dst: check_with_filler
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:440,1
    - Dst: intset_begin_iterate
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:443,1
    - Dst: intset_iterate_next
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:446,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:448,1
    - Dst: intset_iterate_next
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:450,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:452,1
    - Dst: intset_memory_usage
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:454,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:456,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 3
    argNames:
    - value
    - filler_min
    - filler_max
    argTypes:
    - uint64
    - uint64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 457
    functionName: test_single_value_and_filler
    functionSourceFile: /src/postgres/src/test/modules/test_integerset/test_integerset.c
    functionUses: 1
    functionsReached:
    - elog
    - intset_add_member
    - intset_num_entries
    - intset_create
    - palloc_array
    - check_with_filler
    - intset_begin_iterate
    - intset_iterate_next
    - intset_memory_usage
    linkageType: ''
    returnType: void
    signature: void test_single_value_and_filler(uint64 value, uint64 filler_min,
      uint64 filler_max)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:474,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:477,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 5
    argNames:
    - intset
    - x
    - value
    - filler_min
    - filler_max
    argTypes:
    - IntegerSet*
    - uint64
    - uint64
    - uint64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 478
    functionName: check_with_filler
    functionSourceFile: /src/postgres/src/test/modules/test_integerset/test_integerset.c
    functionUses: 1
    functionsReached:
    - elog
    - intset_is_member
    linkageType: ''
    returnType: void
    signature: "void check_with_filler(IntegerSet *intset, uint64 x,\n\t\t\t\t  uint64
      value, uint64 filler_min, uint64 filler_max)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:489,1
    - Dst: intset_create
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:491,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:494,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:495,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:496,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:497,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:498,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:499,1
    - Dst: intset_begin_iterate
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:502,1
    - Dst: intset_iterate_next
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:503,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:504,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 505
    functionName: test_empty
    functionSourceFile: /src/postgres/src/test/modules/test_integerset/test_integerset.c
    functionUses: 1
    functionsReached:
    - elog
    - intset_create
    - intset_begin_iterate
    - intset_iterate_next
    - intset_is_member
    linkageType: ''
    returnType: void
    signature: void test_empty(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:524,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:530,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:533,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:536,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:539,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:542,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:545,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:548,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:551,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:554,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:557,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:560,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:570,1
    - Dst: intset_create
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:575,1
    - Dst: intset_add_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:577,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:591,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:593,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:596,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:598,1
    - Dst: intset_is_member
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:601,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:603,1
    - Dst: intset_begin_iterate
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:609,1
    - Dst: intset_iterate_next
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:612,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:614,1
    - Dst: intset_iterate_next
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:616,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_integerset/test_integerset.c:618,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 619
    functionName: test_huge_distances
    functionSourceFile: /src/postgres/src/test/modules/test_integerset/test_integerset.c
    functionUses: 1
    functionsReached:
    - elog
    - intset_add_member
    - intset_create
    - pg_prng_uint32
    - intset_begin_iterate
    - intset_iterate_next
    - UINT64CONST
    - intset_is_member
    linkageType: ''
    returnType: void
    signature: void test_huge_distances(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:65,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: validate_string_option
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void validate_string_option(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_reloption_kind
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:79,1
    - Dst: add_int_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:81,1
    - Dst: add_real_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:89,1
    - Dst: add_bool_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:97,1
    - Dst: add_ternary_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:105,1
    - Dst: add_enum_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:113,1
    - Dst: add_string_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:124,1
    - Dst: add_string_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 147
    functionName: create_reloptions_table
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - add_int_reloption
    - add_ternary_reloption
    - add_string_reloption
    - add_bool_reloption
    - add_reloption_kind
    - add_real_reloption
    - add_enum_reloption
    linkageType: ''
    returnType: void
    signature: void create_reloptions_table(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 166
    functionName: dibuild
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: IndexBuildResult
    signature: 'IndexBuildResult *

      dibuild(Relation heap, Relation index, IndexInfo *indexInfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: dibuildempty
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dibuildempty(Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - index
    - values
    - isnull
    - ht_ctid
    - heapRel
    - checkUnique
    - indexUnchanged
    - indexInfo
    argTypes:
    - Relation
    - Datum*
    - bool*
    - ItemPointer
    - Relation
    - IndexUniqueCheck
    - bool
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 189
    functionName: diinsert
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool diinsert(Relation index, Datum *values, bool *isnull,\n\t\t ItemPointer
      ht_ctid, Relation heapRel,\n\t\t IndexUniqueCheck checkUnique,\n\t\t bool indexUnchanged,\n\t\t
      IndexInfo *indexInfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - info
    - stats
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 203
    functionName: dibulkdelete
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\ndibulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult
      *stats,\n\t\t\t IndexBulkDeleteCallback callback, void *callback_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: divacuumcleanup
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: 'IndexBulkDeleteResult *

      divacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 8
    argNames:
    - root
    - path
    - loop_count
    - indexStartupCost
    - indexTotalCost
    - indexSelectivity
    - indexCorrelation
    - indexPages
    argTypes:
    - PlannerInfo*
    - IndexPath*
    - double
    - Cost*
    - Cost*
    - Selectivity*
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 232
    functionName: dicostestimate
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dicostestimate(PlannerInfo *root, IndexPath *path, double loop_count,\n\t\t\t
      \  Cost *indexStartupCost, Cost *indexTotalCost,\n\t\t\t   Selectivity *indexSelectivity,
      double *indexCorrelation,\n\t\t\t   double *indexPages)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:241,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 245
    functionName: dioptions
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      dioptions(Datum reloptions, bool validate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opclassoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 255
    functionName: divalidate
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool divalidate(Oid opclassoid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - r
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 268
    functionName: dibeginscan
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexScan
    linkageType: ''
    returnType: IndexScanDesc
    signature: IndexScanDesc dibeginscan(Relation r, int nkeys, int norderbys)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 5
    argNames:
    - scan
    - scankey
    - nscankeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 278
    functionName: direscan
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void direscan(IndexScanDesc scan, ScanKey scankey, int nscankeys,\n\t\t
      ScanKey orderbys, int norderbys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 287
    functionName: diendscan
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void diendscan(IndexScanDesc scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 347
    functionName: dihandler
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum dihandler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_reloptions_table
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 353
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - create_reloptions_table
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 32
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prev_shmem_request_hook
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:38,1
    - Dst: RequestNamedLWLockTranche
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:44,1
    - Dst: RequestNamedLWLockTranche
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: test_lwlock_tranches_shmem_request
    functionSourceFile: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c
    functionUses: 0
    functionsReached:
    - prev_shmem_request_hook
    - RequestNamedLWLockTranche
    linkageType: ''
    returnType: void
    signature: void test_lwlock_tranches_shmem_request(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetNamedLWLockTranche
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:59,1
    - Dst: GetNamedLWLockTranche
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:60,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:62,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:64,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:66,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:68,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:74,1
    - Dst: GetLWLockIdentifier
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:75,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:76,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:77,1
    - Dst: GetLWLockIdentifier
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:78,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:79,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 82
    functionName: test_startup_lwlocks
    functionSourceFile: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - GetLWLockIdentifier
    - LWLockAcquire
    - strcmp
    - LWLockRelease
    - GetNamedLWLockTranche
    linkageType: ''
    returnType: Datum
    signature: Datum test_startup_lwlocks(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:91,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:91,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:91,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:94,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: test_lwlock_tranche_create
    functionSourceFile: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_RETURN_INT32
    - TextDatumGetCString
    - PG_ARGISNULL
    - LWLockNewTrancheId
    linkageType: ''
    returnType: Datum
    signature: Datum test_lwlock_tranche_create(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:106,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:106,1
    - Dst: GetNamedLWLockTranche
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:108,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 111
    functionName: test_lwlock_tranche_lookup
    functionSourceFile: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c
    functionUses: 0
    functionsReached:
    - TextDatumGetCString
    - PG_RETURN_VOID
    - GetNamedLWLockTranche
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum test_lwlock_tranche_lookup(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:117,1
    - Dst: GetLWLockIdentifier
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:120,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:123,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:123,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 126
    functionName: test_lwlock_get_lwlock_identifier
    functionSourceFile: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c
    functionUses: 0
    functionsReached:
    - GetLWLockIdentifier
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_lwlock_get_lwlock_identifier(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:135,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:138,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 141
    functionName: test_lwlock_initialize
    functionSourceFile: /src/postgres/src/test/modules/test_lwlock_tranches/test_lwlock_tranches.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - PG_GETARG_INT32
    - LWLockInitialize
    linkageType: ''
    returnType: Datum
    signature: Datum test_lwlock_initialize(PG_FUNCTION_ARGS)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:104,1
    - Dst: calloc
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:106,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:108,1
    - Dst: getopt
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:110,1
    - Dst: strtou64
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:118,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:120,1
    - Dst: palloc_object
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:127,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:129,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:142,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:143,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:146,1
    - Dst: fopen
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:148,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:149,1
    - Dst: fstat
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:151,1
    - Dst: fileno
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:151,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:152,1
    - Dst: makeJsonLexContextIncremental
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:164,1
    - Dst: setJsonLexContextOwnsTokens
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:165,1
    - Dst: rewind
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:167,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:168,1
    - Dst: fread
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:177,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:179,1
    - Dst: ferror
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:179,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:181,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:188,1
    - Dst: pg_parse_json_incremental
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:192,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:197,1
    - Dst: json_errdetail
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:197,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:201,1
    - Dst: pg_parse_json_incremental
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:205,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:210,1
    - Dst: json_errdetail
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:210,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:215,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:221,1
    - Dst: fputc
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:230,1
    - Dst: fputc
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:231,1
    - Dst: fclose
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:235,1
    - Dst: free
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:236,1
    - Dst: free
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:237,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 87
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 240
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 4
    functionsReached:
    - strtou64
    - getopt
    - fopen
    - fputc
    - printf
    - resetStringInfo
    - fileno
    - appendBinaryStringInfo
    - ferror
    - fprintf
    - json_errdetail
    - appendStringInfoString
    - makeJsonLexContextIncremental
    - setJsonLexContextOwnsTokens
    - palloc_object
    - usage
    - calloc
    - fstat
    - freeJsonLexContext
    - rewind
    - initStringInfo
    - fclose
    - exit
    - pg_parse_json_incremental
    - pg_logging_init
    - pg_fatal
    - fread
    - free
    - makeStringInfo
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: do_object_start
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType do_object_start(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 269
    functionName: do_object_end
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType do_object_end(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:277,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:278,1
    - Dst: escape_json
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:279,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 284
    functionName: do_object_field_start
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - escape_json
    - printf
    - resetStringInfo
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType do_object_field_start(void *state, char *fname,
      bool isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 293
    functionName: do_object_field_end
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType do_object_field_end(void *state, char *fname, bool
      isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 304
    functionName: do_array_start
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType do_array_start(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 315
    functionName: do_array_end
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType do_array_end(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 327
    functionName: do_array_element_start
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType do_array_element_start(void *state, bool isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 335
    functionName: do_array_element_end
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType do_array_element_end(void *state, bool isnull)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:344,1
    - Dst: escape_json
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:345,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:346,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:349,1
    - Dst: free
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 355
    functionName: do_scalar
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - escape_json
    - free
    - printf
    - resetStringInfo
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType do_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:364,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:370,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:373,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:376,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:379,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:382,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:385,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:388,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:392,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:394,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:398,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 399
    functionName: escape_json
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 3
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: void
    signature: void escape_json(StringInfo buf, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:404,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:405,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:406,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:407,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 410
    functionName: usage
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 23
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void usage(const char *progname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:46,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:48,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:50,1
    - Dst: sscanf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:56,1
    - Dst: fopen
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:58,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:59,1
    - Dst: fread
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:61,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:63,1
    - Dst: fclose
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:65,1
    - Dst: makeJsonLexContextIncremental
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:70,1
    - Dst: pg_parse_json_incremental
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:71,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:74,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:78,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:80,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:81,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:84,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c:87,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 88
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_perf.c
    functionUses: 4
    functionsReached:
    - appendBinaryStringInfo
    - pg_parse_json_incremental
    - freeJsonLexContext
    - strcmp
    - sscanf
    - pg_logging_init
    - initStringInfo
    - fopen
    - makeJsonLexContextIncremental
    - pg_fatal
    - fclose
    - fread
    - pg_parse_json
    - exit
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:47,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:49,1
    - Dst: pg_strtoint32_safe
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: int_custom_in
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - pg_strtoint32_safe
    - PG_GETARG_CSTRING
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:60,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:61,1
    - Dst: pg_ltoa
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:63,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: int_custom_out
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_CSTRING
    - pg_ltoa
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: int_custom_typanalyze_false
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_typanalyze_false(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - stats
    - fetchfunc
    - samplerows
    - totalrows
    argTypes:
    - VacAttrStats*
    - AnalyzeAttrFetchFunc
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 87
    functionName: int_custom_invalid_stats
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void int_custom_invalid_stats(VacAttrStats *stats, AnalyzeAttrFetchFunc
      fetchfunc,\n\t\t\t\t\t\t int samplerows, double totalrows)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:98,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 111
    functionName: int_custom_typanalyze_invalid
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_typanalyze_invalid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:119,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:120,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 123
    functionName: int_custom_eq
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:128,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:129,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 132
    functionName: int_custom_ne
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:137,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:138,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 141
    functionName: int_custom_lt
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:146,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:147,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 150
    functionName: int_custom_le
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:155,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:156,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 159
    functionName: int_custom_gt
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:164,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:165,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 168
    functionName: int_custom_ge
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_ge(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:173,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:174,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:177,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:179,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 182
    functionName: int_custom_cmp
    functionSourceFile: /src/postgres/src/test/modules/test_custom_types/test_custom_types.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int_custom_cmp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:34,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:38,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:41,1
    - Dst: consume_xids_common
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:43,1
    - Dst: PG_RETURN_FULLTRANSACTIONID
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 46
    functionName: consume_xids
    functionSourceFile: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c
    functionUses: 0
    functionsReached:
    - elog
    - ReadNextFullTransactionId
    - consume_xids_common
    - PG_RETURN_FULLTRANSACTIONID
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum consume_xids(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:55,1
    - Dst: FullTransactionIdIsNormal
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:58,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:59,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:60,1
    - Dst: consume_xids_common
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:62,1
    - Dst: PG_RETURN_FULLTRANSACTIONID
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: consume_xids_until
    functionSourceFile: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - elog
    - U64FromFullTransactionId
    - consume_xids_common
    - FullTransactionIdIsNormal
    - PG_RETURN_FULLTRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum consume_xids_until(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:81,1
    - Dst: GetTopTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:92,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:98,1
    - Dst: FullTransactionIdFollowsOrEquals
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:109,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:111,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:111,1
    - Dst: consume_xids_shortcut
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:122,1
    - Dst: GetNewTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:132,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:139,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:141,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:142,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:144,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:145,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:146,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:147,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:148,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 2
    argNames:
    - untilxid
    - nxids
    argTypes:
    - FullTransactionId
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 154
    functionName: consume_xids_common
    functionSourceFile: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c
    functionUses: 2
    functionsReached:
    - elog
    - ReadNextFullTransactionId
    - U64FromFullTransactionId
    - FullTransactionIdFollowsOrEquals
    - consume_xids_shortcut
    - CHECK_FOR_INTERRUPTS
    - EpochFromFullTransactionId
    - XidFromFullTransactionId
    - GetTopTransactionId
    - GetNewTransactionId
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId consume_xids_common(FullTransactionId untilxid, uint64
      nxids)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:173,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:184,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:189,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - fullxid
    argTypes:
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 197
    functionName: XidSkip
    functionSourceFile: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c
    functionUses: 0
    functionsReached:
    - Min
    - XidFromFullTransactionId
    linkageType: ''
    returnType: uint32
    signature: uint32 XidSkip(FullTransactionId fullxid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:205,1
    - Dst: XidSkip
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:212,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 219
    functionName: consume_xids_shortcut
    functionSourceFile: /src/postgres/src/test/modules/xid_wraparound/xid_wraparound.c
    functionUses: 1
    functionsReached:
    - XidSkip
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: int64
    signature: int64 consume_xids_shortcut(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:60,1
    - Dst: SlruScanDirCbDeleteAll
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctl
    - filename
    - segpage
    - data
    argTypes:
    - SlruDesc*
    - char*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: test_slru_scan_cb
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - elog
    - SlruScanDirCbDeleteAll
    linkageType: ''
    returnType: bool
    signature: bool test_slru_scan_cb(SlruDesc *ctl, char *filename, int64 segpage,
      void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:67,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:68,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:68,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:70,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:72,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:73,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:76,1
    - Dst: strncpy
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:83,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:86,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:87,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 90
    functionName: test_slru_page_write
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - SimpleLruZeroPage
    - LWLockAcquire
    - Assert
    - strncpy
    - text_to_cstring
    - PG_GETARG_INT64
    - LWLockRelease
    - SimpleLruGetBankLock
    - SimpleLruWritePage
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_page_write(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:95,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: test_slru_page_writeall
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - SimpleLruWriteAll
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_page_writeall(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:102,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:103,1
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:104,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:107,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:110,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:111,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:113,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:115,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 116
    functionName: test_slru_page_read
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - PG_GETARG_BOOL
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT64
    - LWLockRelease
    - SimpleLruGetBankLock
    - SimpleLruReadPage
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_page_read(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:121,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:124,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:127,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:130,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:130,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:132,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:134,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 135
    functionName: test_slru_page_readonly
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - Assert
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - SimpleLruReadPage_ReadOnly
    - PG_GETARG_INT64
    - LWLockHeldByMe
    - LWLockRelease
    - SimpleLruGetBankLock
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_page_readonly(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:140,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:142,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:144,1
    - Dst: SimpleLruDoesPhysicalPageExist
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:145,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:146,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 149
    functionName: test_slru_page_exists
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - SimpleLruDoesPhysicalPageExist
    - PG_GETARG_INT64
    - LWLockRelease
    - PG_RETURN_BOOL
    - SimpleLruGetBankLock
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_page_exists(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:154,1
    - Dst: SlruSyncFileTag
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:160,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:162,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 166
    functionName: test_slru_page_sync
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - SlruSyncFileTag
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_page_sync(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:171,1
    - Dst: SlruDeleteSegment
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:175,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:177,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 181
    functionName: test_slru_page_delete
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - elog
    - SlruDeleteSegment
    - PG_RETURN_VOID
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_page_delete(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:186,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:188,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 190
    functionName: test_slru_page_truncate
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - SimpleLruTruncate
    - PG_RETURN_VOID
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_page_truncate(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:196,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 199
    functionName: test_slru_delete_all
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - SlruScanDirectory
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_delete_all(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 205
    functionName: test_slru_page_precedes_logically
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool test_slru_page_precedes_logically(int64 page1, int64 page2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errdetail
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opaque_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 213
    functionName: test_slru_errdetail_for_io_error
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - errdetail
    linkageType: ''
    returnType: int
    signature: int test_slru_errdetail_for_io_error(const void *opaque_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:219,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:220,1
    - Dst: errdetail
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:221,1
    - Dst: MakePGDirectory
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:228,1
    - Dst: RegisterShmemCallbacks
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 231
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - MakePGDirectory
    - RegisterShmemCallbacks
    - ereport
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdSetOldestMember
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:32,1
    - Dst: MultiXactIdCreate
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:33,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:33,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:34,1
    - Dst: PG_RETURN_TRANSACTIONID
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 36
    functionName: test_create_multixact
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_multixact.c
    functionUses: 0
    functionsReached:
    - GetCurrentTransactionId
    - MultiXactIdSetOldestMember
    - PG_RETURN_TRANSACTIONID
    - MultiXactIdCreate
    linkageType: ''
    returnType: Datum
    signature: Datum test_create_multixact(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:44,1
    - Dst: AtEOXact_MultiXact
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:48,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:50,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:51,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 54
    functionName: test_read_multixact
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_multixact.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - GetMultiXactIdMembers
    - AtEOXact_MultiXact
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum test_read_multixact(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: PGSTAT_CUSTOM_VAR_STATS_IDX
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PGSTAT_CUSTOM_VAR_STATS_IDX(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_register_kind
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - pgstat_register_kind
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_lock_entry
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:159,1
    - Dst: pgstat_unlock_entry
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - entry_ref
    - nowait
    argTypes:
    - PgStat_EntryRef*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 168
    functionName: test_custom_stats_var_flush_pending_cb
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - pgstat_unlock_entry
    - pgstat_lock_entry
    linkageType: ''
    returnType: bool
    signature: bool test_custom_stats_var_flush_pending_cb(PgStat_EntryRef *entry_ref,
      bool nowait)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_write_chunk_s
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:205,1
    - Dst: AllocateFile
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:210,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:213,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:214,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:215,1
    - Dst: pgstat_write_chunk_s
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:225,1
    - Dst: pgstat_write_chunk_s
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:232,1
    - Dst: GetNamedDSA
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:236,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:239,1
    - Dst: pgstat_write_chunk_s
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:243,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:252,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:254,1
    - Dst: pgstat_write_chunk_s
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:255,1
    - Dst: pgstat_write_chunk
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:256,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - key
    - header
    - statfile
    argTypes:
    - PgStat_HashKey*
    - PgStatShared_Common*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 263
    functionName: test_custom_stats_var_to_serialized_data
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - AllocateFile
    - GetNamedDSA
    - DsaPointerIsValid
    - pgstat_write_chunk_s
    - ereport
    - pgstat_write_chunk
    - dsa_get_address
    - strlen
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: "void test_custom_stats_var_to_serialized_data(const PgStat_HashKey
      *key,\n\t\t\t\t\t\t\t\t\t\t const PgStatShared_Common *header,\n\t\t\t\t\t\t\t\t\t\t
      FILE *statfile)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_read_chunk_s
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:290,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:292,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:298,1
    - Dst: pgstat_read_chunk_s
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:307,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:309,1
    - Dst: AllocateFile
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:316,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:320,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:321,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:322,1
    - Dst: pgstat_reset_of_kind
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:324,1
    - Dst: fseeko
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:330,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:332,1
    - Dst: pgstat_read_chunk_s
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:338,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:340,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:349,1
    - Dst: pgstat_read_chunk_s
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:358,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:360,1
    - Dst: GetNamedDSA
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:373,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:377,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:381,1
    - Dst: pgstat_read_chunk
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:382,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:384,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:385,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:390,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:391,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:391,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:393,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 60
    argCount: 3
    argNames:
    - key
    - header
    - statfile
    argTypes:
    - PgStat_HashKey*
    - PgStatShared_Common*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 396
    functionName: test_custom_stats_var_from_serialized_data
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - elog
    - AllocateFile
    - GetNamedDSA
    - dsa_allocate
    - pgstat_reset_of_kind
    - fseeko
    - memcpy
    - pfree
    - ereport
    - pgstat_read_chunk
    - dsa_get_address
    - errmsg
    - palloc
    - pgstat_read_chunk_s
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: "bool test_custom_stats_var_from_serialized_data(const PgStat_HashKey
      *key,\n\t\t\t\t\t\t\t\t\t\t   PgStatShared_Common *header,\n\t\t\t\t\t\t\t\t\t\t
      \  FILE *statfile)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ferror
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:416,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:418,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:419,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:420,1
    - Dst: FreeFile
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:422,1
    - Dst: unlink
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:423,1
    - Dst: FreeFile
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:425,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:427,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:428,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:429,1
    - Dst: unlink
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:431,1
    - Dst: FreeFile
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:437,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:440,1
    - Dst: unlink
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:441,1
    - Dst: unlink
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:449,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:453,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:457,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:458,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:459,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:464,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:465,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - status
    argTypes:
    - PgStat_StatsFileOp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 473
    functionName: test_custom_stats_var_finish
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - elog
    - ferror
    - errmsg_internal
    - unlink
    - ereport
    - errmsg
    - FreeFile
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void test_custom_stats_var_finish(PgStat_StatsFileOp status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_fetch_entry
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:491,1
    - Dst: PGSTAT_CUSTOM_VAR_STATS_IDX
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stat_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 495
    functionName: test_custom_stats_var_fetch_entry
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - PGSTAT_CUSTOM_VAR_STATS_IDX
    - pgstat_fetch_entry
    linkageType: ''
    returnType: PgStat_StatCustomVarEntry
    signature: 'PgStat_StatCustomVarEntry *

      test_custom_stats_var_fetch_entry(const char *stat_name)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:514,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:514,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:515,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:515,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:520,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:521,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:522,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:523,1
    - Dst: errdetail
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:524,1
    - Dst: GetNamedDSA
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:528,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:531,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:532,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:535,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:535,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:536,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:536,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:538,1
    - Dst: pgstat_get_entry_ref_locked
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:541,1
    - Dst: PGSTAT_CUSTOM_VAR_STATS_IDX
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:542,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:545,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:550,1
    - Dst: pgstat_unlock_entry
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:555,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:557,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 558
    functionName: test_custom_stats_var_create
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - GetNamedDSA
    - dsa_allocate
    - pgstat_get_entry_ref_locked
    - memcpy
    - PG_RETURN_VOID
    - errcode
    - pgstat_unlock_entry
    - ereport
    - dsa_get_address
    - strlen
    - text_to_cstring
    - errmsg
    - errdetail
    - PGSTAT_CUSTOM_VAR_STATS_IDX
    - memset
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_custom_stats_var_create(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:571,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:571,1
    - Dst: pgstat_prep_pending_entry
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:576,1
    - Dst: PGSTAT_CUSTOM_VAR_STATS_IDX
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:577,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 568
    functionDepth: 1
    functionLinenumber: 568
    functionLinenumberEnd: 583
    functionName: test_custom_stats_var_update
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - pgstat_prep_pending_entry
    - PGSTAT_CUSTOM_VAR_STATS_IDX
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_custom_stats_var_update(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:595,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:595,1
    - Dst: pgstat_drop_entry
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:598,1
    - Dst: PGSTAT_CUSTOM_VAR_STATS_IDX
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:599,1
    - Dst: pgstat_request_entry_refs_gc
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:600,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 603
    functionName: test_custom_stats_var_drop
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - pgstat_drop_entry
    - pgstat_request_entry_refs_gc
    - PGSTAT_CUSTOM_VAR_STATS_IDX
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_custom_stats_var_drop(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:620,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:626,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:627,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:630,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:631,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:633,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:636,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:639,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:651,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:651,1
    - Dst: test_custom_stats_var_fetch_entry
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:652,1
    - Dst: pgstat_get_entry_ref
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:658,1
    - Dst: PGSTAT_CUSTOM_VAR_STATS_IDX
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:659,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:666,1
    - Dst: GetNamedDSA
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:669,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:672,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:676,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:676,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:677,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:680,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:680,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:684,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:685,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:685,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c:689,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 613
    functionDepth: 2
    functionLinenumber: 613
    functionLinenumberEnd: 690
    functionName: test_custom_stats_var_report
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_var_stats.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - heap_form_tuple
    - dsa_get_address
    - text_to_cstring
    - SRF_RETURN_DONE
    - elog
    - test_custom_stats_var_fetch_entry
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - cstring_to_text
    - PGSTAT_CUSTOM_VAR_STATS_IDX
    - PointerGetDatum
    - get_call_result_type
    - SRF_PERCALL_SETUP
    - DsaPointerIsValid
    - BlessTupleDesc
    - pgstat_get_entry_ref
    - Int64GetDatum
    - GetNamedDSA
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_custom_stats_var_report(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_register_kind
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
    functionUses: 0
    functionsReached:
    - pgstat_register_kind
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockInitialize
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 90
    functionName: test_custom_stats_fixed_init_shmem_cb
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
    functionUses: 0
    functionsReached:
    - LWLockInitialize
    linkageType: ''
    returnType: void
    signature: void test_custom_stats_fixed_init_shmem_cb(void *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_get_custom_shmem_data
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:100,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:103,1
    - Dst: pgstat_copy_changecounted_stats
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:104,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 110
    functionName: test_custom_stats_fixed_reset_all_cb
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
    functionUses: 0
    functionsReached:
    - pgstat_copy_changecounted_stats
    - pgstat_get_custom_shmem_data
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void test_custom_stats_fixed_reset_all_cb(TimestampTz ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_get_custom_shmem_data
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:120,1
    - Dst: pgstat_get_custom_snapshot_data
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:122,1
    - Dst: pgstat_copy_changecounted_stats
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:126,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:131,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:132,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:133,1
    - Dst: FIXED_COMP
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 139
    functionName: test_custom_stats_fixed_snapshot_cb
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - memcpy
    - pgstat_get_custom_snapshot_data
    - pgstat_copy_changecounted_stats
    - pgstat_get_custom_shmem_data
    - LWLockRelease
    - FIXED_COMP
    linkageType: ''
    returnType: void
    signature: void test_custom_stats_fixed_snapshot_cb(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fld
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: FIXED_COMP
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIXED_COMP(fld)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_get_custom_shmem_data
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:156,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:158,1
    - Dst: pgstat_begin_changecount_write
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:160,1
    - Dst: pgstat_end_changecount_write
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:162,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:164,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 167
    functionName: test_custom_stats_fixed_update
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - LWLockAcquire
    - pgstat_get_custom_shmem_data
    - LWLockRelease
    - pgstat_begin_changecount_write
    - pgstat_end_changecount_write
    linkageType: ''
    returnType: Datum
    signature: Datum test_custom_stats_fixed_update(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_reset_of_kind
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:177,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 180
    functionName: test_custom_stats_fixed_reset
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - pgstat_reset_of_kind
    linkageType: ''
    returnType: Datum
    signature: Datum test_custom_stats_fixed_reset(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_snapshot_fixed
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:196,1
    - Dst: pgstat_get_custom_snapshot_data
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:197,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:200,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:201,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:203,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:205,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:206,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:208,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:217,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:221,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:221,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 222
    functionName: test_custom_stats_fixed_report
    functionSourceFile: /src/postgres/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
    functionUses: 0
    functionsReached:
    - CreateTemplateTupleDesc
    - pgstat_get_custom_snapshot_data
    - TupleDescFinalize
    - PG_RETURN_DATUM
    - heap_form_tuple
    - HeapTupleGetDatum
    - BlessTupleDesc
    - TimestampTzGetDatum
    - Int64GetDatum
    - pgstat_snapshot_fixed
    - TupleDescInitEntry
    linkageType: ''
    returnType: Datum
    signature: Datum test_custom_stats_fixed_report(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - int128
    - int128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 69
    functionName: my_int128_compare
    functionSourceFile: /src/postgres/src/test/modules/test_int128/test_int128.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int my_int128_compare(int128 x, int128 y)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_seed
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:84,1
    - Dst: time
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:84,1
    - Dst: strtol
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:87,1
    - Dst: pg_prng_int64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:93,1
    - Dst: pg_prng_int64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:94,1
    - Dst: pg_prng_int64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:95,1
    - Dst: pg_prng_int64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:96,1
    - Dst: pg_prng_int32
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:97,1
    - Dst: pg_prng_int32
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:106,1
    - Dst: int128_add_uint64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:113,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:117,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:118,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:119,1
    - Dst: int128_add_int64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:128,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:132,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:133,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:134,1
    - Dst: int128_add_int128
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:145,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:149,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:150,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:151,1
    - Dst: int128_sub_uint64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:160,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:164,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:165,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:166,1
    - Dst: int128_sub_int64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:175,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:179,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:180,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:181,1
    - Dst: int128_add_int64_mul_int64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:190,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:194,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:195,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:196,1
    - Dst: int128_sub_int64_mul_int64
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:205,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:209,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:210,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:211,1
    - Dst: int128_div_mod_int32
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:221,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:225,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:226,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:227,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:232,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:233,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:234,1
    - Dst: my_int128_compare
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:244,1
    - Dst: int128_compare
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:245,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:247,1
    - Dst: my_int128_compare
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:248,1
    - Dst: int128_compare
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:249,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:250,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:251,1
    - Dst: my_int128_compare
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:258,1
    - Dst: int128_compare
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:259,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:261,1
    - Dst: my_int128_compare
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:262,1
    - Dst: int128_compare
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:263,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:264,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:265,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 124
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 271
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/test_int128/test_int128.c
    functionUses: 4
    functionsReached:
    - int128_add_int128
    - pg_prng_int32
    - int128_sub_int64
    - int128_sub_uint64
    - strtol
    - int128_add_int64
    - my_int128_compare
    - time
    - printf
    - pg_prng_int64
    - int128_sub_int64_mul_int64
    - int128_compare
    - int128_add_uint64
    - pg_prng_seed
    - int128_div_mod_int32
    - int128_add_int64_mul_int64
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_int128/test_int128.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 283
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/test_int128/test_int128.c
    functionUses: 4
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:49,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:51,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:52,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:55,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:56,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:57,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:59,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:60,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:61,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:63,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:65,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:68,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:69,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:71,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:72,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:75,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:77,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:79,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:80,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - blk
    - 'off'
    - maxsize
    argTypes:
    - BlockNumber
    - OffsetNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 82
    functionName: test_itemptr_pair
    functionSourceFile: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c
    functionUses: 0
    functionsReached:
    - elog
    - ItemPointerSet
    - SizeOfGinPostingList
    - ItemPointerEquals
    - ItemPointerGetOffsetNumber
    - ginCompressPostingList
    - ginPostingListDecode
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: void test_itemptr_pair(BlockNumber blk, OffsetNumber off, int maxsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_itemptr_pair
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:90,1
    - Dst: test_itemptr_pair
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:91,1
    - Dst: test_itemptr_pair
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:92,1
    - Dst: test_itemptr_pair
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:93,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: test_ginpostinglist
    functionSourceFile: /src/postgres/src/test/modules/test_ginpostinglist/test_ginpostinglist.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - test_itemptr_pair
    linkageType: ''
    returnType: Datum
    signature: Datum test_ginpostinglist(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:39,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:41,1
    - Dst: bloom_add_element
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:42,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - filter
    - nelements
    argTypes:
    - bloom_filter*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 44
    functionName: populate_with_dummy_strings
    functionSourceFile: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c
    functionUses: 0
    functionsReached:
    - bloom_add_element
    - strlen
    - CHECK_FOR_INTERRUPTS
    - snprintf
    linkageType: ''
    returnType: void
    signature: void populate_with_dummy_strings(bloom_filter *filter, int64 nelements)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:60,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:62,1
    - Dst: bloom_lacks_element
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:63,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - filter
    - nelements
    argTypes:
    - bloom_filter*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 69
    functionName: nfalsepos_for_missing_strings
    functionSourceFile: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c
    functionUses: 0
    functionsReached:
    - strlen
    - bloom_lacks_element
    - CHECK_FOR_INTERRUPTS
    - snprintf
    linkageType: ''
    returnType: int64
    signature: int64 nfalsepos_for_missing_strings(bloom_filter *filter, int64 nelements)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:81,1
    - Dst: pg_prng_int32p
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:88,1
    - Dst: bloom_create
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:91,1
    - Dst: populate_with_dummy_strings
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:92,1
    - Dst: nfalsepos_for_missing_strings
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:93,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:95,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:96,1
    - Dst: bloom_prop_bits_set
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:98,1
    - Dst: bloom_free
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - power
    - nelements
    - callerseed
    argTypes:
    - int
    - int64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 101
    functionName: create_and_test_bloom
    functionSourceFile: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c
    functionUses: 0
    functionsReached:
    - elog
    - errmsg_internal
    - bloom_free
    - ereport
    - bloom_create
    - bloom_prop_bits_set
    - nfalsepos_for_missing_strings
    - pg_prng_int32p
    - populate_with_dummy_strings
    linkageType: ''
    returnType: void
    signature: void create_and_test_bloom(int power, int64 nelements, int callerseed)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:115,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:116,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:117,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:118,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:122,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:125,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:128,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:132,1
    - Dst: create_and_test_bloom
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:134,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c:137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 138
    functionName: test_bloomfilter
    functionSourceFile: /src/postgres/src/test/modules/test_bloomfilter/test_bloomfilter.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - create_and_test_bloom
    - PG_GETARG_INT64
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_bloomfilter(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:79,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:93,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:107,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:121,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:135,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:149,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:163,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:174,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:188,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:199,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 227
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 0
    functionsReached:
    - DefineCustomBoolVariable
    - MarkGUCPrefixReserved
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:237,1
    - Dst: superuser_arg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:239,1
    - Dst: GetUserId
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:239,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:242,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:243,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:244,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:246,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:247,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:248,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:252,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:254,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 4
    argNames:
    - type
    - hook
    - action
    - objName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 255
    functionName: emit_audit_message
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 0
    functionsReached:
    - superuser_arg
    - GetUserId
    - errcode
    - pfree
    - ereport
    - errmsg
    - IsParallelWorker
    linkageType: ''
    returnType: void
    signature: void emit_audit_message(const char *type, const char *hook, char *action,
      char *objName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emit_audit_message
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hook
    - action
    - objName
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: audit_attempt
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 0
    functionsReached:
    - emit_audit_message
    linkageType: ''
    returnType: void
    signature: void audit_attempt(const char *hook, char *action, char *objName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emit_audit_message
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hook
    - action
    - objName
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 267
    functionName: audit_success
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 0
    functionsReached:
    - emit_audit_message
    linkageType: ''
    returnType: void
    signature: void audit_success(const char *hook, char *action, char *objName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emit_audit_message
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hook
    - action
    - objName
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: audit_failure
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 0
    functionsReached:
    - emit_audit_message
    linkageType: ''
    returnType: void
    signature: void audit_failure(const char *hook, char *action, char *objName)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: audit_attempt
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:278,1
    - Dst: accesstype_to_string
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:279,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:280,1
    - Dst: superuser_arg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:292,1
    - Dst: GetUserId
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:292,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:293,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:294,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:295,1
    - Dst: superuser_arg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:299,1
    - Dst: GetUserId
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:299,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:300,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:301,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:302,1
    - Dst: superuser_arg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:306,1
    - Dst: GetUserId
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:306,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:307,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:308,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:309,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:312,1
    - Dst: audit_success
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:318,1
    - Dst: accesstype_to_string
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:319,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:320,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 5
    argNames:
    - access
    - classId
    - objName
    - subId
    - arg
    argTypes:
    - ObjectAccessType
    - Oid
    - char*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 275
    functionDepth: 3
    functionLinenumber: 275
    functionLinenumberEnd: 321
    functionName: REGRESS_object_access_hook_str
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 0
    functionsReached:
    - audit_attempt
    - elog
    - accesstype_to_string
    - superuser_arg
    - GetUserId
    - errcode
    - pstrdup
    - ereport
    - errmsg
    - audit_success
    linkageType: ''
    returnType: void
    signature: void REGRESS_object_access_hook_str(ObjectAccessType access, Oid classId,
      const char *objName, int subId, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: audit_attempt
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:326,1
    - Dst: accesstype_to_string
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:327,1
    - Dst: accesstype_arg_to_string
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:328,1
    - Dst: superuser_arg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:330,1
    - Dst: GetUserId
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:330,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:331,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:332,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:333,1
    - Dst: accesstype_to_string
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:334,1
    - Dst: accesstype_arg_to_string
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:335,1
    - Dst: audit_success
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:341,1
    - Dst: accesstype_to_string
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:342,1
    - Dst: accesstype_arg_to_string
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:343,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 5
    argNames:
    - access
    - classId
    - objectId
    - subId
    - arg
    argTypes:
    - ObjectAccessType
    - Oid
    - Oid
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 323
    functionDepth: 3
    functionLinenumber: 323
    functionLinenumberEnd: 344
    functionName: REGRESS_object_access_hook
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 0
    functionsReached:
    - audit_attempt
    - accesstype_to_string
    - superuser_arg
    - accesstype_arg_to_string
    - GetUserId
    - errcode
    - ereport
    - errmsg
    - audit_success
    linkageType: ''
    returnType: void
    signature: void REGRESS_object_access_hook(ObjectAccessType access, Oid classId,
      Oid objectId, int subId, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:349,1
    - Dst: GetUserId
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:349,1
    - Dst: audit_attempt
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:352,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:352,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:357,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:358,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:359,1
    - Dst: audit_success
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:367,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:368,1
    - Dst: audit_failure
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:371,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:372,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - rangeTabls
    - rteperminfos
    - do_abort
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 346
    functionDepth: 3
    functionLinenumber: 346
    functionLinenumberEnd: 376
    functionName: REGRESS_exec_check_perms
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 0
    functionsReached:
    - audit_attempt
    - superuser_arg
    - GetUserId
    - errcode
    - pstrdup
    - ereport
    - errmsg
    - audit_success
    - audit_failure
    linkageType: ''
    returnType: bool
    signature: bool REGRESS_exec_check_perms(List *rangeTabls, List *rteperminfos,
      bool do_abort)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetCommandTagName
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:389,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:389,1
    - Dst: audit_attempt
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:391,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:392,1
    - Dst: superuser_arg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:396,1
    - Dst: GetUserId
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:396,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:397,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:398,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:399,1
    - Dst: standard_ProcessUtility
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:407,1
    - Dst: audit_success
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:412,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 8
    argNames:
    - pstmt
    - queryString
    - readOnlyTree
    - context
    - params
    - queryEnv
    - dest
    - qc
    argTypes:
    - PlannedStmt*
    - char*
    - bool
    - ProcessUtilityContext
    - ParamListInfo
    - QueryEnvironment*
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 415
    functionName: REGRESS_utility_command
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 0
    functionsReached:
    - audit_attempt
    - superuser_arg
    - GetUserId
    - errcode
    - pstrdup
    - ereport
    - GetCommandTagName
    - errmsg
    - standard_ProcessUtility
    - audit_success
    - CreateCommandTag
    linkageType: ''
    returnType: void
    signature: "void REGRESS_utility_command(PlannedStmt *pstmt,\n\t\t\t\t\t\tconst
      char *queryString,\n\t\t\t\t\t\tbool readOnlyTree,\n\t\t\t\t\t\tProcessUtilityContext
      context,\n\t\t\t\t\t\tParamListInfo params,\n\t\t\t\t\t\tQueryEnvironment *queryEnv,\n\t\t\t\t\t\tDestReceiver
      *dest,\n\t\t\t\t\t\tQueryCompletion *qc)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:447,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:449,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:451,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:453,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 2
    argNames:
    - access
    - subId
    argTypes:
    - ObjectAccessType
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 454
    functionName: accesstype_to_string
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 2
    functionsReached:
    - psprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      accesstype_to_string(ObjectAccessType access, int subId)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:460,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:468,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:475,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:494,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:496,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:503,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:511,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:513,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c:516,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - access
    - arg
    argTypes:
    - ObjectAccessType
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 517
    functionName: accesstype_arg_to_string
    functionSourceFile: /src/postgres/src/test/modules/test_oat_hooks/test_oat_hooks.c
    functionUses: 1
    functionsReached:
    - OidIsValid
    - psprintf
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      accesstype_arg_to_string(ObjectAccessType access, void *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - arg
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 30
    functionName: init_tranche
    functionSourceFile: /src/postgres/src/test/modules/test_dsa/test_dsa.c
    functionUses: 0
    functionsReached:
    - LWLockNewTrancheId
    linkageType: ''
    returnType: void
    signature: void init_tranche(void *ptr, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetNamedDSMSegment
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:42,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:45,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:48,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:49,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:49,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:56,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:57,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:57,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:58,1
    - Dst: dsa_free
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:63,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:66,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:68,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 69
    functionName: test_dsa_basic
    functionSourceFile: /src/postgres/src/test/modules/test_dsa/test_dsa.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - strcmp
    - dsa_free
    - dsa_create
    - dsa_detach
    - GetNamedDSMSegment
    - dsa_get_address
    - dsa_allocate
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum test_dsa_basic(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetNamedDSMSegment
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:83,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:87,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:94,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:99,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:100,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:100,1
    - Dst: dsa_free
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:105,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:109,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:112,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:115,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:118,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:120,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 123
    functionName: test_dsa_resowners
    functionSourceFile: /src/postgres/src/test/modules/test_dsa/test_dsa.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerRelease
    - PG_RETURN_VOID
    - dsa_free
    - dsa_create
    - dsa_detach
    - ResourceOwnerDelete
    - GetNamedDSMSegment
    - dsa_get_address
    - dsa_allocate
    - ResourceOwnerCreate
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum test_dsa_resowners(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:137,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:138,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:139,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:147,1
    - Dst: GetNamedDSMSegment
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:149,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:154,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:155,1
    - Dst: dsa_free
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:157,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:158,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 162
    functionName: test_dsa_allocate
    functionSourceFile: /src/postgres/src/test/modules/test_dsa/test_dsa.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - dsa_free
    - dsa_create
    - dsa_detach
    - GetNamedDSMSegment
    - dsa_allocate
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_dsa_allocate(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prev_planner_hook
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:50,1
    - Dst: standard_planner
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:53,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:59,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:60,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:61,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:62,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - parse
    - query_string
    - cursorOptions
    - boundParams
    - es
    argTypes:
    - Query*
    - char*
    - int
    - ParamListInfo
    - ExplainState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 72
    functionName: delay_execution_planner
    functionSourceFile: /src/postgres/src/test/modules/delay_execution/delay_execution.c
    functionUses: 0
    functionsReached:
    - standard_planner
    - AcceptInvalidationMessages
    - DirectFunctionCall1
    - prev_planner_hook
    - Int64GetDatum
    linkageType: ''
    returnType: PlannedStmt
    signature: "PlannedStmt *\ndelay_execution_planner(Query *parse, const char *query_string,\n\t\t\t\t\t\tint
      cursorOptions, ParamListInfo boundParams,\n\t\t\t\t\t\tExplainState *es)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DefineCustomIntVariable
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:79,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 96
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/delay_execution/delay_execution.c
    functionUses: 0
    functionsReached:
    - MarkGUCPrefixReserved
    - DefineCustomIntVariable
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:33,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:64,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:64,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 65
    functionName: get_command_type
    functionSourceFile: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_GETARG_POINTER
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum get_command_type(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:74,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:77,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:79,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:79,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 80
    functionName: get_command_tag
    functionSourceFile: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - CreateCommandName
    linkageType: ''
    returnType: Datum
    signature: Datum get_command_tag(PG_FUNCTION_ARGS)
  - BBCount: 73
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:89,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:94,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:96,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:99,1
    - Dst: foreach
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:101,1
    - Dst: lfirst
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:103,1
    - Dst: castNode
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:104,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:109,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:110,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:321,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:321,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:323,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:324,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:328,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:329,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:334,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 226
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 338
    functionName: get_altertable_subcmdinfo
    functionSourceFile: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
    functionUses: 0
    functionsReached:
    - elog
    - foreach
    - InitMaterializedSRF
    - castNode
    - psprintf
    - tuplestore_putvalues
    - getObjectDescription
    - lfirst
    - memset
    - CStringGetTextDatum
    - OidIsValid
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum get_altertable_subcmdinfo(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_extensions/test_ext.c:19,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_extensions/test_ext.c:20,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_extensions/test_ext.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 22
    functionName: test_ext
    functionSourceFile: /src/postgres/src/test/modules/test_extensions/test_ext.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ereport
    - errmsg
    linkageType: ''
    returnType: Datum
    signature: Datum test_ext(PG_FUNCTION_ARGS)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:34,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:35,1
    - Dst: SPI_connect
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:57,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:65,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:67,1
    - Dst: SPI_execute_plan
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:69,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:71,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:74,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:75,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:76,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:88,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:91,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:96,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:99,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:134,1
    - Dst: SPI_plan_get_cached_plan
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:140,1
    - Dst: list_length
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:142,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:143,1
    - Dst: linitial_node
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:144,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:146,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:148,1
    - Dst: list_length
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:148,1
    - Dst: linitial_node
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:149,1
    - Dst: lsecond_node
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:150,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:166,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:167,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:169,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:173,1
    - Dst: predicate_refuted_by
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:177,1
    - Dst: predicate_refuted_by
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:181,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:189,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:191,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:193,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:195,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:208,1
    - Dst: SPI_finish
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:213,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:214,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:216,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:217,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:219,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:221,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:223,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:225,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:227,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:229,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:231,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:233,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:234,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:236,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:237,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:238,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:239,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:240,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:241,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:242,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:243,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:245,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:245,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:245,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 84
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 246
    functionName: test_predtest
    functionSourceFile: /src/postgres/src/test/modules/test_predtest/test_predtest.c
    functionUses: 0
    functionsReached:
    - predicate_refuted_by
    - heap_form_tuple
    - text_to_cstring
    - make_ands_implicit
    - predicate_implied_by
    - DatumGetBool
    - elog
    - linitial_node
    - Assert
    - TupleDescFinalize
    - PG_RETURN_DATUM
    - SPI_execute_plan
    - SPI_plan_get_cached_plan
    - list_length
    - TupleDescInitEntry
    - lsecond_node
    - CreateTemplateTupleDesc
    - SPI_prepare
    - BlessTupleDesc
    - TupleDescAttr
    - SPI_getbinval
    - SPI_finish
    - HeapTupleGetDatum
    - BoolGetDatum
    - SPI_connect
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_predtest(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/ldap_password_func/ldap_password_func.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/test/modules/ldap_password_func/ldap_password_func.c:40,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/ldap_password_func/ldap_password_func.c:42,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/modules/ldap_password_func/ldap_password_func.c:44,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 9
    argCount: 1
    argNames:
    - pw
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 56
    functionName: rot13_passphrase
    functionSourceFile: /src/postgres/src/test/modules/ldap_password_func/ldap_password_func.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - strlen
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      rot13_passphrase(char *pw)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:77,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:78,1
    - Dst: SPI_connect
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:79,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:80,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:80,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:81,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:84,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:85,1
    - Dst: SPI_execute
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:89,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:91,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:94,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:96,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:96,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:100,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:105,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:106,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:116,1
    - Dst: SPI_execute
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:119,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:122,1
    - Dst: SPI_finish
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:127,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:128,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:129,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:131,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - table
    argTypes:
    - worktable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 132
    functionName: initialize_worker_spi
    functionSourceFile: /src/postgres/src/test/modules/worker_spi/worker_spi.c
    functionUses: 0
    functionsReached:
    - elog
    - PopActiveSnapshot
    - SPI_finish
    - DatumGetInt64
    - SetCurrentStatementStartTimestamp
    - appendStringInfo
    - initStringInfo
    - CommitTransactionCommand
    - SPI_execute
    - GetTransactionSnapshot
    - StartTransactionCommand
    - pgstat_report_activity
    - PushActiveSnapshot
    - SPI_connect
    - resetStringInfo
    - SPI_getbinval
    linkageType: ''
    returnType: void
    signature: void initialize_worker_spi(worktable *table)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:137,1
    - Dst: palloc_object
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:146,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:147,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:148,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:149,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:153,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:155,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:157,1
    - Dst: pqsignal
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:160,1
    - Dst: pqsignal
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:161,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:164,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:167,1
    - Dst: BackgroundWorkerInitializeConnectionByOid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:168,1
    - Dst: BackgroundWorkerInitializeConnection
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:170,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:173,1
    - Dst: initialize_worker_spi
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:175,1
    - Dst: quote_identifier
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:184,1
    - Dst: quote_identifier
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:185,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:187,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:188,1
    - Dst: WaitEventExtensionNew
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:213,1
    - Dst: WaitLatch
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:221,1
    - Dst: ResetLatch
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:225,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:227,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:235,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:254,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:255,1
    - Dst: SPI_connect
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:256,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:257,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:257,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:259,1
    - Dst: SPI_execute
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:262,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:265,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:273,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:273,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:277,1
    - Dst: SPI_finish
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:285,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:286,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:287,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:289,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:290,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 54
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 294
    functionName: worker_spi_main
    functionSourceFile: /src/postgres/src/test/modules/worker_spi/worker_spi.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - initialize_worker_spi
    - pstrdup
    - CommitTransactionCommand
    - elog
    - memcpy
    - ResetLatch
    - StartTransactionCommand
    - pgstat_report_activity
    - palloc_object
    - BackgroundWorkerUnblockSignals
    - OidIsValid
    - WaitEventExtensionNew
    - initStringInfo
    - CHECK_FOR_INTERRUPTS
    - GetTransactionSnapshot
    - BackgroundWorkerInitializeConnection
    - quote_identifier
    - SPI_getbinval
    - SPI_finish
    - pqsignal
    - appendStringInfo
    - SetCurrentStatementStartTimestamp
    - DatumGetInt32
    - SPI_execute
    - WaitLatch
    - sprintf
    - PushActiveSnapshot
    - ProcessConfigFile
    - SPI_connect
    - BackgroundWorkerInitializeConnectionByOid
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void worker_spi_main(Datum main_arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DefineCustomIntVariable
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:313,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:326,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:335,1
    - Dst: DefineCustomIntVariable
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:347,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:360,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:363,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:368,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:369,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:381,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:382,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:383,1
    - Dst: RegisterBackgroundWorker
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:385,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 387
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/worker_spi/worker_spi.c
    functionUses: 0
    functionsReached:
    - DefineCustomIntVariable
    - DefineCustomStringVariable
    - Int32GetDatum
    - MarkGUCPrefixReserved
    - RegisterBackgroundWorker
    - memset
    - sprintf
    - snprintf
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:395,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:396,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:397,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:404,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:408,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:410,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:419,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:420,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:421,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:422,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:423,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:428,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:430,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:431,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:432,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:434,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:435,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:436,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:437,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:439,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:439,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:440,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:444,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:446,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:448,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:451,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:452,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:453,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:460,1
    - Dst: get_database_oid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:461,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:467,1
    - Dst: get_role_oid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:468,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:471,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:473,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:475,1
    - Dst: RegisterDynamicBackgroundWorker
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:477,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:478,1
    - Dst: WaitForBackgroundWorkerStartup
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:480,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:483,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:484,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:485,1
    - Dst: errhint
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:486,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:488,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:489,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:490,1
    - Dst: errhint
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:491,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:492,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:494,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 495
    functionName: worker_spi_launch
    functionSourceFile: /src/postgres/src/test/modules/worker_spi/worker_spi.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - errhint
    - ARR_NDIM
    - PG_GETARG_ARRAYTYPE_P
    - get_role_oid
    - memcpy
    - Int32GetDatum
    - Assert
    - errmsg
    - array_contains_nulls
    - WaitForBackgroundWorkerStartup
    - OidIsValid
    - TextDatumGetCString
    - get_database_oid
    - PG_RETURN_INT32
    - ereport
    - memset
    - PG_GETARG_INT32
    - deconstruct_array_builtin
    - PG_GETARG_BOOL
    - RegisterDynamicBackgroundWorker
    - ARR_ELEMTYPE
    - PG_GETARG_OID
    - sprintf
    - PG_RETURN_NULL
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum worker_spi_launch(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:37,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:39,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 47
    functionName: spgist_name_config
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum spgist_name_config(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:58,1
    - Dst: SET_VARSIZE_SHORT
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:62,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:64,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:68,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:69,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data
    - datalen
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 73
    functionName: formTextDatum
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - SET_VARSIZE_SHORT
    - memcpy
    - PointerGetDatum
    - SET_VARSIZE
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum formTextDatum(const char *data, int datalen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - a
    - b
    - lena
    - lenb
    argTypes:
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 91
    functionName: commonPrefix
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int commonPrefix(const char *a, const char *b, int lena, int lenb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt16
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - nodeLabels
    - nNodes
    - c
    - i
    argTypes:
    - Datum*
    - int
    - int16
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 122
    functionName: searchChar
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - DatumGetInt16
    linkageType: ''
    returnType: bool
    signature: bool searchChar(const Datum *nodeLabels, int nNodes, int16 c, int *i)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:128,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:129,1
    - Dst: DatumGetName
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:130,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:131,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:132,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:142,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:144,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:145,1
    - Dst: commonPrefix
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:147,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:172,1
    - Dst: palloc_object
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:176,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:178,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:190,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:194,1
    - Dst: searchChar
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:207,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:225,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:229,1
    - Dst: palloc_object
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:248,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:249,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:257,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:261,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 262
    functionName: spgist_name_choose
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - commonPrefix
    - DatumGetTextPP
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - formTextDatum
    - strlen
    - NameStr
    - searchChar
    - palloc_object
    - PG_GETARG_POINTER
    - DatumGetName
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum spgist_name_choose(PG_FUNCTION_ARGS)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:270,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:271,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:293,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:294,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:295,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:300,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:301,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:305,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:306,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:309,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:309,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:310,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:313,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:313,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:314,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:323,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:324,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:325,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:330,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:340,1
    - Dst: DatumGetName
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:352,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:353,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:354,1
    - Dst: memcmp
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:356,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:356,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:357,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:376,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:389,1
    - Dst: datumCopy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:391,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:391,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:396,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 397
    functionName: spgist_name_inner_consistent
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - palloc_array
    - VARDATA_ANY
    - NameStr
    - SET_VARSIZE
    - VARDATA
    - DatumGetInt16
    - elog
    - memcpy
    - Assert
    - VARSIZE_ANY_EXHDR
    - PointerGetDatum
    - memcmp
    - PG_GETARG_POINTER
    - DatumGetTextPP
    - strlen
    - datumCopy
    - palloc
    - Min
    - DatumGetName
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum spgist_name_inner_consistent(PG_FUNCTION_ARGS)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:403,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:404,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:416,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:419,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:420,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:422,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:423,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:426,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:427,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:428,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:429,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:431,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:431,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:432,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:437,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:437,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:438,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:439,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:439,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:440,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:442,1
    - Dst: DatumGetName
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:449,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:450,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:451,1
    - Dst: memcmp
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:455,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:455,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:483,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:493,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 494
    functionName: spgist_name_leaf_consistent
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - memcmp
    - elog
    - memcpy
    - Assert
    - DatumGetTextPP
    - palloc0
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - strlen
    - PointerGetDatum
    - VARDATA
    - NameStr
    - PG_RETURN_BOOL
    - Min
    - PG_GETARG_POINTER
    - DatumGetName
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum spgist_name_leaf_consistent(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:500,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:501,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:503,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:503,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 504
    functionName: spgist_name_compress
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - PG_RETURN_DATUM
    - formTextDatum
    - strlen
    - NameStr
    linkageType: ''
    returnType: Datum
    signature: Datum spgist_name_compress(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:37,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:38,1
    - Dst: makeNode
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:39,1
    - Dst: copyObject
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:41,1
    - Dst: list_make1
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:42,1
    - Dst: StaticAssertStmt
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:54,1
    - Dst: StaticAssertExpr
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:55,1
    - Dst: list_free
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:57,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:58,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:59,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:64,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:67,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 72
    functionName: test_cplusplus_add
    functionSourceFile: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp
    functionUses: 0
    functionsReached:
    - elog
    - copyObject
    - PG_RETURN_INT32
    - list_free
    - pfree
    - makeNode
    - list_make1
    - StaticAssertExpr
    - PG_GETARG_INT32
    - StaticAssertStmt
    linkageType: ''
    returnType: Datum
    signature: Datum test_cplusplus_add(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(RangeTblRef, rtr, list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/test/modules/test_cplusplusext/test_cplusplusext.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void foreach_node(RangeTblRef, rtr, list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:38,1
    - Dst: run_child_tests
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:50,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:56,1
    - Dst: getpid
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:56,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:57,1
    - Dst: getpid
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:57,1
    - Dst: run_parent_tests
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:59,1
    - Dst: unlink
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:62,1
    - Dst: unlink
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:63,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 73
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c
    functionUses: 4
    functionsReached:
    - getpid
    - unlink
    - run_child_tests
    - run_parent_tests
    - fprintf
    - snprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:89,1
    - Dst: open
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:92,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:95,1
    - Dst: strerror
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:95,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:96,1
    - Dst: open
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:100,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:103,1
    - Dst: strerror
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:103,1
    - Dst: close
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:104,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:105,1
    - Dst: _get_osfhandle
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:109,1
    - Dst: _get_osfhandle
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:110,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:114,1
    - Dst: close
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:115,1
    - Dst: close
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:116,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:117,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:120,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:121,1
    - Dst: GetModuleFileName
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:127,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:128,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:130,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:131,1
    - Dst: CreateProcess
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:133,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:144,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:144,1
    - Dst: close
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:145,1
    - Dst: close
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:146,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:147,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:150,1
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:153,1
    - Dst: GetExitCodeProcess
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:154,1
    - Dst: CloseHandle
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:156,1
    - Dst: CloseHandle
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:157,1
    - Dst: close
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:159,1
    - Dst: close
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:160,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:162,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:166,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:170,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:171,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 2
    argNames:
    - testfile1
    - testfile2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 173
    functionName: run_parent_tests
    functionSourceFile: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c
    functionUses: 1
    functionsReached:
    - CloseHandle
    - strerror
    - CreateProcess
    - GetModuleFileName
    - GetLastError
    - WaitForSingleObject
    - _get_osfhandle
    - snprintf
    - printf
    - close
    - open
    - GetExitCodeProcess
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void run_parent_tests(const char *testfile1, const char *testfile2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:184,1
    - Dst: sscanf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:185,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:187,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:188,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:191,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:192,1
    - Dst: try_write_to_handle
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:195,1
    - Dst: try_write_to_handle
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:196,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:198,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:200,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:209,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:210,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:214,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - handle1_str
    - handle2_str
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 217
    functionName: run_child_tests
    functionSourceFile: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c
    functionUses: 1
    functionsReached:
    - sscanf
    - printf
    - try_write_to_handle
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void run_child_tests(const char *handle1_str, const char *handle2_str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WriteFile
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:226,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:226,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:228,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:230,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:235,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - h
    - label
    argTypes:
    - HANDLE
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 239
    functionName: try_write_to_handle
    functionSourceFile: /src/postgres/src/test/modules/test_cloexec/test_cloexec.c
    functionUses: 1
    functionsReached:
    - GetLastError
    - WriteFile
    - strlen
    - printf
    linkageType: ''
    returnType: bool
    signature: bool try_write_to_handle(HANDLE h, const char *label)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:47,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:55,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:55,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:56,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:56,1
    - Dst: make_parsestate
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:59,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:61,1
    - Dst: addNSItemToQuery
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:64,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:66,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:68,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:70,1
    - Dst: makeFuncCall
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:77,1
    - Dst: list_make2
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:77,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:77,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:78,1
    - Dst: makeNode
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:83,1
    - Dst: list_make1
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:84,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:84,1
    - Dst: makeSimpleA_Expr
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:87,1
    - Dst: transformWhereClause
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:89,1
    - Dst: copyObject
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:89,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:93,1
    - Dst: copyObject
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:95,1
    - Dst: list_make1
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - cmdtype
    - relation
    argTypes:
    - CmdType
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 101
    functionName: test_rls_hooks_permissive
    functionSourceFile: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - makeSimpleA_Expr
    - copyObject
    - strcmp
    - makeString
    - pstrdup
    - addRangeTableEntryForRelation
    - makeNode
    - assign_expr_collations
    - list_make2
    - addNSItemToQuery
    - transformWhereClause
    - RelationGetRelationName
    - makeFuncCall
    - list_make1
    - ObjectIdGetDatum
    - make_parsestate
    - construct_array_builtin
    linkageType: ''
    returnType: List
    signature: 'List *

      test_rls_hooks_permissive(CmdType cmdtype, Relation relation)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:115,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:123,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:123,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:124,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:124,1
    - Dst: make_parsestate
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:127,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:129,1
    - Dst: addNSItemToQuery
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:132,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:134,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:136,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:138,1
    - Dst: makeFuncCall
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:140,1
    - Dst: list_make2
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:140,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:140,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:141,1
    - Dst: makeNode
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:146,1
    - Dst: list_make1
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:147,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:147,1
    - Dst: makeSimpleA_Expr
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:150,1
    - Dst: transformWhereClause
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:152,1
    - Dst: copyObject
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:152,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:156,1
    - Dst: copyObject
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:158,1
    - Dst: list_make1
      Src: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - cmdtype
    - relation
    argTypes:
    - CmdType
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 164
    functionName: test_rls_hooks_restrictive
    functionSourceFile: /src/postgres/src/test/modules/test_rls_hooks/test_rls_hooks.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - makeSimpleA_Expr
    - copyObject
    - strcmp
    - makeString
    - pstrdup
    - addRangeTableEntryForRelation
    - makeNode
    - assign_expr_collations
    - list_make2
    - addNSItemToQuery
    - transformWhereClause
    - RelationGetRelationName
    - makeFuncCall
    - list_make1
    - ObjectIdGetDatum
    - make_parsestate
    - construct_array_builtin
    linkageType: ''
    returnType: List
    signature: 'List *

      test_rls_hooks_restrictive(CmdType cmdtype, Relation relation)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:29,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:29,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - Datum
    - Datum
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: int_cmp
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int int_cmp(Datum a, Datum b, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_size
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:40,1
    - Dst: Max
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:41,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:41,1
    - Dst: binaryheap_get_node
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 44
    functionName: get_max_from_heap
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - binaryheap_size
    - Max
    - binaryheap_get_node
    linkageType: ''
    returnType: int
    signature: int get_max_from_heap(binaryheap *heap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:52,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 73
    functionName: get_permutation
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - pg_prng_uint64_range
    - palloc
    linkageType: ''
    returnType: int
    signature: 'int *

      get_permutation(int size)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_size
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:82,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:86,1
    - Dst: binaryheap_get_node
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:86,1
    - Dst: binaryheap_size
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:88,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:89,1
    - Dst: binaryheap_get_node
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:89,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:90,1
    - Dst: binaryheap_size
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:92,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:93,1
    - Dst: binaryheap_get_node
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:93,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:94,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 96
    functionName: verify_heap_property
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - elog
    - DatumGetInt32
    - binaryheap_size
    - binaryheap_get_node
    linkageType: ''
    returnType: void
    signature: void verify_heap_property(binaryheap *heap)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:104,1
    - Dst: get_permutation
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:105,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:107,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:108,1
    - Dst: binaryheap_size
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:109,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:110,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:114,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:114,1
    - Dst: verify_heap_property
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:115,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:118,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:119,1
    - Dst: binaryheap_size
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:120,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:121,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:123,1
    - Dst: binaryheap_first
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:123,1
    - Dst: get_max_from_heap
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:123,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:124,1
    - Dst: get_max_from_heap
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:128,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:129,1
    - Dst: binaryheap_remove_first
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:129,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:132,1
    - Dst: verify_heap_property
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:133,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:136,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:137,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 138
    functionName: test_basic
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - elog
    - binaryheap_size
    - get_permutation
    - binaryheap_allocate
    - Int32GetDatum
    - get_max_from_heap
    - binaryheap_empty
    - binaryheap_first
    - DatumGetInt32
    - binaryheap_add
    - binaryheap_remove_first
    - verify_heap_property
    linkageType: ''
    returnType: void
    signature: void test_basic(int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:146,1
    - Dst: get_permutation
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:147,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:150,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:150,1
    - Dst: binaryheap_size
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:152,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:153,1
    - Dst: binaryheap_build
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:155,1
    - Dst: verify_heap_property
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 157
    functionName: test_build
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - elog
    - binaryheap_size
    - get_permutation
    - binaryheap_allocate
    - Int32GetDatum
    - binaryheap_add_unordered
    - verify_heap_property
    - binaryheap_build
    linkageType: ''
    returnType: void
    signature: void test_build(int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:165,1
    - Dst: get_permutation
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:166,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:167,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:171,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:171,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:175,1
    - Dst: binaryheap_size
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:176,1
    - Dst: binaryheap_remove_node
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:178,1
    - Dst: verify_heap_property
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:179,1
    - Dst: binaryheap_size
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:182,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 184
    functionName: test_remove_node
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - elog
    - binaryheap_size
    - get_permutation
    - binaryheap_allocate
    - Int32GetDatum
    - pg_prng_uint64_range
    - binaryheap_remove_node
    - binaryheap_add
    - verify_heap_property
    linkageType: ''
    returnType: void
    signature: void test_remove_node(int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:192,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:195,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:195,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:200,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:200,1
    - Dst: verify_heap_property
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:201,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:206,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:206,1
    - Dst: verify_heap_property
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:207,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:212,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:212,1
    - Dst: verify_heap_property
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 214
    functionName: test_replace_first
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - binaryheap_allocate
    - Int32GetDatum
    - binaryheap_replace_first
    - binaryheap_add
    - verify_heap_property
    linkageType: ''
    returnType: void
    signature: void test_replace_first(int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:222,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:223,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:226,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:226,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:230,1
    - Dst: binaryheap_remove_first
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:230,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 233
    functionName: test_duplicates
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - elog
    - binaryheap_allocate
    - Int32GetDatum
    - pg_prng_uint64_range
    - DatumGetInt32
    - binaryheap_add
    - binaryheap_remove_first
    linkageType: ''
    returnType: void
    signature: void test_duplicates(int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:241,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:244,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:244,1
    - Dst: binaryheap_reset
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:246,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:248,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 250
    functionName: test_reset
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - elog
    - binaryheap_allocate
    - Int32GetDatum
    - binaryheap_reset
    - binaryheap_empty
    - binaryheap_add
    linkageType: ''
    returnType: void
    signature: void test_reset(int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_basic
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:266,1
    - Dst: test_build
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:267,1
    - Dst: test_remove_node
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:268,1
    - Dst: test_replace_first
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:269,1
    - Dst: test_duplicates
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:270,1
    - Dst: test_reset
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:271,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 275
    functionName: test_binaryheap
    functionSourceFile: /src/postgres/src/test/modules/test_binaryheap/test_binaryheap.c
    functionUses: 0
    functionsReached:
    - test_reset
    - test_build
    - PG_RETURN_VOID
    - test_replace_first
    - test_basic
    - test_duplicates
    - test_remove_node
    linkageType: ''
    returnType: Datum
    signature: Datum test_binaryheap(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: pg_debug
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:61,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 25
    functionsReached:
    - exit
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void exit_nicely(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: pg_fatal
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 427
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_fatal(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:79,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:81,1
    - Dst: va_start
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:82,1
    - Dst: vfprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:83,1
    - Dst: va_end
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:84,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:85,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:85,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:86,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - line
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 88
    functionName: pg_fatal_impl
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - vfprintf
    - va_end
    - va_start
    - Assert
    - strlen
    - fflush
    - exit
    - fprintf
    linkageType: ''
    returnType: pg_noreturn
    signature: pg_noreturn pg_fatal_impl(int line, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - conn
    - ','
    - status
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: confirm_result_status
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: confirm_result_status(conn, status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:100,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:102,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:103,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:104,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:105,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:106,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:106,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:107,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - line
    - conn
    - status
    argTypes:
    - int
    - PGconn*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 110
    functionName: confirm_result_status_impl
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - pg_fatal_impl
    - PQresStatus
    - PQresultStatus
    - PQgetResult
    - PQerrorMessage
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      confirm_result_status_impl(int line, PGconn *conn, ExecStatusType status)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - conn
    - ','
    - status
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: consume_result_status
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: consume_result_status(conn, status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: confirm_result_status_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:122,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - line
    - conn
    - status
    argTypes:
    - int
    - PGconn*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 124
    functionName: consume_result_status_impl
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQclear
    - confirm_result_status_impl
    linkageType: ''
    returnType: void
    signature: void consume_result_status_impl(int line, PGconn *conn, ExecStatusType
      status)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: consume_null_result
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: consume_null_result(conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:135,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:137,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:138,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:138,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - line
    - conn
    argTypes:
    - int
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 140
    functionName: consume_null_result_impl
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - pg_fatal_impl
    - PQresStatus
    - PQresultStatus
    - PQgetResult
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: void consume_null_result_impl(int line, PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: consume_query_cancel
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: consume_query_cancel(conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: confirm_result_status_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:151,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:152,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:152,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:153,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:154,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:155,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:157,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - line
    - conn
    argTypes:
    - int
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 159
    functionName: consume_query_cancel_impl
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - pg_fatal_impl
    - PQclear
    - strcmp
    - confirm_result_status_impl
    - PQconsumeInput
    - PQresultErrorField
    - PQisBusy
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: void consume_query_cancel_impl(int line, PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:172,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:174,1
    - Dst: PQexecParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:185,1
    - Dst: PQexecParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:190,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:195,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:196,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:196,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:197,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:198,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:198,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:199,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:200,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:200,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:201,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:202,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:204,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:207,1
    - Dst: pg_usleep
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:210,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:213,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 5
    argNames:
    - line
    - monitorConn
    - procpid
    - state
    - event
    argTypes:
    - int
    - PGconn*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 214
    functionName: wait_for_connection_state
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - pg_fatal_impl
    - PQclear
    - PQexecParams
    - strcmp
    - Assert
    - pfree
    - psprintf
    - PQgetvalue
    - PQntuples
    - PQresultStatus
    - PQerrorMessage
    - pg_usleep
    - PQnfields
    linkageType: ''
    returnType: void
    signature: "void wait_for_connection_state(int line, PGconn *monitorConn, int
      procpid,\n\t\t\t\t\t\t  char *state, char *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - conn
    - ','
    - monitorConn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: send_cancellable_query
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: send_cancellable_query(conn, monitorConn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: wait_for_connection_state
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:229,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:229,1
    - Dst: getenv
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:231,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:235,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:237,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:237,1
    - Dst: wait_for_connection_state
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:243,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - line
    - conn
    - monitorConn
    argTypes:
    - int
    - PGconn*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 244
    functionName: send_cancellable_query_impl
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - pg_fatal_impl
    - wait_for_connection_state
    - PQbackendPID
    - PQsendQueryParams
    - getenv
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: void send_cancellable_query_impl(int line, PGconn *conn, PGconn *monitorConn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfo
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:253,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:263,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:264,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:278,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:280,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:281,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:282,1
    - Dst: pg_free
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:284,1
    - Dst: pg_free
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:285,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:286,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 289
    functionName: copy_connection
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQconninfoFree
    - pg_malloc_array
    - pg_fatal
    - PQconnectdbParams
    - PQconninfo
    - pg_free
    - PQerrorMessage
    - PQstatus
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      copy_connection(PGconn *conn)'
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:302,1
    - Dst: PQsetnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:304,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:305,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:305,1
    - Dst: copy_connection
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:311,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:312,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:312,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:315,1
    - Dst: PQgetCancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:316,1
    - Dst: PQcancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:317,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:318,1
    - Dst: consume_query_cancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:319,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:322,1
    - Dst: PQcancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:323,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:324,1
    - Dst: consume_query_cancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:325,1
    - Dst: PQfreeCancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:327,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:330,1
    - Dst: PQrequestCancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:331,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:332,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:332,1
    - Dst: consume_query_cancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:333,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:336,1
    - Dst: PQcancelCreate
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:337,1
    - Dst: PQcancelBlocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:338,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:339,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:339,1
    - Dst: consume_query_cancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:340,1
    - Dst: PQcancelFinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:341,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:344,1
    - Dst: PQcancelCreate
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:345,1
    - Dst: PQcancelStart
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:346,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:347,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:347,1
    - Dst: PQcancelPoll
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:353,1
    - Dst: PQcancelSocket
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:354,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:359,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:360,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:364,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:365,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:368,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:369,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:372,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:372,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:376,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:376,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:383,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:387,1
    - Dst: PQcancelStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:392,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:393,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:393,1
    - Dst: consume_query_cancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:394,1
    - Dst: PQcancelReset
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:400,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:402,1
    - Dst: PQcancelStart
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:403,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:404,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:404,1
    - Dst: PQcancelPoll
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:410,1
    - Dst: PQcancelSocket
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:411,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:416,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:417,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:421,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:422,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:425,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:426,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:429,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:429,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:433,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:433,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:440,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:444,1
    - Dst: PQcancelStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:449,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:450,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:450,1
    - Dst: consume_query_cancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:451,1
    - Dst: PQcancelFinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:453,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:454,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:456,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 103
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 457
    functionName: test_cancel
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - pg_debug
    - copy_connection
    - PQcancel
    - PQcancelBlocking
    - PQcancelStart
    - PQcancelStatus
    - consume_query_cancel
    - fprintf
    - PQgetCancel
    - PQcancelCreate
    - Assert
    - send_cancellable_query
    - PQcancelPoll
    - FD_SET
    - PQfinish
    - PQcancelErrorMessage
    - PQcancelSocket
    - PQstatus
    - PQcancelFinish
    - PQcancelReset
    - PQsetnonblocking
    - PQerrorMessage
    - pg_fatal
    - PQfreeCancel
    - select
    - PQrequestCancel
    - FD_ZERO
    linkageType: ''
    returnType: void
    signature: void test_cancel(PGconn *conn)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:464,1
    - Dst: PQisnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:466,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:467,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:469,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:470,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:472,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:473,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:476,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:477,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:478,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:479,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:479,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:481,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:482,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:483,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:486,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:487,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:488,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:488,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:490,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:491,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:494,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:495,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:497,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:498,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:501,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:502,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:504,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:505,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:508,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:509,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:512,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:513,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:514,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:515,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:516,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:518,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 519
    functionName: test_disallowed_in_pipeline
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - PQexitPipelineMode
    - PQisnonblocking
    - PQpipelineStatus
    - PQenterPipelineMode
    - pg_fatal
    - PQsendQuery
    - PQresultStatus
    - PQisBusy
    - PQerrorMessage
    - fprintf
    linkageType: ''
    returnType: void
    signature: void test_disallowed_in_pipeline(PGconn *conn)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:527,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:533,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:534,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:534,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:537,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:539,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:539,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:541,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:542,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:542,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:545,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:547,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:547,1
    - Dst: PQsendPipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:550,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:551,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:551,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:554,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:556,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:556,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:558,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:559,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:559,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:564,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:566,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:568,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:569,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:571,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:574,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:576,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:578,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:579,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:581,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:584,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:586,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:588,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:591,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:592,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:595,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:596,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:597,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:599,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:600,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:602,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 603
    functionName: test_multi_pipelines
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQsendPipelineSync
    - consume_result_status
    - PQsendQueryParams
    - PQpipelineSync
    - PQpipelineStatus
    - PQenterPipelineMode
    - pg_fatal
    - PQexitPipelineMode
    - PQerrorMessage
    - consume_null_result
    - fprintf
    linkageType: ''
    returnType: void
    signature: void test_multi_pipelines(PGconn *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQsocket
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:614,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:616,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:619,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:621,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:622,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:628,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:630,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:630,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:631,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:636,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:637,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:640,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:642,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:643,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:645,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:645,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:646,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:646,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:650,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:651,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:652,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:658,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:661,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:670,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 671
    functionName: test_nosync
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQconsumeInput
    - consume_result_status
    - PQsendQueryParams
    - exit_nicely
    - FD_ISSET
    - PQenterPipelineMode
    - pg_fatal
    - FD_SET
    - PQsocket
    - PQflush
    - PQsendFlushRequest
    - select
    - PQerrorMessage
    - FD_ZERO
    - consume_null_result
    - fprintf
    linkageType: ''
    returnType: void
    signature: void test_nosync(PGconn *conn)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:692,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:694,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:695,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:696,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:696,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:697,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:699,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:700,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:701,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:701,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:702,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:709,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:710,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:710,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:713,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:715,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:715,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:717,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:720,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:720,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:723,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:725,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:725,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:727,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:728,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:728,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:731,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:733,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:734,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:736,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:737,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:737,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:746,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:749,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:752,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:755,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:764,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:765,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:768,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:771,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:773,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:774,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:777,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:778,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:786,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:788,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:789,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:792,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:793,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:796,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:799,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:802,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:805,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:808,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:809,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:809,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:810,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:811,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:811,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:813,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:815,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:818,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:818,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:819,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:820,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:821,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:821,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:825,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:825,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:825,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:828,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:831,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:834,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:836,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:839,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:841,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:841,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:842,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:843,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:843,1
    - Dst: PQsetSingleRowMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:844,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:847,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:849,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:852,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:852,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:856,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:856,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:857,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:858,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:859,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:860,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:864,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:864,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:864,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:866,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:869,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:871,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:874,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:877,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:878,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:881,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:882,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:883,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:885,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:886,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:903,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:905,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:906,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:907,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:907,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:907,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:908,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:909,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:909,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:910,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:912,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:914,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:915,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:918,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:920,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 117
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 921
    functionName: test_pipeline_abort
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - consume_result_status
    - printf
    - PQsetSingleRowMode
    - PQgetvalue
    - PQgetResult
    - fprintf
    - PQresStatus
    - PQsendQueryParams
    - PQresultStatus
    - PQexitPipelineMode
    - PQntuples
    - consume_null_result
    - PQresultErrorField
    - PQpipelineStatus
    - PQenterPipelineMode
    - PQerrorMessage
    - PQexec
    - PQpipelineSync
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void test_pipeline_abort(PGconn *conn)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:956,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:957,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:957,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:981,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:985,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:986,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:988,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:988,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:991,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:992,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:993,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:994,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:994,1
    - Dst: PQsetnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1005,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1006,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1006,1
    - Dst: PQsocket
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1014,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1019,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1020,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1021,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1022,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1024,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1026,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1027,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1034,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1036,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1039,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1050,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1092,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1095,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1096,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1098,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1098,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1099,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1099,1
    - Dst: strncmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1101,1
    - Dst: PQcmdStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1101,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1101,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1102,1
    - Dst: PQcmdStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1103,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1105,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1107,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1112,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1114,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1118,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1120,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1122,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1125,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1137,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1138,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1143,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1146,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1151,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1152,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1157,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1159,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1164,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1165,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1172,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1173,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1174,1
    - Dst: PQsetnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1176,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1177,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1177,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1179,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 136
    argCount: 2
    argNames:
    - conn
    - n_rows
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 1180
    functionName: test_pipelined_insert
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQconsumeInput
    - pg_debug
    - PQsendPrepare
    - PQsendQueryPrepared
    - PQisBusy
    - PQgetResult
    - fprintf
    - PQresStatus
    - Assert
    - PQsendQueryParams
    - FD_ISSET
    - FD_SET
    - PQresultStatus
    - PQexitPipelineMode
    - PQenterPipelineMode
    - PQsocket
    - PQcmdStatus
    - PQflush
    - strlen
    - PQsetnonblocking
    - PQerrorMessage
    - exit_nicely
    - PQpipelineSync
    - pg_fatal
    - strncmp
    - select
    - FD_ZERO
    - snprintf
    linkageType: ''
    returnType: void
    signature: void test_pipelined_insert(PGconn *conn, int n_rows)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1190,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1192,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1193,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1193,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1194,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1197,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1197,1
    - Dst: PQsendDescribePrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1202,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1203,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1203,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1204,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1205,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1205,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1207,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1209,1
    - Dst: confirm_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1211,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1212,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1212,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1213,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1214,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1214,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1215,1
    - Dst: PQftype
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1217,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1219,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1222,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1224,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1226,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1228,1
    - Dst: PQsendClosePrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1229,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1230,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1230,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1231,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1232,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1232,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1234,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1236,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1238,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1240,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1241,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1241,1
    - Dst: PQdescribePrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1244,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1245,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1246,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1246,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1246,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1247,1
    - Dst: PQclosePrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1253,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1254,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1255,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1255,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1255,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1256,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1258,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1260,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1261,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1262,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1262,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1263,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1265,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1266,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1267,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1267,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1268,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1270,1
    - Dst: PQsendDescribePortal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1271,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1272,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1272,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1273,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1274,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1274,1
    - Dst: confirm_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1276,1
    - Dst: PQftype
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1277,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1279,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1281,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1283,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1285,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1287,1
    - Dst: PQsendClosePortal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1288,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1289,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1289,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1290,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1291,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1291,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1293,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1295,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1297,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1299,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1300,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1300,1
    - Dst: PQdescribePortal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1303,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1304,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1305,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1305,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1305,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1306,1
    - Dst: PQclosePortal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1312,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1313,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1314,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1314,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1314,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1315,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1317,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 85
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1182
    functionDepth: 1
    functionLinenumber: 1182
    functionLinenumberEnd: 1318
    functionName: test_prepared
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQclear
    - consume_result_status
    - PQdescribePrepared
    - PQsendPrepare
    - PQnfields
    - fprintf
    - PQresStatus
    - PQftype
    - PQresultStatus
    - PQexitPipelineMode
    - PQclosePrepared
    - PQdescribePortal
    - lengthof
    - consume_null_result
    - PQclosePortal
    - PQsendDescribePortal
    - PQenterPipelineMode
    - PQerrorMessage
    - PQexec
    - PQpipelineSync
    - PQsendClosePrepared
    - pg_fatal
    - confirm_result_status
    - PQsendClosePortal
    - PQsendDescribePrepared
    linkageType: ''
    returnType: void
    signature: void test_prepared(PGconn *conn)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfo
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1329,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1340,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1341,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1352,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1363,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1369,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1371,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1372,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1373,1
    - Dst: PQfullProtocolVersion
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1375,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1377,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1379,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1385,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1387,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1388,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1389,1
    - Dst: PQfullProtocolVersion
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1391,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1393,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1395,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1402,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1404,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1405,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1407,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1413,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1415,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1416,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1417,1
    - Dst: PQfullProtocolVersion
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1419,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1421,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1423,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1429,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1431,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1432,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1433,1
    - Dst: PQfullProtocolVersion
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1435,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1437,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1439,1
    - Dst: pg_free
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1441,1
    - Dst: pg_free
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1442,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1443,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1444
    functionName: test_protocol_version
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQconninfoFree
    - strcmp
    - Assert
    - PQfullProtocolVersion
    - pg_fatal
    - PQfinish
    - pg_malloc0_array
    - PQconnectdbParams
    - PQconninfo
    - pg_free
    - PQerrorMessage
    - PQstatus
    linkageType: ''
    returnType: void
    signature: void test_protocol_version(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - arg
    - message
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1447
    functionDepth: 0
    functionLinenumber: 1447
    functionLinenumberEnd: 1454
    functionName: notice_processor
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void notice_processor(void *arg, const char *message)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1462,1
    - Dst: PQsetNoticeProcessor
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1464,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1467,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1468,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1468,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1469,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1470,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1470,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1471,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1473,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1475,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1477,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1478,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1478,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1479,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1480,1
    - Dst: strncmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1481,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1481,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1482,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1483,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1484,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1485,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1487,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1489,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1491,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1492,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1492,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1495,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1496,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1499,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1500,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1500,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1501,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1502,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1502,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1503,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1505,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1507,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1508,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1508,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1509,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1457
    functionDepth: 1
    functionLinenumber: 1457
    functionLinenumberEnd: 1510
    functionName: test_pipeline_idle
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQsetNoticeProcessor
    - consume_result_status
    - PQsendQueryParams
    - PQenterPipelineMode
    - pg_fatal
    - strncmp
    - strlen
    - PQsendFlushRequest
    - PQexitPipelineMode
    - PQerrorMessage
    - consume_null_result
    - fprintf
    linkageType: ''
    returnType: void
    signature: void test_pipeline_idle(PGconn *conn)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1518,1
    - Dst: PQisnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1528,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1529,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1531,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1532,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1532,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1534,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1537,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1537,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1539,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1540,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1542,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1543,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1543,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1545,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1547,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1553,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1554,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1556,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1558,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1561,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1562,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1565,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1566,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1567,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1569,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1570,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1572,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1512
    functionDepth: 1
    functionLinenumber: 1512
    functionLinenumberEnd: 1573
    functionName: test_simple_pipeline
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - consume_result_status
    - PQsendQueryParams
    - PQisnonblocking
    - PQpipelineSync
    - PQenterPipelineMode
    - pg_fatal
    - PQpipelineStatus
    - PQexitPipelineMode
    - PQerrorMessage
    - consume_null_result
    - fprintf
    linkageType: ''
    returnType: void
    signature: void test_simple_pipeline(PGconn *conn)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1582,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1583,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1584,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1591,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1593,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1601,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1602,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1603,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1605,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1606,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1606,1
    - Dst: PQsetSingleRowMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1617,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1618,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1623,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1625,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1629,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1631,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1633,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1641,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1642,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1644,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1645,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1649,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1649,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1653,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1653,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1657,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1658,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1660,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1666,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1666,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1666,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1670,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1672,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1675,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1683,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1685,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1686,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1687,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1688,1
    - Dst: PQsetSingleRowMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1689,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1690,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1692,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1694,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1696,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1698,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1700,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1701,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1702,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1703,1
    - Dst: consume_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1705,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1707,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1713,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1715,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1716,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1717,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1718,1
    - Dst: PQsetChunkedRowsMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1719,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1720,1
    - Dst: confirm_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1722,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1723,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1724,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1724,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1725,1
    - Dst: confirm_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1727,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1728,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1729,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1729,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1730,1
    - Dst: confirm_result_status
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1732,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1733,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1734,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1734,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1735,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1737,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1739,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1740,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1740,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1742,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 93
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1575
    functionDepth: 1
    functionLinenumber: 1575
    functionLinenumberEnd: 1743
    functionName: test_singlerowmode
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQclear
    - consume_result_status
    - PQgetvalue
    - PQsetSingleRowMode
    - PQgetResult
    - fprintf
    - PQresStatus
    - pfree
    - PQsetChunkedRowsMode
    - PQsendQueryParams
    - PQresultStatus
    - PQexitPipelineMode
    - PQntuples
    - consume_null_result
    - psprintf
    - PQenterPipelineMode
    - PQerrorMessage
    - PQpipelineSync
    - pg_fatal
    - confirm_result_status
    - PQsendFlushRequest
    linkageType: ''
    returnType: void
    signature: void test_singlerowmode(PGconn *conn)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1756,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1758,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1759,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1760,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1761,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1763,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1764,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1765,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1766,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1767,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1768,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1770,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1773,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1774,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1775,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1778,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1779,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1785,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1786,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1787,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1790,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1793,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1794,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1795,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1796,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1796,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1803,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1806,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1807,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1808,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1809,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1809,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1816,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1817,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1818,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1824,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1827,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1828,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1830,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1831,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1831,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1833,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1834,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1834,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1842,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1845,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1847,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1851,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1852,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1852,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1854,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1856,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1856,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1859,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1862,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1863,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1873,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1875,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1876,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1876,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1879,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1880,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1881,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1881,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1882,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1883,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1884,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1884,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1885,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1886,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1888,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 74
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1749
    functionDepth: 1
    functionLinenumber: 1749
    functionLinenumberEnd: 1889
    functionName: test_transaction
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - PQsendPrepare
    - printf
    - PQgetvalue
    - PQsendQueryPrepared
    - PQgetResult
    - fprintf
    - PQresStatus
    - PQsendQueryParams
    - PQresultStatus
    - PQexitPipelineMode
    - PQntuples
    - consume_null_result
    - PQenterPipelineMode
    - PQerrorMessage
    - PQexec
    - PQpipelineSync
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void test_transaction(PGconn *conn)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: PQsocket
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1899,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1917,1
    - Dst: PQsetnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1919,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1923,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1925,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1927,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1928,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1928,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1929,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1931,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1932,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1933,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1933,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1934,1
    - Dst: PQprepare
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1936,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1939,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1940,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1940,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1941,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1943,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1944,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1955,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1966,1
    - Dst: process_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1967,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1969,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1982,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1983,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1985,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1986,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1988,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1992,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1995,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1995,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1996,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1996,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2002,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2014,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2015,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2020,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2021,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2024,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2025,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2025,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2031,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2032,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2034,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2035,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2040,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2042,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2042,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2047,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2056,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2058,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 88
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 1896
    functionDepth: 1
    functionLinenumber: 1896
    functionLinenumberEnd: 2059
    functionName: test_uniqviol
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQconsumeInput
    - PQsendQueryPrepared
    - PQisBusy
    - PQgetResult
    - fprintf
    - FD_ISSET
    - FD_SET
    - PQresultStatus
    - sprintf
    - PQenterPipelineMode
    - PQprepare
    - PQsocket
    - PQflush
    - PQerrorMessage
    - PQsetnonblocking
    - PQexec
    - pg_fatal
    - process_result
    - select
    - FD_ZERO
    - PQsendFlushRequest
    linkageType: ''
    returnType: void
    signature: void test_uniqviol(PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2073,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2075,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2079,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2079,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2080,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2081,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2085,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2085,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2086,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2087,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2091,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2092,1
    - Dst: consume_null_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2093,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2097,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2097,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2097,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - conn
    - res
    - results
    - numsent
    argTypes:
    - PGconn*
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2067
    functionDepth: 1
    functionLinenumber: 2067
    functionLinenumberEnd: 2101
    functionName: process_result
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 1
    functionsReached:
    - PQresStatus
    - PQclear
    - pg_fatal
    - PQgetvalue
    - PQresultStatus
    - PQerrorMessage
    - consume_null_result
    - fprintf
    linkageType: ''
    returnType: bool
    signature: bool process_result(PGconn *conn, PGresult *res, int results, int numsent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2107,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2108,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2109,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2110,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2111,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2112,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2104
    functionDepth: 0
    functionLinenumber: 2104
    functionLinenumberEnd: 2114
    functionName: usage
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 23
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void usage(const char *progname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2119,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2120,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2121,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2122,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2123,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2124,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2125,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2126,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2127,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2128,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2129,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2130,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2132
      start: 2116
    functionDepth: 0
    functionLinenumber: 2116
    functionLinenumberEnd: 2132
    functionName: print_test_list
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_test_list(void)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2145,1
    - Dst: strtol
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2151,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2154,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2156,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2160,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2167,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2172,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2173,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2176,1
    - Dst: print_test_list
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2178,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2179,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2184,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2189,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2190,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2192,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2193,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2194,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2197,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2198,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2199,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2199,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2200,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2201,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2202,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2203,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2203,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2204,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2209,1
    - Dst: fopen
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2212,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2214,1
    - Dst: setvbuf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2217,1
    - Dst: PQtrace
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2219,1
    - Dst: PQsetTraceFlags
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2220,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2224,1
    - Dst: test_cancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2225,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2226,1
    - Dst: test_disallowed_in_pipeline
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2227,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2228,1
    - Dst: test_multi_pipelines
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2229,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2230,1
    - Dst: test_nosync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2231,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2232,1
    - Dst: test_pipeline_abort
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2233,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2234,1
    - Dst: test_pipeline_idle
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2235,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2236,1
    - Dst: test_pipelined_insert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2237,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2238,1
    - Dst: test_prepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2239,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2240,1
    - Dst: test_protocol_version
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2241,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2242,1
    - Dst: test_simple_pipeline
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2243,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2244,1
    - Dst: test_singlerowmode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2245,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2246,1
    - Dst: test_transaction
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2247,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2248,1
    - Dst: test_uniqviol
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2249,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2252,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2253,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2257,1
    - Dst: fclose
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2260,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 87
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2263
      start: 2134
    functionDepth: 3
    functionLinenumber: 2134
    functionLinenumberEnd: 2263
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 4
    functionsReached:
    - PQconnectdb
    - PQclear
    - getopt
    - strcmp
    - PQtrace
    - fopen
    - test_singlerowmode
    - test_transaction
    - test_protocol_version
    - test_prepared
    - test_disallowed_in_pipeline
    - test_simple_pipeline
    - fprintf
    - PQsetTraceFlags
    - test_pipelined_insert
    - PQfinish
    - PQresultStatus
    - usage
    - print_test_list
    - test_nosync
    - PQstatus
    - test_pipeline_abort
    - strtol
    - fclose
    - test_cancel
    - PQerrorMessage
    - exit
    - exit_nicely
    - pg_strdup
    - PQexec
    - test_uniqviol
    - pg_fatal
    - test_multi_pipelines
    - test_pipeline_idle
    - setvbuf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load_external_function
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 54
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c
    functionUses: 0
    functionsReached:
    - load_external_function
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:77,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:91,1
    - Dst: set_config_option
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:92,1
    - Dst: set_config_option
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:95,1
    - Dst: planner
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:104,1
    - Dst: copyObject
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:104,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:107,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:111,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:115,1
    - Dst: find_defelem_by_defname
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:118,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:121,1
    - Dst: find_defelem_by_defname
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:122,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:125,1
    - Dst: strVal
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 5
    argNames:
    - glob
    - parse
    - query_string
    - cursorOptions
    - es
    argTypes:
    - PlannerGlobal*
    - Query*
    - char*
    - int
    - ExplainState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 128
    functionName: test_plan_advice_advisor
    functionSourceFile: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_TRY
    - copyObject
    - strVal
    - set_config_option
    - NewGUCNestLevel
    - PG_FINALLY
    - find_defelem_by_defname
    - AtEOXact_GUC
    - planner
    - PG_END_TRY
    linkageType: ''
    returnType: char
    signature: "char *\ntest_plan_advice_advisor(PlannerGlobal *glob, Query *parse,\n\t\t\t\t\t\t
      const char *query_string, int cursorOptions,\n\t\t\t\t\t\t ExplainState *es)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - deflist
    - defname
    argTypes:
    - List*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 143
    functionName: find_defelem_by_defname
    functionSourceFile: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: DefElem
    signature: 'DefElem *

      find_defelem_by_defname(List *deflist, char *defname)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/test/modules/test_plan_advice/test_plan_advice.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach_node(DefElem, item, deflist)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - rc
    argTypes:
    - pg_saslprep_rc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 48
    functionName: saslprep_status_to_text
    functionSourceFile: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      saslprep_status_to_text(pg_saslprep_rc rc)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:60,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:74,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:75,1
    - Dst: palloc0_array
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:77,1
    - Dst: palloc0_array
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:78,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:80,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:81,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:86,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:87,1
    - Dst: pg_saslprep
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:90,1
    - Dst: saslprep_status_to_text
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:91,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:95,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:96,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:97,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:98,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:98,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:99,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:104,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:106,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:106,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 107
    functionName: test_saslprep
    functionSourceFile: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - VARDATA_ANY
    - SET_VARSIZE
    - VARDATA
    - elog
    - memcpy
    - PG_RETURN_DATUM
    - VARSIZE_ANY_EXHDR
    - PointerGetDatum
    - get_call_result_type
    - strlen
    - saslprep_status_to_text
    - pg_saslprep
    - PG_GETARG_BYTEA_PP
    - palloc0_array
    - palloc0
    - HeapTupleGetDatum
    - CStringGetTextDatum
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum test_saslprep(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:158,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:163,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:164,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:166,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:167,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:171,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:176,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:179,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:199,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:214,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:220,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:223,1
    - Dst: pg_saslprep
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:227,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:230,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:234,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:236,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:237,1
    - Dst: saslprep_status_to_text
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:240,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:241,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:244,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:245,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:246,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:246,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:247,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:252,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:254,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:255,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:256,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:256,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:257,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:258,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:267,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:268,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:273,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c:277,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 278
    functionName: test_saslprep_ranges
    functionSourceFile: /src/postgres/src/test/modules/test_saslprep/test_saslprep.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - heap_form_tuple
    - SET_VARSIZE
    - VARDATA
    - SRF_RETURN_DONE
    - elog
    - unicode_to_utf8
    - SRF_RETURN_NEXT
    - memcpy
    - SRF_FIRSTCALL_INIT
    - pfree
    - PointerGetDatum
    - get_call_result_type
    - unicode_utf8len
    - SRF_PERCALL_SETUP
    - CHECK_FOR_INTERRUPTS
    - memset
    - strlen
    - saslprep_status_to_text
    - pg_saslprep
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - CStringGetTextDatum
    - palloc
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum test_saslprep_ranges(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:49,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:51,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:52,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 56
    functionName: testprs_start
    functionSourceFile: /src/postgres/src/test/modules/test_parser/test_parser.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum testprs_start(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:61,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:62,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:63,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:95,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 96
    functionName: testprs_getlexeme
    functionSourceFile: /src/postgres/src/test/modules/test_parser/test_parser.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum testprs_getlexeme(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:101,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:103,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: testprs_end
    functionSourceFile: /src/postgres/src/test/modules/test_parser/test_parser.c
    functionUses: 0
    functionsReached:
    - pfree
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum testprs_end(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:115,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:119,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:120,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:122,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:123,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/modules/test_parser/test_parser.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 127
    functionName: testprs_lextype
    functionSourceFile: /src/postgres/src/test/modules/test_parser/test_parser.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - PG_RETURN_POINTER
    - palloc_array
    linkageType: ''
    returnType: Datum
    signature: Datum testprs_lextype(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:75,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:83,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:91,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:99,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:107,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 117
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/validator.c
    functionUses: 0
    functionsReached:
    - DefineCustomBoolVariable
    - MarkGUCPrefixReserved
    - DefineCustomStringVariable
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: _PG_oauth_validator_module_init
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/validator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OAuthValidatorCallbacks
    signature: 'OAuthValidatorCallbacks *

      _PG_oauth_validator_module_init(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:141,1
    - Dst: RegisterOAuthHBAOptions
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:149,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:149,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:150,1
    - Dst: GetOAuthHBAOption
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:152,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:153,1
    - Dst: RegisterOAuthHBAOptions
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - ValidatorModuleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 167
    functionName: validator_startup
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/validator.c
    functionUses: 0
    functionsReached:
    - elog
    - RegisterOAuthHBAOptions
    - lengthof
    - GetOAuthHBAOption
    linkageType: ''
    returnType: void
    signature: void validator_startup(ValidatorModuleState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - ValidatorModuleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 179
    functionName: validator_shutdown
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/validator.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void validator_shutdown(ValidatorModuleState *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:192,1
    - Dst: GetOAuthHBAOption
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:195,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:196,1
    - Dst: GetOAuthHBAOption
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:196,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:198,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:199,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:209,1
    - Dst: GetOAuthHBAOption
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:210,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:211,1
    - Dst: GetOAuthHBAOption
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:211,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:213,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - state
    - token
    - role
    - res
    argTypes:
    - ValidatorModuleState*
    - char*
    - char*
    - ValidatorModuleResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 216
    functionName: validate_token
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/validator.c
    functionUses: 0
    functionsReached:
    - elog
    - pstrdup
    - GetOAuthHBAOption
    linkageType: ''
    returnType: bool
    signature: "bool validate_token(const ValidatorModuleState *state,\n\t\t\t   const
      char *token, const char *role,\n\t\t\t   ValidatorModuleResult *res)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:35,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:37,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:38,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:39,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:40,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:41,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:42,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:43,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:45,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:46,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:47,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:48,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 50
    functionName: usage
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c
    functionUses: 24
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(char *argv[])
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: getopt_long
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:86,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:91,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:95,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:97,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:101,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:143,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:150,1
    - Dst: PQsetAuthDataHook
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:157,1
    - Dst: PQconnectStart
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:170,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:174,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:180,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:183,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:185,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:186,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:187,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:191,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:192,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 69
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 194
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c
    functionUses: 4
    functionsReached:
    - PQconnectdb
    - strcmp
    - PQsetAuthDataHook
    - getopt_long
    - PQconnectStart
    - PQfinish
    - PQconnectPoll
    - printf
    - usage
    - PQerrorMessage
    - fprintf
    - PQstatus
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:206,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:225,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:234,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:238,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:240,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:249,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:253,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:255,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:264,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:270,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:274,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:276,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:285,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:290,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 3
    argNames:
    - type
    - conn
    - data
    argTypes:
    - PGauthData
    - PGconn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 300
    functionName: handle_auth_data
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c
    functionUses: 0
    functionsReached:
    - Assert
    - strcmp
    - fprintf
    linkageType: ''
    returnType: int
    signature: int handle_auth_data(PGauthData type, PGconn *conn, void *data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:320,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:320,1
    - Dst: perror
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:323,1
    - Dst: socket
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:327,1
    - Dst: perror
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:330,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - conn
    - req
    - altsock
    argTypes:
    - PGconn*
    - PGoauthBearerRequest*
    - pgsocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 342
    functionName: async_cb
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c
    functionUses: 0
    functionsReached:
    - WSAStartup
    - socket
    - perror
    - MAKEWORD
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType async_cb(PGconn *conn, PGoauthBearerRequest
      *req, pgsocket *altsock)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:347,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:356,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:357,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:366,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:371,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:378,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:379,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - conn
    - req
    - altsock
    argTypes:
    - PGconn*
    - PGoauthBearerRequest*
    - pgsocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 381
    functionName: misbehave_cb
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c
    functionUses: 0
    functionsReached:
    - exit
    - strcmp
    - fprintf
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType misbehave_cb(PGconn *conn, PGoauthBearerRequest
      *req, pgsocket *altsock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: _PG_oauth_validator_module_init
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/magic_validator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OAuthValidatorCallbacks
    signature: 'OAuthValidatorCallbacks *

      _PG_oauth_validator_module_init(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/magic_validator.c:46,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/test/modules/oauth_validator/magic_validator.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - state
    - token
    - role
    - res
    argTypes:
    - ValidatorModuleState*
    - char*
    - char*
    - ValidatorModuleResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: validate_token
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/magic_validator.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_unreachable
    linkageType: ''
    returnType: bool
    signature: "bool validate_token(const ValidatorModuleState *state,\n\t\t\t   const
      char *token, const char *role,\n\t\t\t   ValidatorModuleResult *res)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: _PG_oauth_validator_module_init
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/fail_validator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OAuthValidatorCallbacks
    signature: 'OAuthValidatorCallbacks *

      _PG_oauth_validator_module_init(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/fail_validator.c:45,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/test/modules/oauth_validator/fail_validator.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - state
    - token
    - role
    - res
    argTypes:
    - ValidatorModuleState*
    - char*
    - char*
    - ValidatorModuleResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: fail_token
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/fail_validator.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_unreachable
    linkageType: ''
    returnType: bool
    signature: "bool fail_token(const ValidatorModuleState *state,\n\t\t   const char
      *token, const char *role,\n\t\t   ValidatorModuleResult *res)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - RBTNode*
    - RBTNode*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 45
    functionName: irbt_cmp
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int irbt_cmp(const RBTNode *a, const RBTNode *b, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - existing
    - newdata
    - arg
    argTypes:
    - RBTNode*
    - RBTNode*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 60
    functionName: irbt_combine
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void irbt_combine(RBTNode *existing, const RBTNode *newdata, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: irbt_alloc
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      irbt_alloc(void *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - arg
    argTypes:
    - RBTNode*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: irbt_free
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void irbt_free(RBTNode *node, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbt_create
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 88
    functionName: create_int_rbtree
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - rbt_create
    linkageType: ''
    returnType: RBTree
    signature: 'RBTree *

      create_int_rbtree(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:99,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 120
    functionName: GetPermutation
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - pg_prng_uint64_range
    - palloc
    linkageType: ''
    returnType: int
    signature: 'int *

      GetPermutation(int size)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetPermutation
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:129,1
    - Dst: rbt_insert
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:138,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:140,1
    - Dst: rbt_insert
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:150,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:152,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - tree
    - size
    - step
    argTypes:
    - RBTree*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 156
    functionName: rbt_populate
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - elog
    - pfree
    - rbt_insert
    - GetPermutation
    linkageType: ''
    returnType: void
    signature: void rbt_populate(RBTree *tree, int size, int step)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: create_int_rbtree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:166,1
    - Dst: rbt_begin_iterate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:173,1
    - Dst: rbt_iterate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:174,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:175,1
    - Dst: rbt_populate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:178,1
    - Dst: rbt_begin_iterate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:181,1
    - Dst: rbt_iterate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:183,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:187,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:193,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:195,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 163
    functionDepth: 3
    functionLinenumber: 163
    functionLinenumberEnd: 196
    functionName: testleftright
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - elog
    - rbt_iterate
    - create_int_rbtree
    - rbt_populate
    - rbt_begin_iterate
    linkageType: ''
    returnType: void
    signature: void testleftright(int size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: create_int_rbtree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:206,1
    - Dst: rbt_begin_iterate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:213,1
    - Dst: rbt_iterate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:214,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:215,1
    - Dst: rbt_populate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:218,1
    - Dst: rbt_begin_iterate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:221,1
    - Dst: rbt_iterate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:223,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:227,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:233,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:235,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 203
    functionDepth: 3
    functionLinenumber: 203
    functionLinenumberEnd: 236
    functionName: testrightleft
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - elog
    - rbt_iterate
    - create_int_rbtree
    - rbt_populate
    - rbt_begin_iterate
    linkageType: ''
    returnType: void
    signature: void testrightleft(int size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: create_int_rbtree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:245,1
    - Dst: rbt_populate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:249,1
    - Dst: rbt_find
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:258,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:260,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:262,1
    - Dst: rbt_find
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:275,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:277,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 242
    functionDepth: 3
    functionLinenumber: 242
    functionLinenumberEnd: 279
    functionName: testfind
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - elog
    - rbt_populate
    - rbt_find
    - create_int_rbtree
    linkageType: ''
    returnType: void
    signature: void testfind(int size)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: create_int_rbtree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:289,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:295,1
    - Dst: rbt_populate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:303,1
    - Dst: rbt_find_less
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:309,1
    - Dst: rbt_find_great
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:310,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:313,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:316,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:319,1
    - Dst: rbt_find_less
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:329,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:334,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:337,1
    - Dst: rbt_delete
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:339,1
    - Dst: rbt_find_great
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:350,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:355,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:358,1
    - Dst: rbt_delete
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:360,1
    - Dst: rbt_find_less
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:365,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:367,1
    - Dst: rbt_find_less
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:369,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:371,1
    - Dst: rbt_find_great
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:373,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:375,1
    - Dst: rbt_find_great
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:377,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:379,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 44
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 380
    functionName: testfindltgt
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - elog
    - create_int_rbtree
    - rbt_populate
    - rbt_find_less
    - pg_prng_uint64_range
    - rbt_find_great
    - rbt_delete
    linkageType: ''
    returnType: void
    signature: void testfindltgt(int size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: create_int_rbtree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:389,1
    - Dst: rbt_leftmost
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:393,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:394,1
    - Dst: rbt_populate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:397,1
    - Dst: rbt_leftmost
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:400,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:402,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 386
    functionDepth: 3
    functionLinenumber: 386
    functionLinenumberEnd: 403
    functionName: testleftmost
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - elog
    - rbt_populate
    - rbt_leftmost
    - create_int_rbtree
    linkageType: ''
    returnType: void
    signature: void testleftmost(int size)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: create_int_rbtree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:411,1
    - Dst: rbt_populate
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:417,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:420,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:421,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:425,1
    - Dst: rbt_find
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:441,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:443,1
    - Dst: rbt_delete
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:445,1
    - Dst: rbt_find
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:455,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:460,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:466,1
    - Dst: rbt_find
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:480,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:482,1
    - Dst: rbt_delete
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:484,1
    - Dst: rbt_leftmost
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:488,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:489,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:491,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:492,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 2
    argNames:
    - size
    - delsize
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 408
    functionDepth: 3
    functionLinenumber: 408
    functionLinenumberEnd: 493
    functionName: testdelete
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - elog
    - create_int_rbtree
    - pfree
    - rbt_populate
    - palloc0
    - rbt_leftmost
    - pg_prng_uint64_range
    - rbt_find
    - palloc
    - rbt_delete
    linkageType: ''
    returnType: void
    signature: void testdelete(int size, int delsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:505,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:508,1
    - Dst: testleftright
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:509,1
    - Dst: testrightleft
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:510,1
    - Dst: testfind
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:511,1
    - Dst: testfindltgt
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:512,1
    - Dst: testleftmost
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:513,1
    - Dst: testdelete
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:514,1
    - Dst: Max
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:514,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 502
    functionDepth: 4
    functionLinenumber: 502
    functionLinenumberEnd: 516
    functionName: test_rb_tree
    functionSourceFile: /src/postgres/src/test/modules/test_rbtree/test_rbtree.c
    functionUses: 0
    functionsReached:
    - elog
    - testleftright
    - PG_RETURN_VOID
    - testfindltgt
    - testleftmost
    - testfind
    - testdelete
    - testrightleft
    - Max
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_rb_tree(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:59,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:60,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:67,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:68,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - left
    - right
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 76
    functionName: itemptr_cmp
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumber
    - ItemPointerGetOffsetNumber
    linkageType: ''
    returnType: int
    signature: int itemptr_cmp(const void *left, const void *right)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 89
    functionName: offsetnumber_cmp
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int offsetnumber_cmp(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:100,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:107,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:113,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:119,1
    - Dst: TidStoreCreateShared
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:121,1
    - Dst: dsa_pin_mapping
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:127,1
    - Dst: TidStoreGetDSA
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:127,1
    - Dst: TidStoreCreateLocal
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:131,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:133,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:137,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:138,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:139,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:141,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 144
    functionName: test_create
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - TidStoreCreateShared
    - PG_GETARG_BOOL
    - TidStoreGetDSA
    - Assert
    - TidStoreMemoryUsage
    - palloc0
    - MemoryContextSwitchTo
    - TidStoreCreateLocal
    - LWLockNewTrancheId
    - dsa_pin_mapping
    linkageType: ''
    returnType: Datum
    signature: Datum test_create(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:149,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:149,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:150,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:151,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:152,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:154,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:155,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:156,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ta
    argTypes:
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 158
    functionName: sanity_check_array
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - ARR_HASNULL
    - errmsg
    - array_contains_nulls
    - ARR_NDIM
    linkageType: ''
    returnType: void
    signature: void sanity_check_array(ArrayType *ta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 165
    functionName: check_tidstore_available
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void check_tidstore_available(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - blkno
    argTypes:
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: purge_from_verification_array
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: void purge_from_verification_array(BlockNumber blkno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:183,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:184,1
    - Dst: check_tidstore_available
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:188,1
    - Dst: sanity_check_array
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:189,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:191,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:191,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:191,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:192,1
    - Dst: qsort
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:195,1
    - Dst: TidStoreLockExclusive
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:198,1
    - Dst: TidStoreSetBlockOffsets
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:199,1
    - Dst: TidStoreUnlock
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:200,1
    - Dst: purge_from_verification_array
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:203,1
    - Dst: repalloc
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:215,1
    - Dst: repalloc
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:216,1
    - Dst: repalloc
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:217,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:221,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 228
    functionName: do_set_block_offsets
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - qsort
    - ItemPointerSet
    - check_tidstore_available
    - TidStoreSetBlockOffsets
    - purge_from_verification_array
    - repalloc
    - TidStoreLockExclusive
    - sanity_check_array
    - ARR_DATA_PTR
    - PG_GETARG_INT64
    - PG_GETARG_ARRAYTYPE_P_COPY
    - ARR_NDIM
    - PG_RETURN_INT64
    - TidStoreUnlock
    - ArrayGetNItems
    - ARR_DIMS
    linkageType: ''
    returnType: Datum
    signature: Datum do_set_block_offsets(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: check_tidstore_available
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:242,1
    - Dst: TidStoreIsMember
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:246,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:247,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:248,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:249,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:258,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:267,1
    - Dst: TidStoreLockShare
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:269,1
    - Dst: TidStoreIsMember
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:270,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:271,1
    - Dst: TidStoreUnlock
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:272,1
    - Dst: TidStoreLockShare
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:280,1
    - Dst: TidStoreBeginIterate
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:281,1
    - Dst: TidStoreIterateNext
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:282,1
    - Dst: TidStoreGetBlockOffsets
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:287,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:287,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:288,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:288,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:290,1
    - Dst: TidStoreEndIterate
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:293,1
    - Dst: TidStoreUnlock
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:294,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:302,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:304,1
    - Dst: qsort
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:306,1
    - Dst: qsort
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:307,1
    - Dst: itemptr_cmp
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:310,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:311,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:312,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:313,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:314,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:315,1
    - Dst: itemptr_cmp
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:316,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:317,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:318,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:319,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:320,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:321,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:324,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 325
    functionName: check_set_block_offsets
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - elog
    - ItemPointerSet
    - check_tidstore_available
    - qsort
    - PG_RETURN_VOID
    - TidStoreGetBlockOffsets
    - TidStoreEndIterate
    - Assert
    - TidStoreLockShare
    - TidStoreIterateNext
    - TidStoreBeginIterate
    - ItemPointerGetOffsetNumber
    - itemptr_cmp
    - TidStoreIsMember
    - TidStoreUnlock
    - ItemPointerGetBlockNumber
    - lengthof
    linkageType: ''
    returnType: Datum
    signature: Datum check_set_block_offsets(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_tidstore_available
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:337,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:339,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 342
    functionName: test_is_full
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - check_tidstore_available
    - TidStoreMemoryUsage
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum test_is_full(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_tidstore_available
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:348,1
    - Dst: TidStoreDestroy
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:350,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:353,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:354,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:355,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 358
    functionName: test_destroy
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - pfree
    - check_tidstore_available
    - PG_RETURN_VOID
    - TidStoreDestroy
    linkageType: ''
    returnType: Datum
    signature: Datum test_destroy(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c:38,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 53
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c
    functionUses: 0
    functionsReached:
    - MarkGUCPrefixReserved
    - DefineCustomStringVariable
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c:60,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c:61,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - context
    - isServerStart
    argTypes:
    - SSL_CTX*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: set_rot13
    functionSourceFile: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_default_passwd_cb
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void set_rot13(SSL_CTX *context, bool isServerStart)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c:70,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c:71,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c:82,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 10
    argCount: 4
    argNames:
    - buf
    - size
    - rwflag
    - userdata
    argTypes:
    - char*
    - int
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 83
    functionName: rot13_passphrase
    functionSourceFile: /src/postgres/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c
    functionUses: 0
    functionsReached:
    - Assert
    - strlcpy
    - strlen
    linkageType: ''
    returnType: int
    signature: int rot13_passphrase(char *buf, int size, int rwflag, void *userdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: EXPECT_TRUE
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPECT_TRUE(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: EXPECT_NOT_NULL
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPECT_NOT_NULL(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bms
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: BITMAPSET_TO_TEXT
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITMAPSET_TO_TEXT(bms)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: TEXT_TO_BITMAPSET
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEXT_TO_BITMAPSET(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: PG_ARG_GETBITMAPSET
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_ARG_GETBITMAPSET(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bms
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: PG_RETURN_BITMAPSET_AS_TEXT
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_BITMAPSET_AS_TEXT(bms)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:132,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:133,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:135,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:136,1
    - Dst: bms_add_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:138,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 141
    functionName: test_bms_add_member
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BITMAPSET_AS_TEXT
    - PG_ARGISNULL
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - bms_add_member
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_add_member(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:146,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:147,1
    - Dst: bms_add_members
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:150,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 153
    functionName: test_bms_add_members
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - bms_add_members
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BITMAPSET_AS_TEXT
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_add_members(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:161,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:162,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:164,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:165,1
    - Dst: bms_del_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:167,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 170
    functionName: test_bms_del_member
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - bms_del_member
    - PG_ARG_GETBITMAPSET
    - PG_ARGISNULL
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - PG_RETURN_BITMAPSET_AS_TEXT
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_del_member(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:179,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:180,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:182,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:183,1
    - Dst: bms_is_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:185,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 188
    functionName: test_bms_is_member
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_ARGISNULL
    - bms_is_member
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_is_member(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:193,1
    - Dst: bms_num_members
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:196,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: test_bms_num_members
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - bms_num_members
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_num_members(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:207,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:208,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 211
    functionName: test_bms_make_singleton
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BITMAPSET_AS_TEXT
    - bms_make_singleton
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_make_singleton(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:216,1
    - Dst: bms_copy
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:219,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 222
    functionName: test_bms_copy
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BITMAPSET_AS_TEXT
    - bms_copy
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_copy(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:227,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:228,1
    - Dst: bms_equal
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:231,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 234
    functionName: test_bms_equal
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - bms_equal
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_equal(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:239,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:240,1
    - Dst: bms_union
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:243,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 246
    functionName: test_bms_union
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BITMAPSET_AS_TEXT
    - bms_union
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_union(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:251,1
    - Dst: bms_membership
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:254,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 257
    functionName: test_bms_membership
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_INT32
    - bms_membership
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_membership(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:266,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:267,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:269,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:270,1
    - Dst: bms_next_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:272,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 275
    functionName: test_bms_next_member
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_INT32
    - PG_ARGISNULL
    - bms_next_member
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_next_member(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:280,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:281,1
    - Dst: bms_intersect
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:284,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 287
    functionName: test_bms_intersect
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - bms_intersect
    - PG_RETURN_BITMAPSET_AS_TEXT
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_intersect(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:292,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:293,1
    - Dst: bms_difference
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:296,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 299
    functionName: test_bms_difference
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BITMAPSET_AS_TEXT
    - bms_difference
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_difference(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:304,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:305,1
    - Dst: bms_offset_members
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:307,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 310
    functionName: test_bms_offset_members
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BITMAPSET_AS_TEXT
    - PG_ARG_GETBITMAPSET
    - PG_GETARG_INT32
    - bms_offset_members
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_offset_members(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:315,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:316,1
    - Dst: bms_compare
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:319,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 322
    functionName: test_bms_compare
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_ARG_GETBITMAPSET
    - bms_compare
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_compare(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:327,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:330,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 333
    functionName: test_bms_is_empty
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - bms_is_empty
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_is_empty(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:338,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:339,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:342,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 345
    functionName: test_bms_is_subset
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - bms_is_subset
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_is_subset(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:350,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:351,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:354,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 357
    functionName: test_bms_subset_compare
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - bms_subset_compare
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_subset_compare(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:362,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:365,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 368
    functionName: test_bms_singleton_member
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - bms_singleton_member
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_singleton_member(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:373,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:380,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 384
    functionName: test_bms_get_singleton_member
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_INT32
    - bms_get_singleton_member
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_get_singleton_member(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:393,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:394,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:396,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:397,1
    - Dst: bms_prev_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:399,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:401,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 402
    functionName: test_bms_prev_member
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_INT32
    - PG_ARGISNULL
    - bms_prev_member
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_prev_member(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:407,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:408,1
    - Dst: bms_overlap
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:411,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 414
    functionName: test_bms_overlap
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BOOL
    - bms_overlap
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_overlap(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:428,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:430,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:432,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:434,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:442,1
    - Dst: lappend_int
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:444,1
    - Dst: bms_overlap_list
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:449,1
    - Dst: list_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:451,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:454,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:457,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:459,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 460
    functionName: test_bms_overlap_list
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - lappend_int
    - list_free
    - pfree
    - DatumGetInt32
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_BOOL
    - bms_overlap_list
    - PG_ARGISNULL
    - deconstruct_array
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_overlap_list(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:465,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:466,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:469,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 472
    functionName: test_bms_nonempty_difference
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - bms_nonempty_difference
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_nonempty_difference(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:481,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:482,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:484,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:485,1
    - Dst: bms_member_index
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:487,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 490
    functionName: test_bms_member_index
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - bms_member_index
    - PG_RETURN_INT32
    - PG_ARGISNULL
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_member_index(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:499,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:499,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:500,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:502,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:503,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:504,1
    - Dst: bms_add_range
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:506,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:508,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 509
    functionName: test_bms_add_range
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - bms_add_range
    - PG_ARGISNULL
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - PG_RETURN_BITMAPSET_AS_TEXT
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_add_range(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:514,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:515,1
    - Dst: bms_int_members
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:518,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 521
    functionName: test_bms_int_members
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BITMAPSET_AS_TEXT
    - bms_int_members
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_int_members(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:526,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:527,1
    - Dst: bms_del_members
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:530,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 533
    functionName: test_bms_del_members
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - bms_del_members
    - PG_RETURN_BITMAPSET_AS_TEXT
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_del_members(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:538,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:539,1
    - Dst: bms_replace_members
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:542,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 545
    functionName: test_bms_replace_members
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_BITMAPSET_AS_TEXT
    - bms_replace_members
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_replace_members(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:550,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:551,1
    - Dst: bms_join
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:555,1
    - Dst: PG_RETURN_BITMAPSET_AS_TEXT
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 558
    functionName: test_bms_join
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - bms_join
    - PG_RETURN_BITMAPSET_AS_TEXT
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_join(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:563,1
    - Dst: bms_hash_value
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:566,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 569
    functionName: test_bms_hash_value
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_ARG_GETBITMAPSET
    - bms_hash_value
    linkageType: ''
    returnType: Datum
    signature: Datum test_bms_hash_value(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:574,1
    - Dst: bitmap_hash
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:578,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 581
    functionName: test_bitmap_hash
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_INT32
    - bitmap_hash
    linkageType: ''
    returnType: Datum
    signature: Datum test_bitmap_hash(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:586,1
    - Dst: PG_ARG_GETBITMAPSET
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:587,1
    - Dst: bitmap_match
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:591,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 594
    functionName: test_bitmap_match
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - bitmap_match
    - PG_ARG_GETBITMAPSET
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum test_bitmap_match(PG_FUNCTION_ARGS)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:616,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:625,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:626,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:628,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:629,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:630,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:632,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:633,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:634,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:635,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:636,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:637,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:639,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:646,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:651,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:653,1
    - Dst: bms_is_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:655,1
    - Dst: bms_add_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:657,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:663,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:665,1
    - Dst: bms_is_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:667,1
    - Dst: bms_add_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:669,1
    - Dst: bms_union
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:673,1
    - Dst: EXPECT_NOT_NULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:674,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:679,1
    - Dst: bms_is_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:681,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:682,1
    - Dst: bms_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:685,1
    - Dst: bms_intersect
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:691,1
    - Dst: bms_next_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:696,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:698,1
    - Dst: bms_is_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:700,1
    - Dst: bms_is_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:700,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:701,1
    - Dst: bms_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:704,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:711,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:712,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:714,1
    - Dst: bms_add_range
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:716,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:720,1
    - Dst: bms_num_members
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:720,1
    - Dst: bms_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:721,1
    - Dst: bms_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:724,1
    - Dst: bms_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:725,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:735,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:737,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:740,1
    - Dst: bms_is_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:741,1
    - Dst: bms_add_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:743,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:748,1
    - Dst: bms_is_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:751,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:752,1
    - Dst: bms_del_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:755,1
    - Dst: bms_is_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:768,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:769,1
    - Dst: bms_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:777,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:778,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:780,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 88
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 781
    functionName: test_random_operations
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - bms_del_member
    - EXPECT_TRUE
    - bms_free
    - palloc_array
    - bms_intersect
    - EXPECT_NOT_NULL
    - bms_add_member
    - bms_union
    - elog
    - pfree
    - bms_is_member
    - PG_GETARG_INT64
    - bms_next_member
    - GetCurrentTimestamp
    - PG_RETURN_INT32
    - bms_num_members
    - CHECK_FOR_INTERRUPTS
    - pg_prng_seed
    - PG_GETARG_INT32
    - bms_add_range
    - pg_prng_uint32
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum test_random_operations(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:806,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:807,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:809,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:811,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:812,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:813,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:815,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:816,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:817,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:818,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:819,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:820,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:822,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:832,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:835,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:835,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:836,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:840,1
    - Dst: bms_add_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:841,1
    - Dst: bms_next_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:847,1
    - Dst: bms_add_member
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:850,1
    - Dst: bms_offset_members
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:854,1
    - Dst: bms_equal
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:857,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:858,1
    - Dst: bms_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:861,1
    - Dst: bms_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:862,1
    - Dst: bms_free
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:863,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c:866,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 796
    functionDepth: 1
    functionLinenumber: 796
    functionLinenumberEnd: 867
    functionName: test_random_offset_operations
    functionSourceFile: /src/postgres/src/test/modules/test_bitmapset/test_bitmapset.c
    functionUses: 0
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - bms_offset_members
    - PG_RETURN_INT32
    - pg_prng_seed
    - PG_ARGISNULL
    - bms_equal
    - pg_prng_uint32
    - bms_free
    - CHECK_FOR_INTERRUPTS
    - PG_GETARG_INT64
    - bms_next_member
    - PG_GETARG_INT32
    - bms_add_member
    linkageType: ''
    returnType: Datum
    signature: Datum test_random_offset_operations(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - vectortype
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: LEN_NO_TAIL
    functionSourceFile: /src/postgres/src/test/modules/test_lfind/test_lfind.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEN_NO_TAIL(vectortype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - vectortype
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: LEN_WITH_TAIL
    functionSourceFile: /src/postgres/src/test/modules/test_lfind/test_lfind.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEN_WITH_TAIL(vectortype)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LEN_WITH_TAIL
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:32,1
    - Dst: LEN_NO_TAIL
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:33,1
    - Dst: LEN_WITH_TAIL
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:34,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:36,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:39,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:40,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:41,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:42,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:43,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:44,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:46,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:49,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:50,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:51,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:52,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:53,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:54,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 17
    argCount: 1
    argNames:
    - key
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 55
    functionName: test_lfind8_internal
    functionSourceFile: /src/postgres/src/test/modules/test_lfind/test_lfind.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_lfind8
    - LEN_NO_TAIL
    - memset
    - LEN_WITH_TAIL
    linkageType: ''
    returnType: void
    signature: void test_lfind8_internal(uint8 key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_lfind8_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:61,1
    - Dst: test_lfind8_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:62,1
    - Dst: test_lfind8_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:63,1
    - Dst: test_lfind8_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:64,1
    - Dst: test_lfind8_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:65,1
    - Dst: test_lfind8_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:66,1
    - Dst: test_lfind8_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:67,1
    - Dst: test_lfind8_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:68,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 71
    functionName: test_lfind8
    functionSourceFile: /src/postgres/src/test/modules/test_lfind/test_lfind.c
    functionUses: 0
    functionsReached:
    - test_lfind8_internal
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum test_lfind8(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LEN_WITH_TAIL
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:77,1
    - Dst: LEN_NO_TAIL
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:78,1
    - Dst: LEN_WITH_TAIL
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:79,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:81,1
    - Dst: pg_lfind8_le
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:84,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:85,1
    - Dst: pg_lfind8_le
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:86,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:87,1
    - Dst: pg_lfind8_le
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:88,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:89,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:91,1
    - Dst: pg_lfind8_le
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:94,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:95,1
    - Dst: pg_lfind8_le
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:96,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:97,1
    - Dst: pg_lfind8_le
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:98,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:99,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 17
    argCount: 1
    argNames:
    - key
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 100
    functionName: test_lfind8_le_internal
    functionSourceFile: /src/postgres/src/test/modules/test_lfind/test_lfind.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_lfind8_le
    - LEN_NO_TAIL
    - memset
    - LEN_WITH_TAIL
    linkageType: ''
    returnType: void
    signature: void test_lfind8_le_internal(uint8 key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_lfind8_le_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:106,1
    - Dst: test_lfind8_le_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:107,1
    - Dst: test_lfind8_le_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:108,1
    - Dst: test_lfind8_le_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:109,1
    - Dst: test_lfind8_le_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:110,1
    - Dst: test_lfind8_le_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:111,1
    - Dst: test_lfind8_le_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:112,1
    - Dst: test_lfind8_le_internal
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:113,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 116
    functionName: test_lfind8_le
    functionSourceFile: /src/postgres/src/test/modules/test_lfind/test_lfind.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - test_lfind8_le_internal
    linkageType: ''
    returnType: Datum
    signature: Datum test_lfind8_le(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_lfind32
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:129,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:130,1
    - Dst: pg_lfind32
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:131,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:132,1
    - Dst: pg_lfind32
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:134,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:135,1
    - Dst: pg_lfind32
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:136,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:137,1
    - Dst: pg_lfind32
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:139,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:140,1
    - Dst: pg_lfind32
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:141,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:142,1
    - Dst: pg_lfind32
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:144,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:145,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_lfind/test_lfind.c:147,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 148
    functionName: test_lfind32
    functionSourceFile: /src/postgres/src/test/modules/test_lfind/test_lfind.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_lfind32
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum test_lfind32(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:52,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:54,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - arg
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 56
    functionName: init_tdr_dsm
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - elog
    - LWLockInitialize
    - LWLockNewTrancheId
    linkageType: ''
    returnType: void
    signature: void init_tdr_dsm(void *ptr, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetNamedDSMSegment
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:63,1
    - Dst: GetNamedDSA
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:69,1
    - Dst: GetNamedDSHash
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 73
    functionName: tdr_attach_shmem
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - GetNamedDSMSegment
    - GetNamedDSHash
    - GetNamedDSA
    linkageType: ''
    returnType: void
    signature: void tdr_attach_shmem(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tdr_attach_shmem
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:79,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:81,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:82,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:83,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 86
    functionName: set_val_in_shmem
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - LWLockAcquire
    - tdr_attach_shmem
    - LWLockRelease
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum set_val_in_shmem(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tdr_attach_shmem
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:94,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:96,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:98,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 101
    functionName: get_val_in_shmem
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - LWLockRelease
    - LWLockAcquire
    - tdr_attach_shmem
    linkageType: ''
    returnType: Datum
    signature: Datum get_val_in_shmem(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:108,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:108,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:109,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:109,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:112,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:113,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:114,1
    - Dst: tdr_attach_shmem
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:116,1
    - Dst: dshash_find_or_insert
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:118,1
    - Dst: dsa_free
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:120,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:122,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:122,1
    - Dst: strcpy
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:123,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:123,1
    - Dst: dshash_release_lock
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:125,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 128
    functionName: set_val_in_hash
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_RETURN_VOID
    - dsa_free
    - ereport
    - dshash_find_or_insert
    - tdr_attach_shmem
    - dshash_release_lock
    - dsa_get_address
    - strlen
    - errmsg
    - dsa_allocate
    - TextDatumGetCString
    - strcpy
    linkageType: ''
    returnType: Datum
    signature: Datum set_val_in_hash(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:135,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:135,1
    - Dst: tdr_attach_shmem
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:138,1
    - Dst: dshash_find
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:140,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:142,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:144,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:144,1
    - Dst: dshash_release_lock
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:146,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 149
    functionName: get_val_in_hash
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - tdr_attach_shmem
    - dshash_release_lock
    - dsa_get_address
    - dshash_find
    - PG_RETURN_NULL
    - TextDatumGetCString
    linkageType: ''
    returnType: Datum
    signature: Datum get_val_in_hash(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/test/modules/plsample/plsample.c:49,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/test/modules/plsample/plsample.c:55,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:62,1
    - Dst: plsample_trigger_handler
      Src: /src/postgres/src/test/modules/plsample/plsample.c:62,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/test/modules/plsample/plsample.c:64,1
    - Dst: plsample_func_handler
      Src: /src/postgres/src/test/modules/plsample/plsample.c:77,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/test/modules/plsample/plsample.c:80,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/test/modules/plsample/plsample.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 86
    functionName: plsample_call_handler
    functionSourceFile: /src/postgres/src/test/modules/plsample/plsample.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - plsample_trigger_handler
    - plsample_func_handler
    - PG_FINALLY
    - PointerGetDatum
    - CALLED_AS_EVENT_TRIGGER
    - CALLED_AS_TRIGGER
    - PG_END_TRY
    linkageType: ''
    returnType: Datum
    signature: Datum plsample_call_handler(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/test/modules/plsample/plsample.c:116,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:117,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/test/modules/plsample/plsample.c:118,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:119,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:126,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/plsample/plsample.c:127,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/plsample/plsample.c:127,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/test/modules/plsample/plsample.c:128,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:130,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/plsample/plsample.c:132,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:133,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:134,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/test/modules/plsample/plsample.c:141,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/plsample/plsample.c:145,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/test/modules/plsample/plsample.c:146,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/test/modules/plsample/plsample.c:157,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:157,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/test/modules/plsample/plsample.c:158,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:159,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:161,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/test/modules/plsample/plsample.c:162,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/test/modules/plsample/plsample.c:163,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/test/modules/plsample/plsample.c:165,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:166,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:167,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/test/modules/plsample/plsample.c:173,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/plsample/plsample.c:184,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/test/modules/plsample/plsample.c:186,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:187,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/test/modules/plsample/plsample.c:188,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:189,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:190,1
    - Dst: getTypeIOParam
      Src: /src/postgres/src/test/modules/plsample/plsample.c:191,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/test/modules/plsample/plsample.c:193,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/test/modules/plsample/plsample.c:194,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/test/modules/plsample/plsample.c:196,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/modules/plsample/plsample.c:197,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 198
    functionName: plsample_func_handler
    functionSourceFile: /src/postgres/src/test/modules/plsample/plsample.c
    functionUses: 1
    functionsReached:
    - getTypeIOParam
    - pstrdup
    - NameStr
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - PG_RETURN_DATUM
    - ReleaseSysCache
    - errmsg
    - TextDatumGetCString
    - ObjectIdGetDatum
    - get_func_arg_info
    - ereport
    - OutputFunctionCall
    - GETSTRUCT
    - AllocSetContextCreate
    - fmgr_info_cxt
    - InputFunctionCall
    - palloc0
    - PG_RETURN_NULL
    - SysCacheGetAttr
    linkageType: ''
    returnType: Datum
    signature: Datum plsample_func_handler(PG_FUNCTION_ARGS)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/test/modules/plsample/plsample.c:220,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:221,1
    - Dst: SPI_connect
      Src: /src/postgres/src/test/modules/plsample/plsample.c:224,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/test/modules/plsample/plsample.c:226,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/plsample/plsample.c:227,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/test/modules/plsample/plsample.c:230,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:231,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/test/modules/plsample/plsample.c:232,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:233,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:242,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/plsample/plsample.c:243,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/plsample/plsample.c:243,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/test/modules/plsample/plsample.c:244,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:246,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/plsample/plsample.c:248,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:249,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:250,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/test/modules/plsample/plsample.c:257,1
    - Dst: PG_TRY
      Src: /src/postgres/src/test/modules/plsample/plsample.c:283,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:285,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:286,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/test/modules/plsample/plsample.c:287,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:288,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:288,1
    - Dst: SPI_getnspname
      Src: /src/postgres/src/test/modules/plsample/plsample.c:290,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:291,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:295,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:297,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:297,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/test/modules/plsample/plsample.c:300,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:302,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:302,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/test/modules/plsample/plsample.c:305,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:307,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:307,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/test/modules/plsample/plsample.c:310,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:312,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:312,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:316,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/test/modules/plsample/plsample.c:318,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:319,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:319,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/test/modules/plsample/plsample.c:320,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:321,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:321,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/test/modules/plsample/plsample.c:322,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:323,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:323,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:325,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/test/modules/plsample/plsample.c:327,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:328,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:328,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:329,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:330,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:330,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:332,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:339,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:340,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/test/modules/plsample/plsample.c:343,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/test/modules/plsample/plsample.c:346,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/test/modules/plsample/plsample.c:348,1
    - Dst: SPI_finish
      Src: /src/postgres/src/test/modules/plsample/plsample.c:350,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:351,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 354
    functionName: plsample_trigger_handler
    functionSourceFile: /src/postgres/src/test/modules/plsample/plsample.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - TRIGGER_FIRED_BY_INSERT
    - TRIGGER_FIRED_BEFORE
    - TRIGGER_FIRED_AFTER
    - pstrdup
    - NameStr
    - elog
    - SearchSysCache1
    - Assert
    - HeapTupleIsValid
    - SPI_register_trigger_data
    - TRIGGER_FIRED_BY_DELETE
    - PG_RE_THROW
    - ReleaseSysCache
    - errmsg
    - SPI_getrelname
    - TextDatumGetCString
    - ObjectIdGetDatum
    - PG_END_TRY
    - ereport
    - TRIGGER_FIRED_BY_TRUNCATE
    - GETSTRUCT
    - TRIGGER_FIRED_FOR_STATEMENT
    - PG_CATCH
    - SPI_finish
    - TRIGGER_FIRED_INSTEAD
    - TRIGGER_FIRED_BY_UPDATE
    - TRIGGER_FIRED_FOR_ROW
    - SPI_getnspname
    - CALLED_AS_TRIGGER
    - SPI_connect
    - SysCacheGetAttr
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple plsample_trigger_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:27,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 30
    functionName: to_cb
    functionSourceFile: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void to_cb(void *data, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:36,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:36,1
    - Dst: BeginCopyTo
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:40,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:40,1
    - Dst: DoCopyTo
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:42,1
    - Dst: EndCopyTo
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:43,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:45,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:45,1
    - Dst: table_close
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:48,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 51
    functionName: test_copy_to_callback
    functionSourceFile: /src/postgres/src/test/modules/test_copy_callbacks/test_copy_callbacks.c
    functionUses: 0
    functionsReached:
    - BeginCopyTo
    - PG_RETURN_VOID
    - DoCopyTo
    - ereport
    - table_open
    - PG_GETARG_OID
    - EndCopyTo
    - errmsg
    - table_close
    - RelationGetRelid
    linkageType: ''
    returnType: Datum
    signature: Datum test_copy_to_callback(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:47,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:48,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:49,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:50,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:51,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:52,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:62,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:63,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:64,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:72,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:73,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:74,1
    - Dst: test_shm_mq_setup
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:77,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:80,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:82,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:83,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:84,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:93,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:95,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:96,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:97,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:104,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:106,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:107,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:108,1
    - Dst: verify_message
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:115,1
    - Dst: dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:118,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:120,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 121
    functionName: test_shm_mq
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/test.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - errcode
    - shm_mq_receive
    - shm_mq_send
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - test_shm_mq_setup
    - PG_GETARG_INT64
    - errmsg
    - verify_message
    - dsm_detach
    - PG_GETARG_INT32
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_shm_mq(PG_FUNCTION_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:136,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:137,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:138,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:139,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:140,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:141,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:142,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:154,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:155,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:156,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:163,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:164,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:165,1
    - Dst: test_shm_mq_setup
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:168,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:184,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:192,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:193,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:194,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:203,1
    - Dst: verify_message
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:209,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:213,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:214,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:215,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:224,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:225,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:226,1
    - Dst: WaitEventExtensionNew
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:235,1
    - Dst: WaitLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:243,1
    - Dst: ResetLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:245,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:246,1
    - Dst: dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:251,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:253,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 254
    functionName: test_shm_mq_pipelined
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/test.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - errcode
    - VARDATA_ANY
    - dsm_detach
    - shm_mq_send
    - ResetLatch
    - VARSIZE_ANY_EXHDR
    - test_shm_mq_setup
    - PG_GETARG_INT64
    - errmsg
    - WaitEventExtensionNew
    - ereport
    - CHECK_FOR_INTERRUPTS
    - PG_GETARG_INT32
    - PG_GETARG_BOOL
    - shm_mq_receive
    - WaitLatch
    - verify_message
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_shm_mq_pipelined(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:265,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:266,1
    - Dst: errdetail
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:267,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:272,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:273,1
    - Dst: errdetail
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:274,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - origlen
    - origdata
    - newlen
    - newdata
    argTypes:
    - Size
    - char*
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 275
    functionName: verify_message
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/test.c
    functionUses: 2
    functionsReached:
    - ereport
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: void verify_message(Size origlen, char *origdata, Size newlen, char
      *newdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_dynamic_shared_memory
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:62,1
    - Dst: setup_background_workers
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:66,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:69,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:70,1
    - Dst: wait_for_workers_to_become_ready
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:73,1
    - Dst: cancel_on_dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:80,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:81,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - queue_size
    - nworkers
    - segp
    - output
    - input
    argTypes:
    - int64
    - int32
    - dsm_segment**
    - shm_mq_handle**
    - shm_mq_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 83
    functionName: test_shm_mq_setup
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 2
    functionsReached:
    - wait_for_workers_to_become_ready
    - setup_background_workers
    - pfree
    - setup_dynamic_shared_memory
    - PointerGetDatum
    - cancel_on_dsm_detach
    - shm_mq_attach
    linkageType: ''
    returnType: void
    signature: "void test_shm_mq_setup(int64 queue_size, int32 nworkers, dsm_segment
      **segp,\n\t\t\t\t  shm_mq_handle **output, shm_mq_handle **input)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:106,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:107,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:108,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:111,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:112,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:113,1
    - Dst: shm_toc_initialize_estimator
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:124,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:125,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:127,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:128,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:129,1
    - Dst: dsm_create
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:132,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:132,1
    - Dst: shm_toc_create
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:133,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:133,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:137,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:138,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:142,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:149,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:149,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:151,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:156,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:162,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 6
    argNames:
    - queue_size
    - nworkers
    - segp
    - hdrp
    - outp
    - inp
    argTypes:
    - int64
    - int
    - dsm_segment**
    - test_shm_mq_header**
    - shm_mq**
    - shm_mq**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 170
    functionName: setup_dynamic_shared_memory
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 1
    functionsReached:
    - shm_toc_create
    - errcode
    - shm_toc_estimate_keys
    - ereport
    - SpinLockInit
    - dsm_segment_address
    - shm_toc_insert
    - shm_mq_set_sender
    - shm_toc_initialize_estimator
    - shm_toc_estimate_chunk
    - dsm_create
    - shm_mq_set_receiver
    - errmsg
    - shm_toc_estimate
    - shm_mq_create
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: "void setup_dynamic_shared_memory(int64 queue_size, int nworkers,\n\t\t\t\t\t\t\tdsm_segment
      **segp, test_shm_mq_header **hdrp,\n\t\t\t\t\t\t\tshm_mq **outp, shm_mq **inp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:189,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:192,1
    - Dst: on_dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:215,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:216,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:219,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:223,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:224,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:225,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:226,1
    - Dst: dsm_segment_handle
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:226,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:233,1
    - Dst: RegisterDynamicBackgroundWorker
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:234,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:235,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:236,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:237,1
    - Dst: errhint
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:238,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - nworkers
    - seg
    argTypes:
    - int
    - dsm_segment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 245
    functionName: setup_background_workers
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 1
    functionsReached:
    - MemoryContextAlloc
    - errcode
    - UInt32GetDatum
    - dsm_segment_handle
    - ereport
    - MemoryContextSwitchTo
    - RegisterDynamicBackgroundWorker
    - on_dsm_detach
    - errhint
    - memset
    - PointerGetDatum
    - errmsg
    - sprintf
    - snprintf
    linkageType: ''
    returnType: worker_state
    signature: 'worker_state *

      setup_background_workers(int nworkers, dsm_segment *seg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:250,1
    - Dst: TerminateBackgroundWorker
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - seg
    - arg
    argTypes:
    - dsm_segment*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 257
    functionName: cleanup_background_workers
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 0
    functionsReached:
    - TerminateBackgroundWorker
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void cleanup_background_workers(dsm_segment *seg, Datum arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:270,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:272,1
    - Dst: check_worker_status
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:280,1
    - Dst: WaitEventExtensionNew
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:288,1
    - Dst: WaitLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:291,1
    - Dst: ResetLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:295,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:298,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:302,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:303,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:304,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - wstate
    - hdr
    argTypes:
    - worker_state*
    - test_shm_mq_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 305
    functionName: wait_for_workers_to_become_ready
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 1
    functionsReached:
    - errcode
    - ResetLatch
    - ereport
    - CHECK_FOR_INTERRUPTS
    - WaitLatch
    - SpinLockRelease
    - check_worker_status
    - errmsg
    - SpinLockAcquire
    - WaitEventExtensionNew
    linkageType: ''
    returnType: void
    signature: "void wait_for_workers_to_become_ready(worker_state *wstate,\n\t\t\t\t\t\t\t\t
      test_shm_mq_header *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetBackgroundWorkerPid
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:318,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - wstate
    argTypes:
    - worker_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 325
    functionName: check_worker_status
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 1
    functionsReached:
    - GetBackgroundWorkerPid
    linkageType: ''
    returnType: bool
    signature: bool check_worker_status(worker_state *wstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:60,1
    - Dst: dsm_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:76,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:76,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:78,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:79,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:80,1
    - Dst: shm_toc_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:81,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:81,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:83,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:84,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:85,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:95,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:96,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:98,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:100,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:101,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:102,1
    - Dst: attach_to_queues
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:107,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:118,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:120,1
    - Dst: BackendPidGetProc
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:121,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:124,1
    - Dst: proc_exit
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:125,1
    - Dst: SetLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:127,1
    - Dst: copy_messages
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:130,1
    - Dst: dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:136,1
    - Dst: proc_exit
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 138
    functionName: test_shm_mq_main
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/worker.c
    functionUses: 0
    functionsReached:
    - shm_toc_attach
    - attach_to_queues
    - BackendPidGetProc
    - elog
    - shm_toc_lookup
    - errcode
    - ereport
    - dsm_segment_address
    - SetLatch
    - errmsg
    - SpinLockRelease
    - BackgroundWorkerUnblockSignals
    - dsm_detach
    - copy_messages
    - SpinLockAcquire
    - proc_exit
    - dsm_attach
    - DatumGetUInt32
    linkageType: ''
    returnType: void
    signature: void test_shm_mq_main(Datum main_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:156,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:157,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:158,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:159,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:160,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - seg
    - toc
    - myworkernumber
    - inqhp
    - outqhp
    argTypes:
    - dsm_segment*
    - shm_toc*
    - int
    - shm_mq_handle**
    - shm_mq_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 162
    functionName: attach_to_queues
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/worker.c
    functionUses: 1
    functionsReached:
    - shm_mq_set_sender
    - shm_mq_attach
    - shm_mq_set_receiver
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void attach_to_queues(dsm_segment *seg, shm_toc *toc, int myworkernumber,\n\t\t\t\t
      shm_mq_handle **inqhp, shm_mq_handle **outqhp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:181,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:184,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - inqh
    - outqh
    argTypes:
    - shm_mq_handle*
    - shm_mq_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 193
    functionName: copy_messages
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/worker.c
    functionUses: 1
    functionsReached:
    - shm_mq_receive
    - shm_mq_send
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void copy_messages(shm_mq_handle *inqh, shm_mq_handle *outqh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: EXPECT_TRUE
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPECT_TRUE(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: EXPECT_FALSE
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPECT_FALSE(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - result_expr
    - ','
    - expected_expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 50
    functionName: EXPECT_EQ_U64
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPECT_EQ_U64(result_expr, expected_expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - rt_radix_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: rt_num_entries
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 rt_num_entries(rt_radix_tree *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:127,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:130,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:131,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:135,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:138,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:142,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:142,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:143,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:143,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:144,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:144,1
    - Dst: EXPECT_FALSE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:145,1
    - Dst: rt_delete
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:145,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:146,1
    - Dst: rt_num_entries
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:146,1
    - Dst: rt_begin_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:149,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:150,1
    - Dst: rt_iterate_next
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:150,1
    - Dst: rt_end_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:151,1
    - Dst: rt_free
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:153,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 158
    functionName: test_empty
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 1
    functionsReached:
    - rt_begin_iterate
    - EXPECT_TRUE
    - rt_free
    - rt_num_entries
    - dsa_create
    - dsa_detach
    - rt_iterate_next
    - rt_find
    - rt_create
    - AllocSetContextCreate
    - rt_delete
    - EXPECT_FALSE
    - LWLockNewTrancheId
    - rt_end_iterate
    linkageType: ''
    returnType: void
    signature: void test_empty(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:169,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:172,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:173,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:177,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:180,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:183,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:186,1
    - Dst: EXPECT_FALSE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:200,1
    - Dst: rt_set
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:200,1
    - Dst: rt_stats
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:202,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:209,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:212,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:213,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:222,1
    - Dst: rt_set
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:222,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:228,1
    - Dst: rt_delete
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:228,1
    - Dst: EXPECT_FALSE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:229,1
    - Dst: rt_set
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:229,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:237,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:240,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:241,1
    - Dst: rt_begin_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:245,1
    - Dst: rt_iterate_next
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:259,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:261,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:262,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:263,1
    - Dst: rt_end_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:266,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:270,1
    - Dst: rt_delete
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:270,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:274,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:274,1
    - Dst: rt_stats
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:276,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:278,1
    - Dst: rt_free
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:279,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:282,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 3
    argNames:
    - test_info
    - shift
    - asc
    argTypes:
    - rt_node_class_test_elem*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 284
    functionName: test_basic
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 1
    functionsReached:
    - EXPECT_TRUE
    - dsa_create
    - palloc_array
    - elog
    - rt_begin_iterate
    - pfree
    - rt_find
    - rt_set
    - rt_stats
    - rt_delete
    - dsa_detach
    - rt_iterate_next
    - AllocSetContextCreate
    - LWLockNewTrancheId
    - rt_end_iterate
    - rt_free
    - rt_create
    - EXPECT_EQ_U64
    - EXPECT_FALSE
    linkageType: ''
    returnType: void
    signature: void test_basic(rt_node_class_test_elem *test_info, int shift, bool
      asc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 290
    functionName: key_cmp
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u64
    linkageType: ''
    returnType: int
    signature: int key_cmp(const void *a, const void *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:301,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:305,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:308,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:309,1
    - Dst: SlabContextCreate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:313,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:317,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:321,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:322,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:325,1
    - Dst: rt_set
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:331,1
    - Dst: rt_stats
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:334,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:340,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:343,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:344,1
    - Dst: qsort
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:348,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:360,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:361,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:373,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:374,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:382,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:383,1
    - Dst: rt_begin_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:387,1
    - Dst: rt_iterate_next
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:400,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:402,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:403,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:404,1
    - Dst: rt_end_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:407,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:410,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:415,1
    - Dst: rt_delete
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:417,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:420,1
    - Dst: rt_num_entries
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:420,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:422,1
    - Dst: rt_free
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:423,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:426,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 428
    functionName: test_random
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 0
    functionsReached:
    - EXPECT_TRUE
    - dsa_create
    - qsort
    - rt_begin_iterate
    - pfree
    - rt_find
    - rt_set
    - rt_stats
    - rt_delete
    - GetCurrentTimestamp
    - dsa_detach
    - rt_iterate_next
    - pg_prng_seed
    - LWLockNewTrancheId
    - rt_end_iterate
    - pg_prng_uint64
    - rt_free
    - rt_num_entries
    - rt_create
    - EXPECT_EQ_U64
    - SlabContextCreate
    - palloc
    linkageType: ''
    returnType: void
    signature: void test_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_empty
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:436,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:438,1
    - Dst: test_basic
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:443,1
    - Dst: test_basic
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:444,1
    - Dst: test_basic
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:447,1
    - Dst: test_basic
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:448,1
    - Dst: test_basic
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:451,1
    - Dst: test_basic
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:452,1
    - Dst: test_random
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:455,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 430
    functionDepth: 2
    functionLinenumber: 430
    functionLinenumberEnd: 458
    functionName: test_radixtree
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - test_random
    - test_basic
    - test_empty
    - lengthof
    linkageType: ''
    returnType: Datum
    signature: Datum test_radixtree(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:86,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:88,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:89,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:90,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:95,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:96,1
    - Dst: parse_test_flags
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:99,1
    - Dst: test_re_compile
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:102,1
    - Dst: setup_test_matches
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:105,1
    - Dst: PG_GETARG_TEXT_P_COPY
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:105,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:111,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:112,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:114,1
    - Dst: build_test_info_result
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:121,1
    - Dst: pg_regfree
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:123,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:125,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:125,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:130,1
    - Dst: build_test_match_result
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:135,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:137,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:137,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 142
    functionName: test_regex
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - build_test_match_result
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - test_re_compile
    - palloc_array
    - MemoryContextSwitchTo
    - setup_test_matches
    - pg_regfree
    - PG_GETARG_TEXT_P_COPY
    - build_test_info_result
    - parse_test_flags
    - PointerGetDatum
    - SRF_RETURN_DONE
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_regex(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:162,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:163,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:170,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:171,1
    - Dst: pg_regcomp
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:175,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:181,1
    - Dst: pg_regerror
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:186,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:187,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:188,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - text_re
    - cflags
    - collation
    - result_re
    argTypes:
    - text*
    - int
    - Oid
    - regex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 191
    functionName: test_re_compile
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 1
    functionsReached:
    - pg_mb2wchar_with_len
    - pg_regcomp
    - pfree
    - pg_regerror
    - errcode
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errmsg
    - palloc
    linkageType: ''
    returnType: void
    signature: "void test_re_compile(text *text_re, int cflags, Oid collation,\n\t\t\t\tregex_t
      *result_re)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_regexec
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:219,1
    - Dst: pg_regerror
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:231,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:232,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:233,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 8
    argNames:
    - re
    - data
    - data_len
    - start_search
    - details
    - nmatch
    - pmatch
    - eflags
    argTypes:
    - regex_t*
    - pg_wchar*
    - int
    - int
    - rm_detail_t*
    - int
    - regmatch_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 238
    functionName: test_re_execute
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 0
    functionsReached:
    - pg_regexec
    - errcode
    - pg_regerror
    - ereport
    - errmsg
    linkageType: ''
    returnType: bool
    signature: "bool test_re_execute(regex_t *re, pg_wchar *data, int data_len,\n\t\t\t\tint
      start_search,\n\t\t\t\trm_detail_t *details,\n\t\t\t\tint nmatch, regmatch_t
      *pmatch,\n\t\t\t\tint eflags)"
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:261,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:262,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:412,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:413,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:414,1
    - Dst: pg_mblen_range
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:415,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 140
    argCount: 2
    argNames:
    - flags
    - opts
    argTypes:
    - test_re_flags*
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 424
    functionName: parse_test_flags
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 1
    functionsReached:
    - pg_mblen_range
    - errcode
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errmsg
    linkageType: ''
    returnType: void
    signature: void parse_test_flags(test_re_flags *flags, text *opts)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:439,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:440,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:459,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:460,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:461,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:461,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:477,1
    - Dst: palloc_array
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:486,1
    - Dst: test_re_execute
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:492,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:503,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:504,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:505,1
    - Dst: repalloc
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:506,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:552,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:553,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:554,1
    - Dst: repalloc
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:555,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:570,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:592,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:599,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:606,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 74
    argCount: 5
    argNames:
    - orig_str
    - cpattern
    - re_flags
    - collation
    - use_subpatterns
    argTypes:
    - text*
    - regex_t*
    - test_re_flags*
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 433
    functionDepth: 2
    functionLinenumber: 433
    functionLinenumberEnd: 609
    functionName: setup_test_matches
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - pg_mb2wchar_with_len
    - errcode
    - Assert
    - pfree
    - ereport
    - palloc_array
    - repalloc
    - pg_database_encoding_max_length
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - test_re_execute
    - errmsg
    - palloc
    linkageType: ''
    returnType: test_regex_ctx
    signature: "test_regex_ctx *\nsetup_test_matches(text *orig_str,\n\t\t\t\t   regex_t
      *cpattern, test_re_flags *re_flags,\n\t\t\t\t   Oid collation,\n\t\t\t\t   bool
      use_subpatterns)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:643,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:650,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:651,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:651,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:659,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:659,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:662,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:663,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:663,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:670,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:671,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:671,1
    - Dst: construct_md_array
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:680,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - cpattern
    - flags
    argTypes:
    - regex_t*
    - test_re_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 682
    functionName: build_test_info_result
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 1
    functionsReached:
    - construct_md_array
    - cstring_to_text
    - PointerGetDatum
    - lengthof
    - snprintf
    linkageType: ''
    returnType: ArrayType
    signature: 'ArrayType *

      build_test_info_result(regex_t *cpattern, test_re_flags *flags)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:713,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:715,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:715,1
    - Dst: pg_wchar2mb_with_len
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:725,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:729,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:730,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:730,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:735,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:736,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:737,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:738,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:749,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:751,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:751,1
    - Dst: construct_md_array
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:760,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - matchctx
    argTypes:
    - test_regex_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 690
    functionDepth: 1
    functionLinenumber: 690
    functionLinenumberEnd: 762
    functionName: build_test_match_result
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 1
    functionsReached:
    - construct_md_array
    - Assert
    - cstring_to_text
    - pg_wchar2mb_with_len
    - Int32GetDatum
    - cstring_to_text_with_len
    - PointerGetDatum
    - DirectFunctionCall3
    - snprintf
    linkageType: ''
    returnType: ArrayType
    signature: 'ArrayType *

      build_test_match_result(test_regex_ctx *matchctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockInit
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:105,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:106,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - arg
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 109
    functionName: injection_point_init_state
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - pg_atomic_init_u32
    - memset
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void injection_point_init_state(void *ptr, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: injection_point_init_state
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: injection_shmem_init
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - injection_point_init_state
    linkageType: ''
    returnType: void
    signature: void injection_shmem_init(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetNamedDSMSegment
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 145
    functionName: injection_init_shmem
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - GetNamedDSMSegment
    linkageType: ''
    returnType: void
    signature: void injection_init_shmem(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - condition
    argTypes:
    - InjectionPointCondition*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 169
    functionName: injection_point_allowed
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool injection_point_allowed(const InjectionPointCondition *condition)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:187,1
    - Dst: lfirst
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:187,1
    - Dst: InjectionPointDetach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 191
    functionName: injection_points_cleanup
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - InjectionPointDetach
    - strVal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void injection_points_cleanup(int code, Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:187,1
    - Dst: lfirst
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:187,1
    - Dst: InjectionPointDetach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 190
    functionName: foreach
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 1
    functionsReached:
    - InjectionPointDetach
    - strVal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, inj_list_local)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: injection_point_allowed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:200,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:204,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 208
    functionName: injection_error
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - elog
    - injection_point_allowed
    linkageType: ''
    returnType: void
    signature: void injection_error(const char *name, const void *private_data, void
      *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: injection_point_allowed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:216,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:220,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 224
    functionName: injection_notice
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - elog
    - injection_point_allowed
    linkageType: ''
    returnType: void
    signature: void injection_notice(const char *name, const void *private_data, void
      *arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: injection_init_shmem
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:237,1
    - Dst: injection_point_allowed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:239,1
    - Dst: WaitEventInjectionPointNew
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:247,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:252,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:258,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:259,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:263,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:266,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:277,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:278,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:280,1
    - Dst: pg_usleep
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:281,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:283,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:285,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:288,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:290,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 291
    functionName: injection_wait
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - elog
    - strlcpy
    - injection_init_shmem
    - CHECK_FOR_INTERRUPTS
    - pgstat_report_wait_end
    - WaitEventInjectionPointNew
    - injection_point_allowed
    - SpinLockRelease
    - pgstat_report_wait_start
    - pg_atomic_read_u32
    - Min
    - SpinLockAcquire
    - pg_usleep
    linkageType: ''
    returnType: void
    signature: void injection_wait(const char *name, const void *private_data, void
      *arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:300,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:300,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:301,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:301,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:305,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:307,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:309,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:312,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:320,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:328,1
    - Dst: lappend
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:329,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:329,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:329,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:330,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:333,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 334
    functionName: injection_points_attach
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - strcmp
    - makeString
    - lappend
    - pstrdup
    - MemoryContextSwitchTo
    - InjectionPointAttach
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_attach(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:350,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:351,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:352,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:353,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:354,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:355,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:357,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:357,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:358,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:358,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:359,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:359,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:361,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:363,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:364,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:368,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:368,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:371,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:373,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 374
    functionName: injection_points_attach_func
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_VOID
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - InjectionPointAttach
    - text_to_cstring
    - PG_ARGISNULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_attach_func(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:383,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:383,1
    - Dst: injection_init_shmem
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:386,1
    - Dst: INJECTION_POINT_LOAD
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:388,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 380
    functionDepth: 2
    functionLinenumber: 380
    functionLinenumberEnd: 391
    functionName: injection_points_load
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - INJECTION_POINT_LOAD
    - PG_RETURN_VOID
    - injection_init_shmem
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_load(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:403,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:404,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:405,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:405,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:407,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:408,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:408,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:410,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:412,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 413
    functionName: injection_points_run
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - INJECTION_POINT
    - PG_RETURN_VOID
    - text_to_cstring
    - PG_ARGISNULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_run(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:425,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:426,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:427,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:427,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:429,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:430,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:430,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:432,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 435
    functionName: injection_points_cached
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - text_to_cstring
    - INJECTION_POINT_CACHED
    - PG_ARGISNULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_cached(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:444,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:444,1
    - Dst: injection_init_shmem
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:448,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:451,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:454,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:462,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:463,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:465,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:467,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:468,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 441
    functionDepth: 2
    functionLinenumber: 441
    functionLinenumberEnd: 469
    functionName: injection_points_wakeup
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - strcmp
    - injection_init_shmem
    - text_to_cstring
    - SpinLockRelease
    - SpinLockAcquire
    - pg_atomic_fetch_add_u32
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_wakeup(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: injection_init_shmem
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:486,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:492,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 479
    functionDepth: 2
    functionLinenumber: 479
    functionLinenumberEnd: 495
    functionName: injection_points_set_local
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - before_shmem_exit
    - PG_RETURN_VOID
    - injection_init_shmem
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_set_local(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:504,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:504,1
    - Dst: InjectionPointDetach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:506,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:507,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:514,1
    - Dst: list_delete
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:515,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:515,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:516,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:519,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 520
    functionName: injection_points_detach
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - elog
    - list_delete
    - PG_RETURN_VOID
    - InjectionPointDetach
    - makeString
    - MemoryContextSwitchTo
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_detach(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:535,1
    - Dst: InjectionPointList
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:537,1
    - Dst: lfirst
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:543,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:545,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:546,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:548,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:548,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:549,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:549,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:550,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:550,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 558
    functionName: injection_points_list
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - InitMaterializedSRF
    - cstring_to_text
    - tuplestore_putvalues
    - lfirst
    - memset
    - PointerGetDatum
    - InjectionPointList
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_list(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:543,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:545,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:546,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:548,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:548,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:549,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:549,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:550,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:550,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 554
    functionName: foreach
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 1
    functionsReached:
    - cstring_to_text
    - tuplestore_putvalues
    - lfirst
    - memset
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(lc, inj_points)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RegisterShmemCallbacks
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 567
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - RegisterShmemCallbacks
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:50,1
    - Dst: table_open
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:51,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:51,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:54,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:64,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:67,1
    - Dst: GetOldestNonRemovableTransactionId
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:69,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:70,1
    - Dst: FullTransactionIdEquals
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:71,1
    - Dst: table_close
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:74,1
    - Dst: PG_RETURN_FULLTRANSACTIONID
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:76,1
    - Dst: FullTransactionIdFromAllowableAt
      Src: /src/postgres/src/test/modules/injection_points/regress_injection.c:76,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 78
    functionName: removable_cutoff
    functionSourceFile: /src/postgres/src/test/modules/injection_points/regress_injection.c
    functionUses: 0
    functionsReached:
    - elog
    - ReadNextFullTransactionId
    - FullTransactionIdFromAllowableAt
    - FullTransactionIdEquals
    - CHECK_FOR_INTERRUPTS
    - table_open
    - PG_RETURN_FULLTRANSACTIONID
    - PG_GETARG_OID
    - table_close
    - PG_ARGISNULL
    - GetOldestNonRemovableTransactionId
    linkageType: ''
    returnType: Datum
    signature: Datum removable_cutoff(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:69,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:71,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:72,1
    - Dst: dlist_delete
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:74,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 78
    functionName: ReleaseManyTestResource
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c
    functionUses: 0
    functionsReached:
    - elog
    - pfree
    - Assert
    - dlist_delete
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ReleaseManyTestResource(Datum res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:84,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 93
    functionName: PrintManyTest
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c
    functionUses: 0
    functionsReached:
    - psprintf
    - DatumGetPointer
    linkageType: ''
    returnType: char
    signature: 'char *

      PrintManyTest(Datum res)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_init
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - kind
    - name
    - phase
    - priority
    argTypes:
    - ManyTestResourceKind*
    - char*
    - ResourceReleasePhase
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 109
    functionName: InitManyTestResourceKind
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c
    functionUses: 0
    functionsReached:
    - dlist_init
    linkageType: ''
    returnType: void
    signature: "void InitManyTestResourceKind(ManyTestResourceKind *kind, char *name,\n\t\t\t\t\t\t
      ResourceReleasePhase phase, uint32 priority)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:124,1
    - Dst: dlist_node_init
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:127,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:129,1
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:130,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:130,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:132,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - owner
    - kinds
    - nkinds
    - nresources
    argTypes:
    - ResourceOwner
    - ManyTestResourceKind*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 138
    functionName: RememberManyTestResources
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerEnlarge
    - dlist_node_init
    - elog
    - ResourceOwnerRemember
    - PointerGetDatum
    - palloc_object
    - dlist_push_tail
    linkageType: ''
    returnType: void
    signature: "void RememberManyTestResources(ResourceOwner owner,\n\t\t\t\t\t\t
      \ ManyTestResourceKind *kinds, int nkinds,\n\t\t\t\t\t\t  int nresources)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetTotalResourceCount
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:151,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:153,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:162,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:164,1
    - Dst: ResourceOwnerForget
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:166,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:166,1
    - Dst: dlist_delete
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:168,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:169,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:176,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - owner
    - kinds
    - nkinds
    - nresources
    argTypes:
    - ResourceOwner
    - ManyTestResourceKind*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 178
    functionName: ForgetManyTestResources
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c
    functionUses: 0
    functionsReached:
    - elog
    - dlist_is_empty
    - pfree
    - dlist_head_element
    - PointerGetDatum
    - dlist_delete
    - ResourceOwnerForget
    - GetTotalResourceCount
    linkageType: ''
    returnType: void
    signature: "void ForgetManyTestResources(ResourceOwner owner,\n\t\t\t\t\t\tManyTestResourceKind
      *kinds, int nkinds,\n\t\t\t\t\t\tint nresources)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - kinds
    - nkinds
    argTypes:
    - ManyTestResourceKind*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 192
    functionName: GetTotalResourceCount
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int GetTotalResourceCount(ManyTestResourceKind *kinds, int nkinds)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:205,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:206,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:207,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:208,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:209,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:218,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:220,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:222,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:224,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:226,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:229,1
    - Dst: InitManyTestResourceKind
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:232,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:233,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:237,1
    - Dst: InitManyTestResourceKind
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:240,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:241,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:246,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:251,1
    - Dst: RememberManyTestResources
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:252,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:256,1
    - Dst: RememberManyTestResources
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:257,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:263,1
    - Dst: ForgetManyTestResources
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:264,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:269,1
    - Dst: ForgetManyTestResources
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:270,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:274,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:277,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:278,1
    - Dst: GetTotalResourceCount
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:278,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:280,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:283,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:285,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:288,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:289,1
    - Dst: GetTotalResourceCount
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:289,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:290,1
    - Dst: GetTotalResourceCount
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:290,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:292,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c:294,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 295
    functionName: test_resowner_many
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_many.c
    functionUses: 0
    functionsReached:
    - elog
    - ResourceOwnerRelease
    - ForgetManyTestResources
    - PG_RETURN_VOID
    - Assert
    - psprintf
    - ResourceOwnerDelete
    - InitManyTestResourceKind
    - palloc
    - RememberManyTestResources
    - GetTotalResourceCount
    - PG_GETARG_INT32
    - ResourceOwnerCreate
    linkageType: ''
    returnType: Datum
    signature: Datum test_resowner_many(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:38,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: ReleaseString
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c
    functionUses: 0
    functionsReached:
    - elog
    - DatumGetCString
    linkageType: ''
    returnType: void
    signature: void ReleaseString(Datum res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:44,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: PrintString
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c
    functionUses: 0
    functionsReached:
    - psprintf
    - DatumGetCString
    linkageType: ''
    returnType: char
    signature: 'char *

      PrintString(Datum res)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:52,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:53,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:60,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:62,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:64,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:65,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:67,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:70,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:76,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:79,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:91,1
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:92,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:93,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:93,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:100,1
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:101,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:102,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:102,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:111,1
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:112,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:113,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:113,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:120,1
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:121,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:122,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:122,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:126,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:127,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:128,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:129,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:130,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:131,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:133,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:135,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 136
    functionName: test_resowner_priorities
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c
    functionUses: 0
    functionsReached:
    - elog
    - ResourceOwnerEnlarge
    - ResourceOwnerRelease
    - PG_RETURN_VOID
    - CStringGetDatum
    - psprintf
    - ResourceOwnerDelete
    - ResourceOwnerRemember
    - palloc
    - PG_GETARG_INT32
    - ResourceOwnerCreate
    linkageType: ''
    returnType: Datum
    signature: Datum test_resowner_priorities(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:144,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:146,1
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:148,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:148,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:152,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:153,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:154,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:156,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 159
    functionName: test_resowner_leak
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerEnlarge
    - ResourceOwnerRelease
    - PG_RETURN_VOID
    - CStringGetDatum
    - ResourceOwnerDelete
    - ResourceOwnerRemember
    - ResourceOwnerCreate
    linkageType: ''
    returnType: Datum
    signature: Datum test_resowner_leak(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:167,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:169,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:175,1
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:176,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:176,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:179,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 182
    functionName: test_resowner_remember_between_phases
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerEnlarge
    - elog
    - ResourceOwnerRelease
    - PG_RETURN_VOID
    - CStringGetDatum
    - ResourceOwnerRemember
    - ResourceOwnerCreate
    linkageType: ''
    returnType: Datum
    signature: Datum test_resowner_remember_between_phases(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:191,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:193,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:194,1
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:195,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:197,1
    - Dst: ResourceOwnerForget
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:203,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:206,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 209
    functionName: test_resowner_forget_between_phases
    functionSourceFile: /src/postgres/src/test/modules/test_resowner/test_resowner_basic.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerEnlarge
    - elog
    - ResourceOwnerRelease
    - PG_RETURN_VOID
    - CStringGetDatum
    - ResourceOwnerRemember
    - ResourceOwnerForget
    - ResourceOwnerCreate
    linkageType: ''
    returnType: Datum
    signature: Datum test_resowner_forget_between_phases(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WaitLatch
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 39
    functionName: dc_delay_barrier
    functionSourceFile: /src/postgres/src/test/modules/test_checksums/test_checksums.c
    functionUses: 0
    functionsReached:
    - WaitLatch
    linkageType: ''
    returnType: void
    signature: void dc_delay_barrier(const char *name, const void *private_data, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:46,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:49,1
    - Dst: InjectionPointDetach
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:55,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:57,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 61
    functionName: dcw_inject_delay_barrier
    functionSourceFile: /src/postgres/src/test/modules/test_checksums/test_checksums.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - PG_GETARG_BOOL
    - InjectionPointDetach
    - InjectionPointAttach
    linkageType: ''
    returnType: Datum
    signature: Datum dcw_inject_delay_barrier(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:68,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:71,1
    - Dst: InjectionPointDetach
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:77,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:79,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 83
    functionName: dcw_inject_launcher_delay
    functionSourceFile: /src/postgres/src/test/modules/test_checksums/test_checksums.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - PG_GETARG_BOOL
    - InjectionPointDetach
    - InjectionPointAttach
    linkageType: ''
    returnType: Datum
    signature: Datum dcw_inject_launcher_delay(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:90,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:93,1
    - Dst: InjectionPointDetach
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:99,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:101,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_checksums/test_checksums.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 105
    functionName: dcw_inject_startup_delay
    functionSourceFile: /src/postgres/src/test/modules/test_checksums/test_checksums.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - PG_GETARG_BOOL
    - InjectionPointDetach
    - InjectionPointAttach
    linkageType: ''
    returnType: Datum
    signature: Datum dcw_inject_startup_delay(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:28,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:29,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:32,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:33,1
    - Dst: superuser
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:35,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:36,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:37,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:38,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:41,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:42,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:43,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - object
    - seclabel
    argTypes:
    - ObjectAddress*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 44
    functionName: dummy_object_relabel
    functionSourceFile: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c
    functionUses: 0
    functionsReached:
    - superuser
    - strcmp
    - errcode
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void dummy_object_relabel(const ObjectAddress *object, const char *seclabel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: register_label_provider
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c
    functionUses: 0
    functionsReached:
    - register_label_provider
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: dummy_seclabel_dummy
    functionSourceFile: /src/postgres/src/test/modules/dummy_seclabel/dummy_seclabel.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum dummy_seclabel_dummy(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RegisterCustomRmgr
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 73
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c
    functionUses: 0
    functionsReached:
    - RegisterCustomRmgr
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:84,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: testcustomrmgrs_redo
    functionSourceFile: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void testcustomrmgrs_redo(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:93,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:94,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:100,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 103
    functionName: testcustomrmgrs_desc
    functionSourceFile: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c
    functionUses: 0
    functionsReached:
    - appendBinaryStringInfo
    - appendStringInfo
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void testcustomrmgrs_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 112
    functionName: testcustomrmgrs_identify
    functionSourceFile: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      testcustomrmgrs_identify(uint8 info)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:122,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:123,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:124,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:130,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:131,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:132,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:135,1
    - Dst: XLogInsert
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:137,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 140
    functionName: test_custom_rmgrs_insert_wal_record
    functionSourceFile: /src/postgres/src/test/modules/test_custom_rmgrs/test_custom_rmgrs.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - XLogBeginInsert
    - PG_RETURN_LSN
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - XLogRegisterData
    - XLogSetRecordFlags
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum test_custom_rmgrs_insert_wal_record(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:109,1
    - Dst: WaitEventInjectionPointNew
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:110,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:113,1
    - Dst: InjectionPointLoad
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:118,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:120,1
    - Dst: InjectionPointLoad
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 128
    functionName: test_aio_shmem_init
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - WaitEventInjectionPointNew
    - ConditionVariableInit
    - InjectionPointLoad
    - InjectionPointAttach
    linkageType: ''
    returnType: void
    signature: void test_aio_shmem_init(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InjectionPointLoad
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:138,1
    - Dst: InjectionPointLoad
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:139,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 142
    functionName: test_aio_shmem_attach
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - InjectionPointLoad
    linkageType: ''
    returnType: void
    signature: void test_aio_shmem_attach(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RegisterShmemCallbacks
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 151
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - RegisterShmemCallbacks
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:158,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:158,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:160,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:161,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:162,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:163,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:164,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:165,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:166,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:167,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:168,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:169,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:171,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:172,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:173,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:174,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 175
    functionName: errno_from_string
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - PG_RETURN_INT32
    - strcmp
    - errcode
    - ereport
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum errno_from_string(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:181,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:182,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:187,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:193,1
    - Dst: ExtendBufferedRelBy
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:195,1
    - Dst: BMR_REL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:195,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:207,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:211,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 214
    functionName: grow_rel
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - PG_RETURN_VOID
    - Min
    - BMR_REL
    - PG_GETARG_UINT32
    - PG_GETARG_OID
    - relation_close
    - relation_open
    - ExtendBufferedRelBy
    linkageType: ''
    returnType: Datum
    signature: Datum grow_rel(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:220,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:221,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:222,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:223,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:224,1
    - Dst: palloc_aligned
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:225,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:231,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:233,1
    - Dst: LockBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:236,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:242,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:242,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:244,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:256,1
    - Dst: InvalidateLocalBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:257,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:257,1
    - Dst: EvictUnpinnedBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:259,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:265,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:265,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:267,1
    - Dst: PageInit
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:268,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:268,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:293,1
    - Dst: pg_checksum_page
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:296,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:305,1
    - Dst: PageSetChecksum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:309,1
    - Dst: smgrwrite
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:312,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:312,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:315,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:317,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 318
    functionName: modify_rel_block
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - RelationGetSmgr
    - LockBuffer
    - BufferGetPage
    - PageInit
    - PageIsEmpty
    - smgrwrite
    - palloc_aligned
    - elog
    - memcpy
    - BufferIsLocal
    - pg_checksum_page
    - GetLocalBufferDescriptor
    - BufferGetPageSize
    - PG_GETARG_UINT32
    - InvalidateLocalBuffer
    - UnlockReleaseBuffer
    - relation_close
    - EvictUnpinnedBuffer
    - PageSetChecksum
    - ReadBufferExtended
    - memset
    - relation_open
    - PG_GETARG_BOOL
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum modify_rel_block(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:334,1
    - Dst: LockBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:335,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:337,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:339,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:340,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:344,1
    - Dst: LockBufHdr
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:345,1
    - Dst: BUF_STATE_GET_REFCOUNT
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:353,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:358,1
    - Dst: pg_atomic_unlocked_write_u64
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:361,1
    - Dst: UnlockBufHdrExt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:365,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:369,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - rel
    - blkno
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 373
    functionName: create_toy_buffer
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - ReadBufferExtended
    - GetLocalBufferDescriptor
    - LockBuffer
    - RelationUsesLocalBuffers
    - GetBufferDescriptor
    - LockBufHdr
    - pg_atomic_unlocked_write_u64
    - pg_atomic_read_u64
    - UnlockBufHdrExt
    - BUF_STATE_GET_REFCOUNT
    linkageType: ''
    returnType: Buffer
    signature: Buffer create_toy_buffer(Relation rel, BlockNumber blkno)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:384,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:385,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:386,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:387,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:388,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:389,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:390,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:391,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:403,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:405,1
    - Dst: create_toy_buffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:409,1
    - Dst: BufferGetBlock
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:410,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:411,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:412,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:413,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:416,1
    - Dst: pgstat_prepare_report_checksum_failure
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:418,1
    - Dst: pgaio_io_acquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:420,1
    - Dst: pgaio_io_get_wref
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:421,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:423,1
    - Dst: StartLocalBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:426,1
    - Dst: pgaio_io_set_flag
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:427,1
    - Dst: StartSharedBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:432,1
    - Dst: pgaio_io_set_handle_data_32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:435,1
    - Dst: pgaio_io_register_callbacks
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:442,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:443,1
    - Dst: pgaio_enter_batchmode
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:449,1
    - Dst: smgrstartreadv
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:451,1
    - Dst: smgrreleaseall
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:455,1
    - Dst: pgaio_exit_batchmode
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:458,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:461,1
    - Dst: pgaio_wref_wait
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:465,1
    - Dst: pgaio_result_report
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:468,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:474,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:476,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 477
    functionName: read_rel_block_ll
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - pgaio_io_set_flag
    - PG_RETURN_VOID
    - pgaio_io_acquire
    - RelationGetSmgr
    - pgaio_io_register_callbacks
    - smgrreleaseall
    - pgaio_wref_wait
    - elog
    - ReleaseBuffer
    - pgaio_enter_batchmode
    - BufferIsLocal
    - pgstat_prepare_report_checksum_failure
    - RelationUsesLocalBuffers
    - GetLocalBufferDescriptor
    - PG_GETARG_UINT32
    - pgaio_exit_batchmode
    - StartLocalBufferIO
    - relation_close
    - create_toy_buffer
    - StartSharedBufferIO
    - GetBufferDescriptor
    - pgaio_io_get_wref
    - pgaio_io_set_handle_data_32
    - smgrstartreadv
    - relation_open
    - PG_GETARG_INT32
    - pgaio_result_report
    - BufferGetBlock
    - PG_GETARG_BOOL
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum read_rel_block_ll(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PrefetchBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:490,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:493,1
    - Dst: ReadRecentBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:496,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:498,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:499,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:500,1
    - Dst: LockBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:503,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:505,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:507,1
    - Dst: FlushLocalBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:508,1
    - Dst: FlushOneBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:510,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:512,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:514,1
    - Dst: InvalidateLocalBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:515,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:515,1
    - Dst: EvictUnpinnedBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:516,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:517,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - rel
    - forknum
    - blkno
    argTypes:
    - Relation
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 521
    functionName: invalidate_one_block
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - EvictUnpinnedBuffer
    - BufferIsLocal
    - ReadRecentBuffer
    - PrefetchBuffer
    - GetBufferDescriptor
    - GetLocalBufferDescriptor
    - LockBuffer
    - FlushOneBuffer
    - FlushLocalBuffer
    - InvalidateLocalBuffer
    - BufferIsValid
    - pg_atomic_read_u64
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void invalidate_one_block(Relation rel, ForkNumber forknum, BlockNumber
      blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:527,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:528,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:531,1
    - Dst: invalidate_one_block
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:533,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:535,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 524
    functionDepth: 2
    functionLinenumber: 524
    functionLinenumberEnd: 538
    functionName: invalidate_rel_block
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - invalidate_one_block
    - PG_GETARG_UINT32
    - PG_GETARG_OID
    - relation_close
    - relation_open
    linkageType: ''
    returnType: Datum
    signature: Datum invalidate_rel_block(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:544,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:547,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:554,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:556,1
    - Dst: smgrexists
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:562,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:565,1
    - Dst: invalidate_one_block
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:569,1
    - Dst: EvictRelUnpinnedBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:579,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:583,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:586,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 587
    functionName: evict_rel
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - invalidate_one_block
    - RelationGetSmgr
    - RelationUsesLocalBuffers
    - EvictRelUnpinnedBuffers
    - smgrexists
    - PG_GETARG_OID
    - relation_close
    - relation_open
    - smgrnblocks
    linkageType: ''
    returnType: Datum
    signature: Datum evict_rel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:593,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:594,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:598,1
    - Dst: create_toy_buffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:600,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:601,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:603,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 590
    functionDepth: 2
    functionLinenumber: 590
    functionLinenumberEnd: 606
    functionName: buffer_create_toy
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - PG_RETURN_INT32
    - PG_GETARG_UINT32
    - PG_GETARG_OID
    - relation_close
    - relation_open
    - create_toy_buffer
    linkageType: ''
    returnType: Datum
    signature: Datum buffer_create_toy(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:612,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:613,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:614,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:618,1
    - Dst: StartLocalBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:619,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:619,1
    - Dst: StartSharedBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:622,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:622,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:631,1
    - Dst: ResourceOwnerForgetBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:632,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:635,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:636,1
    - Dst: DebugPrintBufferRefcount
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:637,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:638,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:638,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:640,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 641
    functionName: buffer_call_start_io
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - BufferIsLocal
    - PG_GETARG_BOOL
    - GetBufferDescriptor
    - GetLocalBufferDescriptor
    - DebugPrintBufferRefcount
    - ereport
    - errhidestmt
    - errhidecontext
    - errmsg
    - PG_RETURN_BOOL
    - StartLocalBufferIO
    - ResourceOwnerForgetBufferIO
    - PG_GETARG_INT32
    - StartSharedBufferIO
    linkageType: ''
    returnType: Datum
    signature: Datum buffer_call_start_io(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:647,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:648,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:649,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:650,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:651,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:671,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:672,1
    - Dst: DebugPrintBufferRefcount
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:673,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:674,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:674,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:676,1
    - Dst: TerminateLocalBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:677,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:677,1
    - Dst: TerminateBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:680,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:680,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:683,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:684,1
    - Dst: DebugPrintBufferRefcount
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:685,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:686,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:686,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:688,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 689
    functionName: buffer_call_terminate_io
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - BufferIsLocal
    - PG_GETARG_BOOL
    - DebugPrintBufferRefcount
    - errhidestmt
    - GetLocalBufferDescriptor
    - ereport
    - GetBufferDescriptor
    - TerminateBufferIO
    - errhidecontext
    - errmsg
    - TerminateLocalBufferIO
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum buffer_call_terminate_io(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:698,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:699,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:700,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:713,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:715,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:718,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:719,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:720,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:721,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:722,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:724,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:725,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:735,1
    - Dst: StartReadBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:743,1
    - Dst: WaitReadBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:763,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:782,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:782,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:784,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:787,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:792,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:796,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:800,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:804,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:808,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:812,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:815,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:822,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:828,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:829,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:830,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:831,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:832,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:834,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 837
    functionName: read_buffers
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - RelationGetSmgr
    - tuplestore_putvalues
    - construct_array_builtin
    - ReleaseBuffer
    - Assert
    - Int32GetDatum
    - BufferGetBlockNumber
    - UInt32GetDatum
    - pfree
    - PG_GETARG_UINT32
    - PointerGetDatum
    - StartReadBuffers
    - relation_close
    - relation_open
    - PG_GETARG_INT32
    - InitMaterializedSRF
    - palloc0
    - PG_GETARG_OID
    - WaitReadBuffers
    - Min
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum read_buffers(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - stream
    - callback_private_data
    - per_buffer_data
    argTypes:
    - ReadStream*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 840
    functionDepth: 0
    functionLinenumber: 840
    functionLinenumberEnd: 850
    functionName: read_stream_for_blocks_cb
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber read_stream_for_blocks_cb(ReadStream *stream,\n\t\t\t\t\t\t
      \ void *callback_private_data,\n\t\t\t\t\t\t  void *per_buffer_data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:856,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:857,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:863,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:870,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:871,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:872,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:873,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:876,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:877,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:879,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:881,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:891,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:895,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:896,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:898,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:899,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:900,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:902,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:904,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:907,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:908,1
    - Dst: read_stream_end
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:911,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:913,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 853
    functionDepth: 1
    functionLinenumber: 853
    functionLinenumberEnd: 916
    functionName: read_stream_for_blocks
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - read_stream_next_buffer
    - tuplestore_putvalues
    - read_stream_begin_relation
    - ARR_NDIM
    - PG_GETARG_ARRAYTYPE_P
    - elog
    - ReleaseBuffer
    - Int32GetDatum
    - UInt32GetDatum
    - relation_close
    - ARR_DIMS
    - read_stream_end
    - ARR_HASNULL
    - ARR_DATA_PTR
    - BufferIsValid
    - relation_open
    - InitMaterializedSRF
    - ARR_ELEMTYPE
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum read_stream_for_blocks(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgaio_io_acquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:923,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 926
    functionName: handle_get
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - pgaio_io_acquire
    linkageType: ''
    returnType: Datum
    signature: Datum handle_get(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:933,1
    - Dst: pgaio_io_release
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:935,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 938
    functionName: handle_release_last
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - pgaio_io_release
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum handle_release_last(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgaio_io_acquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:944,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:946,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 941
    functionDepth: 1
    functionLinenumber: 941
    functionLinenumberEnd: 948
    functionName: handle_get_and_error
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - pgaio_io_acquire
    linkageType: ''
    returnType: Datum
    signature: Datum handle_get_and_error(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgaio_io_acquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:954,1
    - Dst: pgaio_io_acquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:955,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 951
    functionDepth: 1
    functionLinenumber: 951
    functionLinenumberEnd: 958
    functionName: handle_get_twice
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - pgaio_io_acquire
    linkageType: ''
    returnType: Datum
    signature: Datum handle_get_twice(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgaio_io_acquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:966,1
    - Dst: pgaio_io_release
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:967,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 961
    functionDepth: 1
    functionLinenumber: 961
    functionLinenumberEnd: 970
    functionName: handle_get_release
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - pgaio_io_release
    - PG_RETURN_VOID
    - pgaio_io_acquire
    linkageType: ''
    returnType: Datum
    signature: Datum handle_get_release(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgaio_enter_batchmode
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:976,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:977,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 978
    functionName: batch_start
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - pgaio_enter_batchmode
    linkageType: ''
    returnType: Datum
    signature: Datum batch_start(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgaio_exit_batchmode
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:984,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 981
    functionDepth: 1
    functionLinenumber: 981
    functionLinenumberEnd: 986
    functionName: batch_end
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - pgaio_exit_batchmode
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum batch_end(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1010,1
    - Dst: pgaio_io_get_owner
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1010,1
    - Dst: pgaio_io_get_target_data
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1017,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - ioh
    argTypes:
    - PgAioHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 996
    functionDepth: 1
    functionLinenumber: 996
    functionLinenumberEnd: 1031
    functionName: inj_io_short_read_matches
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - pgaio_io_get_owner
    - GetPGProcByNumber
    - pgaio_io_get_target_data
    linkageType: ''
    returnType: bool
    signature: bool inj_io_short_read_matches(PgAioHandle *ioh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1047,1
    - Dst: pgaio_io_get_owner
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1047,1
    - Dst: pgaio_io_get_target_data
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1054,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - ioh
    argTypes:
    - PgAioHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1068
    functionName: inj_io_completion_wait_matches
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - pgaio_io_get_owner
    - GetPGProcByNumber
    - pgaio_io_get_target_data
    linkageType: ''
    returnType: bool
    signature: bool inj_io_completion_wait_matches(PgAioHandle *ioh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inj_io_completion_wait_matches
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1075,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1078,1
    - Dst: inj_io_completion_wait_matches
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1082,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1085,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1089,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1070
    functionDepth: 2
    functionLinenumber: 1070
    functionLinenumberEnd: 1090
    functionName: inj_io_completion_wait_hook
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - ConditionVariableSleep
    - ConditionVariableCancelSleep
    - ConditionVariablePrepareToSleep
    - inj_io_completion_wait_matches
    linkageType: ''
    returnType: void
    signature: void inj_io_completion_wait_hook(const char *name, const void *private_data,
      void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1097,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1098,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1100,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1100,1
    - Dst: inj_io_short_read_matches
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1102,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1109,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1110,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1112,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1112,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1132,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1092
    functionDepth: 2
    functionLinenumber: 1092
    functionLinenumberEnd: 1143
    functionName: inj_io_short_read_hook
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - errhidestmt
    - ereport
    - errhidecontext
    - memset
    - errmsg
    - inj_io_short_read_matches
    linkageType: ''
    returnType: void
    signature: void inj_io_short_read_hook(const char *name, const void *private_data,
      void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inj_io_completion_wait_hook
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1148,1
    - Dst: inj_io_short_read_hook
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1145
    functionDepth: 3
    functionLinenumber: 1145
    functionLinenumberEnd: 1150
    functionName: inj_io_completion_hook
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - inj_io_completion_wait_hook
    - inj_io_short_read_hook
    linkageType: ''
    returnType: void
    signature: void inj_io_completion_hook(const char *name, const void *private_data,
      void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1155,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1156,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1158,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1158,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1152
    functionDepth: 1
    functionLinenumber: 1152
    functionLinenumberEnd: 1162
    functionName: inj_io_reopen
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - errhidestmt
    - ereport
    - errhidecontext
    - errmsg
    linkageType: ''
    returnType: void
    signature: void inj_io_reopen(const char *name, const void *private_data, void
      *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1172,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1172,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1174,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1174,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1176,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1176,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1178,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1166
    functionDepth: 1
    functionLinenumber: 1166
    functionLinenumberEnd: 1182
    functionName: inj_io_completion_wait
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - PG_ARGISNULL
    - PG_GETARG_UINT32
    - PG_GETARG_OID
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum inj_io_completion_wait(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1193,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1195,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1185
    functionDepth: 1
    functionLinenumber: 1185
    functionLinenumberEnd: 1199
    functionName: inj_io_completion_continue
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - ConditionVariableBroadcast
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum inj_io_completion_continue(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1207,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1209,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1211,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1211,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1213,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1213,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1215,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1202
    functionDepth: 1
    functionLinenumber: 1202
    functionLinenumberEnd: 1219
    functionName: inj_io_short_read_attach
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - PG_ARGISNULL
    - PG_GETARG_OID
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum inj_io_short_read_attach(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1228,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1222
    functionDepth: 1
    functionLinenumber: 1222
    functionLinenumberEnd: 1231
    functionName: inj_io_short_read_detach
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum inj_io_short_read_detach(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1240,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1234
    functionDepth: 1
    functionLinenumber: 1234
    functionLinenumberEnd: 1244
    functionName: inj_io_reopen_attach
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum inj_io_reopen_attach(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1253,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:1255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1247
    functionDepth: 1
    functionLinenumber: 1247
    functionLinenumberEnd: 1256
    functionName: inj_io_reopen_detach
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum inj_io_reopen_detach(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:107,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:109,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:111,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - str
    - len
    argTypes:
    - PQExpBuffer
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 116
    functionName: escapify
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBuffer
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void escapify(PQExpBuffer buf, const char *str, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:141,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:144,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 6
    argNames:
    - tc
    - success
    - testname
    - details
    - subname
    - resultdesc
    argTypes:
    - pe_test_config*
    - bool
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 149
    functionName: report_result
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: "void report_result(pe_test_config *tc,\n\t\t\t  bool success,\n\t\t\t
      \ const char *testname,\n\t\t\t  const char *details,\n\t\t\t  const char *subname,\n\t\t\t
      \ const char *resultdesc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 165
    functionName: encoding_conflicts_ascii
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool encoding_conflicts_ascii(int encoding)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:187,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:188,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:192,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:193,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:194,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:195,1
    - Dst: PQsetClientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:198,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:199,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:199,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:203,1
    - Dst: pg_free
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - tc
    argTypes:
    - pe_test_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 205
    functionName: test_gb18030_page_multiple
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - PQsetClientEncoding
    - appendPQExpBufferStr
    - memset
    - destroyPQExpBuffer
    - report_result
    - pg_free
    - PQescapeLiteral
    - pg_malloc
    - appendPQExpBuffer
    - createPQExpBuffer
    - escapify
    linkageType: ''
    returnType: void
    signature: void test_gb18030_page_multiple(pe_test_config *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:224,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:225,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:226,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:227,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:231,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:232,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:233,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:234,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:237,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:239,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:240,1
    - Dst: json_errdetail
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:242,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:244,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:245,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - tc
    argTypes:
    - pe_test_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 247
    functionName: test_gb18030_json
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - freeJsonLexContext
    - appendBinaryPQExpBuffer
    - json_errdetail
    - makeJsonLexContextCstringLen
    - VALGRIND_MAKE_MEM_NOACCESS
    - pg_parse_json
    - destroyPQExpBuffer
    - report_result
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - createPQExpBuffer
    - escapify
    linkageType: ''
    returnType: void
    signature: void test_gb18030_json(pe_test_config *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:257,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:260,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:260,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:267,1
    - Dst: PQfreemem
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - conn
    - target
    - unescaped
    - unescaped_len
    - escape_err
    argTypes:
    - PGconn*
    - PQExpBuffer
    - char*
    - size_t
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 271
    functionName: escape_literal
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - PQfreemem
    - PQerrorMessage
    - PQescapeLiteral
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: "bool escape_literal(PGconn *conn, PQExpBuffer target,\n\t\t\t   const
      char *unescaped, size_t unescaped_len,\n\t\t\t   PQExpBuffer escape_err)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:280,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:283,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:283,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:290,1
    - Dst: PQfreemem
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - conn
    - target
    - unescaped
    - unescaped_len
    - escape_err
    argTypes:
    - PGconn*
    - PQExpBuffer
    - char*
    - size_t
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 294
    functionName: escape_identifier
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - PQfreemem
    - PQerrorMessage
    - appendPQExpBufferStr
    - PQescapeIdentifier
    linkageType: ''
    returnType: bool
    signature: "bool escape_identifier(PGconn *conn, PQExpBuffer target,\n\t\t\t\t
      \ const char *unescaped, size_t unescaped_len,\n\t\t\t\t  PQExpBuffer escape_err)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:304,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:305,1
    - Dst: PQescapeStringConn
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:306,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:311,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:315,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 5
    argNames:
    - conn
    - target
    - unescaped
    - unescaped_len
    - escape_err
    argTypes:
    - PGconn*
    - PQExpBuffer
    - char*
    - size_t
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 324
    functionName: escape_string_conn
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - PQescapeStringConn
    - enlargePQExpBuffer
    - appendPQExpBufferChar
    - PQerrorMessage
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: "bool escape_string_conn(PGconn *conn, PQExpBuffer target,\n\t\t\t\t
      \  const char *unescaped, size_t unescaped_len,\n\t\t\t\t   PQExpBuffer escape_err)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:333,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:334,1
    - Dst: PQescapeString
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:335,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - conn
    - target
    - unescaped
    - unescaped_len
    - escape_err
    argTypes:
    - PGconn*
    - PQExpBuffer
    - char*
    - size_t
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 342
    functionName: escape_string
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 3
    functionsReached:
    - appendPQExpBufferChar
    - PQescapeString
    - enlargePQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool escape_string(PGconn *conn, PQExpBuffer target,\n\t\t\t  const
      char *unescaped, size_t unescaped_len,\n\t\t\t  PQExpBuffer escape_err)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:356,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:364,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:367,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - conn
    - target
    - unescaped
    - unescaped_len
    - escape_err
    argTypes:
    - PGconn*
    - PQExpBuffer
    - char*
    - size_t
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 373
    functionName: escape_replace
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: "bool escape_replace(PGconn *conn, PQExpBuffer target,\n\t\t\t   const
      char *unescaped, size_t unescaped_len,\n\t\t\t   PQExpBuffer escape_err)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringLiteral
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:380,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - conn
    - target
    - unescaped
    - unescaped_len
    - escape_err
    argTypes:
    - PGconn*
    - PQExpBuffer
    - char*
    - size_t
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 383
    functionName: escape_append_literal
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - appendStringLiteral
    - PQclientEncoding
    linkageType: ''
    returnType: bool
    signature: "bool escape_append_literal(PGconn *conn, PQExpBuffer target,\n\t\t\t\t\t
      \ const char *unescaped, size_t unescaped_len,\n\t\t\t\t\t  PQExpBuffer escape_err)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setFmtEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:390,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:390,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:391,1
    - Dst: fmtId
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - conn
    - target
    - unescaped
    - unescaped_len
    - escape_err
    argTypes:
    - PGconn*
    - PQExpBuffer
    - char*
    - size_t
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 394
    functionName: escape_fmt_id
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - fmtId
    - setFmtEncoding
    - appendPQExpBufferStr
    - PQclientEncoding
    linkageType: ''
    returnType: bool
    signature: "bool escape_fmt_id(PGconn *conn, PQExpBuffer target,\n\t\t\t  const
      char *unescaped, size_t unescaped_len,\n\t\t\t  PQExpBuffer escape_err)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - enc
    - ','
    - string
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 444
    functionName: TV
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TV(enc, string)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - enc
    - ','
    - string
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 445
    functionName: TV_LEN
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TV_LEN(enc, string, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TOSTR_CASE
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:559,1
    - Dst: TOSTR_CASE
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:560,1
    - Dst: TOSTR_CASE
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:561,1
    - Dst: TOSTR_CASE
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:562,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:565,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - res
    argTypes:
    - PsqlScanResult
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 567
    functionName: scan_res_s
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - pg_unreachable
    - TOSTR_CASE
    linkageType: ''
    returnType: char
    signature: 'char *

      scan_res_s(PsqlScanResult res)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sym
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 556
    functionName: TOSTR_CASE
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TOSTR_CASE(sym)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:586,1
    - Dst: psql_scan_create
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:588,1
    - Dst: psql_scan_setup
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:594,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:595,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:599,1
    - Dst: psql_scan
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:601,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:604,1
    - Dst: scan_res_s
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:606,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:607,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:608,1
    - Dst: psql_scan_destroy
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:614,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:615,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:626,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - tc
    - testname
    - input_buf
    - details
    argTypes:
    - pe_test_config*
    - PQExpBuffer
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 574
    functionDepth: 2
    functionLinenumber: 574
    functionLinenumberEnd: 629
    functionName: test_psql_parse
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - psql_scan_setup
    - psql_scan
    - scan_res_s
    - PQclientEncoding
    - resetPQExpBuffer
    - destroyPQExpBuffer
    - report_result
    - appendPQExpBufferChar
    - psql_scan_destroy
    - appendPQExpBuffer
    - psql_scan_create
    - createPQExpBuffer
    - escapify
    linkageType: ''
    returnType: void
    signature: "void test_psql_parse(pe_test_config *tc, PQExpBuffer testname,\n\t\t\t\tPQExpBuffer
      input_buf, PQExpBuffer details)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:647,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:648,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:649,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:650,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:651,1
    - Dst: encoding_conflicts_ascii
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:654,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:654,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:660,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:661,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:662,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:666,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:668,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:669,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:670,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:675,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:675,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:679,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:682,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:682,1
    - Dst: strnlen
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:684,1
    - Dst: strnlen
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:685,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:686,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:689,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:709,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:717,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:719,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:725,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:726,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:728,1
    - Dst: pe_test_escape_func*::escape
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:733,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:738,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:746,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:747,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:748,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:750,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:750,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:755,1
    - Dst: strstr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:763,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:764,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:807,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:837,1
    - Dst: test_psql_parse
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:848,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:853,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:854,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:855,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:856,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:857,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 94
    argCount: 3
    argNames:
    - tc
    - tv
    - ef
    argTypes:
    - pe_test_config*
    - pe_test_vector*
    - pe_test_escape_func*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 631
    functionDepth: 3
    functionLinenumber: 631
    functionLinenumberEnd: 858
    functionName: test_one_vector_escape
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - appendBinaryPQExpBuffer
    - strnlen
    - encoding_conflicts_ascii
    - test_psql_parse
    - VALGRIND_MAKE_MEM_NOACCESS
    - appendPQExpBufferStr
    - strstr
    - PQclientEncoding
    - pg_encoding_verifymbstr
    - destroyPQExpBuffer
    - pe_test_escape_func*::escape
    - report_result
    - appendPQExpBufferChar
    - appendPQExpBuffer
    - createPQExpBuffer
    - escapify
    linkageType: ''
    returnType: void
    signature: void test_one_vector_escape(pe_test_config *tc, const pe_test_vector
      *tv, const pe_test_escape_func *ef)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQsetClientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:863,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:865,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:866,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:867,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:870,1
    - Dst: test_one_vector_escape
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:874,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - tc
    - tv
    argTypes:
    - pe_test_config*
    - pe_test_vector*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 860
    functionDepth: 4
    functionLinenumber: 860
    functionLinenumberEnd: 876
    functionName: test_one_vector
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - PQsetClientEncoding
    - exit
    - test_one_vector_escape
    - PQerrorMessage
    - lengthof
    - fprintf
    linkageType: ''
    returnType: void
    signature: void test_one_vector(pe_test_config *tc, const pe_test_vector *tv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:882,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:884,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:898,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hint
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 899
    functionName: usage
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 25
    functionsReached:
    - exit
    - printf
    - fprintf
    linkageType: ''
    returnType: void
    signature: void usage(const char *hint)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getopt_long
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:917,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:922,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:923,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:941,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:944,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:946,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:948,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:950,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:951,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:952,1
    - Dst: test_gb18030_page_multiple
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:955,1
    - Dst: test_gb18030_json
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:956,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:958,1
    - Dst: test_one_vector
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:960,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:963,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:965,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:966,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 901
    functionDepth: 5
    functionLinenumber: 901
    functionLinenumberEnd: 968
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 4
    functionsReached:
    - PQconnectdb
    - test_gb18030_json
    - PQerrorMessage
    - getopt_long
    - PQfinish
    - test_gb18030_page_multiple
    - test_one_vector
    - printf
    - usage
    - exit
    - fprintf
    - lengthof
    - PQstatus
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 57
    functionName: test_shmem_request
    functionSourceFile: /src/postgres/src/test/modules/test_shmem/test_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void test_shmem_request(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:62,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:64,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 70
    functionName: test_shmem_init
    functionSourceFile: /src/postgres/src/test/modules/test_shmem/test_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void test_shmem_init(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:75,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:77,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 83
    functionName: test_shmem_attach
    functionSourceFile: /src/postgres/src/test/modules/test_shmem/test_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void test_shmem_attach(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:88,1
    - Dst: RegisterShmemCallbacks
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 90
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_shmem/test_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    - RegisterShmemCallbacks
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:97,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:99,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_shmem/test_shmem.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 101
    functionName: get_test_shmem_attach_count
    functionSourceFile: /src/postgres/src/test/modules/test_shmem/test_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum get_test_shmem_attach_count(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - b
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 40
    functionName: flag
    functionSourceFile: /src/postgres/src/test/locale/test-ctype.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      flag(int b)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toupper
      Src: /src/postgres/src/test/locale/test-ctype.c:46,1
    - Dst: tolower
      Src: /src/postgres/src/test/locale/test-ctype.c:47,1
    - Dst: isprint
      Src: /src/postgres/src/test/locale/test-ctype.c:49,1
    - Dst: isprint
      Src: /src/postgres/src/test/locale/test-ctype.c:51,1
    - Dst: isprint
      Src: /src/postgres/src/test/locale/test-ctype.c:53,1
    - Dst: printf
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: isalnum
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: isalpha
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: iscntrl
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: isdigit
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: islower
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: isgraph
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: isprint
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: ispunct
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: isspace
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: isupper
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: flag
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    - Dst: isxdigit
      Src: /src/postgres/src/test/locale/test-ctype.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 57
    functionName: describe_char
    functionSourceFile: /src/postgres/src/test/locale/test-ctype.c
    functionUses: 0
    functionsReached:
    - islower
    - flag
    - isalnum
    - tolower
    - isalpha
    - isdigit
    - ispunct
    - isupper
    - isspace
    - isxdigit
    - iscntrl
    - printf
    - toupper
    - isgraph
    - isprint
    linkageType: ''
    returnType: void
    signature: void describe_char(int c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setlocale
      Src: /src/postgres/src/test/locale/test-ctype.c:65,1
    - Dst: fprintf
      Src: /src/postgres/src/test/locale/test-ctype.c:67,1
    - Dst: fprintf
      Src: /src/postgres/src/test/locale/test-ctype.c:70,1
    - Dst: printf
      Src: /src/postgres/src/test/locale/test-ctype.c:74,1
    - Dst: describe_char
      Src: /src/postgres/src/test/locale/test-ctype.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 79
    functionName: main
    functionSourceFile: /src/postgres/src/test/locale/test-ctype.c
    functionUses: 4
    functionsReached:
    - describe_char
    - setlocale
    - printf
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq3.c:49,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlibpq3.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 51
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/test/examples/testlibpq3.c
    functionUses: 28
    functionsReached:
    - exit
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void exit_nicely(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfnumber
      Src: /src/postgres/src/test/examples/testlibpq3.c:68,1
    - Dst: PQfnumber
      Src: /src/postgres/src/test/examples/testlibpq3.c:69,1
    - Dst: PQfnumber
      Src: /src/postgres/src/test/examples/testlibpq3.c:70,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/examples/testlibpq3.c:72,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/examples/testlibpq3.c:81,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/examples/testlibpq3.c:82,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/examples/testlibpq3.c:83,1
    - Dst: ntohl
      Src: /src/postgres/src/test/examples/testlibpq3.c:89,1
    - Dst: PQgetlength
      Src: /src/postgres/src/test/examples/testlibpq3.c:99,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:101,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:102,1
    - Dst: PQgetlength
      Src: /src/postgres/src/test/examples/testlibpq3.c:103,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:104,1
    - Dst: PQgetlength
      Src: /src/postgres/src/test/examples/testlibpq3.c:105,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:106,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:108,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 111
    functionName: show_binary_results
    functionSourceFile: /src/postgres/src/test/examples/testlibpq3.c
    functionUses: 0
    functionsReached:
    - PQgetvalue
    - printf
    - PQgetlength
    - PQfnumber
    - PQntuples
    - ntohl
    linkageType: ''
    returnType: void
    signature: void show_binary_results(PGresult *res)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/examples/testlibpq3.c:135,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/examples/testlibpq3.c:138,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq3.c:140,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq3.c:140,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq3.c:141,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq3.c:145,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq3.c:146,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq3.c:148,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq3.c:148,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:149,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq3.c:150,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:152,1
    - Dst: PQexecParams
      Src: /src/postgres/src/test/examples/testlibpq3.c:168,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq3.c:177,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq3.c:179,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq3.c:179,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:180,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq3.c:181,1
    - Dst: show_binary_results
      Src: /src/postgres/src/test/examples/testlibpq3.c:184,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:186,1
    - Dst: htonl
      Src: /src/postgres/src/test/examples/testlibpq3.c:199,1
    - Dst: PQexecParams
      Src: /src/postgres/src/test/examples/testlibpq3.c:206,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq3.c:215,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq3.c:217,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq3.c:217,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:218,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq3.c:219,1
    - Dst: show_binary_results
      Src: /src/postgres/src/test/examples/testlibpq3.c:222,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:224,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq3.c:227,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 230
    functionName: main
    functionSourceFile: /src/postgres/src/test/examples/testlibpq3.c
    functionUses: 4
    functionsReached:
    - PQstatus
    - PQconnectdb
    - PQclear
    - PQexecParams
    - PQexec
    - PQfinish
    - show_binary_results
    - PQresultStatus
    - PQerrorMessage
    - htonl
    - exit_nicely
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/test/examples/testlo.c:46,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:49,1
    - Dst: lo_creat
      Src: /src/postgres/src/test/examples/testlo.c:55,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:57,1
    - Dst: lo_open
      Src: /src/postgres/src/test/examples/testlo.c:59,1
    - Dst: read
      Src: /src/postgres/src/test/examples/testlo.c:64,1
    - Dst: lo_write
      Src: /src/postgres/src/test/examples/testlo.c:66,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:68,1
    - Dst: close
      Src: /src/postgres/src/test/examples/testlo.c:71,1
    - Dst: lo_close
      Src: /src/postgres/src/test/examples/testlo.c:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - filename
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 75
    functionName: importFile
    functionSourceFile: /src/postgres/src/test/examples/testlo.c
    functionUses: 0
    functionsReached:
    - lo_write
    - lo_creat
    - lo_open
    - close
    - open
    - lo_close
    - fprintf
    - read
    linkageType: ''
    returnType: Oid
    signature: Oid importFile(PGconn *conn, char *filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_open
      Src: /src/postgres/src/test/examples/testlo.c:85,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:87,1
    - Dst: lo_lseek
      Src: /src/postgres/src/test/examples/testlo.c:89,1
    - Dst: malloc
      Src: /src/postgres/src/test/examples/testlo.c:90,1
    - Dst: lo_read
      Src: /src/postgres/src/test/examples/testlo.c:95,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:97,1
    - Dst: free
      Src: /src/postgres/src/test/examples/testlo.c:102,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:103,1
    - Dst: lo_close
      Src: /src/postgres/src/test/examples/testlo.c:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - conn
    - lobjId
    - start
    - len
    argTypes:
    - PGconn*
    - Oid
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 105
    functionName: pickout
    functionSourceFile: /src/postgres/src/test/examples/testlo.c
    functionUses: 0
    functionsReached:
    - lo_read
    - lo_lseek
    - malloc
    - free
    - lo_open
    - lo_close
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pickout(PGconn *conn, Oid lobjId, int start, int len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_open
      Src: /src/postgres/src/test/examples/testlo.c:116,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:118,1
    - Dst: lo_lseek
      Src: /src/postgres/src/test/examples/testlo.c:120,1
    - Dst: malloc
      Src: /src/postgres/src/test/examples/testlo.c:121,1
    - Dst: lo_write
      Src: /src/postgres/src/test/examples/testlo.c:130,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:134,1
    - Dst: free
      Src: /src/postgres/src/test/examples/testlo.c:138,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:139,1
    - Dst: lo_close
      Src: /src/postgres/src/test/examples/testlo.c:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - conn
    - lobjId
    - start
    - len
    argTypes:
    - PGconn*
    - Oid
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 141
    functionName: overwrite
    functionSourceFile: /src/postgres/src/test/examples/testlo.c
    functionUses: 0
    functionsReached:
    - lo_write
    - lo_lseek
    - malloc
    - free
    - lo_open
    - lo_close
    - fprintf
    linkageType: ''
    returnType: void
    signature: void overwrite(PGconn *conn, Oid lobjId, int start, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lo_open
      Src: /src/postgres/src/test/examples/testlo.c:161,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:163,1
    - Dst: open
      Src: /src/postgres/src/test/examples/testlo.c:168,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:171,1
    - Dst: lo_read
      Src: /src/postgres/src/test/examples/testlo.c:178,1
    - Dst: write
      Src: /src/postgres/src/test/examples/testlo.c:180,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:183,1
    - Dst: lo_close
      Src: /src/postgres/src/test/examples/testlo.c:188,1
    - Dst: close
      Src: /src/postgres/src/test/examples/testlo.c:189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - conn
    - lobjId
    - filename
    argTypes:
    - PGconn*
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 190
    functionName: exportFile
    functionSourceFile: /src/postgres/src/test/examples/testlo.c
    functionUses: 0
    functionsReached:
    - lo_read
    - open
    - write
    - close
    - lo_open
    - lo_close
    - fprintf
    linkageType: ''
    returnType: void
    signature: void exportFile(PGconn *conn, Oid lobjId, char *filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlo.c:195,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlo.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 197
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/test/examples/testlo.c
    functionUses: 29
    functionsReached:
    - exit
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void exit_nicely(PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:211,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlo.c:213,1
    - Dst: PQsetdb
      Src: /src/postgres/src/test/examples/testlo.c:223,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/examples/testlo.c:226,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:228,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo.c:228,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlo.c:229,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlo.c:233,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlo.c:235,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:237,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo.c:237,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlo.c:238,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlo.c:239,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlo.c:241,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlo.c:243,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlo.c:244,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo.c:245,1
    - Dst: lo_import
      Src: /src/postgres/src/test/examples/testlo.c:247,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:249,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo.c:249,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo.c:252,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo.c:254,1
    - Dst: pickout
      Src: /src/postgres/src/test/examples/testlo.c:255,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo.c:257,1
    - Dst: overwrite
      Src: /src/postgres/src/test/examples/testlo.c:258,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo.c:260,1
    - Dst: lo_export
      Src: /src/postgres/src/test/examples/testlo.c:262,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo.c:263,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo.c:263,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlo.c:266,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlo.c:267,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlo.c:268,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 270
    functionName: main
    functionSourceFile: /src/postgres/src/test/examples/testlo.c
    functionUses: 4
    functionsReached:
    - PQstatus
    - PQclear
    - PQexec
    - overwrite
    - PQerrorMessage
    - lo_export
    - exit_nicely
    - lo_import
    - PQfinish
    - pickout
    - printf
    - PQresultStatus
    - exit
    - fprintf
    - PQsetdb
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq4.c:18,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq4.c:20,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlibpq4.c:21,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn1
    - conn2
    argTypes:
    - PGconn*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 22
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/test/examples/testlibpq4.c
    functionUses: 30
    functionsReached:
    - exit
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void exit_nicely(PGconn *conn1, PGconn *conn2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQstatus
      Src: /src/postgres/src/test/examples/testlibpq4.c:30,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq4.c:32,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq4.c:32,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlibpq4.c:33,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq4.c:37,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq4.c:39,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq4.c:41,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq4.c:41,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:42,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlibpq4.c:43,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - dbName
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 46
    functionName: check_prepare_conn
    functionSourceFile: /src/postgres/src/test/examples/testlibpq4.c
    functionUses: 0
    functionsReached:
    - PQstatus
    - PQclear
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void check_prepare_conn(PGconn *conn, const char *dbName)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq4.c:71,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq4.c:72,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlibpq4.c:73,1
    - Dst: PQsetdb
      Src: /src/postgres/src/test/examples/testlibpq4.c:92,1
    - Dst: check_prepare_conn
      Src: /src/postgres/src/test/examples/testlibpq4.c:93,1
    - Dst: PQsetdb
      Src: /src/postgres/src/test/examples/testlibpq4.c:95,1
    - Dst: check_prepare_conn
      Src: /src/postgres/src/test/examples/testlibpq4.c:96,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq4.c:99,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq4.c:100,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq4.c:102,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:103,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq4.c:104,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:111,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq4.c:116,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq4.c:117,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq4.c:119,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:120,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq4.c:121,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:123,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq4.c:125,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq4.c:126,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq4.c:128,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:129,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq4.c:130,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/examples/testlibpq4.c:134,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq4.c:136,1
    - Dst: PQfname
      Src: /src/postgres/src/test/examples/testlibpq4.c:136,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq4.c:137,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/examples/testlibpq4.c:140,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq4.c:143,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/examples/testlibpq4.c:143,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq4.c:144,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:147,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq4.c:150,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:151,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq4.c:154,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq4.c:155,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq4.c:158,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq4.c:159,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 53
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 163
    functionName: main
    functionSourceFile: /src/postgres/src/test/examples/testlibpq4.c
    functionUses: 4
    functionsReached:
    - PQfname
    - PQnfields
    - PQclear
    - PQexec
    - exit_nicely
    - PQfinish
    - PQgetvalue
    - check_prepare_conn
    - printf
    - PQntuples
    - PQresultStatus
    - exit
    - fprintf
    - PQsetdb
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq.c:16,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlibpq.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 18
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/test/examples/testlibpq.c
    functionUses: 31
    functionsReached:
    - exit
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void exit_nicely(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/examples/testlibpq.c:41,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/examples/testlibpq.c:44,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq.c:46,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq.c:46,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq.c:47,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq.c:51,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq.c:53,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq.c:55,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq.c:55,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:56,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq.c:57,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:64,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq.c:74,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq.c:75,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq.c:77,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq.c:77,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:78,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq.c:79,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:81,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq.c:86,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq.c:87,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq.c:89,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq.c:89,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:90,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq.c:91,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:93,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq.c:95,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq.c:96,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq.c:98,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq.c:98,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:99,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq.c:100,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/examples/testlibpq.c:104,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq.c:106,1
    - Dst: PQfname
      Src: /src/postgres/src/test/examples/testlibpq.c:106,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq.c:107,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/examples/testlibpq.c:110,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq.c:113,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/examples/testlibpq.c:113,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq.c:114,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:117,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq.c:120,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:121,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq.c:124,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq.c:125,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq.c:128,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 131
    functionName: main
    functionSourceFile: /src/postgres/src/test/examples/testlibpq.c
    functionUses: 4
    functionsReached:
    - PQstatus
    - PQfname
    - PQconnectdb
    - PQnfields
    - PQclear
    - PQexec
    - PQfinish
    - PQgetvalue
    - PQntuples
    - printf
    - PQresultStatus
    - PQerrorMessage
    - exit_nicely
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq2.c:44,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlibpq2.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/test/examples/testlibpq2.c
    functionUses: 32
    functionsReached:
    - exit
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void exit_nicely(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/examples/testlibpq2.c:68,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/examples/testlibpq2.c:71,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq2.c:73,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq2.c:73,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq2.c:74,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq2.c:78,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq2.c:80,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq2.c:82,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq2.c:82,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq2.c:83,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq2.c:84,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq2.c:91,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq2.c:96,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq2.c:97,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq2.c:99,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq2.c:99,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq2.c:100,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq2.c:101,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq2.c:103,1
    - Dst: PQsocket
      Src: /src/postgres/src/test/examples/testlibpq2.c:117,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/examples/testlibpq2.c:122,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/examples/testlibpq2.c:123,1
    - Dst: select
      Src: /src/postgres/src/test/examples/testlibpq2.c:125,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq2.c:127,1
    - Dst: strerror
      Src: /src/postgres/src/test/examples/testlibpq2.c:127,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq2.c:128,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/examples/testlibpq2.c:132,1
    - Dst: PQnotifies
      Src: /src/postgres/src/test/examples/testlibpq2.c:133,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq2.c:135,1
    - Dst: PQfreemem
      Src: /src/postgres/src/test/examples/testlibpq2.c:138,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/examples/testlibpq2.c:140,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq2.c:144,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq2.c:147,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 150
    functionName: main
    functionSourceFile: /src/postgres/src/test/examples/testlibpq2.c
    functionUses: 4
    functionsReached:
    - PQstatus
    - PQconnectdb
    - PQclear
    - strerror
    - PQexec
    - PQnotifies
    - PQconsumeInput
    - select
    - PQfinish
    - FD_ZERO
    - PQsocket
    - FD_SET
    - PQresultStatus
    - PQfreemem
    - PQerrorMessage
    - exit_nicely
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/test/examples/testlo64.c:47,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:50,1
    - Dst: lo_creat
      Src: /src/postgres/src/test/examples/testlo64.c:56,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:58,1
    - Dst: lo_open
      Src: /src/postgres/src/test/examples/testlo64.c:60,1
    - Dst: read
      Src: /src/postgres/src/test/examples/testlo64.c:65,1
    - Dst: lo_write
      Src: /src/postgres/src/test/examples/testlo64.c:67,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:69,1
    - Dst: close
      Src: /src/postgres/src/test/examples/testlo64.c:72,1
    - Dst: lo_close
      Src: /src/postgres/src/test/examples/testlo64.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - filename
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 76
    functionName: importFile
    functionSourceFile: /src/postgres/src/test/examples/testlo64.c
    functionUses: 0
    functionsReached:
    - lo_write
    - lo_creat
    - lo_open
    - close
    - open
    - lo_close
    - fprintf
    - read
    linkageType: ''
    returnType: Oid
    signature: Oid importFile(PGconn *conn, char *filename)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lo_open
      Src: /src/postgres/src/test/examples/testlo64.c:86,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:88,1
    - Dst: lo_lseek64
      Src: /src/postgres/src/test/examples/testlo64.c:90,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:91,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo64.c:91,1
    - Dst: lo_tell64
      Src: /src/postgres/src/test/examples/testlo64.c:93,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:94,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo64.c:94,1
    - Dst: malloc
      Src: /src/postgres/src/test/examples/testlo64.c:96,1
    - Dst: lo_read
      Src: /src/postgres/src/test/examples/testlo64.c:101,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:103,1
    - Dst: free
      Src: /src/postgres/src/test/examples/testlo64.c:108,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:109,1
    - Dst: lo_close
      Src: /src/postgres/src/test/examples/testlo64.c:110,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - conn
    - lobjId
    - start
    - len
    argTypes:
    - PGconn*
    - Oid
    - int64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 111
    functionName: pickout
    functionSourceFile: /src/postgres/src/test/examples/testlo64.c
    functionUses: 1
    functionsReached:
    - lo_read
    - lo_close
    - lo_lseek64
    - malloc
    - free
    - lo_open
    - lo_tell64
    - PQerrorMessage
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pickout(PGconn *conn, Oid lobjId, int64_t start, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lo_open
      Src: /src/postgres/src/test/examples/testlo64.c:122,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:124,1
    - Dst: lo_lseek64
      Src: /src/postgres/src/test/examples/testlo64.c:126,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:127,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo64.c:127,1
    - Dst: malloc
      Src: /src/postgres/src/test/examples/testlo64.c:129,1
    - Dst: lo_write
      Src: /src/postgres/src/test/examples/testlo64.c:138,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:142,1
    - Dst: free
      Src: /src/postgres/src/test/examples/testlo64.c:146,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:147,1
    - Dst: lo_close
      Src: /src/postgres/src/test/examples/testlo64.c:148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - conn
    - lobjId
    - start
    - len
    argTypes:
    - PGconn*
    - Oid
    - int64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 149
    functionName: overwrite
    functionSourceFile: /src/postgres/src/test/examples/testlo64.c
    functionUses: 1
    functionsReached:
    - lo_write
    - lo_close
    - lo_lseek64
    - malloc
    - free
    - lo_open
    - PQerrorMessage
    - fprintf
    linkageType: ''
    returnType: void
    signature: void overwrite(PGconn *conn, Oid lobjId, int64_t start, int len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_open
      Src: /src/postgres/src/test/examples/testlo64.c:156,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:158,1
    - Dst: lo_truncate64
      Src: /src/postgres/src/test/examples/testlo64.c:160,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:161,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo64.c:161,1
    - Dst: lo_close
      Src: /src/postgres/src/test/examples/testlo64.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - conn
    - lobjId
    - len
    argTypes:
    - PGconn*
    - Oid
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 164
    functionName: my_truncate
    functionSourceFile: /src/postgres/src/test/examples/testlo64.c
    functionUses: 0
    functionsReached:
    - lo_close
    - lo_truncate64
    - lo_open
    - PQerrorMessage
    - fprintf
    linkageType: ''
    returnType: void
    signature: void my_truncate(PGconn *conn, Oid lobjId, int64_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lo_open
      Src: /src/postgres/src/test/examples/testlo64.c:184,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:186,1
    - Dst: open
      Src: /src/postgres/src/test/examples/testlo64.c:191,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:194,1
    - Dst: lo_read
      Src: /src/postgres/src/test/examples/testlo64.c:201,1
    - Dst: write
      Src: /src/postgres/src/test/examples/testlo64.c:203,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:206,1
    - Dst: lo_close
      Src: /src/postgres/src/test/examples/testlo64.c:211,1
    - Dst: close
      Src: /src/postgres/src/test/examples/testlo64.c:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - conn
    - lobjId
    - filename
    argTypes:
    - PGconn*
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 213
    functionName: exportFile
    functionSourceFile: /src/postgres/src/test/examples/testlo64.c
    functionUses: 0
    functionsReached:
    - lo_read
    - open
    - write
    - close
    - lo_open
    - lo_close
    - fprintf
    linkageType: ''
    returnType: void
    signature: void exportFile(PGconn *conn, Oid lobjId, char *filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlo64.c:218,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlo64.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 220
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/test/examples/testlo64.c
    functionUses: 33
    functionsReached:
    - exit
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void exit_nicely(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:235,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlo64.c:237,1
    - Dst: PQsetdb
      Src: /src/postgres/src/test/examples/testlo64.c:248,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/examples/testlo64.c:251,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:253,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo64.c:253,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlo64.c:254,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlo64.c:258,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlo64.c:260,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:262,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo64.c:262,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlo64.c:263,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlo64.c:264,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlo64.c:266,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlo64.c:268,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlo64.c:269,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo64.c:270,1
    - Dst: lo_import
      Src: /src/postgres/src/test/examples/testlo64.c:272,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:274,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo64.c:274,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo64.c:277,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo64.c:279,1
    - Dst: pickout
      Src: /src/postgres/src/test/examples/testlo64.c:280,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo64.c:282,1
    - Dst: overwrite
      Src: /src/postgres/src/test/examples/testlo64.c:283,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo64.c:285,1
    - Dst: lo_export
      Src: /src/postgres/src/test/examples/testlo64.c:287,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:288,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo64.c:288,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo64.c:290,1
    - Dst: my_truncate
      Src: /src/postgres/src/test/examples/testlo64.c:291,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlo64.c:293,1
    - Dst: lo_export
      Src: /src/postgres/src/test/examples/testlo64.c:294,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlo64.c:295,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlo64.c:295,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlo64.c:298,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlo64.c:299,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlo64.c:300,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 302
    functionName: main
    functionSourceFile: /src/postgres/src/test/examples/testlo64.c
    functionUses: 4
    functionsReached:
    - my_truncate
    - PQstatus
    - PQclear
    - PQexec
    - overwrite
    - PQerrorMessage
    - lo_export
    - exit_nicely
    - lo_import
    - PQfinish
    - pickout
    - printf
    - PQresultStatus
    - exit
    - fprintf
    - PQsetdb
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/test/isolation/isolationtester.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: disconnect_atexit
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 0
    functionsReached:
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void disconnect_atexit(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/postgres/src/test/isolation/isolationtester.c:97,1
    - Dst: puts
      Src: /src/postgres/src/test/isolation/isolationtester.c:102,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:103,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:105,1
    - Dst: setbuf
      Src: /src/postgres/src/test/isolation/isolationtester.c:114,1
    - Dst: setbuf
      Src: /src/postgres/src/test/isolation/isolationtester.c:115,1
    - Dst: getenv
      Src: /src/postgres/src/test/isolation/isolationtester.c:132,1
    - Dst: atoi
      Src: /src/postgres/src/test/isolation/isolationtester.c:134,1
    - Dst: spec_yyparse
      Src: /src/postgres/src/test/isolation/isolationtester.c:137,1
    - Dst: check_testspec
      Src: /src/postgres/src/test/isolation/isolationtester.c:141,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:143,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/test/isolation/isolationtester.c:150,1
    - Dst: atexit
      Src: /src/postgres/src/test/isolation/isolationtester.c:151,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/isolation/isolationtester.c:164,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:165,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:167,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:168,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:169,1
    - Dst: PQsetNoticeProcessor
      Src: /src/postgres/src/test/isolation/isolationtester.c:179,1
    - Dst: PQsetNoticeProcessor
      Src: /src/postgres/src/test/isolation/isolationtester.c:183,1
    - Dst: PQexecParams
      Src: /src/postgres/src/test/isolation/isolationtester.c:193,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:200,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:202,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:203,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:204,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/test/isolation/isolationtester.c:208,1
    - Dst: psprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:209,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/test/isolation/isolationtester.c:220,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/isolation/isolationtester.c:221,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/isolation/isolationtester.c:224,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/isolation/isolationtester.c:226,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/isolation/isolationtester.c:227,1
    - Dst: PQprepare
      Src: /src/postgres/src/test/isolation/isolationtester.c:229,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:230,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:232,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:233,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:234,1
    - Dst: PQclear
      Src: /src/postgres/src/test/isolation/isolationtester.c:236,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/test/isolation/isolationtester.c:237,1
    - Dst: run_testspec
      Src: /src/postgres/src/test/isolation/isolationtester.c:243,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 62
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 246
    functionName: main
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 4
    functionsReached:
    - PQconnectdb
    - PQclear
    - getopt
    - PQexecParams
    - printf
    - atexit
    - puts
    - appendPQExpBufferStr
    - fprintf
    - getenv
    - PQresultStatus
    - setbuf
    - PQstatus
    - PQsetNoticeProcessor
    - check_testspec
    - psprintf
    - PQprepare
    - pg_malloc0_array
    - termPQExpBuffer
    - PQerrorMessage
    - exit
    - run_testspec
    - PQbackendPID
    - spec_yyparse
    - initPQExpBuffer
    - atoi
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/test/isolation/isolationtester.c:265,1
    - Dst: qsort
      Src: /src/postgres/src/test/isolation/isolationtester.c:274,1
    - Dst: strcmp
      Src: /src/postgres/src/test/isolation/isolationtester.c:279,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:282,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:284,1
    - Dst: bsearch
      Src: /src/postgres/src/test/isolation/isolationtester.c:308,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:316,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:318,1
    - Dst: strcmp
      Src: /src/postgres/src/test/isolation/isolationtester.c:349,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:357,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:359,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:364,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:366,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:382,1
    - Dst: pg_free
      Src: /src/postgres/src/test/isolation/isolationtester.c:386,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 59
    argCount: 1
    argNames:
    - testspec
    argTypes:
    - TestSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 387
    functionName: check_testspec
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 1
    functionsReached:
    - qsort
    - strcmp
    - bsearch
    - pg_malloc_array
    - pg_free
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void check_testspec(TestSpec *testspec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: run_named_permutations
      Src: /src/postgres/src/test/isolation/isolationtester.c:397,1
    - Dst: run_all_permutations
      Src: /src/postgres/src/test/isolation/isolationtester.c:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - testspec
    argTypes:
    - TestSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 400
    functionName: run_testspec
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 1
    functionsReached:
    - run_all_permutations
    - run_named_permutations
    linkageType: ''
    returnType: void
    signature: void run_testspec(TestSpec *testspec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/test/isolation/isolationtester.c:420,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/test/isolation/isolationtester.c:421,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/test/isolation/isolationtester.c:434,1
    - Dst: run_all_permutations_recurse
      Src: /src/postgres/src/test/isolation/isolationtester.c:438,1
    - Dst: pg_free
      Src: /src/postgres/src/test/isolation/isolationtester.c:440,1
    - Dst: pg_free
      Src: /src/postgres/src/test/isolation/isolationtester.c:441,1
    - Dst: pg_free
      Src: /src/postgres/src/test/isolation/isolationtester.c:442,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - testspec
    argTypes:
    - TestSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 443
    functionName: run_all_permutations
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 1
    functionsReached:
    - pg_free
    - pg_malloc0_array
    - pg_malloc_array
    - run_all_permutations_recurse
    linkageType: ''
    returnType: void
    signature: void run_all_permutations(TestSpec *testspec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: run_all_permutations_recurse
      Src: /src/postgres/src/test/isolation/isolationtester.c:469,1
    - Dst: run_permutation
      Src: /src/postgres/src/test/isolation/isolationtester.c:479,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - testspec
    - piles
    - nsteps
    - steps
    argTypes:
    - TestSpec*
    - int*
    - int
    - PermutationStep**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 480
    functionName: run_all_permutations_recurse
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 2
    functionsReached:
    - run_permutation
    - run_all_permutations_recurse
    linkageType: ''
    returnType: void
    signature: "void run_all_permutations_recurse(TestSpec *testspec, int *piles,\n\t\t\t\t\t\t\t
      int nsteps, PermutationStep **steps)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_permutation
      Src: /src/postgres/src/test/isolation/isolationtester.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - testspec
    argTypes:
    - TestSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 496
    functionName: run_named_permutations
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 1
    functionsReached:
    - run_permutation
    linkageType: ''
    returnType: void
    signature: void run_named_permutations(TestSpec *testspec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/test/isolation/isolationtester.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 505
    functionName: step_qsort_cmp
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int step_qsort_cmp(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/test/isolation/isolationtester.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 514
    functionName: step_bsearch_cmp
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int step_bsearch_cmp(const void *a, const void *b)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/test/isolation/isolationtester.c:527,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:529,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:531,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:532,1
    - Dst: PQexec
      Src: /src/postgres/src/test/isolation/isolationtester.c:537,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:538,1
    - Dst: printResultSet
      Src: /src/postgres/src/test/isolation/isolationtester.c:540,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:542,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:544,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:544,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:545,1
    - Dst: PQclear
      Src: /src/postgres/src/test/isolation/isolationtester.c:547,1
    - Dst: PQexec
      Src: /src/postgres/src/test/isolation/isolationtester.c:555,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:556,1
    - Dst: printResultSet
      Src: /src/postgres/src/test/isolation/isolationtester.c:558,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:560,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:562,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:564,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:565,1
    - Dst: PQclear
      Src: /src/postgres/src/test/isolation/isolationtester.c:567,1
    - Dst: gettimeofday
      Src: /src/postgres/src/test/isolation/isolationtester.c:589,1
    - Dst: try_complete_step
      Src: /src/postgres/src/test/isolation/isolationtester.c:600,1
    - Dst: abort
      Src: /src/postgres/src/test/isolation/isolationtester.c:611,1
    - Dst: memmove
      Src: /src/postgres/src/test/isolation/isolationtester.c:613,1
    - Dst: try_complete_steps
      Src: /src/postgres/src/test/isolation/isolationtester.c:625,1
    - Dst: gettimeofday
      Src: /src/postgres/src/test/isolation/isolationtester.c:641,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:647,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:650,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:656,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:659,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:660,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/test/isolation/isolationtester.c:667,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:669,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:670,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:671,1
    - Dst: try_complete_step
      Src: /src/postgres/src/test/isolation/isolationtester.c:688,1
    - Dst: try_complete_steps
      Src: /src/postgres/src/test/isolation/isolationtester.c:691,1
    - Dst: try_complete_steps
      Src: /src/postgres/src/test/isolation/isolationtester.c:700,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:703,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:704,1
    - Dst: PQexec
      Src: /src/postgres/src/test/isolation/isolationtester.c:712,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:713,1
    - Dst: printResultSet
      Src: /src/postgres/src/test/isolation/isolationtester.c:715,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:717,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:719,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:721,1
    - Dst: PQclear
      Src: /src/postgres/src/test/isolation/isolationtester.c:724,1
    - Dst: PQexec
      Src: /src/postgres/src/test/isolation/isolationtester.c:731,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:732,1
    - Dst: printResultSet
      Src: /src/postgres/src/test/isolation/isolationtester.c:734,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:736,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:738,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:739,1
    - Dst: PQclear
      Src: /src/postgres/src/test/isolation/isolationtester.c:742,1
    - Dst: pg_free
      Src: /src/postgres/src/test/isolation/isolationtester.c:745,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 106
    argCount: 3
    argNames:
    - testspec
    - nsteps
    - steps
    argTypes:
    - TestSpec*
    - int
    - PermutationStep**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 746
    functionName: run_permutation
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 2
    functionsReached:
    - abort
    - gettimeofday
    - PQclear
    - try_complete_step
    - PQexec
    - printResultSet
    - pg_malloc_array
    - memmove
    - PQsendQuery
    - exit
    - printf
    - PQresultStatus
    - pg_free
    - PQerrorMessage
    - try_complete_steps
    - fprintf
    linkageType: ''
    returnType: void
    signature: void run_permutation(TestSpec *testspec, int nsteps, PermutationStep
      **steps)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: try_complete_step
      Src: /src/postgres/src/test/isolation/isolationtester.c:775,1
    - Dst: memmove
      Src: /src/postgres/src/test/isolation/isolationtester.c:786,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - testspec
    - waiting
    - nwaiting
    - flags
    argTypes:
    - TestSpec*
    - PermutationStep**
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 802
    functionName: try_complete_steps
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 1
    functionsReached:
    - memmove
    - try_complete_step
    linkageType: ''
    returnType: int
    signature: "int try_complete_steps(TestSpec *testspec, PermutationStep **waiting,\n\t\t\t\t
      \  int nwaiting, int flags)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: PQsocket
      Src: /src/postgres/src/test/isolation/isolationtester.c:826,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:847,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:856,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:856,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:857,1
    - Dst: gettimeofday
      Src: /src/postgres/src/test/isolation/isolationtester.c:860,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/isolation/isolationtester.c:861,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/isolation/isolationtester.c:863,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/isolation/isolationtester.c:865,1
    - Dst: select
      Src: /src/postgres/src/test/isolation/isolationtester.c:869,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:874,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:875,1
    - Dst: PQexecPrepared
      Src: /src/postgres/src/test/isolation/isolationtester.c:887,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:890,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/isolation/isolationtester.c:891,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:893,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:894,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:895,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/isolation/isolationtester.c:897,1
    - Dst: PQclear
      Src: /src/postgres/src/test/isolation/isolationtester.c:898,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/isolation/isolationtester.c:911,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:913,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:914,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:915,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/isolation/isolationtester.c:917,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:925,1
    - Dst: gettimeofday
      Src: /src/postgres/src/test/isolation/isolationtester.c:933,1
    - Dst: PQcancelCreate
      Src: /src/postgres/src/test/isolation/isolationtester.c:949,1
    - Dst: PQcancelBlocking
      Src: /src/postgres/src/test/isolation/isolationtester.c:951,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:957,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:962,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:962,1
    - Dst: PQcancelFinish
      Src: /src/postgres/src/test/isolation/isolationtester.c:963,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:975,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:977,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/isolation/isolationtester.c:980,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:982,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:983,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolationtester.c:984,1
    - Dst: step_has_blocker
      Src: /src/postgres/src/test/isolation/isolationtester.c:992,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:995,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:1002,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:1004,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/isolation/isolationtester.c:1006,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:1008,1
    - Dst: printResultSet
      Src: /src/postgres/src/test/isolation/isolationtester.c:1014,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/isolation/isolationtester.c:1024,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/isolation/isolationtester.c:1026,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:1030,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:1032,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/test/isolation/isolationtester.c:1032,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:1036,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:1037,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/isolation/isolationtester.c:1037,1
    - Dst: PQclear
      Src: /src/postgres/src/test/isolation/isolationtester.c:1039,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/isolation/isolationtester.c:1043,1
    - Dst: PQnotifies
      Src: /src/postgres/src/test/isolation/isolationtester.c:1044,1
    - Dst: snprintf
      Src: /src/postgres/src/test/isolation/isolationtester.c:1062,1
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:1065,1
    - Dst: PQfreemem
      Src: /src/postgres/src/test/isolation/isolationtester.c:1068,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/isolation/isolationtester.c:1069,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 114
    argCount: 3
    argNames:
    - testspec
    - pstep
    - flags
    argTypes:
    - TestSpec*
    - PermutationStep*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 1076
    functionName: try_complete_step
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 2
    functionsReached:
    - gettimeofday
    - PQclear
    - PQnotifies
    - PQconsumeInput
    - printf
    - PQcancelBlocking
    - PQgetvalue
    - PQisBusy
    - PQgetResult
    - fprintf
    - PQresStatus
    - PQcancelCreate
    - step_has_blocker
    - FD_SET
    - PQresultStatus
    - PQcancelErrorMessage
    - PQntuples
    - PQcancelFinish
    - PQresultErrorField
    - printResultSet
    - PQsocket
    - PQfreemem
    - exit
    - PQerrorMessage
    - PQexecPrepared
    - PQresultErrorMessage
    - select
    - FD_ZERO
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool try_complete_step(TestSpec *testspec, PermutationStep *pstep,
      int flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - pstep
    argTypes:
    - PermutationStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1079
    functionDepth: 0
    functionLinenumber: 1079
    functionLinenumberEnd: 1110
    functionName: step_has_blocker
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool step_has_blocker(PermutationStep *pstep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/test/isolation/isolationtester.c:1117,1
    - Dst: PQprint
      Src: /src/postgres/src/test/isolation/isolationtester.c:1121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1112
    functionDepth: 1
    functionLinenumber: 1112
    functionLinenumberEnd: 1122
    functionName: printResultSet
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 2
    functionsReached:
    - PQprint
    - memset
    linkageType: ''
    returnType: void
    signature: void printResultSet(PGresult *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/test/isolation/isolationtester.c:1131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - arg
    - message
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1125
    functionDepth: 0
    functionLinenumber: 1125
    functionLinenumberEnd: 1135
    functionName: isotesterNoticeProcessor
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void isotesterNoticeProcessor(void *arg, const char *message)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - arg
    - message
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1138
    functionDepth: 0
    functionLinenumber: 1138
    functionLinenumberEnd: 1142
    functionName: blackholeNoticeProcessor
    functionSourceFile: /src/postgres/src/test/isolation/isolationtester.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void blackholeNoticeProcessor(void *arg, const char *message)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: find_other_exec
      Src: /src/postgres/src/test/isolation/isolation_main.c:45,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolation_main.c:48,1
    - Dst: _
      Src: /src/postgres/src/test/isolation/isolation_main.c:48,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolation_main.c:49,1
    - Dst: snprintf
      Src: /src/postgres/src/test/isolation/isolation_main.c:60,1
    - Dst: file_exists
      Src: /src/postgres/src/test/isolation/isolation_main.c:62,1
    - Dst: snprintf
      Src: /src/postgres/src/test/isolation/isolation_main.c:63,1
    - Dst: snprintf
      Src: /src/postgres/src/test/isolation/isolation_main.c:66,1
    - Dst: snprintf
      Src: /src/postgres/src/test/isolation/isolation_main.c:69,1
    - Dst: file_exists
      Src: /src/postgres/src/test/isolation/isolation_main.c:71,1
    - Dst: snprintf
      Src: /src/postgres/src/test/isolation/isolation_main.c:72,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/isolation/isolation_main.c:75,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/isolation/isolation_main.c:76,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/isolation/isolation_main.c:78,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/isolation/isolation_main.c:81,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/isolation/isolation_main.c:83,1
    - Dst: psprintf
      Src: /src/postgres/src/test/isolation/isolation_main.c:90,1
    - Dst: setenv
      Src: /src/postgres/src/test/isolation/isolation_main.c:91,1
    - Dst: pfree
      Src: /src/postgres/src/test/isolation/isolation_main.c:92,1
    - Dst: spawn_process
      Src: /src/postgres/src/test/isolation/isolation_main.c:94,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolation_main.c:98,1
    - Dst: _
      Src: /src/postgres/src/test/isolation/isolation_main.c:98,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolation_main.c:100,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/isolation/isolation_main.c:103,1
    - Dst: pfree
      Src: /src/postgres/src/test/isolation/isolation_main.c:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 4
    argNames:
    - testname
    - resultfiles
    - expectfiles
    - tags
    argTypes:
    - char*
    - _stringlist**
    - _stringlist**
    - _stringlist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 108
    functionName: isolation_start_test
    functionSourceFile: /src/postgres/src/test/isolation/isolation_main.c
    functionUses: 0
    functionsReached:
    - file_exists
    - setenv
    - spawn_process
    - _
    - pfree
    - appendStringInfo
    - psprintf
    - initStringInfo
    - unsetenv
    - add_stringlist_item
    - exit
    - find_other_exec
    - fprintf
    - snprintf
    linkageType: ''
    returnType: PID_TYPE
    signature: "PID_TYPE isolation_start_test(const char *testname,\n\t\t\t\t\t _stringlist
      **resultfiles,\n\t\t\t\t\t _stringlist **expectfiles,\n\t\t\t\t\t _stringlist
      **tags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/test/isolation/isolation_main.c:124,1
    - Dst: fprintf
      Src: /src/postgres/src/test/isolation/isolation_main.c:127,1
    - Dst: _
      Src: /src/postgres/src/test/isolation/isolation_main.c:127,1
    - Dst: exit
      Src: /src/postgres/src/test/isolation/isolation_main.c:129,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/isolation/isolation_main.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 134
    functionName: isolation_init
    functionSourceFile: /src/postgres/src/test/isolation/isolation_main.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - _
    - add_stringlist_item
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void isolation_init(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regression_main
      Src: /src/postgres/src/test/isolation/isolation_main.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 6
    functionLinenumber: 136
    functionLinenumberEnd: 143
    functionName: main
    functionSourceFile: /src/postgres/src/test/isolation/isolation_main.c
    functionUses: 5
    functionsReached:
    - regression_main
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getnameinfo
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:37,1
    - Dst: printf
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:40,1
    - Dst: printf
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:42,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct sockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 43
    functionName: print_addr
    functionSourceFile: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c
    functionUses: 0
    functionsReached:
    - getnameinfo
    - printf
    linkageType: ''
    returnType: void
    signature: void print_addr(struct sockaddr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:48,1
    - Dst: print_addr
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:49,1
    - Dst: printf
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:50,1
    - Dst: print_addr
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:51,1
    - Dst: printf
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - addr
    - mask
    - unused
    argTypes:
    - struct sockaddr*
    - struct sockaddr*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: callback
    functionSourceFile: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c
    functionUses: 4
    functionsReached:
    - print_addr
    - printf
    linkageType: ''
    returnType: void
    signature: void callback(struct sockaddr *addr, struct sockaddr *mask, void *unused)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:61,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:61,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:63,1
    - Dst: pg_foreach_ifaddr
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:68,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 71
    functionName: main
    functionSourceFile: /src/postgres/src/tools/ifaddrs/test_ifaddrs.c
    functionUses: 5
    functionsReached:
    - WSAStartup
    - pg_foreach_ifaddr
    - fprintf
    - MAKEWORD
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 145
    functionName: strcmp_type
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/lexi.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int strcmp_type(const void *e1, const void *e2)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lookahead_reset
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:168,1
    - Dst: lookahead
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:176,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 37
    argCount: 1
    argNames:
    - tp
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 213
    functionName: is_func_definition
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/lexi.c
    functionUses: 0
    functionsReached:
    - lookahead
    - lookahead_reset
    linkageType: ''
    returnType: int
    signature: int is_func_definition(char *tp)
  - BBCount: 93
    BranchProfiles: []
    Callsites:
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:234,1
    - Dst: isdigit
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:239,1
    - Dst: isdigit
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:245,1
    - Dst: isdigit
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:246,1
    - Dst: strspn
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:258,1
    - Dst: strspn
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:260,1
    - Dst: strspn
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:262,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:264,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:265,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:270,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:280,1
    - Dst: isdigit
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:282,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:296,1
    - Dst: strchr
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:302,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:319,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:323,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:327,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:337,1
    - Dst: bsearch
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:352,1
    - Dst: strrchr
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:361,1
    - Dst: strcmp
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:362,1
    - Dst: bsearch
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:363,1
    - Dst: is_func_definition
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:416,1
    - Dst: strncpy
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:417,1
    - Dst: isalpha
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:431,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:446,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:451,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:471,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:474,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:477,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:485,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:616,1
    - Dst: isspace
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:632,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:634,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:638,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:649,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:659,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:662,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:670,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:672,1
    CyclomaticComplexity: 148
    EdgeCount: 148
    ICount: 330
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 675
    functionName: lexi
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/lexi.c
    functionUses: 0
    functionsReached:
    - fill_buffer
    - isalpha
    - memcpy
    - isdigit
    - strchr
    - bsearch
    - strcmp
    - strncpy
    - strrchr
    - isspace
    - is_func_definition
    - strspn
    - diag2
    - CHECK_SIZE_TOKEN
    linkageType: ''
    returnType: int
    signature: int lexi(struct parser_state *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:681,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 685
    functionName: alloc_typenames
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/lexi.c
    functionUses: 0
    functionsReached:
    - err
    - malloc
    linkageType: ''
    returnType: void
    signature: void alloc_typenames(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:694,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:697,1
    - Dst: strdup
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:700,1
    - Dst: strcmp
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:701,1
    - Dst: strdup
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:705,1
    - Dst: strcmp
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:710,1
    - Dst: memmove
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:714,1
    - Dst: strdup
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:716,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:720,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 721
    functionName: add_typename
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/lexi.c
    functionUses: 0
    functionsReached:
    - realloc
    - strcmp
    - memmove
    - err
    - strdup
    linkageType: ''
    returnType: void
    signature: void add_typename(const char *key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:183,1
    - Dst: getenv
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:183,1
    - Dst: snprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:185,1
    - Dst: fopen
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:186,1
    - Dst: scan_profile
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:187,1
    - Dst: fclose
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:188,1
    - Dst: fopen
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:190,1
    - Dst: scan_profile
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:191,1
    - Dst: fclose
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - profile_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 195
    functionName: set_profile
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/args.c
    functionUses: 0
    functionsReached:
    - scan_profile
    - fopen
    - fclose
    - getenv
    - snprintf
    linkageType: ''
    returnType: void
    signature: void set_profile(const char *profile_name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:207,1
    - Dst: isspace
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:214,1
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:224,1
    - Dst: set_option
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:225,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 29
    argCount: 1
    argNames:
    - f
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 230
    functionName: scan_profile
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/args.c
    functionUses: 1
    functionsReached:
    - getc
    - set_option
    - isspace
    - printf
    linkageType: ''
    returnType: void
    signature: void scan_profile(FILE *f)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 240
    functionName: eqin
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/args.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      eqin(const char *s1, const char *s2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 258
    functionName: set_defaults
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/args.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_defaults(void)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: eqin
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:268,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:270,1
    - Dst: atof
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:283,1
    - Dst: add_typename
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:296,1
    - Dst: add_typedefs_from_file
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:302,1
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:306,1
    - Dst: exit
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:307,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:310,1
    - Dst: isdigit
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:322,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:324,1
    - Dst: atoi
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:326,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:330,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 61
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 332
    functionName: set_option
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/args.c
    functionUses: 1
    functionsReached:
    - add_typedefs_from_file
    - isdigit
    - atoi
    - atof
    - add_typename
    - errx
    - printf
    - exit
    - eqin
    linkageType: ''
    returnType: void
    signature: void set_option(char *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:340,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:341,1
    - Dst: exit
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:342,1
    - Dst: fgets
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:344,1
    - Dst: strcspn
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:346,1
    - Dst: add_typename
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:347,1
    - Dst: fclose
      Src: /src/postgres/src/tools/pg_bsd_indent/args.c:349,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 350
    functionName: add_typedefs_from_file
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/args.c
    functionUses: 1
    functionsReached:
    - fopen
    - fclose
    - strcspn
    - add_typename
    - fgets
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void add_typedefs_from_file(const char *str)
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: count_spaces
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:132,1
    - Dst: compute_code_target
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:132,1
    - Dst: count_spaces
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:136,1
    - Dst: compute_label_target
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:136,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:139,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:140,1
    - Dst: count_spaces_until
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:165,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:184,1
    - Dst: count_spaces_until
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:186,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:198,1
    - Dst: CHECK_SIZE_COM
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:210,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:214,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:223,1
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:230,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:231,1
    - Dst: CHECK_SIZE_COM
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:235,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:241,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:245,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:268,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:271,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:278,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:284,1
    - Dst: CHECK_SIZE_COM
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:285,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:289,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:292,1
    - Dst: count_spaces_until
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:308,1
    - Dst: CHECK_SIZE_COM
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:310,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:313,1
    - Dst: memchr
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:318,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:326,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c:333,1
    CyclomaticComplexity: 98
    EdgeCount: 98
    ICount: 193
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 354
    functionName: pr_comment
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/pr_comment.c
    functionUses: 0
    functionsReached:
    - fill_buffer
    - compute_label_target
    - CHECK_SIZE_COM
    - strncmp
    - count_spaces
    - printf
    - dump_line
    - memchr
    - count_spaces_until
    - compute_code_target
    linkageType: ''
    returnType: void
    signature: void pr_comment(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - desired_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: CHECK_SIZE_CODE
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent_globs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SIZE_CODE(desired_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - desired_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 89
    functionName: CHECK_SIZE_COM
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent_globs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SIZE_COM(desired_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - desired_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 100
    functionName: CHECK_SIZE_LAB
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent_globs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SIZE_LAB(desired_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - desired_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 111
    functionName: CHECK_SIZE_TOKEN
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent_globs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SIZE_TOKEN(desired_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: nitems
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: nitems(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - level
    - ','
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: diag2
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: diag2(level, msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - level
    - ','
    - msg
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: diag3
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: diag3(level, msg, a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - level
    - ','
    - msg
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: diag4
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: diag4(level, msg, a, b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:47,1
    - Dst: vfprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:49,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:50,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:52,1
    - Dst: strerror
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:52,1
    - Dst: va_end
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:53,1
    - Dst: exit
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - eval
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 55
    functionName: err
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/err.c
    functionUses: 35
    functionsReached:
    - vfprintf
    - va_end
    - va_start
    - exit
    - strerror
    - fprintf
    linkageType: ''
    returnType: void
    signature: void err(int eval, const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:61,1
    - Dst: vfprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:63,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:64,1
    - Dst: va_end
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:65,1
    - Dst: exit
      Src: /src/postgres/src/tools/pg_bsd_indent/err.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - eval
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 67
    functionName: errx
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/err.c
    functionUses: 1
    functionsReached:
    - vfprintf
    - va_end
    - va_start
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void errx(int eval, const char *fmt, ...)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:54,1
    - Dst: reduce
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:61,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:157,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:176,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:200,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:206,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:207,1
    - Dst: reduce
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:209,1
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:213,1
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/parse.c:214,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 100
    argCount: 1
    argNames:
    - tk
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 218
    functionName: parse
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/parse.c
    functionUses: 7
    functionsReached:
    - reduce
    - nitems
    - diag2
    - errx
    - printf
    linkageType: ''
    returnType: void
    signature: void parse(int tk)
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 338
    functionName: reduce
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/parse.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reduce(void)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: putc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:97,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:111,1
    - Dst: pad_output
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:116,1
    - Dst: compute_label_target
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:116,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:117,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:118,1
    - Dst: putc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:121,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:126,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:129,1
    - Dst: count_spaces
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:130,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:142,1
    - Dst: compute_code_target
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:144,1
    - Dst: pad_output
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:152,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:155,1
    - Dst: putc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:157,1
    - Dst: count_spaces
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:158,1
    - Dst: putc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:177,1
    - Dst: isspace
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:181,1
    - Dst: pad_output
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:183,1
    - Dst: fwrite
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:184,1
    - Dst: putc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:189,1
    - Dst: putc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:191,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 117
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 220
    functionName: dump_line
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 1
    functionsReached:
    - compute_label_target
    - isspace
    - compute_code_target
    - strncmp
    - count_spaces
    - pad_output
    - putc
    - fwrite
    - fprintf
    linkageType: ''
    returnType: void
    signature: void dump_line(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: count_spaces
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:237,1
    - Dst: count_spaces
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:238,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 249
    functionName: compute_code_target
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 2
    functionsReached:
    - count_spaces
    linkageType: ''
    returnType: int
    signature: int compute_code_target(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 258
    functionName: compute_label_target
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int compute_label_target(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:282,1
    - Dst: malloc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:296,1
    - Dst: realloc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:299,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:302,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 313
    functionName: lookahead
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 1
    functionsReached:
    - getc
    - realloc
    - malloc
    - errx
    linkageType: ''
    returnType: int
    signature: int lookahead(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 326
    functionName: lookahead_reset
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lookahead_reset(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:365,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:367,1
    - Dst: getc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:375,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:390,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:391,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:419,1
    - Dst: putc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:434,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 437
    functionName: fill_buffer
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 3
    functionsReached:
    - realloc
    - fill_buffer
    - strncmp
    - errx
    - dump_line
    - getc
    - putc
    linkageType: ''
    returnType: void
    signature: void fill_buffer(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: putc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:484,1
    - Dst: putc
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:491,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - current
    - target
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 494
    functionName: pad_output
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 1
    functionsReached:
    - putc
    linkageType: ''
    returnType: int
    signature: int pad_output(int current, int target)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - cur
    - buffer
    - end
    argTypes:
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 547
    functionName: count_spaces_until
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int count_spaces_until(int cur, char *buffer, char *end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count_spaces_until
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cur
    - buffer
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 553
    functionName: count_spaces
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 3
    functionsReached:
    - count_spaces_until
    linkageType: ''
    returnType: int
    signature: int count_spaces(int cur, char *buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:560,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:564,1
    - Dst: vfprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:565,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:566,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:569,1
    - Dst: vfprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:570,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:571,1
    - Dst: va_end
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:573,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - level
    - msg
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 574
    functionName: diag
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 8
    functionsReached:
    - va_start
    - vfprintf
    - va_end
    - fprintf
    linkageType: ''
    returnType: void
    signature: void diag(int level, const char *msg, ...)
  - BBCount: 184
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:100,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:102,1
    - Dst: malloc
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:103,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:105,1
    - Dst: malloc
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:106,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:108,1
    - Dst: malloc
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:109,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:111,1
    - Dst: alloc_typenames
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:112,1
    - Dst: malloc
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:126,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:128,1
    - Dst: strcmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:183,1
    - Dst: set_defaults
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:187,1
    - Dst: set_profile
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:189,1
    - Dst: fopen
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:199,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:201,1
    - Dst: strcmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:206,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:208,1
    - Dst: fopen
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:210,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:212,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:215,1
    - Dst: set_option
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:218,1
    - Dst: bakcopy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:227,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:241,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:243,1
    - Dst: lexi
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:269,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:309,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:320,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:325,1
    - Dst: fflush
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:326,1
    - Dst: exit
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:327,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:332,1
    - Dst: isspace
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:348,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:350,1
    - Dst: isblank
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:375,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:394,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:441,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:445,1
    - Dst: lexi
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:449,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:461,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:463,1
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:466,1
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:468,1
    - Dst: fflush
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:471,1
    - Dst: exit
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:472,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:484,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:485,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:496,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:498,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:515,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:523,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:530,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:538,1
    - Dst: diag3
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:539,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:540,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:548,1
    - Dst: count_spaces_until
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:560,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:570,1
    - Dst: diag3
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:594,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:610,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:629,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:638,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:639,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:649,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:652,1
    - Dst: CHECK_SIZE_LAB
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:700,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:701,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:733,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:748,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:753,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:762,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:779,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:786,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:797,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:801,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:811,1
    - Dst: diag3
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:812,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:813,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:830,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:843,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:845,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:854,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:855,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:868,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:897,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:898,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:903,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:908,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:909,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:914,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:928,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:931,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:965,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:975,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:985,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:991,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:994,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1005,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1008,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1029,1
    - Dst: count_spaces_until
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1037,1
    - Dst: compute_code_target
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1037,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1047,1
    - Dst: CHECK_SIZE_LAB
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1048,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1059,1
    - Dst: CHECK_SIZE_LAB
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1062,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1065,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1071,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1115,1
    - Dst: memmove
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1116,1
    - Dst: CHECK_SIZE_LAB
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1130,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1135,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1136,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1141,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1143,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1145,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1151,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1153,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1169,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1171,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1174,1
    - Dst: pr_comment
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1190,1
    CyclomaticComplexity: 314
    EdgeCount: 314
    ICount: 790
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 1198
    functionName: main
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent.c
    functionUses: 5
    functionsReached:
    - fill_buffer
    - strcmp
    - fopen
    - isblank
    - printf
    - parse
    - lexi
    - compute_code_target
    - memcpy
    - CHECK_SIZE_CODE
    - diag2
    - errx
    - fflush
    - dump_line
    - set_defaults
    - count_spaces_until
    - bakcopy
    - set_profile
    - isspace
    - memmove
    - alloc_typenames
    - indent_declaration
    - exit
    - CHECK_SIZE_LAB
    - diag3
    - nitems
    - err
    - pr_comment
    - malloc
    - strncmp
    - set_option
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1219,1
    - Dst: creat
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1222,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1224,1
    - Dst: read
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1225,1
    - Dst: fileno
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1225,1
    - Dst: write
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1226,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1227,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1229,1
    - Dst: close
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1230,1
    - Dst: fclose
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1231,1
    - Dst: fopen
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1234,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1236,1
    - Dst: fopen
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1238,1
    - Dst: unlink
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1240,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1241,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1205
    functionDepth: 1
    functionLinenumber: 1205
    functionLinenumberEnd: 1243
    functionName: bakcopy
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent.c
    functionUses: 1
    functionsReached:
    - unlink
    - fopen
    - write
    - fclose
    - creat
    - err
    - read
    - close
    - sprintf
    - fileno
    linkageType: ''
    returnType: void
    signature: void bakcopy(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1261,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1269,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - cur_dec_ind
    - tabs_to_var
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1245
    functionDepth: 1
    functionLinenumber: 1245
    functionLinenumberEnd: 1278
    functionName: indent_declaration
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent.c
    functionUses: 1
    functionsReached:
    - CHECK_SIZE_CODE
    linkageType: ''
    returnType: void
    signature: void indent_declaration(int cur_dec_ind, int tabs_to_var)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/recovery_gen.c:36,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/fe_utils/recovery_gen.c:38,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:40,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/recovery_gen.c:46,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/recovery_gen.c:47,1
    - Dst: PQconninfo
      Src: /src/postgres/src/fe_utils/recovery_gen.c:49,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:51,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/recovery_gen.c:53,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/recovery_gen.c:57,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/recovery_gen.c:58,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/recovery_gen.c:59,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/recovery_gen.c:66,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/recovery_gen.c:72,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:73,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/recovery_gen.c:83,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/recovery_gen.c:85,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:86,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/fe_utils/recovery_gen.c:89,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:90,1
    - Dst: escape_quotes
      Src: /src/postgres/src/fe_utils/recovery_gen.c:97,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/recovery_gen.c:98,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/recovery_gen.c:99,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/recovery_gen.c:100,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/recovery_gen.c:105,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/fe_utils/recovery_gen.c:109,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:110,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/fe_utils/recovery_gen.c:112,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 3
    argNames:
    - pgconn
    - replication_slot
    - dbname
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 115
    functionName: GenerateRecoveryConfig
    functionSourceFile: /src/postgres/src/fe_utils/recovery_gen.c
    functionUses: 3
    functionsReached:
    - PQconninfoFree
    - strcmp
    - Assert
    - escape_quotes
    - appendConnStrVal
    - pg_fatal
    - initPQExpBuffer
    - appendPQExpBuffer
    - free
    - PQconninfo
    - PQserverVersion
    - termPQExpBuffer
    - PQExpBufferDataBroken
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - PQExpBufferBroken
    - createPQExpBuffer
    linkageType: ''
    returnType: PQExpBuffer
    signature: "PQExpBuffer GenerateRecoveryConfig(PGconn *pgconn, const char *replication_slot,\n\t\t\t\t\t
      \  char *dbname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/recovery_gen.c:131,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/recovery_gen.c:134,1
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/recovery_gen.c:136,1
    - Dst: fopen
      Src: /src/postgres/src/fe_utils/recovery_gen.c:139,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:141,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/recovery_gen.c:143,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:144,1
    - Dst: fclose
      Src: /src/postgres/src/fe_utils/recovery_gen.c:146,1
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/recovery_gen.c:150,1
    - Dst: fopen
      Src: /src/postgres/src/fe_utils/recovery_gen.c:151,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:153,1
    - Dst: fclose
      Src: /src/postgres/src/fe_utils/recovery_gen.c:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - pgconn
    - target_dir
    - contents
    argTypes:
    - PGconn*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 157
    functionName: WriteRecoveryConfig
    functionSourceFile: /src/postgres/src/fe_utils/recovery_gen.c
    functionUses: 2
    functionsReached:
    - Assert
    - fopen
    - pg_fatal
    - fclose
    - PQserverVersion
    - fwrite
    - snprintf
    linkageType: ''
    returnType: void
    signature: void WriteRecoveryConfig(PGconn *pgconn, const char *target_dir, PQExpBuffer
      contents)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: escape_single_quotes_ascii
      Src: /src/postgres/src/fe_utils/recovery_gen.c:166,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 171
    functionName: escape_quotes
    functionSourceFile: /src/postgres/src/fe_utils/recovery_gen.c
    functionUses: 7
    functionsReached:
    - escape_single_quotes_ascii
    - pg_fatal
    linkageType: ''
    returnType: char
    signature: 'char *

      escape_quotes(const char *src)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/recovery_gen.c:187,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/recovery_gen.c:189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - conn_opts
    argTypes:
    - PQconninfoOption*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 192
    functionName: FindDbnameInConnOpts
    functionSourceFile: /src/postgres/src/fe_utils/recovery_gen.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      FindDbnameInConnOpts(PQconninfoOption *conn_opts)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfoParse
      Src: /src/postgres/src/fe_utils/recovery_gen.c:213,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:215,1
    - Dst: FindDbnameInConnOpts
      Src: /src/postgres/src/fe_utils/recovery_gen.c:217,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/fe_utils/recovery_gen.c:219,1
    - Dst: PQconndefaults
      Src: /src/postgres/src/fe_utils/recovery_gen.c:228,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/recovery_gen.c:230,1
    - Dst: FindDbnameInConnOpts
      Src: /src/postgres/src/fe_utils/recovery_gen.c:232,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/fe_utils/recovery_gen.c:234,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - connstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 236
    functionName: GetDbnameFromConnectionOptions
    functionSourceFile: /src/postgres/src/fe_utils/recovery_gen.c
    functionUses: 2
    functionsReached:
    - PQconninfoFree
    - FindDbnameInConnOpts
    - PQconndefaults
    - pg_fatal
    - PQconninfoParse
    linkageType: ''
    returnType: char
    signature: 'char *

      GetDbnameFromConnectionOptions(const char *connstr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:41,1
    - Dst: ParallelSlot*::handler
      Src: /src/postgres/src/fe_utils/parallel_slot.c:44,1
    - Dst: PQclear
      Src: /src/postgres/src/fe_utils/parallel_slot.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - slot
    - result
    argTypes:
    - ParallelSlot*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 50
    functionName: processQueryResult
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQclear
    - ParallelSlot*::handler
    linkageType: ''
    returnType: bool
    signature: bool processQueryResult(ParallelSlot *slot, PGresult *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SetCancelConn
      Src: /src/postgres/src/fe_utils/parallel_slot.c:63,1
    - Dst: PQgetResult
      Src: /src/postgres/src/fe_utils/parallel_slot.c:64,1
    - Dst: processQueryResult
      Src: /src/postgres/src/fe_utils/parallel_slot.c:66,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/fe_utils/parallel_slot.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - slot
    argTypes:
    - ParallelSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: consumeQueryResult
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 0
    functionsReached:
    - processQueryResult
    - PQgetResult
    - SetCancelConn
    - ResetCancelConn
    linkageType: ''
    returnType: bool
    signature: bool consumeQueryResult(ParallelSlot *slot)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: select
      Src: /src/postgres/src/fe_utils/parallel_slot.c:104,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/fe_utils/parallel_slot.c:111,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 2
    argNames:
    - maxFd
    - workerset
    argTypes:
    - int
    - fd_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 126
    functionName: select_loop
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 2
    functionsReached:
    - WSAGetLastError
    - select
    linkageType: ''
    returnType: int
    signature: int select_loop(int maxFd, fd_set *workerset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/parallel_slot.c:148,1
    - Dst: PQdb
      Src: /src/postgres/src/fe_utils/parallel_slot.c:148,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 2
    argNames:
    - sa
    - dbname
    argTypes:
    - ParallelSlotArray*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 152
    functionName: find_matching_idle_slot
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 0
    functionsReached:
    - PQdb
    - strcmp
    linkageType: ''
    returnType: int
    signature: int find_matching_idle_slot(const ParallelSlotArray *sa, const char
      *dbname)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - sa
    argTypes:
    - ParallelSlotArray*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 173
    functionName: find_unconnected_slot
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int find_unconnected_slot(const ParallelSlotArray *sa)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - sa
    argTypes:
    - ParallelSlotArray*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 188
    functionName: find_any_idle_slot
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int find_any_idle_slot(const ParallelSlotArray *sa)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/postgres/src/fe_utils/parallel_slot.c:204,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:211,1
    - Dst: PQsocket
      Src: /src/postgres/src/fe_utils/parallel_slot.c:213,1
    - Dst: FD_SET
      Src: /src/postgres/src/fe_utils/parallel_slot.c:226,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/fe_utils/parallel_slot.c:238,1
    - Dst: select_loop
      Src: /src/postgres/src/fe_utils/parallel_slot.c:239,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/fe_utils/parallel_slot.c:240,1
    - Dst: PQsocket
      Src: /src/postgres/src/fe_utils/parallel_slot.c:250,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/fe_utils/parallel_slot.c:252,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/fe_utils/parallel_slot.c:255,1
    - Dst: PQisBusy
      Src: /src/postgres/src/fe_utils/parallel_slot.c:259,1
    - Dst: PQgetResult
      Src: /src/postgres/src/fe_utils/parallel_slot.c:261,1
    - Dst: processQueryResult
      Src: /src/postgres/src/fe_utils/parallel_slot.c:266,1
    - Dst: ParallelSlotSetIdle
      Src: /src/postgres/src/fe_utils/parallel_slot.c:272,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 1
    argNames:
    - sa
    argTypes:
    - ParallelSlotArray*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 278
    functionName: wait_on_slots
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 1
    functionsReached:
    - processQueryResult
    - ParallelSlotSetIdle
    - Assert
    - PQconsumeInput
    - FD_ISSET
    - FD_ZERO
    - PQsocket
    - FD_SET
    - ResetCancelConn
    - select_loop
    - PQisBusy
    - PQgetResult
    - SetCancelConn
    linkageType: ''
    returnType: bool
    signature: bool wait_on_slots(ParallelSlotArray *sa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connectDatabase
      Src: /src/postgres/src/fe_utils/parallel_slot.c:294,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/parallel_slot.c:316,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/parallel_slot.c:317,1
    - Dst: PQsocket
      Src: /src/postgres/src/fe_utils/parallel_slot.c:321,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/parallel_slot.c:325,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/fe_utils/parallel_slot.c:327,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/parallel_slot.c:328,1
    - Dst: executeCommand
      Src: /src/postgres/src/fe_utils/parallel_slot.c:335,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - sa
    - slotno
    - dbname
    argTypes:
    - ParallelSlotArray*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 336
    functionName: connect_slot
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 0
    functionsReached:
    - connectDatabase
    - PQsocket
    - executeCommand
    - pg_log_error
    - exit
    - pg_log_error_hint
    linkageType: ''
    returnType: void
    signature: void connect_slot(ParallelSlotArray *sa, int slotno, const char *dbname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:374,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:375,1
    - Dst: find_matching_idle_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:380,1
    - Dst: find_unconnected_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:388,1
    - Dst: connect_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:391,1
    - Dst: find_any_idle_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:397,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/fe_utils/parallel_slot.c:400,1
    - Dst: connect_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:402,1
    - Dst: wait_on_slots
      Src: /src/postgres/src/fe_utils/parallel_slot.c:412,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - sa
    - dbname
    argTypes:
    - ParallelSlotArray*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 369
    functionDepth: 2
    functionLinenumber: 369
    functionLinenumberEnd: 415
    functionName: ParallelSlotsGetIdle
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 3
    functionsReached:
    - find_any_idle_slot
    - Assert
    - wait_on_slots
    - find_unconnected_slot
    - find_matching_idle_slot
    - disconnectDatabase
    - connect_slot
    linkageType: ''
    returnType: ParallelSlot
    signature: 'ParallelSlot *

      ParallelSlotsGetIdle(ParallelSlotArray *sa, const char *dbname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:432,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:433,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:434,1
    - Dst: palloc0
      Src: /src/postgres/src/fe_utils/parallel_slot.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 5
    argNames:
    - numslots
    - cparams
    - progname
    - echo
    - initcmd
    argTypes:
    - int
    - ConnParams*
    - char*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 446
    functionName: ParallelSlotsSetup
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 3
    functionsReached:
    - Assert
    - palloc0
    linkageType: ''
    returnType: ParallelSlotArray
    signature: "ParallelSlotArray *\nParallelSlotsSetup(int numslots, ConnParams *cparams,
      const char *progname,\n\t\t\t\t   bool echo, const char *initcmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_unconnected_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:463,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/fe_utils/parallel_slot.c:467,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sa
    - conn
    argTypes:
    - ParallelSlotArray*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 468
    functionName: ParallelSlotsAdoptConn
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 3
    functionsReached:
    - find_unconnected_slot
    - disconnectDatabase
    linkageType: ''
    returnType: void
    signature: void ParallelSlotsAdoptConn(ParallelSlotArray *sa, PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: disconnectDatabase
      Src: /src/postgres/src/fe_utils/parallel_slot.c:489,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - sa
    argTypes:
    - ParallelSlotArray*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 491
    functionName: ParallelSlotsTerminate
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 3
    functionsReached:
    - disconnectDatabase
    linkageType: ''
    returnType: void
    signature: void ParallelSlotsTerminate(ParallelSlotArray *sa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: consumeQueryResult
      Src: /src/postgres/src/fe_utils/parallel_slot.c:508,1
    - Dst: ParallelSlotSetIdle
      Src: /src/postgres/src/fe_utils/parallel_slot.c:511,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - sa
    argTypes:
    - ParallelSlotArray*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 499
    functionDepth: 3
    functionLinenumber: 499
    functionLinenumberEnd: 515
    functionName: ParallelSlotsWaitCompletion
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 3
    functionsReached:
    - ParallelSlotSetIdle
    - consumeQueryResult
    linkageType: ''
    returnType: bool
    signature: bool ParallelSlotsWaitCompletion(ParallelSlotArray *sa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:540,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:541,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/fe_utils/parallel_slot.c:547,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/fe_utils/parallel_slot.c:549,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/parallel_slot.c:551,1
    - Dst: PQdb
      Src: /src/postgres/src/fe_utils/parallel_slot.c:552,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/fe_utils/parallel_slot.c:552,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/parallel_slot.c:554,1
    - Dst: PQclear
      Src: /src/postgres/src/fe_utils/parallel_slot.c:556,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - res
    - conn
    - context
    argTypes:
    - PGresult*
    - PGconn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 562
    functionName: TableCommandResultHandler
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 0
    functionsReached:
    - PQclear
    - strcmp
    - Assert
    - PQresultErrorField
    - PQdb
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: bool
    signature: bool TableCommandResultHandler(PGresult *res, PGconn *conn, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/fe_utils/conditional.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: conditional_stack_create
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 4
    functionsReached:
    - pg_malloc_object
    linkageType: ''
    returnType: ConditionalStack
    signature: ConditionalStack conditional_stack_create(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/fe_utils/conditional.c:35,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - cstack
    argTypes:
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 37
    functionName: conditional_stack_reset
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 1
    functionsReached:
    - conditional_stack_pop
    linkageType: ''
    returnType: void
    signature: void conditional_stack_reset(ConditionalStack cstack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_reset
      Src: /src/postgres/src/fe_utils/conditional.c:45,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/conditional.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cstack
    argTypes:
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: conditional_stack_destroy
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 2
    functionsReached:
    - free
    - conditional_stack_reset
    linkageType: ''
    returnType: void
    signature: void conditional_stack_destroy(ConditionalStack cstack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/fe_utils/conditional.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - cstack
    - new_state
    argTypes:
    - ConditionalStack
    - ifState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 62
    functionName: conditional_stack_push
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 5
    functionsReached:
    - pg_malloc_object
    linkageType: ''
    returnType: void
    signature: void conditional_stack_push(ConditionalStack cstack, ifState new_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/fe_utils/conditional.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cstack
    argTypes:
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 78
    functionName: conditional_stack_pop
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 7
    functionsReached:
    - free
    linkageType: ''
    returnType: bool
    signature: bool conditional_stack_pop(ConditionalStack cstack)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - cstack
    argTypes:
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 100
    functionName: conditional_stack_depth
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int conditional_stack_depth(ConditionalStack cstack)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/fe_utils/conditional.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cstack
    argTypes:
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 111
    functionName: conditional_stack_peek
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 6
    functionsReached:
    - conditional_stack_empty
    linkageType: ''
    returnType: ifState
    signature: ifState conditional_stack_peek(ConditionalStack cstack)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/fe_utils/conditional.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cstack
    - new_state
    argTypes:
    - ConditionalStack
    - ifState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 124
    functionName: conditional_stack_poke
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 6
    functionsReached:
    - conditional_stack_empty
    linkageType: ''
    returnType: bool
    signature: bool conditional_stack_poke(ConditionalStack cstack, ifState new_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cstack
    argTypes:
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: conditional_stack_empty
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool conditional_stack_empty(ConditionalStack cstack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/fe_utils/conditional.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - cstack
    argTypes:
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 145
    functionName: conditional_active
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 7
    functionsReached:
    - conditional_stack_peek
    linkageType: ''
    returnType: bool
    signature: bool conditional_active(ConditionalStack cstack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/conditional.c:153,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/fe_utils/conditional.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cstack
    - len
    argTypes:
    - ConditionalStack
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 155
    functionName: conditional_stack_set_query_len
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 1
    functionsReached:
    - Assert
    - conditional_stack_empty
    linkageType: ''
    returnType: void
    signature: void conditional_stack_set_query_len(ConditionalStack cstack, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/fe_utils/conditional.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cstack
    argTypes:
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 167
    functionName: conditional_stack_get_query_len
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 1
    functionsReached:
    - conditional_stack_empty
    linkageType: ''
    returnType: int
    signature: int conditional_stack_get_query_len(ConditionalStack cstack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/conditional.c:175,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/fe_utils/conditional.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cstack
    - depth
    argTypes:
    - ConditionalStack
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 177
    functionName: conditional_stack_set_paren_depth
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 1
    functionsReached:
    - Assert
    - conditional_stack_empty
    linkageType: ''
    returnType: void
    signature: void conditional_stack_set_paren_depth(ConditionalStack cstack, int
      depth)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/fe_utils/conditional.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cstack
    argTypes:
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 189
    functionName: conditional_stack_get_paren_depth
    functionSourceFile: /src/postgres/src/fe_utils/conditional.c
    functionUses: 1
    functionsReached:
    - conditional_stack_empty
    linkageType: ''
    returnType: int
    signature: int conditional_stack_get_paren_depth(ConditionalStack cstack)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_file.c:85,1
    - Dst: pstrdup
      Src: /src/postgres/src/fe_utils/astreamer_file.c:89,1
    - Dst: fopen
      Src: /src/postgres/src/fe_utils/astreamer_file.c:94,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - pathname
    - file
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 101
    functionName: astreamer_plain_writer_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - fopen
    - pstrdup
    - pg_fatal
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_plain_writer_new(char *pathname, FILE *file)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/astreamer_file.c:119,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 127
    functionName: astreamer_plain_writer_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 0
    functionsReached:
    - fwrite
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void astreamer_plain_writer_content(astreamer *streamer,\n\t\t\t\t\t\t\t
      \  astreamer_member *member, const char *data,\n\t\t\t\t\t\t\t   int len, astreamer_archive_context
      context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/postgres/src/fe_utils/astreamer_file.c:140,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 146
    functionName: astreamer_plain_writer_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - fclose
    linkageType: ''
    returnType: void
    signature: void astreamer_plain_writer_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_file.c:158,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_file.c:159,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_file.c:161,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_file.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 163
    functionName: astreamer_plain_writer_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_plain_writer_free(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_file.c:192,1
    - Dst: pstrdup
      Src: /src/postgres/src/fe_utils/astreamer_file.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - basepath
    - (*link_map) (const char *)
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 200
    functionName: astreamer_extractor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - pstrdup
    linkageType: ''
    returnType: astreamer
    signature: "astreamer *\nastreamer_extractor_new(const char *basepath,\n\t\t\t\t\t\tconst
      char *(*link_map) (const char *),\n\t\t\t\t\t\tvoid (*report_output_file) (const
      char *))"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_file.c:213,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_file.c:214,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_file.c:219,1
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/fe_utils/astreamer_file.c:221,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:222,1
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/astreamer_file.c:226,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/astreamer_file.c:230,1
    - Dst: create_file_for_extract
      Src: /src/postgres/src/fe_utils/astreamer_file.c:237,1
    - Dst: extract_directory
      Src: /src/postgres/src/fe_utils/astreamer_file.c:240,1
    - Dst: astreamer_extractor*::link_map
      Src: /src/postgres/src/fe_utils/astreamer_file.c:246,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/fe_utils/astreamer_file.c:248,1
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/fe_utils/astreamer_file.c:249,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:251,1
    - Dst: extract_link
      Src: /src/postgres/src/fe_utils/astreamer_file.c:255,1
    - Dst: astreamer_extractor*::report_output_file
      Src: /src/postgres/src/fe_utils/astreamer_file.c:260,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/astreamer_file.c:268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:273,1
    - Dst: fclose
      Src: /src/postgres/src/fe_utils/astreamer_file.c:281,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:282,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:292,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 49
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 294
    functionName: astreamer_extractor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 0
    functionsReached:
    - path_is_safe_for_extraction
    - is_absolute_path
    - Assert
    - pg_fatal
    - create_file_for_extract
    - fclose
    - astreamer_extractor*::report_output_file
    - strlen
    - extract_link
    - astreamer_extractor*::link_map
    - extract_directory
    - fwrite
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void astreamer_extractor_content(astreamer *streamer, astreamer_member
      *member,\n\t\t\t\t\t\t\tconst char *data, int len,\n\t\t\t\t\t\t\tastreamer_archive_context
      context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: last_dir_separator
      Src: /src/postgres/src/fe_utils/astreamer_file.c:311,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:313,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:314,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:315,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:316,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:317,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/astreamer_file.c:320,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/astreamer_file.c:320,1
    - Dst: strstr
      Src: /src/postgres/src/fe_utils/astreamer_file.c:322,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 7
    argCount: 1
    argNames:
    - pathname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 328
    functionName: should_allow_existing_directory
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strstr
    - strspn
    - strlen
    - last_dir_separator
    linkageType: ''
    returnType: bool
    signature: bool should_allow_existing_directory(const char *pathname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mkdir
      Src: /src/postgres/src/fe_utils/astreamer_file.c:336,1
    - Dst: should_allow_existing_directory
      Src: /src/postgres/src/fe_utils/astreamer_file.c:337,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:338,1
    - Dst: chmod
      Src: /src/postgres/src/fe_utils/astreamer_file.c:342,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:343,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - filename
    - mode
    argTypes:
    - char*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 346
    functionName: extract_directory
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 1
    functionsReached:
    - chmod
    - mkdir
    - should_allow_existing_directory
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void extract_directory(const char *filename, mode_t mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: symlink
      Src: /src/postgres/src/fe_utils/astreamer_file.c:361,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - filename
    - linktarget
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: extract_link
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 1
    functionsReached:
    - symlink
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void extract_link(const char *filename, const char *linktarget)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/fe_utils/astreamer_file.c:376,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:378,1
    - Dst: chmod
      Src: /src/postgres/src/fe_utils/astreamer_file.c:381,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:382,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - filename
    - mode
    argTypes:
    - char*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 387
    functionName: create_file_for_extract
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 1
    functionsReached:
    - fopen
    - chmod
    - pg_fatal
    linkageType: ''
    returnType: FILE
    signature: 'FILE *

      create_file_for_extract(const char *filename, mode_t mode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_file.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 401
    functionName: astreamer_extractor_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void astreamer_extractor_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_file.c:411,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_file.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 413
    functionName: astreamer_extractor_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_extractor_free(astreamer *streamer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:49,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 58
    functionName: defaultGetLocalPQExpBuffer
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 0
    functionsReached:
    - resetPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: PQExpBuffer
    signature: PQExpBuffer defaultGetLocalPQExpBuffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: setFmtEncoding
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFmtEncoding(int encoding)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/string_utils.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 92
    functionName: getFmtEncoding
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int getFmtEncoding(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getLocalPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:103,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/string_utils.c:107,1
    - Dst: ScanKeywordLookup
      Src: /src/postgres/src/fe_utils/string_utils.c:144,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:153,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:157,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/fe_utils/string_utils.c:165,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:173,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:174,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/fe_utils/string_utils.c:181,1
    - Dst: pg_encoding_verifymbchar
      Src: /src/postgres/src/fe_utils/string_utils.c:184,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:203,1
    - Dst: pg_encoding_set_invalid
      Src: /src/postgres/src/fe_utils/string_utils.c:205,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:224,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:231,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 51
    argCount: 2
    argNames:
    - rawid
    - encoding
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 235
    functionName: fmtIdEnc
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 3
    functionsReached:
    - pg_encoding_mblen
    - IS_HIGHBIT_SET
    - getLocalPQExpBuffer
    - enlargePQExpBuffer
    - pg_encoding_set_invalid
    - strlen
    - ScanKeywordLookup
    - appendPQExpBufferChar
    - pg_encoding_verifymbchar
    - appendPQExpBufferStr
    linkageType: ''
    returnType: char
    signature: 'char *

      fmtIdEnc(const char *rawid, int encoding)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fmtIdEnc
      Src: /src/postgres/src/fe_utils/string_utils.c:250,1
    - Dst: getFmtEncoding
      Src: /src/postgres/src/fe_utils/string_utils.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rawid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 251
    functionName: fmtId
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 84
    functionsReached:
    - fmtIdEnc
    - getFmtEncoding
    linkageType: ''
    returnType: char
    signature: 'char *

      fmtId(const char *rawid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:266,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:271,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/fe_utils/string_utils.c:271,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:273,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/fe_utils/string_utils.c:273,1
    - Dst: getLocalPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:275,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:277,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - schema
    - id
    - encoding
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 281
    functionName: fmtQualifiedIdEnc
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 4
    functionsReached:
    - getLocalPQExpBuffer
    - fmtIdEnc
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    - appendPQExpBuffer
    - createPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      fmtQualifiedIdEnc(const char *schema, const char *id, int encoding)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fmtQualifiedIdEnc
      Src: /src/postgres/src/fe_utils/string_utils.c:298,1
    - Dst: getFmtEncoding
      Src: /src/postgres/src/fe_utils/string_utils.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - schema
    - id
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 299
    functionName: fmtQualifiedId
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 6
    functionsReached:
    - fmtQualifiedIdEnc
    - getFmtEncoding
    linkageType: ''
    returnType: char
    signature: 'char *

      fmtQualifiedId(const char *schema, const char *id)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/string_utils.c:320,1
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/string_utils.c:323,1
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/string_utils.c:329,1
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/string_utils.c:333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - version_number
    - include_minor
    - buf
    - buflen
    argTypes:
    - int
    - bool
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 337
    functionName: formatPGVersionNumber
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 4
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *\nformatPGVersionNumber(int version_number, bool include_minor,\n\t\t\t\t\t
      \ char *buf, size_t buflen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/string_utils.c:354,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:359,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/fe_utils/string_utils.c:372,1
    - Dst: SQL_STR_DOUBLE
      Src: /src/postgres/src/fe_utils/string_utils.c:375,1
    - Dst: PQmblen
      Src: /src/postgres/src/fe_utils/string_utils.c:385,1
    - Dst: pg_encoding_verifymbchar
      Src: /src/postgres/src/fe_utils/string_utils.c:388,1
    - Dst: pg_encoding_set_invalid
      Src: /src/postgres/src/fe_utils/string_utils.c:410,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 4
    argNames:
    - buf
    - str
    - encoding
    - std_strings
    argTypes:
    - PQExpBuffer
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 437
    functionName: appendStringLiteral
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 1
    functionsReached:
    - SQL_STR_DOUBLE
    - IS_HIGHBIT_SET
    - enlargePQExpBuffer
    - PQmblen
    - pg_encoding_set_invalid
    - strlen
    - pg_encoding_verifymbchar
    linkageType: ''
    returnType: void
    signature: "void appendStringLiteral(PQExpBuffer buf, const char *str,\n\t\t\t\t\tint
      encoding, bool std_strings)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/string_utils.c:448,1
    - Dst: strchr
      Src: /src/postgres/src/fe_utils/string_utils.c:454,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/string_utils.c:454,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:458,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:459,1
    - Dst: appendStringLiteral
      Src: /src/postgres/src/fe_utils/string_utils.c:460,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/fe_utils/string_utils.c:460,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:465,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:467,1
    - Dst: PQescapeStringConn
      Src: /src/postgres/src/fe_utils/string_utils.c:468,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:470,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - buf
    - str
    - conn
    argTypes:
    - PQExpBuffer
    - char*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 445
    functionDepth: 2
    functionLinenumber: 445
    functionLinenumberEnd: 471
    functionName: appendStringLiteralConn
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 17
    functionsReached:
    - appendStringLiteral
    - strchr
    - PQescapeStringConn
    - enlargePQExpBuffer
    - PQclientEncoding
    - strlen
    - PQserverVersion
    - appendPQExpBufferChar
    linkageType: ''
    returnType: void
    signature: void appendStringLiteralConn(PQExpBuffer buf, const char *str, PGconn
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:488,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:491,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:493,1
    - Dst: strstr
      Src: /src/postgres/src/fe_utils/string_utils.c:500,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:502,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:507,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:510,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:511,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:512,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:514,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - buf
    - str
    - dqprefix
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 515
    functionName: appendStringLiteralDQ
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 1
    functionsReached:
    - strstr
    - destroyPQExpBuffer
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - createPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void appendStringLiteralDQ(PQExpBuffer buf, const char *str, const
      char *dqprefix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:541,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - buf
    - str
    - length
    - std_strings
    argTypes:
    - PQExpBuffer
    - unsigned char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 564
    functionName: appendByteaLiteral
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 0
    functionsReached:
    - enlargePQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void appendByteaLiteral(PQExpBuffer buf, const unsigned char *str,
      size_t length,\n\t\t\t\t   bool std_strings)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendShellStringNoError
      Src: /src/postgres/src/fe_utils/string_utils.c:582,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/string_utils.c:584,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/string_utils.c:585,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/string_utils.c:587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 579
    functionDepth: 1
    functionLinenumber: 579
    functionLinenumberEnd: 589
    functionName: appendShellString
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 10
    functionsReached:
    - _
    - exit
    - appendShellStringNoError
    - fprintf
    linkageType: ''
    returnType: void
    signature: void appendShellString(PQExpBuffer buf, const char *str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/string_utils.c:605,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/string_utils.c:605,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:607,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:612,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:622,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:624,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:626,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:640,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:654,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:657,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:671,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:672,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:681,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:684,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 42
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 591
    functionDepth: 1
    functionLinenumber: 591
    functionLinenumberEnd: 688
    functionName: appendShellStringNoError
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 2
    functionsReached:
    - appendPQExpBufferChar
    - strspn
    - strlen
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: bool appendShellStringNoError(PQExpBuffer buf, const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:719,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:724,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:726,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:729,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:732,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 20
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 733
    functionName: appendConnStrVal
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 7
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void appendConnStrVal(PQExpBuffer buf, const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/string_utils.c:757,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/string_utils.c:758,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/string_utils.c:760,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:774,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:781,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:782,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:784,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/fe_utils/string_utils.c:785,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:793,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/fe_utils/string_utils.c:793,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:795,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:799,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:800,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/fe_utils/string_utils.c:800,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:802,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - buf
    - dbname
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 740
    functionDepth: 2
    functionLinenumber: 740
    functionLinenumberEnd: 803
    functionName: appendPsqlMetaConnect
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 2
    functionsReached:
    - _
    - appendConnStrVal
    - fmtIdEnc
    - initPQExpBuffer
    - appendPQExpBufferChar
    - termPQExpBuffer
    - exit
    - appendPQExpBufferStr
    - fprintf
    linkageType: ''
    returnType: void
    signature: void appendPsqlMetaConnect(PQExpBuffer buf, const char *dbname)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/string_utils.c:836,1
    - Dst: malloc
      Src: /src/postgres/src/fe_utils/string_utils.c:839,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 3
    argNames:
    - atext
    - itemarray
    - nitems
    argTypes:
    - char*
    - char***
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 886
    functionName: parsePGArray
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 8
    functionsReached:
    - malloc
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool parsePGArray(const char *atext, char ***itemarray, int *nitems)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:906,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/fe_utils/string_utils.c:911,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:936,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:942,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:943,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:945,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:948,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 26
    argCount: 2
    argNames:
    - buffer
    - value
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 949
    functionName: appendPGArray
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 3
    functionsReached:
    - appendPQExpBufferChar
    - pg_strcasecmp
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void appendPGArray(PQExpBuffer buffer, const char *value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: parsePGArray
      Src: /src/postgres/src/fe_utils/string_utils.c:971,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/string_utils.c:973,1
    - Dst: strchr
      Src: /src/postgres/src/fe_utils/string_utils.c:989,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:999,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1000,1
    - Dst: fmtId
      Src: /src/postgres/src/fe_utils/string_utils.c:1000,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/string_utils.c:1010,1
    - Dst: fmtId
      Src: /src/postgres/src/fe_utils/string_utils.c:1010,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1011,1
    - Dst: appendStringLiteral
      Src: /src/postgres/src/fe_utils/string_utils.c:1013,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/string_utils.c:1016,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 5
    argNames:
    - buffer
    - reloptions
    - prefix
    - encoding
    - std_strings
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 963
    functionDepth: 3
    functionLinenumber: 963
    functionLinenumberEnd: 1019
    functionName: appendReloptionsArray
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 2
    functionsReached:
    - appendStringLiteral
    - strcmp
    - strchr
    - appendPQExpBufferStr
    - free
    - fmtId
    - appendPQExpBuffer
    - parsePGArray
    linkageType: ''
    returnType: bool
    signature: "bool appendReloptionsArray(PQExpBuffer buffer, const char *reloptions,\n\t\t\t\t\t
      \ const char *prefix, int encoding, bool std_strings)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: WHEREAND
      Src: /src/postgres/src/fe_utils/string_utils.c:1074,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1075,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1080,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1081,1
    - Dst: patternToSQLRegex
      Src: /src/postgres/src/fe_utils/string_utils.c:1091,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/fe_utils/string_utils.c:1091,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/string_utils.c:1113,1
    - Dst: WHEREAND
      Src: /src/postgres/src/fe_utils/string_utils.c:1115,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1118,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/fe_utils/string_utils.c:1120,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/string_utils.c:1121,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1122,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1123,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/fe_utils/string_utils.c:1126,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/string_utils.c:1127,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1128,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1129,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1133,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/fe_utils/string_utils.c:1134,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/string_utils.c:1135,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1136,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1137,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/string_utils.c:1147,1
    - Dst: WHEREAND
      Src: /src/postgres/src/fe_utils/string_utils.c:1149,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1150,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/fe_utils/string_utils.c:1151,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/string_utils.c:1152,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1153,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1154,1
    - Dst: WHEREAND
      Src: /src/postgres/src/fe_utils/string_utils.c:1162,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1163,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1167,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1168,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 54
    argCount: 11
    argNames:
    - conn
    - buf
    - pattern
    - have_where
    - force_escape
    - schemavar
    - namevar
    - altnamevar
    - visibilityrule
    - dbnamebuf
    - dotcnt
    argTypes:
    - PGconn*
    - PQExpBuffer
    - char*
    - bool
    - bool
    - char*
    - char*
    - char*
    - char*
    - PQExpBuffer
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1050
    functionDepth: 3
    functionLinenumber: 1050
    functionLinenumberEnd: 1172
    functionName: processSQLNamePattern
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 7
    functionsReached:
    - strcmp
    - patternToSQLRegex
    - appendPQExpBufferStr
    - appendPQExpBufferChar
    - PQclientEncoding
    - initPQExpBuffer
    - PQserverVersion
    - termPQExpBuffer
    - WHEREAND
    - appendStringLiteralConn
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool processSQLNamePattern(PGconn *conn, PQExpBuffer buf, const char
      *pattern,\n\t\t\t\t\t  bool have_where, bool force_escape,\n\t\t\t\t\t  const
      char *schemavar, const char *namevar,\n\t\t\t\t\t  const char *altnamevar, const
      char *visibilityrule,\n\t\t\t\t\t  PQExpBuffer dbnamebuf, int *dotcnt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1062
    functionDepth: 0
    functionLinenumber: 1062
    functionLinenumberEnd: 1065
    functionName: WHEREAND
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WHEREAND()
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/string_utils.c:1236,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/string_utils.c:1237,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/string_utils.c:1240,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/string_utils.c:1241,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1258,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1262,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1263,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1273,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1275,1
    - Dst: isupper
      Src: /src/postgres/src/fe_utils/string_utils.c:1282,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1284,1
    - Dst: pg_tolower
      Src: /src/postgres/src/fe_utils/string_utils.c:1285,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1287,1
    - Dst: pg_tolower
      Src: /src/postgres/src/fe_utils/string_utils.c:1288,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1293,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1295,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1300,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1302,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1312,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1314,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1315,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1319,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1330,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1332,1
    - Dst: strchr
      Src: /src/postgres/src/fe_utils/string_utils.c:1351,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1352,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1354,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/fe_utils/string_utils.c:1355,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1359,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1360,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1364,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1368,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1369,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1375,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1376,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1383,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1385,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1386,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1390,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 100
    argCount: 8
    argNames:
    - encoding
    - dbnamebuf
    - schemabuf
    - namebuf
    - pattern
    - force_escape
    - want_literal_dbname
    - dotcnt
    argTypes:
    - int
    - PQExpBuffer
    - PQExpBuffer
    - PQExpBuffer
    - char*
    - bool
    - bool
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1222
    functionDepth: 1
    functionLinenumber: 1222
    functionLinenumberEnd: 1391
    functionName: patternToSQLRegex
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 4
    functionsReached:
    - PQmblenBounded
    - strchr
    - Assert
    - isupper
    - pg_tolower
    - initPQExpBuffer
    - appendPQExpBufferChar
    - termPQExpBuffer
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: "void patternToSQLRegex(int encoding, PQExpBuffer dbnamebuf, PQExpBuffer
      schemabuf,\n\t\t\t\t  PQExpBuffer namebuf, const char *pattern, bool force_escape,\n\t\t\t\t
      \ bool want_literal_dbname, int *dotcnt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:97,1
    - Dst: initStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 105
    functionName: astreamer_tar_parser_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 3
    functionsReached:
    - palloc0_object
    - initStringInfo
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_tar_parser_new(astreamer *next)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:119,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:120,1
    - Dst: astreamer_buffer_until
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:132,1
    - Dst: astreamer_tar_header
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:142,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:147,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:173,1
    - Dst: Min
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:175,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:176,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:177,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:190,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:196,1
    - Dst: astreamer_buffer_until
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:220,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:225,1
    - Dst: astreamer_buffer_bytes
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:249,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:254,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 257
    functionName: astreamer_tar_parser_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - astreamer_content
    - Assert
    - astreamer_tar_header
    - pg_fatal
    - astreamer_buffer_bytes
    - astreamer_buffer_until
    - Min
    linkageType: ''
    returnType: void
    signature: "void astreamer_tar_parser_content(astreamer *streamer, astreamer_member
      *member,\n\t\t\t\t\t\t\t const char *data, int len,\n\t\t\t\t\t\t\t astreamer_archive_context
      context)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:274,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:277,1
    - Dst: isValidTarHeader
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:299,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:300,1
    - Dst: strlcpy
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:305,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:307,1
    - Dst: path_is_safe_for_extraction
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:308,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:309,1
    - Dst: read_tar_number
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:312,1
    - Dst: read_tar_number
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:313,1
    - Dst: read_tar_number
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:314,1
    - Dst: read_tar_number
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:315,1
    - Dst: strlcpy
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:328,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:332,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:340,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:343,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 1
    argNames:
    - mystreamer
    argTypes:
    - astreamer_tar_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 348
    functionName: astreamer_tar_header
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - astreamer_content
    - path_is_safe_for_extraction
    - isValidTarHeader
    - Assert
    - read_tar_number
    - pg_fatal
    - memset
    - tarPaddingBytesRequired
    linkageType: ''
    returnType: bool
    signature: bool astreamer_tar_header(astreamer_tar_parser *mystreamer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:361,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:364,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 370
    functionName: astreamer_tar_parser_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - astreamer_finalize
    - astreamer_content
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void astreamer_tar_parser_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:378,1
    - Dst: astreamer_free
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:379,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 381
    functionName: astreamer_tar_parser_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - pfree
    - astreamer_free
    linkageType: ''
    returnType: void
    signature: void astreamer_tar_parser_free(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 402
    functionName: astreamer_tar_archiver_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_tar_archiver_new(astreamer *next)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:434,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:438,1
    - Dst: tarCreateHeader
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:441,1
    - Dst: time
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:443,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:453,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:456,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:466,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:471,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 472
    functionName: astreamer_tar_archiver_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - astreamer_content
    - Assert
    - tarCreateHeader
    - time
    - memset
    - tarPaddingBytesRequired
    linkageType: ''
    returnType: void
    signature: "void astreamer_tar_archiver_content(astreamer *streamer,\n\t\t\t\t\t\t\t
      \  astreamer_member *member,\n\t\t\t\t\t\t\t   const char *data, int len,\n\t\t\t\t\t\t\t
      \  astreamer_archive_context context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 481
    functionName: astreamer_tar_archiver_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - astreamer_finalize
    linkageType: ''
    returnType: void
    signature: void astreamer_tar_archiver_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_free
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:489,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 491
    functionName: astreamer_tar_archiver_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_tar_archiver_free(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 508
    functionName: astreamer_tar_terminator_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_tar_terminator_new(astreamer *next)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:520,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:521,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 525
    functionName: astreamer_tar_terminator_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - Assert
    - astreamer_content
    linkageType: ''
    returnType: void
    signature: "void astreamer_tar_terminator_content(astreamer *streamer,\n\t\t\t\t\t\t\t\t
      astreamer_member *member,\n\t\t\t\t\t\t\t\t const char *data, int len,\n\t\t\t\t\t\t\t\t
      astreamer_archive_context context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:536,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:537,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 540
    functionName: astreamer_tar_terminator_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - astreamer_finalize
    - astreamer_content
    - memset
    linkageType: ''
    returnType: void
    signature: void astreamer_tar_terminator_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_free
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:548,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 550
    functionName: astreamer_tar_terminator_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_tar_terminator_free(astreamer *streamer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/fe_utils/mbprint.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 41
    functionName: pg_get_utf8_id
    functionSourceFile: /src/postgres/src/fe_utils/mbprint.c
    functionUses: 0
    functionsReached:
    - pg_char_to_encoding
    linkageType: ''
    returnType: int
    signature: int pg_get_utf8_id(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 72
    functionName: utf8_to_unicode
    functionSourceFile: /src/postgres/src/fe_utils/mbprint.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char32_t
    signature: char32_t utf8_to_unicode(const unsigned char *c)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 25
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 132
    functionName: utf_charcheck
    functionSourceFile: /src/postgres/src/fe_utils/mbprint.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int utf_charcheck(const unsigned char *c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: utf_charcheck
      Src: /src/postgres/src/fe_utils/mbprint.c:144,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - pwcs
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 165
    functionName: mb_utf_validate
    functionSourceFile: /src/postgres/src/fe_utils/mbprint.c
    functionUses: 0
    functionsReached:
    - utf_charcheck
    linkageType: ''
    returnType: void
    signature: void mb_utf_validate(unsigned char *pwcs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQmblen
      Src: /src/postgres/src/fe_utils/mbprint.c:186,1
    - Dst: PQdsplen
      Src: /src/postgres/src/fe_utils/mbprint.c:190,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - pwcs
    - len
    - encoding
    argTypes:
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 198
    functionName: pg_wcswidth
    functionSourceFile: /src/postgres/src/fe_utils/mbprint.c
    functionUses: 0
    functionsReached:
    - PQdsplen
    - PQmblen
    linkageType: ''
    returnType: int
    signature: int pg_wcswidth(const char *pwcs, size_t len, int encoding)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PQmblen
      Src: /src/postgres/src/fe_utils/mbprint.c:223,1
    - Dst: PQdsplen
      Src: /src/postgres/src/fe_utils/mbprint.c:226,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 6
    argNames:
    - pwcs
    - len
    - encoding
    - result_width
    - result_height
    - result_format_size
    argTypes:
    - unsigned char*
    - size_t
    - int
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 285
    functionName: pg_wcssize
    functionSourceFile: /src/postgres/src/fe_utils/mbprint.c
    functionUses: 0
    functionsReached:
    - PQdsplen
    - PQmblen
    linkageType: ''
    returnType: void
    signature: "void pg_wcssize(const unsigned char *pwcs, size_t len, int encoding,\n\t\t
      \  int *result_width, int *result_height, int *result_format_size)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PQmblen
      Src: /src/postgres/src/fe_utils/mbprint.c:304,1
    - Dst: PQdsplen
      Src: /src/postgres/src/fe_utils/mbprint.c:307,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/mbprint.c:319,1
    - Dst: strcpy
      Src: /src/postgres/src/fe_utils/mbprint.c:326,1
    - Dst: sprintf
      Src: /src/postgres/src/fe_utils/mbprint.c:340,1
    - Dst: sprintf
      Src: /src/postgres/src/fe_utils/mbprint.c:353,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/fe_utils/mbprint.c:353,1
    - Dst: sprintf
      Src: /src/postgres/src/fe_utils/mbprint.c:361,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/mbprint.c:380,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 56
    argCount: 5
    argNames:
    - pwcs
    - len
    - encoding
    - lines
    - count
    argTypes:
    - unsigned char*
    - size_t
    - int
    - struct lineptr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 383
    functionName: pg_wcsformat
    functionSourceFile: /src/postgres/src/fe_utils/mbprint.c
    functionUses: 0
    functionsReached:
    - utf8_to_unicode
    - PQdsplen
    - PQmblen
    - sprintf
    - exit
    - strcpy
    linkageType: ''
    returnType: void
    signature: "void pg_wcsformat(const unsigned char *pwcs, size_t len, int encoding,\n\t\t\t
      struct lineptr *lines, int count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mb_utf_validate
      Src: /src/postgres/src/fe_utils/mbprint.c:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pwcs
    - encoding
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 391
    functionDepth: 2
    functionLinenumber: 391
    functionLinenumberEnd: 405
    functionName: mbvalidate
    functionSourceFile: /src/postgres/src/fe_utils/mbprint.c
    functionUses: 0
    functionsReached:
    - mb_utf_validate
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      mbvalidate(unsigned char *pwcs, int encoding)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/connect_utils.c:40,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/connect_utils.c:44,1
    - Dst: simple_prompt
      Src: /src/postgres/src/fe_utils/connect_utils.c:49,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/connect_utils.c:85,1
    - Dst: lengthof
      Src: /src/postgres/src/fe_utils/connect_utils.c:85,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/fe_utils/connect_utils.c:88,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/connect_utils.c:91,1
    - Dst: PQstatus
      Src: /src/postgres/src/fe_utils/connect_utils.c:97,1
    - Dst: PQconnectionNeedsPassword
      Src: /src/postgres/src/fe_utils/connect_utils.c:98,1
    - Dst: PQfinish
      Src: /src/postgres/src/fe_utils/connect_utils.c:101,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/connect_utils.c:102,1
    - Dst: simple_prompt
      Src: /src/postgres/src/fe_utils/connect_utils.c:103,1
    - Dst: PQstatus
      Src: /src/postgres/src/fe_utils/connect_utils.c:109,1
    - Dst: PQfinish
      Src: /src/postgres/src/fe_utils/connect_utils.c:113,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/connect_utils.c:116,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/fe_utils/connect_utils.c:116,1
    - Dst: PQclear
      Src: /src/postgres/src/fe_utils/connect_utils.c:120,1
    - Dst: executeQuery
      Src: /src/postgres/src/fe_utils/connect_utils.c:120,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 5
    argNames:
    - cparams
    - progname
    - echo
    - fail_ok
    - allow_password_reuse
    argTypes:
    - ConnParams*
    - char*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 123
    functionName: connectDatabase
    functionSourceFile: /src/postgres/src/fe_utils/connect_utils.c
    functionUses: 14
    functionsReached:
    - PQclear
    - Assert
    - simple_prompt
    - pg_fatal
    - PQfinish
    - PQconnectdbParams
    - free
    - PQerrorMessage
    - PQconnectionNeedsPassword
    - lengthof
    - executeQuery
    - PQstatus
    linkageType: ''
    returnType: PGconn
    signature: "PGconn *\nconnectDatabase(const ConnParams *cparams, const char *progname,\n\t\t\t\tbool
      echo, bool fail_ok, bool allow_password_reuse)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connectDatabase
      Src: /src/postgres/src/fe_utils/connect_utils.c:141,1
    - Dst: connectDatabase
      Src: /src/postgres/src/fe_utils/connect_utils.c:145,1
    - Dst: connectDatabase
      Src: /src/postgres/src/fe_utils/connect_utils.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - cparams
    - progname
    - echo
    argTypes:
    - ConnParams*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 152
    functionName: connectMaintenanceDatabase
    functionSourceFile: /src/postgres/src/fe_utils/connect_utils.c
    functionUses: 8
    functionsReached:
    - connectDatabase
    linkageType: ''
    returnType: PGconn
    signature: "PGconn *\nconnectMaintenanceDatabase(ConnParams *cparams,\n\t\t\t\t\t\t
      \  const char *progname, bool echo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/connect_utils.c:160,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/fe_utils/connect_utils.c:162,1
    - Dst: PQcancelCreate
      Src: /src/postgres/src/fe_utils/connect_utils.c:164,1
    - Dst: PQcancelBlocking
      Src: /src/postgres/src/fe_utils/connect_utils.c:166,1
    - Dst: PQcancelFinish
      Src: /src/postgres/src/fe_utils/connect_utils.c:167,1
    - Dst: PQfinish
      Src: /src/postgres/src/fe_utils/connect_utils.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 171
    functionName: disconnectDatabase
    functionSourceFile: /src/postgres/src/fe_utils/connect_utils.c
    functionUses: 6
    functionsReached:
    - PQtransactionStatus
    - PQcancelFinish
    - PQcancelCreate
    - Assert
    - PQfinish
    - PQcancelBlocking
    linkageType: ''
    returnType: void
    signature: void disconnectDatabase(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:79,1
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:81,1
    - Dst: initStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:86,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:91,1
    - Dst: LZ4F_createCompressionContext
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:95,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:96,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:97,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:98,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - next
    - compress
    argTypes:
    - astreamer*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 105
    functionName: astreamer_lz4_compressor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - LZ4F_getErrorName
    - LZ4F_createCompressionContext
    - Assert
    - initStringInfo
    - pg_fatal
    - memset
    - LZ4F_isError
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_lz4_compressor_new(astreamer *next, pg_compress_specification *compress)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_compressBegin
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:136,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:141,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:142,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:143,1
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:161,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:164,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:171,1
    - Dst: LZ4F_compressUpdate
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:186,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:190,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:191,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:192,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 195
    functionName: astreamer_lz4_compressor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - astreamer_content
    - LZ4F_compressBegin
    - pg_fatal
    - LZ4F_compressUpdate
    - enlargeStringInfo
    - LZ4F_compressBound
    - LZ4F_isError
    linkageType: ''
    returnType: void
    signature: "void astreamer_lz4_compressor_content(astreamer *streamer,\n\t\t\t\t\t\t\t\t
      astreamer_member *member,\n\t\t\t\t\t\t\t\t const char *data, int len,\n\t\t\t\t\t\t\t\t
      astreamer_archive_context context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:212,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:216,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:223,1
    - Dst: LZ4F_compressEnd
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:239,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:242,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:243,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:244,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:248,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:253,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 254
    functionName: astreamer_lz4_compressor_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - astreamer_content
    - LZ4F_compressEnd
    - pg_fatal
    - astreamer_finalize
    - enlargeStringInfo
    - LZ4F_compressBound
    - LZ4F_isError
    linkageType: ''
    returnType: void
    signature: void astreamer_lz4_compressor_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_free
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:265,1
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:266,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:267,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 269
    functionName: astreamer_lz4_compressor_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - pfree
    - LZ4F_freeCompressionContext
    linkageType: ''
    returnType: void
    signature: void astreamer_lz4_compressor_free(astreamer *streamer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:283,1
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:285,1
    - Dst: initStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:290,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:292,1
    - Dst: LZ4F_createDecompressionContext
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:295,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:296,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:297,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:298,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 305
    functionName: astreamer_lz4_decompressor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 3
    functionsReached:
    - palloc0_object
    - LZ4F_getErrorName
    - Assert
    - initStringInfo
    - pg_fatal
    - LZ4F_createDecompressionContext
    - enlargeStringInfo
    - LZ4F_isError
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_lz4_decompressor_new(astreamer *next)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_decompress
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:353,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:357,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:358,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:359,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:376,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 386
    functionName: astreamer_lz4_decompressor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - astreamer_content
    - LZ4F_decompress
    - pg_fatal
    - LZ4F_isError
    linkageType: ''
    returnType: void
    signature: "void astreamer_lz4_decompressor_content(astreamer *streamer,\n\t\t\t\t\t\t\t\t
      \  astreamer_member *member,\n\t\t\t\t\t\t\t\t   const char *data, int len,\n\t\t\t\t\t\t\t\t
      \  astreamer_archive_context context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:403,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 409
    functionName: astreamer_lz4_decompressor_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 0
    functionsReached:
    - astreamer_finalize
    - astreamer_content
    linkageType: ''
    returnType: void
    signature: void astreamer_lz4_decompressor_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_free
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:420,1
    - Dst: LZ4F_freeDecompressionContext
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:421,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:422,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 424
    functionName: astreamer_lz4_decompressor_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - pfree
    - LZ4F_freeDecompressionContext
    linkageType: ''
    returnType: void
    signature: void astreamer_lz4_decompressor_free(astreamer *streamer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/option_utils.c:29,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/option_utils.c:29,1
    - Dst: hlp
      Src: /src/postgres/src/fe_utils/option_utils.c:31,1
    - Dst: get_progname
      Src: /src/postgres/src/fe_utils/option_utils.c:31,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/option_utils.c:32,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/option_utils.c:34,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/option_utils.c:34,1
    - Dst: printf
      Src: /src/postgres/src/fe_utils/option_utils.c:36,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/option_utils.c:37,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 4
    argNames:
    - argc
    - argv
    - fixed_progname
    - hlp
    argTypes:
    - int
    - char*[]
    - char*
    - help_handler
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 40
    functionName: handle_help_version_opts
    functionSourceFile: /src/postgres/src/fe_utils/option_utils.c
    functionUses: 11
    functionsReached:
    - get_progname
    - strcmp
    - hlp
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: "void handle_help_version_opts(int argc, char *argv[],\n\t\t\t\t\t\t
      const char *fixed_progname, help_handler hlp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtoint
      Src: /src/postgres/src/fe_utils/option_utils.c:58,1
    - Dst: isspace
      Src: /src/postgres/src/fe_utils/option_utils.c:64,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/option_utils.c:69,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/option_utils.c:76,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 5
    argNames:
    - optarg
    - optname
    - min_range
    - max_range
    - result
    argTypes:
    - char*
    - char*
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 84
    functionName: option_parse_int
    functionSourceFile: /src/postgres/src/fe_utils/option_utils.c
    functionUses: 13
    functionsReached:
    - pg_log_error
    - strtoint
    - isspace
    linkageType: ''
    returnType: bool
    signature: "bool option_parse_int(const char *optarg, const char *optname,\n\t\t\t\t
      int min_range, int max_range,\n\t\t\t\t int *result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/option_utils.c:92,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/option_utils.c:94,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/option_utils.c:99,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/option_utils.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - optarg
    - sync_method
    argTypes:
    - char*
    - DataDirSyncMethod*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 111
    functionName: parse_sync_method
    functionSourceFile: /src/postgres/src/fe_utils/option_utils.c
    functionUses: 7
    functionsReached:
    - pg_log_error
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool parse_sync_method(const char *optarg, DataDirSyncMethod *sync_method)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/option_utils.c:130,1
    - Dst: va_start
      Src: /src/postgres/src/fe_utils/option_utils.c:132,1
    - Dst: va_arg
      Src: /src/postgres/src/fe_utils/option_utils.c:135,1
    - Dst: va_arg
      Src: /src/postgres/src/fe_utils/option_utils.c:136,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/option_utils.c:139,1
    - Dst: va_end
      Src: /src/postgres/src/fe_utils/option_utils.c:145,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - n
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 146
    functionName: check_mut_excl_opts_internal
    functionSourceFile: /src/postgres/src/fe_utils/option_utils.c
    functionUses: 0
    functionsReached:
    - va_end
    - Assert
    - va_start
    - pg_fatal
    - va_arg
    linkageType: ''
    returnType: void
    signature: void check_mut_excl_opts_internal(int n, ...)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:76,1
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:78,1
    - Dst: initStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:84,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:85,1
    - Dst: ZSTD_CStreamOutSize
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:85,1
    - Dst: ZSTD_createCCtx
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:87,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:89,1
    - Dst: ZSTD_CCtx_setParameter
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:92,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:94,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:95,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:96,1
    - Dst: ZSTD_CCtx_setParameter
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:106,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:108,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:109,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:110,1
    - Dst: ZSTD_CCtx_setParameter
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:115,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:118,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:119,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:120,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:130,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - next
    - compress
    argTypes:
    - astreamer*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 133
    functionName: astreamer_zstd_compressor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - ZSTD_createCCtx
    - ZSTD_isError
    - ZSTD_getErrorName
    - Assert
    - ZSTD_CCtx_setParameter
    - initStringInfo
    - pg_fatal
    - enlargeStringInfo
    - ZSTD_CStreamOutSize
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_zstd_compressor_new(astreamer *next, pg_compress_specification *compress)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_compressBound
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:157,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:166,1
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:178,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:181,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:182,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 185
    functionName: astreamer_zstd_compressor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - astreamer_content
    - ZSTD_compressStream2
    - ZSTD_isError
    - ZSTD_getErrorName
    - ZSTD_compressBound
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void astreamer_zstd_compressor_content(astreamer *streamer,\n\t\t\t\t\t\t\t\t
      \ astreamer_member *member,\n\t\t\t\t\t\t\t\t  const char *data, int len,\n\t\t\t\t\t\t\t\t
      \ astreamer_archive_context context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_compressBound
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:199,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:208,1
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:219,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:223,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:224,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:225,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:231,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:236,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 237
    functionName: astreamer_zstd_compressor_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - astreamer_content
    - ZSTD_compressStream2
    - ZSTD_isError
    - ZSTD_getErrorName
    - ZSTD_compressBound
    - pg_fatal
    - astreamer_finalize
    linkageType: ''
    returnType: void
    signature: void astreamer_zstd_compressor_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_free
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:247,1
    - Dst: ZSTD_freeCCtx
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:248,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:249,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 251
    functionName: astreamer_zstd_compressor_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - pfree
    - ZSTD_freeCCtx
    linkageType: ''
    returnType: void
    signature: void astreamer_zstd_compressor_free(astreamer *streamer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:264,1
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:266,1
    - Dst: initStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:271,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:272,1
    - Dst: ZSTD_DStreamOutSize
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:272,1
    - Dst: ZSTD_createDCtx
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:274,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:276,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 288
    functionName: astreamer_zstd_decompressor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 3
    functionsReached:
    - palloc0_object
    - Assert
    - initStringInfo
    - ZSTD_createDCtx
    - pg_fatal
    - ZSTD_DStreamOutSize
    - enlargeStringInfo
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_zstd_decompressor_new(astreamer *next)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:315,1
    - Dst: ZSTD_decompressStream
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:326,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:329,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:330,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 333
    functionName: astreamer_zstd_decompressor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - astreamer_content
    - ZSTD_isError
    - ZSTD_getErrorName
    - pg_fatal
    - ZSTD_decompressStream
    linkageType: ''
    returnType: void
    signature: "void astreamer_zstd_decompressor_content(astreamer *streamer,\n\t\t\t\t\t\t\t\t\tastreamer_member
      *member,\n\t\t\t\t\t\t\t\t\tconst char *data, int len,\n\t\t\t\t\t\t\t\t\tastreamer_archive_context
      context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:348,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 354
    functionName: astreamer_zstd_decompressor_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - astreamer_finalize
    - astreamer_content
    linkageType: ''
    returnType: void
    signature: void astreamer_zstd_decompressor_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_free
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:364,1
    - Dst: ZSTD_freeDCtx
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:365,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:366,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 368
    functionName: astreamer_zstd_decompressor_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - ZSTD_freeDCtx
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_zstd_decompressor_free(astreamer *streamer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/fe_utils/simple_list.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list
    - val
    argTypes:
    - SimpleOidList*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 39
    functionName: simple_oid_list_append
    functionSourceFile: /src/postgres/src/fe_utils/simple_list.c
    functionUses: 5
    functionsReached:
    - pg_malloc_object
    linkageType: ''
    returnType: void
    signature: void simple_oid_list_append(SimpleOidList *list, Oid val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - list
    - val
    argTypes:
    - SimpleOidList*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 55
    functionName: simple_oid_list_member
    functionSourceFile: /src/postgres/src/fe_utils/simple_list.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool simple_oid_list_member(SimpleOidList *list, Oid val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/simple_list.c:68,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/simple_list.c:68,1
    - Dst: strcpy
      Src: /src/postgres/src/fe_utils/simple_list.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - list
    - val
    argTypes:
    - SimpleStringList*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 79
    functionName: simple_string_list_append
    functionSourceFile: /src/postgres/src/fe_utils/simple_list.c
    functionUses: 20
    functionsReached:
    - strcpy
    - pg_malloc
    - strlen
    linkageType: ''
    returnType: void
    signature: void simple_string_list_append(SimpleStringList *list, const char *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/simple_list.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - list
    - val
    argTypes:
    - SimpleStringList*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 100
    functionName: simple_string_list_member
    functionSourceFile: /src/postgres/src/fe_utils/simple_list.c
    functionUses: 3
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool simple_string_list_member(SimpleStringList *list, const char *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/simple_list.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - SimpleOidList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 119
    functionName: simple_oid_list_destroy
    functionSourceFile: /src/postgres/src/fe_utils/simple_list.c
    functionUses: 1
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void simple_oid_list_destroy(SimpleOidList *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/simple_list.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - SimpleStringList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 138
    functionName: simple_string_list_destroy
    functionSourceFile: /src/postgres/src/fe_utils/simple_list.c
    functionUses: 3
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void simple_string_list_destroy(SimpleStringList *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - SimpleStringList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 154
    functionName: simple_string_list_not_touched
    functionSourceFile: /src/postgres/src/fe_utils/simple_list.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      simple_string_list_not_touched(SimpleStringList *list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_object
      Src: /src/postgres/src/fe_utils/simple_list.c:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list
    - ptr
    argTypes:
    - SimplePtrList*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 175
    functionName: simple_ptr_list_append
    functionSourceFile: /src/postgres/src/fe_utils/simple_list.c
    functionUses: 5
    functionsReached:
    - pg_malloc_object
    linkageType: ''
    returnType: void
    signature: void simple_ptr_list_append(SimplePtrList *list, void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/simple_list.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - SimplePtrList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 194
    functionName: simple_ptr_list_destroy
    functionSourceFile: /src/postgres/src/fe_utils/simple_list.c
    functionUses: 1
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void simple_ptr_list_destroy(SimplePtrList *list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:105,1
    - Dst: pstrdup
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:109,1
    - Dst: gzopen
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:113,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:115,1
    - Dst: dup
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:124,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:124,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:127,1
    - Dst: gzdopen
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:129,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:131,1
    - Dst: gzsetparams
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:134,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:135,1
    - Dst: get_gz_error
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:136,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - pathname
    - file
    - compress
    argTypes:
    - char*
    - FILE*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 143
    functionName: astreamer_gzip_writer_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - gzdopen
    - dup
    - pstrdup
    - gzopen
    - pg_fatal
    - gzsetparams
    - get_gz_error
    - fileno
    linkageType: ''
    returnType: astreamer
    signature: "astreamer *\nastreamer_gzip_writer_new(char *pathname, FILE *file,\n\t\t\t\t\t\t
      \ pg_compress_specification *compress)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gzwrite
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:162,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:167,1
    - Dst: get_gz_error
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 170
    functionName: astreamer_gzip_writer_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - gzwrite
    - get_gz_error
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void astreamer_gzip_writer_content(astreamer *streamer,\n\t\t\t\t\t\t\t
      \ astreamer_member *member, const char *data,\n\t\t\t\t\t\t\t  int len, astreamer_archive_context
      context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gzclose
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:190,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 195
    functionName: astreamer_gzip_writer_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - gzclose
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void astreamer_gzip_writer_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:207,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:208,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:210,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 212
    functionName: astreamer_gzip_writer_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_gzip_writer_free(astreamer *streamer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gzerror
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:223,1
    - Dst: strerror
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - gzf
    argTypes:
    - gzFile
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 228
    functionName: get_gz_error
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 2
    functionsReached:
    - gzerror
    - strerror
    linkageType: ''
    returnType: char
    signature: 'char *

      get_gz_error(gzFile gzf)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:242,1
    - Dst: palloc0_object
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:244,1
    - Dst: initStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:249,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:251,1
    - Dst: inflateInit2
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:270,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:271,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 278
    functionName: astreamer_gzip_decompressor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 3
    functionsReached:
    - palloc0_object
    - Assert
    - initStringInfo
    - pg_fatal
    - inflateInit2
    - enlargeStringInfo
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_gzip_decompressor_new(astreamer *next)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:306,1
    - Dst: inflate
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:319,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:322,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:331,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 337
    functionName: astreamer_gzip_decompressor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - Assert
    - astreamer_content
    - inflate
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void astreamer_gzip_decompressor_content(astreamer *streamer,\n\t\t\t\t\t\t\t\t\tastreamer_member
      *member,\n\t\t\t\t\t\t\t\t\tconst char *data, int len,\n\t\t\t\t\t\t\t\t\tastreamer_archive_context
      context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:354,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 360
    functionName: astreamer_gzip_decompressor_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - astreamer_finalize
    - astreamer_content
    linkageType: ''
    returnType: void
    signature: void astreamer_gzip_decompressor_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_free
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:372,1
    - Dst: inflateEnd
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:373,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:374,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 376
    functionName: astreamer_gzip_decompressor_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - inflateEnd
    - pfree
    linkageType: ''
    returnType: void
    signature: void astreamer_gzip_decompressor_free(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - opaque
    - items
    - size
    argTypes:
    - void*
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 386
    functionName: gzip_palloc
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: void
    signature: 'void *

      gzip_palloc(void *opaque, unsigned items, unsigned size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - opaque
    - address
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 396
    functionName: gzip_pfree
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void gzip_pfree(void *opaque, void *address)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/archive.c:47,1
    - Dst: BuildRestoreCommand
      Src: /src/postgres/src/fe_utils/archive.c:49,1
    - Dst: fflush
      Src: /src/postgres/src/fe_utils/archive.c:56,1
    - Dst: system
      Src: /src/postgres/src/fe_utils/archive.c:57,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/archive.c:58,1
    - Dst: stat
      Src: /src/postgres/src/fe_utils/archive.c:66,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/archive.c:69,1
    - Dst: open
      Src: /src/postgres/src/fe_utils/archive.c:74,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/archive.c:77,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/archive.c:86,1
    - Dst: wait_result_is_any_signal
      Src: /src/postgres/src/fe_utils/archive.c:97,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/archive.c:98,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/fe_utils/archive.c:99,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/archive.c:105,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - path
    - xlogfname
    - expectedSize
    - restoreCommand
    argTypes:
    - char*
    - char*
    - off_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 108
    functionName: RestoreArchivedFile
    functionSourceFile: /src/postgres/src/fe_utils/archive.c
    functionUses: 1
    functionsReached:
    - BuildRestoreCommand
    - wait_result_is_any_signal
    - pfree
    - wait_result_to_str
    - stat
    - pg_fatal
    - fflush
    - open
    - pg_log_error
    - system
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int RestoreArchivedFile(const char *path, const char *xlogfname,\n\t\t\t\t\toff_t
      expectedSize, const char *restoreCommand)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - my_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 301
    functionName: integer_digits
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - strspn
    linkageType: ''
    returnType: int
    signature: int integer_digits(const char *my_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: integer_digits
      Src: /src/postgres/src/fe_utils/print.c:307,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:312,1
    - Dst: strchr
      Src: /src/postgres/src/fe_utils/print.c:315,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - my_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 319
    functionName: additional_numeric_locale_len
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - strlen
    - integer_digits
    - strchr
    linkageType: ''
    returnType: int
    signature: int additional_numeric_locale_len(const char *my_str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:343,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:343,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:344,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:346,1
    - Dst: additional_numeric_locale_len
      Src: /src/postgres/src/fe_utils/print.c:346,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/fe_utils/print.c:347,1
    - Dst: integer_digits
      Src: /src/postgres/src/fe_utils/print.c:349,1
    - Dst: strcpy
      Src: /src/postgres/src/fe_utils/print.c:369,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:370,1
    - Dst: strcpy
      Src: /src/postgres/src/fe_utils/print.c:379,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:380,1
    - Dst: strcpy
      Src: /src/postgres/src/fe_utils/print.c:385,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/print.c:388,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:388,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - my_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 391
    functionName: format_numeric_locale
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - additional_numeric_locale_len
    - integer_digits
    - Assert
    - pg_malloc_array
    - strspn
    - strlen
    - strcpy
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      format_numeric_locale(const char *my_str)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:398,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - sep
    - fout
    argTypes:
    - struct separator
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 401
    functionName: print_separator
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - fputs
    linkageType: ''
    returnType: void
    signature: void print_separator(struct separator sep, FILE *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/print.c:421,1
    - Dst: ngettext
      Src: /src/postgres/src/fe_utils/print.c:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cont
    argTypes:
    - printTableContent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 429
    functionName: footers_with_default
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - ngettext
    - snprintf
    linkageType: ''
    returnType: printTableFooter
    signature: 'printTableFooter *

      footers_with_default(const printTableContent *cont)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:453,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:454,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:463,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:464,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:478,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:483,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:486,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:494,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:504,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:507,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:520,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:522,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 47
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 525
    functionName: print_unaligned_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - footers_with_default
    - fputc
    - fputs
    - print_separator
    linkageType: ''
    returnType: void
    signature: void print_unaligned_text(const printTableContent *cont, FILE *fout)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:544,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:558,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:559,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:565,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:566,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:567,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:570,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:582,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:585,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:586,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:594,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:596,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 599
    functionName: print_unaligned_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - fputs
    - print_separator
    linkageType: ''
    returnType: void
    signature: void print_unaligned_vertical(const printTableContent *cont, FILE *fout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:619,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:621,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:626,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:631,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:633,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:639,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:641,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:643,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 6
    argNames:
    - ncolumns
    - widths
    - border
    - pos
    - format
    - fout
    argTypes:
    - unsigned int
    - unsigned int*
    - unsigned short
    - printTextRule
    - printTextFormat*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 644
    functionName: _print_horizontal_line
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - fputs
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void _print_horizontal_line(const unsigned int ncolumns, const unsigned
      int *widths,\n\t\t\t\t\t   unsigned short border, printTextRule pos,\n\t\t\t\t\t
      \  const printTextFormat *format,\n\t\t\t\t\t   FILE *fout)"
  - BBCount: 67
    BranchProfiles: []
    Callsites:
    - Dst: get_line_style
      Src: /src/postgres/src/fe_utils/print.c:656,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:695,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:696,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:697,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:698,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:699,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:700,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:701,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:702,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:703,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:704,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:705,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:706,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:731,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:731,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:750,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:750,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:801,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/fe_utils/print.c:804,1
    - Dst: isatty
      Src: /src/postgres/src/fe_utils/print.c:818,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:818,1
    - Dst: ioctl
      Src: /src/postgres/src/fe_utils/print.c:827,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:827,1
    - Dst: print_aligned_vertical
      Src: /src/postgres/src/fe_utils/print.c:893,1
    - Dst: PageOutput
      Src: /src/postgres/src/fe_utils/print.c:901,1
    - Dst: IsPagerNeeded
      Src: /src/postgres/src/fe_utils/print.c:908,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:921,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:921,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:925,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:928,1
    - Dst: _print_horizontal_line
      Src: /src/postgres/src/fe_utils/print.c:939,1
    - Dst: pg_wcsformat
      Src: /src/postgres/src/fe_utils/print.c:943,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:944,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/print.c:950,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:954,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:963,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:971,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:981,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:984,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:988,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:993,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:994,1
    - Dst: _print_horizontal_line
      Src: /src/postgres/src/fe_utils/print.c:997,1
    - Dst: pg_wcsformat
      Src: /src/postgres/src/fe_utils/print.c:1015,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1015,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/print.c:1020,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1033,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1049,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1051,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1053,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1060,1
    - Dst: strlen_max_width
      Src: /src/postgres/src/fe_utils/print.c:1066,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1081,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:1082,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:1088,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1126,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1132,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1134,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1136,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1142,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1144,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1146,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1148,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1154,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1155,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:1161,1
    - Dst: _print_horizontal_line
      Src: /src/postgres/src/fe_utils/print.c:1164,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1173,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1176,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1183,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1184,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1186,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1187,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1188,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1189,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1190,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1191,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1192,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1193,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1194,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1195,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1196,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1197,1
    - Dst: ClosePager
      Src: /src/postgres/src/fe_utils/print.c:1200,1
    CyclomaticComplexity: 116
    EdgeCount: 116
    ICount: 264
    argCount: 3
    argNames:
    - cont
    - fout
    - is_pager
    argTypes:
    - printTableContent*
    - FILE*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 650
    functionDepth: 2
    functionLinenumber: 650
    functionLinenumberEnd: 1201
    functionName: print_aligned_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - pg_wcssize
    - fputc
    - pg_wcsformat
    - fprintf
    - fileno
    - footers_with_default
    - fputs
    - ClosePager
    - ioctl
    - pg_malloc_array
    - isatty
    - IsPagerNeeded
    - pg_malloc0_array
    - strlen
    - memset
    - PageOutput
    - pg_free
    - _print_horizontal_line
    - print_aligned_vertical
    - get_line_style
    - strlen_max_width
    - fwrite
    linkageType: ''
    returnType: void
    signature: void print_aligned_text(const printTableContent *cont, FILE *fout,
      bool is_pager)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: get_line_style
      Src: /src/postgres/src/fe_utils/print.c:1213,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1219,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1221,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1226,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1228,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1235,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1241,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1246,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1250,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1255,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1260,1
    - Dst: Min
      Src: /src/postgres/src/fe_utils/print.c:1275,1
    - Dst: Max
      Src: /src/postgres/src/fe_utils/print.c:1275,1
    - Dst: Min
      Src: /src/postgres/src/fe_utils/print.c:1277,1
    - Dst: Max
      Src: /src/postgres/src/fe_utils/print.c:1277,1
    - Dst: Min
      Src: /src/postgres/src/fe_utils/print.c:1285,1
    - Dst: Max
      Src: /src/postgres/src/fe_utils/print.c:1285,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1295,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1297,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1300,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 57
    argCount: 7
    argNames:
    - topt
    - record
    - hwidth
    - dwidth
    - output_columns
    - pos
    - fout
    argTypes:
    - printTableOpt*
    - unsigned long
    - unsigned int
    - unsigned int
    - int
    - printTextRule
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1301
    functionName: print_aligned_vertical_line
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - fputs
    - get_line_style
    - Max
    - Min
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void print_aligned_vertical_line(const printTableOpt *topt,\n\t\t\t\t\t\t\tunsigned
      long record,\n\t\t\t\t\t\t\tunsigned int hwidth,\n\t\t\t\t\t\t\tunsigned int
      dwidth,\n\t\t\t\t\t\t\tint output_columns,\n\t\t\t\t\t\t\tprintTextRule pos,\n\t\t\t\t\t\t\tFILE
      *fout)"
  - BBCount: 69
    BranchProfiles: []
    Callsites:
    - Dst: get_line_style
      Src: /src/postgres/src/fe_utils/print.c:1309,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:1342,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1349,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1352,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:1364,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1364,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:1384,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1384,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/fe_utils/print.c:1401,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/fe_utils/print.c:1402,1
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/print.c:1404,1
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/print.c:1405,1
    - Dst: isatty
      Src: /src/postgres/src/fe_utils/print.c:1412,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:1412,1
    - Dst: ioctl
      Src: /src/postgres/src/fe_utils/print.c:1421,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:1421,1
    - Dst: log10
      Src: /src/postgres/src/fe_utils/print.c:1483,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/fe_utils/print.c:1571,1
    - Dst: IsPagerNeeded
      Src: /src/postgres/src/fe_utils/print.c:1576,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1579,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1586,1
    - Dst: print_aligned_vertical_line
      Src: /src/postgres/src/fe_utils/print.c:1619,1
    - Dst: print_aligned_vertical_line
      Src: /src/postgres/src/fe_utils/print.c:1623,1
    - Dst: pg_wcsformat
      Src: /src/postgres/src/fe_utils/print.c:1628,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1629,1
    - Dst: pg_wcsformat
      Src: /src/postgres/src/fe_utils/print.c:1632,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1632,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1647,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1660,1
    - Dst: strlen_max_width
      Src: /src/postgres/src/fe_utils/print.c:1665,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1667,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1674,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1684,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1692,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1710,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1717,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1719,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1721,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1734,1
    - Dst: strlen_max_width
      Src: /src/postgres/src/fe_utils/print.c:1739,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:1741,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1757,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1758,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1768,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1769,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1781,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1782,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1789,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1791,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1800,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1802,1
    - Dst: print_aligned_vertical_line
      Src: /src/postgres/src/fe_utils/print.c:1810,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1819,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1821,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1824,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1827,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1828,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1829,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:1830,1
    - Dst: ClosePager
      Src: /src/postgres/src/fe_utils/print.c:1833,1
    CyclomaticComplexity: 116
    EdgeCount: 116
    ICount: 225
    argCount: 3
    argNames:
    - cont
    - fout
    - is_pager
    argTypes:
    - printTableContent*
    - FILE*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1834
      start: 1303
    functionDepth: 2
    functionLinenumber: 1303
    functionLinenumberEnd: 1834
    functionName: print_aligned_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached:
    - pg_wcssize
    - fputc
    - pg_wcsformat
    - fileno
    - fprintf
    - log10
    - footers_with_default
    - fputs
    - ClosePager
    - ioctl
    - pg_malloc_array
    - isatty
    - IsPagerNeeded
    - strlen
    - pg_free
    - pg_malloc
    - print_aligned_vertical_line
    - get_line_style
    - free
    - strlen_max_width
    - fwrite
    linkageType: ''
    returnType: void
    signature: "void print_aligned_vertical(const printTableContent *cont,\n\t\t\t\t\t
      \  FILE *fout, bool is_pager)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1847,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1851,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1852,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1854,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - str
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1842
    functionDepth: 0
    functionLinenumber: 1842
    functionLinenumberEnd: 1855
    functionName: csv_escaped_print
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    linkageType: ''
    returnType: void
    signature: void csv_escaped_print(const char *str, FILE *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/fe_utils/print.c:1873,1
    - Dst: strcspn
      Src: /src/postgres/src/fe_utils/print.c:1874,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1874,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/print.c:1875,1
    - Dst: csv_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:1877,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1879,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 3
    argNames:
    - str
    - fout
    - sep
    argTypes:
    - char*
    - FILE*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1880
      start: 1857
    functionDepth: 1
    functionLinenumber: 1857
    functionLinenumberEnd: 1880
    functionName: csv_print_field
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - csv_escaped_print
    - strcmp
    - strchr
    - fputs
    - strcspn
    - strlen
    linkageType: ''
    returnType: void
    signature: void csv_print_field(const char *str, FILE *fout, char sep)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1905,1
    - Dst: csv_print_field
      Src: /src/postgres/src/fe_utils/print.c:1906,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1908,1
    - Dst: csv_print_field
      Src: /src/postgres/src/fe_utils/print.c:1914,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1916,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1918,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1882
    functionDepth: 2
    functionLinenumber: 1882
    functionLinenumberEnd: 1920
    functionName: print_csv_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - csv_print_field
    linkageType: ''
    returnType: void
    signature: void print_csv_text(const printTableContent *cont, FILE *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: csv_print_field
      Src: /src/postgres/src/fe_utils/print.c:1935,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1939,1
    - Dst: csv_print_field
      Src: /src/postgres/src/fe_utils/print.c:1942,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1944,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1922
    functionDepth: 2
    functionLinenumber: 1922
    functionLinenumberEnd: 1946
    functionName: print_csv_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - csv_print_field
    linkageType: ''
    returnType: void
    signature: void print_csv_vertical(const printTableContent *cont, FILE *fout)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1965,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1968,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1971,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1974,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1977,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1982,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1984,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1987,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - in
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1992
      start: 1954
    functionDepth: 0
    functionLinenumber: 1954
    functionLinenumberEnd: 1992
    functionName: html_escaped_print
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached:
    - fputc
    - fputs
    linkageType: ''
    returnType: void
    signature: void html_escaped_print(const char *in, FILE *fout)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2009,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2011,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2012,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2017,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2018,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2019,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2025,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2028,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2029,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2030,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2032,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2043,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2046,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2048,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2049,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2051,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2053,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2056,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:2061,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2063,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2070,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2073,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2074,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2076,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2079,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 1995
    functionDepth: 2
    functionLinenumber: 1995
    functionLinenumberEnd: 2081
    functionName: print_html_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - footers_with_default
    - fputc
    - fputs
    - strspn
    - html_escaped_print
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_html_text(const printTableContent *cont, FILE *fout)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2099,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2101,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2102,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2107,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2108,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2109,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2121,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2125,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2127,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2129,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2130,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2132,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2134,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2135,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2137,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2139,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2144,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2151,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2154,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2155,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2157,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2160,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2084
    functionDepth: 1
    functionLinenumber: 2084
    functionLinenumberEnd: 2162
    functionName: print_html_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - fputs
    - strspn
    - html_escaped_print
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_html_vertical(const printTableContent *cont, FILE *fout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2180,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - in
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2186
      start: 2170
    functionDepth: 0
    functionLinenumber: 2170
    functionLinenumberEnd: 2186
    functionName: asciidoc_escaped_print
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - fputs
    linkageType: ''
    returnType: void
    signature: void asciidoc_escaped_print(const char *in, FILE *fout)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2202,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2207,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2208,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2209,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2213,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2217,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2218,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2220,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2224,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2227,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2230,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2233,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2234,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2242,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2243,1
    - Dst: asciidoc_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2244,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2246,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2260,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2261,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2264,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2267,1
    - Dst: asciidoc_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2270,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2273,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2276,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:2280,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2287,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2290,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2291,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2293,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 67
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2188
    functionDepth: 2
    functionLinenumber: 2188
    functionLinenumberEnd: 2296
    functionName: print_asciidoc_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - asciidoc_escaped_print
    - footers_with_default
    - fputs
    - strspn
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_asciidoc_text(const printTableContent *cont, FILE *fout)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2313,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2318,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2319,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2320,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2324,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2328,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2331,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2334,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2337,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2338,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2349,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2353,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2356,1
    - Dst: asciidoc_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2357,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2359,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2361,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2362,1
    - Dst: asciidoc_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2364,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2365,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2368,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2377,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2380,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2381,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2383,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2386
      start: 2298
    functionDepth: 1
    functionLinenumber: 2298
    functionLinenumberEnd: 2386
    functionName: print_asciidoc_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - asciidoc_escaped_print
    - strspn
    - fputs
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_asciidoc_vertical(const printTableContent *cont, FILE *fout)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2408,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2411,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2414,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2417,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2420,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2423,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2426,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2429,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2432,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2435,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2438,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2441,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2444,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2448,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2451,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 2
    argNames:
    - in
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2453
      start: 2394
    functionDepth: 0
    functionLinenumber: 2394
    functionLinenumberEnd: 2453
    functionName: latex_escaped_print
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - fputs
    linkageType: ''
    returnType: void
    signature: void latex_escaped_print(const char *in, FILE *fout)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2475,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2476,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2477,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2481,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2484,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2487,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2489,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2492,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2494,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2497,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2505,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2506,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2507,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2508,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2510,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2511,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2518,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2522,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2524,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2529,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:2534,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2537,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2539,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2548,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2549,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2553,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 59
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2555
      start: 2456
    functionDepth: 2
    functionLinenumber: 2456
    functionLinenumberEnd: 2555
    functionName: print_latex_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - footers_with_default
    - fputc
    - fputs
    - latex_escaped_print
    linkageType: ''
    returnType: void
    signature: void print_latex_text(const printTableContent *cont, FILE *fout)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2583,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2586,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2597,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2602,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:2603,1
    - Dst: strcspn
      Src: /src/postgres/src/fe_utils/print.c:2603,1
    - Dst: strcspn
      Src: /src/postgres/src/fe_utils/print.c:2606,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2608,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2613,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:2614,1
    - Dst: strcspn
      Src: /src/postgres/src/fe_utils/print.c:2614,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2616,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2619,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2622,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2625,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2629,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2631,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2638,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2642,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2643,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2644,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2645,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2647,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2648,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2652,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2656,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2657,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2658,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2659,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2661,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2664,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2665,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2672,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2673,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2674,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2675,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2676,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2677,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2679,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2680,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2681,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2682,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2683,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2684,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2689,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2690,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2700,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2701,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2702,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2703,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2706,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2708,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2715,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 96
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2716
      start: 2563
    functionDepth: 1
    functionLinenumber: 2563
    functionLinenumberEnd: 2716
    functionName: print_latex_longtable_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - latex_escaped_print
    - fputc
    - fputs
    - strcspn
    - strspn
    - fwrite
    linkageType: ''
    returnType: void
    signature: void print_latex_longtable_text(const printTableContent *cont, FILE
      *fout)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2739,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2740,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2741,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2745,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2747,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2749,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2751,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2752,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2767,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2768,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2771,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2774,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2777,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2778,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2779,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2780,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2786,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2788,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2797,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2798,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2802,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 51
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2804
      start: 2719
    functionDepth: 1
    functionLinenumber: 2719
    functionLinenumberEnd: 2804
    functionName: print_latex_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - fputs
    - latex_escaped_print
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_latex_vertical(const printTableContent *cont, FILE *fout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2821,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2824,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - in
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2826
      start: 2812
    functionDepth: 0
    functionLinenumber: 2812
    functionLinenumberEnd: 2826
    functionName: troff_ms_escaped_print
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputc
    - fputs
    linkageType: ''
    returnType: void
    signature: void troff_ms_escaped_print(const char *in, FILE *fout)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2848,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2849,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2850,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2854,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2856,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2858,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2862,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2864,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2866,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2874,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2875,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2876,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2877,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2879,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2886,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2890,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2895,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:2900,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2902,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2911,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2912,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2916,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 51
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2918
      start: 2829
    functionDepth: 2
    functionLinenumber: 2829
    functionLinenumberEnd: 2918
    functionName: print_troff_ms_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - footers_with_default
    - troff_ms_escaped_print
    - fputc
    - fputs
    linkageType: ''
    returnType: void
    signature: void print_troff_ms_text(const printTableContent *cont, FILE *fout)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2942,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2943,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2944,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2948,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2950,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2952,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2956,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2974,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2976,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2977,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2980,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2983,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2991,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2993,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2995,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:3000,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:3001,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:3002,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:3004,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:3009,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:3018,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:3019,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:3023,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3025
      start: 2921
    functionDepth: 1
    functionLinenumber: 2921
    functionLinenumberEnd: 3025
    functionName: print_troff_ms_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - troff_ms_escaped_print
    - fputc
    - fputs
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_troff_ms_vertical(const printTableContent *cont, FILE *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/fe_utils/print.c:3045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3047
      start: 3041
    functionDepth: 0
    functionLinenumber: 3041
    functionLinenumberEnd: 3047
    functionName: disable_sigpipe_trap
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 4
    functionsReached:
    - pqsignal
    linkageType: ''
    returnType: void
    signature: void disable_sigpipe_trap(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/fe_utils/print.c:3068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3070
      start: 3064
    functionDepth: 0
    functionLinenumber: 3064
    functionLinenumberEnd: 3070
    functionName: restore_sigpipe_trap
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 5
    functionsReached:
    - pqsignal
    linkageType: ''
    returnType: void
    signature: void restore_sigpipe_trap(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ignore
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3081
      start: 3077
    functionDepth: 0
    functionLinenumber: 3077
    functionLinenumberEnd: 3081
    functionName: set_sigpipe_trap_state
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_sigpipe_trap_state(bool ignore)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageOutputInternal
      Src: /src/postgres/src/fe_utils/print.c:3098,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lines
    - topt
    argTypes:
    - int
    - printTableOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3099
      start: 3095
    functionDepth: 1
    functionLinenumber: 3095
    functionLinenumberEnd: 3099
    functionName: PageOutput
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 8
    functionsReached:
    - PageOutputInternal
    linkageType: ''
    returnType: FILE
    signature: 'FILE *

      PageOutput(int lines, const printTableOpt *topt)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: isatty
      Src: /src/postgres/src/fe_utils/print.c:3114,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:3114,1
    - Dst: isatty
      Src: /src/postgres/src/fe_utils/print.c:3114,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:3114,1
    - Dst: ioctl
      Src: /src/postgres/src/fe_utils/print.c:3126,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:3126,1
    - Dst: Max
      Src: /src/postgres/src/fe_utils/print.c:3131,1
    - Dst: count_table_lines
      Src: /src/postgres/src/fe_utils/print.c:3134,1
    - Dst: getenv
      Src: /src/postgres/src/fe_utils/print.c:3148,1
    - Dst: getenv
      Src: /src/postgres/src/fe_utils/print.c:3150,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:3156,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:3156,1
    - Dst: fflush
      Src: /src/postgres/src/fe_utils/print.c:3159,1
    - Dst: disable_sigpipe_trap
      Src: /src/postgres/src/fe_utils/print.c:3160,1
    - Dst: popen
      Src: /src/postgres/src/fe_utils/print.c:3161,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/fe_utils/print.c:3165,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 5
    argNames:
    - lines
    - topt
    - cont
    - width_wrap
    - vertical
    argTypes:
    - int
    - printTableOpt*
    - printTableContent*
    - unsigned int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3170
      start: 3107
    functionDepth: 1
    functionLinenumber: 3107
    functionLinenumberEnd: 3170
    functionName: PageOutputInternal
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached:
    - ioctl
    - isatty
    - disable_sigpipe_trap
    - getenv
    - Max
    - strspn
    - strlen
    - fflush
    - restore_sigpipe_trap
    - count_table_lines
    - popen
    - fileno
    linkageType: ''
    returnType: FILE
    signature: "FILE *\nPageOutputInternal(int lines, const printTableOpt *topt,\n\t\t\t\t
      \  const printTableContent *cont,\n\t\t\t\t   const unsigned int *width_wrap,\n\t\t\t\t
      \  bool vertical)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:3191,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3191,1
    - Dst: pclose
      Src: /src/postgres/src/fe_utils/print.c:3193,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/fe_utils/print.c:3194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - pagerpipe
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3196
      start: 3177
    functionDepth: 1
    functionLinenumber: 3177
    functionLinenumberEnd: 3196
    functionName: ClosePager
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 9
    functionsReached:
    - restore_sigpipe_trap
    - pclose
    - _
    - fprintf
    linkageType: ''
    returnType: void
    signature: void ClosePager(FILE *pagerpipe)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:3219,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:3225,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3225,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/print.c:3228,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:3230,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:3235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 5
    argNames:
    - content
    - opt
    - title
    - ncolumns
    - nrows
    argTypes:
    - printTableContent*
    - printTableOpt*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3242
      start: 3208
    functionDepth: 1
    functionLinenumber: 3208
    functionLinenumberEnd: 3242
    functionName: printTableInit
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 5
    functionsReached:
    - pg_malloc0_array
    - exit
    - _
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void printTableInit(printTableContent *const content, const printTableOpt
      *opt,\n\t\t\t   const char *title, const int ncolumns, const int nrows)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:3266,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3266,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/print.c:3269,1
    - Dst: mbvalidate
      Src: /src/postgres/src/fe_utils/print.c:3272,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - content
    - header
    - translate
    - align
    argTypes:
    - printTableContent*
    - char*
    - bool
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3282
      start: 3256
    functionDepth: 3
    functionLinenumber: 3256
    functionLinenumberEnd: 3282
    functionName: printTableAddHeader
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 5
    functionsReached:
    - exit
    - mbvalidate
    - _
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void printTableAddHeader(printTableContent *const content, char *header,\n\t\t\t\t\tconst
      bool translate, const char align)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:3309,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3309,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/print.c:3311,1
    - Dst: mbvalidate
      Src: /src/postgres/src/fe_utils/print.c:3314,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3319,1
    - Dst: pg_malloc0_array
      Src: /src/postgres/src/fe_utils/print.c:3326,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - content
    - cell
    - translate
    - mustfree
    argTypes:
    - printTableContent*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3332
      start: 3296
    functionDepth: 3
    functionLinenumber: 3296
    functionLinenumberEnd: 3332
    functionName: printTableAddCell
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 4
    functionsReached:
    - mbvalidate
    - _
    - pg_malloc0_array
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void printTableAddCell(printTableContent *const content, char *cell,\n\t\t\t\t
      \ const bool translate, const bool mustfree)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0_object
      Src: /src/postgres/src/fe_utils/print.c:3351,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:3352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - content
    - footer
    argTypes:
    - printTableContent*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3360
      start: 3346
    functionDepth: 1
    functionLinenumber: 3346
    functionLinenumberEnd: 3360
    functionName: printTableAddFooter
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 3
    functionsReached:
    - pg_malloc0_object
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void printTableAddFooter(printTableContent *const content, const char
      *footer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3376,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:3377,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/fe_utils/print.c:3380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - content
    - footer
    argTypes:
    - printTableContent*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3381
      start: 3371
    functionDepth: 2
    functionLinenumber: 3371
    functionLinenumberEnd: 3381
    functionName: printTableSetFooter
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached:
    - printTableAddFooter
    - free
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void printTableSetFooter(printTableContent *const content, const char
      *footer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3400,1
    - Dst: unconstify
      Src: /src/postgres/src/fe_utils/print.c:3400,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3402,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3405,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3406,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3407,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3426,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3427,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - content
    argTypes:
    - printTableContent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3432
      start: 3389
    functionDepth: 1
    functionLinenumber: 3389
    functionLinenumberEnd: 3432
    functionName: printTableCleanup
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 5
    functionsReached:
    - free
    - unconstify
    linkageType: ''
    returnType: void
    signature: void printTableCleanup(printTableContent *const content)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PageOutputInternal
      Src: /src/postgres/src/fe_utils/print.c:3454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - cont
    - width_wrap
    - vertical
    - fout
    - is_pager
    argTypes:
    - printTableContent*
    - unsigned int*
    - bool
    - FILE**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3459
      start: 3447
    functionDepth: 2
    functionLinenumber: 3447
    functionLinenumberEnd: 3459
    functionName: IsPagerNeeded
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 2
    functionsReached:
    - PageOutputInternal
    linkageType: ''
    returnType: void
    signature: "void IsPagerNeeded(const printTableContent *cont, const unsigned int
      *width_wrap,\n\t\t\t  bool vertical,\n\t\t\t  FILE **fout, bool *is_pager)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_array
      Src: /src/postgres/src/fe_utils/print.c:3498,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:3501,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:3502,1
    - Dst: Max
      Src: /src/postgres/src/fe_utils/print.c:3530,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:3560,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:3560,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:3606,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:3606,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:3627,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:3630,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:3630,1
    - Dst: pg_free
      Src: /src/postgres/src/fe_utils/print.c:3639,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 72
    argCount: 4
    argNames:
    - cont
    - width_wrap
    - vertical
    - threshold
    argTypes:
    - printTableContent*
    - unsigned int*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3642
      start: 3480
    functionDepth: 2
    functionLinenumber: 3480
    functionLinenumberEnd: 3642
    functionName: count_table_lines
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached:
    - footers_with_default
    - pg_wcssize
    - pg_malloc_array
    - Max
    - strlen
    - pg_free
    linkageType: ''
    returnType: int
    signature: "int count_table_lines(const printTableContent *cont,\n\t\t\t\t  const
      unsigned int *width_wrap,\n\t\t\t\t  bool vertical,\n\t\t\t\t  int threshold)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: IsPagerNeeded
      Src: /src/postgres/src/fe_utils/print.c:3670,1
    - Dst: clearerr
      Src: /src/postgres/src/fe_utils/print.c:3675,1
    - Dst: print_unaligned_vertical
      Src: /src/postgres/src/fe_utils/print.c:3682,1
    - Dst: print_unaligned_text
      Src: /src/postgres/src/fe_utils/print.c:3684,1
    - Dst: print_aligned_vertical
      Src: /src/postgres/src/fe_utils/print.c:3696,1
    - Dst: print_aligned_text
      Src: /src/postgres/src/fe_utils/print.c:3698,1
    - Dst: print_csv_vertical
      Src: /src/postgres/src/fe_utils/print.c:3702,1
    - Dst: print_csv_text
      Src: /src/postgres/src/fe_utils/print.c:3704,1
    - Dst: print_html_vertical
      Src: /src/postgres/src/fe_utils/print.c:3708,1
    - Dst: print_html_text
      Src: /src/postgres/src/fe_utils/print.c:3710,1
    - Dst: print_asciidoc_vertical
      Src: /src/postgres/src/fe_utils/print.c:3714,1
    - Dst: print_asciidoc_text
      Src: /src/postgres/src/fe_utils/print.c:3716,1
    - Dst: print_latex_vertical
      Src: /src/postgres/src/fe_utils/print.c:3720,1
    - Dst: print_latex_text
      Src: /src/postgres/src/fe_utils/print.c:3722,1
    - Dst: print_latex_vertical
      Src: /src/postgres/src/fe_utils/print.c:3726,1
    - Dst: print_latex_longtable_text
      Src: /src/postgres/src/fe_utils/print.c:3728,1
    - Dst: print_troff_ms_vertical
      Src: /src/postgres/src/fe_utils/print.c:3732,1
    - Dst: print_troff_ms_text
      Src: /src/postgres/src/fe_utils/print.c:3734,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:3737,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3737,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/print.c:3739,1
    - Dst: ClosePager
      Src: /src/postgres/src/fe_utils/print.c:3743,1
    - Dst: print_aligned_text
      Src: /src/postgres/src/fe_utils/print.c:3747,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 60
    argCount: 4
    argNames:
    - cont
    - fout
    - is_pager
    - flog
    argTypes:
    - printTableContent*
    - FILE*
    - bool
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3748
      start: 3653
    functionDepth: 3
    functionLinenumber: 3653
    functionLinenumberEnd: 3748
    functionName: printTable
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 5
    functionsReached:
    - print_latex_vertical
    - print_html_vertical
    - print_latex_longtable_text
    - fprintf
    - _
    - print_html_text
    - print_troff_ms_vertical
    - print_asciidoc_vertical
    - print_troff_ms_text
    - ClosePager
    - print_unaligned_text
    - IsPagerNeeded
    - print_csv_vertical
    - print_asciidoc_text
    - print_csv_text
    - exit
    - clearerr
    - print_aligned_vertical
    - print_aligned_text
    - print_latex_text
    - print_unaligned_vertical
    linkageType: ''
    returnType: void
    signature: "void printTable(const printTableContent *cont,\n\t\t   FILE *fout,
      bool is_pager, FILE *flog)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printTableInit
      Src: /src/postgres/src/fe_utils/print.c:3771,1
    - Dst: PQnfields
      Src: /src/postgres/src/fe_utils/print.c:3772,1
    - Dst: PQntuples
      Src: /src/postgres/src/fe_utils/print.c:3772,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/print.c:3775,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/fe_utils/print.c:3780,1
    - Dst: PQfname
      Src: /src/postgres/src/fe_utils/print.c:3780,1
    - Dst: column_type_alignment
      Src: /src/postgres/src/fe_utils/print.c:3782,1
    - Dst: PQftype
      Src: /src/postgres/src/fe_utils/print.c:3782,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/fe_utils/print.c:3794,1
    - Dst: PQftype
      Src: /src/postgres/src/fe_utils/print.c:3796,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/fe_utils/print.c:3797,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/fe_utils/print.c:3802,1
    - Dst: format_numeric_locale
      Src: /src/postgres/src/fe_utils/print.c:3805,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/fe_utils/print.c:3811,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/fe_utils/print.c:3821,1
    - Dst: printTable
      Src: /src/postgres/src/fe_utils/print.c:3824,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/fe_utils/print.c:3825,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 5
    argNames:
    - result
    - opt
    - fout
    - is_pager
    - flog
    argTypes:
    - PGresult*
    - printQueryOpt*
    - FILE*
    - bool
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3826
      start: 3759
    functionDepth: 4
    functionLinenumber: 3759
    functionLinenumberEnd: 3826
    functionName: printQuery
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 45
    functionsReached:
    - PQfname
    - printTable
    - Assert
    - printTableCleanup
    - printTableAddHeader
    - PQftype
    - PQgetvalue
    - printTableAddCell
    - format_numeric_locale
    - printTableAddFooter
    - printTableInit
    - PQgetisnull
    - PQntuples
    - column_type_alignment
    - PQnfields
    linkageType: ''
    returnType: void
    signature: "void printQuery(const PGresult *result, const printQueryOpt *opt,\n\t\t
      \  FILE *fout, bool is_pager, FILE *flog)"
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - ftype
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3854
      start: 3828
    functionDepth: 0
    functionLinenumber: 3828
    functionLinenumberEnd: 3854
    functionName: column_type_alignment
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char column_type_alignment(Oid ftype)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: localeconv
      Src: /src/postgres/src/fe_utils/print.c:3861,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:3865,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:3883,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/print.c:3885,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3889
      start: 3856
    functionDepth: 1
    functionLinenumber: 3856
    functionLinenumberEnd: 3889
    functionName: setDecimalLocale
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached:
    - localeconv
    - strcmp
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void setDecimalLocale(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - opt
    argTypes:
    - printTableOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3904
      start: 3892
    functionDepth: 0
    functionLinenumber: 3892
    functionLinenumberEnd: 3904
    functionName: get_line_style
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: printTextFormat
    signature: 'printTextFormat *

      get_line_style(const printTableOpt *opt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 1
    argNames:
    - opt
    argTypes:
    - printTableOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3954
      start: 3906
    functionDepth: 0
    functionLinenumber: 3906
    functionLinenumberEnd: 3954
    functionName: refresh_utf8format
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void refresh_utf8format(const printTableOpt *opt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:3965,1
    - Dst: PQdsplen
      Src: /src/postgres/src/fe_utils/print.c:3970,1
    - Dst: PQmblen
      Src: /src/postgres/src/fe_utils/print.c:3983,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - str
    - target_width
    - encoding
    argTypes:
    - unsigned char*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3992
      start: 3961
    functionDepth: 1
    functionLinenumber: 3961
    functionLinenumberEnd: 3992
    functionName: strlen_max_width
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 2
    functionsReached:
    - PQdsplen
    - PQmblen
    - strlen
    linkageType: ''
    returnType: int
    signature: int strlen_max_width(unsigned char *str, int *target_width, int encoding)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/fe_utils/version.c:53,1
    - Dst: fopen
      Src: /src/postgres/src/fe_utils/version.c:56,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/version.c:57,1
    - Dst: fstat
      Src: /src/postgres/src/fe_utils/version.c:59,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/version.c:59,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/version.c:60,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/version.c:62,1
    - Dst: fscanf
      Src: /src/postgres/src/fe_utils/version.c:64,1
    - Dst: sscanf
      Src: /src/postgres/src/fe_utils/version.c:65,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/version.c:66,1
    - Dst: fclose
      Src: /src/postgres/src/fe_utils/version.c:68,1
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/version.c:72,1
    - Dst: memcpy
      Src: /src/postgres/src/fe_utils/version.c:73,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - datadir
    - version_str
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 86
    functionName: get_pg_version
    functionSourceFile: /src/postgres/src/fe_utils/version.c
    functionUses: 5
    functionsReached:
    - memcpy
    - sscanf
    - fopen
    - pg_fatal
    - fclose
    - pg_malloc
    - snprintf
    - fscanf
    - fstat
    - fileno
    linkageType: ''
    returnType: uint32
    signature: uint32 get_pg_version(const char *datadir, char **version_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: write_stderr
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: write_stderr(str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:112,1
    - Dst: PQfreeCancel
      Src: /src/postgres/src/fe_utils/cancel.c:122,1
    - Dst: PQgetCancel
      Src: /src/postgres/src/fe_utils/cancel.c:124,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 129
    functionName: SetCancelConn
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 10
    functionsReached:
    - PQgetCancel
    - PQfreeCancel
    - EnterCriticalSection
    - LeaveCriticalSection
    linkageType: ''
    returnType: void
    signature: void SetCancelConn(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:142,1
    - Dst: PQfreeCancel
      Src: /src/postgres/src/fe_utils/cancel.c:151,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 156
    functionName: ResetCancelConn
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 12
    functionsReached:
    - PQfreeCancel
    - EnterCriticalSection
    - LeaveCriticalSection
    linkageType: ''
    returnType: void
    signature: void ResetCancelConn(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cancel_callback
      Src: /src/postgres/src/fe_utils/cancel.c:190,1
    - Dst: PQcancel
      Src: /src/postgres/src/fe_utils/cancel.c:195,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:197,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:201,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 205
    functionName: handle_sigint
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 0
    functionsReached:
    - cancel_callback
    - write_stderr
    - PQcancel
    linkageType: ''
    returnType: void
    signature: void handle_sigint(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/fe_utils/cancel.c:216,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/cancel.c:217,1
    - Dst: pqsignal
      Src: /src/postgres/src/fe_utils/cancel.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 220
    functionName: setup_cancel_handler
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 7
    functionsReached:
    - pqsignal
    - _
    linkageType: ''
    returnType: void
    signature: void setup_cancel_handler(void (*query_cancel_callback) (void))
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cancel_callback
      Src: /src/postgres/src/fe_utils/cancel.c:235,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:238,1
    - Dst: PQcancel
      Src: /src/postgres/src/fe_utils/cancel.c:241,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:243,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:247,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:248,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:252,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - dwCtrlType
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 259
    functionName: consoleHandler
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 0
    functionsReached:
    - cancel_callback
    - LeaveCriticalSection
    - PQcancel
    - write_stderr
    - EnterCriticalSection
    linkageType: ''
    returnType: BOOL
    signature: BOOL consoleHandler(DWORD dwCtrlType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/fe_utils/cancel.c:265,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/cancel.c:266,1
    - Dst: InitializeCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:268,1
    - Dst: SetConsoleCtrlHandler
      Src: /src/postgres/src/fe_utils/cancel.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 271
    functionName: setup_cancel_handler
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 7
    functionsReached:
    - SetConsoleCtrlHandler
    - InitializeCriticalSection
    - _
    linkageType: ''
    returnType: void
    signature: void setup_cancel_handler(void (*callback) (void))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/fe_utils/query_utils.c:27,1
    - Dst: PQexec
      Src: /src/postgres/src/fe_utils/query_utils.c:29,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/fe_utils/query_utils.c:31,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/query_utils.c:33,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/fe_utils/query_utils.c:33,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/fe_utils/query_utils.c:34,1
    - Dst: PQfinish
      Src: /src/postgres/src/fe_utils/query_utils.c:35,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/query_utils.c:36,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - conn
    - query
    - echo
    argTypes:
    - PGconn*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 40
    functionName: executeQuery
    functionSourceFile: /src/postgres/src/fe_utils/query_utils.c
    functionUses: 23
    functionsReached:
    - PQexec
    - pg_log_error_detail
    - PQfinish
    - exit
    - printf
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      executeQuery(PGconn *conn, const char *query, bool echo)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/fe_utils/query_utils.c:52,1
    - Dst: PQexec
      Src: /src/postgres/src/fe_utils/query_utils.c:54,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/fe_utils/query_utils.c:56,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/query_utils.c:58,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/fe_utils/query_utils.c:58,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/fe_utils/query_utils.c:59,1
    - Dst: PQfinish
      Src: /src/postgres/src/fe_utils/query_utils.c:60,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/query_utils.c:61,1
    - Dst: PQclear
      Src: /src/postgres/src/fe_utils/query_utils.c:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - conn
    - query
    - echo
    argTypes:
    - PGconn*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 65
    functionName: executeCommand
    functionSourceFile: /src/postgres/src/fe_utils/query_utils.c
    functionUses: 6
    functionsReached:
    - PQclear
    - PQexec
    - pg_log_error_detail
    - PQfinish
    - exit
    - printf
    - PQresultStatus
    - pg_log_error
    - PQerrorMessage
    linkageType: ''
    returnType: void
    signature: void executeCommand(PGconn *conn, const char *query, bool echo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/fe_utils/query_utils.c:80,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/fe_utils/query_utils.c:82,1
    - Dst: PQexec
      Src: /src/postgres/src/fe_utils/query_utils.c:83,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/fe_utils/query_utils.c:84,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/fe_utils/query_utils.c:86,1
    - Dst: PQclear
      Src: /src/postgres/src/fe_utils/query_utils.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - query
    - echo
    argTypes:
    - PGconn*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 91
    functionName: executeMaintenanceCommand
    functionSourceFile: /src/postgres/src/fe_utils/query_utils.c
    functionUses: 1
    functionsReached:
    - PQclear
    - PQexec
    - ResetCancelConn
    - printf
    - PQresultStatus
    - SetCancelConn
    linkageType: ''
    returnType: bool
    signature: bool executeMaintenanceCommand(PGconn *conn, const char *query, bool
      echo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyType_FromSpec
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:71,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 74
    functionName: PLy_cursor_init_type
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - elog
    - PyType_FromSpec
    linkageType: ''
    returnType: void
    signature: void PLy_cursor_init_type(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:83,1
    - Dst: PLy_cursor_query
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:84,1
    - Dst: PyErr_Clear
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:86,1
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:88,1
    - Dst: PLy_cursor_plan
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:89,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 93
    functionName: PLy_cursor
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - PLy_cursor_plan
    - PyErr_Clear
    - PLy_exception_set
    - PLy_cursor_query
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_cursor(PyObject *self, PyObject *args)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:100,1
    - Dst: PyObject_New
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:104,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:108,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:112,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:117,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:124,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:126,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:131,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:131,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:133,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:135,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:136,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:138,1
    - Dst: SPI_freeplan
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:140,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:143,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:144,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:146,1
    - Dst: PinPortal
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:148,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:150,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:152,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:154,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:157,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 161
    functionName: PLy_cursor_query
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - PLy_spi_subtransaction_begin
    - PLy_current_execution_context
    - Py_INCREF
    - elog
    - SPI_freeplan
    - Assert
    - pg_verifymbstr
    - PG_END_TRY
    - PyObject_New
    - SPI_result_code_string
    - PinPortal
    - SPI_prepare
    - strlen
    - AllocSetContextCreate
    - SPI_cursor_open
    - PG_CATCH
    - PLy_spi_subtransaction_abort
    - MemoryContextStrdup
    - PLy_spi_subtransaction_commit
    - PLy_input_setup_func
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_cursor_query(const char *query)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:169,1
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:175,1
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:175,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:177,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:180,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:190,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:193,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:194,1
    - Dst: PLy_exception_set_plural
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:195,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:200,1
    - Dst: PyObject_New
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:205,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:209,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:213,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:218,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:225,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:227,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:239,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:242,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:246,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:247,1
    - Dst: PySequence_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:260,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:264,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:266,1
    - Dst: PLy_output_convert
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:270,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:273,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:275,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:277,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:280,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:282,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:285,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:286,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:288,1
    - Dst: PinPortal
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:290,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:292,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:293,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:295,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:297,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:299,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:302,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:304,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 68
    argCount: 2
    argNames:
    - ob
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 306
    functionName: PLy_cursor_plan
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - PyObject_Str
    - PySequence_Check
    - PLy_spi_subtransaction_begin
    - PLy_current_execution_context
    - Py_INCREF
    - elog
    - Assert
    - PLy_exception_set_plural
    - PG_FINALLY
    - PG_END_TRY
    - PySequence_Length
    - PyUnicode_Check
    - Py_DECREF
    - PyObject_New
    - SPI_result_code_string
    - PinPortal
    - PLyUnicode_AsString
    - PySequence_GetItem
    - AllocSetContextCreate
    - SPI_cursor_open
    - PLy_elog
    - PLy_output_convert
    - PG_CATCH
    - PLy_spi_subtransaction_abort
    - MemoryContextStrdup
    - PLy_spi_subtransaction_commit
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - PLy_input_setup_func
    - palloc
    - PLy_exception_set
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_cursor_plan(PyObject *ob, PyObject *args)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Py_TYPE
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:312,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:318,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:320,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:322,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:323,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:329,1
    - Dst: PyObject_Free
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:333,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:336,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - self
    argTypes:
    - PLyCursorObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 338
    functionName: PLy_cursor_dealloc
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - Py_DECREF
    - PortalIsValid
    - UnpinPortal
    - Py_TYPE
    - SPI_cursor_close
    - MemoryContextDelete
    - PyObject_Free
    - GetPortalByName
    linkageType: ''
    returnType: void
    signature: void PLy_cursor_dealloc(PLyCursorObject *self)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:345,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:354,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:358,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:359,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:361,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:369,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:371,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:373,1
    - Dst: PyErr_SetNone
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:376,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:381,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:384,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:388,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:390,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:392,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:394,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:397,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 1
    argNames:
    - self
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 400
    functionName: PLy_cursor_iternext
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - PLy_current_execution_context
    - PG_CATCH
    - PG_TRY
    - PLy_spi_subtransaction_abort
    - PortalIsValid
    - SPI_cursor_fetch
    - PLy_spi_subtransaction_commit
    - PLy_input_setup_tuple
    - SPI_freetuptable
    - PLy_input_from_tuple
    - PG_END_TRY
    - PyErr_SetNone
    - PLy_exception_set
    - PLy_spi_subtransaction_begin
    - GetPortalByName
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_cursor_iternext(PyObject *self)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:408,1
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:413,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:420,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:424,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:425,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:427,1
    - Dst: PLy_result_new
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:432,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:439,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:441,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:443,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:445,1
    - Dst: PyLong_FromLong
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:446,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:448,1
    - Dst: PyLong_FromUnsignedLongLong
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:449,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:461,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:462,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:463,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:465,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:466,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:469,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:474,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:479,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:484,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:489,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:491,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:493,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:495,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:498,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 49
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 501
    functionName: PLy_cursor_fetch
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - errcode
    - PLy_input_from_tuple
    - PyLong_FromLong
    - PyLong_FromUnsignedLongLong
    - PLy_spi_subtransaction_begin
    - PLy_current_execution_context
    - GetPortalByName
    - PortalIsValid
    - PyList_New
    - PLy_input_setup_tuple
    - errmsg
    - PG_END_TRY
    - Py_DECREF
    - SPI_cursor_fetch
    - PLy_result_new
    - ereport
    - SPI_freetuptable
    - PyArg_ParseTuple
    - PG_CATCH
    - PLy_spi_subtransaction_abort
    - PyList_SetItem
    - PLy_spi_subtransaction_commit
    - PLy_exception_set
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_cursor_fetch(PyObject *self, PyObject *args)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetPortalByName
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:510,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:512,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:514,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:519,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - self
    - unused
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 525
    functionName: PLy_cursor_close
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - PortalIsValid
    - UnpinPortal
    - SPI_cursor_close
    - PLy_exception_set
    - GetPortalByName
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_cursor_close(PyObject *self, PyObject *unused)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyType_FromSpec
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:83,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 86
    functionName: PLy_result_init_type
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - elog
    - PyType_FromSpec
    linkageType: ''
    returnType: void
    signature: void PLy_result_init_type(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_New
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:93,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:97,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:102,1
    - Dst: PyLong_FromLong
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:104,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:105,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 114
    functionName: PLy_result_new
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 1
    functionsReached:
    - Py_DECREF
    - PyObject_New
    - PyList_New
    - PyLong_FromLong
    - Py_INCREF
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_result_new(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Py_TYPE
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:120,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:123,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:124,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:125,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:128,1
    - Dst: PyObject_Free
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:132,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - self
    argTypes:
    - PLyResultObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 137
    functionName: PLy_result_dealloc
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - Py_DECREF
    - Py_XDECREF
    - Py_TYPE
    - FreeTupleDesc
    - PyObject_Free
    linkageType: ''
    returnType: void
    signature: void PLy_result_dealloc(PLyResultObject *self)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:148,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:152,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:157,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:159,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:159,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - self
    - unused
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 163
    functionName: PLy_result_colnames
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - PLyUnicode_FromString
    - PyList_SetItem
    - PyList_New
    - NameStr
    - PLy_exception_set
    - TupleDescAttr
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_result_colnames(PyObject *self, PyObject *unused)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:174,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:178,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:183,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:185,1
    - Dst: PyLong_FromLong
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - self
    - unused
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 189
    functionName: PLy_result_coltypes
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - PyList_SetItem
    - PyList_New
    - PyLong_FromLong
    - PLy_exception_set
    - TupleDescAttr
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_result_coltypes(PyObject *self, PyObject *unused)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:200,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:204,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:209,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:211,1
    - Dst: PyLong_FromLong
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:211,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - self
    - unused
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 215
    functionName: PLy_result_coltypmods
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - PyList_SetItem
    - PyList_New
    - PyLong_FromLong
    - PLy_exception_set
    - TupleDescAttr
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_result_coltypmods(PyObject *self, PyObject *unused)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: PLy_result_nrows
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - Py_INCREF
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_result_nrows(PyObject *self, PyObject *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 233
    functionName: PLy_result_status
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - Py_INCREF
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_result_status(PyObject *self, PyObject *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyList_Size
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 241
    functionName: PLy_result_length
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - PyList_Size
    linkageType: ''
    returnType: Py_ssize_t
    signature: Py_ssize_t PLy_result_length(PyObject *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyList_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:249,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - arg
    - idx
    argTypes:
    - PyObject*
    - Py_ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 253
    functionName: PLy_result_item
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - PyList_GetItem
    - Py_INCREF
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_result_item(PyObject *arg, Py_ssize_t idx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyUnicode_FromFormat
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 265
    functionName: PLy_result_str
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - PyUnicode_FromFormat
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_result_str(PyObject *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - item
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 273
    functionName: PLy_result_subscript
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - PyObject_GetItem
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_result_subscript(PyObject *arg, PyObject *item)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_resultobject.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - arg
    - item
    - value
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 281
    functionName: PLy_result_ass_subscript
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_resultobject.c
    functionUses: 0
    functionsReached:
    - PyObject_SetItem
    linkageType: ''
    returnType: int
    signature: int PLy_result_ass_subscript(PyObject *arg, PyObject *item, PyObject
      *value)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: PLy_global_args_push
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:57,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:59,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:72,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:75,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:76,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:77,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:78,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:83,1
    - Dst: RegisterExprContextCallback
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:90,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:92,1
    - Dst: PLy_function_build_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:105,1
    - Dst: PLy_procedure_call
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:106,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:107,1
    - Dst: PLy_function_restore_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:120,1
    - Dst: PyObject_GetIter
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:134,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:136,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:140,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:141,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:142,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:143,1
    - Dst: PyIter_Next
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:147,1
    - Dst: PyErr_Occurred
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:151,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:153,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:157,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:160,1
    - Dst: PLy_function_save_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:170,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:180,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:181,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:198,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:199,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:200,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:202,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:203,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:204,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:232,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:233,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:234,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:235,1
    - Dst: PLy_output_setup_record
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:237,1
    - Dst: PLy_output_convert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:240,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:244,1
    - Dst: PLy_global_args_pop
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:247,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:249,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:250,1
    - Dst: PLy_function_cleanup_srfstate
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:261,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:263,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:265,1
    - Dst: PLy_global_args_pop
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:270,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:272,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:273,1
    - Dst: UnregisterExprContextCallback
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:287,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:289,1
    - Dst: PLy_function_cleanup_srfstate
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:292,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 98
    argCount: 2
    argNames:
    - fcinfo
    - pcache
    argTypes:
    - FunctionCallInfo
    - PLyProcedureCache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 307
    functionName: PLy_exec_function
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - PyErr_Occurred
    - Py_XDECREF
    - errcode
    - PLy_output_setup_record
    - PyObject_GetIter
    - Py_INCREF
    - elog
    - PyIter_Next
    - PLy_function_restore_args
    - Assert
    - PG_RE_THROW
    - errmsg
    - PointerGetDatum
    - RegisterExprContextCallback
    - get_call_result_type
    - PG_END_TRY
    - MemoryContextAllocZero
    - PLy_procedure_call
    - Py_DECREF
    - PLy_function_save_args
    - ereport
    - UnregisterExprContextCallback
    - PLy_elog
    - PLy_function_build_args
    - PLy_output_convert
    - SPI_finish
    - PG_CATCH
    - PLy_global_args_pop
    - PLy_function_cleanup_srfstate
    - PLy_global_args_push
    - errdetail
    - IsA
    linkageType: ''
    returnType: Datum
    signature: Datum PLy_exec_function(FunctionCallInfo fcinfo, PLyProcedureCache
      *pcache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:321,1
    - Dst: PLy_function_cleanup_srfstate
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 327
    functionName: ShutdownPLyFunction
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 0
    functionsReached:
    - PLy_function_cleanup_srfstate
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ShutdownPLyFunction(Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:364,1
    - Dst: PLy_function_drop_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:369,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - pcache
    argTypes:
    - PLyProcedureCache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 375
    functionName: PLy_function_cleanup_srfstate
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 2
    functionsReached:
    - pfree
    - PLy_function_drop_args
    - Py_XDECREF
    linkageType: ''
    returnType: void
    signature: void PLy_function_cleanup_srfstate(PLyProcedureCache *pcache)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:397,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:397,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:408,1
    - Dst: PLy_output_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:410,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:415,1
    - Dst: PLy_output_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:419,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:420,1
    - Dst: PLy_global_args_push
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:427,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:429,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:433,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:434,1
    - Dst: PLy_trigger_build_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:436,1
    - Dst: PLy_procedure_call
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:437,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:439,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:444,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:445,1
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:454,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:455,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:458,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:459,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:460,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:461,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:465,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:467,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:469,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:470,1
    - Dst: PLy_modify_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:471,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:473,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:474,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:476,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:482,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:483,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:484,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:485,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:489,1
    - Dst: PLy_global_args_pop
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:491,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:492,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:493,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:495,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 2
    argNames:
    - fcinfo
    - proc
    argTypes:
    - FunctionCallInfo
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 498
    functionName: PLy_exec_trigger
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 0
    functionsReached:
    - PLy_output_setup_func
    - PG_TRY
    - Py_XDECREF
    - errcode
    - TRIGGER_FIRED_BY_INSERT
    - elog
    - Assert
    - RelationGetDescr
    - SPI_register_trigger_data
    - PLy_modify_tuple
    - PLy_input_setup_tuple
    - PG_FINALLY
    - errmsg
    - PG_END_TRY
    - PLy_procedure_call
    - PyUnicode_Check
    - PLyUnicode_AsString
    - ereport
    - PLy_trigger_build_args
    - PLy_output_setup_tuple
    - SPI_finish
    - pg_strcasecmp
    - PLy_global_args_pop
    - PLy_global_args_push
    - PLy_input_setup_func
    - TRIGGER_FIRED_BY_UPDATE
    - errdetail
    - CALLED_AS_TRIGGER
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple PLy_exec_trigger(FunctionCallInfo fcinfo, PLyProcedure *proc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:509,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:509,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:512,1
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:517,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:519,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:521,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:522,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:523,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:525,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:525,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:526,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:527,1
    - Dst: PLy_procedure_call
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:529,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:531,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:532,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:534,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:536,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - fcinfo
    - proc
    argTypes:
    - FunctionCallInfo
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 539
    functionName: PLy_exec_event_trigger
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 0
    functionsReached:
    - PLy_procedure_call
    - elog
    - PLyUnicode_FromString
    - PG_TRY
    - Py_DECREF
    - SPI_finish
    - PyDict_SetItemString
    - Py_XDECREF
    - Assert
    - PG_FINALLY
    - PyDict_New
    - GetCommandTagName
    - CALLED_AS_EVENT_TRIGGER
    - PLy_elog
    - PG_END_TRY
    linkageType: ''
    returnType: void
    signature: void PLy_exec_event_trigger(FunctionCallInfo fcinfo, PLyProcedure *proc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:555,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:559,1
    - Dst: PLy_input_convert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:568,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:572,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:576,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:577,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:580,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:581,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:585,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:587,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:588,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:590,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:592,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - fcinfo
    - proc
    argTypes:
    - FunctionCallInfo
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 595
    functionName: PLy_function_build_args
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - Py_XDECREF
    - PyDict_SetItemString
    - PyList_SetItem
    - PyList_New
    - PLy_input_convert
    - PG_RE_THROW
    - PLy_elog
    - PG_END_TRY
    - Py_INCREF
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_function_build_args(FunctionCallInfo fcinfo, PLyProcedure *proc)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:613,1
    - Dst: PyDict_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:619,1
    - Dst: Py_XINCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:620,1
    - Dst: PyDict_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:625,1
    - Dst: Py_XINCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:626,1
    - Dst: PyDict_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:638,1
    - Dst: Py_XINCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:640,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 606
    functionDepth: 1
    functionLinenumber: 606
    functionLinenumberEnd: 646
    functionName: PLy_function_save_args
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - Py_XINCREF
    - PyDict_GetItemString
    - MemoryContextAllocZero
    linkageType: ''
    returnType: PLySavedArgs
    signature: 'PLySavedArgs *

      PLy_function_save_args(PLyProcedure *proc)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:664,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:666,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:674,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:675,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:681,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:682,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:686,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - proc
    - savedargs
    argTypes:
    - PLyProcedure*
    - PLySavedArgs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 687
    functionName: PLy_function_restore_args
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - pfree
    - Py_DECREF
    - PyDict_SetItemString
    linkageType: ''
    returnType: void
    signature: void PLy_function_restore_args(PLyProcedure *proc, PLySavedArgs *savedargs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:700,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:704,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:705,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - savedargs
    argTypes:
    - PLySavedArgs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 709
    functionName: PLy_function_drop_args
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - pfree
    - Py_XDECREF
    linkageType: ''
    returnType: void
    signature: void PLy_function_drop_args(PLySavedArgs *savedargs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PLy_function_save_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:730,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 721
    functionDepth: 2
    functionLinenumber: 721
    functionLinenumberEnd: 741
    functionName: PLy_global_args_push
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 2
    functionsReached:
    - PLy_function_save_args
    linkageType: ''
    returnType: void
    signature: void PLy_global_args_push(PLyProcedure *proc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:754,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:761,1
    - Dst: PLy_function_restore_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:766,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 782
    functionName: PLy_global_args_pop
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 2
    functionsReached:
    - Assert
    - PLy_function_restore_args
    linkageType: ''
    returnType: void
    signature: void PLy_global_args_pop(PLyProcedure *proc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:787,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:791,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 792
    functionName: plpython_return_error_callback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 0
    functionsReached:
    - errcontext
    - PLy_current_execution_context
    linkageType: ''
    returnType: void
    signature: void plpython_return_error_callback(void *arg)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:798,1
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:817,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:823,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:826,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:832,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:836,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:838,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:839,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:840,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:842,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:842,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:843,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:844,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:845,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:846,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:847,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:849,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:850,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:851,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:852,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:853,1
    - Dst: SPI_getnspname
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:855,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:856,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:857,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:858,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:859,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:861,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:862,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:863,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:864,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:865,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:866,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:869,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:872,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:873,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:875,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:877,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:878,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:879,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:886,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:888,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:890,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:891,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:894,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:895,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:896,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:899,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:901,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:903,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:904,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:908,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:909,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:912,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:914,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:916,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:919,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:920,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:921,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:922,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:926,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:927,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:932,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:936,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:937,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:939,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:941,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:942,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:943,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:945,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:946,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:949,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:950,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:951,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:952,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:953,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:954,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:955,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:956,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:959,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:963,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:964,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:967,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:978,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:982,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:987,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:992,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:994,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:995,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:997,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:999,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1000,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1001,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1003,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 121
    argCount: 3
    argNames:
    - fcinfo
    - proc
    - rv
    argTypes:
    - FunctionCallInfo
    - PLyProcedure*
    - HeapTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 1006
    functionName: PLy_trigger_build_args
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - Py_XDECREF
    - TRIGGER_FIRED_BEFORE
    - TRIGGER_FIRED_BY_INSERT
    - TRIGGER_FIRED_AFTER
    - PLy_input_from_tuple
    - Py_INCREF
    - elog
    - pfree
    - RelationGetDescr
    - Assert
    - PyList_New
    - TRIGGER_FIRED_BY_DELETE
    - PG_RE_THROW
    - PyDict_New
    - SPI_getrelname
    - ObjectIdGetDatum
    - PG_END_TRY
    - DatumGetCString
    - Py_DECREF
    - PyDict_SetItemString
    - TRIGGER_FIRED_BY_TRUNCATE
    - TRIGGER_FIRED_FOR_STATEMENT
    - PLyUnicode_FromString
    - PG_CATCH
    - PyList_SetItem
    - TRIGGER_FIRED_INSTEAD
    - DirectFunctionCall1
    - TRIGGER_FIRED_FOR_ROW
    - TRIGGER_FIRED_BY_UPDATE
    - SPI_getnspname
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_trigger_build_args(FunctionCallInfo fcinfo, PLyProcedure *proc, HeapTuple
      *rv)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1033,1
    - Dst: PyDict_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1039,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1040,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1041,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1042,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1043,1
    - Dst: PyDict_Check
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1044,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1045,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1046,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1047,1
    - Dst: PyDict_Keys
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1049,1
    - Dst: PyList_Size
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1050,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1052,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1054,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1055,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1056,1
    - Dst: PyList_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1065,1
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1066,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1067,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1070,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1071,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1072,1
    - Dst: SPI_fnumber
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1075,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1077,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1078,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1079,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1082,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1083,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1084,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1086,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1087,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1088,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1089,1
    - Dst: PyDict_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1092,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1094,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1096,1
    - Dst: PLy_output_convert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1101,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1106,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1110,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1112,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1114,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1115,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1116,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1119,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1121,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1123,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1125,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1127,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1129,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1130,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1132,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1133,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1134,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 66
    argCount: 4
    argNames:
    - proc
    - pltd
    - tdata
    - otup
    argTypes:
    - PLyProcedure*
    - PyObject*
    - TriggerData*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1139
    functionName: PLy_modify_tuple
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - PyList_Size
    - Py_XDECREF
    - errcode
    - SPI_fnumber
    - PyDict_Keys
    - Py_INCREF
    - elog
    - pfree
    - RelationGetDescr
    - PyDict_GetItem
    - PG_RE_THROW
    - errmsg
    - PG_END_TRY
    - PyUnicode_Check
    - Py_DECREF
    - PLyUnicode_AsString
    - ereport
    - PyDict_GetItemString
    - PyDict_Check
    - TupleDescAttr
    - heap_modify_tuple
    - PLy_output_convert
    - PG_CATCH
    - palloc0
    - PyList_GetItem
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple PLy_modify_tuple(PLyProcedure *proc, PyObject *pltd, TriggerData
      *tdata,\n\t\t\t\t HeapTuple otup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1144,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1141
    functionDepth: 1
    functionLinenumber: 1141
    functionLinenumberEnd: 1148
    functionName: plpython_trigger_error_callback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 0
    functionsReached:
    - errcontext
    - PLy_current_execution_context
    linkageType: ''
    returnType: void
    signature: void plpython_trigger_error_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1155,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1157,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1159,1
    - Dst: PyEval_EvalCode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1161,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1168,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1168,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1170,1
    - Dst: PLy_abort_open_subtransactions
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1172,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1174,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - proc
    - kargs
    - vargs
    argTypes:
    - PLyProcedure*
    - char*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1151
    functionDepth: 1
    functionLinenumber: 1151
    functionLinenumberEnd: 1181
    functionName: PLy_procedure_call
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 3
    functionsReached:
    - PG_TRY
    - PyDict_SetItemString
    - Assert
    - PLy_abort_open_subtransactions
    - PG_FINALLY
    - list_length
    - PLy_elog
    - PG_END_TRY
    - PyEval_EvalCode
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_procedure_call(PLyProcedure *proc, const char *kargs, PyObject *vargs)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1190,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1192,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1196,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1198,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1199,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1201,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1203,1
    - Dst: list_delete_first
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1204,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1206,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - save_subxact_level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1187
    functionDepth: 1
    functionLinenumber: 1187
    functionLinenumberEnd: 1210
    functionName: PLy_abort_open_subtransactions
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - Assert
    - linitial
    - pfree
    - ereport
    - MemoryContextSwitchTo
    - errmsg
    - RollbackAndReleaseCurrentSubTransaction
    - list_delete_first
    - list_length
    linkageType: ''
    returnType: void
    signature: void PLy_abort_open_subtransactions(int save_subxact_level)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyModule_Create
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:130,1
    - Dst: PLy_add_exceptions
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:134,1
    - Dst: PLy_plan_init_type
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:136,1
    - Dst: PLy_result_init_type
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:137,1
    - Dst: PLy_subtransaction_init_type
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:138,1
    - Dst: PLy_cursor_init_type
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 142
    functionName: PyInit_plpy
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PyModule_Create
    - PLy_plan_init_type
    - PLy_cursor_init_type
    - PLy_result_init_type
    - PLy_add_exceptions
    - PLy_subtransaction_init_type
    linkageType: ''
    returnType: PyMODINIT_FUNC
    signature: PyMODINIT_FUNC PyInit_plpy(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PLy_create_exception
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:150,1
    - Dst: PLy_create_exception
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:152,1
    - Dst: PLy_create_exception
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:154,1
    - Dst: PyModule_Create
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:157,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:159,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:163,1
    - Dst: PLy_generate_spi_exceptions
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:166,1
    - Dst: PyModule_AddObject
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:168,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:170,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - plpy
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 173
    functionName: PLy_add_exceptions
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 1
    functionsReached:
    - PyModule_Create
    - Py_XDECREF
    - hash_create
    - PLy_create_exception
    - PLy_generate_spi_exceptions
    - PLy_elog
    - PyModule_AddObject
    linkageType: ''
    returnType: void
    signature: void PLy_add_exceptions(PyObject *plpy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyErr_NewException
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:186,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:188,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:196,1
    - Dst: PyModule_AddObject
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:198,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:200,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - name
    - base
    - dict
    - modname
    - mod
    argTypes:
    - char*
    - PyObject*
    - PyObject*
    - char*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 205
    functionName: PLy_create_exception
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 1
    functionsReached:
    - Py_XDECREF
    - PyErr_NewException
    - PLy_elog
    - Py_INCREF
    - PyModule_AddObject
    linkageType: ''
    returnType: PyObject
    signature: "PyObject *\nPLy_create_exception(char *name, PyObject *base, PyObject
      *dict,\n\t\t\t\t\t const char *modname, PyObject *mod)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:221,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:224,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:226,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:226,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:228,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:230,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:231,1
    - Dst: PLy_create_exception
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:233,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:236,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:238,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - mod
    - base
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 241
    functionName: PLy_generate_spi_exceptions
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 1
    functionsReached:
    - PLyUnicode_FromString
    - Py_DECREF
    - hash_search
    - PyDict_SetItemString
    - Assert
    - unpack_sql_state
    - PLy_create_exception
    - PyDict_New
    - PLy_elog
    linkageType: ''
    returnType: void
    signature: void PLy_generate_spi_exceptions(PyObject *mod, PyObject *base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_output
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 255
    functionName: PLy_debug
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PLy_output
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_debug(PyObject *self, PyObject *args, PyObject *kw)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_output
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: PLy_log
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PLy_output
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_log(PyObject *self, PyObject *args, PyObject *kw)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_output
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 267
    functionName: PLy_info
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PLy_output
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_info(PyObject *self, PyObject *args, PyObject *kw)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_output
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: PLy_notice
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PLy_output
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_notice(PyObject *self, PyObject *args, PyObject *kw)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_output
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 279
    functionName: PLy_warning
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PLy_output
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_warning(PyObject *self, PyObject *args, PyObject *kw)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_output
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 285
    functionName: PLy_error
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PLy_output
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_error(PyObject *self, PyObject *args, PyObject *kw)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_output
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 291
    functionName: PLy_fatal
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PLy_output
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_fatal(PyObject *self, PyObject *args, PyObject *kw)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:300,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:303,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:304,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 308
    functionName: PLy_quote_literal
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - pfree
    - PLyUnicode_FromString
    - PyArg_ParseTuple
    - quote_literal_cstr
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_quote_literal(PyObject *self, PyObject *args)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:317,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:321,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:323,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:324,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 328
    functionName: PLy_quote_nullable
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - pfree
    - PLyUnicode_FromString
    - PyArg_ParseTuple
    - quote_literal_cstr
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_quote_nullable(PyObject *self, PyObject *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:337,1
    - Dst: quote_identifier
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:340,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 344
    functionName: PLy_quote_ident
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - quote_identifier
    - PyArg_ParseTuple
    - PLyUnicode_FromString
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_quote_ident(PyObject *self, PyObject *args)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:352,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:358,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - obj
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 366
    functionName: object_to_string
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PLyUnicode_AsString
    - Py_DECREF
    - PyObject_Str
    linkageType: ''
    returnType: char
    signature: 'char *

      object_to_string(PyObject *obj)'
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: PyTuple_Size
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:387,1
    - Dst: PyArg_UnpackTuple
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:395,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:396,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:397,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:400,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:402,1
    - Dst: dgettext
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:405,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:407,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:409,1
    - Dst: PyDict_Next
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:413,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:415,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:417,1
    - Dst: PyTuple_Size
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:420,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:422,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:427,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:428,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:430,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:431,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:432,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:433,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:434,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:435,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:436,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:437,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:438,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:439,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:440,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:441,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:442,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:443,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:444,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:445,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:448,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:458,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:460,1
    - Dst: strspn
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:464,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:466,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:470,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:478,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:481,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:481,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:483,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:483,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:485,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:485,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:487,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:487,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:489,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:489,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:491,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:491,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:493,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:493,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:495,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:495,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:497,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:498,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:499,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:500,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:501,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:503,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:505,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:507,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:509,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:511,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:513,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:517,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:518,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:519,1
    - Dst: PLy_exception_set_with_details
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:521,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:522,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:526,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 86
    argCount: 4
    argNames:
    - level
    - self
    - args
    - kw
    argTypes:
    - int
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 532
    functionName: PLy_output
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 7
    functionsReached:
    - PyTuple_Size
    - PG_TRY
    - Py_XDECREF
    - strcmp
    - errcode
    - MAKE_SQLSTATE
    - CopyErrorData
    - pstrdup
    - PyObject_Str
    - errhint
    - dgettext
    - PyDict_Next
    - pfree
    - pg_verifymbstr
    - PLy_exception_set_with_details
    - strspn
    - err_generic_string
    - PyArg_UnpackTuple
    - PG_END_TRY
    - object_to_string
    - errdetail_internal
    - errmsg_internal
    - PLyUnicode_AsString
    - ereport
    - strlen
    - PLy_elog
    - PG_CATCH
    - MemoryContextSwitchTo
    - FreeErrorData
    - FlushErrorState
    - PLy_exception_set
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_output(volatile int level, PyObject *self, PyObject *args, PyObject *kw)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: PLy_procedure_name
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PLy_procedure_name(PLyProcedure *proc)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:78,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:84,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:101,1
    - Dst: cached_function_compile
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:113,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:131,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - fcinfo
    - forValidator
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 139
    functionName: PLy_procedure_get
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 0
    functionsReached:
    - Assert
    - cached_function_compile
    - MemoryContextRegisterResetCallback
    - MemoryContextAllocZero
    linkageType: ''
    returnType: PLyProcedureCache
    signature: 'PLyProcedureCache *

      PLy_procedure_get(FunctionCallInfo fcinfo, bool forValidator)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:157,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:158,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:160,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:163,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:175,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:179,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:183,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:191,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:191,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:192,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:193,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:203,1
    - Dst: oid_array_to_list
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:206,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:223,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:223,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:224,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:225,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:226,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:235,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:236,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:237,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:239,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:240,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:241,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:242,1
    - Dst: PLy_output_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:246,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:249,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:277,1
    - Dst: palloc0_array
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:294,1
    - Dst: palloc0_array
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:295,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:307,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:309,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:310,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:311,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:312,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:313,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:317,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:318,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:319,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:320,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:323,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:328,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:330,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:339,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:341,1
    - Dst: PLy_procedure_compile
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:343,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:345,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:347,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:349,1
    - Dst: PLy_procedure_delete
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:350,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:351,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:353,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:355,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 89
    argCount: 4
    argNames:
    - proc
    - procTup
    - fn_oid
    - is_trigger
    argTypes:
    - PLyProcedure*
    - HeapTuple
    - Oid
    - PLyTrigType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 356
    functionName: PLy_procedure_create
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 0
    functionsReached:
    - PLy_output_setup_func
    - PG_TRY
    - errcode
    - oid_array_to_list
    - pstrdup
    - NameStr
    - PLy_procedure_compile
    - MemoryContextSetIdentifier
    - elog
    - SearchSysCache1
    - HeapTupleIsValid
    - Assert
    - pfree
    - PG_RE_THROW
    - ReleaseSysCache
    - errmsg
    - ObjectIdGetDatum
    - TextDatumGetCString
    - PG_END_TRY
    - get_func_arg_info
    - ereport
    - GETSTRUCT
    - AllocSetContextCreate
    - SysCacheGetAttrNotNull
    - PG_CATCH
    - format_type_be
    - palloc0_array
    - MemoryContextSwitchTo
    - PLy_input_setup_func
    - PLy_procedure_delete
    - SysCacheGetAttr
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void PLy_procedure_create(PLyProcedure *proc,\n\t\t\t\t\t HeapTuple
      procTup,\n\t\t\t\t\t Oid fn_oid,\n\t\t\t\t\t PLyTrigType is_trigger)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PyDict_Copy
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:368,1
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:374,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:376,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:377,1
    - Dst: PLy_procedure_munge_source
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:382,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:384,1
    - Dst: Py_CompileString
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:385,1
    - Dst: PyEval_EvalCode
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:387,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:388,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:395,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:400,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:402,1
    - Dst: Py_CompileString
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:403,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:409,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:412,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - proc
    - src
    argTypes:
    - PLyProcedure*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 413
    functionName: PLy_procedure_compile
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 1
    functionsReached:
    - elog
    - PyDict_Copy
    - PyEval_EvalCode
    - Py_DECREF
    - PyDict_SetItemString
    - pfree
    - MemoryContextStrdup
    - snprintf
    - PyDict_New
    - PLy_procedure_munge_source
    - PLy_elog
    - Py_CompileString
    linkageType: ''
    returnType: void
    signature: void PLy_procedure_compile(PLyProcedure *proc, const char *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:418,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:419,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:420,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 422
    functionName: PLy_procedure_delete
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 1
    functionsReached:
    - MemoryContextDelete
    - Py_XDECREF
    linkageType: ''
    returnType: void
    signature: void PLy_procedure_delete(PLyProcedure *proc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:436,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:436,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:438,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:439,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:440,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:464,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - name
    - src
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 467
    functionName: PLy_procedure_munge_source
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - strlen
    - palloc
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      PLy_procedure_munge_source(const char *name, const char *src)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:492,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:494,1
    - Dst: PLy_procedure_create
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:499,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - fcinfo
    - procTup
    - hashkey
    - cfunc
    - forValidator
    argTypes:
    - FunctionCallInfo
    - HeapTuple
    - CachedFunctionHashKey*
    - CachedFunction*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 477
    functionDepth: 2
    functionLinenumber: 477
    functionLinenumberEnd: 500
    functionName: PLy_compile_callback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 0
    functionsReached:
    - CALLED_AS_TRIGGER
    - PLy_procedure_create
    - CALLED_AS_EVENT_TRIGGER
    linkageType: ''
    returnType: void
    signature: "void PLy_compile_callback(FunctionCallInfo fcinfo,\n\t\t\t\t\t HeapTuple
      procTup,\n\t\t\t\t\t const CachedFunctionHashKey *hashkey,\n\t\t\t\t\t CachedFunction
      *cfunc,\n\t\t\t\t\t bool forValidator)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:514,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:515,1
    - Dst: PLy_procedure_delete
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cfunc
    argTypes:
    - CachedFunction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 509
    functionDepth: 2
    functionLinenumber: 509
    functionLinenumberEnd: 518
    functionName: PLy_delete_callback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 0
    functionsReached:
    - Assert
    - PLy_procedure_delete
    linkageType: ''
    returnType: void
    signature: void PLy_delete_callback(CachedFunction *cfunc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PLy_function_cleanup_srfstate
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:541,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 535
    functionDepth: 2
    functionLinenumber: 535
    functionLinenumberEnd: 552
    functionName: RemovePLyProcedureCache
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 0
    functionsReached:
    - Assert
    - PLy_function_cleanup_srfstate
    linkageType: ''
    returnType: void
    signature: void RemovePLyProcedureCache(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elevel
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 27
    functionName: PLy_elog
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PLy_elog(elevel, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elevel
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 35
    functionName: PLy_elog
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PLy_elog(elevel, ...)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:43,1
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:48,1
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:51,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:53,1
    - Dst: PLy_plan_new
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:58,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:61,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:64,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:66,1
    - Dst: palloc0_array
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:69,1
    - Dst: palloc0_array
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:70,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:72,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:77,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:79,1
    - Dst: PySequence_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:89,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:93,1
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:95,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:96,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:99,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:100,1
    - Dst: parseTypeString
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:110,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:112,1
    - Dst: PLy_output_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:121,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:126,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:126,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:127,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:129,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:130,1
    - Dst: SPI_keepplan
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:133,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:134,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:136,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:138,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:140,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:141,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:143,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:146,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:148,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 150
    functionName: PLy_spi_prepare
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 0
    functionsReached:
    - PLy_output_setup_func
    - PG_TRY
    - Py_XDECREF
    - PySequence_Check
    - PLy_spi_subtransaction_begin
    - PLy_current_execution_context
    - PLy_plan_new
    - elog
    - Assert
    - SPI_keepplan
    - pg_verifymbstr
    - errmsg
    - PG_END_TRY
    - PySequence_Length
    - PyUnicode_Check
    - Py_DECREF
    - SPI_result_code_string
    - PLyUnicode_AsString
    - ereport
    - PySequence_GetItem
    - SPI_prepare
    - strlen
    - AllocSetContextCreate
    - PLy_elog
    - PyArg_ParseTuple
    - parseTypeString
    - PG_CATCH
    - palloc0_array
    - PLy_spi_subtransaction_abort
    - PLy_spi_subtransaction_commit
    - MemoryContextSwitchTo
    - PLy_exception_set
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_spi_prepare(PyObject *self, PyObject *args)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:164,1
    - Dst: PLy_spi_execute_query
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:165,1
    - Dst: PyErr_Clear
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:167,1
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:169,1
    - Dst: is_PLyPlanObject
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:170,1
    - Dst: PLy_spi_execute_plan
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:171,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 175
    functionName: PLy_spi_execute
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 0
    functionsReached:
    - PLy_spi_execute_query
    - PLy_spi_execute_plan
    - PyErr_Clear
    - is_PLyPlanObject
    - PLy_exception_set
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_spi_execute(PyObject *self, PyObject *args)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:189,1
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:189,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:191,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:194,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:204,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:207,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:208,1
    - Dst: PLy_exception_set_plural
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:209,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:214,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:222,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:224,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:226,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:236,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:239,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:243,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:244,1
    - Dst: PySequence_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:257,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:261,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:263,1
    - Dst: PLy_output_convert
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:267,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:270,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:272,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:274,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:277,1
    - Dst: SPI_execute_plan
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:279,1
    - Dst: PLy_spi_execute_fetch_result
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:281,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:283,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:284,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:286,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:289,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:292,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:296,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:298,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 60
    argCount: 3
    argNames:
    - ob
    - list
    - limit
    argTypes:
    - PyObject*
    - PyObject*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 303
    functionName: PLy_spi_execute_plan
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - PyObject_Str
    - PySequence_Check
    - PLy_current_execution_context
    - PLy_spi_subtransaction_begin
    - PLy_spi_execute_fetch_result
    - SPI_execute_plan
    - PLy_exception_set_plural
    - PG_FINALLY
    - PG_END_TRY
    - PySequence_Length
    - PyUnicode_Check
    - Py_DECREF
    - SPI_result_code_string
    - PLyUnicode_AsString
    - PySequence_GetItem
    - AllocSetContextCreate
    - PLy_elog
    - PLy_output_convert
    - PG_CATCH
    - PLy_spi_subtransaction_abort
    - PLy_spi_subtransaction_commit
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - palloc
    - PLy_exception_set
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:316,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:318,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:320,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:322,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:322,1
    - Dst: SPI_execute
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:323,1
    - Dst: PLy_spi_execute_fetch_result
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:324,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:326,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:328,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:330,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:333,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:337,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:338,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - query
    - limit
    argTypes:
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 345
    functionName: PLy_spi_execute_query
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 1
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - PLy_spi_subtransaction_abort
    - Py_XDECREF
    - SPI_result_code_string
    - PLy_spi_execute_fetch_result
    - PLy_spi_subtransaction_commit
    - pg_verifymbstr
    - SPI_execute
    - strlen
    - PLy_spi_subtransaction_begin
    - PLy_exception_set
    - PLy_current_execution_context
    - PG_END_TRY
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_spi_execute_query(char *query, long limit)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:351,1
    - Dst: PLy_result_new
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:354,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:357,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:360,1
    - Dst: PyLong_FromLong
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:361,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:365,1
    - Dst: PyLong_FromUnsignedLongLong
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:366,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:373,1
    - Dst: PyLong_FromUnsignedLongLong
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:374,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:376,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:381,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:385,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:399,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:400,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:401,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:403,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:404,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:407,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:412,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:417,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:430,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:431,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:432,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:434,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:436,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:437,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:438,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:439,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:441,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:443,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:444,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:449,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 50
    argCount: 3
    argNames:
    - tuptable
    - rows
    - status
    argTypes:
    - SPITupleTable*
    - uint64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 455
    functionName: PLy_spi_execute_fetch_result
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 2
    functionsReached:
    - PG_TRY
    - errcode
    - PLy_input_from_tuple
    - PyLong_FromLong
    - PyLong_FromUnsignedLongLong
    - PLy_current_execution_context
    - CreateTupleDescCopy
    - PyList_New
    - PLy_input_setup_tuple
    - PG_RE_THROW
    - errmsg
    - PG_END_TRY
    - Py_DECREF
    - PLy_result_new
    - ereport
    - AllocSetContextCreate
    - SPI_freetuptable
    - PG_CATCH
    - PyList_SetItem
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - PLy_input_setup_func
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_spi_execute_fetch_result(SPITupleTable *tuptable, uint64 rows, int status)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:461,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:463,1
    - Dst: SPI_commit
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:465,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:470,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:477,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:478,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:479,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:485,1
    - Dst: PLy_spi_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:494,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:495,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 502
    functionName: PLy_commit
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - hash_search
    - PLy_spi_exception_set
    - CopyErrorData
    - MemoryContextSwitchTo
    - FreeErrorData
    - FlushErrorState
    - SPI_commit
    - PLy_current_execution_context
    - PG_END_TRY
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_commit(PyObject *self, PyObject *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:508,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:510,1
    - Dst: SPI_rollback
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:512,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:517,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:524,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:525,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:526,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:532,1
    - Dst: PLy_spi_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:541,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:542,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 549
    functionName: PLy_rollback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - hash_search
    - PLy_spi_exception_set
    - CopyErrorData
    - MemoryContextSwitchTo
    - FreeErrorData
    - FlushErrorState
    - SPI_rollback
    - PLy_current_execution_context
    - PG_END_TRY
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_rollback(PyObject *self, PyObject *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:579,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 582
    functionName: PLy_spi_subtransaction_begin
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 7
    functionsReached:
    - BeginInternalSubTransaction
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void PLy_spi_subtransaction_begin(MemoryContext oldcontext, ResourceOwner
      oldowner)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:588,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 591
    functionName: PLy_spi_subtransaction_commit
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 7
    functionsReached:
    - ReleaseCurrentSubTransaction
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void PLy_spi_subtransaction_commit(MemoryContext oldcontext, ResourceOwner
      oldowner)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:601,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:602,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:603,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:606,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:607,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:611,1
    - Dst: PLy_spi_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:620,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 622
    functionName: PLy_spi_subtransaction_abort
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 7
    functionsReached:
    - hash_search
    - PLy_spi_exception_set
    - CopyErrorData
    - MemoryContextSwitchTo
    - FreeErrorData
    - RollbackAndReleaseCurrentSubTransaction
    - FlushErrorState
    linkageType: ''
    returnType: void
    signature: void PLy_spi_subtransaction_abort(MemoryContext oldcontext, ResourceOwner
      oldowner)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Py_BuildValue
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:635,1
    - Dst: PyObject_CallObject
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:640,1
    - Dst: Py_BuildValue
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:644,1
    - Dst: PyObject_SetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:651,1
    - Dst: PyErr_SetObject
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:654,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:656,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:657,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:658,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:662,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:663,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:664,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:665,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - excclass
    - edata
    argTypes:
    - PyObject*
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 666
    functionName: PLy_spi_exception_set
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 3
    functionsReached:
    - elog
    - Py_DECREF
    - Py_XDECREF
    - PyObject_SetAttrString
    - PyObject_CallObject
    - PyErr_SetObject
    - Py_BuildValue
    linkageType: ''
    returnType: void
    signature: void PLy_spi_exception_set(PyObject *excclass, ErrorData *edata)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_bindtextdomain
      Src: /src/postgres/src/pl/plpython/plpy_main.c:60,1
    - Dst: PyImport_AppendInittab
      Src: /src/postgres/src/pl/plpython/plpy_main.c:63,1
    - Dst: Py_Initialize
      Src: /src/postgres/src/pl/plpython/plpy_main.c:66,1
    - Dst: PyImport_AddModule
      Src: /src/postgres/src/pl/plpython/plpy_main.c:68,1
    - Dst: PyErr_Occurred
      Src: /src/postgres/src/pl/plpython/plpy_main.c:69,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:70,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_main.c:71,1
    - Dst: PyModule_GetDict
      Src: /src/postgres/src/pl/plpython/plpy_main.c:73,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:75,1
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_main.c:80,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:82,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_main.c:83,1
    - Dst: PyImport_ImportModule
      Src: /src/postgres/src/pl/plpython/plpy_main.c:88,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:90,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_main.c:91,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:92,1
    - Dst: PyErr_Occurred
      Src: /src/postgres/src/pl/plpython/plpy_main.c:94,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:95,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_main.c:97,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_main.c:100,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 105
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - PyErr_Occurred
    - PyImport_AppendInittab
    - Py_DECREF
    - PyDict_SetItemString
    - Py_Initialize
    - PyImport_AddModule
    - PyImport_ImportModule
    - PyModule_GetDict
    - PyDict_New
    - PLy_elog
    - pg_bindtextdomain
    - Py_INCREF
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/pl/plpython/plpy_main.c:110,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:111,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/pl/plpython/plpy_main.c:120,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:121,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:124,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpython/plpy_main.c:127,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_main.c:127,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpython/plpy_main.c:128,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:129,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpython/plpy_main.c:130,1
    - Dst: PLy_procedure_is_trigger
      Src: /src/postgres/src/pl/plpython/plpy_main.c:132,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpython/plpy_main.c:134,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:142,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/pl/plpython/plpy_main.c:142,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:143,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:150,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:157,1
    - Dst: PLy_procedure_get
      Src: /src/postgres/src/pl/plpython/plpy_main.c:162,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_main.c:172,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:176,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 177
    functionName: plpython3_validator
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - PG_RETURN_VOID
    - HeapTupleIsValid
    - Assert
    - LOCAL_FCINFO
    - PLy_procedure_get
    - PLy_procedure_is_trigger
    - ReleaseSysCache
    - MemSet
    - PG_GETARG_OID
    - CheckFunctionValidatorAccess
    - GETSTRUCT
    - ObjectIdGetDatum
    - SizeForFunctionCallInfo
    linkageType: ''
    returnType: Datum
    signature: Datum plpython3_validator(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/pl/plpython/plpy_main.c:188,1
    - Dst: castNode
      Src: /src/postgres/src/pl/plpython/plpy_main.c:189,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plpython/plpy_main.c:192,1
    - Dst: PLy_push_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:199,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_main.c:201,1
    - Dst: PLy_procedure_get
      Src: /src/postgres/src/pl/plpython/plpy_main.c:221,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/plpython/plpy_main.c:224,1
    - Dst: PLy_exec_trigger
      Src: /src/postgres/src/pl/plpython/plpy_main.c:228,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_main.c:229,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/pl/plpython/plpy_main.c:231,1
    - Dst: PLy_exec_event_trigger
      Src: /src/postgres/src/pl/plpython/plpy_main.c:233,1
    - Dst: PLy_exec_function
      Src: /src/postgres/src/pl/plpython/plpy_main.c:237,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_main.c:239,1
    - Dst: PLy_pop_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:242,1
    - Dst: PyErr_Clear
      Src: /src/postgres/src/pl/plpython/plpy_main.c:243,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_main.c:245,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_main.c:247,1
    - Dst: PLy_pop_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:250,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 253
    functionName: plpython3_call_handler
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - CALLED_AS_TRIGGER
    - PyErr_Clear
    - castNode
    - PLy_exec_trigger
    - PLy_exec_event_trigger
    - PLy_procedure_get
    - PG_RE_THROW
    - PLy_pop_execution_context
    - PLy_exec_function
    - SPI_connect_ext
    - PointerGetDatum
    - PLy_push_execution_context
    - CALLED_AS_EVENT_TRIGGER
    - IsA
    - PG_END_TRY
    linkageType: ''
    returnType: Datum
    signature: Datum plpython3_call_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/pl/plpython/plpy_main.c:258,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpython/plpy_main.c:259,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/pl/plpython/plpy_main.c:259,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plpython/plpy_main.c:267,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:269,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/pl/plpython/plpy_main.c:269,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:270,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:275,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_main.c:276,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpython/plpy_main.c:279,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:289,1
    - Dst: PLy_push_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:298,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_main.c:300,1
    - Dst: PLy_procedure_compile
      Src: /src/postgres/src/pl/plpython/plpy_main.c:312,1
    - Dst: PLy_exec_function
      Src: /src/postgres/src/pl/plpython/plpy_main.c:314,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_main.c:316,1
    - Dst: PLy_pop_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:318,1
    - Dst: PLy_procedure_delete
      Src: /src/postgres/src/pl/plpython/plpy_main.c:319,1
    - Dst: PyErr_Clear
      Src: /src/postgres/src/pl/plpython/plpy_main.c:320,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_main.c:321,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_main.c:323,1
    - Dst: PLy_pop_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:326,1
    - Dst: PLy_procedure_delete
      Src: /src/postgres/src/pl/plpython/plpy_main.c:329,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 332
    functionName: plpython3_inline_handler
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_TRY
    - PG_RETURN_VOID
    - PyErr_Clear
    - PLy_procedure_compile
    - SizeForFunctionCallInfo
    - PG_RE_THROW
    - PLy_pop_execution_context
    - SPI_connect_ext
    - PG_END_TRY
    - MemSet
    - PLy_exec_function
    - PLy_push_execution_context
    - AllocSetContextCreate
    - PG_CATCH
    - MemoryContextStrdup
    - LOCAL_FCINFO
    - PLy_procedure_delete
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum plpython3_inline_handler(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - procStruct
    argTypes:
    - Form_pg_proc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 358
    functionName: PLy_procedure_is_trigger
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: PLyTrigType
    signature: PLyTrigType PLy_procedure_is_trigger(Form_pg_proc procStruct)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_main.c:368,1
    - Dst: PLy_procedure_name
      Src: /src/postgres/src/pl/plpython/plpy_main.c:369,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_main.c:371,1
    - Dst: PLy_procedure_name
      Src: /src/postgres/src/pl/plpython/plpy_main.c:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 374
    functionName: plpython_error_callback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - errcontext
    - PLy_procedure_name
    linkageType: ''
    returnType: void
    signature: void plpython_error_callback(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_main.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 380
    functionName: plpython_inline_error_callback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - errcontext
    linkageType: ''
    returnType: void
    signature: void plpython_inline_error_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:386,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 389
    functionName: PLy_current_execution_context
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 12
    functionsReached:
    - elog
    linkageType: ''
    returnType: PLyExecutionContext
    signature: 'PLyExecutionContext *

      PLy_current_execution_context(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_main.c:400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - context
    argTypes:
    - PLyExecutionContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 404
    functionName: PLy_get_scratch_context
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - AllocSetContextCreate
    linkageType: ''
    returnType: MemoryContext
    signature: MemoryContext PLy_get_scratch_context(PLyExecutionContext *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/pl/plpython/plpy_main.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - atomic_context
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 420
    functionName: PLy_push_execution_context
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 2
    functionsReached:
    - MemoryContextAlloc
    linkageType: ''
    returnType: PLyExecutionContext
    signature: 'PLyExecutionContext *

      PLy_push_execution_context(bool atomic_context)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:428,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_main.c:433,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_main.c:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 435
    functionName: PLy_pop_execution_context
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 2
    functionsReached:
    - elog
    - MemoryContextDelete
    - pfree
    linkageType: ''
    returnType: void
    signature: void PLy_pop_execution_context(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PyUnicode_AsUTF8String
      Src: /src/postgres/src/pl/plpython/plpy_util.c:27,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_util.c:29,1
    - Dst: PyBytes_AsString
      Src: /src/postgres/src/pl/plpython/plpy_util.c:31,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_util.c:34,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_util.c:35,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/pl/plpython/plpy_util.c:46,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_util.c:48,1
    - Dst: pg_any_to_server
      Src: /src/postgres/src/pl/plpython/plpy_util.c:50,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_util.c:51,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_util.c:54,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_util.c:56,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_util.c:57,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_util.c:59,1
    - Dst: PyBytes_FromStringAndSize
      Src: /src/postgres/src/pl/plpython/plpy_util.c:65,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_util.c:65,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_util.c:69,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_util.c:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - unicode
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 73
    functionName: PLyUnicode_Bytes
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_util.c
    functionUses: 0
    functionsReached:
    - PyBytes_FromStringAndSize
    - PG_CATCH
    - PyBytes_AsString
    - Py_DECREF
    - PG_TRY
    - GetDatabaseEncoding
    - pfree
    - PG_RE_THROW
    - PyUnicode_AsUTF8String
    - strlen
    - pg_any_to_server
    - PLy_elog
    - PG_END_TRY
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyUnicode_Bytes(PyObject *unicode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLyUnicode_Bytes
      Src: /src/postgres/src/pl/plpython/plpy_util.c:83,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_util.c:84,1
    - Dst: PyBytes_AsString
      Src: /src/postgres/src/pl/plpython/plpy_util.c:84,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_util.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - unicode
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: PLyUnicode_AsString
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_util.c
    functionUses: 7
    functionsReached:
    - PyBytes_AsString
    - PLyUnicode_Bytes
    - pstrdup
    - Py_XDECREF
    linkageType: ''
    returnType: char
    signature: 'char *

      PLyUnicode_AsString(PyObject *unicode)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_server_to_any
      Src: /src/postgres/src/pl/plpython/plpy_util.c:100,1
    - Dst: PyUnicode_FromStringAndSize
      Src: /src/postgres/src/pl/plpython/plpy_util.c:104,1
    - Dst: PyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_util.c:108,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_util.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - char*
    - Py_ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 113
    functionName: PLyUnicode_FromStringAndSize
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_util.c
    functionUses: 0
    functionsReached:
    - pfree
    - PyUnicode_FromString
    - pg_server_to_any
    - PyUnicode_FromStringAndSize
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyUnicode_FromStringAndSize(const char *s, Py_ssize_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLyUnicode_FromStringAndSize
      Src: /src/postgres/src/pl/plpython/plpy_util.c:118,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_util.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 119
    functionName: PLyUnicode_FromString
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_util.c
    functionUses: 7
    functionsReached:
    - PLyUnicode_FromStringAndSize
    - strlen
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyUnicode_FromString(const char *s)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyType_FromSpec
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:60,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: PLy_subtransaction_init_type
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_subxactobject.c
    functionUses: 1
    functionsReached:
    - elog
    - PyType_FromSpec
    linkageType: ''
    returnType: void
    signature: void PLy_subtransaction_init_type(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_New
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:71,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - self
    - unused
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 83
    functionName: PLy_subtransaction_new
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_subxactobject.c
    functionUses: 0
    functionsReached:
    - Py_INCREF
    - PyObject_New
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_subtransaction_new(PyObject *self, PyObject *unused)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:102,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:108,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:116,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:122,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:125,1
    - Dst: lcons
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:126,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:129,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - self
    - unused
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 133
    functionName: PLy_subtransaction_enter
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_subxactobject.c
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    - BeginInternalSubTransaction
    - MemoryContextSwitchTo
    - Py_INCREF
    - PLy_exception_set
    - lcons
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_subtransaction_enter(PyObject *self, PyObject *unused)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:155,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:160,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:166,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:172,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:181,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:185,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:188,1
    - Dst: list_delete_first
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:189,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:191,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_subxactobject.c:193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 196
    functionName: PLy_subtransaction_exit
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_subxactobject.c
    functionUses: 0
    functionsReached:
    - pfree
    - linitial
    - ReleaseCurrentSubTransaction
    - MemoryContextSwitchTo
    - list_delete_first
    - RollbackAndReleaseCurrentSubTransaction
    - PLy_exception_set
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_subtransaction_exit(PyObject *self, PyObject *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyType_FromSpec
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:58,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: PLy_plan_init_type
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_planobject.c
    functionUses: 1
    functionsReached:
    - elog
    - PyType_FromSpec
    linkageType: ''
    returnType: void
    signature: void PLy_plan_init_type(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_New
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:68,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 82
    functionName: PLy_plan_new
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_planobject.c
    functionUses: 1
    functionsReached:
    - Py_INCREF
    - PyObject_New
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_plan_new(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ob
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: is_PLyPlanObject
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_planobject.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_PLyPlanObject(PyObject *ob)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Py_TYPE
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:94,1
    - Dst: SPI_freeplan
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:99,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:104,1
    - Dst: PyObject_Free
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:108,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - self
    argTypes:
    - PLyPlanObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 113
    functionName: PLy_plan_dealloc
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_planobject.c
    functionUses: 0
    functionsReached:
    - SPI_freeplan
    - Py_DECREF
    - Py_TYPE
    - MemoryContextDelete
    - PyObject_Free
    linkageType: ''
    returnType: void
    signature: void PLy_plan_dealloc(PLyPlanObject *self)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:121,1
    - Dst: PLy_cursor_plan
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 125
    functionName: PLy_plan_cursor
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_planobject.c
    functionUses: 0
    functionsReached:
    - PyArg_ParseTuple
    - PLy_cursor_plan
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_plan_cursor(PyObject *self, PyObject *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:134,1
    - Dst: PLy_spi_execute_plan
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: PLy_plan_execute
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_planobject.c
    functionUses: 0
    functionsReached:
    - PyArg_ParseTuple
    - PLy_spi_execute_plan
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_plan_execute(PyObject *self, PyObject *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:144,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_planobject.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 151
    functionName: PLy_plan_status
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_planobject.c
    functionUses: 0
    functionsReached:
    - PyArg_ParseTuple
    - Py_INCREF
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_plan_status(PyObject *self, PyObject *args)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:57,1
    - Dst: PyErr_Fetch
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:59,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:62,1
    - Dst: PyErr_NormalizeException
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:78,1
    - Dst: PyErr_GivenExceptionMatches
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:80,1
    - Dst: PLy_get_spi_error_data
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:81,1
    - Dst: PyErr_GivenExceptionMatches
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:85,1
    - Dst: PLy_get_error_data
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:86,1
    - Dst: PyErr_GivenExceptionMatches
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:89,1
    - Dst: PLy_traceback
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:93,1
    - Dst: va_start
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:104,1
    - Dst: appendStringInfoVA
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:105,1
    - Dst: dgettext
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:105,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:106,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:109,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:123,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:124,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:125,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:126,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:127,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:128,1
    - Dst: internalerrquery
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:129,1
    - Dst: internalerrposition
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:130,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:131,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:133,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:135,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:137,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:139,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:142,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:144,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:145,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:146,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:149,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:151,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:153,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:155,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 2
    argNames:
    - elevel
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 156
    functionName: PLy_elog_impl
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - Py_XDECREF
    - errcode
    - errcontext
    - PyErr_NormalizeException
    - errhint
    - PLy_traceback
    - dgettext
    - pfree
    - appendStringInfoVA
    - PyErr_GivenExceptionMatches
    - PG_FINALLY
    - PLy_get_error_data
    - err_generic_string
    - PG_END_TRY
    - errdetail_internal
    - va_end
    - errmsg_internal
    - va_start
    - initStringInfo
    - ereport
    - PLy_get_spi_error_data
    - PyErr_Fetch
    - internalerrposition
    - internalerrquery
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void PLy_elog_impl(int elevel, const char *fmt, ...)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:189,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:196,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:197,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:199,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:201,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:203,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:204,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:208,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:212,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:215,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:216,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:217,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:218,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:220,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:221,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:225,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:227,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:228,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:229,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:231,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:237,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:239,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:248,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:250,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:252,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:254,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:256,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:258,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:260,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:262,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:264,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:266,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:268,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:273,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:287,1
    - Dst: PLy_procedure_name
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:289,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:290,1
    - Dst: PyLong_AsLong
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:291,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:294,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:297,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:305,1
    - Dst: get_source_line
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:316,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:319,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:320,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:325,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:327,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:328,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:329,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:330,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:331,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:333,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:336,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:338,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:348,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 87
    argCount: 6
    argNames:
    - e
    - v
    - tb
    - xmsg
    - tbmsg
    - tb_depth
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    - char**
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 355
    functionName: PLy_traceback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - elog
    - PG_TRY
    - Py_DECREF
    - Py_XDECREF
    - strcmp
    - pfree
    - appendStringInfo
    - appendStringInfoString
    - PLyUnicode_AsString
    - initStringInfo
    - PyObject_Str
    - PyLong_AsLong
    - PG_FINALLY
    - PLy_procedure_name
    - PyObject_GetAttrString
    - PLy_current_execution_context
    - PG_END_TRY
    - get_source_line
    linkageType: ''
    returnType: void
    signature: "void PLy_traceback(PyObject *e, PyObject *v, PyObject *tb,\n\t\t\t
      \ char *volatile *xmsg, char *volatile *tbmsg, int *tb_depth)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:366,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:370,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:371,1
    - Dst: strspn
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:372,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:374,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - exc
    - sqlerrcode
    argTypes:
    - PyObject*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 360
    functionDepth: 3
    functionLinenumber: 360
    functionLinenumberEnd: 379
    functionName: PLy_get_sqlerrcode
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 0
    functionsReached:
    - Py_DECREF
    - MAKE_SQLSTATE
    - PLyUnicode_AsString
    - strspn
    - strlen
    - PyObject_GetAttrString
    linkageType: ''
    returnType: void
    signature: void PLy_get_sqlerrcode(PyObject *exc, int *sqlerrcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:397,1
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:401,1
    - Dst: PLy_get_sqlerrcode
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:412,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 11
    argNames:
    - exc
    - sqlerrcode
    - detail
    - hint
    - query
    - position
    - schema_name
    - table_name
    - column_name
    - datatype_name
    - constraint_name
    argTypes:
    - PyObject*
    - int*
    - char**
    - char**
    - char**
    - int*
    - char**
    - char**
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 388
    functionDepth: 4
    functionLinenumber: 388
    functionLinenumberEnd: 416
    functionName: PLy_get_spi_error_data
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - Py_XDECREF
    - PyArg_ParseTuple
    - PLy_get_sqlerrcode
    - PyObject_GetAttrString
    linkageType: ''
    returnType: void
    signature: "void PLy_get_spi_error_data(PyObject *exc, int *sqlerrcode, char **detail,\n\t\t\t\t\t
      \  char **hint, char **query, int *position,\n\t\t\t\t\t   char **schema_name,
      char **table_name,\n\t\t\t\t\t   char **column_name,\n\t\t\t\t\t   char **datatype_name,
      char **constraint_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_get_sqlerrcode
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:434,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:435,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:436,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:437,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:438,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:439,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:440,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 9
    argNames:
    - exc
    - sqlerrcode
    - detail
    - hint
    - schema_name
    - table_name
    - column_name
    - datatype_name
    - constraint_name
    argTypes:
    - PyObject*
    - int*
    - char**
    - char**
    - char**
    - char**
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 429
    functionDepth: 4
    functionLinenumber: 429
    functionLinenumberEnd: 442
    functionName: PLy_get_error_data
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - get_string_attr
    - PLy_get_sqlerrcode
    linkageType: ''
    returnType: void
    signature: "void PLy_get_error_data(PyObject *exc, int *sqlerrcode, char **detail,
      char **hint,\n\t\t\t\t   char **schema_name, char **table_name, char **column_name,\n\t\t\t\t
      \  char **datatype_name, char **constraint_name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:461,1
    - Dst: isspace
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:470,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:474,1
    - Dst: pnstrdup
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:484,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - src
    - lineno
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 485
    functionName: get_source_line
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - pnstrdup
    - pstrdup
    - isspace
    - strchr
    linkageType: ''
    returnType: char
    signature: 'char *

      get_source_line(const char *src, int lineno)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:495,1
    - Dst: vsnprintf
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:496,1
    - Dst: dgettext
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:496,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:497,1
    - Dst: PyErr_SetString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - exc
    - fmt
    argTypes:
    - PyObject*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 500
    functionName: PLy_exception_set
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 15
    functionsReached:
    - va_end
    - PyErr_SetString
    - dgettext
    - va_start
    - vsnprintf
    linkageType: ''
    returnType: void
    signature: void PLy_exception_set(PyObject *exc, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:511,1
    - Dst: vsnprintf
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:512,1
    - Dst: dngettext
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:513,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:515,1
    - Dst: PyErr_SetString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - exc
    - fmt_singular
    - fmt_plural
    - n
    argTypes:
    - PyObject*
    - char*
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 518
    functionName: PLy_exception_set_plural
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 2
    functionsReached:
    - va_end
    - PyErr_SetString
    - va_start
    - dngettext
    - vsnprintf
    linkageType: ''
    returnType: void
    signature: "void PLy_exception_set_plural(PyObject *exc,\n\t\t\t\t\t\t const char
      *fmt_singular, const char *fmt_plural,\n\t\t\t\t\t\t unsigned long n, ...)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Py_BuildValue
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:527,1
    - Dst: PyObject_CallObject
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:532,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:536,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:537,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:540,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:543,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:546,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:549,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:552,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:555,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:558,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:561,1
    - Dst: PyErr_SetObject
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:564,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:566,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:567,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:572,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:573,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:575,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 45
    argCount: 2
    argNames:
    - excclass
    - edata
    argTypes:
    - PyObject*
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 576
    functionName: PLy_exception_set_with_details
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - elog
    - Py_DECREF
    - Py_XDECREF
    - unpack_sql_state
    - PyObject_CallObject
    - PyErr_SetObject
    - Py_BuildValue
    - set_string_attr
    linkageType: ''
    returnType: void
    signature: void PLy_exception_set_with_details(PyObject *excclass, ErrorData *edata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:584,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:587,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:589,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - obj
    - attrname
    - str
    argTypes:
    - PyObject*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 579
    functionDepth: 3
    functionLinenumber: 579
    functionLinenumberEnd: 590
    functionName: get_string_attr
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - PLyUnicode_AsString
    - Py_XDECREF
    - PyObject_GetAttrString
    linkageType: ''
    returnType: void
    signature: void get_string_attr(PyObject *obj, char *attrname, char **str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:604,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:611,1
    - Dst: PyObject_SetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:614,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:615,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - obj
    - attrname
    - str
    argTypes:
    - PyObject*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 596
    functionDepth: 3
    functionLinenumber: 596
    functionLinenumberEnd: 618
    functionName: set_string_attr
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - PyObject_SetAttrString
    - PLyUnicode_FromString
    - Py_DECREF
    - Py_INCREF
    linkageType: ''
    returnType: bool
    signature: bool set_string_attr(PyObject *obj, char *attrname, char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:84,1
    - Dst: PLy_get_scratch_context
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:85,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:99,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:101,1
    - Dst: PLyDatumToOb*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:103,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - arg
    - val
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 108
    functionName: PLy_input_convert
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - PLy_current_execution_context
    - MemoryContextReset
    - PLy_get_scratch_context
    - MemoryContextSwitchTo
    - PLyDatumToOb*::func
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_input_convert(PLyDatumToOb *arg, Datum val)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - arg
    - val
    - isnull
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: PLy_output_convert
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 4
    functionsReached:
    - PLyObToDatum*::func
    linkageType: ''
    returnType: Datum
    signature: Datum PLy_output_convert(PLyObToDatum *arg, PyObject *val, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:137,1
    - Dst: PLy_get_scratch_context
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:138,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:144,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:146,1
    - Dst: PLyDict_FromTuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:148,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - arg
    - tuple
    - desc
    - include_generated
    argTypes:
    - PLyDatumToOb*
    - HeapTuple
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 153
    functionName: PLy_input_from_tuple
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 4
    functionsReached:
    - PLyDict_FromTuple
    - MemoryContextReset
    - PLy_get_scratch_context
    - MemoryContextSwitchTo
    - PLy_current_execution_context
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_input_from_tuple(PLyDatumToOb *arg, HeapTuple tuple, TupleDesc desc, bool
      include_generated)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:170,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:180,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:183,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:190,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:199,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 3
    argNames:
    - arg
    - desc
    - proc
    argTypes:
    - PLyDatumToOb*
    - TupleDesc
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 203
    functionName: PLy_input_setup_tuple
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 4
    functionsReached:
    - Assert
    - pfree
    - PLy_input_setup_func
    - TupleDescAttr
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: void PLy_input_setup_tuple(PLyDatumToOb *arg, TupleDesc desc, PLyProcedure
      *proc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:220,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:230,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:233,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:240,1
    - Dst: PLy_output_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:249,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 3
    argNames:
    - arg
    - desc
    - proc
    argTypes:
    - PLyObToDatum*
    - TupleDesc
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 253
    functionName: PLy_output_setup_tuple
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - PLy_output_setup_func
    - Assert
    - pfree
    - TupleDescAttr
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: void PLy_output_setup_tuple(PLyObToDatum *arg, TupleDesc desc, PLyProcedure
      *proc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:264,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:265,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:272,1
    - Dst: PLy_output_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - arg
    - desc
    - proc
    argTypes:
    - PLyObToDatum*
    - TupleDesc
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 286
    functionName: PLy_output_setup_record
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - Assert
    - PLy_output_setup_tuple
    - BlessTupleDesc
    linkageType: ''
    returnType: void
    signature: void PLy_output_setup_record(PLyObToDatum *arg, TupleDesc desc, PLyProcedure
      *proc)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:306,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:319,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:349,1
    - Dst: PLy_output_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:350,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:356,1
    - Dst: getBaseType
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:362,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:365,1
    - Dst: PLy_output_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:366,1
    - Dst: get_transform_tosql
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:370,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:375,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:403,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:404,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 57
    argCount: 5
    argNames:
    - arg
    - arg_mcxt
    - typeOid
    - typmod
    - proc
    argTypes:
    - PLyObToDatum*
    - MemoryContext
    - Oid
    - int32
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 408
    functionName: PLy_output_setup_func
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 5
    functionsReached:
    - get_transform_tosql
    - lookup_type_cache
    - PLy_output_setup_func
    - getTypeInputInfo
    - fmgr_info_cxt
    - check_stack_depth
    - getBaseType
    - IsTrueArrayType
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: "void PLy_output_setup_func(PLyObToDatum *arg, MemoryContext arg_mcxt,\n\t\t\t\t\t
      \ Oid typeOid, int32 typmod,\n\t\t\t\t\t  PLyProcedure *proc)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:429,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:442,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:468,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:474,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:480,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:481,1
    - Dst: get_transform_fromsql
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:485,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:490,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:537,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:538,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 73
    argCount: 5
    argNames:
    - arg
    - arg_mcxt
    - typeOid
    - typmod
    - proc
    argTypes:
    - PLyDatumToOb*
    - MemoryContext
    - Oid
    - int32
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 542
    functionName: PLy_input_setup_func
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 7
    functionsReached:
    - lookup_type_cache
    - fmgr_info_cxt
    - check_stack_depth
    - PLy_input_setup_func
    - get_transform_fromsql
    - IsTrueArrayType
    - getTypeOutputInfo
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: "void PLy_input_setup_func(PLyDatumToOb *arg, MemoryContext arg_mcxt,\n\t\t\t\t\t
      Oid typeOid, int32 typmod,\n\t\t\t\t\t PLyProcedure *proc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 555
    functionName: PLyBool_FromBool
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyBool_FromBool(PLyDatumToOb *arg, Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyFloat_FromDouble
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:560,1
    - Dst: DatumGetFloat4
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 561
    functionName: PLyFloat_FromFloat4
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - PyFloat_FromDouble
    - DatumGetFloat4
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyFloat_FromFloat4(PLyDatumToOb *arg, Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyFloat_FromDouble
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:566,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 567
    functionName: PLyFloat_FromFloat8
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - PyFloat_FromDouble
    - DatumGetFloat8
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyFloat_FromFloat8(PLyDatumToOb *arg, Datum d)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PyImport_ImportModule
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:581,1
    - Dst: PyErr_Clear
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:584,1
    - Dst: PyImport_ImportModule
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:585,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:588,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:590,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:592,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:595,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:595,1
    - Dst: PyObject_CallFunction
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:596,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:598,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 601
    functionName: PLyDecimal_FromNumeric
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - PyErr_Clear
    - PyImport_ImportModule
    - DirectFunctionCall1
    - PyObject_CallFunction
    - PyObject_GetAttrString
    - PLy_elog
    - DatumGetCString
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyDecimal_FromNumeric(PLyDatumToOb *arg, Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyLong_FromLong
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:606,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 607
    functionName: PLyLong_FromInt16
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - DatumGetInt16
    - PyLong_FromLong
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyLong_FromInt16(PLyDatumToOb *arg, Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyLong_FromLong
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:612,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 613
    functionName: PLyLong_FromInt32
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - PyLong_FromLong
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyLong_FromInt32(PLyDatumToOb *arg, Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyLong_FromLongLong
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:618,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 619
    functionName: PLyLong_FromInt64
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    - PyLong_FromLongLong
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyLong_FromInt64(PLyDatumToOb *arg, Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyLong_FromUnsignedLong
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:624,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 625
    functionName: PLyLong_FromOid
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - PyLong_FromUnsignedLong
    - DatumGetObjectId
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyLong_FromOid(PLyDatumToOb *arg, Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:630,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:631,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:632,1
    - Dst: PyBytes_FromStringAndSize
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 635
    functionName: PLyBytes_FromBytea
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - DatumGetByteaPP
    - PyBytes_FromStringAndSize
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyBytes_FromBytea(PLyDatumToOb *arg, Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:644,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:645,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 641
    functionDepth: 3
    functionLinenumber: 641
    functionLinenumberEnd: 649
    functionName: PLyUnicode_FromScalar
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - pfree
    - OutputFunctionCall
    - PLyUnicode_FromString
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyUnicode_FromScalar(PLyDatumToOb *arg, Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall1
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:659,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 661
    functionName: PLyObject_FromTransform
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - FunctionCall1
    - DatumGetPointer
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyObject_FromTransform(PLyDatumToOb *arg, Datum d)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:669,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:677,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:678,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:681,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:682,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:683,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:698,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:699,1
    - Dst: PLyList_FromArray_recurse
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 704
    functionName: PLyList_FromArray
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - ARR_NULLBITMAP
    - Assert
    - PyList_New
    - ARR_DATA_PTR
    - ARR_NDIM
    - DatumGetArrayTypeP
    - PLyList_FromArray_recurse
    - ARR_DIMS
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyList_FromArray(PLyDatumToOb *arg, Datum d)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:713,1
    - Dst: PLyList_FromArray_recurse
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:724,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:726,1
    - Dst: typalign_to_alignby
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:738,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:745,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:746,1
    - Dst: fetch_att
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:752,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:753,1
    - Dst: PLyDatumToOb*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:753,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:754,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:755,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 7
    argNames:
    - elm
    - dims
    - ndim
    - dim
    - dataptr_p
    - bitmap_p
    - bitmask_p
    argTypes:
    - PLyDatumToOb*
    - int*
    - int
    - int
    - char**
    - uint8**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 776
    functionName: PLyList_FromArray_recurse
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 2
    functionsReached:
    - att_addlength_pointer
    - PyList_SetItem
    - PyList_New
    - typalign_to_alignby
    - att_nominal_alignby
    - fetch_att
    - PLyDatumToOb*::func
    - PLyList_FromArray_recurse
    - Py_INCREF
    linkageType: ''
    returnType: PyObject
    signature: "PyObject *\nPLyList_FromArray_recurse(PLyDatumToOb *elm, int *dims,
      int ndim, int dim,\n\t\t\t\t\t\t  char **dataptr_p, uint8 **bitmap_p, int *bitmask_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:791,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:793,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:794,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:795,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:798,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:799,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:802,1
    - Dst: PLyDict_FromTuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:805,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 781
    functionDepth: 2
    functionLinenumber: 781
    functionLinenumberEnd: 810
    functionName: PLyDict_FromComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - PLyDict_FromTuple
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetTypeId
    - PLy_input_setup_tuple
    - lookup_rowtype_tupdesc
    - PLy_current_execution_context
    - DatumGetHeapTupleHeader
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyDict_FromComposite(PLyDatumToOb *arg, Datum d)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:821,1
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:823,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:827,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:834,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:853,1
    - Dst: heap_getattr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:854,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:857,1
    - Dst: PLyDatumToOb*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:860,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:861,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:862,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:866,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:868,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:869,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:871,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 4
    argNames:
    - arg
    - tuple
    - desc
    - include_generated
    argTypes:
    - PLyDatumToOb*
    - HeapTuple
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 815
    functionDepth: 1
    functionLinenumber: 815
    functionLinenumberEnd: 874
    functionName: PLyDict_FromTuple
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 2
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - heap_getattr
    - Py_DECREF
    - PyDict_SetItemString
    - Assert
    - PG_RE_THROW
    - PyDict_New
    - NameStr
    - TupleDescAttr
    - PLyDatumToOb*::func
    - PG_END_TRY
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLyDict_FromTuple(PLyDatumToOb *arg, HeapTuple tuple, TupleDesc desc, bool include_generated)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:892,1
    - Dst: PyObject_IsTrue
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:892,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 882
    functionDepth: 1
    functionLinenumber: 882
    functionLinenumberEnd: 893
    functionName: PLyObject_ToBool
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - BoolGetDatum
    - PyObject_IsTrue
    linkageType: ''
    returnType: Datum
    signature: "Datum PLyObject_ToBool(PLyObToDatum *arg, PyObject *plrv,\n\t\t\t\t
      bool *isnull, bool inarray)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyObject_Bytes
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:914,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:916,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:918,1
    - Dst: PyBytes_AsString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:920,1
    - Dst: PyBytes_Size
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:921,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:923,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:925,1
    - Dst: memcpy
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:926,1
    - Dst: VARDATA
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:926,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:927,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:929,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:931,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 900
    functionDepth: 1
    functionLinenumber: 900
    functionLinenumberEnd: 936
    functionName: PLyObject_ToBytea
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - PyBytes_Size
    - PG_TRY
    - PyBytes_AsString
    - memcpy
    - Py_XDECREF
    - PyObject_Bytes
    - PG_FINALLY
    - PointerGetDatum
    - SET_VARSIZE
    - palloc
    - VARDATA
    - PLy_elog
    - PG_END_TRY
    linkageType: ''
    returnType: Datum
    signature: "Datum PLyObject_ToBytea(PLyObToDatum *arg, PyObject *plrv,\n\t\t\t\t
      \ bool *isnull, bool inarray)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:962,1
    - Dst: PLyUnicode_ToComposite
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:963,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:973,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:975,1
    - Dst: PLy_output_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:979,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:980,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:989,1
    - Dst: PinTupleDesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:995,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1000,1
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1006,1
    - Dst: PLySequence_ToComposite
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1008,1
    - Dst: PyMapping_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1009,1
    - Dst: PLyMapping_ToComposite
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1011,1
    - Dst: PLyGenericObject_ToComposite
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1014,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1016,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 944
    functionDepth: 2
    functionLinenumber: 944
    functionLinenumberEnd: 1019
    functionName: PLyObject_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - PyUnicode_Check
    - PLy_output_setup_tuple
    - PinTupleDesc
    - ReleaseTupleDesc
    - PyMapping_Check
    - Assert
    - PLyMapping_ToComposite
    - PLyUnicode_ToComposite
    - lookup_rowtype_tupdesc
    - PySequence_Check
    - PLyGenericObject_ToComposite
    - PLy_current_execution_context
    - PLySequence_ToComposite
    linkageType: ''
    returnType: Datum
    signature: "Datum PLyObject_ToComposite(PLyObToDatum *arg, PyObject *plrv,\n\t\t\t\t\t
      \ bool *isnull, bool inarray)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1035,1
    - Dst: PLyUnicode_Bytes
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1036,1
    - Dst: PyFloat_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1037,1
    - Dst: PyObject_Repr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1040,1
    - Dst: PLyUnicode_Bytes
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1042,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1043,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1047,1
    - Dst: PLyUnicode_Bytes
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1049,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1050,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1053,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1055,1
    - Dst: PyBytes_AsString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1055,1
    - Dst: PyBytes_Size
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1056,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1057,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1059,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1062,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1063,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1064,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1066,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1067,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - plrv
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1027
    functionDepth: 2
    functionLinenumber: 1027
    functionLinenumberEnd: 1070
    functionName: PLyObject_AsString
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - elog
    - PyUnicode_Check
    - PyBytes_Size
    - PyBytes_AsString
    - Py_XDECREF
    - PyFloat_Check
    - errcode
    - PLyUnicode_Bytes
    - pstrdup
    - ereport
    - PyObject_Str
    - PyObject_Repr
    - pg_verifymbstr
    - strlen
    - errmsg
    - PLy_elog
    linkageType: ''
    returnType: char
    signature: 'char *

      PLyObject_AsString(PyObject *plrv)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PLyObject_AsString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1090,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1077
    functionDepth: 3
    functionLinenumber: 1077
    functionLinenumberEnd: 1096
    functionName: PLyObject_ToScalar
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - InputFunctionCall
    - PLyObject_AsString
    linkageType: ''
    returnType: Datum
    signature: "Datum PLyObject_ToScalar(PLyObToDatum *arg, PyObject *plrv,\n\t\t\t\t
      \  bool *isnull, bool inarray)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1109,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1113
      start: 1102
    functionDepth: 1
    functionLinenumber: 1102
    functionLinenumberEnd: 1113
    functionName: PLyObject_ToDomain
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - domain_check
    - PLyObToDatum*::func
    linkageType: ''
    returnType: Datum
    signature: "Datum PLyObject_ToDomain(PLyObToDatum *arg, PyObject *plrv,\n\t\t\t\t
      \  bool *isnull, bool inarray)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall1
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1129,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1119
    functionDepth: 1
    functionLinenumber: 1119
    functionLinenumberEnd: 1130
    functionName: PLyObject_ToTransform
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - FunctionCall1
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: "Datum PLyObject_ToTransform(PLyObToDatum *arg, PyObject *plrv,\n\t\t\t\t\t
      \ bool *isnull, bool inarray)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1158,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1159,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1160,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1161,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1164,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1165,1
    - Dst: PLySequence_ToArray_recurse
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1171,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1178,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1178,1
    - Dst: makeMdArrayResult
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1136
    functionDepth: 1
    functionLinenumber: 1136
    functionLinenumberEnd: 1185
    functionName: PLySequence_ToArray
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - PySequence_Length
    - construct_empty_array
    - makeMdArrayResult
    - errcode
    - ereport
    - PLySequence_ToArray_recurse
    - PySequence_Check
    - errmsg
    - memset
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: "Datum PLySequence_ToArray(PLyObToDatum *arg, PyObject *plrv,\n\t\t\t\t\tbool
      *isnull, bool inarray)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1202,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1206,1
    - Dst: PySequence_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1211,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1215,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1218,1
    - Dst: PyList_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1221,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1228,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1229,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1230,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1233,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1234,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1235,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1238,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1242,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1243,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1244,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1245,1
    - Dst: PLySequence_ToArray_recurse
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1248,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1259,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1260,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1261,1
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1264,1
    - Dst: initArrayResult
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1268,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1272,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1276,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1278,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1280,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 7
    argNames:
    - obj
    - astatep
    - ndims
    - dims
    - cur_depth
    - elm
    - elmbasetype
    argTypes:
    - PyObject*
    - ArrayBuildState**
    - int*
    - int*
    - int
    - PLyObToDatum*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1196
    functionDepth: 1
    functionLinenumber: 1196
    functionLinenumberEnd: 1282
    functionName: PLySequence_ToArray_recurse
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 2
    functionsReached:
    - PySequence_Length
    - PG_TRY
    - Py_XDECREF
    - errcode
    - initArrayResult
    - ereport
    - PySequence_GetItem
    - PyList_Check
    - PLySequence_ToArray_recurse
    - PG_FINALLY
    - errmsg
    - PLyObToDatum*::func
    - PLy_elog
    - PG_END_TRY
    - accumArrayResult
    linkageType: ''
    returnType: void
    signature: "void PLySequence_ToArray_recurse(PyObject *obj, ArrayBuildState **astatep,\n\t\t\t\t\t\t\tint
      *ndims, int *dims, int cur_depth,\n\t\t\t\t\t\t\tPLyObToDatum *elm, Oid elmbasetype)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1297,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1298,1
    - Dst: PLyObject_AsString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1300,1
    - Dst: isspace
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1332,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1335,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1336,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1337,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1338,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1339,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - arg
    - string
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1288
    functionDepth: 3
    functionLinenumber: 1288
    functionLinenumberEnd: 1346
    functionName: PLyUnicode_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - InputFunctionCall
    - errcode
    - ereport
    - isspace
    - PLyObject_AsString
    - errhint
    - errmsg
    - errdetail
    - OidIsValid
    - fmgr_info_cxt
    linkageType: ''
    returnType: Datum
    signature: Datum PLyUnicode_ToComposite(PLyObToDatum *arg, PyObject *string, bool
      inarray)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1358,1
    - Dst: PyMapping_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1358,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1361,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1362,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1368,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1377,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1380,1
    - Dst: PyMapping_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1382,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1384,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1385,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1386,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1387,1
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1390,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1392,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1395,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1397,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1398,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1400,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1403,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1404,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1405,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1407,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1408,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 3
    argNames:
    - arg
    - desc
    - mapping
    argTypes:
    - PLyObToDatum*
    - TupleDesc
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1349
    functionDepth: 1
    functionLinenumber: 1349
    functionLinenumberEnd: 1411
    functionName: PLyMapping_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - Py_XDECREF
    - errcode
    - heap_form_tuple
    - palloc_array
    - errhint
    - NameStr
    - heap_freetuple
    - Assert
    - pfree
    - PG_RE_THROW
    - errmsg
    - PG_END_TRY
    - ereport
    - heap_copy_tuple_as_datum
    - TupleDescAttr
    - PG_CATCH
    - PyMapping_Check
    - PyMapping_GetItemString
    - PLyObToDatum*::func
    linkageType: ''
    returnType: Datum
    signature: Datum PLyMapping_ToComposite(PLyObToDatum *arg, TupleDesc desc, PyObject
      *mapping)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1424,1
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1424,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1434,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1437,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1438,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1439,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1440,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1443,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1444,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1451,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1460,1
    - Dst: PySequence_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1462,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1466,1
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1468,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1470,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1473,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1475,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1476,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1478,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1483,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1484,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1485,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1487,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1488,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 3
    argNames:
    - arg
    - desc
    - sequence
    argTypes:
    - PLyObToDatum*
    - TupleDesc
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1414
    functionDepth: 1
    functionLinenumber: 1414
    functionLinenumberEnd: 1491
    functionName: PLySequence_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - Py_XDECREF
    - errcode
    - heap_form_tuple
    - palloc_array
    - PySequence_Check
    - heap_freetuple
    - Assert
    - pfree
    - PG_RE_THROW
    - errmsg
    - PG_END_TRY
    - PySequence_Length
    - ereport
    - heap_copy_tuple_as_datum
    - PySequence_GetItem
    - TupleDescCompactAttr
    - PLy_elog
    - PG_CATCH
    - PLyObToDatum*::func
    linkageType: ''
    returnType: Datum
    signature: Datum PLySequence_ToComposite(PLyObToDatum *arg, TupleDesc desc, PyObject
      *sequence)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1504,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1505,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1511,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1520,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1523,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1525,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1539,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1540,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1541,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1543,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1544,1
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1547,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1549,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1552,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1554,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1555,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1557,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1560,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1561,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1562,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1564,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1565,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 4
    argNames:
    - arg
    - desc
    - object
    - inarray
    argTypes:
    - PLyObToDatum*
    - TupleDesc
    - PyObject*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1494
    functionDepth: 1
    functionLinenumber: 1494
    functionLinenumberEnd: 1568
    functionName: PLyGenericObject_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - Py_XDECREF
    - errcode
    - heap_freetuple
    - pfree
    - heap_form_tuple
    - ereport
    - palloc_array
    - heap_copy_tuple_as_datum
    - PG_RE_THROW
    - errhint
    - NameStr
    - errmsg
    - PyObject_GetAttrString
    - PLyObToDatum*::func
    - TupleDescAttr
    - PG_END_TRY
    linkageType: ''
    returnType: Datum
    signature: Datum PLyGenericObject_ToComposite(PLyObToDatum *arg, TupleDesc desc,
      PyObject *object, bool inarray)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: plpgsql_ns_init
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void plpgsql_ns_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_ns_additem
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - label
    - label_type
    argTypes:
    - char*
    - PLpgSQL_label_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 59
    functionName: plpgsql_ns_push
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - plpgsql_ns_additem
    linkageType: ''
    returnType: void
    signature: void plpgsql_ns_push(const char *label, PLpgSQL_label_type label_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: plpgsql_ns_pop
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void plpgsql_ns_pop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 84
    functionName: plpgsql_ns_top
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PLpgSQL_nsitem
    signature: 'PLpgSQL_nsitem *

      plpgsql_ns_top(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:96,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:98,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:100,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:100,1
    - Dst: strcpy
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - itemtype
    - itemno
    - name
    argTypes:
    - PLpgSQL_nsitem_type
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 106
    functionName: plpgsql_ns_additem
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - Assert
    - strcpy
    - strlen
    - palloc
    linkageType: ''
    returnType: void
    signature: void plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const
      char *name)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:144,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:158,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:164,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 29
    argCount: 6
    argNames:
    - ns_cur
    - localmode
    - name1
    - name2
    - name3
    - names_used
    argTypes:
    - PLpgSQL_nsitem*
    - bool
    - char*
    - char*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 187
    functionName: plpgsql_ns_lookup
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: PLpgSQL_nsitem
    signature: "PLpgSQL_nsitem *\nplpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode,\n\t\t\t\t
      \ const char *name1, const char *name2, const char *name3,\n\t\t\t\t  int *names_used)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ns_cur
    - name
    argTypes:
    - PLpgSQL_nsitem*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 206
    functionName: plpgsql_ns_lookup_label
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: PLpgSQL_nsitem
    signature: 'PLpgSQL_nsitem *

      plpgsql_ns_lookup_label(PLpgSQL_nsitem *ns_cur, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ns_cur
    argTypes:
    - PLpgSQL_nsitem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 225
    functionName: plpgsql_ns_find_nearest_loop
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PLpgSQL_nsitem
    signature: 'PLpgSQL_nsitem *

      plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur)'
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:237,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:239,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:249,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:251,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:253,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:255,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:269,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 58
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 294
    functionName: plpgsql_stmt_typename
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - _
    linkageType: ''
    returnType: char
    signature: 'char *

      plpgsql_stmt_typename(PLpgSQL_stmt *stmt)'
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PLpgSQL_getdiag_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 333
    functionName: plpgsql_getdiag_kindname
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      plpgsql_getdiag_kindname(PLpgSQL_getdiag_kind kind)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - sw
    - ','
    - ew
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 362
    functionName: plpgsql_statement_tree_walker
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: plpgsql_statement_tree_walker(s, sw, ew, c)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:380,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:383,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:386,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:395,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:402,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:403,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:404,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:406,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:407,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:409,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:416,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:417,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:419,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:420,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:422,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:429,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:436,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:437,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:444,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:445,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:446,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:447,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:454,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:455,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:462,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:463,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:470,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:471,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:478,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:485,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:492,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:499,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:500,1
    - Dst: E_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:501,1
    - Dst: E_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:508,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:509,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:511,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:519,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:520,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:527,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:534,1
    - Dst: E_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:535,1
    - Dst: S_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:542,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:543,1
    - Dst: E_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:544,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:556,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:557,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:558,1
    - Dst: E_LIST_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:559,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:566,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:578,1
    - Dst: E_WALK
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:585,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:595,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 143
    argCount: 4
    argNames:
    - stmt
    - stmt_callback
    - expr_callback
    - context
    argTypes:
    - PLpgSQL_stmt*
    - plpgsql_stmt_walker_callback
    - plpgsql_expr_walker_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 598
    functionName: plpgsql_statement_tree_walker_impl
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - elog
    - S_LIST_WALK
    - E_LIST_WALK
    - foreach_ptr
    - E_WALK
    linkageType: ''
    returnType: void
    signature: "void plpgsql_statement_tree_walker_impl(PLpgSQL_stmt *stmt,\n\t\t\t\t\t\t\t\t
      \  plpgsql_stmt_walker_callback stmt_callback,\n\t\t\t\t\t\t\t\t   plpgsql_expr_walker_callback
      expr_callback,\n\t\t\t\t\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 370
    functionName: S_WALK
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_WALK(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ex
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 371
    functionName: E_WALK
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: E_WALK(ex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 372
    functionName: S_LIST_WALK
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_LIST_WALK(lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 373
    functionName: E_LIST_WALK
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: E_LIST_WALK(lst)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_statement_tree_walker
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:639,1
    - Dst: bms_copy
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:649,1
    - Dst: bms_add_member
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:651,1
    - Dst: plpgsql_statement_tree_walker
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:652,1
    - Dst: bms_free
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:654,1
    - Dst: plpgsql_statement_tree_walker
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:658,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - stmt
    - local_dnos
    argTypes:
    - PLpgSQL_stmt*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 659
    functionName: mark_stmt
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - bms_free
    - plpgsql_statement_tree_walker
    - bms_add_member
    - bms_copy
    linkageType: ''
    returnType: void
    signature: void mark_stmt(PLpgSQL_stmt *stmt, Bitmapset *local_dnos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:669,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - expr
    - local_dnos
    argTypes:
    - PLpgSQL_expr*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 670
    functionName: mark_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - bms_is_member
    linkageType: ''
    returnType: void
    signature: void mark_expr(PLpgSQL_expr *expr, Bitmapset *local_dnos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_add_member
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:680,1
    - Dst: mark_stmt
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:681,1
    - Dst: bms_free
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - func
    argTypes:
    - PLpgSQL_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 672
    functionDepth: 2
    functionLinenumber: 672
    functionLinenumberEnd: 683
    functionName: plpgsql_mark_local_assignment_targets
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - bms_free
    - bms_add_member
    - mark_stmt
    linkageType: ''
    returnType: void
    signature: void plpgsql_mark_local_assignment_targets(PLpgSQL_function *func)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_statement_tree_walker
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stmt
    - context
    argTypes:
    - PLpgSQL_stmt*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 703
    functionName: free_stmt
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - plpgsql_statement_tree_walker
    linkageType: ''
    returnType: void
    signature: void free_stmt(PLpgSQL_stmt *stmt, void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SPI_freeplan
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:710,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - expr
    - context
    argTypes:
    - PLpgSQL_expr*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 713
    functionName: free_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - SPI_freeplan
    linkageType: ''
    returnType: void
    signature: void free_expr(PLpgSQL_expr *expr, void *context)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:721,1
    - Dst: free_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:735,1
    - Dst: free_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:736,1
    - Dst: free_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:745,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:751,1
    - Dst: free_stmt
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:757,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:766,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - func
    argTypes:
    - PLpgSQL_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 768
    functionName: plpgsql_free_function_memory
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - free_expr
    - free_stmt
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void plpgsql_free_function_memory(PLpgSQL_function *func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_free_function_memory
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cfunc
    argTypes:
    - CachedFunction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 771
    functionDepth: 3
    functionLinenumber: 771
    functionLinenumberEnd: 775
    functionName: plpgsql_delete_callback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - plpgsql_free_function_memory
    linkageType: ''
    returnType: void
    signature: void plpgsql_delete_callback(CachedFunction *cfunc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:825,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 826
    functionName: dump_ind
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_ind(void)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:831,1
    - Dst: dump_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:835,1
    - Dst: dump_assign
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:838,1
    - Dst: dump_if
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:841,1
    - Dst: dump_case
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:844,1
    - Dst: dump_loop
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:847,1
    - Dst: dump_while
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:850,1
    - Dst: dump_fori
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:853,1
    - Dst: dump_fors
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:856,1
    - Dst: dump_forc
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:859,1
    - Dst: dump_foreach_a
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:862,1
    - Dst: dump_exit
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:865,1
    - Dst: dump_return
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:868,1
    - Dst: dump_return_next
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:871,1
    - Dst: dump_return_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:874,1
    - Dst: dump_raise
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:877,1
    - Dst: dump_assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:880,1
    - Dst: dump_execsql
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:883,1
    - Dst: dump_dynexecute
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:886,1
    - Dst: dump_dynfors
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:889,1
    - Dst: dump_getdiag
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:892,1
    - Dst: dump_open
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:895,1
    - Dst: dump_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:898,1
    - Dst: dump_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:901,1
    - Dst: dump_perform
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:904,1
    - Dst: dump_call
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:907,1
    - Dst: dump_commit
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:910,1
    - Dst: dump_rollback
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:913,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:916,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 88
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 919
    functionName: dump_stmt
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - dump_execsql
    - dump_getdiag
    - dump_close
    - printf
    - dump_assert
    - dump_while
    - elog
    - dump_commit
    - dump_return
    - dump_dynfors
    - dump_fetch
    - dump_fori
    - dump_assign
    - dump_raise
    - dump_exit
    - dump_rollback
    - dump_if
    - dump_dynexecute
    - dump_foreach_a
    - dump_loop
    - dump_case
    - dump_fors
    - dump_forc
    - dump_perform
    - dump_block
    - dump_open
    - dump_return_query
    - dump_call
    - dump_return_next
    linkageType: ''
    returnType: void
    signature: void dump_stmt(PLpgSQL_stmt *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:927,1
    - Dst: dump_stmt
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:928,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stmts
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 921
    functionDepth: 2
    functionLinenumber: 921
    functionLinenumberEnd: 930
    functionName: dump_stmts
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - dump_stmt
    - lfirst
    - foreach
    linkageType: ''
    returnType: void
    signature: void dump_stmts(List *stmts)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:942,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:943,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:945,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:951,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:953,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:956,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:957,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:961,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:962,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:964,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:965,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:969,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:970,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - block
    argTypes:
    - PLpgSQL_stmt_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 932
    functionDepth: 3
    functionLinenumber: 932
    functionLinenumberEnd: 971
    functionName: dump_block
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_ind
    - foreach
    - dump_stmts
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_block(PLpgSQL_stmt_block *block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:976,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:977,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:978,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_assign*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 980
    functionName: dump_assign
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_assign(PLpgSQL_stmt_assign *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:987,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:988,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:989,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:990,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:991,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:992,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:994,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:996,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:997,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:998,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:999,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1000,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1004,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1005,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1006,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1008,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1009,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 982
    functionDepth: 3
    functionLinenumber: 982
    functionLinenumberEnd: 1010
    functionName: dump_if
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - foreach
    - dump_stmts
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_if(PLpgSQL_stmt_if *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1017,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1018,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1020,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1021,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1023,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1025,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1027,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1028,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1029,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1030,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1031,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1032,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1034,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1039,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1040,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1042,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1046,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1047,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_case*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1012
    functionDepth: 3
    functionLinenumber: 1012
    functionLinenumberEnd: 1048
    functionName: dump_case
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - foreach
    - dump_stmts
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_case(PLpgSQL_stmt_case *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1053,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1054,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1056,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1058,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1050
    functionDepth: 3
    functionLinenumber: 1050
    functionLinenumberEnd: 1060
    functionName: dump_loop
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_ind
    - printf
    - dump_stmts
    linkageType: ''
    returnType: void
    signature: void dump_loop(PLpgSQL_stmt_loop *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1065,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1066,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1067,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1068,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1070,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1072,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_while*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1062
    functionDepth: 3
    functionLinenumber: 1062
    functionLinenumberEnd: 1074
    functionName: dump_while
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    - dump_stmts
    linkageType: ''
    returnType: void
    signature: void dump_while(PLpgSQL_stmt_while *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1079,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1080,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1083,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1084,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1085,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1086,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1087,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1088,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1089,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1090,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1093,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1094,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1095,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1096,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1100,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1102,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_fori*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1076
    functionDepth: 3
    functionLinenumber: 1076
    functionLinenumberEnd: 1104
    functionName: dump_fori
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    - dump_stmts
    linkageType: ''
    returnType: void
    signature: void dump_fori(PLpgSQL_stmt_fori *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1109,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1110,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1111,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1112,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1114,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1116,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_fors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1106
    functionDepth: 3
    functionLinenumber: 1106
    functionLinenumberEnd: 1118
    functionName: dump_fors
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    - dump_stmts
    linkageType: ''
    returnType: void
    signature: void dump_fors(PLpgSQL_stmt_fors *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1123,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1124,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1125,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1130,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1131,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1132,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1133,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1137,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1139,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_forc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1120
    functionDepth: 3
    functionLinenumber: 1120
    functionLinenumberEnd: 1141
    functionName: dump_forc
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    - dump_stmts
    linkageType: ''
    returnType: void
    signature: void dump_forc(PLpgSQL_stmt_forc *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1146,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1147,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1149,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1150,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1151,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1152,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1154,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1156,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_foreach_a*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1143
    functionDepth: 3
    functionLinenumber: 1143
    functionLinenumberEnd: 1158
    functionName: dump_foreach_a
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    - dump_stmts
    linkageType: ''
    returnType: void
    signature: void dump_foreach_a(PLpgSQL_stmt_foreach_a *stmt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1163,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1164,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1169,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1170,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1171,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1172,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1176,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1177,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1178,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1179,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1183,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1184,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1185,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1186,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1194,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1195,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1198,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1200,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1201,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1202,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1202,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1203,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_open*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1160
    functionDepth: 1
    functionLinenumber: 1160
    functionLinenumberEnd: 1209
    functionName: dump_open
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - foreach
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_open(PLpgSQL_stmt_open *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1214,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1218,1
    - Dst: dump_cursor_direction
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1219,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1224,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1225,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1232,1
    - Dst: dump_cursor_direction
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1235
    functionName: dump_fetch
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_cursor_direction
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_fetch(PLpgSQL_stmt_fetch *stmt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1241,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1245,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1248,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1251,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1254,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1257,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1262,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1263,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1266,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1237
    functionDepth: 1
    functionLinenumber: 1237
    functionLinenumberEnd: 1269
    functionName: dump_cursor_direction
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_cursor_direction(PLpgSQL_stmt_fetch *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1274,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_close*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1271
    functionDepth: 1
    functionLinenumber: 1271
    functionLinenumberEnd: 1276
    functionName: dump_close
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_close(PLpgSQL_stmt_close *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1281,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1282,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1283,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_perform*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1278
    functionDepth: 1
    functionLinenumber: 1278
    functionLinenumberEnd: 1285
    functionName: dump_perform
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_perform(PLpgSQL_stmt_perform *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1290,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1291,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1292,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_call*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1287
    functionDepth: 1
    functionLinenumber: 1287
    functionLinenumberEnd: 1294
    functionName: dump_call
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_call(PLpgSQL_stmt_call *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1299,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1301,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_commit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1296
    functionDepth: 1
    functionLinenumber: 1296
    functionLinenumberEnd: 1304
    functionName: dump_commit
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_commit(PLpgSQL_stmt_commit *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1309,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1311,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_rollback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1306
    functionDepth: 1
    functionLinenumber: 1306
    functionLinenumberEnd: 1314
    functionName: dump_rollback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_rollback(PLpgSQL_stmt_rollback *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1319,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1320,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1322,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1325,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1326,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1328,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_exit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1316
    functionDepth: 1
    functionLinenumber: 1316
    functionLinenumberEnd: 1329
    functionName: dump_exit
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_exit(PLpgSQL_stmt_exit *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1334,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1335,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1337,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1339,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1341,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_return*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1331
    functionDepth: 1
    functionLinenumber: 1331
    functionLinenumberEnd: 1343
    functionName: dump_return
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_return(PLpgSQL_stmt_return *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1348,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1349,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1351,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1353,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1355,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_return_next*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1345
    functionDepth: 1
    functionLinenumber: 1345
    functionLinenumberEnd: 1357
    functionName: dump_return_next
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_return_next(PLpgSQL_stmt_return_next *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1362,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1365,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1366,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1367,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1371,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1372,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1373,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1380,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1381,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1384,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1386,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1387,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1388,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1388,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_return_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1359
    functionDepth: 1
    functionLinenumber: 1359
    functionLinenumberEnd: 1394
    functionName: dump_return_query
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - foreach
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_return_query(PLpgSQL_stmt_return_query *stmt)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1402,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1403,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1405,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1407,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1408,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1410,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1412,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1413,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1414,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1414,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1415,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1419,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1420,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1422,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1424,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1426,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1430,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1433,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1436,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1439,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1442,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1445,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1448,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1451,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1454,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1457,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1458,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_raise*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1396
    functionDepth: 1
    functionLinenumber: 1396
    functionLinenumberEnd: 1463
    functionName: dump_raise
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - foreach
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_raise(PLpgSQL_stmt_raise *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1468,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1469,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1470,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1471,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1476,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1477,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1478,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_assert*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1465
    functionDepth: 1
    functionLinenumber: 1465
    functionLinenumberEnd: 1482
    functionName: dump_assert
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_assert(PLpgSQL_stmt_assert *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1487,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1488,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1489,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1490,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1495,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1496,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_execsql*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1484
    functionDepth: 1
    functionLinenumber: 1484
    functionLinenumberEnd: 1501
    functionName: dump_execsql
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_execsql(PLpgSQL_stmt_execsql *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1506,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1507,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1508,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1509,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1514,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1515,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1524,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1525,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1528,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1530,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1531,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1532,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1532,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_dynexecute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1503
    functionDepth: 1
    functionLinenumber: 1503
    functionLinenumberEnd: 1538
    functionName: dump_dynexecute
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - foreach
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_dynexecute(PLpgSQL_stmt_dynexecute *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1543,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1544,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1545,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1546,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1553,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1554,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1557,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1559,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1560,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1561,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1561,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1562,1
    - Dst: dump_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1566,1
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1567,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_dynfors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1540
    functionDepth: 3
    functionLinenumber: 1540
    functionLinenumberEnd: 1569
    functionName: dump_dynfors
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_expr
    - dump_ind
    - foreach
    - dump_stmts
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_dynfors(PLpgSQL_stmt_dynfors *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_ind
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1576,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1577,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1578,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1580,1
    - Dst: list_head
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1582,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1583,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1585,1
    - Dst: plpgsql_getdiag_kindname
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1586,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - PLpgSQL_stmt_getdiag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1589
      start: 1571
    functionDepth: 1
    functionLinenumber: 1571
    functionLinenumberEnd: 1589
    functionName: dump_getdiag
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 1
    functionsReached:
    - dump_ind
    - foreach
    - plpgsql_getdiag_kindname
    - lfirst
    - list_head
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_getdiag(PLpgSQL_stmt_getdiag *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1594,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - expr
    argTypes:
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1591
    functionDepth: 0
    functionLinenumber: 1591
    functionLinenumberEnd: 1598
    functionName: dump_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 21
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_expr(PLpgSQL_expr *expr)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1606,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1609,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1614,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1622,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1627,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1629,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1632,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1633,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1634,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1639,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1641,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1642,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1643,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1646,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1654,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1657,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1660,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1664,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1668,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1670,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1673,1
    - Dst: dump_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1674,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1675,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1679,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1684,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1687,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1690,1
    - Dst: dump_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1691,1
    - Dst: printf
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1692,1
    - Dst: fflush
      Src: /src/postgres/src/pl/plpgsql/src/pl_funcs.c:1693,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 63
    argCount: 1
    argNames:
    - func
    argTypes:
    - PLpgSQL_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1600
    functionDepth: 4
    functionLinenumber: 1600
    functionLinenumberEnd: 1694
    functionName: plpgsql_dumptree
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_funcs.c
    functionUses: 0
    functionsReached:
    - dump_expr
    - dump_block
    - printf
    - fflush
    linkageType: ''
    returnType: void
    signature: void plpgsql_dumptree(PLpgSQL_function *func)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:71,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:73,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:78,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:81,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:84,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:85,1
    - Dst: list_free
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:86,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:92,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:94,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:96,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:98,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:100,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:100,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:102,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:103,1
    - Dst: list_free
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:104,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:109,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:110,1
    - Dst: list_free
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:111,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:116,1
    - Dst: list_free
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:117,1
    - Dst: guc_malloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:120,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 3
    argNames:
    - newvalue
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 127
    functionName: plpgsql_extra_checks_check_hook
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_handler.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - list_free
    - pfree
    - pstrdup
    - guc_malloc
    - lfirst
    - SplitIdentifierString
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool plpgsql_extra_checks_check_hook(char **newvalue, void **extra,
      GucSource source)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:92,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:94,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:96,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:98,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:100,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:100,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:102,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:103,1
    - Dst: list_free
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:104,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:109,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:110,1
    - Dst: list_free
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:111,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 114
    functionName: foreach
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_handler.c
    functionUses: 11
    functionsReached:
    - pg_strcasecmp
    - list_free
    - pfree
    - lfirst
    - GUC_check_errdetail
    linkageType: ''
    returnType: void
    signature: void foreach(l, elemlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newvalue
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: plpgsql_extra_warnings_assign_hook
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_handler.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void plpgsql_extra_warnings_assign_hook(const char *newvalue, void
      *extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newvalue
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: plpgsql_extra_errors_assign_hook
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_handler.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void plpgsql_extra_errors_assign_hook(const char *newvalue, void *extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_bindtextdomain
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:156,1
    - Dst: DefineCustomEnumVariable
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:158,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:159,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:167,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:168,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:175,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:176,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:183,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:184,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:193,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:194,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:203,1
    - Dst: RegisterXactCallback
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:205,1
    - Dst: RegisterSubXactCallback
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:206,1
    - Dst: find_rendezvous_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 212
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_handler.c
    functionUses: 0
    functionsReached:
    - DefineCustomEnumVariable
    - DefineCustomStringVariable
    - RegisterSubXactCallback
    - DefineCustomBoolVariable
    - MarkGUCPrefixReserved
    - gettext_noop
    - find_rendezvous_variable
    - pg_bindtextdomain
    - RegisterXactCallback
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:234,1
    - Dst: castNode
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:235,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:240,1
    - Dst: plpgsql_compile
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:243,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:260,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:262,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:268,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:269,1
    - Dst: plpgsql_exec_trigger
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:269,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:271,1
    - Dst: plpgsql_exec_event_trigger
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:273,1
    - Dst: plpgsql_exec_function
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:278,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:283,1
    - Dst: ReleaseAllPlanCacheRefsInOwner
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:292,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:293,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:296,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:301,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:302,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:302,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 305
    functionName: plpgsql_call_handler
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_handler.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - CALLED_AS_EVENT_TRIGGER
    - ReleaseAllPlanCacheRefsInOwner
    - elog
    - plpgsql_exec_function
    - PG_FINALLY
    - SPI_connect_ext
    - PointerGetDatum
    - PG_END_TRY
    - SPI_result_code_string
    - IsA
    - plpgsql_compile
    - ResourceOwnerCreate
    - plpgsql_exec_event_trigger
    - SPI_finish
    - castNode
    - ResourceOwnerDelete
    - plpgsql_exec_trigger
    - CALLED_AS_TRIGGER
    linkageType: ''
    returnType: Datum
    signature: Datum plpgsql_call_handler(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:318,1
    - Dst: castNode
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:319,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:319,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:319,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:330,1
    - Dst: plpgsql_compile_inline
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:333,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:343,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:343,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:344,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:361,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:363,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:366,1
    - Dst: plpgsql_exec_function
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:368,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:374,1
    - Dst: plpgsql_subxact_cb
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:390,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:391,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:395,1
    - Dst: ReleaseAllPlanCacheRefsInOwner
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:396,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:397,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:401,1
    - Dst: plpgsql_free_function_memory
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:404,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:407,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:409,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:412,1
    - Dst: ReleaseAllPlanCacheRefsInOwner
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:413,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:418,1
    - Dst: plpgsql_free_function_memory
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:421,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:426,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:427,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 315
    functionDepth: 3
    functionLinenumber: 315
    functionLinenumberEnd: 430
    functionName: plpgsql_inline_handler
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_handler.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_TRY
    - FreeExecutorState
    - SizeForFunctionCallInfo
    - ReleaseAllPlanCacheRefsInOwner
    - elog
    - plpgsql_exec_function
    - Assert
    - PG_RE_THROW
    - SPI_connect_ext
    - PG_END_TRY
    - SPI_result_code_string
    - plpgsql_free_function_memory
    - MemSet
    - GetCurrentSubTransactionId
    - ResourceOwnerCreate
    - PG_CATCH
    - SPI_finish
    - CreateExecutorState
    - plpgsql_subxact_cb
    - castNode
    - LOCAL_FCINFO
    - ResourceOwnerDelete
    - plpgsql_compile_inline
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum plpgsql_inline_handler(PG_FUNCTION_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:444,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:456,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:457,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:460,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:460,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:461,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:462,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:463,1
    - Dst: get_typtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:465,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:477,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:478,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:479,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:480,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:481,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:486,1
    - Dst: get_typtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:490,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:493,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:494,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:495,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:496,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:497,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:504,1
    - Dst: SPI_connect
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:513,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:519,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:519,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:520,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:526,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:532,1
    - Dst: plpgsql_compile
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:538,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:543,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:544,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:544,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:547,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpgsql/src/pl_handler.c:549,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 550
    functionName: plpgsql_validator
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_handler.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - get_typtype
    - errcode
    - SizeForFunctionCallInfo
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - errmsg
    - ObjectIdGetDatum
    - get_func_arg_info
    - SPI_result_code_string
    - ereport
    - plpgsql_compile
    - MemSet
    - CheckFunctionValidatorAccess
    - GETSTRUCT
    - SPI_finish
    - IsPolymorphicType
    - format_type_be
    - LOCAL_FCINFO
    - PG_GETARG_OID
    - SPI_connect
    linkageType: ''
    returnType: Datum
    signature: Datum plpgsql_validator(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cached_function_compile
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fcinfo
    - forValidator
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 136
    functionName: plpgsql_compile
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - cached_function_compile
    linkageType: ''
    returnType: PLpgSQL_function
    signature: 'PLpgSQL_function *

      plpgsql_compile(FunctionCallInfo fcinfo, bool forValidator)'
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:174,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:175,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:176,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:203,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:204,1
    - Dst: plpgsql_scanner_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:205,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:207,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:207,1
    - Dst: format_procedure
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:228,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:239,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:242,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:244,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:245,1
    - Dst: plpgsql_ns_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:274,1
    - Dst: plpgsql_ns_push
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:275,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:275,1
    - Dst: plpgsql_start_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:277,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:291,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:293,1
    - Dst: cfunc_resolve_polymorphic_argtypes
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:296,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:301,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:302,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:304,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:319,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:322,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:331,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:332,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:333,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:334,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:340,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:351,1
    - Dst: add_parameter_name
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:366,1
    - Dst: add_parameter_name
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:370,1
    - Dst: build_row_from_vars
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:383,1
    - Dst: plpgsql_adddatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:386,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:403,1
    - Dst: get_fn_expr_rettype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:421,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:422,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:423,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:424,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:425,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:440,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:440,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:441,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:442,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:443,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:453,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:454,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:455,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:457,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:458,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:459,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:460,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:463,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:473,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:476,1
    - Dst: build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:477,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:484,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:497,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:498,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:499,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:500,1
    - Dst: plpgsql_build_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:503,1
    - Dst: plpgsql_build_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:507,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:511,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:512,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:517,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:522,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:523,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:528,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:533,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:534,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:539,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:544,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:545,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:550,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:555,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:556,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:561,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:566,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:567,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:572,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:577,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:578,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:583,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:588,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:589,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:594,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:599,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:600,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:605,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:610,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:611,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:616,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:631,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:632,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:633,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:636,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:637,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:642,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:647,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:648,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:653,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:660,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:671,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:672,1
    - Dst: plpgsql_yyparse
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:682,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:684,1
    - Dst: plpgsql_scanner_finish
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:686,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:687,1
    - Dst: add_dummy_return
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:697,1
    - Dst: plpgsql_finish_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:706,1
    - Dst: plpgsql_mark_local_assignment_targets
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:709,1
    - Dst: plpgsql_dumptree
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:713,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:718,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:728,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 209
    argCount: 5
    argNames:
    - fcinfo
    - procTup
    - hashkey
    - cfunc
    - forValidator
    argTypes:
    - FunctionCallInfo
    - HeapTuple
    - CachedFunctionHashKey*
    - CachedFunction*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 166
    functionDepth: 5
    functionLinenumber: 166
    functionLinenumberEnd: 730
    functionName: plpgsql_compile_callback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errcode
    - plpgsql_adddatum
    - plpgsql_mark_local_assignment_targets
    - pstrdup
    - plpgsql_scanner_init
    - palloc_array
    - plpgsql_build_variable
    - errhint
    - format_procedure
    - NameStr
    - CALLED_AS_EVENT_TRIGGER
    - plpgsql_start_datums
    - MemoryContextSetIdentifier
    - build_datatype
    - plpgsql_build_record
    - SearchSysCache1
    - elog
    - plpgsql_yyparse
    - Assert
    - HeapTupleIsValid
    - pfree
    - plpgsql_dumptree
    - plpgsql_build_datatype
    - add_dummy_return
    - ReleaseSysCache
    - errmsg
    - plpgsql_scanner_finish
    - OidIsValid
    - TextDatumGetCString
    - add_parameter_name
    - ObjectIdGetDatum
    - MemoryContextSetParent
    - get_func_arg_info
    - ereport
    - build_row_from_vars
    - plpgsql_ns_push
    - GETSTRUCT
    - AllocSetContextCreate
    - SysCacheGetAttrNotNull
    - get_fn_expr_rettype
    - type_is_rowtype
    - format_type_be
    - IsPolymorphicType
    - plpgsql_finish_datums
    - cfunc_resolve_polymorphic_argtypes
    - MemoryContextSwitchTo
    - plpgsql_ns_init
    - CALLED_AS_TRIGGER
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void plpgsql_compile_callback(FunctionCallInfo fcinfo,\n\t\t\t\t\t\t
      HeapTuple procTup,\n\t\t\t\t\t\t const CachedFunctionHashKey *hashkey,\n\t\t\t\t\t\t
      CachedFunction *cfunc,\n\t\t\t\t\t\t bool forValidator)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_scanner_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:757,1
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:775,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:783,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:786,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:788,1
    - Dst: plpgsql_ns_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:807,1
    - Dst: plpgsql_ns_push
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:808,1
    - Dst: plpgsql_start_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:810,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:831,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:832,1
    - Dst: plpgsql_yyparse
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:842,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:844,1
    - Dst: plpgsql_scanner_finish
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:846,1
    - Dst: add_dummy_return
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:853,1
    - Dst: plpgsql_finish_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:860,1
    - Dst: plpgsql_mark_local_assignment_targets
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:863,1
    - Dst: plpgsql_dumptree
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:867,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:877,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 58
    argCount: 1
    argNames:
    - proc_source
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 742
    functionDepth: 5
    functionLinenumber: 742
    functionLinenumberEnd: 880
    functionName: plpgsql_compile_inline
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_object
    - plpgsql_finish_datums
    - plpgsql_yyparse
    - plpgsql_mark_local_assignment_targets
    - pstrdup
    - plpgsql_scanner_init
    - plpgsql_dumptree
    - MemoryContextSwitchTo
    - plpgsql_build_variable
    - plpgsql_build_datatype
    - plpgsql_ns_push
    - add_dummy_return
    - plpgsql_ns_init
    - plpgsql_start_datums
    - plpgsql_scanner_finish
    - AllocSetContextCreate
    linkageType: ''
    returnType: PLpgSQL_function
    signature: 'PLpgSQL_function *

      plpgsql_compile_inline(char *proc_source)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: function_parse_error_transpose
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:900,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:910,1
    - Dst: plpgsql_latest_lineno
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:911,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 888
    functionDepth: 1
    functionLinenumber: 888
    functionLinenumberEnd: 912
    functionName: plpgsql_compile_error_callback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errcontext
    - function_parse_error_transpose
    - plpgsql_latest_lineno
    linkageType: ''
    returnType: void
    signature: void plpgsql_compile_error_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:928,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:928,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:931,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:932,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:933,1
    - Dst: plpgsql_ns_additem
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - itemtype
    - itemno
    - name
    argTypes:
    - PLpgSQL_nsitem_type
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 918
    functionDepth: 2
    functionLinenumber: 918
    functionLinenumberEnd: 938
    functionName: add_parameter_name
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 1
    functionsReached:
    - plpgsql_ns_lookup
    - plpgsql_ns_additem
    - errcode
    - ereport
    - errmsg
    - plpgsql_ns_top
    linkageType: ''
    returnType: void
    signature: void add_parameter_name(PLpgSQL_nsitem_type itemtype, int itemno, const
      char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object::palloc0_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:957,1
    - Dst: list_make1
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:960,1
    - Dst: llast
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:965,1
    - Dst: palloc0_object::palloc0_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:969,1
    - Dst: lappend
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:975,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - function
    argTypes:
    - PLpgSQL_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 977
    functionName: add_dummy_return
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - palloc0_object::palloc0_object
    - list_make1
    - llast
    - lappend
    linkageType: ''
    returnType: void
    signature: void add_dummy_return(PLpgSQL_function *function)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pstate
    - expr
    argTypes:
    - struct ParseState*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 996
    functionName: plpgsql_parser_setup
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void plpgsql_parser_setup(struct ParseState *pstate, PLpgSQL_expr *expr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resolve_column_ref
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1007,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - pstate
    - cref
    argTypes:
    - ParseState*
    - ColumnRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 1001
    functionDepth: 1
    functionLinenumber: 1001
    functionLinenumberEnd: 1010
    functionName: plpgsql_pre_column_ref
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - resolve_column_ref
    linkageType: ''
    returnType: Node
    signature: 'Node *

      plpgsql_pre_column_ref(ParseState *pstate, ColumnRef *cref)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: resolve_column_ref
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1037,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1045,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1046,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1047,1
    - Dst: NameListToString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1048,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1049,1
    - Dst: parser_errposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1050,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - pstate
    - cref
    - var
    argTypes:
    - ParseState*
    - ColumnRef*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1015
    functionDepth: 1
    functionLinenumber: 1015
    functionLinenumberEnd: 1054
    functionName: plpgsql_post_column_ref
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errcode
    - resolve_column_ref
    - ereport
    - NameListToString
    - errmsg
    - errdetail
    - parser_errposition
    linkageType: ''
    returnType: Node
    signature: 'Node *

      plpgsql_post_column_ref(ParseState *pstate, ColumnRef *cref, Node *var)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1066,1
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1068,1
    - Dst: make_datum_param
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1075,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pstate
    - pref
    argTypes:
    - ParseState*
    - ParamRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1059
    functionDepth: 1
    functionLinenumber: 1059
    functionLinenumberEnd: 1076
    functionName: plpgsql_param_ref
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - plpgsql_ns_lookup
    - make_datum_param
    - snprintf
    linkageType: ''
    returnType: Node
    signature: 'Node *

      plpgsql_param_ref(ParseState *pstate, ParamRef *pref)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1118,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1122,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1124,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1131,1
    - Dst: lsecond
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1132,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1134,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1137,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1145,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1154,1
    - Dst: lsecond
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1155,1
    - Dst: lthird
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1156,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1158,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1159,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1162,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1170,1
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1180,1
    - Dst: make_datum_param
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1191,1
    - Dst: make_datum_param
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1195,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1208,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1210,1
    - Dst: make_datum_param
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1212,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1229,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1230,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1231,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1233,1
    - Dst: parser_errposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1234,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1238,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 67
    argCount: 4
    argNames:
    - pstate
    - expr
    - cref
    - error_if_no_field
    argTypes:
    - ParseState*
    - PLpgSQL_expr*
    - ColumnRef*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1086
    functionDepth: 1
    functionLinenumber: 1086
    functionLinenumberEnd: 1243
    functionName: resolve_column_ref
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - elog
    - plpgsql_ns_lookup
    - strcmp
    - errcode
    - lthird
    - linitial
    - Assert
    - ereport
    - lsecond
    - errhint
    - errmsg
    - list_length
    - strVal
    - IsA
    - make_datum_param
    - parser_errposition
    linkageType: ''
    returnType: Node
    signature: "Node *\nresolve_column_ref(ParseState *pstate, PLpgSQL_expr *expr,\n\t\t\t\t
      \  ColumnRef *cref, bool error_if_no_field)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1259,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1265,1
    - Dst: bms_add_member
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1266,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1267,1
    - Dst: makeNode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1269,1
    - Dst: plpgsql_exec_get_datum_type_info
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - expr
    - dno
    - location
    argTypes:
    - PLpgSQL_expr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1249
    functionDepth: 1
    functionLinenumber: 1249
    functionLinenumberEnd: 1280
    functionName: make_datum_param
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - Assert
    - makeNode
    - MemoryContextSwitchTo
    - plpgsql_exec_get_datum_type_info
    - bms_add_member
    linkageType: ''
    returnType: Node
    signature: 'Node *

      make_datum_param(PLpgSQL_expr *expr, int dno, int location)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1318,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1318,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1336,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 5
    argNames:
    - word1
    - yytxt
    - lookup
    - wdatum
    - word
    argTypes:
    - char*
    - char*
    - bool
    - PLwdatum*
    - PLword*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1302
    functionDepth: 1
    functionLinenumber: 1302
    functionLinenumberEnd: 1349
    functionName: plpgsql_parse_word
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - elog
    - plpgsql_ns_lookup
    - plpgsql_ns_top
    linkageType: ''
    returnType: bool
    signature: "bool plpgsql_parse_word(char *word1, const char *yytxt, bool lookup,\n\t\t\t\t
      \  PLwdatum *wdatum, PLword *word)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_make2
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1365,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1365,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1366,1
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1379,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1379,1
    - Dst: plpgsql_build_recfield::plpgsql_build_recfield
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1407,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 4
    argNames:
    - word1
    - word2
    - wdatum
    - cword
    argTypes:
    - char*
    - char*
    - PLwdatum*
    - PLcword*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1357
    functionDepth: 1
    functionLinenumber: 1357
    functionLinenumberEnd: 1430
    functionName: plpgsql_parse_dblword
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - plpgsql_ns_lookup
    - makeString
    - plpgsql_build_recfield::plpgsql_build_recfield
    - list_make2
    - plpgsql_ns_top
    linkageType: ''
    returnType: bool
    signature: "bool plpgsql_parse_dblword(char *word1, char *word2,\n\t\t\t\t\t  PLwdatum
      *wdatum, PLcword *cword)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1459,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1459,1
    - Dst: plpgsql_build_recfield::plpgsql_build_recfield
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1481,1
    - Dst: list_make2
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1482,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1482,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1483,1
    - Dst: plpgsql_build_recfield::plpgsql_build_recfield
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1488,1
    - Dst: list_make3
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1489,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1489,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1490,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1491,1
    - Dst: wdatum::wdatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1493,1
    - Dst: list_make3
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1507,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1507,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1508,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1509,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 5
    argNames:
    - word1
    - word2
    - word3
    - wdatum
    - cword
    argTypes:
    - char*
    - char*
    - char*
    - PLwdatum*
    - PLcword*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1438
    functionDepth: 1
    functionLinenumber: 1438
    functionLinenumberEnd: 1512
    functionName: plpgsql_parse_tripword
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - plpgsql_ns_lookup
    - makeString
    - plpgsql_build_recfield::plpgsql_build_recfield
    - list_make2
    - list_make3
    - wdatum::wdatum
    - plpgsql_ns_top
    linkageType: ''
    returnType: bool
    signature: "bool plpgsql_parse_tripword(char *word1, char *word2, char *word3,\n\t\t\t\t\t
      \  PLwdatum *wdatum, PLcword *cword)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1530,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1530,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1548,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1549,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1550,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ident
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1522
    functionDepth: 1
    functionLinenumber: 1522
    functionLinenumberEnd: 1552
    functionName: plpgsql_parse_wordtype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - plpgsql_ns_lookup
    - errcode
    - ereport
    - errmsg
    - plpgsql_ns_top
    linkageType: ''
    returnType: PLpgSQL_type
    signature: 'PLpgSQL_type *

      plpgsql_parse_wordtype(char *ident)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1578,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1580,1
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1585,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1585,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1586,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1586,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1587,1
    - Dst: lsecond
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1587,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1608,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1609,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1609,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1611,1
    - Dst: lsecond
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1611,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1623,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1623,1
    - Dst: list_delete_last
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1624,1
    - Dst: list_copy
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1624,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1625,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1626,1
    - Dst: llast
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1626,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1630,1
    - Dst: SearchSysCacheAttName
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1635,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1636,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1637,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1638,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1639,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1641,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1643,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1644,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1645,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1646,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1653,1
    - Dst: build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1654,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1658,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1661,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1662,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1663,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1664,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1666,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 1
    argNames:
    - idents
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1563
    functionDepth: 1
    functionLinenumber: 1563
    functionLinenumberEnd: 1668
    functionName: plpgsql_parse_cwordtype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errcode
    - llast
    - makeRangeVar
    - strVal
    - build_datatype
    - SearchSysCache1
    - plpgsql_ns_lookup
    - elog
    - Assert
    - linitial
    - HeapTupleIsValid
    - ReleaseSysCache
    - list_copy
    - errmsg
    - list_length
    - ObjectIdGetDatum
    - ereport
    - RangeVarGetRelid
    - GETSTRUCT
    - SearchSysCacheAttName
    - list_delete_last
    - MemoryContextSwitchTo
    - lsecond
    - makeRangeVarFromNameList
    - plpgsql_ns_top
    linkageType: ''
    returnType: PLpgSQL_type
    signature: 'PLpgSQL_type *

      plpgsql_parse_cwordtype(List *idents)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1684,1
    - Dst: RelnameGetRelid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1693,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1694,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1695,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1696,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1697,1
    - Dst: get_rel_type_id
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1700,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1701,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1702,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1703,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1704,1
    - Dst: makeTypeName
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1707,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1709,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1712,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ident
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1675
    functionDepth: 1
    functionLinenumber: 1675
    functionLinenumberEnd: 1713
    functionName: plpgsql_parse_wordrowtype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errcode
    - makeTypeName
    - ereport
    - MemoryContextSwitchTo
    - plpgsql_build_datatype
    - RelnameGetRelid
    - errmsg
    - OidIsValid
    - get_rel_type_id
    linkageType: ''
    returnType: PLpgSQL_type
    signature: 'PLpgSQL_type *

      plpgsql_parse_wordrowtype(char *ident)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1735,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1738,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1739,1
    - Dst: get_rel_type_id
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1742,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1743,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1744,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1745,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1746,1
    - Dst: makeTypeNameFromNameList
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1749,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1751,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - idents
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1755
      start: 1720
    functionDepth: 1
    functionLinenumber: 1720
    functionLinenumberEnd: 1755
    functionName: plpgsql_parse_cwordrowtype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errcode
    - makeTypeNameFromNameList
    - ereport
    - RangeVarGetRelid
    - MemoryContextSwitchTo
    - plpgsql_build_datatype
    - makeRangeVarFromNameList
    - errmsg
    - OidIsValid
    - get_rel_type_id
    linkageType: ''
    returnType: PLpgSQL_type
    signature: 'PLpgSQL_type *

      plpgsql_parse_cwordrowtype(List *idents)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1779,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1781,1
    - Dst: plpgsql_adddatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1791,1
    - Dst: plpgsql_ns_additem
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1793,1
    - Dst: plpgsql_build_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1804,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1811,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1812,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1813,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1814,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1818,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 4
    argNames:
    - refname
    - lineno
    - dtype
    - add2namespace
    argTypes:
    - char*
    - int
    - PLpgSQL_type*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1766
    functionDepth: 2
    functionLinenumber: 1766
    functionLinenumberEnd: 1824
    functionName: plpgsql_build_variable
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - elog
    - palloc0_object
    - plpgsql_ns_additem
    - format_type_be
    - plpgsql_adddatum
    - errcode
    - pstrdup
    - ereport
    - errmsg
    - plpgsql_build_record
    linkageType: ''
    returnType: PLpgSQL_variable
    signature: "PLpgSQL_variable *\nplpgsql_build_variable(const char *refname, int
      lineno, PLpgSQL_type *dtype,\n\t\t\t\t\t   bool add2namespace)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1836,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1838,1
    - Dst: plpgsql_adddatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1845,1
    - Dst: plpgsql_ns_additem
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 5
    argNames:
    - refname
    - lineno
    - dtype
    - rectypeid
    - add2namespace
    argTypes:
    - char*
    - int
    - PLpgSQL_type*
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1850
      start: 1829
    functionDepth: 2
    functionLinenumber: 1829
    functionLinenumberEnd: 1850
    functionName: plpgsql_build_record
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - pstrdup
    - plpgsql_ns_additem
    - plpgsql_adddatum
    linkageType: ''
    returnType: PLpgSQL_rec
    signature: "PLpgSQL_rec *\nplpgsql_build_record(const char *refname, int lineno,\n\t\t\t\t\t
      PLpgSQL_type *dtype, Oid rectypeid,\n\t\t\t\t\t bool add2namespace)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1862,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1866,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1868,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1869,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1879,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1898,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1908,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1912,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1915,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 2
    argNames:
    - vars
    - numvars
    argTypes:
    - PLpgSQL_variable**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1856
    functionDepth: 1
    functionLinenumber: 1856
    functionLinenumberEnd: 1918
    functionName: build_row_from_vars
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_object
    - CreateTemplateTupleDesc
    - Assert
    - TupleDescFinalize
    - palloc_array
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    linkageType: ''
    returnType: PLpgSQL_row
    signature: 'PLpgSQL_row *

      build_row_from_vars(PLpgSQL_variable **vars, int numvars)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1937,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1939,1
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1945,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1947,1
    - Dst: plpgsql_adddatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1951,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - rec
    - fldname
    argTypes:
    - PLpgSQL_rec*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1925
    functionDepth: 1
    functionLinenumber: 1925
    functionLinenumberEnd: 1958
    functionName: plpgsql_build_recfield
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - strcmp
    - plpgsql_adddatum
    - Assert
    - pstrdup
    linkageType: ''
    returnType: PLpgSQL_recfield
    signature: 'PLpgSQL_recfield *

      plpgsql_build_recfield(PLpgSQL_rec *rec, const char *fldname)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1981,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1981,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1982,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1983,1
    - Dst: build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1985,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - typeOid
    - typmod
    - collation
    - origtypname
    argTypes:
    - Oid
    - int32
    - Oid
    - TypeName*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1974
    functionDepth: 1
    functionLinenumber: 1974
    functionLinenumberEnd: 1990
    functionName: plpgsql_build_datatype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 4
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - ObjectIdGetDatum
    - build_datatype
    linkageType: ''
    returnType: PLpgSQL_type
    signature: "PLpgSQL_type *\nplpgsql_build_datatype(Oid typeOid, int32 typmod,\n\t\t\t\t\t
      \  Oid collation, TypeName *origtypname)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2000,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2004,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2005,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2006,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2007,1
    - Dst: palloc_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2009,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2011,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2011,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2025,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2037,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2045,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2045,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2055,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2063,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2063,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2079,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2083,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2086,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2087,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2088,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2089,1
    - Dst: copyObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2091,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 59
    argCount: 4
    argNames:
    - typeTup
    - typmod
    - collation
    - origtypname
    argTypes:
    - HeapTuple
    - int32
    - Oid
    - TypeName*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2103
      start: 1996
    functionDepth: 1
    functionLinenumber: 1996
    functionLinenumberEnd: 2103
    functionName: build_datatype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 6
    functionsReached:
    - elog
    - lookup_type_cache
    - format_type_be
    - copyObject
    - errcode
    - get_base_element_type
    - OidIsValid
    - pstrdup
    - ereport
    - errmsg
    - GETSTRUCT
    - NameStr
    - palloc_object
    - IsTrueArrayType
    - type_is_rowtype
    linkageType: ''
    returnType: PLpgSQL_type
    signature: "PLpgSQL_type *\nbuild_datatype(HeapTuple typeTup, int32 typmod,\n\t\t\t
      \  Oid collation, TypeName *origtypname)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_array_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2120,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2121,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2122,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2123,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2124,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2125,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - dtype
    argTypes:
    - PLpgSQL_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 2108
    functionDepth: 2
    functionLinenumber: 2108
    functionLinenumberEnd: 2130
    functionName: plpgsql_build_datatype_arrayof
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - get_array_type
    - format_type_be
    - errcode
    - ereport
    - plpgsql_build_datatype
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: PLpgSQL_type
    signature: 'PLpgSQL_type *

      plpgsql_build_datatype_arrayof(PLpgSQL_type *dtype)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2146,1
    - Dst: strspn
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2147,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2148,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2157,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2161,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2162,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2163,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - condname
    - allow_sqlstate
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2139
    functionDepth: 1
    functionLinenumber: 2139
    functionLinenumberEnd: 2166
    functionName: plpgsql_recognize_err_condition
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - MAKE_SQLSTATE
    - ereport
    - strspn
    - strlen
    - errmsg
    linkageType: ''
    returnType: int
    signature: int plpgsql_recognize_err_condition(const char *condname, bool allow_sqlstate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2187,1
    - Dst: palloc_object::palloc_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2189,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2199,1
    - Dst: palloc_object::palloc_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2201,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2210,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2211,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - condname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2175
    functionDepth: 1
    functionLinenumber: 2175
    functionLinenumberEnd: 2216
    functionName: plpgsql_parse_err_condition
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - ereport
    - errmsg
    - palloc_object::palloc_object
    linkageType: ''
    returnType: PLpgSQL_condition
    signature: 'PLpgSQL_condition *

      plpgsql_parse_err_condition(char *condname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2222
    functionDepth: 1
    functionLinenumber: 2222
    functionLinenumberEnd: 2232
    functionName: plpgsql_start_datums
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: void plpgsql_start_datums(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - newdatum
    argTypes:
    - PLpgSQL_datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2250
      start: 2239
    functionDepth: 0
    functionLinenumber: 2239
    functionLinenumberEnd: 2250
    functionName: plpgsql_adddatum
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 4
    functionsReached:
    - repalloc
    linkageType: ''
    returnType: void
    signature: void plpgsql_adddatum(PLpgSQL_datum *newdatum)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2263,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2273,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2276,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - function
    argTypes:
    - PLpgSQL_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2283
      start: 2256
    functionDepth: 1
    functionLinenumber: 2256
    functionLinenumberEnd: 2283
    functionName: plpgsql_finish_datums
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - MAXALIGN
    - palloc_array
    linkageType: ''
    returnType: void
    signature: void plpgsql_finish_datums(PLpgSQL_function *function)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2328,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - varnos
    argTypes:
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2351
      start: 2300
    functionDepth: 0
    functionLinenumber: 2300
    functionLinenumberEnd: 2351
    functionName: plpgsql_add_initdatums
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - palloc_array
    linkageType: ''
    returnType: int
    signature: int plpgsql_add_initdatums(int **varnos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - estate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: get_eval_mcontext
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: get_eval_mcontext(estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - estate
    - ','
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: eval_mcontext_alloc
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: eval_mcontext_alloc(estate, sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - estate
    - ','
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: eval_mcontext_alloc0
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: eval_mcontext_alloc0(estate, sz)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_estate_setup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:508,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:524,1
    - Dst: copy_plpgsql_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:525,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:530,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:541,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:564,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:564,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:567,1
    - Dst: TransferExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:568,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RO
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:573,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:573,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:580,1
    - Dst: expand_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:581,1
    - Dst: exec_move_row_from_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:598,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:605,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:609,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:615,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:619,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:624,1
    - Dst: exec_toplevel_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:636,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:640,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:641,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:642,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:648,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:657,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:658,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:659,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:660,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:663,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:664,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:665,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:675,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:676,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:677,1
    - Dst: SPI_datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:701,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:718,1
    - Dst: coerce_function_result_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:722,1
    - Dst: coerce_function_result_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:726,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:729,1
    - Dst: SPI_datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:741,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:747,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:755,1
    - Dst: SPI_datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:770,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:783,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:792,1
    - Dst: plpgsql_destroy_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:801,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:802,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 104
    argCount: 6
    argNames:
    - func
    - fcinfo
    - simple_eval_estate
    - simple_eval_resowner
    - procedure_resowner
    - atomic
    argTypes:
    - PLpgSQL_function*
    - FunctionCallInfo
    - EState*
    - ResourceOwner
    - ResourceOwner
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 814
    functionName: plpgsql_exec_function
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errcode
    - coerce_function_result_tuple
    - exec_cast_value
    - SPI_datumTransfer
    - gettext_noop
    - copy_plpgsql_datums
    - VARATT_IS_EXTERNAL_EXPANDED_RO
    - elog
    - assign_simple_var
    - CreateTupleDescCopy
    - plpgsql_estate_setup
    - expand_array
    - errmsg
    - exec_move_row_from_datum
    - get_call_result_type
    - exec_toplevel_block
    - exec_set_found
    - ereport
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - TransferExpandedObject
    - domain_check
    - exec_move_row
    - plpgsql_destroy_econtext
    - MemoryContextSwitchTo
    - exec_eval_cleanup
    - IsA
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: "Datum plpgsql_exec_function(PLpgSQL_function *func, FunctionCallInfo
      fcinfo,\n\t\t\t\t\t  EState *simple_eval_estate,\n\t\t\t\t\t  ResourceOwner
      simple_eval_resowner,\n\t\t\t\t\t  ResourceOwner procedure_resowner,\n\t\t\t\t\t
      \ bool atomic)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:832,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:832,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:835,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:835,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:837,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:839,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:842,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:845,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:847,1
    - Dst: expanded_record_get_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:852,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:853,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:854,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:860,1
    - Dst: SPI_returntuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:860,1
    - Dst: ExpandedRecordIsDomain
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:865,1
    - Dst: EOH_get_flat_size
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:881,1
    - Dst: SPI_palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:882,1
    - Dst: EOH_flatten_into
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:883,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:884,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:885,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:886,1
    - Dst: SPI_datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:895,1
    - Dst: deconstruct_composite_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:905,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:909,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:911,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:915,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:921,1
    - Dst: SPI_returntuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:921,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:925,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - estate
    - tupdesc
    argTypes:
    - PLpgSQL_execstate*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 927
    functionName: coerce_function_result_tuple
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - expanded_record_get_tuple
    - EOH_flatten_into
    - ReleaseTupleDesc
    - expanded_record_get_tupdesc
    - SPI_datumTransfer
    - SPI_palloc
    - gettext_noop
    - Assert
    - SPI_returntuple
    - convert_tuples_by_position
    - HeapTupleHeaderSetTypMod
    - PointerGetDatum
    - EOH_get_flat_size
    - deconstruct_composite_datum
    - VARATT_IS_EXTERNAL_EXPANDED
    - ExpandedRecordIsDomain
    - execute_attr_map_tuple
    - DatumGetEOHP
    - type_is_rowtype
    - HeapTupleHeaderSetTypeId
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void coerce_function_result_tuple(PLpgSQL_execstate *estate, TupleDesc
      tupdesc)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_estate_setup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:950,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:964,1
    - Dst: copy_plpgsql_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:965,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:977,1
    - Dst: make_expanded_record_from_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:982,1
    - Dst: make_expanded_record_from_exprecord
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:984,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:987,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:993,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:995,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:998,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1000,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1002,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1014,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1017,1
    - Dst: expanded_record_set_field_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1018,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1025,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1027,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1031,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1034,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1035,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1037,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1042,1
    - Dst: exec_toplevel_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1054,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1058,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1059,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1060,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1063,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1066,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1067,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1068,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1080,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1088,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1088,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1091,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1091,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1093,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1095,1
    - Dst: expanded_record_get_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1098,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1099,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1100,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1102,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1105,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1106,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1107,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1110,1
    - Dst: SPI_copytuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1122,1
    - Dst: deconstruct_composite_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1129,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1133,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1134,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1135,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1138,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1140,1
    - Dst: SPI_copytuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1144,1
    - Dst: plpgsql_destroy_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1155,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1156,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 78
    argCount: 2
    argNames:
    - func
    - trigdata
    argTypes:
    - PLpgSQL_function*
    - TriggerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 1168
    functionName: plpgsql_exec_trigger
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - expanded_record_get_tuple
    - ReleaseTupleDesc
    - expanded_record_get_tupdesc
    - TRIGGER_FIRED_BY_INSERT
    - TRIGGER_FIRED_BEFORE
    - errcode
    - gettext_noop
    - make_expanded_record_from_exprecord
    - copy_plpgsql_datums
    - elog
    - expanded_record_set_field_internal
    - Assert
    - RelationGetDescr
    - SPI_register_trigger_data
    - convert_tuples_by_position
    - TRIGGER_FIRED_BY_DELETE
    - plpgsql_estate_setup
    - errmsg
    - deconstruct_composite_datum
    - exec_toplevel_block
    - expanded_record_set_tuple
    - VARATT_IS_EXTERNAL_EXPANDED
    - exec_set_found
    - ereport
    - execute_attr_map_tuple
    - DatumGetEOHP
    - TupleDescAttr
    - plpgsql_destroy_econtext
    - type_is_rowtype
    - make_expanded_record_from_tupdesc
    - exec_eval_cleanup
    - TRIGGER_FIRED_FOR_ROW
    - TRIGGER_FIRED_BY_UPDATE
    - SPI_copytuple
    - DatumGetPointer
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple plpgsql_exec_trigger(PLpgSQL_function *func,\n\t\t\t\t\t
      TriggerData *trigdata)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_estate_setup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1185,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1199,1
    - Dst: copy_plpgsql_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1200,1
    - Dst: exec_toplevel_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1212,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1216,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1217,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1218,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1221,1
    - Dst: plpgsql_destroy_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1230,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1231,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - func
    - trigdata
    argTypes:
    - PLpgSQL_function*
    - EventTriggerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1175
    functionDepth: 1
    functionLinenumber: 1175
    functionLinenumberEnd: 1238
    functionName: plpgsql_exec_event_trigger
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - exec_toplevel_block
    - errcode
    - ereport
    - gettext_noop
    - plpgsql_estate_setup
    - copy_plpgsql_datums
    - errmsg
    - exec_eval_cleanup
    - plpgsql_destroy_econtext
    linkageType: ''
    returnType: void
    signature: void plpgsql_exec_event_trigger(PLpgSQL_function *func, EventTriggerData
      *trigdata)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1276,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1279,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1287,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1289,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1295,1
    - Dst: plpgsql_stmt_typename
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1298,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1301,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1243
    functionDepth: 1
    functionLinenumber: 1243
    functionLinenumberEnd: 1303
    functionName: plpgsql_exec_error_callback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - errcontext
    - _
    - plpgsql_stmt_typename
    linkageType: ''
    returnType: void
    signature: void plpgsql_exec_error_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: geterrposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1323,1
    - Dst: errposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1326,1
    - Dst: internalerrposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1327,1
    - Dst: internalerrquery
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1328,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1312
    functionDepth: 1
    functionLinenumber: 1312
    functionLinenumberEnd: 1334
    functionName: plpgsql_execsql_error_callback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - internalerrposition
    - errcontext
    - geterrposition
    - errposition
    - internalerrquery
    linkageType: ''
    returnType: void
    signature: void plpgsql_execsql_error_callback(void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1353,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1359,1
    - Dst: memcpy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1376,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1377,1
    - Dst: memcpy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1382,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1383,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1398,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1406,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - estate
    - func
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1341
    functionDepth: 1
    functionLinenumber: 1341
    functionLinenumberEnd: 1407
    functionName: copy_plpgsql_datums
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - elog
    - memcpy
    - Assert
    - palloc_array
    - palloc
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: "void copy_plpgsql_datums(PLpgSQL_execstate *estate,\n\t\t\t\t\tPLpgSQL_function
      *func)"
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1430,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1436,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1437,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1438,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1439,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1445,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1446,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1447,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1448,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1449,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1450,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1451,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1453,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1458,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1459,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1460,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1461,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1462,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1464,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1469,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1470,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1471,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1472,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1473,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1474,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1475,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1476,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1477,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1479,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1484,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1485,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1486,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1492,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1493,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1494,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1495,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1495,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1501,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1502,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1503,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1504,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1504,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1504,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1510,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1511,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1512,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1518,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1531,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1533,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1537,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1538,1
    - Dst: construct_md_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1538,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1546,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1552,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1553,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1558,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1559,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1559,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1563,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1566,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 91
    argCount: 2
    argNames:
    - estate
    - var
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1414
    functionDepth: 1
    functionLinenumber: 1414
    functionLinenumberEnd: 1567
    functionName: plpgsql_fulfill_promise
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - TRIGGER_FIRED_BEFORE
    - assign_text_var
    - TRIGGER_FIRED_BY_INSERT
    - TRIGGER_FIRED_AFTER
    - palloc_array
    - RelationGetNamespace
    - GetCommandTagName
    - RelationGetRelationName
    - elog
    - construct_md_array
    - assign_simple_var
    - TRIGGER_FIRED_BY_DELETE
    - PointerGetDatum
    - ObjectIdGetDatum
    - CStringGetDatum
    - TRIGGER_FIRED_BY_TRUNCATE
    - TRIGGER_FIRED_FOR_STATEMENT
    - Int16GetDatum
    - get_namespace_name
    - TRIGGER_FIRED_INSTEAD
    - DirectFunctionCall1
    - MemoryContextSwitchTo
    - TRIGGER_FIRED_FOR_ROW
    - TRIGGER_FIRED_BY_UPDATE
    - CStringGetTextDatum
    linkageType: ''
    returnType: void
    signature: "void plpgsql_fulfill_promise(PLpgSQL_execstate *estate,\n\t\t\t\t\t\tPLpgSQL_var
      *var)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1585
      start: 1574
    functionDepth: 1
    functionLinenumber: 1574
    functionLinenumberEnd: 1585
    functionName: get_stmt_mcontext
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - AllocSetContextCreate
    linkageType: ''
    returnType: MemoryContext
    signature: MemoryContext get_stmt_mcontext(PLpgSQL_execstate *estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1597,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1599,1
    - Dst: MemoryContextGetParent
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1593
    functionDepth: 1
    functionLinenumber: 1593
    functionLinenumberEnd: 1604
    functionName: push_stmt_mcontext
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextGetParent
    linkageType: ''
    returnType: void
    signature: void push_stmt_mcontext(PLpgSQL_execstate *estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextGetParent
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1612
    functionDepth: 1
    functionLinenumber: 1612
    functionLinenumberEnd: 1618
    functionName: pop_stmt_mcontext
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - MemoryContextGetParent
    linkageType: ''
    returnType: void
    signature: void pop_stmt_mcontext(PLpgSQL_execstate *estate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ERRCODE_IS_CATEGORY
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1647,1
    - Dst: ERRCODE_TO_CATEGORY
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1648,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - edata
    - cond
    argTypes:
    - ErrorData*
    - PLpgSQL_condition*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1625
    functionDepth: 1
    functionLinenumber: 1625
    functionLinenumberEnd: 1652
    functionName: exception_matches_conditions
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - ERRCODE_TO_CATEGORY
    - ERRCODE_IS_CATEGORY
    linkageType: ''
    returnType: bool
    signature: bool exception_matches_conditions(ErrorData *edata, PLpgSQL_condition
      *cond)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1675,1
    - Dst: exec_stmt_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1677,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - estate
    - block
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1686
      start: 1664
    functionDepth: 1
    functionLinenumber: 1664
    functionLinenumberEnd: 1686
    functionName: exec_toplevel_block
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - exec_stmt_block
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: int
    signature: int exec_toplevel_block(PLpgSQL_execstate *estate, PLpgSQL_stmt_block
      *block)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1702,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1731,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1742,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1750,1
    - Dst: exec_assign_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1754,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1775,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1779,1
    - Dst: exec_assign_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1783,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1790,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1807,1
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1818,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1820,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1822,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1824,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1832,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1837,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1839,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1853,1
    - Dst: datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1854,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1859,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1860,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1864,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1872,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1877,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1880,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1881,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1882,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1885,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1886,1
    - Dst: MemoryContextDeleteChildren
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1907,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1919,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1922,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1924,1
    - Dst: exception_matches_conditions
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1926,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1942,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1943,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1944,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1954,1
    - Dst: ReThrowError
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1969,1
    - Dst: pop_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1972,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1973,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1975,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1977,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1986,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2008,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2014,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 107
    argCount: 2
    argNames:
    - estate
    - block
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2018
      start: 1693
    functionDepth: 2
    functionLinenumber: 1693
    functionLinenumberEnd: 2018
    functionName: exec_stmt_block
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - exec_stmts
    - get_stmt_mcontext
    - strcmp
    - get_typlenbyval
    - assign_text_var
    - BeginInternalSubTransaction
    - CopyErrorData
    - pop_stmt_mcontext
    - gettext_noop
    - exec_assign_value
    - exception_matches_conditions
    - elog
    - MemoryContextReset
    - foreach
    - Assert
    - assign_simple_var
    - ReThrowError
    - datumTransfer
    - PG_END_TRY
    - exec_assign_expr
    - lfirst
    - RollbackAndReleaseCurrentSubTransaction
    - exec_move_row
    - MemoryContextDeleteChildren
    - PG_CATCH
    - ReleaseCurrentSubTransaction
    - plpgsql_create_econtext
    - MemoryContextSwitchTo
    - unpack_sql_state
    - FlushErrorState
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: int exec_stmt_block(PLpgSQL_execstate *estate, PLpgSQL_stmt_block *block)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2039,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2045,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2054,1
    - Dst: exec_stmt_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2059,1
    - Dst: exec_stmt_assign
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2063,1
    - Dst: exec_stmt_perform
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2067,1
    - Dst: exec_stmt_call
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2071,1
    - Dst: exec_stmt_getdiag
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2075,1
    - Dst: exec_stmt_if
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2079,1
    - Dst: exec_stmt_case
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2083,1
    - Dst: exec_stmt_loop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2087,1
    - Dst: exec_stmt_while
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2091,1
    - Dst: exec_stmt_fori
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2095,1
    - Dst: exec_stmt_fors
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2099,1
    - Dst: exec_stmt_forc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2103,1
    - Dst: exec_stmt_foreach_a
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2107,1
    - Dst: exec_stmt_exit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2111,1
    - Dst: exec_stmt_return
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2115,1
    - Dst: exec_stmt_return_next
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2119,1
    - Dst: exec_stmt_return_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2123,1
    - Dst: exec_stmt_raise
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2127,1
    - Dst: exec_stmt_assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2131,1
    - Dst: exec_stmt_execsql
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2135,1
    - Dst: exec_stmt_dynexecute
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2139,1
    - Dst: exec_stmt_dynfors
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2143,1
    - Dst: exec_stmt_open
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2147,1
    - Dst: exec_stmt_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2151,1
    - Dst: exec_stmt_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2155,1
    - Dst: exec_stmt_commit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2159,1
    - Dst: exec_stmt_rollback
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2163,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2169,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 105
    argCount: 2
    argNames:
    - estate
    - stmts
    argTypes:
    - PLpgSQL_execstate*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2186
      start: 2026
    functionDepth: 3
    functionLinenumber: 2026
    functionLinenumberEnd: 2186
    functionName: exec_stmts
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - exec_stmt_return
    - exec_stmt_rollback
    - exec_stmt_fors
    - exec_stmt_assert
    - exec_stmt_call
    - exec_stmt_return_query
    - exec_stmt_getdiag
    - exec_stmt_case
    - exec_stmt_execsql
    - exec_stmt_dynfors
    - exec_stmt_exit
    - elog
    - exec_stmt_return_next
    - exec_stmt_dynexecute
    - exec_stmt_close
    - exec_stmt_forc
    - exec_stmt_while
    - exec_stmt_assign
    - exec_stmt_perform
    - exec_stmt_block
    - CHECK_FOR_INTERRUPTS
    - lfirst
    - exec_stmt_foreach_a
    - exec_stmt_open
    - exec_stmt_raise
    - exec_stmt_loop
    - exec_stmt_fori
    - exec_stmt_fetch
    - exec_stmt_commit
    - exec_stmt_if
    linkageType: ''
    returnType: int
    signature: int exec_stmts(PLpgSQL_execstate *estate, List *stmts)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2045,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2054,1
    - Dst: exec_stmt_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2059,1
    - Dst: exec_stmt_assign
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2063,1
    - Dst: exec_stmt_perform
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2067,1
    - Dst: exec_stmt_call
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2071,1
    - Dst: exec_stmt_getdiag
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2075,1
    - Dst: exec_stmt_if
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2079,1
    - Dst: exec_stmt_case
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2083,1
    - Dst: exec_stmt_loop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2087,1
    - Dst: exec_stmt_while
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2091,1
    - Dst: exec_stmt_fori
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2095,1
    - Dst: exec_stmt_fors
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2099,1
    - Dst: exec_stmt_forc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2103,1
    - Dst: exec_stmt_foreach_a
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2107,1
    - Dst: exec_stmt_exit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2111,1
    - Dst: exec_stmt_return
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2115,1
    - Dst: exec_stmt_return_next
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2119,1
    - Dst: exec_stmt_return_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2123,1
    - Dst: exec_stmt_raise
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2127,1
    - Dst: exec_stmt_assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2131,1
    - Dst: exec_stmt_execsql
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2135,1
    - Dst: exec_stmt_dynexecute
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2139,1
    - Dst: exec_stmt_dynfors
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2143,1
    - Dst: exec_stmt_open
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2147,1
    - Dst: exec_stmt_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2151,1
    - Dst: exec_stmt_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2155,1
    - Dst: exec_stmt_commit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2159,1
    - Dst: exec_stmt_rollback
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2163,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2169,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2182
      start: 2043
    functionDepth: 3
    functionLinenumber: 2043
    functionLinenumberEnd: 2182
    functionName: foreach
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 12
    functionsReached:
    - exec_stmt_return
    - exec_stmt_rollback
    - exec_stmt_fors
    - exec_stmt_assert
    - exec_stmt_call
    - exec_stmt_return_query
    - exec_stmt_getdiag
    - exec_stmt_case
    - exec_stmt_execsql
    - exec_stmt_dynfors
    - exec_stmt_exit
    - elog
    - exec_stmt_return_next
    - exec_stmt_dynexecute
    - exec_stmt_close
    - exec_stmt_forc
    - exec_stmt_while
    - exec_stmt_assign
    - exec_stmt_perform
    - exec_stmt_block
    - CHECK_FOR_INTERRUPTS
    - lfirst
    - exec_stmt_foreach_a
    - exec_stmt_open
    - exec_stmt_raise
    - exec_stmt_loop
    - exec_stmt_fori
    - exec_stmt_fetch
    - exec_stmt_commit
    - exec_stmt_if
    linkageType: ''
    returnType: void
    signature: void foreach(s, stmts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2197,1
    - Dst: exec_assign_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_assign*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2202
      start: 2194
    functionDepth: 1
    functionLinenumber: 2194
    functionLinenumberEnd: 2202
    functionName: exec_stmt_assign
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - Assert
    - exec_assign_expr
    linkageType: ''
    returnType: int
    signature: int exec_stmt_assign(PLpgSQL_execstate *estate, PLpgSQL_stmt_assign
      *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exec_run_select
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2215,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2216,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_perform*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2220
      start: 2210
    functionDepth: 1
    functionLinenumber: 2210
    functionLinenumberEnd: 2220
    functionName: exec_stmt_perform
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_eval_cleanup
    - exec_set_found
    - exec_run_select
    linkageType: ''
    returnType: int
    signature: int exec_stmt_perform(PLpgSQL_execstate *estate, PLpgSQL_stmt_perform
      *stmt)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2241,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2246,1
    - Dst: make_callstmt_target
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2254,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2256,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2267,1
    - Dst: SPI_execute_plan_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2273,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2276,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2277,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2289,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2301,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2303,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2306,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2308,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2309,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_call*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2312
      start: 2227
    functionDepth: 1
    functionLinenumber: 2227
    functionLinenumberEnd: 2312
    functionName: exec_stmt_call
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - elog
    - SPI_result_code_string
    - Assert
    - SPI_execute_plan_extended
    - setup_param_list
    - plpgsql_create_econtext
    - memset
    - make_callstmt_target
    - exec_prepare_plan
    - exec_eval_cleanup
    - exec_move_row
    - SPI_freetuptable
    linkageType: ''
    returnType: int
    signature: int exec_stmt_call(PLpgSQL_execstate *estate, PLpgSQL_stmt_call *stmt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2337,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2337,1
    - Dst: SPI_plan_get_cached_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2344,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2345,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2346,1
    - Dst: linitial_node
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2347,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2349,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2350,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2354,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2355,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2356,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2357,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2364,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2366,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2372,1
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2374,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2378,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2380,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2380,1
    - Dst: list_nth
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2394,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2396,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2404,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2411,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2412,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2413,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2416,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2417,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2418,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2424,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2424,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2428,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2430,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 2
    argNames:
    - estate
    - expr
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2433
      start: 2319
    functionDepth: 1
    functionLinenumber: 2319
    functionLinenumberEnd: 2433
    functionName: make_callstmt_target
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - errcode
    - palloc_array
    - elog
    - SearchSysCache1
    - linitial_node
    - HeapTupleIsValid
    - exec_check_assignable
    - Assert
    - SPI_plan_get_cached_plan
    - ReleaseSysCache
    - errmsg
    - list_length
    - ObjectIdGetDatum
    - palloc0_object
    - get_func_arg_info
    - ereport
    - get_eval_mcontext
    - ReleaseCachedPlan
    - MemoryContextSwitchTo
    - list_nth
    - IsA
    linkageType: ''
    returnType: PLpgSQL_variable
    signature: 'PLpgSQL_variable *

      make_callstmt_target(PLpgSQL_execstate *estate, PLpgSQL_expr *expr)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2452,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2453,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2454,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2456,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2458,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2464,1
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2465,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2470,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2471,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2476,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2481,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2486,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2491,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2492,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2496,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2501,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2506,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2511,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2516,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2521,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2531,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2531,1
    - Dst: GetErrorContextStack
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2532,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2533,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2535,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2540,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2545,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 54
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_getdiag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2548
      start: 2440
    functionDepth: 1
    functionLinenumber: 2440
    functionLinenumberEnd: 2548
    functionName: exec_stmt_getdiag
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - elog
    - exec_assign_c_string
    - foreach
    - errcode
    - ereport
    - unpack_sql_state
    - MemoryContextSwitchTo
    - get_eval_mcontext
    - lfirst
    - exec_assign_value
    - errmsg
    - UInt64GetDatum
    - GetErrorContextStack
    - exec_eval_cleanup
    - ObjectIdGetDatum
    linkageType: ''
    returnType: int
    signature: int exec_stmt_getdiag(PLpgSQL_execstate *estate, PLpgSQL_stmt_getdiag
      *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: exec_eval_boolean
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2563,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2564,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2566,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2568,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2570,1
    - Dst: exec_eval_boolean
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2572,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2573,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2575,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2578,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2579
      start: 2556
    functionDepth: 4
    functionLinenumber: 2556
    functionLinenumberEnd: 2579
    functionName: exec_stmt_if
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_stmts
    - foreach
    - exec_eval_boolean
    - lfirst
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: int exec_stmt_if(PLpgSQL_execstate *estate, PLpgSQL_stmt_if *stmt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2600,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2615,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2621,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2628,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2632,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2634,1
    - Dst: exec_eval_boolean
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2637,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2638,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2645,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2648,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2654,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2658,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2659,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2660,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2661,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2664,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_case*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2665
      start: 2586
    functionDepth: 4
    functionLinenumber: 2586
    functionLinenumberEnd: 2665
    functionName: exec_stmt_case
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_stmts
    - foreach
    - errcode
    - assign_simple_var
    - ereport
    - exec_eval_expr
    - plpgsql_build_datatype
    - exec_eval_boolean
    - lfirst
    - exec_assign_value
    - errmsg
    - errhint
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: int exec_stmt_case(PLpgSQL_execstate *estate, PLpgSQL_stmt_case *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2680,1
    - Dst: LOOP_RC_PROCESSING
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2686
      start: 2673
    functionDepth: 4
    functionLinenumber: 2673
    functionLinenumberEnd: 2686
    functionName: exec_stmt_loop
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_stmts
    - LOOP_RC_PROCESSING
    linkageType: ''
    returnType: int
    signature: int exec_stmt_loop(PLpgSQL_execstate *estate, PLpgSQL_stmt_loop *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: exec_eval_boolean
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2705,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2706,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2711,1
    - Dst: LOOP_RC_PROCESSING
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2713,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_while*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2717
      start: 2695
    functionDepth: 4
    functionLinenumber: 2695
    functionLinenumberEnd: 2717
    functionName: exec_stmt_while
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_eval_cleanup
    - exec_eval_boolean
    - exec_stmts
    - LOOP_RC_PROCESSING
    linkageType: ''
    returnType: int
    signature: int exec_stmt_while(PLpgSQL_execstate *estate, PLpgSQL_stmt_while *stmt)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2745,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2747,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2752,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2753,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2754,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2755,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2756,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2761,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2763,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2768,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2769,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2770,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2771,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2772,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2779,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2781,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2786,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2787,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2788,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2789,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2790,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2792,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2793,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2794,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2823,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2823,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2828,1
    - Dst: LOOP_RC_PROCESSING
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2830,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2856,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_fori*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2859
      start: 2726
    functionDepth: 4
    functionLinenumber: 2726
    functionLinenumberEnd: 2859
    functionName: exec_stmt_fori
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_stmts
    - exec_set_found
    - errcode
    - Int32GetDatum
    - exec_cast_value
    - assign_simple_var
    - ereport
    - exec_eval_expr
    - DatumGetInt32
    - errmsg
    - exec_eval_cleanup
    - LOOP_RC_PROCESSING
    linkageType: ''
    returnType: int
    signature: int exec_stmt_fori(PLpgSQL_execstate *estate, PLpgSQL_stmt_fori *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exec_run_select
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2878,1
    - Dst: exec_for_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2883,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_fors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2891
      start: 2869
    functionDepth: 1
    functionLinenumber: 2869
    functionLinenumberEnd: 2891
    functionName: exec_stmt_fors
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_for_query
    - SPI_cursor_close
    - exec_run_select
    linkageType: ''
    returnType: int
    signature: int exec_stmt_fors(PLpgSQL_execstate *estate, PLpgSQL_stmt_fors *stmt)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2920,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2921,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2922,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2923,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2925,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2926,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2927,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2928,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2949,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2950,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2951,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2953,1
    - Dst: exec_stmt_execsql
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2962,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2963,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2968,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2969,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2970,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2974,1
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2977,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2982,1
    - Dst: SPI_cursor_open_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2987,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2991,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2992,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3000,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3001,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3007,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3009,1
    - Dst: exec_for_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3015,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3021,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3024,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_forc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3027
      start: 2898
    functionDepth: 2
    functionLinenumber: 2898
    functionLinenumberEnd: 3027
    functionName: exec_stmt_forc
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - get_stmt_mcontext
    - errcode
    - assign_text_var
    - exec_stmt_execsql
    - elog
    - MemoryContextReset
    - Assert
    - exec_check_assignable
    - assign_simple_var
    - SPI_cursor_close
    - errmsg
    - exec_prepare_plan
    - TextDatumGetCString
    - SPI_result_code_string
    - ereport
    - setup_param_list
    - SPI_cursor_open_with_paramlist
    - memset
    - SPI_cursor_find
    - exec_for_query
    - MemoryContextSwitchTo
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: int exec_stmt_forc(PLpgSQL_execstate *estate, PLpgSQL_stmt_forc *stmt)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3057,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3059,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3060,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3061,1
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3068,1
    - Dst: push_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3069,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3070,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3073,1
    - Dst: get_element_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3073,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3074,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3075,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3076,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3077,1
    - Dst: DatumGetArrayTypePCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3084,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3087,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3090,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3091,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3092,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3093,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3094,1
    - Dst: get_element_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3108,1
    - Dst: plpgsql_exec_get_datum_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3108,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3118,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3119,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3120,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3122,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3123,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3124,1
    - Dst: array_create_iterator
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3127,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3139,1
    - Dst: array_iterate
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3144,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3149,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3152,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3157,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3157,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3162,1
    - Dst: LOOP_RC_PROCESSING
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3164,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3166,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3170,1
    - Dst: pop_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3171,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3174,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3182,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_foreach_a*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3185
      start: 3038
    functionDepth: 4
    functionLinenumber: 3038
    functionLinenumberEnd: 3185
    functionName: exec_stmt_foreach_a
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_stmts
    - get_stmt_mcontext
    - errcode
    - exec_eval_expr
    - pop_stmt_mcontext
    - exec_assign_value
    - ARR_NDIM
    - get_element_type
    - MemoryContextReset
    - pfree
    - plpgsql_exec_get_datum_type
    - array_create_iterator
    - errmsg
    - OidIsValid
    - exec_set_found
    - array_iterate
    - ereport
    - LOOP_RC_PROCESSING
    - push_stmt_mcontext
    - format_type_be
    - MemoryContextSwitchTo
    - ARR_ELEMTYPE
    - DatumGetArrayTypePCopy
    - exec_eval_cleanup
    - DatumGetPointer
    linkageType: ''
    returnType: int
    signature: int exec_stmt_foreach_a(PLpgSQL_execstate *estate, PLpgSQL_stmt_foreach_a
      *stmt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: exec_eval_boolean
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3205,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3206,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_exit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3216
      start: 3194
    functionDepth: 1
    functionLinenumber: 3194
    functionLinenumberEnd: 3216
    functionName: exec_stmt_exit
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_eval_cleanup
    - exec_eval_boolean
    linkageType: ''
    returnType: int
    signature: int exec_stmt_exit(PLpgSQL_execstate *estate, PLpgSQL_stmt_exit *stmt)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_fulfill_promise
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3263,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3284,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3285,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3286,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3296,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3306,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3316,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3326,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3327,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3328,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3329,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_return*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3348
      start: 3227
    functionDepth: 2
    functionLinenumber: 3227
    functionLinenumberEnd: 3348
    functionName: exec_stmt_return
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - elog
    - plpgsql_fulfill_promise
    - errcode
    - ereport
    - exec_eval_expr
    - errmsg
    - exec_eval_datum
    - type_is_rowtype
    linkageType: ''
    returnType: int
    signature: int exec_stmt_return(PLpgSQL_execstate *estate, PLpgSQL_stmt_return
      *stmt)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3366,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3367,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3368,1
    - Dst: exec_init_tuple_store
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3371,1
    - Dst: plpgsql_fulfill_promise
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3395,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3407,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3408,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3409,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3412,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3417,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3418,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3426,1
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3439,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3440,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3441,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3444,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3444,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3445,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3446,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3448,1
    - Dst: expanded_record_get_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3449,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3451,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3452,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3453,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3464,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3464,1
    - Dst: make_tuple_from_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3465,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3467,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3468,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3469,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3470,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3471,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3476,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3487,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3502,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3503,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3504,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3505,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3508,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3508,1
    - Dst: deconstruct_composite_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3509,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3511,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3512,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3514,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3515,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3516,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3517,1
    - Dst: eval_mcontext_alloc0
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3526,1
    - Dst: eval_mcontext_alloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3528,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3529,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3530,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3540,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3541,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3542,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3545,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3546,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3554,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3560,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3561,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3562,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3565,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 83
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_return_next*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3568
      start: 3356
    functionDepth: 2
    functionLinenumber: 3356
    functionLinenumberEnd: 3568
    functionName: exec_stmt_return_next
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - expanded_record_get_tuple
    - ReleaseTupleDesc
    - expanded_record_get_tupdesc
    - errcode
    - exec_cast_value
    - tuplestore_putvalues
    - exec_eval_expr
    - gettext_noop
    - elog
    - make_tuple_from_row
    - convert_tuples_by_position
    - deconstruct_expanded_record
    - instantiate_empty_record_variable
    - errmsg
    - deconstruct_composite_datum
    - ExpandedRecordIsEmpty
    - eval_mcontext_alloc
    - ereport
    - get_eval_mcontext
    - execute_attr_map_tuple
    - memset
    - TupleDescAttr
    - type_is_rowtype
    - plpgsql_fulfill_promise
    - MemoryContextSwitchTo
    - exec_init_tuple_store
    - MakeExpandedObjectReadOnly
    - tuplestore_puttuple
    - exec_eval_cleanup
    - eval_mcontext_alloc0
    linkageType: ''
    returnType: int
    signature: "int exec_stmt_return_next(PLpgSQL_execstate *estate,\n\t\t\t\t\t  PLpgSQL_stmt_return_next
      *stmt)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3584,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3588,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3589,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3590,1
    - Dst: exec_init_tuple_store
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3593,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3595,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3601,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3602,1
    - Dst: SetTuplestoreDestReceiverParams
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3603,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3608,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3609,1
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3622,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3627,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3632,1
    - Dst: SPI_execute_plan_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3638,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3640,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3641,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3657,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3658,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3661,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3662,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3663,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3666,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3669,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3671,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3674,1
    - Dst: exec_eval_using_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3675,1
    - Dst: SPI_execute_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3681,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3683,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3684,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3688,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3689,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3690,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3693,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3696,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 46
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_return_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3699
      start: 3576
    functionDepth: 2
    functionLinenumber: 3576
    functionLinenumberEnd: 3699
    functionName: exec_stmt_return_query
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - get_stmt_mcontext
    - CreateDestReceiver
    - errcode
    - DestReceiver*::rDestroy
    - exec_eval_expr
    - exec_eval_using_params
    - gettext_noop
    - elog
    - MemoryContextReset
    - tuplestore_tuple_count
    - Assert
    - SPI_execute_extended
    - convert_value_to_string
    - errmsg
    - SetTuplestoreDestReceiverParams
    - exec_prepare_plan
    - exec_set_found
    - SPI_result_code_string
    - SPI_execute_plan_extended
    - ereport
    - setup_param_list
    - memset
    - MemoryContextStrdup
    - MemoryContextSwitchTo
    - exec_init_tuple_store
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: "int exec_stmt_return_query(PLpgSQL_execstate *estate,\n\t\t\t\t\t
      \  PLpgSQL_stmt_return_query *stmt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3711,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3712,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3713,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3714,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3718,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3719,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3720,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3729,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3734,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3738,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3741
      start: 3701
    functionDepth: 1
    functionLinenumber: 3701
    functionLinenumberEnd: 3741
    functionName: exec_init_tuple_store
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - tuplestore_begin_heap
    - errcode
    - ereport
    - MemoryContextSwitchTo
    - errmsg
    - IsA
    linkageType: ''
    returnType: void
    signature: void exec_init_tuple_store(PLpgSQL_execstate *estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - opt
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3752
      start: 3743
    functionDepth: 0
    functionLinenumber: 3743
    functionLinenumberEnd: 3752
    functionName: SET_RAISE_OPTION_TEXT
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_RAISE_OPTION_TEXT(opt, name)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: ReThrowError
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3778,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3780,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3781,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3782,1
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3786,1
    - Dst: plpgsql_recognize_err_condition
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3790,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3791,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3802,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3803,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3804,1
    - Dst: list_head
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3806,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3824,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3831,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3833,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3834,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3842,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3845,1
    - Dst: lnext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3846,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3847,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3850,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3855,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3860,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3862,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3869,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3874,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3875,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3876,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3878,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3884,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3885,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3886,1
    - Dst: plpgsql_recognize_err_condition
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3888,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3889,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3892,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3895,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3898,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3901,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3904,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3907,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3910,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3913,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3916,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3919,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3935,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3936,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3942,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3943,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3944,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3945,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3946,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3948,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3950,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3952,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3954,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3956,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3959,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 92
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_raise*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3962
      start: 3757
    functionDepth: 2
    functionLinenumber: 3757
    functionLinenumberEnd: 3962
    functionName: exec_stmt_raise
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - get_stmt_mcontext
    - errcode
    - plpgsql_recognize_err_condition
    - exec_eval_expr
    - errhint
    - list_head
    - elog
    - MemoryContextReset
    - foreach
    - appendStringInfoString
    - lnext
    - convert_value_to_string
    - SET_RAISE_OPTION_TEXT
    - errmsg
    - err_generic_string
    - ReThrowError
    - appendStringInfoChar
    - errdetail_internal
    - errmsg_internal
    - initStringInfo
    - ereport
    - lfirst
    - MemoryContextStrdup
    - unpack_sql_state
    - MemoryContextSwitchTo
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: int exec_stmt_raise(PLpgSQL_execstate *estate, PLpgSQL_stmt_raise *stmt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: exec_eval_boolean
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3978,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3979,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3991,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3994,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3998,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3999,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4000,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4001,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_assert*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4005
      start: 3968
    functionDepth: 1
    functionLinenumber: 3968
    functionLinenumberEnd: 4005
    functionName: exec_stmt_assert
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errmsg_internal
    - errcode
    - ereport
    - exec_eval_expr
    - convert_value_to_string
    - exec_eval_boolean
    - errmsg
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: int exec_stmt_assert(PLpgSQL_execstate *estate, PLpgSQL_stmt_assert
      *stmt)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: makeParamList
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4062,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4076,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4090,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4103,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4140,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 80
    argCount: 5
    argNames:
    - estate
    - func
    - rsi
    - simple_eval_estate
    - simple_eval_resowner
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_function*
    - ReturnSetInfo*
    - EState*
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4159
      start: 4011
    functionDepth: 1
    functionLinenumber: 4011
    functionLinenumberEnd: 4159
    functionName: plpgsql_estate_setup
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - hash_create
    - plpgsql_create_econtext
    - makeParamList
    linkageType: ''
    returnType: void
    signature: "void plpgsql_estate_setup(PLpgSQL_execstate *estate,\n\t\t\t\t\t PLpgSQL_function
      *func,\n\t\t\t\t\t ReturnSetInfo *rsi,\n\t\t\t\t\t EState *simple_eval_estate,\n\t\t\t\t\t
      ResourceOwner simple_eval_resowner)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4173,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4182
      start: 4168
    functionDepth: 1
    functionLinenumber: 4168
    functionLinenumberEnd: 4182
    functionName: exec_eval_cleanup
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 18
    functionsReached:
    - SPI_freetuptable
    - ResetExprContext
    linkageType: ''
    returnType: void
    signature: void exec_eval_cleanup(PLpgSQL_execstate *estate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4215,1
    - Dst: SPI_prepare_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4220,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4222,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4223,1
    - Dst: SPI_keepplan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4225,1
    - Dst: exec_simple_check_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - estate
    - expr
    - cursorOptions
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4230
      start: 4205
    functionDepth: 1
    functionLinenumber: 4205
    functionLinenumberEnd: 4230
    functionName: exec_prepare_plan
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - elog
    - SPI_result_code_string
    - SPI_keepplan
    - memset
    - SPI_prepare_extended
    - exec_simple_check_plan
    linkageType: ''
    returnType: void
    signature: "void exec_prepare_plan(PLpgSQL_execstate *estate,\n\t\t\t\t  PLpgSQL_expr
      *expr, int cursorOptions)"
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4260,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4267,1
    - Dst: SPI_plan_get_plan_sources
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4267,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4269,1
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4328,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4331,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4341,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4343,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4350,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4361,1
    - Dst: SPI_execute_plan_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4388,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4399,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4400,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4411,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4412,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4417,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4428,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4433,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4434,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4435,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4439,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4440,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4441,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4445,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4446,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4462,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4463,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4464,1
    - Dst: format_expr_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4481,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4485,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4486,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4487,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4488,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4491,1
    - Dst: format_expr_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4501,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4507,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4508,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4509,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4510,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4511,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4514,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4518,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4519,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4525,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4526,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4527,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4528,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 107
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_execsql*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4532
      start: 4240
    functionDepth: 2
    functionLinenumber: 4240
    functionLinenumberEnd: 4532
    functionName: exec_stmt_execsql
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - errcode
    - exec_eval_expr
    - errhint
    - exec_assign_value
    - SPI_execute_plan_with_paramlist
    - SPI_plan_get_plan_sources
    - elog
    - foreach
    - Assert
    - errmsg
    - exec_prepare_plan
    - errdetail_internal
    - exec_set_found
    - SPI_result_code_string
    - setup_param_list
    - ereport
    - lfirst
    - SPI_freetuptable
    - format_expr_params
    - exec_move_row
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: "int exec_stmt_execsql(PLpgSQL_execstate *estate,\n\t\t\t\t  PLpgSQL_stmt_execsql
      *stmt)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4552,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4558,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4560,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4561,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4562,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4565,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4568,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4570,1
    - Dst: exec_eval_using_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4575,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4577,1
    - Dst: SPI_execute_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4581,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4615,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4616,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4617,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4618,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4623,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4624,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4625,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4629,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4630,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4631,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4635,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4636,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4652,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4653,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4654,1
    - Dst: format_preparedparamsdata
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4671,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4675,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4676,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4677,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4678,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4681,1
    - Dst: format_preparedparamsdata
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4690,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4694,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4695,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4696,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4697,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4701,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4704,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4716,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4717,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 68
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_dynexecute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4720
      start: 4540
    functionDepth: 2
    functionLinenumber: 4540
    functionLinenumberEnd: 4720
    functionName: exec_stmt_dynexecute
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - get_stmt_mcontext
    - errcode
    - exec_eval_expr
    - exec_eval_using_params
    - errhint
    - elog
    - MemoryContextReset
    - SPI_execute_extended
    - convert_value_to_string
    - errmsg
    - errdetail_internal
    - SPI_result_code_string
    - ereport
    - memset
    - SPI_freetuptable
    - exec_move_row
    - MemoryContextStrdup
    - format_preparedparamsdata
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: "int exec_stmt_dynexecute(PLpgSQL_execstate *estate,\n\t\t\t\t\t PLpgSQL_stmt_dynexecute
      *stmt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exec_dynquery_with_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4736,1
    - Dst: exec_for_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4742,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_dynfors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4750
      start: 4730
    functionDepth: 1
    functionLinenumber: 4730
    functionLinenumberEnd: 4750
    functionName: exec_stmt_dynfors
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_dynquery_with_params
    - exec_for_query
    - SPI_cursor_close
    linkageType: ''
    returnType: int
    signature: int exec_stmt_dynfors(PLpgSQL_execstate *estate, PLpgSQL_stmt_dynfors
      *stmt)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4778,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4779,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4780,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4781,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4783,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4784,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4785,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4786,1
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4804,1
    - Dst: exec_dynquery_with_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4812,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4828,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4829,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4854,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4855,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4856,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4858,1
    - Dst: exec_stmt_execsql
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4867,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4868,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4873,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4874,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4875,1
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4880,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4886,1
    - Dst: SPI_cursor_open_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4891,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4895,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4896,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4904,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4905,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4909,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4911,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_open*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4914
      start: 4757
    functionDepth: 3
    functionLinenumber: 4757
    functionLinenumberEnd: 4914
    functionName: exec_stmt_open
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - get_stmt_mcontext
    - errcode
    - assign_text_var
    - exec_stmt_execsql
    - elog
    - MemoryContextReset
    - exec_check_assignable
    - errmsg
    - exec_prepare_plan
    - TextDatumGetCString
    - SPI_result_code_string
    - ereport
    - setup_param_list
    - SPI_cursor_open_with_paramlist
    - memset
    - exec_dynquery_with_params
    - SPI_cursor_find
    - MemoryContextSwitchTo
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: int exec_stmt_open(PLpgSQL_execstate *estate, PLpgSQL_stmt_open *stmt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4939,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4940,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4941,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4944,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4944,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4945,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4946,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4948,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4950,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4951,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4952,1
    - Dst: exec_eval_integer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4960,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4963,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4964,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4965,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4967,1
    - Dst: SPI_scroll_cursor_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4978,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4988,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4990,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4992,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4993,1
    - Dst: SPI_scroll_cursor_move
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4998,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5004,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5007
      start: 4922
    functionDepth: 2
    functionLinenumber: 4922
    functionLinenumberEnd: 5007
    functionName: exec_stmt_fetch
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_eval_integer
    - exec_set_found
    - errcode
    - ereport
    - SPI_cursor_find
    - SPI_scroll_cursor_move
    - get_eval_mcontext
    - MemoryContextSwitchTo
    - errmsg
    - SPI_scroll_cursor_fetch
    - exec_eval_cleanup
    - TextDatumGetCString
    - exec_move_row
    - SPI_freetuptable
    linkageType: ''
    returnType: int
    signature: int exec_stmt_fetch(PLpgSQL_execstate *estate, PLpgSQL_stmt_fetch *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5027,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5028,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5029,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5032,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5032,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5033,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5034,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5036,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5038,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5039,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5040,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5046,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_close*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5049
      start: 5013
    functionDepth: 1
    functionLinenumber: 5013
    functionLinenumberEnd: 5049
    functionName: exec_stmt_close
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errcode
    - ereport
    - SPI_cursor_find
    - get_eval_mcontext
    - MemoryContextSwitchTo
    - SPI_cursor_close
    - errmsg
    - TextDatumGetCString
    linkageType: ''
    returnType: int
    signature: int exec_stmt_close(PLpgSQL_execstate *estate, PLpgSQL_stmt_close *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SPI_commit_and_chain
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5060,1
    - Dst: SPI_commit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5062,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5070,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_commit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5073
      start: 5056
    functionDepth: 1
    functionLinenumber: 5056
    functionLinenumberEnd: 5073
    functionName: exec_stmt_commit
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - SPI_commit
    - SPI_commit_and_chain
    - plpgsql_create_econtext
    linkageType: ''
    returnType: int
    signature: int exec_stmt_commit(PLpgSQL_execstate *estate, PLpgSQL_stmt_commit
      *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SPI_rollback_and_chain
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5084,1
    - Dst: SPI_rollback
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5086,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5094,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_rollback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5097
      start: 5080
    functionDepth: 1
    functionLinenumber: 5080
    functionLinenumberEnd: 5097
    functionName: exec_stmt_rollback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - SPI_rollback
    - SPI_rollback_and_chain
    - plpgsql_create_econtext
    linkageType: ''
    returnType: int
    signature: int exec_stmt_rollback(PLpgSQL_execstate *estate, PLpgSQL_stmt_rollback
      *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5116,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5118,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5119,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - estate
    - target
    - expr
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_datum*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5121
      start: 5103
    functionDepth: 2
    functionLinenumber: 5103
    functionLinenumberEnd: 5121
    functionName: exec_assign_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_prepare_plan
    - exec_eval_cleanup
    - exec_assign_value
    - exec_eval_expr
    linkageType: ''
    returnType: void
    signature: "void exec_assign_expr(PLpgSQL_execstate *estate, PLpgSQL_datum *target,\n\t\t\t\t
      PLpgSQL_expr *expr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5141,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5141,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5143,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5145,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5146,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5148,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - estate
    - target
    - str
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_datum*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5150
      start: 5133
    functionDepth: 1
    functionLinenumber: 5133
    functionLinenumberEnd: 5150
    functionName: exec_assign_c_string
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - cstring_to_text
    - get_eval_mcontext
    - MemoryContextSwitchTo
    - exec_assign_value
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: "void exec_assign_c_string(PLpgSQL_execstate *estate, PLpgSQL_datum
      *target,\n\t\t\t\t\t const char *str)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5178,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5187,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5188,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5189,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5210,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5210,1
    - Dst: expand_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5213,1
    - Dst: datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5220,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5239,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5256,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5262,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5263,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5264,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5265,1
    - Dst: exec_move_row_from_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5266,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5282,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5283,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5284,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5288,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5294,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5295,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5296,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5297,1
    - Dst: exec_move_row_from_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5298,1
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5324,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5332,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5334,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5337,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5338,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5339,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5346,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5347,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5348,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5352,1
    - Dst: expanded_record_set_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5361,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5367,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 62
    argCount: 6
    argNames:
    - estate
    - target
    - value
    - isNull
    - valtype
    - valtypmod
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_datum*
    - Datum
    - bool
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5369
      start: 5161
    functionDepth: 1
    functionLinenumber: 5161
    functionLinenumberEnd: 5369
    functionName: exec_assign_value
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 7
    functionsReached:
    - elog
    - type_is_rowtype
    - expanded_record_set_field
    - errcode
    - exec_cast_value
    - assign_simple_var
    - expanded_record_lookup_field
    - ereport
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - instantiate_empty_record_variable
    - errmsg
    - expand_array
    - unlikely
    - exec_move_row
    - exec_move_row_from_datum
    - datumTransfer
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void exec_assign_value(PLpgSQL_execstate *estate,\n\t\t\t\t  PLpgSQL_datum
      *target,\n\t\t\t\t  Datum value, bool isNull,\n\t\t\t\t  Oid valtype, int32
      valtypmod)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_fulfill_promise
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5402,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5424,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5426,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5427,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5427,1
    - Dst: make_tuple_from_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5428,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5430,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5433,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5435,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5454,1
    - Dst: ExpandedRecordGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5462,1
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5497,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5505,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5507,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5510,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5511,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5512,1
    - Dst: expanded_record_get_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5522,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5529,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 71
    argCount: 6
    argNames:
    - estate
    - datum
    - typeid
    - typetypmod
    - value
    - isnull
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_datum*
    - Oid*
    - int32*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5531
      start: 5388
    functionDepth: 2
    functionLinenumber: 5388
    functionLinenumberEnd: 5531
    functionName: exec_eval_datum
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - elog
    - plpgsql_fulfill_promise
    - make_tuple_from_row
    - ExpandedRecordIsEmpty
    - errcode
    - ExpandedRecordGetDatum
    - ereport
    - expanded_record_get_field
    - get_eval_mcontext
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - unlikely
    - instantiate_empty_record_variable
    - errmsg
    - BlessTupleDesc
    - expanded_record_lookup_field
    linkageType: ''
    returnType: void
    signature: "void exec_eval_datum(PLpgSQL_execstate *estate,\n\t\t\t\tPLpgSQL_datum
      *datum,\n\t\t\t\tOid *typeid,\n\t\t\t\tint32 *typetypmod,\n\t\t\t\tDatum *value,\n\t\t\t\tbool
      *isnull)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5586,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5592,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5594,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5597,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5598,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5599,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5609,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - estate
    - datum
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5615
      start: 5539
    functionDepth: 1
    functionLinenumber: 5539
    functionLinenumberEnd: 5615
    functionName: plpgsql_exec_get_datum_type
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - elog
    - errcode
    - ereport
    - unlikely
    - instantiate_empty_record_variable
    - errmsg
    - expanded_record_lookup_field
    linkageType: ''
    returnType: Oid
    signature: "Oid plpgsql_exec_get_datum_type(PLpgSQL_execstate *estate,\n\t\t\t\t\t\t\tPLpgSQL_datum
      *datum)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5677,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5683,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5685,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5688,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5689,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5690,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5702,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 5
    argNames:
    - estate
    - datum
    - typeId
    - typMod
    - collation
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_datum*
    - Oid*
    - int32*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5708
      start: 5624
    functionDepth: 1
    functionLinenumber: 5624
    functionLinenumberEnd: 5708
    functionName: plpgsql_exec_get_datum_type_info
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - elog
    - errcode
    - ereport
    - unlikely
    - instantiate_empty_record_variable
    - errmsg
    - expanded_record_lookup_field
    linkageType: ''
    returnType: void
    signature: "void plpgsql_exec_get_datum_type_info(PLpgSQL_execstate *estate,\n\t\t\t\t\t\t\t\t
      PLpgSQL_datum *datum,\n\t\t\t\t\t\t\t\t Oid *typeId, int32 *typMod, Oid *collation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5728,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5729,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - estate
    - expr
    - isNull
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5733
      start: 5719
    functionDepth: 1
    functionLinenumber: 5719
    functionLinenumberEnd: 5733
    functionName: exec_eval_integer
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - DatumGetInt32
    - exec_cast_value
    - exec_eval_expr
    linkageType: ''
    returnType: int
    signature: "int exec_eval_integer(PLpgSQL_execstate *estate,\n\t\t\t\t  PLpgSQL_expr
      *expr,\n\t\t\t\t  bool *isNull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5751,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5752,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - estate
    - expr
    - isNull
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5756
      start: 5742
    functionDepth: 1
    functionLinenumber: 5742
    functionLinenumberEnd: 5756
    functionName: exec_eval_boolean
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 5
    functionsReached:
    - exec_cast_value
    - exec_eval_expr
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool exec_eval_boolean(PLpgSQL_execstate *estate,\n\t\t\t\t  PLpgSQL_expr
      *expr,\n\t\t\t\t  bool *isNull)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5780,1
    - Dst: exec_eval_simple_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5786,1
    - Dst: exec_run_select
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5793,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5795,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5796,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5797,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5798,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5804,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5805,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5806,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5810,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5815,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5832,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5833,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5834,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5835,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5840,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - estate
    - expr
    - isNull
    - rettype
    - rettypmod
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - bool*
    - Oid*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5842
      start: 5765
    functionDepth: 2
    functionLinenumber: 5765
    functionLinenumberEnd: 5842
    functionName: exec_eval_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 13
    functionsReached:
    - errmsg_plural
    - errcode
    - errcontext
    - ereport
    - exec_eval_simple_expr
    - errmsg
    - exec_prepare_plan
    - TupleDescAttr
    - SPI_getbinval
    - exec_run_select
    linkageType: ''
    returnType: Datum
    signature: "Datum exec_eval_expr(PLpgSQL_execstate *estate,\n\t\t\t   PLpgSQL_expr
      *expr,\n\t\t\t   bool *isNull,\n\t\t\t   Oid *rettype,\n\t\t\t   int32 *rettypmod)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5877,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5883,1
    - Dst: SPI_cursor_open_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5890,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5894,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5895,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5896,1
    - Dst: SPI_execute_plan_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5903,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5912,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5913,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5914,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5915,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5917,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5918,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5919,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5920,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5924,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - estate
    - expr
    - maxtuples
    - portalP
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - long
    - Portal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5929
      start: 5853
    functionDepth: 2
    functionLinenumber: 5853
    functionLinenumberEnd: 5929
    functionName: exec_run_select
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - elog
    - SPI_result_code_string
    - errcode
    - Assert
    - errcontext
    - setup_param_list
    - ereport
    - SPI_cursor_open_with_paramlist
    - errmsg
    - exec_prepare_plan
    - exec_eval_cleanup
    - SPI_execute_plan_with_paramlist
    linkageType: ''
    returnType: int
    signature: "int exec_run_select(PLpgSQL_execstate *estate,\n\t\t\t\tPLpgSQL_expr
      *expr, long maxtuples, Portal *portalP)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PinPortal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5956,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5974,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5984,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5985,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6019,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6029,1
    - Dst: compatible_tupdescs
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6042,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6043,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6049,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6051,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6056,1
    - Dst: LOOP_RC_PROCESSING
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6058,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6061,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6066,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6076,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6078,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6086,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 4
    argNames:
    - estate
    - stmt
    - portal
    - prefetch_ok
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_forq*
    - Portal
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6089
      start: 5937
    functionDepth: 4
    functionLinenumber: 5937
    functionLinenumberEnd: 6089
    functionName: exec_for_query
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - expanded_record_set_tuple
    - exec_stmts
    - expanded_record_get_tupdesc
    - PinPortal
    - UnpinPortal
    - exec_set_found
    - compatible_tupdescs
    - SPI_cursor_fetch
    - exec_eval_cleanup
    - exec_move_row
    - SPI_freetuptable
    - LOOP_RC_PROCESSING
    linkageType: ''
    returnType: int
    signature: "int exec_for_query(PLpgSQL_execstate *estate, PLpgSQL_stmt_forq *stmt,\n\t\t\t
      \  Portal portal, bool prefetch_ok)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6143,1
    - Dst: EnsurePortalSnapshotExists
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6154,1
    - Dst: likely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6161,1
    - Dst: CachedPlanIsSimplyValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6161,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6183,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6200,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6200,1
    - Dst: SPI_plan_get_cached_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6201,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6202,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6210,1
    - Dst: exec_is_simple_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6220,1
    - Dst: CachedPlanAllowsSimpleValidityCheck
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6221,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6232,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6240,1
    - Dst: exec_save_simple_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6243,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6273,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6275,1
    - Dst: ExecInitExprWithParams
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6277,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6281,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6296,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6296,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6300,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6301,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6301,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6312,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6324,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6326,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 58
    argCount: 6
    argNames:
    - estate
    - expr
    - result
    - isNull
    - rettype
    - rettypmod
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - Datum*
    - bool*
    - Oid*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6332
      start: 6119
    functionDepth: 1
    functionLinenumber: 6119
    functionLinenumberEnd: 6332
    functionName: exec_eval_simple_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - PopActiveSnapshot
    - exec_save_simple_expr
    - Assert
    - exec_is_simple_query
    - CachedPlanIsSimplyValid
    - CommandCounterIncrement
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - get_eval_mcontext
    - SPI_plan_get_cached_plan
    - CachedPlanAllowsSimpleValidityCheck
    - unlikely
    - likely
    - GetTransactionSnapshot
    - PushActiveSnapshot
    - ExecInitExprWithParams
    - EnsurePortalSnapshotExists
    - ReleaseCachedPlan
    linkageType: ''
    returnType: bool
    signature: "bool exec_eval_simple_expr(PLpgSQL_execstate *estate,\n\t\t\t\t\t
      \ PLpgSQL_expr *expr,\n\t\t\t\t\t  Datum *result,\n\t\t\t\t\t  bool *isNull,\n\t\t\t\t\t
      \ Oid *rettype,\n\t\t\t\t\t  int32 *rettypmod)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6359,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - estate
    - expr
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6386
      start: 6350
    functionDepth: 1
    functionLinenumber: 6350
    functionLinenumberEnd: 6386
    functionName: setup_param_list
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 6
    functionsReached:
    - Assert
    - bms_is_empty
    linkageType: ''
    returnType: ParamListInfo
    signature: ParamListInfo setup_param_list(PLpgSQL_execstate *estate, PLpgSQL_expr
      *expr)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6412,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6417,1
    - Dst: bms_is_member
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6429,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6470,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6472,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6499,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6511,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6515,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 4
    argNames:
    - params
    - paramid
    - speculative
    - prm
    argTypes:
    - ParamListInfo
    - int
    - bool
    - ParamExternData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6520
      start: 6398
    functionDepth: 3
    functionLinenumber: 6398
    functionLinenumberEnd: 6520
    functionName: plpgsql_param_fetch
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_is_member
    - unlikely
    - MakeExpandedObjectReadOnly
    - expanded_record_lookup_field
    - exec_eval_datum
    linkageType: ''
    returnType: ParamExternData
    signature: "ParamExternData *\nplpgsql_param_fetch(ParamListInfo params,\n\t\t\t\t\tint
      paramid, bool speculative,\n\t\t\t\t\tParamExternData *prm)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6542,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6603,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 5
    argNames:
    - params
    - param
    - state
    - resv
    - resnull
    argTypes:
    - ParamListInfo
    - Param*
    - ExprState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6604
      start: 6525
    functionDepth: 1
    functionLinenumber: 6525
    functionLinenumberEnd: 6604
    functionName: plpgsql_param_compile
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExprEvalPushStep
    linkageType: ''
    returnType: void
    signature: "void plpgsql_param_compile(ParamListInfo params, Param *param,\n\t\t\t\t\t
      \ ExprState *state,\n\t\t\t\t\t  Datum *resv, bool *resnull)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6631,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6635,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6642,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6642,1
    - Dst: exec_check_rw_parameter
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6652,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6662,1
    - Dst: plpgsql_param_eval_var_ro
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6667,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6671,1
    - Dst: plpgsql_param_eval_var_transfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6674,1
    - Dst: plpgsql_param_eval_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6681,1
    - Dst: plpgsql_param_eval_var_ro
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6687,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6703,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6704
      start: 6619
    functionDepth: 1
    functionLinenumber: 6619
    functionLinenumberEnd: 6704
    functionName: plpgsql_param_eval_var_check
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - plpgsql_param_eval_var
    - plpgsql_param_eval_var_transfer
    - Assert
    - exec_check_rw_parameter
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - plpgsql_param_eval_var_ro
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void plpgsql_param_eval_var_check(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t\t\t
      ExprContext *econtext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6728,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6732,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6742,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6742,1
    - Dst: TransferExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6744,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6745,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6763,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6764
      start: 6716
    functionDepth: 1
    functionLinenumber: 6716
    functionLinenumberEnd: 6764
    functionName: plpgsql_param_eval_var_transfer
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_eval_mcontext
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - TransferExpandedObject
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void plpgsql_param_eval_var_transfer(ExprState *state, ExprEvalStep
      *op,\n\t\t\t\t\t\t\t\tExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6784,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6788,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6795,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6796
      start: 6772
    functionDepth: 1
    functionLinenumber: 6772
    functionLinenumberEnd: 6796
    functionName: plpgsql_param_eval_var
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void plpgsql_param_eval_var(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t
      \  ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6816,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6820,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6826,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6833
      start: 6804
    functionDepth: 1
    functionLinenumber: 6804
    functionLinenumberEnd: 6833
    functionName: plpgsql_param_eval_var_ro
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - Assert
    - MakeExpandedObjectReadOnly
    linkageType: ''
    returnType: void
    signature: "void plpgsql_param_eval_var_ro(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t\t
      \ ExprContext *econtext)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6855,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6859,1
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6872,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6880,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6882,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6885,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6886,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6887,1
    - Dst: expanded_record_get_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6893,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6898,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6899,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6900,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6901,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6903,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6904,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6905
      start: 6841
    functionDepth: 1
    functionLinenumber: 6841
    functionLinenumberEnd: 6905
    functionName: plpgsql_param_eval_recfield
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - Assert
    - ereport
    - expanded_record_get_field
    - unlikely
    - instantiate_empty_record_variable
    - errmsg
    - expanded_record_lookup_field
    linkageType: ''
    returnType: void
    signature: "void plpgsql_param_eval_recfield(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t\t\tExprContext
      *econtext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6927,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6933,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6938,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6939,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6940,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6941,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6943,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6944,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6945
      start: 6913
    functionDepth: 3
    functionLinenumber: 6913
    functionLinenumberEnd: 6945
    functionName: plpgsql_param_eval_generic
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - Assert
    - ereport
    - unlikely
    - errmsg
    - exec_eval_datum
    linkageType: ''
    returnType: void
    signature: "void plpgsql_param_eval_generic(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t\t
      \  ExprContext *econtext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6967,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6973,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6978,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6979,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6980,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6981,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6983,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6984,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6987,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6990
      start: 6953
    functionDepth: 3
    functionLinenumber: 6953
    functionLinenumberEnd: 6990
    functionName: plpgsql_param_eval_generic_ro
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - Assert
    - ereport
    - unlikely
    - errmsg
    - MakeExpandedObjectReadOnly
    - exec_eval_datum
    linkageType: ''
    returnType: void
    signature: "void plpgsql_param_eval_generic_ro(ExprState *state, ExprEvalStep
      *op,\n\t\t\t\t\t\t\t  ExprContext *econtext)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: make_expanded_record_for_rec
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7034,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7036,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7037,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7043,1
    - Dst: ExpandedRecordGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7043,1
    - Dst: make_expanded_record_for_rec
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7052,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7067,1
    - Dst: compatible_tupdescs
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7068,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7068,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7070,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7073,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7078,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7082,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7092,1
    - Dst: lengthof
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7105,1
    - Dst: eval_mcontext_alloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7114,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7120,1
    - Dst: exec_move_row_from_fields
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7122,1
    - Dst: exec_move_row_from_fields
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7130,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 4
    argNames:
    - estate
    - target
    - tup
    - tupdesc
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_variable*
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7133
      start: 7003
    functionDepth: 1
    functionLinenumber: 7003
    functionLinenumberEnd: 7133
    functionName: exec_move_row
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 8
    functionsReached:
    - expanded_record_set_tuple
    - expanded_record_get_tupdesc
    - assign_record_var
    - eval_mcontext_alloc
    - HeapTupleIsValid
    - compatible_tupdescs
    - heap_deform_tuple
    - exec_move_row_from_fields
    - DeleteExpandedObject
    - ExpandedRecordGetDatum
    - deconstruct_expanded_record
    - lengthof
    - make_expanded_record_for_rec
    linkageType: ''
    returnType: void
    signature: "void exec_move_row(PLpgSQL_execstate *estate,\n\t\t\t  PLpgSQL_variable
      *target,\n\t\t\t  HeapTuple tup, TupleDesc tupdesc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7146,1
    - Dst: typenameTypeIdAndMod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7168,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7174,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7178,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7186,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7187,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7188,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7189,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - rec
    argTypes:
    - PLpgSQL_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7203
      start: 7138
    functionDepth: 1
    functionLinenumber: 7138
    functionLinenumberEnd: 7203
    functionName: revalidate_rectypeid
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - Assert
    - ereport
    - errmsg
    - typenameTypeIdAndMod
    - lookup_type_cache
    linkageType: ''
    returnType: void
    signature: void revalidate_rectypeid(PLpgSQL_rec *rec)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7225,1
    - Dst: revalidate_rectypeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7232,1
    - Dst: make_expanded_record_from_exprecord
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7239,1
    - Dst: make_expanded_record_from_typeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7242,1
    - Dst: ExpandedRecordIsDomain
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7252,1
    - Dst: make_expanded_record_from_exprecord
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7253,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7258,1
    - Dst: make_expanded_record_from_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7259,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - estate
    - rec
    - srctupdesc
    - srcerh
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_rec*
    - TupleDesc
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7265
      start: 7218
    functionDepth: 2
    functionLinenumber: 7218
    functionLinenumberEnd: 7265
    functionName: make_expanded_record_for_rec
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - make_expanded_record_from_tupdesc
    - revalidate_rectypeid
    - expanded_record_get_tupdesc
    - get_eval_mcontext
    - ExpandedRecordIsDomain
    - make_expanded_record_from_exprecord
    - make_expanded_record_from_typeid
    linkageType: ''
    returnType: ExpandedRecordHeader
    signature: "ExpandedRecordHeader *\nmake_expanded_record_for_rec(PLpgSQL_execstate
      *estate,\n\t\t\t\t\t\t\t PLpgSQL_rec *rec,\n\t\t\t\t\t\t\t TupleDesc srctupdesc,\n\t\t\t\t\t\t\t
      ExpandedRecordHeader *srcerh)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7313,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7315,1
    - Dst: lengthof
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7337,1
    - Dst: eval_mcontext_alloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7346,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7356,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7369,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7376,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7377,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7390,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7391,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7392,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7394,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7398,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7402,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7420,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7424,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7425,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7426,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7428,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7432,1
    - Dst: expanded_record_set_fields
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7440,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7443,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7449,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7478,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7485,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7486,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7498,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7499,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7500,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7502,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7506,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7509,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7520,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7524,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7525,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7526,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7528,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7532,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7538,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 88
    argCount: 6
    argNames:
    - estate
    - target
    - newerh
    - values
    - nulls
    - tupdesc
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_variable*
    - ExpandedRecordHeader*
    - Datum*
    - bool*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7539
      start: 7281
    functionDepth: 2
    functionLinenumber: 7281
    functionLinenumberEnd: 7539
    functionName: exec_move_row_from_fields
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - elog
    - expanded_record_set_fields
    - expanded_record_get_tupdesc
    - assign_record_var
    - eval_mcontext_alloc
    - Assert
    - errcode
    - exec_cast_value
    - ereport
    - errhint
    - exec_assign_value
    - errmsg
    - errdetail
    - TupleDescAttr
    - lengthof
    linkageType: ''
    returnType: void
    signature: "void exec_move_row_from_fields(PLpgSQL_execstate *estate,\n\t\t\t\t\t\t
      \ PLpgSQL_variable *target,\n\t\t\t\t\t\t  ExpandedRecordHeader *newerh,\n\t\t\t\t\t\t
      \ Datum *values, bool *nulls,\n\t\t\t\t\t\t  TupleDesc tupdesc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7558,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7559,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - src_tupdesc
    - dst_tupdesc
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7580
      start: 7547
    functionDepth: 1
    functionLinenumber: 7547
    functionLinenumberEnd: 7580
    functionName: compatible_tupdescs
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - TupleDescAttr
    linkageType: ''
    returnType: bool
    signature: bool compatible_tupdescs(TupleDesc src_tupdesc, TupleDesc dst_tupdesc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: eval_mcontext_alloc0
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7605,1
    - Dst: eval_mcontext_alloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7606,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7613,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7619,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7622,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7627,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - estate
    - row
    - tupdesc
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_row*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7630
      start: 7591
    functionDepth: 3
    functionLinenumber: 7591
    functionLinenumberEnd: 7630
    functionName: make_tuple_from_row
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - eval_mcontext_alloc
    - heap_form_tuple
    - TupleDescAttr
    - exec_eval_datum
    - eval_mcontext_alloc0
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple make_tuple_from_row(PLpgSQL_execstate *estate,\n\t\t\t\t\tPLpgSQL_row
      *row,\n\t\t\t\t\tTupleDesc tupdesc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7654,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7657,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7658,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7663,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7664,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - value
    - tmptup
    argTypes:
    - Datum
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7666
      start: 7646
    functionDepth: 1
    functionLinenumber: 7646
    functionLinenumberEnd: 7666
    functionName: deconstruct_composite_datum
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetTypeId
    - lookup_rowtype_tupdesc
    - ItemPointerSetInvalid
    - DatumGetHeapTupleHeader
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc deconstruct_composite_datum(Datum value, HeapTupleData *tmptup)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7683,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7683,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7685,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7688,1
    - Dst: revalidate_rectypeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7708,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7718,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7718,1
    - Dst: ExpandedRecordIsDomain
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7721,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7723,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7746,1
    - Dst: make_expanded_record_for_rec
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7756,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7769,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7771,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7779,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7782,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7783,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7794,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7796,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7797,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7805,1
    - Dst: exec_move_row_from_fields
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7806,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7808,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7825,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7825,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7827,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7828,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7831,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7832,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7837,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7838,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7860,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7874,1
    - Dst: make_expanded_record_from_typeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7876,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7878,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7880,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7894,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7897,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7900,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 59
    argCount: 3
    argNames:
    - estate
    - target
    - value
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_variable*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7902
      start: 7677
    functionDepth: 3
    functionLinenumber: 7677
    functionLinenumberEnd: 7902
    functionName: exec_move_row_from_datum
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - revalidate_rectypeid
    - expanded_record_get_tupdesc
    - exec_move_row_from_fields
    - make_expanded_record_from_typeid
    - make_expanded_record_for_rec
    - Assert
    - HeapTupleHeaderGetTypMod
    - deconstruct_expanded_record
    - DatumGetHeapTupleHeader
    - VARATT_IS_EXTERNAL_EXPANDED
    - expanded_record_set_tuple
    - ExpandedRecordIsEmpty
    - HeapTupleHeaderGetTypeId
    - get_eval_mcontext
    - ExpandedRecordIsDomain
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - DatumGetEOHP
    - exec_move_row
    - assign_record_var
    - MemoryContextSwitchTo
    - lookup_rowtype_tupdesc
    - ItemPointerSetInvalid
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void exec_move_row_from_datum(PLpgSQL_execstate *estate,\n\t\t\t\t\t\t
      PLpgSQL_variable *target,\n\t\t\t\t\t\t Datum value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7913,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7917,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7918,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7919,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7920,1
    - Dst: revalidate_rectypeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7923,1
    - Dst: make_expanded_record_from_typeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - rec
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7928
      start: 7910
    functionDepth: 2
    functionLinenumber: 7910
    functionLinenumberEnd: 7928
    functionName: instantiate_empty_record_variable
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 6
    functionsReached:
    - revalidate_rectypeid
    - errcode
    - Assert
    - ereport
    - errmsg
    - errdetail
    - make_expanded_record_from_typeid
    linkageType: ''
    returnType: void
    signature: void instantiate_empty_record_variable(PLpgSQL_execstate *estate, PLpgSQL_rec
      *rec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7953,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7953,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7954,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7955,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - estate
    - value
    - valtype
    argTypes:
    - PLpgSQL_execstate*
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7959
      start: 7945
    functionDepth: 1
    functionLinenumber: 7945
    functionLinenumberEnd: 7959
    functionName: convert_value_to_string
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 4
    functionsReached:
    - OidOutputFunctionCall
    - get_eval_mcontext
    - getTypeOutputInfo
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: char
    signature: 'char *

      convert_value_to_string(PLpgSQL_execstate *estate, Datum value, Oid valtype)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: do_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7987,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 7
    argNames:
    - estate
    - value
    - isnull
    - valtype
    - valtypmod
    - reqtype
    - reqtypmod
    argTypes:
    - PLpgSQL_execstate*
    - Datum
    - bool*
    - Oid
    - int32
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7992
      start: 7974
    functionDepth: 1
    functionLinenumber: 7974
    functionLinenumberEnd: 7992
    functionName: exec_cast_value
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 7
    functionsReached:
    - do_cast_value
    linkageType: ''
    returnType: Datum
    signature: "Datum exec_cast_value(PLpgSQL_execstate *estate,\n\t\t\t\tDatum value,
      bool *isnull,\n\t\t\t\tOid valtype, int32 valtypmod,\n\t\t\t\tOid reqtype, int32
      reqtypmod)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_cast_hashentry
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8006,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8014,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8014,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8021,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8026,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 7
    argNames:
    - estate
    - value
    - isnull
    - valtype
    - valtypmod
    - reqtype
    - reqtypmod
    argTypes:
    - PLpgSQL_execstate*
    - Datum
    - bool*
    - Oid
    - int32
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8030
      start: 7998
    functionDepth: 1
    functionLinenumber: 7998
    functionLinenumberEnd: 8030
    functionName: do_cast_value
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - get_eval_mcontext
    - get_cast_hashentry
    - ExecEvalExpr
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: Datum
    signature: "Datum do_cast_value(PLpgSQL_execstate *estate,\n\t\t\t  Datum value,
      bool *isnull,\n\t\t\t  Oid valtype, int32 valtypmod,\n\t\t\t  Oid reqtype, int32
      reqtypmod)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8059,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8065,1
    - Dst: FreeCachedExpression
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8099,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8108,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8108,1
    - Dst: makeNode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8114,1
    - Dst: get_typcollation
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8117,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8137,1
    - Dst: makeNode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8153,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8162,1
    - Dst: GetCachedExpression
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8173,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8177,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8190,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8212,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8213,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8216,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 62
    argCount: 5
    argNames:
    - estate
    - srctype
    - srctypmod
    - dsttype
    - dsttypmod
    argTypes:
    - PLpgSQL_execstate*
    - Oid
    - int32
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8220
      start: 8042
    functionDepth: 1
    functionLinenumber: 8042
    functionLinenumberEnd: 8220
    functionName: get_cast_hashentry
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - hash_search
    - coerce_to_target_type
    - GetCachedExpression
    - get_typcollation
    - makeNode
    - get_eval_mcontext
    - MemoryContextSwitchTo
    - ExecInitExpr
    - IsA
    - FreeCachedExpression
    linkageType: ''
    returnType: plpgsql_CastHashEntry
    signature: "plpgsql_CastHashEntry *\nget_cast_hashentry(PLpgSQL_execstate *estate,\n\t\t\t\t
      \  Oid srctype, int32 srctypmod,\n\t\t\t\t   Oid dsttype, int32 dsttypmod)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: exec_is_simple_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8254,1
    - Dst: SPI_plan_get_plan_sources
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8258,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8259,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8266,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8266,1
    - Dst: SPI_plan_get_cached_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8267,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8268,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8271,1
    - Dst: CachedPlanAllowsSimpleValidityCheck
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8279,1
    - Dst: exec_save_simple_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8288,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - estate
    - expr
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8296
      start: 8233
    functionDepth: 1
    functionLinenumber: 8233
    functionLinenumberEnd: 8296
    functionName: exec_simple_check_plan
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - exec_save_simple_expr
    - Assert
    - exec_is_simple_query
    - linitial
    - get_eval_mcontext
    - MemoryContextSwitchTo
    - SPI_plan_get_cached_plan
    - CachedPlanAllowsSimpleValidityCheck
    - SPI_plan_get_plan_sources
    - ReleaseCachedPlan
    linkageType: ''
    returnType: void
    signature: void exec_simple_check_plan(PLpgSQL_execstate *estate, PLpgSQL_expr
      *expr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SPI_plan_get_plan_sources
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8315,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8316,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8318,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8323,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8325,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8330,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8364,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 19
    argCount: 1
    argNames:
    - expr
    argTypes:
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8371
      start: 8305
    functionDepth: 1
    functionLinenumber: 8305
    functionLinenumberEnd: 8371
    functionName: exec_is_simple_query
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - list_length
    - linitial
    - IsA
    - SPI_plan_get_plan_sources
    linkageType: ''
    returnType: bool
    signature: bool exec_is_simple_query(PLpgSQL_expr *expr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8389,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8389,1
    - Dst: linitial_node
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8390,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8391,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8406,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8406,1
    - Dst: linitial_node
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8407,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8409,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8411,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8418,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8418,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8420,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8425,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8428,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8428,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8429,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8434,1
    - Dst: nodeTag
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8435,1
    - Dst: exprType
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8447,1
    - Dst: exprTypmod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8448,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8450,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 2
    argNames:
    - expr
    - cplan
    argTypes:
    - PLpgSQL_expr*
    - CachedPlan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8451
      start: 8376
    functionDepth: 1
    functionLinenumber: 8376
    functionLinenumberEnd: 8451
    functionName: exec_save_simple_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - elog
    - exprTypmod
    - linitial_node
    - Assert
    - exprType
    - contain_mutable_functions
    - list_length
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void exec_save_simple_expr(PLpgSQL_expr *expr, CachedPlan *cplan)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8514,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8517,1
    - Dst: count_param_references
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8533,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8536,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8556,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8558,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8565,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8572,1
    - Dst: get_typsubscript
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8576,1
    - Dst: list_make2
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8584,1
    - Dst: get_func_support
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8594,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8595,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8606,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8606,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8607,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8613,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8613,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8614,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8615,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 2
    argNames:
    - expr
    - paramid
    argTypes:
    - PLpgSQL_expr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8622
      start: 8501
    functionDepth: 1
    functionLinenumber: 8501
    functionLinenumberEnd: 8622
    functionName: exec_check_rw_parameter
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - IsA
    - Assert
    - get_func_support
    - list_make2
    - OidFunctionCall1
    - PointerGetDatum
    - OidIsValid
    - count_param_references
    - get_typsubscript
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void exec_check_rw_parameter(PLpgSQL_expr *expr, int paramid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8636,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8650,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - count_param_references_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8651
      start: 8631
    functionDepth: 1
    functionLinenumber: 8631
    functionLinenumberEnd: 8651
    functionName: count_param_references
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool count_param_references(Node *node, count_param_references_context
      *context)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8663,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8671,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8672,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8673,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8681,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8685,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - estate
    - dno
    argTypes:
    - PLpgSQL_execstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8688
      start: 8658
    functionDepth: 1
    functionLinenumber: 8658
    functionLinenumberEnd: 8688
    functionName: exec_check_assignable
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 4
    functionsReached:
    - elog
    - errcode
    - Assert
    - exec_check_assignable
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void exec_check_assignable(PLpgSQL_execstate *estate, int dno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_assume
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8707,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8709,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - estate
    - state
    argTypes:
    - PLpgSQL_execstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8710
      start: 8694
    functionDepth: 1
    functionLinenumber: 8694
    functionLinenumberEnd: 8710
    functionName: exec_set_found
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 9
    functionsReached:
    - assign_simple_var
    - BoolGetDatum
    - pg_assume
    linkageType: ''
    returnType: void
    signature: void exec_set_found(PLpgSQL_execstate *estate, bool state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8743,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8744,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8745,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8757,1
    - Dst: CreateExprContext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8765,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8772,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8776,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8780
      start: 8719
    functionDepth: 1
    functionLinenumber: 8719
    functionLinenumberEnd: 8780
    functionName: plpgsql_create_econtext
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 5
    functionsReached:
    - GetCurrentSubTransactionId
    - CreateExprContext
    - CreateExecutorState
    - MemoryContextAlloc
    - MemoryContextSwitchTo
    - ResourceOwnerCreate
    linkageType: ''
    returnType: void
    signature: void plpgsql_create_econtext(PLpgSQL_execstate *estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8793,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8794,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8797,1
    - Dst: FreeExprContext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8802
      start: 8788
    functionDepth: 1
    functionLinenumber: 8788
    functionLinenumberEnd: 8802
    functionName: plpgsql_destroy_econtext
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - Assert
    - pfree
    - FreeExprContext
    linkageType: ''
    returnType: void
    signature: void plpgsql_destroy_econtext(PLpgSQL_execstate *estate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FreeExecutorState
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8830,1
    - Dst: ReleaseAllPlanCacheRefsInOwner
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8833,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - event
    - arg
    argTypes:
    - XactEvent
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8843
      start: 8810
    functionDepth: 1
    functionLinenumber: 8810
    functionLinenumberEnd: 8843
    functionName: plpgsql_xact_cb
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - FreeExecutorState
    - ReleaseAllPlanCacheRefsInOwner
    linkageType: ''
    returnType: void
    signature: void plpgsql_xact_cb(XactEvent event, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FreeExprContext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8863,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8866,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - event
    - mySubid
    - parentSubid
    - arg
    argTypes:
    - SubXactEvent
    - SubTransactionId
    - SubTransactionId
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8870
      start: 8852
    functionDepth: 1
    functionLinenumber: 8852
    functionLinenumberEnd: 8870
    functionName: plpgsql_subxact_cb
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - pfree
    - FreeExprContext
    linkageType: ''
    returnType: void
    signature: "void plpgsql_subxact_cb(SubXactEvent event, SubTransactionId mySubid,\n\t\t\t\t
      \  SubTransactionId parentSubid, void *arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8883,1
    - Dst: VARATT_IS_EXTERNAL_NON_EXPANDED
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8897,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8897,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8908,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8908,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8909,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8909,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8909,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8910,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8913,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8913,1
    - Dst: datumCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8915,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8923,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8926,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8928,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8928,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 5
    argNames:
    - estate
    - var
    - newvalue
    - isnull
    - freeable
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_var*
    - Datum
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8941
      start: 8879
    functionDepth: 1
    functionLinenumber: 8879
    functionLinenumberEnd: 8941
    functionName: assign_simple_var
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 8
    functionsReached:
    - detoast_external_attr
    - Assert
    - pfree
    - datumCopy
    - DeleteExpandedObject
    - DatumIsReadWriteExpandedObject
    - get_eval_mcontext
    - MemoryContextSwitchTo
    - PointerGetDatum
    - VARATT_IS_EXTERNAL_NON_EXPANDED
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void assign_simple_var(PLpgSQL_execstate *estate, PLpgSQL_var *var,\n\t\t\t\t
      \ Datum newvalue, bool isnull, bool freeable)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8949,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - estate
    - var
    - str
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_var*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8950
      start: 8946
    functionDepth: 2
    functionLinenumber: 8946
    functionLinenumberEnd: 8950
    functionName: assign_text_var
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 4
    functionsReached:
    - assign_simple_var
    - CStringGetTextDatum
    linkageType: ''
    returnType: void
    signature: void assign_text_var(PLpgSQL_execstate *estate, PLpgSQL_var *var, const
      char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8959,1
    - Dst: TransferExpandedRecord
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8962,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8966,1
    - Dst: ExpandedRecordGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8966,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - estate
    - rec
    - erh
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_rec*
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8970
      start: 8955
    functionDepth: 1
    functionLinenumber: 8955
    functionLinenumberEnd: 8970
    functionName: assign_record_var
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - Assert
    - DeleteExpandedObject
    - ExpandedRecordGetDatum
    - TransferExpandedRecord
    linkageType: ''
    returnType: void
    signature: "void assign_record_var(PLpgSQL_execstate *estate, PLpgSQL_rec *rec,\n\t\t\t\t
      \ ExpandedRecordHeader *erh)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8992,1
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8993,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8994,1
    - Dst: makeParamList
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8995,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8996,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9001,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9011,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9016,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9029,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9029,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9037,1
    - Dst: datumCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9039,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9042,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9044,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - estate
    - params
    argTypes:
    - PLpgSQL_execstate*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9050
      start: 8978
    functionDepth: 3
    functionLinenumber: 8978
    functionLinenumberEnd: 9050
    functionName: exec_eval_using_params
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - get_stmt_mcontext
    - get_typlenbyval
    - datumCopy
    - exec_eval_expr
    - makeParamList
    - MemoryContextSwitchTo
    - lfirst
    - CStringGetTextDatum
    - list_length
    - exec_eval_cleanup
    - DatumGetCString
    linkageType: ''
    returnType: ParamListInfo
    signature: ParamListInfo exec_eval_using_params(PLpgSQL_execstate *estate, List
      *params)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9001,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9011,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9016,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9029,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9029,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9037,1
    - Dst: datumCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9039,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9042,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9044,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9047
      start: 8999
    functionDepth: 3
    functionLinenumber: 8999
    functionLinenumberEnd: 9047
    functionName: foreach
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 17
    functionsReached:
    - get_typlenbyval
    - datumCopy
    - exec_eval_expr
    - MemoryContextSwitchTo
    - lfirst
    - CStringGetTextDatum
    - exec_eval_cleanup
    - DatumGetCString
    linkageType: ''
    returnType: void
    signature: void foreach(lc, params)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9074,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9080,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9082,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9083,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9084,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9087,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9090,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9092,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9099,1
    - Dst: exec_eval_using_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9100,1
    - Dst: SPI_cursor_parse_open
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9104,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9107,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9108,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - estate
    - dynquery
    - params
    - portalname
    - cursorOptions
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - List*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9114
      start: 9060
    functionDepth: 4
    functionLinenumber: 9060
    functionLinenumberEnd: 9114
    functionName: exec_dynquery_with_params
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - elog
    - MemoryContextReset
    - get_stmt_mcontext
    - SPI_cursor_parse_open
    - errcode
    - SPI_result_code_string
    - MemoryContextStrdup
    - ereport
    - exec_eval_expr
    - exec_eval_using_params
    - convert_value_to_string
    - memset
    - errmsg
    - exec_eval_cleanup
    linkageType: ''
    returnType: Portal
    signature: "Portal exec_dynquery_with_params(PLpgSQL_execstate *estate,\n\t\t\t\t\t\t
      \ PLpgSQL_expr *dynquery,\n\t\t\t\t\t\t  List *params,\n\t\t\t\t\t\t  const
      char *portalname,\n\t\t\t\t\t\t  int cursorOptions)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9133,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9133,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9135,1
    - Dst: bms_next_member
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9138,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9148,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9152,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9157,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9159,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9160,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - estate
    - expr
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9171
      start: 9121
    functionDepth: 3
    functionLinenumber: 9121
    functionLinenumberEnd: 9171
    functionName: format_expr_params
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - appendStringInfoStringQuoted
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - get_eval_mcontext
    - MemoryContextSwitchTo
    - convert_value_to_string
    - bms_next_member
    - exec_eval_datum
    linkageType: ''
    returnType: char
    signature: "char *\nformat_expr_params(PLpgSQL_execstate *estate,\n\t\t\t\t   const
      PLpgSQL_expr *expr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9189,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9189,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9191,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9201,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9206,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9208,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9209,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9215,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - estate
    - paramLI
    argTypes:
    - PLpgSQL_execstate*
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9218
      start: 9178
    functionDepth: 2
    functionLinenumber: 9178
    functionLinenumberEnd: 9218
    functionName: format_preparedparamsdata
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - appendStringInfoStringQuoted
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - get_eval_mcontext
    - MemoryContextSwitchTo
    - convert_value_to_string
    linkageType: ''
    returnType: char
    signature: "char *\nformat_preparedparamsdata(PLpgSQL_execstate *estate,\n\t\t\t\t\t\t
      \ ParamListInfo paramLI)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: _
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/plpgsql.h
    functionUses: 272
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - kwname
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: PG_KEYWORD
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_KEYWORD(kwname, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prev_token
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: AT_STMT_START
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AT_STMT_START(prev_token)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: internal_yylex
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:166,1
    - Dst: internal_yylex
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:172,1
    - Dst: internal_yylex
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:178,1
    - Dst: internal_yylex
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:184,1
    - Dst: internal_yylex
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:190,1
    - Dst: plpgsql_parse_tripword
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:193,1
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:207,1
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:208,1
    - Dst: plpgsql_parse_dblword
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:209,1
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:223,1
    - Dst: plpgsql_parse_dblword
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:224,1
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:238,1
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:239,1
    - Dst: plpgsql_parse_word
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:240,1
    - Dst: ScanKeywordLookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:247,1
    - Dst: GetScanKeyword
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:250,1
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:261,1
    - Dst: plpgsql_parse_word
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:280,1
    - Dst: AT_STMT_START
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:282,1
    - Dst: ScanKeywordLookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:289,1
    - Dst: GetScanKeyword
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:292,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 3
    argNames:
    - yylvalp
    - yyllocp
    - yyscanner
    argTypes:
    - YYSTYPE*
    - YYLTYPE*
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 319
    functionName: plpgsql_yylex
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached:
    - AT_STMT_START
    - GetScanKeyword
    - plpgsql_parse_tripword
    - plpgsql_parse_word
    - plpgsql_parse_dblword
    - push_back_token
    - internal_yylex
    - ScanKeywordLookup
    linkageType: ''
    returnType: int
    signature: int plpgsql_yylex(YYSTYPE *yylvalp, YYLTYPE *yyllocp, yyscan_t yyscanner)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - yyscanner
    argTypes:
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: plpgsql_token_length
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int plpgsql_token_length(yyscan_t yyscanner)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: core_yylex
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:352,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:358,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:363,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:365,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:367,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:374,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - auxdata
    - yyscanner
    argTypes:
    - TokenAuxData*
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 379
    functionName: internal_yylex
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 1
    functionsReached:
    - pstrdup
    - strlen
    - core_yylex
    - strcmp
    linkageType: ''
    returnType: int
    signature: int internal_yylex(TokenAuxData *auxdata, yyscan_t yyscanner)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - token
    - auxdata
    - yyscanner
    argTypes:
    - int
    - TokenAuxData*
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 392
    functionName: push_back_token
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 1
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void push_back_token(int token, TokenAuxData *auxdata, yyscan_t yyscanner)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - token
    - yylvalp
    - yyllocp
    - yyscanner
    argTypes:
    - int
    - YYSTYPE*
    - YYLTYPE*
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 400
    functionDepth: 2
    functionLinenumber: 400
    functionLinenumberEnd: 409
    functionName: plpgsql_push_back_token
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached:
    - push_back_token
    linkageType: ''
    returnType: void
    signature: void plpgsql_push_back_token(int token, YYSTYPE *yylvalp, YYLTYPE *yyllocp,
      yyscan_t yyscanner)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - token
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 428
    functionName: plpgsql_token_is_unreserved_keyword
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached:
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool plpgsql_token_is_unreserved_keyword(int token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:439,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - buf
    - startlocation
    - endlocation
    - yyscanner
    argTypes:
    - StringInfo
    - int
    - int
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 442
    functionName: plpgsql_append_source_text
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendBinaryStringInfo
    linkageType: ''
    returnType: void
    signature: "void plpgsql_append_source_text(StringInfo buf,\n\t\t\t\t\t\t   int
      startlocation, int endlocation,\n\t\t\t\t\t\t   yyscan_t yyscanner)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_yylex
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:457,1
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - yyscanner
    argTypes:
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 451
    functionDepth: 2
    functionLinenumber: 451
    functionLinenumberEnd: 460
    functionName: plpgsql_peek
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached:
    - push_back_token
    - internal_yylex
    linkageType: ''
    returnType: int
    signature: int plpgsql_peek(yyscan_t yyscanner)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: internal_yylex
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:478,1
    - Dst: internal_yylex
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:479,1
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:488,1
    - Dst: push_back_token
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - tok1_p
    - tok2_p
    - tok1_loc
    - tok2_loc
    - yyscanner
    argTypes:
    - int*
    - int*
    - int*
    - int*
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 490
    functionName: plpgsql_peek2
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached:
    - push_back_token
    - internal_yylex
    linkageType: ''
    returnType: void
    signature: void plpgsql_peek2(int *tok1_p, int *tok2_p, int *tok1_loc, int *tok2_loc,
      yyscan_t yyscanner)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:512,1
    - Dst: internalerrposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:514,1
    - Dst: internalerrquery
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - location
    - yyscanner
    argTypes:
    - int
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 517
    functionName: plpgsql_scanner_errposition
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached:
    - pg_mbstrlen_with_len
    - internalerrposition
    - internalerrquery
    linkageType: ''
    returnType: int
    signature: int plpgsql_scanner_errposition(int location, yyscan_t yyscanner)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:540,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:541,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:543,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:543,1
    - Dst: plpgsql_scanner_errposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:544,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:556,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:557,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:559,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:559,1
    - Dst: plpgsql_scanner_errposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - yyllocp
    - plpgsql_parse_result_p
    - yyscanner
    - message
    argTypes:
    - YYLTYPE*
    - PLpgSQL_stmt_block**
    - yyscan_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 533
    functionDepth: 2
    functionLinenumber: 533
    functionLinenumberEnd: 562
    functionName: plpgsql_yyerror
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached:
    - plpgsql_scanner_errposition
    - _
    - errcode
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void plpgsql_yyerror(YYLTYPE *yyllocp, PLpgSQL_stmt_block **plpgsql_parse_result_p,
      yyscan_t yyscanner, const char *message)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: location_lineno_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:583,1
    - Dst: strchr
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:589,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - location
    - yyscanner
    argTypes:
    - int
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 593
    functionName: plpgsql_location_to_lineno
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 0
    functionsReached:
    - location_lineno_init
    - strchr
    linkageType: ''
    returnType: int
    signature: int plpgsql_location_to_lineno(int location, yyscan_t yyscanner)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - yyscanner
    argTypes:
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 603
    functionName: location_lineno_init
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 1
    functionsReached:
    - strchr
    linkageType: ''
    returnType: void
    signature: void location_lineno_init(yyscan_t yyscanner)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - yyscanner
    argTypes:
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 610
    functionName: plpgsql_latest_lineno
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int plpgsql_latest_lineno(yyscan_t yyscanner)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:624,1
    - Dst: scanner_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:627,1
    - Dst: location_lineno_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 620
    functionDepth: 1
    functionLinenumber: 620
    functionLinenumberEnd: 647
    functionName: plpgsql_scanner_init
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - scanner_init
    - location_lineno_init
    linkageType: ''
    returnType: yyscan_t
    signature: yyscan_t plpgsql_scanner_init(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: scanner_finish
      Src: /src/postgres/src/pl/plpgsql/src/pl_scanner.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - yyscanner
    argTypes:
    - yyscan_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 657
    functionName: plpgsql_scanner_finish
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_scanner.c
    functionUses: 2
    functionsReached:
    - scanner_finish
    linkageType: ''
    returnType: void
    signature: void plpgsql_scanner_finish(yyscan_t yyscanner)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11160
      start: 11159
    functionDepth: 0
    functionLinenumber: 11159
    functionLinenumberEnd: 11160
    functionName: DPPP_CAT2
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DPPP_CAT2(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11161
      start: 11160
    functionDepth: 0
    functionLinenumber: 11160
    functionLinenumberEnd: 11161
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DPPP_(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11228
      start: 11227
    functionDepth: 0
    functionLinenumber: 11227
    functionLinenumberEnd: 11228
    functionName: D_PPP_STRINGIFY
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_STRINGIFY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xyz
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11229
      start: 11228
    functionDepth: 0
    functionLinenumber: 11228
    functionLinenumberEnd: 11229
    functionName: D_PPP_deprecate
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_deprecate(xyz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dec
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11255
      start: 11254
    functionDepth: 0
    functionLinenumber: 11254
    functionLinenumberEnd: 11255
    functionName: D_PPP_DEC2BCD
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_DEC2BCD(dec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - j
    - ','
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11256
      start: 11255
    functionDepth: 0
    functionLinenumber: 11255
    functionLinenumberEnd: 11256
    functionName: D_PPP_JNP_TO_BCD
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_JNP_TO_BCD(j,n,p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - j
    - ','
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11277
      start: 11273
    functionDepth: 0
    functionLinenumber: 11273
    functionLinenumberEnd: 11277
    functionName: PERL_VERSION_EQ
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_VERSION_EQ(j,n,p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - j
    - ','
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11281
      start: 11280
    functionDepth: 0
    functionLinenumber: 11280
    functionLinenumberEnd: 11281
    functionName: PERL_VERSION_NE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_VERSION_NE(j,n,p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - j
    - ','
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11287
      start: 11283
    functionDepth: 0
    functionLinenumber: 11283
    functionLinenumberEnd: 11287
    functionName: PERL_VERSION_LT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_VERSION_LT(j,n,p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - j
    - ','
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11291
      start: 11290
    functionDepth: 0
    functionLinenumber: 11290
    functionLinenumberEnd: 11291
    functionName: PERL_VERSION_GE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_VERSION_GE(j,n,p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - j
    - ','
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11297
      start: 11293
    functionDepth: 0
    functionLinenumber: 11293
    functionLinenumberEnd: 11297
    functionName: PERL_VERSION_LE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_VERSION_LE(j,n,p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - j
    - ','
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11301
      start: 11300
    functionDepth: 0
    functionLinenumber: 11300
    functionLinenumberEnd: 11301
    functionName: PERL_VERSION_GT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_VERSION_GT(j,n,p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11315
      start: 11314
    functionDepth: 0
    functionLinenumber: 11314
    functionLinenumberEnd: 11315
    functionName: dTHXa
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dTHXa(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11357
      start: 11356
    functionDepth: 0
    functionLinenumber: 11356
    functionLinenumberEnd: 11357
    functionName: dTHXoa
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dTHXoa(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11804
      start: 11801
    functionDepth: 0
    functionLinenumber: 11801
    functionLinenumberEnd: 11804
    functionName: D_PPP_my_PL_parser_var
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_my_PL_parser_var(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11810
      start: 11808
    functionDepth: 0
    functionLinenumber: 11808
    functionLinenumberEnd: 11810
    functionName: D_PPP_parser_dummy_warning
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_parser_dummy_warning(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11813
      start: 11811
    functionDepth: 0
    functionLinenumber: 11811
    functionLinenumberEnd: 11813
    functionName: D_PPP_my_PL_parser_var
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_my_PL_parser_var(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11865
      start: 11864
    functionDepth: 0
    functionLinenumber: 11864
    functionLinenumberEnd: 11865
    functionName: start_subparse
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: start_subparse(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11870
      start: 11869
    functionDepth: 0
    functionLinenumber: 11869
    functionLinenumberEnd: 11870
    functionName: start_subparse
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: start_subparse(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11899
      start: 11898
    functionDepth: 0
    functionLinenumber: 11898
    functionLinenumberEnd: 11899
    functionName: newCONSTSUB
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newCONSTSUB(a,b,c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: newSUB
      Src: /src/postgres/src/pl/plperl/ppport.h:11920,1
    - Dst: start_subparse
      Src: /src/postgres/src/pl/plperl/ppport.h:11922,1
    - Dst: newSVOP
      Src: /src/postgres/src/pl/plperl/ppport.h:11924,1
    - Dst: newSVpv
      Src: /src/postgres/src/pl/plperl/ppport.h:11924,1
    - Dst: newSVOP
      Src: /src/postgres/src/pl/plperl/ppport.h:11925,1
    - Dst: newSTATEOP
      Src: /src/postgres/src/pl/plperl/ppport.h:11926,1
    - Dst: newSVOP
      Src: /src/postgres/src/pl/plperl/ppport.h:11926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - stash
    - name
    - sv
    argTypes:
    - HV*
    - char*
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11935
      start: 11906
    functionDepth: 1
    functionLinenumber: 11906
    functionLinenumberEnd: 11935
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - newSVpv
    - newSTATEOP
    - start_subparse
    - newSVOP
    - newSUB
    linkageType: ''
    returnType: CV
    signature: 'CV *

      DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cbool
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12095
      start: 12094
    functionDepth: 0
    functionLinenumber: 12094
    functionLinenumberEnd: 12095
    functionName: cBOOL
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cBOOL(cbool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - o
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12099
      start: 12098
    functionDepth: 0
    functionLinenumber: 12098
    functionLinenumberEnd: 12099
    functionName: OpHAS_SIBLING
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OpHAS_SIBLING(o)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - o
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12103
      start: 12102
    functionDepth: 0
    functionLinenumber: 12102
    functionLinenumberEnd: 12103
    functionName: OpSIBLING
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OpSIBLING(o)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - o
    - ','
    - sib
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12107
      start: 12106
    functionDepth: 0
    functionLinenumber: 12106
    functionLinenumberEnd: 12107
    functionName: OpMORESIB_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OpMORESIB_set(o, sib)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - o
    - ','
    - parent
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12111
      start: 12110
    functionDepth: 0
    functionLinenumber: 12110
    functionLinenumberEnd: 12111
    functionName: OpLASTSIB_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OpLASTSIB_set(o, parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - o
    - ','
    - sib
    - ','
    - parent
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12115
      start: 12114
    functionDepth: 0
    functionLinenumber: 12114
    functionLinenumberEnd: 12115
    functionName: OpMAYBESIB_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OpMAYBESIB_set(o, sib, parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - statement
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12124
      start: 12123
    functionDepth: 0
    functionLinenumber: 12123
    functionLinenumberEnd: 12124
    functionName: __ASSERT_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __ASSERT_(statement)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12134
      start: 12133
    functionDepth: 0
    functionLinenumber: 12133
    functionLinenumberEnd: 12134
    functionName: __has_builtin
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __has_builtin(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12146
      start: 12145
    functionDepth: 0
    functionLinenumber: 12145
    functionLinenumberEnd: 12146
    functionName: ASSUME
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSUME(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12148
      start: 12147
    functionDepth: 0
    functionLinenumber: 12147
    functionLinenumberEnd: 12148
    functionName: ASSUME
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSUME(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12150
      start: 12149
    functionDepth: 0
    functionLinenumber: 12149
    functionLinenumberEnd: 12150
    functionName: ASSUME
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSUME(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12152
      start: 12151
    functionDepth: 0
    functionLinenumber: 12151
    functionLinenumberEnd: 12152
    functionName: ASSUME
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSUME(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12154
      start: 12153
    functionDepth: 0
    functionLinenumber: 12153
    functionLinenumberEnd: 12154
    functionName: ASSUME
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSUME(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - l
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12186
      start: 12184
    functionDepth: 0
    functionLinenumber: 12184
    functionLinenumberEnd: 12186
    functionName: withinCOUNT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: withinCOUNT(c, l, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - l
    - ','
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12193
      start: 12189
    functionDepth: 0
    functionLinenumber: 12189
    functionLinenumberEnd: 12193
    functionName: inRANGE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: inRANGE(c, l, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12201
      start: 12199
    functionDepth: 0
    functionLinenumber: 12199
    functionLinenumberEnd: 12201
    functionName: FITS_IN_8_BITS
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FITS_IN_8_BITS(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12265
      start: 12264
    functionDepth: 0
    functionLinenumber: 12264
    functionLinenumberEnd: 12265
    functionName: SvRX
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvRX(rv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12269
      start: 12268
    functionDepth: 0
    functionLinenumber: 12268
    functionLinenumberEnd: 12269
    functionName: SvRXOK
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvRXOK(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12287
      start: 12286
    functionDepth: 0
    functionLinenumber: 12286
    functionLinenumberEnd: 12287
    functionName: PERL_UNUSED_ARG
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_UNUSED_ARG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12289
      start: 12288
    functionDepth: 0
    functionLinenumber: 12288
    functionLinenumberEnd: 12289
    functionName: PERL_UNUSED_ARG
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_UNUSED_ARG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12294
      start: 12293
    functionDepth: 0
    functionLinenumber: 12293
    functionLinenumberEnd: 12294
    functionName: PERL_UNUSED_VAR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_UNUSED_VAR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12307
      start: 12306
    functionDepth: 0
    functionLinenumber: 12306
    functionLinenumberEnd: 12307
    functionName: PERL_UNUSED_RESULT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_UNUSED_RESULT(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12309
      start: 12308
    functionDepth: 0
    functionLinenumber: 12308
    functionLinenumberEnd: 12309
    functionName: PERL_UNUSED_RESULT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_UNUSED_RESULT(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - void
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12313
      start: 12312
    functionDepth: 0
    functionLinenumber: 12312
    functionLinenumberEnd: 12313
    functionName: NOOP
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NOOP(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - any
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12332
      start: 12331
    functionDepth: 0
    functionLinenumber: 12331
    functionLinenumberEnd: 12332
    functionName: INT2PTR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT2PTR(any,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - any
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12339
      start: 12338
    functionDepth: 0
    functionLinenumber: 12338
    functionLinenumberEnd: 12339
    functionName: INT2PTR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT2PTR(any,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12345
      start: 12344
    functionDepth: 0
    functionLinenumber: 12344
    functionLinenumberEnd: 12345
    functionName: PTR2ul
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR2ul(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12347
      start: 12346
    functionDepth: 0
    functionLinenumber: 12346
    functionLinenumberEnd: 12347
    functionName: PTR2ul
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR2ul(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12351
      start: 12350
    functionDepth: 0
    functionLinenumber: 12350
    functionLinenumberEnd: 12351
    functionName: PTR2nat
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR2nat(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - any
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12355
      start: 12354
    functionDepth: 0
    functionLinenumber: 12354
    functionLinenumberEnd: 12355
    functionName: NUM2PTR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUM2PTR(any,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12359
      start: 12358
    functionDepth: 0
    functionLinenumber: 12358
    functionLinenumberEnd: 12359
    functionName: PTR2IV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR2IV(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12363
      start: 12362
    functionDepth: 0
    functionLinenumber: 12362
    functionLinenumberEnd: 12363
    functionName: PTR2UV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR2UV(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12367
      start: 12366
    functionDepth: 0
    functionLinenumber: 12366
    functionLinenumberEnd: 12367
    functionName: PTR2NV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR2NV(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12413
      start: 12412
    functionDepth: 0
    functionLinenumber: 12412
    functionLinenumberEnd: 12413
    functionName: boolSV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: boolSV(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12426
      start: 12425
    functionDepth: 0
    functionLinenumber: 12425
    functionLinenumberEnd: 12426
    functionName: DEFSV_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFSV_set(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - av
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12442
      start: 12441
    functionDepth: 0
    functionLinenumber: 12441
    functionLinenumberEnd: 12442
    functionName: av_count
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: av_count(av)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - str
    - ','
    - len
    - ','
    - create
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12455
      start: 12454
    functionDepth: 0
    functionLinenumber: 12454
    functionLinenumberEnd: 12455
    functionName: gv_stashpvn
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gv_stashpvn(str,len,create)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12507
      start: 12502
    functionDepth: 0
    functionLinenumber: 12502
    functionLinenumberEnd: 12507
    functionName: XSRETURN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSRETURN(off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12510
      start: 12509
    functionDepth: 0
    functionLinenumber: 12509
    functionLinenumberEnd: 12510
    functionName: XSPROTO
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSPROTO(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12514
      start: 12513
    functionDepth: 0
    functionLinenumber: 12513
    functionLinenumberEnd: 12514
    functionName: SVfARG
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SVfARG(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12517
      start: 12516
    functionDepth: 0
    functionLinenumber: 12516
    functionLinenumberEnd: 12517
    functionName: PERL_ABS
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_ABS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12526
      start: 12525
    functionDepth: 0
    functionLinenumber: 12525
    functionLinenumberEnd: 12526
    functionName: CPERLscope
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CPERLscope(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hash
    - ','
    - str
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12537
      start: 12528
    functionDepth: 0
    functionLinenumber: 12528
    functionLinenumberEnd: 12537
    functionName: PERL_HASH
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERL_HASH(hash,str,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - funcs
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12542
      start: 12541
    functionDepth: 0
    functionLinenumber: 12541
    functionLinenumberEnd: 12542
    functionName: PERLIO_FUNCS_DECL
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERLIO_FUNCS_DECL(funcs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - funcs
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12543
      start: 12542
    functionDepth: 0
    functionLinenumber: 12542
    functionLinenumberEnd: 12543
    functionName: PERLIO_FUNCS_CAST
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERLIO_FUNCS_CAST(funcs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - funcs
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12545
      start: 12544
    functionDepth: 0
    functionLinenumber: 12544
    functionLinenumberEnd: 12545
    functionName: PERLIO_FUNCS_DECL
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERLIO_FUNCS_DECL(funcs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - funcs
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12546
      start: 12545
    functionDepth: 0
    functionLinenumber: 12545
    functionLinenumberEnd: 12546
    functionName: PERLIO_FUNCS_CAST
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PERLIO_FUNCS_CAST(funcs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12566
      start: 12565
    functionDepth: 0
    functionLinenumber: 12565
    functionLinenumberEnd: 12566
    functionName: NATIVE_TO_LATIN1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_TO_LATIN1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12570
      start: 12569
    functionDepth: 0
    functionLinenumber: 12569
    functionLinenumberEnd: 12570
    functionName: LATIN1_TO_NATIVE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LATIN1_TO_NATIVE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12574
      start: 12573
    functionDepth: 0
    functionLinenumber: 12573
    functionLinenumberEnd: 12574
    functionName: NATIVE_TO_UNI
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_TO_UNI(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12578
      start: 12577
    functionDepth: 0
    functionLinenumber: 12577
    functionLinenumberEnd: 12578
    functionName: UNI_TO_NATIVE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNI_TO_NATIVE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12583
      start: 12582
    functionDepth: 0
    functionLinenumber: 12582
    functionLinenumberEnd: 12583
    functionName: NATIVE_TO_LATIN1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_TO_LATIN1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12587
      start: 12586
    functionDepth: 0
    functionLinenumber: 12586
    functionLinenumberEnd: 12587
    functionName: LATIN1_TO_NATIVE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LATIN1_TO_NATIVE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12591
      start: 12590
    functionDepth: 0
    functionLinenumber: 12590
    functionLinenumberEnd: 12591
    functionName: NATIVE_TO_UNI
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_TO_UNI(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12595
      start: 12594
    functionDepth: 0
    functionLinenumber: 12594
    functionLinenumberEnd: 12595
    functionName: UNI_TO_NATIVE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNI_TO_NATIVE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12686
      start: 12685
    functionDepth: 0
    functionLinenumber: 12685
    functionLinenumberEnd: 12686
    functionName: isASCII
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isASCII(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12732
      start: 12728
    functionDepth: 0
    functionLinenumber: 12728
    functionLinenumberEnd: 12732
    functionName: isLOWER
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isLOWER(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12739
      start: 12735
    functionDepth: 0
    functionLinenumber: 12735
    functionLinenumberEnd: 12739
    functionName: isUPPER
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isUPPER(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12798
      start: 12797
    functionDepth: 0
    functionLinenumber: 12797
    functionLinenumberEnd: 12798
    functionName: isASCII
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isASCII(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12802
      start: 12801
    functionDepth: 0
    functionLinenumber: 12801
    functionLinenumberEnd: 12802
    functionName: isCNTRL
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isCNTRL(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12807
      start: 12805
    functionDepth: 0
    functionLinenumber: 12805
    functionLinenumberEnd: 12807
    functionName: isCNTRL_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isCNTRL_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12811
      start: 12810
    functionDepth: 0
    functionLinenumber: 12810
    functionLinenumberEnd: 12811
    functionName: isLOWER
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isLOWER(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12815
      start: 12814
    functionDepth: 0
    functionLinenumber: 12814
    functionLinenumberEnd: 12815
    functionName: isUPPER
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isUPPER(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12820
      start: 12819
    functionDepth: 0
    functionLinenumber: 12819
    functionLinenumberEnd: 12820
    functionName: isASCII_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isASCII_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12824
      start: 12823
    functionDepth: 0
    functionLinenumber: 12823
    functionLinenumberEnd: 12824
    functionName: isASCII_LC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isASCII_LC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12828
      start: 12827
    functionDepth: 0
    functionLinenumber: 12827
    functionLinenumberEnd: 12828
    functionName: isALNUM
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALNUM(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12832
      start: 12831
    functionDepth: 0
    functionLinenumber: 12831
    functionLinenumberEnd: 12832
    functionName: isALNUMC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALNUMC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12836
      start: 12835
    functionDepth: 0
    functionLinenumber: 12835
    functionLinenumberEnd: 12836
    functionName: isALNUMC_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALNUMC_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12840
      start: 12839
    functionDepth: 0
    functionLinenumber: 12839
    functionLinenumberEnd: 12840
    functionName: isALPHA
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHA(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12844
      start: 12843
    functionDepth: 0
    functionLinenumber: 12843
    functionLinenumberEnd: 12844
    functionName: isALPHA_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHA_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12848
      start: 12847
    functionDepth: 0
    functionLinenumber: 12847
    functionLinenumberEnd: 12848
    functionName: isALPHANUMERIC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHANUMERIC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12852
      start: 12851
    functionDepth: 0
    functionLinenumber: 12851
    functionLinenumberEnd: 12852
    functionName: isALPHANUMERIC_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHANUMERIC_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12856
      start: 12855
    functionDepth: 0
    functionLinenumber: 12855
    functionLinenumberEnd: 12856
    functionName: isALPHANUMERIC_LC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHANUMERIC_LC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12860
      start: 12859
    functionDepth: 0
    functionLinenumber: 12859
    functionLinenumberEnd: 12860
    functionName: isBLANK
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isBLANK(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12866
      start: 12863
    functionDepth: 0
    functionLinenumber: 12863
    functionLinenumberEnd: 12866
    functionName: isBLANK_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isBLANK_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12870
      start: 12869
    functionDepth: 0
    functionLinenumber: 12869
    functionLinenumberEnd: 12870
    functionName: isBLANK_LC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isBLANK_LC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12874
      start: 12873
    functionDepth: 0
    functionLinenumber: 12873
    functionLinenumberEnd: 12874
    functionName: isDIGIT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isDIGIT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12878
      start: 12877
    functionDepth: 0
    functionLinenumber: 12877
    functionLinenumberEnd: 12878
    functionName: isDIGIT_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isDIGIT_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12882
      start: 12881
    functionDepth: 0
    functionLinenumber: 12881
    functionLinenumberEnd: 12882
    functionName: isGRAPH
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isGRAPH(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12888
      start: 12885
    functionDepth: 0
    functionLinenumber: 12885
    functionLinenumberEnd: 12888
    functionName: isGRAPH_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isGRAPH_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12892
      start: 12891
    functionDepth: 0
    functionLinenumber: 12891
    functionLinenumberEnd: 12892
    functionName: isIDCONT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDCONT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12896
      start: 12895
    functionDepth: 0
    functionLinenumber: 12895
    functionLinenumberEnd: 12896
    functionName: isIDCONT_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDCONT_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12900
      start: 12899
    functionDepth: 0
    functionLinenumber: 12899
    functionLinenumberEnd: 12900
    functionName: isIDCONT_LC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDCONT_LC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12904
      start: 12903
    functionDepth: 0
    functionLinenumber: 12903
    functionLinenumberEnd: 12904
    functionName: isIDFIRST
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDFIRST(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12908
      start: 12907
    functionDepth: 0
    functionLinenumber: 12907
    functionLinenumberEnd: 12908
    functionName: isIDFIRST_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDFIRST_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12912
      start: 12911
    functionDepth: 0
    functionLinenumber: 12911
    functionLinenumberEnd: 12912
    functionName: isIDFIRST_LC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDFIRST_LC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12922
      start: 12915
    functionDepth: 0
    functionLinenumber: 12915
    functionLinenumberEnd: 12922
    functionName: isLOWER_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isLOWER_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12926
      start: 12925
    functionDepth: 0
    functionLinenumber: 12925
    functionLinenumberEnd: 12926
    functionName: isOCTAL
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isOCTAL(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12930
      start: 12929
    functionDepth: 0
    functionLinenumber: 12929
    functionLinenumberEnd: 12930
    functionName: isOCTAL_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isOCTAL_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12934
      start: 12933
    functionDepth: 0
    functionLinenumber: 12933
    functionLinenumberEnd: 12934
    functionName: isPRINT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPRINT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12938
      start: 12937
    functionDepth: 0
    functionLinenumber: 12937
    functionLinenumberEnd: 12938
    functionName: isPRINT_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPRINT_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12942
      start: 12941
    functionDepth: 0
    functionLinenumber: 12941
    functionLinenumberEnd: 12942
    functionName: isPSXSPC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPSXSPC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12946
      start: 12945
    functionDepth: 0
    functionLinenumber: 12945
    functionLinenumberEnd: 12946
    functionName: isPSXSPC_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPSXSPC_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12960
      start: 12949
    functionDepth: 0
    functionLinenumber: 12949
    functionLinenumberEnd: 12960
    functionName: isPUNCT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPUNCT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12972
      start: 12963
    functionDepth: 0
    functionLinenumber: 12963
    functionLinenumberEnd: 12972
    functionName: isPUNCT_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPUNCT_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12977
      start: 12975
    functionDepth: 0
    functionLinenumber: 12975
    functionLinenumberEnd: 12977
    functionName: isSPACE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isSPACE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12984
      start: 12980
    functionDepth: 0
    functionLinenumber: 12980
    functionLinenumberEnd: 12984
    functionName: isSPACE_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isSPACE_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12992
      start: 12987
    functionDepth: 0
    functionLinenumber: 12987
    functionLinenumberEnd: 12992
    functionName: isUPPER_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isUPPER_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12996
      start: 12995
    functionDepth: 0
    functionLinenumber: 12995
    functionLinenumberEnd: 12996
    functionName: isWORDCHAR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isWORDCHAR(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13000
      start: 12999
    functionDepth: 0
    functionLinenumber: 12999
    functionLinenumberEnd: 13000
    functionName: isWORDCHAR_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isWORDCHAR_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13004
      start: 13003
    functionDepth: 0
    functionLinenumber: 13003
    functionLinenumberEnd: 13004
    functionName: isWORDCHAR_LC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isWORDCHAR_LC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13010
      start: 13007
    functionDepth: 0
    functionLinenumber: 13007
    functionLinenumberEnd: 13010
    functionName: isXDIGIT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isXDIGIT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13014
      start: 13013
    functionDepth: 0
    functionLinenumber: 13013
    functionLinenumberEnd: 13014
    functionName: isXDIGIT_L1
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isXDIGIT_L1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13018
      start: 13017
    functionDepth: 0
    functionLinenumber: 13017
    functionLinenumberEnd: 13018
    functionName: isXDIGIT_LC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isXDIGIT_LC(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13021
      start: 13020
    functionDepth: 0
    functionLinenumber: 13020
    functionLinenumberEnd: 13021
    functionName: isALNUM_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALNUM_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13025
      start: 13024
    functionDepth: 0
    functionLinenumber: 13024
    functionLinenumberEnd: 13025
    functionName: isALNUMC_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALNUMC_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13029
      start: 13028
    functionDepth: 0
    functionLinenumber: 13028
    functionLinenumberEnd: 13029
    functionName: isALPHA_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHA_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13033
      start: 13032
    functionDepth: 0
    functionLinenumber: 13032
    functionLinenumberEnd: 13033
    functionName: isALPHANUMERIC_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHANUMERIC_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13037
      start: 13036
    functionDepth: 0
    functionLinenumber: 13036
    functionLinenumberEnd: 13037
    functionName: isASCII_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isASCII_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13041
      start: 13040
    functionDepth: 0
    functionLinenumber: 13040
    functionLinenumberEnd: 13041
    functionName: isBLANK_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isBLANK_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13045
      start: 13044
    functionDepth: 0
    functionLinenumber: 13044
    functionLinenumberEnd: 13045
    functionName: isCNTRL_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isCNTRL_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13049
      start: 13048
    functionDepth: 0
    functionLinenumber: 13048
    functionLinenumberEnd: 13049
    functionName: isDIGIT_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isDIGIT_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13053
      start: 13052
    functionDepth: 0
    functionLinenumber: 13052
    functionLinenumberEnd: 13053
    functionName: isGRAPH_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isGRAPH_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13057
      start: 13056
    functionDepth: 0
    functionLinenumber: 13056
    functionLinenumberEnd: 13057
    functionName: isIDCONT_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDCONT_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13061
      start: 13060
    functionDepth: 0
    functionLinenumber: 13060
    functionLinenumberEnd: 13061
    functionName: isIDFIRST_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDFIRST_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13065
      start: 13064
    functionDepth: 0
    functionLinenumber: 13064
    functionLinenumberEnd: 13065
    functionName: isLOWER_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isLOWER_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13069
      start: 13068
    functionDepth: 0
    functionLinenumber: 13068
    functionLinenumberEnd: 13069
    functionName: isOCTAL_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isOCTAL_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13073
      start: 13072
    functionDepth: 0
    functionLinenumber: 13072
    functionLinenumberEnd: 13073
    functionName: isPRINT_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPRINT_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13077
      start: 13076
    functionDepth: 0
    functionLinenumber: 13076
    functionLinenumberEnd: 13077
    functionName: isPSXSPC_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPSXSPC_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13081
      start: 13080
    functionDepth: 0
    functionLinenumber: 13080
    functionLinenumberEnd: 13081
    functionName: isPUNCT_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPUNCT_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13085
      start: 13084
    functionDepth: 0
    functionLinenumber: 13084
    functionLinenumberEnd: 13085
    functionName: isSPACE_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isSPACE_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13089
      start: 13088
    functionDepth: 0
    functionLinenumber: 13088
    functionLinenumberEnd: 13089
    functionName: isUPPER_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isUPPER_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13093
      start: 13092
    functionDepth: 0
    functionLinenumber: 13092
    functionLinenumberEnd: 13093
    functionName: isWORDCHAR_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isWORDCHAR_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13097
      start: 13096
    functionDepth: 0
    functionLinenumber: 13096
    functionLinenumberEnd: 13097
    functionName: isXDIGIT_A
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isXDIGIT_A(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13100
      start: 13099
    functionDepth: 0
    functionLinenumber: 13099
    functionLinenumberEnd: 13100
    functionName: isASCII_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isASCII_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13104
      start: 13103
    functionDepth: 0
    functionLinenumber: 13103
    functionLinenumberEnd: 13104
    functionName: isASCII_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isASCII_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - upper
    - ','
    - lower
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13112
      start: 13108
    functionDepth: 0
    functionLinenumber: 13108
    functionLinenumberEnd: 13112
    functionName: D_PPP_is_ctype
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_is_ctype(upper, lower, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - upper
    - ','
    - lower
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13117
      start: 13113
    functionDepth: 0
    functionLinenumber: 13113
    functionLinenumberEnd: 13117
    functionName: D_PPP_is_ctype
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_is_ctype(upper, lower, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13120
      start: 13119
    functionDepth: 0
    functionLinenumber: 13119
    functionLinenumberEnd: 13120
    functionName: isALPHA_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHA_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13124
      start: 13123
    functionDepth: 0
    functionLinenumber: 13123
    functionLinenumberEnd: 13124
    functionName: isALPHANUMERIC_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHANUMERIC_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13129
      start: 13128
    functionDepth: 0
    functionLinenumber: 13128
    functionLinenumberEnd: 13129
    functionName: isBLANK_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isBLANK_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13145
      start: 13144
    functionDepth: 0
    functionLinenumber: 13144
    functionLinenumberEnd: 13145
    functionName: isCNTRL_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isCNTRL_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13149
      start: 13148
    functionDepth: 0
    functionLinenumber: 13148
    functionLinenumberEnd: 13149
    functionName: isDIGIT_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isDIGIT_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13153
      start: 13152
    functionDepth: 0
    functionLinenumber: 13152
    functionLinenumberEnd: 13153
    functionName: isGRAPH_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isGRAPH_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13157
      start: 13156
    functionDepth: 0
    functionLinenumber: 13156
    functionLinenumberEnd: 13157
    functionName: isIDCONT_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDCONT_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13161
      start: 13160
    functionDepth: 0
    functionLinenumber: 13160
    functionLinenumberEnd: 13161
    functionName: isIDFIRST_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDFIRST_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13165
      start: 13164
    functionDepth: 0
    functionLinenumber: 13164
    functionLinenumberEnd: 13165
    functionName: isLOWER_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isLOWER_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13169
      start: 13168
    functionDepth: 0
    functionLinenumber: 13168
    functionLinenumberEnd: 13169
    functionName: isPRINT_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPRINT_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13173
      start: 13172
    functionDepth: 0
    functionLinenumber: 13172
    functionLinenumberEnd: 13173
    functionName: isPSXSPC_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPSXSPC_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13177
      start: 13176
    functionDepth: 0
    functionLinenumber: 13176
    functionLinenumberEnd: 13177
    functionName: isPUNCT_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPUNCT_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13181
      start: 13180
    functionDepth: 0
    functionLinenumber: 13180
    functionLinenumberEnd: 13181
    functionName: isSPACE_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isSPACE_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13185
      start: 13184
    functionDepth: 0
    functionLinenumber: 13184
    functionLinenumberEnd: 13185
    functionName: isUPPER_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isUPPER_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13189
      start: 13188
    functionDepth: 0
    functionLinenumber: 13188
    functionLinenumberEnd: 13189
    functionName: isXDIGIT_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isXDIGIT_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13194
      start: 13192
    functionDepth: 0
    functionLinenumber: 13192
    functionLinenumberEnd: 13194
    functionName: isWORDCHAR_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isWORDCHAR_uvchr(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13197
      start: 13196
    functionDepth: 0
    functionLinenumber: 13196
    functionLinenumberEnd: 13197
    functionName: isALPHA_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHA_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13203
      start: 13201
    functionDepth: 0
    functionLinenumber: 13201
    functionLinenumberEnd: 13203
    functionName: isALPHANUMERIC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHANUMERIC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13209
      start: 13207
    functionDepth: 0
    functionLinenumber: 13207
    functionLinenumberEnd: 13209
    functionName: isALPHANUMERIC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHANUMERIC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13218
      start: 13217
    functionDepth: 0
    functionLinenumber: 13217
    functionLinenumberEnd: 13218
    functionName: isBLANK_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isBLANK_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13253
      start: 13236
    functionDepth: 0
    functionLinenumber: 13236
    functionLinenumberEnd: 13253
    functionName: isBLANK_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isBLANK_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13274
      start: 13257
    functionDepth: 0
    functionLinenumber: 13257
    functionLinenumberEnd: 13274
    functionName: isBLANK_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isBLANK_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13281
      start: 13280
    functionDepth: 0
    functionLinenumber: 13280
    functionLinenumberEnd: 13281
    functionName: isCNTRL_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isCNTRL_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13285
      start: 13284
    functionDepth: 0
    functionLinenumber: 13284
    functionLinenumberEnd: 13285
    functionName: isDIGIT_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isDIGIT_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13289
      start: 13288
    functionDepth: 0
    functionLinenumber: 13288
    functionLinenumberEnd: 13289
    functionName: isGRAPH_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isGRAPH_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13294
      start: 13293
    functionDepth: 0
    functionLinenumber: 13293
    functionLinenumberEnd: 13294
    functionName: isIDCONT_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDCONT_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13299
      start: 13298
    functionDepth: 0
    functionLinenumber: 13298
    functionLinenumberEnd: 13299
    functionName: isIDCONT_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDCONT_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13304
      start: 13303
    functionDepth: 0
    functionLinenumber: 13303
    functionLinenumberEnd: 13304
    functionName: isIDFIRST_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDFIRST_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13308
      start: 13307
    functionDepth: 0
    functionLinenumber: 13307
    functionLinenumberEnd: 13308
    functionName: isLOWER_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isLOWER_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13312
      start: 13311
    functionDepth: 0
    functionLinenumber: 13311
    functionLinenumberEnd: 13312
    functionName: isPRINT_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPRINT_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13317
      start: 13316
    functionDepth: 0
    functionLinenumber: 13316
    functionLinenumberEnd: 13317
    functionName: isPSXSPC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPSXSPC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13320
      start: 13319
    functionDepth: 0
    functionLinenumber: 13319
    functionLinenumberEnd: 13320
    functionName: isPUNCT_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPUNCT_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13324
      start: 13323
    functionDepth: 0
    functionLinenumber: 13323
    functionLinenumberEnd: 13324
    functionName: isSPACE_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isSPACE_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13328
      start: 13327
    functionDepth: 0
    functionLinenumber: 13327
    functionLinenumberEnd: 13328
    functionName: isUPPER_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isUPPER_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13333
      start: 13332
    functionDepth: 0
    functionLinenumber: 13332
    functionLinenumberEnd: 13333
    functionName: isWORDCHAR_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isWORDCHAR_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13339
      start: 13337
    functionDepth: 0
    functionLinenumber: 13337
    functionLinenumberEnd: 13339
    functionName: isWORDCHAR_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isWORDCHAR_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13354
      start: 13347
    functionDepth: 0
    functionLinenumber: 13347
    functionLinenumberEnd: 13354
    functionName: isXDIGIT_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isXDIGIT_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13365
      start: 13358
    functionDepth: 0
    functionLinenumber: 13358
    functionLinenumberEnd: 13365
    functionName: isXDIGIT_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isXDIGIT_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13376
      start: 13369
    functionDepth: 0
    functionLinenumber: 13369
    functionLinenumberEnd: 13376
    functionName: isXDIGIT_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isXDIGIT_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13383
      start: 13382
    functionDepth: 0
    functionLinenumber: 13382
    functionLinenumberEnd: 13383
    functionName: isALPHA_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHA_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13389
      start: 13387
    functionDepth: 0
    functionLinenumber: 13387
    functionLinenumberEnd: 13389
    functionName: isALPHANUMERIC_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHANUMERIC_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13395
      start: 13393
    functionDepth: 0
    functionLinenumber: 13393
    functionLinenumberEnd: 13395
    functionName: isALPHANUMERIC_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isALPHANUMERIC_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13401
      start: 13399
    functionDepth: 0
    functionLinenumber: 13399
    functionLinenumberEnd: 13401
    functionName: isBLANK_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isBLANK_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13405
      start: 13404
    functionDepth: 0
    functionLinenumber: 13404
    functionLinenumberEnd: 13405
    functionName: isCNTRL_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isCNTRL_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13409
      start: 13408
    functionDepth: 0
    functionLinenumber: 13408
    functionLinenumberEnd: 13409
    functionName: isDIGIT_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isDIGIT_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13413
      start: 13412
    functionDepth: 0
    functionLinenumber: 13412
    functionLinenumberEnd: 13413
    functionName: isGRAPH_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isGRAPH_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13418
      start: 13417
    functionDepth: 0
    functionLinenumber: 13417
    functionLinenumberEnd: 13418
    functionName: isIDCONT_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDCONT_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13423
      start: 13422
    functionDepth: 0
    functionLinenumber: 13422
    functionLinenumberEnd: 13423
    functionName: isIDCONT_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDCONT_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13428
      start: 13427
    functionDepth: 0
    functionLinenumber: 13427
    functionLinenumberEnd: 13428
    functionName: isIDFIRST_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isIDFIRST_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13432
      start: 13431
    functionDepth: 0
    functionLinenumber: 13431
    functionLinenumberEnd: 13432
    functionName: isLOWER_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isLOWER_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13436
      start: 13435
    functionDepth: 0
    functionLinenumber: 13435
    functionLinenumberEnd: 13436
    functionName: isPRINT_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPRINT_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13441
      start: 13440
    functionDepth: 0
    functionLinenumber: 13440
    functionLinenumberEnd: 13441
    functionName: isPSXSPC_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPSXSPC_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13444
      start: 13443
    functionDepth: 0
    functionLinenumber: 13443
    functionLinenumberEnd: 13444
    functionName: isPUNCT_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isPUNCT_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13448
      start: 13447
    functionDepth: 0
    functionLinenumber: 13447
    functionLinenumberEnd: 13448
    functionName: isSPACE_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isSPACE_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13452
      start: 13451
    functionDepth: 0
    functionLinenumber: 13451
    functionLinenumberEnd: 13452
    functionName: isUPPER_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isUPPER_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13457
      start: 13456
    functionDepth: 0
    functionLinenumber: 13456
    functionLinenumberEnd: 13457
    functionName: isWORDCHAR_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isWORDCHAR_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13463
      start: 13461
    functionDepth: 0
    functionLinenumber: 13461
    functionLinenumberEnd: 13463
    functionName: isWORDCHAR_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isWORDCHAR_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13469
      start: 13467
    functionDepth: 0
    functionLinenumber: 13467
    functionLinenumberEnd: 13469
    functionName: isXDIGIT_LC_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isXDIGIT_LC_utf8_safe(s,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13502
      start: 13501
    functionDepth: 0
    functionLinenumber: 13501
    functionLinenumberEnd: 13502
    functionName: toLOWER_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toLOWER_uvchr(c, s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13506
      start: 13505
    functionDepth: 0
    functionLinenumber: 13505
    functionLinenumberEnd: 13506
    functionName: toUPPER_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toUPPER_uvchr(c, s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13510
      start: 13509
    functionDepth: 0
    functionLinenumber: 13509
    functionLinenumberEnd: 13510
    functionName: toTITLE_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toTITLE_uvchr(c, s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13514
      start: 13513
    functionDepth: 0
    functionLinenumber: 13513
    functionLinenumberEnd: 13514
    functionName: toFOLD_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toFOLD_uvchr(c, s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13521
      start: 13520
    functionDepth: 0
    functionLinenumber: 13520
    functionLinenumberEnd: 13521
    functionName: D_PPP_TO_LOWER_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_LOWER_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13523
      start: 13522
    functionDepth: 0
    functionLinenumber: 13522
    functionLinenumberEnd: 13523
    functionName: D_PPP_TO_LOWER_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_LOWER_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13526
      start: 13525
    functionDepth: 0
    functionLinenumber: 13525
    functionLinenumberEnd: 13526
    functionName: D_PPP_TO_TITLE_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_TITLE_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13528
      start: 13527
    functionDepth: 0
    functionLinenumber: 13527
    functionLinenumberEnd: 13528
    functionName: D_PPP_TO_TITLE_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_TITLE_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13531
      start: 13530
    functionDepth: 0
    functionLinenumber: 13530
    functionLinenumberEnd: 13531
    functionName: D_PPP_TO_UPPER_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_UPPER_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13533
      start: 13532
    functionDepth: 0
    functionLinenumber: 13532
    functionLinenumberEnd: 13533
    functionName: D_PPP_TO_UPPER_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_UPPER_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13536
      start: 13535
    functionDepth: 0
    functionLinenumber: 13535
    functionLinenumberEnd: 13536
    functionName: D_PPP_TO_FOLD_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_FOLD_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13538
      start: 13537
    functionDepth: 0
    functionLinenumber: 13537
    functionLinenumberEnd: 13538
    functionName: D_PPP_TO_FOLD_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_FOLD_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13546
      start: 13544
    functionDepth: 0
    functionLinenumber: 13544
    functionLinenumberEnd: 13546
    functionName: D_PPP_TO_LOWER_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_LOWER_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13548
      start: 13546
    functionDepth: 0
    functionLinenumber: 13546
    functionLinenumberEnd: 13548
    functionName: D_PPP_TO_TITLE_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_TITLE_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13550
      start: 13548
    functionDepth: 0
    functionLinenumber: 13548
    functionLinenumberEnd: 13550
    functionName: D_PPP_TO_UPPER_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_UPPER_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13552
      start: 13550
    functionDepth: 0
    functionLinenumber: 13550
    functionLinenumberEnd: 13552
    functionName: D_PPP_TO_FOLD_CALLEE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_TO_FOLD_CALLEE(s,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - e
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13569
      start: 13567
    functionDepth: 0
    functionLinenumber: 13567
    functionLinenumberEnd: 13569
    functionName: toUPPER_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toUPPER_utf8_safe(s,e,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - e
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13574
      start: 13572
    functionDepth: 0
    functionLinenumber: 13572
    functionLinenumberEnd: 13574
    functionName: toLOWER_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toLOWER_utf8_safe(s,e,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - e
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13579
      start: 13577
    functionDepth: 0
    functionLinenumber: 13577
    functionLinenumberEnd: 13579
    functionName: toTITLE_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toTITLE_utf8_safe(s,e,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - e
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13584
      start: 13582
    functionDepth: 0
    functionLinenumber: 13582
    functionLinenumberEnd: 13584
    functionName: toFOLD_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toFOLD_utf8_safe(s,e,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - c
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13604
      start: 13600
    functionDepth: 0
    functionLinenumber: 13600
    functionLinenumberEnd: 13604
    functionName: D_PPP_GENERIC_SINGLE_ARG_TO_UVCHR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_GENERIC_SINGLE_ARG_TO_UVCHR(name, c, s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13607
      start: 13605
    functionDepth: 0
    functionLinenumber: 13605
    functionLinenumberEnd: 13607
    functionName: toLOWER_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toLOWER_uvchr(c, s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13612
      start: 13610
    functionDepth: 0
    functionLinenumber: 13610
    functionLinenumberEnd: 13612
    functionName: toUPPER_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toUPPER_uvchr(c, s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13617
      start: 13615
    functionDepth: 0
    functionLinenumber: 13615
    functionLinenumberEnd: 13617
    functionName: toTITLE_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toTITLE_uvchr(c, s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13621
      start: 13620
    functionDepth: 0
    functionLinenumber: 13620
    functionLinenumberEnd: 13621
    functionName: toFOLD_uvchr
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toFOLD_uvchr(c, s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13635
      start: 13623
    functionDepth: 0
    functionLinenumber: 13623
    functionLinenumberEnd: 13635
    functionName: D_PPP_GENERIC_SINGLE_ARG_TO_UTF8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_GENERIC_SINGLE_ARG_TO_UTF8(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - e
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13646
      start: 13644
    functionDepth: 0
    functionLinenumber: 13644
    functionLinenumberEnd: 13646
    functionName: toUPPER_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toUPPER_utf8_safe(s,e,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - e
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13651
      start: 13649
    functionDepth: 0
    functionLinenumber: 13649
    functionLinenumberEnd: 13651
    functionName: toLOWER_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toLOWER_utf8_safe(s,e,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - e
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13656
      start: 13654
    functionDepth: 0
    functionLinenumber: 13654
    functionLinenumberEnd: 13656
    functionName: toTITLE_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toTITLE_utf8_safe(s,e,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - e
    - ','
    - r
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13668
      start: 13667
    functionDepth: 0
    functionLinenumber: 13667
    functionLinenumberEnd: 13668
    functionName: toFOLD_utf8_safe
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: toFOLD_utf8_safe(s,e,r,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - he
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13678
      start: 13675
    functionDepth: 0
    functionLinenumber: 13675
    functionLinenumberEnd: 13678
    functionName: HeUTF8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeUTF8(he)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13683
      start: 13682
    functionDepth: 0
    functionLinenumber: 13682
    functionLinenumberEnd: 13683
    functionName: C_ARRAY_LENGTH
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: C_ARRAY_LENGTH(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13687
      start: 13686
    functionDepth: 0
    functionLinenumber: 13686
    functionLinenumberEnd: 13687
    functionName: C_ARRAY_END
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: C_ARRAY_END(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13690
      start: 13689
    functionDepth: 0
    functionLinenumber: 13689
    functionLinenumberEnd: 13690
    functionName: LIKELY
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIKELY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13694
      start: 13693
    functionDepth: 0
    functionLinenumber: 13693
    functionLinenumberEnd: 13694
    functionName: UNLIKELY
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNLIKELY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13699
      start: 13698
    functionDepth: 0
    functionLinenumber: 13698
    functionLinenumberEnd: 13699
    functionName: MUTABLE_PTR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUTABLE_PTR(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13701
      start: 13700
    functionDepth: 0
    functionLinenumber: 13700
    functionLinenumberEnd: 13701
    functionName: MUTABLE_PTR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUTABLE_PTR(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13705
      start: 13704
    functionDepth: 0
    functionLinenumber: 13704
    functionLinenumberEnd: 13705
    functionName: MUTABLE_AV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUTABLE_AV(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13709
      start: 13708
    functionDepth: 0
    functionLinenumber: 13708
    functionLinenumberEnd: 13709
    functionName: MUTABLE_CV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUTABLE_CV(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13713
      start: 13712
    functionDepth: 0
    functionLinenumber: 13712
    functionLinenumberEnd: 13713
    functionName: MUTABLE_GV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUTABLE_GV(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13717
      start: 13716
    functionDepth: 0
    functionLinenumber: 13716
    functionLinenumberEnd: 13717
    functionName: MUTABLE_HV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUTABLE_HV(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13721
      start: 13720
    functionDepth: 0
    functionLinenumber: 13720
    functionLinenumberEnd: 13721
    functionName: MUTABLE_IO
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUTABLE_IO(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13725
      start: 13724
    functionDepth: 0
    functionLinenumber: 13724
    functionLinenumberEnd: 13725
    functionName: MUTABLE_SV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUTABLE_SV(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pat
    - ','
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13730
      start: 13729
    functionDepth: 0
    functionLinenumber: 13729
    functionLinenumberEnd: 13730
    functionName: vnewSVpvf
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: vnewSVpvf(pat, args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pat
    - ','
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13732
      start: 13731
    functionDepth: 0
    functionLinenumber: 13731
    functionLinenumberEnd: 13732
    functionName: vnewSVpvf
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: vnewSVpvf(pat, args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - pat
    - ','
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13737
      start: 13736
    functionDepth: 0
    functionLinenumber: 13736
    functionLinenumberEnd: 13737
    functionName: sv_vcatpvf
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_vcatpvf(sv, pat, args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - pat
    - ','
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13741
      start: 13740
    functionDepth: 0
    functionLinenumber: 13740
    functionLinenumberEnd: 13741
    functionName: sv_vsetpvf
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_vsetpvf(sv, pat, args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:13760,1
    - Dst: sv_vcatpvfn
      Src: /src/postgres/src/pl/plperl/ppport.h:13761,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/ppport.h:13761,1
    - Dst: 'Null'
      Src: /src/postgres/src/pl/plperl/ppport.h:13761,1
    - Dst: 'Null'
      Src: /src/postgres/src/pl/plperl/ppport.h:13761,1
    - Dst: SvSETMAGIC
      Src: /src/postgres/src/pl/plperl/ppport.h:13762,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:13763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - sv
    - pat
    argTypes:
    - pTHX_*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13764
      start: 13756
    functionDepth: 0
    functionLinenumber: 13756
    functionLinenumberEnd: 13764
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - SvSETMAGIC
    - sv_vcatpvfn
    - strlen
    - 'Null'
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * const sv, const char * const
      pat, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:13789,1
    - Dst: sv_vcatpvfn
      Src: /src/postgres/src/pl/plperl/ppport.h:13790,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/ppport.h:13790,1
    - Dst: 'Null'
      Src: /src/postgres/src/pl/plperl/ppport.h:13790,1
    - Dst: 'Null'
      Src: /src/postgres/src/pl/plperl/ppport.h:13790,1
    - Dst: SvSETMAGIC
      Src: /src/postgres/src/pl/plperl/ppport.h:13791,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:13792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - sv
    - pat
    argTypes:
    - SV*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13793
      start: 13784
    functionDepth: 0
    functionLinenumber: 13784
    functionLinenumberEnd: 13793
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - SvSETMAGIC
    - sv_vcatpvfn
    - strlen
    - 'Null'
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_sv_catpvf_mg_nocontext)(SV * const sv, const char * const
      pat, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - pat
    - ','
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13814
      start: 13809
    functionDepth: 0
    functionLinenumber: 13809
    functionLinenumberEnd: 13814
    functionName: sv_vcatpvf_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_vcatpvf_mg(sv, pat, args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:13833,1
    - Dst: sv_vsetpvfn
      Src: /src/postgres/src/pl/plperl/ppport.h:13834,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/ppport.h:13834,1
    - Dst: 'Null'
      Src: /src/postgres/src/pl/plperl/ppport.h:13834,1
    - Dst: 'Null'
      Src: /src/postgres/src/pl/plperl/ppport.h:13834,1
    - Dst: SvSETMAGIC
      Src: /src/postgres/src/pl/plperl/ppport.h:13835,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:13836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - sv
    - pat
    argTypes:
    - pTHX_*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13837
      start: 13829
    functionDepth: 0
    functionLinenumber: 13829
    functionLinenumberEnd: 13837
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - SvSETMAGIC
    - strlen
    - sv_vsetpvfn
    - 'Null'
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * const sv, const char * const
      pat, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:13862,1
    - Dst: sv_vsetpvfn
      Src: /src/postgres/src/pl/plperl/ppport.h:13863,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/ppport.h:13863,1
    - Dst: 'Null'
      Src: /src/postgres/src/pl/plperl/ppport.h:13863,1
    - Dst: 'Null'
      Src: /src/postgres/src/pl/plperl/ppport.h:13863,1
    - Dst: SvSETMAGIC
      Src: /src/postgres/src/pl/plperl/ppport.h:13864,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:13865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - sv
    - pat
    argTypes:
    - SV*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13866
      start: 13857
    functionDepth: 0
    functionLinenumber: 13857
    functionLinenumberEnd: 13866
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - SvSETMAGIC
    - strlen
    - sv_vsetpvfn
    - 'Null'
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_sv_setpvf_mg_nocontext)(SV * const sv, const char * const
      pat, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - pat
    - ','
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13887
      start: 13882
    functionDepth: 0
    functionLinenumber: 13882
    functionLinenumberEnd: 13887
    functionName: sv_vsetpvf_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_vsetpvf_mg(sv, pat, args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13894
      start: 13893
    functionDepth: 0
    functionLinenumber: 13893
    functionLinenumberEnd: 13894
    functionName: sv_2pv_nolen
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_2pv_nolen(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13906
      start: 13905
    functionDepth: 0
    functionLinenumber: 13905
    functionLinenumberEnd: 13906
    functionName: sv_2pvbyte
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_2pvbyte(sv, lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13919
      start: 13916
    functionDepth: 0
    functionLinenumber: 13916
    functionLinenumberEnd: 13919
    functionName: SvPVbyte
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPVbyte(sv, lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13930
      start: 13929
    functionDepth: 0
    functionLinenumber: 13929
    functionLinenumberEnd: 13930
    functionName: sv_2pvbyte_nolen
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_2pvbyte_nolen(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - lp
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13984
      start: 13983
    functionDepth: 0
    functionLinenumber: 13983
    functionLinenumberEnd: 13984
    functionName: sv_2pv_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_2pv_flags(sv, lp, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - lp
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13988
      start: 13987
    functionDepth: 0
    functionLinenumber: 13987
    functionLinenumberEnd: 13988
    functionName: sv_pvn_force_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_pvn_force_flags(sv, lp, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - lp
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13993
      start: 13992
    functionDepth: 0
    functionLinenumber: 13992
    functionLinenumberEnd: 13993
    functionName: sv_2pv_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_2pv_flags(sv, lp, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - lp
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13997
      start: 13996
    functionDepth: 0
    functionLinenumber: 13996
    functionLinenumberEnd: 13997
    functionName: sv_pvn_force_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_pvn_force_flags(sv, lp, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14008
      start: 14007
    functionDepth: 0
    functionLinenumber: 14007
    functionLinenumberEnd: 14008
    functionName: SvPV_const
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_const(sv, lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14012
      start: 14011
    functionDepth: 0
    functionLinenumber: 14011
    functionLinenumberEnd: 14012
    functionName: SvPV_mutable
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_mutable(sv, lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - lp
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14017
      start: 14014
    functionDepth: 0
    functionLinenumber: 14014
    functionLinenumberEnd: 14017
    functionName: SvPV_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_flags(sv, lp, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - lp
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14023
      start: 14019
    functionDepth: 0
    functionLinenumber: 14019
    functionLinenumberEnd: 14023
    functionName: SvPV_flags_const
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_flags_const(sv, lp, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14029
      start: 14025
    functionDepth: 0
    functionLinenumber: 14025
    functionLinenumberEnd: 14029
    functionName: SvPV_flags_const_nolen
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_flags_const_nolen(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - lp
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14035
      start: 14031
    functionDepth: 0
    functionLinenumber: 14031
    functionLinenumberEnd: 14035
    functionName: SvPV_flags_mutable
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_flags_mutable(sv, lp, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14038
      start: 14037
    functionDepth: 0
    functionLinenumber: 14037
    functionLinenumberEnd: 14038
    functionName: SvPV_force
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_force(sv, lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14042
      start: 14041
    functionDepth: 0
    functionLinenumber: 14041
    functionLinenumberEnd: 14042
    functionName: SvPV_force_nolen
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_force_nolen(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14046
      start: 14045
    functionDepth: 0
    functionLinenumber: 14045
    functionLinenumberEnd: 14046
    functionName: SvPV_force_mutable
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_force_mutable(sv, lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14050
      start: 14049
    functionDepth: 0
    functionLinenumber: 14049
    functionLinenumberEnd: 14050
    functionName: SvPV_force_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_force_nomg(sv, lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14054
      start: 14053
    functionDepth: 0
    functionLinenumber: 14053
    functionLinenumberEnd: 14054
    functionName: SvPV_force_nomg_nolen
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_force_nomg_nolen(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - lp
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14059
      start: 14056
    functionDepth: 0
    functionLinenumber: 14056
    functionLinenumberEnd: 14059
    functionName: SvPV_force_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_force_flags(sv, lp, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14064
      start: 14061
    functionDepth: 0
    functionLinenumber: 14061
    functionLinenumberEnd: 14064
    functionName: SvPV_force_flags_nolen
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_force_flags_nolen(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - lp
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14070
      start: 14066
    functionDepth: 0
    functionLinenumber: 14066
    functionLinenumberEnd: 14070
    functionName: SvPV_force_flags_mutable
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_force_flags_mutable(sv, lp, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14075
      start: 14072
    functionDepth: 0
    functionLinenumber: 14072
    functionLinenumberEnd: 14075
    functionName: SvPV_nolen
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_nolen(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14080
      start: 14077
    functionDepth: 0
    functionLinenumber: 14077
    functionLinenumberEnd: 14080
    functionName: SvPV_nolen_const
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_nolen_const(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14085
      start: 14084
    functionDepth: 0
    functionLinenumber: 14084
    functionLinenumberEnd: 14085
    functionName: SvPVx_nolen_const
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPVx_nolen_const(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14090
      start: 14089
    functionDepth: 0
    functionLinenumber: 14089
    functionLinenumberEnd: 14090
    functionName: SvPVx_nolen_const
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPVx_nolen_const(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14095
      start: 14094
    functionDepth: 0
    functionLinenumber: 14094
    functionLinenumberEnd: 14095
    functionName: SvPV_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_nomg(sv, lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14099
      start: 14098
    functionDepth: 0
    functionLinenumber: 14098
    functionLinenumberEnd: 14099
    functionName: SvPV_nomg_const
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_nomg_const(sv, lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14103
      start: 14102
    functionDepth: 0
    functionLinenumber: 14102
    functionLinenumberEnd: 14103
    functionName: SvPV_nomg_const_nolen
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_nomg_const_nolen(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14108
      start: 14106
    functionDepth: 0
    functionLinenumber: 14106
    functionLinenumberEnd: 14108
    functionName: SvPV_nomg_nolen
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_nomg_nolen(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14114
      start: 14110
    functionDepth: 0
    functionLinenumber: 14110
    functionLinenumberEnd: 14114
    functionName: SvPV_renew
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPV_renew(sv,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14117
      start: 14116
    functionDepth: 0
    functionLinenumber: 14116
    functionLinenumberEnd: 14117
    functionName: SvPVCLEAR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPVCLEAR(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14307
      start: 14306
    functionDepth: 0
    functionLinenumber: 14306
    functionLinenumberEnd: 14307
    functionName: packWARN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: packWARN(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14311
      start: 14310
    functionDepth: 0
    functionLinenumber: 14310
    functionLinenumberEnd: 14311
    functionName: packWARN2
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: packWARN2(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14315
      start: 14314
    functionDepth: 0
    functionLinenumber: 14314
    functionLinenumberEnd: 14315
    functionName: packWARN3
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: packWARN3(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14319
      start: 14318
    functionDepth: 0
    functionLinenumber: 14318
    functionLinenumberEnd: 14319
    functionName: packWARN4
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: packWARN4(a,b,c,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14324
      start: 14323
    functionDepth: 0
    functionLinenumber: 14323
    functionLinenumberEnd: 14324
    functionName: ckWARN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14326
      start: 14325
    functionDepth: 0
    functionLinenumber: 14325
    functionLinenumberEnd: 14326
    functionName: ckWARN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14330
      start: 14329
    functionDepth: 0
    functionLinenumber: 14329
    functionLinenumberEnd: 14330
    functionName: ckWARN2
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN2(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14334
      start: 14333
    functionDepth: 0
    functionLinenumber: 14333
    functionLinenumberEnd: 14334
    functionName: ckWARN3
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN3(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14338
      start: 14337
    functionDepth: 0
    functionLinenumber: 14337
    functionLinenumberEnd: 14338
    functionName: ckWARN4
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN4(a,b,c,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14343
      start: 14342
    functionDepth: 0
    functionLinenumber: 14342
    functionLinenumberEnd: 14343
    functionName: ckWARN_d
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN_d(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14345
      start: 14344
    functionDepth: 0
    functionLinenumber: 14344
    functionLinenumberEnd: 14345
    functionName: ckWARN_d
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN_d(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14349
      start: 14348
    functionDepth: 0
    functionLinenumber: 14348
    functionLinenumberEnd: 14349
    functionName: ckWARN2_d
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN2_d(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14353
      start: 14352
    functionDepth: 0
    functionLinenumber: 14352
    functionLinenumberEnd: 14353
    functionName: ckWARN3_d
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN3_d(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14357
      start: 14356
    functionDepth: 0
    functionLinenumber: 14356
    functionLinenumberEnd: 14357
    functionName: ckWARN4_d
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ckWARN4_d(a,b,c,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - err
    - ','
    - pat
    - ','
    - argsp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14366
      start: 14359
    functionDepth: 0
    functionLinenumber: 14359
    functionLinenumberEnd: 14366
    functionName: vwarner
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: vwarner(err, pat, argsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:14385,1
    - Dst: vwarner
      Src: /src/postgres/src/pl/plperl/ppport.h:14386,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:14387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - err
    - pat
    argTypes:
    - U32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14388
      start: 14381
    functionDepth: 1
    functionLinenumber: 14381
    functionLinenumberEnd: 14388
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vwarner
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_warner)(U32 err, const char *pat, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ckWARN
      Src: /src/postgres/src/pl/plperl/ppport.h:14415,1
    - Dst: ckWARN
      Src: /src/postgres/src/pl/plperl/ppport.h:14416,1
    - Dst: ckWARN
      Src: /src/postgres/src/pl/plperl/ppport.h:14417,1
    - Dst: ckWARN
      Src: /src/postgres/src/pl/plperl/ppport.h:14418,1
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:14423,1
    - Dst: vwarner
      Src: /src/postgres/src/pl/plperl/ppport.h:14424,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:14425,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - U32
    - pat
    argTypes:
    - pTHX_
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14426
      start: 14410
    functionDepth: 1
    functionLinenumber: 14410
    functionLinenumberEnd: 14426
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vwarner
    - ckWARN
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_ck_warner)(pTHX_ U32 err, const char *pat, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ckWARN_d
      Src: /src/postgres/src/pl/plperl/ppport.h:14450,1
    - Dst: ckWARN_d
      Src: /src/postgres/src/pl/plperl/ppport.h:14451,1
    - Dst: ckWARN_d
      Src: /src/postgres/src/pl/plperl/ppport.h:14452,1
    - Dst: ckWARN_d
      Src: /src/postgres/src/pl/plperl/ppport.h:14453,1
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:14458,1
    - Dst: vwarner
      Src: /src/postgres/src/pl/plperl/ppport.h:14459,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:14460,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - U32
    - pat
    argTypes:
    - pTHX_
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14461
      start: 14445
    functionDepth: 1
    functionLinenumber: 14445
    functionLinenumberEnd: 14461
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - ckWARN_d
    - vwarner
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_ck_warner_d)(pTHX_ U32 err, const char *pat, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - uv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14509
      start: 14501
    functionDepth: 0
    functionLinenumber: 14501
    functionLinenumberEnd: 14509
    functionName: sv_setuv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setuv(sv, uv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - uv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14512
      start: 14511
    functionDepth: 0
    functionLinenumber: 14511
    functionLinenumberEnd: 14512
    functionName: newSVuv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVuv(uv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14517
      start: 14516
    functionDepth: 0
    functionLinenumber: 14516
    functionLinenumberEnd: 14517
    functionName: sv_2uv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_2uv(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14522
      start: 14521
    functionDepth: 0
    functionLinenumber: 14521
    functionLinenumberEnd: 14522
    functionName: sv_2uv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_2uv(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14527
      start: 14526
    functionDepth: 0
    functionLinenumber: 14526
    functionLinenumberEnd: 14527
    functionName: SvUVX
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUVX(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14531
      start: 14530
    functionDepth: 0
    functionLinenumber: 14530
    functionLinenumberEnd: 14531
    functionName: SvUVXx
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUVXx(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14535
      start: 14534
    functionDepth: 0
    functionLinenumber: 14534
    functionLinenumberEnd: 14535
    functionName: SvUV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUV(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14540
      start: 14539
    functionDepth: 0
    functionLinenumber: 14539
    functionLinenumberEnd: 14540
    functionName: SvUVx
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUVx(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14545
      start: 14544
    functionDepth: 0
    functionLinenumber: 14544
    functionLinenumberEnd: 14545
    functionName: SvUVx
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUVx(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14555
      start: 14554
    functionDepth: 0
    functionLinenumber: 14554
    functionLinenumberEnd: 14555
    functionName: sv_uv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_uv(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14559
      start: 14558
    functionDepth: 0
    functionLinenumber: 14558
    functionLinenumberEnd: 14559
    functionName: SvUOK
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUOK(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - i
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14562
      start: 14561
    functionDepth: 0
    functionLinenumber: 14561
    functionLinenumberEnd: 14562
    functionName: XST_mUV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XST_mUV(i,v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14566
      start: 14565
    functionDepth: 0
    functionLinenumber: 14565
    functionLinenumberEnd: 14566
    functionName: XSRETURN_UV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSRETURN_UV(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14569
      start: 14568
    functionDepth: 0
    functionLinenumber: 14568
    functionLinenumberEnd: 14569
    functionName: PUSHu
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUSHu(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14573
      start: 14572
    functionDepth: 0
    functionLinenumber: 14572
    functionLinenumberEnd: 14573
    functionName: XPUSHu
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XPUSHu(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - str
    - maxlen
    argTypes:
    - char*
    - Size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14598
      start: 14589
    functionDepth: 0
    functionLinenumber: 14589
    functionLinenumberEnd: 14598
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size_t
    signature: Size_t DPPP_(my_my_strnlen)(const char *str, Size_t maxlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s1
    - ','
    - s2
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14606
      start: 14605
    functionDepth: 0
    functionLinenumber: 14605
    functionLinenumberEnd: 14606
    functionName: memNE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memNE(s1,s2,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s1
    - ','
    - s2
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14610
      start: 14609
    functionDepth: 0
    functionLinenumber: 14609
    functionLinenumberEnd: 14610
    functionName: memEQ
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memEQ(s1,s2,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s1
    - ','
    - s2
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14615
      start: 14614
    functionDepth: 0
    functionLinenumber: 14614
    functionLinenumberEnd: 14615
    functionName: memNE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memNE(s1,s2,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s1
    - ','
    - s2
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14619
      start: 14618
    functionDepth: 0
    functionLinenumber: 14618
    functionLinenumberEnd: 14619
    functionName: memEQ
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memEQ(s1,s2,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s1
    - ','
    - l
    - ','
    - s2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14625
      start: 14623
    functionDepth: 0
    functionLinenumber: 14623
    functionLinenumberEnd: 14625
    functionName: memEQs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memEQs(s1, l, s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s1
    - ','
    - l
    - ','
    - s2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14629
      start: 14628
    functionDepth: 0
    functionLinenumber: 14628
    functionLinenumberEnd: 14629
    functionName: memNEs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memNEs(s1, l, s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14632
      start: 14631
    functionDepth: 0
    functionLinenumber: 14631
    functionLinenumberEnd: 14632
    functionName: memCHRs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memCHRs(s, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - d
    - ','
    - n
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14635
      start: 14634
    functionDepth: 0
    functionLinenumber: 14634
    functionLinenumberEnd: 14635
    functionName: MoveD
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MoveD(s,d,n,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - d
    - ','
    - n
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14639
      start: 14638
    functionDepth: 0
    functionLinenumber: 14638
    functionLinenumberEnd: 14639
    functionName: CopyD
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopyD(s,d,n,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - d
    - ','
    - n
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14644
      start: 14643
    functionDepth: 0
    functionLinenumber: 14643
    functionLinenumberEnd: 14644
    functionName: ZeroD
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZeroD(d,n,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - d
    - ','
    - n
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14649
      start: 14648
    functionDepth: 0
    functionLinenumber: 14648
    functionLinenumberEnd: 14649
    functionName: ZeroD
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZeroD(d,n,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - d
    - ','
    - n
    - ','
    - t
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14654
      start: 14653
    functionDepth: 0
    functionLinenumber: 14653
    functionLinenumberEnd: 14654
    functionName: PoisonWith
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PoisonWith(d,n,t,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - d
    - ','
    - n
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14658
      start: 14657
    functionDepth: 0
    functionLinenumber: 14657
    functionLinenumberEnd: 14658
    functionName: PoisonNew
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PoisonNew(d,n,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - d
    - ','
    - n
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14662
      start: 14661
    functionDepth: 0
    functionLinenumber: 14661
    functionLinenumberEnd: 14662
    functionName: PoisonFree
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PoisonFree(d,n,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - d
    - ','
    - n
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14666
      start: 14665
    functionDepth: 0
    functionLinenumber: 14665
    functionLinenumberEnd: 14666
    functionName: Poison
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Poison(d,n,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - v
    - ','
    - n
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14669
      start: 14668
    functionDepth: 0
    functionLinenumber: 14668
    functionLinenumberEnd: 14669
    functionName: Newx
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Newx(v,n,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - v
    - ','
    - n
    - ','
    - t
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14673
      start: 14672
    functionDepth: 0
    functionLinenumber: 14672
    functionLinenumberEnd: 14673
    functionName: Newxc
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Newxc(v,n,t,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - v
    - ','
    - n
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14677
      start: 14676
    functionDepth: 0
    functionLinenumber: 14676
    functionLinenumberEnd: 14677
    functionName: Newxz
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Newxz(v,n,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14697
      start: 14691
    functionDepth: 0
    functionLinenumber: 14691
    functionLinenumberEnd: 14697
    functionName: D_PPP_FIX_UTF8_ERRSV_FOR_SV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_FIX_UTF8_ERRSV_FOR_SV(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14699
      start: 14698
    functionDepth: 0
    functionLinenumber: 14698
    functionLinenumberEnd: 14699
    functionName: D_PPP_FIX_UTF8_ERRSV_FOR_SV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_FIX_UTF8_ERRSV_FOR_SV(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14711
      start: 14700
    functionDepth: 0
    functionLinenumber: 14700
    functionLinenumberEnd: 14711
    functionName: croak_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: croak_sv(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14713
      start: 14712
    functionDepth: 0
    functionLinenumber: 14712
    functionLinenumberEnd: 14713
    functionName: croak_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: croak_sv(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14715
      start: 14714
    functionDepth: 0
    functionLinenumber: 14714
    functionLinenumberEnd: 14715
    functionName: croak_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: croak_sv(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14732
      start: 14731
    functionDepth: 0
    functionLinenumber: 14731
    functionLinenumberEnd: 14732
    functionName: die_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: die_sv(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: croak_sv
      Src: /src/postgres/src/pl/plperl/ppport.h:14737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - baseex
    argTypes:
    - pTHX_*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14739
      start: 14734
    functionDepth: 1
    functionLinenumber: 14734
    functionLinenumberEnd: 14739
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - croak_sv
    linkageType: ''
    returnType: OP
    signature: 'OP *

      DPPP_(my_die_sv)(pTHX_ SV *baseex)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14746
      start: 14745
    functionDepth: 0
    functionLinenumber: 14745
    functionLinenumberEnd: 14746
    functionName: warn_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: warn_sv(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14748
      start: 14747
    functionDepth: 0
    functionLinenumber: 14747
    functionLinenumberEnd: 14748
    functionName: warn_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: warn_sv(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14765
      start: 14764
    functionDepth: 0
    functionLinenumber: 14764
    functionLinenumberEnd: 14765
    functionName: vmess
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: vmess(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mess
      Src: /src/postgres/src/pl/plperl/ppport.h:14771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pat
    - args
    argTypes:
    - pTHX_*
    - va_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14773
      start: 14768
    functionDepth: 0
    functionLinenumber: 14768
    functionLinenumberEnd: 14773
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - mess
    linkageType: ''
    returnType: SV
    signature: 'SV *

      DPPP_(my_vmess)(pTHX_ const char* pat, va_list* args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:14800,1
    - Dst: vmess
      Src: /src/postgres/src/pl/plperl/ppport.h:14801,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:14802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - pat
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14804
      start: 14794
    functionDepth: 1
    functionLinenumber: 14794
    functionLinenumberEnd: 14804
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vmess
    linkageType: ''
    returnType: SV
    signature: 'SV *

      DPPP_(my_mess_nocontext)(const char* pat, ...)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:14825,1
    - Dst: vmess
      Src: /src/postgres/src/pl/plperl/ppport.h:14826,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:14827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pat
    argTypes:
    - pTHX_*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14829
      start: 14820
    functionDepth: 1
    functionLinenumber: 14820
    functionLinenumberEnd: 14829
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vmess
    linkageType: ''
    returnType: SV
    signature: 'SV *

      DPPP_(my_mess)(pTHX_ const char* pat, ...)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14852
      start: 14851
    functionDepth: 0
    functionLinenumber: 14851
    functionLinenumberEnd: 14852
    functionName: mess_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mess_sv(a,b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SvPOK
      Src: /src/postgres/src/pl/plperl/ppport.h:14860,1
    - Dst: SvCUR
      Src: /src/postgres/src/pl/plperl/ppport.h:14860,1
    - Dst: SvEND
      Src: /src/postgres/src/pl/plperl/ppport.h:14860,1
    - Dst: mess
      Src: /src/postgres/src/pl/plperl/ppport.h:14863,1
    - Dst: SvSetSV_nosteal
      Src: /src/postgres/src/pl/plperl/ppport.h:14864,1
    - Dst: sv_catsv
      Src: /src/postgres/src/pl/plperl/ppport.h:14869,1
    - Dst: mess
      Src: /src/postgres/src/pl/plperl/ppport.h:14869,1
    - Dst: mess
      Src: /src/postgres/src/pl/plperl/ppport.h:14873,1
    - Dst: newSVsv
      Src: /src/postgres/src/pl/plperl/ppport.h:14874,1
    - Dst: SvSetSV_nosteal
      Src: /src/postgres/src/pl/plperl/ppport.h:14875,1
    - Dst: sv_catsv
      Src: /src/postgres/src/pl/plperl/ppport.h:14876,1
    - Dst: sv_dec
      Src: /src/postgres/src/pl/plperl/ppport.h:14877,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - basemsg
    - consume
    argTypes:
    - pTHX_*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14879
      start: 14854
    functionDepth: 0
    functionLinenumber: 14854
    functionLinenumberEnd: 14879
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - sv_catsv
    - mess
    - newSVsv
    - sv_dec
    - SvEND
    - SvPOK
    - SvSetSV_nosteal
    - SvCUR
    linkageType: ''
    returnType: SV
    signature: 'SV *

      DPPP_(my_mess_sv)(pTHX_ SV *basemsg, bool consume)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14893
      start: 14892
    functionDepth: 0
    functionLinenumber: 14892
    functionLinenumberEnd: 14893
    functionName: croak_no_modify
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: croak_no_modify()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14894
      start: 14893
    functionDepth: 0
    functionLinenumber: 14893
    functionLinenumberEnd: 14894
    functionName: Perl_croak_no_modify
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Perl_croak_no_modify()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14899
      start: 14898
    functionDepth: 0
    functionLinenumber: 14898
    functionLinenumberEnd: 14899
    functionName: croak_memory_wrap
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: croak_memory_wrap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14901
      start: 14900
    functionDepth: 0
    functionLinenumber: 14900
    functionLinenumberEnd: 14901
    functionName: croak_memory_wrap
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: croak_memory_wrap()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CvGV
      Src: /src/postgres/src/pl/plperl/ppport.h:14924,1
    - Dst: GvNAME
      Src: /src/postgres/src/pl/plperl/ppport.h:14929,1
    - Dst: GvSTASH
      Src: /src/postgres/src/pl/plperl/ppport.h:14930,1
    - Dst: HvNAME
      Src: /src/postgres/src/pl/plperl/ppport.h:14931,1
    - Dst: croak
      Src: /src/postgres/src/pl/plperl/ppport.h:14934,1
    - Dst: croak
      Src: /src/postgres/src/pl/plperl/ppport.h:14936,1
    - Dst: croak
      Src: /src/postgres/src/pl/plperl/ppport.h:14939,1
    - Dst: PTR2UV
      Src: /src/postgres/src/pl/plperl/ppport.h:14939,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - cv
    - params
    argTypes:
    - CV*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14941
      start: 14920
    functionDepth: 1
    functionLinenumber: 14920
    functionLinenumberEnd: 14941
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - GvNAME
    - HvNAME
    - croak
    - PTR2UV
    - CvGV
    - GvSTASH
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const
      params)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14947
      start: 14946
    functionDepth: 0
    functionLinenumber: 14946
    functionLinenumberEnd: 14947
    functionName: mPUSHs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mPUSHs(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14955
      start: 14954
    functionDepth: 0
    functionLinenumber: 14954
    functionLinenumberEnd: 14955
    functionName: mPUSHp
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mPUSHp(p,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14959
      start: 14958
    functionDepth: 0
    functionLinenumber: 14958
    functionLinenumberEnd: 14959
    functionName: mPUSHn
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mPUSHn(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14963
      start: 14962
    functionDepth: 0
    functionLinenumber: 14962
    functionLinenumberEnd: 14963
    functionName: mPUSHi
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mPUSHi(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14967
      start: 14966
    functionDepth: 0
    functionLinenumber: 14966
    functionLinenumberEnd: 14967
    functionName: mPUSHu
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mPUSHu(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14970
      start: 14969
    functionDepth: 0
    functionLinenumber: 14969
    functionLinenumberEnd: 14970
    functionName: mXPUSHs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mXPUSHs(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14978
      start: 14977
    functionDepth: 0
    functionLinenumber: 14977
    functionLinenumberEnd: 14978
    functionName: mXPUSHp
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mXPUSHp(p,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14982
      start: 14981
    functionDepth: 0
    functionLinenumber: 14981
    functionLinenumberEnd: 14982
    functionName: mXPUSHn
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mXPUSHn(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14986
      start: 14985
    functionDepth: 0
    functionLinenumber: 14985
    functionLinenumberEnd: 14986
    functionName: mXPUSHi
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mXPUSHi(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14990
      start: 14989
    functionDepth: 0
    functionLinenumber: 14989
    functionLinenumberEnd: 14990
    functionName: mXPUSHu
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mXPUSHu(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cond
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15050
      start: 15049
    functionDepth: 0
    functionLinenumber: 15049
    functionLinenumberEnd: 15050
    functionName: D_PPP_CROAK_IF_ERROR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_CROAK_IF_ERROR(cond)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cond
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15052
      start: 15051
    functionDepth: 0
    functionLinenumber: 15051
    functionLinenumberEnd: 15052
    functionName: D_PPP_CROAK_IF_ERROR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_CROAK_IF_ERROR(cond)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15062
      start: 15060
    functionDepth: 0
    functionLinenumber: 15060
    functionLinenumberEnd: 15062
    functionName: call_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: call_sv(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15065
      start: 15063
    functionDepth: 0
    functionLinenumber: 15063
    functionLinenumberEnd: 15065
    functionName: call_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: call_sv(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15075
      start: 15074
    functionDepth: 0
    functionLinenumber: 15074
    functionLinenumberEnd: 15075
    functionName: eval_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: eval_sv(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15077
      start: 15076
    functionDepth: 0
    functionLinenumber: 15076
    functionLinenumberEnd: 15077
    functionName: eval_sv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: eval_sv(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - croak_on_error
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15093
      start: 15092
    functionDepth: 0
    functionLinenumber: 15092
    functionLinenumberEnd: 15093
    functionName: eval_pv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: eval_pv(p, croak_on_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - croak_on_error
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15095
      start: 15094
    functionDepth: 0
    functionLinenumber: 15094
    functionLinenumberEnd: 15095
    functionName: eval_pv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: eval_pv(p, croak_on_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15115
      start: 15114
    functionDepth: 0
    functionLinenumber: 15114
    functionLinenumberEnd: 15115
    functionName: eval_pv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: eval_pv(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: newSVpv
      Src: /src/postgres/src/pl/plperl/ppport.h:15122,1
    - Dst: PUSHMARK
      Src: /src/postgres/src/pl/plperl/ppport.h:15124,1
    - Dst: eval_sv
      Src: /src/postgres/src/pl/plperl/ppport.h:15125,1
    - Dst: SvREFCNT_dec
      Src: /src/postgres/src/pl/plperl/ppport.h:15126,1
    - Dst: D_PPP_CROAK_IF_ERROR
      Src: /src/postgres/src/pl/plperl/ppport.h:15132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - p
    - croak_on_error
    argTypes:
    - char*
    - I32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15135
      start: 15118
    functionDepth: 1
    functionLinenumber: 15118
    functionLinenumberEnd: 15135
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - SvREFCNT_dec
    - PUSHMARK
    - newSVpv
    - eval_sv
    - D_PPP_CROAK_IF_ERROR
    linkageType: ''
    returnType: SV
    signature: 'SV *

      DPPP_(my_eval_pv)(const char *p, I32 croak_on_error)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15154
      start: 15153
    functionDepth: 0
    functionLinenumber: 15153
    functionLinenumberEnd: 15154
    functionName: vload_module
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: vload_module(a,b,c,d)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: newSVOP
      Src: /src/postgres/src/pl/plperl/ppport.h:15164,1
    - Dst: SvREADONLY_off
      Src: /src/postgres/src/pl/plperl/ppport.h:15170,1
    - Dst: newSVOP
      Src: /src/postgres/src/pl/plperl/ppport.h:15173,1
    - Dst: sawparens
      Src: /src/postgres/src/pl/plperl/ppport.h:15178,1
    - Dst: newNULLLIST
      Src: /src/postgres/src/pl/plperl/ppport.h:15178,1
    - Dst: va_arg
      Src: /src/postgres/src/pl/plperl/ppport.h:15181,1
    - Dst: va_arg
      Src: /src/postgres/src/pl/plperl/ppport.h:15186,1
    - Dst: append_elem
      Src: /src/postgres/src/pl/plperl/ppport.h:15188,1
    - Dst: newSVOP
      Src: /src/postgres/src/pl/plperl/ppport.h:15188,1
    - Dst: va_arg
      Src: /src/postgres/src/pl/plperl/ppport.h:15189,1
    - Dst: utilize
      Src: /src/postgres/src/pl/plperl/ppport.h:15197,1
    - Dst: start_subparse
      Src: /src/postgres/src/pl/plperl/ppport.h:15197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - flags
    - name
    - ver
    - args
    argTypes:
    - U32
    - SV*
    - SV*
    - va_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15206
      start: 15157
    functionDepth: 1
    functionLinenumber: 15157
    functionLinenumberEnd: 15206
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - utilize
    - sawparens
    - start_subparse
    - append_elem
    - newSVOP
    - SvREADONLY_off
    - va_arg
    - newNULLLIST
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:15232,1
    - Dst: vload_module
      Src: /src/postgres/src/pl/plperl/ppport.h:15233,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:15234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - flags
    - name
    - ver
    argTypes:
    - U32
    - SV*
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15235
      start: 15228
    functionDepth: 1
    functionLinenumber: 15228
    functionLinenumberEnd: 15235
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vload_module
    linkageType: ''
    returnType: void
    signature: void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15241
      start: 15240
    functionDepth: 0
    functionLinenumber: 15240
    functionLinenumberEnd: 15241
    functionName: newRV_inc
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newRV_inc(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15246
      start: 15245
    functionDepth: 0
    functionLinenumber: 15245
    functionLinenumberEnd: 15246
    functionName: newRV_noinc
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newRV_noinc(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15248
      start: 15247
    functionDepth: 0
    functionLinenumber: 15247
    functionLinenumberEnd: 15248
    functionName: newRV_noinc
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newRV_noinc(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15364
      start: 15357
    functionDepth: 0
    functionLinenumber: 15357
    functionLinenumberEnd: 15364
    functionName: SvREFCNT_inc
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15367
      start: 15365
    functionDepth: 0
    functionLinenumber: 15365
    functionLinenumberEnd: 15367
    functionName: SvREFCNT_inc
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15378
      start: 15372
    functionDepth: 0
    functionLinenumber: 15372
    functionLinenumberEnd: 15378
    functionName: SvREFCNT_inc_simple
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_simple(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15381
      start: 15379
    functionDepth: 0
    functionLinenumber: 15379
    functionLinenumberEnd: 15381
    functionName: SvREFCNT_inc_simple
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_simple(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15392
      start: 15386
    functionDepth: 0
    functionLinenumber: 15386
    functionLinenumberEnd: 15392
    functionName: SvREFCNT_inc_NN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_NN(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15395
      start: 15393
    functionDepth: 0
    functionLinenumber: 15393
    functionLinenumberEnd: 15395
    functionName: SvREFCNT_inc_NN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_NN(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15406
      start: 15400
    functionDepth: 0
    functionLinenumber: 15400
    functionLinenumberEnd: 15406
    functionName: SvREFCNT_inc_void
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_void(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15409
      start: 15407
    functionDepth: 0
    functionLinenumber: 15407
    functionLinenumberEnd: 15409
    functionName: SvREFCNT_inc_void
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_void(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15413
      start: 15412
    functionDepth: 0
    functionLinenumber: 15412
    functionLinenumberEnd: 15413
    functionName: SvREFCNT_inc_simple_void
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_simple_void(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15417
      start: 15416
    functionDepth: 0
    functionLinenumber: 15416
    functionLinenumberEnd: 15417
    functionName: SvREFCNT_inc_simple_NN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_simple_NN(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15421
      start: 15420
    functionDepth: 0
    functionLinenumber: 15420
    functionLinenumberEnd: 15421
    functionName: SvREFCNT_inc_void_NN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_void_NN(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15425
      start: 15424
    functionDepth: 0
    functionLinenumber: 15424
    functionLinenumberEnd: 15425
    functionName: SvREFCNT_inc_simple_void_NN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvREFCNT_inc_simple_void_NN(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15430
      start: 15429
    functionDepth: 0
    functionLinenumber: 15429
    functionLinenumberEnd: 15430
    functionName: newSV_type
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSV_type(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15432
      start: 15431
    functionDepth: 0
    functionLinenumber: 15431
    functionLinenumberEnd: 15432
    functionName: newSV_type
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSV_type(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15437
      start: 15436
    functionDepth: 0
    functionLinenumber: 15436
    functionLinenumberEnd: 15437
    functionName: D_PPP_CONSTPV_ARG
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_CONSTPV_ARG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15439
      start: 15438
    functionDepth: 0
    functionLinenumber: 15438
    functionLinenumberEnd: 15439
    functionName: D_PPP_CONSTPV_ARG
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_CONSTPV_ARG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15444
      start: 15441
    functionDepth: 0
    functionLinenumber: 15441
    functionLinenumberEnd: 15444
    functionName: newSVpvn
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVpvn(data,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - len
    - ','
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15447
      start: 15446
    functionDepth: 0
    functionLinenumber: 15446
    functionLinenumberEnd: 15447
    functionName: newSVpvn_utf8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVpvn_utf8(s, len, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - len
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15455
      start: 15454
    functionDepth: 0
    functionLinenumber: 15454
    functionLinenumberEnd: 15455
    functionName: newSVpvn_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVpvn_flags(s, len, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - len
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15457
      start: 15456
    functionDepth: 0
    functionLinenumber: 15456
    functionLinenumberEnd: 15457
    functionName: newSVpvn_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVpvn_flags(s, len, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - dstr
    - ','
    - sstr
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15476
      start: 15466
    functionDepth: 0
    functionLinenumber: 15466
    functionLinenumberEnd: 15476
    functionName: sv_setsv_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setsv_flags(dstr, sstr, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - dstr
    - ','
    - sstr
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15515
      start: 15493
    functionDepth: 0
    functionLinenumber: 15493
    functionLinenumberEnd: 15515
    functionName: sv_setsv_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setsv_flags(dstr, sstr, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - dstr
    - ','
    - sstr
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15546
      start: 15519
    functionDepth: 0
    functionLinenumber: 15519
    functionLinenumberEnd: 15546
    functionName: sv_setsv_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setsv_flags(dstr, sstr, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15553
      start: 15552
    functionDepth: 0
    functionLinenumber: 15552
    functionLinenumberEnd: 15553
    functionName: newSVsv_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVsv_flags(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15558
      start: 15557
    functionDepth: 0
    functionLinenumber: 15557
    functionLinenumberEnd: 15558
    functionName: newSVsv_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVsv_flags(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15563
      start: 15562
    functionDepth: 0
    functionLinenumber: 15562
    functionLinenumberEnd: 15563
    functionName: newSVsv_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVsv_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15568
      start: 15567
    functionDepth: 0
    functionLinenumber: 15567
    functionLinenumberEnd: 15568
    functionName: sv_mortalcopy_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_mortalcopy_flags(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15573
      start: 15572
    functionDepth: 0
    functionLinenumber: 15572
    functionLinenumberEnd: 15573
    functionName: sv_mortalcopy_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_mortalcopy_flags(sv, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15580
      start: 15577
    functionDepth: 0
    functionLinenumber: 15577
    functionLinenumberEnd: 15580
    functionName: SvMAGIC_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvMAGIC_set(sv, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15585
      start: 15584
    functionDepth: 0
    functionLinenumber: 15584
    functionLinenumberEnd: 15585
    functionName: SvPVX_const
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPVX_const(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15589
      start: 15588
    functionDepth: 0
    functionLinenumber: 15588
    functionLinenumberEnd: 15589
    functionName: SvPVX_mutable
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPVX_mutable(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15594
      start: 15591
    functionDepth: 0
    functionLinenumber: 15591
    functionLinenumberEnd: 15594
    functionName: SvRV_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvRV_set(sv, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15599
      start: 15598
    functionDepth: 0
    functionLinenumber: 15598
    functionLinenumberEnd: 15599
    functionName: SvPVX_const
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPVX_const(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15603
      start: 15602
    functionDepth: 0
    functionLinenumber: 15602
    functionLinenumberEnd: 15603
    functionName: SvPVX_mutable
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvPVX_mutable(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15608
      start: 15605
    functionDepth: 0
    functionLinenumber: 15605
    functionLinenumberEnd: 15608
    functionName: SvRV_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvRV_set(sv, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15615
      start: 15612
    functionDepth: 0
    functionLinenumber: 15612
    functionLinenumberEnd: 15615
    functionName: SvSTASH_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvSTASH_set(sv, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15622
      start: 15619
    functionDepth: 0
    functionLinenumber: 15619
    functionLinenumberEnd: 15622
    functionName: SvUV_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUV_set(sv, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15629
      start: 15626
    functionDepth: 0
    functionLinenumber: 15626
    functionLinenumberEnd: 15629
    functionName: SvUV_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUV_set(sv, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15654
      start: 15653
    functionDepth: 0
    functionLinenumber: 15653
    functionLinenumberEnd: 15654
    functionName: newSVpvn_share
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVpvn_share(a,b,c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PERL_HASH
      Src: /src/postgres/src/pl/plperl/ppport.h:15664,1
    - Dst: newSVpvn
      Src: /src/postgres/src/pl/plperl/ppport.h:15665,1
    - Dst: sv_upgrade
      Src: /src/postgres/src/pl/plperl/ppport.h:15666,1
    - Dst: SvIVX
      Src: /src/postgres/src/pl/plperl/ppport.h:15667,1
    - Dst: SvREADONLY_on
      Src: /src/postgres/src/pl/plperl/ppport.h:15668,1
    - Dst: SvPOK_on
      Src: /src/postgres/src/pl/plperl/ppport.h:15669,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - s
    - len
    - hash
    argTypes:
    - pTHX_*
    - I32
    - U32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15671
      start: 15657
    functionDepth: 1
    functionLinenumber: 15657
    functionLinenumberEnd: 15671
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - SvIVX
    - sv_upgrade
    - SvREADONLY_on
    - SvPOK_on
    - newSVpvn
    - PERL_HASH
    linkageType: ''
    returnType: SV
    signature: 'SV *

      DPPP_(my_newSVpvn_share)(pTHX_ const char *s, I32 len, U32 hash)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15678
      start: 15677
    functionDepth: 0
    functionLinenumber: 15677
    functionLinenumberEnd: 15678
    functionName: SvSHARED_HASH
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvSHARED_HASH(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15681
      start: 15680
    functionDepth: 0
    functionLinenumber: 15680
    functionLinenumberEnd: 15681
    functionName: HvNAME_get
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HvNAME_get(hv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15684
      start: 15683
    functionDepth: 0
    functionLinenumber: 15683
    functionLinenumberEnd: 15684
    functionName: HvNAMELEN_get
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HvNAMELEN_get(hv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - len
    - ','
    - flags
    - ','
    - sv_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15697
      start: 15696
    functionDepth: 0
    functionLinenumber: 15696
    functionLinenumberEnd: 15697
    functionName: gv_fetchpvn_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gv_fetchpvn_flags(name, len, flags, sv_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - gv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15700
      start: 15699
    functionDepth: 0
    functionLinenumber: 15699
    functionLinenumberEnd: 15700
    functionName: GvSVn
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GvSVn(gv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - gv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15704
      start: 15703
    functionDepth: 0
    functionLinenumber: 15703
    functionLinenumberEnd: 15704
    functionName: isGV_with_GP
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isGV_with_GP(gv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - flags
    - ','
    - svt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15708
      start: 15707
    functionDepth: 0
    functionLinenumber: 15707
    functionLinenumberEnd: 15708
    functionName: gv_fetchsv
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gv_fetchsv(name, flags, svt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - namelen
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15711
      start: 15710
    functionDepth: 0
    functionLinenumber: 15710
    functionLinenumberEnd: 15711
    functionName: get_cvn_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: get_cvn_flags(name, namelen, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - gv
    - ','
    - stash
    - ','
    - ptr
    - ','
    - len
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15715
      start: 15714
    functionDepth: 0
    functionLinenumber: 15714
    functionLinenumberEnd: 15715
    functionName: gv_init_pvn
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gv_init_pvn(gv, stash, ptr, len, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15723
      start: 15722
    functionDepth: 0
    functionLinenumber: 15722
    functionLinenumberEnd: 15723
    functionName: STR_WITH_LEN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_WITH_LEN(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15726
      start: 15725
    functionDepth: 0
    functionLinenumber: 15725
    functionLinenumberEnd: 15726
    functionName: newSVpvs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVpvs(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15730
      start: 15729
    functionDepth: 0
    functionLinenumber: 15729
    functionLinenumberEnd: 15730
    functionName: newSVpvs_flags
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVpvs_flags(str, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15734
      start: 15733
    functionDepth: 0
    functionLinenumber: 15733
    functionLinenumberEnd: 15734
    functionName: newSVpvs_share
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newSVpvs_share(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15738
      start: 15737
    functionDepth: 0
    functionLinenumber: 15737
    functionLinenumberEnd: 15738
    functionName: sv_catpvs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_catpvs(sv, str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15742
      start: 15741
    functionDepth: 0
    functionLinenumber: 15741
    functionLinenumberEnd: 15742
    functionName: sv_setpvs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setpvs(sv, str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hv
    - ','
    - key
    - ','
    - lval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15746
      start: 15745
    functionDepth: 0
    functionLinenumber: 15745
    functionLinenumberEnd: 15746
    functionName: hv_fetchs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hv_fetchs(hv, key, lval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hv
    - ','
    - key
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15750
      start: 15749
    functionDepth: 0
    functionLinenumber: 15749
    functionLinenumberEnd: 15750
    functionName: hv_stores
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hv_stores(hv, key, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - flags
    - ','
    - svt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15753
      start: 15752
    functionDepth: 0
    functionLinenumber: 15752
    functionLinenumberEnd: 15753
    functionName: gv_fetchpvs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gv_fetchpvs(name, flags, svt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15757
      start: 15756
    functionDepth: 0
    functionLinenumber: 15756
    functionLinenumberEnd: 15757
    functionName: gv_stashpvs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gv_stashpvs(name, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15760
      start: 15759
    functionDepth: 0
    functionLinenumber: 15759
    functionLinenumberEnd: 15760
    functionName: get_cvs
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: get_cvs(name, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15763
      start: 15762
    functionDepth: 0
    functionLinenumber: 15762
    functionLinenumberEnd: 15763
    functionName: SvGETMAGIC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvGETMAGIC(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15786
      start: 15785
    functionDepth: 0
    functionLinenumber: 15785
    functionLinenumberEnd: 15786
    functionName: SvIV_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvIV_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15790
      start: 15789
    functionDepth: 0
    functionLinenumber: 15789
    functionLinenumberEnd: 15790
    functionName: SvUV_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUV_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15795
      start: 15794
    functionDepth: 0
    functionLinenumber: 15794
    functionLinenumberEnd: 15795
    functionName: SvIV_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvIV_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15799
      start: 15798
    functionDepth: 0
    functionLinenumber: 15798
    functionLinenumberEnd: 15799
    functionName: SvUV_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUV_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15805
      start: 15804
    functionDepth: 0
    functionLinenumber: 15804
    functionLinenumberEnd: 15805
    functionName: SvIV_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvIV_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15809
      start: 15808
    functionDepth: 0
    functionLinenumber: 15808
    functionLinenumberEnd: 15809
    functionName: SvUV_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUV_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15814
      start: 15813
    functionDepth: 0
    functionLinenumber: 15813
    functionLinenumberEnd: 15814
    functionName: SvNV_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvNV_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15818
      start: 15817
    functionDepth: 0
    functionLinenumber: 15817
    functionLinenumberEnd: 15818
    functionName: SvTRUE_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvTRUE_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15827
      start: 15821
    functionDepth: 0
    functionLinenumber: 15821
    functionLinenumberEnd: 15827
    functionName: sv_catpv_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_catpv_mg(sv, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - ptr
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15836
      start: 15830
    functionDepth: 0
    functionLinenumber: 15830
    functionLinenumberEnd: 15836
    functionName: sv_catpvn_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_catpvn_mg(sv, ptr, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dsv
    - ','
    - ssv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15845
      start: 15839
    functionDepth: 0
    functionLinenumber: 15839
    functionLinenumberEnd: 15845
    functionName: sv_catsv_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_catsv_mg(dsv, ssv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15854
      start: 15848
    functionDepth: 0
    functionLinenumber: 15848
    functionLinenumberEnd: 15854
    functionName: sv_setiv_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setiv_mg(sv, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15863
      start: 15857
    functionDepth: 0
    functionLinenumber: 15857
    functionLinenumberEnd: 15863
    functionName: sv_setnv_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setnv_mg(sv, num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15872
      start: 15866
    functionDepth: 0
    functionLinenumber: 15866
    functionLinenumberEnd: 15872
    functionName: sv_setpv_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setpv_mg(sv, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - ptr
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15881
      start: 15875
    functionDepth: 0
    functionLinenumber: 15875
    functionLinenumberEnd: 15881
    functionName: sv_setpvn_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setpvn_mg(sv, ptr, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dsv
    - ','
    - ssv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15890
      start: 15884
    functionDepth: 0
    functionLinenumber: 15884
    functionLinenumberEnd: 15890
    functionName: sv_setsv_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setsv_mg(dsv, ssv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sv
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15899
      start: 15893
    functionDepth: 0
    functionLinenumber: 15893
    functionLinenumberEnd: 15899
    functionName: sv_setuv_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_setuv_mg(sv, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sv
    - ','
    - ptr
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15908
      start: 15902
    functionDepth: 0
    functionLinenumber: 15902
    functionLinenumberEnd: 15908
    functionName: sv_usepvn_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_usepvn_mg(sv, ptr, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15911
      start: 15910
    functionDepth: 0
    functionLinenumber: 15910
    functionLinenumberEnd: 15911
    functionName: SvVSTRING_mg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvVSTRING_mg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - sv
    - ','
    - obj
    - ','
    - how
    - ','
    - name
    - ','
    - namlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15939
      start: 15929
    functionDepth: 0
    functionLinenumber: 15929
    functionLinenumberEnd: 15939
    functionName: sv_magic_portable
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_magic_portable(sv, obj, how, name, namlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15951
      start: 15950
    functionDepth: 0
    functionLinenumber: 15950
    functionLinenumberEnd: 15951
    functionName: sv_magic_portable
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_magic_portable(a, b, c, d, e)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/postgres/src/pl/plperl/ppport.h:15974,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/ppport.h:15974,1
    - Dst: AvPAD_NAMELIST
      Src: /src/postgres/src/pl/plperl/ppport.h:15974,1
    - Dst: SvMAGIC
      Src: /src/postgres/src/pl/plperl/ppport.h:15977,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - sv
    - type
    - vtbl
    argTypes:
    - SV*
    - int
    - MGVTBL*
    assertStmts:
    - condition: (!(SvTYPE(sv) == SVt_PVAV && AvPAD_NAMELIST(sv)))
      pos:
        line_end: 15973
        line_start: 15973
        source_file: /src/postgres/src/pl/plperl/ppport.h
    constantsTouched: []
    func_position:
      end: 15984
      start: 15968
    functionDepth: 1
    functionLinenumber: 15968
    functionLinenumberEnd: 15984
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - SvMAGIC
    - AvPAD_NAMELIST
    - assert
    - SvTYPE
    linkageType: ''
    returnType: MAGIC
    signature: 'MAGIC *

      DPPP_(my_mg_findext)(const SV * sv, int type, const MGVTBL *vtbl)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16003
      start: 16002
    functionDepth: 0
    functionLinenumber: 16002
    functionLinenumberEnd: 16003
    functionName: sv_unmagicext
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_unmagicext(a,b,c)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/ppport.h:16012,1
    - Dst: SvMAGIC
      Src: /src/postgres/src/pl/plperl/ppport.h:16012,1
    - Dst: SvMAGIC
      Src: /src/postgres/src/pl/plperl/ppport.h:16014,1
    - Dst: MGVTBL*::svt_free
      Src: /src/postgres/src/pl/plperl/ppport.h:16020,1
    - Dst: Safefree
      Src: /src/postgres/src/pl/plperl/ppport.h:16023,1
    - Dst: SvREFCNT_dec
      Src: /src/postgres/src/pl/plperl/ppport.h:16025,1
    - Dst: MUTABLE_SV
      Src: /src/postgres/src/pl/plperl/ppport.h:16025,1
    - Dst: Safefree
      Src: /src/postgres/src/pl/plperl/ppport.h:16027,1
    - Dst: SvREFCNT_dec
      Src: /src/postgres/src/pl/plperl/ppport.h:16030,1
    - Dst: Safefree
      Src: /src/postgres/src/pl/plperl/ppport.h:16031,1
    - Dst: SvMAGIC
      Src: /src/postgres/src/pl/plperl/ppport.h:16036,1
    - Dst: SvMAGICAL
      Src: /src/postgres/src/pl/plperl/ppport.h:16037,1
    - Dst: mg_magical
      Src: /src/postgres/src/pl/plperl/ppport.h:16038,1
    - Dst: SvMAGICAL_off
      Src: /src/postgres/src/pl/plperl/ppport.h:16041,1
    - Dst: SvFLAGS
      Src: /src/postgres/src/pl/plperl/ppport.h:16042,1
    - Dst: SvFLAGS
      Src: /src/postgres/src/pl/plperl/ppport.h:16042,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 3
    argNames:
    - sv
    - type
    - vtbl
    argTypes:
    - pTHX_*
    - int
    - MGVTBL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16045
      start: 16006
    functionDepth: 1
    functionLinenumber: 16006
    functionLinenumberEnd: 16045
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - mg_magical
    - Safefree
    - SvREFCNT_dec
    - MGVTBL*::svt_free
    - SvMAGICAL
    - SvMAGICAL_off
    - MUTABLE_SV
    - SvMAGIC
    - SvFLAGS
    - SvTYPE
    linkageType: ''
    returnType: int
    signature: int DPPP_(my_sv_unmagicext)(pTHX_ SV *const sv, const int type, MGVTBL
      *vtbl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16053
      start: 16052
    functionDepth: 0
    functionLinenumber: 16052
    functionLinenumberEnd: 16053
    functionName: CopFILE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16057
      start: 16056
    functionDepth: 0
    functionLinenumber: 16056
    functionLinenumberEnd: 16057
    functionName: CopFILEGV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILEGV(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - pv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16061
      start: 16060
    functionDepth: 0
    functionLinenumber: 16060
    functionLinenumberEnd: 16061
    functionName: CopFILE_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILE_set(c,pv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16065
      start: 16064
    functionDepth: 0
    functionLinenumber: 16064
    functionLinenumberEnd: 16065
    functionName: CopFILESV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILESV(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16069
      start: 16068
    functionDepth: 0
    functionLinenumber: 16068
    functionLinenumberEnd: 16069
    functionName: CopFILEAV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILEAV(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16073
      start: 16072
    functionDepth: 0
    functionLinenumber: 16072
    functionLinenumberEnd: 16073
    functionName: CopSTASHPV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASHPV(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - pv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16077
      start: 16076
    functionDepth: 0
    functionLinenumber: 16076
    functionLinenumberEnd: 16077
    functionName: CopSTASHPV_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASHPV_set(c,pv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16081
      start: 16080
    functionDepth: 0
    functionLinenumber: 16080
    functionLinenumberEnd: 16081
    functionName: CopSTASH
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASH(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - hv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16085
      start: 16084
    functionDepth: 0
    functionLinenumber: 16084
    functionLinenumberEnd: 16085
    functionName: CopSTASH_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASH_set(c,hv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - hv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16091
      start: 16088
    functionDepth: 0
    functionLinenumber: 16088
    functionLinenumberEnd: 16091
    functionName: CopSTASH_eq
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASH_eq(c,hv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16096
      start: 16095
    functionDepth: 0
    functionLinenumber: 16095
    functionLinenumberEnd: 16096
    functionName: CopFILEGV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILEGV(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - gv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16100
      start: 16099
    functionDepth: 0
    functionLinenumber: 16099
    functionLinenumberEnd: 16100
    functionName: CopFILEGV_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILEGV_set(c,gv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - pv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16104
      start: 16103
    functionDepth: 0
    functionLinenumber: 16103
    functionLinenumberEnd: 16104
    functionName: CopFILE_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILE_set(c,pv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16108
      start: 16107
    functionDepth: 0
    functionLinenumber: 16107
    functionLinenumberEnd: 16108
    functionName: CopFILESV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILESV(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16112
      start: 16111
    functionDepth: 0
    functionLinenumber: 16111
    functionLinenumberEnd: 16112
    functionName: CopFILEAV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILEAV(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16116
      start: 16115
    functionDepth: 0
    functionLinenumber: 16115
    functionLinenumberEnd: 16116
    functionName: CopFILE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopFILE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16120
      start: 16119
    functionDepth: 0
    functionLinenumber: 16119
    functionLinenumberEnd: 16120
    functionName: CopSTASH
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASH(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - hv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16124
      start: 16123
    functionDepth: 0
    functionLinenumber: 16123
    functionLinenumberEnd: 16124
    functionName: CopSTASH_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASH_set(c,hv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16128
      start: 16127
    functionDepth: 0
    functionLinenumber: 16127
    functionLinenumberEnd: 16128
    functionName: CopSTASHPV
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASHPV(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - pv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16132
      start: 16131
    functionDepth: 0
    functionLinenumber: 16131
    functionLinenumberEnd: 16132
    functionName: CopSTASHPV_set
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASHPV_set(c,pv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - hv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16136
      start: 16135
    functionDepth: 0
    functionLinenumber: 16135
    functionLinenumberEnd: 16136
    functionName: CopSTASH_eq
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CopSTASH_eq(c,hv)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CxTYPE
      Src: /src/postgres/src/pl/plperl/ppport.h:16151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - cxstk
    - startingblock
    argTypes:
    - PERL_CONTEXT*
    - I32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16161
      start: 16144
    functionDepth: 0
    functionLinenumber: 16144
    functionLinenumberEnd: 16161
    functionName: DPPP_dopoptosub_at
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - CxTYPE
    linkageType: ''
    returnType: I32
    signature: I32 DPPP_dopoptosub_at(const PERL_CONTEXT *cxstk, I32 startingblock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16177
      start: 16176
    functionDepth: 0
    functionLinenumber: 16176
    functionLinenumberEnd: 16177
    functionName: caller_cx
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: caller_cx(a,b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DPPP_dopoptosub_at
      Src: /src/postgres/src/pl/plperl/ppport.h:16183,1
    - Dst: DPPP_dopoptosub_at
      Src: /src/postgres/src/pl/plperl/ppport.h:16193,1
    - Dst: GvCV
      Src: /src/postgres/src/pl/plperl/ppport.h:16198,1
    - Dst: GvCV
      Src: /src/postgres/src/pl/plperl/ppport.h:16199,1
    - Dst: DPPP_dopoptosub_at
      Src: /src/postgres/src/pl/plperl/ppport.h:16203,1
    - Dst: CxTYPE
      Src: /src/postgres/src/pl/plperl/ppport.h:16209,1
    - Dst: CxTYPE
      Src: /src/postgres/src/pl/plperl/ppport.h:16209,1
    - Dst: DPPP_dopoptosub_at
      Src: /src/postgres/src/pl/plperl/ppport.h:16210,1
    - Dst: GvCV
      Src: /src/postgres/src/pl/plperl/ppport.h:16214,1
    - Dst: GvCV
      Src: /src/postgres/src/pl/plperl/ppport.h:16214,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 23
    argCount: 2
    argNames:
    - level
    - dbcxp
    argTypes:
    - pTHX_
    - PERL_CONTEXT**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16219
      start: 16180
    functionDepth: 1
    functionLinenumber: 16180
    functionLinenumberEnd: 16219
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - DPPP_dopoptosub_at
    - CxTYPE
    - GvCV
    linkageType: ''
    returnType: PERL_CONTEXT
    signature: 'PERL_CONTEXT *

      DPPP_(my_caller_cx)(pTHX_ I32 level, const PERL_CONTEXT **dbcxp)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sp
    - ','
    - send
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16264
      start: 16263
    functionDepth: 0
    functionLinenumber: 16263
    functionLinenumberEnd: 16264
    functionName: GROK_NUMERIC_RADIX
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GROK_NUMERIC_RADIX(sp, send)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16295
      start: 16294
    functionDepth: 0
    functionLinenumber: 16294
    functionLinenumberEnd: 16295
    functionName: grok_numeric_radix
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: grok_numeric_radix(a,b)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SvPV
      Src: /src/postgres/src/pl/plperl/ppport.h:16304,1
    - Dst: memEQ
      Src: /src/postgres/src/pl/plperl/ppport.h:16305,1
    - Dst: localeconv
      Src: /src/postgres/src/pl/plperl/ppport.h:16316,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/ppport.h:16319,1
    - Dst: memEQ
      Src: /src/postgres/src/pl/plperl/ppport.h:16320,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 2
    argNames:
    - sp
    - send
    argTypes:
    - pTHX_**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16334
      start: 16297
    functionDepth: 1
    functionLinenumber: 16297
    functionLinenumberEnd: 16334
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - SvPV
    - strlen
    - localeconv
    - memEQ
    linkageType: ''
    returnType: bool
    signature: bool DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char
      *send)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16352
      start: 16351
    functionDepth: 0
    functionLinenumber: 16351
    functionLinenumberEnd: 16352
    functionName: grok_number
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: grok_number(a,b,c)
  - BBCount: 50
    BranchProfiles: []
    Callsites:
    - Dst: isSPACE
      Src: /src/postgres/src/pl/plperl/ppport.h:16365,1
    - Dst: isDIGIT
      Src: /src/postgres/src/pl/plperl/ppport.h:16380,1
    - Dst: isDIGIT
      Src: /src/postgres/src/pl/plperl/ppport.h:16442,1
    - Dst: GROK_NUMERIC_RADIX
      Src: /src/postgres/src/pl/plperl/ppport.h:16469,1
    - Dst: isDIGIT
      Src: /src/postgres/src/pl/plperl/ppport.h:16471,1
    - Dst: GROK_NUMERIC_RADIX
      Src: /src/postgres/src/pl/plperl/ppport.h:16475,1
    - Dst: isDIGIT
      Src: /src/postgres/src/pl/plperl/ppport.h:16478,1
    - Dst: isDIGIT
      Src: /src/postgres/src/pl/plperl/ppport.h:16481,1
    - Dst: isDIGIT
      Src: /src/postgres/src/pl/plperl/ppport.h:16524,1
    - Dst: isDIGIT
      Src: /src/postgres/src/pl/plperl/ppport.h:16527,1
    - Dst: isSPACE
      Src: /src/postgres/src/pl/plperl/ppport.h:16533,1
    - Dst: memEQ
      Src: /src/postgres/src/pl/plperl/ppport.h:16537,1
    CyclomaticComplexity: 104
    EdgeCount: 104
    ICount: 171
    argCount: 3
    argNames:
    - pv
    - len
    - valuep
    argTypes:
    - pTHX_*
    - STRLEN
    - UV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16543
      start: 16354
    functionDepth: 1
    functionLinenumber: 16354
    functionLinenumberEnd: 16543
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - isSPACE
    - GROK_NUMERIC_RADIX
    - memEQ
    - isDIGIT
    linkageType: ''
    returnType: int
    signature: int DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16567
      start: 16566
    functionDepth: 0
    functionLinenumber: 16566
    functionLinenumberEnd: 16567
    functionName: grok_bin
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: grok_bin(a,b,c,d)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: warn
      Src: /src/postgres/src/pl/plperl/ppport.h:16610,1
    - Dst: warn
      Src: /src/postgres/src/pl/plperl/ppport.h:16632,1
    - Dst: warn
      Src: /src/postgres/src/pl/plperl/ppport.h:16641,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 52
    argCount: 4
    argNames:
    - start
    - len_p
    - flags
    - result
    argTypes:
    - pTHX_*
    - STRLEN*
    - I32*
    - NV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16652
      start: 16569
    functionDepth: 0
    functionLinenumber: 16569
    functionLinenumberEnd: 16652
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - warn
    linkageType: ''
    returnType: UV
    signature: UV DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags,
      NV *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16670
      start: 16669
    functionDepth: 0
    functionLinenumber: 16669
    functionLinenumberEnd: 16670
    functionName: grok_hex
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: grok_hex(a,b,c,d)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/pl/plperl/ppport.h:16702,1
    - Dst: warn
      Src: /src/postgres/src/pl/plperl/ppport.h:16713,1
    - Dst: strchr
      Src: /src/postgres/src/pl/plperl/ppport.h:16728,1
    - Dst: warn
      Src: /src/postgres/src/pl/plperl/ppport.h:16735,1
    - Dst: warn
      Src: /src/postgres/src/pl/plperl/ppport.h:16744,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 53
    argCount: 4
    argNames:
    - start
    - len_p
    - flags
    - result
    argTypes:
    - pTHX_*
    - STRLEN*
    - I32*
    - NV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16755
      start: 16672
    functionDepth: 0
    functionLinenumber: 16672
    functionLinenumberEnd: 16755
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - warn
    - strchr
    linkageType: ''
    returnType: UV
    signature: UV DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags,
      NV *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16773
      start: 16772
    functionDepth: 0
    functionLinenumber: 16772
    functionLinenumberEnd: 16773
    functionName: grok_oct
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: grok_oct(a,b,c,d)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: warn
      Src: /src/postgres/src/pl/plperl/ppport.h:16802,1
    - Dst: warn
      Src: /src/postgres/src/pl/plperl/ppport.h:16828,1
    - Dst: warn
      Src: /src/postgres/src/pl/plperl/ppport.h:16838,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 42
    argCount: 4
    argNames:
    - start
    - len_p
    - flags
    - result
    argTypes:
    - pTHX_*
    - STRLEN*
    - I32*
    - NV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16849
      start: 16775
    functionDepth: 0
    functionLinenumber: 16775
    functionLinenumberEnd: 16849
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - warn
    linkageType: ''
    returnType: UV
    signature: UV DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags,
      NV *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:16873,1
    - Dst: vsnprintf
      Src: /src/postgres/src/pl/plperl/ppport.h:16875,1
    - Dst: vsprintf
      Src: /src/postgres/src/pl/plperl/ppport.h:16877,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:16879,1
    - Dst: Perl_croak
      Src: /src/postgres/src/pl/plperl/ppport.h:16881,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - buffer
    - len
    - format
    argTypes:
    - char*
    - Size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16883
      start: 16867
    functionDepth: 0
    functionLinenumber: 16867
    functionLinenumberEnd: 16883
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_end
    - vsprintf
    - va_start
    - vsnprintf
    - Perl_croak
    linkageType: ''
    returnType: int
    signature: int DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char
      *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/pl/plperl/ppport.h:16911,1
    - Dst: vsprintf
      Src: /src/postgres/src/pl/plperl/ppport.h:16912,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plperl/ppport.h:16913,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/ppport.h:16914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - pat
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16915
      start: 16907
    functionDepth: 0
    functionLinenumber: 16907
    functionLinenumberEnd: 16915
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vsprintf
    - strlen
    linkageType: ''
    returnType: int
    signature: int DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/ppport.h:16955,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/ppport.h:16956,1
    - Dst: memcpy
      Src: /src/postgres/src/pl/plperl/ppport.h:16959,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - dst
    - src
    - size
    argTypes:
    - char*
    - char*
    - Size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16963
      start: 16950
    functionDepth: 0
    functionLinenumber: 16950
    functionLinenumberEnd: 16963
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - strlen
    - memcpy
    linkageType: ''
    returnType: Size_t
    signature: Size_t DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/ppport.h:16986,1
    - Dst: memcpy
      Src: /src/postgres/src/pl/plperl/ppport.h:16989,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - dst
    - src
    - size
    argTypes:
    - char*
    - char*
    - Size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16993
      start: 16981
    functionDepth: 0
    functionLinenumber: 16981
    functionLinenumberEnd: 16993
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - strlen
    - memcpy
    linkageType: ''
    returnType: Size_t
    signature: Size_t DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17001
      start: 17000
    functionDepth: 0
    functionLinenumber: 17000
    functionLinenumberEnd: 17001
    functionName: SvUTF8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SvUTF8(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - u
    - ','
    - l
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17016
      start: 17015
    functionDepth: 0
    functionLinenumber: 17015
    functionLinenumberEnd: 17016
    functionName: UTF8fARG
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF8fARG(u,l,p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17021
      start: 17020
    functionDepth: 0
    functionLinenumber: 17020
    functionLinenumberEnd: 17021
    functionName: D_PPP_MIN
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_MIN(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17034
      start: 17032
    functionDepth: 0
    functionLinenumber: 17032
    functionLinenumberEnd: 17034
    functionName: UTF_START_MARK
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF_START_MARK(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17062
      start: 17061
    functionDepth: 0
    functionLinenumber: 17061
    functionLinenumberEnd: 17062
    functionName: NATIVE_UTF8_TO_I8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_UTF8_TO_I8(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17067
      start: 17066
    functionDepth: 0
    functionLinenumber: 17066
    functionLinenumberEnd: 17067
    functionName: NATIVE_UTF8_TO_I8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_UTF8_TO_I8(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17074
      start: 17073
    functionDepth: 0
    functionLinenumber: 17073
    functionLinenumberEnd: 17074
    functionName: I8_TO_NATIVE_UTF8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: I8_TO_NATIVE_UTF8(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17079
      start: 17078
    functionDepth: 0
    functionLinenumber: 17078
    functionLinenumberEnd: 17079
    functionName: I8_TO_NATIVE_UTF8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: I8_TO_NATIVE_UTF8(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17085
      start: 17083
    functionDepth: 0
    functionLinenumber: 17083
    functionLinenumberEnd: 17085
    functionName: UTF_START_MASK
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF_START_MASK(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17113
      start: 17110
    functionDepth: 0
    functionLinenumber: 17110
    functionLinenumberEnd: 17113
    functionName: UTF8_IS_DOWNGRADEABLE_START
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF8_IS_DOWNGRADEABLE_START(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - base
    - ','
    - added
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17124
      start: 17120
    functionDepth: 0
    functionLinenumber: 17120
    functionLinenumberEnd: 17124
    functionName: UTF8_ACCUMULATE
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF8_ACCUMULATE(base, added)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17171
      start: 17167
    functionDepth: 0
    functionLinenumber: 17167
    functionLinenumberEnd: 17171
    functionName: UTF8_SAFE_SKIP
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF8_SAFE_SKIP(s, e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17176
      start: 17173
    functionDepth: 0
    functionLinenumber: 17173
    functionLinenumberEnd: 17176
    functionName: UTF8_CHK_SKIP
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF8_CHK_SKIP(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17181
      start: 17180
    functionDepth: 0
    functionLinenumber: 17180
    functionLinenumberEnd: 17181
    functionName: UTF8_SKIP
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF8_SKIP(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17188
      start: 17187
    functionDepth: 0
    functionLinenumber: 17187
    functionLinenumberEnd: 17188
    functionName: UTF8_IS_INVARIANT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF8_IS_INVARIANT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17193
      start: 17192
    functionDepth: 0
    functionLinenumber: 17192
    functionLinenumberEnd: 17193
    functionName: UTF8_IS_INVARIANT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF8_IS_INVARIANT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17198
      start: 17197
    functionDepth: 0
    functionLinenumber: 17197
    functionLinenumberEnd: 17198
    functionName: UVCHR_IS_INVARIANT
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UVCHR_IS_INVARIANT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17205
      start: 17204
    functionDepth: 0
    functionLinenumber: 17204
    functionLinenumberEnd: 17205
    functionName: D_PPP_UVCHR_SKIP_UPPER
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_UVCHR_SKIP_UPPER(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17209
      start: 17206
    functionDepth: 0
    functionLinenumber: 17206
    functionLinenumberEnd: 17209
    functionName: D_PPP_UVCHR_SKIP_UPPER
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_UVCHR_SKIP_UPPER(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17219
      start: 17211
    functionDepth: 0
    functionLinenumber: 17211
    functionLinenumberEnd: 17219
    functionName: UVCHR_SKIP
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UVCHR_SKIP(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17226
      start: 17225
    functionDepth: 0
    functionLinenumber: 17225
    functionLinenumberEnd: 17226
    functionName: is_invariant_string
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_invariant_string(s,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17230
      start: 17229
    functionDepth: 0
    functionLinenumber: 17229
    functionLinenumberEnd: 17230
    functionName: is_utf8_invariant_string
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_utf8_invariant_string(s,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - s1
    - ','
    - pe1
    - ','
    - l1
    - ','
    - u1
    - ','
    - s2
    - ','
    - pe2
    - ','
    - l2
    - ','
    - u2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17241
      start: 17239
    functionDepth: 0
    functionLinenumber: 17239
    functionLinenumberEnd: 17241
    functionName: foldEQ_utf8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foldEQ_utf8(s1,pe1,l1,u1,s2,pe2,l2,u2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17251
      start: 17247
    functionDepth: 0
    functionLinenumber: 17247
    functionLinenumberEnd: 17251
    functionName: isUTF8_CHAR
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isUTF8_CHAR(s, e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - curlen
    - ','
    - retlen
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17321
      start: 17319
    functionDepth: 0
    functionLinenumber: 17319
    functionLinenumberEnd: 17321
    functionName: D_PPP_utf8_to_uvchr_buf_callee
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_utf8_to_uvchr_buf_callee(s, curlen, retlen, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - curlen
    - ','
    - retlen
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17324
      start: 17322
    functionDepth: 0
    functionLinenumber: 17322
    functionLinenumberEnd: 17324
    functionName: D_PPP_utf8_to_uvchr_buf_callee
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: D_PPP_utf8_to_uvchr_buf_callee(s, curlen, retlen, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17340
      start: 17339
    functionDepth: 0
    functionLinenumber: 17339
    functionLinenumberEnd: 17340
    functionName: utf8_to_uvchr_buf
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: utf8_to_uvchr_buf(a,b,c)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ckWARN_d
      Src: /src/postgres/src/pl/plperl/ppport.h:17350,1
    - Dst: assert
      Src: /src/postgres/src/pl/plperl/ppport.h:17359,1
    - Dst: UNLIKELY
      Src: /src/postgres/src/pl/plperl/ppport.h:17377,1
    - Dst: UNLIKELY
      Src: /src/postgres/src/pl/plperl/ppport.h:17392,1
    - Dst: UNLIKELY
      Src: /src/postgres/src/pl/plperl/ppport.h:17413,1
    - Dst: D_PPP_utf8_to_uvchr_buf_callee
      Src: /src/postgres/src/pl/plperl/ppport.h:17430,1
    - Dst: UNLIKELY
      Src: /src/postgres/src/pl/plperl/ppport.h:17440,1
    - Dst: UNLIKELY
      Src: /src/postgres/src/pl/plperl/ppport.h:17446,1
    - Dst: D_PPP_MIN
      Src: /src/postgres/src/pl/plperl/ppport.h:17449,1
    - Dst: UTF8SKIP
      Src: /src/postgres/src/pl/plperl/ppport.h:17449,1
    - Dst: D_PPP_MIN
      Src: /src/postgres/src/pl/plperl/ppport.h:17450,1
    - Dst: UNLIKELY
      Src: /src/postgres/src/pl/plperl/ppport.h:17472,1
    - Dst: D_PPP_utf8_to_uvchr_buf_callee
      Src: /src/postgres/src/pl/plperl/ppport.h:17483,1
    - Dst: D_PPP_MIN
      Src: /src/postgres/src/pl/plperl/ppport.h:17499,1
    - Dst: D_PPP_MIN
      Src: /src/postgres/src/pl/plperl/ppport.h:17500,1
    - Dst: UTF8SKIP
      Src: /src/postgres/src/pl/plperl/ppport.h:17500,1
    - Dst: UTF8_IS_CONTINUATION
      Src: /src/postgres/src/pl/plperl/ppport.h:17503,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 76
    argCount: 3
    argNames:
    - s
    - send
    - retlen
    argTypes:
    - pTHX_*
    - U8*
    - STRLEN*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 17358
        line_start: 17358
        source_file: /src/postgres/src/pl/plperl/ppport.h
    constantsTouched: []
    func_position:
      end: 17520
      start: 17343
    functionDepth: 1
    functionLinenumber: 17343
    functionLinenumberEnd: 17520
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - UTF8SKIP
    - UNLIKELY
    - assert
    - UTF8_IS_CONTINUATION
    - ckWARN_d
    - D_PPP_utf8_to_uvchr_buf_callee
    - D_PPP_MIN
    linkageType: ''
    returnType: UV
    signature: UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN
      *retlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17556
      start: 17555
    functionDepth: 0
    functionLinenumber: 17555
    functionLinenumberEnd: 17556
    functionName: sv_len_utf8_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_len_utf8_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17557
      start: 17556
    functionDepth: 0
    functionLinenumber: 17556
    functionLinenumberEnd: 17557
    functionName: sv_len_utf8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_len_utf8(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17559
      start: 17558
    functionDepth: 0
    functionLinenumber: 17558
    functionLinenumberEnd: 17559
    functionName: sv_len_utf8_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_len_utf8_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17560
      start: 17559
    functionDepth: 0
    functionLinenumber: 17559
    functionLinenumberEnd: 17560
    functionName: sv_len_utf8
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_len_utf8(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17565
      start: 17564
    functionDepth: 0
    functionLinenumber: 17564
    functionLinenumberEnd: 17565
    functionName: sv_len_utf8_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_len_utf8_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17570
      start: 17569
    functionDepth: 0
    functionLinenumber: 17569
    functionLinenumberEnd: 17570
    functionName: sv_len_utf8_nomg
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sv_len_utf8_nomg(sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17649
      start: 17648
    functionDepth: 0
    functionLinenumber: 17648
    functionLinenumberEnd: 17649
    functionName: pv_escape
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pv_escape(a,b,c,d,e,f)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: sv_setpvs
      Src: /src/postgres/src/pl/plperl/ppport.h:17671,1
    - Dst: is_utf8_string
      Src: /src/postgres/src/pl/plperl/ppport.h:17674,1
    - Dst: utf8_to_uvchr_buf
      Src: /src/postgres/src/pl/plperl/ppport.h:17681,1
    - Dst: my_snprintf
      Src: /src/postgres/src/pl/plperl/ppport.h:17688,1
    - Dst: my_snprintf
      Src: /src/postgres/src/pl/plperl/ppport.h:17691,1
    - Dst: isPRINT
      Src: /src/postgres/src/pl/plperl/ppport.h:17696,1
    - Dst: my_snprintf
      Src: /src/postgres/src/pl/plperl/ppport.h:17715,1
    - Dst: isDIGIT
      Src: /src/postgres/src/pl/plperl/ppport.h:17716,1
    - Dst: sv_catpvn
      Src: /src/postgres/src/pl/plperl/ppport.h:17726,1
    - Dst: my_snprintf
      Src: /src/postgres/src/pl/plperl/ppport.h:17730,1
    - Dst: sv_catpvn
      Src: /src/postgres/src/pl/plperl/ppport.h:17731,1
    - Dst: SvPVX
      Src: /src/postgres/src/pl/plperl/ppport.h:17739,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 69
    argCount: 6
    argNames:
    - dsv
    - str
    - count
    - max
    - escaped
    - flags
    argTypes:
    - pTHX_*
    - char*
    - STRLEN
    - STRLEN
    - STRLEN*
    - U32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17740
      start: 17652
    functionDepth: 1
    functionLinenumber: 17652
    functionLinenumberEnd: 17740
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - is_utf8_string
    - my_snprintf
    - sv_setpvs
    - SvPVX
    - utf8_to_uvchr_buf
    - isDIGIT
    - sv_catpvn
    - isPRINT
    linkageType: ''
    returnType: char
    signature: "char *\nDPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str,\n
      \ const STRLEN count, const STRLEN max,\n  STRLEN * const escaped, const U32
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17759
      start: 17758
    functionDepth: 0
    functionLinenumber: 17758
    functionLinenumberEnd: 17759
    functionName: pv_pretty
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pv_pretty(a,b,c,d,e,f,g)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sv_setpvs
      Src: /src/postgres/src/pl/plperl/ppport.h:17771,1
    - Dst: sv_catpvs
      Src: /src/postgres/src/pl/plperl/ppport.h:17774,1
    - Dst: sv_catpvs
      Src: /src/postgres/src/pl/plperl/ppport.h:17776,1
    - Dst: sv_catpv
      Src: /src/postgres/src/pl/plperl/ppport.h:17779,1
    - Dst: D_PPP_CONSTPV_ARG
      Src: /src/postgres/src/pl/plperl/ppport.h:17779,1
    - Dst: pv_escape
      Src: /src/postgres/src/pl/plperl/ppport.h:17781,1
    - Dst: sv_catpv
      Src: /src/postgres/src/pl/plperl/ppport.h:17784,1
    - Dst: D_PPP_CONSTPV_ARG
      Src: /src/postgres/src/pl/plperl/ppport.h:17784,1
    - Dst: sv_catpvs
      Src: /src/postgres/src/pl/plperl/ppport.h:17787,1
    - Dst: sv_catpvs
      Src: /src/postgres/src/pl/plperl/ppport.h:17789,1
    - Dst: sv_catpvs
      Src: /src/postgres/src/pl/plperl/ppport.h:17792,1
    - Dst: SvPVX
      Src: /src/postgres/src/pl/plperl/ppport.h:17794,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 7
    argNames:
    - dsv
    - str
    - count
    - max
    - start_color
    - end_color
    - flags
    argTypes:
    - pTHX_*
    - char*
    - STRLEN
    - STRLEN
    - char*
    - char*
    - U32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17795
      start: 17762
    functionDepth: 1
    functionLinenumber: 17762
    functionLinenumberEnd: 17795
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - D_PPP_CONSTPV_ARG
    - sv_catpvs
    - sv_setpvs
    - SvPVX
    - pv_escape
    - sv_catpv
    linkageType: ''
    returnType: char
    signature: "char *\nDPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str,
      const STRLEN count,\n  const STRLEN max, char const * const start_color, char
      const * const end_color,\n  const U32 flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17814
      start: 17813
    functionDepth: 0
    functionLinenumber: 17813
    functionLinenumberEnd: 17814
    functionName: pv_display
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pv_display(a,b,c,d,e)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pv_pretty
      Src: /src/postgres/src/pl/plperl/ppport.h:17820,1
    - Dst: sv_catpvs
      Src: /src/postgres/src/pl/plperl/ppport.h:17822,1
    - Dst: SvPVX
      Src: /src/postgres/src/pl/plperl/ppport.h:17823,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 5
    argNames:
    - dsv
    - pv
    - cur
    - len
    - pvlim
    argTypes:
    - pTHX_*
    - char*
    - STRLEN
    - STRLEN
    - STRLEN
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17824
      start: 17817
    functionDepth: 1
    functionLinenumber: 17817
    functionLinenumberEnd: 17824
    functionName: DPPP_
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached:
    - sv_catpvs
    - pv_pretty
    - SvPVX
    linkageType: ''
    returnType: char
    signature: 'char *

      DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len,
      STRLEN pvlim)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17852
      start: 17848
    functionDepth: 0
    functionLinenumber: 17848
    functionLinenumberEnd: 17852
    functionName: STORE_NUMERIC_SET_STANDARD
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STORE_NUMERIC_SET_STANDARD()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17857
      start: 17855
    functionDepth: 0
    functionLinenumber: 17855
    functionLinenumberEnd: 17857
    functionName: RESTORE_LC_NUMERIC
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESTORE_LC_NUMERIC()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17907
      start: 17906
    functionDepth: 0
    functionLinenumber: 17906
    functionLinenumberEnd: 17907
    functionName: sync_locale
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sync_locale()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17914
      start: 17909
    functionDepth: 0
    functionLinenumber: 17909
    functionLinenumberEnd: 17914
    functionName: sync_locale
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sync_locale()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17916
      start: 17915
    functionDepth: 0
    functionLinenumber: 17915
    functionLinenumberEnd: 17916
    functionName: sync_locale
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sync_locale()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17921
      start: 17920
    functionDepth: 0
    functionLinenumber: 17920
    functionLinenumberEnd: 17921
    functionName: sync_locale
    functionSourceFile: /src/postgres/src/pl/plperl/ppport.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sync_locale()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_any_to_server
      Src: /src/postgres/src/pl/plperl/plperl.h:55,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.h:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - utf8_str
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 62
    functionName: utf_u2e
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.h
    functionUses: 0
    functionsReached:
    - pstrdup
    - pg_any_to_server
    linkageType: ''
    returnType: char
    signature: 'char *

      utf_u2e(char *utf8_str, size_t len)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_server_to_any
      Src: /src/postgres/src/pl/plperl/plperl.h:74,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.h:74,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.h:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 81
    functionName: utf_e2u
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.h
    functionUses: 0
    functionsReached:
    - pg_server_to_any
    - pstrdup
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      utf_e2u(const char *str)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SvREADONLY
      Src: /src/postgres/src/pl/plperl/plperl.h:107,1
    - Dst: isGV_with_GP
      Src: /src/postgres/src/pl/plperl/plperl.h:108,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.h:109,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.h:109,1
    - Dst: newSVsv
      Src: /src/postgres/src/pl/plperl/plperl.h:110,1
    - Dst: SvREFCNT_inc_simple_void
      Src: /src/postgres/src/pl/plperl/plperl.h:117,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/pl/plperl/plperl.h:125,1
    - Dst: SvPV
      Src: /src/postgres/src/pl/plperl/plperl.h:126,1
    - Dst: SvPVutf8
      Src: /src/postgres/src/pl/plperl/plperl.h:128,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/plperl/plperl.h:134,1
    - Dst: SvREFCNT_dec
      Src: /src/postgres/src/pl/plperl/plperl.h:137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - sv
    argTypes:
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 140
    functionName: sv2cstr
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.h
    functionUses: 0
    functionsReached:
    - SvREFCNT_dec
    - GetDatabaseEncoding
    - isGV_with_GP
    - SvREADONLY
    - SvPV
    - newSVsv
    - utf_u2e
    - SvREFCNT_inc_simple_void
    - SvPVutf8
    - SvTYPE
    linkageType: ''
    returnType: char
    signature: 'char *

      sv2cstr(SV *sv)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/pl/plperl/plperl.h:154,1
    - Dst: newSVpv
      Src: /src/postgres/src/pl/plperl/plperl.h:155,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/plperl/plperl.h:157,1
    - Dst: newSVpv
      Src: /src/postgres/src/pl/plperl/plperl.h:159,1
    - Dst: SvUTF8_on
      Src: /src/postgres/src/pl/plperl/plperl.h:160,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.h:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 164
    functionName: cstr2sv
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.h
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - pfree
    - newSVpv
    - SvUTF8_on
    - utf_e2u
    linkageType: ''
    returnType: SV
    signature: 'SV *

      cstr2sv(const char *str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: croak_sv
      Src: /src/postgres/src/pl/plperl/plperl.h:181,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.h:181,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.h:181,1
    - Dst: get_sv
      Src: /src/postgres/src/pl/plperl/plperl.h:191,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/plperl/plperl.h:192,1
    - Dst: mess
      Src: /src/postgres/src/pl/plperl/plperl.h:195,1
    - Dst: SvUTF8_on
      Src: /src/postgres/src/pl/plperl/plperl.h:196,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.h:198,1
    - Dst: sv_setsv
      Src: /src/postgres/src/pl/plperl/plperl.h:200,1
    - Dst: croak
      Src: /src/postgres/src/pl/plperl/plperl.h:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 204
    functionName: croak_cstr
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.h
    functionUses: 0
    functionsReached:
    - get_sv
    - pfree
    - mess
    - cstr2sv
    - sv_2mortal
    - SvUTF8_on
    - croak
    - sv_setsv
    - utf_e2u
    - croak_sv
    linkageType: ''
    returnType: void
    signature: void croak_cstr(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prodesc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: increment_prodesc_refcount
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: increment_prodesc_refcount(prodesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prodesc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: decrement_prodesc_refcount
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: decrement_prodesc_refcount(prodesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 308
    functionName: setlocale_perl
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: setlocale_perl(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SvREFCNT_dec
      Src: /src/postgres/src/pl/plperl/plperl.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sv
    argTypes:
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 322
    functionName: SvREFCNT_dec_current
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - SvREFCNT_dec
    linkageType: ''
    returnType: void
    signature: void SvREFCNT_dec_current(SV *sv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeSVKEY_force
      Src: /src/postgres/src/pl/plperl/plperl.c:366,1
    - Dst: HeUTF8
      Src: /src/postgres/src/pl/plperl/plperl.c:367,1
    - Dst: SvUTF8_on
      Src: /src/postgres/src/pl/plperl/plperl.c:368,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - he
    argTypes:
    - HE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 327
    functionDepth: 2
    functionLinenumber: 327
    functionLinenumberEnd: 376
    functionName: hek2cstr
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - sv2cstr
    - SvUTF8_on
    - HeSVKEY_force
    - HeUTF8
    linkageType: ''
    returnType: char
    signature: 'char *

      hek2cstr(HE *he)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_bindtextdomain
      Src: /src/postgres/src/pl/plperl/plperl.c:404,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/pl/plperl/plperl.c:409,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plperl/plperl.c:410,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/plperl/plperl.c:423,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plperl/plperl.c:424,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/plperl/plperl.c:445,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plperl/plperl.c:446,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/plperl/plperl.c:453,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plperl/plperl.c:454,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/pl/plperl/plperl.c:461,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plperl/plperl.c:468,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plperl/plperl.c:475,1
    - Dst: PLPERL_SET_OPMASK
      Src: /src/postgres/src/pl/plperl/plperl.c:483,1
    - Dst: plperl_init_interp
      Src: /src/postgres/src/pl/plperl/plperl.c:488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 491
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - plperl_init_interp
    - DefineCustomStringVariable
    - DefineCustomBoolVariable
    - MarkGUCPrefixReserved
    - hash_create
    - gettext_noop
    - PLPERL_SET_OPMASK
    - pg_bindtextdomain
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - trusted
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 507
    functionName: set_interp_require
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_interp_require(bool trusted)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:519,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:532,1
    - Dst: plperl_destroy_interp
      Src: /src/postgres/src/pl/plperl/plperl.c:537,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/pl/plperl/plperl.c:540,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/pl/plperl/plperl.c:541,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:545,1
    - Dst: plperl_destroy_interp
      Src: /src/postgres/src/pl/plperl/plperl.c:546,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:550,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 551
    functionName: plperl_fini
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - elog
    - activate_interpreter
    - plperl_destroy_interp
    - hash_seq_search
    - hash_seq_init
    linkageType: ''
    returnType: void
    signature: void plperl_fini(int code, Datum arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: GetUserId
      Src: /src/postgres/src/pl/plperl/plperl.c:567,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:571,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plperl/plperl.c:588,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:599,1
    - Dst: plperl_trusted_init
      Src: /src/postgres/src/pl/plperl/plperl.c:618,1
    - Dst: plperl_untrusted_init
      Src: /src/postgres/src/pl/plperl/plperl.c:620,1
    - Dst: on_proc_exit
      Src: /src/postgres/src/pl/plperl/plperl.c:623,1
    - Dst: plperl_init_interp
      Src: /src/postgres/src/pl/plperl/plperl.c:639,1
    - Dst: plperl_trusted_init
      Src: /src/postgres/src/pl/plperl/plperl.c:642,1
    - Dst: plperl_untrusted_init
      Src: /src/postgres/src/pl/plperl/plperl.c:644,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:646,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:647,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:648,1
    - Dst: set_interp_require
      Src: /src/postgres/src/pl/plperl/plperl.c:652,1
    - Dst: newXS
      Src: /src/postgres/src/pl/plperl/plperl.c:664,1
    - Dst: eval_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:667,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:668,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:669,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:670,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:671,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:671,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:671,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:672,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 1
    argNames:
    - trusted
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 557
    functionDepth: 2
    functionLinenumber: 557
    functionLinenumberEnd: 680
    functionName: select_perl_context
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - sv2cstr
    - newXS
    - eval_pv
    - plperl_trusted_init
    - activate_interpreter
    - hash_search
    - GetUserId
    - plperl_init_interp
    - errcode
    - SvTRUE
    - ereport
    - errcontext
    - hash_create
    - plperl_untrusted_init
    - set_interp_require
    - strip_trailing_ws
    - errmsg
    - on_proc_exit
    linkageType: ''
    returnType: void
    signature: void select_perl_context(bool trusted)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:693,1
    - Dst: PERL_SET_CONTEXT
      Src: /src/postgres/src/pl/plperl/plperl.c:694,1
    - Dst: set_interp_require
      Src: /src/postgres/src/pl/plperl/plperl.c:696,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:696,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - interp_desc
    argTypes:
    - plperl_interp_desc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 699
    functionName: activate_interpreter
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - Assert
    - OidIsValid
    - set_interp_require
    - PERL_SET_CONTEXT
    linkageType: ''
    returnType: void
    signature: void activate_interpreter(plperl_interp_desc *interp_desc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:748,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:749,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:750,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:751,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:752,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:753,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:754,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:755,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:756,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:757,1
    - Dst: PERL_SYS_INIT3
      Src: /src/postgres/src/pl/plperl/plperl.c:789,1
    - Dst: pqsignal
      Src: /src/postgres/src/pl/plperl/plperl.c:800,1
    - Dst: perl_alloc
      Src: /src/postgres/src/pl/plperl/plperl.c:809,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:811,1
    - Dst: PERL_SET_CONTEXT
      Src: /src/postgres/src/pl/plperl/plperl.c:813,1
    - Dst: perl_construct
      Src: /src/postgres/src/pl/plperl/plperl.c:814,1
    - Dst: perl_parse
      Src: /src/postgres/src/pl/plperl/plperl.c:851,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:853,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:854,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:855,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:855,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:855,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:856,1
    - Dst: perl_run
      Src: /src/postgres/src/pl/plperl/plperl.c:858,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:859,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:860,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:861,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:861,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:861,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:862,1
    - Dst: PLPERL_RESTORE_LOCALE
      Src: /src/postgres/src/pl/plperl/plperl.c:865,1
    - Dst: PLPERL_RESTORE_LOCALE
      Src: /src/postgres/src/pl/plperl/plperl.c:866,1
    - Dst: PLPERL_RESTORE_LOCALE
      Src: /src/postgres/src/pl/plperl/plperl.c:867,1
    - Dst: PLPERL_RESTORE_LOCALE
      Src: /src/postgres/src/pl/plperl/plperl.c:868,1
    - Dst: PLPERL_RESTORE_LOCALE
      Src: /src/postgres/src/pl/plperl/plperl.c:869,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 874
    functionName: plperl_init_interp
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - elog
    - sv2cstr
    - perl_construct
    - pqsignal
    - errcode
    - perl_run
    - errcontext
    - perl_alloc
    - setlocale
    - pstrdup
    - ereport
    - PERL_SET_CONTEXT
    - strip_trailing_ws
    - PLPERL_RESTORE_LOCALE
    - errmsg
    - perl_parse
    - PERL_SYS_INIT3
    linkageType: ''
    returnType: PerlInterpreter
    signature: 'PerlInterpreter *

      plperl_init_interp(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - saved
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 763
    functionName: PLPERL_RESTORE_LOCALE
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PLPERL_RESTORE_LOCALE(name, saved)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SvPV
      Src: /src/postgres/src/pl/plperl/plperl.c:895,1
    - Dst: hv_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:899,1
    - Dst: GvHVn
      Src: /src/postgres/src/pl/plperl/plperl.c:899,1
    - Dst: DIE
      Src: /src/postgres/src/pl/plperl/plperl.c:903,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 914
    functionName: pp_require_safe
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - SvPV
    - DIE
    - GvHVn
    - hv_fetch
    linkageType: ''
    returnType: OP
    signature: 'OP *

      pp_require_safe(pTHX)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: JMPENV_PUSH
      Src: /src/postgres/src/pl/plperl/plperl.c:945,1
    - Dst: PERL_UNUSED_VAR
      Src: /src/postgres/src/pl/plperl/plperl.c:946,1
    - Dst: call_list
      Src: /src/postgres/src/pl/plperl/plperl.c:948,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - interp
    argTypes:
    - PerlInterpreter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 922
    functionDepth: 1
    functionLinenumber: 922
    functionLinenumberEnd: 956
    functionName: plperl_destroy_interp
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - JMPENV_PUSH
    - PERL_UNUSED_VAR
    - call_list
    linkageType: ''
    returnType: void
    signature: void plperl_destroy_interp(PerlInterpreter **interp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: eval_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:974,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:975,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:976,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:977,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:978,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:978,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:978,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:979,1
    - Dst: eval_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:986,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:987,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:988,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:989,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:990,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:990,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:990,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:991,1
    - Dst: gv_stashpv
      Src: /src/postgres/src/pl/plperl/plperl.c:1008,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1009,1
    - Dst: hv_iternextsv
      Src: /src/postgres/src/pl/plperl/plperl.c:1010,1
    - Dst: isGV_with_GP
      Src: /src/postgres/src/pl/plperl/plperl.c:1012,1
    - Dst: GvCV
      Src: /src/postgres/src/pl/plperl/plperl.c:1012,1
    - Dst: SvREFCNT_dec
      Src: /src/postgres/src/pl/plperl/plperl.c:1014,1
    - Dst: GvCV
      Src: /src/postgres/src/pl/plperl/plperl.c:1014,1
    - Dst: GvCV_set
      Src: /src/postgres/src/pl/plperl/plperl.c:1015,1
    - Dst: hv_clear
      Src: /src/postgres/src/pl/plperl/plperl.c:1017,1
    - Dst: hv_clear
      Src: /src/postgres/src/pl/plperl/plperl.c:1021,1
    - Dst: eval_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:1028,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:1030,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1031,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1032,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1033,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:1033,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1033,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:1034,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 961
    functionDepth: 2
    functionLinenumber: 961
    functionLinenumberEnd: 1036
    functionName: plperl_trusted_init
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - sv2cstr
    - eval_pv
    - SvREFCNT_dec
    - GvCV
    - errcode
    - SvTRUE
    - errcontext
    - hv_iterinit
    - hv_clear
    - ereport
    - isGV_with_GP
    - gv_stashpv
    - strip_trailing_ws
    - hv_iternextsv
    - errmsg
    - GvCV_set
    linkageType: ''
    returnType: void
    signature: void plperl_trusted_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eval_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:1052,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:1053,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1054,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1055,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1056,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:1056,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1056,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:1057,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1042
    functionDepth: 2
    functionLinenumber: 1042
    functionLinenumberEnd: 1059
    functionName: plperl_untrusted_init
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - sv2cstr
    - eval_pv
    - errcode
    - SvTRUE
    - errcontext
    - ereport
    - strip_trailing_ws
    - errmsg
    linkageType: ''
    returnType: void
    signature: void plperl_untrusted_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:1068,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:1069,1
    - Dst: isspace
      Src: /src/postgres/src/pl/plperl/plperl.c:1071,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1065
    functionDepth: 0
    functionLinenumber: 1065
    functionLinenumberEnd: 1074
    functionName: strip_trailing_ws
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 4
    functionsReached:
    - pstrdup
    - strlen
    - isspace
    linkageType: ''
    returnType: char
    signature: 'char *

      strip_trailing_ws(const char *msg)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1088,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1089,1
    - Dst: memset
      Src: /src/postgres/src/pl/plperl/plperl.c:1090,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1092,1
    - Dst: hv_iternext
      Src: /src/postgres/src/pl/plperl/plperl.c:1093,1
    - Dst: HeVAL
      Src: /src/postgres/src/pl/plperl/plperl.c:1095,1
    - Dst: hek2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1096,1
    - Dst: SPI_fnumber
      Src: /src/postgres/src/pl/plperl/plperl.c:1097,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1101,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1102,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1103,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1106,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1107,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1108,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plperl/plperl.c:1111,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1112,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1120,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1122,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1124,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1125,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - perlhash
    - td
    argTypes:
    - HV*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1079
    functionDepth: 3
    functionLinenumber: 1079
    functionLinenumberEnd: 1128
    functionName: plperl_build_tuple_result
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - plperl_sv_to_datum
    - palloc0_array
    - HeVAL
    - errcode
    - pfree
    - hv_iterinit
    - hv_iternext
    - SPI_fnumber
    - palloc_array
    - ereport
    - heap_form_tuple
    - memset
    - hek2cstr
    - errmsg
    - TupleDescAttr
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple plperl_build_tuple_result(HV *perlhash, TupleDesc td)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: plperl_build_tuple_result
      Src: /src/postgres/src/pl/plperl/plperl.c:1134,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1134,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - td
    argTypes:
    - SV*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1131
    functionDepth: 4
    functionLinenumber: 1131
    functionLinenumberEnd: 1137
    functionName: plperl_hash_to_datum
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - plperl_build_tuple_result
    - SvRV
    - HeapTupleGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum plperl_hash_to_datum(SV *src, TupleDesc td)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:1148,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:1148,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1150,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1150,1
    - Dst: sv_isa
      Src: /src/postgres/src/pl/plperl/plperl.c:1152,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1154,1
    - Dst: hv_fetch_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1155,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:1157,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:1157,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1158,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1158,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:1161,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - sv
    argTypes:
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1143
    functionDepth: 1
    functionLinenumber: 1143
    functionLinenumberEnd: 1165
    functionName: get_perl_array_ref
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - elog
    - hv_fetch_string
    - SvOK
    - sv_isa
    - SvRV
    - SvROK
    - SvTYPE
    linkageType: ''
    returnType: SV
    signature: 'SV *

      get_perl_array_ref(SV *sv)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: av_len
      Src: /src/postgres/src/pl/plperl/plperl.c:1183,1
    - Dst: av_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:1188,1
    - Dst: get_perl_array_ref
      Src: /src/postgres/src/pl/plperl/plperl.c:1191,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1196,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1203,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1204,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1205,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1208,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1209,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1210,1
    - Dst: av_len
      Src: /src/postgres/src/pl/plperl/plperl.c:1213,1
    - Dst: av_len
      Src: /src/postgres/src/pl/plperl/plperl.c:1217,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1218,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1219,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1220,1
    - Dst: array_to_datum_internal
      Src: /src/postgres/src/pl/plperl/plperl.c:1223,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1235,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1236,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1237,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1239,1
    - Dst: initArrayResult
      Src: /src/postgres/src/pl/plperl/plperl.c:1249,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/pl/plperl/plperl.c:1253,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 9
    argNames:
    - av
    - astatep
    - ndims
    - dims
    - cur_depth
    - elemtypid
    - typmod
    - finfo
    - typioparam
    argTypes:
    - AV*
    - ArrayBuildState**
    - int*
    - int*
    - int
    - Oid
    - int32
    - FmgrInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1175
    functionDepth: 2
    functionLinenumber: 1175
    functionLinenumberEnd: 1257
    functionName: array_to_datum_internal
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - av_len
    - plperl_sv_to_datum
    - get_perl_array_ref
    - SvRV
    - array_to_datum_internal
    - errcode
    - av_fetch
    - ereport
    - errmsg
    - initArrayResult
    - accumArrayResult
    linkageType: ''
    returnType: void
    signature: "void array_to_datum_internal(AV *av, ArrayBuildState **astatep,\n\t\t\t\t\t\tint
      *ndims, int *dims, int cur_depth,\n\t\t\t\t\t\tOid elemtypid, int32 typmod,\n\t\t\t\t\t\tFmgrInfo
      *finfo, Oid typioparam)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1266,1
    - Dst: get_element_type
      Src: /src/postgres/src/pl/plperl/plperl.c:1276,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1278,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1279,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1280,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:1281,1
    - Dst: _sv_to_datum_finfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1283,1
    - Dst: memset
      Src: /src/postgres/src/pl/plperl/plperl.c:1285,1
    - Dst: av_len
      Src: /src/postgres/src/pl/plperl/plperl.c:1286,1
    - Dst: array_to_datum_internal
      Src: /src/postgres/src/pl/plperl/plperl.c:1288,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1295,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1295,1
    - Dst: makeMdArrayResult
      Src: /src/postgres/src/pl/plperl/plperl.c:1300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - src
    - typid
    - typmod
    argTypes:
    - SV*
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1262
    functionDepth: 3
    functionLinenumber: 1262
    functionLinenumberEnd: 1302
    functionName: plperl_array_to_datum
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - av_len
    - get_element_type
    - format_type_be
    - SvRV
    - array_to_datum_internal
    - errcode
    - _sv_to_datum_finfo
    - construct_empty_array
    - makeMdArrayResult
    - ereport
    - memset
    - errmsg
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum plperl_array_to_datum(SV *src, Oid typid, int32 typmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1311,1
    - Dst: fmgr_info
      Src: /src/postgres/src/pl/plperl/plperl.c:1313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - typid
    - finfo
    - typioparam
    argTypes:
    - Oid
    - FmgrInfo*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1305
    functionDepth: 1
    functionLinenumber: 1305
    functionLinenumberEnd: 1314
    functionName: _sv_to_datum_finfo
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - getTypeInputInfo
    - fmgr_info
    linkageType: ''
    returnType: void
    signature: void _sv_to_datum_finfo(Oid typid, FmgrInfo *finfo, Oid *typioparam)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/pl/plperl/plperl.c:1338,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:1347,1
    - Dst: _sv_to_datum_finfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1352,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:1357,1
    - Dst: get_transform_tosql
      Src: /src/postgres/src/pl/plperl/plperl.c:1359,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:1360,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1360,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:1361,1
    - Dst: get_perl_array_ref
      Src: /src/postgres/src/pl/plperl/plperl.c:1364,1
    - Dst: plperl_array_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1369,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1371,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1371,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:1378,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1379,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1380,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1381,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:1382,1
    - Dst: lookup_rowtype_tupdesc_domain
      Src: /src/postgres/src/pl/plperl/plperl.c:1384,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/plperl/plperl.c:1396,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1401,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1402,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1403,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:1405,1
    - Dst: plperl_hash_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1409,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/plperl/plperl.c:1412,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plperl/plperl.c:1415,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1424,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1424,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1432,1
    - Dst: _sv_to_datum_finfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1437,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:1441,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1442,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 7
    argNames:
    - sv
    - typid
    - typmod
    - fcinfo
    - finfo
    - typioparam
    - isnull
    argTypes:
    - SV*
    - Oid
    - int32
    - FunctionCallInfo
    - FmgrInfo*
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1328
    functionDepth: 5
    functionLinenumber: 1328
    functionLinenumberEnd: 1446
    functionName: plperl_sv_to_datum
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 3
    functionsReached:
    - sv2cstr
    - ReleaseTupleDesc
    - SvRV
    - _sv_to_datum_finfo
    - errcode
    - check_stack_depth
    - SvOK
    - Assert
    - pfree
    - OidFunctionCall1
    - plperl_hash_to_datum
    - PointerGetDatum
    - errmsg
    - lookup_rowtype_tupdesc_domain
    - get_call_result_type
    - SvTYPE
    - get_transform_tosql
    - plperl_sv_to_datum
    - ereport
    - domain_check
    - type_is_rowtype
    - SvROK
    - InputFunctionCall
    - format_type_be
    - get_perl_array_ref
    - plperl_array_to_datum
    linkageType: ''
    returnType: Datum
    signature: "Datum plperl_sv_to_datum(SV *sv, Oid typid, int32 typmod,\n\t\t\t\t
      \  FunctionCallInfo fcinfo,\n\t\t\t\t   FmgrInfo *finfo, Oid typioparam,\n\t\t\t\t
      \  bool *isnull)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:1458,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/pl/plperl/plperl.c:1460,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:1460,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1460,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:1461,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1462,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1463,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1464,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1466,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1474,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:1477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - sv
    - fqtypename
    argTypes:
    - SV*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1449
    functionDepth: 6
    functionLinenumber: 1449
    functionLinenumberEnd: 1478
    functionName: plperl_sv_to_literal
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - plperl_sv_to_datum
    - errcode
    - DatumGetObjectId
    - CStringGetDatum
    - ereport
    - DirectFunctionCall1
    - OidOutputFunctionCall
    - errmsg
    - OidIsValid
    - check_spi_usage_allowed
    - getTypeOutputInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      plperl_sv_to_literal(SV *sv, char *fqtypename)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/pl/plperl/plperl.c:1489,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1490,1
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plperl/plperl.c:1509,1
    - Dst: get_type_io_data
      Src: /src/postgres/src/pl/plperl/plperl.c:1512,1
    - Dst: get_transform_fromsql
      Src: /src/postgres/src/pl/plperl/plperl.c:1517,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:1522,1
    - Dst: fmgr_info
      Src: /src/postgres/src/pl/plperl/plperl.c:1523,1
    - Dst: fmgr_info
      Src: /src/postgres/src/pl/plperl/plperl.c:1525,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:1527,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/pl/plperl/plperl.c:1530,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/pl/plperl/plperl.c:1531,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1536,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:1536,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1540,1
    - Dst: palloc_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1545,1
    - Dst: split_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1550,1
    - Dst: newHV
      Src: /src/postgres/src/pl/plperl/plperl.c:1553,1
    - Dst: hv_store
      Src: /src/postgres/src/pl/plperl/plperl.c:1554,1
    - Dst: hv_store
      Src: /src/postgres/src/pl/plperl/plperl.c:1555,1
    - Dst: newSVuv
      Src: /src/postgres/src/pl/plperl/plperl.c:1555,1
    - Dst: sv_bless
      Src: /src/postgres/src/pl/plperl/plperl.c:1557,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1557,1
    - Dst: gv_stashpv
      Src: /src/postgres/src/pl/plperl/plperl.c:1558,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - arg
    - typid
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1485
    functionDepth: 1
    functionLinenumber: 1485
    functionLinenumberEnd: 1559
    functionName: plperl_ref_from_pg_array
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - palloc_array
    - sv_bless
    - newHV
    - ARR_NDIM
    - newAV
    - hv_store
    - split_array
    - get_type_io_data
    - gv_stashpv
    - get_transform_fromsql
    - OidIsValid
    - ARR_DIMS
    - fmgr_info
    - palloc0_object
    - DatumGetArrayTypeP
    - deconstruct_array
    - type_is_rowtype
    - newSVuv
    - ARR_ELEMTYPE
    - newRV_noinc
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_ref_from_pg_array(Datum arg, Oid typid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:1572,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/pl/plperl/plperl.c:1575,1
    - Dst: make_array_ref
      Src: /src/postgres/src/pl/plperl/plperl.c:1581,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:1583,1
    - Dst: split_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1587,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1589,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - info
    - first
    - last
    - nest
    argTypes:
    - plperl_array_info*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1564
    functionDepth: 1
    functionLinenumber: 1564
    functionLinenumberEnd: 1592
    functionName: split_array
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - make_array_ref
    - Assert
    - check_stack_depth
    - newRV_noinc
    - av_push
    - newAV
    - split_array
    linkageType: ''
    returnType: SV
    signature: 'SV *

      split_array(plperl_array_info *info, int first, int last, int nest)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:1603,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1613,1
    - Dst: newSV
      Src: /src/postgres/src/pl/plperl/plperl.c:1613,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1620,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plperl/plperl.c:1620,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:1620,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1623,1
    - Dst: plperl_hash_from_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1623,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:1626,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1628,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1628,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1632,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - info
    - first
    - last
    argTypes:
    - plperl_array_info*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1598
    functionDepth: 2
    functionLinenumber: 1598
    functionLinenumberEnd: 1633
    functionName: make_array_ref
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - plperl_hash_from_datum
    - cstr2sv
    - newSV
    - OutputFunctionCall
    - FunctionCall1
    - newRV_noinc
    - av_push
    - newAV
    - DatumGetPointer
    linkageType: ''
    returnType: SV
    signature: 'SV *

      make_array_ref(plperl_array_info *info, int first, int last)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: newHV
      Src: /src/postgres/src/pl/plperl/plperl.c:1649,1
    - Dst: hv_ksplit
      Src: /src/postgres/src/pl/plperl/plperl.c:1650,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/plperl/plperl.c:1655,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:1655,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1656,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1658,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1658,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1659,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1659,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plperl/plperl.c:1666,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plperl/plperl.c:1669,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1670,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1671,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plperl/plperl.c:1673,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plperl/plperl.c:1675,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plperl/plperl.c:1678,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1679,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1680,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plperl/plperl.c:1684,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plperl/plperl.c:1687,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1689,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1690,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1693,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1694,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plperl/plperl.c:1696,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/pl/plperl/plperl.c:1699,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1704,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1704,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1705,1
    - Dst: newSViv
      Src: /src/postgres/src/pl/plperl/plperl.c:1705,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:1709,1
    - Dst: av_extend
      Src: /src/postgres/src/pl/plperl/plperl.c:1711,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1713,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1713,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1714,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1714,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1717,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1718,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/pl/plperl/plperl.c:1718,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1720,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1721,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/pl/plperl/plperl.c:1721,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1723,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1724,1
    - Dst: SPI_getnspname
      Src: /src/postgres/src/pl/plperl/plperl.c:1724,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plperl/plperl.c:1726,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/pl/plperl/plperl.c:1728,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/pl/plperl/plperl.c:1730,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1734,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1734,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plperl/plperl.c:1736,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/pl/plperl/plperl.c:1738,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1742,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1742,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1744,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1636
    functionDepth: 2
    functionLinenumber: 1636
    functionLinenumberEnd: 1745
    functionName: plperl_trigger_build_args
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - TRIGGER_FIRED_BY_INSERT
    - TRIGGER_FIRED_BEFORE
    - TRIGGER_FIRED_AFTER
    - newHV
    - plperl_hash_from_tuple
    - newAV
    - av_push
    - av_extend
    - TRIGGER_FIRED_BY_DELETE
    - SPI_getrelname
    - ObjectIdGetDatum
    - DatumGetCString
    - cstr2sv
    - TRIGGER_FIRED_BY_TRUNCATE
    - hv_store_string
    - TRIGGER_FIRED_FOR_STATEMENT
    - hv_ksplit
    - TRIGGER_FIRED_INSTEAD
    - DirectFunctionCall1
    - TRIGGER_FIRED_FOR_ROW
    - TRIGGER_FIRED_BY_UPDATE
    - newRV_noinc
    - SPI_getnspname
    - newSViv
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_trigger_build_args(FunctionCallInfo fcinfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: newHV
      Src: /src/postgres/src/pl/plperl/plperl.c:1756,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1760,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1760,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1761,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1761,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/pl/plperl/plperl.c:1761,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1749
    functionDepth: 2
    functionLinenumber: 1749
    functionLinenumberEnd: 1764
    functionName: plperl_event_trigger_build_args
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - cstr2sv
    - newHV
    - newRV_noinc
    - GetCommandTagName
    - hv_store_string
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_event_trigger_build_args(FunctionCallInfo fcinfo)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: hv_fetch_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1781,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1783,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1784,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1785,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:1786,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:1786,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1786,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1786,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1787,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1788,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1789,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1790,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:1795,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:1796,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:1797,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1799,1
    - Dst: hv_iternext
      Src: /src/postgres/src/pl/plperl/plperl.c:1800,1
    - Dst: hek2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1802,1
    - Dst: HeVAL
      Src: /src/postgres/src/pl/plperl/plperl.c:1803,1
    - Dst: SPI_fnumber
      Src: /src/postgres/src/pl/plperl/plperl.c:1804,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1808,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1809,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1810,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1813,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1814,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1815,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plperl/plperl.c:1818,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1820,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1821,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1822,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1825,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1834,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1836,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1838,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1840,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1841,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1842,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - hvTD
    - tdata
    - otup
    argTypes:
    - HV*
    - TriggerData*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1767
    functionDepth: 6
    functionLinenumber: 1767
    functionLinenumberEnd: 1845
    functionName: plperl_modify_tuple
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - hv_fetch_string
    - SvOK
    - plperl_sv_to_datum
    - heap_modify_tuple
    - SvTYPE
    - SvRV
    - errcode
    - HeVAL
    - pfree
    - hv_iterinit
    - palloc0
    - ereport
    - hv_iternext
    - SPI_fnumber
    - hek2cstr
    - errmsg
    - TupleDescAttr
    - SvROK
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple plperl_modify_tuple(HV *hvTD, TriggerData *tdata, HeapTuple
      otup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/pl/plperl/plperl.c:1868,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:1871,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/plperl/plperl.c:1874,1
    - Dst: plperl_trigger_handler
      Src: /src/postgres/src/pl/plperl/plperl.c:1875,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/pl/plperl/plperl.c:1876,1
    - Dst: plperl_event_trigger_handler
      Src: /src/postgres/src/pl/plperl/plperl.c:1878,1
    - Dst: plperl_func_handler
      Src: /src/postgres/src/pl/plperl/plperl.c:1882,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plperl/plperl.c:1884,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:1887,1
    - Dst: decrement_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:1889,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:1891,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1859
    functionDepth: 2
    functionLinenumber: 1859
    functionLinenumberEnd: 1894
    functionName: plperl_call_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - activate_interpreter
    - plperl_func_handler
    - PG_FINALLY
    - MemSet
    - plperl_trigger_handler
    - decrement_prodesc_refcount
    - CALLED_AS_EVENT_TRIGGER
    - CALLED_AS_TRIGGER
    - PG_END_TRY
    - plperl_event_trigger_handler
    linkageType: ''
    returnType: Datum
    signature: Datum plperl_call_handler(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/pl/plperl/plperl.c:1904,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/pl/plperl/plperl.c:1905,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plperl/plperl.c:1914,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plperl/plperl.c:1927,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1927,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plperl/plperl.c:1928,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plperl/plperl.c:1929,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:1952,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plperl/plperl.c:1958,1
    - Dst: select_perl_context
      Src: /src/postgres/src/pl/plperl/plperl.c:1960,1
    - Dst: plperl_create_sub
      Src: /src/postgres/src/pl/plperl/plperl.c:1962,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:1965,1
    - Dst: plperl_call_perl_func
      Src: /src/postgres/src/pl/plperl/plperl.c:1967,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:1969,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plperl/plperl.c:1971,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:1972,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plperl/plperl.c:1974,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:1977,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:1979,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:1981,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plperl/plperl.c:1985,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1901
    functionDepth: 3
    functionLinenumber: 1901
    functionLinenumberEnd: 1986
    functionName: plperl_inline_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - elog
    - SPI_finish
    - PG_TRY
    - PG_RETURN_VOID
    - activate_interpreter
    - select_perl_context
    - plperl_call_perl_func
    - LOCAL_FCINFO
    - PG_FINALLY
    - MemSet
    - SPI_connect_ext
    - plperl_create_sub
    - PG_GETARG_POINTER
    - SvREFCNT_dec_current
    - SizeForFunctionCallInfo
    - PG_END_TRY
    linkageType: ''
    returnType: Datum
    signature: Datum plperl_inline_handler(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/pl/plperl/plperl.c:1998,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/pl/plperl/plperl.c:2010,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plperl/plperl.c:2011,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plperl/plperl.c:2014,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2014,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2015,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2016,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2017,1
    - Dst: get_typtype
      Src: /src/postgres/src/pl/plperl/plperl.c:2019,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2031,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2032,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2033,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:2034,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/pl/plperl/plperl.c:2038,1
    - Dst: get_typtype
      Src: /src/postgres/src/pl/plperl/plperl.c:2042,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2044,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2045,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2046,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:2047,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2050,1
    - Dst: compile_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2055,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plperl/plperl.c:2059,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2060
      start: 1995
    functionDepth: 1
    functionLinenumber: 1995
    functionLinenumberEnd: 2060
    functionName: plperl_validator
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - PG_RETURN_VOID
    - format_type_be
    - get_typtype
    - get_func_arg_info
    - errcode
    - HeapTupleIsValid
    - ereport
    - ReleaseSysCache
    - PG_GETARG_OID
    - CheckFunctionValidatorAccess
    - GETSTRUCT
    - errmsg
    - compile_plperl_function
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum plperl_validator(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: plperl_call_handler
      Src: /src/postgres/src/pl/plperl/plperl.c:2076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2073
    functionDepth: 3
    functionLinenumber: 2073
    functionLinenumberEnd: 2077
    functionName: plperlu_call_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - plperl_call_handler
    linkageType: ''
    returnType: Datum
    signature: Datum plperlu_call_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: plperl_inline_handler
      Src: /src/postgres/src/pl/plperl/plperl.c:2084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 2081
    functionDepth: 4
    functionLinenumber: 2081
    functionLinenumberEnd: 2085
    functionName: plperlu_inline_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - plperl_inline_handler
    linkageType: ''
    returnType: Datum
    signature: Datum plperlu_inline_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: plperl_validator
      Src: /src/postgres/src/pl/plperl/plperl.c:2093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2094
      start: 2089
    functionDepth: 2
    functionLinenumber: 2089
    functionLinenumberEnd: 2094
    functionName: plperlu_validator
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - plperl_validator
    linkageType: ''
    returnType: Datum
    signature: Datum plperlu_validator(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: newHV
      Src: /src/postgres/src/pl/plperl/plperl.c:2107,1
    - Dst: sprintf
      Src: /src/postgres/src/pl/plperl/plperl.c:2111,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:2114,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:2114,1
    - Dst: PUSHMARK
      Src: /src/postgres/src/pl/plperl/plperl.c:2118,1
    - Dst: EXTEND
      Src: /src/postgres/src/pl/plperl/plperl.c:2119,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2120,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2120,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2120,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2121,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2121,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:2121,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2128,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2129,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2129,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2129,1
    - Dst: call_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:2137,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:2145,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:2145,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:2145,1
    - Dst: newRV_inc
      Src: /src/postgres/src/pl/plperl/plperl.c:2147,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:2147,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:2155,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2156,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2157,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2158,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:2158,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2158,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2161,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2162,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2163,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - prodesc
    - s
    - fn_oid
    argTypes:
    - plperl_proc_desc*
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2101
    functionDepth: 2
    functionLinenumber: 2101
    functionLinenumberEnd: 2167
    functionName: plperl_create_sub
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - sv2cstr
    - newRV_inc
    - SvRV
    - errcode
    - newHV
    - newAV
    - call_pv
    - sv_2mortal
    - errmsg
    - EXTEND
    - SvTYPE
    - PUSHMARK
    - ereport
    - cstr2sv
    - hv_store_string
    - SvROK
    - SvTRUE
    - PUSHs
    - strip_trailing_ws
    - newRV_noinc
    - sprintf
    linkageType: ''
    returnType: void
    signature: void plperl_create_sub(plperl_proc_desc *prodesc, const char *s, Oid
      fn_oid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: newXS
      Src: /src/postgres/src/pl/plperl/plperl.c:2179,1
    - Dst: newXS
      Src: /src/postgres/src/pl/plperl/plperl.c:2180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2174
    functionDepth: 0
    functionLinenumber: 2174
    functionLinenumberEnd: 2183
    functionName: plperl_init_shared_libs
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - newXS
    linkageType: ''
    returnType: void
    signature: void plperl_init_shared_libs(pTHX)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PUSHMARK
      Src: /src/postgres/src/pl/plperl/plperl.c:2200,1
    - Dst: EXTEND
      Src: /src/postgres/src/pl/plperl/plperl.c:2201,1
    - Dst: get_func_signature
      Src: /src/postgres/src/pl/plperl/plperl.c:2205,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:2206,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2211,1
    - Dst: plperl_hash_from_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:2214,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2216,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2216,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2223,1
    - Dst: plperl_ref_from_pg_array
      Src: /src/postgres/src/pl/plperl/plperl.c:2224,1
    - Dst: get_transform_fromsql
      Src: /src/postgres/src/pl/plperl/plperl.c:2225,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plperl/plperl.c:2226,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:2226,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:2231,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2233,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:2234,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2237,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2237,1
    - Dst: call_sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2243,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2252,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2253,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2254,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:2257,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2264,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2265,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2266,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:2266,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2266,1
    - Dst: newSVsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2269,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 2
    argNames:
    - desc
    - fcinfo
    argTypes:
    - plperl_proc_desc*
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2276
      start: 2186
    functionDepth: 2
    functionLinenumber: 2186
    functionLinenumberEnd: 2276
    functionName: plperl_call_perl_func
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - sv2cstr
    - errcode
    - get_func_signature
    - plperl_hash_from_datum
    - Assert
    - pfree
    - sv_2mortal
    - OidFunctionCall1
    - newSVsv
    - errmsg
    - get_transform_fromsql
    - call_sv
    - OidIsValid
    - EXTEND
    - PUSHMARK
    - ereport
    - cstr2sv
    - OutputFunctionCall
    - plperl_ref_from_pg_array
    - SvTRUE
    - PUSHs
    - strip_trailing_ws
    - DatumGetPointer
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_call_perl_func(plperl_proc_desc *desc, FunctionCallInfo fcinfo)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2294,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2296,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2297,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2298,1
    - Dst: save_item
      Src: /src/postgres/src/pl/plperl/plperl.c:2300,1
    - Dst: sv_setsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2301,1
    - Dst: PUSHMARK
      Src: /src/postgres/src/pl/plperl/plperl.c:2303,1
    - Dst: EXTEND
      Src: /src/postgres/src/pl/plperl/plperl.c:2304,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2307,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2307,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2307,1
    - Dst: call_sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2311,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2320,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2321,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2322,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:2325,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2332,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2333,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2334,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:2334,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2334,1
    - Dst: newSVsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2337,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 3
    argNames:
    - desc
    - fcinfo
    - td
    argTypes:
    - plperl_proc_desc*
    - FunctionCallInfo
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2344
      start: 2279
    functionDepth: 2
    functionLinenumber: 2279
    functionLinenumberEnd: 2344
    functionName: plperl_call_perl_trigger_func
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - sv2cstr
    - get_sv
    - errcode
    - PUSHMARK
    - SvTRUE
    - ereport
    - PUSHs
    - cstr2sv
    - sv_2mortal
    - strip_trailing_ws
    - newSVsv
    - errmsg
    - sv_setsv
    - call_sv
    - EXTEND
    - save_item
    linkageType: ''
    returnType: SV
    signature: "SV *\nplperl_call_perl_trigger_func(plperl_proc_desc *desc, FunctionCallInfo
      fcinfo,\n\t\t\t\t\t\t\t  SV *td)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2361,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2363,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2364,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2365,1
    - Dst: save_item
      Src: /src/postgres/src/pl/plperl/plperl.c:2367,1
    - Dst: sv_setsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2368,1
    - Dst: PUSHMARK
      Src: /src/postgres/src/pl/plperl/plperl.c:2370,1
    - Dst: call_sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2374,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2383,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2384,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2385,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:2388,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2395,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2396,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2397,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:2397,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2397,1
    - Dst: newSVsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 3
    argNames:
    - desc
    - fcinfo
    - td
    argTypes:
    - plperl_proc_desc*
    - FunctionCallInfo
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2406
      start: 2347
    functionDepth: 2
    functionLinenumber: 2347
    functionLinenumberEnd: 2406
    functionName: plperl_call_perl_event_trigger_func
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - sv2cstr
    - get_sv
    - errcode
    - PUSHMARK
    - SvTRUE
    - ereport
    - strip_trailing_ws
    - newSVsv
    - errmsg
    - sv_setsv
    - call_sv
    - save_item
    linkageType: ''
    returnType: void
    signature: "void plperl_call_perl_event_trigger_func(plperl_proc_desc *desc,\n\t\t\t\t\t\t\t\t\tFunctionCallInfo
      fcinfo,\n\t\t\t\t\t\t\t\t\tSV *td)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/pl/plperl/plperl.c:2419,1
    - Dst: castNode
      Src: /src/postgres/src/pl/plperl/plperl.c:2420,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plperl/plperl.c:2422,1
    - Dst: compile_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2424,1
    - Dst: increment_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2426,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plperl/plperl.c:2439,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2440,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2441,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2442,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2445,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2446,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2447,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2450,1
    - Dst: plperl_call_perl_func
      Src: /src/postgres/src/pl/plperl/plperl.c:2452,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plperl/plperl.c:2460,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2461,1
    - Dst: get_perl_array_ref
      Src: /src/postgres/src/pl/plperl/plperl.c:2473,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:2479,1
    - Dst: av_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:2481,1
    - Dst: plperl_return_next_internal
      Src: /src/postgres/src/pl/plperl/plperl.c:2483,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:2487,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2489,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2490,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2491,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:2505,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plperl/plperl.c:2513,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2520,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2523
      start: 2408
    functionDepth: 6
    functionLinenumber: 2408
    functionLinenumberEnd: 2523
    functionName: plperl_func_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - SvRV
    - activate_interpreter
    - errcode
    - plperl_call_perl_func
    - plperl_return_next_internal
    - elog
    - SvOK
    - SPI_connect_ext
    - errmsg
    - plperl_sv_to_datum
    - ereport
    - compile_plperl_function
    - SvREFCNT_dec_current
    - SPI_finish
    - get_perl_array_ref
    - increment_prodesc_refcount
    - av_fetch
    - castNode
    - IsA
    linkageType: ''
    returnType: Datum
    signature: Datum plperl_func_handler(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: SPI_connect
      Src: /src/postgres/src/pl/plperl/plperl.c:2539,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/pl/plperl/plperl.c:2543,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:2544,1
    - Dst: compile_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2547,1
    - Dst: increment_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2549,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2557,1
    - Dst: plperl_trigger_build_args
      Src: /src/postgres/src/pl/plperl/plperl.c:2559,1
    - Dst: plperl_call_perl_trigger_func
      Src: /src/postgres/src/pl/plperl/plperl.c:2560,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:2561,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plperl/plperl.c:2569,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2570,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:2572,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plperl/plperl.c:2577,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2578,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plperl/plperl.c:2579,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2580,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plperl/plperl.c:2581,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2582,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/pl/plperl/plperl.c:2583,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2584,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2593,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plperl/plperl.c:2595,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plperl/plperl.c:2597,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plperl/plperl.c:2601,1
    - Dst: plperl_modify_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:2602,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plperl/plperl.c:2604,1
    - Dst: plperl_modify_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:2605,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2609,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2610,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2611,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2617,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2618,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2619,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2623,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:2624,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2630,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2632,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2635
      start: 2526
    functionDepth: 7
    functionLinenumber: 2526
    functionLinenumberEnd: 2635
    functionName: plperl_trigger_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - sv2cstr
    - SvRV
    - activate_interpreter
    - TRIGGER_FIRED_BY_INSERT
    - errcode
    - elog
    - SvOK
    - Assert
    - pfree
    - SPI_register_trigger_data
    - TRIGGER_FIRED_BY_DELETE
    - PointerGetDatum
    - errmsg
    - ereport
    - TRIGGER_FIRED_BY_TRUNCATE
    - compile_plperl_function
    - SvREFCNT_dec_current
    - SPI_finish
    - pg_strcasecmp
    - increment_prodesc_refcount
    - plperl_trigger_build_args
    - plperl_modify_tuple
    - TRIGGER_FIRED_BY_UPDATE
    - plperl_call_perl_trigger_func
    - SPI_connect
    linkageType: ''
    returnType: Datum
    signature: Datum plperl_trigger_handler(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SPI_connect
      Src: /src/postgres/src/pl/plperl/plperl.c:2646,1
    - Dst: compile_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2649,1
    - Dst: increment_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2651,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2659,1
    - Dst: plperl_event_trigger_build_args
      Src: /src/postgres/src/pl/plperl/plperl.c:2661,1
    - Dst: plperl_call_perl_event_trigger_func
      Src: /src/postgres/src/pl/plperl/plperl.c:2662,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plperl/plperl.c:2664,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2665,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2671
      start: 2638
    functionDepth: 3
    functionLinenumber: 2638
    functionLinenumberEnd: 2671
    functionName: plperl_event_trigger_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - elog
    - SPI_finish
    - increment_prodesc_refcount
    - activate_interpreter
    - plperl_call_perl_event_trigger_func
    - compile_plperl_function
    - SvREFCNT_dec_current
    - plperl_event_trigger_build_args
    - SPI_connect
    linkageType: ''
    returnType: void
    signature: void plperl_event_trigger_handler(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/pl/plperl/plperl.c:2687,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/pl/plperl/plperl.c:2688,1
    - Dst: decrement_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2696,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - proc_ptr
    - procTup
    argTypes:
    - plperl_proc_ptr*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2700
      start: 2674
    functionDepth: 1
    functionLinenumber: 2674
    functionLinenumberEnd: 2700
    functionName: validate_plperl_function
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - ItemPointerEquals
    - HeapTupleHeaderGetRawXmin
    - decrement_prodesc_refcount
    linkageType: ''
    returnType: bool
    signature: bool validate_plperl_function(plperl_proc_ptr *proc_ptr, HeapTuple
      procTup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:2706,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2712,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2713,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2714,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:2717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - prodesc
    argTypes:
    - plperl_proc_desc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2718
      start: 2703
    functionDepth: 2
    functionLinenumber: 2703
    functionLinenumberEnd: 2718
    functionName: free_plperl_function
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextDelete
    - SvREFCNT_dec_current
    - activate_interpreter
    linkageType: ''
    returnType: void
    signature: void free_plperl_function(plperl_proc_desc *prodesc)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plperl/plperl.c:2734,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2734,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2735,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2736,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2737,1
    - Dst: GetUserId
      Src: /src/postgres/src/pl/plperl/plperl.c:2747,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:2748,1
    - Dst: validate_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2750,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2753,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:2759,1
    - Dst: validate_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2761,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2764,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plperl/plperl.c:2779,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:2782,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plperl/plperl.c:2797,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:2805,1
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plperl/plperl.c:2806,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:2807,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plperl/plperl.c:2807,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/pl/plperl/plperl.c:2808,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/pl/plperl/plperl.c:2811,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:2814,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:2815,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:2816,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:2817,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/pl/plperl/plperl.c:2824,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:2826,1
    - Dst: oid_array_to_list
      Src: /src/postgres/src/pl/plperl/plperl.c:2827,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:2828,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plperl/plperl.c:2833,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2834,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2835,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2836,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2838,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2841,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plperl/plperl.c:2851,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2851,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2852,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2853,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2854,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2864,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2865,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2866,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2869,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2870,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2871,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:2872,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:2877,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/pl/plperl/plperl.c:2878,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plperl/plperl.c:2880,1
    - Dst: getTypeIOParam
      Src: /src/postgres/src/pl/plperl/plperl.c:2883,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2885,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plperl/plperl.c:2900,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2900,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2901,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2902,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2903,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2908,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2909,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2910,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:2911,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:2913,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plperl/plperl.c:2918,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/pl/plperl/plperl.c:2924,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2929,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/pl/plperl/plperl.c:2938,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plperl/plperl.c:2940,1
    - Dst: select_perl_context
      Src: /src/postgres/src/pl/plperl/plperl.c:2946,1
    - Dst: plperl_create_sub
      Src: /src/postgres/src/pl/plperl/plperl.c:2950,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2952,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:2954,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2957,1
    - Dst: GetUserId
      Src: /src/postgres/src/pl/plperl/plperl.c:2965,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:2967,1
    - Dst: increment_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2971,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:2973,1
    - Dst: free_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2981,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:2983,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2986,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plperl/plperl.c:2988,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:2990,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2995,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 115
    argCount: 3
    argNames:
    - fn_oid
    - is_trigger
    - is_event_trigger
    argTypes:
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2998
      start: 2721
    functionDepth: 3
    functionLinenumber: 2721
    functionLinenumberEnd: 2998
    functionName: compile_plperl_function
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 4
    functionsReached:
    - getTypeIOParam
    - PG_TRY
    - GetUserId
    - errcode
    - activate_interpreter
    - oid_array_to_list
    - pstrdup
    - NameStr
    - plperl_create_sub
    - MemoryContextSetIdentifier
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - HeapTupleHeaderGetRawXmin
    - pfree
    - select_perl_context
    - PG_RE_THROW
    - ReleaseSysCache
    - errmsg
    - ObjectIdGetDatum
    - IsTrueArrayType
    - TextDatumGetCString
    - PG_END_TRY
    - palloc0_object
    - ereport
    - validate_plperl_function
    - GETSTRUCT
    - AllocSetContextCreate
    - SysCacheGetAttrNotNull
    - type_is_rowtype
    - fmgr_info_cxt
    - PG_CATCH
    - format_type_be
    - hash_search
    - increment_prodesc_refcount
    - palloc0
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - SysCacheGetAttr
    - free_plperl_function
    linkageType: ''
    returnType: plperl_proc_desc
    signature: 'plperl_proc_desc *

      compile_plperl_function(Oid fn_oid, bool is_trigger, bool is_event_trigger)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/pl/plperl/plperl.c:3011,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/plperl/plperl.c:3014,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/plperl/plperl.c:3015,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plperl/plperl.c:3016,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/plperl/plperl.c:3019,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:3022,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plperl/plperl.c:3023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - attr
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3026
      start: 3001
    functionDepth: 1
    functionLinenumber: 3001
    functionLinenumberEnd: 3026
    functionName: plperl_hash_from_datum
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetTypeId
    - lookup_rowtype_tupdesc
    - plperl_hash_from_tuple
    - DatumGetHeapTupleHeader
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_hash_from_datum(Datum attr)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/pl/plperl/plperl.c:3037,1
    - Dst: newHV
      Src: /src/postgres/src/pl/plperl/plperl.c:3039,1
    - Dst: hv_ksplit
      Src: /src/postgres/src/pl/plperl/plperl.c:3040,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plperl/plperl.c:3049,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plperl/plperl.c:3064,1
    - Dst: heap_getattr
      Src: /src/postgres/src/pl/plperl/plperl.c:3065,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3074,1
    - Dst: newSV
      Src: /src/postgres/src/pl/plperl/plperl.c:3074,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:3078,1
    - Dst: plperl_hash_from_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:3080,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3082,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:3089,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/pl/plperl/plperl.c:3089,1
    - Dst: plperl_ref_from_pg_array
      Src: /src/postgres/src/pl/plperl/plperl.c:3090,1
    - Dst: get_transform_fromsql
      Src: /src/postgres/src/pl/plperl/plperl.c:3091,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plperl/plperl.c:3092,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:3092,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/plperl/plperl.c:3098,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:3100,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3101,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3102,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3105,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:3108,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 3
    argNames:
    - tuple
    - tupdesc
    - include_generated
    argTypes:
    - HeapTuple
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3109
      start: 3029
    functionDepth: 2
    functionLinenumber: 3029
    functionLinenumberEnd: 3109
    functionName: plperl_hash_from_tuple
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - get_base_element_type
    - check_stack_depth
    - newSV
    - newHV
    - NameStr
    - plperl_hash_from_datum
    - pfree
    - OidFunctionCall1
    - OidOutputFunctionCall
    - get_transform_fromsql
    - OidIsValid
    - heap_getattr
    - cstr2sv
    - hv_store_string
    - TupleDescAttr
    - type_is_rowtype
    - hv_ksplit
    - plperl_ref_from_pg_array
    - newRV_noinc
    - getTypeOutputInfo
    - DatumGetPointer
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_hash_from_tuple(HeapTuple tuple, TupleDesc tupdesc, bool include_generated)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: croak
      Src: /src/postgres/src/pl/plperl/plperl.c:3119,1
    - Dst: croak
      Src: /src/postgres/src/pl/plperl/plperl.c:3134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3136
      start: 3112
    functionDepth: 0
    functionLinenumber: 3112
    functionLinenumberEnd: 3136
    functionName: check_spi_usage_allowed
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - croak
    linkageType: ''
    returnType: void
    signature: void check_spi_usage_allowed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3151,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3153,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3155,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3157,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3161,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:3161,1
    - Dst: SPI_execute
      Src: /src/postgres/src/pl/plperl/plperl.c:3163,1
    - Dst: plperl_spi_execute_fetch_result
      Src: /src/postgres/src/pl/plperl/plperl.c:3165,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3169,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3170,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3173,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3178,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3179,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3180,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3183,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3184,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3188,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 2
    argNames:
    - query
    - limit
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3196
      start: 3139
    functionDepth: 3
    functionLinenumber: 3139
    functionLinenumberEnd: 3196
    functionName: plperl_spi_exec
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - plperl_spi_execute_fetch_result
    - BeginInternalSubTransaction
    - CopyErrorData
    - ReleaseCurrentSubTransaction
    - croak_cstr
    - MemoryContextSwitchTo
    - pg_verifymbstr
    - SPI_execute
    - strlen
    - FlushErrorState
    - RollbackAndReleaseCurrentSubTransaction
    - check_spi_usage_allowed
    - PG_END_TRY
    linkageType: ''
    returnType: HV
    signature: 'HV *

      plperl_spi_exec(char *query, int limit)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3206,1
    - Dst: newHV
      Src: /src/postgres/src/pl/plperl/plperl.c:3208,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3210,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3211,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3211,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3212,1
    - Dst: newSVnv
      Src: /src/postgres/src/pl/plperl/plperl.c:3214,1
    - Dst: newSVuv
      Src: /src/postgres/src/pl/plperl/plperl.c:3215,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:3225,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:3226,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:3227,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:3229,1
    - Dst: av_extend
      Src: /src/postgres/src/pl/plperl/plperl.c:3230,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:3233,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:3234,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3236,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:3237,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plperl/plperl.c:3240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - tuptable
    - processed
    - status
    argTypes:
    - SPITupleTable*
    - uint64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3243
      start: 3199
    functionDepth: 3
    functionLinenumber: 3199
    functionLinenumberEnd: 3243
    functionName: plperl_spi_execute_fetch_result
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - SPI_result_code_string
    - errcode
    - ereport
    - newSVuv
    - cstr2sv
    - av_extend
    - SPI_freetuptable
    - newHV
    - errmsg
    - newSVnv
    - newAV
    - hv_store_string
    - plperl_hash_from_tuple
    - check_spi_usage_allowed
    - av_push
    - newRV_noinc
    linkageType: ''
    returnType: HV
    signature: "HV *\nplperl_spi_execute_fetch_result(SPITupleTable *tuptable, uint64
      processed,\n\t\t\t\t\t\t\t\tint status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3256,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3258,1
    - Dst: plperl_return_next_internal
      Src: /src/postgres/src/pl/plperl/plperl.c:3260,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3262,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3267,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3268,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3269,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3272,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - sv
    argTypes:
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3275
      start: 3251
    functionDepth: 3
    functionLinenumber: 3251
    functionLinenumberEnd: 3275
    functionName: plperl_return_next
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - CopyErrorData
    - croak_cstr
    - MemoryContextSwitchTo
    - FlushErrorState
    - check_spi_usage_allowed
    - PG_END_TRY
    - plperl_return_next_internal
    linkageType: ''
    returnType: void
    signature: void plperl_return_next(SV *sv)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:3297,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:3298,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:3299,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:3305,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/plperl/plperl.c:3317,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:3320,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:3321,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:3322,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3333,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3340,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/pl/plperl/plperl.c:3342,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/pl/plperl/plperl.c:3344,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3347,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plperl/plperl.c:3359,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3364,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:3370,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:3370,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:3370,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:3370,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:3371,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:3372,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:3373,1
    - Dst: plperl_build_tuple_result
      Src: /src/postgres/src/pl/plperl/plperl.c:3376,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:3376,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:3379,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/plperl/plperl.c:3380,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:3380,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/pl/plperl/plperl.c:3385,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:3392,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/plperl/plperl.c:3400,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3405,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plperl/plperl.c:3406,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 1
    argNames:
    - sv
    argTypes:
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3407
      start: 3281
    functionDepth: 6
    functionLinenumber: 3281
    functionLinenumberEnd: 3407
    functionName: plperl_return_next_internal
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - SvRV
    - errcode
    - tuplestore_putvalues
    - elog
    - SvOK
    - MemoryContextReset
    - Assert
    - CreateTupleDescCopy
    - errmsg
    - OidIsValid
    - get_call_result_type
    - SvTYPE
    - tuplestore_begin_heap
    - plperl_sv_to_datum
    - ereport
    - domain_check
    - AllocSetContextCreate
    - SvROK
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - tuplestore_puttuple
    - plperl_build_tuple_result
    linkageType: ''
    returnType: void
    signature: void plperl_return_next_internal(SV *sv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3422,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3424,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3426,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3428,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3434,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:3434,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/pl/plperl/plperl.c:3437,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3439,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3440,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/pl/plperl/plperl.c:3442,1
    - Dst: SPI_freeplan
      Src: /src/postgres/src/pl/plperl/plperl.c:3443,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3445,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3446,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3447,1
    - Dst: PinPortal
      Src: /src/postgres/src/pl/plperl/plperl.c:3449,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3452,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3453,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3456,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3461,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3462,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3463,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3466,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3467,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3471,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3476,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3479
      start: 3410
    functionDepth: 3
    functionLinenumber: 3410
    functionLinenumberEnd: 3479
    functionName: plperl_spi_query
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - BeginInternalSubTransaction
    - CopyErrorData
    - elog
    - SPI_freeplan
    - pg_verifymbstr
    - PG_END_TRY
    - SPI_result_code_string
    - PinPortal
    - cstr2sv
    - SPI_prepare
    - strlen
    - RollbackAndReleaseCurrentSubTransaction
    - SPI_cursor_open
    - PG_CATCH
    - ReleaseCurrentSubTransaction
    - croak_cstr
    - MemoryContextSwitchTo
    - FlushErrorState
    - check_spi_usage_allowed
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_spi_query(char *query)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3494,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3496,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3498,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3500,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plperl/plperl.c:3503,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:3511,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plperl/plperl.c:3514,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plperl/plperl.c:3515,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:3520,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plperl/plperl.c:3524,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3528,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3529,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3532,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3537,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3538,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3539,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3542,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3543,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3547,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3552,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 1
    argNames:
    - cursor
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3555
      start: 3482
    functionDepth: 3
    functionLinenumber: 3482
    functionLinenumberEnd: 3555
    functionName: plperl_spi_fetchrow
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - UnpinPortal
    - BeginInternalSubTransaction
    - SPI_cursor_fetch
    - ReleaseCurrentSubTransaction
    - CopyErrorData
    - SPI_cursor_find
    - croak_cstr
    - MemoryContextSwitchTo
    - SPI_cursor_close
    - plperl_hash_from_tuple
    - FlushErrorState
    - RollbackAndReleaseCurrentSubTransaction
    - SPI_freetuptable
    - check_spi_usage_allowed
    - PG_END_TRY
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_spi_fetchrow(char *cursor)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3562,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plperl/plperl.c:3564,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plperl/plperl.c:3568,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plperl/plperl.c:3569,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cursor
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3571
      start: 3557
    functionDepth: 1
    functionLinenumber: 3557
    functionLinenumberEnd: 3571
    functionName: plperl_spi_cursor_close
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - check_spi_usage_allowed
    - SPI_cursor_find
    - SPI_cursor_close
    - UnpinPortal
    linkageType: ''
    returnType: void
    signature: void plperl_spi_cursor_close(char *cursor)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3586,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3588,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3589,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3591,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/pl/plperl/plperl.c:3593,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plperl/plperl.c:3601,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3604,1
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/plperl/plperl.c:3605,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plperl/plperl.c:3606,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3609,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3610,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3611,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3612,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plperl/plperl.c:3618,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3621,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3636,1
    - Dst: parseTypeString
      Src: /src/postgres/src/pl/plperl/plperl.c:3637,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3638,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/pl/plperl/plperl.c:3640,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plperl/plperl.c:3643,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3648,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:3648,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/pl/plperl/plperl.c:3653,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3656,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3657,1
    - Dst: SPI_keepplan
      Src: /src/postgres/src/pl/plperl/plperl.c:3663,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3664,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3670,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:3676,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3679,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3680,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3683,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3688,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3689,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3690,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3694,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:3698,1
    - Dst: SPI_freeplan
      Src: /src/postgres/src/pl/plperl/plperl.c:3700,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3703,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3704,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3708,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3713,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3718,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 59
    argCount: 3
    argNames:
    - query
    - argc
    - argv
    argTypes:
    - char*
    - int
    - SV**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3719
      start: 3573
    functionDepth: 3
    functionLinenumber: 3573
    functionLinenumberEnd: 3719
    functionName: plperl_spi_prepare
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - sv2cstr
    - PG_TRY
    - BeginInternalSubTransaction
    - CopyErrorData
    - elog
    - SPI_freeplan
    - pfree
    - SPI_keepplan
    - pg_verifymbstr
    - PG_END_TRY
    - palloc0_object
    - SPI_result_code_string
    - CHECK_FOR_INTERRUPTS
    - cstr2sv
    - SPI_prepare
    - strlen
    - RollbackAndReleaseCurrentSubTransaction
    - AllocSetContextCreate
    - parseTypeString
    - fmgr_info_cxt
    - getTypeInputInfo
    - PG_CATCH
    - hash_search
    - ReleaseCurrentSubTransaction
    - croak_cstr
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - FlushErrorState
    - palloc
    - check_spi_usage_allowed
    - snprintf
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_spi_prepare(char *query, int argc, SV **argv)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3741,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3743,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3745,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3747,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3754,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3757,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3761,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3764,1
    - Dst: hv_fetch_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3773,1
    - Dst: SvIOK
      Src: /src/postgres/src/pl/plperl/plperl.c:3774,1
    - Dst: SvIV
      Src: /src/postgres/src/pl/plperl/plperl.c:3775,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3782,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3783,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:3795,1
    - Dst: SPI_execute_plan
      Src: /src/postgres/src/pl/plperl/plperl.c:3808,1
    - Dst: plperl_spi_execute_fetch_result
      Src: /src/postgres/src/pl/plperl/plperl.c:3810,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3814,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3815,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3819,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3820,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3823,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3828,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3829,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3830,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3833,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3834,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3838,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3843,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 53
    argCount: 4
    argNames:
    - query
    - attr
    - argc
    - argv
    argTypes:
    - char*
    - HV*
    - int
    - SV**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3846
      start: 3721
    functionDepth: 6
    functionLinenumber: 3721
    functionLinenumberEnd: 3846
    functionName: plperl_spi_exec_prepared
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - hv_fetch_string
    - PG_TRY
    - SvIOK
    - BeginInternalSubTransaction
    - CopyErrorData
    - elog
    - plperl_spi_execute_fetch_result
    - pfree
    - SPI_execute_plan
    - PG_END_TRY
    - plperl_sv_to_datum
    - SvIV
    - RollbackAndReleaseCurrentSubTransaction
    - PG_CATCH
    - hash_search
    - ReleaseCurrentSubTransaction
    - croak_cstr
    - MemoryContextSwitchTo
    - FlushErrorState
    - palloc
    - check_spi_usage_allowed
    linkageType: ''
    returnType: HV
    signature: 'HV *

      plperl_spi_exec_prepared(char *query, HV *attr, int argc, SV **argv)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3866,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3868,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3870,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3872,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3877,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3880,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3884,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3887,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3895,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3896,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:3908,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/pl/plperl/plperl.c:3921,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3925,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3926,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3929,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3930,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3932,1
    - Dst: PinPortal
      Src: /src/postgres/src/pl/plperl/plperl.c:3934,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3937,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3938,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3941,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3946,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3947,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3948,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3951,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3952,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3956,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3961,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 3
    argNames:
    - query
    - argc
    - argv
    argTypes:
    - char*
    - int
    - SV**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3964
      start: 3848
    functionDepth: 6
    functionLinenumber: 3848
    functionLinenumberEnd: 3964
    functionName: plperl_spi_query_prepared
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - BeginInternalSubTransaction
    - CopyErrorData
    - elog
    - pfree
    - PG_END_TRY
    - plperl_sv_to_datum
    - SPI_result_code_string
    - PinPortal
    - cstr2sv
    - RollbackAndReleaseCurrentSubTransaction
    - SPI_cursor_open
    - PG_CATCH
    - hash_search
    - ReleaseCurrentSubTransaction
    - croak_cstr
    - MemoryContextSwitchTo
    - FlushErrorState
    - palloc
    - check_spi_usage_allowed
    linkageType: ''
    returnType: SV
    signature: 'SV *

      plperl_spi_query_prepared(char *query, int argc, SV **argv)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:3973,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3975,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3978,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3982,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3989,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:3992,1
    - Dst: SPI_freeplan
      Src: /src/postgres/src/pl/plperl/plperl.c:3994,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3995
      start: 3966
    functionDepth: 1
    functionLinenumber: 3966
    functionLinenumberEnd: 3995
    functionName: plperl_spi_freeplan
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - elog
    - SPI_freeplan
    - hash_search
    - MemoryContextDelete
    - check_spi_usage_allowed
    linkageType: ''
    returnType: void
    signature: void plperl_spi_freeplan(char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:4002,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4004,1
    - Dst: SPI_commit
      Src: /src/postgres/src/pl/plperl/plperl.c:4006,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:4008,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:4013,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:4014,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:4015,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:4018,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4021
      start: 3997
    functionDepth: 3
    functionLinenumber: 3997
    functionLinenumberEnd: 4021
    functionName: plperl_spi_commit
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - CopyErrorData
    - croak_cstr
    - MemoryContextSwitchTo
    - FlushErrorState
    - SPI_commit
    - check_spi_usage_allowed
    - PG_END_TRY
    linkageType: ''
    returnType: void
    signature: void plperl_spi_commit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_spi_usage_allowed
      Src: /src/postgres/src/pl/plperl/plperl.c:4028,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4030,1
    - Dst: SPI_rollback
      Src: /src/postgres/src/pl/plperl/plperl.c:4032,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:4034,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:4039,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:4040,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:4041,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:4044,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4047
      start: 4023
    functionDepth: 3
    functionLinenumber: 4023
    functionLinenumberEnd: 4047
    functionName: plperl_spi_rollback
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - CopyErrorData
    - croak_cstr
    - MemoryContextSwitchTo
    - FlushErrorState
    - SPI_rollback
    - check_spi_usage_allowed
    - PG_END_TRY
    linkageType: ''
    returnType: void
    signature: void plperl_spi_rollback(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4071,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:4073,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:4074,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:4075,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:4077,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:4082,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:4083,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:4084,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:4087,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:4090,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - level
    - msg
    argTypes:
    - int
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4093
      start: 4060
    functionDepth: 3
    functionLinenumber: 4060
    functionLinenumberEnd: 4093
    functionName: plperl_util_elog
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - sv2cstr
    - elog
    - PG_CATCH
    - PG_TRY
    - pfree
    - CopyErrorData
    - croak_cstr
    - MemoryContextSwitchTo
    - FlushErrorState
    - PG_END_TRY
    linkageType: ''
    returnType: void
    signature: void plperl_util_elog(int level, SV *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_server_to_any
      Src: /src/postgres/src/pl/plperl/plperl.c:4107,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:4107,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:4113,1
    - Dst: hv_store
      Src: /src/postgres/src/pl/plperl/plperl.c:4114,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:4117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4120
      start: 4099
    functionDepth: 1
    functionLinenumber: 4099
    functionLinenumberEnd: 4120
    functionName: hv_store_string
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 5
    functionsReached:
    - hv_store
    - pg_server_to_any
    - strlen
    - pfree
    linkageType: ''
    returnType: SV
    signature: 'SV **

      hv_store_string(HV *hv, const char *key, SV *val)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_server_to_any
      Src: /src/postgres/src/pl/plperl/plperl.c:4134,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:4134,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:4137,1
    - Dst: hv_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:4138,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:4141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4144
      start: 4126
    functionDepth: 1
    functionLinenumber: 4126
    functionLinenumberEnd: 4144
    functionName: hv_fetch_string
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 3
    functionsReached:
    - pfree
    - pg_server_to_any
    - strlen
    - hv_fetch
    linkageType: ''
    returnType: SV
    signature: 'SV **

      hv_fetch_string(HV *hv, const char *key)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:4155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4156
      start: 4149
    functionDepth: 0
    functionLinenumber: 4149
    functionLinenumberEnd: 4156
    functionName: plperl_exec_callback
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - errcontext
    linkageType: ''
    returnType: void
    signature: void plperl_exec_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:4167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4168
      start: 4161
    functionDepth: 0
    functionLinenumber: 4161
    functionLinenumberEnd: 4168
    functionName: plperl_compile_callback
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - errcontext
    linkageType: ''
    returnType: void
    signature: void plperl_compile_callback(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:4176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4177
      start: 4173
    functionDepth: 0
    functionLinenumber: 4173
    functionLinenumberEnd: 4177
    functionName: plperl_inline_callback
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - errcontext
    linkageType: ''
    returnType: void
    signature: void plperl_inline_callback(void *arg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:4191,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:4206,1
    - Dst: new_ctype
      Src: /src/postgres/src/pl/plperl/plperl.c:4210,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:4224,1
    - Dst: new_collate
      Src: /src/postgres/src/pl/plperl/plperl.c:4228,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:4243,1
    - Dst: new_numeric
      Src: /src/postgres/src/pl/plperl/plperl.c:4247,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - category
    - locale
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4253
      start: 4187
    functionDepth: 1
    functionLinenumber: 4187
    functionLinenumberEnd: 4253
    functionName: setlocale_perl
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - new_ctype
    - new_collate
    - setlocale
    - new_numeric
    linkageType: ''
    returnType: char
    signature: 'char *

      setlocale_perl(int category, char *locale)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - expr
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: __builtin_expect
    functionSourceFile: /src/postgres/src/pl/plperl/plperl_system.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __builtin_expect(expr, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: printf
    functionSourceFile: /src/postgres/src/pl/plperl/plperl_system.h
    functionUses: 616
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: printf(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    functionName: _
    functionSourceFile: /src/postgres/src/pl/plperl/plperl_system.h
    functionUses: 273
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: isnan
    functionSourceFile: /src/postgres/src/pl/plperl/plperl_system.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isnan(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - he
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: HeUTF8
    functionSourceFile: /src/postgres/src/pl/plperl/plperl_system.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeUTF8(he)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - gv
    - ','
    - cv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    functionName: GvCV_set
    functionSourceFile: /src/postgres/src/pl/plperl/plperl_system.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GvCV_set(gv, cv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - maj
    - ','
    - min
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: HAVE_TCL_VERSION
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HAVE_TCL_VERSION(maj,min)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_any_to_server
      Src: /src/postgres/src/pl/tcl/pltcl.c:85,1
    - Dst: strlen
      Src: /src/postgres/src/pl/tcl/pltcl.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: utf_u2e
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - strlen
    - pg_any_to_server
    linkageType: ''
    returnType: char
    signature: 'char *

      utf_u2e(const char *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_server_to_any
      Src: /src/postgres/src/pl/tcl/pltcl.c:91,1
    - Dst: strlen
      Src: /src/postgres/src/pl/tcl/pltcl.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: utf_e2u
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 2
    functionsReached:
    - pg_server_to_any
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      utf_e2u(const char *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: UTF_U2E
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF_U2E(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: UTF_E2U
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF_E2U(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 361
    functionName: pltcl_InitNotifier
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ClientData
    signature: ClientData pltcl_InitNotifier(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - clientData
    argTypes:
    - ClientData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 366
    functionName: pltcl_FinalizeNotifier
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pltcl_FinalizeNotifier(ClientData clientData)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - timePtr
    argTypes:
    - CONST86*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: pltcl_SetTimer
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pltcl_SetTimer(CONST86 Tcl_Time *timePtr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - clientData
    argTypes:
    - ClientData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 376
    functionName: pltcl_AlertNotifier
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pltcl_AlertNotifier(ClientData clientData)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - fd
    - mask
    - proc
    - clientData
    argTypes:
    - int
    - int
    - Tcl_FileProc*
    - ClientData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 382
    functionName: pltcl_CreateFileHandler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pltcl_CreateFileHandler(int fd, int mask,\n\t\t\t\t\t\tTcl_FileProc
      *proc, ClientData clientData)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 387
    functionName: pltcl_DeleteFileHandler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pltcl_DeleteFileHandler(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - mode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 392
    functionName: pltcl_ServiceModeHook
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pltcl_ServiceModeHook(int mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timePtr
    argTypes:
    - CONST86*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 398
    functionName: pltcl_WaitForEvent
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pltcl_WaitForEvent(CONST86 Tcl_Time *timePtr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_bindtextdomain
      Src: /src/postgres/src/pl/tcl/pltcl.c:419,1
    - Dst: Tcl_FindExecutable
      Src: /src/postgres/src/pl/tcl/pltcl.c:423,1
    - Dst: Tcl_SetNotifier
      Src: /src/postgres/src/pl/tcl/pltcl.c:437,1
    - Dst: Tcl_CreateInterp
      Src: /src/postgres/src/pl/tcl/pltcl.c:443,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:444,1
    - Dst: Tcl_Init
      Src: /src/postgres/src/pl/tcl/pltcl.c:445,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:446,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/tcl/pltcl.c:453,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/tcl/pltcl.c:463,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/tcl/pltcl.c:471,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/tcl/pltcl.c:472,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/tcl/pltcl.c:478,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/tcl/pltcl.c:479,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/pl/tcl/pltcl.c:486,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/pl/tcl/pltcl.c:487,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 490
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - elog
    - Tcl_FindExecutable
    - Tcl_CreateInterp
    - Tcl_Init
    - DefineCustomStringVariable
    - MarkGUCPrefixReserved
    - hash_create
    - Tcl_SetNotifier
    - gettext_noop
    - pg_bindtextdomain
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:506,1
    - Dst: Tcl_CreateSlave
      Src: /src/postgres/src/pl/tcl/pltcl.c:507,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:509,1
    - Dst: Tcl_InitHashTable
      Src: /src/postgres/src/pl/tcl/pltcl.c:514,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:519,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:521,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:523,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:525,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:527,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:529,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:531,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:533,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:535,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:537,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:539,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:549,1
    - Dst: call_pltcl_start_proc
      Src: /src/postgres/src/pl/tcl/pltcl.c:552,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:554,1
    - Dst: Tcl_DeleteInterp
      Src: /src/postgres/src/pl/tcl/pltcl.c:557,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:558,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 3
    argNames:
    - interp_desc
    - prolang
    - pltrusted
    argTypes:
    - pltcl_interp_desc*
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 561
    functionName: pltcl_init_interp
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_CATCH
    - PG_TRY
    - Tcl_CreateObjCommand
    - call_pltcl_start_proc
    - Tcl_DeleteInterp
    - PG_RE_THROW
    - snprintf
    - Tcl_InitHashTable
    - PG_END_TRY
    - Tcl_CreateSlave
    linkageType: ''
    returnType: void
    signature: void pltcl_init_interp(pltcl_interp_desc *interp_desc, Oid prolang,
      bool pltrusted)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetUserId
      Src: /src/postgres/src/pl/tcl/pltcl.c:577,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/tcl/pltcl.c:581,1
    - Dst: pltcl_init_interp
      Src: /src/postgres/src/pl/tcl/pltcl.c:589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - prolang
    - pltrusted
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 592
    functionName: pltcl_fetch_interp
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - pltcl_init_interp
    - hash_search
    - GetUserId
    linkageType: ''
    returnType: pltcl_interp_desc
    signature: 'pltcl_interp_desc *

      pltcl_fetch_interp(Oid prolang, bool pltrusted)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/pl/tcl/pltcl.c:601,1
    - Dst: unconstify
      Src: /src/postgres/src/pl/tcl/pltcl.c:623,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/pl/tcl/pltcl.c:628,1
    - Dst: LookupFuncName
      Src: /src/postgres/src/pl/tcl/pltcl.c:629,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/pl/tcl/pltcl.c:632,1
    - Dst: GetUserId
      Src: /src/postgres/src/pl/tcl/pltcl.c:632,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/pl/tcl/pltcl.c:634,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/tcl/pltcl.c:637,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:637,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:638,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:639,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/tcl/pltcl.c:640,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:644,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:645,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:646,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:655,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:656,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:657,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:661,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/pl/tcl/pltcl.c:669,1
    - Dst: fmgr_info
      Src: /src/postgres/src/pl/tcl/pltcl.c:670,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/pl/tcl/pltcl.c:671,1
    - Dst: pgstat_init_function_usage
      Src: /src/postgres/src/pl/tcl/pltcl.c:674,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/pl/tcl/pltcl.c:675,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/pl/tcl/pltcl.c:676,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - prolang
    - pltrusted
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 680
    functionName: call_pltcl_start_proc
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - InvokeFunctionExecuteHook
    - GetUserId
    - errcode
    - object_aclcheck
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - LookupFuncName
    - ReleaseSysCache
    - errmsg
    - ObjectIdGetDatum
    - fmgr_info
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - ereport
    - GETSTRUCT
    - aclcheck_error
    - stringToQualifiedNameList
    - unconstify
    - LOCAL_FCINFO
    - pgstat_init_function_usage
    - pgstat_end_function_usage
    linkageType: ''
    returnType: void
    signature: void call_pltcl_start_proc(Oid prolang, bool pltrusted)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/pl/tcl/pltcl.c:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 692
    functionName: start_proc_error_callback
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - errcontext
    linkageType: ''
    returnType: void
    signature: void start_proc_error_callback(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pltcl_handler
      Src: /src/postgres/src/pl/tcl/pltcl.c:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 709
    functionName: pltcl_call_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - pltcl_handler
    linkageType: ''
    returnType: Datum
    signature: Datum pltcl_call_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pltcl_handler
      Src: /src/postgres/src/pl/tcl/pltcl.c:720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 717
    functionDepth: 1
    functionLinenumber: 717
    functionLinenumberEnd: 721
    functionName: pltclu_call_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - pltcl_handler
    linkageType: ''
    returnType: Datum
    signature: Datum pltclu_call_handler(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/pl/tcl/pltcl.c:744,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:752,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/tcl/pltcl.c:758,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:761,1
    - Dst: pltcl_trigger_handler
      Src: /src/postgres/src/pl/tcl/pltcl.c:761,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/pl/tcl/pltcl.c:765,1
    - Dst: pltcl_event_trigger_handler
      Src: /src/postgres/src/pl/tcl/pltcl.c:768,1
    - Dst: pltcl_func_handler
      Src: /src/postgres/src/pl/tcl/pltcl.c:775,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/tcl/pltcl.c:778,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:788,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/tcl/pltcl.c:790,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:793,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - pltrusted
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 796
    functionName: pltcl_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 2
    functionsReached:
    - PG_TRY
    - pltcl_func_handler
    - pltcl_trigger_handler
    - Assert
    - PG_FINALLY
    - MemoryContextDelete
    - pltcl_event_trigger_handler
    - memset
    - PointerGetDatum
    - CALLED_AS_EVENT_TRIGGER
    - CALLED_AS_TRIGGER
    - PG_END_TRY
    linkageType: ''
    returnType: Datum
    signature: Datum pltcl_handler(PG_FUNCTION_ARGS, bool pltrusted)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/pl/tcl/pltcl.c:815,1
    - Dst: castNode
      Src: /src/postgres/src/pl/tcl/pltcl.c:816,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/tcl/pltcl.c:819,1
    - Dst: compile_pltcl_function
      Src: /src/postgres/src/pl/tcl/pltcl.c:822,1
    - Dst: IsA
      Src: /src/postgres/src/pl/tcl/pltcl.c:840,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:841,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:842,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:843,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:846,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:847,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:848,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:859,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:860,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:861,1
    - Dst: Tcl_IncrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:864,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:869,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:879,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:879,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/pl/tcl/pltcl.c:889,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/tcl/pltcl.c:891,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/tcl/pltcl.c:892,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/tcl/pltcl.c:893,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/tcl/pltcl.c:895,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:898,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:899,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/tcl/pltcl.c:901,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:911,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:911,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:916,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:919,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:920,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:920,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:922,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:927,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:930,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:931,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:933,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:940,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:943,1
    - Dst: throw_tcl_error
      Src: /src/postgres/src/pl/tcl/pltcl.c:949,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/tcl/pltcl.c:960,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:961,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:978,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/pl/tcl/pltcl.c:979,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:980,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:988,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/tcl/pltcl.c:1009,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1015,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1019,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1020,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1021,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1026,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1030,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1031,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/pl/tcl/pltcl.c:1033,1
    - Dst: Tcl_GetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1036,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:1037,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1038,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1039,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1040,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1041,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1041,1
    - Dst: pltcl_build_tuple_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:1043,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1045,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:1048,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1049,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1049,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 99
    argCount: 2
    argNames:
    - call_state
    - pltrusted
    argTypes:
    - pltcl_call_state*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 802
    functionDepth: 1
    functionLinenumber: 802
    functionLinenumberEnd: 1054
    functionName: pltcl_func_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - PG_TRY
    - ReleaseTupleDesc
    - errcode
    - compile_pltcl_function
    - UTF_E2U
    - Tcl_GetStringResult
    - pltcl_build_tuple_argument
    - Tcl_ListObjAppendElement
    - Tcl_DecrRefCount
    - pltcl_build_tuple_result
    - elog
    - Tcl_GetObjResult
    - pfree
    - HeapTupleHeaderGetTypMod
    - CreateTupleDescCopy
    - Assert
    - PG_RE_THROW
    - Tcl_EvalObjEx
    - SPI_connect_ext
    - errmsg
    - Tcl_ListObjGetElements
    - get_call_result_type
    - PG_END_TRY
    - DatumGetHeapTupleHeader
    - ereport
    - HeapTupleHeaderGetTypeId
    - OutputFunctionCall
    - utf_u2e
    - InputFunctionCall
    - PG_CATCH
    - SPI_finish
    - TupleDescGetAttInMetadata
    - castNode
    - MemoryContextSwitchTo
    - Tcl_NewStringObj
    - lookup_rowtype_tupdesc
    - HeapTupleGetDatum
    - throw_tcl_error
    - Tcl_NewObj
    - IsA
    - Tcl_IncrRefCount
    linkageType: ''
    returnType: Datum
    signature: "Datum pltcl_func_handler(PG_FUNCTION_ARGS, pltcl_call_state *call_state,\n\t\t\t\t
      \  bool pltrusted)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: SPI_connect
      Src: /src/postgres/src/pl/tcl/pltcl.c:1082,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/pl/tcl/pltcl.c:1085,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1086,1
    - Dst: compile_pltcl_function
      Src: /src/postgres/src/pl/tcl/pltcl.c:1089,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1090,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1099,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1105,1
    - Dst: Tcl_IncrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1106,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1108,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1111,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1112,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1115,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1116,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1116,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/tcl/pltcl.c:1120,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/tcl/pltcl.c:1120,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1121,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1122,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1123,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1124,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/pl/tcl/pltcl.c:1127,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1128,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1129,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1129,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1130,1
    - Dst: SPI_getnspname
      Src: /src/postgres/src/pl/tcl/pltcl.c:1133,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1134,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1135,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1135,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1136,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1139,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1140,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1140,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1143,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1146,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1146,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1148,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1149,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1149,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1149,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1151,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1154,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1155,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1156,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/pl/tcl/pltcl.c:1157,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1158,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1159,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/pl/tcl/pltcl.c:1160,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1161,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1162,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1164,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:1167,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1169,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1170,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1179,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1181,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1182,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1184,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:1185,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1187,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1188,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1188,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1192,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1194,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1195,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1197,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1197,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1198,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:1199,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1205,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1207,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1208,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1210,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:1211,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1213,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1214,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:1215,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1222,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1224,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1226,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1227,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1229,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1230,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1231,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1232,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1233,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1234,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1235,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1236,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1237,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1238,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1239,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1240,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1242,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1244,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1244,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1245,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1245,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1250,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1254,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1255,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1255,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:1257,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1259,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:1260,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1262,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:1269,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1272,1
    - Dst: throw_tcl_error
      Src: /src/postgres/src/pl/tcl/pltcl.c:1278,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/tcl/pltcl.c:1283,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1284,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1291,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/tcl/pltcl.c:1293,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/tcl/pltcl.c:1295,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:1302,1
    - Dst: Tcl_GetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1302,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1304,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1305,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1306,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1307,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1307,1
    - Dst: pltcl_build_tuple_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:1310,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 100
    argCount: 2
    argNames:
    - call_state
    - pltrusted
    argTypes:
    - pltcl_call_state*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1060
    functionDepth: 1
    functionLinenumber: 1060
    functionLinenumberEnd: 1314
    functionName: pltcl_trigger_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - strcmp
    - TRIGGER_FIRED_BEFORE
    - TRIGGER_FIRED_BY_INSERT
    - compile_pltcl_function
    - TRIGGER_FIRED_AFTER
    - errcode
    - Tcl_GetStringResult
    - NameStr
    - pltcl_build_tuple_argument
    - Tcl_ListObjAppendElement
    - Tcl_DecrRefCount
    - pltcl_build_tuple_result
    - elog
    - Tcl_GetObjResult
    - Assert
    - RelationGetDescr
    - pfree
    - SPI_register_trigger_data
    - TRIGGER_FIRED_BY_DELETE
    - PG_RE_THROW
    - Tcl_EvalObjEx
    - Tcl_ListObjGetElements
    - SPI_getrelname
    - errmsg
    - ObjectIdGetDatum
    - PG_END_TRY
    - DatumGetCString
    - ereport
    - TRIGGER_FIRED_BY_TRUNCATE
    - utf_u2e
    - TRIGGER_FIRED_FOR_STATEMENT
    - TupleDescAttr
    - PG_CATCH
    - SPI_finish
    - TRIGGER_FIRED_INSTEAD
    - DirectFunctionCall1
    - Tcl_NewStringObj
    - TRIGGER_FIRED_FOR_ROW
    - TRIGGER_FIRED_BY_UPDATE
    - Tcl_NewObj
    - SPI_getnspname
    - throw_tcl_error
    - utf_e2u
    - SPI_connect
    - RelationGetRelid
    - Tcl_IncrRefCount
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple pltcl_trigger_handler(PG_FUNCTION_ARGS, pltcl_call_state
      *call_state,\n\t\t\t\t\t  bool pltrusted)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SPI_connect
      Src: /src/postgres/src/pl/tcl/pltcl.c:1330,1
    - Dst: compile_pltcl_function
      Src: /src/postgres/src/pl/tcl/pltcl.c:1333,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1342,1
    - Dst: Tcl_IncrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1343,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1344,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1345,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1346,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1347,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1347,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1348,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1349,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1349,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/pl/tcl/pltcl.c:1349,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:1352,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1355,1
    - Dst: throw_tcl_error
      Src: /src/postgres/src/pl/tcl/pltcl.c:1359,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/tcl/pltcl.c:1361,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - call_state
    - pltrusted
    argTypes:
    - pltcl_call_state*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1319
    functionDepth: 1
    functionLinenumber: 1319
    functionLinenumberEnd: 1363
    functionName: pltcl_event_trigger_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - elog
    - SPI_finish
    - compile_pltcl_function
    - Tcl_ListObjAppendElement
    - Tcl_NewStringObj
    - Tcl_EvalObjEx
    - throw_tcl_error
    - Tcl_NewObj
    - GetCommandTagName
    - utf_e2u
    - SPI_connect
    - Tcl_DecrRefCount
    - Tcl_IncrRefCount
    linkageType: ''
    returnType: void
    signature: "void pltcl_event_trigger_handler(PG_FUNCTION_ARGS, pltcl_call_state
      *call_state,\n\t\t\t\t\t\t\tbool pltrusted)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/pl/tcl/pltcl.c:1387,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1387,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1387,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1388,1
    - Dst: Tcl_GetVar
      Src: /src/postgres/src/pl/tcl/pltcl.c:1388,1
    - Dst: strlen
      Src: /src/postgres/src/pl/tcl/pltcl.c:1394,1
    - Dst: strncmp
      Src: /src/postgres/src/pl/tcl/pltcl.c:1395,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1404,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1405,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1406,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/tcl/pltcl.c:1407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - interp
    - proname
    argTypes:
    - Tcl_Interp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1373
    functionDepth: 1
    functionLinenumber: 1373
    functionLinenumberEnd: 1409
    functionName: throw_tcl_error
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 3
    functionsReached:
    - Tcl_GetVar
    - errcode
    - errcontext
    - pstrdup
    - ereport
    - Tcl_GetStringResult
    - strlen
    - utf_u2e
    - strncmp
    - errmsg
    linkageType: ''
    returnType: void
    signature: void throw_tcl_error(Tcl_Interp *interp, const char *proname)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/tcl/pltcl.c:1435,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1435,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1436,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1437,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1438,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1445,1
    - Dst: GetUserId
      Src: /src/postgres/src/pl/tcl/pltcl.c:1446,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/tcl/pltcl.c:1448,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/pl/tcl/pltcl.c:1463,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/pl/tcl/pltcl.c:1464,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:1467,1
    - Dst: Tcl_DStringInit
      Src: /src/postgres/src/pl/tcl/pltcl.c:1479,1
    - Dst: Tcl_DStringInit
      Src: /src/postgres/src/pl/tcl/pltcl.c:1480,1
    - Dst: Tcl_DStringInit
      Src: /src/postgres/src/pl/tcl/pltcl.c:1481,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1482,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1484,1
    - Dst: pltcl_fetch_interp
      Src: /src/postgres/src/pl/tcl/pltcl.c:1504,1
    - Dst: Tcl_DeleteCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:1519,1
    - Dst: format_procedure
      Src: /src/postgres/src/pl/tcl/pltcl.c:1527,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1542,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1545,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1548,1
    - Dst: strchr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1554,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1561,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1564,1
    - Dst: strchr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1566,1
    - Dst: Tcl_GetCommandInfo
      Src: /src/postgres/src/pl/tcl/pltcl.c:1570,1
    - Dst: Tcl_DStringValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:1571,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:1574,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1575,1
    - Dst: Tcl_DStringValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:1577,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/tcl/pltcl.c:1582,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:1590,1
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/tcl/pltcl.c:1591,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/tcl/pltcl.c:1592,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/pl/tcl/pltcl.c:1593,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/tcl/pltcl.c:1594,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/pl/tcl/pltcl.c:1597,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/tcl/pltcl.c:1600,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/tcl/pltcl.c:1601,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:1602,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/tcl/pltcl.c:1620,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1620,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1621,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1622,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1623,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1633,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1634,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1635,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1637,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1638,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1639,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/tcl/pltcl.c:1640,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/tcl/pltcl.c:1644,1
    - Dst: getTypeIOParam
      Src: /src/postgres/src/pl/tcl/pltcl.c:1647,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/tcl/pltcl.c:1650,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:1654,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/tcl/pltcl.c:1668,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1668,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1669,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1670,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1671,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1676,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1677,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1678,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/tcl/pltcl.c:1679,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/tcl/pltcl.c:1681,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:1684,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/tcl/pltcl.c:1689,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:1692,1
    - Dst: strcat
      Src: /src/postgres/src/pl/tcl/pltcl.c:1696,1
    - Dst: strcat
      Src: /src/postgres/src/pl/tcl/pltcl.c:1697,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:1699,1
    - Dst: strcpy
      Src: /src/postgres/src/pl/tcl/pltcl.c:1705,1
    - Dst: strcpy
      Src: /src/postgres/src/pl/tcl/pltcl.c:1711,1
    - Dst: Tcl_DStringAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1722,1
    - Dst: Tcl_DStringAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1723,1
    - Dst: Tcl_DStringAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1724,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1731,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1732,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1733,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1736,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1738,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1740,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:1759,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1762,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/pl/tcl/pltcl.c:1770,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/tcl/pltcl.c:1772,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1774,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1774,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1776,1
    - Dst: Tcl_DStringAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1777,1
    - Dst: Tcl_DStringValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:1778,1
    - Dst: Tcl_EvalEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:1783,1
    - Dst: Tcl_DStringValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:1784,1
    - Dst: Tcl_DStringLength
      Src: /src/postgres/src/pl/tcl/pltcl.c:1785,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1788,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1789,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1790,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1792,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1792,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:1794,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/tcl/pltcl.c:1801,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1802,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1803,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1804,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:1805,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1807,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1826,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/tcl/pltcl.c:1828,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1831,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1832,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1833,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:1835,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 169
    argCount: 4
    argNames:
    - fn_oid
    - tgreloid
    - is_event_trigger
    - pltrusted
    argTypes:
    - Oid
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1838
      start: 1418
    functionDepth: 3
    functionLinenumber: 1418
    functionLinenumberEnd: 1838
    functionName: compile_pltcl_function
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 3
    functionsReached:
    - Tcl_DStringValue
    - getTypeIOParam
    - PG_TRY
    - GetUserId
    - strchr
    - errcode
    - Tcl_DStringInit
    - pltcl_fetch_interp
    - pstrdup
    - UTF_E2U
    - format_procedure
    - Tcl_GetStringResult
    - Tcl_GetCommandInfo
    - MemoryContextSetIdentifier
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - HeapTupleHeaderGetRawXmin
    - pfree
    - Assert
    - Tcl_DStringFree
    - ItemPointerEquals
    - ReleaseSysCache
    - Tcl_DeleteCommand
    - PG_RE_THROW
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - Tcl_DStringAppend
    - Tcl_DStringAppendElement
    - TextDatumGetCString
    - PG_END_TRY
    - palloc0_object
    - ereport
    - Tcl_EvalEx
    - GETSTRUCT
    - utf_u2e
    - AllocSetContextCreate
    - SysCacheGetAttrNotNull
    - fmgr_info_cxt
    - type_is_rowtype
    - strcat
    - PG_CATCH
    - format_type_be
    - hash_search
    - Tcl_DStringLength
    - palloc0
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - strcpy
    - snprintf
    linkageType: ''
    returnType: pltcl_proc_desc
    signature: "pltcl_proc_desc *\ncompile_pltcl_function(Oid fn_oid, Oid tgreloid,\n\t\t\t\t\t
      \  bool is_event_trigger, bool pltrusted)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:1864,1
    - Dst: Tcl_GetIndexFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1868,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1881,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1895,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1898,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1899,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1900,1
    - Dst: UTF_U2E
      Src: /src/postgres/src/pl/tcl/pltcl.c:1900,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:1900,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:1903,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:1908,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:1909,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/tcl/pltcl.c:1910,1
    - Dst: pltcl_construct_errorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1913,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1915,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1915,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1915,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:1917,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1921,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1844
    functionDepth: 1
    functionLinenumber: 1844
    functionLinenumberEnd: 1924
    functionName: pltcl_elog
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_GetIndexFromObj
    - PG_CATCH
    - PG_TRY
    - errcode
    - Tcl_SetObjResult
    - CopyErrorData
    - ereport
    - UTF_E2U
    - MemoryContextSwitchTo
    - pltcl_construct_errorCode
    - Tcl_NewStringObj
    - FreeErrorData
    - PG_END_TRY
    - errmsg
    - Tcl_GetString
    - FlushErrorState
    - UTF_U2E
    - Tcl_WrongNumArgs
    linkageType: ''
    returnType: int
    signature: "int pltcl_elog(ClientData cdata, Tcl_Interp *interp,\n\t\t   int objc,
      Tcl_Obj *const objv[])"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1934,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1936,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1937,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1938,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1939,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1940,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1941,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1942,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1943,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/tcl/pltcl.c:1943,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1944,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1945,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1946,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1947,1
    - Dst: pltcl_get_condition_name
      Src: /src/postgres/src/pl/tcl/pltcl.c:1947,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1948,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1949,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1951,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1952,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1952,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1956,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1957,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1959,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1960,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1960,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1965,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1966,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1968,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1969,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1969,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1974,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1975,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1977,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1978,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1978,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1983,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1984,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1986,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1987,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1987,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1992,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1993,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1995,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1996,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1996,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2001,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2002,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2004,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2005,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2005,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2010,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2011,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2013,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2014,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2014,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2019,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2020,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2022,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2023,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2023,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2029,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2030,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2032,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2033,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2033,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2038,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2039,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2040,1
    - Dst: Tcl_NewIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2041,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2045,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2046,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2048,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2049,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2049,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2054,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2055,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2056,1
    - Dst: Tcl_NewIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2057,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2061,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2062,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2064,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2065,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2065,1
    - Dst: Tcl_SetObjErrorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:2069,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 86
    argCount: 2
    argNames:
    - interp
    - edata
    argTypes:
    - Tcl_Interp*
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 1931
    functionDepth: 1
    functionLinenumber: 1931
    functionLinenumberEnd: 2070
    functionName: pltcl_construct_errorCode
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - Tcl_SetObjErrorCode
    - pltcl_get_condition_name
    - UTF_E2U
    - unpack_sql_state
    - Tcl_NewStringObj
    - Tcl_NewObj
    - Tcl_ListObjAppendElement
    - Tcl_NewIntObj
    linkageType: ''
    returnType: void
    signature: void pltcl_construct_errorCode(Tcl_Interp *interp, ErrorData *edata)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - sqlstate
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2076
    functionDepth: 0
    functionLinenumber: 2076
    functionLinenumberEnd: 2087
    functionName: pltcl_get_condition_name
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      pltcl_get_condition_name(int sqlstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2108,1
    - Dst: Tcl_GetStringFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2116,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2117,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2139,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2139,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:2140,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2142
      start: 2094
    functionDepth: 0
    functionLinenumber: 2094
    functionLinenumberEnd: 2142
    functionName: pltcl_quote
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_SetObjResult
    - pfree
    - Tcl_GetStringFromObj
    - Tcl_NewStringObj
    - palloc
    - Tcl_WrongNumArgs
    linkageType: ''
    returnType: int
    signature: "int pltcl_quote(ClientData cdata, Tcl_Interp *interp,\n\t\t\tint objc,
      Tcl_Obj *const objv[])"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2160,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2169,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2170,1
    - Dst: Tcl_GetIntFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2177,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2186,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2187,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2194,1
    - Dst: Tcl_NewBooleanObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2194,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/pl/tcl/pltcl.c:2194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2196
      start: 2148
    functionDepth: 1
    functionLinenumber: 2148
    functionLinenumberEnd: 2196
    functionName: pltcl_argisnull
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_SetObjResult
    - Tcl_GetIntFromObj
    - Tcl_NewStringObj
    - Tcl_NewBooleanObj
    - PG_ARGISNULL
    - Tcl_WrongNumArgs
    linkageType: ''
    returnType: int
    signature: "int pltcl_argisnull(ClientData cdata, Tcl_Interp *interp,\n\t\t\t\tint
      objc, Tcl_Obj *const objv[])"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2213,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2222,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2234
      start: 2202
    functionDepth: 0
    functionLinenumber: 2202
    functionLinenumberEnd: 2234
    functionName: pltcl_returnnull
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_SetObjResult
    - Tcl_NewStringObj
    - Tcl_WrongNumArgs
    linkageType: ''
    returnType: int
    signature: "int pltcl_returnnull(ClientData cdata, Tcl_Interp *interp,\n\t\t\t\t
      int objc, Tcl_Obj *const objv[])"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2256,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2257,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2263,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2264,1
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2273,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:2285,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2286,1
    - Dst: pltcl_init_tuple_store
      Src: /src/postgres/src/pl/tcl/pltcl.c:2290,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:2298,1
    - Dst: pltcl_build_tuple_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:2304,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/pl/tcl/pltcl.c:2306,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:2316,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:2318,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:2319,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2319,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/tcl/pltcl.c:2322,1
    - Dst: pltcl_subtrans_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:2326,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:2328,1
    - Dst: pltcl_subtrans_abort
      Src: /src/postgres/src/pl/tcl/pltcl.c:2330,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2333,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2336
      start: 2240
    functionDepth: 1
    functionLinenumber: 2240
    functionLinenumberEnd: 2336
    functionName: pltcl_returnnext
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_CATCH
    - PG_TRY
    - Tcl_SetObjResult
    - BeginInternalSubTransaction
    - tuplestore_putvalues
    - pltcl_subtrans_commit
    - Tcl_NewStringObj
    - PG_END_TRY
    - Tcl_ListObjGetElements
    - pltcl_subtrans_abort
    - utf_u2e
    - tuplestore_puttuple
    - pltcl_init_tuple_store
    - Tcl_GetString
    - pltcl_build_tuple_result
    - Tcl_WrongNumArgs
    - InputFunctionCall
    linkageType: ''
    returnType: int
    signature: "int pltcl_returnnext(ClientData cdata, Tcl_Interp *interp,\n\t\t\t\t
      int objc, Tcl_Obj *const objv[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:2366,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2370
      start: 2363
    functionDepth: 1
    functionLinenumber: 2363
    functionLinenumberEnd: 2370
    functionName: pltcl_subtrans_begin
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - BeginInternalSubTransaction
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void pltcl_subtrans_begin(MemoryContext oldcontext, ResourceOwner oldowner)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:2376,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2379
      start: 2372
    functionDepth: 1
    functionLinenumber: 2372
    functionLinenumberEnd: 2379
    functionName: pltcl_subtrans_commit
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - ReleaseCurrentSubTransaction
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void pltcl_subtrans_commit(MemoryContext oldcontext, ResourceOwner
      oldowner)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2388,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:2389,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/tcl/pltcl.c:2390,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:2393,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2394,1
    - Dst: pltcl_construct_errorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:2398,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2400,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2400,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2400,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:2402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - interp
    - oldcontext
    - oldowner
    argTypes:
    - Tcl_Interp*
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2403
      start: 2381
    functionDepth: 2
    functionLinenumber: 2381
    functionLinenumberEnd: 2403
    functionName: pltcl_subtrans_abort
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - Tcl_SetObjResult
    - CopyErrorData
    - UTF_E2U
    - MemoryContextSwitchTo
    - pltcl_construct_errorCode
    - Tcl_NewStringObj
    - FreeErrorData
    - RollbackAndReleaseCurrentSubTransaction
    - FlushErrorState
    linkageType: ''
    returnType: void
    signature: "void pltcl_subtrans_abort(Tcl_Interp *interp,\n\t\t\t\t\t MemoryContext
      oldcontext, ResourceOwner oldowner)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2439,1
    - Dst: Tcl_GetIndexFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2447,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2453,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2454,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2461,1
    - Dst: Tcl_GetIntFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2465,1
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2474,1
    - Dst: pltcl_subtrans_begin
      Src: /src/postgres/src/pl/tcl/pltcl.c:2486,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2488,1
    - Dst: SPI_execute
      Src: /src/postgres/src/pl/tcl/pltcl.c:2491,1
    - Dst: UTF_U2E
      Src: /src/postgres/src/pl/tcl/pltcl.c:2491,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2491,1
    - Dst: pltcl_process_SPI_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:2495,1
    - Dst: pltcl_subtrans_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:2502,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:2504,1
    - Dst: pltcl_subtrans_abort
      Src: /src/postgres/src/pl/tcl/pltcl.c:2506,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2509,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2512
      start: 2410
    functionDepth: 3
    functionLinenumber: 2410
    functionLinenumberEnd: 2512
    functionName: pltcl_SPI_execute
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_GetIndexFromObj
    - PG_CATCH
    - PG_TRY
    - Tcl_SetObjResult
    - pltcl_process_SPI_result
    - pltcl_subtrans_commit
    - Tcl_GetIntFromObj
    - Tcl_NewStringObj
    - SPI_execute
    - pltcl_subtrans_begin
    - pltcl_subtrans_abort
    - PG_END_TRY
    - Tcl_GetString
    - UTF_U2E
    - Tcl_WrongNumArgs
    linkageType: ''
    returnType: int
    signature: "int pltcl_SPI_execute(ClientData cdata, Tcl_Interp *interp,\n\t\t\t\t
      \ int objc, Tcl_Obj *const objv[])"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2539,1
    - Dst: Tcl_NewWideIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2539,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2546,1
    - Dst: Tcl_NewIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2546,1
    - Dst: pltcl_set_tuple_values
      Src: /src/postgres/src/pl/tcl/pltcl.c:2571,1
    - Dst: pltcl_set_tuple_values
      Src: /src/postgres/src/pl/tcl/pltcl.c:2584,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:2587,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2607,1
    - Dst: Tcl_NewWideIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2607,1
    - Dst: Tcl_AppendResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2612,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/tcl/pltcl.c:2613,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/tcl/pltcl.c:2618,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 6
    argNames:
    - interp
    - arrayname
    - loop_body
    - spi_rc
    - tuptable
    - ntuples
    argTypes:
    - Tcl_Interp*
    - char*
    - Tcl_Obj*
    - int
    - SPITupleTable*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2621
      start: 2519
    functionDepth: 1
    functionLinenumber: 2519
    functionLinenumberEnd: 2621
    functionName: pltcl_process_SPI_result
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - Tcl_AppendResult
    - SPI_result_code_string
    - Tcl_SetObjResult
    - pltcl_set_tuple_values
    - Tcl_NewWideIntObj
    - Tcl_EvalObjEx
    - SPI_freetuptable
    - Tcl_NewIntObj
    linkageType: ''
    returnType: int
    signature: "int pltcl_process_SPI_result(Tcl_Interp *interp,\n\t\t\t\t\t\t const
      char *arrayname,\n\t\t\t\t\t\t Tcl_Obj *loop_body,\n\t\t\t\t\t\t int spi_rc,\n\t\t\t\t\t\t
      SPITupleTable *tuptable,\n\t\t\t\t\t\t uint64 ntuples)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2652,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:2659,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/tcl/pltcl.c:2669,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2672,1
    - Dst: palloc0_object
      Src: /src/postgres/src/pl/tcl/pltcl.c:2673,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:2674,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2676,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2677,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2678,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2679,1
    - Dst: pltcl_subtrans_begin
      Src: /src/postgres/src/pl/tcl/pltcl.c:2686,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2688,1
    - Dst: parseTypeString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2702,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2702,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2705,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/tcl/pltcl.c:2708,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/pl/tcl/pltcl.c:2716,1
    - Dst: UTF_U2E
      Src: /src/postgres/src/pl/tcl/pltcl.c:2716,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2716,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:2721,1
    - Dst: SPI_keepplan
      Src: /src/postgres/src/pl/tcl/pltcl.c:2727,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:2728,1
    - Dst: pltcl_subtrans_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:2730,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:2732,1
    - Dst: pltcl_subtrans_abort
      Src: /src/postgres/src/pl/tcl/pltcl.c:2734,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/tcl/pltcl.c:2736,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2740,1
    - Dst: Tcl_CreateHashEntry
      Src: /src/postgres/src/pl/tcl/pltcl.c:2748,1
    - Dst: Tcl_SetHashValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:2749,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2752,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2752,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2754
      start: 2632
    functionDepth: 3
    functionLinenumber: 2632
    functionLinenumberEnd: 2754
    functionName: pltcl_SPI_prepare
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - pltcl_subtrans_abort
    - elog
    - Tcl_SetObjResult
    - SPI_keepplan
    - pltcl_subtrans_begin
    - Tcl_ListObjGetElements
    - Tcl_CreateHashEntry
    - Tcl_WrongNumArgs
    - PG_END_TRY
    - palloc0_object
    - pltcl_subtrans_commit
    - SPI_prepare
    - AllocSetContextCreate
    - UTF_U2E
    - parseTypeString
    - fmgr_info_cxt
    - getTypeInputInfo
    - PG_CATCH
    - Tcl_SetHashValue
    - MemoryContextSwitchTo
    - Tcl_NewStringObj
    - MemoryContextDelete
    - Tcl_GetString
    - palloc
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int pltcl_SPI_prepare(ClientData cdata, Tcl_Interp *interp,\n\t\t\t\t
      \ int objc, Tcl_Obj *const objv[])"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_GetIndexFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2797,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2803,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2804,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2811,1
    - Dst: Tcl_GetIntFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2815,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2820,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2830,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2831,1
    - Dst: Tcl_FindHashEntry
      Src: /src/postgres/src/pl/tcl/pltcl.c:2837,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2837,1
    - Dst: Tcl_AppendResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2840,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2840,1
    - Dst: Tcl_GetHashValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:2843,1
    - Dst: strlen
      Src: /src/postgres/src/pl/tcl/pltcl.c:2851,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2853,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2854,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2868,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2869,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:2877,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2885,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2886,1
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2902,1
    - Dst: pltcl_subtrans_begin
      Src: /src/postgres/src/pl/tcl/pltcl.c:2913,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2915,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2921,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:2927,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:2935,1
    - Dst: UTF_U2E
      Src: /src/postgres/src/pl/tcl/pltcl.c:2936,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2936,1
    - Dst: SPI_execute_plan
      Src: /src/postgres/src/pl/tcl/pltcl.c:2946,1
    - Dst: pltcl_process_SPI_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:2950,1
    - Dst: pltcl_subtrans_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:2957,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:2959,1
    - Dst: pltcl_subtrans_abort
      Src: /src/postgres/src/pl/tcl/pltcl.c:2961,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2964,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 81
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2967
      start: 2760
    functionDepth: 3
    functionLinenumber: 2760
    functionLinenumberEnd: 2967
    functionName: pltcl_SPI_execute_plan
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_GetIndexFromObj
    - PG_TRY
    - pltcl_subtrans_abort
    - Tcl_GetHashValue
    - Tcl_SetObjResult
    - SPI_execute_plan
    - pltcl_subtrans_begin
    - Tcl_ListObjGetElements
    - Tcl_WrongNumArgs
    - PG_END_TRY
    - Tcl_AppendResult
    - pltcl_subtrans_commit
    - Tcl_GetIntFromObj
    - strlen
    - Tcl_FindHashEntry
    - UTF_U2E
    - InputFunctionCall
    - PG_CATCH
    - pltcl_process_SPI_result
    - Tcl_NewStringObj
    - Tcl_GetString
    - palloc
    linkageType: ''
    returnType: int
    signature: "int pltcl_SPI_execute_plan(ClientData cdata, Tcl_Interp *interp,\n\t\t\t\t\t
      \  int objc, Tcl_Obj *const objv[])"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2986,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:2995,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2996,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:2998,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:3003,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:3008,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3012,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3016
      start: 2976
    functionDepth: 1
    functionLinenumber: 2976
    functionLinenumberEnd: 3016
    functionName: pltcl_subtransaction
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - BeginInternalSubTransaction
    - ReleaseCurrentSubTransaction
    - MemoryContextSwitchTo
    - Tcl_EvalObjEx
    - RollbackAndReleaseCurrentSubTransaction
    - Tcl_WrongNumArgs
    linkageType: ''
    returnType: int
    signature: "int pltcl_subtransaction(ClientData cdata, Tcl_Interp *interp,\n\t\t\t\t\t
      int objc, Tcl_Obj *const objv[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:3030,1
    - Dst: SPI_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:3032,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:3034,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3039,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:3040,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/tcl/pltcl.c:3041,1
    - Dst: pltcl_construct_errorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3044,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:3046,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3046,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3046,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:3048,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:3052,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3055
      start: 3024
    functionDepth: 2
    functionLinenumber: 3024
    functionLinenumberEnd: 3055
    functionName: pltcl_commit
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - Tcl_SetObjResult
    - CopyErrorData
    - UTF_E2U
    - MemoryContextSwitchTo
    - pltcl_construct_errorCode
    - Tcl_NewStringObj
    - FreeErrorData
    - FlushErrorState
    - SPI_commit
    - PG_END_TRY
    linkageType: ''
    returnType: int
    signature: "int pltcl_commit(ClientData cdata, Tcl_Interp *interp,\n\t\t\t int
      objc, Tcl_Obj *const objv[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:3069,1
    - Dst: SPI_rollback
      Src: /src/postgres/src/pl/tcl/pltcl.c:3071,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:3073,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3078,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:3079,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/tcl/pltcl.c:3080,1
    - Dst: pltcl_construct_errorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3083,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:3085,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3085,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3085,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:3087,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:3091,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 4
    argNames:
    - cdata
    - interp
    - objc
    - objv
    argTypes:
    - ClientData
    - Tcl_Interp*
    - int
    - Tcl_Obj*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3094
      start: 3063
    functionDepth: 2
    functionLinenumber: 3063
    functionLinenumberEnd: 3094
    functionName: pltcl_rollback
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - Tcl_SetObjResult
    - CopyErrorData
    - UTF_E2U
    - MemoryContextSwitchTo
    - pltcl_construct_errorCode
    - Tcl_NewStringObj
    - FreeErrorData
    - FlushErrorState
    - SPI_rollback
    - PG_END_TRY
    linkageType: ''
    returnType: int
    signature: "int pltcl_rollback(ClientData cdata, Tcl_Interp *interp,\n\t\t\t   int
      objc, Tcl_Obj *const objv[])"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_SetVar2Ex
      Src: /src/postgres/src/pl/tcl/pltcl.c:3136,1
    - Dst: Tcl_NewWideIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3136,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3141,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/tcl/pltcl.c:3151,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3151,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3151,1
    - Dst: heap_getattr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3157,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3169,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:3170,1
    - Dst: Tcl_SetVar2Ex
      Src: /src/postgres/src/pl/tcl/pltcl.c:3172,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3173,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3173,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:3175,1
    - Dst: Tcl_UnsetVar2
      Src: /src/postgres/src/pl/tcl/pltcl.c:3178,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 5
    argNames:
    - interp
    - arrayname
    - tupno
    - tuple
    - tupdesc
    argTypes:
    - Tcl_Interp*
    - char*
    - uint64
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3182
      start: 3103
    functionDepth: 1
    functionLinenumber: 3103
    functionLinenumberEnd: 3182
    functionName: pltcl_set_tuple_values
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - heap_getattr
    - pfree
    - pstrdup
    - Tcl_NewWideIntObj
    - UTF_E2U
    - Tcl_SetVar2Ex
    - Tcl_NewStringObj
    - OidOutputFunctionCall
    - NameStr
    - Tcl_UnsetVar2
    - TupleDescAttr
    - getTypeOutputInfo
    linkageType: ''
    returnType: void
    signature: "void pltcl_set_tuple_values(Tcl_Interp *interp, const char *arrayname,\n\t\t\t\t\t
      \  uint64 tupno, HeapTuple tuple, TupleDesc tupdesc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3192,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3203,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3222,1
    - Dst: heap_getattr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3227,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3239,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:3241,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:3243,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3244,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3244,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:3247,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3248,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3248,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:3250,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - tuple
    - tupdesc
    - include_generated
    argTypes:
    - HeapTuple
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3255
      start: 3189
    functionDepth: 1
    functionLinenumber: 3189
    functionLinenumberEnd: 3255
    functionName: pltcl_build_tuple_argument
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 2
    functionsReached:
    - heap_getattr
    - pfree
    - UTF_E2U
    - Tcl_NewStringObj
    - OidOutputFunctionCall
    - Tcl_NewObj
    - NameStr
    - TupleDescAttr
    - getTypeOutputInfo
    - Tcl_ListObjAppendElement
    linkageType: ''
    returnType: Tcl_Obj
    signature: 'Tcl_Obj *

      pltcl_build_tuple_argument(HeapTuple tuple, TupleDesc tupdesc, bool include_generated)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3285,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/pl/tcl/pltcl.c:3286,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:3290,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/tcl/pltcl.c:3295,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:3298,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3299,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:3300,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:3304,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:3304,1
    - Dst: SPI_fnumber
      Src: /src/postgres/src/pl/tcl/pltcl.c:3305,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/tcl/pltcl.c:3314,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:3316,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3317,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:3318,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:3323,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3324,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:3325,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3328,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:3329,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3330,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:3331,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:3334,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:3334,1
    - Dst: BuildTupleFromCStrings
      Src: /src/postgres/src/pl/tcl/pltcl.c:3337,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/tcl/pltcl.c:3341,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:3341,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 4
    argNames:
    - interp
    - kvObjv
    - kvObjc
    - call_state
    argTypes:
    - Tcl_Interp*
    - Tcl_Obj**
    - int
    - pltcl_call_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3347
      start: 3268
    functionDepth: 1
    functionLinenumber: 3268
    functionLinenumberEnd: 3347
    functionName: pltcl_build_tuple_result
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 3
    functionsReached:
    - elog
    - TupleDescGetAttInMetadata
    - strcmp
    - errcode
    - RelationGetDescr
    - palloc0
    - ereport
    - SPI_fnumber
    - HeapTupleGetDatum
    - errmsg
    - utf_u2e
    - Tcl_GetString
    - BuildTupleFromCStrings
    - domain_check
    - TupleDescAttr
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple pltcl_build_tuple_result(Tcl_Interp *interp, Tcl_Obj **kvObjv,
      int kvObjc,\n\t\t\t\t\t\t pltcl_call_state *call_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:3360,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:3362,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:3363,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:3366,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3376,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/pl/tcl/pltcl.c:3381,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/pl/tcl/pltcl.c:3385,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - call_state
    argTypes:
    - pltcl_call_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3389
      start: 3352
    functionDepth: 1
    functionLinenumber: 3352
    functionLinenumberEnd: 3389
    functionName: pltcl_init_tuple_store
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - Assert
    - tuplestore_begin_heap
    - TupleDescGetAttInMetadata
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void pltcl_init_tuple_store(pltcl_call_state *call_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:104,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:105,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:113,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:114,1
    - Dst: unlikely
      Src: /src/postgres/src/port/pqsignal.c:116,1
    - Dst: getpid
      Src: /src/postgres/src/port/pqsignal.c:116,1
    - Dst: pqsignal
      Src: /src/postgres/src/port/pqsignal.c:118,1
    - Dst: raise
      Src: /src/postgres/src/port/pqsignal.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - postgres_signal_arg
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 146
    functionName: wrapper_handler
    functionSourceFile: /src/postgres/src/port/pqsignal.c
    functionUses: 0
    functionsReached:
    - getpid
    - pqsignal
    - Assert
    - unlikely
    - raise
    linkageType: ''
    returnType: void
    signature: void wrapper_handler(int postgres_signal_arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:166,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:167,1
    - Dst: sigemptyset
      Src: /src/postgres/src/port/pqsignal.c:180,1
    - Dst: sigaction
      Src: /src/postgres/src/port/pqsignal.c:202,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:203,1
    - Dst: signal
      Src: /src/postgres/src/port/pqsignal.c:217,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:218,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - signo
    - func
    argTypes:
    - int
    - pqsigfunc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 220
    functionName: pqsignal
    functionSourceFile: /src/postgres/src/port/pqsignal.c
    functionUses: 21
    functionsReached:
    - Assert
    - sigaction
    - sigemptyset
    - signal
    linkageType: ''
    returnType: void
    signature: void pqsignal(int signo, pqsigfunc func)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PointerIsAligned
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:40,1
    - Dst: __crc32cb
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:43,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:46,1
    - Dst: __crc32ch
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:49,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:52,1
    - Dst: __crc32cw
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:55,1
    - Dst: __crc32cd
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:62,1
    - Dst: __crc32cw
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:69,1
    - Dst: __crc32ch
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:74,1
    - Dst: __crc32cb
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:79,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 83
    functionName: pg_comp_crc32c_armv8
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8.c
    functionUses: 0
    functionsReached:
    - __crc32ch
    - PointerIsAligned
    - __crc32cw
    - __crc32cd
    - __crc32cb
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - c
    argTypes:
    - uint64x2_t
    - uint64x2_t
    - uint64x2_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 110
    functionName: clmul_lo_e
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64x2_t
    signature: uint64x2_t clmul_lo_e(uint64x2_t a, uint64x2_t b, uint64x2_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - c
    argTypes:
    - uint64x2_t
    - uint64x2_t
    - uint64x2_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: clmul_hi_e
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64x2_t
    signature: uint64x2_t clmul_hi_e(uint64x2_t a, uint64x2_t b, uint64x2_t c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_comp_crc32c_armv8
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:137,1
    - Dst: __crc32cb
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:142,1
    - Dst: __crc32cd
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:146,1
    - Dst: Assert
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:151,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:158,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:160,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:162,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:164,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:171,1
    - Dst: veorq_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:180,1
    - Dst: vsetq_lane_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:180,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:180,1
    - Dst: clmul_lo_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:186,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:186,1
    - Dst: clmul_hi_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:186,1
    - Dst: clmul_lo_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:187,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:187,1
    - Dst: clmul_hi_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:187,1
    - Dst: clmul_lo_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:188,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:188,1
    - Dst: clmul_hi_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:188,1
    - Dst: clmul_lo_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:189,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:189,1
    - Dst: clmul_hi_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:189,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:197,1
    - Dst: clmul_lo_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:199,1
    - Dst: clmul_hi_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:199,1
    - Dst: clmul_lo_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:200,1
    - Dst: clmul_hi_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:200,1
    - Dst: vld1q_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:204,1
    - Dst: clmul_lo_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:206,1
    - Dst: clmul_hi_e
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:206,1
    - Dst: __crc32cd
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:209,1
    - Dst: vgetq_lane_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:209,1
    - Dst: __crc32cd
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:210,1
    - Dst: vgetq_lane_u64
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:210,1
    - Dst: pg_comp_crc32c_armv8
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 215
    functionName: pg_comp_crc32c_pmull
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8.c
    functionUses: 0
    functionsReached:
    - vdupq_n_u64
    - veorq_u64
    - vsetq_lane_u64
    - clmul_lo_e
    - vld1q_u64
    - Assert
    - clmul_hi_e
    - __crc32cd
    - __crc32cb
    - vgetq_lane_u64
    - pg_comp_crc32c_armv8
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_pmull(pg_crc32c crc, const void *data, size_t
      len)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - errcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 45
    functionName: gai_strerror
    functionSourceFile: /src/postgres/src/port/win32gai_strerror.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      gai_strerror(int errcode)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_mempolicy
      Src: /src/postgres/src/port/pg_numa.c:57,1
    - Dst: numa_available
      Src: /src/postgres/src/port/pg_numa.c:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 63
    functionName: pg_numa_init
    functionSourceFile: /src/postgres/src/port/pg_numa.c
    functionUses: 0
    functionsReached:
    - numa_available
    - get_mempolicy
    linkageType: ''
    returnType: int
    signature: int pg_numa_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/port/pg_numa.c:87,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/port/pg_numa.c:91,1
    - Dst: numa_move_pages
      Src: /src/postgres/src/port/pg_numa.c:99,1
    - Dst: Assert
      Src: /src/postgres/src/port/pg_numa.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - pid
    - count
    - pages
    - status
    argTypes:
    - int
    - unsigned long
    - void**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 113
    functionName: pg_numa_query_pages
    functionSourceFile: /src/postgres/src/port/pg_numa.c
    functionUses: 0
    functionsReached:
    - Assert
    - Min
    - numa_move_pages
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: int
    signature: int pg_numa_query_pages(int pid, unsigned long count, void **pages,
      int *status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: numa_max_node
      Src: /src/postgres/src/port/pg_numa.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 119
    functionName: pg_numa_get_max_node
    functionSourceFile: /src/postgres/src/port/pg_numa.c
    functionUses: 0
    functionsReached:
    - numa_max_node
    linkageType: ''
    returnType: int
    signature: int pg_numa_get_max_node(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: pg_numa_init
    functionSourceFile: /src/postgres/src/port/pg_numa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_numa_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - pid
    - count
    - pages
    - status
    argTypes:
    - int
    - unsigned long
    - void**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: pg_numa_query_pages
    functionSourceFile: /src/postgres/src/port/pg_numa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_numa_query_pages(int pid, unsigned long count, void **pages,
      int *status)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 141
    functionName: pg_numa_get_max_node
    functionSourceFile: /src/postgres/src/port/pg_numa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_numa_get_max_node(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CreateHardLinkA
      Src: /src/postgres/src/port/win32link.c:24,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32link.c:26,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32link.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 31
    functionName: link
    functionSourceFile: /src/postgres/src/port/win32link.c
    functionUses: 50
    functionsReached:
    - GetLastError
    - _dosmaperr
    - CreateHardLinkA
    linkageType: ''
    returnType: int
    signature: int link(const char *src, const char *dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: CRC8
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sb8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CRC8(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: CRC8
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sb8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CRC8(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRC8
      Src: /src/postgres/src/port/pg_crc32c_sb8.c:46,1
    - Dst: CRC8
      Src: /src/postgres/src/port/pg_crc32c_sb8.c:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 99
    functionName: pg_comp_crc32c_sb8
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sb8.c
    functionUses: 0
    functionsReached:
    - CRC8
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t
      len)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - dst
    - src
    - siz
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 71
    functionName: strlcpy
    functionSourceFile: /src/postgres/src/port/strlcpy.c
    functionUses: 38
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t strlcpy(char *dst, const char *src, size_t siz)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/system.c:55,1
    - Dst: malloc
      Src: /src/postgres/src/port/system.c:64,1
    - Dst: memcpy
      Src: /src/postgres/src/port/system.c:71,1
    - Dst: system
      Src: /src/postgres/src/port/system.c:75,1
    - Dst: free
      Src: /src/postgres/src/port/system.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - command
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 82
    functionName: pgwin32_system
    functionSourceFile: /src/postgres/src/port/system.c
    functionUses: 0
    functionsReached:
    - memcpy
    - malloc
    - strlen
    - free
    - system
    linkageType: ''
    returnType: int
    signature: int pgwin32_system(const char *command)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/system.c:88,1
    - Dst: malloc
      Src: /src/postgres/src/port/system.c:97,1
    - Dst: memcpy
      Src: /src/postgres/src/port/system.c:104,1
    - Dst: _popen
      Src: /src/postgres/src/port/system.c:108,1
    - Dst: free
      Src: /src/postgres/src/port/system.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - command
    - type
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 115
    functionName: pgwin32_popen
    functionSourceFile: /src/postgres/src/port/system.c
    functionUses: 0
    functionsReached:
    - _popen
    - memcpy
    - malloc
    - strlen
    - free
    linkageType: ''
    returnType: FILE
    signature: 'FILE *

      pgwin32_popen(const char *command, const char *type)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_cond_init
      Src: /src/postgres/src/port/pthread_barrier_wait.c:26,1
    - Dst: pthread_mutex_init
      Src: /src/postgres/src/port/pthread_barrier_wait.c:28,1
    - Dst: pthread_cond_destroy
      Src: /src/postgres/src/port/pthread_barrier_wait.c:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - barrier
    - attr
    - count
    argTypes:
    - pthread_barrier_t*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 35
    functionName: pthread_barrier_init
    functionSourceFile: /src/postgres/src/port/pthread_barrier_wait.c
    functionUses: 0
    functionsReached:
    - pthread_cond_destroy
    - pthread_mutex_init
    - pthread_cond_init
    linkageType: ''
    returnType: int
    signature: int pthread_barrier_init(pthread_barrier_t *barrier, const void *attr,
      int count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/port/pthread_barrier_wait.c:42,1
    - Dst: Assert
      Src: /src/postgres/src/port/pthread_barrier_wait.c:46,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/port/pthread_barrier_wait.c:53,1
    - Dst: pthread_cond_broadcast
      Src: /src/postgres/src/port/pthread_barrier_wait.c:54,1
    - Dst: pthread_cond_wait
      Src: /src/postgres/src/port/pthread_barrier_wait.c:63,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/port/pthread_barrier_wait.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - barrier
    argTypes:
    - pthread_barrier_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 69
    functionName: pthread_barrier_wait
    functionSourceFile: /src/postgres/src/port/pthread_barrier_wait.c
    functionUses: 0
    functionsReached:
    - Assert
    - pthread_cond_broadcast
    - pthread_mutex_lock
    - pthread_mutex_unlock
    - pthread_cond_wait
    linkageType: ''
    returnType: int
    signature: int pthread_barrier_wait(pthread_barrier_t *barrier)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_cond_destroy
      Src: /src/postgres/src/port/pthread_barrier_wait.c:74,1
    - Dst: pthread_mutex_destroy
      Src: /src/postgres/src/port/pthread_barrier_wait.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - barrier
    argTypes:
    - pthread_barrier_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 77
    functionName: pthread_barrier_destroy
    functionSourceFile: /src/postgres/src/port/pthread_barrier_wait.c
    functionUses: 0
    functionsReached:
    - pthread_cond_destroy
    - pthread_mutex_destroy
    linkageType: ''
    returnType: int
    signature: int pthread_barrier_destroy(pthread_barrier_t *barrier)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elf_aux_info
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:65,1
    - Dst: getauxval
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 72
    functionName: pg_popcount_sve_available
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - getauxval
    - elf_aux_info
    linkageType: ''
    returnType: bool
    signature: bool pg_popcount_sve_available(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_sve_available
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 87
    functionName: choose_popcount_functions
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - pg_popcount_sve_available
    linkageType: ''
    returnType: void
    signature: void choose_popcount_functions(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: choose_popcount_functions
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:92,1
    - Dst: pg_popcount_optimized
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: pg_popcount_choose
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - choose_popcount_functions
    - pg_popcount_optimized
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_choose(const char *buf, int bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: choose_popcount_functions
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:99,1
    - Dst: pg_popcount_masked_optimized
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 101
    functionName: pg_popcount_masked_choose
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - choose_popcount_functions
    - pg_popcount_masked_optimized
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_choose(const char *buf, int bytes, uint8
      mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: svptrue_b64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:111,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:112,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:113,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:114,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:115,1
    - Dst: svcntb
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:116,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:128,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:129,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:129,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:132,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:133,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:133,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:136,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:137,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:137,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:140,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:141,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:141,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:154,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:155,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:155,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:158,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:159,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:159,1
    - Dst: svaddv_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:168,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:168,1
    - Dst: svaddv_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:169,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:169,1
    - Dst: svwhilelt_b8_s32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:178,1
    - Dst: svld1_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:179,1
    - Dst: svaddv_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:180,1
    - Dst: svcnt_u8_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 185
    functionName: pg_popcount_sve
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - svaddv_u64
    - svaddv_u8
    - svdup_u64
    - svld1_u64
    - svwhilelt_b8_s32
    - svadd_u64_x
    - svcnt_u64_x
    - svcntb
    - svld1_u8
    - svptrue_b64
    - svcnt_u8_x
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_sve(const char *buf, int bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: svptrue_b64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:195,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:196,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:197,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:198,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:199,1
    - Dst: svcntb
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:200,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:203,1
    - Dst: svand_n_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:213,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:213,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:214,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:214,1
    - Dst: svand_n_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:217,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:217,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:218,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:218,1
    - Dst: svand_n_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:221,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:221,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:222,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:222,1
    - Dst: svand_n_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:225,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:225,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:226,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:226,1
    - Dst: svand_n_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:239,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:239,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:240,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:240,1
    - Dst: svand_n_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:243,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:243,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:244,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:244,1
    - Dst: svaddv_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:253,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:253,1
    - Dst: svaddv_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:254,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:254,1
    - Dst: svwhilelt_b8_s32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:263,1
    - Dst: svand_n_u8_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:264,1
    - Dst: svld1_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:264,1
    - Dst: svaddv_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:265,1
    - Dst: svcnt_u8_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:265,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 270
    functionName: pg_popcount_masked_sve
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - svaddv_u64
    - svand_n_u64_x
    - svaddv_u8
    - svdup_u64
    - svld1_u64
    - svwhilelt_b8_s32
    - svadd_u64_x
    - svcnt_u64_x
    - svcntb
    - svand_n_u8_x
    - UINT64CONST
    - svld1_u8
    - svptrue_b64
    - svcnt_u8_x
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_sve(const char *buf, int bytes, uint8 mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_neon
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 284
    functionName: pg_popcount_optimized
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 1
    functionsReached:
    - pg_popcount_neon
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_optimized(const char *buf, int bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_masked_neon
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 290
    functionName: pg_popcount_masked_optimized
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 1
    functionsReached:
    - pg_popcount_masked_neon
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_optimized(const char *buf, int bytes, uint8
      mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vaddv_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:301,1
    - Dst: vcnt_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:301,1
    - Dst: vld1_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 302
    functionName: pg_popcount64_neon
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - vld1_u8
    - vaddv_u8
    - vcnt_u8
    linkageType: ''
    returnType: int
    signature: int pg_popcount64_neon(uint64 word)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:312,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:313,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:314,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:315,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:325,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:326,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:326,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:326,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:326,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:329,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:330,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:330,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:330,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:330,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:333,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:334,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:334,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:334,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:334,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:337,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:338,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:338,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:338,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:338,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:349,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:350,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:350,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:350,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:350,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:353,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:354,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:354,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:354,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:354,1
    - Dst: vaddvq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:363,1
    - Dst: vaddq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:363,1
    - Dst: vaddvq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:364,1
    - Dst: vaddq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:364,1
    - Dst: pg_popcount64_neon
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:371,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 382
    functionName: pg_popcount_neon
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 1
    functionsReached:
    - vpaddlq_u8
    - vdupq_n_u64
    - vaddq_u64
    - vaddvq_u64
    - vpaddlq_u16
    - vcntq_u8
    - vld1q_u8
    - pg_popcount64_neon
    - vpadalq_u32
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_neon(const char *buf, int bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vdupq_n_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:392,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:393,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:394,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:395,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:396,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:399,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:407,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:407,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:408,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:408,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:408,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:408,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:411,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:411,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:412,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:412,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:412,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:412,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:415,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:415,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:416,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:416,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:416,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:416,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:419,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:419,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:420,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:420,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:420,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:420,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:431,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:431,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:432,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:432,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:432,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:432,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:435,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:435,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:436,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:436,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:436,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:436,1
    - Dst: vaddvq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:445,1
    - Dst: vaddq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:445,1
    - Dst: vaddvq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:446,1
    - Dst: vaddq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:446,1
    - Dst: pg_popcount64_neon
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:453,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 464
    functionName: pg_popcount_masked_neon
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 1
    functionsReached:
    - vpaddlq_u8
    - vdupq_n_u64
    - vandq_u8
    - vdupq_n_u8
    - vaddq_u64
    - vaddvq_u64
    - vpaddlq_u16
    - vcntq_u8
    - vld1q_u8
    - pg_popcount64_neon
    - vpadalq_u32
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_neon(const char *buf, int bytes, uint8 mask)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/postgres/src/port/win32setlocale.c:126,1
    - Dst: strstr
      Src: /src/postgres/src/port/win32setlocale.c:136,1
    - Dst: strlen
      Src: /src/postgres/src/port/win32setlocale.c:136,1
    - Dst: strlen
      Src: /src/postgres/src/port/win32setlocale.c:138,1
    - Dst: strlen
      Src: /src/postgres/src/port/win32setlocale.c:143,1
    - Dst: strlen
      Src: /src/postgres/src/port/win32setlocale.c:150,1
    - Dst: strlen
      Src: /src/postgres/src/port/win32setlocale.c:152,1
    - Dst: memcpy
      Src: /src/postgres/src/port/win32setlocale.c:158,1
    - Dst: memcpy
      Src: /src/postgres/src/port/win32setlocale.c:159,1
    - Dst: memcpy
      Src: /src/postgres/src/port/win32setlocale.c:161,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - map
    - locale
    argTypes:
    - struct locale_map*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 169
    functionName: map_locale
    functionSourceFile: /src/postgres/src/port/win32setlocale.c
    functionUses: 0
    functionsReached:
    - strlen
    - strstr
    - memcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      map_locale(const struct locale_map *map, const char *locale)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: map_locale
      Src: /src/postgres/src/port/win32setlocale.c:180,1
    - Dst: setlocale
      Src: /src/postgres/src/port/win32setlocale.c:183,1
    - Dst: unconstify
      Src: /src/postgres/src/port/win32setlocale.c:190,1
    - Dst: map_locale
      Src: /src/postgres/src/port/win32setlocale.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - category
    - locale
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 193
    functionName: pgwin32_setlocale
    functionSourceFile: /src/postgres/src/port/win32setlocale.c
    functionUses: 0
    functionsReached:
    - setlocale
    - map_locale
    - unconstify
    linkageType: ''
    returnType: char
    signature: 'char *

      pgwin32_setlocale(int category, const char *locale)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/port/win32error.c:187,1
    - Dst: ereport
      Src: /src/postgres/src/port/win32error.c:194,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/port/win32error.c:195,1
    - Dst: fprintf
      Src: /src/postgres/src/port/win32error.c:198,1
    - Dst: ereport
      Src: /src/postgres/src/port/win32error.c:206,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/port/win32error.c:207,1
    - Dst: fprintf
      Src: /src/postgres/src/port/win32error.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - e
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 214
    functionName: _dosmaperr
    functionSourceFile: /src/postgres/src/port/win32error.c
    functionUses: 4
    functionsReached:
    - errmsg_internal
    - ereport
    - lengthof
    - fprintf
    linkageType: ''
    returnType: void
    signature: void _dosmaperr(unsigned long e)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _get_osfhandle
      Src: /src/postgres/src/port/win32pread.c:26,1
    - Dst: Min
      Src: /src/postgres/src/port/win32pread.c:34,1
    - Dst: ReadFile
      Src: /src/postgres/src/port/win32pread.c:40,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32pread.c:42,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32pread.c:45,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32pread.c:45,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - fd
    - buf
    - size
    - offset
    argTypes:
    - int
    - void*
    - size_t
    - pgoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 50
    functionName: pg_pread
    functionSourceFile: /src/postgres/src/port/win32pread.c
    functionUses: 2
    functionsReached:
    - ReadFile
    - GetLastError
    - _get_osfhandle
    - _dosmaperr
    - Min
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_pread(int fd, void *buf, size_t size, pgoff_t offset)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - stringp
    - delim
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 78
    functionName: strsep
    functionSourceFile: /src/postgres/src/port/strsep.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      strsep(char **stringp, const char *delim)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/win32stat.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ft
    argTypes:
    - FILETIME*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 40
    functionName: filetime_to_time
    functionSourceFile: /src/postgres/src/port/win32stat.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: __time64_t
    signature: __time64_t filetime_to_time(const FILETIME *ft)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - attr
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 62
    functionName: fileattr_to_unixmode
    functionSourceFile: /src/postgres/src/port/win32stat.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned short
    signature: unsigned short fileattr_to_unixmode(int attr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/port/win32stat.c:72,1
    - Dst: GetFileInformationByHandle
      Src: /src/postgres/src/port/win32stat.c:78,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32stat.c:80,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32stat.c:80,1
    - Dst: filetime_to_time
      Src: /src/postgres/src/port/win32stat.c:86,1
    - Dst: filetime_to_time
      Src: /src/postgres/src/port/win32stat.c:90,1
    - Dst: filetime_to_time
      Src: /src/postgres/src/port/win32stat.c:96,1
    - Dst: fileattr_to_unixmode
      Src: /src/postgres/src/port/win32stat.c:100,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - hFile
    - buf
    argTypes:
    - HANDLE
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 107
    functionName: fileinfo_to_stat
    functionSourceFile: /src/postgres/src/port/win32stat.c
    functionUses: 0
    functionsReached:
    - filetime_to_time
    - GetLastError
    - fileattr_to_unixmode
    - memset
    - _dosmaperr
    - GetFileInformationByHandle
    linkageType: ''
    returnType: int
    signature: int fileinfo_to_stat(HANDLE hFile, struct stat *buf)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pgwin32_open_handle
      Src: /src/postgres/src/port/win32stat.c:124,1
    - Dst: memset
      Src: /src/postgres/src/port/win32stat.c:136,1
    - Dst: fileinfo_to_stat
      Src: /src/postgres/src/port/win32stat.c:143,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/win32stat.c:149,1
    - Dst: readlink
      Src: /src/postgres/src/port/win32stat.c:159,1
    - Dst: pg_RtlGetLastNtStatus
      Src: /src/postgres/src/port/win32stat.c:163,1
    - Dst: CloseHandle
      Src: /src/postgres/src/port/win32stat.c:190,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - name
    - buf
    argTypes:
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 192
    functionName: _pglstat64
    functionSourceFile: /src/postgres/src/port/win32stat.c
    functionUses: 0
    functionsReached:
    - CloseHandle
    - readlink
    - memset
    - fileinfo_to_stat
    - pg_RtlGetLastNtStatus
    - pgwin32_open_handle
    - S_ISDIR
    linkageType: ''
    returnType: int
    signature: int _pglstat64(const char *name, struct stat *buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _pglstat64
      Src: /src/postgres/src/port/win32stat.c:204,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/win32stat.c:206,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/port/win32stat.c:209,1
    - Dst: readlink
      Src: /src/postgres/src/port/win32stat.c:226,1
    - Dst: pg_RtlGetLastNtStatus
      Src: /src/postgres/src/port/win32stat.c:230,1
    - Dst: _pglstat64
      Src: /src/postgres/src/port/win32stat.c:244,1
    - Dst: strcpy
      Src: /src/postgres/src/port/win32stat.c:245,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - name
    - buf
    argTypes:
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 197
    functionDepth: 4
    functionLinenumber: 197
    functionLinenumberEnd: 249
    functionName: _pgstat64
    functionSourceFile: /src/postgres/src/port/win32stat.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - readlink
    - _pglstat64
    - S_ISLNK
    - pg_RtlGetLastNtStatus
    - strcpy
    linkageType: ''
    returnType: int
    signature: int _pgstat64(const char *name, struct stat *buf)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: _get_osfhandle
      Src: /src/postgres/src/port/win32stat.c:257,1
    - Dst: pgwin32_get_file_type
      Src: /src/postgres/src/port/win32stat.c:267,1
    - Dst: fileinfo_to_stat
      Src: /src/postgres/src/port/win32stat.c:275,1
    - Dst: memset
      Src: /src/postgres/src/port/win32stat.c:296,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - fileno
    - buf
    argTypes:
    - int
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 254
    functionDepth: 3
    functionLinenumber: 254
    functionLinenumberEnd: 302
    functionName: _pgfstat64
    functionSourceFile: /src/postgres/src/port/win32stat.c
    functionUses: 0
    functionsReached:
    - fileinfo_to_stat
    - _get_osfhandle
    - memset
    - pgwin32_get_file_type
    linkageType: ''
    returnType: int
    signature: int _pgfstat64(int fileno, struct stat *buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _get_osfhandle
      Src: /src/postgres/src/port/win32fseek.c:34,1
    - Dst: _fileno
      Src: /src/postgres/src/port/win32fseek.c:34,1
    - Dst: pgwin32_get_file_type
      Src: /src/postgres/src/port/win32fseek.c:36,1
    - Dst: _fseeki64
      Src: /src/postgres/src/port/win32fseek.c:41,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - stream
    - offset
    - origin
    argTypes:
    - FILE*
    - pgoff_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 48
    functionName: _pgfseeko64
    functionSourceFile: /src/postgres/src/port/win32fseek.c
    functionUses: 0
    functionsReached:
    - _fileno
    - _get_osfhandle
    - _fseeki64
    - pgwin32_get_file_type
    linkageType: ''
    returnType: int
    signature: int _pgfseeko64(FILE *stream, pgoff_t offset, int origin)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _get_osfhandle
      Src: /src/postgres/src/port/win32fseek.c:59,1
    - Dst: _fileno
      Src: /src/postgres/src/port/win32fseek.c:59,1
    - Dst: pgwin32_get_file_type
      Src: /src/postgres/src/port/win32fseek.c:61,1
    - Dst: _ftelli64
      Src: /src/postgres/src/port/win32fseek.c:66,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 73
    functionName: _pgftello64
    functionSourceFile: /src/postgres/src/port/win32fseek.c
    functionUses: 0
    functionsReached:
    - _fileno
    - _get_osfhandle
    - _ftelli64
    - pgwin32_get_file_type
    linkageType: ''
    returnType: pgoff_t
    signature: pgoff_t _pgftello64(FILE *stream)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/postgres/src/port/inet_aton.c:84,1
    - Dst: isxdigit
      Src: /src/postgres/src/port/inet_aton.c:90,1
    - Dst: islower
      Src: /src/postgres/src/port/inet_aton.c:93,1
    - Dst: isspace
      Src: /src/postgres/src/port/inet_aton.c:117,1
    - Dst: pg_hton32
      Src: /src/postgres/src/port/inet_aton.c:149,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 55
    argCount: 2
    argNames:
    - cp
    - addr
    argTypes:
    - char*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 151
    functionName: inet_aton
    functionSourceFile: /src/postgres/src/port/inet_aton.c
    functionUses: 0
    functionsReached:
    - islower
    - pg_hton32
    - isdigit
    - isspace
    - isxdigit
    linkageType: ''
    returnType: int
    signature: int inet_aton(const char *cp, struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: _DIAGASSERT
    functionSourceFile: /src/postgres/src/port/mkdtemp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DIAGASSERT(x)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: _DIAGASSERT
      Src: /src/postgres/src/port/mkdtemp.c:109,1
    - Dst: getpid
      Src: /src/postgres/src/port/mkdtemp.c:112,1
    - Dst: stat
      Src: /src/postgres/src/port/mkdtemp.c:165,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/mkdtemp.c:169,1
    - Dst: open
      Src: /src/postgres/src/port/mkdtemp.c:183,1
    - Dst: mkdir
      Src: /src/postgres/src/port/mkdtemp.c:190,1
    - Dst: lstat
      Src: /src/postgres/src/port/mkdtemp.c:195,1
    - Dst: isdigit
      Src: /src/postgres/src/port/mkdtemp.c:207,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 69
    argCount: 3
    argNames:
    - path
    - doopen
    - domkdir
    argTypes:
    - char*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 216
    functionName: GETTEMP
    functionSourceFile: /src/postgres/src/port/mkdtemp.c
    functionUses: 0
    functionsReached:
    - getpid
    - isdigit
    - stat
    - mkdir
    - _DIAGASSERT
    - open
    - lstat
    - S_ISDIR
    linkageType: ''
    returnType: int
    signature: int GETTEMP(char *path, int *doopen, int domkdir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _DIAGASSERT
      Src: /src/postgres/src/port/mkdtemp.c:288,1
    - Dst: GETTEMP
      Src: /src/postgres/src/port/mkdtemp.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 291
    functionName: mkdtemp
    functionSourceFile: /src/postgres/src/port/mkdtemp.c
    functionUses: 2
    functionsReached:
    - _DIAGASSERT
    - GETTEMP
    linkageType: ''
    returnType: char
    signature: 'char *

      mkdtemp(char *path)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_getopt_start
      Src: /src/postgres/src/port/getopt.c:75,1
    - Dst: pg_getopt_next
      Src: /src/postgres/src/port/getopt.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - nargc
    - nargv
    - ostr
    argTypes:
    - int
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 88
    functionName: getopt
    functionSourceFile: /src/postgres/src/port/getopt.c
    functionUses: 4
    functionsReached:
    - pg_getopt_next
    - pg_getopt_start
    linkageType: ''
    returnType: int
    signature: int getopt(int nargc, char *const *nargv, const char *ostr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elf_aux_info
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:51,1
    - Dst: elf_aux_info
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:54,1
    - Dst: getauxval
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:59,1
    - Dst: getauxval
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:61,1
    - Dst: memset
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:91,1
    - Dst: sysctlbyname
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:92,1
    - Dst: WIDTHMASK
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 109
    functionName: pg_crc32c_armv8_available
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8_choose.c
    functionUses: 0
    functionsReached:
    - getauxval
    - elf_aux_info
    - sysctlbyname
    - memset
    - WIDTHMASK
    linkageType: ''
    returnType: bool
    signature: bool pg_crc32c_armv8_available(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: WIDTHMASK
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8_choose.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WIDTHMASK(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elf_aux_info
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:120,1
    - Dst: getauxval
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 131
    functionName: pg_pmull_available
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8_choose.c
    functionUses: 0
    functionsReached:
    - getauxval
    - elf_aux_info
    linkageType: ''
    returnType: bool
    signature: bool pg_pmull_available(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_crc32c_armv8_available
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:149,1
    - Dst: pg_pmull_available
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:154,1
    - Dst: pg_comp_crc32c
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 160
    functionName: pg_comp_crc32c_choose
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8_choose.c
    functionUses: 0
    functionsReached:
    - pg_pmull_available
    - pg_comp_crc32c
    - pg_crc32c_armv8_available
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_choose(pg_crc32c crc, const void *data, size_t
      len)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - openFlags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 57
    functionName: openFlagsToCreateFileFlags
    functionSourceFile: /src/postgres/src/port/open.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int openFlagsToCreateFileFlags(int openFlags)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initialize_ntdll
      Src: /src/postgres/src/port/open.c:71,1
    - Dst: assert
      Src: /src/postgres/src/port/open.c:75,1
    - Dst: CreateFile
      Src: /src/postgres/src/port/open.c:94,1
    - Dst: openFlagsToCreateFileFlags
      Src: /src/postgres/src/port/open.c:101,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/open.c:117,1
    - Dst: ereport
      Src: /src/postgres/src/port/open.c:124,1
    - Dst: errmsg
      Src: /src/postgres/src/port/open.c:125,1
    - Dst: _
      Src: /src/postgres/src/port/open.c:126,1
    - Dst: _
      Src: /src/postgres/src/port/open.c:126,1
    - Dst: errdetail
      Src: /src/postgres/src/port/open.c:127,1
    - Dst: errhint
      Src: /src/postgres/src/port/open.c:128,1
    - Dst: pg_usleep
      Src: /src/postgres/src/port/open.c:133,1
    - Dst: pg_RtlGetLastNtStatus
      Src: /src/postgres/src/port/open.c:152,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/open.c:160,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - fileName
    - fileFlags
    - backup_semantics
    argTypes:
    - char*
    - int
    - bool
    assertStmts:
    - condition: "((fileFlags & ((O_RDONLY | O_WRONLY | O_RDWR) | O_APPEND |\n\t\t\t\t\t\t
        (O_RANDOM | O_SEQUENTIAL | O_TEMPORARY) |\n\t\t\t\t\t\t _O_SHORT_LIVED | O_DSYNC
        | O_DIRECT | O_CLOEXEC |\n\t\t\t\t\t\t (O_CREAT | O_TRUNC | O_EXCL) | (O_TEXT
        | O_BINARY))) == fileFlags)"
      pos:
        line_end: 77
        line_start: 74
        source_file: /src/postgres/src/port/open.c
    constantsTouched: []
    func_position:
      end: 165
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 165
    functionName: pgwin32_open_handle
    functionSourceFile: /src/postgres/src/port/open.c
    functionUses: 1
    functionsReached:
    - assert
    - _
    - openFlagsToCreateFileFlags
    - ereport
    - GetLastError
    - pg_RtlGetLastNtStatus
    - errhint
    - _dosmaperr
    - errmsg
    - errdetail
    - CreateFile
    - initialize_ntdll
    - pg_usleep
    linkageType: ''
    returnType: HANDLE
    signature: HANDLE pgwin32_open_handle(const char *fileName, int fileFlags, bool
      backup_semantics)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pgwin32_open_handle
      Src: /src/postgres/src/port/open.c:173,1
    - Dst: _open_osfhandle
      Src: /src/postgres/src/port/open.c:192,1
    - Dst: CloseHandle
      Src: /src/postgres/src/port/open.c:193,1
    - Dst: _setmode
      Src: /src/postgres/src/port/open.c:195,1
    - Dst: _close
      Src: /src/postgres/src/port/open.c:197,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - fileName
    - fileFlags
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 167
    functionDepth: 3
    functionLinenumber: 167
    functionLinenumberEnd: 202
    functionName: pgwin32_open
    functionSourceFile: /src/postgres/src/port/open.c
    functionUses: 0
    functionsReached:
    - CloseHandle
    - _setmode
    - _close
    - _open_osfhandle
    - pgwin32_open_handle
    linkageType: ''
    returnType: int
    signature: int pgwin32_open(const char *fileName, int fileFlags, ...)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/postgres/src/port/open.c:210,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:212,1
    - Dst: strstr
      Src: /src/postgres/src/port/open.c:214,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:216,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:218,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:221,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:223,1
    - Dst: pgwin32_open
      Src: /src/postgres/src/port/open.c:226,1
    - Dst: _fdopen
      Src: /src/postgres/src/port/open.c:229,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - fileName
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 204
    functionDepth: 4
    functionLinenumber: 204
    functionLinenumberEnd: 230
    functionName: pgwin32_fopen
    functionSourceFile: /src/postgres/src/port/open.c
    functionUses: 0
    functionsReached:
    - _fdopen
    - pgwin32_open
    - strstr
    - strchr
    linkageType: ''
    returnType: FILE
    signature: 'FILE *

      pgwin32_fopen(const char *fileName, const char *mode)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _get_osfhandle
      Src: /src/postgres/src/port/win32pwrite.c:26,1
    - Dst: Min
      Src: /src/postgres/src/port/win32pwrite.c:34,1
    - Dst: WriteFile
      Src: /src/postgres/src/port/win32pwrite.c:40,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32pwrite.c:42,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32pwrite.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - fd
    - buf
    - size
    - offset
    argTypes:
    - int
    - void*
    - size_t
    - pgoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 47
    functionName: pg_pwrite
    functionSourceFile: /src/postgres/src/port/win32pwrite.c
    functionUses: 3
    functionsReached:
    - GetLastError
    - WriteFile
    - _get_osfhandle
    - _dosmaperr
    - Min
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_pwrite(int fd, const void *buf, size_t size, pgoff_t offset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/port/win32getrusage.c:41,1
    - Dst: GetProcessTimes
      Src: /src/postgres/src/port/win32getrusage.c:42,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/port/win32getrusage.c:42,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32getrusage.c:45,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32getrusage.c:45,1
    - Dst: memcpy
      Src: /src/postgres/src/port/win32getrusage.c:50,1
    - Dst: memcpy
      Src: /src/postgres/src/port/win32getrusage.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - who
    - rusage
    argTypes:
    - int
    - struct rusage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 61
    functionName: getrusage
    functionSourceFile: /src/postgres/src/port/win32getrusage.c
    functionUses: 0
    functionsReached:
    - memcpy
    - GetLastError
    - memset
    - _dosmaperr
    - GetCurrentProcess
    - GetProcessTimes
    linkageType: ''
    returnType: int
    signature: int getrusage(int who, struct rusage *rusage)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: OpenProcess
      Src: /src/postgres/src/port/kill.c:47,1
    - Dst: TerminateProcess
      Src: /src/postgres/src/port/kill.c:52,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/kill.c:54,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/kill.c:54,1
    - Dst: CloseHandle
      Src: /src/postgres/src/port/kill.c:55,1
    - Dst: CloseHandle
      Src: /src/postgres/src/port/kill.c:58,1
    - Dst: snprintf
      Src: /src/postgres/src/port/kill.c:61,1
    - Dst: CallNamedPipe
      Src: /src/postgres/src/port/kill.c:63,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/kill.c:73,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 2
    argNames:
    - pid
    - sig
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 95
    functionName: pgkill
    functionSourceFile: /src/postgres/src/port/kill.c
    functionUses: 0
    functionsReached:
    - TerminateProcess
    - CloseHandle
    - GetLastError
    - _dosmaperr
    - OpenProcess
    - CallNamedPipe
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pgkill(int pid, int sig)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MoveFileEx
      Src: /src/postgres/src/port/dirmod.c:64,1
    - Dst: rename
      Src: /src/postgres/src/port/dirmod.c:66,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirmod.c:70,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/dirmod.c:72,1
    - Dst: pg_usleep
      Src: /src/postgres/src/port/dirmod.c:93,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 96
    functionName: pgrename
    functionSourceFile: /src/postgres/src/port/dirmod.c
    functionUses: 0
    functionsReached:
    - rename
    - MoveFileEx
    - GetLastError
    - _dosmaperr
    - pg_usleep
    linkageType: ''
    returnType: int
    signature: int pgrename(const char *from, const char *to)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_RtlGetLastNtStatus
      Src: /src/postgres/src/port/dirmod.c:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 113
    functionName: lstat_error_was_status_delete_pending
    functionSourceFile: /src/postgres/src/port/dirmod.c
    functionUses: 0
    functionsReached:
    - pg_RtlGetLastNtStatus
    linkageType: ''
    returnType: bool
    signature: bool lstat_error_was_status_delete_pending(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/postgres/src/port/dirmod.c:132,1
    - Dst: lstat
      Src: /src/postgres/src/port/dirmod.c:153,1
    - Dst: lstat_error_was_status_delete_pending
      Src: /src/postgres/src/port/dirmod.c:155,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/port/dirmod.c:161,1
    - Dst: rmdir
      Src: /src/postgres/src/port/dirmod.c:170,1
    - Dst: unlink
      Src: /src/postgres/src/port/dirmod.c:170,1
    - Dst: pg_usleep
      Src: /src/postgres/src/port/dirmod.c:176,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 179
    functionName: pgunlink
    functionSourceFile: /src/postgres/src/port/dirmod.c
    functionUses: 0
    functionsReached:
    - lstat_error_was_status_delete_pending
    - rmdir
    - unlink
    - S_ISLNK
    - pg_usleep
    - lstat
    linkageType: ''
    returnType: int
    signature: int pgunlink(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - from
    - ','
    - to
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 183
    functionName: rename
    functionSourceFile: /src/postgres/src/port/dirmod.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rename(from, to)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 184
    functionName: unlink
    functionSourceFile: /src/postgres/src/port/dirmod.c
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unlink(path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CreateDirectory
      Src: /src/postgres/src/port/dirmod.c:228,1
    - Dst: CreateFile
      Src: /src/postgres/src/port/dirmod.c:229,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/dirmod.c:235,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirmod.c:235,1
    - Dst: memcmp
      Src: /src/postgres/src/port/dirmod.c:240,1
    - Dst: snprintf
      Src: /src/postgres/src/port/dirmod.c:241,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/dirmod.c:243,1
    - Dst: strchr
      Src: /src/postgres/src/port/dirmod.c:245,1
    - Dst: strlen
      Src: /src/postgres/src/port/dirmod.c:248,1
    - Dst: MultiByteToWideChar
      Src: /src/postgres/src/port/dirmod.c:256,1
    - Dst: DeviceIoControl
      Src: /src/postgres/src/port/dirmod.c:263,1
    - Dst: CTL_CODE
      Src: /src/postgres/src/port/dirmod.c:264,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/dirmod.c:272,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirmod.c:272,1
    - Dst: FormatMessage
      Src: /src/postgres/src/port/dirmod.c:275,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirmod.c:278,1
    - Dst: MAKELANGID
      Src: /src/postgres/src/port/dirmod.c:279,1
    - Dst: ereport
      Src: /src/postgres/src/port/dirmod.c:282,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/port/dirmod.c:283,1
    - Dst: errmsg
      Src: /src/postgres/src/port/dirmod.c:284,1
    - Dst: fprintf
      Src: /src/postgres/src/port/dirmod.c:287,1
    - Dst: _
      Src: /src/postgres/src/port/dirmod.c:287,1
    - Dst: LocalFree
      Src: /src/postgres/src/port/dirmod.c:290,1
    - Dst: CloseHandle
      Src: /src/postgres/src/port/dirmod.c:292,1
    - Dst: RemoveDirectory
      Src: /src/postgres/src/port/dirmod.c:293,1
    - Dst: CloseHandle
      Src: /src/postgres/src/port/dirmod.c:300,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 2
    argNames:
    - oldpath
    - newpath
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 303
    functionName: pgsymlink
    functionSourceFile: /src/postgres/src/port/dirmod.c
    functionUses: 0
    functionsReached:
    - MultiByteToWideChar
    - strchr
    - GetLastError
    - fprintf
    - CloseHandle
    - strlcpy
    - _
    - FormatMessage
    - LocalFree
    - _dosmaperr
    - MAKELANGID
    - CTL_CODE
    - errmsg
    - CreateFile
    - memcmp
    - DeviceIoControl
    - ereport
    - strlen
    - CreateDirectory
    - RemoveDirectory
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pgsymlink(const char *oldpath, const char *newpath)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GetFileAttributes
      Src: /src/postgres/src/port/dirmod.c:318,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/dirmod.c:321,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirmod.c:321,1
    - Dst: CreateFile
      Src: /src/postgres/src/port/dirmod.c:330,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/dirmod.c:339,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirmod.c:339,1
    - Dst: DeviceIoControl
      Src: /src/postgres/src/port/dirmod.c:343,1
    - Dst: FormatMessage
      Src: /src/postgres/src/port/dirmod.c:355,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirmod.c:358,1
    - Dst: MAKELANGID
      Src: /src/postgres/src/port/dirmod.c:359,1
    - Dst: ereport
      Src: /src/postgres/src/port/dirmod.c:362,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/port/dirmod.c:363,1
    - Dst: errmsg
      Src: /src/postgres/src/port/dirmod.c:364,1
    - Dst: fprintf
      Src: /src/postgres/src/port/dirmod.c:367,1
    - Dst: _
      Src: /src/postgres/src/port/dirmod.c:367,1
    - Dst: LocalFree
      Src: /src/postgres/src/port/dirmod.c:370,1
    - Dst: CloseHandle
      Src: /src/postgres/src/port/dirmod.c:371,1
    - Dst: CloseHandle
      Src: /src/postgres/src/port/dirmod.c:375,1
    - Dst: WideCharToMultiByte
      Src: /src/postgres/src/port/dirmod.c:384,1
    - Dst: isalpha
      Src: /src/postgres/src/port/dirmod.c:412,1
    - Dst: memmove
      Src: /src/postgres/src/port/dirmod.c:416,1
    - Dst: strlen
      Src: /src/postgres/src/port/dirmod.c:416,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 3
    argNames:
    - path
    - buf
    - size
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 420
    functionName: pgreadlink
    functionSourceFile: /src/postgres/src/port/dirmod.c
    functionUses: 0
    functionsReached:
    - CloseHandle
    - isalpha
    - _
    - FormatMessage
    - GetFileAttributes
    - ereport
    - memmove
    - LocalFree
    - GetLastError
    - WideCharToMultiByte
    - _dosmaperr
    - MAKELANGID
    - errmsg
    - strlen
    - CreateFile
    - fprintf
    - errcode_for_file_access
    - DeviceIoControl
    linkageType: ''
    returnType: int
    signature: int pgreadlink(const char *path, char *buf, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:110,1
    - Dst: pg_popcount64
      Src: /src/postgres/src/port/pg_bitutils.c:116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 129
    functionName: pg_popcount_portable
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - TYPEALIGN
    - pg_popcount64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_portable(const char *buf, int bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_bitutils.c:142,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:144,1
    - Dst: pg_popcount64
      Src: /src/postgres/src/port/pg_bitutils.c:150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 163
    functionName: pg_popcount_masked_portable
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    - TYPEALIGN
    - pg_popcount64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_portable(const char *buf, int bytes, uint8
      mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_portable
      Src: /src/postgres/src/port/pg_bitutils.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: pg_popcount_optimized
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 1
    functionsReached:
    - pg_popcount_portable
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_optimized(const char *buf, int bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_masked_portable
      Src: /src/postgres/src/port/pg_bitutils.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: pg_popcount_masked_optimized
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 1
    functionsReached:
    - pg_popcount_masked_portable
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_optimized(const char *buf, int bytes, uint8
      mask)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PointerIsAligned
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:30,1
    - Dst: __builtin_loongarch_crcc_w_b_w
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:33,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:36,1
    - Dst: __builtin_loongarch_crcc_w_h_w
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:39,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:42,1
    - Dst: __builtin_loongarch_crcc_w_w_w
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:45,1
    - Dst: __builtin_loongarch_crcc_w_d_w
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:52,1
    - Dst: __builtin_loongarch_crcc_w_w_w
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:59,1
    - Dst: __builtin_loongarch_crcc_w_h_w
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:64,1
    - Dst: __builtin_loongarch_crcc_w_b_w
      Src: /src/postgres/src/port/pg_crc32c_loongarch.c:69,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 73
    functionName: pg_comp_crc32c_loongarch
    functionSourceFile: /src/postgres/src/port/pg_crc32c_loongarch.c
    functionUses: 0
    functionsReached:
    - PointerIsAligned
    - __builtin_loongarch_crcc_w_d_w
    - __builtin_loongarch_crcc_w_h_w
    - __builtin_loongarch_crcc_w_b_w
    - __builtin_loongarch_crcc_w_w_w
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_loongarch(pg_crc32c crc, const void *data,
      size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - key
    - base0
    - nmemb
    - size
    - arg
    argTypes:
    - void*
    - void*
    - size_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 78
    functionName: bsearch_arg
    functionSourceFile: /src/postgres/src/port/bsearch_arg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void *\nbsearch_arg(const void *key, const void *base0,\n\t\t\tsize_t
      nmemb, size_t size,\n\t\t\tint (*compar) (const void *, const void *, void *),\n\t\t\tvoid
      *arg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/port/chklocale.c:209,1
    - Dst: MultiByteToWideChar
      Src: /src/postgres/src/port/chklocale.c:210,1
    - Dst: GetLocaleInfoEx
      Src: /src/postgres/src/port/chklocale.c:212,1
    - Dst: malloc
      Src: /src/postgres/src/port/chklocale.c:216,1
    - Dst: strcpy
      Src: /src/postgres/src/port/chklocale.c:224,1
    - Dst: sprintf
      Src: /src/postgres/src/port/chklocale.c:226,1
    - Dst: strrchr
      Src: /src/postgres/src/port/chklocale.c:240,1
    - Dst: strlen
      Src: /src/postgres/src/port/chklocale.c:246,1
    - Dst: malloc
      Src: /src/postgres/src/port/chklocale.c:247,1
    - Dst: strspn
      Src: /src/postgres/src/port/chklocale.c:250,1
    - Dst: sprintf
      Src: /src/postgres/src/port/chklocale.c:251,1
    - Dst: strcpy
      Src: /src/postgres/src/port/chklocale.c:253,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - ctype
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 259
    functionName: win32_get_codeset
    functionSourceFile: /src/postgres/src/port/chklocale.c
    functionUses: 0
    functionsReached:
    - MultiByteToWideChar
    - strrchr
    - strspn
    - malloc
    - memset
    - strlen
    - sprintf
    - GetLocaleInfoEx
    - strcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      win32_get_codeset(const char *ctype)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/port/chklocale.c:272,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/port/chklocale.c:276,1
    - Dst: ereport
      Src: /src/postgres/src/port/chklocale.c:279,1
    - Dst: errmsg
      Src: /src/postgres/src/port/chklocale.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cp
    argTypes:
    - UINT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 283
    functionName: pg_codepage_to_encoding
    functionSourceFile: /src/postgres/src/port/chklocale.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - ereport
    - errmsg
    - sprintf
    linkageType: ''
    returnType: int
    signature: int pg_codepage_to_encoding(UINT cp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: setlocale
      Src: /src/postgres/src/port/chklocale.c:312,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/port/chklocale.c:316,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/port/chklocale.c:317,1
    - Dst: newlocale
      Src: /src/postgres/src/port/chklocale.c:322,1
    - Dst: nl_langinfo_l
      Src: /src/postgres/src/port/chklocale.c:326,1
    - Dst: strdup
      Src: /src/postgres/src/port/chklocale.c:328,1
    - Dst: freelocale
      Src: /src/postgres/src/port/chklocale.c:330,1
    - Dst: win32_get_codeset
      Src: /src/postgres/src/port/chklocale.c:332,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/port/chklocale.c:341,1
    - Dst: free
      Src: /src/postgres/src/port/chklocale.c:343,1
    - Dst: strlen
      Src: /src/postgres/src/port/chklocale.c:356,1
    - Dst: free
      Src: /src/postgres/src/port/chklocale.c:358,1
    - Dst: fprintf
      Src: /src/postgres/src/port/chklocale.c:370,1
    - Dst: _
      Src: /src/postgres/src/port/chklocale.c:370,1
    - Dst: fputc
      Src: /src/postgres/src/port/chklocale.c:373,1
    - Dst: ereport
      Src: /src/postgres/src/port/chklocale.c:375,1
    - Dst: errmsg
      Src: /src/postgres/src/port/chklocale.c:376,1
    - Dst: free
      Src: /src/postgres/src/port/chklocale.c:381,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - ctype
    - write_message
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 383
    functionName: pg_get_encoding_from_locale
    functionSourceFile: /src/postgres/src/port/chklocale.c
    functionUses: 3
    functionsReached:
    - pg_strcasecmp
    - nl_langinfo_l
    - win32_get_codeset
    - _
    - setlocale
    - newlocale
    - fputc
    - ereport
    - freelocale
    - strdup
    - free
    - strlen
    - errmsg
    - fprintf
    linkageType: ''
    returnType: int
    signature: int pg_get_encoding_from_locale(const char *ctype, bool write_message)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/quotes.c:35,1
    - Dst: malloc
      Src: /src/postgres/src/port/quotes.c:38,1
    - Dst: SQL_STR_DOUBLE
      Src: /src/postgres/src/port/quotes.c:45,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 51
    functionName: escape_single_quotes_ascii
    functionSourceFile: /src/postgres/src/port/quotes.c
    functionUses: 3
    functionsReached:
    - malloc
    - strlen
    - SQL_STR_DOUBLE
    linkageType: ''
    returnType: char
    signature: 'char *

      escape_single_quotes_ascii(const char *src)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - s
    - len
    - val
    argTypes:
    - char*
    - int
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 44
    functionName: print_tar_number
    functionSourceFile: /src/postgres/src/port/tar.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void print_tar_number(char *s, int len, uint64 val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 82
    functionName: read_tar_number
    functionSourceFile: /src/postgres/src/port/tar.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 read_tar_number(const char *s, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - header
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 105
    functionName: tarChecksum
    functionSourceFile: /src/postgres/src/port/tar.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tarChecksum(const char *header)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tarChecksum
      Src: /src/postgres/src/port/tar.c:115,1
    - Dst: read_tar_number
      Src: /src/postgres/src/port/tar.c:117,1
    - Dst: memcmp
      Src: /src/postgres/src/port/tar.c:123,1
    - Dst: memcmp
      Src: /src/postgres/src/port/tar.c:124,1
    - Dst: memcmp
      Src: /src/postgres/src/port/tar.c:127,1
    - Dst: memcmp
      Src: /src/postgres/src/port/tar.c:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - header
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 134
    functionName: isValidTarHeader
    functionSourceFile: /src/postgres/src/port/tar.c
    functionUses: 2
    functionsReached:
    - tarChecksum
    - memcmp
    - read_tar_number
    linkageType: ''
    returnType: bool
    signature: bool isValidTarHeader(const char *header)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/tar.c:146,1
    - Dst: strlen
      Src: /src/postgres/src/port/tar.c:149,1
    - Dst: memset
      Src: /src/postgres/src/port/tar.c:152,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/tar.c:155,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/tar.c:156,1
    - Dst: strlen
      Src: /src/postgres/src/port/tar.c:163,1
    - Dst: Min
      Src: /src/postgres/src/port/tar.c:165,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:171,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:174,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:177,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/tar.c:180,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:182,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:184,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:187,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/tar.c:196,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/tar.c:198,1
    - Dst: strcpy
      Src: /src/postgres/src/port/tar.c:210,1
    - Dst: memcpy
      Src: /src/postgres/src/port/tar.c:213,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/tar.c:217,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/tar.c:221,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:224,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:227,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:232,1
    - Dst: tarChecksum
      Src: /src/postgres/src/port/tar.c:232,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 8
    argNames:
    - h
    - filename
    - linktarget
    - size
    - mode
    - uid
    - gid
    - mtime
    argTypes:
    - char*
    - char*
    - char*
    - pgoff_t
    - mode_t
    - uid_t
    - gid_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 235
    functionName: tarCreateHeader
    functionSourceFile: /src/postgres/src/port/tar.c
    functionUses: 3
    functionsReached:
    - strlcpy
    - memcpy
    - tarChecksum
    - print_tar_number
    - strlen
    - memset
    - Min
    - strcpy
    - S_ISDIR
    linkageType: ''
    returnType: enum tarError
    signature: "enum tarError tarCreateHeader(char *h, const char *filename, const
      char *linktarget,\n\t\t\t\tpgoff_t size, mode_t mode, uid_t uid, gid_t gid,
      time_t mtime)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/strlcat.c:48,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - dst
    - src
    - siz
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 61
    functionName: strlcat
    functionSourceFile: /src/postgres/src/port/strlcat.c
    functionUses: 3
    functionsReached:
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t strlcat(char *dst, const char *src, size_t siz)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_strerror_r
      Src: /src/postgres/src/port/strerror.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - errnum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: pg_strerror
    functionSourceFile: /src/postgres/src/port/strerror.c
    functionUses: 0
    functionsReached:
    - pg_strerror_r
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_strerror(int errnum)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: win32_socket_strerror
      Src: /src/postgres/src/port/strerror.c:54,1
    - Dst: gnuish_strerror_r
      Src: /src/postgres/src/port/strerror.c:58,1
    - Dst: get_errno_symbol
      Src: /src/postgres/src/port/strerror.c:68,1
    - Dst: snprintf
      Src: /src/postgres/src/port/strerror.c:72,1
    - Dst: _
      Src: /src/postgres/src/port/strerror.c:72,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - errnum
    - buf
    - buflen
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 77
    functionName: pg_strerror_r
    functionSourceFile: /src/postgres/src/port/strerror.c
    functionUses: 1
    functionsReached:
    - gnuish_strerror_r
    - get_errno_symbol
    - win32_socket_strerror
    - _
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_strerror_r(int errnum, char *buf, size_t buflen)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strerror_r
      Src: /src/postgres/src/port/strerror.c:90,1
    - Dst: strerror_r
      Src: /src/postgres/src/port/strerror.c:95,1
    - Dst: strerror
      Src: /src/postgres/src/port/strerror.c:98,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/strerror.c:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - errnum
    - buf
    - buflen
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 106
    functionName: gnuish_strerror_r
    functionSourceFile: /src/postgres/src/port/strerror.c
    functionUses: 1
    functionsReached:
    - strerror_r
    - strerror
    - strlcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      gnuish_strerror_r(int errnum, char *buf, size_t buflen)'
  - BBCount: 64
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 130
    argCount: 1
    argNames:
    - errnum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 268
    functionName: get_errno_symbol
    functionSourceFile: /src/postgres/src/port/strerror.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      get_errno_symbol(int errnum)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LoadLibraryEx
      Src: /src/postgres/src/port/strerror.c:283,1
    - Dst: snprintf
      Src: /src/postgres/src/port/strerror.c:287,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/strerror.c:289,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/port/strerror.c:294,1
    - Dst: FormatMessage
      Src: /src/postgres/src/port/strerror.c:295,1
    - Dst: MAKELANGID
      Src: /src/postgres/src/port/strerror.c:300,1
    - Dst: snprintf
      Src: /src/postgres/src/port/strerror.c:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - errnum
    - buf
    - buflen
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 310
    functionName: win32_socket_strerror
    functionSourceFile: /src/postgres/src/port/strerror.c
    functionUses: 1
    functionsReached:
    - LoadLibraryEx
    - FormatMessage
    - GetLastError
    - ZeroMemory
    - MAKELANGID
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      win32_socket_strerror(int errnum, char *buf, size_t buflen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset_explicit
      Src: /src/postgres/src/port/explicit_bzero.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: explicit_bzero
    functionSourceFile: /src/postgres/src/port/explicit_bzero.c
    functionUses: 0
    functionsReached:
    - memset_explicit
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: explicit_memset
      Src: /src/postgres/src/port/explicit_bzero.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: explicit_bzero
    functionSourceFile: /src/postgres/src/port/explicit_bzero.c
    functionUses: 0
    functionsReached:
    - explicit_memset
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset_s
      Src: /src/postgres/src/port/explicit_bzero.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: explicit_bzero
    functionSourceFile: /src/postgres/src/port/explicit_bzero.c
    functionUses: 0
    functionsReached:
    - memset_s
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SecureZeroMemory
      Src: /src/postgres/src/port/explicit_bzero.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: explicit_bzero
    functionSourceFile: /src/postgres/src/port/explicit_bzero.c
    functionUses: 0
    functionsReached:
    - SecureZeroMemory
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/port/explicit_bzero.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: bzero2
    functionSourceFile: /src/postgres/src/port/explicit_bzero.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void bzero2(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bzero_p
      Src: /src/postgres/src/port/explicit_bzero.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: explicit_bzero
    functionSourceFile: /src/postgres/src/port/explicit_bzero.c
    functionUses: 0
    functionsReached:
    - bzero_p
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/postgres/src/port/noblock.c:30,1
    - Dst: fcntl
      Src: /src/postgres/src/port/noblock.c:33,1
    - Dst: ioctlsocket
      Src: /src/postgres/src/port/noblock.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - sock
    argTypes:
    - pgsocket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 42
    functionName: pg_set_noblock
    functionSourceFile: /src/postgres/src/port/noblock.c
    functionUses: 0
    functionsReached:
    - fcntl
    - ioctlsocket
    linkageType: ''
    returnType: bool
    signature: bool pg_set_noblock(pgsocket sock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/postgres/src/port/noblock.c:54,1
    - Dst: fcntl
      Src: /src/postgres/src/port/noblock.c:57,1
    - Dst: ioctlsocket
      Src: /src/postgres/src/port/noblock.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - sock
    argTypes:
    - pgsocket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 66
    functionName: pg_set_block
    functionSourceFile: /src/postgres/src/port/noblock.c
    functionUses: 0
    functionsReached:
    - fcntl
    - ioctlsocket
    linkageType: ''
    returnType: bool
    signature: bool pg_set_block(pgsocket sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: IS_PATH_VAR_SEP
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PATH_VAR_SEP(ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: IS_PATH_VAR_SEP
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PATH_VAR_SEP(ch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:71,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:71,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:74,1
    - Dst: isalpha
      Src: /src/postgres/src/port/path.c:77,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 82
    functionName: skip_drive
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - isalpha
    - IS_DIR_SEP
    linkageType: ''
    returnType: char
    signature: 'char *

      skip_drive(const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: skip_drive
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: skip_drive(path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 101
    functionName: has_drive_prefix
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 1
    functionsReached:
    - skip_drive
    linkageType: ''
    returnType: bool
    signature: bool has_drive_prefix(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:114,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:115,1
    - Dst: unconstify
      Src: /src/postgres/src/port/path.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: first_dir_separator
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - IS_DIR_SEP
    - unconstify
    - skip_drive
    linkageType: ''
    returnType: char
    signature: 'char *

      first_dir_separator(const char *filename)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_PATH_VAR_SEP
      Src: /src/postgres/src/port/path.c:133,1
    - Dst: unconstify
      Src: /src/postgres/src/port/path.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - pathlist
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 136
    functionName: first_path_var_separator
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - IS_PATH_VAR_SEP
    - unconstify
    linkageType: ''
    returnType: char
    signature: 'char *

      first_path_var_separator(const char *pathlist)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:150,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:151,1
    - Dst: unconstify
      Src: /src/postgres/src/port/path.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 154
    functionName: last_dir_separator
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 5
    functionsReached:
    - IS_DIR_SEP
    - unconstify
    - skip_drive
    linkageType: ''
    returnType: char
    signature: 'char *

      last_dir_separator(const char *filename)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_sjis_mblen
      Src: /src/postgres/src/port/path.c:177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - path
    - encoding
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 191
    functionName: debackslash_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - pg_sjis_mblen
    linkageType: ''
    returnType: void
    signature: void debackslash_path(char *path, int encoding)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/port/path.c:208,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 213
    functionName: pg_sjis_mblen
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 1
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_sjis_mblen(const unsigned char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 245
    functionName: make_native_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void make_native_path(char *filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetShortPathName
      Src: /src/postgres/src/port/path.c:267,1
    - Dst: debackslash_path
      Src: /src/postgres/src/port/path.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 273
    functionName: cleanup_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - GetShortPathName
    - debackslash_path
    linkageType: ''
    returnType: void
    signature: void cleanup_path(char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:290,1
    - Dst: snprintf
      Src: /src/postgres/src/port/path.c:300,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:300,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:300,1
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ret_path
    - head
    - tail
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 305
    functionName: join_path_components
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 2
    functionsReached:
    - strlcpy
    - strlen
    - skip_drive
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void join_path_components(char *ret_path,\n\t\t\t\t\t const char *head,
      const char *tail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/port/path.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 341
    functionName: canonicalize_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 21
    functionsReached:
    - canonicalize_path_enc
    linkageType: ''
    returnType: void
    signature: void canonicalize_path(char *path)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: debackslash_path
      Src: /src/postgres/src/port/path.c:362,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:368,1
    - Dst: trim_trailing_separator
      Src: /src/postgres/src/port/path.c:378,1
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:413,1
    - Dst: strcmp
      Src: /src/postgres/src/port/path.c:442,1
    - Dst: strcmp
      Src: /src/postgres/src/port/path.c:449,1
    - Dst: Assert
      Src: /src/postgres/src/port/path.c:454,1
    - Dst: append_subdir_to_path
      Src: /src/postgres/src/port/path.c:465,1
    - Dst: trim_directory
      Src: /src/postgres/src/port/path.c:476,1
    - Dst: append_subdir_to_path
      Src: /src/postgres/src/port/path.c:484,1
    - Dst: append_subdir_to_path
      Src: /src/postgres/src/port/path.c:492,1
    - Dst: append_subdir_to_path
      Src: /src/postgres/src/port/path.c:498,1
    - Dst: trim_directory
      Src: /src/postgres/src/port/path.c:508,1
    - Dst: append_subdir_to_path
      Src: /src/postgres/src/port/path.c:527,1
    - Dst: append_subdir_to_path
      Src: /src/postgres/src/port/path.c:536,1
    - Dst: append_subdir_to_path
      Src: /src/postgres/src/port/path.c:542,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 105
    argCount: 2
    argNames:
    - path
    - encoding
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 569
    functionName: canonicalize_path_enc
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 5
    functionsReached:
    - strcmp
    - trim_trailing_separator
    - Assert
    - debackslash_path
    - skip_drive
    - trim_directory
    - append_subdir_to_path
    - strlen
    linkageType: ''
    returnType: void
    signature: void canonicalize_path_enc(char *path, int encoding)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:585,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 576
    functionDepth: 2
    functionLinenumber: 576
    functionLinenumberEnd: 593
    functionName: path_contains_parent_reference
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - skip_drive
    linkageType: ''
    returnType: bool
    signature: bool path_contains_parent_reference(const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_absolute_path
      Src: /src/postgres/src/port/path.c:606,1
    - Dst: path_contains_parent_reference
      Src: /src/postgres/src/port/path.c:609,1
    - Dst: isalpha
      Src: /src/postgres/src/port/path.c:622,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:623,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 603
    functionDepth: 3
    functionLinenumber: 603
    functionLinenumberEnd: 628
    functionName: path_is_relative_and_below_cwd
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - isalpha
    - IS_DIR_SEP
    - path_contains_parent_reference
    - is_absolute_path
    linkageType: ''
    returnType: bool
    signature: bool path_is_relative_and_below_cwd(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:641,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/port/path.c:642,1
    - Dst: path_is_relative_and_below_cwd
      Src: /src/postgres/src/port/path.c:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 636
    functionDepth: 4
    functionLinenumber: 636
    functionLinenumberEnd: 645
    functionName: path_is_safe_for_extraction
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 9
    functionsReached:
    - strlcpy
    - canonicalize_path
    - path_is_relative_and_below_cwd
    linkageType: ''
    returnType: bool
    signature: bool path_is_safe_for_extraction(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:656,1
    - Dst: strncmp
      Src: /src/postgres/src/port/path.c:658,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:659,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - path1
    - path2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 662
    functionName: path_is_prefix_of_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 2
    functionsReached:
    - strncmp
    - IS_DIR_SEP
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool path_is_prefix_of_path(const char *path1, const char *path2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: last_dir_separator
      Src: /src/postgres/src/port/path.c:674,1
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:678,1
    - Dst: strdup
      Src: /src/postgres/src/port/path.c:684,1
    - Dst: fprintf
      Src: /src/postgres/src/port/path.c:687,1
    - Dst: abort
      Src: /src/postgres/src/port/path.c:688,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:693,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/port/path.c:694,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:694,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:695,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 668
    functionDepth: 3
    functionLinenumber: 668
    functionLinenumberEnd: 699
    functionName: get_progname
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 37
    functionsReached:
    - abort
    - pg_strcasecmp
    - skip_drive
    - strlen
    - strdup
    - last_dir_separator
    - fprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      get_progname(const char *argv0)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_tolower
      Src: /src/postgres/src/port/path.c:716,1
    - Dst: pg_tolower
      Src: /src/postgres/src/port/path.c:716,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:718,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:718,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 727
    functionName: dir_strcmp
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - pg_tolower
    - IS_DIR_SEP
    linkageType: ''
    returnType: int
    signature: int dir_strcmp(const char *s1, const char *s2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:770,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:770,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:777,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:783,1
    - Dst: trim_directory
      Src: /src/postgres/src/port/path.c:784,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/port/path.c:785,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:790,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:792,1
    - Dst: dir_strcmp
      Src: /src/postgres/src/port/path.c:793,1
    - Dst: trim_trailing_separator
      Src: /src/postgres/src/port/path.c:796,1
    - Dst: join_path_components
      Src: /src/postgres/src/port/path.c:797,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/port/path.c:798,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:803,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/port/path.c:804,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 4
    argNames:
    - ret_path
    - target_path
    - bin_path
    - my_exec_path
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 754
    functionDepth: 3
    functionLinenumber: 754
    functionLinenumberEnd: 805
    functionName: make_relative_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - IS_DIR_SEP
    - join_path_components
    - trim_trailing_separator
    - canonicalize_path
    - trim_directory
    - strlen
    - dir_strcmp
    linkageType: ''
    returnType: void
    signature: "void make_relative_path(char *ret_path, const char *target_path,\n\t\t\t\t
      \  const char *bin_path, const char *my_exec_path)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_absolute_path
      Src: /src/postgres/src/port/path.c:832,1
    - Dst: malloc
      Src: /src/postgres/src/port/path.c:840,1
    - Dst: ereport
      Src: /src/postgres/src/port/path.c:844,1
    - Dst: errcode
      Src: /src/postgres/src/port/path.c:845,1
    - Dst: errmsg
      Src: /src/postgres/src/port/path.c:846,1
    - Dst: fprintf
      Src: /src/postgres/src/port/path.c:848,1
    - Dst: _
      Src: /src/postgres/src/port/path.c:848,1
    - Dst: getcwd
      Src: /src/postgres/src/port/path.c:853,1
    - Dst: free
      Src: /src/postgres/src/port/path.c:857,1
    - Dst: free
      Src: /src/postgres/src/port/path.c:865,1
    - Dst: elog
      Src: /src/postgres/src/port/path.c:868,1
    - Dst: fprintf
      Src: /src/postgres/src/port/path.c:870,1
    - Dst: _
      Src: /src/postgres/src/port/path.c:870,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:876,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:876,1
    - Dst: malloc::malloc
      Src: /src/postgres/src/port/path.c:876,1
    - Dst: free
      Src: /src/postgres/src/port/path.c:879,1
    - Dst: ereport
      Src: /src/postgres/src/port/path.c:881,1
    - Dst: errcode
      Src: /src/postgres/src/port/path.c:882,1
    - Dst: errmsg
      Src: /src/postgres/src/port/path.c:883,1
    - Dst: fprintf
      Src: /src/postgres/src/port/path.c:885,1
    - Dst: _
      Src: /src/postgres/src/port/path.c:885,1
    - Dst: free
      Src: /src/postgres/src/port/path.c:890,1
    - Dst: strdup::strdup
      Src: /src/postgres/src/port/path.c:894,1
    - Dst: ereport
      Src: /src/postgres/src/port/path.c:898,1
    - Dst: errcode
      Src: /src/postgres/src/port/path.c:899,1
    - Dst: errmsg
      Src: /src/postgres/src/port/path.c:900,1
    - Dst: fprintf
      Src: /src/postgres/src/port/path.c:902,1
    - Dst: _
      Src: /src/postgres/src/port/path.c:902,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 912
    functionName: make_absolute_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 3
    functionsReached:
    - elog
    - is_absolute_path
    - errcode
    - _
    - getcwd
    - malloc::malloc
    - strdup::strdup
    - ereport
    - malloc
    - errmsg
    - free
    - strlen
    - fprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      make_absolute_path(const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 918
    functionDepth: 4
    functionLinenumber: 918
    functionLinenumberEnd: 922
    functionName: get_share_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 2
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_share_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 927
    functionDepth: 4
    functionLinenumber: 927
    functionLinenumberEnd: 931
    functionName: get_etc_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 1
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_etc_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 936
    functionDepth: 4
    functionLinenumber: 936
    functionLinenumberEnd: 940
    functionName: get_include_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_include_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 945
    functionDepth: 4
    functionLinenumber: 945
    functionLinenumberEnd: 949
    functionName: get_pkginclude_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_pkginclude_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 954
    functionDepth: 4
    functionLinenumber: 954
    functionLinenumberEnd: 958
    functionName: get_includeserver_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_includeserver_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 963
    functionDepth: 4
    functionLinenumber: 963
    functionLinenumberEnd: 967
    functionName: get_lib_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_lib_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 972
    functionDepth: 4
    functionLinenumber: 972
    functionLinenumberEnd: 976
    functionName: get_pkglib_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_pkglib_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 981
    functionDepth: 4
    functionLinenumber: 981
    functionLinenumberEnd: 985
    functionName: get_locale_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_locale_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 990
    functionDepth: 4
    functionLinenumber: 990
    functionLinenumberEnd: 994
    functionName: get_doc_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_doc_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 999
    functionDepth: 4
    functionLinenumber: 999
    functionLinenumberEnd: 1003
    functionName: get_html_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_html_path(const char *my_exec_path, char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_relative_path
      Src: /src/postgres/src/port/path.c:1011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1008
    functionDepth: 4
    functionLinenumber: 1008
    functionLinenumberEnd: 1012
    functionName: get_man_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - make_relative_path
    linkageType: ''
    returnType: void
    signature: void get_man_path(const char *my_exec_path, char *ret_path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/port/path.c:1031,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:1034,1
    - Dst: getpwuid_r
      Src: /src/postgres/src/port/path.c:1044,1
    - Dst: geteuid
      Src: /src/postgres/src/port/path.c:1044,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:1047,1
    - Dst: getenv
      Src: /src/postgres/src/port/path.c:1060,1
    - Dst: snprintf
      Src: /src/postgres/src/port/path.c:1063,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ret_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1021
    functionDepth: 1
    functionLinenumber: 1021
    functionLinenumberEnd: 1066
    functionName: get_home_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 3
    functionsReached:
    - geteuid
    - strlcpy
    - getenv
    - getpwuid_r
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool get_home_path(char *ret_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trim_directory
      Src: /src/postgres/src/port/path.c:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1084
    functionDepth: 1
    functionLinenumber: 1084
    functionLinenumberEnd: 1088
    functionName: get_parent_directory
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 2
    functionsReached:
    - trim_directory
    linkageType: ''
    returnType: void
    signature: void get_parent_directory(char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:1106,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:1112,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1112,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1115,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1118,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1121,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1101
    functionDepth: 2
    functionLinenumber: 1101
    functionLinenumberEnd: 1125
    functionName: trim_directory
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 3
    functionsReached:
    - IS_DIR_SEP
    - strlen
    - skip_drive
    linkageType: ''
    returnType: char
    signature: 'char *

      trim_directory(char *path)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:1138,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:1139,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1133
    functionDepth: 2
    functionLinenumber: 1133
    functionLinenumberEnd: 1143
    functionName: trim_trailing_separator
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 2
    functionsReached:
    - IS_DIR_SEP
    - strlen
    - skip_drive
    linkageType: ''
    returnType: void
    signature: void trim_trailing_separator(char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:1158,1
    - Dst: memmove
      Src: /src/postgres/src/port/path.c:1162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - path
    - subdir
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1155
    functionDepth: 0
    functionLinenumber: 1155
    functionLinenumberEnd: 1165
    functionName: append_subdir_to_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 1
    functionsReached:
    - memmove
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      append_subdir_to_path(char *path, char *subdir)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/port/pgcheckdir.c:42,1
    - Dst: readdir
      Src: /src/postgres/src/port/pgcheckdir.c:46,1
    - Dst: strcmp
      Src: /src/postgres/src/port/pgcheckdir.c:48,1
    - Dst: strcmp
      Src: /src/postgres/src/port/pgcheckdir.c:49,1
    - Dst: strcmp
      Src: /src/postgres/src/port/pgcheckdir.c:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 71
    functionName: pg_check_dir
    functionSourceFile: /src/postgres/src/port/pgcheckdir.c
    functionUses: 8
    functionsReached:
    - readdir
    - opendir
    - strcmp
    linkageType: ''
    returnType: int
    signature: int pg_check_dir(const char *dir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dopr
      Src: /src/postgres/src/port/snprintf.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - str
    - count
    - fmt
    - args
    argTypes:
    - char*
    - size_t
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 199
    functionName: pg_vsnprintf
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 0
    functionsReached:
    - dopr
    linkageType: ''
    returnType: int
    signature: int pg_vsnprintf(char *str, size_t count, const char *fmt, va_list
      args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/port/snprintf.c:207,1
    - Dst: pg_vsnprintf
      Src: /src/postgres/src/port/snprintf.c:208,1
    - Dst: va_end
      Src: /src/postgres/src/port/snprintf.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - str
    - count
    - fmt
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 211
    functionName: pg_snprintf
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - va_start
    - va_end
    - pg_vsnprintf
    linkageType: ''
    returnType: int
    signature: int pg_snprintf(char *str, size_t count, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dopr
      Src: /src/postgres/src/port/snprintf.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - str
    - fmt
    - args
    argTypes:
    - char*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 227
    functionName: pg_vsprintf
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 0
    functionsReached:
    - dopr
    linkageType: ''
    returnType: int
    signature: int pg_vsprintf(char *str, const char *fmt, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/port/snprintf.c:235,1
    - Dst: pg_vsprintf
      Src: /src/postgres/src/port/snprintf.c:236,1
    - Dst: va_end
      Src: /src/postgres/src/port/snprintf.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - fmt
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 239
    functionName: pg_sprintf
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 2
    functionsReached:
    - va_start
    - va_end
    - pg_vsprintf
    linkageType: ''
    returnType: int
    signature: int pg_sprintf(char *str, const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dopr
      Src: /src/postgres/src/port/snprintf.c:257,1
    - Dst: flushbuffer
      Src: /src/postgres/src/port/snprintf.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - stream
    - fmt
    - args
    argTypes:
    - FILE*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 261
    functionName: pg_vfprintf
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 0
    functionsReached:
    - dopr
    - flushbuffer
    linkageType: ''
    returnType: int
    signature: int pg_vfprintf(FILE *stream, const char *fmt, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/port/snprintf.c:269,1
    - Dst: pg_vfprintf
      Src: /src/postgres/src/port/snprintf.c:270,1
    - Dst: va_end
      Src: /src/postgres/src/port/snprintf.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - fmt
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 273
    functionName: pg_fprintf
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - pg_vfprintf
    linkageType: ''
    returnType: int
    signature: int pg_fprintf(FILE *stream, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_vfprintf
      Src: /src/postgres/src/port/snprintf.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fmt
    - args
    argTypes:
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 279
    functionName: pg_vprintf
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 0
    functionsReached:
    - pg_vfprintf
    linkageType: ''
    returnType: int
    signature: int pg_vprintf(const char *fmt, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/port/snprintf.c:287,1
    - Dst: pg_vfprintf
      Src: /src/postgres/src/port/snprintf.c:288,1
    - Dst: va_end
      Src: /src/postgres/src/port/snprintf.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 291
    functionName: pg_printf
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - pg_vfprintf
    linkageType: ''
    returnType: int
    signature: int pg_printf(const char *fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/postgres/src/port/snprintf.c:310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - target
    argTypes:
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 316
    functionName: flushbuffer
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - fwrite
    linkageType: ''
    returnType: void
    signature: void flushbuffer(PrintfTarget *target)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - s
    - c
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: strchrnul
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      strchrnul(const char *s, int c)'
  - BBCount: 84
    BranchProfiles: []
    Callsites:
    - Dst: strchrnul
      Src: /src/postgres/src/port/snprintf.c:411,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:414,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:438,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:441,1
    - Dst: strlen
      Src: /src/postgres/src/port/snprintf.c:441,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:498,1
    - Dst: find_arguments
      Src: /src/postgres/src/port/snprintf.c:527,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:609,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:611,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:613,1
    - Dst: fmtint
      Src: /src/postgres/src/port/snprintf.c:615,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:641,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:643,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:645,1
    - Dst: fmtint
      Src: /src/postgres/src/port/snprintf.c:647,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:661,1
    - Dst: fmtchar
      Src: /src/postgres/src/port/snprintf.c:662,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:675,1
    - Dst: fmtstr
      Src: /src/postgres/src/port/snprintf.c:679,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:687,1
    - Dst: fmtptr
      Src: /src/postgres/src/port/snprintf.c:688,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:705,1
    - Dst: fmtfloat
      Src: /src/postgres/src/port/snprintf.c:706,1
    - Dst: strerror_r
      Src: /src/postgres/src/port/snprintf.c:714,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:717,1
    - Dst: strlen
      Src: /src/postgres/src/port/snprintf.c:717,1
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:721,1
    CyclomaticComplexity: 74
    EdgeCount: 74
    ICount: 243
    argCount: 3
    argNames:
    - target
    - format
    - args
    argTypes:
    - PrintfTarget*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 742
    functionName: dopr
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 3
    functionsReached:
    - strerror_r
    - fmtint
    - dopr_outch
    - fmtptr
    - strlen
    - fmtfloat
    - dostr
    - find_arguments
    - strchrnul
    - va_arg
    - fmtstr
    - fmtchar
    linkageType: ''
    returnType: void
    signature: void dopr(PrintfTarget *target, const char *format, va_list args)
  - BBCount: 62
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/port/snprintf.c:778,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:825,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:880,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:892,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:905,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:921,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:953,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:956,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:959,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:962,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:965,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 159
    argCount: 3
    argNames:
    - format
    - args
    - argvalues
    argTypes:
    - char*
    - va_list
    - PrintfArgValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 750
    functionDepth: 0
    functionLinenumber: 750
    functionLinenumberEnd: 971
    functionName: find_arguments
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - Max
    - va_arg
    - strchr
    linkageType: ''
    returnType: bool
    signature: "bool find_arguments(const char *format, va_list args,\n\t\t\t   PrintfArgValue
      *argvalues)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/postgres/src/port/snprintf.c:985,1
    - Dst: strlen
      Src: /src/postgres/src/port/snprintf.c:987,1
    - Dst: compute_padlen
      Src: /src/postgres/src/port/snprintf.c:989,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:993,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:997,1
    - Dst: trailing_pad
      Src: /src/postgres/src/port/snprintf.c:999,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - value
    - leftjust
    - minlen
    - maxwidth
    - pointflag
    - target
    argTypes:
    - char*
    - int
    - int
    - int
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 1000
    functionName: fmtstr
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - strnlen
    - dopr_outchmulti
    - compute_padlen
    - strlen
    - dostr
    - trailing_pad
    linkageType: ''
    returnType: void
    signature: "void fmtstr(const char *value, int leftjust, int minlen, int maxwidth,\n\t
      \  int pointflag, PrintfTarget *target)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/port/snprintf.c:1009,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1013,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - value
    - target
    argTypes:
    - void*
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 1002
    functionDepth: 1
    functionLinenumber: 1002
    functionLinenumberEnd: 1014
    functionName: fmtptr
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - dostr
    - snprintf
    linkageType: ''
    returnType: void
    signature: void fmtptr(const void *value, PrintfTarget *target)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: adjust_sign
      Src: /src/postgres/src/port/snprintf.c:1065,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:1113,1
    - Dst: compute_padlen
      Src: /src/postgres/src/port/snprintf.c:1115,1
    - Dst: leading_pad
      Src: /src/postgres/src/port/snprintf.c:1117,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1120,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1122,1
    - Dst: trailing_pad
      Src: /src/postgres/src/port/snprintf.c:1124,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 9
    argNames:
    - value
    - type
    - forcesign
    - leftjust
    - minlen
    - zpad
    - precision
    - pointflag
    - target
    argTypes:
    - long long
    - char
    - int
    - int
    - int
    - int
    - int
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1016
    functionDepth: 1
    functionLinenumber: 1016
    functionLinenumberEnd: 1125
    functionName: fmtint
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - compute_padlen
    - dopr_outchmulti
    - leading_pad
    - Max
    - dostr
    - adjust_sign
    - trailing_pad
    linkageType: ''
    returnType: void
    signature: "void fmtint(long long value, char type, int forcesign, int leftjust,\n\t
      \  int minlen, int zpad, int precision, int pointflag,\n\t   PrintfTarget *target)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: compute_padlen
      Src: /src/postgres/src/port/snprintf.c:1132,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1136,1
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:1140,1
    - Dst: trailing_pad
      Src: /src/postgres/src/port/snprintf.c:1142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - value
    - leftjust
    - minlen
    - target
    argTypes:
    - int
    - int
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1127
    functionDepth: 1
    functionLinenumber: 1127
    functionLinenumberEnd: 1143
    functionName: fmtchar
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - trailing_pad
    - compute_padlen
    - dopr_outchmulti
    - dopr_outch
    linkageType: ''
    returnType: void
    signature: void fmtchar(int value, int leftjust, int minlen, PrintfTarget *target)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/port/snprintf.c:1177,1
    - Dst: isnan
      Src: /src/postgres/src/port/snprintf.c:1179,1
    - Dst: strcpy
      Src: /src/postgres/src/port/snprintf.c:1181,1
    - Dst: adjust_sign
      Src: /src/postgres/src/port/snprintf.c:1195,1
    - Dst: memcmp
      Src: /src/postgres/src/port/snprintf.c:1197,1
    - Dst: isinf
      Src: /src/postgres/src/port/snprintf.c:1201,1
    - Dst: strcpy
      Src: /src/postgres/src/port/snprintf.c:1203,1
    - Dst: snprintf
      Src: /src/postgres/src/port/snprintf.c:1215,1
    - Dst: snprintf
      Src: /src/postgres/src/port/snprintf.c:1222,1
    - Dst: compute_padlen
      Src: /src/postgres/src/port/snprintf.c:1228,1
    - Dst: leading_pad
      Src: /src/postgres/src/port/snprintf.c:1230,1
    - Dst: strrchr
      Src: /src/postgres/src/port/snprintf.c:1235,1
    - Dst: strrchr
      Src: /src/postgres/src/port/snprintf.c:1238,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1242,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1243,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1244,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1249,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1250,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1256,1
    - Dst: trailing_pad
      Src: /src/postgres/src/port/snprintf.c:1259,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 9
    argNames:
    - value
    - type
    - forcesign
    - leftjust
    - minlen
    - zpad
    - precision
    - pointflag
    - target
    argTypes:
    - double
    - char
    - int
    - int
    - int
    - int
    - int
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1264
    functionName: fmtfloat
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - compute_padlen
    - dopr_outchmulti
    - isnan
    - leading_pad
    - isinf
    - strrchr
    - trailing_pad
    - dostr
    - adjust_sign
    - Min
    - memcmp
    - strcpy
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void fmtfloat(double value, char type, int forcesign, int leftjust,\n\t\t
      int minlen, int zpad, int precision, int pointflag,\n\t\t PrintfTarget *target)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/port/snprintf.c:1285,1
    - Dst: isnan
      Src: /src/postgres/src/port/snprintf.c:1306,1
    - Dst: strcpy
      Src: /src/postgres/src/port/snprintf.c:1308,1
    - Dst: memcmp
      Src: /src/postgres/src/port/snprintf.c:1317,1
    - Dst: isinf
      Src: /src/postgres/src/port/snprintf.c:1323,1
    - Dst: strcpy
      Src: /src/postgres/src/port/snprintf.c:1325,1
    - Dst: snprintf
      Src: /src/postgres/src/port/snprintf.c:1335,1
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:1345,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1347,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 4
    argNames:
    - str
    - count
    - precision
    - value
    argTypes:
    - char*
    - size_t
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1275
    functionDepth: 1
    functionLinenumber: 1275
    functionLinenumberEnd: 1353
    functionName: pg_strfromd
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 0
    functionsReached:
    - memcmp
    - Assert
    - isinf
    - dopr_outch
    - dostr
    - isnan
    - strcpy
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pg_strfromd(char *str, size_t count, int precision, double value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:1362,1
    - Dst: flushbuffer
      Src: /src/postgres/src/port/snprintf.c:1382,1
    - Dst: Min
      Src: /src/postgres/src/port/snprintf.c:1385,1
    - Dst: memmove
      Src: /src/postgres/src/port/snprintf.c:1386,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - str
    - slen
    - target
    argTypes:
    - char*
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1356
    functionDepth: 1
    functionLinenumber: 1356
    functionLinenumberEnd: 1391
    functionName: dostr
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 6
    functionsReached:
    - Min
    - flushbuffer
    - memmove
    - dopr_outch
    linkageType: ''
    returnType: void
    signature: void dostr(const char *str, int slen, PrintfTarget *target)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flushbuffer
      Src: /src/postgres/src/port/snprintf.c:1404,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - c
    - target
    argTypes:
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1393
    functionDepth: 1
    functionLinenumber: 1393
    functionLinenumberEnd: 1407
    functionName: dopr_outch
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 4
    functionsReached:
    - flushbuffer
    linkageType: ''
    returnType: void
    signature: void dopr_outch(int c, PrintfTarget *target)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:1415,1
    - Dst: flushbuffer
      Src: /src/postgres/src/port/snprintf.c:1435,1
    - Dst: Min
      Src: /src/postgres/src/port/snprintf.c:1438,1
    - Dst: memset
      Src: /src/postgres/src/port/snprintf.c:1439,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - c
    - slen
    - target
    argTypes:
    - int
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1409
    functionDepth: 2
    functionLinenumber: 1409
    functionLinenumberEnd: 1443
    functionName: dopr_outchmulti
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 4
    functionsReached:
    - Min
    - flushbuffer
    - memset
    - dopr_outch
    linkageType: ''
    returnType: void
    signature: void dopr_outchmulti(int c, int slen, PrintfTarget *target)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - is_negative
    - forcesign
    - signvalue
    argTypes:
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1446
    functionDepth: 0
    functionLinenumber: 1446
    functionLinenumberEnd: 1457
    functionName: adjust_sign
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int adjust_sign(int is_negative, int forcesign, int *signvalue)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - minlen
    - vallen
    - leftjust
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1460
    functionDepth: 0
    functionLinenumber: 1460
    functionLinenumberEnd: 1471
    functionName: compute_padlen
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int compute_padlen(int minlen, int vallen, int leftjust)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:1483,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1489,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1496,1
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:1501,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 4
    argNames:
    - zpad
    - signvalue
    - padlen
    - target
    argTypes:
    - int
    - int
    - int*
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1474
    functionDepth: 3
    functionLinenumber: 1474
    functionLinenumberEnd: 1507
    functionName: leading_pad
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 2
    functionsReached:
    - dopr_outchmulti
    - dopr_outch
    linkageType: ''
    returnType: void
    signature: void leading_pad(int zpad, int signvalue, int *padlen, PrintfTarget
      *target)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - padlen
    - target
    argTypes:
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1510
    functionDepth: 3
    functionLinenumber: 1510
    functionLinenumberEnd: 1515
    functionName: trailing_pad
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 4
    functionsReached:
    - dopr_outchmulti
    linkageType: ''
    returnType: void
    signature: void trailing_pad(int padlen, PrintfTarget *target)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - is_string
    - ','
    - category
    - ','
    - name
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: LCONV_M
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LCONV_M(is_string, category, name, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - is_string
    - ','
    - category
    - ','
    - name
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: LCONV_M
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LCONV_M(is_string, category, name, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - n
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: LCONV_S
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LCONV_S(c, n, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - c
    - ','
    - n
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: LCONV_C
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LCONV_C(c, n, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: lconv_string_member
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char **

      lconv_string_member(struct lconv *lconv, int i)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lconv
    - i
    argTypes:
    - struct lconv*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: lconv_char_member
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      lconv_char_member(struct lconv *lconv, int i)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/port/pg_localeconv_r.c:106,1
    - Dst: free
      Src: /src/postgres/src/port/pg_localeconv_r.c:108,1
    - Dst: lconv_string_member
      Src: /src/postgres/src/port/pg_localeconv_r.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - lconv
    argTypes:
    - struct lconv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: pg_localeconv_free
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached:
    - free
    - lengthof
    - lconv_string_member
    linkageType: ''
    returnType: void
    signature: void pg_localeconv_free(struct lconv *lconv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/port/pg_localeconv_r.c:120,1
    - Dst: nl_langinfo_l
      Src: /src/postgres/src/port/pg_localeconv_r.c:131,1
    - Dst: strdup
      Src: /src/postgres/src/port/pg_localeconv_r.c:132,1
    - Dst: pg_localeconv_free
      Src: /src/postgres/src/port/pg_localeconv_r.c:134,1
    - Dst: lconv_string_member
      Src: /src/postgres/src/port/pg_localeconv_r.c:138,1
    - Dst: lconv_char_member
      Src: /src/postgres/src/port/pg_localeconv_r.c:142,1
    - Dst: nl_langinfo_l
      Src: /src/postgres/src/port/pg_localeconv_r.c:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - dst
    - monetary_locale
    - numeric_locale
    argTypes:
    - struct lconv*
    - locale_t
    - locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 148
    functionName: pg_localeconv_from_langinfo
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached:
    - nl_langinfo_l
    - pg_localeconv_free
    - lconv_char_member
    - lconv_string_member
    - strdup
    - lengthof
    linkageType: ''
    returnType: int
    signature: "int pg_localeconv_from_langinfo(struct lconv *dst,\n\t\t\t\t\t\t\tlocale_t
      monetary_locale,\n\t\t\t\t\t\t\tlocale_t numeric_locale)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/port/pg_localeconv_r.c:159,1
    - Dst: lconv_string_member
      Src: /src/postgres/src/port/pg_localeconv_r.c:168,1
    - Dst: strdup
      Src: /src/postgres/src/port/pg_localeconv_r.c:169,1
    - Dst: pg_localeconv_free
      Src: /src/postgres/src/port/pg_localeconv_r.c:171,1
    - Dst: lconv_string_member
      Src: /src/postgres/src/port/pg_localeconv_r.c:175,1
    - Dst: lconv_char_member
      Src: /src/postgres/src/port/pg_localeconv_r.c:179,1
    - Dst: lconv_char_member
      Src: /src/postgres/src/port/pg_localeconv_r.c:179,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - dst
    - src
    - category
    argTypes:
    - struct lconv*
    - struct lconv*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 184
    functionName: pg_localeconv_copy_members
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached:
    - pg_localeconv_free
    - lconv_char_member
    - lconv_string_member
    - strdup
    - lengthof
    linkageType: ''
    returnType: int
    signature: "int pg_localeconv_copy_members(struct lconv *dst,\n\t\t\t\t\t\t   struct
      lconv *src,\n\t\t\t\t\t\t   int category)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: _configthreadlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:243,1
    - Dst: _wsetlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:252,1
    - Dst: wcsdup
      Src: /src/postgres/src/port/pg_localeconv_r.c:253,1
    - Dst: _wsetlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:255,1
    - Dst: wcsdup
      Src: /src/postgres/src/port/pg_localeconv_r.c:256,1
    - Dst: _wsetlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:258,1
    - Dst: wcsdup
      Src: /src/postgres/src/port/pg_localeconv_r.c:259,1
    - Dst: memset
      Src: /src/postgres/src/port/pg_localeconv_r.c:262,1
    - Dst: setlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:265,1
    - Dst: pg_localeconv_copy_members
      Src: /src/postgres/src/port/pg_localeconv_r.c:267,1
    - Dst: localeconv
      Src: /src/postgres/src/port/pg_localeconv_r.c:267,1
    - Dst: setlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:272,1
    - Dst: pg_localeconv_copy_members
      Src: /src/postgres/src/port/pg_localeconv_r.c:274,1
    - Dst: localeconv
      Src: /src/postgres/src/port/pg_localeconv_r.c:274,1
    - Dst: _wsetlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:280,1
    - Dst: free
      Src: /src/postgres/src/port/pg_localeconv_r.c:281,1
    - Dst: _wsetlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:285,1
    - Dst: free
      Src: /src/postgres/src/port/pg_localeconv_r.c:286,1
    - Dst: _wsetlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:290,1
    - Dst: free
      Src: /src/postgres/src/port/pg_localeconv_r.c:291,1
    - Dst: _configthreadlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:293,1
    - Dst: newlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:309,1
    - Dst: newlocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:312,1
    - Dst: freelocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:315,1
    - Dst: memset
      Src: /src/postgres/src/port/pg_localeconv_r.c:319,1
    - Dst: pg_localeconv_from_langinfo
      Src: /src/postgres/src/port/pg_localeconv_r.c:322,1
    - Dst: pg_localeconv_copy_members
      Src: /src/postgres/src/port/pg_localeconv_r.c:327,1
    - Dst: localeconv_l
      Src: /src/postgres/src/port/pg_localeconv_r.c:328,1
    - Dst: pg_localeconv_copy_members
      Src: /src/postgres/src/port/pg_localeconv_r.c:333,1
    - Dst: localeconv_l
      Src: /src/postgres/src/port/pg_localeconv_r.c:334,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/port/pg_localeconv_r.c:343,1
    - Dst: uselocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:345,1
    - Dst: pg_localeconv_copy_members
      Src: /src/postgres/src/port/pg_localeconv_r.c:346,1
    - Dst: localeconv
      Src: /src/postgres/src/port/pg_localeconv_r.c:347,1
    - Dst: uselocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:352,1
    - Dst: pg_localeconv_copy_members
      Src: /src/postgres/src/port/pg_localeconv_r.c:353,1
    - Dst: localeconv
      Src: /src/postgres/src/port/pg_localeconv_r.c:354,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/port/pg_localeconv_r.c:357,1
    - Dst: uselocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:359,1
    - Dst: freelocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:363,1
    - Dst: freelocale
      Src: /src/postgres/src/port/pg_localeconv_r.c:364,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 70
    argCount: 3
    argNames:
    - lc_monetary
    - lc_numeric
    - output
    argTypes:
    - char*
    - char*
    - struct lconv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 230
    functionDepth: 3
    functionLinenumber: 230
    functionLinenumberEnd: 368
    functionName: pg_localeconv_r
    functionSourceFile: /src/postgres/src/port/pg_localeconv_r.c
    functionUses: 0
    functionsReached:
    - _configthreadlocale
    - setlocale
    - newlocale
    - wcsdup
    - pthread_mutex_lock
    - uselocale
    - _wsetlocale
    - memset
    - pg_localeconv_copy_members
    - free
    - freelocale
    - pthread_mutex_unlock
    - localeconv
    - localeconv_l
    - pg_localeconv_from_langinfo
    linkageType: ''
    returnType: int
    signature: "int pg_localeconv_r(const char *lc_monetary,\n\t\t\t\tconst char *lc_numeric,\n\t\t\t\tstruct
      lconv *output)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/port/win32env.c:63,1
    - Dst: strchr
      Src: /src/postgres/src/port/win32env.c:66,1
    - Dst: free
      Src: /src/postgres/src/port/win32env.c:69,1
    - Dst: SetEnvironmentVariable
      Src: /src/postgres/src/port/win32env.c:81,1
    - Dst: free
      Src: /src/postgres/src/port/win32env.c:83,1
    - Dst: free
      Src: /src/postgres/src/port/win32env.c:87,1
    - Dst: GetModuleHandleEx
      Src: /src/postgres/src/port/win32env.c:99,1
    - Dst: GetProcAddress
      Src: /src/postgres/src/port/win32env.c:105,1
    - Dst: putenvFunc
      Src: /src/postgres/src/port/win32env.c:107,1
    - Dst: FreeLibrary
      Src: /src/postgres/src/port/win32env.c:108,1
    - Dst: _putenv
      Src: /src/postgres/src/port/win32env.c:117,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - envval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 118
    functionName: pgwin32_putenv
    functionSourceFile: /src/postgres/src/port/win32env.c
    functionUses: 0
    functionsReached:
    - strchr
    - SetEnvironmentVariable
    - FreeLibrary
    - GetModuleHandleEx
    - GetProcAddress
    - putenvFunc
    - free
    - strdup
    - _putenv
    linkageType: ''
    returnType: int
    signature: int pgwin32_putenv(const char *envval)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/port/win32env.c:127,1
    - Dst: getenv
      Src: /src/postgres/src/port/win32env.c:135,1
    - Dst: malloc
      Src: /src/postgres/src/port/win32env.c:138,1
    - Dst: strlen
      Src: /src/postgres/src/port/win32env.c:138,1
    - Dst: strlen
      Src: /src/postgres/src/port/win32env.c:138,1
    - Dst: sprintf
      Src: /src/postgres/src/port/win32env.c:142,1
    - Dst: pgwin32_putenv
      Src: /src/postgres/src/port/win32env.c:144,1
    - Dst: free
      Src: /src/postgres/src/port/win32env.c:145,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - name
    - value
    - overwrite
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 147
    functionName: pgwin32_setenv
    functionSourceFile: /src/postgres/src/port/win32env.c
    functionUses: 0
    functionsReached:
    - strchr
    - pgwin32_putenv
    - getenv
    - strlen
    - malloc
    - free
    - sprintf
    linkageType: ''
    returnType: int
    signature: int pgwin32_setenv(const char *name, const char *value, int overwrite)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/port/win32env.c:156,1
    - Dst: malloc
      Src: /src/postgres/src/port/win32env.c:162,1
    - Dst: strlen
      Src: /src/postgres/src/port/win32env.c:162,1
    - Dst: sprintf
      Src: /src/postgres/src/port/win32env.c:166,1
    - Dst: pgwin32_putenv
      Src: /src/postgres/src/port/win32env.c:167,1
    - Dst: free
      Src: /src/postgres/src/port/win32env.c:168,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 170
    functionName: pgwin32_unsetenv
    functionSourceFile: /src/postgres/src/port/win32env.c
    functionUses: 0
    functionsReached:
    - strchr
    - pgwin32_putenv
    - strlen
    - malloc
    - free
    - sprintf
    linkageType: ''
    returnType: int
    signature: int pgwin32_unsetenv(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: pg_strong_random_init
    functionSourceFile: /src/postgres/src/port/pg_strong_random.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_strong_random_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RAND_status
      Src: /src/postgres/src/port/pg_strong_random.c:81,1
    - Dst: RAND_poll
      Src: /src/postgres/src/port/pg_strong_random.c:87,1
    - Dst: RAND_bytes
      Src: /src/postgres/src/port/pg_strong_random.c:90,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 93
    functionName: pg_strong_random
    functionSourceFile: /src/postgres/src/port/pg_strong_random.c
    functionUses: 2
    functionsReached:
    - RAND_status
    - RAND_bytes
    - RAND_poll
    linkageType: ''
    returnType: bool
    signature: bool pg_strong_random(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: pg_strong_random_init
    functionSourceFile: /src/postgres/src/port/pg_strong_random.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_strong_random_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CryptAcquireContext
      Src: /src/postgres/src/port/pg_strong_random.c:115,1
    - Dst: CryptGenRandom
      Src: /src/postgres/src/port/pg_strong_random.c:131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 135
    functionName: pg_strong_random
    functionSourceFile: /src/postgres/src/port/pg_strong_random.c
    functionUses: 2
    functionsReached:
    - CryptAcquireContext
    - CryptGenRandom
    linkageType: ''
    returnType: bool
    signature: bool pg_strong_random(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 147
    functionName: pg_strong_random_init
    functionSourceFile: /src/postgres/src/port/pg_strong_random.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_strong_random_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/port/pg_strong_random.c:156,1
    - Dst: read
      Src: /src/postgres/src/port/pg_strong_random.c:162,1
    - Dst: close
      Src: /src/postgres/src/port/pg_strong_random.c:168,1
    - Dst: close
      Src: /src/postgres/src/port/pg_strong_random.c:176,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 178
    functionName: pg_strong_random
    functionSourceFile: /src/postgres/src/port/pg_strong_random.c
    functionUses: 2
    functionsReached:
    - open
    - close
    - read
    linkageType: ''
    returnType: bool
    signature: bool pg_strong_random(void *buf, size_t len)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: strcspn
      Src: /src/postgres/src/port/getopt_long.c:128,1
    - Dst: strlen
      Src: /src/postgres/src/port/getopt_long.c:131,1
    - Dst: strncmp
      Src: /src/postgres/src/port/getopt_long.c:132,1
    - Dst: fprintf
      Src: /src/postgres/src/port/getopt_long.c:152,1
    - Dst: fprintf
      Src: /src/postgres/src/port/getopt_long.c:191,1
    - Dst: strchr
      Src: /src/postgres/src/port/getopt_long.c:202,1
    - Dst: fprintf
      Src: /src/postgres/src/port/getopt_long.c:208,1
    - Dst: fprintf
      Src: /src/postgres/src/port/getopt_long.c:229,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 102
    argCount: 5
    argNames:
    - argc
    - argv
    - optstring
    - longopts
    - longindex
    argTypes:
    - int
    - char*[]
    - char*
    - struct option*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 241
    functionName: getopt_long
    functionSourceFile: /src/postgres/src/port/getopt_long.c
    functionUses: 35
    functionsReached:
    - strchr
    - strcspn
    - strncmp
    - strlen
    - fprintf
    linkageType: ''
    returnType: int
    signature: "int getopt_long(int argc, char *const argv[],\n\t\t\tconst char *optstring,\n\t\t\tconst
      struct option *longopts, int *longindex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: SPRINTF
    functionSourceFile: /src/postgres/src/port/inet_net_ntop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPRINTF(x)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inet_net_ntop_ipv4
      Src: /src/postgres/src/port/inet_net_ntop.c:88,1
    - Dst: inet_net_ntop_ipv6
      Src: /src/postgres/src/port/inet_net_ntop.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - af
    - src
    - bits
    - dst
    - size
    argTypes:
    - int
    - void*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 98
    functionName: pg_inet_net_ntop
    functionSourceFile: /src/postgres/src/port/inet_net_ntop.c
    functionUses: 0
    functionsReached:
    - inet_net_ntop_ipv6
    - inet_net_ntop_ipv4
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_inet_net_ntop(int af, const void *src, int bits, char *dst, size_t size)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SPRINTF
      Src: /src/postgres/src/port/inet_net_ntop.c:135,1
    - Dst: SPRINTF
      Src: /src/postgres/src/port/inet_net_ntop.c:144,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - src
    - bits
    - dst
    - size
    argTypes:
    - u_char*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 152
    functionName: inet_net_ntop_ipv4
    functionSourceFile: /src/postgres/src/port/inet_net_ntop.c
    functionUses: 1
    functionsReached:
    - SPRINTF
    linkageType: ''
    returnType: char
    signature: 'char *

      inet_net_ntop_ipv4(const u_char *src, int bits, char *dst, size_t size)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SPRINTF
      Src: /src/postgres/src/port/inet_net_ntop.c:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - src
    - bytes
    - dst
    - size
    argTypes:
    - u_char*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 175
    functionName: decoct
    functionSourceFile: /src/postgres/src/port/inet_net_ntop.c
    functionUses: 0
    functionsReached:
    - SPRINTF
    linkageType: ''
    returnType: int
    signature: int decoct(const u_char *src, int bytes, char *dst, size_t size)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/port/inet_net_ntop.c:207,1
    - Dst: decoct
      Src: /src/postgres/src/port/inet_net_ntop.c:265,1
    - Dst: strlen
      Src: /src/postgres/src/port/inet_net_ntop.c:271,1
    - Dst: SPRINTF
      Src: /src/postgres/src/port/inet_net_ntop.c:274,1
    - Dst: SPRINTF
      Src: /src/postgres/src/port/inet_net_ntop.c:284,1
    - Dst: strcpy
      Src: /src/postgres/src/port/inet_net_ntop.c:294,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 62
    argCount: 4
    argNames:
    - src
    - bits
    - dst
    - size
    argTypes:
    - u_char*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 296
    functionName: inet_net_ntop_ipv6
    functionSourceFile: /src/postgres/src/port/inet_net_ntop.c
    functionUses: 1
    functionsReached:
    - decoct
    - strlen
    - memset
    - strcpy
    - SPRINTF
    linkageType: ''
    returnType: char
    signature: 'char *

      inet_net_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - mask
    argTypes:
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: mask_available
    functionSourceFile: /src/postgres/src/port/pg_cpu_x86.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mask_available(uint32 value, uint32 mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/port/pg_cpu_x86.c:70,1
    - Dst: __get_cpuid
      Src: /src/postgres/src/port/pg_cpu_x86.c:72,1
    - Dst: __cpuid
      Src: /src/postgres/src/port/pg_cpu_x86.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - leaf
    - reg
    argTypes:
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: pg_cpuid
    functionSourceFile: /src/postgres/src/port/pg_cpu_x86.c
    functionUses: 0
    functionsReached:
    - __cpuid
    - memset
    - __get_cpuid
    linkageType: ''
    returnType: void
    signature: void pg_cpuid(int leaf, unsigned int *reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/port/pg_cpu_x86.c:86,1
    - Dst: __get_cpuid_count
      Src: /src/postgres/src/port/pg_cpu_x86.c:88,1
    - Dst: __cpuidex
      Src: /src/postgres/src/port/pg_cpu_x86.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - leaf
    - subleaf
    - reg
    argTypes:
    - int
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 95
    functionName: pg_cpuid_subleaf
    functionSourceFile: /src/postgres/src/port/pg_cpu_x86.c
    functionUses: 0
    functionsReached:
    - __cpuidex
    - memset
    - __get_cpuid_count
    linkageType: ''
    returnType: bool
    signature: bool pg_cpuid_subleaf(int leaf, int subleaf, unsigned int *reg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_cpuid
      Src: /src/postgres/src/port/pg_cpu_x86.c:109,1
    - Dst: pg_cpuid_subleaf
      Src: /src/postgres/src/port/pg_cpu_x86.c:116,1
    - Dst: _xgetbv
      Src: /src/postgres/src/port/pg_cpu_x86.c:127,1
    - Dst: mask_available
      Src: /src/postgres/src/port/pg_cpu_x86.c:131,1
    - Dst: mask_available
      Src: /src/postgres/src/port/pg_cpu_x86.c:135,1
    - Dst: pg_cpuid
      Src: /src/postgres/src/port/pg_cpu_x86.c:147,1
    - Dst: pg_cpuid
      Src: /src/postgres/src/port/pg_cpu_x86.c:150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 154
    functionName: set_x86_features
    functionSourceFile: /src/postgres/src/port/pg_cpu_x86.c
    functionUses: 0
    functionsReached:
    - mask_available
    - _xgetbv
    - pg_cpuid_subleaf
    - pg_cpuid
    linkageType: ''
    returnType: void
    signature: void set_x86_features(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: x86_feature_available
      Src: /src/postgres/src/port/pg_cpu_x86.c:182,1
    - Dst: x86_hypervisor_tsc_frequency_khz
      Src: /src/postgres/src/port/pg_cpu_x86.c:184,1
    - Dst: strlcat
      Src: /src/postgres/src/port/pg_cpu_x86.c:188,1
    - Dst: strlcat
      Src: /src/postgres/src/port/pg_cpu_x86.c:190,1
    - Dst: pg_cpuid
      Src: /src/postgres/src/port/pg_cpu_x86.c:216,1
    - Dst: strlcat
      Src: /src/postgres/src/port/pg_cpu_x86.c:227,1
    - Dst: pg_cpuid
      Src: /src/postgres/src/port/pg_cpu_x86.c:237,1
    - Dst: strlcat
      Src: /src/postgres/src/port/pg_cpu_x86.c:241,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - source
    - source_size
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 247
    functionName: x86_tsc_frequency_khz
    functionSourceFile: /src/postgres/src/port/pg_cpu_x86.c
    functionUses: 0
    functionsReached:
    - x86_hypervisor_tsc_frequency_khz
    - x86_feature_available
    - strlcat
    - pg_cpuid
    linkageType: ''
    returnType: uint32
    signature: uint32 x86_tsc_frequency_khz(char *source, size_t source_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: CPUID_HYPERVISOR_VMWARE
    functionSourceFile: /src/postgres/src/port/pg_cpu_x86.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CPUID_HYPERVISOR_VMWARE(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 262
    functionName: CPUID_HYPERVISOR_KVM
    functionSourceFile: /src/postgres/src/port/pg_cpu_x86.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CPUID_HYPERVISOR_KVM(r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __cpuidex
      Src: /src/postgres/src/port/pg_cpu_x86.c:277,1
    - Dst: CPUID_HYPERVISOR_VMWARE
      Src: /src/postgres/src/port/pg_cpu_x86.c:279,1
    - Dst: CPUID_HYPERVISOR_KVM
      Src: /src/postgres/src/port/pg_cpu_x86.c:279,1
    - Dst: __cpuidex
      Src: /src/postgres/src/port/pg_cpu_x86.c:281,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 288
    functionName: x86_hypervisor_tsc_frequency_khz
    functionSourceFile: /src/postgres/src/port/pg_cpu_x86.c
    functionUses: 1
    functionsReached:
    - __cpuidex
    - CPUID_HYPERVISOR_KVM
    - CPUID_HYPERVISOR_VMWARE
    linkageType: ''
    returnType: uint32
    signature: uint32 x86_hypervisor_tsc_frequency_khz(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _get_osfhandle
      Src: /src/postgres/src/port/win32fdatasync.c:29,1
    - Dst: initialize_ntdll
      Src: /src/postgres/src/port/win32fdatasync.c:36,1
    - Dst: memset
      Src: /src/postgres/src/port/win32fdatasync.c:39,1
    - Dst: pg_NtFlushBuffersFileEx
      Src: /src/postgres/src/port/win32fdatasync.c:40,1
    - Dst: NT_SUCCESS
      Src: /src/postgres/src/port/win32fdatasync.c:46,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32fdatasync.c:49,1
    - Dst: pg_RtlNtStatusToDosError
      Src: /src/postgres/src/port/win32fdatasync.c:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 51
    functionName: fdatasync
    functionSourceFile: /src/postgres/src/port/win32fdatasync.c
    functionUses: 1
    functionsReached:
    - NT_SUCCESS
    - pg_RtlNtStatusToDosError
    - pg_NtFlushBuffersFileEx
    - _get_osfhandle
    - memset
    - _dosmaperr
    - initialize_ntdll
    linkageType: ''
    returnType: int
    signature: int fdatasync(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/port/qsort.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 22
    functionName: pg_qsort_strcmp
    functionSourceFile: /src/postgres/src/port/qsort.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int pg_qsort_strcmp(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32dlopen.c:23,1
    - Dst: FormatMessage
      Src: /src/postgres/src/port/win32dlopen.c:25,1
    - Dst: MAKELANGID
      Src: /src/postgres/src/port/win32dlopen.c:29,1
    - Dst: snprintf
      Src: /src/postgres/src/port/win32dlopen.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 37
    functionName: set_dl_error
    functionSourceFile: /src/postgres/src/port/win32dlopen.c
    functionUses: 0
    functionsReached:
    - GetLastError
    - FormatMessage
    - MAKELANGID
    - snprintf
    linkageType: ''
    returnType: void
    signature: void set_dl_error(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: dlerror
    functionSourceFile: /src/postgres/src/port/win32dlopen.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      dlerror(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FreeLibrary
      Src: /src/postgres/src/port/win32dlopen.c:51,1
    - Dst: set_dl_error
      Src: /src/postgres/src/port/win32dlopen.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - handle
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 58
    functionName: dlclose
    functionSourceFile: /src/postgres/src/port/win32dlopen.c
    functionUses: 0
    functionsReached:
    - set_dl_error
    - FreeLibrary
    linkageType: ''
    returnType: int
    signature: int dlclose(void *handle)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetProcAddress
      Src: /src/postgres/src/port/win32dlopen.c:65,1
    - Dst: set_dl_error
      Src: /src/postgres/src/port/win32dlopen.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - handle
    - symbol
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 73
    functionName: dlsym
    functionSourceFile: /src/postgres/src/port/win32dlopen.c
    functionUses: 0
    functionsReached:
    - GetProcAddress
    - set_dl_error
    linkageType: ''
    returnType: void
    signature: 'void *

      dlsym(void *handle, const char *symbol)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SetErrorMode
      Src: /src/postgres/src/port/win32dlopen.c:82,1
    - Dst: LoadLibrary
      Src: /src/postgres/src/port/win32dlopen.c:83,1
    - Dst: SetErrorMode
      Src: /src/postgres/src/port/win32dlopen.c:84,1
    - Dst: set_dl_error
      Src: /src/postgres/src/port/win32dlopen.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - file
    - mode
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 93
    functionName: dlopen
    functionSourceFile: /src/postgres/src/port/win32dlopen.c
    functionUses: 0
    functionsReached:
    - SetErrorMode
    - set_dl_error
    - LoadLibrary
    linkageType: ''
    returnType: void
    signature: 'void *

      dlopen(const char *file, int mode)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/pgmkdirp.c:70,1
    - Dst: strchr
      Src: /src/postgres/src/port/pgmkdirp.c:75,1
    - Dst: umask
      Src: /src/postgres/src/port/pgmkdirp.c:102,1
    - Dst: umask
      Src: /src/postgres/src/port/pgmkdirp.c:104,1
    - Dst: umask
      Src: /src/postgres/src/port/pgmkdirp.c:119,1
    - Dst: mkdir
      Src: /src/postgres/src/port/pgmkdirp.c:121,1
    - Dst: stat
      Src: /src/postgres/src/port/pgmkdirp.c:132,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/pgmkdirp.c:133,1
    - Dst: GetFileAttributes
      Src: /src/postgres/src/port/pgmkdirp.c:149,1
    - Dst: umask
      Src: /src/postgres/src/port/pgmkdirp.c:166,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 46
    argCount: 2
    argNames:
    - path
    - omode
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 169
    functionName: pg_mkdir_p
    functionSourceFile: /src/postgres/src/port/pgmkdirp.c
    functionUses: 8
    functionsReached:
    - strchr
    - GetFileAttributes
    - stat
    - mkdir
    - strlen
    - S_ISDIR
    - umask
    linkageType: ''
    returnType: int
    signature: int pg_mkdir_p(char *path, int omode)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/port/strtof.c:45,1
    - Dst: isinf
      Src: /src/postgres/src/port/strtof.c:46,1
    - Dst: strtod
      Src: /src/postgres/src/port/strtof.c:62,1
    - Dst: isinf
      Src: /src/postgres/src/port/strtof.c:70,1
    - Dst: isinf
      Src: /src/postgres/src/port/strtof.c:70,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 27
    argCount: 2
    argNames:
    - nptr
    - endptr
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 89
    functionName: pg_strtof
    functionSourceFile: /src/postgres/src/port/strtof.c
    functionUses: 0
    functionsReached:
    - strtod
    - isnan
    - isinf
    linkageType: ''
    returnType: float
    signature: float pg_strtof(const char *nptr, char **endptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/port/win32security.c:32,1
    - Dst: vwrite_stderr
      Src: /src/postgres/src/port/win32security.c:34,1
    - Dst: vfprintf
      Src: /src/postgres/src/port/win32security.c:36,1
    - Dst: va_end
      Src: /src/postgres/src/port/win32security.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 39
    functionName: log_error
    functionSourceFile: /src/postgres/src/port/win32security.c
    functionUses: 255
    functionsReached:
    - va_start
    - vfprintf
    - vwrite_stderr
    - va_end
    linkageType: ''
    returnType: void
    signature: void log_error(const char *fmt, ...)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/port/win32security.c:57,1
    - Dst: log_error
      Src: /src/postgres/src/port/win32security.c:62,1
    - Dst: _
      Src: /src/postgres/src/port/win32security.c:62,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32security.c:63,1
    - Dst: exit
      Src: /src/postgres/src/port/win32security.c:64,1
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/port/win32security.c:67,1
    - Dst: log_error
      Src: /src/postgres/src/port/win32security.c:72,1
    - Dst: _
      Src: /src/postgres/src/port/win32security.c:72,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32security.c:73,1
    - Dst: exit
      Src: /src/postgres/src/port/win32security.c:74,1
    - Dst: CheckTokenMembership
      Src: /src/postgres/src/port/win32security.c:77,1
    - Dst: CheckTokenMembership
      Src: /src/postgres/src/port/win32security.c:78,1
    - Dst: log_error
      Src: /src/postgres/src/port/win32security.c:80,1
    - Dst: _
      Src: /src/postgres/src/port/win32security.c:80,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32security.c:81,1
    - Dst: exit
      Src: /src/postgres/src/port/win32security.c:82,1
    - Dst: FreeSid
      Src: /src/postgres/src/port/win32security.c:85,1
    - Dst: FreeSid
      Src: /src/postgres/src/port/win32security.c:86,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 92
    functionName: pgwin32_is_admin
    functionSourceFile: /src/postgres/src/port/win32security.c
    functionUses: 0
    functionsReached:
    - _
    - FreeSid
    - GetLastError
    - AllocateAndInitializeSid
    - log_error
    - CheckTokenMembership
    - exit
    linkageType: ''
    returnType: int
    signature: int pgwin32_is_admin(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: GetStdHandle
      Src: /src/postgres/src/port/win32security.c:134,1
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/port/win32security.c:142,1
    - Dst: fprintf
      Src: /src/postgres/src/port/win32security.c:146,1
    - Dst: CheckTokenMembership
      Src: /src/postgres/src/port/win32security.c:150,1
    - Dst: fprintf
      Src: /src/postgres/src/port/win32security.c:152,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32security.c:153,1
    - Dst: FreeSid
      Src: /src/postgres/src/port/win32security.c:154,1
    - Dst: FreeSid
      Src: /src/postgres/src/port/win32security.c:157,1
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/port/win32security.c:166,1
    - Dst: fprintf
      Src: /src/postgres/src/port/win32security.c:170,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32security.c:171,1
    - Dst: CheckTokenMembership
      Src: /src/postgres/src/port/win32security.c:175,1
    - Dst: fprintf
      Src: /src/postgres/src/port/win32security.c:177,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32security.c:178,1
    - Dst: FreeSid
      Src: /src/postgres/src/port/win32security.c:179,1
    - Dst: FreeSid
      Src: /src/postgres/src/port/win32security.c:182,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 190
    functionName: pgwin32_is_service
    functionSourceFile: /src/postgres/src/port/win32security.c
    functionUses: 1
    functionsReached:
    - FreeSid
    - GetLastError
    - AllocateAndInitializeSid
    - CheckTokenMembership
    - GetStdHandle
    - fprintf
    linkageType: ''
    returnType: int
    signature: int pgwin32_is_service(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetFileType
      Src: /src/postgres/src/port/win32common.c:49,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32common.c:50,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32common.c:59,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - hFile
    argTypes:
    - HANDLE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 64
    functionName: pgwin32_get_file_type
    functionSourceFile: /src/postgres/src/port/win32common.c
    functionUses: 3
    functionsReached:
    - GetLastError
    - _dosmaperr
    - GetFileType
    linkageType: ''
    returnType: DWORD
    signature: DWORD pgwin32_get_file_type(HANDLE hFile)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/postgres/src/port/getpeereid.c:40,1
    - Dst: getsockopt
      Src: /src/postgres/src/port/getpeereid.c:51,1
    - Dst: getpeerucred
      Src: /src/postgres/src/port/getpeereid.c:63,1
    - Dst: ucred_geteuid
      Src: /src/postgres/src/port/getpeereid.c:66,1
    - Dst: ucred_getegid
      Src: /src/postgres/src/port/getpeereid.c:67,1
    - Dst: ucred_free
      Src: /src/postgres/src/port/getpeereid.c:68,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 3
    argNames:
    - sock
    - uid
    - gid
    argTypes:
    - int
    - uid_t*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 78
    functionName: getpeereid
    functionSourceFile: /src/postgres/src/port/getpeereid.c
    functionUses: 0
    functionsReached:
    - getpeerucred
    - ucred_geteuid
    - getsockopt
    - ucred_getegid
    - ucred_free
    linkageType: ''
    returnType: int
    signature: int getpeereid(int sock, uid_t *uid, gid_t *gid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_memcmp
      Src: /src/postgres/src/port/timingsafe_bcmp.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - b1
    - b2
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 43
    functionName: timingsafe_bcmp
    functionSourceFile: /src/postgres/src/port/timingsafe_bcmp.c
    functionUses: 0
    functionsReached:
    - CRYPTO_memcmp
    linkageType: ''
    returnType: int
    signature: int timingsafe_bcmp(const void *b1, const void *b2, size_t n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LoadLibraryEx
      Src: /src/postgres/src/port/win32ntdll.c:46,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32ntdll.c:48,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32ntdll.c:48,1
    - Dst: lengthof
      Src: /src/postgres/src/port/win32ntdll.c:52,1
    - Dst: GetProcAddress
      Src: /src/postgres/src/port/win32ntdll.c:56,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32ntdll.c:59,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32ntdll.c:59,1
    - Dst: FreeLibrary
      Src: /src/postgres/src/port/win32ntdll.c:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 71
    functionName: initialize_ntdll
    functionSourceFile: /src/postgres/src/port/win32ntdll.c
    functionUses: 2
    functionsReached:
    - LoadLibraryEx
    - FreeLibrary
    - GetLastError
    - GetProcAddress
    - _dosmaperr
    - lengthof
    linkageType: ''
    returnType: int
    signature: int initialize_ntdll(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/port/win32gettimeofday.c:64,1
    - Dst: GetSystemTimePreciseAsFileTime
      Src: /src/postgres/src/port/win32gettimeofday.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - tp
    - tzp
    argTypes:
    - struct timeval*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 75
    functionName: gettimeofday
    functionSourceFile: /src/postgres/src/port/win32gettimeofday.c
    functionUses: 8
    functionsReached:
    - Assert
    - GetSystemTimePreciseAsFileTime
    linkageType: ''
    returnType: int
    signature: int gettimeofday(struct timeval *tp, void *tzp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: x86_feature_available
      Src: /src/postgres/src/port/pg_popcount_x86.c:64,1
    - Dst: x86_feature_available
      Src: /src/postgres/src/port/pg_popcount_x86.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: pg_popcount_avx512_available
    functionSourceFile: /src/postgres/src/port/pg_popcount_x86.c
    functionUses: 0
    functionsReached:
    - x86_feature_available
    linkageType: ''
    returnType: bool
    signature: bool pg_popcount_avx512_available(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: x86_feature_available
      Src: /src/postgres/src/port/pg_popcount_x86.c:79,1
    - Dst: pg_popcount_avx512_available
      Src: /src/postgres/src/port/pg_popcount_x86.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: choose_popcount_functions
    functionSourceFile: /src/postgres/src/port/pg_popcount_x86.c
    functionUses: 2
    functionsReached:
    - x86_feature_available
    - pg_popcount_avx512_available
    linkageType: ''
    returnType: void
    signature: void choose_popcount_functions(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: choose_popcount_functions
      Src: /src/postgres/src/port/pg_popcount_x86.c:102,1
    - Dst: pg_popcount_optimized
      Src: /src/postgres/src/port/pg_popcount_x86.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: pg_popcount_choose
    functionSourceFile: /src/postgres/src/port/pg_popcount_x86.c
    functionUses: 0
    functionsReached:
    - choose_popcount_functions
    - pg_popcount_optimized
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_choose(const char *buf, int bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: choose_popcount_functions
      Src: /src/postgres/src/port/pg_popcount_x86.c:109,1
    - Dst: pg_popcount_masked
      Src: /src/postgres/src/port/pg_popcount_x86.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 111
    functionName: pg_popcount_masked_choose
    functionSourceFile: /src/postgres/src/port/pg_popcount_x86.c
    functionUses: 0
    functionsReached:
    - choose_popcount_functions
    - pg_popcount_masked
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_choose(const char *buf, int bytes, uint8
      mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _mm512_setzero_si512
      Src: /src/postgres/src/port/pg_popcount_x86.c:125,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_x86.c:128,1
    - Dst: TYPEALIGN_DOWN
      Src: /src/postgres/src/port/pg_popcount_x86.c:137,1
    - Dst: TYPEALIGN_DOWN
      Src: /src/postgres/src/port/pg_popcount_x86.c:138,1
    - Dst: _mm512_maskz_loadu_epi8
      Src: /src/postgres/src/port/pg_popcount_x86.c:146,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:147,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:148,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_x86.c:151,1
    - Dst: _mm512_load_si512
      Src: /src/postgres/src/port/pg_popcount_x86.c:155,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:156,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:157,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_x86.c:162,1
    - Dst: _mm512_maskz_loadu_epi8
      Src: /src/postgres/src/port/pg_popcount_x86.c:164,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:165,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:166,1
    - Dst: _mm512_reduce_add_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 169
    functionName: pg_popcount_avx512
    functionSourceFile: /src/postgres/src/port/pg_popcount_x86.c
    functionUses: 0
    functionsReached:
    - _mm512_load_si512
    - _mm512_reduce_add_epi64
    - _mm512_add_epi64
    - _mm512_popcnt_epi64
    - TYPEALIGN_DOWN
    - _mm512_setzero_si512
    - _mm512_maskz_loadu_epi8
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_avx512(const char *buf, int bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _mm512_setzero_si512
      Src: /src/postgres/src/port/pg_popcount_x86.c:182,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_x86.c:185,1
    - Dst: _mm512_set1_epi8
      Src: /src/postgres/src/port/pg_popcount_x86.c:186,1
    - Dst: TYPEALIGN_DOWN
      Src: /src/postgres/src/port/pg_popcount_x86.c:195,1
    - Dst: TYPEALIGN_DOWN
      Src: /src/postgres/src/port/pg_popcount_x86.c:196,1
    - Dst: _mm512_maskz_loadu_epi8
      Src: /src/postgres/src/port/pg_popcount_x86.c:204,1
    - Dst: _mm512_and_si512
      Src: /src/postgres/src/port/pg_popcount_x86.c:205,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:206,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:207,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_x86.c:210,1
    - Dst: _mm512_load_si512
      Src: /src/postgres/src/port/pg_popcount_x86.c:214,1
    - Dst: _mm512_and_si512
      Src: /src/postgres/src/port/pg_popcount_x86.c:215,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:216,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:217,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_x86.c:222,1
    - Dst: _mm512_maskz_loadu_epi8
      Src: /src/postgres/src/port/pg_popcount_x86.c:224,1
    - Dst: _mm512_and_si512
      Src: /src/postgres/src/port/pg_popcount_x86.c:225,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:226,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:227,1
    - Dst: _mm512_reduce_add_epi64
      Src: /src/postgres/src/port/pg_popcount_x86.c:229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 230
    functionName: pg_popcount_masked_avx512
    functionSourceFile: /src/postgres/src/port/pg_popcount_x86.c
    functionUses: 0
    functionsReached:
    - _mm512_set1_epi8
    - _mm512_load_si512
    - _mm512_reduce_add_epi64
    - _mm512_add_epi64
    - _mm512_and_si512
    - _mm512_popcnt_epi64
    - TYPEALIGN_DOWN
    - _mm512_setzero_si512
    - _mm512_maskz_loadu_epi8
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_avx512(const char *buf, int bytes, uint8
      mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __popcnt64
      Src: /src/postgres/src/port/pg_popcount_x86.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 249
    functionName: pg_popcount64_sse42
    functionSourceFile: /src/postgres/src/port/pg_popcount_x86.c
    functionUses: 0
    functionsReached:
    - __popcnt64
    linkageType: ''
    returnType: int
    signature: int pg_popcount64_sse42(uint64 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount64_sse42
      Src: /src/postgres/src/port/pg_popcount_x86.c:264,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 275
    functionName: pg_popcount_sse42
    functionSourceFile: /src/postgres/src/port/pg_popcount_x86.c
    functionUses: 0
    functionsReached:
    - pg_popcount64_sse42
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_sse42(const char *buf, int bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_x86.c:286,1
    - Dst: pg_popcount64_sse42
      Src: /src/postgres/src/port/pg_popcount_x86.c:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 302
    functionName: pg_popcount_masked_sse42
    functionSourceFile: /src/postgres/src/port/pg_popcount_x86.c
    functionUses: 0
    functionsReached:
    - pg_popcount64_sse42
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_sse42(const char *buf, int bytes, uint8 mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - nargc
    - nargv
    - ostr
    argTypes:
    - pg_getopt_ctx*
    - int
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 66
    functionName: pg_getopt_start
    functionSourceFile: /src/postgres/src/port/pg_getopt_ctx.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_getopt_start(pg_getopt_ctx *ctx, int nargc, char *const *nargv,
      const char *ostr)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/port/pg_getopt_ctx.c:91,1
    - Dst: fprintf
      Src: /src/postgres/src/port/pg_getopt_ctx.c:104,1
    - Dst: fprintf
      Src: /src/postgres/src/port/pg_getopt_ctx.c:124,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 43
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_getopt_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 136
    functionName: pg_getopt_next
    functionSourceFile: /src/postgres/src/port/pg_getopt_ctx.c
    functionUses: 1
    functionsReached:
    - fprintf
    - strchr
    linkageType: ''
    returnType: int
    signature: int pg_getopt_next(pg_getopt_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetFileAttributes
      Src: /src/postgres/src/port/dirent.c:39,1
    - Dst: malloc
      Src: /src/postgres/src/port/dirent.c:51,1
    - Dst: malloc
      Src: /src/postgres/src/port/dirent.c:57,1
    - Dst: strlen
      Src: /src/postgres/src/port/dirent.c:57,1
    - Dst: free
      Src: /src/postgres/src/port/dirent.c:61,1
    - Dst: strcpy
      Src: /src/postgres/src/port/dirent.c:64,1
    - Dst: strlen
      Src: /src/postgres/src/port/dirent.c:65,1
    - Dst: strlen
      Src: /src/postgres/src/port/dirent.c:66,1
    - Dst: strcat
      Src: /src/postgres/src/port/dirent.c:67,1
    - Dst: strcat
      Src: /src/postgres/src/port/dirent.c:68,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - dirname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 75
    functionName: opendir
    functionSourceFile: /src/postgres/src/port/dirent.c
    functionUses: 16
    functionsReached:
    - strcat
    - GetFileAttributes
    - free
    - malloc
    - strlen
    - strcpy
    linkageType: ''
    returnType: DIR
    signature: 'DIR *

      opendir(const char *dirname)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: FindFirstFile
      Src: /src/postgres/src/port/dirent.c:84,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirent.c:88,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/dirent.c:91,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirent.c:91,1
    - Dst: FindNextFile
      Src: /src/postgres/src/port/dirent.c:97,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirent.c:100,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/dirent.c:103,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/dirent.c:103,1
    - Dst: strcpy
      Src: /src/postgres/src/port/dirent.c:107,1
    - Dst: strlen
      Src: /src/postgres/src/port/dirent.c:108,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - d
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 124
    functionName: readdir
    functionSourceFile: /src/postgres/src/port/dirent.c
    functionUses: 15
    functionsReached:
    - FindFirstFile
    - FindNextFile
    - GetLastError
    - _dosmaperr
    - strlen
    - strcpy
    linkageType: ''
    returnType: struct dirent
    signature: 'struct dirent *

      readdir(DIR *d)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FindClose
      Src: /src/postgres/src/port/dirent.c:132,1
    - Dst: free
      Src: /src/postgres/src/port/dirent.c:133,1
    - Dst: free
      Src: /src/postgres/src/port/dirent.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - d
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 137
    functionName: closedir
    functionSourceFile: /src/postgres/src/port/dirent.c
    functionUses: 15
    functionsReached:
    - FindClose
    - free
    linkageType: ''
    returnType: int
    signature: int closedir(DIR *d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nanosleep
      Src: /src/postgres/src/port/pgsleep.c:50,1
    - Dst: SleepEx
      Src: /src/postgres/src/port/pgsleep.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - microsec
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 55
    functionName: pg_usleep
    functionSourceFile: /src/postgres/src/port/pgsleep.c
    functionUses: 19
    functionsReached:
    - nanosleep
    - SleepEx
    linkageType: ''
    returnType: void
    signature: void pg_usleep(long microsec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _mm_crc32_u64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:45,1
    - Dst: _mm_crc32_u32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:52,1
    - Dst: _mm_crc32_u32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:63,1
    - Dst: _mm_crc32_u8
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 76
    functionName: pg_comp_crc32c_sse42
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sse42.c
    functionUses: 0
    functionsReached:
    - _mm_crc32_u32
    - _mm_crc32_u8
    - _mm_crc32_u64
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: clmul_lo
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sse42.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: clmul_lo(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: clmul_hi
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sse42.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: clmul_hi(a, b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:105,1
    - Dst: _mm_crc32_u8
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:108,1
    - Dst: _mm_crc32_u64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:111,1
    - Dst: _mm512_loadu_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:124,1
    - Dst: _mm512_broadcast_i32x4
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:128,1
    - Dst: _mm_setr_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:128,1
    - Dst: _mm512_xor_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:129,1
    - Dst: _mm512_zextsi128_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:129,1
    - Dst: _mm_cvtsi32_si128
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:129,1
    - Dst: clmul_lo
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:135,1
    - Dst: clmul_hi
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:135,1
    - Dst: _mm512_ternarylogic_epi64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:136,1
    - Dst: _mm512_loadu_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:137,1
    - Dst: _mm512_setr_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:143,1
    - Dst: clmul_lo
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:147,1
    - Dst: clmul_hi
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:147,1
    - Dst: _mm512_xor_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:148,1
    - Dst: _mm_ternarylogic_epi64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:149,1
    - Dst: _mm512_castsi512_si128
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:149,1
    - Dst: _mm512_extracti32x4_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:150,1
    - Dst: _mm512_extracti32x4_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:151,1
    - Dst: _mm_xor_si128
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:153,1
    - Dst: _mm512_extracti32x4_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:153,1
    - Dst: _mm_crc32_u64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:156,1
    - Dst: _mm_extract_epi64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:156,1
    - Dst: _mm_crc32_u64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:157,1
    - Dst: _mm_extract_epi64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:157,1
    - Dst: pg_comp_crc32c_sse42
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:161,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 162
    functionName: pg_comp_crc32c_avx512
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sse42.c
    functionUses: 0
    functionsReached:
    - _mm512_xor_si512
    - clmul_lo
    - clmul_hi
    - _mm512_loadu_si512
    - _mm_cvtsi32_si128
    - _mm512_setr_epi32
    - _mm512_broadcast_i32x4
    - _mm_setr_epi32
    - _mm_ternarylogic_epi64
    - _mm512_ternarylogic_epi64
    - pg_comp_crc32c_sse42
    - _mm512_castsi512_si128
    - unlikely
    - _mm_xor_si128
    - _mm_crc32_u8
    - _mm512_zextsi128_si512
    - _mm_extract_epi64
    - _mm512_extracti32x4_epi32
    - _mm_crc32_u64
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_avx512(pg_crc32c crc, const void *data, size_t
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: x86_feature_available
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:181,1
    - Dst: x86_feature_available
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:185,1
    - Dst: x86_feature_available
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:186,1
    - Dst: pg_comp_crc32c
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 191
    functionName: pg_comp_crc32c_choose
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sse42.c
    functionUses: 0
    functionsReached:
    - x86_feature_available
    - pg_comp_crc32c
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_choose(pg_crc32c crc, const void *data, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strsignal
      Src: /src/postgres/src/port/pgstrsignal.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - signum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 61
    functionName: pg_strsignal
    functionSourceFile: /src/postgres/src/port/pgstrsignal.c
    functionUses: 2
    functionsReached:
    - strsignal
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_strsignal(int signum)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/port/pgstrcasecmp.c:43,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:43,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:44,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/port/pgstrcasecmp.c:48,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:48,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:49,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 58
    functionName: pg_strcasecmp
    functionSourceFile: /src/postgres/src/port/pgstrcasecmp.c
    functionUses: 39
    functionsReached:
    - IS_HIGHBIT_SET
    - tolower
    - isupper
    linkageType: ''
    returnType: int
    signature: int pg_strcasecmp(const char *s1, const char *s2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/port/pgstrcasecmp.c:76,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:76,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:77,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/port/pgstrcasecmp.c:81,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:81,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:82,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 3
    argNames:
    - s1
    - s2
    - n
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 91
    functionName: pg_strncasecmp
    functionSourceFile: /src/postgres/src/port/pgstrcasecmp.c
    functionUses: 13
    functionsReached:
    - IS_HIGHBIT_SET
    - tolower
    - isupper
    linkageType: ''
    returnType: int
    signature: int pg_strncasecmp(const char *s1, const char *s2, size_t n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/port/pgstrcasecmp.c:105,1
    - Dst: islower
      Src: /src/postgres/src/port/pgstrcasecmp.c:105,1
    - Dst: toupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: pg_toupper
    functionSourceFile: /src/postgres/src/port/pgstrcasecmp.c
    functionUses: 2
    functionsReached:
    - IS_HIGHBIT_SET
    - islower
    - toupper
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char pg_toupper(unsigned char ch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/port/pgstrcasecmp.c:122,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:122,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 125
    functionName: pg_tolower
    functionSourceFile: /src/postgres/src/port/pgstrcasecmp.c
    functionUses: 3
    functionsReached:
    - IS_HIGHBIT_SET
    - tolower
    - isupper
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char pg_tolower(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nargs
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: SizeForFunctionCallInfo
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeForFunctionCallInfo(nargs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - nargs
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 115
    functionName: LOCAL_FCINFO
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCAL_FCINFO(name, nargs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - expr
    - ','
    - finfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 137
    functionName: fmgr_info_set_expr
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fmgr_info_set_expr(expr, finfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - Fcinfo
    - ','
    - Flinfo
    - ','
    - Nargs
    - ','
    - Collation
    - ','
    - Context
    - ','
    - Resultinfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 159
    functionName: InitFunctionCallInfoData
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context,
      Resultinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fcinfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: FunctionCallInvoke
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCallInvoke(fcinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 199
    functionName: PG_GET_COLLATION
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GET_COLLATION()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 204
    functionName: PG_NARGS
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_NARGS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 210
    functionName: PG_ARGISNULL
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_ARGISNULL(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - datum
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: PG_DETOAST_DATUM
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_DETOAST_DATUM(datum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - datum
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 244
    functionName: PG_DETOAST_DATUM_COPY
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_DETOAST_DATUM_COPY(datum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - datum
    - ','
    - f
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: PG_DETOAST_DATUM_SLICE
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_DETOAST_DATUM_SLICE(datum,f,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - datum
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 250
    functionName: PG_DETOAST_DATUM_PACKED
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_DETOAST_DATUM_PACKED(datum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 265
    functionName: PG_FREE_IF_COPY
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_FREE_IF_COPY(ptr,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 269
    functionName: PG_GETARG_DATUM
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_DATUM(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 270
    functionName: PG_GETARG_INT32
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 41
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_INT32(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 271
    functionName: PG_GETARG_UINT32
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_UINT32(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 272
    functionName: PG_GETARG_INT16
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_INT16(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 273
    functionName: PG_GETARG_UINT16
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_UINT16(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 274
    functionName: PG_GETARG_CHAR
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_CHAR(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 275
    functionName: PG_GETARG_BOOL
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BOOL(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 276
    functionName: PG_GETARG_OID
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_OID(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 277
    functionName: PG_GETARG_OID8
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_OID8(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 278
    functionName: PG_GETARG_POINTER
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_POINTER(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 279
    functionName: PG_GETARG_CSTRING
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_CSTRING(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 280
    functionName: PG_GETARG_NAME
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_NAME(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 281
    functionName: PG_GETARG_TRANSACTIONID
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TRANSACTIONID(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 283
    functionName: PG_GETARG_FLOAT4
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_FLOAT4(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 284
    functionName: PG_GETARG_FLOAT8
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_FLOAT8(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 285
    functionName: PG_GETARG_INT64
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_INT64(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 287
    functionName: PG_GETARG_RAW_VARLENA_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_RAW_VARLENA_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 289
    functionName: PG_GETARG_VARLENA_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_VARLENA_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 291
    functionName: PG_GETARG_VARLENA_PP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_VARLENA_PP(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 293
    functionName: DatumGetByteaPP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetByteaPP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 294
    functionName: DatumGetTextPP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetTextPP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 295
    functionName: DatumGetBpCharPP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetBpCharPP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 296
    functionName: DatumGetVarCharPP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetVarCharPP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 297
    functionName: DatumGetHeapTupleHeader
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetHeapTupleHeader(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 299
    functionName: DatumGetByteaPCopy
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetByteaPCopy(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 300
    functionName: DatumGetTextPCopy
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetTextPCopy(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 301
    functionName: DatumGetBpCharPCopy
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetBpCharPCopy(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 302
    functionName: DatumGetVarCharPCopy
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetVarCharPCopy(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 303
    functionName: DatumGetHeapTupleHeaderCopy
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetHeapTupleHeaderCopy(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - m
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 305
    functionName: DatumGetByteaPSlice
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetByteaPSlice(X,m,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - m
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 306
    functionName: DatumGetTextPSlice
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetTextPSlice(X,m,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - m
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 307
    functionName: DatumGetBpCharPSlice
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetBpCharPSlice(X,m,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - m
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 308
    functionName: DatumGetVarCharPSlice
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetVarCharPSlice(X,m,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 310
    functionName: PG_GETARG_BYTEA_PP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BYTEA_PP(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 311
    functionName: PG_GETARG_TEXT_PP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TEXT_PP(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 312
    functionName: PG_GETARG_BPCHAR_PP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BPCHAR_PP(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 313
    functionName: PG_GETARG_VARCHAR_PP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_VARCHAR_PP(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 314
    functionName: PG_GETARG_HEAPTUPLEHEADER
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_HEAPTUPLEHEADER(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 316
    functionName: PG_GETARG_BYTEA_P_COPY
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BYTEA_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 317
    functionName: PG_GETARG_TEXT_P_COPY
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TEXT_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 318
    functionName: PG_GETARG_BPCHAR_P_COPY
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BPCHAR_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 319
    functionName: PG_GETARG_VARCHAR_P_COPY
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_VARCHAR_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 320
    functionName: PG_GETARG_HEAPTUPLEHEADER_COPY
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_HEAPTUPLEHEADER_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - n
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 322
    functionName: PG_GETARG_BYTEA_P_SLICE
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BYTEA_P_SLICE(n,a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - n
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 323
    functionName: PG_GETARG_TEXT_P_SLICE
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TEXT_P_SLICE(n,a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - n
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 324
    functionName: PG_GETARG_BPCHAR_P_SLICE
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BPCHAR_P_SLICE(n,a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - n
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 325
    functionName: PG_GETARG_VARCHAR_P_SLICE
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_VARCHAR_P_SLICE(n,a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 333
    functionName: DatumGetByteaP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetByteaP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 334
    functionName: DatumGetTextP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetTextP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 335
    functionName: DatumGetBpCharP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetBpCharP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 336
    functionName: DatumGetVarCharP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetVarCharP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 337
    functionName: PG_GETARG_BYTEA_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BYTEA_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 338
    functionName: PG_GETARG_TEXT_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TEXT_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 339
    functionName: PG_GETARG_BPCHAR_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BPCHAR_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 340
    functionName: PG_GETARG_VARCHAR_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_VARCHAR_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 343
    functionName: PG_HAS_OPCLASS_OPTIONS
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_HAS_OPCLASS_OPTIONS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 344
    functionName: PG_GET_OPCLASS_OPTIONS
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GET_OPCLASS_OPTIONS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 348
    functionName: PG_RETURN_NULL
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_NULL()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 351
    functionName: PG_RETURN_VOID
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 86
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_VOID()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 355
    functionName: PG_RETURN_DATUM
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_DATUM(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 356
    functionName: PG_RETURN_INT32
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_INT32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 357
    functionName: PG_RETURN_UINT32
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_UINT32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 358
    functionName: PG_RETURN_INT16
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_INT16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 359
    functionName: PG_RETURN_UINT16
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_UINT16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 360
    functionName: PG_RETURN_CHAR
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_CHAR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 361
    functionName: PG_RETURN_BOOL
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_BOOL(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 362
    functionName: PG_RETURN_OID
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_OID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 363
    functionName: PG_RETURN_OID8
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_OID8(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 364
    functionName: PG_RETURN_POINTER
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_POINTER(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 365
    functionName: PG_RETURN_CSTRING
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_CSTRING(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 366
    functionName: PG_RETURN_NAME
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_NAME(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 367
    functionName: PG_RETURN_TRANSACTIONID
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_TRANSACTIONID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 369
    functionName: PG_RETURN_FLOAT4
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_FLOAT4(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 370
    functionName: PG_RETURN_FLOAT8
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_FLOAT8(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 371
    functionName: PG_RETURN_INT64
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_INT64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 372
    functionName: PG_RETURN_UINT64
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_UINT64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 374
    functionName: PG_RETURN_BYTEA_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_BYTEA_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 375
    functionName: PG_RETURN_TEXT_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_TEXT_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 376
    functionName: PG_RETURN_BPCHAR_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_BPCHAR_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 377
    functionName: PG_RETURN_VARCHAR_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_VARCHAR_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 378
    functionName: PG_RETURN_HEAPTUPLEHEADER
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_HEAPTUPLEHEADER(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - funcname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 427
    functionName: PG_FUNCTION_INFO_V1
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_FUNCTION_INFO_V1(funcname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 509
    functionName: PG_MODULE_MAGIC_DATA
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_MODULE_MAGIC_DATA(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 550
    functionName: PG_MODULE_MAGIC_EXT
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_MODULE_MAGIC_EXT(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - func
    - ','
    - arg1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 690
    functionName: DirectFunctionCall1
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DirectFunctionCall1(func, arg1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - func
    - ','
    - arg1
    - ','
    - arg2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 690
    functionDepth: 0
    functionLinenumber: 690
    functionLinenumberEnd: 692
    functionName: DirectFunctionCall2
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DirectFunctionCall2(func, arg1, arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - func
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 694
    functionName: DirectFunctionCall3
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DirectFunctionCall3(func, arg1, arg2, arg3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - func
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 696
    functionName: DirectFunctionCall4
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DirectFunctionCall4(func, arg1, arg2, arg3, arg4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - func
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 698
    functionName: DirectFunctionCall5
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DirectFunctionCall5(func, arg1, arg2, arg3, arg4, arg5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - func
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 700
    functionName: DirectFunctionCall6
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DirectFunctionCall6(func, arg1, arg2, arg3, arg4, arg5, arg6)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - func
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - ','
    - arg7
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 700
    functionDepth: 0
    functionLinenumber: 700
    functionLinenumberEnd: 702
    functionName: DirectFunctionCall7
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DirectFunctionCall7(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - func
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - ','
    - arg7
    - ','
    - arg8
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 704
    functionName: DirectFunctionCall8
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DirectFunctionCall8(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7,
      arg8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 21
    argNames:
    - (
    - func
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - ','
    - arg7
    - ','
    - arg8
    - ','
    - arg9
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 706
    functionName: DirectFunctionCall9
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DirectFunctionCall9(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7,
      arg8, arg9)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - flinfo
    - ','
    - arg1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 706
    functionDepth: 0
    functionLinenumber: 706
    functionLinenumberEnd: 708
    functionName: FunctionCall1
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCall1(flinfo, arg1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - flinfo
    - ','
    - arg1
    - ','
    - arg2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 708
    functionDepth: 0
    functionLinenumber: 708
    functionLinenumberEnd: 710
    functionName: FunctionCall2
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCall2(flinfo, arg1, arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - flinfo
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 712
    functionName: FunctionCall3
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCall3(flinfo, arg1, arg2, arg3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - flinfo
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 714
    functionName: FunctionCall4
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCall4(flinfo, arg1, arg2, arg3, arg4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - flinfo
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 716
    functionName: FunctionCall5
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCall5(flinfo, arg1, arg2, arg3, arg4, arg5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - flinfo
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 718
    functionName: FunctionCall6
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCall6(flinfo, arg1, arg2, arg3, arg4, arg5, arg6)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - flinfo
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - ','
    - arg7
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 720
    functionName: FunctionCall7
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCall7(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - flinfo
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - ','
    - arg7
    - ','
    - arg8
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 720
    functionDepth: 0
    functionLinenumber: 720
    functionLinenumberEnd: 722
    functionName: FunctionCall8
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCall8(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 21
    argNames:
    - (
    - flinfo
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - ','
    - arg7
    - ','
    - arg8
    - ','
    - arg9
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 724
    functionName: FunctionCall9
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FunctionCall9(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
      arg9)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - functionId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 726
    functionName: OidFunctionCall0
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall0(functionId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - functionId
    - ','
    - arg1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 728
    functionName: OidFunctionCall1
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall1(functionId, arg1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - functionId
    - ','
    - arg1
    - ','
    - arg2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 730
    functionName: OidFunctionCall2
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall2(functionId, arg1, arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - functionId
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 730
    functionDepth: 0
    functionLinenumber: 730
    functionLinenumberEnd: 732
    functionName: OidFunctionCall3
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall3(functionId, arg1, arg2, arg3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - functionId
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 734
    functionName: OidFunctionCall4
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall4(functionId, arg1, arg2, arg3, arg4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - functionId
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 736
    functionName: OidFunctionCall5
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall5(functionId, arg1, arg2, arg3, arg4, arg5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - functionId
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 736
    functionDepth: 0
    functionLinenumber: 736
    functionLinenumberEnd: 738
    functionName: OidFunctionCall6
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall6(functionId, arg1, arg2, arg3, arg4, arg5, arg6)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - functionId
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - ','
    - arg7
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 740
    functionName: OidFunctionCall7
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall7(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - functionId
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - ','
    - arg7
    - ','
    - arg8
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 742
    functionName: OidFunctionCall8
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall8(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7,
      arg8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 21
    argNames:
    - (
    - functionId
    - ','
    - arg1
    - ','
    - arg2
    - ','
    - arg3
    - ','
    - arg4
    - ','
    - arg5
    - ','
    - arg6
    - ','
    - arg7
    - ','
    - arg8
    - ','
    - arg9
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 744
    functionName: OidFunctionCall9
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidFunctionCall9(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7,
      arg8, arg9)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fn_oid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 854
    functionDepth: 0
    functionLinenumber: 854
    functionLinenumberEnd: 856
    functionName: FmgrHookIsNeeded
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FmgrHookIsNeeded(fn_oid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: IS_NONWINDOWS_DIR_SEP
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_NONWINDOWS_DIR_SEP(ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - filename
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: is_nonwindows_absolute_path
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_nonwindows_absolute_path(filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: IS_WINDOWS_DIR_SEP
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_WINDOWS_DIR_SEP(ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - filename
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: is_windows_absolute_path
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_windows_absolute_path(filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: IS_DIR_SEP
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DIR_SEP(ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - filename
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: is_absolute_path
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_absolute_path(filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: IS_DIR_SEP
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DIR_SEP(ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - filename
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: is_absolute_path
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_absolute_path(filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 183
    functionName: pg_ascii_toupper
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char pg_ascii_toupper(unsigned char ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 194
    functionName: pg_ascii_tolower
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char pg_ascii_tolower(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 268
    functionName: printf
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 647
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: printf(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - from
    - ','
    - to
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 308
    functionName: rename
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rename(from, to)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 309
    functionName: unlink
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unlink(path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - oldpath
    - ','
    - newpath
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 325
    functionName: symlink
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: symlink(oldpath, newpath)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - path
    - ','
    - buf
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 326
    functionName: readlink
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: readlink(path, buf, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 344
    functionName: lseek
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lseek(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 358
    functionName: ftruncate
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ftruncate(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 367
    functionName: open
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 160
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: open(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 368
    functionName: fopen
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 61
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fopen(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 389
    functionName: system
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: system(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 390
    functionName: popen
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: popen(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 391
    functionName: pclose
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pclose(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 455
    functionName: strtof
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strtof(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 497
    functionName: qsort
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: qsort(a,b,c,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - io_op
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 328
    functionName: pgstat_is_ioop_tracked_in_bytes
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_is_ioop_tracked_in_bytes(io_op)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 673
    functionName: pgstat_count_buffer_read_time
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_buffer_read_time(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 675
    functionName: pgstat_count_buffer_write_time
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_buffer_write_time(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 677
    functionName: pgstat_count_conn_active_time
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_conn_active_time(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 679
    functionName: pgstat_count_conn_txn_idle_time
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_conn_txn_idle_time(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 727
    functionName: pgstat_should_count_relation
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_should_count_relation(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 730
    functionDepth: 0
    functionLinenumber: 730
    functionLinenumberEnd: 735
    functionName: pgstat_count_heap_scan
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_heap_scan(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 735
    functionDepth: 0
    functionLinenumber: 735
    functionLinenumberEnd: 740
    functionName: pgstat_count_heap_getnext
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_heap_getnext(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 745
    functionName: pgstat_count_heap_fetch
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_heap_fetch(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 745
    functionDepth: 0
    functionLinenumber: 745
    functionLinenumberEnd: 750
    functionName: pgstat_count_index_scan
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_index_scan(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rel
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 750
    functionDepth: 0
    functionLinenumber: 750
    functionLinenumberEnd: 755
    functionName: pgstat_count_index_tuples
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_index_tuples(rel, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 760
    functionName: pgstat_count_buffer_read
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_buffer_read(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 765
    functionName: pgstat_count_buffer_hit
    functionSourceFile: /src/postgres/src/include/pgstat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_count_buffer_hit(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tag
    argTypes:
    - vartag_external
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: VARTAG_IS_EXPANDED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool VARTAG_IS_EXPANDED(vartag_external tag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VARTAG_IS_EXPANDED
      Src: /src/postgres/src/include/varatt.h:106,1
    - Dst: Assert
      Src: /src/postgres/src/include/varatt.h:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - tag
    argTypes:
    - vartag_external
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 115
    functionName: VARTAG_SIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARTAG_IS_EXPANDED
    - Assert
    linkageType: ''
    returnType: Size
    signature: Size VARTAG_SIZE(vartag_external tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: VARATT_IS_4B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_4B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: VARATT_IS_4B_U
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_4B_U(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 201
    functionName: VARATT_IS_4B_C
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_4B_C(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 203
    functionName: VARATT_IS_1B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_1B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 205
    functionName: VARATT_IS_1B_E
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_1B_E(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 207
    functionName: VARATT_NOT_PAD_BYTE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_NOT_PAD_BYTE(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: VARSIZE_4B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARSIZE_4B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 213
    functionName: VARSIZE_1B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARSIZE_1B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: VARTAG_1B_E
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARTAG_1B_E(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PTR
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: SET_VARSIZE_4B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARSIZE_4B(PTR,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PTR
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: SET_VARSIZE_4B_C
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARSIZE_4B_C(PTR,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PTR
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 222
    functionName: SET_VARSIZE_1B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARSIZE_1B(PTR,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PTR
    - ','
    - tag
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 225
    functionName: SET_VARTAG_1B_E
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARTAG_1B_E(PTR,tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: VARATT_IS_4B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_4B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 232
    functionName: VARATT_IS_4B_U
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_4B_U(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 234
    functionName: VARATT_IS_4B_C
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_4B_C(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 236
    functionName: VARATT_IS_1B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_1B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: VARATT_IS_1B_E
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_1B_E(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: VARATT_NOT_PAD_BYTE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_NOT_PAD_BYTE(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 244
    functionName: VARSIZE_4B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARSIZE_4B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 246
    functionName: VARSIZE_1B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARSIZE_1B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 248
    functionName: VARTAG_1B_E
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARTAG_1B_E(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PTR
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 251
    functionName: SET_VARSIZE_4B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARSIZE_4B(PTR,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PTR
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 253
    functionName: SET_VARSIZE_4B_C
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARSIZE_4B_C(PTR,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PTR
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 255
    functionName: SET_VARSIZE_1B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARSIZE_1B(PTR,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PTR
    - ','
    - tag
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 258
    functionName: SET_VARTAG_1B_E
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARTAG_1B_E(PTR,tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 262
    functionName: VARDATA_4B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA_4B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 263
    functionName: VARDATA_4B_C
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA_4B_C(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 264
    functionName: VARDATA_1B
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA_1B(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 265
    functionName: VARDATA_1B_E
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA_1B_E(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_4B
      Src: /src/postgres/src/include/varatt.h:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 301
    functionName: VARSIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 9
    functionsReached:
    - VARSIZE_4B
    linkageType: ''
    returnType: Size
    signature: Size VARSIZE(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARDATA_4B
      Src: /src/postgres/src/include/varatt.h:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 308
    functionName: VARDATA
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 9
    functionsReached:
    - VARDATA_4B
    linkageType: ''
    returnType: char
    signature: 'char *

      VARDATA(const void *PTR)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_1B
      Src: /src/postgres/src/include/varatt.h:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 315
    functionName: VARSIZE_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - VARSIZE_1B
    linkageType: ''
    returnType: Size
    signature: Size VARSIZE_SHORT(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARDATA_1B
      Src: /src/postgres/src/include/varatt.h:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 322
    functionName: VARDATA_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARDATA_1B
    linkageType: ''
    returnType: char
    signature: 'char *

      VARDATA_SHORT(const void *PTR)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARTAG_1B_E
      Src: /src/postgres/src/include/varatt.h:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 329
    functionName: VARTAG_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - VARTAG_1B_E
    linkageType: ''
    returnType: vartag_external
    signature: vartag_external VARTAG_EXTERNAL(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARTAG_SIZE
      Src: /src/postgres/src/include/varatt.h:335,1
    - Dst: VARTAG_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 336
    functionName: VARSIZE_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARTAG_SIZE
    - VARTAG_EXTERNAL
    linkageType: ''
    returnType: Size
    signature: Size VARSIZE_EXTERNAL(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARDATA_1B_E
      Src: /src/postgres/src/include/varatt.h:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 343
    functionName: VARDATA_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - VARDATA_1B_E
    linkageType: ''
    returnType: char
    signature: 'char *

      VARDATA_EXTERNAL(const void *PTR)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_4B_C
      Src: /src/postgres/src/include/varatt.h:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 350
    functionName: VARATT_IS_COMPRESSED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARATT_IS_4B_C
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_COMPRESSED(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_1B_E
      Src: /src/postgres/src/include/varatt.h:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 357
    functionName: VARATT_IS_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARATT_IS_1B_E
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_EXTERNAL(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:363,1
    - Dst: VARTAG_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: VARATT_IS_EXTERNAL_ONDISK
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - VARATT_IS_EXTERNAL
    - VARTAG_EXTERNAL
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_EXTERNAL_ONDISK(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:370,1
    - Dst: VARTAG_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 371
    functionName: VARATT_IS_EXTERNAL_INDIRECT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - VARATT_IS_EXTERNAL
    - VARTAG_EXTERNAL
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_EXTERNAL_INDIRECT(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:377,1
    - Dst: VARTAG_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 378
    functionName: VARATT_IS_EXTERNAL_EXPANDED_RO
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - VARATT_IS_EXTERNAL
    - VARTAG_EXTERNAL
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_EXTERNAL_EXPANDED_RO(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:384,1
    - Dst: VARTAG_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 385
    functionName: VARATT_IS_EXTERNAL_EXPANDED_RW
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 5
    functionsReached:
    - VARATT_IS_EXTERNAL
    - VARTAG_EXTERNAL
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_EXTERNAL_EXPANDED_RW(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:391,1
    - Dst: VARTAG_IS_EXPANDED
      Src: /src/postgres/src/include/varatt.h:391,1
    - Dst: VARTAG_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 388
    functionDepth: 2
    functionLinenumber: 388
    functionLinenumberEnd: 392
    functionName: VARATT_IS_EXTERNAL_EXPANDED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 3
    functionsReached:
    - VARTAG_IS_EXPANDED
    - VARATT_IS_EXTERNAL
    - VARTAG_EXTERNAL
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_EXTERNAL_EXPANDED(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:398,1
    - Dst: VARTAG_IS_EXPANDED
      Src: /src/postgres/src/include/varatt.h:398,1
    - Dst: VARTAG_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 395
    functionDepth: 2
    functionLinenumber: 395
    functionLinenumberEnd: 399
    functionName: VARATT_IS_EXTERNAL_NON_EXPANDED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - VARTAG_IS_EXPANDED
    - VARATT_IS_EXTERNAL
    - VARTAG_EXTERNAL
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_EXTERNAL_NON_EXPANDED(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_1B
      Src: /src/postgres/src/include/varatt.h:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 406
    functionName: VARATT_IS_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARATT_IS_1B
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_SHORT(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_4B_U
      Src: /src/postgres/src/include/varatt.h:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 413
    functionName: VARATT_IS_EXTENDED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARATT_IS_4B_U
    linkageType: ''
    returnType: bool
    signature: bool VARATT_IS_EXTENDED(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_4B_U
      Src: /src/postgres/src/include/varatt.h:419,1
    - Dst: VARSIZE
      Src: /src/postgres/src/include/varatt.h:420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 416
    functionDepth: 2
    functionLinenumber: 416
    functionLinenumberEnd: 421
    functionName: VARATT_CAN_MAKE_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARSIZE
    - VARATT_IS_4B_U
    linkageType: ''
    returnType: bool
    signature: bool VARATT_CAN_MAKE_SHORT(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE
      Src: /src/postgres/src/include/varatt.h:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 424
    functionDepth: 2
    functionLinenumber: 424
    functionLinenumberEnd: 428
    functionName: VARATT_CONVERTED_SHORT_SIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARSIZE
    linkageType: ''
    returnType: Size
    signature: Size VARATT_CONVERTED_SHORT_SIZE(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_VARSIZE_4B
      Src: /src/postgres/src/include/varatt.h:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - PTR
    - len
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 435
    functionName: SET_VARSIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 9
    functionsReached:
    - SET_VARSIZE_4B
    linkageType: ''
    returnType: void
    signature: void SET_VARSIZE(void *PTR, Size len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_VARSIZE_1B
      Src: /src/postgres/src/include/varatt.h:441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - PTR
    - len
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 442
    functionName: SET_VARSIZE_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - SET_VARSIZE_1B
    linkageType: ''
    returnType: void
    signature: void SET_VARSIZE_SHORT(void *PTR, Size len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_VARSIZE_4B_C
      Src: /src/postgres/src/include/varatt.h:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - PTR
    - len
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 449
    functionName: SET_VARSIZE_COMPRESSED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - SET_VARSIZE_4B_C
    linkageType: ''
    returnType: void
    signature: void SET_VARSIZE_COMPRESSED(void *PTR, Size len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_VARTAG_1B_E
      Src: /src/postgres/src/include/varatt.h:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - PTR
    - tag
    argTypes:
    - void*
    - vartag_external
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 456
    functionName: SET_VARTAG_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - SET_VARTAG_1B_E
    linkageType: ''
    returnType: void
    signature: void SET_VARTAG_EXTERNAL(void *PTR, vartag_external tag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_1B_E
      Src: /src/postgres/src/include/varatt.h:462,1
    - Dst: VARSIZE_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:463,1
    - Dst: VARATT_IS_1B
      Src: /src/postgres/src/include/varatt.h:464,1
    - Dst: VARSIZE_1B
      Src: /src/postgres/src/include/varatt.h:465,1
    - Dst: VARSIZE_4B
      Src: /src/postgres/src/include/varatt.h:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 459
    functionDepth: 3
    functionLinenumber: 459
    functionLinenumberEnd: 468
    functionName: VARSIZE_ANY
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached:
    - VARATT_IS_1B_E
    - VARATT_IS_1B
    - VARSIZE_4B
    - VARSIZE_1B
    - VARSIZE_EXTERNAL
    linkageType: ''
    returnType: Size
    signature: Size VARSIZE_ANY(const void *PTR)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_1B_E
      Src: /src/postgres/src/include/varatt.h:474,1
    - Dst: VARSIZE_EXTERNAL
      Src: /src/postgres/src/include/varatt.h:475,1
    - Dst: VARATT_IS_1B
      Src: /src/postgres/src/include/varatt.h:476,1
    - Dst: VARSIZE_1B
      Src: /src/postgres/src/include/varatt.h:477,1
    - Dst: VARSIZE_4B
      Src: /src/postgres/src/include/varatt.h:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 471
    functionDepth: 3
    functionLinenumber: 471
    functionLinenumberEnd: 480
    functionName: VARSIZE_ANY_EXHDR
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 17
    functionsReached:
    - VARATT_IS_1B_E
    - VARATT_IS_1B
    - VARSIZE_4B
    - VARSIZE_1B
    - VARSIZE_EXTERNAL
    linkageType: ''
    returnType: Size
    signature: Size VARSIZE_ANY_EXHDR(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_1B
      Src: /src/postgres/src/include/varatt.h:488,1
    - Dst: VARDATA_1B
      Src: /src/postgres/src/include/varatt.h:488,1
    - Dst: VARDATA_4B
      Src: /src/postgres/src/include/varatt.h:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 489
    functionName: VARDATA_ANY
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 17
    functionsReached:
    - VARATT_IS_1B
    - VARDATA_4B
    - VARDATA_1B
    linkageType: ''
    returnType: char
    signature: 'char *

      VARDATA_ANY(const void *PTR)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 496
    functionName: VARDATA_COMPRESSED_GET_EXTSIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size
    signature: Size VARDATA_COMPRESSED_GET_EXTSIZE(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - PTR
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 503
    functionName: VARDATA_COMPRESSED_GET_COMPRESS_METHOD
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 VARDATA_COMPRESSED_GET_COMPRESS_METHOD(const void *PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - toast_pointer
    argTypes:
    - varatt_external
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 510
    functionName: VARATT_EXTERNAL_GET_EXTSIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size
    signature: Size VARATT_EXTERNAL_GET_EXTSIZE(varatt_external toast_pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - toast_pointer
    argTypes:
    - varatt_external
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 516
    functionName: VARATT_EXTERNAL_GET_COMPRESS_METHOD
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 VARATT_EXTERNAL_GET_COMPRESS_METHOD(varatt_external toast_pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - toast_pointer
    - ','
    - len
    - ','
    - cm
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 527
    functionName: VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD(toast_pointer, len, cm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_EXTERNAL_GET_EXTSIZE
      Src: /src/postgres/src/include/varatt.h:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - toast_pointer
    argTypes:
    - varatt_external
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 540
    functionName: VARATT_EXTERNAL_IS_COMPRESSED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached:
    - VARATT_EXTERNAL_GET_EXTSIZE
    linkageType: ''
    returnType: bool
    signature: bool VARATT_EXTERNAL_IS_COMPRESSED(varatt_external toast_pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TYPEALIGN
      Src: /src/postgres/src/include/pgtar.h:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: tarPaddingBytesRequired
    functionSourceFile: /src/postgres/src/include/pgtar.h
    functionUses: 5
    functionsReached:
    - TYPEALIGN
    linkageType: ''
    returnType: size_t
    signature: size_t tarPaddingBytesRequired(size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: INTERRUPTS_PENDING_CONDITION
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERRUPTS_PENDING_CONDITION()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 122
    functionName: INTERRUPTS_PENDING_CONDITION
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERRUPTS_PENDING_CONDITION()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 130
    functionName: CHECK_FOR_INTERRUPTS
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_FOR_INTERRUPTS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: INTERRUPTS_CAN_BE_PROCESSED
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERRUPTS_CAN_BE_PROCESSED()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: HOLD_INTERRUPTS
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HOLD_INTERRUPTS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: RESUME_INTERRUPTS
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESUME_INTERRUPTS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: HOLD_CANCEL_INTERRUPTS
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HOLD_CANCEL_INTERRUPTS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: RESUME_CANCEL_INTERRUPTS
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESUME_CANCEL_INTERRUPTS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: START_CRIT_SECTION
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: START_CRIT_SECTION()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 159
    functionName: END_CRIT_SECTION
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: END_CRIT_SECTION()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 388
    functionName: AmRegularBackendProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmRegularBackendProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 389
    functionName: AmAutoVacuumLauncherProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmAutoVacuumLauncherProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 390
    functionName: AmAutoVacuumWorkerProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmAutoVacuumWorkerProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 391
    functionName: AmBackgroundWorkerProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmBackgroundWorkerProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 392
    functionName: AmWalSenderProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmWalSenderProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 393
    functionName: AmLogicalSlotSyncWorkerProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmLogicalSlotSyncWorkerProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 394
    functionName: AmArchiverProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmArchiverProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 395
    functionName: AmBackgroundWriterProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmBackgroundWriterProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 396
    functionName: AmCheckpointerProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmCheckpointerProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 397
    functionName: AmStartupProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmStartupProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 398
    functionName: AmWalReceiverProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmWalReceiverProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 399
    functionName: AmWalSummarizerProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmWalSummarizerProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 400
    functionName: AmWalWriterProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmWalWriterProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 401
    functionName: AmIoWorkerProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmIoWorkerProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 404
    functionName: AmDataChecksumsWorkerProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmDataChecksumsWorkerProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: AmSpecialWorkerProcess
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AmSpecialWorkerProcess()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - backend_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 416
    functionName: IsExternalConnectionBackend
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsExternalConnectionBackend(backend_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 487
    functionName: IsBootstrapProcessingMode
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsBootstrapProcessingMode()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 488
    functionName: IsInitProcessingMode
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsInitProcessingMode()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 489
    functionName: IsNormalProcessingMode
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsNormalProcessingMode()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 491
    functionName: GetProcessingMode
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetProcessingMode()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 499
    functionName: SetProcessingMode
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SetProcessingMode(mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - attribute
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 198
    functionName: __has_attribute
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __has_attribute(attribute)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 205
    functionName: pg_attribute_unused
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_unused()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    functionName: pg_attribute_unused
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_unused()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 258
    functionName: pg_attribute_no_sanitize_address
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_no_sanitize_address()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: pg_attribute_no_sanitize_address
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_no_sanitize_address()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 273
    functionName: pg_attribute_no_sanitize_alignment
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_no_sanitize_alignment()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 284
    functionName: pg_attribute_nonnull
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_nonnull(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 296
    functionName: pg_attribute_target
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_target(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 324
    functionName: pg_attribute_format_arg
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_format_arg(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - f
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 325
    functionName: pg_attribute_printf
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_printf(f,a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 333
    functionName: pg_attribute_aligned
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_aligned(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 334
    functionName: pg_attribute_packed
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_packed()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 342
    functionName: pg_attribute_aligned
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_attribute_aligned(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 423
    functionName: pg_unreachable
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_unreachable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 425
    functionName: pg_unreachable
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_unreachable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 427
    functionName: pg_unreachable
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_unreachable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 440
    functionName: pg_integer_constant_p
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_integer_constant_p(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 452
    functionName: pg_integer_constant_p
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_integer_constant_p(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 473
    functionName: pg_assume
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_assume(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 479
    functionName: pg_assume
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_assume(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 481
    functionName: pg_assume
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_assume(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 483
    functionName: pg_assume
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_assume(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 494
    functionName: likely
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: likely(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 495
    functionName: unlikely
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unlikely(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 497
    functionName: likely
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: likely(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 498
    functionName: unlikely
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unlikely(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 532
    functionName: typeof
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: typeof(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 534
    functionName: typeof
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: typeof(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 544
    functionName: typeof_unqual
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: typeof_unqual(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 546
    functionName: typeof_unqual
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: typeof_unqual(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - identifier
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 565
    functionName: CppAsString
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CppAsString(identifier)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 566
    functionName: CppAsString2
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CppAsString2(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 567
    functionName: CppConcat
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CppConcat(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 591
    functionName: VA_ARGS_NARGS
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VA_ARGS_NARGS(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 131
    argNames:
    - (
    - _01
    - ','
    - _02
    - ','
    - _03
    - ','
    - _04
    - ','
    - _05
    - ','
    - _06
    - ','
    - _07
    - ','
    - _08
    - ','
    - _09
    - ','
    - _10
    - ','
    - _11
    - ','
    - _12
    - ','
    - _13
    - ','
    - _14
    - ','
    - _15
    - ','
    - _16
    - ','
    - _17
    - ','
    - _18
    - ','
    - _19
    - ','
    - _20
    - ','
    - _21
    - ','
    - _22
    - ','
    - _23
    - ','
    - _24
    - ','
    - _25
    - ','
    - _26
    - ','
    - _27
    - ','
    - _28
    - ','
    - _29
    - ','
    - _30
    - ','
    - _31
    - ','
    - _32
    - ','
    - _33
    - ','
    - _34
    - ','
    - _35
    - ','
    - _36
    - ','
    - _37
    - ','
    - _38
    - ','
    - _39
    - ','
    - _40
    - ','
    - _41
    - ','
    - _42
    - ','
    - _43
    - ','
    - _44
    - ','
    - _45
    - ','
    - _46
    - ','
    - _47
    - ','
    - _48
    - ','
    - _49
    - ','
    - _50
    - ','
    - _51
    - ','
    - _52
    - ','
    - _53
    - ','
    - _54
    - ','
    - _55
    - ','
    - _56
    - ','
    - _57
    - ','
    - _58
    - ','
    - _59
    - ','
    - _60
    - ','
    - _61
    - ','
    - _62
    - ','
    - _63
    - ','
    - N
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 601
    functionName: VA_ARGS_NARGS_
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "VA_ARGS_NARGS_( \\\n\t_01,_02,_03,_04,_05,_06,_07,_08,_09,_10, \\\n\t_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,
      \\\n\t_21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \\\n\t_31,_32,_33,_34,_35,_36,_37,_38,_39,_40,
      \\\n\t_41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \\\n\t_51,_52,_53,_54,_55,_56,_57,_58,_59,_60,
      \\\n\t_61,_62,_63,  N, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 690
    functionName: INT64CONST
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT64CONST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 690
    functionDepth: 0
    functionLinenumber: 690
    functionLinenumberEnd: 691
    functionName: UINT64CONST
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UINT64CONST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 895
    functionName: NameStr
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NameStr(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - boolean
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 905
    functionDepth: 0
    functionLinenumber: 905
    functionLinenumberEnd: 906
    functionName: BoolIsValid
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BoolIsValid(boolean)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pointer
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 913
    functionName: PointerIsAligned
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PointerIsAligned(pointer, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - base
    - ','
    - offset
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 914
    functionDepth: 0
    functionLinenumber: 914
    functionLinenumberEnd: 916
    functionName: OffsetToPointer
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OffsetToPointer(base, offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - objectId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 918
    functionName: OidIsValid
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 41
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidIsValid(objectId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - objectId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 919
    functionDepth: 0
    functionLinenumber: 919
    functionLinenumberEnd: 920
    functionName: Oid8IsValid
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Oid8IsValid(objectId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 921
    functionDepth: 0
    functionLinenumber: 921
    functionLinenumberEnd: 922
    functionName: RegProcedureIsValid
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RegProcedureIsValid(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 932
    functionDepth: 0
    functionLinenumber: 932
    functionLinenumberEnd: 933
    functionName: lengthof
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 55
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lengthof(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ALIGNVAL
    - ','
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 948
    functionDepth: 0
    functionLinenumber: 948
    functionLinenumberEnd: 950
    functionName: TYPEALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPEALIGN(ALIGNVAL,LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 951
    functionDepth: 0
    functionLinenumber: 951
    functionLinenumberEnd: 952
    functionName: SHORTALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHORTALIGN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 953
    functionName: INTALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTALIGN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 954
    functionName: INT64ALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT64ALIGN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 955
    functionName: DOUBLEALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DOUBLEALIGN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 956
    functionName: MAXALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAXALIGN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 958
    functionName: BUFFERALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUFFERALIGN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 958
    functionDepth: 0
    functionLinenumber: 958
    functionLinenumberEnd: 959
    functionName: CACHELINEALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CACHELINEALIGN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ALIGNVAL
    - ','
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 962
    functionName: TYPEALIGN_DOWN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPEALIGN_DOWN(ALIGNVAL,LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 964
    functionName: SHORTALIGN_DOWN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHORTALIGN_DOWN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 965
    functionName: INTALIGN_DOWN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTALIGN_DOWN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 966
    functionName: INT64ALIGN_DOWN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT64ALIGN_DOWN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 966
    functionDepth: 0
    functionLinenumber: 966
    functionLinenumberEnd: 967
    functionName: DOUBLEALIGN_DOWN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DOUBLEALIGN_DOWN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 967
    functionDepth: 0
    functionLinenumber: 967
    functionLinenumberEnd: 968
    functionName: MAXALIGN_DOWN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAXALIGN_DOWN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 968
    functionDepth: 0
    functionLinenumber: 968
    functionLinenumberEnd: 969
    functionName: BUFFERALIGN_DOWN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUFFERALIGN_DOWN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ALIGNVAL
    - ','
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 976
    functionDepth: 0
    functionLinenumber: 976
    functionLinenumberEnd: 978
    functionName: TYPEALIGN64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPEALIGN64(ALIGNVAL,LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 980
    functionDepth: 0
    functionLinenumber: 980
    functionLinenumberEnd: 981
    functionName: MAXALIGN64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAXALIGN64(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - condition
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1003
    functionName: Assert
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 361
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Assert(condition)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - condition
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 1003
    functionDepth: 0
    functionLinenumber: 1003
    functionLinenumberEnd: 1004
    functionName: AssertMacro
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertMacro(condition)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 1007
    functionDepth: 0
    functionLinenumber: 1007
    functionLinenumberEnd: 1008
    functionName: Assert
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 361
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Assert(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 1008
    functionDepth: 0
    functionLinenumber: 1008
    functionLinenumberEnd: 1009
    functionName: AssertMacro
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertMacro(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - condition
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1016
    functionDepth: 0
    functionLinenumber: 1016
    functionLinenumberEnd: 1021
    functionName: Assert
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 361
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Assert(condition)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - condition
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 1028
    functionDepth: 0
    functionLinenumber: 1028
    functionLinenumberEnd: 1031
    functionName: AssertMacro
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertMacro(condition)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - bndr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1037
    functionDepth: 0
    functionLinenumber: 1037
    functionLinenumberEnd: 1039
    functionName: AssertPointerAlignment
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertPointerAlignment(ptr, bndr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - condition
    - ','
    - errmessage
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1067
    functionDepth: 0
    functionLinenumber: 1067
    functionLinenumberEnd: 1069
    functionName: StaticAssertDecl
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StaticAssertDecl(condition, errmessage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - condition
    - ','
    - errmessage
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1074
    functionDepth: 0
    functionLinenumber: 1074
    functionLinenumberEnd: 1076
    functionName: StaticAssertStmt
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StaticAssertStmt(condition, errmessage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - condition
    - ','
    - errmessage
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1092
    functionDepth: 0
    functionLinenumber: 1092
    functionLinenumberEnd: 1094
    functionName: StaticAssertExpr
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StaticAssertExpr(condition, errmessage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - condition
    - ','
    - errmessage
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1101
    functionName: StaticAssertExpr
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StaticAssertExpr(condition, errmessage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - condition
    - ','
    - errmessage
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1103
    functionDepth: 0
    functionLinenumber: 1103
    functionLinenumberEnd: 1105
    functionName: StaticAssertExpr
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StaticAssertExpr(condition, errmessage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - varname
    - ','
    - typename
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1120
    functionDepth: 0
    functionLinenumber: 1120
    functionLinenumberEnd: 1123
    functionName: StaticAssertVariableIsOfType
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StaticAssertVariableIsOfType(varname, typename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - varname
    - ','
    - typename
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1123
    functionDepth: 0
    functionLinenumber: 1123
    functionLinenumberEnd: 1126
    functionName: StaticAssertVariableIsOfTypeMacro
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StaticAssertVariableIsOfTypeMacro(varname, typename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - varname
    - ','
    - typename
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1127
    functionDepth: 0
    functionLinenumber: 1127
    functionLinenumberEnd: 1130
    functionName: StaticAssertVariableIsOfType
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StaticAssertVariableIsOfType(varname, typename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - varname
    - ','
    - typename
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1130
    functionDepth: 0
    functionLinenumber: 1130
    functionLinenumberEnd: 1133
    functionName: StaticAssertVariableIsOfTypeMacro
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StaticAssertVariableIsOfTypeMacro(varname, typename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1144
    functionDepth: 0
    functionLinenumber: 1144
    functionLinenumberEnd: 1145
    functionName: Max
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Max(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1150
    functionDepth: 0
    functionLinenumber: 1150
    functionLinenumberEnd: 1151
    functionName: Min
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Min(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - start
    - ','
    - val
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1166
    functionDepth: 0
    functionLinenumber: 1166
    functionLinenumberEnd: 1169
    functionName: MemSet
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MemSet(start, val, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - start
    - ','
    - val
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1199
    functionDepth: 0
    functionLinenumber: 1199
    functionLinenumberEnd: 1218
    functionName: MemSetAligned
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MemSetAligned(start, val, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1231
    functionDepth: 0
    functionLinenumber: 1231
    functionLinenumberEnd: 1233
    functionName: FLOAT4_FITS_IN_INT16
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLOAT4_FITS_IN_INT16(num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1233
    functionDepth: 0
    functionLinenumber: 1233
    functionLinenumberEnd: 1235
    functionName: FLOAT4_FITS_IN_INT32
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLOAT4_FITS_IN_INT32(num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1235
    functionDepth: 0
    functionLinenumber: 1235
    functionLinenumberEnd: 1237
    functionName: FLOAT4_FITS_IN_INT64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLOAT4_FITS_IN_INT64(num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1237
    functionDepth: 0
    functionLinenumber: 1237
    functionLinenumberEnd: 1239
    functionName: FLOAT8_FITS_IN_INT16
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLOAT8_FITS_IN_INT16(num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1239
    functionDepth: 0
    functionLinenumber: 1239
    functionLinenumberEnd: 1241
    functionName: FLOAT8_FITS_IN_INT32
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLOAT8_FITS_IN_INT32(num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1241
    functionDepth: 0
    functionLinenumber: 1241
    functionLinenumberEnd: 1243
    functionName: FLOAT8_FITS_IN_INT64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLOAT8_FITS_IN_INT64(num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1255
    functionDepth: 0
    functionLinenumber: 1255
    functionLinenumberEnd: 1257
    functionName: INVERT_COMPARE_RESULT
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INVERT_COMPARE_RESULT(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1306
    functionDepth: 0
    functionLinenumber: 1306
    functionLinenumberEnd: 1307
    functionName: IS_HIGHBIT_SET
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_HIGHBIT_SET(ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ch
    - ','
    - escape_backslash
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1314
    functionDepth: 0
    functionLinenumber: 1314
    functionLinenumberEnd: 1316
    functionName: SQL_STR_DOUBLE
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SQL_STR_DOUBLE(ch, escape_backslash)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1330
    functionDepth: 0
    functionLinenumber: 1330
    functionLinenumberEnd: 1331
    functionName: gettext
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gettext(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - d
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1331
    functionDepth: 0
    functionLinenumber: 1331
    functionLinenumberEnd: 1332
    functionName: dgettext
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dgettext(d,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - p
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1332
    functionDepth: 0
    functionLinenumber: 1332
    functionLinenumberEnd: 1333
    functionName: ngettext
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ngettext(s,p,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - d
    - ','
    - s
    - ','
    - p
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1333
    functionDepth: 0
    functionLinenumber: 1333
    functionLinenumberEnd: 1334
    functionName: dngettext
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dngettext(d,s,p,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1336
    functionDepth: 0
    functionLinenumber: 1336
    functionLinenumberEnd: 1337
    functionName: _
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 280
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1347
    functionDepth: 0
    functionLinenumber: 1347
    functionLinenumberEnd: 1348
    functionName: gettext_noop
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 58
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gettext_noop(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - domain
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1363
    functionDepth: 0
    functionLinenumber: 1363
    functionLinenumberEnd: 1364
    functionName: PG_TEXTDOMAIN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_TEXTDOMAIN(domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - domain
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1365
    functionDepth: 0
    functionLinenumber: 1365
    functionLinenumberEnd: 1366
    functionName: PG_TEXTDOMAIN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_TEXTDOMAIN(domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - underlying_type
    - ','
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1384
    functionDepth: 0
    functionLinenumber: 1384
    functionLinenumberEnd: 1385
    functionName: unconstify
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unconstify(underlying_type, expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - underlying_type
    - ','
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1385
    functionDepth: 0
    functionLinenumber: 1385
    functionLinenumberEnd: 1386
    functionName: unvolatize
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unvolatize(underlying_type, expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - underlying_type
    - ','
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1387
    functionDepth: 0
    functionLinenumber: 1387
    functionLinenumberEnd: 1390
    functionName: unconstify
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unconstify(underlying_type, expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - underlying_type
    - ','
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1390
    functionDepth: 0
    functionLinenumber: 1390
    functionLinenumberEnd: 1393
    functionName: unvolatize
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unvolatize(underlying_type, expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - str
    - ','
    - endptr
    - ','
    - base
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1469
    functionDepth: 0
    functionLinenumber: 1469
    functionLinenumberEnd: 1470
    functionName: strtoi64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strtoi64(str, endptr, base)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - str
    - ','
    - endptr
    - ','
    - base
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1470
    functionDepth: 0
    functionLinenumber: 1470
    functionLinenumberEnd: 1471
    functionName: strtou64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strtou64(str, endptr, base)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - str
    - ','
    - endptr
    - ','
    - base
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1472
    functionDepth: 0
    functionLinenumber: 1472
    functionLinenumberEnd: 1473
    functionName: strtoi64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strtoi64(str, endptr, base)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - str
    - ','
    - endptr
    - ','
    - base
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1473
    functionDepth: 0
    functionLinenumber: 1473
    functionLinenumberEnd: 1474
    functionName: strtou64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strtou64(str, endptr, base)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1482
    functionDepth: 0
    functionLinenumber: 1482
    functionLinenumberEnd: 1483
    functionName: i64abs
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i64abs(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1484
    functionDepth: 0
    functionLinenumber: 1484
    functionLinenumberEnd: 1485
    functionName: i64abs
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i64abs(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1547
    functionDepth: 0
    functionLinenumber: 1547
    functionLinenumberEnd: 1548
    functionName: sigsetjmp
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigsetjmp(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1551
    functionDepth: 0
    functionLinenumber: 1551
    functionLinenumberEnd: 1552
    functionName: sigsetjmp
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigsetjmp(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetDatum
      Src: /src/postgres/src/include/funcapi.h:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: HeapTupleGetDatum
    functionSourceFile: /src/postgres/src/include/funcapi.h
    functionUses: 11
    functionsReached:
    - HeapTupleHeaderGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum HeapTupleGetDatum(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _slot
    - ','
    - _tuple
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 237
    functionName: TupleGetDatum
    functionSourceFile: /src/postgres/src/include/funcapi.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TupleGetDatum(_slot, _tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 306
    functionName: SRF_IS_FIRSTCALL
    functionSourceFile: /src/postgres/src/include/funcapi.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SRF_IS_FIRSTCALL()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 308
    functionName: SRF_FIRSTCALL_INIT
    functionSourceFile: /src/postgres/src/include/funcapi.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SRF_FIRSTCALL_INIT()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 310
    functionName: SRF_PERCALL_SETUP
    functionSourceFile: /src/postgres/src/include/funcapi.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SRF_PERCALL_SETUP()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _funcctx
    - ','
    - _result
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 319
    functionName: SRF_RETURN_NEXT
    functionSourceFile: /src/postgres/src/include/funcapi.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SRF_RETURN_NEXT(_funcctx, _result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _funcctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 328
    functionName: SRF_RETURN_NEXT_NULL
    functionSourceFile: /src/postgres/src/include/funcapi.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SRF_RETURN_NEXT_NULL(_funcctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _funcctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 337
    functionName: SRF_RETURN_DONE
    functionSourceFile: /src/postgres/src/include/funcapi.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SRF_RETURN_DONE(_funcctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 103
    functionName: DatumGetBool
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DatumGetBool(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: BoolGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum BoolGetDatum(bool X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: DatumGetChar
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char DatumGetChar(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: CharGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum CharGetDatum(char X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 145
    functionName: DatumGetUInt8
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8
    signature: uint8 DatumGetUInt8(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: UInt8GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum UInt8GetDatum(uint8 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: DatumGetInt16
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int16
    signature: int16 DatumGetInt16(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - int16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: Int16GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum Int16GetDatum(int16 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 185
    functionName: DatumGetUInt16
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16
    signature: uint16 DatumGetUInt16(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 195
    functionName: UInt16GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum UInt16GetDatum(uint16 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 205
    functionName: DatumGetInt32
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: int32
    signature: int32 DatumGetInt32(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 215
    functionName: Int32GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum Int32GetDatum(int32 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 225
    functionName: DatumGetUInt32
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 DatumGetUInt32(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: UInt32GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum UInt32GetDatum(uint32 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: DatumGetObjectId
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Oid
    signature: Oid DatumGetObjectId(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 255
    functionName: ObjectIdGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum ObjectIdGetDatum(Oid X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 265
    functionName: DatumGetObjectId8
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Oid8
    signature: Oid8 DatumGetObjectId8(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Oid8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 275
    functionName: ObjectId8GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum ObjectId8GetDatum(Oid8 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 285
    functionName: DatumGetTransactionId
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId DatumGetTransactionId(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 295
    functionName: TransactionIdGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum TransactionIdGetDatum(TransactionId X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: MultiXactIdGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum MultiXactIdGetDatum(MultiXactId X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 315
    functionName: DatumGetCommandId
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CommandId
    signature: CommandId DatumGetCommandId(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - CommandId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 325
    functionName: CommandIdGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum CommandIdGetDatum(CommandId X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 335
    functionName: DatumGetPointer
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: Pointer
    signature: Pointer DatumGetPointer(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 356
    functionName: PointerGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PointerGetDatum(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/postgres.h:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 368
    functionName: DatumGetCString
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 24
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: char
    signature: 'char *

      DatumGetCString(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/postgres.h:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 386
    functionName: CStringGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 6
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum CStringGetDatum(const char *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/postgres.h:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 396
    functionName: DatumGetName
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 3
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: Name
    signature: Name DatumGetName(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CStringGetDatum
      Src: /src/postgres/src/include/postgres.h:408,1
    - Dst: NameStr
      Src: /src/postgres/src/include/postgres.h:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - NameData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 405
    functionDepth: 2
    functionLinenumber: 405
    functionLinenumberEnd: 409
    functionName: NameGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached:
    - CStringGetDatum
    - NameStr
    linkageType: ''
    returnType: Datum
    signature: Datum NameGetDatum(const NameData *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 419
    functionName: DatumGetInt64
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 DatumGetInt64(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 429
    functionName: Int64GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum Int64GetDatum(int64 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 439
    functionName: DatumGetUInt64
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 DatumGetUInt64(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 449
    functionName: UInt64GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum UInt64GetDatum(uint64 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/postgres.h:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 474
    functionName: DatumGetFloat4
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 1
    functionsReached:
    - DatumGetInt32
    linkageType: ''
    returnType: float4
    signature: float4 DatumGetFloat4(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/postgres.h:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 491
    functionName: Float4GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum Float4GetDatum(float4 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/postgres.h:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 508
    functionName: DatumGetFloat8
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 2
    functionsReached:
    - DatumGetInt64
    linkageType: ''
    returnType: float8
    signature: float8 DatumGetFloat8(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/postgres.h:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 525
    functionName: Float8GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum Float8GetDatum(float8 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 540
    functionName: Int64GetDatumFast
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Int64GetDatumFast(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 542
    functionName: Float8GetDatumFast
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Float8GetDatumFast(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: PG_WINDOW_OBJECT
    functionSourceFile: /src/postgres/src/include/windowapi.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_WINDOW_OBJECT()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - winobj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: WindowObjectIsValid
    functionSourceFile: /src/postgres/src/include/windowapi.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WindowObjectIsValid(winobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: atooid
    functionSourceFile: /src/postgres/src/include/postgres_ext.h
    functionUses: 76
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atooid(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATT
    - BITS
    argTypes:
    - int
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: att_isnull
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool att_isnull(int ATT, const uint8 *BITS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/access/tupmacs.h:76,1
    - Dst: pg_bswap64
      Src: /src/postgres/src/include/access/tupmacs.h:83,1
    - Dst: memcpy
      Src: /src/postgres/src/include/access/tupmacs.h:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - bits
    - natts
    - isnull
    argTypes:
    - uint8*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 87
    functionName: populate_isnull_array
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached:
    - UINT64CONST
    - pg_bswap64
    - memcpy
    linkageType: ''
    returnType: void
    signature: void populate_isnull_array(const uint8 *bits, int natts, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: fetchatt
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fetchatt(A,T)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CharGetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:115,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:117,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:119,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:121,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tupmacs.h:123,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - T
    - attbyval
    - attlen
    argTypes:
    - void*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 129
    functionName: fetch_att
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 1
    functionsReached:
    - elog
    - Int32GetDatum
    - PointerGetDatum
    - CharGetDatum
    - Int64GetDatum
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum fetch_att(const void *T, bool attbyval, int attlen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:144,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:146,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:148,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tupmacs.h:150,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:151,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - T
    - attbyval
    - attlen
    argTypes:
    - void*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 156
    functionName: fetch_att_noerr
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - Assert
    - PointerGetDatum
    - CharGetDatum
    - Int64GetDatum
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum fetch_att_noerr(const void *T, bool attbyval, int attlen)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: TYPEALIGN
      Src: /src/postgres/src/include/access/tupmacs.h:181,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:189,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:191,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:193,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tupmacs.h:200,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:201,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:204,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/include/access/tupmacs.h:208,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/include/access/tupmacs.h:209,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:211,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/include/access/tupmacs.h:212,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/access/tupmacs.h:212,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tupmacs.h:217,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/include/access/tupmacs.h:218,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:219,1
    - Dst: strlen
      Src: /src/postgres/src/include/access/tupmacs.h:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 5
    argNames:
    - tupptr
    - 'off'
    - attbyval
    - attlen
    - attalignby
    argTypes:
    - char*
    - uint32*
    - bool
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 171
    functionDepth: 4
    functionLinenumber: 171
    functionLinenumberEnd: 223
    functionName: align_fetch_then_add
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached:
    - VARATT_IS_SHORT
    - Int32GetDatum
    - Assert
    - TYPEALIGN
    - VARSIZE_ANY
    - strlen
    - PointerGetDatum
    - DatumGetPointer
    - CharGetDatum
    - Int64GetDatum
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: "Datum align_fetch_then_add(const char *tupptr, uint32 *off, bool attbyval,
      int attlen,\n\t\t\t\t\t uint8 attalignby)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: att_isnull
      Src: /src/postgres/src/include/access/tupmacs.h:256,1
    - Dst: pg_rightmost_one_pos32
      Src: /src/postgres/src/include/access/tupmacs.h:281,1
    - Dst: Min
      Src: /src/postgres/src/include/access/tupmacs.h:287,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tupmacs.h:290,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - bits
    - natts
    argTypes:
    - uint8*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 293
    functionName: first_null_attr
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached:
    - pg_rightmost_one_pos32
    - Min
    - att_isnull
    - Assert
    linkageType: ''
    returnType: int
    signature: int first_null_attr(const uint8 *bits, int natts)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/include/access/tupmacs.h:322,1
    - Dst: fprintf
      Src: /src/postgres/src/include/access/tupmacs.h:324,1
    - Dst: exit
      Src: /src/postgres/src/include/access/tupmacs.h:325,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - typalign
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 331
    functionName: typalign_to_alignby
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 1
    functionsReached:
    - elog
    - exit
    - fprintf
    linkageType: ''
    returnType: uint8
    signature: uint8 typalign_to_alignby(char typalign)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cur_offset
    - ','
    - attalign
    - ','
    - attlen
    - ','
    - attdatum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 347
    functionName: att_align_datum
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: att_align_datum(cur_offset, attalign, attlen, attdatum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cur_offset
    - ','
    - attalignby
    - ','
    - attlen
    - ','
    - attdatum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 357
    functionName: att_datum_alignby
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: att_datum_alignby(cur_offset, attalignby, attlen, attdatum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cur_offset
    - ','
    - attalign
    - ','
    - attlen
    - ','
    - attptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 378
    functionName: att_align_pointer
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: att_align_pointer(cur_offset, attalign, attlen, attptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cur_offset
    - ','
    - attalignby
    - ','
    - attlen
    - ','
    - attptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 388
    functionName: att_pointer_alignby
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: att_pointer_alignby(cur_offset, attalignby, attlen, attptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cur_offset
    - ','
    - attalign
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 406
    functionName: att_align_nominal
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: att_align_nominal(cur_offset, attalign)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cur_offset
    - ','
    - attalignby
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 413
    functionName: att_nominal_alignby
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: att_nominal_alignby(cur_offset, attalignby)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cur_offset
    - ','
    - attlen
    - ','
    - attdatum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 421
    functionName: att_addlength_datum
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: att_addlength_datum(cur_offset, attlen, attdatum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cur_offset
    - ','
    - attlen
    - ','
    - attptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 447
    functionName: att_addlength_pointer
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: att_addlength_pointer(cur_offset, attlen, attptr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetChar
      Src: /src/postgres/src/include/access/tupmacs.h:462,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/include/access/tupmacs.h:465,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/access/tupmacs.h:468,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/access/tupmacs.h:471,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tupmacs.h:474,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - T
    - newdatum
    - attlen
    argTypes:
    - void*
    - Datum
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 476
    functionName: store_att_byval
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached:
    - elog
    - DatumGetInt64
    - DatumGetInt32
    - DatumGetInt16
    - DatumGetChar
    linkageType: ''
    returnType: void
    signature: void store_att_byval(void *T, Datum newdatum, int attlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - itup
    argTypes:
    - IndexTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: IndexTupleSize
    functionSourceFile: /src/postgres/src/include/access/itup.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size
    signature: Size IndexTupleSize(const IndexTupleData *itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - itup
    argTypes:
    - IndexTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: IndexTupleHasNulls
    functionSourceFile: /src/postgres/src/include/access/itup.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IndexTupleHasNulls(const IndexTupleData *itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - itup
    argTypes:
    - IndexTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: IndexTupleHasVarwidths
    functionSourceFile: /src/postgres/src/include/access/itup.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IndexTupleHasVarwidths(const IndexTupleData *itup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/include/access/itup.h:116,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/include/access/itup.h:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t_info
    argTypes:
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: IndexInfoFindDataOffset
    functionSourceFile: /src/postgres/src/include/access/itup.h
    functionUses: 0
    functionsReached:
    - MAXALIGN
    linkageType: ''
    returnType: Size
    signature: Size IndexInfoFindDataOffset(unsigned short t_info)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/itup.h:134,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/itup.h:135,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/include/access/itup.h:139,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/include/access/itup.h:141,1
    - Dst: fetchatt
      Src: /src/postgres/src/include/access/itup.h:145,1
    - Dst: IndexInfoFindDataOffset
      Src: /src/postgres/src/include/access/itup.h:146,1
    - Dst: nocache_index_getattr
      Src: /src/postgres/src/include/access/itup.h:150,1
    - Dst: att_isnull
      Src: /src/postgres/src/include/access/itup.h:154,1
    - Dst: nocache_index_getattr
      Src: /src/postgres/src/include/access/itup.h:160,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - tup
    - attnum
    - tupleDesc
    - isnull
    argTypes:
    - IndexTuple
    - int
    - TupleDesc
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 162
    functionName: index_getattr
    functionSourceFile: /src/postgres/src/include/access/itup.h
    functionUses: 1
    functionsReached:
    - nocache_index_getattr
    - Assert
    - att_isnull
    - IndexTupleHasNulls
    - IndexInfoFindDataOffset
    - TupleDescCompactAttr
    - fetchatt
    linkageType: ''
    returnType: Datum
    signature: Datum index_getattr(IndexTuple tup, int attnum, TupleDesc tupleDesc,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: XL_ROUTINE
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XL_ROUTINE(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 327
    functionName: XLogReaderHasQueuedRecordOrError
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool XLogReaderHasQueuedRecordOrError(XLogReaderState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 409
    functionName: XLogRecGetTotalLen
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetTotalLen(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 410
    functionName: XLogRecGetPrev
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetPrev(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 411
    functionName: XLogRecGetInfo
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetInfo(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 412
    functionName: XLogRecGetRmid
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetRmid(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 413
    functionName: XLogRecGetXid
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetXid(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 414
    functionName: XLogRecGetOrigin
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetOrigin(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 415
    functionName: XLogRecGetTopXid
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetTopXid(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 416
    functionName: XLogRecGetData
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetData(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 417
    functionName: XLogRecGetDataLen
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetDataLen(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 418
    functionName: XLogRecHasAnyBlockRefs
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecHasAnyBlockRefs(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decoder
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 419
    functionName: XLogRecMaxBlockId
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecMaxBlockId(decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - decoder
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 420
    functionName: XLogRecGetBlock
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecGetBlock(decoder, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - decoder
    - ','
    - block_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 423
    functionName: XLogRecHasBlockRef
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecHasBlockRef(decoder, block_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - decoder
    - ','
    - block_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 425
    functionName: XLogRecHasBlockImage
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecHasBlockImage(decoder, block_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - decoder
    - ','
    - block_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 427
    functionName: XLogRecBlockImageApply
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecBlockImageApply(decoder, block_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - decoder
    - ','
    - block_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 429
    functionName: XLogRecHasBlockData
    functionSourceFile: /src/postgres/src/include/access/xlogreader.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecHasBlockData(decoder, block_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nbp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: PAGE_FREE_SPACE
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAGE_FREE_SPACE(nbp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nbp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: PAGE_IS_EMPTY
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAGE_IS_EMPTY(nbp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nbp
    - ','
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: PAGE_NO_SPACE
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAGE_NO_SPACE(nbp, itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: GISTSearchItemIsHeap
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GISTSearchItemIsHeap(item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n_distances
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: SizeOfGISTSearchItem
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeOfGISTSearchItem(n_distances)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 289
    functionName: GistTupleIsInvalid
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistTupleIsInvalid(itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 290
    functionName: GistTupleSetValid
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistTupleSetValid(itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nlevel
    - ','
    - gfbb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: LEVEL_HAS_BUFFERS
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEVEL_HAS_BUFFERS(nlevel, gfbb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nodeBuffer
    - ','
    - gfbb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 326
    functionName: BUFFER_HALF_FILLED
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUFFER_HALF_FILLED(nodeBuffer, gfbb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nodeBuffer
    - ','
    - gfbb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 334
    functionName: BUFFER_OVERFLOWED
    functionSourceFile: /src/postgres/src/include/access/gist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUFFER_OVERFLOWED(nodeBuffer, gfbb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ncols
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: SizeofBrinOpcInfo
    functionSourceFile: /src/postgres/src/include/access/brin_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeofBrinOpcInfo(ncols)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: BRIN_elog
    functionSourceFile: /src/postgres/src/include/access/brin_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BRIN_elog(args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: BRIN_elog
    functionSourceFile: /src/postgres/src/include/access/brin_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BRIN_elog(args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: XLogRecPtrIsValid
    functionSourceFile: /src/postgres/src/include/access/xlogdefs.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecPtrIsValid(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: XLogRecPtrIsInvalid
    functionSourceFile: /src/postgres/src/include/access/xlogdefs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecPtrIsInvalid(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lsn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: LSN_FORMAT_ARGS
    functionSourceFile: /src/postgres/src/include/access/xlogdefs.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LSN_FORMAT_ARGS(lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: BTPageGetOpaque
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTPageGetOpaque(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 124
    functionName: BTPageGetMeta
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTPageGetMeta(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 220
    functionName: P_LEFTMOST
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_LEFTMOST(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 221
    functionName: P_RIGHTMOST
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_RIGHTMOST(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 222
    functionName: P_ISLEAF
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_ISLEAF(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 223
    functionName: P_ISROOT
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_ISROOT(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 224
    functionName: P_ISDELETED
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_ISDELETED(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 225
    functionName: P_ISMETA
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_ISMETA(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: P_ISHALFDEAD
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_ISHALFDEAD(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 227
    functionName: P_IGNORE
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_IGNORE(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 228
    functionName: P_HAS_GARBAGE
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_HAS_GARBAGE(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 229
    functionName: P_INCOMPLETE_SPLIT
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_INCOMPLETE_SPLIT(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 230
    functionName: P_HAS_FULLXID
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_HAS_FULLXID(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/include/access/nbtree.h:246,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/include/access/nbtree.h:251,1
    - Dst: PageGetContents
      Src: /src/postgres/src/include/access/nbtree.h:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - page
    - safexid
    argTypes:
    - Page
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 258
    functionName: BTPageSetDeleted
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - BTPageGetOpaque
    - MAXALIGN
    - PageGetContents
    linkageType: ''
    returnType: void
    signature: void BTPageSetDeleted(Page page, FullTransactionId safexid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:267,1
    - Dst: PageIsNew
      Src: /src/postgres/src/include/access/nbtree.h:267,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/include/access/nbtree.h:268,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:269,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/include/access/nbtree.h:269,1
    - Dst: P_HAS_FULLXID
      Src: /src/postgres/src/include/access/nbtree.h:272,1
    - Dst: PageGetContents
      Src: /src/postgres/src/include/access/nbtree.h:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 278
    functionName: BTPageGetDeleteXid
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - PageIsNew
    - PageGetContents
    - P_ISDELETED
    - BTPageGetOpaque
    - P_HAS_FULLXID
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId BTPageGetDeleteXid(Page page)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:296,1
    - Dst: PageIsNew
      Src: /src/postgres/src/include/access/nbtree.h:296,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:297,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/include/access/nbtree.h:300,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/include/access/nbtree.h:301,1
    - Dst: BTPageGetDeleteXid
      Src: /src/postgres/src/include/access/nbtree.h:303,1
    - Dst: GlobalVisCheckRemovableFullXid
      Src: /src/postgres/src/include/access/nbtree.h:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - page
    - heaprel
    argTypes:
    - Page
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 319
    functionName: BTPageIsRecyclable
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - PageIsNew
    - P_ISDELETED
    - GlobalVisCheckRemovableFullXid
    - BTPageGetOpaque
    - BTPageGetDeleteXid
    linkageType: ''
    returnType: bool
    signature: bool BTPageIsRecyclable(Page page, Relation heaprel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 371
    functionName: P_FIRSTDATAKEY
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: P_FIRSTDATAKEY(opaque)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/include/access/nbtree.h:486,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - itup
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 490
    functionName: BTreeTupleIsPivot
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - ItemPointerGetOffsetNumberNoCheck
    linkageType: ''
    returnType: bool
    signature: bool BTreeTupleIsPivot(IndexTuple itup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/include/access/nbtree.h:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - itup
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 502
    functionName: BTreeTupleIsPosting
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - ItemPointerGetOffsetNumberNoCheck
    linkageType: ''
    returnType: bool
    signature: bool BTreeTupleIsPosting(IndexTuple itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:507,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:508,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:509,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/include/access/nbtree.h:509,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:510,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:511,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/include/access/nbtree.h:511,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/include/access/nbtree.h:514,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/include/access/nbtree.h:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - itup
    - nhtids
    - postingoffset
    argTypes:
    - IndexTuple
    - uint16
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 504
    functionDepth: 2
    functionLinenumber: 504
    functionLinenumberEnd: 516
    functionName: BTreeTupleSetPosting
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - ItemPointerSetOffsetNumber
    - Assert
    - BTreeTupleIsPivot
    - ItemPointerSetBlockNumber
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void BTreeTupleSetPosting(IndexTuple itup, uint16 nhtids, int postingoffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:523,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/include/access/nbtree.h:523,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/include/access/nbtree.h:525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - posting
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 518
    functionDepth: 2
    functionLinenumber: 518
    functionLinenumberEnd: 527
    functionName: BTreeTupleGetNPosting
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerGetOffsetNumberNoCheck
    - BTreeTupleIsPosting
    linkageType: ''
    returnType: uint16
    signature: uint16 BTreeTupleGetNPosting(IndexTuple posting)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:532,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/include/access/nbtree.h:532,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/include/access/nbtree.h:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - posting
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 529
    functionDepth: 2
    functionLinenumber: 529
    functionLinenumberEnd: 535
    functionName: BTreeTupleGetPostingOffset
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerGetBlockNumberNoCheck
    - BTreeTupleIsPosting
    linkageType: ''
    returnType: uint32
    signature: uint32 BTreeTupleGetPostingOffset(IndexTuple posting)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/include/access/nbtree.h:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - posting
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 537
    functionDepth: 3
    functionLinenumber: 537
    functionLinenumberEnd: 542
    functionName: BTreeTupleGetPosting
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - BTreeTupleGetPostingOffset
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer BTreeTupleGetPosting(IndexTuple posting)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/include/access/nbtree.h:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - posting
    - n
    argTypes:
    - IndexTuple
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 544
    functionDepth: 4
    functionLinenumber: 544
    functionLinenumberEnd: 548
    functionName: BTreeTupleGetPostingN
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - BTreeTupleGetPosting
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer BTreeTupleGetPostingN(IndexTuple posting, int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/include/access/nbtree.h:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pivot
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 560
    functionName: BTreeTupleGetDownLink
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumberNoCheck
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber BTreeTupleGetDownLink(IndexTuple pivot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/include/access/nbtree.h:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pivot
    - blkno
    argTypes:
    - IndexTuple
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 566
    functionName: BTreeTupleSetDownLink
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - ItemPointerSetBlockNumber
    linkageType: ''
    returnType: void
    signature: void BTreeTupleSetDownLink(IndexTuple pivot, BlockNumber blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - itup
    - ','
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 587
    functionName: BTreeTupleGetNAtts
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTreeTupleGetNAtts(itup, rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:598,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:599,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:600,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:601,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/include/access/nbtree.h:601,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/include/access/nbtree.h:609,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:610,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/include/access/nbtree.h:610,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - itup
    - nkeyatts
    - heaptid
    argTypes:
    - IndexTuple
    - uint16
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 595
    functionDepth: 2
    functionLinenumber: 595
    functionLinenumberEnd: 611
    functionName: BTreeTupleSetNAtts
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - BTreeTupleIsPivot
    - ItemPointerSetOffsetNumber
    linkageType: ''
    returnType: void
    signature: void BTreeTupleSetNAtts(IndexTuple itup, uint16 nkeyatts, bool heaptid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/include/access/nbtree.h:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - leafhikey
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 620
    functionDepth: 1
    functionLinenumber: 620
    functionLinenumberEnd: 624
    functionName: BTreeTupleGetTopParent
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumberNoCheck
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber BTreeTupleGetTopParent(IndexTuple leafhikey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/include/access/nbtree.h:629,1
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/include/access/nbtree.h:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - leafhikey
    - blkno
    argTypes:
    - IndexTuple
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 626
    functionDepth: 3
    functionLinenumber: 626
    functionLinenumberEnd: 631
    functionName: BTreeTupleSetTopParent
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - BTreeTupleSetNAtts
    - ItemPointerSetBlockNumber
    linkageType: ''
    returnType: void
    signature: void BTreeTupleSetTopParent(IndexTuple leafhikey, BlockNumber blkno)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/include/access/nbtree.h:641,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/include/access/nbtree.h:644,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/include/access/nbtree.h:646,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/include/access/nbtree.h:652,1
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/include/access/nbtree.h:653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - itup
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 638
    functionDepth: 4
    functionLinenumber: 638
    functionLinenumberEnd: 656
    functionName: BTreeTupleGetHeapTID
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - BTreeTupleGetPosting
    - BTreeTupleIsPosting
    - ItemPointerGetOffsetNumberNoCheck
    - BTreeTupleIsPivot
    - IndexTupleSize
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer BTreeTupleGetHeapTID(IndexTuple itup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/nbtree.h:667,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/include/access/nbtree.h:667,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/include/access/nbtree.h:669,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/include/access/nbtree.h:671,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/include/access/nbtree.h:673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - itup
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 664
    functionDepth: 5
    functionLinenumber: 664
    functionLinenumberEnd: 677
    functionName: BTreeTupleGetMaxHeapTID
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached:
    - BTreeTupleGetNPosting
    - BTreeTupleIsPosting
    - Assert
    - BTreeTupleGetPostingN
    - BTreeTupleIsPivot
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer BTreeTupleGetMaxHeapTID(IndexTuple itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - strat
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 686
    functionDepth: 0
    functionLinenumber: 686
    functionLinenumberEnd: 687
    functionName: BTCommuteStrategyNumber
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTCommuteStrategyNumber(strat)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - scanpos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 1004
    functionDepth: 0
    functionLinenumber: 1004
    functionLinenumberEnd: 1010
    functionName: BTScanPosIsPinned
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTScanPosIsPinned(scanpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - scanpos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1010
    functionDepth: 0
    functionLinenumber: 1010
    functionLinenumberEnd: 1015
    functionName: BTScanPosUnpin
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTScanPosUnpin(scanpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - scanpos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1020
    functionName: BTScanPosUnpinIfPinned
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTScanPosUnpinIfPinned(scanpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - scanpos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1027
    functionName: BTScanPosIsValid
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTScanPosIsValid(scanpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - scanpos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1032
    functionName: BTScanPosInvalidate
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTScanPosInvalidate(scanpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1127
    functionDepth: 0
    functionLinenumber: 1127
    functionLinenumberEnd: 1133
    functionName: BTGetFillFactor
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTGetFillFactor(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1135
    functionName: BTGetTargetPageFreeSpace
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTGetTargetPageFreeSpace(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1135
    functionDepth: 0
    functionLinenumber: 1135
    functionLinenumberEnd: 1140
    functionName: BTGetDeduplicateItems
    functionSourceFile: /src/postgres/src/include/access/nbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BTGetDeduplicateItems(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - metap
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: BUCKET_TO_BLKNO
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUCKET_TO_BLKNO(metap,B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: HashPageGetOpaque
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashPageGetOpaque(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: H_NEEDS_SPLIT_CLEANUP
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H_NEEDS_SPLIT_CLEANUP(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: H_BUCKET_BEING_SPLIT
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H_BUCKET_BEING_SPLIT(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: H_BUCKET_BEING_POPULATED
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H_BUCKET_BEING_POPULATED(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opaque
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: H_HAS_DEAD_TUPLES
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H_HAS_DEAD_TUPLES(opaque)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - scanpos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: HashScanPosIsPinned
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashScanPosIsPinned(scanpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - scanpos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 143
    functionName: HashScanPosIsValid
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashScanPosIsValid(scanpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - scanpos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 154
    functionName: HashScanPosInvalidate
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashScanPosInvalidate(scanpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 281
    functionName: HashGetFillFactor
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashGetFillFactor(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 283
    functionName: HashGetTargetPageUsage
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashGetTargetPageUsage(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 292
    functionName: HashMaxItemSize
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashMaxItemSize(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - metap
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 312
    functionName: BMPGSZ_BYTE
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BMPGSZ_BYTE(metap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - metap
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 313
    functionName: BMPGSZ_BIT
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BMPGSZ_BIT(metap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - metap
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 314
    functionName: BMPG_SHIFT
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BMPG_SHIFT(metap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - metap
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 315
    functionName: BMPG_MASK
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BMPG_MASK(metap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 318
    functionName: HashPageGetBitmap
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashPageGetBitmap(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: HashGetMaxBitmapSize
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashGetMaxBitmapSize(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 325
    functionName: HashPageGetMeta
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HashPageGetMeta(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 333
    functionName: CLRBIT
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CLRBIT(A, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 334
    functionName: SETBIT
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETBIT(A, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 335
    functionName: ISSET
    functionSourceFile: /src/postgres/src/include/access/hash.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISSET(A, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: BrinPageType
    functionSourceFile: /src/postgres/src/include/access/brin_page.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BrinPageType(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: BrinPageFlags
    functionSourceFile: /src/postgres/src/include/access/brin_page.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BrinPageFlags(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: BRIN_IS_META_PAGE
    functionSourceFile: /src/postgres/src/include/access/brin_page.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BRIN_IS_META_PAGE(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: BRIN_IS_REVMAP_PAGE
    functionSourceFile: /src/postgres/src/include/access/brin_page.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BRIN_IS_REVMAP_PAGE(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: BRIN_IS_REGULAR_PAGE
    functionSourceFile: /src/postgres/src/include/access/brin_page.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BRIN_IS_REGULAR_PAGE(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: MultiXactIdToOffsetPage
    functionSourceFile: /src/postgres/src/include/access/multixact_internal.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 MultiXactIdToOffsetPage(MultiXactId multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: MultiXactIdToOffsetEntry
    functionSourceFile: /src/postgres/src/include/access/multixact_internal.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int MultiXactIdToOffsetEntry(MultiXactId multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/include/access/multixact_internal.h:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: MultiXactIdToOffsetSegment
    functionSourceFile: /src/postgres/src/include/access/multixact_internal.h
    functionUses: 0
    functionsReached:
    - MultiXactIdToOffsetPage
    linkageType: ''
    returnType: int64
    signature: int64 MultiXactIdToOffsetSegment(MultiXactId multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: MXOffsetToMemberPage
    functionSourceFile: /src/postgres/src/include/access/multixact_internal.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 MXOffsetToMemberPage(MultiXactOffset offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/include/access/multixact_internal.h:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: MXOffsetToMemberSegment
    functionSourceFile: /src/postgres/src/include/access/multixact_internal.h
    functionUses: 0
    functionsReached:
    - MXOffsetToMemberPage
    linkageType: ''
    returnType: int64
    signature: int64 MXOffsetToMemberSegment(MultiXactOffset offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: MXOffsetToFlagsOffset
    functionSourceFile: /src/postgres/src/include/access/multixact_internal.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int MXOffsetToFlagsOffset(MultiXactOffset offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 111
    functionName: MXOffsetToFlagsBitShift
    functionSourceFile: /src/postgres/src/include/access/multixact_internal.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int MXOffsetToFlagsBitShift(MultiXactOffset offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/include/access/multixact_internal.h:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 122
    functionName: MXOffsetToMemberOffset
    functionSourceFile: /src/postgres/src/include/access/multixact_internal.h
    functionUses: 2
    functionsReached:
    - MXOffsetToFlagsOffset
    linkageType: ''
    returnType: int
    signature: int MXOffsetToMemberOffset(MultiXactOffset offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/multixact_internal.h:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - new_offset
    - old_offset
    argTypes:
    - MultiXactOffset
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 134
    functionName: MultiXactOffsetStorageSize
    functionSourceFile: /src/postgres/src/include/access/multixact_internal.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint64
    signature: "uint64 MultiXactOffsetStorageSize(MultiXactOffset new_offset,\n\t\t\t\t\t\t
      \  MultiXactOffset old_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - info
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: BKPIMAGE_COMPRESSED
    functionSourceFile: /src/postgres/src/include/access/xlogrecord.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BKPIMAGE_COMPRESSED(info)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tuple
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: HeapTupleIsValid
    functionSourceFile: /src/postgres/src/include/access/htup.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeapTupleIsValid(tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: GinGetUseFastUpdate
    functionSourceFile: /src/postgres/src/include/access/gin_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinGetUseFastUpdate(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: GinGetPendingListCleanupSize
    functionSourceFile: /src/postgres/src/include/access/gin_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinGetPendingListCleanupSize(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/include/access/gin_private.h:494,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/include/access/gin_private.h:494,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/include/access/gin_private.h:495,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/include/access/gin_private.h:495,1
    - Dst: pg_cmp_u64
      Src: /src/postgres/src/include/access/gin_private.h:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ItemPointerData*
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 498
    functionName: ginCompareItemPointers
    functionSourceFile: /src/postgres/src/include/access/gin_private.h
    functionUses: 0
    functionsReached:
    - GinItemPointerGetBlockNumber
    - GinItemPointerGetOffsetNumber
    - pg_cmp_u64
    linkageType: ''
    returnType: int
    signature: int ginCompareItemPointers(const ItemPointerData *a, const ItemPointerData
      *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/access/gin_private.h:517,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/include/access/gin_private.h:517,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - ginstate
    - attnum
    - a
    - categorya
    - b
    - categoryb
    argTypes:
    - GinState*
    - OffsetNumber
    - Datum
    - GinNullCategory
    - Datum
    - GinNullCategory
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 520
    functionName: ginCompareEntries
    functionSourceFile: /src/postgres/src/include/access/gin_private.h
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    linkageType: ''
    returnType: int
    signature: "int ginCompareEntries(GinState *ginstate, OffsetNumber attnum,\n\t\t\t\t
      \ Datum a, GinNullCategory categorya,\n\t\t\t\t  Datum b, GinNullCategory categoryb)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ginCompareEntries
      Src: /src/postgres/src/include/access/gin_private.h:534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 7
    argNames:
    - ginstate
    - attnuma
    - a
    - categorya
    - attnumb
    - b
    - categoryb
    argTypes:
    - GinState*
    - OffsetNumber
    - Datum
    - GinNullCategory
    - OffsetNumber
    - Datum
    - GinNullCategory
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 536
    functionName: ginCompareAttEntries
    functionSourceFile: /src/postgres/src/include/access/gin_private.h
    functionUses: 0
    functionsReached:
    - ginCompareEntries
    linkageType: ''
    returnType: int
    signature: "int ginCompareAttEntries(GinState *ginstate,\n\t\t\t\t\t OffsetNumber
      attnuma, Datum a, GinNullCategory categorya,\n\t\t\t\t\t OffsetNumber attnumb,
      Datum b, GinNullCategory categoryb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: BrinGetPagesPerRange
    functionSourceFile: /src/postgres/src/include/access/brin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BrinGetPagesPerRange(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: BrinGetAutoSummarize
    functionSourceFile: /src/postgres/src/include/access/brin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BrinGetAutoSummarize(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: IsolationUsesXactSnapshot
    functionSourceFile: /src/postgres/src/include/access/xact.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsolationUsesXactSnapshot()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: IsolationIsSerializable
    functionSourceFile: /src/postgres/src/include/access/xact.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsolationIsSerializable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xinfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 214
    functionName: XactCompletionApplyFeedback
    functionSourceFile: /src/postgres/src/include/access/xact.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XactCompletionApplyFeedback(xinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xinfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 216
    functionName: XactCompletionRelcacheInitFileInval
    functionSourceFile: /src/postgres/src/include/access/xact.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XactCompletionRelcacheInitFileInval(xinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xinfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: XactCompletionForceSyncCommit
    functionSourceFile: /src/postgres/src/include/access/xact.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XactCompletionForceSyncCommit(xinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - multi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: MultiXactIdIsValid
    functionSourceFile: /src/postgres/src/include/access/multixact.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MultiXactIdIsValid(multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - status
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: ISUPDATE_from_mxstatus
    functionSourceFile: /src/postgres/src/include/access/multixact.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISUPDATE_from_mxstatus(status)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 107
    functionName: GinPageGetMeta
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageGetMeta(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: GinPageGetOpaque
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageGetOpaque(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    functionName: GinPageIsLeaf
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageIsLeaf(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: GinPageSetLeaf
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageSetLeaf(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: GinPageSetNonLeaf
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageSetNonLeaf(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: GinPageIsData
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageIsData(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: GinPageSetData
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageSetData(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: GinPageIsList
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageIsList(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: GinPageSetList
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageSetList(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: GinPageHasFullRow
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageHasFullRow(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: GinPageSetFullRow
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageSetFullRow(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: GinPageIsCompressed
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageIsCompressed(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    functionName: GinPageSetCompressed
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageSetCompressed(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 126
    functionName: GinPageIsDeleted
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageIsDeleted(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: GinPageSetDeleted
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageSetDeleted(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    functionName: GinPageSetNonDeleted
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageSetNonDeleted(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    functionName: GinPageIsIncompleteSplit
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageIsIncompleteSplit(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: GinPageRightMost
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageRightMost(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: GinPageGetDeleteXid
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageGetDeleteXid(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - page
    - ','
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 138
    functionName: GinPageSetDeleteXid
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinPageSetDeleteXid(page, xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pointer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 146
    functionName: GinItemPointerGetBlockNumber
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinItemPointerGetBlockNumber(pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pointer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: GinItemPointerGetOffsetNumber
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinItemPointerGetOffsetNumber(pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pointer
    - ','
    - blkno
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 152
    functionName: GinItemPointerSetBlockNumber
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinItemPointerSetBlockNumber(pointer, blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pointer
    - ','
    - offnum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: GinItemPointerSetOffsetNumber
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinItemPointerSetOffsetNumber(pointer, offnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: ItemPointerSetMin
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemPointerSetMin(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: ItemPointerIsMin
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemPointerIsMin(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: ItemPointerSetMax
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemPointerSetMax(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 176
    functionName: ItemPointerSetLossyPage
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemPointerSetLossyPage(p, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: ItemPointerIsLossyPage
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemPointerIsLossyPage(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pointer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 192
    functionName: PostingItemGetBlockNumber
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PostingItemGetBlockNumber(pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pointer
    - ','
    - blockNumber
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: PostingItemSetBlockNumber
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PostingItemSetBlockNumber(pointer, blockNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - itup
    - ','
    - ginstate
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 221
    functionName: GinCategoryOffset
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinCategoryOffset(itup,ginstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - itup
    - ','
    - ginstate
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 223
    functionName: GinGetNullCategory
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinGetNullCategory(itup,ginstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - itup
    - ','
    - ginstate
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 225
    functionName: GinSetNullCategory
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinSetNullCategory(itup,ginstate,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 230
    functionName: GinGetNPosting
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinGetNPosting(itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - itup
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 231
    functionName: GinSetNPosting
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinSetNPosting(itup,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 233
    functionName: GinIsPostingTree
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinIsPostingTree(itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - itup
    - ','
    - blkno
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 234
    functionName: GinSetPostingTree
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinSetPostingTree(itup, blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 235
    functionName: GinGetPostingTree
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinGetPostingTree(itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 238
    functionName: GinGetPostingOffset
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinGetPostingOffset(itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - itup
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 239
    functionName: GinSetPostingOffset
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinSetPostingOffset(itup,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 240
    functionName: GinGetPosting
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinGetPosting(itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 241
    functionName: GinItupIsCompressed
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinItupIsCompressed(itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 259
    functionName: GinGetDownlink
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinGetDownlink(itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - itup
    - ','
    - blkno
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 260
    functionName: GinSetDownlink
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinSetDownlink(itup,blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 281
    functionName: GinDataLeafPageGetPostingList
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinDataLeafPageGetPostingList(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 283
    functionName: GinDataLeafPageGetPostingListSize
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinDataLeafPageGetPostingListSize(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 286
    functionName: GinDataLeafPageIsEmpty
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinDataLeafPageIsEmpty(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 288
    functionName: GinDataLeafPageGetFreeSpace
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinDataLeafPageGetFreeSpace(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 290
    functionName: GinDataPageGetRightBound
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinDataPageGetRightBound(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 298
    functionName: GinDataPageGetData
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinDataPageGetData(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - page
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 301
    functionName: GinDataPageGetPostingItem
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinDataPageGetPostingItem(page, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - page
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 315
    functionName: GinDataPageSetDataSize
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinDataPageSetDataSize(page, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: GinNonLeafDataPageGetFreeSpace
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinNonLeafDataPageGetFreeSpace(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - plist
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 344
    functionName: SizeOfGinPostingList
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeOfGinPostingList(plist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cur
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 345
    functionName: GinNextPostingListSegment
    functionSourceFile: /src/postgres/src/include/access/ginblock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinNextPostingListSegment(cur)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: ScanDirectionCombine
    functionSourceFile: /src/postgres/src/include/access/sdir.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ScanDirectionCombine(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - direction
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: ScanDirectionIsValid
    functionSourceFile: /src/postgres/src/include/access/sdir.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ScanDirectionIsValid(direction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - direction
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: ScanDirectionIsBackward
    functionSourceFile: /src/postgres/src/include/access/sdir.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ScanDirectionIsBackward(direction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - direction
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: ScanDirectionIsNoMovement
    functionSourceFile: /src/postgres/src/include/access/sdir.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ScanDirectionIsNoMovement(direction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - direction
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: ScanDirectionIsForward
    functionSourceFile: /src/postgres/src/include/access/sdir.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ScanDirectionIsForward(direction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: XLogPageHeaderSize
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogPageHeaderSize(hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: IsPowerOf2
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsPowerOf2(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: IsValidWalSegSize
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsValidWalSegSize(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wal_segsz_bytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: XLogSegmentsPerXLogId
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogSegmentsPerXLogId(wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - segno
    - ','
    - offset
    - ','
    - wal_segsz_bytes
    - ','
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: XLogSegNoOffsetToRecPtr
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogSegNoOffsetToRecPtr(segno, offset, wal_segsz_bytes, dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - xlogptr
    - ','
    - wal_segsz_bytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 107
    functionName: XLogSegmentOffset
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogSegmentOffset(xlogptr, wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - xlrp
    - ','
    - logSegNo
    - ','
    - wal_segsz_bytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: XLByteToSeg
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLByteToSeg(xlrp, logSegNo, wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - xlrp
    - ','
    - logSegNo
    - ','
    - wal_segsz_bytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: XLByteToPrevSeg
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLByteToPrevSeg(xlrp, logSegNo, wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mbvar
    - ','
    - wal_segsz_bytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: XLogMBVarToSegs
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogMBVarToSegs(mbvar, wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - xlrp
    - ','
    - logSegNo
    - ','
    - wal_segsz_bytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 137
    functionName: XLByteInSeg
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLByteInSeg(xlrp, logSegNo, wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - xlrp
    - ','
    - logSegNo
    - ','
    - wal_segsz_bytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 140
    functionName: XLByteInPrevSeg
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLByteInPrevSeg(xlrp, logSegNo, wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xlrp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: XRecOffIsValid
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XRecOffIsValid(xlrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/include/access/xlog_internal.h:167,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:168,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fname
    - tli
    - logSegNo
    - wal_segsz_bytes
    argTypes:
    - char*
    - TimeLineID
    - XLogSegNo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 170
    functionName: XLogFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 17
    functionsReached:
    - XLogSegmentsPerXLogId
    - snprintf
    linkageType: ''
    returnType: void
    signature: void XLogFileName(char *fname, TimeLineID tli, XLogSegNo logSegNo,
      int wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/include/access/xlog_internal.h:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fname
    - tli
    - log
    - seg
    argTypes:
    - char*
    - TimeLineID
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: XLogFileNameById
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void XLogFileNameById(char *fname, TimeLineID tli, uint32 log, uint32
      seg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:181,1
    - Dst: strspn
      Src: /src/postgres/src/include/access/xlog_internal.h:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 183
    functionName: IsXLogFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 7
    functionsReached:
    - strspn
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool IsXLogFileName(const char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:193,1
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:193,1
    - Dst: strspn
      Src: /src/postgres/src/include/access/xlog_internal.h:194,1
    - Dst: strcmp
      Src: /src/postgres/src/include/access/xlog_internal.h:195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: IsPartialXLogFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 4
    functionsReached:
    - strspn
    - strlen
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool IsPartialXLogFileName(const char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/include/access/xlog_internal.h:204,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - fname
    - tli
    - logSegNo
    - wal_segsz_bytes
    argTypes:
    - char*
    - TimeLineID*
    - XLogSegNo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: XLogFromFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 7
    functionsReached:
    - XLogSegmentsPerXLogId
    - sscanf
    linkageType: ''
    returnType: void
    signature: void XLogFromFileName(const char *fname, TimeLineID *tli, XLogSegNo
      *logSegNo, int wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/include/access/xlog_internal.h:211,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:212,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - path
    - tli
    - logSegNo
    - wal_segsz_bytes
    argTypes:
    - char*
    - TimeLineID
    - XLogSegNo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 214
    functionName: XLogFilePath
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 1
    functionsReached:
    - XLogSegmentsPerXLogId
    - snprintf
    linkageType: ''
    returnType: void
    signature: void XLogFilePath(char *path, TimeLineID tli, XLogSegNo logSegNo, int
      wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/include/access/xlog_internal.h:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fname
    - tli
    argTypes:
    - char*
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: TLHistoryFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 2
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void TLHistoryFileName(char *fname, TimeLineID tli)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:225,1
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:225,1
    - Dst: strspn
      Src: /src/postgres/src/include/access/xlog_internal.h:226,1
    - Dst: strcmp
      Src: /src/postgres/src/include/access/xlog_internal.h:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 228
    functionName: IsTLHistoryFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached:
    - strspn
    - strlen
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool IsTLHistoryFileName(const char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/include/access/xlog_internal.h:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - tli
    argTypes:
    - char*
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: TLHistoryFilePath
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void TLHistoryFilePath(char *path, TimeLineID tli)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/include/access/xlog_internal.h:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - path
    - xlog
    - suffix
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 240
    functionName: StatusFilePath
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void StatusFilePath(char *path, const char *xlog, const char *suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/include/access/xlog_internal.h:245,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:246,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:247,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/include/access/xlog_internal.h:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - fname
    - tli
    - logSegNo
    - startpoint
    - wal_segsz_bytes
    argTypes:
    - char*
    - TimeLineID
    - XLogSegNo
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 249
    functionName: BackupHistoryFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 2
    functionsReached:
    - XLogSegmentsPerXLogId
    - XLogSegmentOffset
    - snprintf
    linkageType: ''
    returnType: void
    signature: void BackupHistoryFileName(char *fname, TimeLineID tli, XLogSegNo logSegNo,
      XLogRecPtr startpoint, int wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:254,1
    - Dst: strspn
      Src: /src/postgres/src/include/access/xlog_internal.h:255,1
    - Dst: strcmp
      Src: /src/postgres/src/include/access/xlog_internal.h:256,1
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:256,1
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 257
    functionName: IsBackupHistoryFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 2
    functionsReached:
    - strspn
    - strlen
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool IsBackupHistoryFileName(const char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/include/access/xlog_internal.h:262,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:263,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:264,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/include/access/xlog_internal.h:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - path
    - tli
    - logSegNo
    - startpoint
    - wal_segsz_bytes
    argTypes:
    - char*
    - TimeLineID
    - XLogSegNo
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: BackupHistoryFilePath
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached:
    - XLogSegmentsPerXLogId
    - XLogSegmentOffset
    - snprintf
    linkageType: ''
    returnType: void
    signature: void BackupHistoryFilePath(char *path, TimeLineID tli, XLogSegNo logSegNo,
      XLogRecPtr startpoint, int wal_segsz_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rmid
    argTypes:
    - RmgrId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 375
    functionName: RmgrIdExists
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RmgrIdExists(RmgrId rmid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/access/xlog_internal.h:380,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/include/access/xlog_internal.h:380,1
    - Dst: RmgrNotFound
      Src: /src/postgres/src/include/access/xlog_internal.h:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rmid
    argTypes:
    - RmgrId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 383
    functionName: GetRmgr
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached:
    - unlikely
    - RmgrNotFound
    - RmgrIdExists
    linkageType: ''
    returnType: RmgrData
    signature: RmgrData GetRmgr(RmgrId rmid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tuplesPerPage
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: MaximumBytesPerTuple
    functionSourceFile: /src/postgres/src/include/access/heaptoast.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MaximumBytesPerTuple(tuplesPerPage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cm
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: CompressionMethodIsValid
    functionSourceFile: /src/postgres/src/include/access/toast_compression.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CompressionMethodIsValid(cm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 171
    functionName: GistPageGetOpaque
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistPageGetOpaque(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: GistPageIsLeaf
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistPageIsLeaf(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - entry
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    functionName: GIST_LEAF
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GIST_LEAF(entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: GistPageIsDeleted
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistPageIsDeleted(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 178
    functionName: GistTuplesDeleted
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistTuplesDeleted(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 179
    functionName: GistMarkTuplesDeleted
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistMarkTuplesDeleted(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 180
    functionName: GistClearTuplesDeleted
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistClearTuplesDeleted(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 182
    functionName: GistPageHasGarbage
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistPageHasGarbage(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 183
    functionName: GistMarkPageHasGarbage
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistMarkPageHasGarbage(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 184
    functionName: GistClearPageHasGarbage
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistClearPageHasGarbage(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    functionName: GistFollowRight
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistFollowRight(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    functionName: GistMarkFollowRight
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistMarkFollowRight(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    functionName: GistClearFollowRight
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistClearFollowRight(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    functionName: GistPageGetNSN
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistPageGetNSN(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - page
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: GistPageSetNSN
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GistPageSetNSN(page, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/gist.h:209,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/include/access/gist.h:209,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/include/access/gist.h:211,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/include/access/gist.h:212,1
    - Dst: PageGetContents
      Src: /src/postgres/src/include/access/gist.h:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - page
    - deletexid
    argTypes:
    - Page
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 215
    functionName: GistPageSetDeleted
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached:
    - GistPageGetOpaque
    - Assert
    - PageGetContents
    - PageIsEmpty
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void GistPageSetDeleted(Page page, FullTransactionId deletexid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/gist.h:220,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/include/access/gist.h:220,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/include/access/gist.h:223,1
    - Dst: PageGetContents
      Src: /src/postgres/src/include/access/gist.h:226,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/include/access/gist.h:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 230
    functionName: GistPageGetDeleteXid
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached:
    - Assert
    - PageGetContents
    - GistPageIsDeleted
    - FullTransactionIdFromEpochAndXid
    - MAXALIGN
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId GistPageGetDeleteXid(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - e
    - ','
    - k
    - ','
    - r
    - ','
    - pg
    - ','
    - o
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 250
    functionName: gistentryinit
    functionSourceFile: /src/postgres/src/include/access/gist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gistentryinit(e, k, r, pg, o, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - desc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: TupleDescAttrAddress
    functionSourceFile: /src/postgres/src/include/access/tupdesc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TupleDescAttrAddress(desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttrAddress
      Src: /src/postgres/src/include/access/tupdesc.h:180,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tupdesc.h:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - tupdesc
    - i
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 185
    functionName: TupleDescAttr
    functionSourceFile: /src/postgres/src/include/access/tupdesc.h
    functionUses: 24
    functionsReached:
    - Assert
    - TupleDescAttrAddress
    linkageType: ''
    returnType: FormData_pg_attribute
    signature: 'FormData_pg_attribute *

      TupleDescAttr(TupleDesc tupdesc, int i)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verify_compact_attribute
      Src: /src/postgres/src/include/access/tupdesc.h:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tupdesc
    - i
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 206
    functionName: TupleDescCompactAttr
    functionSourceFile: /src/postgres/src/include/access/tupdesc.h
    functionUses: 2
    functionsReached:
    - verify_compact_attribute
    linkageType: ''
    returnType: CompactAttribute
    signature: 'CompactAttribute *

      TupleDescCompactAttr(TupleDesc tupdesc, int i)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - src
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 222
    functionName: TupleDescSize
    functionSourceFile: /src/postgres/src/include/access/tupdesc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TupleDescSize(src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tupdesc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 239
    functionName: PinTupleDesc
    functionSourceFile: /src/postgres/src/include/access/tupdesc.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PinTupleDesc(tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tupdesc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 245
    functionName: ReleaseTupleDesc
    functionSourceFile: /src/postgres/src/include/access/tupdesc.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ReleaseTupleDesc(tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: DatumGetGinTernaryValue
    functionSourceFile: /src/postgres/src/include/access/gin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: GinTernaryValue
    signature: GinTernaryValue DatumGetGinTernaryValue(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - GinTernaryValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: GinTernaryValueGetDatum
    functionSourceFile: /src/postgres/src/include/access/gin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum GinTernaryValueGetDatum(GinTernaryValue X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: PG_RETURN_GIN_TERNARY_VALUE
    functionSourceFile: /src/postgres/src/include/access/gin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_GIN_TERNARY_VALUE(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:921,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:922,1
    - Dst: unlikely
      Src: /src/postgres/src/include/access/tableam.h:930,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/tableam.h:930,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tableam.h:931,1
    - Dst: Relation::rd_tableam::scan_begin
      Src: /src/postgres/src/include/access/tableam.h:933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 7
    argNames:
    - rel
    - snapshot
    - nkeys
    - key
    - pscan
    - flags
    - user_flags
    argTypes:
    - Relation
    - Snapshot
    - int
    - ScanKeyData*
    - ParallelTableScanDesc
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 916
    functionDepth: 1
    functionLinenumber: 916
    functionLinenumberEnd: 934
    functionName: table_beginscan_common
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - TransactionIdIsValid
    - unlikely
    - Relation::rd_tableam::scan_begin
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_common(Relation rel, Snapshot snapshot,
      int nkeys,\n\t\t\t\t\t   ScanKeyData *key, ParallelTableScanDesc pscan,\n\t\t\t\t\t
      \  uint32 flags, uint32 user_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_beginscan_common
      Src: /src/postgres/src/include/access/tableam.h:949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rel
    - snapshot
    - nkeys
    - key
    - flags
    argTypes:
    - Relation
    - Snapshot
    - int
    - ScanKeyData*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 951
    functionName: table_beginscan
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - table_beginscan_common
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan(Relation rel, Snapshot snapshot,\n\t\t\t\tint
      nkeys, ScanKeyData *key, uint32 flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_beginscan_common
      Src: /src/postgres/src/include/access/tableam.h:979,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - rel
    - snapshot
    - nkeys
    - key
    - allow_strat
    - allow_sync
    argTypes:
    - Relation
    - Snapshot
    - int
    - ScanKeyData*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 967
    functionDepth: 2
    functionLinenumber: 967
    functionLinenumberEnd: 981
    functionName: table_beginscan_strat
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - table_beginscan_common
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_strat(Relation rel, Snapshot snapshot,\n\t\t\t\t\t
      \ int nkeys, ScanKeyData *key,\n\t\t\t\t\t  bool allow_strat, bool allow_sync)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_beginscan_common
      Src: /src/postgres/src/include/access/tableam.h:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rel
    - snapshot
    - nkeys
    - key
    - flags
    argTypes:
    - Relation
    - Snapshot
    - int
    - ScanKeyData*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 991
    functionDepth: 2
    functionLinenumber: 991
    functionLinenumberEnd: 999
    functionName: table_beginscan_bm
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - table_beginscan_common
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_bm(Relation rel, Snapshot snapshot,\n\t\t\t\t
      \  int nkeys, ScanKeyData *key, uint32 flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_beginscan_common
      Src: /src/postgres/src/include/access/tableam.h:1025,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 8
    argNames:
    - rel
    - snapshot
    - nkeys
    - key
    - allow_strat
    - allow_sync
    - allow_pagemode
    - flags
    argTypes:
    - Relation
    - Snapshot
    - int
    - ScanKeyData*
    - bool
    - bool
    - bool
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1010
    functionDepth: 2
    functionLinenumber: 1010
    functionLinenumberEnd: 1027
    functionName: table_beginscan_sampling
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - table_beginscan_common
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_sampling(Relation rel, Snapshot snapshot,\n\t\t\t\t\t\t
      int nkeys, ScanKeyData *key,\n\t\t\t\t\t\t bool allow_strat, bool allow_sync,\n\t\t\t\t\t\t
      bool allow_pagemode, uint32 flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_beginscan_common
      Src: /src/postgres/src/include/access/tableam.h:1039,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - snapshot
    argTypes:
    - Relation
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1034
    functionDepth: 2
    functionLinenumber: 1034
    functionLinenumberEnd: 1041
    functionName: table_beginscan_tid
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - table_beginscan_common
    linkageType: ''
    returnType: TableScanDesc
    signature: TableScanDesc table_beginscan_tid(Relation rel, Snapshot snapshot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_beginscan_common
      Src: /src/postgres/src/include/access/tableam.h:1053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1048
    functionDepth: 2
    functionLinenumber: 1048
    functionLinenumberEnd: 1055
    functionName: table_beginscan_analyze
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - table_beginscan_common
    linkageType: ''
    returnType: TableScanDesc
    signature: TableScanDesc table_beginscan_analyze(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_end
      Src: /src/postgres/src/include/access/tableam.h:1063,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1060
    functionDepth: 0
    functionLinenumber: 1060
    functionLinenumberEnd: 1064
    functionName: table_endscan
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_end
    linkageType: ''
    returnType: void
    signature: void table_endscan(TableScanDesc scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_rescan
      Src: /src/postgres/src/include/access/tableam.h:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scan
    - key
    argTypes:
    - TableScanDesc
    - ScanKeyData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1069
    functionDepth: 0
    functionLinenumber: 1069
    functionLinenumberEnd: 1073
    functionName: table_rescan
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_rescan
    linkageType: ''
    returnType: void
    signature: void table_rescan(TableScanDesc scan, ScanKeyData *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_rescan
      Src: /src/postgres/src/include/access/tableam.h:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - scan
    - key
    - allow_strat
    - allow_sync
    - allow_pagemode
    argTypes:
    - TableScanDesc
    - ScanKeyData*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1083
    functionDepth: 0
    functionLinenumber: 1083
    functionLinenumberEnd: 1090
    functionName: table_rescan_set_params
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_rescan
    linkageType: ''
    returnType: void
    signature: "void table_rescan_set_params(TableScanDesc scan, ScanKeyData *key,\n\t\t\t\t\t\tbool
      allow_strat, bool allow_sync, bool allow_pagemode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/include/access/tableam.h:1098,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:1101,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_getnextslot
      Src: /src/postgres/src/include/access/tableam.h:1104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - sscan
    - direction
    - slot
    argTypes:
    - TableScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1105
    functionName: table_scan_getnextslot
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Assert
    - TableScanDesc::rs_rd::rd_tableam::scan_getnextslot
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: bool table_scan_getnextslot(TableScanDesc sscan, ScanDirection direction,
      TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_beginscan_common
      Src: /src/postgres/src/include/access/tableam.h:1126,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_set_tidrange
      Src: /src/postgres/src/include/access/tableam.h:1130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - rel
    - snapshot
    - mintid
    - maxtid
    - flags
    argTypes:
    - Relation
    - Snapshot
    - ItemPointer
    - ItemPointer
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1118
    functionDepth: 2
    functionLinenumber: 1118
    functionLinenumberEnd: 1133
    functionName: table_beginscan_tidrange
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_set_tidrange
    - table_beginscan_common
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_tidrange(Relation rel, Snapshot snapshot,\n\t\t\t\t\t\t
      ItemPointer mintid,\n\t\t\t\t\t\t ItemPointer maxtid, uint32 flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:1145,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_rescan
      Src: /src/postgres/src/include/access/tableam.h:1147,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_set_tidrange
      Src: /src/postgres/src/include/access/tableam.h:1148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - sscan
    - mintid
    - maxtid
    argTypes:
    - TableScanDesc
    - ItemPointer
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1140
    functionDepth: 1
    functionLinenumber: 1140
    functionLinenumberEnd: 1149
    functionName: table_rescan_tidrange
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Assert
    - TableScanDesc::rs_rd::rd_tableam::scan_set_tidrange
    - TableScanDesc::rs_rd::rd_tableam::scan_rescan
    linkageType: ''
    returnType: void
    signature: "void table_rescan_tidrange(TableScanDesc sscan, ItemPointer mintid,\n\t\t\t\t\t
      \ ItemPointer maxtid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:1161,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:1164,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_getnextslot_tidrange
      Src: /src/postgres/src/include/access/tableam.h:1167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - sscan
    - direction
    - slot
    argTypes:
    - TableScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1156
    functionDepth: 1
    functionLinenumber: 1156
    functionLinenumberEnd: 1170
    functionName: table_scan_getnextslot_tidrange
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Assert
    - TableScanDesc::rs_rd::rd_tableam::scan_getnextslot_tidrange
    linkageType: ''
    returnType: bool
    signature: "bool table_scan_getnextslot_tidrange(TableScanDesc sscan, ScanDirection
      direction,\n\t\t\t\t\t\t\t\tTupleTableSlot *slot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::parallelscan_reinitialize
      Src: /src/postgres/src/include/access/tableam.h:1228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - pscan
    argTypes:
    - Relation
    - ParallelTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1225
    functionDepth: 0
    functionLinenumber: 1225
    functionLinenumberEnd: 1229
    functionName: table_parallelscan_reinitialize
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::parallelscan_reinitialize
    linkageType: ''
    returnType: void
    signature: void table_parallelscan_reinitialize(Relation rel, ParallelTableScanDesc
      pscan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:1248,1
    - Dst: unlikely
      Src: /src/postgres/src/include/access/tableam.h:1255,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/tableam.h:1255,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tableam.h:1256,1
    - Dst: Relation::rd_tableam::index_fetch_begin
      Src: /src/postgres/src/include/access/tableam.h:1258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rel
    - flags
    argTypes:
    - Relation
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1245
    functionDepth: 1
    functionLinenumber: 1245
    functionLinenumberEnd: 1259
    functionName: table_index_fetch_begin
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - Relation::rd_tableam::index_fetch_begin
    - unlikely
    - TransactionIdIsValid
    linkageType: ''
    returnType: IndexFetchTableData
    signature: 'IndexFetchTableData *

      table_index_fetch_begin(Relation rel, uint32 flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct IndexFetchTableData*::rel::rd_tableam::index_fetch_reset
      Src: /src/postgres/src/include/access/tableam.h:1268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - struct IndexFetchTableData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1265
    functionDepth: 0
    functionLinenumber: 1265
    functionLinenumberEnd: 1269
    functionName: table_index_fetch_reset
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - struct IndexFetchTableData*::rel::rd_tableam::index_fetch_reset
    linkageType: ''
    returnType: void
    signature: void table_index_fetch_reset(struct IndexFetchTableData *scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct IndexFetchTableData*::rel::rd_tableam::index_fetch_end
      Src: /src/postgres/src/include/access/tableam.h:1277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - struct IndexFetchTableData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1274
    functionDepth: 0
    functionLinenumber: 1274
    functionLinenumberEnd: 1278
    functionName: table_index_fetch_end
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - struct IndexFetchTableData*::rel::rd_tableam::index_fetch_end
    linkageType: ''
    returnType: void
    signature: void table_index_fetch_end(struct IndexFetchTableData *scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct IndexFetchTableData*::rel::rd_tableam::index_fetch_tuple
      Src: /src/postgres/src/include/access/tableam.h:1311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - scan
    - tid
    - snapshot
    - slot
    - call_again
    - all_dead
    argTypes:
    - struct IndexFetchTableData*
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1304
    functionDepth: 0
    functionLinenumber: 1304
    functionLinenumberEnd: 1314
    functionName: table_index_fetch_tuple
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - struct IndexFetchTableData*::rel::rd_tableam::index_fetch_tuple
    linkageType: ''
    returnType: bool
    signature: "bool table_index_fetch_tuple(struct IndexFetchTableData *scan,\n\t\t\t\t\t\tItemPointer
      tid,\n\t\t\t\t\t\tSnapshot snapshot,\n\t\t\t\t\t\tTupleTableSlot *slot,\n\t\t\t\t\t\tbool
      *call_again, bool *all_dead)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/access/tableam.h:1354,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/tableam.h:1354,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tableam.h:1355,1
    - Dst: Relation::rd_tableam::tuple_fetch_row_version
      Src: /src/postgres/src/include/access/tableam.h:1357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 4
    argNames:
    - rel
    - tid
    - snapshot
    - slot
    argTypes:
    - Relation
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1343
    functionDepth: 1
    functionLinenumber: 1343
    functionLinenumberEnd: 1358
    functionName: table_tuple_fetch_row_version
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - elog
    - unlikely
    - Relation::rd_tableam::tuple_fetch_row_version
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: "bool table_tuple_fetch_row_version(Relation rel,\n\t\t\t\t\t\t\t  ItemPointer
      tid,\n\t\t\t\t\t\t\t  Snapshot snapshot,\n\t\t\t\t\t\t\t  TupleTableSlot *slot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::tuple_tid_valid
      Src: /src/postgres/src/include/access/tableam.h:1372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scan
    - tid
    argTypes:
    - TableScanDesc
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1369
    functionDepth: 0
    functionLinenumber: 1369
    functionLinenumberEnd: 1373
    functionName: table_tuple_tid_valid
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::tuple_tid_valid
    linkageType: ''
    returnType: bool
    signature: bool table_tuple_tid_valid(TableScanDesc scan, ItemPointer tid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_satisfies_snapshot
      Src: /src/postgres/src/include/access/tableam.h:1394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rel
    - slot
    - snapshot
    argTypes:
    - Relation
    - TupleTableSlot*
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1390
    functionDepth: 0
    functionLinenumber: 1390
    functionLinenumberEnd: 1395
    functionName: table_tuple_satisfies_snapshot
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::tuple_satisfies_snapshot
    linkageType: ''
    returnType: bool
    signature: "bool table_tuple_satisfies_snapshot(Relation rel, TupleTableSlot *slot,\n\t\t\t\t\t\t\t
      \  Snapshot snapshot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::index_delete_tuples
      Src: /src/postgres/src/include/access/tableam.h:1414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - delstate
    argTypes:
    - Relation
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1411
    functionDepth: 0
    functionLinenumber: 1411
    functionLinenumberEnd: 1415
    functionName: table_index_delete_tuples
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::index_delete_tuples
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId table_index_delete_tuples(Relation rel, TM_IndexDeleteOp
      *delstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_insert
      Src: /src/postgres/src/include/access/tableam.h:1461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rel
    - slot
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - TupleTableSlot*
    - CommandId
    - uint32
    - BulkInsertStateData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1457
    functionDepth: 0
    functionLinenumber: 1457
    functionLinenumberEnd: 1463
    functionName: table_tuple_insert
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::tuple_insert
    linkageType: ''
    returnType: void
    signature: "void table_tuple_insert(Relation rel, TupleTableSlot *slot, CommandId
      cid,\n\t\t\t\t   uint32 options, BulkInsertStateData *bistate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_insert_speculative
      Src: /src/postgres/src/include/access/tableam.h:1482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - rel
    - slot
    - cid
    - options
    - bistate
    - specToken
    argTypes:
    - Relation
    - TupleTableSlot*
    - CommandId
    - uint32
    - BulkInsertStateData*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1476
    functionDepth: 0
    functionLinenumber: 1476
    functionLinenumberEnd: 1484
    functionName: table_tuple_insert_speculative
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::tuple_insert_speculative
    linkageType: ''
    returnType: void
    signature: "void table_tuple_insert_speculative(Relation rel, TupleTableSlot *slot,\n\t\t\t\t\t\t\t
      \  CommandId cid, uint32 options,\n\t\t\t\t\t\t\t   BulkInsertStateData *bistate,\n\t\t\t\t\t\t\t
      \  uint32 specToken)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_complete_speculative
      Src: /src/postgres/src/include/access/tableam.h:1494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rel
    - slot
    - specToken
    - succeeded
    argTypes:
    - Relation
    - TupleTableSlot*
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1490
    functionDepth: 0
    functionLinenumber: 1490
    functionLinenumberEnd: 1496
    functionName: table_tuple_complete_speculative
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::tuple_complete_speculative
    linkageType: ''
    returnType: void
    signature: "void table_tuple_complete_speculative(Relation rel, TupleTableSlot
      *slot,\n\t\t\t\t\t\t\t\t uint32 specToken, bool succeeded)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::multi_insert
      Src: /src/postgres/src/include/access/tableam.h:1516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - rel
    - slots
    - nslots
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - TupleTableSlot**
    - int
    - CommandId
    - uint32
    - BulkInsertStateData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1512
    functionDepth: 0
    functionLinenumber: 1512
    functionLinenumberEnd: 1518
    functionName: table_multi_insert
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::multi_insert
    linkageType: ''
    returnType: void
    signature: "void table_multi_insert(Relation rel, TupleTableSlot **slots, int
      nslots,\n\t\t\t\t   CommandId cid, uint32 options, BulkInsertStateData *bistate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_delete
      Src: /src/postgres/src/include/access/tableam.h:1553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - rel
    - tid
    - cid
    - options
    - snapshot
    - crosscheck
    - wait
    - tmfd
    argTypes:
    - Relation
    - ItemPointer
    - CommandId
    - uint32
    - Snapshot
    - Snapshot
    - bool
    - TM_FailureData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1548
    functionDepth: 0
    functionLinenumber: 1548
    functionLinenumberEnd: 1556
    functionName: table_tuple_delete
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::tuple_delete
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result table_tuple_delete(Relation rel, ItemPointer tid, CommandId
      cid,\n\t\t\t\t   uint32 options, Snapshot snapshot, Snapshot crosscheck,\n\t\t\t\t
      \  bool wait, TM_FailureData *tmfd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_update
      Src: /src/postgres/src/include/access/tableam.h:1604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - rel
    - otid
    - slot
    - cid
    - options
    - snapshot
    - crosscheck
    - wait
    - tmfd
    - lockmode
    - update_indexes
    argTypes:
    - Relation
    - ItemPointer
    - TupleTableSlot*
    - CommandId
    - uint32
    - Snapshot
    - Snapshot
    - bool
    - TM_FailureData*
    - LockTupleMode*
    - TU_UpdateIndexes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1608
      start: 1597
    functionDepth: 0
    functionLinenumber: 1597
    functionLinenumberEnd: 1608
    functionName: table_tuple_update
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::tuple_update
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result table_tuple_update(Relation rel, ItemPointer otid, TupleTableSlot
      *slot,\n\t\t\t\t   CommandId cid, uint32 options,\n\t\t\t\t   Snapshot snapshot,
      Snapshot crosscheck,\n\t\t\t\t   bool wait, TM_FailureData *tmfd, LockTupleMode
      *lockmode,\n\t\t\t\t   TU_UpdateIndexes *update_indexes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_lock
      Src: /src/postgres/src/include/access/tableam.h:1651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - rel
    - tid
    - snapshot
    - slot
    - cid
    - mode
    - wait_policy
    - flags
    - tmfd
    argTypes:
    - Relation
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    - CommandId
    - LockTupleMode
    - LockWaitPolicy
    - uint8
    - TM_FailureData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1645
    functionDepth: 0
    functionLinenumber: 1645
    functionLinenumberEnd: 1654
    functionName: table_tuple_lock
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::tuple_lock
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result table_tuple_lock(Relation rel, ItemPointer tid, Snapshot
      snapshot,\n\t\t\t\t TupleTableSlot *slot, CommandId cid, LockTupleMode mode,\n\t\t\t\t
      LockWaitPolicy wait_policy, uint8 flags,\n\t\t\t\t TM_FailureData *tmfd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::finish_bulk_insert
      Src: /src/postgres/src/include/access/tableam.h:1665,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - rel
    - options
    argTypes:
    - Relation
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1660
    functionDepth: 0
    functionLinenumber: 1660
    functionLinenumberEnd: 1666
    functionName: table_finish_bulk_insert
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::finish_bulk_insert
    linkageType: ''
    returnType: void
    signature: void table_finish_bulk_insert(Relation rel, uint32 options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_set_new_filelocator
      Src: /src/postgres/src/include/access/tableam.h:1693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rel
    - newrlocator
    - persistence
    - freezeXid
    - minmulti
    argTypes:
    - Relation
    - RelFileLocator*
    - char
    - TransactionId*
    - MultiXactId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1696
      start: 1686
    functionDepth: 0
    functionLinenumber: 1686
    functionLinenumberEnd: 1696
    functionName: table_relation_set_new_filelocator
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_set_new_filelocator
    linkageType: ''
    returnType: void
    signature: "void table_relation_set_new_filelocator(Relation rel,\n\t\t\t\t\t\t\t\t
      \  const RelFileLocator *newrlocator,\n\t\t\t\t\t\t\t\t   char persistence,\n\t\t\t\t\t\t\t\t
      \  TransactionId *freezeXid,\n\t\t\t\t\t\t\t\t   MultiXactId *minmulti)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_nontransactional_truncate
      Src: /src/postgres/src/include/access/tableam.h:1707,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1704
    functionDepth: 0
    functionLinenumber: 1704
    functionLinenumberEnd: 1708
    functionName: table_relation_nontransactional_truncate
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_nontransactional_truncate
    linkageType: ''
    returnType: void
    signature: void table_relation_nontransactional_truncate(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_copy_data
      Src: /src/postgres/src/include/access/tableam.h:1719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - newrlocator
    argTypes:
    - Relation
    - RelFileLocator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1716
    functionDepth: 0
    functionLinenumber: 1716
    functionLinenumberEnd: 1720
    functionName: table_relation_copy_data
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_copy_data
    linkageType: ''
    returnType: void
    signature: void table_relation_copy_data(Relation rel, const RelFileLocator *newrlocator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_copy_for_cluster
      Src: /src/postgres/src/include/access/tableam.h:1757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - OldTable
    - NewTable
    - OldIndex
    - use_sort
    - OldestXmin
    - snapshot
    - xid_cutoff
    - multi_cutoff
    - num_tuples
    - tups_vacuumed
    - tups_recently_dead
    argTypes:
    - Relation
    - Relation
    - Relation
    - bool
    - TransactionId
    - Snapshot
    - TransactionId*
    - MultiXactId*
    - double*
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1763
      start: 1745
    functionDepth: 0
    functionLinenumber: 1745
    functionLinenumberEnd: 1763
    functionName: table_relation_copy_for_cluster
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_copy_for_cluster
    linkageType: ''
    returnType: void
    signature: "void table_relation_copy_for_cluster(Relation OldTable, Relation NewTable,\n\t\t\t\t\t\t\t\tRelation
      OldIndex,\n\t\t\t\t\t\t\t\tbool use_sort,\n\t\t\t\t\t\t\t\tTransactionId OldestXmin,\n\t\t\t\t\t\t\t\tSnapshot
      snapshot,\n\t\t\t\t\t\t\t\tTransactionId *xid_cutoff,\n\t\t\t\t\t\t\t\tMultiXactId
      *multi_cutoff,\n\t\t\t\t\t\t\t\tdouble *num_tuples,\n\t\t\t\t\t\t\t\tdouble
      *tups_vacuumed,\n\t\t\t\t\t\t\t\tdouble *tups_recently_dead)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_vacuum
      Src: /src/postgres/src/include/access/tableam.h:1780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rel
    - params
    - bstrategy
    argTypes:
    - Relation
    - VacuumParams*
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1781
      start: 1776
    functionDepth: 0
    functionLinenumber: 1776
    functionLinenumberEnd: 1781
    functionName: table_relation_vacuum
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_vacuum
    linkageType: ''
    returnType: void
    signature: "void table_relation_vacuum(Relation rel, const VacuumParams *params,\n\t\t\t\t\t
      \ BufferAccessStrategy bstrategy)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_analyze_next_block
      Src: /src/postgres/src/include/access/tableam.h:1794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scan
    - stream
    argTypes:
    - TableScanDesc
    - ReadStream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1791
    functionDepth: 0
    functionLinenumber: 1791
    functionLinenumberEnd: 1795
    functionName: table_scan_analyze_next_block
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_analyze_next_block
    linkageType: ''
    returnType: bool
    signature: bool table_scan_analyze_next_block(TableScanDesc scan, ReadStream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_analyze_next_tuple
      Src: /src/postgres/src/include/access/tableam.h:1812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - scan
    - liverows
    - deadrows
    - slot
    argTypes:
    - TableScanDesc
    - double*
    - double*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1807
    functionDepth: 0
    functionLinenumber: 1807
    functionLinenumberEnd: 1815
    functionName: table_scan_analyze_next_tuple
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_analyze_next_tuple
    linkageType: ''
    returnType: bool
    signature: "bool table_scan_analyze_next_tuple(TableScanDesc scan,\n\t\t\t\t\t\t\t
      \ double *liverows, double *deadrows,\n\t\t\t\t\t\t\t  TupleTableSlot *slot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::index_build_range_scan
      Src: /src/postgres/src/include/access/tableam.h:1854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - table_rel
    - index_rel
    - index_info
    - allow_sync
    - progress
    - callback
    - callback_state
    - scan
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - bool
    - bool
    - IndexBuildCallback
    - void*
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1865
      start: 1844
    functionDepth: 0
    functionLinenumber: 1844
    functionLinenumberEnd: 1865
    functionName: table_index_build_scan
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::index_build_range_scan
    linkageType: ''
    returnType: double
    signature: "double table_index_build_scan(Relation table_rel,\n\t\t\t\t\t   Relation
      index_rel,\n\t\t\t\t\t   IndexInfo *index_info,\n\t\t\t\t\t   bool allow_sync,\n\t\t\t\t\t
      \  bool progress,\n\t\t\t\t\t   IndexBuildCallback callback,\n\t\t\t\t\t   void
      *callback_state,\n\t\t\t\t\t   TableScanDesc scan)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::index_build_range_scan
      Src: /src/postgres/src/include/access/tableam.h:1890,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - table_rel
    - index_rel
    - index_info
    - allow_sync
    - anyvisible
    - progress
    - start_blockno
    - numblocks
    - callback
    - callback_state
    - scan
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - bool
    - bool
    - bool
    - BlockNumber
    - BlockNumber
    - IndexBuildCallback
    - void*
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1901
      start: 1877
    functionDepth: 0
    functionLinenumber: 1877
    functionLinenumberEnd: 1901
    functionName: table_index_build_range_scan
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::index_build_range_scan
    linkageType: ''
    returnType: double
    signature: "double table_index_build_range_scan(Relation table_rel,\n\t\t\t\t\t\t\t
      Relation index_rel,\n\t\t\t\t\t\t\t IndexInfo *index_info,\n\t\t\t\t\t\t\t bool
      allow_sync,\n\t\t\t\t\t\t\t bool anyvisible,\n\t\t\t\t\t\t\t bool progress,\n\t\t\t\t\t\t\t
      BlockNumber start_blockno,\n\t\t\t\t\t\t\t BlockNumber numblocks,\n\t\t\t\t\t\t\t
      IndexBuildCallback callback,\n\t\t\t\t\t\t\t void *callback_state,\n\t\t\t\t\t\t\t
      TableScanDesc scan)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::index_validate_scan
      Src: /src/postgres/src/include/access/tableam.h:1915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - table_rel
    - index_rel
    - index_info
    - snapshot
    - state
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - Snapshot
    - ValidateIndexState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1908
    functionDepth: 0
    functionLinenumber: 1908
    functionLinenumberEnd: 1920
    functionName: table_index_validate_scan
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::index_validate_scan
    linkageType: ''
    returnType: void
    signature: "void table_index_validate_scan(Relation table_rel,\n\t\t\t\t\t\t  Relation
      index_rel,\n\t\t\t\t\t\t  IndexInfo *index_info,\n\t\t\t\t\t\t  Snapshot snapshot,\n\t\t\t\t\t\t
      \ ValidateIndexState *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_size
      Src: /src/postgres/src/include/access/tableam.h:1940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - forkNumber
    argTypes:
    - Relation
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1941
      start: 1937
    functionDepth: 0
    functionLinenumber: 1937
    functionLinenumberEnd: 1941
    functionName: table_relation_size
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_size
    linkageType: ''
    returnType: uint64
    signature: uint64 table_relation_size(Relation rel, ForkNumber forkNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_needs_toast_table
      Src: /src/postgres/src/include/access/tableam.h:1949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1946
    functionDepth: 0
    functionLinenumber: 1946
    functionLinenumberEnd: 1950
    functionName: table_relation_needs_toast_table
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_needs_toast_table
    linkageType: ''
    returnType: bool
    signature: bool table_relation_needs_toast_table(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_toast_am
      Src: /src/postgres/src/include/access/tableam.h:1959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1960
      start: 1956
    functionDepth: 0
    functionLinenumber: 1956
    functionLinenumberEnd: 1960
    functionName: table_relation_toast_am
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_toast_am
    linkageType: ''
    returnType: Oid
    signature: Oid table_relation_toast_am(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_fetch_toast_slice
      Src: /src/postgres/src/include/access/tableam.h:1990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - toastrel
    - valueid
    - attrsize
    - sliceoffset
    - slicelength
    - result
    argTypes:
    - Relation
    - Oid
    - int32
    - int32
    - int32
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1985
    functionDepth: 0
    functionLinenumber: 1985
    functionLinenumberEnd: 1994
    functionName: table_relation_fetch_toast_slice
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_fetch_toast_slice
    linkageType: ''
    returnType: void
    signature: "void table_relation_fetch_toast_slice(Relation toastrel, Oid valueid,\n\t\t\t\t\t\t\t\t
      int32 attrsize, int32 sliceoffset,\n\t\t\t\t\t\t\t\t int32 slicelength, varlena
      *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_estimate_size
      Src: /src/postgres/src/include/access/tableam.h:2011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rel
    - attr_widths
    - pages
    - tuples
    - allvisfrac
    argTypes:
    - Relation
    - int32*
    - BlockNumber*
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2013
      start: 2006
    functionDepth: 0
    functionLinenumber: 2006
    functionLinenumberEnd: 2013
    functionName: table_relation_estimate_size
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::relation_estimate_size
    linkageType: ''
    returnType: void
    signature: "void table_relation_estimate_size(Relation rel, int32 *attr_widths,\n\t\t\t\t\t\t\t
      BlockNumber *pages, double *tuples,\n\t\t\t\t\t\t\t double *allvisfrac)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_bitmap_next_tuple
      Src: /src/postgres/src/include/access/tableam.h:2041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - scan
    - slot
    - recheck
    - lossy_pages
    - exact_pages
    argTypes:
    - TableScanDesc
    - TupleTableSlot*
    - bool*
    - uint64*
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 2034
    functionDepth: 0
    functionLinenumber: 2034
    functionLinenumberEnd: 2046
    functionName: table_scan_bitmap_next_tuple
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_bitmap_next_tuple
    linkageType: ''
    returnType: bool
    signature: "bool table_scan_bitmap_next_tuple(TableScanDesc scan,\n\t\t\t\t\t\t\t
      TupleTableSlot *slot,\n\t\t\t\t\t\t\t bool *recheck,\n\t\t\t\t\t\t\t uint64
      *lossy_pages,\n\t\t\t\t\t\t\t uint64 *exact_pages)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_sample_next_block
      Src: /src/postgres/src/include/access/tableam.h:2061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scan
    - scanstate
    argTypes:
    - TableScanDesc
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2062
      start: 2057
    functionDepth: 0
    functionLinenumber: 2057
    functionLinenumberEnd: 2062
    functionName: table_scan_sample_next_block
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_sample_next_block
    linkageType: ''
    returnType: bool
    signature: "bool table_scan_sample_next_block(TableScanDesc scan,\n\t\t\t\t\t\t\t
      SampleScanState *scanstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_sample_next_tuple
      Src: /src/postgres/src/include/access/tableam.h:2077,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - scan
    - scanstate
    - slot
    argTypes:
    - TableScanDesc
    - SampleScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2079
      start: 2072
    functionDepth: 0
    functionLinenumber: 2072
    functionLinenumberEnd: 2079
    functionName: table_scan_sample_next_tuple
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_sample_next_tuple
    linkageType: ''
    returnType: bool
    signature: "bool table_scan_sample_next_tuple(TableScanDesc scan,\n\t\t\t\t\t\t\t
      SampleScanState *scanstate,\n\t\t\t\t\t\t\t TupleTableSlot *slot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - optstruct
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: GET_STRING_RELOPTION
    functionSourceFile: /src/postgres/src/include/access/reloptions.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_STRING_RELOPTION(optstruct, member)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: heap_getattr
      Src: /src/postgres/src/include/access/valid.h:42,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/include/access/valid.h:47,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/include/access/valid.h:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - tuple
    - tupdesc
    - nkeys
    - keys
    argTypes:
    - HeapTuple
    - TupleDesc
    - int
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 56
    functionName: HeapKeyTest
    functionSourceFile: /src/postgres/src/include/access/valid.h
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - heap_getattr
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool HeapKeyTest(HeapTuple tuple, TupleDesc tupdesc, int nkeys, ScanKey
      keys)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/include/access/heapam.h:535,1
    - Dst: HeapTupleHeaderSetXvac
      Src: /src/postgres/src/include/access/heapam.h:538,1
    - Dst: HeapTupleHeaderSetXvac
      Src: /src/postgres/src/include/access/heapam.h:541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - tuple
    - frz
    argTypes:
    - HeapTupleHeader
    - HeapTupleFreeze*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 545
    functionName: heap_execute_freeze_tuple
    functionSourceFile: /src/postgres/src/include/access/heapam.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderSetXvac
    - HeapTupleHeaderSetXmax
    linkageType: ''
    returnType: void
    signature: void heap_execute_freeze_tuple(HeapTupleHeader tuple, HeapTupleFreeze
      *frz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: BrinTupleDataOffset
    functionSourceFile: /src/postgres/src/include/access/brin_tuple.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BrinTupleDataOffset(tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: BrinTupleHasNulls
    functionSourceFile: /src/postgres/src/include/access/brin_tuple.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BrinTupleHasNulls(tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: BrinTupleIsPlaceholder
    functionSourceFile: /src/postgres/src/include/access/brin_tuple.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BrinTupleIsPlaceholder(tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: BrinTupleIsEmptyRange
    functionSourceFile: /src/postgres/src/include/access/brin_tuple.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BrinTupleIsEmptyRange(tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: TOAST_COMPRESS_EXTSIZE
    functionSourceFile: /src/postgres/src/include/access/toast_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TOAST_COMPRESS_EXTSIZE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: TOAST_COMPRESS_METHOD
    functionSourceFile: /src/postgres/src/include/access/toast_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TOAST_COMPRESS_METHOD(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - len
    - ','
    - cm_method
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: TOAST_COMPRESS_SET_SIZE_AND_COMPRESS_METHOD
    functionSourceFile: /src/postgres/src/include/access/toast_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TOAST_COMPRESS_SET_SIZE_AND_COMPRESS_METHOD(ptr, len, cm_method)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: XLogArchivingActive
    functionSourceFile: /src/postgres/src/include/access/xlog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogArchivingActive()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 107
    functionName: XLogArchivingAlways
    functionSourceFile: /src/postgres/src/include/access/xlog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogArchivingAlways()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: XLogIsNeeded
    functionSourceFile: /src/postgres/src/include/access/xlog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogIsNeeded()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    functionName: XLogHintBitIsNeeded
    functionSourceFile: /src/postgres/src/include/access/xlog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogHintBitIsNeeded()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: XLogStandbyInfoActive
    functionSourceFile: /src/postgres/src/include/access/xlog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogStandbyInfoActive()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: XLogLogicalInfoActive
    functionSourceFile: /src/postgres/src/include/access/xlog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogLogicalInfoActive()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - r
    - ','
    - b
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: VM_ALL_VISIBLE
    functionSourceFile: /src/postgres/src/include/access/visibilitymap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VM_ALL_VISIBLE(r, b, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - r
    - ','
    - b
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: VM_ALL_FROZEN
    functionSourceFile: /src/postgres/src/include/access/visibilitymap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VM_ALL_FROZEN(r, b, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: TransactionIdIsValid
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdIsValid(xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: TransactionIdIsNormal
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdIsNormal(xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - id1
    - ','
    - id2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: TransactionIdEquals
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdEquals(id1, id2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - xid
    - ','
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: TransactionIdStore
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdStore(xid, dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: StoreInvalidTransactionId
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: StoreInvalidTransactionId(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: EpochFromFullTransactionId
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EpochFromFullTransactionId(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: XidFromFullTransactionId
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XidFromFullTransactionId(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: U64FromFullTransactionId
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U64FromFullTransactionId(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: FullTransactionIdEquals
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FullTransactionIdEquals(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: FullTransactionIdPrecedes
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FullTransactionIdPrecedes(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: FullTransactionIdPrecedesOrEquals
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FullTransactionIdPrecedesOrEquals(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: FullTransactionIdFollows
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FullTransactionIdFollows(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: FullTransactionIdFollowsOrEquals
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FullTransactionIdFollowsOrEquals(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: FullTransactionIdIsValid
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FullTransactionIdIsValid(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: FullTransactionIdIsNormal
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FullTransactionIdIsNormal(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - epoch
    - xid
    argTypes:
    - uint32
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 78
    functionName: FullTransactionIdFromEpochAndXid
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId FullTransactionIdFromEpochAndXid(uint32 epoch, TransactionId
      xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: FullTransactionIdFromU64
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId FullTransactionIdFromU64(uint64 value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: TransactionIdAdvance
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdAdvance(dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdPrecedes
      Src: /src/postgres/src/include/access/transam.h:112,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dest
    argTypes:
    - FullTransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 121
    functionName: FullTransactionIdRetreat
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - FullTransactionIdPrecedes
    - XidFromFullTransactionId
    linkageType: ''
    returnType: void
    signature: void FullTransactionIdRetreat(FullTransactionId *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdPrecedes
      Src: /src/postgres/src/include/access/transam.h:133,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dest
    argTypes:
    - FullTransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 138
    functionName: FullTransactionIdAdvance
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - FullTransactionIdPrecedes
    - XidFromFullTransactionId
    linkageType: ''
    returnType: void
    signature: void FullTransactionIdAdvance(FullTransactionId *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 145
    functionName: TransactionIdRetreat
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdRetreat(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - id1
    - ','
    - id2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: NormalTransactionIdPrecedes
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NormalTransactionIdPrecedes(id1, id2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - id1
    - ','
    - id2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: NormalTransactionIdFollows
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NormalTransactionIdFollows(id1, id2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:271,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 276
    functionName: TransactionIdPrecedes
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 2
    functionsReached:
    - TransactionIdIsNormal
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdPrecedes(TransactionId id1, TransactionId id2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:286,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 291
    functionName: TransactionIdPrecedesOrEquals
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - TransactionIdIsNormal
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId
      id2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:301,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 306
    functionName: TransactionIdFollows
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - TransactionIdIsNormal
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdFollows(TransactionId id1, TransactionId id2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:316,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 321
    functionName: TransactionIdFollowsOrEquals
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 1
    functionsReached:
    - TransactionIdIsNormal
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId
      id2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 362
    functionName: AssertTransactionIdInAllowableRange
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertTransactionIdInAllowableRange(xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:377,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 378
    functionName: ReadNextTransactionId
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - ReadNextFullTransactionId
    - XidFromFullTransactionId
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId ReadNextTransactionId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - xid
    - amount
    argTypes:
    - TransactionId
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 390
    functionName: TransactionIdRetreatedBy
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId TransactionIdRetreatedBy(TransactionId xid, uint32 amount)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/transam.h:396,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/transam.h:399,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/include/access/transam.h:402,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 393
    functionDepth: 2
    functionLinenumber: 393
    functionLinenumberEnd: 405
    functionName: TransactionIdOlder
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - TransactionIdIsValid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId TransactionIdOlder(TransactionId a, TransactionId b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/transam.h:411,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:411,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/transam.h:412,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:412,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/include/access/transam.h:413,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 416
    functionName: NormalTransactionIdOlder
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - Assert
    - TransactionIdIsNormal
    - NormalTransactionIdPrecedes
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId NormalTransactionIdOlder(TransactionId a, TransactionId
      b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/include/access/transam.h:422,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/include/access/transam.h:425,1
    - Dst: FullTransactionIdFollows
      Src: /src/postgres/src/include/access/transam.h:428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - FullTransactionId
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 431
    functionName: FullTransactionIdNewer
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - FullTransactionIdFollows
    - FullTransactionIdIsValid
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId FullTransactionIdNewer(FullTransactionId a, FullTransactionId
      b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:447,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/include/access/transam.h:448,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/transam.h:450,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/include/access/transam.h:450,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:451,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:466,1
    - Dst: unlikely
      Src: /src/postgres/src/include/access/transam.h:467,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:467,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/transam.h:469,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/include/access/transam.h:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - nextFullXid
    - xid
    argTypes:
    - FullTransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 440
    functionDepth: 2
    functionLinenumber: 440
    functionLinenumberEnd: 474
    functionName: FullTransactionIdFromAllowableAt
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 1
    functionsReached:
    - Assert
    - XidFromFullTransactionId
    - EpochFromFullTransactionId
    - TransactionIdIsNormal
    - FullTransactionIdFromEpochAndXid
    - TransactionIdPrecedesOrEquals
    - unlikely
    linkageType: ''
    returnType: FullTransactionId
    signature: "FullTransactionId FullTransactionIdFromAllowableAt(FullTransactionId
      nextFullXid,\n\t\t\t\t\t\t\t\t TransactionId xid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - symname
    - ','
    - name
    - ','
    - redo
    - ','
    - desc
    - ','
    - identify
    - ','
    - startup
    - ','
    - cleanup
    - ','
    - mask
    - ','
    - decode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: PG_RMGR
    functionSourceFile: /src/postgres/src/include/access/rmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask,decode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rmid
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: RmgrIdIsBuiltin
    functionSourceFile: /src/postgres/src/include/access/rmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RmgrIdIsBuiltin(int rmid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - rmid
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: RmgrIdIsCustom
    functionSourceFile: /src/postgres/src/include/access/rmgr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RmgrIdIsCustom(int rmid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rmid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: RmgrIdIsValid
    functionSourceFile: /src/postgres/src/include/access/rmgr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RmgrIdIsValid(rmid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - attributeNumber
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: AttributeNumberIsValid
    functionSourceFile: /src/postgres/src/include/access/attnum.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AttributeNumberIsValid(attributeNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - attributeNumber
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: AttrNumberIsForUserDefinedAttr
    functionSourceFile: /src/postgres/src/include/access/attnum.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AttrNumberIsForUserDefinedAttr(attributeNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - attNum
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: AttrNumberGetAttrOffset
    functionSourceFile: /src/postgres/src/include/access/attnum.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AttrNumberGetAttrOffset(attNum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - attributeOffset
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: AttrOffsetGetAttrNumber
    functionSourceFile: /src/postgres/src/include/access/attnum.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AttrOffsetGetAttrNumber(attributeOffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHORTALIGN
      Src: /src/postgres/src/include/access/gin_tuple.h:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tup
    argTypes:
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 42
    functionName: GinTupleGetFirst
    functionSourceFile: /src/postgres/src/include/access/gin_tuple.h
    functionUses: 0
    functionsReached:
    - SHORTALIGN
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer GinTupleGetFirst(GinTuple *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - toast_pointer
    - ','
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 29
    functionName: VARATT_EXTERNAL_GET_POINTER
    functionSourceFile: /src/postgres/src/include/access/detoast.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: SpGistGetFillFactor
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistGetFillFactor(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: SpGistGetTargetPageFreeSpace
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistGetTargetPageFreeSpace(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - blkno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: SpGistBlockIsRoot
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistBlockIsRoot(blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - blkno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: SpGistBlockIsFixed
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistBlockIsFixed(blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: SpGistPageGetOpaque
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistPageGetOpaque(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: SpGistPageIsMeta
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistPageIsMeta(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: SpGistPageIsDeleted
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistPageIsDeleted(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: SpGistPageIsLeaf
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistPageIsLeaf(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: SpGistPageStoresNulls
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistPageStoresNulls(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: SpGistPageGetMeta
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistPageGetMeta(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n_distances
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 185
    functionName: SizeOfSpGistSearchItem
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeOfSpGistSearchItem(n_distances)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 315
    functionName: _SGITDATA
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _SGITDATA(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 316
    functionName: SGITDATAPTR
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGITDATAPTR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 321
    functionName: SGITDATUM
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGITDATUM(x, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 322
    functionName: SGITNODEPTR
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGITNODEPTR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - i
    - ','
    - nt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 328
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGITITERATE(x, i, nt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 344
    functionName: SGNTDATAPTR
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGNTDATAPTR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 347
    functionName: SGNTDATUM
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGNTDATUM(x, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - spgLeafTuple
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 399
    functionName: SGLT_GET_NEXTOFFSET
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGLT_GET_NEXTOFFSET(spgLeafTuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - spgLeafTuple
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 401
    functionName: SGLT_GET_HASNULLMASK
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGLT_GET_HASNULLMASK(spgLeafTuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - spgLeafTuple
    - ','
    - offsetNumber
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 404
    functionName: SGLT_SET_NEXTOFFSET
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGLT_SET_NEXTOFFSET(spgLeafTuple, offsetNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - spgLeafTuple
    - ','
    - hasnulls
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 407
    functionName: SGLT_SET_HASNULLMASK
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGLT_SET_HASNULLMASK(spgLeafTuple, hasnulls)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hasnulls
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 412
    functionName: SGLTHDRSZ
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGLTHDRSZ(hasnulls)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 413
    functionName: SGLTDATAPTR
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGLTDATAPTR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 416
    functionName: SGLTDATUM
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SGLTDATUM(x, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 463
    functionName: SpGistPageGetFreeSpace
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpGistPageGetFreeSpace(p, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 473
    functionName: STORE_STATE
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STORE_STATE(s, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 487
    functionName: GBUF_INNER_PARITY
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GBUF_INNER_PARITY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 491
    functionName: GBUF_REQ_LEAF
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GBUF_REQ_LEAF(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 492
    functionName: GBUF_REQ_NULLS
    functionSourceFile: /src/postgres/src/include/access/spgist_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GBUF_REQ_NULLS(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/slru.h:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctl
    - pageno
    argTypes:
    - SlruDesc*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: SimpleLruGetBankLock
    functionSourceFile: /src/postgres/src/include/access/slru.h
    functionUses: 4
    functionsReached:
    - Assert
    linkageType: ''
    returnType: LWLock
    signature: 'LWLock *

      SimpleLruGetBankLock(SlruDesc *ctl, int64 pageno)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: SimpleLruRequest
    functionSourceFile: /src/postgres/src/include/access/slru.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SimpleLruRequest(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ctl
    - ','
    - per_page
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 234
    functionName: SlruPagePrecedesUnitTests
    functionSourceFile: /src/postgres/src/include/access/slru.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SlruPagePrecedesUnitTests(ctl, per_page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: IsParallelWorker
    functionSourceFile: /src/postgres/src/include/access/parallel.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsParallelWorker()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - infomask
    argTypes:
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 234
    functionName: HEAP_XMAX_IS_LOCKED_ONLY
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HEAP_XMAX_IS_LOCKED_ONLY(uint16 infomask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - infomask
    argTypes:
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 261
    functionName: HEAP_LOCKED_UPGRADED
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HEAP_LOCKED_UPGRADED(uint16 infomask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - infomask
    argTypes:
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: HEAP_XMAX_IS_SHR_LOCKED
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HEAP_XMAX_IS_SHR_LOCKED(uint16 infomask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - infomask
    argTypes:
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 276
    functionName: HEAP_XMAX_IS_EXCL_LOCKED
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HEAP_XMAX_IS_EXCL_LOCKED(uint16 infomask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - infomask
    argTypes:
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 282
    functionName: HEAP_XMAX_IS_KEYSHR_LOCKED
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HEAP_XMAX_IS_KEYSHR_LOCKED(uint16 infomask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 326
    functionName: HeapTupleHeaderGetRawXmin
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId HeapTupleHeaderGetRawXmin(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderXminFrozen
      Src: /src/postgres/src/include/access/htup_details.h:331,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/include/access/htup_details.h:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 333
    functionName: HeapTupleHeaderGetXmin
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetRawXmin
    - HeapTupleHeaderXminFrozen
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId HeapTupleHeaderGetXmin(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tup
    - xid
    argTypes:
    - HeapTupleHeaderData*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 339
    functionName: HeapTupleHeaderSetXmin
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetXmin(HeapTupleHeaderData *tup, TransactionId
      xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 345
    functionName: HeapTupleHeaderXminCommitted
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderXminCommitted(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 352
    functionName: HeapTupleHeaderXminInvalid
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderXminInvalid(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 358
    functionName: HeapTupleHeaderXminFrozen
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderXminFrozen(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/htup_details.h:363,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/include/access/htup_details.h:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 365
    functionName: HeapTupleHeaderSetXminFrozen
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - Assert
    - HeapTupleHeaderXminInvalid
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetXminFrozen(HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 371
    functionName: HeapTupleHeaderGetRawXmax
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId HeapTupleHeaderGetRawXmax(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tup
    - xid
    argTypes:
    - HeapTupleHeaderData*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 377
    functionName: HeapTupleHeaderSetXmax
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetXmax(HeapTupleHeaderData *tup, TransactionId
      xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/include/access/htup_details.h:393,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/include/access/htup_details.h:395,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 396
    functionName: HeapTupleHeaderGetUpdateXid
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetRawXmax
    - HeapTupleGetUpdateXid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId HeapTupleHeaderGetUpdateXid(const HeapTupleHeaderData
      *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 409
    functionName: HeapTupleHeaderGetRawCommandId
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CommandId
    signature: CommandId HeapTupleHeaderGetRawCommandId(const HeapTupleHeaderData
      *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/htup_details.h:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tup
    - cid
    argTypes:
    - HeapTupleHeaderData*
    - CommandId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 418
    functionName: HeapTupleHeaderSetCmin
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetCmin(HeapTupleHeaderData *tup, CommandId cid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/htup_details.h:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - tup
    - cid
    - iscombo
    argTypes:
    - HeapTupleHeaderData*
    - CommandId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 430
    functionName: HeapTupleHeaderSetCmax
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetCmax(HeapTupleHeaderData *tup, CommandId cid,
      bool iscombo)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 439
    functionName: HeapTupleHeaderGetXvac
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId HeapTupleHeaderGetXvac(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/htup_details.h:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tup
    - xid
    argTypes:
    - HeapTupleHeaderData*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 446
    functionName: HeapTupleHeaderSetXvac
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetXvac(HeapTupleHeaderData *tup, TransactionId
      xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/include/access/htup_details.h:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 455
    functionName: HeapTupleHeaderIsSpeculative
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - ItemPointerGetOffsetNumberNoCheck
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderIsSpeculative(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/htup_details.h:460,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/include/access/htup_details.h:460,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/include/access/htup_details.h:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 462
    functionName: HeapTupleHeaderGetSpeculativeToken
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderIsSpeculative
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber HeapTupleHeaderGetSpeculativeToken(const HeapTupleHeaderData
      *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSet
      Src: /src/postgres/src/include/access/htup_details.h:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tup
    - token
    argTypes:
    - HeapTupleHeaderData*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 468
    functionName: HeapTupleHeaderSetSpeculativeToken
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetSpeculativeToken(HeapTupleHeaderData *tup, BlockNumber
      token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerIndicatesMovedPartitions
      Src: /src/postgres/src/include/access/htup_details.h:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 474
    functionName: HeapTupleHeaderIndicatesMovedPartitions
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - ItemPointerIndicatesMovedPartitions
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderIndicatesMovedPartitions(const HeapTupleHeaderData
      *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetMovedPartitions
      Src: /src/postgres/src/include/access/htup_details.h:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 480
    functionName: HeapTupleHeaderSetMovedPartitions
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - ItemPointerSetMovedPartitions
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetMovedPartitions(HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE
      Src: /src/postgres/src/include/access/htup_details.h:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 486
    functionName: HeapTupleHeaderGetDatumLength
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 6
    functionsReached:
    - VARSIZE
    linkageType: ''
    returnType: uint32
    signature: uint32 HeapTupleHeaderGetDatumLength(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/include/access/htup_details.h:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tup
    - len
    argTypes:
    - HeapTupleHeaderData*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 492
    functionName: HeapTupleHeaderSetDatumLength
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - SET_VARSIZE
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetDatumLength(HeapTupleHeaderData *tup, uint32
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 498
    functionName: HeapTupleHeaderGetTypeId
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: Oid
    signature: Oid HeapTupleHeaderGetTypeId(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tup
    - datum_typeid
    argTypes:
    - HeapTupleHeaderData*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 504
    functionName: HeapTupleHeaderSetTypeId
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetTypeId(HeapTupleHeaderData *tup, Oid datum_typeid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 510
    functionName: HeapTupleHeaderGetTypMod
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int32
    signature: int32 HeapTupleHeaderGetTypMod(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tup
    - typmod
    argTypes:
    - HeapTupleHeaderData*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 516
    functionName: HeapTupleHeaderSetTypMod
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetTypMod(HeapTupleHeaderData *tup, int32 typmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/include/access/htup_details.h:530,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 531
    functionName: HeapTupleHeaderIsHotUpdated
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderXminInvalid
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderIsHotUpdated(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 537
    functionName: HeapTupleHeaderSetHotUpdated
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetHotUpdated(HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 539
    functionDepth: 0
    functionLinenumber: 539
    functionLinenumberEnd: 543
    functionName: HeapTupleHeaderClearHotUpdated
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderClearHotUpdated(HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 549
    functionName: HeapTupleHeaderIsHeapOnly
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderIsHeapOnly(const HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 555
    functionName: HeapTupleHeaderSetHeapOnly
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetHeapOnly(HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 561
    functionName: HeapTupleHeaderClearHeapOnly
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderClearHeapOnly(HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 570
    functionName: HeapTupleHeaderGetNatts
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeapTupleHeaderGetNatts(tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tup
    - ','
    - natts
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 571
    functionDepth: 0
    functionLinenumber: 571
    functionLinenumberEnd: 575
    functionName: HeapTupleHeaderSetNatts
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeapTupleHeaderSetNatts(tup, natts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 576
    functionDepth: 0
    functionLinenumber: 576
    functionLinenumberEnd: 578
    functionName: HeapTupleHeaderHasExternal
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeapTupleHeaderHasExternal(tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - NATTS
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 588
    functionName: BITMAPLEN
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int BITMAPLEN(int NATTS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - MinimalTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 700
    functionName: HeapTupleHeaderHasMatch
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderHasMatch(const MinimalTupleData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - MinimalTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 706
    functionName: HeapTupleHeaderSetMatch
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetMatch(MinimalTupleData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - MinimalTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 708
    functionDepth: 0
    functionLinenumber: 708
    functionLinenumberEnd: 712
    functionName: HeapTupleHeaderClearMatch
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderClearMatch(MinimalTupleData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 722
    functionName: GETSTRUCT
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      GETSTRUCT(const HeapTupleData *tuple)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 732
    functionName: HeapTupleHasNulls
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHasNulls(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHasNulls
      Src: /src/postgres/src/include/access/htup_details.h:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 738
    functionName: HeapTupleNoNulls
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHasNulls
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleNoNulls(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 744
    functionName: HeapTupleHasVarWidth
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHasVarWidth(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHasVarWidth
      Src: /src/postgres/src/include/access/htup_details.h:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 750
    functionName: HeapTupleAllFixed
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHasVarWidth
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleAllFixed(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 756
    functionName: HeapTupleHasExternal
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHasExternal(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/include/access/htup_details.h:761,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 758
    functionDepth: 2
    functionLinenumber: 758
    functionLinenumberEnd: 762
    functionName: HeapTupleIsHotUpdated
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderIsHotUpdated
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleIsHotUpdated(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderSetHotUpdated
      Src: /src/postgres/src/include/access/htup_details.h:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 768
    functionName: HeapTupleSetHotUpdated
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderSetHotUpdated
    linkageType: ''
    returnType: void
    signature: void HeapTupleSetHotUpdated(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/include/access/htup_details.h:773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 774
    functionName: HeapTupleClearHotUpdated
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderClearHotUpdated
    linkageType: ''
    returnType: void
    signature: void HeapTupleClearHotUpdated(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/include/access/htup_details.h:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 776
    functionDepth: 1
    functionLinenumber: 776
    functionLinenumberEnd: 780
    functionName: HeapTupleIsHeapOnly
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderIsHeapOnly
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleIsHeapOnly(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderSetHeapOnly
      Src: /src/postgres/src/include/access/htup_details.h:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 786
    functionName: HeapTupleSetHeapOnly
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderSetHeapOnly
    linkageType: ''
    returnType: void
    signature: void HeapTupleSetHeapOnly(const HeapTupleData *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderClearHeapOnly
      Src: /src/postgres/src/include/access/htup_details.h:791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 792
    functionName: HeapTupleClearHeapOnly
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderClearHeapOnly
    linkageType: ''
    returnType: void
    signature: void HeapTupleClearHeapOnly(const HeapTupleData *tuple)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/htup_details.h:854,1
    - Dst: HeapTupleNoNulls
      Src: /src/postgres/src/include/access/htup_details.h:857,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/include/access/htup_details.h:861,1
    - Dst: fetchatt
      Src: /src/postgres/src/include/access/htup_details.h:863,1
    - Dst: nocachegetattr
      Src: /src/postgres/src/include/access/htup_details.h:866,1
    - Dst: att_isnull
      Src: /src/postgres/src/include/access/htup_details.h:870,1
    - Dst: nocachegetattr
      Src: /src/postgres/src/include/access/htup_details.h:876,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - tup
    - attnum
    - tupleDesc
    - isnull
    argTypes:
    - HeapTuple
    - int
    - TupleDesc
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 851
    functionDepth: 2
    functionLinenumber: 851
    functionLinenumberEnd: 878
    functionName: fastgetattr
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - Assert
    - att_isnull
    - HeapTupleNoNulls
    - TupleDescCompactAttr
    - fetchatt
    - nocachegetattr
    linkageType: ''
    returnType: Datum
    signature: Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool
      *isnull)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/include/access/htup_details.h:899,1
    - Dst: getmissingattr
      Src: /src/postgres/src/include/access/htup_details.h:900,1
    - Dst: fastgetattr
      Src: /src/postgres/src/include/access/htup_details.h:902,1
    - Dst: heap_getsysattr
      Src: /src/postgres/src/include/access/htup_details.h:905,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - tup
    - attnum
    - tupleDesc
    - isnull
    argTypes:
    - HeapTuple
    - int
    - TupleDesc
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 894
    functionDepth: 3
    functionLinenumber: 894
    functionLinenumberEnd: 906
    functionName: heap_getattr
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 5
    functionsReached:
    - fastgetattr
    - HeapTupleHeaderGetNatts
    - getmissingattr
    - heap_getsysattr
    linkageType: ''
    returnType: Datum
    signature: Datum heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:177,1
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:179,1
    - Dst: bbsink*::bbs_ops::begin_backup
      Src: /src/postgres/src/include/backup/basebackup_sink.h:183,1
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:185,1
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - sink
    - state
    - buffer_length
    argTypes:
    - bbsink*
    - bbsink_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 187
    functionName: bbsink_begin_backup
    functionSourceFile: /src/postgres/src/include/backup/basebackup_sink.h
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink*::bbs_ops::begin_backup
    linkageType: ''
    returnType: void
    signature: void bbsink_begin_backup(bbsink *sink, bbsink_state *state, int buffer_length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:193,1
    - Dst: bbsink*::bbs_ops::begin_archive
      Src: /src/postgres/src/include/backup/basebackup_sink.h:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - archive_name
    argTypes:
    - bbsink*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: bbsink_begin_archive
    functionSourceFile: /src/postgres/src/include/backup/basebackup_sink.h
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink*::bbs_ops::begin_archive
    linkageType: ''
    returnType: void
    signature: void bbsink_begin_archive(bbsink *sink, const char *archive_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:202,1
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:209,1
    - Dst: bbsink*::bbs_ops::archive_contents
      Src: /src/postgres/src/include/backup/basebackup_sink.h:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 212
    functionName: bbsink_archive_contents
    functionSourceFile: /src/postgres/src/include/backup/basebackup_sink.h
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink*::bbs_ops::archive_contents
    linkageType: ''
    returnType: void
    signature: void bbsink_archive_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:218,1
    - Dst: bbsink*::bbs_ops::end_archive
      Src: /src/postgres/src/include/backup/basebackup_sink.h:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 221
    functionName: bbsink_end_archive
    functionSourceFile: /src/postgres/src/include/backup/basebackup_sink.h
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink*::bbs_ops::end_archive
    linkageType: ''
    returnType: void
    signature: void bbsink_end_archive(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:227,1
    - Dst: bbsink*::bbs_ops::begin_manifest
      Src: /src/postgres/src/include/backup/basebackup_sink.h:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 230
    functionName: bbsink_begin_manifest
    functionSourceFile: /src/postgres/src/include/backup/basebackup_sink.h
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink*::bbs_ops::begin_manifest
    linkageType: ''
    returnType: void
    signature: void bbsink_begin_manifest(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:236,1
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:239,1
    - Dst: bbsink*::bbs_ops::manifest_contents
      Src: /src/postgres/src/include/backup/basebackup_sink.h:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 242
    functionName: bbsink_manifest_contents
    functionSourceFile: /src/postgres/src/include/backup/basebackup_sink.h
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink*::bbs_ops::manifest_contents
    linkageType: ''
    returnType: void
    signature: void bbsink_manifest_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:248,1
    - Dst: bbsink*::bbs_ops::end_manifest
      Src: /src/postgres/src/include/backup/basebackup_sink.h:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 251
    functionName: bbsink_end_manifest
    functionSourceFile: /src/postgres/src/include/backup/basebackup_sink.h
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink*::bbs_ops::end_manifest
    linkageType: ''
    returnType: void
    signature: void bbsink_end_manifest(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:257,1
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:258,1
    - Dst: list_length
      Src: /src/postgres/src/include/backup/basebackup_sink.h:258,1
    - Dst: bbsink*::bbs_ops::end_backup
      Src: /src/postgres/src/include/backup/basebackup_sink.h:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - sink
    - endptr
    - endtli
    argTypes:
    - bbsink*
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 261
    functionName: bbsink_end_backup
    functionSourceFile: /src/postgres/src/include/backup/basebackup_sink.h
    functionUses: 0
    functionsReached:
    - Assert
    - list_length
    - bbsink*::bbs_ops::end_backup
    linkageType: ''
    returnType: void
    signature: void bbsink_end_backup(bbsink *sink, XLogRecPtr endptr, TimeLineID
      endtli)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/backup/basebackup_sink.h:267,1
    - Dst: bbsink*::bbs_ops::cleanup
      Src: /src/postgres/src/include/backup/basebackup_sink.h:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 270
    functionName: bbsink_cleanup
    functionSourceFile: /src/postgres/src/include/backup/basebackup_sink.h
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink*::bbs_ops::cleanup
    linkageType: ''
    returnType: void
    signature: void bbsink_cleanup(bbsink *sink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/optimizer/extendplan.h:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - glob
    - extension_id
    argTypes:
    - PlannerGlobal*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 33
    functionName: GetPlannerGlobalExtensionState
    functionSourceFile: /src/postgres/src/include/optimizer/extendplan.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: 'void *

      GetPlannerGlobalExtensionState(PlannerGlobal *glob, int extension_id)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/optimizer/extendplan.h:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - root
    - extension_id
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: GetPlannerInfoExtensionState
    functionSourceFile: /src/postgres/src/include/optimizer/extendplan.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: 'void *

      GetPlannerInfoExtensionState(PlannerInfo *root, int extension_id)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/optimizer/extendplan.h:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rel
    - extension_id
    argTypes:
    - RelOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 61
    functionName: GetRelOptInfoExtensionState
    functionSourceFile: /src/postgres/src/include/optimizer/extendplan.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: 'void *

      GetRelOptInfoExtensionState(RelOptInfo *rel, int extension_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - root
    - ','
    - clause
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: make_simple_restrictinfo
    functionSourceFile: /src/postgres/src/include/optimizer/restrictinfo.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: make_simple_restrictinfo(root, clause)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_subset
      Src: /src/postgres/src/include/optimizer/restrictinfo.h:76,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/include/optimizer/restrictinfo.h:77,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/include/optimizer/restrictinfo.h:83,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/include/optimizer/restrictinfo.h:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - rinfo
    - outerrelids
    - innerrelids
    argTypes:
    - RestrictInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 91
    functionName: clause_sides_match_join
    functionSourceFile: /src/postgres/src/include/optimizer/restrictinfo.h
    functionUses: 0
    functionsReached:
    - bms_is_subset
    linkageType: ''
    returnType: bool
    signature: "bool clause_sides_match_join(RestrictInfo *rinfo, Relids outerrelids,\n\t\t\t\t\t\tRelids
      innerrelids)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - root
    - ','
    - tlist
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: create_pathtarget
    functionSourceFile: /src/postgres/src/include/optimizer/tlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: create_pathtarget(root, tlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetPlannerInfoExtensionState
      Src: /src/postgres/src/include/optimizer/geqo.h:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: GetGeqoPrivateData
    functionSourceFile: /src/postgres/src/include/optimizer/geqo.h
    functionUses: 0
    functionsReached:
    - GetPlannerInfoExtensionState
    linkageType: ''
    returnType: GeqoPrivateData
    signature: 'GeqoPrivateData *

      GetGeqoPrivateData(PlannerInfo *root)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMConstInt
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:30,1
    - Dst: LLVMConstIntToPtr
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - type
    argTypes:
    - void*
    - LLVMTypeRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: l_ptr_const
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMConstIntToPtr
    - LLVMConstInt
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_ptr_const(void *ptr, LLVMTypeRef type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMPointerType
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - LLVMTypeRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: l_ptr
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMPointerType
    linkageType: ''
    returnType: LLVMTypeRef
    signature: LLVMTypeRef l_ptr(LLVMTypeRef t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMConstInt
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:50,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lc
    - i
    argTypes:
    - LLVMContextRef
    - int8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: l_int8_const
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMInt8TypeInContext
    - LLVMConstInt
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_int8_const(LLVMContextRef lc, int8 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMConstInt
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:59,1
    - Dst: LLVMInt16TypeInContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lc
    - i
    argTypes:
    - LLVMContextRef
    - int16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: l_int16_const
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMInt16TypeInContext
    - LLVMConstInt
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_int16_const(LLVMContextRef lc, int16 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMConstInt
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:68,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lc
    - i
    argTypes:
    - LLVMContextRef
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: l_int32_const
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMInt32TypeInContext
    - LLVMConstInt
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_int32_const(LLVMContextRef lc, int32 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMConstInt
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:77,1
    - Dst: LLVMInt64TypeInContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lc
    - i
    argTypes:
    - LLVMContextRef
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: l_int64_const
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMInt64TypeInContext
    - LLVMConstInt
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_int64_const(LLVMContextRef lc, int64 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMConstInt
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: l_sizet_const
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMConstInt
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_sizet_const(size_t i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMConstInt
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: l_datum_const
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMConstInt
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_datum_const(Datum i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMConstInt
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 105
    functionName: l_sbool_const
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMConstInt
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_sbool_const(bool i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMConstInt
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: l_pbool_const
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMConstInt
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_pbool_const(bool i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMBuildStructGEP2
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - b
    - t
    - v
    - idx
    - name
    argTypes:
    - LLVMBuilderRef
    - LLVMTypeRef
    - LLVMValueRef
    - int32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: l_struct_gep
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMBuildStructGEP2
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_struct_gep(LLVMBuilderRef b, LLVMTypeRef t, LLVMValueRef
      v, int32 idx, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMBuildGEP2
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - b
    - t
    - v
    - indices
    - nindices
    - name
    argTypes:
    - LLVMBuilderRef
    - LLVMTypeRef
    - LLVMValueRef
    - LLVMValueRef*
    - int32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: l_gep
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMBuildGEP2
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_gep(LLVMBuilderRef b, LLVMTypeRef t, LLVMValueRef v,
      LLVMValueRef *indices, int32 nindices, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMBuildLoad2
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - b
    - t
    - v
    - name
    argTypes:
    - LLVMBuilderRef
    - LLVMTypeRef
    - LLVMValueRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: l_load
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMBuildLoad2
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_load(LLVMBuilderRef b, LLVMTypeRef t, LLVMValueRef v,
      const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMBuildCall2
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - b
    - t
    - fn
    - args
    - nargs
    - name
    argTypes:
    - LLVMBuilderRef
    - LLVMTypeRef
    - LLVMValueRef
    - LLVMValueRef*
    - int32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: l_call
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMBuildCall2
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_call(LLVMBuilderRef b, LLVMTypeRef t, LLVMValueRef fn,
      LLVMValueRef *args, int32 nargs, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: l_load
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:146,1
    - Dst: LLVMStructGetTypeAtIndex
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:147,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - b
    - t
    - v
    - idx
    - name
    argTypes:
    - LLVMBuilderRef
    - LLVMTypeRef
    - LLVMValueRef
    - int32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 150
    functionName: l_load_struct_gep
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - l_load
    - l_struct_gep
    - LLVMStructGetTypeAtIndex
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_load_struct_gep(LLVMBuilderRef b, LLVMTypeRef t, LLVMValueRef
      v, int32 idx, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: l_load
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:158,1
    - Dst: l_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - b
    - t
    - v
    - idx
    - name
    argTypes:
    - LLVMBuilderRef
    - LLVMTypeRef
    - LLVMValueRef
    - LLVMValueRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: l_load_gep1
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - l_load
    - l_gep
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_load_gep1(LLVMBuilderRef b, LLVMTypeRef t, LLVMValueRef
      v, LLVMValueRef idx, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:175,1
    - Dst: vsnprintf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:176,1
    - Dst: va_end
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:177,1
    - Dst: LLVMGetTypeContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:179,1
    - Dst: LLVMTypeOf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:179,1
    - Dst: LLVMGetBasicBlockParent
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:179,1
    - Dst: LLVMInsertBasicBlockInContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - r
    - fmt
    argTypes:
    - LLVMBasicBlockRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 182
    functionName: l_bb_before_v
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - va_end
    - LLVMTypeOf
    - va_start
    - LLVMInsertBasicBlockInContext
    - vsnprintf
    - LLVMGetBasicBlockParent
    - LLVMGetTypeContext
    linkageType: ''
    returnType: LLVMBasicBlockRef
    signature: LLVMBasicBlockRef l_bb_before_v(LLVMBasicBlockRef r, const char *fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:198,1
    - Dst: vsnprintf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:199,1
    - Dst: va_end
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:200,1
    - Dst: LLVMGetTypeContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:202,1
    - Dst: LLVMTypeOf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:202,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - f
    - fmt
    argTypes:
    - LLVMValueRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 205
    functionName: l_bb_append_v
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - va_end
    - LLVMTypeOf
    - va_start
    - LLVMAppendBasicBlockInContext
    - vsnprintf
    - LLVMGetTypeContext
    linkageType: ''
    returnType: LLVMBasicBlockRef
    signature: LLVMBasicBlockRef l_bb_append_v(LLVMValueRef f, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMCreateStringAttribute
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:216,1
    - Dst: LLVMGetTypeContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:216,1
    - Dst: LLVMTypeOf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:216,1
    - Dst: LLVMAddCallSiteAttribute
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 222
    functionName: l_callsite_ro
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMAddCallSiteAttribute
    - LLVMTypeOf
    - LLVMCreateStringAttribute
    - LLVMGetTypeContext
    linkageType: ''
    returnType: void
    signature: void l_callsite_ro(LLVMValueRef f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetEnumAttributeKindForName
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:234,1
    - Dst: LLVMCreateEnumAttribute
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:236,1
    - Dst: LLVMGetTypeContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:236,1
    - Dst: LLVMTypeOf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:236,1
    - Dst: LLVMAddCallSiteAttribute
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 238
    functionName: l_callsite_alwaysinline
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMAddCallSiteAttribute
    - LLVMTypeOf
    - LLVMCreateEnumAttribute
    - LLVMGetEnumAttributeKindForName
    - LLVMGetTypeContext
    linkageType: ''
    returnType: void
    signature: void l_callsite_alwaysinline(LLVMValueRef f)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetNamedGlobal
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:250,1
    - Dst: LLVMAddGlobal
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:251,1
    - Dst: l_ptr
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:251,1
    - Dst: l_load
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:252,1
    - Dst: l_ptr
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:252,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:253,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - mod
    - b
    - nc
    argTypes:
    - LLVMModuleRef
    - LLVMBuilderRef
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 256
    functionName: l_mcxt_switch
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMGetNamedGlobal
    - l_load
    - LLVMBuildStore
    - l_ptr
    - LLVMAddGlobal
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_mcxt_switch(LLVMModuleRef mod, LLVMBuilderRef b, LLVMValueRef
      nc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:267,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:272,1
    - Dst: LLVMArrayType
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:273,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - b
    - v_fcinfo
    - argno
    argTypes:
    - LLVMBuilderRef
    - LLVMValueRef
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 282
    functionName: l_funcnullp
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMArrayType
    - l_struct_gep
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_funcnullp(LLVMBuilderRef b, LLVMValueRef v_fcinfo, size_t
      argno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:293,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:298,1
    - Dst: LLVMArrayType
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:299,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - b
    - v_fcinfo
    - argno
    argTypes:
    - LLVMBuilderRef
    - LLVMValueRef
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 308
    functionName: l_funcvaluep
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMArrayType
    - l_struct_gep
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_funcvaluep(LLVMBuilderRef b, LLVMValueRef v_fcinfo,
      size_t argno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: l_load
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:316,1
    - Dst: l_funcnullp
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - b
    - v_fcinfo
    - argno
    argTypes:
    - LLVMBuilderRef
    - LLVMValueRef
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 317
    functionName: l_funcnull
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - l_load
    - l_funcnullp
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_funcnull(LLVMBuilderRef b, LLVMValueRef v_fcinfo, size_t
      argno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: l_load
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:325,1
    - Dst: l_funcvaluep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - b
    - v_fcinfo
    - argno
    argTypes:
    - LLVMBuilderRef
    - LLVMValueRef
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 326
    functionName: l_funcvalue
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - l_load
    - l_funcvaluep
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef l_funcvalue(LLVMBuilderRef b, LLVMValueRef v_fcinfo, size_t
      argno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 118
    functionName: llvm::backport::SectionMemoryManager::SectionMemoryManager
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager(const SectionMemoryManager &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: operator=(const SectionMemoryManager &)
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator=(const SectionMemoryManager &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: llvm::backport::SectionMemoryManager::needsToReserveAllocationSpace
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool needsToReserveAllocationSpace() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 118
    functionName: llvm::backport::SectionMemoryManager::SectionMemoryManager
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager(const SectionMemoryManager &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: operator=(const SectionMemoryManager &)
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator=(const SectionMemoryManager &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: llvm::backport::SectionMemoryManager::needsToReserveAllocationSpace
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool needsToReserveAllocationSpace() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 118
    functionName: llvm::backport::SectionMemoryManager::SectionMemoryManager
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager(const SectionMemoryManager &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: operator=(const SectionMemoryManager &)
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator=(const SectionMemoryManager &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: llvm::backport::SectionMemoryManager::needsToReserveAllocationSpace
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool needsToReserveAllocationSpace() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 118
    functionName: llvm::backport::SectionMemoryManager::SectionMemoryManager
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager(const SectionMemoryManager &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: operator=(const SectionMemoryManager &)
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator=(const SectionMemoryManager &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: llvm::backport::SectionMemoryManager::needsToReserveAllocationSpace
    functionSourceFile: /src/postgres/src/include/jit/SectionMemoryManager.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool needsToReserveAllocationSpace() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocExtended
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:70,1
    - Dst: PQclear
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:76,1
    - Dst: ereport
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:77,1
    - Dst: errcode
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:78,1
    - Dst: errmsg
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:79,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 88
    functionName: libpqsrv_PQwrap
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQclear
    - errcode
    - MemoryContextAllocExtended
    - ereport
    - errmsg
    - MemoryContextRegisterResetCallback
    linkageType: ''
    returnType: libpqsrv_PGresult
    signature: 'libpqsrv_PGresult *

      libpqsrv_PQwrap(PGresult *res)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextUnregisterResetCallback
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:99,1
    - Dst: PQclear
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:100,1
    - Dst: pfree
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bres
    argTypes:
    - libpqsrv_PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 103
    functionName: libpqsrv_PQclear
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextUnregisterResetCallback
    - PQclear
    linkageType: ''
    returnType: void
    signature: void libpqsrv_PQclear(libpqsrv_PGresult *bres)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:118,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:124,1
    - Dst: MemoryContextUnregisterResetCallback
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:126,1
    - Dst: pfree
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - bres
    - ctx
    argTypes:
    - libpqsrv_PGresult*
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 129
    functionName: libpqsrv_PGresultSetParent
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextUnregisterResetCallback
    - MemoryContextRegisterResetCallback
    - MemoryContextAlloc
    linkageType: ''
    returnType: libpqsrv_PGresult
    signature: 'libpqsrv_PGresult *

      libpqsrv_PGresultSetParent(libpqsrv_PGresult *bres, MemoryContext ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpqsrv_PQwrap
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:140,1
    - Dst: PQgetResult
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 141
    functionName: libpqsrv_PQgetResult
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - libpqsrv_PQwrap
    - PQgetResult
    linkageType: ''
    returnType: libpqsrv_PGresult
    signature: 'libpqsrv_PGresult *

      libpqsrv_PQgetResult(PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - libpqsrv_PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: libpqsrv_PQresultStatus
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQresultStatus
    linkageType: ''
    returnType: ExecStatusType
    signature: ExecStatusType libpqsrv_PQresultStatus(const libpqsrv_PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - libpqsrv_PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 164
    functionName: libpqsrv_PQresultErrorMessage
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQresultErrorMessage
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqsrv_PQresultErrorMessage(const libpqsrv_PGresult *res)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQresultErrorField
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - res
    - fieldcode
    argTypes:
    - libpqsrv_PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 172
    functionName: libpqsrv_PQresultErrorField
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQresultErrorField
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqsrv_PQresultErrorField(const libpqsrv_PGresult *res, int fieldcode)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQcmdStatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - libpqsrv_PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 180
    functionName: libpqsrv_PQcmdStatus
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQcmdStatus
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqsrv_PQcmdStatus(const libpqsrv_PGresult *res)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - libpqsrv_PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 188
    functionName: libpqsrv_PQntuples
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQntuples
    linkageType: ''
    returnType: int
    signature: int libpqsrv_PQntuples(const libpqsrv_PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - libpqsrv_PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: libpqsrv_PQnfields
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQnfields
    linkageType: ''
    returnType: int
    signature: int libpqsrv_PQnfields(const libpqsrv_PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgetvalue
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - libpqsrv_PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 204
    functionName: libpqsrv_PQgetvalue
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQgetvalue
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqsrv_PQgetvalue(const libpqsrv_PGresult *res, int tup_num, int field_num)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgetlength
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - libpqsrv_PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 212
    functionName: libpqsrv_PQgetlength
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQgetlength
    linkageType: ''
    returnType: int
    signature: int libpqsrv_PQgetlength(const libpqsrv_PGresult *res, int tup_num,
      int field_num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgetisnull
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - libpqsrv_PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 220
    functionName: libpqsrv_PQgetisnull
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQgetisnull
    linkageType: ''
    returnType: int
    signature: int libpqsrv_PQgetisnull(const libpqsrv_PGresult *res, int tup_num,
      int field_num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQfname
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - libpqsrv_PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 228
    functionName: libpqsrv_PQfname
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQfname
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqsrv_PQfname(const libpqsrv_PGresult *res, int field_num)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQcmdTuples
      Src: /src/postgres/src/include/libpq/libpq-be-fe.h:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - libpqsrv_PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 236
    functionName: libpqsrv_PQcmdTuples
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe.h
    functionUses: 0
    functionsReached:
    - PQcmdTuples
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqsrv_PQcmdTuples(const libpqsrv_PGresult *res)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpqsrv_connect_prepare
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:60,1
    - Dst: PQconnectStart
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conninfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: libpqsrv_connect_start
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - libpqsrv_connect_prepare
    - PQconnectStart
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      libpqsrv_connect_start(const char *conninfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpqsrv_connect_start
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:78,1
    - Dst: libpqsrv_connect_complete
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conninfo
    - wait_event_info
    argTypes:
    - char*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 83
    functionName: libpqsrv_connect
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - libpqsrv_connect_start
    - libpqsrv_connect_complete
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      libpqsrv_connect(const char *conninfo, uint32 wait_event_info)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpqsrv_connect_prepare
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:95,1
    - Dst: PQconnectStartParams
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - keywords
    - values
    - expand_dbname
    argTypes:
    - char**
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 98
    functionName: libpqsrv_connect_params_start
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - PQconnectStartParams
    - libpqsrv_connect_prepare
    linkageType: ''
    returnType: PGconn
    signature: "PGconn *\nlibpqsrv_connect_params_start(const char *const *keywords,\n\t\t\t\t\t\t\t
      \ const char *const *values,\n\t\t\t\t\t\t\t  int expand_dbname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpqsrv_connect_params_start
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:112,1
    - Dst: libpqsrv_connect_complete
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - keywords
    - values
    - expand_dbname
    - wait_event_info
    argTypes:
    - char**
    - char**
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 117
    functionName: libpqsrv_connect_params
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - libpqsrv_connect_params_start
    - libpqsrv_connect_complete
    linkageType: ''
    returnType: PGconn
    signature: "PGconn *\nlibpqsrv_connect_params(const char *const *keywords,\n\t\t\t\t\t\tconst
      char *const *values,\n\t\t\t\t\t\tint expand_dbname,\n\t\t\t\t\t\tuint32 wait_event_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseExternalFD
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:139,1
    - Dst: PQfinish
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 141
    functionName: libpqsrv_disconnect
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - ReleaseExternalFD
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void libpqsrv_disconnect(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AcquireExternalFD
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:158,1
    - Dst: ereport
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:161,1
    - Dst: errcode
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:162,1
    - Dst: errmsg
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:163,1
    - Dst: errdetail
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:164,1
    - Dst: errhint
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:165,1
    - Dst: ereport
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:167,1
    - Dst: errcode
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:168,1
    - Dst: errmsg
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:169,1
    - Dst: errdetail
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:170,1
    - Dst: errhint
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 174
    functionName: libpqsrv_connect_prepare
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 2
    functionsReached:
    - errcode
    - ereport
    - errhint
    - errmsg
    - AcquireExternalFD
    - errdetail
    linkageType: ''
    returnType: void
    signature: void libpqsrv_connect_prepare(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseExternalFD
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:189,1
    - Dst: PQstatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:197,1
    - Dst: PG_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:204,1
    - Dst: PQstatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:227,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:233,1
    - Dst: PQsocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:235,1
    - Dst: ResetLatch
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:242,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:243,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:248,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:251,1
    - Dst: ReleaseExternalFD
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:258,1
    - Dst: PQfinish
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:259,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:261,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:263,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - conn
    - wait_event_info
    argTypes:
    - PGconn*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 264
    functionName: libpqsrv_connect_complete
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 2
    functionsReached:
    - WaitLatchOrSocket
    - PG_TRY
    - PG_CATCH
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - PQfinish
    - PG_RE_THROW
    - PQsocket
    - PQconnectPoll
    - ReleaseExternalFD
    - PG_END_TRY
    - PQstatus
    linkageType: ''
    returnType: void
    signature: void libpqsrv_connect_complete(PGconn *conn, uint32 wait_event_info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQuery
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:279,1
    - Dst: libpqsrv_get_result_last
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - query
    - wait_event_info
    argTypes:
    - PGconn*
    - char*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 282
    functionName: libpqsrv_exec
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - PQsendQuery
    - libpqsrv_get_result_last
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      libpqsrv_exec(PGconn *conn, const char *query, uint32 wait_event_info)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:300,1
    - Dst: libpqsrv_get_result_last
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 9
    argNames:
    - conn
    - command
    - nParams
    - paramTypes
    - paramValues
    - paramLengths
    - paramFormats
    - resultFormat
    - wait_event_info
    argTypes:
    - PGconn*
    - char*
    - int
    - Oid*
    - char**
    - int*
    - int*
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 304
    functionName: libpqsrv_exec_params
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - PQsendQueryParams
    - libpqsrv_get_result_last
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\nlibpqsrv_exec_params(PGconn *conn,\n\t\t\t\t\t const char
      *command,\n\t\t\t\t\t int nParams,\n\t\t\t\t\t const Oid *paramTypes,\n\t\t\t\t\t
      const char *const *paramValues,\n\t\t\t\t\t const int *paramLengths,\n\t\t\t\t\t
      const int *paramFormats,\n\t\t\t\t\t int resultFormat,\n\t\t\t\t\t uint32 wait_event_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:320,1
    - Dst: PQclear
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:328,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:331,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:332,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:333,1
    - Dst: PQstatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:334,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 2
    argNames:
    - conn
    - wait_event_info
    argTypes:
    - PGconn*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 338
    functionName: libpqsrv_get_result_last
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 2
    functionsReached:
    - libpqsrv_get_result
    - PQstatus
    - PQclear
    - PQresultStatus
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      libpqsrv_get_result_last(PGconn *conn, uint32 wait_event_info)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQisBusy
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:350,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:354,1
    - Dst: PQsocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:357,1
    - Dst: ResetLatch
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:364,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:365,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:369,1
    - Dst: PQgetResult
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:377,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - wait_event_info
    argTypes:
    - PGconn*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 378
    functionName: libpqsrv_get_result
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 1
    functionsReached:
    - WaitLatchOrSocket
    - PQconsumeInput
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - PQsocket
    - PQisBusy
    - PQgetResult
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      libpqsrv_get_result(PGconn *conn, uint32 wait_event_info)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQcancelCreate
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:401,1
    - Dst: PG_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:407,1
    - Dst: PQcancelStart
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:409,1
    - Dst: pchomp
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:411,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:411,1
    - Dst: PQcancelPoll
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:422,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:427,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:428,1
    - Dst: pchomp
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:444,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:444,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:449,1
    - Dst: PQcancelSocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:449,1
    - Dst: ResetLatch
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:452,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:454,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:458,1
    - Dst: PQcancelFinish
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:460,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:462,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 2
    argNames:
    - conn
    - endtime
    argTypes:
    - PGconn*
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 465
    functionName: libpqsrv_cancel
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - WaitLatchOrSocket
    - PG_TRY
    - PQcancelCreate
    - PQcancelSocket
    - PQcancelFinish
    - pchomp
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - PQcancelPoll
    - PG_FINALLY
    - TimestampDifferenceMilliseconds
    - PQcancelStart
    - PQcancelErrorMessage
    - PG_END_TRY
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqsrv_cancel(PGconn *conn, TimestampTz endtime)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:496,1
    - Dst: strlen
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:497,1
    - Dst: ereport
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:501,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - arg
    - res
    argTypes:
    - void*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 503
    functionName: libpqsrv_notice_receiver
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - PQresultErrorMessage
    - ereport
    - strlen
    - errmsg_internal
    linkageType: ''
    returnType: void
    signature: void libpqsrv_notice_receiver(void *arg, const PGresult *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: pq_comm_reset
    functionSourceFile: /src/postgres/src/include/libpq/libpq.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pq_comm_reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: pq_flush
    functionSourceFile: /src/postgres/src/include/libpq/libpq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pq_flush()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: pq_flush_if_writable
    functionSourceFile: /src/postgres/src/include/libpq/libpq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pq_flush_if_writable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: pq_is_send_pending
    functionSourceFile: /src/postgres/src/include/libpq/libpq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pq_is_send_pending()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - msgtype
    - ','
    - s
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: pq_putmessage
    functionSourceFile: /src/postgres/src/include/libpq/libpq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pq_putmessage(msgtype, s, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - msgtype
    - ','
    - s
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: pq_putmessage_noblock
    functionSourceFile: /src/postgres/src/include/libpq/libpq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pq_putmessage_noblock(msgtype, s, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/include/libpq/pqformat.h:130,1
    - Dst: pq_writeint8
      Src: /src/postgres/src/include/libpq/pqformat.h:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - i
    argTypes:
    - StringInfo
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 132
    functionName: pq_sendint8
    functionSourceFile: /src/postgres/src/include/libpq/pqformat.h
    functionUses: 0
    functionsReached:
    - pq_writeint8
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void pq_sendint8(StringInfo buf, uint8 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/include/libpq/pqformat.h:138,1
    - Dst: pq_writeint16
      Src: /src/postgres/src/include/libpq/pqformat.h:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - i
    argTypes:
    - StringInfo
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 140
    functionName: pq_sendint16
    functionSourceFile: /src/postgres/src/include/libpq/pqformat.h
    functionUses: 0
    functionsReached:
    - pq_writeint16
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void pq_sendint16(StringInfo buf, uint16 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/include/libpq/pqformat.h:146,1
    - Dst: pq_writeint32
      Src: /src/postgres/src/include/libpq/pqformat.h:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - i
    argTypes:
    - StringInfo
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 148
    functionName: pq_sendint32
    functionSourceFile: /src/postgres/src/include/libpq/pqformat.h
    functionUses: 0
    functionsReached:
    - pq_writeint32
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void pq_sendint32(StringInfo buf, uint32 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/include/libpq/pqformat.h:154,1
    - Dst: pq_writeint64
      Src: /src/postgres/src/include/libpq/pqformat.h:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - i
    argTypes:
    - StringInfo
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 156
    functionName: pq_sendint64
    functionSourceFile: /src/postgres/src/include/libpq/pqformat.h
    functionUses: 0
    functionsReached:
    - pq_writeint64
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void pq_sendint64(StringInfo buf, uint64 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendint8
      Src: /src/postgres/src/include/libpq/pqformat.h:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - byt
    argTypes:
    - StringInfo
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 163
    functionName: pq_sendbyte
    functionSourceFile: /src/postgres/src/include/libpq/pqformat.h
    functionUses: 0
    functionsReached:
    - pq_sendint8
    linkageType: ''
    returnType: void
    signature: void pq_sendbyte(StringInfo buf, uint8 byt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendint8
      Src: /src/postgres/src/include/libpq/pqformat.h:176,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/include/libpq/pqformat.h:179,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/include/libpq/pqformat.h:182,1
    - Dst: elog
      Src: /src/postgres/src/include/libpq/pqformat.h:185,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - buf
    - i
    - b
    argTypes:
    - StringInfo
    - uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 188
    functionName: pq_sendint
    functionSourceFile: /src/postgres/src/include/libpq/pqformat.h
    functionUses: 0
    functionsReached:
    - elog
    - pq_sendint32
    - pq_sendint8
    - pq_sendint16
    linkageType: ''
    returnType: void
    signature: void pq_sendint(StringInfo buf, uint32 i, int b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - how
    - ','
    - set
    - ','
    - oset
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: sigprocmask
    functionSourceFile: /src/postgres/src/include/libpq/pqsignal.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigprocmask(how, set, oset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - signum
    - ','
    - act
    - ','
    - oldact
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: sigaction
    functionSourceFile: /src/postgres/src/include/libpq/pqsignal.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigaction(signum, act, oldact)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - set
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: sigemptyset
    functionSourceFile: /src/postgres/src/include/libpq/pqsignal.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigemptyset(set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - set
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: sigfillset
    functionSourceFile: /src/postgres/src/include/libpq/pqsignal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigfillset(set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - set
    - ','
    - signum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: sigaddset
    functionSourceFile: /src/postgres/src/include/libpq/pqsignal.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigaddset(set, signum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - set
    - ','
    - signum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: sigdelset
    functionSourceFile: /src/postgres/src/include/libpq/pqsignal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigdelset(set, signum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - path
    - ','
    - port
    - ','
    - sockdir
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: UNIXSOCK_PATH
    functionSourceFile: /src/postgres/src/include/libpq/pqcomm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNIXSOCK_PATH(path, port, sockdir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_absolute_path
      Src: /src/postgres/src/include/libpq/pqcomm.h:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: is_unixsock_path
    functionSourceFile: /src/postgres/src/include/libpq/pqcomm.h
    functionUses: 4
    functionsReached:
    - is_absolute_path
    linkageType: ''
    returnType: bool
    signature: bool is_unixsock_path(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: PG_PROTOCOL_MAJOR
    functionSourceFile: /src/postgres/src/include/libpq/pqcomm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_PROTOCOL_MAJOR(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: PG_PROTOCOL_MINOR
    functionSourceFile: /src/postgres/src/include/libpq/pqcomm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_PROTOCOL_MINOR(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: PG_PROTOCOL_FULL
    functionSourceFile: /src/postgres/src/include/libpq/pqcomm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_PROTOCOL_FULL(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - m
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: PG_PROTOCOL
    functionSourceFile: /src/postgres/src/include/libpq/pqcomm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_PROTOCOL(m,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - tag
    - ','
    - name
    - ','
    - evtrgok
    - ','
    - rwrok
    - ','
    - rowcnt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: PG_CMDTAG
    functionSourceFile: /src/postgres/src/include/tcop/cmdtag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - qc
    - commandTag
    - nprocessed
    argTypes:
    - QueryCompletion*
    - CommandTag
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 42
    functionName: SetQueryCompletion
    functionSourceFile: /src/postgres/src/include/tcop/cmdtag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void SetQueryCompletion(QueryCompletion *qc, CommandTag commandTag,\n\t\t\t\t
      \  uint64 nprocessed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - QueryCompletion*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: CopyQueryCompletion
    functionSourceFile: /src/postgres/src/include/tcop/cmdtag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CopyQueryCompletion(QueryCompletion *dst, const QueryCompletion
      *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCommandTagName
      Src: /src/postgres/src/include/tcop/utility.h:105,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/include/tcop/utility.h:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: CreateCommandName
    functionSourceFile: /src/postgres/src/include/tcop/utility.h
    functionUses: 1
    functionsReached:
    - CreateCommandTag
    - GetCommandTagName
    linkageType: ''
    returnType: char
    signature: 'char *

      CreateCommandName(Node *parsetree)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: GET_PG_MAJORVERSION_NUM
    functionSourceFile: /src/postgres/src/include/fe_utils/version.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_PG_MAJORVERSION_NUM(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/fe_utils/astreamer.h:141,1
    - Dst: astreamer*::bbs_ops::content
      Src: /src/postgres/src/include/fe_utils/astreamer.h:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 143
    functionName: astreamer_content
    functionSourceFile: /src/postgres/src/include/fe_utils/astreamer.h
    functionUses: 22
    functionsReached:
    - Assert
    - astreamer*::bbs_ops::content
    linkageType: ''
    returnType: void
    signature: "void astreamer_content(astreamer *streamer, astreamer_member *member,\n\t\t\t\t
      \ const char *data, int len,\n\t\t\t\t  astreamer_archive_context context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/fe_utils/astreamer.h:149,1
    - Dst: astreamer*::bbs_ops::finalize
      Src: /src/postgres/src/include/fe_utils/astreamer.h:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: astreamer_finalize
    functionSourceFile: /src/postgres/src/include/fe_utils/astreamer.h
    functionUses: 14
    functionsReached:
    - Assert
    - astreamer*::bbs_ops::finalize
    linkageType: ''
    returnType: void
    signature: void astreamer_finalize(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/fe_utils/astreamer.h:157,1
    - Dst: astreamer*::bbs_ops::free
      Src: /src/postgres/src/include/fe_utils/astreamer.h:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 159
    functionName: astreamer_free
    functionSourceFile: /src/postgres/src/include/fe_utils/astreamer.h
    functionUses: 14
    functionsReached:
    - Assert
    - astreamer*::bbs_ops::free
    linkageType: ''
    returnType: void
    signature: void astreamer_free(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/fe_utils/astreamer.h:171,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/include/fe_utils/astreamer.h:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - streamer
    - data
    - len
    - nbytes
    argTypes:
    - astreamer*
    - char**
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: astreamer_buffer_bytes
    functionSourceFile: /src/postgres/src/include/fe_utils/astreamer.h
    functionUses: 1
    functionsReached:
    - Assert
    - appendBinaryStringInfo
    linkageType: ''
    returnType: void
    signature: "void astreamer_buffer_bytes(astreamer *streamer, const char **data,
      int *len,\n\t\t\t\t\t   int nbytes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_buffer_bytes
      Src: /src/postgres/src/include/fe_utils/astreamer.h:200,1
    - Dst: astreamer_buffer_bytes
      Src: /src/postgres/src/include/fe_utils/astreamer.h:205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - streamer
    - data
    - len
    - target_bytes
    argTypes:
    - astreamer*
    - char**
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 207
    functionName: astreamer_buffer_until
    functionSourceFile: /src/postgres/src/include/fe_utils/astreamer.h
    functionUses: 1
    functionsReached:
    - astreamer_buffer_bytes
    linkageType: ''
    returnType: bool
    signature: "bool astreamer_buffer_until(astreamer *streamer, const char **data,
      int *len,\n\t\t\t\t\t   int target_bytes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - slot
    - handler
    - context
    argTypes:
    - ParallelSlot*
    - ParallelSlotResultHandler
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: ParallelSlotSetHandler
    functionSourceFile: /src/postgres/src/include/fe_utils/parallel_slot.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ParallelSlotSetHandler(ParallelSlot *slot, ParallelSlotResultHandler
      handler,\n\t\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - slot
    argTypes:
    - ParallelSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: ParallelSlotClearHandler
    functionSourceFile: /src/postgres/src/include/fe_utils/parallel_slot.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParallelSlotClearHandler(ParallelSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParallelSlotClearHandler
      Src: /src/postgres/src/include/fe_utils/parallel_slot.h:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - slot
    argTypes:
    - ParallelSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: ParallelSlotSetIdle
    functionSourceFile: /src/postgres/src/include/fe_utils/parallel_slot.h
    functionUses: 3
    functionsReached:
    - ParallelSlotClearHandler
    linkageType: ''
    returnType: void
    signature: void ParallelSlotSetIdle(ParallelSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - set
    - ','
    - opt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: check_mut_excl_opts
    functionSourceFile: /src/postgres/src/include/fe_utils/option_utils.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_mut_excl_opts(set, opt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - userid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: MappingUserName
    functionSourceFile: /src/postgres/src/include/foreign/foreign.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MappingUserName(userid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iterator
    argTypes:
    - TBMIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 125
    functionName: tbm_exhausted
    functionSourceFile: /src/postgres/src/include/nodes/tidbitmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool tbm_exhausted(TBMIterator *iterator)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 151
    functionName: MemoryContextIsValid
    functionSourceFile: /src/postgres/src/include/nodes/memnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MemoryContextIsValid(context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 131
    functionName: list_head
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ListCell
    signature: 'ListCell *

      list_head(const List *l)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: list_tail
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ListCell
    signature: 'ListCell *

      list_tail(const List *l)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - l
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 148
    functionName: list_second_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ListCell
    signature: 'ListCell *

      list_second_cell(const List *l)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: list_length
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int list_length(const List *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: lfirst
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lfirst(lc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    functionName: lfirst_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lfirst_int(lc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 175
    functionName: lfirst_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lfirst_oid(lc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: lfirst_xid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lfirst_xid(lc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - lc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 177
    functionName: lfirst_node
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lfirst_node(type,lc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 179
    functionName: linitial
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: linitial(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 180
    functionName: linitial_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: linitial_int(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 181
    functionName: linitial_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: linitial_oid(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 182
    functionName: linitial_node
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: linitial_node(type,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 184
    functionName: lsecond
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lsecond(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 185
    functionName: lsecond_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lsecond_int(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    functionName: lsecond_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lsecond_oid(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    functionName: lsecond_node
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lsecond_node(type,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    functionName: lthird
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lthird(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    functionName: lthird_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lthird_int(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: lthird_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lthird_oid(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: lthird_node
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lthird_node(type,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 194
    functionName: lfourth
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lfourth(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 195
    functionName: lfourth_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lfourth_int(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 196
    functionName: lfourth_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lfourth_oid(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 197
    functionName: lfourth_node
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lfourth_node(type,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 199
    functionName: llast
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: llast(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 200
    functionName: llast_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: llast_int(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 201
    functionName: llast_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: llast_oid(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 202
    functionName: llast_xid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: llast_xid(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: llast_node
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: llast_node(type,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 215
    functionName: list_make_ptr_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ListCell
    signature: ListCell list_make_ptr_cell(void *v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: list_make_int_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ListCell
    signature: ListCell list_make_int_cell(int v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 233
    functionName: list_make_oid_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ListCell
    signature: ListCell list_make_oid_cell(Oid v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: list_make_xid_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ListCell
    signature: ListCell list_make_xid_cell(TransactionId v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x1
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 246
    functionName: list_make1
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make1(x1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x1
    - ','
    - x2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 248
    functionName: list_make2
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make2(x1,x2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 251
    functionName: list_make3
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make3(x1,x2,x3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - ','
    - x4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: list_make4
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make4(x1,x2,x3,x4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - ','
    - x4
    - ','
    - x5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 258
    functionName: list_make5
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make5(x1,x2,x3,x4,x5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x1
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 261
    functionName: list_make1_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make1_int(x1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x1
    - ','
    - x2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 263
    functionName: list_make2_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make2_int(x1,x2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 266
    functionName: list_make3_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make3_int(x1,x2,x3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - ','
    - x4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 269
    functionName: list_make4_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make4_int(x1,x2,x3,x4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - ','
    - x4
    - ','
    - x5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: list_make5_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make5_int(x1,x2,x3,x4,x5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x1
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 276
    functionName: list_make1_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make1_oid(x1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x1
    - ','
    - x2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 278
    functionName: list_make2_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make2_oid(x1,x2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 281
    functionName: list_make3_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make3_oid(x1,x2,x3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - ','
    - x4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: list_make4_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make4_oid(x1,x2,x3,x4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - ','
    - x4
    - ','
    - x5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 288
    functionName: list_make5_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make5_oid(x1,x2,x3,x4,x5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x1
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 291
    functionName: list_make1_xid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make1_xid(x1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x1
    - ','
    - x2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 293
    functionName: list_make2_xid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make2_xid(x1,x2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 296
    functionName: list_make3_xid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make3_xid(x1,x2,x3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - ','
    - x4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: list_make4_xid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make4_xid(x1,x2,x3,x4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - x1
    - ','
    - x2
    - ','
    - x3
    - ','
    - x4
    - ','
    - x5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 303
    functionName: list_make5_xid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make5_xid(x1,x2,x3,x4,x5)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:311,1
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 314
    functionName: list_nth_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: ListCell
    signature: 'ListCell *

      list_nth_cell(const List *list, int n)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 324
    functionName: list_last_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: ListCell
    signature: 'ListCell *

      list_last_cell(const List *list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:333,1
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/pg_list.h:333,1
    - Dst: lfirst
      Src: /src/postgres/src/include/nodes/pg_list.h:334,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/include/nodes/pg_list.h:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 335
    functionName: list_nth
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 1
    functionsReached:
    - Assert
    - list_nth_cell
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: 'void *

      list_nth(const List *list, int n)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:344,1
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/pg_list.h:344,1
    - Dst: lfirst_int
      Src: /src/postgres/src/include/nodes/pg_list.h:345,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/include/nodes/pg_list.h:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 346
    functionName: list_nth_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - Assert
    - list_nth_cell
    - IsA
    - lfirst_int
    linkageType: ''
    returnType: int
    signature: int list_nth_int(const List *list, int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:355,1
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/pg_list.h:355,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/include/nodes/pg_list.h:356,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/include/nodes/pg_list.h:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 357
    functionName: list_nth_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - Assert
    - list_nth_cell
    - lfirst_oid
    - IsA
    linkageType: ''
    returnType: Oid
    signature: Oid list_nth_oid(const List *list, int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - list
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 360
    functionName: list_nth_node
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_nth_node(type,list,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - l
    - c
    argTypes:
    - List*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 369
    functionName: list_cell_number
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int list_cell_number(const List *l, const ListCell *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - l
    - c
    argTypes:
    - List*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 383
    functionName: lnext
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 3
    functionsReached:
    - Assert
    linkageType: ''
    returnType: ListCell
    signature: 'ListCell *

      lnext(const List *l, const ListCell *c)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cell
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 412
    functionName: foreach
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foreach(cell, lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lst
    - ','
    - var_or_cell
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 425
    functionName: foreach_delete_current
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foreach_delete_current(lst, var_or_cell)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var_or_cell
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 436
    functionName: foreach_current_index
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foreach_current_index(var_or_cell)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cell
    - ','
    - lst
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 453
    functionName: for_each_from
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: for_each_from(cell, lst, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lst
    - N
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 461
    functionName: for_each_from_setup
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: ForEachState
    signature: ForEachState for_each_from_setup(const List *lst, int N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cell
    - ','
    - lst
    - ','
    - initcell
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 477
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: for_each_cell(cell, lst, initcell)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_cell_number
      Src: /src/postgres/src/include/nodes/pg_list.h:482,1
    - Dst: list_length
      Src: /src/postgres/src/include/nodes/pg_list.h:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lst
    - initcell
    argTypes:
    - List*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 478
    functionDepth: 2
    functionLinenumber: 478
    functionLinenumberEnd: 485
    functionName: for_each_cell_setup
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - list_length
    - list_cell_number
    linkageType: ''
    returnType: ForEachState
    signature: ForEachState for_each_cell_setup(const List *lst, const ListCell *initcell)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - var
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 502
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foreach_ptr(type, var, lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - var
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 503
    functionName: foreach_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foreach_int(var, lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - var
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 504
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foreach_oid(var, lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - var
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 505
    functionName: foreach_xid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foreach_xid(var, lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - type
    - ','
    - pointer
    - ','
    - var
    - ','
    - lst
    - ','
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 522
    functionName: foreach_internal
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foreach_internal(type, pointer, var, lst, func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - var
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 537
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: foreach_node(type, var, lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cell1
    - ','
    - list1
    - ','
    - cell2
    - ','
    - list2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 556
    functionName: forboth
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: forboth(cell1, list1, cell2, list2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cell
    - ','
    - state
    - ','
    - l
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: multi_for_advance_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: multi_for_advance_cell(cell, state, l, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - cell1
    - ','
    - list1
    - ','
    - initcell1
    - ','
    - cell2
    - ','
    - list2
    - ','
    - initcell2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 579
    functionName: for_both_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: for_both_cell(cell1, list1, initcell1, cell2, list2, initcell2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_cell_number
      Src: /src/postgres/src/include/nodes/pg_list.h:585,1
    - Dst: list_length
      Src: /src/postgres/src/include/nodes/pg_list.h:585,1
    - Dst: list_cell_number
      Src: /src/postgres/src/include/nodes/pg_list.h:586,1
    - Dst: list_length
      Src: /src/postgres/src/include/nodes/pg_list.h:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - list1
    - initcell1
    - list2
    - initcell2
    argTypes:
    - List*
    - ListCell*
    - List*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 580
    functionDepth: 2
    functionLinenumber: 580
    functionLinenumberEnd: 589
    functionName: for_both_cell_setup
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - list_length
    - list_cell_number
    linkageType: ''
    returnType: ForBothCellState
    signature: "ForBothCellState for_both_cell_setup(const List *list1, const ListCell
      *initcell1,\n\t\t\t\t\tconst List *list2, const ListCell *initcell2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - cell1
    - ','
    - list1
    - ','
    - cell2
    - ','
    - list2
    - ','
    - cell3
    - ','
    - list3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 602
    functionName: forthree
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: forthree(cell1, list1, cell2, list2, cell3, list3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - cell1
    - ','
    - list1
    - ','
    - cell2
    - ','
    - list2
    - ','
    - cell3
    - ','
    - list3
    - ','
    - cell4
    - ','
    - list4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 607
    functionDepth: 0
    functionLinenumber: 607
    functionLinenumberEnd: 615
    functionName: forfour
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: forfour(cell1, list1, cell2, list2, cell3, list3, cell4, list4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 21
    argNames:
    - (
    - cell1
    - ','
    - list1
    - ','
    - cell2
    - ','
    - list2
    - ','
    - cell3
    - ','
    - list3
    - ','
    - cell4
    - ','
    - list4
    - ','
    - cell5
    - ','
    - list5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 630
    functionName: forfive
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: forfive(cell1, list1, cell2, list2, cell3, list3, cell4, list4, cell5,
      list5)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/nodeFuncs.h:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: is_funcclause
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool is_funcclause(const void *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/nodeFuncs.h:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: is_opclause
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool is_opclause(const void *clause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/include/nodes/nodeFuncs.h:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - clause
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: get_leftop
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached:
    - linitial
    linkageType: ''
    returnType: Node
    signature: 'Node *

      get_leftop(const void *clause)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/include/nodes/nodeFuncs.h:101,1
    - Dst: lsecond
      Src: /src/postgres/src/include/nodes/nodeFuncs.h:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - clause
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: get_rightop
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached:
    - list_length
    - lsecond
    linkageType: ''
    returnType: Node
    signature: 'Node *

      get_rightop(const void *clause)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/nodeFuncs.h:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: is_andclause
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool is_andclause(const void *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/nodeFuncs.h:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: is_orclause
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool is_orclause(const void *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/nodeFuncs.h:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 132
    functionName: is_notclause
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool is_notclause(const void *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/include/nodes/nodeFuncs.h:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - notclause
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: get_notclausearg
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached:
    - linitial
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      get_notclausearg(const void *notclause)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - n
    - ','
    - w
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: expression_tree_walker
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: expression_tree_walker(n, w, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - n
    - ','
    - m
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 159
    functionName: expression_tree_mutator
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: expression_tree_mutator(n, m, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - q
    - ','
    - w
    - ','
    - c
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 162
    functionName: query_tree_walker
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: query_tree_walker(q, w, c, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - q
    - ','
    - m
    - ','
    - c
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 164
    functionName: query_tree_mutator
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: query_tree_mutator(q, m, c, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - rt
    - ','
    - w
    - ','
    - c
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: range_table_walker
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: range_table_walker(rt, w, c, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - rt
    - ','
    - m
    - ','
    - c
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: range_table_mutator
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: range_table_mutator(rt, m, c, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - r
    - ','
    - w
    - ','
    - c
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 172
    functionName: range_table_entry_walker
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: range_table_entry_walker(r, w, c, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - n
    - ','
    - w
    - ','
    - c
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 175
    functionName: query_or_expression_tree_walker
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: query_or_expression_tree_walker(n, w, c, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - n
    - ','
    - m
    - ','
    - c
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: query_or_expression_tree_mutator
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: query_or_expression_tree_mutator(n, m, c, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - n
    - ','
    - w
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 180
    functionName: raw_expression_tree_walker
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: raw_expression_tree_walker(n, w, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ps
    - ','
    - w
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 183
    functionName: planstate_tree_walker
    functionSourceFile: /src/postgres/src/include/nodes/nodeFuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: planstate_tree_walker(ps, w, c)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: IsQueryIdEnabled
    functionSourceFile: /src/postgres/src/include/nodes/queryjumble.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsQueryIdEnabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: bmw_leftmost_one_pos
    functionSourceFile: /src/postgres/src/include/nodes/bitmapset.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bmw_leftmost_one_pos(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: bmw_rightmost_one_pos
    functionSourceFile: /src/postgres/src/include/nodes/bitmapset.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bmw_rightmost_one_pos(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: bmw_popcount
    functionSourceFile: /src/postgres/src/include/nodes/bitmapset.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bmw_popcount(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: bmw_leftmost_one_pos
    functionSourceFile: /src/postgres/src/include/nodes/bitmapset.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bmw_leftmost_one_pos(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: bmw_rightmost_one_pos
    functionSourceFile: /src/postgres/src/include/nodes/bitmapset.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bmw_rightmost_one_pos(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: bmw_popcount
    functionSourceFile: /src/postgres/src/include/nodes/bitmapset.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bmw_popcount(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: bms_is_empty
    functionSourceFile: /src/postgres/src/include/nodes/bitmapset.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bms_is_empty(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nodeptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 138
    functionName: nodeTag
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: nodeTag(nodeptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/nodes.h:152,1
    - Dst: palloc0
      Src: /src/postgres/src/include/nodes/nodes.h:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - size
    - tag
    argTypes:
    - size_t
    - NodeTag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 157
    functionName: newNode
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0
    linkageType: ''
    returnType: Node
    signature: 'Node *

      newNode(size_t size, NodeTag tag)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 160
    functionName: makeNode
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: makeNode(_type_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nodeptr
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 161
    functionName: NodeSetTag
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NodeSetTag(nodeptr,t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nodeptr
    - ','
    - _type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    functionName: IsA
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsA(nodeptr,_type_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/nodes.h:175,1
    - Dst: nodeTag
      Src: /src/postgres/src/include/nodes/nodes.h:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - type
    - ptr
    argTypes:
    - NodeTag
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 177
    functionName: castNodeImpl
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 0
    functionsReached:
    - Assert
    - nodeTag
    linkageType: ''
    returnType: Node
    signature: 'Node *

      castNodeImpl(NodeTag type, void *ptr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _type_
    - ','
    - nodeptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 179
    functionName: castNode
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: castNode(_type_, nodeptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _type_
    - ','
    - nodeptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 181
    functionName: castNode
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: castNode(_type_, nodeptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 229
    functionName: copyObject
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: copyObject(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 231
    functionName: copyObject
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: copyObject(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jointype
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 353
    functionName: IS_OUTER_JOIN
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OUTER_JOIN(jointype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - as
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 394
    functionName: DO_AGGSPLIT_COMBINE
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_AGGSPLIT_COMBINE(as)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - as
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 395
    functionName: DO_AGGSPLIT_SKIPFINAL
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_AGGSPLIT_SKIPFINAL(as)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - as
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 396
    functionName: DO_AGGSPLIT_SERIALIZE
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_AGGSPLIT_SERIALIZE(as)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - as
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 397
    functionName: DO_AGGSPLIT_DESERIALIZE
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_AGGSPLIT_DESERIALIZE(as)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: intVal
    functionSourceFile: /src/postgres/src/include/nodes/value.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: intVal(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: floatVal
    functionSourceFile: /src/postgres/src/include/nodes/value.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: floatVal(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: boolVal
    functionSourceFile: /src/postgres/src/include/nodes/value.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: boolVal(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: strVal
    functionSourceFile: /src/postgres/src/include/nodes/value.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strVal(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - varno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 249
    functionName: IS_SPECIAL_VARNO
    functionSourceFile: /src/postgres/src/include/nodes/primnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SPECIAL_VARNO(varno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - kind
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1048
    functionName: IS_EDGE_PATTERN
    functionSourceFile: /src/postgres/src/include/nodes/parsenodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EDGE_PATTERN(kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cte
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1843
      start: 1838
    functionDepth: 0
    functionLinenumber: 1838
    functionLinenumberEnd: 1843
    functionName: GetCTETargetList
    functionSourceFile: /src/postgres/src/include/nodes/parsenodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetCTETargetList(cte)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - escontext
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: SOFT_ERROR_OCCURRED
    functionSourceFile: /src/postgres/src/include/nodes/miscnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOFT_ERROR_OCCURRED(escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: nodeDisplay
    functionSourceFile: /src/postgres/src/include/nodes/print.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: nodeDisplay(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - htable
    - ','
    - iter
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 931
    functionDepth: 0
    functionLinenumber: 931
    functionLinenumberEnd: 933
    functionName: InitTupleHashIterator
    functionSourceFile: /src/postgres/src/include/nodes/execnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InitTupleHashIterator(htable, iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - iter
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 935
    functionName: TermTupleHashIterator
    functionSourceFile: /src/postgres/src/include/nodes/execnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TermTupleHashIterator(iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - htable
    - ','
    - iter
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 935
    functionDepth: 0
    functionLinenumber: 935
    functionLinenumberEnd: 937
    functionName: ResetTupleHashIterator
    functionSourceFile: /src/postgres/src/include/nodes/execnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ResetTupleHashIterator(htable, iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - htable
    - ','
    - iter
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 939
    functionName: ScanTupleHashTable
    functionSourceFile: /src/postgres/src/include/nodes/execnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ScanTupleHashTable(htable, iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1299
    functionDepth: 0
    functionLinenumber: 1299
    functionLinenumberEnd: 1300
    functionName: innerPlanState
    functionSourceFile: /src/postgres/src/include/nodes/execnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: innerPlanState(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1300
    functionDepth: 0
    functionLinenumber: 1300
    functionLinenumberEnd: 1301
    functionName: outerPlanState
    functionSourceFile: /src/postgres/src/include/nodes/execnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: outerPlanState(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - node
    - ','
    - delta
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1303
    functionDepth: 0
    functionLinenumber: 1303
    functionLinenumberEnd: 1308
    functionName: InstrCountTuples2
    functionSourceFile: /src/postgres/src/include/nodes/execnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InstrCountTuples2(node, delta)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - node
    - ','
    - delta
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1308
    functionDepth: 0
    functionLinenumber: 1308
    functionLinenumberEnd: 1313
    functionName: InstrCountFiltered1
    functionSourceFile: /src/postgres/src/include/nodes/execnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InstrCountFiltered1(node, delta)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - node
    - ','
    - delta
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1313
    functionDepth: 0
    functionLinenumber: 1313
    functionLinenumberEnd: 1318
    functionName: InstrCountFiltered2
    functionSourceFile: /src/postgres/src/include/nodes/execnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InstrCountFiltered2(node, delta)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - plannedstmt
    - ','
    - subplan
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: exec_subplan_get_plan
    functionSourceFile: /src/postgres/src/include/nodes/plannodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: exec_subplan_get_plan(plannedstmt, subplan)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 267
    functionName: innerPlan
    functionSourceFile: /src/postgres/src/include/nodes/plannodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: innerPlan(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 268
    functionName: outerPlan
    functionSourceFile: /src/postgres/src/include/nodes/plannodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: outerPlan(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - marktype
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1567
    functionDepth: 0
    functionLinenumber: 1567
    functionLinenumberEnd: 1568
    functionName: RowMarkRequiresRowShareLock
    functionSourceFile: /src/postgres/src/include/nodes/plannodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RowMarkRequiresRowShareLock(marktype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - root
    - ','
    - subplan
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 279
    functionName: planner_subplan_get_plan
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: planner_subplan_get_plan(root, subplan)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rti
    - ','
    - root
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 707
    functionName: planner_rt_fetch
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: planner_rt_fetch(rti, root)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 989
    functionDepth: 0
    functionLinenumber: 989
    functionLinenumberEnd: 992
    functionName: IS_SIMPLE_REL
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SIMPLE_REL(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 994
    functionDepth: 0
    functionLinenumber: 994
    functionLinenumberEnd: 997
    functionName: IS_JOIN_REL
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_JOIN_REL(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 1002
    functionName: IS_UPPER_REL
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_UPPER_REL(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 1004
    functionDepth: 0
    functionLinenumber: 1004
    functionLinenumberEnd: 1008
    functionName: IS_OTHER_REL
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OTHER_REL(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1231
    functionDepth: 0
    functionLinenumber: 1231
    functionLinenumberEnd: 1234
    functionName: IS_PARTITIONED_REL
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PARTITIONED_REL(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1239
    functionDepth: 0
    functionLinenumber: 1239
    functionLinenumberEnd: 1242
    functionName: REL_HAS_ALL_PART_PROPS
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REL_HAS_ALL_PART_PROPS(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - rel
    - ','
    - sjinfo
    - ','
    - nominal_jointype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1250
    functionDepth: 0
    functionLinenumber: 1250
    functionLinenumberEnd: 1253
    functionName: RELATION_WAS_MADE_UNIQUE
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RELATION_WAS_MADE_UNIQUE(rel, sjinfo, nominal_jointype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1257
    functionDepth: 0
    functionLinenumber: 1257
    functionLinenumberEnd: 1259
    functionName: IS_GROUPED_REL
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_GROUPED_REL(rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - eclass
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1686
      start: 1684
    functionDepth: 0
    functionLinenumber: 1684
    functionLinenumberEnd: 1686
    functionName: EC_MUST_BE_REDUNDANT
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EC_MUST_BE_REDUNDANT(eclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - target
    - ','
    - colno
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1896
      start: 1894
    functionDepth: 0
    functionLinenumber: 1894
    functionLinenumberEnd: 1896
    functionName: get_pathtarget_sortgroupref
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: get_pathtarget_sortgroupref(target, colno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 2015
    functionDepth: 0
    functionLinenumber: 2015
    functionLinenumberEnd: 2017
    functionName: PATH_REQ_OUTER
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_REQ_OUTER(path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2291
    functionDepth: 0
    functionLinenumber: 2291
    functionLinenumberEnd: 2293
    functionName: IS_DUMMY_APPEND
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DUMMY_APPEND(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2300
      start: 2299
    functionDepth: 0
    functionLinenumber: 2299
    functionLinenumberEnd: 2300
    functionName: IS_DUMMY_REL
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DUMMY_REL(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rinfo
    - ','
    - joinrelids
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3061
      start: 3058
    functionDepth: 0
    functionLinenumber: 3058
    functionLinenumberEnd: 3061
    functionName: RINFO_IS_PUSHED_DOWN
    functionSourceFile: /src/postgres/src/include/nodes/pathnodes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RINFO_IS_PUSHED_DOWN(rinfo, joinrelids)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pread
      Src: /src/postgres/src/include/port/pg_iovec.h:62,1
    - Dst: preadv
      Src: /src/postgres/src/include/port/pg_iovec.h:64,1
    - Dst: pg_pread
      Src: /src/postgres/src/include/port/pg_iovec.h:71,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - fd
    - iov
    - iovcnt
    - offset
    argTypes:
    - int
    - struct iovec*
    - int
    - pgoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 86
    functionName: pg_preadv
    functionSourceFile: /src/postgres/src/include/port/pg_iovec.h
    functionUses: 0
    functionsReached:
    - preadv
    - pread
    - pg_pread
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_preadv(int fd, const struct iovec *iov, int iovcnt, pgoff_t
      offset)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pwrite
      Src: /src/postgres/src/include/port/pg_iovec.h:101,1
    - Dst: pwritev
      Src: /src/postgres/src/include/port/pg_iovec.h:103,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/include/port/pg_iovec.h:110,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - fd
    - iov
    - iovcnt
    - offset
    argTypes:
    - int
    - struct iovec*
    - int
    - pgoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 125
    functionName: pg_pwritev
    functionSourceFile: /src/postgres/src/include/port/pg_iovec.h
    functionUses: 0
    functionsReached:
    - pg_pwrite
    - pwrite
    - pwritev
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_pwritev(int fd, const struct iovec *iov, int iovcnt, pgoff_t
      offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_loadu_si128
      Src: /src/postgres/src/include/port/simd.h:97,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/include/port/simd.h:99,1
    - Dst: memcpy
      Src: /src/postgres/src/include/port/simd.h:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - v
    - s
    argTypes:
    - Vector8*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 103
    functionName: vector8_load
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vld1q_u8
    - _mm_loadu_si128
    - memcpy
    linkageType: ''
    returnType: void
    signature: void vector8_load(Vector8 *v, const uint8 *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_loadu_si128
      Src: /src/postgres/src/include/port/simd.h:110,1
    - Dst: vld1q_u32
      Src: /src/postgres/src/include/port/simd.h:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v
    - s
    argTypes:
    - Vector32*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: vector32_load
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vld1q_u32
    - _mm_loadu_si128
    linkageType: ''
    returnType: void
    signature: void vector32_load(Vector32 *v, const uint32 *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_storeu_si128
      Src: /src/postgres/src/include/port/simd.h:125,1
    - Dst: vst1q_u8
      Src: /src/postgres/src/include/port/simd.h:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - s
    - v
    argTypes:
    - uint8*
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 129
    functionName: vector8_store
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - _mm_storeu_si128
    - vst1q_u8
    linkageType: ''
    returnType: void
    signature: void vector8_store(uint8 *s, Vector8 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_set1_epi8
      Src: /src/postgres/src/include/port/simd.h:139,1
    - Dst: vdupq_n_u8
      Src: /src/postgres/src/include/port/simd.h:141,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/simd.h:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 145
    functionName: vector8_broadcast
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - _mm_set1_epi8
    - UINT64CONST
    - vdupq_n_u8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_broadcast(const uint8 c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_set1_epi32
      Src: /src/postgres/src/include/port/simd.h:152,1
    - Dst: vdupq_n_u32
      Src: /src/postgres/src/include/port/simd.h:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - c
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 156
    functionName: vector32_broadcast
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - _mm_set1_epi32
    - vdupq_n_u32
    linkageType: ''
    returnType: Vector32
    signature: Vector32 vector32_broadcast(const uint32 c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector8_has_zero
      Src: /src/postgres/src/include/port/simd.h:183,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:183,1
    - Dst: vector8_is_highbit_set
      Src: /src/postgres/src/include/port/simd.h:185,1
    - Dst: vector8_eq
      Src: /src/postgres/src/include/port/simd.h:185,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:185,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/simd.h:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - v
    - c
    argTypes:
    - Vector8
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 190
    functionName: vector8_has
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - Assert
    - vector8_eq
    - vector8_broadcast
    - vector8_is_highbit_set
    - vector8_has_zero
    linkageType: ''
    returnType: bool
    signature: bool vector8_has(const Vector8 v, const uint8 c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector8_has_le
      Src: /src/postgres/src/include/port/simd.h:203,1
    - Dst: vector8_has
      Src: /src/postgres/src/include/port/simd.h:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 195
    functionDepth: 3
    functionLinenumber: 195
    functionLinenumberEnd: 207
    functionName: vector8_has_zero
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 1
    functionsReached:
    - vector8_has
    - vector8_has_le
    linkageType: ''
    returnType: bool
    signature: bool vector8_has_zero(const Vector8 v)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:245,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:245,1
    - Dst: vector8_min
      Src: /src/postgres/src/include/port/simd.h:259,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:259,1
    - Dst: vector8_eq
      Src: /src/postgres/src/include/port/simd.h:260,1
    - Dst: vector8_is_highbit_set
      Src: /src/postgres/src/include/port/simd.h:261,1
    - Dst: vminvq_u8
      Src: /src/postgres/src/include/port/simd.h:263,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/simd.h:266,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - v
    - c
    argTypes:
    - Vector8
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 268
    functionName: vector8_has_le
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 1
    functionsReached:
    - vector8_min
    - Assert
    - vector8_is_highbit_set
    - vminvq_u8
    - vector8_broadcast
    - vector8_eq
    linkageType: ''
    returnType: bool
    signature: bool vector8_has_le(const Vector8 v, const uint8 c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_max_epu8
      Src: /src/postgres/src/include/port/simd.h:279,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:279,1
    - Dst: vector8_eq
      Src: /src/postgres/src/include/port/simd.h:280,1
    - Dst: vector8_is_highbit_set
      Src: /src/postgres/src/include/port/simd.h:282,1
    - Dst: vmaxvq_u8
      Src: /src/postgres/src/include/port/simd.h:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v
    - c
    argTypes:
    - Vector8
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 286
    functionName: vector8_has_ge
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - _mm_max_epu8
    - vector8_eq
    - vector8_broadcast
    - vector8_is_highbit_set
    - vmaxvq_u8
    linkageType: ''
    returnType: bool
    signature: bool vector8_has_ge(const Vector8 v, const uint8 c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_movemask_epi8
      Src: /src/postgres/src/include/port/simd.h:296,1
    - Dst: vmaxvq_u8
      Src: /src/postgres/src/include/port/simd.h:298,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 302
    functionName: vector8_is_highbit_set
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 3
    functionsReached:
    - vmaxvq_u8
    - vector8_broadcast
    - _mm_movemask_epi8
    linkageType: ''
    returnType: bool
    signature: bool vector8_is_highbit_set(const Vector8 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector8_is_highbit_set
      Src: /src/postgres/src/include/port/simd.h:319,1
    - Dst: vector8_is_highbit_set
      Src: /src/postgres/src/include/port/simd.h:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - Vector32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 315
    functionDepth: 3
    functionLinenumber: 315
    functionLinenumberEnd: 323
    functionName: vector32_is_highbit_set
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vector8_is_highbit_set
    linkageType: ''
    returnType: bool
    signature: bool vector32_is_highbit_set(const Vector32 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_movemask_epi8
      Src: /src/postgres/src/include/port/simd.h:334,1
    - Dst: vandq_u8
      Src: /src/postgres/src/include/port/simd.h:348,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/include/port/simd.h:348,1
    - Dst: vshrq_n_s8
      Src: /src/postgres/src/include/port/simd.h:348,1
    - Dst: vextq_u8
      Src: /src/postgres/src/include/port/simd.h:349,1
    - Dst: vaddvq_u16
      Src: /src/postgres/src/include/port/simd.h:351,1
    - Dst: vzip1q_u8
      Src: /src/postgres/src/include/port/simd.h:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 353
    functionName: vector8_highbit_mask
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vaddvq_u16
    - vzip1q_u8
    - vshrq_n_s8
    - vld1q_u8
    - vextq_u8
    - vandq_u8
    - _mm_movemask_epi8
    linkageType: ''
    returnType: uint32
    signature: uint32 vector8_highbit_mask(const Vector8 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_or_si128
      Src: /src/postgres/src/include/port/simd.h:363,1
    - Dst: vorrq_u8
      Src: /src/postgres/src/include/port/simd.h:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 369
    functionName: vector8_or
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vorrq_u8
    - _mm_or_si128
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_or(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_or_si128
      Src: /src/postgres/src/include/port/simd.h:376,1
    - Dst: vorrq_u32
      Src: /src/postgres/src/include/port/simd.h:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector32
    - Vector32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 380
    functionName: vector32_or
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vorrq_u32
    - _mm_or_si128
    linkageType: ''
    returnType: Vector32
    signature: Vector32 vector32_or(const Vector32 v1, const Vector32 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_and_si128
      Src: /src/postgres/src/include/port/simd.h:391,1
    - Dst: vandq_u8
      Src: /src/postgres/src/include/port/simd.h:393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 395
    functionName: vector8_and
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vandq_u8
    - _mm_and_si128
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_and(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_add_epi8
      Src: /src/postgres/src/include/port/simd.h:406,1
    - Dst: vaddq_u8
      Src: /src/postgres/src/include/port/simd.h:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 410
    functionName: vector8_add
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vaddq_u8
    - _mm_add_epi8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_add(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_subs_epi8
      Src: /src/postgres/src/include/port/simd.h:425,1
    - Dst: vqsubq_s8
      Src: /src/postgres/src/include/port/simd.h:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 429
    functionName: vector8_issub
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - _mm_subs_epi8
    - vqsubq_s8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_issub(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_cmpeq_epi8
      Src: /src/postgres/src/include/port/simd.h:441,1
    - Dst: vceqq_u8
      Src: /src/postgres/src/include/port/simd.h:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 445
    functionName: vector8_eq
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 3
    functionsReached:
    - _mm_cmpeq_epi8
    - vceqq_u8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_eq(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_cmpeq_epi32
      Src: /src/postgres/src/include/port/simd.h:453,1
    - Dst: vceqq_u32
      Src: /src/postgres/src/include/port/simd.h:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector32
    - Vector32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 457
    functionName: vector32_eq
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vceqq_u32
    - _mm_cmpeq_epi32
    linkageType: ''
    returnType: Vector32
    signature: Vector32 vector32_eq(const Vector32 v1, const Vector32 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_cmpgt_epi8
      Src: /src/postgres/src/include/port/simd.h:470,1
    - Dst: vcgtq_s8
      Src: /src/postgres/src/include/port/simd.h:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 474
    functionName: vector8_gt
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vcgtq_s8
    - _mm_cmpgt_epi8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_gt(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_min_epu8
      Src: /src/postgres/src/include/port/simd.h:485,1
    - Dst: vminq_u8
      Src: /src/postgres/src/include/port/simd.h:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 489
    functionName: vector8_min
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 1
    functionsReached:
    - vminq_u8
    - _mm_min_epu8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_min(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_unpacklo_epi8
      Src: /src/postgres/src/include/port/simd.h:501,1
    - Dst: vzip1q_u8
      Src: /src/postgres/src/include/port/simd.h:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 505
    functionName: vector8_interleave_low
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - _mm_unpacklo_epi8
    - vzip1q_u8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_interleave_low(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_unpackhi_epi8
      Src: /src/postgres/src/include/port/simd.h:517,1
    - Dst: vzip2q_u8
      Src: /src/postgres/src/include/port/simd.h:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 521
    functionName: vector8_interleave_high
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - _mm_unpackhi_epi8
    - vzip2q_u8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_interleave_high(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector8_interleave_low
      Src: /src/postgres/src/include/port/simd.h:538,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:538,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:538,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/simd.h:539,1
    - Dst: vector8_has_ge
      Src: /src/postgres/src/include/port/simd.h:539,1
    - Dst: vector8_and
      Src: /src/postgres/src/include/port/simd.h:539,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/simd.h:540,1
    - Dst: vector8_has_ge
      Src: /src/postgres/src/include/port/simd.h:540,1
    - Dst: vector8_and
      Src: /src/postgres/src/include/port/simd.h:540,1
    - Dst: _mm_packus_epi16
      Src: /src/postgres/src/include/port/simd.h:542,1
    - Dst: vuzp1q_u8
      Src: /src/postgres/src/include/port/simd.h:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 533
    functionDepth: 3
    functionLinenumber: 533
    functionLinenumberEnd: 546
    functionName: vector8_pack_16
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vuzp1q_u8
    - vector8_and
    - Assert
    - vector8_interleave_low
    - _mm_packus_epi16
    - vector8_broadcast
    - vector8_has_ge
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_pack_16(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_slli_epi32
      Src: /src/postgres/src/include/port/simd.h:557,1
    - Dst: vshlq_u32
      Src: /src/postgres/src/include/port/simd.h:559,1
    - Dst: vdupq_n_s32
      Src: /src/postgres/src/include/port/simd.h:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - i
    argTypes:
    - Vector8
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 561
    functionName: vector8_shift_left
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vshlq_u32
    - _mm_slli_epi32
    - vdupq_n_s32
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_shift_left(const Vector8 v1, int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_srli_epi32
      Src: /src/postgres/src/include/port/simd.h:572,1
    - Dst: vshlq_u32
      Src: /src/postgres/src/include/port/simd.h:575,1
    - Dst: vdupq_n_s32
      Src: /src/postgres/src/include/port/simd.h:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - i
    argTypes:
    - Vector8
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 577
    functionName: vector8_shift_right
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vshlq_u32
    - vdupq_n_s32
    - _mm_srli_epi32
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_shift_right(const Vector8 v1, int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: INIT_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_CRC32C(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c1
    - ','
    - c2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: EQ_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EQ_CRC32C(c1, c2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: COMP_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_CRC32C(crc, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: FIN_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIN_CRC32C(crc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_integer_constant_p
      Src: /src/postgres/src/include/port/pg_crc32c.h:74,1
    - Dst: _mm_crc32_u64
      Src: /src/postgres/src/include/port/pg_crc32c.h:84,1
    - Dst: _mm_crc32_u32
      Src: /src/postgres/src/include/port/pg_crc32c.h:87,1
    - Dst: _mm_crc32_u8
      Src: /src/postgres/src/include/port/pg_crc32c.h:89,1
    - Dst: pg_comp_crc32c
      Src: /src/postgres/src/include/port/pg_crc32c.h:94,1
    - Dst: pg_comp_crc32c
      Src: /src/postgres/src/include/port/pg_crc32c.h:96,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 98
    functionName: pg_comp_crc32c_dispatch
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 0
    functionsReached:
    - pg_integer_constant_p
    - _mm_crc32_u8
    - _mm_crc32_u32
    - pg_comp_crc32c
    - _mm_crc32_u64
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_dispatch(pg_crc32c crc, const void *data,
      size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: COMP_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_CRC32C(crc, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: FIN_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIN_CRC32C(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: COMP_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_CRC32C(crc, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: COMP_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_CRC32C(crc, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 136
    functionName: FIN_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIN_CRC32C(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 148
    functionName: COMP_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_CRC32C(crc, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 149
    functionName: FIN_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIN_CRC32C(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: COMP_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_CRC32C(crc, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 161
    functionName: FIN_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIN_CRC32C(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: COMP_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_CRC32C(crc, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 181
    functionName: FIN_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIN_CRC32C(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 183
    functionName: FIN_CRC32C
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIN_CRC32C(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:44,1
    - Dst: __builtin_clz
      Src: /src/postgres/src/include/port/pg_bitutils.h:46,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:51,1
    - Dst: _BitScanReverse
      Src: /src/postgres/src/include/port/pg_bitutils.h:53,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 65
    functionName: pg_leftmost_one_pos32
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached:
    - Assert
    - __builtin_clz
    - _BitScanReverse
    linkageType: ''
    returnType: int
    signature: int pg_leftmost_one_pos32(uint32 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:75,1
    - Dst: __builtin_clzl
      Src: /src/postgres/src/include/port/pg_bitutils.h:78,1
    - Dst: __builtin_clzll
      Src: /src/postgres/src/include/port/pg_bitutils.h:80,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:89,1
    - Dst: _BitScanReverse64
      Src: /src/postgres/src/include/port/pg_bitutils.h:91,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 103
    functionName: pg_leftmost_one_pos64
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 2
    functionsReached:
    - Assert
    - __builtin_clzl
    - _BitScanReverse64
    - __builtin_clzll
    linkageType: ''
    returnType: int
    signature: int pg_leftmost_one_pos64(uint64 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:114,1
    - Dst: __builtin_ctz
      Src: /src/postgres/src/include/port/pg_bitutils.h:116,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:121,1
    - Dst: _BitScanForward
      Src: /src/postgres/src/include/port/pg_bitutils.h:123,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 138
    functionName: pg_rightmost_one_pos32
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 1
    functionsReached:
    - Assert
    - _BitScanForward
    - __builtin_ctz
    linkageType: ''
    returnType: int
    signature: int pg_rightmost_one_pos32(uint32 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:148,1
    - Dst: __builtin_ctzl
      Src: /src/postgres/src/include/port/pg_bitutils.h:151,1
    - Dst: __builtin_ctzll
      Src: /src/postgres/src/include/port/pg_bitutils.h:153,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:162,1
    - Dst: _BitScanForward64
      Src: /src/postgres/src/include/port/pg_bitutils.h:164,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 179
    functionName: pg_rightmost_one_pos64
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached:
    - Assert
    - __builtin_ctzl
    - _BitScanForward64
    - __builtin_ctzll
    linkageType: ''
    returnType: int
    signature: int pg_rightmost_one_pos64(uint64 word)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:191,1
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/include/port/pg_bitutils.h:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 202
    functionName: pg_nextpower2_32
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached:
    - Assert
    - pg_leftmost_one_pos32
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_nextpower2_32(uint32 num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_bitutils.h:214,1
    - Dst: pg_leftmost_one_pos64
      Src: /src/postgres/src/include/port/pg_bitutils.h:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 225
    functionName: pg_nextpower2_64
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached:
    - Assert
    - pg_leftmost_one_pos64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_nextpower2_64(uint64 num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/include/port/pg_bitutils.h:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: pg_prevpower2_32
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached:
    - pg_leftmost_one_pos32
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_prevpower2_32(uint32 num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_leftmost_one_pos64
      Src: /src/postgres/src/include/port/pg_bitutils.h:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 251
    functionName: pg_prevpower2_64
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached:
    - pg_leftmost_one_pos64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_prevpower2_64(uint64 num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/include/port/pg_bitutils.h:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 264
    functionName: pg_ceil_log2_32
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached:
    - pg_leftmost_one_pos32
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_ceil_log2_32(uint32 num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_leftmost_one_pos64
      Src: /src/postgres/src/include/port/pg_bitutils.h:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 277
    functionName: pg_ceil_log2_64
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached:
    - pg_leftmost_one_pos64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_ceil_log2_64(uint64 num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 314
    functionName: pg_popcount32
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_popcount32(uint32 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bitutils.h:330,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bitutils.h:331,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bitutils.h:332,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bitutils.h:333,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bitutils.h:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 335
    functionName: pg_popcount64
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 2
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: int
    signature: int pg_popcount64(uint64 word)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_optimized
      Src: /src/postgres/src/include/port/pg_bitutils.h:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 363
    functionName: pg_popcount
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached:
    - pg_popcount_optimized
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount(const char *buf, int bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_masked_optimized
      Src: /src/postgres/src/include/port/pg_bitutils.h:387,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 388
    functionName: pg_popcount_masked
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 1
    functionsReached:
    - pg_popcount_masked_optimized
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked(const char *buf, int bytes, uint8 mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - word
    - n
    argTypes:
    - uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 397
    functionName: pg_rotate_right32
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_rotate_right32(uint32 word, int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - word
    - n
    argTypes:
    - uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 403
    functionName: pg_rotate_left32
    functionSourceFile: /src/postgres/src/include/port/pg_bitutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_rotate_left32(uint32 word, int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: mkdir
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mkdir(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fd
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: fsync
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fsync(fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 151
    functionName: WIFEXITED
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WIFEXITED(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    functionName: WIFSIGNALED
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WIFSIGNALED(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: WEXITSTATUS
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WEXITSTATUS(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 154
    functionName: WTERMSIG
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WTERMSIG(w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sig
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    functionName: sigmask
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigmask(sig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - stream
    - ','
    - offset
    - ','
    - origin
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: fseeko
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fseeko(stream, offset, origin)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - stream
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 204
    functionName: ftello
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ftello(stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - stream
    - ','
    - offset
    - ','
    - origin
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    functionName: fseeko
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fseeko(stream, offset, origin)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - stream
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 210
    functionName: ftello
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ftello(stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - oldpath
    - ','
    - newpath
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: symlink
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: symlink(oldpath, newpath)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - path
    - ','
    - buf
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 227
    functionName: readlink
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: readlink(path, buf, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fileno
    - ','
    - sb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 274
    functionName: fstat
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fstat(fileno, sb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - path
    - ','
    - sb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 275
    functionName: stat
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 48
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: stat(path, sb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - path
    - ','
    - sb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 276
    functionName: lstat
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lstat(path, sb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 316
    functionName: S_ISDIR
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_ISDIR(m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 319
    functionName: S_ISREG
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_ISREG(m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 335
    functionName: S_ISLNK
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_ISLNK(m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - clock
    - ','
    - result
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 420
    functionName: gmtime_r
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gmtime_r(clock, result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - clock
    - ','
    - result
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 421
    functionName: localtime_r
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: localtime_r(clock, result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 473
    functionName: setlocale
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: setlocale(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 482
    functionName: UNBLOCKED_SIGNAL_QUEUE
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNBLOCKED_SIGNAL_QUEUE()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pid
    - ','
    - sig
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 491
    functionName: kill
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: kill(pid,sig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - af
    - ','
    - type
    - ','
    - protocol
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 496
    functionName: socket
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: socket(af, type, protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - addr
    - ','
    - addrlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 497
    functionName: bind
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bind(s, addr, addrlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - backlog
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 498
    functionName: listen
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listen(s, backlog)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - addr
    - ','
    - addrlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 499
    functionName: accept
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: accept(s, addr, addrlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - name
    - ','
    - namelen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 500
    functionName: connect
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: connect(s, name, namelen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - n
    - ','
    - r
    - ','
    - w
    - ','
    - e
    - ','
    - timeout
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 501
    functionName: select
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: select(n, r, w, e, timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - buf
    - ','
    - len
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 502
    functionName: recv
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: recv(s, buf, len, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - s
    - ','
    - buf
    - ','
    - len
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 503
    functionName: send
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: send(s, buf, len, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 542
    functionName: putenv
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: putenv(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 543
    functionName: setenv
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: setenv(x,y,z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 544
    functionName: unsetenv
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unsetenv(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: pg_compiler_barrier
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_compiler_barrier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 142
    functionName: pg_memory_barrier
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_memory_barrier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 155
    functionName: pg_read_barrier
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_read_barrier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    functionName: pg_write_barrier
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_write_barrier()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_init_flag_impl
      Src: /src/postgres/src/include/port/atomics.h:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: pg_atomic_init_flag
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_init_flag_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_init_flag(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_test_set_flag_impl
      Src: /src/postgres/src/include/port/atomics.h:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 179
    functionName: pg_atomic_test_set_flag
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_test_set_flag_impl
    linkageType: ''
    returnType: bool
    signature: bool pg_atomic_test_set_flag(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_unlocked_test_flag_impl
      Src: /src/postgres/src/include/port/atomics.h:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: pg_atomic_unlocked_test_flag
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_unlocked_test_flag_impl
    linkageType: ''
    returnType: bool
    signature: bool pg_atomic_unlocked_test_flag(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_clear_flag_impl
      Src: /src/postgres/src/include/port/atomics.h:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: pg_atomic_clear_flag
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_clear_flag_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_clear_flag(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:216,1
    - Dst: pg_atomic_init_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 219
    functionName: pg_atomic_init_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 2
    functionsReached:
    - pg_atomic_init_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: void
    signature: void pg_atomic_init_u32(volatile pg_atomic_uint32 *ptr, uint32 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:234,1
    - Dst: pg_atomic_read_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 236
    functionName: pg_atomic_read_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 2
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_read_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_read_u32(volatile pg_atomic_uint32 *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:253,1
    - Dst: pg_atomic_read_membarrier_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 256
    functionName: pg_atomic_read_membarrier_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached:
    - pg_atomic_read_membarrier_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_read_membarrier_u32(volatile pg_atomic_uint32 *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:271,1
    - Dst: pg_atomic_write_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 274
    functionName: pg_atomic_write_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_write_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: void
    signature: void pg_atomic_write_u32(volatile pg_atomic_uint32 *ptr, uint32 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:292,1
    - Dst: pg_atomic_unlocked_write_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 295
    functionName: pg_atomic_unlocked_write_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached:
    - pg_atomic_unlocked_write_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: void
    signature: void pg_atomic_unlocked_write_u32(volatile pg_atomic_uint32 *ptr, uint32
      val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:312,1
    - Dst: pg_atomic_write_membarrier_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 315
    functionName: pg_atomic_write_membarrier_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached:
    - pg_atomic_write_membarrier_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: void
    signature: void pg_atomic_write_membarrier_u32(volatile pg_atomic_uint32 *ptr,
      uint32 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:327,1
    - Dst: pg_atomic_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 330
    functionName: pg_atomic_exchange_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_exchange_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_exchange_u32(volatile pg_atomic_uint32 *ptr, uint32
      newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:347,1
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:348,1
    - Dst: pg_atomic_compare_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 351
    functionName: pg_atomic_compare_exchange_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_compare_exchange_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u32(volatile pg_atomic_uint32 *ptr,\n\t\t\t\t\t\t\t
      \  uint32 *expected, uint32 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:363,1
    - Dst: pg_atomic_fetch_add_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 365
    functionName: pg_atomic_fetch_add_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 2
    functionsReached:
    - pg_atomic_fetch_add_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_add_u32(volatile pg_atomic_uint32 *ptr, int32
      add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:378,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/atomics.h:379,1
    - Dst: pg_atomic_fetch_sub_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 381
    functionName: pg_atomic_fetch_sub_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - Assert
    - pg_atomic_fetch_sub_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_sub_u32(volatile pg_atomic_uint32 *ptr, int32
      sub_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:393,1
    - Dst: pg_atomic_fetch_and_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 395
    functionName: pg_atomic_fetch_and_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_and_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_and_u32(volatile pg_atomic_uint32 *ptr, uint32
      and_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:407,1
    - Dst: pg_atomic_fetch_or_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 409
    functionName: pg_atomic_fetch_or_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_or_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_or_u32(volatile pg_atomic_uint32 *ptr, uint32
      or_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:421,1
    - Dst: pg_atomic_add_fetch_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 423
    functionName: pg_atomic_add_fetch_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_add_fetch_u32_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_add_fetch_u32(volatile pg_atomic_uint32 *ptr, int32
      add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:436,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/atomics.h:437,1
    - Dst: pg_atomic_sub_fetch_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 439
    functionName: pg_atomic_sub_fetch_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - Assert
    - AssertPointerAlignment
    - pg_atomic_sub_fetch_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_sub_fetch_u32(volatile pg_atomic_uint32 *ptr, int32
      sub_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:456,1
    - Dst: pg_atomic_init_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 459
    functionName: pg_atomic_init_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_init_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: void
    signature: void pg_atomic_init_u64(volatile pg_atomic_uint64 *ptr, uint64 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:465,1
    - Dst: pg_atomic_read_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 468
    functionName: pg_atomic_read_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 3
    functionsReached:
    - pg_atomic_read_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_read_u64(volatile pg_atomic_uint64 *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:474,1
    - Dst: pg_atomic_read_membarrier_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 477
    functionName: pg_atomic_read_membarrier_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached:
    - pg_atomic_read_membarrier_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_read_membarrier_u64(volatile pg_atomic_uint64 *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:483,1
    - Dst: pg_atomic_write_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 486
    functionName: pg_atomic_write_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_write_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: void
    signature: void pg_atomic_write_u64(volatile pg_atomic_uint64 *ptr, uint64 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:492,1
    - Dst: pg_atomic_unlocked_write_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 496
    functionName: pg_atomic_unlocked_write_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_unlocked_write_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: void
    signature: void pg_atomic_unlocked_write_u64(volatile pg_atomic_uint64 *ptr, uint64
      val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:502,1
    - Dst: pg_atomic_write_membarrier_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 505
    functionName: pg_atomic_write_membarrier_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached:
    - pg_atomic_write_membarrier_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: void
    signature: void pg_atomic_write_membarrier_u64(volatile pg_atomic_uint64 *ptr,
      uint64 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:511,1
    - Dst: pg_atomic_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 514
    functionName: pg_atomic_exchange_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_exchange_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_exchange_u64(volatile pg_atomic_uint64 *ptr, uint64
      newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:521,1
    - Dst: pg_atomic_compare_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 524
    functionName: pg_atomic_compare_exchange_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_compare_exchange_u64_impl
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u64(volatile pg_atomic_uint64 *ptr,\n\t\t\t\t\t\t\t
      \  uint64 *expected, uint64 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:530,1
    - Dst: pg_atomic_fetch_add_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 533
    functionName: pg_atomic_fetch_add_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_add_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_add_u64(volatile pg_atomic_uint64 *ptr, int64
      add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:539,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/atomics.h:541,1
    - Dst: pg_atomic_fetch_sub_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 543
    functionName: pg_atomic_fetch_sub_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - Assert
    - AssertPointerAlignment
    - pg_atomic_fetch_sub_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_sub_u64(volatile pg_atomic_uint64 *ptr, int64
      sub_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:549,1
    - Dst: pg_atomic_fetch_and_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 552
    functionName: pg_atomic_fetch_and_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_and_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_and_u64(volatile pg_atomic_uint64 *ptr, uint64
      and_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:558,1
    - Dst: pg_atomic_fetch_or_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 561
    functionName: pg_atomic_fetch_or_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_or_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_or_u64(volatile pg_atomic_uint64 *ptr, uint64
      or_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:567,1
    - Dst: pg_atomic_add_fetch_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 570
    functionName: pg_atomic_add_fetch_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_add_fetch_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_add_fetch_u64(volatile pg_atomic_uint64 *ptr, int64
      add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:576,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/atomics.h:578,1
    - Dst: pg_atomic_sub_fetch_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 580
    functionName: pg_atomic_sub_fetch_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - Assert
    - pg_atomic_sub_fetch_u64_impl
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_sub_fetch_u64(volatile pg_atomic_uint64 *ptr, int64
      sub_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:595,1
    - Dst: pg_atomic_read_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:598,1
    - Dst: pg_memory_barrier
      Src: /src/postgres/src/include/port/atomics.h:601,1
    - Dst: pg_atomic_compare_exchange_u64
      Src: /src/postgres/src/include/port/atomics.h:607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ptr
    - target
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 612
    functionName: pg_atomic_monotonic_advance_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached:
    - pg_atomic_read_u64_impl
    - pg_atomic_compare_exchange_u64
    - AssertPointerAlignment
    - pg_memory_barrier
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_monotonic_advance_u64(volatile pg_atomic_uint64 *ptr,
      uint64 target)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: pg_bswap16
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_bswap16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: pg_bswap16
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_bswap16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: pg_bswap16
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16
    signature: uint16 pg_bswap16(uint16 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: pg_bswap32
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_bswap32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: pg_bswap32
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_bswap32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: pg_bswap32
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_bswap32(uint32 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: pg_bswap64
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_bswap64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: pg_bswap64
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_bswap64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bswap.h:92,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bswap.h:93,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bswap.h:94,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bswap.h:95,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bswap.h:96,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bswap.h:97,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bswap.h:98,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/pg_bswap.h:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 100
    functionName: pg_bswap64
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 1
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_bswap64(uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: pg_hton16
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_hton16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: pg_hton32
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_hton32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: pg_hton64
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_hton64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: pg_ntoh16
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_ntoh16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: pg_ntoh32
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_ntoh32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: pg_ntoh64
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_ntoh64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: pg_hton16
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_hton16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: pg_hton32
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_hton32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: pg_hton64
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_hton64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 125
    functionName: pg_ntoh16
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_ntoh16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 126
    functionName: pg_ntoh32
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_ntoh32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: pg_ntoh64
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_ntoh64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: DatumBigEndianToNative
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumBigEndianToNative(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: DatumBigEndianToNative
    functionSourceFile: /src/postgres/src/include/port/pg_bswap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumBigEndianToNative(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: pg_numa_touch_mem_if_required
    functionSourceFile: /src/postgres/src/include/port/pg_numa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_numa_touch_mem_if_required(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: pg_numa_touch_mem_if_required
    functionSourceFile: /src/postgres/src/include/port/pg_numa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_numa_touch_mem_if_required(ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_x86_features
      Src: /src/postgres/src/include/port/pg_cpu.h:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - feature
    argTypes:
    - X86FeatureId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 57
    functionName: x86_feature_available
    functionSourceFile: /src/postgres/src/include/port/pg_cpu.h
    functionUses: 4
    functionsReached:
    - set_x86_features
    linkageType: ''
    returnType: bool
    signature: bool x86_feature_available(X86FeatureId feature)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector8_load
      Src: /src/postgres/src/include/port/pg_lfind.h:36,1
    - Dst: vector8_has
      Src: /src/postgres/src/include/port/pg_lfind.h:37,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - key
    - base
    - nelem
    argTypes:
    - uint8
    - uint8*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 25
    functionDepth: 3
    functionLinenumber: 25
    functionLinenumberEnd: 49
    functionName: pg_lfind8
    functionSourceFile: /src/postgres/src/include/port/pg_lfind.h
    functionUses: 1
    functionsReached:
    - vector8_load
    - vector8_has
    linkageType: ''
    returnType: bool
    signature: bool pg_lfind8(uint8 key, const uint8 *base, uint32 nelem)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector8_load
      Src: /src/postgres/src/include/port/pg_lfind.h:68,1
    - Dst: vector8_has_le
      Src: /src/postgres/src/include/port/pg_lfind.h:69,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - key
    - base
    - nelem
    argTypes:
    - uint8
    - uint8*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 57
    functionDepth: 3
    functionLinenumber: 57
    functionLinenumberEnd: 81
    functionName: pg_lfind8_le
    functionSourceFile: /src/postgres/src/include/port/pg_lfind.h
    functionUses: 1
    functionsReached:
    - vector8_load
    - vector8_has_le
    linkageType: ''
    returnType: bool
    signature: bool pg_lfind8_le(uint8 key, const uint8 *base, uint32 nelem)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - key
    - base
    - nelem
    argTypes:
    - uint32
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 99
    functionName: pg_lfind32_one_by_one_helper
    functionSourceFile: /src/postgres/src/include/port/pg_lfind.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pg_lfind32_one_by_one_helper(uint32 key, const uint32 *base, uint32
      nelem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector32_load
      Src: /src/postgres/src/include/port/pg_lfind.h:125,1
    - Dst: vector32_load
      Src: /src/postgres/src/include/port/pg_lfind.h:126,1
    - Dst: vector32_load
      Src: /src/postgres/src/include/port/pg_lfind.h:127,1
    - Dst: vector32_load
      Src: /src/postgres/src/include/port/pg_lfind.h:128,1
    - Dst: vector32_eq
      Src: /src/postgres/src/include/port/pg_lfind.h:131,1
    - Dst: vector32_eq
      Src: /src/postgres/src/include/port/pg_lfind.h:132,1
    - Dst: vector32_eq
      Src: /src/postgres/src/include/port/pg_lfind.h:133,1
    - Dst: vector32_eq
      Src: /src/postgres/src/include/port/pg_lfind.h:134,1
    - Dst: vector32_or
      Src: /src/postgres/src/include/port/pg_lfind.h:137,1
    - Dst: vector32_or
      Src: /src/postgres/src/include/port/pg_lfind.h:138,1
    - Dst: vector32_or
      Src: /src/postgres/src/include/port/pg_lfind.h:139,1
    - Dst: vector32_is_highbit_set
      Src: /src/postgres/src/include/port/pg_lfind.h:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - keys
    - base
    argTypes:
    - Vector32
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 143
    functionName: pg_lfind32_simd_helper
    functionSourceFile: /src/postgres/src/include/port/pg_lfind.h
    functionUses: 0
    functionsReached:
    - vector32_is_highbit_set
    - vector32_eq
    - vector32_or
    - vector32_load
    linkageType: ''
    returnType: bool
    signature: bool pg_lfind32_simd_helper(const Vector32 keys, const uint32 *base)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector32_broadcast
      Src: /src/postgres/src/include/port/pg_lfind.h:162,1
    - Dst: pg_lfind32_one_by_one_helper
      Src: /src/postgres/src/include/port/pg_lfind.h:170,1
    - Dst: pg_lfind32_one_by_one_helper
      Src: /src/postgres/src/include/port/pg_lfind.h:178,1
    - Dst: pg_lfind32_simd_helper
      Src: /src/postgres/src/include/port/pg_lfind.h:185,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_lfind.h:187,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/pg_lfind.h:201,1
    - Dst: pg_lfind32_simd_helper
      Src: /src/postgres/src/include/port/pg_lfind.h:201,1
    - Dst: pg_lfind32_simd_helper
      Src: /src/postgres/src/include/port/pg_lfind.h:202,1
    - Dst: pg_lfind32_one_by_one_helper
      Src: /src/postgres/src/include/port/pg_lfind.h:205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - key
    - base
    - nelem
    argTypes:
    - uint32
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 152
    functionDepth: 5
    functionLinenumber: 152
    functionLinenumberEnd: 207
    functionName: pg_lfind32
    functionSourceFile: /src/postgres/src/include/port/pg_lfind.h
    functionUses: 1
    functionsReached:
    - Assert
    - pg_lfind32_one_by_one_helper
    - vector32_broadcast
    - pg_lfind32_simd_helper
    linkageType: ''
    returnType: bool
    signature: bool pg_lfind32(uint32 key, const uint32 *base, uint32 nelem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: pg_atomic_read_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: pg_atomic_write_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_atomic_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32
      val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: pg_atomic_unlocked_write_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_atomic_unlocked_write_u32_impl(volatile pg_atomic_uint32 *ptr,
      uint32 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_write_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: pg_atomic_init_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_write_u32_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: pg_atomic_test_set_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_exchange_u32_impl
    linkageType: ''
    returnType: bool
    signature: bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_read_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: pg_atomic_unlocked_test_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_read_u32_impl
    linkageType: ''
    returnType: bool
    signature: bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_memory_barrier_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:96,1
    - Dst: pg_atomic_write_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 98
    functionName: pg_atomic_clear_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_write_u32_impl
    - pg_memory_barrier_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_write_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: pg_atomic_init_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_write_u32_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 119
    functionName: pg_atomic_test_set_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_compare_exchange_u32_impl
    linkageType: ''
    returnType: bool
    signature: bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_read_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: pg_atomic_unlocked_test_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_read_u32_impl
    linkageType: ''
    returnType: bool
    signature: bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_memory_barrier_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:133,1
    - Dst: pg_atomic_write_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 135
    functionName: pg_atomic_clear_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_write_u32_impl
    - pg_memory_barrier_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 148
    functionName: pg_atomic_init_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_atomic_init_u32_impl(volatile pg_atomic_uint32 *ptr, uint32
      val_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - xchg_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 161
    functionName: pg_atomic_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 2
    functionsReached:
    - pg_atomic_compare_exchange_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
      uint32 xchg_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 174
    functionName: pg_atomic_fetch_add_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_compare_exchange_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr,
      int32 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_add_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 183
    functionName: pg_atomic_fetch_sub_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_add_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_sub_u32_impl(volatile pg_atomic_uint32 *ptr,
      int32 sub_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 196
    functionName: pg_atomic_fetch_and_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_compare_exchange_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_and_u32_impl(volatile pg_atomic_uint32 *ptr,
      uint32 and_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 209
    functionName: pg_atomic_fetch_or_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_compare_exchange_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_or_u32_impl(volatile pg_atomic_uint32 *ptr,
      uint32 or_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_add_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: pg_atomic_add_fetch_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_add_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_add_fetch_u32_impl(volatile pg_atomic_uint32 *ptr,
      int32 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_sub_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: pg_atomic_sub_fetch_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_sub_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_sub_fetch_u32_impl(volatile pg_atomic_uint32 *ptr,
      int32 sub_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_add_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: pg_atomic_read_membarrier_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_add_u32_impl
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_read_membarrier_u32_impl(volatile pg_atomic_uint32
      *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: pg_atomic_write_membarrier_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_exchange_u32_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_write_membarrier_u32_impl(volatile pg_atomic_uint32
      *ptr, uint32 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - xchg_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 258
    functionName: pg_atomic_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_compare_exchange_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
      uint64 xchg_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics/generic.h:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 277
    functionName: pg_atomic_write_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    linkageType: ''
    returnType: void
    signature: void pg_atomic_write_u64_impl(volatile pg_atomic_uint64 *ptr, uint64
      val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 289
    functionName: pg_atomic_write_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_exchange_u64_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_write_u64_impl(volatile pg_atomic_uint64 *ptr, uint64
      val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 300
    functionName: pg_atomic_unlocked_write_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_atomic_unlocked_write_u64_impl(volatile pg_atomic_uint64 *ptr,
      uint64 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics/generic.h:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 317
    functionName: pg_atomic_read_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 2
    functionsReached:
    - AssertPointerAlignment
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 335
    functionName: pg_atomic_read_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 2
    functionsReached:
    - pg_atomic_compare_exchange_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 345
    functionName: pg_atomic_init_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_atomic_init_u64_impl(volatile pg_atomic_uint64 *ptr, uint64
      val_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 358
    functionName: pg_atomic_fetch_add_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_compare_exchange_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_add_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 367
    functionName: pg_atomic_fetch_sub_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_add_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_sub_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 sub_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 380
    functionName: pg_atomic_fetch_and_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_compare_exchange_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_and_u64_impl(volatile pg_atomic_uint64 *ptr,
      uint64 and_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_compare_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 393
    functionName: pg_atomic_fetch_or_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_compare_exchange_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_or_u64_impl(volatile pg_atomic_uint64 *ptr,
      uint64 or_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_add_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 402
    functionName: pg_atomic_add_fetch_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_add_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_add_fetch_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_sub_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 411
    functionName: pg_atomic_sub_fetch_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_sub_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_sub_fetch_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 sub_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_add_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 420
    functionName: pg_atomic_read_membarrier_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_add_u64_impl
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_read_membarrier_u64_impl(volatile pg_atomic_uint64
      *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 429
    functionName: pg_atomic_write_membarrier_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_atomic_exchange_u64_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_write_membarrier_u64_impl(volatile pg_atomic_uint64
      *ptr, uint64 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: pg_memory_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-ppc.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_memory_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: pg_read_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-ppc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_read_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: pg_write_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-ppc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_write_barrier_impl()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_constant_p
      Src: /src/postgres/src/include/port/atomics/arch-ppc.h:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 122
    functionName: pg_atomic_compare_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-ppc.h
    functionUses: 6
    functionsReached:
    - __builtin_constant_p
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32
      *ptr,\n\t\t\t\t\t\t\t\t\tuint32 *expected, uint32 newval)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_constant_p
      Src: /src/postgres/src/include/port/atomics/arch-ppc.h:137,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 163
    functionName: pg_atomic_fetch_add_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-ppc.h
    functionUses: 4
    functionsReached:
    - __builtin_constant_p
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr,
      int32 add_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics/arch-ppc.h:176,1
    - Dst: __builtin_constant_p
      Src: /src/postgres/src/include/port/atomics/arch-ppc.h:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 214
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-ppc.h
    functionUses: 6
    functionsReached:
    - __builtin_constant_p
    - AssertPointerAlignment
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64
      *ptr,\n\t\t\t\t\t\t\t\t\tuint64 *expected, uint64 newval)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_constant_p
      Src: /src/postgres/src/include/port/atomics/arch-ppc.h:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 251
    functionName: pg_atomic_fetch_add_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-ppc.h
    functionUses: 4
    functionsReached:
    - __builtin_constant_p
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: pg_compiler_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_compiler_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: pg_memory_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_memory_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: pg_memory_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_memory_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: pg_read_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_read_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: pg_write_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_write_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_lock_test_and_set
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: pg_atomic_test_set_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 1
    functionsReached:
    - __sync_lock_test_and_set
    linkageType: ''
    returnType: bool
    signature: bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: pg_atomic_unlocked_test_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_lock_release
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 142
    functionName: pg_atomic_clear_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 1
    functionsReached:
    - __sync_lock_release
    linkageType: ''
    returnType: void
    signature: void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_clear_flag_impl
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 151
    functionName: pg_atomic_init_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 1
    functionsReached:
    - pg_atomic_clear_flag_impl
    linkageType: ''
    returnType: void
    signature: void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __atomic_compare_exchange_n
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 166
    functionName: pg_atomic_compare_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 6
    functionsReached:
    - __atomic_compare_exchange_n
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32
      *ptr,\n\t\t\t\t\t\t\t\t\tuint32 *expected, uint32 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_val_compare_and_swap
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 181
    functionName: pg_atomic_compare_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 6
    functionsReached:
    - __sync_val_compare_and_swap
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32
      *ptr,\n\t\t\t\t\t\t\t\t\tuint32 *expected, uint32 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __atomic_exchange_n
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: pg_atomic_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 3
    functionsReached:
    - __atomic_exchange_n
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
      uint32 newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_fetch_and_add
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 209
    functionName: pg_atomic_fetch_add_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 4
    functionsReached:
    - __sync_fetch_and_add
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr,
      int32 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_fetch_and_sub
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: pg_atomic_fetch_sub_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 2
    functionsReached:
    - __sync_fetch_and_sub
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_sub_u32_impl(volatile pg_atomic_uint32 *ptr,
      int32 sub_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_fetch_and_and
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: pg_atomic_fetch_and_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 1
    functionsReached:
    - __sync_fetch_and_and
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_and_u32_impl(volatile pg_atomic_uint32 *ptr,
      uint32 and_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_fetch_and_or
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: pg_atomic_fetch_or_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 1
    functionsReached:
    - __sync_fetch_and_or
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_or_u32_impl(volatile pg_atomic_uint32 *ptr,
      uint32 or_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:248,1
    - Dst: __atomic_compare_exchange_n
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 251
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 6
    functionsReached:
    - __atomic_compare_exchange_n
    - AssertPointerAlignment
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64
      *ptr,\n\t\t\t\t\t\t\t\t\tuint64 *expected, uint64 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:263,1
    - Dst: __sync_val_compare_and_swap
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 268
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 6
    functionsReached:
    - AssertPointerAlignment
    - __sync_val_compare_and_swap
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64
      *ptr,\n\t\t\t\t\t\t\t\t\tuint64 *expected, uint64 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __atomic_exchange_n
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 285
    functionName: pg_atomic_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 3
    functionsReached:
    - __atomic_exchange_n
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
      uint64 newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_fetch_and_add
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 296
    functionName: pg_atomic_fetch_add_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 4
    functionsReached:
    - __sync_fetch_and_add
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_fetch_and_sub
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: pg_atomic_fetch_sub_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 2
    functionsReached:
    - __sync_fetch_and_sub
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_sub_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 sub_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_fetch_and_and
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 314
    functionName: pg_atomic_fetch_and_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 1
    functionsReached:
    - __sync_fetch_and_and
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_and_u64_impl(volatile pg_atomic_uint64 *ptr,
      uint64 and_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_fetch_and_or
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 323
    functionName: pg_atomic_fetch_or_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 1
    functionsReached:
    - __sync_fetch_and_or
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_or_u64_impl(volatile pg_atomic_uint64 *ptr,
      uint64 or_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: pg_memory_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_memory_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: pg_memory_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_memory_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: pg_read_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_read_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: pg_write_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_write_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 92
    functionName: pg_atomic_test_set_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: pg_atomic_clear_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 125
    functionName: pg_atomic_compare_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32
      *ptr,\n\t\t\t\t\t\t\t\t\tuint32 *expected, uint32 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 139
    functionName: pg_atomic_fetch_add_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr,
      int32 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics/arch-x86.h:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 164
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 6
    functionsReached:
    - AssertPointerAlignment
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64
      *ptr,\n\t\t\t\t\t\t\t\t\tuint64 *expected, uint64 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 178
    functionName: pg_atomic_fetch_add_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: pg_compiler_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-msvc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_compiler_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: pg_memory_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-msvc.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_memory_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InterlockedCompareExchange
      Src: /src/postgres/src/include/port/atomics/generic-msvc.h:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 57
    functionName: pg_atomic_compare_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-msvc.h
    functionUses: 6
    functionsReached:
    - InterlockedCompareExchange
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32
      *ptr,\n\t\t\t\t\t\t\t\t\tuint32 *expected, uint32 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InterlockedExchange
      Src: /src/postgres/src/include/port/atomics/generic-msvc.h:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: pg_atomic_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-msvc.h
    functionUses: 3
    functionsReached:
    - InterlockedExchange
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
      uint32 newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InterlockedExchangeAdd
      Src: /src/postgres/src/include/port/atomics/generic-msvc.h:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: pg_atomic_fetch_add_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-msvc.h
    functionUses: 4
    functionsReached:
    - InterlockedExchangeAdd
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr,
      int32 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _InterlockedCompareExchange64
      Src: /src/postgres/src/include/port/atomics/generic-msvc.h:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-msvc.h
    functionUses: 6
    functionsReached:
    - _InterlockedCompareExchange64
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64
      *ptr,\n\t\t\t\t\t\t\t\t\tuint64 *expected, uint64 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _InterlockedExchange64
      Src: /src/postgres/src/include/port/atomics/generic-msvc.h:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 104
    functionName: pg_atomic_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-msvc.h
    functionUses: 3
    functionsReached:
    - _InterlockedExchange64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
      uint64 newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _InterlockedExchangeAdd64
      Src: /src/postgres/src/include/port/atomics/generic-msvc.h:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: pg_atomic_fetch_add_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-msvc.h
    functionUses: 4
    functionsReached:
    - _InterlockedExchangeAdd64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 add_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: TOUCHAR
    functionSourceFile: /src/postgres/src/include/tsearch/ts_locale.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TOUCHAR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: t_iseq
    functionSourceFile: /src/postgres/src/include/tsearch/ts_locale.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: t_iseq(x,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/include/tsearch/ts_locale.h:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - dest
    - src
    - length
    argTypes:
    - void*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: ts_copychar_with_len
    functionSourceFile: /src/postgres/src/include/tsearch/ts_locale.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ts_copychar_with_len(void *dest, const void *src, int length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/include/tsearch/ts_locale.h:52,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/include/tsearch/ts_locale.h:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: ts_copychar_cstr
    functionSourceFile: /src/postgres/src/include/tsearch/ts_locale.h
    functionUses: 0
    functionsReached:
    - pg_mblen_cstr
    - ts_copychar_with_len
    linkageType: ''
    returnType: int
    signature: int ts_copychar_cstr(void *dest, const void *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - character_class
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: GENERATE_T_ISCLASS_DECL
    functionSourceFile: /src/postgres/src/include/tsearch/ts_locale.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_T_ISCLASS_DECL(character_class)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: WEP_GETWEIGHT
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WEP_GETWEIGHT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: WEP_GETPOS
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WEP_GETPOS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: WEP_SETWEIGHT
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WEP_SETWEIGHT(x,v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: WEP_SETPOS
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WEP_SETPOS(x,v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: LIMITPOS
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIMITPOS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nentries
    - ','
    - lenstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: CALCDATASIZE
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALCDATASIZE(nentries, lenstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: ARRPTR
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRPTR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: STRPTR
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRPTR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    functionName: _POSVECPTR
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _POSVECPTR(x, e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: POSDATALEN
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POSDATALEN(x,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: POSDATAPTR
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POSDATAPTR(x,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/tsearch/ts_type.h:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 121
    functionName: DatumGetTSVector
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: TSVector
    signature: TSVector DatumGetTSVector(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/tsearch/ts_type.h:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: DatumGetTSVectorCopy
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: TSVector
    signature: TSVector DatumGetTSVectorCopy(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/tsearch/ts_type.h:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TSVectorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: TSVectorGetDatum
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum TSVectorGetDatum(const TSVectorData *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 136
    functionName: PG_GETARG_TSVECTOR
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TSVECTOR(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: PG_GETARG_TSVECTOR_COPY
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TSVECTOR_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 138
    functionName: PG_RETURN_TSVECTOR
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_TSVECTOR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: OP_PRIORITY
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OP_PRIORITY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 193
    functionName: QO_PRIORITY
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QO_PRIORITY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - size
    - ','
    - lenofoperand
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 236
    functionName: COMPUTESIZE
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPUTESIZE(size, lenofoperand)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - size
    - ','
    - lenofoperand
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: TSQUERY_TOO_BIG
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TSQUERY_TOO_BIG(size, lenofoperand)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 241
    functionName: GETQUERY
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETQUERY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 244
    functionName: GETOPERAND
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETOPERAND(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/tsearch/ts_type.h:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 255
    functionName: DatumGetTSQuery
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: TSQuery
    signature: TSQuery DatumGetTSQuery(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/tsearch/ts_type.h:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: DatumGetTSQueryCopy
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: TSQuery
    signature: TSQuery DatumGetTSQueryCopy(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/tsearch/ts_type.h:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TSQueryData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 267
    functionName: TSQueryGetDatum
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum TSQueryGetDatum(const TSQueryData *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 270
    functionName: PG_GETARG_TSQUERY
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TSQUERY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 271
    functionName: PG_GETARG_TSQUERY_COPY
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TSQUERY_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 272
    functionName: PG_RETURN_TSQUERY
    functionSourceFile: /src/postgres/src/include/tsearch/ts_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_TSQUERY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: ISOPERATOR
    functionSourceFile: /src/postgres/src/include/tsearch/ts_utils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISOPERATOR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/tsearch/ts_utils.h:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TSQuerySign
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 255
    functionName: TSQuerySignGetDatum
    functionSourceFile: /src/postgres/src/include/tsearch/ts_utils.h
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum TSQuerySignGetDatum(TSQuerySign X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/tsearch/ts_utils.h:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: DatumGetTSQuerySign
    functionSourceFile: /src/postgres/src/include/tsearch/ts_utils.h
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    linkageType: ''
    returnType: TSQuerySign
    signature: TSQuerySign DatumGetTSQuerySign(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 264
    functionName: PG_RETURN_TSQUERYSIGN
    functionSourceFile: /src/postgres/src/include/tsearch/ts_utils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_TSQUERYSIGN(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 265
    functionName: PG_GETARG_TSQUERYSIGN
    functionSourceFile: /src/postgres/src/include/tsearch/ts_utils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TSQUERYSIGN(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - kind
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: AGGKIND_IS_ORDERED_SET
    functionSourceFile: /src/postgres/src/include/catalog/pg_aggregate.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AGGKIND_IS_ORDERED_SET(kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - classId
    - ','
    - objectId
    - ','
    - subId
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 175
    functionName: InvokeObjectPostCreateHook
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectPostCreateHook(classId,objectId,subId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - classId
    - ','
    - objectId
    - ','
    - subId
    - ','
    - is_internal
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: InvokeObjectPostCreateHookArg
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectPostCreateHookArg(classId,objectId,subId,is_internal)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - classId
    - ','
    - objectId
    - ','
    - subId
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 184
    functionName: InvokeObjectDropHook
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectDropHook(classId,objectId,subId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - classId
    - ','
    - objectId
    - ','
    - subId
    - ','
    - dropflags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: InvokeObjectDropHookArg
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectDropHookArg(classId,objectId,subId,dropflags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - objectId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: InvokeObjectTruncateHook
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectTruncateHook(objectId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - classId
    - ','
    - objectId
    - ','
    - subId
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: InvokeObjectPostAlterHook
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectPostAlterHook(classId,objectId,subId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - classId
    - ','
    - objectId
    - ','
    - subId
    - ','
    - auxiliaryId
    - ','
    - is_internal
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: InvokeObjectPostAlterHookArg
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "InvokeObjectPostAlterHookArg(classId,objectId,subId,\t\t\\\n\t\t\t\t\t\t\t\t\t
      auxiliaryId,is_internal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - objectId
    - ','
    - ereport_on_violation
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 212
    functionName: InvokeNamespaceSearchHook
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeNamespaceSearchHook(objectId, ereport_on_violation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - objectId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 218
    functionName: InvokeFunctionExecuteHook
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeFunctionExecuteHook(objectId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - classId
    - ','
    - objectName
    - ','
    - subId
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 222
    functionName: InvokeObjectPostCreateHookStr
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectPostCreateHookStr(classId,objectName,subId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - classId
    - ','
    - objectName
    - ','
    - subId
    - ','
    - is_internal
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 228
    functionName: InvokeObjectPostCreateHookArgStr
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectPostCreateHookArgStr(classId,objectName,subId,is_internal)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - classId
    - ','
    - objectName
    - ','
    - subId
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 231
    functionName: InvokeObjectDropHookStr
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectDropHookStr(classId,objectName,subId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - classId
    - ','
    - objectName
    - ','
    - subId
    - ','
    - dropflags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 237
    functionName: InvokeObjectDropHookArgStr
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectDropHookArgStr(classId,objectName,subId,dropflags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - objectName
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: InvokeObjectTruncateHookStr
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectTruncateHookStr(objectName)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - classId
    - ','
    - objectName
    - ','
    - subId
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: InvokeObjectPostAlterHookStr
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeObjectPostAlterHookStr(classId,objectName,subId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - classId
    - ','
    - objectName
    - ','
    - subId
    - ','
    - auxiliaryId
    - ','
    - is_internal
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 254
    functionName: InvokeObjectPostAlterHookArgStr
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "InvokeObjectPostAlterHookArgStr(classId,objectName,subId,\t\t\\\n\t\t\t\t\t\t\t\t\t
      auxiliaryId,is_internal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - objectName
    - ','
    - ereport_on_violation
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 259
    functionName: InvokeNamespaceSearchHookStr
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeNamespaceSearchHookStr(objectName, ereport_on_violation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - objectName
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 265
    functionName: InvokeFunctionExecuteHookStr
    functionSourceFile: /src/postgres/src/include/catalog/objectaccess.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InvokeFunctionExecuteHookStr(objectName)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 40
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_shseclabel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BKI_SHARED_RELATION
    signature: BKI_SHARED_RELATION BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - oid
    - ','
    - oidmacro
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: CATALOG
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CATALOG(name,oid,oidmacro)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - toastoid
    - ','
    - indexoid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: DECLARE_TOAST
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_TOAST(name,toastoid,indexoid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - name
    - ','
    - toastoid
    - ','
    - indexoid
    - ','
    - toastoidmacro
    - ','
    - indexoidmacro
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: DECLARE_TOAST_WITH_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_TOAST_WITH_MACRO(name,toastoid,indexoid,toastoidmacro,indexoidmacro)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - name
    - ','
    - oid
    - ','
    - oidmacro
    - ','
    - tblname
    - ','
    - decl
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: DECLARE_INDEX
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_INDEX(name,oid,oidmacro,tblname,decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - name
    - ','
    - oid
    - ','
    - oidmacro
    - ','
    - tblname
    - ','
    - decl
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: DECLARE_UNIQUE_INDEX
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_UNIQUE_INDEX(name,oid,oidmacro,tblname,decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - name
    - ','
    - oid
    - ','
    - oidmacro
    - ','
    - tblname
    - ','
    - decl
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: DECLARE_UNIQUE_INDEX_PKEY
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_UNIQUE_INDEX_PKEY(name,oid,oidmacro,tblname,decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - oid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    functionName: DECLARE_OID_DEFINING_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_OID_DEFINING_MACRO(name,oid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cols
    - ','
    - reftbl
    - ','
    - refcols
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 138
    functionName: DECLARE_FOREIGN_KEY
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_FOREIGN_KEY(cols,reftbl,refcols)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cols
    - ','
    - reftbl
    - ','
    - refcols
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: DECLARE_FOREIGN_KEY_OPT
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_FOREIGN_KEY_OPT(cols,reftbl,refcols)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cols
    - ','
    - reftbl
    - ','
    - refcols
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: DECLARE_ARRAY_FOREIGN_KEY
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_ARRAY_FOREIGN_KEY(cols,reftbl,refcols)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cols
    - ','
    - reftbl
    - ','
    - refcols
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: DECLARE_ARRAY_FOREIGN_KEY_OPT
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_ARRAY_FOREIGN_KEY_OPT(cols,reftbl,refcols)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - idxname
    - ','
    - nbuckets
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 147
    functionName: MAKE_SYSCACHE
    functionSourceFile: /src/postgres/src/include/catalog/genbki.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAKE_SYSCACHE(name,idxname,nbuckets)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BKI_LOOKUP
      Src: /src/postgres/src/include/catalog/pg_type.h:46,1
    - Dst: BKI_ARRAY_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_type.h:90,1
    - Dst: BKI_ARRAY_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_type.h:111,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:111,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:145,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:146,1
    - Dst: BKI_ARRAY_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_type.h:151,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:151,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:210,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:230,1
    - Dst: BKI_ARRAY_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_type.h:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 256
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_type.h
    functionUses: 0
    functionsReached:
    - BKI_ARRAY_DEFAULT
    - BKI_LOOKUP_OPT
    - BKI_LOOKUP
    linkageType: ''
    returnType: BKI_BOOTSTRAP
    signature: BKI_BOOTSTRAP BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - typid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: IsPolymorphicType
    functionSourceFile: /src/postgres/src/include/catalog/pg_type.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsPolymorphicType(typid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - typid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 329
    functionName: IsPolymorphicTypeFamily1
    functionSourceFile: /src/postgres/src/include/catalog/pg_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsPolymorphicTypeFamily1(typid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - typid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 336
    functionName: IsPolymorphicTypeFamily2
    functionSourceFile: /src/postgres/src/include/catalog/pg_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsPolymorphicTypeFamily2(typid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - typeForm
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: IsTrueArrayType
    functionSourceFile: /src/postgres/src/include/catalog/pg_type.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsTrueArrayType(typeForm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BKI_LOOKUP
      Src: /src/postgres/src/include/catalog/pg_proc.h:40,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_proc.h:55,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:102,1
    - Dst: BKI_LOOKUP
      Src: /src/postgres/src/include/catalog/pg_proc.h:102,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:105,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:108,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:114,1
    - Dst: BKI_LOOKUP
      Src: /src/postgres/src/include/catalog/pg_proc.h:114,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 131
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_proc.h
    functionUses: 0
    functionsReached:
    - BKI_LOOKUP_OPT
    - BKI_LOOKUP
    - BKI_DEFAULT
    linkageType: ''
    returnType: BKI_BOOTSTRAP
    signature: BKI_BOOTSTRAP BKI_SCHEMA_MACRO
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 93
    functionName: collprovider_name
    functionSourceFile: /src/postgres/src/include/catalog/pg_collation.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      collprovider_name(char c)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opfamily
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: IsBuiltinBooleanOpfamily
    functionSourceFile: /src/postgres/src/include/catalog/pg_opfamily.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsBuiltinBooleanOpfamily(opfamily)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_attribute.h:177,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_attribute.h:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 188
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_attribute.h
    functionUses: 0
    functionsReached:
    - BKI_DEFAULT
    linkageType: ''
    returnType: BKI_BOOTSTRAP
    signature: BKI_BOOTSTRAP BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 43
    functionName: BKI_SHARED_RELATION
    functionSourceFile: /src/postgres/src/include/catalog/pg_tablespace.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BEGIN_CATALOG_STRUCT
    signature: BEGIN_CATALOG_STRUCT BKI_SHARED_RELATION
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 125
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_subscription.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BKI_SHARED_RELATION
    signature: BKI_SHARED_RELATION BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 54
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_auth_members.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BKI_SHARED_RELATION
    signature: BKI_SHARED_RELATION BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - addr
    - ','
    - class_id
    - ','
    - object_id
    - ','
    - object_sub_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: ObjectAddressSubSet
    functionSourceFile: /src/postgres/src/include/catalog/objectaddress.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ObjectAddressSubSet(addr, class_id, object_id, object_sub_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - addr
    - ','
    - class_id
    - ','
    - object_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: ObjectAddressSet
    functionSourceFile: /src/postgres/src/include/catalog/objectaddress.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ObjectAddressSet(addr, class_id, object_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 65
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_index.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BEGIN_CATALOG_STRUCT
    signature: BEGIN_CATALOG_STRUCT BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 91
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_database.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BKI_SHARED_RELATION
    signature: BKI_SHARED_RELATION BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 43
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_parameter_acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BKI_SHARED_RELATION
    signature: BKI_SHARED_RELATION BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 51
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_authid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BKI_SHARED_RELATION
    signature: BKI_SHARED_RELATION BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: TRIGGER_CLEAR_TYPE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_CLEAR_TYPE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: TRIGGER_SETT_ROW
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_SETT_ROW(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: TRIGGER_SETT_STATEMENT
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_SETT_STATEMENT(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: TRIGGER_SETT_BEFORE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_SETT_BEFORE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: TRIGGER_SETT_AFTER
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_SETT_AFTER(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    functionName: TRIGGER_SETT_INSTEAD
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_SETT_INSTEAD(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 125
    functionName: TRIGGER_SETT_INSERT
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_SETT_INSERT(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 126
    functionName: TRIGGER_SETT_DELETE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_SETT_DELETE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: TRIGGER_SETT_UPDATE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_SETT_UPDATE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    functionName: TRIGGER_SETT_TRUNCATE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_SETT_TRUNCATE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: TRIGGER_FOR_ROW
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FOR_ROW(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: TRIGGER_FOR_BEFORE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FOR_BEFORE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: TRIGGER_FOR_AFTER
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FOR_AFTER(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    functionName: TRIGGER_FOR_INSTEAD
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FOR_INSTEAD(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 134
    functionName: TRIGGER_FOR_INSERT
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FOR_INSERT(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: TRIGGER_FOR_DELETE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FOR_DELETE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 136
    functionName: TRIGGER_FOR_UPDATE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FOR_UPDATE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: TRIGGER_FOR_TRUNCATE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FOR_TRUNCATE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - type
    - ','
    - level
    - ','
    - timing
    - ','
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: TRIGGER_TYPE_MATCHES
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_TYPE_MATCHES(type, level, timing, event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - namepointer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: TRIGGER_USES_TRANSITION_TABLE
    functionSourceFile: /src/postgres/src/include/catalog/pg_trigger.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_USES_TRANSITION_TABLE(namepointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - relation
    - ','
    - lockmode
    - ','
    - missing_ok
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: RangeVarGetRelid
    functionSourceFile: /src/postgres/src/include/catalog/namespace.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RangeVarGetRelid(relation, lockmode, missing_ok)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 47
    functionName: BKI_SHARED_RELATION
    functionSourceFile: /src/postgres/src/include/catalog/pg_db_role_setting.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BEGIN_CATALOG_STRUCT
    signature: BEGIN_CATALOG_STRUCT BKI_SHARED_RELATION
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 68
    functionName: BKI_SHARED_RELATION
    functionSourceFile: /src/postgres/src/include/catalog/pg_shdepend.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BEGIN_CATALOG_STRUCT
    signature: BEGIN_CATALOG_STRUCT BKI_SHARED_RELATION
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: BKI_SHARED_RELATION
    functionSourceFile: /src/postgres/src/include/catalog/pg_shdescription.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BEGIN_CATALOG_STRUCT
    signature: BEGIN_CATALOG_STRUCT BKI_SHARED_RELATION
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 55
    functionName: BKI_SHARED_RELATION
    functionSourceFile: /src/postgres/src/include/catalog/pg_replication_origin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BEGIN_CATALOG_STRUCT
    signature: BEGIN_CATALOG_STRUCT BKI_SHARED_RELATION
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BKI_LOOKUP
      Src: /src/postgres/src/include/catalog/pg_class.h:43,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_class.h:62,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_class.h:77,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_class.h:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 147
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_class.h
    functionUses: 0
    functionsReached:
    - BKI_LOOKUP_OPT
    - BKI_LOOKUP
    - BKI_DEFAULT
    linkageType: ''
    returnType: BKI_BOOTSTRAP
    signature: BKI_BOOTSTRAP BKI_SCHEMA_MACRO
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relkind
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 211
    functionName: RELKIND_HAS_STORAGE
    functionSourceFile: /src/postgres/src/include/catalog/pg_class.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RELKIND_HAS_STORAGE(relkind)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relkind
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: RELKIND_HAS_PARTITIONS
    functionSourceFile: /src/postgres/src/include/catalog/pg_class.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RELKIND_HAS_PARTITIONS(relkind)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relkind
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: RELKIND_HAS_TABLESPACE
    functionSourceFile: /src/postgres/src/include/catalog/pg_class.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RELKIND_HAS_TABLESPACE(relkind)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relkind
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: RELKIND_HAS_TABLE_AM
    functionSourceFile: /src/postgres/src/include/catalog/pg_class.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RELKIND_HAS_TABLE_AM(relkind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/include/catalog/index.h:199,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/include/catalog/index.h:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - itemptr
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 212
    functionName: itemptr_encode
    functionSourceFile: /src/postgres/src/include/catalog/index.h
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumber
    - ItemPointerGetOffsetNumber
    linkageType: ''
    returnType: int64
    signature: int64 itemptr_encode(const ItemPointerData *itemptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSet
      Src: /src/postgres/src/include/catalog/index.h:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - itemptr
    - encoded
    argTypes:
    - ItemPointer
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: itemptr_decode
    functionSourceFile: /src/postgres/src/include/catalog/index.h
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    linkageType: ''
    returnType: void
    signature: void itemptr_decode(ItemPointer itemptr, int64 encoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: AllowCascadeReplication
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AllowCascadeReplication()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - conninfo
    - ','
    - replication
    - ','
    - logical
    - ','
    - must_use_password
    - ','
    - appname
    - ','
    - err
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 438
    functionName: walrcv_connect
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_connect(conninfo, replication, logical, must_use_password, appname,
      err)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - conninfo
    - ','
    - must_use_password
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 440
    functionName: walrcv_check_conninfo
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_check_conninfo(conninfo, must_use_password)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 442
    functionName: walrcv_get_conninfo
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_get_conninfo(conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - conn
    - ','
    - sender_host
    - ','
    - sender_port
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 444
    functionName: walrcv_get_senderinfo
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_get_senderinfo(conn, sender_host, sender_port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - conn
    - ','
    - primary_tli
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 446
    functionName: walrcv_identify_system
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_identify_system(conn, primary_tli)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conninfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 448
    functionName: walrcv_get_dbname_from_conninfo
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_get_dbname_from_conninfo(conninfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 450
    functionName: walrcv_server_version
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_server_version(conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - conn
    - ','
    - tli
    - ','
    - filename
    - ','
    - content
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 452
    functionName: walrcv_readtimelinehistoryfile
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_readtimelinehistoryfile(conn, tli, filename, content, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - conn
    - ','
    - options
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 454
    functionName: walrcv_startstreaming
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_startstreaming(conn, options)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - conn
    - ','
    - next_tli
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 456
    functionName: walrcv_endstreaming
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_endstreaming(conn, next_tli)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - conn
    - ','
    - buffer
    - ','
    - wait_fd
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 458
    functionName: walrcv_receive
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_receive(conn, buffer, wait_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - conn
    - ','
    - buffer
    - ','
    - nbytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 460
    functionName: walrcv_send
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_send(conn, buffer, nbytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - conn
    - ','
    - slotname
    - ','
    - temporary
    - ','
    - two_phase
    - ','
    - failover
    - ','
    - snapshot_action
    - ','
    - lsn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 462
    functionName: walrcv_create_slot
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_create_slot(conn, slotname, temporary, two_phase, failover,
      snapshot_action, lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - conn
    - ','
    - slotname
    - ','
    - failover
    - ','
    - two_phase
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 464
    functionName: walrcv_alter_slot
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_alter_slot(conn, slotname, failover, two_phase)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 466
    functionName: walrcv_get_backend_pid
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_get_backend_pid(conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - conn
    - ','
    - exec
    - ','
    - nRetTypes
    - ','
    - retTypes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 468
    functionName: walrcv_exec
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_exec(conn, exec, nRetTypes, retTypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 470
    functionName: walrcv_disconnect
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: walrcv_disconnect(conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/include/replication/walreceiver.h:478,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/include/replication/walreceiver.h:481,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/include/replication/walreceiver.h:484,1
    - Dst: pfree
      Src: /src/postgres/src/include/replication/walreceiver.h:486,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - walres
    argTypes:
    - WalRcvExecResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 487
    functionName: walrcv_clear_result
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached:
    - pfree
    - tuplestore_end
    - FreeTupleDesc
    linkageType: ''
    returnType: void
    signature: void walrcv_clear_result(WalRcvExecResult *walres)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: CONFLICTS_LOGGED_TO_TABLE
    functionSourceFile: /src/postgres/src/include/replication/conflict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONFLICTS_LOGGED_TO_TABLE(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: CONFLICTS_LOGGED_TO_LOG
    functionSourceFile: /src/postgres/src/include/replication/conflict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONFLICTS_LOGGED_TO_LOG(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - worker
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 364
    functionName: isParallelApplyWorker
    functionSourceFile: /src/postgres/src/include/replication/worker_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isParallelApplyWorker(worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - worker
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 366
    functionName: isTableSyncWorker
    functionSourceFile: /src/postgres/src/include/replication/worker_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isTableSyncWorker(worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - worker
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 368
    functionName: isSequenceSyncWorker
    functionSourceFile: /src/postgres/src/include/replication/worker_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isSequenceSyncWorker(worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isTableSyncWorker
      Src: /src/postgres/src/include/replication/worker_internal.h:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 373
    functionName: am_tablesync_worker
    functionSourceFile: /src/postgres/src/include/replication/worker_internal.h
    functionUses: 0
    functionsReached:
    - isTableSyncWorker
    linkageType: ''
    returnType: bool
    signature: bool am_tablesync_worker(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isSequenceSyncWorker
      Src: /src/postgres/src/include/replication/worker_internal.h:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 379
    functionName: am_sequencesync_worker
    functionSourceFile: /src/postgres/src/include/replication/worker_internal.h
    functionUses: 0
    functionsReached:
    - isSequenceSyncWorker
    linkageType: ''
    returnType: bool
    signature: bool am_sequencesync_worker(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/replication/worker_internal.h:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 386
    functionName: am_leader_apply_worker
    functionSourceFile: /src/postgres/src/include/replication/worker_internal.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool am_leader_apply_worker(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/replication/worker_internal.h:391,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/include/replication/worker_internal.h:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 393
    functionName: am_parallel_apply_worker
    functionSourceFile: /src/postgres/src/include/replication/worker_internal.h
    functionUses: 0
    functionsReached:
    - Assert
    - isParallelApplyWorker
    linkageType: ''
    returnType: bool
    signature: bool am_parallel_apply_worker(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/replication/worker_internal.h:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 400
    functionName: get_logical_worker_type
    functionSourceFile: /src/postgres/src/include/replication/worker_internal.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: LogicalRepWorkerType
    signature: LogicalRepWorkerType get_logical_worker_type(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: LogicalDecodingLogLevel
    functionSourceFile: /src/postgres/src/include/replication/logical.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LogicalDecodingLogLevel()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: SyncRepRequested
    functionSourceFile: /src/postgres/src/include/replication/syncrep.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SyncRepRequested()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: rbtxn_has_catalog_changes
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_has_catalog_changes(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 194
    functionName: rbtxn_is_known_subxact
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_is_known_subxact(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 200
    functionName: rbtxn_is_serialized
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_is_serialized(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 206
    functionName: rbtxn_is_serialized_clear
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_is_serialized_clear(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 212
    functionName: rbtxn_has_partial_change
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_has_partial_change(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: rbtxn_has_streamable_change
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_has_streamable_change(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 232
    functionName: rbtxn_is_streamed
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_is_streamed(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 244
    functionName: rbtxn_is_prepared
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_is_prepared(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 250
    functionName: rbtxn_sent_prepare
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_sent_prepare(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 256
    functionName: rbtxn_is_committed
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_is_committed(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 262
    functionName: rbtxn_is_aborted
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_is_aborted(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 268
    functionName: rbtxn_skip_prepared
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_skip_prepared(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 274
    functionName: rbtxn_distr_inval_overflowed
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_distr_inval_overflowed(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 280
    functionName: rbtxn_is_toptxn
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_is_toptxn(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 286
    functionName: rbtxn_is_subtxn
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_is_subtxn(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 292
    functionName: rbtxn_get_toptxn
    functionSourceFile: /src/postgres/src/include/replication/reorderbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rbtxn_get_toptxn(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 288
    functionName: SlotIsPhysical
    functionSourceFile: /src/postgres/src/include/replication/slot.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SlotIsPhysical(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 289
    functionName: SlotIsLogical
    functionSourceFile: /src/postgres/src/include/replication/slot.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SlotIsLogical(slot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/include/replication/slot.h:310,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/include/replication/slot.h:316,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - s
    - ts
    - acquire_lock
    argTypes:
    - ReplicationSlot*
    - TimestampTz
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 317
    functionName: ReplicationSlotSetInactiveSince
    functionSourceFile: /src/postgres/src/include/replication/slot.h
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: "void ReplicationSlotSetInactiveSince(ReplicationSlot *s, TimestampTz
      ts,\n\t\t\t\t\t\t\t\tbool acquire_lock)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: WalSndWakeupRequest
    functionSourceFile: /src/postgres/src/include/replication/walsender.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WalSndWakeupRequest()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WalSndWakeup
      Src: /src/postgres/src/include/replication/walsender.h:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - physical
    - logical
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: WalSndWakeupProcessRequests
    functionSourceFile: /src/postgres/src/include/replication/walsender.h
    functionUses: 0
    functionsReached:
    - WalSndWakeup
    linkageType: ''
    returnType: void
    signature: void WalSndWakeupProcessRequests(bool physical, bool logical)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_add_overflow
      Src: /src/postgres/src/include/common/int.h:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - int16
    - int16
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 82
    functionName: pg_add_s16_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_add_s16_overflow(int16 a, int16 b, int16 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - int16
    - int16
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 100
    functionName: pg_sub_s16_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_sub_s16_overflow(int16 a, int16 b, int16 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_mul_overflow
      Src: /src/postgres/src/include/common/int.h:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - int16
    - int16
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 118
    functionName: pg_mul_s16_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_mul_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_mul_s16_overflow(int16 a, int16 b, int16 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:124,1
    - Dst: unlikely
      Src: /src/postgres/src/include/common/int.h:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - a
    - result
    argTypes:
    - int16
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: pg_neg_s16_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - unlikely
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_neg_s16_overflow(int16 a, int16 *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: abs
      Src: /src/postgres/src/include/common/int.h:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - int16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 145
    functionName: pg_abs_s16
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - abs
    linkageType: ''
    returnType: uint16
    signature: uint16 pg_abs_s16(int16 a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_add_overflow
      Src: /src/postgres/src/include/common/int.h:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - int32
    - int32
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 166
    functionName: pg_add_s32_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_add_s32_overflow(int32 a, int32 b, int32 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - int32
    - int32
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 184
    functionName: pg_sub_s32_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_sub_s32_overflow(int32 a, int32 b, int32 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_mul_overflow
      Src: /src/postgres/src/include/common/int.h:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - int32
    - int32
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 202
    functionName: pg_mul_s32_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_mul_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_mul_s32_overflow(int32 a, int32 b, int32 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:208,1
    - Dst: unlikely
      Src: /src/postgres/src/include/common/int.h:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - a
    - result
    argTypes:
    - int32
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 218
    functionName: pg_neg_s32_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - unlikely
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_neg_s32_overflow(int32 a, int32 *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i64abs
      Src: /src/postgres/src/include/common/int.h:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 229
    functionName: pg_abs_s32
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - i64abs
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_abs_s32(int32 a)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_add_overflow
      Src: /src/postgres/src/include/common/int.h:238,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - int64
    - int64
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 259
    functionName: pg_add_s64_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 1
    functionsReached:
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_add_s64_overflow(int64 a, int64 b, int64 *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:265,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - int64
    - int64
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 290
    functionName: pg_sub_s64_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 1
    functionsReached:
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_sub_s64_overflow(int64 a, int64 b, int64 *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_mul_overflow
      Src: /src/postgres/src/include/common/int.h:296,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 14
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - int64
    - int64
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 333
    functionName: pg_mul_s64_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 1
    functionsReached:
    - __builtin_mul_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_mul_s64_overflow(int64 a, int64 b, int64 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:339,1
    - Dst: unlikely
      Src: /src/postgres/src/include/common/int.h:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - a
    - result
    argTypes:
    - int64
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 349
    functionName: pg_neg_s64_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - unlikely
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_neg_s64_overflow(int64 a, int64 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/common/int.h:354,1
    - Dst: i64abs
      Src: /src/postgres/src/include/common/int.h:356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - a
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 357
    functionName: pg_abs_s64
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - unlikely
    - i64abs
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_abs_s64(int64 a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_add_overflow
      Src: /src/postgres/src/include/common/int.h:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - uint16
    - uint16
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 383
    functionName: pg_add_u16_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_add_u16_overflow(uint16 a, uint16 b, uint16 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - uint16
    - uint16
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 399
    functionName: pg_sub_u16_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_sub_u16_overflow(uint16 a, uint16 b, uint16 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_mul_overflow
      Src: /src/postgres/src/include/common/int.h:405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - uint16
    - uint16
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 417
    functionName: pg_mul_u16_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_mul_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_mul_u16_overflow(uint16 a, uint16 b, uint16 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:423,1
    - Dst: unlikely
      Src: /src/postgres/src/include/common/int.h:427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - a
    - result
    argTypes:
    - uint16
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 435
    functionName: pg_neg_u16_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - unlikely
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_neg_u16_overflow(uint16 a, int16 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_add_overflow
      Src: /src/postgres/src/include/common/int.h:444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - uint32
    - uint32
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 456
    functionName: pg_add_u32_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_add_u32_overflow(uint32 a, uint32 b, uint32 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - uint32
    - uint32
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 472
    functionName: pg_sub_u32_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_sub_u32_overflow(uint32 a, uint32 b, uint32 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_mul_overflow
      Src: /src/postgres/src/include/common/int.h:478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - uint32
    - uint32
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 490
    functionName: pg_mul_u32_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_mul_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_mul_u32_overflow(uint32 a, uint32 b, uint32 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:496,1
    - Dst: unlikely
      Src: /src/postgres/src/include/common/int.h:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - a
    - result
    argTypes:
    - uint32
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 508
    functionName: pg_neg_u32_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - unlikely
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_neg_u32_overflow(uint32 a, int32 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_add_overflow
      Src: /src/postgres/src/include/common/int.h:517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - uint64
    - uint64
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 529
    functionName: pg_add_u64_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_add_u64_overflow(uint64 a, uint64 b, uint64 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - uint64
    - uint64
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 545
    functionName: pg_sub_u64_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_sub_u64_overflow(uint64 a, uint64 b, uint64 *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_mul_overflow
      Src: /src/postgres/src/include/common/int.h:551,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - uint64
    - uint64
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 573
    functionName: pg_mul_u64_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_mul_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_mul_u64_overflow(uint64 a, uint64 b, uint64 *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:579,1
    - Dst: unlikely
      Src: /src/postgres/src/include/common/int.h:583,1
    - Dst: unlikely
      Src: /src/postgres/src/include/common/int.h:591,1
    - Dst: unlikely
      Src: /src/postgres/src/include/common/int.h:596,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - a
    - result
    argTypes:
    - uint64
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 575
    functionDepth: 1
    functionLinenumber: 575
    functionLinenumberEnd: 602
    functionName: pg_neg_u64_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - unlikely
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_neg_u64_overflow(uint64 a, int64 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_add_overflow
      Src: /src/postgres/src/include/common/int.h:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - size_t
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 607
    functionDepth: 0
    functionLinenumber: 607
    functionLinenumberEnd: 623
    functionName: pg_add_size_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_add_size_overflow(size_t a, size_t b, size_t *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/postgres/src/include/common/int.h:629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - size_t
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 625
    functionDepth: 0
    functionLinenumber: 625
    functionLinenumberEnd: 639
    functionName: pg_sub_size_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_sub_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_sub_size_overflow(size_t a, size_t b, size_t *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_mul_overflow
      Src: /src/postgres/src/include/common/int.h:645,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - result
    argTypes:
    - size_t
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 657
    functionName: pg_mul_size_overflow
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached:
    - __builtin_mul_overflow
    linkageType: ''
    returnType: bool
    signature: bool pg_mul_size_overflow(size_t a, size_t b, size_t *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - int16
    - int16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 700
    functionDepth: 0
    functionLinenumber: 700
    functionLinenumberEnd: 704
    functionName: pg_cmp_s16
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_cmp_s16(int16 a, int16 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint16
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 706
    functionDepth: 0
    functionLinenumber: 706
    functionLinenumberEnd: 710
    functionName: pg_cmp_u16
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_cmp_u16(uint16 a, uint16 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 716
    functionName: pg_cmp_s32
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_cmp_s32(int32 a, int32 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 722
    functionName: pg_cmp_u32
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_cmp_u32(uint32 a, uint32 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 728
    functionName: pg_cmp_s64
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_cmp_s64(int64 a, int64 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 730
    functionDepth: 0
    functionLinenumber: 730
    functionLinenumberEnd: 734
    functionName: pg_cmp_u64
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_cmp_u64(uint64 a, uint64 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 736
    functionDepth: 0
    functionLinenumber: 736
    functionLinenumberEnd: 740
    functionName: pg_cmp_size
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_cmp_size(size_t a, size_t b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: DECOMPOSITION_SIZE
    functionSourceFile: /src/postgres/src/include/common/unicode_norm_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECOMPOSITION_SIZE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: DECOMPOSITION_NO_COMPOSE
    functionSourceFile: /src/postgres/src/include/common/unicode_norm_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECOMPOSITION_NO_COMPOSE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: DECOMPOSITION_IS_INLINE
    functionSourceFile: /src/postgres/src/include/common/unicode_norm_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECOMPOSITION_IS_INLINE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: DECOMPOSITION_IS_COMPAT
    functionSourceFile: /src/postgres/src/include/common/unicode_norm_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECOMPOSITION_IS_COMPAT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: pg_prng_strong_seed
    functionSourceFile: /src/postgres/src/include/common/pg_prng.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_prng_strong_seed(state)
  - BBCount: 29
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 73
    argCount: 1
    argNames:
    - cp
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13853
      start: 13747
    functionDepth: 0
    functionLinenumber: 13747
    functionLinenumberEnd: 13853
    functionName: case_index
    functionSourceFile: /src/postgres/src/include/common/unicode_case_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16
    signature: uint16 case_index(char32_t cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relnumber
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: RelFileNumberIsValid
    functionSourceFile: /src/postgres/src/include/common/relpath.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelFileNumberIsValid(relnumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - rlocator
    - ','
    - backend
    - ','
    - forknum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: relpathbackend
    functionSourceFile: /src/postgres/src/include/common/relpath.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relpathbackend(rlocator, backend, forknum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rlocator
    - ','
    - forknum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: relpathperm
    functionSourceFile: /src/postgres/src/include/common/relpath.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relpathperm(rlocator, forknum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rlocator
    - ','
    - forknum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: relpath
    functionSourceFile: /src/postgres/src/include/common/relpath.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relpath(rlocator, forknum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: pg_log_error
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 255
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_error(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: pg_log_error_detail
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_error_detail(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: pg_log_error_hint
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 54
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_error_hint(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: pg_log_warning
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 51
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_warning(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: pg_log_warning_detail
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_warning_detail(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: pg_log_warning_hint
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_warning_hint(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: pg_log_info
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 92
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_info(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: pg_log_info_detail
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_info_detail(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 134
    functionName: pg_log_info_hint
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_info_hint(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: pg_log_debug
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 60
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: pg_log_debug_detail
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_debug_detail(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 149
    functionName: pg_log_debug_hint
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_debug_hint(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 157
    functionName: pg_fatal
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 476
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_fatal(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    functionName: pg_log_error_internal
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_error_internal(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 164
    functionName: pg_fatal_internal
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_fatal_internal(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1282
    functionDepth: 0
    functionLinenumber: 1282
    functionLinenumberEnd: 1615
    functionName: NFC_QC_hash_func
    functionSourceFile: /src/postgres/src/include/common/unicode_normprops_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int NFC_QC_hash_func(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8019
      start: 6725
    functionDepth: 0
    functionLinenumber: 6725
    functionLinenumberEnd: 8019
    functionName: NFKC_QC_hash_func
    functionSourceFile: /src/postgres/src/include/common/unicode_normprops_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int NFKC_QC_hash_func(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: ROTATE_HIGH_AND_LOW_32BITS
    functionSourceFile: /src/postgres/src/include/common/hashfn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTATE_HIGH_AND_LOW_32BITS(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/include/common/hashfn.h:33,1
    - Dst: hash_bytes
      Src: /src/postgres/src/include/common/hashfn.h:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - k
    - keylen
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: hash_any
    functionSourceFile: /src/postgres/src/include/common/hashfn.h
    functionUses: 0
    functionsReached:
    - UInt32GetDatum
    - hash_bytes
    linkageType: ''
    returnType: Datum
    signature: Datum hash_any(const unsigned char *k, int keylen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/include/common/hashfn.h:39,1
    - Dst: hash_bytes_extended
      Src: /src/postgres/src/include/common/hashfn.h:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - k
    - keylen
    - seed
    argTypes:
    - unsigned char*
    - int
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: hash_any_extended
    functionSourceFile: /src/postgres/src/include/common/hashfn.h
    functionUses: 0
    functionsReached:
    - UInt64GetDatum
    - hash_bytes_extended
    linkageType: ''
    returnType: Datum
    signature: Datum hash_any_extended(const unsigned char *k, int keylen, uint64
      seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/include/common/hashfn.h:45,1
    - Dst: hash_bytes_uint32
      Src: /src/postgres/src/include/common/hashfn.h:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - k
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: hash_uint32
    functionSourceFile: /src/postgres/src/include/common/hashfn.h
    functionUses: 0
    functionsReached:
    - UInt32GetDatum
    - hash_bytes_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hash_uint32(uint32 k)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/include/common/hashfn.h:51,1
    - Dst: hash_bytes_uint32_extended
      Src: /src/postgres/src/include/common/hashfn.h:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - k
    - seed
    argTypes:
    - uint32
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: hash_uint32_extended
    functionSourceFile: /src/postgres/src/include/common/hashfn.h
    functionUses: 0
    functionsReached:
    - hash_bytes_uint32_extended
    - UInt64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum hash_uint32_extended(uint32 k, uint64 seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: hash_combine
    functionSourceFile: /src/postgres/src/include/common/hashfn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 hash_combine(uint32 a, uint32 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/common/hashfn.h:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 85
    functionName: hash_combine64
    functionSourceFile: /src/postgres/src/include/common/hashfn.h
    functionUses: 0
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 hash_combine64(uint64 a, uint64 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - data
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 102
    functionName: murmurhash32
    functionSourceFile: /src/postgres/src/include/common/hashfn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 murmurhash32(uint32 data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - data
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 117
    functionName: murmurhash64
    functionSourceFile: /src/postgres/src/include/common/hashfn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 murmurhash64(uint64 data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - keywords
    argTypes:
    - int
    - ScanKeywordList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: GetScanKeyword
    functionSourceFile: /src/postgres/src/include/common/kwlookup.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      GetScanKeyword(int n, const ScanKeywordList *keywords)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i128
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: PG_INT128_HI_INT64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_INT128_HI_INT64(i128)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i128
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: PG_INT128_LO_UINT64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_INT128_LO_UINT64(i128)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i128
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: PG_INT128_HI_INT64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_INT128_HI_INT64(i128)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i128
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: PG_INT128_LO_UINT64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_INT128_LO_UINT64(i128)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - hi
    - lo
    argTypes:
    - int64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 86
    functionName: make_int128
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: INT128
    signature: INT128 make_int128(int64 hi, uint64 lo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - i128
    - v
    argTypes:
    - INT128*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 111
    functionName: int128_add_uint64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void int128_add_uint64(INT128 *i128, uint64 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - i128
    - v
    argTypes:
    - INT128*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 138
    functionName: int128_add_int64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void int128_add_int64(INT128 *i128, int64 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int128_add_uint64
      Src: /src/postgres/src/include/common/int128.h:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - i128
    - v
    argTypes:
    - INT128*
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 152
    functionName: int128_add_int128
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached:
    - int128_add_uint64
    linkageType: ''
    returnType: void
    signature: void int128_add_int128(INT128 *i128, INT128 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - i128
    - v
    argTypes:
    - INT128*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 173
    functionName: int128_sub_uint64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void int128_sub_uint64(INT128 *i128, uint64 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - i128
    - v
    argTypes:
    - INT128*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 190
    functionName: int128_sub_int64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void int128_sub_int64(INT128 *i128, int64 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i64
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 197
    functionName: INT64_HI_INT32
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT64_HI_INT32(i64)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i64
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 198
    functionName: INT64_LO_UINT32
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT64_LO_UINT32(i64)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/include/common/int128.h:213,1
    - Dst: INT64_HI_INT32
      Src: /src/postgres/src/include/common/int128.h:237,1
    - Dst: INT64_LO_UINT32
      Src: /src/postgres/src/include/common/int128.h:238,1
    - Dst: INT64_HI_INT32
      Src: /src/postgres/src/include/common/int128.h:239,1
    - Dst: INT64_LO_UINT32
      Src: /src/postgres/src/include/common/int128.h:240,1
    - Dst: INT64_HI_INT32
      Src: /src/postgres/src/include/common/int128.h:248,1
    - Dst: int128_add_uint64
      Src: /src/postgres/src/include/common/int128.h:249,1
    - Dst: INT64_LO_UINT32
      Src: /src/postgres/src/include/common/int128.h:249,1
    - Dst: INT64_HI_INT32
      Src: /src/postgres/src/include/common/int128.h:253,1
    - Dst: int128_add_uint64
      Src: /src/postgres/src/include/common/int128.h:254,1
    - Dst: INT64_LO_UINT32
      Src: /src/postgres/src/include/common/int128.h:254,1
    - Dst: int128_add_uint64
      Src: /src/postgres/src/include/common/int128.h:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - i128
    - x
    - y
    argTypes:
    - INT128*
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 260
    functionName: int128_add_int64_mul_int64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached:
    - INT64_HI_INT32
    - INT64_LO_UINT32
    - StaticAssertDecl
    - int128_add_uint64
    linkageType: ''
    returnType: void
    signature: void int128_add_int64_mul_int64(INT128 *i128, int64 x, int64 y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INT64_HI_INT32
      Src: /src/postgres/src/include/common/int128.h:274,1
    - Dst: INT64_LO_UINT32
      Src: /src/postgres/src/include/common/int128.h:275,1
    - Dst: INT64_HI_INT32
      Src: /src/postgres/src/include/common/int128.h:276,1
    - Dst: INT64_LO_UINT32
      Src: /src/postgres/src/include/common/int128.h:277,1
    - Dst: INT64_HI_INT32
      Src: /src/postgres/src/include/common/int128.h:285,1
    - Dst: int128_sub_uint64
      Src: /src/postgres/src/include/common/int128.h:286,1
    - Dst: INT64_LO_UINT32
      Src: /src/postgres/src/include/common/int128.h:286,1
    - Dst: INT64_HI_INT32
      Src: /src/postgres/src/include/common/int128.h:290,1
    - Dst: int128_sub_uint64
      Src: /src/postgres/src/include/common/int128.h:291,1
    - Dst: INT64_LO_UINT32
      Src: /src/postgres/src/include/common/int128.h:291,1
    - Dst: int128_sub_uint64
      Src: /src/postgres/src/include/common/int128.h:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - i128
    - x
    - y
    argTypes:
    - INT128*
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 297
    functionName: int128_sub_int64_mul_int64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached:
    - INT64_LO_UINT32
    - INT64_HI_INT32
    - int128_sub_uint64
    linkageType: ''
    returnType: void
    signature: void int128_sub_int64_mul_int64(INT128 *i128, int64 x, int64 y)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: abs
      Src: /src/postgres/src/include/common/int128.h:350,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 3
    argNames:
    - i128
    - v
    - remainder
    argTypes:
    - INT128*
    - int32
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 383
    functionName: int128_div_mod_int32
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached:
    - abs
    linkageType: ''
    returnType: void
    signature: void int128_div_mod_int32(INT128 *i128, int32 v, int32 *remainder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - x
    argTypes:
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 396
    functionName: int128_is_zero
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool int128_is_zero(INT128 x)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - x
    argTypes:
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 419
    functionName: int128_sign
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int128_sign(INT128 x)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - INT128
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 444
    functionName: int128_compare
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int128_compare(INT128 x, INT128 y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/include/common/int128.h:458,1
    - Dst: INT64CONST
      Src: /src/postgres/src/include/common/int128.h:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 461
    functionName: int64_to_int128
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached:
    - INT64CONST
    linkageType: ''
    returnType: INT128
    signature: INT128 int64_to_int128(int64 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 475
    functionName: int128_to_int64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 int128_to_int64(INT128 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: pg_malloc_object
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 40
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_malloc_object(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: pg_malloc0_object
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 51
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_malloc0_object(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: pg_malloc_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 94
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_malloc_array(type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: pg_malloc0_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_malloc0_array(type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - count
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: pg_malloc_array_extended
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_malloc_array_extended(type, count, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - pointer
    - ','
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: pg_realloc_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_realloc_array(pointer, type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: palloc_object
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc_object(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: palloc0_object
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc0_object(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: palloc_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc_array(type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: palloc0_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc0_array(type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - count
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: palloc_array_extended
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc_array_extended(type, count, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - pointer
    - ','
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: repalloc_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: repalloc_array(pointer, type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/include/common/hashfn_unstable.h:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - hs
    - seed
    argTypes:
    - fasthash_state*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 122
    functionName: fasthash_init
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void fasthash_init(fasthash_state *hs, uint64 seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - h
    - tweak
    argTypes:
    - uint64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 132
    functionName: fasthash_mix
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 fasthash_mix(uint64 h, uint64 tweak)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fasthash_mix
      Src: /src/postgres/src/include/common/hashfn_unstable.h:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hs
    argTypes:
    - fasthash_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 140
    functionName: fasthash_combine
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_mix
    linkageType: ''
    returnType: void
    signature: void fasthash_combine(fasthash_state *hs)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/common/hashfn_unstable.h:148,1
    - Dst: memcpy
      Src: /src/postgres/src/include/common/hashfn_unstable.h:158,1
    - Dst: memcpy
      Src: /src/postgres/src/include/common/hashfn_unstable.h:170,1
    - Dst: memcpy
      Src: /src/postgres/src/include/common/hashfn_unstable.h:189,1
    - Dst: memcpy
      Src: /src/postgres/src/include/common/hashfn_unstable.h:201,1
    - Dst: fasthash_combine
      Src: /src/postgres/src/include/common/hashfn_unstable.h:218,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 62
    argCount: 3
    argNames:
    - hs
    - k
    - len
    argTypes:
    - fasthash_state*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 219
    functionName: fasthash_accum
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - Assert
    - memcpy
    - fasthash_combine
    linkageType: ''
    returnType: void
    signature: void fasthash_accum(fasthash_state *hs, const char *k, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 227
    functionName: haszero64
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: haszero64(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fasthash_accum
      Src: /src/postgres/src/include/common/hashfn_unstable.h:243,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - hs
    - str
    argTypes:
    - fasthash_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 248
    functionName: fasthash_accum_cstring_unaligned
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_accum
    linkageType: ''
    returnType: size_t
    signature: size_t fasthash_accum_cstring_unaligned(fasthash_state *hs, const char
      *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/common/hashfn_unstable.h:267,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:267,1
    - Dst: haszero64
      Src: /src/postgres/src/include/common/hashfn_unstable.h:277,1
    - Dst: fasthash_combine
      Src: /src/postgres/src/include/common/hashfn_unstable.h:282,1
    - Dst: fasthash_accum_cstring_unaligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - hs
    - str
    argTypes:
    - fasthash_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 260
    functionDepth: 4
    functionLinenumber: 260
    functionLinenumberEnd: 291
    functionName: fasthash_accum_cstring_aligned
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - PointerIsAligned
    - haszero64
    - Assert
    - fasthash_accum_cstring_unaligned
    - fasthash_combine
    linkageType: ''
    returnType: size_t
    signature: size_t fasthash_accum_cstring_aligned(fasthash_state *hs, const char
      *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/include/common/hashfn_unstable.h:306,1
    - Dst: fasthash_accum_cstring_unaligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:307,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:309,1
    - Dst: fasthash_accum_cstring_aligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:311,1
    - Dst: Assert
      Src: /src/postgres/src/include/common/hashfn_unstable.h:312,1
    - Dst: Assert
      Src: /src/postgres/src/include/common/hashfn_unstable.h:313,1
    - Dst: fasthash_accum_cstring_unaligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - hs
    - str
    argTypes:
    - fasthash_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 296
    functionDepth: 5
    functionLinenumber: 296
    functionLinenumberEnd: 323
    functionName: fasthash_accum_cstring
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - memcpy
    - PointerIsAligned
    - Assert
    - fasthash_accum_cstring_unaligned
    - fasthash_accum_cstring_aligned
    linkageType: ''
    returnType: size_t
    signature: size_t fasthash_accum_cstring(fasthash_state *hs, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fasthash_mix
      Src: /src/postgres/src/include/common/hashfn_unstable.h:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hs
    - tweak
    argTypes:
    - fasthash_state*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 336
    functionName: fasthash_final64
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_mix
    linkageType: ''
    returnType: uint64
    signature: uint64 fasthash_final64(fasthash_state *hs, uint64 tweak)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 352
    functionName: fasthash_reduce32
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 fasthash_reduce32(uint64 h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fasthash_reduce32
      Src: /src/postgres/src/include/common/hashfn_unstable.h:358,1
    - Dst: fasthash_final64
      Src: /src/postgres/src/include/common/hashfn_unstable.h:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hs
    - tweak
    argTypes:
    - fasthash_state*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 359
    functionName: fasthash_final32
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_final64
    - fasthash_reduce32
    linkageType: ''
    returnType: uint32
    signature: uint32 fasthash_final32(fasthash_state *hs, uint64 tweak)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fasthash_init
      Src: /src/postgres/src/include/common/hashfn_unstable.h:376,1
    - Dst: fasthash_accum
      Src: /src/postgres/src/include/common/hashfn_unstable.h:383,1
    - Dst: fasthash_accum
      Src: /src/postgres/src/include/common/hashfn_unstable.h:388,1
    - Dst: fasthash_final64
      Src: /src/postgres/src/include/common/hashfn_unstable.h:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - k
    - len
    - seed
    argTypes:
    - char*
    - size_t
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 371
    functionDepth: 3
    functionLinenumber: 371
    functionLinenumberEnd: 395
    functionName: fasthash64
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_final64
    - fasthash_init
    - fasthash_accum
    linkageType: ''
    returnType: uint64
    signature: uint64 fasthash64(const char *k, size_t len, uint64 seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fasthash_reduce32
      Src: /src/postgres/src/include/common/hashfn_unstable.h:401,1
    - Dst: fasthash64
      Src: /src/postgres/src/include/common/hashfn_unstable.h:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - k
    - len
    - seed
    argTypes:
    - char*
    - size_t
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 398
    functionDepth: 4
    functionLinenumber: 398
    functionLinenumberEnd: 402
    functionName: fasthash32
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash64
    - fasthash_reduce32
    linkageType: ''
    returnType: uint32
    signature: uint32 fasthash32(const char *k, size_t len, uint64 seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fasthash_init
      Src: /src/postgres/src/include/common/hashfn_unstable.h:416,1
    - Dst: fasthash_accum_cstring
      Src: /src/postgres/src/include/common/hashfn_unstable.h:422,1
    - Dst: fasthash_final32
      Src: /src/postgres/src/include/common/hashfn_unstable.h:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 410
    functionDepth: 6
    functionLinenumber: 410
    functionLinenumberEnd: 425
    functionName: hash_string
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_accum_cstring
    - fasthash_init
    - fasthash_final32
    linkageType: ''
    returnType: uint32
    signature: uint32 hash_string(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 1780
    functionName: Decomp_hash_func
    functionSourceFile: /src/postgres/src/include/common/unicode_norm_hashfunc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int Decomp_hash_func(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3017
      start: 2757
    functionDepth: 0
    functionLinenumber: 2757
    functionLinenumberEnd: 3017
    functionName: Recomp_hash_func
    functionSourceFile: /src/postgres/src/include/common/unicode_norm_hashfunc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int Recomp_hash_func(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _dlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: PGLZ_MAX_OUTPUT
    functionSourceFile: /src/postgres/src/include/common/pg_lzcompress.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PGLZ_MAX_OUTPUT(_dlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: TSROUND
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TSROUND(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: TIMESTAMP_NOBEGIN
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_NOBEGIN(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    functionName: TIMESTAMP_IS_NOBEGIN
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_IS_NOBEGIN(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: TIMESTAMP_NOEND
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_NOEND(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    functionName: TIMESTAMP_IS_NOEND
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_IS_NOEND(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 170
    functionName: TIMESTAMP_NOT_FINITE
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_NOT_FINITE(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: INTERVAL_NOBEGIN
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_NOBEGIN(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 184
    functionName: INTERVAL_IS_NOBEGIN
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_IS_NOBEGIN(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 191
    functionName: INTERVAL_NOEND
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_NOEND(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 194
    functionName: INTERVAL_IS_NOEND
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_IS_NOEND(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 196
    functionName: INTERVAL_NOT_FINITE
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_NOT_FINITE(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - y
    - ','
    - m
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 232
    functionName: IS_VALID_JULIAN
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VALID_JULIAN(y,m,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: IS_VALID_DATE
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VALID_DATE(d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 268
    functionName: IS_VALID_TIMESTAMP
    functionSourceFile: /src/postgres/src/include/datatype/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VALID_TIMESTAMP(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 173
    functionName: TupleHashEntrySize
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t TupleHashEntrySize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - entry
    argTypes:
    - TupleHashEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: TupleHashEntryGetTuple
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple TupleHashEntryGetTuple(TupleHashEntry entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hashtable
    - entry
    argTypes:
    - TupleHashTable
    - TupleHashEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 199
    functionName: TupleHashEntryGetAdditional
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      TupleHashEntryGetAdditional(TupleHashTable hashtable, TupleHashEntry entry)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/executor/executor.h:228,1
    - Dst: slot_getattr
      Src: /src/postgres/src/include/executor/executor.h:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - slot
    - attno
    - isNull
    argTypes:
    - TupleTableSlot*
    - AttrNumber
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 230
    functionName: ExecGetJunkAttribute
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - Assert
    - slot_getattr
    linkageType: ''
    returnType: Datum
    signature: Datum ExecGetJunkAttribute(TupleTableSlot *slot, AttrNumber attno,
      bool *isNull)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - epqstate
    - ','
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 291
    functionName: EvalPlanQualSetSlot
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EvalPlanQualSetSlot(epqstate, slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecReScan
      Src: /src/postgres/src/include/executor/executor.h:325,1
    - Dst: PlanState*::ExecProcNode
      Src: /src/postgres/src/include/executor/executor.h:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 328
    functionName: ExecProcNode
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 1
    functionsReached:
    - PlanState*::ExecProcNode
    - ExecReScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecProcNode(PlanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExprState*::evalfunc
      Src: /src/postgres/src/include/executor/executor.h:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isNull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 406
    functionName: ExecEvalExpr
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 2
    functionsReached:
    - ExprState*::evalfunc
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecEvalExpr(ExprState *state,\n\t\t\t ExprContext *econtext,\n\t\t\t
      bool *isNull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExprState*::evalfunc
      Src: /src/postgres/src/include/executor/executor.h:431,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/executor.h:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 434
    functionName: ExecEvalExprNoReturn
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - Assert
    - ExprState*::evalfunc
    linkageType: ''
    returnType: void
    signature: "void ExecEvalExprNoReturn(ExprState *state,\n\t\t\t\t\t ExprContext
      *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/include/executor/executor.h:451,1
    - Dst: ExprState*::evalfunc
      Src: /src/postgres/src/include/executor/executor.h:452,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/include/executor/executor.h:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - state
    - econtext
    - isNull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 455
    functionName: ExecEvalExprSwitchContext
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - ExprState*::evalfunc
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecEvalExprSwitchContext(ExprState *state,\n\t\t\t\t\t\t  ExprContext
      *econtext,\n\t\t\t\t\t\t  bool *isNull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/include/executor/executor.h:471,1
    - Dst: ExecEvalExprNoReturn
      Src: /src/postgres/src/include/executor/executor.h:472,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/include/executor/executor.h:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 474
    functionName: ExecEvalExprNoReturnSwitchContext
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - ExecEvalExprNoReturn
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void ExecEvalExprNoReturnSwitchContext(ExprState *state,\n\t\t\t\t\t\t\t\t
      \ ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/executor.h:501,1
    - Dst: ExecEvalExprNoReturnSwitchContext
      Src: /src/postgres/src/include/executor/executor.h:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - projInfo
    argTypes:
    - ProjectionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 490
    functionDepth: 3
    functionLinenumber: 490
    functionLinenumberEnd: 514
    functionName: ExecProject
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - ExecEvalExprNoReturnSwitchContext
    - ExecClearTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecProject(ProjectionInfo *projInfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/executor/executor.h:537,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/include/executor/executor.h:539,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/executor.h:542,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/include/executor/executor.h:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 545
    functionName: ExecQual
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - Assert
    - DatumGetBool
    - ExecEvalExprSwitchContext
    linkageType: ''
    returnType: bool
    signature: bool ExecQual(ExprState *state, ExprContext *econtext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecQual
      Src: /src/postgres/src/include/executor/executor.h:556,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/include/executor/executor.h:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 553
    functionDepth: 3
    functionLinenumber: 553
    functionLinenumberEnd: 561
    functionName: ExecQualAndReset
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - ExecQual
    linkageType: ''
    returnType: bool
    signature: bool ExecQualAndReset(ExprState *state, ExprContext *econtext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tstate
    - ','
    - str_to_emit
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 646
    functionName: do_text_output_oneline
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: do_text_output_oneline(tstate, str_to_emit)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - econtext
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 661
    functionName: ResetExprContext
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ResetExprContext(econtext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - estate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 665
    functionDepth: 0
    functionLinenumber: 665
    functionLinenumberEnd: 669
    functionName: GetPerTupleExprContext
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetPerTupleExprContext(estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - estate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 670
    functionDepth: 0
    functionLinenumber: 670
    functionLinenumberEnd: 672
    functionName: GetPerTupleMemoryContext
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetPerTupleMemoryContext(estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - estate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 674
    functionDepth: 0
    functionLinenumber: 674
    functionLinenumberEnd: 679
    functionName: ResetPerTupleExprContext
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ResetPerTupleExprContext(estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_nth
      Src: /src/postgres/src/include/executor/executor.h:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rti
    - estate
    argTypes:
    - Index
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 707
    functionDepth: 3
    functionLinenumber: 707
    functionLinenumberEnd: 711
    functionName: exec_rt_fetch
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - list_nth
    linkageType: ''
    returnType: RangeTblEntry
    signature: 'RangeTblEntry *

      exec_rt_fetch(Index rti, EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: T_OR_F
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: T_OR_F(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: NULL_OR_TUPLE
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NULL_OR_TUPLE(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: NL_nodeDisplay
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NL_nodeDisplay(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: NL_printf
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NL_printf(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: NL1_printf
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NL1_printf(s, a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - message
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: ENL1_printf
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENL1_printf(message)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: SO_nodeDisplay
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SO_nodeDisplay(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: SO_printf
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SO_printf(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: SO1_printf
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SO1_printf(s, p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - p1
    - ','
    - p2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: SO2_printf
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SO2_printf(s, p1, p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: MJ_nodeDisplay
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MJ_nodeDisplay(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: MJ_printf
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MJ_printf(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: MJ1_printf
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MJ1_printf(s, p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - p1
    - ','
    - p2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: MJ2_printf
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MJ2_printf(s, p1, p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: MJ_debugtup
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MJ_debugtup(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: MJ_dump
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MJ_dump(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - res
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: MJ_DEBUG_COMPARE
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MJ_DEBUG_COMPARE(res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - clause
    - ','
    - res
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: MJ_DEBUG_QUAL
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MJ_DEBUG_QUAL(clause, res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: MJ_DEBUG_PROC_NODE
    functionSourceFile: /src/postgres/src/include/executor/execdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MJ_DEBUG_PROC_NODE(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hjtup
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: HJTUPLE_MINTUPLE
    functionSourceFile: /src/postgres/src/include/executor/hashjoin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HJTUPLE_MINTUPLE(hjtup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 164
    functionName: HASH_CHUNK_DATA
    functionSourceFile: /src/postgres/src/include/executor/hashjoin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_CHUNK_DATA(hc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - batch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: ParallelHashJoinBatchInner
    functionSourceFile: /src/postgres/src/include/executor/hashjoin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ParallelHashJoinBatchInner(batch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - batch
    - ','
    - nparticipants
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: ParallelHashJoinBatchOuter
    functionSourceFile: /src/postgres/src/include/executor/hashjoin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ParallelHashJoinBatchOuter(batch, nparticipants)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hashtable
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: EstimateParallelHashJoinBatch
    functionSourceFile: /src/postgres/src/include/executor/hashjoin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EstimateParallelHashJoinBatch(hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - base
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: NthParallelHashJoinBatch
    functionSourceFile: /src/postgres/src/include/executor/hashjoin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NthParallelHashJoinBatch(base, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 302
    functionName: PHJ_GROW_BATCHES_PHASE
    functionSourceFile: /src/postgres/src/include/executor/hashjoin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PHJ_GROW_BATCHES_PHASE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 308
    functionName: PHJ_GROW_BUCKETS_PHASE
    functionSourceFile: /src/postgres/src/include/executor/hashjoin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PHJ_GROW_BUCKETS_PHASE(n)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/executor/execScan.h:38,1
    - Dst: bms_is_member
      Src: /src/postgres/src/include/executor/execScan.h:57,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:68,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:81,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/execScan.h:91,1
    - Dst: TupIsNull
      Src: /src/postgres/src/include/executor/execScan.h:97,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:102,1
    - Dst: EvalPlanQualFetchRowMark
      Src: /src/postgres/src/include/executor/execScan.h:117,1
    - Dst: TupIsNull
      Src: /src/postgres/src/include/executor/execScan.h:121,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:126,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 136
    functionName: "TupleTableSlot *\nExecScanFetch(ScanState *node,\n\t\t\t  EPQState
      *epqstate,\n\t\t\t  ExecScanAccessMtd accessMtd,\n\t\t\t  ExecScanRecheckMtd
      recheckMtd)"
    functionSourceFile: /src/postgres/src/include/executor/execScan.h
    functionUses: 0
    functionsReached:
    - Assert
    - bms_is_member
    - CHECK_FOR_INTERRUPTS
    - EvalPlanQualFetchRowMark
    - ExecClearTuple
    - TupIsNull
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline TupleTableSlot *\nExecScanFetch(ScanState
      *node,\n\t\t\t  EPQState *epqstate,\n\t\t\t  ExecScanAccessMtd accessMtd,\n\t\t\t
      \ ExecScanRecheckMtd recheckMtd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/include/executor/execScan.h:178,1
    - Dst: ExecScanFetch
      Src: /src/postgres/src/include/executor/execScan.h:179,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/include/executor/execScan.h:186,1
    - Dst: ExecScanFetch
      Src: /src/postgres/src/include/executor/execScan.h:196,1
    - Dst: TupIsNull
      Src: /src/postgres/src/include/executor/execScan.h:204,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:207,1
    - Dst: ExecQual
      Src: /src/postgres/src/include/executor/execScan.h:224,1
    - Dst: ExecProject
      Src: /src/postgres/src/include/executor/execScan.h:235,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/include/executor/execScan.h:246,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/include/executor/execScan.h:251,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 253
    functionName: "TupleTableSlot *\nExecScanExtended(ScanState *node,\n\t\t\t\t ExecScanAccessMtd
      accessMtd,\t/* function returning a tuple */\n\t\t\t\t ExecScanRecheckMtd recheckMtd,\n\t\t\t\t
      EPQState *epqstate,\n\t\t\t\t ExprState *qual,\n\t\t\t\t ProjectionInfo *projInfo)"
    functionSourceFile: /src/postgres/src/include/executor/execScan.h
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - TupIsNull
    - ExecQual
    - ExecClearTuple
    - ExecProject
    - ExecScanFetch
    - InstrCountFiltered1
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline TupleTableSlot *\nExecScanExtended(ScanState
      *node,\n\t\t\t\t ExecScanAccessMtd accessMtd,\t/* function returning a tuple
      */\n\t\t\t\t ExecScanRecheckMtd recheckMtd,\n\t\t\t\t EPQState *epqstate,\n\t\t\t\t
      ExprState *qual,\n\t\t\t\t ProjectionInfo *projInfo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - IOStats*
    - IOStats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 97
    functionName: AccumulateIOStats
    functionSourceFile: /src/postgres/src/include/executor/instrument_node.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AccumulateIOStats(IOStats *dst, IOStats *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: TTS_EMPTY
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTS_EMPTY(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: TTS_SHOULDFREE
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTS_SHOULDFREE(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 105
    functionName: TTS_OBEYS_NOT_NULL_CONSTRAINTS
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTS_OBEYS_NOT_NULL_CONSTRAINTS(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: TTS_FIXED
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTS_FIXED(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 254
    functionName: TTS_IS_VIRTUAL
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTS_IS_VIRTUAL(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 255
    functionName: TTS_IS_HEAPTUPLE
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTS_IS_HEAPTUPLE(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 256
    functionName: TTS_IS_MINIMALTUPLE
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTS_IS_MINIMALTUPLE(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 257
    functionName: TTS_IS_BUFFERTUPLE
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTS_IS_BUFFERTUPLE(slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 327
    functionName: TupIsNull
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TupIsNull(slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TupleTableSlot*::tts_ops::getsomeattrs
      Src: /src/postgres/src/include/executor/tuptable.h:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - slot
    - attnum
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 381
    functionName: slot_getsomeattrs
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - TupleTableSlot*::tts_ops::getsomeattrs
    linkageType: ''
    returnType: void
    signature: void slot_getsomeattrs(TupleTableSlot *slot, int attnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/include/executor/tuptable.h:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 393
    functionName: slot_getallattrs
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - slot_getsomeattrs
    linkageType: ''
    returnType: void
    signature: void slot_getallattrs(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/executor/tuptable.h:405,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/include/executor/tuptable.h:408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - slot
    - attnum
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 411
    functionName: slot_attisnull
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - Assert
    - slot_getsomeattrs
    linkageType: ''
    returnType: bool
    signature: bool slot_attisnull(TupleTableSlot *slot, int attnum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/executor/tuptable.h:420,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/include/executor/tuptable.h:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - slot
    - attnum
    - isnull
    argTypes:
    - TupleTableSlot*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 428
    functionName: slot_getattr
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 1
    functionsReached:
    - Assert
    - slot_getsomeattrs
    linkageType: ''
    returnType: Datum
    signature: "Datum slot_getattr(TupleTableSlot *slot, int attnum,\n\t\t\t bool
      *isnull)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/executor/tuptable.h:440,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/include/executor/tuptable.h:445,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/executor/tuptable.h:450,1
    - Dst: TupleTableSlot*::tts_ops::getsysattr
      Src: /src/postgres/src/include/executor/tuptable.h:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - slot
    - attnum
    - isnull
    argTypes:
    - TupleTableSlot*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 455
    functionName: slot_getsysattr
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - Assert
    - ObjectIdGetDatum
    - TupleTableSlot*::tts_ops::getsysattr
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum slot_getsysattr(TupleTableSlot *slot, int attnum, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupleTableSlot*::tts_ops::is_current_xact_tuple
      Src: /src/postgres/src/include/executor/tuptable.h:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 470
    functionName: slot_is_current_xact_tuple
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - TupleTableSlot*::tts_ops::is_current_xact_tuple
    linkageType: ''
    returnType: bool
    signature: bool slot_is_current_xact_tuple(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupleTableSlot*::tts_ops::clear
      Src: /src/postgres/src/include/executor/tuptable.h:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 481
    functionName: ExecClearTuple
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 3
    functionsReached:
    - TupleTableSlot*::tts_ops::clear
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecClearTuple(TupleTableSlot *slot)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupleTableSlot*::tts_ops::materialize
      Src: /src/postgres/src/include/executor/tuptable.h:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 498
    functionName: ExecMaterializeSlot
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - TupleTableSlot*::tts_ops::materialize
    linkageType: ''
    returnType: void
    signature: void ExecMaterializeSlot(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/executor/tuptable.h:506,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/include/executor/tuptable.h:506,1
    - Dst: TupleTableSlot*::tts_ops::copy_heap_tuple
      Src: /src/postgres/src/include/executor/tuptable.h:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 509
    functionName: ExecCopySlotHeapTuple
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - TupleTableSlot*::tts_ops::copy_heap_tuple
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple ExecCopySlotHeapTuple(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupleTableSlot*::tts_ops::copy_minimal_tuple
      Src: /src/postgres/src/include/executor/tuptable.h:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 518
    functionName: ExecCopySlotMinimalTuple
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - TupleTableSlot*::tts_ops::copy_minimal_tuple
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple ExecCopySlotMinimalTuple(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupleTableSlot*::tts_ops::copy_minimal_tuple
      Src: /src/postgres/src/include/executor/tuptable.h:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slot
    - extra
    argTypes:
    - TupleTableSlot*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 530
    functionName: ExecCopySlotMinimalTupleExtra
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - TupleTableSlot*::tts_ops::copy_minimal_tuple
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple ExecCopySlotMinimalTupleExtra(TupleTableSlot *slot, Size
      extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/executor/tuptable.h:546,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/include/executor/tuptable.h:546,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/tuptable.h:547,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/tuptable.h:548,1
    - Dst: TupleTableSlot*::tts_ops::copyslot
      Src: /src/postgres/src/include/executor/tuptable.h:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - dstslot
    - srcslot
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 554
    functionName: ExecCopySlot
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - TupleTableSlot*::tts_ops::copyslot
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 193
    functionName: pg_current_timing_clock_source
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: TimingClockSourceType
    signature: TimingClockSourceType pg_current_timing_clock_source(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/portability/instr_time.h:233,1
    - Dst: clock_gettime
      Src: /src/postgres/src/include/portability/instr_time.h:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 239
    functionName: pg_get_ticks_system
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - Assert
    - clock_gettime
    linkageType: ''
    returnType: instr_time
    signature: instr_time pg_get_ticks_system(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/portability/instr_time.h:252,1
    - Dst: QueryPerformanceCounter
      Src: /src/postgres/src/include/portability/instr_time.h:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 258
    functionName: pg_get_ticks_system
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - Assert
    - QueryPerformanceCounter
    linkageType: ''
    returnType: instr_time
    signature: instr_time pg_get_ticks_system(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/portability/instr_time.h:268,1
    - Dst: unlikely
      Src: /src/postgres/src/include/portability/instr_time.h:280,1
    - Dst: Assert
      Src: /src/postgres/src/include/portability/instr_time.h:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ticks
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 304
    functionName: pg_ticks_to_ns
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - Assert
    - unlikely
    linkageType: ''
    returnType: int64
    signature: int64 pg_ticks_to_ns(int64 ticks)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/portability/instr_time.h:312,1
    - Dst: unlikely
      Src: /src/postgres/src/include/portability/instr_time.h:324,1
    - Dst: Assert
      Src: /src/postgres/src/include/portability/instr_time.h:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ns
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 340
    functionName: pg_ns_to_ticks
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - Assert
    - unlikely
    linkageType: ''
    returnType: int64
    signature: int64 pg_ns_to_ticks(int64 ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __rdtsc
      Src: /src/postgres/src/include/portability/instr_time.h:356,1
    - Dst: __builtin_ia32_rdtsc
      Src: /src/postgres/src/include/portability/instr_time.h:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 360
    functionName: pg_rdtsc
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - __builtin_ia32_rdtsc
    - __rdtsc
    linkageType: ''
    returnType: int64
    signature: int64 pg_rdtsc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __rdtscp
      Src: /src/postgres/src/include/portability/instr_time.h:368,1
    - Dst: __builtin_ia32_rdtscp
      Src: /src/postgres/src/include/portability/instr_time.h:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 372
    functionName: pg_rdtscp
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - __builtin_ia32_rdtscp
    - __rdtscp
    linkageType: ''
    returnType: int64
    signature: int64 pg_rdtscp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/include/portability/instr_time.h:382,1
    - Dst: pg_rdtscp
      Src: /src/postgres/src/include/portability/instr_time.h:386,1
    - Dst: pg_get_ticks_system
      Src: /src/postgres/src/include/portability/instr_time.h:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 379
    functionDepth: 2
    functionLinenumber: 379
    functionLinenumberEnd: 391
    functionName: pg_get_ticks
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - pg_get_ticks_system
    - likely
    - pg_rdtscp
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline pg_get_ticks(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/include/portability/instr_time.h:396,1
    - Dst: pg_rdtsc
      Src: /src/postgres/src/include/portability/instr_time.h:400,1
    - Dst: pg_get_ticks_system
      Src: /src/postgres/src/include/portability/instr_time.h:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 393
    functionDepth: 2
    functionLinenumber: 393
    functionLinenumberEnd: 405
    functionName: pg_get_ticks_fast
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - pg_rdtsc
    - pg_get_ticks_system
    - likely
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline pg_get_ticks_fast(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_get_ticks_system
      Src: /src/postgres/src/include/portability/instr_time.h:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 413
    functionName: pg_get_ticks
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - pg_get_ticks_system
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline pg_get_ticks(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_get_ticks_system
      Src: /src/postgres/src/include/portability/instr_time.h:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 419
    functionName: pg_get_ticks_fast
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - pg_get_ticks_system
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline pg_get_ticks_fast(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 428
    functionName: INSTR_TIME_IS_ZERO
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_IS_ZERO(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 430
    functionName: INSTR_TIME_SET_ZERO
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_SET_ZERO(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 433
    functionName: INSTR_TIME_SET_CURRENT_FAST
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_SET_CURRENT_FAST(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 436
    functionName: INSTR_TIME_SET_CURRENT
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_SET_CURRENT(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 440
    functionName: INSTR_TIME_ADD
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_ADD(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 443
    functionName: INSTR_TIME_ADD_NANOSEC
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_ADD_NANOSEC(t, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 446
    functionName: INSTR_TIME_SUBTRACT
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_SUBTRACT(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 449
    functionName: INSTR_TIME_ACCUM_DIFF
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_ACCUM_DIFF(x,y,z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 452
    functionName: INSTR_TIME_GT
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_GT(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 455
    functionName: INSTR_TIME_GET_NANOSEC
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_GET_NANOSEC(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 458
    functionName: INSTR_TIME_GET_DOUBLE
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_GET_DOUBLE(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 461
    functionName: INSTR_TIME_GET_MILLISEC
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_GET_MILLISEC(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 464
    functionName: INSTR_TIME_GET_MICROSEC
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_GET_MICROSEC(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - partnatts
    - ','
    - step_id
    - ','
    - keyno
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: PruneCxtStateIdx
    functionSourceFile: /src/postgres/src/include/partitioning/partprune.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PruneCxtStateIdx(partnatts, step_id, keyno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: partition_bound_accepts_nulls
    functionSourceFile: /src/postgres/src/include/partitioning/partbounds.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: partition_bound_accepts_nulls(bi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: partition_bound_has_default
    functionSourceFile: /src/postgres/src/include/partitioning/partbounds.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: partition_bound_has_default(bi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: ISSJISHEAD
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISSJISHEAD(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: ISSJISTAIL
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISSJISTAIL(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _enc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: PG_UNUSED_ENCODING
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_UNUSED_ENCODING(_enc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _enc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 136
    functionName: PG_VALID_BE_ENCODING
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_VALID_BE_ENCODING(_enc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _enc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: PG_ENCODING_IS_CLIENT_ONLY
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_ENCODING_IS_CLIENT_ONLY(_enc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _enc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 142
    functionName: PG_VALID_ENCODING
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_VALID_ENCODING(_enc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _enc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: PG_VALID_FE_ENCODING
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_VALID_FE_ENCODING(_enc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - srcencoding
    - ','
    - destencoding
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 366
    functionName: CHECK_ENCODING_CONVERSION_ARGS
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_ENCODING_CONVERSION_ARGS(srcencoding,destencoding)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 375
    functionName: is_valid_unicode_codepoint
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_valid_unicode_codepoint(char32_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 381
    functionName: is_utf16_surrogate_first
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_utf16_surrogate_first(char32_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: is_utf16_surrogate_second
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_utf16_surrogate_second(char32_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - second
    argTypes:
    - char16_t
    - char16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 393
    functionName: surrogate_pair_to_codepoint
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char32_t
    signature: char32_t surrogate_pair_to_codepoint(char16_t first, char16_t second)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 421
    functionName: utf8_to_unicode
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char32_t
    signature: char32_t utf8_to_unicode(const unsigned char *c)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - c
    - utf8string
    argTypes:
    - char32_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 454
    functionName: unicode_to_utf8
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      unicode_to_utf8(char32_t c, unsigned char *utf8string)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 470
    functionName: unicode_utf8len
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int unicode_utf8len(char32_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: pairingheap_container
    functionSourceFile: /src/postgres/src/include/lib/pairingheap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pairingheap_container(type, membername, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: pairingheap_const_container
    functionSourceFile: /src/postgres/src/include/lib/pairingheap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pairingheap_const_container(type, membername, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: pairingheap_reset
    functionSourceFile: /src/postgres/src/include/lib/pairingheap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pairingheap_reset(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: pairingheap_is_empty
    functionSourceFile: /src/postgres/src/include/lib/pairingheap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pairingheap_is_empty(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: pairingheap_is_singular
    functionSourceFile: /src/postgres/src/include/lib/pairingheap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pairingheap_is_singular(h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: compare
      Src: /src/postgres/src/include/lib/qunique.h:33,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/qunique.h:35,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - array
    - elements
    - width
    argTypes:
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 39
    functionName: qunique
    functionSourceFile: /src/postgres/src/include/lib/qunique.h
    functionUses: 0
    functionsReached:
    - compare
    - memcpy
    linkageType: ''
    returnType: size_t
    signature: "size_t qunique(void *array, size_t elements, size_t width,\n\t\tint
      (*compare) (const void *, const void *))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: compare
      Src: /src/postgres/src/include/lib/qunique.h:59,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/qunique.h:61,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - array
    - elements
    - width
    - arg
    argTypes:
    - void*
    - size_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 65
    functionName: qunique_arg
    functionSourceFile: /src/postgres/src/include/lib/qunique.h
    functionUses: 0
    functionsReached:
    - compare
    - memcpy
    linkageType: ''
    returnType: size_t
    signature: "size_t qunique_arg(void *array, size_t elements, size_t width,\n\t\t\tint
      (*compare) (const void *, const void *, void *),\n\t\t\tvoid *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: ST_MAKE_PREFIX
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_MAKE_PREFIX(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: ST_MAKE_NAME
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_MAKE_NAME(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: ST_MAKE_NAME_
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_MAKE_NAME_(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 210
    functionName: DO_CHECK_FOR_INTERRUPTS
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_CHECK_FOR_INTERRUPTS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a_
    - ','
    - b_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 220
    functionName: DO_COMPARE
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_COMPARE(a_, b_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a_
    - ','
    - b_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 222
    functionName: DO_COMPARE
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_COMPARE(a_, b_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a_
    - ','
    - b_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 224
    functionName: DO_COMPARE
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_COMPARE(a_, b_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a_
    - ','
    - b_
    - ','
    - c_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 229
    functionName: DO_MED3
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_MED3(a_, b_, c_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a_
    - ','
    - n_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 234
    functionName: DO_SORT
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_SORT(a_, n_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a_
    - ','
    - b_
    - ','
    - n_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 244
    functionName: DO_SWAPN
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_SWAPN(a_, b_, n_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a_
    - ','
    - b_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 245
    functionName: DO_SWAP
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_SWAP(a_, b_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a_
    - ','
    - b_
    - ','
    - n_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 249
    functionName: DO_SWAPN
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_SWAPN(a_, b_, n_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a_
    - ','
    - b_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 250
    functionName: DO_SWAP
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_SWAP(a_, b_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:267,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:268,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:268,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:269,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 270
    functionName: "ST_ELEMENT_TYPE *\nST_MED3(ST_ELEMENT_TYPE * a,\n\t\tST_ELEMENT_TYPE
      * b,\n\t\tST_ELEMENT_TYPE * c\n\t\tST_SORT_PROTO_COMPARE\n\t\tST_SORT_PROTO_ARG)"
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached:
    - DO_COMPARE
    linkageType: ''
    returnType: pg_noinline
    signature: "pg_noinline ST_ELEMENT_TYPE *\nST_MED3(ST_ELEMENT_TYPE * a,\n\t\tST_ELEMENT_TYPE
      * b,\n\t\tST_ELEMENT_TYPE * c\n\t\tST_SORT_PROTO_COMPARE\n\t\tST_SORT_PROTO_ARG)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ST_POINTER_TYPE*
    - ST_POINTER_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 279
    functionName: ST_SWAP
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ST_SWAP(ST_POINTER_TYPE * a, ST_POINTER_TYPE * b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ST_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - n
    argTypes:
    - ST_POINTER_TYPE*
    - ST_POINTER_TYPE*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 286
    functionName: ST_SWAPN
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached:
    - ST_SWAP
    linkageType: ''
    returnType: void
    signature: void ST_SWAPN(ST_POINTER_TYPE * a, ST_POINTER_TYPE * b, size_t n)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: DO_CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/lib/sort_template.h:311,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:324,1
    - Dst: DO_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:326,1
    - Dst: DO_CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/lib/sort_template.h:333,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:334,1
    - Dst: DO_MED3
      Src: /src/postgres/src/include/lib/sort_template.h:351,1
    - Dst: DO_MED3
      Src: /src/postgres/src/include/lib/sort_template.h:352,1
    - Dst: DO_MED3
      Src: /src/postgres/src/include/lib/sort_template.h:353,1
    - Dst: DO_MED3
      Src: /src/postgres/src/include/lib/sort_template.h:355,1
    - Dst: DO_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:357,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:362,1
    - Dst: DO_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:366,1
    - Dst: DO_CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/lib/sort_template.h:370,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:372,1
    - Dst: DO_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:376,1
    - Dst: DO_CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/lib/sort_template.h:380,1
    - Dst: DO_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:384,1
    - Dst: Min
      Src: /src/postgres/src/include/lib/sort_template.h:389,1
    - Dst: DO_SWAPN
      Src: /src/postgres/src/include/lib/sort_template.h:390,1
    - Dst: Min
      Src: /src/postgres/src/include/lib/sort_template.h:391,1
    - Dst: DO_SWAPN
      Src: /src/postgres/src/include/lib/sort_template.h:392,1
    - Dst: DO_SORT
      Src: /src/postgres/src/include/lib/sort_template.h:398,1
    - Dst: DO_SORT
      Src: /src/postgres/src/include/lib/sort_template.h:409,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 78
    argCount: 2
    argNames:
    - data
    - ST_SORT_PROTO_ARG
    argTypes:
    - ST_ELEMENT_TYPE*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 416
    functionName: ST_SORT
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached:
    - DO_SWAP
    - DO_CHECK_FOR_INTERRUPTS
    - DO_COMPARE
    - DO_SORT
    - Min
    - DO_MED3
    - DO_SWAPN
    linkageType: ''
    returnType: ST_SCOPE
    signature: "ST_SCOPE ST_SORT(ST_ELEMENT_TYPE * data, size_t n\n\t\tST_SORT_PROTO_ELEMENT_SIZE\n\t\tST_SORT_PROTO_COMPARE\n\t\tST_SORT_PROTO_ARG)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 282
    functionName: DLIST_STATIC_INIT
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLIST_STATIC_INIT(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 283
    functionName: DCLIST_STATIC_INIT
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DCLIST_STATIC_INIT(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 284
    functionName: SLIST_STATIC_INIT
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_STATIC_INIT(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 303
    functionName: dlist_member_check
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dlist_member_check(head, node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 304
    functionName: dlist_check
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dlist_check(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 305
    functionName: slist_check
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: slist_check(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - head
    argTypes:
    - dlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 317
    functionName: dlist_init
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dlist_init(dlist_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 328
    functionName: dlist_node_init
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dlist_node_init(dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_check
      Src: /src/postgres/src/include/lib/ilist.h:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - dlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 341
    functionName: dlist_is_empty
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 1
    functionsReached:
    - dlist_check
    linkageType: ''
    returnType: bool
    signature: bool dlist_is_empty(const dlist_head *head)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlist_init
      Src: /src/postgres/src/include/lib/ilist.h:350,1
    - Dst: dlist_check
      Src: /src/postgres/src/include/lib/ilist.h:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 358
    functionName: dlist_push_head
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_check
    - dlist_init
    linkageType: ''
    returnType: void
    signature: void dlist_push_head(dlist_head *head, dlist_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlist_init
      Src: /src/postgres/src/include/lib/ilist.h:367,1
    - Dst: dlist_check
      Src: /src/postgres/src/include/lib/ilist.h:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 375
    functionName: dlist_push_tail
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 1
    functionsReached:
    - dlist_check
    - dlist_init
    linkageType: ''
    returnType: void
    signature: void dlist_push_tail(dlist_head *head, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - after
    - node
    argTypes:
    - dlist_node*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 387
    functionName: dlist_insert_after
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dlist_insert_after(dlist_node *after, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - before
    - node
    argTypes:
    - dlist_node*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 399
    functionName: dlist_insert_before
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dlist_insert_before(dlist_node *before, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 409
    functionName: dlist_delete
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dlist_delete(dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 422
    functionName: dlist_delete_thoroughly
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dlist_delete_thoroughly(dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_member_check
      Src: /src/postgres/src/include/lib/ilist.h:431,1
    - Dst: dlist_delete
      Src: /src/postgres/src/include/lib/ilist.h:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 433
    functionName: dlist_delete_from
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_member_check
    - dlist_delete
    linkageType: ''
    returnType: void
    signature: void dlist_delete_from(dlist_head *head, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_member_check
      Src: /src/postgres/src/include/lib/ilist.h:442,1
    - Dst: dlist_delete_thoroughly
      Src: /src/postgres/src/include/lib/ilist.h:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 444
    functionName: dlist_delete_from_thoroughly
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_member_check
    - dlist_delete_thoroughly
    linkageType: ''
    returnType: void
    signature: void dlist_delete_from_thoroughly(dlist_head *head, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:454,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/include/lib/ilist.h:454,1
    - Dst: dlist_delete
      Src: /src/postgres/src/include/lib/ilist.h:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - head
    argTypes:
    - dlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 458
    functionName: dlist_pop_head_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_is_empty
    - dlist_delete
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dlist_pop_head_node(dlist_head *head)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlist_delete
      Src: /src/postgres/src/include/lib/ilist.h:473,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/include/lib/ilist.h:474,1
    - Dst: dlist_check
      Src: /src/postgres/src/include/lib/ilist.h:476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 466
    functionDepth: 2
    functionLinenumber: 466
    functionLinenumberEnd: 477
    functionName: dlist_move_head
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_push_head
    - dlist_check
    - dlist_delete
    linkageType: ''
    returnType: void
    signature: void dlist_move_head(dlist_head *head, dlist_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlist_delete
      Src: /src/postgres/src/include/lib/ilist.h:492,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/include/lib/ilist.h:493,1
    - Dst: dlist_check
      Src: /src/postgres/src/include/lib/ilist.h:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 496
    functionName: dlist_move_tail
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_push_tail
    - dlist_check
    - dlist_delete
    linkageType: ''
    returnType: void
    signature: void dlist_move_tail(dlist_head *head, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 506
    functionName: dlist_has_next
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dlist_has_next(const dlist_head *head, const dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 516
    functionName: dlist_has_prev
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dlist_has_prev(const dlist_head *head, const dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:527,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 531
    functionName: dlist_node_is_detached
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool dlist_node_is_detached(const dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:539,1
    - Dst: dlist_has_next
      Src: /src/postgres/src/include/lib/ilist.h:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 541
    functionName: dlist_next_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_has_next
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dlist_next_node(dlist_head *head, dlist_node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:549,1
    - Dst: dlist_has_prev
      Src: /src/postgres/src/include/lib/ilist.h:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 551
    functionName: dlist_prev_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_has_prev
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dlist_prev_node(dlist_head *head, dlist_node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:557,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/include/lib/ilist.h:557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - 'off'
    argTypes:
    - dlist_head*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 559
    functionName: dlist_head_element_off
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_is_empty
    linkageType: ''
    returnType: void
    signature: 'void *

      dlist_head_element_off(dlist_head *head, size_t off)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_head_element_off
      Src: /src/postgres/src/include/lib/ilist.h:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - head
    argTypes:
    - dlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 564
    functionDepth: 2
    functionLinenumber: 564
    functionLinenumberEnd: 568
    functionName: dlist_head_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_head_element_off
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dlist_head_node(dlist_head *head)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:574,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/include/lib/ilist.h:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - 'off'
    argTypes:
    - dlist_head*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 576
    functionName: dlist_tail_element_off
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_is_empty
    linkageType: ''
    returnType: void
    signature: 'void *

      dlist_tail_element_off(dlist_head *head, size_t off)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_tail_element_off
      Src: /src/postgres/src/include/lib/ilist.h:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - head
    argTypes:
    - dlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 581
    functionDepth: 2
    functionLinenumber: 581
    functionLinenumberEnd: 585
    functionName: dlist_tail_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_tail_element_off
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dlist_tail_node(dlist_head *head)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 597
    functionName: dlist_container
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dlist_container(type, membername, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 606
    functionName: dlist_head_element
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dlist_head_element(type, membername, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 615
    functionName: dlist_tail_element
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dlist_tail_element(type, membername, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - iter
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 630
    functionName: dlist_foreach
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dlist_foreach(iter, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - iter
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 648
    functionName: dlist_foreach_modify
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dlist_foreach_modify(iter, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - iter
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 654
    functionDepth: 0
    functionLinenumber: 654
    functionLinenumberEnd: 661
    functionName: dlist_reverse_foreach
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dlist_reverse_foreach(iter, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_init
      Src: /src/postgres/src/include/lib/ilist.h:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - dclist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 670
    functionDepth: 1
    functionLinenumber: 670
    functionLinenumberEnd: 675
    functionName: dclist_init
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_init
    linkageType: ''
    returnType: void
    signature: void dclist_init(dclist_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:684,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/include/lib/ilist.h:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - dclist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 681
    functionDepth: 1
    functionLinenumber: 681
    functionLinenumberEnd: 686
    functionName: dclist_is_empty
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_is_empty
    linkageType: ''
    returnType: bool
    signature: bool dclist_is_empty(const dclist_head *head)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dclist_init
      Src: /src/postgres/src/include/lib/ilist.h:696,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/include/lib/ilist.h:698,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 692
    functionDepth: 2
    functionLinenumber: 692
    functionLinenumberEnd: 702
    functionName: dclist_push_head
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_push_head
    - dclist_init
    - Assert
    linkageType: ''
    returnType: void
    signature: void dclist_push_head(dclist_head *head, dlist_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dclist_init
      Src: /src/postgres/src/include/lib/ilist.h:712,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/include/lib/ilist.h:714,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 708
    functionDepth: 2
    functionLinenumber: 708
    functionLinenumberEnd: 718
    functionName: dclist_push_tail
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_push_tail
    - dclist_init
    - Assert
    linkageType: ''
    returnType: void
    signature: void dclist_push_tail(dclist_head *head, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_member_check
      Src: /src/postgres/src/include/lib/ilist.h:729,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:730,1
    - Dst: dlist_insert_after
      Src: /src/postgres/src/include/lib/ilist.h:732,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - head
    - after
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 736
    functionName: dclist_insert_after
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_member_check
    - Assert
    - dlist_insert_after
    linkageType: ''
    returnType: void
    signature: void dclist_insert_after(dclist_head *head, dlist_node *after, dlist_node
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_member_check
      Src: /src/postgres/src/include/lib/ilist.h:747,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:748,1
    - Dst: dlist_insert_before
      Src: /src/postgres/src/include/lib/ilist.h:750,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - head
    - before
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 744
    functionDepth: 1
    functionLinenumber: 744
    functionLinenumberEnd: 754
    functionName: dclist_insert_before
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_member_check
    - dlist_insert_before
    - Assert
    linkageType: ''
    returnType: void
    signature: void dclist_insert_before(dclist_head *head, dlist_node *before, dlist_node
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:765,1
    - Dst: dlist_delete_from
      Src: /src/postgres/src/include/lib/ilist.h:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 762
    functionDepth: 2
    functionLinenumber: 762
    functionLinenumberEnd: 769
    functionName: dclist_delete_from
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_delete_from
    linkageType: ''
    returnType: void
    signature: void dclist_delete_from(dclist_head *head, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:778,1
    - Dst: dlist_delete_from_thoroughly
      Src: /src/postgres/src/include/lib/ilist.h:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 782
    functionName: dclist_delete_from_thoroughly
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_delete_from_thoroughly
    linkageType: ''
    returnType: void
    signature: void dclist_delete_from_thoroughly(dclist_head *head, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:793,1
    - Dst: dlist_pop_head_node
      Src: /src/postgres/src/include/lib/ilist.h:795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - head
    argTypes:
    - dclist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 788
    functionDepth: 2
    functionLinenumber: 788
    functionLinenumberEnd: 798
    functionName: dclist_pop_head_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_pop_head_node
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dclist_pop_head_node(dclist_head *head)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_member_check
      Src: /src/postgres/src/include/lib/ilist.h:810,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:811,1
    - Dst: dlist_move_head
      Src: /src/postgres/src/include/lib/ilist.h:813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 807
    functionDepth: 3
    functionLinenumber: 807
    functionLinenumberEnd: 814
    functionName: dclist_move_head
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_member_check
    - dlist_move_head
    - Assert
    linkageType: ''
    returnType: void
    signature: void dclist_move_head(dclist_head *head, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_member_check
      Src: /src/postgres/src/include/lib/ilist.h:826,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:827,1
    - Dst: dlist_move_tail
      Src: /src/postgres/src/include/lib/ilist.h:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 823
    functionDepth: 3
    functionLinenumber: 823
    functionLinenumberEnd: 830
    functionName: dclist_move_tail
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_member_check
    - dlist_move_tail
    - Assert
    linkageType: ''
    returnType: void
    signature: void dclist_move_tail(dclist_head *head, dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_member_check
      Src: /src/postgres/src/include/lib/ilist.h:841,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:842,1
    - Dst: dlist_has_next
      Src: /src/postgres/src/include/lib/ilist.h:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 845
    functionName: dclist_has_next
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_member_check
    - dlist_has_next
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool dclist_has_next(const dclist_head *head, const dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_member_check
      Src: /src/postgres/src/include/lib/ilist.h:856,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:857,1
    - Dst: dlist_has_prev
      Src: /src/postgres/src/include/lib/ilist.h:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 853
    functionDepth: 1
    functionLinenumber: 853
    functionLinenumberEnd: 860
    functionName: dclist_has_prev
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - dlist_member_check
    - dlist_has_prev
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool dclist_has_prev(const dclist_head *head, const dlist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:869,1
    - Dst: dlist_next_node
      Src: /src/postgres/src/include/lib/ilist.h:871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 866
    functionDepth: 2
    functionLinenumber: 866
    functionLinenumberEnd: 872
    functionName: dclist_next_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_next_node
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dclist_next_node(dclist_head *head, dlist_node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:881,1
    - Dst: dlist_prev_node
      Src: /src/postgres/src/include/lib/ilist.h:883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dclist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 878
    functionDepth: 2
    functionLinenumber: 878
    functionLinenumberEnd: 884
    functionName: dclist_prev_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_prev_node
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dclist_prev_node(dclist_head *head, dlist_node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:890,1
    - Dst: dclist_is_empty
      Src: /src/postgres/src/include/lib/ilist.h:890,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - 'off'
    argTypes:
    - dclist_head*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 887
    functionDepth: 2
    functionLinenumber: 887
    functionLinenumberEnd: 893
    functionName: dclist_head_element_off
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dclist_is_empty
    linkageType: ''
    returnType: void
    signature: 'void *

      dclist_head_element_off(dclist_head *head, size_t off)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:902,1
    - Dst: dlist_head_element_off
      Src: /src/postgres/src/include/lib/ilist.h:904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - dclist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 899
    functionDepth: 2
    functionLinenumber: 899
    functionLinenumberEnd: 905
    functionName: dclist_head_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_head_element_off
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dclist_head_node(dclist_head *head)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:911,1
    - Dst: dclist_is_empty
      Src: /src/postgres/src/include/lib/ilist.h:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - 'off'
    argTypes:
    - dclist_head*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 908
    functionDepth: 2
    functionLinenumber: 908
    functionLinenumberEnd: 914
    functionName: dclist_tail_element_off
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dclist_is_empty
    linkageType: ''
    returnType: void
    signature: 'void *

      dclist_tail_element_off(dclist_head *head, size_t off)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:922,1
    - Dst: dlist_tail_element_off
      Src: /src/postgres/src/include/lib/ilist.h:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - dclist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 919
    functionDepth: 2
    functionLinenumber: 919
    functionLinenumberEnd: 925
    functionName: dclist_tail_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_tail_element_off
    linkageType: ''
    returnType: dlist_node
    signature: 'dlist_node *

      dclist_tail_node(dclist_head *head)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:934,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/include/lib/ilist.h:934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - dclist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 931
    functionDepth: 1
    functionLinenumber: 931
    functionLinenumberEnd: 937
    functionName: dclist_count
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_is_empty
    linkageType: ''
    returnType: uint32
    signature: uint32 dclist_count(const dclist_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 949
    functionName: dclist_container
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dclist_container(type, membername, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 958
    functionName: dclist_head_element
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dclist_head_element(type, membername, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 967
    functionName: dclist_tail_element
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dclist_tail_element(type, membername, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - iter
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 970
    functionDepth: 0
    functionLinenumber: 970
    functionLinenumberEnd: 972
    functionName: dclist_foreach
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dclist_foreach(iter, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - iter
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 975
    functionName: dclist_foreach_modify
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dclist_foreach_modify(iter, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - iter
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 976
    functionDepth: 0
    functionLinenumber: 976
    functionLinenumberEnd: 978
    functionName: dclist_reverse_foreach
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dclist_reverse_foreach(iter, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - head
    argTypes:
    - slist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 985
    functionDepth: 0
    functionLinenumber: 985
    functionLinenumberEnd: 989
    functionName: slist_init
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void slist_init(slist_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slist_check
      Src: /src/postgres/src/include/lib/ilist.h:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - slist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 994
    functionDepth: 0
    functionLinenumber: 994
    functionLinenumberEnd: 1000
    functionName: slist_is_empty
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - slist_check
    linkageType: ''
    returnType: bool
    signature: bool slist_is_empty(const slist_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slist_check
      Src: /src/postgres/src/include/lib/ilist.h:1011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - slist_head*
    - slist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1005
    functionDepth: 0
    functionLinenumber: 1005
    functionLinenumberEnd: 1012
    functionName: slist_push_head
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - slist_check
    linkageType: ''
    returnType: void
    signature: void slist_push_head(slist_head *head, slist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - after
    - node
    argTypes:
    - slist_node*
    - slist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1017
    functionDepth: 0
    functionLinenumber: 1017
    functionLinenumberEnd: 1022
    functionName: slist_insert_after
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void slist_insert_after(slist_node *after, slist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:1032,1
    - Dst: slist_is_empty
      Src: /src/postgres/src/include/lib/ilist.h:1032,1
    - Dst: slist_check
      Src: /src/postgres/src/include/lib/ilist.h:1035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - head
    argTypes:
    - slist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1037
    functionName: slist_pop_head_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - slist_check
    - slist_is_empty
    linkageType: ''
    returnType: slist_node
    signature: 'slist_node *

      slist_pop_head_node(slist_head *head)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slist_check
      Src: /src/postgres/src/include/lib/ilist.h:1045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - slist_head*
    - slist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1048
    functionName: slist_has_next
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - slist_check
    linkageType: ''
    returnType: bool
    signature: bool slist_has_next(const slist_head *head, const slist_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:1056,1
    - Dst: slist_has_next
      Src: /src/postgres/src/include/lib/ilist.h:1056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - slist_head*
    - slist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1053
    functionDepth: 1
    functionLinenumber: 1053
    functionLinenumberEnd: 1058
    functionName: slist_next_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - slist_has_next
    linkageType: ''
    returnType: slist_node
    signature: 'slist_node *

      slist_next_node(slist_head *head, slist_node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/ilist.h:1064,1
    - Dst: slist_is_empty
      Src: /src/postgres/src/include/lib/ilist.h:1064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - 'off'
    argTypes:
    - slist_head*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1066
    functionName: slist_head_element_off
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - Assert
    - slist_is_empty
    linkageType: ''
    returnType: void
    signature: 'void *

      slist_head_element_off(slist_head *head, size_t off)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slist_head_element_off
      Src: /src/postgres/src/include/lib/ilist.h:1074,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - head
    argTypes:
    - slist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1071
    functionDepth: 2
    functionLinenumber: 1071
    functionLinenumberEnd: 1075
    functionName: slist_head_node
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached:
    - slist_head_element_off
    linkageType: ''
    returnType: slist_node
    signature: 'slist_node *

      slist_head_node(slist_head *head)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - iter
    argTypes:
    - slist_mutable_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1083
    functionDepth: 0
    functionLinenumber: 1083
    functionLinenumberEnd: 1098
    functionName: slist_delete_current
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void slist_delete_current(slist_mutable_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1106
    functionDepth: 0
    functionLinenumber: 1106
    functionLinenumberEnd: 1110
    functionName: slist_container
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: slist_container(type, membername, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - membername
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1116
    functionDepth: 0
    functionLinenumber: 1116
    functionLinenumberEnd: 1119
    functionName: slist_head_element
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: slist_head_element(type, membername, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - iter
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1132
    functionDepth: 0
    functionLinenumber: 1132
    functionLinenumberEnd: 1138
    functionName: slist_foreach
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: slist_foreach(iter, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - iter
    - ','
    - lhead
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1148
    functionDepth: 0
    functionLinenumber: 1148
    functionLinenumberEnd: 1158
    functionName: slist_foreach_modify
    functionSourceFile: /src/postgres/src/include/lib/ilist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: slist_foreach_modify(iter, lhead)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - str
    - data
    - len
    argTypes:
    - StringInfo
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 163
    functionName: initReadOnlyStringInfo
    functionSourceFile: /src/postgres/src/include/lib/stringinfo.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initReadOnlyStringInfo(StringInfo str, char *data, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/stringinfo.h:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - str
    - data
    - len
    argTypes:
    - StringInfo
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 183
    functionName: initStringInfoFromString
    functionSourceFile: /src/postgres/src/include/lib/stringinfo.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void initStringInfoFromString(StringInfo str, char *data, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: appendStringInfoCharMacro
    functionSourceFile: /src/postgres/src/include/lib/stringinfo.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: appendStringInfoCharMacro(str,ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 166
    functionName: RT_MAKE_PREFIX
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_MAKE_PREFIX(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    functionName: RT_MAKE_NAME
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_MAKE_NAME(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    functionName: RT_MAKE_NAME_
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_MAKE_NAME_(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: RT_STR
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_STR(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: RT_STR_
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_STR_(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - shift
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 333
    functionName: RT_GET_KEY_CHUNK
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_GET_KEY_CHUNK(key, shift)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 336
    functionName: RT_BM_IDX
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_BM_IDX(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 337
    functionName: RT_BM_BIT
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_BM_BIT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 372
    functionName: RT_SLAB_BLOCK_SIZE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_SLAB_BLOCK_SIZE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 403
    functionName: RT_PTR_ALLOC_IS_VALID
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_PTR_ALLOC_IS_VALID(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 407
    functionName: RT_PTR_ALLOC_IS_VALID
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_PTR_ALLOC_IS_VALID(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 434
    functionName: RT_GET_VALUE_SIZE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_GET_VALUE_SIZE(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 436
    functionName: RT_GET_VALUE_SIZE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_GET_VALUE_SIZE(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RT_GET_VALUE_SIZE
      Src: /src/postgres/src/include/lib/radixtree.h:448,1
    - Dst: RT_GET_VALUE_SIZE
      Src: /src/postgres/src/include/lib/radixtree.h:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - value_p
    argTypes:
    - RT_VALUE_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 456
    functionName: RT_VALUE_IS_EMBEDDABLE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_GET_VALUE_SIZE
    linkageType: ''
    returnType: bool
    signature: bool RT_VALUE_IS_EMBEDDABLE(RT_VALUE_TYPE * value_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - child
    argTypes:
    - RT_PTR_ALLOC
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 482
    functionName: RT_CHILDPTR_IS_VALUE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RT_CHILDPTR_IS_VALUE(RT_PTR_ALLOC child)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsa_get_address
      Src: /src/postgres/src/include/lib/radixtree.h:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - RT_RADIX_TREE*
    - RT_CHILD_PTR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 769
    functionName: RT_PTR_SET_LOCAL
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - dsa_get_address
    linkageType: ''
    returnType: void
    signature: void RT_PTR_SET_LOCAL(RT_RADIX_TREE * tree, RT_CHILD_PTR * node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - chunk
    argTypes:
    - RT_NODE_48*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 774
    functionDepth: 0
    functionLinenumber: 774
    functionLinenumberEnd: 778
    functionName: RT_NODE_48_IS_CHUNK_USED
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RT_NODE_48_IS_CHUNK_USED(RT_NODE_48 * node, uint8 chunk)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - chunk
    argTypes:
    - RT_NODE_48*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 780
    functionDepth: 0
    functionLinenumber: 780
    functionLinenumberEnd: 784
    functionName: RT_NODE_48_GET_CHILD
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_NODE_48_GET_CHILD(RT_NODE_48 * node, uint8 chunk)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RT_BM_IDX
      Src: /src/postgres/src/include/lib/radixtree.h:790,1
    - Dst: RT_BM_BIT
      Src: /src/postgres/src/include/lib/radixtree.h:791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - chunk
    argTypes:
    - RT_NODE_256*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 794
    functionName: RT_NODE_256_IS_CHUNK_USED
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_BM_IDX
    - RT_BM_BIT
    linkageType: ''
    returnType: bool
    signature: bool RT_NODE_256_IS_CHUNK_USED(RT_NODE_256 * node, uint8 chunk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:799,1
    - Dst: RT_NODE_256_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - chunk
    argTypes:
    - RT_NODE_256*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 796
    functionDepth: 2
    functionLinenumber: 796
    functionLinenumberEnd: 801
    functionName: RT_NODE_256_GET_CHILD
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - RT_NODE_256_IS_CHUNK_USED
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_NODE_256_GET_CHILD(RT_NODE_256 * node, uint8 chunk)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_leftmost_one_pos64
      Src: /src/postgres/src/include/lib/radixtree.h:812,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - key
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 806
    functionDepth: 2
    functionLinenumber: 806
    functionLinenumberEnd: 813
    functionName: RT_KEY_GET_SHIFT
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - pg_leftmost_one_pos64
    linkageType: ''
    returnType: int
    signature: int RT_KEY_GET_SHIFT(uint64 key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/lib/radixtree.h:824,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - shift
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 825
    functionName: RT_SHIFT_GET_MAX_VAL
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 RT_SHIFT_GET_MAX_VAL(int shift)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsa_allocate
      Src: /src/postgres/src/include/lib/radixtree.h:840,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/include/lib/radixtree.h:842,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:846,1
    - Dst: memset
      Src: /src/postgres/src/include/lib/radixtree.h:854,1
    - Dst: memset
      Src: /src/postgres/src/include/lib/radixtree.h:857,1
    - Dst: memset
      Src: /src/postgres/src/include/lib/radixtree.h:863,1
    - Dst: memset
      Src: /src/postgres/src/include/lib/radixtree.h:864,1
    - Dst: memset
      Src: /src/postgres/src/include/lib/radixtree.h:868,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/include/lib/radixtree.h:871,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - tree
    - kind
    - size_class
    argTypes:
    - RT_RADIX_TREE*
    - uint8
    - RT_SIZE_CLASS
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 830
    functionDepth: 2
    functionLinenumber: 830
    functionLinenumberEnd: 888
    functionName: RT_ALLOC_NODE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    - pg_unreachable
    - memset
    - dsa_allocate
    - RT_PTR_SET_LOCAL
    linkageType: ''
    returnType: RT_CHILD_PTR
    signature: RT_CHILD_PTR RT_ALLOC_NODE(RT_RADIX_TREE * tree, const uint8 kind,
      const RT_SIZE_CLASS size_class)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsa_allocate
      Src: /src/postgres/src/include/lib/radixtree.h:899,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:900,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/include/lib/radixtree.h:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tree
    - allocsize
    argTypes:
    - RT_RADIX_TREE*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 893
    functionDepth: 2
    functionLinenumber: 893
    functionLinenumberEnd: 910
    functionName: RT_ALLOC_LEAF
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    - RT_PTR_SET_LOCAL
    - dsa_allocate
    linkageType: ''
    returnType: RT_CHILD_PTR
    signature: RT_CHILD_PTR RT_ALLOC_LEAF(RT_RADIX_TREE * tree, size_t allocsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newnode
    - oldnode
    argTypes:
    - RT_CHILD_PTR
    - RT_CHILD_PTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 916
    functionDepth: 0
    functionLinenumber: 916
    functionLinenumberEnd: 920
    functionName: RT_COPY_COMMON
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RT_COPY_COMMON(RT_CHILD_PTR newnode, RT_CHILD_PTR oldnode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:945,1
    - Dst: dsa_free
      Src: /src/postgres/src/include/lib/radixtree.h:949,1
    - Dst: pfree
      Src: /src/postgres/src/include/lib/radixtree.h:951,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - RT_RADIX_TREE*
    - RT_CHILD_PTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 923
    functionDepth: 1
    functionLinenumber: 923
    functionLinenumberEnd: 953
    functionName: RT_FREE_NODE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    - dsa_free
    linkageType: ''
    returnType: void
    signature: void RT_FREE_NODE(RT_RADIX_TREE * tree, RT_CHILD_PTR node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:958,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:963,1
    - Dst: dsa_free
      Src: /src/postgres/src/include/lib/radixtree.h:967,1
    - Dst: pfree
      Src: /src/postgres/src/include/lib/radixtree.h:969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tree
    - leaf
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 971
    functionName: RT_FREE_LEAF
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    - dsa_free
    linkageType: ''
    returnType: void
    signature: void RT_FREE_LEAF(RT_RADIX_TREE * tree, RT_PTR_ALLOC leaf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/lib/radixtree.h:1008,1
    - Dst: vector8_load
      Src: /src/postgres/src/include/lib/radixtree.h:1011,1
    - Dst: vector8_load
      Src: /src/postgres/src/include/lib/radixtree.h:1012,1
    - Dst: vector8_eq
      Src: /src/postgres/src/include/lib/radixtree.h:1013,1
    - Dst: vector8_eq
      Src: /src/postgres/src/include/lib/radixtree.h:1014,1
    - Dst: vector8_highbit_mask
      Src: /src/postgres/src/include/lib/radixtree.h:1017,1
    - Dst: vector8_highbit_mask
      Src: /src/postgres/src/include/lib/radixtree.h:1017,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/lib/radixtree.h:1020,1
    - Dst: pg_rightmost_one_pos32
      Src: /src/postgres/src/include/lib/radixtree.h:1024,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1026,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - node
    - chunk
    argTypes:
    - RT_NODE_16*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 979
    functionDepth: 2
    functionLinenumber: 979
    functionLinenumberEnd: 1031
    functionName: RT_NODE_16_SEARCH_EQ
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - vector8_load
    - Assert
    - vector8_broadcast
    - pg_rightmost_one_pos32
    - vector8_highbit_mask
    - vector8_eq
    - UINT64CONST
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_NODE_16_SEARCH_EQ(RT_NODE_16 * node, uint8 chunk)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1042,1
    - Dst: RT_NODE_16_SEARCH_EQ
      Src: /src/postgres/src/include/lib/radixtree.h:1058,1
    - Dst: RT_NODE_48_GET_CHILD
      Src: /src/postgres/src/include/lib/radixtree.h:1067,1
    - Dst: RT_NODE_256_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:1073,1
    - Dst: RT_NODE_256_GET_CHILD
      Src: /src/postgres/src/include/lib/radixtree.h:1076,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/include/lib/radixtree.h:1079,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - node
    - chunk
    argTypes:
    - RT_NODE*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1038
    functionDepth: 3
    functionLinenumber: 1038
    functionLinenumberEnd: 1081
    functionName: RT_NODE_SEARCH
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_NODE_16_SEARCH_EQ
    - Assert
    - RT_NODE_256_GET_CHILD
    - RT_NODE_48_GET_CHILD
    - pg_unreachable
    - RT_NODE_256_IS_CHUNK_USED
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_NODE_SEARCH(RT_NODE * node, uint8 chunk)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1098,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1104,1
    - Dst: RT_PTR_ALLOC_IS_VALID
      Src: /src/postgres/src/include/lib/radixtree.h:1104,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:1111,1
    - Dst: RT_NODE_SEARCH
      Src: /src/postgres/src/include/lib/radixtree.h:1112,1
    - Dst: RT_GET_KEY_CHUNK
      Src: /src/postgres/src/include/lib/radixtree.h:1112,1
    - Dst: RT_CHILDPTR_IS_VALUE
      Src: /src/postgres/src/include/lib/radixtree.h:1120,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:1124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1090
    functionDepth: 4
    functionLinenumber: 1090
    functionLinenumberEnd: 1127
    functionName: 'RT_VALUE_TYPE *

      RT_FIND(RT_RADIX_TREE * tree, uint64 key)'
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_NODE_SEARCH
    - RT_GET_KEY_CHUNK
    - Assert
    - RT_PTR_ALLOC_IS_VALID
    - RT_CHILDPTR_IS_VALUE
    - RT_PTR_SET_LOCAL
    linkageType: ''
    returnType: RT_SCOPE
    signature: 'RT_SCOPE RT_VALUE_TYPE *

      RT_FIND(RT_RADIX_TREE * tree, uint64 key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1131
    functionDepth: 0
    functionLinenumber: 1131
    functionLinenumberEnd: 1133
    functionName: RT_NODE_MUST_GROW
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_NODE_MUST_GROW(node)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - node
    - chunk
    - count
    argTypes:
    - RT_NODE_4*
    - uint8
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1138
    functionDepth: 0
    functionLinenumber: 1138
    functionLinenumberEnd: 1150
    functionName: RT_NODE_4_GET_INSERTPOS
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int RT_NODE_4_GET_INSERTPOS(RT_NODE_4 * node, uint8 chunk, int count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1187,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/lib/radixtree.h:1209,1
    - Dst: vector8_load
      Src: /src/postgres/src/include/lib/radixtree.h:1210,1
    - Dst: vector8_load
      Src: /src/postgres/src/include/lib/radixtree.h:1211,1
    - Dst: vector8_min
      Src: /src/postgres/src/include/lib/radixtree.h:1212,1
    - Dst: vector8_min
      Src: /src/postgres/src/include/lib/radixtree.h:1213,1
    - Dst: vector8_eq
      Src: /src/postgres/src/include/lib/radixtree.h:1214,1
    - Dst: vector8_eq
      Src: /src/postgres/src/include/lib/radixtree.h:1215,1
    - Dst: vector8_highbit_mask
      Src: /src/postgres/src/include/lib/radixtree.h:1216,1
    - Dst: vector8_highbit_mask
      Src: /src/postgres/src/include/lib/radixtree.h:1216,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1218,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/lib/radixtree.h:1218,1
    - Dst: pg_rightmost_one_pos32
      Src: /src/postgres/src/include/lib/radixtree.h:1219,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1221,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - node
    - chunk
    argTypes:
    - RT_NODE_16*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1156
    functionDepth: 2
    functionLinenumber: 1156
    functionLinenumberEnd: 1226
    functionName: RT_NODE_16_GET_INSERTPOS
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - vector8_load
    - vector8_min
    - Assert
    - vector8_highbit_mask
    - pg_rightmost_one_pos32
    - vector8_broadcast
    - vector8_eq
    - UINT64CONST
    linkageType: ''
    returnType: int
    signature: int RT_NODE_16_GET_INSERTPOS(RT_NODE_16 * node, uint8 chunk)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - chunks
    - children
    - count
    - insertpos
    argTypes:
    - uint8*
    - RT_PTR_ALLOC*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1229
    functionDepth: 0
    functionLinenumber: 1229
    functionLinenumberEnd: 1245
    functionName: RT_SHIFT_ARRAYS_FOR_INSERT
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RT_SHIFT_ARRAYS_FOR_INSERT(uint8 *chunks, RT_PTR_ALLOC * children,
      int count, int insertpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - dst_chunks
    - dst_children
    - src_chunks
    - src_children
    - count
    - insertpos
    argTypes:
    - uint8*
    - RT_PTR_ALLOC*
    - uint8*
    - RT_PTR_ALLOC*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1251
    functionDepth: 0
    functionLinenumber: 1251
    functionLinenumberEnd: 1266
    functionName: RT_COPY_ARRAYS_FOR_INSERT
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void RT_COPY_ARRAYS_FOR_INSERT(uint8 *dst_chunks, RT_PTR_ALLOC * dst_children,\n\t\t\t\t\t\t
      \ uint8 *src_chunks, RT_PTR_ALLOC * src_children,\n\t\t\t\t\t\t  int count,
      int insertpos)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RT_BM_IDX
      Src: /src/postgres/src/include/lib/radixtree.h:1272,1
    - Dst: RT_BM_BIT
      Src: /src/postgres/src/include/lib/radixtree.h:1273,1
    - Dst: RT_VERIFY_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1279,1
    - Dst: RT_NODE_256_GET_CHILD
      Src: /src/postgres/src/include/lib/radixtree.h:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tree
    - node
    - chunk
    argTypes:
    - RT_RADIX_TREE*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1268
    functionDepth: 3
    functionLinenumber: 1268
    functionLinenumberEnd: 1282
    functionName: RT_ADD_CHILD_256
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_BM_IDX
    - RT_VERIFY_NODE
    - RT_BM_BIT
    - RT_NODE_256_GET_CHILD
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_ADD_CHILD_256(RT_RADIX_TREE * tree, RT_CHILD_PTR node, uint8 chunk)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1294,1
    - Dst: RT_COPY_COMMON
      Src: /src/postgres/src/include/lib/radixtree.h:1298,1
    - Dst: RT_BM_IDX
      Src: /src/postgres/src/include/lib/radixtree.h:1299,1
    - Dst: RT_FREE_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1326,1
    - Dst: RT_ADD_CHILD_256
      Src: /src/postgres/src/include/lib/radixtree.h:1328,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1284
    functionDepth: 4
    functionLinenumber: 1284
    functionLinenumberEnd: 1329
    functionName: "RT_PTR_ALLOC *\nRT_GROW_NODE_48(RT_RADIX_TREE * tree, RT_PTR_ALLOC
      * parent_slot, RT_CHILD_PTR node,\n\t\t\t\tuint8 chunk)"
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_ALLOC_NODE
    - RT_COPY_COMMON
    - RT_ADD_CHILD_256
    - RT_BM_IDX
    - RT_FREE_NODE
    linkageType: ''
    returnType: pg_noinline
    signature: "pg_noinline RT_PTR_ALLOC *\nRT_GROW_NODE_48(RT_RADIX_TREE * tree,
      RT_PTR_ALLOC * parent_slot, RT_CHILD_PTR node,\n\t\t\t\tuint8 chunk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RT_BM_IDX
      Src: /src/postgres/src/include/lib/radixtree.h:1341,1
    - Dst: bmw_rightmost_one_pos
      Src: /src/postgres/src/include/lib/radixtree.h:1354,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1355,1
    - Dst: RT_VERIFY_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1364,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - tree
    - node
    - chunk
    argTypes:
    - RT_RADIX_TREE*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1331
    functionDepth: 1
    functionLinenumber: 1331
    functionLinenumberEnd: 1367
    functionName: RT_ADD_CHILD_48
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_BM_IDX
    - RT_VERIFY_NODE
    - Assert
    - bmw_rightmost_one_pos
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_ADD_CHILD_48(RT_RADIX_TREE * tree, RT_CHILD_PTR node, uint8 chunk)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1381,1
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1384,1
    - Dst: RT_COPY_COMMON
      Src: /src/postgres/src/include/lib/radixtree.h:1388,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1389,1
    - Dst: RT_NODE_16_GET_INSERTPOS
      Src: /src/postgres/src/include/lib/radixtree.h:1390,1
    - Dst: RT_COPY_ARRAYS_FOR_INSERT
      Src: /src/postgres/src/include/lib/radixtree.h:1391,1
    - Dst: RT_VERIFY_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1399,1
    - Dst: RT_FREE_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1402,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1414,1
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1417,1
    - Dst: RT_COPY_COMMON
      Src: /src/postgres/src/include/lib/radixtree.h:1421,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/radixtree.h:1424,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1431,1
    - Dst: RT_BM_IDX
      Src: /src/postgres/src/include/lib/radixtree.h:1436,1
    - Dst: RT_BM_BIT
      Src: /src/postgres/src/include/lib/radixtree.h:1437,1
    - Dst: RT_VERIFY_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1446,1
    - Dst: RT_FREE_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1450,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1369
    functionDepth: 3
    functionLinenumber: 1369
    functionLinenumberEnd: 1454
    functionName: "RT_PTR_ALLOC *\nRT_GROW_NODE_16(RT_RADIX_TREE * tree, RT_PTR_ALLOC
      * parent_slot, RT_CHILD_PTR node,\n\t\t\t\tuint8 chunk)"
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_ALLOC_NODE
    - RT_COPY_COMMON
    - RT_NODE_16_GET_INSERTPOS
    - memcpy
    - Assert
    - RT_VERIFY_NODE
    - RT_BM_BIT
    - RT_COPY_ARRAYS_FOR_INSERT
    - RT_BM_IDX
    - RT_FREE_NODE
    linkageType: ''
    returnType: pg_noinline
    signature: "pg_noinline RT_PTR_ALLOC *\nRT_GROW_NODE_16(RT_RADIX_TREE * tree,
      RT_PTR_ALLOC * parent_slot, RT_CHILD_PTR node,\n\t\t\t\tuint8 chunk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RT_NODE_16_GET_INSERTPOS
      Src: /src/postgres/src/include/lib/radixtree.h:1460,1
    - Dst: RT_SHIFT_ARRAYS_FOR_INSERT
      Src: /src/postgres/src/include/lib/radixtree.h:1463,1
    - Dst: RT_VERIFY_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - tree
    - node
    - chunk
    argTypes:
    - RT_RADIX_TREE*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1456
    functionDepth: 3
    functionLinenumber: 1456
    functionLinenumberEnd: 1473
    functionName: RT_ADD_CHILD_16
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_VERIFY_NODE
    - RT_SHIFT_ARRAYS_FOR_INSERT
    - RT_NODE_16_GET_INSERTPOS
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_ADD_CHILD_16(RT_RADIX_TREE * tree, RT_CHILD_PTR node, uint8 chunk)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1485,1
    - Dst: RT_COPY_COMMON
      Src: /src/postgres/src/include/lib/radixtree.h:1489,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1490,1
    - Dst: RT_NODE_4_GET_INSERTPOS
      Src: /src/postgres/src/include/lib/radixtree.h:1491,1
    - Dst: RT_COPY_ARRAYS_FOR_INSERT
      Src: /src/postgres/src/include/lib/radixtree.h:1492,1
    - Dst: RT_VERIFY_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1500,1
    - Dst: RT_FREE_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1475
    functionDepth: 3
    functionLinenumber: 1475
    functionLinenumberEnd: 1507
    functionName: "RT_PTR_ALLOC *\nRT_GROW_NODE_4(RT_RADIX_TREE * tree, RT_PTR_ALLOC
      * parent_slot, RT_CHILD_PTR node,\n\t\t\t   uint8 chunk)"
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_ALLOC_NODE
    - RT_COPY_COMMON
    - Assert
    - RT_VERIFY_NODE
    - RT_COPY_ARRAYS_FOR_INSERT
    - RT_FREE_NODE
    - RT_NODE_4_GET_INSERTPOS
    linkageType: ''
    returnType: pg_noinline
    signature: "pg_noinline RT_PTR_ALLOC *\nRT_GROW_NODE_4(RT_RADIX_TREE * tree, RT_PTR_ALLOC
      * parent_slot, RT_CHILD_PTR node,\n\t\t\t   uint8 chunk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RT_NODE_4_GET_INSERTPOS
      Src: /src/postgres/src/include/lib/radixtree.h:1514,1
    - Dst: RT_SHIFT_ARRAYS_FOR_INSERT
      Src: /src/postgres/src/include/lib/radixtree.h:1517,1
    - Dst: RT_VERIFY_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - tree
    - node
    - chunk
    argTypes:
    - RT_RADIX_TREE*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1509
    functionDepth: 1
    functionLinenumber: 1509
    functionLinenumberEnd: 1527
    functionName: RT_ADD_CHILD_4
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_VERIFY_NODE
    - RT_SHIFT_ARRAYS_FOR_INSERT
    - RT_NODE_4_GET_INSERTPOS
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_ADD_CHILD_4(RT_RADIX_TREE * tree, RT_CHILD_PTR node, uint8 chunk)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/radixtree.h:1547,1
    - Dst: RT_NODE_MUST_GROW
      Src: /src/postgres/src/include/lib/radixtree.h:1547,1
    - Dst: RT_GROW_NODE_4
      Src: /src/postgres/src/include/lib/radixtree.h:1548,1
    - Dst: RT_ADD_CHILD_4
      Src: /src/postgres/src/include/lib/radixtree.h:1550,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/radixtree.h:1554,1
    - Dst: RT_NODE_MUST_GROW
      Src: /src/postgres/src/include/lib/radixtree.h:1554,1
    - Dst: RT_GROW_NODE_16
      Src: /src/postgres/src/include/lib/radixtree.h:1555,1
    - Dst: RT_ADD_CHILD_16
      Src: /src/postgres/src/include/lib/radixtree.h:1557,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/radixtree.h:1561,1
    - Dst: RT_NODE_MUST_GROW
      Src: /src/postgres/src/include/lib/radixtree.h:1561,1
    - Dst: RT_GROW_NODE_48
      Src: /src/postgres/src/include/lib/radixtree.h:1562,1
    - Dst: RT_ADD_CHILD_48
      Src: /src/postgres/src/include/lib/radixtree.h:1564,1
    - Dst: RT_ADD_CHILD_256
      Src: /src/postgres/src/include/lib/radixtree.h:1567,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/include/lib/radixtree.h:1569,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - tree
    - parent_slot
    - node
    - chunk
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1537
    functionDepth: 4
    functionLinenumber: 1537
    functionLinenumberEnd: 1571
    functionName: RT_NODE_INSERT
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_NODE_MUST_GROW
    - RT_ADD_CHILD_48
    - RT_GROW_NODE_4
    - RT_ADD_CHILD_256
    - RT_GROW_NODE_16
    - unlikely
    - pg_unreachable
    - RT_ADD_CHILD_4
    - RT_ADD_CHILD_16
    - RT_GROW_NODE_48
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: "RT_PTR_ALLOC *\nRT_NODE_INSERT(RT_RADIX_TREE * tree, RT_PTR_ALLOC
      * parent_slot, RT_CHILD_PTR node,\n\t\t\t   uint8 chunk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RT_KEY_GET_SHIFT
      Src: /src/postgres/src/include/lib/radixtree.h:1580,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1583,1
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1591,1
    - Dst: RT_SHIFT_GET_MAX_VAL
      Src: /src/postgres/src/include/lib/radixtree.h:1603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - tree
    - key
    argTypes:
    - RT_RADIX_TREE*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1577
    functionDepth: 3
    functionLinenumber: 1577
    functionLinenumberEnd: 1605
    functionName: RT_EXTEND_UP
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - RT_SHIFT_GET_MAX_VAL
    - RT_KEY_GET_SHIFT
    - RT_ALLOC_NODE
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline RT_EXTEND_UP(RT_RADIX_TREE * tree, uint64 key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1623,1
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1631,1
    - Dst: RT_GET_KEY_CHUNK
      Src: /src/postgres/src/include/lib/radixtree.h:1636,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1642,1
    - Dst: RT_GET_KEY_CHUNK
      Src: /src/postgres/src/include/lib/radixtree.h:1646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1650
      start: 1612
    functionDepth: 3
    functionLinenumber: 1612
    functionLinenumberEnd: 1650
    functionName: 'RT_PTR_ALLOC *

      RT_EXTEND_DOWN(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot, uint64 key,
      int shift)'
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - RT_ALLOC_NODE
    - RT_GET_KEY_CHUNK
    linkageType: ''
    returnType: pg_noinline
    signature: 'pg_noinline RT_PTR_ALLOC *

      RT_EXTEND_DOWN(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot, uint64 key,
      int shift)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RT_GET_KEY_CHUNK
      Src: /src/postgres/src/include/lib/radixtree.h:1664,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:1667,1
    - Dst: RT_NODE_SEARCH
      Src: /src/postgres/src/include/lib/radixtree.h:1668,1
    - Dst: RT_NODE_INSERT
      Src: /src/postgres/src/include/lib/radixtree.h:1676,1
    - Dst: RT_EXTEND_DOWN
      Src: /src/postgres/src/include/lib/radixtree.h:1681,1
    - Dst: RT_GET_SLOT_RECURSIVE
      Src: /src/postgres/src/include/lib/radixtree.h:1691,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - tree
    - parent_slot
    - key
    - shift
    - found
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - uint64
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1659
    functionDepth: 5
    functionLinenumber: 1659
    functionLinenumberEnd: 1693
    functionName: RT_GET_SLOT_RECURSIVE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 1
    functionsReached:
    - RT_NODE_SEARCH
    - RT_GET_KEY_CHUNK
    - RT_GET_SLOT_RECURSIVE
    - RT_NODE_INSERT
    - RT_EXTEND_DOWN
    - RT_PTR_SET_LOCAL
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_GET_SLOT_RECURSIVE(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot, uint64
      key, int shift, bool *found)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RT_GET_VALUE_SIZE
      Src: /src/postgres/src/include/lib/radixtree.h:1706,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1709,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1712,1
    - Dst: RT_PTR_ALLOC_IS_VALID
      Src: /src/postgres/src/include/lib/radixtree.h:1712,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/radixtree.h:1715,1
    - Dst: RT_KEY_GET_SHIFT
      Src: /src/postgres/src/include/lib/radixtree.h:1721,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:1730,1
    - Dst: RT_GET_KEY_CHUNK
      Src: /src/postgres/src/include/lib/radixtree.h:1733,1
    - Dst: RT_EXTEND_DOWN
      Src: /src/postgres/src/include/lib/radixtree.h:1735,1
    - Dst: RT_SHIFT_GET_MAX_VAL
      Src: /src/postgres/src/include/lib/radixtree.h:1738,1
    - Dst: RT_EXTEND_UP
      Src: /src/postgres/src/include/lib/radixtree.h:1742,1
    - Dst: RT_GET_SLOT_RECURSIVE
      Src: /src/postgres/src/include/lib/radixtree.h:1745,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1749,1
    - Dst: RT_VALUE_IS_EMBEDDABLE
      Src: /src/postgres/src/include/lib/radixtree.h:1751,1
    - Dst: RT_CHILDPTR_IS_VALUE
      Src: /src/postgres/src/include/lib/radixtree.h:1754,1
    - Dst: RT_FREE_LEAF
      Src: /src/postgres/src/include/lib/radixtree.h:1755,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/radixtree.h:1758,1
    - Dst: RT_CHILDPTR_IS_VALUE
      Src: /src/postgres/src/include/lib/radixtree.h:1773,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1775,1
    - Dst: RT_PTR_ALLOC_IS_VALID
      Src: /src/postgres/src/include/lib/radixtree.h:1775,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:1777,1
    - Dst: RT_GET_VALUE_SIZE
      Src: /src/postgres/src/include/lib/radixtree.h:1779,1
    - Dst: RT_FREE_LEAF
      Src: /src/postgres/src/include/lib/radixtree.h:1785,1
    - Dst: RT_ALLOC_LEAF
      Src: /src/postgres/src/include/lib/radixtree.h:1786,1
    - Dst: RT_ALLOC_LEAF
      Src: /src/postgres/src/include/lib/radixtree.h:1793,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/radixtree.h:1797,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 3
    argNames:
    - tree
    - key
    - value_p
    argTypes:
    - RT_RADIX_TREE*
    - uint64
    - RT_VALUE_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1701
    functionDepth: 6
    functionLinenumber: 1701
    functionLinenumberEnd: 1805
    functionName: RT_SET
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_FREE_LEAF
    - RT_GET_KEY_CHUNK
    - RT_EXTEND_UP
    - memcpy
    - Assert
    - RT_GET_SLOT_RECURSIVE
    - RT_EXTEND_DOWN
    - RT_ALLOC_LEAF
    - unlikely
    - RT_VALUE_IS_EMBEDDABLE
    - RT_PTR_ALLOC_IS_VALID
    - RT_CHILDPTR_IS_VALUE
    - RT_SHIFT_GET_MAX_VAL
    - RT_KEY_GET_SHIFT
    - RT_GET_VALUE_SIZE
    - RT_PTR_SET_LOCAL
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_SET(RT_RADIX_TREE * tree, uint64 key, RT_VALUE_TYPE * value_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/include/lib/radixtree.h:1828,1
    - Dst: dsa_allocate0
      Src: /src/postgres/src/include/lib/radixtree.h:1832,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/include/lib/radixtree.h:1833,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/include/lib/radixtree.h:1836,1
    - Dst: palloc0_object
      Src: /src/postgres/src/include/lib/radixtree.h:1838,1
    - Dst: RT_SLAB_BLOCK_SIZE
      Src: /src/postgres/src/include/lib/radixtree.h:1844,1
    - Dst: SlabContextCreate
      Src: /src/postgres/src/include/lib/radixtree.h:1846,1
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:1856,1
    - Dst: RT_SHIFT_GET_MAX_VAL
      Src: /src/postgres/src/include/lib/radixtree.h:1859,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1819
    functionDepth: 3
    functionLinenumber: 1819
    functionLinenumberEnd: 1862
    functionName: RT_CREATE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - palloc0_object
    - RT_ALLOC_NODE
    - RT_SLAB_BLOCK_SIZE
    - dsa_allocate0
    - dsa_get_address
    - SlabContextCreate
    - RT_SHIFT_GET_MAX_VAL
    - LWLockInitialize
    linkageType: ''
    returnType: void
    signature: void RT_CREATE(MemoryContext ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/include/lib/radixtree.h:1871,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/include/lib/radixtree.h:1877,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1865
    functionDepth: 1
    functionLinenumber: 1865
    functionLinenumberEnd: 1881
    functionName: 'RT_RADIX_TREE *

      RT_ATTACH(dsa_area *dsa, RT_HANDLE handle)'
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0_object
    - dsa_get_address
    linkageType: ''
    returnType: RT_SCOPE
    signature: 'RT_SCOPE RT_RADIX_TREE *

      RT_ATTACH(dsa_area *dsa, RT_HANDLE handle)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1886,1
    - Dst: pfree
      Src: /src/postgres/src/include/lib/radixtree.h:1887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tree
    argTypes:
    - RT_RADIX_TREE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1888
      start: 1883
    functionDepth: 1
    functionLinenumber: 1883
    functionLinenumberEnd: 1888
    functionName: RT_DETACH
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_DETACH(RT_RADIX_TREE * tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tree
    argTypes:
    - RT_RADIX_TREE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1890
    functionDepth: 1
    functionLinenumber: 1890
    functionLinenumberEnd: 1895
    functionName: RT_GET_HANDLE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_GET_HANDLE(RT_RADIX_TREE * tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1900,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/include/lib/radixtree.h:1901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tree
    argTypes:
    - RT_RADIX_TREE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1897
    functionDepth: 1
    functionLinenumber: 1897
    functionLinenumberEnd: 1902
    functionName: RT_LOCK_EXCLUSIVE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - LWLockAcquire
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_LOCK_EXCLUSIVE(RT_RADIX_TREE * tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1907,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/include/lib/radixtree.h:1908,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tree
    argTypes:
    - RT_RADIX_TREE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1904
    functionDepth: 1
    functionLinenumber: 1904
    functionLinenumberEnd: 1909
    functionName: RT_LOCK_SHARE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - LWLockAcquire
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_LOCK_SHARE(RT_RADIX_TREE * tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:1914,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/include/lib/radixtree.h:1915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tree
    argTypes:
    - RT_RADIX_TREE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1911
    functionDepth: 1
    functionLinenumber: 1911
    functionLinenumberEnd: 1916
    functionName: RT_UNLOCK
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - LWLockRelease
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_UNLOCK(RT_RADIX_TREE * tree)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/include/lib/radixtree.h:1926,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:1929,1
    - Dst: RT_FREE_RECURSE
      Src: /src/postgres/src/include/lib/radixtree.h:1942,1
    - Dst: RT_CHILDPTR_IS_VALUE
      Src: /src/postgres/src/include/lib/radixtree.h:1943,1
    - Dst: dsa_free
      Src: /src/postgres/src/include/lib/radixtree.h:1944,1
    - Dst: RT_FREE_RECURSE
      Src: /src/postgres/src/include/lib/radixtree.h:1958,1
    - Dst: RT_CHILDPTR_IS_VALUE
      Src: /src/postgres/src/include/lib/radixtree.h:1959,1
    - Dst: dsa_free
      Src: /src/postgres/src/include/lib/radixtree.h:1960,1
    - Dst: RT_NODE_48_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:1973,1
    - Dst: RT_NODE_48_GET_CHILD
      Src: /src/postgres/src/include/lib/radixtree.h:1976,1
    - Dst: RT_FREE_RECURSE
      Src: /src/postgres/src/include/lib/radixtree.h:1979,1
    - Dst: RT_CHILDPTR_IS_VALUE
      Src: /src/postgres/src/include/lib/radixtree.h:1980,1
    - Dst: dsa_free
      Src: /src/postgres/src/include/lib/radixtree.h:1981,1
    - Dst: RT_NODE_256_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:1994,1
    - Dst: RT_NODE_256_GET_CHILD
      Src: /src/postgres/src/include/lib/radixtree.h:1997,1
    - Dst: RT_FREE_RECURSE
      Src: /src/postgres/src/include/lib/radixtree.h:2000,1
    - Dst: RT_CHILDPTR_IS_VALUE
      Src: /src/postgres/src/include/lib/radixtree.h:2001,1
    - Dst: dsa_free
      Src: /src/postgres/src/include/lib/radixtree.h:2002,1
    - Dst: dsa_free
      Src: /src/postgres/src/include/lib/radixtree.h:2010,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 49
    argCount: 3
    argNames:
    - tree
    - ptr
    - shift
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2011
      start: 1921
    functionDepth: 3
    functionLinenumber: 1921
    functionLinenumberEnd: 2011
    functionName: RT_FREE_RECURSE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 1
    functionsReached:
    - RT_NODE_48_IS_CHUNK_USED
    - RT_CHILDPTR_IS_VALUE
    - dsa_free
    - check_stack_depth
    - RT_NODE_256_GET_CHILD
    - RT_NODE_48_GET_CHILD
    - RT_NODE_256_IS_CHUNK_USED
    - RT_FREE_RECURSE
    - RT_PTR_SET_LOCAL
    linkageType: ''
    returnType: void
    signature: void RT_FREE_RECURSE(RT_RADIX_TREE * tree, RT_PTR_ALLOC ptr, int shift)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2021,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2024,1
    - Dst: RT_PTR_ALLOC_IS_VALID
      Src: /src/postgres/src/include/lib/radixtree.h:2024,1
    - Dst: RT_FREE_RECURSE
      Src: /src/postgres/src/include/lib/radixtree.h:2025,1
    - Dst: dsa_free
      Src: /src/postgres/src/include/lib/radixtree.h:2032,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/include/lib/radixtree.h:2038,1
    - Dst: pfree
      Src: /src/postgres/src/include/lib/radixtree.h:2040,1
    - Dst: pfree
      Src: /src/postgres/src/include/lib/radixtree.h:2042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - tree
    argTypes:
    - RT_RADIX_TREE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2043
      start: 2017
    functionDepth: 4
    functionLinenumber: 2017
    functionLinenumberEnd: 2043
    functionName: RT_FREE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - dsa_free
    - Assert
    - pfree
    - RT_PTR_ALLOC_IS_VALID
    - RT_FREE_RECURSE
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_FREE(RT_RADIX_TREE * tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/include/lib/radixtree.h:2060,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2063,1
    - Dst: RT_PTR_ALLOC_IS_VALID
      Src: /src/postgres/src/include/lib/radixtree.h:2063,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:2065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - tree
    argTypes:
    - RT_RADIX_TREE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2075
      start: 2054
    functionDepth: 2
    functionLinenumber: 2054
    functionLinenumberEnd: 2075
    functionName: RT_BEGIN_ITERATE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0_object
    - RT_PTR_ALLOC_IS_VALID
    - RT_PTR_SET_LOCAL
    linkageType: ''
    returnType: RT_SCOPE
    signature: 'RT_SCOPE *

      RT_BEGIN_ITERATE(RT_RADIX_TREE * tree)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2090,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2096,1
    - Dst: RT_NODE_48_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:2131,1
    - Dst: RT_NODE_48_GET_CHILD
      Src: /src/postgres/src/include/lib/radixtree.h:2138,1
    - Dst: RT_NODE_256_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:2151,1
    - Dst: RT_NODE_256_GET_CHILD
      Src: /src/postgres/src/include/lib/radixtree.h:2158,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 50
    argCount: 2
    argNames:
    - iter
    - level
    argTypes:
    - RT_ITER*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2171
      start: 2081
    functionDepth: 3
    functionLinenumber: 2081
    functionLinenumberEnd: 2171
    functionName: RT_NODE_ITERATE_NEXT
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_NODE_48_IS_CHUNK_USED
    - Assert
    - RT_NODE_256_GET_CHILD
    - RT_NODE_48_GET_CHILD
    - RT_NODE_256_IS_CHUNK_USED
    linkageType: ''
    returnType: RT_PTR_ALLOC
    signature: 'RT_PTR_ALLOC *

      RT_NODE_ITERATE_NEXT(RT_ITER * iter, int level)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RT_NODE_ITERATE_NEXT
      Src: /src/postgres/src/include/lib/radixtree.h:2186,1
    - Dst: RT_CHILDPTR_IS_VALUE
      Src: /src/postgres/src/include/lib/radixtree.h:2194,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:2198,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:2207,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2222
      start: 2177
    functionDepth: 4
    functionLinenumber: 2177
    functionLinenumberEnd: 2222
    functionName: 'RT_VALUE_TYPE *

      RT_ITERATE_NEXT(RT_ITER * iter, uint64 *key_p)'
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_CHILDPTR_IS_VALUE
    - RT_PTR_SET_LOCAL
    - RT_NODE_ITERATE_NEXT
    linkageType: ''
    returnType: RT_SCOPE
    signature: 'RT_SCOPE RT_VALUE_TYPE *

      RT_ITERATE_NEXT(RT_ITER * iter, uint64 *key_p)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/include/lib/radixtree.h:2230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - RT_ITER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2227
    functionDepth: 0
    functionLinenumber: 2227
    functionLinenumberEnd: 2231
    functionName: RT_END_ITERATE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_END_ITERATE(RT_ITER * iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - chunks
    - children
    - count
    - deletepos
    argTypes:
    - uint8*
    - RT_PTR_ALLOC*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2254
      start: 2238
    functionDepth: 0
    functionLinenumber: 2238
    functionLinenumberEnd: 2254
    functionName: RT_SHIFT_ARRAYS_AND_DELETE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RT_SHIFT_ARRAYS_AND_DELETE(uint8 *chunks, RT_PTR_ALLOC * children,
      int count, int deletepos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - dst_chunks
    - dst_children
    - src_chunks
    - src_children
    - count
    - deletepos
    argTypes:
    - uint8*
    - RT_PTR_ALLOC*
    - uint8*
    - RT_PTR_ALLOC*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2277
      start: 2260
    functionDepth: 0
    functionLinenumber: 2260
    functionLinenumberEnd: 2277
    functionName: RT_COPY_ARRAYS_AND_DELETE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void RT_COPY_ARRAYS_AND_DELETE(uint8 *dst_chunks, RT_PTR_ALLOC * dst_children,\n\t\t\t\t\t\t
      \ uint8 *src_chunks, RT_PTR_ALLOC * src_children,\n\t\t\t\t\t\t  int count,
      int deletepos)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:2304,1
    - Dst: RT_COPY_COMMON
      Src: /src/postgres/src/include/lib/radixtree.h:2308,1
    - Dst: RT_NODE_256_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:2311,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2324,1
    - Dst: RT_FREE_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:2329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - tree
    - parent_slot
    - node
    - chunk
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2330
      start: 2295
    functionDepth: 3
    functionLinenumber: 2295
    functionLinenumberEnd: 2330
    functionName: pg_noinline::RT_SHRINK_NODE_256
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_ALLOC_NODE
    - RT_COPY_COMMON
    - Assert
    - RT_FREE_NODE
    - RT_NODE_256_IS_CHUNK_USED
    linkageType: ''
    returnType: void
    signature: 'void pg_noinline

      RT_SHRINK_NODE_256(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot, RT_CHILD_PTR
      node, uint8 chunk)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RT_BM_IDX
      Src: /src/postgres/src/include/lib/radixtree.h:2337,1
    - Dst: RT_BM_BIT
      Src: /src/postgres/src/include/lib/radixtree.h:2338,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2349,1
    - Dst: Min
      Src: /src/postgres/src/include/lib/radixtree.h:2353,1
    - Dst: RT_SHRINK_NODE_256
      Src: /src/postgres/src/include/lib/radixtree.h:2356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - tree
    - parent_slot
    - node
    - chunk
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2357
      start: 2332
    functionDepth: 1
    functionLinenumber: 2332
    functionLinenumberEnd: 2357
    functionName: RT_REMOVE_CHILD_256
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - RT_BM_BIT
    - RT_BM_IDX
    - Min
    - RT_SHRINK_NODE_256
    linkageType: ''
    returnType: void
    signature: void RT_REMOVE_CHILD_256(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot,
      RT_CHILD_PTR node, uint8 chunk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:2375,1
    - Dst: RT_COPY_COMMON
      Src: /src/postgres/src/include/lib/radixtree.h:2379,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2390,1
    - Dst: RT_VERIFY_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:2392,1
    - Dst: RT_FREE_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:2396,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - tree
    - parent_slot
    - node
    - chunk
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2397
      start: 2363
    functionDepth: 3
    functionLinenumber: 2363
    functionLinenumberEnd: 2397
    functionName: pg_noinline::RT_SHRINK_NODE_48
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_ALLOC_NODE
    - RT_COPY_COMMON
    - Assert
    - RT_VERIFY_NODE
    - RT_FREE_NODE
    linkageType: ''
    returnType: void
    signature: 'void pg_noinline

      RT_SHRINK_NODE_48(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot, RT_CHILD_PTR
      node, uint8 chunk)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2410,1
    - Dst: RT_BM_IDX
      Src: /src/postgres/src/include/lib/radixtree.h:2412,1
    - Dst: RT_BM_BIT
      Src: /src/postgres/src/include/lib/radixtree.h:2413,1
    - Dst: RT_SHRINK_NODE_48
      Src: /src/postgres/src/include/lib/radixtree.h:2424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - tree
    - parent_slot
    - node
    - chunk
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2425
      start: 2399
    functionDepth: 1
    functionLinenumber: 2399
    functionLinenumberEnd: 2425
    functionName: RT_REMOVE_CHILD_48
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - RT_BM_BIT
    - RT_BM_IDX
    - RT_SHRINK_NODE_48
    linkageType: ''
    returnType: void
    signature: void RT_REMOVE_CHILD_48(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot,
      RT_CHILD_PTR node, uint8 chunk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RT_ALLOC_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:2440,1
    - Dst: RT_COPY_COMMON
      Src: /src/postgres/src/include/lib/radixtree.h:2444,1
    - Dst: RT_COPY_ARRAYS_AND_DELETE
      Src: /src/postgres/src/include/lib/radixtree.h:2445,1
    - Dst: RT_VERIFY_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:2450,1
    - Dst: RT_FREE_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:2454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - tree
    - parent_slot
    - node
    - deletepos
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - RT_CHILD_PTR
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2455
      start: 2432
    functionDepth: 3
    functionLinenumber: 2432
    functionLinenumberEnd: 2455
    functionName: pg_noinline::RT_SHRINK_NODE_16
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_ALLOC_NODE
    - RT_COPY_COMMON
    - RT_VERIFY_NODE
    - RT_COPY_ARRAYS_AND_DELETE
    - RT_FREE_NODE
    linkageType: ''
    returnType: void
    signature: 'void pg_noinline

      RT_SHRINK_NODE_16(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot, RT_CHILD_PTR
      node, uint8 deletepos)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RT_SHRINK_NODE_16
      Src: /src/postgres/src/include/lib/radixtree.h:2470,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2474,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2475,1
    - Dst: RT_SHIFT_ARRAYS_AND_DELETE
      Src: /src/postgres/src/include/lib/radixtree.h:2477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - tree
    - parent_slot
    - node
    - chunk
    - slot
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - RT_CHILD_PTR
    - uint8
    - RT_PTR_ALLOC*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2480
      start: 2457
    functionDepth: 1
    functionLinenumber: 2457
    functionLinenumberEnd: 2480
    functionName: RT_REMOVE_CHILD_16
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_SHRINK_NODE_16
    - RT_SHIFT_ARRAYS_AND_DELETE
    - Assert
    linkageType: ''
    returnType: void
    signature: void RT_REMOVE_CHILD_16(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot,
      RT_CHILD_PTR node, uint8 chunk, RT_PTR_ALLOC * slot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2489,1
    - Dst: RT_SHIFT_GET_MAX_VAL
      Src: /src/postgres/src/include/lib/radixtree.h:2500,1
    - Dst: RT_FREE_NODE
      Src: /src/postgres/src/include/lib/radixtree.h:2509,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2522,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2523,1
    - Dst: RT_SHIFT_ARRAYS_AND_DELETE
      Src: /src/postgres/src/include/lib/radixtree.h:2525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - tree
    - parent_slot
    - node
    - chunk
    - slot
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - RT_CHILD_PTR
    - uint8
    - RT_PTR_ALLOC*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2530
      start: 2482
    functionDepth: 2
    functionLinenumber: 2482
    functionLinenumberEnd: 2530
    functionName: RT_REMOVE_CHILD_4
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - RT_SHIFT_ARRAYS_AND_DELETE
    - RT_SHIFT_GET_MAX_VAL
    - RT_FREE_NODE
    linkageType: ''
    returnType: void
    signature: void RT_REMOVE_CHILD_4(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot,
      RT_CHILD_PTR node, uint8 chunk, RT_PTR_ALLOC * slot)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RT_REMOVE_CHILD_4
      Src: /src/postgres/src/include/lib/radixtree.h:2542,1
    - Dst: RT_REMOVE_CHILD_16
      Src: /src/postgres/src/include/lib/radixtree.h:2547,1
    - Dst: RT_REMOVE_CHILD_48
      Src: /src/postgres/src/include/lib/radixtree.h:2552,1
    - Dst: RT_REMOVE_CHILD_256
      Src: /src/postgres/src/include/lib/radixtree.h:2557,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/include/lib/radixtree.h:2561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 5
    argNames:
    - tree
    - parent_slot
    - node
    - chunk
    - slot
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - RT_CHILD_PTR
    - uint8
    - RT_PTR_ALLOC*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2563
      start: 2535
    functionDepth: 3
    functionLinenumber: 2535
    functionLinenumberEnd: 2563
    functionName: RT_NODE_DELETE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_REMOVE_CHILD_48
    - RT_REMOVE_CHILD_4
    - pg_unreachable
    - RT_REMOVE_CHILD_256
    - RT_REMOVE_CHILD_16
    linkageType: ''
    returnType: void
    signature: void RT_NODE_DELETE(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot,
      RT_CHILD_PTR node, uint8 chunk, RT_PTR_ALLOC * slot)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RT_GET_KEY_CHUNK
      Src: /src/postgres/src/include/lib/radixtree.h:2571,1
    - Dst: RT_PTR_SET_LOCAL
      Src: /src/postgres/src/include/lib/radixtree.h:2574,1
    - Dst: RT_NODE_SEARCH
      Src: /src/postgres/src/include/lib/radixtree.h:2575,1
    - Dst: RT_CHILDPTR_IS_VALUE
      Src: /src/postgres/src/include/lib/radixtree.h:2582,1
    - Dst: RT_FREE_LEAF
      Src: /src/postgres/src/include/lib/radixtree.h:2583,1
    - Dst: RT_NODE_DELETE
      Src: /src/postgres/src/include/lib/radixtree.h:2585,1
    - Dst: RT_DELETE_RECURSIVE
      Src: /src/postgres/src/include/lib/radixtree.h:2592,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2597,1
    - Dst: RT_NODE_DELETE
      Src: /src/postgres/src/include/lib/radixtree.h:2598,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - tree
    - parent_slot
    - key
    - shift
    argTypes:
    - RT_RADIX_TREE*
    - RT_PTR_ALLOC*
    - uint64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2603
      start: 2566
    functionDepth: 4
    functionLinenumber: 2566
    functionLinenumberEnd: 2603
    functionName: RT_DELETE_RECURSIVE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 1
    functionsReached:
    - RT_NODE_SEARCH
    - RT_FREE_LEAF
    - RT_GET_KEY_CHUNK
    - Assert
    - RT_DELETE_RECURSIVE
    - RT_NODE_DELETE
    - RT_CHILDPTR_IS_VALUE
    - RT_PTR_SET_LOCAL
    linkageType: ''
    returnType: bool
    signature: bool RT_DELETE_RECURSIVE(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot,
      uint64 key, int shift)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2617,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2623,1
    - Dst: RT_PTR_ALLOC_IS_VALID
      Src: /src/postgres/src/include/lib/radixtree.h:2623,1
    - Dst: RT_DELETE_RECURSIVE
      Src: /src/postgres/src/include/lib/radixtree.h:2624,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - tree
    - key
    argTypes:
    - RT_RADIX_TREE*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2635
      start: 2611
    functionDepth: 5
    functionLinenumber: 2611
    functionLinenumberEnd: 2635
    functionName: RT_DELETE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - RT_DELETE_RECURSIVE
    - RT_PTR_ALLOC_IS_VALID
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_DELETE(RT_RADIX_TREE * tree, uint64 key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2653,1
    - Dst: dsa_get_total_size
      Src: /src/postgres/src/include/lib/radixtree.h:2654,1
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/include/lib/radixtree.h:2656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tree
    argTypes:
    - RT_RADIX_TREE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2660
      start: 2647
    functionDepth: 1
    functionLinenumber: 2647
    functionLinenumberEnd: 2660
    functionName: RT_MEMORY_USAGE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - Assert
    - dsa_get_total_size
    - MemoryContextMemAllocated
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_MEMORY_USAGE(RT_RADIX_TREE * tree)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2679,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2690,1
    - Dst: RT_BM_IDX
      Src: /src/postgres/src/include/lib/radixtree.h:2704,1
    - Dst: RT_BM_BIT
      Src: /src/postgres/src/include/lib/radixtree.h:2705,1
    - Dst: RT_NODE_48_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:2707,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2711,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2712,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2717,1
    - Dst: pg_popcount
      Src: /src/postgres/src/include/lib/radixtree.h:2728,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2736,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/radixtree.h:2738,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 1
    argNames:
    - node
    argTypes:
    - RT_NODE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2665
    functionDepth: 1
    functionLinenumber: 2665
    functionLinenumberEnd: 2744
    functionName: RT_VERIFY_NODE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 8
    functionsReached:
    - RT_NODE_48_IS_CHUNK_USED
    - Assert
    - RT_BM_BIT
    - RT_BM_IDX
    - pg_popcount
    linkageType: ''
    returnType: void
    signature: void RT_VERIFY_NODE(RT_NODE * node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2756,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2757,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2760,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2763,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2769,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2772,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2774,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - tree
    argTypes:
    - RT_RADIX_TREE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2775
      start: 2753
    functionDepth: 0
    functionLinenumber: 2753
    functionLinenumberEnd: 2775
    functionName: RT_STATS
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_STATS(RT_RADIX_TREE * tree)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2790,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2803,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2806,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2816,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2819,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2829,1
    - Dst: RT_NODE_48_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:2832,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2835,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2839,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2842,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2845,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2847,1
    - Dst: RT_NODE_48_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:2850,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2853,1
    - Dst: RT_NODE_48_GET_CHILD
      Src: /src/postgres/src/include/lib/radixtree.h:2855,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2864,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2867,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2870,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2872,1
    - Dst: RT_NODE_256_IS_CHUNK_USED
      Src: /src/postgres/src/include/lib/radixtree.h:2875,1
    - Dst: fprintf
      Src: /src/postgres/src/include/lib/radixtree.h:2878,1
    - Dst: RT_NODE_256_GET_CHILD
      Src: /src/postgres/src/include/lib/radixtree.h:2880,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 1
    argNames:
    - node
    argTypes:
    - RT_NODE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2885
      start: 2781
    functionDepth: 3
    functionLinenumber: 2781
    functionLinenumberEnd: 2885
    functionName: RT_DUMP_NODE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_NODE_48_IS_CHUNK_USED
    - RT_NODE_256_GET_CHILD
    - RT_NODE_48_GET_CHILD
    - fprintf
    - RT_NODE_256_IS_CHUNK_USED
    linkageType: ''
    returnType: void
    signature: void RT_DUMP_NODE(RT_NODE * node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: SH_MAKE_PREFIX
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_MAKE_PREFIX(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: SH_MAKE_NAME
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_MAKE_NAME(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: SH_MAKE_NAME_
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_MAKE_NAME_(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - tb
    - ','
    - ahash
    - ','
    - akey
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 287
    functionName: SH_COMPARE_KEYS
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_COMPARE_KEYS(tb, ahash, akey, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - tb
    - ','
    - ahash
    - ','
    - akey
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 289
    functionName: SH_COMPARE_KEYS
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_COMPARE_KEYS(tb, ahash, akey, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 303
    functionName: sh_error
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sh_error(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 304
    functionName: sh_log
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sh_log(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 306
    functionName: sh_error
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sh_error(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 307
    functionName: sh_log
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sh_log(...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/include/lib/simplehash.h:321,1
    - Dst: pg_nextpower2_64
      Src: /src/postgres/src/include/lib/simplehash.h:324,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:325,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/simplehash.h:331,1
    - Dst: sh_error
      Src: /src/postgres/src/include/lib/simplehash.h:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - newsize
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 315
    functionDepth: 3
    functionLinenumber: 315
    functionLinenumberEnd: 335
    functionName: SH_COMPUTE_SIZE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - pg_nextpower2_64
    - Assert
    - unlikely
    - Max
    - sh_error
    linkageType: ''
    returnType: uint64
    signature: uint64 SH_COMPUTE_SIZE(uint64 newsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SH_COMPUTE_SIZE
      Src: /src/postgres/src/include/lib/simplehash.h:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - tb
    - newsize
    argTypes:
    - SH_TYPE*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 341
    functionDepth: 4
    functionLinenumber: 341
    functionLinenumberEnd: 358
    functionName: SH_UPDATE_PARAMETERS
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_COMPUTE_SIZE
    linkageType: ''
    returnType: void
    signature: void SH_UPDATE_PARAMETERS(SH_TYPE * tb, uint64 newsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tb
    - hash
    argTypes:
    - SH_TYPE*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 365
    functionName: SH_INITIAL_BUCKET
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 SH_INITIAL_BUCKET(SH_TYPE * tb, uint32 hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tb
    - curelem
    - startelem
    argTypes:
    - SH_TYPE*
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 376
    functionName: SH_NEXT
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint32
    signature: uint32 SH_NEXT(SH_TYPE * tb, uint32 curelem, uint32 startelem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tb
    - curelem
    - startelem
    argTypes:
    - SH_TYPE*
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 387
    functionName: SH_PREV
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint32
    signature: uint32 SH_PREV(SH_TYPE * tb, uint32 curelem, uint32 startelem)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - tb
    - optimal
    - bucket
    argTypes:
    - SH_TYPE*
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 397
    functionName: SH_DISTANCE_FROM_OPTIMAL
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 SH_DISTANCE_FROM_OPTIMAL(SH_TYPE * tb, uint32 optimal, uint32
      bucket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SH_GET_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:403,1
    - Dst: SH_HASH_KEY
      Src: /src/postgres/src/include/lib/simplehash.h:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tb
    - entry
    argTypes:
    - SH_TYPE*
    - SH_ELEMENT_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 407
    functionName: SH_ENTRY_HASH
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_GET_HASH
    - SH_HASH_KEY
    linkageType: ''
    returnType: uint32
    signature: uint32 SH_ENTRY_HASH(SH_TYPE * tb, SH_ELEMENT_TYPE * entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SH_RAW_ALLOCATOR
      Src: /src/postgres/src/include/lib/simplehash.h:420,1
    - Dst: MemoryContextAllocExtended
      Src: /src/postgres/src/include/lib/simplehash.h:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - type
    - size
    argTypes:
    - SH_TYPE*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 425
    functionName: SH_ALLOCATE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - MemoryContextAllocExtended
    - SH_RAW_ALLOCATOR
    linkageType: ''
    returnType: void
    signature: 'void *

      SH_ALLOCATE(SH_TYPE * type, Size size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/include/lib/simplehash.h:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - type
    - pointer
    argTypes:
    - SH_TYPE*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 432
    functionName: SH_FREE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void SH_FREE(SH_TYPE * type, void *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SH_RAW_ALLOCATOR
      Src: /src/postgres/src/include/lib/simplehash.h:457,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/include/lib/simplehash.h:459,1
    - Dst: Min
      Src: /src/postgres/src/include/lib/simplehash.h:465,1
    - Dst: SH_COMPUTE_SIZE
      Src: /src/postgres/src/include/lib/simplehash.h:467,1
    - Dst: SH_ALLOCATE
      Src: /src/postgres/src/include/lib/simplehash.h:469,1
    - Dst: SH_UPDATE_PARAMETERS
      Src: /src/postgres/src/include/lib/simplehash.h:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - nelements
    - private_data
    argTypes:
    - MemoryContext
    - uint32
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 449
    functionDepth: 5
    functionLinenumber: 449
    functionLinenumberEnd: 473
    functionName: SH_CREATE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_RAW_ALLOCATOR
    - SH_ALLOCATE
    - SH_COMPUTE_SIZE
    - Min
    - SH_UPDATE_PARAMETERS
    - MemoryContextAllocZero
    linkageType: ''
    returnType: SH_SCOPE
    signature: 'SH_SCOPE *

      SH_CREATE(MemoryContext ctx, uint32 nelements, void *private_data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SH_FREE
      Src: /src/postgres/src/include/lib/simplehash.h:479,1
    - Dst: pfree
      Src: /src/postgres/src/include/lib/simplehash.h:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tb
    argTypes:
    - SH_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 481
    functionName: SH_DESTROY
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - pfree
    - SH_FREE
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_DESTROY(SH_TYPE * tb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/include/lib/simplehash.h:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tb
    argTypes:
    - SH_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 489
    functionName: SH_RESET
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_RESET(SH_TYPE * tb)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:508,1
    - Dst: pg_nextpower2_64
      Src: /src/postgres/src/include/lib/simplehash.h:508,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:509,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:510,1
    - Dst: SH_COMPUTE_SIZE
      Src: /src/postgres/src/include/lib/simplehash.h:512,1
    - Dst: SH_ALLOCATE
      Src: /src/postgres/src/include/lib/simplehash.h:514,1
    - Dst: SH_UPDATE_PARAMETERS
      Src: /src/postgres/src/include/lib/simplehash.h:520,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:554,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:555,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:577,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:578,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:591,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/simplehash.h:595,1
    - Dst: SH_FREE
      Src: /src/postgres/src/include/lib/simplehash.h:606,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 2
    argNames:
    - tb
    - newsize
    argTypes:
    - SH_TYPE*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 498
    functionDepth: 5
    functionLinenumber: 498
    functionLinenumberEnd: 607
    functionName: SH_GROW
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_ENTRY_HASH
    - pg_nextpower2_64
    - SH_ALLOCATE
    - memcpy
    - Assert
    - SH_COMPUTE_SIZE
    - SH_INITIAL_BUCKET
    - SH_FREE
    - SH_UPDATE_PARAMETERS
    - SH_NEXT
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_GROW(SH_TYPE * tb, uint64 newsize)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/simplehash.h:632,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/simplehash.h:634,1
    - Dst: sh_error
      Src: /src/postgres/src/include/lib/simplehash.h:635,1
    - Dst: SH_GROW
      Src: /src/postgres/src/include/lib/simplehash.h:641,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:647,1
    - Dst: SH_GET_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:662,1
    - Dst: SH_COMPARE_KEYS
      Src: /src/postgres/src/include/lib/simplehash.h:677,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:679,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:684,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:685,1
    - Dst: SH_DISTANCE_FROM_OPTIMAL
      Src: /src/postgres/src/include/lib/simplehash.h:686,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:700,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/simplehash.h:718,1
    - Dst: SH_PREV
      Src: /src/postgres/src/include/lib/simplehash.h:738,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/simplehash.h:741,1
    - Dst: SH_GET_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:750,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:757,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/simplehash.h:768,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 65
    argCount: 4
    argNames:
    - tb
    - key
    - hash
    - found
    argTypes:
    - SH_TYPE*
    - SH_KEY_TYPE
    - uint32
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 613
    functionDepth: 6
    functionLinenumber: 613
    functionLinenumberEnd: 775
    functionName: SH_INSERT_HASH_INTERNAL
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_ENTRY_HASH
    - SH_DISTANCE_FROM_OPTIMAL
    - SH_GET_HASH
    - memcpy
    - Assert
    - SH_PREV
    - SH_GROW
    - unlikely
    - SH_COMPARE_KEYS
    - SH_INITIAL_BUCKET
    - sh_error
    - SH_NEXT
    linkageType: ''
    returnType: SH_ELEMENT_TYPE
    signature: 'SH_ELEMENT_TYPE *

      SH_INSERT_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SH_HASH_KEY
      Src: /src/postgres/src/include/lib/simplehash.h:784,1
    - Dst: SH_INSERT_HASH_INTERNAL
      Src: /src/postgres/src/include/lib/simplehash.h:786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 781
    functionDepth: 7
    functionLinenumber: 781
    functionLinenumberEnd: 787
    functionName: 'SH_ELEMENT_TYPE *

      SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found)'
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_INSERT_HASH_INTERNAL
    - SH_HASH_KEY
    linkageType: ''
    returnType: SH_SCOPE
    signature: 'SH_SCOPE SH_ELEMENT_TYPE *

      SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SH_INSERT_HASH_INTERNAL
      Src: /src/postgres/src/include/lib/simplehash.h:797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 794
    functionDepth: 7
    functionLinenumber: 794
    functionLinenumberEnd: 798
    functionName: 'SH_ELEMENT_TYPE *

      SH_INSERT_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found)'
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_INSERT_HASH_INTERNAL
    linkageType: ''
    returnType: SH_SCOPE
    signature: 'SH_SCOPE SH_ELEMENT_TYPE *

      SH_INSERT_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:807,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:819,1
    - Dst: SH_COMPARE_KEYS
      Src: /src/postgres/src/include/lib/simplehash.h:821,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:831,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - tb
    - key
    - hash
    argTypes:
    - SH_TYPE*
    - SH_KEY_TYPE
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 804
    functionDepth: 2
    functionLinenumber: 804
    functionLinenumberEnd: 833
    functionName: SH_LOOKUP_HASH_INTERNAL
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - Assert
    - SH_COMPARE_KEYS
    - SH_INITIAL_BUCKET
    - SH_NEXT
    linkageType: ''
    returnType: SH_ELEMENT_TYPE
    signature: 'SH_ELEMENT_TYPE *

      SH_LOOKUP_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SH_HASH_KEY
      Src: /src/postgres/src/include/lib/simplehash.h:841,1
    - Dst: SH_LOOKUP_HASH_INTERNAL
      Src: /src/postgres/src/include/lib/simplehash.h:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 838
    functionDepth: 3
    functionLinenumber: 838
    functionLinenumberEnd: 844
    functionName: 'SH_ELEMENT_TYPE *

      SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key)'
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_LOOKUP_HASH_INTERNAL
    - SH_HASH_KEY
    linkageType: ''
    returnType: SH_SCOPE
    signature: 'SH_SCOPE SH_ELEMENT_TYPE *

      SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SH_LOOKUP_HASH_INTERNAL
      Src: /src/postgres/src/include/lib/simplehash.h:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 851
    functionDepth: 3
    functionLinenumber: 851
    functionLinenumberEnd: 855
    functionName: 'SH_ELEMENT_TYPE *

      SH_LOOKUP_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash)'
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_LOOKUP_HASH_INTERNAL
    linkageType: ''
    returnType: SH_SCOPE
    signature: 'SH_SCOPE SH_ELEMENT_TYPE *

      SH_LOOKUP_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SH_HASH_KEY
      Src: /src/postgres/src/include/lib/simplehash.h:864,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:865,1
    - Dst: SH_COMPARE_KEYS
      Src: /src/postgres/src/include/lib/simplehash.h:876,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:895,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:904,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:905,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/simplehash.h:915,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:925,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - tb
    - key
    argTypes:
    - SH_TYPE*
    - SH_KEY_TYPE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 861
    functionDepth: 2
    functionLinenumber: 861
    functionLinenumberEnd: 927
    functionName: SH_DELETE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_ENTRY_HASH
    - memcpy
    - SH_COMPARE_KEYS
    - SH_INITIAL_BUCKET
    - SH_HASH_KEY
    - SH_NEXT
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_DELETE(SH_TYPE * tb, SH_KEY_TYPE key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:936,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:937,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:958,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:967,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:968,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/simplehash.h:978,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - tb
    - entry
    argTypes:
    - SH_TYPE*
    - SH_ELEMENT_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 932
    functionDepth: 2
    functionLinenumber: 932
    functionLinenumberEnd: 982
    functionName: SH_DELETE_ITEM
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_ENTRY_HASH
    - memcpy
    - SH_INITIAL_BUCKET
    - SH_NEXT
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_DELETE_ITEM(SH_TYPE * tb, SH_ELEMENT_TYPE * entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:1009,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - tb
    - iter
    argTypes:
    - SH_TYPE*
    - SH_ITERATOR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1018
    functionName: SH_START_ITERATE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_START_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tb
    - iter
    - at
    argTypes:
    - SH_TYPE*
    - SH_ITERATOR*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1037
    functionName: SH_START_ITERATE_AT
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_START_ITERATE_AT(SH_TYPE * tb, SH_ITERATOR * iter, uint32
      at)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:1053,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:1054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1074
    functionName: 'SH_ELEMENT_TYPE *

      SH_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter)'
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: SH_SCOPE
    signature: 'SH_SCOPE SH_ELEMENT_TYPE *

      SH_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/include/lib/simplehash.h:1102,1
    - Dst: pg_nextpower2_64
      Src: /src/postgres/src/include/lib/simplehash.h:1105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - nentries
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1085
    functionDepth: 3
    functionLinenumber: 1085
    functionLinenumberEnd: 1115
    functionName: SH_ESTIMATE_SPACE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - pg_nextpower2_64
    - Max
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_ESTIMATE_SPACE(double nentries)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/include/lib/simplehash.h:1130,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:1147,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:1148,1
    - Dst: SH_DISTANCE_FROM_OPTIMAL
      Src: /src/postgres/src/include/lib/simplehash.h:1149,1
    - Dst: pfree
      Src: /src/postgres/src/include/lib/simplehash.h:1173,1
    - Dst: sh_log
      Src: /src/postgres/src/include/lib/simplehash.h:1188,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - tb
    argTypes:
    - SH_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1121
    functionDepth: 1
    functionLinenumber: 1121
    functionLinenumberEnd: 1191
    functionName: SH_STAT
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_ENTRY_HASH
    - SH_DISTANCE_FROM_OPTIMAL
    - sh_log
    - pfree
    - palloc0
    - SH_INITIAL_BUCKET
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_STAT(SH_TYPE * tb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hash_table
    - ','
    - key
    - ','
    - found
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: dshash_find_or_insert
    functionSourceFile: /src/postgres/src/include/lib/dshash.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dshash_find_or_insert(hash_table, key, found)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: binaryheap_empty
    functionSourceFile: /src/postgres/src/include/lib/binaryheap.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: binaryheap_empty(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: binaryheap_size
    functionSourceFile: /src/postgres/src/include/lib/binaryheap.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: binaryheap_size(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: binaryheap_get_node
    functionSourceFile: /src/postgres/src/include/lib/binaryheap.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: binaryheap_get_node(h, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/varbit.h:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: DatumGetVarBitP
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: VarBit
    signature: 'VarBit *

      DatumGetVarBitP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/utils/varbit.h:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: DatumGetVarBitPCopy
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: VarBit
    signature: 'VarBit *

      DatumGetVarBitPCopy(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/varbit.h:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - VarBit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: VarBitPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum VarBitPGetDatum(const VarBit *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: PG_GETARG_VARBIT_P
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_VARBIT_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: PG_GETARG_VARBIT_P_COPY
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_VARBIT_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: PG_RETURN_VARBIT_P
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_VARBIT_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: VARBITLEN
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARBITLEN(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: VARBITS
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARBITS(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: VARBITBYTES
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARBITBYTES(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: VARBITPAD
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARBITPAD(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - BITLEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: VARBITTOTALLEN
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARBITTOTALLEN(BITLEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: VARBITEND
    functionSourceFile: /src/postgres/src/include/utils/varbit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARBITEND(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/uuid.h:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - pg_uuid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: UUIDPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/uuid.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum UUIDPGetDatum(const pg_uuid_t *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: PG_RETURN_UUID_P
    functionSourceFile: /src/postgres/src/include/utils/uuid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_UUID_P(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/uuid.h:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: DatumGetUUIDP
    functionSourceFile: /src/postgres/src/include/utils/uuid.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: pg_uuid_t
    signature: 'pg_uuid_t *

      DatumGetUUIDP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: PG_GETARG_UUID_P
    functionSourceFile: /src/postgres/src/include/utils/uuid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_UUID_P(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: DATE_NOBEGIN
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DATE_NOBEGIN(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: DATE_IS_NOBEGIN
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DATE_IS_NOBEGIN(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: DATE_NOEND
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DATE_NOEND(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: DATE_IS_NOEND
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DATE_IS_NOEND(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: DATE_NOT_FINITE
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DATE_NOT_FINITE(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/utils/date.h:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: DatumGetDateADT
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    linkageType: ''
    returnType: DateADT
    signature: DateADT DatumGetDateADT(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/utils/date.h:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: DatumGetTimeADT
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    linkageType: ''
    returnType: TimeADT
    signature: TimeADT DatumGetTimeADT(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/date.h:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: DatumGetTimeTzADTP
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: TimeTzADT
    signature: 'TimeTzADT *

      DatumGetTimeTzADTP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/utils/date.h:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - DateADT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: DateADTGetDatum
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum DateADTGetDatum(DateADT X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/utils/date.h:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TimeADT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: TimeADTGetDatum
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum TimeADTGetDatum(TimeADT X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/date.h:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TimeTzADT*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: TimeTzADTPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum TimeTzADTPGetDatum(const TimeTzADT *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: PG_GETARG_DATEADT
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_DATEADT(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: PG_GETARG_TIMEADT
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TIMEADT(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 98
    functionName: PG_GETARG_TIMETZADT_P
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TIMETZADT_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: PG_RETURN_DATEADT
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_DATEADT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: PG_RETURN_TIMEADT
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_TIMEADT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: PG_RETURN_TIMETZADT_P
    functionSourceFile: /src/postgres/src/include/utils/date.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_TIMETZADT_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: CStringGetTextDatum
    functionSourceFile: /src/postgres/src/include/utils/builtins.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CStringGetTextDatum(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: TextDatumGetCString
    functionSourceFile: /src/postgres/src/include/utils/builtins.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TextDatumGetCString(d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: relptr
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relptr(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - relptrtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: relptr_declare
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relptr_declare(type, relptrtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - base
    - ','
    - rp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: relptr_access
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relptr_access(base, rp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - base
    - ','
    - rp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: relptr_access
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relptr_access(base, rp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: relptr_is_null
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relptr_is_null(rp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: relptr_offset
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relptr_offset(rp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/relptr.h:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - base
    - val
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 69
    functionName: relptr_store_eval
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: Size
    signature: Size relptr_store_eval(char *base, char *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - base
    - ','
    - rp
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: relptr_store
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relptr_store(base, rp, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - base
    - ','
    - rp
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: relptr_store
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relptr_store(base, rp, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rp1
    - ','
    - rp2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: relptr_copy
    functionSourceFile: /src/postgres/src/include/utils/relptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: relptr_copy(rp1, rp2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    functionName: DTK_M
    functionSourceFile: /src/postgres/src/include/utils/datetime.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DTK_M(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - t
    - ','
    - q
    - ','
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: FMODULO
    functionSourceFile: /src/postgres/src/include/utils/datetime.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FMODULO(t,q,u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - t
    - ','
    - q
    - ','
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 255
    functionName: TMODULO
    functionSourceFile: /src/postgres/src/include/utils/datetime.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TMODULO(t,q,u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 274
    functionName: isleap
    functionSourceFile: /src/postgres/src/include/utils/datetime.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isleap(y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - addr
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: VALGRIND_CHECK_MEM_IS_DEFINED
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_CHECK_MEM_IS_DEFINED(addr, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - context
    - ','
    - redzones
    - ','
    - zeroed
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: VALGRIND_CREATE_MEMPOOL
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_CREATE_MEMPOOL(context, redzones, zeroed)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: VALGRIND_DESTROY_MEMPOOL
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_DESTROY_MEMPOOL(context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - addr
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: VALGRIND_MAKE_MEM_DEFINED
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_MAKE_MEM_DEFINED(addr, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - addr
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: VALGRIND_MAKE_MEM_NOACCESS
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_MAKE_MEM_NOACCESS(addr, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - addr
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: VALGRIND_MAKE_MEM_UNDEFINED
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_MAKE_MEM_UNDEFINED(addr, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - context
    - ','
    - addr
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: VALGRIND_MEMPOOL_ALLOC
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_MEMPOOL_ALLOC(context, addr, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - context
    - ','
    - addr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: VALGRIND_MEMPOOL_FREE
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_MEMPOOL_FREE(context, addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - context
    - ','
    - optr
    - ','
    - nptr
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: VALGRIND_MEMPOOL_CHANGE
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_MEMPOOL_CHANGE(context, optr, nptr, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - context
    - ','
    - addr
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: VALGRIND_MEMPOOL_TRIM
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_MEMPOOL_TRIM(context, addr, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VALGRIND_MAKE_MEM_UNDEFINED
      Src: /src/postgres/src/include/utils/memdebug.h:42,1
    - Dst: memset
      Src: /src/postgres/src/include/utils/memdebug.h:43,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/include/utils/memdebug.h:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: wipe_mem
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached:
    - VALGRIND_MAKE_MEM_NOACCESS
    - memset
    - VALGRIND_MAKE_MEM_UNDEFINED
    linkageType: ''
    returnType: void
    signature: void wipe_mem(void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VALGRIND_MAKE_MEM_UNDEFINED
      Src: /src/postgres/src/include/utils/memdebug.h:56,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/include/utils/memdebug.h:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - base
    - offset
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: set_sentinel
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached:
    - VALGRIND_MAKE_MEM_NOACCESS
    - VALGRIND_MAKE_MEM_UNDEFINED
    linkageType: ''
    returnType: void
    signature: void set_sentinel(void *base, Size offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/include/utils/memdebug.h:67,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/include/utils/memdebug.h:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - base
    - offset
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 72
    functionName: sentinel_ok
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached:
    - VALGRIND_MAKE_MEM_DEFINED
    - VALGRIND_MAKE_MEM_NOACCESS
    linkageType: ''
    returnType: bool
    signature: bool sentinel_ok(const void *base, Size offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: MultirangeTypeGetOid
    functionSourceFile: /src/postgres/src/include/utils/multirangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MultirangeTypeGetOid(mr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: MultirangeIsEmpty
    functionSourceFile: /src/postgres/src/include/utils/multirangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MultirangeIsEmpty(mr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/multirangetypes.h:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: DatumGetMultirangeTypeP
    functionSourceFile: /src/postgres/src/include/utils/multirangetypes.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: MultirangeType
    signature: 'MultirangeType *

      DatumGetMultirangeTypeP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/utils/multirangetypes.h:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: DatumGetMultirangeTypePCopy
    functionSourceFile: /src/postgres/src/include/utils/multirangetypes.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: MultirangeType
    signature: 'MultirangeType *

      DatumGetMultirangeTypePCopy(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/multirangetypes.h:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - MultirangeType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: MultirangeTypePGetDatum
    functionSourceFile: /src/postgres/src/include/utils/multirangetypes.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum MultirangeTypePGetDatum(const MultirangeType *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: PG_GETARG_MULTIRANGE_P
    functionSourceFile: /src/postgres/src/include/utils/multirangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_MULTIRANGE_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: PG_GETARG_MULTIRANGE_P_COPY
    functionSourceFile: /src/postgres/src/include/utils/multirangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_MULTIRANGE_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: PG_RETURN_MULTIRANGE_P
    functionSourceFile: /src/postgres/src/include/utils/multirangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_MULTIRANGE_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: INIT_TRADITIONAL_CRC32
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_TRADITIONAL_CRC32(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: FIN_TRADITIONAL_CRC32
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIN_TRADITIONAL_CRC32(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: COMP_TRADITIONAL_CRC32
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_TRADITIONAL_CRC32(crc, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c1
    - ','
    - c2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: EQ_TRADITIONAL_CRC32
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EQ_TRADITIONAL_CRC32(c1, c2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - ','
    - table
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 64
    functionName: COMP_CRC32_NORMAL_TABLE
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_CRC32_NORMAL_TABLE(crc, data, len, table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: INIT_LEGACY_CRC32
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_LEGACY_CRC32(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - crc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: FIN_LEGACY_CRC32
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIN_LEGACY_CRC32(crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: COMP_LEGACY_CRC32
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_LEGACY_CRC32(crc, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c1
    - ','
    - c2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: EQ_LEGACY_CRC32
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EQ_LEGACY_CRC32(c1, c2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - crc
    - ','
    - data
    - ','
    - len
    - ','
    - table
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 100
    functionName: COMP_CRC32_REFLECTED_TABLE
    functionSourceFile: /src/postgres/src/include/utils/pg_crc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMP_CRC32_REFLECTED_TABLE(crc, data, len, table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: PGSIXBIT
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PGSIXBIT(ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: PGUNSIXBIT
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PGUNSIXBIT(val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - ch1
    - ','
    - ch2
    - ','
    - ch3
    - ','
    - ch4
    - ','
    - ch5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: MAKE_SQLSTATE
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAKE_SQLSTATE(ch1,ch2,ch3,ch4,ch5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ec
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: ERRCODE_TO_CATEGORY
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERRCODE_TO_CATEGORY(ec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ec
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: ERRCODE_IS_CATEGORY
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERRCODE_IS_CATEGORY(ec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: pg_prevent_errno_in_scope
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_prevent_errno_in_scope()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: pg_prevent_errno_in_scope
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_prevent_errno_in_scope()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - elevel
    - ','
    - domain
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 154
    functionName: ereport_domain
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ereport_domain(elevel, domain, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - elevel
    - ','
    - domain
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 164
    functionName: ereport_domain
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ereport_domain(elevel, domain, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elevel
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    functionName: ereport
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 147
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ereport(elevel, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elevel
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 244
    functionName: elog
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 235
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: elog(elevel, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - context
    - ','
    - domain
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 277
    functionName: errsave_domain
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: errsave_domain(context, domain, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - context
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 280
    functionName: errsave
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: errsave(context, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - context
    - ','
    - dummy_value
    - ','
    - domain
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 293
    functionName: ereturn_domain
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ereturn_domain(context, dummy_value, domain, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - context
    - ','
    - dummy_value
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 296
    functionName: ereturn
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ereturn(context, dummy_value, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 397
    functionName: PG_TRY
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 63
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_TRY(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 404
    functionName: PG_CATCH
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 49
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_CATCH(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 412
    functionName: PG_FINALLY
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_FINALLY(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 420
    functionName: PG_END_TRY
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 63
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_END_TRY(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 423
    functionName: PG_RE_THROW
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RE_THROW()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: FPzero
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FPzero(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fabs
      Src: /src/postgres/src/include/utils/geo_decls.h:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - A
    - B
    argTypes:
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: FPeq
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - fabs
    linkageType: ''
    returnType: bool
    signature: bool FPeq(double A, double B)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fabs
      Src: /src/postgres/src/include/utils/geo_decls.h:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - A
    - B
    argTypes:
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: FPne
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - fabs
    linkageType: ''
    returnType: bool
    signature: bool FPne(double A, double B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - A
    - B
    argTypes:
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: FPlt
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool FPlt(double A, double B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - A
    - B
    argTypes:
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: FPle
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool FPle(double A, double B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - A
    - B
    argTypes:
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: FPgt
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool FPgt(double A, double B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - A
    - B
    argTypes:
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: FPge
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool FPge(double A, double B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: FPzero
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FPzero(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: FPeq
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FPeq(A,B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: FPne
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FPne(A,B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: FPlt
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FPlt(A,B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: FPle
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FPle(A,B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: FPgt
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FPgt(A,B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: FPge
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FPge(A,B)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/geo_decls.h:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 178
    functionName: DatumGetPointP
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: Point
    signature: 'Point *

      DatumGetPointP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/geo_decls.h:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 183
    functionName: PointPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 1
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum PointPGetDatum(const Point *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 185
    functionName: PG_GETARG_POINT_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_POINT_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    functionName: PG_RETURN_POINT_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_POINT_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/geo_decls.h:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 191
    functionName: DatumGetLsegP
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: LSEG
    signature: 'LSEG *

      DatumGetLsegP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/geo_decls.h:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 196
    functionName: LsegPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 1
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum LsegPGetDatum(const LSEG *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 198
    functionName: PG_GETARG_LSEG_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_LSEG_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 199
    functionName: PG_RETURN_LSEG_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_LSEG_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/geo_decls.h:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 204
    functionName: DatumGetPathP
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: PATH
    signature: 'PATH *

      DatumGetPathP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/utils/geo_decls.h:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 209
    functionName: DatumGetPathPCopy
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: PATH
    signature: 'PATH *

      DatumGetPathPCopy(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/geo_decls.h:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - PATH*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 214
    functionName: PathPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum PathPGetDatum(const PATH *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 216
    functionName: PG_GETARG_PATH_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_PATH_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 217
    functionName: PG_GETARG_PATH_P_COPY
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_PATH_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: PG_RETURN_PATH_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_PATH_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/geo_decls.h:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 223
    functionName: DatumGetLineP
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: LINE
    signature: 'LINE *

      DatumGetLineP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/geo_decls.h:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 228
    functionName: LinePGetDatum
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum LinePGetDatum(const LINE *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 230
    functionName: PG_GETARG_LINE_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_LINE_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 231
    functionName: PG_RETURN_LINE_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_LINE_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/geo_decls.h:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: DatumGetBoxP
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: BOX
    signature: 'BOX *

      DatumGetBoxP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/geo_decls.h:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: BoxPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum BoxPGetDatum(const BOX *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 243
    functionName: PG_GETARG_BOX_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_BOX_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 244
    functionName: PG_RETURN_BOX_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_BOX_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/geo_decls.h:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 249
    functionName: DatumGetPolygonP
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: POLYGON
    signature: 'POLYGON *

      DatumGetPolygonP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/utils/geo_decls.h:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 254
    functionName: DatumGetPolygonPCopy
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: POLYGON
    signature: 'POLYGON *

      DatumGetPolygonPCopy(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/geo_decls.h:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 259
    functionName: PolygonPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum PolygonPGetDatum(const POLYGON *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: PG_GETARG_POLYGON_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_POLYGON_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 262
    functionName: PG_GETARG_POLYGON_P_COPY
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_POLYGON_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 263
    functionName: PG_RETURN_POLYGON_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_POLYGON_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/geo_decls.h:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 268
    functionName: DatumGetCircleP
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: CIRCLE
    signature: 'CIRCLE *

      DatumGetCircleP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/geo_decls.h:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - CIRCLE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: CirclePGetDatum
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum CirclePGetDatum(const CIRCLE *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 275
    functionName: PG_GETARG_CIRCLE_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_CIRCLE_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 276
    functionName: PG_RETURN_CIRCLE_P
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_CIRCLE_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 262
    functionName: DatumGetArrayTypeP
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetArrayTypeP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 263
    functionName: DatumGetArrayTypePCopy
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetArrayTypePCopy(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 264
    functionName: PG_GETARG_ARRAYTYPE_P
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_ARRAYTYPE_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 265
    functionName: PG_GETARG_ARRAYTYPE_P_COPY
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_ARRAYTYPE_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 266
    functionName: PG_RETURN_ARRAYTYPE_P
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_ARRAYTYPE_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 269
    functionName: PG_GETARG_EXPANDED_ARRAY
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_EXPANDED_ARRAY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - metacache
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 271
    functionName: PG_GETARG_EXPANDED_ARRAYX
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_EXPANDED_ARRAYX(n, metacache)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 272
    functionName: PG_RETURN_EXPANDED_ARRAY
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_EXPANDED_ARRAY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 275
    functionName: PG_GETARG_ANY_ARRAY_P
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_ANY_ARRAY_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 290
    functionName: ARR_SIZE
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_SIZE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 291
    functionName: ARR_NDIM
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_NDIM(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 292
    functionName: ARR_HASNULL
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_HASNULL(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 293
    functionName: ARR_ELEMTYPE
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_ELEMTYPE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 296
    functionName: ARR_DIMS
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_DIMS(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: ARR_LBOUND
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_LBOUND(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 305
    functionName: ARR_NULLBITMAP
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_NULLBITMAP(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ndims
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 312
    functionName: ARR_OVERHEAD_NONULLS
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_OVERHEAD_NONULLS(ndims)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ndims
    - ','
    - nitems
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: ARR_OVERHEAD_WITHNULLS
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_OVERHEAD_WITHNULLS(ndims, nitems)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 318
    functionName: ARR_DATA_OFFSET
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_DATA_OFFSET(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 324
    functionName: ARR_DATA_PTR
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARR_DATA_PTR(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: AARR_NDIM
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AARR_NDIM(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 335
    functionName: AARR_HASNULL
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AARR_HASNULL(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: AARR_ELEMTYPE
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AARR_ELEMTYPE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: AARR_DIMS
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AARR_DIMS(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: AARR_LBOUND
    functionSourceFile: /src/postgres/src/include/utils/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AARR_LBOUND(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/jsonpath.h:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: DatumGetJsonPathP
    functionSourceFile: /src/postgres/src/include/utils/jsonpath.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: JsonPath
    signature: 'JsonPath *

      DatumGetJsonPathP(Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/utils/jsonpath.h:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: DatumGetJsonPathPCopy
    functionSourceFile: /src/postgres/src/include/utils/jsonpath.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: JsonPath
    signature: 'JsonPath *

      DatumGetJsonPathPCopy(Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: PG_GETARG_JSONPATH_P
    functionSourceFile: /src/postgres/src/include/utils/jsonpath.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_JSONPATH_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: PG_GETARG_JSONPATH_P_COPY
    functionSourceFile: /src/postgres/src/include/utils/jsonpath.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_JSONPATH_P_COPY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: PG_RETURN_JSONPATH_P
    functionSourceFile: /src/postgres/src/include/utils/jsonpath.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_JSONPATH_P(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: jspIsScalar
    functionSourceFile: /src/postgres/src/include/utils/jsonpath.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: jspIsScalar(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jsp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: jspHasNext
    functionSourceFile: /src/postgres/src/include/utils/jsonpath.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: jspHasNext(jsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: VARATT_IS_EXPANDED_HEADER
    functionSourceFile: /src/postgres/src/include/utils/expandeddatum.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_EXPANDED_HEADER(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/expandeddatum.h:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - eohptr
    argTypes:
    - struct ExpandedObjectHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 142
    functionName: EOHPGetRWDatum
    functionSourceFile: /src/postgres/src/include/utils/expandeddatum.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum EOHPGetRWDatum(const struct ExpandedObjectHeader *eohptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/expandeddatum.h:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - eohptr
    argTypes:
    - struct ExpandedObjectHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 148
    functionName: EOHPGetRODatum
    functionSourceFile: /src/postgres/src/include/utils/expandeddatum.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum EOHPGetRODatum(const struct ExpandedObjectHeader *eohptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - d
    - ','
    - isnull
    - ','
    - typlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: DatumIsReadWriteExpandedObject
    functionSourceFile: /src/postgres/src/include/utils/expandeddatum.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumIsReadWriteExpandedObject(d, isnull, typlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - d
    - ','
    - isnull
    - ','
    - typlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 158
    functionName: MakeExpandedObjectReadOnly
    functionSourceFile: /src/postgres/src/include/utils/expandeddatum.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MakeExpandedObjectReadOnly(d, isnull, typlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/utils/pg_lsn.h:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: DatumGetLSN
    functionSourceFile: /src/postgres/src/include/utils/pg_lsn.h
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr DatumGetLSN(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/utils/pg_lsn.h:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: LSNGetDatum
    functionSourceFile: /src/postgres/src/include/utils/pg_lsn.h
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum LSNGetDatum(XLogRecPtr X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: PG_GETARG_LSN
    functionSourceFile: /src/postgres/src/include/utils/pg_lsn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_LSN(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: PG_RETURN_LSN
    functionSourceFile: /src/postgres/src/include/utils/pg_lsn.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_LSN(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/numeric.h:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: DatumGetNumeric
    functionSourceFile: /src/postgres/src/include/utils/numeric.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: Numeric
    signature: Numeric DatumGetNumeric(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/utils/numeric.h:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: DatumGetNumericCopy
    functionSourceFile: /src/postgres/src/include/utils/numeric.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: Numeric
    signature: Numeric DatumGetNumericCopy(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/numeric.h:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: NumericGetDatum
    functionSourceFile: /src/postgres/src/include/utils/numeric.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum NumericGetDatum(Numeric X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: PG_GETARG_NUMERIC
    functionSourceFile: /src/postgres/src/include/utils/numeric.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_NUMERIC(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: PG_GETARG_NUMERIC_COPY
    functionSourceFile: /src/postgres/src/include/utils/numeric.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_NUMERIC_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: PG_RETURN_NUMERIC
    functionSourceFile: /src/postgres/src/include/utils/numeric.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_NUMERIC(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: palloc_object
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc_object(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: palloc0_object
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc0_object(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    functionName: palloc_array
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc_array(type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: palloc0_array
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc0_array(type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - count
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: palloc_array_extended
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc_array_extended(type, count, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - pointer
    - ','
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: repalloc_array
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: repalloc_array(pointer, type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - pointer
    - ','
    - type
    - ','
    - oldcount
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: repalloc0_array
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: repalloc0_array(pointer, type, oldcount, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - pointer
    - ','
    - type
    - ','
    - count
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    functionName: repalloc_array_extended
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: repalloc_array_extended(pointer, type, count, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - context
    argTypes:
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: MemoryContextSwitchTo
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 88
    functionsReached: []
    linkageType: ''
    returnType: MemoryContext
    signature: MemoryContext MemoryContextSwitchTo(MemoryContext context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - inetptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: ip_family
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ip_family(inetptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - inetptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: ip_bits
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ip_bits(inetptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - inetptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: ip_addr
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ip_addr(inetptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - inetptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: ip_addrsize
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ip_addrsize(inetptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - inetptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: ip_maxbits
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ip_maxbits(inetptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dst
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: SET_INET_VARSIZE
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_INET_VARSIZE(dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_PACKED
      Src: /src/postgres/src/include/utils/inet.h:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: DatumGetInetPP
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_PACKED
    linkageType: ''
    returnType: inet
    signature: 'inet *

      DatumGetInetPP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/inet.h:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - inet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: InetPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum InetPGetDatum(const inet *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: PG_GETARG_INET_PP
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_INET_PP(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 136
    functionName: PG_RETURN_INET_P
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_INET_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/inet.h:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 142
    functionName: DatumGetInetP
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: inet
    signature: 'inet *

      DatumGetInetP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: PG_GETARG_INET_P
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_INET_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/inet.h:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: DatumGetMacaddrP
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: macaddr
    signature: 'macaddr *

      DatumGetMacaddrP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/inet.h:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - macaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: MacaddrPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum MacaddrPGetDatum(const macaddr *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 159
    functionName: PG_GETARG_MACADDR_P
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_MACADDR_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 160
    functionName: PG_RETURN_MACADDR_P
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_MACADDR_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/inet.h:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: DatumGetMacaddr8P
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: macaddr8
    signature: 'macaddr8 *

      DatumGetMacaddr8P(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/inet.h:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - macaddr8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 172
    functionName: Macaddr8PGetDatum
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum Macaddr8PGetDatum(const macaddr8 *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 175
    functionName: PG_GETARG_MACADDR8_P
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_MACADDR8_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: PG_RETURN_MACADDR8_P
    functionSourceFile: /src/postgres/src/include/utils/inet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_MACADDR8_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - base
    - ','
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: fpm_page_to_pointer
    functionSourceFile: /src/postgres/src/include/utils/freepage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fpm_page_to_pointer(base, page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - base
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: fpm_pointer_to_page
    functionSourceFile: /src/postgres/src/include/utils/freepage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fpm_pointer_to_page(base, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: fpm_size_to_pages
    functionSourceFile: /src/postgres/src/include/utils/freepage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fpm_size_to_pages(sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - base
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: fpm_pointer_is_page_aligned
    functionSourceFile: /src/postgres/src/include/utils/freepage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fpm_pointer_is_page_aligned(base, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - base
    - ','
    - relptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: fpm_relptr_is_page_aligned
    functionSourceFile: /src/postgres/src/include/utils/freepage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fpm_relptr_is_page_aligned(base, relptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fpm
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: fpm_segment_base
    functionSourceFile: /src/postgres/src/include/utils/freepage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fpm_segment_base(fpm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fpm
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 90
    functionName: fpm_largest
    functionSourceFile: /src/postgres/src/include/utils/freepage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fpm_largest(fpm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: INJECTION_POINT_LOAD
    functionSourceFile: /src/postgres/src/include/utils/injection_point.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INJECTION_POINT_LOAD(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: INJECTION_POINT
    functionSourceFile: /src/postgres/src/include/utils/injection_point.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INJECTION_POINT(name, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: INJECTION_POINT_CACHED
    functionSourceFile: /src/postgres/src/include/utils/injection_point.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INJECTION_POINT_CACHED(name, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: IS_INJECTION_POINT_ATTACHED
    functionSourceFile: /src/postgres/src/include/utils/injection_point.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_INJECTION_POINT_ATTACHED(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: INJECTION_POINT_LOAD
    functionSourceFile: /src/postgres/src/include/utils/injection_point.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INJECTION_POINT_LOAD(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: INJECTION_POINT
    functionSourceFile: /src/postgres/src/include/utils/injection_point.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INJECTION_POINT(name, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: INJECTION_POINT_CACHED
    functionSourceFile: /src/postgres/src/include/utils/injection_point.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INJECTION_POINT_CACHED(name, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: IS_INJECTION_POINT_ATTACHED
    functionSourceFile: /src/postgres/src/include/utils/injection_point.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_INJECTION_POINT_ATTACHED(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: DsaPointerIsValid
    functionSourceFile: /src/postgres/src/include/utils/dsa.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DsaPointerIsValid(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - area
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: dsa_allocate
    functionSourceFile: /src/postgres/src/include/utils/dsa.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dsa_allocate(area, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - area
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 115
    functionName: dsa_allocate0
    functionSourceFile: /src/postgres/src/include/utils/dsa.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dsa_allocate0(area, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tranche_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: dsa_create
    functionSourceFile: /src/postgres/src/include/utils/dsa.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dsa_create(tranche_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - place
    - ','
    - size
    - ','
    - tranche_id
    - ','
    - segment
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: dsa_create_in_place
    functionSourceFile: /src/postgres/src/include/utils/dsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dsa_create_in_place(place, size, tranche_id, segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 679
    functionName: pgstat_assert_is_up
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_assert_is_up()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fpin
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 893
    functionName: pgstat_read_chunk_s
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_read_chunk_s(fpin, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fpout
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 894
    functionName: pgstat_write_chunk_s
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_write_chunk_s(fpout, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:907,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/include/utils/pgstat_internal.h:909,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/include/utils/pgstat_internal.h:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - cc
    argTypes:
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 904
    functionDepth: 1
    functionLinenumber: 904
    functionLinenumberEnd: 912
    functionName: pgstat_begin_changecount_write
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 1
    functionsReached:
    - Assert
    - pg_write_barrier
    - START_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void pgstat_begin_changecount_write(uint32 *cc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:917,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/include/utils/pgstat_internal.h:919,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/include/utils/pgstat_internal.h:923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - cc
    argTypes:
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 914
    functionDepth: 1
    functionLinenumber: 914
    functionLinenumberEnd: 924
    functionName: pgstat_end_changecount_write
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 1
    functionsReached:
    - Assert
    - pg_write_barrier
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void pgstat_end_changecount_write(uint32 *cc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/utils/pgstat_internal.h:931,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/include/utils/pgstat_internal.h:933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cc
    argTypes:
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 936
    functionName: pgstat_begin_changecount_read
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - pg_read_barrier
    linkageType: ''
    returnType: uint32
    signature: uint32 pgstat_begin_changecount_read(uint32 *cc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_read_barrier
      Src: /src/postgres/src/include/utils/pgstat_internal.h:946,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cc
    - before_cc
    argTypes:
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 941
    functionDepth: 1
    functionLinenumber: 941
    functionLinenumberEnd: 956
    functionName: pgstat_end_changecount_read
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - pg_read_barrier
    linkageType: ''
    returnType: bool
    signature: bool pgstat_end_changecount_read(uint32 *cc, uint32 before_cc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_begin_changecount_read
      Src: /src/postgres/src/include/utils/pgstat_internal.h:973,1
    - Dst: memcpy
      Src: /src/postgres/src/include/utils/pgstat_internal.h:975,1
    - Dst: pgstat_end_changecount_read
      Src: /src/postgres/src/include/utils/pgstat_internal.h:977,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - dst
    - src
    - len
    - cc
    argTypes:
    - void*
    - void*
    - size_t
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 965
    functionDepth: 2
    functionLinenumber: 965
    functionLinenumberEnd: 978
    functionName: pgstat_copy_changecounted_stats
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 2
    functionsReached:
    - pgstat_end_changecount_read
    - pgstat_begin_changecount_read
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void pgstat_copy_changecounted_stats(void *dst, void *src, size_t
      len,\n\t\t\t\t\t\t\t\tuint32 *cc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:984,1
    - Dst: memcmp
      Src: /src/postgres/src/include/utils/pgstat_internal.h:985,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - a
    - b
    - size
    - arg
    argTypes:
    - void*
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 981
    functionDepth: 1
    functionLinenumber: 981
    functionLinenumberEnd: 986
    functionName: pgstat_cmp_hash_key
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - Assert
    - memcmp
    linkageType: ''
    returnType: int
    signature: int pgstat_cmp_hash_key(const void *a, const void *b, size_t size,
      void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:993,1
    - Dst: fasthash32
      Src: /src/postgres/src/include/utils/pgstat_internal.h:994,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - d
    - size
    - arg
    argTypes:
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 988
    functionDepth: 5
    functionLinenumber: 988
    functionLinenumberEnd: 995
    functionName: pgstat_hash_hash_key
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - Assert
    - fasthash32
    linkageType: ''
    returnType: uint32
    signature: uint32 pgstat_hash_hash_key(const void *d, size_t size, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_get_kind_info
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 1001
    functionDepth: 1
    functionLinenumber: 1001
    functionLinenumberEnd: 1005
    functionName: pgstat_get_entry_len
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - pgstat_get_kind_info
    linkageType: ''
    returnType: size_t
    signature: size_t pgstat_get_entry_len(PgStat_Kind kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_get_kind_info
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1013,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1015,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - kind
    - entry
    argTypes:
    - PgStat_Kind
    - PgStatShared_Common*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1018
    functionName: pgstat_get_entry_data
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - pgstat_get_kind_info
    - Assert
    linkageType: ''
    returnType: void
    signature: 'void *

      pgstat_get_entry_data(PgStat_Kind kind, PgStatShared_Common *entry)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1026,1
    - Dst: pgstat_get_kind_info
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1026,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1023
    functionDepth: 2
    functionLinenumber: 1023
    functionLinenumberEnd: 1029
    functionName: pgstat_get_entry_count
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - Assert
    - pg_atomic_read_u64
    - pgstat_get_kind_info
    linkageType: ''
    returnType: uint64
    signature: uint64 pgstat_get_entry_count(PgStat_Kind kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1040,1
    - Dst: pgstat_is_kind_custom
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1040,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1041,1
    - Dst: pgstat_get_kind_info
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1044
    functionName: pgstat_get_custom_shmem_data
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 3
    functionsReached:
    - Assert
    - pgstat_is_kind_custom
    - pgstat_get_kind_info
    linkageType: ''
    returnType: void
    signature: 'void *

      pgstat_get_custom_shmem_data(PgStat_Kind kind)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1055,1
    - Dst: pgstat_is_kind_custom
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1055,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1056,1
    - Dst: pgstat_get_kind_info
      Src: /src/postgres/src/include/utils/pgstat_internal.h:1056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1050
    functionDepth: 1
    functionLinenumber: 1050
    functionLinenumberEnd: 1059
    functionName: pgstat_get_custom_snapshot_data
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 2
    functionsReached:
    - Assert
    - pgstat_is_kind_custom
    - pgstat_get_kind_info
    linkageType: ''
    returnType: void
    signature: 'void *

      pgstat_get_custom_snapshot_data(PgStat_Kind kind)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/utils/cash.h:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: DatumGetCash
    functionSourceFile: /src/postgres/src/include/utils/cash.h
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    linkageType: ''
    returnType: Cash
    signature: Cash DatumGetCash(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/utils/cash.h:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Cash
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: CashGetDatum
    functionSourceFile: /src/postgres/src/include/utils/cash.h
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum CashGetDatum(Cash X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: PG_GETARG_CASH
    functionSourceFile: /src/postgres/src/include/utils/cash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_CASH(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: PG_RETURN_CASH
    functionSourceFile: /src/postgres/src/include/utils/cash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_CASH(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXPANDED_HEADER
      Src: /src/postgres/src/include/utils/arrayaccess.h:57,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/include/utils/arrayaccess.h:72,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/include/utils/arrayaccess.h:73,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/include/utils/arrayaccess.h:80,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/include/utils/arrayaccess.h:81,1
    - Dst: typalign_to_alignby
      Src: /src/postgres/src/include/utils/arrayaccess.h:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 5
    argNames:
    - it
    - a
    - elmlen
    - elmbyval
    - elmalign
    argTypes:
    - array_iter*
    - AnyArrayType*
    - int
    - bool
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 87
    functionName: array_iter_setup
    functionSourceFile: /src/postgres/src/include/utils/arrayaccess.h
    functionUses: 0
    functionsReached:
    - typalign_to_alignby
    - ARR_DATA_PTR
    - VARATT_IS_EXPANDED_HEADER
    - ARR_NULLBITMAP
    linkageType: ''
    returnType: void
    signature: "void array_iter_setup(array_iter *it, AnyArrayType *a,\n\t\t\t\t int
      elmlen, bool elmbyval, char elmalign)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fetch_att
      Src: /src/postgres/src/include/utils/arrayaccess.h:109,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/include/utils/arrayaccess.h:110,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/include/utils/arrayaccess.h:112,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - it
    - isnull
    - i
    argTypes:
    - array_iter*
    - bool*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 125
    functionName: array_iter_next
    functionSourceFile: /src/postgres/src/include/utils/arrayaccess.h
    functionUses: 0
    functionsReached:
    - fetch_att
    - att_nominal_alignby
    - att_addlength_pointer
    linkageType: ''
    returnType: Datum
    signature: Datum array_iter_next(array_iter *it, bool *isnull, int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: pgstat_is_kind_builtin
    functionSourceFile: /src/postgres/src/include/utils/pgstat_kind.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pgstat_is_kind_builtin(PgStat_Kind kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: pgstat_is_kind_custom
    functionSourceFile: /src/postgres/src/include/utils/pgstat_kind.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pgstat_is_kind_custom(PgStat_Kind kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: get_float4_infinity
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: float4
    signature: float4 get_float4_infinity(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: get_float8_infinity
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: float8
    signature: float8 get_float8_infinity(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: get_float4_nan
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: float4
    signature: float4 get_float4_nan(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 91
    functionName: get_float8_nan
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: float8
    signature: float8 get_float8_nan(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:109,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:109,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:109,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:109,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 113
    functionName: float4_pl
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isinf
    - float_overflow_error
    - unlikely
    linkageType: ''
    returnType: float4
    signature: float4 float4_pl(const float4 val1, const float4 val2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:121,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:121,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:121,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:121,1
    - Dst: float_overflow_error_ext
      Src: /src/postgres/src/include/utils/float.h:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - val1
    - val2
    - escontext
    argTypes:
    - float8
    - float8
    - struct Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 125
    functionName: float8_pl_safe
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isinf
    - unlikely
    - float_overflow_error_ext
    linkageType: ''
    returnType: float8
    signature: float8 float8_pl_safe(const float8 val1, const float8 val2, struct
      Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_pl_safe
      Src: /src/postgres/src/include/utils/float.h:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 131
    functionName: float8_pl
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - float8_pl_safe
    linkageType: ''
    returnType: float8
    signature: float8 float8_pl(const float8 val1, const float8 val2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:139,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:139,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:139,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:139,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:140,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 143
    functionName: float4_mi
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isinf
    - float_overflow_error
    - unlikely
    linkageType: ''
    returnType: float4
    signature: float4 float4_mi(const float4 val1, const float4 val2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:151,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:151,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:151,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:151,1
    - Dst: float_overflow_error_ext
      Src: /src/postgres/src/include/utils/float.h:152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - val1
    - val2
    - escontext
    argTypes:
    - float8
    - float8
    - struct Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 155
    functionName: float8_mi_safe
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isinf
    - unlikely
    - float_overflow_error_ext
    linkageType: ''
    returnType: float8
    signature: float8 float8_mi_safe(const float8 val1, const float8 val2, struct
      Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_mi_safe
      Src: /src/postgres/src/include/utils/float.h:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: float8_mi
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - float8_mi_safe
    linkageType: ''
    returnType: float8
    signature: float8 float8_mi(const float8 val1, const float8 val2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:169,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:169,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:169,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:169,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:170,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:171,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/include/utils/float.h:172,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 175
    functionName: float4_mul
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isinf
    - float_overflow_error
    - unlikely
    - float_underflow_error
    linkageType: ''
    returnType: float4
    signature: float4 float4_mul(const float4 val1, const float4 val2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:183,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:183,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:183,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:183,1
    - Dst: float_overflow_error_ext
      Src: /src/postgres/src/include/utils/float.h:184,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:185,1
    - Dst: float_underflow_error_ext
      Src: /src/postgres/src/include/utils/float.h:186,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 3
    argNames:
    - val1
    - val2
    - escontext
    argTypes:
    - float8
    - float8
    - struct Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 189
    functionName: float8_mul_safe
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isinf
    - unlikely
    - float_overflow_error_ext
    - float_underflow_error_ext
    linkageType: ''
    returnType: float8
    signature: float8 float8_mul_safe(const float8 val1, const float8 val2, struct
      Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_mul_safe
      Src: /src/postgres/src/include/utils/float.h:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 195
    functionName: float8_mul
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - float8_mul_safe
    linkageType: ''
    returnType: float8
    signature: float8 float8_mul(const float8 val1, const float8 val2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:202,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:202,1
    - Dst: float_zero_divide_error
      Src: /src/postgres/src/include/utils/float.h:203,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:205,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:205,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:205,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:206,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:207,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:207,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/include/utils/float.h:208,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 211
    functionName: float4_div
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isinf
    - float_zero_divide_error
    - float_overflow_error
    - unlikely
    - isnan
    - float_underflow_error
    linkageType: ''
    returnType: float4
    signature: float4 float4_div(const float4 val1, const float4 val2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:218,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:218,1
    - Dst: float_zero_divide_error_ext
      Src: /src/postgres/src/include/utils/float.h:219,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:221,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:221,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:221,1
    - Dst: float_overflow_error_ext
      Src: /src/postgres/src/include/utils/float.h:222,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:223,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:223,1
    - Dst: float_underflow_error_ext
      Src: /src/postgres/src/include/utils/float.h:224,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 3
    argNames:
    - val1
    - val2
    - escontext
    argTypes:
    - float8
    - float8
    - struct Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 227
    functionName: float8_div_safe
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - float_overflow_error_ext
    - float_underflow_error_ext
    - float_zero_divide_error_ext
    - isinf
    - unlikely
    - isnan
    linkageType: ''
    returnType: float8
    signature: float8 float8_div_safe(const float8 val1, const float8 val2, struct
      Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_div_safe
      Src: /src/postgres/src/include/utils/float.h:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: float8_div
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - float8_div_safe
    linkageType: ''
    returnType: float8
    signature: float8 float8_div(const float8 val1, const float8 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:246,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:246,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: float4_eq
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float4_eq(const float4 val1, const float4 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:252,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:252,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 253
    functionName: float8_eq
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float8_eq(const float8 val1, const float8 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:258,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:258,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 259
    functionName: float4_ne
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float4_ne(const float4 val1, const float4 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:264,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:264,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 265
    functionName: float8_ne
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float8_ne(const float8 val1, const float8 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:270,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:270,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 271
    functionName: float4_lt
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float4_lt(const float4 val1, const float4 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:276,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 277
    functionName: float8_lt
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float8_lt(const float8 val1, const float8 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:282,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 283
    functionName: float4_le
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float4_le(const float4 val1, const float4 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:288,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 289
    functionName: float8_le
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float8_le(const float8 val1, const float8 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:294,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 295
    functionName: float4_gt
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float4_gt(const float4 val1, const float4 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:300,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 301
    functionName: float8_gt
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float8_gt(const float8 val1, const float8 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:306,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 307
    functionName: float4_ge
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float4_ge(const float4 val1, const float4 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:312,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 313
    functionName: float8_ge
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: bool
    signature: bool float8_ge(const float8 val1, const float8 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float4_lt
      Src: /src/postgres/src/include/utils/float.h:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 319
    functionName: float4_min
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - float4_lt
    linkageType: ''
    returnType: float4
    signature: float4 float4_min(const float4 val1, const float4 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_lt
      Src: /src/postgres/src/include/utils/float.h:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 325
    functionName: float8_min
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - float8_lt
    linkageType: ''
    returnType: float8
    signature: float8 float8_min(const float8 val1, const float8 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float4_gt
      Src: /src/postgres/src/include/utils/float.h:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 327
    functionDepth: 2
    functionLinenumber: 327
    functionLinenumberEnd: 331
    functionName: float4_max
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - float4_gt
    linkageType: ''
    returnType: float4
    signature: float4 float4_max(const float4 val1, const float4 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_gt
      Src: /src/postgres/src/include/utils/float.h:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: float8_max
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - float8_gt
    linkageType: ''
    returnType: float8
    signature: float8 float8_max(const float8 val1, const float8 val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_ps_display_with_len
      Src: /src/postgres/src/include/utils/ps_status.h:42,1
    - Dst: strlen
      Src: /src/postgres/src/include/utils/ps_status.h:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - activity
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: set_ps_display
    functionSourceFile: /src/postgres/src/include/utils/ps_status.h
    functionUses: 0
    functionsReached:
    - strlen
    - set_ps_display_with_len
    linkageType: ''
    returnType: void
    signature: void set_ps_display(const char *activity)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - je_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 154
    functionName: JBE_OFFLENFLD
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_OFFLENFLD(je_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - je_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 155
    functionName: JBE_HAS_OFF
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_HAS_OFF(je_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - je_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    functionName: JBE_ISSTRING
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_ISSTRING(je_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - je_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: JBE_ISNUMERIC
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_ISNUMERIC(je_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - je_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 158
    functionName: JBE_ISCONTAINER
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_ISCONTAINER(je_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - je_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 159
    functionName: JBE_ISNULL
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_ISNULL(je_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - je_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 160
    functionName: JBE_ISBOOL_TRUE
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_ISBOOL_TRUE(je_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - je_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 161
    functionName: JBE_ISBOOL_FALSE
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_ISBOOL_FALSE(je_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - je_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    functionName: JBE_ISBOOL
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_ISBOOL(je_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - offset
    - ','
    - je
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: JBE_ADVANCE_OFFSET
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JBE_ADVANCE_OFFSET(offset, je)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    functionName: JsonContainerSize
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JsonContainerSize(jc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 210
    functionName: JsonContainerIsScalar
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JsonContainerIsScalar(jc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 211
    functionName: JsonContainerIsObject
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JsonContainerIsObject(jc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 212
    functionName: JsonContainerIsArray
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JsonContainerIsArray(jc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jbp_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 222
    functionName: JB_ROOT_COUNT
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JB_ROOT_COUNT(jbp_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jbp_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 223
    functionName: JB_ROOT_IS_SCALAR
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JB_ROOT_IS_SCALAR(jbp_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jbp_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 224
    functionName: JB_ROOT_IS_OBJECT
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JB_ROOT_IS_OBJECT(jbp_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jbp_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 225
    functionName: JB_ROOT_IS_ARRAY
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JB_ROOT_IS_ARRAY(jbp_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jsonbval
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: IsAJsonbScalar
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsAJsonbScalar(jsonbval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/jsonb.h:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 404
    functionName: DatumGetJsonbP
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: Jsonb
    signature: 'Jsonb *

      DatumGetJsonbP(Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/utils/jsonb.h:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 410
    functionName: DatumGetJsonbPCopy
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: Jsonb
    signature: 'Jsonb *

      DatumGetJsonbPCopy(Datum d)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/jsonb.h:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - Jsonb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 416
    functionName: JsonbPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum JsonbPGetDatum(const Jsonb *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 419
    functionName: PG_GETARG_JSONB_P
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_JSONB_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 420
    functionName: PG_GETARG_JSONB_P_COPY
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_JSONB_P_COPY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 421
    functionName: PG_RETURN_JSONB_P
    functionSourceFile: /src/postgres/src/include/utils/jsonb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_JSONB_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: RangeTypeGetOid
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RangeTypeGetOid(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: RANGE_HAS_LBOUND
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RANGE_HAS_LBOUND(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: RANGE_HAS_UBOUND
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RANGE_HAS_UBOUND(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: RangeIsEmpty
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RangeIsEmpty(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: RangeIsOrContainsEmpty
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RangeIsOrContainsEmpty(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/rangetypes.h:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 77
    functionName: DatumGetRangeTypeP
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: RangeType
    signature: 'RangeType *

      DatumGetRangeTypeP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/include/utils/rangetypes.h:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: DatumGetRangeTypePCopy
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM_COPY
    linkageType: ''
    returnType: RangeType
    signature: 'RangeType *

      DatumGetRangeTypePCopy(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/rangetypes.h:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - RangeType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: RangeTypePGetDatum
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum RangeTypePGetDatum(const RangeType *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: PG_GETARG_RANGE_P
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_RANGE_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: PG_GETARG_RANGE_P_COPY
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_RANGE_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: PG_RETURN_RANGE_P
    functionSourceFile: /src/postgres/src/include/utils/rangetypes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_RANGE_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: AllocSizeIsValid
    functionSourceFile: /src/postgres/src/include/utils/memutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AllocSizeIsValid(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: AllocHugeSizeIsValid
    functionSourceFile: /src/postgres/src/include/utils/memutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AllocHugeSizeIsValid(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cxt
    - ','
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: MemoryContextCopyAndSetIdentifier
    functionSourceFile: /src/postgres/src/include/utils/memutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MemoryContextCopyAndSetIdentifier(cxt, id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - parent
    - ','
    - name
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: AllocSetContextCreate
    functionSourceFile: /src/postgres/src/include/utils/memutils.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AllocSetContextCreate(parent, name, ...)
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 44
    argCount: 2
    argNames:
    - ptr
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 320
    functionName: pg_memory_is_all_zeros
    functionSourceFile: /src/postgres/src/include/utils/memutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pg_memory_is_all_zeros(const void *ptr, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - alignto
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: PallocAlignedExtraBytes
    functionSourceFile: /src/postgres/src/include/utils/memutils_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PallocAlignedExtraBytes(alignto)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/memutils_internal.h:169,1
    - Dst: AllocSizeIsValid
      Src: /src/postgres/src/include/utils/memutils_internal.h:169,1
    - Dst: AllocHugeSizeIsValid
      Src: /src/postgres/src/include/utils/memutils_internal.h:171,1
    - Dst: MemoryContextSizeFailure
      Src: /src/postgres/src/include/utils/memutils_internal.h:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - context
    - size
    - flags
    argTypes:
    - MemoryContext
    - Size
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 174
    functionName: MemoryContextCheckSize
    functionSourceFile: /src/postgres/src/include/utils/memutils_internal.h
    functionUses: 0
    functionsReached:
    - AllocHugeSizeIsValid
    - unlikely
    - AllocSizeIsValid
    - MemoryContextSizeFailure
    linkageType: ''
    returnType: void
    signature: void MemoryContextCheckSize(MemoryContext context, Size size, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 137
    functionName: PointerGetMemoryChunk
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PointerGetMemoryChunk(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 140
    functionName: MemoryChunkGetPointer
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MemoryChunkGetPointer(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hdrmask
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: HdrMaskIsExternal
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HdrMaskIsExternal(hdrmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hdrmask
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 146
    functionName: HdrMaskGetValue
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HdrMaskGetValue(hdrmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hdrmask
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: HdrMaskBlockOffset
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HdrMaskBlockOffset(hdrmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hdrmask
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 158
    functionName: HdrMaskCheckMagic
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HdrMaskCheckMagic(hdrmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:174,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:175,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:176,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - chunk
    - block
    - value
    - methodid
    argTypes:
    - MemoryChunk*
    - void*
    - Size
    - MemoryContextMethodID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 182
    functionName: MemoryChunkSetHdrMask
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void MemoryChunkSetHdrMask(MemoryChunk *chunk, void *block,\n\t\t\t\t\t
      \ Size value, MemoryContextMethodID methodid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - chunk
    - methodid
    argTypes:
    - MemoryChunk*
    - MemoryContextMethodID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 197
    functionName: MemoryChunkSetHdrMaskExternal
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void MemoryChunkSetHdrMaskExternal(MemoryChunk *chunk,\n\t\t\t\t\t\t\t
      \ MemoryContextMethodID methodid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:210,1
    - Dst: HdrMaskIsExternal
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:210,1
    - Dst: HdrMaskCheckMagic
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:211,1
    - Dst: HdrMaskIsExternal
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - MemoryChunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 214
    functionName: MemoryChunkIsExternal
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached:
    - Assert
    - HdrMaskCheckMagic
    - HdrMaskIsExternal
    linkageType: ''
    returnType: bool
    signature: bool MemoryChunkIsExternal(MemoryChunk *chunk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:224,1
    - Dst: HdrMaskIsExternal
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:224,1
    - Dst: HdrMaskGetValue
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - MemoryChunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 227
    functionName: MemoryChunkGetValue
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached:
    - Assert
    - HdrMaskGetValue
    - HdrMaskIsExternal
    linkageType: ''
    returnType: Size
    signature: Size MemoryChunkGetValue(MemoryChunk *chunk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:237,1
    - Dst: HdrMaskIsExternal
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:237,1
    - Dst: HdrMaskBlockOffset
      Src: /src/postgres/src/include/utils/memutils_memorychunk.h:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - MemoryChunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 240
    functionName: MemoryChunkGetBlock
    functionSourceFile: /src/postgres/src/include/utils/memutils_memorychunk.h
    functionUses: 0
    functionsReached:
    - Assert
    - HdrMaskBlockOffset
    - HdrMaskIsExternal
    linkageType: ''
    returnType: void
    signature: 'void *

      MemoryChunkGetBlock(MemoryChunk *chunk)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: ACLITEM_GET_PRIVS
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACLITEM_GET_PRIVS(item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: ACLITEM_GET_GOPTIONS
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACLITEM_GET_GOPTIONS(item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: ACLITEM_GET_RIGHTS
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACLITEM_GET_RIGHTS(item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - privs
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: ACL_GRANT_OPTION_FOR
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_GRANT_OPTION_FOR(privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - privs
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: ACL_OPTION_TO_PRIVS
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_OPTION_TO_PRIVS(privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - item
    - ','
    - privs
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: ACLITEM_SET_PRIVS
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACLITEM_SET_PRIVS(item,privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - item
    - ','
    - goptions
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: ACLITEM_SET_GOPTIONS
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACLITEM_SET_GOPTIONS(item,goptions)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - item
    - ','
    - rights
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: ACLITEM_SET_RIGHTS
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACLITEM_SET_RIGHTS(item,rights)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - item
    - ','
    - privs
    - ','
    - goptions
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: ACLITEM_SET_PRIVS_GOPTIONS
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACLITEM_SET_PRIVS_GOPTIONS(item,privs,goptions)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ACL
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: ACL_NUM
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_NUM(ACL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ACL
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    functionName: ACL_DAT
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_DAT(ACL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: ACL_N_SIZE
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_N_SIZE(N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ACL
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: ACL_SIZE
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_SIZE(ACL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: DatumGetAclItemP
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetAclItemP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: PG_GETARG_ACLITEM_P
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_ACLITEM_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: PG_RETURN_ACLITEM_P
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_ACLITEM_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: DatumGetAclP
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetAclP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: DatumGetAclPCopy
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetAclPCopy(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: PG_GETARG_ACL_P
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_ACL_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    functionName: PG_GETARG_ACL_P_COPY
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_ACL_P_COPY(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 125
    functionName: PG_RETURN_ACL_P
    functionSourceFile: /src/postgres/src/include/utils/acl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_ACL_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EOHPGetRWDatum
      Src: /src/postgres/src/include/utils/expandedrecord.h:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - erh
    argTypes:
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: ExpandedRecordGetDatum
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 3
    functionsReached:
    - EOHPGetRWDatum
    linkageType: ''
    returnType: Datum
    signature: Datum ExpandedRecordGetDatum(const ExpandedRecordHeader *erh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EOHPGetRODatum
      Src: /src/postgres/src/include/utils/expandedrecord.h:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - erh
    argTypes:
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 152
    functionName: ExpandedRecordGetRODatum
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 0
    functionsReached:
    - EOHPGetRODatum
    linkageType: ''
    returnType: Datum
    signature: Datum ExpandedRecordGetRODatum(const ExpandedRecordHeader *erh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 155
    functionName: PG_GETARG_EXPANDED_RECORD
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_EXPANDED_RECORD(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    functionName: PG_RETURN_EXPANDED_RECORD
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_EXPANDED_RECORD(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - erh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: ExpandedRecordIsEmpty
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ExpandedRecordIsEmpty(erh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - erh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 162
    functionName: ExpandedRecordIsDomain
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ExpandedRecordIsDomain(erh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - erh
    - ','
    - cxt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: TransferExpandedRecord
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransferExpandedRecord(erh, cxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - erh
    - ','
    - fnumber
    - ','
    - newValue
    - ','
    - isnull
    - ','
    - expand_external
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 210
    functionName: expanded_record_set_field
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: expanded_record_set_field(erh, fnumber, newValue, isnull, expand_external)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/include/utils/expandedrecord.h:220,1
    - Dst: expanded_record_fetch_tupdesc
      Src: /src/postgres/src/include/utils/expandedrecord.h:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - erh
    argTypes:
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: expanded_record_get_tupdesc
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 8
    functionsReached:
    - expanded_record_fetch_tupdesc
    - likely
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc expanded_record_get_tupdesc(ExpandedRecordHeader *erh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/include/utils/expandedrecord.h:232,1
    - Dst: expanded_record_fetch_field
      Src: /src/postgres/src/include/utils/expandedrecord.h:238,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - erh
    - fnumber
    - isnull
    argTypes:
    - ExpandedRecordHeader*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 239
    functionName: expanded_record_get_field
    functionSourceFile: /src/postgres/src/include/utils/expandedrecord.h
    functionUses: 2
    functionsReached:
    - likely
    - expanded_record_fetch_field
    linkageType: ''
    returnType: Datum
    signature: "Datum expanded_record_get_field(ExpandedRecordHeader *erh, int fnumber,\n\t\t\t\t\t\t
      \ bool *isnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/utils/timestamp.h:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: DatumGetTimestamp
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp DatumGetTimestamp(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/utils/timestamp.h:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 37
    functionName: DatumGetTimestampTz
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz DatumGetTimestampTz(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/timestamp.h:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: DatumGetIntervalP
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: Interval
    signature: 'Interval *

      DatumGetIntervalP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/utils/timestamp.h:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Timestamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: TimestampGetDatum
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum TimestampGetDatum(Timestamp X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/utils/timestamp.h:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: TimestampTzGetDatum
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 1
    functionsReached:
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum TimestampTzGetDatum(TimestampTz X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/timestamp.h:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: IntervalPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum IntervalPGetDatum(const Interval *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: PG_GETARG_TIMESTAMP
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TIMESTAMP(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: PG_GETARG_TIMESTAMPTZ
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TIMESTAMPTZ(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: PG_GETARG_INTERVAL_P
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_INTERVAL_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: PG_RETURN_TIMESTAMP
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_TIMESTAMP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: PG_RETURN_TIMESTAMPTZ
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_TIMESTAMPTZ(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: PG_RETURN_INTERVAL_P
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_INTERVAL_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: TIMESTAMP_MASK
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_MASK(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: INTERVAL_MASK
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_MASK(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: INTERVAL_TYPMOD
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_TYPMOD(p,r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: INTERVAL_PRECISION
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_PRECISION(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: INTERVAL_RANGE
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_RANGE(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tz
    - ','
    - ms
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: TimestampTzPlusMilliseconds
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TimestampTzPlusMilliseconds(tz,ms)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tz
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: TimestampTzPlusSeconds
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TimestampTzPlusSeconds(tz,s)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - start_time
    - stop_time
    argTypes:
    - TimestampTz
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 96
    functionName: TimestampDifferenceMicroseconds
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: "uint64 TimestampDifferenceMicroseconds(TimestampTz start_time,\n\t\t\t\t\t\t\t\tTimestampTz
      stop_time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dt1
    - ','
    - dt2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: timestamptz_cmp_internal
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timestamptz_cmp_internal(dt1,dt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/include/utils/xml.h:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: DatumGetXmlP
    functionSourceFile: /src/postgres/src/include/utils/xml.h
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: xmltype
    signature: 'xmltype *

      DatumGetXmlP(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/utils/xml.h:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - xmltype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: XmlPGetDatum
    functionSourceFile: /src/postgres/src/include/utils/xml.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum XmlPGetDatum(const xmltype *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: PG_GETARG_XML_P
    functionSourceFile: /src/postgres/src/include/utils/xml.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_XML_P(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: PG_RETURN_XML_P
    functionSourceFile: /src/postgres/src/include/utils/xml.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_XML_P(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - PartitionKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: get_partition_strategy
    functionSourceFile: /src/postgres/src/include/utils/partcache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_partition_strategy(PartitionKey key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - PartitionKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: get_partition_natts
    functionSourceFile: /src/postgres/src/include/utils/partcache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_partition_natts(PartitionKey key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - PartitionKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: get_partition_exprs
    functionSourceFile: /src/postgres/src/include/utils/partcache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: List
    signature: 'List *

      get_partition_exprs(PartitionKey key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - col
    argTypes:
    - PartitionKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: get_partition_col_attnum
    functionSourceFile: /src/postgres/src/include/utils/partcache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int16
    signature: int16 get_partition_col_attnum(PartitionKey key, int col)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - col
    argTypes:
    - PartitionKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: get_partition_col_typid
    functionSourceFile: /src/postgres/src/include/utils/partcache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Oid
    signature: Oid get_partition_col_typid(PartitionKey key, int col)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - col
    argTypes:
    - PartitionKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: get_partition_col_typmod
    functionSourceFile: /src/postgres/src/include/utils/partcache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int32
    signature: int32 get_partition_col_typmod(PartitionKey key, int col)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - col
    argTypes:
    - PartitionKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: get_partition_col_collation
    functionSourceFile: /src/postgres/src/include/utils/partcache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Oid
    signature: Oid get_partition_col_collation(PartitionKey key, int col)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lex
    - ','
    - sem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: pg_parse_json_or_ereport
    functionSourceFile: /src/postgres/src/include/utils/jsonfuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_parse_json_or_ereport(lex, sem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - relation
    - ','
    - defaulttarg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: RelationGetToastTupleTarget
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetToastTupleTarget(relation, defaulttarg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - relation
    - ','
    - defaultff
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 379
    functionName: RelationGetFillFactor
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetFillFactor(relation, defaultff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - relation
    - ','
    - defaultff
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 386
    functionName: RelationGetTargetPageUsage
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetTargetPageUsage(relation, defaultff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - relation
    - ','
    - defaultff
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 393
    functionName: RelationGetTargetPageFreeSpace
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetTargetPageFreeSpace(relation, defaultff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 404
    functionName: RelationIsUsedAsCatalogTable
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationIsUsedAsCatalogTable(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - relation
    - ','
    - defaultpw
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 413
    functionName: RelationGetParallelWorkers
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetParallelWorkers(relation, defaultpw)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 443
    functionName: RelationIsSecurityView
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationIsSecurityView(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: RelationHasSecurityInvoker
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationHasSecurityInvoker(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 464
    functionName: RelationHasCheckOption
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationHasCheckOption(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 475
    functionName: RelationHasLocalCheckOption
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationHasLocalCheckOption(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 486
    functionName: RelationHasCascadedCheckOption
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationHasCascadedCheckOption(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 492
    functionName: RelationIsValid
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationIsValid(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 502
    functionName: RelationHasReferenceCountZero
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationHasReferenceCountZero(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 511
    functionName: RelationGetForm
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetForm(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 517
    functionName: RelationGetRelid
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetRelid(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 523
    functionName: RelationGetNumberOfAttributes
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetNumberOfAttributes(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 530
    functionName: IndexRelationGetNumberOfAttributes
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IndexRelationGetNumberOfAttributes(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 537
    functionName: IndexRelationGetNumberOfKeyAttributes
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IndexRelationGetNumberOfKeyAttributes(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 543
    functionName: RelationGetDescr
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetDescr(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 552
    functionName: RelationGetRelationName
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetRelationName(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 559
    functionName: RelationGetNamespace
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetNamespace(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 568
    functionName: RelationIsMapped
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationIsMapped(relation)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/rel.h:580,1
    - Dst: smgropen
      Src: /src/postgres/src/include/utils/rel.h:582,1
    - Dst: smgrpin
      Src: /src/postgres/src/include/utils/rel.h:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 586
    functionName: RelationGetSmgr
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 4
    functionsReached:
    - smgropen
    - smgrpin
    - unlikely
    linkageType: ''
    returnType: SMgrRelation
    signature: SMgrRelation RelationGetSmgr(Relation rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smgrunpin
      Src: /src/postgres/src/include/utils/rel.h:597,1
    - Dst: smgrclose
      Src: /src/postgres/src/include/utils/rel.h:598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 601
    functionName: RelationCloseSmgr
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached:
    - smgrclose
    - smgrunpin
    linkageType: ''
    returnType: void
    signature: void RelationCloseSmgr(Relation relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 614
    functionName: RelationGetTargetBlock
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetTargetBlock(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - relation
    - ','
    - targblock
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 623
    functionName: RelationSetTargetBlock
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationSetTargetBlock(relation, targblock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 630
    functionName: RelationIsPermanent
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationIsPermanent(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 643
    functionName: RelationNeedsWAL
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationNeedsWAL(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 648
    functionDepth: 0
    functionLinenumber: 648
    functionLinenumberEnd: 650
    functionName: RelationUsesLocalBuffers
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationUsesLocalBuffers(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 662
    functionName: RELATION_IS_LOCAL
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RELATION_IS_LOCAL(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 681
    functionName: RELATION_IS_OTHER_TEMP
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RELATION_IS_OTHER_TEMP(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 690
    functionName: RelationIsScannable
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationIsScannable(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 697
    functionDepth: 0
    functionLinenumber: 697
    functionLinenumberEnd: 698
    functionName: RelationIsPopulated
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationIsPopulated(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 708
    functionName: RelationIsAccessibleInLogicalDecoding
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationIsAccessibleInLogicalDecoding(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 726
    functionName: RelationIsLogicallyLogged
    functionSourceFile: /src/postgres/src/include/utils/rel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationIsLogicallyLogged(relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: TupleSortUseBumpTupleCxt
    functionSourceFile: /src/postgres/src/include/utils/tuplesort.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TupleSortUseBumpTupleCxt(opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - coordinate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: PARALLEL_SORT
    functionSourceFile: /src/postgres/src/include/utils/tuplesort.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARALLEL_SORT(coordinate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 228
    functionName: TuplesortstateGetPublic
    functionSourceFile: /src/postgres/src/include/utils/tuplesort.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TuplesortstateGetPublic(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tape
    - ','
    - ptr
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 235
    functionName: LogicalTapeReadExact
    functionSourceFile: /src/postgres/src/include/utils/tuplesort.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LogicalTapeReadExact(tape, ptr, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: SearchSysCacheCopy1
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheCopy1(cacheId, key1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: SearchSysCacheCopy2
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheCopy2(cacheId, key1, key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - ','
    - key3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: SearchSysCacheCopy3
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheCopy3(cacheId, key1, key2, key3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - ','
    - key3
    - ','
    - key4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: SearchSysCacheCopy4
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheCopy4(cacheId, key1, key2, key3, key4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 102
    functionName: SearchSysCacheExists1
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheExists1(cacheId, key1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: SearchSysCacheExists2
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheExists2(cacheId, key1, key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - ','
    - key3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: SearchSysCacheExists3
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheExists3(cacheId, key1, key2, key3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - ','
    - key3
    - ','
    - key4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: SearchSysCacheExists4
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheExists4(cacheId, key1, key2, key3, key4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cacheId
    - ','
    - oidcol
    - ','
    - key1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: GetSysCacheOid1
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetSysCacheOid1(cacheId, oidcol, key1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cacheId
    - ','
    - oidcol
    - ','
    - key1
    - ','
    - key2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: GetSysCacheOid2
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetSysCacheOid2(cacheId, oidcol, key1, key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - cacheId
    - ','
    - oidcol
    - ','
    - key1
    - ','
    - key2
    - ','
    - key3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 115
    functionName: GetSysCacheOid3
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetSysCacheOid3(cacheId, oidcol, key1, key2, key3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - cacheId
    - ','
    - oidcol
    - ','
    - key1
    - ','
    - key2
    - ','
    - key3
    - ','
    - key4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: GetSysCacheOid4
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetSysCacheOid4(cacheId, oidcol, key1, key2, key3, key4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: GetSysCacheHashValue1
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetSysCacheHashValue1(cacheId, key1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: GetSysCacheHashValue2
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetSysCacheHashValue2(cacheId, key1, key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - ','
    - key3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 124
    functionName: GetSysCacheHashValue3
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetSysCacheHashValue3(cacheId, key1, key2, key3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - ','
    - key3
    - ','
    - key4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: GetSysCacheHashValue4
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetSysCacheHashValue4(cacheId, key1, key2, key3, key4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: SearchSysCacheList1
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheList1(cacheId, key1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: SearchSysCacheList2
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheList2(cacheId, key1, key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - cacheId
    - ','
    - key1
    - ','
    - key2
    - ','
    - key3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: SearchSysCacheList3
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SearchSysCacheList3(cacheId, key1, key2, key3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: ReleaseSysCacheList
    functionSourceFile: /src/postgres/src/include/utils/syscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ReleaseSysCacheList(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - className
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 423
    functionName: EmitWarningsOnPlaceholders
    functionSourceFile: /src/postgres/src/include/utils/guc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EmitWarningsOnPlaceholders(className)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 212
    functionName: PortalIsValid
    functionSourceFile: /src/postgres/src/include/utils/portal.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PortalIsValid(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wait_event_info
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: pgstat_report_wait_start
    functionSourceFile: /src/postgres/src/include/utils/wait_event.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pgstat_report_wait_start(uint32 wait_event_info)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: pgstat_report_wait_end
    functionSourceFile: /src/postgres/src/include/utils/wait_event.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pgstat_report_wait_end(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - snapshotdata
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: InitDirtySnapshot
    functionSourceFile: /src/postgres/src/include/utils/snapmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InitDirtySnapshot(snapshotdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - snapshotdata
    - ','
    - vistestp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: InitNonVacuumableSnapshot
    functionSourceFile: /src/postgres/src/include/utils/snapmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: InitNonVacuumableSnapshot(snapshotdata, vistestp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - snapshot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: IsMVCCSnapshot
    functionSourceFile: /src/postgres/src/include/utils/snapmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsMVCCSnapshot(snapshot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - snapshot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: IsHistoricMVCCSnapshot
    functionSourceFile: /src/postgres/src/include/utils/snapmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsHistoricMVCCSnapshot(snapshot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - snapshot
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: IsMVCCLikeSnapshot
    functionSourceFile: /src/postgres/src/include/utils/snapmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsMVCCLikeSnapshot(snapshot)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SortSupport::comparator
      Src: /src/postgres/src/include/utils/sortsupport.h:224,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/include/utils/sortsupport.h:226,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - datum1
    - isNull1
    - datum2
    - isNull2
    - ssup
    argTypes:
    - Datum
    - bool
    - Datum
    - bool
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 230
    functionName: ApplySortComparator
    functionSourceFile: /src/postgres/src/include/utils/sortsupport.h
    functionUses: 0
    functionsReached:
    - INVERT_COMPARE_RESULT
    - SortSupport::comparator
    linkageType: ''
    returnType: int
    signature: "int ApplySortComparator(Datum datum1, bool isNull1,\n\t\t\t\t\tDatum
      datum2, bool isNull2,\n\t\t\t\t\tSortSupport ssup)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SortSupport::abbrev_full_comparator
      Src: /src/postgres/src/include/utils/sortsupport.h:262,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/include/utils/sortsupport.h:264,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - datum1
    - isNull1
    - datum2
    - isNull2
    - ssup
    argTypes:
    - Datum
    - bool
    - Datum
    - bool
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 268
    functionName: ApplySortAbbrevFullComparator
    functionSourceFile: /src/postgres/src/include/utils/sortsupport.h
    functionUses: 0
    functionsReached:
    - INVERT_COMPARE_RESULT
    - SortSupport::abbrev_full_comparator
    linkageType: ''
    returnType: int
    signature: "int ApplySortAbbrevFullComparator(Datum datum1, bool isNull1,\n\t\t\t\t\t\t\t
      \ Datum datum2, bool isNull2,\n\t\t\t\t\t\t\t  SortSupport ssup)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: AssertCouldGetRelation
    functionSourceFile: /src/postgres/src/include/utils/relcache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AssertCouldGetRelation(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: AssertPendingSyncs_RelationCache
    functionSourceFile: /src/postgres/src/include/utils/relcache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertPendingSyncs_RelationCache()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: CLAMP_PROBABILITY
    functionSourceFile: /src/postgres/src/include/utils/selfuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CLAMP_PROBABILITY(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - vardata
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 108
    functionName: ReleaseVariableStats
    functionSourceFile: /src/postgres/src/include/utils/selfuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ReleaseVariableStats(vardata)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - typid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 224
    functionName: type_is_array
    functionSourceFile: /src/postgres/src/include/utils/lsyscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: type_is_array(typid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - typid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: type_is_array_domain
    functionSourceFile: /src/postgres/src/include/utils/lsyscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: type_is_array_domain(typid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - typid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 228
    functionName: TypeIsToastable
    functionSourceFile: /src/postgres/src/include/utils/lsyscache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TypeIsToastable(typid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdFromU64
      Src: /src/postgres/src/include/utils/xid8.h:20,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/include/utils/xid8.h:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 21
    functionName: DatumGetFullTransactionId
    functionSourceFile: /src/postgres/src/include/utils/xid8.h
    functionUses: 0
    functionsReached:
    - DatumGetUInt64
    - FullTransactionIdFromU64
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId DatumGetFullTransactionId(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/include/utils/xid8.h:26,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/include/utils/xid8.h:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: FullTransactionIdGetDatum
    functionSourceFile: /src/postgres/src/include/utils/xid8.h
    functionUses: 0
    functionsReached:
    - U64FromFullTransactionId
    - UInt64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum FullTransactionIdGetDatum(FullTransactionId X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: PG_GETARG_FULLTRANSACTIONID
    functionSourceFile: /src/postgres/src/include/utils/xid8.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_FULLTRANSACTIONID(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: PG_RETURN_FULLTRANSACTIONID
    functionSourceFile: /src/postgres/src/include/utils/xid8.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_FULLTRANSACTIONID(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - beentry
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: PGSTAT_BEGIN_WRITE_ACTIVITY
    functionSourceFile: /src/postgres/src/include/utils/backend_status.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PGSTAT_BEGIN_WRITE_ACTIVITY(beentry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - beentry
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 223
    functionName: PGSTAT_END_WRITE_ACTIVITY
    functionSourceFile: /src/postgres/src/include/utils/backend_status.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PGSTAT_END_WRITE_ACTIVITY(beentry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - beentry
    - ','
    - before_changecount
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 229
    functionName: pgstat_begin_read_activity
    functionSourceFile: /src/postgres/src/include/utils/backend_status.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_begin_read_activity(beentry, before_changecount)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - beentry
    - ','
    - after_changecount
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 235
    functionName: pgstat_end_read_activity
    functionSourceFile: /src/postgres/src/include/utils/backend_status.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_end_read_activity(beentry, after_changecount)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - before_changecount
    - ','
    - after_changecount
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 239
    functionName: pgstat_read_activity_complete
    functionSourceFile: /src/postgres/src/include/utils/backend_status.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgstat_read_activity_complete(before_changecount, after_changecount)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/utils/ascii.h:29,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/utils/ascii.h:31,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/ascii.h:34,1
    - Dst: vector8_load
      Src: /src/postgres/src/include/utils/ascii.h:38,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/utils/ascii.h:54,1
    - Dst: vector8_or
      Src: /src/postgres/src/include/utils/ascii.h:61,1
    - Dst: vector8_eq
      Src: /src/postgres/src/include/utils/ascii.h:62,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/utils/ascii.h:62,1
    - Dst: vector8_or
      Src: /src/postgres/src/include/utils/ascii.h:66,1
    - Dst: vector8_is_highbit_set
      Src: /src/postgres/src/include/utils/ascii.h:72,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/utils/ascii.h:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 24
    functionDepth: 3
    functionLinenumber: 24
    functionLinenumberEnd: 82
    functionName: is_valid_ascii
    functionSourceFile: /src/postgres/src/include/utils/ascii.h
    functionUses: 0
    functionsReached:
    - vector8_load
    - Assert
    - vector8_is_highbit_set
    - vector8_broadcast
    - vector8_eq
    - vector8_or
    linkageType: ''
    returnType: bool
    signature: bool is_valid_ascii(const unsigned char *s, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rangetable_index
    - ','
    - rangetable
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: rt_fetch
    functionSourceFile: /src/postgres/src/include/parser/parsetree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rt_fetch(rangetable_index, rangetable)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - typeid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: ISCOMPLEX
    functionSourceFile: /src/postgres/src/include/parser/parse_type.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISCOMPLEX(typeid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - msg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 25
    functionName: ereport_startup_progress
    functionSourceFile: /src/postgres/src/include/postmaster/startup.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ereport_startup_progress(msg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: VS
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: FUNCPTR
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FUNCPTR(name, args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: MALLOC
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MALLOC(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: REALLOC
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REALLOC(p, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: FREE
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: MALLOC_ARRAY
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MALLOC_ARRAY(type, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - p
    - ','
    - type
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: REALLOC_ARRAY
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REALLOC_ARRAY(p, type, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - la
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: LATYPE_IS_POS
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LATYPE_IS_POS(la)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - la
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: LATYPE_IS_AHEAD
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LATYPE_IS_AHEAD(la)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arglist
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 126
    functionName: FDEBUG
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FDEBUG(arglist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arglist
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    functionName: MDEBUG
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MDEBUG(arglist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arglist
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: FDEBUG
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FDEBUG(arglist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arglist
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: MDEBUG
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MDEBUG(arglist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - uv
    - ','
    - sn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: BSET
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BSET(uv, sn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - uv
    - ','
    - sn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: ISBSET
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISBSET(uv, sn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cd
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 199
    functionName: UNUSEDCOLOR
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNUSEDCOLOR(cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cm
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 246
    functionName: CDEND
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CDEND(cm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cm
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 267
    functionName: GETCOLOR
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETCOLOR(cm, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 326
    functionName: ARCBATCHSIZE
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARCBATCHSIZE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 352
    functionName: STATEBATCHSIZE
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STATEBATCHSIZE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cnfa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 443
    functionName: ZAPCNFA
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZAPCNFA(cnfa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cnfa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 445
    functionName: ZAPCNFA
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZAPCNFA(cnfa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cnfa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 447
    functionName: NULLCNFA
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NULLCNFA(cnfa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 504
    functionName: LMIX
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LMIX(f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 505
    functionName: SMIX
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SMIX(f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 506
    functionName: UP
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UP(f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 507
    functionName: MESSY
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MESSY(f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 508
    functionName: PREF
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREF(f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - f1
    - ','
    - f2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 509
    functionName: PREF2
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREF2(f1, f2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - f1
    - ','
    - f2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 510
    functionName: COMBINE
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMBINE(f1, f2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 538
    functionName: STACK_TOO_DEEP
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STACK_TOO_DEEP(re)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - args
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: FUNCPTR
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FUNCPTR(name, args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: MALLOC
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MALLOC(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: FREE
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: REALLOC
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REALLOC(p,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: MALLOC_ARRAY
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MALLOC_ARRAY(type, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - p
    - ','
    - type
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: REALLOC_ARRAY
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REALLOC_ARRAY(p, type, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: INTERRUPT
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERRUPT(re)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: assert
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assert(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: CHR
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHR(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: DIGITVAL
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIGITVAL(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: CHR_IS_IN_RANGE
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHR_IS_IN_RANGE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: iscalnum
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: iscalnum(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: iscalpha
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: iscalpha(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: iscdigit
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: iscdigit(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 98
    functionName: iscspace
    functionSourceFile: /src/postgres/src/include/regex/regcustom.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: iscspace(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - PageXLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: PageXLogRecPtrGet
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr PageXLogRecPtrGet(const volatile PageXLogRecPtr *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - lsn
    argTypes:
    - PageXLogRecPtr*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: PageXLogRecPtrSet
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PageXLogRecPtrSet(volatile PageXLogRecPtr *ptr, XLogRecPtr lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - PageXLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: PageXLogRecPtrGet
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr PageXLogRecPtrGet(const volatile PageXLogRecPtr *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - lsn
    argTypes:
    - PageXLogRecPtr*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: PageXLogRecPtrSet
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PageXLogRecPtrSet(volatile PageXLogRecPtr *ptr, XLogRecPtr lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 252
    functionName: PageIsEmpty
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool PageIsEmpty(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 262
    functionName: PageIsNew
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool PageIsNew(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - page
    - offsetNumber
    argTypes:
    - Page
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 272
    functionName: PageGetItemId
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ItemId
    signature: ItemId PageGetItemId(Page page, OffsetNumber offsetNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/include/storage/bufpage.h:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 286
    functionName: PageGetContents
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 4
    functionsReached:
    - MAXALIGN
    linkageType: ''
    returnType: char
    signature: 'char *

      PageGetContents(Page page)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: PageGetPageSize
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size
    signature: Size PageGetPageSize(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 315
    functionName: PageGetPageLayoutVersion
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8
    signature: uint8 PageGetPageLayoutVersion(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:327,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - page
    - size
    - version
    argTypes:
    - Page
    - Size
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 331
    functionName: PageSetPageSizeAndVersion
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void PageSetPageSizeAndVersion(Page page, Size size, uint8 version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageGetPageSize
      Src: /src/postgres/src/include/storage/bufpage.h:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 345
    functionName: PageGetSpecialSize
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached:
    - PageGetPageSize
    linkageType: ''
    returnType: uint16
    signature: uint16 PageGetSpecialSize(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:355,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:356,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 358
    functionName: PageValidateSpecialPointer
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void PageValidateSpecialPointer(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 369
    functionName: PageGetSpecialPointer
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PageGetSpecialPointer(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:381,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:382,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/include/storage/bufpage.h:382,1
    - Dst: ItemIdGetOffset
      Src: /src/postgres/src/include/storage/bufpage.h:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - page
    - itemId
    argTypes:
    - PageData*
    - ItemIdData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 385
    functionName: PageGetItem
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached:
    - Assert
    - ItemIdHasStorage
    - ItemIdGetOffset
    linkageType: ''
    returnType: void
    signature: 'void *

      PageGetItem(PageData *page, const ItemIdData *itemId)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 405
    functionName: PageGetMaxOffsetNumber
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OffsetNumber
    signature: OffsetNumber PageGetMaxOffsetNumber(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageXLogRecPtrGet
      Src: /src/postgres/src/include/storage/bufpage.h:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 414
    functionName: PageGetLSN
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached:
    - PageXLogRecPtrGet
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr PageGetLSN(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageXLogRecPtrSet
      Src: /src/postgres/src/include/storage/bufpage.h:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - page
    - lsn
    argTypes:
    - Page
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 420
    functionName: PageSetLSN
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached:
    - PageXLogRecPtrSet
    linkageType: ''
    returnType: void
    signature: void PageSetLSN(Page page, XLogRecPtr lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 426
    functionName: PageHasFreeLinePointers
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool PageHasFreeLinePointers(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 431
    functionName: PageSetHasFreeLinePointers
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PageSetHasFreeLinePointers(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 436
    functionName: PageClearHasFreeLinePointers
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PageClearHasFreeLinePointers(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 442
    functionName: PageIsFull
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool PageIsFull(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 447
    functionName: PageSetFull
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PageSetFull(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 452
    functionName: PageClearFull
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PageClearFull(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 458
    functionName: PageIsAllVisible
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool PageIsAllVisible(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 463
    functionName: PageSetAllVisible
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PageSetAllVisible(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 468
    functionName: PageClearAllVisible
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PageClearAllVisible(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 474
    functionName: PageGetPruneXid
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId PageGetPruneXid(const PageData *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - page
    - ','
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 486
    functionName: PageSetPrunable
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PageSetPrunable(page, xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 488
    functionName: PageClearPrunable
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PageClearPrunable(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - page
    - ','
    - item
    - ','
    - size
    - ','
    - offsetNumber
    - ','
    - overwrite
    - ','
    - is_heap
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 509
    functionName: PageAddItem
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PageAddItem(page, item, size, offsetNumber, overwrite, is_heap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lxid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: LocalTransactionIdIsValid
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LocalTransactionIdIsValid(lxid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - vxid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: VirtualTransactionIdIsValid
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VirtualTransactionIdIsValid(vxid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - vxid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: VirtualTransactionIdIsRecoveredPreparedXact
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VirtualTransactionIdIsRecoveredPreparedXact(vxid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - vxid1
    - ','
    - vxid2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: VirtualTransactionIdEquals
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VirtualTransactionIdEquals(vxid1, vxid2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - vxid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: SetInvalidVirtualTransactionId
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SetInvalidVirtualTransactionId(vxid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - vxid_dst
    - ','
    - proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: GET_VXID_FROM_PGPROC
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_VXID_FROM_PGPROC(vxid_dst, proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lockmode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: LOCKBIT_ON
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCKBIT_ON(lockmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lockmode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: LOCKBIT_OFF
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCKBIT_OFF(lockmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    functionName: LOCK_LOCKMETHOD
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCK_LOCKMETHOD(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: LOCK_LOCKTAG
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCK_LOCKTAG(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - proclock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: PROCLOCK_LOCKMETHOD
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROCLOCK_LOCKMETHOD(proclock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - llock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 275
    functionName: LOCALLOCK_LOCKMETHOD
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCALLOCK_LOCKMETHOD(llock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - llock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 276
    functionName: LOCALLOCK_LOCKTAG
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCALLOCK_LOCKTAG(llock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hashcode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 357
    functionName: LockHashPartition
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LockHashPartition(hashcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hashcode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 360
    functionName: LockHashPartitionLock
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LockHashPartitionLock(hashcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 362
    functionName: LockHashPartitionLockByIndex
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LockHashPartitionLockByIndex(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - leader_pgproc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 374
    functionName: LockHashPartitionLockByProc
    functionSourceFile: /src/postgres/src/include/storage/lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LockHashPartitionLockByProc(leader_pgproc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p_rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: BMR_REL
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BMR_REL(p_rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p_smgr
    - ','
    - p_relpersistence
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: BMR_SMGR
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BMR_SMGR(p_smgr, p_relpersistence)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bmr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: BMR_GET_SMGR
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BMR_GET_SMGR(bmr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - reln
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 311
    functionName: RelationGetNumberOfBlocks
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetNumberOfBlocks(reln)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UnlockBuffer
      Src: /src/postgres/src/include/storage/bufmgr.h:337,1
    - Dst: LockBufferInternal
      Src: /src/postgres/src/include/storage/bufmgr.h:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buffer
    - mode
    argTypes:
    - Buffer
    - BufferLockMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 340
    functionName: LockBuffer
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 3
    functionsReached:
    - UnlockBuffer
    - LockBufferInternal
    linkageType: ''
    returnType: void
    signature: void LockBuffer(Buffer buffer, BufferLockMode mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufmgr.h:421,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufmgr.h:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - bufnum
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 425
    functionName: BufferIsValid
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool BufferIsValid(Buffer bufnum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufmgr.h:437,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/include/storage/bufmgr.h:437,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/include/storage/bufmgr.h:439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 434
    functionDepth: 2
    functionLinenumber: 434
    functionLinenumberEnd: 443
    functionName: BufferGetBlock
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 1
    functionsReached:
    - Assert
    - BufferIsLocal
    - BufferIsValid
    linkageType: ''
    returnType: Block
    signature: Block BufferGetBlock(Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufmgr.h:459,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/include/storage/bufmgr.h:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 461
    functionName: BufferGetPageSize
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 1
    functionsReached:
    - Assert
    - BufferIsValid
    linkageType: ''
    returnType: Size
    signature: Size BufferGetPageSize(Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlock
      Src: /src/postgres/src/include/storage/bufmgr.h:470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 467
    functionDepth: 3
    functionLinenumber: 467
    functionLinenumberEnd: 471
    functionName: BufferGetPage
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 1
    functionsReached:
    - BufferGetBlock
    linkageType: ''
    returnType: Page
    signature: Page BufferGetPage(Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - offsetNumber
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: OffsetNumberIsValid
    functionSourceFile: /src/postgres/src/include/storage/off.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OffsetNumberIsValid(offsetNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - offsetNumber
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: OffsetNumberNext
    functionSourceFile: /src/postgres/src/include/storage/off.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OffsetNumberNext(offsetNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - offsetNumber
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: OffsetNumberPrev
    functionSourceFile: /src/postgres/src/include/storage/off.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OffsetNumberPrev(offsetNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: S_INIT_LOCK
      Src: /src/postgres/src/include/storage/spin.h:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: SpinLockInit
    functionSourceFile: /src/postgres/src/include/storage/spin.h
    functionUses: 3
    functionsReached:
    - S_INIT_LOCK
    linkageType: ''
    returnType: void
    signature: void SpinLockInit(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: S_LOCK
      Src: /src/postgres/src/include/storage/spin.h:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: SpinLockAcquire
    functionSourceFile: /src/postgres/src/include/storage/spin.h
    functionUses: 6
    functionsReached:
    - S_LOCK
    linkageType: ''
    returnType: void
    signature: void SpinLockAcquire(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: S_UNLOCK
      Src: /src/postgres/src/include/storage/spin.h:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: SpinLockRelease
    functionSourceFile: /src/postgres/src/include/storage/spin.h
    functionUses: 6
    functionsReached:
    - S_UNLOCK
    linkageType: ''
    returnType: void
    signature: void SpinLockRelease(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: ItemPointerIsValid
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ItemPointerIsValid(const ItemPointerData *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BlockIdGetBlockNumber
      Src: /src/postgres/src/include/storage/itemptr.h:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: ItemPointerGetBlockNumberNoCheck
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 3
    functionsReached:
    - BlockIdGetBlockNumber
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber ItemPointerGetBlockNumberNoCheck(const ItemPointerData
      *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/itemptr.h:105,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/include/storage/itemptr.h:105,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/include/storage/itemptr.h:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: ItemPointerGetBlockNumber
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 7
    functionsReached:
    - Assert
    - ItemPointerGetBlockNumberNoCheck
    - ItemPointerIsValid
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber ItemPointerGetBlockNumber(const ItemPointerData *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: ItemPointerGetOffsetNumberNoCheck
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: OffsetNumber
    signature: OffsetNumber ItemPointerGetOffsetNumberNoCheck(const ItemPointerData
      *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/itemptr.h:126,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/include/storage/itemptr.h:126,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/include/storage/itemptr.h:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 128
    functionName: ItemPointerGetOffsetNumber
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 5
    functionsReached:
    - Assert
    - ItemPointerGetOffsetNumberNoCheck
    - ItemPointerIsValid
    linkageType: ''
    returnType: OffsetNumber
    signature: OffsetNumber ItemPointerGetOffsetNumber(const ItemPointerData *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/itemptr.h:137,1
    - Dst: BlockIdSet
      Src: /src/postgres/src/include/storage/itemptr.h:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - pointer
    - blockNumber
    - offNum
    argTypes:
    - ItemPointerData*
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: ItemPointerSet
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 5
    functionsReached:
    - Assert
    - BlockIdSet
    linkageType: ''
    returnType: void
    signature: void ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber,
      OffsetNumber offNum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/itemptr.h:149,1
    - Dst: BlockIdSet
      Src: /src/postgres/src/include/storage/itemptr.h:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pointer
    - blockNumber
    argTypes:
    - ItemPointerData*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: ItemPointerSetBlockNumber
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 3
    functionsReached:
    - Assert
    - BlockIdSet
    linkageType: ''
    returnType: void
    signature: void ItemPointerSetBlockNumber(ItemPointerData *pointer, BlockNumber
      blockNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/itemptr.h:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pointer
    - offsetNumber
    argTypes:
    - ItemPointerData*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: ItemPointerSetOffsetNumber
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void ItemPointerSetOffsetNumber(ItemPointerData *pointer, OffsetNumber
      offsetNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/itemptr.h:174,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/itemptr.h:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fromPointer
    - toPointer
    argTypes:
    - ItemPointerData*
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 177
    functionName: ItemPointerCopy
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void ItemPointerCopy(const ItemPointerData *fromPointer, ItemPointerData
      *toPointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/itemptr.h:186,1
    - Dst: BlockIdSet
      Src: /src/postgres/src/include/storage/itemptr.h:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 189
    functionName: ItemPointerSetInvalid
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 3
    functionsReached:
    - Assert
    - BlockIdSet
    linkageType: ''
    returnType: void
    signature: void ItemPointerSetInvalid(ItemPointerData *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/include/storage/itemptr.h:200,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/include/storage/itemptr.h:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 202
    functionName: ItemPointerIndicatesMovedPartitions
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 1
    functionsReached:
    - ItemPointerGetBlockNumberNoCheck
    - ItemPointerGetOffsetNumber
    linkageType: ''
    returnType: bool
    signature: bool ItemPointerIndicatesMovedPartitions(const ItemPointerData *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSet
      Src: /src/postgres/src/include/storage/itemptr.h:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: ItemPointerSetMovedPartitions
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 1
    functionsReached:
    - ItemPointerSet
    linkageType: ''
    returnType: void
    signature: void ItemPointerSetMovedPartitions(ItemPointerData *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/storage/itemptr.h:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: DatumGetItemPointer
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer DatumGetItemPointer(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/storage/itemptr.h:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 240
    functionName: ItemPointerGetDatum
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum ItemPointerGetDatum(const ItemPointerData *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 243
    functionName: PG_GETARG_ITEMPOINTER
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_ITEMPOINTER(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 244
    functionName: PG_RETURN_ITEMPOINTER
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_ITEMPOINTER(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - reloid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 393
    functionName: SET_PREDICATELOCKTARGETTAG_RELATION
    functionSourceFile: /src/postgres/src/include/storage/predicate_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_PREDICATELOCKTARGETTAG_RELATION(locktag,dboid,reloid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - reloid
    - ','
    - blocknum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 399
    functionName: SET_PREDICATELOCKTARGETTAG_PAGE
    functionSourceFile: /src/postgres/src/include/storage/predicate_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_PREDICATELOCKTARGETTAG_PAGE(locktag,dboid,reloid,blocknum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - reloid
    - ','
    - blocknum
    - ','
    - offnum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 405
    functionName: SET_PREDICATELOCKTARGETTAG_TUPLE
    functionSourceFile: /src/postgres/src/include/storage/predicate_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_PREDICATELOCKTARGETTAG_TUPLE(locktag,dboid,reloid,blocknum,offnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - locktag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 408
    functionName: GET_PREDICATELOCKTARGETTAG_DB
    functionSourceFile: /src/postgres/src/include/storage/predicate_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_PREDICATELOCKTARGETTAG_DB(locktag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - locktag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 410
    functionName: GET_PREDICATELOCKTARGETTAG_RELATION
    functionSourceFile: /src/postgres/src/include/storage/predicate_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_PREDICATELOCKTARGETTAG_RELATION(locktag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - locktag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 412
    functionName: GET_PREDICATELOCKTARGETTAG_PAGE
    functionSourceFile: /src/postgres/src/include/storage/predicate_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_PREDICATELOCKTARGETTAG_PAGE(locktag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - locktag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 414
    functionName: GET_PREDICATELOCKTARGETTAG_OFFSET
    functionSourceFile: /src/postgres/src/include/storage/predicate_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_PREDICATELOCKTARGETTAG_OFFSET(locktag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - locktag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 418
    functionName: GET_PREDICATELOCKTARGETTAG_TYPE
    functionSourceFile: /src/postgres/src/include/storage/predicate_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_PREDICATELOCKTARGETTAG_TYPE(locktag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: ShmemRequestStruct
    functionSourceFile: /src/postgres/src/include/storage/shmem.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ShmemRequestStruct(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 181
    functionName: ShmemRequestHash
    functionSourceFile: /src/postgres/src/include/storage/shmem.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ShmemRequestHash(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: shm_toc_initialize_estimator
    functionSourceFile: /src/postgres/src/include/storage/shm_toc.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: shm_toc_initialize_estimator(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - e
    - ','
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: shm_toc_estimate_chunk
    functionSourceFile: /src/postgres/src/include/storage/shm_toc.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: shm_toc_estimate_chunk(e, sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - e
    - ','
    - cnt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: shm_toc_estimate_keys
    functionSourceFile: /src/postgres/src/include/storage/shm_toc.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: shm_toc_estimate_keys(e, cnt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rlocator
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: RelFileLocatorBackendIsTemp
    functionSourceFile: /src/postgres/src/include/storage/relfilelocator.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelFileLocatorBackendIsTemp(rlocator)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - locator1
    - ','
    - locator2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: RelFileLocatorEquals
    functionSourceFile: /src/postgres/src/include/storage/relfilelocator.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelFileLocatorEquals(locator1, locator2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - locator1
    - ','
    - locator2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: RelFileLocatorBackendEquals
    functionSourceFile: /src/postgres/src/include/storage/relfilelocator.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelFileLocatorBackendEquals(locator1, locator2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - err
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: FILE_POSSIBLY_DELETED
    functionSourceFile: /src/postgres/src/include/storage/fd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FILE_POSSIBLY_DELETED(err)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - err
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: FILE_POSSIBLY_DELETED
    functionSourceFile: /src/postgres/src/include/storage/fd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FILE_POSSIBLY_DELETED(err)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FileReadV
      Src: /src/postgres/src/include/storage/fd.h:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - file
    - buffer
    - amount
    - offset
    - wait_event_info
    argTypes:
    - File
    - void*
    - size_t
    - pgoff_t
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 234
    functionName: FileRead
    functionSourceFile: /src/postgres/src/include/storage/fd.h
    functionUses: 0
    functionsReached:
    - FileReadV
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t FileRead(File file, void *buffer, size_t amount, pgoff_t offset,\n\t\t
      uint32 wait_event_info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unconstify
      Src: /src/postgres/src/include/storage/fd.h:241,1
    - Dst: FileWriteV
      Src: /src/postgres/src/include/storage/fd.h:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - file
    - buffer
    - amount
    - offset
    - wait_event_info
    argTypes:
    - File
    - void*
    - size_t
    - pgoff_t
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 246
    functionName: FileWrite
    functionSourceFile: /src/postgres/src/include/storage/fd.h
    functionUses: 0
    functionsReached:
    - unconstify
    - FileWriteV
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t FileWrite(File file, const void *buffer, size_t amount, pgoff_t
      offset,\n\t\t  uint32 wait_event_info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cleanup_function
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: PG_ENSURE_ERROR_CLEANUP
    functionSourceFile: /src/postgres/src/include/storage/ipc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_ENSURE_ERROR_CLEANUP(cleanup_function, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cleanup_function
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 62
    functionName: PG_END_ENSURE_ERROR_CLEANUP
    functionSourceFile: /src/postgres/src/include/storage/ipc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_END_ENSURE_ERROR_CLEANUP(cleanup_function, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 105
    functionName: FastPathLockSlotsPerBackend
    functionSourceFile: /src/postgres/src/include/storage/proc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FastPathLockSlotsPerBackend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 512
    functionName: GetPGProcByNumber
    functionSourceFile: /src/postgres/src/include/storage/proc.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetPGProcByNumber(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 513
    functionName: GetNumberFromPGProc
    functionSourceFile: /src/postgres/src/include/storage/proc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetNumberFromPGProc(proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - reloid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: SET_LOCKTAG_RELATION
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_RELATION(locktag,dboid,reloid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - reloid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 97
    functionName: SET_LOCKTAG_RELATION_EXTEND
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_RELATION_EXTEND(locktag,dboid,reloid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: SET_LOCKTAG_DATABASE_FROZEN_IDS
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_DATABASE_FROZEN_IDS(locktag,dboid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - reloid
    - ','
    - blocknum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 115
    functionName: SET_LOCKTAG_PAGE
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_PAGE(locktag,dboid,reloid,blocknum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - reloid
    - ','
    - blocknum
    - ','
    - offnum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 124
    functionName: SET_LOCKTAG_TUPLE
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_TUPLE(locktag,dboid,reloid,blocknum,offnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - locktag
    - ','
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 133
    functionName: SET_LOCKTAG_TRANSACTION
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_TRANSACTION(locktag,xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - locktag
    - ','
    - vxid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 142
    functionName: SET_LOCKTAG_VIRTUALTRANSACTION
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_VIRTUALTRANSACTION(locktag,vxid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - locktag
    - ','
    - xid
    - ','
    - token
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 154
    functionName: SET_LOCKTAG_SPECULATIVE_INSERTION
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_SPECULATIVE_INSERTION(locktag,xid,token)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - classoid
    - ','
    - objoid
    - ','
    - objsubid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 169
    functionName: SET_LOCKTAG_OBJECT
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_OBJECT(locktag,dboid,classoid,objoid,objsubid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - locktag
    - ','
    - id1
    - ','
    - id2
    - ','
    - id3
    - ','
    - id4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 177
    functionName: SET_LOCKTAG_ADVISORY
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_ADVISORY(locktag,id1,id2,id3,id4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - suboid
    - ','
    - xid
    - ','
    - objid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: SET_LOCKTAG_APPLY_TRANSACTION
    functionSourceFile: /src/postgres/src/include/storage/locktag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_APPLY_TRANSACTION(locktag,dboid,suboid,xid,objid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - callbacks
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: PG_SHMEM_SUBSYSTEM
    functionSourceFile: /src/postgres/src/include/storage/subsystems.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_SHMEM_SUBSYSTEM(callbacks)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 159
    functionName: tas
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tas(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    functionName: SPIN_DELAY
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPIN_DELAY()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 191
    functionName: spin_delay
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void spin_delay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 202
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 213
    functionName: TAS_SPIN
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS_SPIN(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 226
    functionName: tas
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tas(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 229
    functionName: SPIN_DELAY
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPIN_DELAY()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 239
    functionName: spin_delay
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void spin_delay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 255
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_lock_test_and_set
      Src: /src/postgres/src/include/storage/s_lock.h:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 262
    functionName: tas
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached:
    - __sync_lock_test_and_set
    linkageType: ''
    returnType: int
    signature: int tas(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 265
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 273
    functionName: TAS_SPIN
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS_SPIN(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 275
    functionName: SPIN_DELAY
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPIN_DELAY()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 286
    functionName: spin_delay
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void spin_delay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 300
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 312
    functionName: tas
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tas(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 329
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 361
    functionName: tas
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tas(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 377
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 388
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 400
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 403
    functionName: TAS_SPIN
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS_SPIN(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 439
    functionName: tas
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tas(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 451
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 461
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 504
    functionName: tas
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tas(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 539
    functionDepth: 0
    functionLinenumber: 539
    functionLinenumberEnd: 540
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_lock_test_and_set
      Src: /src/postgres/src/include/storage/s_lock.h:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 547
    functionName: tas
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached:
    - __sync_lock_test_and_set
    linkageType: ''
    returnType: int
    signature: int tas(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 550
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 555
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sync_lock_test_and_set
      Src: /src/postgres/src/include/storage/s_lock.h:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - slock_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 562
    functionName: tas
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached:
    - __sync_lock_test_and_set
    linkageType: ''
    returnType: int
    signature: int tas(volatile slock_t *lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 565
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 584
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 602
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 604
    functionName: SPIN_DELAY
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPIN_DELAY()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __isb
      Src: /src/postgres/src/include/storage/s_lock.h:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 614
    functionName: spin_delay
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached:
    - __isb
    linkageType: ''
    returnType: void
    signature: void spin_delay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_pause
      Src: /src/postgres/src/include/storage/s_lock.h:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 624
    functionName: spin_delay
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached:
    - _mm_pause
    linkageType: ''
    returnType: void
    signature: void spin_delay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 631
    functionName: spin_delay
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void spin_delay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 641
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 645
    functionDepth: 0
    functionLinenumber: 645
    functionLinenumberEnd: 647
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 666
    functionDepth: 0
    functionLinenumber: 666
    functionLinenumberEnd: 668
    functionName: S_LOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_LOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 690
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 694
    functionName: S_INIT_LOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_INIT_LOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 697
    functionDepth: 0
    functionLinenumber: 697
    functionLinenumberEnd: 698
    functionName: SPIN_DELAY
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPIN_DELAY()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 705
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 708
    functionDepth: 0
    functionLinenumber: 708
    functionLinenumberEnd: 709
    functionName: TAS_SPIN
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS_SPIN(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - status
    - file
    - line
    - func
    argTypes:
    - SpinDelayStatus*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 737
    functionDepth: 0
    functionLinenumber: 737
    functionLinenumberEnd: 747
    functionName: init_spin_delay
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void init_spin_delay(SpinDelayStatus *status,\n\t\t\t\tconst char
      *file, int line, const char *func)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - status
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 750
    functionName: init_local_spin_delay
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: init_local_spin_delay(status)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - checksum
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: CHECKSUM_COMP
    functionSourceFile: /src/postgres/src/include/storage/checksum_impl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECKSUM_COMP(checksum, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - page
    argTypes:
    - PGChecksummablePage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 157
    functionName: pg_checksum_block
    functionSourceFile: /src/postgres/src/include/storage/checksum_impl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_checksum_block(const PGChecksummablePage *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/checksum_impl.h:179,1
    - Dst: PageIsNew
      Src: /src/postgres/src/include/storage/checksum_impl.h:179,1
    - Dst: pg_checksum_block
      Src: /src/postgres/src/include/storage/checksum_impl.h:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - page
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 200
    functionName: pg_checksum_page
    functionSourceFile: /src/postgres/src/include/storage/checksum_impl.h
    functionUses: 2
    functionsReached:
    - Assert
    - PageIsNew
    - pg_checksum_block
    linkageType: ''
    returnType: uint16
    signature: uint16 pg_checksum_page(char *page, BlockNumber blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: ItemIdGetLength
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdGetLength(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: ItemIdGetOffset
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdGetOffset(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: ItemIdGetFlags
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdGetFlags(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: ItemIdGetRedirect
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdGetRedirect(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: ItemIdIsValid
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdIsValid(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: ItemIdIsUsed
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdIsUsed(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: ItemIdIsNormal
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdIsNormal(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: ItemIdIsRedirected
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdIsRedirected(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 115
    functionName: ItemIdIsDead
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdIsDead(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: ItemIdHasStorage
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdHasStorage(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 134
    functionName: ItemIdSetUnused
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdSetUnused(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - itemId
    - ','
    - 'off'
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 146
    functionName: ItemIdSetNormal
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdSetNormal(itemId, off, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - itemId
    - ','
    - link
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 158
    functionName: ItemIdSetRedirect
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdSetRedirect(itemId, link)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 170
    functionName: ItemIdSetDead
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdSetDead(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - itemId
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 183
    functionName: ItemIdMarkDead
    functionSourceFile: /src/postgres/src/include/storage/itemid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ItemIdMarkDead(itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: BUF_STATE_GET_REFCOUNT
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUF_STATE_GET_REFCOUNT(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: BUF_STATE_GET_USAGECOUNT
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUF_STATE_GET_USAGECOUNT(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flagno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: BUF_DEFINE_FLAG
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUF_DEFINE_FLAG(flagno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tag
    argTypes:
    - BufferTag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 174
    functionName: BufTagGetRelNumber
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RelFileNumber
    signature: RelFileNumber BufTagGetRelNumber(const BufferTag *tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tag
    argTypes:
    - BufferTag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 180
    functionName: BufTagGetForkNum
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ForkNumber
    signature: ForkNumber BufTagGetForkNum(const BufferTag *tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - relnumber
    - forknum
    argTypes:
    - BufferTag*
    - RelFileNumber
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 188
    functionName: BufTagSetRelForkDetails
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void BufTagSetRelForkDetails(BufferTag *tag, RelFileNumber relnumber,\n\t\t\t\t\t\tForkNumber
      forknum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufTagGetRelNumber
      Src: /src/postgres/src/include/storage/buf_internals.h:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tag
    argTypes:
    - BufferTag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 200
    functionName: BufTagGetRelFileLocator
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached:
    - BufTagGetRelNumber
    linkageType: ''
    returnType: RelFileLocator
    signature: RelFileLocator BufTagGetRelFileLocator(const BufferTag *tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufTagSetRelForkDetails
      Src: /src/postgres/src/include/storage/buf_internals.h:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tag
    argTypes:
    - BufferTag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 209
    functionName: ClearBufferTag
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached:
    - BufTagSetRelForkDetails
    linkageType: ''
    returnType: void
    signature: void ClearBufferTag(BufferTag *tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufTagSetRelForkDetails
      Src: /src/postgres/src/include/storage/buf_internals.h:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - tag
    - rlocator
    - forkNum
    - blockNum
    argTypes:
    - BufferTag*
    - RelFileLocator*
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 219
    functionName: InitBufferTag
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached:
    - BufTagSetRelForkDetails
    linkageType: ''
    returnType: void
    signature: "void InitBufferTag(BufferTag *tag, const RelFileLocator *rlocator,\n\t\t\t
      \ ForkNumber forkNum, BlockNumber blockNum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 2
    argNames:
    - tag1
    - tag2
    argTypes:
    - BufferTag*
    - BufferTag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: BufferTagsEqual
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool BufferTagsEqual(const BufferTag *tag1, const BufferTag *tag2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufTagGetRelNumber
      Src: /src/postgres/src/include/storage/buf_internals.h:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - rlocator
    argTypes:
    - BufferTag*
    - RelFileLocator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 238
    functionName: BufTagMatchesRelFileLocator
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached:
    - BufTagGetRelNumber
    linkageType: ''
    returnType: bool
    signature: "bool BufTagMatchesRelFileLocator(const BufferTag *tag,\n\t\t\t\t\t\t\tconst
      RelFileLocator *rlocator)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hashcode
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 251
    functionName: BufTableHashPartition
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 BufTableHashPartition(uint32 hashcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufTableHashPartition
      Src: /src/postgres/src/include/storage/buf_internals.h:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hashcode
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 258
    functionName: BufMappingPartitionLock
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached:
    - BufTableHashPartition
    linkageType: ''
    returnType: LWLock
    signature: 'LWLock *

      BufMappingPartitionLock(uint32 hashcode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 264
    functionName: BufMappingPartitionLockByIndex
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LWLock
    signature: 'LWLock *

      BufMappingPartitionLockByIndex(uint32 index)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/buf_internals.h:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 427
    functionName: GetBufferDescriptor
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 5
    functionsReached:
    - Assert
    linkageType: ''
    returnType: BufferDesc
    signature: 'BufferDesc *

      GetBufferDescriptor(int id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 433
    functionName: GetLocalBufferDescriptor
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: BufferDesc
    signature: 'BufferDesc *

      GetLocalBufferDescriptor(int id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bdesc
    argTypes:
    - BufferDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 439
    functionName: BufferDescriptorGetBuffer
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Buffer
    signature: Buffer BufferDescriptorGetBuffer(const BufferDesc *bdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bdesc
    argTypes:
    - BufferDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 445
    functionName: BufferDescriptorGetIOCV
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ConditionVariable
    signature: 'ConditionVariable *

      BufferDescriptorGetIOCV(const BufferDesc *bdesc)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/buf_internals.h:462,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/include/storage/buf_internals.h:462,1
    - Dst: pg_atomic_fetch_sub_u64
      Src: /src/postgres/src/include/storage/buf_internals.h:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - desc
    argTypes:
    - BufferDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 459
    functionDepth: 2
    functionLinenumber: 459
    functionLinenumberEnd: 465
    functionName: UnlockBufHdr
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached:
    - Assert
    - pg_atomic_fetch_sub_u64
    - pg_atomic_read_u64
    linkageType: ''
    returnType: void
    signature: void UnlockBufHdr(BufferDesc *desc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/buf_internals.h:484,1
    - Dst: pg_atomic_compare_exchange_u64
      Src: /src/postgres/src/include/storage/buf_internals.h:493,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - desc
    - old_buf_state
    - set_bits
    - unset_bits
    - refcount_change
    argTypes:
    - BufferDesc*
    - uint64
    - uint64
    - uint64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 475
    functionDepth: 2
    functionLinenumber: 475
    functionLinenumberEnd: 499
    functionName: UnlockBufHdrExt
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 1
    functionsReached:
    - Assert
    - pg_atomic_compare_exchange_u64
    linkageType: ''
    returnType: uint64
    signature: "uint64 UnlockBufHdrExt(BufferDesc *desc, uint64 old_buf_state,\n\t\t\t\tuint64
      set_bits, uint64 unset_bits,\n\t\t\t\tint refcount_change)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/include/storage/buf_internals.h:530,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/storage/buf_internals.h:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - buffer
    argTypes:
    - ResourceOwner
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 531
    functionName: ResourceOwnerRememberBuffer
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - ResourceOwnerRemember
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerRememberBuffer(ResourceOwner owner, Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerForget
      Src: /src/postgres/src/include/storage/buf_internals.h:535,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/storage/buf_internals.h:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - buffer
    argTypes:
    - ResourceOwner
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 536
    functionName: ResourceOwnerForgetBuffer
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - ResourceOwnerForget
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerForgetBuffer(ResourceOwner owner, Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/include/storage/buf_internals.h:540,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/storage/buf_internals.h:540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - buffer
    argTypes:
    - ResourceOwner
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 541
    functionName: ResourceOwnerRememberBufferIO
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - ResourceOwnerRemember
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerRememberBufferIO(ResourceOwner owner, Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerForget
      Src: /src/postgres/src/include/storage/buf_internals.h:545,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/storage/buf_internals.h:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - buffer
    argTypes:
    - ResourceOwner
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 546
    functionName: ResourceOwnerForgetBufferIO
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 1
    functionsReached:
    - Int32GetDatum
    - ResourceOwnerForget
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerForgetBufferIO(ResourceOwner owner, Buffer buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/include/storage/pmsignal.h:101,1
    - Dst: PostmasterIsAliveInternal
      Src: /src/postgres/src/include/storage/pmsignal.h:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 104
    functionName: PostmasterIsAlive
    functionSourceFile: /src/postgres/src/include/storage/pmsignal.h
    functionUses: 0
    functionsReached:
    - likely
    - PostmasterIsAliveInternal
    linkageType: ''
    returnType: bool
    signature: bool PostmasterIsAlive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: PostmasterIsAlive
    functionSourceFile: /src/postgres/src/include/storage/pmsignal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PostmasterIsAlive()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: ProcNumberForTempRelations
    functionSourceFile: /src/postgres/src/include/storage/procnumber.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ProcNumberForTempRelations()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - proclist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: proclist_init
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void proclist_init(proclist_head *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - proclist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: proclist_is_empty
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool proclist_is_empty(const proclist_head *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/include/storage/proclist.h:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - procno
    - node_offset
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: proclist_node_get
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached:
    - GetPGProcByNumber
    linkageType: ''
    returnType: proclist_node
    signature: 'proclist_node *

      proclist_node_get(int procno, size_t node_offset)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: proclist_node_get
      Src: /src/postgres/src/include/storage/proclist.h:61,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:63,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:67,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:73,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:74,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:75,1
    - Dst: proclist_node_get
      Src: /src/postgres/src/include/storage/proclist.h:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - list
    - procno
    - node_offset
    argTypes:
    - proclist_head*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 81
    functionName: proclist_push_head_offset
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached:
    - Assert
    - proclist_node_get
    linkageType: ''
    returnType: void
    signature: void proclist_push_head_offset(proclist_head *list, int procno, size_t
      node_offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: proclist_node_get
      Src: /src/postgres/src/include/storage/proclist.h:89,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:91,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:95,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:101,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:102,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:103,1
    - Dst: proclist_node_get
      Src: /src/postgres/src/include/storage/proclist.h:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - list
    - procno
    - node_offset
    argTypes:
    - proclist_head*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 109
    functionName: proclist_push_tail_offset
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached:
    - Assert
    - proclist_node_get
    linkageType: ''
    returnType: void
    signature: void proclist_push_tail_offset(proclist_head *list, int procno, size_t
      node_offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: proclist_node_get
      Src: /src/postgres/src/include/storage/proclist.h:117,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:119,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:123,1
    - Dst: proclist_node_get
      Src: /src/postgres/src/include/storage/proclist.h:127,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:131,1
    - Dst: proclist_node_get
      Src: /src/postgres/src/include/storage/proclist.h:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - list
    - procno
    - node_offset
    argTypes:
    - proclist_head*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 138
    functionName: proclist_delete_offset
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached:
    - Assert
    - proclist_node_get
    linkageType: ''
    returnType: void
    signature: void proclist_delete_offset(proclist_head *list, int procno, size_t
      node_offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: proclist_node_get
      Src: /src/postgres/src/include/storage/proclist.h:149,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:163,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - list
    - procno
    - node_offset
    argTypes:
    - proclist_head*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 167
    functionName: proclist_contains_offset
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached:
    - Assert
    - proclist_node_get
    linkageType: ''
    returnType: bool
    signature: "bool proclist_contains_offset(const proclist_head *list, int procno,\n\t\t\t\t\t\t
      size_t node_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/proclist.h:177,1
    - Dst: proclist_is_empty
      Src: /src/postgres/src/include/storage/proclist.h:177,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/include/storage/proclist.h:178,1
    - Dst: proclist_delete_offset
      Src: /src/postgres/src/include/storage/proclist.h:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - list
    - node_offset
    argTypes:
    - proclist_head*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 181
    functionName: proclist_pop_head_node_offset
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached:
    - Assert
    - GetPGProcByNumber
    - proclist_delete_offset
    - proclist_is_empty
    linkageType: ''
    returnType: PGPROC
    signature: 'PGPROC *

      proclist_pop_head_node_offset(proclist_head *list, size_t node_offset)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - list
    - ','
    - procno
    - ','
    - link_member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 189
    functionName: proclist_delete
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: proclist_delete(list, procno, link_member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - list
    - ','
    - procno
    - ','
    - link_member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 191
    functionName: proclist_push_head
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: proclist_push_head(list, procno, link_member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - list
    - ','
    - procno
    - ','
    - link_member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: proclist_push_tail
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: proclist_push_tail(list, procno, link_member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - list
    - ','
    - link_member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: proclist_pop_head_node
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: proclist_pop_head_node(list, link_member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - list
    - ','
    - procno
    - ','
    - link_member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: proclist_contains
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: proclist_contains(list, procno, link_member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - iter
    - ','
    - lhead
    - ','
    - link_member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 218
    functionName: proclist_foreach_modify
    functionSourceFile: /src/postgres/src/include/storage/proclist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: proclist_foreach_modify(iter, lhead, link_member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - blockNumber
    argTypes:
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: BlockNumberIsValid
    functionSourceFile: /src/postgres/src/include/storage/block.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool BlockNumberIsValid(BlockNumber blockNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - blockId
    - blockNumber
    argTypes:
    - BlockIdData*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: BlockIdSet
    functionSourceFile: /src/postgres/src/include/storage/block.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BlockIdSet(BlockIdData *blockId, BlockNumber blockNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - blockId1
    - blockId2
    argTypes:
    - BlockIdData*
    - BlockIdData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: BlockIdEquals
    functionSourceFile: /src/postgres/src/include/storage/block.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool BlockIdEquals(const BlockIdData *blockId1, const BlockIdData *blockId2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - blockId
    argTypes:
    - BlockIdData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: BlockIdGetBlockNumber
    functionSourceFile: /src/postgres/src/include/storage/block.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber BlockIdGetBlockNumber(const BlockIdData *blockId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - smgr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: SmgrIsTemp
    functionSourceFile: /src/postgres/src/include/storage/smgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SmgrIsTemp(smgr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smgrreadv
      Src: /src/postgres/src/include/storage/smgr.h:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - reln
    - forknum
    - blocknum
    - buffer
    argTypes:
    - SMgrRelation
    - ForkNumber
    - BlockNumber
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 128
    functionName: smgrread
    functionSourceFile: /src/postgres/src/include/storage/smgr.h
    functionUses: 0
    functionsReached:
    - smgrreadv
    linkageType: ''
    returnType: void
    signature: "void smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,\n\t\t
      void *buffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smgrwritev
      Src: /src/postgres/src/include/storage/smgr.h:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - reln
    - forknum
    - blocknum
    - buffer
    - skipFsync
    argTypes:
    - SMgrRelation
    - ForkNumber
    - BlockNumber
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 135
    functionName: smgrwrite
    functionSourceFile: /src/postgres/src/include/storage/smgr.h
    functionUses: 1
    functionsReached:
    - smgrwritev
    linkageType: ''
    returnType: void
    signature: "void smgrwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber
      blocknum,\n\t\t  const void *buffer, bool skipFsync)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - elevel
    - ','
    - msg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 395
    functionName: pgaio_debug
    functionSourceFile: /src/postgres/src/include/storage/aio_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgaio_debug(elevel, msg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - elevel
    - ','
    - ioh
    - ','
    - msg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 407
    functionName: pgaio_debug_io
    functionSourceFile: /src/postgres/src/include/storage/aio_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgaio_debug_io(elevel, ioh, msg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buffer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: BufferIsInvalid
    functionSourceFile: /src/postgres/src/include/storage/buf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BufferIsInvalid(buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buffer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: BufferIsLocal
    functionSourceFile: /src/postgres/src/include/storage/buf.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BufferIsLocal(buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: malloc
    functionSourceFile: /src/postgres/src/include/snowball/snowball_runtime.h
    functionUses: 88
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: malloc(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: calloc
    functionSourceFile: /src/postgres/src/include/snowball/snowball_runtime.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: calloc(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: realloc
    functionSourceFile: /src/postgres/src/include/snowball/snowball_runtime.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: realloc(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: free
    functionSourceFile: /src/postgres/src/include/snowball/snowball_runtime.h
    functionUses: 533
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: free(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 11
    functionName: SIZE
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIZE(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 12
    functionName: SET_SIZE
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_SIZE(p, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: CAPACITY
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CAPACITY(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: SIZE
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIZE(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 16
    functionName: SET_SIZE
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_SIZE(p, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: CAPACITY
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CAPACITY(p)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SIZE
      Src: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h:29,1
    - Dst: printf
      Src: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h:30,1
    - Dst: printf
      Src: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h:32,1
    - Dst: printf
      Src: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h:33,1
    - Dst: printf
      Src: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h:34,1
    - Dst: printf
      Src: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h:35,1
    - Dst: printf
      Src: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h:36,1
    - Dst: printf
      Src: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h:40,1
    - Dst: printf
      Src: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h:43,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - z
    - number
    - line_count
    argTypes:
    - struct SN_env*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 44
    functionName: debug
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/snowball_runtime.h
    functionUses: 62
    functionsReached:
    - SIZE
    - printf
    linkageType: ''
    returnType: void
    signature: void debug(struct SN_env * z, int number, int line_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fcinfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: CALLED_AS_EVENT_TRIGGER
    functionSourceFile: /src/postgres/src/include/commands/event_trigger.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLED_AS_EVENT_TRIGGER(fcinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fcinfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: CALLED_AS_TRIGGER
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLED_AS_TRIGGER(fcinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: TRIGGER_FIRED_BY_INSERT
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FIRED_BY_INSERT(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: TRIGGER_FIRED_BY_DELETE
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FIRED_BY_DELETE(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: TRIGGER_FIRED_BY_UPDATE
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FIRED_BY_UPDATE(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: TRIGGER_FIRED_BY_TRUNCATE
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FIRED_BY_TRUNCATE(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: TRIGGER_FIRED_FOR_ROW
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FIRED_FOR_ROW(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: TRIGGER_FIRED_FOR_STATEMENT
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FIRED_FOR_STATEMENT(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: TRIGGER_FIRED_BEFORE
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FIRED_BEFORE(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 135
    functionName: TRIGGER_FIRED_AFTER
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FIRED_AFTER(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 138
    functionName: TRIGGER_FIRED_INSTEAD
    functionSourceFile: /src/postgres/src/include/commands/trigger.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRIGGER_FIRED_INSTEAD(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cstate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: INPUT_BUF_BYTES
    functionSourceFile: /src/postgres/src/include/commands/copyfrom_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INPUT_BUF_BYTES(cstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cstate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    functionName: RAW_BUF_BYTES
    functionSourceFile: /src/postgres/src/include/commands/copyfrom_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RAW_BUF_BYTES(cstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/d2s.c:80,1
    - Dst: div5
      Src: /src/postgres/src/common/d2s.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 91
    functionName: pow5Factor
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - Assert
    - div5
    linkageType: ''
    returnType: uint32
    signature: uint32 pow5Factor(uint64 value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pow5Factor
      Src: /src/postgres/src/common/d2s.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - p
    argTypes:
    - uint64
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: multipleOfPowerOf5
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - pow5Factor
    linkageType: ''
    returnType: bool
    signature: bool multipleOfPowerOf5(const uint64 value, const uint32 p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/d2s.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - p
    argTypes:
    - uint64
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: multipleOfPowerOf2
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: bool
    signature: bool multipleOfPowerOf2(const uint64 value, const uint32 p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - m
    - mul
    - j
    argTypes:
    - uint64
    - uint64*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 168
    functionName: mulShift
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 mulShift(const uint64 m, const uint64 *const mul, const int32
      j)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mulShift
      Src: /src/postgres/src/common/d2s.c:174,1
    - Dst: mulShift
      Src: /src/postgres/src/common/d2s.c:175,1
    - Dst: mulShift
      Src: /src/postgres/src/common/d2s.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - m
    - mul
    - j
    - vp
    - vm
    - mmShift
    argTypes:
    - uint64
    - uint64*
    - int32
    - uint64*
    - uint64*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 177
    functionName: mulShiftAll
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - mulShift
    linkageType: ''
    returnType: uint64
    signature: "uint64 mulShiftAll(const uint64 m, const uint64 *const mul, const
      int32 j,\n\t\t\tuint64 *const vp, uint64 *const vm, const uint32 mmShift)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: umul128
      Src: /src/postgres/src/common/d2s.c:188,1
    - Dst: umul128
      Src: /src/postgres/src/common/d2s.c:195,1
    - Dst: shiftright128
      Src: /src/postgres/src/common/d2s.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - m
    - mul
    - j
    argTypes:
    - uint64
    - uint64*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 205
    functionName: mulShift
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 1
    functionsReached:
    - shiftright128
    - umul128
    linkageType: ''
    returnType: uint64
    signature: uint64 mulShift(const uint64 m, const uint64 *const mul, const int32
      j)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mulShift
      Src: /src/postgres/src/common/d2s.c:211,1
    - Dst: mulShift
      Src: /src/postgres/src/common/d2s.c:212,1
    - Dst: mulShift
      Src: /src/postgres/src/common/d2s.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - m
    - mul
    - j
    - vp
    - vm
    - mmShift
    argTypes:
    - uint64
    - uint64*
    - int32
    - uint64*
    - uint64*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 214
    functionName: mulShiftAll
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - mulShift
    linkageType: ''
    returnType: uint64
    signature: "uint64 mulShiftAll(const uint64 m, const uint64 *const mul, const
      int32 j,\n\t\t\tuint64 *const vp, uint64 *const vm, const uint32 mmShift)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: umul128
      Src: /src/postgres/src/common/d2s.c:226,1
    - Dst: umul128
      Src: /src/postgres/src/common/d2s.c:228,1
    - Dst: shiftright128
      Src: /src/postgres/src/common/d2s.c:236,1
    - Dst: shiftright128
      Src: /src/postgres/src/common/d2s.c:244,1
    - Dst: shiftright128
      Src: /src/postgres/src/common/d2s.c:255,1
    - Dst: shiftright128
      Src: /src/postgres/src/common/d2s.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - m
    - mul
    - j
    - vp
    - vm
    - mmShift
    argTypes:
    - uint64
    - uint64*
    - int32
    - uint64*
    - uint64*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 259
    functionName: mulShiftAll
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - shiftright128
    - umul128
    linkageType: ''
    returnType: uint64
    signature: "uint64 mulShiftAll(uint64 m, const uint64 *const mul, const int32
      j,\n\t\t\tuint64 *const vp, uint64 *const vm, const uint32 mmShift)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/d2s.c:270,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 51
    argCount: 1
    argNames:
    - v
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 336
    functionName: decimalLength
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint32
    signature: uint32 decimalLength(const uint64 v)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/d2s.c:360,1
    - Dst: log10Pow2
      Src: /src/postgres/src/common/d2s.c:396,1
    - Dst: pow5bits
      Src: /src/postgres/src/common/d2s.c:397,1
    - Dst: mulShiftAll
      Src: /src/postgres/src/common/d2s.c:402,1
    - Dst: div5
      Src: /src/postgres/src/common/d2s.c:413,1
    - Dst: multipleOfPowerOf5
      Src: /src/postgres/src/common/d2s.c:417,1
    - Dst: multipleOfPowerOf5
      Src: /src/postgres/src/common/d2s.c:427,1
    - Dst: multipleOfPowerOf5
      Src: /src/postgres/src/common/d2s.c:432,1
    - Dst: log10Pow5
      Src: /src/postgres/src/common/d2s.c:441,1
    - Dst: pow5bits
      Src: /src/postgres/src/common/d2s.c:443,1
    - Dst: mulShiftAll
      Src: /src/postgres/src/common/d2s.c:448,1
    - Dst: multipleOfPowerOf2
      Src: /src/postgres/src/common/d2s.c:488,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:506,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:507,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:513,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:529,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:535,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:536,1
    - Dst: div100
      Src: /src/postgres/src/common/d2s.c:567,1
    - Dst: div100
      Src: /src/postgres/src/common/d2s.c:568,1
    - Dst: div100
      Src: /src/postgres/src/common/d2s.c:573,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:598,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:599,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:604,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 86
    argCount: 2
    argNames:
    - ieeeMantissa
    - ieeeExponent
    argTypes:
    - uint64
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 628
    functionName: d2d
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - div100
    - div5
    - div10
    - mulShiftAll
    - multipleOfPowerOf5
    - pow5bits
    - log10Pow2
    - log10Pow5
    - UINT64CONST
    - multipleOfPowerOf2
    linkageType: ''
    returnType: floating_decimal_64
    signature: floating_decimal_64 d2d(const uint64 ieeeMantissa, const uint32 ieeeExponent)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/d2s.c:658,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:662,1
    - Dst: Assert
      Src: /src/postgres/src/common/d2s.c:678,1
    - Dst: memset
      Src: /src/postgres/src/common/d2s.c:679,1
    - Dst: div1e8
      Src: /src/postgres/src/common/d2s.c:690,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:703,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:704,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:705,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:706,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:719,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:720,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:728,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:735,1
    - Dst: Assert
      Src: /src/postgres/src/common/d2s.c:749,1
    - Dst: memmove
      Src: /src/postgres/src/common/d2s.c:753,1
    - Dst: memmove
      Src: /src/postgres/src/common/d2s.c:758,1
    - Dst: memmove
      Src: /src/postgres/src/common/d2s.c:763,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 63
    argCount: 3
    argNames:
    - v
    - olength
    - result
    argTypes:
    - floating_decimal_64
    - uint32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 784
    functionName: to_chars_df
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - div1e8
    - memcpy
    - Assert
    - memmove
    - memset
    linkageType: ''
    returnType: int
    signature: int to_chars_df(const floating_decimal_64 v, const uint32 olength,
      char *const result)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: decimalLength
      Src: /src/postgres/src/common/d2s.c:793,1
    - Dst: to_chars_df
      Src: /src/postgres/src/common/d2s.c:807,1
    - Dst: div10
      Src: /src/postgres/src/common/d2s.c:829,1
    - Dst: div1e8
      Src: /src/postgres/src/common/d2s.c:862,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:877,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:878,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:879,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:880,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:895,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:896,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:904,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:948,1
    - Dst: memcpy
      Src: /src/postgres/src/common/d2s.c:954,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 61
    argCount: 3
    argNames:
    - v
    - sign
    - result
    argTypes:
    - floating_decimal_64
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 786
    functionDepth: 2
    functionLinenumber: 786
    functionLinenumberEnd: 959
    functionName: to_chars
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - div1e8
    - memcpy
    - div10
    - decimalLength
    - to_chars_df
    linkageType: ''
    returnType: int
    signature: int to_chars(floating_decimal_64 v, const bool sign, char *const result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/d2s.c:985,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/d2s.c:996,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ieeeMantissa
    - ieeeExponent
    - v
    argTypes:
    - uint64
    - uint32
    - floating_decimal_64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 961
    functionDepth: 1
    functionLinenumber: 961
    functionLinenumberEnd: 1005
    functionName: d2d_small_int
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: bool
    signature: "bool d2d_small_int(const uint64 ieeeMantissa,\n\t\t\t  const uint32
      ieeeExponent,\n\t\t\t  floating_decimal_64 *v)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: double_to_bits
      Src: /src/postgres/src/common/d2s.c:1021,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/d2s.c:1025,1
    - Dst: copy_special_str
      Src: /src/postgres/src/common/d2s.c:1031,1
    - Dst: d2d_small_int
      Src: /src/postgres/src/common/d2s.c:1035,1
    - Dst: d2d
      Src: /src/postgres/src/common/d2s.c:1039,1
    - Dst: to_chars
      Src: /src/postgres/src/common/d2s.c:1042,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - f
    - result
    argTypes:
    - double
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1014
    functionDepth: 2
    functionLinenumber: 1014
    functionLinenumberEnd: 1043
    functionName: double_to_shortest_decimal_bufn
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - d2d_small_int
    - to_chars
    - copy_special_str
    - double_to_bits
    - d2d
    - UINT64CONST
    linkageType: ''
    returnType: int
    signature: int double_to_shortest_decimal_bufn(double f, char *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: double_to_shortest_decimal_bufn
      Src: /src/postgres/src/common/d2s.c:1055,1
    - Dst: Assert
      Src: /src/postgres/src/common/d2s.c:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - f
    - result
    argTypes:
    - double
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1052
    functionDepth: 3
    functionLinenumber: 1052
    functionLinenumberEnd: 1061
    functionName: double_to_shortest_decimal_buf
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - Assert
    - double_to_shortest_decimal_bufn
    linkageType: ''
    returnType: int
    signature: int double_to_shortest_decimal_buf(double f, char *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/common/d2s.c:1072,1
    - Dst: double_to_shortest_decimal_buf
      Src: /src/postgres/src/common/d2s.c:1074,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1069
    functionDepth: 4
    functionLinenumber: 1069
    functionLinenumberEnd: 1076
    functionName: double_to_shortest_decimal
    functionSourceFile: /src/postgres/src/common/d2s.c
    functionUses: 0
    functionsReached:
    - double_to_shortest_decimal_buf
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      double_to_shortest_decimal(double f)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/checksum_helper.c:33,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/checksum_helper.c:35,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/checksum_helper.c:37,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/checksum_helper.c:39,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/checksum_helper.c:41,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/checksum_helper.c:43,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - name
    - type
    argTypes:
    - char*
    - pg_checksum_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 50
    functionName: pg_checksum_parse_type
    functionSourceFile: /src/postgres/src/common/checksum_helper.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool pg_checksum_parse_type(char *name, pg_checksum_type *type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/checksum_helper.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - type
    argTypes:
    - pg_checksum_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 76
    functionName: pg_checksum_type_name
    functionSourceFile: /src/postgres/src/common/checksum_helper.c
    functionUses: 3
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_checksum_type_name(pg_checksum_type type)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/checksum_helper.c:93,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/checksum_helper.c:96,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/checksum_helper.c:99,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/checksum_helper.c:101,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/checksum_helper.c:106,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/checksum_helper.c:109,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/checksum_helper.c:111,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/checksum_helper.c:116,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/checksum_helper.c:119,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/checksum_helper.c:121,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/checksum_helper.c:126,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/checksum_helper.c:129,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/checksum_helper.c:131,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 2
    argNames:
    - context
    - type
    argTypes:
    - pg_checksum_context*
    - pg_checksum_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 138
    functionName: pg_checksum_init
    functionSourceFile: /src/postgres/src/common/checksum_helper.c
    functionUses: 6
    functionsReached:
    - pg_cryptohash_free
    - pg_cryptohash_create
    - pg_cryptohash_init
    - INIT_CRC32C
    linkageType: ''
    returnType: int
    signature: int pg_checksum_init(pg_checksum_context *context, pg_checksum_type
      type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/checksum_helper.c:154,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/checksum_helper.c:160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - context
    - input
    - len
    argTypes:
    - pg_checksum_context*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 166
    functionName: pg_checksum_update
    functionSourceFile: /src/postgres/src/common/checksum_helper.c
    functionUses: 8
    functionsReached:
    - pg_cryptohash_update
    - COMP_CRC32C
    linkageType: ''
    returnType: int
    signature: "int pg_checksum_update(pg_checksum_context *context, const uint8 *input,\n\t\t\t\t
      \  size_t len)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/common/checksum_helper.c:180,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/common/checksum_helper.c:182,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/common/checksum_helper.c:184,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/common/checksum_helper.c:186,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/common/checksum_helper.c:188,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/common/checksum_helper.c:196,1
    - Dst: memcpy
      Src: /src/postgres/src/common/checksum_helper.c:198,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/checksum_helper.c:202,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/checksum_helper.c:205,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/checksum_helper.c:209,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/checksum_helper.c:212,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/checksum_helper.c:216,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/checksum_helper.c:219,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/checksum_helper.c:223,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/checksum_helper.c:226,1
    - Dst: Assert
      Src: /src/postgres/src/common/checksum_helper.c:230,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 2
    argNames:
    - context
    - output
    argTypes:
    - pg_checksum_context*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 232
    functionName: pg_checksum_final
    functionSourceFile: /src/postgres/src/common/checksum_helper.c
    functionUses: 6
    functionsReached:
    - pg_cryptohash_final
    - memcpy
    - FIN_CRC32C
    - Assert
    - pg_cryptohash_free
    - StaticAssertDecl
    linkageType: ''
    returnType: int
    signature: int pg_checksum_final(pg_checksum_context *context, uint8 *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: PG_U_CATEGORY_MASK
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_U_CATEGORY_MASK(X)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_category.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_category.c:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 108
    functionName: unicode_category
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - Assert
    - lengthof
    linkageType: ''
    returnType: pg_unicode_category
    signature: pg_unicode_category unicode_category(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: range_search
      Src: /src/postgres/src/common/unicode_category.c:116,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_category.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 119
    functionName: pg_u_prop_alphabetic
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - range_search
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_alphabetic(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: range_search
      Src: /src/postgres/src/common/unicode_category.c:127,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_category.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 130
    functionName: pg_u_prop_lowercase
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - range_search
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_lowercase(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: range_search
      Src: /src/postgres/src/common/unicode_category.c:138,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_category.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 141
    functionName: pg_u_prop_uppercase
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - range_search
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_uppercase(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_U_CATEGORY_MASK
      Src: /src/postgres/src/common/unicode_category.c:151,1
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:151,1
    - Dst: pg_u_prop_lowercase
      Src: /src/postgres/src/common/unicode_category.c:154,1
    - Dst: pg_u_prop_uppercase
      Src: /src/postgres/src/common/unicode_category.c:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 156
    functionName: pg_u_prop_cased
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - PG_U_CATEGORY_MASK
    - pg_u_prop_uppercase
    - unicode_category
    - pg_u_prop_lowercase
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_cased(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: range_search
      Src: /src/postgres/src/common/unicode_category.c:164,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_category.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: pg_u_prop_case_ignorable
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - range_search
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_case_ignorable(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: range_search
      Src: /src/postgres/src/common/unicode_category.c:175,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_category.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 178
    functionName: pg_u_prop_white_space
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - range_search
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_white_space(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: range_search
      Src: /src/postgres/src/common/unicode_category.c:186,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_category.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 189
    functionName: pg_u_prop_hex_digit
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - range_search
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_hex_digit(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: range_search
      Src: /src/postgres/src/common/unicode_category.c:197,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_category.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 200
    functionName: pg_u_prop_join_control
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - range_search
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_join_control(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - code
    - posix
    argTypes:
    - char32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: pg_u_isdigit
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - unicode_category
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isdigit(char32_t code, bool posix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_prop_alphabetic
      Src: /src/postgres/src/common/unicode_category.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 219
    functionDepth: 2
    functionLinenumber: 219
    functionLinenumberEnd: 223
    functionName: pg_u_isalpha
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - pg_u_prop_alphabetic
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isalpha(char32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isalpha
      Src: /src/postgres/src/common/unicode_category.c:228,1
    - Dst: pg_u_isdigit
      Src: /src/postgres/src/common/unicode_category.c:228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - code
    - posix
    argTypes:
    - char32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 229
    functionName: pg_u_isalnum
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - pg_u_isalpha
    - pg_u_isdigit
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isalnum(char32_t code, bool posix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_U_CATEGORY_MASK
      Src: /src/postgres/src/common/unicode_category.c:234,1
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:234,1
    - Dst: pg_u_isalpha
      Src: /src/postgres/src/common/unicode_category.c:238,1
    - Dst: pg_u_prop_join_control
      Src: /src/postgres/src/common/unicode_category.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 240
    functionName: pg_u_isword
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - PG_U_CATEGORY_MASK
    - pg_u_prop_join_control
    - pg_u_isalpha
    - unicode_category
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isword(char32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_prop_uppercase
      Src: /src/postgres/src/common/unicode_category.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 246
    functionName: pg_u_isupper
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - pg_u_prop_uppercase
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isupper(char32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_prop_lowercase
      Src: /src/postgres/src/common/unicode_category.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 248
    functionDepth: 2
    functionLinenumber: 248
    functionLinenumberEnd: 252
    functionName: pg_u_islower
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - pg_u_prop_lowercase
    linkageType: ''
    returnType: bool
    signature: bool pg_u_islower(char32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 259
    functionName: pg_u_isblank
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - unicode_category
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isblank(char32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 265
    functionName: pg_u_iscntrl
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - unicode_category
    linkageType: ''
    returnType: bool
    signature: bool pg_u_iscntrl(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_U_CATEGORY_MASK
      Src: /src/postgres/src/common/unicode_category.c:270,1
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:270,1
    - Dst: pg_u_isspace
      Src: /src/postgres/src/common/unicode_category.c:273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 276
    functionName: pg_u_isgraph
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - PG_U_CATEGORY_MASK
    - pg_u_isspace
    - unicode_category
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isgraph(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:281,1
    - Dst: pg_u_isgraph
      Src: /src/postgres/src/common/unicode_category.c:286,1
    - Dst: pg_u_isblank
      Src: /src/postgres/src/common/unicode_category.c:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 278
    functionDepth: 3
    functionLinenumber: 278
    functionLinenumberEnd: 287
    functionName: pg_u_isprint
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - unicode_category
    - pg_u_isblank
    - pg_u_isgraph
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isprint(char32_t code)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isalpha
      Src: /src/postgres/src/common/unicode_category.c:296,1
    - Dst: PG_U_CATEGORY_MASK
      Src: /src/postgres/src/common/unicode_category.c:299,1
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:299,1
    - Dst: PG_U_CATEGORY_MASK
      Src: /src/postgres/src/common/unicode_category.c:304,1
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - code
    - posix
    argTypes:
    - char32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 308
    functionName: pg_u_ispunct
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - PG_U_CATEGORY_MASK
    - pg_u_isalpha
    - unicode_category
    linkageType: ''
    returnType: bool
    signature: bool pg_u_ispunct(char32_t code, bool posix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_prop_white_space
      Src: /src/postgres/src/common/unicode_category.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 314
    functionName: pg_u_isspace
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 1
    functionsReached:
    - pg_u_prop_white_space
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isspace(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode_category.c:324,1
    - Dst: pg_u_prop_hex_digit
      Src: /src/postgres/src/common/unicode_category.c:325,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 4
    argCount: 2
    argNames:
    - code
    - posix
    argTypes:
    - char32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 326
    functionName: pg_u_isxdigit
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - unicode_category
    - pg_u_prop_hex_digit
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isxdigit(char32_t code, bool posix)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_category.c:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 65
    argCount: 1
    argNames:
    - category
    argTypes:
    - pg_unicode_category
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 400
    functionName: unicode_category_string
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      unicode_category_string(pg_unicode_category category)'
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_category.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 65
    argCount: 1
    argNames:
    - category
    argTypes:
    - pg_unicode_category
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 474
    functionName: unicode_category_abbrev
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      unicode_category_abbrev(pg_unicode_category category)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_category.c:487,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - tbl
    - size
    - code
    argTypes:
    - pg_unicode_range*
    - size_t
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 501
    functionName: range_search
    functionSourceFile: /src/postgres/src/common/unicode_category.c
    functionUses: 7
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool range_search(const pg_unicode_range *tbl, size_t size, char32_t
      code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _umul128
      Src: /src/postgres/src/common/d2s_intrinsics.h:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - productHi
    argTypes:
    - uint64
    - uint64
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: umul128
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 3
    functionsReached:
    - _umul128
    linkageType: ''
    returnType: uint64
    signature: uint64 umul128(const uint64 a, const uint64 b, uint64 *const productHi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/d2s_intrinsics.h:58,1
    - Dst: __shiftright128
      Src: /src/postgres/src/common/d2s_intrinsics.h:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - lo
    - hi
    - dist
    argTypes:
    - uint64
    - uint64
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 60
    functionName: shiftright128
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 3
    functionsReached:
    - Assert
    - __shiftright128
    linkageType: ''
    returnType: uint64
    signature: uint64 shiftright128(const uint64 lo, const uint64 hi, const uint32
      dist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - productHi
    argTypes:
    - uint64
    - uint64
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 97
    functionName: umul128
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 umul128(const uint64 a, const uint64 b, uint64 *const productHi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/d2s_intrinsics.h:103,1
    - Dst: Assert
      Src: /src/postgres/src/common/d2s_intrinsics.h:105,1
    - Dst: Assert
      Src: /src/postgres/src/common/d2s_intrinsics.h:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - lo
    - hi
    - dist
    argTypes:
    - uint64
    - uint64
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 112
    functionName: shiftright128
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 3
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint64
    signature: uint64 shiftright128(const uint64 lo, const uint64 hi, const uint32
      dist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: umul128
      Src: /src/postgres/src/common/d2s_intrinsics.h:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 130
    functionName: umulh
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 0
    functionsReached:
    - umul128
    linkageType: ''
    returnType: uint64
    signature: uint64 umulh(const uint64 a, const uint64 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: umulh
      Src: /src/postgres/src/common/d2s_intrinsics.h:153,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/d2s_intrinsics.h:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 154
    functionName: div5
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 2
    functionsReached:
    - umulh
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 div5(const uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: umulh
      Src: /src/postgres/src/common/d2s_intrinsics.h:159,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/d2s_intrinsics.h:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: div10
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 2
    functionsReached:
    - umulh
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 div10(const uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: umulh
      Src: /src/postgres/src/common/d2s_intrinsics.h:165,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/d2s_intrinsics.h:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: div100
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 1
    functionsReached:
    - umulh
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 div100(const uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: umulh
      Src: /src/postgres/src/common/d2s_intrinsics.h:171,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/d2s_intrinsics.h:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 172
    functionName: div1e8
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 2
    functionsReached:
    - umulh
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 div1e8(const uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 180
    functionName: div5
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 div5(const uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 186
    functionName: div10
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 div10(const uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: div100
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 div100(const uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: div1e8
    functionSourceFile: /src/postgres/src/common/d2s_intrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 div1e8(const uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 61
    functionName: conv_compare
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int conv_compare(const void *p1, const void *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton32
      Src: /src/postgres/src/common/unicode_norm.c:84,1
    - Dst: pg_unicode_decompinfo::hash
      Src: /src/postgres/src/common/unicode_norm.c:85,1
    - Dst: bsearch
      Src: /src/postgres/src/common/unicode_norm.c:101,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_norm.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 107
    functionName: get_code_entry
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - pg_unicode_decompinfo::hash
    - pg_hton32
    - lengthof
    - bsearch
    linkageType: ''
    returnType: pg_unicode_decomposition
    signature: 'pg_unicode_decomposition *

      get_code_entry(char32_t code)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_code_entry
      Src: /src/postgres/src/common/unicode_norm.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 125
    functionName: get_canonical_class
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - get_code_entry
    linkageType: ''
    returnType: uint8
    signature: uint8 get_canonical_class(char32_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DECOMPOSITION_IS_INLINE
      Src: /src/postgres/src/common/unicode_norm.c:139,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_norm.c:141,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:141,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - entry
    - dec_size
    argTypes:
    - pg_unicode_decomposition*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 151
    functionName: get_code_decomposition
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - Assert
    - DECOMPOSITION_SIZE
    - DECOMPOSITION_IS_INLINE
    linkageType: ''
    returnType: char32_t
    signature: 'char32_t *

      get_code_decomposition(const pg_unicode_decomposition *entry, int *dec_size)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_code_entry
      Src: /src/postgres/src/common/unicode_norm.c:187,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:193,1
    - Dst: DECOMPOSITION_IS_COMPAT
      Src: /src/postgres/src/common/unicode_norm.c:194,1
    - Dst: get_code_decomposition
      Src: /src/postgres/src/common/unicode_norm.c:201,1
    - Dst: get_decomposed_size
      Src: /src/postgres/src/common/unicode_norm.c:206,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - code
    - compat
    argTypes:
    - char32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 210
    functionName: get_decomposed_size
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 1
    functionsReached:
    - DECOMPOSITION_SIZE
    - DECOMPOSITION_IS_COMPAT
    - get_decomposed_size
    - get_code_entry
    - get_code_decomposition
    linkageType: ''
    returnType: int
    signature: int get_decomposed_size(char32_t code, bool compat)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton64
      Src: /src/postgres/src/common/unicode_norm.c:270,1
    - Dst: pg_unicode_recompinfo::hash
      Src: /src/postgres/src/common/unicode_norm.c:271,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_norm.c:291,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:295,1
    - Dst: DECOMPOSITION_NO_COMPOSE
      Src: /src/postgres/src/common/unicode_norm.c:298,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 32
    argCount: 3
    argNames:
    - start
    - code
    - result
    argTypes:
    - uint32
    - uint32
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 312
    functionName: recompose_code
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - DECOMPOSITION_SIZE
    - pg_hton64
    - DECOMPOSITION_NO_COMPOSE
    - lengthof
    - pg_unicode_recompinfo::hash
    linkageType: ''
    returnType: bool
    signature: bool recompose_code(uint32 start, uint32 code, uint32 *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_code_entry
      Src: /src/postgres/src/common/unicode_norm.c:362,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:370,1
    - Dst: DECOMPOSITION_IS_COMPAT
      Src: /src/postgres/src/common/unicode_norm.c:371,1
    - Dst: get_code_decomposition
      Src: /src/postgres/src/common/unicode_norm.c:383,1
    - Dst: decompose_code
      Src: /src/postgres/src/common/unicode_norm.c:389,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - code
    - compat
    - result
    - current
    argTypes:
    - char32_t
    - bool
    - char32_t**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 391
    functionName: decompose_code
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 1
    functionsReached:
    - DECOMPOSITION_SIZE
    - decompose_code
    - DECOMPOSITION_IS_COMPAT
    - get_code_entry
    - get_code_decomposition
    linkageType: ''
    returnType: void
    signature: void decompose_code(char32_t code, bool compat, char32_t **result,
      int *current)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: get_decomposed_size
      Src: /src/postgres/src/common/unicode_norm.c:434,1
    - Dst: unlikely
      Src: /src/postgres/src/common/unicode_norm.c:435,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/unicode_norm.c:447,1
    - Dst: decompose_code
      Src: /src/postgres/src/common/unicode_norm.c:457,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_norm.c:459,1
    - Dst: get_canonical_class
      Src: /src/postgres/src/common/unicode_norm.c:473,1
    - Dst: get_canonical_class
      Src: /src/postgres/src/common/unicode_norm.c:474,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/unicode_norm.c:509,1
    - Dst: FREE
      Src: /src/postgres/src/common/unicode_norm.c:512,1
    - Dst: get_canonical_class
      Src: /src/postgres/src/common/unicode_norm.c:524,1
    - Dst: recompose_code
      Src: /src/postgres/src/common/unicode_norm.c:528,1
    - Dst: FREE
      Src: /src/postgres/src/common/unicode_norm.c:548,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 59
    argCount: 2
    argNames:
    - form
    - input
    argTypes:
    - UnicodeNormalizationForm
    - char32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 402
    functionDepth: 3
    functionLinenumber: 402
    functionLinenumberEnd: 551
    functionName: unicode_normalize
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - ALLOC
    - decompose_code
    - get_canonical_class
    - get_decomposed_size
    - Assert
    - FREE
    - unlikely
    - recompose_code
    linkageType: ''
    returnType: char32_t
    signature: 'char32_t *

      unicode_normalize(UnicodeNormalizationForm form, const char32_t *input)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton32
      Src: /src/postgres/src/common/unicode_norm.c:571,1
    - Dst: pg_unicode_norminfo*::hash
      Src: /src/postgres/src/common/unicode_norm.c:572,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ch
    - norminfo
    argTypes:
    - char32_t
    - pg_unicode_norminfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 587
    functionName: qc_hash_lookup
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - pg_unicode_norminfo*::hash
    - pg_hton32
    linkageType: ''
    returnType: pg_unicode_normprops
    signature: 'pg_unicode_normprops *

      qc_hash_lookup(char32_t ch, const pg_unicode_norminfo *norminfo)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: qc_hash_lookup
      Src: /src/postgres/src/common/unicode_norm.c:600,1
    - Dst: qc_hash_lookup
      Src: /src/postgres/src/common/unicode_norm.c:603,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_norm.c:606,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - form
    - ch
    argTypes:
    - UnicodeNormalizationForm
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 592
    functionDepth: 2
    functionLinenumber: 592
    functionLinenumberEnd: 614
    functionName: qc_is_allowed
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - Assert
    - qc_hash_lookup
    linkageType: ''
    returnType: UnicodeNormalizationQC
    signature: UnicodeNormalizationQC qc_is_allowed(UnicodeNormalizationForm form,
      char32_t ch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_canonical_class
      Src: /src/postgres/src/common/unicode_norm.c:638,1
    - Dst: qc_is_allowed
      Src: /src/postgres/src/common/unicode_norm.c:642,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - form
    - input
    argTypes:
    - UnicodeNormalizationForm
    - char32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 616
    functionDepth: 3
    functionLinenumber: 616
    functionLinenumberEnd: 651
    functionName: unicode_is_normalized_quickcheck
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - get_canonical_class
    - qc_is_allowed
    linkageType: ''
    returnType: UnicodeNormalizationQC
    signature: UnicodeNormalizationQC unicode_is_normalized_quickcheck(UnicodeNormalizationForm
      form, const char32_t *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: pg_log_warning
    functionSourceFile: /src/postgres/src/common/rmtree.c
    functionUses: 51
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_warning(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: OPENDIR
    functionSourceFile: /src/postgres/src/common/rmtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OPENDIR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: CLOSEDIR
    functionSourceFile: /src/postgres/src/common/rmtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CLOSEDIR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: OPENDIR
    functionSourceFile: /src/postgres/src/common/rmtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OPENDIR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: CLOSEDIR
    functionSourceFile: /src/postgres/src/common/rmtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CLOSEDIR(x)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: OPENDIR
      Src: /src/postgres/src/common/rmtree.c:60,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/rmtree.c:63,1
    - Dst: palloc_array
      Src: /src/postgres/src/common/rmtree.c:67,1
    - Dst: readdir
      Src: /src/postgres/src/common/rmtree.c:69,1
    - Dst: strcmp
      Src: /src/postgres/src/common/rmtree.c:71,1
    - Dst: strcmp
      Src: /src/postgres/src/common/rmtree.c:72,1
    - Dst: snprintf
      Src: /src/postgres/src/common/rmtree.c:74,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/common/rmtree.c:75,1
    - Dst: repalloc
      Src: /src/postgres/src/common/rmtree.c:88,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/rmtree.c:92,1
    - Dst: unlink
      Src: /src/postgres/src/common/rmtree.c:95,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/rmtree.c:97,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/rmtree.c:106,1
    - Dst: CLOSEDIR
      Src: /src/postgres/src/common/rmtree.c:110,1
    - Dst: rmtree
      Src: /src/postgres/src/common/rmtree.c:115,1
    - Dst: pfree
      Src: /src/postgres/src/common/rmtree.c:117,1
    - Dst: rmdir
      Src: /src/postgres/src/common/rmtree.c:122,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/rmtree.c:124,1
    - Dst: pfree
      Src: /src/postgres/src/common/rmtree.c:129,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 2
    argNames:
    - path
    - rmtopdir
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 132
    functionName: rmtree
    functionSourceFile: /src/postgres/src/common/rmtree.c
    functionUses: 8
    functionsReached:
    - rmdir
    - strcmp
    - unlink
    - pfree
    - pstrdup
    - readdir
    - palloc_array
    - repalloc
    - get_dirent_type
    - pg_log_warning
    - rmtree
    - OPENDIR
    - CLOSEDIR
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool rmtree(const char *path, bool rmtopdir)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: STRDUP
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRDUP(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: ALLOC0
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC0(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: STRDUP
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRDUP(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: ALLOC0
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC0(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: jsonapi_termStringInfo
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: jsonapi_termStringInfo(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - NT
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 178
    functionName: OFS
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFS(NT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 180
    functionName: IS_SEM
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SEM(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 181
    functionName: IS_NT
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_NT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PROD
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 240
    functionName: TD_ENTRY
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TD_ENTRY(PROD)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 308
    functionName: lex_peek
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonTokenType
    signature: JsonTokenType lex_peek(JsonLexContext *lex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:319,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:320,1
    - Dst: report_parse_error
      Src: /src/postgres/src/common/jsonapi.c:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - lex
    - token
    argTypes:
    - JsonParseContext
    - JsonLexContext*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 323
    functionName: lex_expect
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - report_parse_error
    - lex_peek
    - json_lex
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType lex_expect(JsonParseContext ctx, JsonLexContext
      *lex, JsonTokenType token)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 332
    functionName: JSON_ALPHANUMERIC_CHAR
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_ALPHANUMERIC_CHAR(c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_lex_number
      Src: /src/postgres/src/common/jsonapi.c:367,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 370
    functionName: IsValidJsonNumber
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - json_lex_number
    linkageType: ''
    returnType: bool
    signature: bool IsValidJsonNumber(const char *str, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALLOC0
      Src: /src/postgres/src/common/jsonapi.c:397,1
    - Dst: memset
      Src: /src/postgres/src/common/jsonapi.c:403,1
    - Dst: jsonapi_makeStringInfo
      Src: /src/postgres/src/common/jsonapi.c:418,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 5
    argNames:
    - lex
    - json
    - len
    - encoding
    - need_escapes
    argTypes:
    - JsonLexContext*
    - char*
    - size_t
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 423
    functionName: makeJsonLexContextCstringLen
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 3
    functionsReached:
    - ALLOC0
    - jsonapi_makeStringInfo
    - memset
    linkageType: ''
    returnType: JsonLexContext
    signature: "JsonLexContext *\nmakeJsonLexContextCstringLen(JsonLexContext *lex,
      const char *json,\n\t\t\t\t\t\t\t size_t len, int encoding, bool need_escapes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALLOC0
      Src: /src/postgres/src/common/jsonapi.c:441,1
    - Dst: ALLOC0
      Src: /src/postgres/src/common/jsonapi.c:442,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/jsonapi.c:443,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/jsonapi.c:444,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/jsonapi.c:445,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:454,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:455,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:456,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:457,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:458,1
    - Dst: jsonapi_initStringInfo
      Src: /src/postgres/src/common/jsonapi.c:465,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:477,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 482
    functionName: allocate_incremental_state
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - ALLOC
    - ALLOC0
    - Assert
    - FREE
    - jsonapi_initStringInfo
    linkageType: ''
    returnType: bool
    signature: bool allocate_incremental_state(JsonLexContext *lex)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALLOC0
      Src: /src/postgres/src/common/jsonapi.c:503,1
    - Dst: memset
      Src: /src/postgres/src/common/jsonapi.c:510,1
    - Dst: allocate_incremental_state
      Src: /src/postgres/src/common/jsonapi.c:515,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:519,1
    - Dst: jsonapi_makeStringInfo
      Src: /src/postgres/src/common/jsonapi.c:535,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - lex
    - encoding
    - need_escapes
    argTypes:
    - JsonLexContext*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 497
    functionDepth: 2
    functionLinenumber: 497
    functionLinenumberEnd: 540
    functionName: makeJsonLexContextIncremental
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 2
    functionsReached:
    - allocate_incremental_state
    - ALLOC0
    - FREE
    - memset
    - jsonapi_makeStringInfo
    linkageType: ''
    returnType: JsonLexContext
    signature: "JsonLexContext *\nmakeJsonLexContextIncremental(JsonLexContext *lex,
      int encoding,\n\t\t\t\t\t\t\t  bool need_escapes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:551,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - lex
    - owned_by_context
    argTypes:
    - JsonLexContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 559
    functionName: setJsonLexContextOwnsTokens
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void setJsonLexContextOwnsTokens(JsonLexContext *lex, bool owned_by_context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: REALLOC
      Src: /src/postgres/src/common/jsonapi.c:573,1
    - Dst: REALLOC
      Src: /src/postgres/src/common/jsonapi.c:581,1
    - Dst: REALLOC
      Src: /src/postgres/src/common/jsonapi.c:589,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 611
    functionName: inc_lex_level
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - REALLOC
    linkageType: ''
    returnType: bool
    signature: bool inc_lex_level(JsonLexContext *lex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_fname
      Src: /src/postgres/src/common/jsonapi.c:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 618
    functionName: dec_lex_level
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - set_fname
    linkageType: ''
    returnType: void
    signature: void dec_lex_level(JsonLexContext *lex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/jsonapi.c:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pstack
    - entry
    argTypes:
    - JsonParserStack*
    - td_entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 625
    functionName: push_prediction
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void push_prediction(JsonParserStack *pstack, td_entry entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstack
    argTypes:
    - JsonParserStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 632
    functionName: pop_prediction
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: char pop_prediction(JsonParserStack *pstack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstack
    argTypes:
    - JsonParserStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 639
    functionName: next_prediction
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: char next_prediction(JsonParserStack *pstack)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstack
    argTypes:
    - JsonParserStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 645
    functionName: have_prediction
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool have_prediction(JsonParserStack *pstack)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lex
    - fname
    argTypes:
    - JsonLexContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 660
    functionName: set_fname
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached:
    - FREE
    linkageType: ''
    returnType: void
    signature: void set_fname(JsonLexContext *lex, char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 666
    functionName: get_fname
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      get_fname(JsonLexContext *lex)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lex
    - fnull
    argTypes:
    - JsonLexContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 668
    functionDepth: 0
    functionLinenumber: 668
    functionLinenumberEnd: 672
    functionName: set_fnull
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_fnull(JsonLexContext *lex, bool fnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 674
    functionDepth: 0
    functionLinenumber: 674
    functionLinenumberEnd: 678
    functionName: get_fnull
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool get_fnull(JsonLexContext *lex)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: jsonapi_destroyStringInfo
      Src: /src/postgres/src/common/jsonapi.c:696,1
    - Dst: jsonapi_destroyStringInfo
      Src: /src/postgres/src/common/jsonapi.c:699,1
    - Dst: jsonapi_termStringInfo
      Src: /src/postgres/src/common/jsonapi.c:703,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:704,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:705,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:713,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:716,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:717,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:718,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:719,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:723,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 726
    functionName: freeJsonLexContext
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 3
    functionsReached:
    - jsonapi_destroyStringInfo
    - jsonapi_termStringInfo
    - FREE
    linkageType: ''
    returnType: void
    signature: void freeJsonLexContext(JsonLexContext *lex)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: allocate_incremental_state
      Src: /src/postgres/src/common/jsonapi.c:753,1
    - Dst: pg_parse_json_incremental
      Src: /src/postgres/src/common/jsonapi.c:756,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:769,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:773,1
    - Dst: parse_object
      Src: /src/postgres/src/common/jsonapi.c:779,1
    - Dst: parse_array
      Src: /src/postgres/src/common/jsonapi.c:782,1
    - Dst: parse_scalar
      Src: /src/postgres/src/common/jsonapi.c:785,1
    - Dst: lex_expect
      Src: /src/postgres/src/common/jsonapi.c:789,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - lex
    - sem
    argTypes:
    - JsonLexContext*
    - JsonSemAction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 744
    functionDepth: 2
    functionLinenumber: 744
    functionLinenumberEnd: 793
    functionName: pg_parse_json
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 3
    functionsReached:
    - allocate_incremental_state
    - pg_parse_json_incremental
    - parse_object
    - json_lex
    - parse_scalar
    - lex_expect
    - lex_peek
    - parse_array
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType pg_parse_json(JsonLexContext *lex, const JsonSemAction
      *sem)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/jsonapi.c:818,1
    - Dst: lex_expect
      Src: /src/postgres/src/common/jsonapi.c:823,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:827,1
    - Dst: parse_array_element
      Src: /src/postgres/src/common/jsonapi.c:832,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:837,1
    - Dst: lex_expect
      Src: /src/postgres/src/common/jsonapi.c:842,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - lex
    - elements
    argTypes:
    - JsonLexContext*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 803
    functionDepth: 2
    functionLinenumber: 803
    functionLinenumberEnd: 849
    functionName: json_count_array_elements
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - memcpy
    - json_lex
    - parse_array_element
    - lex_expect
    - lex_peek
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_count_array_elements(JsonLexContext *lex, int
      *elements)
  - BBCount: 71
    BranchProfiles: []
    Callsites:
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:891,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:895,1
    - Dst: have_prediction
      Src: /src/postgres/src/common/jsonapi.c:899,1
    - Dst: TD_ENTRY
      Src: /src/postgres/src/common/jsonapi.c:901,1
    - Dst: push_prediction
      Src: /src/postgres/src/common/jsonapi.c:903,1
    - Dst: have_prediction
      Src: /src/postgres/src/common/jsonapi.c:906,1
    - Dst: pop_prediction
      Src: /src/postgres/src/common/jsonapi.c:908,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:922,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:925,1
    - Dst: IS_NT
      Src: /src/postgres/src/common/jsonapi.c:928,1
    - Dst: OFS
      Src: /src/postgres/src/common/jsonapi.c:928,1
    - Dst: push_prediction
      Src: /src/postgres/src/common/jsonapi.c:935,1
    - Dst: IS_SEM
      Src: /src/postgres/src/common/jsonapi.c:937,1
    - Dst: inc_lex_level
      Src: /src/postgres/src/common/jsonapi.c:962,1
    - Dst: dec_lex_level
      Src: /src/postgres/src/common/jsonapi.c:970,1
    - Dst: inc_lex_level
      Src: /src/postgres/src/common/jsonapi.c:993,1
    - Dst: dec_lex_level
      Src: /src/postgres/src/common/jsonapi.c:1001,1
    - Dst: STRDUP
      Src: /src/postgres/src/common/jsonapi.c:1023,1
    - Dst: set_fname
      Src: /src/postgres/src/common/jsonapi.c:1027,1
    - Dst: set_fnull
      Src: /src/postgres/src/common/jsonapi.c:1039,1
    - Dst: get_fname
      Src: /src/postgres/src/common/jsonapi.c:1043,1
    - Dst: get_fname
      Src: /src/postgres/src/common/jsonapi.c:1057,1
    - Dst: get_fnull
      Src: /src/postgres/src/common/jsonapi.c:1058,1
    - Dst: set_fnull
      Src: /src/postgres/src/common/jsonapi.c:1071,1
    - Dst: get_fnull
      Src: /src/postgres/src/common/jsonapi.c:1087,1
    - Dst: STRDUP
      Src: /src/postgres/src/common/jsonapi.c:1115,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/jsonapi.c:1124,1
    - Dst: memcpy
      Src: /src/postgres/src/common/jsonapi.c:1128,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:1157,1
    - Dst: next_prediction
      Src: /src/postgres/src/common/jsonapi.c:1183,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1187,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1197,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1201,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1205,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1209,1
    - Dst: next_prediction
      Src: /src/postgres/src/common/jsonapi.c:1210,1
    - Dst: report_parse_error
      Src: /src/postgres/src/common/jsonapi.c:1236,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 206
    argCount: 5
    argNames:
    - lex
    - sem
    - json
    - len
    - is_last
    argTypes:
    - JsonLexContext*
    - JsonSemAction*
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 868
    functionDepth: 2
    functionLinenumber: 868
    functionLinenumberEnd: 1241
    functionName: pg_parse_json_incremental
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 3
    functionsReached:
    - dec_lex_level
    - OFS
    - json_lex
    - FREE
    - set_fname
    - get_fnull
    - next_prediction
    - lex_peek
    - ALLOC
    - IS_NT
    - memcpy
    - Assert
    - TD_ENTRY
    - inc_lex_level
    - set_fnull
    - STRDUP
    - report_parse_error
    - push_prediction
    - have_prediction
    - IS_SEM
    - pop_prediction
    - get_fname
    linkageType: ''
    returnType: JsonParseErrorType
    signature: "JsonParseErrorType pg_parse_json_incremental(JsonLexContext *lex,\n\t\t\t\t\t\t
      \ const JsonSemAction *sem,\n\t\t\t\t\t\t  const char *json,\n\t\t\t\t\t\t  size_t
      len,\n\t\t\t\t\t\t  bool is_last)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1257,1
    - Dst: report_parse_error
      Src: /src/postgres/src/common/jsonapi.c:1264,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:1268,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1271,1
    - Dst: STRDUP
      Src: /src/postgres/src/common/jsonapi.c:1275,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/jsonapi.c:1284,1
    - Dst: memcpy
      Src: /src/postgres/src/common/jsonapi.c:1288,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:1293,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:1296,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:1307,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 2
    argNames:
    - lex
    - sem
    argTypes:
    - JsonLexContext*
    - JsonSemAction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1310
    functionName: parse_scalar
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached:
    - ALLOC
    - STRDUP
    - memcpy
    - json_lex
    - report_parse_error
    - FREE
    - lex_peek
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType parse_scalar(JsonLexContext *lex, const JsonSemAction
      *sem)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1328,1
    - Dst: report_parse_error
      Src: /src/postgres/src/common/jsonapi.c:1329,1
    - Dst: STRDUP
      Src: /src/postgres/src/common/jsonapi.c:1333,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:1337,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:1340,1
    - Dst: lex_expect
      Src: /src/postgres/src/common/jsonapi.c:1344,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:1347,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1351,1
    - Dst: parse_object
      Src: /src/postgres/src/common/jsonapi.c:1364,1
    - Dst: parse_array
      Src: /src/postgres/src/common/jsonapi.c:1367,1
    - Dst: parse_scalar
      Src: /src/postgres/src/common/jsonapi.c:1370,1
    - Dst: FREE
      Src: /src/postgres/src/common/jsonapi.c:1384,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 50
    argCount: 2
    argNames:
    - lex
    - sem
    argTypes:
    - JsonLexContext*
    - JsonSemAction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1312
    functionDepth: 2
    functionLinenumber: 1312
    functionLinenumberEnd: 1386
    functionName: parse_object_field
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 0
    functionsReached:
    - parse_object
    - STRDUP
    - json_lex
    - report_parse_error
    - parse_scalar
    - FREE
    - lex_expect
    - lex_peek
    - parse_array
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType parse_object_field(JsonLexContext *lex, const JsonSemAction
      *sem)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/common/jsonapi.c:1406,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1424,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1424,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:1425,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1429,1
    - Dst: parse_object_field
      Src: /src/postgres/src/common/jsonapi.c:1433,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1434,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:1436,1
    - Dst: parse_object_field
      Src: /src/postgres/src/common/jsonapi.c:1439,1
    - Dst: report_parse_error
      Src: /src/postgres/src/common/jsonapi.c:1446,1
    - Dst: lex_expect
      Src: /src/postgres/src/common/jsonapi.c:1451,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 2
    argNames:
    - lex
    - sem
    argTypes:
    - JsonLexContext*
    - JsonSemAction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1388
    functionDepth: 3
    functionLinenumber: 1388
    functionLinenumberEnd: 1465
    functionName: parse_object
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 2
    functionsReached:
    - parse_object_field
    - json_lex
    - Assert
    - report_parse_error
    - check_stack_depth
    - lex_expect
    - lex_peek
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType parse_object(JsonLexContext *lex, const JsonSemAction
      *sem)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1472,1
    - Dst: parse_object
      Src: /src/postgres/src/common/jsonapi.c:1489,1
    - Dst: parse_array
      Src: /src/postgres/src/common/jsonapi.c:1492,1
    - Dst: parse_scalar
      Src: /src/postgres/src/common/jsonapi.c:1495,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - lex
    - sem
    argTypes:
    - JsonLexContext*
    - JsonSemAction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1467
    functionDepth: 4
    functionLinenumber: 1467
    functionLinenumberEnd: 1509
    functionName: parse_array_element
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached:
    - parse_scalar
    - lex_peek
    - parse_object
    - parse_array
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType parse_array_element(JsonLexContext *lex, const JsonSemAction
      *sem)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/common/jsonapi.c:1523,1
    - Dst: lex_expect
      Src: /src/postgres/src/common/jsonapi.c:1541,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1542,1
    - Dst: parse_array_element
      Src: /src/postgres/src/common/jsonapi.c:1544,1
    - Dst: lex_peek
      Src: /src/postgres/src/common/jsonapi.c:1546,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:1548,1
    - Dst: parse_array_element
      Src: /src/postgres/src/common/jsonapi.c:1551,1
    - Dst: lex_expect
      Src: /src/postgres/src/common/jsonapi.c:1557,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - lex
    - sem
    argTypes:
    - JsonLexContext*
    - JsonSemAction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1511
    functionDepth: 5
    functionLinenumber: 1511
    functionLinenumberEnd: 1571
    functionName: parse_array
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 3
    functionsReached:
    - json_lex
    - parse_array_element
    - check_stack_depth
    - lex_expect
    - lex_peek
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType parse_array(JsonLexContext *lex, const JsonSemAction
      *sem)
  - BBCount: 70
    BranchProfiles: []
    Callsites:
    - Dst: jsonapi_resetStringInfo
      Src: /src/postgres/src/common/jsonapi.c:1606,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/common/jsonapi.c:1613,1
    - Dst: jsonapi_appendStringInfoCharMacro
      Src: /src/postgres/src/common/jsonapi.c:1653,1
    - Dst: jsonapi_appendStringInfoCharMacro
      Src: /src/postgres/src/common/jsonapi.c:1712,1
    - Dst: jsonapi_appendStringInfoCharMacro
      Src: /src/postgres/src/common/jsonapi.c:1722,1
    - Dst: jsonapi_appendStringInfoCharMacro
      Src: /src/postgres/src/common/jsonapi.c:1733,1
    - Dst: jsonapi_appendStringInfoCharMacro
      Src: /src/postgres/src/common/jsonapi.c:1746,1
    - Dst: JSON_ALPHANUMERIC_CHAR
      Src: /src/postgres/src/common/jsonapi.c:1766,1
    - Dst: jsonapi_appendStringInfoCharMacro
      Src: /src/postgres/src/common/jsonapi.c:1768,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1787,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:1814,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1842,1
    - Dst: json_lex_string
      Src: /src/postgres/src/common/jsonapi.c:1908,1
    - Dst: json_lex_number
      Src: /src/postgres/src/common/jsonapi.c:1915,1
    - Dst: json_lex_number
      Src: /src/postgres/src/common/jsonapi.c:1931,1
    - Dst: JSON_ALPHANUMERIC_CHAR
      Src: /src/postgres/src/common/jsonapi.c:1949,1
    - Dst: jsonapi_appendBinaryStringInfo
      Src: /src/postgres/src/common/jsonapi.c:1967,1
    - Dst: memcmp
      Src: /src/postgres/src/common/jsonapi.c:1980,1
    - Dst: memcmp
      Src: /src/postgres/src/common/jsonapi.c:1982,1
    - Dst: memcmp
      Src: /src/postgres/src/common/jsonapi.c:1987,1
    CyclomaticComplexity: 82
    EdgeCount: 82
    ICount: 236
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1999
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1999
    functionName: json_lex
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 9
    functionsReached:
    - memcmp
    - json_lex_string
    - json_lex
    - Assert
    - jsonapi_appendStringInfoCharMacro
    - json_lex_number
    - jsonapi_appendBinaryStringInfo
    - JSON_ALPHANUMERIC_CHAR
    - PQExpBufferDataBroken
    - jsonapi_resetStringInfo
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_lex(JsonLexContext *lex)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: jsonapi_resetStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2049,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:2052,1
    - Dst: FAIL_OR_INCOMPLETE_AT_CHAR_START
      Src: /src/postgres/src/common/jsonapi.c:2059,1
    - Dst: FAIL_OR_INCOMPLETE_AT_CHAR_START
      Src: /src/postgres/src/common/jsonapi.c:2067,1
    - Dst: FAIL_OR_INCOMPLETE_AT_CHAR_START
      Src: /src/postgres/src/common/jsonapi.c:2077,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2085,1
    - Dst: is_utf16_surrogate_first
      Src: /src/postgres/src/common/jsonapi.c:2092,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2095,1
    - Dst: is_utf16_surrogate_second
      Src: /src/postgres/src/common/jsonapi.c:2099,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2102,1
    - Dst: surrogate_pair_to_codepoint
      Src: /src/postgres/src/common/jsonapi.c:2103,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2108,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2118,1
    - Dst: pg_unicode_to_server_noerror
      Src: /src/postgres/src/common/jsonapi.c:2131,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2132,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/common/jsonapi.c:2133,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/jsonapi.c:2142,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/jsonapi.c:2143,1
    - Dst: jsonapi_appendBinaryStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2144,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2149,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2152,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2159,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2166,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2169,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2172,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2175,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2178,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2181,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2191,1
    - Dst: strchr
      Src: /src/postgres/src/common/jsonapi.c:2194,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2204,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2212,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/common/jsonapi.c:2219,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/common/jsonapi.c:2220,1
    - Dst: pg_lfind8_le
      Src: /src/postgres/src/common/jsonapi.c:2221,1
    - Dst: jsonapi_appendBinaryStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2241,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/common/jsonapi.c:2258,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 124
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2269
      start: 2012
    functionDepth: 4
    functionLinenumber: 2012
    functionLinenumberEnd: 2269
    functionName: json_lex_string
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached:
    - is_utf16_surrogate_second
    - surrogate_pair_to_codepoint
    - unicode_to_utf8
    - is_utf16_surrogate_first
    - Assert
    - strchr
    - appendStringInfoString
    - pg_utf_mblen
    - pg_lfind8
    - pg_lfind8_le
    - jsonapi_appendBinaryStringInfo
    - FAIL_OR_INCOMPLETE_AT_CHAR_START
    - FAIL_AT_CHAR_END
    - pg_unicode_to_server_noerror
    - jsonapi_appendStringInfoChar
    - PQExpBufferBroken
    - jsonapi_resetStringInfo
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_lex_string(JsonLexContext *lex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - code
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2020
    functionDepth: 0
    functionLinenumber: 2020
    functionLinenumberEnd: 2032
    functionName: FAIL_OR_INCOMPLETE_AT_CHAR_START
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FAIL_OR_INCOMPLETE_AT_CHAR_START(code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - code
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2041
      start: 2032
    functionDepth: 0
    functionLinenumber: 2032
    functionLinenumberEnd: 2041
    functionName: FAIL_AT_CHAR_END
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FAIL_AT_CHAR_END(code)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: JSON_ALPHANUMERIC_CHAR
      Src: /src/postgres/src/common/jsonapi.c:2370,1
    - Dst: jsonapi_appendBinaryStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2379,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 57
    argCount: 4
    argNames:
    - lex
    - s
    - num_err
    - total_len
    argTypes:
    - JsonLexContext*
    - char*
    - bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2402
      start: 2299
    functionDepth: 1
    functionLinenumber: 2299
    functionLinenumberEnd: 2402
    functionName: json_lex_number
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 2
    functionsReached:
    - JSON_ALPHANUMERIC_CHAR
    - jsonapi_appendBinaryStringInfo
    linkageType: ''
    returnType: JsonParseErrorType
    signature: "JsonParseErrorType json_lex_number(JsonLexContext *lex, const char
      *s,\n\t\t\t\tbool *num_err, size_t *total_len)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:2443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - lex
    argTypes:
    - JsonParseContext
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2409
    functionDepth: 1
    functionLinenumber: 2409
    functionLinenumberEnd: 2445
    functionName: report_parse_error
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 5
    functionsReached:
    - Assert
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType report_parse_error(JsonParseContext ctx, JsonLexContext
      *lex)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2459,1
    - Dst: jsonapi_resetStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2463,1
    - Dst: jsonapi_makeStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2465,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2484,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2486,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2488,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2490,1
    - Dst: jsonapi_appendStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2493,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2494,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2498,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2501,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2504,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2507,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2510,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2513,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2515,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2518,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2521,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2524,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2530,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2532,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2535,1
    - Dst: psprintf
      Src: /src/postgres/src/common/jsonapi.c:2544,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2544,1
    - Dst: GetDatabaseEncodingName
      Src: /src/postgres/src/common/jsonapi.c:2545,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:2547,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2551,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2553,1
    - Dst: jsonapi_appendStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2568,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/common/jsonapi.c:2574,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2575,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 77
    argCount: 2
    argNames:
    - error
    - lex
    argTypes:
    - JsonParseErrorType
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2579
      start: 2453
    functionDepth: 1
    functionLinenumber: 2453
    functionLinenumberEnd: 2579
    functionName: json_errdetail
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 2
    functionsReached:
    - json_token_error
    - _
    - jsonapi_appendStringInfo
    - Assert
    - psprintf
    - PQExpBufferBroken
    - jsonapi_makeStringInfo
    - GetDatabaseEncodingName
    - jsonapi_resetStringInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      json_errdetail(JsonParseErrorType error, JsonLexContext *lex)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lex
    - ','
    - format
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2475
      start: 2471
    functionDepth: 0
    functionLinenumber: 2471
    functionLinenumberEnd: 2475
    functionName: json_token_error
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: json_token_error(lex, format)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - k
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: rot
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rot(x,k)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 91
    functionName: mix
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mix(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: final
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: final(a,b,c)
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: mix
      Src: /src/postgres/src/common/hashfn.c:169,1
    - Dst: mix
      Src: /src/postgres/src/common/hashfn.c:272,1
    - Dst: final
      Src: /src/postgres/src/common/hashfn.c:357,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 166
    argCount: 2
    argNames:
    - k
    - keylen
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 361
    functionName: hash_bytes
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 2
    functionsReached:
    - mix
    - final
    linkageType: ''
    returnType: uint32
    signature: uint32 hash_bytes(const unsigned char *k, int keylen)
  - BBCount: 47
    BranchProfiles: []
    Callsites:
    - Dst: mix
      Src: /src/postgres/src/common/hashfn.c:393,1
    - Dst: mix
      Src: /src/postgres/src/common/hashfn.c:408,1
    - Dst: mix
      Src: /src/postgres/src/common/hashfn.c:511,1
    - Dst: final
      Src: /src/postgres/src/common/hashfn.c:596,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 171
    argCount: 3
    argNames:
    - k
    - keylen
    - seed
    argTypes:
    - unsigned char*
    - int
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 600
    functionName: hash_bytes_extended
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 1
    functionsReached:
    - mix
    - final
    linkageType: ''
    returnType: uint64
    signature: uint64 hash_bytes_extended(const unsigned char *k, int keylen, uint64
      seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: final
      Src: /src/postgres/src/common/hashfn.c:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - k
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 623
    functionName: hash_bytes_uint32
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 1
    functionsReached:
    - final
    linkageType: ''
    returnType: uint32
    signature: uint32 hash_bytes_uint32(uint32 k)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mix
      Src: /src/postgres/src/common/hashfn.c:643,1
    - Dst: final
      Src: /src/postgres/src/common/hashfn.c:648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - k
    - seed
    argTypes:
    - uint32
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 652
    functionName: hash_bytes_uint32_extended
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 1
    functionsReached:
    - mix
    - final
    linkageType: ''
    returnType: uint64
    signature: uint64 hash_bytes_uint32_extended(uint32 k, uint64 seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/hashfn.c:667,1
    - Dst: Min
      Src: /src/postgres/src/common/hashfn.c:669,1
    - Dst: hash_bytes
      Src: /src/postgres/src/common/hashfn.c:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 659
    functionDepth: 2
    functionLinenumber: 659
    functionLinenumberEnd: 671
    functionName: string_hash
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 0
    functionsReached:
    - Min
    - hash_bytes
    - strlen
    linkageType: ''
    returnType: uint32
    signature: uint32 string_hash(const void *key, Size keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_bytes
      Src: /src/postgres/src/common/hashfn.c:679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 676
    functionDepth: 2
    functionLinenumber: 676
    functionLinenumberEnd: 680
    functionName: tag_hash
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 0
    functionsReached:
    - hash_bytes
    linkageType: ''
    returnType: uint32
    signature: uint32 tag_hash(const void *key, Size keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/hashfn.c:690,1
    - Dst: hash_bytes_uint32
      Src: /src/postgres/src/common/hashfn.c:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 687
    functionDepth: 2
    functionLinenumber: 687
    functionLinenumberEnd: 692
    functionName: uint32_hash
    functionSourceFile: /src/postgres/src/common/hashfn.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_bytes_uint32
    linkageType: ''
    returnType: uint32
    signature: uint32 uint32_hash(const void *key, Size keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - b
    - s
    argTypes:
    - uint8[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 40
    functionName: bytesToHex
    functionSourceFile: /src/postgres/src/common/md5_common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bytesToHex(uint8 b[16], char *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/md5_common.c:80,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/md5_common.c:83,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/md5_common.c:87,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/md5_common.c:88,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/md5_common.c:89,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/md5_common.c:91,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/md5_common.c:92,1
    - Dst: bytesToHex
      Src: /src/postgres/src/common/md5_common.c:96,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/md5_common.c:97,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - buff
    - len
    - hexsum
    - errstr
    argTypes:
    - void*
    - size_t
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 99
    functionName: pg_md5_hash
    functionSourceFile: /src/postgres/src/common/md5_common.c
    functionUses: 0
    functionsReached:
    - pg_cryptohash_update
    - pg_cryptohash_final
    - pg_cryptohash_create
    - bytesToHex
    - pg_cryptohash_error
    - pg_cryptohash_free
    - pg_cryptohash_init
    linkageType: ''
    returnType: bool
    signature: bool pg_md5_hash(const void *buff, size_t len, char *hexsum, const
      char **errstr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/md5_common.c:113,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/md5_common.c:116,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/md5_common.c:120,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/md5_common.c:121,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/md5_common.c:122,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/md5_common.c:124,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/md5_common.c:125,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/md5_common.c:129,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - buff
    - len
    - outbuf
    - errstr
    argTypes:
    - void*
    - size_t
    - uint8*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 131
    functionName: pg_md5_binary
    functionSourceFile: /src/postgres/src/common/md5_common.c
    functionUses: 0
    functionsReached:
    - pg_cryptohash_update
    - pg_cryptohash_final
    - pg_cryptohash_create
    - pg_cryptohash_error
    - pg_cryptohash_free
    - pg_cryptohash_init
    linkageType: ''
    returnType: bool
    signature: bool pg_md5_binary(const void *buff, size_t len, uint8 *outbuf, const
      char **errstr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/md5_common.c:148,1
    - Dst: malloc
      Src: /src/postgres/src/common/md5_common.c:151,1
    - Dst: _
      Src: /src/postgres/src/common/md5_common.c:156,1
    - Dst: memcpy
      Src: /src/postgres/src/common/md5_common.c:164,1
    - Dst: memcpy
      Src: /src/postgres/src/common/md5_common.c:165,1
    - Dst: strcpy
      Src: /src/postgres/src/common/md5_common.c:167,1
    - Dst: pg_md5_hash
      Src: /src/postgres/src/common/md5_common.c:168,1
    - Dst: free
      Src: /src/postgres/src/common/md5_common.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - passwd
    - salt
    - salt_len
    - buf
    - errstr
    argTypes:
    - char*
    - uint8*
    - size_t
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 173
    functionName: pg_md5_encrypt
    functionSourceFile: /src/postgres/src/common/md5_common.c
    functionUses: 0
    functionsReached:
    - memcpy
    - _
    - malloc
    - strlen
    - free
    - pg_md5_hash
    - strcpy
    linkageType: ''
    returnType: bool
    signature: "bool pg_md5_encrypt(const char *passwd, const uint8 *salt, size_t
      salt_len,\n\t\t\t   char *buf, const char **errstr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getaddrinfo_unix
      Src: /src/postgres/src/common/ip.c:65,1
    - Dst: getaddrinfo
      Src: /src/postgres/src/common/ip.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - hostname
    - servname
    - hintp
    - result
    argTypes:
    - char*
    - char*
    - struct addrinfo*
    - struct addrinfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 72
    functionName: pg_getaddrinfo_all
    functionSourceFile: /src/postgres/src/common/ip.c
    functionUses: 0
    functionsReached:
    - getaddrinfo
    - getaddrinfo_unix
    linkageType: ''
    returnType: int
    signature: "int pg_getaddrinfo_all(const char *hostname, const char *servname,\n\t\t\t\t
      \  const struct addrinfo *hintp, struct addrinfo **result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/common/ip.c:95,1
    - Dst: free
      Src: /src/postgres/src/common/ip.c:96,1
    - Dst: freeaddrinfo
      Src: /src/postgres/src/common/ip.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - hint_ai_family
    - ai
    argTypes:
    - int
    - struct addrinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 105
    functionName: pg_freeaddrinfo_all
    functionSourceFile: /src/postgres/src/common/ip.c
    functionUses: 0
    functionsReached:
    - free
    - freeaddrinfo
    linkageType: ''
    returnType: void
    signature: void pg_freeaddrinfo_all(int hint_ai_family, struct addrinfo *ai)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getnameinfo_unix
      Src: /src/postgres/src/common/ip.c:125,1
    - Dst: getnameinfo
      Src: /src/postgres/src/common/ip.c:130,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/ip.c:138,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/ip.c:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 7
    argNames:
    - addr
    - salen
    - node
    - nodelen
    - service
    - servicelen
    - flags
    argTypes:
    - struct sockaddr_storage*
    - int
    - char*
    - int
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 144
    functionName: pg_getnameinfo_all
    functionSourceFile: /src/postgres/src/common/ip.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - getnameinfo
    - getnameinfo_unix
    linkageType: ''
    returnType: int
    signature: "int pg_getnameinfo_all(const struct sockaddr_storage *addr, int salen,\n\t\t\t\t
      \  char *node, int nodelen,\n\t\t\t\t   char *service, int servicelen,\n\t\t\t\t
      \  int flags)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/ip.c:165,1
    - Dst: memcpy
      Src: /src/postgres/src/common/ip.c:174,1
    - Dst: calloc
      Src: /src/postgres/src/common/ip.c:185,1
    - Dst: calloc
      Src: /src/postgres/src/common/ip.c:189,1
    - Dst: free
      Src: /src/postgres/src/common/ip.c:192,1
    - Dst: strcpy
      Src: /src/postgres/src/common/ip.c:207,1
    - Dst: strlen
      Src: /src/postgres/src/common/ip.c:221,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - path
    - hintsp
    - result
    argTypes:
    - char*
    - struct addrinfo*
    - struct addrinfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 225
    functionName: getaddrinfo_unix
    functionSourceFile: /src/postgres/src/common/ip.c
    functionUses: 1
    functionsReached:
    - memcpy
    - free
    - strlen
    - calloc
    - strcpy
    linkageType: ''
    returnType: int
    signature: "int getaddrinfo_unix(const char *path, const struct addrinfo *hintsp,\n\t\t\t\t
      struct addrinfo **result)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/common/ip.c:245,1
    - Dst: snprintf
      Src: /src/postgres/src/common/ip.c:257,1
    - Dst: snprintf
      Src: /src/postgres/src/common/ip.c:259,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 16
    argCount: 7
    argNames:
    - sa
    - salen
    - node
    - nodelen
    - service
    - servicelen
    - flags
    argTypes:
    - struct sockaddr_un*
    - int
    - char*
    - int
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 265
    functionName: getnameinfo_unix
    functionSourceFile: /src/postgres/src/common/ip.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int getnameinfo_unix(const struct sockaddr_un *sa, int salen,\n\t\t\t\t
      char *node, int nodelen,\n\t\t\t\t char *service, int servicelen,\n\t\t\t\t
      int flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: STRDUP
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRDUP(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: STRDUP
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRDUP(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - code
    - ','
    - map
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 966
    functionDepth: 0
    functionLinenumber: 966
    functionLinenumberEnd: 967
    functionName: IS_CODE_IN_TABLE
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_CODE_IN_TABLE(code, map)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 968
    functionDepth: 0
    functionLinenumber: 968
    functionLinenumberEnd: 980
    functionName: codepoint_range_cmp
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int codepoint_range_cmp(const void *a, const void *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/saslprep.c:985,1
    - Dst: bsearch
      Src: /src/postgres/src/common/saslprep.c:990,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - code
    - map
    - mapsize
    argTypes:
    - char32_t
    - char32_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 982
    functionDepth: 1
    functionLinenumber: 982
    functionLinenumberEnd: 995
    functionName: is_code_in_table
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 0
    functionsReached:
    - Assert
    - bsearch
    linkageType: ''
    returnType: bool
    signature: bool is_code_in_table(char32_t code, const char32_t *map, int mapsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/saslprep.c:1008,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/saslprep.c:1012,1
    - Dst: pg_utf8_islegal
      Src: /src/postgres/src/common/saslprep.c:1014,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - source
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1002
    functionDepth: 1
    functionLinenumber: 1002
    functionLinenumberEnd: 1023
    functionName: pg_utf8_string_len
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 0
    functionsReached:
    - pg_utf_mblen
    - pg_utf8_islegal
    - strlen
    linkageType: ''
    returnType: int
    signature: int pg_utf8_string_len(const char *source)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pg_utf8_string_len
      Src: /src/postgres/src/common/saslprep.c:1069,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/saslprep.c:1075,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/saslprep.c:1082,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/saslprep.c:1083,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1101,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1103,1
    - Dst: unicode_normalize
      Src: /src/postgres/src/common/saslprep.c:1120,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1132,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1134,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1164,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1180,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1184,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1185,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/saslprep.c:1197,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/saslprep.c:1198,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/saslprep.c:1201,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/saslprep.c:1212,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/saslprep.c:1213,1
    - Dst: Assert
      Src: /src/postgres/src/common/saslprep.c:1215,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1218,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1219,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1226,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1228,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1234,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1236,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 94
    argCount: 2
    argNames:
    - input
    - output
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1046
    functionDepth: 4
    functionLinenumber: 1046
    functionLinenumberEnd: 1239
    functionName: pg_saslprep
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 2
    functionsReached:
    - ALLOC
    - unicode_to_utf8
    - Assert
    - pg_utf8_string_len
    - FREE
    - utf8_to_unicode
    - pg_utf_mblen
    - IS_CODE_IN_TABLE
    - unicode_normalize
    linkageType: ''
    returnType: pg_saslprep_rc
    signature: pg_saslprep_rc pg_saslprep(const char *input, char **output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/stringinfo.c:43,1
    - Dst: palloc
      Src: /src/postgres/src/common/stringinfo.c:45,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/common/stringinfo.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - initsize
    argTypes:
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: initStringInfoInternal
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 0
    functionsReached:
    - Assert
    - resetStringInfo
    - palloc
    linkageType: ''
    returnType: void
    signature: void initStringInfoInternal(StringInfo str, int initsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/common/stringinfo.c:60,1
    - Dst: initStringInfoInternal
      Src: /src/postgres/src/common/stringinfo.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - initsize
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: makeStringInfoInternal
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 0
    functionsReached:
    - initStringInfoInternal
    - palloc_object
    linkageType: ''
    returnType: StringInfo
    signature: StringInfo makeStringInfoInternal(int initsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeStringInfoInternal
      Src: /src/postgres/src/common/stringinfo.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: makeStringInfo
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 9
    functionsReached:
    - makeStringInfoInternal
    linkageType: ''
    returnType: StringInfo
    signature: StringInfo makeStringInfo(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeStringInfoInternal
      Src: /src/postgres/src/common/stringinfo.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - initsize
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: makeStringInfoExt
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 0
    functionsReached:
    - makeStringInfoInternal
    linkageType: ''
    returnType: StringInfo
    signature: StringInfo makeStringInfoExt(int initsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfoInternal
      Src: /src/postgres/src/common/stringinfo.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: initStringInfo
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 29
    functionsReached:
    - initStringInfoInternal
    linkageType: ''
    returnType: void
    signature: void initStringInfo(StringInfo str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfoInternal
      Src: /src/postgres/src/common/stringinfo.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - initsize
    argTypes:
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: initStringInfoExt
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 0
    functionsReached:
    - initStringInfoInternal
    linkageType: ''
    returnType: void
    signature: void initStringInfoExt(StringInfo str, int initsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/stringinfo.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 134
    functionName: resetStringInfo
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 13
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void resetStringInfo(StringInfo str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/common/stringinfo.c:156,1
    - Dst: appendStringInfoVA
      Src: /src/postgres/src/common/stringinfo.c:157,1
    - Dst: va_end
      Src: /src/postgres/src/common/stringinfo.c:158,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/common/stringinfo.c:164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - str
    - fmt
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 166
    functionName: appendStringInfo
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 22
    functionsReached:
    - va_start
    - appendStringInfoVA
    - va_end
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void appendStringInfo(StringInfo str, const char *fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/stringinfo.c:192,1
    - Dst: pvsnprintf
      Src: /src/postgres/src/common/stringinfo.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - str
    - fmt
    - args
    argTypes:
    - StringInfo
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 221
    functionName: appendStringInfoVA
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 3
    functionsReached:
    - Assert
    - pvsnprintf
    linkageType: ''
    returnType: int
    signature: int appendStringInfoVA(StringInfo str, const char *fmt, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/common/stringinfo.c:232,1
    - Dst: strlen
      Src: /src/postgres/src/common/stringinfo.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - s
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: appendStringInfoString
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 12
    functionsReached:
    - appendBinaryStringInfo
    - strlen
    linkageType: ''
    returnType: void
    signature: void appendStringInfoString(StringInfo str, const char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/common/stringinfo.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - str
    - ch
    argTypes:
    - StringInfo
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 252
    functionName: appendStringInfoChar
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 6
    functionsReached:
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void appendStringInfoChar(StringInfo str, char ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/common/stringinfo.c:265,1
    - Dst: memset
      Src: /src/postgres/src/common/stringinfo.c:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - str
    - count
    argTypes:
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 272
    functionName: appendStringInfoSpaces
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 0
    functionsReached:
    - memset
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void appendStringInfoSpaces(StringInfo str, int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/stringinfo.c:283,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/common/stringinfo.c:286,1
    - Dst: memcpy
      Src: /src/postgres/src/common/stringinfo.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - str
    - data
    - datalen
    argTypes:
    - StringInfo
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 298
    functionName: appendBinaryStringInfo
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 10
    functionsReached:
    - Assert
    - memcpy
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void appendBinaryStringInfo(StringInfo str, const void *data, int datalen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/stringinfo.c:309,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/common/stringinfo.c:312,1
    - Dst: memcpy
      Src: /src/postgres/src/common/stringinfo.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - str
    - data
    - datalen
    argTypes:
    - StringInfo
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 317
    functionName: appendBinaryStringInfoNT
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 0
    functionsReached:
    - Assert
    - memcpy
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void appendBinaryStringInfoNT(StringInfo str, const void *data, int
      datalen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/stringinfo.c:342,1
    - Dst: elog
      Src: /src/postgres/src/common/stringinfo.c:351,1
    - Dst: fprintf
      Src: /src/postgres/src/common/stringinfo.c:353,1
    - Dst: exit
      Src: /src/postgres/src/common/stringinfo.c:354,1
    - Dst: ereport
      Src: /src/postgres/src/common/stringinfo.c:360,1
    - Dst: errcode
      Src: /src/postgres/src/common/stringinfo.c:361,1
    - Dst: errmsg
      Src: /src/postgres/src/common/stringinfo.c:362,1
    - Dst: errdetail
      Src: /src/postgres/src/common/stringinfo.c:363,1
    - Dst: fprintf
      Src: /src/postgres/src/common/stringinfo.c:366,1
    - Dst: _
      Src: /src/postgres/src/common/stringinfo.c:367,1
    - Dst: exit
      Src: /src/postgres/src/common/stringinfo.c:369,1
    - Dst: repalloc
      Src: /src/postgres/src/common/stringinfo.c:397,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - str
    - needed
    argTypes:
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 400
    functionName: enlargeStringInfo
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 20
    functionsReached:
    - elog
    - _
    - errcode
    - Assert
    - ereport
    - repalloc
    - errmsg
    - errdetail
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void enlargeStringInfo(StringInfo str, int needed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/stringinfo.c:412,1
    - Dst: pfree
      Src: /src/postgres/src/common/stringinfo.c:414,1
    - Dst: pfree
      Src: /src/postgres/src/common/stringinfo.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 416
    functionName: destroyStringInfo
    functionSourceFile: /src/postgres/src/common/stringinfo.c
    functionUses: 6
    functionsReached:
    - Assert
    - pfree
    linkageType: ''
    returnType: void
    signature: void destroyStringInfo(StringInfo str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: pg_log_warning
    functionSourceFile: /src/postgres/src/common/pgfnames.c
    functionUses: 52
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_log_warning(...)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/common/pgfnames.c:45,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/pgfnames.c:48,1
    - Dst: palloc_array
      Src: /src/postgres/src/common/pgfnames.c:52,1
    - Dst: readdir
      Src: /src/postgres/src/common/pgfnames.c:54,1
    - Dst: strcmp
      Src: /src/postgres/src/common/pgfnames.c:56,1
    - Dst: strcmp
      Src: /src/postgres/src/common/pgfnames.c:56,1
    - Dst: repalloc_array
      Src: /src/postgres/src/common/pgfnames.c:61,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/pgfnames.c:63,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/pgfnames.c:68,1
    - Dst: closedir
      Src: /src/postgres/src/common/pgfnames.c:72,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/pgfnames.c:73,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 76
    functionName: pgfnames
    functionSourceFile: /src/postgres/src/common/pgfnames.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pstrdup
    - readdir
    - palloc_array
    - pg_log_warning
    - closedir
    - repalloc_array
    - opendir
    linkageType: ''
    returnType: char
    signature: 'char **

      pgfnames(const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/common/pgfnames.c:90,1
    - Dst: pfree
      Src: /src/postgres/src/common/pgfnames.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - filenames
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: pgfnames_cleanup
    functionSourceFile: /src/postgres/src/common/pgfnames.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void pgfnames_cleanup(char **filenames)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - dataDirMode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 50
    functionName: SetDataDirectoryCreatePerm
    functionSourceFile: /src/postgres/src/common/file_perm.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetDataDirectoryCreatePerm(int dataDirMode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/common/file_perm.c:75,1
    - Dst: SetDataDirectoryCreatePerm
      Src: /src/postgres/src/common/file_perm.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - dataDir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 84
    functionName: GetDataDirectoryCreatePerm
    functionSourceFile: /src/postgres/src/common/file_perm.c
    functionUses: 4
    functionsReached:
    - SetDataDirectoryCreatePerm
    - stat
    linkageType: ''
    returnType: bool
    signature: bool GetDataDirectoryCreatePerm(const char *dataDir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_ticks_per_ns_system
      Src: /src/postgres/src/common/instr_time.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 91
    functionName: pg_initialize_timing
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 4
    functionsReached:
    - set_ticks_per_ns_system
    linkageType: ''
    returnType: void
    signature: void pg_initialize_timing(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/instr_time.c:96,1
    - Dst: pg_initialize_timing_tsc
      Src: /src/postgres/src/common/instr_time.c:99,1
    - Dst: tsc_use_by_default
      Src: /src/postgres/src/common/instr_time.c:104,1
    - Dst: set_ticks_per_ns
      Src: /src/postgres/src/common/instr_time.c:118,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - source
    argTypes:
    - TimingClockSourceType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 121
    functionName: pg_set_timing_clock_source
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 2
    functionsReached:
    - Assert
    - tsc_use_by_default
    - pg_initialize_timing_tsc
    - set_ticks_per_ns
    linkageType: ''
    returnType: bool
    signature: bool pg_set_timing_clock_source(TimingClockSourceType source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_ticks_per_ns_for_tsc
      Src: /src/postgres/src/common/instr_time.c:129,1
    - Dst: set_ticks_per_ns_system
      Src: /src/postgres/src/common/instr_time.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 134
    functionName: set_ticks_per_ns
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 1
    functionsReached:
    - set_ticks_per_ns_for_tsc
    - set_ticks_per_ns_system
    linkageType: ''
    returnType: void
    signature: void set_ticks_per_ns(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: set_ticks_per_ns_system
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_ticks_per_ns_system(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QueryPerformanceFrequency
      Src: /src/postgres/src/common/instr_time.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 155
    functionName: GetTimerFrequency
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 0
    functionsReached:
    - QueryPerformanceFrequency
    linkageType: ''
    returnType: double
    signature: double GetTimerFrequency(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetTimerFrequency
      Src: /src/postgres/src/common/instr_time.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: set_ticks_per_ns_system
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 2
    functionsReached:
    - GetTimerFrequency
    linkageType: ''
    returnType: void
    signature: void set_ticks_per_ns_system(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tsc_detect_frequency
      Src: /src/postgres/src/common/instr_time.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 186
    functionName: pg_initialize_timing_tsc
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 1
    functionsReached:
    - tsc_detect_frequency
    linkageType: ''
    returnType: void
    signature: void pg_initialize_timing_tsc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 193
    functionName: set_ticks_per_ns_for_tsc
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_ticks_per_ns_for_tsc(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlcat
      Src: /src/postgres/src/common/instr_time.c:211,1
    - Dst: x86_feature_available
      Src: /src/postgres/src/common/instr_time.c:215,1
    - Dst: strlcat
      Src: /src/postgres/src/common/instr_time.c:217,1
    - Dst: x86_feature_available
      Src: /src/postgres/src/common/instr_time.c:222,1
    - Dst: strlcat
      Src: /src/postgres/src/common/instr_time.c:224,1
    - Dst: x86_tsc_frequency_khz
      Src: /src/postgres/src/common/instr_time.c:230,1
    - Dst: pg_tsc_calibrate_frequency
      Src: /src/postgres/src/common/instr_time.c:243,1
    - Dst: strlcat
      Src: /src/postgres/src/common/instr_time.c:248,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 204
    functionDepth: 3
    functionLinenumber: 204
    functionLinenumberEnd: 252
    functionName: tsc_detect_frequency
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 1
    functionsReached:
    - strlcat
    - x86_feature_available
    - x86_tsc_frequency_khz
    - pg_tsc_calibrate_frequency
    linkageType: ''
    returnType: void
    signature: void tsc_detect_frequency(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: x86_feature_available
      Src: /src/postgres/src/common/instr_time.c:278,1
    - Dst: fopen
      Src: /src/postgres/src/common/instr_time.c:286,1
    - Dst: fgets
      Src: /src/postgres/src/common/instr_time.c:289,1
    - Dst: strcmp
      Src: /src/postgres/src/common/instr_time.c:290,1
    - Dst: fclose
      Src: /src/postgres/src/common/instr_time.c:292,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 275
    functionDepth: 3
    functionLinenumber: 275
    functionLinenumberEnd: 300
    functionName: tsc_use_by_default
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 1
    functionsReached:
    - x86_feature_available
    - strcmp
    - fopen
    - fclose
    - fgets
    linkageType: ''
    returnType: bool
    signature: bool tsc_use_by_default(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/instr_time.c:332,1
    - Dst: pg_set_timing_clock_source
      Src: /src/postgres/src/common/instr_time.c:335,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/common/instr_time.c:337,1
    - Dst: pg_rdtscp
      Src: /src/postgres/src/common/instr_time.c:339,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/common/instr_time.c:349,1
    - Dst: pg_rdtscp
      Src: /src/postgres/src/common/instr_time.c:351,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/common/instr_time.c:353,1
    - Dst: INSTR_TIME_GET_NANOSEC
      Src: /src/postgres/src/common/instr_time.c:354,1
    - Dst: fabs
      Src: /src/postgres/src/common/instr_time.c:382,1
    - Dst: pg_set_timing_clock_source
      Src: /src/postgres/src/common/instr_time.c:396,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 402
    functionName: pg_tsc_calibrate_frequency
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 1
    functionsReached:
    - Assert
    - pg_rdtscp
    - fabs
    - INSTR_TIME_SUBTRACT
    - INSTR_TIME_GET_NANOSEC
    - INSTR_TIME_SET_CURRENT
    - pg_set_timing_clock_source
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_tsc_calibrate_frequency(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_tsc_calibrate_frequency
      Src: /src/postgres/src/common/instr_time.c:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 415
    functionDepth: 3
    functionLinenumber: 415
    functionLinenumberEnd: 422
    functionName: pg_timing_tsc_clock_source_info
    functionSourceFile: /src/postgres/src/common/instr_time.c
    functionUses: 1
    functionsReached:
    - pg_tsc_calibrate_frequency
    linkageType: ''
    returnType: TscClockSourceInfo
    signature: 'TscClockSourceInfo *

      pg_timing_tsc_clock_source_info(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/common/config_info.c:42,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:44,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/config_info.c:45,1
    - Dst: strrchr
      Src: /src/postgres/src/common/config_info.c:46,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:49,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:50,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:53,1
    - Dst: get_doc_path
      Src: /src/postgres/src/common/config_info.c:54,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:55,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:56,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:59,1
    - Dst: get_html_path
      Src: /src/postgres/src/common/config_info.c:60,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:61,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:62,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:65,1
    - Dst: get_include_path
      Src: /src/postgres/src/common/config_info.c:66,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:67,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:68,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:71,1
    - Dst: get_pkginclude_path
      Src: /src/postgres/src/common/config_info.c:72,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:73,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:74,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:77,1
    - Dst: get_includeserver_path
      Src: /src/postgres/src/common/config_info.c:78,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:79,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:80,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:83,1
    - Dst: get_lib_path
      Src: /src/postgres/src/common/config_info.c:84,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:85,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:86,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:89,1
    - Dst: get_pkglib_path
      Src: /src/postgres/src/common/config_info.c:90,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:91,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:92,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:95,1
    - Dst: get_locale_path
      Src: /src/postgres/src/common/config_info.c:96,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:97,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:98,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:101,1
    - Dst: get_man_path
      Src: /src/postgres/src/common/config_info.c:102,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:103,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:104,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:107,1
    - Dst: get_share_path
      Src: /src/postgres/src/common/config_info.c:108,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:109,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:110,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:113,1
    - Dst: get_etc_path
      Src: /src/postgres/src/common/config_info.c:114,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:115,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:116,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:119,1
    - Dst: get_pkglib_path
      Src: /src/postgres/src/common/config_info.c:120,1
    - Dst: strlcat
      Src: /src/postgres/src/common/config_info.c:121,1
    - Dst: cleanup_path
      Src: /src/postgres/src/common/config_info.c:122,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:123,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:126,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:127,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:130,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:132,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:134,1
    - Dst: _
      Src: /src/postgres/src/common/config_info.c:134,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:138,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:140,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:142,1
    - Dst: _
      Src: /src/postgres/src/common/config_info.c:142,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:146,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:148,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:150,1
    - Dst: _
      Src: /src/postgres/src/common/config_info.c:150,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:154,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:156,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:158,1
    - Dst: _
      Src: /src/postgres/src/common/config_info.c:158,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:162,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:164,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:166,1
    - Dst: _
      Src: /src/postgres/src/common/config_info.c:166,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:170,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:172,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:174,1
    - Dst: _
      Src: /src/postgres/src/common/config_info.c:174,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:178,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:180,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:182,1
    - Dst: _
      Src: /src/postgres/src/common/config_info.c:182,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:186,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:188,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:190,1
    - Dst: _
      Src: /src/postgres/src/common/config_info.c:190,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:194,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/config_info.c:195,1
    - Dst: Assert
      Src: /src/postgres/src/common/config_info.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 112
    argCount: 2
    argNames:
    - my_exec_path
    - configdata_len
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 32
    functionDepth: 5
    functionLinenumber: 32
    functionLinenumberEnd: 201
    functionName: get_configdata
    functionSourceFile: /src/postgres/src/common/config_info.c
    functionUses: 1
    functionsReached:
    - cleanup_path
    - pstrdup
    - palloc_array
    - get_html_path
    - get_includeserver_path
    - get_include_path
    - strlcpy
    - _
    - get_share_path
    - Assert
    - strrchr
    - get_etc_path
    - get_man_path
    - get_pkginclude_path
    - strlcat
    - get_pkglib_path
    - get_doc_path
    - get_locale_path
    - get_lib_path
    linkageType: ''
    returnType: ConfigData
    signature: 'ConfigData *

      get_configdata(const char *my_exec_path, size_t *configdata_len)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ZeroMemory
      Src: /src/postgres/src/common/restricted_token.c:54,1
    - Dst: OpenProcessToken
      Src: /src/postgres/src/common/restricted_token.c:58,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/common/restricted_token.c:58,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/restricted_token.c:60,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/restricted_token.c:61,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/common/restricted_token.c:66,1
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/common/restricted_token.c:67,1
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/common/restricted_token.c:70,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/restricted_token.c:74,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/restricted_token.c:75,1
    - Dst: CloseHandle
      Src: /src/postgres/src/common/restricted_token.c:76,1
    - Dst: CreateRestrictedToken
      Src: /src/postgres/src/common/restricted_token.c:80,1
    - Dst: FreeSid
      Src: /src/postgres/src/common/restricted_token.c:88,1
    - Dst: FreeSid
      Src: /src/postgres/src/common/restricted_token.c:89,1
    - Dst: CloseHandle
      Src: /src/postgres/src/common/restricted_token.c:90,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/restricted_token.c:94,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/restricted_token.c:94,1
    - Dst: AddUserToTokenDacl
      Src: /src/postgres/src/common/restricted_token.c:99,1
    - Dst: CreateProcessAsUser
      Src: /src/postgres/src/common/restricted_token.c:102,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/restricted_token.c:115,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/restricted_token.c:115,1
    - Dst: ResumeThread
      Src: /src/postgres/src/common/restricted_token.c:119,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - cmd
    - processInfo
    argTypes:
    - char*
    - PROCESS_INFORMATION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 121
    functionName: CreateRestrictedProcess
    functionSourceFile: /src/postgres/src/common/restricted_token.c
    functionUses: 3
    functionsReached:
    - AddUserToTokenDacl
    - CloseHandle
    - CreateRestrictedToken
    - FreeSid
    - GetLastError
    - AllocateAndInitializeSid
    - GetCurrentProcess
    - ZeroMemory
    - ResumeThread
    - CreateProcessAsUser
    - pg_log_error
    - OpenProcessToken
    linkageType: ''
    returnType: HANDLE
    signature: HANDLE CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/common/restricted_token.c:139,1
    - Dst: strcmp
      Src: /src/postgres/src/common/restricted_token.c:140,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/common/restricted_token.c:145,1
    - Dst: pg_strdup
      Src: /src/postgres/src/common/restricted_token.c:147,1
    - Dst: GetCommandLine
      Src: /src/postgres/src/common/restricted_token.c:147,1
    - Dst: setenv
      Src: /src/postgres/src/common/restricted_token.c:149,1
    - Dst: CreateRestrictedProcess
      Src: /src/postgres/src/common/restricted_token.c:151,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/restricted_token.c:153,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/restricted_token.c:153,1
    - Dst: CloseHandle
      Src: /src/postgres/src/common/restricted_token.c:163,1
    - Dst: CloseHandle
      Src: /src/postgres/src/common/restricted_token.c:164,1
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/common/restricted_token.c:165,1
    - Dst: GetExitCodeProcess
      Src: /src/postgres/src/common/restricted_token.c:167,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/restricted_token.c:168,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/restricted_token.c:168,1
    - Dst: exit
      Src: /src/postgres/src/common/restricted_token.c:169,1
    - Dst: pg_free
      Src: /src/postgres/src/common/restricted_token.c:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 174
    functionName: get_restricted_token
    functionSourceFile: /src/postgres/src/common/restricted_token.c
    functionUses: 7
    functionsReached:
    - CloseHandle
    - GetCommandLine
    - setenv
    - GetExitCodeProcess
    - strcmp
    - CreateRestrictedProcess
    - GetLastError
    - pg_fatal
    - exit
    - getenv
    - ZeroMemory
    - pg_free
    - pg_log_error
    - WaitForSingleObject
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void get_restricted_token(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - errcodefn
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: log_error
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 258
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_error(errcodefn, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - errcodefn
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: log_error
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 258
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_error(errcodefn, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:99,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:99,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/exec.c:100,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:100,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:100,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/exec.c:102,1
    - Dst: strcat
      Src: /src/postgres/src/common/exec.c:103,1
    - Dst: stat
      Src: /src/postgres/src/common/exec.c:114,1
    - Dst: S_ISREG
      Src: /src/postgres/src/common/exec.c:117,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/common/exec.c:125,1
    - Dst: access
      Src: /src/postgres/src/common/exec.c:134,1
    - Dst: access
      Src: /src/postgres/src/common/exec.c:135,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 143
    functionName: validate_exec
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - strcat
    - strlcpy
    - pg_strcasecmp
    - S_ISREG
    - access
    - stat
    - strlen
    - S_ISDIR
    linkageType: ''
    returnType: int
    signature: int validate_exec(const char *path)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/common/exec.c:168,1
    - Dst: first_dir_separator
      Src: /src/postgres/src/common/exec.c:169,1
    - Dst: validate_exec
      Src: /src/postgres/src/common/exec.c:171,1
    - Dst: normalize_exec_path
      Src: /src/postgres/src/common/exec.c:172,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:174,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:174,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:175,1
    - Dst: validate_exec
      Src: /src/postgres/src/common/exec.c:181,1
    - Dst: normalize_exec_path
      Src: /src/postgres/src/common/exec.c:182,1
    - Dst: getenv
      Src: /src/postgres/src/common/exec.c:189,1
    - Dst: first_path_var_separator
      Src: /src/postgres/src/common/exec.c:201,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:203,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/exec.c:205,1
    - Dst: Min
      Src: /src/postgres/src/common/exec.c:205,1
    - Dst: join_path_components
      Src: /src/postgres/src/common/exec.c:207,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/common/exec.c:208,1
    - Dst: validate_exec
      Src: /src/postgres/src/common/exec.c:210,1
    - Dst: normalize_exec_path
      Src: /src/postgres/src/common/exec.c:213,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:217,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:217,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:218,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:225,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:225,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:226,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - argv0
    - retpath
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 228
    functionName: find_my_exec
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 11
    functionsReached:
    - strlcpy
    - first_path_var_separator
    - join_path_components
    - _
    - errcode
    - first_dir_separator
    - canonicalize_path
    - validate_exec
    - log_error
    - getenv
    - strlen
    - Min
    - normalize_exec_path
    linkageType: ''
    returnType: int
    signature: int find_my_exec(const char *argv0, char *retpath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_realpath
      Src: /src/postgres/src/common/exec.c:248,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:252,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/exec.c:252,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:253,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/exec.c:257,1
    - Dst: free
      Src: /src/postgres/src/common/exec.c:258,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/common/exec.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 266
    functionName: normalize_exec_path
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - _
    - canonicalize_path
    - log_error
    - pg_realpath
    - free
    - errcode_for_file_access
    linkageType: ''
    returnType: int
    signature: int normalize_exec_path(char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: realpath
      Src: /src/postgres/src/common/exec.c:288,1
    - Dst: _fullpath
      Src: /src/postgres/src/common/exec.c:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 303
    functionName: pg_realpath
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - _fullpath
    - realpath
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_realpath(const char *fname)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find_my_exec
      Src: /src/postgres/src/common/exec.c:317,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/common/exec.c:321,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/common/exec.c:322,1
    - Dst: snprintf
      Src: /src/postgres/src/common/exec.c:325,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:325,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:325,1
    - Dst: validate_exec
      Src: /src/postgres/src/common/exec.c:328,1
    - Dst: snprintf
      Src: /src/postgres/src/common/exec.c:331,1
    - Dst: pipe_read_line
      Src: /src/postgres/src/common/exec.c:333,1
    - Dst: strcmp
      Src: /src/postgres/src/common/exec.c:336,1
    - Dst: pfree
      Src: /src/postgres/src/common/exec.c:338,1
    - Dst: pfree
      Src: /src/postgres/src/common/exec.c:342,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - argv0
    - target
    - versionstr
    - retpath
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 310
    functionDepth: 4
    functionLinenumber: 310
    functionLinenumberEnd: 344
    functionName: find_other_exec
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 9
    functionsReached:
    - find_my_exec
    - strcmp
    - pfree
    - canonicalize_path
    - validate_exec
    - pipe_read_line
    - strlen
    - last_dir_separator
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int find_other_exec(const char *argv0, const char *target,\n\t\t\t\tconst
      char *versionstr, char *retpath)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/common/exec.c:358,1
    - Dst: popen
      Src: /src/postgres/src/common/exec.c:361,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:363,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:363,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:364,1
    - Dst: pg_get_line
      Src: /src/postgres/src/common/exec.c:370,1
    - Dst: ferror
      Src: /src/postgres/src/common/exec.c:374,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:375,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/exec.c:375,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:376,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:378,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:378,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:379,1
    - Dst: pclose_check
      Src: /src/postgres/src/common/exec.c:382,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 385
    functionName: pipe_read_line
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 3
    functionsReached:
    - ferror
    - _
    - errcode
    - pg_get_line
    - log_error
    - pclose_check
    - fflush
    - popen
    - errcode_for_file_access
    linkageType: ''
    returnType: char
    signature: 'char *

      pipe_read_line(char *cmd)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pclose
      Src: /src/postgres/src/common/exec.c:397,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:405,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:405,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:406,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/common/exec.c:410,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:411,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:411,1
    - Dst: pfree
      Src: /src/postgres/src/common/exec.c:413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - stream
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 416
    functionName: pclose_check
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - _
    - errcode
    - pfree
    - wait_result_to_str
    - pclose
    - log_error
    linkageType: ''
    returnType: int
    signature: int pclose_check(FILE *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/common/exec.c:436,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/common/exec.c:436,1
    - Dst: setlocale
      Src: /src/postgres/src/common/exec.c:438,1
    - Dst: find_my_exec
      Src: /src/postgres/src/common/exec.c:451,1
    - Dst: get_locale_path
      Src: /src/postgres/src/common/exec.c:455,1
    - Dst: bindtextdomain
      Src: /src/postgres/src/common/exec.c:456,1
    - Dst: textdomain
      Src: /src/postgres/src/common/exec.c:457,1
    - Dst: setenv
      Src: /src/postgres/src/common/exec.c:459,1
    - Dst: getenv
      Src: /src/postgres/src/common/exec.c:462,1
    - Dst: get_etc_path
      Src: /src/postgres/src/common/exec.c:464,1
    - Dst: setenv
      Src: /src/postgres/src/common/exec.c:466,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - argv0
    - app
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 429
    functionDepth: 5
    functionLinenumber: 429
    functionLinenumberEnd: 468
    functionName: set_pglocale_pgservice
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 34
    functionsReached:
    - PG_TEXTDOMAIN
    - find_my_exec
    - setenv
    - get_etc_path
    - strcmp
    - setlocale
    - bindtextdomain
    - getenv
    - textdomain
    - get_locale_path
    linkageType: ''
    returnType: void
    signature: void set_pglocale_pgservice(const char *argv0, const char *app)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: personality
      Src: /src/postgres/src/common/exec.c:483,1
    - Dst: procctl
      Src: /src/postgres/src/common/exec.c:487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 492
    functionName: pg_disable_aslr
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 2
    functionsReached:
    - procctl
    - personality
    linkageType: ''
    returnType: int
    signature: int pg_disable_aslr(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: GetTokenInformation
      Src: /src/postgres/src/common/exec.c:536,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:538,1
    - Dst: LocalAlloc
      Src: /src/postgres/src/common/exec.c:540,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:543,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:543,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:544,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/common/exec.c:548,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:550,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:550,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:552,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:558,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:558,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:560,1
    - Dst: GetAclInformation
      Src: /src/postgres/src/common/exec.c:566,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:570,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:570,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:572,1
    - Dst: GetTokenUser
      Src: /src/postgres/src/common/exec.c:577,1
    - Dst: GetLengthSid
      Src: /src/postgres/src/common/exec.c:582,1
    - Dst: LocalAlloc
      Src: /src/postgres/src/common/exec.c:585,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:588,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:588,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:589,1
    - Dst: InitializeAcl
      Src: /src/postgres/src/common/exec.c:593,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:595,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:595,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:596,1
    - Dst: GetAce
      Src: /src/postgres/src/common/exec.c:603,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:605,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:605,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:606,1
    - Dst: AddAce
      Src: /src/postgres/src/common/exec.c:610,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:612,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:612,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:613,1
    - Dst: AddAccessAllowedAceEx
      Src: /src/postgres/src/common/exec.c:619,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:621,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:621,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:623,1
    - Dst: SetTokenInformation
      Src: /src/postgres/src/common/exec.c:630,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:632,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:632,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:634,1
    - Dst: LocalFree
      Src: /src/postgres/src/common/exec.c:642,1
    - Dst: LocalFree
      Src: /src/postgres/src/common/exec.c:645,1
    - Dst: LocalFree
      Src: /src/postgres/src/common/exec.c:648,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 73
    argCount: 1
    argNames:
    - hToken
    argTypes:
    - HANDLE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 651
    functionName: AddUserToTokenDacl
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 2
    functionsReached:
    - GetTokenUser
    - _
    - errcode
    - InitializeAcl
    - GetTokenInformation
    - GetAce
    - AddAce
    - SetTokenInformation
    - LocalFree
    - GetLastError
    - log_error
    - GetAclInformation
    - LocalAlloc
    - AddAccessAllowedAceEx
    - GetLengthSid
    linkageType: ''
    returnType: BOOL
    signature: BOOL AddUserToTokenDacl(HANDLE hToken)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GetTokenInformation
      Src: /src/postgres/src/common/exec.c:668,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:674,1
    - Dst: LocalAlloc
      Src: /src/postgres/src/common/exec.c:676,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:680,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:680,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:681,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:687,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:687,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:689,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/common/exec.c:694,1
    - Dst: LocalFree
      Src: /src/postgres/src/common/exec.c:700,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:703,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:703,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:705,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - hToken
    - ppTokenUser
    argTypes:
    - HANDLE
    - PTOKEN_USER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 711
    functionName: GetTokenUser
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - _
    - errcode
    - GetTokenInformation
    - LocalFree
    - GetLastError
    - log_error
    - LocalAlloc
    linkageType: ''
    returnType: BOOL
    signature: BOOL GetTokenUser(HANDLE hToken, PTOKEN_USER *ppTokenUser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/common/fe_memutils.c:36,1
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:41,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:41,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:42,1
    - Dst: MemSet
      Src: /src/postgres/src/common/fe_memutils.c:48,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - size
    - flags
    argTypes:
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 50
    functionName: pg_malloc_internal
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - _
    - MemSet
    - malloc
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: 'void *

      pg_malloc_internal(size_t size, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_internal
      Src: /src/postgres/src/common/fe_memutils.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: pg_malloc
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 64
    functionsReached:
    - pg_malloc_internal
    linkageType: ''
    returnType: void
    signature: 'void *

      pg_malloc(size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_internal
      Src: /src/postgres/src/common/fe_memutils.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: pg_malloc0
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 7
    functionsReached:
    - pg_malloc_internal
    linkageType: ''
    returnType: void
    signature: 'void *

      pg_malloc0(size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_internal
      Src: /src/postgres/src/common/fe_memutils.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - size
    - flags
    argTypes:
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: pg_malloc_extended
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 3
    functionsReached:
    - pg_malloc_internal
    linkageType: ''
    returnType: void
    signature: 'void *

      pg_malloc_extended(size_t size, int flags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/postgres/src/common/fe_memutils.c:78,1
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:81,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:81,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 85
    functionName: pg_realloc
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 8
    functionsReached:
    - exit
    - realloc
    - _
    - fprintf
    linkageType: ''
    returnType: void
    signature: 'void *

      pg_realloc(void *ptr, size_t size)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:97,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:98,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:99,1
    - Dst: strdup
      Src: /src/postgres/src/common/fe_memutils.c:101,1
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:104,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:104,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - in
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 108
    functionName: pg_strdup
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 248
    functionsReached:
    - exit
    - strdup
    - _
    - fprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_strdup(const char *in)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/common/fe_memutils.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: pg_free
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 205
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void pg_free(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_internal
      Src: /src/postgres/src/common/fe_memutils.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 124
    functionName: palloc
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 48
    functionsReached:
    - pg_malloc_internal
    linkageType: ''
    returnType: void
    signature: 'void *

      palloc(Size size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_internal
      Src: /src/postgres/src/common/fe_memutils.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: palloc0
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 17
    functionsReached:
    - pg_malloc_internal
    linkageType: ''
    returnType: void
    signature: 'void *

      palloc0(Size size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc_internal
      Src: /src/postgres/src/common/fe_memutils.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - size
    - flags
    argTypes:
    - Size
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 136
    functionName: palloc_extended
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - pg_malloc_internal
    linkageType: ''
    returnType: void
    signature: 'void *

      palloc_extended(Size size, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_free
      Src: /src/postgres/src/common/fe_memutils.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 142
    functionName: pfree
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 178
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void pfree(void *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/common/fe_memutils.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 148
    functionName: pstrdup
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 63
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      pstrdup(const char *in)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:158,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:159,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:160,1
    - Dst: strnlen
      Src: /src/postgres/src/common/fe_memutils.c:163,1
    - Dst: malloc
      Src: /src/postgres/src/common/fe_memutils.c:164,1
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:167,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:167,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:168,1
    - Dst: memcpy
      Src: /src/postgres/src/common/fe_memutils.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - in
    - size
    argTypes:
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 175
    functionName: pnstrdup
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 7
    functionsReached:
    - strnlen
    - memcpy
    - _
    - malloc
    - exit
    - fprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      pnstrdup(const char *in, Size size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc
      Src: /src/postgres/src/common/fe_memutils.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pointer
    - size
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: repalloc
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 5
    functionsReached:
    - pg_realloc
    linkageType: ''
    returnType: void
    signature: 'void *

      repalloc(void *pointer, Size size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:200,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:200,1
    - Dst: add_size_error
      Src: /src/postgres/src/common/fe_memutils.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 204
    functionName: add_size
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - unlikely
    - pg_add_size_overflow
    - add_size_error
    linkageType: ''
    returnType: Size
    signature: Size add_size(Size s1, Size s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:209,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:209,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 212
    functionName: add_size_error
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 1
    functionsReached:
    - exit
    - _
    - fprintf
    linkageType: ''
    returnType: pg_noreturn
    signature: pg_noreturn add_size_error(Size s1, Size s2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:219,1
    - Dst: pg_mul_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:219,1
    - Dst: mul_size_error
      Src: /src/postgres/src/common/fe_memutils.c:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 223
    functionName: mul_size
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - unlikely
    - pg_mul_size_overflow
    - mul_size_error
    linkageType: ''
    returnType: Size
    signature: Size mul_size(Size s1, Size s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:228,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:228,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 231
    functionName: mul_size_error
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 1
    functionsReached:
    - exit
    - _
    - fprintf
    linkageType: ''
    returnType: pg_noreturn
    signature: pg_noreturn mul_size_error(Size s1, Size s2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:243,1
    - Dst: pg_mul_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:243,1
    - Dst: mul_size_error
      Src: /src/postgres/src/common/fe_memutils.c:245,1
    - Dst: pg_malloc
      Src: /src/postgres/src/common/fe_memutils.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 237
    functionDepth: 3
    functionLinenumber: 237
    functionLinenumberEnd: 247
    functionName: pg_malloc_mul
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - unlikely
    - pg_mul_size_overflow
    - mul_size_error
    linkageType: ''
    returnType: void
    signature: 'void *

      pg_malloc_mul(Size s1, Size s2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:261,1
    - Dst: pg_mul_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:261,1
    - Dst: mul_size_error
      Src: /src/postgres/src/common/fe_memutils.c:263,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/common/fe_memutils.c:264,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 255
    functionDepth: 3
    functionLinenumber: 255
    functionLinenumberEnd: 265
    functionName: pg_malloc0_mul
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - unlikely
    - pg_mul_size_overflow
    - mul_size_error
    - pg_malloc0
    linkageType: ''
    returnType: void
    signature: 'void *

      pg_malloc0_mul(Size s1, Size s2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:277,1
    - Dst: pg_mul_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:277,1
    - Dst: mul_size_error
      Src: /src/postgres/src/common/fe_memutils.c:279,1
    - Dst: pg_malloc_extended
      Src: /src/postgres/src/common/fe_memutils.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - s1
    - s2
    - flags
    argTypes:
    - Size
    - Size
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 281
    functionName: pg_malloc_mul_extended
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - unlikely
    - pg_mul_size_overflow
    - mul_size_error
    - pg_malloc_extended
    linkageType: ''
    returnType: void
    signature: 'void *

      pg_malloc_mul_extended(Size s1, Size s2, int flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:293,1
    - Dst: pg_mul_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:293,1
    - Dst: mul_size_error
      Src: /src/postgres/src/common/fe_memutils.c:295,1
    - Dst: pg_realloc
      Src: /src/postgres/src/common/fe_memutils.c:296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - p
    - s1
    - s2
    argTypes:
    - void*
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 297
    functionName: pg_realloc_mul
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - pg_realloc
    - unlikely
    - pg_mul_size_overflow
    - mul_size_error
    linkageType: ''
    returnType: void
    signature: 'void *

      pg_realloc_mul(void *p, Size s1, Size s2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:309,1
    - Dst: pg_mul_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:309,1
    - Dst: mul_size_error
      Src: /src/postgres/src/common/fe_memutils.c:311,1
    - Dst: palloc
      Src: /src/postgres/src/common/fe_memutils.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 313
    functionName: palloc_mul
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - unlikely
    - pg_mul_size_overflow
    - mul_size_error
    - palloc
    linkageType: ''
    returnType: void
    signature: 'void *

      palloc_mul(Size s1, Size s2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:327,1
    - Dst: pg_mul_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:327,1
    - Dst: mul_size_error
      Src: /src/postgres/src/common/fe_memutils.c:329,1
    - Dst: palloc0
      Src: /src/postgres/src/common/fe_memutils.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 331
    functionName: palloc0_mul
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - palloc0
    - unlikely
    - pg_mul_size_overflow
    - mul_size_error
    linkageType: ''
    returnType: void
    signature: 'void *

      palloc0_mul(Size s1, Size s2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:343,1
    - Dst: pg_mul_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:343,1
    - Dst: mul_size_error
      Src: /src/postgres/src/common/fe_memutils.c:345,1
    - Dst: palloc_extended
      Src: /src/postgres/src/common/fe_memutils.c:346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - s1
    - s2
    - flags
    argTypes:
    - Size
    - Size
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 347
    functionName: palloc_mul_extended
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - palloc_extended
    - unlikely
    - pg_mul_size_overflow
    - mul_size_error
    linkageType: ''
    returnType: void
    signature: 'void *

      palloc_mul_extended(Size s1, Size s2, int flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/fe_memutils.c:359,1
    - Dst: pg_mul_size_overflow
      Src: /src/postgres/src/common/fe_memutils.c:359,1
    - Dst: mul_size_error
      Src: /src/postgres/src/common/fe_memutils.c:361,1
    - Dst: repalloc
      Src: /src/postgres/src/common/fe_memutils.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - p
    - s1
    - s2
    argTypes:
    - void*
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 363
    functionName: repalloc_mul
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - repalloc
    - unlikely
    - pg_mul_size_overflow
    - mul_size_error
    linkageType: ''
    returnType: void
    signature: 'void *

      repalloc_mul(void *p, Size s1, Size s2)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/scram-common.c:43,1
    - Dst: pg_hton32
      Src: /src/postgres/src/common/scram-common.c:44,1
    - Dst: pg_hmac_create
      Src: /src/postgres/src/common/scram-common.c:49,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/common/scram-common.c:53,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/common/scram-common.c:64,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/common/scram-common.c:65,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/common/scram-common.c:66,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/common/scram-common.c:67,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/common/scram-common.c:69,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/common/scram-common.c:70,1
    - Dst: memcpy
      Src: /src/postgres/src/common/scram-common.c:74,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/common/scram-common.c:84,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/common/scram-common.c:87,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/common/scram-common.c:88,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/common/scram-common.c:89,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/common/scram-common.c:91,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/common/scram-common.c:92,1
    - Dst: memcpy
      Src: /src/postgres/src/common/scram-common.c:98,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/common/scram-common.c:101,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 8
    argNames:
    - password
    - hash_type
    - key_length
    - salt
    - saltlen
    - iterations
    - result
    - errstr
    argTypes:
    - char*
    - pg_cryptohash_type
    - int
    - uint8*
    - int
    - int
    - uint8*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 103
    functionName: scram_SaltedPassword
    functionSourceFile: /src/postgres/src/common/scram-common.c
    functionUses: 0
    functionsReached:
    - pg_hmac_init
    - pg_hton32
    - memcpy
    - pg_hmac_free
    - pg_hmac_error
    - CHECK_FOR_INTERRUPTS
    - pg_hmac_create
    - strlen
    - pg_hmac_update
    - pg_hmac_final
    linkageType: ''
    returnType: int
    signature: "int scram_SaltedPassword(const char *password,\n\t\t\t\t\t pg_cryptohash_type
      hash_type, int key_length,\n\t\t\t\t\t const uint8 *salt, int saltlen, int iterations,\n\t\t\t\t\t
      uint8 *result, const char **errstr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/scram-common.c:117,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/scram-common.c:120,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/scram-common.c:124,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/scram-common.c:125,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/scram-common.c:126,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/scram-common.c:128,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/scram-common.c:129,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/scram-common.c:133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - input
    - hash_type
    - key_length
    - result
    - errstr
    argTypes:
    - uint8*
    - pg_cryptohash_type
    - int
    - uint8*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 135
    functionName: scram_H
    functionSourceFile: /src/postgres/src/common/scram-common.c
    functionUses: 0
    functionsReached:
    - pg_cryptohash_update
    - pg_cryptohash_final
    - pg_cryptohash_create
    - pg_cryptohash_error
    - pg_cryptohash_free
    - pg_cryptohash_init
    linkageType: ''
    returnType: int
    signature: "int scram_H(const uint8 *input, pg_cryptohash_type hash_type, int
      key_length,\n\t\tuint8 *result, const char **errstr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_hmac_create
      Src: /src/postgres/src/common/scram-common.c:146,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/common/scram-common.c:150,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/common/scram-common.c:154,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/common/scram-common.c:155,1
    - Dst: strlen
      Src: /src/postgres/src/common/scram-common.c:155,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/common/scram-common.c:156,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/common/scram-common.c:158,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/common/scram-common.c:159,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/common/scram-common.c:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - salted_password
    - hash_type
    - key_length
    - result
    - errstr
    argTypes:
    - uint8*
    - pg_cryptohash_type
    - int
    - uint8*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 165
    functionName: scram_ClientKey
    functionSourceFile: /src/postgres/src/common/scram-common.c
    functionUses: 0
    functionsReached:
    - pg_hmac_init
    - pg_hmac_free
    - pg_hmac_error
    - strlen
    - pg_hmac_create
    - pg_hmac_update
    - pg_hmac_final
    linkageType: ''
    returnType: int
    signature: "int scram_ClientKey(const uint8 *salted_password,\n\t\t\t\tpg_cryptohash_type
      hash_type, int key_length,\n\t\t\t\tuint8 *result, const char **errstr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_hmac_create
      Src: /src/postgres/src/common/scram-common.c:176,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/common/scram-common.c:180,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/common/scram-common.c:184,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/common/scram-common.c:185,1
    - Dst: strlen
      Src: /src/postgres/src/common/scram-common.c:185,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/common/scram-common.c:186,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/common/scram-common.c:188,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/common/scram-common.c:189,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/common/scram-common.c:193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - salted_password
    - hash_type
    - key_length
    - result
    - errstr
    argTypes:
    - uint8*
    - pg_cryptohash_type
    - int
    - uint8*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 195
    functionName: scram_ServerKey
    functionSourceFile: /src/postgres/src/common/scram-common.c
    functionUses: 0
    functionsReached:
    - pg_hmac_init
    - pg_hmac_free
    - pg_hmac_error
    - strlen
    - pg_hmac_create
    - pg_hmac_update
    - pg_hmac_final
    linkageType: ''
    returnType: int
    signature: "int scram_ServerKey(const uint8 *salted_password,\n\t\t\t\tpg_cryptohash_type
      hash_type, int key_length,\n\t\t\t\tuint8 *result, const char **errstr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/scram-common.c:225,1
    - Dst: Assert
      Src: /src/postgres/src/common/scram-common.c:227,1
    - Dst: scram_SaltedPassword
      Src: /src/postgres/src/common/scram-common.c:230,1
    - Dst: scram_ClientKey
      Src: /src/postgres/src/common/scram-common.c:233,1
    - Dst: scram_H
      Src: /src/postgres/src/common/scram-common.c:235,1
    - Dst: scram_ServerKey
      Src: /src/postgres/src/common/scram-common.c:237,1
    - Dst: elog
      Src: /src/postgres/src/common/scram-common.c:244,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/common/scram-common.c:254,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/common/scram-common.c:255,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/common/scram-common.c:256,1
    - Dst: strlen
      Src: /src/postgres/src/common/scram-common.c:258,1
    - Dst: malloc
      Src: /src/postgres/src/common/scram-common.c:265,1
    - Dst: _
      Src: /src/postgres/src/common/scram-common.c:268,1
    - Dst: palloc
      Src: /src/postgres/src/common/scram-common.c:272,1
    - Dst: sprintf
      Src: /src/postgres/src/common/scram-common.c:275,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/common/scram-common.c:278,1
    - Dst: _
      Src: /src/postgres/src/common/scram-common.c:281,1
    - Dst: free
      Src: /src/postgres/src/common/scram-common.c:283,1
    - Dst: elog
      Src: /src/postgres/src/common/scram-common.c:286,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/common/scram-common.c:293,1
    - Dst: _
      Src: /src/postgres/src/common/scram-common.c:297,1
    - Dst: free
      Src: /src/postgres/src/common/scram-common.c:299,1
    - Dst: elog
      Src: /src/postgres/src/common/scram-common.c:302,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/common/scram-common.c:310,1
    - Dst: _
      Src: /src/postgres/src/common/scram-common.c:314,1
    - Dst: free
      Src: /src/postgres/src/common/scram-common.c:316,1
    - Dst: elog
      Src: /src/postgres/src/common/scram-common.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/common/scram-common.c:326,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 47
    argCount: 7
    argNames:
    - hash_type
    - key_length
    - salt
    - saltlen
    - iterations
    - password
    - errstr
    argTypes:
    - pg_cryptohash_type
    - int
    - uint8*
    - int
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 329
    functionName: scram_build_secret
    functionSourceFile: /src/postgres/src/common/scram-common.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_b64_enc_len
    - scram_SaltedPassword
    - scram_H
    - _
    - Assert
    - pg_b64_encode
    - scram_ClientKey
    - scram_ServerKey
    - strlen
    - malloc
    - free
    - palloc
    - sprintf
    linkageType: ''
    returnType: char
    signature: "char *\nscram_build_secret(pg_cryptohash_type hash_type, int key_length,\n\t\t\t\t
      \  const uint8 *salt, int saltlen, int iterations,\n\t\t\t\t   const char *password,
      const char **errstr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/string.c:33,1
    - Dst: strlen
      Src: /src/postgres/src/common/string.c:34,1
    - Dst: strcmp
      Src: /src/postgres/src/common/string.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - end
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 43
    functionName: pg_str_endswith
    functionSourceFile: /src/postgres/src/common/string.c
    functionUses: 1
    functionsReached:
    - strlen
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool pg_str_endswith(const char *str, const char *end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/postgres/src/common/string.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - pg_restrict
    - pg_restrict
    - base
    argTypes:
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 58
    functionName: strtoint
    functionSourceFile: /src/postgres/src/common/string.c
    functionUses: 2
    functionsReached:
    - strtol
    linkageType: ''
    returnType: int
    signature: int strtoint(const char *pg_restrict str, char **pg_restrict endptr,
      int base)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/string.c:93,1
    - Dst: malloc
      Src: /src/postgres/src/common/string.c:96,1
    - Dst: palloc_extended
      Src: /src/postgres/src/common/string.c:98,1
    - Dst: Assert
      Src: /src/postgres/src/common/string.c:110,1
    - Dst: snprintf
      Src: /src/postgres/src/common/string.c:111,1
    - Dst: Assert
      Src: /src/postgres/src/common/string.c:116,1
    - Dst: Assert
      Src: /src/postgres/src/common/string.c:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - str
    - alloc_flags
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 125
    functionName: pg_clean_ascii
    functionSourceFile: /src/postgres/src/common/string.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc_extended
    - malloc
    - strlen
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_clean_ascii(const char *str, int alloc_flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/string.c:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 141
    functionName: pg_is_ascii
    functionSourceFile: /src/postgres/src/common/string.c
    functionUses: 1
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: bool
    signature: bool pg_is_ascii(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/string.c:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 163
    functionName: pg_strip_crlf
    functionSourceFile: /src/postgres/src/common/string.c
    functionUses: 8
    functionsReached:
    - strlen
    linkageType: ''
    returnType: int
    signature: int pg_strip_crlf(char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/common/psprintf.c:58,1
    - Dst: va_start
      Src: /src/postgres/src/common/psprintf.c:62,1
    - Dst: pvsnprintf
      Src: /src/postgres/src/common/psprintf.c:63,1
    - Dst: va_end
      Src: /src/postgres/src/common/psprintf.c:64,1
    - Dst: pfree
      Src: /src/postgres/src/common/psprintf.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 73
    functionName: psprintf
    functionSourceFile: /src/postgres/src/common/psprintf.c
    functionUses: 93
    functionsReached:
    - va_end
    - va_start
    - pvsnprintf
    - pfree
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      psprintf(const char *fmt, ...)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vsnprintf
      Src: /src/postgres/src/common/psprintf.c:107,1
    - Dst: unlikely
      Src: /src/postgres/src/common/psprintf.c:110,1
    - Dst: elog
      Src: /src/postgres/src/common/psprintf.c:113,1
    - Dst: fprintf
      Src: /src/postgres/src/common/psprintf.c:115,1
    - Dst: exit
      Src: /src/postgres/src/common/psprintf.c:117,1
    - Dst: unlikely
      Src: /src/postgres/src/common/psprintf.c:135,1
    - Dst: ereport
      Src: /src/postgres/src/common/psprintf.c:138,1
    - Dst: errcode
      Src: /src/postgres/src/common/psprintf.c:139,1
    - Dst: errmsg
      Src: /src/postgres/src/common/psprintf.c:140,1
    - Dst: fprintf
      Src: /src/postgres/src/common/psprintf.c:142,1
    - Dst: _
      Src: /src/postgres/src/common/psprintf.c:142,1
    - Dst: exit
      Src: /src/postgres/src/common/psprintf.c:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - buf
    - len
    - fmt
    - args
    argTypes:
    - char*
    - size_t
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 148
    functionName: pvsnprintf
    functionSourceFile: /src/postgres/src/common/psprintf.c
    functionUses: 5
    functionsReached:
    - elog
    - _
    - errcode
    - ereport
    - unlikely
    - errmsg
    - vsnprintf
    - exit
    - fprintf
    linkageType: ''
    returnType: size_t
    signature: size_t pvsnprintf(char *buf, size_t len, const char *fmt, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - bits
    argTypes:
    - uint64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: rotl
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 rotl(uint64 x, int bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rotl
      Src: /src/postgres/src/common/pg_prng.c:58,1
    - Dst: rotl
      Src: /src/postgres/src/common/pg_prng.c:61,1
    - Dst: rotl
      Src: /src/postgres/src/common/pg_prng.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 65
    functionName: xoroshiro128ss
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 0
    functionsReached:
    - rotl
    linkageType: ''
    returnType: uint64
    signature: uint64 xoroshiro128ss(pg_prng_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/pg_prng.c:75,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/pg_prng.c:78,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/pg_prng.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 82
    functionName: splitmix64
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 splitmix64(uint64 *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: splitmix64
      Src: /src/postgres/src/common/pg_prng.c:91,1
    - Dst: splitmix64
      Src: /src/postgres/src/common/pg_prng.c:92,1
    - Dst: pg_prng_seed_check
      Src: /src/postgres/src/common/pg_prng.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - state
    - seed
    argTypes:
    - pg_prng_state*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: pg_prng_seed
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 10
    functionsReached:
    - pg_prng_seed_check
    - splitmix64
    linkageType: ''
    returnType: void
    signature: void pg_prng_seed(pg_prng_state *state, uint64 seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/pg_prng.c:105,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/common/pg_prng.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - fseed
    argTypes:
    - pg_prng_state*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: pg_prng_fseed
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    - pg_prng_seed
    linkageType: ''
    returnType: void
    signature: void pg_prng_fseed(pg_prng_state *state, double fseed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/pg_prng.c:120,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/pg_prng.c:122,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/pg_prng.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 128
    functionName: pg_prng_seed_check
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 1
    functionsReached:
    - UINT64CONST
    - unlikely
    linkageType: ''
    returnType: bool
    signature: bool pg_prng_seed_check(pg_prng_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xoroshiro128ss
      Src: /src/postgres/src/common/pg_prng.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 137
    functionName: pg_prng_uint64
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 4
    functionsReached:
    - xoroshiro128ss
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_prng_uint64(pg_prng_state *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/common/pg_prng.c:148,1
    - Dst: pg_leftmost_one_pos64
      Src: /src/postgres/src/common/pg_prng.c:156,1
    - Dst: xoroshiro128ss
      Src: /src/postgres/src/common/pg_prng.c:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - state
    - rmin
    - rmax
    argTypes:
    - pg_prng_state*
    - uint64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 167
    functionName: pg_prng_uint64_range
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 9
    functionsReached:
    - xoroshiro128ss
    - likely
    - pg_leftmost_one_pos64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_prng_uint64_range(pg_prng_state *state, uint64 rmin, uint64
      rmax)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xoroshiro128ss
      Src: /src/postgres/src/common/pg_prng.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: pg_prng_int64
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 1
    functionsReached:
    - xoroshiro128ss
    linkageType: ''
    returnType: int64
    signature: int64 pg_prng_int64(pg_prng_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xoroshiro128ss
      Src: /src/postgres/src/common/pg_prng.c:184,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/common/pg_prng.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 185
    functionName: pg_prng_int64p
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 0
    functionsReached:
    - xoroshiro128ss
    - UINT64CONST
    linkageType: ''
    returnType: int64
    signature: int64 pg_prng_int64p(pg_prng_state *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/common/pg_prng.c:196,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/common/pg_prng.c:205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - state
    - rmin
    - rmax
    argTypes:
    - pg_prng_state*
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 221
    functionName: pg_prng_int64_range
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 0
    functionsReached:
    - likely
    - pg_prng_uint64_range
    linkageType: ''
    returnType: int64
    signature: int64 pg_prng_int64_range(pg_prng_state *state, int64 rmin, int64 rmax)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xoroshiro128ss
      Src: /src/postgres/src/common/pg_prng.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 237
    functionName: pg_prng_uint32
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 5
    functionsReached:
    - xoroshiro128ss
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_prng_uint32(pg_prng_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xoroshiro128ss
      Src: /src/postgres/src/common/pg_prng.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 248
    functionName: pg_prng_int32
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 2
    functionsReached:
    - xoroshiro128ss
    linkageType: ''
    returnType: int32
    signature: int32 pg_prng_int32(pg_prng_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xoroshiro128ss
      Src: /src/postgres/src/common/pg_prng.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 259
    functionName: pg_prng_int32p
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 1
    functionsReached:
    - xoroshiro128ss
    linkageType: ''
    returnType: int32
    signature: int32 pg_prng_int32p(pg_prng_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xoroshiro128ss
      Src: /src/postgres/src/common/pg_prng.c:270,1
    - Dst: ldexp
      Src: /src/postgres/src/common/pg_prng.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 278
    functionName: pg_prng_double
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 4
    functionsReached:
    - xoroshiro128ss
    - ldexp
    linkageType: ''
    returnType: double
    signature: double pg_prng_double(pg_prng_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_double
      Src: /src/postgres/src/common/pg_prng.c:301,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/common/pg_prng.c:302,1
    - Dst: sqrt
      Src: /src/postgres/src/common/pg_prng.c:305,1
    - Dst: log
      Src: /src/postgres/src/common/pg_prng.c:305,1
    - Dst: sin
      Src: /src/postgres/src/common/pg_prng.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 307
    functionName: pg_prng_double_normal
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 1
    functionsReached:
    - pg_prng_double
    - sin
    - sqrt
    - log
    linkageType: ''
    returnType: double
    signature: double pg_prng_double_normal(pg_prng_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xoroshiro128ss
      Src: /src/postgres/src/common/pg_prng.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 318
    functionName: pg_prng_bool
    functionSourceFile: /src/postgres/src/common/pg_prng.c
    functionUses: 0
    functionsReached:
    - xoroshiro128ss
    linkageType: ''
    returnType: bool
    signature: bool pg_prng_bool(pg_prng_state *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/kwlookup.c:49,1
    - Dst: ScanKeywordList*::hash
      Src: /src/postgres/src/common/kwlookup.c:58,1
    - Dst: GetScanKeyword
      Src: /src/postgres/src/common/kwlookup.c:70,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - str
    - keywords
    argTypes:
    - char*
    - ScanKeywordList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 85
    functionName: ScanKeywordLookup
    functionSourceFile: /src/postgres/src/common/kwlookup.c
    functionUses: 3
    functionsReached:
    - strlen
    - GetScanKeyword
    - ScanKeywordList*::hash
    linkageType: ''
    returnType: int
    signature: "int ScanKeywordLookup(const char *str,\n\t\t\t\t  const ScanKeywordList
      *keywords)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 36
    functionName: pg_link_canary_is_frontend
    functionSourceFile: /src/postgres/src/common/link-canary.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pg_link_canary_is_frontend(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/common/pg_get_line.c:63,1
    - Dst: pg_get_line_append
      Src: /src/postgres/src/common/pg_get_line.c:65,1
    - Dst: pfree
      Src: /src/postgres/src/common/pg_get_line.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - prompt_ctx
    argTypes:
    - FILE*
    - PromptInterruptContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 76
    functionName: pg_get_line
    functionSourceFile: /src/postgres/src/common/pg_get_line.c
    functionUses: 2
    functionsReached:
    - pfree
    - initStringInfo
    - pg_get_line_append
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_get_line(FILE *stream, PromptInterruptContext *prompt_ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/common/pg_get_line.c:98,1
    - Dst: pg_get_line_append
      Src: /src/postgres/src/common/pg_get_line.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - buf
    argTypes:
    - FILE*
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: pg_get_line_buf
    functionSourceFile: /src/postgres/src/common/pg_get_line.c
    functionUses: 4
    functionsReached:
    - resetStringInfo
    - pg_get_line_append
    linkageType: ''
    returnType: bool
    signature: bool pg_get_line_buf(FILE *stream, StringInfo buf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sigsetjmp
      Src: /src/postgres/src/common/pg_get_line.c:129,1
    - Dst: fgets
      Src: /src/postgres/src/common/pg_get_line.c:149,1
    - Dst: strlen
      Src: /src/postgres/src/common/pg_get_line.c:159,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/common/pg_get_line.c:166,1
    - Dst: ferror
      Src: /src/postgres/src/common/pg_get_line.c:170,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 3
    argNames:
    - stream
    - buf
    - prompt_ctx
    argTypes:
    - FILE*
    - StringInfo
    - PromptInterruptContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 180
    functionName: pg_get_line_append
    functionSourceFile: /src/postgres/src/common/pg_get_line.c
    functionUses: 2
    functionsReached:
    - ferror
    - sigsetjmp
    - strlen
    - fgets
    - enlargeStringInfo
    linkageType: ''
    returnType: bool
    signature: "bool pg_get_line_append(FILE *stream, StringInfo buf,\n\t\t\t\t   PromptInterruptContext
      *prompt_ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/base64.c:100,1
    - Dst: memset
      Src: /src/postgres/src/common/base64.c:104,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 4
    argNames:
    - src
    - len
    - dst
    - dstlen
    argTypes:
    - uint8*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 106
    functionName: pg_b64_encode
    functionSourceFile: /src/postgres/src/common/base64.c
    functionUses: 1
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: int
    signature: int pg_b64_encode(const uint8 *src, int len, char *dst, int dstlen)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/base64.c:207,1
    - Dst: memset
      Src: /src/postgres/src/common/base64.c:211,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 59
    argCount: 4
    argNames:
    - src
    - len
    - dst
    - dstlen
    argTypes:
    - char*
    - int
    - uint8*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 213
    functionName: pg_b64_decode
    functionSourceFile: /src/postgres/src/common/base64.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: int
    signature: int pg_b64_decode(const char *src, int len, uint8 *dst, int dstlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - srclen
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 228
    functionName: pg_b64_enc_len
    functionSourceFile: /src/postgres/src/common/base64.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_b64_enc_len(int srclen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - srclen
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 242
    functionName: pg_b64_dec_len
    functionSourceFile: /src/postgres/src/common/base64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_b64_dec_len(int srclen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/common/blkreftable.c:237,1
    - Dst: blockreftable_create
      Src: /src/postgres/src/common/blkreftable.c:245,1
    - Dst: blockreftable_create
      Src: /src/postgres/src/common/blkreftable.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 252
    functionName: CreateEmptyBlockRefTable
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - blockreftable_create
    - palloc_object
    linkageType: ''
    returnType: BlockRefTable
    signature: 'BlockRefTable *

      CreateEmptyBlockRefTable(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:271,1
    - Dst: blockreftable_insert
      Src: /src/postgres/src/common/blkreftable.c:273,1
    - Dst: BlockRefTableEntrySetLimitBlock
      Src: /src/postgres/src/common/blkreftable.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - brtab
    - rlocator
    - forknum
    - limit_block
    argTypes:
    - BlockRefTable*
    - RelFileLocator*
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 291
    functionName: BlockRefTableSetLimitBlock
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - BlockRefTableEntrySetLimitBlock
    - blockreftable_insert
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void BlockRefTableSetLimitBlock(BlockRefTable *brtab,\n\t\t\t\t\t\t
      \  const RelFileLocator *rlocator,\n\t\t\t\t\t\t   ForkNumber forknum,\n\t\t\t\t\t\t
      \  BlockNumber limit_block)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/common/blkreftable.c:306,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:309,1
    - Dst: blockreftable_insert
      Src: /src/postgres/src/common/blkreftable.c:311,1
    - Dst: BlockRefTableEntryMarkBlockModified
      Src: /src/postgres/src/common/blkreftable.c:326,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/common/blkreftable.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - brtab
    - rlocator
    - forknum
    - blknum
    argTypes:
    - BlockRefTable*
    - RelFileLocator*
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 331
    functionName: BlockRefTableMarkBlockModified
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - BlockRefTableEntryMarkBlockModified
    - blockreftable_insert
    - memcpy
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void BlockRefTableMarkBlockModified(BlockRefTable *brtab,\n\t\t\t\t\t\t\t
      \  const RelFileLocator *rlocator,\n\t\t\t\t\t\t\t   ForkNumber forknum,\n\t\t\t\t\t\t\t
      \  BlockNumber blknum)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:346,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:348,1
    - Dst: blockreftable_lookup
      Src: /src/postgres/src/common/blkreftable.c:350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - brtab
    - rlocator
    - forknum
    - limit_block
    argTypes:
    - BlockRefTable*
    - RelFileLocator*
    - ForkNumber
    - BlockNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 356
    functionName: BlockRefTableGetEntry
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - Assert
    - blockreftable_lookup
    - memcpy
    linkageType: ''
    returnType: BlockRefTableEntry
    signature: "BlockRefTableEntry *\nBlockRefTableGetEntry(BlockRefTable *brtab,
      const RelFileLocator *rlocator,\n\t\t\t\t\t  ForkNumber forknum, BlockNumber
      *limit_block)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:380,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:416,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 5
    argNames:
    - entry
    - start_blkno
    - stop_blkno
    - blocks
    - nblocks
    argTypes:
    - BlockRefTableEntry*
    - BlockNumber
    - BlockNumber
    - BlockNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 468
    functionName: BlockRefTableEntryGetBlocks
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: "int BlockRefTableEntryGetBlocks(BlockRefTableEntry *entry,\n\t\t\t\t\t\t\tBlockNumber
      start_blkno,\n\t\t\t\t\t\t\tBlockNumber stop_blkno,\n\t\t\t\t\t\t\tBlockNumber
      *blocks,\n\t\t\t\t\t\t\tint nblocks)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/common/blkreftable.c:483,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:486,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:489,1
    - Dst: palloc_array
      Src: /src/postgres/src/common/blkreftable.c:500,1
    - Dst: blockreftable_start_iterate
      Src: /src/postgres/src/common/blkreftable.c:501,1
    - Dst: blockreftable_iterate
      Src: /src/postgres/src/common/blkreftable.c:502,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:516,1
    - Dst: qsort
      Src: /src/postgres/src/common/blkreftable.c:517,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:528,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:532,1
    - Dst: blockreftable_lookup
      Src: /src/postgres/src/common/blkreftable.c:534,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:535,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:539,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:547,1
    - Dst: BlockRefTableFileTerminate
      Src: /src/postgres/src/common/blkreftable.c:554,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 3
    argNames:
    - brtab
    - write_callback
    - write_callback_arg
    argTypes:
    - BlockRefTable*
    - io_callback_fn
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 555
    functionName: WriteBlockRefTable
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - blockreftable_iterate
    - qsort
    - blockreftable_lookup
    - memcpy
    - Assert
    - palloc_array
    - INIT_CRC32C
    - BlockRefTableWrite
    - blockreftable_start_iterate
    - memset
    - BlockRefTableFileTerminate
    linkageType: ''
    returnType: void
    signature: "void WriteBlockRefTable(BlockRefTable *brtab,\n\t\t\t\t   io_callback_fn
      write_callback,\n\t\t\t\t   void *write_callback_arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/common/blkreftable.c:587,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:593,1
    - Dst: BlockRefTableRead
      Src: /src/postgres/src/common/blkreftable.c:596,1
    - Dst: error_callback
      Src: /src/postgres/src/common/blkreftable.c:598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - read_callback
    - read_callback_arg
    - error_filename
    - error_callback
    - error_callback_arg
    argTypes:
    - io_callback_fn
    - void*
    - char*
    - report_error_fn
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 604
    functionName: CreateBlockRefTableReader
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 1
    functionsReached:
    - BlockRefTableRead
    - palloc0_object
    - error_callback
    - INIT_CRC32C
    linkageType: ''
    returnType: BlockRefTableReader
    signature: "BlockRefTableReader *\nCreateBlockRefTableReader(io_callback_fn read_callback,\n\t\t\t\t\t\t
      \ void *read_callback_arg,\n\t\t\t\t\t\t  char *error_filename,\n\t\t\t\t\t\t
      \ report_error_fn error_callback,\n\t\t\t\t\t\t  void *error_callback_arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:625,1
    - Dst: BlockRefTableRead
      Src: /src/postgres/src/common/blkreftable.c:628,1
    - Dst: memcmp
      Src: /src/postgres/src/common/blkreftable.c:635,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:646,1
    - Dst: BlockRefTableRead
      Src: /src/postgres/src/common/blkreftable.c:649,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:652,1
    - Dst: BlockRefTableReader*::error_callback
      Src: /src/postgres/src/common/blkreftable.c:653,1
    - Dst: BlockRefTableReader*::error_callback
      Src: /src/postgres/src/common/blkreftable.c:668,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:676,1
    - Dst: palloc_array
      Src: /src/postgres/src/common/blkreftable.c:677,1
    - Dst: BlockRefTableRead
      Src: /src/postgres/src/common/blkreftable.c:678,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:686,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 4
    argNames:
    - reader
    - rlocator
    - forknum
    - limit_block
    argTypes:
    - BlockRefTableReader*
    - RelFileLocator*
    - ForkNumber*
    - BlockNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 690
    functionName: BlockRefTableReaderNextRelation
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 1
    functionsReached:
    - memcpy
    - Assert
    - FIN_CRC32C
    - EQ_CRC32C
    - pfree
    - palloc_array
    - memcmp
    - BlockRefTableReader*::error_callback
    - BlockRefTableRead
    linkageType: ''
    returnType: bool
    signature: "bool BlockRefTableReaderNextRelation(BlockRefTableReader *reader,\n\t\t\t\t\t\t\t\tRelFileLocator
      *rlocator,\n\t\t\t\t\t\t\t\tForkNumber *forknum,\n\t\t\t\t\t\t\t\tBlockNumber
      *limit_block)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:710,1
    - Dst: BlockRefTableRead
      Src: /src/postgres/src/common/blkreftable.c:774,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 3
    argNames:
    - reader
    - blocks
    - nblocks
    argTypes:
    - BlockRefTableReader*
    - BlockNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 781
    functionName: BlockRefTableReaderGetBlocks
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 1
    functionsReached:
    - Assert
    - BlockRefTableRead
    linkageType: ''
    returnType: unsigned
    signature: "unsigned BlockRefTableReaderGetBlocks(BlockRefTableReader *reader,\n\t\t\t\t\t\t\t
      BlockNumber *blocks,\n\t\t\t\t\t\t\t int nblocks)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:791,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:794,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - reader
    argTypes:
    - BlockRefTableReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 795
    functionName: DestroyBlockRefTableReader
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void DestroyBlockRefTableReader(BlockRefTableReader *reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/common/blkreftable.c:811,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:814,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - write_callback
    - write_callback_arg
    argTypes:
    - io_callback_fn
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 803
    functionDepth: 1
    functionLinenumber: 803
    functionLinenumberEnd: 820
    functionName: CreateBlockRefTableWriter
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - BlockRefTableWrite
    - palloc0_object
    - INIT_CRC32C
    linkageType: ''
    returnType: BlockRefTableWriter
    signature: "BlockRefTableWriter *\nCreateBlockRefTableWriter(io_callback_fn write_callback,\n\t\t\t\t\t\t
      \ void *write_callback_arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:847,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:852,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:860,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - writer
    - entry
    argTypes:
    - BlockRefTableWriter*
    - BlockRefTableEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 863
    functionName: BlockRefTableWriteEntry
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - BlockRefTableWrite
    linkageType: ''
    returnType: void
    signature: void BlockRefTableWriteEntry(BlockRefTableWriter *writer, BlockRefTableEntry
      *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BlockRefTableFileTerminate
      Src: /src/postgres/src/common/blkreftable.c:871,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - writer
    argTypes:
    - BlockRefTableWriter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 868
    functionDepth: 1
    functionLinenumber: 868
    functionLinenumberEnd: 873
    functionName: DestroyBlockRefTableWriter
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - pfree
    - BlockRefTableFileTerminate
    linkageType: ''
    returnType: void
    signature: void DestroyBlockRefTableWriter(BlockRefTableWriter *writer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/common/blkreftable.c:891,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - rlocator
    - forknum
    argTypes:
    - RelFileLocator
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 888
    functionDepth: 0
    functionLinenumber: 888
    functionLinenumberEnd: 898
    functionName: CreateBlockRefTableEntry
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - memcpy
    linkageType: ''
    returnType: BlockRefTableEntry
    signature: 'BlockRefTableEntry *

      CreateBlockRefTableEntry(RelFileLocator rlocator, ForkNumber forknum)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:966,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:970,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - entry
    - limit_block
    argTypes:
    - BlockRefTableEntry*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 907
    functionDepth: 1
    functionLinenumber: 907
    functionLinenumberEnd: 973
    functionName: BlockRefTableEntrySetLimitBlock
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void BlockRefTableEntrySetLimitBlock(BlockRefTableEntry *entry,\n\t\t\t\t\t\t\t\tBlockNumber
      limit_block)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/common/blkreftable.c:1007,1
    - Dst: palloc0_array
      Src: /src/postgres/src/common/blkreftable.c:1014,1
    - Dst: palloc0_array
      Src: /src/postgres/src/common/blkreftable.c:1015,1
    - Dst: palloc0_array
      Src: /src/postgres/src/common/blkreftable.c:1016,1
    - Dst: repalloc
      Src: /src/postgres/src/common/blkreftable.c:1020,1
    - Dst: memset
      Src: /src/postgres/src/common/blkreftable.c:1022,1
    - Dst: repalloc
      Src: /src/postgres/src/common/blkreftable.c:1024,1
    - Dst: memset
      Src: /src/postgres/src/common/blkreftable.c:1026,1
    - Dst: repalloc
      Src: /src/postgres/src/common/blkreftable.c:1028,1
    - Dst: memset
      Src: /src/postgres/src/common/blkreftable.c:1030,1
    - Dst: palloc_array
      Src: /src/postgres/src/common/blkreftable.c:1045,1
    - Dst: palloc0
      Src: /src/postgres/src/common/blkreftable.c:1086,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:1102,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:1118,1
    - Dst: repalloc
      Src: /src/postgres/src/common/blkreftable.c:1119,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 3
    argNames:
    - entry
    - forknum
    - blknum
    argTypes:
    - BlockRefTableEntry*
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 1128
    functionName: BlockRefTableEntryMarkBlockModified
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 1
    functionsReached:
    - palloc0_array
    - pfree
    - Assert
    - palloc0
    - palloc_array
    - repalloc
    - Max
    - memset
    linkageType: ''
    returnType: void
    signature: "void BlockRefTableEntryMarkBlockModified(BlockRefTableEntry *entry,\n\t\t\t\t\t\t\t\t\tForkNumber
      forknum,\n\t\t\t\t\t\t\t\t\tBlockNumber blknum)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:1139,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:1145,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:1151,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:1155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - entry
    argTypes:
    - BlockRefTableEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1134
    functionDepth: 0
    functionLinenumber: 1134
    functionLinenumberEnd: 1156
    functionName: BlockRefTableFreeEntry
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void BlockRefTableFreeEntry(BlockRefTableEntry *entry)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1164
    functionDepth: 0
    functionLinenumber: 1164
    functionLinenumberEnd: 1191
    functionName: BlockRefTableComparator
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int BlockRefTableComparator(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BlockRefTableBuffer*::io_callback
      Src: /src/postgres/src/common/blkreftable.c:1199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - BlockRefTableBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1201
    functionName: BlockRefTableFlush
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - BlockRefTableBuffer*::io_callback
    linkageType: ''
    returnType: void
    signature: void BlockRefTableFlush(BlockRefTableBuffer *buffer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/common/blkreftable.c:1222,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:1224,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:1225,1
    - Dst: BlockRefTableBuffer*::io_callback
      Src: /src/postgres/src/common/blkreftable.c:1239,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:1241,1
    - Dst: BlockRefTableReader*::error_callback
      Src: /src/postgres/src/common/blkreftable.c:1247,1
    - Dst: BlockRefTableBuffer*::io_callback
      Src: /src/postgres/src/common/blkreftable.c:1256,1
    - Dst: BlockRefTableReader*::error_callback
      Src: /src/postgres/src/common/blkreftable.c:1262,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - reader
    - data
    - length
    argTypes:
    - BlockRefTableReader*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1208
    functionDepth: 1
    functionLinenumber: 1208
    functionLinenumberEnd: 1267
    functionName: BlockRefTableRead
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 3
    functionsReached:
    - memcpy
    - COMP_CRC32C
    - BlockRefTableBuffer*::io_callback
    - Min
    - BlockRefTableReader*::error_callback
    linkageType: ''
    returnType: void
    signature: void BlockRefTableRead(BlockRefTableReader *reader, void *data, int
      length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:1277,1
    - Dst: BlockRefTableBuffer*::io_callback
      Src: /src/postgres/src/common/blkreftable.c:1282,1
    - Dst: BlockRefTableBuffer*::io_callback
      Src: /src/postgres/src/common/blkreftable.c:1290,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:1295,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:1297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - buffer
    - data
    - length
    argTypes:
    - BlockRefTableBuffer*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1273
    functionDepth: 1
    functionLinenumber: 1273
    functionLinenumberEnd: 1298
    functionName: BlockRefTableWrite
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 3
    functionsReached:
    - Assert
    - COMP_CRC32C
    - BlockRefTableBuffer*::io_callback
    - memcpy
    linkageType: ''
    returnType: void
    signature: void BlockRefTableWrite(BlockRefTableBuffer *buffer, void *data, int
      length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:1311,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:1319,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:1320,1
    - Dst: BlockRefTableFlush
      Src: /src/postgres/src/common/blkreftable.c:1323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - BlockRefTableBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1304
    functionDepth: 2
    functionLinenumber: 1304
    functionLinenumberEnd: 1324
    functionName: BlockRefTableFileTerminate
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 2
    functionsReached:
    - BlockRefTableWrite
    - FIN_CRC32C
    - BlockRefTableFlush
    linkageType: ''
    returnType: void
    signature: void BlockRefTableFileTerminate(BlockRefTableBuffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _s
    - ','
    - _e
    - ','
    - _mask
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 282
    functionName: pglz_hist_idx
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pglz_hist_idx(_s,_e, _mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - _hs
    - ','
    - _he
    - ','
    - _hn
    - ','
    - _recycle
    - ','
    - _s
    - ','
    - _e
    - ','
    - _mask
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 320
    functionName: pglz_hist_add
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pglz_hist_add(_hs,_he,_hn,_recycle,_s,_e, _mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - __ctrlp
    - ','
    - __ctrlb
    - ','
    - __ctrl
    - ','
    - __buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 346
    functionName: pglz_out_ctrl
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pglz_out_ctrl(__ctrlp,__ctrlb,__ctrl,__buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _ctrlp
    - ','
    - _ctrlb
    - ','
    - _ctrl
    - ','
    - _buf
    - ','
    - _byte
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 361
    functionName: pglz_out_literal
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pglz_out_literal(_ctrlp,_ctrlb,_ctrl,_buf,_byte)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - _ctrlp
    - ','
    - _ctrlb
    - ','
    - _ctrl
    - ','
    - _buf
    - ','
    - _len
    - ','
    - _off
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 388
    functionName: pglz_out_tag
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pglz_out_tag(_ctrlp,_ctrlb,_ctrl,_buf,_len,_off)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pglz_hist_idx
      Src: /src/postgres/src/common/pg_lzcompress.c:410,1
    - Dst: memcmp
      Src: /src/postgres/src/common/pg_lzcompress.c:437,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 8
    argNames:
    - hstart
    - input
    - end
    - lenp
    - offp
    - good_match
    - good_drop
    - mask
    argTypes:
    - int16*
    - char*
    - char*
    - int*
    - int*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 498
    functionName: pglz_find_match
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 0
    functionsReached:
    - memcmp
    - pglz_hist_idx
    linkageType: ''
    returnType: int
    signature: "int pglz_find_match(int16 *hstart, const char *input, const char *end,\n\t\t\t\tint
      *lenp, int *offp, int good_match, int good_drop, int mask)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/common/pg_lzcompress.c:604,1
    - Dst: pglz_find_match
      Src: /src/postgres/src/common/pg_lzcompress.c:633,1
    - Dst: pglz_out_tag
      Src: /src/postgres/src/common/pg_lzcompress.c:640,1
    - Dst: pglz_hist_add
      Src: /src/postgres/src/common/pg_lzcompress.c:643,1
    - Dst: pglz_out_literal
      Src: /src/postgres/src/common/pg_lzcompress.c:656,1
    - Dst: pglz_hist_add
      Src: /src/postgres/src/common/pg_lzcompress.c:657,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 58
    argCount: 4
    argNames:
    - source
    - slen
    - dest
    - strategy
    argTypes:
    - char*
    - int32
    - char*
    - PGLZ_Strategy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 508
    functionDepth: 2
    functionLinenumber: 508
    functionLinenumberEnd: 676
    functionName: pglz_compress
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 1
    functionsReached:
    - pglz_find_match
    - pglz_hist_add
    - memset
    - pglz_out_tag
    - pglz_out_literal
    linkageType: ''
    returnType: int32
    signature: "int32 pglz_compress(const char *source, int32 slen, char *dest,\n\t\t\t
      \ const PGLZ_Strategy *strategy)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/pg_lzcompress.c:735,1
    - Dst: unlikely
      Src: /src/postgres/src/common/pg_lzcompress.c:743,1
    - Dst: unlikely
      Src: /src/postgres/src/common/pg_lzcompress.c:756,1
    - Dst: Min
      Src: /src/postgres/src/common/pg_lzcompress.c:763,1
    - Dst: memcpy
      Src: /src/postgres/src/common/pg_lzcompress.c:780,1
    - Dst: memcpy
      Src: /src/postgres/src/common/pg_lzcompress.c:810,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 5
    argNames:
    - source
    - slen
    - dest
    - rawsize
    - check_complete
    argTypes:
    - char*
    - int32
    - char*
    - int32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 839
    functionName: pglz_decompress
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 1
    functionsReached:
    - Min
    - unlikely
    - memcpy
    linkageType: ''
    returnType: int32
    signature: "int32 pglz_decompress(const char *source, int32 slen, char *dest,\n\t\t\t\tint32
      rawsize, bool check_complete)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/common/pg_lzcompress.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - rawsize
    - total_compressed_size
    argTypes:
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 887
    functionName: pglz_maximum_compressed_size
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 0
    functionsReached:
    - Min
    linkageType: ''
    returnType: int32
    signature: int32 pglz_maximum_compressed_size(int32 rawsize, int32 total_compressed_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/compression.c:51,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:54,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:57,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:60,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:63,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:66,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 13
    argCount: 2
    argNames:
    - fname
    - algorithm
    argTypes:
    - char*
    - pg_compress_algorithm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 72
    functionName: parse_tar_compress_algorithm
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 3
    functionsReached:
    - strlen
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool parse_tar_compress_algorithm(const char *fname, pg_compress_algorithm
      *algorithm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:81,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:83,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:85,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:87,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - name
    - algorithm
    argTypes:
    - char*
    - pg_compress_algorithm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 92
    functionName: parse_compress_algorithm
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 3
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool parse_compress_algorithm(char *name, pg_compress_algorithm *algorithm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/compression.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - algorithm
    argTypes:
    - pg_compress_algorithm
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 115
    functionName: get_compress_algorithm_name
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      get_compress_algorithm_name(pg_compress_algorithm algorithm)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:162,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:162,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:171,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:171,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:180,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:180,1
    - Dst: strtol
      Src: /src/postgres/src/common/compression.c:191,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:235,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:235,1
    - Dst: palloc
      Src: /src/postgres/src/common/compression.c:240,1
    - Dst: memcpy
      Src: /src/postgres/src/common/compression.c:241,1
    - Dst: palloc
      Src: /src/postgres/src/common/compression.c:247,1
    - Dst: memcpy
      Src: /src/postgres/src/common/compression.c:248,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:253,1
    - Dst: expect_integer_value
      Src: /src/postgres/src/common/compression.c:255,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:262,1
    - Dst: expect_integer_value
      Src: /src/postgres/src/common/compression.c:264,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:267,1
    - Dst: expect_boolean_value
      Src: /src/postgres/src/common/compression.c:269,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:274,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:274,1
    - Dst: pfree
      Src: /src/postgres/src/common/compression.c:277,1
    - Dst: pfree
      Src: /src/postgres/src/common/compression.c:279,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 76
    argCount: 3
    argNames:
    - algorithm
    - specification
    - result
    argTypes:
    - pg_compress_algorithm
    - char*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 296
    functionName: parse_compress_specification
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 3
    functionsReached:
    - memcpy
    - _
    - strcmp
    - pfree
    - expect_integer_value
    - psprintf
    - strtol
    - pstrdup
    - palloc
    - expect_boolean_value
    linkageType: ''
    returnType: void
    signature: "void parse_compress_specification(pg_compress_algorithm algorithm,
      char *specification,\n\t\t\t\t\t\t\t pg_compress_specification *result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:313,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:313,1
    - Dst: strtol
      Src: /src/postgres/src/common/compression.c:318,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:322,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - keyword
    - value
    - result
    argTypes:
    - char*
    - char*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 327
    functionName: expect_integer_value
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 1
    functionsReached:
    - psprintf
    - strtol
    - _
    linkageType: ''
    returnType: int
    signature: int expect_integer_value(char *keyword, char *value, pg_compress_specification
      *result)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:346,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:348,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:350,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:353,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:355,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:357,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:361,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:361,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - keyword
    - value
    - result
    argTypes:
    - char*
    - char*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 364
    functionName: expect_boolean_value
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 1
    functionsReached:
    - psprintf
    - pg_strcasecmp
    - _
    linkageType: ''
    returnType: bool
    signature: bool expect_boolean_value(char *keyword, char *value, pg_compress_specification
      *result)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_maxCLevel
      Src: /src/postgres/src/common/compression.c:402,1
    - Dst: ZSTD_minCLevel
      Src: /src/postgres/src/common/compression.c:403,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:409,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:409,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/common/compression.c:410,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:416,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:416,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/common/compression.c:417,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:427,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:427,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/common/compression.c:428,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:438,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:438,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/common/compression.c:439,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 1
    argNames:
    - spec
    argTypes:
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 443
    functionName: validate_compress_specification
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 3
    functionsReached:
    - ZSTD_minCLevel
    - _
    - ZSTD_maxCLevel
    - psprintf
    - get_compress_algorithm_name
    linkageType: ''
    returnType: char
    signature: 'char *

      validate_compress_specification(pg_compress_specification *spec)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/postgres/src/common/compression.c:468,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:473,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:478,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:479,1
    - Dst: strchr
      Src: /src/postgres/src/common/compression.c:488,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:491,1
    - Dst: palloc
      Src: /src/postgres/src/common/compression.c:498,1
    - Dst: memcpy
      Src: /src/postgres/src/common/compression.c:499,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:503,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - option
    - algorithm
    - detail
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 505
    functionName: parse_compress_options
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 4
    functionsReached:
    - memcpy
    - strchr
    - strtol
    - pstrdup
    - palloc
    linkageType: ''
    returnType: void
    signature: void parse_compress_options(const char *option, char **algorithm, char
      **detail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/postgres/src/common/username.c:35,1
    - Dst: getpwuid
      Src: /src/postgres/src/common/username.c:40,1
    - Dst: psprintf
      Src: /src/postgres/src/common/username.c:43,1
    - Dst: _
      Src: /src/postgres/src/common/username.c:43,1
    - Dst: strerror
      Src: /src/postgres/src/common/username.c:45,1
    - Dst: _
      Src: /src/postgres/src/common/username.c:45,1
    - Dst: GetUserName
      Src: /src/postgres/src/common/username.c:58,1
    - Dst: psprintf
      Src: /src/postgres/src/common/username.c:60,1
    - Dst: _
      Src: /src/postgres/src/common/username.c:60,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/username.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - errstr
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 67
    functionName: get_user_name
    functionSourceFile: /src/postgres/src/common/username.c
    functionUses: 2
    functionsReached:
    - geteuid
    - _
    - psprintf
    - GetUserName
    - GetLastError
    - strerror
    - getpwuid
    linkageType: ''
    returnType: char
    signature: 'char *

      get_user_name(char **errstr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_user_name
      Src: /src/postgres/src/common/username.c:79,1
    - Dst: fprintf
      Src: /src/postgres/src/common/username.c:83,1
    - Dst: exit
      Src: /src/postgres/src/common/username.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 73
    functionDepth: 3
    functionLinenumber: 73
    functionLinenumberEnd: 87
    functionName: get_user_name_or_exit
    functionSourceFile: /src/postgres/src/common/username.c
    functionUses: 8
    functionsReached:
    - exit
    - get_user_name
    - fprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      get_user_name_or_exit(const char *progname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/common/binaryheap.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - capacity
    - compare
    - arg
    argTypes:
    - int
    - binaryheap_comparator
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 52
    functionName: binaryheap_allocate
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 8
    functionsReached:
    - palloc
    linkageType: ''
    returnType: binaryheap
    signature: 'binaryheap *

      binaryheap_allocate(int capacity, binaryheap_comparator compare, void *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: binaryheap_reset
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void binaryheap_reset(binaryheap *heap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/common/binaryheap.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: binaryheap_free
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 2
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void binaryheap_free(binaryheap *heap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: left_offset
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int left_offset(int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: right_offset
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int right_offset(int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 103
    functionName: parent_offset
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int parent_offset(int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/common/binaryheap.c:119,1
    - Dst: elog
      Src: /src/postgres/src/common/binaryheap.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - heap
    - d
    argTypes:
    - binaryheap*
    - bh_node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 127
    functionName: binaryheap_add_unordered
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 2
    functionsReached:
    - elog
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void binaryheap_add_unordered(binaryheap *heap, bh_node_type d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parent_offset
      Src: /src/postgres/src/common/binaryheap.c:140,1
    - Dst: sift_down
      Src: /src/postgres/src/common/binaryheap.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 143
    functionName: binaryheap_build
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 2
    functionsReached:
    - sift_down
    - parent_offset
    linkageType: ''
    returnType: void
    signature: void binaryheap_build(binaryheap *heap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/common/binaryheap.c:157,1
    - Dst: elog
      Src: /src/postgres/src/common/binaryheap.c:159,1
    - Dst: sift_up
      Src: /src/postgres/src/common/binaryheap.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - heap
    - d
    argTypes:
    - binaryheap*
    - bh_node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 165
    functionName: binaryheap_add
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 8
    functionsReached:
    - elog
    - sift_up
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void binaryheap_add(binaryheap *heap, bh_node_type d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/binaryheap.c:177,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/common/binaryheap.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 179
    functionName: binaryheap_first
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 1
    functionsReached:
    - Assert
    - binaryheap_empty
    linkageType: ''
    returnType: bh_node_type
    signature: bh_node_type binaryheap_first(binaryheap *heap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/binaryheap.c:194,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/common/binaryheap.c:194,1
    - Dst: sift_down
      Src: /src/postgres/src/common/binaryheap.c:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 214
    functionName: binaryheap_remove_first
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 3
    functionsReached:
    - Assert
    - sift_down
    - binaryheap_empty
    linkageType: ''
    returnType: bh_node_type
    signature: bh_node_type binaryheap_remove_first(binaryheap *heap)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/binaryheap.c:227,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/common/binaryheap.c:227,1
    - Dst: Assert
      Src: /src/postgres/src/common/binaryheap.c:228,1
    - Dst: binaryheap*::bh_compare
      Src: /src/postgres/src/common/binaryheap.c:231,1
    - Dst: sift_up
      Src: /src/postgres/src/common/binaryheap.c:240,1
    - Dst: sift_down
      Src: /src/postgres/src/common/binaryheap.c:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - heap
    - n
    argTypes:
    - binaryheap*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 243
    functionName: binaryheap_remove_node
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 2
    functionsReached:
    - Assert
    - binaryheap_empty
    - sift_down
    - binaryheap*::bh_compare
    - sift_up
    linkageType: ''
    returnType: void
    signature: void binaryheap_remove_node(binaryheap *heap, int n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/binaryheap.c:255,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/common/binaryheap.c:255,1
    - Dst: sift_down
      Src: /src/postgres/src/common/binaryheap.c:260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - heap
    - d
    argTypes:
    - binaryheap*
    - bh_node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 261
    functionName: binaryheap_replace_first
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 1
    functionsReached:
    - Assert
    - sift_down
    - binaryheap_empty
    linkageType: ''
    returnType: void
    signature: void binaryheap_replace_first(binaryheap *heap, bh_node_type d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parent_offset
      Src: /src/postgres/src/common/binaryheap.c:287,1
    - Dst: binaryheap*::bh_compare
      Src: /src/postgres/src/common/binaryheap.c:289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - heap
    - node_off
    argTypes:
    - binaryheap*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 304
    functionName: sift_up
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 2
    functionsReached:
    - parent_offset
    - binaryheap*::bh_compare
    linkageType: ''
    returnType: void
    signature: void sift_up(binaryheap *heap, int node_off)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: left_offset
      Src: /src/postgres/src/common/binaryheap.c:322,1
    - Dst: right_offset
      Src: /src/postgres/src/common/binaryheap.c:323,1
    - Dst: binaryheap*::bh_compare
      Src: /src/postgres/src/common/binaryheap.c:328,1
    - Dst: binaryheap*::bh_compare
      Src: /src/postgres/src/common/binaryheap.c:338,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - heap
    - node_off
    argTypes:
    - binaryheap*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 352
    functionName: sift_down
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 4
    functionsReached:
    - left_offset
    - right_offset
    - binaryheap*::bh_compare
    linkageType: ''
    returnType: void
    signature: void sift_down(binaryheap *heap, int node_off)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/ryu_common.h:63,1
    - Dst: Assert
      Src: /src/postgres/src/common/ryu_common.h:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - e
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 66
    functionName: pow5bits
    functionSourceFile: /src/postgres/src/common/ryu_common.h
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint32
    signature: uint32 pow5bits(const int32 e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/ryu_common.h:76,1
    - Dst: Assert
      Src: /src/postgres/src/common/ryu_common.h:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - e
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 79
    functionName: log10Pow2
    functionSourceFile: /src/postgres/src/common/ryu_common.h
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int32
    signature: int32 log10Pow2(const int32 e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/ryu_common.h:89,1
    - Dst: Assert
      Src: /src/postgres/src/common/ryu_common.h:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - e
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: log10Pow5
    functionSourceFile: /src/postgres/src/common/ryu_common.h
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int32
    signature: int32 log10Pow5(const int32 e)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/ryu_common.h:99,1
    - Dst: memcpy
      Src: /src/postgres/src/common/ryu_common.h:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - result
    - sign
    - exponent
    - mantissa
    argTypes:
    - char*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 113
    functionName: copy_special_str
    functionSourceFile: /src/postgres/src/common/ryu_common.h
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: int copy_special_str(char *const result, const bool sign, const bool
      exponent, const bool mantissa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/ryu_common.h:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 122
    functionName: float_to_bits
    functionSourceFile: /src/postgres/src/common/ryu_common.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint32
    signature: uint32 float_to_bits(const float f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/ryu_common.h:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - d
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 131
    functionName: double_to_bits
    functionSourceFile: /src/postgres/src/common/ryu_common.h
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint64
    signature: uint64 double_to_bits(const double d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/common/sprompt.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prompt
    - echo
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: simple_prompt
    functionSourceFile: /src/postgres/src/common/sprompt.c
    functionUses: 10
    functionsReached:
    - simple_prompt_extended
    linkageType: ''
    returnType: char
    signature: 'char *

      simple_prompt(const char *prompt, bool echo)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/common/sprompt.c:87,1
    - Dst: fopen
      Src: /src/postgres/src/common/sprompt.c:88,1
    - Dst: fopen
      Src: /src/postgres/src/common/sprompt.c:95,1
    - Dst: fopen
      Src: /src/postgres/src/common/sprompt.c:96,1
    - Dst: getenv
      Src: /src/postgres/src/common/sprompt.c:107,1
    - Dst: strcmp
      Src: /src/postgres/src/common/sprompt.c:107,1
    - Dst: getenv
      Src: /src/postgres/src/common/sprompt.c:107,1
    - Dst: fclose
      Src: /src/postgres/src/common/sprompt.c:112,1
    - Dst: fclose
      Src: /src/postgres/src/common/sprompt.c:114,1
    - Dst: tcgetattr
      Src: /src/postgres/src/common/sprompt.c:123,1
    - Dst: fileno
      Src: /src/postgres/src/common/sprompt.c:123,1
    - Dst: tcsetattr
      Src: /src/postgres/src/common/sprompt.c:126,1
    - Dst: fileno
      Src: /src/postgres/src/common/sprompt.c:126,1
    - Dst: _get_osfhandle
      Src: /src/postgres/src/common/sprompt.c:129,1
    - Dst: _fileno
      Src: /src/postgres/src/common/sprompt.c:129,1
    - Dst: GetConsoleMode
      Src: /src/postgres/src/common/sprompt.c:132,1
    - Dst: SetConsoleMode
      Src: /src/postgres/src/common/sprompt.c:135,1
    - Dst: fputs
      Src: /src/postgres/src/common/sprompt.c:141,1
    - Dst: _
      Src: /src/postgres/src/common/sprompt.c:141,1
    - Dst: fflush
      Src: /src/postgres/src/common/sprompt.c:142,1
    - Dst: pg_get_line
      Src: /src/postgres/src/common/sprompt.c:145,1
    - Dst: pg_strdup
      Src: /src/postgres/src/common/sprompt.c:149,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/common/sprompt.c:152,1
    - Dst: tcsetattr
      Src: /src/postgres/src/common/sprompt.c:158,1
    - Dst: fileno
      Src: /src/postgres/src/common/sprompt.c:158,1
    - Dst: fputs
      Src: /src/postgres/src/common/sprompt.c:159,1
    - Dst: fflush
      Src: /src/postgres/src/common/sprompt.c:160,1
    - Dst: SetConsoleMode
      Src: /src/postgres/src/common/sprompt.c:162,1
    - Dst: fputs
      Src: /src/postgres/src/common/sprompt.c:163,1
    - Dst: fflush
      Src: /src/postgres/src/common/sprompt.c:164,1
    - Dst: fputs
      Src: /src/postgres/src/common/sprompt.c:170,1
    - Dst: fflush
      Src: /src/postgres/src/common/sprompt.c:171,1
    - Dst: fclose
      Src: /src/postgres/src/common/sprompt.c:176,1
    - Dst: fclose
      Src: /src/postgres/src/common/sprompt.c:177,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 3
    argNames:
    - prompt
    - echo
    - prompt_ctx
    argTypes:
    - char*
    - bool
    - PromptInterruptContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 52
    functionDepth: 4
    functionLinenumber: 52
    functionLinenumberEnd: 181
    functionName: simple_prompt_extended
    functionSourceFile: /src/postgres/src/common/sprompt.c
    functionUses: 4
    functionsReached:
    - tcsetattr
    - strcmp
    - _
    - GetConsoleMode
    - fopen
    - pg_get_line
    - tcgetattr
    - fputs
    - pg_strip_crlf
    - fclose
    - _get_osfhandle
    - getenv
    - pg_strdup
    - fflush
    - _fileno
    - SetConsoleMode
    - fileno
    linkageType: ''
    returnType: char
    signature: "char *\nsimple_prompt_extended(const char *prompt, bool echo,\n\t\t\t\t\t
      \  PromptInterruptContext *prompt_ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/common/controldata_utils.c:57,1
    - Dst: get_controlfile_by_exact_path
      Src: /src/postgres/src/common/controldata_utils.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - DataDir
    - crc_ok_p
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 60
    functionName: get_controlfile
    functionSourceFile: /src/postgres/src/common/controldata_utils.c
    functionUses: 5
    functionsReached:
    - get_controlfile_by_exact_path
    - snprintf
    linkageType: ''
    returnType: ControlFileData
    signature: 'ControlFileData *

      get_controlfile(const char *DataDir, bool *crc_ok_p)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/controldata_utils.c:80,1
    - Dst: palloc_object
      Src: /src/postgres/src/common/controldata_utils.c:82,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:85,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/common/controldata_utils.c:91,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:92,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:93,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:94,1
    - Dst: open
      Src: /src/postgres/src/common/controldata_utils.c:97,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:98,1
    - Dst: read
      Src: /src/postgres/src/common/controldata_utils.c:102,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:107,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:108,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:109,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:111,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:115,1
    - Dst: errcode
      Src: /src/postgres/src/common/controldata_utils.c:116,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:117,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:120,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/common/controldata_utils.c:126,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:127,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:128,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:129,1
    - Dst: close
      Src: /src/postgres/src/common/controldata_utils.c:132,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:133,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:137,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:138,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:141,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:143,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:155,1
    - Dst: pg_usleep
      Src: /src/postgres/src/common/controldata_utils.c:160,1
    - Dst: elog
      Src: /src/postgres/src/common/controldata_utils.c:169,1
    - Dst: _
      Src: /src/postgres/src/common/controldata_utils.c:169,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/controldata_utils.c:171,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - ControlFilePath
    - crc_ok_p
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 178
    functionName: get_controlfile_by_exact_path
    functionSourceFile: /src/postgres/src/common/controldata_utils.c
    functionUses: 3
    functionsReached:
    - errcode
    - FIN_CRC32C
    - COMP_CRC32C
    - pg_log_warning
    - read
    - elog
    - OpenTransientFile
    - _
    - Assert
    - errmsg
    - palloc_object
    - CloseTransientFile
    - EQ_CRC32C
    - ereport
    - open
    - pg_usleep
    - errcode_for_file_access
    - INIT_CRC32C
    - pg_fatal
    - close
    linkageType: ''
    returnType: ControlFileData
    signature: 'ControlFileData *

      get_controlfile_by_exact_path(const char *ControlFilePath, bool *crc_ok_p)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/common/controldata_utils.c:198,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:201,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:202,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:205,1
    - Dst: memset
      Src: /src/postgres/src/common/controldata_utils.c:212,1
    - Dst: memcpy
      Src: /src/postgres/src/common/controldata_utils.c:213,1
    - Dst: snprintf
      Src: /src/postgres/src/common/controldata_utils.c:215,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/common/controldata_utils.c:223,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:224,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:225,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:226,1
    - Dst: open
      Src: /src/postgres/src/common/controldata_utils.c:229,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:231,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/common/controldata_utils.c:236,1
    - Dst: write
      Src: /src/postgres/src/common/controldata_utils.c:238,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:245,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:246,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:247,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:250,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/common/controldata_utils.c:254,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/common/controldata_utils.c:260,1
    - Dst: pg_fsync
      Src: /src/postgres/src/common/controldata_utils.c:261,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:262,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:263,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:264,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/common/controldata_utils.c:266,1
    - Dst: fsync
      Src: /src/postgres/src/common/controldata_utils.c:268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:269,1
    - Dst: close
      Src: /src/postgres/src/common/controldata_utils.c:273,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:276,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:277,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:278,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:281,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - DataDir
    - ControlFile
    - do_sync
    argTypes:
    - char*
    - ControlFileData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 284
    functionName: update_controlfile
    functionSourceFile: /src/postgres/src/common/controldata_utils.c
    functionUses: 4
    functionsReached:
    - FIN_CRC32C
    - COMP_CRC32C
    - BasicOpenFile
    - pg_fsync
    - memcpy
    - write
    - pgstat_report_wait_end
    - fsync
    - time
    - errmsg
    - ereport
    - memset
    - open
    - errcode_for_file_access
    - INIT_CRC32C
    - pg_fatal
    - close
    - pgstat_report_wait_start
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void update_controlfile(const char *DataDir,\n\t\t\t\t   ControlFileData
      *ControlFile, bool do_sync)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_case_map
      Src: /src/postgres/src/common/unicode_case.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: unicode_lowercase_simple
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - find_case_map
    linkageType: ''
    returnType: char32_t
    signature: char32_t unicode_lowercase_simple(char32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_case_map
      Src: /src/postgres/src/common/unicode_case.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: unicode_titlecase_simple
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - find_case_map
    linkageType: ''
    returnType: char32_t
    signature: char32_t unicode_titlecase_simple(char32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_case_map
      Src: /src/postgres/src/common/unicode_case.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: unicode_uppercase_simple
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - find_case_map
    linkageType: ''
    returnType: char32_t
    signature: char32_t unicode_uppercase_simple(char32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_case_map
      Src: /src/postgres/src/common/unicode_case.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 79
    functionName: unicode_casefold_simple
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - find_case_map
    linkageType: ''
    returnType: char32_t
    signature: char32_t unicode_casefold_simple(char32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_case
      Src: /src/postgres/src/common/unicode_case.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - pconsumed
    - full
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - size_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: unicode_strlower
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - convert_case
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_strlower(char *dst, size_t dstsize, const char *src,
      size_t srclen,\n\t\t\t\t size_t *pconsumed, bool full)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_case
      Src: /src/postgres/src/common/unicode_case.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - pconsumed
    - full
    - wbnext
    - wbstate
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - size_t*
    - bool
    - WordBoundaryNext
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: unicode_strtitle
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - convert_case
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_strtitle(char *dst, size_t dstsize, const char *src,
      size_t srclen,\n\t\t\t\t size_t *pconsumed, bool full, WordBoundaryNext wbnext,\n\t\t\t\t
      void *wbstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_case
      Src: /src/postgres/src/common/unicode_case.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - pconsumed
    - full
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - size_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 171
    functionName: unicode_strupper
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - convert_case
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_strupper(char *dst, size_t dstsize, const char *src,
      size_t srclen,\n\t\t\t\t size_t *pconsumed, bool full)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_case
      Src: /src/postgres/src/common/unicode_case.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - pconsumed
    - full
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - size_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 195
    functionName: unicode_strfold
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - convert_case
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_strfold(char *dst, size_t dstsize, const char *src,
      size_t srclen,\n\t\t\t\tsize_t *pconsumed, bool full)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 211
    functionName: utf8_mblen
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int utf8_mblen(const unsigned char *s)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:240,1
    - Dst: wbnext
      Src: /src/postgres/src/common/unicode_case.c:245,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:246,1
    - Dst: utf8_mblen
      Src: /src/postgres/src/common/unicode_case.c:251,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/unicode_case.c:261,1
    - Dst: wbnext
      Src: /src/postgres/src/common/unicode_case.c:268,1
    - Dst: casemap
      Src: /src/postgres/src/common/unicode_case.c:274,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:281,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:282,1
    - Dst: memcpy
      Src: /src/postgres/src/common/unicode_case.c:284,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/common/unicode_case.c:292,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:294,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/unicode_case.c:296,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:303,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/common/unicode_case.c:307,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/unicode_case.c:310,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 48
    argCount: 9
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - pconsumed
    - str_casekind
    - full
    - wbnext
    - wbstate
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - size_t*
    - CaseKind
    - bool
    - WordBoundaryNext
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 325
    functionName: convert_case
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 4
    functionsReached:
    - unicode_to_utf8
    - unicode_utf8len
    - memcpy
    - utf8_mblen
    - Assert
    - wbnext
    - utf8_to_unicode
    - casemap
    linkageType: ''
    returnType: size_t
    signature: "size_t convert_case(char *dst, size_t dstsize, const char *src, size_t
      srclen,\n\t\t\t size_t *pconsumed, CaseKind str_casekind, bool full,\n\t\t\t
      WordBoundaryNext wbnext, void *wbstate)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:353,1
    - Dst: utf8_mblen
      Src: /src/postgres/src/common/unicode_case.c:355,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/unicode_case.c:361,1
    - Dst: pg_u_prop_case_ignorable
      Src: /src/postgres/src/common/unicode_case.c:363,1
    - Dst: pg_u_prop_cased
      Src: /src/postgres/src/common/unicode_case.c:365,1
    - Dst: utf8_mblen
      Src: /src/postgres/src/common/unicode_case.c:370,1
    - Dst: utf8_mblen
      Src: /src/postgres/src/common/unicode_case.c:375,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/unicode_case.c:381,1
    - Dst: pg_u_prop_case_ignorable
      Src: /src/postgres/src/common/unicode_case.c:383,1
    - Dst: pg_u_prop_cased
      Src: /src/postgres/src/common/unicode_case.c:385,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 3
    argNames:
    - str
    - len
    - offset
    argTypes:
    - unsigned char*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 336
    functionDepth: 3
    functionLinenumber: 336
    functionLinenumberEnd: 393
    functionName: check_final_sigma
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - utf8_mblen
    - Assert
    - utf8_to_unicode
    - pg_u_prop_case_ignorable
    - pg_u_prop_cased
    linkageType: ''
    returnType: bool
    signature: bool check_final_sigma(const unsigned char *str, size_t len, size_t
      offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_final_sigma
      Src: /src/postgres/src/common/unicode_case.c:406,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - conditions
    - str
    - len
    - offset
    argTypes:
    - int
    - char*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 399
    functionDepth: 4
    functionLinenumber: 399
    functionLinenumberEnd: 411
    functionName: check_special_conditions
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - Assert
    - check_final_sigma
    linkageType: ''
    returnType: bool
    signature: "bool check_special_conditions(int conditions, const char *str, size_t
      len,\n\t\t\t\t\t\t size_t offset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: case_index
      Src: /src/postgres/src/common/unicode_case.c:445,1
    - Dst: check_special_conditions
      Src: /src/postgres/src/common/unicode_case.c:451,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 8
    argNames:
    - u1
    - casekind
    - full
    - src
    - srclen
    - srcoff
    - simple
    - special
    argTypes:
    - char32_t
    - CaseKind
    - bool
    - char*
    - size_t
    - size_t
    - char32_t*
    - char32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 426
    functionDepth: 5
    functionLinenumber: 426
    functionLinenumberEnd: 461
    functionName: casemap
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 1
    functionsReached:
    - case_index
    - check_special_conditions
    linkageType: ''
    returnType: enum CaseMapResult
    signature: "enum CaseMapResult casemap(char32_t u1, CaseKind casekind, bool full,\n\t\tconst
      char *src, size_t srclen, size_t srcoff,\n\t\tchar32_t *simple, const char32_t
      **special)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: case_index
      Src: /src/postgres/src/common/unicode_case.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ucs
    - map
    argTypes:
    - char32_t
    - char32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 475
    functionName: find_case_map
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 4
    functionsReached:
    - case_index
    linkageType: ''
    returnType: char32_t
    signature: char32_t find_case_map(char32_t ucs, const char32_t *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALLOC
      Src: /src/postgres/src/common/cryptohash.c:84,1
    - Dst: memset
      Src: /src/postgres/src/common/cryptohash.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - type
    argTypes:
    - pg_cryptohash_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 92
    functionName: pg_cryptohash_create
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 4
    functionsReached:
    - ALLOC
    - memset
    linkageType: ''
    returnType: pg_cryptohash_ctx
    signature: 'pg_cryptohash_ctx *

      pg_cryptohash_create(pg_cryptohash_type type)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_md5_init
      Src: /src/postgres/src/common/cryptohash.c:108,1
    - Dst: pg_sha1_init
      Src: /src/postgres/src/common/cryptohash.c:111,1
    - Dst: pg_sha224_init
      Src: /src/postgres/src/common/cryptohash.c:114,1
    - Dst: pg_sha256_init
      Src: /src/postgres/src/common/cryptohash.c:117,1
    - Dst: pg_sha384_init
      Src: /src/postgres/src/common/cryptohash.c:120,1
    - Dst: pg_sha512_init
      Src: /src/postgres/src/common/cryptohash.c:123,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_cryptohash_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 128
    functionName: pg_cryptohash_init
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 4
    functionsReached:
    - pg_sha384_init
    - pg_md5_init
    - pg_sha256_init
    - pg_sha1_init
    - pg_sha512_init
    - pg_sha224_init
    linkageType: ''
    returnType: int
    signature: int pg_cryptohash_init(pg_cryptohash_ctx *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_md5_update
      Src: /src/postgres/src/common/cryptohash.c:144,1
    - Dst: pg_sha1_update
      Src: /src/postgres/src/common/cryptohash.c:147,1
    - Dst: pg_sha224_update
      Src: /src/postgres/src/common/cryptohash.c:150,1
    - Dst: pg_sha256_update
      Src: /src/postgres/src/common/cryptohash.c:153,1
    - Dst: pg_sha384_update
      Src: /src/postgres/src/common/cryptohash.c:156,1
    - Dst: pg_sha512_update
      Src: /src/postgres/src/common/cryptohash.c:159,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - data
    - len
    argTypes:
    - pg_cryptohash_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 164
    functionName: pg_cryptohash_update
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 4
    functionsReached:
    - pg_sha1_update
    - pg_md5_update
    - pg_sha512_update
    - pg_sha256_update
    - pg_sha224_update
    - pg_sha384_update
    linkageType: ''
    returnType: int
    signature: int pg_cryptohash_update(pg_cryptohash_ctx *ctx, const uint8 *data,
      size_t len)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pg_md5_final
      Src: /src/postgres/src/common/cryptohash.c:185,1
    - Dst: pg_sha1_final
      Src: /src/postgres/src/common/cryptohash.c:193,1
    - Dst: pg_sha224_final
      Src: /src/postgres/src/common/cryptohash.c:201,1
    - Dst: pg_sha256_final
      Src: /src/postgres/src/common/cryptohash.c:209,1
    - Dst: pg_sha384_final
      Src: /src/postgres/src/common/cryptohash.c:217,1
    - Dst: pg_sha512_final
      Src: /src/postgres/src/common/cryptohash.c:225,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 3
    argNames:
    - ctx
    - dest
    - len
    argTypes:
    - pg_cryptohash_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 230
    functionName: pg_cryptohash_final
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 4
    functionsReached:
    - pg_sha1_final
    - pg_sha384_final
    - pg_sha512_final
    - pg_md5_final
    - pg_sha224_final
    - pg_sha256_final
    linkageType: ''
    returnType: int
    signature: int pg_cryptohash_final(pg_cryptohash_ctx *ctx, uint8 *dest, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: explicit_bzero
      Src: /src/postgres/src/common/cryptohash.c:243,1
    - Dst: FREE
      Src: /src/postgres/src/common/cryptohash.c:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_cryptohash_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 245
    functionName: pg_cryptohash_free
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 5
    functionsReached:
    - FREE
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void pg_cryptohash_free(pg_cryptohash_ctx *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/common/cryptohash.c:261,1
    - Dst: _
      Src: /src/postgres/src/common/cryptohash.c:266,1
    - Dst: _
      Src: /src/postgres/src/common/cryptohash.c:268,1
    - Dst: Assert
      Src: /src/postgres/src/common/cryptohash.c:271,1
    - Dst: _
      Src: /src/postgres/src/common/cryptohash.c:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_cryptohash_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 273
    functionName: pg_cryptohash_error
    functionSourceFile: /src/postgres/src/common/cryptohash.c
    functionUses: 3
    functionsReached:
    - Assert
    - _
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_cryptohash_error(pg_cryptohash_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - len
    - ','
    - need
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: MB2CHAR_NEED_AT_LEAST
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MB2CHAR_NEED_AT_LEAST(len, need)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 85
    functionName: pg_ascii2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_ascii2wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: pg_ascii_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_ascii_mblen(const unsigned char *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 102
    functionName: pg_ascii_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_ascii_dsplen(const unsigned char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:116,1
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:123,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:129,1
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:131,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 146
    functionName: pg_euc2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - MB2CHAR_NEED_AT_LEAST
    linkageType: ''
    returnType: int
    signature: int pg_euc2wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 162
    functionName: pg_euc_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_euc_mblen(const unsigned char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:173,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: pg_euc_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_euc_dsplen(const unsigned char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_euc2wchar_with_len
      Src: /src/postgres/src/common/wchar.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 187
    functionName: pg_eucjp2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_euc2wchar_with_len
    linkageType: ''
    returnType: int
    signature: int pg_eucjp2wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_euc_mblen
      Src: /src/postgres/src/common/wchar.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: pg_eucjp_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_euc_mblen
    linkageType: ''
    returnType: int
    signature: int pg_eucjp_mblen(const unsigned char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:204,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 209
    functionName: pg_eucjp_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_eucjp_dsplen(const unsigned char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_euc2wchar_with_len
      Src: /src/postgres/src/common/wchar.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: pg_euckr2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_euc2wchar_with_len
    linkageType: ''
    returnType: int
    signature: int pg_euckr2wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_euc_mblen
      Src: /src/postgres/src/common/wchar.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 224
    functionName: pg_euckr_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_euc_mblen
    linkageType: ''
    returnType: int
    signature: int pg_euckr_mblen(const unsigned char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_euc_dsplen
      Src: /src/postgres/src/common/wchar.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 230
    functionName: pg_euckr_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_euc_dsplen
    linkageType: ''
    returnType: int
    signature: int pg_euckr_dsplen(const unsigned char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:245,1
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:253,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:259,1
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:261,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 276
    functionName: pg_euccn2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - MB2CHAR_NEED_AT_LEAST
    linkageType: ''
    returnType: int
    signature: int pg_euccn2wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:293,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 298
    functionName: pg_euccn_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_euccn_mblen(const unsigned char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:305,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 310
    functionName: pg_euccn_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_euccn_dsplen(const unsigned char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:325,1
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:334,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:340,1
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 357
    functionName: pg_euctw2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - MB2CHAR_NEED_AT_LEAST
    linkageType: ''
    returnType: int
    signature: int pg_euctw2wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:368,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 373
    functionName: pg_euctw_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_euctw_mblen(const unsigned char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:384,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:387,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 389
    functionName: pg_euctw_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_euctw_dsplen(const unsigned char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - pg_wchar*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 437
    functionName: pg_wchar2euc_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_wchar2euc_with_len(const pg_wchar *from, unsigned char *to,
      int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_euc_mblen
      Src: /src/postgres/src/common/wchar.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 443
    functionDepth: 2
    functionLinenumber: 443
    functionLinenumberEnd: 447
    functionName: pg_johab_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_euc_mblen
    linkageType: ''
    returnType: int
    signature: int pg_johab_mblen(const unsigned char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_euc_dsplen
      Src: /src/postgres/src/common/wchar.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 2
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: pg_johab_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_euc_dsplen
    linkageType: ''
    returnType: int
    signature: int pg_johab_dsplen(const unsigned char *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:479,1
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:487,1
    - Dst: MB2CHAR_NEED_AT_LEAST
      Src: /src/postgres/src/common/wchar.c:496,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 515
    functionName: pg_utf2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - MB2CHAR_NEED_AT_LEAST
    linkageType: ''
    returnType: int
    signature: int pg_utf2wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/wchar.c:533,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/wchar.c:534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - pg_wchar*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 542
    functionName: pg_wchar2utf_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_utf_mblen
    - unicode_to_utf8
    linkageType: ''
    returnType: int
    signature: int pg_wchar2utf_with_len(const pg_wchar *from, unsigned char *to,
      int len)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 577
    functionName: pg_utf_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_utf_mblen(const unsigned char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - ucs
    - table
    - max
    argTypes:
    - pg_wchar
    - struct mbinterval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 618
    functionName: mbbisearch
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mbbisearch(pg_wchar ucs, const struct mbinterval *table, int max)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mbbisearch
      Src: /src/postgres/src/common/wchar.c:668,1
    - Dst: mbbisearch
      Src: /src/postgres/src/common/wchar.c:673,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 1
    argNames:
    - ucs
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 678
    functionName: ucs_wcwidth
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - mbbisearch
    linkageType: ''
    returnType: int
    signature: int ucs_wcwidth(pg_wchar ucs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ucs_wcwidth
      Src: /src/postgres/src/common/wchar.c:683,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/wchar.c:683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 680
    functionDepth: 2
    functionLinenumber: 680
    functionLinenumberEnd: 684
    functionName: pg_utf_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - ucs_wcwidth
    - utf8_to_unicode
    linkageType: ''
    returnType: int
    signature: int pg_utf_dsplen(const unsigned char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 702
    functionName: pg_latin12wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_latin12wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - pg_wchar*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 724
    functionName: pg_wchar2single_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_wchar2single_with_len(const pg_wchar *from, unsigned char *to,
      int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 730
    functionName: pg_latin1_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_latin1_mblen(const unsigned char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 736
    functionName: pg_latin1_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    linkageType: ''
    returnType: int
    signature: int pg_latin1_dsplen(const unsigned char *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:748,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 753
    functionName: pg_sjis_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 1
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_sjis_mblen(const unsigned char *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:762,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:765,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 755
    functionDepth: 1
    functionLinenumber: 755
    functionLinenumberEnd: 767
    functionName: pg_sjis_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_sjis_dsplen(const unsigned char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 782
    functionName: pg_big5_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_big5_mblen(const unsigned char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:789,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:792,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 794
    functionName: pg_big5_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_big5_dsplen(const unsigned char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:804,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 809
    functionName: pg_gbk_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_gbk_mblen(const unsigned char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:816,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 821
    functionName: pg_gbk_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_gbk_dsplen(const unsigned char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 836
    functionName: pg_uhc_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_uhc_mblen(const unsigned char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:843,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:846,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 848
    functionName: pg_uhc_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_uhc_dsplen(const unsigned char *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:870,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 877
    functionName: pg_gb18030_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_gb18030_mblen(const unsigned char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:884,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:887,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 879
    functionDepth: 1
    functionLinenumber: 879
    functionLinenumberEnd: 889
    functionName: pg_gb18030_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_ascii_dsplen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_gb18030_dsplen(const unsigned char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 913
    functionDepth: 0
    functionLinenumber: 913
    functionLinenumberEnd: 917
    functionName: pg_ascii_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_ascii_verifychar(const unsigned char *s, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/postgres/src/common/wchar.c:922,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 919
    functionDepth: 0
    functionLinenumber: 919
    functionLinenumberEnd: 928
    functionName: pg_ascii_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - memchr
    linkageType: ''
    returnType: int
    signature: int pg_ascii_verifystr(const unsigned char *s, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 931
    functionName: IS_EUC_RANGE_VALID
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EUC_RANGE_VALID(c)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:957,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:960,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:965,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:970,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:973,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 985
    functionName: pg_eucjp_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_EUC_RANGE_VALID
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_eucjp_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:997,1
    - Dst: pg_eucjp_verifychar
      Src: /src/postgres/src/common/wchar.c:1005,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 987
    functionDepth: 2
    functionLinenumber: 987
    functionLinenumberEnd: 1014
    functionName: pg_eucjp_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_eucjp_verifychar
    linkageType: ''
    returnType: int
    signature: int pg_eucjp_verifystr(const unsigned char *s, int len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1025,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1030,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1033,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1016
    functionDepth: 1
    functionLinenumber: 1016
    functionLinenumberEnd: 1043
    functionName: pg_euckr_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_EUC_RANGE_VALID
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_euckr_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1055,1
    - Dst: pg_euckr_verifychar
      Src: /src/postgres/src/common/wchar.c:1063,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1045
    functionDepth: 2
    functionLinenumber: 1045
    functionLinenumberEnd: 1072
    functionName: pg_euckr_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_euckr_verifychar
    linkageType: ''
    returnType: int
    signature: int pg_euckr_verifystr(const unsigned char *s, int len)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1097,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1100,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1108,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1115,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1078
    functionDepth: 1
    functionLinenumber: 1078
    functionLinenumberEnd: 1126
    functionName: pg_euctw_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_EUC_RANGE_VALID
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_euctw_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1138,1
    - Dst: pg_euctw_verifychar
      Src: /src/postgres/src/common/wchar.c:1146,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1128
    functionDepth: 2
    functionLinenumber: 1128
    functionLinenumberEnd: 1155
    functionName: pg_euctw_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_euctw_verifychar
    linkageType: ''
    returnType: int
    signature: int pg_euctw_verifystr(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_johab_mblen
      Src: /src/postgres/src/common/wchar.c:1164,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1169,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1157
    functionDepth: 3
    functionLinenumber: 1157
    functionLinenumberEnd: 1179
    functionName: pg_johab_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_EUC_RANGE_VALID
    - IS_HIGHBIT_SET
    - pg_johab_mblen
    linkageType: ''
    returnType: int
    signature: int pg_johab_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1191,1
    - Dst: pg_johab_verifychar
      Src: /src/postgres/src/common/wchar.c:1199,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1181
    functionDepth: 4
    functionLinenumber: 1181
    functionLinenumberEnd: 1208
    functionName: pg_johab_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_johab_verifychar
    linkageType: ''
    returnType: int
    signature: int pg_johab_verifystr(const unsigned char *s, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1210
    functionDepth: 0
    functionLinenumber: 1210
    functionLinenumberEnd: 1214
    functionName: pg_latin1_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_latin1_verifychar(const unsigned char *s, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/postgres/src/common/wchar.c:1219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1216
    functionDepth: 0
    functionLinenumber: 1216
    functionLinenumberEnd: 1225
    functionName: pg_latin1_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - memchr
    linkageType: ''
    returnType: int
    signature: int pg_latin1_verifystr(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_sjis_mblen
      Src: /src/postgres/src/common/wchar.c:1235,1
    - Dst: ISSJISHEAD
      Src: /src/postgres/src/common/wchar.c:1245,1
    - Dst: ISSJISTAIL
      Src: /src/postgres/src/common/wchar.c:1245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1227
    functionDepth: 1
    functionLinenumber: 1227
    functionLinenumberEnd: 1248
    functionName: pg_sjis_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_sjis_mblen
    - ISSJISTAIL
    - ISSJISHEAD
    linkageType: ''
    returnType: int
    signature: int pg_sjis_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1260,1
    - Dst: pg_sjis_verifychar
      Src: /src/postgres/src/common/wchar.c:1268,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1250
    functionDepth: 2
    functionLinenumber: 1250
    functionLinenumberEnd: 1277
    functionName: pg_sjis_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_sjis_verifychar
    linkageType: ''
    returnType: int
    signature: int pg_sjis_verifystr(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_big5_mblen
      Src: /src/postgres/src/common/wchar.c:1285,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1279
    functionDepth: 2
    functionLinenumber: 1279
    functionLinenumberEnd: 1302
    functionName: pg_big5_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_big5_mblen
    linkageType: ''
    returnType: int
    signature: int pg_big5_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1314,1
    - Dst: pg_big5_verifychar
      Src: /src/postgres/src/common/wchar.c:1322,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1304
    functionDepth: 3
    functionLinenumber: 1304
    functionLinenumberEnd: 1331
    functionName: pg_big5_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_big5_verifychar
    linkageType: ''
    returnType: int
    signature: int pg_big5_verifystr(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_gbk_mblen
      Src: /src/postgres/src/common/wchar.c:1339,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1333
    functionDepth: 2
    functionLinenumber: 1333
    functionLinenumberEnd: 1356
    functionName: pg_gbk_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_gbk_mblen
    linkageType: ''
    returnType: int
    signature: int pg_gbk_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1368,1
    - Dst: pg_gbk_verifychar
      Src: /src/postgres/src/common/wchar.c:1376,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1358
    functionDepth: 3
    functionLinenumber: 1358
    functionLinenumberEnd: 1385
    functionName: pg_gbk_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_gbk_verifychar
    linkageType: ''
    returnType: int
    signature: int pg_gbk_verifystr(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_uhc_mblen
      Src: /src/postgres/src/common/wchar.c:1393,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1387
    functionDepth: 2
    functionLinenumber: 1387
    functionLinenumberEnd: 1410
    functionName: pg_uhc_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_uhc_mblen
    linkageType: ''
    returnType: int
    signature: int pg_uhc_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1422,1
    - Dst: pg_uhc_verifychar
      Src: /src/postgres/src/common/wchar.c:1430,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1412
    functionDepth: 3
    functionLinenumber: 1412
    functionLinenumberEnd: 1439
    functionName: pg_uhc_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_uhc_verifychar
    linkageType: ''
    returnType: int
    signature: int pg_uhc_verifystr(const unsigned char *s, int len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1446,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1441
    functionDepth: 1
    functionLinenumber: 1441
    functionLinenumberEnd: 1470
    functionName: pg_gb18030_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_gb18030_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1482,1
    - Dst: pg_gb18030_verifychar
      Src: /src/postgres/src/common/wchar.c:1490,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1472
    functionDepth: 2
    functionLinenumber: 1472
    functionLinenumberEnd: 1499
    functionName: pg_gb18030_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_gb18030_verifychar
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_gb18030_verifystr(const unsigned char *s, int len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_utf8_islegal
      Src: /src/postgres/src/common/wchar.c:1524,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1501
    functionDepth: 1
    functionLinenumber: 1501
    functionLinenumberEnd: 1528
    functionName: pg_utf8_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_utf8_islegal
    linkageType: ''
    returnType: int
    signature: int pg_utf8_verifychar(const unsigned char *s, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - s
    - state
    - len
    argTypes:
    - unsigned char*
    - uint32*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1673
    functionDepth: 0
    functionLinenumber: 1673
    functionLinenumberEnd: 1689
    functionName: utf8_advance
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void utf8_advance(const unsigned char *s, uint32 *state, int len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_valid_ascii
      Src: /src/postgres/src/common/wchar.c:1714,1
    - Dst: utf8_advance
      Src: /src/postgres/src/common/wchar.c:1715,1
    - Dst: Assert
      Src: /src/postgres/src/common/wchar.c:1742,1
    - Dst: Assert
      Src: /src/postgres/src/common/wchar.c:1745,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1745,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/wchar.c:1746,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1756,1
    - Dst: pg_utf8_verifychar
      Src: /src/postgres/src/common/wchar.c:1764,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1691
    functionDepth: 4
    functionLinenumber: 1691
    functionLinenumberEnd: 1773
    functionName: pg_utf8_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - is_valid_ascii
    - IS_HIGHBIT_SET
    - Assert
    - pg_utf_mblen
    - pg_utf8_verifychar
    - utf8_advance
    linkageType: ''
    returnType: int
    signature: int pg_utf8_verifystr(const unsigned char *s, int len)
  - BBCount: 20
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 48
    argCount: 2
    argNames:
    - source
    - length
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1789
    functionDepth: 0
    functionLinenumber: 1789
    functionLinenumberEnd: 1844
    functionName: pg_utf8_islegal
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pg_utf8_islegal(const unsigned char *source, int length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/wchar.c:1854,1
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/common/wchar.c:1854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - encoding
    - dst
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1858
      start: 1851
    functionDepth: 1
    functionLinenumber: 1851
    functionLinenumberEnd: 1858
    functionName: pg_encoding_set_invalid
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 3
    functionsReached:
    - Assert
    - pg_encoding_max_length
    linkageType: ''
    returnType: void
    signature: void pg_encoding_set_invalid(int encoding, char *dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/common/wchar.c:1937,1
    - Dst: mblen
      Src: /src/postgres/src/common/wchar.c:1938,1
    - Dst: mblen
      Src: /src/postgres/src/common/wchar.c:1939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - encoding
    - mbstr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1940
      start: 1934
    functionDepth: 1
    functionLinenumber: 1934
    functionLinenumberEnd: 1940
    functionName: pg_encoding_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 3
    functionsReached:
    - PG_VALID_ENCODING
    - mblen
    linkageType: ''
    returnType: int
    signature: int pg_encoding_mblen(int encoding, const char *mbstr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1956,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/common/wchar.c:1958,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - encoding
    - mbstr
    - remaining
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1946
    functionDepth: 2
    functionLinenumber: 1946
    functionLinenumberEnd: 1959
    functionName: pg_encoding_mblen_or_incomplete
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_encoding_mblen
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: "int pg_encoding_mblen_or_incomplete(int encoding, const char *mbstr,\n\t\t\t\t\t\t\t\tsize_t
      remaining)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/postgres/src/common/wchar.c:1969,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/common/wchar.c:1969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - encoding
    - mbstr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1970
      start: 1966
    functionDepth: 2
    functionLinenumber: 1966
    functionLinenumberEnd: 1970
    functionName: pg_encoding_mblen_bounded
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_encoding_mblen
    - strnlen
    linkageType: ''
    returnType: int
    signature: int pg_encoding_mblen_bounded(int encoding, const char *mbstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/common/wchar.c:1978,1
    - Dst: dsplen
      Src: /src/postgres/src/common/wchar.c:1979,1
    - Dst: dsplen
      Src: /src/postgres/src/common/wchar.c:1980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - encoding
    - mbstr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1981
      start: 1975
    functionDepth: 1
    functionLinenumber: 1975
    functionLinenumberEnd: 1981
    functionName: pg_encoding_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - PG_VALID_ENCODING
    - dsplen
    linkageType: ''
    returnType: int
    signature: int pg_encoding_dsplen(int encoding, const char *mbstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/common/wchar.c:1991,1
    - Dst: mbverifychar
      Src: /src/postgres/src/common/wchar.c:1992,1
    - Dst: mbverifychar
      Src: /src/postgres/src/common/wchar.c:1993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - encoding
    - mbstr
    - len
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1988
    functionDepth: 1
    functionLinenumber: 1988
    functionLinenumberEnd: 1994
    functionName: pg_encoding_verifymbchar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 2
    functionsReached:
    - PG_VALID_ENCODING
    - mbverifychar
    linkageType: ''
    returnType: int
    signature: int pg_encoding_verifymbchar(int encoding, const char *mbstr, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/common/wchar.c:2004,1
    - Dst: mbverifystr
      Src: /src/postgres/src/common/wchar.c:2005,1
    - Dst: mbverifystr
      Src: /src/postgres/src/common/wchar.c:2006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - encoding
    - mbstr
    - len
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2007
      start: 2001
    functionDepth: 1
    functionLinenumber: 2001
    functionLinenumberEnd: 2007
    functionName: pg_encoding_verifymbstr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 4
    functionsReached:
    - PG_VALID_ENCODING
    - mbverifystr
    linkageType: ''
    returnType: int
    signature: int pg_encoding_verifymbstr(int encoding, const char *mbstr, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/wchar.c:2015,1
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/common/wchar.c:2015,1
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/common/wchar.c:2021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2012
    functionDepth: 1
    functionLinenumber: 2012
    functionLinenumberEnd: 2024
    functionName: pg_encoding_max_length
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 4
    functionsReached:
    - Assert
    - PG_VALID_ENCODING
    linkageType: ''
    returnType: int
    signature: int pg_encoding_max_length(int encoding)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ALLOC
      Src: /src/postgres/src/common/hmac.c:81,1
    - Dst: memset
      Src: /src/postgres/src/common/hmac.c:84,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/hmac.c:121,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/common/hmac.c:124,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac.c:125,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 1
    argNames:
    - type
    argTypes:
    - pg_cryptohash_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 130
    functionName: pg_hmac_create
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 3
    functionsReached:
    - ALLOC
    - pg_cryptohash_create
    - explicit_bzero
    - FREE
    - memset
    linkageType: ''
    returnType: pg_hmac_ctx
    signature: 'pg_hmac_ctx *

      pg_hmac_create(pg_cryptohash_type type)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/common/hmac.c:151,1
    - Dst: memset
      Src: /src/postgres/src/common/hmac.c:152,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/hmac.c:163,1
    - Dst: memset
      Src: /src/postgres/src/common/hmac.c:169,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/hmac.c:171,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac.c:175,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/hmac.c:179,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/hmac.c:180,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/hmac.c:181,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/hmac.c:184,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/hmac.c:185,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac.c:186,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/hmac.c:192,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/hmac.c:202,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/hmac.c:203,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/hmac.c:206,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac.c:208,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac.c:213,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 3
    argNames:
    - ctx
    - key
    - len
    argTypes:
    - pg_hmac_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 215
    functionName: pg_hmac_init
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 3
    functionsReached:
    - ALLOC
    - pg_cryptohash_update
    - pg_cryptohash_final
    - pg_cryptohash_create
    - pg_cryptohash_error
    - FREE
    - memset
    - pg_cryptohash_free
    - pg_cryptohash_init
    linkageType: ''
    returnType: int
    signature: int pg_hmac_init(pg_hmac_ctx *ctx, const uint8 *key, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/hmac.c:228,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/hmac.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - data
    - len
    argTypes:
    - pg_hmac_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 236
    functionName: pg_hmac_update
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 3
    functionsReached:
    - pg_cryptohash_update
    - pg_cryptohash_error
    linkageType: ''
    returnType: int
    signature: int pg_hmac_update(pg_hmac_ctx *ctx, const uint8 *data, size_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALLOC
      Src: /src/postgres/src/common/hmac.c:251,1
    - Dst: memset
      Src: /src/postgres/src/common/hmac.c:257,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/hmac.c:259,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/hmac.c:262,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac.c:263,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/hmac.c:268,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/hmac.c:269,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/hmac.c:270,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/hmac.c:271,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/common/hmac.c:274,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac.c:275,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac.c:279,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - dest
    - len
    argTypes:
    - pg_hmac_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 281
    functionName: pg_hmac_final
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 3
    functionsReached:
    - ALLOC
    - pg_cryptohash_update
    - pg_cryptohash_final
    - pg_cryptohash_error
    - FREE
    - memset
    - pg_cryptohash_init
    linkageType: ''
    returnType: int
    signature: int pg_hmac_final(pg_hmac_ctx *ctx, uint8 *dest, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/hmac.c:294,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/common/hmac.c:295,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_hmac_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 297
    functionName: pg_hmac_free
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 3
    functionsReached:
    - pg_cryptohash_free
    - FREE
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void pg_hmac_free(pg_hmac_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/common/hmac.c:309,1
    - Dst: _
      Src: /src/postgres/src/common/hmac.c:321,1
    - Dst: _
      Src: /src/postgres/src/common/hmac.c:323,1
    - Dst: _
      Src: /src/postgres/src/common/hmac.c:325,1
    - Dst: Assert
      Src: /src/postgres/src/common/hmac.c:328,1
    - Dst: _
      Src: /src/postgres/src/common/hmac.c:329,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_hmac_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 330
    functionName: pg_hmac_error
    functionSourceFile: /src/postgres/src/common/hmac.c
    functionUses: 3
    functionsReached:
    - Assert
    - _
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_hmac_error(pg_hmac_ctx *ctx)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GetStdHandle
      Src: /src/postgres/src/common/logging.c:59,1
    - Dst: GetConsoleMode
      Src: /src/postgres/src/common/logging.c:69,1
    - Dst: SetConsoleMode
      Src: /src/postgres/src/common/logging.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 78
    functionName: enable_vt_processing
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 0
    functionsReached:
    - GetConsoleMode
    - SetConsoleMode
    - GetStdHandle
    linkageType: ''
    returnType: bool
    signature: bool enable_vt_processing(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/common/logging.c:87,1
    - Dst: isatty
      Src: /src/postgres/src/common/logging.c:89,1
    - Dst: fileno
      Src: /src/postgres/src/common/logging.c:89,1
    - Dst: enable_vt_processing
      Src: /src/postgres/src/common/logging.c:98,1
    - Dst: setvbuf
      Src: /src/postgres/src/common/logging.c:102,1
    - Dst: get_progname
      Src: /src/postgres/src/common/logging.c:104,1
    - Dst: strcmp
      Src: /src/postgres/src/common/logging.c:109,1
    - Dst: strcmp
      Src: /src/postgres/src/common/logging.c:110,1
    - Dst: getenv
      Src: /src/postgres/src/common/logging.c:116,1
    - Dst: strdup
      Src: /src/postgres/src/common/logging.c:120,1
    - Dst: strsep
      Src: /src/postgres/src/common/logging.c:127,1
    - Dst: strchr
      Src: /src/postgres/src/common/logging.c:129,1
    - Dst: strcmp
      Src: /src/postgres/src/common/logging.c:140,1
    - Dst: strdup
      Src: /src/postgres/src/common/logging.c:141,1
    - Dst: strcmp
      Src: /src/postgres/src/common/logging.c:142,1
    - Dst: strdup
      Src: /src/postgres/src/common/logging.c:143,1
    - Dst: strcmp
      Src: /src/postgres/src/common/logging.c:144,1
    - Dst: strdup
      Src: /src/postgres/src/common/logging.c:145,1
    - Dst: strcmp
      Src: /src/postgres/src/common/logging.c:146,1
    - Dst: strdup
      Src: /src/postgres/src/common/logging.c:147,1
    - Dst: free
      Src: /src/postgres/src/common/logging.c:151,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 162
    functionName: pg_logging_init
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 35
    functionsReached:
    - enable_vt_processing
    - strsep
    - get_progname
    - strcmp
    - strchr
    - isatty
    - getenv
    - free
    - strdup
    - setvbuf
    - fileno
    linkageType: ''
    returnType: void
    signature: void pg_logging_init(const char *argv0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - new_flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: pg_logging_config
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_logging_config(int new_flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - new_level
    argTypes:
    - enum pg_log_level
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: pg_logging_set_level
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_logging_set_level(enum pg_log_level new_level)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 195
    functionName: pg_logging_increase_verbosity
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_logging_increase_verbosity(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 201
    functionName: pg_logging_set_pre_callback
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_logging_set_pre_callback(void (*cb) (void))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 207
    functionName: pg_logging_set_locus_callback
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_logging_set_locus_callback(void (*cb) (const char **filename,
      uint64 *lineno))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - logfile
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: pg_logging_set_logfile
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_logging_set_logfile(FILE *logfile)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 219
    functionName: pg_logging_unset_logfile
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_logging_unset_logfile(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/common/logging.c:227,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/common/logging.c:228,1
    - Dst: va_end
      Src: /src/postgres/src/common/logging.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - level
    - part
    - pg_restrict
    argTypes:
    - enum pg_log_level
    - enum pg_log_part
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 230
    functionName: pg_log_generic
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - pg_log_generic_v
    linkageType: ''
    returnType: void
    signature: "void pg_log_generic(enum pg_log_level level, enum pg_log_part part,\n\t\t\t
      \  const char *pg_restrict fmt, ...)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/logging.c:243,1
    - Dst: Assert
      Src: /src/postgres/src/common/logging.c:244,1
    - Dst: Assert
      Src: /src/postgres/src/common/logging.c:245,1
    - Dst: Assert
      Src: /src/postgres/src/common/logging.c:246,1
    - Dst: strlen
      Src: /src/postgres/src/common/logging.c:246,1
    - Dst: fflush
      Src: /src/postgres/src/common/logging.c:256,1
    - Dst: log_pre_callback
      Src: /src/postgres/src/common/logging.c:259,1
    - Dst: log_locus_callback
      Src: /src/postgres/src/common/logging.c:262,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:264,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:269,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:271,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:274,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:276,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:278,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:280,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:292,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:293,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:293,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:295,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:295,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:297,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:301,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:302,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:302,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:304,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:304,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:306,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:314,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:315,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:315,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:317,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:317,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:319,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:323,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:324,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:324,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:326,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:326,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:328,1
    - Dst: va_copy
      Src: /src/postgres/src/common/logging.c:335,1
    - Dst: vsnprintf
      Src: /src/postgres/src/common/logging.c:336,1
    - Dst: va_end
      Src: /src/postgres/src/common/logging.c:337,1
    - Dst: pg_malloc_extended
      Src: /src/postgres/src/common/logging.c:339,1
    - Dst: vfprintf
      Src: /src/postgres/src/common/logging.c:346,1
    - Dst: vsnprintf
      Src: /src/postgres/src/common/logging.c:350,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:356,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:359,1
    - Dst: fflush
      Src: /src/postgres/src/common/logging.c:360,1
    - Dst: pg_free
      Src: /src/postgres/src/common/logging.c:363,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 92
    argCount: 4
    argNames:
    - level
    - part
    - pg_restrict
    - ap
    argTypes:
    - enum pg_log_level
    - enum pg_log_part
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 232
    functionDepth: 3
    functionLinenumber: 232
    functionLinenumberEnd: 364
    functionName: pg_log_generic_v
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 7
    functionsReached:
    - va_end
    - vfprintf
    - _
    - pg_free
    - Assert
    - log_locus_callback
    - strlen
    - fflush
    - pg_malloc_extended
    - va_copy
    - vsnprintf
    - log_pre_callback
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void pg_log_generic_v(enum pg_log_level level, enum pg_log_part part,\n\t\t\t\t
      const char *pg_restrict fmt, va_list ap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/common/hmac_openssl.c:88,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/common/hmac_openssl.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - ctx
    argTypes:
    - ResourceOwner
    - pg_hmac_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: ResourceOwnerRememberHMAC
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerRemember
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerRememberHMAC(ResourceOwner owner, pg_hmac_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerForget
      Src: /src/postgres/src/common/hmac_openssl.c:93,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/common/hmac_openssl.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - ctx
    argTypes:
    - ResourceOwner
    - pg_hmac_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: ResourceOwnerForgetHMAC
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerForget
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerForgetHMAC(ResourceOwner owner, pg_hmac_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERR_reason_error_string
      Src: /src/postgres/src/common/hmac_openssl.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ecode
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 108
    functionName: SSLerrmessage
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 0
    functionsReached:
    - ERR_reason_error_string
    linkageType: ''
    returnType: char
    signature: 'char *

      SSLerrmessage(unsigned long ecode)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALLOC
      Src: /src/postgres/src/common/hmac_openssl.c:121,1
    - Dst: memset
      Src: /src/postgres/src/common/hmac_openssl.c:124,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/common/hmac_openssl.c:136,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/common/hmac_openssl.c:139,1
    - Dst: HMAC_CTX_new
      Src: /src/postgres/src/common/hmac_openssl.c:142,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/common/hmac_openssl.c:146,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac_openssl.c:147,1
    - Dst: ereport
      Src: /src/postgres/src/common/hmac_openssl.c:149,1
    - Dst: errcode
      Src: /src/postgres/src/common/hmac_openssl.c:150,1
    - Dst: errmsg
      Src: /src/postgres/src/common/hmac_openssl.c:151,1
    - Dst: ResourceOwnerRememberHMAC
      Src: /src/postgres/src/common/hmac_openssl.c:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - type
    argTypes:
    - pg_cryptohash_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 163
    functionName: pg_hmac_create
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 3
    functionsReached:
    - ALLOC
    - ResourceOwnerEnlarge
    - explicit_bzero
    - ResourceOwnerRememberHMAC
    - errcode
    - FREE
    - ereport
    - ERR_clear_error
    - memset
    - errmsg
    - HMAC_CTX_new
    linkageType: ''
    returnType: pg_hmac_ctx
    signature: 'pg_hmac_ctx *

      pg_hmac_create(pg_cryptohash_type type)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: HMAC_Init_ex
      Src: /src/postgres/src/common/hmac_openssl.c:181,1
    - Dst: EVP_md5
      Src: /src/postgres/src/common/hmac_openssl.c:181,1
    - Dst: HMAC_Init_ex
      Src: /src/postgres/src/common/hmac_openssl.c:184,1
    - Dst: EVP_sha1
      Src: /src/postgres/src/common/hmac_openssl.c:184,1
    - Dst: HMAC_Init_ex
      Src: /src/postgres/src/common/hmac_openssl.c:187,1
    - Dst: EVP_sha224
      Src: /src/postgres/src/common/hmac_openssl.c:187,1
    - Dst: HMAC_Init_ex
      Src: /src/postgres/src/common/hmac_openssl.c:190,1
    - Dst: EVP_sha256
      Src: /src/postgres/src/common/hmac_openssl.c:190,1
    - Dst: HMAC_Init_ex
      Src: /src/postgres/src/common/hmac_openssl.c:193,1
    - Dst: EVP_sha384
      Src: /src/postgres/src/common/hmac_openssl.c:193,1
    - Dst: HMAC_Init_ex
      Src: /src/postgres/src/common/hmac_openssl.c:196,1
    - Dst: EVP_sha512
      Src: /src/postgres/src/common/hmac_openssl.c:196,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/common/hmac_openssl.c:203,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/common/hmac_openssl.c:203,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - key
    - len
    argTypes:
    - pg_hmac_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 209
    functionName: pg_hmac_init
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 3
    functionsReached:
    - EVP_md5
    - HMAC_Init_ex
    - EVP_sha1
    - SSLerrmessage
    - EVP_sha256
    - EVP_sha384
    - EVP_sha512
    - ERR_get_error
    - EVP_sha224
    linkageType: ''
    returnType: int
    signature: int pg_hmac_init(pg_hmac_ctx *ctx, const uint8 *key, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HMAC_Update
      Src: /src/postgres/src/common/hmac_openssl.c:224,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/common/hmac_openssl.c:229,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/common/hmac_openssl.c:229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - data
    - len
    argTypes:
    - pg_hmac_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 234
    functionName: pg_hmac_update
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 3
    functionsReached:
    - HMAC_Update
    - SSLerrmessage
    - ERR_get_error
    linkageType: ''
    returnType: int
    signature: int pg_hmac_update(pg_hmac_ctx *ctx, const uint8 *data, size_t len)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: HMAC_Final
      Src: /src/postgres/src/common/hmac_openssl.c:296,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/common/hmac_openssl.c:301,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/common/hmac_openssl.c:301,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 3
    argNames:
    - ctx
    - dest
    - len
    argTypes:
    - pg_hmac_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 306
    functionName: pg_hmac_final
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 3
    functionsReached:
    - SSLerrmessage
    - ERR_get_error
    - HMAC_Final
    linkageType: ''
    returnType: int
    signature: int pg_hmac_final(pg_hmac_ctx *ctx, uint8 *dest, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HMAC_CTX_free
      Src: /src/postgres/src/common/hmac_openssl.c:319,1
    - Dst: ResourceOwnerForgetHMAC
      Src: /src/postgres/src/common/hmac_openssl.c:322,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/common/hmac_openssl.c:325,1
    - Dst: FREE
      Src: /src/postgres/src/common/hmac_openssl.c:326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_hmac_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 327
    functionName: pg_hmac_free
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 3
    functionsReached:
    - ResourceOwnerForgetHMAC
    - FREE
    - explicit_bzero
    - HMAC_CTX_free
    linkageType: ''
    returnType: void
    signature: void pg_hmac_free(pg_hmac_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/common/hmac_openssl.c:339,1
    - Dst: _
      Src: /src/postgres/src/common/hmac_openssl.c:351,1
    - Dst: _
      Src: /src/postgres/src/common/hmac_openssl.c:353,1
    - Dst: _
      Src: /src/postgres/src/common/hmac_openssl.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/common/hmac_openssl.c:358,1
    - Dst: _
      Src: /src/postgres/src/common/hmac_openssl.c:359,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_hmac_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 360
    functionName: pg_hmac_error
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 3
    functionsReached:
    - Assert
    - _
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_hmac_error(pg_hmac_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/common/hmac_openssl.c:368,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/common/hmac_openssl.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 372
    functionName: ResOwnerReleaseHMAC
    functionSourceFile: /src/postgres/src/common/hmac_openssl.c
    functionUses: 0
    functionsReached:
    - pg_hmac_free
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ResOwnerReleaseHMAC(Datum res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/common/file_utils.c:65,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:69,1
    - Dst: syncfs
      Src: /src/postgres/src/common/file_utils.c:73,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:75,1
    - Dst: close
      Src: /src/postgres/src/common/file_utils.c:76,1
    - Dst: exit
      Src: /src/postgres/src/common/file_utils.c:77,1
    - Dst: close
      Src: /src/postgres/src/common/file_utils.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 81
    functionName: do_syncfs
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 0
    functionsReached:
    - syncfs
    - close
    - open
    - pg_log_error
    - exit
    linkageType: ''
    returnType: void
    signature: void do_syncfs(const char *path)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/common/file_utils.c:109,1
    - Dst: snprintf
      Src: /src/postgres/src/common/file_utils.c:111,1
    - Dst: lstat
      Src: /src/postgres/src/common/file_utils.c:122,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:123,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/common/file_utils.c:124,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:133,1
    - Dst: exit
      Src: /src/postgres/src/common/file_utils.c:135,1
    - Dst: do_syncfs
      Src: /src/postgres/src/common/file_utils.c:149,1
    - Dst: opendir
      Src: /src/postgres/src/common/file_utils.c:154,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:156,1
    - Dst: readdir
      Src: /src/postgres/src/common/file_utils.c:160,1
    - Dst: strcmp
      Src: /src/postgres/src/common/file_utils.c:164,1
    - Dst: strcmp
      Src: /src/postgres/src/common/file_utils.c:165,1
    - Dst: snprintf
      Src: /src/postgres/src/common/file_utils.c:168,1
    - Dst: do_syncfs
      Src: /src/postgres/src/common/file_utils.c:170,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:174,1
    - Dst: closedir
      Src: /src/postgres/src/common/file_utils.c:177,1
    - Dst: do_syncfs
      Src: /src/postgres/src/common/file_utils.c:183,1
    - Dst: psprintf
      Src: /src/postgres/src/common/file_utils.c:193,1
    - Dst: walkdir
      Src: /src/postgres/src/common/file_utils.c:200,1
    - Dst: walkdir
      Src: /src/postgres/src/common/file_utils.c:202,1
    - Dst: walkdir
      Src: /src/postgres/src/common/file_utils.c:204,1
    - Dst: walkdir
      Src: /src/postgres/src/common/file_utils.c:217,1
    - Dst: walkdir
      Src: /src/postgres/src/common/file_utils.c:219,1
    - Dst: walkdir
      Src: /src/postgres/src/common/file_utils.c:221,1
    - Dst: pfree
      Src: /src/postgres/src/common/file_utils.c:224,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 51
    argCount: 4
    argNames:
    - pg_data
    - serverVersion
    - sync_method
    - sync_data_files
    argTypes:
    - char*
    - int
    - DataDirSyncMethod
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 98
    functionDepth: 3
    functionLinenumber: 98
    functionLinenumberEnd: 228
    functionName: sync_pgdata
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 5
    functionsReached:
    - walkdir
    - strcmp
    - pfree
    - opendir
    - psprintf
    - readdir
    - closedir
    - S_ISLNK
    - pg_log_error
    - exit
    - do_syncfs
    - lstat
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void sync_pgdata(const char *pg_data,\n\t\t\tint serverVersion,\n\t\t\tDataDirSyncMethod
      sync_method,\n\t\t\tbool sync_data_files)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:243,1
    - Dst: exit
      Src: /src/postgres/src/common/file_utils.c:245,1
    - Dst: do_syncfs
      Src: /src/postgres/src/common/file_utils.c:251,1
    - Dst: walkdir
      Src: /src/postgres/src/common/file_utils.c:263,1
    - Dst: walkdir
      Src: /src/postgres/src/common/file_utils.c:266,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - dir
    - sync_method
    argTypes:
    - char*
    - DataDirSyncMethod
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 270
    functionName: sync_dir_recurse
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 2
    functionsReached:
    - walkdir
    - pg_log_error
    - exit
    - do_syncfs
    linkageType: ''
    returnType: void
    signature: void sync_dir_recurse(const char *dir, DataDirSyncMethod sync_method)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/common/file_utils.c:298,1
    - Dst: opendir
      Src: /src/postgres/src/common/file_utils.c:301,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:304,1
    - Dst: readdir
      Src: /src/postgres/src/common/file_utils.c:308,1
    - Dst: strcmp
      Src: /src/postgres/src/common/file_utils.c:312,1
    - Dst: strcmp
      Src: /src/postgres/src/common/file_utils.c:313,1
    - Dst: snprintf
      Src: /src/postgres/src/common/file_utils.c:316,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/common/file_utils.c:318,1
    - Dst: walkdir
      Src: /src/postgres/src/common/file_utils.c:324,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:338,1
    - Dst: closedir
      Src: /src/postgres/src/common/file_utils.c:340,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 3
    argNames:
    - path
    - process_symlinks
    - exclude_dir
    argTypes:
    - char*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 349
    functionName: walkdir
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 3
    functionsReached:
    - walkdir
    - strcmp
    - readdir
    - get_dirent_type
    - closedir
    - pg_log_error
    - opendir
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void walkdir(const char *path,\n\t\tint (*action) (const char *fname,
      bool isdir),\n\t\tbool process_symlinks,\n\t\tconst char *exclude_dir)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/common/file_utils.c:364,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:370,1
    - Dst: sync_file_range
      Src: /src/postgres/src/common/file_utils.c:380,1
    - Dst: posix_fadvise
      Src: /src/postgres/src/common/file_utils.c:382,1
    - Dst: close
      Src: /src/postgres/src/common/file_utils.c:387,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - fname
    - isdir
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 390
    functionName: pre_sync_fname
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 1
    functionsReached:
    - sync_file_range
    - close
    - open
    - pg_log_error
    - posix_fadvise
    linkageType: ''
    returnType: int
    signature: int pre_sync_fname(const char *fname, bool isdir)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/common/file_utils.c:423,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:428,1
    - Dst: fsync
      Src: /src/postgres/src/common/file_utils.c:432,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:440,1
    - Dst: close
      Src: /src/postgres/src/common/file_utils.c:441,1
    - Dst: exit
      Src: /src/postgres/src/common/file_utils.c:442,1
    - Dst: close
      Src: /src/postgres/src/common/file_utils.c:445,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - fname
    - isdir
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 447
    functionName: fsync_fname
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 8
    functionsReached:
    - fsync
    - close
    - open
    - pg_log_error
    - exit
    linkageType: ''
    returnType: int
    signature: int fsync_fname(const char *fname, bool isdir)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/common/file_utils.c:460,1
    - Dst: get_parent_directory
      Src: /src/postgres/src/common/file_utils.c:461,1
    - Dst: strlen
      Src: /src/postgres/src/common/file_utils.c:468,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/file_utils.c:469,1
    - Dst: fsync_fname
      Src: /src/postgres/src/common/file_utils.c:471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 475
    functionName: fsync_parent_path
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 3
    functionsReached:
    - fsync_fname
    - strlcpy
    - strlen
    - get_parent_directory
    linkageType: ''
    returnType: int
    signature: int fsync_parent_path(const char *fname)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fsync_fname
      Src: /src/postgres/src/common/file_utils.c:494,1
    - Dst: open
      Src: /src/postgres/src/common/file_utils.c:497,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:502,1
    - Dst: fsync
      Src: /src/postgres/src/common/file_utils.c:508,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:510,1
    - Dst: close
      Src: /src/postgres/src/common/file_utils.c:511,1
    - Dst: exit
      Src: /src/postgres/src/common/file_utils.c:512,1
    - Dst: close
      Src: /src/postgres/src/common/file_utils.c:514,1
    - Dst: rename
      Src: /src/postgres/src/common/file_utils.c:518,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/file_utils.c:520,1
    - Dst: fsync_fname
      Src: /src/postgres/src/common/file_utils.c:529,1
    - Dst: fsync_parent_path
      Src: /src/postgres/src/common/file_utils.c:532,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - oldfile
    - newfile
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 536
    functionName: durable_rename
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 3
    functionsReached:
    - rename
    - fsync_parent_path
    - fsync_fname
    - fsync
    - close
    - open
    - pg_log_error
    - exit
    linkageType: ''
    returnType: int
    signature: int durable_rename(const char *oldfile, const char *newfile)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/common/file_utils.c:580,1
    - Dst: lstat
      Src: /src/postgres/src/common/file_utils.c:582,1
    - Dst: pg_log_generic
      Src: /src/postgres/src/common/file_utils.c:588,1
    - Dst: ereport
      Src: /src/postgres/src/common/file_utils.c:590,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/file_utils.c:591,1
    - Dst: errmsg
      Src: /src/postgres/src/common/file_utils.c:592,1
    - Dst: S_ISREG
      Src: /src/postgres/src/common/file_utils.c:595,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/common/file_utils.c:597,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/common/file_utils.c:599,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 4
    argNames:
    - path
    - de
    - look_through_symlinks
    - elevel
    argTypes:
    - char*
    - struct dirent*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 604
    functionName: get_dirent_type
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 6
    functionsReached:
    - S_ISREG
    - lstat
    - ereport
    - stat
    - errmsg
    - S_ISLNK
    - S_ISDIR
    - errcode_for_file_access
    - pg_log_generic
    linkageType: ''
    returnType: PGFileType
    signature: "PGFileType get_dirent_type(const char *path,\n\t\t\t\tconst struct
      dirent *de,\n\t\t\t\tbool look_through_symlinks,\n\t\t\t\tint elevel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/file_utils.c:619,1
    - Dst: Assert
      Src: /src/postgres/src/common/file_utils.c:635,1
    - Dst: memmove
      Src: /src/postgres/src/common/file_utils.c:642,1
    - Dst: Assert
      Src: /src/postgres/src/common/file_utils.c:645,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - destination
    - source
    - iovcnt
    - transferred
    argTypes:
    - struct iovec*
    - struct iovec*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 650
    functionName: compute_remaining_iovec
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 0
    functionsReached:
    - Assert
    - memmove
    linkageType: ''
    returnType: int
    signature: "int compute_remaining_iovec(struct iovec *destination,\n\t\t\t\t\t\tconst
      struct iovec *source,\n\t\t\t\t\t\tint iovcnt,\n\t\t\t\t\t\tsize_t transferred)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_pwritev
      Src: /src/postgres/src/common/file_utils.c:675,1
    - Dst: Min
      Src: /src/postgres/src/common/file_utils.c:680,1
    - Dst: compute_remaining_iovec
      Src: /src/postgres/src/common/file_utils.c:692,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - fd
    - iov
    - iovcnt
    - offset
    argTypes:
    - int
    - struct iovec*
    - int
    - pgoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 658
    functionDepth: 4
    functionLinenumber: 658
    functionLinenumberEnd: 697
    functionName: pg_pwritev_with_retry
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 1
    functionsReached:
    - Min
    - compute_remaining_iovec
    - pg_pwritev
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_pwritev_with_retry(int fd, const struct iovec *iov, int
      iovcnt, pgoff_t offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unconstify
      Src: /src/postgres/src/common/file_utils.c:712,1
    - Dst: pg_pwritev_with_retry
      Src: /src/postgres/src/common/file_utils.c:738,1
    - Dst: Assert
      Src: /src/postgres/src/common/file_utils.c:747,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - fd
    - size
    - offset
    argTypes:
    - int
    - size_t
    - pgoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 708
    functionDepth: 5
    functionLinenumber: 708
    functionLinenumberEnd: 750
    functionName: pg_pwrite_zeros
    functionSourceFile: /src/postgres/src/common/file_utils.c
    functionUses: 2
    functionsReached:
    - Assert
    - unconstify
    - pg_pwritev_with_retry
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_pwrite_zeros(int fd, size_t size, pgoff_t offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/common/relpath.c:55,1
    - Dst: ereport
      Src: /src/postgres/src/common/relpath.c:59,1
    - Dst: errcode
      Src: /src/postgres/src/common/relpath.c:60,1
    - Dst: errmsg
      Src: /src/postgres/src/common/relpath.c:61,1
    - Dst: errhint
      Src: /src/postgres/src/common/relpath.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - forkName
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 67
    functionName: forkname_to_number
    functionSourceFile: /src/postgres/src/common/relpath.c
    functionUses: 1
    functionsReached:
    - strcmp
    - errcode
    - ereport
    - errhint
    - errmsg
    linkageType: ''
    returnType: ForkNumber
    signature: ForkNumber forkname_to_number(const char *forkName)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/relpath.c:87,1
    - Dst: strncmp
      Src: /src/postgres/src/common/relpath.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - str
    - fork
    argTypes:
    - char*
    - ForkNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 99
    functionName: forkname_chars
    functionSourceFile: /src/postgres/src/common/relpath.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    linkageType: ''
    returnType: int
    signature: int forkname_chars(const char *str, ForkNumber *fork)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/relpath.c:115,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/relpath.c:116,1
    - Dst: psprintf
      Src: /src/postgres/src/common/relpath.c:121,1
    - Dst: psprintf
      Src: /src/postgres/src/common/relpath.c:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - dbOid
    - spcOid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 130
    functionName: GetDatabasePath
    functionSourceFile: /src/postgres/src/common/relpath.c
    functionUses: 0
    functionsReached:
    - Assert
    - psprintf
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      GetDatabasePath(Oid dbOid, Oid spcOid)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/relpath.c:151,1
    - Dst: Assert
      Src: /src/postgres/src/common/relpath.c:152,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:154,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:157,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:167,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:172,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:178,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:182,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:192,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:198,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:206,1
    - Dst: sprintf
      Src: /src/postgres/src/common/relpath.c:212,1
    - Dst: Assert
      Src: /src/postgres/src/common/relpath.c:219,1
    - Dst: strnlen
      Src: /src/postgres/src/common/relpath.c:219,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 5
    argNames:
    - dbOid
    - spcOid
    - relNumber
    - procNumber
    - forkNumber
    argTypes:
    - Oid
    - Oid
    - RelFileNumber
    - int
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 222
    functionName: GetRelationPath
    functionSourceFile: /src/postgres/src/common/relpath.c
    functionUses: 1
    functionsReached:
    - Assert
    - strnlen
    - sprintf
    linkageType: ''
    returnType: RelPathStr
    signature: "RelPathStr GetRelationPath(Oid dbOid, Oid spcOid, RelFileNumber relNumber,\n\t\t\t\tint
      procNumber, ForkNumber forkNumber)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - codepage
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 304
    functionName: DEF_ENC2NAME
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_ENC2NAME(name, codepage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - codepage
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 306
    functionName: DEF_ENC2NAME
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_ENC2NAME(name, codepage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_VALID_BE_ENCODING
      Src: /src/postgres/src/common/encnames.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 461
    functionName: is_encoding_supported_by_icu
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 1
    functionsReached:
    - PG_VALID_BE_ENCODING
    linkageType: ''
    returnType: bool
    signature: bool is_encoding_supported_by_icu(int encoding)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_VALID_BE_ENCODING
      Src: /src/postgres/src/common/encnames.c:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 472
    functionName: get_encoding_name_for_icu
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 0
    functionsReached:
    - PG_VALID_BE_ENCODING
    linkageType: ''
    returnType: char
    signature: 'char *

      get_encoding_name_for_icu(int encoding)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/common/encnames.c:484,1
    - Dst: PG_VALID_FE_ENCODING
      Src: /src/postgres/src/common/encnames.c:487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 491
    functionName: pg_valid_client_encoding
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 0
    functionsReached:
    - pg_char_to_encoding
    - PG_VALID_FE_ENCODING
    linkageType: ''
    returnType: int
    signature: int pg_valid_client_encoding(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/common/encnames.c:498,1
    - Dst: PG_VALID_BE_ENCODING
      Src: /src/postgres/src/common/encnames.c:501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 505
    functionName: pg_valid_server_encoding
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 2
    functionsReached:
    - pg_char_to_encoding
    - PG_VALID_BE_ENCODING
    linkageType: ''
    returnType: int
    signature: int pg_valid_server_encoding(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_VALID_BE_ENCODING
      Src: /src/postgres/src/common/encnames.c:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 511
    functionName: pg_valid_server_encoding_id
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 1
    functionsReached:
    - PG_VALID_BE_ENCODING
    linkageType: ''
    returnType: int
    signature: int pg_valid_server_encoding_id(int encoding)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/postgres/src/common/encnames.c:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - key
    - newkey
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 536
    functionName: clean_encoding_name
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 0
    functionsReached:
    - isalnum
    linkageType: ''
    returnType: char
    signature: 'char *

      clean_encoding_name(const char *key, char *newkey)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/common/encnames.c:546,1
    - Dst: strlen
      Src: /src/postgres/src/common/encnames.c:557,1
    - Dst: clean_encoding_name
      Src: /src/postgres/src/common/encnames.c:560,1
    - Dst: strcmp
      Src: /src/postgres/src/common/encnames.c:569,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 579
    functionName: pg_char_to_encoding
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 9
    functionsReached:
    - clean_encoding_name
    - strlen
    - lengthof
    - strcmp
    linkageType: ''
    returnType: int
    signature: int pg_char_to_encoding(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/common/encnames.c:584,1
    - Dst: Assert
      Src: /src/postgres/src/common/encnames.c:588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 592
    functionName: pg_encoding_to_char
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 11
    functionsReached:
    - Assert
    - PG_VALID_ENCODING
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_encoding_to_char(int encoding)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: K
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: K(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: F0
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F0(b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: F1
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F1(b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: F2
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F2(b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: F3
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F3(b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: S
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 152
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S(n, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: H
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 94
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: W
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: W(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: PUTPAD
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUTPAD(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/postgres/src/common/sha1.c:104,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:171,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:172,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:173,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:174,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:175,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:181,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:181,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:181,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:181,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:181,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:181,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:182,1
    - Dst: F0
      Src: /src/postgres/src/common/sha1.c:182,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:182,1
    - Dst: K
      Src: /src/postgres/src/common/sha1.c:182,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:185,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:192,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:192,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:192,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:192,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:192,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:192,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:193,1
    - Dst: F1
      Src: /src/postgres/src/common/sha1.c:193,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:193,1
    - Dst: K
      Src: /src/postgres/src/common/sha1.c:193,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:196,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:203,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:203,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:203,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:203,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:203,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:203,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:204,1
    - Dst: F2
      Src: /src/postgres/src/common/sha1.c:204,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:204,1
    - Dst: K
      Src: /src/postgres/src/common/sha1.c:204,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:207,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:214,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:214,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:214,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:214,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:214,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:214,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:215,1
    - Dst: F3
      Src: /src/postgres/src/common/sha1.c:215,1
    - Dst: W
      Src: /src/postgres/src/common/sha1.c:215,1
    - Dst: K
      Src: /src/postgres/src/common/sha1.c:215,1
    - Dst: S
      Src: /src/postgres/src/common/sha1.c:218,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:223,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:223,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:224,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:224,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:225,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:225,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:226,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:226,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:227,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:227,1
    - Dst: memset
      Src: /src/postgres/src/common/sha1.c:229,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 118
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_sha1_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 230
    functionName: sha1_step
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 0
    functionsReached:
    - F0
    - F2
    - F1
    - F3
    - memmove
    - H
    - S
    - K
    - memset
    - W
    linkageType: ''
    returnType: void
    signature: void sha1_step(pg_sha1_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:238,1
    - Dst: memset
      Src: /src/postgres/src/common/sha1.c:244,1
    - Dst: sha1_step
      Src: /src/postgres/src/common/sha1.c:247,1
    - Dst: memset
      Src: /src/postgres/src/common/sha1.c:251,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:255,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:256,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:257,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:258,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:259,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:260,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:261,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:262,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:264,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:265,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:266,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:267,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:268,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:269,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:270,1
    - Dst: PUTPAD
      Src: /src/postgres/src/common/sha1.c:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_sha1_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 273
    functionName: sha1_pad
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 0
    functionsReached:
    - PUTPAD
    - memset
    - sha1_step
    linkageType: ''
    returnType: void
    signature: void sha1_pad(pg_sha1_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/postgres/src/common/sha1.c:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 2
    argNames:
    - digest0
    - ctx
    argTypes:
    - uint8*
    - pg_sha1_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 306
    functionName: sha1_result
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 0
    functionsReached:
    - memmove
    linkageType: ''
    returnType: void
    signature: void sha1_result(uint8 *digest0, pg_sha1_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/common/sha1.c:318,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:319,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:320,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:321,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:322,1
    - Dst: H
      Src: /src/postgres/src/common/sha1.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_sha1_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: pg_sha1_init
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 1
    functionsReached:
    - memset
    - H
    linkageType: ''
    returnType: void
    signature: void pg_sha1_init(pg_sha1_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/postgres/src/common/sha1.c:349,1
    - Dst: sha1_step
      Src: /src/postgres/src/common/sha1.c:354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - data
    - len
    argTypes:
    - pg_sha1_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 331
    functionDepth: 2
    functionLinenumber: 331
    functionLinenumberEnd: 357
    functionName: pg_sha1_update
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 1
    functionsReached:
    - memmove
    - sha1_step
    linkageType: ''
    returnType: void
    signature: void pg_sha1_update(pg_sha1_ctx *ctx, const uint8 *data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_pad
      Src: /src/postgres/src/common/sha1.c:367,1
    - Dst: sha1_result
      Src: /src/postgres/src/common/sha1.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - dest
    argTypes:
    - pg_sha1_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 364
    functionDepth: 3
    functionLinenumber: 364
    functionLinenumberEnd: 369
    functionName: pg_sha1_final
    functionSourceFile: /src/postgres/src/common/sha1.c
    functionUses: 1
    functionsReached:
    - sha1_result
    - sha1_pad
    linkageType: ''
    returnType: void
    signature: void pg_sha1_final(pg_sha1_ctx *ctx, uint8 *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - kwname
    - ','
    - value
    - ','
    - category
    - ','
    - collabel
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: PG_KEYWORD
    functionSourceFile: /src/postgres/src/common/keywords.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_KEYWORD(kwname, value, category, collabel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - kwname
    - ','
    - value
    - ','
    - category
    - ','
    - collabel
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: PG_KEYWORD
    functionSourceFile: /src/postgres/src/common/keywords.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_KEYWORD(kwname, value, category, collabel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: SHIFT
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHIFT(X, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - Y
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: F
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 76
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F(X, Y, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - Y
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: G
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 42
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G(X, Y, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - Y
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: H
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 96
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H(X, Y, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - Y
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: I
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: I(X, Y, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - k
    - ','
    - s
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: ROUND1
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND1(a, b, c, d, k, s, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - k
    - ','
    - s
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: ROUND2
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND2(a, b, c, d, k, s, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - k
    - ','
    - s
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 85
    functionName: ROUND3
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND3(a, b, c, d, k, s, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - k
    - ','
    - s
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: ROUND4
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND4(a, b, c, d, k, s, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:235,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:236,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:237,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:238,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:239,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:240,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:241,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:242,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:243,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:244,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:245,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:246,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:247,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:248,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:249,1
    - Dst: ROUND1
      Src: /src/postgres/src/common/md5.c:250,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:252,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:253,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:254,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:255,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:256,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:257,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:258,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:259,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:260,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:261,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:262,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:263,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:264,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:265,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:266,1
    - Dst: ROUND2
      Src: /src/postgres/src/common/md5.c:267,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:269,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:270,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:271,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:272,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:273,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:274,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:275,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:276,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:277,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:278,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:279,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:280,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:281,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:282,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:283,1
    - Dst: ROUND3
      Src: /src/postgres/src/common/md5.c:284,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:286,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:287,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:288,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:289,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:290,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:291,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:292,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:293,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:294,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:295,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:296,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:297,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:298,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:299,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:300,1
    - Dst: ROUND4
      Src: /src/postgres/src/common/md5.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 133
    argCount: 2
    argNames:
    - b64
    - ctx
    argTypes:
    - uint8*
    - pg_md5_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 307
    functionName: md5_calc
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 0
    functionsReached:
    - ROUND3
    - ROUND2
    - ROUND4
    - ROUND1
    linkageType: ''
    returnType: void
    signature: void md5_calc(const uint8 *b64, pg_md5_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/postgres/src/common/md5.c:318,1
    - Dst: memmove
      Src: /src/postgres/src/common/md5.c:324,1
    - Dst: md5_calc
      Src: /src/postgres/src/common/md5.c:325,1
    - Dst: memmove
      Src: /src/postgres/src/common/md5.c:326,1
    - Dst: memmove
      Src: /src/postgres/src/common/md5.c:332,1
    - Dst: md5_calc
      Src: /src/postgres/src/common/md5.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_md5_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 345
    functionName: md5_pad
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 0
    functionsReached:
    - memmove
    - md5_calc
    linkageType: ''
    returnType: void
    signature: void md5_pad(pg_md5_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/postgres/src/common/md5.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - digest
    - ctx
    argTypes:
    - uint8*
    - pg_md5_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 371
    functionName: md5_result
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 0
    functionsReached:
    - memmove
    linkageType: ''
    returnType: void
    signature: void md5_result(uint8 *digest, pg_md5_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/common/md5.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_md5_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 391
    functionName: pg_md5_init
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void pg_md5_init(pg_md5_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/postgres/src/common/md5.c:410,1
    - Dst: md5_calc
      Src: /src/postgres/src/common/md5.c:411,1
    - Dst: md5_calc
      Src: /src/postgres/src/common/md5.c:414,1
    - Dst: memmove
      Src: /src/postgres/src/common/md5.c:417,1
    - Dst: memmove
      Src: /src/postgres/src/common/md5.c:421,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - data
    - len
    argTypes:
    - pg_md5_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 399
    functionDepth: 2
    functionLinenumber: 399
    functionLinenumberEnd: 424
    functionName: pg_md5_update
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 1
    functionsReached:
    - memmove
    - md5_calc
    linkageType: ''
    returnType: void
    signature: void pg_md5_update(pg_md5_ctx *ctx, const uint8 *data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_pad
      Src: /src/postgres/src/common/md5.c:434,1
    - Dst: md5_result
      Src: /src/postgres/src/common/md5.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - dest
    argTypes:
    - pg_md5_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 436
    functionName: pg_md5_final
    functionSourceFile: /src/postgres/src/common/md5.c
    functionUses: 1
    functionsReached:
    - md5_result
    - md5_pad
    linkageType: ''
    returnType: void
    signature: void pg_md5_final(pg_md5_ctx *ctx, uint8 *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - w
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: REVERSE32
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REVERSE32(w,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - w
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: REVERSE64
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REVERSE64(w,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - w
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: ADDINC128
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADDINC128(w,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    functionName: R
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 91
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: R(b,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: S32
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S32(b,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: S64
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S64(b,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: Ch
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Ch(x,y,z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: Maj
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Maj(x,y,z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: Sigma0_256
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Sigma0_256(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: Sigma1_256
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Sigma1_256(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: sigma0_256
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigma0_256(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 147
    functionName: sigma1_256
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigma1_256(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 150
    functionName: Sigma0_512
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Sigma0_512(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 151
    functionName: Sigma1_512
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Sigma1_512(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    functionName: sigma0_512
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigma0_512(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: sigma1_512
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigma1_512(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:284,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha256_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 287
    functionName: pg_sha256_init
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pg_sha256_init(pg_sha256_ctx *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - ','
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 302
    functionName: ROUND256_0_TO_15
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND256_0_TO_15(a,b,c,d,e,f,g,h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - ','
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 314
    functionName: ROUND256
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND256(a,b,c,d,e,f,g,h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROUND256_0_TO_15
      Src: /src/postgres/src/common/sha2.c:348,1
    - Dst: ROUND256_0_TO_15
      Src: /src/postgres/src/common/sha2.c:349,1
    - Dst: ROUND256_0_TO_15
      Src: /src/postgres/src/common/sha2.c:350,1
    - Dst: ROUND256_0_TO_15
      Src: /src/postgres/src/common/sha2.c:351,1
    - Dst: ROUND256_0_TO_15
      Src: /src/postgres/src/common/sha2.c:352,1
    - Dst: ROUND256_0_TO_15
      Src: /src/postgres/src/common/sha2.c:353,1
    - Dst: ROUND256_0_TO_15
      Src: /src/postgres/src/common/sha2.c:354,1
    - Dst: ROUND256_0_TO_15
      Src: /src/postgres/src/common/sha2.c:355,1
    - Dst: ROUND256
      Src: /src/postgres/src/common/sha2.c:361,1
    - Dst: ROUND256
      Src: /src/postgres/src/common/sha2.c:362,1
    - Dst: ROUND256
      Src: /src/postgres/src/common/sha2.c:363,1
    - Dst: ROUND256
      Src: /src/postgres/src/common/sha2.c:364,1
    - Dst: ROUND256
      Src: /src/postgres/src/common/sha2.c:365,1
    - Dst: ROUND256
      Src: /src/postgres/src/common/sha2.c:366,1
    - Dst: ROUND256
      Src: /src/postgres/src/common/sha2.c:367,1
    - Dst: ROUND256
      Src: /src/postgres/src/common/sha2.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 40
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - pg_sha256_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 383
    functionName: SHA256_Transform
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - ROUND256_0_TO_15
    - ROUND256
    linkageType: ''
    returnType: void
    signature: void SHA256_Transform(pg_sha256_ctx *context, const uint8 *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Sigma1_256
      Src: /src/postgres/src/common/sha2.c:423,1
    - Dst: Ch
      Src: /src/postgres/src/common/sha2.c:423,1
    - Dst: Sigma0_256
      Src: /src/postgres/src/common/sha2.c:424,1
    - Dst: Maj
      Src: /src/postgres/src/common/sha2.c:424,1
    - Dst: sigma0_256
      Src: /src/postgres/src/common/sha2.c:441,1
    - Dst: sigma1_256
      Src: /src/postgres/src/common/sha2.c:443,1
    - Dst: Sigma1_256
      Src: /src/postgres/src/common/sha2.c:446,1
    - Dst: Ch
      Src: /src/postgres/src/common/sha2.c:446,1
    - Dst: Sigma0_256
      Src: /src/postgres/src/common/sha2.c:448,1
    - Dst: Maj
      Src: /src/postgres/src/common/sha2.c:448,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 52
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - pg_sha256_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 473
    functionName: SHA256_Transform
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - Sigma1_256
    - Maj
    - Sigma0_256
    - sigma1_256
    - sigma0_256
    - Ch
    linkageType: ''
    returnType: void
    signature: void SHA256_Transform(pg_sha256_ctx *context, const uint8 *data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:495,1
    - Dst: SHA256_Transform
      Src: /src/postgres/src/common/sha2.c:499,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:504,1
    - Dst: SHA256_Transform
      Src: /src/postgres/src/common/sha2.c:514,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:522,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - context
    - data
    - len
    argTypes:
    - pg_sha256_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 476
    functionDepth: 2
    functionLinenumber: 476
    functionLinenumberEnd: 527
    functionName: pg_sha256_update
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - SHA256_Transform
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pg_sha256_update(pg_sha256_ctx *context, const uint8 *data, size_t
      len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: REVERSE64
      Src: /src/postgres/src/common/sha2.c:537,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:547,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:553,1
    - Dst: SHA256_Transform
      Src: /src/postgres/src/common/sha2.c:556,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:559,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:565,1
    - Dst: SHA256_Transform
      Src: /src/postgres/src/common/sha2.c:574,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha256_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 529
    functionDepth: 2
    functionLinenumber: 529
    functionLinenumberEnd: 575
    functionName: SHA256_Last
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - SHA256_Transform
    - memset
    - REVERSE64
    linkageType: ''
    returnType: void
    signature: void SHA256_Last(pg_sha256_ctx *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SHA256_Last
      Src: /src/postgres/src/common/sha2.c:583,1
    - Dst: REVERSE32
      Src: /src/postgres/src/common/sha2.c:592,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:596,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:600,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - pg_sha256_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 577
    functionDepth: 3
    functionLinenumber: 577
    functionLinenumberEnd: 601
    functionName: pg_sha256_final
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - SHA256_Last
    - memset
    - memcpy
    - REVERSE32
    linkageType: ''
    returnType: void
    signature: void pg_sha256_final(pg_sha256_ctx *context, uint8 *digest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:610,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha512_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 613
    functionName: pg_sha512_init
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pg_sha512_init(pg_sha512_ctx *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - ','
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 630
    functionName: ROUND512_0_TO_15
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND512_0_TO_15(a,b,c,d,e,f,g,h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - ','
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 643
    functionName: ROUND512
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND512(a,b,c,d,e,f,g,h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROUND512_0_TO_15
      Src: /src/postgres/src/common/sha2.c:674,1
    - Dst: ROUND512_0_TO_15
      Src: /src/postgres/src/common/sha2.c:675,1
    - Dst: ROUND512_0_TO_15
      Src: /src/postgres/src/common/sha2.c:676,1
    - Dst: ROUND512_0_TO_15
      Src: /src/postgres/src/common/sha2.c:677,1
    - Dst: ROUND512_0_TO_15
      Src: /src/postgres/src/common/sha2.c:678,1
    - Dst: ROUND512_0_TO_15
      Src: /src/postgres/src/common/sha2.c:679,1
    - Dst: ROUND512_0_TO_15
      Src: /src/postgres/src/common/sha2.c:680,1
    - Dst: ROUND512_0_TO_15
      Src: /src/postgres/src/common/sha2.c:681,1
    - Dst: ROUND512
      Src: /src/postgres/src/common/sha2.c:687,1
    - Dst: ROUND512
      Src: /src/postgres/src/common/sha2.c:688,1
    - Dst: ROUND512
      Src: /src/postgres/src/common/sha2.c:689,1
    - Dst: ROUND512
      Src: /src/postgres/src/common/sha2.c:690,1
    - Dst: ROUND512
      Src: /src/postgres/src/common/sha2.c:691,1
    - Dst: ROUND512
      Src: /src/postgres/src/common/sha2.c:692,1
    - Dst: ROUND512
      Src: /src/postgres/src/common/sha2.c:693,1
    - Dst: ROUND512
      Src: /src/postgres/src/common/sha2.c:694,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - pg_sha512_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 709
    functionName: SHA512_Transform
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - ROUND512_0_TO_15
    - ROUND512
    linkageType: ''
    returnType: void
    signature: void SHA512_Transform(pg_sha512_ctx *context, const uint8 *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Sigma1_512
      Src: /src/postgres/src/common/sha2.c:749,1
    - Dst: Ch
      Src: /src/postgres/src/common/sha2.c:749,1
    - Dst: Sigma0_512
      Src: /src/postgres/src/common/sha2.c:750,1
    - Dst: Maj
      Src: /src/postgres/src/common/sha2.c:750,1
    - Dst: sigma0_512
      Src: /src/postgres/src/common/sha2.c:767,1
    - Dst: sigma1_512
      Src: /src/postgres/src/common/sha2.c:769,1
    - Dst: Sigma1_512
      Src: /src/postgres/src/common/sha2.c:772,1
    - Dst: Ch
      Src: /src/postgres/src/common/sha2.c:772,1
    - Dst: Sigma0_512
      Src: /src/postgres/src/common/sha2.c:774,1
    - Dst: Maj
      Src: /src/postgres/src/common/sha2.c:774,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 51
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - pg_sha512_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 799
    functionName: SHA512_Transform
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - Sigma1_512
    - Ch
    - sigma1_512
    - Maj
    - Sigma0_512
    - sigma0_512
    linkageType: ''
    returnType: void
    signature: void SHA512_Transform(pg_sha512_ctx *context, const uint8 *data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:821,1
    - Dst: ADDINC128
      Src: /src/postgres/src/common/sha2.c:822,1
    - Dst: SHA512_Transform
      Src: /src/postgres/src/common/sha2.c:825,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:830,1
    - Dst: ADDINC128
      Src: /src/postgres/src/common/sha2.c:831,1
    - Dst: SHA512_Transform
      Src: /src/postgres/src/common/sha2.c:840,1
    - Dst: ADDINC128
      Src: /src/postgres/src/common/sha2.c:841,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:848,1
    - Dst: ADDINC128
      Src: /src/postgres/src/common/sha2.c:849,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - context
    - data
    - len
    argTypes:
    - pg_sha512_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 802
    functionDepth: 2
    functionLinenumber: 802
    functionLinenumberEnd: 853
    functionName: pg_sha512_update
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - ADDINC128
    - memcpy
    - SHA512_Transform
    linkageType: ''
    returnType: void
    signature: void pg_sha512_update(pg_sha512_ctx *context, const uint8 *data, size_t
      len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: REVERSE64
      Src: /src/postgres/src/common/sha2.c:863,1
    - Dst: REVERSE64
      Src: /src/postgres/src/common/sha2.c:864,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:874,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:880,1
    - Dst: SHA512_Transform
      Src: /src/postgres/src/common/sha2.c:883,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:886,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:892,1
    - Dst: SHA512_Transform
      Src: /src/postgres/src/common/sha2.c:902,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha512_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 855
    functionDepth: 2
    functionLinenumber: 855
    functionLinenumberEnd: 903
    functionName: SHA512_Last
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - SHA512_Transform
    - memset
    - REVERSE64
    linkageType: ''
    returnType: void
    signature: void SHA512_Last(pg_sha512_ctx *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SHA512_Last
      Src: /src/postgres/src/common/sha2.c:911,1
    - Dst: REVERSE64
      Src: /src/postgres/src/common/sha2.c:921,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:925,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:929,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - pg_sha512_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 905
    functionDepth: 3
    functionLinenumber: 905
    functionLinenumberEnd: 930
    functionName: pg_sha512_final
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - memset
    - SHA512_Last
    - REVERSE64
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pg_sha512_final(pg_sha512_ctx *context, uint8 *digest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:939,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha384_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 942
    functionName: pg_sha384_init
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pg_sha384_init(pg_sha384_ctx *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_sha512_update
      Src: /src/postgres/src/common/sha2.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - data
    - len
    argTypes:
    - pg_sha384_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 944
    functionDepth: 3
    functionLinenumber: 944
    functionLinenumberEnd: 948
    functionName: pg_sha384_update
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - pg_sha512_update
    linkageType: ''
    returnType: void
    signature: void pg_sha384_update(pg_sha384_ctx *context, const uint8 *data, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SHA512_Last
      Src: /src/postgres/src/common/sha2.c:956,1
    - Dst: REVERSE64
      Src: /src/postgres/src/common/sha2.c:966,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:970,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:974,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - pg_sha384_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 950
    functionDepth: 3
    functionLinenumber: 950
    functionLinenumberEnd: 975
    functionName: pg_sha384_final
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - memset
    - SHA512_Last
    - REVERSE64
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pg_sha384_final(pg_sha384_ctx *context, uint8 *digest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:983,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:984,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha224_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 978
    functionDepth: 0
    functionLinenumber: 978
    functionLinenumberEnd: 986
    functionName: pg_sha224_init
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pg_sha224_init(pg_sha224_ctx *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_sha256_update
      Src: /src/postgres/src/common/sha2.c:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - data
    - len
    argTypes:
    - pg_sha224_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 988
    functionDepth: 3
    functionLinenumber: 988
    functionLinenumberEnd: 992
    functionName: pg_sha224_update
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - pg_sha256_update
    linkageType: ''
    returnType: void
    signature: void pg_sha224_update(pg_sha224_ctx *context, const uint8 *data, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SHA256_Last
      Src: /src/postgres/src/common/sha2.c:1000,1
    - Dst: REVERSE32
      Src: /src/postgres/src/common/sha2.c:1009,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:1013,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:1017,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - pg_sha224_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 994
    functionDepth: 3
    functionLinenumber: 994
    functionLinenumberEnd: 1018
    functionName: pg_sha224_final
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - SHA256_Last
    - memset
    - memcpy
    - REVERSE32
    linkageType: ''
    returnType: void
    signature: void pg_sha224_final(pg_sha224_ctx *context, uint8 *digest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/common/archive.c:49,1
    - Dst: make_native_path
      Src: /src/postgres/src/common/archive.c:50,1
    - Dst: replace_percent_placeholders
      Src: /src/postgres/src/common/archive.c:53,1
    - Dst: pfree
      Src: /src/postgres/src/common/archive.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - restoreCommand
    - xlogpath
    - xlogfname
    - lastRestartPointFname
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 60
    functionName: BuildRestoreCommand
    functionSourceFile: /src/postgres/src/common/archive.c
    functionUses: 1
    functionsReached:
    - pfree
    - make_native_path
    - pstrdup
    - replace_percent_placeholders
    linkageType: ''
    returnType: char
    signature: "char *\nBuildRestoreCommand(const char *restoreCommand,\n\t\t\t\t\tconst
      char *xlogpath,\n\t\t\t\t\tconst char *xlogfname,\n\t\t\t\t\tconst char *lastRestartPointFname)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/common/parse_manifest.c:135,1
    - Dst: palloc_object
      Src: /src/postgres/src/common/parse_manifest.c:136,1
    - Dst: makeJsonLexContextIncremental
      Src: /src/postgres/src/common/parse_manifest.c:142,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/parse_manifest.c:155,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:157,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/parse_manifest.c:158,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - context
    argTypes:
    - JsonManifestParseContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 128
    functionDepth: 3
    functionLinenumber: 128
    functionLinenumberEnd: 163
    functionName: json_parse_manifest_incremental_init
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 2
    functionsReached:
    - pg_cryptohash_create
    - JsonManifestParseContext*::error_cb
    - makeJsonLexContextIncremental
    - palloc_object
    - pg_cryptohash_init
    linkageType: ''
    returnType: JsonManifestParseIncrementalState
    signature: 'JsonManifestParseIncrementalState *

      json_parse_manifest_incremental_init(JsonManifestParseContext *context)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:171,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/common/parse_manifest.c:172,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - incstate
    argTypes:
    - JsonManifestParseIncrementalState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 175
    functionName: json_parse_manifest_incremental_shutdown
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 2
    functionsReached:
    - pfree
    - freeJsonLexContext
    linkageType: ''
    returnType: void
    signature: void json_parse_manifest_incremental_shutdown(JsonManifestParseIncrementalState
      *incstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_parse_json_incremental
      Src: /src/postgres/src/common/parse_manifest.c:193,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:199,1
    - Dst: json_errdetail
      Src: /src/postgres/src/common/parse_manifest.c:200,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:203,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/parse_manifest.c:207,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:209,1
    - Dst: verify_manifest_checksum
      Src: /src/postgres/src/common/parse_manifest.c:213,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - incstate
    - chunk
    - size
    - is_last
    argTypes:
    - JsonManifestParseIncrementalState*
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 215
    functionName: json_parse_manifest_incremental_chunk
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 2
    functionsReached:
    - pg_parse_json_incremental
    - pg_cryptohash_update
    - JsonManifestParseContext*::error_cb
    - verify_manifest_checksum
    - json_errdetail
    - json_manifest_parse_failure
    linkageType: ''
    returnType: void
    signature: "void json_parse_manifest_incremental_chunk(JsonManifestParseIncrementalState
      *incstate,\n\t\t\t\t\t\t\t\t\t  const char *chunk, size_t size, bool is_last)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/common/parse_manifest.c:241,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/common/parse_manifest.c:256,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:258,1
    - Dst: json_errdetail
      Src: /src/postgres/src/common/parse_manifest.c:258,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:260,1
    - Dst: verify_manifest_checksum
      Src: /src/postgres/src/common/parse_manifest.c:263,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/common/parse_manifest.c:265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 3
    argNames:
    - context
    - buffer
    - size
    argTypes:
    - JsonManifestParseContext*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 266
    functionName: json_parse_manifest
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 2
    functionsReached:
    - freeJsonLexContext
    - makeJsonLexContextCstringLen
    - pg_parse_json
    - verify_manifest_checksum
    - json_errdetail
    - json_manifest_parse_failure
    linkageType: ''
    returnType: void
    signature: "void json_parse_manifest(JsonManifestParseContext *context, const
      char *buffer,\n\t\t\t\t\tsize_t size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:300,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 306
    functionName: json_manifest_object_start
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 0
    functionsReached:
    - json_manifest_parse_failure
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_manifest_object_start(void *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_manifest_finalize_file
      Src: /src/postgres/src/common/parse_manifest.c:327,1
    - Dst: json_manifest_finalize_wal_range
      Src: /src/postgres/src/common/parse_manifest.c:331,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:335,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 341
    functionName: json_manifest_object_end
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 0
    functionsReached:
    - json_manifest_finalize_wal_range
    - json_manifest_finalize_file
    - json_manifest_parse_failure
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_manifest_object_end(void *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:364,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 370
    functionName: json_manifest_array_start
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 0
    functionsReached:
    - json_manifest_parse_failure
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_manifest_array_start(void *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:389,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 395
    functionName: json_manifest_array_end
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 0
    functionsReached:
    - json_manifest_parse_failure
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_manifest_array_end(void *state)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:415,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:416,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:424,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:431,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:438,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:445,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:452,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:458,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:460,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:462,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:464,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:466,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:468,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:471,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:478,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:480,1
    - Dst: strcmp
      Src: /src/postgres/src/common/parse_manifest.c:482,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:485,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:491,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:496,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 60
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 499
    functionName: json_manifest_object_field_start
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 0
    functionsReached:
    - pfree
    - strcmp
    - json_manifest_parse_failure
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_manifest_object_field_start(void *state, char
      *fname, bool isnull)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: json_manifest_finalize_version
      Src: /src/postgres/src/common/parse_manifest.c:525,1
    - Dst: json_manifest_finalize_system_identifier
      Src: /src/postgres/src/common/parse_manifest.c:531,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:548,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:582,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 587
    functionName: json_manifest_scalar
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 0
    functionsReached:
    - pfree
    - json_manifest_finalize_version
    - json_manifest_finalize_system_identifier
    - json_manifest_parse_failure
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_manifest_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/parse_manifest.c:602,1
    - Dst: strtoi64
      Src: /src/postgres/src/common/parse_manifest.c:605,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:607,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:611,1
    - Dst: JsonManifestParseContext*::version_cb
      Src: /src/postgres/src/common/parse_manifest.c:615,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - parse
    argTypes:
    - JsonManifestParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 616
    functionName: json_manifest_finalize_version
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 1
    functionsReached:
    - Assert
    - strtoi64
    - JsonManifestParseContext*::version_cb
    - json_manifest_parse_failure
    linkageType: ''
    returnType: void
    signature: void json_manifest_finalize_version(JsonManifestParseState *parse)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/parse_manifest.c:630,1
    - Dst: strtou64
      Src: /src/postgres/src/common/parse_manifest.c:633,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:635,1
    - Dst: JsonManifestParseContext*::system_identifier_cb
      Src: /src/postgres/src/common/parse_manifest.c:639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - parse
    argTypes:
    - JsonManifestParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 640
    functionName: json_manifest_finalize_system_identifier
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 1
    functionsReached:
    - Assert
    - strtou64
    - JsonManifestParseContext*::system_identifier_cb
    - json_manifest_parse_failure
    linkageType: ''
    returnType: void
    signature: void json_manifest_finalize_system_identifier(JsonManifestParseState
      *parse)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:661,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:663,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:666,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:668,1
    - Dst: strlen
      Src: /src/postgres/src/common/parse_manifest.c:674,1
    - Dst: palloc
      Src: /src/postgres/src/common/parse_manifest.c:677,1
    - Dst: hexdecode_string
      Src: /src/postgres/src/common/parse_manifest.c:679,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:682,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:685,1
    - Dst: strtou64
      Src: /src/postgres/src/common/parse_manifest.c:690,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:692,1
    - Dst: pg_checksum_parse_type
      Src: /src/postgres/src/common/parse_manifest.c:698,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:699,1
    - Dst: strlen
      Src: /src/postgres/src/common/parse_manifest.c:704,1
    - Dst: palloc
      Src: /src/postgres/src/common/parse_manifest.c:713,1
    - Dst: hexdecode_string
      Src: /src/postgres/src/common/parse_manifest.c:715,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:717,1
    - Dst: JsonManifestParseContext*::per_file_cb
      Src: /src/postgres/src/common/parse_manifest.c:723,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:729,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:734,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:739,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 47
    argCount: 1
    argNames:
    - parse
    argTypes:
    - JsonManifestParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 648
    functionDepth: 3
    functionLinenumber: 648
    functionLinenumberEnd: 742
    functionName: json_manifest_finalize_file
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 1
    functionsReached:
    - strtou64
    - JsonManifestParseContext*::error_cb
    - pfree
    - hexdecode_string
    - pg_checksum_parse_type
    - JsonManifestParseContext*::per_file_cb
    - strlen
    - palloc
    - json_manifest_parse_failure
    linkageType: ''
    returnType: void
    signature: void json_manifest_finalize_file(JsonManifestParseState *parse)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:761,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:763,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:765,1
    - Dst: strtoul
      Src: /src/postgres/src/common/parse_manifest.c:768,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:770,1
    - Dst: parse_xlogrecptr
      Src: /src/postgres/src/common/parse_manifest.c:772,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:773,1
    - Dst: parse_xlogrecptr
      Src: /src/postgres/src/common/parse_manifest.c:775,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:776,1
    - Dst: JsonManifestParseContext*::per_wal_range_cb
      Src: /src/postgres/src/common/parse_manifest.c:780,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:785,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:790,1
    - Dst: pfree
      Src: /src/postgres/src/common/parse_manifest.c:795,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - parse
    argTypes:
    - JsonManifestParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 798
    functionName: json_manifest_finalize_wal_range
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 1
    functionsReached:
    - strtoul
    - pfree
    - JsonManifestParseContext*::per_wal_range_cb
    - parse_xlogrecptr
    - json_manifest_parse_failure
    linkageType: ''
    returnType: void
    signature: void json_manifest_finalize_wal_range(JsonManifestParseState *parse)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:841,1
    - Dst: json_manifest_parse_failure
      Src: /src/postgres/src/common/parse_manifest.c:844,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/common/parse_manifest.c:850,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:852,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/common/parse_manifest.c:853,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:854,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/common/parse_manifest.c:860,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:861,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/common/parse_manifest.c:862,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:864,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:868,1
    - Dst: strlen
      Src: /src/postgres/src/common/parse_manifest.c:869,1
    - Dst: hexdecode_string
      Src: /src/postgres/src/common/parse_manifest.c:870,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:872,1
    - Dst: memcmp
      Src: /src/postgres/src/common/parse_manifest.c:874,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:876,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/parse_manifest.c:877,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 4
    argNames:
    - parse
    - buffer
    - size
    - incr_ctx
    argTypes:
    - JsonManifestParseState*
    - char*
    - size_t
    - pg_cryptohash_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 878
    functionName: verify_manifest_checksum
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 2
    functionsReached:
    - pg_cryptohash_update
    - pg_cryptohash_final
    - pg_cryptohash_free
    - JsonManifestParseContext*::error_cb
    - pg_cryptohash_create
    - hexdecode_string
    - strlen
    - memcmp
    - pg_cryptohash_init
    - json_manifest_parse_failure
    linkageType: ''
    returnType: void
    signature: "void verify_manifest_checksum(JsonManifestParseState *parse, const
      char *buffer,\n\t\t\t\t\t\t size_t size, pg_cryptohash_ctx *incr_ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/common/parse_manifest.c:891,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/common/parse_manifest.c:892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - context
    - msg
    argTypes:
    - JsonManifestParseContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 888
    functionDepth: 1
    functionLinenumber: 888
    functionLinenumberEnd: 893
    functionName: json_manifest_parse_failure
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 13
    functionsReached:
    - pg_unreachable
    - JsonManifestParseContext*::error_cb
    linkageType: ''
    returnType: void
    signature: void json_manifest_parse_failure(JsonManifestParseContext *context,
      char *msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 900
    functionDepth: 0
    functionLinenumber: 900
    functionLinenumberEnd: 911
    functionName: hexdecode_char
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int hexdecode_char(char c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hexdecode_char
      Src: /src/postgres/src/common/parse_manifest.c:925,1
    - Dst: hexdecode_char
      Src: /src/postgres/src/common/parse_manifest.c:926,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - result
    - input
    - nbytes
    argTypes:
    - uint8*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 918
    functionDepth: 1
    functionLinenumber: 918
    functionLinenumberEnd: 934
    functionName: hexdecode_string
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 2
    functionsReached:
    - hexdecode_char
    linkageType: ''
    returnType: bool
    signature: bool hexdecode_string(uint8 *result, char *input, int nbytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/common/parse_manifest.c:945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - result
    - input
    argTypes:
    - XLogRecPtr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 939
    functionDepth: 0
    functionLinenumber: 939
    functionLinenumberEnd: 949
    functionName: parse_xlogrecptr
    functionSourceFile: /src/postgres/src/common/parse_manifest.c
    functionUses: 1
    functionsReached:
    - sscanf
    linkageType: ''
    returnType: bool
    signature: bool parse_xlogrecptr(XLogRecPtr *result, char *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/f2s.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 98
    functionName: pow5Factor
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint32
    signature: uint32 pow5Factor(uint32 value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pow5Factor
      Src: /src/postgres/src/common/f2s.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - p
    argTypes:
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 105
    functionName: multipleOfPowerOf5
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 1
    functionsReached:
    - pow5Factor
    linkageType: ''
    returnType: bool
    signature: bool multipleOfPowerOf5(const uint32 value, const uint32 p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - p
    argTypes:
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 113
    functionName: multipleOfPowerOf2
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool multipleOfPowerOf2(const uint32 value, const uint32 p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/f2s.c:131,1
    - Dst: Assert
      Src: /src/postgres/src/common/f2s.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - m
    - factor
    - shift
    argTypes:
    - uint32
    - uint64
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 159
    functionName: mulShift
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint32
    signature: uint32 mulShift(const uint32 m, const uint64 factor, const int32 shift)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mulShift
      Src: /src/postgres/src/common/f2s.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - m
    - q
    - j
    argTypes:
    - uint32
    - uint32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: mulPow5InvDivPow2
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 0
    functionsReached:
    - mulShift
    linkageType: ''
    returnType: uint32
    signature: uint32 mulPow5InvDivPow2(const uint32 m, const uint32 q, const int32
      j)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mulShift
      Src: /src/postgres/src/common/f2s.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - m
    - i
    - j
    argTypes:
    - uint32
    - uint32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: mulPow5divPow2
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 0
    functionsReached:
    - mulShift
    linkageType: ''
    returnType: uint32
    signature: uint32 mulPow5divPow2(const uint32 m, const uint32 i, const int32 j)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/f2s.c:178,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - v
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 212
    functionName: decimalLength
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint32
    signature: uint32 decimalLength(const uint32 v)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log10Pow2
      Src: /src/postgres/src/common/f2s.c:265,1
    - Dst: pow5bits
      Src: /src/postgres/src/common/f2s.c:269,1
    - Dst: mulPow5InvDivPow2
      Src: /src/postgres/src/common/f2s.c:272,1
    - Dst: mulPow5InvDivPow2
      Src: /src/postgres/src/common/f2s.c:273,1
    - Dst: mulPow5InvDivPow2
      Src: /src/postgres/src/common/f2s.c:274,1
    - Dst: pow5bits
      Src: /src/postgres/src/common/f2s.c:284,1
    - Dst: mulPow5InvDivPow2
      Src: /src/postgres/src/common/f2s.c:286,1
    - Dst: multipleOfPowerOf5
      Src: /src/postgres/src/common/f2s.c:298,1
    - Dst: multipleOfPowerOf5
      Src: /src/postgres/src/common/f2s.c:302,1
    - Dst: multipleOfPowerOf5
      Src: /src/postgres/src/common/f2s.c:306,1
    - Dst: log10Pow5
      Src: /src/postgres/src/common/f2s.c:312,1
    - Dst: pow5bits
      Src: /src/postgres/src/common/f2s.c:317,1
    - Dst: mulPow5divPow2
      Src: /src/postgres/src/common/f2s.c:320,1
    - Dst: mulPow5divPow2
      Src: /src/postgres/src/common/f2s.c:321,1
    - Dst: mulPow5divPow2
      Src: /src/postgres/src/common/f2s.c:322,1
    - Dst: pow5bits
      Src: /src/postgres/src/common/f2s.c:326,1
    - Dst: mulPow5divPow2
      Src: /src/postgres/src/common/f2s.c:327,1
    - Dst: multipleOfPowerOf2
      Src: /src/postgres/src/common/f2s.c:356,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 84
    argCount: 2
    argNames:
    - ieeeMantissa
    - ieeeExponent
    argTypes:
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 437
    functionName: f2d
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 0
    functionsReached:
    - mulPow5divPow2
    - multipleOfPowerOf5
    - pow5bits
    - log10Pow2
    - log10Pow5
    - mulPow5InvDivPow2
    - multipleOfPowerOf2
    linkageType: ''
    returnType: floating_decimal_32
    signature: floating_decimal_32 f2d(const uint32 ieeeMantissa, const uint32 ieeeExponent)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/f2s.c:467,1
    - Dst: memcpy
      Src: /src/postgres/src/common/f2s.c:471,1
    - Dst: Assert
      Src: /src/postgres/src/common/f2s.c:488,1
    - Dst: memset
      Src: /src/postgres/src/common/f2s.c:489,1
    - Dst: memcpy
      Src: /src/postgres/src/common/f2s.c:500,1
    - Dst: memcpy
      Src: /src/postgres/src/common/f2s.c:501,1
    - Dst: memcpy
      Src: /src/postgres/src/common/f2s.c:509,1
    - Dst: memcpy
      Src: /src/postgres/src/common/f2s.c:516,1
    - Dst: Assert
      Src: /src/postgres/src/common/f2s.c:530,1
    - Dst: memmove
      Src: /src/postgres/src/common/f2s.c:534,1
    - Dst: memmove
      Src: /src/postgres/src/common/f2s.c:539,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 3
    argNames:
    - v
    - olength
    - result
    argTypes:
    - floating_decimal_32
    - uint32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 560
    functionName: to_chars_f
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 0
    functionsReached:
    - Assert
    - memmove
    - memset
    - memcpy
    linkageType: ''
    returnType: int
    signature: int to_chars_f(const floating_decimal_32 v, const uint32 olength, char
      *const result)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: decimalLength
      Src: /src/postgres/src/common/f2s.c:569,1
    - Dst: to_chars_f
      Src: /src/postgres/src/common/f2s.c:581,1
    - Dst: memcpy
      Src: /src/postgres/src/common/f2s.c:633,1
    - Dst: memcpy
      Src: /src/postgres/src/common/f2s.c:634,1
    - Dst: memcpy
      Src: /src/postgres/src/common/f2s.c:642,1
    - Dst: memcpy
      Src: /src/postgres/src/common/f2s.c:682,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 3
    argNames:
    - v
    - sign
    - result
    argTypes:
    - floating_decimal_32
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 562
    functionDepth: 2
    functionLinenumber: 562
    functionLinenumberEnd: 686
    functionName: to_chars
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 1
    functionsReached:
    - decimalLength
    - memcpy
    - to_chars_f
    linkageType: ''
    returnType: int
    signature: int to_chars(const floating_decimal_32 v, const bool sign, char *const
      result)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ieeeMantissa
    - ieeeExponent
    - v
    argTypes:
    - uint32
    - uint32
    - floating_decimal_32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 732
    functionName: f2d_small_int
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool f2d_small_int(const uint32 ieeeMantissa,\n\t\t\t  const uint32
      ieeeExponent,\n\t\t\t  floating_decimal_32 *v)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: float_to_bits
      Src: /src/postgres/src/common/f2s.c:748,1
    - Dst: copy_special_str
      Src: /src/postgres/src/common/f2s.c:758,1
    - Dst: f2d_small_int
      Src: /src/postgres/src/common/f2s.c:762,1
    - Dst: f2d
      Src: /src/postgres/src/common/f2s.c:766,1
    - Dst: to_chars
      Src: /src/postgres/src/common/f2s.c:769,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - f
    - result
    argTypes:
    - float
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 741
    functionDepth: 3
    functionLinenumber: 741
    functionLinenumberEnd: 770
    functionName: float_to_shortest_decimal_bufn
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 0
    functionsReached:
    - f2d
    - to_chars
    - copy_special_str
    - f2d_small_int
    - float_to_bits
    linkageType: ''
    returnType: int
    signature: int float_to_shortest_decimal_bufn(float f, char *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float_to_shortest_decimal_bufn
      Src: /src/postgres/src/common/f2s.c:782,1
    - Dst: Assert
      Src: /src/postgres/src/common/f2s.c:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - f
    - result
    argTypes:
    - float
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 779
    functionDepth: 4
    functionLinenumber: 779
    functionLinenumberEnd: 788
    functionName: float_to_shortest_decimal_buf
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 0
    functionsReached:
    - Assert
    - float_to_shortest_decimal_bufn
    linkageType: ''
    returnType: int
    signature: int float_to_shortest_decimal_buf(float f, char *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/common/f2s.c:799,1
    - Dst: float_to_shortest_decimal_buf
      Src: /src/postgres/src/common/f2s.c:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 796
    functionDepth: 5
    functionLinenumber: 796
    functionLinenumberEnd: 803
    functionName: float_to_shortest_decimal
    functionSourceFile: /src/postgres/src/common/f2s.c
    functionUses: 0
    functionsReached:
    - float_to_shortest_decimal_buf
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      float_to_shortest_decimal(float f)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/common/wait_error.c:44,1
    - Dst: WIFEXITED
      Src: /src/postgres/src/common/wait_error.c:46,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/common/wait_error.c:52,1
    - Dst: snprintf
      Src: /src/postgres/src/common/wait_error.c:55,1
    - Dst: _
      Src: /src/postgres/src/common/wait_error.c:55,1
    - Dst: snprintf
      Src: /src/postgres/src/common/wait_error.c:59,1
    - Dst: _
      Src: /src/postgres/src/common/wait_error.c:59,1
    - Dst: snprintf
      Src: /src/postgres/src/common/wait_error.c:63,1
    - Dst: _
      Src: /src/postgres/src/common/wait_error.c:64,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/common/wait_error.c:65,1
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/common/wait_error.c:68,1
    - Dst: snprintf
      Src: /src/postgres/src/common/wait_error.c:71,1
    - Dst: _
      Src: /src/postgres/src/common/wait_error.c:72,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/common/wait_error.c:73,1
    - Dst: snprintf
      Src: /src/postgres/src/common/wait_error.c:75,1
    - Dst: _
      Src: /src/postgres/src/common/wait_error.c:76,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/common/wait_error.c:77,1
    - Dst: pg_strsignal
      Src: /src/postgres/src/common/wait_error.c:77,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/common/wait_error.c:77,1
    - Dst: snprintf
      Src: /src/postgres/src/common/wait_error.c:81,1
    - Dst: _
      Src: /src/postgres/src/common/wait_error.c:82,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/wait_error.c:85,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - exitstatus
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 86
    functionName: wait_result_to_str
    functionSourceFile: /src/postgres/src/common/wait_error.c
    functionUses: 9
    functionsReached:
    - WIFSIGNALED
    - _
    - pg_strsignal
    - WTERMSIG
    - pstrdup
    - WEXITSTATUS
    - WIFEXITED
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      wait_result_to_str(int exitstatus)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/common/wait_error.c:104,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/common/wait_error.c:104,1
    - Dst: WIFEXITED
      Src: /src/postgres/src/common/wait_error.c:106,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/common/wait_error.c:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - exit_status
    - signum
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 109
    functionName: wait_result_is_signal
    functionSourceFile: /src/postgres/src/common/wait_error.c
    functionUses: 0
    functionsReached:
    - WTERMSIG
    - WEXITSTATUS
    - WIFSIGNALED
    - WIFEXITED
    linkageType: ''
    returnType: bool
    signature: bool wait_result_is_signal(int exit_status, int signum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/common/wait_error.c:123,1
    - Dst: WIFEXITED
      Src: /src/postgres/src/common/wait_error.c:125,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/common/wait_error.c:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - exit_status
    - include_command_not_found
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 129
    functionName: wait_result_is_any_signal
    functionSourceFile: /src/postgres/src/common/wait_error.c
    functionUses: 1
    functionsReached:
    - WEXITSTATUS
    - WIFSIGNALED
    - WIFEXITED
    linkageType: ''
    returnType: bool
    signature: bool wait_result_is_any_signal(int exit_status, bool include_command_not_found)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: WIFEXITED
      Src: /src/postgres/src/common/wait_error.c:142,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/common/wait_error.c:143,1
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/common/wait_error.c:144,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/common/wait_error.c:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - exit_status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 148
    functionName: wait_result_to_exit_code
    functionSourceFile: /src/postgres/src/common/wait_error.c
    functionUses: 1
    functionsReached:
    - WTERMSIG
    - WIFSIGNALED
    - WIFEXITED
    - WEXITSTATUS
    linkageType: ''
    returnType: int
    signature: int wait_result_to_exit_code(int exit_status)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/common/percentrepl.c:63,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/common/percentrepl.c:73,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/percentrepl.c:79,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/common/percentrepl.c:80,1
    - Dst: exit
      Src: /src/postgres/src/common/percentrepl.c:81,1
    - Dst: ereport
      Src: /src/postgres/src/common/percentrepl.c:83,1
    - Dst: errcode
      Src: /src/postgres/src/common/percentrepl.c:84,1
    - Dst: errmsg
      Src: /src/postgres/src/common/percentrepl.c:85,1
    - Dst: errdetail
      Src: /src/postgres/src/common/percentrepl.c:86,1
    - Dst: va_start
      Src: /src/postgres/src/common/percentrepl.c:97,1
    - Dst: va_arg
      Src: /src/postgres/src/common/percentrepl.c:100,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/common/percentrepl.c:106,1
    - Dst: va_end
      Src: /src/postgres/src/common/percentrepl.c:113,1
    - Dst: pg_log_error
      Src: /src/postgres/src/common/percentrepl.c:118,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/common/percentrepl.c:119,1
    - Dst: exit
      Src: /src/postgres/src/common/percentrepl.c:120,1
    - Dst: ereport
      Src: /src/postgres/src/common/percentrepl.c:122,1
    - Dst: errcode
      Src: /src/postgres/src/common/percentrepl.c:123,1
    - Dst: errmsg
      Src: /src/postgres/src/common/percentrepl.c:124,1
    - Dst: errdetail
      Src: /src/postgres/src/common/percentrepl.c:125,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/common/percentrepl.c:132,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - instr
    - param_name
    - letters
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 137
    functionName: replace_percent_placeholders
    functionSourceFile: /src/postgres/src/common/percentrepl.c
    functionUses: 1
    functionsReached:
    - va_end
    - errcode
    - va_start
    - appendStringInfoString
    - pg_log_error_detail
    - initStringInfo
    - ereport
    - errmsg
    - errdetail
    - pg_log_error
    - exit
    - va_arg
    - appendStringInfoChar
    linkageType: ''
    returnType: char
    signature: 'char *

      replace_percent_placeholders(const char *instr, const char *param_name, const
      char *letters, ...)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: ALLOC
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: FREE
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/common/cryptohash_openssl.c:93,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/common/cryptohash_openssl.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - ctx
    argTypes:
    - ResourceOwner
    - pg_cryptohash_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: ResourceOwnerRememberCryptoHash
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerRemember
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerRememberCryptoHash(ResourceOwner owner, pg_cryptohash_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerForget
      Src: /src/postgres/src/common/cryptohash_openssl.c:98,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/common/cryptohash_openssl.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - ctx
    argTypes:
    - ResourceOwner
    - pg_cryptohash_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: ResourceOwnerForgetCryptoHash
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerForget
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerForgetCryptoHash(ResourceOwner owner, pg_cryptohash_ctx
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERR_reason_error_string
      Src: /src/postgres/src/common/cryptohash_openssl.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ecode
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: SSLerrmessage
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 3
    functionsReached:
    - ERR_reason_error_string
    linkageType: ''
    returnType: char
    signature: 'char *

      SSLerrmessage(unsigned long ecode)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/common/cryptohash_openssl.c:132,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/cryptohash_openssl.c:135,1
    - Dst: memset
      Src: /src/postgres/src/common/cryptohash_openssl.c:138,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/common/cryptohash_openssl.c:148,1
    - Dst: EVP_MD_CTX_create
      Src: /src/postgres/src/common/cryptohash_openssl.c:149,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/common/cryptohash_openssl.c:153,1
    - Dst: FREE
      Src: /src/postgres/src/common/cryptohash_openssl.c:154,1
    - Dst: ereport
      Src: /src/postgres/src/common/cryptohash_openssl.c:156,1
    - Dst: errcode
      Src: /src/postgres/src/common/cryptohash_openssl.c:157,1
    - Dst: errmsg
      Src: /src/postgres/src/common/cryptohash_openssl.c:158,1
    - Dst: ResourceOwnerRememberCryptoHash
      Src: /src/postgres/src/common/cryptohash_openssl.c:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - type
    argTypes:
    - pg_cryptohash_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 170
    functionName: pg_cryptohash_create
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 8
    functionsReached:
    - ResourceOwnerEnlarge
    - ALLOC
    - explicit_bzero
    - errcode
    - ResourceOwnerRememberCryptoHash
    - FREE
    - ereport
    - ERR_clear_error
    - EVP_MD_CTX_create
    - memset
    - errmsg
    linkageType: ''
    returnType: pg_cryptohash_ctx
    signature: 'pg_cryptohash_ctx *

      pg_cryptohash_create(pg_cryptohash_type type)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestInit_ex
      Src: /src/postgres/src/common/cryptohash_openssl.c:188,1
    - Dst: EVP_md5
      Src: /src/postgres/src/common/cryptohash_openssl.c:188,1
    - Dst: EVP_DigestInit_ex
      Src: /src/postgres/src/common/cryptohash_openssl.c:191,1
    - Dst: EVP_sha1
      Src: /src/postgres/src/common/cryptohash_openssl.c:191,1
    - Dst: EVP_DigestInit_ex
      Src: /src/postgres/src/common/cryptohash_openssl.c:194,1
    - Dst: EVP_sha224
      Src: /src/postgres/src/common/cryptohash_openssl.c:194,1
    - Dst: EVP_DigestInit_ex
      Src: /src/postgres/src/common/cryptohash_openssl.c:197,1
    - Dst: EVP_sha256
      Src: /src/postgres/src/common/cryptohash_openssl.c:197,1
    - Dst: EVP_DigestInit_ex
      Src: /src/postgres/src/common/cryptohash_openssl.c:200,1
    - Dst: EVP_sha384
      Src: /src/postgres/src/common/cryptohash_openssl.c:200,1
    - Dst: EVP_DigestInit_ex
      Src: /src/postgres/src/common/cryptohash_openssl.c:203,1
    - Dst: EVP_sha512
      Src: /src/postgres/src/common/cryptohash_openssl.c:203,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/common/cryptohash_openssl.c:210,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/common/cryptohash_openssl.c:210,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/common/cryptohash_openssl.c:218,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_cryptohash_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 222
    functionName: pg_cryptohash_init
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 8
    functionsReached:
    - EVP_DigestInit_ex
    - EVP_md5
    - EVP_sha1
    - SSLerrmessage
    - EVP_sha256
    - ERR_clear_error
    - EVP_sha384
    - EVP_sha512
    - ERR_get_error
    - EVP_sha224
    linkageType: ''
    returnType: int
    signature: int pg_cryptohash_init(pg_cryptohash_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestUpdate
      Src: /src/postgres/src/common/cryptohash_openssl.c:237,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/common/cryptohash_openssl.c:242,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/common/cryptohash_openssl.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - data
    - len
    argTypes:
    - pg_cryptohash_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 247
    functionName: pg_cryptohash_update
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 9
    functionsReached:
    - EVP_DigestUpdate
    - SSLerrmessage
    - ERR_get_error
    linkageType: ''
    returnType: int
    signature: int pg_cryptohash_update(pg_cryptohash_ctx *ctx, const uint8 *data,
      size_t len)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestFinal_ex
      Src: /src/postgres/src/common/cryptohash_openssl.c:308,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/common/cryptohash_openssl.c:313,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/common/cryptohash_openssl.c:313,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 3
    argNames:
    - ctx
    - dest
    - len
    argTypes:
    - pg_cryptohash_ctx*
    - uint8*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 318
    functionName: pg_cryptohash_final
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 7
    functionsReached:
    - EVP_DigestFinal_ex
    - SSLerrmessage
    - ERR_get_error
    linkageType: ''
    returnType: int
    signature: int pg_cryptohash_final(pg_cryptohash_ctx *ctx, uint8 *dest, size_t
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_destroy
      Src: /src/postgres/src/common/cryptohash_openssl.c:331,1
    - Dst: ResourceOwnerForgetCryptoHash
      Src: /src/postgres/src/common/cryptohash_openssl.c:335,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/common/cryptohash_openssl.c:338,1
    - Dst: FREE
      Src: /src/postgres/src/common/cryptohash_openssl.c:339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_cryptohash_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 340
    functionName: pg_cryptohash_free
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 8
    functionsReached:
    - EVP_MD_CTX_destroy
    - FREE
    - explicit_bzero
    - ResourceOwnerForgetCryptoHash
    linkageType: ''
    returnType: void
    signature: void pg_cryptohash_free(pg_cryptohash_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/common/cryptohash_openssl.c:356,1
    - Dst: _
      Src: /src/postgres/src/common/cryptohash_openssl.c:368,1
    - Dst: _
      Src: /src/postgres/src/common/cryptohash_openssl.c:370,1
    - Dst: _
      Src: /src/postgres/src/common/cryptohash_openssl.c:372,1
    - Dst: Assert
      Src: /src/postgres/src/common/cryptohash_openssl.c:375,1
    - Dst: _
      Src: /src/postgres/src/common/cryptohash_openssl.c:376,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - pg_cryptohash_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 377
    functionName: pg_cryptohash_error
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 6
    functionsReached:
    - Assert
    - _
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_cryptohash_error(pg_cryptohash_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/common/cryptohash_openssl.c:385,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/common/cryptohash_openssl.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 389
    functionName: ResOwnerReleaseCryptoHash
    functionSourceFile: /src/postgres/src/common/cryptohash_openssl.c
    functionUses: 0
    functionsReached:
    - pg_cryptohash_free
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ResOwnerReleaseCryptoHash(Datum res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/unicode/case_test.c:58,1
    - Dst: pg_u_isalnum
      Src: /src/postgres/src/common/unicode/case_test.c:60,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/common/unicode/case_test.c:67,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/common/unicode/case_test.c:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 50
    functionDepth: 4
    functionLinenumber: 50
    functionLinenumberEnd: 76
    functionName: initcap_wbnext
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - pg_u_isalnum
    - unicode_utf8len
    - utf8_to_unicode
    linkageType: ''
    returnType: size_t
    signature: size_t initcap_wbnext(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_lowercase_simple
      Src: /src/postgres/src/common/unicode/case_test.c:83,1
    - Dst: unicode_titlecase_simple
      Src: /src/postgres/src/common/unicode/case_test.c:84,1
    - Dst: unicode_uppercase_simple
      Src: /src/postgres/src/common/unicode/case_test.c:85,1
    - Dst: unicode_casefold_simple
      Src: /src/postgres/src/common/unicode/case_test.c:86,1
    - Dst: u_tolower
      Src: /src/postgres/src/common/unicode/case_test.c:87,1
    - Dst: u_totitle
      Src: /src/postgres/src/common/unicode/case_test.c:88,1
    - Dst: u_toupper
      Src: /src/postgres/src/common/unicode/case_test.c:89,1
    - Dst: u_foldCase
      Src: /src/postgres/src/common/unicode/case_test.c:90,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:95,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:96,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:98,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:100,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - code
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 103
    functionName: icu_test_simple
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - unicode_titlecase_simple
    - unicode_casefold_simple
    - u_totitle
    - unicode_uppercase_simple
    - printf
    - unicode_lowercase_simple
    - u_tolower
    - exit
    - u_foldCase
    - u_toupper
    linkageType: ''
    returnType: void
    signature: void icu_test_simple(char32_t code)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:117,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:123,1
    - Dst: unicode_strlower
      Src: /src/postgres/src/common/unicode/case_test.c:130,1
    - Dst: unicode_strtitle
      Src: /src/postgres/src/common/unicode/case_test.c:131,1
    - Dst: unicode_strupper
      Src: /src/postgres/src/common/unicode/case_test.c:132,1
    - Dst: unicode_strfold
      Src: /src/postgres/src/common/unicode/case_test.c:133,1
    - Dst: ucasemap_utf8ToLower
      Src: /src/postgres/src/common/unicode/case_test.c:135,1
    - Dst: ucasemap_utf8ToTitle
      Src: /src/postgres/src/common/unicode/case_test.c:137,1
    - Dst: ucasemap_utf8ToUpper
      Src: /src/postgres/src/common/unicode/case_test.c:139,1
    - Dst: ucasemap_utf8FoldCase
      Src: /src/postgres/src/common/unicode/case_test.c:141,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:143,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:145,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:147,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:149,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:151,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:153,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:155,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:157,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:159,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:161,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:163,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 167
    functionName: icu_test_full
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - unicode_strfold
    - unicode_strupper
    - strcmp
    - ucasemap_utf8ToUpper
    - unicode_strtitle
    - unicode_strlower
    - ucasemap_utf8ToLower
    - ucasemap_utf8FoldCase
    - strlen
    - ucasemap_utf8ToTitle
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void icu_test_full(char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode/case_test.c:180,1
    - Dst: u_charType
      Src: /src/postgres/src/common/unicode/case_test.c:184,1
    - Dst: icu_test_simple
      Src: /src/postgres/src/common/unicode/case_test.c:193,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/unicode/case_test.c:194,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:195,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:202,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:205,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 207
    functionName: test_icu
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - unicode_to_utf8
    - icu_test_full
    - printf
    - unicode_category
    - icu_test_simple
    - u_charType
    linkageType: ''
    returnType: void
    signature: void test_icu(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:213,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:214,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:215,1
    - Dst: malloc
      Src: /src/postgres/src/common/unicode/case_test.c:216,1
    - Dst: malloc
      Src: /src/postgres/src/common/unicode/case_test.c:217,1
    - Dst: malloc
      Src: /src/postgres/src/common/unicode/case_test.c:218,1
    - Dst: memcpy
      Src: /src/postgres/src/common/unicode/case_test.c:221,1
    - Dst: memset
      Src: /src/postgres/src/common/unicode/case_test.c:224,1
    - Dst: tfunc
      Src: /src/postgres/src/common/unicode/case_test.c:225,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:226,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:228,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:229,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:230,1
    - Dst: memcmp
      Src: /src/postgres/src/common/unicode/case_test.c:232,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:234,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:236,1
    - Dst: memset
      Src: /src/postgres/src/common/unicode/case_test.c:240,1
    - Dst: tfunc
      Src: /src/postgres/src/common/unicode/case_test.c:241,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:242,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:244,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:245,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:246,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:248,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:250,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:252,1
    - Dst: free
      Src: /src/postgres/src/common/unicode/case_test.c:255,1
    - Dst: free
      Src: /src/postgres/src/common/unicode/case_test.c:256,1
    - Dst: free
      Src: /src/postgres/src/common/unicode/case_test.c:257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - tfunc
    - test_string
    - expected
    argTypes:
    - TestFunc
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 258
    functionName: test_convert
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - memcmp
    - memcpy
    - strcmp
    - malloc
    - strlen
    - tfunc
    - memset
    - printf
    - free
    - exit
    linkageType: ''
    returnType: void
    signature: void test_convert(TestFunc tfunc, const char *test_string, const char
      *expected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strlower
      Src: /src/postgres/src/common/unicode/case_test.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: tfunc_lower
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - unicode_strlower
    linkageType: ''
    returnType: size_t
    signature: "size_t tfunc_lower(char *dst, size_t dstsize, const char *src,\n\t\t\tsize_t
      srclen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strtitle
      Src: /src/postgres/src/common/unicode/case_test.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 284
    functionName: tfunc_title
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - unicode_strtitle
    linkageType: ''
    returnType: size_t
    signature: "size_t tfunc_title(char *dst, size_t dstsize, const char *src,\n\t\t\tsize_t
      srclen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strupper
      Src: /src/postgres/src/common/unicode/case_test.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 293
    functionName: tfunc_upper
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - unicode_strupper
    linkageType: ''
    returnType: size_t
    signature: "size_t tfunc_upper(char *dst, size_t dstsize, const char *src,\n\t\t\tsize_t
      srclen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strfold
      Src: /src/postgres/src/common/unicode/case_test.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 302
    functionName: tfunc_fold
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - unicode_strfold
    linkageType: ''
    returnType: size_t
    signature: "size_t tfunc_fold(char *dst, size_t dstsize, const char *src,\n\t\t
      \  size_t srclen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:311,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:313,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:315,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:317,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:319,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:320,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:321,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:322,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:324,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:325,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:326,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:327,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:329,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:330,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:332,1
    - Dst: unicode_strfold
      Src: /src/postgres/src/common/unicode/case_test.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode/case_test.c:336,1
    - Dst: unicode_strfold
      Src: /src/postgres/src/common/unicode/case_test.c:338,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode/case_test.c:339,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:342,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:343,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:344,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:345,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:346,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:347,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:348,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:349,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:350,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:352,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 304
    functionDepth: 3
    functionLinenumber: 304
    functionLinenumberEnd: 356
    functionName: test_convert_case
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - unicode_strfold
    - Assert
    - icu_test_full
    - printf
    - test_convert
    linkageType: ''
    returnType: void
    signature: void test_convert_case(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ucasemap_open
      Src: /src/postgres/src/common/unicode/case_test.c:368,1
    - Dst: U_FAILURE
      Src: /src/postgres/src/common/unicode/case_test.c:369,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:371,1
    - Dst: u_errorName
      Src: /src/postgres/src/common/unicode/case_test.c:372,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:373,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:377,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:379,1
    - Dst: test_icu
      Src: /src/postgres/src/common/unicode/case_test.c:380,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:382,1
    - Dst: test_convert_case
      Src: /src/postgres/src/common/unicode/case_test.c:385,1
    - Dst: ucasemap_close
      Src: /src/postgres/src/common/unicode/case_test.c:388,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 358
    functionDepth: 4
    functionLinenumber: 358
    functionLinenumberEnd: 391
    functionName: main
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 14
    functionsReached:
    - test_icu
    - ucasemap_close
    - ucasemap_open
    - printf
    - U_FAILURE
    - test_convert_case
    - exit
    - u_errorName
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/common/unicode/norm_test.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - char32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 41
    functionName: print_wchar_str
    functionSourceFile: /src/postgres/src/common/unicode/norm_test.c
    functionUses: 0
    functionsReached:
    - sprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      print_wchar_str(const char32_t *s)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char32_t*
    - char32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 57
    functionName: pg_wcscmp
    functionSourceFile: /src/postgres/src/common/unicode/norm_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pg_wcscmp(const char32_t *s1, const char32_t *s2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_normalize
      Src: /src/postgres/src/common/unicode/norm_test.c:70,1
    - Dst: pg_wcscmp
      Src: /src/postgres/src/common/unicode/norm_test.c:72,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/norm_test.c:74,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/norm_test.c:75,1
    - Dst: print_wchar_str
      Src: /src/postgres/src/common/unicode/norm_test.c:75,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/norm_test.c:76,1
    - Dst: print_wchar_str
      Src: /src/postgres/src/common/unicode/norm_test.c:76,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/norm_test.c:77,1
    - Dst: print_wchar_str
      Src: /src/postgres/src/common/unicode/norm_test.c:77,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/norm_test.c:78,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/norm_test.c:79,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/norm_test.c:84,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/norm_test.c:85,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 86
    functionName: main
    functionSourceFile: /src/postgres/src/common/unicode/norm_test.c
    functionUses: 14
    functionsReached:
    - printf
    - exit
    - print_wchar_str
    - pg_wcscmp
    - unicode_normalize
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/common/unicode/category_test.c:42,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode/category_test.c:44,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode/category_test.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - version
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 48
    functionName: parse_unicode_version
    functionSourceFile: /src/postgres/src/common/unicode/category_test.c
    functionUses: 0
    functionsReached:
    - Assert
    - sscanf
    linkageType: ''
    returnType: int
    signature: int parse_unicode_version(const char *version)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unicode_category
      Src: /src/postgres/src/common/unicode/category_test.c:65,1
    - Dst: u_charType
      Src: /src/postgres/src/common/unicode/category_test.c:66,1
    - Dst: pg_u_prop_alphabetic
      Src: /src/postgres/src/common/unicode/category_test.c:69,1
    - Dst: pg_u_prop_lowercase
      Src: /src/postgres/src/common/unicode/category_test.c:70,1
    - Dst: pg_u_prop_uppercase
      Src: /src/postgres/src/common/unicode/category_test.c:71,1
    - Dst: pg_u_prop_cased
      Src: /src/postgres/src/common/unicode/category_test.c:72,1
    - Dst: pg_u_prop_case_ignorable
      Src: /src/postgres/src/common/unicode/category_test.c:73,1
    - Dst: pg_u_prop_white_space
      Src: /src/postgres/src/common/unicode/category_test.c:74,1
    - Dst: pg_u_prop_hex_digit
      Src: /src/postgres/src/common/unicode/category_test.c:75,1
    - Dst: pg_u_prop_join_control
      Src: /src/postgres/src/common/unicode/category_test.c:76,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:78,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:79,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:80,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:81,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:82,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:83,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:84,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:85,1
    - Dst: pg_u_isalpha
      Src: /src/postgres/src/common/unicode/category_test.c:99,1
    - Dst: pg_u_islower
      Src: /src/postgres/src/common/unicode/category_test.c:100,1
    - Dst: pg_u_isupper
      Src: /src/postgres/src/common/unicode/category_test.c:101,1
    - Dst: pg_u_ispunct
      Src: /src/postgres/src/common/unicode/category_test.c:102,1
    - Dst: pg_u_isdigit
      Src: /src/postgres/src/common/unicode/category_test.c:103,1
    - Dst: pg_u_isxdigit
      Src: /src/postgres/src/common/unicode/category_test.c:104,1
    - Dst: pg_u_isalnum
      Src: /src/postgres/src/common/unicode/category_test.c:105,1
    - Dst: pg_u_isspace
      Src: /src/postgres/src/common/unicode/category_test.c:106,1
    - Dst: pg_u_isblank
      Src: /src/postgres/src/common/unicode/category_test.c:107,1
    - Dst: pg_u_iscntrl
      Src: /src/postgres/src/common/unicode/category_test.c:108,1
    - Dst: pg_u_isgraph
      Src: /src/postgres/src/common/unicode/category_test.c:109,1
    - Dst: pg_u_isprint
      Src: /src/postgres/src/common/unicode/category_test.c:110,1
    - Dst: u_isUAlphabetic
      Src: /src/postgres/src/common/unicode/category_test.c:112,1
    - Dst: u_isULowercase
      Src: /src/postgres/src/common/unicode/category_test.c:113,1
    - Dst: u_isUUppercase
      Src: /src/postgres/src/common/unicode/category_test.c:114,1
    - Dst: u_ispunct
      Src: /src/postgres/src/common/unicode/category_test.c:115,1
    - Dst: u_isdigit
      Src: /src/postgres/src/common/unicode/category_test.c:116,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:117,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:119,1
    - Dst: u_isUWhiteSpace
      Src: /src/postgres/src/common/unicode/category_test.c:121,1
    - Dst: u_isblank
      Src: /src/postgres/src/common/unicode/category_test.c:122,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:124,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:126,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:153,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:154,1
    - Dst: unicode_category_abbrev
      Src: /src/postgres/src/common/unicode/category_test.c:155,1
    - Dst: unicode_category_string
      Src: /src/postgres/src/common/unicode/category_test.c:156,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:157,1
    - Dst: unicode_category_abbrev
      Src: /src/postgres/src/common/unicode/category_test.c:158,1
    - Dst: unicode_category_string
      Src: /src/postgres/src/common/unicode/category_test.c:159,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:160,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/category_test.c:161,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:173,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:174,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:178,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:182,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/category_test.c:183,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:199,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:200,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:202,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:204,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/category_test.c:205,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:213,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:216,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:219,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 220
    functionName: icu_test
    functionSourceFile: /src/postgres/src/common/unicode/category_test.c
    functionUses: 0
    functionsReached:
    - pg_u_isgraph
    - pg_u_iscntrl
    - u_isdigit
    - printf
    - pg_u_isprint
    - pg_u_prop_case_ignorable
    - pg_u_prop_alphabetic
    - u_isULowercase
    - pg_u_prop_cased
    - pg_u_prop_white_space
    - pg_u_isblank
    - u_ispunct
    - pg_u_prop_join_control
    - pg_u_isalpha
    - u_isUAlphabetic
    - u_isUWhiteSpace
    - pg_u_prop_hex_digit
    - u_isUUppercase
    - u_charType
    - pg_u_islower
    - pg_u_prop_lowercase
    - pg_u_isxdigit
    - u_isblank
    - exit
    - unicode_category_abbrev
    - pg_u_ispunct
    - pg_u_isdigit
    - unicode_category_string
    - pg_u_prop_uppercase
    - pg_u_isspace
    - pg_u_isalnum
    - pg_u_isupper
    - u_hasBinaryProperty
    - unicode_category
    linkageType: ''
    returnType: void
    signature: void icu_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parse_unicode_version
      Src: /src/postgres/src/common/unicode/category_test.c:226,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:227,1
    - Dst: parse_unicode_version
      Src: /src/postgres/src/common/unicode/category_test.c:230,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:231,1
    - Dst: icu_test
      Src: /src/postgres/src/common/unicode/category_test.c:233,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 223
    functionDepth: 5
    functionLinenumber: 223
    functionLinenumberEnd: 237
    functionName: main
    functionSourceFile: /src/postgres/src/common/unicode/category_test.c
    functionUses: 14
    functionsReached:
    - parse_unicode_version
    - printf
    - icu_test
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/tutorial/complex.c:33,1
    - Dst: sscanf
      Src: /src/postgres/src/tutorial/complex.c:38,1
    - Dst: ereport
      Src: /src/postgres/src/tutorial/complex.c:39,1
    - Dst: errcode
      Src: /src/postgres/src/tutorial/complex.c:40,1
    - Dst: errmsg
      Src: /src/postgres/src/tutorial/complex.c:41,1
    - Dst: palloc_object
      Src: /src/postgres/src/tutorial/complex.c:44,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/tutorial/complex.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 48
    functionName: complex_in
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_GETARG_CSTRING
    - sscanf
    - ereport
    - errmsg
    - palloc_object
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum complex_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:55,1
    - Dst: psprintf
      Src: /src/postgres/src/tutorial/complex.c:58,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/tutorial/complex.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 60
    functionName: complex_out
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - psprintf
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum complex_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:73,1
    - Dst: palloc_object
      Src: /src/postgres/src/tutorial/complex.c:76,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/tutorial/complex.c:77,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/tutorial/complex.c:78,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/tutorial/complex.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: complex_recv
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - pq_getmsgfloat8
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum complex_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:87,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/tutorial/complex.c:90,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/tutorial/complex.c:91,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/tutorial/complex.c:92,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/tutorial/complex.c:93,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/tutorial/complex.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 94
    functionName: complex_send
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendfloat8
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum complex_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:107,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:108,1
    - Dst: palloc_object
      Src: /src/postgres/src/tutorial/complex.c:111,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/tutorial/complex.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 115
    functionName: complex_add
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum complex_add(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: Mag
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Mag(c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Mag
      Src: /src/postgres/src/tutorial/complex.c:134,1
    - Dst: Mag
      Src: /src/postgres/src/tutorial/complex.c:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Complex*
    - Complex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 142
    functionName: complex_abs_cmp_internal
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - Mag
    linkageType: ''
    returnType: int
    signature: int complex_abs_cmp_internal(Complex * a, Complex * b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:150,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:151,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/complex.c:153,1
    - Dst: complex_abs_cmp_internal
      Src: /src/postgres/src/tutorial/complex.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 154
    functionName: complex_abs_lt
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - complex_abs_cmp_internal
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum complex_abs_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:161,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:162,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/complex.c:164,1
    - Dst: complex_abs_cmp_internal
      Src: /src/postgres/src/tutorial/complex.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 165
    functionName: complex_abs_le
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - complex_abs_cmp_internal
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum complex_abs_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:172,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:173,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/complex.c:175,1
    - Dst: complex_abs_cmp_internal
      Src: /src/postgres/src/tutorial/complex.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 176
    functionName: complex_abs_eq
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - complex_abs_cmp_internal
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum complex_abs_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:183,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:184,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/complex.c:186,1
    - Dst: complex_abs_cmp_internal
      Src: /src/postgres/src/tutorial/complex.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: complex_abs_ge
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - complex_abs_cmp_internal
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum complex_abs_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:194,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:195,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/complex.c:197,1
    - Dst: complex_abs_cmp_internal
      Src: /src/postgres/src/tutorial/complex.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 198
    functionName: complex_abs_gt
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - complex_abs_cmp_internal
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum complex_abs_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:205,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/tutorial/complex.c:206,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/tutorial/complex.c:208,1
    - Dst: complex_abs_cmp_internal
      Src: /src/postgres/src/tutorial/complex.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 209
    functionName: complex_abs_cmp
    functionSourceFile: /src/postgres/src/tutorial/complex.c
    functionUses: 0
    functionsReached:
    - complex_abs_cmp_internal
    - PG_GETARG_POINTER
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum complex_abs_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/tutorial/funcs.c:28,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/tutorial/funcs.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: add_one
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum add_one(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/tutorial/funcs.c:41,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/tutorial/funcs.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: add_one_float8
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum add_one_float8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/tutorial/funcs.c:51,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/tutorial/funcs.c:52,1
    - Dst: palloc_object
      Src: /src/postgres/src/tutorial/funcs.c:53,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/tutorial/funcs.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 59
    functionName: makepoint
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum makepoint(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/tutorial/funcs.c:68,1
    - Dst: palloc
      Src: /src/postgres/src/tutorial/funcs.c:75,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:75,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/tutorial/funcs.c:77,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:77,1
    - Dst: memcpy
      Src: /src/postgres/src/tutorial/funcs.c:83,1
    - Dst: VARDATA
      Src: /src/postgres/src/tutorial/funcs.c:83,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/tutorial/funcs.c:84,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:85,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/tutorial/funcs.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 65
    functionDepth: 4
    functionLinenumber: 65
    functionLinenumberEnd: 87
    functionName: copytext
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - PG_RETURN_TEXT_P
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - SET_VARSIZE
    - palloc
    - VARDATA
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum copytext(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/tutorial/funcs.c:94,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/tutorial/funcs.c:95,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:96,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:97,1
    - Dst: palloc
      Src: /src/postgres/src/tutorial/funcs.c:99,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/tutorial/funcs.c:101,1
    - Dst: memcpy
      Src: /src/postgres/src/tutorial/funcs.c:102,1
    - Dst: VARDATA
      Src: /src/postgres/src/tutorial/funcs.c:102,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/tutorial/funcs.c:102,1
    - Dst: memcpy
      Src: /src/postgres/src/tutorial/funcs.c:103,1
    - Dst: VARDATA
      Src: /src/postgres/src/tutorial/funcs.c:103,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/tutorial/funcs.c:103,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/tutorial/funcs.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 105
    functionName: concat_text
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - PG_RETURN_TEXT_P
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - SET_VARSIZE
    - palloc
    - VARDATA
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum concat_text(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/tutorial/funcs.c:114,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/tutorial/funcs.c:115,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/tutorial/funcs.c:116,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/tutorial/funcs.c:119,1
    - Dst: DirectFunctionCall2Coll
      Src: /src/postgres/src/tutorial/funcs.c:119,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/tutorial/funcs.c:121,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/tutorial/funcs.c:122,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/funcs.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 124
    functionName: t_starts_with
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall2Coll
    - PointerGetDatum
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - DatumGetBool
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum t_starts_with(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/tutorial/funcs.c:133,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/tutorial/funcs.c:134,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/tutorial/funcs.c:138,1
    - Dst: GetAttributeByName
      Src: /src/postgres/src/tutorial/funcs.c:138,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/funcs.c:140,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/funcs.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 147
    functionName: c_overpaid
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_HEAPTUPLEHEADER
    - DatumGetInt32
    - PG_RETURN_BOOL
    - GetAttributeByName
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum c_overpaid(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:82,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:91,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:94,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:100,1
    - Dst: strtok_r
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:104,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:109,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:111,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:113,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:115,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:117,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:120,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:121,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:128,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:129,1
    - Dst: strtok_r
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:134,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/oauth-debug.h:137,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 140
    functionName: oauth_parse_debug_flags
    functionSourceFile: /src/postgres/src/interfaces/libpq/oauth-debug.h
    functionUses: 0
    functionsReached:
    - strcmp
    - libpq_gettext
    - getenv
    - strncmp
    - strdup
    - free
    - fprintf
    - strtok_r
    linkageType: ''
    returnType: uint32
    signature: uint32 oauth_parse_debug_flags(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gss_display_status
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:34,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:37,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:38,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:39,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - str
    - stat
    - type
    argTypes:
    - PQExpBuffer
    - OM_uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 41
    functionName: pg_GSS_error_int
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendBinaryPQExpBuffer
    - gss_release_buffer
    - gss_display_status
    linkageType: ''
    returnType: void
    signature: void pg_GSS_error_int(PQExpBuffer str, OM_uint32 stat, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:50,1
    - Dst: pg_GSS_error_int
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:51,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:52,1
    - Dst: pg_GSS_error_int
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:53,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - mprefix
    - conn
    - maj_stat
    - min_stat
    argTypes:
    - char*
    - PGconn*
    - OM_uint32
    - OM_uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: pg_GSS_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBuffer
    - pg_GSS_error_int
    linkageType: ''
    returnType: void
    signature: "void pg_GSS_error(const char *mprefix, PGconn *conn,\n\t\t\t OM_uint32
      maj_stat, OM_uint32 min_stat)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gss_acquire_cred
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - cred_out
    argTypes:
    - gss_cred_id_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 76
    functionName: pg_GSS_have_cred_cache
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c
    functionUses: 0
    functionsReached:
    - gss_acquire_cred
    linkageType: ''
    returnType: bool
    signature: bool pg_GSS_have_cred_cache(gss_cred_id_t *cred_out)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQhost
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:94,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:97,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:105,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:105,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:106,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:109,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:112,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:114,1
    - Dst: gss_import_name
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:116,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:118,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:122,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c:122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 128
    functionName: pg_GSS_load_servicename
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-gssapi-common.c
    functionUses: 0
    functionsReached:
    - pg_GSS_error
    - PQhost
    - libpq_gettext
    - malloc
    - strlen
    - gss_import_name
    - free
    - libpq_append_conn_error
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pg_GSS_load_servicename(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: PQExpBufferBroken
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PQExpBufferBroken(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: PQExpBufferDataBroken
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PQExpBufferDataBroken(buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:53,1
    - Dst: unconstify
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: markPQExpBufferBroken
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 0
    functionsReached:
    - free
    - unconstify
    linkageType: ''
    returnType: void
    signature: void markPQExpBufferBroken(PQExpBuffer str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:76,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: createPQExpBuffer
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 193
    functionsReached:
    - initPQExpBuffer
    - malloc
    linkageType: ''
    returnType: PQExpBuffer
    signature: PQExpBuffer createPQExpBuffer(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:92,1
    - Dst: unconstify
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - str
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 105
    functionName: initPQExpBuffer
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 122
    functionsReached:
    - malloc
    - unconstify
    linkageType: ''
    returnType: void
    signature: void initPQExpBuffer(PQExpBuffer str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:118,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: destroyPQExpBuffer
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 185
    functionsReached:
    - termPQExpBuffer
    - free
    linkageType: ''
    returnType: void
    signature: void destroyPQExpBuffer(PQExpBuffer str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:132,1
    - Dst: unconstify
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 137
    functionName: termPQExpBuffer
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 108
    functionsReached:
    - free
    - unconstify
    linkageType: ''
    returnType: void
    signature: void termPQExpBuffer(PQExpBuffer str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - str
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 161
    functionName: resetPQExpBuffer
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 55
    functionsReached:
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void resetPQExpBuffer(PQExpBuffer str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:177,1
    - Dst: markPQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:187,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:215,1
    - Dst: markPQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:223,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - str
    - needed
    argTypes:
    - PQExpBuffer
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 225
    functionName: enlargePQExpBuffer
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 6
    functionsReached:
    - realloc
    - markPQExpBufferBroken
    - PQExpBufferBroken
    linkageType: ''
    returnType: int
    signature: int enlargePQExpBuffer(PQExpBuffer str, size_t needed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:241,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:243,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:250,1
    - Dst: appendPQExpBufferVA
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:251,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - str
    - fmt
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 254
    functionName: printfPQExpBuffer
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 97
    functionsReached:
    - va_end
    - va_start
    - resetPQExpBuffer
    - PQExpBufferBroken
    - appendPQExpBufferVA
    linkageType: ''
    returnType: void
    signature: void printfPQExpBuffer(PQExpBuffer str, const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:271,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:278,1
    - Dst: appendPQExpBufferVA
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:279,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - str
    - fmt
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 282
    functionName: appendPQExpBuffer
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 225
    functionsReached:
    - va_start
    - va_end
    - appendPQExpBufferVA
    - PQExpBufferBroken
    linkageType: ''
    returnType: void
    signature: void appendPQExpBuffer(PQExpBuffer str, const char *fmt, ...)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vsnprintf
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:308,1
    - Dst: unlikely
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:314,1
    - Dst: markPQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:316,1
    - Dst: unlikely
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:335,1
    - Dst: markPQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:337,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:355,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - str
    - fmt
    - args
    argTypes:
    - PQExpBuffer
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 293
    functionDepth: 3
    functionLinenumber: 293
    functionLinenumberEnd: 359
    functionName: appendPQExpBufferVA
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 2
    functionsReached:
    - vsnprintf
    - unlikely
    - markPQExpBufferBroken
    - enlargePQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool appendPQExpBufferVA(PQExpBuffer str, const char *fmt, va_list
      args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:369,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - data
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 370
    functionName: appendPQExpBufferStr
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 250
    functionsReached:
    - appendBinaryPQExpBuffer
    - strlen
    linkageType: ''
    returnType: void
    signature: void appendPQExpBufferStr(PQExpBuffer str, const char *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - str
    - ch
    argTypes:
    - PQExpBuffer
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 388
    functionName: appendPQExpBufferChar
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 82
    functionsReached:
    - enlargePQExpBuffer
    linkageType: ''
    returnType: void
    signature: void appendPQExpBufferChar(PQExpBuffer str, char ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:400,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/pqexpbuffer.c:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - str
    - data
    - datalen
    argTypes:
    - PQExpBuffer
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 396
    functionDepth: 3
    functionLinenumber: 396
    functionLinenumberEnd: 412
    functionName: appendBinaryPQExpBuffer
    functionSourceFile: /src/postgres/src/interfaces/libpq/pqexpbuffer.c
    functionUses: 6
    functionsReached:
    - memcpy
    - enlargePQExpBuffer
    linkageType: ''
    returnType: void
    signature: void appendBinaryPQExpBuffer(PQExpBuffer str, const char *data, size_t
      datalen)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:164,1
    - Dst: pqSetResultError
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:210,1
    - Dst: dupEvents
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:217,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:221,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 57
    argCount: 2
    argNames:
    - conn
    - status
    argTypes:
    - PGconn*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 238
    functionName: PQmakeEmptyPGresult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqSetResultError
    - dupEvents
    - malloc
    - PQclear
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQmakeEmptyPGresult(PGconn *conn, ExecStatusType status)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQresultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:267,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:273,1
    - Dst: pqResultStrdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:280,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - res
    - numAttributes
    - attDescs
    argTypes:
    - PGresult*
    - int
    - PGresAttDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 292
    functionName: PQsetResultAttrs
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQresultAlloc
    - pqResultStrdup
    - memcpy
    linkageType: ''
    returnType: int
    signature: int PQsetResultAttrs(PGresult *res, int numAttributes, PGresAttDesc
      *attDescs)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:327,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:333,1
    - Dst: PQsetResultAttrs
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:338,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:340,1
    - Dst: PQsetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:355,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:359,1
    - Dst: dupEvents
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:373,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:377,1
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:393,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 2
    argNames:
    - src
    - flags
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 318
    functionDepth: 2
    functionLinenumber: 318
    functionLinenumberEnd: 400
    functionName: PQcopyResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQsetResultAttrs
    - PQclear
    - PQmakeEmptyPGresult
    - PQsetvalue
    - dupEvents
    - proc
    - strcpy
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQcopyResult(const PGresult *src, int flags)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:419,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:429,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:433,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:434,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:437,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - events
    - count
    - memSize
    argTypes:
    - PGEvent*
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 442
    functionName: dupEvents
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - free
    - strlen
    - malloc
    - strdup
    linkageType: ''
    returnType: PGEvent
    signature: 'PGEvent *

      dupEvents(PGEvent *events, int count, size_t *memSize)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: check_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:463,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:469,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:482,1
    - Dst: pqAddTuple
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:496,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:515,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:519,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:531,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:532,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 46
    argCount: 5
    argNames:
    - res
    - tup_num
    - field_num
    - value
    - len
    argTypes:
    - PGresult*
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 535
    functionName: PQsetvalue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - memcpy
    - libpq_gettext
    - pqInternalNotice
    - pqAddTuple
    - pqResultAlloc
    - check_field_number
    linkageType: ''
    returnType: int
    signature: int PQsetvalue(PGresult *res, int tup_num, int field_num, char *value,
      int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - res
    - nBytes
    argTypes:
    - PGresult*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 551
    functionName: PQresultAlloc
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqResultAlloc
    linkageType: ''
    returnType: void
    signature: 'void *

      PQresultAlloc(PGresult *res, size_t nBytes)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:614,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:639,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 53
    argCount: 3
    argNames:
    - res
    - nBytes
    - isBinary
    argTypes:
    - PGresult*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 662
    functionName: pqResultAlloc
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - malloc
    linkageType: ''
    returnType: void
    signature: 'void *

      pqResultAlloc(PGresult *res, size_t nBytes, bool isBinary)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 668
    functionDepth: 0
    functionLinenumber: 668
    functionLinenumberEnd: 674
    functionName: PQresultMemorySize
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t PQresultMemorySize(const PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:683,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:683,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:686,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - res
    - str
    argTypes:
    - PGresult*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 680
    functionDepth: 2
    functionLinenumber: 680
    functionLinenumberEnd: 688
    functionName: pqResultStrdup
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqResultAlloc
    - strcpy
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      pqResultStrdup(PGresult *res, const char *str)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:712,1
    - Dst: pqResultStrdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:713,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:719,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - res
    - errorMessage
    - offset
    argTypes:
    - PGresult*
    - PQExpBuffer
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 697
    functionDepth: 3
    functionLinenumber: 697
    functionLinenumberEnd: 720
    functionName: pqSetResultError
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqResultStrdup
    - libpq_gettext
    - PQExpBufferBroken
    linkageType: ''
    returnType: void
    signature: void pqSetResultError(PGresult *res, PQExpBuffer errorMessage, int
      offset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:748,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:751,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:754,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:760,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:764,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:776,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 777
    functionName: PQclear
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 301
    functionsReached:
    - free
    - proc
    linkageType: ''
    returnType: void
    signature: void PQclear(PGresult *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:787,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 784
    functionDepth: 2
    functionLinenumber: 784
    functionLinenumberEnd: 792
    functionName: pqClearAsyncResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQclear
    linkageType: ''
    returnType: void
    signature: void pqClearAsyncResult(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 808
    functionDepth: 3
    functionLinenumber: 808
    functionLinenumberEnd: 815
    functionName: pqSaveErrorResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqClearAsyncResult
    linkageType: ''
    returnType: void
    signature: void pqSaveErrorResult(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:835,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:840,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:842,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 825
    functionDepth: 4
    functionLinenumber: 825
    functionLinenumberEnd: 843
    functionName: pqSaveWriteError
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqSaveErrorResult
    - libpq_append_conn_error
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void pqSaveWriteError(PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:880,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:892,1
    - Dst: pqSetResultError
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:900,1
    - Dst: unconstify
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:912,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 856
    functionDepth: 4
    functionLinenumber: 856
    functionLinenumberEnd: 932
    functionName: pqPrepareAsyncResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - libpq_append_conn_error
    - pqSetResultError
    - PQmakeEmptyPGresult
    - unconstify
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      pqPrepareAsyncResult(PGconn *conn)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:954,1
    - Dst: vsnprintf
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:955,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:955,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:956,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:960,1
    - Dst: pqSaveMessageField
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:968,1
    - Dst: pqSaveMessageField
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:969,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:969,1
    - Dst: pqSaveMessageField
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:970,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:977,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:977,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:979,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:981,1
    - Dst: PGresult*::noticeHooks::noticeRec
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:986,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:987,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - hooks
    - fmt
    argTypes:
    - PGNoticeHooks*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 943
    functionDepth: 2
    functionLinenumber: 943
    functionLinenumberEnd: 988
    functionName: pqInternalNotice
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - va_end
    - pqSaveMessageField
    - PQclear
    - va_start
    - libpq_gettext
    - PGresult*::noticeHooks::noticeRec
    - PQmakeEmptyPGresult
    - strlen
    - sprintf
    - pqResultAlloc
    - vsnprintf
    linkageType: ''
    returnType: void
    signature: void pqInternalNotice(const PGNoticeHooks *hooks, const char *fmt,
      ...)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1027,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1039,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1046,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1049,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - res
    - tup
    - errmsgp
    argTypes:
    - PGresult*
    - PGresAttValue*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 998
    functionDepth: 1
    functionLinenumber: 998
    functionLinenumberEnd: 1060
    functionName: pqAddTuple
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - libpq_gettext
    - realloc
    - malloc
    linkageType: ''
    returnType: bool
    signature: bool pqAddTuple(PGresult *res, PGresAttValue *tup, const char **errmsgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1071,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1073,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1078,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - res
    - code
    - value
    argTypes:
    - PGresult*
    - char
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1065
    functionDepth: 2
    functionLinenumber: 1065
    functionLinenumberEnd: 1081
    functionName: pqSaveMessageField
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqResultAlloc
    - strcpy
    - strlen
    linkageType: ''
    returnType: void
    signature: void pqSaveMessageField(PGresult *res, char code, const char *value)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1103,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1109,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1117,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1118,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1118,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1125,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1126,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1128,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1145,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1147,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1153,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1155,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1158,1
    - Dst: sscanf
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1166,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1194,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1197,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1199,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1202,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1204,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1206,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 60
    argCount: 3
    argNames:
    - conn
    - name
    - value
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1090
    functionDepth: 2
    functionLinenumber: 1090
    functionLinenumberEnd: 1210
    functionName: pqSaveParameterStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - strcmp
    - sscanf
    - pg_char_to_encoding
    - malloc
    - strlen
    - free
    - atoi
    - strcpy
    linkageType: ''
    returnType: int
    signature: int pqSaveParameterStatus(PGconn *conn, const char *name, const char
      *value)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQcopyResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1242,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1264,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1283,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1288,1
    - Dst: pqAddTuple
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1297,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - conn
    - errmsgp
    argTypes:
    - PGconn*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1222
    functionDepth: 3
    functionLinenumber: 1222
    functionLinenumberEnd: 1308
    functionName: pqRowProcessor
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqResultAlloc
    - pqAddTuple
    - memcpy
    - PQcopyResult
    linkageType: ''
    returnType: int
    signature: int pqRowProcessor(PGconn *conn, const char **errmsgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1329,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1322
    functionDepth: 1
    functionLinenumber: 1322
    functionLinenumberEnd: 1345
    functionName: pqAllocCmdQueueEntry
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - libpq_append_conn_error
    - malloc
    linkageType: ''
    returnType: PGcmdQueueEntry
    signature: 'PGcmdQueueEntry *

      pqAllocCmdQueueEntry(PGconn *conn)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1358,1
    - Dst: pqPipelineProcessQueue
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1393,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - entry
    argTypes:
    - PGconn*
    - PGcmdQueueEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1355
    functionDepth: 1
    functionLinenumber: 1355
    functionLinenumberEnd: 1396
    functionName: pqAppendCmdQueueEntry
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - Assert
    - pqPipelineProcessQueue
    linkageType: ''
    returnType: void
    signature: void pqAppendCmdQueueEntry(PGconn *conn, PGcmdQueueEntry *entry)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1409,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - entry
    argTypes:
    - PGconn*
    - PGcmdQueueEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1402
    functionDepth: 1
    functionLinenumber: 1402
    functionLinenumberEnd: 1419
    functionName: pqRecycleCmdQueueEntry
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - Assert
    - free
    linkageType: ''
    returnType: void
    signature: void pqRecycleCmdQueueEntry(PGconn *conn, PGcmdQueueEntry *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQueryInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - query
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1432
    functionDepth: 1
    functionLinenumber: 1432
    functionLinenumberEnd: 1436
    functionName: PQsendQuery
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 11
    functionsReached:
    - PQsendQueryInternal
    linkageType: ''
    returnType: int
    signature: int PQsendQuery(PGconn *conn, const char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQueryInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - query
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1438
    functionDepth: 1
    functionLinenumber: 1438
    functionLinenumberEnd: 1442
    functionName: PQsendQueryContinue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQsendQueryInternal
    linkageType: ''
    returnType: int
    signature: int PQsendQueryContinue(PGconn *conn, const char *query)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQueryStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1449,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1455,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1461,1
    - Dst: pqAllocCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1466,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1472,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1473,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1474,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1477,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1484,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1490,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1494,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1499,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 3
    argNames:
    - conn
    - query
    - newQuery
    argTypes:
    - PGconn*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1444
    functionDepth: 2
    functionLinenumber: 1444
    functionLinenumberEnd: 1502
    functionName: PQsendQueryInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqPutMsgEnd
    - pqFlush
    - pqAllocCmdQueueEntry
    - pqAppendCmdQueueEntry
    - pqRecycleCmdQueueEntry
    - pqPuts
    - strdup
    - pqPutMsgStart
    - libpq_append_conn_error
    - PQsendQueryStart
    linkageType: ''
    returnType: int
    signature: int PQsendQueryInternal(PGconn *conn, const char *query, bool newQuery)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQueryStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1518,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1524,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1529,1
    - Dst: PQsendQueryGuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1534,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 8
    argNames:
    - conn
    - command
    - nParams
    - paramTypes
    - paramValues
    - paramLengths
    - paramFormats
    - resultFormat
    argTypes:
    - PGconn*
    - char*
    - int
    - Oid*
    - char**
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1508
    functionDepth: 1
    functionLinenumber: 1508
    functionLinenumberEnd: 1543
    functionName: PQsendQueryParams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 12
    functionsReached:
    - libpq_append_conn_error
    - PQsendQueryStart
    - PQsendQueryGuts
    linkageType: ''
    returnType: int
    signature: "int PQsendQueryParams(PGconn *conn,\n\t\t\t\t  const char *command,\n\t\t\t\t
      \ int nParams,\n\t\t\t\t  const Oid *paramTypes,\n\t\t\t\t  const char *const
      *paramValues,\n\t\t\t\t  const int *paramLengths,\n\t\t\t\t  const int *paramFormats,\n\t\t\t\t
      \ int resultFormat)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQueryStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1559,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1565,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1570,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1575,1
    - Dst: pqAllocCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1580,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1585,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1586,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1587,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1594,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1598,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1604,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1607,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1613,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1614,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1623,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1630,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1634,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1639,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 54
    argCount: 5
    argNames:
    - conn
    - stmtName
    - query
    - nParams
    - paramTypes
    argTypes:
    - PGconn*
    - char*
    - char*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1642
      start: 1552
    functionDepth: 2
    functionLinenumber: 1552
    functionLinenumberEnd: 1642
    functionName: PQsendPrepare
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 4
    functionsReached:
    - pqPutMsgEnd
    - pqPipelineFlush
    - pqPutInt
    - pqAllocCmdQueueEntry
    - pqAppendCmdQueueEntry
    - pqRecycleCmdQueueEntry
    - pqPuts
    - strdup
    - pqPutMsgStart
    - libpq_append_conn_error
    - PQsendQueryStart
    linkageType: ''
    returnType: int
    signature: "int PQsendPrepare(PGconn *conn,\n\t\t\t  const char *stmtName, const
      char *query,\n\t\t\t  int nParams, const Oid *paramTypes)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQueryStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1658,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1664,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1669,1
    - Dst: PQsendQueryGuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1674,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 7
    argNames:
    - conn
    - stmtName
    - nParams
    - paramValues
    - paramLengths
    - paramFormats
    - resultFormat
    argTypes:
    - PGconn*
    - char*
    - int
    - char**
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1649
    functionDepth: 1
    functionLinenumber: 1649
    functionLinenumberEnd: 1683
    functionName: PQsendQueryPrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 6
    functionsReached:
    - libpq_append_conn_error
    - PQsendQueryStart
    - PQsendQueryGuts
    linkageType: ''
    returnType: int
    signature: "int PQsendQueryPrepared(PGconn *conn,\n\t\t\t\t\tconst char *stmtName,\n\t\t\t\t\tint
      nParams,\n\t\t\t\t\tconst char *const *paramValues,\n\t\t\t\t\tconst int *paramLengths,\n\t\t\t\t\tconst
      int *paramFormats,\n\t\t\t\t\tint resultFormat)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1701,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1706,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1714,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1744,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1754,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - conn
    - newQuery
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1689
    functionDepth: 3
    functionLinenumber: 1689
    functionLinenumberEnd: 1764
    functionName: PQsendQueryStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 4
    functionsReached:
    - pqClearAsyncResult
    - libpq_append_conn_error
    - pqClearConnErrorState
    linkageType: ''
    returnType: bool
    signature: bool PQsendQueryStart(PGconn *conn, bool newQuery)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: pqAllocCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1787,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1800,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1801,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1802,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1806,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1810,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1816,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1819,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1824,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1825,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1826,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1832,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1836,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1842,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1846,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1863,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1870,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1872,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1873,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1879,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1883,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1884,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1886,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1890,1
    - Dst: pqPutc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1891,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1892,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1893,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1897,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1898,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1899,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1900,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1906,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1907,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1917,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1924,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1928,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1933,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 96
    argCount: 9
    argNames:
    - conn
    - command
    - stmtName
    - nParams
    - paramTypes
    - paramValues
    - paramLengths
    - paramFormats
    - resultFormat
    argTypes:
    - PGconn*
    - char*
    - char*
    - int
    - Oid*
    - char**
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1936
      start: 1773
    functionDepth: 2
    functionLinenumber: 1773
    functionLinenumberEnd: 1936
    functionName: PQsendQueryGuts
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqPutMsgEnd
    - pqPipelineFlush
    - pqPutInt
    - pqPutnchar
    - pqAllocCmdQueueEntry
    - pqAppendCmdQueueEntry
    - strlen
    - pqPuts
    - strdup
    - pqRecycleCmdQueueEntry
    - pqPutMsgStart
    - libpq_append_conn_error
    - pqPutc
    linkageType: ''
    returnType: int
    signature: "int PQsendQueryGuts(PGconn *conn,\n\t\t\t\tconst char *command,\n\t\t\t\tconst
      char *stmtName,\n\t\t\t\tint nParams,\n\t\t\t\tconst Oid *paramTypes,\n\t\t\t\tconst
      char *const *paramValues,\n\t\t\t\tconst int *paramLengths,\n\t\t\t\tconst int
      *paramFormats,\n\t\t\t\tint resultFormat)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1956,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1941
    functionDepth: 1
    functionLinenumber: 1941
    functionLinenumberEnd: 1959
    functionName: canChangeResultMode
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pgHavePendingResult
    linkageType: ''
    returnType: bool
    signature: bool canChangeResultMode(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: canChangeResultMode
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1976
      start: 1964
    functionDepth: 2
    functionLinenumber: 1964
    functionLinenumberEnd: 1976
    functionName: PQsetSingleRowMode
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 3
    functionsReached:
    - canChangeResultMode
    linkageType: ''
    returnType: int
    signature: int PQsetSingleRowMode(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: canChangeResultMode
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1984,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - chunkSize
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1993
      start: 1981
    functionDepth: 2
    functionLinenumber: 1981
    functionLinenumberEnd: 1993
    functionName: PQsetChunkedRowsMode
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - canChangeResultMode
    linkageType: ''
    returnType: int
    signature: int PQsetChunkedRowsMode(PGconn *conn, int chunkSize)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2011,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2013,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2023,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 2000
    functionDepth: 1
    functionLinenumber: 2000
    functionLinenumberEnd: 2028
    functionName: PQconsumeInput
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 13
    functionsReached:
    - pqFlush
    - pqIsnonblocking
    - pqReadData
    linkageType: ''
    returnType: int
    signature: int PQconsumeInput(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqParseInput3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2039,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2040
      start: 2036
    functionDepth: 1
    functionLinenumber: 2036
    functionLinenumberEnd: 2040
    functionName: parseInput
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqParseInput3
    linkageType: ''
    returnType: void
    signature: void parseInput(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parseInput
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2054,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2065
      start: 2047
    functionDepth: 2
    functionLinenumber: 2047
    functionLinenumberEnd: 2065
    functionName: PQisBusy
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 9
    functionsReached:
    - parseInput
    linkageType: ''
    returnType: int
    signature: int PQisBusy(PGconn *conn)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: parseInput
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2087,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2098,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2100,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2115,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2116,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2119,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2121,1
    - Dst: parseInput
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2125,1
    - Dst: pqSaveWriteError
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2133,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2135,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2146,1
    - Dst: pqPipelineProcessQueue
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2154,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2159,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2171,1
    - Dst: pqCommandQueueAdvance
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2176,1
    - Dst: pqPipelineProcessQueue
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2199,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2208,1
    - Dst: getCopyResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2213,1
    - Dst: getCopyResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2216,1
    - Dst: getCopyResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2219,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2222,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2223,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2225,1
    - Dst: PQfireResultCreateEvents
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2231,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 70
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2234
      start: 2078
    functionDepth: 5
    functionLinenumber: 2078
    functionLinenumberEnd: 2234
    functionName: PQgetResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 30
    functionsReached:
    - pqSaveErrorResult
    - pqPipelineProcessQueue
    - pqWait
    - Assert
    - parseInput
    - pqFlush
    - pqCommandQueueAdvance
    - getCopyResult
    - PQfireResultCreateEvents
    - libpq_append_conn_error
    - pqSaveWriteError
    - pqReadData
    - pqPrepareAsyncResult
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQgetResult(PGconn *conn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2253,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2255,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2260,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - copytype
    argTypes:
    - PGconn*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2264
      start: 2240
    functionDepth: 5
    functionLinenumber: 2240
    functionLinenumberEnd: 2264
    functionName: getCopyResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqSaveErrorResult
    - PQmakeEmptyPGresult
    - pqPrepareAsyncResult
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      getCopyResult(PGconn *conn, ExecStatusType copytype)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexecStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2281,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2283,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - query
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2286
      start: 2278
    functionDepth: 2
    functionLinenumber: 2278
    functionLinenumberEnd: 2286
    functionName: PQexec
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 76
    functionsReached:
    - PQexecFinish
    - PQsendQuery
    - PQexecStart
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQexec(PGconn *conn, const char *query)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexecStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2302,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2304,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 8
    argNames:
    - conn
    - command
    - nParams
    - paramTypes
    - paramValues
    - paramLengths
    - paramFormats
    - resultFormat
    argTypes:
    - PGconn*
    - char*
    - int
    - Oid*
    - char**
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2309
      start: 2292
    functionDepth: 2
    functionLinenumber: 2292
    functionLinenumberEnd: 2309
    functionName: PQexecParams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - PQsendQueryParams
    - PQexecFinish
    - PQexecStart
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\nPQexecParams(PGconn *conn,\n\t\t\t const char *command,\n\t\t\t
      int nParams,\n\t\t\t const Oid *paramTypes,\n\t\t\t const char *const *paramValues,\n\t\t\t
      const int *paramLengths,\n\t\t\t const int *paramFormats,\n\t\t\t int resultFormat)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexecStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2327,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2329,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - conn
    - stmtName
    - query
    - nParams
    - paramTypes
    argTypes:
    - PGconn*
    - char*
    - char*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2332
      start: 2322
    functionDepth: 3
    functionLinenumber: 2322
    functionLinenumberEnd: 2332
    functionName: PQprepare
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - PQexecFinish
    - PQsendPrepare
    - PQexecStart
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\nPQprepare(PGconn *conn,\n\t\t  const char *stmtName, const
      char *query,\n\t\t  int nParams, const Oid *paramTypes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexecStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2348,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2350,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 7
    argNames:
    - conn
    - stmtName
    - nParams
    - paramValues
    - paramLengths
    - paramFormats
    - resultFormat
    argTypes:
    - PGconn*
    - char*
    - int
    - char**
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2355
      start: 2339
    functionDepth: 2
    functionLinenumber: 2339
    functionLinenumberEnd: 2355
    functionName: PQexecPrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQexecFinish
    - PQsendQueryPrepared
    - PQexecStart
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\nPQexecPrepared(PGconn *conn,\n\t\t\t   const char *stmtName,\n\t\t\t
      \  int nParams,\n\t\t\t   const char *const *paramValues,\n\t\t\t   const int
      *paramLengths,\n\t\t\t   const int *paramFormats,\n\t\t\t   int resultFormat)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2374,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2378,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2386,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2390,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2394,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2395,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2411,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2421
      start: 2360
    functionDepth: 6
    functionLinenumber: 2360
    functionLinenumberEnd: 2421
    functionName: PQexecStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 4
    functionsReached:
    - PQclear
    - libpq_gettext
    - pqClearConnErrorState
    - PQputCopyEnd
    - PQgetResult
    - libpq_append_conn_error
    linkageType: ''
    returnType: bool
    signature: bool PQexecStart(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2444,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2446,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2456
      start: 2426
    functionDepth: 6
    functionLinenumber: 2426
    functionLinenumberEnd: 2456
    functionName: PQexecFinish
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 4
    functionsReached:
    - PQgetResult
    - PQclear
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQexecFinish(PGconn *conn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexecStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2474,1
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2476,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - stmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2479
      start: 2471
    functionDepth: 7
    functionLinenumber: 2471
    functionLinenumberEnd: 2479
    functionName: PQdescribePrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - PQsendTypedCommand
    - PQexecFinish
    - PQexecStart
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQdescribePrepared(PGconn *conn, const char *stmt)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexecStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2493,1
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2495,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - portal
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2498
      start: 2490
    functionDepth: 7
    functionLinenumber: 2490
    functionLinenumberEnd: 2498
    functionName: PQdescribePortal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQsendTypedCommand
    - PQexecFinish
    - PQexecStart
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQdescribePortal(PGconn *conn, const char *portal)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - stmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2511
      start: 2507
    functionDepth: 1
    functionLinenumber: 2507
    functionLinenumberEnd: 2511
    functionName: PQsendDescribePrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQsendTypedCommand
    linkageType: ''
    returnType: int
    signature: int PQsendDescribePrepared(PGconn *conn, const char *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - portal
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2524
      start: 2520
    functionDepth: 1
    functionLinenumber: 2520
    functionLinenumberEnd: 2524
    functionName: PQsendDescribePortal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQsendTypedCommand
    linkageType: ''
    returnType: int
    signature: int PQsendDescribePortal(PGconn *conn, const char *portal)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexecStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2540,1
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2542,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - stmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2545
      start: 2537
    functionDepth: 7
    functionLinenumber: 2537
    functionLinenumberEnd: 2545
    functionName: PQclosePrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQsendTypedCommand
    - PQexecFinish
    - PQexecStart
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQclosePrepared(PGconn *conn, const char *stmt)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQexecStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2558,1
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2560,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - portal
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2563
      start: 2555
    functionDepth: 7
    functionLinenumber: 2555
    functionLinenumberEnd: 2563
    functionName: PQclosePortal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQsendTypedCommand
    - PQexecFinish
    - PQexecStart
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQclosePortal(PGconn *conn, const char *portal)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - stmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2572
    functionDepth: 1
    functionLinenumber: 2572
    functionLinenumberEnd: 2576
    functionName: PQsendClosePrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - PQsendTypedCommand
    linkageType: ''
    returnType: int
    signature: int PQsendClosePrepared(PGconn *conn, const char *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - portal
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2589
      start: 2585
    functionDepth: 1
    functionLinenumber: 2585
    functionLinenumberEnd: 2589
    functionName: PQsendClosePortal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQsendTypedCommand
    linkageType: ''
    returnType: int
    signature: int PQsendClosePortal(PGconn *conn, const char *portal)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQueryStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2614,1
    - Dst: pqAllocCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2617,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2622,1
    - Dst: pqPutc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2623,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2624,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2625,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2631,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2632,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2647,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2656,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2660,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2665,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 4
    argNames:
    - conn
    - command
    - type
    - target
    argTypes:
    - PGconn*
    - char
    - char
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2605
    functionDepth: 4
    functionLinenumber: 2605
    functionLinenumberEnd: 2668
    functionName: PQsendTypedCommand
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 8
    functionsReached:
    - pqPutMsgEnd
    - pqPipelineFlush
    - pqAllocCmdQueueEntry
    - pqAppendCmdQueueEntry
    - pqRecycleCmdQueueEntry
    - pqPuts
    - pqPutMsgStart
    - libpq_append_conn_error
    - PQsendQueryStart
    - pqPutc
    linkageType: ''
    returnType: int
    signature: int PQsendTypedCommand(PGconn *conn, char command, char type, const
      char *target)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parseInput
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2692,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2703
      start: 2683
    functionDepth: 2
    functionLinenumber: 2683
    functionLinenumberEnd: 2703
    functionName: PQnotifies
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 3
    functionsReached:
    - parseInput
    linkageType: ''
    returnType: PGnotify
    signature: 'PGnotify *

      PQnotifies(PGconn *conn)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2719,1
    - Dst: parseInput
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2731,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2743,1
    - Dst: pqCheckOutBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2745,1
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2747,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2750,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2751,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2752,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 3
    argNames:
    - conn
    - buffer
    - nbytes
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2756
      start: 2711
    functionDepth: 2
    functionLinenumber: 2711
    functionLinenumberEnd: 2756
    functionName: PQputCopyData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - pqPutMsgEnd
    - pqPutnchar
    - parseInput
    - pqFlush
    - pqIsnonblocking
    - pqPutMsgStart
    - libpq_append_conn_error
    - pqCheckOutBufferSpace
    linkageType: ''
    returnType: int
    signature: int PQputCopyData(PGconn *conn, const char *buffer, int nbytes)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2773,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2784,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2785,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2786,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2792,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2793,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2804,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2805,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2816,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 2
    argNames:
    - conn
    - errormsg
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2820
      start: 2765
    functionDepth: 1
    functionLinenumber: 2765
    functionLinenumberEnd: 2820
    functionName: PQputCopyEnd
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 8
    functionsReached:
    - pqPutMsgEnd
    - pqFlush
    - pqPuts
    - pqPutMsgStart
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int PQputCopyEnd(PGconn *conn, const char *errormsg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2841,1
    - Dst: pqGetCopyData3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2844,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - buffer
    - async
    argTypes:
    - PGconn*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2845
      start: 2832
    functionDepth: 1
    functionLinenumber: 2832
    functionLinenumberEnd: 2845
    functionName: PQgetCopyData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - pqGetCopyData3
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int PQgetCopyData(PGconn *conn, char **buffer, int async)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pqGetline3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2883,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - buffer
    - length
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2884
      start: 2870
    functionDepth: 1
    functionLinenumber: 2870
    functionLinenumberEnd: 2884
    functionName: PQgetline
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqGetline3
    linkageType: ''
    returnType: int
    signature: int PQgetline(PGconn *conn, char *buffer, int length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqGetlineAsync3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2923,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - buffer
    - bufsize
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2924
      start: 2917
    functionDepth: 1
    functionLinenumber: 2917
    functionLinenumberEnd: 2924
    functionName: PQgetlineAsync
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqGetlineAsync3
    linkageType: ''
    returnType: int
    signature: int PQgetlineAsync(PGconn *conn, char *buffer, int bufsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQputnbytes
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2937,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - string
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2938
      start: 2934
    functionDepth: 1
    functionLinenumber: 2934
    functionLinenumberEnd: 2938
    functionName: PQputline
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQputnbytes
    - strlen
    linkageType: ''
    returnType: int
    signature: int PQputline(PGconn *conn, const char *string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQputCopyData
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2947,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - buffer
    - nbytes
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2951
      start: 2944
    functionDepth: 3
    functionLinenumber: 2944
    functionLinenumberEnd: 2951
    functionName: PQputnbytes
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQputCopyData
    linkageType: ''
    returnType: int
    signature: int PQputnbytes(PGconn *conn, const char *buffer, int nbytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqEndcopy3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2971,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2972
      start: 2965
    functionDepth: 1
    functionLinenumber: 2965
    functionLinenumberEnd: 2972
    functionName: PQendcopy
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqEndcopy3
    linkageType: ''
    returnType: int
    signature: int PQendcopy(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQnfn
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - conn
    - fnid
    - result_buf
    - result_len
    - result_is_int
    - args
    - nargs
    argTypes:
    - PGconn*
    - int
    - int*
    - int*
    - int
    - PQArgBlock*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3007
      start: 2996
    functionDepth: 1
    functionLinenumber: 2996
    functionLinenumberEnd: 3007
    functionName: PQfn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQnfn
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\nPQfn(PGconn *conn,\n\t int fnid,\n\t int *result_buf,\n\t
      int *result_len,\n\t int result_is_int,\n\t const PQArgBlock *args,\n\t int
      nargs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3030,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3034,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3039,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3041,1
    - Dst: pqFunctionCall3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3045,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 8
    argNames:
    - conn
    - fnid
    - result_buf
    - buf_size
    - result_len
    - result_is_int
    - args
    - nargs
    argTypes:
    - PGconn*
    - int
    - int*
    - int
    - int*
    - int
    - PQArgBlock*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3049
      start: 3015
    functionDepth: 1
    functionLinenumber: 3015
    functionLinenumberEnd: 3049
    functionName: PQnfn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pgHavePendingResult
    - pqFunctionCall3
    - libpq_append_conn_error
    - pqClearConnErrorState
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\nPQnfn(PGconn *conn, int fnid, int *result_buf, int buf_size,
      int *result_len,\n\t  int result_is_int, const PQArgBlock *args, int nargs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3084,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3091
      start: 3072
    functionDepth: 1
    functionLinenumber: 3072
    functionLinenumberEnd: 3091
    functionName: PQenterPipelineMode
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 13
    functionsReached:
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int PQenterPipelineMode(PGconn *conn)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3120,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3124,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3135,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3141,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3149,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3152
      start: 3103
    functionDepth: 1
    functionLinenumber: 3103
    functionLinenumberEnd: 3152
    functionName: PQexitPipelineMode
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 12
    functionsReached:
    - pqFlush
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int PQexitPipelineMode(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3203,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - conn
    - isReadyForQuery
    - gotSync
    argTypes:
    - PGconn*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3204
      start: 3172
    functionDepth: 2
    functionLinenumber: 3172
    functionLinenumberEnd: 3204
    functionName: pqCommandQueueAdvance
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqRecycleCmdQueueEntry
    linkageType: ''
    returnType: void
    signature: void pqCommandQueueAdvance(PGconn *conn, bool isReadyForQuery, bool
      gotSync)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3239,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3266,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3269,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3282,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3285,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3286,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3296
      start: 3210
    functionDepth: 4
    functionLinenumber: 3210
    functionLinenumberEnd: 3296
    functionName: pqPipelineProcessQueue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqSaveErrorResult
    - Assert
    - PQmakeEmptyPGresult
    - pqClearConnErrorState
    - pqClearAsyncResult
    - libpq_append_conn_error
    linkageType: ''
    returnType: void
    signature: void pqPipelineProcessQueue(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqPipelineSyncInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3306
      start: 3302
    functionDepth: 1
    functionLinenumber: 3302
    functionLinenumberEnd: 3306
    functionName: PQpipelineSync
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 10
    functionsReached:
    - pqPipelineSyncInternal
    linkageType: ''
    returnType: int
    signature: int PQpipelineSync(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqPipelineSyncInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3316
      start: 3312
    functionDepth: 1
    functionLinenumber: 3312
    functionLinenumberEnd: 3316
    functionName: PQsendPipelineSync
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 3
    functionsReached:
    - pqPipelineSyncInternal
    linkageType: ''
    returnType: int
    signature: int PQsendPipelineSync(PGconn *conn)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3334,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3344,1
    - Dst: pqAllocCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3356,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3364,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3365,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3376,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3381,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3386,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3391,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 2
    argNames:
    - conn
    - immediate_flush
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3394
      start: 3324
    functionDepth: 2
    functionLinenumber: 3324
    functionLinenumberEnd: 3394
    functionName: pqPipelineSyncInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqPutMsgEnd
    - pqPipelineFlush
    - pqFlush
    - pqAllocCmdQueueEntry
    - pqAppendCmdQueueEntry
    - pqRecycleCmdQueueEntry
    - pqPutMsgStart
    - libpq_append_conn_error
    - appendPQExpBufferStr
    linkageType: ''
    returnType: int
    signature: int pqPipelineSyncInternal(PGconn *conn, bool immediate_flush)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3410,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3418,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3422,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3423,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3433,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3437
      start: 3401
    functionDepth: 1
    functionLinenumber: 3401
    functionLinenumberEnd: 3437
    functionName: PQsendFlushRequest
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - pqPutMsgStart
    - libpq_append_conn_error
    - pqPipelineFlush
    - pqPutMsgEnd
    linkageType: ''
    returnType: int
    signature: int PQsendFlushRequest(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3447
      start: 3441
    functionDepth: 0
    functionLinenumber: 3441
    functionLinenumberEnd: 3447
    functionName: PQresultStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 118
    functionsReached: []
    linkageType: ''
    returnType: ExecStatusType
    signature: ExecStatusType PQresultStatus(const PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3452,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - status
    argTypes:
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3455
      start: 3449
    functionDepth: 1
    functionLinenumber: 3449
    functionLinenumberEnd: 3455
    functionName: PQresStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 10
    functionsReached:
    - libpq_gettext
    - lengthof
    linkageType: ''
    returnType: char
    signature: 'char *

      PQresStatus(ExecStatusType status)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3463
      start: 3457
    functionDepth: 0
    functionLinenumber: 3457
    functionLinenumberEnd: 3463
    functionName: PQresultErrorMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQresultErrorMessage(const PGresult *res)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3480,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3480,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3482,1
    - Dst: pqBuildErrorMessage3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3484,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3487,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3489,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3490,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3490,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - res
    - verbosity
    - show_context
    argTypes:
    - PGresult*
    - PGVerbosity
    - PGContextVisibility
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3494
      start: 3465
    functionDepth: 2
    functionLinenumber: 3465
    functionLinenumberEnd: 3494
    functionName: PQresultVerboseErrorMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - libpq_gettext
    - pqBuildErrorMessage3
    - initPQExpBuffer
    - strdup
    - termPQExpBuffer
    - PQExpBufferDataBroken
    linkageType: ''
    returnType: char
    signature: "char *\nPQresultVerboseErrorMessage(const PGresult *res,\n\t\t\t\t\t\t\tPGVerbosity
      verbosity,\n\t\t\t\t\t\t\tPGContextVisibility show_context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - res
    - fieldcode
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3509
      start: 3496
    functionDepth: 0
    functionLinenumber: 3496
    functionLinenumberEnd: 3509
    functionName: PQresultErrorField
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQresultErrorField(const PGresult *res, int fieldcode)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3517
      start: 3511
    functionDepth: 0
    functionLinenumber: 3511
    functionLinenumberEnd: 3517
    functionName: PQntuples
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 177
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQntuples(const PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3525
      start: 3519
    functionDepth: 0
    functionLinenumber: 3519
    functionLinenumberEnd: 3525
    functionName: PQnfields
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQnfields(const PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3533
      start: 3527
    functionDepth: 0
    functionLinenumber: 3527
    functionLinenumberEnd: 3533
    functionName: PQbinaryTuples
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQbinaryTuples(const PGresult *res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3553
      start: 3540
    functionDepth: 3
    functionLinenumber: 3540
    functionLinenumberEnd: 3553
    functionName: check_field_number
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqInternalNotice
    linkageType: ''
    returnType: int
    signature: int check_field_number(const PGresult *res, int field_num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3563,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3570,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3576
      start: 3555
    functionDepth: 3
    functionLinenumber: 3555
    functionLinenumberEnd: 3576
    functionName: check_tuple_field_number
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqInternalNotice
    linkageType: ''
    returnType: int
    signature: "int check_tuple_field_number(const PGresult *res,\n\t\t\t\t\t\t int
      tup_num, int field_num)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3585,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - res
    - param_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3592
      start: 3578
    functionDepth: 3
    functionLinenumber: 3578
    functionLinenumberEnd: 3592
    functionName: check_param_number
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqInternalNotice
    linkageType: ''
    returnType: int
    signature: int check_param_number(const PGresult *res, int param_num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3600,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3606
      start: 3597
    functionDepth: 4
    functionLinenumber: 3597
    functionLinenumberEnd: 3606
    functionName: PQfname
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 10
    functionsReached:
    - check_field_number
    linkageType: ''
    returnType: char
    signature: 'char *

      PQfname(const PGresult *res, int field_num)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3649,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3658,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3668,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3698,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3706,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3708,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3712,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 46
    argCount: 2
    argNames:
    - res
    - field_name
    argTypes:
    - PGresult*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3714
      start: 3619
    functionDepth: 2
    functionLinenumber: 3619
    functionLinenumberEnd: 3714
    functionName: PQfnumber
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 91
    functionsReached:
    - pg_tolower
    - free
    - strdup
    - strcmp
    linkageType: ''
    returnType: int
    signature: int PQfnumber(const PGresult *res, const char *field_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3719,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3725
      start: 3716
    functionDepth: 4
    functionLinenumber: 3716
    functionLinenumberEnd: 3725
    functionName: PQftable
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - check_field_number
    linkageType: ''
    returnType: Oid
    signature: Oid PQftable(const PGresult *res, int field_num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3736
      start: 3727
    functionDepth: 4
    functionLinenumber: 3727
    functionLinenumberEnd: 3736
    functionName: PQftablecol
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - check_field_number
    linkageType: ''
    returnType: int
    signature: int PQftablecol(const PGresult *res, int field_num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3741,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3747
      start: 3738
    functionDepth: 4
    functionLinenumber: 3738
    functionLinenumberEnd: 3747
    functionName: PQfformat
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - check_field_number
    linkageType: ''
    returnType: int
    signature: int PQfformat(const PGresult *res, int field_num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3752,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3758
      start: 3749
    functionDepth: 4
    functionLinenumber: 3749
    functionLinenumberEnd: 3758
    functionName: PQftype
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 6
    functionsReached:
    - check_field_number
    linkageType: ''
    returnType: Oid
    signature: Oid PQftype(const PGresult *res, int field_num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3763,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3769
      start: 3760
    functionDepth: 4
    functionLinenumber: 3760
    functionLinenumberEnd: 3769
    functionName: PQfsize
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - check_field_number
    linkageType: ''
    returnType: int
    signature: int PQfsize(const PGresult *res, int field_num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3774,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3780
      start: 3771
    functionDepth: 4
    functionLinenumber: 3771
    functionLinenumberEnd: 3780
    functionName: PQfmod
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - check_field_number
    linkageType: ''
    returnType: int
    signature: int PQfmod(const PGresult *res, int field_num)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3788
      start: 3782
    functionDepth: 0
    functionLinenumber: 3782
    functionLinenumberEnd: 3788
    functionName: PQcmdStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQcmdStatus(PGresult *res)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3806,1
    - Dst: strspn
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3809,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3812,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3816
      start: 3795
    functionDepth: 0
    functionLinenumber: 3795
    functionLinenumberEnd: 3816
    functionName: PQoidStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - strspn
    - strncmp
    - memcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      PQoidStatus(const PGresult *res)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3830,1
    - Dst: strtoul
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3835,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 7
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3841
      start: 3823
    functionDepth: 0
    functionLinenumber: 3823
    functionLinenumberEnd: 3841
    functionName: PQoidValue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - strtoul
    - strncmp
    linkageType: ''
    returnType: Oid
    signature: Oid PQoidValue(const PGresult *res)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3861,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3871,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3872,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3873,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3875,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3876,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3878,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3879,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3887,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3896,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 32
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3900
      start: 3852
    functionDepth: 3
    functionLinenumber: 3852
    functionLinenumberEnd: 3900
    functionName: PQcmdTuples
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqInternalNotice
    - strncmp
    - isdigit
    linkageType: ''
    returnType: char
    signature: 'char *

      PQcmdTuples(PGresult *res)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tuple_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3912
      start: 3906
    functionDepth: 4
    functionLinenumber: 3906
    functionLinenumberEnd: 3912
    functionName: PQgetvalue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 196
    functionsReached:
    - check_tuple_field_number
    linkageType: ''
    returnType: char
    signature: 'char *

      PQgetvalue(const PGresult *res, int tup_num, int field_num)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_tuple_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3921,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3927
      start: 3918
    functionDepth: 4
    functionLinenumber: 3918
    functionLinenumberEnd: 3927
    functionName: PQgetlength
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 6
    functionsReached:
    - check_tuple_field_number
    linkageType: ''
    returnType: int
    signature: int PQgetlength(const PGresult *res, int tup_num, int field_num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_tuple_field_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3936,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3942
      start: 3933
    functionDepth: 4
    functionLinenumber: 3933
    functionLinenumberEnd: 3942
    functionName: PQgetisnull
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 55
    functionsReached:
    - check_tuple_field_number
    linkageType: ''
    returnType: int
    signature: int PQgetisnull(const PGresult *res, int tup_num, int field_num)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3954
      start: 3948
    functionDepth: 0
    functionLinenumber: 3948
    functionLinenumberEnd: 3954
    functionName: PQnparams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQnparams(const PGresult *res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_param_number
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3963,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - param_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3969
      start: 3960
    functionDepth: 4
    functionLinenumber: 3960
    functionLinenumberEnd: 3969
    functionName: PQparamtype
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - check_param_number
    linkageType: ''
    returnType: Oid
    signature: Oid PQparamtype(const PGresult *res, int param_num)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4003,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4006,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - arg
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4012
      start: 3979
    functionDepth: 1
    functionLinenumber: 3979
    functionLinenumberEnd: 4012
    functionName: PQsetnonblocking
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 3
    functionsReached:
    - pqFlush
    - pqClearConnErrorState
    linkageType: ''
    returnType: int
    signature: int PQsetnonblocking(PGconn *conn, int arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4023,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4024
      start: 4018
    functionDepth: 1
    functionLinenumber: 4018
    functionLinenumberEnd: 4024
    functionName: PQisnonblocking
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqIsnonblocking
    linkageType: ''
    returnType: int
    signature: int PQisnonblocking(const PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4031
      start: 4027
    functionDepth: 0
    functionLinenumber: 4027
    functionLinenumberEnd: 4031
    functionName: PQisthreadsafe
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQisthreadsafe(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4040,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4041
      start: 4035
    functionDepth: 1
    functionLinenumber: 4035
    functionLinenumberEnd: 4041
    functionName: PQflush
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 10
    functionsReached:
    - pqFlush
    linkageType: ''
    returnType: int
    signature: int PQflush(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4056,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4058
      start: 4051
    functionDepth: 1
    functionLinenumber: 4051
    functionLinenumberEnd: 4058
    functionName: pqPipelineFlush
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - pqFlush
    linkageType: ''
    returnType: int
    signature: int pqPipelineFlush(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4071
      start: 4067
    functionDepth: 1
    functionLinenumber: 4067
    functionLinenumberEnd: 4071
    functionName: PQfreemem
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 30
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void PQfreemem(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfreemem
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - notify
    argTypes:
    - PGnotify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4088
      start: 4084
    functionDepth: 2
    functionLinenumber: 4084
    functionLinenumberEnd: 4088
    functionName: PQfreeNotify
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQfreemem
    linkageType: ''
    returnType: void
    signature: void PQfreeNotify(PGnotify *notify)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4114,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4127,1
    - Dst: SQL_STR_DOUBLE
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4130,1
    - Dst: pg_encoding_mblen_or_incomplete
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4140,1
    - Dst: pg_encoding_verifymbchar
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4144,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4177,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4179,1
    - Dst: pg_encoding_set_invalid
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4184,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 7
    argNames:
    - conn
    - to
    - from
    - length
    - error
    - encoding
    - std_strings
    argTypes:
    - PGconn*
    - char*
    - char*
    - size_t
    - int*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4210
      start: 4106
    functionDepth: 3
    functionLinenumber: 4106
    functionLinenumberEnd: 4210
    functionName: PQescapeStringInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - strnlen
    - SQL_STR_DOUBLE
    - IS_HIGHBIT_SET
    - pg_encoding_mblen_or_incomplete
    - pg_encoding_set_invalid
    - pg_encoding_verifymbchar
    - libpq_append_conn_error
    linkageType: ''
    returnType: size_t
    signature: "size_t PQescapeStringInternal(PGconn *conn,\n\t\t\t\t\t   char *to,
      const char *from, size_t length,\n\t\t\t\t\t   int *error,\n\t\t\t\t\t   int
      encoding, bool std_strings)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4227,1
    - Dst: PQescapeStringInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - conn
    - to
    - from
    - length
    - error
    argTypes:
    - PGconn*
    - char*
    - char*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4232
      start: 4212
    functionDepth: 4
    functionLinenumber: 4212
    functionLinenumberEnd: 4232
    functionName: PQescapeStringConn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - pqClearConnErrorState
    - PQescapeStringInternal
    linkageType: ''
    returnType: size_t
    signature: "size_t PQescapeStringConn(PGconn *conn,\n\t\t\t\t   char *to, const
      char *from, size_t length,\n\t\t\t\t   int *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQescapeStringInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - to
    - from
    - length
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4240
      start: 4234
    functionDepth: 4
    functionLinenumber: 4234
    functionLinenumberEnd: 4240
    functionName: PQescapeString
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQescapeStringInternal
    linkageType: ''
    returnType: size_t
    signature: size_t PQescapeString(char *to, const char *from, size_t length)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4257,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4267,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4280,1
    - Dst: pg_encoding_mblen_or_incomplete
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4285,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4291,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4307,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4310,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4326,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4327,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4332,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4333,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4337,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4340,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4373,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4386,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4390,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4411,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 75
    argCount: 4
    argNames:
    - conn
    - str
    - len
    - as_ident
    argTypes:
    - PGconn*
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4415
      start: 4249
    functionDepth: 3
    functionLinenumber: 4249
    functionLinenumberEnd: 4415
    functionName: PQescapeInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pg_encoding_mblen
    - strnlen
    - memcpy
    - IS_HIGHBIT_SET
    - pg_add_size_overflow
    - pg_encoding_mblen_or_incomplete
    - pqClearConnErrorState
    - pg_encoding_verifymbstr
    - malloc
    - libpq_append_conn_error
    linkageType: ''
    returnType: char
    signature: 'char *

      PQescapeInternal(PGconn *conn, const char *str, size_t len, bool as_ident)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQescapeInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - conn
    - str
    - len
    argTypes:
    - PGconn*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4421
      start: 4417
    functionDepth: 4
    functionLinenumber: 4417
    functionLinenumberEnd: 4421
    functionName: PQescapeLiteral
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 12
    functionsReached:
    - PQescapeInternal
    linkageType: ''
    returnType: char
    signature: 'char *

      PQescapeLiteral(PGconn *conn, const char *str, size_t len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQescapeInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - conn
    - str
    - len
    argTypes:
    - PGconn*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4427
      start: 4423
    functionDepth: 4
    functionLinenumber: 4423
    functionLinenumberEnd: 4427
    functionName: PQescapeIdentifier
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 10
    functionsReached:
    - PQescapeInternal
    linkageType: ''
    returnType: char
    signature: 'char *

      PQescapeIdentifier(PGconn *conn, const char *str, size_t len)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4452
      start: 4443
    functionDepth: 0
    functionLinenumber: 4443
    functionLinenumberEnd: 4452
    functionName: get_hex
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char get_hex(char c)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4495,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4496,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4497,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4507,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4512,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4517,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4522,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4529,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4533,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4588,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 78
    argCount: 6
    argNames:
    - conn
    - from
    - from_length
    - to_length
    - std_strings
    - use_hex
    argTypes:
    - PGconn*
    - unsigned char*
    - size_t
    - size_t*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4592
      start: 4470
    functionDepth: 1
    functionLinenumber: 4470
    functionLinenumberEnd: 4592
    functionName: PQescapeByteaInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - libpq_append_conn_error
    - pg_add_size_overflow
    - malloc
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\nPQescapeByteaInternal(PGconn *conn,\n\t\t\t\t\t  const
      unsigned char *from, size_t from_length,\n\t\t\t\t\t  size_t *to_length, bool
      std_strings, bool use_hex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4603,1
    - Dst: PQescapeByteaInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4605,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - conn
    - from
    - from_length
    - to_length
    argTypes:
    - PGconn*
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4608
      start: 4594
    functionDepth: 2
    functionLinenumber: 4594
    functionLinenumberEnd: 4608
    functionName: PQescapeByteaConn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQescapeByteaInternal
    - pqClearConnErrorState
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\nPQescapeByteaConn(PGconn *conn,\n\t\t\t\t  const
      unsigned char *from, size_t from_length,\n\t\t\t\t  size_t *to_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQescapeByteaInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - from
    - from_length
    - to_length
    argTypes:
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4616
      start: 4610
    functionDepth: 2
    functionLinenumber: 4610
    functionLinenumberEnd: 4616
    functionName: PQescapeBytea
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQescapeByteaInternal
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      PQescapeBytea(const unsigned char *from, size_t from_length, size_t *to_length)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CH
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4620
      start: 4619
    functionDepth: 0
    functionLinenumber: 4619
    functionLinenumberEnd: 4620
    functionName: ISFIRSTOCTDIGIT
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISFIRSTOCTDIGIT(CH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CH
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4621
      start: 4620
    functionDepth: 0
    functionLinenumber: 4620
    functionLinenumberEnd: 4621
    functionName: ISOCTDIGIT
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISOCTDIGIT(CH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CH
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4622
      start: 4621
    functionDepth: 0
    functionLinenumber: 4621
    functionLinenumberEnd: 4622
    functionName: OCTVAL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OCTVAL(CH)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4648,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4657,1
    - Dst: get_hex
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4672,1
    - Dst: get_hex
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4675,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4688,1
    - Dst: ISFIRSTOCTDIGIT
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4702,1
    - Dst: ISOCTDIGIT
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4703,1
    - Dst: ISOCTDIGIT
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4704,1
    - Dst: OCTVAL
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4708,1
    - Dst: OCTVAL
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4709,1
    - Dst: OCTVAL
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4710,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4734,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4739,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 2
    argNames:
    - strtext
    - retbuflen
    argTypes:
    - unsigned char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4745
      start: 4635
    functionDepth: 1
    functionLinenumber: 4635
    functionLinenumberEnd: 4745
    functionName: PQunescapeBytea
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - get_hex
    - realloc
    - ISFIRSTOCTDIGIT
    - ISOCTDIGIT
    - malloc
    - strlen
    - free
    - OCTVAL
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      PQunescapeBytea(const unsigned char *strtext, size_t *retbuflen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - M_PGHOST
    - ','
    - M_PGPORT
    - ','
    - M_PGOPT
    - ','
    - M_PGTTY
    - ','
    - M_DBNAME
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 354
    functionName: PQsetdb
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-fe.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PQsetdb(M_PGHOST,M_PGPORT,M_PGOPT,M_PGTTY,M_DBNAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 647
    functionName: PQfreeNotify
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-fe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PQfreeNotify(ptr)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pqMakeEmptyPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:70,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:79,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:85,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:92,1
    - Dst: pqCopyPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:101,1
    - Dst: pqConnectOptions2
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:107,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:116,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:119,1
    - Dst: pqReleaseConnHosts
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:131,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:135,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:143,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:149,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:155,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:161,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:166,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:178,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 76
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 180
    functionName: PQcancelCreate
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 4
    functionsReached:
    - memcpy
    - pqConnectOptions2
    - pqReleaseConnHosts
    - pqMakeEmptyPGconn
    - malloc
    - strdup
    - calloc
    - pqCopyPGconn
    - libpq_append_conn_error
    linkageType: ''
    returnType: PGcancelConn
    signature: 'PGcancelConn *

      PQcancelCreate(PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQcancelStart
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:192,1
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGcancelConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 195
    functionName: PQcancelBlocking
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 3
    functionsReached:
    - pqConnectDBComplete
    - PQcancelStart
    linkageType: ''
    returnType: int
    signature: int PQcancelBlocking(PGcancelConn *cancelConn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:211,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGcancelConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 218
    functionName: PQcancelStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 3
    functionsReached:
    - libpq_append_conn_error
    - pqConnectDBStart
    linkageType: ''
    returnType: int
    signature: int PQcancelStart(PGcancelConn *cancelConn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectPoll
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:239,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:247,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:282,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:292,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGcancelConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 294
    functionName: PQcancelPoll
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 2
    functionsReached:
    - PQconnectPoll
    - libpq_append_conn_error
    - pqReadData
    - resetPQExpBuffer
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType PQcancelPoll(PGcancelConn *cancelConn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQstatus
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGcancelConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: PQcancelStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 1
    functionsReached:
    - PQstatus
    linkageType: ''
    returnType: ConnStatusType
    signature: ConnStatusType PQcancelStatus(const PGcancelConn *cancelConn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQsocket
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGcancelConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 316
    functionName: PQcancelSocket
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 2
    functionsReached:
    - PQsocket
    linkageType: ''
    returnType: int
    signature: int PQcancelSocket(const PGcancelConn *cancelConn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQerrorMessage
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGcancelConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 328
    functionName: PQcancelErrorMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 3
    functionsReached:
    - PQerrorMessage
    linkageType: ''
    returnType: char
    signature: 'char *

      PQcancelErrorMessage(const PGcancelConn *cancelConn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqClosePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGcancelConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 345
    functionName: PQcancelReset
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 1
    functionsReached:
    - pqClosePGconn
    linkageType: ''
    returnType: void
    signature: void PQcancelReset(PGcancelConn *cancelConn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGcancelConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 356
    functionName: PQcancelFinish
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 4
    functionsReached:
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void PQcancelFinish(PGcancelConn *cancelConn)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:398,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:402,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:406,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:416,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:423,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:430,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:437,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:444,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:451,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:452,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:453,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:455,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:460,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 53
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 462
    functionName: PQgetCancel
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 3
    functionsReached:
    - pg_hton32
    - memcpy
    - malloc
    - free
    - pqParseIntParam
    - calloc
    linkageType: ''
    returnType: PGcancel
    signature: 'PGcancel *

      PQgetCancel(PGconn *conn)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:477,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:481,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:482,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:483,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:484,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:486,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:490,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:494,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 498
    functionName: PQsendCancelRequest
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 0
    functionsReached:
    - pg_hton32
    - pqPutMsgEnd
    - pqPutnchar
    - pqFlush
    - memset
    - pqPutMsgStart
    linkageType: ''
    returnType: int
    signature: int PQsendCancelRequest(PGconn *cancelConn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cancel
    argTypes:
    - PGcancel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 505
    functionName: PQfreeCancel
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 4
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void PQfreeCancel(PGcancel *cancel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - fd
    - protoid
    - optid
    - value
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 523
    functionName: optional_setsockopt
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 0
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool optional_setsockopt(int fd, int protoid, int optid, int value)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:558,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:560,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:567,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:569,1
    - Dst: socket
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:577,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:579,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:597,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:599,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:604,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:607,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:613,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:616,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:622,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:625,1
    - Dst: pqSetKeepalivesWin32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:633,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:637,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:645,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:648,1
    - Dst: connect
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:655,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:661,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:665,1
    - Dst: send
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:673,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:678,1
    - Dst: recv
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:690,1
    - Dst: closesocket
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:699,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:700,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:709,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:729,1
    - Dst: strncat
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:730,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:731,1
    - Dst: closesocket
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:734,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:735,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 98
    argCount: 3
    argNames:
    - cancel
    - errbuf
    - errbufsize
    argTypes:
    - PGcancel*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 737
    functionName: PQcancel
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 7
    functionsReached:
    - send
    - connect
    - strlcpy
    - strncat
    - strcat
    - pg_ntoh32
    - memcpy
    - optional_setsockopt
    - recv
    - strlen
    - pqSetKeepalivesWin32
    - socket
    - closesocket
    - SOCK_ERRNO_SET
    linkageType: ''
    returnType: int
    signature: int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:763,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:766,1
    - Dst: PQgetCancel
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:772,1
    - Dst: PQcancel
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:775,1
    - Dst: PQfreeCancel
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:777,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:781,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:788,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 751
    functionDepth: 2
    functionLinenumber: 751
    functionLinenumberEnd: 793
    functionName: PQrequestCancel
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - PQgetCancel
    - PQcancel
    - PQfreeCancel
    - strlen
    linkageType: ''
    returnType: int
    signature: int PQrequestCancel(PGconn *conn)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:77,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:80,1
    - Dst: pqGetnchar
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:84,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:90,1
    - Dst: pqTraceOutputMessage
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:102,1
    - Dst: pg_GSS_have_cred_cache
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:105,1
    - Dst: gss_init_sec_context
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:111,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:125,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:135,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:138,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:142,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:146,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:146,1
    - Dst: gss_release_name
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:149,1
    - Dst: gss_delete_sec_context
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:151,1
    - Dst: gss_release_name
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:158,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 2
    argNames:
    - conn
    - payloadlen
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 163
    functionName: pg_GSS_continue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - pg_GSS_have_cred_cache
    - gss_release_buffer
    - gss_release_name
    - libpq_gettext
    - pqGetnchar
    - gss_delete_sec_context
    - gss_init_sec_context
    - free
    - malloc
    - pg_GSS_error
    - pqTraceOutputMessage
    - pqPacketSend
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int pg_GSS_continue(PGconn *conn, int payloadlen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:176,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:182,1
    - Dst: pg_GSS_load_servicename
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:186,1
    - Dst: pg_GSS_continue
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:196,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - payloadlen
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 197
    functionName: pg_GSS_startup
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - libpq_append_conn_error
    - pg_GSS_continue
    - pg_GSS_load_servicename
    linkageType: ''
    returnType: int
    signature: int pg_GSS_startup(PGconn *conn, int payloadlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FormatMessage
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:211,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:215,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - mprefix
    - r
    argTypes:
    - PGconn*
    - char*
    - SECURITY_STATUS
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 220
    functionName: pg_SSPI_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - FormatMessage
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void pg_SSPI_error(PGconn *conn, const char *mprefix, SECURITY_STATUS
      r)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:243,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:246,1
    - Dst: pqGetnchar
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:250,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:256,1
    - Dst: pqTraceOutputMessage
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:270,1
    - Dst: InitializeSecurityContext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:279,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:293,1
    - Dst: pg_SSPI_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:297,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:297,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:305,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:308,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:311,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:327,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:340,1
    - Dst: FreeContextBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:343,1
    - Dst: FreeContextBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:347,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 2
    argNames:
    - conn
    - payloadlen
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 355
    functionName: pg_SSPI_continue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - memcpy
    - InitializeSecurityContext
    - pg_SSPI_error
    - libpq_gettext
    - FreeContextBuffer
    - pqGetnchar
    - free
    - malloc
    - pqTraceOutputMessage
    - pqPacketSend
    - libpq_append_conn_error
    - appendPQExpBufferStr
    linkageType: ''
    returnType: int
    signature: int pg_SSPI_continue(PGconn *conn, int payloadlen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:372,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:379,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:382,1
    - Dst: AcquireCredentialsHandle
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:386,1
    - Dst: pg_SSPI_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:397,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:397,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:398,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:410,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:413,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:413,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:413,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:416,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:419,1
    - Dst: pg_SSPI_continue
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:427,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - conn
    - use_negotiate
    - payloadlen
    argTypes:
    - PGconn*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 428
    functionName: pg_SSPI_startup
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - libpq_gettext
    - pg_SSPI_error
    - malloc
    - free
    - strlen
    - sprintf
    - pg_SSPI_continue
    - libpq_append_conn_error
    - AcquireCredentialsHandle
    linkageType: ''
    returnType: int
    signature: int pg_SSPI_startup(PGconn *conn, int use_negotiate, int payloadlen)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:444,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:449,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:455,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:467,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:469,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:473,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:487,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:513,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:529,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:533,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:540,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:551,1
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:560,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:571,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:578,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:580,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:600,1
    - Dst: pqTraceOutputMessage
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:608,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:610,1
    - Dst: PGconn*::sasl::init
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:620,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:632,1
    - Dst: PGconn*::sasl::exchange
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:637,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:653,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:654,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:663,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:665,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:669,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:671,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:675,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:678,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:681,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:682,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:687,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:688,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:692,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:693,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:694,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 143
    argCount: 3
    argNames:
    - conn
    - payloadlen
    - async
    argTypes:
    - PGconn*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 434
    functionDepth: 2
    functionLinenumber: 434
    functionLinenumberEnd: 696
    functionName: pg_SASL_init
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pqGets
    - pqFlush
    - pqPuts
    - PQExpBufferDataBroken
    - appendPQExpBufferStr
    - pqPutMsgEnd
    - Assert
    - PGconn*::sasl::init
    - pqPutMsgStart
    - libpq_append_conn_error
    - lengthof
    - PGconn*::sasl::exchange
    - pqPutInt
    - termPQExpBuffer
    - pqPutnchar
    - initPQExpBuffer
    - free
    - pqTraceOutputMessage
    linkageType: ''
    returnType: int
    signature: int pg_SASL_init(PGconn *conn, int payloadlen, bool *async)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:713,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:716,1
    - Dst: pqGetnchar
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:721,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:723,1
    - Dst: pqTraceOutputMessage
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:729,1
    - Dst: PGconn*::sasl::exchange
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:734,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:737,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:756,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:758,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:768,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:782,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:783,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 4
    argNames:
    - conn
    - payloadlen
    - final
    - async
    argTypes:
    - PGconn*
    - int
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 793
    functionName: pg_SASL_continue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - PGconn*::sasl::exchange
    - pqGetnchar
    - free
    - malloc
    - pqTraceOutputMessage
    - pqPacketSend
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int pg_SASL_continue(PGconn *conn, int payloadlen, bool final, bool
      *async)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pqGetnchar
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:806,1
    - Dst: pqTraceOutputMessage
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:812,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:824,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:827,1
    - Dst: pg_md5_encrypt
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:832,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:833,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:836,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:837,1
    - Dst: pg_md5_encrypt
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:840,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:840,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:843,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:844,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:858,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:859,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:860,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - conn
    - password
    - areq
    argTypes:
    - PGconn*
    - char*
    - AuthRequest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 795
    functionDepth: 3
    functionLinenumber: 795
    functionLinenumberEnd: 862
    functionName: pg_password_sendauth
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - pqGetnchar
    - malloc
    - strlen
    - free
    - pqTraceOutputMessage
    - pqPacketSend
    - libpq_append_conn_error
    - pg_md5_encrypt
    linkageType: ''
    returnType: int
    signature: int pg_password_sendauth(PGconn *conn, const char *password, AuthRequest
      areq)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:873,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:875,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:878,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:880,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:884,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:887,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AuthRequest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 867
    functionDepth: 0
    functionLinenumber: 867
    functionLinenumberEnd: 888
    functionName: auth_method_description
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - libpq_gettext
    linkageType: ''
    returnType: char
    signature: 'char *

      auth_method_description(AuthRequest areq)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - conn
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 896
    functionName: auth_method_allowed
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auth_method_allowed(conn, type)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:908,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:920,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:925,1
    - Dst: auth_method_allowed
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:966,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:979,1
    - Dst: auth_method_allowed
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:999,1
    - Dst: auth_method_description
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1011,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1013,1
    - Dst: PGconn*::sasl::channel_bound
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1034,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1036,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1041,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 63
    argCount: 2
    argNames:
    - areq
    - conn
    argTypes:
    - AuthRequest
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 902
    functionDepth: 1
    functionLinenumber: 902
    functionLinenumberEnd: 1048
    functionName: check_expected_areq
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - auth_method_description
    - libpq_gettext
    - auth_method_allowed
    - libpq_append_conn_error
    - StaticAssertDecl
    - PGconn*::sasl::channel_bound
    linkageType: ''
    returnType: bool
    signature: bool check_expected_areq(AuthRequest areq, PGconn *conn)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: check_expected_areq
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1072,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1081,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1085,1
    - Dst: pglock_thread
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1097,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1108,1
    - Dst: pg_GSS_startup
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1109,1
    - Dst: pg_SSPI_startup
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1111,1
    - Dst: pg_GSS_startup
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1113,1
    - Dst: pg_SSPI_startup
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1115,1
    - Dst: pgunlock_thread
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1120,1
    - Dst: pgunlock_thread
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1123,1
    - Dst: pglock_thread
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1131,1
    - Dst: pg_SSPI_continue
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1134,1
    - Dst: pg_GSS_continue
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1136,1
    - Dst: pg_GSS_continue
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1138,1
    - Dst: pg_SSPI_continue
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1140,1
    - Dst: pgunlock_thread
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1145,1
    - Dst: pgunlock_thread
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1148,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1155,1
    - Dst: pglock_thread
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1167,1
    - Dst: pg_SSPI_startup
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1168,1
    - Dst: pgunlock_thread
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1171,1
    - Dst: pgunlock_thread
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1174,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1186,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1193,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1207,1
    - Dst: pg_password_sendauth
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1211,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1213,1
    - Dst: pg_SASL_init
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1229,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1243,1
    - Dst: pg_SASL_continue
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1252,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1259,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1267,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 103
    argCount: 4
    argNames:
    - areq
    - payloadlen
    - conn
    - async
    argTypes:
    - AuthRequest
    - int
    - PGconn*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1065
    functionDepth: 4
    functionLinenumber: 1065
    functionLinenumberEnd: 1272
    functionName: pg_fe_sendauth
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - pg_GSS_startup
    - pg_password_sendauth
    - pg_strcasecmp
    - pg_SSPI_startup
    - pg_SASL_init
    - pg_SASL_continue
    - pgunlock_thread
    - pglock_thread
    - check_expected_areq
    - pg_GSS_continue
    - pg_SSPI_continue
    - libpq_append_conn_error
    - appendPQExpBufferStr
    linkageType: ''
    returnType: int
    signature: int pg_fe_sendauth(AuthRequest areq, int payloadlen, PGconn *conn,
      bool *async)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: GetUserName
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1303,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1306,1
    - Dst: GetLastError
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1308,1
    - Dst: getpwuid_r
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1310,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1315,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1320,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1328,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1330,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - user_id
    - errorMessage
    argTypes:
    - uid_t
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1285
    functionDepth: 1
    functionLinenumber: 1285
    functionLinenumberEnd: 1334
    functionName: pg_fe_getusername
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - GetLastError
    - libpq_append_error
    - getpwuid_r
    - strdup
    - GetUserName
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_fe_getusername(uid_t user_id, PQExpBuffer errorMessage)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_fe_getusername
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1347,1
    - Dst: pg_fe_getusername
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1349,1
    - Dst: geteuid
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - errorMessage
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1343
    functionDepth: 2
    functionLinenumber: 1343
    functionLinenumberEnd: 1351
    functionName: pg_fe_getauthname
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - geteuid
    - pg_fe_getusername
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_fe_getauthname(PQExpBuffer errorMessage)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1368,1
    - Dst: pg_md5_encrypt
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1372,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1372,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - passwd
    - user
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1362
    functionDepth: 3
    functionLinenumber: 1362
    functionLinenumberEnd: 1379
    functionName: PQencryptPassword
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached:
    - free
    - strlen
    - malloc
    - pg_md5_encrypt
    linkageType: ''
    returnType: char
    signature: 'char *

      PQencryptPassword(const char *passwd, const char *user)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1416,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1424,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1430,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1433,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1436,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1436,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1438,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1439,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1442,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1444,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1446,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1447,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1450,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1451,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1461,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1462,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1468,1
    - Dst: pg_fe_scram_build_secret
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1472,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1476,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1478,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1480,1
    - Dst: pg_md5_encrypt
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1485,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1485,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1487,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1488,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1493,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1497,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 4
    argNames:
    - conn
    - passwd
    - user
    - algorithm
    argTypes:
    - PGconn*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1405
    functionDepth: 5
    functionLinenumber: 1405
    functionLinenumberEnd: 1503
    functionName: PQencryptPasswordConn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 1
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - pqClearConnErrorState
    - pg_fe_scram_build_secret
    - PQgetvalue
    - strlen
    - malloc
    - free
    - PQresultStatus
    - PQntuples
    - libpq_append_conn_error
    - strcpy
    - pg_md5_encrypt
    - PQnfields
    linkageType: ''
    returnType: char
    signature: "char *\nPQencryptPasswordConn(PGconn *conn, const char *passwd, const
      char *user,\n\t\t\t\t\t  const char *algorithm)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQencryptPasswordConn
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1533,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1543,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1544,1
    - Dst: PQfreemem
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1547,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1556,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1556,1
    - Dst: PQfreemem
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1561,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1569,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1570,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1573,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1576,1
    - Dst: PQfreemem
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1577,1
    - Dst: PQfreemem
      Src: /src/postgres/src/interfaces/libpq/fe-auth.c:1578,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - conn
    - user
    - passwd
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1584
      start: 1530
    functionDepth: 6
    functionLinenumber: 1530
    functionLinenumberEnd: 1584
    functionName: PQchangePassword
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 1
    functionsReached:
    - printfPQExpBuffer
    - PQexec
    - PQencryptPasswordConn
    - PQescapeIdentifier
    - strlen
    - initPQExpBuffer
    - PQfreemem
    - termPQExpBuffer
    - PQescapeLiteral
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQchangePassword(PGconn *conn, const char *user, const char *passwd)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1588
    functionDepth: 0
    functionLinenumber: 1588
    functionLinenumberEnd: 1592
    functionName: PQgetAuthDataHook
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PQauthDataHook_type
    signature: PQauthDataHook_type PQgetAuthDataHook(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hook
    argTypes:
    - PQauthDataHook_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1594
    functionDepth: 0
    functionLinenumber: 1594
    functionLinenumberEnd: 1598
    functionName: PQsetAuthDataHook
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PQsetAuthDataHook(PQauthDataHook_type hook)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - type
    - conn
    - data
    argTypes:
    - PGauthData
    - PGconn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1600
    functionDepth: 0
    functionLinenumber: 1600
    functionLinenumberEnd: 1604
    functionName: PQdefaultAuthDataHook
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQdefaultAuthDataHook(PGauthData type, PGconn *conn, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/interfaces/libpq/pthread-win32.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 21
    functionName: pthread_self
    functionSourceFile: /src/postgres/src/interfaces/libpq/pthread-win32.c
    functionUses: 0
    functionsReached:
    - GetCurrentThreadId
    linkageType: ''
    returnType: DWORD
    signature: DWORD pthread_self(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - key
    - val
    argTypes:
    - pthread_key_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: pthread_setspecific
    functionSourceFile: /src/postgres/src/interfaces/libpq/pthread-win32.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pthread_setspecific(pthread_key_t key, void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - pthread_key_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: pthread_getspecific
    functionSourceFile: /src/postgres/src/interfaces/libpq/pthread-win32.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      pthread_getspecific(pthread_key_t key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mp
    - attr
    argTypes:
    - pthread_mutex_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: pthread_mutex_init
    functionSourceFile: /src/postgres/src/interfaces/libpq/pthread-win32.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pthread_mutex_init(pthread_mutex_t *mp, void *attr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: InterlockedExchange
      Src: /src/postgres/src/interfaces/libpq/pthread-win32.c:49,1
    - Dst: Sleep
      Src: /src/postgres/src/interfaces/libpq/pthread-win32.c:50,1
    - Dst: InitializeCriticalSection
      Src: /src/postgres/src/interfaces/libpq/pthread-win32.c:52,1
    - Dst: InterlockedExchange
      Src: /src/postgres/src/interfaces/libpq/pthread-win32.c:53,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/interfaces/libpq/pthread-win32.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - mp
    argTypes:
    - pthread_mutex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 57
    functionName: pthread_mutex_lock
    functionSourceFile: /src/postgres/src/interfaces/libpq/pthread-win32.c
    functionUses: 2
    functionsReached:
    - EnterCriticalSection
    - InterlockedExchange
    - Sleep
    - InitializeCriticalSection
    linkageType: ''
    returnType: int
    signature: int pthread_mutex_lock(pthread_mutex_t *mp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/interfaces/libpq/pthread-win32.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mp
    argTypes:
    - pthread_mutex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: pthread_mutex_unlock
    functionSourceFile: /src/postgres/src/interfaces/libpq/pthread-win32.c
    functionUses: 2
    functionsReached:
    - LeaveCriticalSection
    linkageType: ''
    returnType: int
    signature: int pthread_mutex_unlock(pthread_mutex_t *mp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:47,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:48,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:63,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - pattern
    - string
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 75
    functionName: wildcard_certificate_match
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-common.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - strlen
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool wildcard_certificate_match(const char *pattern, const char *string)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:99,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:107,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:110,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:113,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:120,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:122,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:123,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:127,1
    - Dst: wildcard_certificate_match
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:132,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 4
    argNames:
    - conn
    - namedata
    - namelen
    - store_name
    argTypes:
    - PGconn*
    - char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 86
    functionDepth: 3
    functionLinenumber: 86
    functionLinenumberEnd: 144
    functionName: pq_verify_peer_name_matches_certificate_name
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-common.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - memcpy
    - free
    - malloc
    - strlen
    - wildcard_certificate_match
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: "int pq_verify_peer_name_matches_certificate_name(PGconn *conn,\n\t\t\t\t\t\t\t\t\t\t\t
      const char *namedata, size_t namelen,\n\t\t\t\t\t\t\t\t\t\t\t char **store_name)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:173,1
    - Dst: inet_aton
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:196,1
    - Dst: memcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:198,1
    - Dst: inet_pton
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:215,1
    - Dst: memcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:217,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:228,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - conn
    - ipdata
    - iplen
    - store_name
    argTypes:
    - PGconn*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 231
    functionName: pq_verify_peer_name_matches_certificate_ip
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-common.c
    functionUses: 0
    functionsReached:
    - memcmp
    - libpq_append_conn_error
    - inet_aton
    - inet_pton
    linkageType: ''
    returnType: int
    signature: "int pq_verify_peer_name_matches_certificate_ip(PGconn *conn,\n\t\t\t\t\t\t\t\t\t\t
      \  const unsigned char *ipdata,\n\t\t\t\t\t\t\t\t\t\t   size_t iplen,\n\t\t\t\t\t\t\t\t\t\t
      \  char **store_name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:263,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:269,1
    - Dst: pgtls_verify_peer_name_matches_certificate_guts
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:273,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:285,1
    - Dst: libpq_ngettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:286,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:290,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:294,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:299,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-common.c:304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 251
    functionDepth: 4
    functionLinenumber: 251
    functionLinenumberEnd: 307
    functionName: pq_verify_peer_name_matches_certificate
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-common.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pgtls_verify_peer_name_matches_certificate_guts
    - libpq_ngettext
    - free
    - appendPQExpBufferChar
    - libpq_append_conn_error
    - appendPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool pq_verify_peer_name_matches_certificate(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initialize_SSL
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:105,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:108,1
    - Dst: open_client_SSL
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 115
    functionName: pgtls_open_client
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - pgtls_close
    - initialize_SSL
    - open_client_SSL
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType pgtls_open_client(PGconn *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:137,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:138,1
    - Dst: SSL_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:139,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:140,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:150,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:157,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:181,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:185,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:186,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:191,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:199,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:201,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:202,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:215,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:220,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:228,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 231
    functionName: pgtls_read
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_read
    - SSLerrfree
    - SSL_get_error
    - SSLerrmessage
    - ERR_clear_error
    - SOCK_STRERROR
    - ERR_get_error
    - libpq_append_conn_error
    - appendPQExpBufferStr
    - SOCK_ERRNO_SET
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pgtls_read(PGconn *conn, void *ptr, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:243,1
    - Dst: SSL_get_read_ahead
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:243,1
    - Dst: SSL_pending
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:245,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:249,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:250,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 267
    functionName: pgtls_bytes_pending
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - Assert
    - libpq_append_conn_error
    - SSL_get_read_ahead
    - SSL_pending
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pgtls_bytes_pending(PGconn *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:278,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:279,1
    - Dst: SSL_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:280,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:281,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:282,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:289,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:317,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:321,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:322,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:327,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:335,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:337,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:338,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:351,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:356,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:364,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 367
    functionName: pgtls_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSLerrfree
    - SSL_get_error
    - SSLerrmessage
    - SSL_write
    - ERR_clear_error
    - SOCK_STRERROR
    - ERR_get_error
    - libpq_append_conn_error
    - appendPQExpBufferStr
    - SOCK_ERRNO_SET
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pgtls_write(PGconn *conn, const void *ptr, size_t len)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: X509_get_signature_info
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:392,1
    - Dst: OBJ_find_sigid_algs
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:394,1
    - Dst: X509_get_signature_nid
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:394,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:398,1
    - Dst: EVP_sha256
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:412,1
    - Dst: EVP_get_digestbynid
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:415,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:418,1
    - Dst: OBJ_nid2sn
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:419,1
    - Dst: X509_digest
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:425,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:427,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:432,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:435,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:438,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - conn
    - len
    argTypes:
    - PGconn*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 442
    functionName: pgtls_get_peer_certificate_hash
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - X509_digest
    - memcpy
    - EVP_sha256
    - EVP_get_digestbynid
    - malloc
    - OBJ_nid2sn
    - OBJ_find_sigid_algs
    - libpq_append_conn_error
    - X509_get_signature_nid
    - X509_get_signature_info
    linkageType: ''
    returnType: char
    signature: 'char *

      pgtls_get_peer_certificate_hash(PGconn *conn, size_t *len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ok
    - ctx
    argTypes:
    - int
    - X509_STORE_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 463
    functionName: verify_cb
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int verify_cb(int ok, X509_STORE_CTX *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_certificate
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ssl
    - arg
    argTypes:
    - SSL*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 491
    functionName: cert_cb
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_certificate
    linkageType: ''
    returnType: int
    signature: int cert_cb(SSL *ssl, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:510,1
    - Dst: ASN1_STRING_get0_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:517,1
    - Dst: ASN1_STRING_length
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:518,1
    - Dst: pq_verify_peer_name_matches_certificate_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - conn
    - name_entry
    - store_name
    argTypes:
    - PGconn*
    - ASN1_STRING*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 499
    functionDepth: 4
    functionLinenumber: 499
    functionLinenumberEnd: 522
    functionName: openssl_verify_peer_name_matches_certificate_name
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - ASN1_STRING_length
    - ASN1_STRING_get0_data
    - libpq_append_conn_error
    - pq_verify_peer_name_matches_certificate_name
    linkageType: ''
    returnType: int
    signature: "int openssl_verify_peer_name_matches_certificate_name(PGconn *conn,\n\t\t\t\t\t\t\t\t\t\t\t\t
      \ const ASN1_STRING *name_entry,\n\t\t\t\t\t\t\t\t\t\t\t\t  char **store_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:540,1
    - Dst: ASN1_STRING_get0_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:548,1
    - Dst: ASN1_STRING_length
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:549,1
    - Dst: pq_verify_peer_name_matches_certificate_ip
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:551,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - conn
    - addr_entry
    - store_name
    argTypes:
    - PGconn*
    - ASN1_OCTET_STRING*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 529
    functionDepth: 3
    functionLinenumber: 529
    functionLinenumberEnd: 552
    functionName: openssl_verify_peer_name_matches_certificate_ip
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - ASN1_STRING_length
    - pq_verify_peer_name_matches_certificate_ip
    - ASN1_STRING_get0_data
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: "int openssl_verify_peer_name_matches_certificate_ip(PGconn *conn,\n\t\t\t\t\t\t\t\t\t\t\t\tASN1_OCTET_STRING
      *addr_entry,\n\t\t\t\t\t\t\t\t\t\t\t\tchar **store_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_aton
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:562,1
    - Dst: inet_pton
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - host
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 554
    functionDepth: 2
    functionLinenumber: 554
    functionLinenumberEnd: 567
    functionName: is_ip_address
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - inet_aton
    - inet_pton
    linkageType: ''
    returnType: bool
    signature: bool is_ip_address(const char *host)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: STACK_OF
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:579,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:586,1
    - Dst: is_ip_address
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:608,1
    - Dst: STACK_OF
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:617,1
    - Dst: X509_get_ext_d2i
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:618,1
    - Dst: sk_GENERAL_NAME_num
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:622,1
    - Dst: sk_GENERAL_NAME_value
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:626,1
    - Dst: openssl_verify_peer_name_matches_certificate_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:641,1
    - Dst: openssl_verify_peer_name_matches_certificate_ip
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:648,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:658,1
    - Dst: sk_GENERAL_NAME_pop_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:671,1
    - Dst: X509_get_subject_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:686,1
    - Dst: X509_NAME_get_index_by_NID
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:691,1
    - Dst: unconstify
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:691,1
    - Dst: openssl_verify_peer_name_matches_certificate_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:698,1
    - Dst: X509_NAME_ENTRY_get_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:699,1
    - Dst: X509_NAME_get_entry
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:699,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:707,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 3
    argNames:
    - conn
    - names_examined
    - first_name
    argTypes:
    - PGconn*
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 574
    functionDepth: 5
    functionLinenumber: 574
    functionLinenumberEnd: 714
    functionName: pgtls_verify_peer_name_matches_certificate_guts
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 1
    functionsReached:
    - sk_GENERAL_NAME_value
    - X509_NAME_ENTRY_get_data
    - openssl_verify_peer_name_matches_certificate_name
    - X509_NAME_get_index_by_NID
    - Assert
    - X509_get_ext_d2i
    - sk_GENERAL_NAME_pop_free
    - STACK_OF
    - unconstify
    - X509_NAME_get_entry
    - sk_GENERAL_NAME_num
    - free
    - X509_get_subject_name
    - openssl_verify_peer_name_matches_certificate_ip
    - is_ip_address
    linkageType: ''
    returnType: int
    signature: "int pgtls_verify_peer_name_matches_certificate_guts(PGconn *conn,\n\t\t\t\t\t\t\t\t\t\t\t\tint
      *names_examined,\n\t\t\t\t\t\t\t\t\t\t\t\tchar **first_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_app_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:737,1
    - Dst: open
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:742,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:746,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:746,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:752,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:752,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:754,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:754,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:757,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:759,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ssl
    - line
    argTypes:
    - SSL*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 760
    functionName: SSL_CTX_keylog_cb
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_app_data
    - libpq_gettext
    - write
    - strlen
    - close
    - open
    - fprintf
    linkageType: ''
    returnType: void
    signature: void SSL_CTX_keylog_cb(const SSL *ssl, const char *line)
  - BBCount: 54
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:786,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:787,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:788,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:789,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:790,1
    - Dst: pqGetHomeDirectory
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:791,1
    - Dst: SSL_CTX_new
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:802,1
    - Dst: SSLv23_method
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:802,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:805,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:805,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:807,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:808,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:825,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:827,1
    - Dst: SSL_CTX_set_default_passwd_cb_userdata
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:828,1
    - Dst: SSL_CTX_set_cert_cb
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:833,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:837,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:841,1
    - Dst: ssl_protocol_version_to_openssl
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:845,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:849,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:851,1
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:855,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:857,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:857,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:859,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:860,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:861,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:867,1
    - Dst: ssl_protocol_version_to_openssl
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:871,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:875,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:877,1
    - Dst: SSL_CTX_set_max_proto_version
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:881,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:883,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:883,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:885,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:886,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:887,1
    - Dst: SSL_CTX_set_mode
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:896,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:903,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:904,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:906,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:910,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:919,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:921,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:921,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:923,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:925,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:926,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:932,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:936,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:938,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:938,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:940,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:942,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:943,1
    - Dst: SSL_CTX_get_cert_store
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:947,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:952,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:954,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:960,1
    - Dst: X509_STORE_load_locations
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:966,1
    - Dst: X509_STORE_set_flags
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:968,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:973,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:992,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:995,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:997,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1004,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1005,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1007,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1021,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1030,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1031,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1032,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1044,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1046,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1046,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1048,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1050,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1051,1
    - Dst: SSL_new
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1066,1
    - Dst: SSL_set_app_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1067,1
    - Dst: ssl_set_pgconn_bio
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1068,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1070,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1070,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1072,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1073,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1074,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1083,1
    - Dst: SSL_CTX_set_keylog_callback
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1086,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1089,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1089,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1091,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1091,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1101,1
    - Dst: strspn
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1114,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1114,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1115,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1117,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1119,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1119,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1121,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1122,1
    - Dst: SSL_set_alpn_protos
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1132,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1136,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1136,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1138,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1139,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1150,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1153,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1160,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1166,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1171,1
    - Dst: ENGINE_by_id
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1176,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1179,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1179,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1181,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1183,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1184,1
    - Dst: ENGINE_init
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1188,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1190,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1190,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1192,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1194,1
    - Dst: ENGINE_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1195,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1197,1
    - Dst: ENGINE_load_private_key
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1201,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1205,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1205,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1207,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1209,1
    - Dst: ENGINE_finish
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1210,1
    - Dst: ENGINE_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1211,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1213,1
    - Dst: SSL_use_PrivateKey
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1216,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1218,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1218,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1220,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1222,1
    - Dst: ENGINE_finish
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1223,1
    - Dst: ENGINE_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1224,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1226,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1230,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1239,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1245,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1254,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1257,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1260,1
    - Dst: S_ISREG
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1266,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1268,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1300,1
    - Dst: SSL_use_PrivateKey_file
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1307,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1309,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1309,1
    - Dst: SSL_use_PrivateKey_file
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1323,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1325,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1327,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1331,1
    - Dst: SSL_check_private_key
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1337,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1339,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1339,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1341,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1343,1
    - Dst: SSL_set_verify
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1352,1
    - Dst: SSL_set_options
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1358,1
    - Dst: SSL_clear_options
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1360,1
    CyclomaticComplexity: 90
    EdgeCount: 90
    ICount: 236
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 769
    functionDepth: 1
    functionLinenumber: 769
    functionLinenumberEnd: 1363
    functionName: initialize_SSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 1
    functionsReached:
    - strerror_r
    - ENGINE_finish
    - SSL_CTX_set_default_passwd_cb_userdata
    - X509_STORE_load_locations
    - SSLv23_method
    - SSLerrfree
    - strcmp
    - pqGetHomeDirectory
    - strchr
    - S_ISREG
    - SSLerrmessage
    - SSL_CTX_set_options
    - SSL_CTX_set_default_verify_paths
    - SSL_set_options
    - SSL_CTX_get_cert_store
    - ENGINE_by_id
    - fprintf
    - strlcpy
    - SSL_CTX_use_certificate_chain_file
    - ssl_set_pgconn_bio
    - SSL_CTX_free
    - SSL_CTX_set_max_proto_version
    - ERR_clear_error
    - SSL_CTX_new
    - strspn
    - ENGINE_free
    - strdup
    - ENGINE_load_private_key
    - libpq_append_conn_error
    - SSL_set_tlsext_host_name
    - X509_STORE_set_flags
    - SSL_check_private_key
    - SSL_CTX_set_min_proto_version
    - libpq_gettext
    - SSL_set_alpn_protos
    - SSL_set_verify
    - SSL_clear_options
    - SSL_CTX_set_keylog_callback
    - strlen
    - ssl_protocol_version_to_openssl
    - SSL_CTX_set_cert_cb
    - ENGINE_init
    - SSL_CTX_load_verify_locations
    - SSL_new
    - stat
    - SSL_use_PrivateKey
    - SSL_set_app_data
    - free
    - ERR_get_error
    - SSL_use_PrivateKey_file
    - SSL_CTX_set_mode
    - SSL_CTX_set_default_passwd_cb
    - snprintf
    linkageType: ''
    returnType: int
    signature: int initialize_SSL(PGconn *conn)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1373,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1374,1
    - Dst: SSL_connect
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1375,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1379,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1382,1
    - Dst: SSL_get_verify_result
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1396,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1409,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1410,1
    - Dst: X509_verify_cert_error_string
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1411,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1413,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1414,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1416,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1417,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1422,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1424,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1425,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1426,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1455,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1466,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1471,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1472,1
    - Dst: SSL_get0_alpn_selected
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1483,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1487,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1488,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1496,1
    - Dst: memcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1497,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1497,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1499,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1500,1
    - Dst: SSL_get_peer_certificate
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1511,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1514,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1514,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1516,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1517,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1518,1
    - Dst: pq_verify_peer_name_matches_certificate
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1522,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1524,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 75
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1368
    functionDepth: 5
    functionLinenumber: 1368
    functionLinenumberEnd: 1530
    functionName: open_client_SSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 1
    functionsReached:
    - strcmp
    - SSLerrfree
    - SSLerrmessage
    - SSL_get0_alpn_selected
    - pq_verify_peer_name_matches_certificate
    - ERR_clear_error
    - SOCK_STRERROR
    - memcmp
    - libpq_append_conn_error
    - SSL_get_verify_result
    - ERR_GET_REASON
    - strlen
    - SSL_get_error
    - X509_verify_cert_error_string
    - SSL_get_peer_certificate
    - pgtls_close
    - ERR_get_error
    - SSL_connect
    - SOCK_ERRNO_SET
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType open_client_SSL(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_shutdown
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1545,1
    - Dst: SSL_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1546,1
    - Dst: X509_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1554,1
    - Dst: ENGINE_finish
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1561,1
    - Dst: ENGINE_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1562,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1532
    functionDepth: 0
    functionLinenumber: 1532
    functionLinenumberEnd: 1567
    functionName: pgtls_close
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 2
    functionsReached:
    - ENGINE_finish
    - X509_free
    - SSL_free
    - ENGINE_free
    - SSL_shutdown
    linkageType: ''
    returnType: void
    signature: void pgtls_close(PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1590,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1595,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1595,1
    - Dst: ERR_reason_error_string
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1598,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1601,1
    - Dst: ERR_GET_LIB
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1614,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1615,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1617,1
    - Dst: ERR_SYSTEM_ERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1630,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1632,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1632,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1638,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1638,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - ecode
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1584
    functionDepth: 1
    functionLinenumber: 1584
    functionLinenumberEnd: 1640
    functionName: SSLerrmessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 10
    functionsReached:
    - strerror_r
    - strlcpy
    - libpq_gettext
    - ERR_GET_LIB
    - ERR_reason_error_string
    - ERR_SYSTEM_ERROR
    - malloc
    - ERR_GET_REASON
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      SSLerrmessage(unsigned long ecode)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1642
    functionDepth: 1
    functionLinenumber: 1642
    functionLinenumberEnd: 1647
    functionName: SSLerrfree
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 4
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void SSLerrfree(char *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1662
      start: 1656
    functionDepth: 0
    functionLinenumber: 1656
    functionLinenumberEnd: 1662
    functionName: PQgetssl
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      PQgetssl(PGconn *conn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1669,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - struct_name
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1672
      start: 1664
    functionDepth: 0
    functionLinenumber: 1664
    functionLinenumberEnd: 1672
    functionName: PQsslStruct
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: 'void *

      PQsslStruct(PGconn *conn, const char *struct_name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1674
    functionDepth: 0
    functionLinenumber: 1674
    functionLinenumberEnd: 1699
    functionName: PQsslAttributeNames
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *const *

      PQsslAttributeNames(PGconn *conn)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1707,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1716,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1719,1
    - Dst: SSL_get_cipher_bits
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1724,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1725,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1729,1
    - Dst: SSL_get_cipher
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1730,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1732,1
    - Dst: SSL_get_current_compression
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1733,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1735,1
    - Dst: SSL_get_version
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1736,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1738,1
    - Dst: SSL_get0_alpn_selected
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1745,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1748,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - conn
    - attribute_name
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1701
    functionDepth: 0
    functionLinenumber: 1701
    functionLinenumberEnd: 1754
    functionName: PQsslAttribute
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 2
    functionsReached:
    - memcpy
    - strcmp
    - SSL_get_current_compression
    - SSL_get0_alpn_selected
    - SSL_get_cipher
    - SSL_get_cipher_bits
    - SSL_get_version
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      PQsslAttribute(PGconn *conn, const char *attribute_name)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BIO_get_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1771,1
    - Dst: pqsecure_raw_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1774,1
    - Dst: BIO_clear_retry_flags
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1775,1
    - Dst: BIO_set_retry_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1789,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - h
    - buf
    - size
    argTypes:
    - BIO*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1768
    functionDepth: 1
    functionLinenumber: 1768
    functionLinenumberEnd: 1801
    functionName: pgconn_bio_read
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - pqsecure_raw_read
    - BIO_set_retry_read
    - BIO_clear_retry_flags
    - BIO_get_data
    linkageType: ''
    returnType: int
    signature: int pgconn_bio_read(BIO *h, char *buf, int size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqsecure_raw_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1808,1
    - Dst: BIO_get_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1808,1
    - Dst: BIO_clear_retry_flags
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1809,1
    - Dst: BIO_set_retry_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1822,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - h
    - buf
    - size
    argTypes:
    - BIO*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1803
    functionDepth: 1
    functionLinenumber: 1803
    functionLinenumberEnd: 1831
    functionName: pgconn_bio_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_set_retry_write
    - BIO_get_data
    - BIO_clear_retry_flags
    - pqsecure_raw_write
    linkageType: ''
    returnType: int
    signature: int pgconn_bio_write(BIO *h, const char *buf, int size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BIO_get_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1837,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - h
    - cmd
    - num
    - ptr
    argTypes:
    - BIO*
    - int
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1833
    functionDepth: 0
    functionLinenumber: 1833
    functionLinenumberEnd: 1861
    functionName: pgconn_bio_ctrl
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_get_data
    linkageType: ''
    returnType: long
    signature: long pgconn_bio_ctrl(BIO *h, int cmd, long num, void *ptr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1868,1
    - Dst: BIO_get_new_index
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1877,1
    - Dst: BIO_meth_new
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1881,1
    - Dst: BIO_meth_set_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1889,1
    - Dst: BIO_meth_set_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1890,1
    - Dst: BIO_meth_set_ctrl
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1891,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1898,1
    - Dst: BIO_meth_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1903,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1904,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1906
      start: 1863
    functionDepth: 0
    functionLinenumber: 1863
    functionLinenumberEnd: 1906
    functionName: pgconn_bio_method
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_meth_set_read
    - BIO_meth_free
    - BIO_meth_set_ctrl
    - BIO_meth_new
    - pthread_mutex_lock
    - BIO_meth_set_write
    - BIO_get_new_index
    - pthread_mutex_unlock
    linkageType: ''
    returnType: BIO_METHOD
    signature: 'BIO_METHOD *

      pgconn_bio_method(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgconn_bio_method
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1914,1
    - Dst: BIO_new
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1918,1
    - Dst: BIO_set_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1922,1
    - Dst: BIO_set_init
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1923,1
    - Dst: SSL_set_bio
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1925,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1927
      start: 1908
    functionDepth: 1
    functionLinenumber: 1908
    functionLinenumberEnd: 1927
    functionName: ssl_set_pgconn_bio
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 1
    functionsReached:
    - BIO_set_data
    - pgconn_bio_method
    - BIO_set_init
    - BIO_new
    - SSL_set_bio
    linkageType: ''
    returnType: int
    signature: int ssl_set_pgconn_bio(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1939,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1940,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1940,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1941,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1943,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - size
    - conn
    argTypes:
    - char*
    - int
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1934
    functionDepth: 0
    functionLinenumber: 1934
    functionLinenumberEnd: 1950
    functionName: PQdefaultSSLKeyPassHook_OpenSSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - libpq_gettext
    - strlen
    - strncpy
    - fprintf
    linkageType: ''
    returnType: int
    signature: int PQdefaultSSLKeyPassHook_OpenSSL(char *buf, int size, PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1956
      start: 1952
    functionDepth: 0
    functionLinenumber: 1952
    functionLinenumberEnd: 1956
    functionName: PQgetSSLKeyPassHook_OpenSSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PQsslKeyPassHook_OpenSSL_type
    signature: PQsslKeyPassHook_OpenSSL_type PQgetSSLKeyPassHook_OpenSSL(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hook
    argTypes:
    - PQsslKeyPassHook_OpenSSL_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1962
      start: 1958
    functionDepth: 0
    functionLinenumber: 1958
    functionLinenumberEnd: 1962
    functionName: PQsetSSLKeyPassHook_OpenSSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PQsetSSLKeyPassHook_OpenSSL(PQsslKeyPassHook_OpenSSL_type hook)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQsslKeyPassHook
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1975,1
    - Dst: PQdefaultSSLKeyPassHook_OpenSSL
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1977,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - buf
    - size
    - rwflag
    - userdata
    argTypes:
    - char*
    - int
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1978
      start: 1969
    functionDepth: 0
    functionLinenumber: 1969
    functionLinenumberEnd: 1978
    functionName: PQssl_passwd_cb
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - PQdefaultSSLKeyPassHook_OpenSSL
    - PQsslKeyPassHook
    linkageType: ''
    returnType: int
    signature: int PQssl_passwd_cb(char *buf, int size, int rwflag, void *userdata)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1993,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1997,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:2002,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:2007,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - protocol
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2012
      start: 1990
    functionDepth: 2
    functionLinenumber: 1990
    functionLinenumberEnd: 2012
    functionName: ssl_protocol_version_to_openssl
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    linkageType: ''
    returnType: int
    signature: int ssl_protocol_version_to_openssl(const char *protocol)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/libpq-events.c:62,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/libpq-events.c:64,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/libpq-events.c:74,1
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/libpq-events.c:83,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/libpq-events.c:86,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 4
    argNames:
    - conn
    - proc
    - name
    - passThrough
    argTypes:
    - PGconn*
    - PGEventProc
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 91
    functionName: PQregisterEventProc
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-events.c
    functionUses: 0
    functionsReached:
    - realloc
    - free
    - malloc
    - strdup
    - proc
    linkageType: ''
    returnType: int
    signature: "int PQregisterEventProc(PGconn *conn, PGEventProc proc,\n\t\t\t\t\tconst
      char *name, void *passThrough)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - proc
    - data
    argTypes:
    - PGconn*
    - PGEventProc
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 115
    functionName: PQsetInstanceData
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-events.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQsetInstanceData(PGconn *conn, PGEventProc proc, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - proc
    argTypes:
    - PGconn*
    - PGEventProc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 135
    functionName: PQinstanceData
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-events.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      PQinstanceData(const PGconn *conn, PGEventProc proc)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - result
    - proc
    - data
    argTypes:
    - PGresult*
    - PGEventProc
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 159
    functionName: PQresultSetInstanceData
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-events.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQresultSetInstanceData(PGresult *result, PGEventProc proc, void
      *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - result
    - proc
    argTypes:
    - PGresult*
    - PGEventProc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 177
    functionName: PQresultInstanceData
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-events.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      PQresultInstanceData(const PGresult *result, PGEventProc proc)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/libpq-events.c:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - conn
    - res
    argTypes:
    - PGconn*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 211
    functionName: PQfireResultCreateEvents
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-events.c
    functionUses: 1
    functionsReached:
    - proc
    linkageType: ''
    returnType: int
    signature: int PQfireResultCreateEvents(PGconn *conn, PGresult *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: SIGPIPE_MASKED
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIGPIPE_MASKED(conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - spinfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: DECLARE_SIGPIPE_INFO
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_SIGPIPE_INFO(spinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - conn
    - ','
    - spinfo
    - ','
    - failaction
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: DISABLE_SIGPIPE
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISABLE_SIGPIPE(conn, spinfo, failaction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - spinfo
    - ','
    - cond
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: REMEMBER_EPIPE
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REMEMBER_EPIPE(spinfo, cond)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - conn
    - ','
    - spinfo
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 89
    functionName: RESTORE_SIGPIPE
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESTORE_SIGPIPE(conn, spinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: PQsslInUse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQsslInUse(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - do_init
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: PQinitSSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PQinitSSL(int do_init)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - do_ssl
    - do_crypto
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: PQinitOpenSSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PQinitOpenSSL(int do_ssl, int do_crypto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgtls_open_client
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 146
    functionName: pqsecure_open_client
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - pgtls_open_client
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType pqsecure_open_client(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: pqsecure_close
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - pgtls_close
    linkageType: ''
    returnType: void
    signature: void pqsecure_close(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgtls_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:174,1
    - Dst: pg_GSS_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:181,1
    - Dst: pqsecure_raw_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 190
    functionName: pqsecure_read
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - pgtls_read
    - pqsecure_raw_read
    - pg_GSS_read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pqsecure_read(PGconn *conn, void *ptr, size_t len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:199,1
    - Dst: recv
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:201,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:222,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:233,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:234,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:241,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 244
    functionName: pqsecure_raw_read
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 2
    functionsReached:
    - SOCK_STRERROR
    - libpq_append_conn_error
    - recv
    - SOCK_ERRNO_SET
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pqsecure_raw_read(PGconn *conn, void *ptr, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgtls_bytes_pending
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:258,1
    - Dst: pg_GSS_bytes_pending
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 267
    functionName: pqsecure_bytes_pending
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - pgtls_bytes_pending
    - pg_GSS_bytes_pending
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pqsecure_bytes_pending(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgtls_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:297,1
    - Dst: pg_GSS_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:304,1
    - Dst: pqsecure_raw_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:309,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 313
    functionName: pqsecure_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - pgtls_write
    - pqsecure_raw_write
    - pg_GSS_write
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pqsecure_write(PGconn *conn, const void *ptr, size_t len)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: DECLARE_SIGPIPE_INFO
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:347,1
    - Dst: DISABLE_SIGPIPE
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:366,1
    - Dst: send
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:368,1
    - Dst: REMEMBER_EPIPE
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:403,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:411,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:412,1
    - Dst: strlcat
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:416,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:417,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:426,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:427,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:428,1
    - Dst: strlcat
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:431,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:432,1
    - Dst: RESTORE_SIGPIPE
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:439,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:442,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 445
    functionName: pqsecure_raw_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 2
    functionsReached:
    - send
    - REMEMBER_EPIPE
    - strlcat
    - RESTORE_SIGPIPE
    - libpq_gettext
    - SOCK_STRERROR
    - DISABLE_SIGPIPE
    - strdup
    - DECLARE_SIGPIPE_INFO
    - SOCK_ERRNO_SET
    - snprintf
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pqsecure_raw_write(PGconn *conn, const void *ptr, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 454
    functionName: PQgetssl
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      PQgetssl(PGconn *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - struct_name
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 460
    functionName: PQsslStruct
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      PQsslStruct(PGconn *conn, const char *struct_name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - attribute_name
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 466
    functionName: PQsslAttribute
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQsslAttribute(PGconn *conn, const char *attribute_name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 474
    functionName: PQsslAttributeNames
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *const *

      PQsslAttributeNames(PGconn *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 487
    functionName: PQgetSSLKeyPassHook_OpenSSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PQsslKeyPassHook_OpenSSL_type
    signature: PQsslKeyPassHook_OpenSSL_type PQgetSSLKeyPassHook_OpenSSL(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hook
    argTypes:
    - PQsslKeyPassHook_OpenSSL_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 493
    functionName: PQsetSSLKeyPassHook_OpenSSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PQsetSSLKeyPassHook_OpenSSL(PQsslKeyPassHook_OpenSSL_type hook)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - size
    - conn
    argTypes:
    - char*
    - int
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 499
    functionName: PQdefaultSSLKeyPassHook_OpenSSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQdefaultSSLKeyPassHook_OpenSSL(char *buf, int size, PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 509
    functionName: PQgetgssctx
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      PQgetgssctx(PGconn *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 515
    functionName: PQgssEncInUse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQgssEncInUse(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:532,1
    - Dst: sigaddset
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:533,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:536,1
    - Dst: pthread_sigmask
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:536,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:541,1
    - Dst: sigpending
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:544,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:547,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - osigset
    - sigpipe_pending
    argTypes:
    - sigset_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 556
    functionName: pq_block_sigpipe
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - pthread_sigmask
    - sigemptyset
    - sigpending
    - sigismember
    - SOCK_ERRNO_SET
    - sigaddset
    linkageType: ''
    returnType: int
    signature: int pq_block_sigpipe(sigset_t *osigset, bool *sigpipe_pending)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sigpending
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:586,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:587,1
    - Dst: sigemptyset
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:591,1
    - Dst: sigaddset
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:592,1
    - Dst: sigwait
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:594,1
    - Dst: pthread_sigmask
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:599,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:601,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - osigset
    - sigpipe_pending
    - got_epipe
    argTypes:
    - sigset_t*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 602
    functionName: pq_reset_sigpipe
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - pthread_sigmask
    - sigwait
    - sigemptyset
    - sigpending
    - sigismember
    - SOCK_ERRNO_SET
    - sigaddset
    linkageType: ''
    returnType: void
    signature: void pq_reset_sigpipe(sigset_t *osigset, bool sigpipe_pending, bool
      got_epipe)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQuntrace
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - debug_port
    argTypes:
    - PGconn*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 45
    functionName: PQtrace
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 1
    functionsReached:
    - PQuntrace
    linkageType: ''
    returnType: void
    signature: void PQtrace(PGconn *conn, FILE *debug_port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 60
    functionName: PQuntrace
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 1
    functionsReached:
    - fflush
    linkageType: ''
    returnType: void
    signature: void PQuntrace(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - flags
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: PQsetTraceFlags
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PQsetTraceFlags(PGconn *conn, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:86,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:95,1
    - Dst: localtime_r
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:97,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:99,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:99,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - timestr
    - ts_len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 101
    functionName: pqTraceFormatTimestamp
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - gettimeofday
    - localtime_r
    - strftime
    - strlen
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceFormatTimestamp(char *timestr, size_t ts_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isprint
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:115,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:116,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - pfdebug
    - data
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 120
    functionName: pqTraceOutputByte1
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - isprint
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutputByte1(FILE *pfdebug, const char *data, int *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:131,1
    - Dst: pg_ntoh16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:133,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - pfdebug
    - data
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 137
    functionName: pqTraceOutputInt16
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pg_ntoh16
    - memcpy
    - fprintf
    linkageType: ''
    returnType: int
    signature: int pqTraceOutputInt16(FILE *pfdebug, const char *data, int *cursor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:149,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:151,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:153,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - pfdebug
    - data
    - cursor
    - suppress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 158
    functionName: pqTraceOutputInt32
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - fprintf
    - memcpy
    - pg_ntoh32
    linkageType: ''
    returnType: int
    signature: int pqTraceOutputInt32(FILE *pfdebug, const char *data, int *cursor,
      bool suppress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:172,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:173,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - pfdebug
    - data
    - cursor
    - suppress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 185
    functionName: pqTraceOutputString
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - strlen
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutputString(FILE *pfdebug, const char *data, int *cursor,
      bool suppress)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:201,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:206,1
    - Dst: isprint
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:210,1
    - Dst: fwrite
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:214,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:215,1
    - Dst: fwrite
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:220,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - pfdebug
    - len
    - data
    - cursor
    - suppress
    argTypes:
    - FILE*
    - int
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 224
    functionName: pqTraceOutputNchar
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - isprint
    - fwrite
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutputNchar(FILE *pfdebug, int len, const char *data, int
      *cursor, bool suppress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:233,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:234,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:235,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 237
    functionName: pqTraceOutput_NotificationResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_NotificationResponse(FILE *f, const char *message,
      int *cursor, bool regress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:244,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:245,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:246,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:247,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:250,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:252,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:258,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:261,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:264,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:266,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 267
    functionName: pqTraceOutput_Bind
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt16
    - pqTraceOutputNchar
    - pqTraceOutputInt32
    - pqTraceOutputString
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_Bind(FILE *f, const char *message, int *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:272,1
    - Dst: pqTraceOutputByte1
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:273,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 275
    functionName: pqTraceOutput_Close
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - pqTraceOutputByte1
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_Close(FILE *f, const char *message, int *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:280,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 282
    functionName: pqTraceOutput_CommandComplete
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_CommandComplete(FILE *f, const char *message, int
      *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:288,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - f
    - message
    - cursor
    - length
    - suppress
    argTypes:
    - FILE*
    - char*
    - int*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 290
    functionName: pqTraceOutput_CopyData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNchar
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void pqTraceOutput_CopyData(FILE *f, const char *message, int *cursor,
      int length,\n\t\t\t\t\t   bool suppress)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:299,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:300,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:303,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 308
    functionName: pqTraceOutput_DataRow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNchar
    - pqTraceOutputInt16
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_DataRow(FILE *f, const char *message, int *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:313,1
    - Dst: pqTraceOutputByte1
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:314,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 316
    functionName: pqTraceOutput_Describe
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - pqTraceOutputByte1
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_Describe(FILE *f, const char *message, int *cursor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:323,1
    - Dst: pqTraceOutputByte1
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:329,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:335,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 5
    argNames:
    - f
    - type
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 337
    functionName: pqTraceOutputNR
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - pqTraceOutputByte1
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void pqTraceOutputNR(FILE *f, const char *type, const char *message,
      int *cursor,\n\t\t\t\tbool regress)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqTraceOutputNR
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 339
    functionDepth: 2
    functionLinenumber: 339
    functionLinenumberEnd: 343
    functionName: pqTraceOutput_ErrorResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNR
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_ErrorResponse(FILE *f, const char *message, int
      *cursor, bool regress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqTraceOutputNR
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 349
    functionName: pqTraceOutput_NoticeResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNR
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_NoticeResponse(FILE *f, const char *message, int
      *cursor, bool regress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:354,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:355,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 357
    functionName: pqTraceOutput_Execute
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_Execute(FILE *f, const char *message, int *cursor,
      bool regress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:362,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 364
    functionName: pqTraceOutput_CopyFail
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_CopyFail(FILE *f, const char *message, int *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:370,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - f
    - message
    - cursor
    - length
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 372
    functionName: pqTraceOutput_GSSResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNchar
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void pqTraceOutput_GSSResponse(FILE *f, const char *message, int *cursor,\n\t\t\t\t\t\t
      \ int length, bool regress)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:377,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 379
    functionName: pqTraceOutput_PasswordMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_PasswordMessage(FILE *f, const char *message, int
      *cursor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:387,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:388,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:389,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 392
    functionName: pqTraceOutput_SASLInitialResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNchar
    - pqTraceOutputString
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void pqTraceOutput_SASLInitialResponse(FILE *f, const char *message,
      int *cursor,\n\t\t\t\t\t\t\t\t  bool regress)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:398,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - f
    - message
    - cursor
    - length
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 400
    functionName: pqTraceOutput_SASLResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNchar
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void pqTraceOutput_SASLResponse(FILE *f, const char *message, int
      *cursor,\n\t\t\t\t\t\t   int length, bool regress)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:408,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:409,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:410,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:413,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:415,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:419,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:422,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:425,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 402
    functionDepth: 2
    functionLinenumber: 402
    functionLinenumberEnd: 426
    functionName: pqTraceOutput_FunctionCall
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNchar
    - pqTraceOutputInt16
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_FunctionCall(FILE *f, const char *message, int *cursor,
      bool regress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:433,1
    - Dst: pqTraceOutputByte1
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:434,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:435,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 428
    functionDepth: 2
    functionLinenumber: 428
    functionLinenumberEnd: 439
    functionName: pqTraceOutput_CopyInResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt16
    - pqTraceOutputByte1
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_CopyInResponse(FILE *f, const char *message, int
      *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:446,1
    - Dst: pqTraceOutputByte1
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:447,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:448,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 441
    functionDepth: 2
    functionLinenumber: 441
    functionLinenumberEnd: 452
    functionName: pqTraceOutput_CopyOutResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt16
    - pqTraceOutputByte1
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_CopyOutResponse(FILE *f, const char *message, int
      *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:458,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:459,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - f
    - message
    - cursor
    - length
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 461
    functionName: pqTraceOutput_BackendKeyData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNchar
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void pqTraceOutput_BackendKeyData(FILE *f, const char *message, int
      *cursor, int length,\n\t\t\t\t\t\t\t bool regress)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:468,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:469,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:470,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:471,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 463
    functionDepth: 2
    functionLinenumber: 463
    functionLinenumberEnd: 475
    functionName: pqTraceOutput_Parse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt16
    - pqTraceOutputString
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_Parse(FILE *f, const char *message, int *cursor,
      bool regress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:480,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 482
    functionName: pqTraceOutput_Query
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_Query(FILE *f, const char *message, int *cursor)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:490,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:491,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:496,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:501,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:505,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:508,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:511,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:512,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:516,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:519,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:521,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:522,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:525,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:526,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:530,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:531,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:535,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 5
    argNames:
    - f
    - message
    - cursor
    - length
    - suppress
    argTypes:
    - FILE*
    - char*
    - int*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 537
    functionName: pqTraceOutput_Authentication
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pg_ntoh32
    - pqTraceOutputNchar
    - pqTraceOutputString
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void pqTraceOutput_Authentication(FILE *f, const char *message, int
      *cursor,\n\t\t\t\t\t\t\t int length, bool suppress)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:542,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:543,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 545
    functionName: pqTraceOutput_ParameterStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_ParameterStatus(FILE *f, const char *message, int
      *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:552,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:553,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 547
    functionDepth: 2
    functionLinenumber: 547
    functionLinenumberEnd: 557
    functionName: pqTraceOutput_ParameterDescription
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt16
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_ParameterDescription(FILE *f, const char *message,
      int *cursor, bool regress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:564,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:565,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:569,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:570,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:571,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:572,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:573,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:574,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 559
    functionDepth: 2
    functionLinenumber: 559
    functionLinenumberEnd: 577
    functionName: pqTraceOutput_RowDescription
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - pqTraceOutputInt16
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_RowDescription(FILE *f, const char *message, int
      *cursor, bool regress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:584,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:585,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:586,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 579
    functionDepth: 2
    functionLinenumber: 579
    functionLinenumberEnd: 591
    functionName: pqTraceOutput_NegotiateProtocolVersion
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_NegotiateProtocolVersion(FILE *f, const char *message,
      int *cursor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:598,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:599,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 602
    functionName: pqTraceOutput_FunctionCallResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputNchar
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_FunctionCallResponse(FILE *f, const char *message,
      int *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:607,1
    - Dst: pqTraceOutputByte1
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:608,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - length
    argTypes:
    - FILE*
    - char*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 604
    functionDepth: 2
    functionLinenumber: 604
    functionLinenumberEnd: 612
    functionName: pqTraceOutput_CopyBothResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt16
    - pqTraceOutputByte1
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_CopyBothResponse(FILE *f, const char *message, int
      *cursor, int length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:617,1
    - Dst: pqTraceOutputByte1
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 614
    functionDepth: 1
    functionLinenumber: 614
    functionLinenumberEnd: 619
    functionName: pqTraceOutput_ReadyForQuery
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputByte1
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_ReadyForQuery(FILE *f, const char *message, int
      *cursor)
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: pqTraceFormatTimestamp
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:637,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:638,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:644,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:645,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:655,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:657,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:662,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:666,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:670,1
    - Dst: pqTraceOutput_NotificationResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:674,1
    - Dst: pqTraceOutput_Bind
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:677,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:680,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:685,1
    - Dst: pqTraceOutput_Close
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:687,1
    - Dst: pqTraceOutput_CommandComplete
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:689,1
    - Dst: pqTraceOutput_CopyData
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:692,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:697,1
    - Dst: pqTraceOutput_Describe
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:699,1
    - Dst: pqTraceOutput_DataRow
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:701,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:705,1
    - Dst: pqTraceOutput_Execute
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:707,1
    - Dst: pqTraceOutput_ErrorResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:709,1
    - Dst: pqTraceOutput_CopyFail
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:712,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:715,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:716,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:717,1
    - Dst: pqTraceOutput_GSSResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:726,1
    - Dst: pqTraceOutput_PasswordMessage
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:730,1
    - Dst: pqTraceOutput_SASLInitialResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:734,1
    - Dst: pqTraceOutput_SASLResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:738,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:742,1
    - Dst: pqTraceOutput_FunctionCall
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:748,1
    - Dst: pqTraceOutput_CopyInResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:751,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:755,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:757,1
    - Dst: pqTraceOutput_CopyOutResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:759,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:762,1
    - Dst: pqTraceOutput_BackendKeyData
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:766,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:770,1
    - Dst: pqTraceOutput_NoticeResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:774,1
    - Dst: pqTraceOutput_Parse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:777,1
    - Dst: pqTraceOutput_Query
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:780,1
    - Dst: pqTraceOutput_Authentication
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:783,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:787,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:792,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:794,1
    - Dst: pqTraceOutput_ParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:796,1
    - Dst: pqTraceOutput_ParameterDescription
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:799,1
    - Dst: pqTraceOutput_RowDescription
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:802,1
    - Dst: pqTraceOutput_NegotiateProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:805,1
    - Dst: pqTraceOutput_FunctionCallResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:808,1
    - Dst: pqTraceOutput_CopyBothResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:811,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:814,1
    - Dst: pqTraceOutput_ReadyForQuery
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:818,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:821,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:825,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:833,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 149
    argCount: 3
    argNames:
    - conn
    - message
    - toServer
    argTypes:
    - PGconn*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 624
    functionDepth: 3
    functionLinenumber: 624
    functionLinenumberEnd: 836
    functionName: pqTraceOutputMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 5
    functionsReached:
    - pqTraceOutput_Authentication
    - pqTraceOutput_FunctionCallResponse
    - pqTraceOutput_NotificationResponse
    - fputc
    - pqTraceFormatTimestamp
    - pqTraceOutput_CopyBothResponse
    - pqTraceOutput_SASLResponse
    - pqTraceOutput_ParameterDescription
    - pqTraceOutput_NegotiateProtocolVersion
    - pqTraceOutput_CopyOutResponse
    - fprintf
    - pqTraceOutput_RowDescription
    - pg_ntoh32
    - memcpy
    - pqTraceOutput_CopyFail
    - Assert
    - pqTraceOutput_Bind
    - pqTraceOutput_ErrorResponse
    - pqTraceOutput_SASLInitialResponse
    - pqTraceOutput_FunctionCall
    - pqTraceOutput_Query
    - pqTraceOutput_GSSResponse
    - pqTraceOutput_BackendKeyData
    - pqTraceOutput_CopyData
    - pqTraceOutput_PasswordMessage
    - pqTraceOutput_DataRow
    - pqTraceOutput_Execute
    - pqTraceOutput_Describe
    - pqTraceOutput_CommandComplete
    - pqTraceOutput_ReadyForQuery
    - pqTraceOutput_Parse
    - pqTraceOutput_Close
    - pqTraceOutput_ParameterStatus
    - pqTraceOutput_CopyInResponse
    - pqTraceOutput_NoticeResponse
    linkageType: ''
    returnType: void
    signature: void pqTraceOutputMessage(PGconn *conn, const char *message, bool toServer)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqTraceFormatTimestamp
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:856,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:857,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:860,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:861,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:864,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:868,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:872,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:873,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:877,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:878,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:879,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:880,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:881,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:886,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:887,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:888,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:892,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:893,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:894,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:898,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:899,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:900,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:904,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:905,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:909,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 2
    argNames:
    - conn
    - message
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 842
    functionDepth: 3
    functionLinenumber: 842
    functionLinenumberEnd: 910
    functionName: pqTraceOutputNoTypeByteMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt16
    - pg_ntoh32
    - memcpy
    - pqTraceOutputNchar
    - fputc
    - pqTraceFormatTimestamp
    - pqTraceOutputInt32
    - pqTraceOutputString
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutputNoTypeByteMessage(PGconn *conn, const char *message)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqTraceFormatTimestamp
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:925,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:926,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:929,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - conn
    - responseType
    - response
    argTypes:
    - PGconn*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 917
    functionDepth: 3
    functionLinenumber: 917
    functionLinenumberEnd: 930
    functionName: pqTraceOutputCharResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceFormatTimestamp
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void pqTraceOutputCharResponse(PGconn *conn, const char *responseType,\n\t\t\t\t\t\t
      \ char response)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:69,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:70,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:70,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - password
    - sasl_mechanism
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 80
    functionName: oauth_init
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - calloc
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void *\noauth_init(PGconn *conn, const char *password,\n\t\t   const
      char *sasl_mechanism)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:96,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - opaq
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 99
    functionName: oauth_free
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - free
    linkageType: ''
    returnType: void
    signature: void oauth_free(void *opaq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:138,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:139,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:145,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:146,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:148,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:149,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:150,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - discover
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 156
    functionName: client_initial_response
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - initPQExpBuffer
    - strdup
    - termPQExpBuffer
    - PQExpBufferDataBroken
    - libpq_append_conn_error
    - appendPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      client_initial_response(PGconn *conn, bool discover)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 192
    functionName: oauth_json_has_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: oauth_json_has_error(ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ctx
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 198
    functionName: oauth_json_set_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: oauth_json_set_error(ctx, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ctx
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 205
    functionName: oauth_json_set_error_internal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: oauth_json_set_error_internal(ctx, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:213,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:215,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:222,1
    - Dst: oauth_json_has_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 225
    functionName: oauth_json_object_start
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - oauth_json_has_error
    - oauth_json_set_error
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_object_start(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 234
    functionName: oauth_json_object_end
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_object_end(void *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:244,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:249,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:254,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - state
    - name
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 262
    functionName: oauth_json_object_field_start
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_object_field_start(void *state, char
      *name, bool isnull)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:271,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:275,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:277,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:284,1
    - Dst: oauth_json_has_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 287
    functionName: oauth_json_array_start
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - oauth_json_has_error
    - oauth_json_set_error
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_array_start(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 296
    functionName: oauth_json_array_end
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_array_end(void *state)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:305,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:317,1
    - Dst: oauth_json_set_error_internal
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:318,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:330,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:339,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:345,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - state
    - token
    - type
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 358
    functionName: oauth_json_scalar
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - oauth_json_set_error_internal
    - oauth_json_set_error
    - strdup
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_scalar(void *state, char *token, JsonTokenType
      type)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:389,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:389,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:390,1
    - Dst: oauth_parse_debug_flags
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:393,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:394,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:394,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:397,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:402,1
    - Dst: strpbrk
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:417,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:419,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:431,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:434,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:444,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:446,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:446,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:447,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:448,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:448,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:449,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:460,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:480,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:481,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:485,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:493,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:496,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:507,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:509,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 2
    argNames:
    - conn
    - wkuri
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 512
    functionName: issuer_from_well_known_uri
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - strchr
    - Assert
    - oauth_parse_debug_flags
    - memmove
    - strstr
    - pg_strncasecmp
    - strlen
    - strncmp
    - strdup
    - libpq_append_conn_error
    - strpbrk
    linkageType: ''
    returnType: char
    signature: 'char *

      issuer_from_well_known_uri(PGconn *conn, const char *wkuri)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:529,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:532,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:534,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:543,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:545,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:550,1
    - Dst: setJsonLexContextOwnsTokens
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:551,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:553,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:563,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:567,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:568,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:577,1
    - Dst: oauth_json_has_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:577,1
    - Dst: json_errdetail
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:582,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:585,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:590,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:591,1
    - Dst: issuer_from_well_known_uri
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:610,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:614,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:616,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:621,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:625,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:635,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:637,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:658,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:663,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:669,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:678,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:679,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:680,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 85
    argCount: 3
    argNames:
    - conn
    - msg
    - msglen
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 683
    functionName: handle_oauth_sasl_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - freeJsonLexContext
    - oauth_json_has_error
    - json_errdetail
    - strcmp
    - Assert
    - libpq_gettext
    - pg_encoding_verifymbstr
    - pg_parse_json
    - strlen
    - setJsonLexContextOwnsTokens
    - initPQExpBuffer
    - free
    - termPQExpBuffer
    - PQExpBufferDataBroken
    - libpq_append_conn_error
    - makeJsonLexContextCstringLen
    - issuer_from_well_known_uri
    linkageType: ''
    returnType: bool
    signature: bool handle_oauth_sasl_error(PGconn *conn, const char *msg, int msglen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:708,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:712,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:716,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:717,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:720,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:721,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:725,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - conn
    - request
    argTypes:
    - PGconn*
    - PGoauthBearerRequestV2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 689
    functionDepth: 4
    functionLinenumber: 689
    functionLinenumberEnd: 726
    functionName: report_flow_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - libpq_gettext
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void report_flow_error(PGconn *conn, const PGoauthBearerRequestV2 *request)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:745,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:746,1
    - Dst: do_async
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:751,1
    - Dst: report_flow_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:755,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:767,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:768,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:773,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:776,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:786,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:787,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 736
    functionDepth: 5
    functionLinenumber: 736
    functionLinenumberEnd: 793
    functionName: run_oauth_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - do_async
    - strdup
    - libpq_append_conn_error
    - report_flow_error
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType run_oauth_flow(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:810,1
    - Dst: do_cleanup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:812,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 817
    functionName: cleanup_oauth_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - do_cleanup
    - free
    linkageType: ''
    returnType: void
    signature: void cleanup_oauth_flow(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - conn
    - state
    - request
    argTypes:
    - PGconn*
    - fe_oauth_state*
    - PGoauthBearerRequestV2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 846
    functionName: use_builtin_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int use_builtin_flow(PGconn *conn, fe_oauth_state *state, PGoauthBearerRequestV2
      *request)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dlopen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:894,1
    - Dst: oauth_parse_debug_flags
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:904,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:905,1
    - Dst: dlerror
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:905,1
    - Dst: dlsym
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:915,1
    - Dst: dlsym
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:919,1
    - Dst: oauth_parse_debug_flags
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:926,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:927,1
    - Dst: dlerror
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:927,1
    - Dst: dlclose
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:929,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:932,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:949,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:952,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:954,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:975,1
    - Dst: start_flow
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:978,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 3
    argNames:
    - conn
    - state
    - request
    argTypes:
    - PGconn*
    - fe_oauth_state*
    - PGoauthBearerRequestV2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 868
    functionDepth: 2
    functionLinenumber: 868
    functionLinenumberEnd: 979
    functionName: use_builtin_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - dlclose
    - Assert
    - oauth_parse_debug_flags
    - libpq_gettext
    - dlopen
    - pthread_mutex_lock
    - dlsym
    - pthread_mutex_unlock
    - start_flow
    - dlerror
    - appendPQExpBuffer
    - fprintf
    linkageType: ''
    returnType: int
    signature: int use_builtin_flow(PGconn *conn, fe_oauth_state *state, PGoauthBearerRequestV2
      *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_start_oauthbearer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - conn
    - state
    - request
    argTypes:
    - PGconn*
    - fe_oauth_state*
    - PGoauthBearerRequestV2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 990
    functionDepth: 1
    functionLinenumber: 990
    functionLinenumberEnd: 994
    functionName: use_builtin_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - pg_start_oauthbearer
    linkageType: ''
    returnType: int
    signature: int use_builtin_flow(PGconn *conn, fe_oauth_state *state, PGoauthBearerRequestV2
      *request)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1027,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1028,1
    - Dst: PQauthDataHook
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1035,1
    - Dst: poison_req_v2
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1038,1
    - Dst: PQauthDataHook
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1040,1
    - Dst: poison_req_v2
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1043,1
    - Dst: use_builtin_flow
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1048,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1062,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1065,1
    - Dst: do_cleanup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1070,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1074,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1077,1
    - Dst: report_flow_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1095,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1097,1
    - Dst: do_cleanup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1100,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 2
    argNames:
    - conn
    - state
    argTypes:
    - PGconn*
    - fe_oauth_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1015
    functionDepth: 5
    functionLinenumber: 1015
    functionLinenumberEnd: 1102
    functionName: setup_token_request
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - use_builtin_flow
    - do_cleanup
    - malloc
    - strdup
    - libpq_append_conn_error
    - poison_req_v2
    - report_flow_error
    - PQauthDataHook
    linkageType: ''
    returnType: bool
    signature: bool setup_token_request(PGconn *conn, fe_oauth_state *state)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1140,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1149,1
    - Dst: issuer_from_well_known_uri
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1155,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1160,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1163,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1173,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1176,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1109
    functionDepth: 3
    functionLinenumber: 1109
    functionLinenumberEnd: 1182
    functionName: setup_oauth_parameters
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - strdup
    - libpq_append_conn_error
    - strstr
    - issuer_from_well_known_uri
    linkageType: ''
    returnType: bool
    signature: bool setup_oauth_parameters(PGconn *conn)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1210,1
    - Dst: setup_oauth_parameters
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1212,1
    - Dst: setup_token_request
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1229,1
    - Dst: client_initial_response
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1271,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1275,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1300,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1309,1
    - Dst: unlikely
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1310,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1312,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1315,1
    - Dst: handle_oauth_sasl_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1318,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1340,1
    - Dst: setup_token_request
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1346,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1365,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1377,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1378,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1396,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1401,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1405,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1414,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 83
    argCount: 6
    argNames:
    - opaq
    - final
    - input
    - inputlen
    - output
    - outputlen
    argTypes:
    - void*
    - bool
    - char*
    - int
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1194
    functionDepth: 6
    functionLinenumber: 1194
    functionLinenumberEnd: 1417
    functionName: oauth_exchange
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - setup_oauth_parameters
    - Assert
    - setup_token_request
    - client_initial_response
    - unlikely
    - strlen
    - strdup
    - handle_oauth_sasl_error
    - libpq_append_conn_error
    linkageType: ''
    returnType: SASLStatus
    signature: "SASLStatus oauth_exchange(void *opaq, bool final,\n\t\t\t   char *input,
      int inputlen,\n\t\t\t   char **output, int *outputlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opaq
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1419
    functionDepth: 0
    functionLinenumber: 1419
    functionLinenumberEnd: 1424
    functionName: oauth_channel_bound
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool oauth_channel_bound(void *opaq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1436,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1436,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1430
    functionDepth: 1
    functionLinenumber: 1430
    functionLinenumberEnd: 1439
    functionName: pqClearOAuthToken
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - free
    - strlen
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void pqClearOAuthToken(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1456
    functionDepth: 0
    functionLinenumber: 1456
    functionLinenumberEnd: 1457
    functionName: POISON_MASK
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POISON_MASK(ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: POISON_MASK
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1477,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1483,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1485,1
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1496,1
    - Dst: POISON_MASK
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1499,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1506,1
    - Dst: abort
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1508,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - request
    - poison
    argTypes:
    - PGoauthBearerRequestV2*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1466
    functionDepth: 1
    functionLinenumber: 1466
    functionLinenumberEnd: 1511
    functionName: poison_req_v2
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 1
    functionsReached:
    - abort
    - POISON_MASK
    - Assert
    - VALGRIND_MAKE_MEM_NOACCESS
    - VALGRIND_MAKE_MEM_DEFINED
    - fprintf
    linkageType: ''
    returnType: void
    signature: void poison_req_v2(PGoauthBearerRequestV2 *request, bool poison)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1523,1
    - Dst: poison_req_v2
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1526,1
    - Dst: PGoauthBearerRequestV2*::v1::async
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1528,1
    - Dst: poison_req_v2
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - state
    - request
    argTypes:
    - fe_oauth_state*
    - PGoauthBearerRequestV2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1536
      start: 1517
    functionDepth: 2
    functionLinenumber: 1517
    functionLinenumberEnd: 1536
    functionName: do_async
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 1
    functionsReached:
    - Assert
    - poison_req_v2
    - PGoauthBearerRequestV2*::v1::async
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType do_async(fe_oauth_state *state, PGoauthBearerRequestV2
      *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: poison_req_v2
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1549,1
    - Dst: PGoauthBearerRequestV2*::v1::cleanup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1551,1
    - Dst: poison_req_v2
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1554,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - state
    - request
    argTypes:
    - fe_oauth_state*
    - PGoauthBearerRequestV2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1542
    functionDepth: 2
    functionLinenumber: 1542
    functionLinenumberEnd: 1555
    functionName: do_cleanup
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 2
    functionsReached:
    - PGoauthBearerRequestV2*::v1::cleanup
    - poison_req_v2
    linkageType: ''
    returnType: void
    signature: void do_cleanup(fe_oauth_state *state, PGoauthBearerRequestV2 *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: VALID_LONG_MESSAGE_TYPE
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALID_LONG_MESSAGE_TYPE(id)
  - BBCount: 69
    BranchProfiles: []
    Callsites:
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:87,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:89,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:99,1
    - Dst: VALID_LONG_MESSAGE_TYPE
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:102,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:104,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:123,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:132,1
    - Dst: getNotify
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:155,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:160,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:180,1
    - Dst: getParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:185,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:191,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:206,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:208,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:210,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:214,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:215,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:219,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:224,1
    - Dst: getReadyForQuery
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:229,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:233,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:237,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:238,1
    - Dst: pqCommandQueueAdvance
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:249,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:254,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:256,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:260,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:261,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:271,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:273,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:277,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:278,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:292,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:294,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:298,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:299,1
    - Dst: getParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:306,1
    - Dst: getBackendKeyData
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:316,1
    - Dst: getRowDescriptions
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:335,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:366,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:368,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:372,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:373,1
    - Dst: getParamDescriptions
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:380,1
    - Dst: getAnotherTuple
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:389,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:405,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:406,1
    - Dst: getCopyStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:412,1
    - Dst: getCopyStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:417,1
    - Dst: getCopyStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:423,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:447,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:449,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:461,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:471,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:473,1
    CyclomaticComplexity: 83
    EdgeCount: 83
    ICount: 210
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 479
    functionName: pqParseInput3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - handleFatalError
    - pqGets
    - pqCommandQueueAdvance
    - PQmakeEmptyPGresult
    - strlcpy
    - pqGetInt
    - getParameterStatus
    - pqInternalNotice
    - pqGetErrorNotice3
    - getNotify
    - getAnotherTuple
    - getBackendKeyData
    - getRowDescriptions
    - pqParseDone
    - libpq_append_conn_error
    - getCopyStart
    - pgHavePendingResult
    - VALID_LONG_MESSAGE_TYPE
    - getReadyForQuery
    - pqSaveErrorResult
    - getParamDescriptions
    - pqCheckInBufferSpace
    - pqGetc
    - handleSyncLoss
    linkageType: ''
    returnType: void
    signature: void pqParseInput3(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:491,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 487
    functionDepth: 4
    functionLinenumber: 487
    functionLinenumberEnd: 496
    functionName: handleFatalError
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqSaveErrorResult
    - pqDropConnection
    linkageType: ''
    returnType: void
    signature: void handleFatalError(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:506,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - conn
    - id
    - msgLength
    argTypes:
    - PGconn*
    - char
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 503
    functionDepth: 5
    functionLinenumber: 503
    functionLinenumberEnd: 509
    functionName: handleSyncLoss
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - handleFatalError
    - libpq_append_conn_error
    linkageType: ''
    returnType: void
    signature: void handleSyncLoss(PGconn *conn, char id, int msgLength)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:538,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:541,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:550,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:553,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:562,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:568,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:584,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:585,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:586,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:587,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:588,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:589,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:590,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:593,1
    - Dst: pqResultStrdup
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:605,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:649,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:655,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:664,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:666,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:667,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 69
    argCount: 2
    argNames:
    - conn
    - msgLength
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 518
    functionDepth: 4
    functionLinenumber: 518
    functionLinenumberEnd: 681
    functionName: getRowDescriptions
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqSaveErrorResult
    - pqGetInt
    - pqClearAsyncResult
    - PQclear
    - libpq_gettext
    - pqGets
    - PQmakeEmptyPGresult
    - MemSet
    - pqResultAlloc
    - pqResultStrdup
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int getRowDescriptions(PGconn *conn, int msgLength)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:697,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:703,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:711,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:714,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:722,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:733,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:738,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:744,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:753,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:754,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:755,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - conn
    - msgLength
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 689
    functionDepth: 4
    functionLinenumber: 689
    functionLinenumberEnd: 769
    functionName: getParamDescriptions
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqSaveErrorResult
    - pqGetInt
    - pqClearAsyncResult
    - PQclear
    - libpq_gettext
    - PQmakeEmptyPGresult
    - MemSet
    - pqResultAlloc
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int getParamDescriptions(PGconn *conn, int msgLength)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:789,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:792,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:798,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:806,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:821,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:824,1
    - Dst: pqSkipnchar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:839,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:842,1
    - Dst: pqRowProcessor
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:850,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:861,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:870,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:872,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:873,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 50
    argCount: 2
    argNames:
    - conn
    - msgLength
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 777
    functionDepth: 4
    functionLinenumber: 777
    functionLinenumberEnd: 887
    functionName: getAnotherTuple
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqRowProcessor
    - pqSaveErrorResult
    - pqGetInt
    - realloc
    - libpq_gettext
    - pqSkipnchar
    - pqClearAsyncResult
    - appendPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int getAnotherTuple(PGconn *conn, int msgLength)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:916,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:924,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:935,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:947,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:951,1
    - Dst: pqSaveMessageField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:953,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:955,1
    - Dst: pqResultStrdup
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:967,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:972,1
    - Dst: pqBuildErrorMessage3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:973,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:980,1
    - Dst: pqSetResultError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:983,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:992,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:993,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:995,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1007,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1008,1
    - Dst: PGresult*::noticeHooks::noticeRec
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1012,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1013,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1017,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1021,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1022,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 56
    argCount: 2
    argNames:
    - conn
    - isError
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 898
    functionDepth: 4
    functionLinenumber: 898
    functionLinenumberEnd: 1024
    functionName: pqGetErrorNotice3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - strlcpy
    - pqSaveMessageField
    - PQclear
    - pqGets
    - libpq_gettext
    - PGresult*::noticeHooks::noticeRec
    - PQmakeEmptyPGresult
    - appendPQExpBufferStr
    - pqBuildErrorMessage3
    - resetPQExpBuffer
    - pqGetc
    - initPQExpBuffer
    - pqClearAsyncResult
    - pqResultStrdup
    - PQExpBufferDataBroken
    - libpq_append_conn_error
    - pqSetResultError
    linkageType: ''
    returnType: int
    signature: int pqGetErrorNotice3(PGconn *conn, bool isError)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1041,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1041,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1052,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1054,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1054,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1059,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1061,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1071,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1074,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1082,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1084,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1086,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1088,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1089,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1096,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1102,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1102,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1108,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1111,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1115,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1121,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1121,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1126,1
    - Dst: reportErrorPosition
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1130,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1132,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1134,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1134,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1135,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1137,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1137,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1138,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1140,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1140,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1145,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1147,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1147,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1153,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1155,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1156,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1157,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1159,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1160,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1161,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1163,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1164,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1165,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1167,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1168,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1169,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1171,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1172,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1179,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1180,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1181,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1184,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1184,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1186,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1186,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1188,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1188,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1190,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 98
    argCount: 4
    argNames:
    - msg
    - res
    - verbosity
    - show_context
    argTypes:
    - PQExpBuffer
    - PGresult*
    - PGVerbosity
    - PGContextVisibility
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1030
    functionDepth: 4
    functionLinenumber: 1030
    functionLinenumberEnd: 1193
    functionName: pqBuildErrorMessage3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 2
    functionsReached:
    - libpq_gettext
    - PQresultErrorField
    - appendPQExpBufferStr
    - reportErrorPosition
    - atoi
    - appendPQExpBufferChar
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void pqBuildErrorMessage3(PQExpBuffer msg, const PGresult *res,\n\t\t\t\t\t
      PGVerbosity verbosity, PGContextVisibility show_context)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1228,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1249,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1252,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1256,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1259,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1262,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1265,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1266,1
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1271,1
    - Dst: pg_encoding_dsplen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1332,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1337,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1396,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1396,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1398,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1405,1
    - Dst: pg_encoding_dsplen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1407,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1415,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1417,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1418,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1423,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1424,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1425,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1429,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1430,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1431,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 103
    argCount: 4
    argNames:
    - msg
    - query
    - loc
    - encoding
    argTypes:
    - PQExpBuffer
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1201
    functionDepth: 4
    functionLinenumber: 1201
    functionLinenumberEnd: 1432
    functionName: reportErrorPosition
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - PQmblenBounded
    - pg_encoding_dsplen
    - libpq_gettext
    - appendPQExpBufferStr
    - free
    - malloc
    - strlen
    - strdup
    - appendPQExpBuffer
    - appendPQExpBufferChar
    - pg_encoding_max_length
    linkageType: ''
    returnType: void
    signature: void reportErrorPosition(PQExpBuffer msg, const char *query, int loc,
      int encoding)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1458,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1461,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1473,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1479,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1483,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1485,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1492,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1498,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1504,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1510,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1511,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1512,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1514,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1515,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1533,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1537,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1539,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1545,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1551,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1564,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1572,1
    - Dst: libpq_append_grease_info
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1575,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1577,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 80
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1443
    functionDepth: 4
    functionLinenumber: 1443
    functionLinenumberEnd: 1579
    functionName: pqGetNegotiateProtocolVersion3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 0
    functionsReached:
    - pqSaveErrorResult
    - pqGetInt
    - PG_PROTOCOL_MINOR
    - strcmp
    - libpq_append_grease_info
    - pqGets
    - PG_PROTOCOL
    - strncmp
    - libpq_append_conn_error
    - PG_PROTOCOL_MAJOR
    linkageType: ''
    returnType: int
    signature: int pqGetNegotiateProtocolVersion3(PGconn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1596,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1599,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1600,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1602,1
    - Dst: pqSaveParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1606,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1608,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1609,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1611,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1590
    functionDepth: 5
    functionLinenumber: 1590
    functionLinenumberEnd: 1613
    functionName: getParameterStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqSaveParameterStatus
    - handleFatalError
    - pqGets
    - initPQExpBuffer
    - termPQExpBuffer
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int getParameterStatus(PGconn *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1628,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1633,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1638,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1640,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1641,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1647,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1648,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1654,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1655,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1659,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1662,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1663,1
    - Dst: pqGetnchar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1666,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1668,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 2
    argNames:
    - conn
    - msgLength
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1674
      start: 1621
    functionDepth: 5
    functionLinenumber: 1621
    functionLinenumberEnd: 1674
    functionName: getBackendKeyData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetInt
    - handleFatalError
    - pqGetnchar
    - PG_PROTOCOL
    - free
    - malloc
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int getBackendKeyData(PGconn *conn, int msgLength)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1694,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1696,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1699,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1708,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1709,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1712,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1714,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1723,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1724,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1725,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1728,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1729,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1730,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1735,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1737,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1746,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1685
    functionDepth: 5
    functionLinenumber: 1685
    functionLinenumberEnd: 1748
    functionName: getNotify
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - handleFatalError
    - pqGetInt
    - pqGets
    - free
    - strdup
    - strlen
    - malloc
    - libpq_append_conn_error
    - strcpy
    linkageType: ''
    returnType: int
    signature: int getNotify(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1763,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1767,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1771,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1779,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1782,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1789,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1805,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - conn
    - copytype
    argTypes:
    - PGconn*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1807
      start: 1756
    functionDepth: 2
    functionLinenumber: 1756
    functionLinenumberEnd: 1807
    functionName: getCopyStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetInt
    - PQclear
    - PQmakeEmptyPGresult
    - MemSet
    - pqGetc
    - pqResultAlloc
    linkageType: ''
    returnType: int
    signature: int getCopyStart(PGconn *conn, ExecStatusType copytype)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1817,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1836
      start: 1812
    functionDepth: 1
    functionLinenumber: 1812
    functionLinenumberEnd: 1836
    functionName: getReadyForQuery
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetc
    linkageType: ''
    returnType: int
    signature: int getReadyForQuery(PGconn *conn)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1859,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1861,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1865,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1875,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1884,1
    - Dst: getNotify
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1899,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1903,1
    - Dst: getParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1907,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1935,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1844
    functionDepth: 6
    functionLinenumber: 1844
    functionLinenumberEnd: 1937
    functionName: getCopyDataMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 0
    functionsReached:
    - handleFatalError
    - pqGetInt
    - getParameterStatus
    - pqGetErrorNotice3
    - pqCheckInBufferSpace
    - getNotify
    - pqGetc
    - pqParseDone
    - handleSyncLoss
    linkageType: ''
    returnType: int
    signature: int getCopyDataMessage(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getCopyDataMessage
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1961,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1970,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1971,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1983,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1986,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1989,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1993,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1999,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - conn
    - buffer
    - async
    argTypes:
    - PGconn*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2001
      start: 1949
    functionDepth: 7
    functionLinenumber: 1949
    functionLinenumberEnd: 2001
    functionName: pqGetCopyData3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - memcpy
    - pqWait
    - getCopyDataMessage
    - malloc
    - pqParseDone
    - libpq_append_conn_error
    - pqReadData
    linkageType: ''
    returnType: int
    signature: int pqGetCopyData3(PGconn *conn, char **buffer, int async)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2018,1
    - Dst: PQgetlineAsync
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2023,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2026,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2027,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2037,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - conn
    - s
    - maxlen
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2008
    functionDepth: 2
    functionLinenumber: 2008
    functionLinenumberEnd: 2052
    functionName: pqGetline3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - PQgetlineAsync
    - pqWait
    - libpq_append_conn_error
    - strcpy
    - pqReadData
    linkageType: ''
    returnType: int
    signature: int pqGetline3(PGconn *conn, char *s, int maxlen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getCopyDataMessage
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2075,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2092,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2102,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - conn
    - buffer
    - bufsize
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2107
      start: 2059
    functionDepth: 7
    functionLinenumber: 2059
    functionLinenumberEnd: 2107
    functionName: pqGetlineAsync3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - getCopyDataMessage
    - memcpy
    linkageType: ''
    returnType: int
    signature: int pqGetlineAsync3(PGconn *conn, char *buffer, int bufsize)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2123,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2131,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2132,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2142,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2143,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2152,1
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2152,1
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2165,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2165,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2169,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2174,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2192,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2196,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 31
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2199
      start: 2114
    functionDepth: 6
    functionLinenumber: 2114
    functionLinenumberEnd: 2199
    functionName: pqEndcopy3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqPutMsgEnd
    - PQclear
    - pqFlush
    - pqInternalNotice
    - pqIsnonblocking
    - PQisBusy
    - pqPutMsgStart
    - PQgetResult
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int pqEndcopy3(PGconn *conn)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2221,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2225,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2226,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2227,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2228,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2229,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2237,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2244,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2249,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2254,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2257,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2258,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2266,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2267,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2277,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2279,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2289,1
    - Dst: VALID_LONG_MESSAGE_TYPE
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2292,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2294,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2309,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2318,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2332,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2338,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2349,1
    - Dst: handleFatalError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2350,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2351,1
    - Dst: pqGetnchar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2354,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2364,1
    - Dst: getNotify
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2370,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2375,1
    - Dst: getReadyForQuery
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2379,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2383,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2391,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2395,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2398,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2399,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2404,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2405,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2409,1
    - Dst: getParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2411,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2416,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2417,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2425,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2429,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2438,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2439,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 115
    argCount: 8
    argNames:
    - conn
    - fnid
    - result_buf
    - buf_size
    - actual_result_len
    - result_is_int
    - args
    - nargs
    argTypes:
    - PGconn*
    - Oid
    - int*
    - int
    - int*
    - int
    - PQArgBlock*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2440
      start: 2207
    functionDepth: 6
    functionLinenumber: 2207
    functionLinenumberEnd: 2440
    functionName: pqFunctionCall3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - handleFatalError
    - pqWait
    - pqFlush
    - PQmakeEmptyPGresult
    - pqGetnchar
    - pqPutMsgEnd
    - pqGetInt
    - Assert
    - getParameterStatus
    - pqGetErrorNotice3
    - getNotify
    - pqParseDone
    - pqPutMsgStart
    - libpq_append_conn_error
    - pqPrepareAsyncResult
    - pqPutInt
    - pgHavePendingResult
    - VALID_LONG_MESSAGE_TYPE
    - pqReadData
    - getReadyForQuery
    - pqSaveErrorResult
    - pqPutnchar
    - pqCheckInBufferSpace
    - pqGetc
    - handleSyncLoss
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\npqFunctionCall3(PGconn *conn, Oid fnid,\n\t\t\t\tint *result_buf,
      int buf_size, int *actual_result_len,\n\t\t\t\tint result_is_int,\n\t\t\t\tconst
      PQArgBlock *args, int nargs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: build_startup_packet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2455,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2460,1
    - Dst: build_startup_packet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2464,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2465,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - conn
    - packetlen
    - options
    argTypes:
    - PGconn*
    - int*
    - PQEnvironmentOption*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2448
    functionDepth: 1
    functionLinenumber: 2448
    functionLinenumberEnd: 2468
    functionName: pqBuildStartupPacket3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 0
    functionsReached:
    - Assert
    - malloc
    - build_startup_packet
    linkageType: ''
    returnType: char
    signature: "char *\npqBuildStartupPacket3(PGconn *conn, int *packetlen,\n\t\t\t\t\t
      \ const PQEnvironmentOption *options)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2490,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2492,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2511,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2513,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2515,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2517,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2523,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2527,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2535,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2540,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2542,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2543,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2550,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 33
    argCount: 3
    argNames:
    - conn
    - packet
    - options
    argTypes:
    - PGconn*
    - char*
    - PQEnvironmentOption*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2479
    functionDepth: 2
    functionLinenumber: 2479
    functionLinenumberEnd: 2554
    functionName: build_startup_packet
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pg_hton32
    - pg_strcasecmp
    - memcpy
    - pg_add_size_overflow
    - ADD_STARTUP_OPTION
    - getenv
    linkageType: ''
    returnType: size_t
    signature: "size_t build_startup_packet(const PGconn *conn, char *packet,\n\t\t\t\t\t
      const PQEnvironmentOption *options)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - optname
    - ','
    - optval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2509
      start: 2498
    functionDepth: 0
    functionLinenumber: 2498
    functionLinenumberEnd: 2509
    functionName: ADD_STARTUP_OPTION
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADD_STARTUP_OPTION(optname, optval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: libpq_gettext
    functionSourceFile: /src/postgres/src/interfaces/libpq/win32.c
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: libpq_gettext(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/win32.c:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - err
    - dest
    argTypes:
    - DWORD
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 231
    functionName: LookupWSErrorMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/win32.c
    functionUses: 0
    functionsReached:
    - strcpy
    linkageType: ''
    returnType: int
    signature: int LookupWSErrorMessage(DWORD err, char *dest)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LookupWSErrorMessage
      Src: /src/postgres/src/interfaces/libpq/win32.c:282,1
    - Dst: LoadLibraryEx
      Src: /src/postgres/src/interfaces/libpq/win32.c:290,1
    - Dst: FormatMessage
      Src: /src/postgres/src/interfaces/libpq/win32.c:302,1
    - Dst: MAKELANGID
      Src: /src/postgres/src/interfaces/libpq/win32.c:304,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/win32.c:310,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/win32.c:310,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/win32.c:314,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/win32.c:317,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - err
    - strerrbuf
    - buflen
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 320
    functionName: winsock_strerror
    functionSourceFile: /src/postgres/src/interfaces/libpq/win32.c
    functionUses: 0
    functionsReached:
    - LoadLibraryEx
    - FormatMessage
    - libpq_gettext
    - strlen
    - MAKELANGID
    - sprintf
    - LookupWSErrorMessage
    linkageType: ''
    returnType: char
    signature: 'char *

      winsock_strerror(int err, char *strerrbuf, size_t buflen)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:122,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:124,1
    - Dst: pqsecure_raw_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:154,1
    - Dst: gss_wrap
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:197,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:201,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:201,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:202,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:208,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:209,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:215,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:218,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:227,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:228,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:231,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:235,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:239,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:240,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:250,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 65
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 252
    functionName: pg_GSS_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c
    functionUses: 1
    functionsReached:
    - pg_hton32
    - gss_release_buffer
    - gss_wrap
    - memcpy
    - Assert
    - libpq_gettext
    - pg_GSS_error
    - libpq_append_conn_error
    - appendPQExpBufferStr
    - pqsecure_raw_write
    - SOCK_ERRNO_SET
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_GSS_write(PGconn *conn, const void *ptr, size_t len)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:290,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:296,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:321,1
    - Dst: pqsecure_raw_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:332,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:344,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:350,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:354,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:357,1
    - Dst: pqsecure_raw_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:365,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:376,1
    - Dst: gss_unwrap
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:390,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:393,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:393,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:396,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:402,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:404,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:408,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:415,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:423,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 63
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 425
    functionName: pg_GSS_read
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c
    functionUses: 1
    functionsReached:
    - pqsecure_raw_read
    - gss_unwrap
    - gss_release_buffer
    - memcpy
    - pg_ntoh32
    - Assert
    - libpq_gettext
    - pg_GSS_error
    - Min
    - libpq_append_conn_error
    - SOCK_ERRNO_SET
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_GSS_read(PGconn *conn, void *ptr, size_t len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pqsecure_raw_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:437,1
    - Dst: pqReadReady
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:450,1
    - Dst: pqsecure_raw_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:458,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 4
    argNames:
    - conn
    - recv_buffer
    - length
    - ret
    argTypes:
    - PGconn*
    - void*
    - size_t
    - ssize_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 434
    functionDepth: 2
    functionLinenumber: 434
    functionLinenumberEnd: 472
    functionName: gss_read
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c
    functionUses: 0
    functionsReached:
    - pqsecure_raw_read
    - pqReadReady
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType gss_read(PGconn *conn, void *recv_buffer,
      size_t length, ssize_t *ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 479
    functionName: pg_GSS_bytes_pending
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_GSS_bytes_pending(PGconn *conn)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:510,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:511,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:512,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:515,1
    - Dst: pqsecure_raw_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:529,1
    - Dst: gss_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:561,1
    - Dst: gss_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:587,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:593,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:595,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:606,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:609,1
    - Dst: gss_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:619,1
    - Dst: pg_GSS_load_servicename
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:637,1
    - Dst: pg_GSS_have_cred_cache
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:645,1
    - Dst: gss_init_sec_context
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:662,1
    - Dst: GSS_ERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:670,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:672,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:672,1
    - Dst: gss_release_cred
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:687,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:689,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:698,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:699,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:700,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:701,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:702,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:703,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:706,1
    - Dst: gss_wrap_size_limit
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:716,1
    - Dst: GSS_ERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:720,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:722,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:722,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:733,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:736,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:741,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:743,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:746,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:752,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 109
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 487
    functionDepth: 3
    functionLinenumber: 487
    functionLinenumberEnd: 756
    functionName: pqsecure_open_gss
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c
    functionUses: 0
    functionsReached:
    - gss_release_buffer
    - gss_wrap_size_limit
    - GSS_ERROR
    - pg_GSS_have_cred_cache
    - pg_hton32
    - pg_ntoh32
    - memcpy
    - Assert
    - gss_read
    - gss_release_cred
    - libpq_append_conn_error
    - pg_GSS_load_servicename
    - libpq_gettext
    - gss_init_sec_context
    - pg_GSS_error
    - malloc
    - free
    - appendPQExpBuffer
    - pqsecure_raw_write
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType pqsecure_open_gss(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 765
    functionDepth: 0
    functionLinenumber: 765
    functionLinenumberEnd: 772
    functionName: PQgetgssctx
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      PQgetgssctx(PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 777
    functionDepth: 0
    functionLinenumber: 777
    functionLinenumberEnd: 784
    functionName: PQgssEncInUse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQgssEncInUse(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:105,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:107,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:110,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:116,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:119,1
    - Dst: pg_saslprep
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:126,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:129,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:130,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:135,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:138,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:139,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 3
    argNames:
    - conn
    - password
    - sasl_mechanism
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 96
    functionDepth: 5
    functionLinenumber: 96
    functionLinenumberEnd: 147
    functionName: scram_init
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 0
    functionsReached:
    - Assert
    - malloc
    - strdup
    - free
    - memset
    - pg_saslprep
    linkageType: ''
    returnType: void
    signature: "void *\nscram_init(PGconn *conn,\n\t\t   const char *password,\n\t\t
      \  const char *sasl_mechanism)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - opaq
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 176
    functionName: scram_channel_bound
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool scram_channel_bound(void *opaq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:186,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:187,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:190,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:191,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:192,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:195,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:196,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:197,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:200,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - opaq
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 203
    functionName: scram_free
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void scram_free(void *opaq)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:228,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:231,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:233,1
    - Dst: build_client_first_message
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:242,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:246,1
    - Dst: read_server_first_message
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:252,1
    - Dst: build_client_final_message
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:255,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:259,1
    - Dst: read_server_final_message
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:268,1
    - Dst: verify_server_signature
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:275,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:277,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:283,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:292,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 6
    argNames:
    - opaq
    - final
    - input
    - inputlen
    - output
    - outputlen
    argTypes:
    - void*
    - bool
    - char*
    - int
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 297
    functionName: scram_exchange
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 0
    functionsReached:
    - read_server_final_message
    - build_client_first_message
    - verify_server_signature
    - strlen
    - read_server_first_message
    - build_client_final_message
    - libpq_append_conn_error
    linkageType: ''
    returnType: SASLStatus
    signature: "SASLStatus scram_exchange(void *opaq, bool final,\n\t\t\t   char *input,
      int inputlen,\n\t\t\t   char **output, int *outputlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:315,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:324,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - input
    - attr
    - errorMessage
    argTypes:
    - char**
    - char
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 344
    functionName: read_attr_value
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 0
    functionsReached:
    - libpq_append_error
    linkageType: ''
    returnType: char
    signature: 'char *

      read_attr_value(char **input, char attr, PQExpBuffer errorMessage)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_strong_random
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:363,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:365,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:369,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:371,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:374,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:377,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:381,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:393,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:398,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:400,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:401,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:410,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:418,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - fe_scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 349
    functionDepth: 4
    functionLinenumber: 349
    functionLinenumberEnd: 419
    functionName: build_client_first_message
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_b64_enc_len
    - strcmp
    - Assert
    - pg_b64_encode
    - malloc
    - pg_strong_random
    - initPQExpBuffer
    - appendPQExpBufferChar
    - libpq_append_conn_error
    - appendPQExpBufferStr
    linkageType: ''
    returnType: char
    signature: 'char *

      build_client_first_message(fe_scram_state *state)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:464,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:474,1
    - Dst: pgtls_get_peer_certificate_hash
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:486,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:491,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:495,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:498,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:500,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:503,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:506,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:507,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:509,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:510,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:512,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:513,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:516,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:521,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:522,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:523,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:524,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:531,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:532,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:538,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:539,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:547,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:552,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:555,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:556,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:559,1
    - Dst: calculate_client_proof
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:564,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:568,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:569,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:573,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:574,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:575,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:577,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:583,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:584,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:590,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:594,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:598,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:599,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 83
    argCount: 1
    argNames:
    - state
    argTypes:
    - fe_scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 454
    functionDepth: 3
    functionLinenumber: 454
    functionLinenumberEnd: 601
    functionName: build_client_final_message
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_b64_enc_len
    - memcpy
    - strcmp
    - pg_b64_encode
    - libpq_append_conn_error
    - enlargePQExpBuffer
    - pgtls_get_peer_certificate_hash
    - initPQExpBuffer
    - strlen
    - malloc
    - free
    - appendPQExpBuffer
    - termPQExpBuffer
    - PQExpBufferDataBroken
    - strdup
    - appendPQExpBufferStr
    - calculate_client_proof
    linkageType: ''
    returnType: char
    signature: 'char *

      build_client_final_message(fe_scram_state *state)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:616,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:619,1
    - Dst: read_attr_value
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:624,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:633,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:633,1
    - Dst: timingsafe_bcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:634,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:634,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:636,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:640,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:643,1
    - Dst: read_attr_value
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:647,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:653,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:653,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:654,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:657,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:660,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:661,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:666,1
    - Dst: read_attr_value
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:670,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:676,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:679,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:684,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 2
    argNames:
    - state
    - input
    argTypes:
    - fe_scram_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 606
    functionDepth: 2
    functionLinenumber: 606
    functionLinenumberEnd: 687
    functionName: read_server_first_message
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 1
    functionsReached:
    - timingsafe_bcmp
    - pg_b64_dec_len
    - strtol
    - strlen
    - strdup
    - malloc
    - pg_b64_decode
    - read_attr_value
    - libpq_append_conn_error
    linkageType: ''
    returnType: bool
    signature: bool read_server_first_message(fe_scram_state *state, char *input)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:700,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:703,1
    - Dst: read_attr_value
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:710,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:718,1
    - Dst: read_attr_value
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:724,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:733,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:735,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:735,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:736,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:739,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:743,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:744,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:749,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:750,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:753,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:755,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - state
    - input
    argTypes:
    - fe_scram_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 692
    functionDepth: 2
    functionLinenumber: 692
    functionLinenumberEnd: 758
    functionName: read_server_final_message
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 1
    functionsReached:
    - memcpy
    - pg_b64_dec_len
    - strlen
    - strdup
    - malloc
    - pg_b64_decode
    - free
    - read_attr_value
    - libpq_append_conn_error
    linkageType: ''
    returnType: bool
    signature: bool read_server_final_message(fe_scram_state *state, char *input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_hmac_create
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:776,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:779,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:785,1
    - Dst: scram_SaltedPassword
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:793,1
    - Dst: scram_ClientKey
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:797,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:801,1
    - Dst: scram_H
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:806,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:808,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:812,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:813,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:815,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:816,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:817,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:819,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:820,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:821,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:823,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:824,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:826,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:827,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:834,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 4
    argNames:
    - state
    - client_final_message_without_proof
    - result
    - errstr
    argTypes:
    - fe_scram_state*
    - char*
    - uint8*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 765
    functionDepth: 2
    functionLinenumber: 765
    functionLinenumberEnd: 836
    functionName: calculate_client_proof
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_hmac_init
    - scram_SaltedPassword
    - memcpy
    - pg_hmac_free
    - scram_H
    - pg_hmac_error
    - scram_ClientKey
    - pg_hmac_create
    - strlen
    - pg_hmac_update
    - pg_hmac_final
    linkageType: ''
    returnType: bool
    signature: "bool calculate_client_proof(fe_scram_state *state,\n\t\t\t\t\t   const
      char *client_final_message_without_proof,\n\t\t\t\t\t   uint8 *result, const
      char **errstr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_hmac_create
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:853,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:856,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:862,1
    - Dst: scram_ServerKey
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:866,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:870,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:876,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:877,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:879,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:880,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:881,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:883,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:884,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:885,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:887,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:888,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:891,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:892,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:896,1
    - Dst: timingsafe_bcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:899,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - state
    - match
    - errstr
    argTypes:
    - fe_scram_state*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 906
    functionName: verify_server_signature
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_hmac_init
    - memcpy
    - pg_hmac_free
    - timingsafe_bcmp
    - pg_hmac_error
    - scram_ServerKey
    - pg_hmac_create
    - strlen
    - pg_hmac_update
    - pg_hmac_final
    linkageType: ''
    returnType: bool
    signature: "bool verify_server_signature(fe_scram_state *state, bool *match,\n\t\t\t\t\t\tconst
      char **errstr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_saslprep
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:928,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:931,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:938,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:940,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:941,1
    - Dst: scram_build_secret
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:945,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-scram.c:950,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - password
    - iterations
    - errstr
    argTypes:
    - char*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 914
    functionDepth: 5
    functionLinenumber: 914
    functionLinenumberEnd: 953
    functionName: pg_fe_scram_build_secret
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-scram.c
    functionUses: 1
    functionsReached:
    - libpq_gettext
    - free
    - pg_strong_random
    - pg_saslprep
    - scram_build_secret
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_fe_scram_build_secret(const char *password, int iterations, const char **errstr)'
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:73,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:87,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:112,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:114,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:114,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:118,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:119,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:120,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:121,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:124,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:124,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:135,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:138,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:146,1
    - Dst: isatty
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:150,1
    - Dst: fileno
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:150,1
    - Dst: isatty
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:151,1
    - Dst: fileno
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:151,1
    - Dst: ioctl
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:158,1
    - Dst: fileno
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:158,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:176,1
    - Dst: strspn
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:179,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:179,1
    - Dst: fflush
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:191,1
    - Dst: popen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:192,1
    - Dst: pq_block_sigpipe
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:197,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:208,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:212,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:212,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:221,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:221,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:222,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:224,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:224,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:224,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:234,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:235,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:237,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:239,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:240,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:241,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:247,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:249,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:260,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:264,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:264,1
    - Dst: do_field
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:268,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:274,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:283,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:288,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:295,1
    - Dst: do_header
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:298,1
    - Dst: output_row
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:301,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:305,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:305,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:306,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:308,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:311,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:312,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:313,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:320,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:321,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:323,1
    - Dst: _pclose
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:327,1
    - Dst: pclose
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:329,1
    - Dst: pq_reset_sigpipe
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:333,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 131
    argCount: 3
    argNames:
    - fout
    - res
    - po
    argTypes:
    - FILE*
    - PGresult*
    - PQprintOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 68
    functionDepth: 5
    functionLinenumber: 68
    functionLinenumberEnd: 337
    functionName: PQprint
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 1
    functionsReached:
    - PQfname
    - _pclose
    - fputc
    - pclose
    - do_header
    - PQnfields
    - fileno
    - fprintf
    - fputs
    - pq_block_sigpipe
    - getenv
    - strspn
    - fflush
    - do_field
    - pq_reset_sigpipe
    - calloc
    - PQntuples
    - libpq_gettext
    - ioctl
    - isatty
    - strlen
    - popen
    - free
    - output_row
    linkageType: ''
    returnType: void
    signature: void PQprint(FILE *fout, const PGresult *res, const PQprintOpt *po)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:353,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:354,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:376,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:405,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:407,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:407,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:410,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:417,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:426,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:432,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:441,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:444,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:446,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 53
    argCount: 12
    argNames:
    - po
    - res
    - i
    - j
    - fs_len
    - fields
    - nFields
    - fieldNames
    - fieldNotNum
    - fieldMax
    - fieldMaxLen
    - fout
    argTypes:
    - PQprintOpt*
    - PGresult*
    - int
    - int
    - int
    - char**
    - int
    - char**
    - unsigned char*
    - int*
    - int
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 340
    functionDepth: 5
    functionLinenumber: 340
    functionLinenumberEnd: 452
    functionName: do_field
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 1
    functionsReached:
    - PQmblenBounded
    - PQgetlength
    - libpq_gettext
    - fputc
    - fputs
    - malloc
    - PQgetvalue
    - strcpy
    - fprintf
    linkageType: ''
    returnType: bool
    signature: "bool do_field(const PQprintOpt *po, const PGresult *res,\n\t\t const
      int i, const int j, const int fs_len,\n\t\t char **fields,\n\t\t const int nFields,
      char const **fieldNames,\n\t\t unsigned char *fieldNotNum, int *fieldMax,\n\t\t
      const int fieldMaxLen, FILE *fout)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:464,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:475,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:476,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:477,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:483,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:484,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:485,1
    - Dst: pg_add_size_overflow
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:488,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:491,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:494,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:494,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:520,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:523,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:526,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:530,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:535,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:540,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:544,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:546,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:550,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:552,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:556,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:556,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 61
    argCount: 8
    argNames:
    - fout
    - po
    - nFields
    - fieldMax
    - fieldNames
    - fieldNotNum
    - fs_len
    - res
    argTypes:
    - FILE*
    - PQprintOpt*
    - int
    - int*
    - char**
    - unsigned char*
    - int
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 455
    functionDepth: 5
    functionLinenumber: 455
    functionLinenumberEnd: 558
    functionName: do_header
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 1
    functionsReached:
    - PQfname
    - libpq_gettext
    - pg_add_size_overflow
    - fputs
    - malloc
    - strlen
    - fprintf
    linkageType: ''
    returnType: char
    signature: "char *\ndo_header(FILE *fout, const PQprintOpt *po, const int nFields,
      int *fieldMax,\n\t\t  const char **fieldNames, unsigned char *fieldNotNum,\n\t\t
      \ const int fs_len, const PGresult *res)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:569,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:571,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:577,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:581,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:588,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:592,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:594,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:595,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 8
    argNames:
    - fout
    - po
    - nFields
    - fields
    - fieldNotNum
    - fieldMax
    - border
    - row_index
    argTypes:
    - FILE*
    - PQprintOpt*
    - int
    - char**
    - unsigned char*
    - int*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 596
    functionName: output_row
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 1
    functionsReached:
    - fputc
    - fputs
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void output_row(FILE *fout, const PQprintOpt *po, const int nFields,
      char **fields,\n\t\t   unsigned char *fieldNotNum, int *fieldMax, char *border,\n\t\t
      \  const int row_index)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:625,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:626,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:635,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:638,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:638,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:644,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:644,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:647,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:660,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:660,1
    - Dst: fill
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:662,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:662,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:662,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:663,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:665,1
    - Dst: fill
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:671,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:672,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:674,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:682,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:682,1
    - Dst: fill
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:684,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:684,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:684,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:685,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:687,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:691,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:691,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:692,1
    - Dst: fflush
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:694,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:696,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 6
    argNames:
    - res
    - fp
    - fillAlign
    - fieldSep
    - printHeader
    - quiet
    argTypes:
    - PGresult*
    - FILE*
    - int
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 604
    functionDepth: 5
    functionLinenumber: 604
    functionLinenumberEnd: 697
    functionName: PQdisplayTuples
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 0
    functionsReached:
    - PQfname
    - PQnfields
    - fill
    - libpq_gettext
    - fputs
    - PQgetvalue
    - malloc
    - strlen
    - fflush
    - PQgetlength
    - free
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void PQdisplayTuples(const PGresult *res,\n\t\t\t\tFILE *fp,\t\t/*
      where to send the output */\n\t\t\t\tint fillAlign,\t/* pad the fields with
      spaces */\n\t\t\t\tconst char *fieldSep,\t/* field separator */\n\t\t\t\tint
      printHeader,\t/* display headers? */\n\t\t\t\tint quiet\n)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:716,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:717,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:720,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:722,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:732,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:735,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:735,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:741,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:748,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:750,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:757,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:759,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:766,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:768,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:773,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:775,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:779,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 5
    argNames:
    - res
    - fout
    - PrintAttNames
    - TerseOutput
    - colWidth
    argTypes:
    - PGresult*
    - FILE*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 701
    functionDepth: 5
    functionLinenumber: 701
    functionLinenumberEnd: 780
    functionName: PQprintTuples
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 0
    functionsReached:
    - PQfname
    - PQnfields
    - libpq_gettext
    - PQgetvalue
    - malloc
    - free
    - sprintf
    - PQntuples
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void PQprintTuples(const PGresult *res,\n\t\t\t  FILE *fout,\t\t/*
      output stream */\n\t\t\t  int PrintAttNames,\t/* print attribute names or not
      */\n\t\t\t  int TerseOutput,\t/* delimiter bars or not? */\n\t\t\t  int colWidth\t\t/*
      width of column, if 0, use variable width */\n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: putc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:792,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - length
    - max
    - filler
    - fp
    argTypes:
    - int
    - int
    - char
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 793
    functionName: fill
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 1
    functionsReached:
    - putc
    linkageType: ''
    returnType: void
    signature: void fill(int length, int max, char filler, FILE *fp)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pqsecure_close
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:540,1
    - Dst: closesocket
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:544,1
    - Dst: pqFreeCommandQueue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:555,1
    - Dst: pqFreeCommandQueue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:557,1
    - Dst: PGconn*::cleanup_async_auth
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:568,1
    - Dst: gss_release_cred
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:580,1
    - Dst: gss_delete_sec_context
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:584,1
    - Dst: gss_release_name
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:586,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:589,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:594,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:599,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:608,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:613,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:614,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:619,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:620,1
    - Dst: PGconn*::sasl::free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:627,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 59
    argCount: 2
    argNames:
    - conn
    - flushInput
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 536
    functionDepth: 2
    functionLinenumber: 536
    functionLinenumberEnd: 630
    functionName: pqDropConnection
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - PGconn*::sasl::free
    - gss_release_name
    - pqFreeCommandQueue
    - pqsecure_close
    - gss_delete_sec_context
    - FreeCredentialsHandle
    - DeleteSecurityContext
    - free
    - closesocket
    - PGconn*::cleanup_async_auth
    - gss_release_cred
    linkageType: ''
    returnType: void
    signature: void pqDropConnection(PGconn *conn, bool flushInput)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:644,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - queue
    argTypes:
    - PGcmdQueueEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 647
    functionName: pqFreeCommandQueue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void pqFreeCommandQueue(PGcmdQueueEntry *queue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:675,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:686,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:697,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:708,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:722,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 727
    functionName: pqDropServerData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void pqDropServerData(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectStartParams
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:779,1
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:782,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - keywords
    - values
    - expand_dbname
    argTypes:
    - char**
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 785
    functionName: PQconnectdbParams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 7
    functionsReached:
    - PQconnectStartParams
    - pqConnectDBComplete
    linkageType: ''
    returnType: PGconn
    signature: "PGconn *\nPQconnectdbParams(const char *const *keywords,\n\t\t\t\t
      \ const char *const *values,\n\t\t\t\t  int expand_dbname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectStartParams
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:797,1
    - Dst: internal_ping
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:800,1
    - Dst: PQfinish
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - keywords
    - values
    - expand_dbname
    argTypes:
    - char**
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 804
    functionName: PQpingParams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - internal_ping
    - PQconnectStartParams
    - PQfinish
    linkageType: ''
    returnType: PGPing
    signature: "PGPing PQpingParams(const char *const *keywords,\n\t\t\t const char
      *const *values,\n\t\t\t int expand_dbname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:832,1
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:835,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conninfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 838
    functionName: PQconnectdb
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 10
    functionsReached:
    - pqConnectDBComplete
    - PQconnectStart
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      PQconnectdb(const char *conninfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:848,1
    - Dst: internal_ping
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:851,1
    - Dst: PQfinish
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conninfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 855
    functionName: PQping
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - internal_ping
    - PQfinish
    - PQconnectStart
    linkageType: ''
    returnType: PGPing
    signature: PGPing PQping(const char *conninfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqMakeEmptyPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:889,1
    - Dst: conninfo_array_parse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:896,1
    - Dst: fillPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:909,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:911,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:918,1
    - Dst: pqConnectOptions2
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:923,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:929,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - keywords
    - values
    - expand_dbname
    argTypes:
    - char**
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 876
    functionDepth: 1
    functionLinenumber: 876
    functionLinenumberEnd: 936
    functionName: PQconnectStartParams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - PQconninfoFree
    - conninfo_array_parse
    - pqConnectOptions2
    - fillPGconn
    - pqMakeEmptyPGconn
    - pqConnectDBStart
    linkageType: ''
    returnType: PGconn
    signature: "PGconn *\nPQconnectStartParams(const char *const *keywords,\n\t\t\t\t\t
      const char *const *values,\n\t\t\t\t\t int expand_dbname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqMakeEmptyPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:967,1
    - Dst: connectOptions1
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:974,1
    - Dst: pqConnectOptions2
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:980,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:986,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conninfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 993
    functionName: PQconnectStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached:
    - pqConnectOptions2
    - pqMakeEmptyPGconn
    - pqConnectDBStart
    - connectOptions1
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      PQconnectStart(const char *conninfo)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: conninfo_getval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1012,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1018,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1019,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1022,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - connOptions
    argTypes:
    - PGconn*
    - PQconninfoOption*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1003
    functionDepth: 1
    functionLinenumber: 1003
    functionLinenumberEnd: 1030
    functionName: fillPGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - libpq_append_conn_error
    - free
    - strdup
    - conninfo_getval
    linkageType: ''
    returnType: bool
    signature: bool fillPGconn(PGconn *conn, PQconninfoOption *connOptions)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1058,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1059,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1062,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - srcConn
    - dstConn
    argTypes:
    - PGconn*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1041
    functionDepth: 1
    functionLinenumber: 1041
    functionLinenumberEnd: 1069
    functionName: pqCopyPGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - libpq_append_conn_error
    - free
    - strdup
    linkageType: ''
    returnType: bool
    signature: bool pqCopyPGconn(PGconn *srcConn, PGconn *dstConn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_connection_string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1090,1
    - Dst: fillPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1101,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1104,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - conn
    - conninfo
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1082
    functionDepth: 2
    functionLinenumber: 1082
    functionLinenumberEnd: 1114
    functionName: connectOptions1
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - parse_connection_string
    - PQconninfoFree
    - fillPGconn
    linkageType: ''
    returnType: bool
    signature: bool connectOptions1(PGconn *conn, const char *conninfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - input
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1119
    functionDepth: 0
    functionLinenumber: 1119
    functionLinenumberEnd: 1132
    functionName: count_comma_separated_elems
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int count_comma_separated_elems(const char *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1161,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - startptr
    - more
    argTypes:
    - char**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1143
    functionDepth: 1
    functionLinenumber: 1143
    functionLinenumberEnd: 1170
    functionName: parse_comma_separated_list
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - malloc
    - memcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      parse_comma_separated_list(char **startptr, bool *more)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_strong_seed
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1184,1
    - Dst: gettimeofday
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1187,1
    - Dst: getpid
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1190,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1178
    functionDepth: 3
    functionLinenumber: 1178
    functionLinenumberEnd: 1195
    functionName: libpq_prng_init
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - pg_prng_strong_seed
    - gettimeofday
    - pg_prng_seed
    - getpid
    linkageType: ''
    returnType: void
    signature: void libpq_prng_init(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1215,1
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1201
    functionDepth: 1
    functionLinenumber: 1201
    functionLinenumberEnd: 1220
    functionName: fill_allowed_sasl_mechs
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - StaticAssertDecl
    - lengthof
    linkageType: ''
    returnType: void
    signature: void fill_allowed_sasl_mechs(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1225
    functionDepth: 1
    functionLinenumber: 1225
    functionLinenumberEnd: 1230
    functionName: clear_allowed_sasl_mechs
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - lengthof
    linkageType: ''
    returnType: void
    signature: void clear_allowed_sasl_mechs(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - mech
    argTypes:
    - PGconn*
    - pg_fe_sasl_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1236
    functionDepth: 1
    functionLinenumber: 1236
    functionLinenumberEnd: 1246
    functionName: index_of_allowed_sasl_mech
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - lengthof
    linkageType: ''
    returnType: int
    signature: int index_of_allowed_sasl_mech(PGconn *conn, const pg_fe_sasl_mech
      *mech)
  - BBCount: 112
    BranchProfiles: []
    Callsites:
    - Dst: count_comma_separated_elems
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1268,1
    - Dst: count_comma_separated_elems
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1270,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1274,1
    - Dst: parse_comma_separated_list
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1289,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1299,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1300,1
    - Dst: parse_comma_separated_list
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1310,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1319,1
    - Dst: count_comma_separated_elems
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1320,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1338,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1343,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1351,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1356,1
    - Dst: parse_comma_separated_list
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1378,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1391,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1399,1
    - Dst: count_comma_separated_elems
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1400,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1412,1
    - Dst: pg_fe_getauthname
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1413,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1426,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1427,1
    - Dst: pqGetHomeDirectory
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1443,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1445,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1446,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1449,1
    - Dst: passwordFromFile
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1470,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1480,1
    - Dst: clear_allowed_sasl_mechs
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1503,1
    - Dst: parse_comma_separated_list
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1512,1
    - Dst: fill_allowed_sasl_mechs
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1531,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1536,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1539,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1549,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1552,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1560,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1564,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1568,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1573,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1585,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1589,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1597,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1619,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1625,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1628,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1638,1
    - Dst: index_of_allowed_sasl_mech
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1643,1
    - Dst: index_of_allowed_sasl_mech
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1655,1
    - Dst: index_of_allowed_sasl_mech
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1659,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1663,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1666,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1668,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1678,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1696,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1706,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1709,1
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1724,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1749,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1750,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1751,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1754,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1761,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1774,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1777,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1788,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1789,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1790,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1791,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1792,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1793,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1796,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1816,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1824,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1835,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1836,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1839,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1848,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1868,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1875,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1886,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1887,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1890,1
    - Dst: sslVerifyProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1900,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1903,1
    - Dst: sslVerifyProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1908,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1911,1
    - Dst: sslVerifyProtocolRange
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1924,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1928,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1937,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1938,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1939,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1942,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1947,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1950,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1962,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1965,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1973,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1983,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1984,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1985,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1988,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1992,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1995,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2003,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2013,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2015,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2017,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2019,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2021,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2023,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2028,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2041,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2041,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2042,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2045,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2045,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2049,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2054,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2064,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2064,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2065,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2068,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2068,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2072,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2077,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2088,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2090,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2095,1
    - Dst: libpq_prng_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2106,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2118,1
    - Dst: pqParseProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2128,1
    - Dst: pqParseProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2141,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2162,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2170,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2172,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2173,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2173,1
    - Dst: pg_get_encoding_from_locale
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2173,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2189,1
    CyclomaticComplexity: 184
    EdgeCount: 184
    ICount: 470
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2191
      start: 1256
    functionDepth: 4
    functionLinenumber: 1256
    functionLinenumberEnd: 2191
    functionName: pqConnectOptions2
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - clear_allowed_sasl_mechs
    - index_of_allowed_sasl_mech
    - libpq_prng_init
    - strcmp
    - pqParseProtocolVersion
    - pqGetHomeDirectory
    - is_unixsock_path
    - pg_prng_uint64_range
    - pg_fe_getauthname
    - pg_b64_decode
    - Assert
    - pg_b64_dec_len
    - pg_get_encoding_from_locale
    - pg_encoding_to_char
    - fill_allowed_sasl_mechs
    - strdup
    - calloc
    - libpq_append_conn_error
    - lengthof
    - sslVerifyProtocolRange
    - passwordFromFile
    - strlen
    - sslVerifyProtocolVersion
    - parse_comma_separated_list
    - count_comma_separated_elems
    - free
    - malloc
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool pqConnectOptions2(PGconn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2216,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2217,1
    - Dst: conninfo_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2220,1
    - Dst: conninfo_add_defaults
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2224,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2226,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2233
      start: 2209
    functionDepth: 2
    functionLinenumber: 2209
    functionLinenumberEnd: 2233
    functionName: PQconndefaults
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - PQconninfoFree
    - conninfo_init
    - initPQExpBuffer
    - termPQExpBuffer
    - PQExpBufferDataBroken
    - conninfo_add_defaults
    linkageType: ''
    returnType: PQconninfoOption
    signature: 'PQconninfoOption *

      PQconndefaults(void)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pqMakeEmptyPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2259,1
    - Dst: recognized_connection_string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2267,1
    - Dst: connectOptions1
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2269,1
    - Dst: connectOptions1
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2278,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2284,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2285,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2297,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2298,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2305,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2306,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2313,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2314,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2321,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2322,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2329,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2330,1
    - Dst: pqConnectOptions2
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2338,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2344,1
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2345,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2351,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 63
    argCount: 7
    argNames:
    - pghost
    - pgport
    - pgoptions
    - pgtty
    - dbName
    - login
    - pwd
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2353
      start: 2247
    functionDepth: 5
    functionLinenumber: 2247
    functionLinenumberEnd: 2353
    functionName: PQsetdbLogin
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - recognized_connection_string
    - pqConnectOptions2
    - pqMakeEmptyPGconn
    - free
    - strdup
    - connectOptions1
    - pqConnectDBStart
    - libpq_append_conn_error
    - pqConnectDBComplete
    linkageType: ''
    returnType: PGconn
    signature: "PGconn *\nPQsetdbLogin(const char *pghost, const char *pgport, const
      char *pgoptions,\n\t\t\t const char *pgtty, const char *dbName, const char *login,\n\t\t\t
      const char *pwd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2368,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2374,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2381
      start: 2362
    functionDepth: 1
    functionLinenumber: 2362
    functionLinenumberEnd: 2381
    functionName: connectNoDelay
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - libpq_append_conn_error
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int connectNoDelay(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_inet_net_ntop
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2395,1
    - Dst: pg_inet_net_ntop
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - host_addr
    - host_addr_len
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2411
      start: 2388
    functionDepth: 2
    functionLinenumber: 2388
    functionLinenumberEnd: 2411
    functionName: getHostaddr
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - pg_inet_net_ntop
    linkageType: ''
    returnType: void
    signature: void getHostaddr(PGconn *conn, char *host_addr, int host_addr_len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2428,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2432,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2433,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2457,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2458,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2459,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2463,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2464,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - conn
    - host_addr
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2421
    functionDepth: 2
    functionLinenumber: 2421
    functionLinenumberEnd: 2468
    functionName: emitHostIdentityInfo
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - pg_getnameinfo_all
    - appendPQExpBuffer
    - libpq_gettext
    - strcmp
    linkageType: ''
    returnType: void
    signature: void emitHostIdentityInfo(PGconn *conn, const char *host_addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2482,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2484,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2487,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - errorno
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2490
      start: 2477
    functionDepth: 2
    functionLinenumber: 2477
    functionLinenumberEnd: 2490
    functionName: connectFailureMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - libpq_append_conn_error
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void connectFailureMessage(PGconn *conn, int errorno)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2505,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2509
      start: 2497
    functionDepth: 1
    functionLinenumber: 2497
    functionLinenumberEnd: 2509
    functionName: useKeepalives
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - pqParseIntParam
    linkageType: ''
    returnType: int
    signature: int useKeepalives(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2523,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2530,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2535,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2544
      start: 2515
    functionDepth: 1
    functionLinenumber: 2515
    functionLinenumberEnd: 2544
    functionName: setKeepalivesIdle
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - libpq_append_conn_error
    - setsockopt
    - pqParseIntParam
    linkageType: ''
    returnType: int
    signature: int setKeepalivesIdle(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2557,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2564,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2569,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2572,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2578
      start: 2549
    functionDepth: 1
    functionLinenumber: 2549
    functionLinenumberEnd: 2578
    functionName: setKeepalivesInterval
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - libpq_append_conn_error
    - setsockopt
    - pqParseIntParam
    linkageType: ''
    returnType: int
    signature: int setKeepalivesInterval(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2592,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2599,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2604,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2607,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2584
    functionDepth: 1
    functionLinenumber: 2584
    functionLinenumberEnd: 2613
    functionName: setKeepalivesCount
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - libpq_append_conn_error
    - setsockopt
    - pqParseIntParam
    linkageType: ''
    returnType: int
    signature: int setKeepalivesCount(PGconn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: WSAIoctl
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2637,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - sock
    - idle
    - interval
    argTypes:
    - pgsocket
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2649
      start: 2622
    functionDepth: 0
    functionLinenumber: 2622
    functionLinenumberEnd: 2649
    functionName: pqSetKeepalivesWin32
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - WSAIoctl
    linkageType: ''
    returnType: int
    signature: int pqSetKeepalivesWin32(pgsocket sock, int idle, int interval)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2658,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2662,1
    - Dst: pqSetKeepalivesWin32
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2666,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2668,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2670,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2674
      start: 2651
    functionDepth: 1
    functionLinenumber: 2651
    functionLinenumberEnd: 2674
    functionName: prepKeepalivesWin32
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - libpq_append_conn_error
    - WSAGetLastError
    - pqSetKeepalivesWin32
    - pqParseIntParam
    linkageType: ''
    returnType: int
    signature: int prepKeepalivesWin32(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2689,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2697,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2702,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2705,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2681
    functionDepth: 1
    functionLinenumber: 2681
    functionLinenumberEnd: 2711
    functionName: setTCPUserTimeout
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - libpq_append_conn_error
    - setsockopt
    - pqParseIntParam
    linkageType: ''
    returnType: int
    signature: int setTCPUserTimeout(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_link_canary_is_frontend
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2735,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2737,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2775,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2785,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2720
    functionDepth: 3
    functionLinenumber: 2720
    functionLinenumberEnd: 2788
    functionName: pqConnectDBStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - PQconnectPoll
    - pqDropConnection
    - pg_link_canary_is_frontend
    - appendPQExpBufferStr
    linkageType: ''
    returnType: int
    signature: int pqConnectDBStart(PGconn *conn)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2815,1
    - Dst: PQgetCurrentTimeUSec
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2838,1
    - Dst: pqWaitTimed
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2853,1
    - Dst: pqWaitTimed
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2863,1
    - Dst: PQcancelPoll
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2891,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2893,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2895
      start: 2798
    functionDepth: 4
    functionLinenumber: 2798
    functionLinenumberEnd: 2895
    functionName: pqConnectDBComplete
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - PQcancelPoll
    - PQconnectPoll
    - PQgetCurrentTimeUSec
    - pqParseIntParam
    - pqWaitTimed
    linkageType: ''
    returnType: int
    signature: int pqConnectDBComplete(PGconn *conn)
  - BBCount: 172
    BranchProfiles: []
    Callsites:
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2956,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2980,1
    - Dst: release_conn_addrinfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3039,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3049,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3058,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3063,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3067,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3073,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3077,1
    - Dst: gai_strerror
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3078,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3085,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3089,1
    - Dst: gai_strerror
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3090,1
    - Dst: UNIXSOCK_PATH
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3097,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3098,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3100,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3110,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3114,1
    - Dst: gai_strerror
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3115,1
    - Dst: store_conn_addrinfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3125,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3126,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3148,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3182,1
    - Dst: pqDropServerData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3185,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3191,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3266,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3279,1
    - Dst: pg_GSS_have_cred_cache
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3285,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3287,1
    - Dst: init_allowed_encryption_methods
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3302,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3311,1
    - Dst: getHostaddr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3314,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3316,1
    - Dst: socket
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3338,1
    - Dst: emitHostIdentityInfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3355,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3356,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3357,1
    - Dst: emitHostIdentityInfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3368,1
    - Dst: connectNoDelay
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3377,1
    - Dst: pg_set_noblock
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3385,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3387,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3388,1
    - Dst: fcntl
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3396,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3398,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3399,1
    - Dst: useKeepalives
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3411,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3424,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3428,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3431,1
    - Dst: setKeepalivesIdle
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3434,1
    - Dst: setKeepalivesInterval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3435,1
    - Dst: setKeepalivesCount
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3436,1
    - Dst: prepKeepalivesWin32
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3440,1
    - Dst: setTCPUserTimeout
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3444,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3486,1
    - Dst: connect
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3498,1
    - Dst: connectFailureMessage
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3532,1
    - Dst: getsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3552,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3555,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3556,1
    - Dst: connectFailureMessage
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3566,1
    - Dst: getsockname
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3578,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3582,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3583,1
    - Dst: getpeereid
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3601,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3608,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3610,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3611,1
    - Dst: pg_fe_getusername
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3616,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3621,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3623,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3625,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3628,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3631,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3657,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3659,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3661,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3662,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3697,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3698,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3700,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3701,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3710,1
    - Dst: PQsendCancelRequest
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3724,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3726,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3727,1
    - Dst: pqBuildStartupPacket3
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3740,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3744,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3754,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3756,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3757,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3758,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3762,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3792,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3803,1
    - Dst: pqTraceOutputCharResponse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3811,1
    - Dst: pqTraceOutputCharResponse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3819,1
    - Dst: ENCRYPTION_NEGOTIATION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3829,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3829,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3839,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3844,1
    - Dst: pqsecure_open_client
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3853,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3864,1
    - Dst: CONNECTION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3878,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3900,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3908,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3927,1
    - Dst: CONNECTION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3928,1
    - Dst: pqTraceOutputCharResponse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3937,1
    - Dst: ENCRYPTION_NEGOTIATION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3945,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3945,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3949,1
    - Dst: pqTraceOutputCharResponse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3955,1
    - Dst: pqsecure_open_gss
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3960,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3971,1
    - Dst: CONNECTION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3985,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4016,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4032,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4038,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4060,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4066,1
    - Dst: pqGets_append
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4076,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4085,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4093,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4103,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4127,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4137,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4139,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4143,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4152,1
    - Dst: pgpassfileWarning
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4160,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4173,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4177,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4179,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4180,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4181,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4182,1
    - Dst: libpq_append_grease_info
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4184,1
    - Dst: CONNECTION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4188,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4195,1
    - Dst: pqGetNegotiateProtocolVersion3
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4198,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4206,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4215,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4218,1
    - Dst: pg_fe_sendauth
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4230,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4269,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4296,1
    - Dst: PGconn*::async_auth
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4302,1
    - Dst: PGconn*::cleanup_async_auth
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4310,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4320,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4321,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4343,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4344,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4366,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4369,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4378,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4394,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4396,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4398,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4413,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4414,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4421,1
    - Dst: libpq_append_grease_info
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4422,1
    - Dst: PQsendQueryContinue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4459,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4477,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4479,1
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4483,1
    - Dst: PQsendQueryContinue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4517,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4532,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4534,1
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4538,1
    - Dst: pqClearOAuthToken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4550,1
    - Dst: release_conn_addrinfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4559,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4566,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4584,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4587,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4594,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4597,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4614,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4617,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4623,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4624,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4625,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4627,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4638,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4648,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4656,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4659,1
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4664,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4679,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4682,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4688,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4689,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4690,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4692,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4694,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4698,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4706,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4709,1
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4714,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4722,1
    CyclomaticComplexity: 281
    EdgeCount: 281
    ICount: 754
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4741
      start: 2924
    functionDepth: 6
    functionLinenumber: 2924
    functionLinenumberEnd: 4741
    functionName: PQconnectPoll
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 7
    functionsReached:
    - getsockname
    - pg_prng_uint64_range
    - emitHostIdentityInfo
    - sendTerminateConn
    - PQisBusy
    - pqsecure_open_client
    - pg_hton32
    - pg_set_noblock
    - connectNoDelay
    - init_allowed_encryption_methods
    - strdup
    - socket
    - getpeereid
    - PQresultStatus
    - PQntuples
    - libpq_append_conn_error
    - fcntl
    - pqTraceOutputCharResponse
    - libpq_gettext
    - PQresultErrorField
    - CONNECTION_FAILED
    - appendPQExpBufferChar
    - pqDropConnection
    - pqReadData
    - prepKeepalivesWin32
    - connectFailureMessage
    - pqClearConnErrorState
    - free
    - setsockopt
    - pg_getaddrinfo_all
    - pg_fe_sendauth
    - pqDropServerData
    - libpq_append_grease_info
    - setKeepalivesCount
    - pgpassfileWarning
    - UNIXSOCK_PATH
    - Assert
    - pqParseDone
    - connect
    - MemSet
    - setKeepalivesIdle
    - pqClearOAuthToken
    - getHostaddr
    - setKeepalivesInterval
    - store_conn_addrinfo
    - PGconn*::async_auth
    - snprintf
    - strerror_r
    - setTCPUserTimeout
    - pqsecure_open_gss
    - strcmp
    - strstr
    - useKeepalives
    - pqPacketSend
    - pg_GSS_have_cred_cache
    - PQsendQueryContinue
    - SOCK_STRERROR
    - PQsendCancelRequest
    - pqBuildStartupPacket3
    - pqClearAsyncResult
    - pqGetNegotiateProtocolVersion3
    - pqCheckInBufferSpace
    - release_conn_addrinfo
    - strncmp
    - PQclear
    - PQconsumeInput
    - pqFlush
    - pqGets_append
    - pg_freeaddrinfo_all
    - PQgetvalue
    - PQgetResult
    - pqGetInt
    - memcpy
    - pqGetErrorNotice3
    - pg_fe_getusername
    - pqParseIntParam
    - ENCRYPTION_NEGOTIATION_FAILED
    - strlen
    - gai_strerror
    - pqGetc
    - getsockopt
    - PGconn*::cleanup_async_auth
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType PQconnectPoll(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3219
      start: 3204
    functionDepth: 0
    functionLinenumber: 3204
    functionLinenumberEnd: 3219
    functionName: ENCRYPTION_NEGOTIATION_FAILED
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENCRYPTION_NEGOTIATION_FAILED(msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3235
      start: 3225
    functionDepth: 0
    functionLinenumber: 3225
    functionLinenumberEnd: 3235
    functionName: CONNECTION_FAILED
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONNECTION_FAILED()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4760,1
    - Dst: select_next_encryption_method
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4794,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4795
      start: 4746
    functionDepth: 1
    functionLinenumber: 4746
    functionLinenumberEnd: 4795
    functionName: init_allowed_encryption_methods
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - select_next_encryption_method
    - libpq_append_conn_error
    linkageType: ''
    returnType: bool
    signature: bool init_allowed_encryption_methods(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4814,1
    - Dst: select_next_encryption_method
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4817,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4827
      start: 4811
    functionDepth: 1
    functionLinenumber: 4811
    functionLinenumberEnd: 4827
    functionName: encryption_negotiation_failed
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - Assert
    - select_next_encryption_method
    linkageType: ''
    returnType: int
    signature: int encryption_negotiation_failed(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4839,1
    - Dst: select_next_encryption_method
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4843
      start: 4836
    functionDepth: 1
    functionLinenumber: 4836
    functionLinenumberEnd: 4843
    functionName: connection_failed
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - Assert
    - select_next_encryption_method
    linkageType: ''
    returnType: bool
    signature: bool connection_failed(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_GSS_have_cred_cache
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4882,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4889,1
    - Dst: SELECT_NEXT_METHOD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4896,1
    - Dst: SELECT_NEXT_METHOD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4907,1
    - Dst: SELECT_NEXT_METHOD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4909,1
    - Dst: SELECT_NEXT_METHOD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4912,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - conn
    - have_valid_connection
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4918
      start: 4851
    functionDepth: 1
    functionLinenumber: 4851
    functionLinenumberEnd: 4918
    functionName: select_next_encryption_method
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - pg_GSS_have_cred_cache
    - SELECT_NEXT_METHOD
    - libpq_append_conn_error
    linkageType: ''
    returnType: bool
    signature: bool select_next_encryption_method(PGconn *conn, bool have_valid_connection)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - method
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4864
      start: 4856
    functionDepth: 0
    functionLinenumber: 4856
    functionLinenumberEnd: 4864
    functionName: SELECT_NEXT_METHOD
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SELECT_NEXT_METHOD(method)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4935,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4967,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4973,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4983
      start: 4926
    functionDepth: 5
    functionLinenumber: 4926
    functionLinenumberEnd: 4983
    functionName: internal_ping
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - strlen
    - pqConnectDBComplete
    - strcmp
    linkageType: ''
    returnType: PGPing
    signature: PGPing internal_ping(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5010,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5010,1
    - Dst: WSASetLastError
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5016,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5019,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5024,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5059,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5061,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5063,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5064,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5065,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5070,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5071,1
    - Dst: freePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5074,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5079
      start: 4990
    functionDepth: 2
    functionLinenumber: 4990
    functionLinenumberEnd: 5079
    functionName: pqMakeEmptyPGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - WSASetLastError
    - WSAStartup
    - MemSet
    - malloc
    - initPQExpBuffer
    - PQExpBufferBroken
    - MAKEWORD
    - freePGconn
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      pqMakeEmptyPGconn(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5099,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5101,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5105,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5106,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5107,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5108,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5109,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5110,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5111,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5112,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5113,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5114,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5115,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5116,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5117,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5118,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5121,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5121,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5122,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5124,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5125,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5126,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5127,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5128,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5129,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5130,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5131,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5132,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5133,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5134,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5137,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5137,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5138,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5140,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5141,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5142,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5143,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5144,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5145,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5146,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5147,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5148,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5149,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5150,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5151,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5152,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5153,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5154,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5155,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5156,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5157,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5158,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5159,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5160,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5161,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5162,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5163,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5164,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5165,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5166,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5168,1
    - Dst: pqReleaseConnHosts
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5169,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5170,1
    - Dst: release_conn_addrinfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5171,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5172,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5173,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5175,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5176,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5177,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5178,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5179,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5180,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 79
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5183
      start: 5090
    functionDepth: 2
    functionLinenumber: 5090
    functionLinenumberEnd: 5183
    functionName: freePGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - explicit_bzero
    - pqReleaseConnHosts
    - release_conn_addrinfo
    - free
    - strlen
    - termPQExpBuffer
    - proc
    linkageType: ''
    returnType: void
    signature: void freePGconn(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5196,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5197,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5198,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5201,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5202,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5203,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5209
      start: 5189
    functionDepth: 1
    functionLinenumber: 5189
    functionLinenumberEnd: 5209
    functionName: pqReleaseConnHosts
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - strlen
    - free
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void pqReleaseConnHosts(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5233,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5236,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - conn
    - addrlist
    argTypes:
    - PGconn*
    - struct addrinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5252
      start: 5219
    functionDepth: 1
    functionLinenumber: 5219
    functionLinenumberEnd: 5252
    functionName: store_conn_addrinfo
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - calloc
    - libpq_append_conn_error
    - memcpy
    linkageType: ''
    returnType: int
    signature: int store_conn_addrinfo(PGconn *conn, struct addrinfo *addrlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5266
      start: 5258
    functionDepth: 1
    functionLinenumber: 5258
    functionLinenumberEnd: 5266
    functionName: release_conn_addrinfo
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void release_conn_addrinfo(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5292,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5293,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5294,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5296
      start: 5272
    functionDepth: 1
    functionLinenumber: 5272
    functionLinenumberEnd: 5296
    functionName: sendTerminateConn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - pqPutMsgStart
    - pqFlush
    - pqPutMsgEnd
    linkageType: ''
    returnType: void
    signature: void sendTerminateConn(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5312,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5328,1
    - Dst: pqClearOAuthToken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5333,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5334,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5335,1
    - Dst: release_conn_addrinfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5343,1
    - Dst: pqDropServerData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5347
      start: 5306
    functionDepth: 3
    functionLinenumber: 5306
    functionLinenumberEnd: 5347
    functionName: pqClosePGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - pqDropServerData
    - pqClearConnErrorState
    - pqClearOAuthToken
    - sendTerminateConn
    - release_conn_addrinfo
    - pqClearAsyncResult
    - pqDropConnection
    linkageType: ''
    returnType: void
    signature: void pqClosePGconn(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqClosePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5358,1
    - Dst: freePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5361
      start: 5353
    functionDepth: 4
    functionLinenumber: 5353
    functionLinenumberEnd: 5361
    functionName: PQfinish
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 90
    functionsReached:
    - freePGconn
    - pqClosePGconn
    linkageType: ''
    returnType: void
    signature: void PQfinish(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqClosePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5372,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5374,1
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5374,1
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5386,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5391
      start: 5367
    functionDepth: 5
    functionLinenumber: 5367
    functionLinenumberEnd: 5391
    functionName: PQreset
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - pqConnectDBComplete
    - proc
    - pqConnectDBStart
    - pqClosePGconn
    linkageType: ''
    returnType: void
    signature: void PQreset(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqClosePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5405,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5411
      start: 5400
    functionDepth: 4
    functionLinenumber: 5400
    functionLinenumberEnd: 5411
    functionName: PQresetStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - pqConnectDBStart
    - pqClosePGconn
    linkageType: ''
    returnType: int
    signature: int PQresetStart(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectPoll
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5424,1
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5447
      start: 5419
    functionDepth: 7
    functionLinenumber: 5419
    functionLinenumberEnd: 5447
    functionName: PQresetPoll
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - PQconnectPoll
    - proc
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType PQresetPoll(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5466,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5470,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5474,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5478,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - conn
    - pack_type
    - buf
    - buf_len
    argTypes:
    - PGconn*
    - char
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5482
      start: 5461
    functionDepth: 1
    functionLinenumber: 5461
    functionLinenumberEnd: 5482
    functionName: pqPacketSend
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached:
    - pqPutMsgStart
    - pqFlush
    - pqPutMsgEnd
    - pqPutnchar
    linkageType: ''
    returnType: int
    signature: "int pqPacketSend(PGconn *conn, char pack_type,\n\t\t\t const void
      *buf, size_t buf_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5491
      start: 5490
    functionDepth: 0
    functionLinenumber: 5490
    functionLinenumberEnd: 5491
    functionName: ld_is_sp_tab
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ld_is_sp_tab(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5492
      start: 5491
    functionDepth: 0
    functionLinenumber: 5491
    functionLinenumberEnd: 5492
    functionName: ld_is_nl_cr
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ld_is_nl_cr(x)
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5548,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5550,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5560,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5560,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5562,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5564,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5569,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5574,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5574,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5577,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5580,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5587,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5589,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5592,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5599,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5601,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5604,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5611,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5613,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5616,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5621,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5625,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5632,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5635,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5638,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5645,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5647,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5650,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5655,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5657,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5659,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5663,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5666,1
    - Dst: ldap_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5671,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5673,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5674,1
    - Dst: ldap_set_option
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5678,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5680,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5681,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5682,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5683,1
    - Dst: ldap_connect
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5701,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5704,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5705,1
    - Dst: ldap_set_option
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5710,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5712,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5713,1
    - Dst: ldap_simple_bind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5718,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5721,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5722,1
    - Dst: ldap_result
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5728,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5733,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5734,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5735,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5738,1
    - Dst: ldap_set_option
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5742,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5744,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5745,1
    - Dst: ldap_search_st
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5752,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5756,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5757,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5757,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5758,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5759,1
    - Dst: ldap_count_entries
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5764,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5767,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5769,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5770,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5771,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5772,1
    - Dst: ldap_first_entry
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5777,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5780,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5781,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5782,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5783,1
    - Dst: ldap_get_values_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5788,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5790,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5791,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5792,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5793,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5797,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5798,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5802,1
    - Dst: ldap_value_free_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5803,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5804,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5815,1
    - Dst: ldap_value_free_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5818,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5819,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5826,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5828,1
    - Dst: ldap_value_free_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5829,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5830,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5836,1
    - Dst: ldap_value_free_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5842,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5843,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5852,1
    - Dst: ld_is_nl_cr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5852,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5859,1
    - Dst: ld_is_nl_cr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5864,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5866,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5869,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5883,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5885,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5888,1
    - Dst: ld_is_nl_cr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5899,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5901,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5904,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5911,1
    - Dst: ld_is_nl_cr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5911,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5939,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5943,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5946,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5947,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5957,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5958,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5967,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5971,1
    CyclomaticComplexity: 80
    EdgeCount: 80
    ICount: 278
    argCount: 3
    argNames:
    - purl
    - options
    - errorMessage
    argTypes:
    - char*
    - PQconninfoOption*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5977
      start: 5513
    functionDepth: 2
    functionLinenumber: 5513
    functionLinenumberEnd: 5977
    functionName: ldapServiceLookup
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - ldap_simple_bind
    - ldap_connect
    - ld_is_nl_cr
    - strchr
    - strcmp
    - libpq_append_error
    - ldap_msgfree
    - ldap_err2string
    - memcpy
    - ldap_set_option
    - ldap_count_entries
    - ldap_unbind
    - ldap_result
    - strdup
    - ldap_init
    - strtol
    - ldap_get_values_len
    - ldap_value_free_len
    - strlen
    - ld_is_sp_tab
    - ldap_search_st
    - pg_strcasecmp
    - pg_strncasecmp
    - ldap_first_entry
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: "int ldapServiceLookup(const char *purl, PQconninfoOption *options,\n\t\t\t\t
      \ PQExpBuffer errorMessage)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: conninfo_getval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5994,1
    - Dst: conninfo_getval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5995,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6008,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6020,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6021,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6022,1
    - Dst: pqGetHomeDirectory
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6027,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6029,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6030,1
    - Dst: parseServiceFile
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6034,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6044,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6045,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6045,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6046,1
    - Dst: parseServiceFile
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6049,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6055,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6068,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 2
    argNames:
    - options
    - errorMessage
    argTypes:
    - PQconninfoOption*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6073
      start: 5991
    functionDepth: 1
    functionLinenumber: 5991
    functionLinenumberEnd: 6073
    functionName: parseServiceInfo
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - pqGetHomeDirectory
    - parseServiceFile
    - stat
    - conninfo_getval
    - conninfo_storeval
    - libpq_append_error
    - getenv
    - snprintf
    linkageType: ''
    returnType: int
    signature: int parseServiceInfo(PQconninfoOption *options, PQExpBuffer errorMessage)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6091,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6094,1
    - Dst: fgets
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6098,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6104,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6106,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6115,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6116,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6120,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6136,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6136,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6137,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6154,1
    - Dst: ldapServiceLookup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6156,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6174,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6177,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6186,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6188,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6196,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6198,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6213,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6216,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6219,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6230,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6252,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6259,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6262,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6269,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 109
    argCount: 5
    argNames:
    - serviceFile
    - service
    - options
    - errorMessage
    - group_found
    argTypes:
    - char*
    - char*
    - PQconninfoOption*
    - PQExpBuffer
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6272
      start: 6075
    functionDepth: 3
    functionLinenumber: 6075
    functionLinenumberEnd: 6272
    functionName: parseServiceFile
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strchr
    - fopen
    - isspace
    - fclose
    - libpq_append_error
    - strlen
    - strncmp
    - fgets
    - strdup
    - ldapServiceLookup
    linkageType: ''
    returnType: int
    signature: "int parseServiceFile(const char *serviceFile,\n\t\t\t\t const char
      *service,\n\t\t\t\t PQconninfoOption *options,\n\t\t\t\t PQExpBuffer errorMessage,\n\t\t\t\t
      bool *group_found)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6298,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6299,1
    - Dst: parse_connection_string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6301,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6305,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - conninfo
    - errmsg
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6307
      start: 6290
    functionDepth: 2
    functionLinenumber: 6290
    functionLinenumberEnd: 6307
    functionName: PQconninfoParse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 6
    functionsReached:
    - termPQExpBuffer
    - parse_connection_string
    - PQExpBufferDataBroken
    - initPQExpBuffer
    linkageType: ''
    returnType: PQconninfoOption
    signature: 'PQconninfoOption *

      PQconninfoParse(const char *conninfo, char **errmsg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6323,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6326,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6334,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - errorMessage
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6340
      start: 6312
    functionDepth: 1
    functionLinenumber: 6312
    functionLinenumberEnd: 6340
    functionName: conninfo_init
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - libpq_append_error
    - MemSet
    - malloc
    - memcpy
    linkageType: ''
    returnType: PQconninfoOption
    signature: 'PQconninfoOption *

      conninfo_init(PQExpBuffer errorMessage)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uri_prefix_length
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6356,1
    - Dst: conninfo_uri_parse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6357,1
    - Dst: conninfo_parse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - connstr
    - errorMessage
    - use_defaults
    argTypes:
    - char*
    - PQExpBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6361
      start: 6351
    functionDepth: 1
    functionLinenumber: 6351
    functionLinenumberEnd: 6361
    functionName: parse_connection_string
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - conninfo_uri_parse
    - conninfo_parse
    - uri_prefix_length
    linkageType: ''
    returnType: PQconninfoOption
    signature: "PQconninfoOption *\nparse_connection_string(const char *connstr, PQExpBuffer
      errorMessage,\n\t\t\t\t\t\tbool use_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6374,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - connstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6383
      start: 6371
    functionDepth: 0
    functionLinenumber: 6371
    functionLinenumberEnd: 6383
    functionName: uri_prefix_length
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int uri_prefix_length(const char *connstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_prefix_length
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6397,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - connstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6398
      start: 6394
    functionDepth: 0
    functionLinenumber: 6394
    functionLinenumberEnd: 6398
    functionName: recognized_connection_string
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - strchr
    - uri_prefix_length
    linkageType: ''
    returnType: bool
    signature: bool recognized_connection_string(const char *connstr)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: conninfo_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6417,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6422,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6424,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6425,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6433,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6445,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6450,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6462,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6465,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6466,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6474,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6487,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6511,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6512,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6513,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6536,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6538,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6539,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6545,1
    - Dst: conninfo_add_defaults
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6552,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6554,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 96
    argCount: 3
    argNames:
    - conninfo
    - errorMessage
    - use_defaults
    argTypes:
    - char*
    - PQExpBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6560
      start: 6405
    functionDepth: 2
    functionLinenumber: 6405
    functionLinenumberEnd: 6560
    functionName: conninfo_parse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - PQconninfoFree
    - conninfo_init
    - isspace
    - conninfo_storeval
    - libpq_append_error
    - free
    - strdup
    - conninfo_add_defaults
    linkageType: ''
    returnType: PQconninfoOption
    signature: "PQconninfoOption *\nconninfo_parse(const char *conninfo, PQExpBuffer
      errorMessage,\n\t\t\t   bool use_defaults)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6601,1
    - Dst: recognized_connection_string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6608,1
    - Dst: parse_connection_string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6610,1
    - Dst: conninfo_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6620,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6623,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6639,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6646,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6647,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6648,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6657,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6669,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6671,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6672,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6675,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6676,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6677,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6690,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6698,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6699,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6702,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6703,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6704,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6711,1
    - Dst: conninfo_add_defaults
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6718,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6720,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 71
    argCount: 5
    argNames:
    - keywords
    - values
    - errorMessage
    - use_defaults
    - expand_dbname
    argTypes:
    - char**
    - char**
    - PQExpBuffer
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6726
      start: 6581
    functionDepth: 2
    functionLinenumber: 6581
    functionLinenumberEnd: 6726
    functionName: conninfo_array_parse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - PQconninfoFree
    - recognized_connection_string
    - strcmp
    - conninfo_init
    - libpq_append_error
    - free
    - strdup
    - parse_connection_string
    - conninfo_add_defaults
    linkageType: ''
    returnType: PQconninfoOption
    signature: "PQconninfoOption *\nconninfo_array_parse(const char *const *keywords,
      const char *const *values,\n\t\t\t\t\t PQExpBuffer errorMessage, bool use_defaults,\n\t\t\t\t\t
      int expand_dbname)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: parseServiceInfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6752,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6761,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6772,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6774,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6778,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6791,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6793,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6797,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6801,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6821,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6825,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6838,1
    - Dst: pg_fe_getauthname
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6840,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6852,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6854,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6856,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6860,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 57
    argCount: 2
    argNames:
    - options
    - errorMessage
    argTypes:
    - PQconninfoOption*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6867
      start: 6739
    functionDepth: 3
    functionLinenumber: 6739
    functionLinenumberEnd: 6867
    functionName: conninfo_add_defaults
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - strcmp
    - parseServiceInfo
    - libpq_append_error
    - getenv
    - free
    - strdup
    - pg_fe_getauthname
    linkageType: ''
    returnType: bool
    signature: bool conninfo_add_defaults(PQconninfoOption *options, PQExpBuffer errorMessage)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: conninfo_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6881,1
    - Dst: conninfo_uri_parse_options
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6885,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6887,1
    - Dst: conninfo_add_defaults
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6896,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6898,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - uri
    - errorMessage
    - use_defaults
    argTypes:
    - char*
    - PQExpBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6904
      start: 6874
    functionDepth: 4
    functionLinenumber: 6874
    functionLinenumberEnd: 6904
    functionName: conninfo_uri_parse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - conninfo_init
    - PQconninfoFree
    - conninfo_add_defaults
    - conninfo_uri_parse_options
    linkageType: ''
    returnType: PQconninfoOption
    signature: "PQconninfoOption *\nconninfo_uri_parse(const char *uri, PQExpBuffer
      errorMessage,\n\t\t\t\t   bool use_defaults)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6942,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6943,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6944,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6944,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6946,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6951,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6954,1
    - Dst: uri_prefix_length
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6960,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6964,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6992,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7005,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7041,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7048,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7063,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7086,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7098,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7104,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7105,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7109,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7109,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7112,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7116,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7137,1
    - Dst: conninfo_uri_parse_params
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7146,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7154,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7155,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7156,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 120
    argCount: 3
    argNames:
    - options
    - uri
    - errorMessage
    argTypes:
    - PQconninfoOption*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7158
      start: 6927
    functionDepth: 4
    functionLinenumber: 6927
    functionLinenumberEnd: 7158
    functionName: conninfo_uri_parse_options
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - uri_prefix_length
    - conninfo_uri_parse_params
    - conninfo_storeval
    - libpq_append_error
    - initPQExpBuffer
    - strdup
    - free
    - appendPQExpBufferChar
    - termPQExpBuffer
    - PQExpBufferDataBroken
    - appendPQExpBufferStr
    linkageType: ''
    returnType: bool
    signature: "bool conninfo_uri_parse_options(PQconninfoOption *options, const char
      *uri,\n\t\t\t\t\t\t   PQExpBuffer errorMessage)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7192,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7212,1
    - Dst: conninfo_uri_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7224,1
    - Dst: conninfo_uri_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7230,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7234,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7242,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7243,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7245,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7246,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7259,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7264,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7270,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7271,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7278,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7279,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 3
    argNames:
    - params
    - connOptions
    - errorMessage
    argTypes:
    - char*
    - PQconninfoOption*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7287
      start: 7168
    functionDepth: 1
    functionLinenumber: 7168
    functionLinenumberEnd: 7287
    functionName: conninfo_uri_parse_params
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - strcmp
    - conninfo_uri_decode
    - conninfo_storeval
    - libpq_append_error
    - free
    linkageType: ''
    returnType: bool
    signature: "bool conninfo_uri_parse_params(char *params,\n\t\t\t\t\t\t  PQconninfoOption
      *connOptions,\n\t\t\t\t\t\t  PQExpBuffer errorMessage)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7308,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7308,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7311,1
    - Dst: get_hexdigit
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7346,1
    - Dst: get_hexdigit
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7346,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7348,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7351,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7358,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7361,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7380,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7383,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 2
    argNames:
    - str
    - errorMessage
    argTypes:
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7391
      start: 7301
    functionDepth: 1
    functionLinenumber: 7301
    functionLinenumberEnd: 7391
    functionName: conninfo_uri_decode
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - get_hexdigit
    - libpq_append_error
    - strlen
    - malloc
    - free
    linkageType: ''
    returnType: char
    signature: 'char *

      conninfo_uri_decode(const char *str, PQExpBuffer errorMessage)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - digit
    - value
    argTypes:
    - char
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7414
      start: 7401
    functionDepth: 0
    functionLinenumber: 7401
    functionLinenumberEnd: 7414
    functionName: get_hexdigit
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool get_hexdigit(char digit, int *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: conninfo_find
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - connOptions
    - keyword
    argTypes:
    - PQconninfoOption*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7431
      start: 7422
    functionDepth: 1
    functionLinenumber: 7422
    functionLinenumberEnd: 7431
    functionName: conninfo_getval
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - conninfo_find
    linkageType: ''
    returnType: char
    signature: "char *\nconninfo_getval(PQconninfoOption *connOptions,\n\t\t\t\tconst
      char *keyword)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7462,1
    - Dst: conninfo_find
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7471,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7475,1
    - Dst: conninfo_uri_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7483,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7490,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7493,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7498,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 6
    argNames:
    - connOptions
    - keyword
    - value
    - errorMessage
    - ignoreMissing
    - uri_decode
    argTypes:
    - PQconninfoOption*
    - char*
    - char*
    - PQExpBuffer
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7502
      start: 7448
    functionDepth: 2
    functionLinenumber: 7448
    functionLinenumberEnd: 7502
    functionName: conninfo_storeval
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - strcmp
    - conninfo_uri_decode
    - conninfo_find
    - libpq_append_error
    - free
    - strdup
    linkageType: ''
    returnType: PQconninfoOption
    signature: "PQconninfoOption *\nconninfo_storeval(PQconninfoOption *connOptions,\n\t\t\t\t
      \ const char *keyword, const char *value,\n\t\t\t\t  PQExpBuffer errorMessage,
      bool ignoreMissing,\n\t\t\t\t  bool uri_decode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7519,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - connOptions
    - keyword
    argTypes:
    - PQconninfoOption*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7524
      start: 7512
    functionDepth: 0
    functionLinenumber: 7512
    functionLinenumberEnd: 7524
    functionName: conninfo_find
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: PQconninfoOption
    signature: 'PQconninfoOption *

      conninfo_find(PQconninfoOption *connOptions, const char *keyword)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7543,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7544,1
    - Dst: conninfo_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7547,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7563,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7568,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7571
      start: 7530
    functionDepth: 3
    functionLinenumber: 7530
    functionLinenumberEnd: 7571
    functionName: PQconninfo
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached:
    - conninfo_init
    - conninfo_storeval
    - initPQExpBuffer
    - termPQExpBuffer
    - PQExpBufferDataBroken
    linkageType: ''
    returnType: PQconninfoOption
    signature: 'PQconninfoOption *

      PQconninfo(PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7581,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - connOptions
    argTypes:
    - PQconninfoOption*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7583
      start: 7574
    functionDepth: 1
    functionLinenumber: 7574
    functionLinenumberEnd: 7583
    functionName: PQconninfoFree
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 16
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void PQconninfoFree(PQconninfoOption *connOptions)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7593
      start: 7587
    functionDepth: 0
    functionLinenumber: 7587
    functionLinenumberEnd: 7593
    functionName: PQdb
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQdb(const PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7601
      start: 7595
    functionDepth: 0
    functionLinenumber: 7595
    functionLinenumberEnd: 7601
    functionName: PQuser
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQuser(const PGconn *conn)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7618
      start: 7603
    functionDepth: 0
    functionLinenumber: 7603
    functionLinenumberEnd: 7618
    functionName: PQpass
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQpass(const PGconn *conn)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7641
      start: 7620
    functionDepth: 0
    functionLinenumber: 7620
    functionLinenumberEnd: 7641
    functionName: PQhost
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQhost(const PGconn *conn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7654
      start: 7643
    functionDepth: 0
    functionLinenumber: 7643
    functionLinenumberEnd: 7654
    functionName: PQhostaddr
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQhostaddr(const PGconn *conn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7668
      start: 7656
    functionDepth: 0
    functionLinenumber: 7656
    functionLinenumberEnd: 7668
    functionName: PQport
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQport(const PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7680
      start: 7674
    functionDepth: 0
    functionLinenumber: 7674
    functionLinenumberEnd: 7680
    functionName: PQtty
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQtty(const PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7688
      start: 7682
    functionDepth: 0
    functionLinenumber: 7682
    functionLinenumberEnd: 7688
    functionName: PQoptions
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQoptions(const PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7696
      start: 7690
    functionDepth: 0
    functionLinenumber: 7690
    functionLinenumberEnd: 7696
    functionName: PQstatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: ConnStatusType
    signature: ConnStatusType PQstatus(const PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7706
      start: 7698
    functionDepth: 0
    functionLinenumber: 7698
    functionLinenumberEnd: 7706
    functionName: PQtransactionStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: PGTransactionStatusType
    signature: PGTransactionStatusType PQtransactionStatus(const PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7717,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - paramName
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7721
      start: 7708
    functionDepth: 0
    functionLinenumber: 7708
    functionLinenumberEnd: 7721
    functionName: PQparameterStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 14
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: char
    signature: 'char *

      PQparameterStatus(const PGconn *conn, const char *paramName)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7731
      start: 7723
    functionDepth: 1
    functionLinenumber: 7723
    functionLinenumberEnd: 7731
    functionName: PQprotocolVersion
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - PG_PROTOCOL_MAJOR
    linkageType: ''
    returnType: int
    signature: int PQprotocolVersion(const PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_PROTOCOL_FULL
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7740,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7741
      start: 7733
    functionDepth: 1
    functionLinenumber: 7733
    functionLinenumberEnd: 7741
    functionName: PQfullProtocolVersion
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - PG_PROTOCOL_FULL
    linkageType: ''
    returnType: int
    signature: int PQfullProtocolVersion(const PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7751
      start: 7743
    functionDepth: 0
    functionLinenumber: 7743
    functionLinenumberEnd: 7751
    functionName: PQserverVersion
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQserverVersion(const PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7757,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7764,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7765,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7768
      start: 7753
    functionDepth: 1
    functionLinenumber: 7753
    functionLinenumberEnd: 7768
    functionName: PQerrorMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 122
    functionsReached:
    - libpq_gettext
    - PQExpBufferBroken
    linkageType: ''
    returnType: char
    signature: 'char *

      PQerrorMessage(const PGconn *conn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7787
      start: 7779
    functionDepth: 0
    functionLinenumber: 7779
    functionLinenumberEnd: 7787
    functionName: PQsocket
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQsocket(const PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7795
      start: 7789
    functionDepth: 0
    functionLinenumber: 7789
    functionLinenumberEnd: 7795
    functionName: PQbackendPID
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQbackendPID(const PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7804
      start: 7797
    functionDepth: 0
    functionLinenumber: 7797
    functionLinenumberEnd: 7804
    functionName: PQpipelineStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: PGpipelineStatus
    signature: PGpipelineStatus PQpipelineStatus(const PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQpass
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7813,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7819
      start: 7806
    functionDepth: 1
    functionLinenumber: 7806
    functionLinenumberEnd: 7819
    functionName: PQconnectionNeedsPassword
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 6
    functionsReached:
    - PQpass
    linkageType: ''
    returnType: int
    signature: int PQconnectionNeedsPassword(const PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7830
      start: 7821
    functionDepth: 0
    functionLinenumber: 7821
    functionLinenumberEnd: 7830
    functionName: PQconnectionUsedPassword
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQconnectionUsedPassword(const PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7841
      start: 7832
    functionDepth: 0
    functionLinenumber: 7832
    functionLinenumberEnd: 7841
    functionName: PQconnectionUsedGSSAPI
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQconnectionUsedGSSAPI(const PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7849
      start: 7843
    functionDepth: 0
    functionLinenumber: 7843
    functionLinenumberEnd: 7849
    functionName: PQclientEncoding
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQclientEncoding(const PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7866,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7867,1
    - Dst: pg_get_encoding_from_locale
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7867,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7870,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7874,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7875,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7889,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - encoding
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7891
      start: 7851
    functionDepth: 3
    functionLinenumber: 7851
    functionLinenumberEnd: 7891
    functionName: PQsetClientEncoding
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - pg_get_encoding_from_locale
    - pg_encoding_to_char
    - strlen
    - sprintf
    linkageType: ''
    returnType: int
    signature: int PQsetClientEncoding(PGconn *conn, const char *encoding)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - verbosity
    argTypes:
    - PGconn*
    - PGVerbosity
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7903
      start: 7893
    functionDepth: 0
    functionLinenumber: 7893
    functionLinenumberEnd: 7903
    functionName: PQsetErrorVerbosity
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: PGVerbosity
    signature: PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - show_context
    argTypes:
    - PGconn*
    - PGContextVisibility
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7915
      start: 7905
    functionDepth: 0
    functionLinenumber: 7905
    functionLinenumberEnd: 7915
    functionName: PQsetErrorContextVisibility
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: PGContextVisibility
    signature: PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibility
      show_context)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - proc
    - arg
    argTypes:
    - PGconn*
    - PQnoticeReceiver
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7932
      start: 7917
    functionDepth: 0
    functionLinenumber: 7917
    functionLinenumberEnd: 7932
    functionName: PQsetNoticeReceiver
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PQnoticeReceiver
    signature: PQnoticeReceiver PQsetNoticeReceiver(PGconn *conn, PQnoticeReceiver
      proc, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - proc
    - arg
    argTypes:
    - PGconn*
    - PQnoticeProcessor
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7949
      start: 7934
    functionDepth: 0
    functionLinenumber: 7934
    functionLinenumberEnd: 7949
    functionName: PQsetNoticeProcessor
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: PQnoticeProcessor
    signature: PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn, PQnoticeProcessor
      proc, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PGresult*::noticeHooks::noticeProc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7962,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - arg
    - res
    argTypes:
    - void*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7964
      start: 7957
    functionDepth: 1
    functionLinenumber: 7957
    functionLinenumberEnd: 7964
    functionName: defaultNoticeReceiver
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - PGresult*::noticeHooks::noticeProc
    - PQresultErrorMessage
    linkageType: ''
    returnType: void
    signature: void defaultNoticeReceiver(void *arg, const PGresult *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7977,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - arg
    - message
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7978
      start: 7972
    functionDepth: 0
    functionLinenumber: 7972
    functionLinenumberEnd: 7978
    functionName: defaultNoticeProcessor
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void defaultNoticeProcessor(void *arg, const char *message)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - buf
    - token
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8018
      start: 7984
    functionDepth: 0
    functionLinenumber: 7984
    functionLinenumberEnd: 8018
    functionName: pwdfMatchesString
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      pwdfMatchesString(char *buf, const char *token)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: is_unixsock_path
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8048,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8054,1
    - Dst: fopen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8061,1
    - Dst: fstat
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8066,1
    - Dst: fileno
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8066,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8068,1
    - Dst: S_ISREG
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8072,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8074,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8075,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8077,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8084,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8085,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8087,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8099,1
    - Dst: feof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8101,1
    - Dst: ferror
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8101,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8104,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8106,1
    - Dst: fgets
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8111,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8113,1
    - Dst: feof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8116,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8126,1
    - Dst: pwdfMatchesString
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8129,1
    - Dst: pwdfMatchesString
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8130,1
    - Dst: pwdfMatchesString
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8131,1
    - Dst: pwdfMatchesString
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8132,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8139,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8141,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8142,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8143,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8147,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8168,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8169,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8170,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 67
    argCount: 6
    argNames:
    - hostname
    - port
    - dbname
    - username
    - pgpassfile
    - errmsg
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8172
      start: 8026
    functionDepth: 3
    functionLinenumber: 8026
    functionLinenumberEnd: 8172
    functionName: passwordFromFile
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - S_ISREG
    - strcmp
    - explicit_bzero
    - fopen
    - is_unixsock_path
    - pg_strip_crlf
    - enlargePQExpBuffer
    - fprintf
    - fileno
    - ferror
    - strdup
    - fstat
    - libpq_gettext
    - feof
    - fclose
    - strlen
    - fgets
    - pwdfMatchesString
    - termPQExpBuffer
    - initPQExpBuffer
    linkageType: ''
    returnType: char
    signature: "char *\npasswordFromFile(const char *hostname, const char *port,\n\t\t\t\t
      const char *dbname, const char *username,\n\t\t\t\t const char *pgpassfile,
      const char **errmsg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8188,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8191,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8192,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8195
      start: 8179
    functionDepth: 1
    functionLinenumber: 8179
    functionLinenumberEnd: 8195
    functionName: pgpassfileWarning
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - libpq_append_conn_error
    - PQresultErrorField
    - strcmp
    linkageType: ''
    returnType: void
    signature: void pgpassfileWarning(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8209,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8212,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8213,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8214,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8215,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 1
    argNames:
    - version
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8220
      start: 8202
    functionDepth: 2
    functionLinenumber: 8202
    functionLinenumberEnd: 8220
    functionName: sslVerifyProtocolVersion
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool sslVerifyProtocolVersion(const char *version)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8231,1
    - Dst: sslVerifyProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8231,1
    - Dst: sslVerifyProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8232,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8235,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8235,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8242,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8249,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8256,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 2
    argNames:
    - min
    - max
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8260
      start: 8228
    functionDepth: 3
    functionLinenumber: 8228
    functionLinenumberEnd: 8260
    functionName: sslVerifyProtocolRange
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - Assert
    - pg_strcasecmp
    - strlen
    - sslVerifyProtocolVersion
    linkageType: ''
    returnType: bool
    signature: bool sslVerifyProtocolRange(const char *min, const char *max)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8287,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8290,1
    - Dst: getpwuid_r
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8300,1
    - Dst: geteuid
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8300,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8303,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8309,1
    - Dst: SHGetFolderPath
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8310,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8312,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - buf
    - bufsize
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8315
      start: 8281
    functionDepth: 1
    functionLinenumber: 8281
    functionLinenumberEnd: 8315
    functionName: pqGetHomeDirectory
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - geteuid
    - strlcpy
    - SHGetFolderPath
    - getenv
    - getpwuid_r
    - ZeroMemory
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool pqGetHomeDirectory(char *buf, int bufsize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8329,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8335,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8348,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8358,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 4
    argNames:
    - value
    - result
    - conn
    - context
    argTypes:
    - char*
    - int*
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8361
      start: 8322
    functionDepth: 1
    functionLinenumber: 8322
    functionLinenumberEnd: 8361
    functionName: pqParseIntParam
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 9
    functionsReached:
    - Assert
    - libpq_append_conn_error
    - strtol
    - isspace
    linkageType: ''
    returnType: bool
    signature: "bool pqParseIntParam(const char *value, int *result, PGconn *conn,\n\t\t\t\tconst
      char *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8371,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8376,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8378,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8384,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8386,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - value
    - result
    - conn
    - context
    argTypes:
    - char*
    - ProtocolVersion*
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8393
      start: 8367
    functionDepth: 1
    functionLinenumber: 8367
    functionLinenumberEnd: 8393
    functionName: pqParseProtocolVersion
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - PG_PROTOCOL
    - libpq_append_conn_error
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool pqParseProtocolVersion(const char *value, ProtocolVersion *result,
      PGconn *conn,\n\t\t\t\t\t   const char *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8412,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8413,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8417,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8418,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - acquire
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8420
      start: 8405
    functionDepth: 1
    functionLinenumber: 8405
    functionLinenumberEnd: 8420
    functionName: default_threadlock
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - Assert
    - pthread_mutex_lock
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void default_threadlock(int acquire)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - newhandler
    argTypes:
    - pgthreadlock_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8433
      start: 8422
    functionDepth: 0
    functionLinenumber: 8422
    functionLinenumberEnd: 8433
    functionName: PQregisterThreadLock
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pgthreadlock_t
    signature: pgthreadlock_t PQregisterThreadLock(pgthreadlock_t newhandler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8440
      start: 8435
    functionDepth: 1
    functionLinenumber: 8435
    functionLinenumberEnd: 8440
    functionName: PQgetThreadLock
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: pgthreadlock_t
    signature: pgthreadlock_t PQgetThreadLock(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: close
    functionSourceFile: /src/postgres/src/interfaces/libpq/win32.h
    functionUses: 212
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: close(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 14
    functionName: read
    functionSourceFile: /src/postgres/src/interfaces/libpq/win32.h
    functionUses: 65
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: read(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: write
    functionSourceFile: /src/postgres/src/interfaces/libpq/win32.h
    functionUses: 95
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: write(a,b,c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:64,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:75,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:76,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:78,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - conn
    - lobjId
    - mode
    argTypes:
    - PGconn*
    - Oid
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 86
    functionName: lo_open
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 11
    functionsReached:
    - lo_initialize
    - PQfn
    - PQclear
    - PQresultStatus
    linkageType: ''
    returnType: int
    signature: int lo_open(PGconn *conn, Oid lobjId, int mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:103,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:109,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:111,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:113,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - fd
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 121
    functionName: lo_close
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 11
    functionsReached:
    - lo_initialize
    - PQfn
    - PQclear
    - PQresultStatus
    linkageType: ''
    returnType: int
    signature: int lo_close(PGconn *conn, int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:138,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:144,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:160,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:172,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:175,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:177,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - conn
    - fd
    - len
    argTypes:
    - PGconn*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 185
    functionName: lo_truncate
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 0
    functionsReached:
    - lo_initialize
    - PQclear
    - PQfn
    - PQresultStatus
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int lo_truncate(PGconn *conn, int fd, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:202,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:207,1
    - Dst: lo_hton64
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:216,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:221,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:224,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:226,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - conn
    - fd
    - len
    argTypes:
    - PGconn*
    - int
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 234
    functionName: lo_truncate64
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 1
    functionsReached:
    - lo_initialize
    - PQclear
    - PQfn
    - PQresultStatus
    - libpq_append_conn_error
    - lo_hton64
    linkageType: ''
    returnType: int
    signature: int lo_truncate64(PGconn *conn, int fd, int64_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:251,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:262,1
    - Dst: PQnfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:274,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:276,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:278,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:283,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - conn
    - fd
    - buf
    - len
    argTypes:
    - PGconn*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 286
    functionName: lo_read
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 5
    functionsReached:
    - lo_initialize
    - PQclear
    - PQnfn
    - PQresultStatus
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int lo_read(PGconn *conn, int fd, char *buf, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:302,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:313,1
    - Dst: unconstify
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:323,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:325,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:327,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:329,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - conn
    - fd
    - buf
    - len
    argTypes:
    - PGconn*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 337
    functionName: lo_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 5
    functionsReached:
    - lo_initialize
    - PQclear
    - unconstify
    - PQfn
    - PQresultStatus
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int lo_write(PGconn *conn, int fd, const char *buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:351,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:366,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:368,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:370,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - conn
    - fd
    - offset
    - whence
    argTypes:
    - PGconn*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 378
    functionName: lo_lseek
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 2
    functionsReached:
    - lo_initialize
    - PQfn
    - PQclear
    - PQresultStatus
    linkageType: ''
    returnType: int
    signature: int lo_lseek(PGconn *conn, int fd, int offset, int whence)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:392,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:397,1
    - Dst: lo_hton64
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:406,1
    - Dst: PQnfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:415,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:417,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:419,1
    - Dst: lo_ntoh64
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:420,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:424,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 4
    argNames:
    - conn
    - fd
    - offset
    - whence
    argTypes:
    - PGconn*
    - int
    - int64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 427
    functionName: lo_lseek64
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 2
    functionsReached:
    - lo_initialize
    - PQclear
    - lo_ntoh64
    - PQnfn
    - PQresultStatus
    - libpq_append_conn_error
    - lo_hton64
    linkageType: ''
    returnType: int64_t
    signature: int64_t lo_lseek64(PGconn *conn, int fd, int64_t offset, int whence)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:445,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:451,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:453,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:455,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:460,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - mode
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 463
    functionName: lo_creat
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 2
    functionsReached:
    - lo_initialize
    - PQfn
    - PQclear
    - PQresultStatus
    linkageType: ''
    returnType: Oid
    signature: Oid lo_creat(PGconn *conn, int mode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:481,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:487,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:495,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:497,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:499,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - conn
    - lobjId
    argTypes:
    - PGconn*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 507
    functionName: lo_create
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 1
    functionsReached:
    - lo_initialize
    - PQclear
    - PQfn
    - PQresultStatus
    - libpq_append_conn_error
    linkageType: ''
    returnType: Oid
    signature: Oid lo_create(PGconn *conn, Oid lobjId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:522,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:529,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:531,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:533,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - fd
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 514
    functionDepth: 2
    functionLinenumber: 514
    functionLinenumberEnd: 541
    functionName: lo_tell
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 0
    functionsReached:
    - lo_initialize
    - PQfn
    - PQclear
    - PQresultStatus
    linkageType: ''
    returnType: int
    signature: int lo_tell(PGconn *conn, int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:555,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:560,1
    - Dst: PQnfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:569,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:571,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:573,1
    - Dst: lo_ntoh64
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:574,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:578,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - conn
    - fd
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 547
    functionDepth: 2
    functionLinenumber: 547
    functionLinenumberEnd: 581
    functionName: lo_tell64
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 1
    functionsReached:
    - lo_initialize
    - PQclear
    - lo_ntoh64
    - PQnfn
    - PQresultStatus
    - libpq_append_conn_error
    linkageType: ''
    returnType: int64_t
    signature: int64_t lo_tell64(PGconn *conn, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lo_initialize
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:596,1
    - Dst: PQfn
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:603,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:605,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:607,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:612,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - lobjId
    argTypes:
    - PGconn*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 588
    functionDepth: 2
    functionLinenumber: 588
    functionLinenumberEnd: 615
    functionName: lo_unlink
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 2
    functionsReached:
    - lo_initialize
    - PQfn
    - PQclear
    - PQresultStatus
    linkageType: ''
    returnType: int
    signature: int lo_unlink(PGconn *conn, Oid lobjId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lo_import_internal
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - filename
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 625
    functionDepth: 0
    functionLinenumber: 625
    functionLinenumberEnd: 629
    functionName: lo_import
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 4
    functionsReached:
    - lo_import_internal
    linkageType: ''
    returnType: Oid
    signature: Oid lo_import(PGconn *conn, const char *filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lo_import_internal
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - conn
    - filename
    - lobjId
    argTypes:
    - PGconn*
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 644
    functionName: lo_import_with_oid
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 0
    functionsReached:
    - lo_import_internal
    linkageType: ''
    returnType: Oid
    signature: Oid lo_import_with_oid(PGconn *conn, const char *filename, Oid lobjId)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:661,1
    - Dst: open
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:666,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:669,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:670,1
    - Dst: lo_creat
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:678,1
    - Dst: lo_create
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:680,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:685,1
    - Dst: lo_open
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:689,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:693,1
    - Dst: read
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:700,1
    - Dst: lo_write
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:702,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:711,1
    - Dst: lo_close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:721,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:722,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:724,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:725,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:727,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:731,1
    - Dst: lo_close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:733,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 3
    argNames:
    - conn
    - filename
    - oid
    argTypes:
    - PGconn*
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 646
    functionDepth: 3
    functionLinenumber: 646
    functionLinenumberEnd: 740
    functionName: lo_import_internal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 2
    functionsReached:
    - strerror_r
    - lo_create
    - lo_write
    - lo_creat
    - pqClearConnErrorState
    - lo_open
    - close
    - open
    - lo_close
    - libpq_append_conn_error
    - read
    linkageType: ''
    returnType: Oid
    signature: Oid lo_import_internal(PGconn *conn, const char *filename, Oid oid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lo_open
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:761,1
    - Dst: open
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:771,1
    - Dst: lo_close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:777,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:779,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:780,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:782,1
    - Dst: lo_read
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:789,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:791,1
    - Dst: lo_close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:797,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:798,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:800,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:801,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:803,1
    - Dst: lo_close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:815,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:822,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:824,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:825,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - conn
    - lobjId
    - filename
    argTypes:
    - PGconn*
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 747
    functionDepth: 3
    functionLinenumber: 747
    functionLinenumberEnd: 830
    functionName: lo_export
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 4
    functionsReached:
    - strerror_r
    - lo_read
    - open
    - write
    - pqClearConnErrorState
    - close
    - lo_open
    - lo_close
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int lo_export(PGconn *conn, Oid lobjId, const char *filename)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:857,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:867,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:870,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:873,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:897,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:900,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:906,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:907,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:908,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:915,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:917,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:918,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:918,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:919,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:921,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:923,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:925,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:927,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:929,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:931,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:933,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:935,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:937,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:939,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:941,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:943,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:947,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:956,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:958,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:963,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:965,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:970,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:972,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:977,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:979,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:984,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:986,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:991,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:993,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:998,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:1000,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:1005,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:1007,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 97
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 842
    functionDepth: 5
    functionLinenumber: 842
    functionLinenumberEnd: 1016
    functionName: lo_initialize
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 13
    functionsReached:
    - PQclear
    - strcmp
    - PQexec
    - pqClearConnErrorState
    - atoi
    - MemSet
    - malloc
    - free
    - PQgetvalue
    - PQntuples
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int lo_initialize(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:1034,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:1038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - host64
    argTypes:
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1022
    functionDepth: 1
    functionLinenumber: 1022
    functionLinenumberEnd: 1041
    functionName: lo_hton64
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 2
    functionsReached:
    - pg_hton32
    linkageType: ''
    returnType: int64_t
    signature: int64_t lo_hton64(int64_t host64)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:1059,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-lobj.c:1061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - net64
    argTypes:
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1047
    functionDepth: 1
    functionLinenumber: 1047
    functionLinenumberEnd: 1064
    functionName: lo_ntoh64
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-lobj.c
    functionUses: 2
    functionsReached:
    - pg_ntoh32
    linkageType: ''
    returnType: int64_t
    signature: int64_t lo_ntoh64(int64_t net64)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: PQlibVersion
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PQlibVersion(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - result
    - conn
    argTypes:
    - char*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 87
    functionName: pqGetc
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pqGetc(char *result, PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqPutMsgBytes
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - c
    - conn
    argTypes:
    - char
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 100
    functionName: pqPutc
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 2
    functionsReached:
    - pqPutMsgBytes
    linkageType: ''
    returnType: int
    signature: int pqPutc(char c, PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:128,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - conn
    - resetbuffer
    argTypes:
    - PQExpBuffer
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 110
    functionDepth: 4
    functionLinenumber: 110
    functionLinenumberEnd: 135
    functionName: pqGets_internal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 0
    functionsReached:
    - appendBinaryPQExpBuffer
    - resetPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int pqGets_internal(PQExpBuffer buf, PGconn *conn, bool resetbuffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqGets_internal
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - conn
    argTypes:
    - PQExpBuffer
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 137
    functionDepth: 5
    functionLinenumber: 137
    functionLinenumberEnd: 141
    functionName: pqGets
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 7
    functionsReached:
    - pqGets_internal
    linkageType: ''
    returnType: int
    signature: int pqGets(PQExpBuffer buf, PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqGets_internal
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - conn
    argTypes:
    - PQExpBuffer
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 143
    functionDepth: 5
    functionLinenumber: 143
    functionLinenumberEnd: 147
    functionName: pqGets_append
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - pqGets_internal
    linkageType: ''
    returnType: int
    signature: int pqGets_append(PQExpBuffer buf, PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqPutMsgBytes
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:156,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s
    - conn
    argTypes:
    - char*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: pqPuts
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 6
    functionsReached:
    - strlen
    - pqPutMsgBytes
    linkageType: ''
    returnType: int
    signature: int pqPuts(const char *s, PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - s
    - len
    - conn
    argTypes:
    - void*
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 178
    functionName: pqGetnchar
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 6
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: int pqGetnchar(void *s, size_t len, PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - len
    - conn
    argTypes:
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 197
    functionName: pqSkipnchar
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pqSkipnchar(size_t len, PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqPutMsgBytes
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - s
    - len
    - conn
    argTypes:
    - void*
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: pqPutnchar
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 6
    functionsReached:
    - pqPutMsgBytes
    linkageType: ''
    returnType: int
    signature: int pqPutnchar(const void *s, size_t len, PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:228,1
    - Dst: pg_ntoh16
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:230,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:235,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:237,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:240,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - result
    - bytes
    - conn
    argTypes:
    - int*
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 217
    functionDepth: 3
    functionLinenumber: 217
    functionLinenumberEnd: 247
    functionName: pqGetInt
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 11
    functionsReached:
    - pg_ntoh16
    - pqInternalNotice
    - memcpy
    - pg_ntoh32
    linkageType: ''
    returnType: int
    signature: int pqGetInt(int *result, size_t bytes, PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton16
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:263,1
    - Dst: pqPutMsgBytes
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:264,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:268,1
    - Dst: pqPutMsgBytes
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:269,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - value
    - bytes
    - conn
    argTypes:
    - int
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 254
    functionDepth: 3
    functionLinenumber: 254
    functionLinenumberEnd: 280
    functionName: pqPutInt
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 4
    functionsReached:
    - pg_hton16
    - pg_hton32
    - pqInternalNotice
    - pqPutMsgBytes
    linkageType: ''
    returnType: int
    signature: int pqPutInt(int value, size_t bytes, PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:312,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:330,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:341,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - bytes_needed
    - conn
    argTypes:
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 344
    functionName: pqCheckOutBufferSpace
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - realloc
    - appendPQExpBufferStr
    linkageType: ''
    returnType: int
    signature: int pqCheckOutBufferSpace(size_t bytes_needed, PGconn *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:375,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:406,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:424,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:435,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 2
    argNames:
    - bytes_needed
    - conn
    argTypes:
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 438
    functionName: pqCheckInBufferSpace
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 4
    functionsReached:
    - realloc
    - memmove
    - appendPQExpBufferStr
    linkageType: ''
    returnType: int
    signature: int pqCheckInBufferSpace(size_t bytes_needed, PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqTraceOutputMessage
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - newInStart
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 444
    functionDepth: 4
    functionLinenumber: 444
    functionLinenumberEnd: 453
    functionName: pqParseDone
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 5
    functionsReached:
    - pqTraceOutputMessage
    linkageType: ''
    returnType: void
    signature: void pqParseDone(PGconn *conn, int newInStart)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pqCheckOutBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:492,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - msg_type
    - conn
    argTypes:
    - char
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 474
    functionDepth: 3
    functionLinenumber: 474
    functionLinenumberEnd: 503
    functionName: pqPutMsgStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 14
    functionsReached:
    - pqCheckOutBufferSpace
    linkageType: ''
    returnType: int
    signature: int pqPutMsgStart(char msg_type, PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqCheckOutBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:514,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - len
    - conn
    argTypes:
    - void*
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 510
    functionDepth: 3
    functionLinenumber: 510
    functionLinenumberEnd: 521
    functionName: pqPutMsgBytes
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 4
    functionsReached:
    - memcpy
    - pqCheckOutBufferSpace
    linkageType: ''
    returnType: int
    signature: int pqPutMsgBytes(const void *buf, size_t len, PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:541,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:542,1
    - Dst: pqTraceOutputMessage
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:549,1
    - Dst: pqTraceOutputNoTypeByteMessage
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:551,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:580,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:583,1
    - Dst: pqSendSome
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:588,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 533
    functionDepth: 4
    functionLinenumber: 533
    functionLinenumberEnd: 594
    functionName: pqPutMsgEnd
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 14
    functionsReached:
    - pg_hton32
    - memcpy
    - Assert
    - pqTraceOutputNoTypeByteMessage
    - pqTraceOutputMessage
    - pqSendSome
    linkageType: ''
    returnType: int
    signature: int pqPutMsgEnd(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:621,1
    - Dst: pqReadData_internal
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:625,1
    - Dst: pqDrainPending
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:634,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:643,1
    - Dst: pqsecure_bytes_pending
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:643,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 614
    functionDepth: 3
    functionLinenumber: 614
    functionLinenumberEnd: 647
    functionName: pqReadData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 7
    functionsReached:
    - pqDrainPending
    - pqReadData_internal
    - Assert
    - libpq_append_conn_error
    - pqsecure_bytes_pending
    linkageType: ''
    returnType: int
    signature: int pqReadData(PGconn *conn)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:664,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:687,1
    - Dst: pqsecure_read
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:699,1
    - Dst: pqReadReady
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:776,1
    - Dst: pqsecure_read
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:794,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:833,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:840,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 89
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 653
    functionDepth: 4
    functionLinenumber: 653
    functionLinenumberEnd: 843
    functionName: pqReadData_internal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - pqReadReady
    - memmove
    - pqCheckInBufferSpace
    - pqsecure_read
    - pqDropConnection
    - libpq_append_conn_error
    linkageType: ''
    returnType: int
    signature: int pqReadData_internal(PGconn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pqsecure_bytes_pending
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:921,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:926,1
    - Dst: pqsecure_read
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:929,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:936,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 915
    functionDepth: 4
    functionLinenumber: 915
    functionLinenumberEnd: 942
    functionName: pqDrainPending
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - pqsecure_read
    - libpq_append_conn_error
    - pqCheckInBufferSpace
    - pqsecure_bytes_pending
    linkageType: ''
    returnType: int
    signature: int pqDrainPending(PGconn *conn)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:988,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:999,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:999,1
    - Dst: pqsecure_write
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1011,1
    - Dst: pqsecure_write
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1019,1
    - Dst: Min
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1019,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1045,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1098,1
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1104,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1110,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1120,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 60
    argCount: 2
    argNames:
    - conn
    - len
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 965
    functionDepth: 4
    functionLinenumber: 965
    functionLinenumberEnd: 1124
    functionName: pqSendSome
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - pqWait
    - pqsecure_write
    - libpq_gettext
    - memmove
    - pqIsnonblocking
    - strdup
    - Min
    - pqReadData
    linkageType: ''
    returnType: int
    signature: int pqSendSome(PGconn *conn, int len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1140,1
    - Dst: pqSendSome
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1134
    functionDepth: 5
    functionLinenumber: 1134
    functionLinenumberEnd: 1146
    functionName: pqFlush
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 17
    functionsReached:
    - pqSendSome
    - fflush
    linkageType: ''
    returnType: int
    signature: int pqFlush(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqWaitTimed
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - forRead
    - forWrite
    - conn
    argTypes:
    - int
    - int
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1159
    functionDepth: 1
    functionLinenumber: 1159
    functionLinenumberEnd: 1163
    functionName: pqWait
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 5
    functionsReached:
    - pqWaitTimed
    linkageType: ''
    returnType: int
    signature: int pqWait(int forRead, int forWrite, PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqSocketCheck
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1180,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - forRead
    - forWrite
    - conn
    - end_time
    argTypes:
    - int
    - int
    - PGconn*
    - pg_usec_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1175
    functionDepth: 1
    functionLinenumber: 1175
    functionLinenumberEnd: 1192
    functionName: pqWaitTimed
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 2
    functionsReached:
    - libpq_append_conn_error
    - pqSocketCheck
    linkageType: ''
    returnType: int
    signature: int pqWaitTimed(int forRead, int forWrite, PGconn *conn, pg_usec_time_t
      end_time)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqSocketCheck
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1198
    functionDepth: 1
    functionLinenumber: 1198
    functionLinenumberEnd: 1202
    functionName: pqReadReady
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 2
    functionsReached:
    - pqSocketCheck
    linkageType: ''
    returnType: int
    signature: int pqReadReady(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqSocketCheck
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1208
    functionDepth: 1
    functionLinenumber: 1208
    functionLinenumberEnd: 1212
    functionName: pqWriteReady
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 0
    functionsReached:
    - pqSocketCheck
    linkageType: ''
    returnType: int
    signature: int pqWriteReady(PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1239,1
    - Dst: pqsecure_bytes_pending
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1244,1
    - Dst: PQsocketPoll
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1253,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1260,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1261,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 4
    argNames:
    - conn
    - forRead
    - forWrite
    - end_time
    argTypes:
    - PGconn*
    - int
    - int
    - pg_usec_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1223
    functionDepth: 3
    functionLinenumber: 1223
    functionLinenumberEnd: 1265
    functionName: pqSocketCheck
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 3
    functionsReached:
    - SOCK_STRERROR
    - libpq_append_conn_error
    - PQsocketPoll
    - pqsecure_bytes_pending
    linkageType: ''
    returnType: int
    signature: int pqSocketCheck(PGconn *conn, int forRead, int forWrite, pg_usec_time_t
      end_time)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PQgetCurrentTimeUSec
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1306,1
    - Dst: poll
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1314,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1326,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1327,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1328,1
    - Dst: FD_SET
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1330,1
    - Dst: FD_SET
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1333,1
    - Dst: FD_SET
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1334,1
    - Dst: PQgetCurrentTimeUSec
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1347,1
    - Dst: select
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1362,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 4
    argNames:
    - sock
    - forRead
    - forWrite
    - end_time
    argTypes:
    - int
    - int
    - int
    - pg_usec_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1365
      start: 1279
    functionDepth: 1
    functionLinenumber: 1279
    functionLinenumberEnd: 1365
    functionName: PQsocketPoll
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 2
    functionsReached:
    - poll
    - FD_SET
    - PQgetCurrentTimeUSec
    - select
    - FD_ZERO
    linkageType: ''
    returnType: int
    signature: int PQsocketPoll(int sock, int forRead, int forWrite, pg_usec_time_t
      end_time)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1373
    functionDepth: 2
    functionLinenumber: 1373
    functionLinenumberEnd: 1380
    functionName: PQgetCurrentTimeUSec
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 3
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: pg_usec_time_t
    signature: pg_usec_time_t PQgetCurrentTimeUSec(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - encoding
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1393
    functionDepth: 2
    functionLinenumber: 1393
    functionLinenumberEnd: 1397
    functionName: PQmblen
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 6
    functionsReached:
    - pg_encoding_mblen
    linkageType: ''
    returnType: int
    signature: int PQmblen(const char *s, int encoding)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1407,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - encoding
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1404
    functionDepth: 2
    functionLinenumber: 1404
    functionLinenumberEnd: 1408
    functionName: PQmblenBounded
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 11
    functionsReached:
    - pg_encoding_mblen
    - strnlen
    linkageType: ''
    returnType: int
    signature: int PQmblenBounded(const char *s, int encoding)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_encoding_dsplen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - encoding
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1414
    functionDepth: 2
    functionLinenumber: 1414
    functionLinenumberEnd: 1418
    functionName: PQdsplen
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 5
    functionsReached:
    - pg_encoding_dsplen
    linkageType: ''
    returnType: int
    signature: int PQdsplen(const char *s, int encoding)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1429,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1432,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1423
    functionDepth: 2
    functionLinenumber: 1423
    functionLinenumberEnd: 1437
    functionName: PQenv2encoding
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - pg_char_to_encoding
    - getenv
    linkageType: ''
    returnType: int
    signature: int PQenv2encoding(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetLastError
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1459,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1464,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1474,1
    - Dst: bindtextdomain
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1477,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1477,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1481,1
    - Dst: SetLastError
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1484,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1442
    functionDepth: 1
    functionLinenumber: 1442
    functionLinenumberEnd: 1489
    functionName: libpq_binddomain
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - pthread_mutex_lock
    - GetLastError
    - bindtextdomain
    - getenv
    - pthread_mutex_unlock
    - SetLastError
    linkageType: ''
    returnType: void
    signature: void libpq_binddomain(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpq_binddomain
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1494,1
    - Dst: dgettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1495,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msgid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1491
    functionDepth: 2
    functionLinenumber: 1491
    functionLinenumberEnd: 1496
    functionName: libpq_gettext
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 43
    functionsReached:
    - PG_TEXTDOMAIN
    - libpq_binddomain
    - dgettext
    linkageType: ''
    returnType: char
    signature: 'char *

      libpq_gettext(const char *msgid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpq_binddomain
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1501,1
    - Dst: dngettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1502,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - msgid
    - msgid_plural
    - n
    argTypes:
    - char*
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1498
    functionDepth: 2
    functionLinenumber: 1498
    functionLinenumberEnd: 1503
    functionName: libpq_ngettext
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - dngettext
    - libpq_binddomain
    linkageType: ''
    returnType: char
    signature: 'char *

      libpq_ngettext(const char *msgid, const char *msgid_plural, unsigned long n)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1520,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1520,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1522,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1529,1
    - Dst: appendPQExpBufferVA
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1530,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1530,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1531,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - errorMessage
    - fmt
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1535
      start: 1513
    functionDepth: 4
    functionLinenumber: 1513
    functionLinenumberEnd: 1535
    functionName: libpq_append_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 13
    functionsReached:
    - va_end
    - Assert
    - va_start
    - libpq_gettext
    - strlen
    - PQExpBufferBroken
    - appendPQExpBufferChar
    - appendPQExpBufferVA
    linkageType: ''
    returnType: void
    signature: void libpq_append_error(PQExpBuffer errorMessage, const char *fmt,
      ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1549,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1549,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1551,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1558,1
    - Dst: appendPQExpBufferVA
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1559,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1559,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1560,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - conn
    - fmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1542
    functionDepth: 4
    functionLinenumber: 1542
    functionLinenumberEnd: 1564
    functionName: libpq_append_conn_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 109
    functionsReached:
    - va_end
    - Assert
    - va_start
    - libpq_gettext
    - strlen
    - PQExpBufferBroken
    - appendPQExpBufferChar
    - appendPQExpBufferVA
    linkageType: ''
    returnType: void
    signature: void libpq_append_conn_error(PGconn *conn, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1570
    functionDepth: 5
    functionLinenumber: 1570
    functionLinenumberEnd: 1582
    functionName: libpq_append_grease_info
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 2
    functionsReached:
    - libpq_append_conn_error
    linkageType: ''
    returnType: void
    signature: void libpq_append_grease_info(PGconn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/postgres/src/interfaces/libpq/legacy-pqsignal.c:51,1
    - Dst: sigaction
      Src: /src/postgres/src/interfaces/libpq/legacy-pqsignal.c:59,1
    - Dst: signal
      Src: /src/postgres/src/interfaces/libpq/legacy-pqsignal.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - signo
    - func
    argTypes:
    - int
    - pqsigfunc_legacy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 65
    functionName: pqsignal
    functionSourceFile: /src/postgres/src/interfaces/libpq/legacy-pqsignal.c
    functionUses: 21
    functionsReached:
    - sigaction
    - sigemptyset
    - signal
    linkageType: ''
    returnType: pqsigfunc_legacy
    signature: pqsigfunc_legacy pqsignal(int signo, pqsigfunc_legacy func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 748
    functionDepth: 0
    functionLinenumber: 748
    functionLinenumberEnd: 749
    functionName: pglock_thread
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pglock_thread()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 750
    functionName: pgunlock_thread
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgunlock_thread()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 936
    functionName: pqClearConnErrorState
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pqClearConnErrorState(conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 942
    functionDepth: 0
    functionLinenumber: 942
    functionLinenumberEnd: 944
    functionName: pgHavePendingResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgHavePendingResult(conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 950
    functionName: pqIsnonblocking
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pqIsnonblocking(conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 961
    functionName: libpq_gettext
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: libpq_gettext(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - p
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 962
    functionName: libpq_ngettext
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: libpq_ngettext(s, p, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 980
    functionDepth: 0
    functionLinenumber: 980
    functionLinenumberEnd: 981
    functionName: SOCK_ERRNO_SET
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOCK_ERRNO_SET(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 984
    functionDepth: 0
    functionLinenumber: 984
    functionLinenumberEnd: 985
    functionName: SOCK_ERRNO_SET
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOCK_ERRNO_SET(e)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfoParse
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:33,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:36,1
    - Dst: PQconndefaults
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:40,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:43,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:57,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:58,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:70,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:71,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:79,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c:81,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 20
    functionDepth: 3
    functionLinenumber: 20
    functionLinenumberEnd: 84
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/libpq/test/libpq_uri_regress.c
    functionUses: 17
    functionsReached:
    - strcmp
    - PQconndefaults
    - printf
    - PQconninfoParse
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQsslAttribute
      Src: /src/postgres/src/interfaces/libpq/test/libpq_testclient.c:18,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/test/libpq_testclient.c:21,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq/test/libpq_testclient.c:23,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 24
    functionName: print_ssl_library
    functionSourceFile: /src/postgres/src/interfaces/libpq/test/libpq_testclient.c
    functionUses: 0
    functionsReached:
    - PQsslAttribute
    - printf
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_ssl_library(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/test/libpq_testclient.c:29,1
    - Dst: print_ssl_library
      Src: /src/postgres/src/interfaces/libpq/test/libpq_testclient.c:31,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq/test/libpq_testclient.c:35,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 37
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/libpq/test/libpq_testclient.c
    functionUses: 17
    functionsReached:
    - printf
    - print_ssl_library
    - strcmp
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQgetThreadLock
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - gettext_impl
    argTypes:
    - libpq_gettext_func
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: libpq_oauth_init
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 0
    functionsReached:
    - PQgetThreadLock
    linkageType: ''
    returnType: void
    signature: void libpq_oauth_init(libpq_gettext_func gettext_impl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unconstify
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:70,1
    - Dst: libpq_gettext_impl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msgid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 74
    functionName: libpq_gettext
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 45
    functionsReached:
    - libpq_gettext_impl
    - unconstify
    linkageType: ''
    returnType: char
    signature: 'char *

      libpq_gettext(const char *msgid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: SOCK_ERRNO_SET
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOCK_ERRNO_SET(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: SOCK_ERRNO_SET
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOCK_ERRNO_SET(e)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:99,1
    - Dst: sigaddset
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:100,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:103,1
    - Dst: pthread_sigmask
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:103,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:108,1
    - Dst: sigpending
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:111,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:114,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - osigset
    - sigpipe_pending
    argTypes:
    - sigset_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 123
    functionName: pq_block_sigpipe
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 1
    functionsReached:
    - pthread_sigmask
    - sigemptyset
    - sigpending
    - sigismember
    - SOCK_ERRNO_SET
    - sigaddset
    linkageType: ''
    returnType: int
    signature: int pq_block_sigpipe(sigset_t *osigset, bool *sigpipe_pending)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sigpending
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:139,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:140,1
    - Dst: sigemptyset
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:144,1
    - Dst: sigaddset
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:145,1
    - Dst: sigwait
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:147,1
    - Dst: pthread_sigmask
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:152,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:154,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - osigset
    - sigpipe_pending
    - got_epipe
    argTypes:
    - sigset_t*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 155
    functionName: pq_reset_sigpipe
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 1
    functionsReached:
    - pthread_sigmask
    - sigwait
    - sigemptyset
    - sigpending
    - sigismember
    - SOCK_ERRNO_SET
    - sigaddset
    linkageType: ''
    returnType: void
    signature: void pq_reset_sigpipe(sigset_t *osigset, bool sigpipe_pending, bool
      got_epipe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:117,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:118,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:119,1
    - Dst: curl_slist_free_all
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - provider
    argTypes:
    - struct provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 121
    functionName: free_provider
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_slist_free_all
    - free
    linkageType: ''
    returnType: void
    signature: void free_provider(struct provider *provider)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:145,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:146,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:147,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:148,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:149,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - authz
    argTypes:
    - struct device_authz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 151
    functionName: free_device_authz
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free_device_authz(struct device_authz *authz)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:170,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - err
    argTypes:
    - struct token_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: free_token_error
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free_token_error(struct token_error *err)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:196,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:197,1
    - Dst: free_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 199
    functionName: free_token
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - free_token_error
    - free
    linkageType: ''
    returnType: void
    signature: void free_token(struct token *tok)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: curl_multi_remove_handle
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:304,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:307,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:308,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:309,1
    - Dst: curl_easy_cleanup
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:319,1
    - Dst: curl_multi_cleanup
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:324,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:327,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:328,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:329,1
    - Dst: free_provider
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:332,1
    - Dst: free_device_authz
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:333,1
    - Dst: curl_slist_free_all
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:335,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:336,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:337,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:340,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:342,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:344,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:345,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:346,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:348,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 349
    functionName: free_async_ctx
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_multi_remove_handle
    - curl_slist_free_all
    - libpq_gettext
    - free_device_authz
    - curl_multi_strerror
    - curl_easy_cleanup
    - free
    - curl_multi_cleanup
    - close
    - termPQExpBuffer
    - free_provider
    - fprintf
    linkageType: ''
    returnType: void
    signature: void free_async_ctx(struct async_ctx *actx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:360,1
    - Dst: free_async_ctx
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:362,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:368,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:368,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - request
    argTypes:
    - PGconn*
    - PGoauthBearerRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 354
    functionDepth: 3
    functionLinenumber: 354
    functionLinenumberEnd: 372
    functionName: pg_fe_cleanup_oauth_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - free_async_ctx
    - explicit_bzero
    - Assert
    - strlen
    - free
    linkageType: ''
    returnType: void
    signature: void pg_fe_cleanup_oauth_flow(PGconn *conn, PGoauthBearerRequest *request)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:383,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:390,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:392,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:393,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:393,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:395,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:399,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - req
    - actx
    argTypes:
    - PGoauthBearerRequestV2*
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 411
    functionName: append_actx_error
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - libpq_gettext
    - appendPQExpBufferStr
    - resetPQExpBuffer
    - PQExpBufferDataBroken
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void append_actx_error(PGoauthBearerRequestV2 *req, struct async_ctx
      *actx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ACTX
    - ','
    - FMT
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 421
    functionName: actx_error
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: actx_error(ACTX, FMT, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ACTX
    - ','
    - FMT
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 424
    functionName: actx_error_internal
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: actx_error_internal(ACTX, FMT, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ACTX
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 427
    functionName: actx_error_str
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: actx_error_str(ACTX, S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ACTX
    - ','
    - OPT
    - ','
    - VAL
    - ','
    - FAILACTION
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 443
    functionName: CHECK_MSETOPT
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_MSETOPT(ACTX, OPT, VAL, FAILACTION)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ACTX
    - ','
    - OPT
    - ','
    - VAL
    - ','
    - FAILACTION
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 454
    functionName: CHECK_SETOPT
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SETOPT(ACTX, OPT, VAL, FAILACTION)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ACTX
    - ','
    - INFO
    - ','
    - OUT
    - ','
    - FAILACTION
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 465
    functionName: CHECK_GETINFO
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_GETINFO(ACTX, INFO, OUT, FAILACTION)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ctx
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 511
    functionName: oauth_parse_set_error
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: oauth_parse_set_error(ctx, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ctx
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 514
    functionName: oauth_parse_set_error_internal
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: oauth_parse_set_error_internal(ctx, fmt, ...)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:520,1
    - Dst: gettext_noop
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:529,1
    - Dst: gettext_noop
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:533,1
    - Dst: gettext_noop
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:537,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:541,1
    - Dst: gettext_noop
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:542,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:545,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct oauth_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 546
    functionName: report_type_mismatch
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - gettext_noop
    - oauth_parse_set_error
    linkageType: ''
    returnType: void
    signature: void report_type_mismatch(struct oauth_parse *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: report_type_mismatch
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:559,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:566,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 571
    functionName: oauth_json_object_start
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - report_type_mismatch
    - oauth_parse_set_error
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_object_start(void *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:589,1
    - Dst: oauth_parse_set_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:590,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:598,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:618,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - state
    - name
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 626
    functionName: oauth_json_object_field_start
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - oauth_parse_set_error
    - oauth_parse_set_error_internal
    - strcmp
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_object_field_start(void *state, char
      *name, bool isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:641,1
    - Dst: oauth_parse_set_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 649
    functionName: oauth_json_object_end
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - oauth_parse_set_error_internal
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_object_end(void *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:658,1
    - Dst: report_type_mismatch
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:668,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:676,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 681
    functionName: oauth_json_array_start
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - report_type_mismatch
    - oauth_parse_set_error
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_array_start(void *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:697,1
    - Dst: oauth_parse_set_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:698,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 709
    functionName: oauth_json_array_end
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - oauth_parse_set_error_internal
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_array_end(void *state)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:718,1
    - Dst: report_type_mismatch
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:733,1
    - Dst: report_type_mismatch
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:743,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:752,1
    - Dst: oauth_parse_set_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:753,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:762,1
    - Dst: oauth_parse_set_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:763,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:769,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:784,1
    - Dst: oauth_parse_set_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:785,1
    - Dst: curl_slist_append
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:792,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 3
    argNames:
    - state
    - token
    - type
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 711
    functionDepth: 2
    functionLinenumber: 711
    functionLinenumberEnd: 805
    functionName: oauth_json_scalar
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - curl_slist_append
    - oauth_parse_set_error_internal
    - oauth_parse_set_error
    - strdup
    - report_type_mismatch
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType oauth_json_scalar(void *state, char *token, JsonTokenType
      type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:814,1
    - Dst: CHECK_GETINFO
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:817,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:821,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:829,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:833,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:833,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:860,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - actx
    - type
    argTypes:
    - struct async_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 811
    functionDepth: 2
    functionLinenumber: 811
    functionLinenumberEnd: 862
    functionName: check_content_type
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - CHECK_GETINFO
    - pg_strncasecmp
    - strlen
    - actx_error
    linkageType: ''
    returnType: bool
    signature: bool check_content_type(struct async_ctx *actx, const char *type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: check_content_type
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:880,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:883,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:885,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:893,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:895,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:899,1
    - Dst: setJsonLexContextOwnsTokens
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:900,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:913,1
    - Dst: actx_error_str
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:923,1
    - Dst: json_errdetail
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:923,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:935,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:945,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 2
    argNames:
    - actx
    - fields
    argTypes:
    - struct async_ctx*
    - struct json_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 870
    functionDepth: 3
    functionLinenumber: 870
    functionLinenumberEnd: 947
    functionName: parse_oauth_json
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - freeJsonLexContext
    - json_errdetail
    - actx_error
    - pg_encoding_verifymbstr
    - pg_parse_json
    - strlen
    - setJsonLexContextOwnsTokens
    - check_content_type
    - actx_error_str
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: bool
    signature: bool parse_oauth_json(struct async_ctx *actx, const struct json_field
      *fields)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parse_oauth_json
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - actx
    - provider
    argTypes:
    - struct async_ctx*
    - struct provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 957
    functionDepth: 4
    functionLinenumber: 957
    functionLinenumberEnd: 981
    functionName: parse_provider
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - parse_oauth_json
    linkageType: ''
    returnType: bool
    signature: bool parse_provider(struct async_ctx *actx, struct provider *provider)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:998,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1006,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 1011
    functionName: parse_json_number
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - sscanf
    linkageType: ''
    returnType: double
    signature: double parse_json_number(const char *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_json_number
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1028,1
    - Dst: ceil
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1029,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - actx
    - interval_str
    argTypes:
    - struct async_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1023
    functionDepth: 2
    functionLinenumber: 1023
    functionLinenumberEnd: 1038
    functionName: parse_interval
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - ceil
    - parse_json_number
    linkageType: ''
    returnType: int
    signature: int parse_interval(struct async_ctx *actx, const char *interval_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_json_number
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1054,1
    - Dst: floor
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1055,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - actx
    - expires_in_str
    argTypes:
    - struct async_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1049
    functionDepth: 2
    functionLinenumber: 1049
    functionLinenumberEnd: 1063
    functionName: parse_expires_in
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - floor
    - parse_json_number
    linkageType: ''
    returnType: int
    signature: int parse_expires_in(struct async_ctx *actx, const char *expires_in_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_oauth_json
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1094,1
    - Dst: parse_interval
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1102,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1112,1
    - Dst: parse_expires_in
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - actx
    - authz
    argTypes:
    - struct async_ctx*
    - struct device_authz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1068
    functionDepth: 4
    functionLinenumber: 1068
    functionLinenumberEnd: 1116
    functionName: parse_device_authz
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - parse_interval
    - parse_expires_in
    - parse_oauth_json
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool parse_device_authz(struct async_ctx *actx, struct device_authz
      *authz)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_oauth_json
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1134,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - actx
    - err
    argTypes:
    - struct async_ctx*
    - struct token_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1122
    functionDepth: 4
    functionLinenumber: 1122
    functionLinenumberEnd: 1144
    functionName: parse_token_error
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - libpq_gettext
    - parse_oauth_json
    linkageType: ''
    returnType: bool
    signature: bool parse_token_error(struct async_ctx *actx, struct token_error *err)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1154,1
    - Dst: CHECK_GETINFO
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1164,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1168,1
    - Dst: gettext_noop
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1169,1
    - Dst: gettext_noop
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1170,1
    - Dst: actx_error_str
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1171,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - actx
    - err
    argTypes:
    - struct async_ctx*
    - struct token_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1150
    functionDepth: 2
    functionLinenumber: 1150
    functionLinenumberEnd: 1176
    functionName: record_token_error
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - CHECK_GETINFO
    - gettext_noop
    - actx_error
    - actx_error_str
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void record_token_error(struct async_ctx *actx, const struct token_error
      *err)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parse_oauth_json
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - actx
    - tok
    argTypes:
    - struct async_ctx*
    - struct token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1182
    functionDepth: 4
    functionLinenumber: 1182
    functionLinenumberEnd: 1209
    functionName: parse_access_token
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - parse_oauth_json
    linkageType: ''
    returnType: bool
    signature: bool parse_access_token(struct async_ctx *actx, struct token *tok)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: epoll_create1
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1230,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1233,1
    - Dst: timerfd_create
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1237,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1240,1
    - Dst: epoll_ctl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1244,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1246,1
    - Dst: kqueue
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1252,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1255,1
    - Dst: kqueue
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1265,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1268,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1224
    functionDepth: 1
    functionLinenumber: 1224
    functionLinenumberEnd: 1276
    functionName: setup_multiplexer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - kqueue
    - epoll_create1
    - epoll_ctl
    - actx_error_internal
    - timerfd_create
    linkageType: ''
    returnType: bool
    signature: bool setup_multiplexer(struct async_ctx *actx)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1312,1
    - Dst: epoll_ctl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1316,1
    - Dst: epoll_ctl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1321,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1329,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1333,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1337,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1359,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1361,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1366,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1368,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1373,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1375,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1380,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1382,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1387,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1391,1
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1391,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1392,1
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1392,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1394,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1397,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1413,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1421,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1424,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 88
    argCount: 5
    argNames:
    - curl
    - socket
    - what
    - ctx
    - socketp
    argTypes:
    - CURL*
    - curl_socket_t
    - int
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1282
    functionDepth: 1
    functionLinenumber: 1282
    functionLinenumberEnd: 1434
    functionName: register_socket
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - kevent
    - epoll_ctl
    - actx_error_internal
    - EV_SET
    - Assert
    - lengthof
    linkageType: ''
    returnType: int
    signature: "int register_socket(CURL *curl, curl_socket_t socket, int what, void
      *ctx,\n\t\t\t\tvoid *socketp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1471,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1448
    functionDepth: 1
    functionLinenumber: 1448
    functionLinenumberEnd: 1481
    functionName: comb_multiplexer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - actx_error_internal
    - kevent
    linkageType: ''
    returnType: bool
    signature: bool comb_multiplexer(struct async_ctx *actx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: timerfd_settime
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1521,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1523,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1550,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1551,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1553,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1557,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1558,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1560,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1568,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1569,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1571,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1575,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1576,1
    - Dst: actx_error_internal
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1578,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - actx
    - timeout
    argTypes:
    - struct async_ctx*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1496
    functionDepth: 1
    functionLinenumber: 1496
    functionLinenumberEnd: 1586
    functionName: set_timer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - timerfd_settime
    - actx_error_internal
    - EV_SET
    - kevent
    linkageType: ''
    returnType: bool
    signature: bool set_timer(struct async_ctx *actx, long timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQsocketPoll
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1600,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1603,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1593
    functionDepth: 2
    functionLinenumber: 1593
    functionLinenumberEnd: 1611
    functionName: timer_expired
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - actx_error
    - PQsocketPoll
    linkageType: ''
    returnType: int
    signature: int timer_expired(struct async_ctx *actx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - curlm
    - timeout
    - ctx
    argTypes:
    - CURLM*
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1617
    functionDepth: 2
    functionLinenumber: 1617
    functionLinenumberEnd: 1633
    functionName: register_timer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - set_timer
    linkageType: ''
    returnType: int
    signature: int register_timer(CURLM *curlm, long timeout, void *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1644,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1655,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - actx
    - was_expired
    argTypes:
    - struct async_ctx*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1639
    functionDepth: 3
    functionLinenumber: 1639
    functionLinenumberEnd: 1663
    functionName: drain_timer_events
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - timer_expired
    - set_timer
    linkageType: ''
    returnType: bool
    signature: bool drain_timer_events(struct async_ctx *actx, bool *was_expired)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1700,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1713,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1718,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1730,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1734,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1740,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1742,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1743,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 5
    argNames:
    - handle
    - type
    - data
    - size
    - clientp
    argTypes:
    - CURL*
    - curl_infotype
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1671
    functionDepth: 4
    functionLinenumber: 1671
    functionLinenumberEnd: 1745
    functionName: debug_callback
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - initPQExpBuffer
    - appendPQExpBufferChar
    - termPQExpBuffer
    - appendPQExpBuffer
    - fprintf
    linkageType: ''
    returnType: int
    signature: "int debug_callback(CURL *handle, curl_infotype type, char *data, size_t
      size,\n\t\t\t   void *clientp)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: curl_multi_init
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1761,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1765,1
    - Dst: curl_easy_init
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1782,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1785,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1804,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1814,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1817,1
    - Dst: CURL_AT_LEAST_VERSION
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1828,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1846,1
    - Dst: curl_slist_append
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1854,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1857,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1860,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1863
      start: 1754
    functionDepth: 1
    functionLinenumber: 1754
    functionLinenumberEnd: 1863
    functionName: setup_curl_handles
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_multi_init
    - curl_slist_append
    - CHECK_SETOPT
    - curl_easy_init
    - actx_error
    - CURL_AT_LEAST_VERSION
    linkageType: ''
    returnType: bool
    signature: bool setup_curl_handles(struct async_ctx *actx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1885,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1890,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1896,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1898,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - buf
    - size
    - nmemb
    - userdata
    argTypes:
    - char*
    - size_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1875
    functionDepth: 4
    functionLinenumber: 1875
    functionLinenumberEnd: 1903
    functionName: append_data
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - actx_error
    - appendBinaryPQExpBuffer
    - PQExpBufferBroken
    linkageType: ''
    returnType: size_t
    signature: size_t append_data(char *buf, size_t size, size_t nmemb, void *userdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1920,1
    - Dst: curl_multi_add_handle
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1924,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1927,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1928,1
    - Dst: curl_multi_socket_action
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1941,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1944,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1945,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1915
    functionDepth: 3
    functionLinenumber: 1915
    functionLinenumberEnd: 1950
    functionName: start_request
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_multi_strerror
    - resetPQExpBuffer
    - actx_error
    - curl_multi_add_handle
    - curl_multi_socket_action
    linkageType: ''
    returnType: bool
    signature: bool start_request(struct async_ctx *actx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1957
    functionDepth: 0
    functionLinenumber: 1957
    functionLinenumberEnd: 1958
    functionName: CURL_IGNORE_DEPRECATION
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CURL_IGNORE_DEPRECATION(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1964
    functionDepth: 0
    functionLinenumber: 1964
    functionLinenumberEnd: 1965
    functionName: PG_CURL_IGNORE_DEPRECATION
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_CURL_IGNORE_DEPRECATION(x)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_CURL_IGNORE_DEPRECATION
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1996,1
    - Dst: curl_multi_socket_all
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1997,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2002,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2003,1
    - Dst: curl_multi_info_read
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2015,1
    - Dst: actx_error_str
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2034,1
    - Dst: curl_easy_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2034,1
    - Dst: curl_multi_remove_handle
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2040,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2043,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2044,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2054,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 1970
    functionDepth: 1
    functionLinenumber: 1970
    functionLinenumberEnd: 2059
    functionName: drive_request
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_multi_remove_handle
    - PG_CURL_IGNORE_DEPRECATION
    - curl_multi_strerror
    - curl_easy_strerror
    - actx_error
    - curl_multi_info_read
    - actx_error_str
    - curl_multi_socket_all
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType drive_request(struct async_ctx *actx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: curl_easy_escape
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2077,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2080,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2092,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2095,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2096,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2103,1
    - Dst: curl_free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - buf
    - s
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2106
      start: 2069
    functionDepth: 4
    functionLinenumber: 2069
    functionLinenumberEnd: 2106
    functionName: append_urlencoded
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - appendBinaryPQExpBuffer
    - strstr
    - curl_free
    - curl_easy_escape
    - appendPQExpBufferChar
    - termPQExpBuffer
    - appendPQExpBufferStr
    linkageType: ''
    returnType: void
    signature: void append_urlencoded(PQExpBuffer buf, const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2117,1
    - Dst: append_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2118,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2121
      start: 2112
    functionDepth: 5
    functionLinenumber: 2112
    functionLinenumberEnd: 2121
    functionName: urlencode
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - append_urlencoded
    - PQExpBufferDataBroken
    - initPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      urlencode(const char *s)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2131,1
    - Dst: append_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2133,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2134,1
    - Dst: append_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - key
    - value
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2136
      start: 2127
    functionDepth: 5
    functionLinenumber: 2127
    functionLinenumberEnd: 2136
    functionName: build_urlencoded
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - append_urlencoded
    linkageType: ''
    returnType: void
    signature: void build_urlencoded(PQExpBuffer buf, const char *key, const char
      *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2159,1
    - Dst: start_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - actx
    - discovery_uri
    argTypes:
    - struct async_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2156
    functionDepth: 4
    functionLinenumber: 2156
    functionLinenumberEnd: 2163
    functionName: start_discovery
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - start_request
    - CHECK_SETOPT
    linkageType: ''
    returnType: bool
    signature: bool start_discovery(struct async_ctx *actx, const char *discovery_uri)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_GETINFO
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2183,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2187,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2194,1
    - Dst: parse_provider
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2195,1
    - Dst: curl_slist_append
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2208,1
    - Dst: curl_slist_append
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2211,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2224
      start: 2165
    functionDepth: 5
    functionLinenumber: 2165
    functionLinenumberEnd: 2224
    functionName: finish_discovery
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_slist_append
    - libpq_gettext
    - CHECK_GETINFO
    - parse_provider
    - actx_error
    linkageType: ''
    returnType: bool
    signature: bool finish_discovery(struct async_ctx *actx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2236,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2237,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2256,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - actx
    - conn
    argTypes:
    - struct async_ctx*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2265
      start: 2230
    functionDepth: 1
    functionLinenumber: 2230
    functionLinenumberEnd: 2265
    functionName: check_issuer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - actx_error
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool check_issuer(struct async_ctx *actx, PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2280,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2281,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2285,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2308,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2309,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2311,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2317,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2318,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2320,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2328
      start: 2275
    functionDepth: 2
    functionLinenumber: 2275
    functionLinenumberEnd: 2328
    functionName: check_for_device_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - actx_error
    - strlen
    - pg_strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool check_for_device_flow(struct async_ctx *actx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: urlencode
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2372,1
    - Dst: urlencode
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2373,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2377,1
    - Dst: build_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2393,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2402,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - actx
    - reqbody
    - conn
    argTypes:
    - struct async_ctx*
    - PQExpBuffer
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2406
      start: 2334
    functionDepth: 6
    functionLinenumber: 2334
    functionLinenumberEnd: 2406
    functionName: add_client_identification
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - urlencode
    - actx_error
    - free
    - build_urlencoded
    linkageType: ''
    returnType: bool
    signature: bool add_client_identification(struct async_ctx *actx, PQExpBuffer
      reqbody, PGconn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2425,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2428,1
    - Dst: build_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2430,1
    - Dst: add_client_identification
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2432,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2435,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2437,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2443,1
    - Dst: start_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2445,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - actx
    - conn
    argTypes:
    - struct async_ctx*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2446
      start: 2418
    functionDepth: 7
    functionLinenumber: 2418
    functionLinenumberEnd: 2446
    functionName: start_device_authz
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - start_request
    - Assert
    - actx_error
    - CHECK_SETOPT
    - resetPQExpBuffer
    - add_client_identification
    - PQExpBufferBroken
    - build_urlencoded
    linkageType: ''
    returnType: bool
    signature: bool start_device_authz(struct async_ctx *actx, PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_GETINFO
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2453,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2461,1
    - Dst: parse_device_authz
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2462,1
    - Dst: parse_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2478,1
    - Dst: free_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2480,1
    - Dst: record_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2485,1
    - Dst: free_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2487,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2492,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2448
    functionDepth: 5
    functionLinenumber: 2448
    functionLinenumberEnd: 2494
    functionName: finish_device_authz
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - parse_token_error
    - record_token_error
    - free_token_error
    - libpq_gettext
    - CHECK_GETINFO
    - parse_device_authz
    - actx_error
    linkageType: ''
    returnType: bool
    signature: bool finish_device_authz(struct async_ctx *actx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2512,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2513,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2516,1
    - Dst: build_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2517,1
    - Dst: build_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2518,1
    - Dst: add_client_identification
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2520,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2523,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2525,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2531,1
    - Dst: start_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - actx
    - conn
    argTypes:
    - struct async_ctx*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2534
      start: 2505
    functionDepth: 7
    functionLinenumber: 2505
    functionLinenumberEnd: 2534
    functionName: start_token_request
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - start_request
    - Assert
    - actx_error
    - CHECK_SETOPT
    - resetPQExpBuffer
    - add_client_identification
    - PQExpBufferBroken
    - build_urlencoded
    linkageType: ''
    returnType: bool
    signature: bool start_token_request(struct async_ctx *actx, PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_GETINFO
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2541,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2548,1
    - Dst: parse_access_token
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2549,1
    - Dst: parse_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2563,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2570,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - actx
    - tok
    argTypes:
    - struct async_ctx*
    - struct token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2572
      start: 2536
    functionDepth: 5
    functionLinenumber: 2536
    functionLinenumberEnd: 2572
    functionName: finish_token_request
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - parse_token_error
    - parse_access_token
    - libpq_gettext
    - CHECK_GETINFO
    - actx_error
    linkageType: ''
    returnType: bool
    signature: bool finish_token_request(struct async_ctx *actx, struct token *tok)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: finish_token_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2590,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2594,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2610,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2611,1
    - Dst: record_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2613,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2621,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2628,1
    - Dst: free_token
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2636,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - actx
    - token
    argTypes:
    - struct async_ctx*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2638
      start: 2583
    functionDepth: 6
    functionLinenumber: 2583
    functionLinenumberEnd: 2638
    functionName: handle_token_response
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - finish_token_request
    - record_token_error
    - strcmp
    - Assert
    - free_token
    - actx_error
    linkageType: ''
    returnType: bool
    signature: bool handle_token_response(struct async_ctx *actx, char **token)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQgetAuthDataHook
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2654,1
    - Dst: hook
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2656,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2664,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2664,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2669,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - actx
    - conn
    argTypes:
    - struct async_ctx*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2674
      start: 2644
    functionDepth: 1
    functionLinenumber: 2644
    functionLinenumberEnd: 2674
    functionName: prompt_user
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - hook
    - libpq_gettext
    - PQgetAuthDataHook
    - actx_error
    - fprintf
    linkageType: ''
    returnType: bool
    signature: bool prompt_user(struct async_ctx *actx, PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pglock_thread
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2710,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2722,1
    - Dst: curl_global_init
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2738,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2740,1
    - Dst: curl_version_info
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2745,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2762,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2783,1
    - Dst: pgunlock_thread
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2792,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - req
    - debug_flags
    argTypes:
    - PGoauthBearerRequestV2*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2795
      start: 2689
    functionDepth: 0
    functionLinenumber: 2689
    functionLinenumberEnd: 2795
    functionName: initialize_curl
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_version_info
    - libpq_gettext
    - pgunlock_thread
    - curl_global_init
    - pglock_thread
    - fprintf
    linkageType: ''
    returnType: bool
    signature: bool initialize_curl(PGoauthBearerRequestV2 *req, uint32 debug_flags)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: drain_timer_events
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2846,1
    - Dst: drive_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2850,1
    - Dst: comb_multiplexer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2865,1
    - Dst: drain_timer_events
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2881,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2902,1
    - Dst: start_discovery
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2903,1
    - Dst: finish_discovery
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2910,1
    - Dst: check_issuer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2913,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2916,1
    - Dst: check_for_device_flow
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2917,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2920,1
    - Dst: start_device_authz
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2921,1
    - Dst: finish_device_authz
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2928,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2931,1
    - Dst: start_token_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2932,1
    - Dst: handle_token_response
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2939,1
    - Dst: prompt_user
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2954,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2967,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2982,1
    - Dst: start_token_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2983,1
    - Dst: append_actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3001,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 103
    argCount: 3
    argNames:
    - conn
    - request
    - altsock
    argTypes:
    - PGconn*
    - PGoauthBearerRequestV2*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3004
      start: 2811
    functionDepth: 8
    functionLinenumber: 2811
    functionLinenumberEnd: 3004
    functionName: pg_fe_run_oauth_flow_impl
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - start_device_authz
    - comb_multiplexer
    - drive_request
    - finish_discovery
    - check_for_device_flow
    - finish_device_authz
    - libpq_gettext
    - drain_timer_events
    - start_token_request
    - prompt_user
    - set_timer
    - append_actx_error
    - check_issuer
    - handle_token_response
    - start_discovery
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: "PostgresPollingStatusType pg_fe_run_oauth_flow_impl(PGconn *conn,
      PGoauthBearerRequestV2 *request,\n\t\t\t\t\t\t  int *altsock)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pq_block_sigpipe
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3039,1
    - Dst: pg_fe_run_oauth_flow_impl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3042,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3055,1
    - Dst: pq_reset_sigpipe
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3066,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - conn
    - request
    - altsock
    argTypes:
    - PGconn*
    - struct PGoauthBearerRequest*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3010
    functionDepth: 9
    functionLinenumber: 3010
    functionLinenumberEnd: 3071
    functionName: pg_fe_run_oauth_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - pq_reset_sigpipe
    - pg_fe_run_oauth_flow_impl
    - pq_block_sigpipe
    - fprintf
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: "PostgresPollingStatusType pg_fe_run_oauth_flow(PGconn *conn, struct
      PGoauthBearerRequest *request,\n\t\t\t\t\t int *altsock)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: oauth_parse_debug_flags
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3085,1
    - Dst: initialize_curl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3087,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3095,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3116,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3117,1
    - Dst: PQconninfo
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3120,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3129,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3131,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3135,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3137,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3141,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3143,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3149,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3156,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3157,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3158,1
    - Dst: setup_multiplexer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3160,1
    - Dst: append_actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3162,1
    - Dst: setup_curl_handles
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3166,1
    - Dst: append_actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3168,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3176,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:3178,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 65
    argCount: 2
    argNames:
    - conn
    - request
    argTypes:
    - PGconn*
    - PGoauthBearerRequestV2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3180
      start: 3077
    functionDepth: 4
    functionLinenumber: 3077
    functionLinenumberEnd: 3180
    functionName: pg_start_oauthbearer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 1
    functionsReached:
    - setup_multiplexer
    - initialize_curl
    - PQconninfoFree
    - strcmp
    - Assert
    - oauth_parse_debug_flags
    - libpq_gettext
    - setup_curl_handles
    - initPQExpBuffer
    - strdup
    - append_actx_error
    - PQconninfo
    - calloc
    linkageType: ''
    returnType: int
    signature: int pg_start_oauthbearer(PGconn *conn, PGoauthBearerRequestV2 *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - OK
    - ','
    - TEST
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: ok
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 57
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ok(OK, TEST)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:34,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:38,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - ok
    - test
    - teststr
    - file
    - line
    argTypes:
    - bool
    - char*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 43
    functionName: ok_impl
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: bool
    signature: bool ok_impl(bool ok, const char *test, const char *teststr, const
      char *file, int line)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - THIS
    - ','
    - THAT
    - ','
    - TEST
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: is
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is(THIS, THAT, TEST)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - ok
    - this
    - thisstr
    - that
    - thatstr
    argTypes:
    - bool
    - int
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 72
    functionName: is_diag
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: bool
    signature: bool is_diag(bool ok, int this, const char *thisstr, int that, const
      char *thatstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:87,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:88,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:94,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:96,1
    - Dst: setup_multiplexer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 99
    functionName: init_test_actx
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - calloc
    - initPQExpBuffer
    - setup_multiplexer
    linkageType: ''
    returnType: struct async_ctx
    signature: 'struct async_ctx *

      init_test_actx(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:104,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:107,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:109,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 112
    functionName: free_test_actx
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - free
    - close
    linkageType: ''
    returnType: void
    signature: void free_test_actx(struct async_ctx *actx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:127,1
    - Dst: fcntl
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:127,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:128,1
    - Dst: fcntl
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:128,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:134,1
    - Dst: perror
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:139,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:149,1
    - Dst: fcntl
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 152
    functionName: fill_pipe
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - fcntl
    - write
    - perror
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fill_pipe(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:160,1
    - Dst: read
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:167,1
    - Dst: perror
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fd
    - n
    argTypes:
    - int
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 178
    functionName: drain_pipe
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - perror
    - read
    linkageType: ''
    returnType: bool
    signature: bool drain_pipe(int fd, ssize_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MUX
    - ','
    - DEADLINE
    - ','
    - TEST
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: mux_is_ready
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mux_is_ready(MUX, DEADLINE, TEST)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MUX
    - ','
    - TEST
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 206
    functionName: mux_is_not_ready
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mux_is_not_ready(MUX, TEST)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_test_actx
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:217,1
    - Dst: PQgetCurrentTimeUSec
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:218,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:220,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:223,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:223,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:224,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:225,1
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:225,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:228,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:228,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:229,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:230,1
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:230,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:233,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:233,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:234,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:235,1
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:235,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:238,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:238,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:239,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:240,1
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:240,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:246,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:246,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:247,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:249,1
    - Dst: drain_timer_events
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:249,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:250,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:251,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:252,1
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:255,1
    - Dst: drain_timer_events
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:255,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:256,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:257,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:258,1
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:258,1
    - Dst: free_test_actx
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 214
    functionDepth: 4
    functionLinenumber: 214
    functionLinenumberEnd: 262
    functionName: test_set_timer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached:
    - mux_is_not_ready
    - Assert
    - init_test_actx
    - timer_expired
    - free_test_actx
    - drain_timer_events
    - set_timer
    - PQgetCurrentTimeUSec
    - printf
    - mux_is_ready
    - is
    linkageType: ''
    returnType: void
    signature: void test_set_timer(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: init_test_actx
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:267,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:274,1
    - Dst: pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:274,1
    - Dst: PQsocketPoll
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:282,1
    - Dst: PQgetCurrentTimeUSec
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:293,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:296,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:303,1
    - Dst: PQsocketPoll
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:303,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:304,1
    - Dst: PQsocketPoll
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:304,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:311,1
    - Dst: fill_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:311,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:314,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:314,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:315,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:318,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:318,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:325,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:325,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:326,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:329,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:329,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:330,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:333,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:333,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:337,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:337,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:338,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:344,1
    - Dst: drain_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:344,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:345,1
    - Dst: comb_multiplexer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:345,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:346,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:350,1
    - Dst: drain_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:350,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:353,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:353,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:354,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:354,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:358,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:358,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:359,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:362,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:362,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:363,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:372,1
    - Dst: fill_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:372,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:375,1
    - Dst: comb_multiplexer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:375,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:376,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:379,1
    - Dst: drain_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:379,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:380,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:384,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:384,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:385,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:393,1
    - Dst: fill_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:393,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:396,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:396,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:397,1
    - Dst: PQsocketPoll
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:397,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:398,1
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:398,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:401,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:401,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:402,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:402,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:403,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:414,1
    - Dst: drain_timer_events
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:415,1
    - Dst: drain_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:415,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:416,1
    - Dst: comb_multiplexer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:416,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:418,1
    - Dst: is
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:419,1
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:419,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:420,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:423,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:423,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:427,1
    - Dst: drain_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:427,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:436,1
    - Dst: pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:436,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:443,1
    - Dst: fill_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:443,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:444,1
    - Dst: fill_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:444,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:448,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:448,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:449,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:449,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:451,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:451,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:452,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:452,1
    - Dst: mux_is_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:454,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:460,1
    - Dst: drain_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:460,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:461,1
    - Dst: drain_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:461,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:462,1
    - Dst: comb_multiplexer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:462,1
    - Dst: mux_is_not_ready
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:463,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:466,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:466,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:467,1
    - Dst: register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:467,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:472,1
    - Dst: drain_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:472,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:473,1
    - Dst: drain_pipe
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:473,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:476,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:477,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:481,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:482,1
    - Dst: free_test_actx
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:483,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 91
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 264
    functionDepth: 4
    functionLinenumber: 264
    functionLinenumberEnd: 484
    functionName: test_register_socket
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 0
    functionsReached:
    - set_timer
    - PQgetCurrentTimeUSec
    - printf
    - mux_is_ready
    - drain_pipe
    - PQsocketPoll
    - Assert
    - init_test_actx
    - write
    - free_test_actx
    - fill_pipe
    - mux_is_not_ready
    - comb_multiplexer
    - is
    - pipe
    - timer_expired
    - drain_timer_events
    - register_socket
    - close
    linkageType: ''
    returnType: void
    signature: void test_register_socket(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:492,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:495,1
    - Dst: setvbuf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:505,1
    - Dst: test_set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:507,1
    - Dst: test_register_socket
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:508,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 486
    functionDepth: 5
    functionLinenumber: 486
    functionLinenumberEnd: 512
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 17
    functionsReached:
    - test_set_timer
    - test_register_socket
    - atoi
    - getenv
    - printf
    - setvbuf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c:522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 525
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/test-oauth-curl.c
    functionUses: 17
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: libpq_gettext
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.h
    functionUses: 55
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: libpq_gettext(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: pglock_thread
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pglock_thread()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: pgunlock_thread
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pgunlock_thread()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/printf_hack.h:13,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/printf_hack.h:14,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/printf_hack.h:25,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/printf_hack.h:27,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 29
    functionName: print_double
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/printf_hack.h
    functionUses: 0
    functionsReached:
    - strlen
    - printf
    - sprintf
    linkageType: ''
    returnType: void
    signature: void print_double(double x)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:40,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:43,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:44,1
    - Dst: fopen
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:46,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:49,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:50,1
    - Dst: initStringInfo
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:53,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:55,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:58,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:60,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:63,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:70,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:70,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:74,1
    - Dst: pfree
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:77,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:78,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:79,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - sourcefile
    - outfile
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 80
    functionName: ecpg_filter_source
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c
    functionUses: 0
    functionsReached:
    - pg_get_line_buf
    - strchr
    - pfree
    - fopen
    - initStringInfo
    - memmove
    - strstr
    - fputs
    - fclose
    - strlen
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void ecpg_filter_source(const char *sourcefile, const char *outfile)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:99,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:102,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:103,1
    - Dst: fopen
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:105,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:108,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:109,1
    - Dst: initStringInfo
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:112,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:114,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:116,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:120,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:124,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:124,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:128,1
    - Dst: pfree
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:131,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:132,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:133,1
    - Dst: rename
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:134,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:136,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:138,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - resultfile
    - tmpfile
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 140
    functionName: ecpg_filter_stderr
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c
    functionUses: 0
    functionsReached:
    - rename
    - pg_get_line_buf
    - pfree
    - fopen
    - initStringInfo
    - memmove
    - strstr
    - fputs
    - fclose
    - strlen
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void ecpg_filter_stderr(const char *resultfile, const char *tmpfile)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:166,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:167,1
    - Dst: initStringInfo
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:170,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:171,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:178,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:181,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:184,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:188,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:191,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:194,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:198,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:199,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:200,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:202,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:203,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:204,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:206,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:207,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:208,1
    - Dst: ecpg_filter_source
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:210,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:212,1
    - Dst: psprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:218,1
    - Dst: setenv
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:219,1
    - Dst: pfree
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:220,1
    - Dst: spawn_process
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:222,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:226,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:226,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:228,1
    - Dst: unsetenv
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:231,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:233,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 4
    argNames:
    - testname
    - resultfiles
    - expectfiles
    - tags
    argTypes:
    - char*
    - _stringlist**
    - _stringlist**
    - _stringlist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 147
    functionDepth: 4
    functionLinenumber: 147
    functionLinenumberEnd: 236
    functionName: ecpg_start_test
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c
    functionUses: 0
    functionsReached:
    - fprintf
    - setenv
    - spawn_process
    - _
    - pfree
    - appendStringInfoString
    - initStringInfo
    - psprintf
    - unsetenv
    - add_stringlist_item
    - free
    - exit
    - ecpg_filter_source
    - snprintf
    linkageType: ''
    returnType: PID_TYPE
    signature: "PID_TYPE ecpg_start_test(const char *testname,\n\t\t\t\t_stringlist
      **resultfiles,\n\t\t\t\t_stringlist **expectfiles,\n\t\t\t\t_stringlist **tags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:241,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:244,1
    - Dst: psprintf
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:246,1
    - Dst: ecpg_filter_stderr
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:248,1
    - Dst: pfree
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 238
    functionDepth: 4
    functionLinenumber: 238
    functionLinenumberEnd: 251
    functionName: ecpg_postprocess_result
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c
    functionUses: 0
    functionsReached:
    - ecpg_filter_stderr
    - strcmp
    - pfree
    - psprintf
    - strlen
    linkageType: ''
    returnType: void
    signature: void ecpg_postprocess_result(const char *filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 257
    functionName: ecpg_init
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ecpg_init(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regression_main
      Src: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 6
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/pg_regress_ecpg.c
    functionUses: 18
    functionsReached:
    - regression_main
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:142,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:144,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:147,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:150,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:153,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:158,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:163,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:166,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:169,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:172,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:175,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 180
    functionName: fn
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c
    functionUses: 20
    functionsReached:
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - free
    - ECPGdisconnect
    - sprintf
    - ECPGconnect
    linkageType: ''
    returnType: void
    signature: void * fn(void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _beginthreadex
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:195,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:198,1
    - Dst: CloseHandle
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:200,1
    - Dst: pthread_create
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:203,1
    - Dst: pthread_join
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c:205,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 209
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-alloc.c
    functionUses: 18
    functionsReached:
    - CloseHandle
    - WaitForMultipleObjects
    - _beginthreadex
    - pthread_join
    - pthread_create
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:60,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:62,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:63,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:66,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:70,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:71,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:74,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:78,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:79,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:82,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:85,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:88,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:91,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:94,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:97,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:100,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:108,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:111,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:127,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:143,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:154,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:158,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:159,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c:163,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 164
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever_do_continue.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGdebug
    - printf
    - exit
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:69,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:71,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:74,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:77,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:80,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:84,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:89,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:92,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:98,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:102,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:105,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:109,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:112,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:115,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:118,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:121,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:124,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:127,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:130,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:133,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:136,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:140,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:145,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:149,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:150,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:154,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:157,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:163,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:167,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:172,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:176,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:177,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:181,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:184,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:185,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:190,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:194,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:199,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:203,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:206,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:210,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:215,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:218,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:224,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:228,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:235,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:239,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:244,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:247,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:252,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:253,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:259,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:263,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:270,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:273,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:276,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:279,1
    - Dst: ECPGset_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:283,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:287,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:290,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:291,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:295,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:302,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:303,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:309,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:313,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:320,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:323,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:325,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:328,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:332,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:339,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:342,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:344,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:347,1
    - Dst: ECPGdeallocate_all
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:350,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:353,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:356,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:359,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:363,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:366,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:369,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c:372,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 147
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 377
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-desc.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGset_desc
    - ECPGprepared_statement
    - ECPGset_desc_header
    - sqlprint
    - ECPGprepare
    - ECPGdeallocate
    - ECPGdeallocate_all
    - ECPGallocate_desc
    - ECPGdebug
    - strlen
    - printf
    - ECPGdisconnect
    - ECPGdeallocate_desc
    - ECPGget_desc
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:47,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:49,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:50,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:53,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:58,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:63,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:68,1
    - Dst: ECPGsetconn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:74,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:77,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:84,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:87,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:94,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 104
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test2.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGsetconn
    - ECPGdebug
    - ECPGdisconnect
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:101,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:103,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:106,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:109,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:112,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:115,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:118,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:121,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:124,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:127,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:130,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:134,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:137,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:140,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:142,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c:145,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 150
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-copystdout.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:37,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:39,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:42,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:45,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:49,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:52,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:56,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:59,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:66,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:69,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:73,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:76,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:80,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:81,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:82,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:85,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:89,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:92,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:96,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:99,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:104,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:107,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:112,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 124
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test1.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGdebug
    - ECPGdisconnect
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: dosqlprint
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void dosqlprint(void)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:53,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:58,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:61,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:64,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:66,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:69,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:74,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:75,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:80,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:83,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:86,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:91,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:94,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:97,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:98,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:101,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:105,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:110,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:113,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:116,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:121,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:124,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:127,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:130,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:135,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:138,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:141,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:142,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:145,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:150,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:154,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:159,1
    - Dst: openit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:160,1
    - Dst: deccvint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:162,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:166,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:175,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:180,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:181,1
    - Dst: dectoint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:186,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:187,1
    - Dst: deccvint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:191,1
    - Dst: deccvint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:192,1
    - Dst: decadd
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:193,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:194,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:199,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:202,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:204,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:207,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:210,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:212,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:215,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:218,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:220,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:223,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:226,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:229,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:232,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:235,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:239,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:242,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 112
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 247
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c
    functionUses: 18
    functionsReached:
    - openit
    - decadd
    - ECPGtrans
    - ECPGdo
    - risnull
    - ECPGset_var
    - dosqlprint
    - ECPGdebug
    - deccvint
    - printf
    - dectoint
    - ECPGdisconnect
    - rsetnull
    - exit
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:251,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:252,1
    - Dst: dosqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 259
    functionName: openit
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix.c
    functionUses: 1
    functionsReached:
    - dosqlprint
    - ECPGget_var
    - ECPGdo
    linkageType: ''
    returnType: void
    signature: void openit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 50
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:66,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:68,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:69,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:72,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:76,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:77,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:80,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:84,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:85,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:88,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:92,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:93,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:96,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:99,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:102,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:105,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:108,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:111,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:114,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:118,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:119,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:122,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:131,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:132,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:135,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:138,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:141,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:144,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:147,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:150,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:153,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:157,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:158,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:161,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:165,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:166,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:171,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:176,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:181,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:187,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:188,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:192,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:195,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:199,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:202,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:206,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:209,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:213,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:218,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:222,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:227,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:230,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:235,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:238,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:243,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:246,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:251,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:254,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:258,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:259,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:262,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:265,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:268,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:271,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:274,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:277,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:280,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:284,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:287,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:293,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:294,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:297,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:300,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:303,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:306,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:309,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:312,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:315,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:319,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:320,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:323,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:327,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:328,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:333,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:338,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:343,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:349,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:350,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:354,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:357,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:361,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:364,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:368,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:371,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:375,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:380,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:384,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:389,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:392,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:397,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:400,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:405,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:408,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:413,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:416,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:420,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:421,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:424,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:427,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:430,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:433,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:436,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:439,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:442,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:446,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:449,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:456,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:457,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:460,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:464,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:465,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:468,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:472,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:473,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c:476,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 219
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 481
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-describe.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGget_desc_header
    - ECPGprepare
    - ECPGdeallocate
    - ECPGallocate_desc
    - ECPGdebug
    - ECPGdeallocate_desc
    - printf
    - ECPGdescribe
    - ECPGdisconnect
    - ECPGget_desc
    - exit
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:35,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:36,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:47,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:50,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:53,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:57,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:60,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:63,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:66,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:69,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:72,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:75,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:80,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:83,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:87,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:92,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:95,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:98,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:101,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:104,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:107,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:110,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:113,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:117,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:124,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:127,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:131,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:132,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:134,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:137,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c:140,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 145
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-insupd.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:137,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:144,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:149,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:152,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:155,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:158,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:162,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:168,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:169,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:170,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - sqlda
    argTypes:
    - sqlda_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 175
    functionName: dump_sqlda
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c
    functionUses: 0
    functionsReached:
    - PGTYPESchar_free
    - printf
    - PGTYPESnumeric_to_asc
    linkageType: ''
    returnType: void
    signature: void dump_sqlda(sqlda_t *sqlda)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:203,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:205,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:206,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:209,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:213,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:214,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:217,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:221,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:222,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:225,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:229,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:230,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:233,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:237,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:238,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:241,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:249,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:250,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:253,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:257,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:262,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:263,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:264,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:268,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:279,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:280,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:288,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:292,1
    - Dst: dump_sqlda
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:293,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:300,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:301,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:304,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:308,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:309,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:312,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:316,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:322,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:323,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:326,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:330,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:335,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:336,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:337,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:341,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:345,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:346,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:351,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:360,1
    - Dst: dump_sqlda
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:361,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:365,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:368,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:369,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:372,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:376,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:377,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:380,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:390,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:391,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:397,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:403,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:404,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:407,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:411,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:412,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:419,1
    - Dst: dump_sqlda
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:423,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:425,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:426,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:429,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:433,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:434,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:440,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:443,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:451,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:452,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:458,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:464,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:465,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:468,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:472,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:473,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:480,1
    - Dst: dump_sqlda
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:484,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:486,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:487,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:490,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:494,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:495,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:498,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:502,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:503,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:505,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:506,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:509,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:515,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:516,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:519,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:523,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:524,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:527,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:531,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:532,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c:535,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 180
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 540
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlda.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGprepared_statement
    - dump_sqlda
    - ECPGprepare
    - ECPGdeallocate
    - ECPGdebug
    - free
    - printf
    - malloc
    - memset
    - ECPGdisconnect
    - exit
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:61,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:65,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:68,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:71,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:74,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:77,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:80,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:83,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:86,1
    - Dst: PGTYPESdate_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:90,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:91,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:93,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:100,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:104,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:113,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:117,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:118,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:119,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:121,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:122,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:123,1
    - Dst: PGTYPESinterval_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:125,1
    - Dst: PGTYPESinterval_copy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:126,1
    - Dst: PGTYPESinterval_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:127,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:128,1
    - Dst: PGTYPESinterval_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:129,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:130,1
    - Dst: PGTYPESdate_mdyjul
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:132,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:133,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:137,1
    - Dst: PGTYPESdate_julmdy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:139,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:140,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:142,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:143,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:145,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:145,1
    - Dst: PGTYPESdate_from_timestamp
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:146,1
    - Dst: PGTYPESdate_fmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:147,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:148,1
    - Dst: PGTYPESdate_dayofweek
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:148,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:149,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:150,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:151,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:153,1
    - Dst: PGTYPEStimestamp_fmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:154,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:155,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:156,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:167,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:168,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:169,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:170,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:175,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:176,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:177,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:178,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:183,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:184,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:185,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:186,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:191,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:192,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:193,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:194,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:199,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:200,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:201,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:202,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:207,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:208,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:209,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:210,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:215,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:216,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:217,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:218,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:223,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:224,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:225,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:226,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:231,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:232,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:233,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:234,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:239,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:240,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:241,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:242,1
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:247,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:248,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:249,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:250,1
    - Dst: PGTYPEStimestamp_current
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:252,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:253,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:256,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:258,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:259,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:260,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:261,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:263,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:264,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:265,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:266,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:268,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:270,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:271,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:272,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:273,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:275,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:277,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:278,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:279,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:280,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:285,1
    - Dst: PGTYPEStimestamp_fmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:286,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:287,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:288,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:292,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:293,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:294,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:295,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:299,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:300,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:301,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:302,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:306,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:307,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:308,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:309,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:313,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:314,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:315,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:316,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:320,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:321,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:322,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:323,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:327,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:328,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:329,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:330,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:334,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:335,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:336,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:337,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:341,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:342,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:343,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:344,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:348,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:349,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:350,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:351,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:355,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:356,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:357,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:358,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:362,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:363,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:364,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:365,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:369,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:370,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:371,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:372,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:376,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:377,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:378,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:379,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:383,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:384,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:385,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:386,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:390,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:391,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:392,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:393,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:397,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:398,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:399,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:400,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:404,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:405,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:406,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:407,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:411,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:412,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:413,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:414,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:418,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:419,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:420,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:421,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:425,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:426,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:427,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:428,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:432,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:433,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:434,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:435,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:439,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:440,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:441,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:442,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:446,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:447,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:448,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:449,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:451,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:454,1
    - Dst: PGTYPEStimestamp_fmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:455,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:456,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:457,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:459,1
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:462,1
    - Dst: PGTYPEStimestamp_fmt_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:463,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:464,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:465,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:467,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:470,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:473,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:476,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 323
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 481
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c
    functionUses: 18
    functionsReached:
    - PGTYPESdate_to_asc
    - PGTYPEStimestamp_to_asc
    - ECPGtrans
    - PGTYPESdate_dayofweek
    - PGTYPEStimestamp_fmt_asc
    - printf
    - PGTYPESchar_free
    - PGTYPESdate_defmt_asc
    - PGTYPESinterval_free
    - PGTYPESinterval_copy
    - sqlprint
    - PGTYPESdate_julmdy
    - PGTYPESinterval_from_asc
    - PGTYPESdate_fmt_asc
    - PGTYPESdate_from_asc
    - ECPGconnect
    - check_errno
    - PGTYPESdate_mdyjul
    - strlen
    - PGTYPESdate_from_timestamp
    - ECPGdisconnect
    - PGTYPEStimestamp_defmt_asc
    - ECPGdo
    - PGTYPESinterval_to_asc
    - ECPGdebug
    - malloc
    - free
    - PGTYPEStimestamp_from_asc
    - PGTYPEStimestamp_current
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:489,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:492,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:495,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:496,1
    - Dst: strerror
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c:496,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 499
    functionName: check_errno
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c
    functionUses: 1
    functionsReached:
    - strerror
    - printf
    linkageType: ''
    returnType: void
    signature: void check_errno(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-comment.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-comment.c:32,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-comment.c:34,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-comment.c:38,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-comment.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 42
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-comment.c
    functionUses: 18
    functionsReached:
    - exit
    - ECPGdebug
    - ECPGconnect
    - ECPGdisconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:39,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:40,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:44,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:54,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:57,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:60,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:64,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:67,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:70,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:74,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:79,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:82,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:85,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:88,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:91,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:94,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:98,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:101,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:104,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:108,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:111,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:114,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:121,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:124,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:127,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:137,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:147,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:150,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:153,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:156,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:159,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:162,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:165,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:168,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:171,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:175,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:178,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:181,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 186
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - exit
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:23,1
    - Dst: rupshift
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:24,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:25,1
    - Dst: ldchar
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:28,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:29,1
    - Dst: byleng
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:29,1
    - Dst: ldchar
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:31,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:32,1
    - Dst: byleng
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:32,1
    - Dst: ldchar
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:34,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:35,1
    - Dst: byleng
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:35,1
    - Dst: ldchar
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:37,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:38,1
    - Dst: byleng
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 42
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c
    functionUses: 18
    functionsReached:
    - ldchar
    - byleng
    - printf
    - rupshift
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-intoasc.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-intoasc.c:32,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-intoasc.c:36,1
    - Dst: intoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-intoasc.c:37,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-intoasc.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 40
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-intoasc.c
    functionUses: 18
    functionsReached:
    - intoasc
    - malloc
    - printf
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:129,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:136,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:141,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:144,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:147,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:152,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:153,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - sqlda
    argTypes:
    - sqlda_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 158
    functionName: dump_sqlda
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c
    functionUses: 1
    functionsReached:
    - dectoasc
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_sqlda(sqlda_t *sqlda)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:186,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:188,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:189,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:192,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:196,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:197,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:200,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:204,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:205,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:208,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:212,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:213,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:216,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:220,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:221,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:224,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:232,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:233,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:236,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:240,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:245,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:246,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:247,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:251,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:262,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:263,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:271,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:275,1
    - Dst: dump_sqlda
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:276,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:283,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:284,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:287,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:291,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:292,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:295,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:299,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:307,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:308,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:311,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:315,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:320,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:321,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:322,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:326,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:337,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:338,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:346,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:350,1
    - Dst: dump_sqlda
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:351,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:358,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:359,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:362,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:366,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:367,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:370,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:374,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:379,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:380,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:382,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:383,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:388,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:394,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:395,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:398,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:402,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:403,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:410,1
    - Dst: dump_sqlda
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:414,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:416,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:417,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:420,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:424,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:425,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:426,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:432,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:435,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:440,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:441,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:443,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:444,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:449,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:455,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:456,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:459,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:463,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:464,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:471,1
    - Dst: dump_sqlda
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:475,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:477,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:478,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:481,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:485,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:486,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:489,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:493,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:494,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:495,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:497,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:498,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:501,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:507,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:508,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:511,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:515,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:516,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:519,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:523,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:524,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c:527,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 185
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 532
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-sqlda.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGprepared_statement
    - dump_sqlda
    - ECPGprepare
    - ECPGdeallocate
    - ECPGdebug
    - free
    - printf
    - malloc
    - memset
    - ECPGdisconnect
    - exit
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 66
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:97,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:99,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:100,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:103,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:106,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:109,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:113,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:114,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:117,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:121,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:122,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:125,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:128,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:131,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:135,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:136,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:139,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:142,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:145,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:148,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:151,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:154,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:157,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:160,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:163,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:167,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:168,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:171,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:174,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:177,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:183,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:184,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:188,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:194,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:195,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:200,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:204,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:205,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:214,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:217,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:219,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:220,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:229,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:232,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:234,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:235,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:244,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:247,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:249,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:251,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:262,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:265,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:267,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:268,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:273,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:277,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:278,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:287,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:290,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:292,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:294,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:305,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:308,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:310,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:311,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:316,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:322,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:323,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:324,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:325,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:329,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:335,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:336,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:345,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:349,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:350,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:359,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:362,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:364,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:365,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:374,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:377,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:379,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:380,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:389,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:392,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:394,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:396,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:407,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:410,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:412,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:413,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:422,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:426,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:427,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:436,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:439,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:441,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:443,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:454,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:457,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:459,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:460,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:465,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:471,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:472,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:475,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:478,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:481,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:485,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:486,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:490,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:495,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:499,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:505,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:506,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:509,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:513,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:516,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:519,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:523,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:527,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:528,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:537,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:540,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:542,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:543,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:552,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:555,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:557,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:558,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:567,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:570,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:572,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:574,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:585,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:588,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:590,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:591,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:596,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:600,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:601,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:610,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:613,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:615,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:617,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:628,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:631,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:633,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:634,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:639,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:642,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:647,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:651,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:652,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:655,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:658,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:661,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:668,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:669,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:671,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:672,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:675,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:679,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:680,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:684,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:690,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:691,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:694,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:698,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:702,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:703,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:712,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:715,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:717,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:718,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:727,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:730,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:732,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:733,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:742,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:745,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:747,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:749,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:760,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:763,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:765,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:766,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:771,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:775,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:776,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:785,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:788,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:790,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:792,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:803,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:806,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:808,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:809,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:814,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:818,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:819,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:822,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:828,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:829,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:832,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:835,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:838,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:842,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:843,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:846,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:850,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:851,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c:854,1
    CyclomaticComplexity: 65
    EdgeCount: 65
    ICount: 346
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 859
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-cursor.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGprepared_statement
    - ECPGprepare
    - ECPGdeallocate
    - ECPGset_var
    - ECPGdebug
    - strlen
    - printf
    - ECPGdisconnect
    - exit
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:40,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:41,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:52,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 56
    functionName: print_double
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c
    functionUses: 0
    functionsReached:
    - strlen
    - printf
    - sprintf
    linkageType: ''
    returnType: void
    signature: void print_double(double x)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:80,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:85,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:88,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:92,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:95,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:98,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:101,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:105,1
    - Dst: PGTYPESnumeric_from_int
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:106,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:107,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:108,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:109,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:110,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:112,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:113,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:114,1
    - Dst: PGTYPESnumeric_add
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:115,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:116,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:117,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:118,1
    - Dst: PGTYPESnumeric_sub
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:120,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:121,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:122,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:123,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:124,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:126,1
    - Dst: PGTYPESnumeric_copy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:127,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:128,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:133,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:137,1
    - Dst: PGTYPESnumeric_mul
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:138,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:139,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:141,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:146,1
    - Dst: PGTYPESnumeric_mul
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:150,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:151,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:152,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:153,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:154,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:156,1
    - Dst: PGTYPESnumeric_div
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:157,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:158,1
    - Dst: PGTYPESnumeric_to_double
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:159,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:160,1
    - Dst: print_double
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:161,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:162,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:164,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:165,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:167,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:168,1
    - Dst: PGTYPESnumeric_to_long
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:169,1
    - Dst: PGTYPESnumeric_to_long
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:169,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:170,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:172,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:173,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:174,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:175,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:178,1
    - Dst: PGTYPESnumeric_to_int
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:179,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:180,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:181,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:183,1
    - Dst: PGTYPESnumeric_to_int
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:184,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:185,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:186,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:188,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:191,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:194,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c:197,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 84
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 202
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - PGTYPESnumeric_to_asc
    - ECPGsetcommit
    - PGTYPESnumeric_new
    - printf
    - PGTYPESnumeric_copy
    - PGTYPESnumeric_from_asc
    - PGTYPESnumeric_free
    - PGTYPESchar_free
    - PGTYPESnumeric_from_int
    - sqlprint
    - PGTYPESnumeric_sub
    - ECPGconnect
    - print_double
    - PGTYPESnumeric_mul
    - PGTYPESnumeric_to_double
    - PGTYPESnumeric_div
    - PGTYPESnumeric_to_long
    - PGTYPESnumeric_to_int
    - ECPGdisconnect
    - ECPGdo
    - PGTYPESnumeric_add
    - ECPGdebug
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:120,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:123,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:128,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:129,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:132,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:137,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:138,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:141,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:148,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:149,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:152,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:171,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:172,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:174,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:176,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:180,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 182
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-type.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGdebug
    - free
    - printf
    - ECPGdisconnect
    - exit
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:73,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:76,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:79,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:82,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:85,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:88,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:91,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:94,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:99,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:102,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:106,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:111,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:116,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:119,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:128,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:131,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:133,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:136,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:140,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:141,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:145,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:150,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:155,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:158,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:167,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:170,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:173,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:178,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:180,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:181,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:183,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:187,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:192,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:197,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:200,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:205,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:208,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:211,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:216,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:218,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:219,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:220,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:223,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:226,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c:229,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 82
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 230
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-binary.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGset_var
    - ECPGdebug
    - memset
    - printf
    - free
    - ECPGdisconnect
    - exit
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:33,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:35,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:36,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:39,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:42,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:45,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:49,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:50,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:53,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:57,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:58,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:61,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:65,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:66,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:69,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:73,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:74,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:77,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:81,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:82,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:85,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:89,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:90,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:93,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:97,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:98,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:101,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:105,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:106,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c:109,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 114
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-twophase.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - ECPGdebug
    - ECPGdisconnect
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:33,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:34,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:38,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:48,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:51,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:54,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:57,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:60,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:63,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:67,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:74,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:77,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:81,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:84,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:87,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:91,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:94,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:97,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:100,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:103,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:106,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:109,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:114,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:117,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:120,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:122,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:125,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:128,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:131,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:134,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:137,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:140,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:143,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:146,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:149,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:152,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:155,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:159,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:162,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c:165,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 80
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 170
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-func.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:106,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:108,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:111,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:113,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:116,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:117,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:120,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:123,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:128,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:130,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:133,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:135,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:138,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:140,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:143,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:145,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:148,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:150,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:153,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:154,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:157,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:159,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c:162,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 164
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-code100.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:53,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:55,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:58,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:63,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:66,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:69,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:72,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:76,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:79,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:83,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:86,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:90,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:93,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:98,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:101,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:104,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:107,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:110,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:113,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:118,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:121,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:125,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:128,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:133,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:140,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:143,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:146,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:147,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:156,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:159,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:162,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:163,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:166,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:169,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:170,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:179,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:182,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:183,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:186,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:194,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:197,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:204,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:214,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:217,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:222,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:225,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:230,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:235,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:238,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:241,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:244,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:247,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:250,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:253,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:256,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:259,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:262,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:265,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:268,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:271,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:274,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:277,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c:280,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 123
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 285
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqlpgq.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - sqlprint
    - ECPGprepare
    - ECPGdeallocate
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - sprintf
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:142,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:144,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:147,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:150,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:153,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:158,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:161,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:164,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:169,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:172,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:176,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:179,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:182,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:185,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 190
    functionName: fn
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c
    functionUses: 20
    functionsReached:
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - ECPGprepare
    - ECPGdeallocate
    - ECPGdisconnect
    - sprintf
    - ECPGconnect
    linkageType: ''
    returnType: void
    signature: void * fn(void* arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:201,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:204,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:207,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:210,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:213,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:216,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:219,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:222,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:225,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:228,1
    - Dst: _beginthreadex
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:236,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:239,1
    - Dst: CloseHandle
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:241,1
    - Dst: pthread_create
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:244,1
    - Dst: pthread_join
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c:246,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 250
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-prep.c
    functionUses: 18
    functionsReached:
    - CloseHandle
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - WaitForMultipleObjects
    - _beginthreadex
    - ECPGdisconnect
    - pthread_join
    - ECPGconnect
    - pthread_create
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test4.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test4.c:29,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test4.c:31,1
    - Dst: ECPGsetconn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test4.c:35,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test4.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 44
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test4.c
    functionUses: 18
    functionsReached:
    - ECPGsetconn
    - ECPGdebug
    - ECPGconnect
    - ECPGdisconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:63,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:66,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:69,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:72,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:75,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:78,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:83,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:86,1
    - Dst: pthread_create
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:92,1
    - Dst: CreateThread
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:94,1
    - Dst: pthread_join
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:102,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:105,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:107,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:110,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:113,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:118,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:121,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:125,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 130
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c
    functionUses: 18
    functionsReached:
    - CreateThread
    - ECPGtrans
    - ECPGdo
    - WaitForMultipleObjects
    - free
    - printf
    - ECPGdisconnect
    - pthread_join
    - calloc
    - ECPGconnect
    - pthread_create
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:151,1
    - Dst: _snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:153,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:158,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:161,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:166,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:169,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:172,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:179,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:186,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:190,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:194,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:197,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:200,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c:203,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 207
    functionName: test_thread
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread_implicit.c
    functionUses: 0
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - _snprintf
    - sqlprint
    - printf
    - ECPGdisconnect
    - ECPGconnect
    - snprintf
    linkageType: ''
    returnType: void
    signature: void *test_thread(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:53,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:55,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:59,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:63,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:79,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:81,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:89,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 95
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:100,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:103,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:106,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:115,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:124,1
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:138,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:140,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:142,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:145,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:148,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:152,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:155,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:158,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:163,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:164,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:167,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:168,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:171,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:178,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:181,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:184,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:187,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:194,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:197,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:200,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:205,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:208,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:215,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:218,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:221,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:224,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:227,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:228,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:231,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:238,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:241,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:244,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:247,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:250,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:251,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:254,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:261,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:264,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:267,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:270,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:273,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:274,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:277,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:284,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:287,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:290,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:293,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:294,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:295,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:297,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:302,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:305,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:308,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:311,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:314,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:317,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:320,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:323,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 107
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 329
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - sqlprint
    - ECPGdebug
    - malloc
    - strlen
    - memset
    - printf
    - ECPGdisconnect
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:110,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:112,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:115,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:118,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:121,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:125,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:130,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:133,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:135,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:140,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:143,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:145,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c:148,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 153
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson_jsontable.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:59,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:61,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:64,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:68,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:71,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:74,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:77,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:81,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:82,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:85,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:89,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:90,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:93,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:97,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:98,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:101,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:105,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:107,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:108,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:111,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:114,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:119,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:123,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:125,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:128,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:132,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:134,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:137,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:144,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:145,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:149,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:152,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:161,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:170,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:171,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:174,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:177,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:181,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:183,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:186,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:193,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:194,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:196,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:200,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:203,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:212,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:221,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:222,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:225,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:228,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:231,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:234,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:237,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:240,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:243,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c:246,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 251
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-oldexec.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGprepared_statement
    - strncpy
    - sqlprint
    - ECPGprepare
    - ECPGdebug
    - strlen
    - printf
    - ECPGdisconnect
    - sprintf
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:59,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:61,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:64,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:67,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:70,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:73,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:76,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:81,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:84,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:88,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:89,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:92,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:96,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:97,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:100,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:104,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:106,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:107,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:110,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:113,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:118,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:122,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:124,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:127,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:131,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:133,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:136,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:143,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:144,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:148,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:151,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:160,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:179,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:180,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:183,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:186,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:189,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:192,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:196,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:198,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:201,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:208,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:209,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:211,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:215,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:218,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:227,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:246,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:247,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:250,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:253,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:256,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:259,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:263,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:265,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:268,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:271,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:272,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:282,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:301,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:302,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:305,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:308,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:311,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:314,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:317,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:320,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:323,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c:326,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 123
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 331
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-execute.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGprepared_statement
    - strncpy
    - sqlprint
    - ECPGprepare
    - ECPGdeallocate
    - ECPGdebug
    - strlen
    - printf
    - ECPGdisconnect
    - sprintf
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rstrdate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:34,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:35,1
    - Dst: rdatestr
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:38,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:39,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:42,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:45,1
    - Dst: check_return
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - input
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 49
    functionName: date_test_strdate
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
    functionUses: 0
    functionsReached:
    - check_return
    - rdatestr
    - rstrdate
    - printf
    linkageType: ''
    returnType: void
    signature: void date_test_strdate(const char *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rdefmtdate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:59,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:60,1
    - Dst: rdatestr
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:63,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:64,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:67,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:70,1
    - Dst: check_return
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - fmt
    - input
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 74
    functionName: date_test_defmt
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
    functionUses: 0
    functionsReached:
    - check_return
    - rdatestr
    - rdefmtdate
    - printf
    linkageType: ''
    returnType: void
    signature: void date_test_defmt(const char *fmt, const char *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfmtdate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:83,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:84,1
    - Dst: check_return
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:86,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - d
    - fmt
    argTypes:
    - date
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 89
    functionName: date_test_fmt
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
    functionUses: 0
    functionsReached:
    - check_return
    - rfmtdate
    - printf
    linkageType: ''
    returnType: void
    signature: void date_test_fmt(date d, const char *fmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:100,1
    - Dst: rmdyjul
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:102,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:103,1
    - Dst: rdatestr
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:106,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:107,1
    - Dst: date_test_strdate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:111,1
    - Dst: date_test_strdate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:112,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:114,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:115,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:116,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:117,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:118,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:119,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:120,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:121,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:122,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:123,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:124,1
    - Dst: date_test_fmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:125,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:127,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:128,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:129,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:130,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:131,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:132,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:133,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:134,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:135,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:136,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:137,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:138,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:139,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:141,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:143,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:146,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:149,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:150,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:153,1
    - Dst: date_test_defmt
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 162
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
    functionUses: 18
    functionsReached:
    - rmdyjul
    - date_test_fmt
    - date_test_strdate
    - ECPGdebug
    - printf
    - date_test_defmt
    - rdatestr
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:170,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:173,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:176,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:179,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:182,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c:185,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ret
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 186
    functionName: check_return
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
    functionUses: 3
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void check_return(int ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:135,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:137,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:140,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:143,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:147,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:150,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:153,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:158,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:159,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:162,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:163,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:166,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:173,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:176,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:179,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:182,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:189,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:192,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:195,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:200,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:203,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:210,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:213,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:216,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:219,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:222,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:223,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:226,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:233,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:236,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:239,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:242,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:245,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:246,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:249,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:256,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:259,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:262,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:265,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:268,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:269,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:272,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:279,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:282,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:285,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:288,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:289,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:290,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:292,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:297,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:300,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:303,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:306,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:309,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:312,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:315,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:318,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 106
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 323
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - sqlprint
    - ECPGdebug
    - strlen
    - memset
    - printf
    - ECPGdisconnect
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:145,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:153,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:154,1
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:156,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:163,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:164,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:165,1
    - Dst: PGTYPESdate_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:166,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:167,1
    - Dst: PGTYPESinterval_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:168,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:170,1
    - Dst: PGTYPESnumeric_from_int
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:171,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:175,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:178,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:182,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:185,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:189,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:192,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:196,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:199,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:203,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:214,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:218,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:233,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:237,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:254,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:258,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:261,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:266,1
    - Dst: PGTYPESdate_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:267,1
    - Dst: PGTYPESinterval_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:268,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:269,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:271,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:274,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:278,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:285,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:289,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:292,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:309,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:314,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:314,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:314,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:314,1
    - Dst: PGTYPESinterval_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:314,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:316,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:318,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:325,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:329,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:331,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:334,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:338,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:341,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:345,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:348,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c:352,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 90
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 355
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-array.c
    functionUses: 18
    functionsReached:
    - PGTYPEStimestamp_to_asc
    - PGTYPESdate_to_asc
    - ECPGtrans
    - PGTYPESnumeric_to_asc
    - ECPGsetcommit
    - PGTYPESnumeric_new
    - printf
    - PGTYPESnumeric_from_int
    - setlocale
    - sqlprint
    - PGTYPESinterval_from_asc
    - PGTYPESdate_from_asc
    - ECPGconnect
    - ECPGdisconnect
    - ECPGdo
    - PGTYPESinterval_to_asc
    - PGTYPESinterval_new
    - ECPGdebug
    - malloc
    - free
    - sprintf
    - PGTYPEStimestamp_from_asc
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:149,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: error
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c
    functionUses: 584
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void error (void)
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:206,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:214,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:217,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:221,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:224,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:228,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:231,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:235,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:238,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:241,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:244,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:247,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:250,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:254,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:257,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:264,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:265,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:269,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:275,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:280,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:287,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:291,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:296,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:302,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:314,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:317,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:321,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:324,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:327,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:330,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:333,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:336,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:339,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:342,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:345,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:350,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:356,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:359,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:362,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:365,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:368,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:373,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:377,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:379,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:383,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:385,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:388,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:391,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:394,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:399,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:404,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:407,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:411,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:416,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:419,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:422,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:427,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:430,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:433,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:439,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:442,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:446,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:451,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:454,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:457,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:462,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:465,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:471,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:474,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:478,1
    - Dst: error
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c:481,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 179
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 486
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-dyntest.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGprepared_statement
    - ECPGget_desc_header
    - ECPGprepare
    - ECPGallocate_desc
    - error
    - ECPGdebug
    - ECPGdeallocate_desc
    - printf
    - ECPGget_desc
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:63,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:66,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:69,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:72,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:75,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:78,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:83,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:86,1
    - Dst: pthread_create
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:92,1
    - Dst: CreateThread
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:94,1
    - Dst: pthread_join
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:102,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:105,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:107,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:110,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:113,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:118,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:121,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:125,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 130
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c
    functionUses: 18
    functionsReached:
    - CreateThread
    - ECPGtrans
    - ECPGdo
    - WaitForMultipleObjects
    - free
    - printf
    - ECPGdisconnect
    - pthread_join
    - calloc
    - ECPGconnect
    - pthread_create
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:151,1
    - Dst: _snprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:153,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:158,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:161,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:166,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:169,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:172,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:179,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:186,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:190,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:194,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:197,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:200,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c:203,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 207
    functionName: test_thread
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-thread.c
    functionUses: 0
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - _snprintf
    - sqlprint
    - printf
    - ECPGdisconnect
    - ECPGconnect
    - snprintf
    linkageType: ''
    returnType: void
    signature: void *test_thread(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:134,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:136,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:137,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:140,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:144,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:145,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:148,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:152,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:153,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:156,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:160,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:161,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:164,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:167,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:170,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:173,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:176,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:179,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:182,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:185,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:188,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:192,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:193,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:196,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:200,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:201,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:204,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:214,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:216,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:217,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:233,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:236,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:238,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:240,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:242,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:244,1
    - Dst: putchar
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:245,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:247,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:251,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:252,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:255,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:259,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:260,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:263,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:267,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:268,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:271,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:275,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:276,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:279,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c:286,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 96
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 291
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-variable.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - putchar
    - ECPGdebug
    - memset
    - printf
    - free
    - ECPGdisconnect
    - exit
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:180,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:183,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:190,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:191,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:195,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - myvar0
    - mynullvar0
    argTypes:
    - MYTYPE**
    - MYNULLTYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 206
    functionName: get_var1
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c
    functionUses: 0
    functionsReached:
    - exit
    - malloc
    - ECPGset_var
    linkageType: ''
    returnType: void
    signature: void get_var1(MYTYPE **myvar0, MYNULLTYPE **mynullvar0)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:211,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:212,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:213,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:214,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:215,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:216,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:217,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:218,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:219,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:220,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:221,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 227
    functionName: open_cur1
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c
    functionUses: 0
    functionsReached:
    - exit
    - ECPGget_var
    - ECPGdo
    linkageType: ''
    returnType: void
    signature: void open_cur1(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:232,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:233,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:234,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:235,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:236,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:237,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:238,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:239,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:240,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:241,1
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:242,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 248
    functionName: get_record1
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c
    functionUses: 0
    functionsReached:
    - exit
    - ECPGget_var
    - ECPGdo
    linkageType: ''
    returnType: void
    signature: void get_record1(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:253,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 259
    functionName: close_cur1
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c
    functionUses: 0
    functionsReached:
    - exit
    - ECPGdo
    linkageType: ''
    returnType: void
    signature: void close_cur1(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:269,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:271,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:272,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:275,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:279,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:280,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:283,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:287,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:288,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:291,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:295,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:296,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:299,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:302,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:305,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:308,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:311,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:315,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:316,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:319,1
    - Dst: get_var1
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:325,1
    - Dst: open_cur1
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:326,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:330,1
    - Dst: get_record1
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:331,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:334,1
    - Dst: close_cur1
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:342,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:344,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:345,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:347,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:348,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:351,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:355,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:356,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:359,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:363,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:364,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c:367,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 372
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-outofscope.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - close_cur1
    - get_var1
    - open_cur1
    - ECPGdebug
    - memset
    - printf
    - free
    - ECPGdisconnect
    - exit
    - ECPGconnect
    - strcpy
    - get_record1
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:125,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:130,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:133,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:137,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:140,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:143,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:146,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:151,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:154,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:164,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:167,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:174,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:181,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:185,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:189,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:192,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:205,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:208,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:214,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:219,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:222,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:226,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:231,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:234,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:238,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:243,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:246,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:259,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c:262,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 266
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-define.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:29,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: print
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c
    functionUses: 44
    functionsReached:
    - sqlprint
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print(const char *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:35,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 37
    functionName: print2
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c
    functionUses: 0
    functionsReached:
    - sqlprint
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: warn
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c
    functionUses: 3
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void warn(void)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:59,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:61,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:64,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:67,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:70,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:73,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:76,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:83,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:90,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:93,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:96,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:99,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:102,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:106,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:111,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:114,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:117,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:120,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:123,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:130,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:135,1
    - Dst: print
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:138,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:141,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:144,1
    - Dst: print
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:147,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:154,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:159,1
    - Dst: print2
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:162,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:165,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:168,1
    - Dst: print2
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:171,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:178,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:183,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:186,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:189,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:196,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:201,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:207,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:210,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:213,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:225,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:230,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:233,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:236,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:239,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:242,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c:245,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 100
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 246
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-whenever.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - print2
    - sqlprint
    - exit
    - ECPGdebug
    - printf
    - warn
    - print
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:52,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:57,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:60,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:64,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:67,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:70,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:73,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:80,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:83,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:88,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:97,1
    - Dst: isnan
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:102,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:103,1
    - Dst: isinf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:104,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:105,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:107,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:114,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:117,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:124,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:128,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:131,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:135,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:138,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:143,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:152,1
    - Dst: isinf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:157,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:158,1
    - Dst: isnan
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:159,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:160,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:162,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:165,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:169,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:171,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:174,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:177,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:180,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:184,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:193,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:197,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:199,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:204,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:207,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:212,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:219,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:222,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:227,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:236,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:241,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:243,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:246,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:250,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:252,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:255,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:258,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c:261,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 111
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 266
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - PGTYPESnumeric_free
    - sqlprint
    - isinf
    - ECPGdebug
    - PGTYPESnumeric_new
    - printf
    - ECPGdisconnect
    - isnan
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:41,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:42,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:53,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 57
    functionName: print_double
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c
    functionUses: 1
    functionsReached:
    - strlen
    - printf
    - sprintf
    linkageType: ''
    returnType: void
    signature: void print_double(double x)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:87,1
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:89,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:93,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:94,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:97,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:99,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:103,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:106,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:107,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:108,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:108,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:109,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:110,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:111,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:111,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:112,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:113,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:114,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:114,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:115,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:116,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:117,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:117,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:119,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:120,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:121,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:122,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:122,1
    - Dst: PGTYPESnumeric_to_long
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:124,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:125,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:126,1
    - Dst: PGTYPESnumeric_from_long
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:129,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:130,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:131,1
    - Dst: PGTYPESnumeric_cmp
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:132,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:133,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:134,1
    - Dst: PGTYPESnumeric_to_int
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:137,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:138,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:139,1
    - Dst: PGTYPESnumeric_from_int
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:142,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:143,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:144,1
    - Dst: PGTYPESnumeric_cmp
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:145,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:146,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:147,1
    - Dst: PGTYPESnumeric_to_double
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:155,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:156,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:157,1
    - Dst: print_double
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:158,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:159,1
    - Dst: PGTYPESdecimal_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:167,1
    - Dst: PGTYPESnumeric_to_decimal
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:168,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:169,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:172,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:175,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:176,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:177,1
    - Dst: PGTYPESnumeric_cmp
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:178,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:179,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:180,1
    - Dst: PGTYPESdecimal_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:183,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:184,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:185,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:192,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:193,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:194,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:195,1
    - Dst: PGTYPESnumeric_add
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:196,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:199,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:200,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:204,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:205,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:206,1
    - Dst: PGTYPESnumeric_sub
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:208,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:211,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:212,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:216,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:217,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:218,1
    - Dst: PGTYPESnumeric_mul
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:220,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:223,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:224,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:228,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:229,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:230,1
    - Dst: PGTYPESnumeric_div
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:232,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:235,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:236,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:240,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:241,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:242,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:245,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:246,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:247,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:248,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:254,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:255,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:256,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:257,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:259,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 145
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 262
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c
    functionUses: 18
    functionsReached:
    - realloc
    - PGTYPESnumeric_to_asc
    - PGTYPESnumeric_from_decimal
    - PGTYPESnumeric_new
    - printf
    - PGTYPESnumeric_from_asc
    - PGTYPESnumeric_from_long
    - PGTYPESchar_free
    - PGTYPESnumeric_free
    - PGTYPESnumeric_from_int
    - PGTYPESdecimal_free
    - PGTYPESnumeric_sub
    - PGTYPESdecimal_new
    - calloc
    - print_double
    - PGTYPESnumeric_mul
    - check_errno
    - PGTYPESnumeric_to_double
    - PGTYPESnumeric_cmp
    - PGTYPESnumeric_to_decimal
    - PGTYPESnumeric_to_long
    - PGTYPESnumeric_to_int
    - PGTYPESnumeric_div
    - PGTYPESnumeric_add
    - ECPGdebug
    - free
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:270,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:273,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:276,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:279,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:282,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:285,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:286,1
    - Dst: strerror
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c:286,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 290
    functionName: check_errno
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c
    functionUses: 2
    functionsReached:
    - strerror
    - printf
    linkageType: ''
    returnType: void
    signature: void check_errno(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c
    functionUses: 37
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:122,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:127,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:130,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:134,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:137,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:141,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:144,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:147,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:150,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:153,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:156,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:159,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:162,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:165,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:168,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:171,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:174,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:177,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:180,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:184,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:187,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:190,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:195,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:198,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:202,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:205,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:211,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:214,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:220,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:224,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:227,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:228,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:230,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:231,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:232,1
    - Dst: ECPGfree_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:234,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:235,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:237,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:240,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:243,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:246,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:249,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c:252,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 81
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 256
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc2.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGget_desc_header
    - sqlprint
    - ECPGallocate_desc
    - ECPGdebug
    - ECPGdeallocate_desc
    - printf
    - ECPGfree_auto_mem
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c
    functionUses: 38
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:126,1
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:128,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:130,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:133,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:136,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:139,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:143,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:146,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:149,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:152,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:156,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:159,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:162,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:165,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:169,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:172,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:175,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:178,1
    - Dst: commitTable
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:182,1
    - Dst: execute_test
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:184,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:186,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:189,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:192,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:195,1
    - Dst: commitTable
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:199,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:201,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:204,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 209
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - setlocale
    - sqlprint
    - execute_test
    - ECPGdebug
    - ECPGdisconnect
    - commitTable
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:235,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:240,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:243,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:249,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:250,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:254,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:264,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:276,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:281,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:284,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:287,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:290,1
    - Dst: printResult
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:297,1
    - Dst: reset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:304,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:309,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:312,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:318,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:319,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:323,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:333,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:345,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:350,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:353,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:356,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:359,1
    - Dst: printResult
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:366,1
    - Dst: reset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:372,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:377,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:380,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:383,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:392,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:396,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:399,1
    - Dst: printResult
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:403,1
    - Dst: reset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:409,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:414,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:417,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:423,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:424,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:428,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:438,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:450,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:455,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:458,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:461,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:464,1
    - Dst: printResult
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:471,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:479,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:482,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:488,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:489,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:493,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:498,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:501,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:504,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:510,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:514,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:517,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:522,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:526,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:529,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:534,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:537,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:540,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:545,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:549,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:554,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:558,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:561,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:564,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:567,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:570,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:573,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:577,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:578,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 147
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 579
    functionName: execute_test
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c
    functionUses: 1
    functionsReached:
    - printResult
    - ECPGdo
    - reset
    - ECPGprepared_statement
    - ECPGget_desc_header
    - sqlprint
    - ECPGprepare
    - ECPGdeallocate
    - ECPGallocate_desc
    - ECPGdeallocate_desc
    - printf
    - ECPGdescribe
    - ECPGget_desc
    linkageType: ''
    returnType: void
    signature: void execute_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:583,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:586,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:589,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:592,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 595
    functionName: commitTable
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c
    functionUses: 1
    functionsReached:
    - ECPGtrans
    - sqlprint
    linkageType: ''
    returnType: void
    signature: void commitTable(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:602,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:603,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 605
    functionName: reset
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c
    functionUses: 13
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:612,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:615,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c:617,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - tc_name
    - loop
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 607
    functionDepth: 0
    functionLinenumber: 607
    functionLinenumberEnd: 618
    functionName: printResult
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-declare.c
    functionUses: 1
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void printResult(char *tc_name, int loop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:85,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:87,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:88,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:91,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:95,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:96,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:99,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:103,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:104,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:107,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:111,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:112,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:115,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:118,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:121,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:124,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:127,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:130,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:133,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:137,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:138,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:141,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:151,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:152,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:155,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:158,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:161,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:165,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:166,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:169,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:175,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:176,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:181,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:187,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:192,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:197,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:205,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:206,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:211,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:212,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:217,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:218,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:221,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:222,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:226,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:229,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:233,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:239,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:240,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:245,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:246,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:251,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:252,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:257,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:258,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:263,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:268,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:271,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:276,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:279,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:287,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:288,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:291,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:294,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:297,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:300,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:301,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:302,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:304,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:307,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:313,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:314,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:317,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:320,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:323,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:327,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:328,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:331,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:337,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:338,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:343,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:349,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:354,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:359,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:366,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:368,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:369,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:373,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:376,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:380,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:388,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:392,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:397,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:400,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:405,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:408,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:416,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:417,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:420,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:423,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:426,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:429,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:430,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:431,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:433,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:436,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:442,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:443,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:446,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:450,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:451,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:454,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:458,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:459,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c:462,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 203
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 467
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-describe.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGget_desc_header
    - ECPGprepare
    - ECPGdeallocate
    - ECPGallocate_desc
    - ECPGdebug
    - ECPGdeallocate_desc
    - printf
    - ECPGdescribe
    - free
    - ECPGget_desc
    - ECPGdisconnect
    - exit
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c
    functionUses: 40
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:30,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - type
    - ptr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: test_null
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c
    functionUses: 0
    functionsReached:
    - printf
    - risnull
    linkageType: ''
    returnType: void
    signature: void test_null(int type, char *ptr)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:96,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:101,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:104,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:108,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:111,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:114,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:117,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:121,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:138,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:141,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:144,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:148,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:149,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:150,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:151,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:152,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:153,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:154,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:155,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:156,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:157,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:159,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:182,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:185,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:188,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:192,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:194,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:217,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:221,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:222,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:223,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:224,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:225,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:226,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:227,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:228,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:229,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:230,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:232,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:234,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:257,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:261,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:262,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:263,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:264,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:265,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:266,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:267,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:268,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:269,1
    - Dst: test_null
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:270,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:272,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:275,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:278,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:281,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:285,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c:288,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 293
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rnull.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - test_null
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - rsetnull
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c
    functionUses: 41
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:34,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:36,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - buf
    - len
    - ind
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: dump_binary
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_binary(char *buf, int len, int ind)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:84,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:94,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:97,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:101,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:104,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:108,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:111,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:114,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:117,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:120,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:123,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:126,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:129,1
    - Dst: init
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:134,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:135,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:138,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:141,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:148,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:151,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:158,1
    - Dst: dump_binary
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:161,1
    - Dst: dump_binary
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:162,1
    - Dst: init
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:165,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:166,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:169,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:172,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:179,1
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:182,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:186,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:191,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:196,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:199,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:204,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:207,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:210,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:213,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:216,1
    - Dst: dump_binary
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:219,1
    - Dst: init
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:222,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:223,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:226,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:229,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:236,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:239,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:246,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:249,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:254,1
    - Dst: dump_binary
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:257,1
    - Dst: dump_binary
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:258,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:259,1
    - Dst: init
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:262,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:263,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:266,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:269,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:276,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:279,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:286,1
    - Dst: dump_binary
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:289,1
    - Dst: dump_binary
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:290,1
    - Dst: init
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:293,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:294,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:297,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:300,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:305,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:308,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:313,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:316,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:321,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:324,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:329,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:332,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:338,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:341,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:347,1
    - Dst: dump_binary
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:350,1
    - Dst: dump_binary
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:351,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:353,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:356,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:359,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:362,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:365,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c:368,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 152
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 373
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c
    functionUses: 18
    functionsReached:
    - dump_binary
    - ECPGtrans
    - ECPGdo
    - ECPGset_desc
    - init
    - sqlprint
    - ECPGprepare
    - ECPGdeallocate
    - ECPGset_var
    - ECPGallocate_desc
    - ECPGdebug
    - free
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 83
    functionName: init
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-bytea.c
    functionUses: 100
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: init()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c
    functionUses: 42
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:114,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:116,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:119,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:122,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:125,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:129,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:134,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:137,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:139,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:144,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:147,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:149,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:154,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:157,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:159,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:164,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:167,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:169,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:174,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:179,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:184,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:187,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:189,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:194,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:197,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:199,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:204,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:207,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:209,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:214,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:217,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:219,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:224,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:229,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:234,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:237,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:239,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:242,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:247,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:252,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:255,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:257,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:262,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:267,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:272,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:275,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:277,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:282,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:285,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:287,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:292,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:295,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:297,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:302,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:305,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:307,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:312,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:315,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:317,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:322,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:325,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:327,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:332,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:335,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:337,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:342,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:345,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:347,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:352,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:355,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:357,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:362,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:365,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:367,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:372,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:375,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:377,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:382,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:385,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:387,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:390,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:395,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:414,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:418,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:420,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c:423,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 151
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 428
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-sqljson.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c
    functionUses: 43
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:87,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:89,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:92,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:96,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:99,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:102,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:105,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:109,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:112,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:115,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:118,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:121,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:124,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:128,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:137,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:160,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:161,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:164,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:167,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:170,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:173,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:176,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c:179,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 184
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-define.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - strncpy
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c
    functionUses: 44
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:44,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:45,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:56,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 60
    functionName: print_double
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c
    functionUses: 2
    functionsReached:
    - strlen
    - printf
    - sprintf
    linkageType: ''
    returnType: void
    signature: void print_double(double x)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:97,1
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:99,1
    - Dst: PGTYPESdecimal_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:103,1
    - Dst: deccvasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:104,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:104,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:107,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:108,1
    - Dst: PGTYPESdecimal_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:109,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:112,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:115,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:116,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:117,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:119,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:120,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:121,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:122,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:123,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:124,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:125,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:126,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:127,1
    - Dst: PGTYPESdecimal_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:129,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:130,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:131,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:132,1
    - Dst: dectolong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:134,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:135,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:136,1
    - Dst: deccvlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:139,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:140,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:141,1
    - Dst: deccmp
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:142,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:143,1
    - Dst: dectoint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:146,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:147,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:148,1
    - Dst: deccvint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:151,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:152,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:153,1
    - Dst: deccmp
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:154,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:155,1
    - Dst: dectodbl
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:162,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:163,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:164,1
    - Dst: print_double
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:165,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:166,1
    - Dst: PGTYPESdecimal_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:169,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:170,1
    - Dst: PGTYPESdecimal_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:174,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:175,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:178,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:179,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:180,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:181,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:182,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:184,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:185,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:185,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:186,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:187,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:187,1
    - Dst: deccmp
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:195,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:196,1
    - Dst: deccvint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:203,1
    - Dst: deccvint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:204,1
    - Dst: deccvint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:205,1
    - Dst: deccvint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:206,1
    - Dst: decadd
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:208,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:211,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:212,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:216,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:217,1
    - Dst: decsub
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:220,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:223,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:224,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:228,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:229,1
    - Dst: decmul
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:232,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:235,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:236,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:240,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:241,1
    - Dst: decdiv
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:244,1
    - Dst: check_errno
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:247,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:248,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:252,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:253,1
    - Dst: dectoasc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:260,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:261,1
    - Dst: PGTYPESdecimal_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:263,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:265,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 130
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 268
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c
    functionUses: 18
    functionsReached:
    - decadd
    - realloc
    - printf
    - deccmp
    - dectoasc
    - PGTYPESdecimal_free
    - risnull
    - dectoint
    - deccvint
    - PGTYPESdecimal_new
    - rsetnull
    - calloc
    - print_double
    - check_errno
    - decmul
    - strlen
    - dectolong
    - dectodbl
    - decdiv
    - deccvlong
    - ECPGdebug
    - free
    - deccvasc
    - decsub
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:276,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:279,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:282,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:285,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:288,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:291,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:294,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:297,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:298,1
    - Dst: strerror
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c:298,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 301
    functionName: check_errno
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c
    functionUses: 3
    functionsReached:
    - strerror
    - printf
    linkageType: ''
    returnType: void
    signature: void check_errno(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:33,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:34,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:37,1
    - Dst: check_return
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - lng
    - fmt
    argTypes:
    - long
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 41
    functionName: fmtlong
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
    functionUses: 1
    functionsReached:
    - check_return
    - rfmtlong
    - printf
    linkageType: ''
    returnType: void
    signature: void fmtlong(long lng, const char *fmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:46,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:48,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:49,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:50,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:51,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:52,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:53,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:54,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:55,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:56,1
    - Dst: fmtlong
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 60
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
    functionUses: 18
    functionsReached:
    - fmtlong
    - ECPGdebug
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:68,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:71,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:74,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:77,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:80,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c:83,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ret
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 84
    functionName: check_return
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
    functionUses: 4
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void check_return(int ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c
    functionUses: 46
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:83,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:85,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:86,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:89,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:93,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:94,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:97,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:101,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:102,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:105,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:109,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:110,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:113,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:116,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:119,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:122,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:125,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:128,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:131,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:135,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:136,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:139,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:149,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:150,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:153,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:156,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:159,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:163,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:164,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:167,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:173,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:174,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:179,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:185,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:190,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:195,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:203,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:204,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:209,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:210,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:215,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:216,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:219,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:220,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:224,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:227,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:231,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:237,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:238,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:243,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:244,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:249,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:250,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:255,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:256,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:261,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:266,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:269,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:274,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:277,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:285,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:286,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:289,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:292,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:295,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:298,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:299,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:300,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:302,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:305,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:311,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:312,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:315,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:318,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:321,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:325,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:326,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:329,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:335,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:336,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:341,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:347,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:352,1
    - Dst: ECPGdescribe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:357,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:364,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:366,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:367,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:371,1
    - Dst: ECPGget_desc_header
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:374,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:378,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:386,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:390,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:395,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:398,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:403,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:406,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:414,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:415,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:418,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:421,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:424,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:427,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:428,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:429,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:431,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:434,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:440,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:441,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:444,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:448,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:449,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:452,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:456,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:457,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c:460,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 203
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 465
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-describe.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGget_desc_header
    - ECPGprepare
    - ECPGdeallocate
    - ECPGallocate_desc
    - ECPGdebug
    - ECPGdeallocate_desc
    - printf
    - ECPGdescribe
    - free
    - ECPGget_desc
    - ECPGdisconnect
    - exit
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c
    functionUses: 47
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:168,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:173,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:176,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:180,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:183,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:187,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:190,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:193,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:196,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:199,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:202,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:206,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:209,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:212,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:217,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:220,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:226,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:229,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:235,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:238,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:244,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:247,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:253,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:256,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:262,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:265,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:271,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:274,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:280,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:285,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:291,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:295,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:298,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:299,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:301,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:302,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:304,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:305,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:307,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:308,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:310,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:311,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:313,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:314,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:316,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:317,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:319,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:320,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:322,1
    - Dst: ECPGfree_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:324,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:325,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:327,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:330,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:333,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c:336,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 340
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-dynalloc.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - sqlprint
    - ECPGallocate_desc
    - ECPGdebug
    - ECPGdeallocate_desc
    - printf
    - ECPGfree_auto_mem
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c
    functionUses: 48
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c:111,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c:114,1
    - Dst: ECPGdeallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c:117,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c:120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 126
    functionName: fn
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c
    functionUses: 20
    functionsReached:
    - ECPGallocate_desc
    - sqlprint
    - ECPGdeallocate_desc
    linkageType: ''
    returnType: void
    signature: void * fn(void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _beginthreadex
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c:141,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c:144,1
    - Dst: CloseHandle
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c:146,1
    - Dst: pthread_create
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c:149,1
    - Dst: pthread_join
      Src: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c:151,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 155
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/thread-descriptor.c
    functionUses: 18
    functionsReached:
    - CloseHandle
    - WaitForMultipleObjects
    - _beginthreadex
    - pthread_join
    - pthread_create
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c
    functionUses: 48
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:111,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:113,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:114,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:117,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:123,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:125,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:128,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:129,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - fn
    - caller
    - ignore
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 134
    functionName: sql_check
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c
    functionUses: 0
    functionsReached:
    - ECPGtrans
    - printf
    - sprintf
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void sql_check(const char *fn, const char *caller, int ignore)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:169,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:171,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:172,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:175,1
    - Dst: sql_check
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:178,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:180,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:183,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:187,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:190,1
    - Dst: sql_check
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:193,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:195,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:198,1
    - Dst: sql_check
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:201,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:203,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:208,1
    - Dst: sql_check
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:211,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:213,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:222,1
    - Dst: sql_check
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:225,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:227,1
    - Dst: PGTYPESinterval_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:229,1
    - Dst: PGTYPEStimestamp_add_interval
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:230,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:231,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:234,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:241,1
    - Dst: sql_check
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:244,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:246,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:249,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:253,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:256,1
    - Dst: sql_check
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:259,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:261,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:264,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:268,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:271,1
    - Dst: sql_check
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:274,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:276,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c:278,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 290
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - PGTYPEStimestamp_add_interval
    - sql_check
    - PGTYPESinterval_from_asc
    - ECPGdebug
    - free
    - printf
    - ECPGdisconnect
    - exit
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c
    functionUses: 49
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:41,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:43,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:46,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:49,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:52,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:55,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:59,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:60,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:61,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:64,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:68,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:71,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:75,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:78,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:82,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:85,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:92,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:95,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:99,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:102,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:106,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:109,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:113,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:116,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:120,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:123,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:127,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:130,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:134,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:137,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:142,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:145,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:148,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 158
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test5.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGdebug
    - ECPGdisconnect
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c
    functionUses: 50
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:109,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:111,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:114,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:118,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:121,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:125,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:130,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:136,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:141,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:146,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:151,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:156,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:157,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:162,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:166,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:171,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:176,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:178,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:181,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 189
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-indicators.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGsetcommit
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c
    functionUses: 51
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:107,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:109,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:110,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:112,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:113,1
    - Dst: PGTYPESdate_from_timestamp
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:115,1
    - Dst: PGTYPESdate_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:116,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:118,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:119,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:120,1
    - Dst: PGTYPESdate_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:121,1
    - Dst: PGTYPESdate_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:126,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:130,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:131,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:135,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:140,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:142,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:144,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:145,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:146,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:147,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:148,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:150,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:151,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:156,1
    - Dst: PGTYPESinterval_from_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:161,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:163,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:166,1
    - Dst: PGTYPEStimestamp_add_interval
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:169,1
    - Dst: PGTYPESinterval_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:172,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:173,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:174,1
    - Dst: PGTYPESinterval_new
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:176,1
    - Dst: PGTYPESinterval_copy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:177,1
    - Dst: PGTYPESinterval_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:178,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:179,1
    - Dst: PGTYPESchar_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:180,1
    - Dst: PGTYPESinterval_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:181,1
    - Dst: PGTYPESinterval_free
      Src: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c:182,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 186
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c
    functionUses: 18
    functionsReached:
    - PGTYPEStimestamp_to_asc
    - PGTYPESdate_to_asc
    - printf
    - PGTYPESchar_free
    - PGTYPESinterval_free
    - PGTYPESinterval_copy
    - PGTYPESinterval_from_asc
    - PGTYPESdate_free
    - PGTYPESdate_from_asc
    - PGTYPEStimestamp_add_interval
    - strlen
    - PGTYPESdate_from_timestamp
    - PGTYPESinterval_to_asc
    - PGTYPESinterval_new
    - PGTYPESdate_new
    - ECPGdebug
    - malloc
    - free
    - sprintf
    - PGTYPEStimestamp_from_asc
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c
    functionUses: 52
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: warn
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c
    functionUses: 4
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void warn(void)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:94,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:95,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:98,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:101,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:105,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:108,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:111,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:114,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:117,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:120,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:123,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:126,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:129,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:132,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:135,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:138,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:141,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:144,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:147,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:150,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:153,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:156,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:159,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:162,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:165,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:172,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:175,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:178,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:186,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:188,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:189,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:190,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:200,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:203,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:206,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:209,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:212,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:215,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:218,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:221,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:224,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:227,1
    - Dst: warn
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:230,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:233,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:244,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:247,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:250,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:256,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:257,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:261,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:264,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:267,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:272,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:275,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:278,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:282,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:290,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:292,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:295,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:298,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:301,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:304,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:307,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:310,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:314,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:316,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:319,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c:322,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 134
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 327
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGprepared_statement
    - PGTYPESnumeric_to_asc
    - strncpy
    - sqlprint
    - ECPGprepare
    - ECPGdebug
    - memset
    - printf
    - ECPGdisconnect
    - warn
    - exit
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c
    functionUses: 53
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:40,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:47,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 51
    functionName: check_result_of_insert
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c
    functionUses: 0
    functionsReached:
    - sqlprint
    - ECPGdo
    - printf
    linkageType: ''
    returnType: void
    signature: void check_result_of_insert(void)
  - BBCount: 69
    BranchProfiles: []
    Callsites:
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:68,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:69,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:70,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:71,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:76,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:79,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:82,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:85,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:88,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:91,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:94,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:97,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:100,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:103,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:110,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:113,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:116,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:117,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:118,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:125,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:128,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:130,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:133,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:136,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:137,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:138,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:141,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:144,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:149,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:152,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:155,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:156,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:157,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:160,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:163,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:164,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:171,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:174,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:176,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:179,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:182,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:183,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:184,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:187,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:190,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:191,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:198,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:201,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:203,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:206,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:209,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:210,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:211,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:214,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:217,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:218,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:225,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:228,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:230,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:233,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:236,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:237,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:238,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:241,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:244,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:245,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:252,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:255,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:257,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:260,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:263,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:264,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:265,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:268,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:271,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:272,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:279,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:282,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:284,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:287,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:290,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:291,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:292,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:295,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:298,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:299,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:306,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:309,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:314,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:317,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:320,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:323,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:326,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:329,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:333,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:336,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:339,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:340,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:341,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:342,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:346,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:349,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:350,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:351,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:359,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:362,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:363,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:366,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:370,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:373,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:376,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:377,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:378,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:379,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:383,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:386,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:387,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:388,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:396,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:399,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:400,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:403,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:407,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:410,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:413,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:414,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:415,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:416,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:420,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:423,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:424,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:425,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:433,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:436,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:437,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:440,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:444,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:447,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:450,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:451,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:452,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:457,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:460,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:461,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:470,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:473,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:474,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:477,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:481,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:484,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:487,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:488,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:489,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:494,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:497,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:498,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:507,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:510,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:511,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:514,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:518,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:521,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:524,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:525,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:526,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:529,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:532,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:533,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:538,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:541,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:542,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:545,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:549,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:552,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:555,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:556,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:557,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:560,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:563,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:564,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:569,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:572,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:573,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:576,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:580,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:583,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:586,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:587,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:588,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:591,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:594,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:595,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:596,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:604,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:607,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:608,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:611,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:615,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:618,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:621,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:622,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:623,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:626,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:629,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:630,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:631,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:639,1
    - Dst: check_result_of_insert
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:642,1
    - Dst: ECPGdeallocate
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:643,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:646,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:650,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:653,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:656,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c:659,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 344
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 664
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-prepareas.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - check_result_of_insert
    - sqlprint
    - ECPGprepare
    - ECPGdeallocate
    - strlen
    - printf
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c
    functionUses: 53
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:44,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:45,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:56,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:59,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:62,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:66,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:69,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:72,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:75,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:80,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:83,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:87,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:92,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:95,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:98,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:101,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:104,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:107,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:110,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:113,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:117,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:122,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:125,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:130,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:136,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:139,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:142,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:146,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:151,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:154,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:157,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:159,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:162,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:165,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:169,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:172,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:175,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:183,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:184,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:188,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:191,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:202,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:210,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:213,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:216,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:220,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:223,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:226,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:230,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:233,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:236,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:240,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:243,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:246,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 111
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 249
    functionName: test
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c
    functionUses: 3
    functionsReached:
    - ECPGdo
    - ECPGprepared_statement
    - sqlprint
    - ECPGprepare
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: void
    signature: void test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:252,1
    - Dst: test
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 256
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-autoprep.c
    functionUses: 18
    functionsReached:
    - test
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c
    functionUses: 54
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: fa
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int fa(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - x
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: fb
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int fb(int x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - x
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: fc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int fc(const char *x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - x
    - i
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: fd
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int fd(const char *x,int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - x
    argTypes:
    - enum e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: fe
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c
    functionUses: 5
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int fe(enum e x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - notice
    - trans
    argTypes:
    - char*
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 122
    functionName: sqlnotice
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void sqlnotice(const char *notice, short trans)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fb
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:165,1
    - Dst: fa
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:188,1
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:201,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:203,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:205,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:209,1
    - Dst: fa
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:212,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:218,1
    - Dst: fb
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:221,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:227,1
    - Dst: fc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:230,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:236,1
    - Dst: fd
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:239,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:245,1
    - Dst: fe
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:248,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:254,1
    - Dst: sqlnotice
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c:257,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 261
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-init.c
    functionUses: 18
    functionsReached:
    - fb
    - ECPGdo
    - fe
    - fa
    - ECPGdebug
    - printf
    - sqlnotice
    - fd
    - fc
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c
    functionUses: 55
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:35,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:36,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:47,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:52,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:55,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:58,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:63,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:66,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:69,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:71,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:74,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:77,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:80,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:85,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:88,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:91,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:93,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:96,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:99,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:102,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:107,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:110,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:113,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:115,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:118,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:121,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:124,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:129,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:132,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:135,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:137,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:140,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:143,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:146,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:151,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:154,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:157,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:159,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:162,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c:165,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 170
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-show.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c
    functionUses: 56
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:55,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:58,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:63,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:64,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:67,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:71,1
    - Dst: ECPGallocate_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:74,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:78,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:82,1
    - Dst: ECPGset_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:87,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:93,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:101,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:104,1
    - Dst: ECPGget_desc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:107,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:112,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:115,1
    - Dst: ECPGdeallocate_all
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:116,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:119,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:122,1
    - Dst: ECPGdeallocate_all
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:123,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:126,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:129,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:130,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:136,1
    - Dst: ECPGprepared_statement
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:137,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:141,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 146
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test6.c
    functionUses: 18
    functionsReached:
    - ECPGtrans
    - ECPGdo
    - ECPGset_desc
    - ECPGprepared_statement
    - ECPGprepare
    - ECPGdeallocate_all
    - ECPGallocate_desc
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c
    functionUses: 57
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:42,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:43,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:46,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:50,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:53,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:63,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:66,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:69,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:72,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:75,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:78,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:82,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:85,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:88,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:91,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:96,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:99,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:102,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:104,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:107,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:110,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:113,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:118,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:121,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:124,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:126,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:129,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:132,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:135,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:138,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:141,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:144,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:147,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:150,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:153,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:156,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c:159,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 164
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-createtableas.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c
    functionUses: 58
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:39,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:40,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:51,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:54,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:57,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:61,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:64,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:67,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:70,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:73,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:76,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:79,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:82,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:85,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:88,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:91,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:94,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:102,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:105,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:108,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:116,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:126,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:129,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:132,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:138,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:141,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:144,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:148,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:157,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:160,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:163,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:165,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:168,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:171,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:179,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:180,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:184,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:187,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:191,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:198,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:201,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:204,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:206,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:209,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:212,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:216,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:219,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:222,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:226,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:229,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c:232,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 102
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 237
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-fetch.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - sqlprint
    - ECPGdebug
    - strlen
    - printf
    - ECPGdisconnect
    - exit
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c
    functionUses: 59
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:46,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:48,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:49,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:52,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:57,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:64,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:67,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:73,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:77,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:81,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:84,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:88,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:91,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 106
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/connect-test3.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGdebug
    - ECPGdisconnect
    - ECPGconnect
    - strcpy
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c
    functionUses: 60
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPGdebug(X,Y)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:36,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:37,1
    - Dst: ECPGsetcommit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:41,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:51,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:54,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:57,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:61,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:64,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:67,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:71,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:76,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:79,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:84,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:86,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:89,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:92,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:95,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:98,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:101,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:105,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:108,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:111,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:115,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:118,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c:121,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 126
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-parser.c
    functionUses: 18
    functionsReached:
    - ECPGdo
    - ECPGsetcommit
    - sqlprint
    - ECPGdebug
    - printf
    - ECPGdisconnect
    - ECPGconnect
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:54,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:57,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:59,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:63,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:65,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:66,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:70,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:72,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:73,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:79,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - decimal*
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 83
    functionName: deccall2
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPESnumeric_free
    - PGTYPESnumeric_new
    - PGTYPESnumeric_from_decimal
    linkageType: ''
    returnType: int
    signature: int deccall2(decimal *arg1, decimal *arg2, int (*ptr) (numeric *, numeric
      *))
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:97,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:97,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:100,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:103,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:105,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:109,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:111,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:112,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:116,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:118,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:119,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:120,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:124,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:126,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:127,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:128,1
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:138,1
    - Dst: PGTYPESnumeric_to_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:139,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:142,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:143,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:144,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 3
    argNames:
    - arg1
    - arg2
    - result
    argTypes:
    - decimal*
    - decimal*
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 147
    functionName: deccall3
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPESnumeric_from_decimal
    - risnull
    - PGTYPESnumeric_to_decimal
    - PGTYPESnumeric_new
    - rsetnull
    - PGTYPESnumeric_free
    linkageType: ''
    returnType: int
    signature: int deccall3(decimal *arg1, decimal *arg2, decimal *result, int (*ptr)
      (numeric *, numeric *, numeric *))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: deccall3
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - arg1
    - arg2
    - sum
    argTypes:
    - decimal*
    - decimal*
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 164
    functionName: decadd
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 2
    functionsReached:
    - deccall3
    linkageType: ''
    returnType: int
    signature: int decadd(decimal *arg1, decimal *arg2, decimal *sum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: deccall2
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - decimal*
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 170
    functionName: deccmp
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - deccall2
    linkageType: ''
    returnType: int
    signature: int deccmp(decimal *arg1, decimal *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - target
    argTypes:
    - decimal*
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: deccopy
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void deccopy(decimal *src, decimal *target)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:181,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 195
    functionName: ecpg_strndup
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - malloc
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      ecpg_strndup(const char *str, size_t len)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:204,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:205,1
    - Dst: ecpg_strndup
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:208,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:215,1
    - Dst: PGTYPESnumeric_to_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:233,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:235,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:241,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - cp
    - len
    - np
    argTypes:
    - char*
    - int
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 243
    functionName: deccvasc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - risnull
    - PGTYPESnumeric_to_decimal
    - free
    - ecpg_strndup
    - rsetnull
    - PGTYPESnumeric_from_asc
    - PGTYPESnumeric_free
    linkageType: ''
    returnType: int
    signature: int deccvasc(const char *cp, int len, decimal *np)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:251,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:252,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:255,1
    - Dst: PGTYPESnumeric_from_double
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:259,1
    - Dst: PGTYPESnumeric_to_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:261,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - dbl
    - np
    argTypes:
    - double
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 265
    functionName: deccvdbl
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPESnumeric_from_double
    - risnull
    - PGTYPESnumeric_to_decimal
    - PGTYPESnumeric_new
    - rsetnull
    - PGTYPESnumeric_free
    linkageType: ''
    returnType: int
    signature: int deccvdbl(double dbl, decimal *np)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:273,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:274,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:277,1
    - Dst: PGTYPESnumeric_from_int
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:281,1
    - Dst: PGTYPESnumeric_to_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:283,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - in
    - np
    argTypes:
    - int
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 287
    functionName: deccvint
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 2
    functionsReached:
    - PGTYPESnumeric_from_int
    - risnull
    - PGTYPESnumeric_to_decimal
    - PGTYPESnumeric_new
    - rsetnull
    - PGTYPESnumeric_free
    linkageType: ''
    returnType: int
    signature: int deccvint(int in, decimal *np)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:295,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:296,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:299,1
    - Dst: PGTYPESnumeric_from_long
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:303,1
    - Dst: PGTYPESnumeric_to_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:305,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:307,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - lng
    - np
    argTypes:
    - long
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 309
    functionName: deccvlong
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - risnull
    - PGTYPESnumeric_to_decimal
    - PGTYPESnumeric_new
    - rsetnull
    - PGTYPESnumeric_from_long
    - PGTYPESnumeric_free
    linkageType: ''
    returnType: int
    signature: int deccvlong(long lng, decimal *np)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: deccall3
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:317,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - n1
    - n2
    - result
    argTypes:
    - decimal*
    - decimal*
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 334
    functionName: decdiv
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - deccall3
    linkageType: ''
    returnType: int
    signature: int decdiv(decimal *n1, decimal *n2, decimal *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: deccall3
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:342,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - n1
    - n2
    - result
    argTypes:
    - decimal*
    - decimal*
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 356
    functionName: decmul
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - deccall3
    linkageType: ''
    returnType: int
    signature: int decmul(decimal *n1, decimal *n2, decimal *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: deccall3
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:364,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - n1
    - n2
    - result
    argTypes:
    - decimal*
    - decimal*
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 378
    functionName: decsub
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - deccall3
    linkageType: ''
    returnType: int
    signature: int decsub(decimal *n1, decimal *n2, decimal *result)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rsetnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:386,1
    - Dst: risnull
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:387,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:390,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:394,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:396,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:401,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:403,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:405,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:413,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:420,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:425,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:426,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 4
    argNames:
    - np
    - cp
    - len
    - right
    argTypes:
    - decimal*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 429
    functionName: dectoasc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 2
    functionsReached:
    - PGTYPESnumeric_to_asc
    - PGTYPESnumeric_from_decimal
    - risnull
    - PGTYPESnumeric_new
    - strlen
    - free
    - rsetnull
    - PGTYPESnumeric_free
    - strcpy
    linkageType: ''
    returnType: int
    signature: int dectoasc(decimal *np, char *cp, int len, int right)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:435,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:440,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:442,1
    - Dst: PGTYPESnumeric_to_double
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:446,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - np
    - dblp
    argTypes:
    - decimal*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 450
    functionName: dectodbl
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - PGTYPESnumeric_free
    - PGTYPESnumeric_new
    - PGTYPESnumeric_from_decimal
    - PGTYPESnumeric_to_double
    linkageType: ''
    returnType: int
    signature: int dectodbl(decimal *np, double *dblp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:456,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:462,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:464,1
    - Dst: PGTYPESnumeric_to_int
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:469,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:471,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - np
    - ip
    argTypes:
    - decimal*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 477
    functionName: dectoint
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 2
    functionsReached:
    - PGTYPESnumeric_to_int
    - PGTYPESnumeric_free
    - PGTYPESnumeric_new
    - PGTYPESnumeric_from_decimal
    linkageType: ''
    returnType: int
    signature: int dectoint(decimal *np, int *ip)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:483,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:489,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:491,1
    - Dst: PGTYPESnumeric_to_long
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:496,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:498,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - np
    - lngp
    argTypes:
    - decimal*
    - long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 504
    functionName: dectolong
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - PGTYPESnumeric_to_long
    - PGTYPESnumeric_free
    - PGTYPESnumeric_new
    - PGTYPESnumeric_from_decimal
    linkageType: ''
    returnType: int
    signature: int dectolong(decimal *np, long *lngp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:510,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:516,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - d
    - str
    argTypes:
    - date
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 520
    functionName: rdatestr
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 3
    functionsReached:
    - free
    - PGTYPESdate_to_asc
    - strcpy
    linkageType: ''
    returnType: int
    signature: int rdatestr(date d, char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rdefmtdate
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - d
    argTypes:
    - char*
    - date*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 532
    functionName: rstrdate
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - rdefmtdate
    linkageType: ''
    returnType: int
    signature: int rstrdate(const char *str, date * d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESdate_today
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - date*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 538
    functionName: rtoday
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPESdate_today
    linkageType: ''
    returnType: void
    signature: void rtoday(date * d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESdate_julmdy
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - d
    - mdy
    argTypes:
    - date
    - short*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 550
    functionName: rjulmdy
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPESdate_julmdy
    linkageType: ''
    returnType: int
    signature: int rjulmdy(date d, short *mdy)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESdate_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:559,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - d
    - fmt
    - str
    argTypes:
    - date*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 576
    functionName: rdefmtdate
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 2
    functionsReached:
    - PGTYPESdate_defmt_asc
    linkageType: ''
    returnType: int
    signature: int rdefmtdate(date * d, const char *fmt, const char *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESdate_fmt_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - d
    - fmt
    - str
    argTypes:
    - date
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 589
    functionName: rfmtdate
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - PGTYPESdate_fmt_asc
    linkageType: ''
    returnType: int
    signature: int rfmtdate(date d, const char *fmt, char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESdate_mdyjul
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - mdy
    - d
    argTypes:
    - short*
    - date*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 591
    functionDepth: 1
    functionLinenumber: 591
    functionLinenumberEnd: 601
    functionName: rmdyjul
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - PGTYPESdate_mdyjul
    linkageType: ''
    returnType: int
    signature: int rmdyjul(short *mdy, date * d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESdate_dayofweek
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - date
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 607
    functionName: rdayofweek
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPESdate_dayofweek
    linkageType: ''
    returnType: int
    signature: int rdayofweek(date d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPEStimestamp_current
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ts
    argTypes:
    - timestamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 615
    functionName: dtcurrent
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPEStimestamp_current
    linkageType: ''
    returnType: void
    signature: void dtcurrent(timestamp * ts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:625,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - str
    - ts
    argTypes:
    - char*
    - timestamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 641
    functionName: dtcvasc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPEStimestamp_from_asc
    linkageType: ''
    returnType: int
    signature: int dtcvasc(char *str, timestamp * ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPEStimestamp_defmt_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - inbuf
    - fmtstr
    - dtvalue
    argTypes:
    - char*
    - char*
    - timestamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 647
    functionName: dtcvfmtasc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPEStimestamp_defmt_asc
    linkageType: ''
    returnType: int
    signature: int dtcvfmtasc(char *inbuf, char *fmtstr, timestamp * dtvalue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPEStimestamp_sub
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ts1
    - ts2
    - iv
    argTypes:
    - timestamp*
    - timestamp*
    - interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 653
    functionName: dtsub
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPEStimestamp_sub
    linkageType: ''
    returnType: int
    signature: int dtsub(timestamp * ts1, timestamp * ts2, interval * iv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:658,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:660,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ts
    - output
    argTypes:
    - timestamp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 663
    functionName: dttoasc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - free
    - PGTYPEStimestamp_to_asc
    - strcpy
    linkageType: ''
    returnType: int
    signature: int dttoasc(timestamp * ts, char *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPEStimestamp_fmt_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ts
    - output
    - str_len
    - fmtstr
    argTypes:
    - timestamp*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 669
    functionName: dttofmtasc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - PGTYPEStimestamp_fmt_asc
    linkageType: ''
    returnType: int
    signature: int dttofmtasc(timestamp * ts, char *output, int str_len, char *fmtstr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESinterval_to_asc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:677,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:682,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:683,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - i
    - str
    argTypes:
    - interval*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 685
    functionName: intoasc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - free
    - strcpy
    - PGTYPESinterval_to_asc
    linkageType: ''
    returnType: int
    signature: int intoasc(interval * i, char *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log10
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:712,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:735,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - lng_val
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 746
    functionName: initValue
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - malloc
    - log10
    linkageType: ''
    returnType: int
    signature: int initValue(long lng_val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:752,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 764
    functionName: getRightMostDot
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: int
    signature: int getRightMostDot(const char *str)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:770,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:787,1
    - Dst: initValue
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:795,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:797,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:803,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:807,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:807,1
    - Dst: getRightMostDot
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:814,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:850,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:939,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:947,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:952,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:957,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:958,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 126
    argCount: 3
    argNames:
    - lng_val
    - fmt
    - outbuf
    argTypes:
    - long
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 767
    functionDepth: 2
    functionLinenumber: 767
    functionLinenumberEnd: 961
    functionName: rfmtlong
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - strcat
    - getRightMostDot
    - strchr
    - initValue
    - malloc
    - strlen
    - free
    linkageType: ''
    returnType: int
    signature: int rfmtlong(long lng_val, const char *fmt, char *outbuf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: islower
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:967,1
    - Dst: toupper
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:968,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 969
    functionName: rupshift
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - islower
    - toupper
    linkageType: ''
    returnType: void
    signature: void rupshift(char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 976
    functionName: byleng
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int byleng(char *str, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: byleng
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:981,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - src
    - len
    - dest
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 985
    functionName: ldchar
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - byleng
    - memmove
    linkageType: ''
    returnType: void
    signature: void ldchar(char *src, int len, char *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - msgnum
    - s
    - maxsize
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 987
    functionDepth: 0
    functionLinenumber: 987
    functionLinenumberEnd: 994
    functionName: rgetmsg
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rgetmsg(int msgnum, char *s, int maxsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - offset
    - type
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 996
    functionDepth: 0
    functionLinenumber: 996
    functionLinenumberEnd: 1002
    functionName: rtypalign
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rtypalign(int offset, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type
    - len
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 1004
    functionDepth: 0
    functionLinenumber: 1004
    functionLinenumberEnd: 1010
    functionName: rtypmsize
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rtypmsize(int type, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - sqltype
    - sqllen
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1012
    functionDepth: 0
    functionLinenumber: 1012
    functionLinenumberEnd: 1018
    functionName: rtypwidth
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rtypwidth(int sqltype, int sqllen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGset_var
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:1023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - number
    - pointer
    - lineno
    argTypes:
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1020
    functionDepth: 1
    functionLinenumber: 1020
    functionLinenumberEnd: 1024
    functionName: ECPG_informix_set_var
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - ECPGset_var
    linkageType: ''
    returnType: void
    signature: void ECPG_informix_set_var(int number, void *pointer, int lineno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_var
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:1029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - number
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1026
    functionDepth: 1
    functionLinenumber: 1026
    functionLinenumberEnd: 1030
    functionName: ECPG_informix_get_var
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - ECPGget_var
    linkageType: ''
    returnType: void
    signature: 'void *

      ECPG_informix_get_var(int number)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:1035,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:1040,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1032
    functionDepth: 1
    functionLinenumber: 1032
    functionLinenumberEnd: 1041
    functionName: ECPG_informix_reset_sqlca
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ECPGget_sqlca
    linkageType: ''
    returnType: void
    signature: void ECPG_informix_reset_sqlca(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:1046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - t
    - ptr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1048
    functionName: rsetnull
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 9
    functionsReached:
    - ECPGset_noind_null
    linkageType: ''
    returnType: int
    signature: int rsetnull(int t, char *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGis_noind_null
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:1053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - ptr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1050
    functionDepth: 1
    functionLinenumber: 1050
    functionLinenumberEnd: 1054
    functionName: risnull
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 9
    functionsReached:
    - ECPGis_noind_null
    linkageType: ''
    returnType: int
    signature: int risnull(int t, const char *ptr)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - offset
    - alignment
    - size
    - current
    - next
    argTypes:
    - long
    - int
    - int
    - long*
    - long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 42
    functionName: ecpg_sqlda_align_add_size
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ecpg_sqlda_align_add_size(long offset, int alignment, int size,
      long *current, long *next)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:49,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:56,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:56,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 62
    functionName: sqlda_compat_empty_size
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached:
    - PQfname
    - strlen
    - ecpg_sqlda_align_add_size
    - PQnfields
    linkageType: ''
    returnType: long
    signature: long sqlda_compat_empty_size(const PGresult *res)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:67,1
    - Dst: sqlda_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:74,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:74,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:80,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:84,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:88,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:92,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:95,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:98,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:101,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:104,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:116,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:117,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:119,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:122,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:126,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:127,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:131,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:134,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:137,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:144,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:144,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:146,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 62
    argCount: 4
    argNames:
    - res
    - row
    - compat
    - offset
    argTypes:
    - PGresult*
    - int
    - enum COMPAT_MODE
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 64
    functionDepth: 5
    functionLinenumber: 64
    functionLinenumberEnd: 153
    functionName: sqlda_common_total_size
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached:
    - PQftype
    - ecpg_sqlda_align_add_size
    - PGTYPESnumeric_from_asc
    - strlen
    - sqlda_dynamic_type
    - PQgetvalue
    - PQgetisnull
    - PGTYPESnumeric_free
    - PQnfields
    linkageType: ''
    returnType: long
    signature: long sqlda_common_total_size(const PGresult *res, int row, enum COMPAT_MODE
      compat, long offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlda_compat_empty_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:161,1
    - Dst: sqlda_common_total_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - res
    - row
    - compat
    argTypes:
    - PGresult*
    - int
    - enum COMPAT_MODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 156
    functionDepth: 6
    functionLinenumber: 156
    functionLinenumberEnd: 168
    functionName: sqlda_compat_total_size
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached:
    - sqlda_compat_empty_size
    - sqlda_common_total_size
    linkageType: ''
    returnType: long
    signature: long sqlda_compat_total_size(const PGresult *res, int row, enum COMPAT_MODE
      compat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:174,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 183
    functionName: sqlda_native_empty_size
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached:
    - ecpg_sqlda_align_add_size
    - PQnfields
    linkageType: ''
    returnType: long
    signature: long sqlda_native_empty_size(const PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlda_native_empty_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:190,1
    - Dst: sqlda_common_total_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - res
    - row
    - compat
    argTypes:
    - PGresult*
    - int
    - enum COMPAT_MODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 185
    functionDepth: 6
    functionLinenumber: 185
    functionLinenumberEnd: 197
    functionName: sqlda_native_total_size
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached:
    - sqlda_native_empty_size
    - sqlda_common_total_size
    linkageType: ''
    returnType: long
    signature: long sqlda_native_total_size(const PGresult *res, int row, enum COMPAT_MODE
      compat)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlda_compat_total_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:214,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:215,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:219,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:221,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:225,1
    - Dst: sqlda_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:231,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:231,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:232,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:232,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:234,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:241,1
    - Dst: PQfsize
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 4
    argNames:
    - line
    - res
    - row
    - compat
    argTypes:
    - int
    - PGresult*
    - int
    - enum COMPAT_MODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 204
    functionDepth: 7
    functionLinenumber: 204
    functionLinenumberEnd: 246
    functionName: ecpg_build_compat_sqlda
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached:
    - PQfname
    - ecpg_alloc
    - PQfsize
    - ecpg_log
    - sqlda_compat_total_size
    - PQftype
    - memset
    - strlen
    - sqlda_dynamic_type
    - strcpy
    - PQnfields
    linkageType: ''
    returnType: struct sqlda_compat
    signature: 'struct sqlda_compat *

      ecpg_build_compat_sqlda(int line, PGresult *res, int row, enum COMPAT_MODE compat)'
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: sqlda_compat_empty_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:266,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:281,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:287,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:293,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:299,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:304,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:309,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:314,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:319,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:330,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:334,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:336,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:340,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:341,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:344,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:348,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:352,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:353,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:359,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:364,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:369,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:374,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:382,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:382,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:383,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:391,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:392,1
    - Dst: ecpg_get_data
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:399,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:405,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 114
    argCount: 5
    argNames:
    - lineno
    - _sqlda
    - res
    - row
    - compat
    argTypes:
    - int
    - struct sqlda_compat**
    - PGresult*
    - int
    - enum COMPAT_MODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 254
    functionDepth: 6
    functionLinenumber: 254
    functionLinenumberEnd: 409
    functionName: ecpg_set_compat_sqlda
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ECPGset_noind_null
    - sqlda_compat_empty_size
    - ecpg_log
    - ecpg_sqlda_align_add_size
    - PGTYPESnumeric_from_asc
    - ecpg_get_data
    - strlen
    - PQgetvalue
    - PQgetisnull
    - PGTYPESnumeric_free
    linkageType: ''
    returnType: void
    signature: void ecpg_set_compat_sqlda(int lineno, struct sqlda_compat **_sqlda,
      const PGresult *res, int row, enum COMPAT_MODE compat)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlda_native_total_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:418,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:419,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:423,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:425,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:426,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:427,1
    - Dst: sqlda_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:434,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:434,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:435,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:436,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - line
    - res
    - row
    - compat
    argTypes:
    - int
    - PGresult*
    - int
    - enum COMPAT_MODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 411
    functionDepth: 7
    functionLinenumber: 411
    functionLinenumberEnd: 441
    functionName: ecpg_build_native_sqlda
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached:
    - PQfname
    - ecpg_alloc
    - sqlda_native_total_size
    - ecpg_log
    - PQftype
    - memset
    - strlen
    - sqlda_dynamic_type
    - sprintf
    - strcpy
    - PQnfields
    linkageType: ''
    returnType: struct sqlda_struct
    signature: 'struct sqlda_struct *

      ecpg_build_native_sqlda(int line, PGresult *res, int row, enum COMPAT_MODE compat)'
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: sqlda_native_empty_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:455,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:470,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:476,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:482,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:488,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:493,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:498,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:503,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:508,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:519,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:523,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:525,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:529,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:530,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:533,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:537,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:541,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:542,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:548,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:553,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:558,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:563,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:571,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:571,1
    - Dst: ecpg_sqlda_align_add_size
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:572,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:578,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:579,1
    - Dst: ecpg_get_data
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c:584,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 109
    argCount: 5
    argNames:
    - lineno
    - _sqlda
    - res
    - row
    - compat
    argTypes:
    - int
    - struct sqlda_struct**
    - PGresult*
    - int
    - enum COMPAT_MODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 443
    functionDepth: 5
    functionLinenumber: 443
    functionLinenumberEnd: 592
    functionName: ecpg_set_native_sqlda
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/sqlda.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ECPGset_noind_null
    - sqlda_native_empty_size
    - ecpg_log
    - ecpg_sqlda_align_add_size
    - PGTYPESnumeric_from_asc
    - ecpg_get_data
    - strlen
    - PQgetvalue
    - PQgetisnull
    - PGTYPESnumeric_free
    linkageType: ''
    returnType: void
    signature: void ecpg_set_native_sqlda(int lineno, struct sqlda_struct **_sqlda,
      const PGresult *res, int row, enum COMPAT_MODE compat)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:15,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:19,1
    - Dst: ECPGfree_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:20,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:25,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:30,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:33,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:37,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:40,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:44,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:47,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:51,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:54,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:58,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:61,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:65,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:68,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:72,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:75,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:79,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:82,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:87,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:90,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:92,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:95,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:99,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:102,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:106,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:109,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:113,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:116,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:120,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:123,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:127,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:130,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:134,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:137,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:141,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:144,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:148,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:151,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:155,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:158,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:162,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:165,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:169,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:172,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:176,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:179,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:183,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:186,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:190,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:193,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:197,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:200,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:204,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:207,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:211,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:212,1
    - Dst: ECPGfree_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:215,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 90
    argCount: 4
    argNames:
    - line
    - code
    - sqlstate
    - str
    argTypes:
    - int
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 216
    functionName: ecpg_raise
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/error.c
    functionUses: 0
    functionsReached:
    - strncpy
    - ecpg_log
    - strlen
    - ECPGfree_auto_mem
    - ECPGget_sqlca
    - ecpg_gettext
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ecpg_raise(int line, int code, const char *sqlstate, const char
      *str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:221,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:227,1
    - Dst: ECPGfree_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:228,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:237,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:240,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:242,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:244,1
    - Dst: PQstatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:250,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:253,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:258,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:259,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:262,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:265,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:266,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:267,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:268,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:272,1
    - Dst: ECPGfree_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:276,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 4
    argNames:
    - line
    - result
    - conn
    - compat
    argTypes:
    - int
    - PGresult*
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 277
    functionName: ecpg_raise_backend
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/error.c
    functionUses: 0
    functionsReached:
    - INFORMIX_MODE
    - strcmp
    - strncpy
    - PQresultErrorField
    - ecpg_log
    - snprintf
    - strlen
    - ECPGfree_auto_mem
    - ECPGget_sqlca
    - strncmp
    - ecpg_gettext
    - PQerrorMessage
    - PQstatus
    linkageType: ''
    returnType: void
    signature: void ecpg_raise_backend(int line, PGresult *result, PGconn *conn, int
      compat)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:285,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:285,1
    - Dst: ecpg_raise_backend
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:286,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:290,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:298,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:299,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:308,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:308,1
    - Dst: ecpg_raise_backend
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:309,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:310,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:317,1
    - Dst: PQendcopy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:318,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:319,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:323,1
    - Dst: ecpg_raise_backend
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:325,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:326,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 4
    argNames:
    - results
    - lineno
    - connection
    - compat
    argTypes:
    - PGresult*
    - int
    - PGconn*
    - enum COMPAT_MODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 280
    functionDepth: 3
    functionLinenumber: 280
    functionLinenumberEnd: 330
    functionName: ecpg_check_PQresult
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/error.c
    functionUses: 0
    functionsReached:
    - ecpg_raise_backend
    - PQclear
    - PQendcopy
    - ecpg_log
    - ecpg_raise
    - PQresultErrorMessage
    - PQresultStatus
    - PQerrorMessage
    linkageType: ''
    returnType: bool
    signature: bool ecpg_check_PQresult(PGresult *results, int lineno, PGconn *connection,
      enum COMPAT_MODE compat)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:336,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:340,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:345,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/error.c:345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 346
    functionName: sqlprint
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/error.c
    functionUses: 45
    functionsReached:
    - ecpg_log
    - ecpg_gettext
    - ECPGget_sqlca
    - fprintf
    linkageType: ''
    returnType: void
    signature: void sqlprint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: descriptor_deallocate_all
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: descriptor_destructor
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - descriptor_deallocate_all
    linkageType: ''
    returnType: void
    signature: void descriptor_destructor(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_create
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: descriptor_key_init
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - pthread_key_create
    linkageType: ''
    returnType: void
    signature: void descriptor_key_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_once
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:43,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: get_descriptors
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - pthread_getspecific
    - pthread_once
    linkageType: ''
    returnType: struct descriptor
    signature: 'struct descriptor *

      get_descriptors(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - struct descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: set_descriptors
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - pthread_setspecific
    linkageType: ''
    returnType: void
    signature: void set_descriptors(struct descriptor *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_find_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - line
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 62
    functionName: ecpg_result_by_descriptor
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - ecpg_find_desc
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      ecpg_result_by_descriptor(int line, const char *name)'
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - type
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 82
    functionName: ecpg_dynamic_type_DDT
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ecpg_dynamic_type_DDT(Oid type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:88,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:92,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:97,1
    - Dst: ecpg_result_by_descriptor
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:98,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:102,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - lineno
    - desc_name
    - count
    argTypes:
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 106
    functionName: ECPGget_desc_header
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 6
    functionsReached:
    - ecpg_result_by_descriptor
    - ecpg_log
    - ecpg_raise
    - ECPGget_sqlca
    - ecpg_init_sqlca
    - PQnfields
    linkageType: ''
    returnType: bool
    signature: bool ECPGget_desc_header(int lineno, const char *desc_name, int *count)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:144,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 4
    argNames:
    - lineno
    - var
    - vartype
    - value
    argTypes:
    - int
    - void*
    - enum ECPGttype
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 149
    functionName: get_int_item
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - ecpg_raise
    linkageType: ''
    returnType: bool
    signature: bool get_int_item(int lineno, void *var, enum ECPGttype vartype, int
      value)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:187,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 4
    argNames:
    - lineno
    - target
    - var
    - vartype
    argTypes:
    - int
    - int*
    - void*
    - enum ECPGttype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 192
    functionName: set_int_item
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - ecpg_raise
    linkageType: ''
    returnType: bool
    signature: bool set_int_item(int lineno, int *target, const void *var, enum ECPGttype
      vartype)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:202,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:210,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:210,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:212,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:214,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:220,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 5
    argNames:
    - lineno
    - var
    - vartype
    - value
    - varcharsize
    argTypes:
    - int
    - void*
    - enum ECPGttype
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 225
    functionName: get_char_item
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - ecpg_raise
    - strncpy
    - strlen
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool get_char_item(int lineno, void *var, enum ECPGttype vartype, char
      *value, int varcharsize)
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:243,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:248,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:253,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:254,1
    - Dst: ecpg_result_by_descriptor
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:255,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:258,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:262,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:264,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:266,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:267,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:271,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:274,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:276,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:289,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:290,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:291,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:292,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:293,1
    - Dst: get_char_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:324,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:324,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:326,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:330,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:330,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:334,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:336,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:343,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:345,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:352,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:352,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:354,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:358,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:358,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:362,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:362,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:364,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:368,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:368,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:372,1
    - Dst: PQfsize
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:372,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:374,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:378,1
    - Dst: PQfsize
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:378,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:382,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:382,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:384,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:388,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:388,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:392,1
    - Dst: ecpg_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:392,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:392,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:394,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:398,1
    - Dst: ecpg_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:398,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:398,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:402,1
    - Dst: ecpg_dynamic_type_DDT
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:402,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:402,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:404,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:408,1
    - Dst: ecpg_dynamic_type_DDT
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:408,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:408,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:412,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:412,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:414,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:418,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:418,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:431,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:433,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:434,1
    - Dst: ecpg_auto_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:440,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:444,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:453,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:453,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:455,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:459,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:459,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:464,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:465,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:466,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:470,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:477,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:481,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:484,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:485,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:486,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:502,1
    - Dst: uselocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:503,1
    - Dst: _configthreadlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:506,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:508,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:508,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:512,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:516,1
    - Dst: ecpg_store_result
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:519,1
    - Dst: uselocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:523,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:527,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:528,1
    - Dst: _configthreadlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:532,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:550,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:552,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:553,1
    - Dst: ecpg_auto_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:560,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:564,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:573,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:573,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:575,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:579,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:579,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:583,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 210
    argCount: 3
    argNames:
    - lineno
    - desc_name
    - index
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 234
    functionDepth: 5
    functionLinenumber: 234
    functionLinenumberEnd: 585
    functionName: ECPGget_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 10
    functionsReached:
    - PQfname
    - ecpg_store_result
    - ECPGget_sqlca
    - get_char_item
    - PQnfields
    - Assert
    - ecpg_dynamic_type_DDT
    - setlocale
    - PQftype
    - get_int_item
    - PQntuples
    - va_arg
    - PQfmod
    - va_end
    - ecpg_auto_alloc
    - va_start
    - _configthreadlocale
    - uselocale
    - ecpg_log
    - ecpg_get_connection
    - ecpg_raise
    - ecpg_free
    - memset
    - ecpg_init_sqlca
    - ecpg_dynamic_type
    - PQgetisnull
    - ecpg_result_by_descriptor
    - PQfsize
    - ecpg_strdup
    - PQgetlength
    - ecpg_gettext
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool ECPGget_desc(int lineno, const char *desc_name, int index, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_find_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - lineno
    - desc_name
    - count
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 589
    functionDepth: 1
    functionLinenumber: 589
    functionLinenumberEnd: 598
    functionName: ECPGset_desc_header
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 1
    functionsReached:
    - ecpg_find_desc
    linkageType: ''
    returnType: bool
    signature: bool ECPGset_desc_header(int lineno, const char *desc_name, int count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - desc_item
    - var
    - tobeinserted
    argTypes:
    - struct descriptor_item*
    - struct variable*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 618
    functionName: set_desc_attr
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - ecpg_free
    linkageType: ''
    returnType: void
    signature: "void set_desc_attr(struct descriptor_item *desc_item, struct variable
      *var,\n\t\t\t  char *tobeinserted)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_find_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:629,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:641,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:651,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:654,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:661,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:666,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:667,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:669,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:670,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:671,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:693,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:695,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:696,1
    - Dst: set_desc_attr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:700,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:706,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:710,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:714,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:718,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:722,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:729,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:730,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:731,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:732,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:737,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:738,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 76
    argCount: 3
    argNames:
    - lineno
    - desc_name
    - index
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 621
    functionDepth: 3
    functionLinenumber: 621
    functionLinenumberEnd: 741
    functionName: ECPGset_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 3
    functionsReached:
    - set_int_item
    - va_end
    - ecpg_alloc
    - va_arg
    - va_start
    - ecpg_store_input
    - ecpg_raise
    - ecpg_free
    - set_desc_attr
    - ecpg_find_desc
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool ECPGset_desc(int lineno, const char *desc_name, int index, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:753,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:756,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:759,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:760,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:761,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - desc
    argTypes:
    - struct descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 744
    functionDepth: 2
    functionLinenumber: 744
    functionLinenumberEnd: 762
    functionName: descriptor_free
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - ecpg_free
    - PQclear
    linkageType: ''
    returnType: void
    signature: void descriptor_free(struct descriptor *desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:769,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:773,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:778,1
    - Dst: get_descriptors
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:779,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:781,1
    - Dst: set_descriptors
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:786,1
    - Dst: descriptor_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:787,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:791,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - line
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 764
    functionDepth: 3
    functionLinenumber: 764
    functionLinenumberEnd: 793
    functionName: ECPGdeallocate_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 9
    functionsReached:
    - strcmp
    - ecpg_raise
    - set_descriptors
    - get_descriptors
    - ECPGget_sqlca
    - ecpg_init_sqlca
    - descriptor_free
    linkageType: ''
    returnType: bool
    signature: bool ECPGdeallocate_desc(int line, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: descriptor_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:803,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 796
    functionDepth: 3
    functionLinenumber: 796
    functionLinenumberEnd: 806
    functionName: descriptor_deallocate_all
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 1
    functionsReached:
    - descriptor_free
    linkageType: ''
    returnType: void
    signature: void descriptor_deallocate_all(struct descriptor *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:812,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:816,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:821,1
    - Dst: ecpg_alloc::ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:822,1
    - Dst: get_descriptors
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:825,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:826,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:826,1
    - Dst: name::name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:827,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:834,1
    - Dst: result::result
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:835,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:837,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:839,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:842,1
    - Dst: name::name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:842,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - line
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 808
    functionDepth: 2
    functionLinenumber: 808
    functionLinenumberEnd: 845
    functionName: ECPGallocate_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 11
    functionsReached:
    - ecpg_alloc
    - ecpg_alloc::ecpg_alloc
    - PQmakeEmptyPGresult
    - ecpg_raise
    - ecpg_free
    - strlen
    - result::result
    - get_descriptors
    - ECPGget_sqlca
    - ecpg_init_sqlca
    - strcpy
    - name::name
    linkageType: ''
    returnType: bool
    signature: bool ECPGallocate_desc(int line, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_descriptors
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:853,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:855,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:859,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - line
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 848
    functionDepth: 2
    functionLinenumber: 848
    functionLinenumberEnd: 861
    functionName: ecpg_find_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 3
    functionsReached:
    - get_descriptors
    - ecpg_raise
    - strcmp
    linkageType: ''
    returnType: struct descriptor
    signature: 'struct descriptor *

      ecpg_find_desc(int line, const char *name)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:875,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:879,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:882,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:883,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:886,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:889,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:893,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:901,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:907,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:908,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:909,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:910,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:913,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:914,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:915,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:916,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:917,1
    - Dst: ecpg_find_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:924,1
    - Dst: PQdescribePrepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:929,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:930,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:933,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:941,1
    - Dst: PQdescribePrepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:946,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:947,1
    - Dst: ecpg_build_compat_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:950,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:959,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:967,1
    - Dst: PQdescribePrepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:974,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:975,1
    - Dst: ecpg_build_native_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:978,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:987,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:995,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:1005,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 81
    argCount: 5
    argNames:
    - line
    - compat
    - input
    - connection_name
    - stmt_name
    argTypes:
    - int
    - int
    - bool
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 863
    functionDepth: 8
    functionLinenumber: 863
    functionLinenumberEnd: 1008
    functionName: ECPGdescribe
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 4
    functionsReached:
    - va_end
    - INFORMIX_MODE
    - ecpg_build_native_sqlda
    - PQclear
    - va_start
    - ecpg_find_desc
    - ecpg_check_PQresult
    - ecpg_get_connection
    - ecpg_raise
    - ecpg_find_prepared_statement
    - PQdescribePrepared
    - free
    - ecpg_build_compat_sqlda
    - ecpg_gettext
    - va_arg
    linkageType: ''
    returnType: bool
    signature: bool ECPGdescribe(int line, int compat, bool input, const char *connection_name,
      const char *stmt_name, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:46,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 56
    functionName: isvarchar
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - isalnum
    linkageType: ''
    returnType: bool
    signature: bool isvarchar(unsigned char c)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:68,1
    - Dst: deallocate_one
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:69,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:73,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:77,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:80,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:83,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:88,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:91,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:92,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:96,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:99,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:100,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:101,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 114
    functionName: ecpg_register_prepared_stmt
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_alloc
    - ecpg_find_prepared_statement
    - deallocate_one
    - memset
    - ecpg_free
    - ecpg_strdup
    linkageType: ''
    returnType: bool
    signature: bool ecpg_register_prepared_stmt(struct statement *stmt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:141,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:144,1
    - Dst: isvarchar
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:146,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:148,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:148,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:148,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:150,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:154,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:155,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:156,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:158,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:159,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 2
    argNames:
    - text
    - lineno
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 169
    functionName: replace_variables
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - strcat
    - ecpg_alloc
    - memcpy
    - ecpg_free
    - strlen
    - strcpy
    - isvarchar
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool replace_variables(char **text, int lineno)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:179,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:183,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:186,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:193,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:196,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:197,1
    - Dst: replace_variables
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:203,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:205,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:206,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:207,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:212,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:215,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:216,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:217,1
    - Dst: PQprepare
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:223,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:224,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:226,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:227,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:228,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:229,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:233,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:234,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 4
    argNames:
    - lineno
    - con
    - name
    - variable
    argTypes:
    - int
    - struct connection*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 171
    functionDepth: 4
    functionLinenumber: 171
    functionLinenumberEnd: 244
    functionName: prepare_common
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_alloc
    - PQclear
    - ecpg_check_PQresult
    - ecpg_log
    - PQprepare
    - ecpg_free
    - ecpg_strdup
    - replace_variables
    linkageType: ''
    returnType: bool
    signature: bool prepare_common(int lineno, struct connection *con, const char
      *name, const char *variable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:258,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:259,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:263,1
    - Dst: deallocate_one
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:264,1
    - Dst: prepare_common
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:267,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - lineno
    - connection_name
    - questionmarks
    - name
    - variable
    argTypes:
    - int
    - char*
    - bool
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 248
    functionDepth: 5
    functionLinenumber: 248
    functionLinenumberEnd: 268
    functionName: ECPGprepare
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 18
    functionsReached:
    - prepare_common
    - ecpg_get_connection
    - ecpg_find_prepared_statement
    - deallocate_one
    - ecpg_init
    linkageType: ''
    returnType: bool
    signature: "bool ECPGprepare(int lineno, const char *connection_name, const bool
      questionmarks,\n\t\t\tconst char *name, const char *variable)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:281,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - name
    - con
    - prev_
    argTypes:
    - char*
    - struct connection*
    - struct prepared_statement**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 289
    functionName: ecpg_find_prepared_statement
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 3
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct prepared_statement
    signature: "struct prepared_statement *\necpg_find_prepared_statement(const char
      *name,\n\t\t\t\t\t\t\t struct connection *con, struct prepared_statement **prev_)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:297,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:305,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:305,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:305,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:309,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:310,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:311,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:312,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:316,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:326,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:328,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:333,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:334,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:335,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:341,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - lineno
    - c
    - con
    - prev
    - this
    argTypes:
    - int
    - enum COMPAT_MODE
    - struct connection*
    - struct prepared_statement*
    - struct prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 291
    functionDepth: 4
    functionLinenumber: 291
    functionLinenumberEnd: 343
    functionName: deallocate_one
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 2
    functionsReached:
    - ecpg_alloc
    - INFORMIX_MODE
    - PQclear
    - PQexec
    - ecpg_check_PQresult
    - ecpg_log
    - ecpg_raise
    - ecpg_free
    - strlen
    - sprintf
    linkageType: ''
    returnType: bool
    signature: "bool deallocate_one(int lineno, enum COMPAT_MODE c, struct connection
      *con,\n\t\t\t   struct prepared_statement *prev, struct prepared_statement *this)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:353,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:354,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:357,1
    - Dst: deallocate_one
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:359,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:362,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:364,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - lineno
    - c
    - connection_name
    - name
    argTypes:
    - int
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 346
    functionDepth: 5
    functionLinenumber: 346
    functionLinenumberEnd: 366
    functionName: ECPGdeallocate
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 13
    functionsReached:
    - INFORMIX_MODE
    - ecpg_get_connection
    - ecpg_find_prepared_statement
    - deallocate_one
    - ecpg_raise
    - ecpg_init
    linkageType: ''
    returnType: bool
    signature: bool ECPGdeallocate(int lineno, int c, const char *connection_name,
      const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: deallocate_one
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - lineno
    - c
    - con
    argTypes:
    - int
    - enum COMPAT_MODE
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 368
    functionDepth: 5
    functionLinenumber: 368
    functionLinenumberEnd: 379
    functionName: ecpg_deallocate_all_conn
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - deallocate_one
    linkageType: ''
    returnType: bool
    signature: bool ecpg_deallocate_all_conn(int lineno, enum COMPAT_MODE c, struct
      connection *con)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:384,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:386,1
    - Dst: ecpg_deallocate_all_conn
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - lineno
    - compat
    - connection_name
    argTypes:
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 381
    functionDepth: 6
    functionLinenumber: 381
    functionLinenumberEnd: 390
    functionName: ECPGdeallocate_all
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 2
    functionsReached:
    - ecpg_get_connection
    - ecpg_deallocate_all_conn
    - ecpg_init
    linkageType: ''
    returnType: bool
    signature: bool ECPGdeallocate_all(int lineno, int compat, const char *connection_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - name
    - con
    argTypes:
    - char*
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 399
    functionName: ecpg_prepared
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_find_prepared_statement
    linkageType: ''
    returnType: char
    signature: 'char *

      ecpg_prepared(const char *name, struct connection *con)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:405,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:407,1
    - Dst: ecpg_prepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - connection_name
    - name
    - lineno
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 402
    functionDepth: 2
    functionLinenumber: 402
    functionLinenumberEnd: 411
    functionName: ECPGprepared_statement
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 11
    functionsReached:
    - ecpg_get_connection
    - ecpg_prepared
    - ecpg_init
    linkageType: ''
    returnType: char
    signature: 'char *

      ECPGprepared_statement(const char *connection_name, const char *name, int lineno)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:426,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:437,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:438,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ecpgQuery
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 445
    functionName: HashStmt
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    - strlen
    linkageType: ''
    returnType: int
    signature: int HashStmt(const char *ecpgQuery)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HashStmt
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:463,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:470,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ecpgQuery
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 452
    functionDepth: 2
    functionLinenumber: 452
    functionLinenumberEnd: 481
    functionName: SearchStmtCache
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - strcmp
    - HashStmt
    linkageType: ''
    returnType: int
    signature: int SearchStmtCache(const char *ecpgQuery)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:505,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:515,1
    - Dst: deallocate_one
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:516,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:525,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - lineno
    - compat
    - entNo
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 488
    functionDepth: 5
    functionLinenumber: 488
    functionLinenumberEnd: 530
    functionName: ecpg_freeStmtCacheEntry
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_get_connection
    - ecpg_find_prepared_statement
    - deallocate_one
    - ecpg_free
    linkageType: ''
    returnType: int
    signature: "int ecpg_freeStmtCacheEntry(int lineno, int compat,\n\t\t\t\t\t\tint
      entNo)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:553,1
    - Dst: HashStmt
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:559,1
    - Dst: ecpg_freeStmtCacheEntry
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:583,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:589,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:594,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 5
    argNames:
    - lineno
    - stmtID
    - connection
    - compat
    - ecpgQuery
    argTypes:
    - int
    - char*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 536
    functionDepth: 6
    functionLinenumber: 536
    functionLinenumberEnd: 597
    functionName: AddStmtToCache
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_alloc
    - memcpy
    - ecpg_freeStmtCacheEntry
    - HashStmt
    - ecpg_strdup
    linkageType: ''
    returnType: int
    signature: "int AddStmtToCache(int lineno,\t\t/* line # of statement */\n\t\t\t
      \  const char *stmtID,\t/* statement ID */\n\t\t\t   const char *connection,\t/*
      connection */\n\t\t\t   int compat,\t\t/* compatibility level */\n\t\t\t   const
      char *ecpgQuery)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SearchStmtCache
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:606,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:615,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:618,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:622,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:623,1
    - Dst: prepare_common
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:625,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:627,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:636,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:639,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:640,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:644,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:646,1
    - Dst: AddStmtToCache
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:650,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:653,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 5
    argNames:
    - lineno
    - connection_name
    - compat
    - name
    - query
    argTypes:
    - int
    - char*
    - int
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 600
    functionDepth: 7
    functionLinenumber: 600
    functionLinenumberEnd: 662
    functionName: ecpg_auto_prepare
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - prepare_common
    - ECPGprepare
    - ecpg_log
    - AddStmtToCache
    - ecpg_get_connection
    - SearchStmtCache
    - ecpg_find_prepared_statement
    - ecpg_free
    - ecpg_strdup
    - sprintf
    linkageType: ''
    returnType: bool
    signature: bool ecpg_auto_prepare(int lineno, const char *connection_name, const
      int compat, char **name, const char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sqlca_p
    argTypes:
    - struct sqlca_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: ecpg_init_sqlca
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 4
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void ecpg_init_sqlca(struct sqlca_t *sqlca_p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:75,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:79,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:84,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:87,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - con
    - connection_name
    - lineno
    argTypes:
    - struct connection*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 93
    functionName: ecpg_init
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 4
    functionsReached:
    - ecpg_init_sqlca
    - ecpg_gettext
    - ecpg_raise
    - ECPGget_sqlca
    linkageType: ''
    returnType: bool
    signature: bool ecpg_init(const struct connection *con, const char *connection_name,
      const int lineno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: ecpg_sqlca_key_destructor
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void ecpg_sqlca_key_destructor(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_create
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 105
    functionName: ecpg_sqlca_key_init
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 0
    functionsReached:
    - pthread_key_create
    linkageType: ''
    returnType: void
    signature: void ecpg_sqlca_key_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_once
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:112,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:114,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:117,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:120,1
    - Dst: pthread_setspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 124
    functionName: ECPGget_sqlca
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 9
    functionsReached:
    - pthread_once
    - pthread_setspecific
    - malloc
    - pthread_getspecific
    - ecpg_init_sqlca
    linkageType: ''
    returnType: struct sqlca_t
    signature: 'struct sqlca_t *

      ECPGget_sqlca(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:129,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:131,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - lineno
    - connection_name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 142
    functionName: ECPGstatus
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 0
    functionsReached:
    - ecpg_get_connection
    - ecpg_raise
    - ecpg_init
    linkageType: ''
    returnType: bool
    signature: bool ECPGstatus(int lineno, const char *connection_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:149,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - connection_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 157
    functionName: ECPGtransactionStatus
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 0
    functionsReached:
    - ecpg_get_connection
    - PQtransactionStatus
    linkageType: ''
    returnType: PGTransactionStatusType
    signature: PGTransactionStatusType ECPGtransactionStatus(const char *connection_name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:163,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:165,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:168,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:180,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:182,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:183,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:184,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:185,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:187,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:188,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:190,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:193,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:194,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:196,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 3
    argNames:
    - lineno
    - connection_name
    - transaction
    argTypes:
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 159
    functionDepth: 4
    functionLinenumber: 159
    functionLinenumberEnd: 200
    functionName: ECPGtrans
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 36
    functionsReached:
    - PQtransactionStatus
    - PQclear
    - PQexec
    - ecpg_check_PQresult
    - ecpg_log
    - ecpg_get_connection
    - strncmp
    - ecpg_init
    linkageType: ''
    returnType: bool
    signature: bool ECPGtrans(int lineno, const char *connection_name, const char
      *transaction)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:207,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:210,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:223,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:226,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - n
    - dbgs
    argTypes:
    - int
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 229
    functionName: ECPGdebug
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 61
    functionsReached:
    - ecpg_log
    - pthread_mutex_lock
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void ECPGdebug(int n, FILE *dbgs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:249,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:255,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:256,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:261,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:263,1
    - Dst: getpid
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:263,1
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:265,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:267,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:272,1
    - Dst: vfprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:273,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:274,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:279,1
    - Dst: fflush
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:283,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:286,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:288,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 289
    functionName: ecpg_log
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 15
    functionsReached:
    - getpid
    - vfprintf
    - va_end
    - va_start
    - pthread_mutex_lock
    - malloc
    - strlen
    - ECPGget_sqlca
    - fflush
    - pthread_mutex_unlock
    - ecpg_gettext
    - free
    - fprintf
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ecpg_log(const char *format, ...)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:319,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:322,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:332,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:336,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:340,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:343,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 2
    argNames:
    - type
    - ptr
    argTypes:
    - enum ECPGttype
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 348
    functionName: ECPGset_noind_null
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 3
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void ECPGset_noind_null(enum ECPGttype type, void *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - length
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 358
    functionName: _check
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool _check(const unsigned char *ptr, int length)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: _check
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:393,1
    - Dst: _check
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:396,1
    - Dst: _check
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:415,1
    - Dst: _check
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:418,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 61
    argCount: 2
    argNames:
    - type
    - ptr
    argTypes:
    - enum ECPGttype
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 425
    functionName: ECPGis_noind_null
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 1
    functionsReached:
    - _check
    linkageType: ''
    returnType: bool
    signature: bool ECPGis_noind_null(enum ECPGttype type, const void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mp
    - attr
    argTypes:
    - pthread_mutex_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 434
    functionName: pthread_mutex_init
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pthread_mutex_init(pthread_mutex_t *mp, void *attr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: InterlockedExchange
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:444,1
    - Dst: Sleep
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:445,1
    - Dst: InitializeCriticalSection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:447,1
    - Dst: InterlockedExchange
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:448,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:450,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - mp
    argTypes:
    - pthread_mutex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 452
    functionName: pthread_mutex_lock
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 8
    functionsReached:
    - EnterCriticalSection
    - InterlockedExchange
    - Sleep
    - InitializeCriticalSection
    linkageType: ''
    returnType: int
    signature: int pthread_mutex_lock(pthread_mutex_t *mp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mp
    argTypes:
    - pthread_mutex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 461
    functionName: pthread_mutex_unlock
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 8
    functionsReached:
    - LeaveCriticalSection
    linkageType: ''
    returnType: int
    signature: int pthread_mutex_unlock(pthread_mutex_t *mp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:470,1
    - Dst: fn
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:473,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:476,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - once
    argTypes:
    - pthread_once_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 478
    functionName: win32_pthread_once
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 0
    functionsReached:
    - fn
    - pthread_mutex_lock
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void win32_pthread_once(volatile pthread_once_t *once, void (*fn) (void))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetLastError
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:500,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:505,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:515,1
    - Dst: bindtextdomain
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:518,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:518,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:522,1
    - Dst: SetLastError
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:525,1
    - Dst: dgettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:531,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:531,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - msgid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 532
    functionName: ecpg_gettext
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 7
    functionsReached:
    - PG_TEXTDOMAIN
    - dgettext
    - pthread_mutex_lock
    - GetLastError
    - bindtextdomain
    - getenv
    - pthread_mutex_unlock
    - SetLastError
    linkageType: ''
    returnType: char
    signature: 'char *

      ecpg_gettext(const char *msgid)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:542,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:546,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:551,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:564,1
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:567,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:571,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:577,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:578,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:579,1
    - Dst: ECPGfree_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c:581,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - number
    - pointer
    - lineno
    argTypes:
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 590
    functionName: ECPGset_var
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 6
    functionsReached:
    - strncpy
    - ecpg_raise
    - strlen
    - ECPGfree_auto_mem
    - ECPGget_sqlca
    - ecpg_init_sqlca
    - calloc
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ECPGset_var(int number, void *pointer, int lineno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - number
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 599
    functionName: ECPGget_var
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/misc.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      ECPGget_var(int number)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:58,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:60,1
    - Dst: PQescapeString
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:63,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:75,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - arg
    - quote
    - lineno
    argTypes:
    - char*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 83
    functionName: quote_postgres
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_alloc
    - memmove
    - PQescapeString
    - strlen
    - ecpg_free
    linkageType: ''
    returnType: char
    signature: 'char *

      quote_postgres(char *arg, bool quote, int lineno)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - var
    argTypes:
    - struct variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 96
    functionName: free_variable
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_free
    linkageType: ''
    returnType: void
    signature: void free_variable(struct variable *var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free_variable
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:103,1
    - Dst: free_variable
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:104,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:105,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:106,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:108,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 111
    functionName: free_statement
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_free
    - free_variable
    linkageType: ''
    returnType: void
    signature: void free_statement(struct statement *stmt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:127,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:132,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:134,1
    - Dst: isascii
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:135,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 19
    argCount: 4
    argNames:
    - text
    - pos
    - questionmarks
    - std_strings
    argTypes:
    - char*
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 148
    functionName: next_insert
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - isascii
    - isalpha
    - isdigit
    linkageType: ''
    returnType: int
    signature: int next_insert(char *text, int pos, bool questionmarks, bool std_strings)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - cache
    - oid
    - isarray
    - lineno
    argTypes:
    - struct ECPGtype_information_cache**
    - Oid
    - enum ARRAY_TYPE
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 164
    functionName: ecpg_type_infocache_push
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_alloc
    linkageType: ''
    returnType: bool
    signature: bool ecpg_type_infocache_push(struct ECPGtype_information_cache **cache,
      Oid oid, enum ARRAY_TYPE isarray, int lineno)
  - BBCount: 47
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:183,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:185,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:187,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:189,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:191,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:193,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:195,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:197,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:199,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:201,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:203,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:205,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:207,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:209,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:211,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:213,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:215,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:217,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:219,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:221,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:223,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:225,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:227,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:229,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:231,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:233,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:235,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:237,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:239,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:241,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:243,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:245,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:247,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:249,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:251,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:253,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:255,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:257,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:259,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:269,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:269,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:273,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:274,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:275,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:276,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:278,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:280,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:284,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:284,1
    - Dst: ecpg_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:285,1
    - Dst: ecpg_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:286,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:294,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:299,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:300,1
    - Dst: ECPG_IS_ARRAY
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:301,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 107
    argCount: 3
    argNames:
    - type
    - stmt
    - var
    argTypes:
    - Oid
    - struct statement*
    - struct variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 166
    functionDepth: 5
    functionLinenumber: 166
    functionLinenumberEnd: 303
    functionName: ecpg_is_type_an_array
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_alloc
    - ECPG_IS_ARRAY
    - PQclear
    - PQexec
    - ecpg_check_PQresult
    - ecpg_log
    - atoi
    - PQgetvalue
    - ecpg_free
    - strlen
    - ecpg_type_infocache_push
    - PQresultStatus
    - sprintf
    - ecpg_dynamic_type
    - PQntuples
    linkageType: ''
    returnType: enum ARRAY_TYPE
    signature: enum ARRAY_TYPE ecpg_is_type_an_array(Oid type, const struct statement
      *stmt, const struct variable *var)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:312,1
    - Dst: ecpg_is_type_an_array
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:315,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:315,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:317,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:328,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:330,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:330,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:341,1
    - Dst: PQfformat
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:353,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:364,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:364,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:374,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:374,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:394,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:397,1
    - Dst: ecpg_auto_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:398,1
    - Dst: ecpg_auto_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:409,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:429,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:429,1
    - Dst: ecpg_get_data
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:431,1
    - Dst: ecpg_get_data
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:450,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 78
    argCount: 4
    argNames:
    - results
    - act_field
    - stmt
    - var
    argTypes:
    - PGresult*
    - int
    - struct statement*
    - struct variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 306
    functionDepth: 6
    functionLinenumber: 306
    functionLinenumberEnd: 457
    functionName: ecpg_store_result
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 1
    functionsReached:
    - PQgetlength
    - INFORMIX_MODE
    - ecpg_auto_alloc
    - ecpg_log
    - PQftype
    - PQfformat
    - ecpg_raise
    - ecpg_get_data
    - strlen
    - ecpg_is_type_an_array
    - PQgetvalue
    - PQntuples
    linkageType: ''
    returnType: bool
    signature: "bool ecpg_store_result(const PGresult *results, int act_field,\n\t\t\t\t
      \ const struct statement *stmt, struct variable *var)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:462,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:463,1
    - Dst: isinf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:464,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:467,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:469,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ptr
    - value
    - delim
    argTypes:
    - char*
    - double
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 473
    functionName: sprintf_double_value
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - sprintf
    linkageType: ''
    returnType: void
    signature: void sprintf_double_value(char *ptr, double value, const char *delim)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:478,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:479,1
    - Dst: isinf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:480,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:483,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:485,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:488,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ptr
    - value
    - delim
    argTypes:
    - char*
    - float
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 489
    functionName: sprintf_float_value
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - sprintf
    linkageType: ''
    returnType: void
    signature: void sprintf_float_value(char *ptr, float value, const char *delim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_hex_enc_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:495,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:498,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:502,1
    - Dst: ecpg_hex_encode
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:503,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:504,1
    - Dst: ecpg_hex_enc_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - from_data
    - from_len
    - lineno
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 507
    functionName: convert_bytea_to_string
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_alloc
    - strcpy
    - ecpg_hex_encode
    - ecpg_hex_enc_len
    linkageType: ''
    returnType: char
    signature: 'char *

      convert_bytea_to_string(char *from_data, int from_len, int lineno)'
  - BBCount: 100
    BranchProfiles: []
    Callsites:
    - Dst: ECPGis_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:555,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:571,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:576,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:579,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:579,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:581,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:581,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:584,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:590,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:595,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:598,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:598,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:600,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:600,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:603,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:609,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:614,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:617,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:617,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:619,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:619,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:622,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:628,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:633,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:636,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:636,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:638,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:638,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:641,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:647,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:652,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:655,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:655,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:657,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:657,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:660,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:666,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:671,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:674,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:674,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:676,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:676,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:679,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:685,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:690,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:693,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:693,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:695,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:695,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:698,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:704,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:709,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:712,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:712,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:714,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:714,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:717,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:723,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:728,1
    - Dst: sprintf_float_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:731,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:731,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:733,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:733,1
    - Dst: sprintf_float_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:736,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:742,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:747,1
    - Dst: sprintf_double_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:750,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:750,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:752,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:752,1
    - Dst: sprintf_double_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:755,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:761,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:766,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:769,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:769,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:771,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:771,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:776,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:778,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:780,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:791,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:793,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:796,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:799,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:802,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:812,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:814,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:817,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:829,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:832,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:842,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:845,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:848,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:851,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:867,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:869,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:878,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:881,1
    - Dst: PGTYPESnumeric_copy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:886,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:888,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:892,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:893,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:897,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:898,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:899,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:901,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:901,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:903,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:904,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:910,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:910,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:912,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:912,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:914,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:918,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:918,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:930,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:932,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:939,1
    - Dst: PGTYPESinterval_to_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:939,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:942,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:946,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:948,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:948,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:950,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:951,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:957,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:957,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:959,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:959,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:961,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:965,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:965,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:977,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:979,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:986,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:986,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:989,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:993,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:995,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:995,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:997,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:998,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1004,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1004,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1006,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1006,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1008,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1012,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1012,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1024,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1026,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1033,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1033,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1036,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1040,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1042,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1042,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1044,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1045,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1051,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1051,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1053,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1053,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1055,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1059,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1059,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1071,1
    - Dst: ecpg_type_name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1071,1
    CyclomaticComplexity: 107
    EdgeCount: 107
    ICount: 352
    argCount: 5
    argNames:
    - lineno
    - force_indicator
    - var
    - tobeinserted_p
    - quote
    argTypes:
    - int
    - bool
    - struct variable*
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 509
    functionDepth: 6
    functionLinenumber: 509
    functionLinenumberEnd: 1077
    functionName: ecpg_store_input
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 1
    functionsReached:
    - PGTYPESdate_to_asc
    - ecpg_alloc
    - PGTYPEStimestamp_to_asc
    - PGTYPESnumeric_to_asc
    - ecpg_realloc
    - PGTYPESnumeric_from_decimal
    - PGTYPESnumeric_new
    - PGTYPESnumeric_copy
    - PGTYPESnumeric_free
    - sprintf_double_value
    - sprintf_float_value
    - memcpy
    - strncpy
    - ecpg_raise
    - ecpg_free
    - strlen
    - ecpg_type_name
    - quote_postgres
    - PGTYPESinterval_to_asc
    - ecpg_strdup
    - ECPGis_noind_null
    - sprintf
    - strcpy
    linkageType: ''
    returnType: bool
    signature: "bool ecpg_store_input(const int lineno, const bool force_indicator,
      const struct variable *var,\n\t\t\t\t char **tobeinserted_p, bool quote)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1091,1
    - Dst: ecpg_hex_enc_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1091,1
    - Dst: ecpg_hex_encode
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1094,1
    - Dst: ecpg_hex_enc_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1095,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1102,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - value
    - len
    - is_binary
    - lineno
    - nth
    argTypes:
    - char*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1079
    functionDepth: 3
    functionLinenumber: 1079
    functionLinenumberEnd: 1107
    functionName: print_param_value
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_alloc
    - ecpg_hex_enc_len
    - ecpg_log
    - ecpg_free
    - ecpg_hex_encode
    linkageType: ''
    returnType: void
    signature: void print_param_value(char *value, int len, int is_binary, int lineno,
      int nth)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: print_param_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1117,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1119,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1121,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1122,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - stmt
    - print
    argTypes:
    - struct statement*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1109
    functionDepth: 4
    functionLinenumber: 1109
    functionLinenumberEnd: 1128
    functionName: ecpg_free_params
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - print_param_value
    - ecpg_free
    linkageType: ''
    returnType: void
    signature: void ecpg_free_params(struct statement *stmt, bool print)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1135,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1135,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1135,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1137,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1141,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1142,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1148,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1153,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - position
    - ph_len
    - stmt
    - tobeinserted
    argTypes:
    - int
    - int
    - struct statement*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1130
    functionDepth: 1
    functionLinenumber: 1130
    functionLinenumberEnd: 1158
    functionName: insert_tobeinserted
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - strcat
    - ecpg_alloc
    - ecpg_free
    - strlen
    - strcpy
    linkageType: ''
    returnType: bool
    signature: bool insert_tobeinserted(int position, int ph_len, struct statement
      *stmt, char *tobeinserted)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1173,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1175,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1180,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1201,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - stmt
    - desc_item
    - tobeinserted
    argTypes:
    - struct statement*
    - struct descriptor_item*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1160
    functionDepth: 7
    functionLinenumber: 1160
    functionLinenumberEnd: 1205
    functionName: store_input_from_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_store_input
    - ecpg_alloc
    - strlen
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool store_input_from_desc(struct statement *stmt, struct descriptor_item
      *desc_item,\n\t\t\t\t\t  char **tobeinserted)"
  - BBCount: 50
    BranchProfiles: []
    Callsites:
    - Dst: PQparameterStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1224,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1225,1
    - Dst: ecpg_find_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1259,1
    - Dst: store_input_from_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1269,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1284,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1305,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1330,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1360,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1385,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1397,1
    - Dst: next_insert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1411,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1417,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1420,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1421,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1432,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1432,1
    - Dst: insert_tobeinserted
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1434,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1436,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1453,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1453,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1458,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1459,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1462,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1463,1
    - Dst: insert_tobeinserted
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1467,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1469,1
    - Dst: convert_bytea_to_string
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1478,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1482,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1485,1
    - Dst: insert_tobeinserted
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1491,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1493,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1506,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1511,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1516,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1523,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1524,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1541,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1543,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1547,1
    - Dst: insert_tobeinserted
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1549,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1551,1
    - Dst: next_insert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1567,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1569,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1571,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 203
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1214
    functionDepth: 8
    functionLinenumber: 1214
    functionLinenumberEnd: 1576
    functionName: ecpg_build_params
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - INFORMIX_MODE
    - ecpg_alloc
    - convert_bytea_to_string
    - strcmp
    - insert_tobeinserted
    - ecpg_free_params
    - ecpg_realloc
    - PQparameterStatus
    - ecpg_store_input
    - ecpg_raise
    - ecpg_free
    - strlen
    - next_insert
    - snprintf
    - store_input_from_desc
    - ecpg_find_desc
    - sprintf
    linkageType: ''
    returnType: bool
    signature: bool ecpg_build_params(struct statement *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1585,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1587,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1588,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1590,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1593,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1582
    functionDepth: 5
    functionLinenumber: 1582
    functionLinenumberEnd: 1597
    functionName: ecpg_autostart_transaction
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - PQtransactionStatus
    - PQclear
    - PQexec
    - ecpg_free_params
    - ecpg_check_PQresult
    linkageType: ''
    returnType: bool
    signature: bool ecpg_autostart_transaction(struct statement *stmt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1606,1
    - Dst: PQexecPrepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1609,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1616,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1622,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1623,1
    - Dst: PQexecParams
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1627,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1634,1
    - Dst: ecpg_register_prepared_stmt
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1639,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1641,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1647,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1649,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1603
    functionDepth: 5
    functionLinenumber: 1603
    functionLinenumberEnd: 1653
    functionName: ecpg_execute
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - PQexecParams
    - PQexec
    - ecpg_free_params
    - ecpg_check_PQresult
    - ecpg_log
    - ecpg_register_prepared_stmt
    - PQexecPrepared
    linkageType: ''
    returnType: bool
    signature: bool ecpg_execute(struct statement *stmt)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1679,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1686,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1692,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1695,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1696,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1698,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1704,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1706,1
    - Dst: ecpg_find_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1713,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1719,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1722,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1723,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1729,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1743,1
    - Dst: ecpg_build_compat_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1753,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1761,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1766,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1772,1
    - Dst: ecpg_set_compat_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1776,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1777,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1778,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1799,1
    - Dst: ecpg_build_native_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1809,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1817,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1822,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1828,1
    - Dst: ecpg_set_native_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1832,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1833,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1834,1
    - Dst: ecpg_store_result
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1849,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1852,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1854,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1861,1
    - Dst: PQcmdStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1868,1
    - Dst: PQoidValue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1869,1
    - Dst: atol
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1870,1
    - Dst: PQcmdTuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1870,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1871,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1874,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1875,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1876,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1877,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1884,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1885,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1888,1
    - Dst: PQfreemem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1889,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1894,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1895,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1896,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1897,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1899,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1899,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1909,1
    - Dst: ecpg_raise_backend
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1911,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1918,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1923,1
    - Dst: PQnotifies
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1924,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1926,1
    - Dst: PQfreemem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1928,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1929,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 145
    argCount: 2
    argNames:
    - stmt
    - clear_result
    argTypes:
    - struct statement*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1672
    functionDepth: 8
    functionLinenumber: 1672
    functionLinenumberEnd: 1933
    functionName: ecpg_process_output
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_raise_backend
    - PQclear
    - ecpg_store_result
    - PQnotifies
    - PQconsumeInput
    - printf
    - ECPGget_sqlca
    - PQgetResult
    - PQnfields
    - PQoidValue
    - PQresultStatus
    - PQntuples
    - atol
    - ecpg_set_compat_sqlda
    - PQcmdTuples
    - ecpg_log
    - PQgetCopyData
    - PQcmdStatus
    - ecpg_raise
    - ecpg_build_compat_sqlda
    - PQfreemem
    - INFORMIX_MODE
    - ecpg_build_native_sqlda
    - ecpg_set_native_sqlda
    - PQresultErrorMessage
    - free
    - strncmp
    - ecpg_find_desc
    linkageType: ''
    returnType: bool
    signature: bool ecpg_process_output(struct statement *stmt, bool clear_result)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1962,1
    - Dst: ecpg_pthreads_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1966,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1968,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1970,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1973,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1990,1
    - Dst: uselocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1991,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1994,1
    - Dst: _configthreadlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1999,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2002,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2006,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2006,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2010,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2013,1
    - Dst: ecpg_auto_prepare
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2022,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2024,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2037,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2040,1
    - Dst: ecpg_prepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2050,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2055,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2058,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2064,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2065,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2104,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2115,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2117,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2122,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2124,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2125,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2126,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2152,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2153,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2154,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2155,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2156,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2177,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2178,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2179,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2193,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2196,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2203,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2209,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2209,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2210,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2216,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2216,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2217,1
    - Dst: ecpg_clear_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2222,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 135
    argCount: 9
    argNames:
    - lineno
    - compat
    - force_indicator
    - connection_name
    - questionmarks
    - statement_type
    - query
    - args
    - stmt_out
    argTypes:
    - int
    - int
    - int
    - char*
    - bool
    - enum ECPG_statement_type
    - char*
    - va_list
    - struct statement**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 1945
    functionDepth: 8
    functionLinenumber: 1945
    functionLinenumberEnd: 2227
    functionName: ecpg_do_prologue
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_alloc
    - ecpg_prepared
    - Assert
    - _configthreadlocale
    - setlocale
    - uselocale
    - ecpg_clear_auto_mem
    - ecpg_get_connection
    - ecpg_raise
    - ecpg_free
    - ecpg_auto_prepare
    - ecpg_init
    - ecpg_strdup
    - ecpg_gettext
    - ecpg_do_epilogue
    - va_arg
    - ecpg_pthreads_init
    linkageType: ''
    returnType: bool
    signature: "bool ecpg_do_prologue(int lineno, const int compat, const int force_indicator,\n\t\t\t\t
      const char *connection_name, const bool questionmarks,\n\t\t\t\t enum ECPG_statement_type
      statement_type, const char *query,\n\t\t\t\t va_list args, struct statement
      **stmt_out)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: uselocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2241,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2245,1
    - Dst: _configthreadlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2247,1
    - Dst: free_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2253
      start: 2233
    functionDepth: 3
    functionLinenumber: 2233
    functionLinenumberEnd: 2253
    functionName: ecpg_do_epilogue
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 1
    functionsReached:
    - _configthreadlocale
    - setlocale
    - free_statement
    - uselocale
    linkageType: ''
    returnType: void
    signature: void ecpg_do_epilogue(struct statement *stmt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_do_prologue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2265,1
    - Dst: ecpg_build_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2270,1
    - Dst: ecpg_autostart_transaction
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2273,1
    - Dst: ecpg_execute
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2276,1
    - Dst: ecpg_process_output
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2279,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2282,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2286,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 8
    argNames:
    - lineno
    - compat
    - force_indicator
    - connection_name
    - questionmarks
    - st
    - query
    - args
    argTypes:
    - int
    - int
    - int
    - char*
    - bool
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2260
    functionDepth: 9
    functionLinenumber: 2260
    functionLinenumberEnd: 2288
    functionName: ecpg_do
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_do_prologue
    - ecpg_build_params
    - ecpg_process_output
    - ecpg_do_epilogue
    - ecpg_autostart_transaction
    - ecpg_execute
    linkageType: ''
    returnType: bool
    signature: bool ecpg_do(const int lineno, const int compat, const int force_indicator,
      const char *connection_name, const bool questionmarks, const int st, const char
      *query, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2300,1
    - Dst: ecpg_do
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2301,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - lineno
    - compat
    - force_indicator
    - connection_name
    - questionmarks
    - st
    - query
    argTypes:
    - int
    - int
    - int
    - char*
    - bool
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2306
      start: 2294
    functionDepth: 10
    functionLinenumber: 2294
    functionLinenumberEnd: 2306
    functionName: ECPGdo
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 68
    functionsReached:
    - va_start
    - va_end
    - ecpg_do
    linkageType: ''
    returnType: bool
    signature: bool ECPGdo(const int lineno, const int compat, const int force_indicator,
      const char *connection_name, const bool questionmarks, const int st, const char
      *query, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - line
    - connection
    - descriptor
    - query
    argTypes:
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2316
      start: 2309
    functionDepth: 11
    functionLinenumber: 2309
    functionLinenumberEnd: 2316
    functionName: ECPGdo_descriptor
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ECPGdo
    linkageType: ''
    returnType: bool
    signature: "bool ECPGdo_descriptor(int line, const char *connection,\n\t\t\t\t
      \ const char *descriptor, const char *query)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: INFORMIX_MODE
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/ecpglib_extern.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INFORMIX_MODE(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: ORACLE_MODE
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/ecpglib_extern.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ORACLE_MODE(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: ECPG_IS_ARRAY
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/ecpglib_extern.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECPG_IS_ARRAY(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 240
    functionName: ecpg_gettext
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/ecpglib_extern.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ecpg_gettext(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 16
    functionName: ecpg_free
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 21
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void ecpg_free(void *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:21,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - size
    - lineno
    argTypes:
    - long
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 18
    functionDepth: 2
    functionLinenumber: 18
    functionLinenumberEnd: 30
    functionName: ecpg_alloc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 19
    functionsReached:
    - calloc
    - ecpg_raise
    linkageType: ''
    returnType: char
    signature: 'char *

      ecpg_alloc(long size, int lineno)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:35,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ptr
    - size
    - lineno
    argTypes:
    - void*
    - long
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 44
    functionName: ecpg_realloc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 2
    functionsReached:
    - ecpg_raise
    - realloc
    linkageType: ''
    returnType: char
    signature: 'char *

      ecpg_realloc(void *ptr, long size, int lineno)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strdup::strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:61,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - string
    - lineno
    - alloc_failed
    argTypes:
    - char*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 71
    functionName: ecpg_strdup
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 7
    functionsReached:
    - ecpg_raise
    - strdup::strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      ecpg_strdup(const char *string, int lineno, bool *alloc_failed)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGfree_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: auto_mem_destructor
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 0
    functionsReached:
    - ECPGfree_auto_mem
    linkageType: ''
    returnType: void
    signature: void auto_mem_destructor(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_create
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: auto_mem_key_init
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 0
    functionsReached:
    - pthread_key_create
    linkageType: ''
    returnType: void
    signature: void auto_mem_key_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_once
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:99,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 101
    functionName: get_auto_allocs
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 0
    functionsReached:
    - pthread_getspecific
    - pthread_once
    linkageType: ''
    returnType: struct auto_mem
    signature: 'struct auto_mem *

      get_auto_allocs(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - am
    argTypes:
    - struct auto_mem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: set_auto_allocs
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 0
    functionsReached:
    - pthread_setspecific
    linkageType: ''
    returnType: void
    signature: void set_auto_allocs(struct auto_mem *am)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:112,1
    - Dst: ecpg_add_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:117,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - size
    - lineno
    argTypes:
    - long
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 123
    functionName: ecpg_auto_alloc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 2
    functionsReached:
    - ecpg_alloc
    - ecpg_add_mem
    - ecpg_free
    linkageType: ''
    returnType: char
    signature: 'char *

      ecpg_auto_alloc(long size, int lineno)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:128,1
    - Dst: get_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:134,1
    - Dst: set_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ptr
    - lineno
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 137
    functionName: ecpg_add_mem
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 1
    functionsReached:
    - get_auto_allocs
    - ecpg_alloc
    - set_auto_allocs
    linkageType: ''
    returnType: bool
    signature: bool ecpg_add_mem(void *ptr, int lineno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:142,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:152,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:153,1
    - Dst: set_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 157
    functionName: ECPGfree_auto_mem
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 6
    functionsReached:
    - get_auto_allocs
    - ecpg_free
    - set_auto_allocs
    linkageType: ''
    returnType: void
    signature: void ECPGfree_auto_mem(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:162,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:172,1
    - Dst: set_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 176
    functionName: ecpg_clear_auto_mem
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 1
    functionsReached:
    - get_auto_allocs
    - ecpg_free
    - set_auto_allocs
    linkageType: ''
    returnType: void
    signature: void ecpg_clear_auto_mem(void)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/typename.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 51
    argCount: 1
    argNames:
    - typ
    argTypes:
    - enum ECPGttype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 70
    functionName: ecpg_type_name
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/typename.c
    functionUses: 1
    functionsReached:
    - abort
    linkageType: ''
    returnType: char
    signature: 'char *

      ecpg_type_name(enum ECPGttype typ)'
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - type
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 104
    functionName: ecpg_dynamic_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/typename.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ecpg_dynamic_type(Oid type)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/typename.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 2
    argNames:
    - type
    - compat
    argTypes:
    - Oid
    - enum COMPAT_MODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 145
    functionName: sqlda_dynamic_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/typename.c
    functionUses: 3
    functionsReached:
    - INFORMIX_MODE
    linkageType: ''
    returnType: int
    signature: int sqlda_dynamic_type(Oid type, enum COMPAT_MODE compat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_create
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: ecpg_actual_connection_init
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 0
    functionsReached:
    - pthread_key_create
    linkageType: ''
    returnType: void
    signature: void ecpg_actual_connection_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_once
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: ecpg_pthreads_init
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 1
    functionsReached:
    - pthread_once
    linkageType: ''
    returnType: void
    signature: void ecpg_pthreads_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:40,1
    - Dst: ecpg_pthreads_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:42,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:44,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:66,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - connection_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 73
    functionName: ecpg_get_connection_nr
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 0
    functionsReached:
    - pthread_getspecific
    - ecpg_pthreads_init
    - strcmp
    linkageType: ''
    returnType: struct connection
    signature: 'struct connection *

      ecpg_get_connection_nr(const char *connection_name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:80,1
    - Dst: ecpg_pthreads_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:82,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:84,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:97,1
    - Dst: ecpg_get_connection_nr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:99,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - connection_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 105
    functionName: ecpg_get_connection
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 12
    functionsReached:
    - strcmp
    - pthread_mutex_lock
    - pthread_getspecific
    - pthread_mutex_unlock
    - ecpg_get_connection_nr
    - ecpg_pthreads_init
    linkageType: ''
    returnType: struct connection
    signature: 'struct connection *

      ecpg_get_connection(const char *connection_name)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_deallocate_all_conn
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:115,1
    - Dst: PQfinish
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:116,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:135,1
    - Dst: pthread_setspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:136,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:140,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:142,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:143,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:144,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:150,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:154,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - act
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 107
    functionDepth: 6
    functionLinenumber: 107
    functionLinenumberEnd: 155
    functionName: ecpg_finish
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 0
    functionsReached:
    - ecpg_log
    - PQfinish
    - pthread_setspecific
    - ecpg_free
    - pthread_getspecific
    - ecpg_deallocate_all_conn
    linkageType: ''
    returnType: void
    signature: void ecpg_finish(struct connection *act)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:160,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:163,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:166,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:168,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:168,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:170,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:172,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:173,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:175,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:179,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:179,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:181,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:183,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:184,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:186,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - lineno
    - mode
    - connection_name
    argTypes:
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 157
    functionDepth: 4
    functionLinenumber: 157
    functionLinenumberEnd: 192
    functionName: ECPGsetcommit
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 13
    functionsReached:
    - PQtransactionStatus
    - PQclear
    - PQexec
    - ecpg_check_PQresult
    - ecpg_log
    - ecpg_get_connection
    - strlen
    - strncmp
    - ecpg_init
    linkageType: ''
    returnType: bool
    signature: bool ECPGsetcommit(int lineno, const char *mode, const char *connection_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:197,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:199,1
    - Dst: pthread_setspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lineno
    - connection_name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 194
    functionDepth: 4
    functionLinenumber: 194
    functionLinenumberEnd: 204
    functionName: ECPGsetconn
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 2
    functionsReached:
    - ecpg_get_connection
    - pthread_setspecific
    - ecpg_init
    linkageType: ''
    returnType: bool
    signature: bool ECPGsetconn(int lineno, const char *connection_name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:210,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:211,1
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:212,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:217,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:226,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:229,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:232,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:235,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:237,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:239,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:241,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:246,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:251,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:253,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:255,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - arg
    - result
    argTypes:
    - void*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 207
    functionDepth: 3
    functionLinenumber: 207
    functionLinenumberEnd: 256
    functionName: ECPGnoticeReceiver
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strncpy
    - PQresultErrorField
    - ecpg_log
    - strncmp
    - strlen
    - ECPGget_sqlca
    - ecpg_gettext
    linkageType: ''
    returnType: void
    signature: void ECPGnoticeReceiver(void *arg, const PGresult *result)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:262,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:268,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:279,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:282,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:286,1
    - Dst: ecpg_clear_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:292,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:294,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:303,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:306,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:307,1
    - Dst: ecpg_pthreads_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:314,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:317,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:319,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:320,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:325,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:327,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:334,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:334,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:341,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:343,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:346,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:346,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:354,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:356,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:359,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:363,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:368,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:374,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:378,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:382,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:389,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:390,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:392,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:393,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:393,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:395,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:397,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:399,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:401,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:403,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:404,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:412,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:421,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:424,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:429,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:432,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:437,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:439,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:458,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:460,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:468,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:469,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:474,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:484,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:486,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:488,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:490,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:492,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:494,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:496,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:498,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:499,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:504,1
    - Dst: newlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:513,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:516,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:517,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:520,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:522,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:524,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:526,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:528,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:530,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:532,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:534,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:535,1
    - Dst: pthread_setspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:550,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:553,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:558,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:579,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:585,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:646,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:649,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:652,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:654,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:656,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:658,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:659,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:660,1
    - Dst: PQstatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:662,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:664,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:665,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:668,1
    - Dst: ecpg_finish
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:670,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:671,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:673,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:675,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:681,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:683,1
    - Dst: PQsetNoticeReceiver
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:687,1
    CyclomaticComplexity: 86
    EdgeCount: 86
    ICount: 248
    argCount: 7
    argNames:
    - lineno
    - c
    - name
    - user
    - passwd
    - connection_name
    - autocommit
    argTypes:
    - int
    - int
    - char*
    - char*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 259
    functionDepth: 7
    functionLinenumber: 259
    functionLinenumberEnd: 690
    functionName: ECPGconnect
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 63
    functionsReached:
    - ecpg_alloc
    - strcmp
    - ecpg_clear_auto_mem
    - ECPGget_sqlca
    - pthread_mutex_unlock
    - Assert
    - strrchr
    - PQconnectdbParams
    - getenv
    - PQstatus
    - PQsetNoticeReceiver
    - ecpg_log
    - ecpg_finish
    - ecpg_get_connection
    - ecpg_raise
    - ecpg_free
    - strlen
    - pthread_setspecific
    - last_dir_separator
    - ecpg_init_sqlca
    - PQerrorMessage
    - ecpg_pthreads_init
    - INFORMIX_MODE
    - newlocale
    - pthread_mutex_lock
    - strncmp
    - ecpg_strdup
    - free
    - ecpg_gettext
    linkageType: ''
    returnType: bool
    signature: bool ECPGconnect(int lineno, int c, const char *name, const char *user,
      const char *passwd, const char *connection_name, int autocommit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:695,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:700,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:705,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:707,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:709,1
    - Dst: ecpg_finish
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:715,1
    - Dst: ecpg_get_connection_nr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:720,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:722,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:724,1
    - Dst: ecpg_finish
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:728,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:731,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - lineno
    - connection_name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 692
    functionDepth: 7
    functionLinenumber: 692
    functionLinenumberEnd: 734
    functionName: ECPGdisconnect
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 59
    functionsReached:
    - strcmp
    - pthread_mutex_lock
    - ecpg_finish
    - ecpg_raise
    - ecpg_init
    - ECPGget_sqlca
    - pthread_mutex_unlock
    - ecpg_init_sqlca
    - ecpg_get_connection_nr
    linkageType: ''
    returnType: bool
    signature: bool ECPGdisconnect(int lineno, const char *connection_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - connection_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 736
    functionDepth: 4
    functionLinenumber: 736
    functionLinenumberEnd: 746
    functionName: ECPGget_PGconn
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 0
    functionsReached:
    - ecpg_get_connection
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      ECPGget_PGconn(const char *connection_name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - isarray
    - c
    argTypes:
    - enum ARRAY_TYPE
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 29
    functionName: array_delimiter
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool array_delimiter(enum ARRAY_TYPE isarray, char c)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - isarray
    - c
    argTypes:
    - enum ARRAY_TYPE
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 42
    functionName: array_boundary
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool array_boundary(enum ARRAY_TYPE isarray, char c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:54,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:60,1
    - Dst: ECPG_IS_ARRAY
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:66,1
    - Dst: array_delimiter
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:66,1
    - Dst: array_boundary
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:66,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 3
    argNames:
    - isarray
    - scan_length
    - compat
    argTypes:
    - enum ARRAY_TYPE
    - char**
    - enum COMPAT_MODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 70
    functionName: garbage_left
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 0
    functionsReached:
    - array_boundary
    - INFORMIX_MODE
    - ECPG_IS_ARRAY
    - isdigit
    - array_delimiter
    linkageType: ''
    returnType: bool
    signature: bool garbage_left(enum ARRAY_TYPE isarray, char **scan_length, enum
      COMPAT_MODE compat)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: get_float8_infinity
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double get_float8_infinity(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: get_float8_nan
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double get_float8_nan(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:92,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:94,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:98,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:100,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:104,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ptr
    - retval
    - endptr
    argTypes:
    - char*
    - double*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 112
    functionName: check_special_value
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 0
    functionsReached:
    - get_float8_infinity
    - pg_strncasecmp
    - get_float8_nan
    linkageType: ''
    returnType: bool
    signature: bool check_special_value(char *ptr, double *retval, char **endptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - srclen
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: ecpg_hex_enc_len
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned ecpg_hex_enc_len(unsigned srclen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - srclen
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: ecpg_hex_dec_len
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned ecpg_hex_dec_len(unsigned srclen)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 147
    functionName: get_hex
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char get_hex(char c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_hex
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:168,1
    - Dst: get_hex
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:172,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - src
    - len
    - dst
    argTypes:
    - char*
    - unsigned
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 177
    functionName: hex_decode
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 0
    functionsReached:
    - get_hex
    linkageType: ''
    returnType: unsigned
    signature: unsigned hex_decode(const char *src, unsigned len, char *dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - src
    - len
    - dst
    argTypes:
    - char*
    - unsigned
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 192
    functionName: ecpg_hex_encode
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned ecpg_hex_encode(const char *src, unsigned len, char *dst)
  - BBCount: 153
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:200,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:201,1
    - Dst: PQfformat
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:202,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:203,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:209,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:223,1
    - Dst: ECPG_IS_ARRAY
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:223,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:232,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:242,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:272,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:276,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:284,1
    - Dst: ecpg_type_name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:286,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:299,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:323,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:326,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:375,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:376,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:378,1
    - Dst: strtoul
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:404,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:405,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:407,1
    - Dst: strtoll
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:431,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:432,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:434,1
    - Dst: strtoull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:442,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:443,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:445,1
    - Dst: check_special_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:457,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:458,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:464,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:466,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:499,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:505,1
    - Dst: ecpg_hex_enc_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:518,1
    - Dst: hex_decode
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:521,1
    - Dst: ecpg_hex_dec_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:525,1
    - Dst: ORACLE_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:576,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:578,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:579,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:614,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:639,1
    - Dst: ORACLE_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:642,1
    - Dst: ORACLE_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:648,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:686,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:689,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:729,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:735,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:738,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:744,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:746,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:749,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:756,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:763,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:765,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:766,1
    - Dst: PGTYPESnumeric_copy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:774,1
    - Dst: PGTYPESnumeric_to_decimal
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:776,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:778,1
    - Dst: PGTYPESinterval_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:788,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:794,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:797,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:803,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:807,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:811,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:821,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:823,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:824,1
    - Dst: PGTYPESinterval_copy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:831,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:832,1
    - Dst: PGTYPESdate_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:842,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:848,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:851,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:857,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:861,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:871,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:873,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:890,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:896,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:899,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:905,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:909,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:919,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:921,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:932,1
    - Dst: ecpg_type_name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:934,1
    - Dst: ECPG_IS_ARRAY
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:938,1
    - Dst: array_delimiter
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:951,1
    - Dst: array_boundary
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:951,1
    - Dst: array_delimiter
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:955,1
    - Dst: array_boundary
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:959,1
    CyclomaticComplexity: 172
    EdgeCount: 172
    ICount: 479
    argCount: 14
    argNames:
    - results
    - act_tuple
    - act_field
    - lineno
    - type
    - ind_type
    - var
    - ind
    - varcharsize
    - offset
    - ind_offset
    - isarray
    - compat
    - force_indicator
    argTypes:
    - PGresult*
    - int
    - int
    - int
    - enum ECPGttype
    - enum ECPGttype
    - char*
    - char*
    - long
    - long
    - long
    - enum ARRAY_TYPE
    - enum COMPAT_MODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 194
    functionDepth: 5
    functionLinenumber: 194
    functionLinenumberEnd: 962
    functionName: ecpg_get_data
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 3
    functionsReached:
    - ecpg_alloc
    - PGTYPESnumeric_new
    - ECPGget_sqlca
    - PQgetvalue
    - PGTYPESnumeric_copy
    - PGTYPESnumeric_from_asc
    - PGTYPESnumeric_free
    - array_boundary
    - memcpy
    - PGTYPESinterval_copy
    - ecpg_hex_enc_len
    - PGTYPESinterval_from_asc
    - garbage_left
    - array_delimiter
    - PGTYPESdate_from_asc
    - strtod
    - strtoul
    - ECPG_IS_ARRAY
    - strncpy
    - strtol
    - ecpg_log
    - ecpg_raise
    - strtoll
    - ecpg_type_name
    - memset
    - PGTYPESnumeric_to_decimal
    - PQgetisnull
    - ecpg_hex_dec_len
    - ORACLE_MODE
    - INFORMIX_MODE
    - ECPGset_noind_null
    - hex_decode
    - PQfformat
    - strtoull
    - free
    - PQgetlength
    - PGTYPEStimestamp_from_asc
    - check_special_value
    linkageType: ''
    returnType: bool
    signature: "bool ecpg_get_data(const PGresult *results, int act_tuple, int act_field,
      int lineno,\n\t\t\t  enum ECPGttype type, enum ECPGttype ind_type,\n\t\t\t  char
      *var, char *ind, long varcharsize, long offset,\n\t\t\t  long ind_offset, enum
      ARRAY_TYPE isarray, enum COMPAT_MODE compat, bool force_indicator)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: loc_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:15,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - in
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 20
    functionName: loc_nstrdup
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - memcpy
    - loc_alloc
    linkageType: ''
    returnType: char
    signature: 'char *

      loc_nstrdup(const char *in, size_t len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:25,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - name
    - type
    - brace_level
    argTypes:
    - char*
    - struct ECPGtype*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 35
    functionName: new_variable
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - mm_alloc
    - mm_strdup
    linkageType: ''
    returnType: struct variable
    signature: 'struct variable *

      new_variable(const char *name, struct ECPGtype *type, int brace_level)'
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:53,1
    - Dst: loc_nstrdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:58,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:64,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:72,1
    - Dst: ECPGmake_array_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:72,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:72,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:75,1
    - Dst: ECPGmake_struct_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:75,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:77,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:77,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:113,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:118,1
    - Dst: ECPGmake_array_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:118,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:118,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:121,1
    - Dst: ECPGmake_struct_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:121,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:123,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:123,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:128,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:130,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:134,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:136,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:139,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 4
    argNames:
    - name
    - str
    - members
    - brace_level
    argTypes:
    - char*
    - char*
    - struct ECPGstruct_member*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 147
    functionName: find_struct_member
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 1
    functionsReached:
    - ECPGmake_simple_type
    - ECPGmake_struct_type
    - strcmp
    - loc_nstrdup
    - ECPGmake_array_type
    - mmfatal
    - find_struct_member
    - new_variable
    - strpbrk
    linkageType: ''
    returnType: struct variable
    signature: "struct variable *\nfind_struct_member(const char *name, const char
      *str,\n\t\t\t\t   struct ECPGstruct_member *members, int brace_level)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: loc_nstrdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:167,1
    - Dst: find_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:168,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:174,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:177,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:179,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:187,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:189,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:195,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:198,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:200,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - name
    - next
    - end
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 203
    functionName: find_struct
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - mmfatal
    - find_struct_member
    - find_variable
    - loc_nstrdup
    linkageType: ''
    returnType: struct variable
    signature: 'struct variable *

      find_struct(const char *name, const char *next, const char *end)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 218
    functionName: find_simple
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct variable
    signature: 'struct variable *

      find_simple(const char *name)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:242,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:263,1
    - Dst: find_struct
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:272,1
    - Dst: loc_nstrdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:282,1
    - Dst: find_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:284,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:286,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:288,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:292,1
    - Dst: ECPGmake_array_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:292,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:292,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:295,1
    - Dst: ECPGmake_struct_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:295,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:297,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:297,1
    - Dst: find_struct
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:304,1
    - Dst: find_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:308,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:311,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 234
    functionDepth: 4
    functionLinenumber: 234
    functionLinenumberEnd: 314
    functionName: find_variable
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 1
    functionsReached:
    - ECPGmake_simple_type
    - ECPGmake_struct_type
    - find_struct
    - loc_nstrdup
    - find_simple
    - ECPGmake_array_type
    - mmfatal
    - new_variable
    - strpbrk
    linkageType: ''
    returnType: struct variable
    signature: 'struct variable *

      find_variable(const char *name)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ECPGfree_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:335,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:336,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:337,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:338,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:339,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:340,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:341,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:342,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:343,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - brace_level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 348
    functionName: remove_typedefs
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - ECPGfree_struct_member
    - free
    linkageType: ''
    returnType: void
    signature: void remove_typedefs(int brace_level)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:382,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:398,1
    - Dst: ECPGfree_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:411,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:412,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:413,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - brace_level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 418
    functionName: remove_variables
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - ECPGfree_type
    - free
    linkageType: ''
    returnType: void
    signature: void remove_variables(int brace_level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:439,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 448
    functionName: reset_variables
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void reset_variables(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - list
    - var
    - ind
    argTypes:
    - struct arguments**
    - struct variable*
    - struct variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 464
    functionName: add_variable_to_head
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - mm_alloc
    linkageType: ''
    returnType: void
    signature: void add_variable_to_head(struct arguments **list, struct variable
      *var, struct variable *ind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:471,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - list
    - var
    - ind
    argTypes:
    - struct arguments**
    - struct variable*
    - struct variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 483
    functionName: add_variable_to_tail
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - mm_alloc
    linkageType: ''
    returnType: void
    signature: void add_variable_to_tail(struct arguments **list, struct variable
      *var, struct variable *ind)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:507,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - list
    - var
    argTypes:
    - struct arguments**
    - struct variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 509
    functionName: remove_variable_from_list
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void remove_variable_from_list(struct arguments **list, struct variable
      *var)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:524,1
    - Dst: dump_variables
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:531,1
    - Dst: ECPGdump_a_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:534,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:540,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:542,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - list
    - mode
    argTypes:
    - struct arguments*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 543
    functionName: dump_variables
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 1
    functionsReached:
    - ECPGdump_a_type
    - free
    - dump_variables
    - mm_strdup
    linkageType: ''
    returnType: void
    signature: void dump_variables(struct arguments *list, int mode)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: check_indicator
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:566,1
    - Dst: check_indicator
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:570,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:573,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - var
    argTypes:
    - struct ECPGtype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 576
    functionName: check_indicator
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 1
    functionsReached:
    - mmerror
    - check_indicator
    linkageType: ''
    returnType: void
    signature: void check_indicator(struct ECPGtype *var)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:585,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:590,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - name
    - noerror
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 593
    functionName: get_typedef
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - mmfatal
    - strcmp
    linkageType: ''
    returnType: struct typedefs
    signature: 'struct typedefs *

      get_typedef(const char *name, bool noerror)'
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:601,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:603,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:604,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:609,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:611,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:611,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:612,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:614,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:621,1
    - Dst: ngettext
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:621,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:626,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:628,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:628,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:629,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:631,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:631,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:632,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:645,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:646,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:656,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:678,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:684,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:691,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:707,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:708,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 67
    argCount: 7
    argNames:
    - type_enum
    - dimension
    - length
    - type_dimension
    - type_index
    - pointer_len
    - type_definition
    argTypes:
    - enum ECPGttype
    - char**
    - char**
    - char*
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 712
    functionName: adjust_array
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - mmfatal
    - ngettext
    - strcmp
    - atoi
    linkageType: ''
    returnType: void
    signature: "void adjust_array(enum ECPGttype type_enum,\n\t\t\t const char **dimension,
      const char **length,\n\t\t\t const char *type_dimension, const char *type_index,\n\t\t\t
      int pointer_len, bool type_definition)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:37,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:37,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:39,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:39,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:42,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:42,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:43,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:43,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:45,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:45,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:48,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:48,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:50,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:50,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:51,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:51,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:52,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:52,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:53,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:53,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:54,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:54,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:55,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:55,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:57,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:57,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:58,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:58,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:59,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:59,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:60,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:60,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:61,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:61,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:63,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:63,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:64,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 65
    functionName: help
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c
    functionUses: 6
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(const char *progname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mm_alloc::mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 84
    functionName: add_include_path
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c
    functionUses: 0
    functionsReached:
    - mm_alloc::mm_alloc
    linkageType: ''
    returnType: void
    signature: void add_include_path(char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:93,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:97,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:100,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - define
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 126
    functionName: add_preprocessor_define
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c
    functionUses: 0
    functionsReached:
    - strchr
    - mm_alloc
    - mm_strdup
    linkageType: ''
    returnType: void
    signature: void add_preprocessor_define(char *define)
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:146,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:146,1
    - Dst: get_progname
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:148,1
    - Dst: find_my_exec
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:150,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:152,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:152,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:158,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:158,1
    - Dst: help
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:160,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:161,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:163,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:163,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:165,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:166,1
    - Dst: getopt_long
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:171,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:179,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:179,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:184,1
    - Dst: get_pkginclude_path
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:185,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:186,1
    - Dst: add_include_path
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:187,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:189,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:195,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:195,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:203,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:203,1
    - Dst: add_preprocessor_define
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:208,1
    - Dst: add_include_path
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:219,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:222,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:223,1
    - Dst: fopen
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:226,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:230,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:230,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:238,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:240,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:242,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:246,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:246,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:260,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:260,1
    - Dst: add_include_path
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:265,1
    - Dst: add_include_path
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:266,1
    - Dst: get_include_path
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:267,1
    - Dst: add_include_path
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:268,1
    - Dst: add_include_path
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:269,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:273,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:274,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:276,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:276,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:278,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:279,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:279,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:285,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:285,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:286,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:286,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:297,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:299,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:299,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:300,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:305,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:305,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:306,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:309,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:310,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:310,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:315,1
    - Dst: fopen
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:325,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:330,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:334,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:334,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:335,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:337,1
    - Dst: fopen
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:342,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:345,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:345,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:347,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:349,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:356,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:356,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:374,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:375,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:376,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:380,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:385,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:388,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:398,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:409,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:410,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:420,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:421,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:422,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:431,1
    - Dst: ECPGfree_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:432,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:433,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:435,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:440,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:441,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:442,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:445,1
    - Dst: lex_init
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:457,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:462,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:464,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:468,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:472,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:474,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:478,1
    - Dst: output_line_number
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:480,1
    - Dst: base_yyparse
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:483,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:491,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:494,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:496,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:503,1
    - Dst: unlink
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:503,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:504,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:504,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:510,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c:514,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 232
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 129
    functionDepth: 6
    functionLinenumber: 129
    functionLinenumberEnd: 518
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/ecpg.c
    functionUses: 19
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - strcmp
    - fopen
    - lex_init
    - ECPGfree_struct_member
    - printf
    - mmerror
    - set_pglocale_pgservice
    - get_include_path
    - fprintf
    - add_include_path
    - _
    - mm_alloc
    - base_yyparse
    - strrchr
    - mm_strdup
    - getopt_long
    - fclose
    - get_pkginclude_path
    - strlen
    - memset
    - last_dir_separator
    - exit
    - output_line_number
    - add_preprocessor_define
    - find_my_exec
    - pg_strcasecmp
    - unlink
    - help
    - free
    - strcpy
    - snprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *const argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - kwname
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: PG_KEYWORD
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/c_keywords.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_KEYWORD(kwname, value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/c_keywords.c:46,1
    - Dst: ScanCKeywords_hash_func
      Src: /src/postgres/src/interfaces/ecpg/preproc/c_keywords.c:54,1
    - Dst: GetScanKeyword
      Src: /src/postgres/src/interfaces/ecpg/preproc/c_keywords.c:60,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/c_keywords.c:62,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - text
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 66
    functionName: ScanCKeywordLookup
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/c_keywords.c
    functionUses: 0
    functionsReached:
    - ScanCKeywords_hash_func
    - strlen
    - GetScanKeyword
    - strcmp
    linkageType: ''
    returnType: int
    signature: int ScanCKeywordLookup(const char *text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:23,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - var
    - value
    argTypes:
    - char*
    - enum ECPGdtype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 29
    functionName: push_assignment
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - mm_alloc
    - mm_strdup
    linkageType: ''
    returnType: void
    signature: void push_assignment(const char *var, enum ECPGdtype value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:39,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 42
    functionName: drop_assignments
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void drop_assignments(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: find_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:47,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:60,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 66
    functionName: ECPGnumeric_lvalue
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - mmerror
    - find_variable
    - fputs
    linkageType: ''
    returnType: void
    signature: void ECPGnumeric_lvalue(char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mm_alloc::mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:82,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:85,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - name
    - connection
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 91
    functionName: add_descriptor
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - mm_alloc::mm_alloc
    - mm_strdup
    linkageType: ''
    returnType: void
    signature: void add_descriptor(const char *name, const char *connection)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:104,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:108,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:111,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:112,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:113,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:119,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:121,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - name
    - connection
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 122
    functionName: drop_descriptor
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - mmerror
    - free
    - strcmp
    linkageType: ''
    returnType: void
    signature: void drop_descriptor(const char *name, const char *connection)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:134,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:138,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:143,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:149,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:151,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 2
    argNames:
    - name
    - connection
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 153
    functionName: lookup_descriptor
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - mmerror
    - strcmp
    - mm_strdup
    linkageType: ''
    returnType: struct descriptor
    signature: 'struct descriptor *

      lookup_descriptor(const char *name, const char *connection)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:160,1
    - Dst: ECPGnumeric_lvalue
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:164,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:166,1
    - Dst: drop_assignments
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:169,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:170,1
    - Dst: whenever_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - desc_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 155
    functionDepth: 6
    functionLinenumber: 155
    functionLinenumberEnd: 172
    functionName: output_get_descr_header
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - ECPGnumeric_lvalue
    - drop_assignments
    - mmerror
    - whenever_action
    - fprintf
    linkageType: ''
    returnType: void
    signature: void output_get_descr_header(const char *desc_name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:179,1
    - Dst: find_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:182,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:183,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:188,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:191,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:196,1
    - Dst: get_dtype
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:196,1
    - Dst: ECPGdump_a_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:197,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:199,1
    - Dst: drop_assignments
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:201,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:202,1
    - Dst: whenever_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:204,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - desc_name
    - index
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 174
    functionDepth: 5
    functionLinenumber: 174
    functionLinenumberEnd: 205
    functionName: output_get_descr
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - find_variable
    - get_dtype
    - fputs
    - ECPGdump_a_type
    - free
    - mm_strdup
    - drop_assignments
    - mmerror
    - whenever_action
    - fprintf
    linkageType: ''
    returnType: void
    signature: void output_get_descr(const char *desc_name, const char *index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:212,1
    - Dst: ECPGnumeric_lvalue
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:216,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:218,1
    - Dst: drop_assignments
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:221,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:222,1
    - Dst: whenever_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - desc_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 207
    functionDepth: 6
    functionLinenumber: 207
    functionLinenumberEnd: 224
    functionName: output_set_descr_header
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - ECPGnumeric_lvalue
    - drop_assignments
    - mmerror
    - whenever_action
    - fprintf
    linkageType: ''
    returnType: void
    signature: void output_set_descr_header(const char *desc_name)
  - BBCount: 18
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 37
    argCount: 1
    argNames:
    - itemcode
    argTypes:
    - enum ECPGdtype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 266
    functionName: descriptor_item_name
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      descriptor_item_name(enum ECPGdtype itemcode)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:273,1
    - Dst: find_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:276,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:285,1
    - Dst: descriptor_item_name
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:286,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:295,1
    - Dst: descriptor_item_name
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:296,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:304,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:306,1
    - Dst: get_dtype
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:306,1
    - Dst: ECPGdump_a_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:307,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:309,1
    - Dst: drop_assignments
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:317,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:318,1
    - Dst: whenever_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:320,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 2
    argNames:
    - desc_name
    - index
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 268
    functionDepth: 5
    functionLinenumber: 268
    functionLinenumberEnd: 321
    functionName: output_set_descr
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - find_variable
    - get_dtype
    - fputs
    - mmfatal
    - ECPGdump_a_type
    - free
    - mm_strdup
    - drop_assignments
    - whenever_action
    - descriptor_item_name
    - fprintf
    linkageType: ''
    returnType: void
    signature: void output_set_descr(const char *desc_name, const char *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - name
    - input
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 343
    functionName: descriptor_variable
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - strlcpy
    linkageType: ''
    returnType: struct variable
    signature: 'struct variable *

      descriptor_variable(const char *name, int input)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: loc_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:353,1
    - Dst: loc_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:355,1
    - Dst: loc_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 367
    functionName: sqlda_variable
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c
    functionUses: 0
    functionsReached:
    - loc_strdup
    - loc_alloc
    linkageType: ''
    returnType: struct variable
    signature: 'struct variable *

      sqlda_variable(const char *name)'
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: base_yylex_location
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:75,1
    - Dst: base_yylex_location
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:100,1
    - Dst: base_yylex_location
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:188,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:191,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:198,1
    - Dst: check_uescapechar
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:198,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:199,1
    - Dst: make3_str
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:206,1
    - Dst: loc_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:209,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 101
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 223
    functionName: filtered_base_yylex
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/parser.c
    functionUses: 0
    functionsReached:
    - make3_str
    - check_uescapechar
    - loc_strdup
    - strlen
    - base_yylex_location
    - mmerror
    linkageType: ''
    returnType: int
    signature: int filtered_base_yylex(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: base_yylex
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:241,1
    - Dst: loc_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:259,1
    - Dst: loc_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:266,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 278
    functionName: base_yylex_location
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/parser.c
    functionUses: 1
    functionsReached:
    - loc_strdup
    - base_yylex
    linkageType: ''
    returnType: int
    signature: int base_yylex_location(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isxdigit
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:289,1
    - Dst: ecpg_isspace
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:293,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - escape
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 297
    functionName: check_uescapechar
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/parser.c
    functionUses: 1
    functionsReached:
    - ecpg_isspace
    - isxdigit
    linkageType: ''
    returnType: bool
    signature: bool check_uescapechar(unsigned char escape)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 312
    functionName: ecpg_isspace
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/parser.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ecpg_isspace(char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashline_number
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:12,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 15
    functionName: output_line_number
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/output.c
    functionUses: 1
    functionsReached:
    - hashline_number
    - fprintf
    linkageType: ''
    returnType: void
    signature: void output_line_number(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: output_escaped_str
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:20,1
    - Dst: whenever_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:22,1
    - Dst: output_line_number
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:23,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stmt
    - whenever_mode
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: output_simple_statement
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/output.c
    functionUses: 0
    functionsReached:
    - output_escaped_str
    - output_line_number
    - whenever_action
    linkageType: ''
    returnType: void
    signature: void output_simple_statement(const char *stmt, int whenever_mode)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:40,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:43,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:46,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:49,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:52,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:55,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:58,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct when*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 61
    functionName: print_action
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/output.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_action(struct when *w)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: output_line_number
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:68,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:69,1
    - Dst: print_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:70,1
    - Dst: output_line_number
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:74,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:75,1
    - Dst: print_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:76,1
    - Dst: output_line_number
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:80,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:81,1
    - Dst: print_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:82,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:86,1
    - Dst: output_line_number
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:88,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - mode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 89
    functionName: whenever_action
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/output.c
    functionUses: 5
    functionsReached:
    - print_action
    - output_line_number
    - fputc
    - fprintf
    linkageType: ''
    returnType: void
    signature: void whenever_action(int mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:136,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:146,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:148,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:151,1
    - Dst: output_escaped_str
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:152,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:153,1
    - Dst: dump_variables
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:157,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:159,1
    - Dst: dump_variables
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:160,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:162,1
    - Dst: whenever_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - stmt
    - whenever_mode
    - st
    argTypes:
    - char*
    - int
    - enum ECPG_statement_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 165
    functionName: output_statement
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/output.c
    functionUses: 0
    functionsReached:
    - fputs
    - dump_variables
    - output_escaped_str
    - whenever_action
    - fprintf
    linkageType: ''
    returnType: void
    signature: void output_statement(const char *stmt, int whenever_mode, enum ECPG_statement_type
      st)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:170,1
    - Dst: output_escaped_str
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:171,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:172,1
    - Dst: output_escaped_str
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:173,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:174,1
    - Dst: whenever_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - name
    - stmt
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: output_prepare_statement
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/output.c
    functionUses: 0
    functionsReached:
    - output_escaped_str
    - whenever_action
    - fputs
    - fprintf
    linkageType: ''
    returnType: void
    signature: void output_prepare_statement(const char *name, const char *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:183,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:185,1
    - Dst: output_escaped_str
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:186,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:187,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:190,1
    - Dst: whenever_action
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 193
    functionName: output_deallocate_prepare_statement
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/output.c
    functionUses: 0
    functionsReached:
    - strcmp
    - fputs
    - output_escaped_str
    - whenever_action
    - fprintf
    linkageType: ''
    returnType: void
    signature: void output_deallocate_prepare_statement(const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:199,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:207,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:214,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:216,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:234,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:238,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:242,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/ecpg/preproc/output.c:246,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 2
    argNames:
    - str
    - quoted
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 247
    functionName: output_escaped_str
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/output.c
    functionUses: 4
    functionsReached:
    - fputc
    - strlen
    - fputs
    linkageType: ''
    returnType: void
    signature: void output_escaped_str(const char *str, bool quoted)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:19,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:21,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:26,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:26,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:29,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:29,1
    - Dst: vfprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:33,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:35,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - error_code
    - type
    - error
    - ap
    argTypes:
    - int
    - enum errortype
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 46
    functionName: vmmerror
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 0
    functionsReached:
    - vfprintf
    - _
    - fprintf
    linkageType: ''
    returnType: void
    signature: void vmmerror(int error_code, enum errortype type, const char *error,
      va_list ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:54,1
    - Dst: vmmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:55,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - error_code
    - type
    - error
    argTypes:
    - int
    - enum errortype
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 57
    functionName: mmerror
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 10
    functionsReached:
    - va_start
    - va_end
    - vmmerror
    linkageType: ''
    returnType: void
    signature: void mmerror(int error_code, enum errortype type, const char *error,
      ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:65,1
    - Dst: vmmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:66,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:67,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:70,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:72,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:74,1
    - Dst: unlink
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:74,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:75,1
    - Dst: _
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:75,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:76,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - error_code
    - error
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: mmfatal
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 6
    functionsReached:
    - va_end
    - strcmp
    - unlink
    - va_start
    - _
    - vmmerror
    - fclose
    - exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void mmfatal(int error_code, const char *error, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:87,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: mm_alloc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 8
    functionsReached:
    - mmfatal
    - malloc
    linkageType: ''
    returnType: void
    signature: 'void *

      mm_alloc(size_t size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:99,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: mm_strdup
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 9
    functionsReached:
    - mmfatal
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      mm_strdup(const char *string)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:144,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:149,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 137
    functionDepth: 3
    functionLinenumber: 137
    functionLinenumberEnd: 164
    functionName: loc_alloc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 2
    functionsReached:
    - MAXALIGN
    - Max
    - mm_alloc
    linkageType: ''
    returnType: void
    signature: 'void *

      loc_alloc(size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: loc_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:172,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:172,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 176
    functionName: loc_strdup
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 3
    functionsReached:
    - strcpy
    - strlen
    - loc_alloc
    linkageType: ''
    returnType: char
    signature: 'char *

      loc_strdup(const char *string)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 193
    functionName: reclaim_local_storage
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void reclaim_local_storage(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: loc_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:207,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:207,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:207,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:209,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:210,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:210,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:211,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - str1
    - str2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 204
    functionDepth: 4
    functionLinenumber: 204
    functionLinenumberEnd: 214
    functionName: cat2_str
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 0
    functionsReached:
    - strcat
    - strcpy
    - strlen
    - loc_alloc
    linkageType: ''
    returnType: char
    signature: 'char *

      cat2_str(const char *str1, const char *str2)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:226,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:228,1
    - Dst: cat2_str
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:232,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:232,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - count
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 219
    functionDepth: 5
    functionLinenumber: 219
    functionLinenumberEnd: 237
    functionName: cat_str
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - cat2_str
    - va_arg
    linkageType: ''
    returnType: char
    signature: 'char *

      cat_str(int count, ...)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: loc_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:245,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:245,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:245,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:247,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - str1
    - str2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 242
    functionDepth: 4
    functionLinenumber: 242
    functionLinenumberEnd: 250
    functionName: make2_str
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 0
    functionsReached:
    - strcat
    - strcpy
    - strlen
    - loc_alloc
    linkageType: ''
    returnType: char
    signature: 'char *

      make2_str(const char *str1, const char *str2)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: loc_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:258,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:258,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:258,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:258,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:260,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:261,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/preproc/util.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - str1
    - str2
    - str3
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 255
    functionDepth: 4
    functionLinenumber: 255
    functionLinenumberEnd: 264
    functionName: make3_str
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/util.c
    functionUses: 1
    functionsReached:
    - strcat
    - strcpy
    - strlen
    - loc_alloc
    linkageType: ''
    returnType: char
    signature: 'char *

      make3_str(const char *str1, const char *str2, const char *str3)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ECPGmake_struct_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:25,1
    - Dst: ECPGmake_struct_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:34,1
    - Dst: ECPGmake_array_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:36,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:36,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:39,1
    - Dst: ECPGmake_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:43,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - rm
    argTypes:
    - struct ECPGstruct_member*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 49
    functionName: ECPGstruct_member_dup
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 0
    functionsReached:
    - ECPGmake_simple_type
    - ECPGmake_struct_member
    - ECPGmake_struct_type
    - ECPGmake_array_type
    linkageType: ''
    returnType: struct ECPGstruct_member
    signature: 'struct ECPGstruct_member *

      ECPGstruct_member_dup(struct ECPGstruct_member *rm)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:57,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - name
    - type
    - start
    argTypes:
    - char*
    - struct ECPGtype*
    - struct ECPGstruct_member**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 69
    functionName: ECPGmake_struct_member
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 1
    functionsReached:
    - mm_alloc
    - mm_strdup
    linkageType: ''
    returnType: void
    signature: void ECPGmake_struct_member(const char *name, struct ECPGtype *type,
      struct ECPGstruct_member **start)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:74,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - type
    - size
    - counter
    argTypes:
    - enum ECPGttype
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 84
    functionName: ECPGmake_simple_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 3
    functionsReached:
    - mm_alloc
    - mm_strdup
    linkageType: ''
    returnType: struct ECPGtype
    signature: 'struct ECPGtype *

      ECPGmake_simple_type(enum ECPGttype type, const char *size, int counter)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - type
    - size
    argTypes:
    - struct ECPGtype*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 94
    functionName: ECPGmake_array_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 3
    functionsReached:
    - ECPGmake_simple_type
    linkageType: ''
    returnType: struct ECPGtype
    signature: 'struct ECPGtype *

      ECPGmake_array_type(struct ECPGtype *type, const char *size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:100,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:102,1
    - Dst: ECPGstruct_member_dup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:103,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - rm
    - type
    - type_name
    - struct_sizeof
    argTypes:
    - struct ECPGstruct_member*
    - enum ECPGttype
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 107
    functionName: ECPGmake_struct_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 3
    functionsReached:
    - ECPGmake_simple_type
    - ECPGstruct_member_dup
    - mm_strdup
    linkageType: ''
    returnType: struct ECPGtype
    signature: "struct ECPGtype *\nECPGmake_struct_type(struct ECPGstruct_member *rm,
      enum ECPGttype type,\n\t\t\t\t\t const char *type_name, const char *struct_sizeof)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:191,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 82
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum ECPGttype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 195
    functionName: get_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 1
    functionsReached:
    - mmerror
    linkageType: ''
    returnType: char
    signature: 'char *

      get_type(enum ECPGttype type)'
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:233,1
    - Dst: find_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:234,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:235,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:240,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:241,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:243,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:247,1
    - Dst: find_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:248,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:249,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:254,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:255,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:257,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:265,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:269,1
    - Dst: ECPGdump_a_struct
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:273,1
    - Dst: IS_SIMPLE_TYPE
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:281,1
    - Dst: base_yyerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:282,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:284,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:293,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:295,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:296,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:300,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:308,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:311,1
    - Dst: ECPGdump_a_struct
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:313,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:314,1
    - Dst: base_yyerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:318,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:326,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:327,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:328,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:331,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:333,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:333,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:335,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:335,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:337,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:338,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:339,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:348,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:349,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:352,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:354,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:356,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:358,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:359,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:368,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:369,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:372,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:374,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:374,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:376,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:376,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:378,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:379,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 87
    argCount: 12
    argNames:
    - o
    - name
    - type
    - brace_level
    - ind_name
    - ind_type
    - ind_brace_level
    - prefix
    - ind_prefix
    - arr_str_size
    - struct_sizeof
    - ind_struct_sizeof
    argTypes:
    - FILE*
    - char*
    - struct ECPGtype*
    - int
    - char*
    - struct ECPGtype*
    - int
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 218
    functionDepth: 5
    functionLinenumber: 218
    functionLinenumberEnd: 383
    functionName: ECPGdump_a_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 3
    functionsReached:
    - find_variable
    - strcmp
    - base_yyerror
    - ECPGdump_a_struct
    - mmfatal
    - free
    - ECPGdump_a_simple
    - mm_strdup
    - mmerror
    - IS_SIMPLE_TYPE
    linkageType: ''
    returnType: void
    signature: "void ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype *type,
      const int brace_level,\n\t\t\t\tconst char *ind_name, struct ECPGtype *ind_type,
      const int ind_brace_level,\n\t\t\t\tconst char *prefix, const char *ind_prefix,\n\t\t\t\tchar
      *arr_str_size, const char *struct_sizeof,\n\t\t\t\tconst char *ind_struct_sizeof)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:399,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:402,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:404,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:407,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:407,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:407,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:408,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:408,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:408,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:408,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:425,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:426,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:426,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:428,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:430,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:442,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:444,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:457,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:458,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:459,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:459,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:460,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:460,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:463,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:465,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:475,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:477,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:477,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:485,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:486,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:493,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:494,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:501,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:502,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:509,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:510,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:517,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:518,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:526,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:527,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:527,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:529,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:531,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:533,1
    - Dst: ecpg_type_name
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:533,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:541,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:542,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:548,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:549,1
    - Dst: get_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:549,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:551,1
    - Dst: get_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:551,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:553,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:554,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 69
    argCount: 8
    argNames:
    - o
    - name
    - type
    - varcharsize
    - arrsize
    - size
    - prefix
    - counter
    argTypes:
    - FILE*
    - char*
    - enum ECPGttype
    - char*
    - char*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 390
    functionDepth: 3
    functionLinenumber: 390
    functionLinenumberEnd: 556
    functionName: ECPGdump_a_simple
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 1
    functionsReached:
    - sprintf
    - strcmp
    - mm_alloc
    - strlen
    - ecpg_type_name
    - get_type
    - atoi
    - free
    - strcpy
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,\n\t\t\t\t
      \ char *varcharsize,\n\t\t\t\t  char *arrsize,\n\t\t\t\t  const char *size,\n\t\t\t\t
      \ const char *prefix,\n\t\t\t\t  int counter)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:569,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:569,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:569,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:570,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:570,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:570,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:572,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:573,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:575,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:583,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:584,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:586,1
    - Dst: ECPGdump_a_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:594,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:605,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:613,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:616,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:617,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 8
    argNames:
    - o
    - name
    - ind_name
    - arrsize
    - type
    - ind_type
    - prefix
    - ind_prefix
    argTypes:
    - FILE*
    - char*
    - char*
    - char*
    - struct ECPGtype*
    - struct ECPGtype*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 560
    functionDepth: 6
    functionLinenumber: 560
    functionLinenumberEnd: 618
    functionName: ECPGdump_a_struct
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 1
    functionsReached:
    - mm_alloc
    - atoi
    - ECPGdump_a_type
    - strlen
    - free
    - sprintf
    - mmerror
    linkageType: ''
    returnType: void
    signature: void ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name,
      char *arrsize, struct ECPGtype *type, struct ECPGtype *ind_type, const char
      *prefix, const char *ind_prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:628,1
    - Dst: ECPGfree_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:629,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rm
    argTypes:
    - struct ECPGstruct_member*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 620
    functionDepth: 1
    functionLinenumber: 620
    functionLinenumberEnd: 632
    functionName: ECPGfree_struct_member
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 2
    functionsReached:
    - ECPGfree_type
    - free
    linkageType: ''
    returnType: void
    signature: void ECPGfree_struct_member(struct ECPGstruct_member *rm)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IS_SIMPLE_TYPE
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:637,1
    - Dst: base_yyerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:645,1
    - Dst: ECPGfree_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:650,1
    - Dst: IS_SIMPLE_TYPE
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:653,1
    - Dst: base_yyerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:654,1
    - Dst: ECPGfree_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:656,1
    - Dst: ECPGfree_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:661,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:664,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:668,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:669,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:670,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:671,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - type
    argTypes:
    - struct ECPGtype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 634
    functionDepth: 2
    functionLinenumber: 634
    functionLinenumberEnd: 672
    functionName: ECPGfree_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 3
    functionsReached:
    - ECPGfree_type
    - ECPGfree_struct_member
    - mmerror
    - free
    - base_yyerror
    - IS_SIMPLE_TYPE
    linkageType: ''
    returnType: void
    signature: void ECPGfree_type(struct ECPGtype *type)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:726,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum ECPGdtype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 674
    functionDepth: 2
    functionLinenumber: 674
    functionLinenumberEnd: 730
    functionName: get_dtype
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 2
    functionsReached:
    - mmerror
    linkageType: ''
    returnType: char
    signature: 'char *

      get_dtype(enum ECPGdtype type)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - kwname
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: PG_KEYWORD
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/ecpg_keywords.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_KEYWORD(kwname, value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeywordLookup
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg_keywords.c:44,1
    - Dst: ScanKeywordLookup
      Src: /src/postgres/src/interfaces/ecpg/preproc/ecpg_keywords.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - text
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: ScanECPGKeywordLookup
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/ecpg_keywords.c
    functionUses: 0
    functionsReached:
    - ScanKeywordLookup
    linkageType: ''
    returnType: int
    signature: int ScanECPGKeywordLookup(const char *text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - kwname
    - ','
    - value
    - ','
    - category
    - ','
    - collabel
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: PG_KEYWORD
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/keywords.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_KEYWORD(kwname, value, category, collabel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: pthread_getspecific
    functionSourceFile: /src/postgres/src/interfaces/ecpg/include/ecpg-pthread-win32.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pthread_getspecific(key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: pthread_setspecific
    functionSourceFile: /src/postgres/src/interfaces/ecpg/include/ecpg-pthread-win32.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pthread_setspecific(key, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - destructor
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: pthread_key_create
    functionSourceFile: /src/postgres/src/interfaces/ecpg/include/ecpg-pthread-win32.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pthread_key_create(key, destructor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - once
    - ','
    - fn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: pthread_once
    functionSourceFile: /src/postgres/src/interfaces/ecpg/include/ecpg-pthread-win32.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pthread_once(once, fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: IS_SIMPLE_TYPE
    functionSourceFile: /src/postgres/src/interfaces/ecpg/include/ecpgtype.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SIMPLE_TYPE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 14
    functionName: Max
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Max(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: Min
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 42
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Min(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: init_var
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: init_var(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: digitbuf_alloc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: digitbuf_alloc(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: digitbuf_free
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: digitbuf_free(buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: digitbuf_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:31,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - var
    - ndigits
    argTypes:
    - numeric*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 39
    functionName: alloc_var
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached:
    - digitbuf_free
    - digitbuf_alloc
    linkageType: ''
    returnType: int
    signature: int alloc_var(numeric *var, int ndigits)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:46,1
    - Dst: alloc_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:49,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 56
    functionName: PGTYPESnumeric_new
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 15
    functionsReached:
    - pgtypes_alloc
    - alloc_var
    - free
    linkageType: ''
    returnType: numeric
    signature: 'numeric *

      PGTYPESnumeric_new(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:63,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 69
    functionName: PGTYPESdecimal_new
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 2
    functionsReached:
    - pgtypes_alloc
    - memset
    linkageType: ''
    returnType: decimal
    signature: 'decimal *

      PGTYPESdecimal_new(void)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:87,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:92,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:100,1
    - Dst: alloc_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:111,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:111,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:136,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:144,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:174,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:195,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 94
    argCount: 3
    argNames:
    - str
    - ptr
    - dest
    argTypes:
    - char*
    - char**
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 215
    functionName: set_var_from_str
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached:
    - alloc_var
    - isdigit
    - strtol
    - isspace
    - pg_strncasecmp
    - strlen
    linkageType: ''
    returnType: int
    signature: int set_var_from_str(char *str, char **ptr, numeric *dest)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:235,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:238,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:267,1
    - Dst: Min
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:267,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:272,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:272,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:272,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:285,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 2
    argNames:
    - var
    - dscale
    argTypes:
    - numeric*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 318
    functionName: get_str_from_var
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached:
    - pgtypes_alloc
    - Min
    - Max
    - sprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      get_str_from_var(numeric *var, int dscale)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:323,1
    - Dst: set_var_from_str
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:332,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - str
    - endptr
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 340
    functionName: PGTYPESnumeric_from_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 7
    functionsReached:
    - pgtypes_alloc
    - set_var_from_str
    - PGTYPESnumeric_free
    linkageType: ''
    returnType: numeric
    signature: 'numeric *

      PGTYPESnumeric_from_asc(char *str, char **endptr)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:345,1
    - Dst: PGTYPESnumeric_copy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:351,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:353,1
    - Dst: get_str_from_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:361,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:362,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - num
    - dscale
    argTypes:
    - numeric*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 364
    functionName: PGTYPESnumeric_to_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 7
    functionsReached:
    - PGTYPESnumeric_copy
    - get_str_from_var
    - PGTYPESnumeric_free
    - PGTYPESnumeric_new
    linkageType: ''
    returnType: char
    signature: 'char *

      PGTYPESnumeric_to_asc(numeric *num, int dscale)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: digitbuf_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - var
    argTypes:
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 382
    functionName: zero_var
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached:
    - digitbuf_free
    linkageType: ''
    returnType: void
    signature: void zero_var(numeric *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: digitbuf_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:387,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - var
    argTypes:
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 389
    functionName: PGTYPESnumeric_free
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 20
    functionsReached:
    - digitbuf_free
    - free
    linkageType: ''
    returnType: void
    signature: void PGTYPESnumeric_free(numeric *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - var
    argTypes:
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 395
    functionName: PGTYPESdecimal_free
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void PGTYPESdecimal_free(decimal *var)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 2
    argNames:
    - var1
    - var2
    argTypes:
    - numeric*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 454
    functionName: cmp_abs
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int cmp_abs(numeric *var1, numeric *var2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:484,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:485,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:486,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:491,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:530,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - numeric*
    - numeric*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 539
    functionName: add_abs
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached:
    - digitbuf_free
    - Max
    - digitbuf_alloc
    linkageType: ''
    returnType: int
    signature: int add_abs(numeric *var1, numeric *var2, numeric *result)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:573,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:574,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:579,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:618,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - numeric*
    - numeric*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 627
    functionName: sub_abs
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached:
    - digitbuf_free
    - Max
    - digitbuf_alloc
    linkageType: ''
    returnType: int
    signature: int sub_abs(numeric *var1, numeric *var2, numeric *result)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: add_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:649,1
    - Dst: cmp_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:658,1
    - Dst: zero_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:666,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:667,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:668,1
    - Dst: sub_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:677,1
    - Dst: sub_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:688,1
    - Dst: cmp_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:704,1
    - Dst: zero_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:712,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:713,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:714,1
    - Dst: sub_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:723,1
    - Dst: sub_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:734,1
    - Dst: add_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:747,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 51
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - numeric*
    - numeric*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 754
    functionName: PGTYPESnumeric_add
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 2
    functionsReached:
    - zero_var
    - add_abs
    - Max
    - cmp_abs
    - sub_abs
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_add(numeric *var1, numeric *var2, numeric *result)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: add_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:779,1
    - Dst: cmp_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:790,1
    - Dst: zero_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:798,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:799,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:800,1
    - Dst: sub_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:809,1
    - Dst: sub_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:820,1
    - Dst: cmp_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:836,1
    - Dst: zero_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:844,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:845,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:846,1
    - Dst: sub_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:855,1
    - Dst: sub_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:866,1
    - Dst: add_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:879,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 51
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - numeric*
    - numeric*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 764
    functionDepth: 0
    functionLinenumber: 764
    functionLinenumberEnd: 886
    functionName: PGTYPESnumeric_sub
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 2
    functionsReached:
    - zero_var
    - add_abs
    - Max
    - cmp_abs
    - sub_abs
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_sub(numeric *var1, numeric *var2, numeric *result)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:917,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:920,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:966,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 52
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - numeric*
    - numeric*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 976
    functionName: PGTYPESnumeric_mul
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 2
    functionsReached:
    - digitbuf_free
    - memset
    - digitbuf_alloc
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_mul(numeric *var1, numeric *var2, numeric *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1041,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1042,1
    - Dst: Max
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1043,1
    - Dst: Min
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1044,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - var1
    - var2
    - rscale
    argTypes:
    - numeric*
    - numeric*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 986
    functionDepth: 0
    functionLinenumber: 986
    functionLinenumberEnd: 1050
    functionName: select_div_scale
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached:
    - Min
    - Max
    linkageType: ''
    returnType: int
    signature: int select_div_scale(numeric *var1, numeric *var2, int *rscale)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: select_div_scale
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1071,1
    - Dst: zero_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1102,1
    - Dst: init_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1110,1
    - Dst: init_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1112,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1120,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1125,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1134,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1138,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1145,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1148,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1186,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1187,1
    - Dst: cmp_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1202,1
    - Dst: sub_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1222,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1268,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1273,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 138
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - numeric*
    - numeric*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1052
    functionDepth: 0
    functionLinenumber: 1052
    functionLinenumberEnd: 1277
    functionName: PGTYPESnumeric_div
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 2
    functionsReached:
    - select_div_scale
    - memcpy
    - zero_var
    - init_var
    - cmp_abs
    - digitbuf_alloc
    - digitbuf_free
    - sub_abs
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_div(numeric *var1, numeric *var2, numeric *result)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cmp_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1287,1
    - Dst: cmp_abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1295,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 2
    argNames:
    - var1
    - var2
    argTypes:
    - numeric*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1280
    functionDepth: 0
    functionLinenumber: 1280
    functionLinenumberEnd: 1306
    functionName: PGTYPESnumeric_cmp
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 1
    functionsReached:
    - cmp_abs
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_cmp(numeric *var1, numeric *var2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESnumeric_from_long
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - int_val
    - var
    argTypes:
    - signed int
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1308
    functionDepth: 1
    functionLinenumber: 1308
    functionLinenumberEnd: 1315
    functionName: PGTYPESnumeric_from_int
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 4
    functionsReached:
    - PGTYPESnumeric_from_long
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_from_int(signed int int_val, numeric *var)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: alloc_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1361,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - long_val
    - var
    argTypes:
    - signed long int
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1317
    functionDepth: 0
    functionLinenumber: 1317
    functionLinenumberEnd: 1385
    functionName: PGTYPESnumeric_from_long
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 3
    functionsReached:
    - alloc_var
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_from_long(signed long int long_val, numeric *var)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zero_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1394,1
    - Dst: alloc_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1401,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - numeric*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1387
    functionDepth: 0
    functionLinenumber: 1387
    functionLinenumberEnd: 1408
    functionName: PGTYPESnumeric_copy
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 4
    functionsReached:
    - zero_var
    - alloc_var
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_copy(numeric *src, numeric *dst)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1417,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1420,1
    - Dst: PGTYPESnumeric_copy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1422,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - d
    - dst
    argTypes:
    - double
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1410
    functionDepth: 2
    functionLinenumber: 1410
    functionLinenumberEnd: 1429
    functionName: PGTYPESnumeric_from_double
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 1
    functionsReached:
    - PGTYPESnumeric_copy
    - PGTYPESnumeric_from_asc
    - PGTYPESnumeric_free
    - sprintf
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_from_double(double d, numeric *dst)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1437,1
    - Dst: PGTYPESnumeric_copy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1442,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1444,1
    - Dst: get_str_from_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1448,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1449,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1458,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1461,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1473,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1477,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - var
    - dp
    argTypes:
    - numeric*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1431
    functionDepth: 2
    functionLinenumber: 1431
    functionLinenumberEnd: 1480
    functionName: numericvar_to_double
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 0
    functionsReached:
    - PGTYPESnumeric_free
    - PGTYPESnumeric_new
    - free
    - PGTYPESnumeric_copy
    - get_str_from_var
    - strtod
    linkageType: ''
    returnType: int
    signature: int numericvar_to_double(numeric *var, double *dp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: numericvar_to_double
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - nv
    - dp
    argTypes:
    - numeric*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1482
    functionDepth: 3
    functionLinenumber: 1482
    functionLinenumberEnd: 1491
    functionName: PGTYPESnumeric_to_double
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 3
    functionsReached:
    - numericvar_to_double
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_to_double(numeric *nv, double *dp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESnumeric_to_long
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1499,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - nv
    - ip
    argTypes:
    - numeric*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1493
    functionDepth: 1
    functionLinenumber: 1493
    functionLinenumberEnd: 1515
    functionName: PGTYPESnumeric_to_int
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 3
    functionsReached:
    - PGTYPESnumeric_to_long
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_to_int(numeric *nv, int *ip)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1520,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1527,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1531,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1534,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - nv
    - lp
    argTypes:
    - numeric*
    - long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1517
    functionDepth: 3
    functionLinenumber: 1517
    functionLinenumberEnd: 1544
    functionName: PGTYPESnumeric_to_long
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 4
    functionsReached:
    - strtol
    - free
    - PGTYPESnumeric_to_asc
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_to_long(numeric *nv, long *lp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - numeric*
    - decimal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1546
    functionDepth: 0
    functionLinenumber: 1546
    functionLinenumberEnd: 1567
    functionName: PGTYPESnumeric_to_decimal
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_to_decimal(numeric *src, decimal *dst)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zero_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1574,1
    - Dst: alloc_var
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c:1581,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - decimal*
    - numeric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1569
    functionDepth: 0
    functionLinenumber: 1569
    functionLinenumberEnd: 1588
    functionName: PGTYPESnumeric_from_decimal
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 8
    functionsReached:
    - zero_var
    - alloc_var
    linkageType: ''
    returnType: int
    signature: int PGTYPESnumeric_from_decimal(decimal *src, numeric *dst)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:12,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 17
    functionName: pgtypes_alloc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c
    functionUses: 4
    functionsReached:
    - calloc
    linkageType: ''
    returnType: char
    signature: 'char *

      pgtypes_alloc(long size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 27
    functionName: pgtypes_strdup
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c
    functionUses: 0
    functionsReached:
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      pgtypes_strdup(const char *str)'
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:43,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:47,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:51,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:77,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:84,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:88,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:92,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:96,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:100,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:104,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:108,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:115,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:118,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:127,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:130,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:132,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 78
    argCount: 4
    argNames:
    - replace_val
    - replace_type
    - output
    - pstr_len
    argTypes:
    - union un_fmt_comb
    - int
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 139
    functionName: pgtypes_fmt_replace
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c
    functionUses: 0
    functionsReached:
    - memcpy
    - free
    - strlen
    - pgtypes_alloc
    - strcpy
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pgtypes_fmt_replace(union un_fmt_comb replace_val, int replace_type,
      char **output, int *pstr_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 148
    functionName: PGTYPESchar_free
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/common.c
    functionUses: 5
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void PGTYPESchar_free(char *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - hour
    - min
    - sec
    - fsec
    argTypes:
    - int
    - int
    - int
    - fsec_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 20
    functionName: time2t
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 time2t(const int hour, const int min, const int sec, const fsec_t
      fsec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dt
    - tz
    argTypes:
    - timestamp
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 27
    functionName: dt2local
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: timestamp
    signature: timestamp dt2local(timestamp dt, int tz)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:44,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:47,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:47,1
    - Dst: time2t
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:48,1
    - Dst: unlikely
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:49,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:49,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:50,1
    - Dst: dt2local
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:53,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - tm
    - fsec
    - tzp
    - result
    argTypes:
    - struct tm*
    - fsec_t
    - int*
    - timestamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 60
    functionName: tm2timestamp
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached:
    - IS_VALID_JULIAN
    - dt2local
    - IS_VALID_TIMESTAMP
    - pg_add_s64_overflow
    - unlikely
    - date2j
    - time2t
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: int
    signature: int tm2timestamp(struct tm *tm, fsec_t fsec, int *tzp, timestamp *
      result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetEpochTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:70,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 75
    functionName: SetEpochTimestamp
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached:
    - tm2timestamp
    - GetEpochTime
    linkageType: ''
    returnType: timestamp
    signature: timestamp SetEpochTimestamp(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:100,1
    - Dst: TMODULO
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:103,1
    - Dst: INT64CONST
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:105,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:118,1
    - Dst: dt2time
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:119,1
    - Dst: IS_VALID_UTIME
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:127,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:133,1
    - Dst: INT64CONST
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:133,1
    - Dst: localtime_r
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:135,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:180,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 5
    argNames:
    - dt
    - tzp
    - tm
    - fsec
    - tzn
    argTypes:
    - timestamp
    - int*
    - struct tm*
    - fsec_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 183
    functionName: timestamp2tm
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached:
    - dt2time
    - INT64CONST
    - TMODULO
    - localtime_r
    - date2j
    - IS_VALID_UTIME
    - j2date
    linkageType: ''
    returnType: int
    signature: int timestamp2tm(timestamp dt, int *tzp, struct tm *tm, fsec_t *fsec,
      const char **tzn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:193,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:194,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:195,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:196,1
    - Dst: abort
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dt
    - str
    argTypes:
    - timestamp
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: EncodeSpecialTimestamp
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached:
    - TIMESTAMP_IS_NOEND
    - abort
    - strcpy
    - TIMESTAMP_IS_NOBEGIN
    linkageType: ''
    returnType: void
    signature: void EncodeSpecialTimestamp(timestamp dt, char *str)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:217,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:223,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:224,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:233,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:241,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:245,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:249,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - str
    - endptr
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 265
    functionName: PGTYPEStimestamp_from_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 5
    functionsReached:
    - ParseDateTime
    - SetEpochTimestamp
    - tm2timestamp
    - TIMESTAMP_NOEND
    - strlen
    - DecodeDateTime
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: timestamp
    signature: timestamp PGTYPEStimestamp_from_asc(char *str, char **endptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:277,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:278,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:279,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:280,1
    - Dst: pgtypes_strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - tstamp
    argTypes:
    - timestamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 287
    functionName: PGTYPEStimestamp_to_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 5
    functionsReached:
    - pgtypes_strdup
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - EncodeDateTime
    - EncodeSpecialTimestamp
    linkageType: ''
    returnType: char
    signature: 'char *

      PGTYPEStimestamp_to_asc(timestamp tstamp)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:294,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ts
    argTypes:
    - timestamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 297
    functionName: PGTYPEStimestamp_current
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 2
    functionsReached:
    - tm2timestamp
    - GetCurrentDateTime
    linkageType: ''
    returnType: void
    signature: void PGTYPEStimestamp_current(timestamp * ts)
  - BBCount: 67
    BranchProfiles: []
    Callsites:
    - Dst: dttofmtasc_replace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:372,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:400,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:423,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:446,1
    - Dst: dttofmtasc_replace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:531,1
    - Dst: dttofmtasc_replace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:539,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:547,1
    - Dst: dttofmtasc_replace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:562,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:582,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:603,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:626,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:648,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:667,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:691,1
    - Dst: strftime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:705,1
    - Dst: pgtypes_fmt_replace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:755,1
    CyclomaticComplexity: 76
    EdgeCount: 76
    ICount: 297
    argCount: 7
    argNames:
    - ts
    - dDate
    - dow
    - tm
    - output
    - pstr_len
    - fmtstr
    argTypes:
    - timestamp*
    - date
    - int
    - struct tm*
    - char*
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 774
    functionName: dttofmtasc_replace
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 1
    functionsReached:
    - SetEpochTimestamp
    - strftime
    - pgtypes_fmt_replace
    - dttofmtasc_replace
    linkageType: ''
    returnType: int
    signature: "int dttofmtasc_replace(timestamp * ts, date dDate, int dow, struct
      tm *tm,\n\t\t\t\t   char *output, int *pstr_len, const char *fmtstr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPESdate_from_timestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:785,1
    - Dst: PGTYPESdate_dayofweek
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:786,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:787,1
    - Dst: dttofmtasc_replace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ts
    - output
    - str_len
    - fmtstr
    argTypes:
    - timestamp*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 777
    functionDepth: 4
    functionLinenumber: 777
    functionLinenumberEnd: 790
    functionName: PGTYPEStimestamp_fmt_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 2
    functionsReached:
    - PGTYPESdate_dayofweek
    - dttofmtasc_replace
    - timestamp2tm
    - PGTYPESdate_from_timestamp
    linkageType: ''
    returnType: int
    signature: int PGTYPEStimestamp_fmt_asc(timestamp * ts, char *output, int str_len,
      const char *fmtstr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:795,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:795,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ts1
    - ts2
    - iv
    argTypes:
    - timestamp*
    - timestamp*
    - interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 803
    functionName: PGTYPEStimestamp_sub
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 1
    functionsReached:
    - TIMESTAMP_NOT_FINITE
    linkageType: ''
    returnType: int
    signature: int PGTYPEStimestamp_sub(timestamp * ts1, timestamp * ts2, interval
      * iv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgtypes_strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:825,1
    - Dst: pgtypes_strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:826,1
    - Dst: PGTYPEStimestamp_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:841,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:842,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - str
    - fmt
    - d
    argTypes:
    - char*
    - char*
    - timestamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 805
    functionDepth: 1
    functionLinenumber: 805
    functionLinenumberEnd: 845
    functionName: PGTYPEStimestamp_defmt_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 2
    functionsReached:
    - PGTYPEStimestamp_defmt_scan
    - pgtypes_strdup
    - free
    linkageType: ''
    returnType: int
    signature: int PGTYPEStimestamp_defmt_asc(const char *str, const char *fmt, timestamp
      * d)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:860,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:870,1
    - Dst: isleap
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:886,1
    - Dst: isleap
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:887,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:890,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - tin
    - span
    - tout
    argTypes:
    - timestamp*
    - interval*
    - timestamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 857
    functionDepth: 0
    functionLinenumber: 857
    functionLinenumberEnd: 899
    functionName: PGTYPEStimestamp_add_interval
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 2
    functionsReached:
    - timestamp2tm
    - tm2timestamp
    - TIMESTAMP_NOT_FINITE
    - isleap
    linkageType: ''
    returnType: int
    signature: int PGTYPEStimestamp_add_interval(timestamp * tin, interval * span,
      timestamp * tout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGTYPEStimestamp_add_interval
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tin
    - span
    - tout
    argTypes:
    - timestamp*
    - interval*
    - timestamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 912
    functionDepth: 1
    functionLinenumber: 912
    functionLinenumberEnd: 921
    functionName: PGTYPEStimestamp_sub_interval
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached:
    - PGTYPEStimestamp_add_interval
    linkageType: ''
    returnType: int
    signature: int PGTYPEStimestamp_sub_interval(timestamp * tin, interval * span,
      timestamp * tout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:518,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - key
    - base
    - nel
    argTypes:
    - char*
    - datetkn*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 529
    functionName: datebsearch
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: datetkn
    signature: 'datetkn *

      datebsearch(const char *key, const datetkn *base, unsigned int nel)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:544,1
    - Dst: datebsearch
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - field
    - lowtoken
    - val
    argTypes:
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 561
    functionName: DecodeUnits
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - datebsearch
    - strncmp
    linkageType: ''
    returnType: int
    signature: int DecodeUnits(int field, char *lowtoken, int *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - y
    - m
    - d
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 581
    functionDepth: 0
    functionLinenumber: 581
    functionLinenumberEnd: 604
    functionName: date2j
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int date2j(int y, int m, int d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - jd
    - year
    - month
    - day
    argTypes:
    - int
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 628
    functionName: j2date
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void j2date(int jd, int *year, int *month, int *day)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:644,1
    - Dst: datebsearch
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:650,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - field
    - lowtoken
    - val
    argTypes:
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 665
    functionName: DecodeSpecial
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - datebsearch
    - strncmp
    linkageType: ''
    returnType: int
    signature: int DecodeSpecial(int field, char *lowtoken, int *val)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:674,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:681,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:684,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:691,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:693,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:695,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:697,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:702,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:704,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:706,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:713,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:715,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:717,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:719,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 4
    argNames:
    - tm
    - style
    - str
    - EuroDates
    argTypes:
    - struct tm*
    - int
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 722
    functionName: EncodeDateOnly
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - Assert
    - sprintf
    linkageType: ''
    returnType: void
    signature: void EncodeDateOnly(struct tm *tm, int style, char *str, bool EuroDates)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:727,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 735
    functionName: TrimTrailingZeros
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: void TrimTrailingZeros(char *str)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:774,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:784,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:784,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:785,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:788,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:788,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:791,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:791,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:796,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:798,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:798,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:800,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:800,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:808,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:810,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:812,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:822,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:822,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:823,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:826,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:826,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:829,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:829,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:841,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:841,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:845,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:847,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:847,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:849,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:849,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:857,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:859,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:869,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:869,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:870,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:873,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:873,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:876,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:876,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:881,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:881,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:885,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:887,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:887,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:889,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:889,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:898,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:899,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:901,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:902,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:905,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:907,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:909,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:917,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:917,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:918,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:921,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:921,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:923,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:923,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:926,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:926,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:931,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:931,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:941,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:943,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:943,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:945,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:945,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 95
    argCount: 8
    argNames:
    - tm
    - fsec
    - print_tz
    - tz
    - tzn
    - style
    - str
    - EuroDates
    argTypes:
    - struct tm*
    - fsec_t
    - bool
    - int
    - char*
    - int
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 950
    functionName: EncodeDateTime
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached:
    - memcpy
    - abs
    - date2j
    - strlen
    - sprintf
    - strcpy
    - TrimTrailingZeros
    linkageType: ''
    returnType: void
    signature: void EncodeDateTime(struct tm *tm, fsec_t fsec, bool print_tz, int
      tz, const char *tzn, int style, char *str, bool EuroDates)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gmtime_r
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:959,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 952
    functionDepth: 1
    functionLinenumber: 952
    functionLinenumberEnd: 974
    functionName: GetEpochTime
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached:
    - gmtime_r
    linkageType: ''
    returnType: int
    signature: int GetEpochTime(struct tm *tm)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:985,1
    - Dst: gmtime_r
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:987,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1024,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1025,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1042,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1043,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 4
    argNames:
    - _time
    - tzp
    - tm
    - tzn
    argTypes:
    - AbsoluteTime
    - int*
    - struct tm*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 1061
    functionName: abstime2tm
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - localtime_r
    - strlcpy
    - strlen
    - gmtime_r
    linkageType: ''
    returnType: void
    signature: void abstime2tm(AbsoluteTime _time, int *tzp, struct tm *tm, char **tzn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: abstime2tm
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1068,1
    - Dst: time
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1063
    functionDepth: 2
    functionLinenumber: 1063
    functionLinenumberEnd: 1069
    functionName: GetCurrentDateTime
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached:
    - abstime2tm
    - time
    linkageType: ''
    returnType: void
    signature: void GetCurrentDateTime(struct tm *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - jd
    - hour
    - min
    - sec
    - fsec
    argTypes:
    - double
    - int*
    - int*
    - int*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1071
    functionDepth: 0
    functionLinenumber: 1071
    functionLinenumberEnd: 1083
    functionName: dt2time
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dt2time(double jd, int *hour, int *min, int *sec, fsec_t *fsec)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1103,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1121,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1123,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1133,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1135,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1137,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1145,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1147,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1149,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1158,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1161,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1175,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1177,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1179,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1188,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1190,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 60
    argCount: 7
    argNames:
    - len
    - str
    - fmask
    - tmask
    - tm
    - fsec
    - is2digits
    argTypes:
    - int
    - char*
    - int
    - int*
    - struct tm*
    - fsec_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1197
    functionName: DecodeNumberField
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strlen
    - strtoint
    - atoi
    - strchr
    linkageType: ''
    returnType: int
    signature: "int DecodeNumberField(int len, char *str, int fmask,\n\t\t\t\t  int
      *tmask, struct tm *tm, fsec_t *fsec, bool *is2digits)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1213,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1224,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1227,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1235,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1237,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1237,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1237,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1239,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1239,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1253,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1256,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1256,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1260,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1267,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1267,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1269,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1273,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1274,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1274,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1277,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1280,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1282,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1285,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1287,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1295,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1297,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 50
    argCount: 8
    argNames:
    - flen
    - str
    - fmask
    - tmask
    - tm
    - fsec
    - is2digits
    - EuroDates
    argTypes:
    - int
    - char*
    - int
    - int*
    - struct tm*
    - fsec_t*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1307
    functionName: DecodeNumber
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strtoint
    - DTK_M
    - date2j
    - strtod
    - DecodeNumberField
    - j2date
    linkageType: ''
    returnType: int
    signature: "int DecodeNumber(int flen, char *str, int fmask,\n\t\t\t int *tmask,
      struct tm *tm, fsec_t *fsec, bool *is2digits, bool EuroDates)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1333,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1337,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1339,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1342,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1344,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1365,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1367,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1371,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1402,1
    - Dst: DecodeNumber
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1405,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1415,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1415,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 69
    argCount: 5
    argNames:
    - str
    - fmask
    - tmask
    - tm
    - EuroDates
    argTypes:
    - char*
    - int
    - int*
    - struct tm*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1314
    functionDepth: 0
    functionLinenumber: 1314
    functionLinenumberEnd: 1435
    functionName: DecodeDate
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - DecodeSpecial
    - isalpha
    - isalnum
    - isdigit
    - DecodeNumber
    - DTK_M
    - strlen
    linkageType: ''
    returnType: int
    signature: int DecodeDate(char *str, int fmask, int *tmask, struct tm *tm, bool
      EuroDates)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1451,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1455,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1466,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1487,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 4
    argNames:
    - str
    - tmask
    - tm
    - fsec
    argTypes:
    - char*
    - int*
    - struct tm*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1444
    functionDepth: 1
    functionLinenumber: 1444
    functionLinenumberEnd: 1501
    functionName: DecodeTime
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strtoint
    linkageType: ''
    returnType: int
    signature: int DecodeTime(char *str, int *tmask, struct tm *tm, fsec_t *fsec)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1520,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1524,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1526,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1528,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1533,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - str
    - tzp
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1510
    functionDepth: 1
    functionLinenumber: 1510
    functionLinenumberEnd: 1546
    functionName: DecodeTimezone
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strlen
    - strtoint
    linkageType: ''
    returnType: int
    signature: int DecodeTimezone(char *str, int *tzp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1566,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1569,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1574,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - str
    - tzp
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1589
      start: 1556
    functionDepth: 0
    functionLinenumber: 1556
    functionLinenumberEnd: 1589
    functionName: DecodePosixTimezone
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - DecodeTimezone
    - DecodeSpecial
    - isalpha
    linkageType: ''
    returnType: int
    signature: int DecodePosixTimezone(char *str, int *tzp)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1627,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1630,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1638,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1650,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1653,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1664,1
    - Dst: isalnum
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1671,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1672,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1687,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1696,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1699,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1700,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1701,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1713,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1718,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1728,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1731,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1735,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1740,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1743,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1744,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1745,1
    - Dst: ispunct
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1752,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 86
    argCount: 6
    argNames:
    - timestr
    - lowstr
    - field
    - ftype
    - numfields
    - endstr
    argTypes:
    - char*
    - char*
    - char**
    - int*
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1610
    functionDepth: 2
    functionLinenumber: 1610
    functionLinenumberEnd: 1769
    functionName: ParseDateTime
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached:
    - isalpha
    - isalnum
    - isdigit
    - ispunct
    - isspace
    - pg_tolower
    linkageType: ''
    returnType: int
    signature: "int ParseDateTime(char *timestr, char *lowstr,\n\t\t\t  char **field,
      int *ftype, int *numfields, char **endstr)"
  - BBCount: 100
    BranchProfiles: []
    Callsites:
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1842,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1846,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1848,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1851,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1868,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1888,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1892,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1900,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1900,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1908,1
    - Dst: DecodePosixTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1912,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1916,1
    - Dst: DecodeDate
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1919,1
    - Dst: DecodeTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1924,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1944,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1951,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1953,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1961,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1977,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2001,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2010,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2011,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2014,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2019,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2025,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2030,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2035,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2040,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2045,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2053,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2054,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2063,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2069,1
    - Dst: dt2time
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2074,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2080,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2080,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2101,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2102,1
    - Dst: DecodeDate
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2107,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2111,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2118,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2124,1
    - Dst: DecodeNumber
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2129,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2137,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2141,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2148,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2150,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2156,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2157,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2157,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2167,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2176,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2177,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2177,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2185,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2206,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2207,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2210,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2222,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2235,1
    - Dst: isleap
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2345,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2353,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2353,1
    CyclomaticComplexity: 127
    EdgeCount: 127
    ICount: 315
    argCount: 7
    argNames:
    - field
    - ftype
    - nf
    - dtype
    - tm
    - fsec
    - EuroDates
    argTypes:
    - char**
    - int*
    - int
    - int*
    - struct tm*
    - fsec_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 1793
    functionDepth: 1
    functionLinenumber: 1793
    functionLinenumberEnd: 2358
    functionName: DecodeDateTime
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached:
    - DecodeTime
    - strchr
    - DecodeTimezone
    - GetCurrentDateTime
    - DecodePosixTimezone
    - j2date
    - isdigit
    - isleap
    - strtod
    - DecodeNumberField
    - dt2time
    - strtoint
    - DecodeNumber
    - DTK_M
    - strlen
    - DecodeDate
    - isalpha
    - DecodeSpecial
    - date2j
    linkageType: ''
    returnType: int
    signature: "int DecodeDateTime(char **field, int *ftype, int nf,\n\t\t\t   int
      *dtype, struct tm *tm, fsec_t *fsec, bool EuroDates)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2409,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2439,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2448,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2467,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 2
    argNames:
    - str
    - fmt
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2470
      start: 2367
    functionDepth: 0
    functionLinenumber: 2367
    functionLinenumberEnd: 2470
    functionName: find_end_token
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strlen
    - strstr
    - strchr
    linkageType: ''
    returnType: char
    signature: 'char *

      find_end_token(char *str, char *fmt)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: find_end_token
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2487,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2507,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2515,1
    - Dst: pgtypes_strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2520,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 4
    argNames:
    - scan_val
    - scan_type
    - pstr
    - pfmt
    argTypes:
    - union un_fmt_comb*
    - int
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2531
      start: 2472
    functionDepth: 1
    functionLinenumber: 2472
    functionLinenumberEnd: 2531
    functionName: pgtypes_defmt_scan
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strtol
    - pgtypes_strdup
    - find_end_token
    linkageType: ''
    returnType: int
    signature: int pgtypes_defmt_scan(union un_fmt_comb *scan_val, int scan_type,
      char **pstr, char *pfmt)
  - BBCount: 87
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2590,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2591,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2595,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2608,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2608,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2612,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2625,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2625,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2629,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2643,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2643,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2647,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2660,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2667,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2677,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2677,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2677,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2680,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2681,1
    - Dst: PGTYPEStimestamp_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2682,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2683,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2688,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2695,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2710,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2719,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2725,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2736,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2749,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2755,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2761,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2767,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2777,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2783,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2789,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2795,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2804,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2804,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2804,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2807,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2808,1
    - Dst: PGTYPEStimestamp_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2809,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2810,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2814,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2814,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2814,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2817,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2818,1
    - Dst: PGTYPEStimestamp_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2819,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2820,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2825,1
    - Dst: gmtime_r
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2832,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2850,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2862,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2862,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2862,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2865,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2866,1
    - Dst: PGTYPEStimestamp_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2867,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2868,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2873,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2880,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2887,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2894,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2901,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2912,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2918,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2921,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2922,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2928,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2939,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2947,1
    - Dst: isleap
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:3009,1
    - Dst: isleap
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:3011,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:3022,1
    CyclomaticComplexity: 96
    EdgeCount: 96
    ICount: 386
    argCount: 10
    argNames:
    - str
    - fmt
    - d
    - year
    - month
    - day
    - hour
    - minute
    - second
    - tz
    argTypes:
    - char**
    - char*
    - timestamp*
    - int*
    - int*
    - int*
    - int*
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3025
      start: 2534
    functionDepth: 2
    functionLinenumber: 2534
    functionLinenumberEnd: 3025
    functionName: PGTYPEStimestamp_defmt_scan
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 2
    functionsReached:
    - strcat
    - pg_strcasecmp
    - DecodeTimezone
    - pgtypes_defmt_scan
    - PGTYPEStimestamp_defmt_scan
    - tm2timestamp
    - strlen
    - strncmp
    - free
    - gmtime_r
    - pgtypes_alloc
    - isleap
    - strcpy
    linkageType: ''
    returnType: int
    signature: "int PGTYPEStimestamp_defmt_scan(char **str, char *fmt, timestamp *
      d,\n\t\t\t\t\t\t\tint *year, int *month, int *day,\n\t\t\t\t\t\t\tint *hour,
      int *minute, int *second,\n\t\t\t\t\t\t\tint *tz)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 14
    functionDepth: 2
    functionLinenumber: 14
    functionLinenumberEnd: 22
    functionName: PGTYPESdate_new
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 1
    functionsReached:
    - pgtypes_alloc
    linkageType: ''
    returnType: date
    signature: 'date *

      PGTYPESdate_new(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - date*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: PGTYPESdate_free
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void PGTYPESdate_free(date * d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - dt
    argTypes:
    - timestamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 44
    functionName: PGTYPESdate_from_timestamp
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 3
    functionsReached:
    - TIMESTAMP_NOT_FINITE
    linkageType: ''
    returnType: date
    signature: date PGTYPESdate_from_timestamp(timestamp dt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:64,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:70,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:71,1
    - Dst: GetEpochTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:83,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:95,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:95,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - str
    - endptr
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 98
    functionName: PGTYPESdate_from_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 4
    functionsReached:
    - ParseDateTime
    - date2j
    - strlen
    - DecodeDateTime
    - GetEpochTime
    linkageType: ''
    returnType: date
    signature: date PGTYPESdate_from_asc(char *str, char **endptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:109,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:109,1
    - Dst: EncodeDateOnly
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:110,1
    - Dst: pgtypes_strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - dDate
    argTypes:
    - date
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 112
    functionName: PGTYPESdate_to_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 5
    functionsReached:
    - date2j
    - pgtypes_strdup
    - j2date
    - EncodeDateOnly
    linkageType: ''
    returnType: char
    signature: 'char *

      PGTYPESdate_to_asc(date dDate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:121,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - jd
    - mdy
    argTypes:
    - date
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 125
    functionName: PGTYPESdate_julmdy
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 2
    functionsReached:
    - date2j
    - j2date
    linkageType: ''
    returnType: void
    signature: void PGTYPESdate_julmdy(date jd, int *mdy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:134,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mdy
    - jdate
    argTypes:
    - int*
    - date*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 135
    functionName: PGTYPESdate_mdyjul
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 2
    functionsReached:
    - date2j
    linkageType: ''
    returnType: void
    signature: void PGTYPESdate_mdyjul(int *mdy, date * jdate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dDate
    argTypes:
    - date
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 145
    functionName: PGTYPESdate_dayofweek
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 3
    functionsReached:
    - date2j
    linkageType: ''
    returnType: int
    signature: int PGTYPESdate_dayofweek(date dDate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:152,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:154,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - d
    argTypes:
    - date*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 155
    functionName: PGTYPESdate_today
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 1
    functionsReached:
    - GetCurrentDateTime
    - date2j
    linkageType: ''
    returnType: void
    signature: void PGTYPESdate_today(date * d)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:212,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:215,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:215,1
    - Dst: PGTYPESdate_dayofweek
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:216,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:220,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:260,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:261,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:263,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:267,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:271,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:273,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:273,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:274,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:279,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:283,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:285,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:285,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:286,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:291,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:295,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:297,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:297,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:298,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 72
    argCount: 3
    argNames:
    - dDate
    - fmtstring
    - outbuf
    argTypes:
    - date
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 312
    functionName: PGTYPESdate_fmt_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 2
    functionsReached:
    - memcpy
    - PGTYPESdate_dayofweek
    - strstr
    - date2j
    - strlen
    - free
    - pgtypes_alloc
    - strcpy
    - j2date
    - snprintf
    linkageType: ''
    returnType: int
    signature: int PGTYPESdate_fmt_asc(date dDate, const char *fmtstring, char *outbuf)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:357,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:358,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:359,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:421,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:432,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:444,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:444,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:492,1
    - Dst: pgtypes_strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:505,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:511,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:517,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:519,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:526,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:551,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:562,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:572,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:580,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:587,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:612,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:639,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:640,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:661,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:672,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:684,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:710,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c:710,1
    CyclomaticComplexity: 65
    EdgeCount: 65
    ICount: 197
    argCount: 3
    argNames:
    - d
    - fmt
    - str
    argTypes:
    - date*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 713
    functionName: PGTYPESdate_defmt_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/datetime.c
    functionUses: 2
    functionsReached:
    - isdigit
    - strncpy
    - pgtypes_strdup
    - strtol
    - strstr
    - pg_tolower
    - date2j
    - strlen
    - free
    - pgtypes_alloc
    linkageType: ''
    returnType: int
    signature: int PGTYPESdate_defmt_asc(date * d, const char *fmt, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - frac
    - tm
    - fsec
    - scale
    argTypes:
    - double
    - struct /* pg_ */ tm*
    - fsec_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 31
    functionName: AdjustFractSeconds
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - rint
    linkageType: ''
    returnType: void
    signature: void AdjustFractSeconds(double frac, struct /* pg_ */ tm *tm, fsec_t
      *fsec, int scale)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - frac
    - tm
    - fsec
    - scale
    argTypes:
    - double
    - struct /* pg_ */ tm*
    - fsec_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 50
    functionName: AdjustFractDays
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - AdjustFractSeconds
    linkageType: ''
    returnType: void
    signature: void AdjustFractDays(double frac, struct /* pg_ */ tm *tm, fsec_t *fsec,
      int scale)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:58,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:61,1
    - Dst: floor
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:70,1
    - Dst: floor
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:72,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 4
    argNames:
    - str
    - endptr
    - ipart
    - fpart
    argTypes:
    - char*
    - char**
    - int*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 75
    functionName: ParseISO8601Number
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - floor
    - strtod
    - isdigit
    linkageType: ''
    returnType: int
    signature: int ParseISO8601Number(const char *str, char **endptr, int *ipart,
      double *fpart)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fieldstart
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: ISO8601IntegerWidth
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - strspn
    linkageType: ''
    returnType: int
    signature: int ISO8601IntegerWidth(const char *fieldstart)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - tm
    - fsec
    argTypes:
    - struct /* pg_ */ tm*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 102
    functionName: ClearPgTm
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ClearPgTm(struct /* pg_ */ tm *tm, fsec_t *fsec)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: ClearPgTm
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:119,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:121,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:142,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:158,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:162,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:166,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:170,1
    - Dst: ISO8601IntegerWidth
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:174,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:179,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:194,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:204,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:208,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:221,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:225,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:246,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:250,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:254,1
    - Dst: ISO8601IntegerWidth
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:257,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:262,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:273,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:277,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:281,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:288,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:292,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 148
    argCount: 4
    argNames:
    - str
    - dtype
    - tm
    - fsec
    argTypes:
    - char*
    - int*
    - struct /* pg_ */ tm*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 307
    functionName: DecodeISO8601Interval
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - ISO8601IntegerWidth
    - ParseISO8601Number
    - ClearPgTm
    - AdjustFractDays
    - strlen
    - rint
    - AdjustFractSeconds
    linkageType: ''
    returnType: int
    signature: "int DecodeISO8601Interval(char *str,\n\t\t\t\t\t  int *dtype, struct
      /* pg_ */ tm *tm, fsec_t *fsec)"
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: ClearPgTm
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:344,1
    - Dst: DecodeTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:352,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:366,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:373,1
    - Dst: DecodeTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:374,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:392,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:404,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:407,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:408,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:408,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:411,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:414,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:415,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:415,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:416,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:416,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:416,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:417,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:417,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:417,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:417,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:420,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:421,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:421,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:424,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:425,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:425,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:425,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:426,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:426,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:436,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:445,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:459,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:476,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:477,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:481,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:482,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:487,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:494,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:501,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:502,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:507,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:508,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:514,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:515,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:515,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:520,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:521,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:521,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:526,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:527,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:532,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:533,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:533,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:538,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:539,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:539,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:544,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:545,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:545,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:550,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:551,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:551,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:561,1
    CyclomaticComplexity: 70
    EdgeCount: 70
    ICount: 224
    argCount: 6
    argNames:
    - field
    - ftype
    - nf
    - dtype
    - tm
    - fsec
    argTypes:
    - char**
    - int*
    - int
    - int*
    - struct /* pg_ */ tm*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 676
    functionName: DecodeInterval
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - DecodeTime
    - strtoint
    - strchr
    - Assert
    - DTK_M
    - INTERVAL_MASK
    - ClearPgTm
    - AdjustFractDays
    - rint
    - AdjustFractSeconds
    - strtod
    - DecodeUnits
    linkageType: ''
    returnType: int
    signature: "int DecodeInterval(char **field, int *ftype, int nf,\t/* int range,
      */\n\t\t\t   int *dtype, struct /* pg_ */ tm *tm, fsec_t *fsec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:690,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:694,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:696,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - cp
    - value
    - units
    - is_zero
    - is_before
    argTypes:
    - char*
    - int
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 697
    functionName: AddVerboseIntPart
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - strlen
    - abs
    - sprintf
    linkageType: ''
    returnType: char
    signature: "char *\nAddVerboseIntPart(char *cp, int value, const char *units,\n\t\t\t\t
      \ bool *is_zero, bool *is_before)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:706,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:719,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - cp
    - value
    - units
    - is_zero
    - is_before
    argTypes:
    - char*
    - int
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 700
    functionDepth: 0
    functionLinenumber: 700
    functionLinenumberEnd: 720
    functionName: AddPostgresIntPart
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - strlen
    - sprintf
    linkageType: ''
    returnType: char
    signature: "char *\nAddPostgresIntPart(char *cp, int value, const char *units,\n\t\t\t\t
      \  bool *is_zero, bool *is_before)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:728,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cp
    - value
    - units
    argTypes:
    - char*
    - int
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 723
    functionDepth: 0
    functionLinenumber: 723
    functionLinenumberEnd: 730
    functionName: AddISO8601IntPart
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - strlen
    - sprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      AddISO8601IntPart(char *cp, int value, char units)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:739,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:739,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:741,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:741,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:746,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:746,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:746,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:748,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:748,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:748,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:749,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - cp
    - sec
    - fsec
    - precision
    - fillzeros
    argTypes:
    - char*
    - int
    - fsec_t
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 751
    functionName: AppendSeconds
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - TrimTrailingZeros
    - abs
    - sprintf
    linkageType: ''
    returnType: void
    signature: void AppendSeconds(char *cp, int sec, fsec_t fsec, int precision, bool
      fillzeros)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:815,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:829,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:830,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:830,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:831,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:832,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:832,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:833,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:834,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:838,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:842,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:843,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:844,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:848,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:849,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:850,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:861,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:865,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:866,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:867,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:870,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:871,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:876,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:877,1
    - Dst: AddPostgresIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:885,1
    - Dst: AddPostgresIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:886,1
    - Dst: AddPostgresIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:887,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:892,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:895,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:895,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:896,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:897,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:904,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:906,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:907,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:908,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:909,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:910,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:923,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:924,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:926,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:927,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:932,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:934,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 97
    argCount: 4
    argNames:
    - tm
    - fsec
    - style
    - str
    argTypes:
    - struct /* pg_ */ tm*
    - fsec_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 937
    functionName: EncodeInterval
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - AddISO8601IntPart
    - AppendSeconds
    - strcat
    - abs
    - AddPostgresIntPart
    - strlen
    - AddVerboseIntPart
    - sprintf
    - strcpy
    linkageType: ''
    returnType: void
    signature: void EncodeInterval(struct /* pg_ */ tm *tm, fsec_t fsec, int style,
      char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - span
    - tm
    - fsec
    argTypes:
    - interval
    - struct tm*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 944
    functionDepth: 0
    functionLinenumber: 944
    functionLinenumberEnd: 972
    functionName: interval2tm
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int interval2tm(interval span, struct tm *tm, fsec_t *fsec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:981,1
    - Dst: INT64CONST
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:982,1
    - Dst: INT64CONST
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:983,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - tm
    - fsec
    - span
    argTypes:
    - struct tm*
    - fsec_t
    - interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 974
    functionDepth: 1
    functionLinenumber: 974
    functionLinenumberEnd: 987
    functionName: tm2interval
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - INT64CONST
    linkageType: ''
    returnType: int
    signature: int tm2interval(struct tm *tm, fsec_t fsec, interval * span)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 989
    functionDepth: 2
    functionLinenumber: 989
    functionLinenumberEnd: 997
    functionName: PGTYPESinterval_new
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 2
    functionsReached:
    - pgtypes_alloc
    linkageType: ''
    returnType: interval
    signature: 'interval *

      PGTYPESinterval_new(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - intvl
    argTypes:
    - interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1003
    functionName: PGTYPESinterval_free
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void PGTYPESinterval_free(interval * intvl)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1028,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1034,1
    - Dst: DecodeInterval
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1035,1
    - Dst: DecodeISO8601Interval
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1036,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1042,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1049,1
    - Dst: tm2interval
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1053,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1056,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - str
    - endptr
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1005
    functionDepth: 2
    functionLinenumber: 1005
    functionLinenumberEnd: 1062
    functionName: PGTYPESinterval_from_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 5
    functionsReached:
    - tm2interval
    - ParseDateTime
    - DecodeISO8601Interval
    - strlen
    - DecodeInterval
    - free
    - pgtypes_alloc
    linkageType: ''
    returnType: interval
    signature: 'interval *

      PGTYPESinterval_from_asc(char *str, char **endptr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: interval2tm
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1073,1
    - Dst: EncodeInterval
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1079,1
    - Dst: pgtypes_strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - span
    argTypes:
    - interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1082
    functionName: PGTYPESinterval_to_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 5
    functionsReached:
    - interval2tm
    - pgtypes_strdup
    - EncodeInterval
    linkageType: ''
    returnType: char
    signature: 'char *

      PGTYPESinterval_to_asc(interval * span)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - intvlsrc
    - intvldest
    argTypes:
    - interval*
    - interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1084
    functionDepth: 0
    functionLinenumber: 1084
    functionLinenumberEnd: 1091
    functionName: PGTYPESinterval_copy
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int PGTYPESinterval_copy(interval * intvlsrc, interval * intvldest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: INTERVAL_MASK
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_MASK(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    functionName: DTK_M
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DTK_M(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - t
    - ','
    - q
    - ','
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 223
    functionName: FMODULO
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FMODULO(t,q,u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - t
    - ','
    - q
    - ','
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 235
    functionName: TMODULO
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TMODULO(t,q,u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 270
    functionName: isleap
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isleap(y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - y
    - ','
    - m
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 287
    functionName: IS_VALID_JULIAN
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VALID_JULIAN(y,m,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 292
    functionName: IS_VALID_TIMESTAMP
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VALID_TIMESTAMP(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - y
    - ','
    - m
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 306
    functionName: IS_VALID_UTIME
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VALID_UTIME(y,m,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 311
    functionName: TIMESTAMP_NOBEGIN
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_NOBEGIN(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 312
    functionName: TIMESTAMP_NOEND
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_NOEND(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 313
    functionName: TIMESTAMP_IS_NOBEGIN
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_IS_NOBEGIN(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 314
    functionName: TIMESTAMP_IS_NOEND
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_IS_NOEND(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 315
    functionName: TIMESTAMP_NOT_FINITE
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_NOT_FINITE(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: shell_archive_init
    functionSourceFile: /src/postgres/src/backend/archive/shell_archive.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ArchiveModuleCallbacks
    signature: 'ArchiveModuleCallbacks *

      shell_archive_init(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arch_module_check_errdetail
      Src: /src/postgres/src/backend/archive/shell_archive.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - ArchiveModuleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: shell_archive_configured
    functionSourceFile: /src/postgres/src/backend/archive/shell_archive.c
    functionUses: 0
    functionsReached:
    - arch_module_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool shell_archive_configured(ArchiveModuleState *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/archive/shell_archive.c:67,1
    - Dst: make_native_path
      Src: /src/postgres/src/backend/archive/shell_archive.c:68,1
    - Dst: replace_percent_placeholders
      Src: /src/postgres/src/backend/archive/shell_archive.c:71,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:75,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/archive/shell_archive.c:76,1
    - Dst: fflush
      Src: /src/postgres/src/backend/archive/shell_archive.c:79,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/archive/shell_archive.c:80,1
    - Dst: system
      Src: /src/postgres/src/backend/archive/shell_archive.c:81,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/archive/shell_archive.c:82,1
    - Dst: wait_result_is_any_signal
      Src: /src/postgres/src/backend/archive/shell_archive.c:94,1
    - Dst: WIFEXITED
      Src: /src/postgres/src/backend/archive/shell_archive.c:96,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:98,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/archive/shell_archive.c:99,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/backend/archive/shell_archive.c:100,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/archive/shell_archive.c:101,1
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/backend/archive/shell_archive.c:104,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:107,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/archive/shell_archive.c:108,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/backend/archive/shell_archive.c:109,1
    - Dst: errhint
      Src: /src/postgres/src/backend/archive/shell_archive.c:110,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/archive/shell_archive.c:111,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/archive/shell_archive.c:115,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/backend/archive/shell_archive.c:116,1
    - Dst: pg_strsignal
      Src: /src/postgres/src/backend/archive/shell_archive.c:116,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/backend/archive/shell_archive.c:116,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/archive/shell_archive.c:117,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:123,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/archive/shell_archive.c:124,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/archive/shell_archive.c:126,1
    - Dst: pfree
      Src: /src/postgres/src/backend/archive/shell_archive.c:129,1
    - Dst: pfree
      Src: /src/postgres/src/backend/archive/shell_archive.c:133,1
    - Dst: elog
      Src: /src/postgres/src/backend/archive/shell_archive.c:135,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - state
    - file
    - path
    argTypes:
    - ArchiveModuleState*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 137
    functionName: shell_archive_file
    functionSourceFile: /src/postgres/src/backend/archive/shell_archive.c
    functionUses: 0
    functionsReached:
    - wait_result_is_any_signal
    - pstrdup
    - errhint
    - WIFEXITED
    - elog
    - pfree
    - pgstat_report_wait_end
    - fflush
    - errmsg
    - errmsg_internal
    - ereport
    - pgstat_report_wait_start
    - WIFSIGNALED
    - pg_strsignal
    - replace_percent_placeholders
    - WTERMSIG
    - make_native_path
    - WEXITSTATUS
    - errdetail
    - system
    linkageType: ''
    returnType: bool
    signature: "bool shell_archive_file(ArchiveModuleState *state, const char *file,\n\t\t\t\t
      \  const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/archive/shell_archive.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - ArchiveModuleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 143
    functionName: shell_archive_shutdown
    functionSourceFile: /src/postgres/src/backend/archive/shell_archive.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void shell_archive_shutdown(ArchiveModuleState *state)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amvalidate.c:54,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amvalidate.c:65,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amvalidate.c:72,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amvalidate.c:92,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amvalidate.c:112,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/index/amvalidate.c:121,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/index/amvalidate.c:137,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 48
    argCount: 2
    argNames:
    - oprlist
    - proclist
    argTypes:
    - CatCList*
    - CatCList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 141
    functionName: identify_opfamily_groups
    functionSourceFile: /src/postgres/src/backend/access/index/amvalidate.c
    functionUses: 0
    functionsReached:
    - elog
    - lappend
    - GETSTRUCT
    - palloc_object
    linkageType: ''
    returnType: List
    signature: 'List *

      identify_opfamily_groups(CatCList *oprlist, CatCList *proclist)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/index/amvalidate.c:161,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/index/amvalidate.c:161,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/index/amvalidate.c:162,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amvalidate.c:163,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amvalidate.c:164,1
    - Dst: va_start
      Src: /src/postgres/src/backend/access/index/amvalidate.c:170,1
    - Dst: va_arg
      Src: /src/postgres/src/backend/access/index/amvalidate.c:173,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/access/index/amvalidate.c:178,1
    - Dst: va_end
      Src: /src/postgres/src/backend/access/index/amvalidate.c:181,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amvalidate.c:183,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 5
    argNames:
    - funcid
    - restype
    - exact
    - minargs
    - maxargs
    argTypes:
    - Oid
    - Oid
    - bool
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 185
    functionName: check_amproc_signature
    functionSourceFile: /src/postgres/src/backend/access/index/amvalidate.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - va_end
    - HeapTupleIsValid
    - va_start
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    - IsBinaryCoercible
    - va_arg
    linkageType: ''
    returnType: bool
    signature: "bool check_amproc_signature(Oid funcid, Oid restype, bool exact,\n\t\t\t\t\t
      \  int minargs, int maxargs, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/index/amvalidate.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - funcid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 195
    functionName: check_amoptsproc_signature
    functionSourceFile: /src/postgres/src/backend/access/index/amvalidate.c
    functionUses: 0
    functionsReached:
    - check_amproc_signature
    linkageType: ''
    returnType: bool
    signature: bool check_amoptsproc_signature(Oid funcid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/index/amvalidate.c:212,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/index/amvalidate.c:212,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/index/amvalidate.c:213,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amvalidate.c:214,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amvalidate.c:215,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amvalidate.c:221,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - opno
    - restype
    - lefttype
    - righttype
    argTypes:
    - Oid
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 223
    functionName: check_amop_signature
    functionSourceFile: /src/postgres/src/backend/access/index/amvalidate.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool check_amop_signature(Oid opno, Oid restype, Oid lefttype, Oid
      righttype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/index/amvalidate.c:247,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/index/amvalidate.c:247,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amvalidate.c:252,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/index/amvalidate.c:262,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - amoid
    - opfamilyoid
    - datatypeoid
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 265
    functionName: opclass_for_family_datatype
    functionSourceFile: /src/postgres/src/backend/access/index/amvalidate.c
    functionUses: 0
    functionsReached:
    - SearchSysCacheList1
    - ObjectIdGetDatum
    - ReleaseCatCacheList
    - GETSTRUCT
    linkageType: ''
    returnType: Oid
    signature: Oid opclass_for_family_datatype(Oid amoid, Oid opfamilyoid, Oid datatypeoid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/index/amvalidate.c:273,1
    - Dst: opclass_for_family_datatype
      Src: /src/postgres/src/backend/access/index/amvalidate.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - opfamilyoid
    - datatypeoid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 276
    functionName: opfamily_can_sort_type
    functionSourceFile: /src/postgres/src/backend/access/index/amvalidate.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - opclass_for_family_datatype
    linkageType: ''
    returnType: bool
    signature: bool opfamily_can_sort_type(Oid opfamilyoid, Oid datatypeoid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/index/genam.c:84,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/index/genam.c:97,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/index/genam.c:101,1
    - Dst: TransactionStartedDuringRecovery
      Src: /src/postgres/src/backend/access/index/genam.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 3
    argNames:
    - indexRelation
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 130
    functionName: RelationGetIndexScan
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 1
    functionsReached:
    - TransactionStartedDuringRecovery
    - palloc_array
    - palloc_object
    linkageType: ''
    returnType: IndexScanDesc
    signature: IndexScanDesc RelationGetIndexScan(Relation indexRelation, int nkeys,
      int norderbys)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:148,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:150,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 153
    functionName: IndexScanEnd
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void IndexScanEnd(IndexScanDesc scan)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/index/genam.c:186,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/index/genam.c:190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:204,1
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/access/index/genam.c:207,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/access/index/genam.c:211,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/index/genam.c:211,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/access/index/genam.c:229,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/index/genam.c:229,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/index/genam.c:238,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/index/genam.c:239,1
    - Dst: pg_get_indexdef_columns
      Src: /src/postgres/src/backend/access/index/genam.c:240,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/index/genam.c:263,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/access/index/genam.c:265,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/index/genam.c:269,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/index/genam.c:270,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/index/genam.c:273,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - indexRelation
    - values
    - isnull
    argTypes:
    - Relation
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 276
    functionName: BuildIndexValueDescription
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - GetUserId
    - pg_attribute_aclcheck
    - Assert
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - pg_class_aclcheck
    - pg_get_indexdef_columns
    - getTypeOutputInfo
    - OidOutputFunctionCall
    - IndexRelationGetNumberOfKeyAttributes
    - check_enable_rls
    - RelationGetRelid
    linkageType: ''
    returnType: char
    signature: "char *\nBuildIndexValueDescription(Relation indexRelation,\n\t\t\t\t\t\t
      \  const Datum *values, const bool *isnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/index/genam.c:303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:306,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/index/genam.c:309,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/index/genam.c:313,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/index/genam.c:314,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/index/genam.c:322,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/index/genam.c:323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:325,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/index/genam.c:325,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/index/genam.c:327,1
    - Dst: table_index_delete_tuples
      Src: /src/postgres/src/backend/access/index/genam.c:338,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:341,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:343,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 5
    argNames:
    - irel
    - hrel
    - ibuf
    - itemnos
    - nitems
    argTypes:
    - Relation
    - Relation
    - Buffer
    - OffsetNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 294
    functionDepth: 4
    functionLinenumber: 294
    functionLinenumberEnd: 347
    functionName: index_compute_xid_horizon_for_tuples
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - table_index_delete_tuples
    - ItemPointerCopy
    - Assert
    - pfree
    - BufferGetBlockNumber
    - ItemIdIsDead
    - palloc_array
    - PageGetItemId
    - BufferGetPage
    - PageGetItem
    linkageType: ''
    returnType: TransactionId
    signature: "TransactionId index_compute_xid_horizon_for_tuples(Relation irel,\n\t\t\t\t\t\t\t\t\t
      Relation hrel,\n\t\t\t\t\t\t\t\t\t Buffer ibuf,\n\t\t\t\t\t\t\t\t\t OffsetNumber
      *itemnos,\n\t\t\t\t\t\t\t\t\t int nitems)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ReindexIsProcessingIndex
      Src: /src/postgres/src/backend/access/index/genam.c:399,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/index/genam.c:400,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/index/genam.c:404,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/access/index/genam.c:408,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/index/genam.c:412,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:414,1
    - Dst: GetCatalogSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:414,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:428,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/index/genam.c:436,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/index/genam.c:443,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/index/genam.c:445,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/index/genam.c:453,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:454,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/access/index/genam.c:457,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/access/index/genam.c:460,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:463,1
    - Dst: table_beginscan_strat
      Src: /src/postgres/src/backend/access/index/genam.c:474,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 6
    argNames:
    - heapRelation
    - indexId
    - indexOK
    - snapshot
    - nkeys
    - key
    argTypes:
    - Relation
    - Oid
    - bool
    - Snapshot
    - int
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 481
    functionName: systable_beginscan
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - ReindexIsProcessingIndex
    - elog
    - memcpy
    - index_rescan
    - pfree
    - GetCatalogSnapshot
    - table_slot_create
    - index_open
    - palloc_array
    - IndexRelationGetNumberOfAttributes
    - table_beginscan_strat
    - TransactionIdIsValid
    - RegisterSnapshot
    - palloc_object
    - RelationGetRelid
    - index_beginscan
    linkageType: ''
    returnType: SysScanDesc
    signature: "SysScanDesc systable_beginscan(Relation heapRelation,\n\t\t\t\t   Oid
      indexId,\n\t\t\t\t   bool indexOK,\n\t\t\t\t   Snapshot snapshot,\n\t\t\t\t
      \  int nkeys, ScanKey key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:494,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/index/genam.c:495,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/index/genam.c:496,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/genam.c:497,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/genam.c:498,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/genam.c:499,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 500
    functionName: HandleConcurrentAbort
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsInProgress
    - errcode
    - TransactionIdDidCommit
    - ereport
    - errmsg
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void HandleConcurrentAbort(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/access/index/genam.c:521,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/index/genam.c:525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:526,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:537,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/access/index/genam.c:542,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/index/genam.c:546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:547,1
    - Dst: HandleConcurrentAbort
      Src: /src/postgres/src/backend/access/index/genam.c:555,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - sysscan
    argTypes:
    - SysScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 514
    functionDepth: 2
    functionLinenumber: 514
    functionLinenumberEnd: 558
    functionName: systable_getnext
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - elog
    - HandleConcurrentAbort
    - Assert
    - table_scan_getnextslot
    - index_getnext_slot
    - ExecFetchSlotHeapTuple
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple systable_getnext(SysScanDesc sysscan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:579,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/index/genam.c:579,1
    - Dst: GetCatalogSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:581,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/index/genam.c:581,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:582,1
    - Dst: table_tuple_satisfies_snapshot
      Src: /src/postgres/src/backend/access/index/genam.c:584,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:587,1
    - Dst: HandleConcurrentAbort
      Src: /src/postgres/src/backend/access/index/genam.c:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - sysscan
    - tup
    argTypes:
    - SysScanDesc
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 596
    functionName: systable_recheck_tuple
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - HandleConcurrentAbort
    - Assert
    - GetCatalogSnapshot
    - table_tuple_satisfies_snapshot
    - RegisterSnapshot
    - ExecFetchSlotHeapTuple
    - RelationGetRelid
    - UnregisterSnapshot
    linkageType: ''
    returnType: bool
    signature: bool systable_recheck_tuple(SysScanDesc sysscan, HeapTuple tup)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/index/genam.c:608,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:614,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/index/genam.c:615,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:618,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:621,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:627,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:630,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - sysscan
    argTypes:
    - SysScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 631
    functionName: systable_endscan
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - ExecDropSingleTupleTableSlot
    - pfree
    - index_endscan
    - index_close
    - table_endscan
    - TransactionIdIsValid
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void systable_endscan(SysScanDesc sysscan)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ReindexIsProcessingIndex
      Src: /src/postgres/src/backend/access/index/genam.c:661,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/index/genam.c:661,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/genam.c:662,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/genam.c:663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/genam.c:664,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/index/genam.c:665,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:668,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/index/genam.c:669,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/index/genam.c:671,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/access/index/genam.c:675,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/index/genam.c:679,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:681,1
    - Dst: GetCatalogSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:681,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/index/genam.c:690,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/index/genam.c:697,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/index/genam.c:699,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/index/genam.c:707,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:708,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:716,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/access/index/genam.c:719,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/access/index/genam.c:722,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:725,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 5
    argNames:
    - heapRelation
    - indexRelation
    - snapshot
    - nkeys
    - key
    argTypes:
    - Relation
    - Relation
    - Snapshot
    - int
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 728
    functionName: systable_beginscan_ordered
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - ReindexIsProcessingIndex
    - elog
    - memcpy
    - errcode
    - index_rescan
    - pfree
    - GetCatalogSnapshot
    - ereport
    - table_slot_create
    - palloc_array
    - IndexRelationGetNumberOfAttributes
    - TransactionIdIsValid
    - RegisterSnapshot
    - errmsg
    - RelationGetRelationName
    - palloc_object
    - RelationGetRelid
    - index_beginscan
    linkageType: ''
    returnType: SysScanDesc
    signature: "SysScanDesc systable_beginscan_ordered(Relation heapRelation,\n\t\t\t\t\t\t
      \  Relation indexRelation,\n\t\t\t\t\t\t   Snapshot snapshot,\n\t\t\t\t\t\t
      \  int nkeys, ScanKey key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:738,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/access/index/genam.c:739,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/index/genam.c:740,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:744,1
    - Dst: HandleConcurrentAbort
      Src: /src/postgres/src/backend/access/index/genam.c:750,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - sysscan
    - direction
    argTypes:
    - SysScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 733
    functionDepth: 2
    functionLinenumber: 733
    functionLinenumberEnd: 753
    functionName: systable_getnext_ordered
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - elog
    - HandleConcurrentAbort
    - Assert
    - index_getnext_slot
    - ExecFetchSlotHeapTuple
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple systable_getnext_ordered(SysScanDesc sysscan, ScanDirection
      direction)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/index/genam.c:763,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:767,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:768,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:770,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:776,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:779,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - sysscan
    argTypes:
    - SysScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 780
    functionName: systable_endscan_ordered
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - ExecDropSingleTupleTableSlot
    - Assert
    - pfree
    - index_endscan
    - TransactionIdIsValid
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void systable_endscan_ordered(SysScanDesc sysscan)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/index/genam.c:829,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/genam.c:830,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/genam.c:831,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/genam.c:832,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:840,1
    - Dst: IsInplaceUpdateRelation
      Src: /src/postgres/src/backend/access/index/genam.c:840,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/access/index/genam.c:840,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/index/genam.c:847,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:855,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/index/genam.c:857,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/access/index/genam.c:858,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/access/index/genam.c:859,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/access/index/genam.c:860,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:861,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:869,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/index/genam.c:869,1
    - Dst: heap_inplace_lock
      Src: /src/postgres/src/backend/access/index/genam.c:871,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/access/index/genam.c:875,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 8
    argNames:
    - relation
    - indexId
    - indexOK
    - snapshot
    - nkeys
    - key
    - oldtupcopy
    - state
    argTypes:
    - Relation
    - Oid
    - bool
    - Snapshot
    - int
    - ScanKeyData*
    - HeapTuple*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 809
    functionDepth: 4
    functionLinenumber: 809
    functionLinenumberEnd: 877
    functionName: systable_inplace_update_begin
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - elog
    - INJECTION_POINT
    - systable_endscan
    - IsSystemRelation
    - IsInplaceUpdateRelation
    - errcode
    - Assert
    - systable_beginscan
    - HeapTupleIsValid
    - TTS_IS_BUFFERTUPLE
    - ereport
    - unconstify
    - CHECK_FOR_INTERRUPTS
    - heap_copytuple
    - errmsg
    - IsInParallelMode
    - systable_getnext
    - heap_inplace_lock
    linkageType: ''
    returnType: void
    signature: "void systable_inplace_update_begin(Relation relation,\n\t\t\t\t\t\t\t
      \ Oid indexId,\n\t\t\t\t\t\t\t  bool indexOK,\n\t\t\t\t\t\t\t  Snapshot snapshot,\n\t\t\t\t\t\t\t
      \ int nkeys, const ScanKeyData *key,\n\t\t\t\t\t\t\t  HeapTuple *oldtupcopy,\n\t\t\t\t\t\t\t
      \ void **state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heap_inplace_update_and_unlock
      Src: /src/postgres/src/backend/access/index/genam.c:895,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - void*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 897
    functionName: systable_inplace_update_finish
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - systable_endscan
    - heap_inplace_update_and_unlock
    linkageType: ''
    returnType: void
    signature: void systable_inplace_update_finish(void *state, HeapTuple tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heap_inplace_unlock
      Src: /src/postgres/src/backend/access/index/genam.c:914,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 904
    functionDepth: 2
    functionLinenumber: 904
    functionLinenumberEnd: 916
    functionName: systable_inplace_update_cancel
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - heap_inplace_unlock
    - systable_endscan
    linkageType: ''
    returnType: void
    signature: void systable_inplace_update_cancel(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidFunctionCall0
      Src: /src/postgres/src/backend/access/index/amapi.c:38,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/index/amapi.c:39,1
    - Dst: IsA
      Src: /src/postgres/src/backend/access/index/amapi.c:41,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:42,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:46,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:47,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:48,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:49,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:50,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:51,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:52,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:53,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:54,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:55,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/amapi.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - amhandler
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 59
    functionName: GetIndexAmRoutine
    functionSourceFile: /src/postgres/src/backend/access/index/amapi.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - OidFunctionCall0
    - IsA
    - DatumGetPointer
    linkageType: ''
    returnType: IndexAmRoutine
    signature: 'IndexAmRoutine *

      GetIndexAmRoutine(Oid amhandler)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/index/amapi.c:76,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/index/amapi.c:76,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/index/amapi.c:77,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:81,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amapi.c:84,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amapi.c:91,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/amapi.c:94,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/amapi.c:95,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/amapi.c:96,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/index/amapi.c:97,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/index/amapi.c:103,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amapi.c:107,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/amapi.c:110,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/amapi.c:111,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/amapi.c:112,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/index/amapi.c:113,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amapi.c:116,1
    - Dst: GetIndexAmRoutine
      Src: /src/postgres/src/backend/access/index/amapi.c:119,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - amoid
    - noerror
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 120
    functionName: GetIndexAmRoutineByAmId
    functionSourceFile: /src/postgres/src/backend/access/index/amapi.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - RegProcedureIsValid
    - errcode
    - HeapTupleIsValid
    - ereport
    - ReleaseSysCache
    - GetIndexAmRoutine
    - GETSTRUCT
    - errmsg
    - NameStr
    - ObjectIdGetDatum
    linkageType: ''
    returnType: IndexAmRoutine
    signature: 'IndexAmRoutine *

      GetIndexAmRoutineByAmId(Oid amoid, bool noerror)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/access/index/amapi.c:141,1
    - Dst: IndexAmRoutine*::amtranslatestrategy
      Src: /src/postgres/src/backend/access/index/amapi.c:143,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 4
    argNames:
    - strategy
    - amoid
    - opfamily
    - missing_ok
    argTypes:
    - StrategyNumber
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 151
    functionName: IndexAmTranslateStrategy
    functionSourceFile: /src/postgres/src/backend/access/index/amapi.c
    functionUses: 0
    functionsReached:
    - GetIndexAmRoutineByAmId
    - IndexAmRoutine*::amtranslatestrategy
    - elog
    linkageType: ''
    returnType: CompareType
    signature: CompareType IndexAmTranslateStrategy(StrategyNumber strategy, Oid amoid,
      Oid opfamily, bool missing_ok)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/access/index/amapi.c:171,1
    - Dst: IndexAmRoutine*::amtranslatecmptype
      Src: /src/postgres/src/backend/access/index/amapi.c:173,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:178,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 4
    argNames:
    - cmptype
    - amoid
    - opfamily
    - missing_ok
    argTypes:
    - CompareType
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 181
    functionName: IndexAmTranslateCompareType
    functionSourceFile: /src/postgres/src/backend/access/index/amapi.c
    functionUses: 0
    functionsReached:
    - GetIndexAmRoutineByAmId
    - elog
    - IndexAmRoutine*::amtranslatecmptype
    linkageType: ''
    returnType: StrategyNumber
    signature: StrategyNumber IndexAmTranslateCompareType(CompareType cmptype, Oid
      amoid, Oid opfamily, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/index/amapi.c:189,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/index/amapi.c:196,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/index/amapi.c:196,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/index/amapi.c:197,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:198,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amapi.c:199,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amapi.c:203,1
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/access/index/amapi.c:205,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:208,1
    - Dst: IndexAmRoutine*::amvalidate
      Src: /src/postgres/src/backend/access/index/amapi.c:211,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/index/amapi.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 186
    functionDepth: 3
    functionLinenumber: 186
    functionLinenumberEnd: 214
    functionName: amvalidate
    functionSourceFile: /src/postgres/src/backend/access/index/amapi.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - GetIndexAmRoutineByAmId
    - HeapTupleIsValid
    - IndexAmRoutine*::amvalidate
    - ReleaseSysCache
    - PG_GETARG_OID
    - GETSTRUCT
    - PG_RETURN_BOOL
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum amvalidate(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: CHECK_REL_PROCEDURE
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_REL_PROCEDURE(pname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 107
    functionName: CHECK_SCAN_PROCEDURE
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SCAN_PROCEDURE(pname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/access/index/indexam.c:138,1
    - Dst: validate_relation_as_index
      Src: /src/postgres/src/backend/access/index/indexam.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 143
    functionName: index_open
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 1
    functionsReached:
    - validate_relation_as_index
    - relation_open
    linkageType: ''
    returnType: Relation
    signature: Relation index_open(Oid relationId, LOCKMODE lockmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: try_relation_open
      Src: /src/postgres/src/backend/access/index/indexam.c:157,1
    - Dst: validate_relation_as_index
      Src: /src/postgres/src/backend/access/index/indexam.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 166
    functionName: try_index_open
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - validate_relation_as_index
    - try_relation_open
    linkageType: ''
    returnType: Relation
    signature: Relation try_index_open(Oid relationId, LOCKMODE lockmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:182,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/access/index/indexam.c:185,1
    - Dst: UnlockRelationId
      Src: /src/postgres/src/backend/access/index/indexam.c:188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - relation
    - lockmode
    argTypes:
    - Relation
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 189
    functionName: index_close
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 1
    functionsReached:
    - Assert
    - UnlockRelationId
    - RelationClose
    linkageType: ''
    returnType: void
    signature: void index_close(Relation relation, LOCKMODE lockmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/indexam.c:202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/indexam.c:203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/indexam.c:204,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/index/indexam.c:205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - r
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 206
    functionName: validate_relation_as_index
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - ereport
    - errmsg
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: void
    signature: void validate_relation_as_index(Relation r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_REL_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:224,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/index/indexam.c:227,1
    - Dst: Relation::rd_indam::aminsert
      Src: /src/postgres/src/backend/access/index/indexam.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 8
    argNames:
    - indexRelation
    - values
    - isnull
    - heap_t_ctid
    - heapRelation
    - checkUnique
    - indexUnchanged
    - indexInfo
    argTypes:
    - Relation
    - Datum*
    - bool*
    - ItemPointer
    - Relation
    - IndexUniqueCheck
    - bool
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 235
    functionName: index_insert
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Relation::rd_indam::aminsert
    - CHECK_REL_PROCEDURE
    - CheckForSerializableConflictIn
    linkageType: ''
    returnType: bool
    signature: "bool index_insert(Relation indexRelation,\n\t\t\t Datum *values,\n\t\t\t
      bool *isnull,\n\t\t\t ItemPointer heap_t_ctid,\n\t\t\t Relation heapRelation,\n\t\t\t
      IndexUniqueCheck checkUnique,\n\t\t\t bool indexUnchanged,\n\t\t\t IndexInfo
      *indexInfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_indam::aminsertcleanup
      Src: /src/postgres/src/backend/access/index/indexam.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - indexRelation
    - indexInfo
    argTypes:
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 249
    functionName: index_insert_cleanup
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Relation::rd_indam::aminsertcleanup
    linkageType: ''
    returnType: void
    signature: "void index_insert_cleanup(Relation indexRelation,\n\t\t\t\t\t IndexInfo
      *indexInfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:266,1
    - Dst: IsHistoricMVCCSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:269,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/index/indexam.c:270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/indexam.c:272,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/indexam.c:273,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/indexam.c:274,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/index/indexam.c:275,1
    - Dst: index_beginscan_internal
      Src: /src/postgres/src/backend/access/index/indexam.c:278,1
    - Dst: table_index_fetch_begin
      Src: /src/postgres/src/backend/access/index/indexam.c:289,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 7
    argNames:
    - heapRelation
    - indexRelation
    - snapshot
    - instrument
    - nkeys
    - norderbys
    - flags
    argTypes:
    - Relation
    - Relation
    - Snapshot
    - IndexScanInstrumentation*
    - int
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 292
    functionName: index_beginscan
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - errcode
    - Assert
    - ereport
    - RelationIsAccessibleInLogicalDecoding
    - IsHistoricMVCCSnapshot
    - table_index_fetch_begin
    - errmsg
    - RelationGetRelationName
    - index_beginscan_internal
    linkageType: ''
    returnType: IndexScanDesc
    signature: "IndexScanDesc index_beginscan(Relation heapRelation,\n\t\t\t\tRelation
      indexRelation,\n\t\t\t\tSnapshot snapshot,\n\t\t\t\tIndexScanInstrumentation
      *instrument,\n\t\t\t\tint nkeys, int norderbys,\n\t\t\t\tuint32 flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:308,1
    - Dst: index_beginscan_internal
      Src: /src/postgres/src/backend/access/index/indexam.c:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - indexRelation
    - snapshot
    - instrument
    - nkeys
    argTypes:
    - Relation
    - Snapshot
    - IndexScanInstrumentation*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 320
    functionName: index_beginscan_bitmap
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Assert
    - index_beginscan_internal
    linkageType: ''
    returnType: IndexScanDesc
    signature: "IndexScanDesc index_beginscan_bitmap(Relation indexRelation,\n\t\t\t\t\t
      \  Snapshot snapshot,\n\t\t\t\t\t   IndexScanInstrumentation *instrument,\n\t\t\t\t\t
      \  int nkeys)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_REL_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:333,1
    - Dst: PredicateLockRelation
      Src: /src/postgres/src/backend/access/index/indexam.c:336,1
    - Dst: RelationIncrementReferenceCount
      Src: /src/postgres/src/backend/access/index/indexam.c:341,1
    - Dst: Relation::rd_indam::ambeginscan
      Src: /src/postgres/src/backend/access/index/indexam.c:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - indexRelation
    - nkeys
    - norderbys
    - snapshot
    - pscan
    - temp_snap
    argTypes:
    - Relation
    - int
    - int
    - Snapshot
    - ParallelIndexScanDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 353
    functionName: index_beginscan_internal
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - PredicateLockRelation
    - RelationIncrementReferenceCount
    - Relation::rd_indam::ambeginscan
    - CHECK_REL_PROCEDURE
    linkageType: ''
    returnType: IndexScanDesc
    signature: "IndexScanDesc index_beginscan_internal(Relation indexRelation,\n\t\t\t\t\t\t
      int nkeys, int norderbys, Snapshot snapshot,\n\t\t\t\t\t\t ParallelIndexScanDesc
      pscan, bool temp_snap)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SCAN_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:376,1
    - Dst: table_index_fetch_reset
      Src: /src/postgres/src/backend/access/index/indexam.c:380,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amrescan
      Src: /src/postgres/src/backend/access/index/indexam.c:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - scan
    - keys
    - nkeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 387
    functionName: index_rescan
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - Assert
    - CHECK_SCAN_PROCEDURE
    - table_index_fetch_reset
    - IndexScanDesc::indexRelation::rd_indam::amrescan
    linkageType: ''
    returnType: void
    signature: "void index_rescan(IndexScanDesc scan,\n\t\t\t ScanKey keys, int nkeys,\n\t\t\t
      ScanKey orderbys, int norderbys)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SCAN_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:397,1
    - Dst: table_index_fetch_end
      Src: /src/postgres/src/backend/access/index/indexam.c:402,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amendscan
      Src: /src/postgres/src/backend/access/index/indexam.c:407,1
    - Dst: RelationDecrementReferenceCount
      Src: /src/postgres/src/backend/access/index/indexam.c:410,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:413,1
    - Dst: IndexScanEnd
      Src: /src/postgres/src/backend/access/index/indexam.c:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 417
    functionName: index_endscan
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - IndexScanEnd
    - CHECK_SCAN_PROCEDURE
    - RelationDecrementReferenceCount
    - IndexScanDesc::indexRelation::rd_indam::amendscan
    - table_index_fetch_end
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void index_endscan(IndexScanDesc scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SCAN_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:427,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::ammarkpos
      Src: /src/postgres/src/backend/access/index/indexam.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 430
    functionName: index_markpos
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - CHECK_SCAN_PROCEDURE
    - IndexScanDesc::indexRelation::rd_indam::ammarkpos
    linkageType: ''
    returnType: void
    signature: void index_markpos(IndexScanDesc scan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:450,1
    - Dst: IsMVCCLikeSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:450,1
    - Dst: CHECK_SCAN_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:453,1
    - Dst: table_index_fetch_reset
      Src: /src/postgres/src/backend/access/index/indexam.c:457,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amrestrpos
      Src: /src/postgres/src/backend/access/index/indexam.c:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 463
    functionName: index_restrpos
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - IsMVCCLikeSnapshot
    - Assert
    - table_index_fetch_reset
    - CHECK_SCAN_PROCEDURE
    - IndexScanDesc::indexRelation::rd_indam::amrestrpos
    linkageType: ''
    returnType: void
    signature: void index_restrpos(IndexScanDesc scan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/access/index/indexam.c:478,1
    - Dst: EstimateSnapshotSpace
      Src: /src/postgres/src/backend/access/index/indexam.c:478,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/index/indexam.c:479,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/index/indexam.c:486,1
    - Dst: Relation::rd_indam::amestimateparallelscan
      Src: /src/postgres/src/backend/access/index/indexam.c:487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - indexRelation
    - nkeys
    - norderbys
    - snapshot
    argTypes:
    - Relation
    - int
    - int
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 492
    functionName: index_parallelscan_estimate
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    - EstimateSnapshotSpace
    - add_size
    - Relation::rd_indam::amestimateparallelscan
    linkageType: ''
    returnType: Size
    signature: "Size index_parallelscan_estimate(Relation indexRelation, int nkeys,
      int norderbys,\n\t\t\t\t\t\t\tSnapshot snapshot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/access/index/indexam.c:513,1
    - Dst: EstimateSnapshotSpace
      Src: /src/postgres/src/backend/access/index/indexam.c:514,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/index/indexam.c:515,1
    - Dst: SerializeSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:520,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/index/indexam.c:528,1
    - Dst: Relation::rd_indam::aminitparallelscan
      Src: /src/postgres/src/backend/access/index/indexam.c:529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - heapRelation
    - indexRelation
    - snapshot
    - target
    argTypes:
    - Relation
    - Relation
    - Snapshot
    - ParallelIndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 531
    functionName: index_parallelscan_initialize
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - OffsetToPointer
    - SerializeSnapshot
    - add_size
    - EstimateSnapshotSpace
    - MAXALIGN
    - Relation::rd_indam::aminitparallelscan
    linkageType: ''
    returnType: void
    signature: "void index_parallelscan_initialize(Relation heapRelation, Relation
      indexRelation,\n\t\t\t\t\t\t\t  Snapshot snapshot,\n\t\t\t\t\t\t\t  ParallelIndexScanDesc
      target)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_index_fetch_reset
      Src: /src/postgres/src/backend/access/index/indexam.c:544,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amparallelrescan
      Src: /src/postgres/src/backend/access/index/indexam.c:548,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 549
    functionName: index_parallelrescan
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - table_index_fetch_reset
    - IndexScanDesc::indexRelation::rd_indam::amparallelrescan
    linkageType: ''
    returnType: void
    signature: void index_parallelrescan(IndexScanDesc scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:569,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/index/indexam.c:569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:570,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/index/indexam.c:570,1
    - Dst: RestoreSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:572,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:573,1
    - Dst: index_beginscan_internal
      Src: /src/postgres/src/backend/access/index/indexam.c:574,1
    - Dst: table_index_fetch_begin
      Src: /src/postgres/src/backend/access/index/indexam.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 7
    argNames:
    - heaprel
    - indexrel
    - instrument
    - nkeys
    - norderbys
    - pscan
    - flags
    argTypes:
    - Relation
    - Relation
    - IndexScanInstrumentation*
    - int
    - int
    - ParallelIndexScanDesc
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 559
    functionDepth: 2
    functionLinenumber: 559
    functionLinenumberEnd: 589
    functionName: index_beginscan_parallel
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - RelFileLocatorEquals
    - RestoreSnapshot
    - Assert
    - table_index_fetch_begin
    - RegisterSnapshot
    - index_beginscan_internal
    linkageType: ''
    returnType: IndexScanDesc
    signature: "IndexScanDesc index_beginscan_parallel(Relation heaprel, Relation
      indexrel,\n\t\t\t\t\t\t IndexScanInstrumentation *instrument,\n\t\t\t\t\t\t
      int nkeys, int norderbys,\n\t\t\t\t\t\t ParallelIndexScanDesc pscan,\n\t\t\t\t\t\t
      uint32 flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SCAN_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:604,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:607,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:607,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amgettuple
      Src: /src/postgres/src/backend/access/index/indexam.c:615,1
    - Dst: table_index_fetch_reset
      Src: /src/postgres/src/backend/access/index/indexam.c:626,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:630,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:630,1
    - Dst: pgstat_count_index_tuples
      Src: /src/postgres/src/backend/access/index/indexam.c:632,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - scan
    - direction
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 636
    functionName: index_getnext_tid
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Assert
    - table_index_fetch_reset
    - CHECK_SCAN_PROCEDURE
    - pgstat_count_index_tuples
    - IndexScanDesc::indexRelation::rd_indam::amgettuple
    - ItemPointerIsValid
    - TransactionIdIsValid
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer index_getnext_tid(IndexScanDesc scan, ScanDirection direction)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_index_fetch_tuple
      Src: /src/postgres/src/backend/access/index/indexam.c:662,1
    - Dst: pgstat_count_heap_fetch
      Src: /src/postgres/src/backend/access/index/indexam.c:667,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - scan
    - slot
    argTypes:
    - IndexScanDesc
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 680
    functionName: index_fetch_heap
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - table_index_fetch_tuple
    - pgstat_count_heap_fetch
    linkageType: ''
    returnType: bool
    signature: bool index_fetch_heap(IndexScanDesc scan, TupleTableSlot *slot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_getnext_tid
      Src: /src/postgres/src/backend/access/index/indexam.c:707,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:713,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/index/indexam.c:713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:721,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:721,1
    - Dst: index_fetch_heap
      Src: /src/postgres/src/backend/access/index/indexam.c:722,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - scan
    - direction
    - slot
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 727
    functionName: index_getnext_slot
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - Assert
    - ItemPointerEquals
    - index_fetch_heap
    - ItemPointerIsValid
    - index_getnext_tid
    linkageType: ''
    returnType: bool
    signature: bool index_getnext_slot(IndexScanDesc scan, ScanDirection direction,
      TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SCAN_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:748,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amgetbitmap
      Src: /src/postgres/src/backend/access/index/indexam.c:756,1
    - Dst: pgstat_count_index_tuples
      Src: /src/postgres/src/backend/access/index/indexam.c:758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - scan
    - bitmap
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 761
    functionName: index_getbitmap
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - CHECK_SCAN_PROCEDURE
    - pgstat_count_index_tuples
    - IndexScanDesc::indexRelation::rd_indam::amgetbitmap
    linkageType: ''
    returnType: int64
    signature: int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_REL_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:781,1
    - Dst: Relation::rd_indam::ambulkdelete
      Src: /src/postgres/src/backend/access/index/indexam.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - info
    - istat
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 785
    functionName: index_bulk_delete
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - CHECK_REL_PROCEDURE
    - Relation::rd_indam::ambulkdelete
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\nindex_bulk_delete(IndexVacuumInfo *info,\n\t\t\t\t
      \ IndexBulkDeleteResult *istat,\n\t\t\t\t  IndexBulkDeleteCallback callback,\n\t\t\t\t
      \ void *callback_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_REL_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:800,1
    - Dst: Relation::rd_indam::amvacuumcleanup
      Src: /src/postgres/src/backend/access/index/indexam.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - info
    - istat
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 793
    functionDepth: 1
    functionLinenumber: 793
    functionLinenumberEnd: 803
    functionName: index_vacuum_cleanup
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Relation::rd_indam::amvacuumcleanup
    - CHECK_REL_PROCEDURE
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\nindex_vacuum_cleanup(IndexVacuumInfo *info,\n\t\t\t\t\t
      IndexBulkDeleteResult *istat)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_indam::amcanreturn
      Src: /src/postgres/src/backend/access/index/indexam.c:821,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - indexRelation
    - attno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 812
    functionDepth: 0
    functionLinenumber: 812
    functionLinenumberEnd: 822
    functionName: index_can_return
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Relation::rd_indam::amcanreturn
    linkageType: ''
    returnType: bool
    signature: bool index_can_return(Relation indexRelation, int attno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - irel
    - attnum
    - procnum
    argTypes:
    - Relation
    - AttrNumber
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 870
    functionName: index_getprocid
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: RegProcedure
    signature: "RegProcedure index_getprocid(Relation irel,\n\t\t\t\tAttrNumber attnum,\n\t\t\t\tuint16
      procnum)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:903,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:913,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:923,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/indexam.c:924,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/index/indexam.c:925,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/index/indexam.c:927,1
    - Dst: RelationGetIndexAttOptions
      Src: /src/postgres/src/backend/access/index/indexam.c:932,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/index/indexam.c:933,1
    - Dst: set_fn_opclass_options
      Src: /src/postgres/src/backend/access/index/indexam.c:935,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/index/indexam.c:937,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - irel
    - attnum
    - procnum
    argTypes:
    - Relation
    - AttrNumber
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 942
    functionName: index_getprocinfo
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - RegProcedureIsValid
    - elog
    - Assert
    - set_fn_opclass_options
    - MemoryContextSwitchTo
    - RelationGetRelationName
    - RelationGetIndexAttOptions
    - fmgr_info_cxt
    linkageType: ''
    returnType: FmgrInfo
    signature: "FmgrInfo *\nindex_getprocinfo(Relation irel,\n\t\t\t\t  AttrNumber
      attnum,\n\t\t\t\t  uint16 procnum)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:959,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/access/index/indexam.c:969,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/access/index/indexam.c:983,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/indexam.c:1003,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 4
    argNames:
    - scan
    - orderByTypes
    - distances
    - recheckOrderBy
    argTypes:
    - IndexScanDesc
    - Oid*
    - IndexOrderByDistance*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 952
    functionDepth: 2
    functionLinenumber: 952
    functionLinenumberEnd: 1007
    functionName: index_store_float8_orderby_distances
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Assert
    - Float4GetDatum
    - elog
    - Float8GetDatum
    linkageType: ''
    returnType: void
    signature: "void index_store_float8_orderby_distances(IndexScanDesc scan, Oid
      *orderByTypes,\n\t\t\t\t\t\t\t\t\t IndexOrderByDistance *distances,\n\t\t\t\t\t\t\t\t\t
      bool recheckOrderBy)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/index/indexam.c:1026,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:1028,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/index/indexam.c:1034,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/access/index/indexam.c:1041,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/index/indexam.c:1043,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/indexam.c:1046,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/indexam.c:1047,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/indexam.c:1048,1
    - Dst: generate_opclass_name
      Src: /src/postgres/src/backend/access/index/indexam.c:1049,1
    - Dst: init_local_reloptions
      Src: /src/postgres/src/backend/access/index/indexam.c:1052,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/index/indexam.c:1054,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/access/index/indexam.c:1056,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/index/indexam.c:1056,1
    - Dst: build_local_reloptions
      Src: /src/postgres/src/backend/access/index/indexam.c:1058,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - indrel
    - attnum
    - attoptions
    - validate
    argTypes:
    - Relation
    - AttrNumber
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1015
    functionDepth: 2
    functionLinenumber: 1015
    functionLinenumberEnd: 1059
    functionName: index_opclass_options
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - build_local_reloptions
    - errcode
    - ereport
    - init_local_reloptions
    - generate_opclass_name
    - index_getprocinfo
    - index_getprocid
    - errmsg
    - FunctionCall1
    - PointerGetDatum
    - OidIsValid
    - SysCacheGetAttrNotNull
    - DatumGetPointer
    linkageType: ''
    returnType: bytea
    signature: "bytea *\nindex_opclass_options(Relation indrel, AttrNumber attnum,
      Datum attoptions,\n\t\t\t\t\t  bool validate)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:58,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:61,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:62,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:72,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:73,1
    - Dst: HashMaxItemSize
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:82,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:83,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:84,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:85,1
    - Dst: HashMaxItemSize
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:86,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:87,1
    - Dst: _hash_getbucketbuf_from_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:90,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:92,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:94,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:94,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:99,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:100,1
    - Dst: H_BUCKET_BEING_SPLIT
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:112,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:112,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:115,1
    - Dst: _hash_finish_split
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:117,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:123,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:124,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:129,1
    - Dst: H_HAS_DEAD_TUPLES
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:138,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:141,1
    - Dst: _hash_vacuum_one_page
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:143,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:145,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:155,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:165,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:167,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:168,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:169,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:179,1
    - Dst: _hash_addovflpage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:182,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:186,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:186,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:189,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:190,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:197,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:200,1
    - Dst: _hash_pgaddtup
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:203,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:204,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:207,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:214,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:217,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:223,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:224,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:226,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:228,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:229,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:229,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:231,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:234,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:236,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:236,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:237,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:237,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:239,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:242,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:248,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:250,1
    - Dst: _hash_expandtable
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:254,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:257,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 78
    argCount: 4
    argNames:
    - rel
    - itup
    - heapRel
    - sorted
    argTypes:
    - Relation
    - IndexTuple
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 37
    functionDepth: 4
    functionLinenumber: 37
    functionLinenumberEnd: 258
    functionName: _hash_doinsert
    functionSourceFile: /src/postgres/src/backend/access/hash/hashinsert.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - _hash_getbucketbuf_from_hashkey
    - HashMaxItemSize
    - errcode
    - H_BUCKET_BEING_SPLIT
    - LockBuffer
    - _hash_finish_split
    - BlockNumberIsValid
    - BufferGetPage
    - XLogRegisterData
    - errhint
    - _hash_expandtable
    - _hash_dropbuf
    - XLogRegisterBufData
    - H_HAS_DEAD_TUPLES
    - _hash_pgaddtup
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - XLogGetFakeLSN
    - errmsg
    - MAXALIGN
    - PageGetFreeSpace
    - _hash_addovflpage
    - IndexTupleSize
    - HashPageGetMeta
    - PageSetLSN
    - _hash_getbuf
    - ereport
    - _hash_vacuum_one_page
    - IsBufferCleanupOK
    - MarkBufferDirty
    - XLogRegisterBuffer
    - CheckForSerializableConflictIn
    - HashPageGetOpaque
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - _hash_get_indextuple_hashkey
    - _hash_relbuf
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void _hash_doinsert(Relation rel, IndexTuple itup, Relation heapRel,
      bool sorted)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:282,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:283,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:291,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:295,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:300,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:300,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:303,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:303,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:304,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:310,1
    - Dst: _hash_binsearch
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:312,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:315,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:316,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:316,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 5
    argNames:
    - rel
    - buf
    - itemsize
    - itup
    - appendtup
    argTypes:
    - Relation
    - Buffer
    - Size
    - IndexTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 275
    functionDepth: 4
    functionLinenumber: 275
    functionLinenumberEnd: 319
    functionName: _hash_pgaddtup
    functionSourceFile: /src/postgres/src/backend/access/hash/hashinsert.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - _hash_binsearch
    - PageGetItemId
    - BufferGetPage
    - PageAddItem
    - PageGetMaxOffsetNumber
    - PageGetItem
    - RelationGetRelationName
    - _hash_get_indextuple_hashkey
    - _hash_checkpage
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber _hash_pgaddtup(Relation rel, Buffer buf, Size itemsize,
      IndexTuple itup,\n\t\t\t   bool appendtup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:339,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:340,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:346,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:347,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:350,1
    - Dst: _hash_binsearch
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:351,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:355,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:356,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - rel
    - buf
    - itups
    - itup_offsets
    - nitups
    argTypes:
    - Relation
    - Buffer
    - IndexTuple*
    - OffsetNumber*
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 330
    functionDepth: 4
    functionLinenumber: 330
    functionLinenumberEnd: 358
    functionName: _hash_pgaddmultitup
    functionSourceFile: /src/postgres/src/backend/access/hash/hashinsert.c
    functionUses: 0
    functionsReached:
    - elog
    - _hash_binsearch
    - BufferGetPage
    - PageAddItem
    - RelationGetRelationName
    - _hash_get_indextuple_hashkey
    - MAXALIGN
    - _hash_checkpage
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void _hash_pgaddmultitup(Relation rel, Buffer buf, IndexTuple *itups,\n\t\t\t\t\tOffsetNumber
      *itup_offsets, uint16 nitups)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:374,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:380,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:383,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:385,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:387,1
    - Dst: index_compute_xid_horizon_for_tuples
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:396,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:402,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:405,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:407,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:417,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:420,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:420,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:423,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:424,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:427,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:431,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:435,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:436,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:437,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:444,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:447,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:449,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:452,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:454,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:454,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:455,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:455,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:457,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 4
    argNames:
    - rel
    - hrel
    - metabuf
    - buf
    argTypes:
    - Relation
    - Relation
    - Buffer
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 367
    functionDepth: 5
    functionLinenumber: 367
    functionLinenumberEnd: 465
    functionName: _hash_vacuum_one_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hashinsert.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - LockBuffer
    - BufferGetPage
    - PageIndexMultiDelete
    - XLogRegisterData
    - XLogBeginInsert
    - PageGetMaxOffsetNumber
    - XLogGetFakeLSN
    - HashPageGetMeta
    - PageSetLSN
    - index_compute_xid_horizon_for_tuples
    - ItemIdIsDead
    - PageGetItemId
    - MarkBufferDirty
    - XLogRegisterBuffer
    - OffsetNumberNext
    - HashPageGetOpaque
    - START_CRIT_SECTION
    - RelationIsAccessibleInLogicalDecoding
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void _hash_vacuum_one_page(Relation rel, Relation hrel, Buffer metabuf,
      Buffer buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:50,1
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: hashchar
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CHAR
    - hash_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hashchar(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:56,1
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:56,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: hashcharextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CHAR
    - hash_uint32_extended
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hashcharextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:62,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: hashint2
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - hash_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hashint2(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:68,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:68,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: hashint2extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - hash_uint32_extended
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hashint2extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:74,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: hashint4
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - hash_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hashint4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:80,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:80,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: hashint4extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - hash_uint32_extended
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hashint4extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:94,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 101
    functionName: hashint8
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - hash_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hashint8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:107,1
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:113,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 114
    functionName: hashint8extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_uint32_extended
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hashint8extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:119,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: hashoid
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - hash_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hashoid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:125,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:125,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: hashoidextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - hash_uint32_extended
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hashoidextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:131,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: hashenum
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - hash_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hashenum(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:137,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:137,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: hashenumextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - hash_uint32_extended
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hashenumextended(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:143,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:152,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:170,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:171,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 174
    functionName: hashfloat4
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - isnan
    - PG_GETARG_FLOAT4
    - hash_any
    - PG_RETURN_UINT32
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum hashfloat4(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:179,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:180,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:185,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:187,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:188,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 191
    functionName: hashfloat4extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - hash_any_extended
    - PG_GETARG_INT64
    - isnan
    - PG_RETURN_UINT64
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum hashfloat4extended(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:196,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:204,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:211,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:212,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 215
    functionName: hashfloat8
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT8
    - PG_RETURN_UINT32
    - hash_any
    - isnan
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum hashfloat8(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:220,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:221,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:225,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:226,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:227,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 230
    functionName: hashfloat8extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT8
    - hash_any_extended
    - PG_GETARG_INT64
    - isnan
    - PG_RETURN_UINT64
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum hashfloat8extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:235,1
    - Dst: check_valid_oidvector
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:237,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 239
    functionName: hashoidvector
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_any
    - PG_GETARG_POINTER
    - check_valid_oidvector
    linkageType: ''
    returnType: Datum
    signature: Datum hashoidvector(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:244,1
    - Dst: check_valid_oidvector
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:246,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:247,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 250
    functionName: hashoidvectorextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_any_extended
    - PG_GETARG_POINTER
    - check_valid_oidvector
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hashoidvectorextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:255,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:255,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:257,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 258
    functionName: hashname
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_any
    - strlen
    - NameStr
    - PG_GETARG_NAME
    linkageType: ''
    returnType: Datum
    signature: Datum hashname(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:263,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:263,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:265,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:265,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: hashnameextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - hash_any_extended
    - strlen
    - PG_GETARG_INT64
    - NameStr
    linkageType: ''
    returnType: Datum
    signature: Datum hashnameextended(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:272,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:273,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:278,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:279,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:280,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:281,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:283,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:287,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:287,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:288,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:295,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:296,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:299,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:300,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:302,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:306,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:313,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:315,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:319,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 269
    functionDepth: 4
    functionLinenumber: 269
    functionLinenumberEnd: 322
    functionName: hashtext
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - pg_newlocale_from_collation
    - pfree
    - PG_FREE_IF_COPY
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errhint
    - pg_strnxfrm
    - errmsg
    - palloc
    - hash_any
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum hashtext(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:327,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:335,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:336,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:338,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:342,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:342,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:343,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:344,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:351,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:352,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:354,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:355,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:357,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:361,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:368,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:369,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:371,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 324
    functionDepth: 4
    functionLinenumber: 324
    functionLinenumberEnd: 377
    functionName: hashtextextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - pg_newlocale_from_collation
    - pfree
    - PG_FREE_IF_COPY
    - ereport
    - VARDATA_ANY
    - hash_any_extended
    - errhint
    - VARSIZE_ANY_EXHDR
    - errmsg
    - PG_GETARG_INT64
    - palloc
    - pg_strnxfrm
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum hashtextextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_VARLENA_PP
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:391,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:394,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:394,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:395,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 388
    functionDepth: 4
    functionLinenumber: 388
    functionLinenumberEnd: 401
    functionName: hashvarlena
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - hash_any
    - PG_GETARG_VARLENA_PP
    linkageType: ''
    returnType: Datum
    signature: Datum hashvarlena(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_VARLENA_PP
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:406,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:409,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:409,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:410,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:411,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 403
    functionDepth: 4
    functionLinenumber: 403
    functionLinenumberEnd: 416
    functionName: hashvarlenaextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - hash_any_extended
    - VARSIZE_ANY_EXHDR
    - PG_GETARG_INT64
    - PG_GETARG_VARLENA_PP
    linkageType: ''
    returnType: Datum
    signature: Datum hashvarlenaextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashvarlena
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 418
    functionDepth: 5
    functionLinenumber: 418
    functionLinenumberEnd: 422
    functionName: hashbytea
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hashvarlena
    linkageType: ''
    returnType: Datum
    signature: Datum hashbytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashvarlenaextended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 424
    functionDepth: 5
    functionLinenumber: 424
    functionLinenumberEnd: 428
    functionName: hashbyteaextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hashvarlenaextended
    linkageType: ''
    returnType: Datum
    signature: Datum hashbyteaextended(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:64,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:69,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:72,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:74,1
    - Dst: _hash_readpage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:75,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:87,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:90,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:92,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:102,1
    - Dst: _hash_readpage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:104,1
    - Dst: _hash_dropscanbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:114,1
    - Dst: HashScanPosInvalidate
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:115,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 124
    functionName: _hash_next
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 0
    functionsReached:
    - _hash_getbuf
    - BlockNumberIsValid
    - _hash_kill_items
    - HashScanPosInvalidate
    - ScanDirectionIsForward
    - _hash_dropbuf
    - _hash_readpage
    - _hash_dropscanbuf
    linkageType: ''
    returnType: bool
    signature: bool _hash_next(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:147,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:149,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:153,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:154,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:171,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:171,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:173,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:174,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:174,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:187,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:188,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - scan
    - bufp
    - pagep
    - opaquep
    argTypes:
    - IndexScanDesc
    - Buffer*
    - Page*
    - HashPageOpaque*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 131
    functionDepth: 4
    functionLinenumber: 131
    functionLinenumberEnd: 190
    functionName: _hash_readnext
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 0
    functionsReached:
    - HashPageGetOpaque
    - _hash_getbuf
    - Assert
    - BufferGetBlockNumber
    - BlockNumberIsValid
    - LockBuffer
    - PredicateLockPage
    - CHECK_FOR_INTERRUPTS
    - BufferGetPage
    - BufferIsValid
    - _hash_relbuf
    linkageType: ''
    returnType: void
    signature: "void _hash_readnext(IndexScanDesc scan,\n\t\t\t   Buffer *bufp, Page
      *pagep, HashPageOpaque *opaquep)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:214,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:219,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:229,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:229,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:230,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:232,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:233,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:240,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:254,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:254,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:256,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:257,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:258,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:261,1
    - Dst: _hash_readnext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:262,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - scan
    - bufp
    - pagep
    - opaquep
    argTypes:
    - IndexScanDesc
    - Buffer*
    - Page*
    - HashPageOpaque*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 197
    functionDepth: 5
    functionLinenumber: 197
    functionLinenumberEnd: 270
    functionName: _hash_readprev
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 0
    functionsReached:
    - _hash_dropbuf
    - HashPageGetOpaque
    - Assert
    - _hash_getbuf
    - _hash_readnext
    - BlockNumberIsValid
    - LockBuffer
    - CHECK_FOR_INTERRUPTS
    - BufferGetPage
    - BufferIsValid
    - _hash_relbuf
    linkageType: ''
    returnType: void
    signature: "void _hash_readprev(IndexScanDesc scan,\n\t\t\t   Buffer *bufp, Page
      *pagep, HashPageOpaque *opaquep)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:301,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:312,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:313,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:314,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:322,1
    - Dst: _hash_datum2hashkey
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:343,1
    - Dst: _hash_datum2hashkey_type
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:345,1
    - Dst: _hash_getbucketbuf_from_hashkey
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:350,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:351,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:351,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:352,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:353,1
    - Dst: H_BUCKET_BEING_POPULATED
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:374,1
    - Dst: _hash_get_oldblock_from_newbucket
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:379,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:385,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:387,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:394,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:396,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:397,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:399,1
    - Dst: H_BUCKET_BEING_POPULATED
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:401,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:405,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:411,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:417,1
    - Dst: _hash_readnext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:419,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:423,1
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:423,1
    - Dst: _hash_readpage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:427,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 288
    functionDepth: 5
    functionLinenumber: 288
    functionLinenumberEnd: 436
    functionName: _hash_first
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 0
    functionsReached:
    - _hash_getbucketbuf_from_hashkey
    - errcode
    - ScanDirectionIsBackward
    - LockBuffer
    - BlockNumberIsValid
    - BufferGetPage
    - _hash_get_oldblock_from_newbucket
    - _hash_dropbuf
    - Assert
    - BufferGetBlockNumber
    - errmsg
    - BufferIsInvalid
    - _hash_readpage
    - H_BUCKET_BEING_POPULATED
    - _hash_getbuf
    - ereport
    - pgstat_count_index_scan
    - HashPageGetOpaque
    - _hash_readnext
    - PredicateLockPage
    - _hash_datum2hashkey_type
    - _hash_datum2hashkey
    linkageType: ''
    returnType: bool
    signature: bool _hash_first(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:460,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:460,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:461,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:462,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:463,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:466,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:468,1
    - Dst: _hash_binsearch
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:475,1
    - Dst: _hash_load_qualified_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:477,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:488,1
    - Dst: _hash_readnext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:500,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:501,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:504,1
    - Dst: _hash_binsearch_last
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:534,1
    - Dst: _hash_load_qualified_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:536,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:547,1
    - Dst: _hash_readprev
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:553,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:554,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:557,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:586,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:596,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 70
    argCount: 3
    argNames:
    - scan
    - bufP
    - dir
    argTypes:
    - IndexScanDesc
    - Buffer*
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 448
    functionDepth: 6
    functionLinenumber: 448
    functionLinenumberEnd: 598
    functionName: _hash_readpage
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 2
    functionsReached:
    - HashPageGetOpaque
    - _hash_relbuf
    - Assert
    - _hash_readnext
    - BufferGetBlockNumber
    - LockBuffer
    - _hash_binsearch
    - _hash_load_qualified_items
    - _hash_kill_items
    - BufferGetPage
    - ScanDirectionIsForward
    - _hash_binsearch_last
    - BufferIsValid
    - _hash_readprev
    - _hash_checkpage
    linkageType: ''
    returnType: bool
    signature: bool _hash_readpage(IndexScanDesc scan, Buffer *bufP, ScanDirection
      dir)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:613,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:622,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:623,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:623,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:633,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:633,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:635,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:639,1
    - Dst: _hash_checkqual
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:640,1
    - Dst: _hash_saveitem
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:643,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:655,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:658,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:668,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:669,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:669,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:679,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:679,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:681,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:685,1
    - Dst: _hash_checkqual
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:686,1
    - Dst: _hash_saveitem
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:690,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:704,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 41
    argCount: 4
    argNames:
    - scan
    - page
    - offnum
    - dir
    argTypes:
    - IndexScanDesc
    - Page
    - OffsetNumber
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 604
    functionDepth: 2
    functionLinenumber: 604
    functionLinenumberEnd: 707
    functionName: _hash_load_qualified_items
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 1
    functionsReached:
    - _hash_checkqual
    - OffsetNumberNext
    - Assert
    - ItemIdIsDead
    - OffsetNumberPrev
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - ScanDirectionIsForward
    - PageGetItem
    - _hash_saveitem
    - _hash_get_indextuple_hashkey
    linkageType: ''
    returnType: int
    signature: "int _hash_load_qualified_items(IndexScanDesc scan, Page page,\n\t\t\t\t\t\t
      \  OffsetNumber offnum, ScanDirection dir)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - so
    - itemIndex
    - offnum
    - itup
    argTypes:
    - HashScanOpaque
    - int
    - OffsetNumber
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 718
    functionName: _hash_saveitem
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void _hash_saveitem(HashScanOpaque so, int itemIndex,\n\t\t\t   OffsetNumber
      offnum, IndexTuple itup)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _hash_get_totalbuckets
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - metap
    - ovflbitnum
    argTypes:
    - HashMetaPage
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 54
    functionName: bitno_to_blkno
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 0
    functionsReached:
    - _hash_get_totalbuckets
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber bitno_to_blkno(HashMetaPage metap, uint32 ovflbitnum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _hash_get_totalbuckets
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:71,1
    - Dst: _hash_get_totalbuckets
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:73,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:86,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:87,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:88,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - metap
    - ovflblkno
    argTypes:
    - HashMetaPage
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 90
    functionName: _hash_ovflblkno_to_bitno
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - _hash_get_totalbuckets
    - errcode
    linkageType: ''
    returnType: uint32
    signature: uint32 _hash_ovflblkno_to_bitno(HashMetaPage metap, BlockNumber ovflblkno)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:152,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:155,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:162,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:163,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:173,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:174,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:177,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:181,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:185,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:187,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:188,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:188,1
    - Dst: BMPG_SHIFT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:192,1
    - Dst: BMPG_MASK
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:193,1
    - Dst: BMPG_SHIFT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:208,1
    - Dst: BMPG_MASK
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:214,1
    - Dst: BMPGSZ_BIT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:220,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:223,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:225,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:226,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:227,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:236,1
    - Dst: _hash_firstfreebit
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:239,1
    - Dst: BMPG_SHIFT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:243,1
    - Dst: bitno_to_blkno
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:245,1
    - Dst: _hash_getinitbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:248,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:255,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:262,1
    - Dst: BMPGSZ_BIT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:269,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:283,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:284,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:285,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:286,1
    - Dst: _hash_getnewbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:288,1
    - Dst: bitno_to_blkno
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:288,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:299,1
    - Dst: bitno_to_blkno
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:301,1
    - Dst: _hash_getnewbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:313,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:326,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:326,1
    - Dst: SETBIT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:329,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:330,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:337,1
    - Dst: _hash_initbitmapbuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:339,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:340,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:343,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:348,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:363,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:367,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:368,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:369,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:375,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:378,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:380,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:383,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:390,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:391,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:393,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:394,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:396,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:398,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:400,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:401,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:404,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:405,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:407,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:408,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:410,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:413,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:415,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:415,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:416,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:416,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:418,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:419,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:419,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:421,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:422,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:422,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:424,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:424,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:426,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:429,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:431,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:433,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:434,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:436,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:438,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:439,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 140
    argCount: 4
    argNames:
    - rel
    - metabuf
    - buf
    - retain_pin
    argTypes:
    - Relation
    - Buffer
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 111
    functionDepth: 4
    functionLinenumber: 111
    functionLinenumberEnd: 442
    functionName: _hash_addovflpage
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - errcode
    - LockBuffer
    - BlockNumberIsValid
    - BufferGetPage
    - XLogRegisterData
    - bitno_to_blkno
    - RelationGetRelationName
    - BMPGSZ_BIT
    - _hash_firstfreebit
    - XLogRegisterBufData
    - XLogBeginInsert
    - Assert
    - SETBIT
    - BufferGetBlockNumber
    - _hash_getnewbuf
    - XLogGetFakeLSN
    - errmsg
    - HashPageGetMeta
    - PageSetLSN
    - _hash_getbuf
    - ereport
    - BufferIsValid
    - MarkBufferDirty
    - XLogRegisterBuffer
    - BMPG_SHIFT
    - HashPageGetBitmap
    - HashPageGetOpaque
    - _hash_initbitmapbuffer
    - _hash_getinitbuf
    - BMPG_MASK
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - _hash_relbuf
    - END_CRIT_SECTION
    - _hash_checkpage
    linkageType: ''
    returnType: Buffer
    signature: Buffer _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf,
      bool retain_pin)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - map
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 466
    functionName: _hash_firstfreebit
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 1
    functionsReached:
    - elog
    linkageType: ''
    returnType: uint32
    signature: uint32 _hash_firstfreebit(uint32 map)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:522,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:523,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:524,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:525,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:528,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:537,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:542,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:548,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:549,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:558,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:559,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:559,1
    - Dst: _hash_ovflblkno_to_bitno
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:562,1
    - Dst: BMPG_SHIFT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:564,1
    - Dst: BMPG_MASK
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:565,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:568,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:572,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:575,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:576,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:578,1
    - Dst: ISSET
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:578,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:581,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:584,1
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:585,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:587,1
    - Dst: _hash_pgaddmultitup
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:596,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:597,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:607,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:607,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:609,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:617,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:619,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:621,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:624,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:626,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:628,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:630,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:631,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:633,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:635,1
    - Dst: CLRBIT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:639,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:640,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:647,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:656,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:666,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:667,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:677,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:682,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:683,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:698,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:704,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:705,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:708,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:716,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:717,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:719,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:720,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:722,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:723,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:727,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:728,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:731,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:734,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:738,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:738,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:740,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:740,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:742,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:743,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:743,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:744,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:745,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:745,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:747,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:747,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:750,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:750,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:752,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:755,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:756,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:758,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:759,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:761,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:762,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:764,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:765,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 124
    argCount: 9
    argNames:
    - rel
    - bucketbuf
    - ovflbuf
    - wbuf
    - itups
    - itup_offsets
    - tups_size
    - nitups
    - bstrategy
    argTypes:
    - Relation
    - Buffer
    - Buffer
    - Buffer
    - IndexTuple*
    - OffsetNumber*
    - Size*
    - uint16
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 491
    functionDepth: 5
    functionLinenumber: 491
    functionLinenumberEnd: 768
    functionName: _hash_freeovflpage
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - BlockNumberIsValid
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - XLogRegisterBufData
    - elog
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - BufferGetPageSize
    - XLogGetFakeLSN
    - _hash_ovflblkno_to_bitno
    - HashPageGetMeta
    - PageSetLSN
    - XLogEnsureRecordSpace
    - CLRBIT
    - _hash_pageinit
    - _hash_getbuf
    - BufferIsValid
    - MarkBufferDirty
    - XLogRegisterBuffer
    - BMPG_SHIFT
    - HashPageGetBitmap
    - _hash_getbuf_with_strategy
    - HashPageGetOpaque
    - ISSET
    - BMPG_MASK
    - START_CRIT_SECTION
    - _hash_pgaddmultitup
    - RelationNeedsWAL
    - _hash_relbuf
    - END_CRIT_SECTION
    - _hash_checkpage
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber _hash_freeovflpage(Relation rel, Buffer bucketbuf, Buffer
      ovflbuf,\n\t\t\t\t   Buffer wbuf, IndexTuple *itups, OffsetNumber *itup_offsets,\n\t\t\t\t
      \  Size *tups_size, uint16 nitups,\n\t\t\t\t   BufferAccessStrategy bstrategy)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:784,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:788,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:788,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:791,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:799,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - buf
    - bmsize
    - initpage
    argTypes:
    - Buffer
    - uint16
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 777
    functionDepth: 4
    functionLinenumber: 777
    functionLinenumberEnd: 808
    functionName: _hash_initbitmapbuffer
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 1
    functionsReached:
    - HashPageGetBitmap
    - HashPageGetOpaque
    - _hash_pageinit
    - BufferGetPageSize
    - BufferGetPage
    - memset
    linkageType: ''
    returnType: void
    signature: void _hash_initbitmapbuffer(Buffer buf, uint16 bmsize, bool initpage)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:863,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:864,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:870,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:872,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:888,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:889,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:894,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:896,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:897,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:918,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:921,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:927,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:927,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:930,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:931,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:932,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:933,1
    - Dst: PageGetFreeSpaceForMultipleTuples
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:945,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:945,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:951,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:951,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:955,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:965,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:971,1
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:972,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:974,1
    - Dst: _hash_pgaddmultitup
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:982,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:983,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:986,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:987,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:990,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:997,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:998,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1009,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1012,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1013,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1016,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1018,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1019,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1022,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1025,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1027,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1027,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1028,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1028,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1030,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1040,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1042,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1047,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1052,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1053,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1054,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1059,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1080,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1097,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1097,1
    - Dst: _hash_freeovflpage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1100,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1105,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1112,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1114,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1118,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1123,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1125,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 111
    argCount: 5
    argNames:
    - rel
    - bucket
    - bucket_blkno
    - bucket_buf
    - bstrategy
    argTypes:
    - Relation
    - Bucket
    - BlockNumber
    - Buffer
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 842
    functionDepth: 6
    functionLinenumber: 842
    functionLinenumberEnd: 1129
    functionName: _hash_squeezebucket
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - BlockNumberIsValid
    - LockBuffer
    - BufferGetPage
    - PageIndexMultiDelete
    - XLogRegisterData
    - PageGetItem
    - PageIsEmpty
    - XLogRegisterBufData
    - XLogBeginInsert
    - Assert
    - pfree
    - PageGetMaxOffsetNumber
    - XLogGetFakeLSN
    - MAXALIGN
    - PageGetFreeSpaceForMultipleTuples
    - CopyIndexTuple
    - IndexTupleSize
    - XLogEnsureRecordSpace
    - PageSetLSN
    - ItemIdIsDead
    - PageGetItemId
    - MarkBufferDirty
    - XLogRegisterBuffer
    - _hash_getbuf_with_strategy
    - HashPageGetOpaque
    - OffsetNumberNext
    - START_CRIT_SECTION
    - _hash_pgaddmultitup
    - RelationNeedsWAL
    - _hash_freeovflpage
    - _hash_relbuf
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void _hash_squeezebucket(Relation rel,\n\t\t\t\t\tBucket bucket,\n\t\t\t\t\tBlockNumber
      bucket_blkno,\n\t\t\t\t\tBuffer bucket_buf,\n\t\t\t\t\tBufferAccessStrategy
      bstrategy)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/hash/hash.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 129
    functionName: hashhandler
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum hashhandler(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/hash/hash.c:149,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash.c:150,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hash.c:151,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/access/hash/hash.c:154,1
    - Dst: _hash_init
      Src: /src/postgres/src/backend/access/hash/hash.c:157,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/hash/hash.c:179,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/hash/hash.c:181,1
    - Dst: _h_spoolinit
      Src: /src/postgres/src/backend/access/hash/hash.c:184,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/hash/hash.c:193,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/hash/hash.c:196,1
    - Dst: _h_indexbuild
      Src: /src/postgres/src/backend/access/hash/hash.c:202,1
    - Dst: _h_spooldestroy
      Src: /src/postgres/src/backend/access/hash/hash.c:203,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/hash/hash.c:209,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 215
    functionName: hashbuild
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - elog
    - estimate_rel_size
    - _h_spooldestroy
    - table_index_build_scan
    - _h_indexbuild
    - _h_spoolinit
    - _hash_init
    - palloc_object
    - RelationGetNumberOfBlocks
    - RelationGetRelationName
    - Min
    - pgstat_progress_update_param
    linkageType: ''
    returnType: IndexBuildResult
    signature: 'IndexBuildResult *

      hashbuild(Relation heap, Relation index, IndexInfo *indexInfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _hash_init
      Src: /src/postgres/src/backend/access/hash/hash.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 224
    functionName: hashbuildempty
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - _hash_init
    linkageType: ''
    returnType: void
    signature: void hashbuildempty(Relation index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _hash_convert_tuple
      Src: /src/postgres/src/backend/access/hash/hash.c:243,1
    - Dst: _h_spool
      Src: /src/postgres/src/backend/access/hash/hash.c:250,1
    - Dst: index_form_tuple
      Src: /src/postgres/src/backend/access/hash/hash.c:254,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/hash/hash.c:254,1
    - Dst: _hash_doinsert
      Src: /src/postgres/src/backend/access/hash/hash.c:257,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hash.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - index
    - tid
    - values
    - isnull
    - tupleIsAlive
    - state
    argTypes:
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 229
    functionDepth: 5
    functionLinenumber: 229
    functionLinenumberEnd: 262
    functionName: hashbuildCallback
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - _hash_convert_tuple
    - _hash_doinsert
    - pfree
    - RelationGetDescr
    - _h_spool
    - index_form_tuple
    linkageType: ''
    returnType: void
    signature: "void hashbuildCallback(Relation index,\n\t\t\t\t  ItemPointer tid,\n\t\t\t\t
      \ Datum *values,\n\t\t\t\t  bool *isnull,\n\t\t\t\t  bool tupleIsAlive,\n\t\t\t\t
      \ void *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _hash_convert_tuple
      Src: /src/postgres/src/backend/access/hash/hash.c:282,1
    - Dst: index_form_tuple
      Src: /src/postgres/src/backend/access/hash/hash.c:288,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/hash/hash.c:288,1
    - Dst: _hash_doinsert
      Src: /src/postgres/src/backend/access/hash/hash.c:291,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hash.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 8
    argNames:
    - rel
    - values
    - isnull
    - ht_ctid
    - heapRel
    - checkUnique
    - indexUnchanged
    - indexInfo
    argTypes:
    - Relation
    - Datum*
    - bool*
    - ItemPointer
    - Relation
    - IndexUniqueCheck
    - bool
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 270
    functionDepth: 5
    functionLinenumber: 270
    functionLinenumberEnd: 296
    functionName: hashinsert
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - _hash_convert_tuple
    - _hash_doinsert
    - pfree
    - RelationGetDescr
    - index_form_tuple
    linkageType: ''
    returnType: bool
    signature: "bool hashinsert(Relation rel, Datum *values, bool *isnull,\n\t\t   ItemPointer
      ht_ctid, Relation heapRel,\n\t\t   IndexUniqueCheck checkUnique,\n\t\t   bool
      indexUnchanged,\n\t\t   IndexInfo *indexInfo)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HashScanPosIsValid
      Src: /src/postgres/src/backend/access/hash/hash.c:316,1
    - Dst: _hash_first
      Src: /src/postgres/src/backend/access/hash/hash.c:317,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/hash/hash.c:334,1
    - Dst: _hash_next
      Src: /src/postgres/src/backend/access/hash/hash.c:343,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 302
    functionDepth: 6
    functionLinenumber: 302
    functionLinenumberEnd: 347
    functionName: hashgettuple
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - HashScanPosIsValid
    - palloc_array
    - _hash_next
    - _hash_first
    linkageType: ''
    returnType: bool
    signature: bool hashgettuple(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _hash_first
      Src: /src/postgres/src/backend/access/hash/hash.c:361,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/hash/hash.c:372,1
    - Dst: _hash_next
      Src: /src/postgres/src/backend/access/hash/hash.c:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 353
    functionDepth: 6
    functionLinenumber: 353
    functionLinenumberEnd: 379
    functionName: hashgetbitmap
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - tbm_add_tuples
    - _hash_next
    - _hash_first
    linkageType: ''
    returnType: int64
    signature: int64 hashgetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:392,1
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/backend/access/hash/hash.c:394,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/hash/hash.c:396,1
    - Dst: HashScanPosInvalidate
      Src: /src/postgres/src/backend/access/hash/hash.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - rel
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 385
    functionDepth: 2
    functionLinenumber: 385
    functionLinenumberEnd: 410
    functionName: hashbeginscan
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - Assert
    - HashScanPosInvalidate
    - RelationGetIndexScan
    - palloc_object
    linkageType: ''
    returnType: IndexScanDesc
    signature: IndexScanDesc hashbeginscan(Relation rel, int nkeys, int norderbys)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HashScanPosIsValid
      Src: /src/postgres/src/backend/access/hash/hash.c:422,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hash.c:426,1
    - Dst: _hash_dropscanbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:429,1
    - Dst: HashScanPosInvalidate
      Src: /src/postgres/src/backend/access/hash/hash.c:432,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/hash/hash.c:436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 5
    argNames:
    - scan
    - scankey
    - nscankeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 440
    functionName: hashrescan
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - memcpy
    - _hash_kill_items
    - HashScanPosInvalidate
    - HashScanPosIsValid
    - _hash_dropscanbuf
    linkageType: ''
    returnType: void
    signature: "void hashrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys,\n\t\t
      \  ScanKey orderbys, int norderbys)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HashScanPosIsValid
      Src: /src/postgres/src/backend/access/hash/hash.c:451,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hash.c:455,1
    - Dst: _hash_dropscanbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:458,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hash.c:461,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hash.c:462,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 464
    functionName: hashendscan
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - pfree
    - HashScanPosIsValid
    - _hash_kill_items
    - _hash_dropscanbuf
    linkageType: ''
    returnType: void
    signature: void hashendscan(IndexScanDesc scan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hash.c:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - callback_private_data
    - per_buffer_data
    argTypes:
    - ReadStream*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 485
    functionName: hash_bulkdelete_read_stream_cb
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - BUCKET_TO_BLKNO
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber hash_bulkdelete_read_stream_cb(ReadStream *stream,\n\t\t\t\t\t\t\t
      \  void *callback_private_data,\n\t\t\t\t\t\t\t   void *per_buffer_data)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hash.c:524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:525,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/hash/hash.c:543,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hash.c:564,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/hash/hash.c:572,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:573,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash.c:573,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/hash/hash.c:574,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hash.c:575,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:577,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash.c:578,1
    - Dst: H_BUCKET_BEING_SPLIT
      Src: /src/postgres/src/backend/access/hash/hash.c:585,1
    - Dst: H_NEEDS_SPLIT_CLEANUP
      Src: /src/postgres/src/backend/access/hash/hash.c:586,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:599,1
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hash.c:602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:603,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/hash/hash.c:613,1
    - Dst: hashbucketcleanup
      Src: /src/postgres/src/backend/access/hash/hash.c:619,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:626,1
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/hash/hash.c:632,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:633,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:636,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash.c:637,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:637,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:642,1
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hash.c:643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:644,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/hash/hash.c:651,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:656,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/hash/hash.c:656,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/hash/hash.c:657,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:660,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash.c:686,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hash.c:689,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:695,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hash.c:696,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:698,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:700,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hash.c:703,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash.c:705,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:705,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:707,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:709,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/hash/hash.c:713,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 86
    argCount: 4
    argNames:
    - info
    - stats
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 497
    functionDepth: 4
    functionLinenumber: 497
    functionLinenumberEnd: 720
    functionName: hashbulkdelete
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - read_stream_next_buffer
    - XLogInsert
    - H_BUCKET_BEING_SPLIT
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - read_stream_begin_relation
    - _hash_dropbuf
    - XLogBeginInsert
    - Assert
    - _hash_getcachedmetap
    - XLogGetFakeLSN
    - BufferIsInvalid
    - LockBufferForCleanup
    - read_stream_reset
    - HashPageGetMeta
    - PageSetLSN
    - palloc0_object
    - read_stream_end
    - _hash_getbuf
    - H_NEEDS_SPLIT_CLEANUP
    - BufferIsValid
    - MarkBufferDirty
    - XLogRegisterBuffer
    - HashPageGetOpaque
    - BUCKET_TO_BLKNO
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - hashbucketcleanup
    - _hash_relbuf
    - END_CRIT_SECTION
    - _hash_checkpage
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\nhashbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult
      *stats,\n\t\t\t   IndexBulkDeleteCallback callback, void *callback_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/hash/hash.c:739,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 743
    functionName: hashvacuumcleanup
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - RelationGetNumberOfBlocks
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: 'IndexBulkDeleteResult *

      hashvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: _hash_get_newbucket_from_oldbucket
      Src: /src/postgres/src/backend/access/hash/hash.c:784,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/hash/hash.c:800,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:802,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash.c:803,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hash.c:806,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hash.c:809,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hash.c:816,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hash.c:817,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/hash/hash.c:824,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/access/hash/hash.c:833,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hash.c:833,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:846,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:878,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hash.c:880,1
    - Dst: H_HAS_DEAD_TUPLES
      Src: /src/postgres/src/backend/access/hash/hash.c:889,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash.c:895,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hash.c:898,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:905,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hash.c:906,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:917,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:920,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hash.c:921,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:924,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hash.c:927,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash.c:929,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:929,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:931,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hash.c:935,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hash.c:938,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:947,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:949,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:961,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:962,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:976,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash.c:977,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:980,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash.c:983,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hash.c:986,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:988,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:989,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:991,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hash.c:994,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash.c:996,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:998,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hash.c:1006,1
    - Dst: _hash_squeezebucket
      Src: /src/postgres/src/backend/access/hash/hash.c:1007,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:1010,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 91
    argCount: 13
    argNames:
    - rel
    - cur_bucket
    - bucket_buf
    - bucket_blkno
    - bstrategy
    - maxbucket
    - highmask
    - lowmask
    - tuples_removed
    - num_index_tuples
    - split_cleanup
    - callback
    - callback_state
    argTypes:
    - Relation
    - Bucket
    - Buffer
    - BlockNumber
    - BufferAccessStrategy
    - uint32
    - uint32
    - uint32
    - double*
    - double*
    - bool
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 766
    functionDepth: 7
    functionLinenumber: 766
    functionLinenumberEnd: 1011
    functionName: hashbucketcleanup
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 1
    functionsReached:
    - callback
    - XLogInsert
    - BlockNumberIsValid
    - LockBuffer
    - BufferGetPage
    - PageIndexMultiDelete
    - XLogRegisterData
    - PageGetItem
    - vacuum_delay_point
    - XLogRegisterBufData
    - H_HAS_DEAD_TUPLES
    - XLogBeginInsert
    - Assert
    - _hash_squeezebucket
    - PageGetMaxOffsetNumber
    - XLogGetFakeLSN
    - PageSetLSN
    - _hash_hashkey2bucket
    - _hash_get_newbucket_from_oldbucket
    - PageGetItemId
    - IsBufferCleanupOK
    - MarkBufferDirty
    - XLogRegisterBuffer
    - _hash_getbuf_with_strategy
    - HashPageGetOpaque
    - OffsetNumberNext
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - _hash_get_indextuple_hashkey
    - _hash_relbuf
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void hashbucketcleanup(Relation rel, Bucket cur_bucket, Buffer bucket_buf,\n\t\t\t\t
      \ BlockNumber bucket_blkno, BufferAccessStrategy bstrategy,\n\t\t\t\t  uint32
      maxbucket, uint32 highmask, uint32 lowmask,\n\t\t\t\t  double *tuples_removed,
      double *num_index_tuples,\n\t\t\t\t  bool split_cleanup,\n\t\t\t\t  IndexBulkDeleteCallback
      callback, void *callback_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - strategy
    - opfamily
    argTypes:
    - StrategyNumber
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 1013
    functionDepth: 0
    functionLinenumber: 1013
    functionLinenumberEnd: 1019
    functionName: hashtranslatestrategy
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CompareType
    signature: CompareType hashtranslatestrategy(StrategyNumber strategy, Oid opfamily)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cmptype
    - opfamily
    argTypes:
    - CompareType
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1027
    functionName: hashtranslatecmptype
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: StrategyNumber
    signature: StrategyNumber hashtranslatecmptype(CompareType cmptype, Oid opfamily)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/hash/hashsort.c:62,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/hash/hashsort.c:74,1
    - Dst: tuplesort_begin_index_hash
      Src: /src/postgres/src/backend/access/hash/hashsort.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - heap
    - index
    - num_buckets
    argTypes:
    - Relation
    - Relation
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 59
    functionDepth: 3
    functionLinenumber: 59
    functionLinenumberEnd: 93
    functionName: _h_spoolinit
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsort.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - tuplesort_begin_index_hash
    - pg_nextpower2_32
    linkageType: ''
    returnType: HSpool
    signature: 'HSpool *

      _h_spoolinit(Relation heap, Relation index, uint32 num_buckets)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/hash/hashsort.c:101,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashsort.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hspool
    argTypes:
    - HSpool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: _h_spooldestroy
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsort.c
    functionUses: 1
    functionsReached:
    - pfree
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: void _h_spooldestroy(HSpool *hspool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_putindextuplevalues
      Src: /src/postgres/src/backend/access/hash/hashsort.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - hspool
    - self
    - values
    - isnull
    argTypes:
    - HSpool*
    - ItemPointerData*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 113
    functionName: _h_spool
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsort.c
    functionUses: 1
    functionsReached:
    - tuplesort_putindextuplevalues
    linkageType: ''
    returnType: void
    signature: void _h_spool(HSpool *hspool, const ItemPointerData *self, const Datum
      *values, const bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/hash/hashsort.c:128,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/hash/hashsort.c:130,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/access/hash/hashsort.c:142,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashsort.c:142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsort.c:145,1
    - Dst: _hash_doinsert
      Src: /src/postgres/src/backend/access/hash/hashsort.c:149,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/hash/hashsort.c:152,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/hash/hashsort.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - hspool
    - heapRel
    argTypes:
    - HSpool*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 119
    functionDepth: 5
    functionLinenumber: 119
    functionLinenumberEnd: 157
    functionName: _h_indexbuild
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsort.c
    functionUses: 1
    functionsReached:
    - _hash_doinsert
    - _hash_hashkey2bucket
    - Assert
    - tuplesort_performsort
    - tuplesort_getindextuple
    - CHECK_FOR_INTERRUPTS
    - _hash_get_indextuple_hashkey
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void _h_indexbuild(HSpool *hspool, Relation heapRel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:33,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:36,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:37,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:37,1
    - Dst: _hash_init_metabuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:38,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:40,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:41,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:42,1
    - Dst: XLogFlushBufferForRedoIfInit
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:43,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 26
    functionDepth: 4
    functionLinenumber: 26
    functionLinenumberEnd: 47
    functionName: hash_xlog_init_meta_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - XLogInitBufferForRedo
    - BufferGetPage
    - XLogFlushBufferForRedoIfInit
    - BufferIsValid
    - PageSetLSN
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - _hash_init_metabuffer
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void hash_xlog_init_meta_page(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:62,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:67,1
    - Dst: _hash_initbitmapbuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:68,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:69,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:69,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:70,1
    - Dst: XLogFlushBufferForRedoIfInit
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:71,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:72,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:75,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:83,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:84,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:90,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:91,1
    - Dst: XLogFlushBufferForRedoIfInit
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:92,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:94,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 52
    functionDepth: 5
    functionLinenumber: 52
    functionLinenumberEnd: 96
    functionName: hash_xlog_init_bitmap_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - _hash_initbitmapbuffer
    - XLogReadBufferForRedo
    - XLogInitBufferForRedo
    - XLogRecGetData
    - BufferGetPage
    - XLogFlushBufferForRedoIfInit
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - HashPageGetMeta
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void hash_xlog_init_bitmap_page(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:106,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:110,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:113,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:115,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:117,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:118,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:120,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:121,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:123,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:124,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:126,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:134,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:135,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:138,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:139,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:141,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:142,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 143
    functionName: hash_xlog_insert
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogReadBufferForRedo
    - XLogRecGetData
    - BufferGetPage
    - PageAddItem
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - HashPageGetMeta
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void hash_xlog_insert(XLogReaderState *record)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:152,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:166,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:167,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:170,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:170,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:174,1
    - Dst: _hash_initbuf
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:175,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:178,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:179,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:182,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:183,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:185,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:190,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:191,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:194,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:195,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:198,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:199,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:200,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:208,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:212,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:214,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:218,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:220,1
    - Dst: SETBIT
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:223,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:225,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:226,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:228,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:229,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:232,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:236,1
    - Dst: _hash_initbitmapbuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:238,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:241,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:243,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:244,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:244,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:246,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:249,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:255,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:258,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:259,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:268,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:268,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:276,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:277,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:279,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:280,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 65
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 148
    functionDepth: 5
    functionLinenumber: 148
    functionLinenumberEnd: 281
    functionName: hash_xlog_add_ovfl_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - BlockNumberIsValid
    - BufferGetPage
    - XLogRecHasBlockRef
    - XLogRecGetBlockTag
    - XLogRecGetBlockData
    - Assert
    - SETBIT
    - BufferGetBlockNumber
    - XLogInitBufferForRedo
    - UnlockReleaseBuffer
    - HashPageGetMeta
    - PageSetLSN
    - _hash_initbuf
    - BufferIsValid
    - MarkBufferDirty
    - XLogRecGetData
    - HashPageGetBitmap
    - HashPageGetOpaque
    - _hash_initbitmapbuffer
    linkageType: ''
    returnType: void
    signature: void hash_xlog_add_ovfl_page(XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:290,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:303,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:314,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:315,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:320,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:321,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:325,1
    - Dst: _hash_initbuf
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:327,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:329,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:330,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:330,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:336,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:337,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:338,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:339,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:349,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:358,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:359,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:362,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:391,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:392,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:392,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:395,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:396,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 286
    functionDepth: 4
    functionLinenumber: 286
    functionLinenumberEnd: 397
    functionName: hash_xlog_split_allocate_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - HashPageGetOpaque
    - XLogRecGetBlockData
    - XLogReadBufferForRedo
    - XLogReadBufferForRedoExtended
    - XLogRecGetData
    - BufferGetPage
    - _hash_initbuf
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - HashPageGetMeta
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void hash_xlog_split_allocate_page(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:407,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:408,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 411
    functionName: hash_xlog_split_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogReadBufferForRedo
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void hash_xlog_split_page(XLogReaderState *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:420,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:426,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:437,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:438,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:442,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:443,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:445,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:446,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:449,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:460,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:461,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:465,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:466,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:468,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:469,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 416
    functionDepth: 4
    functionLinenumber: 416
    functionLinenumberEnd: 470
    functionName: hash_xlog_split_complete
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - HashPageGetOpaque
    - XLogReadBufferForRedo
    - XLogRecGetData
    - BufferGetPage
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void hash_xlog_split_complete(XLogReaderState *record)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:479,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:493,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:500,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:502,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:514,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:516,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:530,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:531,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:535,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:546,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:548,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:549,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:553,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:559,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:561,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:572,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:575,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:576,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:587,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:588,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:590,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:591,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:593,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:594,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 595
    functionName: hash_xlog_move_page_contents
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - XLogReadBufferForRedo
    - XLogReadBufferForRedoExtended
    - XLogRecGetData
    - BufferGetPage
    - PageAddItem
    - PageIndexMultiDelete
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - MAXALIGN
    - IndexTupleSize
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void hash_xlog_move_page_contents(XLogReaderState *record)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:604,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:620,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:627,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:630,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:645,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:647,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:661,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:662,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:666,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:668,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:681,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:688,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:696,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:705,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:706,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:711,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:716,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:718,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:718,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:720,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:728,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:729,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:731,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:732,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:736,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:738,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:739,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:743,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:744,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:746,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:747,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:750,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:754,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:756,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:757,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:761,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:762,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:764,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:765,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:768,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:769,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:771,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:772,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:781,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:783,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:789,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:791,1
    - Dst: CLRBIT
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:794,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:796,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:797,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:799,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:800,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:803,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:807,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:815,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:818,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:819,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:822,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:823,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:825,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:826,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 93
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 600
    functionDepth: 4
    functionLinenumber: 600
    functionLinenumberEnd: 828
    functionName: hash_xlog_squeeze_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - XLogReadBufferForRedoExtended
    - BufferGetPage
    - XLogRecHasBlockRef
    - XLogRecGetBlockData
    - elog
    - Assert
    - BufferGetPageSize
    - UnlockReleaseBuffer
    - MAXALIGN
    - HashPageGetMeta
    - PageSetLSN
    - IndexTupleSize
    - CLRBIT
    - _hash_pageinit
    - PageAddItem
    - BufferIsValid
    - MarkBufferDirty
    - XLogRecGetData
    - HashPageGetBitmap
    - HashPageGetOpaque
    linkageType: ''
    returnType: void
    signature: void hash_xlog_squeeze_page(XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:837,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:851,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:858,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:860,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:869,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:871,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:882,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:894,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:898,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:899,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:901,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:902,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:904,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:905,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 833
    functionDepth: 4
    functionLinenumber: 833
    functionLinenumberEnd: 906
    functionName: hash_xlog_delete
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - HashPageGetOpaque
    - XLogReadBufferForRedo
    - XLogReadBufferForRedoExtended
    - XLogRecGetData
    - BufferGetPage
    - PageIndexMultiDelete
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void hash_xlog_delete(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:918,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:922,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:924,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:926,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:927,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:929,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:930,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 911
    functionDepth: 4
    functionLinenumber: 911
    functionLinenumberEnd: 931
    functionName: hash_xlog_split_cleanup
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - HashPageGetOpaque
    - XLogReadBufferForRedo
    - BufferGetPage
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void hash_xlog_split_cleanup(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:941,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:945,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:947,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:948,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:952,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:953,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:955,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:956,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 936
    functionDepth: 4
    functionLinenumber: 936
    functionLinenumberEnd: 957
    functionName: hash_xlog_update_meta_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - XLogRecGetData
    - BufferGetPage
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - HashPageGetMeta
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void hash_xlog_update_meta_page(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:975,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:995,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:996,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1001,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1005,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1007,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1013,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1016,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1017,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1019,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1020,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1022,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1027,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1028,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1032,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1033,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1035,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1036,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 963
    functionDepth: 4
    functionLinenumber: 963
    functionLinenumberEnd: 1037
    functionName: hash_xlog_vacuum_one_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - HashPageGetOpaque
    - ResolveRecoveryConflictWithSnapshot
    - XLogReadBufferForRedo
    - XLogReadBufferForRedoExtended
    - BufferGetPage
    - PageIndexMultiDelete
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRecGetBlockTag
    - HashPageGetMeta
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void hash_xlog_vacuum_one_page(XLogReaderState *record)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1042,1
    - Dst: hash_xlog_init_meta_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1047,1
    - Dst: hash_xlog_init_bitmap_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1050,1
    - Dst: hash_xlog_insert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1053,1
    - Dst: hash_xlog_add_ovfl_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1056,1
    - Dst: hash_xlog_split_allocate_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1059,1
    - Dst: hash_xlog_split_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1062,1
    - Dst: hash_xlog_split_complete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1065,1
    - Dst: hash_xlog_move_page_contents
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1068,1
    - Dst: hash_xlog_squeeze_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1071,1
    - Dst: hash_xlog_delete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1074,1
    - Dst: hash_xlog_split_cleanup
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1077,1
    - Dst: hash_xlog_update_meta_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1080,1
    - Dst: hash_xlog_vacuum_one_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1083,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1086,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1039
    functionDepth: 6
    functionLinenumber: 1039
    functionLinenumberEnd: 1088
    functionName: hash_redo
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - hash_xlog_vacuum_one_page
    - hash_xlog_split_complete
    - hash_xlog_delete
    - hash_xlog_init_bitmap_page
    - hash_xlog_split_allocate_page
    - hash_xlog_squeeze_page
    - hash_xlog_split_page
    - hash_xlog_move_page_contents
    - hash_xlog_update_meta_page
    - hash_xlog_init_meta_page
    - hash_xlog_insert
    - hash_xlog_split_cleanup
    - XLogRecGetInfo
    - hash_xlog_add_ovfl_page
    linkageType: ''
    returnType: void
    signature: void hash_redo(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mask_page_lsn_and_checksum
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1100,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1102,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1103,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1105,1
    - Dst: mask_page_content
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1113,1
    - Dst: mask_lp_flags
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1131
    functionName: hash_mask
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - mask_page_lsn_and_checksum
    - HashPageGetOpaque
    - mask_unused_space
    - mask_lp_flags
    - mask_page_hint_bits
    - mask_page_content
    linkageType: ''
    returnType: void
    signature: void hash_mask(char *pagedata, BlockNumber blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - old_bucket
    - ','
    - lowmask
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: CALC_NEW_BUCKET
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALC_NEW_BUCKET(old_bucket, lowmask)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/hash/hashutil.c:40,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/hash/hashutil.c:50,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/hash/hashutil.c:61,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/hash/hashutil.c:64,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - scan
    - itup
    argTypes:
    - IndexScanDesc
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 30
    functionDepth: 3
    functionLinenumber: 30
    functionLinenumberEnd: 73
    functionName: _hash_checkqual
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 1
    functionsReached:
    - FunctionCall2Coll
    - RelationGetDescr
    - index_getattr
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool _hash_checkqual(IndexScanDesc scan, IndexTuple itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/hash/hashutil.c:88,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/hash/hashutil.c:91,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/hash/hashutil.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rel
    - key
    argTypes:
    - Relation
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 92
    functionName: _hash_datum2hashkey
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 1
    functionsReached:
    - DatumGetUInt32
    - FunctionCall1Coll
    - index_getprocinfo
    linkageType: ''
    returnType: uint32
    signature: uint32 _hash_datum2hashkey(Relation rel, Datum key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/hash/hashutil.c:108,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/hash/hashutil.c:112,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashutil.c:113,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashutil.c:115,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/hash/hashutil.c:118,1
    - Dst: OidFunctionCall1Coll
      Src: /src/postgres/src/backend/access/hash/hashutil.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rel
    - key
    - keytype
    argTypes:
    - Relation
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 119
    functionName: _hash_datum2hashkey_type
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 1
    functionsReached:
    - RegProcedureIsValid
    - elog
    - RelationGetRelationName
    - get_opfamily_proc
    - OidFunctionCall1Coll
    - DatumGetUInt32
    linkageType: ''
    returnType: uint32
    signature: uint32 _hash_datum2hashkey_type(Relation rel, Datum key, Oid keytype)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - hashkey
    - maxbucket
    - highmask
    - lowmask
    argTypes:
    - uint32
    - uint32
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 135
    functionName: _hash_hashkey2bucket
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Bucket
    signature: "Bucket _hash_hashkey2bucket(uint32 hashkey, uint32 maxbucket,\n\t\t\t\t\t
      uint32 highmask, uint32 lowmask)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_ceil_log2_32
      Src: /src/postgres/src/backend/access/hash/hashutil.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - num_bucket
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 141
    functionDepth: 3
    functionLinenumber: 141
    functionLinenumberEnd: 167
    functionName: _hash_spareindex
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 0
    functionsReached:
    - pg_ceil_log2_32
    linkageType: ''
    returnType: uint32
    signature: uint32 _hash_spareindex(uint32 num_bucket)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - splitpoint_phase
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 201
    functionName: _hash_get_totalbuckets
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 _hash_get_totalbuckets(uint32 splitpoint_phase)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashutil.c:212,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/hash/hashutil.c:220,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashutil.c:221,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashutil.c:222,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashutil.c:223,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashutil.c:224,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashutil.c:225,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashutil.c:226,1
    - Dst: PageGetSpecialSize
      Src: /src/postgres/src/backend/access/hash/hashutil.c:231,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashutil.c:231,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashutil.c:232,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashutil.c:233,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashutil.c:234,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashutil.c:235,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashutil.c:236,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashutil.c:237,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashutil.c:241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashutil.c:244,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashutil.c:245,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashutil.c:246,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashutil.c:247,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashutil.c:248,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashutil.c:249,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashutil.c:257,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashutil.c:260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashutil.c:261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashutil.c:262,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashutil.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashutil.c:266,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashutil.c:267,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashutil.c:268,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashutil.c:269,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashutil.c:270,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - rel
    - buf
    - flags
    argTypes:
    - Relation
    - Buffer
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 209
    functionDepth: 4
    functionLinenumber: 209
    functionLinenumberEnd: 272
    functionName: _hash_checkpage
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 6
    functionsReached:
    - PageGetSpecialSize
    - HashPageGetOpaque
    - errcode
    - BufferGetBlockNumber
    - ereport
    - PageIsNew
    - BufferGetPage
    - errhint
    - errmsg
    - RelationGetRelationName
    - MAXALIGN
    - HashPageGetMeta
    linkageType: ''
    returnType: void
    signature: void _hash_checkpage(Relation rel, Buffer buf, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/hash/hashutil.c:281,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/hash/hashutil.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 285
    functionName: hashoptions
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      hashoptions(Datum reloptions, bool validate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IndexInfoFindDataOffset
      Src: /src/postgres/src/backend/access/hash/hashutil.c:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - itup
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 301
    functionName: _hash_get_indextuple_hashkey
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 6
    functionsReached:
    - IndexInfoFindDataOffset
    linkageType: ''
    returnType: uint32
    signature: uint32 _hash_get_indextuple_hashkey(IndexTuple itup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _hash_datum2hashkey
      Src: /src/postgres/src/backend/access/hash/hashutil.c:331,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/access/hash/hashutil.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - index
    - user_values
    - user_isnull
    - index_values
    - index_isnull
    argTypes:
    - Relation
    - Datum*
    - bool*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 317
    functionDepth: 3
    functionLinenumber: 317
    functionLinenumberEnd: 335
    functionName: _hash_convert_tuple
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 2
    functionsReached:
    - UInt32GetDatum
    - _hash_datum2hashkey
    linkageType: ''
    returnType: bool
    signature: "bool _hash_convert_tuple(Relation index,\n\t\t\t\t\tconst Datum *user_values,
      const bool *user_isnull,\n\t\t\t\t\tDatum *index_values, bool *index_isnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashutil.c:356,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashutil.c:366,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashutil.c:366,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashutil.c:368,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashutil.c:368,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashutil.c:369,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - page
    - hash_value
    argTypes:
    - Page
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 349
    functionDepth: 3
    functionLinenumber: 349
    functionLinenumberEnd: 377
    functionName: _hash_binsearch
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 3
    functionsReached:
    - OffsetNumberIsValid
    - Assert
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - _hash_get_indextuple_hashkey
    linkageType: ''
    returnType: OffsetNumber
    signature: OffsetNumber _hash_binsearch(Page page, uint32 hash_value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashutil.c:394,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashutil.c:404,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashutil.c:404,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashutil.c:406,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashutil.c:406,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashutil.c:407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - page
    - hash_value
    argTypes:
    - Page
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 415
    functionName: _hash_binsearch_last
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 1
    functionsReached:
    - OffsetNumberIsValid
    - Assert
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - _hash_get_indextuple_hashkey
    linkageType: ''
    returnType: OffsetNumber
    signature: OffsetNumber _hash_binsearch_last(Page page, uint32 hash_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/backend/access/hash/hashutil.c:438,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashutil.c:441,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashutil.c:442,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashutil.c:442,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hashutil.c:444,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashutil.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - rel
    - new_bucket
    argTypes:
    - Relation
    - Bucket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 421
    functionDepth: 4
    functionLinenumber: 421
    functionLinenumberEnd: 449
    functionName: _hash_get_oldblock_from_newbucket
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 1
    functionsReached:
    - BUCKET_TO_BLKNO
    - _hash_getbuf
    - pg_leftmost_one_pos32
    - BufferGetPage
    - _hash_relbuf
    - HashPageGetMeta
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber _hash_get_oldblock_from_newbucket(Relation rel, Bucket
      new_bucket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashutil.c:468,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashutil.c:469,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashutil.c:469,1
    - Dst: _hash_get_newbucket_from_oldbucket
      Src: /src/postgres/src/backend/access/hash/hashutil.c:471,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hashutil.c:474,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashutil.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - rel
    - old_bucket
    argTypes:
    - Relation
    - Bucket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 460
    functionDepth: 4
    functionLinenumber: 460
    functionLinenumberEnd: 479
    functionName: _hash_get_newblock_from_oldbucket
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 0
    functionsReached:
    - BUCKET_TO_BLKNO
    - _hash_getbuf
    - _hash_get_newbucket_from_oldbucket
    - BufferGetPage
    - _hash_relbuf
    - HashPageGetMeta
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber _hash_get_newblock_from_oldbucket(Relation rel, Bucket
      old_bucket)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CALC_NEW_BUCKET
      Src: /src/postgres/src/backend/access/hash/hashutil.c:499,1
    - Dst: CALC_NEW_BUCKET
      Src: /src/postgres/src/backend/access/hash/hashutil.c:503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - rel
    - old_bucket
    - lowmask
    - maxbucket
    argTypes:
    - Relation
    - Bucket
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 507
    functionName: _hash_get_newbucket_from_oldbucket
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 2
    functionsReached:
    - CALC_NEW_BUCKET
    linkageType: ''
    returnType: Bucket
    signature: "Bucket _hash_get_newbucket_from_oldbucket(Relation rel, Bucket old_bucket,\n\t\t\t\t\t\t\t\t
      \  uint32 lowmask, uint32 maxbucket)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashutil.c:551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashutil.c:552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashutil.c:553,1
    - Dst: HashScanPosIsValid
      Src: /src/postgres/src/backend/access/hash/hashutil.c:553,1
    - Dst: HashScanPosIsPinned
      Src: /src/postgres/src/backend/access/hash/hashutil.c:562,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashutil.c:570,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashutil.c:573,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashutil.c:575,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashutil.c:576,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashutil.c:577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashutil.c:586,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashutil.c:591,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashutil.c:592,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/hash/hashutil.c:594,1
    - Dst: BufferBeginSetHintBits
      Src: /src/postgres/src/backend/access/hash/hashutil.c:603,1
    - Dst: ItemIdMarkDead
      Src: /src/postgres/src/backend/access/hash/hashutil.c:608,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashutil.c:612,1
    - Dst: BufferFinishSetHintBits
      Src: /src/postgres/src/backend/access/hash/hashutil.c:624,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashutil.c:629,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashutil.c:631,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 535
    functionDepth: 4
    functionLinenumber: 535
    functionLinenumberEnd: 632
    functionName: _hash_kill_items
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 4
    functionsReached:
    - HashPageGetOpaque
    - OffsetNumberNext
    - Assert
    - _hash_getbuf
    - BufferFinishSetHintBits
    - LockBuffer
    - BufferGetPage
    - HashScanPosIsPinned
    - HashScanPosIsValid
    - PageGetMaxOffsetNumber
    - PageGetItemId
    - PageGetItem
    - ItemPointerEquals
    - BufferBeginSetHintBits
    - ItemIdMarkDead
    - _hash_relbuf
    linkageType: ''
    returnType: void
    signature: void _hash_kill_items(IndexScanDesc scan)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:58,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:58,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:59,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:60,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:61,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:65,1
    - Dst: get_opfamily_name
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:68,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:71,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:71,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:72,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:72,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:78,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:87,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:88,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:89,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:91,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:99,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:103,1
    - Dst: check_amoptsproc_signature
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:107,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:110,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:111,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:112,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:114,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:122,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:123,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:124,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:126,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:134,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:142,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:148,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:150,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:152,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:161,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:162,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:163,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:165,1
    - Dst: check_amop_signature
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:170,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:174,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:175,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:176,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:178,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:183,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:184,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:186,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:187,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:188,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:190,1
    - Dst: identify_opfamily_groups
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:196,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:200,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:214,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:216,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:218,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:230,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:241,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:242,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:242,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:244,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:245,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:246,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:251,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:252,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:253,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 78
    argCount: 1
    argNames:
    - opclassoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 39
    functionDepth: 3
    functionLinenumber: 39
    functionLinenumberEnd: 256
    functionName: hashvalidate
    functionSourceFile: /src/postgres/src/backend/access/hash/hashvalidate.c
    functionUses: 0
    functionsReached:
    - identify_opfamily_groups
    - errcode
    - format_operator
    - format_procedure
    - check_amop_signature
    - NameStr
    - check_amoptsproc_signature
    - SearchSysCache1
    - elog
    - check_amproc_signature
    - HeapTupleIsValid
    - list_append_unique_oid
    - ReleaseSysCache
    - errmsg
    - OidIsValid
    - list_length
    - ObjectIdGetDatum
    - list_member_oid
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - ereport
    - lfirst
    - GETSTRUCT
    - get_opfamily_name
    - format_type_be
    linkageType: ''
    returnType: bool
    signature: bool hashvalidate(Oid opclassoid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:200,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:214,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:216,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:218,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 222
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/hash/hashvalidate.c
    functionUses: 17
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - lfirst
    - errmsg
    linkageType: ''
    returnType: void
    signature: void foreach(lc, grouplist)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:292,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:295,1
    - Dst: get_opclass_input_type
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:296,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:307,1
    - Dst: opclass_for_family_datatype
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:330,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:334,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 4
    argNames:
    - opfamilyoid
    - opclassoid
    - operators
    - functions
    argTypes:
    - Oid
    - Oid
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 350
    functionName: hashadjustmembers
    functionSourceFile: /src/postgres/src/backend/access/hash/hashvalidate.c
    functionUses: 0
    functionsReached:
    - get_opclass_input_type
    - opclass_for_family_datatype
    - CommandCounterIncrement
    - lfirst
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: "void hashadjustmembers(Oid opfamilyoid,\n\t\t\t\t  Oid opclassoid,\n\t\t\t\t
      \ List *operators,\n\t\t\t\t  List *functions)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:307,1
    - Dst: opclass_for_family_datatype
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:330,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/hash/hashvalidate.c:334,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 349
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/hash/hashvalidate.c
    functionUses: 17
    functionsReached:
    - opclass_for_family_datatype
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, list_concat_copy(operators, functions))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashpage.c:75,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:77,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:80,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - rel
    - blkno
    - access
    - flags
    argTypes:
    - Relation
    - BlockNumber
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 87
    functionName: _hash_getbuf
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 11
    functionsReached:
    - elog
    - LockBuffer
    - ReadBuffer
    - _hash_checkpage
    linkageType: ''
    returnType: Buffer
    signature: Buffer _hash_getbuf(Relation rel, BlockNumber blkno, int access, int
      flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashpage.c:101,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:103,1
    - Dst: ConditionalLockBufferForCleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:105,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:107,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - rel
    - blkno
    - flags
    argTypes:
    - Relation
    - BlockNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 95
    functionDepth: 5
    functionLinenumber: 95
    functionLinenumberEnd: 116
    functionName: _hash_getbuf_with_condlock_cleanup
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 0
    functionsReached:
    - elog
    - ConditionalLockBufferForCleanup
    - ReleaseBuffer
    - ReadBuffer
    - _hash_checkpage
    linkageType: ''
    returnType: Buffer
    signature: Buffer _hash_getbuf_with_condlock_cleanup(Relation rel, BlockNumber
      blkno, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashpage.c:140,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/hash/hashpage.c:142,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hashpage.c:148,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:148,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hashpage.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - blkno
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 134
    functionDepth: 4
    functionLinenumber: 134
    functionLinenumberEnd: 151
    functionName: _hash_getinitbuf
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - elog
    - _hash_pageinit
    - ReadBufferExtended
    - BufferGetPageSize
    - BufferGetPage
    linkageType: ''
    returnType: Buffer
    signature: Buffer _hash_getinitbuf(Relation rel, BlockNumber blkno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:163,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hashpage.c:167,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hashpage.c:167,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - buf
    - max_bucket
    - num_bucket
    - flag
    - initpage
    argTypes:
    - Buffer
    - uint32
    - uint32
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 156
    functionDepth: 4
    functionLinenumber: 156
    functionLinenumberEnd: 181
    functionName: _hash_initbuf
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 2
    functionsReached:
    - HashPageGetOpaque
    - _hash_pageinit
    - BufferGetPageSize
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: "void _hash_initbuf(Buffer buf, uint32 max_bucket, uint32 num_bucket,
      uint32 flag,\n\t\t\t  bool initpage)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocksInFork
      Src: /src/postgres/src/backend/access/hash/hashpage.c:200,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashpage.c:204,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashpage.c:206,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashpage.c:207,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/hash/hashpage.c:212,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/hash/hashpage.c:212,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:214,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashpage.c:215,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:216,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/hash/hashpage.c:220,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hashpage.c:227,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:227,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hashpage.c:227,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - rel
    - blkno
    - forkNum
    argTypes:
    - Relation
    - BlockNumber
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 197
    functionDepth: 4
    functionLinenumber: 197
    functionLinenumberEnd: 230
    functionName: _hash_getnewbuf
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - elog
    - _hash_pageinit
    - ExtendBufferedRel
    - BufferGetBlockNumber
    - ReadBufferExtended
    - RelationGetNumberOfBlocksInFork
    - BufferGetPageSize
    - BMR_REL
    - BufferGetPage
    - RelationGetRelationName
    linkageType: ''
    returnType: Buffer
    signature: Buffer _hash_getnewbuf(Relation rel, BlockNumber blkno, ForkNumber
      forkNum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashpage.c:246,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/hash/hashpage.c:248,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:251,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - rel
    - blkno
    - access
    - flags
    - bstrategy
    argTypes:
    - Relation
    - BlockNumber
    - int
    - int
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 238
    functionDepth: 5
    functionLinenumber: 238
    functionLinenumberEnd: 258
    functionName: _hash_getbuf_with_strategy
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 3
    functionsReached:
    - elog
    - ReadBufferExtended
    - LockBuffer
    - _hash_checkpage
    linkageType: ''
    returnType: Buffer
    signature: "Buffer _hash_getbuf_with_strategy(Relation rel, BlockNumber blkno,\n\t\t\t\t\t\t
      \  int access, int flags,\n\t\t\t\t\t\t   BufferAccessStrategy bstrategy)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 269
    functionName: _hash_relbuf
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 12
    functionsReached:
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void _hash_relbuf(Relation rel, Buffer buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 280
    functionName: _hash_dropbuf
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 5
    functionsReached:
    - ReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void _hash_dropbuf(Relation rel, Buffer buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:292,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:294,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:298,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:300,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:304,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:305,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - rel
    - so
    argTypes:
    - Relation
    - HashScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 311
    functionName: _hash_dropscanbuf
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 3
    functionsReached:
    - _hash_dropbuf
    - BufferIsValid
    linkageType: ''
    returnType: void
    signature: void _hash_dropscanbuf(Relation rel, HashScanOpaque so)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocksInFork
      Src: /src/postgres/src/backend/access/hash/hashpage.c:343,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashpage.c:344,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashpage.c:345,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashpage.c:352,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:361,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:361,1
    - Dst: HashGetTargetPageUsage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:363,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:368,1
    - Dst: _hash_getnewbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:379,1
    - Dst: _hash_init_metabuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:380,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:381,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:383,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashpage.c:384,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:396,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashpage.c:397,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:398,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:400,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:402,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:402,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:413,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/hash/hashpage.c:423,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hashpage.c:425,1
    - Dst: _hash_getnewbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:426,1
    - Dst: _hash_initbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:427,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:428,1
    - Dst: log_newpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:431,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:434,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:436,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:440,1
    - Dst: _hash_getnewbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:445,1
    - Dst: _hash_initbitmapbuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:446,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:447,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashpage.c:452,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashpage.c:453,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashpage.c:454,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashpage.c:455,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:460,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:470,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashpage.c:471,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:472,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:479,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:481,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:483,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:483,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:484,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:484,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:488,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:489,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 59
    argCount: 3
    argNames:
    - rel
    - num_tuples
    - forkNum
    argTypes:
    - Relation
    - double
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 326
    functionDepth: 5
    functionLinenumber: 326
    functionLinenumberEnd: 492
    functionName: _hash_init
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 2
    functionsReached:
    - XLogInsert
    - errcode
    - LockBuffer
    - log_newpage
    - BufferGetPage
    - XLogRegisterData
    - RelationGetRelationName
    - elog
    - XLogBeginInsert
    - HashGetTargetPageUsage
    - _hash_getnewbuf
    - errmsg
    - MAXALIGN
    - HashPageGetMeta
    - PageSetLSN
    - ereport
    - RelationGetNumberOfBlocksInFork
    - CHECK_FOR_INTERRUPTS
    - _hash_initbuf
    - MarkBufferDirty
    - XLogRegisterBuffer
    - _hash_init_metabuffer
    - _hash_initbitmapbuffer
    - BUCKET_TO_BLKNO
    - RelationNeedsWAL
    - index_getprocid
    - _hash_relbuf
    linkageType: ''
    returnType: uint32
    signature: uint32 _hash_init(Relation rel, double num_tuples, ForkNumber forkNum)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _hash_get_totalbuckets
      Src: /src/postgres/src/backend/access/hash/hashpage.c:523,1
    - Dst: _hash_spareindex
      Src: /src/postgres/src/backend/access/hash/hashpage.c:523,1
    - Dst: _hash_spareindex
      Src: /src/postgres/src/backend/access/hash/hashpage.c:525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:526,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:528,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hashpage.c:530,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hashpage.c:530,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:532,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashpage.c:539,1
    - Dst: HashGetMaxBitmapSize
      Src: /src/postgres/src/backend/access/hash/hashpage.c:546,1
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/backend/access/hash/hashpage.c:549,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:550,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:553,1
    - Dst: BMPG_SHIFT
      Src: /src/postgres/src/backend/access/hash/hashpage.c:553,1
    - Dst: BMPG_MASK
      Src: /src/postgres/src/backend/access/hash/hashpage.c:553,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/hash/hashpage.c:572,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/hash/hashpage.c:575,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/hash/hashpage.c:576,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 40
    argCount: 5
    argNames:
    - buf
    - num_tuples
    - procid
    - ffactor
    - initpage
    argTypes:
    - Buffer
    - double
    - RegProcedure
    - uint16
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 497
    functionDepth: 4
    functionLinenumber: 497
    functionLinenumberEnd: 590
    functionName: _hash_init_metabuffer
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 2
    functionsReached:
    - HashPageGetOpaque
    - _hash_pageinit
    - HashGetMaxBitmapSize
    - Assert
    - BMPG_MASK
    - BufferGetPageSize
    - pg_leftmost_one_pos32
    - BufferGetPage
    - pg_nextpower2_32
    - MemSet
    - HashPageGetMeta
    - _hash_get_totalbuckets
    - BMPG_SHIFT
    - _hash_spareindex
    linkageType: ''
    returnType: void
    signature: "void _hash_init_metabuffer(Buffer buf, double num_tuples, RegProcedure
      procid,\n\t\t\t\t\t  uint16 ffactor, bool initpage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/hash/hashpage.c:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - page
    - size
    argTypes:
    - Page
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 599
    functionName: _hash_pageinit
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 7
    functionsReached:
    - PageInit
    linkageType: ''
    returnType: void
    signature: void _hash_pageinit(Page page, Size size)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:641,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:643,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashpage.c:644,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:644,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hashpage.c:690,1
    - Dst: _hash_getbuf_with_condlock_cleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:692,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:696,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:697,1
    - Dst: H_BUCKET_BEING_SPLIT
      Src: /src/postgres/src/backend/access/hash/hashpage.c:707,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:722,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:723,1
    - Dst: _hash_finish_split
      Src: /src/postgres/src/backend/access/hash/hashpage.c:725,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:729,1
    - Dst: H_NEEDS_SPLIT_CLEANUP
      Src: /src/postgres/src/backend/access/hash/hashpage.c:747,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:759,1
    - Dst: hashbucketcleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:761,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:765,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hashpage.c:778,1
    - Dst: _hash_spareindex
      Src: /src/postgres/src/backend/access/hash/hashpage.c:784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:789,1
    - Dst: _hash_get_totalbuckets
      Src: /src/postgres/src/backend/access/hash/hashpage.c:797,1
    - Dst: _hash_alloc_buckets
      Src: /src/postgres/src/backend/access/hash/hashpage.c:798,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:801,1
    - Dst: _hash_getnewbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:817,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hashpage.c:818,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:820,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:821,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:831,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:858,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:871,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:872,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:883,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:885,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:891,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:898,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashpage.c:901,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:910,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:912,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:913,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:914,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashpage.c:919,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashpage.c:920,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashpage.c:926,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashpage.c:928,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashpage.c:933,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:935,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:938,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:940,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:940,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:941,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:941,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:942,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:942,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:944,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:947,1
    - Dst: _hash_splitbucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:950,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:956,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:957,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:965,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 124
    argCount: 2
    argNames:
    - rel
    - metabuf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 613
    functionDepth: 8
    functionLinenumber: 613
    functionLinenumberEnd: 966
    functionName: _hash_expandtable
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - H_BUCKET_BEING_SPLIT
    - LockBuffer
    - _hash_finish_split
    - BufferGetPage
    - XLogRegisterData
    - _hash_dropbuf
    - XLogRegisterBufData
    - XLogBeginInsert
    - Assert
    - _hash_getnewbuf
    - _hash_getbuf_with_condlock_cleanup
    - XLogGetFakeLSN
    - _hash_get_totalbuckets
    - _hash_spareindex
    - HashPageGetMeta
    - PageSetLSN
    - _hash_splitbucket
    - H_NEEDS_SPLIT_CLEANUP
    - _hash_alloc_buckets
    - IsBufferCleanupOK
    - MarkBufferDirty
    - XLogRegisterBuffer
    - HashPageGetOpaque
    - BUCKET_TO_BLKNO
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - hashbucketcleanup
    - _hash_relbuf
    - END_CRIT_SECTION
    - _hash_checkpage
    linkageType: ''
    returnType: void
    signature: void _hash_expandtable(Relation rel, Buffer metabuf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1017,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1019,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1027,1
    - Dst: log_newpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1028,1
    - Dst: PageSetChecksum
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1034,1
    - Dst: smgrextend
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1035,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1035,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - rel
    - firstblock
    - nblocks
    argTypes:
    - Relation
    - BlockNumber
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 993
    functionDepth: 2
    functionLinenumber: 993
    functionLinenumberEnd: 1039
    functionName: _hash_alloc_buckets
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - HashPageGetOpaque
    - _hash_pageinit
    - PageSetChecksum
    - RelationGetSmgr
    - log_newpage
    - RelationNeedsWAL
    - smgrextend
    linkageType: ''
    returnType: bool
    signature: bool _hash_alloc_buckets(Relation rel, BlockNumber firstblock, uint32
      nblocks)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1100,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1101,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1104,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1105,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1108,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1109,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1110,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1125,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1128,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1136,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1136,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1146,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1147,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1150,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1155,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1155,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1165,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1178,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1179,1
    - Dst: PageGetFreeSpaceForMultipleTuples
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1181,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1187,1
    - Dst: _hash_pgaddmultitup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1189,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1190,1
    - Dst: log_split_page
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1192,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1194,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1197,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1201,1
    - Dst: _hash_addovflpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1206,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1207,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1208,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1219,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1227,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1229,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1232,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1238,1
    - Dst: _hash_pgaddmultitup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1240,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1241,1
    - Dst: log_split_page
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1243,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1245,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1248,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1250,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1254,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1259,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1260,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1261,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1272,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1273,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1274,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1276,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1277,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1278,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1280,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1297,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1298,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1300,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1307,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1309,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1311,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1312,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1314,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1317,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1319,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1319,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1320,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1320,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1322,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1332,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1334,1
    - Dst: hashbucketcleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1335,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1336,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1342,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1343,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 98
    argCount: 10
    argNames:
    - rel
    - metabuf
    - obucket
    - nbucket
    - obuf
    - nbuf
    - htab
    - maxbucket
    - highmask
    - lowmask
    argTypes:
    - Relation
    - Buffer
    - Bucket
    - Bucket
    - Buffer
    - Buffer
    - HTAB*
    - uint32
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1074
    functionDepth: 8
    functionLinenumber: 1074
    functionLinenumberEnd: 1345
    functionName: _hash_splitbucket
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - LockBuffer
    - BlockNumberIsValid
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - XLogBeginInsert
    - pfree
    - Assert
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - XLogGetFakeLSN
    - MAXALIGN
    - CopyIndexTuple
    - PageGetFreeSpaceForMultipleTuples
    - _hash_addovflpage
    - IndexTupleSize
    - PageSetLSN
    - _hash_hashkey2bucket
    - _hash_getbuf
    - ItemIdIsDead
    - PageGetItemId
    - IsBufferCleanupOK
    - MarkBufferDirty
    - XLogRegisterBuffer
    - HashPageGetOpaque
    - OffsetNumberNext
    - hash_search
    - PredicateLockPageSplit
    - log_split_page
    - START_CRIT_SECTION
    - _hash_pgaddmultitup
    - RelationNeedsWAL
    - hashbucketcleanup
    - _hash_get_indextuple_hashkey
    - _hash_relbuf
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void _hash_splitbucket(Relation rel,\n\t\t\t\t  Buffer metabuf,\n\t\t\t\t
      \ Bucket obucket,\n\t\t\t\t  Bucket nbucket,\n\t\t\t\t  Buffer obuf,\n\t\t\t\t
      \ Buffer nbuf,\n\t\t\t\t  HTAB *htab,\n\t\t\t\t  uint32 maxbucket,\n\t\t\t\t
      \ uint32 highmask,\n\t\t\t\t  uint32 lowmask)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1380,1
    - Dst: _hash_get_newblock_from_oldbucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1385,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1395,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1402,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1403,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1406,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1409,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1414,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1415,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1417,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1419,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1429,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1431,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1434,1
    - Dst: ConditionalLockBufferForCleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1444,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1446,1
    - Dst: ConditionalLockBufferForCleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1449,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1451,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1452,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1456,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1457,1
    - Dst: _hash_splitbucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1460,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1464,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1465,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 7
    argNames:
    - rel
    - metabuf
    - obuf
    - obucket
    - maxbucket
    - highmask
    - lowmask
    argTypes:
    - Relation
    - Buffer
    - Buffer
    - Bucket
    - uint32
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1466
      start: 1359
    functionDepth: 9
    functionLinenumber: 1359
    functionLinenumberEnd: 1466
    functionName: _hash_finish_split
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 2
    functionsReached:
    - _hash_dropbuf
    - HashPageGetOpaque
    - OffsetNumberNext
    - hash_search
    - ConditionalLockBufferForCleanup
    - _hash_splitbucket
    - _hash_getbuf
    - Assert
    - LockBuffer
    - BlockNumberIsValid
    - BufferGetPage
    - hash_create
    - _hash_get_newblock_from_oldbucket
    - PageGetMaxOffsetNumber
    - PageGetItem
    - PageGetItemId
    - hash_destroy
    - _hash_relbuf
    linkageType: ''
    returnType: void
    signature: "void _hash_finish_split(Relation rel, Buffer metabuf, Buffer obuf,
      Bucket obucket,\n\t\t\t\t   uint32 maxbucket, uint32 highmask, uint32 lowmask)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1480,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1484,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1486,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1488,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1490,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1477
    functionDepth: 4
    functionLinenumber: 1477
    functionLinenumberEnd: 1492
    functionName: log_split_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 2
    functionsReached:
    - XLogInsert
    - XLogBeginInsert
    - BufferGetPage
    - RelationNeedsWAL
    - XLogRegisterBuffer
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void log_split_page(Relation rel, Buffer buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1509,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1521,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1525,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1526,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1528,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1530,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1535,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1535,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1539,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - rel
    - metabuf
    - force_refresh
    argTypes:
    - Relation
    - Buffer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1504
    functionDepth: 6
    functionLinenumber: 1504
    functionLinenumberEnd: 1543
    functionName: _hash_getcachedmetap
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - memcpy
    - MemoryContextAlloc
    - Assert
    - _hash_getbuf
    - LockBuffer
    - BufferGetPage
    - BufferIsValid
    - HashPageGetMeta
    linkageType: ''
    returnType: HashMetaPage
    signature: HashMetaPage _hash_getcachedmetap(Relation rel, Buffer *metabuf, bool
      force_refresh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1575,1
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1578,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1588,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1593,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1596,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1597,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1599,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1600,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1609,1
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1610,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1611,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1614,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1615,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - rel
    - hashkey
    - access
    - cachedmetap
    argTypes:
    - Relation
    - uint32
    - int
    - HashMetaPage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1562
    functionDepth: 7
    functionLinenumber: 1562
    functionLinenumberEnd: 1621
    functionName: _hash_getbucketbuf_from_hashkey
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 2
    functionsReached:
    - _hash_dropbuf
    - HashPageGetOpaque
    - BUCKET_TO_BLKNO
    - Assert
    - _hash_getbuf
    - _hash_hashkey2bucket
    - BufferGetPage
    - _hash_getcachedmetap
    - BufferIsValid
    - _hash_relbuf
    linkageType: ''
    returnType: Buffer
    signature: "Buffer _hash_getbucketbuf_from_hashkey(Relation rel, uint32 hashkey,
      int access,\n\t\t\t\t\t\t\t\tHashMetaPage *cachedmetap)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:155,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:156,1
    - Dst: PageGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:160,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:161,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:164,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:166,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:167,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:167,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:172,1
    - Dst: BTGetFillFactor
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:173,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:181,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:190,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:190,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:200,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:209,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:211,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:215,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:216,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:216,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:226,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:228,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:235,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:241,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:252,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:254,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:261,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:262,1
    - Dst: _bt_afternewitemoff
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:293,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:316,1
    - Dst: _bt_deltasortsplits
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:346,1
    - Dst: _bt_defaultinterval
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:349,1
    - Dst: _bt_strategy
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:400,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:402,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:403,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:409,1
    - Dst: _bt_deltasortsplits
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:414,1
    - Dst: _bt_bestsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:424,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:426,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 91
    argCount: 6
    argNames:
    - rel
    - origpage
    - newitemoff
    - newitemsz
    - newitem
    - newitemonleft
    argTypes:
    - Relation
    - Page
    - OffsetNumber
    - Size
    - IndexTuple
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 429
    functionName: _bt_findsplitloc
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 0
    functionsReached:
    - BTreeTupleIsPosting
    - P_RIGHTMOST
    - palloc_array
    - RelationGetRelationName
    - _bt_recsplitloc
    - elog
    - PageGetExactFreeSpace
    - Assert
    - pfree
    - _bt_defaultinterval
    - _bt_strategy
    - PageGetMaxOffsetNumber
    - IndexRelationGetNumberOfKeyAttributes
    - MAXALIGN
    - P_ISLEAF
    - PageGetItemId
    - _bt_afternewitemoff
    - _bt_deltasortsplits
    - P_FIRSTDATAKEY
    - BTPageGetOpaque
    - OffsetNumberNext
    - BTGetFillFactor
    - _bt_bestsplitloc
    - ItemIdGetLength
    - PageGetPageSize
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber _bt_findsplitloc(Relation rel,\n\t\t\t\t Page origpage,\n\t\t\t\t
      OffsetNumber newitemoff,\n\t\t\t\t Size newitemsz,\n\t\t\t\t IndexTuple newitem,\n\t\t\t\t
      bool *newitemonleft)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:487,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:488,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:490,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:491,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:492,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:526,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:548,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:551,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 5
    argNames:
    - state
    - firstrightoff
    - newitemonleft
    - olddataitemstoleft
    - firstrightofforigpagetuplesz
    argTypes:
    - FindSplitData*
    - OffsetNumber
    - bool
    - int
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 449
    functionDepth: 3
    functionLinenumber: 449
    functionLinenumberEnd: 560
    functionName: _bt_recsplitloc
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - BTreeTupleIsPosting
    - Assert
    - PageGetItemId
    - PageGetItem
    - BTreeTupleGetPostingOffset
    - Min
    - MAXALIGN
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void _bt_recsplitloc(FindSplitData *state,\n\t\t\t\tOffsetNumber firstrightoff,\n\t\t\t\tbool
      newitemonleft,\n\t\t\t\tint olddataitemstoleft,\n\t\t\t\tSize firstrightofforigpagetuplesz)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:588,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - state
    - fillfactormult
    - usemult
    argTypes:
    - FindSplitData*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 589
    functionName: _bt_deltasortsplits
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - qsort
    linkageType: ''
    returnType: void
    signature: "void _bt_deltasortsplits(FindSplitData *state, double fillfactormult,\n\t\t\t\t\tbool
      usemult)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s16
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 601
    functionName: _bt_splitcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s16
    linkageType: ''
    returnType: int
    signature: int _bt_splitcmp(const void *arg1, const void *arg2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:639,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:641,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:674,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:689,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:690,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:691,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:715,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:715,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:716,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:718,1
    - Dst: _bt_adjacenthtid
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:719,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:722,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 4
    argNames:
    - state
    - maxoff
    - leaffillfactor
    - usemult
    argTypes:
    - FindSplitData*
    - OffsetNumber
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 740
    functionName: _bt_afternewitemoff
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - _bt_keep_natts_fast
    - BTreeTupleIsPosting
    - Assert
    - OffsetNumberPrev
    - PageGetItemId
    - PageGetItem
    - IndexRelationGetNumberOfKeyAttributes
    - MAXALIGN
    - _bt_adjacenthtid
    linkageType: ''
    returnType: bool
    signature: "bool _bt_afternewitemoff(FindSplitData *state, OffsetNumber maxoff,\n\t\t\t\t\tint
      leaffillfactor, bool *usemult)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:755,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:756,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:764,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - lowhtid
    - highhtid
    argTypes:
    - ItemPointerData*
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 749
    functionDepth: 3
    functionLinenumber: 749
    functionLinenumberEnd: 768
    functionName: _bt_adjacenthtid
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - ItemPointerGetBlockNumber
    - ItemPointerGetOffsetNumber
    linkageType: ''
    returnType: bool
    signature: bool _bt_adjacenthtid(const ItemPointerData *lowhtid, const ItemPointerData
      *highhtid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:794,1
    - Dst: _bt_split_penalty
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:803,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 4
    argNames:
    - state
    - perfectpenalty
    - newitemonleft
    - strategy
    argTypes:
    - FindSplitData*
    - int
    - bool*
    - FindSplitStrat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 848
    functionName: _bt_bestsplitloc
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - Min
    - _bt_split_penalty
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber _bt_bestsplitloc(FindSplitData *state, int perfectpenalty,\n\t\t\t\t
      bool *newitemonleft, FindSplitStrat strategy)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - FindSplitData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 876
    functionDepth: 0
    functionLinenumber: 876
    functionLinenumberEnd: 921
    functionName: _bt_defaultinterval
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _bt_defaultinterval(FindSplitData *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:943,1
    - Dst: _bt_interval_edges
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:962,1
    - Dst: _bt_split_lastleft
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:963,1
    - Dst: _bt_split_firstright
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:964,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:971,1
    - Dst: _bt_split_lastleft
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:983,1
    - Dst: _bt_split_firstright
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:984,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:992,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1028,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1029,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1030,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 4
    argNames:
    - state
    - leftpage
    - rightpage
    - strategy
    argTypes:
    - FindSplitData*
    - SplitPoint*
    - SplitPoint*
    - FindSplitStrat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 934
    functionDepth: 2
    functionLinenumber: 934
    functionLinenumberEnd: 1045
    functionName: _bt_strategy
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - _bt_keep_natts_fast
    - _bt_interval_edges
    - PageGetItemId
    - PageGetItem
    - IndexRelationGetNumberOfKeyAttributes
    - _bt_split_firstright
    - _bt_split_lastleft
    linkageType: ''
    returnType: int
    signature: "int _bt_strategy(FindSplitData *state, SplitPoint *leftpage,\n\t\t\t
      SplitPoint *rightpage, FindSplitStrat *strategy)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1088,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1098,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1105,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1116,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 3
    argNames:
    - state
    - leftinterval
    - rightinterval
    argTypes:
    - FindSplitData*
    - SplitPoint**
    - SplitPoint**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1052
    functionDepth: 1
    functionLinenumber: 1052
    functionLinenumberEnd: 1117
    functionName: _bt_interval_edges
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - Assert
    - Min
    linkageType: ''
    returnType: void
    signature: "void _bt_interval_edges(FindSplitData *state, SplitPoint **leftinterval,\n\t\t\t\t
      \  SplitPoint **rightinterval)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1145,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1147,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1147,1
    - Dst: _bt_split_lastleft
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1150,1
    - Dst: _bt_split_firstright
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1151,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - state
    - split
    argTypes:
    - FindSplitData*
    - SplitPoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1154
    functionName: _bt_split_penalty
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - _bt_keep_natts_fast
    - PageGetItemId
    - _bt_split_firstright
    - MAXALIGN
    - ItemIdGetLength
    - _bt_split_lastleft
    linkageType: ''
    returnType: int
    signature: int _bt_split_penalty(FindSplitData *state, SplitPoint *split)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1167,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1168,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - state
    - split
    argTypes:
    - FindSplitData*
    - SplitPoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1159
    functionDepth: 2
    functionLinenumber: 1159
    functionLinenumberEnd: 1170
    functionName: _bt_split_lastleft
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 2
    functionsReached:
    - PageGetItem
    - OffsetNumberPrev
    - PageGetItemId
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple _bt_split_lastleft(FindSplitData *state, SplitPoint *split)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1183,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - state
    - split
    argTypes:
    - FindSplitData*
    - SplitPoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1175
    functionDepth: 2
    functionLinenumber: 1175
    functionLinenumberEnd: 1185
    functionName: _bt_split_firstright
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 2
    functionsReached:
    - PageGetItem
    - PageGetItemId
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple _bt_split_firstright(FindSplitData *state, SplitPoint *split)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:59,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:59,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:60,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:61,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:62,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:66,1
    - Dst: get_opfamily_name
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:69,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:72,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:72,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:73,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:73,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:79,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:86,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:91,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:95,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:103,1
    - Dst: check_amoptsproc_signature
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:107,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:110,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:114,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:115,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:116,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:118,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:126,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:127,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:128,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:130,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:146,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:147,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:148,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:150,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:157,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:159,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:160,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:161,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:163,1
    - Dst: check_amop_signature
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:172,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:174,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:176,1
    - Dst: identify_opfamily_groups
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:182,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:188,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:215,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:216,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:232,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:234,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:242,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:244,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:254,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:256,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:268,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:268,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:272,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:277,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:278,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:279,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 87
    argCount: 1
    argNames:
    - opclassoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 39
    functionDepth: 3
    functionLinenumber: 39
    functionLinenumberEnd: 282
    functionName: btvalidate
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtvalidate.c
    functionUses: 0
    functionsReached:
    - identify_opfamily_groups
    - errcode
    - format_operator
    - format_procedure
    - check_amop_signature
    - NameStr
    - check_amoptsproc_signature
    - SearchSysCache1
    - elog
    - check_amproc_signature
    - HeapTupleIsValid
    - list_append_unique_oid
    - ReleaseSysCache
    - errmsg
    - OidIsValid
    - list_length
    - ObjectIdGetDatum
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - ereport
    - lfirst
    - GETSTRUCT
    - get_opfamily_name
    - format_type_be
    linkageType: ''
    returnType: bool
    signature: bool btvalidate(Oid opclassoid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:188,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:215,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:216,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:232,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:234,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:242,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:244,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:245,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 248
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtvalidate.c
    functionUses: 17
    functionsReached:
    - format_type_be
    - errcode
    - list_append_unique_oid
    - ereport
    - lfirst
    - errmsg
    linkageType: ''
    returnType: void
    signature: void foreach(lc, grouplist)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:317,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:320,1
    - Dst: get_opclass_input_type
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:321,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:332,1
    - Dst: opclass_for_family_datatype
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:355,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:359,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 4
    argNames:
    - opfamilyoid
    - opclassoid
    - operators
    - functions
    argTypes:
    - Oid
    - Oid
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 375
    functionName: btadjustmembers
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtvalidate.c
    functionUses: 0
    functionsReached:
    - get_opclass_input_type
    - opclass_for_family_datatype
    - CommandCounterIncrement
    - lfirst
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: "void btadjustmembers(Oid opfamilyoid,\n\t\t\t\tOid opclassoid,\n\t\t\t\tList
      *operators,\n\t\t\t\tList *functions)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:332,1
    - Dst: opclass_for_family_datatype
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:355,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtvalidate.c:359,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 374
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtvalidate.c
    functionUses: 17
    functionsReached:
    - opclass_for_family_datatype
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, list_concat_copy(operators, functions))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:74,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:76,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - page
    - rootbknum
    - level
    - allequalimage
    argTypes:
    - Page
    - BlockNumber
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 97
    functionName: _bt_initmetapage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - _bt_pageinit
    - BTPageGetOpaque
    - BTPageGetMeta
    linkageType: ''
    returnType: void
    signature: "void _bt_initmetapage(Page page, BlockNumber rootbknum, uint32 level,\n\t\t\t\t
      bool allequalimage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:113,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:119,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 132
    functionName: _bt_upgrademetapage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - Assert
    - BTPageGetOpaque
    - BTPageGetMeta
    linkageType: ''
    returnType: void
    signature: void _bt_upgrademetapage(Page page)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:149,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:150,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:151,1
    - Dst: P_ISMETA
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:158,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:163,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:164,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:165,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:167,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - rel
    - metabuf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 142
    functionDepth: 4
    functionLinenumber: 142
    functionLinenumberEnd: 171
    functionName: _bt_getmeta
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - P_ISMETA
    - errcode
    - ereport
    - BTPageGetMeta
    - BufferGetPage
    - errmsg
    - RelationGetRelationName
    - BTPageGetOpaque
    linkageType: ''
    returnType: BTMetaPageData
    signature: 'BTMetaPageData *

      _bt_getmeta(Relation rel, Buffer metabuf)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:193,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:194,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:195,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:204,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:209,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 179
    functionDepth: 4
    functionLinenumber: 179
    functionLinenumberEnd: 224
    functionName: _bt_vacuum_needs_cleanup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - BTPageGetMeta
    - BufferGetPage
    - RelationGetNumberOfBlocks
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: bool
    signature: bool _bt_vacuum_needs_cleanup(Relation rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:258,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:259,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:260,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:267,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:272,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:273,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:275,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:279,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:284,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:287,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:291,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:294,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:303,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:305,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:308,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:310,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:312,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 2
    argNames:
    - rel
    - num_delpages
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 232
    functionDepth: 4
    functionLinenumber: 232
    functionLinenumberEnd: 315
    functionName: _bt_set_cleanup_info
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - XLogRegisterBufData
    - XLogInsert
    - XLogBeginInsert
    - _bt_lockbuf
    - Assert
    - _bt_upgrademetapage
    - BTPageGetMeta
    - START_CRIT_SECTION
    - BufferGetPage
    - RelationNeedsWAL
    - XLogGetFakeLSN
    - PageSetLSN
    - MarkBufferDirty
    - _bt_getbuf
    - XLogRegisterBuffer
    - _bt_unlockbuf
    - END_CRIT_SECTION
    - _bt_relbuf
    linkageType: ''
    returnType: void
    signature: void _bt_set_cleanup_info(Relation rel, BlockNumber num_delpages)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:358,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:372,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:374,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:377,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:380,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:381,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:382,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:391,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:393,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:394,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:399,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:402,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:406,1
    - Dst: _bt_getmeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:407,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:417,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:422,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:423,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:438,1
    - Dst: _bt_getroot
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:439,1
    - Dst: _bt_allocbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:447,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:448,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:449,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:450,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:456,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:459,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:463,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:472,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:473,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:476,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:481,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:482,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:485,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:494,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:499,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:501,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:504,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:506,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:507,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:509,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:516,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:517,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:520,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:525,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:531,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:533,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:543,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:544,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:545,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:547,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:551,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:552,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:553,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:558,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:559,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 102
    argCount: 3
    argNames:
    - rel
    - heaprel
    - access
    argTypes:
    - Relation
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 346
    functionDepth: 5
    functionLinenumber: 346
    functionLinenumberEnd: 568
    functionName: _bt_getroot
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - _bt_relandgetbuf
    - P_RIGHTMOST
    - BufferGetPage
    - XLogRegisterData
    - _bt_getroot
    - RelationGetRelationName
    - XLogRegisterBufData
    - elog
    - memcpy
    - XLogBeginInsert
    - Assert
    - pfree
    - _bt_lockbuf
    - BufferGetBlockNumber
    - XLogGetFakeLSN
    - _bt_unlockbuf
    - PageSetLSN
    - _bt_getmeta
    - _bt_allocbuf
    - P_LEFTMOST
    - MarkBufferDirty
    - BTPageGetOpaque
    - P_IGNORE
    - XLogRegisterBuffer
    - MemoryContextAlloc
    - _bt_upgrademetapage
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - _bt_getbuf
    - END_CRIT_SECTION
    - _bt_relbuf
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_getroot(Relation rel, Relation heaprel, int access)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:602,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:605,1
    - Dst: _bt_getmeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:606,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:611,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:626,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:627,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:628,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:630,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:634,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:635,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:636,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:641,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:642,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 584
    functionDepth: 5
    functionLinenumber: 584
    functionLinenumberEnd: 646
    functionName: _bt_gettrueroot
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - elog
    - P_IGNORE
    - _bt_getmeta
    - _bt_relandgetbuf
    - pfree
    - P_RIGHTMOST
    - BufferGetPage
    - RelationGetRelationName
    - BTPageGetOpaque
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_gettrueroot(Relation rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:668,1
    - Dst: _bt_getmeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:669,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:678,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:685,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:687,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:688,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:694,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:695,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:696,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:699,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 659
    functionDepth: 5
    functionLinenumber: 659
    functionLinenumberEnd: 702
    functionName: _bt_getrootheight
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - _bt_getmeta
    - memcpy
    - MemoryContextAlloc
    - Assert
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: int
    signature: int _bt_getrootheight(Relation rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:732,1
    - Dst: _bt_getmeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:733,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:745,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:758,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:760,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:761,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:768,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:770,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:772,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - rel
    - heapkeyspace
    - allequalimage
    argTypes:
    - Relation
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 723
    functionDepth: 5
    functionLinenumber: 723
    functionLinenumberEnd: 776
    functionName: _bt_metaversion
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - _bt_getmeta
    - memcpy
    - MemoryContextAlloc
    - Assert
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: void
    signature: void _bt_metaversion(Relation rel, bool *heapkeyspace, bool *allequalimage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:784,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:792,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:793,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:794,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:795,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:796,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:797,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:798,1
    - Dst: PageGetSpecialSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:803,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:803,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:804,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:805,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:806,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:807,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:808,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:809,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 781
    functionDepth: 4
    functionLinenumber: 781
    functionLinenumberEnd: 810
    functionName: _bt_checkpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - PageGetSpecialSize
    - errcode
    - BufferGetBlockNumber
    - ereport
    - PageIsNew
    - BufferGetPage
    - errhint
    - errmsg
    - RelationGetRelationName
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void _bt_checkpage(Relation rel, Buffer buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:834,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:834,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:837,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:838,1
    - Dst: _bt_checkpage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - rel
    - blkno
    - access
    argTypes:
    - Relation
    - BlockNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 829
    functionDepth: 5
    functionLinenumber: 829
    functionLinenumberEnd: 842
    functionName: _bt_getbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 6
    functionsReached:
    - _bt_checkpage
    - Assert
    - _bt_lockbuf
    - BlockNumberIsValid
    - ReadBuffer
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_getbuf(Relation rel, BlockNumber blkno, int access)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:860,1
    - Dst: GetFreeIndexPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:888,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:891,1
    - Dst: _bt_conditionallockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:892,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:894,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:903,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:906,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:906,1
    - Dst: BTPageIsRecyclable
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:910,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:918,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:918,1
    - Dst: BTPageGetDeleteXid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:931,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:933,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:935,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:936,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:938,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:942,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:942,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:945,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:946,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:950,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:952,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:963,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:963,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:964,1
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:965,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:965,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:968,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:969,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:969,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:970,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:970,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - rel
    - heaprel
    argTypes:
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 853
    functionDepth: 4
    functionLinenumber: 853
    functionLinenumberEnd: 973
    functionName: _bt_allocbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - ExtendBufferedRel
    - PageIsNew
    - BufferGetPage
    - XLogRegisterData
    - BMR_REL
    - VALGRIND_MAKE_MEM_DEFINED
    - XLogStandbyInfoActive
    - elog
    - ReleaseBuffer
    - _bt_conditionallockbuf
    - Assert
    - XLogBeginInsert
    - RelationUsesLocalBuffers
    - BufferGetPageSize
    - ReadBuffer
    - GetFreeIndexPage
    - BTPageIsRecyclable
    - _bt_pageinit
    - RelationIsAccessibleInLogicalDecoding
    - RelationNeedsWAL
    - BTPageGetDeleteXid
    - _bt_relbuf
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_allocbuf(Relation rel, Relation heaprel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:992,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:992,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:993,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:995,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:998,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1004,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1005,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1009,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1011,1
    - Dst: _bt_checkpage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1012,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - rel
    - obuf
    - blkno
    - access
    argTypes:
    - Relation
    - Buffer
    - BlockNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 987
    functionDepth: 5
    functionLinenumber: 987
    functionLinenumberEnd: 1015
    functionName: _bt_relandgetbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 2
    functionsReached:
    - _bt_checkpage
    - Assert
    - _bt_lockbuf
    - BufferGetBlockNumber
    - BlockNumberIsValid
    - ReadBuffer
    - BufferIsValid
    - _bt_unlockbuf
    - _bt_relbuf
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_relandgetbuf(Relation rel, Buffer obuf, BlockNumber blkno,
      int access)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VALGRIND_CHECK_MEM_IS_DEFINED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1030,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1030,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1031,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1032,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1032,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1034,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1023
    functionDepth: 4
    functionLinenumber: 1023
    functionLinenumberEnd: 1035
    functionName: _bt_relbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 8
    functionsReached:
    - RelationUsesLocalBuffers
    - VALGRIND_MAKE_MEM_NOACCESS
    - BufferGetPage
    - UnlockReleaseBuffer
    - VALGRIND_CHECK_MEM_IS_DEFINED
    linkageType: ''
    returnType: void
    signature: void _bt_relbuf(Relation rel, Buffer buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1050,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1070,1
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1071,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rel
    - buf
    - access
    argTypes:
    - Relation
    - Buffer
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1046
    functionDepth: 4
    functionLinenumber: 1046
    functionLinenumberEnd: 1072
    functionName: _bt_lockbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 4
    functionsReached:
    - RelationUsesLocalBuffers
    - VALGRIND_MAKE_MEM_DEFINED
    - LockBuffer
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: void _bt_lockbuf(Relation rel, Buffer buf, int access)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VALGRIND_CHECK_MEM_IS_DEFINED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1084,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1084,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1087,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1089,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1090,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1090,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1077
    functionDepth: 4
    functionLinenumber: 1077
    functionLinenumberEnd: 1091
    functionName: _bt_unlockbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 3
    functionsReached:
    - RelationUsesLocalBuffers
    - VALGRIND_MAKE_MEM_NOACCESS
    - LockBuffer
    - BufferGetPage
    - VALGRIND_CHECK_MEM_IS_DEFINED
    linkageType: ''
    returnType: void
    signature: void _bt_unlockbuf(Relation rel, Buffer buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1104,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1107,1
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1108,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1100
    functionDepth: 4
    functionLinenumber: 1100
    functionLinenumberEnd: 1111
    functionName: _bt_conditionallockbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - RelationUsesLocalBuffers
    - ConditionalLockBuffer
    - BufferGetPage
    - VALGRIND_MAKE_MEM_DEFINED
    linkageType: ''
    returnType: bool
    signature: bool _bt_conditionallockbuf(Relation rel, Buffer buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VALGRIND_CHECK_MEM_IS_DEFINED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1123,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1123,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1126,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1116
    functionDepth: 4
    functionLinenumber: 1116
    functionLinenumberEnd: 1128
    functionName: _bt_upgradelockbufcleanup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - LockBufferForCleanup
    - VALGRIND_CHECK_MEM_IS_DEFINED
    - LockBuffer
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: void _bt_upgradelockbufcleanup(Relation rel, Buffer buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - page
    - size
    argTypes:
    - Page
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1136
    functionDepth: 1
    functionLinenumber: 1136
    functionLinenumberEnd: 1140
    functionName: _bt_pageinit
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 2
    functionsReached:
    - PageInit
    linkageType: ''
    returnType: void
    signature: void _bt_pageinit(Page page, Size size)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1166,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1175,1
    - Dst: _bt_delitems_update
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1179,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1184,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1205,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1205,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1206,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1207,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1208,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1208,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1213,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1219,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1232,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1242,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1243,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1244,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1247,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1252,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1254,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1257,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1260,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1262,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1264,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1268,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1271,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 6
    argNames:
    - rel
    - buf
    - deletable
    - ndeletable
    - updatable
    - nupdatable
    argTypes:
    - Relation
    - Buffer
    - OffsetNumber*
    - int
    - BTVacuumPosting*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1161
    functionDepth: 4
    functionLinenumber: 1161
    functionLinenumberEnd: 1272
    functionName: _bt_delitems_vacuum
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - BufferGetPage
    - PageIndexMultiDelete
    - XLogRegisterData
    - RelationGetRelationName
    - XLogRegisterBufData
    - PageIndexTupleOverwrite
    - elog
    - XLogBeginInsert
    - Assert
    - pfree
    - BufferGetBlockNumber
    - XLogGetFakeLSN
    - MAXALIGN
    - _bt_delitems_update
    - IndexTupleSize
    - PageSetLSN
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRegisterBuffer
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void _bt_delitems_vacuum(Relation rel, Buffer buf,\n\t\t\t\t\tOffsetNumber
      *deletable, int ndeletable,\n\t\t\t\t\tBTVacuumPosting *updatable, int nupdatable)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1298,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1307,1
    - Dst: _bt_delitems_update
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1311,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1316,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1326,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1326,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1327,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1328,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1329,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1329,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1333,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1339,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1350,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1362,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1363,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1364,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1367,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1372,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1374,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1377,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1380,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1382,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1384,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1388,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1391,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 8
    argNames:
    - rel
    - buf
    - snapshotConflictHorizon
    - isCatalogRel
    - deletable
    - ndeletable
    - updatable
    - nupdatable
    argTypes:
    - Relation
    - Buffer
    - TransactionId
    - bool
    - OffsetNumber*
    - int
    - BTVacuumPosting*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1292
    functionDepth: 4
    functionLinenumber: 1292
    functionLinenumberEnd: 1392
    functionName: _bt_delitems_delete
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - BufferGetPage
    - PageIndexMultiDelete
    - XLogRegisterData
    - RelationGetRelationName
    - XLogRegisterBufData
    - PageIndexTupleOverwrite
    - elog
    - XLogBeginInsert
    - Assert
    - pfree
    - BufferGetBlockNumber
    - XLogGetFakeLSN
    - MAXALIGN
    - _bt_delitems_update
    - IndexTupleSize
    - PageSetLSN
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRegisterBuffer
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void _bt_delitems_delete(Relation rel, Buffer buf,\n\t\t\t\t\tTransactionId
      snapshotConflictHorizon, bool isCatalogRel,\n\t\t\t\t\tOffsetNumber *deletable,
      int ndeletable,\n\t\t\t\t\tBTVacuumPosting *updatable, int nupdatable)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1423,1
    - Dst: _bt_update_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1431,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1447,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1456,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1461,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 5
    argNames:
    - updatable
    - nupdatable
    - updatedoffsets
    - updatedbuflen
    - needswal
    argTypes:
    - BTVacuumPosting*
    - int
    - OffsetNumber*
    - Size*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1414
    functionDepth: 1
    functionLinenumber: 1414
    functionLinenumberEnd: 1467
    functionName: _bt_delitems_update
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 2
    functionsReached:
    - Assert
    - palloc
    - memcpy
    - _bt_update_posting
    linkageType: ''
    returnType: char
    signature: "char *\n_bt_delitems_update(BTVacuumPosting *updatable, int nupdatable,\n\t\t\t\t\tOffsetNumber
      *updatedoffsets, Size *updatedbuflen,\n\t\t\t\t\tbool needswal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1479,1
    - Dst: pg_cmp_s16
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1473
    functionDepth: 1
    functionLinenumber: 1473
    functionLinenumberEnd: 1482
    functionName: _bt_delitems_cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_cmp_s16
    linkageType: ''
    returnType: int
    signature: int _bt_delitems_cmp(const void *a, const void *b)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1526,1
    - Dst: table_index_delete_tuples
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1536,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1537,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1540,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1558,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1567,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1568,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1573,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1573,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1581,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1581,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1582,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1582,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1584,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1584,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1584,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1592,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1592,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1609,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1627,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1636,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1651,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1676,1
    - Dst: _bt_delitems_delete
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1683,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1688,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 63
    argCount: 4
    argNames:
    - rel
    - buf
    - heapRel
    - delstate
    argTypes:
    - Relation
    - Buffer
    - Relation
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1522
    functionDepth: 6
    functionLinenumber: 1522
    functionLinenumberEnd: 1689
    functionName: _bt_delitems_delete_check
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - BTreeTupleIsPosting
    - _bt_delitems_delete
    - BufferGetPage
    - PageGetItem
    - XLogStandbyInfoActive
    - qsort
    - Assert
    - BTreeTupleGetMaxHeapTID
    - pfree
    - BTreeTupleGetHeapTID
    - ItemPointerEquals
    - OffsetNumberIsValid
    - BTreeTupleGetPostingN
    - PageGetItemId
    - ItemPointerCompare
    - table_index_delete_tuples
    - BTreeTupleGetNPosting
    - RelationIsAccessibleInLogicalDecoding
    - palloc
    linkageType: ''
    returnType: void
    signature: "void _bt_delitems_delete_check(Relation rel, Buffer buf, Relation
      heapRel,\n\t\t\t\t\t\t  TM_IndexDeleteOp *delstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1716,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1717,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1718,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1728,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1729,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - rel
    - leftsib
    - target
    argTypes:
    - Relation
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1704
    functionDepth: 6
    functionLinenumber: 1704
    functionLinenumberEnd: 1732
    functionName: _bt_leftsib_splitflag
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - P_INCOMPLETE_SPLIT
    - BufferGetPage
    - BTPageGetOpaque
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: bool
    signature: bool _bt_leftsib_splitflag(Relation rel, BlockNumber leftsib, BlockNumber
      target)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1769,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1771,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1772,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1773,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1775,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1775,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1775,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1776,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - rel
    - leafrightsib
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1761
    functionDepth: 6
    functionLinenumber: 1761
    functionLinenumberEnd: 1780
    functionName: _bt_rightsib_halfdeadflag
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - P_ISHALFDEAD
    - Assert
    - BufferGetPage
    - P_ISDELETED
    - BTPageGetOpaque
    - _bt_getbuf
    - P_ISLEAF
    - _bt_relbuf
    linkageType: ''
    returnType: bool
    signature: bool _bt_rightsib_halfdeadflag(Relation rel, BlockNumber leafrightsib)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1824,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1841,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1842,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1854,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1854,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1855,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1855,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1868,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1869,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1870,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1871,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1872,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1873,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1875,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1876,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1877,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1878,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1879,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1881,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1883,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1906,1
    - Dst: P_ISROOT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1906,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1907,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1907,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1908,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1911,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1911,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1913,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1922,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1943,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1944,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1944,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1947,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1953,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1959,1
    - Dst: _bt_leftsib_splitflag
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1960,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1962,1
    - Dst: _bt_mkscankey
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1975,1
    - Dst: _bt_search
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1980,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1982,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1999,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2010,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2010,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2010,1
    - Dst: _bt_mark_page_halfdead
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2011,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2014,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2020,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2029,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2029,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2029,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2030,1
    - Dst: _bt_unlink_halfdead_page
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2033,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2049,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2049,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2049,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2053,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2059,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2079,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 62
    argCount: 3
    argNames:
    - rel
    - leafbuf
    - vstate
    argTypes:
    - Relation
    - Buffer
    - BTVacState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 1811
    functionDepth: 7
    functionLinenumber: 1811
    functionLinenumberEnd: 2081
    functionName: _bt_pagedel
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - _bt_unlink_halfdead_page
    - errcode
    - P_RIGHTMOST
    - BufferGetPage
    - errhint
    - PageGetItem
    - RelationGetRelationName
    - P_ISHALFDEAD
    - P_ISROOT
    - ReleaseBuffer
    - Assert
    - _bt_lockbuf
    - BufferGetBlockNumber
    - P_ISDELETED
    - PageGetMaxOffsetNumber
    - errmsg
    - CopyIndexTuple
    - P_ISLEAF
    - _bt_unlockbuf
    - _bt_search
    - errmsg_internal
    - ereport
    - CHECK_FOR_INTERRUPTS
    - PageGetItemId
    - P_FIRSTDATAKEY
    - _bt_mkscankey
    - BTPageGetOpaque
    - P_IGNORE
    - INJECTION_POINT
    - P_INCOMPLETE_SPLIT
    - _bt_mark_page_halfdead
    - _bt_leftsib_splitflag
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: void
    signature: void _bt_pagedel(Relation rel, Buffer leafbuf, BTVacState *vstate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2119,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2120,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2122,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2122,1
    - Dst: P_ISROOT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2122,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2123,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2123,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2124,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2125,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2130,1
    - Dst: _bt_rightsib_halfdeadflag
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2140,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2142,1
    - Dst: _bt_lock_subtree_parent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2164,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2169,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2170,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2178,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2179,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2180,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2180,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2183,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2184,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2185,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2196,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2197,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2198,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2200,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2201,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2202,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2205,1
    - Dst: PredicateLockPageCombine
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2213,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2216,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2230,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2231,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2233,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2234,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2235,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2237,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2238,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2245,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2246,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2249,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2249,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2250,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2253,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2255,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2257,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2257,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2258,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2261,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2262,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2265,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2276,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2277,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2278,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2280,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2281,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2285,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2287,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2290,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2292,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2293,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2294,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2295,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2297,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2299,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 75
    argCount: 4
    argNames:
    - rel
    - heaprel
    - leafbuf
    - stack
    argTypes:
    - Relation
    - Relation
    - Buffer
    - BTStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2301
      start: 2101
    functionDepth: 7
    functionLinenumber: 2101
    functionLinenumberEnd: 2301
    functionName: _bt_mark_page_halfdead
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - errcode
    - BTreeTupleSetTopParent
    - P_RIGHTMOST
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - RelationGetRelationName
    - PageIndexTupleOverwrite
    - elog
    - P_ISROOT
    - BTreeTupleSetDownLink
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - _bt_lock_subtree_parent
    - BTreeTupleGetDownLink
    - PageGetMaxOffsetNumber
    - PageIndexTupleDelete
    - XLogGetFakeLSN
    - P_ISLEAF
    - IndexTupleSize
    - PageSetLSN
    - PredicateLockPageCombine
    - errmsg_internal
    - ereport
    - PageGetItemId
    - MemSet
    - P_FIRSTDATAKEY
    - MarkBufferDirty
    - BTPageGetOpaque
    - P_IGNORE
    - XLogRegisterBuffer
    - OffsetNumberNext
    - _bt_rightsib_halfdeadflag
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    - _bt_relbuf
    linkageType: ''
    returnType: bool
    signature: "bool _bt_mark_page_halfdead(Relation rel, Relation heaprel, Buffer
      leafbuf,\n\t\t\t\t\t   BTStack stack)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2332,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2355,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2356,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2358,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2358,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2358,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2358,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2363,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2364,1
    - Dst: BTreeTupleGetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2365,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2369,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2371,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2377,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2392,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2395,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2396,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2397,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2400,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2406,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2419,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2422,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2423,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2424,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2425,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2438,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2438,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2443,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2452,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2453,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2454,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2457,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2460,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2462,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2467,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2470,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2471,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2472,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2479,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2480,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2481,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2488,1
    - Dst: P_ISROOT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2488,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2488,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2489,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2490,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2493,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2494,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2495,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2497,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2501,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2501,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2502,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2502,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2503,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2504,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2513,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2513,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2514,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2515,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2516,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2519,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2519,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2520,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2521,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2528,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2528,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2534,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2535,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2536,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2550,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2551,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2552,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2558,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2561,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2562,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2563,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2564,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2566,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2571,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2572,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2572,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2585,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2586,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2587,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2590,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2591,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2592,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2602,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2613,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2620,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2622,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2624,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2627,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2628,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2629,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2644,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2656,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2657,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2658,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2658,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2658,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2664,1
    - Dst: BTPageSetDeleted
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2665,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2669,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2673,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2676,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2680,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2681,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2682,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2683,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2685,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2688,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2694,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2696,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2697,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2698,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2699,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2701,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2714,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2716,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2718,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2720,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2729,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2735,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2738,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2740,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2741,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2742,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2743,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2744,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2745,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2746,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2748,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2749,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2753,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2754,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2757,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2760,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2761,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2764,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2765,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2766,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2770,1
    - Dst: _bt_pendingfsm_add
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2791,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 194
    argCount: 5
    argNames:
    - rel
    - leafbuf
    - scanblkno
    - rightsib_empty
    - vstate
    argTypes:
    - Relation
    - Buffer
    - BlockNumber
    - bool*
    - BTVacState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2795
      start: 2328
    functionDepth: 6
    functionLinenumber: 2328
    functionLinenumberEnd: 2795
    functionName: _bt_unlink_halfdead_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - ReadNextFullTransactionId
    - errcode
    - BlockNumberIsValid
    - BTreeTupleSetTopParent
    - P_RIGHTMOST
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - RelationGetRelationName
    - BTPageSetDeleted
    - XLogRegisterBufData
    - elog
    - P_ISHALFDEAD
    - P_ISROOT
    - ReleaseBuffer
    - XLogBeginInsert
    - Assert
    - _bt_lockbuf
    - BufferGetBlockNumber
    - BTreeTupleGetDownLink
    - P_ISDELETED
    - PageGetMaxOffsetNumber
    - XLogGetFakeLSN
    - _bt_unlockbuf
    - P_ISLEAF
    - PageSetLSN
    - errmsg_internal
    - _bt_pendingfsm_add
    - ereport
    - CHECK_FOR_INTERRUPTS
    - PageGetItemId
    - BufferIsValid
    - P_FIRSTDATAKEY
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRegisterBuffer
    - INJECTION_POINT
    - _bt_upgrademetapage
    - BTPageGetMeta
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - BTreeTupleGetTopParent
    - _bt_getbuf
    - END_CRIT_SECTION
    - _bt_relbuf
    linkageType: ''
    returnType: bool
    signature: "bool _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber
      scanblkno,\n\t\t\t\t\t\t bool *rightsib_empty, BTVacState *vstate)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getstackbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2847,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2862,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2863,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2864,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2866,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2873,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2874,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2875,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2890,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2890,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2910,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2911,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2911,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2917,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2939,1
    - Dst: _bt_leftsib_splitflag
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2948,1
    - Dst: _bt_lock_subtree_parent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2952,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 8
    argNames:
    - rel
    - heaprel
    - child
    - stack
    - subtreeparent
    - poffset
    - topparent
    - topparentrightsib
    argTypes:
    - Relation
    - Relation
    - BlockNumber
    - BTStack
    - Buffer*
    - OffsetNumber*
    - BlockNumber*
    - BlockNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2955
      start: 2829
    functionDepth: 7
    functionLinenumber: 2829
    functionLinenumberEnd: 2955
    functionName: _bt_lock_subtree_parent
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 2
    functionsReached:
    - errmsg_internal
    - errcode
    - Assert
    - P_INCOMPLETE_SPLIT
    - _bt_relbuf
    - ereport
    - P_RIGHTMOST
    - _bt_lock_subtree_parent
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - RelationGetRelationName
    - P_FIRSTDATAKEY
    - _bt_leftsib_splitflag
    - BTPageGetOpaque
    - _bt_getstackbuf
    linkageType: ''
    returnType: bool
    signature: "bool _bt_lock_subtree_parent(Relation rel, Relation heaprel, BlockNumber
      child,\n\t\t\t\t\t\tBTStack stack, Buffer *subtreeparent,\n\t\t\t\t\t\tOffsetNumber
      *poffset, BlockNumber *topparent,\n\t\t\t\t\t\tBlockNumber *topparentrightsib)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2990,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2992,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2994,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - rel
    - vstate
    - cleanuponly
    argTypes:
    - Relation
    - BTVacState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3000
      start: 2970
    functionDepth: 0
    functionLinenumber: 2970
    functionLinenumberEnd: 3000
    functionName: _bt_pendingfsm_init
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - Min
    - Max
    - palloc_array
    linkageType: ''
    returnType: void
    signature: void _bt_pendingfsm_init(Relation rel, BTVacState *vstate, bool cleanuponly)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3018,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3019,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3025,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3038,1
    - Dst: GetOldestNonRemovableTransactionId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3050,1
    - Dst: GlobalVisCheckRemovableFullXid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3065,1
    - Dst: RecordFreeIndexPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3068,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3072,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - rel
    - vstate
    argTypes:
    - Relation
    - BTVacState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3073
      start: 3012
    functionDepth: 1
    functionLinenumber: 3012
    functionLinenumberEnd: 3073
    functionName: _bt_pendingfsm_finalize
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    - RecordFreeIndexPage
    - GlobalVisCheckRemovableFullXid
    - pg_usleep
    - GetOldestNonRemovableTransactionId
    linkageType: ''
    returnType: void
    signature: void _bt_pendingfsm_finalize(Relation rel, BTVacState *vstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3084,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3085,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3099,1
    - Dst: FullTransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3099,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - vstate
    - target
    - safexid
    argTypes:
    - BTVacState*
    - BlockNumber
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3132
      start: 3079
    functionDepth: 1
    functionLinenumber: 3079
    functionLinenumberEnd: 3132
    functionName: _bt_pendingfsm_add
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - Assert
    - FullTransactionIdFollowsOrEquals
    - repalloc
    linkageType: ''
    returnType: void
    signature: "void _bt_pendingfsm_add(BTVacState *vstate,\n\t\t\t\t   BlockNumber
      target,\n\t\t\t\t   FullTransactionId safexid)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:150,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:151,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:160,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:162,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:163,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:163,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:164,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:167,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:169,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:170,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:190,1
    - Dst: _bt_parallel_release
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:191,1
    - Dst: _bt_parallel_release
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:194,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:198,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:200,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:205,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:207,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:209,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:211,1
    - Dst: _bt_scanbehind_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:212,1
    - Dst: _bt_parallel_primscan_schedule
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:218,1
    - Dst: _bt_set_startikey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:232,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:237,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:241,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:249,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:251,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:256,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:256,1
    - Dst: _bt_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:259,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:268,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:270,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:280,1
    - Dst: _bt_saveitem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:283,1
    - Dst: _bt_setuppostingitems
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:292,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:293,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:298,1
    - Dst: _bt_savepostingitem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:300,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:301,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:311,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:325,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:327,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:328,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:333,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:337,1
    - Dst: _bt_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:338,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:344,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:354,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:356,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:358,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:360,1
    - Dst: _bt_scanbehind_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:361,1
    - Dst: _bt_parallel_primscan_schedule
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:367,1
    - Dst: _bt_set_startikey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:381,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:386,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:390,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:405,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:409,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:419,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:419,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:427,1
    - Dst: _bt_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:441,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:442,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:455,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:465,1
    - Dst: _bt_saveitem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:469,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:473,1
    - Dst: _bt_setuppostingitems
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:479,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:480,1
    - Dst: _bt_savepostingitem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:487,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:488,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:497,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:525,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 176
    argCount: 4
    argNames:
    - scan
    - dir
    - offnum
    - firstpage
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 133
    functionDepth: 5
    functionLinenumber: 133
    functionLinenumberEnd: 528
    functionName: _bt_readpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 0
    functionsReached:
    - _bt_setuppostingitems
    - BTreeTupleIsPosting
    - P_RIGHTMOST
    - Min
    - BufferGetPage
    - PageGetItem
    - BTreeTupleGetNAtts
    - _bt_scanbehind_checkkeys
    - Assert
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - ScanDirectionIsForward
    - _bt_saveitem
    - _bt_parallel_primscan_schedule
    - OffsetNumberIsValid
    - _bt_checkkeys
    - BTScanPosIsPinned
    - ItemIdIsDead
    - BTreeTupleGetPostingN
    - PageGetItemId
    - P_LEFTMOST
    - unlikely
    - P_FIRSTDATAKEY
    - BTreeTupleIsPivot
    - BTPageGetOpaque
    - P_IGNORE
    - _bt_savepostingitem
    - OffsetNumberNext
    - BTreeTupleGetNPosting
    - PredicateLockPage
    - IndexRelationGetNumberOfAttributes
    - OffsetNumberPrev
    - Max
    - _bt_start_array_keys
    - _bt_parallel_release
    - _bt_set_startikey
    linkageType: ''
    returnType: bool
    signature: "bool _bt_readpage(IndexScanDesc scan, ScanDirection dir, OffsetNumber
      offnum,\n\t\t\t bool firstpage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:550,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:552,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:553,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 556
    functionName: _bt_start_array_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - Assert
    - ScanDirectionIsForward
    - _bt_array_set_low_or_high
    linkageType: ''
    returnType: void
    signature: void _bt_start_array_keys(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:597,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:607,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:610,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:611,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:611,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:612,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:612,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:618,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:619,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:622,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:623,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:626,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:645,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:660,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:662,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:671,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:671,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:676,1
    - Dst: _bt_rowcompare_cmpresult
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:680,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:692,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:692,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:697,1
    - Dst: _bt_rowcompare_cmpresult
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:712,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:759,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:765,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:776,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:776,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:783,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:793,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:808,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:813,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:822,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:833,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:845,1
    - Dst: _bt_binsrch_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:847,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:862,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:884,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:885,1
    - Dst: _bt_binsrch_skiparray_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:888,1
    - Dst: _bt_binsrch_skiparray_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:932,1
    CyclomaticComplexity: 74
    EdgeCount: 74
    ICount: 118
    argCount: 2
    argNames:
    - scan
    - pstate
    argTypes:
    - IndexScanDesc
    - BTReadPageState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 938
    functionName: _bt_set_startikey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - INVERT_COMPARE_RESULT
    - _bt_keep_natts_fast
    - Assert
    - RelationGetDescr
    - index_getattr
    - _bt_rowcompare_cmpresult
    - P_RIGHTMOST
    - PageGetItemId
    - P_LEFTMOST
    - DatumGetInt32
    - PageGetItem
    - FunctionCall2Coll
    - _bt_binsrch_skiparray_skey
    - BTPageGetOpaque
    - _bt_binsrch_array_skey
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void _bt_set_startikey(IndexScanDesc scan, BTReadPageState *pstate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:956,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:961,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:963,1
    - Dst: _bt_oppodir_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:985,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - scan
    - dir
    - finaltup
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 951
    functionDepth: 1
    functionLinenumber: 951
    functionLinenumberEnd: 986
    functionName: _bt_scanbehind_checkkeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - _bt_tuple_before_array_skeys
    - Assert
    - RelationGetDescr
    - BTreeTupleGetNAtts
    - _bt_oppodir_checkkeys
    linkageType: ''
    returnType: bool
    signature: "bool _bt_scanbehind_checkkeys(IndexScanDesc scan, ScanDirection dir,\n\t\t\t\t\t\t
      IndexTuple finaltup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1011,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1018,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1020,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - scan
    - dir
    - finaltup
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1028
    functionName: _bt_oppodir_checkkeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - Assert
    - RelationGetDescr
    - BTreeTupleGetNAtts
    - _bt_check_compare
    linkageType: ''
    returnType: bool
    signature: "bool _bt_oppodir_checkkeys(IndexScanDesc scan, ScanDirection dir,\n\t\t\t\t\t
      \ IndexTuple finaltup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1037,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1037,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1037,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1043,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1046,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1047,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - so
    - itemIndex
    - offnum
    - itup
    argTypes:
    - BTScanOpaque
    - int
    - OffsetNumber
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1049
    functionName: _bt_saveitem
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - memcpy
    - BTreeTupleIsPosting
    - Assert
    - BTreeTupleIsPivot
    - MAXALIGN
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void _bt_saveitem(BTScanOpaque so, int itemIndex,\n\t\t\t OffsetNumber
      offnum, IndexTuple itup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1067,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1067,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1075,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1077,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 5
    argNames:
    - so
    - itemIndex
    - offnum
    - heapTid
    - itup
    argTypes:
    - BTScanOpaque
    - int
    - OffsetNumber
    - ItemPointerData*
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1061
    functionDepth: 3
    functionLinenumber: 1061
    functionLinenumberEnd: 1090
    functionName: _bt_setuppostingitems
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - memcpy
    - BTreeTupleIsPosting
    - Assert
    - BTreeTupleGetPostingOffset
    - MAXALIGN
    linkageType: ''
    returnType: int
    signature: "int _bt_setuppostingitems(BTScanOpaque so, int itemIndex, OffsetNumber
      offnum,\n\t\t\t\t\t  const ItemPointerData *heapTid, IndexTuple itup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - so
    - itemIndex
    - offnum
    - heapTid
    - tupleOffset
    argTypes:
    - BTScanOpaque
    - int
    - OffsetNumber
    - ItemPointer
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1114
    functionName: _bt_savepostingitem
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void _bt_savepostingitem(BTScanOpaque so, int itemIndex, OffsetNumber
      offnum,\n\t\t\t\t\tItemPointer heapTid, int tupleOffset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1158,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1158,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1160,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1173,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1185,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1215,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1216,1
    - Dst: _bt_checkkeys_look_ahead
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1241,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1261,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 5
    argNames:
    - scan
    - pstate
    - arrayKeys
    - tuple
    - tupnatts
    argTypes:
    - IndexScanDesc
    - BTReadPageState*
    - bool
    - IndexTuple
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1148
    functionDepth: 1
    functionLinenumber: 1148
    functionLinenumberEnd: 1263
    functionName: _bt_checkkeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - _bt_tuple_before_array_skeys
    - _bt_advance_array_keys
    - Assert
    - RelationGetDescr
    - _bt_checkkeys_look_ahead
    - BTreeTupleGetNAtts
    - _bt_check_compare
    linkageType: ''
    returnType: bool
    signature: "bool _bt_checkkeys(IndexScanDesc scan, BTReadPageState *pstate, bool
      arrayKeys,\n\t\t\t  IndexTuple tuple, int tupnatts)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1338,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1339,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1341,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1353,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1353,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1366,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1374,1
    - Dst: _bt_check_rowcompare
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1384,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1390,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1405,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1406,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1426,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1445,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1446,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1464,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1482,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1492,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1492,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1512,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 67
    argCount: 9
    argNames:
    - scan
    - dir
    - tuple
    - tupnatts
    - tupdesc
    - advancenonrequired
    - forcenonrequired
    - continuescan
    - ikey
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - IndexTuple
    - int
    - TupleDesc
    - bool
    - bool
    - bool*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1311
    functionDepth: 3
    functionLinenumber: 1311
    functionLinenumberEnd: 1524
    functionName: _bt_check_compare
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 2
    functionsReached:
    - _bt_check_rowcompare
    - _bt_advance_array_keys
    - Assert
    - ScanDirectionIsBackward
    - index_getattr
    - FunctionCall2Coll
    - ScanDirectionIsForward
    - unlikely
    - BTreeTupleIsPivot
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool _bt_check_compare(IndexScanDesc scan, ScanDirection dir,\n\t\t\t\t
      \ IndexTuple tuple, int tupnatts, TupleDesc tupdesc,\n\t\t\t\t  bool advancenonrequired,
      bool forcenonrequired,\n\t\t\t\t  bool *continuescan, int *ikey)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1583,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1588,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1610,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1610,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1617,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1620,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1633,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1633,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1637,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1681,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1685,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1719,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1723,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1734,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1734,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1740,1
    - Dst: _bt_rowcompare_cmpresult
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1752,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1763,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1766,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 57
    argCount: 7
    argNames:
    - header
    - tuple
    - tupnatts
    - tupdesc
    - dir
    - forcenonrequired
    - continuescan
    argTypes:
    - ScanKey
    - IndexTuple
    - int
    - TupleDesc
    - ScanDirection
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1578
    functionDepth: 3
    functionLinenumber: 1578
    functionLinenumberEnd: 1771
    functionName: _bt_check_rowcompare
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - INVERT_COMPARE_RESULT
    - ScanDirectionIsBackward
    - Assert
    - index_getattr
    - _bt_rowcompare_cmpresult
    - FunctionCall2Coll
    - DatumGetInt32
    - ScanDirectionIsForward
    - BTreeTupleIsPivot
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: "bool _bt_check_rowcompare(ScanKey header, IndexTuple tuple, int tupnatts,\n\t\t\t\t\t
      TupleDesc tupdesc, ScanDirection dir,\n\t\t\t\t\t bool forcenonrequired, bool
      *continuescan)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1785,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1803,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - subkey
    - cmpresult
    argTypes:
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1780
    functionDepth: 1
    functionLinenumber: 1780
    functionLinenumberEnd: 1809
    functionName: _bt_rowcompare_cmpresult
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 2
    functionsReached:
    - Assert
    - elog
    linkageType: ''
    returnType: bool
    signature: bool _bt_rowcompare_cmpresult(ScanKey subkey, int cmpresult)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1860,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1862,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1876,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1894,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1930,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1932,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1935,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1950,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1969,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1969,1
    - Dst: _bt_binsrch_skiparray_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:1984,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2008,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2009,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2018,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2027,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2030,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 57
    argCount: 8
    argNames:
    - scan
    - dir
    - tuple
    - tupdesc
    - tupnatts
    - readpagetup
    - sktrig
    - scanBehind
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - IndexTuple
    - TupleDesc
    - int
    - bool
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 1853
    functionDepth: 3
    functionLinenumber: 1853
    functionLinenumberEnd: 2033
    functionName: _bt_tuple_before_array_skeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 2
    functionsReached:
    - ScanDirectionIsBackward
    - Assert
    - index_getattr
    - _bt_compare_array_skey
    - likely
    - ScanDirectionIsForward
    - _bt_binsrch_skiparray_skey
    linkageType: ''
    returnType: bool
    signature: "bool _bt_tuple_before_array_skeys(IndexScanDesc scan, ScanDirection
      dir,\n\t\t\t\t\t\t\t IndexTuple tuple, TupleDesc tupdesc, int tupnatts,\n\t\t\t\t\t\t\t
      bool readpagetup, int sktrig, bool *scanBehind)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2059,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2069,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2072,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2086,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2087,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2090,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2093,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2094,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2095,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2102,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2117,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 4
    argNames:
    - scan
    - pstate
    - tupnatts
    - tupdesc
    argTypes:
    - IndexScanDesc
    - BTReadPageState*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2119
      start: 2051
    functionDepth: 4
    functionLinenumber: 2051
    functionLinenumberEnd: 2119
    functionName: _bt_checkkeys_look_ahead
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - _bt_tuple_before_array_skeys
    - ScanDirectionIsBackward
    - Assert
    - PageGetItemId
    - PageGetItem
    - ScanDirectionIsForward
    - Max
    - Min
    linkageType: ''
    returnType: void
    signature: "void _bt_checkkeys_look_ahead(IndexScanDesc scan, BTReadPageState
      *pstate,\n\t\t\t\t\t\t int tupnatts, TupleDesc tupdesc)"
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2197,1
    - Dst: _bt_verify_keys_with_arraykeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2204,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2228,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2229,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2251,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2260,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2262,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2278,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2306,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2343,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2344,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2370,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2371,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2380,1
    - Dst: _bt_binsrch_skiparray_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2391,1
    - Dst: _bt_binsrch_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2399,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2406,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2417,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2449,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2453,1
    - Dst: _bt_skiparray_set_element
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2484,1
    - Dst: _bt_advance_array_keys_increment
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2504,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2507,1
    - Dst: _bt_verify_keys_with_arraykeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2545,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2554,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2581,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2589,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2596,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2633,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2633,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2657,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2658,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2729,1
    - Dst: _bt_oppodir_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2729,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2765,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2774,1
    - Dst: _bt_parallel_primscan_schedule
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2831,1
    CyclomaticComplexity: 84
    EdgeCount: 84
    ICount: 148
    argCount: 7
    argNames:
    - scan
    - pstate
    - tuple
    - tupnatts
    - tupdesc
    - sktrig
    - sktrig_required
    argTypes:
    - IndexScanDesc
    - BTReadPageState*
    - IndexTuple
    - int
    - TupleDesc
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2853
      start: 2181
    functionDepth: 4
    functionLinenumber: 2181
    functionLinenumberEnd: 2853
    functionName: _bt_advance_array_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 3
    functionsReached:
    - _bt_verify_keys_with_arraykeys
    - _bt_parallel_primscan_schedule
    - _bt_tuple_before_array_skeys
    - ScanDirectionIsBackward
    - Assert
    - index_getattr
    - _bt_compare_array_skey
    - _bt_advance_array_keys
    - _bt_array_set_low_or_high
    - BTreeTupleGetNAtts
    - _bt_check_compare
    - ScanDirectionIsForward
    - unlikely
    - _bt_binsrch_skiparray_skey
    - _bt_oppodir_checkkeys
    - _bt_skiparray_set_element
    - _bt_advance_array_keys_increment
    - _bt_binsrch_array_skey
    linkageType: ''
    returnType: bool
    signature: "bool _bt_advance_array_keys(IndexScanDesc scan, BTReadPageState *pstate,\n\t\t\t\t\t
      \  IndexTuple tuple, int tupnatts, TupleDesc tupdesc,\n\t\t\t\t\t   int sktrig,
      bool sktrig_required)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2887,1
    - Dst: _bt_array_increment
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2889,1
    - Dst: _bt_array_decrement
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2894,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2904,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2905,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2925,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - scan
    - dir
    - skip_array_set
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2928
      start: 2867
    functionDepth: 2
    functionLinenumber: 2867
    functionLinenumberEnd: 2928
    functionName: _bt_advance_array_keys_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - _bt_array_increment
    - _bt_array_decrement
    - _bt_array_set_low_or_high
    - ScanDirectionIsForward
    - _bt_start_array_keys
    linkageType: ''
    returnType: bool
    signature: "bool _bt_advance_array_keys_increment(IndexScanDesc scan, ScanDirection
      dir,\n\t\t\t\t\t\t\t\t bool *skip_array_set)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2942,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2943,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2948,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:2967,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3002,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3011,1
    - Dst: BTArrayKeyInfo*::sksup::increment
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3020,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3021,1
    - Dst: _bt_skiparray_set_isnull
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3026,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3041,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3041,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3048,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3048,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3056,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3056,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - rel
    - skey
    - array
    argTypes:
    - Relation
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3061
      start: 2936
    functionDepth: 1
    functionLinenumber: 2936
    functionLinenumberEnd: 3061
    functionName: _bt_array_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - BTArrayKeyInfo*::sksup::increment
    - Assert
    - pfree
    - datumCopy
    - _bt_skiparray_set_isnull
    - FunctionCall2Coll
    - unlikely
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool _bt_array_increment(Relation rel, ScanKey skey, BTArrayKeyInfo
      *array)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3075,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3076,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3135,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3144,1
    - Dst: BTArrayKeyInfo*::sksup::decrement
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3153,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3154,1
    - Dst: _bt_skiparray_set_isnull
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3159,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3174,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3174,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3181,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3181,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3189,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3189,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - rel
    - skey
    - array
    argTypes:
    - Relation
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3194
      start: 3069
    functionDepth: 1
    functionLinenumber: 3069
    functionLinenumberEnd: 3194
    functionName: _bt_array_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - BTArrayKeyInfo*::sksup::decrement
    - Assert
    - pfree
    - datumCopy
    - _bt_skiparray_set_isnull
    - FunctionCall2Coll
    - unlikely
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool _bt_array_decrement(Relation rel, ScanKey skey, BTArrayKeyInfo
      *array)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3206,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3229,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3230,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3234,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3234,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - rel
    - skey
    - array
    - low_not_high
    argTypes:
    - Relation
    - ScanKey
    - BTArrayKeyInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3258
      start: 3202
    functionDepth: 1
    functionLinenumber: 3202
    functionLinenumberEnd: 3258
    functionName: _bt_array_set_low_or_high
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 3
    functionsReached:
    - Assert
    - pfree
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void _bt_array_set_low_or_high(Relation rel, ScanKey skey, BTArrayKeyInfo
      *array,\n\t\t\t\t\t\t  bool low_not_high)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3276,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3277,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3282,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3284,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3289,1
    - Dst: _bt_skiparray_set_isnull
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3291,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3297,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3297,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3303,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 6
    argNames:
    - rel
    - skey
    - array
    - set_elem_result
    - tupdatum
    - tupnull
    argTypes:
    - Relation
    - ScanKey
    - BTArrayKeyInfo*
    - int32
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3304
      start: 3272
    functionDepth: 2
    functionLinenumber: 3272
    functionLinenumberEnd: 3304
    functionName: _bt_skiparray_set_element
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached:
    - Assert
    - pfree
    - datumCopy
    - _bt_skiparray_set_isnull
    - _bt_array_set_low_or_high
    - unlikely
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void _bt_skiparray_set_element(Relation rel, ScanKey skey, BTArrayKeyInfo
      *array,\n\t\t\t\t\t\t  int32 set_elem_result, Datum tupdatum, bool tupnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3314,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3318,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3318,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - rel
    - skey
    - array
    argTypes:
    - Relation
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3325
      start: 3309
    functionDepth: 1
    functionLinenumber: 3309
    functionLinenumberEnd: 3325
    functionName: _bt_skiparray_set_isnull
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 3
    functionsReached:
    - Assert
    - pfree
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void _bt_skiparray_set_isnull(Relation rel, ScanKey skey, BTArrayKeyInfo
      *array)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3350,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3351,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3375,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3375,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3388,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - orderproc
    - tupdatum
    - tupnull
    - arrdatum
    - cur
    argTypes:
    - FmgrInfo*
    - Datum
    - bool
    - Datum
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3392
      start: 3343
    functionDepth: 1
    functionLinenumber: 3343
    functionLinenumberEnd: 3392
    functionName: _bt_compare_array_skey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 2
    functionsReached:
    - Assert
    - DatumGetInt32
    - INVERT_COMPARE_RESULT
    - FunctionCall2Coll
    linkageType: ''
    returnType: int32
    signature: "int32 _bt_compare_array_skey(FmgrInfo *orderproc,\n\t\t\t\t\t   Datum
      tupdatum, bool tupnull,\n\t\t\t\t\t   Datum arrdatum, ScanKey cur)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3427,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3430,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3434,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3434,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3435,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3456,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3464,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3492,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3519,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3544,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 8
    argNames:
    - orderproc
    - cur_elem_trig
    - dir
    - tupdatum
    - tupnull
    - array
    - cur
    - set_elem_result
    argTypes:
    - FmgrInfo*
    - bool
    - ScanDirection
    - Datum
    - bool
    - BTArrayKeyInfo*
    - ScanKey
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3550
      start: 3414
    functionDepth: 2
    functionLinenumber: 3414
    functionLinenumberEnd: 3550
    functionName: _bt_binsrch_array_skey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 2
    functionsReached:
    - Assert
    - ScanDirectionIsNoMovement
    - ScanDirectionIsForward
    - _bt_compare_array_skey
    linkageType: ''
    returnType: int
    signature: "int _bt_binsrch_array_skey(FmgrInfo *orderproc,\n\t\t\t\t\t   bool
      cur_elem_trig, ScanDirection dir,\n\t\t\t\t\t   Datum tupdatum, bool tupnull,\n\t\t\t\t\t
      \  BTArrayKeyInfo *array, ScanKey cur,\n\t\t\t\t\t   int32 *set_elem_result)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3576,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3580,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3580,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3584,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3604,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3611,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3611,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3617,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3617,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3630,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3630,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3636,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3636,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3651,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3651,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3651,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3656,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3657,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3657,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtreadpage.c:3657,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 35
    argCount: 7
    argNames:
    - cur_elem_trig
    - dir
    - tupdatum
    - tupnull
    - array
    - cur
    - set_elem_result
    argTypes:
    - bool
    - ScanDirection
    - Datum
    - bool
    - BTArrayKeyInfo*
    - ScanKey
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3663
      start: 3570
    functionDepth: 1
    functionLinenumber: 3570
    functionLinenumberEnd: 3663
    functionName: _bt_binsrch_skiparray_skey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 3
    functionsReached:
    - ScanDirectionIsNoMovement
    - ScanDirectionIsBackward
    - Assert
    - FunctionCall2Coll
    - ScanDirectionIsForward
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: "void _bt_binsrch_skiparray_skey(bool cur_elem_trig, ScanDirection
      dir,\n\t\t\t\t\t\t   Datum tupdatum, bool tupnull,\n\t\t\t\t\t\t   BTArrayKeyInfo
      *array, ScanKey cur,\n\t\t\t\t\t\t   int32 *set_elem_result)"
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3717
      start: 3670
    functionDepth: 0
    functionLinenumber: 3670
    functionLinenumberEnd: 3717
    functionName: _bt_verify_keys_with_arraykeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtreadpage.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool _bt_verify_keys_with_arraykeys(IndexScanDesc scan)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:65,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:66,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:71,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:86,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:89,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:95,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:103,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:104,1
    - Dst: _bt_do_singleval
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:111,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:120,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:121,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:121,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:124,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:126,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:127,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:128,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:130,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:131,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:136,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:138,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:139,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:141,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:141,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:149,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:152,1
    - Dst: _bt_dedup_save_htid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:153,1
    - Dst: _bt_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:173,1
    - Dst: _bt_singleval_fillfactor
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:192,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:201,1
    - Dst: _bt_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:206,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:221,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:222,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:223,1
    - Dst: P_HAS_GARBAGE
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:234,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:236,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:241,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:243,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:244,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:247,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:253,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:254,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:255,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:262,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:265,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:268,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:270,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:272,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:275,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:275,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:278,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:279,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 70
    argCount: 5
    argNames:
    - rel
    - buf
    - newitem
    - newitemsz
    - bottomupdedup
    argTypes:
    - Relation
    - Buffer
    - IndexTuple
    - Size
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 280
    functionName: _bt_dedup_pass
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - P_RIGHTMOST
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - XLogRegisterBufData
    - elog
    - PageGetExactFreeSpace
    - XLogBeginInsert
    - Assert
    - PageGetLSN
    - pfree
    - PageGetMaxOffsetNumber
    - _bt_dedup_start_pending
    - XLogGetFakeLSN
    - palloc_object
    - IndexRelationGetNumberOfKeyAttributes
    - P_HAS_GARBAGE
    - PageSetLSN
    - ItemIdIsDead
    - PageGetTempPageCopySpecial
    - PageGetItemId
    - PageAddItem
    - _bt_singleval_fillfactor
    - _bt_dedup_finish_pending
    - P_FIRSTDATAKEY
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRegisterBuffer
    - _bt_do_singleval
    - OffsetNumberNext
    - _bt_keep_natts_fast
    - _bt_dedup_save_htid
    - START_CRIT_SECTION
    - PageRestoreTempPage
    - RelationNeedsWAL
    - palloc
    - Min
    - ItemIdGetLength
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void _bt_dedup_pass(Relation rel, Buffer buf, IndexTuple newitem,
      Size newitemsz,\n\t\t\t   bool bottomupdedup)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:315,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:316,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:320,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:326,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:333,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:356,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:358,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:360,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:361,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:363,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:364,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:367,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:369,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:372,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:372,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:377,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:379,1
    - Dst: _bt_dedup_save_htid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:380,1
    - Dst: _bt_bottomupdel_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:387,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:390,1
    - Dst: _bt_bottomupdel_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:394,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:408,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:409,1
    - Dst: _bt_delitems_delete_check
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:412,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:414,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:415,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:422,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:422,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 46
    argCount: 4
    argNames:
    - rel
    - buf
    - heapRel
    - newitemsz
    argTypes:
    - Relation
    - Buffer
    - Relation
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 308
    functionDepth: 7
    functionLinenumber: 308
    functionLinenumberEnd: 423
    functionName: _bt_bottomupdel_pass
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 0
    functionsReached:
    - _bt_bottomupdel_finish_pending
    - palloc_array
    - BufferGetPage
    - PageGetItem
    - PageGetExactFreeSpace
    - Assert
    - pfree
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - _bt_dedup_start_pending
    - palloc_object
    - IndexRelationGetNumberOfKeyAttributes
    - ItemIdIsDead
    - _bt_delitems_delete_check
    - PageGetItemId
    - P_FIRSTDATAKEY
    - BTPageGetOpaque
    - OffsetNumberNext
    - _bt_keep_natts_fast
    - _bt_dedup_save_htid
    - Max
    - palloc
    linkageType: ''
    returnType: bool
    signature: "bool _bt_bottomupdel_pass(Relation rel, Buffer buf, Relation heapRel,\n\t\t\t\t\t
      Size newitemsz)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:438,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:440,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:440,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:446,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:448,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:450,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:456,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:457,1
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:457,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:461,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:474,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - state
    - base
    - baseoff
    argTypes:
    - BTDedupState
    - IndexTuple
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 434
    functionDepth: 4
    functionLinenumber: 434
    functionLinenumberEnd: 477
    functionName: _bt_dedup_start_pending
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 2
    functionsReached:
    - BTreeTupleGetPosting
    - memcpy
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - Assert
    - BTreeTupleGetPostingOffset
    - BTreeTupleIsPivot
    - MAXALIGN
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void _bt_dedup_start_pending(BTDedupState state, IndexTuple base,\n\t\t\t\t\t\tOffsetNumber
      baseoff)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:492,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:492,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:494,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:501,1
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:502,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:512,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:540,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:543,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:543,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - state
    - itup
    argTypes:
    - BTDedupState
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 485
    functionDepth: 4
    functionLinenumber: 485
    functionLinenumberEnd: 546
    functionName: _bt_dedup_save_htid
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 2
    functionsReached:
    - BTreeTupleGetPosting
    - memcpy
    - BTreeTupleGetNPosting
    - BTreeTupleIsPosting
    - Assert
    - BTreeTupleIsPivot
    - MAXALIGN
    - IndexTupleSize
    linkageType: ''
    returnType: bool
    signature: bool _bt_dedup_save_htid(BTDedupState state, IndexTuple itup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:564,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:565,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:567,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:567,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:572,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:572,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:572,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:573,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:574,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:575,1
    - Dst: _bt_form_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:584,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:585,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:586,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:591,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:591,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:592,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:593,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:594,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:596,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:600,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 2
    argNames:
    - newpage
    - state
    argTypes:
    - Page
    - BTDedupState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 609
    functionName: _bt_dedup_finish_pending
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 1
    functionsReached:
    - elog
    - OffsetNumberNext
    - Assert
    - pfree
    - PageAddItem
    - PageGetMaxOffsetNumber
    - _bt_form_posting
    - MAXALIGN
    - IndexTupleSize
    linkageType: ''
    returnType: Size
    signature: Size _bt_dedup_finish_pending(Page newpage, BTDedupState state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:653,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:654,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:655,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:660,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:661,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:665,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:673,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:690,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:694,1
    - Dst: _bt_posting_valid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:694,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:709,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:710,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:711,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:712,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:713,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:714,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:724,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 3
    argNames:
    - page
    - state
    - delstate
    argTypes:
    - Page
    - BTDedupState
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 647
    functionDepth: 6
    functionLinenumber: 647
    functionLinenumberEnd: 753
    functionName: _bt_bottomupdel_finish_pending
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 1
    functionsReached:
    - _bt_posting_valid
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - Assert
    - BTreeTupleGetMaxHeapTID
    - BTreeTupleGetPostingN
    - PageGetItemId
    - BTreeTupleGetHeapTID
    - PageGetItem
    - ItemPointerGetBlockNumber
    - ItemIdGetLength
    linkageType: ''
    returnType: void
    signature: "void _bt_bottomupdel_finish_pending(Page page, BTDedupState state,\n\t\t\t\t\t\t\t
      \  TM_IndexDeleteOp *delstate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:785,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:789,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:790,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:792,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:794,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:794,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:795,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - rel
    - page
    - state
    - minoff
    - newitem
    argTypes:
    - Relation
    - Page
    - BTDedupState
    - OffsetNumber
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 781
    functionDepth: 2
    functionLinenumber: 781
    functionLinenumberEnd: 802
    functionName: _bt_do_singleval
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 1
    functionsReached:
    - _bt_keep_natts_fast
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - IndexRelationGetNumberOfKeyAttributes
    linkageType: ''
    returnType: bool
    signature: "bool _bt_do_singleval(Relation rel, Page page, BTDedupState state,\n\t\t\t\t
      OffsetNumber minoff, IndexTuple newitem)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PageGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:828,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:829,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - page
    - state
    - newitemsz
    argTypes:
    - Page
    - BTDedupState
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 842
    functionName: _bt_singleval_fillfactor
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 1
    functionsReached:
    - MAXALIGN
    - PageGetPageSize
    linkageType: ''
    returnType: void
    signature: void _bt_singleval_fillfactor(Page page, BTDedupState state, Size newitemsz)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:870,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:871,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:875,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:875,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:876,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:877,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:877,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:881,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:886,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:887,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:887,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:890,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:891,1
    - Dst: BTreeTupleSetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:897,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:898,1
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:898,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:900,1
    - Dst: _bt_posting_valid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:900,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:906,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:907,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:907,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - base
    - htids
    - nhtids
    argTypes:
    - IndexTuple
    - ItemPointerData*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 863
    functionDepth: 4
    functionLinenumber: 863
    functionLinenumberEnd: 911
    functionName: _bt_form_posting
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 1
    functionsReached:
    - BTreeTupleGetPosting
    - memcpy
    - BTreeTupleIsPosting
    - _bt_posting_valid
    - Assert
    - ItemPointerCopy
    - palloc0
    - BTreeTupleGetPostingOffset
    - BTreeTupleSetPosting
    - BTreeTupleIsPivot
    - MAXALIGN
    - ItemPointerIsValid
    - IndexTupleSize
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple _bt_form_posting(IndexTuple base, const ItemPointerData
      *htids, int nhtids)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:935,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:937,1
    - Dst: _bt_posting_valid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:938,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:938,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:947,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:949,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:955,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:955,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:958,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:959,1
    - Dst: BTreeTupleSetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:966,1
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:967,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:978,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:987,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:988,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:989,1
    - Dst: _bt_posting_valid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:990,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:990,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - vacposting
    argTypes:
    - BTVacuumPosting
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 923
    functionDepth: 5
    functionLinenumber: 923
    functionLinenumberEnd: 994
    functionName: _bt_update_posting
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 1
    functionsReached:
    - BTreeTupleGetPosting
    - _bt_posting_valid
    - BTreeTupleGetNPosting
    - memcpy
    - Assert
    - palloc0
    - BTreeTupleGetPostingN
    - BTreeTupleGetPostingOffset
    - BTreeTupleSetPosting
    - MAXALIGN
    - ItemPointerIsValid
    linkageType: ''
    returnType: void
    signature: void _bt_update_posting(BTVacuumPosting vacposting)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1030,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1031,1
    - Dst: _bt_posting_valid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1031,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1043,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1052,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1053,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1054,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1059,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1059,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1059,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1060,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1063,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1063,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1065,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1065,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1065,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1066,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1067,1
    - Dst: _bt_posting_valid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1067,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - newitem
    - oposting
    - postingoff
    argTypes:
    - IndexTuple
    - IndexTuple
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1021
    functionDepth: 6
    functionLinenumber: 1021
    functionLinenumberEnd: 1070
    functionName: _bt_swap_posting
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 0
    functionsReached:
    - elog
    - _bt_posting_valid
    - BTreeTupleGetNPosting
    - BTreeTupleIsPosting
    - Assert
    - ItemPointerCopy
    - BTreeTupleGetMaxHeapTID
    - memmove
    - BTreeTupleGetPostingN
    - BTreeTupleGetHeapTID
    - BTreeTupleIsPivot
    - ItemPointerCompare
    - CopyIndexTuple
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple _bt_swap_posting(IndexTuple newitem, IndexTuple oposting,
      int postingoff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1083,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1083,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1087,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1087,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1088,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1092,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1094,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1096,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1098,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:1100,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - posting
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1077
    functionDepth: 5
    functionLinenumber: 1077
    functionLinenumberEnd: 1104
    functionName: _bt_posting_valid
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 4
    functionsReached:
    - BTreeTupleGetNPosting
    - BTreeTupleIsPosting
    - ItemPointerCopy
    - BTreeTupleGetPostingN
    - BTreeTupleGetHeapTID
    - ItemPointerCompare
    - ItemPointerIsValid
    linkageType: ''
    returnType: bool
    signature: bool _bt_posting_valid(IndexTuple posting)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 177
    functionName: bthandler
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum bthandler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _bt_allequalimage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:185,1
    - Dst: smgr_bulk_start_rel
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:189,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:192,1
    - Dst: _bt_initmetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:193,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:194,1
    - Dst: smgr_bulk_finish
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 197
    functionName: btbuildempty
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - _bt_allequalimage
    - smgr_bulk_get_buf
    - _bt_initmetapage
    - smgr_bulk_finish
    - smgr_bulk_write
    - smgr_bulk_start_rel
    linkageType: ''
    returnType: void
    signature: void btbuildempty(Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_form_tuple
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:216,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:216,1
    - Dst: _bt_doinsert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:219,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 8
    argNames:
    - rel
    - values
    - isnull
    - ht_ctid
    - heapRel
    - checkUnique
    - indexUnchanged
    - indexInfo
    argTypes:
    - Relation
    - Datum*
    - bool*
    - ItemPointer
    - Relation
    - IndexUniqueCheck
    - bool
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 224
    functionName: btinsert
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - pfree
    - RelationGetDescr
    - _bt_doinsert
    - index_form_tuple
    linkageType: ''
    returnType: bool
    signature: "bool btinsert(Relation rel, Datum *values, bool *isnull,\n\t\t ItemPointer
      ht_ctid, Relation heapRel,\n\t\t IndexUniqueCheck checkUnique,\n\t\t bool indexUnchanged,\n\t\t
      IndexInfo *indexInfo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:235,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:248,1
    - Dst: _bt_first
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:249,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:267,1
    - Dst: _bt_next
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:275,1
    - Dst: _bt_start_prim_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:282,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 285
    functionName: btgettuple
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - _bt_next
    - Assert
    - BTScanPosIsValid
    - palloc_array
    - _bt_start_prim_scan
    - _bt_first
    linkageType: ''
    returnType: bool
    signature: bool btgettuple(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:297,1
    - Dst: _bt_first
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:303,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:307,1
    - Dst: _bt_next
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:319,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:325,1
    - Dst: _bt_start_prim_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:330,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 333
    functionName: btgetbitmap
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - _bt_next
    - Assert
    - _bt_start_prim_scan
    - tbm_add_tuples
    - _bt_first
    linkageType: ''
    returnType: int64
    signature: int64 btgetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:345,1
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:348,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:351,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:352,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:353,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:355,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 3
    argNames:
    - rel
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 338
    functionDepth: 2
    functionLinenumber: 338
    functionLinenumberEnd: 382
    functionName: btbeginscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - BTScanPosInvalidate
    - Assert
    - RelationGetDescr
    - RelationGetIndexScan
    - palloc_object
    - palloc
    linkageType: ''
    returnType: IndexScanDesc
    signature: IndexScanDesc btbeginscan(Relation rel, int nkeys, int norderbys)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:394,1
    - Dst: _bt_killitems
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:398,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:399,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:400,1
    - Dst: IsMVCCLikeSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:420,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:427,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:428,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:438,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:446,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 5
    argNames:
    - scan
    - scankey
    - nscankeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 449
    functionName: btrescan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - BTScanPosInvalidate
    - memcpy
    - IsMVCCLikeSnapshot
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    - palloc
    - _bt_killitems
    linkageType: ''
    returnType: void
    signature: "void btrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys,\n\t\t
      ScanKey orderbys, int norderbys)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:460,1
    - Dst: _bt_killitems
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:464,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:465,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:469,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:475,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:478,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:480,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:482,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:484,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 485
    functionName: btendscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - pfree
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    - MemoryContextDelete
    - _bt_killitems
    linkageType: ''
    returnType: void
    signature: void btendscan(IndexScanDesc scan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:496,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:504,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:508,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 511
    functionName: btmarkpos
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    - BTScanPosInvalidate
    linkageType: ''
    returnType: void
    signature: void btmarkpos(IndexScanDesc scan)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:540,1
    - Dst: _bt_killitems
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:544,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:545,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:548,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:551,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:552,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:553,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:557,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:562,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:567,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 516
    functionDepth: 2
    functionLinenumber: 516
    functionLinenumberEnd: 569
    functionName: btrestrpos
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - BTScanPosInvalidate
    - memcpy
    - BTScanPosIsPinned
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    - IncrBufferRefCount
    - _bt_start_array_keys
    - _bt_killitems
    linkageType: ''
    returnType: void
    signature: void btrestrpos(IndexScanDesc scan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:577,1
    - Dst: datumEstimateSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:596,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:611,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:614,1
    - Dst: datumEstimateSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:618,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:621,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:638,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:639,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - rel
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 574
    functionDepth: 2
    functionLinenumber: 574
    functionLinenumberEnd: 643
    functionName: btestimateparallelscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - datumEstimateSpace
    - IndexRelationGetNumberOfKeyAttributes
    - TupleDescCompactAttr
    - add_size
    linkageType: ''
    returnType: Size
    signature: Size btestimateparallelscan(Relation rel, int nkeys, int norderbys)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:660,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 712
    functionName: _bt_start_prim_scan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 2
    functionsReached:
    - Assert
    - _bt_parallel_done
    linkageType: ''
    returnType: bool
    signature: bool _bt_start_prim_scan(IndexScanDesc scan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:735,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:741,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:748,1
    - Dst: datumSerialize
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:752,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - rel
    - btscan
    - so
    argTypes:
    - Relation
    - BTParallelScanDesc
    - BTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 755
    functionName: _bt_parallel_serialize_arrays
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - Assert
    - memcpy
    - datumSerialize
    linkageType: ''
    returnType: void
    signature: "void _bt_parallel_serialize_arrays(Relation rel, BTParallelScanDesc
      btscan,\n\t\t\t\t\t\t\t  BTScanOpaque so)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:779,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:787,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:787,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:789,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:792,1
    - Dst: datumRestore
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:804,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:805,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - rel
    - btscan
    - so
    argTypes:
    - Relation
    - BTParallelScanDesc
    - BTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 762
    functionDepth: 1
    functionLinenumber: 762
    functionLinenumberEnd: 808
    functionName: _bt_parallel_restore_arrays
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - pfree
    - DatumGetPointer
    - datumRestore
    linkageType: ''
    returnType: void
    signature: "void _bt_parallel_restore_arrays(Relation rel, BTParallelScanDesc
      btscan,\n\t\t\t\t\t\t\tBTScanOpaque so)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:818,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - target
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 813
    functionDepth: 1
    functionLinenumber: 813
    functionLinenumberEnd: 824
    functionName: btinitparallelscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - ConditionVariableInit
    - LWLockInitialize
    linkageType: ''
    returnType: void
    signature: void btinitparallelscan(void *target)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:835,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:837,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:845,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 850
    functionName: btparallelrescan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - Assert
    - OffsetToPointer
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void btparallelrescan(IndexScanDesc scan)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:893,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:916,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:921,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:937,1
    - Dst: _bt_parallel_restore_arrays
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:945,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:973,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:978,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:981,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:983,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:987,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 52
    argCount: 4
    argNames:
    - scan
    - next_scan_page
    - last_curr_page
    - first
    argTypes:
    - IndexScanDesc
    - BlockNumber*
    - BlockNumber*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 872
    functionDepth: 2
    functionLinenumber: 872
    functionLinenumberEnd: 990
    functionName: _bt_parallel_seize
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - OffsetToPointer
    - BTScanPosInvalidate
    - LWLockAcquire
    - Assert
    - ConditionVariableSleep
    - _bt_parallel_restore_arrays
    - ConditionVariableCancelSleep
    - LWLockRelease
    - _bt_parallel_done
    linkageType: ''
    returnType: bool
    signature: "bool _bt_parallel_seize(IndexScanDesc scan, BlockNumber *next_scan_page,\n\t\t\t\t
      \  BlockNumber *last_curr_page, bool first)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1017,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1017,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1019,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1022,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1026,1
    - Dst: ConditionVariableSignal
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - scan
    - next_scan_page
    - curr_page
    argTypes:
    - IndexScanDesc
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1028
    functionName: _bt_parallel_release
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 1
    functionsReached:
    - OffsetToPointer
    - LWLockAcquire
    - Assert
    - ConditionVariableSignal
    - BlockNumberIsValid
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: "void _bt_parallel_release(IndexScanDesc scan, BlockNumber next_scan_page,\n\t\t\t\t\t
      BlockNumber curr_page)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1045,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1045,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1058,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1065,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1066,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1072,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1076,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1037
    functionDepth: 1
    functionLinenumber: 1037
    functionLinenumberEnd: 1077
    functionName: _bt_parallel_done
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 2
    functionsReached:
    - OffsetToPointer
    - LWLockAcquire
    - Assert
    - BTScanPosIsValid
    - ConditionVariableBroadcast
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void _bt_parallel_done(IndexScanDesc scan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1095,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1097,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1100,1
    - Dst: _bt_parallel_serialize_arrays
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1109,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - scan
    - curr_page
    argTypes:
    - IndexScanDesc
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1087
    functionDepth: 2
    functionLinenumber: 1087
    functionLinenumberEnd: 1112
    functionName: _bt_parallel_primscan_schedule
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 2
    functionsReached:
    - OffsetToPointer
    - LWLockAcquire
    - Assert
    - _bt_parallel_serialize_arrays
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void _bt_parallel_primscan_schedule(IndexScanDesc scan, BlockNumber
      curr_page)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1130,1
    - Dst: PG_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1134,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1134,1
    - Dst: _bt_start_vacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1136,1
    - Dst: btvacuumscan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1138,1
    - Dst: PG_END_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1140,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1140,1
    - Dst: _bt_end_vacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - info
    - stats
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1121
    functionDepth: 1
    functionLinenumber: 1121
    functionLinenumberEnd: 1144
    functionName: btbulkdelete
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - PG_ENSURE_ERROR_CLEANUP
    - PointerGetDatum
    - PG_END_ENSURE_ERROR_CLEANUP
    - btvacuumscan
    - _bt_start_vacuum
    - _bt_end_vacuum
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\nbtbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult
      *stats,\n\t\t\t IndexBulkDeleteCallback callback, void *callback_state)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _bt_vacuum_needs_cleanup
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1174,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1191,1
    - Dst: btvacuumscan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1208,1
    - Dst: _bt_set_cleanup_info
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1210,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1151
    functionDepth: 5
    functionLinenumber: 1151
    functionLinenumberEnd: 1225
    functionName: btvacuumcleanup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - _bt_set_cleanup_info
    - Assert
    - _bt_vacuum_needs_cleanup
    - btvacuumscan
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: 'IndexBulkDeleteResult *

      btvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1279,1
    - Dst: _bt_pendingfsm_init
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1289,1
    - Dst: RELATION_IS_LOCAL
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1316,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1324,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1337,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1338,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1340,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1343,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1359,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1361,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1363,1
    - Dst: btvacuumpage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1366,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1369,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1378,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1381,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1386,1
    - Dst: _bt_pendingfsm_finalize
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1397,1
    - Dst: IndexFreeSpaceMapVacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1399,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 5
    argNames:
    - info
    - stats
    - callback
    - callback_state
    - cycleid
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    - BTCycleId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1239
    functionDepth: 2
    functionLinenumber: 1239
    functionLinenumberEnd: 1400
    functionName: btvacuumscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 2
    functionsReached:
    - RELATION_IS_LOCAL
    - read_stream_next_buffer
    - read_stream_end
    - _bt_pendingfsm_finalize
    - MemoryContextDelete
    - read_stream_begin_relation
    - vacuum_delay_point
    - BufferIsValid
    - LockRelationForExtension
    - AllocSetContextCreate
    - RelationGetNumberOfBlocks
    - btvacuumpage
    - IndexFreeSpaceMapVacuum
    - UnlockRelationForExtension
    - pgstat_progress_update_param
    - read_stream_reset
    - _bt_pendingfsm_init
    linkageType: ''
    returnType: void
    signature: "void btvacuumscan(IndexVacuumInfo *info, IndexBulkDeleteResult *stats,\n\t\t\t
      IndexBulkDeleteCallback callback, void *callback_state,\n\t\t\t BTCycleId cycleid)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1426,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1437,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1438,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1440,1
    - Dst: _bt_checkpage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1442,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1443,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1446,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1464,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1464,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1466,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1467,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1468,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1469,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1470,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1471,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1488,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1491,1
    - Dst: BTPageIsRecyclable
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1496,1
    - Dst: RecordFreeIndexPage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1499,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1503,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1511,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1521,1
    - Dst: _bt_upgradelockbufcleanup
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1539,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1553,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1559,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1560,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1568,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1572,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1573,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1575,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1575,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1576,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1579,1
    - Dst: btreevacuumposting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1601,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1601,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1612,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1612,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1623,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1625,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1626,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1640,1
    - Dst: _bt_delitems_vacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1641,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1646,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1664,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1669,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1695,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1703,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1711,1
    - Dst: _bt_pagedel
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1712,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1714,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1718,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1725,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1733,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 113
    argCount: 2
    argNames:
    - vstate
    - buf
    argTypes:
    - BTVacState*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1414
    functionDepth: 8
    functionLinenumber: 1414
    functionLinenumberEnd: 1739
    functionName: btvacuumpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 1
    functionsReached:
    - callback
    - BTreeTupleIsPosting
    - errcode
    - PageIsNew
    - P_RIGHTMOST
    - BufferGetPage
    - PageGetItem
    - vacuum_delay_point
    - RelationGetRelationName
    - _bt_checkpage
    - P_ISHALFDEAD
    - MemoryContextReset
    - _bt_lockbuf
    - Assert
    - BufferGetBlockNumber
    - pfree
    - P_ISDELETED
    - PageGetMaxOffsetNumber
    - P_ISLEAF
    - _bt_delitems_vacuum
    - btreevacuumposting
    - errmsg_internal
    - _bt_upgradelockbufcleanup
    - MarkBufferDirtyHint
    - ReadBufferExtended
    - ereport
    - PageGetItemId
    - P_FIRSTDATAKEY
    - BTreeTupleIsPivot
    - BTPageGetOpaque
    - OffsetNumberNext
    - _bt_pagedel
    - BTPageIsRecyclable
    - BTreeTupleGetNPosting
    - RecordFreeIndexPage
    - MemoryContextSwitchTo
    - _bt_relbuf
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber btvacuumpage(BTVacState *vstate, Buffer buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1757,1
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1758,1
    - Dst: BTVacState*::callback
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1763,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1777,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - vstate
    - posting
    - updatedoffset
    - nremaining
    argTypes:
    - BTVacState*
    - IndexTuple
    - OffsetNumber
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1794
      start: 1752
    functionDepth: 4
    functionLinenumber: 1752
    functionLinenumberEnd: 1794
    functionName: btreevacuumposting
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 1
    functionsReached:
    - BTreeTupleGetPosting
    - BTVacState*::callback
    - BTreeTupleGetNPosting
    - palloc
    linkageType: ''
    returnType: BTVacuumPosting
    signature: "BTVacuumPosting btreevacuumposting(BTVacState *vstate, IndexTuple
      posting,\n\t\t\t\t   OffsetNumber updatedoffset, int *nremaining)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - index
    - attno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1801
    functionDepth: 0
    functionLinenumber: 1801
    functionLinenumberEnd: 1805
    functionName: btcanreturn
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool btcanreturn(Relation index, int attno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getrootheight
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1814
      start: 1810
    functionDepth: 6
    functionLinenumber: 1810
    functionLinenumberEnd: 1814
    functionName: btgettreeheight
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - _bt_getrootheight
    linkageType: ''
    returnType: int
    signature: int btgettreeheight(Relation rel)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - strategy
    - opfamily
    argTypes:
    - StrategyNumber
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1834
      start: 1816
    functionDepth: 0
    functionLinenumber: 1816
    functionLinenumberEnd: 1834
    functionName: bttranslatestrategy
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CompareType
    signature: CompareType bttranslatestrategy(StrategyNumber strategy, Oid opfamily)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - cmptype
    - opfamily
    argTypes:
    - CompareType
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1836
    functionDepth: 0
    functionLinenumber: 1836
    functionLinenumberEnd: 1854
    functionName: bttranslatecmptype
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: StrategyNumber
    signature: StrategyNumber bttranslatecmptype(CompareType cmptype, Oid opfamily)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - shared
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: ParallelTableScanFromBTShared
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ParallelTableScanFromBTShared(shared)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:307,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:323,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:324,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:325,1
    - Dst: _bt_spools_heapscan
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:327,1
    - Dst: _bt_leafbuild
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:334,1
    - Dst: _bt_spooldestroy
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:335,1
    - Dst: _bt_spooldestroy
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:337,1
    - Dst: _bt_end_parallel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:339,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:341,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:349,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:350,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 355
    functionName: btbuild
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - elog
    - _bt_leafbuild
    - palloc_object
    - RelationGetNumberOfBlocks
    - _bt_spools_heapscan
    - ResetUsage
    - RelationGetRelationName
    - _bt_spooldestroy
    - _bt_end_parallel
    - ShowUsage
    linkageType: ''
    returnType: IndexBuildResult
    signature: 'IndexBuildResult *

      btbuild(Relation heap, Relation index, IndexInfo *indexInfo)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:372,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:391,1
    - Dst: _bt_begin_parallel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:396,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:405,1
    - Dst: tuplesort_begin_index_btree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:434,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:446,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:463,1
    - Dst: tuplesort_begin_index_btree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:475,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:481,1
    - Dst: _bt_parallel_heapscan
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:485,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:503,1
    - Dst: _bt_spooldestroy
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:510,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 4
    argNames:
    - heap
    - index
    - buildstate
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - BTBuildState*
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 515
    functionName: _bt_spools_heapscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - tuplesort_begin_index_btree
    - table_index_build_scan
    - pgstat_progress_update_multi_param
    - _bt_parallel_heapscan
    - _bt_begin_parallel
    - _bt_spooldestroy
    - pgstat_progress_update_param
    linkageType: ''
    returnType: double
    signature: "double _bt_spools_heapscan(Relation heap, Relation index, BTBuildState
      *buildstate,\n\t\t\t\t\tIndexInfo *indexInfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:523,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - btspool
    argTypes:
    - BTSpool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 525
    functionName: _bt_spooldestroy
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 2
    functionsReached:
    - pfree
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: void _bt_spooldestroy(BTSpool *btspool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_putindextuplevalues
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - btspool
    - self
    - values
    - isnull
    argTypes:
    - BTSpool*
    - ItemPointerData*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 535
    functionName: _bt_spool
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - tuplesort_putindextuplevalues
    linkageType: ''
    returnType: void
    signature: void _bt_spool(BTSpool *btspool, const ItemPointerData *self, const
      Datum *values, const bool *isnull)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:549,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:550,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:555,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:557,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:560,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:562,1
    - Dst: _bt_mkscankey
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:567,1
    - Dst: _bt_allequalimage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:569,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:574,1
    - Dst: _bt_load
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - btspool
    - btspool2
    argTypes:
    - BTSpool*
    - BTSpool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 577
    functionName: _bt_leafbuild
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - _bt_allequalimage
    - _bt_load
    - tuplesort_performsort
    - _bt_mkscankey
    - ResetUsage
    - pgstat_progress_update_param
    - ShowUsage
    linkageType: ''
    returnType: void
    signature: void _bt_leafbuild(BTSpool *btspool, BTSpool *btspool2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _bt_spool
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:597,1
    - Dst: _bt_spool
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:602,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 6
    argNames:
    - index
    - tid
    - values
    - isnull
    - tupleIsAlive
    - state
    argTypes:
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 582
    functionDepth: 2
    functionLinenumber: 582
    functionLinenumberEnd: 606
    functionName: _bt_build_callback
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - _bt_spool
    linkageType: ''
    returnType: void
    signature: "void _bt_build_callback(Relation index,\n\t\t\t\t   ItemPointer tid,\n\t\t\t\t
      \  Datum *values,\n\t\t\t\t   bool *isnull,\n\t\t\t\t   bool tupleIsAlive,\n\t\t\t\t
      \  void *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:618,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:622,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - wstate
    - level
    argTypes:
    - BTWriteState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 611
    functionDepth: 2
    functionLinenumber: 611
    functionLinenumberEnd: 635
    functionName: _bt_blnewpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - smgr_bulk_get_buf
    - BTPageGetOpaque
    - _bt_pageinit
    linkageType: ''
    returnType: BulkWriteBuffer
    signature: BulkWriteBuffer _bt_blnewpage(BTWriteState *wstate, uint32 level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - wstate
    - buf
    - blkno
    argTypes:
    - BTWriteState*
    - BulkWriteBuffer
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 645
    functionName: _bt_blwritepage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - smgr_bulk_write
    linkageType: ''
    returnType: void
    signature: void _bt_blwritepage(BTWriteState *wstate, BulkWriteBuffer buf, BlockNumber
      blkno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:654,1
    - Dst: _bt_blnewpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:657,1
    - Dst: BTGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - wstate
    - level
    argTypes:
    - BTWriteState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 651
    functionDepth: 3
    functionLinenumber: 651
    functionLinenumberEnd: 677
    functionName: _bt_pagestate
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - _bt_blnewpage
    - BTGetTargetPageFreeSpace
    linkageType: ''
    returnType: BTPageState
    signature: 'BTPageState *

      _bt_pagestate(BTWriteState *wstate, uint32 level)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:695,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:696,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:697,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:698,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - rightmostpage
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 706
    functionName: _bt_slideleft
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - Assert
    - PageGetMaxOffsetNumber
    - OffsetNumberNext
    - PageGetItemId
    linkageType: ''
    returnType: void
    signature: void _bt_slideleft(Page rightmostpage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:732,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:737,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:738,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - page
    - itemsize
    - itup
    - itup_off
    - newfirstdataitem
    argTypes:
    - Page
    - Size
    - IndexTupleData*
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 719
    functionDepth: 3
    functionLinenumber: 719
    functionLinenumberEnd: 739
    functionName: _bt_sortaddtup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - PageAddItem
    - BTreeTupleSetNAtts
    - elog
    linkageType: ''
    returnType: void
    signature: "void _bt_sortaddtup(Page page,\n\t\t\t   Size itemsize,\n\t\t\t   const
      IndexTupleData *itup,\n\t\t\t   OffsetNumber itup_off,\n\t\t\t   bool newfirstdataitem)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:805,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:814,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:815,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:816,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:835,1
    - Dst: _bt_check_third_page
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:836,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:857,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:858,1
    - Dst: _bt_blnewpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:872,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:885,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:886,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:887,1
    - Dst: _bt_sortaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:888,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:888,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:900,1
    - Dst: ItemIdSetUnused
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:902,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:933,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:933,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:934,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:936,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:936,1
    - Dst: _bt_truncate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:937,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:939,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:939,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:940,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:941,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:944,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:945,1
    - Dst: _bt_pagestate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:953,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:955,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:955,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:956,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:957,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:958,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:959,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:959,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:960,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:960,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:961,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:962,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:963,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:969,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:975,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:976,1
    - Dst: _bt_blwritepage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:987,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1007,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1008,1
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1010,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1016,1
    - Dst: _bt_sortaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1017,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 64
    argCount: 4
    argNames:
    - wstate
    - state
    - itup
    - truncextra
    argTypes:
    - BTWriteState*
    - BTPageState*
    - IndexTuple
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 788
    functionDepth: 4
    functionLinenumber: 788
    functionLinenumberEnd: 1023
    functionName: _bt_buildadd
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - _bt_pagestate
    - _bt_buildadd
    - BTreeTupleSetNAtts
    - PageGetItem
    - BTreeTupleGetNAtts
    - PageIndexTupleOverwrite
    - elog
    - _bt_check_third_page
    - BTreeTupleSetDownLink
    - Assert
    - _bt_sortaddtup
    - pfree
    - _bt_blwritepage
    - IndexRelationGetNumberOfKeyAttributes
    - MAXALIGN
    - CopyIndexTuple
    - PageGetFreeSpace
    - IndexTupleSize
    - palloc0_object
    - _bt_truncate
    - CHECK_FOR_INTERRUPTS
    - PageGetItemId
    - P_LEFTMOST
    - unlikely
    - BTPageGetOpaque
    - ItemIdSetUnused
    - OffsetNumberNext
    - OffsetNumberPrev
    - _bt_blnewpage
    - ItemIdGetLength
    linkageType: ''
    returnType: void
    signature: "void _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple
      itup,\n\t\t\t Size truncextra)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1036,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1039,1
    - Dst: _bt_form_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1046,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1050,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1051,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1053,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1054,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - wstate
    - state
    - dstate
    argTypes:
    - BTWriteState*
    - BTPageState*
    - BTDedupState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1032
    functionDepth: 5
    functionLinenumber: 1032
    functionLinenumberEnd: 1061
    functionName: _bt_sort_dedup_finish_pending
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - _bt_buildadd
    - Assert
    - pfree
    - BTreeTupleGetPostingOffset
    - _bt_form_posting
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void _bt_sort_dedup_finish_pending(BTWriteState *wstate, BTPageState
      *state,\n\t\t\t\t\t\t\t  BTDedupState dstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1083,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1101,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1101,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1102,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1103,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1104,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1105,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1105,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1106,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1107,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1108,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1109,1
    - Dst: _bt_slideleft
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1117,1
    - Dst: _bt_blwritepage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1118,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1128,1
    - Dst: _bt_initmetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1129,1
    - Dst: _bt_blwritepage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1131,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - wstate
    - state
    argTypes:
    - BTWriteState*
    - BTPageState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1066
    functionDepth: 5
    functionLinenumber: 1066
    functionLinenumberEnd: 1132
    functionName: _bt_uppershutdown
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - smgr_bulk_get_buf
    - _bt_buildadd
    - BTreeTupleSetDownLink
    - Assert
    - pfree
    - _bt_blwritepage
    - IndexRelationGetNumberOfKeyAttributes
    - P_LEFTMOST
    - BTreeTupleGetNAtts
    - _bt_slideleft
    - _bt_initmetapage
    - BTPageGetOpaque
    linkageType: ''
    returnType: void
    signature: void _bt_uppershutdown(BTWriteState *wstate, BTPageState *state)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1146,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1148,1
    - Dst: smgr_bulk_start_rel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1153,1
    - Dst: BTGetDeduplicateItems
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1156,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1166,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1167,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1170,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1186,1
    - Dst: PrepareSortSupportFromIndexRel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1190,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1214,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1215,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1217,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1237,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1238,1
    - Dst: _bt_pagestate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1248,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1252,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1253,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1257,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1258,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1262,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1265,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1272,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1287,1
    - Dst: _bt_pagestate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1293,1
    - Dst: MAXALIGN_DOWN
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1309,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1311,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1314,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1314,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1317,1
    - Dst: _bt_dedup_save_htid
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1319,1
    - Dst: _bt_sort_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1333,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1334,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1337,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1337,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1342,1
    - Dst: _bt_sort_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1352,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1353,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1354,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1357,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1362,1
    - Dst: _bt_pagestate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1367,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1369,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1372,1
    - Dst: _bt_uppershutdown
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1378,1
    - Dst: smgr_bulk_finish
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1379,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 102
    argCount: 3
    argNames:
    - wstate
    - btspool
    - btspool2
    argTypes:
    - BTWriteState*
    - BTSpool*
    - BTSpool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1138
    functionDepth: 6
    functionLinenumber: 1138
    functionLinenumberEnd: 1380
    functionName: _bt_load
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - _bt_pagestate
    - _bt_buildadd
    - _bt_sort_dedup_finish_pending
    - MAXALIGN_DOWN
    - smgr_bulk_finish
    - _bt_uppershutdown
    - Assert
    - RelationGetDescr
    - pfree
    - PrepareSortSupportFromIndexRel
    - ApplySortComparator
    - _bt_dedup_start_pending
    - palloc_object
    - IndexRelationGetNumberOfKeyAttributes
    - CopyIndexTuple
    - tuplesort_getindextuple
    - ItemPointerCompare
    - palloc0_array
    - _bt_keep_natts_fast
    - index_getattr
    - _bt_dedup_save_htid
    - BTGetDeduplicateItems
    - palloc
    - pgstat_progress_update_param
    - smgr_bulk_start_rel
    linkageType: ''
    returnType: void
    signature: void _bt_load(BTWriteState *wstate, BTSpool *btspool, BTSpool *btspool2)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1410,1
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1425,1
    - Dst: CreateParallelContext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1426,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1441,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1441,1
    - Dst: _bt_parallel_estimate_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1447,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1448,1
    - Dst: tuplesort_estimate_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1449,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1450,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1457,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1460,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1461,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1472,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1473,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1474,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1475,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1476,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1477,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1482,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1483,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1484,1
    - Dst: InitializeParallelDSM
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1490,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1495,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1496,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1497,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1498,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1503,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1505,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1506,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1511,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1512,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1513,1
    - Dst: table_parallelscan_initialize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1520,1
    - Dst: ParallelTableScanFromBTShared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1521,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1528,1
    - Dst: tuplesort_initialize_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1529,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1532,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1533,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1545,1
    - Dst: tuplesort_initialize_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1546,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1549,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1557,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1558,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1559,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1566,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1567,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1568,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1569,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1570,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1571,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1574,1
    - Dst: _bt_end_parallel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1589,1
    - Dst: _bt_leader_participate_as_worker
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1598,1
    - Dst: WaitForParallelWorkersToAttach
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1604,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 90
    argCount: 3
    argNames:
    - buildstate
    - isconcurrent
    - request
    argTypes:
    - BTBuildState*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1398
    functionDepth: 2
    functionLinenumber: 1398
    functionLinenumberEnd: 1605
    functionName: _bt_begin_parallel
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - shm_toc_estimate_chunk
    - RegisterSnapshot
    - _bt_parallel_estimate_shared
    - IsMVCCSnapshot
    - _bt_leader_participate_as_worker
    - shm_toc_allocate
    - tuplesort_initialize_shared
    - memcpy
    - LaunchParallelWorkers
    - Assert
    - CreateParallelContext
    - pgstat_get_my_query_id
    - UnregisterSnapshot
    - palloc0_object
    - DestroyParallelContext
    - shm_toc_estimate_keys
    - mul_size
    - ParallelTableScanFromBTShared
    - GetTransactionSnapshot
    - strlen
    - EnterParallelMode
    - ConditionVariableInit
    - _bt_end_parallel
    - table_parallelscan_initialize
    - SpinLockInit
    - InitializeParallelDSM
    - tuplesort_estimate_shared
    - shm_toc_insert
    - WaitForParallelWorkersToAttach
    - ExitParallelMode
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void _bt_begin_parallel(BTBuildState *buildstate, bool isconcurrent,
      int request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WaitForParallelWorkersToFinish
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1616,1
    - Dst: InstrAccumParallelQuery
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1623,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1626,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1627,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1628,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1629,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - btleader
    argTypes:
    - BTLeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1630
      start: 1610
    functionDepth: 1
    functionLinenumber: 1610
    functionLinenumberEnd: 1630
    functionName: _bt_end_parallel
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 2
    functionsReached:
    - DestroyParallelContext
    - InstrAccumParallelQuery
    - WaitForParallelWorkersToFinish
    - ExitParallelMode
    - IsMVCCSnapshot
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void _bt_end_parallel(BTLeader *btleader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1640,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1640,1
    - Dst: table_parallelscan_estimate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - heap
    - snapshot
    argTypes:
    - Relation
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1642
      start: 1636
    functionDepth: 1
    functionLinenumber: 1636
    functionLinenumberEnd: 1642
    functionName: _bt_parallel_estimate_shared
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - table_parallelscan_estimate
    - add_size
    - BUFFERALIGN
    linkageType: ''
    returnType: Size
    signature: Size _bt_parallel_estimate_shared(Relation heap, Snapshot snapshot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1666,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1673,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1676,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1678,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1682,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - buildstate
    - brokenhotchain
    argTypes:
    - BTBuildState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1656
    functionDepth: 2
    functionLinenumber: 1656
    functionLinenumberEnd: 1685
    functionName: _bt_parallel_heapscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - ConditionVariableSleep
    - SpinLockAcquire
    - ConditionVariableCancelSleep
    - SpinLockRelease
    linkageType: ''
    returnType: double
    signature: double _bt_parallel_heapscan(BTBuildState *buildstate, bool *brokenhotchain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1699,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1711,1
    - Dst: _bt_parallel_scan_and_sort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1727,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1734,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1735,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - buildstate
    argTypes:
    - BTBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1690
    functionDepth: 1
    functionLinenumber: 1690
    functionLinenumberEnd: 1738
    functionName: _bt_leader_participate_as_worker
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - _bt_parallel_scan_and_sort
    - ResetUsage
    - ShowUsage
    linkageType: ''
    returnType: void
    signature: void _bt_leader_participate_as_worker(BTBuildState *buildstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1762,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1769,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1773,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1777,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1780,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1795,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1798,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1799,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1802,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1809,1
    - Dst: tuplesort_attach_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1810,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1819,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1826,1
    - Dst: tuplesort_attach_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1827,1
    - Dst: InstrStartParallelQuery
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1831,1
    - Dst: _bt_parallel_scan_and_sort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1835,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1839,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1840,1
    - Dst: InstrEndParallelQuery
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1841,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1847,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1848,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1852,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1853,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 48
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1743
    functionDepth: 2
    functionLinenumber: 1743
    functionLinenumberEnd: 1854
    functionName: _bt_parallel_build_main
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - pgstat_report_query_id
    - shm_toc_lookup
    - InstrStartParallelQuery
    - Assert
    - _bt_parallel_scan_and_sort
    - index_open
    - table_open
    - InstrEndParallelQuery
    - tuplesort_attach_shared
    - index_close
    - pgstat_report_activity
    - ResetUsage
    - table_close
    - ShowUsage
    linkageType: ''
    returnType: void
    signature: void _bt_parallel_build_main(dsm_segment *seg, shm_toc *toc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1880,1
    - Dst: tuplesort_begin_index_btree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1886,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1907,1
    - Dst: tuplesort_begin_index_btree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1912,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1913,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1928,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1930,1
    - Dst: ParallelTableScanFromBTShared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1931,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1933,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1939,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1941,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1945,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1947,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1954,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1962,1
    - Dst: ConditionVariableSignal
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1965,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1968,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1970,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 46
    argCount: 7
    argNames:
    - btspool
    - btspool2
    - btshared
    - sharedsort
    - sharedsort2
    - sortmem
    - progress
    argTypes:
    - BTSpool*
    - BTSpool*
    - BTShared*
    - Sharedsort*
    - Sharedsort*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1971
      start: 1868
    functionDepth: 2
    functionLinenumber: 1868
    functionLinenumberEnd: 1971
    functionName: _bt_parallel_scan_and_sort
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - tuplesort_begin_index_btree
    - table_beginscan_parallel
    - table_index_build_scan
    - tuplesort_end
    - ConditionVariableSignal
    - BuildIndexInfo
    - tuplesort_performsort
    - ParallelTableScanFromBTShared
    - SpinLockRelease
    - Min
    - SpinLockAcquire
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: "void _bt_parallel_scan_and_sort(BTSpool *btspool, BTSpool *btspool2,\n\t\t\t\t\t\t
      \  BTShared *btshared, Sharedsort *sharedsort,\n\t\t\t\t\t\t   Sharedsort *sharedsort2,
      int sortmem, bool progress)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: _bt_mkscankey
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:116,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:138,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:157,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:157,1
    - Dst: _bt_search_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:170,1
    - Dst: _bt_check_unique
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:213,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:216,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:216,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:219,1
    - Dst: SpeculativeInsertionWait
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:228,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:230,1
    - Dst: _bt_freestack
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:234,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:254,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:254,1
    - Dst: _bt_findinsertloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:261,1
    - Dst: _bt_insertonpg
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:263,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:270,1
    - Dst: _bt_freestack
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:275,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:276,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 5
    argNames:
    - rel
    - itup
    - checkUnique
    - indexUnchanged
    - heapRel
    argTypes:
    - Relation
    - IndexTuple
    - IndexUniqueCheck
    - bool
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 104
    functionDepth: 5
    functionLinenumber: 104
    functionLinenumberEnd: 279
    functionName: _bt_doinsert
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - _bt_findinsertloc
    - SpeculativeInsertionWait
    - Assert
    - pfree
    - BufferGetBlockNumber
    - _bt_relbuf
    - _bt_freestack
    - TransactionIdIsValid
    - unlikely
    - XactLockTableWait
    - CheckForSerializableConflictIn
    - _bt_mkscankey
    - MAXALIGN
    - _bt_insertonpg
    - _bt_check_unique
    - _bt_search_insert
    - IndexTupleSize
    linkageType: ''
    returnType: bool
    signature: "bool _bt_doinsert(Relation rel, IndexTuple itup,\n\t\t\t IndexUniqueCheck
      checkUnique, bool indexUnchanged,\n\t\t\t Relation heapRel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:324,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:326,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:329,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:329,1
    - Dst: _bt_conditionallockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:330,1
    - Dst: _bt_checkpage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:335,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:336,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:337,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:347,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:348,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:349,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:350,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:351,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:352,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:370,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:375,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:379,1
    - Dst: _bt_search
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:383,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - rel
    - heaprel
    - insertstate
    argTypes:
    - Relation
    - Relation
    - BTInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 319
    functionDepth: 5
    functionLinenumber: 319
    functionLinenumberEnd: 385
    functionName: _bt_search_insert
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - _bt_checkpage
    - RelationSetTargetBlock
    - ReleaseBuffer
    - _bt_search
    - _bt_compare
    - _bt_conditionallockbuf
    - Assert
    - P_RIGHTMOST
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - RelationGetTargetBlock
    - ReadBuffer
    - BTPageGetOpaque
    - P_IGNORE
    - P_ISLEAF
    - PageGetFreeSpace
    - _bt_relbuf
    linkageType: ''
    returnType: BTStack
    signature: BTStack _bt_search_insert(Relation rel, Relation heaprel, BTInsertState
      insertstate)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:433,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:435,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:436,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:445,1
    - Dst: _bt_binsrch_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:488,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:489,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:489,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:490,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:491,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:491,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:507,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:508,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:516,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:520,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:521,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:521,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:528,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:542,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:543,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:552,1
    - Dst: table_index_fetch_tuple_check
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:563,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:580,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:589,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:592,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:595,1
    - Dst: table_index_fetch_tuple_check
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:621,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:642,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:642,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:653,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:654,1
    - Dst: index_deform_tuple
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:663,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:663,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:666,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:669,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:670,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:671,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:672,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:673,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:675,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:676,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:681,1
    - Dst: BufferBeginSetHintBits
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:704,1
    - Dst: ItemIdMarkDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:706,1
    - Dst: BufferFinishSetHintBits
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:708,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:721,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:732,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:739,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:741,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:742,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:750,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:751,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:752,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:753,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:755,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:756,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:757,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:762,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:763,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:774,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:775,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:776,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:777,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:778,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:779,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:780,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:783,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 125
    argCount: 6
    argNames:
    - rel
    - insertstate
    - heapRel
    - checkUnique
    - is_unique
    - speculativeToken
    argTypes:
    - Relation
    - BTInsertState
    - Relation
    - IndexUniqueCheck
    - bool*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 410
    functionDepth: 6
    functionLinenumber: 410
    functionLinenumberEnd: 786
    functionName: _bt_check_unique
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - BTreeTupleIsPosting
    - errcode
    - _bt_relandgetbuf
    - P_RIGHTMOST
    - BufferGetPage
    - PageGetItem
    - errhint
    - RelationGetRelationName
    - errtableconstraint
    - elog
    - InitDirtySnapshot
    - _bt_compare
    - Assert
    - RelationGetDescr
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - errmsg
    - BuildIndexValueDescription
    - table_index_fetch_tuple_check
    - _bt_binsrch_insert
    - BufferFinishSetHintBits
    - ItemIdIsDead
    - ereport
    - BTreeTupleGetPostingN
    - PageGetItemId
    - index_deform_tuple
    - P_FIRSTDATAKEY
    - BTreeTupleIsPivot
    - ItemPointerCompare
    - BTPageGetOpaque
    - ItemIdMarkDead
    - P_IGNORE
    - CheckForSerializableConflictIn
    - OffsetNumberNext
    - BTreeTupleGetNPosting
    - BufferBeginSetHintBits
    - errdetail
    - TransactionIdIsValid
    - _bt_relbuf
    linkageType: ''
    returnType: TransactionId
    signature: "TransactionId _bt_check_unique(Relation rel, BTInsertState insertstate,
      Relation heapRel,\n\t\t\t\t IndexUniqueCheck checkUnique, bool *is_unique,\n\t\t\t\t
      uint32 *speculativeToken)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:837,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:841,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:844,1
    - Dst: _bt_check_third_page
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:848,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:848,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:848,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:849,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:850,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:851,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:852,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:878,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:896,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:900,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:901,1
    - Dst: _bt_stepright
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:904,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:906,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:907,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:917,1
    - Dst: _bt_delete_or_dedup_one_page
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:918,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:952,1
    - Dst: P_HAS_GARBAGE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:958,1
    - Dst: _bt_delete_or_dedup_one_page
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:961,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:964,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:980,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:983,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:984,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:985,1
    - Dst: _bt_stepright
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:988,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:990,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:991,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:999,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:999,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1000,1
    - Dst: _bt_binsrch_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1002,1
    - Dst: _bt_delete_or_dedup_one_page
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1012,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1019,1
    - Dst: _bt_binsrch_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1021,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1022,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 54
    argCount: 6
    argNames:
    - rel
    - insertstate
    - checkingunique
    - indexUnchanged
    - stack
    - heapRel
    argTypes:
    - Relation
    - BTInsertState
    - bool
    - bool
    - BTStack
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 828
    functionDepth: 4
    functionLinenumber: 828
    functionLinenumberEnd: 1026
    functionName: _bt_findinsertloc
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - _bt_check_third_page
    - _bt_binsrch_insert
    - _bt_compare
    - P_INCOMPLETE_SPLIT
    - Assert
    - _bt_delete_or_dedup_one_page
    - pg_prng_uint32
    - P_RIGHTMOST
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - unlikely
    - _bt_stepright
    - P_HAS_GARBAGE
    - BTPageGetOpaque
    - P_ISLEAF
    - PageGetFreeSpace
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber _bt_findinsertloc(Relation rel,\n\t\t\t\t  BTInsertState
      insertstate,\n\t\t\t\t  bool checkingunique,\n\t\t\t\t  bool indexUnchanged,\n\t\t\t\t
      \ BTStack stack,\n\t\t\t\t  Relation heapRel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1049,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1050,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1051,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1057,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1058,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1059,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1067,1
    - Dst: _bt_finish_split
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1069,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1074,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1076,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1077,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1078,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1083,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - rel
    - heaprel
    - insertstate
    - stack
    argTypes:
    - Relation
    - Relation
    - BTInsertState
    - BTStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1040
    functionDepth: 6
    functionLinenumber: 1040
    functionLinenumberEnd: 1086
    functionName: _bt_stepright
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - elog
    - P_INCOMPLETE_SPLIT
    - Assert
    - _bt_relandgetbuf
    - _bt_finish_split
    - P_RIGHTMOST
    - BufferGetPage
    - RelationGetRelationName
    - BTPageGetOpaque
    - P_IGNORE
    - _bt_relbuf
    linkageType: ''
    returnType: void
    signature: "void _bt_stepright(Relation rel, Relation heaprel, BTInsertState insertstate,\n\t\t\t
      \ BTStack stack)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1142,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1143,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1144,1
    - Dst: P_ISROOT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1145,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1146,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1147,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1147,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1150,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1152,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1153,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1155,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1156,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1158,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1158,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1159,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1159,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1161,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1169,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1169,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1185,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1186,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1199,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1199,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1200,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1201,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1202,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1203,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1204,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1205,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1206,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1210,1
    - Dst: _bt_swap_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1211,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1215,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1229,1
    - Dst: _bt_split
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1232,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1234,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1235,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1236,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1257,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1258,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1260,1
    - Dst: _bt_insert_parent
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1263,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1281,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1282,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1282,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1284,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1285,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1286,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1291,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1297,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1300,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1300,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1300,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1302,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1303,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1304,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1304,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1306,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1308,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1312,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1313,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1315,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1324,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1327,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1327,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1329,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1333,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1342,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1356,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1363,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1370,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1379,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1381,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1386,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1390,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1390,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1404,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1405,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1406,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1409,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1412,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1414,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1415,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1417,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1417,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1419,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1421,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1424,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1425,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1427,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1435,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1438,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1447,1
    - Dst: _bt_getrootheight
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1448,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1449,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1456,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1457,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 121
    argCount: 11
    argNames:
    - rel
    - heaprel
    - itup_key
    - buf
    - cbuf
    - stack
    - itup
    - itemsz
    - newitemoff
    - postingoff
    - split_only_page
    argTypes:
    - Relation
    - Relation
    - BTScanInsert
    - Buffer
    - Buffer
    - BTStack
    - IndexTuple
    - Size
    - OffsetNumber
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1459
      start: 1118
    functionDepth: 7
    functionLinenumber: 1118
    functionLinenumberEnd: 1459
    functionName: _bt_insertonpg
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - RelationSetTargetBlock
    - _bt_swap_posting
    - XLogInsert
    - BTreeTupleIsPosting
    - errcode
    - BlockNumberIsValid
    - P_RIGHTMOST
    - BufferGetPage
    - XLogRegisterData
    - BTreeTupleGetNAtts
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - RelationGetRelationName
    - XLogRegisterBufData
    - _bt_insert_parent
    - elog
    - P_ISROOT
    - memcpy
    - XLogBeginInsert
    - Assert
    - pfree
    - BufferGetBlockNumber
    - _bt_getrootheight
    - _bt_split
    - XLogGetFakeLSN
    - IndexRelationGetNumberOfKeyAttributes
    - MAXALIGN
    - CopyIndexTuple
    - P_ISLEAF
    - ItemPointerGetBlockNumber
    - PageGetFreeSpace
    - IndexTupleSize
    - PageSetLSN
    - errmsg_internal
    - ItemIdIsDead
    - ereport
    - PageGetItemId
    - P_LEFTMOST
    - PageAddItem
    - unlikely
    - BufferIsValid
    - P_FIRSTDATAKEY
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRegisterBuffer
    - INJECTION_POINT
    - OffsetNumberNext
    - P_INCOMPLETE_SPLIT
    - PredicateLockPageSplit
    - _bt_upgrademetapage
    - IndexRelationGetNumberOfAttributes
    - BTPageGetMeta
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - _bt_getbuf
    - END_CRIT_SECTION
    - _bt_relbuf
    linkageType: ''
    returnType: void
    signature: "void _bt_insertonpg(Relation rel,\n\t\t\t   Relation heaprel,\n\t\t\t
      \  BTScanInsert itup_key,\n\t\t\t   Buffer buf,\n\t\t\t   Buffer cbuf,\n\t\t\t
      \  BTStack stack,\n\t\t\t   IndexTuple itup,\n\t\t\t   Size itemsz,\n\t\t\t
      \  OffsetNumber newitemoff,\n\t\t\t   int postingoff,\n\t\t\t   bool split_only_page)"
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1536,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1537,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1538,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1539,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1540,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1541,1
    - Dst: _bt_findsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1567,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1572,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1572,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1573,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1593,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1617,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1617,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1619,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1619,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1620,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1652,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1653,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1654,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1674,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1675,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1675,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1676,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1677,1
    - Dst: _bt_truncate
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1682,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1683,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1721,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1721,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1722,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1722,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1723,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1724,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1724,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1724,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1725,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1726,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1728,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1729,1
    - Dst: _bt_allocbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1741,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1748,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1748,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1749,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1749,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1750,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1752,1
    - Dst: _bt_vacuum_cycleid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1763,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1789,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1790,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1791,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1792,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1792,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1793,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1793,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1794,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1795,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1797,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1799,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1801,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1819,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1819,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1823,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1824,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1825,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1830,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1830,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1831,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1831,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1831,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1840,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1841,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1844,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1846,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1848,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1852,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1853,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1856,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1858,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1860,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1867,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1869,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1871,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1873,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1877,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1880,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1882,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1884,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1896,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1897,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1900,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1902,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1904,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1914,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1915,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1916,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1919,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1920,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1921,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1924,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1952,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1961,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1970,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1971,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1972,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1974,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1975,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1980,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1989,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1990,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1993,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1997,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2010,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2011,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2013,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2014,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2017,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2019,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2052,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2053,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2054,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2054,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2055,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2062,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2063,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2065,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2066,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2066,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2078,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2083,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2086,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2088,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2089,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2091,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2093,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2093,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2095,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2099,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2103,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2107,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 201
    argCount: 11
    argNames:
    - rel
    - heaprel
    - itup_key
    - buf
    - cbuf
    - newitemoff
    - newitemsz
    - newitem
    - orignewitem
    - nposting
    - postingoff
    argTypes:
    - Relation
    - Relation
    - BTScanInsert
    - Buffer
    - Buffer
    - OffsetNumber
    - Size
    - IndexTuple
    - IndexTuple
    - IndexTuple
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 1488
    functionDepth: 6
    functionLinenumber: 1488
    functionLinenumberEnd: 2111
    functionName: _bt_split
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - BTreeTupleIsPosting
    - errcode
    - _bt_findsplitloc
    - P_RIGHTMOST
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - BTreeTupleGetNAtts
    - RelationGetRelationName
    - XLogRegisterBufData
    - elog
    - memcpy
    - XLogBeginInsert
    - Assert
    - PageGetLSN
    - BufferGetBlockNumber
    - pfree
    - BufferGetPageSize
    - PageGetMaxOffsetNumber
    - XLogGetFakeLSN
    - IndexRelationGetNumberOfKeyAttributes
    - MAXALIGN
    - P_ISLEAF
    - PageSetLSN
    - IndexTupleSize
    - errmsg_internal
    - _bt_truncate
    - _bt_relbuf
    - ereport
    - PageGetItemId
    - PageAddItem
    - _bt_allocbuf
    - memset
    - P_FIRSTDATAKEY
    - ItemPointerCompare
    - BTPageGetOpaque
    - MarkBufferDirty
    - XLogRegisterBuffer
    - OffsetNumberNext
    - _bt_vacuum_cycleid
    - _bt_pageinit
    - OffsetNumberPrev
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - _bt_getbuf
    - ItemIdGetLength
    - END_CRIT_SECTION
    - _bt_pgaddtup
    linkageType: ''
    returnType: Buffer
    signature: "Buffer _bt_split(Relation rel, Relation heaprel, BTScanInsert itup_key,
      Buffer buf,\n\t\t  Buffer cbuf, OffsetNumber newitemoff, Size newitemsz, IndexTuple
      newitem,\n\t\t  IndexTuple orignewitem, IndexTuple nposting, uint16 postingoff)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2158,1
    - Dst: _bt_newlevel
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2160,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2162,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2163,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2164,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2168,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2169,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2170,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2180,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2195,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2195,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2196,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2196,1
    - Dst: _bt_get_endpoint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2199,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2202,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2205,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2209,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2210,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2213,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2214,1
    - Dst: _bt_getstackbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2225,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2240,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2244,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2245,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2246,1
    - Dst: _bt_insertonpg
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2249,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2250,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2250,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2254,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 7
    argNames:
    - rel
    - heaprel
    - buf
    - rbuf
    - stack
    - isroot
    - isonly
    argTypes:
    - Relation
    - Relation
    - Buffer
    - Buffer
    - BTStack
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2256
      start: 2129
    functionDepth: 8
    functionLinenumber: 2129
    functionLinenumberEnd: 2256
    functionName: _bt_insert_parent
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - _bt_newlevel
    - errcode
    - BlockNumberIsValid
    - BufferGetPage
    - PageGetItem
    - RelationGetTargetBlock
    - RelationGetRelationName
    - _bt_insertonpg
    - elog
    - BTreeTupleSetDownLink
    - Assert
    - pfree
    - BufferGetBlockNumber
    - CopyIndexTuple
    - MAXALIGN
    - P_ISLEAF
    - _bt_getstackbuf
    - IndexTupleSize
    - errmsg_internal
    - _bt_relbuf
    - ereport
    - PageGetItemId
    - BTPageGetOpaque
    - _bt_get_endpoint
    linkageType: ''
    returnType: void
    signature: "void _bt_insert_parent(Relation rel,\n\t\t\t\t  Relation heaprel,\n\t\t\t\t
      \ Buffer buf,\n\t\t\t\t  Buffer rbuf,\n\t\t\t\t  BTStack stack,\n\t\t\t\t  bool
      isroot,\n\t\t\t\t  bool isonly)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2274,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2282,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2283,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2286,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2287,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2288,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2298,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2299,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2300,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2302,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2304,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2310,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2310,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2312,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2313,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2314,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2314,1
    - Dst: _bt_insert_parent
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - rel
    - heaprel
    - lbuf
    - stack
    argTypes:
    - Relation
    - Relation
    - Buffer
    - BTStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2317
      start: 2271
    functionDepth: 9
    functionLinenumber: 2271
    functionLinenumberEnd: 2317
    functionName: _bt_finish_split
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - elog
    - INJECTION_POINT
    - P_INCOMPLETE_SPLIT
    - Assert
    - BufferGetBlockNumber
    - BTPageGetMeta
    - P_RIGHTMOST
    - BufferGetPage
    - P_LEFTMOST
    - BTPageGetOpaque
    - _bt_getbuf
    - _bt_insert_parent
    - _bt_relbuf
    linkageType: ''
    returnType: void
    signature: void _bt_finish_split(Relation rel, Relation heaprel, Buffer lbuf,
      BTStack stack)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2365,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2366,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2369,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2370,1
    - Dst: _bt_finish_split
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2372,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2376,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2384,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2385,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2400,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2409,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2411,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2412,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2414,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2423,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2425,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2427,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2428,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2430,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2446,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2448,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2453,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 4
    argNames:
    - rel
    - heaprel
    - stack
    - child
    argTypes:
    - Relation
    - Relation
    - BTStack
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2455
      start: 2350
    functionDepth: 10
    functionLinenumber: 2350
    functionLinenumberEnd: 2455
    functionName: _bt_getstackbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 2
    functionsReached:
    - P_IGNORE
    - OffsetNumberNext
    - P_INCOMPLETE_SPLIT
    - Assert
    - _bt_finish_split
    - OffsetNumberPrev
    - BTreeTupleGetDownLink
    - P_RIGHTMOST
    - BufferGetPage
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - P_FIRSTDATAKEY
    - BTPageGetOpaque
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_getstackbuf(Relation rel, Relation heaprel, BTStack stack,
      BlockNumber child)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stack
    argTypes:
    - BTStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2471
      start: 2460
    functionDepth: 0
    functionLinenumber: 2460
    functionLinenumberEnd: 2471
    functionName: _bt_freestack
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void _bt_freestack(BTStack stack)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2513,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2514,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2515,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2516,1
    - Dst: _bt_allocbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2519,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2520,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2521,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2524,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2525,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2526,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2534,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2536,1
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2537,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2543,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2544,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2545,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2546,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2547,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2550,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2554,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2557,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2561,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2578,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2578,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2579,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2580,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2582,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2587,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2588,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2588,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2589,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2590,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2591,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2593,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2596,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2596,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2598,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2600,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2601,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2604,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2612,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2613,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2615,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2616,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2617,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2619,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2628,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2634,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2639,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2642,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2644,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2645,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2646,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2648,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2651,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2653,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2654,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 74
    argCount: 4
    argNames:
    - rel
    - heaprel
    - lbuf
    - rbuf
    argTypes:
    - Relation
    - Relation
    - Buffer
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2657
      start: 2491
    functionDepth: 6
    functionLinenumber: 2491
    functionLinenumberEnd: 2657
    functionName: _bt_newlevel
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - BTreeTupleSetNAtts
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - BTreeTupleGetNAtts
    - RelationGetRelationName
    - XLogRegisterBufData
    - elog
    - BTreeTupleSetDownLink
    - XLogBeginInsert
    - Assert
    - pfree
    - BufferGetBlockNumber
    - XLogGetFakeLSN
    - IndexRelationGetNumberOfKeyAttributes
    - CopyIndexTuple
    - PageSetLSN
    - _bt_allocbuf
    - PageGetItemId
    - PageAddItem
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRegisterBuffer
    - P_INCOMPLETE_SPLIT
    - _bt_upgrademetapage
    - BTPageGetMeta
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - palloc
    - _bt_getbuf
    - ItemIdGetLength
    - END_CRIT_SECTION
    - _bt_relbuf
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_newlevel(Relation rel, Relation heaprel, Buffer lbuf, Buffer
      rbuf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2690,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2695,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2695,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - page
    - itemsize
    - itup
    - itup_off
    - newfirstdataitem
    argTypes:
    - Page
    - Size
    - IndexTupleData*
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2699
      start: 2677
    functionDepth: 3
    functionLinenumber: 2677
    functionLinenumberEnd: 2699
    functionName: _bt_pgaddtup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - PageAddItem
    - BTreeTupleSetNAtts
    - unlikely
    linkageType: ''
    returnType: bool
    signature: "bool _bt_pgaddtup(Page page,\n\t\t\t Size itemsize,\n\t\t\t const
      IndexTupleData *itup,\n\t\t\t OffsetNumber itup_off,\n\t\t\t bool newfirstdataitem)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2742,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2745,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2745,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2747,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2756,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2757,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2760,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2762,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2764,1
    - Dst: _bt_simpledel_pass
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2770,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2775,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2797,1
    - Dst: _bt_bottomupdel_pass
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2822,1
    - Dst: BTGetDeduplicateItems
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2826,1
    - Dst: _bt_dedup_pass
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2827,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 7
    argNames:
    - rel
    - heapRel
    - insertstate
    - simpleonly
    - checkingunique
    - uniquedup
    - indexUnchanged
    argTypes:
    - Relation
    - Relation
    - BTInsertState
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2829
      start: 2729
    functionDepth: 8
    functionLinenumber: 2729
    functionLinenumberEnd: 2829
    functionName: _bt_delete_or_dedup_one_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - OffsetNumberNext
    - Assert
    - ItemIdIsDead
    - _bt_dedup_pass
    - BufferGetPage
    - PageGetItemId
    - BTGetDeduplicateItems
    - PageGetMaxOffsetNumber
    - P_FIRSTDATAKEY
    - BTPageGetOpaque
    - _bt_bottomupdel_pass
    - P_ISLEAF
    - PageGetFreeSpace
    - _bt_simpledel_pass
    linkageType: ''
    returnType: void
    signature: "void _bt_delete_or_dedup_one_page(Relation rel, Relation heapRel,\n\t\t\t\t\t\t\t
      BTInsertState insertstate,\n\t\t\t\t\t\t\t bool simpleonly, bool checkingunique,\n\t\t\t\t\t\t\t
      bool uniquedup, bool indexUnchanged)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2863,1
    - Dst: _bt_deadblocks
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2870,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2875,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2879,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2880,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2884,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2886,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2887,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2893,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2895,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2901,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2901,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2912,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2920,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2924,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2926,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2927,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2932,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2932,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2943,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2956,1
    - Dst: _bt_delitems_delete_check
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2959,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2961,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2962,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 8
    argNames:
    - rel
    - buffer
    - heapRel
    - deletable
    - ndeletable
    - newitem
    - minoff
    - maxoff
    argTypes:
    - Relation
    - Buffer
    - Relation
    - OffsetNumber*
    - int
    - IndexTuple
    - OffsetNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2963
      start: 2858
    functionDepth: 7
    functionLinenumber: 2858
    functionLinenumberEnd: 2963
    functionName: _bt_simpledel_pass
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - OffsetNumberNext
    - BTreeTupleIsPosting
    - bsearch
    - Assert
    - BTreeTupleGetNPosting
    - BufferGetBlockNumber
    - ItemIdIsDead
    - pfree
    - _bt_delitems_delete_check
    - BTreeTupleGetPostingN
    - BufferGetPage
    - PageGetItemId
    - PageGetItem
    - palloc
    - _bt_deadblocks
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: "void _bt_simpledel_pass(Relation rel, Buffer buffer, Relation heapRel,\n\t\t\t\t
      \  OffsetNumber *deletable, int ndeletable, IndexTuple newitem,\n\t\t\t\t   OffsetNumber
      minoff, OffsetNumber maxoff)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3000,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3007,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3007,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3007,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3008,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3012,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3015,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3015,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3017,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3023,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3026,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3030,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3034,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3036,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3041,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3043,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3048,1
    - Dst: qunique
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3049,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 5
    argNames:
    - page
    - deletable
    - ndeletable
    - newitem
    - nblocks
    argTypes:
    - Page
    - OffsetNumber*
    - int
    - IndexTuple
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3052
      start: 2984
    functionDepth: 5
    functionLinenumber: 2984
    functionLinenumberEnd: 3052
    functionName: _bt_deadblocks
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - qsort
    - qunique
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - Assert
    - ItemIdIsDead
    - palloc_array
    - repalloc
    - PageGetItemId
    - BTreeTupleGetPostingN
    - PageGetItem
    - Max
    - BTreeTupleIsPivot
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber *\n_bt_deadblocks(Page page, OffsetNumber *deletable,
      int ndeletable,\n\t\t\t   IndexTuple newitem, int *nblocks)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3063,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3064
      start: 3057
    functionDepth: 1
    functionLinenumber: 3057
    functionLinenumberEnd: 3064
    functionName: _bt_blk_cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int _bt_blk_cmp(const void *arg1, const void *arg2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:71,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:72,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:74,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:76,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:76,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:83,1
    - Dst: _bt_metaversion
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:86,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:96,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:98,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:111,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:119,1
    - Dst: ScanKeyEntryInitializeWithInfo
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:126,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - rel
    - itup
    argTypes:
    - Relation
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 60
    functionDepth: 6
    functionLinenumber: 60
    functionLinenumberEnd: 147
    functionName: _bt_mkscankey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 3
    functionsReached:
    - Assert
    - RelationGetDescr
    - index_getattr
    - IndexRelationGetNumberOfAttributes
    - Min
    - BTreeTupleGetHeapTID
    - BTreeTupleGetNAtts
    - _bt_metaversion
    - ScanKeyEntryInitializeWithInfo
    - palloc
    - IndexRelationGetNumberOfKeyAttributes
    - index_getprocinfo
    linkageType: ''
    returnType: BTScanInsert
    signature: BTScanInsert _bt_mkscankey(Relation rel, IndexTuple itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - va
    - vb
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 159
    functionName: _bt_compare_int
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int _bt_compare_int(const void *va, const void *vb)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:204,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:205,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:220,1
    - Dst: qunique
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:221,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:232,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:232,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:234,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:240,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:240,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:241,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:243,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:244,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:248,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:255,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:256,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:257,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:269,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:276,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:277,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:280,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:283,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:294,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:296,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:304,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:336,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:347,1
    - Dst: BufferBeginSetHintBits
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:356,1
    - Dst: ItemIdMarkDead
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:361,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:365,1
    - Dst: BufferFinishSetHintBits
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:379,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:384,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:386,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 68
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 190
    functionDepth: 6
    functionLinenumber: 190
    functionLinenumberEnd: 387
    functionName: _bt_killitems
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 3
    functionsReached:
    - BufferGetLSNAtomic
    - BTreeTupleIsPosting
    - BufferGetPage
    - PageGetItem
    - qsort
    - qunique
    - Assert
    - _bt_lockbuf
    - BTScanPosIsValid
    - ItemPointerEquals
    - PageGetMaxOffsetNumber
    - _bt_unlockbuf
    - BTScanPosIsPinned
    - BufferFinishSetHintBits
    - ItemIdIsDead
    - BTreeTupleGetPostingN
    - PageGetItemId
    - P_FIRSTDATAKEY
    - BTPageGetOpaque
    - ItemIdMarkDead
    - OffsetNumberNext
    - BTreeTupleGetNPosting
    - BufferBeginSetHintBits
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: void
    signature: void _bt_killitems(IndexScanDesc scan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:445,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:459,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 461
    functionName: _bt_vacuum_cycleid
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: BTCycleId
    signature: BTCycleId _bt_vacuum_cycleid(Relation rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:479,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:502,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:503,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:504,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:511,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:512,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:519,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 521
    functionName: _bt_start_vacuum
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - elog
    - LWLockAcquire
    - LWLockRelease
    - RelationGetRelationName
    linkageType: ''
    returnType: BTCycleId
    signature: BTCycleId _bt_start_vacuum(Relation rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:534,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:551,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 552
    functionName: _bt_end_vacuum
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void _bt_end_vacuum(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _bt_end_vacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:560,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 557
    functionDepth: 2
    functionLinenumber: 557
    functionLinenumberEnd: 561
    functionName: _bt_end_vacuum_callback
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - _bt_end_vacuum
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void _bt_end_vacuum_callback(int code, Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:572,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 578
    functionName: BTreeShmemRequest
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - mul_size
    - add_size
    linkageType: ''
    returnType: void
    signature: void BTreeShmemRequest(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 595
    functionName: BTreeShmemInit
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - time
    linkageType: ''
    returnType: void
    signature: void BTreeShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:608,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 612
    functionName: btoptions
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      btoptions(Datum reloptions, bool validate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - index_oid
    - attno
    - prop
    - propname
    - res
    - isnull
    argTypes:
    - Oid
    - int
    - IndexAMProperty
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 638
    functionName: btproperty
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool btproperty(Oid index_oid, int attno,\n\t\t   IndexAMProperty
      prop, const char *propname,\n\t\t   bool *res, bool *isnull)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - phasenum
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 661
    functionName: btbuildphasename
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      btbuildphasename(int64 phasenum)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:695,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:696,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:707,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:707,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:707,1
    - Dst: _bt_keep_natts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:710,1
    - Dst: index_truncate_tuple
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:717,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:718,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:728,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:728,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:730,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:730,1
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:739,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:756,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:756,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:756,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:757,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:758,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:758,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:758,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:760,1
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:768,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:769,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:778,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:778,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:791,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:791,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:791,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:792,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:793,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:793,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:794,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:795,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:795,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:796,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:809,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:809,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:816,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:817,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:818,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:818,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:819,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 4
    argNames:
    - rel
    - lastleft
    - firstright
    - itup_key
    argTypes:
    - Relation
    - IndexTuple
    - IndexTuple
    - BTScanInsert
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 691
    functionDepth: 6
    functionLinenumber: 691
    functionLinenumberEnd: 823
    functionName: _bt_truncate
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 2
    functionsReached:
    - BTreeTupleIsPosting
    - BTreeTupleSetNAtts
    - ItemPointerGetOffsetNumber
    - index_truncate_tuple
    - memcpy
    - ItemPointerSetOffsetNumber
    - Assert
    - RelationGetDescr
    - pfree
    - BTreeTupleGetMaxHeapTID
    - BTreeTupleGetHeapTID
    - BTreeTupleGetPostingOffset
    - IndexRelationGetNumberOfKeyAttributes
    - MAXALIGN
    - IndexTupleSize
    - ItemPointerCopy
    - _bt_keep_natts
    - BTreeTupleIsPivot
    - ItemPointerCompare
    - palloc0
    - IndexRelationGetNumberOfAttributes
    - OffsetNumberPrev
    - Min
    linkageType: ''
    returnType: IndexTuple
    signature: "IndexTuple _bt_truncate(Relation rel, IndexTuple lastleft, IndexTuple
      firstright,\n\t\t\t BTScanInsert itup_key)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:840,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:841,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:862,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:863,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:869,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:869,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:882,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:883,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 4
    argNames:
    - rel
    - lastleft
    - firstright
    - itup_key
    argTypes:
    - Relation
    - IndexTuple
    - IndexTuple
    - BTScanInsert
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 836
    functionDepth: 3
    functionLinenumber: 836
    functionLinenumberEnd: 886
    functionName: _bt_keep_natts
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - _bt_keep_natts_fast
    - Assert
    - RelationGetDescr
    - index_getattr
    - FunctionCall2Coll
    - DatumGetInt32
    - IndexRelationGetNumberOfKeyAttributes
    linkageType: ''
    returnType: int
    signature: "int _bt_keep_natts(Relation rel, IndexTuple lastleft, IndexTuple firstright,\n\t\t\t
      \  BTScanInsert itup_key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:913,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:914,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:926,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:927,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:928,1
    - Dst: datum_image_eq
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:934,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - rel
    - lastleft
    - firstright
    argTypes:
    - Relation
    - IndexTuple
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 910
    functionDepth: 3
    functionLinenumber: 910
    functionLinenumberEnd: 941
    functionName: _bt_keep_natts_fast
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 9
    functionsReached:
    - RelationGetDescr
    - index_getattr
    - IndexRelationGetNumberOfKeyAttributes
    - datum_image_eq
    - TupleDescCompactAttr
    linkageType: ''
    returnType: int
    signature: int _bt_keep_natts_fast(Relation rel, IndexTuple lastleft, IndexTuple
      firstright)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:960,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:961,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:962,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:970,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:973,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:974,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:976,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:976,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:977,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:980,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:984,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:985,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:990,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:993,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:995,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1001,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1018,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1018,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1033,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1057,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1075,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1082,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1086,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1093,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 40
    argCount: 4
    argNames:
    - rel
    - heapkeyspace
    - page
    - offnum
    argTypes:
    - Relation
    - bool
    - Page
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 957
    functionDepth: 5
    functionLinenumber: 957
    functionLinenumberEnd: 1103
    functionName: _bt_check_natts
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - BTPageGetOpaque
    - BTreeTupleIsPosting
    - Assert
    - ItemPointerGetOffsetNumberNoCheck
    - IndexRelationGetNumberOfAttributes
    - P_RIGHTMOST
    - PageGetItemId
    - BTreeTupleGetHeapTID
    - PageGetMaxOffsetNumber
    - PageGetItem
    - BTreeTupleGetNAtts
    - ItemPointerGetOffsetNumber
    - P_FIRSTDATAKEY
    - BTreeTupleIsPivot
    - IndexRelationGetNumberOfKeyAttributes
    - P_IGNORE
    - P_ISLEAF
    linkageType: ''
    returnType: bool
    signature: bool _bt_check_natts(Relation rel, bool heapkeyspace, Page page, OffsetNumber
      offnum)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1124,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1124,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1142,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1143,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1144,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1147,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1149,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1153,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1154,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1155,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1155,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1156,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1156,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1157,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1158,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1161,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 5
    argNames:
    - rel
    - heap
    - needheaptidspace
    - page
    - newtup
    argTypes:
    - Relation
    - Relation
    - bool
    - Page
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1117
    functionDepth: 5
    functionLinenumber: 1117
    functionLinenumberEnd: 1162
    functionName: _bt_check_third_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 2
    functionsReached:
    - elog
    - errtableconstraint
    - errcode
    - ereport
    - BTreeTupleGetHeapTID
    - ItemPointerGetBlockNumber
    - errhint
    - errmsg
    - RelationGetRelationName
    - errdetail
    - ItemPointerGetOffsetNumber
    - BTPageGetOpaque
    - MAXALIGN
    - P_ISLEAF
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void _bt_check_third_page(Relation rel, Relation heap, bool needheaptidspace,\n\t\t\t\t\t
      Page page, IndexTuple newtup)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1180,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1181,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1184,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1191,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1198,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1199,1
    - Dst: OidFunctionCall1Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1199,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1200,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1210,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1211,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1213,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1214,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - rel
    - debugmessage
    argTypes:
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1174
    functionDepth: 1
    functionLinenumber: 1174
    functionLinenumberEnd: 1218
    functionName: _bt_allequalimage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 2
    functionsReached:
    - elog
    - IndexRelationGetNumberOfAttributes
    - get_opfamily_proc
    - RelationGetRelationName
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - ObjectIdGetDatum
    - OidFunctionCall1Coll
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool _bt_allequalimage(Relation rel, bool debugmessage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:60,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:70,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - rel
    - so
    argTypes:
    - Relation
    - BTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 73
    functionName: _bt_drop_lock_and_maybe_pin
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 0
    functionsReached:
    - BufferGetLSNAtomic
    - _bt_unlockbuf
    - _bt_relbuf
    linkageType: ''
    returnType: void
    signature: void _bt_drop_lock_and_maybe_pin(Relation rel, BTScanOpaque so)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:107,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:108,1
    - Dst: _bt_getroot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:111,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:114,1
    - Dst: _bt_moveright
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:140,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:144,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:145,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:146,1
    - Dst: _bt_binsrch
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:153,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:154,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:156,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:156,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:157,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:167,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:168,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:183,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:196,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:197,1
    - Dst: _bt_moveright
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:204,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 6
    argNames:
    - rel
    - heaprel
    - key
    - bufP
    - access
    - returnstack
    argTypes:
    - Relation
    - Relation
    - BTScanInsert
    - Buffer*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 99
    functionDepth: 6
    functionLinenumber: 99
    functionLinenumberEnd: 208
    functionName: _bt_search
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - _bt_relandgetbuf
    - Assert
    - _bt_lockbuf
    - BufferGetBlockNumber
    - BTreeTupleGetDownLink
    - BufferGetPage
    - PageGetItemId
    - _bt_getroot
    - PageGetItem
    - BufferIsValid
    - BTreeTupleIsPivot
    - _bt_moveright
    - palloc_object
    - BTPageGetOpaque
    - _bt_unlockbuf
    - P_ISLEAF
    - _bt_binsrch
    linkageType: ''
    returnType: BTStack
    signature: "BTStack _bt_search(Relation rel, Relation heaprel, BTScanInsert key,
      Buffer *bufP,\n\t\t   int access, bool returnstack)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:254,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:277,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:278,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:280,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:286,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:288,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:293,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:294,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:297,1
    - Dst: _bt_finish_split
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:298,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:300,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:303,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:307,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:307,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:310,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:317,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:318,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:319,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 7
    argNames:
    - rel
    - heaprel
    - key
    - buf
    - forupdate
    - stack
    - access
    argTypes:
    - Relation
    - Relation
    - BTScanInsert
    - Buffer
    - bool
    - BTStack
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 241
    functionDepth: 10
    functionLinenumber: 241
    functionLinenumberEnd: 322
    functionName: _bt_moveright
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - elog
    - P_IGNORE
    - _bt_compare
    - P_INCOMPLETE_SPLIT
    - Assert
    - _bt_lockbuf
    - BufferGetBlockNumber
    - _bt_finish_split
    - _bt_relandgetbuf
    - P_RIGHTMOST
    - BufferGetPage
    - RelationGetRelationName
    - BTPageGetOpaque
    - _bt_getbuf
    - _bt_unlockbuf
    - _bt_relbuf
    linkageType: ''
    returnType: Buffer
    signature: "Buffer _bt_moveright(Relation rel,\n\t\t\t  Relation heaprel,\n\t\t\t
      \ BTScanInsert key,\n\t\t\t  Buffer buf,\n\t\t\t  bool forupdate,\n\t\t\t  BTStack
      stack,\n\t\t\t  int access)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:355,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:356,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:359,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:361,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:361,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:363,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:364,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:373,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:398,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:413,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:425,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:447,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:447,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:449,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - rel
    - key
    - buf
    argTypes:
    - Relation
    - BTScanInsert
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 343
    functionDepth: 4
    functionLinenumber: 343
    functionLinenumberEnd: 450
    functionName: _bt_binsrch
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - _bt_compare
    - Assert
    - OffsetNumberPrev
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - unlikely
    - P_FIRSTDATAKEY
    - BTPageGetOpaque
    - P_ISLEAF
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber _bt_binsrch(Relation rel,\n\t\t\tBTScanInsert key,\n\t\t\tBuffer
      buf)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:486,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:487,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:489,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:489,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:490,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:491,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:496,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:497,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:507,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:538,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:556,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:564,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:565,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:566,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:567,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:568,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:570,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:571,1
    - Dst: _bt_binsrch_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:573,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 2
    argNames:
    - rel
    - insertstate
    argTypes:
    - Relation
    - BTInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 474
    functionDepth: 4
    functionLinenumber: 474
    functionLinenumberEnd: 592
    functionName: _bt_binsrch_insert
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - errmsg_internal
    - _bt_compare
    - errcode
    - Assert
    - _bt_binsrch_posting
    - BufferGetBlockNumber
    - ereport
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - unlikely
    - ItemPointerGetBlockNumber
    - ItemPointerGetOffsetNumber
    - P_FIRSTDATAKEY
    - RelationGetRelationName
    - BTPageGetOpaque
    - P_ISLEAF
    linkageType: ''
    returnType: OffsetNumber
    signature: OffsetNumber _bt_binsrch_insert(Relation rel, BTInsertState insertstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:622,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:623,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:624,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:627,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:635,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:641,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:646,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:647,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - key
    - page
    - offnum
    argTypes:
    - BTScanInsert
    - Page
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 602
    functionDepth: 5
    functionLinenumber: 602
    functionLinenumberEnd: 659
    functionName: _bt_binsrch_posting
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - Assert
    - ItemIdIsDead
    - BTreeTupleGetPostingN
    - PageGetItemId
    - PageGetItem
    - ItemPointerCompare
    linkageType: ''
    returnType: int
    signature: int _bt_binsrch_posting(BTScanInsert key, Page page, OffsetNumber offnum)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:694,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:695,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:703,1
    - Dst: _bt_check_natts
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:703,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:704,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:705,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:711,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:711,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:714,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:714,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:715,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:729,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:731,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:731,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:738,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:766,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:766,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:772,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:799,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:837,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:837,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:847,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:847,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:848,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:849,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:853,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:854,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 54
    argCount: 4
    argNames:
    - rel
    - key
    - page
    - offnum
    argTypes:
    - Relation
    - BTScanInsert
    - Page
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 688
    functionDepth: 6
    functionLinenumber: 688
    functionLinenumberEnd: 860
    functionName: _bt_compare
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 6
    functionsReached:
    - BTreeTupleIsPosting
    - PageGetItem
    - BTreeTupleGetNAtts
    - _bt_check_natts
    - Assert
    - RelationGetDescr
    - BTreeTupleGetMaxHeapTID
    - BTreeTupleGetHeapTID
    - IndexRelationGetNumberOfKeyAttributes
    - P_ISLEAF
    - INVERT_COMPARE_RESULT
    - PageGetItemId
    - FunctionCall2Coll
    - P_FIRSTDATAKEY
    - ItemPointerCompare
    - BTPageGetOpaque
    - index_getattr
    - DatumGetInt32
    - Min
    linkageType: ''
    returnType: int32
    signature: "int32 _bt_compare(Relation rel,\n\t\t\tBTScanInsert key,\n\t\t\tPage
      page,\n\t\t\tOffsetNumber offnum)"
  - BBCount: 53
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:896,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:896,1
    - Dst: _bt_preprocess_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:902,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:910,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:911,1
    - Dst: _bt_parallel_seize
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:920,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:929,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:938,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:939,1
    - Dst: _bt_readnextpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:941,1
    - Dst: _bt_returnitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:944,1
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:952,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1059,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1062,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1090,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1092,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1097,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1107,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1116,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1117,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1121,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1126,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1162,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1171,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1194,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1218,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1228,1
    - Dst: _bt_endpoint
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1259,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1276,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1277,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1286,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1287,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1288,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1314,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1341,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1342,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1350,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1403,1
    - Dst: ScanKeyEntryInitializeWithInfo
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1404,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1417,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1420,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1421,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1423,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1424,1
    - Dst: _bt_metaversion
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1442,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1466,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1504,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1512,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1512,1
    - Dst: _bt_search
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1513,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1517,1
    - Dst: IsolationIsSerializable
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1528,1
    - Dst: PredicateLockRelation
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1530,1
    - Dst: _bt_search
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1531,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1534,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1536,1
    - Dst: _bt_binsrch
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1542,1
    - Dst: _bt_readfirstpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1564,1
    - Dst: _bt_returnitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1567,1
    CyclomaticComplexity: 83
    EdgeCount: 83
    ICount: 222
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 882
    functionDepth: 7
    functionLinenumber: 882
    functionLinenumberEnd: 1569
    functionName: _bt_first
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - ScanDirectionIsBackward
    - PredicateLockRelation
    - _bt_parallel_seize
    - _bt_metaversion
    - RelationGetRelationName
    - elog
    - memcpy
    - Assert
    - BTScanPosIsValid
    - IsolationIsSerializable
    - ScanDirectionIsForward
    - ScanKeyEntryInitialize
    - get_opfamily_proc
    - _bt_parallel_done
    - RegProcedureIsValid
    - _bt_search
    - _bt_preprocess_keys
    - BufferIsValid
    - pgstat_count_index_scan
    - _bt_binsrch
    - index_getprocinfo
    - _bt_readnextpage
    - _bt_endpoint
    - _bt_returnitem
    - ScanKeyEntryInitializeWithInfo
    - _bt_start_array_keys
    - _bt_readfirstpage
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool _bt_first(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1590,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1590,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1596,1
    - Dst: _bt_steppage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1600,1
    - Dst: _bt_steppage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1608,1
    - Dst: _bt_returnitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1613,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1585
    functionDepth: 1
    functionLinenumber: 1585
    functionLinenumberEnd: 1615
    functionName: _bt_next
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - Assert
    - BTScanPosIsValid
    - _bt_returnitem
    - ScanDirectionIsForward
    - _bt_steppage
    linkageType: ''
    returnType: bool
    signature: bool _bt_next(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1627,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1627,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1628,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan
    - so
    argTypes:
    - IndexScanDesc
    - BTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1621
    functionDepth: 1
    functionLinenumber: 1621
    functionLinenumberEnd: 1635
    functionName: _bt_returnitem
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - Assert
    - BTScanPosIsValid
    linkageType: ''
    returnType: void
    signature: void _bt_returnitem(IndexScanDesc scan, BTScanOpaque so)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1653,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1653,1
    - Dst: _bt_killitems
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1657,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1666,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1667,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1668,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1672,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1695,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1702,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1705,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1708,1
    - Dst: _bt_readnextpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1723,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1646
    functionDepth: 7
    functionLinenumber: 1646
    functionLinenumberEnd: 1724
    functionName: _bt_steppage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - memcpy
    - BTScanPosIsPinned
    - Assert
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    - _bt_readnextpage
    - IncrBufferRefCount
    - ScanDirectionIsForward
    - _bt_killitems
    linkageType: ''
    returnType: bool
    signature: bool _bt_steppage(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1757,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1763,1
    - Dst: _bt_readpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1788,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1788,1
    - Dst: _bt_drop_lock_and_maybe_pin
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1789,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1794,1
    - Dst: _bt_steppage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1797,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - scan
    - offnum
    - dir
    argTypes:
    - IndexScanDesc
    - OffsetNumber
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1746
    functionDepth: 8
    functionLinenumber: 1746
    functionLinenumberEnd: 1802
    functionName: _bt_readfirstpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - _bt_drop_lock_and_maybe_pin
    - BTScanPosIsPinned
    - Assert
    - _bt_readpage
    - ScanDirectionIsForward
    - _bt_steppage
    - _bt_unlockbuf
    linkageType: ''
    returnType: bool
    signature: bool _bt_readfirstpage(IndexScanDesc scan, OffsetNumber offnum, ScanDirection
      dir)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1846,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1847,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1848,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1848,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1854,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1869,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1870,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1871,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1875,1
    - Dst: _bt_parallel_seize
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1879,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1882,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1886,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1889,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1890,1
    - Dst: _bt_lock_and_validate_left
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1895,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1900,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1901,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1906,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1907,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1909,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1909,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1912,1
    - Dst: _bt_readpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1915,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1915,1
    - Dst: _bt_readpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1922,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1922,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1930,1
    - Dst: _bt_parallel_release
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1935,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1939,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1947,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1948,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1948,1
    - Dst: _bt_drop_lock_and_maybe_pin
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1949,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 5
    argNames:
    - scan
    - blkno
    - lastcurrblkno
    - dir
    - seized
    argTypes:
    - IndexScanDesc
    - BlockNumber
    - BlockNumber
    - ScanDirection
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1839
    functionDepth: 6
    functionLinenumber: 1839
    functionLinenumberEnd: 1952
    functionName: _bt_readnextpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - _bt_drop_lock_and_maybe_pin
    - BufferGetPage
    - _bt_parallel_seize
    - Assert
    - PageGetMaxOffsetNumber
    - ScanDirectionIsForward
    - _bt_parallel_done
    - BTScanPosInvalidate
    - BTScanPosIsPinned
    - CHECK_FOR_INTERRUPTS
    - P_FIRSTDATAKEY
    - BTPageGetOpaque
    - P_IGNORE
    - _bt_lock_and_validate_left
    - _bt_readpage
    - likely
    - _bt_parallel_release
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: bool
    signature: "bool _bt_readnextpage(IndexScanDesc scan, BlockNumber blkno,\n\t\t\t\t
      BlockNumber lastcurrblkno, ScanDirection dir, bool seized)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1988,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1989,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1990,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1991,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2006,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2006,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2012,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2016,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2017,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2018,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2026,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2027,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2028,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2029,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2039,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2040,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2041,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2043,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2044,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2045,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2046,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2058,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2059,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2068,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2071,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2077,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - rel
    - blkno
    - lastcurrblkno
    argTypes:
    - Relation
    - BlockNumber*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 1974
    functionDepth: 6
    functionLinenumber: 1974
    functionLinenumberEnd: 2081
    functionName: _bt_lock_and_validate_left
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - elog
    - _bt_relandgetbuf
    - P_RIGHTMOST
    - CHECK_FOR_INTERRUPTS
    - BufferGetPage
    - P_LEFTMOST
    - P_ISDELETED
    - likely
    - RelationGetRelationName
    - BTPageGetOpaque
    - _bt_getbuf
    - _bt_relbuf
    linkageType: ''
    returnType: Buffer
    signature: "Buffer _bt_lock_and_validate_left(Relation rel, BlockNumber *blkno,\n\t\t\t\t\t\t
      \  BlockNumber lastcurrblkno)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getroot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2107,1
    - Dst: _bt_gettrueroot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2109,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2111,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2114,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2115,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2125,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2126,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2130,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2131,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2132,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2133,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2134,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2141,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2142,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2143,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2144,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2148,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2150,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2152,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2153,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2155,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2155,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2156,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2158,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2159,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2160,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 3
    argNames:
    - rel
    - level
    - rightmost
    argTypes:
    - Relation
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2091
    functionDepth: 6
    functionLinenumber: 2091
    functionLinenumberEnd: 2164
    functionName: _bt_get_endpoint
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - elog
    - errmsg_internal
    - _bt_relandgetbuf
    - errcode
    - ereport
    - P_RIGHTMOST
    - BTreeTupleGetDownLink
    - BufferGetPage
    - PageGetItemId
    - _bt_getroot
    - PageGetMaxOffsetNumber
    - PageGetItem
    - BufferIsValid
    - _bt_gettrueroot
    - RelationGetRelationName
    - P_FIRSTDATAKEY
    - BTPageGetOpaque
    - P_IGNORE
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_get_endpoint(Relation rel, uint32 level, bool rightmost)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2186,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2187,1
    - Dst: _bt_get_endpoint
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2193,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2193,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2195,1
    - Dst: PredicateLockRelation
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2201,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2202,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2206,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2208,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2208,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2210,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2215,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2219,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2219,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2221,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2225,1
    - Dst: _bt_readfirstpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2232,1
    - Dst: _bt_returnitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2237
      start: 2177
    functionDepth: 9
    functionLinenumber: 2177
    functionLinenumberEnd: 2237
    functionName: _bt_endpoint
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - elog
    - ScanDirectionIsBackward
    - Assert
    - BTScanPosIsValid
    - P_ISLEAF
    - P_RIGHTMOST
    - BufferGetPage
    - PredicateLockRelation
    - _bt_returnitem
    - PageGetMaxOffsetNumber
    - ScanDirectionIsForward
    - BufferIsValid
    - P_FIRSTDATAKEY
    - BTPageGetOpaque
    - _bt_readfirstpage
    - _bt_parallel_done
    - _bt_get_endpoint
    linkageType: ''
    returnType: bool
    signature: bool _bt_endpoint(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: _bt_preprocess_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:236,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:253,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:261,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:269,1
    - Dst: _bt_fix_scankey_strategy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:275,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:277,1
    - Dst: _bt_mark_scankey_required
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:281,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:290,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:293,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:312,1
    - Dst: _bt_fix_scankey_strategy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:327,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:381,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:382,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:382,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:399,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:427,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:446,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:474,1
    - Dst: _bt_mark_scankey_required
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:478,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:490,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:500,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:535,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:535,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:536,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:544,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:545,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:559,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:585,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:609,1
    - Dst: _bt_mark_scankey_required
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:613,1
    - Dst: _bt_preprocess_array_keys_final
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:631,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:639,1
    - Dst: _bt_unmark_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:640,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 164
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 643
    functionName: _bt_preprocess_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - elog
    - memcpy
    - MemoryContextAlloc
    - _bt_preprocess_array_keys
    - Assert
    - repalloc
    - _bt_mark_scankey_required
    - _bt_compare_scankey_args
    - unlikely
    - memset
    - _bt_unmark_keys
    - OidIsValid
    - _bt_fix_scankey_strategy
    - _bt_preprocess_array_keys_final
    linkageType: ''
    returnType: void
    signature: void _bt_preprocess_keys(IndexScanDesc scan)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:697,1
    - Dst: BTCommuteStrategyNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:730,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:736,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:741,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:747,1
    - Dst: BTCommuteStrategyNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:750,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 2
    argNames:
    - skey
    - indoption
    argTypes:
    - ScanKey
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 759
    functionName: _bt_fix_scankey_strategy
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - BTCommuteStrategyNumber
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool _bt_fix_scankey_strategy(ScanKey skey, int16 *indoption)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:798,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:808,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:812,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:813,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:817,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 1
    argNames:
    - skey
    argTypes:
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 829
    functionName: _bt_mark_scankey_required
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void _bt_mark_scankey_required(ScanKey skey)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:883,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:898,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:902,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:912,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:919,1
    - Dst: BTCommuteStrategyNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:932,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:952,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:965,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:993,1
    - Dst: _bt_compare_array_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1003,1
    - Dst: _bt_compare_array_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1006,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1015,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1040,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1040,1
    - Dst: BTCommuteStrategyNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1058,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1060,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1064,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1066,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1068,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1070,1
    - Dst: OidFunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1070,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 91
    argCount: 7
    argNames:
    - scan
    - op
    - leftarg
    - rightarg
    - array
    - orderproc
    - result
    argTypes:
    - IndexScanDesc
    - ScanKey
    - ScanKey
    - ScanKey
    - BTArrayKeyInfo*
    - FmgrInfo*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 869
    functionDepth: 1
    functionLinenumber: 869
    functionLinenumberEnd: 1081
    functionName: _bt_compare_scankey_args
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - elog
    - RegProcedureIsValid
    - get_opfamily_member
    - OidFunctionCall2Coll
    - Assert
    - FunctionCall2Coll
    - BTCommuteStrategyNumber
    - _bt_compare_array_scankey_args
    - OidIsValid
    - get_opcode
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool _bt_compare_scankey_args(IndexScanDesc scan, ScanKey op,\n\t\t\t\t\t\t
      ScanKey leftarg, ScanKey rightarg,\n\t\t\t\t\t\t BTArrayKeyInfo *array, FmgrInfo
      *orderproc,\n\t\t\t\t\t\t bool *result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1107,1
    - Dst: _bt_saoparray_shrink
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1115,1
    - Dst: _bt_skiparray_shrink
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 6
    argNames:
    - scan
    - arraysk
    - skey
    - orderproc
    - array
    - qual_ok
    argTypes:
    - IndexScanDesc
    - ScanKey
    - ScanKey
    - FmgrInfo*
    - BTArrayKeyInfo*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1096
    functionDepth: 1
    functionLinenumber: 1096
    functionLinenumberEnd: 1119
    functionName: _bt_compare_array_scankey_args
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - _bt_saoparray_shrink
    - _bt_skiparray_shrink
    linkageType: ''
    returnType: bool
    signature: "bool _bt_compare_array_scankey_args(IndexScanDesc scan, ScanKey arraysk,
      ScanKey skey,\n\t\t\t\t\t\t\t   FmgrInfo *orderproc, BTArrayKeyInfo *array,\n\t\t\t\t\t\t\t
      \  bool *qual_ok)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1147,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1148,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1177,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1180,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1189,1
    - Dst: _bt_binsrch_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1192,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1229,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1239,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 6
    argNames:
    - scan
    - arraysk
    - skey
    - orderproc
    - array
    - qual_ok
    argTypes:
    - IndexScanDesc
    - ScanKey
    - ScanKey
    - FmgrInfo*
    - BTArrayKeyInfo*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1134
    functionDepth: 3
    functionLinenumber: 1134
    functionLinenumberEnd: 1245
    functionName: _bt_saoparray_shrink
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - RegProcedureIsValid
    - elog
    - Assert
    - memmove
    - get_opfamily_proc
    - _bt_binsrch_array_skey
    - fmgr_info
    linkageType: ''
    returnType: bool
    signature: "bool _bt_saoparray_shrink(IndexScanDesc scan, ScanKey arraysk, ScanKey
      skey,\n\t\t\t\t\t FmgrInfo *orderproc, BTArrayKeyInfo *array, bool *qual_ok)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1265,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1304,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1323,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1339,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 4
    argNames:
    - scan
    - skey
    - array
    - qual_ok
    argTypes:
    - IndexScanDesc
    - ScanKey
    - BTArrayKeyInfo*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1259
    functionDepth: 2
    functionLinenumber: 1259
    functionLinenumberEnd: 1345
    functionName: _bt_skiparray_shrink
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - elog
    - _bt_compare_scankey_args
    linkageType: ''
    returnType: bool
    signature: "bool _bt_skiparray_shrink(IndexScanDesc scan, ScanKey skey, BTArrayKeyInfo
      *array,\n\t\t\t\t\t bool *qual_ok)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1392,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1393,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1395,1
    - Dst: _bt_skiparray_strat_decrement
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1399,1
    - Dst: _bt_skiparray_strat_increment
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1403,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1405,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 3
    argNames:
    - scan
    - arraysk
    - array
    argTypes:
    - IndexScanDesc
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1381
    functionDepth: 1
    functionLinenumber: 1381
    functionLinenumberEnd: 1406
    functionName: _bt_skiparray_strat_adjust
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 0
    functionsReached:
    - Assert
    - _bt_skiparray_strat_increment
    - _bt_skiparray_strat_decrement
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void _bt_skiparray_strat_adjust(IndexScanDesc scan, ScanKey arraysk,\n\t\t\t\t\t\t
      \  BTArrayKeyInfo *array)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1426,1
    - Dst: BTArrayKeyInfo*::sksup::decrement
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1437,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1453,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1454,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1456,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1457,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1460,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - scan
    - arraysk
    - array
    argTypes:
    - IndexScanDesc
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1411
    functionDepth: 1
    functionLinenumber: 1411
    functionLinenumberEnd: 1464
    functionName: _bt_skiparray_strat_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - RegProcedureIsValid
    - get_opfamily_member
    - BTArrayKeyInfo*::sksup::decrement
    - Assert
    - OidIsValid
    - get_opcode
    - fmgr_info
    linkageType: ''
    returnType: void
    signature: "void _bt_skiparray_strat_decrement(IndexScanDesc scan, ScanKey arraysk,\n\t\t\t\t\t\t\t
      \ BTArrayKeyInfo *array)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1484,1
    - Dst: BTArrayKeyInfo*::sksup::increment
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1495,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1511,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1512,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1514,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1515,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1518,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - scan
    - arraysk
    - array
    argTypes:
    - IndexScanDesc
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1469
    functionDepth: 1
    functionLinenumber: 1469
    functionLinenumberEnd: 1522
    functionName: _bt_skiparray_strat_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - RegProcedureIsValid
    - BTArrayKeyInfo*::sksup::increment
    - get_opfamily_member
    - Assert
    - OidIsValid
    - get_opcode
    - fmgr_info
    linkageType: ''
    returnType: void
    signature: "void _bt_skiparray_strat_increment(IndexScanDesc scan, ScanKey arraysk,\n\t\t\t\t\t\t\t
      \ BTArrayKeyInfo *array)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1650,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1656,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1657,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1662,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1663,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1687,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1692,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1705,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1718,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1724,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1731,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1736,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1748,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1749,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1750,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1751,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1754,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1755,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1756,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1764,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1765,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1780,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1784,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1785,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 101
    argCount: 2
    argNames:
    - scan
    - keyDataMap
    argTypes:
    - IndexScanDesc
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1542
    functionDepth: 1
    functionLinenumber: 1542
    functionLinenumberEnd: 1787
    functionName: _bt_unmark_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - qsort
    - memcpy
    - Assert
    - pfree
    - palloc0
    - palloc
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void _bt_unmark_keys(IndexScanDesc scan, int *keyDataMap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1792
    functionDepth: 1
    functionLinenumber: 1792
    functionLinenumberEnd: 1799
    functionName: _bt_reorder_array_cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int _bt_reorder_array_cmp(const void *a, const void *b)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: _bt_num_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1865,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1884,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1888,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1890,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1893,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1896,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1899,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1933,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1944,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1946,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1949,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1957,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1958,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1959,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1961,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1975,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1975,1
    - Dst: PrepareSkipSupportFromOpclass
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1981,1
    - Dst: _bt_setup_array_cmp
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1988,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2017,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2029,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2031,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2031,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2033,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2034,1
    - Dst: _bt_find_extreme_element
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2078,1
    - Dst: _bt_find_extreme_element
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2089,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2095,1
    - Dst: _bt_setup_array_cmp
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2108,1
    - Dst: _bt_sort_array_elements
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2133,1
    - Dst: _bt_merge_arrays
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2135,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2190,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2197,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 119
    argCount: 2
    argNames:
    - scan
    - new_numberOfKeys
    argTypes:
    - IndexScanDesc
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2200
      start: 1844
    functionDepth: 2
    functionLinenumber: 1844
    functionLinenumberEnd: 2200
    functionName: _bt_preprocess_array_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - _bt_num_array_keys
    - PrepareSkipSupportFromOpclass
    - elog
    - get_typlenbyvalalign
    - MemoryContextReset
    - Assert
    - RelationGetDescr
    - pfree
    - ScanKeyEntryInitialize
    - OidIsValid
    - _bt_find_extreme_element
    - RegProcedureIsValid
    - _bt_sort_array_elements
    - AllocSetContextCreate
    - TupleDescCompactAttr
    - DatumGetArrayTypeP
    - get_opcode
    - deconstruct_array
    - _bt_setup_array_cmp
    - _bt_merge_arrays
    - MemoryContextSwitchTo
    - ARR_ELEMTYPE
    - palloc
    linkageType: ''
    returnType: ScanKey
    signature: ScanKey _bt_preprocess_array_keys(IndexScanDesc scan, int *new_numberOfKeys)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2232,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2255,1
    - Dst: _bt_setup_array_cmp
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2281,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2306,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2307,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2308,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2332,1
    - Dst: _bt_skiparray_strat_adjust
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2361,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2372,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2373,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2374,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 50
    argCount: 2
    argNames:
    - scan
    - keyDataMap
    argTypes:
    - IndexScanDesc
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2224
    functionDepth: 2
    functionLinenumber: 2224
    functionLinenumberEnd: 2376
    functionName: _bt_preprocess_array_keys_final
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - _bt_skiparray_strat_adjust
    - _bt_setup_array_cmp
    - errmsg_internal
    - errcode
    - Assert
    - memmove
    - ereport
    - IndexRelationGetNumberOfKeyAttributes
    linkageType: ''
    returnType: void
    signature: void _bt_preprocess_array_keys_final(IndexScanDesc scan, int *keyDataMap)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2425,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2458,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2460,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2533,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2536,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 3
    argNames:
    - scan
    - skip_eq_ops_out
    - numSkipArrayKeys_out
    argTypes:
    - IndexScanDesc
    - Oid*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2412
    functionDepth: 1
    functionLinenumber: 2412
    functionLinenumberEnd: 2569
    functionName: _bt_num_array_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - OidIsValid
    - get_opfamily_member
    linkageType: ''
    returnType: int
    signature: "int _bt_num_array_keys(IndexScanDesc scan, Oid *skip_eq_ops_out,\n\t\t\t\t
      \  int *numSkipArrayKeys_out)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2599,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2599,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2600,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2604,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2605,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2608,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2609,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2610,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2614,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2618,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2618,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 6
    argNames:
    - scan
    - skey
    - elemtype
    - strat
    - elems
    - nelems
    argTypes:
    - IndexScanDesc
    - ScanKey
    - Oid
    - StrategyNumber
    - Datum*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2578
    functionDepth: 1
    functionLinenumber: 2578
    functionLinenumberEnd: 2626
    functionName: _bt_find_extreme_element
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - elog
    - RegProcedureIsValid
    - get_opfamily_member
    - Assert
    - FunctionCall2Coll
    - OidIsValid
    - get_opcode
    - fmgr_info
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: "Datum _bt_find_extreme_element(IndexScanDesc scan, ScanKey skey, Oid
      elemtype,\n\t\t\t\t\t\t StrategyNumber strat,\n\t\t\t\t\t\t const Datum *elems,
      int nelems)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2660,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2661,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2661,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2670,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2688,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2690,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2691,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2693,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2696,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2710,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2712,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2713,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2715,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2718,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - scan
    - skey
    - elemtype
    - orderproc
    - sortprocp
    argTypes:
    - IndexScanDesc
    - ScanKey
    - Oid
    - FmgrInfo*
    - FmgrInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2719
      start: 2651
    functionDepth: 2
    functionLinenumber: 2651
    functionLinenumberEnd: 2719
    functionName: _bt_setup_array_cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 2
    functionsReached:
    - RegProcedureIsValid
    - elog
    - fmgr_info_cxt
    - Assert
    - RelationGetRelationName
    - OidIsValid
    - get_opfamily_proc
    - index_getprocinfo
    linkageType: ''
    returnType: void
    signature: "void _bt_setup_array_cmp(IndexScanDesc scan, ScanKey skey, Oid elemtype,\n\t\t\t\t\tFmgrInfo
      *orderproc, FmgrInfo **sortprocp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2744,1
    - Dst: qunique_arg
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - skey
    - sortproc
    - reverse
    - elems
    - nelems
    argTypes:
    - ScanKey
    - FmgrInfo*
    - bool
    - Datum*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2750
      start: 2731
    functionDepth: 2
    functionLinenumber: 2731
    functionLinenumberEnd: 2750
    functionName: _bt_sort_array_elements
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - qunique_arg
    - qsort_arg
    linkageType: ''
    returnType: int
    signature: "int _bt_sort_array_elements(ScanKey skey, FmgrInfo *sortproc, bool
      reverse,\n\t\t\t\t\t\tDatum *elems, int nelems)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2789,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2790,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2790,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2790,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2800,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2802,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2810,1
    - Dst: _bt_compare_array_elements
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2821,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 10
    argNames:
    - scan
    - skey
    - sortproc
    - reverse
    - origelemtype
    - nextelemtype
    - elems_orig
    - nelems_orig
    - elems_next
    - nelems_next
    argTypes:
    - IndexScanDesc
    - ScanKey
    - FmgrInfo*
    - bool
    - Oid
    - Oid
    - Datum*
    - int*
    - Datum*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2838
      start: 2775
    functionDepth: 1
    functionLinenumber: 2775
    functionLinenumberEnd: 2838
    functionName: _bt_merge_arrays
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - RegProcedureIsValid
    - Assert
    - _bt_compare_array_elements
    - OidIsValid
    - get_opfamily_proc
    - fmgr_info_cxt
    linkageType: ''
    returnType: bool
    signature: "bool _bt_merge_arrays(IndexScanDesc scan, ScanKey skey, FmgrInfo *sortproc,\n\t\t\t\t
      bool reverse, Oid origelemtype, Oid nextelemtype,\n\t\t\t\t Datum *elems_orig,
      int *nelems_orig,\n\t\t\t\t Datum *elems_next, int nelems_next)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2851,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2851,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2855,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2857
      start: 2843
    functionDepth: 1
    functionLinenumber: 2843
    functionLinenumberEnd: 2857
    functionName: _bt_compare_array_elements
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    - INVERT_COMPARE_RESULT
    linkageType: ''
    returnType: int
    signature: int _bt_compare_array_elements(const void *a, const void *b, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:60,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:61,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:62,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:74,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - page
    - from
    - len
    argTypes:
    - Page
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 77
    functionName: _bt_restore_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - PageAddItem
    - MAXALIGN
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: void _bt_restore_page(Page page, char *from, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:91,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:92,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:94,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:95,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:95,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:97,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:99,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:99,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:109,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:114,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:125,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:126,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 2
    argNames:
    - record
    - block_id
    argTypes:
    - XLogReaderState*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 128
    functionName: _bt_restore_meta
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - _bt_pageinit
    - BufferGetBlockNumber
    - XLogInitBufferForRedo
    - BufferGetPageSize
    - BTPageGetMeta
    - BufferGetPage
    - UnlockReleaseBuffer
    - PageSetLSN
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void _bt_restore_meta(XLogReaderState *record, uint8 block_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:142,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:144,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:145,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:147,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:147,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:150,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:151,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:153,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - record
    - block_id
    argTypes:
    - XLogReaderState*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 136
    functionDepth: 4
    functionLinenumber: 136
    functionLinenumberEnd: 155
    functionName: _bt_clear_incomplete_split
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - P_INCOMPLETE_SPLIT
    - Assert
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    - BufferIsValid
    - MarkBufferDirty
    - BTPageGetOpaque
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void _bt_clear_incomplete_split(XLogReaderState *record, uint8 block_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:162,1
    - Dst: _bt_clear_incomplete_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:176,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:177,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:180,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:182,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:187,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:188,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:212,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:212,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:216,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:217,1
    - Dst: _bt_swap_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:218,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:221,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:221,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:221,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:224,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:224,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:225,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:226,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:229,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:230,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:232,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:233,1
    - Dst: _bt_restore_meta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:243,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - isleaf
    - ismeta
    - posting
    - record
    argTypes:
    - bool
    - bool
    - bool
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 157
    functionDepth: 7
    functionLinenumber: 157
    functionLinenumberEnd: 244
    functionName: btree_xlog_insert
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - _bt_swap_posting
    - _bt_clear_incomplete_split
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - XLogRecGetBlockData
    - elog
    - memcpy
    - Assert
    - UnlockReleaseBuffer
    - MAXALIGN
    - CopyIndexTuple
    - PageSetLSN
    - IndexTupleSize
    - _bt_restore_meta
    - PageGetItemId
    - PageAddItem
    - BufferIsValid
    - MarkBufferDirty
    - XLogRecGetData
    - OffsetNumberPrev
    linkageType: ''
    returnType: void
    signature: "void btree_xlog_insert(bool isleaf, bool ismeta, bool posting,\n\t\t\t\t
      \ XLogReaderState *record)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:250,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:262,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:263,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:264,1
    - Dst: _bt_clear_incomplete_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:281,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:284,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:285,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:286,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:288,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:288,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:289,1
    - Dst: _bt_restore_page
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:297,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:299,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:300,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:303,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:313,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:314,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:325,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:330,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:330,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:340,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:343,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:344,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:345,1
    - Dst: _bt_swap_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:346,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:357,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:361,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:363,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:367,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:368,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:369,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:380,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:382,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:382,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:382,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:383,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:384,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:391,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:392,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:393,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:396,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:397,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:398,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:399,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:400,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:401,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:407,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:408,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:409,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:412,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:421,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:422,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:430,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:432,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:433,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:437,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:438,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:440,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:441,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:448,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:449,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:450,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 91
    argCount: 2
    argNames:
    - newitemonleft
    - record
    argTypes:
    - bool
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 246
    functionDepth: 7
    functionLinenumber: 246
    functionLinenumberEnd: 451
    functionName: btree_xlog_split
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - _bt_swap_posting
    - _bt_restore_page
    - _bt_clear_incomplete_split
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - XLogRecGetBlockTag
    - XLogRecGetBlockData
    - elog
    - Assert
    - XLogInitBufferForRedo
    - BufferGetPageSize
    - UnlockReleaseBuffer
    - MAXALIGN
    - CopyIndexTuple
    - PageSetLSN
    - IndexTupleSize
    - PageGetTempPageCopySpecial
    - PageGetItemId
    - PageAddItem
    - BufferIsValid
    - P_FIRSTDATAKEY
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRecGetBlockTagExtended
    - XLogRecGetData
    - OffsetNumberNext
    - _bt_pageinit
    - OffsetNumberPrev
    - PageRestoreTempPage
    - ItemIdGetLength
    linkageType: ''
    returnType: void
    signature: void btree_xlog_split(bool newitemonleft, XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:457,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:460,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:462,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:463,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:464,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:472,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:480,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:486,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:487,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:488,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:490,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:492,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:493,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:494,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:496,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:497,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:503,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:505,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:506,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:509,1
    - Dst: _bt_dedup_save_htid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:514,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:515,1
    - Dst: _bt_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:519,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:520,1
    - Dst: _bt_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:526,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:526,1
    - Dst: P_HAS_GARBAGE
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:529,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:531,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:536,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:537,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:538,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:541,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:542,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 453
    functionDepth: 5
    functionLinenumber: 453
    functionLinenumberEnd: 543
    functionName: btree_xlog_dedup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - P_RIGHTMOST
    - BufferGetPage
    - PageGetItem
    - XLogRecGetBlockData
    - elog
    - Assert
    - PageGetMaxOffsetNumber
    - _bt_dedup_start_pending
    - palloc_object
    - UnlockReleaseBuffer
    - memcmp
    - P_HAS_GARBAGE
    - PageSetLSN
    - PageGetTempPageCopySpecial
    - PageGetItemId
    - PageAddItem
    - _bt_dedup_finish_pending
    - P_FIRSTDATAKEY
    - BufferIsValid
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRecGetData
    - OffsetNumberNext
    - _bt_dedup_save_htid
    - PageRestoreTempPage
    - palloc
    - ItemIdGetLength
    linkageType: ''
    returnType: void
    signature: void btree_xlog_dedup(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:556,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:557,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:559,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:564,1
    - Dst: _bt_update_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:568,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:571,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:571,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:572,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:573,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:575,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - page
    - updatedoffsets
    - updates
    - nupdated
    argTypes:
    - Page
    - OffsetNumber*
    - xl_btree_update*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 545
    functionDepth: 6
    functionLinenumber: 545
    functionLinenumberEnd: 583
    functionName: btree_xlog_updates
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - _bt_update_posting
    - pfree
    - PageGetItemId
    - PageGetItem
    - palloc
    - MAXALIGN
    - PageIndexTupleOverwrite
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void btree_xlog_updates(Page page, OffsetNumber *updatedoffsets,\n\t\t\t\t
      \  xl_btree_update *updates, int nupdated)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:589,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:600,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:603,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:605,1
    - Dst: btree_xlog_updates
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:618,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:622,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:628,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:632,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:633,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:635,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:636,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 585
    functionDepth: 7
    functionLinenumber: 585
    functionLinenumberEnd: 637
    functionName: btree_xlog_vacuum
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - btree_xlog_updates
    - XLogReadBufferForRedoExtended
    - XLogRecGetData
    - BufferGetPage
    - PageIndexMultiDelete
    - UnlockReleaseBuffer
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void btree_xlog_vacuum(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:643,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:656,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:658,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:667,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:669,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:671,1
    - Dst: btree_xlog_updates
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:684,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:688,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:694,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:697,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:698,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:700,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:701,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 639
    functionDepth: 7
    functionLinenumber: 639
    functionLinenumberEnd: 702
    functionName: btree_xlog_delete
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - ResolveRecoveryConflictWithSnapshot
    - btree_xlog_updates
    - XLogReadBufferForRedo
    - XLogRecGetData
    - BufferGetPage
    - PageIndexMultiDelete
    - UnlockReleaseBuffer
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRecGetBlockTag
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void btree_xlog_delete(XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:708,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:723,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:731,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:732,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:736,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:737,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:738,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:739,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:741,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:742,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:743,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:744,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:745,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:747,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:748,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:755,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:756,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:759,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:760,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:762,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:762,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:763,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:775,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:777,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:779,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:780,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:782,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:783,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:784,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 2
    argNames:
    - info
    - record
    argTypes:
    - uint8
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 704
    functionDepth: 4
    functionLinenumber: 704
    functionLinenumberEnd: 785
    functionName: btree_xlog_mark_page_halfdead
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - BTreeTupleSetTopParent
    - BufferGetPage
    - PageGetItem
    - elog
    - BTreeTupleSetDownLink
    - XLogInitBufferForRedo
    - BTreeTupleGetDownLink
    - BufferGetPageSize
    - PageIndexTupleDelete
    - UnlockReleaseBuffer
    - PageSetLSN
    - PageGetItemId
    - PageAddItem
    - MemSet
    - BufferIsValid
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRecGetData
    - OffsetNumberNext
    - _bt_pageinit
    linkageType: ''
    returnType: void
    signature: void btree_xlog_mark_page_halfdead(uint8 info, XLogReaderState *record)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:792,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:811,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:811,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:824,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:826,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:827,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:830,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:831,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:838,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:839,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:841,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:841,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:842,1
    - Dst: BTPageSetDeleted
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:847,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:852,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:853,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:856,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:858,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:859,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:862,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:863,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:867,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:868,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:869,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:870,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:873,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:880,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:894,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:896,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:897,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:899,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:899,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:900,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:909,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:911,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:913,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:914,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:916,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:917,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:918,1
    - Dst: _bt_restore_meta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:923,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 64
    argCount: 2
    argNames:
    - info
    - record
    argTypes:
    - uint8
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 788
    functionDepth: 5
    functionLinenumber: 788
    functionLinenumberEnd: 924
    functionName: btree_xlog_unlink_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - BlockNumberIsValid
    - BTreeTupleSetTopParent
    - BufferGetPage
    - XLogRecHasBlockRef
    - BTPageSetDeleted
    - elog
    - Assert
    - XLogInitBufferForRedo
    - BufferGetPageSize
    - UnlockReleaseBuffer
    - PageSetLSN
    - _bt_restore_meta
    - PageAddItem
    - MemSet
    - BufferIsValid
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRecGetData
    - _bt_pageinit
    linkageType: ''
    returnType: void
    signature: void btree_xlog_unlink_page(uint8 info, XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:930,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:937,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:938,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:940,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:940,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:941,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:952,1
    - Dst: _bt_restore_page
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:953,1
    - Dst: _bt_clear_incomplete_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:956,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:959,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:960,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:961,1
    - Dst: _bt_restore_meta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:963,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 926
    functionDepth: 5
    functionLinenumber: 926
    functionLinenumberEnd: 964
    functionName: btree_xlog_newroot
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - XLogRecGetBlockData
    - _bt_restore_page
    - _bt_restore_meta
    - _bt_pageinit
    - _bt_clear_incomplete_split
    - XLogInitBufferForRedo
    - BufferGetPageSize
    - BufferGetPage
    - UnlockReleaseBuffer
    - PageSetLSN
    - MarkBufferDirty
    - BTPageGetOpaque
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void btree_xlog_newroot(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:995,1
    - Dst: ResolveRecoveryConflictWithSnapshotFullXid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 1001
    functionName: btree_xlog_reuse_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - ResolveRecoveryConflictWithSnapshotFullXid
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void btree_xlog_reuse_page(XLogReaderState *record)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1006,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1009,1
    - Dst: btree_xlog_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1013,1
    - Dst: btree_xlog_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1016,1
    - Dst: btree_xlog_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1019,1
    - Dst: btree_xlog_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1022,1
    - Dst: btree_xlog_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1025,1
    - Dst: btree_xlog_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1028,1
    - Dst: btree_xlog_dedup
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1031,1
    - Dst: btree_xlog_vacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1034,1
    - Dst: btree_xlog_delete
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1037,1
    - Dst: btree_xlog_mark_page_halfdead
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1040,1
    - Dst: btree_xlog_unlink_page
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1044,1
    - Dst: btree_xlog_newroot
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1047,1
    - Dst: btree_xlog_reuse_page
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1050,1
    - Dst: _bt_restore_meta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1053,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1056,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1058,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1059,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1003
    functionDepth: 8
    functionLinenumber: 1003
    functionLinenumberEnd: 1060
    functionName: btree_redo
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - MemoryContextReset
    - _bt_restore_meta
    - btree_xlog_split
    - btree_xlog_reuse_page
    - btree_xlog_unlink_page
    - MemoryContextSwitchTo
    - btree_xlog_vacuum
    - btree_xlog_dedup
    - btree_xlog_delete
    - btree_xlog_mark_page_halfdead
    - btree_xlog_newroot
    - btree_xlog_insert
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void btree_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1062
    functionDepth: 1
    functionLinenumber: 1062
    functionLinenumberEnd: 1068
    functionName: btree_xlog_startup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void btree_xlog_startup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1070
    functionDepth: 1
    functionLinenumber: 1070
    functionLinenumberEnd: 1075
    functionName: btree_xlog_cleanup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void btree_xlog_cleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mask_page_lsn_and_checksum
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1086,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1088,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1089,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1091,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1093,1
    - Dst: mask_lp_flags
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1080
    functionDepth: 1
    functionLinenumber: 1080
    functionLinenumberEnd: 1117
    functionName: btree_mask
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - mask_page_lsn_and_checksum
    - mask_unused_space
    - mask_lp_flags
    - mask_page_hint_bits
    - BTPageGetOpaque
    - P_ISLEAF
    linkageType: ''
    returnType: void
    signature: void btree_mask(char *pagedata, BlockNumber blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:77,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:78,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 81
    functionName: btboolcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum btboolcmp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:86,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 97
    functionName: bool_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - BoolGetDatum
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum bool_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:102,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 113
    functionName: bool_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - BoolGetDatum
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum bool_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:118,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:122,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:123,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 126
    functionName: btboolskipsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - BoolGetDatum
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum btboolskipsupport(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:131,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:132,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: btint2cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btint2cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:140,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: btint2sortsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum btint2sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:149,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 160
    functionName: int2_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetInt16
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum int2_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:165,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 176
    functionName: int2_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetInt16
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum int2_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:181,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:185,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:186,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 189
    functionName: btint2skipsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum btint2skipsupport(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:194,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:195,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:198,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:200,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 203
    functionName: btint4cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btint4cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:208,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: btint4sortsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum btint4sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:217,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 228
    functionName: int4_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - DatumGetInt32
    linkageType: ''
    returnType: Datum
    signature: Datum int4_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:233,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 244
    functionName: int4_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - DatumGetInt32
    linkageType: ''
    returnType: Datum
    signature: Datum int4_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:249,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:253,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:254,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 257
    functionName: btint4skipsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum btint4skipsupport(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:262,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:263,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:266,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:268,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:270,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 271
    functionName: btint8cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btint8cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:276,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 280
    functionName: btint8sortsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum btint8sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:285,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 296
    functionName: int8_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    - DatumGetInt64
    linkageType: ''
    returnType: Datum
    signature: Datum int8_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:301,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 312
    functionName: int8_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    - DatumGetInt64
    linkageType: ''
    returnType: Datum
    signature: Datum int8_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:317,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:321,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:322,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 325
    functionName: btint8skipsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum btint8skipsupport(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:330,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:331,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:334,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:336,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 339
    functionName: btint48cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btint48cmp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:344,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:345,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:348,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:350,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 353
    functionName: btint84cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btint84cmp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:358,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:359,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:362,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:364,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 367
    functionName: btint24cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btint24cmp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:372,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:373,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:376,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:378,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 381
    functionName: btint42cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btint42cmp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:386,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:387,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:390,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:392,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 395
    functionName: btint28cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btint28cmp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:400,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:401,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:404,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:406,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:408,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 409
    functionName: btint82cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btint82cmp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:414,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:415,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:418,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:420,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 423
    functionName: btoidcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btoidcmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:428,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 432
    functionName: btoidsortsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum btoidsortsupport(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:437,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 448
    functionName: oid_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetObjectId
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum oid_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:453,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 464
    functionName: oid_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetObjectId
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum oid_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:469,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:473,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:474,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 477
    functionName: btoidskipsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum btoidskipsupport(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:482,1
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:483,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:486,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:488,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:490,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 491
    functionName: btoid8cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID8
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btoid8cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:496,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 500
    functionName: btoid8sortsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum btoid8sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetObjectId8
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:505,1
    - Dst: ObjectId8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 516
    functionName: oid8_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetObjectId8
    - ObjectId8GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum oid8_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetObjectId8
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:521,1
    - Dst: ObjectId8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:531,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 532
    functionName: oid8_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetObjectId8
    - ObjectId8GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum oid8_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:537,1
    - Dst: ObjectId8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:541,1
    - Dst: ObjectId8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:542,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 545
    functionName: btoid8skipsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - ObjectId8GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum btoid8skipsupport(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:550,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:551,1
    - Dst: check_valid_oidvector
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:554,1
    - Dst: check_valid_oidvector
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:555,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:559,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:566,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:568,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:571,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 572
    functionName: btoidvectorcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - check_valid_oidvector
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btoidvectorcmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:577,1
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:578,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 582
    functionName: btcharcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CHAR
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btcharcmp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUInt8
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:587,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 598
    functionName: char_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - CharGetDatum
    - DatumGetUInt8
    linkageType: ''
    returnType: Datum
    signature: Datum char_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUInt8
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:603,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 614
    functionName: char_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - CharGetDatum
    - DatumGetUInt8
    linkageType: ''
    returnType: Datum
    signature: Datum char_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:619,1
    - Dst: UInt8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:625,1
    - Dst: UInt8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:626,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 629
    functionName: btcharskipsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - UInt8GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum btcharskipsupport(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:91,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:91,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:92,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:92,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:94,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - iptr
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 99
    functionName: itemptr_to_uint64
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 0
    functionsReached:
    - Assert
    - GinItemPointerGetOffsetNumber
    - GinItemPointerGetBlockNumber
    - ItemPointerIsValid
    linkageType: ''
    returnType: uint64
    signature: uint64 itemptr_to_uint64(const ItemPointerData *iptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GinItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:104,1
    - Dst: GinItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:108,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - val
    - iptr
    argTypes:
    - uint64
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 109
    functionName: uint64_to_itemptr
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 0
    functionsReached:
    - GinItemPointerSetBlockNumber
    - GinItemPointerSetOffsetNumber
    - ItemPointerIsValid
    - Assert
    linkageType: ''
    returnType: void
    signature: void uint64_to_itemptr(uint64 val, ItemPointer iptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - val
    - ptr
    argTypes:
    - uint64
    - unsigned char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 127
    functionName: encode_varbyte
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void encode_varbyte(uint64 val, unsigned char **ptr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:172,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - unsigned char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 183
    functionName: decode_varbyte
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint64
    signature: uint64 decode_varbyte(unsigned char **ptr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SHORTALIGN_DOWN
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:207,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:212,1
    - Dst: itemptr_to_uint64
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:217,1
    - Dst: itemptr_to_uint64
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:226,1
    - Dst: encode_varbyte
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:229,1
    - Dst: encode_varbyte
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:239,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:243,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:260,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:260,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:268,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:270,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:271,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:271,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:272,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 4
    argNames:
    - ipd
    - nipd
    - maxsize
    - nwritten
    argTypes:
    - ItemPointerData*
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 277
    functionName: ginCompressPostingList
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 1
    functionsReached:
    - itemptr_to_uint64
    - memcpy
    - Assert
    - pfree
    - SHORTALIGN_DOWN
    - SHORTALIGN
    - SizeOfGinPostingList
    - palloc
    - memcmp
    - ginPostingListDecode
    - encode_varbyte
    linkageType: ''
    returnType: GinPostingList
    signature: "GinPostingList *\nginCompressPostingList(const ItemPointerData *ipd,
      int nipd, int maxsize,\n\t\t\t\t\t   int *nwritten)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginPostingListDecodeAllSegments
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:286,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - plist
    - ndecoded_out
    argTypes:
    - GinPostingList*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 289
    functionName: ginPostingListDecode
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 2
    functionsReached:
    - SizeOfGinPostingList
    - ginPostingListDecodeAllSegments
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer ginPostingListDecode(GinPostingList *plist, int *ndecoded_out)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:311,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:324,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:324,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:325,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:325,1
    - Dst: itemptr_to_uint64
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:329,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:338,1
    - Dst: decode_varbyte
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:341,1
    - Dst: uint64_to_itemptr
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:343,1
    - Dst: GinNextPostingListSegment
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:346,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - segment
    - len
    - ndecoded_out
    argTypes:
    - GinPostingList*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 296
    functionDepth: 2
    functionLinenumber: 296
    functionLinenumberEnd: 352
    functionName: ginPostingListDecodeAllSegments
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 1
    functionsReached:
    - ginCompareItemPointers
    - itemptr_to_uint64
    - OffsetNumberIsValid
    - Assert
    - repalloc
    - uint64_to_itemptr
    - GinNextPostingListSegment
    - ItemPointerGetOffsetNumber
    - palloc
    - decode_varbyte
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer ginPostingListDecodeAllSegments(GinPostingList *segment,
      int len, int *ndecoded_out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginPostingListDecodeAllSegments
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:364,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:365,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ptr
    - len
    - tbm
    argTypes:
    - GinPostingList*
    - int
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 357
    functionDepth: 3
    functionLinenumber: 357
    functionLinenumberEnd: 369
    functionName: ginPostingListDecodeAllSegmentsToTbm
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 0
    functionsReached:
    - pfree
    - tbm_add_tuples
    - ginPostingListDecodeAllSegments
    linkageType: ''
    returnType: int
    signature: "int ginPostingListDecodeAllSegmentsToTbm(GinPostingList *ptr, int
      len,\n\t\t\t\t\t\t\t\t\t TIDBitmap *tbm)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:384,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:390,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:392,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:393,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:396,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:398,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:399,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginpostinglist.c:410,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 5
    argNames:
    - a
    - na
    - b
    - nb
    - nmerged
    argTypes:
    - ItemPointerData*
    - uint32
    - ItemPointerData*
    - uint32
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 434
    functionName: ginMergeItemPointers
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 0
    functionsReached:
    - ginCompareItemPointers
    - memcpy
    - palloc
    linkageType: ''
    returnType: ItemPointer
    signature: "ItemPointer ginMergeItemPointers(ItemPointerData *a, uint32 na,\n\t\t\t\t\t
      ItemPointerData *b, uint32 nb,\n\t\t\t\t\t int *nmerged)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gin/ginutil.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 96
    functionName: ginhandler
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum ginhandler(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/gin/ginutil.c:106,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/gin/ginutil.c:109,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/gin/ginutil.c:117,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/gin/ginutil.c:123,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/gin/ginutil.c:125,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/gin/ginutil.c:127,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/access/gin/ginutil.c:131,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/gin/ginutil.c:133,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:140,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:142,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:143,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/gin/ginutil.c:150,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginutil.c:153,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginutil.c:154,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginutil.c:155,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/gin/ginutil.c:156,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:157,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:163,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:164,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:166,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:167,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:174,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:176,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:177,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:181,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:183,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:184,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginutil.c:191,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginutil.c:193,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:199,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:201,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:202,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:223,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - GinState*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 228
    functionName: initGinState
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - fmgr_info_copy
    - lookup_type_cache
    - elog
    - format_type_be
    - CreateTemplateTupleDesc
    - errcode
    - RelationGetDescr
    - TupleDescFinalize
    - ereport
    - MemSet
    - TupleDescInitEntryCollation
    - index_getprocid
    - index_getprocinfo
    - errmsg
    - RelationGetRelationName
    - OidIsValid
    - TupleDescAttr
    - TupleDescInitEntry
    linkageType: ''
    returnType: void
    signature: void initGinState(GinState *state, Relation index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gin/ginutil.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginutil.c:254,1
    - Dst: DatumGetUInt16
      Src: /src/postgres/src/backend/access/gin/ginutil.c:256,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginutil.c:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ginstate
    - tuple
    argTypes:
    - GinState*
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 261
    functionName: gintuple_get_attrnum
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - Assert
    - index_getattr
    - DatumGetUInt16
    linkageType: ''
    returnType: OffsetNumber
    signature: OffsetNumber gintuple_get_attrnum(GinState *ginstate, IndexTuple tuple)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gin/ginutil.c:278,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginutil.c:287,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gin/ginutil.c:289,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gin/ginutil.c:289,1
    - Dst: GinGetNullCategory
      Src: /src/postgres/src/backend/access/gin/ginutil.c:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ginstate
    - tuple
    - category
    argTypes:
    - GinState*
    - IndexTuple
    - GinNullCategory*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 266
    functionDepth: 4
    functionLinenumber: 266
    functionLinenumberEnd: 300
    functionName: gintuple_get_key
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - GinGetNullCategory
    - index_getattr
    - gintuple_get_attrnum
    - OffsetNumberNext
    linkageType: ''
    returnType: Datum
    signature: "Datum gintuple_get_key(GinState *ginstate, IndexTuple tuple,\n\t\t\t\t
      GinNullCategory *category)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetFreeIndexPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:315,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:320,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:326,1
    - Dst: GinPageIsRecyclable
      Src: /src/postgres/src/backend/access/gin/ginutil.c:328,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:328,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:331,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:335,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/gin/ginutil.c:339,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/gin/ginutil.c:339,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 307
    functionDepth: 4
    functionLinenumber: 307
    functionLinenumberEnd: 343
    functionName: GinNewBuffer
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - ExtendBufferedRel
    - LockBuffer
    - BufferGetPage
    - BMR_REL
    - ReadBuffer
    - ConditionalLockBuffer
    - GetFreeIndexPage
    - GinPageIsRecyclable
    linkageType: ''
    returnType: Buffer
    signature: Buffer GinNewBuffer(Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/gin/ginutil.c:350,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginutil.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - page
    - f
    - pageSize
    argTypes:
    - Page
    - uint32
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 355
    functionName: GinInitPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - GinPageGetOpaque
    - PageInit
    linkageType: ''
    returnType: void
    signature: void GinInitPage(Page page, uint32 f, Size pageSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:360,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:360,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/gin/ginutil.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - f
    argTypes:
    - Buffer
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 4
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: GinInitBuffer
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - GinInitPage
    - BufferGetPageSize
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: void GinInitBuffer(Buffer b, uint32 f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:367,1
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:369,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/gin/ginutil.c:369,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginutil.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - b
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 363
    functionDepth: 4
    functionLinenumber: 363
    functionLinenumberEnd: 390
    functionName: GinInitMetabuffer
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - GinInitPage
    - GinPageGetMeta
    - BufferGetPageSize
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: void GinInitMetabuffer(Buffer b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/gin/ginutil.c:411,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/gin/ginutil.c:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 424
    functionName: cmpEntries
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    linkageType: ''
    returnType: int
    signature: int cmpEntries(const void *a, const void *b, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 430
    functionName: ST_COMPARE
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_COMPARE(a, b, arg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginutil.c:459,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginutil.c:461,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:470,1
    - Dst: FunctionCall3Coll
      Src: /src/postgres/src/backend/access/gin/ginutil.c:470,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginutil.c:473,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginutil.c:474,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginutil.c:482,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginutil.c:484,1
    - Dst: qsort_arg_entries
      Src: /src/postgres/src/backend/access/gin/ginutil.c:528,1
    - Dst: qunique_arg
      Src: /src/postgres/src/backend/access/gin/ginutil.c:531,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/access/gin/ginutil.c:539,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/gin/ginutil.c:540,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 6
    argNames:
    - ginstate
    - attnum
    - value
    - isNull
    - nentries_p
    - categories_p
    argTypes:
    - GinState*
    - OffsetNumber
    - Datum
    - bool
    - int32*
    - GinNullCategory**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 441
    functionDepth: 2
    functionLinenumber: 441
    functionLinenumberEnd: 554
    functionName: ginExtractEntries
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - palloc0_array
    - StaticAssertDecl
    - qunique_arg
    - PointerGetDatum
    - palloc_object
    - DatumGetPointer
    - FunctionCall3Coll
    - qsort_arg_entries
    linkageType: ''
    returnType: Datum
    signature: "Datum *\nginExtractEntries(GinState *ginstate, OffsetNumber attnum,\n\t\t\t\t
      \ Datum value, bool isNull,\n\t\t\t\t  int32 *nentries_p, GinNullCategory **categories_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/gin/ginutil.c:565,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/gin/ginutil.c:568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 569
    functionName: ginoptions
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      ginoptions(Datum reloptions, bool validate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:584,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:585,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:586,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginutil.c:587,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - index
    - stats
    argTypes:
    - Relation
    - GinStatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 577
    functionDepth: 4
    functionLinenumber: 577
    functionLinenumberEnd: 597
    functionName: ginGetStats
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - GinPageGetMeta
    - LockBuffer
    - BufferGetPage
    - ReadBuffer
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void ginGetStats(Relation index, GinStatsData *stats)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:611,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:612,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:613,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginutil.c:614,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginutil.c:616,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginutil.c:633,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginutil.c:635,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:643,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginutil.c:645,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginutil.c:646,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:647,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginutil.c:649,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginutil.c:650,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginutil.c:653,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:655,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 3
    argNames:
    - index
    - stats
    - is_build
    argTypes:
    - Relation
    - GinStatsData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 604
    functionDepth: 4
    functionLinenumber: 604
    functionLinenumberEnd: 656
    functionName: ginUpdateStats
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - GinPageGetMeta
    - XLogInsert
    - memcpy
    - XLogBeginInsert
    - LockBuffer
    - START_CRIT_SECTION
    - BufferGetPage
    - XLogRegisterData
    - RelationNeedsWAL
    - ReadBuffer
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void ginUpdateStats(Relation index, const GinStatsData *stats, bool
      is_build)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - phasenum
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 661
    functionDepth: 0
    functionLinenumber: 661
    functionLinenumberEnd: 681
    functionName: ginbuildphasename
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      ginbuildphasename(int64 phasenum)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:45,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:47,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginget.c:52,1
    - Dst: ginStepRight
      Src: /src/postgres/src/backend/access/gin/ginget.c:55,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:56,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - btree
    - stack
    - snapshot
    argTypes:
    - GinBtreeData*
    - GinBtreeStack*
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 62
    functionName: moveRightIfItNeeded
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - BufferGetBlockNumber
    - PredicateLockPage
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - GinPageRightMost
    - ginStepRight
    linkageType: ''
    returnType: bool
    signature: bool moveRightIfItNeeded(GinBtreeData *btree, GinBtreeStack *stack,
      Snapshot snapshot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ginScanBeginPostingTree
      Src: /src/postgres/src/backend/access/gin/ginget.c:78,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/gin/ginget.c:81,1
    - Dst: freeGinBtreeStack
      Src: /src/postgres/src/backend/access/gin/ginget.c:83,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:90,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginget.c:91,1
    - Dst: GinDataLeafPageGetItemsToTbm
      Src: /src/postgres/src/backend/access/gin/ginget.c:93,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginget.c:98,1
    - Dst: ginStepRight
      Src: /src/postgres/src/backend/access/gin/ginget.c:101,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - index
    - scanEntry
    - rootPostingTree
    argTypes:
    - Relation
    - GinScanEntry
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 68
    functionDepth: 4
    functionLinenumber: 68
    functionLinenumberEnd: 105
    functionName: scanPostingTree
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - BufferGetPage
    - UnlockReleaseBuffer
    - IncrBufferRefCount
    - GinPageGetOpaque
    - ginScanBeginPostingTree
    - GinPageRightMost
    - ginStepRight
    - GinDataLeafPageGetItemsToTbm
    - freeGinBtreeStack
    linkageType: ''
    returnType: void
    signature: "void scanPostingTree(Relation index, GinScanEntry scanEntry,\n\t\t\t\tBlockNumber
      rootPostingTree)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: tbm_create
      Src: /src/postgres/src/backend/access/gin/ginget.c:128,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/gin/ginget.c:137,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:143,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:144,1
    - Dst: moveRightIfItNeeded
      Src: /src/postgres/src/backend/access/gin/ginget.c:157,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:160,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:161,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:161,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginget.c:166,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginget.c:170,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/gin/ginget.c:193,1
    - Dst: FunctionCall4Coll
      Src: /src/postgres/src/backend/access/gin/ginget.c:193,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gin/ginget.c:197,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginget.c:198,1
    - Dst: GinIsPostingTree
      Src: /src/postgres/src/backend/access/gin/ginget.c:223,1
    - Dst: GinGetPostingTree
      Src: /src/postgres/src/backend/access/gin/ginget.c:225,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/gin/ginget.c:235,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:237,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:244,1
    - Dst: scanPostingTree
      Src: /src/postgres/src/backend/access/gin/ginget.c:247,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:253,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:254,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginget.c:255,1
    - Dst: moveRightIfItNeeded
      Src: /src/postgres/src/backend/access/gin/ginget.c:268,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginget.c:269,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginget.c:270,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginget.c:271,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginget.c:272,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:274,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:275,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:275,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginget.c:277,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginget.c:282,1
    - Dst: ginCompareEntries
      Src: /src/postgres/src/backend/access/gin/ginget.c:285,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginget.c:295,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/ginget.c:295,1
    - Dst: ginReadTuple
      Src: /src/postgres/src/backend/access/gin/ginget.c:302,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/gin/ginget.c:303,1
    - Dst: GinGetNPosting
      Src: /src/postgres/src/backend/access/gin/ginget.c:304,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginget.c:305,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 63
    argCount: 4
    argNames:
    - btree
    - stack
    - scanEntry
    - snapshot
    argTypes:
    - GinBtreeData*
    - GinBtreeStack*
    - GinScanEntry
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 120
    functionDepth: 5
    functionLinenumber: 120
    functionLinenumberEnd: 313
    functionName: collectMatchBitmap
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - tbm_create
    - errcode
    - moveRightIfItNeeded
    - LockBuffer
    - BufferGetPage
    - PageGetItem
    - RelationGetRelationName
    - UInt16GetDatum
    - pfree
    - BufferGetBlockNumber
    - GinPageIsLeaf
    - gintuple_get_attrnum
    - PointerGetDatum
    - errmsg
    - GinGetPostingTree
    - FunctionCall4Coll
    - ereport
    - PageGetItemId
    - tbm_add_tuples
    - ginReadTuple
    - TupleDescCompactAttr
    - GinGetNPosting
    - gintuple_get_key
    - GinIsPostingTree
    - scanPostingTree
    - PredicateLockPage
    - datumCopy
    - ginCompareEntries
    - DatumGetInt32
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: "bool collectMatchBitmap(GinBtreeData *btree, GinBtreeStack *stack,\n\t\t\t\t
      \  GinScanEntry scanEntry, Snapshot snapshot)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginget.c:328,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginget.c:331,1
    - Dst: ginPrepareEntryScan
      Src: /src/postgres/src/backend/access/gin/ginget.c:344,1
    - Dst: ginFindLeafPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:347,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:348,1
    - Dst: GinBtreeData::findItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:365,1
    - Dst: collectMatchBitmap
      Src: /src/postgres/src/backend/access/gin/ginget.c:366,1
    - Dst: tbm_end_private_iterate
      Src: /src/postgres/src/backend/access/gin/ginget.c:377,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/access/gin/ginget.c:379,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:382,1
    - Dst: freeGinBtreeStack
      Src: /src/postgres/src/backend/access/gin/ginget.c:383,1
    - Dst: tbm_is_empty
      Src: /src/postgres/src/backend/access/gin/ginget.c:387,1
    - Dst: tbm_begin_private_iterate
      Src: /src/postgres/src/backend/access/gin/ginget.c:390,1
    - Dst: GinBtreeData::findItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:394,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:396,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:396,1
    - Dst: GinIsPostingTree
      Src: /src/postgres/src/backend/access/gin/ginget.c:398,1
    - Dst: GinGetPostingTree
      Src: /src/postgres/src/backend/access/gin/ginget.c:400,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:410,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:419,1
    - Dst: ginScanBeginPostingTree
      Src: /src/postgres/src/backend/access/gin/ginget.c:422,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/gin/ginget.c:431,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:433,1
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginget.c:438,1
    - Dst: GinDataLeafPageGetItems
      Src: /src/postgres/src/backend/access/gin/ginget.c:439,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:443,1
    - Dst: freeGinBtreeStack
      Src: /src/postgres/src/backend/access/gin/ginget.c:444,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:457,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:458,1
    - Dst: GinGetNPosting
      Src: /src/postgres/src/backend/access/gin/ginget.c:460,1
    - Dst: ginReadTuple
      Src: /src/postgres/src/backend/access/gin/ginget.c:462,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:476,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:477,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:481,1
    - Dst: freeGinBtreeStack
      Src: /src/postgres/src/backend/access/gin/ginget.c:482,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 69
    argCount: 3
    argNames:
    - ginstate
    - entry
    - snapshot
    argTypes:
    - GinState*
    - GinScanEntry
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 318
    functionDepth: 6
    functionLinenumber: 318
    functionLinenumberEnd: 483
    functionName: startScanEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - collectMatchBitmap
    - LockBuffer
    - BufferGetPage
    - ginFindLeafPage
    - PageGetItem
    - pfree
    - BufferGetBlockNumber
    - tbm_free
    - IncrBufferRefCount
    - ginPrepareEntryScan
    - ginScanBeginPostingTree
    - GinDataLeafPageGetItems
    - tbm_end_private_iterate
    - tbm_is_empty
    - tbm_begin_private_iterate
    - GinGetPostingTree
    - PageGetItemId
    - ginReadTuple
    - GinBtreeData::findItem
    - GinGetNPosting
    - ItemPointerSetMin
    - GinIsPostingTree
    - PredicateLockPage
    - freeGinBtreeStack
    linkageType: ''
    returnType: void
    signature: void startScanEntry(GinState *ginstate, GinScanEntry entry, Snapshot
      snapshot)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - a1
    - a2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 504
    functionName: entryIndexByFrequencyCmp
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int entryIndexByFrequencyCmp(const void *a1, const void *a2, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginget.c:514,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:543,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginget.c:547,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:553,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginget.c:555,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/access/gin/ginget.c:558,1
    - Dst: GinScanKey::triConsistentFn
      Src: /src/postgres/src/backend/access/gin/ginget.c:568,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/ginget.c:572,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:576,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginget.c:580,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginget.c:581,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginget.c:590,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:594,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginget.c:598,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:601,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 3
    argNames:
    - ginstate
    - so
    - key
    argTypes:
    - GinState*
    - GinScanOpaque
    - GinScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 602
    functionName: startScanKey
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetMin
    - MemoryContextReset
    - palloc_array
    - GinScanKey::triConsistentFn
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - qsort_arg
    - palloc
    linkageType: ''
    returnType: void
    signature: void startScanKey(GinState *ginstate, GinScanOpaque so, GinScanKey
      key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: startScanEntry
      Src: /src/postgres/src/backend/access/gin/ginget.c:612,1
    - Dst: startScanKey
      Src: /src/postgres/src/backend/access/gin/ginget.c:647,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 604
    functionDepth: 7
    functionLinenumber: 604
    functionLinenumberEnd: 648
    functionName: startScan
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - startScanKey
    - startScanEntry
    linkageType: ''
    returnType: void
    signature: void startScan(IndexScanDesc scan)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginget.c:664,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:676,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:679,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:685,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:690,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:692,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:693,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:698,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:699,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gin/ginget.c:700,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:700,1
    - Dst: ginFindLeafPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:703,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/gin/ginget.c:707,1
    - Dst: freeGinBtreeStack
      Src: /src/postgres/src/backend/access/gin/ginget.c:708,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginget.c:712,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:713,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:714,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:717,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginget.c:723,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginget.c:734,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:736,1
    - Dst: ginStepRight
      Src: /src/postgres/src/backend/access/gin/ginget.c:746,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:749,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginget.c:753,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginget.c:763,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:764,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/ginget.c:764,1
    - Dst: GinDataLeafPageGetItems
      Src: /src/postgres/src/backend/access/gin/ginget.c:773,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:777,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginget.c:781,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:784,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:788,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 60
    argCount: 3
    argNames:
    - ginstate
    - entry
    - advancePast
    argTypes:
    - GinState*
    - GinScanEntry
    - ItemPointerData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 656
    functionDepth: 4
    functionLinenumber: 656
    functionLinenumberEnd: 793
    functionName: entryLoadMoreItems
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ginCompareItemPointers
    - ItemPointerSet
    - ItemPointerIsLossyPage
    - LockBuffer
    - GinDataPageGetRightBound
    - BufferGetPage
    - ginFindLeafPage
    - GinItemPointerGetOffsetNumber
    - GinPageGetOpaque
    - elog
    - ReleaseBuffer
    - pfree
    - IncrBufferRefCount
    - GinPageRightMost
    - ginStepRight
    - UnlockReleaseBuffer
    - GinDataLeafPageGetItems
    - GinItemPointerGetBlockNumber
    - BufferIsValid
    - OffsetNumberNext
    - freeGinBtreeStack
    linkageType: ''
    returnType: void
    signature: "void entryLoadMoreItems(GinState *ginstate, GinScanEntry entry,\n\t\t\t\t
      \  ItemPointerData advancePast)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 796
    functionName: gin_rand
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gin_rand()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 797
    functionName: dropItem
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dropItem(e)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:815,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:817,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/ginget.c:817,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:818,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:823,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:824,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/gin/ginget.c:833,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:837,1
    - Dst: tbm_private_iterate
      Src: /src/postgres/src/backend/access/gin/ginget.c:840,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:842,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/gin/ginget.c:842,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/gin/ginget.c:843,1
    - Dst: tbm_end_private_iterate
      Src: /src/postgres/src/backend/access/gin/ginget.c:844,1
    - Dst: tbm_extract_page_tuple
      Src: /src/postgres/src/backend/access/gin/ginget.c:852,1
    - Dst: ItemPointerSetLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:893,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:911,1
    - Dst: dropItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:917,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginget.c:921,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/gin/ginget.c:931,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:939,1
    - Dst: dropItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:943,1
    - Dst: entryLoadMoreItems
      Src: /src/postgres/src/backend/access/gin/ginget.c:955,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/gin/ginget.c:959,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:967,1
    - Dst: dropItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:971,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 70
    argCount: 3
    argNames:
    - ginstate
    - entry
    - advancePast
    argTypes:
    - GinState*
    - GinScanEntry
    - ItemPointerData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 811
    functionDepth: 5
    functionLinenumber: 811
    functionLinenumberEnd: 981
    functionName: entryGetItem
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ginCompareItemPointers
    - ItemPointerSet
    - dropItem
    - ItemPointerIsLossyPage
    - ItemPointerSetLossyPage
    - tbm_extract_page_tuple
    - Assert
    - BlockNumberIsValid
    - entryLoadMoreItems
    - GinItemPointerGetBlockNumber
    - GinItemPointerGetOffsetNumber
    - BufferIsValid
    - ItemPointerSetInvalid
    - ItemPointerIsValid
    - tbm_end_private_iterate
    - tbm_private_iterate
    linkageType: ''
    returnType: void
    signature: "void entryGetItem(GinState *ginstate, GinScanEntry entry,\n\t\t\t
      ItemPointerData advancePast)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1017,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1024,1
    - Dst: ItemPointerSetMax
      Src: /src/postgres/src/backend/access/gin/ginget.c:1035,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1051,1
    - Dst: entryGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1053,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1059,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1080,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1082,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1083,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:1085,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1086,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1092,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1092,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:1093,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1094,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/gin/ginget.c:1095,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1105,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:1106,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1107,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gin/ginget.c:1108,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1108,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1126,1
    - Dst: entryGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1128,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1140,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1140,1
    - Dst: ItemPointerSetLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1176,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1177,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1183,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:1196,1
    - Dst: GinScanKey::triConsistentFn
      Src: /src/postgres/src/backend/access/gin/ginget.c:1201,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:1206,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginget.c:1207,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1238,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1241,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1243,1
    - Dst: GinScanKey::triConsistentFn
      Src: /src/postgres/src/backend/access/gin/ginget.c:1249,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:1286,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginget.c:1287,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 102
    argCount: 4
    argNames:
    - ginstate
    - tempCtx
    - key
    - advancePast
    argTypes:
    - GinState*
    - MemoryContext
    - GinScanKey
    - ItemPointerData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1004
    functionDepth: 6
    functionLinenumber: 1004
    functionLinenumberEnd: 1288
    functionName: keyGetItem
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ginCompareItemPointers
    - ItemPointerSet
    - ItemPointerIsLossyPage
    - OffsetNumberNext
    - ItemPointerSetMax
    - ItemPointerSetLossyPage
    - MemoryContextReset
    - Assert
    - OffsetNumberPrev
    - MemoryContextSwitchTo
    - GinItemPointerGetBlockNumber
    - entryGetItem
    - GinItemPointerGetOffsetNumber
    - GinScanKey::triConsistentFn
    linkageType: ''
    returnType: void
    signature: "void keyGetItem(GinState *ginstate, MemoryContext tempCtx, GinScanKey
      key,\n\t\t   ItemPointerData advancePast)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/ginget.c:1330,1
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginget.c:1332,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1348,1
    - Dst: keyGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1353,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1376,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1378,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1379,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:1381,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1382,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1388,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1388,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:1389,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1390,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/gin/ginget.c:1391,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1391,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1410,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1411,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1413,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1413,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1413,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1414,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1415,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1419,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1419,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1426,1
    - Dst: ItemPointerIsMin
      Src: /src/postgres/src/backend/access/gin/ginget.c:1426,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 4
    argNames:
    - scan
    - advancePast
    - item
    - recheck
    argTypes:
    - IndexScanDesc
    - ItemPointerData
    - ItemPointerData*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1299
    functionDepth: 7
    functionLinenumber: 1299
    functionLinenumberEnd: 1448
    functionName: scanGetItem
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ginCompareItemPointers
    - ItemPointerSet
    - ItemPointerIsLossyPage
    - ItemPointerSetMin
    - keyGetItem
    - Assert
    - ItemPointerIsMin
    - OffsetNumberPrev
    - CHECK_FOR_INTERRUPTS
    - GinItemPointerGetBlockNumber
    - GinItemPointerGetOffsetNumber
    linkageType: ''
    returnType: bool
    signature: "bool scanGetItem(IndexScanDesc scan, ItemPointerData advancePast,\n\t\t\tItemPointerData
      *item, bool *recheck)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/gin/ginget.c:1473,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1476,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1478,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginget.c:1481,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1485,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1498,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1500,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1501,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1509,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:1509,1
    - Dst: GinPageHasFullRow
      Src: /src/postgres/src/backend/access/gin/ginget.c:1511,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1518,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:1518,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/gin/ginget.c:1519,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - scan
    - pos
    argTypes:
    - IndexScanDesc
    - pendingPosition*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1466
    functionDepth: 4
    functionLinenumber: 1466
    functionLinenumberEnd: 1541
    functionName: scanGetCandidate
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - BufferGetPage
    - PageGetItemId
    - ItemPointerEquals
    - PageGetMaxOffsetNumber
    - PageGetItem
    - ReadBuffer
    - GinPageGetOpaque
    - GinPageHasFullRow
    - ItemPointerSetInvalid
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: bool
    signature: bool scanGetCandidate(IndexScanDesc scan, pendingPosition *pos)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1569,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:1569,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginget.c:1571,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginget.c:1576,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/gin/ginget.c:1592,1
    - Dst: FunctionCall4Coll
      Src: /src/postgres/src/backend/access/gin/ginget.c:1592,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gin/ginget.c:1596,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginget.c:1597,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 8
    argNames:
    - ginstate
    - page
    - 'off'
    - maxoff
    - entry
    - datum
    - category
    - datumExtracted
    argTypes:
    - GinState*
    - Page
    - OffsetNumber
    - OffsetNumber
    - GinScanEntry
    - Datum*
    - GinNullCategory*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1553
    functionDepth: 5
    functionLinenumber: 1553
    functionLinenumberEnd: 1607
    functionName: matchPartialInPendingList
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - gintuple_get_key
    - UInt16GetDatum
    - FunctionCall4Coll
    - PageGetItemId
    - DatumGetInt32
    - PageGetItem
    - gintuple_get_attrnum
    - PointerGetDatum
    linkageType: ''
    returnType: bool
    signature: "bool matchPartialInPendingList(GinState *ginstate, Page page,\n\t\t\t\t\t\t
      \ OffsetNumber off, OffsetNumber maxoff,\n\t\t\t\t\t\t  GinScanEntry entry,\n\t\t\t\t\t\t
      \ Datum *datum, GinNullCategory *category,\n\t\t\t\t\t\t  bool *datumExtracted)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginget.c:1638,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginget.c:1640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1652,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginget.c:1653,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1656,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1685,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:1685,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginget.c:1687,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginget.c:1703,1
    - Dst: ginCompareEntries
      Src: /src/postgres/src/backend/access/gin/ginget.c:1727,1
    - Dst: matchPartialInPendingList
      Src: /src/postgres/src/backend/access/gin/ginget.c:1748,1
    - Dst: matchPartialInPendingList
      Src: /src/postgres/src/backend/access/gin/ginget.c:1779,1
    - Dst: GinPageHasFullRow
      Src: /src/postgres/src/backend/access/gin/ginget.c:1796,1
    - Dst: scanGetCandidate
      Src: /src/postgres/src/backend/access/gin/ginget.c:1812,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/gin/ginget.c:1813,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginget.c:1814,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 69
    argCount: 2
    argNames:
    - scan
    - pos
    argTypes:
    - IndexScanDesc
    - pendingPosition*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1621
    functionDepth: 6
    functionLinenumber: 1621
    functionLinenumberEnd: 1831
    functionName: collectMatchesForHeapRow
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - elog
    - gintuple_get_key
    - scanGetCandidate
    - Assert
    - ginCompareEntries
    - PageGetItemId
    - BufferGetPage
    - ItemPointerEquals
    - PageGetItem
    - gintuple_get_attrnum
    - memset
    - GinPageHasFullRow
    - matchPartialInPendingList
    linkageType: ''
    returnType: bool
    signature: bool collectMatchesForHeapRow(IndexScanDesc scan, pendingPosition *pos)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1845,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1855,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1857,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1858,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginget.c:1859,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1868,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1872,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1873,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1875,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginget.c:1876,1
    - Dst: scanGetCandidate
      Src: /src/postgres/src/backend/access/gin/ginget.c:1882,1
    - Dst: collectMatchesForHeapRow
      Src: /src/postgres/src/backend/access/gin/ginget.c:1891,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:1898,1
    - Dst: GinScanKey::boolConsistentFn
      Src: /src/postgres/src/backend/access/gin/ginget.c:1906,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:1914,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginget.c:1915,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/gin/ginget.c:1919,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginget.c:1924,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 3
    argNames:
    - scan
    - tbm
    - ntids
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1925
      start: 1836
    functionDepth: 7
    functionLinenumber: 1836
    functionLinenumberEnd: 1925
    functionName: scanPendingInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - GinPageGetMeta
    - scanGetCandidate
    - MemoryContextReset
    - pfree
    - LockBuffer
    - PredicateLockPage
    - palloc_array
    - BufferGetPage
    - MemoryContextSwitchTo
    - GinScanKey::boolConsistentFn
    - ReadBuffer
    - tbm_add_tuples
    - UnlockReleaseBuffer
    - collectMatchesForHeapRow
    linkageType: ''
    returnType: void
    signature: void scanPendingInsert(IndexScanDesc scan, TIDBitmap *tbm, int64 *ntids)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1929
      start: 1928
    functionDepth: 0
    functionLinenumber: 1928
    functionLinenumberEnd: 1929
    functionName: GinIsVoidRes
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GinIsVoidRes(s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ginFreeScanKeys
      Src: /src/postgres/src/backend/access/gin/ginget.c:1941,1
    - Dst: ginNewScanKey
      Src: /src/postgres/src/backend/access/gin/ginget.c:1943,1
    - Dst: GinIsVoidRes
      Src: /src/postgres/src/backend/access/gin/ginget.c:1945,1
    - Dst: scanPendingInsert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1960,1
    - Dst: startScan
      Src: /src/postgres/src/backend/access/gin/ginget.c:1965,1
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginget.c:1967,1
    - Dst: scanGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1971,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1974,1
    - Dst: tbm_add_page
      Src: /src/postgres/src/backend/access/gin/ginget.c:1975,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1975,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/gin/ginget.c:1977,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1930
    functionDepth: 8
    functionLinenumber: 1930
    functionLinenumberEnd: 1982
    functionName: gingetbitmap
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ItemPointerIsLossyPage
    - ItemPointerSetMin
    - GinIsVoidRes
    - tbm_add_page
    - tbm_add_tuples
    - startScan
    - ginNewScanKey
    - ItemPointerGetBlockNumber
    - scanPendingInsert
    - ginFreeScanKeys
    - scanGetItem
    linkageType: ''
    returnType: int64
    signature: int64 gingetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - GinScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: trueConsistentFn
    functionSourceFile: /src/postgres/src/backend/access/gin/ginlogic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool trueConsistentFn(GinScanKey key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - GinScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: trueTriConsistentFn
    functionSourceFile: /src/postgres/src/backend/access/gin/ginlogic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: GinTernaryValue
    signature: GinTernaryValue trueTriConsistentFn(GinScanKey key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:73,1
    - Dst: FunctionCall8Coll
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:73,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:75,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:76,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:78,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:79,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:80,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:81,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - GinScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 83
    functionName: directBoolConsistentFn
    functionSourceFile: /src/postgres/src/backend/access/gin/ginlogic.c
    functionUses: 0
    functionsReached:
    - UInt16GetDatum
    - Int32GetDatum
    - FunctionCall8Coll
    - PointerGetDatum
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool directBoolConsistentFn(GinScanKey key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetGinTernaryValue
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:91,1
    - Dst: FunctionCall7Coll
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:91,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:93,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:94,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:96,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:97,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:98,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - GinScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 100
    functionName: directTriConsistentFn
    functionSourceFile: /src/postgres/src/backend/access/gin/ginlogic.c
    functionUses: 0
    functionsReached:
    - UInt16GetDatum
    - Int32GetDatum
    - DatumGetGinTernaryValue
    - FunctionCall7Coll
    - PointerGetDatum
    linkageType: ''
    returnType: GinTernaryValue
    signature: GinTernaryValue directTriConsistentFn(GinScanKey key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetGinTernaryValue
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:112,1
    - Dst: FunctionCall7Coll
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:112,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:114,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:115,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:117,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:118,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:119,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - key
    argTypes:
    - GinScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 131
    functionName: shimBoolConsistentFn
    functionSourceFile: /src/postgres/src/backend/access/gin/ginlogic.c
    functionUses: 0
    functionsReached:
    - UInt16GetDatum
    - Int32GetDatum
    - DatumGetGinTernaryValue
    - FunctionCall7Coll
    - PointerGetDatum
    linkageType: ''
    returnType: bool
    signature: bool shimBoolConsistentFn(GinScanKey key)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: directBoolConsistentFn
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:178,1
    - Dst: directBoolConsistentFn
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:183,1
    - Dst: directBoolConsistentFn
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:202,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 37
    argCount: 1
    argNames:
    - key
    argTypes:
    - GinScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 221
    functionName: shimTriConsistentFn
    functionSourceFile: /src/postgres/src/backend/access/gin/ginlogic.c
    functionUses: 0
    functionsReached:
    - directBoolConsistentFn
    linkageType: ''
    returnType: GinTernaryValue
    signature: GinTernaryValue shimTriConsistentFn(GinScanKey key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:240,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/ginlogic.c:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ginstate
    - key
    argTypes:
    - GinState*
    - GinScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 250
    functionName: ginInitConsistentFunction
    functionSourceFile: /src/postgres/src/backend/access/gin/ginlogic.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void ginInitConsistentFunction(GinState *ginstate, GinScanKey key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:44,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:45,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:46,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:51,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:52,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:55,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:58,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - buffer
    - searchMode
    argTypes:
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 38
    functionDepth: 4
    functionLinenumber: 38
    functionLinenumberEnd: 67
    functionName: ginTraverseLock
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbtree.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - GinPageIsLeaf
    - BufferGetPage
    linkageType: ''
    returnType: int
    signature: int ginTraverseLock(Buffer buffer, bool searchMode)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:88,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:90,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:95,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:105,1
    - Dst: ginTraverseLock
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:107,1
    - Dst: GinPageIsIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:113,1
    - Dst: ginFinishOldSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:114,1
    - Dst: GinBtree::isMoveRight
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:121,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:123,1
    - Dst: ginStepRight
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:129,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:131,1
    - Dst: GinPageIsIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:133,1
    - Dst: ginFinishOldSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:134,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:137,1
    - Dst: GinBtree::findChildPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:141,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:144,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:145,1
    - Dst: ReleaseAndReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:151,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:155,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:160,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 3
    argNames:
    - btree
    - searchMode
    - rootConflictCheck
    argTypes:
    - GinBtree
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 82
    functionDepth: 5
    functionLinenumber: 82
    functionLinenumberEnd: 164
    functionName: ginFindLeafPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbtree.c
    functionUses: 2
    functionsReached:
    - ReleaseAndReadBuffer
    - Assert
    - LockBuffer
    - GinBtree::findChildPage
    - BufferGetPage
    - GinPageIsLeaf
    - ginTraverseLock
    - ReadBuffer
    - GinPageIsIncompleteSplit
    - GinPageGetOpaque
    - palloc_object
    - ginFinishOldSplit
    - ginStepRight
    - GinBtree::isMoveRight
    - CheckForSerializableConflictIn
    linkageType: ''
    returnType: GinBtreeStack
    signature: "GinBtreeStack *\nginFindLeafPage(GinBtree btree, bool searchMode,\n\t\t\t\tbool
      rootConflictCheck)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:180,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:181,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:182,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:183,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:185,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:186,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:187,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:190,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:191,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:191,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - buffer
    - index
    - lockmode
    argTypes:
    - Buffer
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 176
    functionDepth: 4
    functionLinenumber: 176
    functionLinenumberEnd: 195
    functionName: ginStepRight
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbtree.c
    functionUses: 4
    functionsReached:
    - elog
    - LockBuffer
    - GinPageIsLeaf
    - BufferGetPage
    - ReadBuffer
    - GinPageGetOpaque
    - UnlockReleaseBuffer
    - GinPageIsData
    linkageType: ''
    returnType: Buffer
    signature: Buffer ginStepRight(Buffer buffer, Relation index, int lockmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:205,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - stack
    argTypes:
    - GinBtreeStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 210
    functionName: freeGinBtreeStack
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbtree.c
    functionUses: 3
    functionsReached:
    - pfree
    - ReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void freeGinBtreeStack(GinBtreeStack *stack)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:242,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:243,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:243,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:249,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:253,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:254,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:255,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:256,1
    - Dst: GinPageIsIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:260,1
    - Dst: ginFinishOldSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:271,1
    - Dst: GinBtree::getLeftMostChild
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:274,1
    - Dst: GinBtree::findChildPtr
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:276,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:278,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:282,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:285,1
    - Dst: ginStepRight
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:288,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:289,1
    - Dst: GinPageIsIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:294,1
    - Dst: ginFinishOldSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:300,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:317,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 2
    argNames:
    - btree
    - stack
    argTypes:
    - GinBtree
    - GinBtreeStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 217
    functionDepth: 5
    functionLinenumber: 217
    functionLinenumberEnd: 319
    functionName: ginFindParents
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbtree.c
    functionUses: 0
    functionsReached:
    - elog
    - ReleaseBuffer
    - Assert
    - BufferGetBlockNumber
    - LockBuffer
    - GinBtree::getLeftMostChild
    - BufferGetPage
    - GinPageIsLeaf
    - ReadBuffer
    - GinPageIsIncompleteSplit
    - GinPageGetOpaque
    - palloc_object
    - ginFinishOldSplit
    - GinBtree::findChildPtr
    - ginStepRight
    linkageType: ''
    returnType: void
    signature: void ginFindParents(GinBtree btree, GinBtreeStack *stack)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:341,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:358,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:361,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:363,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:368,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:368,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:373,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:374,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:375,1
    - Dst: GinBtree::beginPlaceToPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:384,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:397,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:399,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:400,1
    - Dst: GinBtree::execPlaceToPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:406,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:410,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:412,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:413,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:414,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:415,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:418,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:426,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:432,1
    - Dst: BlockIdSet
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:434,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:434,1
    - Dst: BlockIdSet
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:435,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:435,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:436,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:440,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:441,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:442,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:443,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:446,1
    - Dst: GinNewBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:465,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:476,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:481,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:483,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:484,1
    - Dst: GinNewBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:495,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:509,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:510,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:510,1
    - Dst: PageGetTempPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:518,1
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:519,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:519,1
    - Dst: GinBtree::fillRoot
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:521,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:522,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:523,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:525,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:525,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:528,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:529,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:530,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:532,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:533,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:534,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:542,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:543,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:544,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:544,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:546,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:546,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:549,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:550,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:551,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:564,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:566,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:567,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:575,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:576,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:577,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:577,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:578,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:578,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:583,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:584,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:584,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:588,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:590,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:591,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:595,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:599,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:608,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:609,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:610,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:614,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:615,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:617,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:618,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:620,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:622,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:624,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:625,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:625,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:627,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:627,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:628,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:629,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:631,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:637,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:639,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:650,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:655,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:656,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 136
    argCount: 6
    argNames:
    - btree
    - stack
    - insertdata
    - updateblkno
    - childbuf
    - buildStats
    argTypes:
    - GinBtree
    - GinBtreeStack*
    - void*
    - BlockNumber
    - Buffer
    - GinStatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 336
    functionDepth: 5
    functionLinenumber: 336
    functionLinenumberEnd: 659
    functionName: ginPlaceToPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbtree.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - GinBtree::execPlaceToPage
    - BufferGetPage
    - XLogRegisterData
    - GinBtree::beginPlaceToPage
    - GinPageGetOpaque
    - GinInitPage
    - GinPageIsData
    - elog
    - memcpy
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - GinPageIsLeaf
    - PageGetTempPage
    - GinNewBuffer
    - UnlockReleaseBuffer
    - PageSetLSN
    - BlockIdSet
    - BufferIsValid
    - AllocSetContextCreate
    - MarkBufferDirty
    - XLogRegisterBuffer
    - PredicateLockPageSplit
    - START_CRIT_SECTION
    - MemoryContextSwitchTo
    - RelationNeedsWAL
    - MemoryContextDelete
    - GinBtree::fillRoot
    - END_CRIT_SECTION
    linkageType: ''
    returnType: bool
    signature: "bool ginPlaceToPage(GinBtree btree, GinBtreeStack *stack,\n\t\t\t
      \  void *insertdata, BlockNumber updateblkno,\n\t\t\t   Buffer childbuf, GinStatsData
      *buildStats)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:687,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:687,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:688,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:690,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:694,1
    - Dst: GinPageIsIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:705,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:705,1
    - Dst: ginFinishOldSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:706,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:709,1
    - Dst: GinBtree::findChildPtr
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:710,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:712,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:718,1
    - Dst: ginFindParents
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:719,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:721,1
    - Dst: ginStepRight
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:725,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:726,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:727,1
    - Dst: GinPageIsIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:729,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:729,1
    - Dst: ginFinishOldSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:730,1
    - Dst: GinBtree::prepareDownlink
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:734,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:735,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:735,1
    - Dst: ginPlaceToPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:736,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:739,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:748,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:751,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:752,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:760,1
    - Dst: freeGinBtreeStack
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:763,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 4
    argNames:
    - btree
    - stack
    - freestack
    - buildStats
    argTypes:
    - GinBtree
    - GinBtreeStack*
    - bool
    - GinStatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 671
    functionDepth: 6
    functionLinenumber: 671
    functionLinenumberEnd: 764
    functionName: ginFinishSplit
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbtree.c
    functionUses: 0
    functionsReached:
    - INJECTION_POINT
    - ReleaseBuffer
    - freeGinBtreeStack
    - Assert
    - GinBtree::prepareDownlink
    - BufferGetBlockNumber
    - LockBuffer
    - pfree
    - BufferGetPage
    - GinPageIsLeaf
    - ginFindParents
    - GinPageRightMost
    - ginPlaceToPage
    - GinPageIsIncompleteSplit
    - GinPageGetOpaque
    - ginFinishOldSplit
    - GinBtree::findChildPtr
    - ginStepRight
    linkageType: ''
    returnType: void
    signature: "void ginFinishSplit(GinBtree btree, GinBtreeStack *stack, bool freestack,\n\t\t\t
      \  GinStatsData *buildStats)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:781,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:782,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:783,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:787,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:788,1
    - Dst: GinPageIsIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:790,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:790,1
    - Dst: ginFinishSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:800,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - btree
    - stack
    - buildStats
    - access
    argTypes:
    - GinBtree
    - GinBtreeStack*
    - GinStatsData*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 778
    functionDepth: 7
    functionLinenumber: 778
    functionLinenumberEnd: 801
    functionName: ginFinishOldSplit
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbtree.c
    functionUses: 3
    functionsReached:
    - elog
    - INJECTION_POINT
    - ginFinishSplit
    - LockBuffer
    - BufferGetPage
    - GinPageIsIncompleteSplit
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: void ginFinishOldSplit(GinBtree btree, GinBtreeStack *stack, GinStatsData
      *buildStats, int access)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GinPageIsIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:822,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:822,1
    - Dst: ginFinishOldSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:823,1
    - Dst: ginPlaceToPage
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:825,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:830,1
    - Dst: freeGinBtreeStack
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:831,1
    - Dst: ginFinishSplit
      Src: /src/postgres/src/backend/access/gin/ginbtree.c:834,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - btree
    - stack
    - insertdata
    - buildStats
    argTypes:
    - GinBtree
    - GinBtreeStack*
    - void*
    - GinStatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 815
    functionDepth: 8
    functionLinenumber: 815
    functionLinenumberEnd: 835
    functionName: ginInsertValue
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbtree.c
    functionUses: 0
    functionsReached:
    - ginFinishSplit
    - LockBuffer
    - BufferGetPage
    - ginPlaceToPage
    - GinPageIsIncompleteSplit
    - ginFinishOldSplit
    - freeGinBtreeStack
    linkageType: ''
    returnType: void
    signature: "void ginInsertValue(GinBtree btree, GinBtreeStack *stack, void *insertdata,\n\t\t\t
      \  GinStatsData *buildStats)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GinVacuumState*::callback
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:60,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:69,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:70,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - gvs
    - items
    - nitem
    - nremaining
    argTypes:
    - GinVacuumState*
    - ItemPointerData*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 84
    functionName: ginVacuumItemPointers
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - GinVacuumState*::callback
    - palloc_array
    - memcpy
    linkageType: ''
    returnType: ItemPointer
    signature: "ItemPointer ginVacuumItemPointers(GinVacuumState *gvs, ItemPointerData
      *items,\n\t\t\t\t\t  int nitem, int *nremaining)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:92,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:96,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:96,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:97,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:97,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:99,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:106,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:107,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:109,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - index
    - buffer
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 111
    functionName: xlogVacuumPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - XLogBeginInsert
    - Assert
    - GinPageIsLeaf
    - BufferGetPage
    - RelationNeedsWAL
    - XLogRegisterBuffer
    - GinPageIsData
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void xlogVacuumPage(Relation index, Buffer buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:158,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:167,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:168,1
    - Dst: PredicateLockPageCombine
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:174,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:176,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:179,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:180,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:183,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:189,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:189,1
    - Dst: GinPageDeletePostingItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:192,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:194,1
    - Dst: GinPageSetDeleted
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:205,1
    - Dst: GinPageSetDeleteXid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:206,1
    - Dst: ReadNextTransactionId
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:206,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:208,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:209,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:210,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:212,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:225,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:226,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:227,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:228,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:231,1
    - Dst: GinPageGetDeleteXid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:232,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:234,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:236,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:237,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:238,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:239,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:239,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 6
    argNames:
    - gvs
    - dBuffer
    - lBuffer
    - pBuffer
    - myoff
    - isParentRoot
    argTypes:
    - GinVacuumState*
    - Buffer
    - Buffer
    - Buffer
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 151
    functionDepth: 4
    functionLinenumber: 151
    functionLinenumberEnd: 246
    functionName: ginDeletePostingPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - GinPageSetDeleteXid
    - PostingItemGetBlockNumber
    - BufferGetPage
    - GinPageGetDeleteXid
    - XLogRegisterData
    - GinPageGetOpaque
    - GinPageDeletePostingItem
    - GinPageSetDeleted
    - Assert
    - XLogBeginInsert
    - BufferGetBlockNumber
    - PageSetLSN
    - PredicateLockPageCombine
    - ReadNextTransactionId
    - MarkBufferDirty
    - XLogRegisterBuffer
    - GinDataPageGetPostingItem
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void ginDeletePostingPage(GinVacuumState *gvs, Buffer dBuffer, Buffer
      lBuffer,\n\t\t\t\t\t Buffer pBuffer, OffsetNumber myoff, bool isParentRoot)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:276,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:278,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:278,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:280,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:284,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:286,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:289,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:291,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:293,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:298,1
    - Dst: ginScanPostingTreeToDelete
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:312,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:322,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:322,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:324,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:329,1
    - Dst: GinDataLeafPageIsEmpty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:330,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:332,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:340,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:342,1
    - Dst: ginDeletePostingPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:343,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:358,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:359,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:367,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - gvs
    - myStackItem
    argTypes:
    - GinVacuumState*
    - DataPageDeleteStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 268
    functionDepth: 5
    functionLinenumber: 268
    functionLinenumberEnd: 371
    functionName: ginScanPostingTreeToDelete
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - Assert
    - ReadBufferExtended
    - PostingItemGetBlockNumber
    - LockBuffer
    - GinDataLeafPageIsEmpty
    - ginDeletePostingPage
    - GinPageIsLeaf
    - BufferGetPage
    - GinPageGetOpaque
    - ginScanPostingTreeToDelete
    - BufferIsValid
    - GinPageRightMost
    - UnlockReleaseBuffer
    - GinPageIsData
    - GinDataPageGetPostingItem
    linkageType: ''
    returnType: bool
    signature: bool ginScanPostingTreeToDelete(GinVacuumState *gvs, DataPageDeleteStack
      *myStackItem)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:391,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:393,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:394,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:396,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:396,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:398,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:400,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:401,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:405,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:405,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:407,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:409,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:411,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:417,1
    - Dst: ginVacuumPostingTreeLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:418,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:419,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:420,1
    - Dst: GinDataLeafPageIsEmpty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:422,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:425,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:427,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:432,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:434,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:435,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 2
    argNames:
    - gvs
    - blkno
    argTypes:
    - GinVacuumState*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 378
    functionDepth: 4
    functionLinenumber: 378
    functionLinenumberEnd: 439
    functionName: ginVacuumPostingTreeLeaves
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - ginVacuumPostingTreeLeaf
    - Assert
    - ReadBufferExtended
    - PostingItemGetBlockNumber
    - LockBuffer
    - GinDataLeafPageIsEmpty
    - BufferGetPage
    - GinPageIsLeaf
    - MemoryContextSwitchTo
    - PageGetMaxOffsetNumber
    - GinPageGetOpaque
    - UnlockReleaseBuffer
    - GinPageIsData
    - GinDataPageGetPostingItem
    linkageType: ''
    returnType: bool
    signature: bool ginVacuumPostingTreeLeaves(GinVacuumState *gvs, BlockNumber blkno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ginVacuumPostingTreeLeaves
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:444,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:456,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:463,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:465,1
    - Dst: ginScanPostingTreeToDelete
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:471,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:472,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:479,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:483,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - gvs
    - rootBlkno
    argTypes:
    - GinVacuumState*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 441
    functionDepth: 6
    functionLinenumber: 441
    functionLinenumberEnd: 485
    functionName: ginVacuumPostingTree
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReadBufferExtended
    - pfree
    - memset
    - ginScanPostingTreeToDelete
    - LockBufferForCleanup
    - UnlockReleaseBuffer
    - ginVacuumPostingTreeLeaves
    linkageType: ''
    returnType: void
    signature: void ginVacuumPostingTree(GinVacuumState *gvs, BlockNumber rootBlkno)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:495,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:498,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:506,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:506,1
    - Dst: GinIsPostingTree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:508,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:514,1
    - Dst: GinGetNPosting
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:517,1
    - Dst: GinItupIsCompressed
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:525,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:527,1
    - Dst: GinGetPosting
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:527,1
    - Dst: GinGetPosting
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:532,1
    - Dst: GinGetNPosting
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:533,1
    - Dst: ginVacuumItemPointers
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:538,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:541,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:554,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:555,1
    - Dst: PageGetTempPageCopy
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:573,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:576,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:576,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:579,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:580,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:581,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:585,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:586,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:588,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:588,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:589,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:590,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:592,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:593,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 4
    argNames:
    - gvs
    - buffer
    - roots
    - nroot
    argTypes:
    - GinVacuumState*
    - Buffer
    - BlockNumber*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 492
    functionDepth: 5
    functionLinenumber: 492
    functionLinenumberEnd: 599
    functionName: ginVacuumEntryPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - PageGetTempPageCopy
    - GinGetPosting
    - BufferGetPage
    - SizeOfGinPostingList
    - PageGetItem
    - ginCompressPostingList
    - ginVacuumItemPointers
    - RelationGetRelationName
    - ginPostingListDecode
    - elog
    - pfree
    - PageGetMaxOffsetNumber
    - gintuple_get_attrnum
    - PageIndexTupleDelete
    - GinGetDownlink
    - IndexTupleSize
    - PageGetItemId
    - PageAddItem
    - GinGetNPosting
    - gintuple_get_key
    - GinFormTuple
    - GinIsPostingTree
    - GinItupIsCompressed
    linkageType: ''
    returnType: Page
    signature: Page ginVacuumEntryPage(GinVacuumState *gvs, Buffer buffer, BlockNumber
      *roots, uint32 *nroot)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:612,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:619,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:625,1
    - Dst: ginInsertCleanup
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:630,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:630,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:638,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:644,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:649,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:649,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:651,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:653,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:654,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:656,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:658,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:664,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:664,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:666,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:666,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:667,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:668,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:670,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:671,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:679,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:683,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:683,1
    - Dst: ginVacuumEntryPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:685,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:687,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:691,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:692,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:693,1
    - Dst: xlogVacuumPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:694,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:695,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:696,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:700,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:703,1
    - Dst: ginVacuumPostingTree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:707,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:708,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:714,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:716,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:719,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 59
    argCount: 4
    argNames:
    - info
    - stats
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 601
    functionDepth: 7
    functionLinenumber: 601
    functionLinenumberEnd: 722
    functionName: ginbulkdelete
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - ginInsertCleanup
    - BufferGetPage
    - PageGetItem
    - vacuum_delay_point
    - GinPageGetOpaque
    - GinPageIsData
    - xlogVacuumPage
    - AmAutoVacuumWorkerProcess
    - ginVacuumEntryPage
    - Assert
    - GinPageIsLeaf
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - GinGetDownlink
    - ginVacuumPostingTree
    - palloc0_object
    - ReadBufferExtended
    - PageGetItemId
    - initGinState
    - AllocSetContextCreate
    - MarkBufferDirty
    - START_CRIT_SECTION
    - PageRestoreTempPage
    - MemoryContextDelete
    - END_CRIT_SECTION
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\nginbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult
      *stats,\n\t\t\t  IndexBulkDeleteCallback callback, void *callback_state)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:743,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:745,1
    - Dst: ginInsertCleanup
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:746,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:757,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:758,1
    - Dst: ginInsertCleanup
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:759,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:759,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:763,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:770,1
    - Dst: RELATION_IS_LOCAL
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:776,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:779,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:780,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:782,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:794,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:809,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:811,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:813,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:814,1
    - Dst: GinPageIsRecyclable
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:816,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:818,1
    - Dst: RecordFreeIndexPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:819,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:822,1
    - Dst: GinPageIsList
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:826,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:830,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:831,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:837,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:837,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:838,1
    - Dst: ginUpdateStats
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:842,1
    - Dst: IndexFreeSpaceMapVacuum
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:845,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:850,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:851,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:853,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 58
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 724
    functionDepth: 5
    functionLinenumber: 724
    functionLinenumberEnd: 856
    functionName: ginvacuumcleanup
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - read_stream_next_buffer
    - LockBuffer
    - ginInsertCleanup
    - BufferGetPage
    - read_stream_begin_relation
    - vacuum_delay_point
    - IndexFreeSpaceMapVacuum
    - GinPageIsData
    - AmAutoVacuumWorkerProcess
    - GinPageIsList
    - Assert
    - GinPageIsLeaf
    - PageGetMaxOffsetNumber
    - LockRelationForExtension
    - RelationGetNumberOfBlocks
    - UnlockReleaseBuffer
    - palloc0_object
    - read_stream_end
    - initGinState
    - memset
    - GinPageIsRecyclable
    - RELATION_IS_LOCAL
    - RecordFreeIndexPage
    - ginUpdateStats
    - Max
    - UnlockRelationForExtension
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: 'IndexBulkDeleteResult *

      ginvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:866,1
    - Dst: GinPageIsDeleted
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:869,1
    - Dst: GinPageGetDeleteXid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:872,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:874,1
    - Dst: GlobalVisCheckRemovableXid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:881,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 882
    functionName: GinPageIsRecyclable
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 2
    functionsReached:
    - GlobalVisCheckRemovableXid
    - PageIsNew
    - GinPageGetDeleteXid
    - GinPageIsDeleted
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: bool GinPageIsRecyclable(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:36,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:37,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:38,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:46,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:46,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:49,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:50,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 59
    functionName: ginarrayextract
    functionSourceFile: /src/postgres/src/backend/access/gin/ginarrayproc.c
    functionUses: 0
    functionsReached:
    - get_typlenbyvalalign
    - ARR_ELEMTYPE
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - deconstruct_array
    linkageType: ''
    returnType: Datum
    signature: Datum ginarrayextract(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:70,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:71,1
    - Dst: ginarrayextract
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 73
    functionName: ginarrayextract_2args
    functionSourceFile: /src/postgres/src/backend/access/gin/ginarrayproc.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - ginarrayextract
    - elog
    linkageType: ''
    returnType: Datum
    signature: Datum ginarrayextract_2args(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:82,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:83,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:84,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:86,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:87,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:89,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:90,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:98,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:98,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:101,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:102,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:131,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:136,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 137
    functionName: ginqueryarrayextract
    functionSourceFile: /src/postgres/src/backend/access/gin/ginarrayproc.c
    functionUses: 0
    functionsReached:
    - elog
    - get_typlenbyvalalign
    - PG_GETARG_UINT16
    - ARR_ELEMTYPE
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - deconstruct_array
    linkageType: ''
    returnType: Datum
    signature: Datum ginqueryarrayextract(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:145,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:146,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:148,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:150,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:152,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:154,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:156,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:158,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:218,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:223,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 224
    functionName: ginarrayconsistent
    functionSourceFile: /src/postgres/src/backend/access/gin/ginarrayproc.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_UINT16
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum ginarrayconsistent(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:232,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:233,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:235,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:237,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:239,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:240,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:242,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:305,1
    - Dst: PG_RETURN_GIN_TERNARY_VALUE
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:310,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 311
    functionName: ginarraytriconsistent
    functionSourceFile: /src/postgres/src/backend/access/gin/ginarrayproc.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_GIN_TERNARY_VALUE
    - PG_GETARG_UINT16
    - PG_GETARG_ARRAYTYPE_P
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum ginarraytriconsistent(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - shared
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 112
    functionName: ParallelTableScanFromGinBuildShared
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ParallelTableScanFromGinBuildShared(shared)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:233,1
    - Dst: GinIsPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:233,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/gininsert.c:235,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/gininsert.c:236,1
    - Dst: ginReadTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:239,1
    - Dst: ginMergeItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:241,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:247,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:250,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:252,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:257,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:258,1
    - Dst: createPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:270,1
    - Dst: ginInsertItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:277,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:282,1
    - Dst: GinSetPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:283,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 6
    argNames:
    - ginstate
    - old
    - items
    - nitem
    - buildStats
    - buffer
    argTypes:
    - GinState*
    - IndexTuple
    - ItemPointerData*
    - uint32
    - GinStatsData*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 216
    functionDepth: 5
    functionLinenumber: 216
    functionLinenumberEnd: 288
    functionName: addItemPointersToLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - gintuple_get_key
    - GinFormTuple
    - Assert
    - GinIsPostingTree
    - ginMergeItemPointers
    - pfree
    - ginInsertItemPointers
    - SizeOfGinPostingList
    - GinSetPostingTree
    - gintuple_get_attrnum
    - ginCompressPostingList
    - ginReadTuple
    - createPostingTree
    linkageType: ''
    returnType: IndexTuple
    signature: "IndexTuple addItemPointersToLeafTuple(GinState *ginstate,\n\t\t\t\t\t\t
      \  IndexTuple old,\n\t\t\t\t\t\t   ItemPointerData *items, uint32 nitem,\n\t\t\t\t\t\t
      \  GinStatsData *buildStats, Buffer buffer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:309,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:312,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:314,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:317,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:328,1
    - Dst: createPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:333,1
    - Dst: GinSetPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 8
    argNames:
    - ginstate
    - attnum
    - key
    - category
    - items
    - nitem
    - buildStats
    - buffer
    argTypes:
    - GinState*
    - OffsetNumber
    - Datum
    - GinNullCategory
    - ItemPointerData*
    - uint32
    - GinStatsData*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 341
    functionName: buildFreshLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - GinFormTuple
    - pfree
    - SizeOfGinPostingList
    - GinSetPostingTree
    - ginCompressPostingList
    - createPostingTree
    linkageType: ''
    returnType: IndexTuple
    signature: "IndexTuple buildFreshLeafTuple(GinState *ginstate,\n\t\t\t\t\tOffsetNumber
      attnum, Datum key, GinNullCategory category,\n\t\t\t\t\tItemPointerData *items,
      uint32 nitem,\n\t\t\t\t\tGinStatsData *buildStats, Buffer buffer)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ginPrepareEntryScan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:364,1
    - Dst: ginFindLeafPage
      Src: /src/postgres/src/backend/access/gin/gininsert.c:367,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gininsert.c:368,1
    - Dst: GinBtreeData::findItem
      Src: /src/postgres/src/backend/access/gin/gininsert.c:370,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/gininsert.c:373,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/gininsert.c:373,1
    - Dst: GinIsPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:375,1
    - Dst: GinGetPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:378,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:381,1
    - Dst: freeGinBtreeStack
      Src: /src/postgres/src/backend/access/gin/gininsert.c:382,1
    - Dst: ginInsertItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:385,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/gin/gininsert.c:391,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gininsert.c:392,1
    - Dst: addItemPointersToLeafTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:394,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/gin/gininsert.c:401,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gininsert.c:402,1
    - Dst: buildFreshLeafTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:404,1
    - Dst: ginInsertValue
      Src: /src/postgres/src/backend/access/gin/gininsert.c:417,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:418,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 7
    argNames:
    - ginstate
    - attnum
    - key
    - category
    - items
    - nitem
    - buildStats
    argTypes:
    - GinState*
    - OffsetNumber
    - Datum
    - GinNullCategory
    - ItemPointerData*
    - uint32
    - GinStatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 350
    functionDepth: 9
    functionLinenumber: 350
    functionLinenumberEnd: 419
    functionName: ginEntryInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginInsertValue
    - GinIsPostingTree
    - ginInsertItemPointers
    - BufferGetBlockNumber
    - LockBuffer
    - GinGetPostingTree
    - buildFreshLeafTuple
    - pfree
    - BufferGetPage
    - ginFindLeafPage
    - PageGetItemId
    - PageGetItem
    - addItemPointersToLeafTuple
    - ginPrepareEntryScan
    - GinBtreeData::findItem
    - CheckForSerializableConflictIn
    - freeGinBtreeStack
    linkageType: ''
    returnType: void
    signature: "void ginEntryInsert(GinState *ginstate,\n\t\t\t   OffsetNumber attnum,
      Datum key, GinNullCategory category,\n\t\t\t   ItemPointerData *items, uint32
      nitem,\n\t\t\t   GinStatsData *buildStats)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:437,1
    - Dst: ginExtractEntries
      Src: /src/postgres/src/backend/access/gin/gininsert.c:438,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:441,1
    - Dst: ginInsertBAEntries
      Src: /src/postgres/src/backend/access/gin/gininsert.c:443,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - buildstate
    - attnum
    - value
    - isNull
    - heapptr
    argTypes:
    - GinBuildState*
    - OffsetNumber
    - Datum
    - bool
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 427
    functionDepth: 3
    functionLinenumber: 427
    functionLinenumberEnd: 449
    functionName: ginHeapTupleBulkInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - ginExtractEntries
    - ginInsertBAEntries
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void ginHeapTupleBulkInsert(GinBuildState *buildstate, OffsetNumber
      attnum,\n\t\t\t\t\t   Datum value, bool isNull,\n\t\t\t\t\t   ItemPointer heapptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:459,1
    - Dst: ginHeapTupleBulkInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:462,1
    - Dst: ginBeginBAScan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:474,1
    - Dst: ginGetBAEntry
      Src: /src/postgres/src/backend/access/gin/gininsert.c:475,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:479,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:480,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:484,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/gininsert.c:485,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:488,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - index
    - tid
    - values
    - isnull
    - tupleIsAlive
    - state
    argTypes:
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 451
    functionDepth: 10
    functionLinenumber: 451
    functionLinenumberEnd: 489
    functionName: ginBuildCallback
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginGetBAEntry
    - ginBeginBAScan
    - MemoryContextReset
    - CHECK_FOR_INTERRUPTS
    - MemoryContextSwitchTo
    - ginInitBA
    - ginEntryInsert
    - ginHeapTupleBulkInsert
    linkageType: ''
    returnType: void
    signature: "void ginBuildCallback(Relation index, ItemPointer tid, Datum *values,\n\t\t\t\t
      bool *isnull, bool tupleIsAlive, void *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/gin/gininsert.c:512,1
    - Dst: ginBeginBAScan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:519,1
    - Dst: ginGetBAEntry
      Src: /src/postgres/src/backend/access/gin/gininsert.c:520,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/gin/gininsert.c:524,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/gin/gininsert.c:535,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:538,1
    - Dst: _gin_build_tuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:540,1
    - Dst: tuplesort_putgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:547,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:549,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:553,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/gininsert.c:554,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - buildstate
    - index
    argTypes:
    - GinBuildState*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 504
    functionDepth: 2
    functionLinenumber: 504
    functionLinenumberEnd: 555
    functionName: ginFlushBuildState
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginGetBAEntry
    - _gin_build_tuple
    - ginBeginBAScan
    - MemoryContextReset
    - pfree
    - RelationGetDescr
    - Min
    - CHECK_FOR_INTERRUPTS
    - ginInitBA
    - tuplesort_putgintuple
    - TupleDescCompactAttr
    linkageType: ''
    returnType: void
    signature: void ginFlushBuildState(GinBuildState *buildstate, Relation index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:577,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:596,1
    - Dst: ginFlushBuildState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:597,1
    - Dst: ginHeapTupleBulkInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:603,1
    - Dst: ginFlushBuildState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:612,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 6
    argNames:
    - index
    - tid
    - values
    - isnull
    - tupleIsAlive
    - state
    argTypes:
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 569
    functionDepth: 4
    functionLinenumber: 569
    functionLinenumberEnd: 615
    functionName: ginBuildCallbackParallel
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ItemPointerCompare
    - ginFlushBuildState
    - ginHeapTupleBulkInsert
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void ginBuildCallbackParallel(Relation index, ItemPointer tid, Datum
      *values,\n\t\t\t\t\t\t bool *isnull, bool tupleIsAlive, void *state)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gin/gininsert.c:633,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gininsert.c:634,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/gininsert.c:635,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:637,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:639,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:645,1
    - Dst: GinNewBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:648,1
    - Dst: GinNewBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:651,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gininsert.c:653,1
    - Dst: GinInitMetabuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:654,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:655,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:656,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:657,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:660,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:661,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gininsert.c:662,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:671,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:679,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/gininsert.c:684,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:687,1
    - Dst: _gin_begin_parallel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:700,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gin/gininsert.c:716,1
    - Dst: tuplesort_begin_index_gin
      Src: /src/postgres/src/backend/access/gin/gininsert.c:745,1
    - Dst: _gin_parallel_merge
      Src: /src/postgres/src/backend/access/gin/gininsert.c:750,1
    - Dst: _gin_end_parallel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:752,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:760,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:764,1
    - Dst: ginBeginBAScan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:765,1
    - Dst: ginGetBAEntry
      Src: /src/postgres/src/backend/access/gin/gininsert.c:766,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:770,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:771,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:774,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/gininsert.c:777,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/gininsert.c:778,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gin/gininsert.c:783,1
    - Dst: ginUpdateStats
      Src: /src/postgres/src/backend/access/gin/gininsert.c:784,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/gininsert.c:790,1
    - Dst: log_newpage_range
      Src: /src/postgres/src/backend/access/gin/gininsert.c:792,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gin/gininsert.c:793,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/gininsert.c:800,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 57
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 617
    functionDepth: 10
    functionLinenumber: 617
    functionLinenumberEnd: 806
    functionName: ginbuild
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - pgstat_progress_update_param
    - RelationGetRelationName
    - elog
    - GinInitMetabuffer
    - GinNewBuffer
    - RelationGetNumberOfBlocks
    - palloc_object
    - UnlockReleaseBuffer
    - ginEntryInsert
    - log_newpage_range
    - palloc0_object
    - ginBeginBAScan
    - CHECK_FOR_INTERRUPTS
    - ginInitBA
    - _gin_parallel_merge
    - initGinState
    - _gin_begin_parallel
    - _gin_end_parallel
    - memset
    - AllocSetContextCreate
    - MarkBufferDirty
    - GinInitBuffer
    - tuplesort_begin_index_gin
    - ginGetBAEntry
    - table_index_build_scan
    - ginUpdateStats
    - START_CRIT_SECTION
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: IndexBuildResult
    signature: 'IndexBuildResult *

      ginbuild(Relation heap, Relation index, IndexInfo *indexInfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:818,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/gin/gininsert.c:818,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:820,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/gin/gininsert.c:820,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gininsert.c:824,1
    - Dst: GinInitMetabuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:825,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:826,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:827,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:828,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:829,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:830,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gininsert.c:831,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:834,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 811
    functionDepth: 5
    functionLinenumber: 811
    functionLinenumberEnd: 836
    functionName: ginbuildempty
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - GinInitMetabuffer
    - END_CRIT_SECTION
    - ExtendBufferedRel
    - START_CRIT_SECTION
    - BMR_REL
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - log_newpage_buffer
    - GinInitBuffer
    linkageType: ''
    returnType: void
    signature: void ginbuildempty(Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginExtractEntries
      Src: /src/postgres/src/backend/access/gin/gininsert.c:852,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:858,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:859,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - ginstate
    - attnum
    - value
    - isNull
    - item
    argTypes:
    - GinState*
    - OffsetNumber
    - Datum
    - bool
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 842
    functionDepth: 10
    functionLinenumber: 842
    functionLinenumberEnd: 862
    functionName: ginHeapTupleInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginEntryInsert
    - ginExtractEntries
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: "void ginHeapTupleInsert(GinState *ginstate, OffsetNumber attnum,\n\t\t\t\t
      \  Datum value, bool isNull,\n\t\t\t\t   ItemPointer item)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:879,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/gininsert.c:880,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:881,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:883,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:886,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:890,1
    - Dst: GinGetUseFastUpdate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:892,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:896,1
    - Dst: ginHeapTupleFastCollect
      Src: /src/postgres/src/backend/access/gin/gininsert.c:899,1
    - Dst: ginHeapTupleFastInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:904,1
    - Dst: ginHeapTupleInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:909,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:914,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/gininsert.c:915,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 8
    argNames:
    - index
    - values
    - isnull
    - ht_ctid
    - heapRel
    - checkUnique
    - indexUnchanged
    - indexInfo
    argTypes:
    - Relation
    - Datum*
    - bool*
    - ItemPointer
    - Relation
    - IndexUniqueCheck
    - bool
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 864
    functionDepth: 11
    functionLinenumber: 864
    functionLinenumberEnd: 918
    functionName: gininsert
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - GinGetUseFastUpdate
    - AllocSetContextCreate
    - MemoryContextSwitchTo
    - initGinState
    - ginHeapTupleFastCollect
    - ginHeapTupleInsert
    - memset
    - MemoryContextDelete
    - palloc_object
    - ginHeapTupleFastInsert
    linkageType: ''
    returnType: bool
    signature: "bool gininsert(Relation index, Datum *values, bool *isnull,\n\t\t
      \ ItemPointer ht_ctid, Relation heapRel,\n\t\t  IndexUniqueCheck checkUnique,\n\t\t
      \ bool indexUnchanged,\n\t\t  IndexInfo *indexInfo)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gin/gininsert.c:947,1
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/gin/gininsert.c:960,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:961,1
    - Dst: CreateParallelContext
      Src: /src/postgres/src/backend/access/gin/gininsert.c:962,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:977,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:977,1
    - Dst: _gin_parallel_estimate_shared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:982,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:983,1
    - Dst: tuplesort_estimate_shared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:984,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:985,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/gin/gininsert.c:987,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:997,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/gin/gininsert.c:998,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/gin/gininsert.c:999,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1000,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1001,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1002,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1007,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1008,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1009,1
    - Dst: InitializeParallelDSM
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1015,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1020,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1021,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1022,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1023,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1028,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1030,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1031,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1035,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1036,1
    - Dst: table_parallelscan_initialize
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1043,1
    - Dst: ParallelTableScanFromGinBuildShared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1044,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1051,1
    - Dst: tuplesort_initialize_shared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1052,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1055,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1056,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1063,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1064,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1065,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1072,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1073,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1074,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1075,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1076,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1077,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1080,1
    - Dst: _gin_end_parallel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1094,1
    - Dst: _gin_leader_participate_as_worker
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1103,1
    - Dst: WaitForParallelWorkersToAttach
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1109,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 74
    argCount: 5
    argNames:
    - buildstate
    - heap
    - index
    - isconcurrent
    - request
    argTypes:
    - GinBuildState*
    - Relation
    - Relation
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 936
    functionDepth: 2
    functionLinenumber: 936
    functionLinenumberEnd: 1110
    functionName: _gin_begin_parallel
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - shm_toc_estimate_chunk
    - RegisterSnapshot
    - IsMVCCSnapshot
    - _gin_parallel_estimate_shared
    - shm_toc_allocate
    - tuplesort_initialize_shared
    - memcpy
    - LaunchParallelWorkers
    - Assert
    - CreateParallelContext
    - _gin_leader_participate_as_worker
    - UnregisterSnapshot
    - palloc0_object
    - DestroyParallelContext
    - shm_toc_estimate_keys
    - mul_size
    - _gin_end_parallel
    - GetTransactionSnapshot
    - strlen
    - EnterParallelMode
    - ConditionVariableInit
    - table_parallelscan_initialize
    - SpinLockInit
    - InitializeParallelDSM
    - tuplesort_estimate_shared
    - shm_toc_insert
    - ParallelTableScanFromGinBuildShared
    - WaitForParallelWorkersToAttach
    - ExitParallelMode
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void _gin_begin_parallel(GinBuildState *buildstate, Relation heap,
      Relation index,\n\t\t\t\t\tbool isconcurrent, int request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WaitForParallelWorkersToFinish
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1121,1
    - Dst: InstrAccumParallelQuery
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1128,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1131,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1132,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1133,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ginleader
    - state
    argTypes:
    - GinLeader*
    - GinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1115
    functionDepth: 1
    functionLinenumber: 1115
    functionLinenumberEnd: 1135
    functionName: _gin_end_parallel
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 2
    functionsReached:
    - DestroyParallelContext
    - InstrAccumParallelQuery
    - WaitForParallelWorkersToFinish
    - ExitParallelMode
    - IsMVCCSnapshot
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void _gin_end_parallel(GinLeader *ginleader, GinBuildState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1155,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1162,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1165,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1167,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - GinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1174
    functionName: _gin_parallel_heapscan
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ConditionVariableSleep
    - SpinLockAcquire
    - ConditionVariableCancelSleep
    - SpinLockRelease
    linkageType: ''
    returnType: double
    signature: double _gin_parallel_heapscan(GinBuildState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1223,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1229,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1213
    functionDepth: 1
    functionLinenumber: 1213
    functionLinenumberEnd: 1232
    functionName: AssertCheckItemPointers
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerIsValid
    - ItemPointerCompare
    linkageType: ''
    returnType: void
    signature: void AssertCheckItemPointers(GinBuffer *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1245,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1240
    functionDepth: 2
    functionLinenumber: 1240
    functionLinenumberEnd: 1257
    functionName: AssertCheckGinBuffer
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - Assert
    - AssertCheckItemPointers
    linkageType: ''
    returnType: void
    signature: void AssertCheckGinBuffer(GinBuffer *buffer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1272,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1275,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1284,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1286,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1296,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1308,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1314,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1319,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1322,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1323,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1324,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1325,1
    - Dst: PrepareSortSupportComparisonShim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1330,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1269
    functionDepth: 2
    functionLinenumber: 1269
    functionLinenumberEnd: 1334
    functionName: GinBufferInit
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - format_type_be
    - palloc0_array
    - errcode
    - Assert
    - RelationGetDescr
    - PrepareSortSupportComparisonShim
    - ereport
    - index_getprocid
    - errmsg
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - TupleDescAttr
    - lookup_type_cache
    linkageType: ''
    returnType: GinBuffer
    signature: 'GinBuffer *

      GinBufferInit(Relation index)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1337
    functionDepth: 0
    functionLinenumber: 1337
    functionLinenumberEnd: 1341
    functionName: GinBufferIsEmpty
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GinBufferIsEmpty(GinBuffer *buffer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AssertCheckGinBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1359,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1366,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1382,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1384,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - buffer
    - tup
    argTypes:
    - GinBuffer*
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1389
      start: 1353
    functionDepth: 3
    functionLinenumber: 1353
    functionLinenumberEnd: 1389
    functionName: GinBufferKeyEquals
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - Assert
    - AssertCheckGinBuffer
    - ApplySortComparator
    - PointerGetDatum
    linkageType: ''
    returnType: bool
    signature: bool GinBufferKeyEquals(GinBuffer *buffer, GinTuple *tup)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1427,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1428,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1447,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1448,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - buffer
    - tup
    argTypes:
    - GinBuffer*
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1419
    functionDepth: 2
    functionLinenumber: 1419
    functionLinenumberEnd: 1467
    functionName: GinBufferShouldTrim
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ItemPointerCompare
    - GinTupleGetFirst
    linkageType: ''
    returnType: bool
    signature: bool GinBufferShouldTrim(GinBuffer *buffer, GinTuple *tup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AssertCheckGinBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1498,1
    - Dst: _gin_parse_tuple_key
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1500,1
    - Dst: _gin_parse_tuple_items
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1501,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1504,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1514,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1530,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1532,1
    - Dst: ginMergeItemPointers::ginMergeItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1535,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1539,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1541,1
    - Dst: nnew::nnew
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1541,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1548,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1552,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - buffer
    - tup
    argTypes:
    - GinBuffer*
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1553
      start: 1492
    functionDepth: 3
    functionLinenumber: 1492
    functionLinenumberEnd: 1553
    functionName: GinBufferStoreTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginMergeItemPointers::ginMergeItemPointers
    - AssertCheckItemPointers
    - _gin_parse_tuple_items
    - memcpy
    - Assert
    - pfree
    - _gin_parse_tuple_key
    - datumCopy
    - repalloc
    - AssertCheckGinBuffer
    - nnew::nnew
    - GinBufferIsEmpty
    - palloc
    linkageType: ''
    returnType: void
    signature: void GinBufferStoreTuple(GinBuffer *buffer, GinTuple *tup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1562,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1562,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1566,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1566,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1559
    functionDepth: 1
    functionLinenumber: 1559
    functionLinenumberEnd: 1582
    functionName: GinBufferReset
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    - GinBufferIsEmpty
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void GinBufferReset(GinBuffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1592,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1589
    functionDepth: 1
    functionLinenumber: 1589
    functionLinenumberEnd: 1599
    functionName: GinBufferTrim
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - Assert
    - memmove
    linkageType: ''
    returnType: void
    signature: void GinBufferTrim(GinBuffer *buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1609,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1612,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1614,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1614,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1616,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1605
    functionDepth: 1
    functionLinenumber: 1605
    functionLinenumberEnd: 1617
    functionName: GinBufferFree
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - pfree
    - GinBufferIsEmpty
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void GinBufferFree(GinBuffer *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1629,1
    - Dst: GinBufferKeyEquals
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buffer
    - tup
    argTypes:
    - GinBuffer*
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1625
    functionDepth: 4
    functionLinenumber: 1625
    functionLinenumberEnd: 1634
    functionName: GinBufferCanAddKey
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - GinBufferKeyEquals
    - GinBufferIsEmpty
    linkageType: ''
    returnType: bool
    signature: bool GinBufferCanAddKey(GinBuffer *buffer, GinTuple *tup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _gin_parallel_heapscan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1659,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1662,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1666,1
    - Dst: GinBufferInit
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1674,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1693,1
    - Dst: tuplesort_getgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1705,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1709,1
    - Dst: GinBufferCanAddKey
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1716,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1723,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1725,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1727,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1731,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1732,1
    - Dst: GinBufferReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1735,1
    - Dst: GinBufferShouldTrim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1745,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1747,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1754,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1756,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1758,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1762,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1763,1
    - Dst: GinBufferTrim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1766,1
    - Dst: GinBufferStoreTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1773,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1776,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1781,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1783,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1785,1
    - Dst: GinBufferReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1790,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1793,1
    - Dst: GinBufferFree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1798,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1800,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 1
    argNames:
    - state
    argTypes:
    - GinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1647
    functionDepth: 10
    functionLinenumber: 1647
    functionLinenumberEnd: 1803
    functionName: _gin_parallel_merge
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - MemoryContextReset
    - Assert
    - tuplesort_getgintuple
    - GinBufferStoreTuple
    - GinBufferFree
    - GinBufferShouldTrim
    - _gin_parallel_heapscan
    - GinBufferIsEmpty
    - ginEntryInsert
    - tuplesort_end
    - AssertCheckItemPointers
    - GinBufferTrim
    - tuplesort_performsort
    - GinBufferCanAddKey
    - CHECK_FOR_INTERRUPTS
    - GinBufferInit
    - GinBufferReset
    - pgstat_progress_update_multi_param
    - MemoryContextSwitchTo
    - pgstat_progress_update_param
    linkageType: ''
    returnType: double
    signature: double _gin_parallel_merge(GinBuildState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1813,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1813,1
    - Dst: table_parallelscan_estimate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - heap
    - snapshot
    argTypes:
    - Relation
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1809
    functionDepth: 1
    functionLinenumber: 1809
    functionLinenumberEnd: 1815
    functionName: _gin_parallel_estimate_shared
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - table_parallelscan_estimate
    - add_size
    - BUFFERALIGN
    linkageType: ''
    returnType: Size
    signature: Size _gin_parallel_estimate_shared(Relation heap, Snapshot snapshot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _gin_parallel_scan_and_build
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buildstate
    - heap
    - index
    argTypes:
    - GinBuildState*
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1820
    functionDepth: 1
    functionLinenumber: 1820
    functionLinenumberEnd: 1837
    functionName: _gin_leader_participate_as_worker
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - _gin_parallel_scan_and_build
    linkageType: ''
    returnType: void
    signature: void _gin_leader_participate_as_worker(GinBuildState *buildstate, Relation
      heap, Relation index)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GinBufferInit
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1869,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1873,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1876,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1882,1
    - Dst: tuplesort_getgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1889,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1892,1
    - Dst: GinBufferCanAddKey
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1899,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1909,1
    - Dst: _gin_build_tuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1911,1
    - Dst: tuplesort_putgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1915,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1918,1
    - Dst: GinBufferReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1921,1
    - Dst: GinBufferShouldTrim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1931,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1936,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1943,1
    - Dst: _gin_build_tuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1945,1
    - Dst: tuplesort_putgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1949,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1951,1
    - Dst: GinBufferTrim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1954,1
    - Dst: GinBufferStoreTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1961,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1965,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1970,1
    - Dst: _gin_build_tuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1972,1
    - Dst: tuplesort_putgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1976,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1979,1
    - Dst: GinBufferReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1982,1
    - Dst: GinBufferFree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1986,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1988,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 3
    argNames:
    - state
    - worker_sort
    - progress
    argTypes:
    - GinBuildState*
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1853
    functionDepth: 5
    functionLinenumber: 1853
    functionLinenumberEnd: 1989
    functionName: _gin_process_worker_data
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - _gin_build_tuple
    - AssertCheckItemPointers
    - GinBufferReset
    - GinBufferTrim
    - tuplesort_end
    - pfree
    - tuplesort_getgintuple
    - Assert
    - tuplesort_performsort
    - GinBufferStoreTuple
    - GinBufferCanAddKey
    - CHECK_FOR_INTERRUPTS
    - GinBufferShouldTrim
    - GinBufferFree
    - GinBufferInit
    - GinBufferIsEmpty
    - tuplesort_putgintuple
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: "void _gin_process_worker_data(GinBuildState *state, Tuplesortstate
      *worker_sort,\n\t\t\t\t\t\t bool progress)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2043,1
    - Dst: tuplesort_begin_index_gin
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2055,1
    - Dst: tuplesort_begin_index_gin
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2061,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2067,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2070,1
    - Dst: ParallelTableScanFromGinBuildShared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2071,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2074,1
    - Dst: ginFlushBuildState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2078,1
    - Dst: _gin_process_worker_data
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2085,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2088,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2095,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2099,1
    - Dst: ConditionVariableSignal
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2102,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 7
    argNames:
    - state
    - ginshared
    - sharedsort
    - heap
    - index
    - sortmem
    - progress
    argTypes:
    - GinBuildState*
    - GinBuildShared*
    - Sharedsort*
    - Relation
    - Relation
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2105
      start: 2031
    functionDepth: 6
    functionLinenumber: 2031
    functionLinenumberEnd: 2105
    functionName: _gin_parallel_scan_and_build
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - table_beginscan_parallel
    - table_index_build_scan
    - ConditionVariableSignal
    - BuildIndexInfo
    - _gin_process_worker_data
    - tuplesort_performsort
    - ginFlushBuildState
    - ParallelTableScanFromGinBuildShared
    - SpinLockRelease
    - tuplesort_begin_index_gin
    - SpinLockAcquire
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: "void _gin_parallel_scan_and_build(GinBuildState *state,\n\t\t\t\t\t\t\t
      GinBuildShared *ginshared, Sharedsort *sharedsort,\n\t\t\t\t\t\t\t Relation
      heap, Relation index,\n\t\t\t\t\t\t\t int sortmem, bool progress)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2129,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2133,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2137,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2140,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2155,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2156,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2159,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2161,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2162,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2168,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2176,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2181,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2185,1
    - Dst: tuplesort_attach_shared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2186,1
    - Dst: InstrStartParallelQuery
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2189,1
    - Dst: _gin_parallel_scan_and_build
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2198,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2202,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2203,1
    - Dst: InstrEndParallelQuery
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2204,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2207,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2209
      start: 2110
    functionDepth: 7
    functionLinenumber: 2110
    functionLinenumberEnd: 2209
    functionName: _gin_parallel_build_main
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    - InstrStartParallelQuery
    - Assert
    - index_open
    - ginInitBA
    - table_open
    - initGinState
    - tuplesort_attach_shared
    - _gin_parallel_scan_and_build
    - memset
    - InstrEndParallelQuery
    - pgstat_report_activity
    - AllocSetContextCreate
    - index_close
    - table_close
    linkageType: ''
    returnType: void
    signature: void _gin_parallel_build_main(dsm_segment *seg, shm_toc *toc)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2278,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2278,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2280,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2280,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2282,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2287,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2293,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2295,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2301,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2303,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2311,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2322,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2342,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2346,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2346,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2350,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2350,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2354,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2354,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2359,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2362,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2364,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2366,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2366,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2368,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2370,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2372,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2373,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 8
    argNames:
    - attrnum
    - category
    - key
    - typlen
    - typbyval
    - items
    - nitems
    - len
    argTypes:
    - OffsetNumber
    - unsigned char
    - Datum
    - int16
    - bool
    - ItemPointerData*
    - uint32
    - Size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2377
      start: 2241
    functionDepth: 4
    functionLinenumber: 2241
    functionLinenumberEnd: 2377
    functionName: _gin_build_tuple
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 2
    functionsReached:
    - elog
    - memcpy
    - pfree
    - palloc0
    - dlist_container
    - VARSIZE_ANY
    - dlist_init
    - SHORTALIGN
    - SizeOfGinPostingList
    - strlen
    - ginCompressPostingList
    - palloc_object
    - dlist_push_tail
    - dlist_foreach_modify
    - dlist_delete
    - DatumGetPointer
    linkageType: ''
    returnType: GinTuple
    signature: "GinTuple *\n_gin_build_tuple(OffsetNumber attrnum, unsigned char category,\n\t\t\t\t
      Datum key, int16 typlen, bool typbyval,\n\t\t\t\t ItemPointerData *items, uint32
      nitems,\n\t\t\t\t Size *len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2400,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - a
    argTypes:
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2390
    functionDepth: 1
    functionLinenumber: 2390
    functionLinenumberEnd: 2405
    functionName: _gin_parse_tuple_key
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - PointerGetDatum
    - memcpy
    linkageType: ''
    returnType: Datum
    signature: Datum _gin_parse_tuple_key(GinTuple *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2419,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2420,1
    - Dst: ginPostingListDecodeAllSegments
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - a
    argTypes:
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2427
      start: 2411
    functionDepth: 3
    functionLinenumber: 2411
    functionLinenumberEnd: 2427
    functionName: _gin_parse_tuple_items
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - ginPostingListDecodeAllSegments
    - SHORTALIGN
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer _gin_parse_tuple_items(GinTuple *a)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _gin_parse_tuple_key
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2464,1
    - Dst: _gin_parse_tuple_key
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2465,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2467,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2472,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2472,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2473,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2476,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2476,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2477,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - a
    - b
    - ssup
    argTypes:
    - GinTuple*
    - GinTuple*
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2478
      start: 2443
    functionDepth: 2
    functionLinenumber: 2443
    functionLinenumberEnd: 2478
    functionName: _gin_compare_tuples
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ItemPointerCompare
    - _gin_parse_tuple_key
    - ApplySortComparator
    - GinTupleGetFirst
    linkageType: ''
    returnType: int
    signature: int _gin_compare_tuples(GinTuple *a, GinTuple *b, SortSupport ssup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:62,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginfast.c:71,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:73,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginfast.c:80,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginfast.c:82,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginfast.c:86,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginfast.c:89,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginfast.c:90,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:95,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:97,1
    - Dst: GinPageSetFullRow
      Src: /src/postgres/src/backend/access/gin/ginfast.c:106,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:107,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:111,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginfast.c:114,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginfast.c:116,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:124,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginfast.c:125,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:127,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gin/ginfast.c:128,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:130,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginfast.c:131,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/gin/ginfast.c:135,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginfast.c:137,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:139,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 5
    argNames:
    - index
    - buffer
    - tuples
    - ntuples
    - rightlink
    argTypes:
    - Relation
    - Buffer
    - IndexTuple*
    - int32
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 58
    functionDepth: 5
    functionLinenumber: 58
    functionLinenumberEnd: 142
    functionName: writeListPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - END_CRIT_SECTION
    - BufferGetPage
    - XLogRegisterData
    - GinPageSetFullRow
    - GinPageGetOpaque
    - RelationGetRelationName
    - XLogRegisterBufData
    - elog
    - PageGetExactFreeSpace
    - memcpy
    - XLogBeginInsert
    - Assert
    - UnlockReleaseBuffer
    - PageSetLSN
    - IndexTupleSize
    - PageAddItem
    - MarkBufferDirty
    - XLogRegisterBuffer
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - GinInitBuffer
    linkageType: ''
    returnType: int32
    signature: "int32 writeListPage(Relation index, Buffer buffer,\n\t\t\t  const
      IndexTuple *tuples, int32 ntuples, BlockNumber rightlink)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:155,1
    - Dst: GinNewBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:164,1
    - Dst: writeListPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:169,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginfast.c:172,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginfast.c:176,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginfast.c:184,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginfast.c:184,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginfast.c:201,1
    - Dst: writeListPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - index
    - tuples
    - ntuples
    - res
    argTypes:
    - Relation
    - IndexTuple*
    - int32
    - GinMetaPageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 144
    functionDepth: 6
    functionLinenumber: 144
    functionLinenumberEnd: 209
    functionName: makeSublist
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 0
    functionsReached:
    - writeListPage
    - Assert
    - BufferGetBlockNumber
    - GinNewBuffer
    - MAXALIGN
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void makeSublist(Relation index, IndexTuple *tuples, int32 ntuples,\n\t\t\tGinMetaPageData
      *res)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginfast.c:236,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:242,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:243,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:262,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginfast.c:263,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:275,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginfast.c:286,1
    - Dst: makeSublist
      Src: /src/postgres/src/backend/access/gin/ginfast.c:287,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:292,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginfast.c:293,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/gin/ginfast.c:295,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginfast.c:302,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:312,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:322,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:323,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:326,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:326,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginfast.c:328,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:330,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginfast.c:332,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:342,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:343,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/gin/ginfast.c:359,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:361,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:362,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:363,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/gin/ginfast.c:365,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gin/ginfast.c:366,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginfast.c:366,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginfast.c:368,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginfast.c:372,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:380,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:380,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:381,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginfast.c:386,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginfast.c:387,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginfast.c:390,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginfast.c:391,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginfast.c:393,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:399,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginfast.c:401,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:405,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gin/ginfast.c:406,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/gin/ginfast.c:409,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginfast.c:425,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginfast.c:431,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:433,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginfast.c:434,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:436,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginfast.c:437,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginfast.c:441,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:446,1
    - Dst: GinGetPendingListCleanupSize
      Src: /src/postgres/src/backend/access/gin/ginfast.c:458,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginfast.c:462,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:464,1
    - Dst: ginInsertCleanup
      Src: /src/postgres/src/backend/access/gin/ginfast.c:471,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 105
    argCount: 2
    argNames:
    - ginstate
    - collector
    argTypes:
    - GinState*
    - GinTupleCollector*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 218
    functionDepth: 7
    functionLinenumber: 218
    functionLinenumberEnd: 472
    functionName: ginHeapTupleFastInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - LockBuffer
    - GinGetPendingListCleanupSize
    - ginInsertCleanup
    - BufferGetPage
    - XLogRegisterData
    - PageIsEmpty
    - GinPageGetOpaque
    - RelationGetRelationName
    - XLogRegisterBufData
    - elog
    - PageGetExactFreeSpace
    - memcpy
    - XLogBeginInsert
    - Assert
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - UnlockReleaseBuffer
    - IndexTupleSize
    - PageSetLSN
    - GinPageGetMeta
    - PageAddItem
    - memset
    - MarkBufferDirty
    - XLogRegisterBuffer
    - CheckForSerializableConflictIn
    - OffsetNumberNext
    - makeSublist
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - palloc
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void ginHeapTupleFastInsert(GinState *ginstate, GinTupleCollector *collector)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ginExtractEntries
      Src: /src/postgres/src/backend/access/gin/ginfast.c:496,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginfast.c:504,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/gin/ginfast.c:516,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/gin/ginfast.c:516,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginfast.c:517,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/gin/ginfast.c:526,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/access/gin/ginfast.c:527,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/ginfast.c:539,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginfast.c:543,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 6
    argNames:
    - ginstate
    - collector
    - attnum
    - value
    - isNull
    - ht_ctid
    argTypes:
    - GinState*
    - GinTupleCollector*
    - OffsetNumber
    - Datum
    - bool
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 482
    functionDepth: 3
    functionLinenumber: 482
    functionLinenumberEnd: 545
    functionName: ginHeapTupleFastCollect
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 1
    functionsReached:
    - elog
    - GinFormTuple
    - palloc_array
    - ginExtractEntries
    - Max
    - repalloc_array
    - pg_nextpower2_32
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void ginHeapTupleFastCollect(GinState *ginstate,\n\t\t\t\t\t\tGinTupleCollector
      *collector,\n\t\t\t\t\t\tOffsetNumber attnum, Datum value, bool isNull,\n\t\t\t\t\t\tItemPointer
      ht_ctid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:561,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginfast.c:562,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:578,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:579,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:580,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:584,1
    - Dst: GinPageIsDeleted
      Src: /src/postgres/src/backend/access/gin/ginfast.c:584,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:586,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:587,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginfast.c:598,1
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/gin/ginfast.c:599,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginfast.c:601,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:607,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginfast.c:628,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:632,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:633,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginfast.c:634,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginfast.c:637,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:641,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:642,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:645,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginfast.c:647,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginfast.c:649,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:652,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginfast.c:653,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:657,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginfast.c:658,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginfast.c:662,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:665,1
    - Dst: RecordFreeIndexPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:668,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 59
    argCount: 5
    argNames:
    - index
    - metabuffer
    - newHead
    - fill_fsm
    - stats
    argTypes:
    - Relation
    - Buffer
    - BlockNumber
    - bool
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 553
    functionDepth: 4
    functionLinenumber: 553
    functionLinenumberEnd: 671
    functionName: shiftList
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - GinPageGetOpaque
    - memcpy
    - XLogBeginInsert
    - Assert
    - ReadBuffer
    - UnlockReleaseBuffer
    - PageSetLSN
    - XLogEnsureRecordSpace
    - GinPageGetMeta
    - MarkBufferDirty
    - XLogRegisterBuffer
    - RecordFreeIndexPage
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - GinPageIsDeleted
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,\n\t\t
      \ bool fill_fsm, IndexBulkDeleteResult *stats)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginfast.c:677,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginfast.c:678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - keys
    - maxvalues
    argTypes:
    - KeyArray*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 674
    functionDepth: 0
    functionLinenumber: 674
    functionLinenumberEnd: 681
    functionName: initKeyArray
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 0
    functionsReached:
    - palloc_array
    linkageType: ''
    returnType: void
    signature: void initKeyArray(KeyArray *keys, int32 maxvalues)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/access/gin/ginfast.c:690,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/access/gin/ginfast.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - keys
    - datum
    - category
    argTypes:
    - KeyArray*
    - Datum
    - GinNullCategory
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 697
    functionName: addDatum
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 0
    functionsReached:
    - repalloc_array
    linkageType: ''
    returnType: void
    signature: void addDatum(KeyArray *keys, Datum datum, GinNullCategory category)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginfast.c:720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:721,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/gin/ginfast.c:722,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gin/ginfast.c:725,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginfast.c:727,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginfast.c:727,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginfast.c:733,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/ginfast.c:735,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/gin/ginfast.c:740,1
    - Dst: ginInsertBAEntries
      Src: /src/postgres/src/backend/access/gin/ginfast.c:748,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginfast.c:756,1
    - Dst: addDatum
      Src: /src/postgres/src/backend/access/gin/ginfast.c:757,1
    - Dst: ginInsertBAEntries
      Src: /src/postgres/src/backend/access/gin/ginfast.c:761,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - accum
    - ka
    - page
    - startoff
    argTypes:
    - BuildAccumulator*
    - KeyArray*
    - Page
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 708
    functionDepth: 5
    functionLinenumber: 708
    functionLinenumberEnd: 763
    functionName: processPendingPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 0
    functionsReached:
    - gintuple_get_key
    - OffsetNumberNext
    - Assert
    - ginInsertBAEntries
    - PageGetItemId
    - ItemPointerEquals
    - PageGetMaxOffsetNumber
    - PageGetItem
    - gintuple_get_attrnum
    - ItemPointerSetInvalid
    - addDatum
    - ItemPointerIsValid
    linkageType: ''
    returnType: void
    signature: "void processPendingPage(BuildAccumulator *accum, KeyArray *ka,\n\t\t\t\t
      \  Page page, OffsetNumber startoff)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LockPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:813,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/gin/ginfast.c:815,1
    - Dst: ConditionalLockPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:825,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:830,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:831,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:832,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginfast.c:833,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:838,1
    - Dst: UnlockPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:839,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:853,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:854,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:855,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:857,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/ginfast.c:862,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginfast.c:866,1
    - Dst: initKeyArray
      Src: /src/postgres/src/backend/access/gin/ginfast.c:868,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/ginfast.c:869,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:879,1
    - Dst: GinPageIsDeleted
      Src: /src/postgres/src/backend/access/gin/ginfast.c:879,1
    - Dst: processPendingPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:893,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gin/ginfast.c:895,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:902,1
    - Dst: GinPageHasFullRow
      Src: /src/postgres/src/backend/access/gin/ginfast.c:903,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginfast.c:918,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:919,1
    - Dst: ginBeginBAScan
      Src: /src/postgres/src/backend/access/gin/ginfast.c:926,1
    - Dst: ginGetBAEntry
      Src: /src/postgres/src/backend/access/gin/ginfast.c:927,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:930,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gin/ginfast.c:932,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:938,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:939,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:941,1
    - Dst: GinPageIsDeleted
      Src: /src/postgres/src/backend/access/gin/ginfast.c:941,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginfast.c:951,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/ginfast.c:953,1
    - Dst: processPendingPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:954,1
    - Dst: ginBeginBAScan
      Src: /src/postgres/src/backend/access/gin/ginfast.c:956,1
    - Dst: ginGetBAEntry
      Src: /src/postgres/src/backend/access/gin/ginfast.c:957,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:959,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:966,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:967,1
    - Dst: shiftList
      Src: /src/postgres/src/backend/access/gin/ginfast.c:974,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginfast.c:979,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:980,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginfast.c:992,1
    - Dst: initKeyArray
      Src: /src/postgres/src/backend/access/gin/ginfast.c:993,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/ginfast.c:994,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginfast.c:998,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:999,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1005,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1006,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1007,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1008,1
    - Dst: UnlockPage
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1011,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1012,1
    - Dst: IndexFreeSpaceMapVacuum
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1020,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1023,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1024,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 79
    argCount: 5
    argNames:
    - ginstate
    - full_clean
    - fill_fsm
    - forceCleanup
    - stats
    argTypes:
    - GinState*
    - bool
    - bool
    - bool
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 779
    functionDepth: 10
    functionLinenumber: 779
    functionLinenumberEnd: 1025
    functionName: ginInsertCleanup
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 3
    functionsReached:
    - LockBuffer
    - initKeyArray
    - BufferGetPage
    - vacuum_delay_point
    - GinPageGetOpaque
    - IndexFreeSpaceMapVacuum
    - AmAutoVacuumWorkerProcess
    - ReleaseBuffer
    - MemoryContextReset
    - Assert
    - processPendingPage
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - GinPageHasFullRow
    - UnlockReleaseBuffer
    - ginEntryInsert
    - ConditionalLockPage
    - GinPageGetMeta
    - ginBeginBAScan
    - UnlockPage
    - LockPage
    - ginInitBA
    - shiftList
    - AllocSetContextCreate
    - ginGetBAEntry
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - GinPageIsDeleted
    linkageType: ''
    returnType: void
    signature: "void ginInsertCleanup(GinState *ginstate, bool full_clean,\n\t\t\t\t
      bool fill_fsm, bool forceCleanup,\n\t\t\t\t IndexBulkDeleteResult *stats)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1033,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1034,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1037,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1038,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1039,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1040,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1041,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1046,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1047,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1048,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1049,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1056,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1057,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1058,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1059,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1062,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1062,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1063,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1064,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1066,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1079,1
    - Dst: ginInsertCleanup
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1080,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1083,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1084,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1085,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1086,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1088,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/access/gin/ginfast.c:1090,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1030
    functionDepth: 11
    functionLinenumber: 1030
    functionLinenumberEnd: 1091
    functionName: gin_clean_pending_list
    functionSourceFile: /src/postgres/src/backend/access/gin/ginfast.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - object_ownercheck
    - PG_RETURN_INT64
    - ereport
    - index_open
    - ginInsertCleanup
    - initGinState
    - errhint
    - RELATION_IS_OTHER_TEMP
    - PG_GETARG_OID
    - errmsg
    - RelationGetRelationName
    - aclcheck_error
    - memset
    - index_close
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum gin_clean_pending_list(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginscan.c:32,1
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/backend/access/gin/ginscan.c:34,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginscan.c:37,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/ginscan.c:40,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/ginscan.c:43,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/ginscan.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - rel
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 25
    functionDepth: 3
    functionLinenumber: 25
    functionLinenumberEnd: 51
    functionName: ginbeginscan
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - RelationGetIndexScan
    - initGinState
    - palloc_object
    - AllocSetContextCreate
    linkageType: ''
    returnType: IndexScanDesc
    signature: IndexScanDesc ginbeginscan(Relation rel, int nkeys, int norderbys)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ginCompareEntries
      Src: /src/postgres/src/backend/access/gin/ginscan.c:89,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginscan.c:102,1
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginscan.c:112,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/access/gin/ginscan.c:127,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 8
    argNames:
    - so
    - attnum
    - strategy
    - searchMode
    - queryKey
    - queryCategory
    - isPartialMatch
    - extra_data
    argTypes:
    - GinScanOpaque
    - OffsetNumber
    - StrategyNumber
    - int32
    - Datum
    - GinNullCategory
    - bool
    - Pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 132
    functionName: ginFillScanEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 0
    functionsReached:
    - repalloc_array
    - ItemPointerSetMin
    - ginCompareEntries
    - palloc_object
    linkageType: ''
    returnType: GinScanEntry
    signature: "GinScanEntry ginFillScanEntry(GinScanOpaque so, OffsetNumber attnum,\n\t\t\t\t
      StrategyNumber strategy, int32 searchMode,\n\t\t\t\t Datum queryKey, GinNullCategory
      queryCategory,\n\t\t\t\t bool isPartialMatch, Pointer extra_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginFillScanEntry
      Src: /src/postgres/src/backend/access/gin/ginscan.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - so
    - key
    - queryCategory
    argTypes:
    - GinScanOpaque
    - GinScanKey
    - GinNullCategory
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 142
    functionDepth: 3
    functionLinenumber: 142
    functionLinenumberEnd: 153
    functionName: ginScanKeyAddHiddenEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 0
    functionsReached:
    - ginFillScanEntry
    linkageType: ''
    returnType: void
    signature: "void ginScanKeyAddHiddenEntry(GinScanOpaque so, GinScanKey key,\n\t\t\t\t\t\t
      GinNullCategory queryCategory)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginscan.c:173,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/gin/ginscan.c:174,1
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginscan.c:190,1
    - Dst: ginInitConsistentFunction
      Src: /src/postgres/src/backend/access/gin/ginscan.c:199,1
    - Dst: ginFillScanEntry
      Src: /src/postgres/src/backend/access/gin/ginscan.c:216,1
    - Dst: ginScanKeyAddHiddenEntry
      Src: /src/postgres/src/backend/access/gin/ginscan.c:228,1
    - Dst: ginScanKeyAddHiddenEntry
      Src: /src/postgres/src/backend/access/gin/ginscan.c:230,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 10
    argNames:
    - so
    - attnum
    - strategy
    - searchMode
    - query
    - nQueryValues
    - queryValues
    - queryCategories
    - partial_matches
    - extra_data
    argTypes:
    - GinScanOpaque
    - OffsetNumber
    - StrategyNumber
    - int32
    - Datum
    - uint32
    - Datum*
    - GinNullCategory*
    - bool*
    - Pointer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 158
    functionDepth: 4
    functionLinenumber: 158
    functionLinenumberEnd: 231
    functionName: ginFillScanKey
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetMin
    - palloc0_array
    - ginInitConsistentFunction
    - palloc_array
    - ginFillScanEntry
    - ginScanKeyAddHiddenEntry
    linkageType: ''
    returnType: void
    signature: "void ginFillScanKey(GinScanOpaque so, OffsetNumber attnum,\n\t\t\t
      \  StrategyNumber strategy, int32 searchMode,\n\t\t\t   Datum query, uint32
      nQueryValues,\n\t\t\t   Datum *queryValues, GinNullCategory *queryCategories,\n\t\t\t
      \  bool *partial_matches, Pointer *extra_data)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginscan.c:249,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginscan.c:251,1
    - Dst: tbm_end_private_iterate
      Src: /src/postgres/src/backend/access/gin/ginscan.c:253,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/access/gin/ginscan.c:255,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginscan.c:258,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - so
    argTypes:
    - GinScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 264
    functionName: ginFreeScanKeys
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 1
    functionsReached:
    - ReleaseBuffer
    - MemoryContextReset
    - pfree
    - tbm_free
    - tbm_end_private_iterate
    linkageType: ''
    returnType: void
    signature: void ginFreeScanKeys(GinScanOpaque so)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginscan.c:282,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginscan.c:286,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/gin/ginscan.c:286,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginscan.c:293,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/ginscan.c:320,1
    - Dst: FunctionCall7Coll
      Src: /src/postgres/src/backend/access/gin/ginscan.c:320,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginscan.c:323,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gin/ginscan.c:324,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginscan.c:325,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginscan.c:326,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginscan.c:327,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginscan.c:328,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/ginscan.c:361,1
    - Dst: ginFillScanKey
      Src: /src/postgres/src/backend/access/gin/ginscan.c:376,1
    - Dst: ginScanKeyAddHiddenEntry
      Src: /src/postgres/src/backend/access/gin/ginscan.c:406,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginscan.c:424,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginscan.c:426,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginscan.c:436,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginscan.c:441,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginscan.c:445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginscan.c:446,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginscan.c:448,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginscan.c:449,1
    - Dst: ginFillScanKey
      Src: /src/postgres/src/backend/access/gin/ginscan.c:459,1
    - Dst: ginGetStats
      Src: /src/postgres/src/backend/access/gin/ginscan.c:474,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginscan.c:476,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginscan.c:477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginscan.c:478,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/gin/ginscan.c:479,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginscan.c:480,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginscan.c:483,1
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/gin/ginscan.c:485,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 81
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 266
    functionDepth: 5
    functionLinenumber: 266
    functionLinenumberEnd: 488
    functionName: ginNewScanKey
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 1
    functionsReached:
    - errcode
    - errhint
    - RelationGetRelationName
    - UInt16GetDatum
    - memcpy
    - Assert
    - pfree
    - FunctionCall7Coll
    - PointerGetDatum
    - errmsg
    - ginScanKeyAddHiddenEntry
    - ginFillScanKey
    - ereport
    - pgstat_count_index_scan
    - ginGetStats
    - palloc0
    - MemoryContextSwitchTo
    - Max
    - palloc
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ginNewScanKey(IndexScanDesc scan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ginFreeScanKeys
      Src: /src/postgres/src/backend/access/gin/ginscan.c:496,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginscan.c:499,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 5
    argNames:
    - scan
    - scankey
    - nscankeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 490
    functionDepth: 2
    functionLinenumber: 490
    functionLinenumberEnd: 500
    functionName: ginrescan
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ginFreeScanKeys
    linkageType: ''
    returnType: void
    signature: "void ginrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys,\n\t\t
      \ ScanKey orderbys, int norderbys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginFreeScanKeys
      Src: /src/postgres/src/backend/access/gin/ginscan.c:508,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/ginscan.c:510,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/ginscan.c:511,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginscan.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 503
    functionDepth: 2
    functionLinenumber: 503
    functionLinenumberEnd: 514
    functionName: ginendscan
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextDelete
    - ginFreeScanKeys
    linkageType: ''
    returnType: void
    signature: void ginendscan(IndexScanDesc scan)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:49,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:49,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:50,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:51,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:52,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:57,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:59,1
    - Dst: get_opfamily_name
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:62,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:65,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:65,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:66,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:66,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:72,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:81,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:82,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:83,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:85,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:100,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:105,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:111,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:118,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:125,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:130,1
    - Dst: check_amoptsproc_signature
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:137,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:140,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:141,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:142,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:144,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:152,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:153,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:154,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:156,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:166,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:173,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:175,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:182,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:184,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:185,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:186,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:188,1
    - Dst: check_amop_signature
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:193,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:197,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:199,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:201,1
    - Dst: identify_opfamily_groups
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:207,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:211,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:239,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:240,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:251,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:258,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:259,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:260,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 90
    argCount: 1
    argNames:
    - opclassoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 30
    functionDepth: 3
    functionLinenumber: 30
    functionLinenumberEnd: 263
    functionName: ginvalidate
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvalidate.c
    functionUses: 0
    functionsReached:
    - identify_opfamily_groups
    - errcode
    - format_operator
    - format_procedure
    - check_amop_signature
    - NameStr
    - check_amoptsproc_signature
    - SearchSysCache1
    - elog
    - check_amproc_signature
    - HeapTupleIsValid
    - ReleaseSysCache
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - ereport
    - lfirst
    - GETSTRUCT
    - get_opfamily_name
    linkageType: ''
    returnType: bool
    signature: bool ginvalidate(Oid opclassoid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 226
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvalidate.c
    functionUses: 17
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, grouplist)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:285,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:301,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:321,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - opfamilyoid
    - opclassoid
    - operators
    - functions
    argTypes:
    - Oid
    - Oid
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 328
    functionName: ginadjustmembers
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvalidate.c
    functionUses: 0
    functionsReached:
    - lfirst
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: "void ginadjustmembers(Oid opfamilyoid,\n\t\t\t\t Oid opclassoid,\n\t\t\t\t
      List *operators,\n\t\t\t\t List *functions)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 290
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvalidate.c
    functionUses: 17
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, operators)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:301,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:321,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginvalidate.c:323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 327
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvalidate.c
    functionUses: 17
    functionsReached:
    - lfirst
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, functions)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GinPageIsCompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:139,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:141,1
    - Dst: GinDataLeafPageGetPostingListSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:142,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:147,1
    - Dst: GinNextPostingListSegment
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:149,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:151,1
    - Dst: GinNextPostingListSegment
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:154,1
    - Dst: ginPostingListDecodeAllSegments
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:160,1
    - Dst: dataLeafPageGetUncompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:169,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:171,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - page
    - nitems
    - advancePast
    argTypes:
    - Page
    - int*
    - ItemPointerData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 134
    functionDepth: 3
    functionLinenumber: 134
    functionLinenumberEnd: 176
    functionName: GinDataLeafPageGetItems
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 2
    functionsReached:
    - ginCompareItemPointers
    - ItemPointerIsValid
    - memcpy
    - GinDataLeafPageGetPostingListSize
    - GinNextPostingListSegment
    - ginPostingListDecodeAllSegments
    - palloc
    - dataLeafPageGetUncompressed
    - GinDataLeafPageGetPostingList
    - GinPageIsCompressed
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer GinDataLeafPageGetItems(Page page, int *nitems, ItemPointerData
      advancePast)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GinPageIsCompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:187,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:189,1
    - Dst: GinDataLeafPageGetPostingListSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:190,1
    - Dst: ginPostingListDecodeAllSegmentsToTbm
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:192,1
    - Dst: dataLeafPageGetUncompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:196,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - page
    - tbm
    argTypes:
    - Page
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 181
    functionDepth: 4
    functionLinenumber: 181
    functionLinenumberEnd: 203
    functionName: GinDataLeafPageGetItemsToTbm
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 1
    functionsReached:
    - GinDataLeafPageGetPostingListSize
    - tbm_add_tuples
    - dataLeafPageGetUncompressed
    - GinDataLeafPageGetPostingList
    - GinPageIsCompressed
    - ginPostingListDecodeAllSegmentsToTbm
    linkageType: ''
    returnType: int
    signature: int GinDataLeafPageGetItemsToTbm(Page page, TIDBitmap *tbm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:215,1
    - Dst: GinPageIsCompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:215,1
    - Dst: GinDataPageGetData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:221,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - page
    - nitems
    argTypes:
    - Page
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 225
    functionName: dataLeafPageGetUncompressed
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 2
    functionsReached:
    - Assert
    - GinDataPageGetData
    - GinPageIsCompressed
    - GinPageGetOpaque
    linkageType: ''
    returnType: ItemPointer
    signature: ItemPointer dataLeafPageGetUncompressed(Page page, int *nitems)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:236,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:238,1
    - Dst: GinPageIsDeleted
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:241,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - btree
    - page
    argTypes:
    - GinBtree
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 245
    functionName: dataIsMoveRight
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - GinPageRightMost
    - GinPageIsDeleted
    - ginCompareItemPointers
    - GinDataPageGetRightBound
    linkageType: ''
    returnType: bool
    signature: bool dataIsMoveRight(GinBtree btree, Page page)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:259,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:261,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:262,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:262,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:267,1
    - Dst: GinBtree::getLeftMostChild
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:268,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:272,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:273,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:281,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:293,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:294,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:308,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:311,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:312,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 2
    argNames:
    - btree
    - stack
    argTypes:
    - GinBtree
    - GinBtreeStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 251
    functionDepth: 4
    functionLinenumber: 251
    functionLinenumberEnd: 313
    functionName: dataLocateItem
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - ginCompareItemPointers
    - Assert
    - PostingItemGetBlockNumber
    - GinBtree::getLeftMostChild
    - GinPageIsLeaf
    - BufferGetPage
    - GinPageGetOpaque
    - GinPageIsData
    - GinDataPageGetPostingItem
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber dataLocateItem(GinBtree btree, GinBtreeStack *stack)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:325,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:326,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:326,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:331,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:332,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:341,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:342,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:352,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:353,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 4
    argNames:
    - btree
    - page
    - blkno
    - storedOff
    argTypes:
    - GinBtree
    - Page
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 358
    functionName: dataFindChildPtr
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - Assert
    - PostingItemGetBlockNumber
    - GinPageIsLeaf
    - GinPageGetOpaque
    - GinPageIsData
    - GinDataPageGetPostingItem
    linkageType: ''
    returnType: OffsetNumber
    signature: OffsetNumber dataFindChildPtr(GinBtree btree, Page page, BlockNumber
      blkno, OffsetNumber storedOff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:368,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:368,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:369,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:370,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:370,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:372,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - btree
    - page
    argTypes:
    - GinBtree
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 374
    functionName: dataGetLeftMostPage
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - Assert
    - PostingItemGetBlockNumber
    - GinPageIsLeaf
    - GinPageGetOpaque
    - GinPageIsData
    - GinDataPageGetPostingItem
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber dataGetLeftMostPage(GinBtree btree, Page page)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:382,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:385,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:386,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:386,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:390,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:394,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:396,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:400,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:403,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - page
    - data
    - offset
    argTypes:
    - Page
    - PostingItem*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 411
    functionName: GinDataPageAddPostingItem
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - PostingItemGetBlockNumber
    - memmove
    - GinPageIsLeaf
    - GinPageGetOpaque
    - GinDataPageSetDataSize
    - GinDataPageGetPostingItem
    linkageType: ''
    returnType: void
    signature: void GinDataPageAddPostingItem(Page page, PostingItem *data, OffsetNumber
      offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:419,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:421,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:422,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:425,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:425,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:426,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:430,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - page
    - offset
    argTypes:
    - Page
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 433
    functionName: GinPageDeletePostingItem
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 1
    functionsReached:
    - Assert
    - memmove
    - GinPageIsLeaf
    - GinPageGetOpaque
    - GinDataPageSetDataSize
    - GinDataPageGetPostingItem
    linkageType: ''
    returnType: void
    signature: void GinPageDeletePostingItem(Page page, OffsetNumber offset)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:456,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:469,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:474,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:478,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:485,1
    - Dst: disassembleLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:493,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:499,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:501,1
    - Dst: dlist_tail_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:502,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:504,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:507,1
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:514,1
    - Dst: GinPageIsCompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:525,1
    - Dst: GinDataLeafPageGetFreeSpace
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:526,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:538,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:554,1
    - Dst: addItemsToLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:558,1
    - Dst: leafRepackItems
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:569,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:577,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:579,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:580,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:585,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:589,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:599,1
    - Dst: computeLeafRecompressWALData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:600,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:609,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:610,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:613,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:614,1
    - Dst: dlist_has_prev
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:639,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:641,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:646,1
    - Dst: dlist_prev_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:668,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:669,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:675,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:677,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:684,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:685,1
    - Dst: dataPlaceToPageLeafSplit
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:687,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:690,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:690,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:691,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:691,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:692,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:695,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:696,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:699,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:700,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 91
    argCount: 7
    argNames:
    - btree
    - buf
    - stack
    - insertdata
    - ptp_workspace
    - newlpage
    - newrpage
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - void*
    - void**
    - Page*
    - Page*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 447
    functionDepth: 4
    functionLinenumber: 447
    functionLinenumberEnd: 707
    functionName: dataBeginPlaceToPageLeaf
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - ginCompareItemPointers
    - dataPlaceToPageLeafSplit
    - GinDataPageGetRightBound
    - BufferGetPage
    - SizeOfGinPostingList
    - ginPostingListDecode
    - elog
    - addItemsToLeaf
    - Assert
    - BufferGetBlockNumber
    - dlist_tail_node
    - leafRepackItems
    - GinPageRightMost
    - computeLeafRecompressWALData
    - dlist_has_prev
    - dlist_container
    - ItemPointerCompare
    - ItemPointerIsValid
    - GinPageIsCompressed
    - dlist_is_empty
    - ItemPointerSetMin
    - RelationNeedsWAL
    - dlist_prev_node
    - GinDataLeafPageGetFreeSpace
    - disassembleLeaf
    - palloc
    - Min
    linkageType: ''
    returnType: GinPlaceToPageRC
    signature: "GinPlaceToPageRC dataBeginPlaceToPageLeaf(GinBtree btree, Buffer buf,
      GinBtreeStack *stack,\n\t\t\t\t\t\t void *insertdata,\n\t\t\t\t\t\t void **ptp_workspace,\n\t\t\t\t\t\t
      Page *newlpage, Page *newrpage)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dataPlaceToPageLeafRecompress
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:722,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:724,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:727,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:729,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - btree
    - buf
    - stack
    - insertdata
    - ptp_workspace
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 732
    functionName: dataExecPlaceToPageLeaf
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - XLogRegisterBufData
    - dataPlaceToPageLeafRecompress
    - RelationNeedsWAL
    - MarkBufferDirty
    - XLogRegisterBuffer
    linkageType: ''
    returnType: void
    signature: "void dataExecPlaceToPageLeaf(GinBtree btree, Buffer buf, GinBtreeStack
      *stack,\n\t\t\t\t\t\tvoid *insertdata, void *ptp_workspace)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:740,1
    - Dst: disassembleLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:745,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:748,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:750,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:756,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:759,1
    - Dst: ginVacuumItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:763,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:767,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:776,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:782,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:824,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:826,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:833,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:834,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:836,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:841,1
    - Dst: computeLeafRecompressWALData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:842,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:845,1
    - Dst: dataPlaceToPageLeafRecompress
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:847,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:849,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:851,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:855,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:856,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:857,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:858,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:859,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:862,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 3
    argNames:
    - indexrel
    - buffer
    - gvs
    argTypes:
    - Relation
    - Buffer
    - GinVacuumState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 737
    functionDepth: 4
    functionLinenumber: 737
    functionLinenumberEnd: 864
    functionName: ginVacuumPostingTreeLeaf
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - BufferGetPage
    - SizeOfGinPostingList
    - dataPlaceToPageLeafRecompress
    - ginCompressPostingList
    - ginVacuumItemPointers
    - ginPostingListDecode
    - XLogRegisterBufData
    - elog
    - memcpy
    - XLogBeginInsert
    - pfree
    - dlist_foreach
    - PageSetLSN
    - computeLeafRecompressWALData
    - dlist_container
    - MarkBufferDirty
    - XLogRegisterBuffer
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - disassembleLeaf
    - palloc
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void ginVacuumPostingTreeLeaf(Relation indexrel, Buffer buffer, GinVacuumState
      *gvs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:882,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:884,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:892,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:904,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:906,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:919,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:943,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:944,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:950,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:951,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:955,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 1
    argNames:
    - leaf
    argTypes:
    - disassembledLeaf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 871
    functionDepth: 1
    functionLinenumber: 871
    functionLinenumberEnd: 966
    functionName: computeLeafRecompressWALData
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 2
    functionsReached:
    - elog
    - memcpy
    - dlist_container
    - SHORTALIGN
    - SizeOfGinPostingList
    - palloc
    - dlist_foreach
    linkageType: ''
    returnType: void
    signature: void computeLeafRecompressWALData(disassembledLeaf *leaf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:980,1
    - Dst: GinPageIsCompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:994,1
    - Dst: GinPageSetCompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:995,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:996,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1000,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1002,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1004,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1011,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1014,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1021,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1022,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - buf
    - leaf
    argTypes:
    - Buffer
    - disassembledLeaf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 977
    functionDepth: 4
    functionLinenumber: 977
    functionLinenumberEnd: 1023
    functionName: dataPlaceToPageLeafRecompress
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 2
    functionsReached:
    - memcpy
    - GinDataPageSetDataSize
    - GinPageSetCompressed
    - Assert
    - dlist_container
    - BufferGetPage
    - SizeOfGinPostingList
    - GinPageGetOpaque
    - GinDataLeafPageGetPostingList
    - GinPageIsCompressed
    - dlist_foreach
    linkageType: ''
    returnType: void
    signature: void dataPlaceToPageLeafRecompress(Buffer buf, disassembledLeaf *leaf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1047,1
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1048,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1057,1
    - Dst: dlist_next_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1058,1
    - Dst: dlist_head_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1059,1
    - Dst: dlist_next_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1061,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1063,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1067,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1068,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1073,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1074,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1075,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1078,1
    - Dst: dlist_next_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1082,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1084,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1088,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1089,1
    - Dst: dlist_has_next
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1094,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1097,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1098,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1099,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 5
    argNames:
    - leaf
    - lbound
    - rbound
    - lpage
    - rpage
    argTypes:
    - disassembledLeaf*
    - ItemPointerData
    - ItemPointerData
    - Page
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1033
    functionDepth: 3
    functionLinenumber: 1033
    functionLinenumberEnd: 1100
    functionName: dataPlaceToPageLeafSplit
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 1
    functionsReached:
    - dlist_has_next
    - memcpy
    - Assert
    - dlist_container
    - GinDataPageGetRightBound
    - SizeOfGinPostingList
    - dlist_head_node
    - GinInitPage
    - GinDataLeafPageGetPostingList
    - GinDataPageSetDataSize
    - dlist_next_node
    linkageType: ''
    returnType: void
    signature: "void dataPlaceToPageLeafSplit(disassembledLeaf *leaf,\n\t\t\t\t\t\t
      ItemPointerData lbound, ItemPointerData rbound,\n\t\t\t\t\t\t Page lpage, Page
      rpage)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1124,1
    - Dst: GinNonLeafDataPageGetFreeSpace
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1127,1
    - Dst: dataSplitPageInternal
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 8
    argNames:
    - btree
    - buf
    - stack
    - insertdata
    - updateblkno
    - ptp_workspace
    - newlpage
    - newrpage
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - void*
    - BlockNumber
    - void**
    - Page*
    - Page*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1118
    functionDepth: 4
    functionLinenumber: 1118
    functionLinenumberEnd: 1136
    functionName: dataBeginPlaceToPageInternal
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - GinNonLeafDataPageGetFreeSpace
    - dataSplitPageInternal
    - BufferGetPage
    linkageType: ''
    returnType: GinPlaceToPageRC
    signature: "GinPlaceToPageRC dataBeginPlaceToPageInternal(GinBtree btree, Buffer
      buf, GinBtreeStack *stack,\n\t\t\t\t\t\t\t void *insertdata, BlockNumber updateblkno,\n\t\t\t\t\t\t\t
      void **ptp_workspace,\n\t\t\t\t\t\t\t Page *newlpage, Page *newrpage)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1149,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1154,1
    - Dst: PostingItemSetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1155,1
    - Dst: GinDataPageAddPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1159,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1161,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1163,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1175,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - btree
    - buf
    - stack
    - insertdata
    - updateblkno
    - ptp_workspace
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - void*
    - BlockNumber
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1144
    functionDepth: 4
    functionLinenumber: 1144
    functionLinenumberEnd: 1179
    functionName: dataExecPlaceToPageInternal
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - XLogRegisterBufData
    - BufferGetPage
    - RelationNeedsWAL
    - MarkBufferDirty
    - GinDataPageAddPostingItem
    - XLogRegisterBuffer
    - GinDataPageGetPostingItem
    - PostingItemSetBlockNumber
    linkageType: ''
    returnType: void
    signature: "void dataExecPlaceToPageInternal(GinBtree btree, Buffer buf, GinBtreeStack
      *stack,\n\t\t\t\t\t\t\tvoid *insertdata, BlockNumber updateblkno,\n\t\t\t\t\t\t\tvoid
      *ptp_workspace)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1206,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1208,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1208,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1210,1
    - Dst: dataBeginPlaceToPageLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1211,1
    - Dst: dataBeginPlaceToPageInternal
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 8
    argNames:
    - btree
    - buf
    - stack
    - insertdata
    - updateblkno
    - ptp_workspace
    - newlpage
    - newrpage
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - void*
    - BlockNumber
    - void**
    - Page*
    - Page*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1200
    functionDepth: 5
    functionLinenumber: 1200
    functionLinenumberEnd: 1219
    functionName: dataBeginPlaceToPage
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - dataBeginPlaceToPageInternal
    - Assert
    - GinPageIsLeaf
    - BufferGetPage
    - dataBeginPlaceToPageLeaf
    - GinPageIsData
    linkageType: ''
    returnType: GinPlaceToPageRC
    signature: "GinPlaceToPageRC dataBeginPlaceToPage(GinBtree btree, Buffer buf,
      GinBtreeStack *stack,\n\t\t\t\t\t void *insertdata, BlockNumber updateblkno,\n\t\t\t\t\t
      void **ptp_workspace,\n\t\t\t\t\t Page *newlpage, Page *newrpage)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1235,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1237,1
    - Dst: dataExecPlaceToPageLeaf
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1238,1
    - Dst: dataExecPlaceToPageInternal
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - btree
    - buf
    - stack
    - insertdata
    - updateblkno
    - ptp_workspace
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - void*
    - BlockNumber
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1230
    functionDepth: 5
    functionLinenumber: 1230
    functionLinenumberEnd: 1243
    functionName: dataExecPlaceToPage
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - dataExecPlaceToPageInternal
    - dataExecPlaceToPageLeaf
    - GinPageIsLeaf
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: "void dataExecPlaceToPage(GinBtree btree, Buffer buf, GinBtreeStack
      *stack,\n\t\t\t\t\tvoid *insertdata, BlockNumber updateblkno,\n\t\t\t\t\tvoid
      *ptp_workspace)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1257,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1259,1
    - Dst: PageGetPageSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1262,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1263,1
    - Dst: PageGetTempPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1270,1
    - Dst: PageGetTempPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1271,1
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1272,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1272,1
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1273,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1273,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1279,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1279,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1283,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1283,1
    - Dst: PostingItemSetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1288,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1295,1
    - Dst: GinNonLeafDataPageGetFreeSpace
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1296,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1302,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1302,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1305,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1306,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1306,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1309,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1314,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1315,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1318,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1319,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 7
    argNames:
    - btree
    - origbuf
    - stack
    - insertdata
    - updateblkno
    - newlpage
    - newrpage
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - void*
    - BlockNumber
    - Page*
    - Page*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1251
    functionDepth: 4
    functionLinenumber: 1251
    functionLinenumberEnd: 1327
    functionName: dataSplitPageInternal
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 1
    functionsReached:
    - GinNonLeafDataPageGetFreeSpace
    - memcpy
    - GinDataPageGetRightBound
    - BufferGetPage
    - PageGetTempPage
    - GinPageRightMost
    - GinPageGetOpaque
    - GinInitPage
    - GinDataPageSetDataSize
    - GinDataPageGetPostingItem
    - PageGetPageSize
    - PostingItemSetBlockNumber
    linkageType: ''
    returnType: void
    signature: "void dataSplitPageInternal(GinBtree btree, Buffer origbuf,\n\t\t\t\t\t
      \ GinBtreeStack *stack,\n\t\t\t\t\t  void *insertdata, BlockNumber updateblkno,\n\t\t\t\t\t
      \ Page *newlpage, Page *newrpage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1335,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1336,1
    - Dst: PostingItemSetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1338,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1338,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - btree
    - lbuf
    argTypes:
    - GinBtree
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1332
    functionDepth: 4
    functionLinenumber: 1332
    functionLinenumberEnd: 1342
    functionName: dataPrepareDownlink
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - BufferGetBlockNumber
    - GinDataPageGetRightBound
    - BufferGetPage
    - palloc_object
    - PostingItemSetBlockNumber
    linkageType: ''
    returnType: void
    signature: 'void *

      dataPrepareDownlink(GinBtree btree, Buffer lbuf)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1354,1
    - Dst: PostingItemSetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1355,1
    - Dst: GinDataPageAddPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1356,1
    - Dst: GinDataPageGetRightBound
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1358,1
    - Dst: PostingItemSetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1359,1
    - Dst: GinDataPageAddPostingItem
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 6
    argNames:
    - btree
    - root
    - lblkno
    - lpage
    - rblkno
    - rpage
    argTypes:
    - GinBtree
    - Page
    - BlockNumber
    - Page
    - BlockNumber
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1348
    functionDepth: 2
    functionLinenumber: 1348
    functionLinenumberEnd: 1361
    functionName: ginDataFillRoot
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - GinDataPageAddPostingItem
    - GinDataPageGetRightBound
    - PostingItemSetBlockNumber
    linkageType: ''
    returnType: void
    signature: void ginDataFillRoot(GinBtree btree, Page root, BlockNumber lblkno,
      Page lpage, BlockNumber rblkno, Page rpage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1377,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1378,1
    - Dst: GinPageIsCompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1380,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1385,1
    - Dst: GinDataLeafPageGetPostingListSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1387,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1390,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1396,1
    - Dst: GinNextPostingListSegment
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1398,1
    - Dst: dataLeafPageGetUncompressed
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1413,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1417,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1421,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1422,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1425,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1369
    functionDepth: 2
    functionLinenumber: 1369
    functionLinenumberEnd: 1432
    functionName: disassembleLeaf
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - memcpy
    - palloc
    - GinDataLeafPageGetPostingListSize
    - dlist_init
    - GinNextPostingListSegment
    - palloc_object
    - dlist_push_tail
    - dataLeafPageGetUncompressed
    - GinDataLeafPageGetPostingList
    - GinPageIsCompressed
    linkageType: ''
    returnType: disassembledLeaf
    signature: 'disassembledLeaf *

      disassembleLeaf(Page page)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1456,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1458,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1463,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1467,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1469,1
    - Dst: dlist_has_next
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1477,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1484,1
    - Dst: dlist_next_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1485,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1490,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1495,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1503,1
    - Dst: dlist_has_next
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1510,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1511,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1513,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1515,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1520,1
    - Dst: ginMergeItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1525,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 56
    argCount: 3
    argNames:
    - leaf
    - newItems
    - nNewItems
    argTypes:
    - disassembledLeaf*
    - ItemPointer
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1443
    functionDepth: 3
    functionLinenumber: 1443
    functionLinenumberEnd: 1559
    functionName: addItemsToLeaf
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 1
    functionsReached:
    - ginCompareItemPointers
    - dlist_has_next
    - dlist_is_empty
    - Assert
    - ginMergeItemPointers
    - dlist_container
    - SizeOfGinPostingList
    - palloc_object
    - dlist_push_tail
    - ginPostingListDecode
    - dlist_next_node
    - dlist_foreach
    linkageType: ''
    returnType: bool
    signature: bool addItemsToLeaf(disassembledLeaf *leaf, ItemPointer newItems, int
      nNewItems)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1583,1
    - Dst: dlist_head_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1589,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1593,1
    - Dst: dlist_has_next
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1596,1
    - Dst: dlist_next_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1597,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1610,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1624,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1625,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1632,1
    - Dst: dlist_insert_after
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1638,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1645,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1649,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1652,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1655,1
    - Dst: ginMergeItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1658,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1661,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1671,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1692,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1698,1
    - Dst: dlist_prev_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1699,1
    - Dst: dlist_has_next
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1715,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1716,1
    - Dst: dlist_next_node
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1716,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1717,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1734,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1742,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1744,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1755,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1756,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1757,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 91
    argCount: 2
    argNames:
    - leaf
    - remaining
    argTypes:
    - disassembledLeaf*
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1763
      start: 1570
    functionDepth: 3
    functionLinenumber: 1570
    functionLinenumberEnd: 1763
    functionName: leafRepackItems
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 1
    functionsReached:
    - dlist_has_next
    - memcpy
    - palloc
    - pfree
    - ginMergeItemPointers
    - Assert
    - dlist_container
    - dlist_insert_after
    - SizeOfGinPostingList
    - dlist_prev_node
    - dlist_head_node
    - ginCompressPostingList
    - palloc_object
    - ItemPointerSetInvalid
    - dlist_delete
    - ginPostingListDecode
    - dlist_next_node
    - dlist_foreach
    linkageType: ''
    returnType: bool
    signature: bool leafRepackItems(disassembledLeaf *leaf, ItemPointer remaining)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1788,1
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1789,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1790,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1798,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1805,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1809,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1813,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1817,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1819,1
    - Dst: GinNewBuffer
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1824,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1825,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1826,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1832,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1832,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1834,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1836,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1837,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1839,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1846,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1847,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1849,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1849,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1851,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1853,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1854,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1857,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1859,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1865,1
    - Dst: ginInsertItemPointers
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1872,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 44
    argCount: 5
    argNames:
    - index
    - items
    - nitems
    - buildStats
    - entrybuffer
    argTypes:
    - Relation
    - ItemPointerData*
    - uint32
    - GinStatsData*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1774
    functionDepth: 5
    functionLinenumber: 1774
    functionLinenumberEnd: 1879
    functionName: createPostingTree
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 2
    functionsReached:
    - XLogInsert
    - BufferGetPage
    - SizeOfGinPostingList
    - XLogRegisterData
    - GinPageGetOpaque
    - ginCompressPostingList
    - GinInitPage
    - elog
    - memcpy
    - XLogBeginInsert
    - pfree
    - BufferGetBlockNumber
    - GinNewBuffer
    - UnlockReleaseBuffer
    - GinDataLeafPageGetPostingList
    - GinDataPageSetDataSize
    - PageSetLSN
    - MarkBufferDirty
    - XLogRegisterBuffer
    - ginInsertItemPointers
    - PredicateLockPageSplit
    - START_CRIT_SECTION
    - PageRestoreTempPage
    - RelationNeedsWAL
    - palloc
    - END_CRIT_SECTION
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber createPostingTree(Relation index, ItemPointerData *items,
      uint32 nitems,\n\t\t\t\t  GinStatsData *buildStats, Buffer entrybuffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - btree
    - index
    - rootBlkno
    argTypes:
    - GinBtree
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1881
    functionDepth: 0
    functionLinenumber: 1881
    functionLinenumberEnd: 1902
    functionName: ginPrepareDataScan
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void ginPrepareDataScan(GinBtree btree, Relation index, BlockNumber
      rootBlkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginPrepareDataScan
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1916,1
    - Dst: ginFindLeafPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1926,1
    - Dst: ginInsertValue
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1928,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - index
    - rootBlkno
    - items
    - nitem
    - buildStats
    argTypes:
    - Relation
    - BlockNumber
    - ItemPointerData*
    - uint32
    - GinStatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1930
      start: 1907
    functionDepth: 9
    functionLinenumber: 1907
    functionLinenumberEnd: 1930
    functionName: ginInsertItemPointers
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 3
    functionsReached:
    - ginFindLeafPage
    - ginPrepareDataScan
    - ginInsertValue
    linkageType: ''
    returnType: void
    signature: "void ginInsertItemPointers(Relation index, BlockNumber rootBlkno,\n\t\t\t\t\t
      \ ItemPointerData *items, uint32 nitem,\n\t\t\t\t\t  GinStatsData *buildStats)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginPrepareDataScan
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1940,1
    - Dst: ginFindLeafPage
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - btree
    - index
    - rootBlkno
    argTypes:
    - GinBtree
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1947
      start: 1935
    functionDepth: 6
    functionLinenumber: 1935
    functionLinenumberEnd: 1947
    functionName: ginScanBeginPostingTree
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 2
    functionsReached:
    - ginFindLeafPage
    - ginPrepareDataScan
    linkageType: ''
    returnType: GinBtreeStack
    signature: 'GinBtreeStack *

      ginScanBeginPostingTree(GinBtree btree, Relation index, BlockNumber rootBlkno)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:42,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:43,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:44,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:45,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:47,1
    - Dst: repalloc_huge
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:50,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:51,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:59,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - existing
    - newdata
    - arg
    argTypes:
    - RBTNode*
    - RBTNode*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 68
    functionName: ginCombineData
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 0
    functionsReached:
    - ginCompareItemPointers
    - errcode
    - Assert
    - GetMemoryChunkSpace
    - ereport
    - repalloc_huge
    - errhint
    - errmsg
    linkageType: ''
    returnType: void
    signature: void ginCombineData(RBTNode *existing, const RBTNode *newdata, void
      *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginCompareAttEntries
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - RBTNode*
    - RBTNode*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: cmpEntryAccumulator
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 0
    functionsReached:
    - ginCompareAttEntries
    linkageType: ''
    returnType: int
    signature: int cmpEntryAccumulator(const RBTNode *a, const RBTNode *b, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:96,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 106
    functionName: ginAllocEntryAccumulator
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkSpace
    - palloc_array
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      ginAllocEntryAccumulator(void *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbt_create
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - accum
    argTypes:
    - BuildAccumulator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 121
    functionName: ginInitBA
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 5
    functionsReached:
    - rbt_create
    linkageType: ''
    returnType: void
    signature: void ginInitBA(BuildAccumulator *accum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:133,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:138,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:139,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - accum
    - attnum
    - value
    argTypes:
    - BuildAccumulator*
    - OffsetNumber
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 142
    functionName: getDatumCopy
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkSpace
    - TupleDescCompactAttr
    - datumCopy
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum getDatumCopy(BuildAccumulator *accum, OffsetNumber attnum, Datum
      value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rbt_insert
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:166,1
    - Dst: getDatumCopy
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:176,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:180,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - accum
    - heapptr
    - attnum
    - key
    - category
    argTypes:
    - BuildAccumulator*
    - ItemPointer
    - OffsetNumber
    - Datum
    - GinNullCategory
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 190
    functionName: ginInsertBAEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkSpace
    - getDatumCopy
    - rbt_insert
    - palloc_array
    linkageType: ''
    returnType: void
    signature: "void ginInsertBAEntry(BuildAccumulator *accum,\n\t\t\t\t ItemPointer
      heapptr, OffsetNumber attnum,\n\t\t\t\t Datum key, GinNullCategory category)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:219,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:219,1
    - Dst: ginInsertBAEntry
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:237,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 6
    argNames:
    - accum
    - heapptr
    - attnum
    - entries
    - categories
    - nentries
    argTypes:
    - BuildAccumulator*
    - ItemPointer
    - OffsetNumber
    - Datum*
    - GinNullCategory*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 208
    functionDepth: 4
    functionLinenumber: 208
    functionLinenumberEnd: 242
    functionName: ginInsertBAEntries
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 2
    functionsReached:
    - Assert
    - ginInsertBAEntry
    - ItemPointerIsValid
    linkageType: ''
    returnType: void
    signature: "void ginInsertBAEntries(BuildAccumulator *accum,\n\t\t\t\t   ItemPointer
      heapptr, OffsetNumber attnum,\n\t\t\t\t   Datum *entries, GinNullCategory *categories,\n\t\t\t\t
      \  int32 nentries)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 252
    functionName: qsortCompareItemPointers
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 0
    functionsReached:
    - ginCompareItemPointers
    - Assert
    linkageType: ''
    returnType: int
    signature: int qsortCompareItemPointers(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbt_begin_iterate
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - accum
    argTypes:
    - BuildAccumulator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 259
    functionName: ginBeginBAScan
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 4
    functionsReached:
    - rbt_begin_iterate
    linkageType: ''
    returnType: void
    signature: void ginBeginBAScan(BuildAccumulator *accum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rbt_iterate
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:285,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - accum
    - attnum
    - key
    - category
    - n
    argTypes:
    - BuildAccumulator*
    - OffsetNumber*
    - Datum*
    - GinNullCategory*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 292
    functionName: ginGetBAEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 4
    functionsReached:
    - Assert
    - qsort
    - rbt_iterate
    linkageType: ''
    returnType: ItemPointerData
    signature: "ItemPointerData *\nginGetBAEntry(BuildAccumulator *accum,\n\t\t\t
      \ OffsetNumber *attnum, Datum *key, GinNullCategory *category,\n\t\t\t  uint32
      *n)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:31,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:33,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:34,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:36,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:37,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:39,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - record
    - block_id
    argTypes:
    - XLogReaderState*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 24
    functionDepth: 4
    functionLinenumber: 24
    functionLinenumberEnd: 41
    functionName: ginRedoClearIncompleteSplit
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - BufferGetPage
    - GinPageGetOpaque
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void ginRedoClearIncompleteSplit(XLogReaderState *record, uint8 block_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:47,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:52,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:53,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:55,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:57,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:60,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:60,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:62,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:64,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:66,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 68
    functionName: ginRedoCreatePTree
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XLogInitBufferForRedo
    - BufferGetPage
    - PageSetLSN
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - GinDataLeafPageGetPostingList
    - GinDataPageSetDataSize
    - GinInitBuffer
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void ginRedoCreatePTree(XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:73,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:81,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:81,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:82,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:82,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:83,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:83,1
    - Dst: GinSetDownlink
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:84,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:89,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:90,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:90,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:91,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:96,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:96,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:102,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - buffer
    - isLeaf
    - rightblkno
    - rdata
    argTypes:
    - Buffer
    - bool
    - BlockNumber
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 106
    functionName: ginRedoInsertEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - GinPageIsLeaf
    - BufferGetPage
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - GinSetDownlink
    - PageIndexTupleDelete
    - PageAddItem
    - BufferGetTag
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: void ginRedoInsertEntry(Buffer buffer, bool isLeaf, BlockNumber rightblkno,
      void *rdata)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: GinPageIsCompressed
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:132,1
    - Dst: GinDataPageGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:134,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:135,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:148,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:152,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:154,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:154,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:161,1
    - Dst: GinPageSetCompressed
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:162,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:163,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:166,1
    - Dst: GinDataLeafPageGetPostingListSize
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:168,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:191,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:192,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:204,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:214,1
    - Dst: PageGetSpecialPointer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:214,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:215,1
    - Dst: GinNextPostingListSegment
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:218,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:231,1
    - Dst: ginMergeItemPointers
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:236,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:240,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:242,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:255,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:267,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:268,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:283,1
    - Dst: PageGetSpecialPointer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:283,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:290,1
    - Dst: PageGetSpecialPointer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:290,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:291,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:309,1
    - Dst: PageGetSpecialPointer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:309,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:310,1
    - Dst: GinDataLeafPageGetPostingList
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:314,1
    - Dst: GinDataPageSetDataSize
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:315,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 94
    argCount: 2
    argNames:
    - page
    - data
    argTypes:
    - Page
    - ginxlogRecompressDataLeaf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 316
    functionName: ginRedoRecompress
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - ginPostingListDecode
    - elog
    - PageGetSpecialPointer
    - memcpy
    - GinDataPageSetDataSize
    - GinPageSetCompressed
    - Assert
    - GinDataLeafPageGetPostingListSize
    - ginMergeItemPointers
    - SHORTALIGN
    - SizeOfGinPostingList
    - GinDataPageGetData
    - GinNextPostingListSegment
    - GinPageGetOpaque
    - ginCompressPostingList
    - palloc
    - GinDataLeafPageGetPostingList
    - GinPageIsCompressed
    linkageType: ''
    returnType: void
    signature: void ginRedoRecompress(Page page, ginxlogRecompressDataLeaf *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:321,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:327,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:327,1
    - Dst: ginRedoRecompress
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:329,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:336,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:336,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:339,1
    - Dst: PostingItemSetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:340,1
    - Dst: GinDataPageAddPostingItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - buffer
    - isLeaf
    - rightblkno
    - rdata
    argTypes:
    - Buffer
    - bool
    - BlockNumber
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 318
    functionDepth: 4
    functionLinenumber: 318
    functionLinenumberEnd: 344
    functionName: ginRedoInsertData
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - GinPageIsLeaf
    - BufferGetPage
    - ginRedoRecompress
    - GinDataPageAddPostingItem
    - GinDataPageGetPostingItem
    - PostingItemSetBlockNumber
    linkageType: ''
    returnType: void
    signature: void ginRedoInsertData(Buffer buffer, bool isLeaf, BlockNumber rightblkno,
      void *rdata)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:350,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:364,1
    - Dst: BlockIdGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:367,1
    - Dst: BlockIdGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:370,1
    - Dst: ginRedoClearIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:372,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:375,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:377,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:384,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:384,1
    - Dst: ginRedoInsertData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:389,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:389,1
    - Dst: ginRedoInsertEntry
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:390,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:393,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:394,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:396,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:397,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 346
    functionDepth: 5
    functionLinenumber: 346
    functionLinenumberEnd: 398
    functionName: ginRedoInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - ginRedoInsertData
    - XLogRecGetBlockData
    - BlockIdGetBlockNumber
    - XLogReadBufferForRedo
    - Assert
    - XLogRecGetData
    - BufferGetPage
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - GinPageIsData
    - ginRedoInsertEntry
    - ginRedoClearIncompleteSplit
    linkageType: ''
    returnType: void
    signature: void ginRedoInsert(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:403,1
    - Dst: ginRedoClearIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:415,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:417,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:418,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:420,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:421,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:425,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:426,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:427,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:430,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:431,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 400
    functionDepth: 5
    functionLinenumber: 400
    functionLinenumberEnd: 432
    functionName: ginRedoSplit
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogReadBufferForRedo
    - XLogRecGetData
    - UnlockReleaseBuffer
    - ginRedoClearIncompleteSplit
    linkageType: ''
    returnType: void
    signature: void ginRedoSplit(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:443,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:445,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 448
    functionName: ginRedoVacuumPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogReadBufferForRedo
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void ginRedoVacuumPage(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:456,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:458,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:462,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:464,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:464,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:465,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:465,1
    - Dst: ginRedoRecompress
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:467,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:468,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:469,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:471,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:472,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 450
    functionDepth: 4
    functionLinenumber: 450
    functionLinenumberEnd: 473
    functionName: ginRedoVacuumDataLeafPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - XLogReadBufferForRedo
    - GinPageIsLeaf
    - BufferGetPage
    - PageSetLSN
    - ginRedoRecompress
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - GinPageIsData
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void ginRedoVacuumDataLeafPage(XLogReaderState *record)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:479,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:489,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:491,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:492,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:492,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:493,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:494,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:495,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:498,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:500,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:501,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:501,1
    - Dst: GinPageSetDeleted
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:502,1
    - Dst: GinPageSetDeleteXid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:503,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:504,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:505,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:508,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:510,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:511,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:511,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:512,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:512,1
    - Dst: GinPageDeletePostingItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:513,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:514,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:515,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:518,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:519,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:520,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:521,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:522,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:523,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 524
    functionName: ginRedoDeletePage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - GinPageDeletePostingItem
    - GinPageSetDeleteXid
    - GinPageSetDeleted
    - Assert
    - XLogReadBufferForRedo
    - BufferGetPage
    - GinPageIsLeaf
    - GinPageGetOpaque
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - GinPageIsData
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void ginRedoDeletePage(XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:530,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:540,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:541,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:541,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:542,1
    - Dst: GinInitMetabuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:544,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:545,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:545,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:546,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:547,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:554,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:556,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:564,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:567,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:570,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:570,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:574,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:576,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:583,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:588,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:590,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:591,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:593,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:594,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:601,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:603,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:605,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:607,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:608,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:610,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:611,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:614,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 526
    functionDepth: 5
    functionLinenumber: 526
    functionLinenumberEnd: 615
    functionName: ginRedoUpdateMetapage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageIsEmpty
    - GinPageGetOpaque
    - XLogRecGetBlockData
    - elog
    - GinInitMetabuffer
    - memcpy
    - Assert
    - BufferGetBlockNumber
    - XLogInitBufferForRedo
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - PageSetLSN
    - IndexTupleSize
    - GinPageGetMeta
    - PageAddItem
    - BufferIsValid
    - MarkBufferDirty
    - XLogRecGetData
    - OffsetNumberNext
    linkageType: ''
    returnType: void
    signature: void ginRedoUpdateMetapage(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:621,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:633,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:634,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:636,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:637,1
    - Dst: GinPageSetFullRow
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:641,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:642,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:646,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:649,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:654,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:656,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:659,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:664,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:666,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:667,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:669,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 617
    functionDepth: 5
    functionLinenumber: 617
    functionLinenumberEnd: 670
    functionName: ginRedoInsertListPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecGetBlockData
    - Assert
    - XLogInitBufferForRedo
    - BufferGetPage
    - PageAddItem
    - GinPageSetFullRow
    - GinPageGetOpaque
    - PageSetLSN
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - GinInitBuffer
    - IndexTupleSize
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void ginRedoInsertListPage(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:676,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:681,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:682,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:682,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:683,1
    - Dst: GinInitMetabuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:685,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:687,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:687,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:688,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:689,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:711,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:712,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:713,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:715,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:716,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:718,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:720,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 672
    functionDepth: 5
    functionLinenumber: 672
    functionLinenumberEnd: 721
    functionName: ginRedoDeleteListPages
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - GinPageGetMeta
    - GinInitMetabuffer
    - memcpy
    - Assert
    - BufferGetBlockNumber
    - XLogInitBufferForRedo
    - BufferGetPage
    - PageSetLSN
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - GinInitBuffer
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void ginRedoDeleteListPages(XLogReaderState *record)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:726,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:735,1
    - Dst: ginRedoCreatePTree
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:739,1
    - Dst: ginRedoInsert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:742,1
    - Dst: ginRedoSplit
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:745,1
    - Dst: ginRedoVacuumPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:748,1
    - Dst: ginRedoVacuumDataLeafPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:751,1
    - Dst: ginRedoDeletePage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:754,1
    - Dst: ginRedoUpdateMetapage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:757,1
    - Dst: ginRedoInsertListPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:760,1
    - Dst: ginRedoDeleteListPages
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:763,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:766,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:768,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:769,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 723
    functionDepth: 6
    functionLinenumber: 723
    functionLinenumberEnd: 770
    functionName: gin_redo
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - ginRedoCreatePTree
    - ginRedoInsert
    - elog
    - ginRedoDeletePage
    - MemoryContextReset
    - ginRedoSplit
    - ginRedoVacuumPage
    - ginRedoDeleteListPages
    - ginRedoVacuumDataLeafPage
    - ginRedoUpdateMetapage
    - MemoryContextSwitchTo
    - XLogRecGetInfo
    - ginRedoInsertListPage
    linkageType: ''
    returnType: void
    signature: void gin_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 778
    functionName: gin_xlog_startup
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void gin_xlog_startup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 780
    functionDepth: 1
    functionLinenumber: 780
    functionLinenumberEnd: 785
    functionName: gin_xlog_cleanup
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void gin_xlog_cleanup(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mask_page_lsn_and_checksum
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:797,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:798,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:800,1
    - Dst: mask_page_content
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:808,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:810,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 790
    functionDepth: 1
    functionLinenumber: 790
    functionLinenumberEnd: 811
    functionName: gin_mask
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - mask_page_lsn_and_checksum
    - mask_unused_space
    - mask_page_hint_bits
    - mask_page_content
    - GinPageGetOpaque
    linkageType: ''
    returnType: void
    signature: void gin_mask(char *pagedata, BlockNumber blkno)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:62,1
    - Dst: index_form_tuple
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:68,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:80,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:82,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:86,1
    - Dst: GinCategoryOffset
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:87,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:88,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:91,1
    - Dst: GinSetPostingOffset
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:93,1
    - Dst: GinSetNPosting
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:94,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:107,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:108,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:109,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:111,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:112,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:119,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:121,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:127,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:127,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:128,1
    - Dst: GinGetPosting
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:139,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:149,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:149,1
    - Dst: GinSetNullCategory
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:150,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 8
    argNames:
    - ginstate
    - attnum
    - key
    - category
    - data
    - dataSize
    - nipd
    - errorTooBig
    argTypes:
    - GinState*
    - OffsetNumber
    - Datum
    - GinNullCategory
    - Pointer
    - Size
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 153
    functionName: GinFormTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 4
    functionsReached:
    - GinGetPosting
    - errcode
    - repalloc
    - IndexTupleHasNulls
    - RelationGetRelationName
    - UInt16GetDatum
    - memcpy
    - Assert
    - pfree
    - SHORTALIGN
    - GinSetPostingOffset
    - errmsg
    - MAXALIGN
    - GinSetNullCategory
    - index_form_tuple
    - IndexTupleSize
    - GinCategoryOffset
    - ereport
    - memset
    - Max
    - GinSetNPosting
    linkageType: ''
    returnType: IndexTuple
    signature: "IndexTuple GinFormTuple(GinState *ginstate,\n\t\t\t OffsetNumber attnum,
      Datum key, GinNullCategory category,\n\t\t\t Pointer data, Size dataSize, int
      nipd,\n\t\t\t bool errorTooBig)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GinGetPosting
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:165,1
    - Dst: GinGetNPosting
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:166,1
    - Dst: GinItupIsCompressed
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:170,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:174,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:176,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:181,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:186,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - ginstate
    - attnum
    - itup
    - nitems
    argTypes:
    - GinState*
    - OffsetNumber
    - IndexTuple
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 191
    functionName: ginReadTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 3
    functionsReached:
    - elog
    - memcpy
    - GinGetPosting
    - palloc_array
    - palloc
    - GinItupIsCompressed
    - ginPostingListDecode
    - GinGetNPosting
    linkageType: ''
    returnType: ItemPointer
    signature: "ItemPointer ginReadTuple(GinState *ginstate, OffsetNumber attnum,
      IndexTuple itup,\n\t\t\t int *nitems)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:205,1
    - Dst: GinIsPostingTree
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:205,1
    - Dst: GinGetPostingOffset
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:208,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:210,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:211,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:212,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:220,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:220,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:221,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:221,1
    - Dst: GinSetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - itup
    - page
    - childblk
    argTypes:
    - IndexTuple
    - Page
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 228
    functionName: GinFormInteriorTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - GinGetPostingOffset
    - memcpy
    - GinIsPostingTree
    - GinPageIsLeaf
    - GinSetDownlink
    - palloc
    - MAXALIGN
    - IndexTupleSize
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple GinFormInteriorTuple(IndexTuple itup, Page page, BlockNumber
      childblk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:237,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:239,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 240
    functionName: getRightMostTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - PageGetMaxOffsetNumber
    - PageGetItem
    - PageGetItemId
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple getRightMostTuple(Page page)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:250,1
    - Dst: getRightMostTuple
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:253,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:254,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:255,1
    - Dst: ginCompareAttEntries
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - btree
    - page
    argTypes:
    - GinBtree
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 242
    functionDepth: 5
    functionLinenumber: 242
    functionLinenumberEnd: 263
    functionName: entryIsMoveRight
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - gintuple_get_key
    - ginCompareAttEntries
    - gintuple_get_attrnum
    - GinPageRightMost
    - getRightMostTuple
    linkageType: ''
    returnType: bool
    signature: bool entryIsMoveRight(GinBtree btree, Page page)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:277,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:279,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:280,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:280,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:285,1
    - Dst: GinBtree::getLeftMostChild
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:286,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:291,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:299,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:310,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:310,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:311,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:312,1
    - Dst: ginCompareAttEntries
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:323,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:323,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:332,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:335,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:336,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:336,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:337,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - btree
    - stack
    argTypes:
    - GinBtree
    - GinBtreeStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 269
    functionDepth: 5
    functionLinenumber: 269
    functionLinenumberEnd: 338
    functionName: entryLocateEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - gintuple_get_key
    - Assert
    - GinBtree::getLeftMostChild
    - GinPageIsLeaf
    - BufferGetPage
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - gintuple_get_attrnum
    - ginCompareAttEntries
    - GinPageRightMost
    - GinPageIsData
    - GinGetDownlink
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber entryLocateEntry(GinBtree btree, GinBtreeStack *stack)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:348,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:352,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:353,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:353,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:362,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:381,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:381,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:382,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:383,1
    - Dst: ginCompareAttEntries
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:384,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - btree
    - stack
    argTypes:
    - GinBtree
    - GinBtreeStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 345
    functionDepth: 5
    functionLinenumber: 345
    functionLinenumberEnd: 402
    functionName: entryLocateLeafEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - gintuple_get_key
    - Assert
    - GinPageIsLeaf
    - BufferGetPage
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - gintuple_get_attrnum
    - ginCompareAttEntries
    - GinPageIsData
    linkageType: ''
    returnType: bool
    signature: bool entryLocateLeafEntry(GinBtree btree, GinBtreeStack *stack)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:411,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:411,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:412,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:412,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:417,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:417,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:418,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:427,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:427,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:428,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:437,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:437,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:438,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 4
    argNames:
    - btree
    - page
    - blkno
    - storedOff
    argTypes:
    - GinBtree
    - Page
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 443
    functionName: entryFindChildPtr
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - Assert
    - GinPageIsLeaf
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - GinPageIsData
    - GinGetDownlink
    linkageType: ''
    returnType: OffsetNumber
    signature: OffsetNumber entryFindChildPtr(GinBtree btree, Page page, BlockNumber
      blkno, OffsetNumber storedOff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:450,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:451,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:452,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:452,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:454,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:454,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - btree
    - page
    argTypes:
    - GinBtree
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 445
    functionDepth: 2
    functionLinenumber: 445
    functionLinenumberEnd: 456
    functionName: entryGetLeftMostPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - Assert
    - GinPageIsLeaf
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - GinPageIsData
    - GinGetDownlink
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber entryGetLeftMostPage(GinBtree btree, Page page)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:464,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:466,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:467,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:467,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:471,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:471,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:473,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:473,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:476,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:476,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - btree
    - buf
    - 'off'
    - insertData
    argTypes:
    - GinBtree
    - Buffer
    - OffsetNumber
    - GinBtreeEntryInsertData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 458
    functionDepth: 4
    functionLinenumber: 458
    functionLinenumberEnd: 482
    functionName: entryIsEnoughSpace
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - Assert
    - PageGetItemId
    - BufferGetPage
    - PageGetItem
    - MAXALIGN
    - GinPageIsData
    - PageGetFreeSpace
    - IndexTupleSize
    linkageType: ''
    returnType: bool
    signature: "bool entryIsEnoughSpace(GinBtree btree, Buffer buf, OffsetNumber off,\n\t\t\t\t
      \  GinBtreeEntryInsertData *insertData)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:493,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:494,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:494,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:498,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:498,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:499,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:502,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:504,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:504,1
    - Dst: GinSetDownlink
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:506,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - btree
    - page
    - 'off'
    - insertData
    - updateblkno
    argTypes:
    - GinBtree
    - Page
    - OffsetNumber
    - GinBtreeEntryInsertData*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 508
    functionName: entryPreparePage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - Assert
    - GinPageIsLeaf
    - PageGetItemId
    - GinSetDownlink
    - PageIndexTupleDelete
    - PageGetItem
    - GinPageIsData
    linkageType: ''
    returnType: void
    signature: "void entryPreparePage(GinBtree btree, Page page, OffsetNumber off,\n\t\t\t\t
      GinBtreeEntryInsertData *insertData, BlockNumber updateblkno)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: entryIsEnoughSpace
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:536,1
    - Dst: entrySplitPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 8
    argNames:
    - btree
    - buf
    - stack
    - insertPayload
    - updateblkno
    - ptp_workspace
    - newlpage
    - newrpage
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - void*
    - BlockNumber
    - void**
    - Page*
    - Page*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 526
    functionDepth: 5
    functionLinenumber: 526
    functionLinenumberEnd: 545
    functionName: entryBeginPlaceToPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - entrySplitPage
    - entryIsEnoughSpace
    linkageType: ''
    returnType: GinPlaceToPageRC
    signature: "GinPlaceToPageRC entryBeginPlaceToPage(GinBtree btree, Buffer buf,
      GinBtreeStack *stack,\n\t\t\t\t\t  void *insertPayload, BlockNumber updateblkno,\n\t\t\t\t\t
      \ void **ptp_workspace,\n\t\t\t\t\t  Page *newlpage, Page *newrpage)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:559,1
    - Dst: entryPreparePage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:563,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:565,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:567,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:570,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:571,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:573,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:575,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:587,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:588,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:590,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:591,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - btree
    - buf
    - stack
    - insertPayload
    - updateblkno
    - ptp_workspace
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - void*
    - BlockNumber
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 553
    functionDepth: 4
    functionLinenumber: 553
    functionLinenumberEnd: 593
    functionName: entryExecPlaceToPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRegisterBufData
    - entryPreparePage
    - BufferGetPage
    - PageAddItem
    - RelationNeedsWAL
    - RelationGetRelationName
    - MarkBufferDirty
    - XLogRegisterBuffer
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void entryExecPlaceToPage(GinBtree btree, Buffer buf, GinBtreeStack
      *stack,\n\t\t\t\t\t void *insertPayload, BlockNumber updateblkno,\n\t\t\t\t\t
      void *ptp_workspace)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PageGetTempPageCopy
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:618,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:618,1
    - Dst: PageGetTempPageCopy
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:619,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:619,1
    - Dst: PageGetPageSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:620,1
    - Dst: entryPreparePage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:623,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:629,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:635,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:635,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:636,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:641,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:641,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:642,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:642,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:643,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:650,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:650,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:651,1
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:660,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:660,1
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:661,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:661,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:684,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:684,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:687,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:687,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:688,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:689,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:690,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:690,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 44
    argCount: 7
    argNames:
    - btree
    - origbuf
    - stack
    - insertData
    - updateblkno
    - newlpage
    - newrpage
    argTypes:
    - GinBtree
    - Buffer
    - GinBtreeStack*
    - GinBtreeEntryInsertData*
    - BlockNumber
    - Page*
    - Page*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 601
    functionDepth: 4
    functionLinenumber: 601
    functionLinenumberEnd: 696
    functionName: entrySplitPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 1
    functionsReached:
    - PageGetTempPageCopy
    - elog
    - memcpy
    - entryPreparePage
    - BufferGetPage
    - PageGetItemId
    - PageAddItem
    - PageGetMaxOffsetNumber
    - PageGetItem
    - GinPageGetOpaque
    - RelationGetRelationName
    - GinInitPage
    - MAXALIGN
    - PageGetPageSize
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void entrySplitPage(GinBtree btree, Buffer origbuf,\n\t\t\t   GinBtreeStack
      *stack,\n\t\t\t   GinBtreeEntryInsertData *insertData,\n\t\t\t   BlockNumber
      updateblkno,\n\t\t\t   Page *newlpage, Page *newrpage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:705,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:706,1
    - Dst: getRightMostTuple
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:709,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:711,1
    - Dst: GinFormInteriorTuple
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - btree
    - lbuf
    argTypes:
    - GinBtree
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 701
    functionDepth: 4
    functionLinenumber: 701
    functionLinenumberEnd: 716
    functionName: entryPrepareDownlink
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - GinFormInteriorTuple
    - BufferGetBlockNumber
    - BufferGetPage
    - palloc_object
    - getRightMostTuple
    linkageType: ''
    returnType: void
    signature: 'void *

      entryPrepareDownlink(GinBtree btree, Buffer lbuf)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GinFormInteriorTuple
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:729,1
    - Dst: getRightMostTuple
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:729,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:730,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:730,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:731,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:732,1
    - Dst: GinFormInteriorTuple
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:734,1
    - Dst: getRightMostTuple
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:734,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:735,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:735,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:736,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:737,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - btree
    - root
    - lblkno
    - lpage
    - rblkno
    - rpage
    argTypes:
    - GinBtree
    - Page
    - BlockNumber
    - Page
    - BlockNumber
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 722
    functionDepth: 3
    functionLinenumber: 722
    functionLinenumberEnd: 738
    functionName: ginEntryFillRoot
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 0
    functionsReached:
    - elog
    - pfree
    - GinFormInteriorTuple
    - PageAddItem
    - getRightMostTuple
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void ginEntryFillRoot(GinBtree btree, Page root,\n\t\t\t\t BlockNumber
      lblkno, Page lpage,\n\t\t\t\t BlockNumber rblkno, Page rpage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginentrypage.c:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 5
    argNames:
    - btree
    - attnum
    - key
    - category
    - ginstate
    argTypes:
    - GinBtree
    - OffsetNumber
    - Datum
    - GinNullCategory
    - GinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 746
    functionDepth: 0
    functionLinenumber: 746
    functionLinenumberEnd: 774
    functionName: ginPrepareEntryScan
    functionSourceFile: /src/postgres/src/backend/access/gin/ginentrypage.c
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void ginPrepareEntryScan(GinBtree btree, OffsetNumber attnum,\n\t\t\t\t\tDatum
      key, GinNullCategory category,\n\t\t\t\t\tGinState *ginstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/access/sequence/sequence.c:41,1
    - Dst: validate_relation_as_sequence
      Src: /src/postgres/src/backend/access/sequence/sequence.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: sequence_open
    functionSourceFile: /src/postgres/src/backend/access/sequence/sequence.c
    functionUses: 0
    functionsReached:
    - validate_relation_as_sequence
    - relation_open
    linkageType: ''
    returnType: Relation
    signature: Relation sequence_open(Oid relationId, LOCKMODE lockmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: relation_close
      Src: /src/postgres/src/backend/access/sequence/sequence.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - relation
    - lockmode
    argTypes:
    - Relation
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: sequence_close
    functionSourceFile: /src/postgres/src/backend/access/sequence/sequence.c
    functionUses: 0
    functionsReached:
    - relation_close
    linkageType: ''
    returnType: void
    signature: void sequence_close(Relation relation, LOCKMODE lockmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/sequence/sequence.c:73,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/sequence/sequence.c:74,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/sequence/sequence.c:75,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/sequence/sequence.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - r
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 77
    functionName: validate_relation_as_sequence
    functionSourceFile: /src/postgres/src/backend/access/sequence/sequence.c
    functionUses: 1
    functionsReached:
    - ereport
    - errmsg
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: void
    signature: void validate_relation_as_sequence(Relation r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: heapam_slot_callbacks
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TupleTableSlotOps
    signature: 'TupleTableSlotOps *

      heapam_slot_callbacks(Relation relation)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:97,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:97,1
    - Dst: heap_fetch
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:100,1
    - Dst: ExecStorePinnedBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:103,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - relation
    - tid
    - snapshot
    - slot
    argTypes:
    - Relation
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 110
    functionName: heapam_fetch_row_version
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - TTS_IS_BUFFERTUPLE
    - Assert
    - heap_fetch
    - ExecStorePinnedBufferHeapTuple
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: "bool heapam_fetch_row_version(Relation relation,\n\t\t\t\t\t\t ItemPointer
      tid,\n\t\t\t\t\t\t Snapshot snapshot,\n\t\t\t\t\t\t TupleTableSlot *slot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:117,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - scan
    - tid
    argTypes:
    - TableScanDesc
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: heapam_tuple_tid_valid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumber
    - ItemPointerIsValid
    linkageType: ''
    returnType: bool
    signature: bool heapam_tuple_tid_valid(TableScanDesc scan, ItemPointer tid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:128,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:129,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:129,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:135,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:136,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - slot
    - snapshot
    argTypes:
    - Relation
    - TupleTableSlot*
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 141
    functionName: heapam_tuple_satisfies_snapshot
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - TTS_IS_BUFFERTUPLE
    - Assert
    - LockBuffer
    - HeapTupleSatisfiesVisibility
    - BufferIsValid
    linkageType: ''
    returnType: bool
    signature: "bool heapam_tuple_satisfies_snapshot(Relation rel, TupleTableSlot
      *slot,\n\t\t\t\t\t\t\t\tSnapshot snapshot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:154,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:157,1
    - Dst: heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:161,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:162,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - relation
    - slot
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - TupleTableSlot*
    - CommandId
    - uint32
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 166
    functionName: heapam_tuple_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - heap_insert
    - ItemPointerCopy
    - pfree
    - ExecFetchSlotHeapTuple
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void heapam_tuple_insert(Relation relation, TupleTableSlot *slot,
      CommandId cid,\n\t\t\t\t\tuint32 options, BulkInsertState bistate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:174,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:177,1
    - Dst: HeapTupleHeaderSetSpeculativeToken
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:180,1
    - Dst: heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:184,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:185,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - relation
    - slot
    - cid
    - options
    - bistate
    - specToken
    argTypes:
    - Relation
    - TupleTableSlot*
    - CommandId
    - uint32
    - BulkInsertState
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 189
    functionName: heapam_tuple_insert_speculative
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - heap_insert
    - ItemPointerCopy
    - pfree
    - HeapTupleHeaderSetSpeculativeToken
    - ExecFetchSlotHeapTuple
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void heapam_tuple_insert_speculative(Relation relation, TupleTableSlot
      *slot,\n\t\t\t\t\t\t\t\tCommandId cid, uint32 options,\n\t\t\t\t\t\t\t\tBulkInsertState
      bistate, uint32 specToken)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: heap_finish_speculative
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:197,1
    - Dst: heap_abort_speculative
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - relation
    - slot
    - specToken
    - succeeded
    argTypes:
    - Relation
    - TupleTableSlot*
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 200
    functionName: heapam_tuple_complete_speculative
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - heap_finish_speculative
    - heap_abort_speculative
    linkageType: ''
    returnType: void
    signature: "void heapam_tuple_complete_speculative(Relation relation, TupleTableSlot
      *slot,\n\t\t\t\t\t\t\t\t  uint32 specToken, bool succeeded)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heap_delete
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - relation
    - tid
    - cid
    - options
    - snapshot
    - crosscheck
    - wait
    - tmfd
    argTypes:
    - Relation
    - ItemPointer
    - CommandId
    - uint32
    - Snapshot
    - Snapshot
    - bool
    - TM_FailureData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 214
    functionName: heapam_tuple_delete
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - heap_delete
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heapam_tuple_delete(Relation relation, ItemPointer tid,
      CommandId cid,\n\t\t\t\t\tuint32 options, Snapshot snapshot, Snapshot crosscheck,\n\t\t\t\t\tbool
      wait, TM_FailureData *tmfd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:225,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:229,1
    - Dst: heap_update
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:232,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:249,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:253,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:255,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:259,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 11
    argNames:
    - relation
    - otid
    - slot
    - cid
    - options
    - snapshot
    - crosscheck
    - wait
    - tmfd
    - lockmode
    - update_indexes
    argTypes:
    - Relation
    - ItemPointer
    - TupleTableSlot*
    - CommandId
    - uint32
    - Snapshot
    - Snapshot
    - bool
    - TM_FailureData*
    - LockTupleMode*
    - TU_UpdateIndexes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 262
    functionName: heapam_tuple_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsHeapOnly
    - ItemPointerCopy
    - Assert
    - pfree
    - heap_update
    - ExecFetchSlotHeapTuple
    - RelationGetRelid
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heapam_tuple_update(Relation relation, ItemPointer otid,
      TupleTableSlot *slot,\n\t\t\t\t\tCommandId cid, uint32 options,\n\t\t\t\t\tSnapshot
      snapshot, Snapshot crosscheck,\n\t\t\t\t\tbool wait, TM_FailureData *tmfd,\n\t\t\t\t\tLockTupleMode
      *lockmode, TU_UpdateIndexes *update_indexes)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:279,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:279,1
    - Dst: heap_lock_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:290,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:290,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:292,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:294,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:312,1
    - Dst: ItemPointerIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:315,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:316,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:317,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:318,1
    - Dst: heap_fetch
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:321,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:333,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:333,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:336,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:341,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:342,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:343,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:344,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:346,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:347,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:348,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:354,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:356,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:360,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:365,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:370,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:371,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:373,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:374,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:392,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:393,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:401,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:402,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:420,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:420,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:427,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:427,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:430,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:448,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:451,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:458,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:459,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:470,1
    - Dst: ExecStorePinnedBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:474,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 78
    argCount: 9
    argNames:
    - relation
    - tid
    - snapshot
    - slot
    - cid
    - mode
    - wait_policy
    - flags
    - tmfd
    argTypes:
    - Relation
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    - CommandId
    - LockTupleMode
    - LockWaitPolicy
    - uint8
    - TM_FailureData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 264
    functionDepth: 3
    functionLinenumber: 264
    functionLinenumberEnd: 477
    functionName: heapam_tuple_lock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - errcode
    - ExecStorePinnedBufferHeapTuple
    - ItemPointerGetOffsetNumber
    - RelationGetRelationName
    - ItemPointerIndicatesMovedPartitions
    - ReleaseBuffer
    - InitDirtySnapshot
    - TTS_IS_BUFFERTUPLE
    - Assert
    - ItemPointerEquals
    - errmsg
    - RelationGetRelid
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderGetUpdateXid
    - errmsg_internal
    - HeapTupleHeaderGetCmin
    - HeapTupleHeaderGetXmin
    - ereport
    - heap_fetch
    - XactLockTableWait
    - HeapTupleHeaderIsSpeculative
    - BufferIsValid
    - ConditionalXactLockTableWait
    - TransactionIdEquals
    - heap_lock_tuple
    - TransactionIdIsValid
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heapam_tuple_lock(Relation relation, ItemPointer tid, Snapshot
      snapshot,\n\t\t\t\t  TupleTableSlot *slot, CommandId cid, LockTupleMode mode,\n\t\t\t\t
      \ LockWaitPolicy wait_policy, uint8 flags,\n\t\t\t\t  TM_FailureData *tmfd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetOldestMultiXactId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:509,1
    - Dst: RelationCreateStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:511,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:519,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:521,1
    - Dst: log_smgrcreate
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:522,1
    - Dst: smgrclose
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - rel
    - newrlocator
    - persistence
    - freezeXid
    - minmulti
    argTypes:
    - Relation
    - RelFileLocator*
    - char
    - TransactionId*
    - MultiXactId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 526
    functionName: heapam_relation_set_new_filelocator
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - RelationCreateStorage
    - smgrcreate
    - Assert
    - smgrclose
    - log_smgrcreate
    - GetOldestMultiXactId
    linkageType: ''
    returnType: void
    signature: "void heapam_relation_set_new_filelocator(Relation rel,\n\t\t\t\t\t\t\t\t\tconst
      RelFileLocator *newrlocator,\n\t\t\t\t\t\t\t\t\tchar persistence,\n\t\t\t\t\t\t\t\t\tTransactionId
      *freezeXid,\n\t\t\t\t\t\t\t\t\tMultiXactId *minmulti)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationTruncate
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 532
    functionName: heapam_relation_nontransactional_truncate
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - RelationTruncate
    linkageType: ''
    returnType: void
    signature: void heapam_relation_nontransactional_truncate(Relation rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FlushRelationBuffers
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:545,1
    - Dst: RelationCreateStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:554,1
    - Dst: RelationCopyStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:557,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:557,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:564,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:564,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:566,1
    - Dst: RelationIsPermanent
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:572,1
    - Dst: log_smgrcreate
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:575,1
    - Dst: RelationCopyStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:576,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:576,1
    - Dst: RelationDropStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:583,1
    - Dst: smgrclose
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:584,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - rel
    - newrlocator
    argTypes:
    - Relation
    - RelFileLocator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 534
    functionDepth: 2
    functionLinenumber: 534
    functionLinenumberEnd: 585
    functionName: heapam_relation_copy_data
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - RelationCreateStorage
    - RelationIsPermanent
    - smgrcreate
    - RelationGetSmgr
    - smgrclose
    - RelationCopyStorage
    - smgrexists
    - FlushRelationBuffers
    - log_smgrcreate
    - RelationDropStorage
    linkageType: ''
    returnType: void
    signature: void heapam_relation_copy_data(Relation rel, const RelFileLocator *newrlocator)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:605,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:606,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:622,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:622,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:626,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:627,1
    - Dst: begin_heap_rewrite
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:634,1
    - Dst: GetBulkInsertState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:641,1
    - Dst: tuplesort_begin_cluster
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:647,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:671,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:672,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:676,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:680,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:685,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:688,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:696,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:700,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:715,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:719,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:724,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:728,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:738,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:754,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:763,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:789,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:791,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:815,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:815,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:816,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:817,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:827,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:827,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:828,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:829,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:835,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:840,1
    - Dst: rewrite_heap_dead_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:846,1
    - Dst: tuplesort_putheaptuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:860,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:866,1
    - Dst: reform_and_rewrite_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:878,1
    - Dst: heap_insert_for_repack
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:881,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:890,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:895,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:897,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:899,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:910,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:913,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:916,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:923,1
    - Dst: tuplesort_getheaptuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:925,1
    - Dst: reform_and_rewrite_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:931,1
    - Dst: heap_insert_for_repack
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:936,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:940,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:944,1
    - Dst: end_heap_rewrite
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:949,1
    - Dst: FreeBulkInsertState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:951,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:954,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:955,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 131
    argCount: 11
    argNames:
    - OldHeap
    - NewHeap
    - OldIndex
    - use_sort
    - OldestXmin
    - snapshot
    - xid_cutoff
    - multi_cutoff
    - num_tuples
    - tups_vacuumed
    - tups_recently_dead
    argTypes:
    - Relation
    - Relation
    - Relation
    - bool
    - TransactionId
    - Snapshot
    - TransactionId*
    - MultiXactId*
    - double*
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 587
    functionDepth: 3
    functionLinenumber: 587
    functionLinenumberEnd: 956
    functionName: heapam_relation_copy_for_cluster
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - IsSystemRelation
    - LockBuffer
    - palloc_array
    - GetBulkInsertState
    - RelationGetTargetBlock
    - RelationGetRelationName
    - FreeBulkInsertState
    - tuplesort_putheaptuple
    - reform_and_rewrite_tuple
    - end_heap_rewrite
    - elog
    - Assert
    - RelationGetDescr
    - pfree
    - heap_insert_for_repack
    - table_beginscan
    - HeapTupleSatisfiesVacuum
    - table_endscan
    - tuplesort_begin_cluster
    - HeapTupleHeaderGetUpdateXid
    - tuplesort_end
    - ExecDropSingleTupleTableSlot
    - HeapTupleHeaderGetXmin
    - table_slot_create
    - index_endscan
    - CHECK_FOR_INTERRUPTS
    - tuplesort_performsort
    - begin_heap_rewrite
    - rewrite_heap_dead_tuple
    - index_rescan
    - table_scan_getnextslot
    - pgstat_progress_update_multi_param
    - index_getnext_slot
    - tuplesort_getheaptuple
    - ExecFetchSlotHeapTuple
    - pgstat_progress_update_param
    - RelationGetRelid
    - index_beginscan
    linkageType: ''
    returnType: void
    signature: "void heapam_relation_copy_for_cluster(Relation OldHeap, Relation NewHeap,\n\t\t\t\t\t\t\t\t
      Relation OldIndex, bool use_sort,\n\t\t\t\t\t\t\t\t TransactionId OldestXmin,\n\t\t\t\t\t\t\t\t
      Snapshot snapshot,\n\t\t\t\t\t\t\t\t TransactionId *xid_cutoff,\n\t\t\t\t\t\t\t\t
      MultiXactId *multi_cutoff,\n\t\t\t\t\t\t\t\t double *num_tuples,\n\t\t\t\t\t\t\t\t
      double *tups_vacuumed,\n\t\t\t\t\t\t\t\t double *tups_recently_dead)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:980,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:981,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:984,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:986,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - scan
    - stream
    argTypes:
    - TableScanDesc
    - ReadStream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 967
    functionDepth: 2
    functionLinenumber: 967
    functionLinenumberEnd: 989
    functionName: heapam_scan_analyze_next_block
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - BufferGetBlockNumber
    - read_stream_next_buffer
    - LockBuffer
    - BufferIsValid
    linkageType: ''
    returnType: bool
    signature: bool heapam_scan_analyze_next_block(TableScanDesc scan, ReadStream
      *stream)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1001,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1001,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1004,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1005,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1015,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1023,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1025,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1030,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1032,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1033,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1034,1
    - Dst: HeapTupleSatisfiesVacuumHorizon
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1036,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1071,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1071,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1102,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1102,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1112,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1118,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1127,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1131,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 52
    argCount: 4
    argNames:
    - scan
    - liverows
    - deadrows
    - slot
    argTypes:
    - TableScanDesc
    - double*
    - double*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 991
    functionDepth: 4
    functionLinenumber: 991
    functionLinenumberEnd: 1134
    functionName: heapam_scan_analyze_next_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - TransactionIdIsCurrentTransactionId
    - BufferGetPage
    - PageGetItem
    - elog
    - TTS_IS_BUFFERTUPLE
    - Assert
    - HeapTupleSatisfiesVacuumHorizon
    - PageGetMaxOffsetNumber
    - ExecClearTuple
    - UnlockReleaseBuffer
    - HeapTupleHeaderGetUpdateXid
    - ItemIdIsNormal
    - ItemIdIsDead
    - HeapTupleHeaderGetXmin
    - PageGetItemId
    - ExecStoreBufferHeapTuple
    - ItemIdGetLength
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: "bool heapam_scan_analyze_next_tuple(TableScanDesc scan,\n\t\t\t\t\t\t\t
      \  double *liverows, double *deadrows,\n\t\t\t\t\t\t\t   TupleTableSlot *slot)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1170,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1170,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1183,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1189,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1190,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1191,1
    - Dst: ExecPrepareQual
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1197,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1209,1
    - Dst: GetOldestNonRemovableTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1210,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1220,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1222,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1222,1
    - Dst: table_beginscan_strat
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1244,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1244,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1257,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1258,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1258,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1259,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1260,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1277,1
    - Dst: heap_setscanlimits
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1287,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1288,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1296,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1300,1
    - Dst: heapam_scan_get_blocks_done
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1305,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1309,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1348,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1350,1
    - Dst: heap_get_root_tuples
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1351,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1352,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1371,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1380,1
    - Dst: HeapTupleIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1411,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1444,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1445,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1448,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1449,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1462,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1463,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1466,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1503,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1504,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1507,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1508,1
    - Dst: HeapTupleIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1525,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1530,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1531,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1534,1
    - Dst: HeapTupleIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1553,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1578,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1583,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1595,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1598,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1606,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1615,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1627,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1636,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1645,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1647,1
    - Dst: heap_get_root_tuples
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1648,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1649,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1652,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1653,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1654,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1655,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1656,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1658,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1660,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1660,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1664,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1670,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1690,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1694,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1698,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1700,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1702,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 182
    argCount: 11
    argNames:
    - heapRelation
    - indexRelation
    - indexInfo
    - allow_sync
    - anyvisible
    - progress
    - start_blockno
    - numblocks
    - callback
    - callback_state
    - scan
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - bool
    - bool
    - bool
    - BlockNumber
    - BlockNumber
    - IndexBuildCallback
    - void*
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1709
      start: 1136
    functionDepth: 4
    functionLinenumber: 1136
    functionLinenumberEnd: 1709
    functionName: heapam_index_build_range_scan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - ItemPointerSet
    - callback
    - IsSystemRelation
    - HeapTupleIsHeapOnly
    - errcode
    - LockBuffer
    - BufferGetPage
    - FreeExecutorState
    - RegisterSnapshot
    - ExecPrepareQual
    - FormIndexDatum
    - RelationGetRelationName
    - ItemPointerGetOffsetNumber
    - IsMVCCSnapshot
    - GetOldestNonRemovableTransactionId
    - elog
    - MemoryContextReset
    - Assert
    - table_beginscan_strat
    - HeapTupleIsHotUpdated
    - HeapTupleSatisfiesVacuum
    - OidIsValid
    - table_endscan
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderGetUpdateXid
    - UnregisterSnapshot
    - ExecDropSingleTupleTableSlot
    - OffsetNumberIsValid
    - errmsg_internal
    - heap_setscanlimits
    - HeapTupleHeaderGetXmin
    - table_slot_create
    - ereport
    - CHECK_FOR_INTERRUPTS
    - heap_getnext
    - GetTransactionSnapshot
    - IsBootstrapProcessingMode
    - XactLockTableWait
    - ExecStoreBufferHeapTuple
    - heap_get_root_tuples
    - CreateExecutorState
    - GetPerTupleExprContext
    - heapam_scan_get_blocks_done
    - ExecQual
    - pgstat_progress_update_param
    - TransactionIdIsValid
    linkageType: ''
    returnType: double
    signature: "double heapam_index_build_range_scan(Relation heapRelation,\n\t\t\t\t\t\t\t
      \ Relation indexRelation,\n\t\t\t\t\t\t\t  IndexInfo *indexInfo,\n\t\t\t\t\t\t\t
      \ bool allow_sync,\n\t\t\t\t\t\t\t  bool anyvisible,\n\t\t\t\t\t\t\t  bool progress,\n\t\t\t\t\t\t\t
      \ BlockNumber start_blockno,\n\t\t\t\t\t\t\t  BlockNumber numblocks,\n\t\t\t\t\t\t\t
      \ IndexBuildCallback callback,\n\t\t\t\t\t\t\t  void *callback_state,\n\t\t\t\t\t\t\t
      \ TableScanDesc scan)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1740,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1740,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1746,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1747,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1748,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1748,1
    - Dst: ExecPrepareQual
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1755,1
    - Dst: table_beginscan_strat
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1763,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1771,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1777,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1783,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1790,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1811,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1813,1
    - Dst: heap_get_root_tuples
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1814,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1815,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1817,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1824,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1826,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1829,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1830,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1831,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1832,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1833,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1834,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1835,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1836,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1845,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1855,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1856,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1859,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1862,1
    - Dst: itemptr_decode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1865,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1865,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1880,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1883,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1886,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1894,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1903,1
    - Dst: index_insert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1927,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1941,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1943,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1945,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 63
    argCount: 5
    argNames:
    - heapRelation
    - indexRelation
    - indexInfo
    - snapshot
    - state
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - Snapshot
    - ValidateIndexState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1711
    functionDepth: 4
    functionLinenumber: 1711
    functionLinenumberEnd: 1950
    functionName: heapam_index_validate_scan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsHeapOnly
    - errcode
    - LockBuffer
    - BufferGetPage
    - FreeExecutorState
    - ExecPrepareQual
    - ItemPointerGetOffsetNumber
    - RelationGetRelationName
    - FormIndexDatum
    - MemoryContextReset
    - ItemPointerSetOffsetNumber
    - Assert
    - RelationGetDescr
    - itemptr_decode
    - table_beginscan_strat
    - MakeSingleTupleTableSlot
    - OidIsValid
    - table_endscan
    - ItemPointerGetBlockNumber
    - ExecStoreHeapTuple
    - index_insert
    - ExecDropSingleTupleTableSlot
    - OffsetNumberIsValid
    - errmsg_internal
    - ereport
    - CHECK_FOR_INTERRUPTS
    - heap_getnext
    - memset
    - ItemPointerCompare
    - tuplesort_getdatum
    - heap_get_root_tuples
    - CreateExecutorState
    - DatumGetInt64
    - GetPerTupleExprContext
    - ExecQual
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: "void heapam_index_validate_scan(Relation heapRelation,\n\t\t\t\t\t\t
      \  Relation indexRelation,\n\t\t\t\t\t\t   IndexInfo *indexInfo,\n\t\t\t\t\t\t
      \  Snapshot snapshot,\n\t\t\t\t\t\t   ValidateIndexState *state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - hscan
    argTypes:
    - HeapScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1958
    functionDepth: 0
    functionLinenumber: 1958
    functionLinenumberEnd: 1989
    functionName: heapam_scan_get_blocks_done
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber heapam_scan_get_blocks_done(HeapScanDesc hscan)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2015,1
    - Dst: att_align_nominal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2021,1
    - Dst: type_maximum_size
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2029,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2044,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2045,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2046,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2048
      start: 2003
    functionDepth: 2
    functionLinenumber: 2003
    functionLinenumberEnd: 2048
    functionName: heapam_relation_needs_toast_table
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - type_maximum_size
    - att_align_nominal
    - TupleDescAttr
    - MAXALIGN
    - BITMAPLEN
    linkageType: ''
    returnType: bool
    signature: bool heapam_relation_needs_toast_table(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2057
      start: 2053
    functionDepth: 0
    functionLinenumber: 2053
    functionLinenumberEnd: 2057
    functionName: heapam_relation_toast_am
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Oid
    signature: Oid heapam_relation_toast_am(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_block_relation_estimate_size
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rel
    - attr_widths
    - pages
    - tuples
    - allvisfrac
    argTypes:
    - Relation
    - int32*
    - BlockNumber*
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2079
      start: 2070
    functionDepth: 1
    functionLinenumber: 2070
    functionLinenumberEnd: 2079
    functionName: heapam_estimate_rel_size
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - table_block_relation_estimate_size
    linkageType: ''
    returnType: void
    signature: "void heapam_estimate_rel_size(Relation rel, int32 *attr_widths,\n\t\t\t\t\t\t
      BlockNumber *pages, double *tuples,\n\t\t\t\t\t\t double *allvisfrac)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BitmapHeapScanNextBlock
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2109,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2114,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2115,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2116,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2116,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2118,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2119,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2121,1
    - Dst: pgstat_count_heap_fetch
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2123,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - scan
    - slot
    - recheck
    - lossy_pages
    - exact_pages
    argTypes:
    - TableScanDesc
    - TupleTableSlot*
    - bool*
    - uint64*
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2136
      start: 2087
    functionDepth: 4
    functionLinenumber: 2087
    functionLinenumberEnd: 2136
    functionName: heapam_scan_bitmap_next_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - BitmapHeapScanNextBlock
    - ItemIdIsNormal
    - Assert
    - PageGetItemId
    - BufferGetPage
    - PageGetItem
    - pgstat_count_heap_fetch
    - ItemIdGetLength
    - ExecStoreBufferHeapTuple
    linkageType: ''
    returnType: bool
    signature: "bool heapam_scan_bitmap_next_tuple(TableScanDesc scan,\n\t\t\t\t\t\t\t
      \ TupleTableSlot *slot,\n\t\t\t\t\t\t\t  bool *recheck,\n\t\t\t\t\t\t\t  uint64
      *lossy_pages,\n\t\t\t\t\t\t\t  uint64 *exact_pages)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2150,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2152,1
    - Dst: TsmRoutine*::NextSampleBlock
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2169,1
    - Dst: ss_report_location
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2190,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2207,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2214,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2217,1
    - Dst: heap_prepare_pagescan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2222,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 2
    argNames:
    - scan
    - scanstate
    argTypes:
    - TableScanDesc
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2226
      start: 2138
    functionDepth: 2
    functionLinenumber: 2138
    functionLinenumberEnd: 2226
    functionName: heapam_scan_sample_next_block
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - Assert
    - ReadBufferExtended
    - TsmRoutine*::NextSampleBlock
    - BlockNumberIsValid
    - CHECK_FOR_INTERRUPTS
    - ss_report_location
    - BufferIsValid
    - heap_prepare_pagescan
    linkageType: ''
    returnType: bool
    signature: bool heapam_scan_sample_next_block(TableScanDesc scan, SampleScanState
      *scanstate)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2246,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2248,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2249,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2251,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2257,1
    - Dst: TsmRoutine*::NextSampleTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2260,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2264,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2271,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2272,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2275,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2276,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2277,1
    - Dst: SampleHeapTupleVisible
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2283,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2288,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2297,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2299,1
    - Dst: pgstat_count_heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2302,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2313,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2315,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2320,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 3
    argNames:
    - scan
    - scanstate
    - slot
    argTypes:
    - TableScanDesc
    - SampleScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2321
      start: 2228
    functionDepth: 4
    functionLinenumber: 2228
    functionLinenumberEnd: 2321
    functionName: heapam_scan_sample_next_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - SampleHeapTupleVisible
    - ItemPointerSet
    - PageIsAllVisible
    - pgstat_count_heap_getnext
    - OffsetNumberIsValid
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - Assert
    - TsmRoutine*::NextSampleTuple
    - LockBuffer
    - CHECK_FOR_INTERRUPTS
    - BufferGetPage
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - ExecClearTuple
    - ItemIdGetLength
    - ExecStoreBufferHeapTuple
    linkageType: ''
    returnType: bool
    signature: "bool heapam_scan_sample_next_tuple(TableScanDesc scan, SampleScanState
      *scanstate,\n\t\t\t\t\t\t\t  TupleTableSlot *slot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reform_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2352,1
    - Dst: rewrite_heap_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2355,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - tuple
    - OldHeap
    - NewHeap
    - values
    - isnull
    - rwstate
    argTypes:
    - HeapTuple
    - Relation
    - Relation
    - Datum*
    - bool*
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2345
    functionDepth: 1
    functionLinenumber: 2345
    functionLinenumberEnd: 2358
    functionName: reform_and_rewrite_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 1
    functionsReached:
    - rewrite_heap_tuple
    - reform_tuple
    - heap_freetuple
    linkageType: ''
    returnType: void
    signature: "void reform_and_rewrite_tuple(HeapTuple tuple,\n\t\t\t\t\t\t Relation
      OldHeap, Relation NewHeap,\n\t\t\t\t\t\t Datum *values, bool *isnull, RewriteState
      rwstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reform_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2382,1
    - Dst: heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2384,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2384,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - tuple
    - OldHeap
    - NewHeap
    - values
    - isnull
    - bistate
    argTypes:
    - HeapTuple
    - Relation
    - Relation
    - Datum*
    - bool*
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2388
      start: 2376
    functionDepth: 1
    functionLinenumber: 2376
    functionLinenumberEnd: 2388
    functionName: heap_insert_for_repack
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 1
    functionsReached:
    - heap_insert
    - reform_tuple
    - heap_freetuple
    - GetCurrentCommandId
    linkageType: ''
    returnType: void
    signature: "void heap_insert_for_repack(HeapTuple tuple, Relation OldHeap, Relation
      NewHeap,\n\t\t\t\t\t   Datum *values, bool *isnull, BulkInsertState bistate)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2404,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2405,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2414,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2425,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2426,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2436,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2438,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2442,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2446,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 5
    argNames:
    - tuple
    - OldHeap
    - NewHeap
    - values
    - isnull
    argTypes:
    - HeapTuple
    - Relation
    - Relation
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2447
      start: 2400
    functionDepth: 2
    functionLinenumber: 2400
    functionLinenumberEnd: 2447
    functionName: reform_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 2
    functionsReached:
    - heap_deform_tuple
    - RelationGetDescr
    - heap_form_tuple
    - HeapTupleHeaderGetNatts
    - heap_attisnull
    - heap_copytuple
    - TupleDescCompactAttr
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple reform_tuple(HeapTuple tuple, Relation OldHeap, Relation
      NewHeap,\n\t\t\t Datum *values, bool *isnull)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2491,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - scan
    - buffer
    - tuple
    - tupoffset
    argTypes:
    - TableScanDesc
    - Buffer
    - HeapTuple
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2452
    functionDepth: 1
    functionLinenumber: 2452
    functionLinenumberEnd: 2494
    functionName: SampleHeapTupleVisible
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 1
    functionsReached:
    - HeapTupleSatisfiesVisibility
    linkageType: ''
    returnType: bool
    signature: "bool SampleHeapTupleVisible(TableScanDesc scan, Buffer buffer,\n\t\t\t\t\t
      \  HeapTuple tuple,\n\t\t\t\t\t   OffsetNumber tupoffset)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2518,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2524,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2526,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2530,1
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2533,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2539,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2543,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2544,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2544,1
    - Dst: tbm_extract_page_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2548,1
    - Dst: heap_page_prune_opt
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2562,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2585,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2593,1
    - Dst: heap_hot_search_buffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2594,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2596,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2605,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2606,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2609,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2615,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2616,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2618,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2619,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2621,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2622,1
    - Dst: PredicateLockTID
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2626,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2627,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2629,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2634,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2636,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 57
    argCount: 4
    argNames:
    - scan
    - recheck
    - lossy_pages
    - exact_pages
    argTypes:
    - TableScanDesc
    - bool*
    - uint64*
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2652
      start: 2501
    functionDepth: 4
    functionLinenumber: 2501
    functionLinenumberEnd: 2652
    functionName: BitmapHeapScanNextBlock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 1
    functionsReached:
    - ItemPointerSet
    - read_stream_next_buffer
    - tbm_extract_page_tuple
    - HeapCheckForSerializableConflictOut
    - BlockNumberIsValid
    - LockBuffer
    - heap_hot_search_buffer
    - BufferGetPage
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - ReleaseBuffer
    - Assert
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - HeapTupleSatisfiesVisibility
    - BufferIsInvalid
    - heap_page_prune_opt
    - ItemIdIsNormal
    - HeapTupleHeaderGetXmin
    - PageGetItemId
    - BufferIsValid
    - PredicateLockTID
    - OffsetNumberNext
    - ItemIdGetLength
    linkageType: ''
    returnType: bool
    signature: "bool BitmapHeapScanNextBlock(TableScanDesc scan,\n\t\t\t\t\t\tbool
      *recheck,\n\t\t\t\t\t\tuint64 *lossy_pages, uint64 *exact_pages)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2722
      start: 2718
    functionDepth: 0
    functionLinenumber: 2718
    functionLinenumberEnd: 2722
    functionName: GetHeapamTableAmRoutine
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TableAmRoutine
    signature: 'TableAmRoutine *

      GetHeapamTableAmRoutine(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2724
    functionDepth: 1
    functionLinenumber: 2724
    functionLinenumberEnd: 2728
    functionName: heap_tableam_handler
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum heap_tableam_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - status
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: LOCKMODE_from_mxstatus
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCKMODE_from_mxstatus(status)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - rel
    - ','
    - tup
    - ','
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 171
    functionName: LockTupleTuplock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LockTupleTuplock(rel, tup, mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - rel
    - ','
    - tup
    - ','
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: UnlockTupleTuplock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UnlockTupleTuplock(rel, tup, mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - rel
    - ','
    - tup
    - ','
    - mode
    - ','
    - log
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 175
    functionName: ConditionalLockTupleTuplock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ConditionalLockTupleTuplock(rel, tup, mode, log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - status
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 222
    functionName: TUPLOCK_from_mxstatus
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TUPLOCK_from_mxstatus(status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/access/heap/heapam.c:232,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:236,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:239,1
    - Dst: HaveRegisteredOrActiveSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 242
    functionName: AssertHasSnapshotForToast
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - IsNormalProcessingMode
    - OidIsValid
    - HaveRegisteredOrActiveSnapshot
    - Assert
    linkageType: ''
    returnType: void
    signature: void AssertHasSnapshotForToast(Relation rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:260,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:261,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:263,1
    - Dst: table_block_parallelscan_startblock_init
      Src: /src/postgres/src/backend/access/heap/heapam.c:266,1
    - Dst: table_block_parallelscan_nextpage
      Src: /src/postgres/src/backend/access/heap/heapam.c:273,1
    - Dst: table_block_parallelscan_nextpage
      Src: /src/postgres/src/backend/access/heap/heapam.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - stream
    - callback_private_data
    - per_buffer_data
    argTypes:
    - ReadStream*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 286
    functionName: heap_scan_stream_read_next_parallel
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - table_block_parallelscan_nextpage
    - Assert
    - table_block_parallelscan_startblock_init
    - unlikely
    - ScanDirectionIsForward
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber heap_scan_stream_read_next_parallel(ReadStream *stream,\n\t\t\t\t\t\t\t\t\tvoid
      *callback_private_data,\n\t\t\t\t\t\t\t\t\tvoid *per_buffer_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:300,1
    - Dst: heapgettup_initial_block
      Src: /src/postgres/src/backend/access/heap/heapam.c:302,1
    - Dst: heapgettup_advance_block
      Src: /src/postgres/src/backend/access/heap/heapam.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - callback_private_data
    - per_buffer_data
    argTypes:
    - ReadStream*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 311
    functionName: heap_scan_stream_read_next_serial
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - heapgettup_initial_block
    - heapgettup_advance_block
    - unlikely
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber heap_scan_stream_read_next_serial(ReadStream *stream,\n\t\t\t\t\t\t\t\t
      \ void *callback_private_data,\n\t\t\t\t\t\t\t\t  void *per_buffer_data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam.c:329,1
    - Dst: tbm_iterate
      Src: /src/postgres/src/backend/access/heap/heapam.c:332,1
    - Dst: IsolationIsSerializable
      Src: /src/postgres/src/backend/access/heap/heapam.c:343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:351,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - pgsr
    - private_data
    - per_buffer_data
    argTypes:
    - ReadStream*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 352
    functionName: bitmapheap_stream_read_next
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - tbm_iterate
    - CHECK_FOR_INTERRUPTS
    - IsolationIsSerializable
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber bitmapheap_stream_read_next(ReadStream *pgsr, void *private_data,\n\t\t\t\t\t\t\tvoid
      *per_buffer_data)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/heapam.c:382,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/heap/heapam.c:396,1
    - Dst: GetAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:409,1
    - Dst: FreeAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:414,1
    - Dst: ss_get_location
      Src: /src/postgres/src/backend/access/heap/heapam.c:453,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/heap/heapam.c:465,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:484,1
    - Dst: pgstat_count_heap_scan
      Src: /src/postgres/src/backend/access/heap/heapam.c:492,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 53
    argCount: 3
    argNames:
    - scan
    - key
    - keep_startblock
    argTypes:
    - HeapScanDesc
    - ScanKey
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 493
    functionName: initscan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ss_get_location
    - memcpy
    - RelationUsesLocalBuffers
    - FreeAccessStrategy
    - pgstat_count_heap_scan
    - GetAccessStrategy
    - RelationGetNumberOfBlocks
    - ItemPointerSetInvalid
    linkageType: ''
    returnType: void
    signature: void initscan(HeapScanDesc scan, ScanKey key, bool keep_startblock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:506,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - sscan
    - startBlk
    - numBlks
    argTypes:
    - TableScanDesc
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 515
    functionName: heap_setscanlimits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void heap_setscanlimits(TableScanDesc sscan, BlockNumber startBlk,
      BlockNumber numBlks)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:529,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:535,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:535,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:540,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:543,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:543,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:556,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:557,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam.c:559,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:578,1
    - Dst: HeapTupleSatisfiesMVCCBatch
      Src: /src/postgres/src/backend/access/heap/heapam.c:588,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:601,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 8
    argNames:
    - scan
    - snapshot
    - page
    - buffer
    - block
    - lines
    - all_visible
    - check_serializable
    argTypes:
    - HeapScanDesc
    - Snapshot
    - Page
    - Buffer
    - BlockNumber
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 522
    functionDepth: 2
    functionLinenumber: 522
    functionLinenumberEnd: 609
    functionName: page_collect_tuples
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - Assert
    - PageGetItemId
    - PageGetItem
    - unlikely
    - HeapTupleSatisfiesMVCCBatch
    - IsMVCCSnapshot
    - ItemIdGetLength
    - RelationGetRelid
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline page_collect_tuples(HeapScanDesc scan,
      Snapshot snapshot,\n\t\t\t\t\tPage page, Buffer buffer,\n\t\t\t\t\tBlockNumber
      block, int lines,\n\t\t\t\t\tbool all_visible, bool check_serializable)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:629,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:629,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:632,1
    - Dst: heap_page_prune_opt
      Src: /src/postgres/src/backend/access/heap/heapam.c:638,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:646,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:648,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:649,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:671,1
    - Dst: CheckForSerializableConflictOutNeeded
      Src: /src/postgres/src/backend/access/heap/heapam.c:673,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:681,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:683,1
    - Dst: page_collect_tuples
      Src: /src/postgres/src/backend/access/heap/heapam.c:684,1
    - Dst: page_collect_tuples
      Src: /src/postgres/src/backend/access/heap/heapam.c:687,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:692,1
    - Dst: page_collect_tuples
      Src: /src/postgres/src/backend/access/heap/heapam.c:693,1
    - Dst: page_collect_tuples
      Src: /src/postgres/src/backend/access/heap/heapam.c:696,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:700,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - sscan
    argTypes:
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 617
    functionDepth: 4
    functionLinenumber: 617
    functionLinenumberEnd: 701
    functionName: heap_prepare_pagescan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - PageIsAllVisible
    - Assert
    - BufferGetBlockNumber
    - LockBuffer
    - page_collect_tuples
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - likely
    - CheckForSerializableConflictOutNeeded
    - heap_page_prune_opt
    linkageType: ''
    returnType: void
    signature: void heap_prepare_pagescan(TableScanDesc sscan)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:712,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:715,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:717,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam.c:726,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:734,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/heap/heapam.c:737,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:742,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:743,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:744,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - HeapScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 745
    functionName: heap_fetch_next_buffer
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - read_stream_next_buffer
    - ReleaseBuffer
    - Assert
    - BufferGetBlockNumber
    - CHECK_FOR_INTERRUPTS
    - unlikely
    - BufferIsValid
    - read_stream_reset
    linkageType: ''
    returnType: void
    signature: void heap_fetch_next_buffer(HeapScanDesc scan, ScanDirection dir)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:757,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:758,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:764,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - HeapScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 790
    functionName: BlockNumber::heapgettup_initial_block
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - ScanDirectionIsForward
    linkageType: ''
    returnType: pg_noinline
    signature: 'pg_noinline BlockNumber

      heapgettup_initial_block(HeapScanDesc scan, ScanDirection dir)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:808,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:808,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:811,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:813,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:815,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - scan
    - dir
    - linesleft
    - lineoff
    argTypes:
    - HeapScanDesc
    - ScanDirection
    - int*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 801
    functionDepth: 4
    functionLinenumber: 801
    functionLinenumberEnd: 822
    functionName: heapgettup_start_page
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - ScanDirectionIsForward
    - BufferIsValid
    linkageType: ''
    returnType: Page
    signature: "Page heapgettup_start_page(HeapScanDesc scan, ScanDirection dir, int
      *linesleft,\n\t\t\t\t\t  OffsetNumber *lineoff)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:839,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:839,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:842,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:844,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/heapam.c:846,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:847,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:856,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:856,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/heap/heapam.c:856,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - scan
    - dir
    - linesleft
    - lineoff
    argTypes:
    - HeapScanDesc
    - ScanDirection
    - int*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 832
    functionDepth: 4
    functionLinenumber: 832
    functionLinenumberEnd: 862
    functionName: heapgettup_continue_page
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - OffsetNumberNext
    - Assert
    - OffsetNumberPrev
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - ScanDirectionIsForward
    - BufferIsValid
    - Min
    linkageType: ''
    returnType: Page
    signature: "Page heapgettup_continue_page(HeapScanDesc scan, ScanDirection dir,
      int *linesleft,\n\t\t\t\t\t\t OffsetNumber *lineoff)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:881,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:883,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:883,1
    - Dst: ss_report_location
      Src: /src/postgres/src/backend/access/heap/heapam.c:904,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - scan
    - block
    - dir
    argTypes:
    - HeapScanDesc
    - BlockNumber
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 940
    functionName: heapgettup_advance_block
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - Assert
    - ss_report_location
    - likely
    - ScanDirectionIsForward
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber heapgettup_advance_block(HeapScanDesc scan, BlockNumber
      block, ScanDirection dir)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:973,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:976,1
    - Dst: heapgettup_continue_page
      Src: /src/postgres/src/backend/access/heap/heapam.c:977,1
    - Dst: heap_fetch_next_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:987,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:990,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:993,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:993,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:995,1
    - Dst: heapgettup_start_page
      Src: /src/postgres/src/backend/access/heap/heapam.c:996,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:1009,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1011,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:1014,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:1015,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam.c:1016,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:1018,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:1022,1
    - Dst: HeapKeyTest
      Src: /src/postgres/src/backend/access/heap/heapam.c:1032,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam.c:1032,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1036,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1045,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1049,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1050,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 4
    argNames:
    - scan
    - dir
    - nkeys
    - key
    argTypes:
    - HeapScanDesc
    - ScanDirection
    - int
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 962
    functionDepth: 5
    functionLinenumber: 962
    functionLinenumberEnd: 1057
    functionName: heapgettup
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - ReleaseBuffer
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - Assert
    - RelationGetDescr
    - BufferGetBlockNumber
    - LockBuffer
    - heapgettup_start_page
    - PageGetItemId
    - HeapKeyTest
    - PageGetItem
    - likely
    - HeapTupleSatisfiesVisibility
    - BufferIsValid
    - heap_fetch_next_buffer
    - ItemIdGetLength
    - heapgettup_continue_page
    linkageType: ''
    returnType: void
    signature: "void heapgettup(HeapScanDesc scan,\n\t\t   ScanDirection dir,\n\t\t
      \  int nkeys,\n\t\t   ScanKey key)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:1083,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:1086,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:1089,1
    - Dst: heap_fetch_next_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1104,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1107,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1110,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1110,1
    - Dst: heap_prepare_pagescan
      Src: /src/postgres/src/backend/access/heap/heapam.c:1113,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:1114,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:1116,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1119,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1129,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:1131,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1132,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1132,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:1134,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:1135,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1136,1
    - Dst: HeapKeyTest
      Src: /src/postgres/src/backend/access/heap/heapam.c:1140,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam.c:1140,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1150,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1151,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 4
    argNames:
    - scan
    - dir
    - nkeys
    - key
    argTypes:
    - HeapScanDesc
    - ScanDirection
    - int
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1072
    functionDepth: 5
    functionLinenumber: 1072
    functionLinenumberEnd: 1157
    functionName: heapgettup_pagemode
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - ItemPointerSetBlockNumber
    - ItemIdIsNormal
    - Assert
    - ItemPointerSetOffsetNumber
    - BufferGetBlockNumber
    - RelationGetDescr
    - BufferGetPage
    - PageGetItemId
    - HeapKeyTest
    - PageGetItem
    - likely
    - ScanDirectionIsForward
    - BufferIsValid
    - heap_fetch_next_buffer
    - ItemIdGetLength
    - heap_prepare_pagescan
    linkageType: ''
    returnType: void
    signature: "void heapgettup_pagemode(HeapScanDesc scan,\n\t\t\t\t\tScanDirection
      dir,\n\t\t\t\t\tint nkeys,\n\t\t\t\t\tScanKey key)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RelationIncrementReferenceCount
      Src: /src/postgres/src/backend/access/heap/heapam.c:1181,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/heap/heapam.c:1188,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/heap/heapam.c:1197,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:1211,1
    - Dst: IsHistoricMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:1216,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:1217,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:1219,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:1220,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:1221,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:1222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1245,1
    - Dst: PredicateLockRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:1246,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1250,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/heap/heapam.c:1257,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/heap/heapam.c:1266,1
    - Dst: initscan
      Src: /src/postgres/src/backend/access/heap/heapam.c:1270,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/heap/heapam.c:1296,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/heap/heapam.c:1307,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/heap/heapam.c:1320,1
    - Dst: read_stream_enable_stats
      Src: /src/postgres/src/backend/access/heap/heapam.c:1321,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 6
    argNames:
    - relation
    - snapshot
    - nkeys
    - key
    - parallel_scan
    - flags
    argTypes:
    - Relation
    - Snapshot
    - int
    - ScanKey
    - ParallelTableScanDesc
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1166
    functionDepth: 3
    functionLinenumber: 1166
    functionLinenumberEnd: 1328
    functionName: heap_beginscan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - errcode
    - Assert
    - read_stream_enable_stats
    - ereport
    - palloc_array
    - RelationIsAccessibleInLogicalDecoding
    - IsHistoricMVCCSnapshot
    - PredicateLockRelation
    - initscan
    - read_stream_begin_relation
    - errmsg
    - RelationGetRelationName
    - palloc_object
    - IsMVCCSnapshot
    - RelationIncrementReferenceCount
    - RelationGetRelid
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc heap_beginscan(Relation relation, Snapshot snapshot,\n\t\t\t
      \  int nkeys, ScanKey key,\n\t\t\t   ParallelTableScanDesc parallel_scan,\n\t\t\t
      \  uint32 flags)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:1349,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1358,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1360,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1364,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1366,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/heap/heapam.c:1381,1
    - Dst: initscan
      Src: /src/postgres/src/backend/access/heap/heapam.c:1386,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 6
    argNames:
    - sscan
    - key
    - set_params
    - allow_strat
    - allow_sync
    - allow_pagemode
    argTypes:
    - TableScanDesc
    - ScanKey
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1387
      start: 1330
    functionDepth: 3
    functionLinenumber: 1330
    functionLinenumberEnd: 1387
    functionName: heap_rescan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - initscan
    - BufferIsValid
    - IsMVCCSnapshot
    - read_stream_reset
    linkageType: ''
    returnType: void
    signature: "void heap_rescan(TableScanDesc sscan, ScanKey key, bool set_params,\n\t\t\tbool
      allow_strat, bool allow_sync, bool allow_pagemode)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1399,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1400,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1402,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1403,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/heap/heapam.c:1409,1
    - Dst: RelationDecrementReferenceCount
      Src: /src/postgres/src/backend/access/heap/heapam.c:1414,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:1417,1
    - Dst: FreeAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1420,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:1423,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:1426,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:1429,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:1431,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - sscan
    argTypes:
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1389
    functionDepth: 2
    functionLinenumber: 1389
    functionLinenumberEnd: 1432
    functionName: heap_endscan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - read_stream_end
    - pfree
    - FreeAccessStrategy
    - RelationDecrementReferenceCount
    - BufferIsValid
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void heap_endscan(TableScanDesc sscan)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:1446,1
    - Dst: GetHeapamTableAmRoutine
      Src: /src/postgres/src/backend/access/heap/heapam.c:1446,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:1447,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:1448,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1449,1
    - Dst: heapgettup_pagemode
      Src: /src/postgres/src/backend/access/heap/heapam.c:1454,1
    - Dst: heapgettup
      Src: /src/postgres/src/backend/access/heap/heapam.c:1457,1
    - Dst: pgstat_count_heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam.c:1468,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - sscan
    - direction
    argTypes:
    - TableScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1434
    functionDepth: 6
    functionLinenumber: 1434
    functionLinenumberEnd: 1471
    functionName: heap_getnext
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 4
    functionsReached:
    - pgstat_count_heap_getnext
    - errmsg_internal
    - errcode
    - heapgettup
    - ereport
    - heapgettup_pagemode
    - unlikely
    - GetHeapamTableAmRoutine
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple heap_getnext(TableScanDesc sscan, ScanDirection direction)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: heapgettup_pagemode
      Src: /src/postgres/src/backend/access/heap/heapam.c:1481,1
    - Dst: heapgettup
      Src: /src/postgres/src/backend/access/heap/heapam.c:1483,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1487,1
    - Dst: pgstat_count_heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam.c:1496,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - sscan
    - direction
    - slot
    argTypes:
    - TableScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1473
    functionDepth: 6
    functionLinenumber: 1473
    functionLinenumberEnd: 1501
    functionName: heap_getnextslot
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - pgstat_count_heap_getnext
    - heapgettup
    - heapgettup_pagemode
    - ExecClearTuple
    - ExecStoreBufferHeapTuple
    linkageType: ''
    returnType: bool
    signature: bool heap_getnextslot(TableScanDesc sscan, ScanDirection direction,
      TupleTableSlot *slot)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam.c:1525,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam.c:1526,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1533,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1534,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1540,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1541,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1547,1
    - Dst: heap_setscanlimits
      Src: /src/postgres/src/backend/access/heap/heapam.c:1550,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/heap/heapam.c:1563,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/heap/heapam.c:1565,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/heap/heapam.c:1566,1
    - Dst: heap_setscanlimits
      Src: /src/postgres/src/backend/access/heap/heapam.c:1569,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1572,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1573,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - sscan
    - mintid
    - maxtid
    argTypes:
    - TableScanDesc
    - ItemPointer
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1503
    functionDepth: 2
    functionLinenumber: 1503
    functionLinenumberEnd: 1574
    functionName: heap_set_tidrange
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - ItemPointerCopy
    - ItemPointerGetBlockNumberNoCheck
    - heap_setscanlimits
    - ItemPointerCompare
    linkageType: ''
    returnType: void
    signature: "void heap_set_tidrange(TableScanDesc sscan, ItemPointer mintid,\n\t\t\t\t
      \ ItemPointer maxtid)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: heapgettup_pagemode
      Src: /src/postgres/src/backend/access/heap/heapam.c:1588,1
    - Dst: heapgettup
      Src: /src/postgres/src/backend/access/heap/heapam.c:1590,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1594,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1604,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1606,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/heap/heapam.c:1613,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1623,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1625,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:1632,1
    - Dst: pgstat_count_heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam.c:1644,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1646,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - sscan
    - direction
    - slot
    argTypes:
    - TableScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1648
      start: 1576
    functionDepth: 6
    functionLinenumber: 1576
    functionLinenumberEnd: 1648
    functionName: heap_getnextslot_tidrange
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - pgstat_count_heap_getnext
    - ScanDirectionIsBackward
    - heapgettup
    - heapgettup_pagemode
    - ScanDirectionIsForward
    - ExecClearTuple
    - ItemPointerCompare
    - ExecStoreBufferHeapTuple
    linkageType: ''
    returnType: bool
    signature: "bool heap_getnextslot_tidrange(TableScanDesc sscan, ScanDirection
      direction,\n\t\t\t\t\t\t  TupleTableSlot *slot)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1700,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1700,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1705,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:1706,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1712,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1713,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1715,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:1724,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1729,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1731,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:1740,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:1741,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1742,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:1747,1
    - Dst: PredicateLockTID
      Src: /src/postgres/src/backend/access/heap/heapam.c:1750,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:1751,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:1753,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1755,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1773,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 5
    argNames:
    - relation
    - snapshot
    - tuple
    - userbuf
    - keep_buf
    argTypes:
    - Relation
    - Snapshot
    - HeapTuple
    - Buffer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1779
      start: 1683
    functionDepth: 4
    functionLinenumber: 1683
    functionLinenumberEnd: 1779
    functionName: heap_fetch
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 4
    functionsReached:
    - PredicateLockTID
    - ReleaseBuffer
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - LockBuffer
    - HeapTupleHeaderGetXmin
    - BufferGetPage
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - ReadBuffer
    - ItemPointerGetOffsetNumber
    - HeapTupleSatisfiesVisibility
    - ItemIdGetLength
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: "bool heap_fetch(Relation relation,\n\t\t   Snapshot snapshot,\n\t\t
      \  HeapTuple tuple,\n\t\t   Buffer *userbuf,\n\t\t   bool keep_buf)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1806,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1806,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1831,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1831,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1832,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:1833,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1840,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1841,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1843,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:1846,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1847,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1849,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:1855,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:1856,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1857,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1863,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:1864,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:1864,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1866,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:1874,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:1875,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:1883,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam.c:1884,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:1885,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1887,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1892,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1893,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 2
    argNames:
    - sscan
    - tid
    argTypes:
    - TableScanDesc
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1792
    functionDepth: 4
    functionLinenumber: 1792
    functionLinenumberEnd: 1895
    functionName: heap_get_latest_tid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - HeapCheckForSerializableConflictOut
    - LockBuffer
    - BufferGetPage
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - Assert
    - ItemPointerEquals
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - HeapTupleSatisfiesVisibility
    - UnlockReleaseBuffer
    - RelationGetRelid
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderGetUpdateXid
    - ItemIdIsNormal
    - HeapTupleHeaderGetXmin
    - PageGetItemId
    - HeapTupleHeaderIndicatesMovedPartitions
    - ItemPointerIsValid
    - HeapTupleHeaderIsOnlyLocked
    - TransactionIdEquals
    - ItemIdGetLength
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void heap_get_latest_tid(TableScanDesc sscan,\n\t\t\t\t\tItemPointer
      tid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1917,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:1917,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:1917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1918,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:1922,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:1923,1
    - Dst: HeapTupleSetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:1924,1
    - Dst: HeapTupleSetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:1927,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - tuple
    - buffer
    - xid
    argTypes:
    - HeapTupleHeader
    - Buffer
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1930
      start: 1914
    functionDepth: 1
    functionLinenumber: 1914
    functionLinenumberEnd: 1930
    functionName: UpdateXmaxHintBits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - HeapTupleSetHintBits
    - Assert
    - TransactionIdDidCommit
    - HEAP_XMAX_IS_LOCKED_ONLY
    - TransactionIdEquals
    - HeapTupleHeaderGetRawXmax
    linkageType: ''
    returnType: void
    signature: void UpdateXmaxHintBits(HeapTupleHeader tuple, Buffer buffer, TransactionId
      xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/heap/heapam.c:1941,1
    - Dst: GetAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1948
      start: 1936
    functionDepth: 1
    functionLinenumber: 1936
    functionLinenumberEnd: 1948
    functionName: GetBulkInsertState
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - GetAccessStrategy
    - palloc_object
    linkageType: ''
    returnType: BulkInsertState
    signature: BulkInsertState GetBulkInsertState(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1957,1
    - Dst: FreeAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1958,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:1959,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bistate
    argTypes:
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1960
      start: 1953
    functionDepth: 1
    functionLinenumber: 1953
    functionLinenumberEnd: 1960
    functionName: FreeBulkInsertState
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - pfree
    - ReleaseBuffer
    - FreeAccessStrategy
    linkageType: ''
    returnType: void
    signature: void FreeBulkInsertState(BulkInsertState bistate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1969,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bistate
    argTypes:
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1965
    functionDepth: 1
    functionLinenumber: 1965
    functionLinenumberEnd: 1982
    functionName: ReleaseBulkInsertStatePin
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void ReleaseBulkInsertStatePin(BulkInsertState bistate)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2007,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2015,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/heap/heapam.c:2015,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/heap/heapam.c:2016,1
    - Dst: AssertHasSnapshotForToast
      Src: /src/postgres/src/backend/access/heap/heapam.c:2018,1
    - Dst: heap_prepare_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2026,1
    - Dst: RelationGetBufferForTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2032,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:2037,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:2054,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:2057,1
    - Dst: RelationPutHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2059,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2062,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2065,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:2066,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2067,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:2084,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:2085,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:2087,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:2090,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:2102,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2103,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2110,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2111,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2123,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2123,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2123,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/access/heap/heapam.c:2130,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:2136,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2140,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2141,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2152,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2153,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2155,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:2160,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2162,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2164,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:2167,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2169,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2171,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2179,1
    - Dst: pgstat_count_heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2182,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2191,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 59
    argCount: 5
    argNames:
    - relation
    - tup
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - HeapTuple
    - CommandId
    - uint32
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2193
      start: 2003
    functionDepth: 4
    functionLinenumber: 2003
    functionLinenumberEnd: 2193
    functionName: heap_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 4
    functionsReached:
    - XLogInsert
    - AssertHasSnapshotForToast
    - log_heap_new_cid
    - BufferGetPage
    - XLogRegisterData
    - ItemPointerGetOffsetNumber
    - CacheInvalidateHeapTuple
    - XLogRegisterBufData
    - PageIsAllVisible
    - ReleaseBuffer
    - XLogBeginInsert
    - Assert
    - heap_freetuple
    - BufferGetBlockNumber
    - PageClearAllVisible
    - RelationPutHeapTuple
    - RelationGetBufferForTuple
    - XLogSetRecordFlags
    - PageGetMaxOffsetNumber
    - pgstat_count_heap_insert
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - PageSetLSN
    - heap_prepare_insert
    - HeapTupleHeaderGetNatts
    - MarkBufferDirty
    - GetCurrentTransactionId
    - XLogRegisterBuffer
    - PageSetPrunable
    - CheckForSerializableConflictIn
    - RelationGetNumberOfAttributes
    - RelationIsLogicallyLogged
    - visibilitymap_clear
    - START_CRIT_SECTION
    - RelationIsAccessibleInLogicalDecoding
    - RelationNeedsWAL
    - TransactionIdIsNormal
    - END_CRIT_SECTION
    - IsToastRelation
    linkageType: ''
    returnType: void
    signature: "void heap_insert(Relation relation, HeapTuple tup, CommandId cid,\n\t\t\tuint32
      options, BulkInsertState bistate)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/heap/heapam.c:2211,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:2212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:2213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:2214,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:2219,1
    - Dst: HeapTupleHeaderSetXminFrozen
      Src: /src/postgres/src/backend/access/heap/heapam.c:2221,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:2223,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2224,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2235,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:2235,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:2238,1
    - Dst: heap_toast_insert_or_update
      Src: /src/postgres/src/backend/access/heap/heapam.c:2239,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 5
    argNames:
    - relation
    - tup
    - xid
    - cid
    - options
    argTypes:
    - Relation
    - HeapTuple
    - TransactionId
    - CommandId
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2242
      start: 2201
    functionDepth: 2
    functionLinenumber: 2201
    functionLinenumberEnd: 2242
    functionName: heap_prepare_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - heap_toast_insert_or_update
    - HeapTupleHeaderSetXminFrozen
    - errcode
    - Assert
    - HeapTupleHasExternal
    - ereport
    - HeapTupleHeaderSetXmin
    - errmsg
    - HeapTupleHeaderSetCmin
    - IsParallelWorker
    - RelationGetRelid
    - HeapTupleHeaderSetXmax
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple heap_prepare_insert(Relation relation, HeapTuple tup, TransactionId
      xid,\n\t\t\t\t\tCommandId cid, uint32 options)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - heaptuples
    - done
    - ntuples
    - saveFreeSpace
    argTypes:
    - HeapTuple*
    - int
    - int
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2268
      start: 2249
    functionDepth: 1
    functionLinenumber: 2249
    functionLinenumberEnd: 2268
    functionName: heap_multi_insert_pages
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    linkageType: ''
    returnType: int
    signature: int heap_multi_insert_pages(HeapTuple *heaptuples, int done, int ntuples,
      Size saveFreeSpace)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2285,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/access/heap/heapam.c:2294,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:2295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2301,1
    - Dst: AssertHasSnapshotForToast
      Src: /src/postgres/src/backend/access/heap/heapam.c:2303,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:2305,1
    - Dst: RelationGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam.c:2306,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:2310,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2315,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2316,1
    - Dst: heap_prepare_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2318,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:2345,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam.c:2355,1
    - Dst: heap_multi_insert_pages
      Src: /src/postgres/src/backend/access/heap/heapam.c:2369,1
    - Dst: RelationGetBufferForTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2383,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:2387,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2389,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2395,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:2399,1
    - Dst: RelationPutHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2405,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2412,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam.c:2418,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2418,1
    - Dst: RelationPutHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2421,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2428,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2439,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2442,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:2443,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2444,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2449,1
    - Dst: PageClearPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:2450,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/heapam.c:2451,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2451,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:2463,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:2464,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:2466,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2503,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2530,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2532,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:2541,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2548,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2574,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2575,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2576,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2578,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2580,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:2583,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2585,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2590,1
    - Dst: BufferIsDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:2590,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2591,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:2591,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:2595,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2598,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2600,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2612,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:2628,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:2636,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2639,1
    - Dst: pgstat_count_heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2646,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 121
    argCount: 6
    argNames:
    - relation
    - slots
    - ntuples
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - TupleTableSlot**
    - int
    - CommandId
    - uint32
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2647
      start: 2281
    functionDepth: 4
    functionLinenumber: 2281
    functionLinenumberEnd: 2647
    functionName: heap_multi_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - LockBuffer
    - AssertHasSnapshotForToast
    - log_heap_new_cid
    - BufferGetPage
    - XLogRegisterData
    - ItemPointerGetOffsetNumber
    - CacheInvalidateHeapTuple
    - XLogRegisterBufData
    - PageIsAllVisible
    - ReleaseBuffer
    - visibilitymap_set
    - memcpy
    - RelationGetTargetPageFreeSpace
    - Assert
    - XLogBeginInsert
    - BufferGetBlockNumber
    - heap_multi_insert_pages
    - PageClearAllVisible
    - RelationPutHeapTuple
    - SHORTALIGN
    - RelationGetBufferForTuple
    - XLogSetRecordFlags
    - PageGetMaxOffsetNumber
    - pgstat_count_heap_insert
    - BufferIsDirty
    - UnlockReleaseBuffer
    - MAXALIGN
    - PageSetLSN
    - PageGetHeapFreeSpace
    - heap_prepare_insert
    - CHECK_FOR_INTERRUPTS
    - PageSetAllVisible
    - MarkBufferDirty
    - GetCurrentTransactionId
    - IsCatalogRelation
    - XLogRegisterBuffer
    - PageSetPrunable
    - CheckForSerializableConflictIn
    - RelationIsLogicallyLogged
    - visibilitymap_clear
    - START_CRIT_SECTION
    - RelationIsAccessibleInLogicalDecoding
    - RelationNeedsWAL
    - TransactionIdIsNormal
    - PageClearPrunable
    - palloc
    - ExecFetchSlotHeapTuple
    - END_CRIT_SECTION
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void heap_multi_insert(Relation relation, TupleTableSlot **slots,
      int ntuples,\n\t\t\t\t  CommandId cid, uint32 options, BulkInsertState bistate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2661,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - relation
    - tup
    argTypes:
    - Relation
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2662
      start: 2658
    functionDepth: 5
    functionLinenumber: 2658
    functionLinenumberEnd: 2662
    functionName: simple_heap_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - heap_insert
    - GetCurrentCommandId
    linkageType: ''
    returnType: void
    signature: void simple_heap_insert(Relation relation, HeapTuple tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - infomask
    - infomask2
    argTypes:
    - uint16
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2682
      start: 2671
    functionDepth: 0
    functionLinenumber: 2671
    functionLinenumberEnd: 2682
    functionName: compute_infobits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8
    signature: uint8 compute_infobits(uint16 infomask, uint16 infomask2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - new_infomask
    - old_infomask
    argTypes:
    - uint16
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2703
      start: 2693
    functionDepth: 0
    functionLinenumber: 2693
    functionLinenumberEnd: 2703
    functionName: xmax_infomask_changed
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool xmax_infomask_changed(uint16 new_infomask, uint16 old_infomask)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2740,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2740,1
    - Dst: AssertHasSnapshotForToast
      Src: /src/postgres/src/backend/access/heap/heapam.c:2742,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/heap/heapam.c:2749,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:2750,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:2751,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:2752,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2754,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2755,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:2756,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2764,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:2765,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2767,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2769,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2770,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:2770,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2772,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:2773,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:2774,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2785,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2787,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:2788,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2789,1
    - Dst: HeapTupleSatisfiesUpdate
      Src: /src/postgres/src/backend/access/heap/heapam.c:2792,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2796,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:2797,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:2798,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:2799,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2807,1
    - Dst: DoesMultiXactIdConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:2827,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2830,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:2837,1
    - Dst: MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:2841,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2844,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2854,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:2855,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:2856,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2856,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2871,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2877,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:2878,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:2880,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2881,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2891,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:2892,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:2893,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2893,1
    - Dst: UpdateXmaxHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:2898,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:2906,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:2907,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:2909,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2922,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2923,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:2924,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:2930,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2937,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2939,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2942,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:2944,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2946,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:2959,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2959,1
    - Dst: HeapTupleHeaderAdjustCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2962,1
    - Dst: ExtractReplicaIdentity
      Src: /src/postgres/src/backend/access/heap/heapam.c:2969,1
    - Dst: MultiXactIdSetOldestMember
      Src: /src/postgres/src/backend/access/heap/heapam.c:2979,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:2981,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2981,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:2986,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:2995,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2997,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3000,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:3001,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3001,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:3010,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3011,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3012,1
    - Dst: HeapTupleHeaderSetMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam.c:3018,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:3020,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:3028,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:3038,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3039,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:3046,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3048,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3069,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:3070,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3072,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:3083,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:3084,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:3091,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3093,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:3095,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:3098,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3100,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3115,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3115,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3117,1
    - Dst: heap_toast_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:3118,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:3125,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3128,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:3134,1
    - Dst: pgstat_count_heap_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:3136,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:3139,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 154
    argCount: 7
    argNames:
    - relation
    - tid
    - cid
    - options
    - crosscheck
    - wait
    - tmfd
    argTypes:
    - Relation
    - ItemPointerData*
    - CommandId
    - uint32
    - Snapshot
    - bool
    - TM_FailureData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3142
      start: 2716
    functionDepth: 4
    functionLinenumber: 2716
    functionLinenumberEnd: 3142
    functionName: heap_delete
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - xmax_infomask_changed
    - TransactionIdIsCurrentTransactionId
    - XLogInsert
    - heap_toast_delete
    - HeapTupleHeaderGetCmax
    - errcode
    - LockBuffer
    - AssertHasSnapshotForToast
    - log_heap_new_cid
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - IsInParallelMode
    - ItemPointerGetOffsetNumber
    - heap_acquire_tuplock
    - compute_new_xmax_infomask
    - HeapTupleHeaderSetCmax
    - CacheInvalidateHeapTuple
    - HeapTupleHeaderSetXmax
    - ExtractReplicaIdentity
    - PageIsAllVisible
    - ReleaseBuffer
    - visibilitymap_pin
    - MultiXactIdWait
    - HeapTupleHeaderClearHotUpdated
    - XLogBeginInsert
    - Assert
    - pgstat_count_heap_delete
    - BufferGetBlockNumber
    - heap_freetuple
    - PageClearAllVisible
    - ItemPointerEquals
    - XLogSetRecordFlags
    - ReadBuffer
    - errmsg
    - HeapTupleSatisfiesVisibility
    - UnlockReleaseBuffer
    - HeapTupleHeaderGetRawXmax
    - ItemPointerGetBlockNumber
    - UpdateXmaxHintBits
    - HeapTupleHeaderGetUpdateXid
    - PageSetLSN
    - MultiXactIdSetOldestMember
    - ItemIdIsNormal
    - HeapTupleHasExternal
    - DoesMultiXactIdConflict
    - ereport
    - PageGetItemId
    - HeapTupleSatisfiesUpdate
    - HeapTupleHeaderAdjustCmax
    - XactLockTableWait
    - MarkBufferDirty
    - GetCurrentTransactionId
    - XLogRegisterBuffer
    - ItemPointerIsValid
    - PageSetPrunable
    - CheckForSerializableConflictIn
    - compute_infobits
    - HEAP_XMAX_IS_LOCKED_ONLY
    - visibilitymap_clear
    - HeapTupleHeaderIsOnlyLocked
    - TransactionIdEquals
    - UnlockTupleTuplock
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - RelationIsAccessibleInLogicalDecoding
    - HeapTupleHeaderSetMovedPartitions
    - ItemIdGetLength
    - END_CRIT_SECTION
    - RelationGetRelid
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heap_delete(Relation relation, const ItemPointerData *tid,\n\t\t\tCommandId
      cid, uint32 options, Snapshot crosscheck,\n\t\t\tbool wait, TM_FailureData *tmfd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: heap_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:3158,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:3159,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:3168,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:3176,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:3180,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:3184,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - relation
    - tid
    argTypes:
    - Relation
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3187
      start: 3152
    functionDepth: 5
    functionLinenumber: 3152
    functionLinenumberEnd: 3187
    functionName: simple_heap_delete
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - elog
    - GetCurrentCommandId
    - heap_delete
    linkageType: ''
    returnType: void
    signature: void simple_heap_delete(Relation relation, const ItemPointerData *tid)
  - BBCount: 59
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:3207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3248,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3251,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/heap/heapam.c:3251,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/heap/heapam.c:3252,1
    - Dst: AssertHasSnapshotForToast
      Src: /src/postgres/src/backend/access/heap/heapam.c:3254,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/heap/heapam.c:3261,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:3262,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:3263,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:3264,1
    - Dst: check_lock_if_inplace_updateable_rel
      Src: /src/postgres/src/backend/access/heap/heapam.c:3267,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3286,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3288,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3290,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3291,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/access/heap/heapam.c:3294,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/access/heap/heapam.c:3295,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/access/heap/heapam.c:3296,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/access/heap/heapam.c:3297,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3299,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/heap/heapam.c:3300,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3301,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:3302,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3310,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3311,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3313,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:3315,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3315,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3342,1
    - Dst: RelationSupportsSysCache
      Src: /src/postgres/src/backend/access/heap/heapam.c:3342,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3342,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3345,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3347,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3353,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3354,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3355,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3356,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3358,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3366,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:3367,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:3368,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3372,1
    - Dst: HeapDetermineColumnsInfo
      Src: /src/postgres/src/backend/access/heap/heapam.c:3382,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3397,1
    - Dst: MultiXactIdSetOldestMember
      Src: /src/postgres/src/backend/access/heap/heapam.c:3412,1
    - Dst: HeapTupleSatisfiesUpdate
      Src: /src/postgres/src/backend/access/heap/heapam.c:3431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3434,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3438,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:3439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:3440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:3441,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3463,1
    - Dst: DoesMultiXactIdConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:3494,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3497,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:3504,1
    - Dst: MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:3508,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3513,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:3520,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:3522,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3522,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:3547,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3548,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3557,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/heap/heapam.c:3558,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:3561,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:3571,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3588,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:3589,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:3591,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3594,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:3601,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:3602,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3603,1
    - Dst: UpdateXmaxHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:3607,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:3614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3627,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3628,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:3629,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:3635,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3642,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3644,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3647,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:3649,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3651,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3654,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3655,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3656,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3657,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3658,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3659,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3672,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3674,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3675,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3676,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:3686,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3686,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:3701,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3705,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3707,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:3722,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3738,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3739,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3742,1
    - Dst: HeapTupleHeaderAdjustCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3748,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3765,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3765,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3766,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3766,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3770,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3771,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam.c:3774,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:3776,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:3803,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3810,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:3810,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:3812,1
    - Dst: HeapTupleClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:3817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3819,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3819,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3820,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3823,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3834,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:3835,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:3839,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:3841,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3846,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3847,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3849,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:3851,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:3855,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3856,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:3857,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:3860,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3862,1
    - Dst: heap_toast_insert_or_update
      Src: /src/postgres/src/backend/access/heap/heapam.c:3874,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:3875,1
    - Dst: RelationGetBufferForTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:3908,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3916,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3917,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3919,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam.c:3921,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3923,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3930,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:3947,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:3963,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3964,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3979,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3990,1
    - Dst: PageSetFull
      Src: /src/postgres/src/backend/access/heap/heapam.c:3997,1
    - Dst: ExtractReplicaIdentity
      Src: /src/postgres/src/backend/access/heap/heapam.c:4007,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/access/heap/heapam.c:4008,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4013,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:4025,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:4027,1
    - Dst: HeapTupleSetHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:4032,1
    - Dst: HeapTupleSetHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:4034,1
    - Dst: HeapTupleSetHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:4036,1
    - Dst: HeapTupleClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:4041,1
    - Dst: HeapTupleClearHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:4042,1
    - Dst: HeapTupleClearHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:4043,1
    - Dst: RelationPutHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4046,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4053,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4053,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4054,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4057,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4063,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4066,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:4067,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4067,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4070,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4073,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:4074,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4074,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:4079,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:4080,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:4083,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:4091,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4093,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4094,1
    - Dst: log_heap_update
      Src: /src/postgres/src/backend/access/heap/heapam.c:4097,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:4105,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:4107,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4110,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4113,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4114,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4124,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4128,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4129,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4130,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4131,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4132,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4133,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:4139,1
    - Dst: pgstat_count_heap_update
      Src: /src/postgres/src/backend/access/heap/heapam.c:4141,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4150,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4170,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4172,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4173,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4174,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4175,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4176,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4177,1
    CyclomaticComplexity: 90
    EdgeCount: 90
    ICount: 330
    argCount: 10
    argNames:
    - relation
    - otid
    - newtup
    - cid
    - pg_attribute_unused
    - crosscheck
    - wait
    - tmfd
    - lockmode
    - update_indexes
    argTypes:
    - Relation
    - ItemPointerData*
    - HeapTuple
    - CommandId
    - uint32
    - Snapshot
    - bool
    - TM_FailureData*
    - LockTupleMode*
    - TU_UpdateIndexes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4180
      start: 3200
    functionDepth: 4
    functionLinenumber: 3200
    functionLinenumberEnd: 4180
    functionName: heap_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - heap_acquire_tuplock
    - visibilitymap_pin
    - heap_freetuple
    - RelationPutHeapTuple
    - RelationGetBufferForTuple
    - check_lock_if_inplace_updateable_rel
    - UnlockReleaseBuffer
    - UpdateXmaxHintBits
    - ItemIdIsNormal
    - HeapTupleHasExternal
    - RelationGetIndexAttrBitmap
    - DoesMultiXactIdConflict
    - PageGetItemId
    - HeapTupleSatisfiesUpdate
    - HeapTupleHeaderGetNatts
    - MarkBufferDirty
    - GetCurrentTransactionId
    - compute_infobits
    - TransactionIdEquals
    - RelationIsAccessibleInLogicalDecoding
    - RelationNeedsWAL
    - pgstat_count_heap_update
    - END_CRIT_SECTION
    - xmax_infomask_changed
    - TransactionIdIsCurrentTransactionId
    - HeapTupleHeaderGetCmax
    - LockBuffer
    - AssertHasSnapshotForToast
    - bms_free
    - compute_new_xmax_infomask
    - HeapTupleHeaderSetCmax
    - PageIsAllVisible
    - ReleaseBuffer
    - Assert
    - HeapDetermineColumnsInfo
    - HeapTupleSatisfiesVisibility
    - errmsg
    - TransactionIdDidAbort
    - HeapTupleHeaderSetCmin
    - ItemPointerGetBlockNumber
    - ereport
    - XactLockTableWait
    - BufferIsValid
    - ItemPointerIsValid
    - HeapTupleHeaderSetXmin
    - GetMultiXactIdHintBits
    - HeapTupleClearHeapOnly
    - RelationGetRelid
    - XLogInsert
    - RelationSupportsSysCache
    - errcode
    - log_heap_new_cid
    - BufferGetPage
    - PageGetItem
    - IsInParallelMode
    - bms_add_members
    - HeapTupleHeaderSetXmax
    - MultiXactIdWait
    - XLogBeginInsert
    - ReadBuffer
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - PageSetLSN
    - MultiXactIdSetOldestMember
    - PageGetHeapFreeSpace
    - PageSetPrunable
    - HeapTupleGetUpdateXid
    - RelationGetNumberOfAttributes
    - HeapTupleSetHeapOnly
    - HeapTupleClearHotUpdated
    - HeapTupleSetHotUpdated
    - HEAP_LOCKED_UPGRADED
    - START_CRIT_SECTION
    - bms_overlap
    - ItemIdGetLength
    - TransactionIdIsValid
    - PageSetFull
    - XLogRegisterData
    - ItemPointerGetOffsetNumber
    - CacheInvalidateHeapTuple
    - ExtractReplicaIdentity
    - BufferGetBlockNumber
    - PageClearAllVisible
    - ItemPointerEquals
    - HeapTupleHeaderGetRawXmax
    - MAXALIGN
    - HeapTupleHeaderGetUpdateXid
    - heap_toast_insert_or_update
    - HeapTupleHeaderAdjustCmax
    - XLogRegisterBuffer
    - CheckForSerializableConflictIn
    - INJECTION_POINT
    - log_heap_update
    - HEAP_XMAX_IS_LOCKED_ONLY
    - visibilitymap_clear
    - UnlockTupleTuplock
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heap_update(Relation relation, const ItemPointerData *otid,
      HeapTuple newtup,\n\t\t\tCommandId cid, uint32 options pg_attribute_unused(),
      Snapshot crosscheck, bool wait,\n\t\t\tTM_FailureData *tmfd, LockTupleMode *lockmode,\n\t\t\tTU_UpdateIndexes
      *update_indexes)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4193,1
    - Dst: SET_LOCKTAG_TUPLE
      Src: /src/postgres/src/backend/access/heap/heapam.c:4200,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4203,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4204,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/access/heap/heapam.c:4205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4210,1
    - Dst: IsInplaceUpdateRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:4210,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4214,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/heap/heapam.c:4219,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:4224,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/heap/heapam.c:4231,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4233,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/heap/heapam.c:4234,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4237,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/access/heap/heapam.c:4239,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/access/heap/heapam.c:4240,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4241,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4243,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4246,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4247,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/heap/heapam.c:4253,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4255,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4257,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4259,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4260,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - relation
    - otid
    - newtup
    argTypes:
    - Relation
    - ItemPointerData*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4264
      start: 4187
    functionDepth: 3
    functionLinenumber: 4187
    functionLinenumberEnd: 4264
    functionName: check_lock_if_inplace_updateable_rel
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - elog
    - IsInplaceUpdateRelation
    - SET_LOCKTAG_RELATION
    - Assert
    - index_open
    - IsSharedRelation
    - index_close
    - ItemPointerGetOffsetNumber
    - GETSTRUCT
    - NameStr
    - LockHeldByMe
    - ItemPointerGetBlockNumber
    - SET_LOCKTAG_TUPLE
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void check_lock_if_inplace_updateable_rel(Relation relation,\n\t\t\t\t\t\t\t\t\t
      const ItemPointerData *otid,\n\t\t\t\t\t\t\t\t\t HeapTuple newtup)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/heap/heapam.c:4273,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:4278,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/heap/heapam.c:4285,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4287,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/heap/heapam.c:4288,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4291,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/access/heap/heapam.c:4293,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4294,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4296,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4299,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - oldtup
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4301
      start: 4270
    functionDepth: 3
    functionLinenumber: 4270
    functionLinenumberEnd: 4301
    functionName: check_inplace_rel_lock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - elog
    - index_open
    - IsSharedRelation
    - index_close
    - ItemPointerGetBlockNumber
    - GETSTRUCT
    - NameStr
    - ItemPointerGetOffsetNumber
    - LockHeldByMe
    - SET_LOCKTAG_RELATION
    linkageType: ''
    returnType: void
    signature: void check_inplace_rel_lock(HeapTuple oldtup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4337,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4343,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4344,1
    - Dst: datumIsEqual
      Src: /src/postgres/src/backend/access/heap/heapam.c:4345,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 6
    argNames:
    - tupdesc
    - attrnum
    - value1
    - value2
    - isnull1
    - isnull2
    argTypes:
    - TupleDesc
    - int
    - Datum
    - Datum
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4347
      start: 4308
    functionDepth: 2
    functionLinenumber: 4308
    functionLinenumberEnd: 4347
    functionName: heap_attr_equals
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - DatumGetObjectId
    - TupleDescCompactAttr
    - Assert
    - datumIsEqual
    linkageType: ''
    returnType: bool
    signature: "bool heap_attr_equals(TupleDesc tupdesc, int attrnum, Datum value1,
      Datum value2,\n\t\t\t\t bool isnull1, bool isnull2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4368,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4371,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4387,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4400,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4411,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4412,1
    - Dst: heap_attr_equals
      Src: /src/postgres/src/backend/access/heap/heapam.c:4414,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4417,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4426,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:4433,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4433,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4434,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 6
    argNames:
    - relation
    - interesting_cols
    - external_cols
    - oldtup
    - newtup
    - has_external
    argTypes:
    - Relation
    - Bitmapset*
    - Bitmapset*
    - HeapTuple
    - HeapTuple
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4439
      start: 4359
    functionDepth: 4
    functionLinenumber: 4359
    functionLinenumberEnd: 4439
    functionName: HeapDetermineColumnsInfo
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - heap_getattr
    - RelationGetDescr
    - bms_is_member
    - VARATT_IS_EXTERNAL
    - bms_next_member
    - TupleDescCompactAttr
    - heap_attr_equals
    - bms_add_member
    - DatumGetPointer
    linkageType: ''
    returnType: Bitmapset
    signature: "Bitmapset *\nHeapDetermineColumnsInfo(Relation relation,\n\t\t\t\t\t\t
      Bitmapset *interesting_cols,\n\t\t\t\t\t\t Bitmapset *external_cols,\n\t\t\t\t\t\t
      HeapTuple oldtup, HeapTuple newtup,\n\t\t\t\t\t\t bool *has_external)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: heap_update
      Src: /src/postgres/src/backend/access/heap/heapam.c:4457,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4458,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4466,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4474,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4478,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4482,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - relation
    - otid
    - tup
    - update_indexes
    argTypes:
    - Relation
    - ItemPointerData*
    - HeapTuple
    - TU_UpdateIndexes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4485
      start: 4449
    functionDepth: 5
    functionLinenumber: 4449
    functionLinenumberEnd: 4485
    functionName: simple_heap_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - elog
    - GetCurrentCommandId
    - heap_update
    linkageType: ''
    returnType: void
    signature: "void simple_heap_update(Relation relation, const ItemPointerData *otid,
      HeapTuple tup,\n\t\t\t\t   TU_UpdateIndexes *update_indexes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - mode
    - is_update
    argTypes:
    - LockTupleMode
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4506
      start: 4491
    functionDepth: 1
    functionLinenumber: 4491
    functionLinenumberEnd: 4506
    functionName: get_mxact_status_for_lock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: MultiXactStatus
    signature: MultiXactStatus get_mxact_status_for_lock(LockTupleMode mode, bool
      is_update)
  - BBCount: 63
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4560,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4560,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4561,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4569,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4569,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:4570,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4572,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4574,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4575,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4575,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4576,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:4576,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:4578,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:4579,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4580,1
    - Dst: HeapTupleSatisfiesUpdate
      Src: /src/postgres/src/backend/access/heap/heapam.c:4583,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4607,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:4610,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4612,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:4642,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4643,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4648,1
    - Dst: TUPLOCK_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:4651,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:4653,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:4675,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4682,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4682,1
    - Dst: HEAP_XMAX_IS_SHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4683,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4684,1
    - Dst: HEAP_XMAX_IS_SHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4688,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4689,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4696,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4703,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4747,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:4754,1
    - Dst: heap_lock_updated_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4758,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4760,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4766,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4771,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:4780,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4803,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4804,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4806,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4812,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4813,1
    - Dst: DoesMultiXactIdConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:4827,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4834,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:4835,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:4836,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4836,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4844,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4846,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:4849,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:4850,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4850,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4871,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4874,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:4875,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:4876,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4876,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4879,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4879,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4896,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:4912,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4921,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:4927,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4931,1
    - Dst: MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:4937,1
    - Dst: ConditionalMultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:4941,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4947,1
    - Dst: ConditionalMultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:4952,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:4955,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:4956,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:4957,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:4958,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:4979,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:4983,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4987,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:4992,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:4993,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:4994,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:4995,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:4996,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5002,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5003,1
    - Dst: heap_lock_updated_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:5007,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:5009,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5015,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5020,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:5027,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5028,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5028,1
    - Dst: UpdateXmaxHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5042,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5055,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:5056,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5058,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5067,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5077,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5079,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5080,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5082,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5084,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5099,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5101,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5102,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5103,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5107,1
    - Dst: MultiXactIdSetOldestMember
      Src: /src/postgres/src/backend/access/heap/heapam.c:5118,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:5125,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:5126,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:5129,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5145,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:5146,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5147,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5156,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5160,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:5161,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:5166,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:5180,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5185,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5186,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:5188,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5190,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:5193,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5197,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:5199,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:5202,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5207,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5210,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5211,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5223,1
    CyclomaticComplexity: 119
    EdgeCount: 119
    ICount: 266
    argCount: 8
    argNames:
    - relation
    - tuple
    - cid
    - mode
    - wait_policy
    - follow_updates
    - buffer
    - tmfd
    argTypes:
    - Relation
    - HeapTuple
    - CommandId
    - LockTupleMode
    - LockWaitPolicy
    - bool
    - Buffer*
    - TM_FailureData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5226
      start: 4538
    functionDepth: 4
    functionLinenumber: 4538
    functionLinenumberEnd: 5226
    functionName: heap_lock_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - xmax_infomask_changed
    - XLogInsert
    - HeapTupleHeaderGetCmax
    - errcode
    - heap_lock_updated_tuple
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - HEAP_XMAX_IS_EXCL_LOCKED
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - heap_acquire_tuplock
    - RelationGetRelationName
    - compute_new_xmax_infomask
    - HeapTupleHeaderSetXmax
    - elog
    - PageIsAllVisible
    - ReleaseBuffer
    - visibilitymap_pin
    - MultiXactIdWait
    - HeapTupleHeaderClearHotUpdated
    - XLogBeginInsert
    - Assert
    - pfree
    - get_mxact_status_for_lock
    - TUPLOCK_from_mxstatus
    - ItemPointerEquals
    - ReadBuffer
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - errmsg
    - HeapTupleHeaderGetRawXmax
    - ItemPointerGetBlockNumber
    - UpdateXmaxHintBits
    - HeapTupleHeaderGetUpdateXid
    - PageSetLSN
    - MultiXactIdSetOldestMember
    - ItemIdIsNormal
    - ItemPointerCopy
    - ConditionalMultiXactIdWait
    - DoesMultiXactIdConflict
    - ereport
    - PageGetItemId
    - HeapTupleSatisfiesUpdate
    - XactLockTableWait
    - BufferIsValid
    - MarkBufferDirty
    - GetCurrentTransactionId
    - XLogRegisterBuffer
    - ConditionalXactLockTableWait
    - compute_infobits
    - HEAP_XMAX_IS_LOCKED_ONLY
    - visibilitymap_clear
    - HEAP_XMAX_IS_SHR_LOCKED
    - HeapTupleHeaderIsOnlyLocked
    - TransactionIdEquals
    - START_CRIT_SECTION
    - UnlockTupleTuplock
    - RelationNeedsWAL
    - GetMultiXactIdMembers
    - ItemIdGetLength
    - END_CRIT_SECTION
    - RelationGetRelid
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heap_lock_tuple(Relation relation, HeapTuple tuple,\n\t\t\t\tCommandId
      cid, LockTupleMode mode, LockWaitPolicy wait_policy,\n\t\t\t\tbool follow_updates,\n\t\t\t\tBuffer
      *buffer, TM_FailureData *tmfd)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5250,1
    - Dst: ConditionalLockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5254,1
    - Dst: ConditionalLockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5259,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:5260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:5261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:5262,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:5263,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 5
    argNames:
    - relation
    - tid
    - mode
    - wait_policy
    - have_tuple_lock
    argTypes:
    - Relation
    - ItemPointerData*
    - LockTupleMode
    - LockWaitPolicy
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5269
      start: 5240
    functionDepth: 1
    functionLinenumber: 5240
    functionLinenumberEnd: 5269
    functionName: heap_acquire_tuplock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 3
    functionsReached:
    - LockTupleTuplock
    - ConditionalLockTupleTuplock
    - errcode
    - ereport
    - errmsg
    - RelationGetRelationName
    linkageType: ''
    returnType: bool
    signature: "bool heap_acquire_tuplock(Relation relation, const ItemPointerData
      *tid, LockTupleMode mode,\n\t\t\t\t\t LockWaitPolicy wait_policy, bool *have_tuple_lock)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5300,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:5300,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:5345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5357,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5366,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam.c:5385,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5385,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5387,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:5388,1
    - Dst: MultiXactIdGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5388,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5401,1
    - Dst: MultiXactIdExpand
      Src: /src/postgres/src/backend/access/heap/heapam.c:5403,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5405,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5421,1
    - Dst: MultiXactIdCreate
      Src: /src/postgres/src/backend/access/heap/heapam.c:5428,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5429,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:5431,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5442,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5444,1
    - Dst: HEAP_XMAX_IS_SHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5446,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5448,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:5463,1
    - Dst: TUPLOCK_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5478,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5496,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5496,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5508,1
    - Dst: MultiXactIdCreate
      Src: /src/postgres/src/backend/access/heap/heapam.c:5509,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5511,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5513,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:5514,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5528,1
    - Dst: MultiXactIdCreate
      Src: /src/postgres/src/backend/access/heap/heapam.c:5535,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5536,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 115
    argCount: 9
    argNames:
    - xmax
    - old_infomask
    - old_infomask2
    - add_to_xmax
    - mode
    - is_update
    - result_xmax
    - result_infomask
    - result_infomask2
    argTypes:
    - TransactionId
    - uint16
    - uint16
    - TransactionId
    - LockTupleMode
    - bool
    - TransactionId*
    - uint16*
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5553
      start: 5289
    functionDepth: 2
    functionLinenumber: 5289
    functionLinenumberEnd: 5553
    functionName: compute_new_xmax_infomask
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 3
    functionsReached:
    - elog
    - TransactionIdIsCurrentTransactionId
    - TransactionIdIsInProgress
    - Assert
    - HEAP_LOCKED_UPGRADED
    - HEAP_XMAX_IS_LOCKED_ONLY
    - TransactionIdDidCommit
    - get_mxact_status_for_lock
    - HEAP_XMAX_IS_SHR_LOCKED
    - MultiXactIdCreate
    - MultiXactIdGetUpdateXid
    - TUPLOCK_from_mxstatus
    - HEAP_XMAX_IS_EXCL_LOCKED
    - MultiXactIdExpand
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - GetMultiXactIdHintBits
    - MultiXactIdIsRunning
    linkageType: ''
    returnType: void
    signature: "void compute_new_xmax_infomask(TransactionId xmax, uint16 old_infomask,\n\t\t\t\t\t\t
      \ uint16 old_infomask2, TransactionId add_to_xmax,\n\t\t\t\t\t\t  LockTupleMode
      mode, bool is_update,\n\t\t\t\t\t\t  TransactionId *result_xmax, uint16 *result_infomask,\n\t\t\t\t\t\t
      \ uint16 *result_infomask2)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5578,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:5585,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:5594,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:5602,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5602,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5603,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/heap/heapam.c:5614,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:5616,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5633,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:5636,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5636,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5637,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5640,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 5
    argNames:
    - status
    - xid
    - mode
    - tup
    - needwait
    argTypes:
    - MultiXactStatus
    - TransactionId
    - LockTupleMode
    - HeapTuple
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5651
      start: 5570
    functionDepth: 2
    functionLinenumber: 5570
    functionLinenumberEnd: 5651
    functionName: test_lockmode_for_conflict
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - TransactionIdIsInProgress
    - LOCKMODE_from_mxstatus
    - get_mxact_status_for_lock
    - DoLockModesConflict
    - TransactionIdDidCommit
    - ItemPointerEquals
    - ISUPDATE_from_mxstatus
    - TransactionIdDidAbort
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result test_lockmode_for_conflict(MultiXactStatus status, TransactionId
      xid,\n\t\t\t\t\t\t   LockTupleMode mode, HeapTuple tup,\n\t\t\t\t\t\t   bool
      *needwait)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:5681,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:5687,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:5688,1
    - Dst: heap_fetch
      Src: /src/postgres/src/backend/access/heap/heapam.c:5690,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam.c:5704,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5712,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:5712,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5714,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5720,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5733,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:5733,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5735,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5736,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5737,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5744,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5745,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5745,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/heap/heapam.c:5757,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5757,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5765,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5778,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5794,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5794,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:5796,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5797,1
    - Dst: test_lockmode_for_conflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:5800,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:5818,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5824,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:5825,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:5828,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:5833,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:5838,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5848,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5850,1
    - Dst: HEAP_XMAX_IS_SHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5852,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5854,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:5868,1
    - Dst: test_lockmode_for_conflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:5880,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5897,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:5898,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:5910,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5914,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:5914,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:5915,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:5919,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5922,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:5928,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:5931,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:5935,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5937,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5938,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:5940,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5942,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:5946,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5948,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:5950,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:5953,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam.c:5958,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5959,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:5960,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5967,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:5968,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5969,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5975,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5979,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 142
    argCount: 5
    argNames:
    - rel
    - priorXmax
    - tid
    - xid
    - mode
    argTypes:
    - Relation
    - TransactionId
    - ItemPointerData*
    - TransactionId
    - LockTupleMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5982
      start: 5661
    functionDepth: 5
    functionLinenumber: 5661
    functionLinenumberEnd: 5982
    functionName: heap_lock_updated_tuple_rec
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - HEAP_XMAX_IS_EXCL_LOCKED
    - compute_new_xmax_infomask
    - ItemPointerGetOffsetNumber
    - test_lockmode_for_conflict
    - HeapTupleHeaderSetXmax
    - elog
    - PageIsAllVisible
    - ReleaseBuffer
    - visibilitymap_pin
    - XLogBeginInsert
    - Assert
    - pfree
    - ItemPointerEquals
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - TransactionIdDidAbort
    - UnlockReleaseBuffer
    - HeapTupleHeaderGetRawXmax
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderGetUpdateXid
    - PageSetLSN
    - ItemPointerCopy
    - HeapTupleHeaderGetXmin
    - heap_fetch
    - CHECK_FOR_INTERRUPTS
    - XactLockTableWait
    - MarkBufferDirty
    - HeapTupleHeaderIndicatesMovedPartitions
    - XLogRegisterBuffer
    - compute_infobits
    - HEAP_LOCKED_UPGRADED
    - HEAP_XMAX_IS_LOCKED_ONLY
    - visibilitymap_clear
    - HEAP_XMAX_IS_SHR_LOCKED
    - HeapTupleHeaderIsOnlyLocked
    - TransactionIdEquals
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - GetMultiXactIdMembers
    - END_CRIT_SECTION
    - TransactionIdIsValid
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heap_lock_updated_tuple_rec(Relation rel, TransactionId
      priorXmax,\n\t\t\t\t\t\t\tconst ItemPointerData *tid, TransactionId xid,\n\t\t\t\t\t\t\tLockTupleMode
      mode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/heap/heapam.c:6016,1
    - Dst: ItemPointerIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam.c:6022,1
    - Dst: MultiXactIdSetOldestMember
      Src: /src/postgres/src/backend/access/heap/heapam.c:6035,1
    - Dst: MultiXactIdGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6038,1
    - Dst: heap_lock_updated_tuple_rec
      Src: /src/postgres/src/backend/access/heap/heapam.c:6039,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - rel
    - prior_infomask
    - prior_raw_xmax
    - prior_ctid
    - xid
    - mode
    argTypes:
    - Relation
    - uint16
    - TransactionId
    - ItemPointerData*
    - TransactionId
    - LockTupleMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6044
      start: 6009
    functionDepth: 6
    functionLinenumber: 6009
    functionLinenumberEnd: 6044
    functionName: heap_lock_updated_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - heap_lock_updated_tuple_rec
    - MultiXactIdSetOldestMember
    - INJECTION_POINT
    - MultiXactIdGetUpdateXid
    - ItemPointerIndicatesMovedPartitions
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heap_lock_updated_tuple(Relation rel,\n\t\t\t\t\t\tuint16
      prior_infomask,\n\t\t\t\t\t\tTransactionId prior_raw_xmax,\n\t\t\t\t\t\tconst
      ItemPointerData *prior_ctid,\n\t\t\t\t\t\tTransactionId xid, LockTupleMode mode)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6071,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6071,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6072,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:6073,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6075,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6076,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:6077,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6078,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6079,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:6080,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:6082,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6085,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6087,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam.c:6087,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:6089,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:6098,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6103,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6105,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:6108,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6110,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6111,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6113,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:6115,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6118,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - relation
    - tid
    argTypes:
    - Relation
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6121
      start: 6062
    functionDepth: 4
    functionLinenumber: 6062
    functionLinenumberEnd: 6121
    functionName: heap_finish_speculative
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - elog
    - XLogBeginInsert
    - Assert
    - XLogSetRecordFlags
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - PageSetLSN
    - ItemIdIsNormal
    - PageGetItemId
    - HeapTupleHeaderIsSpeculative
    - MarkBufferDirty
    - XLogRegisterBuffer
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void heap_finish_speculative(Relation relation, const ItemPointerData
      *tid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6159,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6159,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6161,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6162,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:6163,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6171,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:6171,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6173,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6174,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6174,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6176,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:6177,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:6178,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:6186,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:6187,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam.c:6187,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:6188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6189,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:6189,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6209,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6209,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6214,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:6218,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:6230,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:6235,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:6243,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:6249,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6251,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6254,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6255,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6256,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6260,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:6262,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6265,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6267,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6271,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:6271,1
    - Dst: heap_toast_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:6272,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6281,1
    - Dst: pgstat_count_heap_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:6284,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 2
    argNames:
    - relation
    - tid
    argTypes:
    - Relation
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6285
      start: 6149
    functionDepth: 4
    functionLinenumber: 6149
    functionLinenumberEnd: 6285
    functionName: heap_abort_speculative
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - heap_toast_delete
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - elog
    - PageIsAllVisible
    - ReleaseBuffer
    - pgstat_count_heap_delete
    - XLogBeginInsert
    - Assert
    - ReadBuffer
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderIsHeapOnly
    - PageSetLSN
    - ItemIdIsNormal
    - HeapTupleHasExternal
    - PageGetItemId
    - HeapTupleHeaderIsSpeculative
    - MarkBufferDirty
    - GetCurrentTransactionId
    - XLogRegisterBuffer
    - ItemPointerIsValid
    - PageSetPrunable
    - TransactionIdPrecedes
    - compute_infobits
    - HeapTupleHeaderSetXmin
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - TransactionIdIsValid
    - ItemIdGetLength
    - END_CRIT_SECTION
    - RelationGetRelid
    - IsToastRelation
    linkageType: ''
    returnType: void
    signature: void heap_abort_speculative(Relation relation, const ItemPointerData
      *tid)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6341,1
    - Dst: check_inplace_rel_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:6342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6345,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6345,1
    - Dst: CacheInvalidateHeapTupleInplace
      Src: /src/postgres/src/backend/access/heap/heapam.c:6358,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6360,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6361,1
    - Dst: HeapTupleSatisfiesUpdate
      Src: /src/postgres/src/backend/access/heap/heapam.c:6372,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6372,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6378,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6379,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6380,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6390,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6391,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:6392,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:6399,1
    - Dst: DoesMultiXactIdConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:6408,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6411,1
    - Dst: release_callback
      Src: /src/postgres/src/backend/access/heap/heapam.c:6412,1
    - Dst: MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:6414,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6421,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:6423,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6427,1
    - Dst: release_callback
      Src: /src/postgres/src/backend/access/heap/heapam.c:6428,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:6430,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6439,1
    - Dst: release_callback
      Src: /src/postgres/src/backend/access/heap/heapam.c:6440,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6454,1
    - Dst: ForgetInplace_Inval
      Src: /src/postgres/src/backend/access/heap/heapam.c:6455,1
    - Dst: InvalidateCatalogSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:6456,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 4
    argNames:
    - relation
    - oldtup_ptr
    - buffer
    - arg
    argTypes:
    - Relation
    - HeapTuple
    - Buffer
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6459
      start: 6331
    functionDepth: 4
    functionLinenumber: 6331
    functionLinenumberEnd: 6459
    functionName: heap_inplace_lock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - errcode
    - LockBuffer
    - check_inplace_rel_lock
    - LockTuple
    - MultiXactIdWait
    - Assert
    - release_callback
    - UnlockTuple
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - errmsg
    - HeapTupleHeaderGetRawXmax
    - errmsg_internal
    - DoesMultiXactIdConflict
    - ereport
    - HeapTupleSatisfiesUpdate
    - XactLockTableWait
    - BufferIsValid
    - CacheInvalidateHeapTupleInplace
    - ForgetInplace_Inval
    - InvalidateCatalogSnapshot
    - GetCurrentCommandId
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: "bool heap_inplace_lock(Relation relation,\n\t\t\t\t  HeapTuple oldtup_ptr,
      Buffer buffer,\n\t\t\t\t  void (*release_callback) (void *), void *arg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6483,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:6483,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:6487,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/heap/heapam.c:6493,1
    - Dst: inplaceGetInvalidationMessages
      Src: /src/postgres/src/backend/access/heap/heapam.c:6494,1
    - Dst: PreInplace_Inval
      Src: /src/postgres/src/backend/access/heap/heapam.c:6505,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6532,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:6534,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:6537,1
    - Dst: BufferGetBlock
      Src: /src/postgres/src/backend/access/heap/heapam.c:6541,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:6542,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6551,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6557,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6558,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6560,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:6564,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:6565,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:6567,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/access/heap/heapam.c:6568,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6569,1
    - Dst: XLogRegisterBlock
      Src: /src/postgres/src/backend/access/heap/heapam.c:6570,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6572,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6576,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:6578,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:6581,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6583,1
    - Dst: AtInplace_Inval
      Src: /src/postgres/src/backend/access/heap/heapam.c:6589,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6591,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6592,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/access/heap/heapam.c:6594,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6602,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6603,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 4
    argNames:
    - relation
    - oldtup
    - tuple
    - buffer
    argTypes:
    - Relation
    - HeapTuple
    - HeapTuple
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6604
      start: 6469
    functionDepth: 4
    functionLinenumber: 6469
    functionLinenumberEnd: 6604
    functionName: heap_inplace_update_and_unlock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - BufferGetTag
    - XLogRegisterBlock
    - PreInplace_Inval
    - ItemPointerGetOffsetNumber
    - CacheInvalidateHeapTuple
    - XLogRegisterBufData
    - XLogStandbyInfoActive
    - elog
    - memcpy
    - XLogBeginInsert
    - Assert
    - UnlockTuple
    - ItemPointerEquals
    - PageSetLSN
    - AtInplace_Inval
    - IsBootstrapProcessingMode
    - MarkBufferDirty
    - BufferGetBlock
    - inplaceGetInvalidationMessages
    - AcceptInvalidationMessages
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void heap_inplace_update_and_unlock(Relation relation,\n\t\t\t\t\t\t\t
      \  HeapTuple oldtup, HeapTuple tuple,\n\t\t\t\t\t\t\t   Buffer buffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6613,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6614,1
    - Dst: ForgetInplace_Inval
      Src: /src/postgres/src/backend/access/heap/heapam.c:6615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - relation
    - oldtup
    - buffer
    argTypes:
    - Relation
    - HeapTuple
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6616
      start: 6609
    functionDepth: 2
    functionLinenumber: 6609
    functionLinenumberEnd: 6616
    functionName: heap_inplace_unlock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - UnlockTuple
    - ForgetInplace_Inval
    - LockBuffer
    linkageType: ''
    returnType: void
    signature: "void heap_inplace_unlock(Relation relation,\n\t\t\t\t\tHeapTuple oldtup,
      Buffer buffer)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6689,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6691,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:6692,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6698,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6699,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6700,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6701,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6703,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam.c:6713,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:6714,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6715,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6716,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6717,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:6720,1
    - Dst: MultiXactIdGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6728,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6729,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6730,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6731,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6732,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6735,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:6742,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6743,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6744,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6745,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:6765,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:6766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6799,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6799,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6801,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6807,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6813,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6824,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:6826,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/heap/heapam.c:6839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6852,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6852,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:6854,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6860,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:6861,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6863,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6864,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6865,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6866,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6887,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6888,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6889,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6890,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6892,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6900,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:6901,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:6903,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6926,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6927,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6928,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6929,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:6934,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6946,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6955,1
    - Dst: MultiXactIdCreateFromMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:6967,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:6971,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 107
    argCount: 5
    argNames:
    - multi
    - t_infomask
    - cutoffs
    - flags
    - pagefrz
    argTypes:
    - MultiXactId
    - uint16
    - struct VacuumCutoffs*
    - uint16*
    - HeapPageFreeze*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6975
      start: 6670
    functionDepth: 2
    functionLinenumber: 6670
    functionLinenumberEnd: 6975
    functionName: FreezeMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - errcode
    - palloc_array
    - MultiXactIdPrecedes
    - Assert
    - pfree
    - MultiXactIdGetUpdateXid
    - MultiXactIdIsRunning
    - errdetail_internal
    - errmsg_internal
    - TransactionIdIsInProgress
    - TransactionIdDidCommit
    - ereport
    - MultiXactIdCreateFromMembers
    - TransactionIdPrecedes
    - HEAP_LOCKED_UPGRADED
    - HEAP_XMAX_IS_LOCKED_ONLY
    - MultiXactIdIsValid
    - ISUPDATE_from_mxstatus
    - GetMultiXactIdMembers
    - TransactionIdIsValid
    linkageType: ''
    returnType: TransactionId
    signature: "TransactionId FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,\n\t\t\t\t
      \ const struct VacuumCutoffs *cutoffs, uint16 *flags,\n\t\t\t\t  HeapPageFreeze
      *pagefrz)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7040,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:7051,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7052,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7056,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7057,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7058,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7059,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7063,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/heapam.c:7069,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam.c:7078,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7079,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7081,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7082,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7082,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/heapam.c:7090,1
    - Dst: FreezeMultiXactId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7110,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7134,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7135,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7143,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7167,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7167,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:7177,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7189,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7190,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7197,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7199,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7202,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7203,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7204,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7205,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7209,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:7216,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7226,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7227,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7244,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7253,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7259,1
    - Dst: heap_tuple_should_freeze
      Src: /src/postgres/src/backend/access/heap/heapam.c:7289,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 96
    argCount: 5
    argNames:
    - tuple
    - cutoffs
    - pagefrz
    - frz
    - totally_frozen
    argTypes:
    - HeapTupleHeader
    - struct VacuumCutoffs*
    - HeapPageFreeze*
    - HeapTupleFreeze*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7296
      start: 7026
    functionDepth: 3
    functionLinenumber: 7026
    functionLinenumberEnd: 7296
    functionName: heap_prepare_freeze_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - heap_tuple_should_freeze
    - errmsg_internal
    - errcode
    - Assert
    - HEAP_XMAX_IS_LOCKED_ONLY
    - HeapTupleHeaderGetXmin
    - ereport
    - MultiXactIdIsValid
    - HeapTupleHeaderGetXvac
    - TransactionIdIsNormal
    - TransactionIdPrecedesOrEquals
    - TransactionIdIsValid
    - TransactionIdFollows
    - GetMultiXactIdHintBits
    - HeapTupleHeaderGetRawXmax
    - FreezeMultiXactId
    - MultiXactIdPrecedes
    linkageType: ''
    returnType: bool
    signature: "bool heap_prepare_freeze_tuple(HeapTupleHeader tuple,\n\t\t\t\t\t\t
      \ const struct VacuumCutoffs *cutoffs,\n\t\t\t\t\t\t  HeapPageFreeze *pagefrz,\n\t\t\t\t\t\t
      \ HeapTupleFreeze *frz, bool *totally_frozen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:7310,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7315,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:7318,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:7323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7325,1
    - Dst: HeapTupleHeaderXminFrozen
      Src: /src/postgres/src/backend/access/heap/heapam.c:7325,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:7326,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:7326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7327,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7328,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7329,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7342,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7342,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:7343,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:7343,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7344,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7345,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7346,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - buffer
    - tuples
    - ntuples
    argTypes:
    - Buffer
    - HeapTupleFreeze*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7350
      start: 7306
    functionDepth: 4
    functionLinenumber: 7306
    functionLinenumberEnd: 7350
    functionName: heap_pre_freeze_checks
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - errcode
    - Assert
    - HeapTupleHeaderGetRawXmin
    - TransactionIdDidCommit
    - ereport
    - PageGetItemId
    - BufferGetPage
    - PageGetItem
    - unlikely
    - TransactionIdIsNormal
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderXminFrozen
    linkageType: ''
    returnType: void
    signature: "void heap_pre_freeze_checks(Buffer buffer,\n\t\t\t\t\t   HeapTupleFreeze
      *tuples, int ntuples)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:7362,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7367,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:7370,1
    - Dst: heap_execute_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:7371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - tuples
    - ntuples
    argTypes:
    - Buffer
    - HeapTupleFreeze*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7373
      start: 7359
    functionDepth: 4
    functionLinenumber: 7359
    functionLinenumberEnd: 7373
    functionName: heap_freeze_prepared_tuples
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - PageGetItem
    - heap_execute_freeze_tuple
    - PageGetItemId
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: void heap_freeze_prepared_tuples(Buffer buffer, HeapTupleFreeze *tuples,
      int ntuples)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: heap_prepare_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:7406,1
    - Dst: heap_execute_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:7415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 5
    argNames:
    - tuple
    - relfrozenxid
    - relminmxid
    - FreezeLimit
    - MultiXactCutoff
    argTypes:
    - HeapTupleHeader
    - TransactionId
    - TransactionId
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7417
      start: 7381
    functionDepth: 4
    functionLinenumber: 7381
    functionLinenumberEnd: 7417
    functionName: heap_freeze_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - heap_prepare_freeze_tuple
    - heap_execute_freeze_tuple
    linkageType: ''
    returnType: bool
    signature: "bool heap_freeze_tuple(HeapTupleHeader tuple,\n\t\t\t\t  TransactionId
      relfrozenxid, TransactionId relminmxid,\n\t\t\t\t  TransactionId FreezeLimit,
      TransactionId MultiXactCutoff)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:7442,1
    - Dst: TUPLOCK_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7452,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7491,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 3
    argNames:
    - multi
    - new_infomask
    - new_infomask2
    argTypes:
    - MultiXactId
    - uint16*
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7495
      start: 7426
    functionDepth: 1
    functionLinenumber: 7426
    functionLinenumberEnd: 7495
    functionName: GetMultiXactIdHintBits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 3
    functionsReached:
    - pfree
    - GetMultiXactIdMembers
    - TUPLOCK_from_mxstatus
    linkageType: ''
    returnType: void
    signature: "void GetMultiXactIdHintBits(MultiXactId multi, uint16 *new_infomask,\n\t\t\t\t\t
      \  uint16 *new_infomask2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7514,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7515,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:7521,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7530,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7534,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - xmax
    - t_infomask
    argTypes:
    - TransactionId
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7550
      start: 7507
    functionDepth: 1
    functionLinenumber: 7507
    functionLinenumberEnd: 7550
    functionName: MultiXactIdGetUpdateXid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 3
    functionsReached:
    - Assert
    - GetMultiXactIdMembers
    - pfree
    - ISUPDATE_from_mxstatus
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId MultiXactIdGetUpdateXid(TransactionId xmax, uint16 t_infomask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7562,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7564
      start: 7559
    functionDepth: 2
    functionLinenumber: 7559
    functionLinenumberEnd: 7564
    functionName: HeapTupleGetUpdateXid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - HeapTupleHeaderGetRawXmax
    - MultiXactIdGetUpdateXid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId HeapTupleGetUpdateXid(const HeapTupleHeaderData *tup)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:7584,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:7587,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:7588,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7601,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7605,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:7615,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7618,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/heap/heapam.c:7621,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:7627,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7640,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 31
    argCount: 4
    argNames:
    - multi
    - infomask
    - lockmode
    - current_is_member
    argTypes:
    - MultiXactId
    - uint16
    - LockTupleMode
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7644
      start: 7575
    functionDepth: 1
    functionLinenumber: 7575
    functionLinenumberEnd: 7644
    functionName: DoesMultiXactIdConflict
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 4
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - TransactionIdIsInProgress
    - HEAP_LOCKED_UPGRADED
    - pfree
    - HEAP_XMAX_IS_LOCKED_ONLY
    - LOCKMODE_from_mxstatus
    - DoLockModesConflict
    - ISUPDATE_from_mxstatus
    - TransactionIdDidAbort
    - GetMultiXactIdMembers
    linkageType: ''
    returnType: bool
    signature: "bool DoesMultiXactIdConflict(MultiXactId multi, uint16 infomask,\n\t\t\t\t\t\tLockTupleMode
      lockmode, bool *current_is_member)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:7687,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:7688,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:7689,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7700,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:7706,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7706,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7707,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:7709,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:7726,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:7731,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7734,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 9
    argNames:
    - multi
    - status
    - infomask
    - nowait
    - rel
    - ctid
    - oper
    - remaining
    - logLockFailure
    argTypes:
    - MultiXactId
    - MultiXactStatus
    - uint16
    - bool
    - Relation
    - ItemPointerData*
    - XLTW_Oper
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7741
      start: 7675
    functionDepth: 1
    functionLinenumber: 7675
    functionLinenumberEnd: 7741
    functionName: Do_MultiXactIdWait
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - ConditionalXactLockTableWait
    - TransactionIdIsInProgress
    - HEAP_LOCKED_UPGRADED
    - pfree
    - HEAP_XMAX_IS_LOCKED_ONLY
    - DoLockModesConflict
    - LOCKMODE_from_mxstatus
    - XactLockTableWait
    - GetMultiXactIdMembers
    linkageType: ''
    returnType: bool
    signature: "bool Do_MultiXactIdWait(MultiXactId multi, MultiXactStatus status,\n\t\t\t\t
      \  uint16 infomask, bool nowait,\n\t\t\t\t   Relation rel, const ItemPointerData
      *ctid, XLTW_Oper oper,\n\t\t\t\t   int *remaining, bool logLockFailure)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Do_MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:7758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - multi
    - status
    - infomask
    - rel
    - ctid
    - oper
    - remaining
    argTypes:
    - MultiXactId
    - MultiXactStatus
    - uint16
    - Relation
    - ItemPointerData*
    - XLTW_Oper
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7760
      start: 7753
    functionDepth: 2
    functionLinenumber: 7753
    functionLinenumberEnd: 7760
    functionName: MultiXactIdWait
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 5
    functionsReached:
    - Do_MultiXactIdWait
    linkageType: ''
    returnType: void
    signature: "void MultiXactIdWait(MultiXactId multi, MultiXactStatus status, uint16
      infomask,\n\t\t\t\tRelation rel, const ItemPointerData *ctid, XLTW_Oper oper,\n\t\t\t\tint
      *remaining)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Do_MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:7780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - multi
    - status
    - infomask
    - rel
    - remaining
    - logLockFailure
    argTypes:
    - MultiXactId
    - MultiXactStatus
    - uint16
    - Relation
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7782
      start: 7775
    functionDepth: 2
    functionLinenumber: 7775
    functionLinenumberEnd: 7782
    functionName: ConditionalMultiXactIdWait
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - Do_MultiXactIdWait
    linkageType: ''
    returnType: bool
    signature: "bool ConditionalMultiXactIdWait(MultiXactId multi, MultiXactStatus
      status,\n\t\t\t\t\t\t   uint16 infomask, Relation rel, int *remaining,\n\t\t\t\t\t\t
      \  bool logLockFailure)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:7799,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7800,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7810,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7811,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7816,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7817,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam.c:7823,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7824,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleHeader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7829
      start: 7790
    functionDepth: 2
    functionLinenumber: 7790
    functionLinenumberEnd: 7829
    functionName: heap_tuple_needs_eventual_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetXmin
    - MultiXactIdIsValid
    - HeapTupleHeaderGetXvac
    - TransactionIdIsNormal
    - HeapTupleHeaderGetRawXmax
    linkageType: ''
    returnType: bool
    signature: bool heap_tuple_needs_eventual_freeze(HeapTupleHeader tuple)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:7856,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7857,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7859,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7859,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7860,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7862,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7870,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7872,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7874,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7876,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7876,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7878,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7880,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7883,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:7887,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7890,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7901,1
    - Dst: MultiXactIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7901,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7902,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7904,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:7908,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:7909,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7914,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7914,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7915,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7917,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7921,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam.c:7926,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7927,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7929,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7929,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7930,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 4
    argNames:
    - tuple
    - cutoffs
    - NoFreezePageRelfrozenXid
    - NoFreezePageRelminMxid
    argTypes:
    - HeapTupleHeader
    - struct VacuumCutoffs*
    - TransactionId*
    - MultiXactId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7938
      start: 7845
    functionDepth: 2
    functionLinenumber: 7845
    functionLinenumberEnd: 7938
    functionName: heap_tuple_should_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - TransactionIdPrecedes
    - Assert
    - HEAP_LOCKED_UPGRADED
    - HEAP_XMAX_IS_LOCKED_ONLY
    - HeapTupleHeaderGetXmin
    - MultiXactIdIsValid
    - MultiXactIdPrecedesOrEquals
    - pfree
    - HeapTupleHeaderGetXvac
    - TransactionIdIsNormal
    - TransactionIdPrecedesOrEquals
    - GetMultiXactIdMembers
    - HeapTupleHeaderGetRawXmax
    - MultiXactIdPrecedes
    linkageType: ''
    returnType: bool
    signature: "bool heap_tuple_should_freeze(HeapTupleHeader tuple,\n\t\t\t\t\t\t
      const struct VacuumCutoffs *cutoffs,\n\t\t\t\t\t\t TransactionId *NoFreezePageRelfrozenXid,\n\t\t\t\t\t\t
      MultiXactId *NoFreezePageRelminMxid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:7957,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7958,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam.c:7959,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7963,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam.c:7973,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7974,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:7974,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/heapam.c:7977,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - tuple
    - snapshotConflictHorizon
    argTypes:
    - HeapTupleHeader
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7980
      start: 7953
    functionDepth: 2
    functionLinenumber: 7953
    functionLinenumberEnd: 7980
    functionName: HeapTupleHeaderAdvanceConflictHorizon
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - HeapTupleHeaderXminInvalid
    - TransactionIdDidCommit
    - HeapTupleHeaderGetXmin
    - HeapTupleHeaderGetXvac
    - HeapTupleHeaderXminCommitted
    - TransactionIdFollows
    - HeapTupleHeaderGetUpdateXid
    linkageType: ''
    returnType: void
    signature: "void HeapTupleHeaderAdvanceConflictHorizon(HeapTupleHeader tuple,\n\t\t\t\t\t\t\t\t\t
      \ TransactionId *snapshotConflictHorizon)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8011,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8013,1
    - Dst: PrefetchBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8014,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - rel
    - prefetch_state
    - prefetch_count
    argTypes:
    - Relation
    - IndexDeletePrefetchState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8025
      start: 7993
    functionDepth: 3
    functionLinenumber: 7993
    functionLinenumberEnd: 8025
    functionName: index_delete_prefetch_buffer
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumber
    - PrefetchBuffer
    linkageType: ''
    returnType: void
    signature: "void index_delete_prefetch_buffer(Relation rel,\n\t\t\t\t\t\t\t IndexDeletePrefetchState
      *prefetch_state,\n\t\t\t\t\t\t\t int prefetch_count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8046,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8046,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:8048,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:8049,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:8050,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8051,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8052,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:8055,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:8057,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:8058,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/heapam.c:8058,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:8059,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:8060,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8061,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8062,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:8065,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/heapam.c:8067,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8071,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8071,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:8072,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:8074,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:8074,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:8075,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:8076,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8077,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8078,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:8081,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - delstate
    - page
    - maxoff
    - htid
    - istatus
    argTypes:
    - TM_IndexDeleteOp*
    - Page
    - OffsetNumber
    - ItemPointerData*
    - TM_IndexStatus*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8083
      start: 8038
    functionDepth: 3
    functionLinenumber: 8038
    functionLinenumberEnd: 8083
    functionName: index_delete_check_htid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ItemIdIsUsed
    - OffsetNumberIsValid
    - errmsg_internal
    - errcode
    - Assert
    - ItemIdIsNormal
    - ereport
    - PageGetItemId
    - PageGetItem
    - unlikely
    - ItemIdHasStorage
    - ItemPointerGetOffsetNumber
    - RelationGetRelationName
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderIsHeapOnly
    linkageType: ''
    returnType: void
    signature: "void index_delete_check_htid(TM_IndexDeleteOp *delstate,\n\t\t\t\t\t\tPage
      page, OffsetNumber maxoff,\n\t\t\t\t\t\tconst ItemPointerData *htid, TM_IndexStatus
      *istatus)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: InitNonVacuumableSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:8123,1
    - Dst: GlobalVisTestFor
      Src: /src/postgres/src/backend/access/heap/heapam.c:8123,1
    - Dst: index_delete_sort
      Src: /src/postgres/src/backend/access/heap/heapam.c:8126,1
    - Dst: bottomup_sort_and_shrink
      Src: /src/postgres/src/backend/access/heap/heapam.c:8136,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:8152,1
    - Dst: get_tablespace_maintenance_io_concurrency
      Src: /src/postgres/src/backend/access/heap/heapam.c:8156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8162,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:8163,1
    - Dst: index_delete_prefetch_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8171,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8185,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8247,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8255,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8256,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8258,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8259,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8261,1
    - Dst: index_delete_prefetch_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8270,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8273,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:8275,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8276,1
    - Dst: index_delete_check_htid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8288,1
    - Dst: heap_hot_search_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8305,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8317,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:8335,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/heapam.c:8336,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/heapam.c:8338,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8356,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:8359,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8364,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:8365,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:8365,1
    - Dst: HeapTupleHeaderAdvanceConflictHorizon
      Src: /src/postgres/src/backend/access/heap/heapam.c:8368,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:8377,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8381,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8381,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8382,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8383,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8390,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8398,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 86
    argCount: 2
    argNames:
    - rel
    - delstate
    argTypes:
    - Relation
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8402
      start: 8098
    functionDepth: 4
    functionLinenumber: 8098
    functionLinenumberEnd: 8402
    functionName: heap_index_delete_tuples
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderAdvanceConflictHorizon
    - LockBuffer
    - heap_hot_search_buffer
    - BufferGetPage
    - index_delete_check_htid
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - index_delete_prefetch_buffer
    - HeapTupleHeaderIsHotUpdated
    - Assert
    - get_tablespace_maintenance_io_concurrency
    - GlobalVisTestFor
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderGetUpdateXid
    - ItemIdIsNormal
    - HeapTupleHeaderGetXmin
    - bottomup_sort_and_shrink
    - PageGetItemId
    - ItemIdIsRedirected
    - BufferIsValid
    - IsCatalogRelation
    - index_delete_sort
    - ItemIdGetRedirect
    - InitNonVacuumableSnapshot
    - TransactionIdEquals
    - Min
    - TransactionIdIsValid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId heap_index_delete_tuples(Relation rel, TM_IndexDeleteOp
      *delstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8414,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8415,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8421,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - deltid1
    - deltid2
    argTypes:
    - TM_IndexDelete*
    - TM_IndexDelete*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8431
      start: 8407
    functionDepth: 3
    functionLinenumber: 8407
    functionLinenumberEnd: 8431
    functionName: index_delete_sort_cmp
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerGetBlockNumber
    - ItemPointerGetOffsetNumber
    linkageType: ''
    returnType: int
    signature: int index_delete_sort_cmp(TM_IndexDelete *deltid1, TM_IndexDelete *deltid2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/access/heap/heapam.c:8458,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/heap/heapam.c:8461,1
    - Dst: index_delete_sort_cmp
      Src: /src/postgres/src/backend/access/heap/heapam.c:8468,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - delstate
    argTypes:
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8476
      start: 8443
    functionDepth: 4
    functionLinenumber: 8443
    functionLinenumberEnd: 8476
    functionName: index_delete_sort
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - index_delete_sort_cmp
    - StaticAssertDecl
    - lengthof
    linkageType: ''
    returnType: void
    signature: void index_delete_sort(TM_IndexDeleteOp *delstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8547,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8574,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - blockgroups
    - nblockgroups
    - deltids
    argTypes:
    - IndexDeleteCounts*
    - int
    - TM_IndexDelete*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8577
      start: 8539
    functionDepth: 3
    functionLinenumber: 8539
    functionLinenumberEnd: 8577
    functionName: bottomup_nblocksfavorable
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: int
    signature: "int bottomup_nblocksfavorable(IndexDeleteCounts *blockgroups, int
      nblockgroups,\n\t\t\t\t\t\t  TM_IndexDelete *deltids)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/heap/heapam.c:8608,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/heap/heapam.c:8609,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/access/heap/heapam.c:8632,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8635
      start: 8582
    functionDepth: 3
    functionLinenumber: 8582
    functionLinenumberEnd: 8635
    functionName: bottomup_sort_and_shrink_cmp
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - pg_unreachable
    - pg_nextpower2_32
    linkageType: ''
    returnType: int
    signature: int bottomup_sort_and_shrink_cmp(const void *arg1, const void *arg2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8666,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/heap/heapam.c:8669,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8682,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8682,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8683,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8685,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/heap/heapam.c:8736,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/heap/heapam.c:8740,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:8742,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:8744,1
    - Dst: bottomup_nblocksfavorable
      Src: /src/postgres/src/backend/access/heap/heapam.c:8746,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:8754,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:8760,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:8764,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:8765,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 1
    argNames:
    - delstate
    argTypes:
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8768
      start: 8655
    functionDepth: 4
    functionLinenumber: 8655
    functionLinenumberEnd: 8768
    functionName: bottomup_sort_and_shrink
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - qsort
    - memcpy
    - Assert
    - pfree
    - BlockNumberIsValid
    - palloc_array
    - bottomup_nblocksfavorable
    - palloc
    - Min
    - ItemPointerGetBlockNumber
    - pg_nextpower2_32
    linkageType: ''
    returnType: int
    signature: int bottomup_sort_and_shrink(TM_IndexDeleteOp *delstate)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:8789,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/access/heap/heapam.c:8790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8795,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:8795,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8797,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:8799,1
    - Dst: XLogCheckBufferNeedsBackup
      Src: /src/postgres/src/backend/access/heap/heapam.c:8825,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:8833,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:8847,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8879,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8880,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8889,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:8890,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:8891,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8895,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:8896,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8904,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8906,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8908,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8919,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8923,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8927,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8934,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8941,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8944,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8957,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8963,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8976,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8979,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:8984,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8986,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 91
    argCount: 9
    argNames:
    - reln
    - oldbuf
    - newbuf
    - oldtup
    - newtup
    - old_key_tuple
    - all_visible_cleared
    - new_all_visible_cleared
    - walLogical
    argTypes:
    - Relation
    - Buffer
    - Buffer
    - HeapTuple
    - HeapTuple
    - HeapTuple
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8989
      start: 8774
    functionDepth: 4
    functionLinenumber: 8774
    functionLinenumberEnd: 8989
    functionName: log_heap_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - XLogRegisterBufData
    - XLogCheckBufferNeedsBackup
    - XLogInsert
    - HeapTupleIsHeapOnly
    - compute_infobits
    - XLogBeginInsert
    - Assert
    - RelationIsLogicallyLogged
    - BufferGetPage
    - XLogRegisterData
    - RelationNeedsWAL
    - PageGetMaxOffsetNumber
    - XLogSetRecordFlags
    - ItemPointerGetOffsetNumber
    - Min
    - HeapTupleHeaderGetRawXmax
    - XLogRegisterBuffer
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr log_heap_update(Relation reln, Buffer oldbuf,\n\t\t\t\tBuffer
      newbuf, HeapTuple oldtup, HeapTuple newtup,\n\t\t\t\tHeapTuple old_key_tuple,\n\t\t\t\tbool
      all_visible_cleared, bool new_all_visible_cleared,\n\t\t\t\tbool walLogical)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9005,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:9005,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9006,1
    - Dst: GetTopTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:9008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9018,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9019,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam.c:9019,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:9020,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:9021,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:9022,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:9036,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:9038,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:9045,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9055,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:9056,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9060,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - relation
    - tup
    argTypes:
    - Relation
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9063
      start: 8997
    functionDepth: 1
    functionLinenumber: 8997
    functionLinenumberEnd: 9063
    functionName: log_heap_new_cid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 4
    functionsReached:
    - XLogInsert
    - HeapTupleHeaderGetCmax
    - HeapTupleHeaderGetCmin
    - Assert
    - HeapTupleHeaderXminInvalid
    - HEAP_XMAX_IS_LOCKED_ONLY
    - XLogBeginInsert
    - XLogRegisterData
    - GetTopTransactionId
    - ItemPointerIsValid
    - HeapTupleHeaderGetRawCommandId
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr log_heap_new_cid(Relation relation, HeapTuple tup)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam.c:9082,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/access/heap/heapam.c:9091,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:9103,1
    - Dst: toast_flatten_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9106,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:9116,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/access/heap/heapam.c:9125,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9133,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:9137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9139,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9144,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:9147,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:9156,1
    - Dst: toast_flatten_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9160,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9161,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - relation
    - tp
    - key_required
    - copy
    argTypes:
    - Relation
    - HeapTuple
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9165
      start: 9078
    functionDepth: 1
    functionLinenumber: 9078
    functionLinenumberEnd: 9165
    functionName: ExtractReplicaIdentity
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - heap_deform_tuple
    - heap_freetuple
    - HeapTupleHasExternal
    - RelationGetDescr
    - RelationGetIndexAttrBitmap
    - RelationIsLogicallyLogged
    - bms_is_member
    - toast_flatten_tuple
    - Assert
    - heap_form_tuple
    - bms_free
    - bms_is_empty
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple ExtractReplicaIdentity(Relation relation, HeapTuple tp,
      bool key_required,\n\t\t\t\t\t   bool *copy)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: CheckForSerializableConflictOutNeeded
      Src: /src/postgres/src/backend/access/heap/heapam.c:9190,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/heapam.c:9204,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:9210,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:9215,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:9217,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:9219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9222,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:9227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9230,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:9239,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9250,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:9250,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9251,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:9251,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:9257,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/heap/heapam.c:9257,1
    - Dst: SubTransGetTopmostTransaction
      Src: /src/postgres/src/backend/access/heap/heapam.c:9259,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:9260,1
    - Dst: CheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:9263,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 5
    argNames:
    - visible
    - relation
    - tuple
    - buffer
    - snapshot
    argTypes:
    - bool
    - Relation
    - HeapTuple
    - Buffer
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9264
      start: 9182
    functionDepth: 2
    functionLinenumber: 9182
    functionLinenumberEnd: 9264
    functionName: HeapCheckForSerializableConflictOut
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 6
    functionsReached:
    - elog
    - TransactionIdPrecedes
    - TransactionIdFollowsOrEquals
    - Assert
    - HeapTupleHeaderGetXmin
    - CheckForSerializableConflictOut
    - TransactionIdEquals
    - SubTransGetTopmostTransaction
    - CheckForSerializableConflictOutNeeded
    - HeapTupleSatisfiesVacuum
    - GetTopTransactionIdIfAny
    - HeapTupleHeaderGetUpdateXid
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void HeapCheckForSerializableConflictOut(bool visible, Relation relation,\n\t\t\t\t\t\t\t\t\tHeapTuple
      tuple, Buffer buffer,\n\t\t\t\t\t\t\t\t\tSnapshot snapshot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:53,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:69,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:70,1
    - Dst: toast_delete_external
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rel
    - oldtup
    - is_speculative
    argTypes:
    - Relation
    - HeapTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 74
    functionName: heap_toast_delete
    functionSourceFile: /src/postgres/src/backend/access/heap/heaptoast.c
    functionUses: 2
    functionsReached:
    - Assert
    - toast_delete_external
    - heap_deform_tuple
    linkageType: ''
    returnType: void
    signature: void heap_toast_delete(Relation rel, HeapTuple oldtup, bool is_speculative)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:125,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:134,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:135,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:137,1
    - Dst: toast_tuple_init
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:157,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:174,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:175,1
    - Dst: RelationGetToastTupleTarget
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:177,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:184,1
    - Dst: toast_tuple_find_biggest_attribute
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:189,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:196,1
    - Dst: toast_tuple_try_compression
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:197,1
    - Dst: toast_tuple_externalize
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:217,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:225,1
    - Dst: toast_tuple_find_biggest_attribute
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:231,1
    - Dst: toast_tuple_externalize
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:234,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:241,1
    - Dst: toast_tuple_find_biggest_attribute
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:246,1
    - Dst: toast_tuple_try_compression
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:250,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:260,1
    - Dst: toast_tuple_find_biggest_attribute
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:266,1
    - Dst: toast_tuple_externalize
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:270,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:297,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:298,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:299,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:306,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:316,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:317,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:321,1
    - Dst: toast_tuple_cleanup
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:333,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 77
    argCount: 4
    argNames:
    - rel
    - newtup
    - oldtup
    - options
    argTypes:
    - Relation
    - HeapTuple
    - HeapTuple
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 336
    functionName: heap_toast_insert_or_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heaptoast.c
    functionUses: 2
    functionsReached:
    - toast_tuple_init
    - HeapTupleHeaderSetNatts
    - memcpy
    - heap_deform_tuple
    - toast_tuple_find_biggest_attribute
    - Assert
    - heap_fill_tuple
    - heap_compute_data_size
    - toast_tuple_try_compression
    - toast_tuple_externalize
    - palloc0
    - RelationGetToastTupleTarget
    - TupleDescAttr
    - MAXALIGN
    - BITMAPLEN
    - toast_tuple_cleanup
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple heap_toast_insert_or_update(Relation rel, HeapTuple newtup,
      HeapTuple oldtup,\n\t\t\t\t\t\t\tuint32 options)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:362,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:363,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:365,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:372,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:376,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:377,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:379,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:380,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:389,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:413,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:413,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - tup
    - tupleDesc
    argTypes:
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 416
    functionName: toast_flatten_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heaptoast.c
    functionUses: 1
    functionsReached:
    - detoast_external_attr
    - heap_deform_tuple
    - Assert
    - pfree
    - heap_form_tuple
    - VARATT_IS_EXTERNAL
    - memset
    - PointerGetDatum
    - TupleDescCompactAttr
    - DatumGetPointer
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple toast_flatten_tuple(HeapTuple tup, TupleDesc tupleDesc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:467,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:474,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:475,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:477,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:486,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:490,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:491,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:492,1
    - Dst: detoast_attr
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:494,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:495,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:509,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:510,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:511,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:515,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:520,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:521,1
    - Dst: HeapTupleHeaderSetDatumLength
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:525,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:526,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:527,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:530,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:543,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:543,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:545,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 3
    argNames:
    - tup
    - tup_len
    - tupleDesc
    argTypes:
    - HeapTupleHeader
    - uint32
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 448
    functionDepth: 3
    functionLinenumber: 448
    functionLinenumberEnd: 546
    functionName: toast_flatten_tuple_to_datum
    functionSourceFile: /src/postgres/src/backend/access/heap/heaptoast.c
    functionUses: 0
    functionsReached:
    - VARATT_IS_COMPRESSED
    - memcpy
    - Assert
    - pfree
    - heap_compute_data_size
    - HeapTupleHeaderSetTypMod
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - MAXALIGN
    - heap_deform_tuple
    - detoast_attr
    - memset
    - TupleDescCompactAttr
    - BITMAPLEN
    - HeapTupleHeaderSetDatumLength
    - heap_fill_tuple
    - palloc0
    - ItemPointerSetInvalid
    - HeapTupleHeaderSetNatts
    - HeapTupleHeaderSetTypeId
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: "Datum toast_flatten_tuple_to_datum(HeapTupleHeader tup,\n\t\t\t\t\t\t\t
      uint32 tup_len,\n\t\t\t\t\t\t\t TupleDesc tupleDesc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:578,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:579,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:587,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:591,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:592,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:594,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:595,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:604,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:610,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - tupleDesc
    - values
    - isnull
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 562
    functionDepth: 2
    functionLinenumber: 562
    functionLinenumberEnd: 613
    functionName: toast_build_flattened_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heaptoast.c
    functionUses: 0
    functionsReached:
    - detoast_external_attr
    - memcpy
    - Assert
    - pfree
    - heap_form_tuple
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - TupleDescCompactAttr
    - DatumGetPointer
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple toast_build_flattened_tuple(TupleDesc tupleDesc,\n\t\t\t\t\t\t\tconst
      Datum *values,\n\t\t\t\t\t\t\tconst bool *isnull)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: toast_open_indexes
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:644,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:651,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:654,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:657,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:667,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:670,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:675,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:678,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:679,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:682,1
    - Dst: systable_beginscan_ordered
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:687,1
    - Dst: get_toast_snapshot
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:688,1
    - Dst: systable_getnext_ordered
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:696,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:710,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:711,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:712,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:713,1
    - Dst: VARATT_IS_EXTENDED
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:714,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:716,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:717,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:719,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:722,1
    - Dst: VARDATA_SHORT
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:723,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:728,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:729,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:738,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:739,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:740,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:742,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:744,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:745,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:746,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:749,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:753,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:754,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:755,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:758,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:770,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:770,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:782,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:783,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:784,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:786,1
    - Dst: systable_endscan_ordered
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:789,1
    - Dst: toast_close_indexes
      Src: /src/postgres/src/backend/access/heap/heaptoast.c:790,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 55
    argCount: 6
    argNames:
    - toastrel
    - valueid
    - attrsize
    - sliceoffset
    - slicelength
    - result
    argTypes:
    - Relation
    - Oid
    - int32
    - int32
    - int32
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 625
    functionDepth: 3
    functionLinenumber: 625
    functionLinenumberEnd: 791
    functionName: heap_fetch_toast_slice
    functionSourceFile: /src/postgres/src/backend/access/heap/heaptoast.c
    functionUses: 0
    functionsReached:
    - systable_getnext_ordered
    - errcode
    - systable_endscan_ordered
    - get_toast_snapshot
    - VARDATA
    - RelationGetRelationName
    - elog
    - memcpy
    - Assert
    - Int32GetDatum
    - toast_close_indexes
    - ObjectIdGetDatum
    - VARATT_IS_SHORT
    - VARSIZE
    - errmsg_internal
    - fastgetattr
    - ereport
    - VARSIZE_SHORT
    - VARDATA_SHORT
    - ScanKeyInit
    - toast_open_indexes
    - VARATT_IS_EXTENDED
    - DatumGetInt32
    - systable_beginscan_ordered
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void heap_fetch_toast_slice(Relation toastrel, Oid valueid, int32
      attrsize,\n\t\t\t\t\t   int32 sliceoffset, int32 slicelength,\n\t\t\t\t\t   varlena
      *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:247,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:250,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:253,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:259,1
    - Dst: smgr_bulk_start_rel
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:264,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:272,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:280,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:285,1
    - Dst: logical_begin_heap_rewrite
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 5
    argNames:
    - old_heap
    - new_heap
    - oldest_xmin
    - freeze_xid
    - cutoff_multi
    argTypes:
    - Relation
    - Relation
    - TransactionId
    - TransactionId
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 290
    functionName: begin_heap_rewrite
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - MemoryContextSwitchTo
    - hash_create
    - logical_begin_heap_rewrite
    - RelationGetNumberOfBlocks
    - AllocSetContextCreate
    - smgr_bulk_start_rel
    linkageType: ''
    returnType: RewriteState
    signature: "RewriteState begin_heap_rewrite(Relation old_heap, Relation new_heap,
      TransactionId oldest_xmin,\n\t\t\t\t   TransactionId freeze_xid, MultiXactId
      cutoff_multi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:307,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:309,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:311,1
    - Dst: raw_heap_insert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:312,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:318,1
    - Dst: smgr_bulk_finish
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:322,1
    - Dst: logical_end_heap_rewrite
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:324,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 297
    functionDepth: 2
    functionLinenumber: 297
    functionLinenumberEnd: 328
    functionName: end_heap_rewrite
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 2
    functionsReached:
    - logical_end_heap_rewrite
    - raw_heap_insert
    - hash_seq_search
    - MemoryContextDelete
    - hash_seq_init
    - ItemPointerSetInvalid
    - smgr_bulk_finish
    - smgr_bulk_write
    linkageType: ''
    returnType: void
    signature: void end_heap_rewrite(RewriteState state)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:351,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:359,1
    - Dst: heap_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:372,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:382,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:391,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:392,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:393,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:398,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:399,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:403,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:416,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:418,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:430,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:433,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:439,1
    - Dst: raw_heap_insert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:458,1
    - Dst: logical_rewrite_heap_tuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:461,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:472,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:472,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:480,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:481,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:484,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:495,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:505,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:507,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:520,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:522,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:530,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:534,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 3
    argNames:
    - state
    - old_tuple
    - new_tuple
    argTypes:
    - RewriteState
    - HeapTuple
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 341
    functionDepth: 5
    functionLinenumber: 341
    functionLinenumberEnd: 535
    functionName: rewrite_heap_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 2
    functionsReached:
    - TransactionIdPrecedes
    - heap_freeze_tuple
    - memcpy
    - hash_search
    - heap_freetuple
    - Assert
    - HeapTupleHeaderGetXmin
    - raw_heap_insert
    - HeapTupleHeaderIsOnlyLocked
    - logical_rewrite_heap_tuple
    - MemoryContextSwitchTo
    - ItemPointerEquals
    - memset
    - heap_copytuple
    - ItemPointerSetInvalid
    - HeapTupleHeaderIndicatesMovedPartitions
    - HeapTupleHeaderGetUpdateXid
    linkageType: ''
    returnType: void
    signature: "void rewrite_heap_tuple(RewriteState state,\n\t\t\t\t   HeapTuple
      old_tuple, HeapTuple new_tuple)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:568,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:569,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:572,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:578,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - state
    - old_tuple
    argTypes:
    - RewriteState
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 586
    functionName: rewrite_heap_dead_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 1
    functionsReached:
    - hash_search
    - heap_freetuple
    - Assert
    - HeapTupleHeaderGetXmin
    - memset
    linkageType: ''
    returnType: bool
    signature: bool rewrite_heap_dead_tuple(RewriteState state, HeapTuple old_tuple)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:616,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:616,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:619,1
    - Dst: heap_toast_insert_or_update
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:630,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:636,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:642,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:643,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:644,1
    - Dst: RelationGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:648,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:655,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:664,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:674,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:676,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:680,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:682,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:685,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:691,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:696,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:697,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:704,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 2
    argNames:
    - state
    - tup
    argTypes:
    - RewriteState
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 596
    functionDepth: 3
    functionLinenumber: 596
    functionLinenumberEnd: 705
    functionName: raw_heap_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 2
    functionsReached:
    - ItemPointerSet
    - errcode
    - PageInit
    - PageGetItem
    - elog
    - RelationGetTargetPageFreeSpace
    - Assert
    - heap_freetuple
    - errmsg
    - MAXALIGN
    - heap_toast_insert_or_update
    - PageGetHeapFreeSpace
    - HeapTupleHasExternal
    - ereport
    - PageGetItemId
    - PageAddItem
    - ItemPointerIsValid
    - smgr_bulk_get_buf
    - smgr_bulk_write
    linkageType: ''
    returnType: void
    signature: void raw_heap_insert(RewriteState state, HeapTuple tup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:773,1
    - Dst: ProcArrayGetReplicationSlotXmin
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:778,1
    - Dst: GetXLogInsertRecPtr
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:792,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:800,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 761
    functionDepth: 1
    functionLinenumber: 761
    functionLinenumberEnd: 804
    functionName: logical_begin_heap_rewrite
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 1
    functionsReached:
    - ProcArrayGetReplicationSlotXmin
    - hash_create
    - GetXLogInsertRecPtr
    - RelationIsAccessibleInLogicalDecoding
    linkageType: ''
    returnType: void
    signature: void logical_begin_heap_rewrite(RewriteState state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:816,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:822,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:825,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:826,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:834,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:846,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:854,1
    - Dst: dclist_foreach_modify
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:859,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:863,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:865,1
    - Dst: dclist_delete_from
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:869,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:870,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:876,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:876,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:877,1
    - Dst: FileWrite
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:883,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:886,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:887,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:888,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:892,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:893,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:894,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:897,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:901,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 1
    argNames:
    - state
    argTypes:
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 809
    functionDepth: 3
    functionLinenumber: 809
    functionLinenumberEnd: 902
    functionName: logical_heap_rewrite_flush_mappings
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - hash_seq_search
    - XLogRegisterData
    - dclist_foreach_modify
    - elog
    - memcpy
    - XLogBeginInsert
    - Assert
    - pfree
    - errmsg
    - dclist_count
    - ereport
    - hash_seq_init
    - errcode_for_file_access
    - dclist_delete_from
    - FileWrite
    - dclist_container
    - palloc
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void logical_heap_rewrite_flush_mappings(RewriteState state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: logical_heap_rewrite_flush_mappings
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:919,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:922,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:923,1
    - Dst: FileSync
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:925,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:926,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:926,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:927,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:928,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:929,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 907
    functionDepth: 4
    functionLinenumber: 907
    functionLinenumberEnd: 932
    functionName: logical_end_heap_rewrite
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 1
    functionsReached:
    - data_sync_elevel
    - ereport
    - hash_seq_search
    - FileClose
    - hash_seq_init
    - errmsg
    - FileSync
    - logical_heap_rewrite_flush_mappings
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void logical_end_heap_rewrite(RewriteState state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:946,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:949,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:966,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:969,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:970,1
    - Dst: dclist_init
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:972,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:974,1
    - Dst: PathNameOpenFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:975,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:978,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:979,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:980,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:983,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:985,1
    - Dst: dclist_push_tail
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:986,1
    - Dst: logical_heap_rewrite_flush_mappings
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:994,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - state
    - xid
    - map
    argTypes:
    - RewriteState
    - TransactionId
    - LogicalRewriteMappingData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 937
    functionDepth: 4
    functionLinenumber: 937
    functionLinenumberEnd: 995
    functionName: logical_rewrite_log_mapping
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 0
    functionsReached:
    - PathNameOpenFile
    - errcode_for_file_access
    - hash_search
    - memcpy
    - MemoryContextAlloc
    - ereport
    - logical_heap_rewrite_flush_mappings
    - dclist_init
    - errmsg
    - dclist_push_tail
    - GetCurrentTransactionId
    - RelationGetRelid
    - LSN_FORMAT_ARGS
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void logical_rewrite_log_mapping(RewriteState state, TransactionId
      xid,\n\t\t\t\t\t\t\tLogicalRewriteMappingData *map)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1017,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1019,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1024,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1024,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1027,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1034,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1038,1
    - Dst: logical_rewrite_log_mapping
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1066,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1068,1
    - Dst: logical_rewrite_log_mapping
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1069,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - state
    - old_tid
    - new_tuple
    argTypes:
    - RewriteState
    - ItemPointerData
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1001
    functionDepth: 5
    functionLinenumber: 1001
    functionLinenumberEnd: 1070
    functionName: logical_rewrite_heap_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 1
    functionsReached:
    - TransactionIdPrecedes
    - HEAP_XMAX_IS_LOCKED_ONLY
    - HeapTupleHeaderGetXmin
    - logical_rewrite_log_mapping
    - TransactionIdEquals
    - TransactionIdIsNormal
    - HeapTupleHeaderGetUpdateXid
    linkageType: ''
    returnType: void
    signature: "void logical_rewrite_heap_tuple(RewriteState state, ItemPointerData
      old_tid,\n\t\t\t\t\t\t   HeapTuple new_tuple)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1084,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1086,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1089,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1090,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1092,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1095,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1096,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1097,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1103,1
    - Dst: ftruncate
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1104,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1105,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1106,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1107,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1109,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1111,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1117,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1118,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1123,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1124,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1125,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1127,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1134,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1135,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1136,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1136,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1137,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1138,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1139,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1141,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1142,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1143,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1144,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - r
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1075
    functionDepth: 3
    functionLinenumber: 1075
    functionLinenumberEnd: 1145
    functionName: heap_xlog_logical_rewrite
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 0
    functionsReached:
    - errcode_for_file_access
    - OpenTransientFile
    - XLogRecGetXid
    - CloseTransientFile
    - ereport
    - pg_pwrite
    - XLogRecGetData
    - pgstat_report_wait_end
    - ftruncate
    - errmsg
    - pgstat_report_wait_start
    - data_sync_elevel
    - pg_fsync
    - LSN_FORMAT_ARGS
    - snprintf
    linkageType: ''
    returnType: void
    signature: void heap_xlog_logical_rewrite(XLogReaderState *r)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1170,1
    - Dst: ReplicationSlotsComputeLogicalRestartLSN
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1173,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1176,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1179,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1180,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1191,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1192,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1195,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1196,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1202,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1205,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1207,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1211,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1213,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1215,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1216,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1217,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1230,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1232,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1239,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1240,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1241,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1241,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1243,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1244,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1246,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1247,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1248,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1249,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1252,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1255,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1157
    functionDepth: 3
    functionLinenumber: 1157
    functionLinenumberEnd: 1256
    functionName: CheckPointLogicalRewriteHeap
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 0
    functionsReached:
    - GetRedoRecPtr
    - strcmp
    - pg_fsync
    - elog
    - XLogRecPtrIsValid
    - OpenTransientFile
    - FreeDir
    - pgstat_report_wait_end
    - get_dirent_type
    - errmsg
    - data_sync_elevel
    - ReadDir
    - CloseTransientFile
    - sscanf
    - ereport
    - fsync_fname
    - ReplicationSlotsComputeLogicalRestartLSN
    - errcode_for_file_access
    - unlink
    - AllocateDir
    - strncmp
    - pgstat_report_wait_start
    - snprintf
    linkageType: ''
    returnType: void
    signature: void CheckPointLogicalRewriteHeap(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    functionName: HEAPBLK_TO_MAPBLOCK
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEAPBLK_TO_MAPBLOCK(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: HEAPBLK_TO_MAPBLOCK_LIMIT
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEAPBLK_TO_MAPBLOCK_LIMIT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: HEAPBLK_TO_MAPBYTE
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEAPBLK_TO_MAPBYTE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    functionName: HEAPBLK_TO_OFFSET
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEAPBLK_TO_OFFSET(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_MAPBLOCK
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:153,1
    - Dst: HEAPBLK_TO_MAPBYTE
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:154,1
    - Dst: HEAPBLK_TO_OFFSET
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:162,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:165,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:165,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:168,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:168,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:169,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:171,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:172,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:172,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:178,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - rel
    - heapBlk
    - vmbuf
    - flags
    argTypes:
    - Relation
    - BlockNumber
    - Buffer
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 150
    functionDepth: 4
    functionLinenumber: 150
    functionLinenumberEnd: 185
    functionName: visibilitymap_clear
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 6
    functionsReached:
    - elog
    - HEAPBLK_TO_MAPBLOCK
    - Assert
    - BufferGetBlockNumber
    - LockBuffer
    - PageGetContents
    - BufferGetPage
    - HEAPBLK_TO_MAPBYTE
    - BufferIsValid
    - HEAPBLK_TO_OFFSET
    - RelationGetRelationName
    - MarkBufferDirty
    linkageType: ''
    returnType: bool
    signature: bool visibilitymap_clear(Relation rel, BlockNumber heapBlk, Buffer
      vmbuf, uint8 flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_MAPBLOCK
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:206,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:209,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:211,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:214,1
    - Dst: vm_readbuf
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - heapBlk
    - vmbuf
    argTypes:
    - Relation
    - BlockNumber
    - Buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 217
    functionName: visibilitymap_pin
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 4
    functionsReached:
    - HEAPBLK_TO_MAPBLOCK
    - ReleaseBuffer
    - BufferGetBlockNumber
    - vm_readbuf
    - BufferIsValid
    linkageType: ''
    returnType: void
    signature: void visibilitymap_pin(Relation rel, BlockNumber heapBlk, Buffer *vmbuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_MAPBLOCK
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:230,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:232,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - heapBlk
    - vmbuf
    argTypes:
    - BlockNumber
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: visibilitymap_pin_ok
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached:
    - HEAPBLK_TO_MAPBLOCK
    - BufferGetBlockNumber
    - BufferIsValid
    linkageType: ''
    returnType: bool
    signature: bool visibilitymap_pin_ok(BlockNumber heapBlk, Buffer vmbuf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_MAPBLOCK
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:259,1
    - Dst: HEAPBLK_TO_MAPBYTE
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:260,1
    - Dst: HEAPBLK_TO_OFFSET
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:261,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:267,1
    - Dst: relpathbackend
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:277,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:280,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:283,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:283,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:286,1
    - Dst: BufferIsLockedByMeInMode
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:286,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:288,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:289,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - heapBlk
    - vmBuf
    - flags
    - rlocator
    argTypes:
    - BlockNumber
    - Buffer
    - uint8
    - RelFileLocator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 254
    functionDepth: 4
    functionLinenumber: 254
    functionLinenumberEnd: 297
    functionName: visibilitymap_set
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 1
    functionsReached:
    - elog
    - HEAPBLK_TO_MAPBLOCK
    - Assert
    - BufferGetBlockNumber
    - relpathbackend
    - PageGetContents
    - BufferGetPage
    - BufferIsLockedByMeInMode
    - HEAPBLK_TO_MAPBYTE
    - BufferIsValid
    - HEAPBLK_TO_OFFSET
    - MarkBufferDirty
    linkageType: ''
    returnType: void
    signature: "void visibilitymap_set(BlockNumber heapBlk,\n\t\t\t\t  Buffer vmBuf,
      uint8 flags,\n\t\t\t\t  const RelFileLocator rlocator)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_MAPBLOCK
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:321,1
    - Dst: HEAPBLK_TO_MAPBYTE
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:322,1
    - Dst: HEAPBLK_TO_OFFSET
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:323,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:328,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:328,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:332,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:334,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:336,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:341,1
    - Dst: vm_readbuf
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:343,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:344,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:348,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:348,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - rel
    - heapBlk
    - vmbuf
    argTypes:
    - Relation
    - BlockNumber
    - Buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 318
    functionDepth: 4
    functionLinenumber: 318
    functionLinenumberEnd: 357
    functionName: visibilitymap_get_status
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached:
    - elog
    - HEAPBLK_TO_MAPBLOCK
    - ReleaseBuffer
    - BufferGetBlockNumber
    - PageGetContents
    - BufferGetPage
    - HEAPBLK_TO_MAPBYTE
    - vm_readbuf
    - BufferIsValid
    - HEAPBLK_TO_OFFSET
    - RelationGetRelationName
    linkageType: ''
    returnType: uint8
    signature: uint8 visibilitymap_get_status(Relation rel, BlockNumber heapBlk, Buffer
      *vmbuf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:374,1
    - Dst: vm_readbuf
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:386,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:387,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:395,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:395,1
    - Dst: pg_popcount_masked
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:397,1
    - Dst: pg_popcount_masked
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:399,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:401,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - rel
    - all_visible
    - all_frozen
    argTypes:
    - Relation
    - BlockNumber*
    - BlockNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 366
    functionDepth: 4
    functionLinenumber: 366
    functionLinenumberEnd: 407
    functionName: visibilitymap_count
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - Assert
    - PageGetContents
    - BufferGetPage
    - pg_popcount_masked
    - vm_readbuf
    - BufferIsValid
    linkageType: ''
    returnType: void
    signature: void visibilitymap_count(Relation rel, BlockNumber *all_visible, BlockNumber
      *all_frozen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_MAPBLOCK
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:426,1
    - Dst: HEAPBLK_TO_MAPBYTE
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:427,1
    - Dst: HEAPBLK_TO_OFFSET
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:428,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:431,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:431,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:438,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:438,1
    - Dst: vm_readbuf
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:456,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:457,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:463,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:464,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:466,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:469,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:472,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:494,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:495,1
    - Dst: XLogHintBitIsNeeded
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:495,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:496,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:498,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:500,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:505,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:505,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - rel
    - nheapblocks
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 420
    functionDepth: 4
    functionLinenumber: 420
    functionLinenumberEnd: 512
    functionName: visibilitymap_prepare_truncate
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached:
    - RelationGetSmgr
    - LockBuffer
    - BufferGetPage
    - smgrexists
    - RelationGetRelationName
    - elog
    - PageGetContents
    - UnlockReleaseBuffer
    - HEAPBLK_TO_MAPBLOCK
    - HEAPBLK_TO_MAPBYTE
    - MemSet
    - XLogHintBitIsNeeded
    - BufferIsValid
    - HEAPBLK_TO_OFFSET
    - MarkBufferDirty
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - vm_readbuf
    - smgrnblocks
    - log_newpage_buffer
    - END_CRIT_SECTION
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber visibilitymap_prepare_truncate(Relation rel, BlockNumber
      nheapblocks)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_MAPBLOCK_LIMIT
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nheapblocks
    argTypes:
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 527
    functionName: visibilitymap_truncation_length
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached:
    - HEAPBLK_TO_MAPBLOCK_LIMIT
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber visibilitymap_truncation_length(BlockNumber nheapblocks)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:546,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:554,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:555,1
    - Dst: vm_extend
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:572,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:577,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:595,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:595,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:597,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:598,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:598,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:599,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:599,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:600,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - rel
    - blkno
    - extend
    argTypes:
    - Relation
    - BlockNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 535
    functionDepth: 4
    functionLinenumber: 535
    functionLinenumberEnd: 603
    functionName: vm_readbuf
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 4
    functionsReached:
    - vm_extend
    - RelationGetSmgr
    - ReadBufferExtended
    - LockBuffer
    - PageIsNew
    - BufferGetPage
    - PageInit
    - smgrexists
    - smgrnblocks
    linkageType: ''
    returnType: Buffer
    signature: Buffer vm_readbuf(Relation rel, BlockNumber blkno, bool extend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExtendBufferedRelTo
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:614,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:614,1
    - Dst: CacheInvalidateSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:627,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rel
    - vm_nblocks
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 609
    functionDepth: 2
    functionLinenumber: 609
    functionLinenumberEnd: 630
    functionName: vm_extend
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 1
    functionsReached:
    - BMR_REL
    - RelationGetSmgr
    - CacheInvalidateSmgr
    - ExtendBufferedRelTo
    linkageType: ''
    returnType: Buffer
    signature: Buffer vm_extend(Relation rel, BlockNumber vm_nblocks)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:33,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:43,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:44,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:53,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:78,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:82,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:91,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:95,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:106,1
    - Dst: heap_xlog_deserialize_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:118,1
    - Dst: heap_page_prune_execute
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:125,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:152,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:153,1
    - Dst: heap_execute_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:159,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:169,1
    - Dst: PageClearPrunable
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:170,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:173,1
    - Dst: XLogHintBitIsNeeded
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:180,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:181,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:209,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:216,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:216,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:224,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:235,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:240,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:243,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:244,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:246,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:248,1
    - Dst: BufferIsDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:248,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:249,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:252,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:253,1
    - Dst: XLogRecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:256,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 61
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 29
    functionDepth: 5
    functionLinenumber: 29
    functionLinenumberEnd: 257
    functionName: heap_xlog_prune_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedoExtended
    - PageIsNew
    - BufferGetPage
    - heap_execute_freeze_tuple
    - PageInit
    - PageGetItem
    - XLogRecGetBlockTag
    - XLogRecGetBlockData
    - XLogRecordPageWithFreeSpace
    - visibilitymap_set
    - memcpy
    - Assert
    - BufferIsDirty
    - heap_xlog_deserialize_prune_and_freeze
    - UnlockReleaseBuffer
    - PageSetLSN
    - PageGetHeapFreeSpace
    - PageGetItemId
    - PageSetAllVisible
    - XLogHintBitIsNeeded
    - BufferIsValid
    - MarkBufferDirty
    - heap_page_prune_execute
    - XLogRecGetData
    - ResolveRecoveryConflictWithSnapshot
    - PageClearPrunable
    linkageType: ''
    returnType: void
    signature: void heap_xlog_prune_freeze(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - infobits
    - infomask
    - infomask2
    argTypes:
    - uint8
    - uint16*
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 284
    functionName: fix_infomask_from_infobits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fix_infomask_from_infobits(uint8 infobits, uint16 *infomask, uint16
      *infomask2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:293,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:302,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:303,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:304,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:312,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:315,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:316,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:317,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:318,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:321,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:323,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:325,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:326,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:327,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:328,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:329,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:331,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:335,1
    - Dst: fix_infomask_from_infobits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:336,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:339,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:341,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:342,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:345,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:345,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:348,1
    - Dst: HeapTupleHeaderSetMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:352,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:355,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:356,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:358,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:359,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 289
    functionDepth: 5
    functionLinenumber: 289
    functionLinenumberEnd: 360
    functionName: heap_xlog_delete
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - fix_infomask_from_infobits
    - XLogRecGetXid
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - HeapTupleHeaderSetCmax
    - XLogRecGetBlockTag
    - HeapTupleHeaderSetXmax
    - elog
    - ReleaseBuffer
    - visibilitymap_pin
    - HeapTupleHeaderClearHotUpdated
    - ItemPointerSetOffsetNumber
    - PageClearAllVisible
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - PageSetLSN
    - ItemIdIsNormal
    - PageGetItemId
    - BufferIsValid
    - ItemPointerSetBlockNumber
    - MarkBufferDirty
    - CreateFakeRelcacheEntry
    - PageSetPrunable
    - XLogRecGetData
    - visibilitymap_clear
    - HeapTupleHeaderSetXmin
    - FreeFakeRelcacheEntry
    - HeapTupleHeaderSetMovedPartitions
    linkageType: ''
    returnType: void
    signature: void heap_xlog_delete(XLogReaderState *record)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:369,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:386,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:387,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:388,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:391,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:399,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:402,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:403,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:404,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:405,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:412,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:414,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:415,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:416,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:416,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:420,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:426,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:428,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:429,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:434,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:435,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:439,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:441,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:448,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:448,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:449,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:452,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:453,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:455,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:461,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:461,1
    - Dst: HeapTupleHeaderXminFrozen
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:462,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:463,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:463,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:465,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:468,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:470,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:472,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:473,1
    - Dst: XLogRecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:485,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 365
    functionDepth: 5
    functionLinenumber: 365
    functionLinenumberEnd: 486
    functionName: heap_xlog_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - XLogRecGetXid
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageInit
    - XLogRecGetBlockTag
    - XLogRecGetInfo
    - XLogRecGetBlockData
    - elog
    - XLogRecordPageWithFreeSpace
    - ReleaseBuffer
    - visibilitymap_pin
    - memcpy
    - ItemPointerSetOffsetNumber
    - Assert
    - XLogInitBufferForRedo
    - PageClearAllVisible
    - BufferGetPageSize
    - PageGetMaxOffsetNumber
    - HeapTupleHeaderSetCmin
    - UnlockReleaseBuffer
    - PageSetLSN
    - PageGetHeapFreeSpace
    - PageAddItem
    - MemSet
    - BufferIsValid
    - ItemPointerSetBlockNumber
    - MarkBufferDirty
    - CreateFakeRelcacheEntry
    - HeapTupleHeaderXminFrozen
    - PageSetPrunable
    - XLogRecGetData
    - visibilitymap_clear
    - HeapTupleHeaderSetXmin
    - TransactionIdIsNormal
    - FreeFakeRelcacheEntry
    linkageType: ''
    returnType: void
    signature: void heap_xlog_insert(XLogReaderState *record)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:509,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:517,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:522,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:531,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:533,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:534,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:535,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:537,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:542,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:543,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:544,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:544,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:548,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:556,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:559,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:575,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:576,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:582,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:584,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:586,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:595,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:595,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:596,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:597,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:598,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:600,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:602,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:605,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:607,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:609,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:612,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:622,1
    - Dst: PageClearPrunable
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:623,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:626,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:626,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:628,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:630,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:631,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:658,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:661,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:664,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:665,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:667,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:673,1
    - Dst: BufferIsDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:673,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:674,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:677,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:678,1
    - Dst: XLogRecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:690,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 75
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 491
    functionDepth: 5
    functionLinenumber: 491
    functionLinenumberEnd: 691
    functionName: heap_xlog_multi_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - XLogRecGetXid
    - XLogReadBufferForRedo
    - XLogReadBufferForRedoExtended
    - PageIsNew
    - BufferGetPage
    - PageInit
    - XLogRecGetBlockTag
    - XLogRecGetInfo
    - XLogRecGetBlockData
    - elog
    - XLogRecordPageWithFreeSpace
    - ReleaseBuffer
    - visibilitymap_pin
    - memcpy
    - visibilitymap_set
    - ItemPointerSetOffsetNumber
    - Assert
    - XLogInitBufferForRedo
    - PageClearAllVisible
    - BufferGetPageSize
    - SHORTALIGN
    - PageGetMaxOffsetNumber
    - BufferIsDirty
    - HeapTupleHeaderSetCmin
    - UnlockReleaseBuffer
    - PageSetLSN
    - PageGetHeapFreeSpace
    - PageSetAllVisible
    - PageAddItem
    - MemSet
    - BufferIsValid
    - ItemPointerSetBlockNumber
    - MarkBufferDirty
    - CreateFakeRelcacheEntry
    - PageSetPrunable
    - XLogRecGetData
    - visibilitymap_clear
    - HeapTupleHeaderSetXmin
    - PageClearPrunable
    - FreeFakeRelcacheEntry
    linkageType: ''
    returnType: void
    signature: void heap_xlog_multi_insert(XLogReaderState *record)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:700,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:731,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:735,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:740,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:748,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:751,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:752,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:753,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:754,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:768,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:772,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:774,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:775,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:776,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:777,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:778,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:780,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:783,1
    - Dst: HeapTupleHeaderSetHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:788,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:790,1
    - Dst: fix_infomask_from_infobits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:791,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:793,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:794,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:799,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:799,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:802,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:804,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:805,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:816,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:818,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:819,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:820,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:820,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:824,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:832,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:835,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:836,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:837,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:838,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:849,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:852,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:855,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:860,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:866,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:867,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:871,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:875,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:878,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:891,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:896,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:901,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:915,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:919,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:926,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:926,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:927,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:928,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:932,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:934,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:937,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:940,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:942,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:944,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:944,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:945,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:948,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:949,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:950,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:951,1
    - Dst: XLogRecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:969,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 126
    argCount: 2
    argNames:
    - record
    - hot_update
    argTypes:
    - XLogReaderState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 696
    functionDepth: 5
    functionLinenumber: 696
    functionLinenumberEnd: 970
    functionName: heap_xlog_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - fix_infomask_from_infobits
    - XLogRecGetXid
    - XLogReadBufferForRedo
    - HeapTupleHeaderSetHotUpdated
    - BufferGetPage
    - PageInit
    - PageGetItem
    - HeapTupleHeaderSetCmax
    - XLogRecGetBlockTag
    - HeapTupleHeaderSetXmax
    - XLogRecGetInfo
    - elog
    - XLogRecGetBlockData
    - XLogRecordPageWithFreeSpace
    - ReleaseBuffer
    - visibilitymap_pin
    - memcpy
    - HeapTupleHeaderClearHotUpdated
    - Assert
    - XLogInitBufferForRedo
    - PageClearAllVisible
    - BufferGetPageSize
    - PageGetMaxOffsetNumber
    - HeapTupleHeaderSetCmin
    - UnlockReleaseBuffer
    - PageSetLSN
    - PageGetHeapFreeSpace
    - ItemIdIsNormal
    - PageGetItemId
    - PageAddItem
    - MemSet
    - BufferIsValid
    - MarkBufferDirty
    - CreateFakeRelcacheEntry
    - XLogRecGetBlockTagExtended
    - PageSetPrunable
    - XLogRecGetData
    - visibilitymap_clear
    - HeapTupleHeaderSetXmin
    - FreeFakeRelcacheEntry
    - ItemIdGetLength
    linkageType: ''
    returnType: void
    signature: void heap_xlog_update(XLogReaderState *record, bool hot_update)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:979,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:986,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:988,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:991,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:992,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:993,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:994,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:995,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:997,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1002,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1002,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1004,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1005,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1007,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1008,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 975
    functionDepth: 4
    functionLinenumber: 975
    functionLinenumberEnd: 1009
    functionName: heap_xlog_confirm
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - ItemPointerSet
    - ItemIdIsNormal
    - XLogReadBufferForRedo
    - BufferGetBlockNumber
    - BufferGetPage
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void heap_xlog_confirm(XLogReaderState *record)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1018,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1036,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1037,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1039,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1040,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1042,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1043,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1046,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1048,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1051,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1052,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1053,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1054,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1055,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1057,1
    - Dst: fix_infomask_from_infobits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1061,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1068,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1070,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1072,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1073,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1076,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1077,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1078,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1079,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1081,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1082,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1014
    functionDepth: 5
    functionLinenumber: 1014
    functionLinenumberEnd: 1083
    functionName: heap_xlog_lock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - fix_infomask_from_infobits
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - HeapTupleHeaderSetCmax
    - XLogRecGetBlockTag
    - HeapTupleHeaderSetXmax
    - elog
    - ReleaseBuffer
    - visibilitymap_pin
    - HeapTupleHeaderClearHotUpdated
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - PageSetLSN
    - ItemIdIsNormal
    - PageGetItemId
    - BufferIsValid
    - MarkBufferDirty
    - CreateFakeRelcacheEntry
    - XLogRecGetData
    - visibilitymap_clear
    - HEAP_XMAX_IS_LOCKED_ONLY
    - FreeFakeRelcacheEntry
    linkageType: ''
    returnType: void
    signature: void heap_xlog_lock(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1099,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1112,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1113,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1115,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1116,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1118,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1119,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1122,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1124,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1127,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1128,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1129,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1130,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1131,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1133,1
    - Dst: fix_infomask_from_infobits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1137,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1139,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1141,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1142,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1144,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1145,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1088
    functionDepth: 5
    functionLinenumber: 1088
    functionLinenumberEnd: 1146
    functionName: heap_xlog_lock_updated
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - fix_infomask_from_infobits
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - XLogRecGetBlockTag
    - HeapTupleHeaderSetXmax
    - elog
    - ReleaseBuffer
    - visibilitymap_pin
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - PageSetLSN
    - ItemIdIsNormal
    - PageGetItemId
    - BufferIsValid
    - MarkBufferDirty
    - CreateFakeRelcacheEntry
    - XLogRecGetData
    - visibilitymap_clear
    - FreeFakeRelcacheEntry
    linkageType: ''
    returnType: void
    signature: void heap_xlog_lock_updated(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1155,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1164,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1166,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1168,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1171,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1172,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1173,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1174,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1175,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1177,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1179,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1181,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1183,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1185,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1186,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1188,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1189,1
    - Dst: ProcessCommittedInvalidationMessages
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1191,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1151
    functionDepth: 4
    functionLinenumber: 1151
    functionLinenumberEnd: 1196
    functionName: heap_xlog_inplace
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - ProcessCommittedInvalidationMessages
    - memcpy
    - ItemIdIsNormal
    - XLogReadBufferForRedo
    - XLogRecGetData
    - BufferGetPage
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - ItemIdGetLength
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void heap_xlog_inplace(XLogReaderState *record)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1201,1
    - Dst: heap_xlog_insert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1211,1
    - Dst: heap_xlog_delete
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1214,1
    - Dst: heap_xlog_update
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1217,1
    - Dst: heap_xlog_update
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1228,1
    - Dst: heap_xlog_confirm
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1231,1
    - Dst: heap_xlog_lock
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1234,1
    - Dst: heap_xlog_inplace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1237,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1240,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1198
    functionDepth: 6
    functionLinenumber: 1198
    functionLinenumberEnd: 1242
    functionName: heap_redo
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - heap_xlog_confirm
    - heap_xlog_insert
    - heap_xlog_lock
    - heap_xlog_update
    - heap_xlog_delete
    - heap_xlog_inplace
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void heap_redo(XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1247,1
    - Dst: heap_xlog_prune_freeze
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1254,1
    - Dst: heap_xlog_multi_insert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1257,1
    - Dst: heap_xlog_lock_updated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1260,1
    - Dst: heap_xlog_logical_rewrite
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1270,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1273,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1244
    functionDepth: 6
    functionLinenumber: 1244
    functionLinenumberEnd: 1275
    functionName: heap2_redo
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - heap_xlog_logical_rewrite
    - heap_xlog_prune_freeze
    - heap_xlog_multi_insert
    - heap_xlog_lock_updated
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void heap2_redo(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mask_page_lsn_and_checksum
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1286,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1288,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1289,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1291,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1293,1
    - Dst: ItemIdGetOffset
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1296,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1298,1
    - Dst: HeapTupleHeaderXminFrozen
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1307,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1335,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1336,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1350,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1352,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1353,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1356,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1280
    functionDepth: 2
    functionLinenumber: 1280
    functionLinenumberEnd: 1359
    functionName: heap_mask
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - mask_page_lsn_and_checksum
    - ItemPointerSet
    - ItemIdIsNormal
    - mask_unused_space
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - mask_page_hint_bits
    - HeapTupleHeaderIsSpeculative
    - ItemIdHasStorage
    - ItemIdGetOffset
    - memset
    - MAXALIGN
    - HeapTupleHeaderXminFrozen
    - ItemIdGetLength
    linkageType: ''
    returnType: void
    signature: void heap_mask(char *pagedata, BlockNumber blkno)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:152,1
    - Dst: BufferIsPermanent
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:154,1
    - Dst: TransactionIdGetCommitLSN
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:157,1
    - Dst: XLogNeedsFlush
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:159,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:160,1
    - Dst: BufferSetHintBits16
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:176,1
    - Dst: BufferBeginSetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:183,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 5
    argNames:
    - tuple
    - buffer
    - infomask
    - xid
    - state
    argTypes:
    - HeapTupleHeader
    - Buffer
    - uint16
    - TransactionId
    - SetHintBitsState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 192
    functionName: SetHintBitsExt
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - BufferGetLSNAtomic
    - BufferSetHintBits16
    - XLogNeedsFlush
    - TransactionIdGetCommitLSN
    - BufferBeginSetHintBits
    - BufferIsPermanent
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void SetHintBitsExt(HeapTupleHeader tuple, Buffer buffer,\n\t\t\t
      \  uint16 infomask, TransactionId xid, SetHintBitsState *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetHintBitsExt
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - tuple
    - buffer
    - infomask
    - xid
    argTypes:
    - HeapTupleHeader
    - Buffer
    - uint16
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 203
    functionName: SetHintBits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 5
    functionsReached:
    - SetHintBitsExt
    linkageType: ''
    returnType: void
    signature: "void SetHintBits(HeapTupleHeader tuple, Buffer buffer,\n\t\t\tuint16
      infomask, TransactionId xid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:220,1
    - Dst: BufferIsLockedByMeInMode
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:220,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - tuple
    - buffer
    - infomask
    - xid
    argTypes:
    - HeapTupleHeader
    - Buffer
    - uint16
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 211
    functionDepth: 3
    functionLinenumber: 211
    functionLinenumberEnd: 223
    functionName: HeapTupleSetHintBits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 1
    functionsReached:
    - Assert
    - BufferIsLockedByMeInMode
    - SetHintBits
    linkageType: ''
    returnType: void
    signature: "void HeapTupleSetHintBits(HeapTupleHeader tuple, Buffer buffer,\n\t\t\t\t\t
      uint16 infomask, TransactionId xid)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:237,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:240,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:242,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:243,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:245,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:246,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:250,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:252,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:256,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:261,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:262,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:266,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - tuple
    - buffer
    argTypes:
    - HeapTupleHeader
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 273
    functionName: HeapTupleCleanMoved
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - elog
    - TransactionIdIsCurrentTransactionId
    - TransactionIdIsInProgress
    - TransactionIdDidCommit
    - HeapTupleHeaderGetXvac
    - likely
    - SetHintBits
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleCleanMoved(HeapTupleHeader tuple, Buffer buffer)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:301,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:302,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:304,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:306,1
    - Dst: HeapTupleCleanMoved
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:309,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:311,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:311,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:316,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:326,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:326,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:329,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:335,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:335,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:338,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:345,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:345,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:347,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:347,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:348,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:349,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:353,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:366,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:375,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:378,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:381,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:381,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:383,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:385,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:387,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:393,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:393,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:395,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:400,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:400,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:403,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:403,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:406,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:413,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:415,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:420,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:421,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 71
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 296
    functionDepth: 4
    functionLinenumber: 296
    functionLinenumberEnd: 423
    functionName: HeapTupleSatisfiesSelf
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - HeapTupleGetUpdateXid
    - TransactionIdIsInProgress
    - Assert
    - HeapTupleHeaderXminInvalid
    - HeapTupleHeaderGetRawXmin
    - HEAP_XMAX_IS_LOCKED_ONLY
    - TransactionIdDidCommit
    - HeapTupleHeaderXminCommitted
    - TransactionIdIsValid
    - SetHintBits
    - HeapTupleHeaderGetRawXmax
    - ItemPointerIsValid
    - HeapTupleCleanMoved
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleSatisfiesSelf(HeapTuple htup, Snapshot snapshot, Buffer
      buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 433
    functionName: HeapTupleSatisfiesAny
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleSatisfiesAny(HeapTuple htup, Snapshot snapshot, Buffer
      buffer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:457,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:458,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:460,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:462,1
    - Dst: HeapTupleCleanMoved
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:465,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:473,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:473,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 451
    functionDepth: 4
    functionLinenumber: 451
    functionLinenumberEnd: 479
    functionName: HeapTupleSatisfiesToast
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - Assert
    - HeapTupleHeaderXminInvalid
    - HeapTupleHeaderGetXmin
    - HeapTupleHeaderXminCommitted
    - TransactionIdIsValid
    - ItemPointerIsValid
    - HeapTupleCleanMoved
    linkageType: ''
    returnType: bool
    signature: "bool HeapTupleSatisfiesToast(HeapTuple htup, Snapshot snapshot,\n\t\t\t\t\t\tBuffer
      buffer)"
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:516,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:517,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:519,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:521,1
    - Dst: HeapTupleCleanMoved
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:524,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:526,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:526,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:528,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:534,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:538,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:549,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:560,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:572,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:572,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:575,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:577,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:577,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:584,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:591,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:591,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:594,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:599,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:604,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:604,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:606,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:606,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:607,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:608,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:612,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:625,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:627,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:637,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:640,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:642,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:642,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:645,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:649,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:650,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:652,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:652,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:657,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:657,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:659,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:661,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:667,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:667,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:670,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:672,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:683,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:683,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:689,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:700,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:700,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:702,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:704,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:710,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:710,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:713,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:713,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:716,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:723,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:725,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:730,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:731,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:732,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 117
    argCount: 3
    argNames:
    - htup
    - curcid
    - buffer
    argTypes:
    - HeapTuple
    - CommandId
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 510
    functionDepth: 4
    functionLinenumber: 510
    functionLinenumberEnd: 736
    functionName: HeapTupleSatisfiesUpdate
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 4
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - HeapTupleHeaderGetCmax
    - HeapTupleHeaderXminInvalid
    - HeapTupleHeaderXminCommitted
    - HeapTupleCleanMoved
    - Assert
    - HeapTupleHeaderGetRawXmin
    - ItemPointerEquals
    - SetHintBits
    - HeapTupleHeaderGetRawXmax
    - MultiXactIdIsRunning
    - TransactionIdIsInProgress
    - HeapTupleHeaderGetCmin
    - TransactionIdDidCommit
    - ItemPointerIsValid
    - HeapTupleGetUpdateXid
    - HEAP_LOCKED_UPGRADED
    - HEAP_XMAX_IS_LOCKED_ONLY
    - TransactionIdIsValid
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result HeapTupleSatisfiesUpdate(HeapTuple htup, CommandId curcid,\n\t\t\t\t\t\t
      Buffer buffer)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:764,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:764,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:765,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:770,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:772,1
    - Dst: HeapTupleCleanMoved
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:775,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:777,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:777,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:782,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:789,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:792,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:792,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:795,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:801,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:801,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:804,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:811,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:811,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:819,1
    - Dst: HeapTupleHeaderGetSpeculativeToken
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:824,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:827,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:831,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:831,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:832,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:833,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:837,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:850,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:859,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:862,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:865,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:865,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:867,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:869,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:874,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:880,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:880,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:882,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:887,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:887,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:889,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:890,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:894,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:894,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:897,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:904,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:906,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:911,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:912,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 84
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 758
    functionDepth: 4
    functionLinenumber: 758
    functionLinenumberEnd: 914
    functionName: HeapTupleSatisfiesDirty
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - HeapTupleGetUpdateXid
    - TransactionIdIsInProgress
    - Assert
    - HeapTupleHeaderXminInvalid
    - HeapTupleHeaderGetRawXmin
    - HEAP_XMAX_IS_LOCKED_ONLY
    - TransactionIdDidCommit
    - HeapTupleHeaderGetSpeculativeToken
    - HeapTupleHeaderXminCommitted
    - TransactionIdIsValid
    - HeapTupleHeaderIsSpeculative
    - SetHintBits
    - HeapTupleHeaderGetRawXmax
    - ItemPointerIsValid
    - HeapTupleCleanMoved
    linkageType: ''
    returnType: bool
    signature: "bool HeapTupleSatisfiesDirty(HeapTuple htup, Snapshot snapshot,\n\t\t\t\t\t\tBuffer
      buffer)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:953,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:953,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:954,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:956,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:958,1
    - Dst: HeapTupleCleanMoved
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:961,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:963,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:963,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:965,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:971,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:978,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:981,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:981,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:984,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:986,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:992,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:992,1
    - Dst: SetHintBitsExt
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:995,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1000,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1005,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1005,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1007,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1007,1
    - Dst: SetHintBitsExt
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1008,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1009,1
    - Dst: SetHintBitsExt
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1013,1
    - Dst: HeapTupleHeaderXminFrozen
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1021,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1022,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1022,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1031,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1039,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1039,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1041,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1044,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1044,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1046,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1048,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1053,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1055,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1063,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1063,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1065,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1071,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1071,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1074,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1074,1
    - Dst: SetHintBitsExt
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1077,1
    - Dst: SetHintBitsExt
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1083,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1084,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1089,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1089,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 81
    argCount: 4
    argNames:
    - htup
    - snapshot
    - buffer
    - state
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    - SetHintBitsState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 938
    functionDepth: 4
    functionLinenumber: 938
    functionLinenumberEnd: 1096
    functionName: HeapTupleSatisfiesMVCC
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - HeapTupleGetUpdateXid
    - XidInMVCCSnapshot
    - HeapTupleHeaderGetCmax
    - HeapTupleHeaderGetCmin
    - Assert
    - HeapTupleHeaderXminInvalid
    - HeapTupleHeaderGetRawXmin
    - HEAP_XMAX_IS_LOCKED_ONLY
    - SetHintBitsExt
    - TransactionIdDidCommit
    - HeapTupleHeaderXminCommitted
    - TransactionIdIsValid
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderXminFrozen
    - ItemPointerIsValid
    - HeapTupleCleanMoved
    linkageType: ''
    returnType: bool
    signature: "bool HeapTupleSatisfiesMVCC(HeapTuple htup, Snapshot snapshot,\n\t\t\t\t\t
      \  Buffer buffer, SetHintBitsState *state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleSatisfiesVacuumHorizon
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1119,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1123,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1123,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1125,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1129,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - htup
    - OldestXmin
    - buffer
    argTypes:
    - HeapTuple
    - TransactionId
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1112
    functionDepth: 2
    functionLinenumber: 1112
    functionLinenumberEnd: 1132
    functionName: HeapTupleSatisfiesVacuum
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 3
    functionsReached:
    - Assert
    - TransactionIdPrecedes
    - HeapTupleSatisfiesVacuumHorizon
    - TransactionIdIsValid
    linkageType: ''
    returnType: HTSV_Result
    signature: "HTSV_Result HeapTupleSatisfiesVacuum(HeapTuple htup, TransactionId
      OldestXmin,\n\t\t\t\t\t\t Buffer buffer)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1151,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1153,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1163,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1165,1
    - Dst: HeapTupleCleanMoved
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1167,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1169,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1169,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1174,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1175,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1178,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1178,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1183,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1183,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1195,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1195,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1196,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1197,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1203,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1222,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1238,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1239,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1239,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1242,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1246,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1246,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1248,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1267,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1270,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1270,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1272,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1274,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1287,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1287,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1293,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1301,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1301,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1303,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1303,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1304,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1305,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1311,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1327,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 69
    argCount: 3
    argNames:
    - htup
    - buffer
    - dead_after
    argTypes:
    - HeapTuple
    - Buffer
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1146
    functionDepth: 4
    functionLinenumber: 1146
    functionLinenumberEnd: 1329
    functionName: HeapTupleSatisfiesVacuumHorizon
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 2
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - HeapTupleGetUpdateXid
    - TransactionIdIsInProgress
    - Assert
    - HeapTupleHeaderXminInvalid
    - HeapTupleHeaderGetRawXmin
    - HEAP_XMAX_IS_LOCKED_ONLY
    - TransactionIdDidCommit
    - HeapTupleHeaderIsOnlyLocked
    - HeapTupleHeaderXminCommitted
    - HEAP_LOCKED_UPGRADED
    - TransactionIdIsValid
    - MultiXactIdIsRunning
    - SetHintBits
    - HeapTupleHeaderGetRawXmax
    - ItemPointerIsValid
    - HeapTupleHeaderGetUpdateXid
    - HeapTupleCleanMoved
    linkageType: ''
    returnType: HTSV_Result
    signature: HTSV_Result HeapTupleSatisfiesVacuumHorizon(HeapTuple htup, Buffer
      buffer, TransactionId *dead_after)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleSatisfiesVacuumHorizon
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1355,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1355,1
    - Dst: GlobalVisTestIsRemovableXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1361,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1361,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1344
    functionDepth: 5
    functionLinenumber: 1344
    functionLinenumberEnd: 1364
    functionName: HeapTupleSatisfiesNonVacuumable
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - Assert
    - GlobalVisTestIsRemovableXid
    - HeapTupleSatisfiesVacuumHorizon
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: "bool HeapTupleSatisfiesNonVacuumable(HeapTuple htup, Snapshot snapshot,\n\t\t\t\t\t\t\t\tBuffer
      buffer)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1385,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1386,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1394,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1395,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1407,1
    - Dst: GlobalVisTestIsRemovableXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1422,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1423,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - htup
    - vistest
    argTypes:
    - HeapTuple
    - GlobalVisState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1380
    functionDepth: 1
    functionLinenumber: 1380
    functionLinenumberEnd: 1425
    functionName: HeapTupleIsSurelyDead
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - Assert
    - HeapTupleHeaderXminInvalid
    - HEAP_XMAX_IS_LOCKED_ONLY
    - HeapTupleHeaderXminCommitted
    - HeapTupleHeaderGetRawXmax
    - GlobalVisTestIsRemovableXid
    - ItemPointerIsValid
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleIsSurelyDead(HeapTuple htup, GlobalVisState *vistest)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1449,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1449,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1460,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1463,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1463,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1465,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1467,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1469,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleHeader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1436
    functionDepth: 3
    functionLinenumber: 1436
    functionLinenumberEnd: 1477
    functionName: HeapTupleHeaderIsOnlyLocked
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 6
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - TransactionIdIsInProgress
    - Assert
    - TransactionIdDidCommit
    - TransactionIdIsValid
    - HeapTupleHeaderGetRawXmax
    - HeapTupleGetUpdateXid
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderIsOnlyLocked(HeapTupleHeader tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - xid
    - xip
    - num
    argTypes:
    - TransactionId
    - TransactionId*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1487
      start: 1482
    functionDepth: 0
    functionLinenumber: 1482
    functionLinenumberEnd: 1487
    functionName: TransactionIdInArray
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - bsearch
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdInArray(TransactionId xid, TransactionId *xip, Size
      num)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1508,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1511,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1511,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1512,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1517,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1517,1
    - Dst: TransactionIdInArray
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1521,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1524,1
    - Dst: ResolveCminCmaxDuringDecoding
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1532,1
    - Dst: HistoricSnapshotGetTupleCids
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1532,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1556,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1565,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1565,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1566,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1569,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1570,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1575,1
    - Dst: TransactionIdInArray
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1580,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1600,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1609,1
    - Dst: TransactionIdInArray
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1613,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1617,1
    - Dst: ResolveCminCmaxDuringDecoding
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1620,1
    - Dst: HistoricSnapshotGetTupleCids
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1620,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1652,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1653,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1660,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1663,1
    - Dst: TransactionIdInArray
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1666,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 53
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1503
    functionDepth: 3
    functionLinenumber: 1503
    functionLinenumberEnd: 1671
    functionName: HeapTupleSatisfiesHistoricMVCC
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - TransactionIdInArray
    - TransactionIdPrecedes
    - TransactionIdFollowsOrEquals
    - HistoricSnapshotGetTupleCids
    - Assert
    - HeapTupleHeaderXminInvalid
    - TransactionIdDidCommit
    - HeapTupleHeaderGetXmin
    - HEAP_XMAX_IS_LOCKED_ONLY
    - HeapTupleHeaderXminCommitted
    - HeapTupleHeaderGetRawXmax
    - ItemPointerIsValid
    - HeapTupleHeaderGetRawCommandId
    - HeapTupleGetUpdateXid
    - ResolveCminCmaxDuringDecoding
    linkageType: ''
    returnType: bool
    signature: "bool HeapTupleSatisfiesHistoricMVCC(HeapTuple htup, Snapshot snapshot,\n\t\t\t\t\t\t\t
      \  Buffer buffer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1698,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1698,1
    - Dst: HeapTupleSatisfiesMVCC
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1705,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1708,1
    - Dst: BufferFinishSetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1716,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - snapshot
    - buffer
    - ntups
    - batchmvcc
    - vistuples_dense
    argTypes:
    - Snapshot
    - Buffer
    - int
    - BatchMVCCState*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1689
    functionDepth: 5
    functionLinenumber: 1689
    functionLinenumberEnd: 1719
    functionName: HeapTupleSatisfiesMVCCBatch
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 1
    functionsReached:
    - Assert
    - BufferFinishSetHintBits
    - HeapTupleSatisfiesMVCC
    - likely
    - IsMVCCSnapshot
    linkageType: ''
    returnType: int
    signature: "int HeapTupleSatisfiesMVCCBatch(Snapshot snapshot, Buffer buffer,\n\t\t\t\t\t\t\tint
      ntups,\n\t\t\t\t\t\t\tBatchMVCCState *batchmvcc,\n\t\t\t\t\t\t\tOffsetNumber
      *vistuples_dense)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleSatisfiesMVCC
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1737,1
    - Dst: HeapTupleSatisfiesSelf
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1739,1
    - Dst: HeapTupleSatisfiesAny
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1741,1
    - Dst: HeapTupleSatisfiesToast
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1743,1
    - Dst: HeapTupleSatisfiesDirty
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1745,1
    - Dst: HeapTupleSatisfiesHistoricMVCC
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1747,1
    - Dst: HeapTupleSatisfiesNonVacuumable
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1749,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1753
      start: 1731
    functionDepth: 6
    functionLinenumber: 1731
    functionLinenumberEnd: 1753
    functionName: HeapTupleSatisfiesVisibility
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 8
    functionsReached:
    - HeapTupleSatisfiesSelf
    - HeapTupleSatisfiesToast
    - HeapTupleSatisfiesDirty
    - HeapTupleSatisfiesAny
    - HeapTupleSatisfiesNonVacuumable
    - HeapTupleSatisfiesMVCC
    - HeapTupleSatisfiesHistoricMVCC
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleSatisfiesVisibility(HeapTuple htup, Snapshot snapshot,
      Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - vacrel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 222
    functionName: ParallelVacuumIsActive
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ParallelVacuumIsActive(vacrel)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:552,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:553,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:558,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:559,1
    - Dst: visibilitymap_count
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:572,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:593,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - vacrel
    - params
    argTypes:
    - LVRelState*
    - VacuumParams*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 496
    functionDepth: 5
    functionLinenumber: 496
    functionLinenumberEnd: 610
    functionName: heap_vacuum_eager_scan_setup
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - visibilitymap_count
    - Assert
    - MultiXactIdIsValid
    - pg_prng_uint32
    - TransactionIdIsNormal
    - MultiXactIdPrecedes
    linkageType: ''
    returnType: void
    signature: void heap_vacuum_eager_scan_setup(LVRelState *vacrel, const VacuumParams
      *params)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:648,1
    - Dst: pg_rusage_init
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:652,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:661,1
    - Dst: pgstat_progress_start_command
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:663,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:664,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:665,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:666,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:671,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:686,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:687,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:688,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:688,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:689,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:689,1
    - Dst: vac_open_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:700,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:706,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:708,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:721,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:747,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:764,1
    - Dst: vacuum_get_cutoffs
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:802,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:803,1
    - Dst: GlobalVisTestFor
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:804,1
    - Dst: heap_vacuum_eager_scan_setup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:834,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:837,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:845,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:846,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:850,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:851,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:863,1
    - Dst: dead_items_alloc
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:864,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:873,1
    - Dst: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:873,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:874,1
    - Dst: lazy_scan_heap
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:881,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:889,1
    - Dst: dead_items_cleanup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:896,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:896,1
    - Dst: update_relstats_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:905,1
    - Dst: vac_close_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:908,1
    - Dst: should_attempt_truncation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:911,1
    - Dst: lazy_truncate_heap
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:912,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:928,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:929,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:932,1
    - Dst: MultiXactIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:933,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:943,1
    - Dst: visibilitymap_count
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:953,1
    - Dst: vac_update_relstats
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:972,1
    - Dst: pgstat_report_vacuum
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:988,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:989,1
    - Dst: pgstat_progress_end_command
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:993,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:997,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1000,1
    - Dst: TimestampDifference
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1016,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1017,1
    - Dst: WalUsageAccumDiff
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1018,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1019,1
    - Dst: BufferUsageAccumDiff
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1020,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1029,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1036,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1037,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1048,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1050,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1055,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1057,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1059,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1064,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1064,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1072,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1073,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1078,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1079,1
    - Dst: ReadNextTransactionId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1082,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1084,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1085,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1091,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1092,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1099,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1100,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1103,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1103,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1110,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1111,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1119,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1119,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1121,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1121,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1123,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1128,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1128,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1130,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1130,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1132,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1134,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1141,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1142,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1147,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1148,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1159,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1160,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1175,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1175,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1183,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1183,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1193,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1193,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1195,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1196,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1200,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1201,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1216,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1217,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1223,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1223,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1223,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1225,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1226,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1227,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1235,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1238,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 214
    argCount: 3
    argNames:
    - rel
    - params
    - bstrategy
    argTypes:
    - Relation
    - VacuumParams*
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 623
    functionDepth: 6
    functionLinenumber: 623
    functionLinenumberEnd: 1240
    functionName: heap_vacuum_rel
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - pg_rusage_show
    - visibilitymap_count
    - pg_rusage_init
    - pstrdup
    - palloc_array
    - RelationGetNamespace
    - lazy_truncate_heap
    - IsInParallelMode
    - RelationGetRelationName
    - dead_items_cleanup
    - lazy_scan_heap
    - AmAutoVacuumWorkerProcess
    - TimestampDifferenceExceeds
    - _
    - Assert
    - pfree
    - appendStringInfoString
    - MultiXactIdPrecedesOrEquals
    - vacuum_get_cutoffs
    - GlobalVisTestFor
    - lazy_check_wraparound_failsafe
    - vac_update_relstats
    - pgstat_progress_start_command
    - get_database_name
    - dead_items_alloc
    - errmsg
    - RelationGetNumberOfBlocks
    - TransactionIdPrecedesOrEquals
    - pgstat_progress_end_command
    - vac_close_indexes
    - GetCurrentTimestamp
    - palloc0_object
    - heap_vacuum_eager_scan_setup
    - should_attempt_truncation
    - errmsg_internal
    - initStringInfo
    - ereport
    - ReadNextTransactionId
    - memset
    - get_namespace_name
    - INJECTION_POINT
    - TidStoreMemoryUsage
    - WalUsageAccumDiff
    - BufferUsageAccumDiff
    - appendStringInfo
    - palloc0
    - ngettext
    - vac_open_indexes
    - ParallelVacuumIsActive
    - Max
    - TimestampDifference
    - update_relstats_all_indexes
    - pgstat_progress_update_param
    - RelationGetRelid
    - pgstat_report_vacuum
    linkageType: ''
    returnType: void
    signature: "void heap_vacuum_rel(Relation rel, const VacuumParams *params,\n\t\t\t\tBufferAccessStrategy
      bstrategy)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1299,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1313,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1332,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1345,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1356,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1364,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1366,1
    - Dst: lazy_vacuum
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1372,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1379,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1384,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1388,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1391,1
    - Dst: CheckBufferIsPinnedOnce
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1395,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1396,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1397,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1404,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1405,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1413,1
    - Dst: ConditionalLockBufferForCleanup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1421,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1424,1
    - Dst: lazy_scan_new_or_empty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1427,1
    - Dst: lazy_scan_noprune
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1443,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1449,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1450,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1451,1
    - Dst: lazy_scan_prune
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1490,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1507,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1508,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1550,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1552,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1553,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1564,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1570,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1574,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1575,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1581,1
    - Dst: vac_estimate_reltuples
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1585,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1594,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1597,1
    - Dst: lazy_vacuum
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1604,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1613,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1616,1
    - Dst: lazy_cleanup_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1620,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 92
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1278
    functionDepth: 4
    functionLinenumber: 1278
    functionLinenumberEnd: 1621
    functionName: lazy_scan_heap
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - lazy_scan_prune
    - read_stream_next_buffer
    - vac_estimate_reltuples
    - LockBuffer
    - BufferGetPage
    - read_stream_begin_relation
    - vacuum_delay_point
    - lazy_scan_noprune
    - ReleaseBuffer
    - visibilitymap_pin
    - ConditionalLockBufferForCleanup
    - Assert
    - BufferGetBlockNumber
    - lazy_check_wraparound_failsafe
    - errmsg
    - LockBufferForCleanup
    - UnlockReleaseBuffer
    - PageGetHeapFreeSpace
    - read_stream_end
    - FreeSpaceMapVacuumRange
    - ereport
    - BufferIsValid
    - update_vacuum_error_info
    - lazy_cleanup_all_indexes
    - CheckBufferIsPinnedOnce
    - lazy_vacuum
    - TidStoreMemoryUsage
    - lazy_scan_new_or_empty
    - pgstat_progress_update_multi_param
    - RecordPageWithFreeSpace
    - Max
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void lazy_scan_heap(LVRelState *vacrel)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1661,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1663,1
    - Dst: find_next_unskippable_block
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1682,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1726,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - stream
    - callback_private_data
    - per_buffer_data
    argTypes:
    - ReadStream*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1647
    functionDepth: 2
    functionLinenumber: 1647
    functionLinenumberEnd: 1732
    functionName: heap_vac_scan_next_block
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReleaseBuffer
    - BufferIsValid
    - find_next_unskippable_block
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber heap_vac_scan_next_block(ReadStream *stream,\n\t\t\t\t\t\t
      void *callback_private_data,\n\t\t\t\t\t\t void *per_buffer_data)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: visibilitymap_get_status
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1759,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1783,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 2
    argNames:
    - vacrel
    - skipsallvis
    argTypes:
    - LVRelState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1840
      start: 1747
    functionDepth: 5
    functionLinenumber: 1747
    functionLinenumberEnd: 1840
    functionName: find_next_unskippable_block
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - visibilitymap_get_status
    - Assert
    linkageType: ''
    returnType: void
    signature: void find_next_unskippable_block(LVRelState *vacrel, bool *skipsallvis)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1882,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1903,1
    - Dst: GetRecordedFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1905,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1909,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1915,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1924,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1925,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1927,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1942,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1945,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1947,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1950,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1952,1
    - Dst: PageClearPrunable
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1953,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1954,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1964,1
    - Dst: log_heap_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1965,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1977,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1979,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1986,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1987,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1988,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 6
    argNames:
    - vacrel
    - buf
    - blkno
    - page
    - sharelock
    - vmbuffer
    argTypes:
    - LVRelState*
    - Buffer
    - BlockNumber
    - Page
    - bool
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1876
    functionDepth: 5
    functionLinenumber: 1876
    functionLinenumberEnd: 1994
    functionName: lazy_scan_new_or_empty
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - PageIsAllVisible
    - PageGetHeapFreeSpace
    - visibilitymap_set
    - LockBuffer
    - PageIsNew
    - log_heap_prune_and_freeze
    - START_CRIT_SECTION
    - PageSetAllVisible
    - GetRecordedFreeSpace
    - RecordPageWithFreeSpace
    - PageIsEmpty
    - RelationNeedsWAL
    - PageClearPrunable
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - END_CRIT_SECTION
    linkageType: ''
    returnType: bool
    signature: "bool lazy_scan_new_or_empty(LVRelState *vacrel, Buffer buf, BlockNumber
      blkno,\n\t\t\t\t\t   Page page, bool sharelock, Buffer vmbuffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u16
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2000,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2001
      start: 1997
    functionDepth: 1
    functionLinenumber: 1997
    functionLinenumberEnd: 2001
    functionName: cmpOffsetNumbers
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u16
    linkageType: ''
    returnType: int
    signature: int cmpOffsetNumbers(const void *a, const void *b)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2041,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2041,1
    - Dst: heap_page_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2071,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2076,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2076,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2077,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2077,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2103,1
    - Dst: dead_items_add
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2106,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 7
    argNames:
    - vacrel
    - buf
    - blkno
    - page
    - vmbuffer
    - has_lpdead_items
    - vm_page_frozen
    argTypes:
    - LVRelState*
    - Buffer
    - BlockNumber
    - Page
    - Buffer
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 2020
    functionDepth: 1
    functionLinenumber: 2020
    functionLinenumberEnd: 2135
    functionName: lazy_scan_prune
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - qsort
    - dead_items_add
    - Assert
    - BufferGetBlockNumber
    - MultiXactIdIsValid
    - heap_page_prune_and_freeze
    - TransactionIdIsValid
    linkageType: ''
    returnType: int
    signature: "int lazy_scan_prune(LVRelState *vacrel,\n\t\t\t\tBuffer buf,\n\t\t\t\tBlockNumber
      blkno,\n\t\t\t\tPage page,\n\t\t\t\tBuffer vmbuffer,\n\t\t\t\tbool *has_lpdead_items,\n\t\t\t\tbool
      *vm_page_frozen)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2176,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2176,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2185,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2188,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2194,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2196,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2199,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2205,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2216,1
    - Dst: heap_tuple_should_freeze
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2217,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2249,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2250,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2251,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2252,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2254,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2288,1
    - Dst: dead_items_add
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2330,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 74
    argCount: 5
    argNames:
    - vacrel
    - buf
    - blkno
    - page
    - has_lpdead_items
    argTypes:
    - LVRelState*
    - Buffer
    - BlockNumber
    - Page
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2353
      start: 2157
    functionDepth: 3
    functionLinenumber: 2157
    functionLinenumberEnd: 2353
    functionName: lazy_scan_noprune
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - ItemIdIsUsed
    - ItemPointerSet
    - elog
    - OffsetNumberNext
    - heap_tuple_should_freeze
    - dead_items_add
    - Assert
    - BufferGetBlockNumber
    - ItemIdIsDead
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - ItemIdIsRedirected
    - PageGetItem
    - HeapTupleSatisfiesVacuum
    - ItemIdGetLength
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: "bool lazy_scan_noprune(LVRelState *vacrel,\n\t\t\t\t  Buffer buf,\n\t\t\t\t
      \ BlockNumber blkno,\n\t\t\t\t  Page page,\n\t\t\t\t  bool *has_lpdead_items)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2374,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2379,1
    - Dst: dead_items_reset
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2410,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2411,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2437,1
    - Dst: lazy_vacuum_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2454,1
    - Dst: lazy_vacuum_heap_rel
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2460,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2475,1
    - Dst: dead_items_reset
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2482,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2483
      start: 2368
    functionDepth: 1
    functionLinenumber: 2368
    functionLinenumberEnd: 2483
    functionName: lazy_vacuum
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - lazy_vacuum_all_indexes
    - TidStoreMemoryUsage
    - Assert
    - dead_items_reset
    - lazy_vacuum_heap_rel
    linkageType: ''
    returnType: void
    signature: void lazy_vacuum(LVRelState *vacrel)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2510,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2511,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2512,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2515,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2527,1
    - Dst: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2529,1
    - Dst: lazy_vacuum_one_index
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2536,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2541,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2544,1
    - Dst: parallel_vacuum_bulkdel_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2555,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2574,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2576,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2589,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2592
      start: 2493
    functionDepth: 1
    functionLinenumber: 2493
    functionLinenumberEnd: 2592
    functionName: lazy_vacuum_all_indexes
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - Assert
    - lazy_vacuum_one_index
    - pgstat_progress_update_multi_param
    - parallel_vacuum_bulkdel_all_indexes
    - lazy_check_wraparound_failsafe
    - ParallelVacuumIsActive
    - pgstat_progress_update_param
    linkageType: ''
    returnType: bool
    signature: bool lazy_vacuum_all_indexes(LVRelState *vacrel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreIterateNext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2609,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - callback_private_data
    - per_buffer_data
    argTypes:
    - ReadStream*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2620
      start: 2601
    functionDepth: 1
    functionLinenumber: 2601
    functionLinenumberEnd: 2620
    functionName: vacuum_reap_lp_read_stream_next
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - TidStoreIterateNext
    - memcpy
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber vacuum_reap_lp_read_stream_next(ReadStream *stream,\n\t\t\t\t\t\t\t\tvoid
      *callback_private_data,\n\t\t\t\t\t\t\t\tvoid *per_buffer_data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2650,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2653,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2657,1
    - Dst: TidStoreBeginIterate
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2661,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2671,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2690,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2692,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2695,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2698,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2700,1
    - Dst: TidStoreGetBlockOffsets
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2701,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2702,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2702,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2709,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2712,1
    - Dst: lazy_vacuum_heap_page
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2713,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2717,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2718,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2720,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2721,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2725,1
    - Dst: TidStoreEndIterate
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2726,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2729,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2740,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2741,1
    - Dst: restore_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2746,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2747
      start: 2639
    functionDepth: 4
    functionLinenumber: 2639
    functionLinenumberEnd: 2747
    functionName: lazy_vacuum_heap_rel
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - read_stream_next_buffer
    - TidStoreGetBlockOffsets
    - TidStoreEndIterate
    - restore_vacuum_error_info
    - LockBuffer
    - BufferGetPage
    - read_stream_begin_relation
    - vacuum_delay_point
    - ReleaseBuffer
    - visibilitymap_pin
    - Assert
    - BufferGetBlockNumber
    - errmsg
    - UnlockReleaseBuffer
    - lengthof
    - PageGetHeapFreeSpace
    - read_stream_end
    - ereport
    - TidStoreBeginIterate
    - update_vacuum_error_info
    - BufferIsValid
    - lazy_vacuum_heap_page
    - RecordPageWithFreeSpace
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void lazy_vacuum_heap_rel(LVRelState *vacrel)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2762,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2771,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2773,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2776,1
    - Dst: heap_page_would_be_all_visible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2788,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2798,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2798,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2806,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2809,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2816,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2818,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2818,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2818,1
    - Dst: ItemIdSetUnused
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2819,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2823,1
    - Dst: PageTruncateLinePointerArray
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2826,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2834,1
    - Dst: PageClearPrunable
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2835,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2836,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2845,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2848,1
    - Dst: log_heap_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2850,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2862,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2867,1
    - Dst: restore_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2874,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 6
    argNames:
    - vacrel
    - blkno
    - buffer
    - deadoffsets
    - num_offsets
    - vmbuffer
    argTypes:
    - LVRelState*
    - BlockNumber
    - Buffer
    - OffsetNumber*
    - int
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2875
      start: 2757
    functionDepth: 5
    functionLinenumber: 2757
    functionLinenumberEnd: 2875
    functionName: lazy_vacuum_heap_page
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - END_CRIT_SECTION
    - restore_vacuum_error_info
    - LockBuffer
    - BufferGetPage
    - visibilitymap_set
    - Assert
    - PageTruncateLinePointerArray
    - ItemIdIsDead
    - PageGetItemId
    - PageSetAllVisible
    - ItemIdHasStorage
    - update_vacuum_error_info
    - MarkBufferDirty
    - ItemIdSetUnused
    - log_heap_prune_and_freeze
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - PageClearPrunable
    - heap_page_would_be_all_visible
    - pgstat_progress_update_param
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void lazy_vacuum_heap_page(LVRelState *vacrel, BlockNumber blkno,
      Buffer buffer,\n\t\t\t\t\t  OffsetNumber *deadoffsets, int num_offsets,\n\t\t\t\t\t
      \ Buffer vmbuffer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2896,1
    - Dst: vacuum_xid_failsafe_check
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2896,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2920,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2922,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2923,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2926,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2927,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2938
      start: 2889
    functionDepth: 1
    functionLinenumber: 2889
    functionLinenumberEnd: 2938
    functionName: lazy_check_wraparound_failsafe
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 3
    functionsReached:
    - vacuum_xid_failsafe_check
    - ereport
    - pgstat_progress_update_multi_param
    - errhint
    - unlikely
    - errmsg
    - errdetail
    linkageType: ''
    returnType: bool
    signature: bool lazy_check_wraparound_failsafe(LVRelState *vacrel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2959,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2960,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2968,1
    - Dst: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2970,1
    - Dst: lazy_cleanup_one_index
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2978,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2982,1
    - Dst: parallel_vacuum_cleanup_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2989,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2996,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2997
      start: 2943
    functionDepth: 1
    functionLinenumber: 2943
    functionLinenumberEnd: 2997
    functionName: lazy_cleanup_all_indexes
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - lazy_cleanup_one_index
    - Assert
    - pgstat_progress_update_multi_param
    - ParallelVacuumIsActive
    - parallel_vacuum_cleanup_all_indexes
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void lazy_cleanup_all_indexes(LVRelState *vacrel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3034,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3035,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3035,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3036,1
    - Dst: vac_bulkdel_one_index
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3041,1
    - Dst: restore_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3045,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 4
    argNames:
    - indrel
    - istat
    - reltuples
    - vacrel
    argTypes:
    - Relation
    - IndexBulkDeleteResult*
    - double
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3050
      start: 3012
    functionDepth: 1
    functionLinenumber: 3012
    functionLinenumberEnd: 3050
    functionName: lazy_vacuum_one_index
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - vac_bulkdel_one_index
    - restore_vacuum_error_info
    - Assert
    - pfree
    - pstrdup
    - update_vacuum_error_info
    - RelationGetRelationName
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\nlazy_vacuum_one_index(Relation indrel, IndexBulkDeleteResult
      *istat,\n\t\t\t\t\t  double reltuples, LVRelState *vacrel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3085,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3086,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3086,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3087,1
    - Dst: vac_cleanup_one_index
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3091,1
    - Dst: restore_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3094,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3095,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 5
    argNames:
    - indrel
    - istat
    - reltuples
    - estimated_count
    - vacrel
    argTypes:
    - Relation
    - IndexBulkDeleteResult*
    - double
    - bool
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3099
      start: 3061
    functionDepth: 1
    functionLinenumber: 3061
    functionLinenumberEnd: 3099
    functionName: lazy_cleanup_one_index
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - restore_vacuum_error_info
    - Assert
    - pfree
    - pstrdup
    - vac_cleanup_one_index
    - update_vacuum_error_info
    - RelationGetRelationName
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\nlazy_cleanup_one_index(Relation indrel, IndexBulkDeleteResult
      *istat,\n\t\t\t\t\t   double reltuples, bool estimated_count,\n\t\t\t\t\t   LVRelState
      *vacrel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3136
      start: 3121
    functionDepth: 0
    functionLinenumber: 3121
    functionLinenumberEnd: 3136
    functionName: should_attempt_truncation
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool should_attempt_truncation(LVRelState *vacrel)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3150,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3154,1
    - Dst: ConditionalLockRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3173,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3180,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3190,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3195,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3199,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3207,1
    - Dst: UnlockRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3217,1
    - Dst: count_nondeletable_pages
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3227,1
    - Dst: UnlockRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3233,1
    - Dst: RelationTruncate
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3240,1
    - Dst: UnlockRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3249,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3259,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3260,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3265
      start: 3141
    functionDepth: 1
    functionLinenumber: 3141
    functionLinenumberEnd: 3265
    functionName: lazy_truncate_heap
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - ConditionalLockRelation
    - RelationTruncate
    - ereport
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - UnlockRelation
    - count_nondeletable_pages
    - update_vacuum_error_info
    - errmsg
    - WaitLatch
    - RelationGetNumberOfBlocks
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void lazy_truncate_heap(LVRelState *vacrel)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3275,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3283,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3314,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3316,1
    - Dst: INSTR_TIME_GET_MICROSEC
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3317,1
    - Dst: LockHasWaitersRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3320,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3323,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3338,1
    - Dst: PrefetchBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3351,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3352,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3357,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3361,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3363,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3365,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3365,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3367,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3372,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3375,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3379,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3386,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3393,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 2
    argNames:
    - vacrel
    - lock_waiter_detected
    argTypes:
    - LVRelState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3406
      start: 3272
    functionDepth: 4
    functionLinenumber: 3272
    functionLinenumberEnd: 3406
    functionName: count_nondeletable_pages
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - LockBuffer
    - PageIsNew
    - BufferGetPage
    - PageIsEmpty
    - LockHasWaitersRelation
    - PageGetMaxOffsetNumber
    - errmsg
    - UnlockReleaseBuffer
    - StaticAssertDecl
    - ItemIdIsUsed
    - PrefetchBuffer
    - ReadBufferExtended
    - ereport
    - CHECK_FOR_INTERRUPTS
    - PageGetItemId
    - INSTR_TIME_SUBTRACT
    - INSTR_TIME_SET_CURRENT
    - OffsetNumberNext
    - INSTR_TIME_GET_MICROSEC
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber count_nondeletable_pages(LVRelState *vacrel, bool *lock_waiter_detected)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3419,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3434,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3441,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3442,1
    - Dst: parallel_vacuum_init
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3446,1
    - Dst: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3456,1
    - Dst: parallel_vacuum_get_dead_items
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3458,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3469,1
    - Dst: TidStoreCreateLocal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3474,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - vacrel
    - nworkers
    argTypes:
    - LVRelState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3475
      start: 3415
    functionDepth: 1
    functionLinenumber: 3415
    functionLinenumberEnd: 3475
    functionName: dead_items_alloc
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - parallel_vacuum_get_dead_items
    - parallel_vacuum_init
    - RelationUsesLocalBuffers
    - ereport
    - ParallelVacuumIsActive
    - errmsg
    - palloc_object
    - TidStoreCreateLocal
    - AmAutoVacuumWorkerProcess
    linkageType: ''
    returnType: void
    signature: void dead_items_alloc(LVRelState *vacrel, int nworkers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreSetBlockOffsets
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3490,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3495,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - vacrel
    - blkno
    - offsets
    - num_offsets
    argTypes:
    - LVRelState*
    - BlockNumber
    - OffsetNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3497
      start: 3480
    functionDepth: 1
    functionLinenumber: 3480
    functionLinenumberEnd: 3497
    functionName: dead_items_add
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 2
    functionsReached:
    - TidStoreSetBlockOffsets
    - pgstat_progress_update_multi_param
    - TidStoreMemoryUsage
    linkageType: ''
    returnType: void
    signature: "void dead_items_add(LVRelState *vacrel, BlockNumber blkno, OffsetNumber
      *offsets,\n\t\t\t   int num_offsets)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3507,1
    - Dst: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3509,1
    - Dst: parallel_vacuum_reset_dead_items
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3511,1
    - Dst: parallel_vacuum_get_dead_items
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3512,1
    - Dst: TidStoreDestroy
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3518,1
    - Dst: TidStoreCreateLocal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3523
      start: 3502
    functionDepth: 1
    functionLinenumber: 3502
    functionLinenumberEnd: 3523
    functionName: dead_items_reset
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - parallel_vacuum_get_dead_items
    - TidStoreMemoryUsage
    - TidStoreDestroy
    - ParallelVacuumIsActive
    - parallel_vacuum_reset_dead_items
    - TidStoreCreateLocal
    linkageType: ''
    returnType: void
    signature: void dead_items_reset(LVRelState *vacrel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3531,1
    - Dst: parallel_vacuum_end
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3540
      start: 3528
    functionDepth: 1
    functionLinenumber: 3528
    functionLinenumberEnd: 3540
    functionName: dead_items_cleanup
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - ParallelVacuumIsActive
    - parallel_vacuum_end
    linkageType: ''
    returnType: void
    signature: void dead_items_cleanup(LVRelState *vacrel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heap_page_would_be_all_visible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - rel
    - buf
    - vistest
    - all_frozen
    - newest_live_xid
    - logging_offnum
    argTypes:
    - Relation
    - Buffer
    - GlobalVisState*
    - bool*
    - TransactionId*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3568
      start: 3549
    functionDepth: 1
    functionLinenumber: 3549
    functionLinenumberEnd: 3568
    functionName: heap_page_is_all_visible
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - heap_page_would_be_all_visible
    linkageType: ''
    returnType: bool
    signature: "bool heap_page_is_all_visible(Relation rel, Buffer buf,\n\t\t\t\t\t\t
      GlobalVisState *vistest,\n\t\t\t\t\t\t bool *all_frozen,\n\t\t\t\t\t\t TransactionId
      *newest_live_xid,\n\t\t\t\t\t\t OffsetNumber *logging_offnum)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3613,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3630,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3634,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3637,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3648,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3651,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3651,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3654,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3660,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3673,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3673,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3675,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3676,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3680,1
    - Dst: HeapTupleSatisfiesVacuumHorizon
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3681,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3688,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3706,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3709,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3710,1
    - Dst: heap_tuple_needs_eventual_freeze
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3715,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3730,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3741,1
    - Dst: GlobalVisTestXidConsideredRunning
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3742,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 61
    argCount: 9
    argNames:
    - rel
    - buf
    - vistest
    - allow_update_vistest
    - deadoffsets
    - ndeadoffsets
    - all_frozen
    - newest_live_xid
    - logging_offnum
    argTypes:
    - Relation
    - Buffer
    - GlobalVisState*
    - bool
    - OffsetNumber*
    - int
    - bool*
    - TransactionId*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3753
      start: 3603
    functionDepth: 5
    functionLinenumber: 3603
    functionLinenumberEnd: 3753
    functionName: heap_page_would_be_all_visible
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 2
    functionsReached:
    - ItemPointerSet
    - HeapTupleHeaderXminCommitted
    - BufferGetPage
    - PageGetItem
    - elog
    - Assert
    - BufferGetBlockNumber
    - HeapTupleSatisfiesVacuumHorizon
    - PageGetMaxOffsetNumber
    - ItemIdIsUsed
    - heap_tuple_needs_eventual_freeze
    - ItemIdIsNormal
    - ItemIdIsDead
    - HeapTupleHeaderGetXmin
    - PageGetItemId
    - ItemIdIsRedirected
    - GlobalVisTestXidConsideredRunning
    - OffsetNumberNext
    - TransactionIdIsNormal
    - TransactionIdFollows
    - ItemIdGetLength
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: "bool heap_page_would_be_all_visible(Relation rel, Buffer buf,\n\t\t\t\t\t\t\t
      \  GlobalVisState *vistest,\n\t\t\t\t\t\t\t   bool allow_update_vistest,\n\t\t\t\t\t\t\t
      \  OffsetNumber *deadoffsets,\n\t\t\t\t\t\t\t   int ndeadoffsets,\n\t\t\t\t\t\t\t
      \  bool *all_frozen,\n\t\t\t\t\t\t\t   TransactionId *newest_live_xid,\n\t\t\t\t\t\t\t
      \  OffsetNumber *logging_offnum)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3765,1
    - Dst: vac_update_relstats
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3776,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3785
      start: 3758
    functionDepth: 1
    functionLinenumber: 3758
    functionLinenumberEnd: 3785
    functionName: update_relstats_all_indexes
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - Assert
    - vac_update_relstats
    linkageType: ''
    returnType: void
    signature: void update_relstats_all_indexes(LVRelState *vacrel)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3801,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3803,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3804,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3807,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3811,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3816,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3818,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3819,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3822,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3826,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3831,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3836,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3841,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3842,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3851
      start: 3793
    functionDepth: 1
    functionLinenumber: 3793
    functionLinenumberEnd: 3851
    functionName: vacuum_error_callback
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - errcontext
    - BlockNumberIsValid
    - OffsetNumberIsValid
    linkageType: ''
    returnType: void
    signature: void vacuum_error_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - vacrel
    - saved_vacrel
    - phase
    - blkno
    - offnum
    argTypes:
    - LVRelState*
    - LVSavedErrInfo*
    - int
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3871
      start: 3857
    functionDepth: 0
    functionLinenumber: 3857
    functionLinenumberEnd: 3871
    functionName: update_vacuum_error_info
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void update_vacuum_error_info(LVRelState *vacrel, LVSavedErrInfo *saved_vacrel,\n\t\t\t\t\t\t
      int phase, BlockNumber blkno, OffsetNumber offnum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - vacrel
    - saved_vacrel
    argTypes:
    - LVRelState*
    - LVSavedErrInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3883
      start: 3876
    functionDepth: 0
    functionLinenumber: 3876
    functionLinenumberEnd: 3883
    functionName: restore_vacuum_error_info
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void restore_vacuum_error_info(LVRelState *vacrel,\n\t\t\t\t\t\t  const
      LVSavedErrInfo *saved_vacrel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:47,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/hio.c:47,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:55,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:59,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/heap/hio.c:61,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/hio.c:63,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/hio.c:66,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:66,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/hio.c:75,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/hio.c:76,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - relation
    - buffer
    - tuple
    - token
    argTypes:
    - Relation
    - Buffer
    - HeapTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 34
    functionDepth: 4
    functionLinenumber: 34
    functionLinenumberEnd: 80
    functionName: RelationPutHeapTuple
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 3
    functionsReached:
    - elog
    - ItemPointerSet
    - Assert
    - BufferGetBlockNumber
    - BufferGetPage
    - PageAddItem
    - PageGetItemId
    - PageGetItem
    - HeapTupleHeaderIsSpeculative
    linkageType: ''
    returnType: void
    signature: "void RelationPutHeapTuple(Relation relation,\n\t\t\t\t\t Buffer buffer,\n\t\t\t\t\t
      HeapTuple tuple,\n\t\t\t\t\t bool token)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/heap/hio.c:93,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:99,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:105,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/heap/hio.c:108,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:112,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/heap/hio.c:117,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/heap/hio.c:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - relation
    - targetBlock
    - mode
    - bistate
    argTypes:
    - Relation
    - BlockNumber
    - ReadBufferMode
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 125
    functionName: ReadBufferBI
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - Assert
    - ReadBufferExtended
    - BufferGetBlockNumber
    - IncrBufferRefCount
    linkageType: ''
    returnType: Buffer
    signature: "Buffer ReadBufferBI(Relation relation, BlockNumber targetBlock,\n\t\t\t
      ReadBufferMode mode, BulkInsertState bistate)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/hio.c:150,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/hio.c:151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:166,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/hio.c:166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:167,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:172,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:172,1
    - Dst: visibilitymap_pin_ok
      Src: /src/postgres/src/backend/access/heap/hio.c:173,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:175,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:175,1
    - Dst: visibilitymap_pin_ok
      Src: /src/postgres/src/backend/access/heap/hio.c:176,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:182,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:184,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:188,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:190,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:193,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:195,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 31
    argCount: 7
    argNames:
    - relation
    - buffer1
    - buffer2
    - block1
    - block2
    - vmbuffer1
    - vmbuffer2
    argTypes:
    - Relation
    - Buffer
    - Buffer
    - BlockNumber
    - BlockNumber
    - Buffer*
    - Buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 209
    functionName: GetVisibilityMapPins
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 0
    functionsReached:
    - PageIsAllVisible
    - visibilitymap_pin_ok
    - visibilitymap_pin
    - Assert
    - LockBuffer
    - BufferGetPage
    - BufferIsValid
    linkageType: ''
    returnType: bool
    signature: "bool GetVisibilityMapPins(Relation relation, Buffer buffer1, Buffer
      buffer2,\n\t\t\t\t\t BlockNumber block1, BlockNumber block2,\n\t\t\t\t\t Buffer
      *vmbuffer1, Buffer *vmbuffer2)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: RELATION_IS_LOCAL
      Src: /src/postgres/src/backend/access/heap/hio.c:269,1
    - Dst: RelationExtensionLockWaiterCount
      Src: /src/postgres/src/backend/access/heap/hio.c:270,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/hio.c:299,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/hio.c:305,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:326,1
    - Dst: ExtendBufferedRelBy
      Src: /src/postgres/src/backend/access/heap/hio.c:339,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/heap/hio.c:339,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:347,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:347,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:355,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/hio.c:356,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/hio.c:357,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/hio.c:359,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/hio.c:361,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/hio.c:361,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/hio.c:362,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:386,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:386,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:387,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/hio.c:387,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:389,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/hio.c:393,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:396,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/heap/hio.c:404,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/heap/hio.c:425,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 5
    argNames:
    - relation
    - bistate
    - num_pages
    - use_fsm
    - did_unlock
    argTypes:
    - Relation
    - BulkInsertState
    - int
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 235
    functionDepth: 4
    functionLinenumber: 235
    functionLinenumberEnd: 432
    functionName: RelationAddBlocks
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - PageIsNew
    - BlockNumberIsValid
    - BMR_REL
    - BufferGetPage
    - PageInit
    - RelationGetRelationName
    - elog
    - ReleaseBuffer
    - Assert
    - BufferGetBlockNumber
    - BufferGetPageSize
    - IncrBufferRefCount
    - FreeSpaceMapVacuumRange
    - MarkBufferDirty
    - ExtendBufferedRelBy
    - RELATION_IS_LOCAL
    - RelationExtensionLockWaiterCount
    - RecordPageWithFreeSpace
    - Max
    - Min
    linkageType: ''
    returnType: Buffer
    signature: "Buffer RelationAddBlocks(Relation relation, BulkInsertState bistate,\n\t\t\t\t
      \ int num_pages, bool use_fsm, bool *did_unlock)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/hio.c:518,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/hio.c:531,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/hio.c:532,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/hio.c:533,1
    - Dst: RelationGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:537,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/hio.c:549,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:554,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:572,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/heap/hio.c:574,1
    - Dst: GetPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:582,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/hio.c:592,1
    - Dst: ReadBufferBI
      Src: /src/postgres/src/backend/access/heap/hio.c:617,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:618,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:618,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:619,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:625,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:625,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:626,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:628,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:634,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:634,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:635,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:636,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:641,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:642,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:642,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:643,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:644,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:645,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:650,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:651,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:651,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:652,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:653,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:654,1
    - Dst: GetVisibilityMapPins
      Src: /src/postgres/src/backend/access/heap/hio.c:678,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:686,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/hio.c:694,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/hio.c:696,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/hio.c:696,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/hio.c:697,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:700,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/heap/hio.c:704,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:715,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:718,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:719,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:727,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:736,1
    - Dst: RecordAndGetPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:758,1
    - Dst: RelationAddBlocks
      Src: /src/postgres/src/backend/access/heap/hio.c:766,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:769,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:770,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:779,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:779,1
    - Dst: visibilitymap_pin_ok
      Src: /src/postgres/src/backend/access/heap/hio.c:781,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:784,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:786,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:803,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:804,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:823,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/hio.c:825,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:825,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:828,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:829,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:830,1
    - Dst: GetVisibilityMapPins
      Src: /src/postgres/src/backend/access/heap/hio.c:845,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:858,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:864,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:865,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/hio.c:869,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/heap/hio.c:881,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 137
    argCount: 8
    argNames:
    - relation
    - len
    - otherBuffer
    - options
    - bistate
    - vmbuffer
    - vmbuffer_other
    - num_pages
    argTypes:
    - Relation
    - Size
    - Buffer
    - uint32
    - BulkInsertState
    - Buffer*
    - Buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 499
    functionDepth: 5
    functionLinenumber: 499
    functionLinenumberEnd: 884
    functionName: RelationGetBufferForTuple
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 3
    functionsReached:
    - RelationSetTargetBlock
    - errcode
    - LockBuffer
    - PageIsNew
    - BufferGetPage
    - PageInit
    - RelationGetTargetBlock
    - elog
    - PageIsAllVisible
    - visibilitymap_pin_ok
    - visibilitymap_pin
    - RelationGetTargetPageFreeSpace
    - Assert
    - GetPageWithFreeSpace
    - BufferGetBlockNumber
    - BufferGetPageSize
    - ReadBufferBI
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - errmsg
    - RelationGetNumberOfBlocks
    - UnlockReleaseBuffer
    - MAXALIGN
    - RecordAndGetPageWithFreeSpace
    - PageGetHeapFreeSpace
    - ereport
    - unlikely
    - RelationAddBlocks
    - MarkBufferDirty
    - RecordPageWithFreeSpace
    - Max
    - GetVisibilityMapPins
    - ConditionalLockBuffer
    linkageType: ''
    returnType: Buffer
    signature: "Buffer RelationGetBufferForTuple(Relation relation, Size len,\n\t\t\t\t\t\t
      \ Buffer otherBuffer, uint32 options,\n\t\t\t\t\t\t  BulkInsertState bistate,\n\t\t\t\t\t\t
      \ Buffer *vmbuffer, Buffer *vmbuffer_other,\n\t\t\t\t\t\t  int num_pages)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:274,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:284,1
    - Dst: PageGetPruneXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:293,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:294,1
    - Dst: GlobalVisTestFor
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:301,1
    - Dst: GlobalVisTestIsRemovableXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:303,1
    - Dst: RelationGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:318,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:320,1
    - Dst: PageIsFull
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:322,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:322,1
    - Dst: ConditionalLockBufferForCleanup
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:325,1
    - Dst: PageIsFull
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:333,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:333,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:339,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:339,1
    - Dst: heap_page_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:359,1
    - Dst: pgstat_update_heap_dead_tuples
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:377,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:382,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 4
    argNames:
    - relation
    - buffer
    - vmbuffer
    - rel_read_only
    argTypes:
    - Relation
    - Buffer
    - Buffer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 270
    functionDepth: 4
    functionLinenumber: 270
    functionLinenumberEnd: 390
    functionName: heap_page_prune_opt
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - PageGetHeapFreeSpace
    - ConditionalLockBufferForCleanup
    - visibilitymap_pin
    - RelationGetTargetPageFreeSpace
    - BufferGetBlockNumber
    - PageGetPruneXid
    - LockBuffer
    - heap_page_prune_and_freeze
    - GlobalVisTestFor
    - BufferGetPage
    - PageIsFull
    - pgstat_update_heap_dead_tuples
    - Max
    - RecoveryInProgress
    - GlobalVisTestIsRemovableXid
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void heap_page_prune_opt(Relation relation, Buffer buffer, Buffer
      *vmbuffer,\n\t\t\t\t\tbool rel_read_only)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:412,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:417,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:419,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:421,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:421,1
    - Dst: visibilitymap_get_status
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:459,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 5
    argNames:
    - params
    - new_relfrozen_xid
    - new_relmin_mxid
    - presult
    - prstate
    argTypes:
    - PruneFreezeParams*
    - TransactionId*
    - MultiXactId*
    - PruneFreezeResult*
    - PruneState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 399
    functionDepth: 5
    functionLinenumber: 399
    functionLinenumberEnd: 519
    functionName: prune_freeze_setup
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferGetBlockNumber
    - BufferGetPage
    - BufferIsValid
    - visibilitymap_get_status
    linkageType: ''
    returnType: void
    signature: "void prune_freeze_setup(PruneFreezeParams *params,\n\t\t\t\t   TransactionId
      *new_relfrozen_xid,\n\t\t\t\t   MultiXactId *new_relmin_mxid,\n\t\t\t\t   PruneFreezeResult
      *presult,\n\t\t\t\t   PruneState *prstate)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:535,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:539,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:563,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:565,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:578,1
    - Dst: heap_prune_record_unchanged_lp_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:580,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:584,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:590,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:591,1
    - Dst: heap_prune_record_unchanged_lp_dead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:593,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:597,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:604,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:604,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:609,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:611,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:612,1
    - Dst: heap_prune_satisfies_vacuum
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:614,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:616,1
    - Dst: heap_prune_chain
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:645,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:677,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:678,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:680,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:680,1
    - Dst: HeapTupleHeaderAdvanceConflictHorizon
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:682,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:684,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:696,1
    - Dst: heap_prune_record_unchanged_lp_normal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:701,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:712,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 57
    argCount: 2
    argNames:
    - prstate
    - off_loc
    argTypes:
    - PruneState*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 530
    functionDepth: 3
    functionLinenumber: 530
    functionLinenumberEnd: 718
    functionName: prune_freeze_plan
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - HeapTupleHeaderAdvanceConflictHorizon
    - heap_prune_satisfies_vacuum
    - PageGetItem
    - HeapTupleHeaderIsHotUpdated
    - elog
    - heap_prune_chain
    - Assert
    - PageGetMaxOffsetNumber
    - HeapTupleHeaderIsHeapOnly
    - ItemIdIsUsed
    - ItemIdIsNormal
    - ItemIdIsDead
    - PageGetItemId
    - heap_prune_record_unchanged_lp_unused
    - unlikely
    - ItemIdIsRedirected
    - heap_prune_record_unchanged_lp_dead
    - heap_prune_record_unchanged_lp_normal
    - OffsetNumberNext
    - OffsetNumberPrev
    - likely
    - heap_prune_record_unused
    - ItemIdGetLength
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void prune_freeze_plan(PruneState *prstate, OffsetNumber *off_loc)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:747,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:775,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:781,1
    - Dst: XLogCheckBufferNeedsBackup
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:787,1
    - Dst: XLogHintBitIsNeeded
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:792,1
    - Dst: XLogCheckBufferNeedsBackup
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:793,1
    - Dst: heap_pre_freeze_checks
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:806,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:807,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:816,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 4
    argNames:
    - did_tuple_hint_fpi
    - do_prune
    - do_hint_prune
    - prstate
    argTypes:
    - bool
    - bool
    - bool
    - PruneState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 733
    functionDepth: 5
    functionLinenumber: 733
    functionLinenumberEnd: 832
    functionName: heap_page_will_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - XLogCheckBufferNeedsBackup
    - TransactionIdPrecedes
    - heap_pre_freeze_checks
    - Assert
    - RelationNeedsWAL
    - XLogHintBitIsNeeded
    linkageType: ''
    returnType: bool
    signature: "bool heap_page_will_freeze(bool did_tuple_hint_fpi,\n\t\t\t\t\t  bool
      do_prune,\n\t\t\t\t\t  bool do_hint_prune,\n\t\t\t\t\t  PruneState *prstate)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:855,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:859,1
    - Dst: BufferIsLockedByMeInMode
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:859,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:864,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:865,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:866,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:867,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:888,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:889,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:890,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:891,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:907,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:907,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:908,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:909,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:910,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:911,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:912,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:923,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:923,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:924,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:925,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:930,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - prstate
    - offnum
    - corruption_type
    argTypes:
    - PruneState*
    - OffsetNumber
    - VMCorruptionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 851
    functionDepth: 5
    functionLinenumber: 851
    functionLinenumberEnd: 935
    functionName: heap_page_fix_vm_corruption
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - PageIsAllVisible
    - MarkBufferDirtyHint
    - errcode
    - Assert
    - errcontext
    - visibilitymap_clear
    - ereport
    - PageClearAllVisible
    - BufferIsLockedByMeInMode
    - errmsg
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: "void heap_page_fix_vm_corruption(PruneState *prstate, OffsetNumber
      offnum,\n\t\t\t\t\t\t\tVMCorruptionType corruption_type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsDirty
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:966,1
    - Dst: XLogCheckBufferNeedsBackup
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:966,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 4
    argNames:
    - prstate
    - reason
    - do_prune
    - do_freeze
    argTypes:
    - PruneState*
    - PruneReason
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 949
    functionDepth: 1
    functionLinenumber: 949
    functionLinenumberEnd: 984
    functionName: heap_page_will_set_vm
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - XLogCheckBufferNeedsBackup
    - BufferIsDirty
    linkageType: ''
    returnType: bool
    signature: "bool heap_page_will_set_vm(PruneState *prstate, PruneReason reason,\n\t\t\t\t\t
      \ bool do_prune, bool do_freeze)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1009,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1012,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1017,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1020,1
    - Dst: PageGetPruneXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1020,1
    - Dst: PageClearPrunable
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1022,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1023,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1026,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1035,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1037,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1039,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1044,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - prstate
    - presult
    argTypes:
    - PruneState*
    - PruneFreezeResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1049
    functionName: prune_freeze_fast_path
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - ItemIdIsUsed
    - OffsetNumberNext
    - MarkBufferDirtyHint
    - ItemIdIsNormal
    - Assert
    - PageGetPruneXid
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageIsEmpty
    - memset
    - PageClearPrunable
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void prune_freeze_fast_path(PruneState *prstate, PruneFreezeResult
      *presult)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: prune_freeze_setup
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1106,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1116,1
    - Dst: heap_page_fix_vm_corruption
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1117,1
    - Dst: prune_freeze_fast_path
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1132,1
    - Dst: prune_freeze_plan
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1142,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1151,1
    - Dst: GlobalVisTestXidConsideredRunning
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1152,1
    - Dst: PageGetPruneXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1173,1
    - Dst: PageIsFull
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1174,1
    - Dst: heap_page_will_freeze
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1202,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1203,1
    - Dst: heap_page_will_set_vm
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1211,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1220,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1222,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1227,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1230,1
    - Dst: PageClearFull
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1245,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1256,1
    - Dst: heap_page_prune_execute
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1264,1
    - Dst: heap_freeze_prepared_tuples
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1271,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1288,1
    - Dst: PageClearPrunable
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1289,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1290,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1294,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1299,1
    - Dst: log_heap_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1301,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1314,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1317,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1335,1
    - Dst: heap_page_is_all_visible
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1340,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1350,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 91
    argCount: 5
    argNames:
    - params
    - presult
    - off_loc
    - new_relfrozen_xid
    - new_relmin_mxid
    argTypes:
    - PruneFreezeParams*
    - PruneFreezeResult*
    - OffsetNumber*
    - TransactionId*
    - MultiXactId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1089
    functionDepth: 6
    functionLinenumber: 1089
    functionLinenumberEnd: 1394
    functionName: heap_page_prune_and_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - LockBuffer
    - heap_page_is_all_visible
    - PageIsFull
    - PageIsAllVisible
    - visibilitymap_set
    - Assert
    - heap_page_will_freeze
    - prune_freeze_plan
    - prune_freeze_fast_path
    - MarkBufferDirtyHint
    - prune_freeze_setup
    - PageGetPruneXid
    - PageSetAllVisible
    - MarkBufferDirty
    - heap_page_prune_execute
    - GlobalVisTestXidConsideredRunning
    - heap_page_will_set_vm
    - heap_freeze_prepared_tuples
    - PageClearFull
    - heap_page_fix_vm_corruption
    - log_heap_prune_and_freeze
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - TransactionIdIsNormal
    - TransactionIdFollows
    - PageClearPrunable
    - END_CRIT_SECTION
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void heap_page_prune_and_freeze(PruneFreezeParams *params,\n\t\t\t\t\t\t
      \  PruneFreezeResult *presult,\n\t\t\t\t\t\t   OffsetNumber *off_loc,\n\t\t\t\t\t\t
      \  TransactionId *new_relfrozen_xid,\n\t\t\t\t\t\t   MultiXactId *new_relmin_mxid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleSatisfiesVacuumHorizon
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1406,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1418,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1419,1
    - Dst: GlobalVisTestIsRemovableXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1430,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - prstate
    - tup
    argTypes:
    - PruneState*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1400
    functionDepth: 5
    functionLinenumber: 1400
    functionLinenumberEnd: 1434
    functionName: heap_prune_satisfies_vacuum
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - GlobalVisTestIsRemovableXid
    - HeapTupleSatisfiesVacuumHorizon
    - TransactionIdIsValid
    - NormalTransactionIdPrecedes
    linkageType: ''
    returnType: HTSV_Result
    signature: HTSV_Result heap_prune_satisfies_vacuum(PruneState *prstate, HeapTuple
      tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1443
    functionDepth: 1
    functionLinenumber: 1443
    functionLinenumberEnd: 1449
    functionName: htsv_get_valid_status
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: HTSV_Result
    signature: HTSV_Result htsv_get_valid_status(int status)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1499,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1532,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1532,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1533,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1533,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1540,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1549,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1549,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1551,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1556,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1557,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1557,1
    - Dst: htsv_get_valid_status
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1565,1
    - Dst: HeapTupleHeaderAdvanceConflictHorizon
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1571,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1602,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1610,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1614,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1619,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1619,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1620,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1621,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1624,1
    - Dst: heap_prune_record_dead_or_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1634,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1648,1
    - Dst: heap_prune_record_unchanged_lp_redirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1650,1
    - Dst: heap_prune_record_unchanged_lp_normal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1654,1
    - Dst: heap_prune_record_dead_or_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1662,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1662,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1664,1
    - Dst: heap_prune_record_redirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1673,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1674,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1676,1
    - Dst: heap_prune_record_unchanged_lp_normal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1680,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 75
    argCount: 3
    argNames:
    - maxoff
    - rootoffnum
    - prstate
    argTypes:
    - OffsetNumber
    - OffsetNumber
    - PruneState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1682
      start: 1482
    functionDepth: 3
    functionLinenumber: 1482
    functionLinenumberEnd: 1682
    functionName: heap_prune_chain
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderAdvanceConflictHorizon
    - PageGetItem
    - heap_prune_record_redirect
    - ItemPointerGetOffsetNumber
    - HeapTupleHeaderIsHotUpdated
    - elog
    - Assert
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderGetUpdateXid
    - ItemIdIsUsed
    - heap_prune_record_dead_or_unused
    - ItemIdIsNormal
    - ItemIdIsDead
    - HeapTupleHeaderGetXmin
    - PageGetItemId
    - heap_prune_record_unchanged_lp_redirect
    - ItemIdIsRedirected
    - HeapTupleHeaderIndicatesMovedPartitions
    - heap_prune_record_unchanged_lp_normal
    - ItemIdGetRedirect
    - TransactionIdEquals
    - htsv_get_valid_status
    - heap_prune_record_unused
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void heap_prune_chain(OffsetNumber maxoff, OffsetNumber rootoffnum,\n\t\t\t\t
      PruneState *prstate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1693,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1693,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1694,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1695,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1702,1
    - Dst: heap_page_fix_vm_corruption
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1703,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - prstate
    - xid
    - offnum
    argTypes:
    - PruneState*
    - TransactionId
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1685
    functionDepth: 6
    functionLinenumber: 1685
    functionLinenumberEnd: 1705
    functionName: heap_prune_record_prunable
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - PageIsAllVisible
    - Assert
    - heap_page_fix_vm_corruption
    - TransactionIdIsNormal
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void heap_prune_record_prunable(PruneState *prstate, TransactionId
      xid,\n\t\t\t\t\t\t   OffsetNumber offnum)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - prstate
    - offnum
    - rdoffnum
    - was_normal
    argTypes:
    - PruneState*
    - OffsetNumber
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1736
      start: 1708
    functionDepth: 1
    functionLinenumber: 1708
    functionLinenumberEnd: 1736
    functionName: heap_prune_record_redirect
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void heap_prune_record_redirect(PruneState *prstate,\n\t\t\t\t\t\t
      \  OffsetNumber offnum, OffsetNumber rdoffnum,\n\t\t\t\t\t\t   bool was_normal)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1746,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - prstate
    - offnum
    - was_normal
    argTypes:
    - PruneState*
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1739
    functionDepth: 1
    functionLinenumber: 1739
    functionLinenumberEnd: 1766
    functionName: heap_prune_record_dead
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum,\n\t\t\t\t\t
      \  bool was_normal)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1784,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1785,1
    - Dst: heap_prune_record_dead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1787,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1795,1
    - Dst: heap_page_fix_vm_corruption
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1796,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - prstate
    - offnum
    - was_normal
    argTypes:
    - PruneState*
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1774
    functionDepth: 6
    functionLinenumber: 1774
    functionLinenumberEnd: 1797
    functionName: heap_prune_record_dead_or_unused
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - PageIsAllVisible
    - heap_page_fix_vm_corruption
    - heap_prune_record_dead
    - unlikely
    - heap_prune_record_unused
    linkageType: ''
    returnType: void
    signature: "void heap_prune_record_dead_or_unused(PruneState *prstate, OffsetNumber
      offnum,\n\t\t\t\t\t\t\t\t bool was_normal)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - prstate
    - offnum
    - was_normal
    argTypes:
    - PruneState*
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1817
      start: 1800
    functionDepth: 1
    functionLinenumber: 1800
    functionLinenumberEnd: 1817
    functionName: heap_prune_record_unused
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 3
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum,
      bool was_normal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - prstate
    - offnum
    argTypes:
    - PruneState*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1822
    functionDepth: 1
    functionLinenumber: 1822
    functionLinenumberEnd: 1827
    functionName: heap_prune_record_unchanged_lp_unused
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void heap_prune_record_unchanged_lp_unused(PruneState *prstate, OffsetNumber
      offnum)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1840,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1865,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1865,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1885,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1899,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1902,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1903,1
    - Dst: heap_prune_record_prunable
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1917,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1918,1
    - Dst: heap_prune_record_prunable
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1939,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1940,1
    - Dst: heap_prune_record_prunable
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1959,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1960,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1970,1
    - Dst: heap_prepare_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1980,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 2
    argNames:
    - prstate
    - offnum
    argTypes:
    - PruneState*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1833
    functionDepth: 7
    functionLinenumber: 1833
    functionLinenumberEnd: 1998
    functionName: heap_prune_record_unchanged_lp_normal
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - elog
    - Assert
    - heap_prune_record_prunable
    - HeapTupleHeaderGetXmin
    - HeapTupleHeaderXminCommitted
    - PageGetItemId
    - PageGetItem
    - TransactionIdIsNormal
    - TransactionIdFollows
    - HeapTupleHeaderGetUpdateXid
    - heap_prepare_freeze_tuple
    linkageType: ''
    returnType: void
    signature: void heap_prune_record_unchanged_lp_normal(PruneState *prstate, OffsetNumber
      offnum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2007,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2032,1
    - Dst: heap_page_fix_vm_corruption
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2033,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - prstate
    - offnum
    argTypes:
    - PruneState*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2004
    functionDepth: 6
    functionLinenumber: 2004
    functionLinenumberEnd: 2034
    functionName: heap_prune_record_unchanged_lp_dead
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - Assert
    - PageIsAllVisible
    - heap_page_fix_vm_corruption
    linkageType: ''
    returnType: void
    signature: void heap_prune_record_unchanged_lp_dead(PruneState *prstate, OffsetNumber
      offnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - prstate
    - offnum
    argTypes:
    - PruneState*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2039
    functionDepth: 1
    functionLinenumber: 2039
    functionLinenumberEnd: 2052
    functionName: heap_prune_record_unchanged_lp_redirect
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void heap_prune_record_unchanged_lp_redirect(PruneState *prstate, OffsetNumber
      offnum)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2070,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2075,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2078,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2086,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2098,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2100,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2100,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2100,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2103,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2108,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2108,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2129,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2129,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2129,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2130,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2131,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2131,1
    - Dst: ItemIdSetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2134,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2142,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2153,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2155,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2155,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2157,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2162,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2162,1
    - Dst: ItemIdSetDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2166,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2181,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2181,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2195,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2195,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2195,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2197,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2200,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2200,1
    - Dst: ItemIdSetUnused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2205,1
    - Dst: PageTruncateLinePointerArray
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2209,1
    - Dst: PageRepairFragmentation
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2216,1
    - Dst: page_verify_redirects
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2222,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 8
    argNames:
    - buffer
    - lp_truncate_only
    - redirected
    - nredirected
    - nowdead
    - ndead
    - nowunused
    - nunused
    argTypes:
    - Buffer
    - bool
    - OffsetNumber*
    - int
    - OffsetNumber*
    - int
    - OffsetNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2224
      start: 2064
    functionDepth: 4
    functionLinenumber: 2064
    functionLinenumberEnd: 2224
    functionName: heap_page_prune_execute
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - ItemIdIsUsed
    - ItemIdSetUnused
    - page_verify_redirects
    - ItemIdIsNormal
    - ItemIdSetRedirect
    - Assert
    - ItemIdGetRedirect
    - ItemIdIsDead
    - PageGetItemId
    - BufferGetPage
    - PageGetItem
    - ItemIdHasStorage
    - ItemIdIsRedirected
    - PageTruncateLinePointerArray
    - PageRepairFragmentation
    - ItemIdSetDead
    - HeapTupleHeaderIsHeapOnly
    linkageType: ''
    returnType: void
    signature: "void heap_page_prune_execute(Buffer buffer, bool lp_truncate_only,\n\t\t\t\t\t\tOffsetNumber
      *redirected, int nredirected,\n\t\t\t\t\t\tOffsetNumber *nowdead, int ndead,\n\t\t\t\t\t\tOffsetNumber
      *nowunused, int nunused)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2247,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2250,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2252,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2257,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2260,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2263,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2263,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2264,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2265,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2265,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2267,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2267,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2270
      start: 2240
    functionDepth: 2
    functionLinenumber: 2240
    functionLinenumberEnd: 2270
    functionName: page_verify_redirects
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - ItemIdIsUsed
    - OffsetNumberNext
    - ItemIdIsNormal
    - Assert
    - ItemIdGetRedirect
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - ItemIdIsRedirected
    - ItemIdHasStorage
    - PageGetItem
    - HeapTupleHeaderIsHeapOnly
    linkageType: ''
    returnType: void
    signature: void page_verify_redirects(Page page)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2294,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2297,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2298,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2300,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2306,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2306,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2309,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2311,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2318,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2328,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2332,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2338,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2338,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2340,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2365,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2368,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2371,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2373,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2374,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2374,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2381,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2385,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2385,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2387,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2388,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 39
    argCount: 2
    argNames:
    - page
    - root_offsets
    argTypes:
    - Page
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2288
    functionDepth: 2
    functionLinenumber: 2288
    functionLinenumberEnd: 2391
    functionName: heap_get_root_tuples
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - HeapTupleHeaderIsHotUpdated
    - Assert
    - PageGetMaxOffsetNumber
    - HeapTupleHeaderGetUpdateXid
    - HeapTupleHeaderIsHeapOnly
    - ItemIdIsUsed
    - ItemIdIsNormal
    - ItemIdIsDead
    - HeapTupleHeaderGetXmin
    - PageGetItemId
    - MemSet
    - ItemIdIsRedirected
    - HeapTupleHeaderIndicatesMovedPartitions
    - OffsetNumberNext
    - ItemIdGetRedirect
    - TransactionIdEquals
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void heap_get_root_tuples(Page page, OffsetNumber *root_offsets)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 2
    argNames:
    - plan
    - frz
    argTypes:
    - xlhp_freeze_plan*
    - HeapTupleFreeze*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2410
      start: 2399
    functionDepth: 0
    functionLinenumber: 2399
    functionLinenumberEnd: 2410
    functionName: heap_log_freeze_eq
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool heap_log_freeze_eq(xlhp_freeze_plan *plan, HeapTupleFreeze *frz)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2453,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2455
      start: 2415
    functionDepth: 1
    functionLinenumber: 2415
    functionLinenumberEnd: 2455
    functionName: heap_log_freeze_cmp
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int heap_log_freeze_cmp(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - plan
    - frz
    argTypes:
    - xlhp_freeze_plan*
    - HeapTupleFreeze*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2469
      start: 2461
    functionDepth: 0
    functionLinenumber: 2461
    functionLinenumberEnd: 2469
    functionName: heap_log_freeze_new_plan
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void heap_log_freeze_new_plan(xlhp_freeze_plan *plan, HeapTupleFreeze
      *frz)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2489,1
    - Dst: heap_log_freeze_new_plan
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2498,1
    - Dst: heap_log_freeze_eq
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2501,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2504,1
    - Dst: heap_log_freeze_new_plan
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2527,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - tuples
    - ntuples
    - plans_out
    - offsets_out
    argTypes:
    - HeapTupleFreeze*
    - int
    - xlhp_freeze_plan*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2530
      start: 2481
    functionDepth: 1
    functionLinenumber: 2481
    functionLinenumberEnd: 2530
    functionName: heap_log_freeze_plan
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - qsort
    - heap_log_freeze_new_plan
    - heap_log_freeze_eq
    - Assert
    linkageType: ''
    returnType: int
    signature: "int heap_log_freeze_plan(HeapTupleFreeze *tuples, int ntuples,\n\t\t\t\t\t
      xlhp_freeze_plan *plans_out,\n\t\t\t\t\t OffsetNumber *offsets_out)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2576,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2589,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2606,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2606,1
    - Dst: XLogHintBitIsNeeded
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2608,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2619,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2620,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2623,1
    - Dst: heap_log_freeze_plan
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2635,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2638,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2640,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2648,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2650,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2658,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2660,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2668,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2670,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2674,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2687,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2689,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2695,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2698,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2699,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2700,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2714,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2717,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2721,1
    - Dst: BufferIsDirty
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2721,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2722,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2732,1
    - Dst: BufferIsDirty
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2732,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2733,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 80
    argCount: 15
    argNames:
    - relation
    - buffer
    - vmbuffer
    - vmflags
    - conflict_xid
    - cleanup_lock
    - reason
    - frozen
    - nfrozen
    - redirected
    - nredirected
    - dead
    - ndead
    - unused
    - nunused
    argTypes:
    - Relation
    - Buffer
    - Buffer
    - uint8
    - TransactionId
    - bool
    - PruneReason
    - HeapTupleFreeze*
    - int
    - OffsetNumber*
    - int
    - OffsetNumber*
    - int
    - OffsetNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2735
      start: 2560
    functionDepth: 4
    functionLinenumber: 2560
    functionLinenumberEnd: 2735
    functionName: log_heap_prune_and_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 3
    functionsReached:
    - XLogRegisterBufData
    - elog
    - XLogRecPtrIsValid
    - XLogInsert
    - XLogBeginInsert
    - Assert
    - PageGetLSN
    - BufferGetPage
    - RelationIsAccessibleInLogicalDecoding
    - XLogRegisterData
    - XLogHintBitIsNeeded
    - BufferIsDirty
    - heap_log_freeze_plan
    - XLogRegisterBuffer
    - TransactionIdIsValid
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: "void log_heap_prune_and_freeze(Relation relation, Buffer buffer,\n\t\t\t\t\t\t
      \ Buffer vmbuffer, uint8 vmflags,\n\t\t\t\t\t\t  TransactionId conflict_xid,\n\t\t\t\t\t\t
      \ bool cleanup_lock,\n\t\t\t\t\t\t  PruneReason reason,\n\t\t\t\t\t\t  HeapTupleFreeze
      *frozen, int nfrozen,\n\t\t\t\t\t\t  OffsetNumber *redirected, int nredirected,\n\t\t\t\t\t\t
      \ OffsetNumber *dead, int ndead,\n\t\t\t\t\t\t  OffsetNumber *unused, int nunused)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - rel
    - flags
    argTypes:
    - Relation
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 39
    functionName: heapam_index_fetch_begin
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_indexscan.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: IndexFetchTableData
    signature: 'IndexFetchTableData *

      heapam_index_fetch_begin(Relation rel, uint32 flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexFetchTableData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: heapam_index_fetch_reset
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_indexscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void heapam_index_fetch_reset(IndexFetchTableData *scan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:59,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:60,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:63,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:64,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexFetchTableData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 67
    functionName: heapam_index_fetch_end
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_indexscan.c
    functionUses: 0
    functionsReached:
    - pfree
    - ReleaseBuffer
    - BufferIsValid
    linkageType: ''
    returnType: void
    signature: void heapam_index_fetch_end(IndexFetchTableData *scan)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:94,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:107,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:108,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:113,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:114,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:114,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:122,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:125,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:128,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:131,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:134,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:148,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:149,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:150,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:151,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:156,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:163,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:164,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:165,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:178,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:179,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:184,1
    - Dst: PredicateLockTID
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:185,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:186,1
    - Dst: GlobalVisTestFor
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:205,1
    - Dst: HeapTupleIsSurelyDead
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:207,1
    - Dst: HeapTupleIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:215,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:217,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:217,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:219,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:221,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 56
    argCount: 7
    argNames:
    - tid
    - relation
    - buffer
    - snapshot
    - heapTuple
    - all_dead
    - first_call
    argTypes:
    - ItemPointer
    - Relation
    - Buffer
    - Snapshot
    - HeapTuple
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 89
    functionDepth: 7
    functionLinenumber: 89
    functionLinenumberEnd: 229
    functionName: heap_hot_search_buffer
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_indexscan.c
    functionUses: 2
    functionsReached:
    - ItemPointerSet
    - HeapTupleIsHeapOnly
    - HeapCheckForSerializableConflictOut
    - HeapTupleIsSurelyDead
    - BufferGetPage
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - ItemPointerSetOffsetNumber
    - Assert
    - BufferGetBlockNumber
    - GlobalVisTestFor
    - HeapTupleIsHotUpdated
    - PageGetMaxOffsetNumber
    - HeapTupleSatisfiesVisibility
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderGetUpdateXid
    - ItemIdIsNormal
    - HeapTupleHeaderGetXmin
    - PageGetItemId
    - ItemIdIsRedirected
    - PredicateLockTID
    - ItemIdGetRedirect
    - TransactionIdEquals
    - TransactionIdIsValid
    - ItemIdGetLength
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: "bool heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer
      buffer,\n\t\t\t\t\t   Snapshot snapshot, HeapTuple heapTuple,\n\t\t\t\t\t   bool
      *all_dead, bool first_call)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:242,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:242,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:247,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:250,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:252,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:253,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:255,1
    - Dst: heap_page_prune_opt
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:265,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:265,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:266,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:266,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:269,1
    - Dst: heap_hot_search_buffer
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:270,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:278,1
    - Dst: IsMVCCLikeSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:286,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:288,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_indexscan.c:289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 6
    argNames:
    - scan
    - tid
    - snapshot
    - slot
    - heap_continue
    - all_dead
    argTypes:
    - struct IndexFetchTableData*
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 231
    functionDepth: 8
    functionLinenumber: 231
    functionLinenumberEnd: 298
    functionName: heapam_index_fetch_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_indexscan.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - TTS_IS_BUFFERTUPLE
    - Assert
    - IsMVCCLikeSnapshot
    - BufferGetBlockNumber
    - LockBuffer
    - heap_hot_search_buffer
    - ReadBuffer
    - BufferIsValid
    - RelationGetRelid
    - ItemPointerGetBlockNumber
    - ExecStoreBufferHeapTuple
    - heap_page_prune_opt
    linkageType: ''
    returnType: bool
    signature: "bool heapam_index_fetch_tuple(struct IndexFetchTableData *scan,\n\t\t\t\t\t\t
      ItemPointer tid,\n\t\t\t\t\t\t Snapshot snapshot,\n\t\t\t\t\t\t TupleTableSlot
      *slot,\n\t\t\t\t\t\t bool *heap_continue, bool *all_dead)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/backend/access/common/tupdesc.c:51,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/tupdesc.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - tupdesc
    argTypes:
    - ResourceOwner
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: ResourceOwnerRememberTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerRemember
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerRememberTupleDesc(ResourceOwner owner, TupleDesc
      tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerForget
      Src: /src/postgres/src/backend/access/common/tupdesc.c:57,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/tupdesc.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - tupdesc
    argTypes:
    - ResourceOwner
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: ResourceOwnerForgetTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerForget
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerForgetTupleDesc(ResourceOwner owner, TupleDesc tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/tupdesc.c:68,1
    - Dst: IsCatalogRelationOid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:86,1
    - Dst: typalign_to_alignby
      Src: /src/postgres/src/backend/access/common/tupdesc.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - Form_pg_attribute
    - CompactAttribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 91
    functionName: populate_compact_attribute_internal
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - IsCatalogRelationOid
    - typalign_to_alignby
    - memset
    linkageType: ''
    returnType: void
    signature: "void populate_compact_attribute_internal(Form_pg_attribute src,\n\t\t\t\t\t\t\t\t\tCompactAttribute
      *dst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:102,1
    - Dst: populate_compact_attribute_internal
      Src: /src/postgres/src/backend/access/common/tupdesc.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tupdesc
    - attnum
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 99
    functionDepth: 3
    functionLinenumber: 99
    functionLinenumberEnd: 112
    functionName: populate_compact_attribute
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - TupleDescAttr
    - populate_compact_attribute_internal
    linkageType: ''
    returnType: void
    signature: void populate_compact_attribute(TupleDesc tupdesc, int attnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:129,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:137,1
    - Dst: populate_compact_attribute_internal
      Src: /src/postgres/src/backend/access/common/tupdesc.c:143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:153,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tupdesc
    - attnum
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 155
    functionName: verify_compact_attribute
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 1
    functionsReached:
    - memcmp
    - populate_compact_attribute_internal
    - memcpy
    - Assert
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void verify_compact_attribute(TupleDesc tupdesc, int attnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:172,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - natts
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 205
    functionName: CreateTemplateTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 4
    functionsReached:
    - Assert
    - palloc
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc CreateTemplateTupleDesc(int natts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:221,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:225,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:225,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:226,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/common/tupdesc.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - natts
    - attrs
    argTypes:
    - int
    - Form_pg_attribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 215
    functionDepth: 4
    functionLinenumber: 215
    functionLinenumberEnd: 232
    functionName: CreateTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - CreateTemplateTupleDesc
    - memcpy
    - TupleDescFinalize
    - populate_compact_attribute
    - TupleDescAttr
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc CreateTupleDesc(int natts, Form_pg_attribute *attrs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:247,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:251,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:251,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:252,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:261,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:269,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/common/tupdesc.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 241
    functionDepth: 4
    functionLinenumber: 241
    functionLinenumberEnd: 279
    functionName: CreateTupleDescCopy
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 4
    functionsReached:
    - CreateTemplateTupleDesc
    - memcpy
    - TupleDescFinalize
    - populate_compact_attribute
    - TupleDescAttr
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc CreateTupleDescCopy(TupleDesc tupdesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:294,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:296,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:300,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:300,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:301,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:310,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:318,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/common/tupdesc.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - tupdesc
    - natts
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 288
    functionDepth: 4
    functionLinenumber: 288
    functionLinenumberEnd: 328
    functionName: CreateTupleDescTruncatedCopy
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - CreateTemplateTupleDesc
    - memcpy
    - Assert
    - TupleDescFinalize
    - populate_compact_attribute
    - TupleDescAttr
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc CreateTupleDescTruncatedCopy(TupleDesc tupdesc, int natts)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:342,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:346,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:346,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:347,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:352,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:354,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:355,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/common/tupdesc.c:361,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:369,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:370,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/tupdesc.c:372,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:377,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:378,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:383,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:385,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:394,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:395,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/tupdesc.c:398,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/tupdesc.c:399,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/common/tupdesc.c:413,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 335
    functionDepth: 4
    functionLinenumber: 335
    functionLinenumberEnd: 416
    functionName: CreateTupleDescCopyConstr
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - CreateTemplateTupleDesc
    - memcpy
    - TupleDescFinalize
    - pstrdup
    - datumCopy
    - populate_compact_attribute
    - TupleDescCompactAttr
    - TupleDescAttr
    - palloc
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:432,1
    - Dst: TupleDescSize
      Src: /src/postgres/src/backend/access/common/tupdesc.c:432,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:440,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:448,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/common/tupdesc.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 426
    functionDepth: 4
    functionLinenumber: 426
    functionLinenumberEnd: 459
    functionName: TupleDescCopy
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 4
    functionsReached:
    - memcpy
    - TupleDescFinalize
    - TupleDescSize
    - populate_compact_attribute
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void TupleDescCopy(TupleDesc dst, TupleDesc src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:475,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:476,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:481,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:484,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:485,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:486,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:488,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - dst
    - dstAttno
    - src
    - srcAttno
    argTypes:
    - TupleDesc
    - AttrNumber
    - TupleDesc
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 471
    functionDepth: 4
    functionLinenumber: 471
    functionLinenumberEnd: 500
    functionName: TupleDescCopyEntry
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - TupleDescAttr
    - memcpy
    - populate_compact_attribute
    linkageType: ''
    returnType: void
    signature: "void TupleDescCopyEntry(TupleDesc dst, AttrNumber dstAttno,\n\t\t\t\t
      \  TupleDesc src, AttrNumber srcAttno)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:519,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:520,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/tupdesc.c:543,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 15
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 563
    functionName: TupleDescFinalize
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 9
    functionsReached:
    - att_nominal_alignby
    - TupleDescCompactAttr
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void TupleDescFinalize(TupleDesc tupdesc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:577,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:586,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:587,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:596,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:597,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/tupdesc.c:597,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:599,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:607,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:608,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:610,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:612,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:615,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 616
    functionName: FreeTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 2
    functionsReached:
    - Assert
    - TupleDescAttr
    - pfree
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void FreeTupleDesc(TupleDesc tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:628,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/backend/access/common/tupdesc.c:630,1
    - Dst: ResourceOwnerRememberTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 625
    functionDepth: 2
    functionLinenumber: 625
    functionLinenumberEnd: 633
    functionName: IncrTupleDescRefCount
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - ResourceOwnerRememberTupleDesc
    - ResourceOwnerEnlarge
    linkageType: ''
    returnType: void
    signature: void IncrTupleDescRefCount(TupleDesc tupdesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:646,1
    - Dst: ResourceOwnerForgetTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:648,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 643
    functionDepth: 3
    functionLinenumber: 643
    functionLinenumberEnd: 651
    functionName: DecrTupleDescRefCount
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - FreeTupleDesc
    - ResourceOwnerForgetTupleDesc
    linkageType: ''
    returnType: void
    signature: void DecrTupleDescRefCount(TupleDesc tupdesc)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:671,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:672,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:686,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:686,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:686,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:714,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:715,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:717,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:718,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:765,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:781,1
    - Dst: datumIsEqual
      Src: /src/postgres/src/backend/access/common/tupdesc.c:783,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:805,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:806,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 90
    argCount: 2
    argNames:
    - tupdesc1
    - tupdesc2
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 656
    functionDepth: 2
    functionLinenumber: 656
    functionLinenumberEnd: 816
    functionName: equalTupleDescs
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - strcmp
    - datumIsEqual
    - Assert
    - NameStr
    - TupleDescCompactAttr
    - TupleDescAttr
    linkageType: ''
    returnType: bool
    signature: bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:853,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:854,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:856,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:856,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:856,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - tupdesc1
    - tupdesc2
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 843
    functionDepth: 2
    functionLinenumber: 843
    functionLinenumberEnd: 871
    functionName: equalRowTypes
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - TupleDescAttr
    - NameStr
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool equalRowTypes(TupleDesc tupdesc1, TupleDesc tupdesc2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_combine
      Src: /src/postgres/src/backend/access/common/tupdesc.c:885,1
    - Dst: hash_bytes_uint32
      Src: /src/postgres/src/backend/access/common/tupdesc.c:885,1
    - Dst: hash_combine
      Src: /src/postgres/src/backend/access/common/tupdesc.c:886,1
    - Dst: hash_bytes_uint32
      Src: /src/postgres/src/backend/access/common/tupdesc.c:886,1
    - Dst: hash_combine
      Src: /src/postgres/src/backend/access/common/tupdesc.c:888,1
    - Dst: hash_bytes_uint32
      Src: /src/postgres/src/backend/access/common/tupdesc.c:888,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:888,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - desc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 879
    functionDepth: 2
    functionLinenumber: 879
    functionLinenumberEnd: 891
    functionName: hashRowType
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - TupleDescAttr
    - hash_combine
    - hash_bytes_uint32
    linkageType: ''
    returnType: uint32
    signature: uint32 hashRowType(TupleDesc desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:923,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:924,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:925,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:926,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:927,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:932,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/common/tupdesc.c:942,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:942,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:943,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:944,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/common/tupdesc.c:961,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/tupdesc.c:961,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:962,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/tupdesc.c:963,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/common/tupdesc.c:964,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:974,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/common/tupdesc.c:976,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 6
    argNames:
    - desc
    - attributeNumber
    - attributeName
    - oidtypeid
    - typmod
    - attdim
    argTypes:
    - TupleDesc
    - AttrNumber
    - char*
    - Oid
    - int32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 908
    functionDepth: 4
    functionLinenumber: 908
    functionLinenumberEnd: 977
    functionName: TupleDescInitEntry
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 4
    functionsReached:
    - SearchSysCache1
    - elog
    - Assert
    - HeapTupleIsValid
    - ObjectIdGetDatum
    - ReleaseSysCache
    - MemSet
    - namestrcpy
    - NameStr
    - GETSTRUCT
    - populate_compact_attribute
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: "void TupleDescInitEntry(TupleDesc desc,\n\t\t\t\t   AttrNumber attributeNumber,\n\t\t\t\t
      \  const char *attributeName,\n\t\t\t\t   Oid oidtypeid,\n\t\t\t\t   int32 typmod,\n\t\t\t\t
      \  int attdim)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:996,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:997,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:999,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1002,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1006,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1007,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1080,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1083,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 68
    argCount: 6
    argNames:
    - desc
    - attributeNumber
    - attributeName
    - oidtypeid
    - typmod
    - attdim
    argTypes:
    - TupleDesc
    - AttrNumber
    - char*
    - Oid
    - int32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 984
    functionDepth: 4
    functionLinenumber: 984
    functionLinenumberEnd: 1084
    functionName: TupleDescInitBuiltinEntry
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - namestrcpy
    - populate_compact_attribute
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: "void TupleDescInitBuiltinEntry(TupleDesc desc,\n\t\t\t\t\t\t  AttrNumber
      attributeNumber,\n\t\t\t\t\t\t  const char *attributeName,\n\t\t\t\t\t\t  Oid
      oidtypeid,\n\t\t\t\t\t\t  int32 typmod,\n\t\t\t\t\t\t  int attdim)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1102,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - desc
    - attributeNumber
    - collationid
    argTypes:
    - TupleDesc
    - AttrNumber
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1092
    functionDepth: 2
    functionLinenumber: 1092
    functionLinenumberEnd: 1105
    functionName: TupleDescInitEntryCollation
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 2
    functionsReached:
    - Assert
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: "void TupleDescInitEntryCollation(TupleDesc desc,\n\t\t\t\t\t\t\tAttrNumber
      attributeNumber,\n\t\t\t\t\t\t\tOid collationid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1129,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1129,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1130,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1130,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1131,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1131,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1136,1
    - Dst: strVal
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1141,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1141,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1142,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1143,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1144,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1148,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1149,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - names
    - types
    - typmods
    - collations
    argTypes:
    - List*
    - List*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1117
    functionDepth: 5
    functionLinenumber: 1117
    functionLinenumberEnd: 1155
    functionName: BuildDescFromLists
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - CreateTemplateTupleDesc
    - lfirst_oid
    - Assert
    - lfirst_int
    - TupleDescFinalize
    - lfirst
    - TupleDescInitEntryCollation
    - list_length
    - strVal
    - TupleDescInitEntry
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc BuildDescFromLists(const List *names, const List *types,
      const List *typmods, const List *collations)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1141,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1141,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1142,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1143,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1144,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1148,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1139
    functionDepth: 5
    functionLinenumber: 1139
    functionLinenumberEnd: 1150
    functionName: forfour
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - lfirst_int
    - lfirst_oid
    - lfirst
    - TupleDescInitEntryCollation
    - strVal
    - TupleDescInitEntry
    linkageType: ''
    returnType: void
    signature: void forfour(l1, names, l2, types, l3, typmods, l4, collations)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stringToNode
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - tupdesc
    - attnum
    argTypes:
    - TupleDesc
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1160
    functionDepth: 1
    functionLinenumber: 1160
    functionLinenumberEnd: 1180
    functionName: TupleDescGetDefault
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - stringToNode
    linkageType: ''
    returnType: Node
    signature: 'Node *

      TupleDescGetDefault(TupleDesc tupdesc, AttrNumber attnum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1190,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1184
    functionDepth: 3
    functionLinenumber: 1184
    functionLinenumberEnd: 1193
    functionName: ResOwnerReleaseTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - FreeTupleDesc
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ResOwnerReleaseTupleDesc(Datum res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1198,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1195
    functionDepth: 2
    functionLinenumber: 1195
    functionLinenumberEnd: 1202
    functionName: ResOwnerPrintTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - psprintf
    - DatumGetPointer
    linkageType: ''
    returnType: char
    signature: 'char *

      ResOwnerPrintTupleDesc(Datum res)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/access/common/printsimple.c:37,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:38,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printsimple.c:42,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/access/common/printsimple.c:44,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/printsimple.c:44,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printsimple.c:45,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:46,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printsimple.c:47,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:48,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printsimple.c:49,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:50,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/access/common/printsimple.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - self
    - operation
    - tupdesc
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 54
    functionName: printsimple_startup
    functionSourceFile: /src/postgres/src/backend/access/common/printsimple.c
    functionUses: 0
    functionsReached:
    - pq_beginmessage
    - pq_sendstring
    - pq_endmessage
    - pq_sendint32
    - NameStr
    - TupleDescAttr
    - pq_sendint16
    linkageType: ''
    returnType: void
    signature: void printsimple_startup(DestReceiver *self, int operation, TupleDesc
      tupdesc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/access/common/printsimple.c:67,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/access/common/printsimple.c:70,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:71,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printsimple.c:75,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printsimple.c:80,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/common/printsimple.c:95,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printsimple.c:97,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/common/printsimple.c:98,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/common/printsimple.c:99,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/common/printsimple.c:105,1
    - Dst: pg_ltoa
      Src: /src/postgres/src/backend/access/common/printsimple.c:109,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printsimple.c:110,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/access/common/printsimple.c:116,1
    - Dst: pg_lltoa
      Src: /src/postgres/src/backend/access/common/printsimple.c:120,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printsimple.c:121,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/common/printsimple.c:127,1
    - Dst: pg_ultoa_n
      Src: /src/postgres/src/backend/access/common/printsimple.c:131,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printsimple.c:132,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/printsimple.c:137,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/access/common/printsimple.c:141,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 144
    functionName: printsimple
    functionSourceFile: /src/postgres/src/backend/access/common/printsimple.c
    functionUses: 0
    functionsReached:
    - pq_beginmessage
    - elog
    - slot_getallattrs
    - pg_ltoa
    - DatumGetInt64
    - DatumGetObjectId
    - pg_ultoa_n
    - DatumGetTextPP
    - pq_sendint32
    - pq_endmessage
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - DatumGetInt32
    - pg_lltoa
    - TupleDescAttr
    - pq_sendint16
    - pq_sendcountedtext
    linkageType: ''
    returnType: bool
    signature: bool printsimple(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/relation.c:52,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/access/common/relation.c:56,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/access/common/relation.c:59,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/access/common/relation.c:61,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/relation.c:62,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/relation.c:68,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/common/relation.c:69,1
    - Dst: CheckRelationLockedByMe
      Src: /src/postgres/src/backend/access/common/relation.c:70,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/common/relation.c:73,1
    - Dst: pgstat_init_relation
      Src: /src/postgres/src/backend/access/common/relation.c:76,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 79
    functionName: relation_open
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 11
    functionsReached:
    - elog
    - CheckRelationLockedByMe
    - Assert
    - RelationUsesLocalBuffers
    - RelationIdGetRelation
    - RelationIsValid
    - pgstat_init_relation
    - LockRelationOid
    - IsBootstrapProcessingMode
    linkageType: ''
    returnType: Relation
    signature: Relation relation_open(Oid relationId, LOCKMODE lockmode)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/relation.c:93,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/access/common/relation.c:97,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/access/common/relation.c:103,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/relation.c:103,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/access/common/relation.c:107,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/access/common/relation.c:113,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/access/common/relation.c:115,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/relation.c:116,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/relation.c:119,1
    - Dst: CheckRelationLockedByMe
      Src: /src/postgres/src/backend/access/common/relation.c:120,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/common/relation.c:123,1
    - Dst: pgstat_init_relation
      Src: /src/postgres/src/backend/access/common/relation.c:126,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 129
    functionName: try_relation_open
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 1
    functionsReached:
    - elog
    - CheckRelationLockedByMe
    - UnlockRelationOid
    - Assert
    - RelationUsesLocalBuffers
    - RelationIdGetRelation
    - RelationIsValid
    - pgstat_init_relation
    - LockRelationOid
    - ObjectIdGetDatum
    - SearchSysCacheExists1
    linkageType: ''
    returnType: Relation
    signature: Relation try_relation_open(Oid relationId, LOCKMODE lockmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/access/common/relation.c:154,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/access/common/relation.c:157,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/access/common/relation.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - relation
    - lockmode
    argTypes:
    - RangeVar*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 161
    functionName: relation_openrv
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 0
    functionsReached:
    - relation_open
    - AcceptInvalidationMessages
    - RangeVarGetRelid
    linkageType: ''
    returnType: Relation
    signature: Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/access/common/relation.c:183,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/access/common/relation.c:186,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/common/relation.c:189,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/access/common/relation.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - relation
    - lockmode
    - missing_ok
    argTypes:
    - RangeVar*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 194
    functionName: relation_openrv_extended
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - relation_open
    - AcceptInvalidationMessages
    - RangeVarGetRelid
    linkageType: ''
    returnType: Relation
    signature: "Relation relation_openrv_extended(const RangeVar *relation, LOCKMODE
      lockmode,\n\t\t\t\t\t\t bool missing_ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/relation.c:210,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/access/common/relation.c:213,1
    - Dst: UnlockRelationId
      Src: /src/postgres/src/backend/access/common/relation.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - relation
    - lockmode
    argTypes:
    - Relation
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 217
    functionName: relation_close
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 9
    functionsReached:
    - Assert
    - UnlockRelationId
    - RelationClose
    linkageType: ''
    returnType: void
    signature: void relation_close(Relation relation, LOCKMODE lockmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - att
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: ATT_IS_PACKABLE
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATT_IS_PACKABLE(att)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - att
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: VARLENA_ATT_IS_PACKABLE
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARLENA_ATT_IS_PACKABLE(att)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - att
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: COMPACT_ATTR_IS_PACKABLE
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPACT_ATTR_IS_PACKABLE(att)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_bytes
      Src: /src/postgres/src/backend/access/common/heaptuple.c:108,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: missing_hash
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - hash_bytes
    - DatumGetPointer
    linkageType: ''
    returnType: uint32
    signature: uint32 missing_hash(const void *key, Size keysize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/common/heaptuple.c:120,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:120,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - void*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 123
    functionName: missing_match
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - memcmp
    - DatumGetPointer
    linkageType: ''
    returnType: int
    signature: int missing_match(const void *key1, const void *key2, Size keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/common/heaptuple.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 140
    functionName: init_missing_cache
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void init_missing_cache(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:157,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:166,1
    - Dst: init_missing_cache
      Src: /src/postgres/src/backend/access/common/heaptuple.c:185,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:188,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/common/heaptuple.c:192,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:192,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/common/heaptuple.c:195,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/heaptuple.c:200,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:202,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/heaptuple.c:203,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:211,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - tupleDesc
    - attnum
    - isnull
    argTypes:
    - TupleDesc
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 150
    functionDepth: 4
    functionLinenumber: 150
    functionLinenumberEnd: 212
    functionName: getmissingattr
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 1
    functionsReached:
    - hash_search
    - Assert
    - datumCopy
    - VARSIZE_ANY
    - MemoryContextSwitchTo
    - init_missing_cache
    - PointerGetDatum
    - TupleDescCompactAttr
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: "Datum getmissingattr(TupleDesc tupleDesc,\n\t\t\t   int attnum, bool
      *isnull)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:236,1
    - Dst: COMPACT_ATTR_IS_PACKABLE
      Src: /src/postgres/src/backend/access/common/heaptuple.c:238,1
    - Dst: VARATT_CAN_MAKE_SHORT
      Src: /src/postgres/src/backend/access/common/heaptuple.c:239,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:239,1
    - Dst: VARATT_CONVERTED_SHORT_SIZE
      Src: /src/postgres/src/backend/access/common/heaptuple.c:245,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:245,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/access/common/heaptuple.c:248,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:248,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:254,1
    - Dst: EOH_get_flat_size
      Src: /src/postgres/src/backend/access/common/heaptuple.c:255,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/access/common/heaptuple.c:255,1
    - Dst: att_datum_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:259,1
    - Dst: att_addlength_datum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:261,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - tupleDesc
    - values
    - isnull
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 267
    functionName: heap_compute_data_size
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 2
    functionsReached:
    - VARATT_IS_EXTERNAL_EXPANDED
    - att_datum_alignby
    - VARATT_CAN_MAKE_SHORT
    - COMPACT_ATTR_IS_PACKABLE
    - att_nominal_alignby
    - att_addlength_datum
    - EOH_get_flat_size
    - DatumGetEOHP
    - TupleDescCompactAttr
    - VARATT_CONVERTED_SHORT_SIZE
    - DatumGetPointer
    linkageType: ''
    returnType: Size
    signature: "Size heap_compute_data_size(TupleDesc tupleDesc,\n\t\t\t\t\t   const
      Datum *values,\n\t\t\t\t\t   const bool *isnull)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:317,1
    - Dst: store_att_byval
      Src: /src/postgres/src/backend/access/common/heaptuple.c:318,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:324,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/common/heaptuple.c:327,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/access/common/heaptuple.c:329,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/access/common/heaptuple.c:335,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:337,1
    - Dst: EOH_get_flat_size
      Src: /src/postgres/src/backend/access/common/heaptuple.c:338,1
    - Dst: EOH_flatten_into
      Src: /src/postgres/src/backend/access/common/heaptuple.c:339,1
    - Dst: VARSIZE_EXTERNAL
      Src: /src/postgres/src/backend/access/common/heaptuple.c:345,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:346,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/access/common/heaptuple.c:349,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/common/heaptuple.c:352,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:353,1
    - Dst: VARATT_CAN_MAKE_SHORT
      Src: /src/postgres/src/backend/access/common/heaptuple.c:355,1
    - Dst: VARATT_CONVERTED_SHORT_SIZE
      Src: /src/postgres/src/backend/access/common/heaptuple.c:358,1
    - Dst: SET_VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/common/heaptuple.c:359,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:360,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/heaptuple.c:360,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:365,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/heaptuple.c:366,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:374,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/heaptuple.c:375,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/access/common/heaptuple.c:375,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:376,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:376,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:381,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:382,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:384,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:384,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 59
    argCount: 7
    argNames:
    - att
    - bit
    - bitmask
    - dataP
    - infomask
    - datum
    - isnull
    argTypes:
    - CompactAttribute*
    - uint8**
    - int*
    - char**
    - uint16*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 274
    functionDepth: 3
    functionLinenumber: 274
    functionLinenumberEnd: 389
    functionName: fill_val
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - EOH_flatten_into
    - VARDATA
    - VARATT_CONVERTED_SHORT_SIZE
    - memcpy
    - Assert
    - att_nominal_alignby
    - VARATT_IS_EXTERNAL
    - EOH_get_flat_size
    - VARSIZE_EXTERNAL
    - DatumGetCString
    - VARATT_IS_SHORT
    - VARATT_IS_EXTERNAL_EXPANDED
    - VARSIZE
    - store_att_byval
    - VARSIZE_SHORT
    - strlen
    - DatumGetEOHP
    - SET_VARSIZE_SHORT
    - VARATT_CAN_MAKE_SHORT
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void fill_val(CompactAttribute *att,\n\t\t uint8 **bit,\n\t\t int
      *bitmask,\n\t\t char **dataP,\n\t\t uint16 *infomask,\n\t\t Datum datum,\n\t\t
      bool isnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:431,1
    - Dst: fill_val
      Src: /src/postgres/src/backend/access/common/heaptuple.c:433,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:438,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 7
    argNames:
    - tupleDesc
    - values
    - isnull
    - data
    - data_size
    - infomask
    - bit
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    - char*
    - Size
    - uint16*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 400
    functionDepth: 4
    functionLinenumber: 400
    functionLinenumberEnd: 443
    functionName: heap_fill_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 2
    functionsReached:
    - Assert
    - TupleDescCompactAttr
    - PointerGetDatum
    - fill_val
    linkageType: ''
    returnType: void
    signature: "void heap_fill_tuple(TupleDesc tupleDesc,\n\t\t\t\tconst Datum *values,
      const bool *isnull,\n\t\t\t\tchar *data, Size data_size,\n\t\t\t\tuint16 *infomask,
      uint8 *bit)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:462,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:463,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:466,1
    - Dst: HeapTupleNoNulls
      Src: /src/postgres/src/backend/access/common/heaptuple.c:474,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/heaptuple.c:476,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/heaptuple.c:491,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - tup
    - attnum
    - tupleDesc
    argTypes:
    - HeapTuple
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 495
    functionName: heap_attisnull
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - HeapTupleHeaderGetNatts
    - HeapTupleNoNulls
    - TupleDescCompactAttr
    - att_isnull
    linkageType: ''
    returnType: bool
    signature: bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHasNulls
      Src: /src/postgres/src/backend/access/common/heaptuple.c:521,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:524,1
    - Dst: first_null_attr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:534,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/heaptuple.c:545,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:546,1
    - Dst: HeapTupleHasVarWidth
      Src: /src/postgres/src/backend/access/common/heaptuple.c:563,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:567,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:569,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/heaptuple.c:575,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:578,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:580,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:590,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:592,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:596,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/heaptuple.c:603,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:606,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:608,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:610,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:614,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:615,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/access/common/heaptuple.c:620,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 3
    argNames:
    - tup
    - attnum
    - tupleDesc
    argTypes:
    - HeapTuple
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 508
    functionDepth: 2
    functionLinenumber: 508
    functionLinenumberEnd: 621
    functionName: nocachegetattr
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 1
    functionsReached:
    - att_addlength_pointer
    - Assert
    - TupleDescCompactAttr
    - att_pointer_alignby
    - HeapTupleHasNulls
    - fetchatt
    - att_nominal_alignby
    - first_null_attr
    - HeapTupleHasVarWidth
    - Min
    - att_isnull
    linkageType: ''
    returnType: Datum
    signature: "Datum nocachegetattr(HeapTuple tup,\n\t\t\t   int attnum,\n\t\t\t
      \  TupleDesc tupleDesc)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:637,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:646,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:649,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/common/heaptuple.c:649,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:652,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/common/heaptuple.c:652,1
    - Dst: CommandIdGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:663,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/common/heaptuple.c:663,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:666,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/heaptuple.c:669,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - tup
    - attnum
    - tupleDesc
    - isnull
    argTypes:
    - HeapTuple
    - int
    - TupleDesc
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 632
    functionDepth: 1
    functionLinenumber: 632
    functionLinenumberEnd: 674
    functionName: heap_getsysattr
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - HeapTupleHeaderGetRawXmin
    - CommandIdGetDatum
    - ObjectIdGetDatum
    - TransactionIdGetDatum
    - PointerGetDatum
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderGetRawCommandId
    linkageType: ''
    returnType: Datum
    signature: Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
      bool *isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:690,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:693,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:698,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 700
    functionName: heap_copytuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 3
    functionsReached:
    - HeapTupleIsValid
    - memcpy
    - palloc
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple heap_copytuple(HeapTuple tuple)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:714,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:723,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:724,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - HeapTuple
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 725
    functionName: heap_copytuple_with_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHasNulls
      Src: /src/postgres/src/backend/access/common/heaptuple.c:746,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:749,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:762,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:765,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:767,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:805,1
    - Dst: att_datum_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:807,1
    - Dst: att_addlength_datum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:812,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:836,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:849,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/heaptuple.c:852,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:862,1
    - Dst: HeapTupleHeaderSetDatumLength
      Src: /src/postgres/src/backend/access/common/heaptuple.c:863,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/access/common/heaptuple.c:864,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/access/common/heaptuple.c:865,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:867,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:877,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/heaptuple.c:880,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:885,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:898,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:906,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/heaptuple.c:908,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:924,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:933,1
    - Dst: fill_val
      Src: /src/postgres/src/backend/access/common/heaptuple.c:937,1
    - Dst: fill_val
      Src: /src/postgres/src/backend/access/common/heaptuple.c:947,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 87
    argCount: 4
    argNames:
    - targetHeapTuple
    - targetMinimalTuple
    - sourceTuple
    - tupleDesc
    argTypes:
    - HeapTuple*
    - MinimalTuple*
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 737
    functionDepth: 4
    functionLinenumber: 737
    functionLinenumberEnd: 956
    functionName: expand_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderSetDatumLength
    - att_datum_alignby
    - HeapTupleHeaderSetNatts
    - memcpy
    - Assert
    - palloc0
    - HeapTupleHeaderSetTypMod
    - HeapTupleHasNulls
    - HeapTupleHeaderGetNatts
    - memset
    - att_addlength_datum
    - ItemPointerSetInvalid
    - TupleDescCompactAttr
    - MAXALIGN
    - BITMAPLEN
    - HeapTupleHeaderSetTypeId
    - fill_val
    linkageType: ''
    returnType: void
    signature: "void expand_tuple(HeapTuple *targetHeapTuple,\n\t\t\t MinimalTuple
      *targetMinimalTuple,\n\t\t\t HeapTuple sourceTuple,\n\t\t\t TupleDesc tupleDesc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expand_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sourceTuple
    - tupleDesc
    argTypes:
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 961
    functionDepth: 5
    functionLinenumber: 961
    functionLinenumberEnd: 968
    functionName: minimal_expand_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - expand_tuple
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple minimal_expand_tuple(HeapTuple sourceTuple, TupleDesc
      tupleDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expand_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:978,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sourceTuple
    - tupleDesc
    argTypes:
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 973
    functionDepth: 5
    functionLinenumber: 973
    functionLinenumberEnd: 980
    functionName: heap_expand_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - expand_tuple
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple heap_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/common/heaptuple.c:997,1
    - Dst: toast_flatten_tuple_to_datum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:998,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1007,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1008,1
    - Dst: HeapTupleHeaderSetDatumLength
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1010,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1011,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1012,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1014,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - tuple
    - tupleDesc
    argTypes:
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 988
    functionDepth: 4
    functionLinenumber: 988
    functionLinenumberEnd: 1015
    functionName: heap_copy_tuple_as_datum
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 3
    functionsReached:
    - HeapTupleHeaderSetDatumLength
    - memcpy
    - HeapTupleHasExternal
    - HeapTupleHeaderSetTypMod
    - PointerGetDatum
    - palloc
    - toast_flatten_tuple_to_datum
    - HeapTupleHeaderSetTypeId
    linkageType: ''
    returnType: Datum
    signature: Datum heap_copy_tuple_as_datum(HeapTuple tuple, TupleDesc tupleDesc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1039,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1040,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1041,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1062,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1064,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1066,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1074,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1083,1
    - Dst: HeapTupleHeaderSetDatumLength
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1086,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1087,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1088,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1090,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1092,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1095,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - tupleDescriptor
    - values
    - isnull
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1024
    functionDepth: 5
    functionLinenumber: 1024
    functionLinenumberEnd: 1104
    functionName: heap_form_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 16
    functionsReached:
    - HeapTupleHeaderSetDatumLength
    - HeapTupleHeaderSetNatts
    - errcode
    - heap_fill_tuple
    - heap_compute_data_size
    - palloc0
    - ereport
    - HeapTupleHeaderSetTypMod
    - errmsg
    - ItemPointerSetInvalid
    - MAXALIGN
    - BITMAPLEN
    - HeapTupleHeaderSetTypeId
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple heap_form_tuple(TupleDesc tupleDescriptor,\n\t\t\t\tconst
      Datum *values,\n\t\t\t\tconst bool *isnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1141,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1142,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1144,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1158,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1160,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - tuple
    - tupleDesc
    - replValues
    - replIsnull
    - doReplace
    argTypes:
    - HeapTuple
    - TupleDesc
    - Datum*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1117
    functionDepth: 6
    functionLinenumber: 1117
    functionLinenumberEnd: 1171
    functionName: heap_modify_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 2
    functionsReached:
    - pfree
    - heap_form_tuple
    - palloc_array
    - heap_deform_tuple
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple heap_modify_tuple(HeapTuple tuple,\n\t\t\t\t  TupleDesc
      tupleDesc,\n\t\t\t\t  const Datum *replValues,\n\t\t\t\t  const bool *replIsnull,\n\t\t\t\t
      \ const bool *doReplace)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1203,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1204,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1206,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1213,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1221,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1223,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 6
    argNames:
    - tuple
    - tupleDesc
    - nCols
    - replCols
    - replValues
    - replIsnull
    argTypes:
    - HeapTuple
    - TupleDesc
    - int
    - int*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1185
    functionDepth: 6
    functionLinenumber: 1185
    functionLinenumberEnd: 1234
    functionName: heap_modify_tuple_by_cols
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - elog
    - heap_deform_tuple
    - pfree
    - heap_form_tuple
    - palloc_array
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple heap_modify_tuple_by_cols(HeapTuple tuple,\n\t\t\t\t\t\t
      \ TupleDesc tupleDesc,\n\t\t\t\t\t\t  int nCols,\n\t\t\t\t\t\t  const int *replCols,\n\t\t\t\t\t\t
      \ const Datum *replValues,\n\t\t\t\t\t\t  const bool *replIsnull)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHasNulls
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1259,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1272,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1279,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1280,1
    - Dst: first_null_attr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1284,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1292,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1309,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1314,1
    - Dst: fetch_att_noerr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1318,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1330,1
    - Dst: align_fetch_then_add
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1331,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1340,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1342,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1350,1
    - Dst: align_fetch_then_add
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1353,1
    - Dst: getmissingattr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1365,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 4
    argNames:
    - tuple
    - tupleDesc
    - values
    - isnull
    argTypes:
    - HeapTuple
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1253
    functionDepth: 5
    functionLinenumber: 1253
    functionLinenumberEnd: 1366
    functionName: heap_deform_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 10
    functionsReached:
    - getmissingattr
    - Assert
    - TupleDescCompactAttr
    - HeapTupleHasNulls
    - align_fetch_then_add
    - att_nominal_alignby
    - HeapTupleHeaderGetNatts
    - first_null_attr
    - Min
    - att_isnull
    - fetch_att_noerr
    linkageType: ''
    returnType: void
    signature: "void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc,\n\t\t\t\t
      \ Datum *values, bool *isnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - htup
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1371
    functionDepth: 0
    functionLinenumber: 1371
    functionLinenumberEnd: 1375
    functionName: heap_freetuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 12
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void heap_freetuple(HeapTuple htup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1404,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1404,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1407,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1408,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1409,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1430,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1432,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1434,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1441,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1448,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1451,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - tupleDescriptor
    - values
    - isnull
    - extra
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1389
    functionDepth: 5
    functionLinenumber: 1389
    functionLinenumberEnd: 1460
    functionName: heap_form_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderSetNatts
    - errcode
    - Assert
    - heap_fill_tuple
    - heap_compute_data_size
    - palloc0
    - ereport
    - errmsg
    - MAXALIGN
    - BITMAPLEN
    linkageType: ''
    returnType: MinimalTuple
    signature: "MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor,\n\t\t\t\t\t\tconst
      Datum *values,\n\t\t\t\t\t\tconst bool *isnull,\n\t\t\t\t\t\tSize extra)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtup
    argTypes:
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1465
    functionDepth: 0
    functionLinenumber: 1465
    functionLinenumberEnd: 1469
    functionName: heap_free_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void heap_free_minimal_tuple(MinimalTuple mtup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1483,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1483,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1484,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1485,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - mtup
    - extra
    argTypes:
    - MinimalTuple
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1477
    functionDepth: 1
    functionLinenumber: 1477
    functionLinenumberEnd: 1489
    functionName: heap_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - memset
    - palloc
    - MAXALIGN
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple heap_copy_minimal_tuple(MinimalTuple mtup, Size extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1506,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1508,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1511,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - mtup
    argTypes:
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1500
    functionDepth: 2
    functionLinenumber: 1500
    functionLinenumberEnd: 1514
    functionName: heap_tuple_from_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetInvalid
    - memset
    - memcpy
    - palloc
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple heap_tuple_from_minimal_tuple(MinimalTuple mtup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1529,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1529,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1530,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1532,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1533,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - htup
    - extra
    argTypes:
    - HeapTuple
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1522
    functionDepth: 1
    functionLinenumber: 1522
    functionLinenumberEnd: 1539
    functionName: minimal_tuple_from_heap_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - memset
    - palloc
    - MAXALIGN
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple minimal_tuple_from_heap_tuple(HeapTuple htup, Size extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1545
    functionDepth: 4
    functionLinenumber: 1545
    functionLinenumberEnd: 1549
    functionName: varsize_any
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - VARSIZE_ANY
    linkageType: ''
    returnType: size_t
    signature: size_t varsize_any(void *p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/detoast.c:49,1
    - Dst: toast_fetch_datum
      Src: /src/postgres/src/backend/access/common/detoast.c:54,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:56,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:63,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:67,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:67,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/common/detoast.c:70,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/access/common/detoast.c:71,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/detoast.c:77,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/common/detoast.c:77,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/detoast.c:78,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/common/detoast.c:78,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/access/common/detoast.c:80,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/access/common/detoast.c:88,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/detoast.c:88,1
    - Dst: EOH_get_flat_size
      Src: /src/postgres/src/backend/access/common/detoast.c:89,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/detoast.c:90,1
    - Dst: EOH_flatten_into
      Src: /src/postgres/src/backend/access/common/detoast.c:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - attr
    argTypes:
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 44
    functionDepth: 4
    functionLinenumber: 44
    functionLinenumberEnd: 102
    functionName: detoast_external_attr
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 5
    functionsReached:
    - detoast_external_attr
    - VARATT_IS_EXTERNAL_EXPANDED
    - EOH_flatten_into
    - memcpy
    - Assert
    - VARSIZE_ANY
    - VARATT_EXTERNAL_GET_POINTER
    - DatumGetEOHP
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - EOH_get_flat_size
    - palloc
    - toast_fetch_datum
    - VARATT_IS_EXTERNAL_INDIRECT
    - VARATT_IS_EXTERNAL_ONDISK
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      detoast_external_attr(varlena *attr)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/detoast.c:118,1
    - Dst: toast_fetch_datum
      Src: /src/postgres/src/backend/access/common/detoast.c:123,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:125,1
    - Dst: toast_decompress_datum
      Src: /src/postgres/src/backend/access/common/detoast.c:129,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/detoast.c:130,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:133,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:144,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:144,1
    - Dst: detoast_attr
      Src: /src/postgres/src/backend/access/common/detoast.c:147,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/detoast.c:154,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/common/detoast.c:154,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/detoast.c:155,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/common/detoast.c:155,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/access/common/detoast.c:159,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/access/common/detoast.c:164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:166,1
    - Dst: VARATT_IS_EXTENDED
      Src: /src/postgres/src/backend/access/common/detoast.c:166,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:168,1
    - Dst: toast_decompress_datum
      Src: /src/postgres/src/backend/access/common/detoast.c:173,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:175,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:180,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/detoast.c:184,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:185,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/detoast.c:186,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/detoast.c:186,1
    - Dst: VARDATA_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:186,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - attr
    argTypes:
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 115
    functionDepth: 5
    functionLinenumber: 115
    functionLinenumberEnd: 191
    functionName: detoast_attr
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 2
    functionsReached:
    - detoast_external_attr
    - toast_decompress_datum
    - VARATT_EXTERNAL_GET_POINTER
    - VARATT_IS_COMPRESSED
    - SET_VARSIZE
    - VARDATA
    - VARATT_IS_EXTERNAL_ONDISK
    - memcpy
    - pfree
    - Assert
    - VARSIZE_ANY
    - toast_fetch_datum
    - VARATT_IS_SHORT
    - VARATT_IS_EXTERNAL_EXPANDED
    - VARSIZE_SHORT
    - VARDATA_SHORT
    - VARATT_IS_EXTERNAL_INDIRECT
    - VARATT_IS_EXTENDED
    - palloc
    - detoast_attr
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      detoast_attr(varlena *attr)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/detoast.c:215,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/access/common/detoast.c:223,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/detoast.c:226,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:230,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:233,1
    - Dst: toast_fetch_datum_slice
      Src: /src/postgres/src/backend/access/common/detoast.c:234,1
    - Dst: VARATT_EXTERNAL_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:243,1
    - Dst: VARATT_EXTERNAL_GET_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/detoast.c:254,1
    - Dst: pglz_maximum_compressed_size
      Src: /src/postgres/src/backend/access/common/detoast.c:256,1
    - Dst: toast_fetch_datum_slice
      Src: /src/postgres/src/backend/access/common/detoast.c:262,1
    - Dst: toast_fetch_datum
      Src: /src/postgres/src/backend/access/common/detoast.c:265,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:267,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:271,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:274,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:274,1
    - Dst: detoast_attr_slice
      Src: /src/postgres/src/backend/access/common/detoast.c:276,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/access/common/detoast.c:279,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/access/common/detoast.c:282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:287,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/common/detoast.c:287,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:289,1
    - Dst: toast_decompress_datum_slice
      Src: /src/postgres/src/backend/access/common/detoast.c:295,1
    - Dst: toast_decompress_datum
      Src: /src/postgres/src/backend/access/common/detoast.c:297,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/detoast.c:300,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:303,1
    - Dst: VARDATA_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:305,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:306,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/detoast.c:310,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:311,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/detoast.c:324,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:325,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/detoast.c:327,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/detoast.c:327,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/detoast.c:330,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 3
    argNames:
    - attr
    - sliceoffset
    - slicelength
    argTypes:
    - varlena*
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 204
    functionDepth: 5
    functionLinenumber: 204
    functionLinenumberEnd: 333
    functionName: detoast_attr_slice
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - detoast_external_attr
    - VARATT_EXTERNAL_IS_COMPRESSED
    - VARATT_EXTERNAL_GET_COMPRESS_METHOD
    - toast_decompress_datum
    - VARATT_EXTERNAL_GET_POINTER
    - VARATT_IS_COMPRESSED
    - VARDATA
    - SET_VARSIZE
    - VARATT_IS_EXTERNAL_ONDISK
    - elog
    - memcpy
    - Assert
    - pfree
    - VARATT_EXTERNAL_GET_EXTSIZE
    - VARATT_IS_EXTERNAL
    - toast_fetch_datum
    - VARATT_IS_SHORT
    - VARATT_IS_EXTERNAL_EXPANDED
    - VARSIZE
    - toast_fetch_datum_slice
    - detoast_attr_slice
    - VARSIZE_SHORT
    - pg_add_s32_overflow
    - VARDATA_SHORT
    - VARATT_IS_EXTERNAL_INDIRECT
    - pglz_maximum_compressed_size
    - toast_decompress_datum_slice
    - palloc
    linkageType: ''
    returnType: varlena
    signature: "varlena *\ndetoast_attr_slice(varlena *attr,\n\t\t\t\t   int32 sliceoffset,
      int32 slicelength)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/detoast.c:350,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/detoast.c:351,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:354,1
    - Dst: VARATT_EXTERNAL_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:356,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/detoast.c:358,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:360,1
    - Dst: SET_VARSIZE_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:361,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:363,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/common/detoast.c:372,1
    - Dst: table_relation_fetch_toast_slice
      Src: /src/postgres/src/backend/access/common/detoast.c:375,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/detoast.c:379,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - attr
    argTypes:
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 342
    functionDepth: 3
    functionLinenumber: 342
    functionLinenumberEnd: 382
    functionName: toast_fetch_datum
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 3
    functionsReached:
    - elog
    - table_relation_fetch_toast_slice
    - VARATT_EXTERNAL_IS_COMPRESSED
    - SET_VARSIZE_COMPRESSED
    - VARATT_EXTERNAL_GET_EXTSIZE
    - table_open
    - VARATT_EXTERNAL_GET_POINTER
    - SET_VARSIZE
    - palloc
    - table_close
    - VARATT_IS_EXTERNAL_ONDISK
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      toast_fetch_datum(varlena *attr)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/detoast.c:404,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/detoast.c:405,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:415,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:415,1
    - Dst: VARATT_EXTERNAL_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:417,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:430,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/detoast.c:441,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:443,1
    - Dst: SET_VARSIZE_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:444,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:446,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/common/detoast.c:452,1
    - Dst: table_relation_fetch_toast_slice
      Src: /src/postgres/src/backend/access/common/detoast.c:455,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/detoast.c:460,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - attr
    - sliceoffset
    - slicelength
    argTypes:
    - varlena*
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 395
    functionDepth: 3
    functionLinenumber: 395
    functionLinenumberEnd: 463
    functionName: toast_fetch_datum_slice
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - elog
    - table_relation_fetch_toast_slice
    - Assert
    - VARATT_EXTERNAL_IS_COMPRESSED
    - SET_VARSIZE_COMPRESSED
    - VARATT_EXTERNAL_GET_EXTSIZE
    - table_open
    - VARATT_EXTERNAL_GET_POINTER
    - SET_VARSIZE
    - palloc
    - table_close
    - VARATT_IS_EXTERNAL_ONDISK
    linkageType: ''
    returnType: varlena
    signature: "varlena *\ntoast_fetch_datum_slice(varlena *attr, int32 sliceoffset,\n\t\t\t\t\t\tint32
      slicelength)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:475,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:475,1
    - Dst: TOAST_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/detoast.c:481,1
    - Dst: pglz_decompress_datum
      Src: /src/postgres/src/backend/access/common/detoast.c:485,1
    - Dst: lz4_decompress_datum
      Src: /src/postgres/src/backend/access/common/detoast.c:487,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/detoast.c:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - attr
    argTypes:
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 492
    functionName: toast_decompress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 2
    functionsReached:
    - elog
    - TOAST_COMPRESS_METHOD
    - lz4_decompress_datum
    - Assert
    - VARATT_IS_COMPRESSED
    - pglz_decompress_datum
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      toast_decompress_datum(varlena *attr)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:507,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:507,1
    - Dst: TOAST_COMPRESS_EXTSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:517,1
    - Dst: toast_decompress_datum
      Src: /src/postgres/src/backend/access/common/detoast.c:518,1
    - Dst: TOAST_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/detoast.c:524,1
    - Dst: pglz_decompress_datum_slice
      Src: /src/postgres/src/backend/access/common/detoast.c:528,1
    - Dst: lz4_decompress_datum_slice
      Src: /src/postgres/src/backend/access/common/detoast.c:530,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/detoast.c:532,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - attr
    - slicelength
    argTypes:
    - varlena*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 502
    functionDepth: 3
    functionLinenumber: 502
    functionLinenumberEnd: 535
    functionName: toast_decompress_datum_slice
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - elog
    - TOAST_COMPRESS_METHOD
    - Assert
    - toast_decompress_datum
    - VARATT_IS_COMPRESSED
    - lz4_decompress_datum_slice
    - TOAST_COMPRESS_EXTSIZE
    - pglz_decompress_datum_slice
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      toast_decompress_datum_slice(varlena *attr, int32 slicelength)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/detoast.c:547,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/detoast.c:550,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:555,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:558,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:565,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:565,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/access/common/detoast.c:567,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/detoast.c:567,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/access/common/detoast.c:569,1
    - Dst: EOH_get_flat_size
      Src: /src/postgres/src/backend/access/common/detoast.c:571,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/access/common/detoast.c:571,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/detoast.c:573,1
    - Dst: VARDATA_COMPRESSED_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:576,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:578,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:584,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:589,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - value
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 544
    functionDepth: 3
    functionLinenumber: 544
    functionLinenumberEnd: 592
    functionName: toast_raw_datum_size
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - VARATT_IS_SHORT
    - VARATT_IS_EXTERNAL_EXPANDED
    - VARSIZE
    - VARDATA_COMPRESSED_GET_EXTSIZE
    - Assert
    - VARSIZE_SHORT
    - VARATT_EXTERNAL_GET_POINTER
    - toast_raw_datum_size
    - PointerGetDatum
    - EOH_get_flat_size
    - DatumGetEOHP
    - VARATT_IS_COMPRESSED
    - VARATT_IS_EXTERNAL_INDIRECT
    - VARATT_IS_EXTERNAL_ONDISK
    - DatumGetPointer
    linkageType: ''
    returnType: Size
    signature: Size toast_raw_datum_size(Datum value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/detoast.c:603,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/detoast.c:606,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:615,1
    - Dst: VARATT_EXTERNAL_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:616,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:618,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/detoast.c:622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/detoast.c:625,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/access/common/detoast.c:625,1
    - Dst: toast_datum_size
      Src: /src/postgres/src/backend/access/common/detoast.c:627,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/detoast.c:627,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/access/common/detoast.c:629,1
    - Dst: EOH_get_flat_size
      Src: /src/postgres/src/backend/access/common/detoast.c:631,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/access/common/detoast.c:631,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:633,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/common/detoast.c:635,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/detoast.c:643,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - value
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 600
    functionDepth: 3
    functionLinenumber: 600
    functionLinenumberEnd: 646
    functionName: toast_datum_size
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - VARATT_IS_SHORT
    - VARATT_IS_EXTERNAL_EXPANDED
    - VARSIZE
    - Assert
    - VARATT_EXTERNAL_GET_EXTSIZE
    - VARSIZE_SHORT
    - VARATT_EXTERNAL_GET_POINTER
    - toast_datum_size
    - PointerGetDatum
    - EOH_get_flat_size
    - DatumGetEOHP
    - VARATT_IS_EXTERNAL_INDIRECT
    - VARATT_IS_EXTERNAL_ONDISK
    - DatumGetPointer
    linkageType: ''
    returnType: Size
    signature: Size toast_datum_size(Datum value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/common/session.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: InitializeSession
    functionSourceFile: /src/postgres/src/backend/access/common/session.c
    functionUses: 0
    functionsReached:
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: void InitializeSession(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsm_segment_handle
      Src: /src/postgres/src/backend/access/common/session.c:88,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/session.c:91,1
    - Dst: shm_toc_initialize_estimator
      Src: /src/postgres/src/backend/access/common/session.c:92,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/common/session.c:95,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/common/session.c:96,1
    - Dst: SharedRecordTypmodRegistryEstimate
      Src: /src/postgres/src/backend/access/common/session.c:99,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/common/session.c:100,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/common/session.c:101,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/backend/access/common/session.c:104,1
    - Dst: dsm_create
      Src: /src/postgres/src/backend/access/common/session.c:105,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/session.c:108,1
    - Dst: shm_toc_create
      Src: /src/postgres/src/backend/access/common/session.c:112,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/access/common/session.c:113,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/common/session.c:117,1
    - Dst: dsa_create_in_place
      Src: /src/postgres/src/backend/access/common/session.c:118,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/common/session.c:122,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/common/session.c:126,1
    - Dst: SharedRecordTypmodRegistryInit
      Src: /src/postgres/src/backend/access/common/session.c:127,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/common/session.c:129,1
    - Dst: dsm_pin_mapping
      Src: /src/postgres/src/backend/access/common/session.c:139,1
    - Dst: dsa_pin_mapping
      Src: /src/postgres/src/backend/access/common/session.c:140,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/session.c:146,1
    - Dst: dsm_segment_handle
      Src: /src/postgres/src/backend/access/common/session.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 149
    functionName: GetSessionDsmHandle
    functionSourceFile: /src/postgres/src/backend/access/common/session.c
    functionUses: 0
    functionsReached:
    - shm_toc_create
    - dsm_pin_mapping
    - SharedRecordTypmodRegistryEstimate
    - shm_toc_estimate_keys
    - dsm_segment_handle
    - dsm_segment_address
    - MemoryContextSwitchTo
    - shm_toc_insert
    - shm_toc_initialize_estimator
    - shm_toc_estimate_chunk
    - dsm_create
    - SharedRecordTypmodRegistryInit
    - dsa_create_in_place
    - shm_toc_estimate
    - shm_toc_allocate
    - dsa_pin_mapping
    linkageType: ''
    returnType: dsm_handle
    signature: dsm_handle GetSessionDsmHandle(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/session.c:164,1
    - Dst: dsm_attach
      Src: /src/postgres/src/backend/access/common/session.c:167,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/session.c:169,1
    - Dst: shm_toc_attach
      Src: /src/postgres/src/backend/access/common/session.c:170,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/access/common/session.c:170,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/common/session.c:173,1
    - Dst: dsa_attach_in_place
      Src: /src/postgres/src/backend/access/common/session.c:174,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/common/session.c:182,1
    - Dst: SharedRecordTypmodRegistryAttach
      Src: /src/postgres/src/backend/access/common/session.c:183,1
    - Dst: dsm_pin_mapping
      Src: /src/postgres/src/backend/access/common/session.c:187,1
    - Dst: dsa_pin_mapping
      Src: /src/postgres/src/backend/access/common/session.c:188,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/session.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - handle
    argTypes:
    - dsm_handle
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 191
    functionName: AttachSession
    functionSourceFile: /src/postgres/src/backend/access/common/session.c
    functionUses: 0
    functionsReached:
    - elog
    - shm_toc_attach
    - dsm_pin_mapping
    - shm_toc_lookup
    - dsm_segment_address
    - MemoryContextSwitchTo
    - dsa_attach_in_place
    - SharedRecordTypmodRegistryAttach
    - dsm_attach
    - dsa_pin_mapping
    linkageType: ''
    returnType: void
    signature: void AttachSession(dsm_handle handle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsm_detach
      Src: /src/postgres/src/backend/access/common/session.c:204,1
    - Dst: dsa_detach
      Src: /src/postgres/src/backend/access/common/session.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 208
    functionName: DetachSession
    functionSourceFile: /src/postgres/src/backend/access/common/session.c
    functionUses: 0
    functionsReached:
    - dsm_detach
    - dsa_detach
    linkageType: ''
    returnType: void
    signature: void DetachSession(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: SizeOfScanLocations
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeOfScanLocations(N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 173
    functionName: SyncScanShmemInit
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SyncScanShmemInit(void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/common/syncscan.c:198,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - relfilelocator
    - location
    - set
    argTypes:
    - RelFileLocator
    - BlockNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 239
    functionName: ss_search
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 0
    functionsReached:
    - RelFileLocatorEquals
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber ss_search(RelFileLocator relfilelocator, BlockNumber location,
      bool set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/common/syncscan.c:256,1
    - Dst: ss_search
      Src: /src/postgres/src/backend/access/common/syncscan.c:257,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/common/syncscan.c:258,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/syncscan.c:271,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/common/syncscan.c:273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - rel
    - relnblocks
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 277
    functionName: ss_get_location
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 1
    functionsReached:
    - elog
    - ss_search
    - LWLockAcquire
    - LWLockRelease
    - RelationGetRelationName
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber ss_get_location(Relation rel, BlockNumber relnblocks)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/syncscan.c:293,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/common/syncscan.c:295,1
    - Dst: LWLockConditionalAcquire
      Src: /src/postgres/src/backend/access/common/syncscan.c:309,1
    - Dst: ss_search
      Src: /src/postgres/src/backend/access/common/syncscan.c:311,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/common/syncscan.c:312,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/syncscan.c:316,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/common/syncscan.c:318,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - rel
    - location
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 321
    functionName: ss_report_location
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 2
    functionsReached:
    - elog
    - ss_search
    - LWLockConditionalAcquire
    - LWLockRelease
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: void ss_report_location(Relation rel, BlockNumber location)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageXLogRecPtrSet
      Src: /src/postgres/src/backend/access/common/bufmask.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 37
    functionName: mask_page_lsn_and_checksum
    functionSourceFile: /src/postgres/src/backend/access/common/bufmask.c
    functionUses: 4
    functionsReached:
    - PageXLogRecPtrSet
    linkageType: ''
    returnType: void
    signature: void mask_page_lsn_and_checksum(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageClearFull
      Src: /src/postgres/src/backend/access/common/bufmask.c:54,1
    - Dst: PageClearHasFreeLinePointers
      Src: /src/postgres/src/backend/access/common/bufmask.c:55,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/common/bufmask.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 62
    functionName: mask_page_hint_bits
    functionSourceFile: /src/postgres/src/backend/access/common/bufmask.c
    functionUses: 4
    functionsReached:
    - PageClearFull
    - PageClearHasFreeLinePointers
    - PageClearAllVisible
    linkageType: ''
    returnType: void
    signature: void mask_page_hint_bits(Page page)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/bufmask.c:80,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/bufmask.c:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 85
    functionName: mask_unused_space
    functionSourceFile: /src/postgres/src/backend/access/common/bufmask.c
    functionUses: 4
    functionsReached:
    - elog
    - memset
    linkageType: ''
    returnType: void
    signature: void mask_unused_space(Page page)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/common/bufmask.c:99,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/common/bufmask.c:102,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/common/bufmask.c:104,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/common/bufmask.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 109
    functionName: mask_lp_flags
    functionSourceFile: /src/postgres/src/backend/access/common/bufmask.c
    functionUses: 2
    functionsReached:
    - ItemIdIsUsed
    - PageGetMaxOffsetNumber
    - OffsetNumberNext
    - PageGetItemId
    linkageType: ''
    returnType: void
    signature: void mask_lp_flags(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/bufmask.c:121,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/bufmask.c:125,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/bufmask.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 129
    functionName: mask_page_content
    functionSourceFile: /src/postgres/src/backend/access/common/bufmask.c
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void mask_page_content(Page page)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/common/scankey.c:47,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/common/scankey.c:49,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/scankey.c:53,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/common/scankey.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 8
    argNames:
    - entry
    - flags
    - attributeNumber
    - strategy
    - subtype
    - collation
    - procedure
    - argument
    argTypes:
    - ScanKey
    - int
    - AttrNumber
    - StrategyNumber
    - Oid
    - Oid
    - RegProcedure
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 56
    functionName: ScanKeyEntryInitialize
    functionSourceFile: /src/postgres/src/backend/access/common/scankey.c
    functionUses: 2
    functionsReached:
    - RegProcedureIsValid
    - MemSet
    - fmgr_info
    - Assert
    linkageType: ''
    returnType: void
    signature: "void ScanKeyEntryInitialize(ScanKey entry,\n\t\t\t\t\t   int flags,\n\t\t\t\t\t
      \  AttrNumber attributeNumber,\n\t\t\t\t\t   StrategyNumber strategy,\n\t\t\t\t\t
      \  Oid subtype,\n\t\t\t\t\t   Oid collation,\n\t\t\t\t\t   RegProcedure procedure,\n\t\t\t\t\t
      \  Datum argument)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/common/scankey.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - entry
    - attributeNumber
    - strategy
    - procedure
    - argument
    argTypes:
    - ScanKey
    - AttrNumber
    - StrategyNumber
    - RegProcedure
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 89
    functionName: ScanKeyInit
    functionSourceFile: /src/postgres/src/backend/access/common/scankey.c
    functionUses: 1
    functionsReached:
    - fmgr_info
    linkageType: ''
    returnType: void
    signature: "void ScanKeyInit(ScanKey entry,\n\t\t\tAttrNumber attributeNumber,\n\t\t\tStrategyNumber
      strategy,\n\t\t\tRegProcedure procedure,\n\t\t\tDatum argument)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/common/scankey.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 8
    argNames:
    - entry
    - flags
    - attributeNumber
    - strategy
    - subtype
    - collation
    - finfo
    - argument
    argTypes:
    - ScanKey
    - int
    - AttrNumber
    - StrategyNumber
    - Oid
    - Oid
    - FmgrInfo*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 117
    functionName: ScanKeyEntryInitializeWithInfo
    functionSourceFile: /src/postgres/src/backend/access/common/scankey.c
    functionUses: 2
    functionsReached:
    - fmgr_info_copy
    linkageType: ''
    returnType: void
    signature: "void ScanKeyEntryInitializeWithInfo(ScanKey entry,\n\t\t\t\t\t\t\t
      \  int flags,\n\t\t\t\t\t\t\t   AttrNumber attributeNumber,\n\t\t\t\t\t\t\t
      \  StrategyNumber strategy,\n\t\t\t\t\t\t\t   Oid subtype,\n\t\t\t\t\t\t\t   Oid
      collation,\n\t\t\t\t\t\t\t   FmgrInfo *finfo,\n\t\t\t\t\t\t\t   Datum argument)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/common/printtup.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - dest
    argTypes:
    - CommandDest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 95
    functionName: printtup_create_DR
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: DestReceiver
    signature: 'DestReceiver *

      printtup_create_DR(CommandDest dest)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/printtup.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - self
    - portal
    argTypes:
    - DestReceiver*
    - Portal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 109
    functionName: SetRemoteDestReceiverParams
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void SetRemoteDestReceiverParams(DestReceiver *self, Portal portal)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/common/printtup.c:121,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/common/printtup.c:129,1
    - Dst: SendRowDescriptionMessage
      Src: /src/postgres/src/backend/access/common/printtup.c:138,1
    - Dst: FetchPortalTargetList
      Src: /src/postgres/src/backend/access/common/printtup.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 153
    functionName: printtup_startup
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - initStringInfo
    - SendRowDescriptionMessage
    - FetchPortalTargetList
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void printtup_startup(DestReceiver *self, int operation, TupleDesc
      typeinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/access/common/printtup.c:172,1
    - Dst: pq_beginmessage_reuse
      Src: /src/postgres/src/backend/access/common/printtup.c:175,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printtup.c:177,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/access/common/printtup.c:187,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:198,1
    - Dst: getBaseTypeAndTypmod
      Src: /src/postgres/src/backend/access/common/printtup.c:209,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/printtup.c:213,1
    - Dst: lnext
      Src: /src/postgres/src/backend/access/common/printtup.c:214,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/printtup.c:217,1
    - Dst: lnext
      Src: /src/postgres/src/backend/access/common/printtup.c:221,1
    - Dst: pq_writestring
      Src: /src/postgres/src/backend/access/common/printtup.c:235,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/printtup.c:235,1
    - Dst: pq_writeint32
      Src: /src/postgres/src/backend/access/common/printtup.c:236,1
    - Dst: pq_writeint16
      Src: /src/postgres/src/backend/access/common/printtup.c:237,1
    - Dst: pq_writeint32
      Src: /src/postgres/src/backend/access/common/printtup.c:238,1
    - Dst: pq_writeint16
      Src: /src/postgres/src/backend/access/common/printtup.c:239,1
    - Dst: pq_writeint32
      Src: /src/postgres/src/backend/access/common/printtup.c:240,1
    - Dst: pq_writeint16
      Src: /src/postgres/src/backend/access/common/printtup.c:241,1
    - Dst: pq_endmessage_reuse
      Src: /src/postgres/src/backend/access/common/printtup.c:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - buf
    - typeinfo
    - targetlist
    - formats
    argTypes:
    - StringInfo
    - TupleDesc
    - List*
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 245
    functionName: SendRowDescriptionMessage
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 1
    functionsReached:
    - pq_writeint32
    - pq_endmessage_reuse
    - pq_writestring
    - lnext
    - pq_beginmessage_reuse
    - list_head
    - lfirst
    - NameStr
    - enlargeStringInfo
    - TupleDescAttr
    - pq_sendint16
    - pq_writeint16
    - getBaseTypeAndTypmod
    linkageType: ''
    returnType: void
    signature: "void SendRowDescriptionMessage(StringInfo buf, TupleDesc typeinfo,\n\t\t\t\t\t\t
      \ List *targetlist, int16 *formats)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/printtup.c:258,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/printtup.c:267,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:273,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/common/printtup.c:278,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/common/printtup.c:281,1
    - Dst: getTypeBinaryOutputInfo
      Src: /src/postgres/src/backend/access/common/printtup.c:285,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/common/printtup.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/printtup.c:291,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/printtup.c:292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/printtup.c:293,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - myState
    - typeinfo
    - numAttrs
    argTypes:
    - DR_printtup*
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 295
    functionName: printtup_prepare_info
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - getTypeBinaryOutputInfo
    - errcode
    - pfree
    - palloc0
    - ereport
    - errmsg
    - TupleDescAttr
    - getTypeOutputInfo
    - fmgr_info
    linkageType: ''
    returnType: void
    signature: void printtup_prepare_info(DR_printtup *myState, TupleDesc typeinfo,
      int numAttrs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printtup_prepare_info
      Src: /src/postgres/src/backend/access/common/printtup.c:316,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/access/common/printtup.c:319,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/printtup.c:322,1
    - Dst: pq_beginmessage_reuse
      Src: /src/postgres/src/backend/access/common/printtup.c:327,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printtup.c:329,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printtup.c:341,1
    - Dst: VALGRIND_CHECK_MEM_IS_DEFINED
      Src: /src/postgres/src/backend/access/common/printtup.c:353,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/printtup.c:353,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/common/printtup.c:354,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/printtup.c:354,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/access/common/printtup.c:361,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printtup.c:362,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/printtup.c:362,1
    - Dst: SendFunctionCall
      Src: /src/postgres/src/backend/access/common/printtup.c:369,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printtup.c:370,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/printtup.c:370,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/access/common/printtup.c:371,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/printtup.c:371,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/printtup.c:372,1
    - Dst: pq_endmessage_reuse
      Src: /src/postgres/src/backend/access/common/printtup.c:376,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/printtup.c:379,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/common/printtup.c:380,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 304
    functionDepth: 4
    functionLinenumber: 304
    functionLinenumberEnd: 383
    functionName: printtup
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - slot_getallattrs
    - VARSIZE
    - MemoryContextReset
    - pq_endmessage_reuse
    - pq_sendint32
    - VARSIZE_ANY
    - pq_beginmessage_reuse
    - MemoryContextSwitchTo
    - VALGRIND_CHECK_MEM_IS_DEFINED
    - OutputFunctionCall
    - strlen
    - SendFunctionCall
    - VARDATA
    - pq_sendbytes
    - printtup_prepare_info
    - pq_sendint16
    - pq_sendcountedtext
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool printtup(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/printtup.c:395,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/printtup.c:401,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/common/printtup.c:405,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 407
    functionName: printtup_shutdown
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void printtup_shutdown(DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/printtup.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 417
    functionName: printtup_destroy
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void printtup_destroy(DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/access/common/printtup.c:428,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/printtup.c:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - attributeId
    - attributeP
    - value
    argTypes:
    - unsigned
    - Form_pg_attribute
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 438
    functionName: printatt
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - printf
    - NameStr
    linkageType: ''
    returnType: void
    signature: "void printatt(unsigned attributeId,\n\t\t Form_pg_attribute attributeP,\n\t\t
      char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printatt
      Src: /src/postgres/src/backend/access/common/printtup.c:454,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:454,1
    - Dst: printf
      Src: /src/postgres/src/backend/access/common/printtup.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 444
    functionDepth: 2
    functionLinenumber: 444
    functionLinenumberEnd: 456
    functionName: debugStartup
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - TupleDescAttr
    - printatt
    - printf
    linkageType: ''
    returnType: void
    signature: void debugStartup(DestReceiver *self, int operation, TupleDesc typeinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/access/common/printtup.c:476,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/common/printtup.c:479,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:479,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/access/common/printtup.c:482,1
    - Dst: printatt
      Src: /src/postgres/src/backend/access/common/printtup.c:484,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:484,1
    - Dst: printf
      Src: /src/postgres/src/backend/access/common/printtup.c:486,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 489
    functionName: debugtup
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - slot_getattr
    - OidOutputFunctionCall
    - printatt
    - printf
    - TupleDescAttr
    - getTypeOutputInfo
    linkageType: ''
    returnType: bool
    signature: bool debugtup(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:52,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/common/toast_internals.c:52,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/toast_internals.c:52,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:53,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/toast_internals.c:53,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/toast_internals.c:53,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/common/toast_internals.c:55,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/toast_internals.c:55,1
    - Dst: CompressionMethodIsValid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:58,1
    - Dst: pglz_compress_datum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:67,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/toast_internals.c:67,1
    - Dst: lz4_compress_datum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:71,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/toast_internals.c:71,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/toast_internals.c:75,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:79,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:91,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:94,1
    - Dst: TOAST_COMPRESS_SET_SIZE_AND_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/toast_internals.c:95,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:96,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/toast_internals.c:101,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:102,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - value
    - cmethod
    argTypes:
    - Datum
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 45
    functionDepth: 4
    functionLinenumber: 45
    functionLinenumberEnd: 104
    functionName: toast_compress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 0
    functionsReached:
    - CompressionMethodIsValid
    - elog
    - TOAST_COMPRESS_SET_SIZE_AND_COMPRESS_METHOD
    - VARSIZE
    - Assert
    - pfree
    - VARSIZE_ANY_EXHDR
    - lz4_compress_datum
    - VARATT_IS_EXTERNAL
    - VARATT_IS_COMPRESSED
    - PointerGetDatum
    - pglz_compress_datum
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum toast_compress_datum(Datum value, char cmethod)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/common/toast_internals.c:125,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/toast_internals.c:131,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:135,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/common/toast_internals.c:135,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/common/toast_internals.c:142,1
    - Dst: toast_open_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:146,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/access/common/toast_internals.c:161,1
    - Dst: VARDATA_SHORT
      Src: /src/postgres/src/backend/access/common/toast_internals.c:163,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/common/toast_internals.c:164,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/toast_internals.c:168,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_internals.c:170,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:171,1
    - Dst: VARDATA_COMPRESSED_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:173,1
    - Dst: VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/toast_internals.c:176,1
    - Dst: VARDATA_COMPRESSED_GET_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/toast_internals.c:177,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:179,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/toast_internals.c:179,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_internals.c:183,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:184,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:185,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:197,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:200,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:214,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/access/common/toast_internals.c:218,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:230,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/toast_internals.c:230,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/toast_internals.c:232,1
    - Dst: toastrel_valueid_exists
      Src: /src/postgres/src/backend/access/common/toast_internals.c:255,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/access/common/toast_internals.c:272,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:273,1
    - Dst: toastid_valueid_exists
      Src: /src/postgres/src/backend/access/common/toast_internals.c:275,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/common/toast_internals.c:296,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/toast_internals.c:301,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:306,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:307,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:308,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/toast_internals.c:309,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_internals.c:309,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:310,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/common/toast_internals.c:312,1
    - Dst: heap_insert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:314,1
    - Dst: index_insert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:331,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/common/toast_internals.c:342,1
    - Dst: toast_close_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:356,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/toast_internals.c:357,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/toast_internals.c:362,1
    - Dst: SET_VARTAG_EXTERNAL
      Src: /src/postgres/src/backend/access/common/toast_internals.c:363,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/toast_internals.c:364,1
    - Dst: VARDATA_EXTERNAL
      Src: /src/postgres/src/backend/access/common/toast_internals.c:364,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:366,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 70
    argCount: 4
    argNames:
    - rel
    - value
    - oldexternal
    - options
    argTypes:
    - Relation
    - Datum
    - varlena*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 118
    functionDepth: 6
    functionLinenumber: 118
    functionLinenumberEnd: 367
    functionName: toast_save_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 0
    functionsReached:
    - VARATT_EXTERNAL_IS_COMPRESSED
    - heap_form_tuple
    - Min
    - VARATT_EXTERNAL_GET_POINTER
    - VARATT_IS_COMPRESSED
    - VARDATA
    - SET_VARSIZE
    - table_close
    - VARATT_IS_EXTERNAL_ONDISK
    - heap_insert
    - memcpy
    - heap_freetuple
    - Assert
    - Int32GetDatum
    - VARDATA_EXTERNAL
    - toastrel_valueid_exists
    - toast_close_indexes
    - table_open
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - VARATT_IS_SHORT
    - index_insert
    - VARSIZE
    - VARDATA_COMPRESSED_GET_EXTSIZE
    - toastid_valueid_exists
    - GetNewOidWithIndex
    - CHECK_FOR_INTERRUPTS
    - VARSIZE_SHORT
    - SET_VARTAG_EXTERNAL
    - VARDATA_SHORT
    - VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD
    - toast_open_indexes
    - VARDATA_COMPRESSED_GET_COMPRESS_METHOD
    - palloc
    - GetCurrentCommandId
    - RelationGetRelid
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: "Datum toast_save_datum(Relation rel, Datum value,\n\t\t\t\t varlena
      *oldexternal, uint32 options)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/toast_internals.c:378,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/toast_internals.c:388,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/toast_internals.c:392,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/common/toast_internals.c:397,1
    - Dst: toast_open_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:400,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/access/common/toast_internals.c:408,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:411,1
    - Dst: systable_beginscan_ordered
      Src: /src/postgres/src/backend/access/common/toast_internals.c:418,1
    - Dst: get_toast_snapshot
      Src: /src/postgres/src/backend/access/common/toast_internals.c:419,1
    - Dst: systable_getnext_ordered
      Src: /src/postgres/src/backend/access/common/toast_internals.c:420,1
    - Dst: heap_abort_speculative
      Src: /src/postgres/src/backend/access/common/toast_internals.c:426,1
    - Dst: simple_heap_delete
      Src: /src/postgres/src/backend/access/common/toast_internals.c:428,1
    - Dst: systable_endscan_ordered
      Src: /src/postgres/src/backend/access/common/toast_internals.c:436,1
    - Dst: toast_close_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:437,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/toast_internals.c:438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - rel
    - value
    - is_speculative
    argTypes:
    - Relation
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 375
    functionDepth: 6
    functionLinenumber: 375
    functionLinenumberEnd: 439
    functionName: toast_delete_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_getnext_ordered
    - toast_open_indexes
    - simple_heap_delete
    - systable_endscan_ordered
    - heap_abort_speculative
    - toast_close_indexes
    - table_open
    - VARATT_EXTERNAL_GET_POINTER
    - systable_beginscan_ordered
    - get_toast_snapshot
    - ObjectIdGetDatum
    - table_close
    - VARATT_IS_EXTERNAL_ONDISK
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void toast_delete_datum(Relation rel, Datum value, bool is_speculative)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toast_open_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:460,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/access/common/toast_internals.c:468,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:471,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/access/common/toast_internals.c:476,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:477,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/access/common/toast_internals.c:480,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/access/common/toast_internals.c:483,1
    - Dst: toast_close_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - toastrel
    - valueid
    argTypes:
    - Relation
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 449
    functionDepth: 4
    functionLinenumber: 449
    functionLinenumberEnd: 489
    functionName: toastrel_valueid_exists
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 1
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - toast_open_indexes
    - systable_beginscan
    - toast_close_indexes
    - ObjectIdGetDatum
    - systable_getnext
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: bool toastrel_valueid_exists(Relation toastrel, Oid valueid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/access/common/toast_internals.c:503,1
    - Dst: toastrel_valueid_exists
      Src: /src/postgres/src/backend/access/common/toast_internals.c:505,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/toast_internals.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - toastrelid
    - valueid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 497
    functionDepth: 5
    functionLinenumber: 497
    functionLinenumberEnd: 510
    functionName: toastid_valueid_exists
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 1
    functionsReached:
    - table_open
    - table_close
    - toastrel_valueid_exists
    linkageType: ''
    returnType: bool
    signature: bool toastid_valueid_exists(Oid toastrelid, Oid valueid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/access/common/toast_internals.c:528,1
    - Dst: toast_open_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:531,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:535,1
    - Dst: toast_close_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:538,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/toast_internals.c:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - toastoid
    - lock
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 542
    functionName: toast_get_valid_index
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 0
    functionsReached:
    - toast_open_indexes
    - toast_close_indexes
    - table_open
    - table_close
    - RelationGetRelid
    linkageType: ''
    returnType: Oid
    signature: Oid toast_get_valid_index(Oid toastoid, LOCKMODE lock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/access/common/toast_internals.c:565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:566,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/toast_internals.c:568,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/toast_internals.c:571,1
    - Dst: foreach
      Src: /src/postgres/src/backend/access/common/toast_internals.c:572,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/common/toast_internals.c:573,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:573,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/common/toast_internals.c:592,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/toast_internals.c:599,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:600,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - toastrel
    - lock
    - toastidxs
    - num_indexes
    argTypes:
    - Relation
    - LOCKMODE
    - Relation**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 552
    functionDepth: 2
    functionLinenumber: 552
    functionLinenumberEnd: 603
    functionName: toast_open_indexes
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 5
    functionsReached:
    - elog
    - foreach
    - list_free
    - Assert
    - palloc_array
    - index_open
    - list_length
    - lfirst_oid
    - RelationGetIndexList
    - RelationGetRelid
    linkageType: ''
    returnType: int
    signature: "int toast_open_indexes(Relation toastrel,\n\t\t\t\t   LOCKMODE lock,\n\t\t\t\t
      \  Relation **toastidxs,\n\t\t\t\t   int *num_indexes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_close
      Src: /src/postgres/src/backend/access/common/toast_internals.c:618,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/toast_internals.c:619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - toastidxs
    - num_indexes
    - lock
    argTypes:
    - Relation*
    - int
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 611
    functionDepth: 2
    functionLinenumber: 611
    functionLinenumberEnd: 620
    functionName: toast_close_indexes
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 5
    functionsReached:
    - pfree
    - index_close
    linkageType: ''
    returnType: void
    signature: void toast_close_indexes(Relation *toastidxs, int num_indexes, LOCKMODE
      lock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HaveRegisteredOrActiveSnapshot
      Src: /src/postgres/src/backend/access/common/toast_internals.c:643,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/toast_internals.c:644,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 647
    functionName: get_toast_snapshot
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 2
    functionsReached:
    - elog
    - HaveRegisteredOrActiveSnapshot
    linkageType: ''
    returnType: Snapshot
    signature: Snapshot get_toast_snapshot(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - option
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 615
    functionName: GET_STRING_RELOPTION_LEN
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_STRING_RELOPTION_LEN(option)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:631,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:631,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:637,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:637,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:644,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:644,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:650,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:656,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:656,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:662,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:662,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:669,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:670,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:678,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:686,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:694,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:702,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:710,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:718,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 733
    functionName: initialize_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    - Assert
    - pfree
    - DoLockModesConflict
    - strlen
    linkageType: ''
    returnType: void
    signature: void initialize_reloptions(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:745,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:746,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:747,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 740
    functionDepth: 1
    functionLinenumber: 740
    functionLinenumberEnd: 750
    functionName: add_reloption_kind
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: relopt_kind
    signature: relopt_kind add_reloption_kind(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/reloptions.c:766,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:771,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:776,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/reloptions.c:779,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - newoption
    argTypes:
    - relopt_gen*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 784
    functionName: add_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - palloc
    - repalloc
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void add_reloption(relopt_gen *newoption)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - relopts
    - relopt_struct_size
    argTypes:
    - local_relopts*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 791
    functionDepth: 0
    functionLinenumber: 791
    functionLinenumberEnd: 797
    functionName: init_local_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void init_local_reloptions(local_relopts *relopts, Size relopt_struct_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/access/common/reloptions.c:807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - relopts
    - validator
    argTypes:
    - local_relopts*
    - relopts_validator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 808
    functionName: register_reloptions_validator
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - lappend
    linkageType: ''
    returnType: void
    signature: void register_reloptions_validator(local_relopts *relopts, relopts_validator
      validator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/common/reloptions.c:817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:819,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/common/reloptions.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - relopts
    - newoption
    - offset
    argTypes:
    - local_relopts*
    - relopt_gen*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 814
    functionDepth: 1
    functionLinenumber: 814
    functionLinenumberEnd: 825
    functionName: add_local_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - Assert
    - lappend
    - palloc_object
    linkageType: ''
    returnType: void
    signature: void add_local_reloption(local_relopts *relopts, relopt_gen *newoption,
      int offset)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/reloptions.c:841,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/reloptions.c:866,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:870,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/reloptions.c:872,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/reloptions.c:874,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:878,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/reloptions.c:883,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 5
    argNames:
    - kinds
    - type
    - name
    - desc
    - lockmode
    argTypes:
    - uint32
    - int
    - char*
    - char*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 832
    functionDepth: 1
    functionLinenumber: 832
    functionLinenumberEnd: 886
    functionName: allocate_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - elog
    - pstrdup
    - MemoryContextSwitchTo
    - strlen
    - palloc
    linkageType: ''
    returnType: relopt_gen
    signature: "relopt_gen *\nallocate_reloption(uint32 kinds, int type, const char
      *name, const char *desc,\n\t\t\t\t   LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: allocate_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - bool
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 892
    functionDepth: 2
    functionLinenumber: 892
    functionLinenumberEnd: 903
    functionName: init_bool_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - allocate_reloption
    linkageType: ''
    returnType: relopt_bool
    signature: "relopt_bool *\ninit_bool_reloption(uint32 kinds, const char *name,
      const char *desc,\n\t\t\t\t\tbool default_val, LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_bool_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:913,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:916,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - bool
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 909
    functionDepth: 3
    functionLinenumber: 909
    functionLinenumberEnd: 917
    functionName: add_bool_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - init_bool_reloption
    - add_reloption
    linkageType: ''
    returnType: void
    signature: "void add_bool_reloption(uint32 kinds, const char *name, const char
      *desc,\n\t\t\t\t   bool default_val, LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_bool_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:929,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - relopts
    - name
    - desc
    - default_val
    - offset
    argTypes:
    - local_relopts*
    - char*
    - char*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 925
    functionDepth: 3
    functionLinenumber: 925
    functionLinenumberEnd: 934
    functionName: add_local_bool_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - add_local_reloption
    - init_bool_reloption
    linkageType: ''
    returnType: void
    signature: "void add_local_bool_reloption(local_relopts *relopts, const char *name,\n\t\t\t\t\t\t
      const char *desc, bool default_val, int offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: allocate_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - kinds
    - name
    - desc
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 940
    functionDepth: 2
    functionLinenumber: 940
    functionLinenumberEnd: 950
    functionName: init_ternary_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - allocate_reloption
    linkageType: ''
    returnType: relopt_ternary
    signature: "relopt_ternary *\ninit_ternary_reloption(uint32 kinds, const char
      *name, const char *desc,\n\t\t\t\t\t   LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_ternary_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:963,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:965,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - kinds
    - name
    - desc
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 956
    functionDepth: 3
    functionLinenumber: 956
    functionLinenumberEnd: 966
    functionName: add_ternary_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - init_ternary_reloption
    - add_reloption
    linkageType: ''
    returnType: void
    signature: "void add_ternary_reloption(uint32 kinds, const char *name, const char
      *desc,\n\t\t\t\t\t  LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_ternary_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:981,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - relopts
    - name
    - desc
    - offset
    argTypes:
    - local_relopts*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 974
    functionDepth: 3
    functionLinenumber: 974
    functionLinenumberEnd: 984
    functionName: add_local_ternary_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - add_local_reloption
    - init_ternary_reloption
    linkageType: ''
    returnType: void
    signature: "void add_local_ternary_reloption(local_relopts *relopts, const char
      *name,\n\t\t\t\t\t\t\tconst char *desc, int offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: allocate_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - int
    - int
    - int
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 990
    functionDepth: 2
    functionLinenumber: 990
    functionLinenumberEnd: 1004
    functionName: init_int_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - allocate_reloption
    linkageType: ''
    returnType: relopt_int
    signature: "relopt_int *\ninit_int_reloption(uint32 kinds, const char *name, const
      char *desc,\n\t\t\t\t   int default_val, int min_val, int max_val,\n\t\t\t\t
      \  LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_int_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1014,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1018,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - int
    - int
    - int
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 1010
    functionDepth: 3
    functionLinenumber: 1010
    functionLinenumberEnd: 1019
    functionName: add_int_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - init_int_reloption
    - add_reloption
    linkageType: ''
    returnType: void
    signature: "void add_int_reloption(uint32 kinds, const char *name, const char
      *desc, int default_val,\n\t\t\t\t  int min_val, int max_val, LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_int_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1032,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - relopts
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - offset
    argTypes:
    - local_relopts*
    - char*
    - char*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1027
    functionDepth: 3
    functionLinenumber: 1027
    functionLinenumberEnd: 1037
    functionName: add_local_int_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - add_local_reloption
    - init_int_reloption
    linkageType: ''
    returnType: void
    signature: "void add_local_int_reloption(local_relopts *relopts, const char *name,\n\t\t\t\t\t\tconst
      char *desc, int default_val, int min_val,\n\t\t\t\t\t\tint max_val, int offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: allocate_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - double
    - double
    - double
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1043
    functionDepth: 2
    functionLinenumber: 1043
    functionLinenumberEnd: 1057
    functionName: init_real_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - allocate_reloption
    linkageType: ''
    returnType: relopt_real
    signature: "relopt_real *\ninit_real_reloption(uint32 kinds, const char *name,
      const char *desc,\n\t\t\t\t\tdouble default_val, double min_val, double max_val,\n\t\t\t\t\tLOCKMODE
      lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_real_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1068,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - double
    - double
    - double
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1063
    functionDepth: 3
    functionLinenumber: 1063
    functionLinenumberEnd: 1073
    functionName: add_real_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - init_real_reloption
    - add_reloption
    linkageType: ''
    returnType: void
    signature: "void add_real_reloption(uint32 kinds, const char *name, const char
      *desc,\n\t\t\t\t   double default_val, double min_val, double max_val,\n\t\t\t\t
      \  LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_real_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1086,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1091,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - relopts
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - offset
    argTypes:
    - local_relopts*
    - char*
    - char*
    - double
    - double
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1081
    functionDepth: 3
    functionLinenumber: 1081
    functionLinenumberEnd: 1092
    functionName: add_local_real_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - add_local_reloption
    - init_real_reloption
    linkageType: ''
    returnType: void
    signature: "void add_local_real_reloption(local_relopts *relopts, const char *name,\n\t\t\t\t\t\t
      const char *desc, double default_val,\n\t\t\t\t\t\t double min_val, double max_val,
      int offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: allocate_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - members
    - default_val
    - detailmsg
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - relopt_enum_elt_def*
    - int
    - char*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1098
    functionDepth: 2
    functionLinenumber: 1098
    functionLinenumberEnd: 1112
    functionName: init_enum_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - allocate_reloption
    linkageType: ''
    returnType: relopt_enum
    signature: "relopt_enum *\ninit_enum_reloption(uint32 kinds, const char *name,
      const char *desc,\n\t\t\t\t\trelopt_enum_elt_def *members, int default_val,\n\t\t\t\t\tconst
      char *detailmsg, LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_enum_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1132,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - members
    - default_val
    - detailmsg
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - relopt_enum_elt_def*
    - int
    - char*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1127
    functionDepth: 3
    functionLinenumber: 1127
    functionLinenumberEnd: 1137
    functionName: add_enum_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - init_enum_reloption
    - add_reloption
    linkageType: ''
    returnType: void
    signature: "void add_enum_reloption(uint32 kinds, const char *name, const char
      *desc,\n\t\t\t\t   relopt_enum_elt_def *members, int default_val,\n\t\t\t\t
      \  const char *detailmsg, LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_enum_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1150,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - relopts
    - name
    - desc
    - members
    - default_val
    - detailmsg
    - offset
    argTypes:
    - local_relopts*
    - char*
    - char*
    - relopt_enum_elt_def*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1145
    functionDepth: 3
    functionLinenumber: 1145
    functionLinenumberEnd: 1156
    functionName: add_local_enum_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - init_enum_reloption
    - add_local_reloption
    linkageType: ''
    returnType: void
    signature: "void add_local_enum_reloption(local_relopts *relopts, const char *name,\n\t\t\t\t\t\t
      const char *desc, relopt_enum_elt_def *members,\n\t\t\t\t\t\t int default_val,
      const char *detailmsg, int offset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: allocate_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1175,1
    - Dst: strdup
      Src: /src/postgres/src/backend/access/common/reloptions.c:1182,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/common/reloptions.c:1184,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - validator
    - filler
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - char*
    - validate_string_relopt
    - fill_string_relopt
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1162
    functionDepth: 2
    functionLinenumber: 1162
    functionLinenumberEnd: 1196
    functionName: init_string_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - MemoryContextStrdup
    - allocate_reloption
    - strdup
    - strlen
    linkageType: ''
    returnType: relopt_string
    signature: "relopt_string *\ninit_string_reloption(uint32 kinds, const char *name,
      const char *desc,\n\t\t\t\t\t  const char *default_val,\n\t\t\t\t\t  validate_string_relopt
      validator,\n\t\t\t\t\t  fill_string_relopt filler,\n\t\t\t\t\t  LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_string_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1212,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - validator
    - lockmode
    argTypes:
    - uint32
    - char*
    - char*
    - char*
    - validate_string_relopt
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1207
    functionDepth: 3
    functionLinenumber: 1207
    functionLinenumberEnd: 1218
    functionName: add_string_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - init_string_reloption
    - add_reloption
    linkageType: ''
    returnType: void
    signature: "void add_string_reloption(uint32 kinds, const char *name, const char
      *desc,\n\t\t\t\t\t const char *default_val, validate_string_relopt validator,\n\t\t\t\t\t
      LOCKMODE lockmode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_string_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1233,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - relopts
    - name
    - desc
    - default_val
    - validator
    - filler
    - offset
    argTypes:
    - local_relopts*
    - char*
    - char*
    - char*
    - validate_string_relopt
    - fill_string_relopt
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1227
    functionDepth: 3
    functionLinenumber: 1227
    functionLinenumberEnd: 1240
    functionName: add_local_string_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - add_local_reloption
    - init_string_reloption
    linkageType: ''
    returnType: void
    signature: "void add_local_string_reloption(local_relopts *relopts, const char
      *name,\n\t\t\t\t\t\t   const char *desc, const char *default_val,\n\t\t\t\t\t\t
      \  validate_string_relopt validator,\n\t\t\t\t\t\t   fill_string_relopt filler,
      int offset)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1281,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/access/common/reloptions.c:1283,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/access/common/reloptions.c:1288,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/reloptions.c:1292,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1292,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1293,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1293,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1298,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1309,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1312,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1314,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/common/reloptions.c:1320,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1334,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1339,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1340,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1341,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1372,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1374,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1386,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1396,1
    - Dst: strchr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1401,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1402,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1403,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1404,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1414,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/access/common/reloptions.c:1416,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1417,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1418,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1419,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1424,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1424,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1426,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1427,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/common/reloptions.c:1428,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/reloptions.c:1428,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/common/reloptions.c:1430,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/reloptions.c:1430,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/access/common/reloptions.c:1437,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 70
    argCount: 6
    argNames:
    - oldOptions
    - defList
    - nameSpace
    - validnsps
    - acceptOidsOff
    - isReset
    argTypes:
    - Datum
    - List*
    - char*
    - char*[]
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1265
    functionDepth: 2
    functionLinenumber: 1265
    functionLinenumberEnd: 1442
    functionName: transformRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - defGetBoolean
    - strcmp
    - errcode
    - strchr
    - VARDATA
    - SET_VARSIZE
    - palloc
    - makeArrayResult
    - errmsg
    - PointerGetDatum
    - VARSIZE
    - ereport
    - lfirst
    - strlen
    - DatumGetPointer
    - DatumGetArrayTypeP
    - defGetString
    - deconstruct_array_builtin
    - strncmp
    - sprintf
    - accumArrayResult
    linkageType: ''
    returnType: Datum
    signature: "Datum transformRelOptions(Datum oldOptions, List *defList, const char
      *nameSpace,\n\t\t\t\t\tconst char *const validnsps[], bool acceptOidsOff, bool
      isReset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1298,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1309,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1312,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1314,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1296
    functionDepth: 1
    functionLinenumber: 1296
    functionLinenumberEnd: 1316
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 23
    functionsReached:
    - strncmp
    - lfirst
    - strlen
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach(cell, defList)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1334,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1339,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1340,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1341,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1372,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1374,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1386,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1396,1
    - Dst: strchr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1401,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1402,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1403,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1404,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1414,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/access/common/reloptions.c:1416,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1417,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1418,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1419,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1424,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1424,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1426,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1427,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/common/reloptions.c:1428,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/reloptions.c:1428,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/common/reloptions.c:1430,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/reloptions.c:1430,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1332
    functionDepth: 2
    functionLinenumber: 1332
    functionLinenumberEnd: 1434
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 23
    functionsReached:
    - defGetBoolean
    - strcmp
    - errcode
    - strchr
    - ereport
    - lfirst
    - strlen
    - errmsg
    - SET_VARSIZE
    - palloc
    - VARDATA
    - accumArrayResult
    - PointerGetDatum
    - defGetString
    - sprintf
    linkageType: ''
    returnType: void
    signature: void foreach(cell, defList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1459,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/access/common/reloptions.c:1462,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/access/common/reloptions.c:1464,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1472,1
    - Dst: strchr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1473,1
    - Dst: makeString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1477,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/common/reloptions.c:1479,1
    - Dst: makeDefElem
      Src: /src/postgres/src/backend/access/common/reloptions.c:1479,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - options
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1449
    functionDepth: 1
    functionLinenumber: 1449
    functionLinenumberEnd: 1483
    functionName: untransformRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - strchr
    - makeString
    - makeDefElem
    - lappend
    - TextDatumGetCString
    - DatumGetArrayTypeP
    - DatumGetPointer
    linkageType: ''
    returnType: List
    signature: 'List *

      untransformRelOptions(Datum options)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1506,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/common/reloptions.c:1513,1
    - Dst: heap_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1521,1
    - Dst: partitioned_table_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1524,1
    - Dst: view_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1527,1
    - Dst: index_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:1537,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - tuple
    - tupdesc
    - amoptions
    argTypes:
    - HeapTuple
    - TupleDesc
    - amoptions_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1497
    functionDepth: 3
    functionLinenumber: 1497
    functionLinenumberEnd: 1543
    functionName: extractRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - partitioned_table_reloptions
    - heap_reloptions
    - fastgetattr
    - Assert
    - index_reloptions
    - view_reloptions
    - GETSTRUCT
    linkageType: ''
    returnType: bytea
    signature: "bytea *\nextractRelOptions(HeapTuple tuple, TupleDesc tupdesc,\n\t\t\t\t
      \ amoptions_function amoptions)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/access/common/reloptions.c:1549,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/access/common/reloptions.c:1554,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/reloptions.c:1558,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1558,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1559,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1559,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1568,1
    - Dst: parse_one_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1570,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1581,1
    - Dst: strchr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1582,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1585,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1587,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:1592,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1594,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:1595,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 4
    argNames:
    - options
    - validate
    - reloptions
    - numoptions
    argTypes:
    - Datum
    - bool
    - relopt_value*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1545
    functionDepth: 2
    functionLinenumber: 1545
    functionLinenumberEnd: 1596
    functionName: parseRelOptionsInternal
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - VARSIZE
    - strchr
    - errcode
    - parse_one_reloption
    - pfree
    - ereport
    - strncmp
    - TextDatumGetCString
    - VARDATA
    - errmsg
    - DatumGetArrayTypeP
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void parseRelOptionsInternal(Datum options, bool validate,\n\t\t\t\t\t\trelopt_value
      *reloptions, int numoptions)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initialize_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1627,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1637,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1651,1
    - Dst: parseRelOptionsInternal
      Src: /src/postgres/src/backend/access/common/reloptions.c:1652,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 4
    argNames:
    - options
    - validate
    - kind
    - numrelopts
    argTypes:
    - Datum
    - bool
    - relopt_kind
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1617
    functionDepth: 3
    functionLinenumber: 1617
    functionLinenumberEnd: 1656
    functionName: parseRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - palloc
    - parseRelOptionsInternal
    - DatumGetPointer
    - initialize_reloptions
    linkageType: ''
    returnType: relopt_value
    signature: "relopt_value *\nparseRelOptions(Datum options, bool validate, relopt_kind
      kind,\n\t\t\t\tint *numrelopts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/reloptions.c:1662,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/reloptions.c:1663,1
    - Dst: foreach
      Src: /src/postgres/src/backend/access/common/reloptions.c:1667,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1669,1
    - Dst: parseRelOptionsInternal
      Src: /src/postgres/src/backend/access/common/reloptions.c:1678,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - relopts
    - options
    - validate
    argTypes:
    - local_relopts*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1659
    functionDepth: 3
    functionLinenumber: 1659
    functionLinenumberEnd: 1681
    functionName: parseLocalRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - parseRelOptionsInternal
    - foreach
    - palloc_array
    - lfirst
    - list_length
    linkageType: ''
    returnType: relopt_value
    signature: 'relopt_value *

      parseLocalRelOptions(local_relopts *relopts, Datum options, bool validate)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1697,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1699,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1703,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/reloptions.c:1704,1
    - Dst: parse_bool
      Src: /src/postgres/src/backend/access/common/reloptions.c:1711,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1713,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1714,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1715,1
    - Dst: parse_bool
      Src: /src/postgres/src/backend/access/common/reloptions.c:1723,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1727,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1729,1
    - Dst: parse_int
      Src: /src/postgres/src/backend/access/common/reloptions.c:1737,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1739,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1740,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1741,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1745,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1746,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1747,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/common/reloptions.c:1749,1
    - Dst: parse_real
      Src: /src/postgres/src/backend/access/common/reloptions.c:1757,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1759,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1761,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1765,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1766,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1767,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/common/reloptions.c:1769,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1781,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1789,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1790,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1791,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/common/reloptions.c:1794,1
    - Dst: _
      Src: /src/postgres/src/backend/access/common/reloptions.c:1794,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/reloptions.c:1816,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:1824,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 69
    argCount: 4
    argNames:
    - option
    - text_str
    - text_len
    - validate
    argTypes:
    - relopt_value*
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1825
      start: 1687
    functionDepth: 2
    functionLinenumber: 1687
    functionLinenumberEnd: 1825
    functionName: parse_one_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - elog
    - pg_strcasecmp
    - memcpy
    - _
    - errcode
    - errdetail
    - pfree
    - ereport
    - parse_bool
    - parse_int
    - errmsg
    - parse_real
    - palloc
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: "void parse_one_reloption(relopt_value *option, char *text_str, int
      text_len,\n\t\t\t\t\tbool validate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: relopt_string*::fill_cb
      Src: /src/postgres/src/backend/access/common/reloptions.c:1853,1
    - Dst: GET_STRING_RELOPTION_LEN
      Src: /src/postgres/src/backend/access/common/reloptions.c:1856,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/reloptions.c:1860,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - base
    - options
    - numoptions
    argTypes:
    - Size
    - relopt_value*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1834
    functionDepth: 1
    functionLinenumber: 1834
    functionLinenumberEnd: 1861
    functionName: allocateReloptStruct
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - GET_STRING_RELOPTION_LEN
    - relopt_string*::fill_cb
    - palloc0
    linkageType: ''
    returnType: void
    signature: 'void *

      allocateReloptStruct(Size base, relopt_value *options, int numoptions)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1890,1
    - Dst: relopt_string*::fill_cb
      Src: /src/postgres/src/backend/access/common/reloptions.c:1934,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/common/reloptions.c:1949,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1951,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/reloptions.c:1955,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/reloptions.c:1964,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1967,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 53
    argCount: 7
    argNames:
    - rdopts
    - basesize
    - options
    - numoptions
    - validate
    - elems
    - numelems
    argTypes:
    - void*
    - Size
    - relopt_value*
    - int
    - bool
    - relopt_parse_elt*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1874
    functionDepth: 2
    functionLinenumber: 1874
    functionLinenumberEnd: 1968
    functionName: fillRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - elog
    - relopt_string*::fill_cb
    - strcmp
    - strlen
    - SET_VARSIZE
    - strcpy
    linkageType: ''
    returnType: void
    signature: "void fillRelOptions(void *rdopts, Size basesize,\n\t\t\t   relopt_value
      *options, int numoptions,\n\t\t\t   bool validate,\n\t\t\t   const relopt_parse_elt
      *elems, int numelems)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2031,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/common/reloptions.c:2033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - reloptions
    - validate
    - kind
    argTypes:
    - Datum
    - bool
    - relopt_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 1974
    functionDepth: 1
    functionLinenumber: 1974
    functionLinenumberEnd: 2034
    functionName: default_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      default_reloptions(Datum reloptions, bool validate, relopt_kind kind)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parseRelOptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2064,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:2065,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:2070,1
    - Dst: allocateReloptStruct
      Src: /src/postgres/src/backend/access/common/reloptions.c:2075,1
    - Dst: fillRelOptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2076,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:2079,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 6
    argNames:
    - reloptions
    - validate
    - kind
    - relopt_struct_size
    - relopt_elems
    - num_relopt_elems
    argTypes:
    - Datum
    - bool
    - relopt_kind
    - Size
    - relopt_parse_elt*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2052
    functionDepth: 4
    functionLinenumber: 2052
    functionLinenumberEnd: 2082
    functionName: build_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 5
    functionsReached:
    - allocateReloptStruct
    - fillRelOptions
    - Assert
    - pfree
    - parseRelOptions
    linkageType: ''
    returnType: void
    signature: "void *\nbuild_reloptions(Datum reloptions, bool validate,\n\t\t\t\t
      relopt_kind kind,\n\t\t\t\t Size relopt_struct_size,\n\t\t\t\t const relopt_parse_elt
      *relopt_elems,\n\t\t\t\t int num_relopt_elems)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/reloptions.c:2092,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/reloptions.c:2093,1
    - Dst: foreach
      Src: /src/postgres/src/backend/access/common/reloptions.c:2099,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:2101,1
    - Dst: parseLocalRelOptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2110,1
    - Dst: allocateReloptStruct
      Src: /src/postgres/src/backend/access/common/reloptions.c:2111,1
    - Dst: fillRelOptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2112,1
    - Dst: foreach
      Src: /src/postgres/src/backend/access/common/reloptions.c:2116,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:2117,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:2120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - relopts
    - options
    - validate
    argTypes:
    - local_relopts*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2123
      start: 2089
    functionDepth: 4
    functionLinenumber: 2089
    functionLinenumberEnd: 2123
    functionName: build_local_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - allocateReloptStruct
    - foreach
    - fillRelOptions
    - pfree
    - parseLocalRelOptions
    - palloc_array
    - lfirst
    - list_length
    linkageType: ''
    returnType: void
    signature: 'void *

      build_local_reloptions(local_relopts *relopts, Datum options, bool validate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:2132,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:2133,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:2134,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/common/reloptions.c:2135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2137
      start: 2128
    functionDepth: 1
    functionLinenumber: 2128
    functionLinenumberEnd: 2137
    functionName: partitioned_table_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - errhint
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      partitioned_table_reloptions(Datum reloptions, bool validate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2154,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/common/reloptions.c:2157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 2142
    functionDepth: 5
    functionLinenumber: 2142
    functionLinenumberEnd: 2158
    functionName: view_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      view_reloptions(Datum reloptions, bool validate)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: default_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2172,1
    - Dst: default_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - relkind
    - reloptions
    - validate
    argTypes:
    - char
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2163
    functionDepth: 2
    functionLinenumber: 2163
    functionLinenumberEnd: 2188
    functionName: heap_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - default_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      heap_reloptions(char relkind, Datum reloptions, bool validate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:2201,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:2204,1
    - Dst: amoptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - amoptions
    - reloptions
    - validate
    argTypes:
    - amoptions_function
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2198
    functionDepth: 1
    functionLinenumber: 2198
    functionLinenumberEnd: 2208
    functionName: index_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - Assert
    - amoptions
    - DatumGetPointer
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      index_reloptions(amoptions_function amoptions, Datum reloptions, bool validate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2221,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/common/reloptions.c:2224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2213
    functionDepth: 5
    functionLinenumber: 2213
    functionLinenumberEnd: 2225
    functionName: attribute_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      attribute_reloptions(Datum reloptions, bool validate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2240,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/common/reloptions.c:2243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2244
      start: 2230
    functionDepth: 5
    functionLinenumber: 2230
    functionLinenumberEnd: 2244
    functionName: tablespace_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      tablespace_reloptions(Datum reloptions, bool validate)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initialize_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2262,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:2266,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:2271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - defList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2282
      start: 2252
    functionDepth: 2
    functionLinenumber: 2252
    functionLinenumberEnd: 2282
    functionName: AlterTableGetRelOptionsLockLevel
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - lfirst
    - strncmp
    - initialize_reloptions
    linkageType: ''
    returnType: LOCKMODE
    signature: LOCKMODE AlterTableGetRelOptionsLockLevel(List *defList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:2266,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:2271,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2279
      start: 2264
    functionDepth: 1
    functionLinenumber: 2264
    functionLinenumberEnd: 2279
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 25
    functionsReached:
    - lfirst
    - strncmp
    linkageType: ''
    returnType: void
    signature: void foreach(cell, defList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_form_tuple_context
      Src: /src/postgres/src/backend/access/common/indextuple.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tupleDescriptor
    - values
    - isnull
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: index_form_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 4
    functionsReached:
    - index_form_tuple_context
    linkageType: ''
    returnType: IndexTuple
    signature: "IndexTuple index_form_tuple(TupleDesc tupleDescriptor,\n\t\t\t\t const
      Datum *values,\n\t\t\t\t const bool *isnull)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/indextuple.c:87,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/indextuple.c:88,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/indextuple.c:89,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:95,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/common/indextuple.c:108,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:108,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/indextuple.c:111,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/access/common/indextuple.c:111,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:112,1
    - Dst: VARATT_IS_EXTENDED
      Src: /src/postgres/src/backend/access/common/indextuple.c:120,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:120,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/indextuple.c:121,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:121,1
    - Dst: toast_compress_datum
      Src: /src/postgres/src/backend/access/common/indextuple.c:127,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:130,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/indextuple.c:134,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:134,1
    - Dst: IndexInfoFindDataOffset
      Src: /src/postgres/src/backend/access/common/indextuple.c:154,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/common/indextuple.c:156,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/common/indextuple.c:159,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/indextuple.c:163,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/common/indextuple.c:165,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/indextuple.c:184,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:199,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/indextuple.c:207,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/indextuple.c:208,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/indextuple.c:209,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 50
    argCount: 4
    argNames:
    - tupleDescriptor
    - values
    - isnull
    - context
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 64
    functionDepth: 5
    functionLinenumber: 64
    functionLinenumberEnd: 219
    functionName: index_form_tuple_context
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - detoast_external_attr
    - VARSIZE
    - MemoryContextAllocZero
    - errcode
    - VARATT_IS_EXTENDED
    - pfree
    - heap_compute_data_size
    - Assert
    - ereport
    - MAXALIGN
    - VARATT_IS_EXTERNAL
    - errmsg
    - PointerGetDatum
    - toast_compress_datum
    - IndexInfoFindDataOffset
    - TupleDescAttr
    - DatumGetPointer
    linkageType: ''
    returnType: IndexTuple
    signature: "IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor,\n\t\t\t\t\t\t
      const Datum *values,\n\t\t\t\t\t\t const bool *isnull,\n\t\t\t\t\t\t MemoryContext
      context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/common/indextuple.c:240,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:244,1
    - Dst: IndexInfoFindDataOffset
      Src: /src/postgres/src/backend/access/common/indextuple.c:248,1
    - Dst: first_null_attr
      Src: /src/postgres/src/backend/access/common/indextuple.c:259,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/indextuple.c:271,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:272,1
    - Dst: IndexTupleHasVarwidths
      Src: /src/postgres/src/backend/access/common/indextuple.c:287,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:292,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:294,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:304,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/indextuple.c:306,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:309,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:311,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:315,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:327,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:335,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/indextuple.c:337,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:342,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:343,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:348,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:349,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/access/common/indextuple.c:351,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 3
    argNames:
    - tup
    - attnum
    - tupleDesc
    argTypes:
    - IndexTuple
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 352
    functionName: nocache_index_getattr
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - att_addlength_pointer
    - Assert
    - TupleDescCompactAttr
    - att_pointer_alignby
    - fetchatt
    - att_nominal_alignby
    - first_null_attr
    - IndexTupleHasNulls
    - IndexInfoFindDataOffset
    - Min
    - att_isnull
    - IndexTupleHasVarwidths
    linkageType: ''
    returnType: Datum
    signature: "Datum nocache_index_getattr(IndexTuple tup,\n\t\t\t\t\t  int attnum,\n\t\t\t\t\t
      \ TupleDesc tupleDesc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IndexInfoFindDataOffset
      Src: /src/postgres/src/backend/access/common/indextuple.c:373,1
    - Dst: index_deform_tuple_internal
      Src: /src/postgres/src/backend/access/common/indextuple.c:375,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/common/indextuple.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - tup
    - tupleDescriptor
    - values
    - isnull
    argTypes:
    - IndexTuple
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 377
    functionName: index_deform_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - index_deform_tuple_internal
    - IndexTupleHasNulls
    - IndexInfoFindDataOffset
    linkageType: ''
    returnType: void
    signature: "void index_deform_tuple(IndexTuple tup, TupleDesc tupleDescriptor,\n\t\t\t\t
      \  Datum *values, bool *isnull)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:399,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:402,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/indextuple.c:404,1
    - Dst: first_null_attr
      Src: /src/postgres/src/backend/access/common/indextuple.c:408,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/indextuple.c:409,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:424,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:427,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:428,1
    - Dst: fetch_att_noerr
      Src: /src/postgres/src/backend/access/common/indextuple.c:432,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:442,1
    - Dst: align_fetch_then_add
      Src: /src/postgres/src/backend/access/common/indextuple.c:445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:454,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/indextuple.c:456,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:464,1
    - Dst: align_fetch_then_add
      Src: /src/postgres/src/backend/access/common/indextuple.c:467,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 6
    argNames:
    - tupleDescriptor
    - values
    - isnull
    - tp
    - bp
    - hasnulls
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    - char*
    - uint8*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 386
    functionDepth: 5
    functionLinenumber: 386
    functionLinenumberEnd: 473
    functionName: index_deform_tuple_internal
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - Assert
    - TupleDescCompactAttr
    - align_fetch_then_add
    - att_nominal_alignby
    - first_null_attr
    - Min
    - att_isnull
    - fetch_att_noerr
    linkageType: ''
    returnType: void
    signature: "void index_deform_tuple_internal(TupleDesc tupleDescriptor,\n\t\t\t\t\t\t\tDatum
      *values, bool *isnull,\n\t\t\t\t\t\t\tchar *tp, uint8 *bp, int hasnulls)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/common/indextuple.c:484,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/indextuple.c:485,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/indextuple.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - source
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 488
    functionName: CopyIndexTuple
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 11
    functionsReached:
    - palloc
    - memcpy
    - IndexTupleSize
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple CopyIndexTuple(IndexTuple source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:516,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/common/indextuple.c:520,1
    - Dst: CreateTupleDescTruncatedCopy
      Src: /src/postgres/src/backend/access/common/indextuple.c:523,1
    - Dst: index_deform_tuple
      Src: /src/postgres/src/backend/access/common/indextuple.c:526,1
    - Dst: index_form_tuple
      Src: /src/postgres/src/backend/access/common/indextuple.c:527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:529,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/common/indextuple.c:529,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/common/indextuple.c:529,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/indextuple.c:535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - sourceDescriptor
    - source
    - leavenatts
    argTypes:
    - TupleDesc
    - IndexTuple
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 507
    functionDepth: 5
    functionLinenumber: 507
    functionLinenumberEnd: 538
    functionName: index_truncate_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - Assert
    - pfree
    - CreateTupleDescTruncatedCopy
    - index_deform_tuple
    - CopyIndexTuple
    - index_form_tuple
    - IndexTupleSize
    linkageType: ''
    returnType: IndexTuple
    signature: "IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor, IndexTuple
      source,\n\t\t\t\t\t int leavenatts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: WORDNUM
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WORDNUM(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: BITNUM
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITNUM(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: WORDS_PER_PAGE
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WORDS_PER_PAGE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: RT_VARLEN_VALUE_SIZE
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_VARLEN_VALUE_SIZE(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: RT_VARLEN_VALUE_SIZE
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RT_VARLEN_VALUE_SIZE(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ts
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    functionName: TidStoreIsShared
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TidStoreIsShared(ts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/common/tidstore.c:169,1
    - Dst: BumpContextCreate
      Src: /src/postgres/src/backend/access/common/tidstore.c:181,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/common/tidstore.c:189,1
    - Dst: local_ts_create
      Src: /src/postgres/src/backend/access/common/tidstore.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - max_bytes
    - insert_only
    argTypes:
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 199
    functionName: TidStoreCreateLocal
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 3
    functionsReached:
    - palloc0_object
    - BumpContextCreate
    - local_ts_create
    - AllocSetContextCreate
    linkageType: ''
    returnType: TidStore
    signature: 'TidStore *

      TidStoreCreateLocal(size_t max_bytes, bool insert_only)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/common/tidstore.c:215,1
    - Dst: dsa_create_ext
      Src: /src/postgres/src/backend/access/common/tidstore.c:230,1
    - Dst: shared_ts_create
      Src: /src/postgres/src/backend/access/common/tidstore.c:231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - max_bytes
    - tranche_id
    argTypes:
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 235
    functionName: TidStoreCreateShared
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 1
    functionsReached:
    - shared_ts_create
    - palloc0_object
    - dsa_create_ext
    linkageType: ''
    returnType: TidStore
    signature: 'TidStore *

      TidStoreCreateShared(size_t max_bytes, int tranche_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tidstore.c:249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tidstore.c:250,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/access/common/tidstore.c:250,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/common/tidstore.c:253,1
    - Dst: dsa_attach
      Src: /src/postgres/src/backend/access/common/tidstore.c:255,1
    - Dst: shared_ts_attach
      Src: /src/postgres/src/backend/access/common/tidstore.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - area_handle
    - handle
    argTypes:
    - dsa_handle
    - dsa_pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 262
    functionName: TidStoreAttach
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - DsaPointerIsValid
    - Assert
    - dsa_attach
    - shared_ts_attach
    linkageType: ''
    returnType: TidStore
    signature: 'TidStore *

      TidStoreAttach(dsa_handle area_handle, dsa_pointer handle)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tidstore.c:271,1
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:271,1
    - Dst: shared_ts_detach
      Src: /src/postgres/src/backend/access/common/tidstore.c:273,1
    - Dst: dsa_detach
      Src: /src/postgres/src/backend/access/common/tidstore.c:274,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tidstore.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TidStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 277
    functionName: TidStoreDetach
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    - dsa_detach
    - TidStoreIsShared
    - shared_ts_detach
    linkageType: ''
    returnType: void
    signature: void TidStoreDetach(TidStore *ts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:289,1
    - Dst: shared_ts_lock_exclusive
      Src: /src/postgres/src/backend/access/common/tidstore.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TidStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 291
    functionName: TidStoreLockExclusive
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 1
    functionsReached:
    - shared_ts_lock_exclusive
    - TidStoreIsShared
    linkageType: ''
    returnType: void
    signature: void TidStoreLockExclusive(TidStore *ts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:296,1
    - Dst: shared_ts_lock_share
      Src: /src/postgres/src/backend/access/common/tidstore.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TidStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 298
    functionName: TidStoreLockShare
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 1
    functionsReached:
    - TidStoreIsShared
    - shared_ts_lock_share
    linkageType: ''
    returnType: void
    signature: void TidStoreLockShare(TidStore *ts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:303,1
    - Dst: shared_ts_unlock
      Src: /src/postgres/src/backend/access/common/tidstore.c:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TidStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 305
    functionName: TidStoreUnlock
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 2
    functionsReached:
    - shared_ts_unlock
    - TidStoreIsShared
    linkageType: ''
    returnType: void
    signature: void TidStoreUnlock(TidStore *ts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:320,1
    - Dst: shared_ts_free
      Src: /src/postgres/src/backend/access/common/tidstore.c:322,1
    - Dst: dsa_detach
      Src: /src/postgres/src/backend/access/common/tidstore.c:323,1
    - Dst: local_ts_free
      Src: /src/postgres/src/backend/access/common/tidstore.c:327,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/common/tidstore.c:328,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tidstore.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TidStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 332
    functionName: TidStoreDestroy
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 2
    functionsReached:
    - pfree
    - local_ts_free
    - shared_ts_free
    - dsa_detach
    - TidStoreIsShared
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void TidStoreDestroy(TidStore *ts)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tidstore.c:359,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tidstore.c:363,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/tidstore.c:365,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/tidstore.c:375,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/access/common/tidstore.c:385,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/tidstore.c:396,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/access/common/tidstore.c:401,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tidstore.c:410,1
    - Dst: WORDS_PER_PAGE
      Src: /src/postgres/src/backend/access/common/tidstore.c:410,1
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:413,1
    - Dst: shared_ts_set
      Src: /src/postgres/src/backend/access/common/tidstore.c:414,1
    - Dst: local_ts_set
      Src: /src/postgres/src/backend/access/common/tidstore.c:416,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 4
    argNames:
    - ts
    - blkno
    - offsets
    - num_offsets
    argTypes:
    - TidStore*
    - BlockNumber
    - OffsetNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 417
    functionName: TidStoreSetBlockOffsets
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 2
    functionsReached:
    - elog
    - shared_ts_set
    - Assert
    - WORDNUM
    - local_ts_set
    - TidStoreIsShared
    - BITNUM
    - memset
    - WORDS_PER_PAGE
    linkageType: ''
    returnType: void
    signature: "void TidStoreSetBlockOffsets(TidStore *ts, BlockNumber blkno, OffsetNumber
      *offsets,\n\t\t\t\t\t\tint num_offsets)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/common/tidstore.c:426,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/common/tidstore.c:427,1
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:429,1
    - Dst: shared_ts_find
      Src: /src/postgres/src/backend/access/common/tidstore.c:430,1
    - Dst: local_ts_find
      Src: /src/postgres/src/backend/access/common/tidstore.c:432,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/access/common/tidstore.c:450,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/access/common/tidstore.c:451,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - ts
    - tid
    argTypes:
    - TidStore*
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 420
    functionDepth: 3
    functionLinenumber: 420
    functionLinenumberEnd: 459
    functionName: TidStoreIsMember
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 1
    functionsReached:
    - local_ts_find
    - shared_ts_find
    - WORDNUM
    - TidStoreIsShared
    - BITNUM
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: bool
    signature: bool TidStoreIsMember(TidStore *ts, const ItemPointerData *tid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/common/tidstore.c:475,1
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:478,1
    - Dst: shared_ts_begin_iterate
      Src: /src/postgres/src/backend/access/common/tidstore.c:479,1
    - Dst: local_ts_begin_iterate
      Src: /src/postgres/src/backend/access/common/tidstore.c:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TidStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 484
    functionName: TidStoreBeginIterate
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - local_ts_begin_iterate
    - TidStoreIsShared
    - shared_ts_begin_iterate
    linkageType: ''
    returnType: TidStoreIter
    signature: 'TidStoreIter *

      TidStoreBeginIterate(TidStore *ts)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:498,1
    - Dst: shared_ts_iterate_next
      Src: /src/postgres/src/backend/access/common/tidstore.c:499,1
    - Dst: local_ts_iterate_next
      Src: /src/postgres/src/backend/access/common/tidstore.c:501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - iter
    argTypes:
    - TidStoreIter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 510
    functionName: TidStoreIterateNext
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 2
    functionsReached:
    - shared_ts_iterate_next
    - TidStoreIsShared
    - local_ts_iterate_next
    linkageType: ''
    returnType: TidStoreIterResult
    signature: 'TidStoreIterResult *

      TidStoreIterateNext(TidStoreIter *iter)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:520,1
    - Dst: shared_ts_end_iterate
      Src: /src/postgres/src/backend/access/common/tidstore.c:521,1
    - Dst: local_ts_end_iterate
      Src: /src/postgres/src/backend/access/common/tidstore.c:523,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tidstore.c:525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - iter
    argTypes:
    - TidStoreIter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 526
    functionName: TidStoreEndIterate
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 2
    functionsReached:
    - pfree
    - shared_ts_end_iterate
    - TidStoreIsShared
    - local_ts_end_iterate
    linkageType: ''
    returnType: void
    signature: void TidStoreEndIterate(TidStoreIter *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:534,1
    - Dst: shared_ts_memory_usage
      Src: /src/postgres/src/backend/access/common/tidstore.c:535,1
    - Dst: local_ts_memory_usage
      Src: /src/postgres/src/backend/access/common/tidstore.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TidStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 538
    functionName: TidStoreMemoryUsage
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 7
    functionsReached:
    - local_ts_memory_usage
    - TidStoreIsShared
    - shared_ts_memory_usage
    linkageType: ''
    returnType: size_t
    signature: size_t TidStoreMemoryUsage(TidStore *ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tidstore.c:546,1
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TidStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 549
    functionName: TidStoreGetDSA
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 1
    functionsReached:
    - Assert
    - TidStoreIsShared
    linkageType: ''
    returnType: dsa_area
    signature: 'dsa_area *

      TidStoreGetDSA(TidStore *ts)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tidstore.c:554,1
    - Dst: TidStoreIsShared
      Src: /src/postgres/src/backend/access/common/tidstore.c:554,1
    - Dst: shared_ts_get_handle
      Src: /src/postgres/src/backend/access/common/tidstore.c:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TidStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 557
    functionName: TidStoreGetHandle
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 0
    functionsReached:
    - Assert
    - shared_ts_get_handle
    - TidStoreIsShared
    linkageType: ''
    returnType: dsa_pointer
    signature: dsa_pointer TidStoreGetHandle(TidStore *ts)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - result
    - offsets
    - max_offsets
    argTypes:
    - TidStoreIterResult*
    - OffsetNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 609
    functionName: TidStoreGetBlockOffsets
    functionSourceFile: /src/postgres/src/backend/access/common/tidstore.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int TidStoreGetBlockOffsets(TidStoreIterResult *result,\n\t\t\t\t\t\tOffsetNumber
      *offsets,\n\t\t\t\t\t\tint max_offsets)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/common/attmap.c:44,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/common/attmap.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - maplen
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 48
    functionName: make_attrmap
    functionSourceFile: /src/postgres/src/backend/access/common/attmap.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - palloc0_array
    linkageType: ''
    returnType: AttrMap
    signature: 'AttrMap *

      make_attrmap(int maplen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/attmap.c:58,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/attmap.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - map
    argTypes:
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: free_attrmap
    functionSourceFile: /src/postgres/src/backend/access/common/attmap.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void free_attrmap(AttrMap *map)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: make_attrmap
      Src: /src/postgres/src/backend/access/common/attmap.c:92,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/attmap.c:99,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/attmap.c:106,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/attmap.c:115,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/attmap.c:116,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/common/attmap.c:117,1
    - Dst: _
      Src: /src/postgres/src/backend/access/common/attmap.c:117,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/common/attmap.c:118,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/access/common/attmap.c:119,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/access/common/attmap.c:121,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/attmap.c:123,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/attmap.c:136,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/attmap.c:144,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/attmap.c:145,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/common/attmap.c:146,1
    - Dst: _
      Src: /src/postgres/src/backend/access/common/attmap.c:146,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/common/attmap.c:147,1
    - Dst: check_attrmap_match
      Src: /src/postgres/src/backend/access/common/attmap.c:152,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/access/common/attmap.c:155,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 3
    argNames:
    - indesc
    - outdesc
    - msg
    argTypes:
    - TupleDesc
    - TupleDesc
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 160
    functionName: build_attrmap_by_position
    functionSourceFile: /src/postgres/src/backend/access/common/attmap.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - _
    - errcode
    - check_attrmap_match
    - ereport
    - format_type_with_typemod
    - free_attrmap
    - make_attrmap
    - NameStr
    - errdetail
    - TupleDescCompactAttr
    - TupleDescAttr
    linkageType: ''
    returnType: AttrMap
    signature: "AttrMap *\nbuild_attrmap_by_position(TupleDesc indesc,\n\t\t\t\t\t\t
      \ TupleDesc outdesc,\n\t\t\t\t\t\t  const char *msg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: make_attrmap
      Src: /src/postgres/src/backend/access/common/attmap.c:188,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/attmap.c:191,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/attmap.c:199,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/attmap.c:222,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/attmap.c:225,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/attmap.c:225,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/attmap.c:229,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/attmap.c:230,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/attmap.c:231,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/common/attmap.c:232,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/common/attmap.c:234,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/common/attmap.c:235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/attmap.c:241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/attmap.c:242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/attmap.c:243,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/common/attmap.c:244,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/common/attmap.c:246,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/common/attmap.c:247,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 3
    argNames:
    - indesc
    - outdesc
    - missing_ok
    argTypes:
    - TupleDesc
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 250
    functionName: build_attrmap_by_name
    functionSourceFile: /src/postgres/src/backend/access/common/attmap.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - strcmp
    - errcode
    - ereport
    - make_attrmap
    - NameStr
    - errmsg
    - errdetail
    - TupleDescAttr
    linkageType: ''
    returnType: AttrMap
    signature: "AttrMap *\nbuild_attrmap_by_name(TupleDesc indesc,\n\t\t\t\t\t  TupleDesc
      outdesc,\n\t\t\t\t\t  bool missing_ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/access/common/attmap.c:268,1
    - Dst: check_attrmap_match
      Src: /src/postgres/src/backend/access/common/attmap.c:271,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/access/common/attmap.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - indesc
    - outdesc
    - missing_ok
    argTypes:
    - TupleDesc
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 260
    functionDepth: 3
    functionLinenumber: 260
    functionLinenumberEnd: 279
    functionName: build_attrmap_by_name_if_req
    functionSourceFile: /src/postgres/src/backend/access/common/attmap.c
    functionUses: 0
    functionsReached:
    - check_attrmap_match
    - build_attrmap_by_name
    - free_attrmap
    linkageType: ''
    returnType: AttrMap
    signature: "AttrMap *\nbuild_attrmap_by_name_if_req(TupleDesc indesc,\n\t\t\t\t\t\t\t
      TupleDesc outdesc,\n\t\t\t\t\t\t\t bool missing_ok)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/attmap.c:300,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/attmap.c:312,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 3
    argNames:
    - indesc
    - outdesc
    - attrMap
    argTypes:
    - TupleDesc
    - TupleDesc
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 329
    functionName: check_attrmap_match
    functionSourceFile: /src/postgres/src/backend/access/common/attmap.c
    functionUses: 2
    functionsReached:
    - TupleDescCompactAttr
    linkageType: ''
    returnType: bool
    signature: "bool check_attrmap_match(TupleDesc indesc,\n\t\t\t\t\tTupleDesc outdesc,\n\t\t\t\t\tAttrMap
      *attrMap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - method
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: NO_COMPRESSION_SUPPORT
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NO_COMPRESSION_SUPPORT(method)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/common/toast_compression.c:46,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/toast_compression.c:60,1
    - Dst: PGLZ_MAX_OUTPUT
      Src: /src/postgres/src/backend/access/common/toast_compression.c:60,1
    - Dst: pglz_compress
      Src: /src/postgres/src/backend/access/common/toast_compression.c:63,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/common/toast_compression.c:63,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/toast_compression.c:69,1
    - Dst: SET_VARSIZE_COMPRESSED
      Src: /src/postgres/src/backend/access/common/toast_compression.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - value
    argTypes:
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 39
    functionDepth: 4
    functionLinenumber: 39
    functionLinenumberEnd: 76
    functionName: pglz_compress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 1
    functionsReached:
    - pfree
    - SET_VARSIZE_COMPRESSED
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PGLZ_MAX_OUTPUT
    - pglz_compress
    - palloc
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      pglz_compress_datum(const varlena *value)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/toast_compression.c:88,1
    - Dst: VARDATA_COMPRESSED_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:88,1
    - Dst: pglz_decompress
      Src: /src/postgres/src/backend/access/common/toast_compression.c:91,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:92,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_compression.c:93,1
    - Dst: VARDATA_COMPRESSED_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:94,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/toast_compression.c:96,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/toast_compression.c:97,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/common/toast_compression.c:98,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - value
    argTypes:
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 103
    functionName: pglz_decompress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 1
    functionsReached:
    - VARSIZE
    - VARDATA_COMPRESSED_GET_EXTSIZE
    - errmsg_internal
    - errcode
    - pglz_decompress
    - ereport
    - VARDATA
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      pglz_decompress_datum(const varlena *value)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/toast_compression.c:116,1
    - Dst: pglz_decompress
      Src: /src/postgres/src/backend/access/common/toast_compression.c:119,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:120,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_compression.c:121,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/toast_compression.c:124,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/toast_compression.c:125,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/common/toast_compression.c:126,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - value
    - slicelength
    argTypes:
    - varlena*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 131
    functionName: pglz_decompress_datum_slice
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 1
    functionsReached:
    - VARSIZE
    - errmsg_internal
    - errcode
    - pglz_decompress
    - ereport
    - VARDATA
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: varlena
    signature: "varlena *\npglz_decompress_datum_slice(const varlena *value,\n\t\t\t\t\t\t\tint32
      slicelength)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NO_COMPRESSION_SUPPORT
      Src: /src/postgres/src/backend/access/common/toast_compression.c:142,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/common/toast_compression.c:150,1
    - Dst: LZ4_compressBound
      Src: /src/postgres/src/backend/access/common/toast_compression.c:156,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/toast_compression.c:157,1
    - Dst: LZ4_compress_default
      Src: /src/postgres/src/backend/access/common/toast_compression.c:159,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/common/toast_compression.c:159,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/toast_compression.c:163,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/toast_compression.c:168,1
    - Dst: SET_VARSIZE_COMPRESSED
      Src: /src/postgres/src/backend/access/common/toast_compression.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - value
    argTypes:
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 138
    functionDepth: 4
    functionLinenumber: 138
    functionLinenumberEnd: 176
    functionName: lz4_compress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 1
    functionsReached:
    - elog
    - LZ4_compressBound
    - pfree
    - SET_VARSIZE_COMPRESSED
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - palloc
    - NO_COMPRESSION_SUPPORT
    - LZ4_compress_default
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      lz4_compress_datum(const varlena *value)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NO_COMPRESSION_SUPPORT
      Src: /src/postgres/src/backend/access/common/toast_compression.c:185,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/toast_compression.c:192,1
    - Dst: VARDATA_COMPRESSED_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:192,1
    - Dst: LZ4_decompress_safe
      Src: /src/postgres/src/backend/access/common/toast_compression.c:195,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_compression.c:196,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:197,1
    - Dst: VARDATA_COMPRESSED_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:198,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/toast_compression.c:200,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/toast_compression.c:201,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/common/toast_compression.c:202,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - value
    argTypes:
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 209
    functionName: lz4_decompress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 1
    functionsReached:
    - VARSIZE
    - VARDATA_COMPRESSED_GET_EXTSIZE
    - errmsg_internal
    - errcode
    - ereport
    - LZ4_decompress_safe
    - VARDATA
    - palloc
    - SET_VARSIZE
    - NO_COMPRESSION_SUPPORT
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      lz4_decompress_datum(const varlena *value)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NO_COMPRESSION_SUPPORT
      Src: /src/postgres/src/backend/access/common/toast_compression.c:218,1
    - Dst: LZ4_versionNumber
      Src: /src/postgres/src/backend/access/common/toast_compression.c:225,1
    - Dst: lz4_decompress_datum
      Src: /src/postgres/src/backend/access/common/toast_compression.c:226,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/toast_compression.c:229,1
    - Dst: LZ4_decompress_safe_partial
      Src: /src/postgres/src/backend/access/common/toast_compression.c:232,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_compression.c:233,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:234,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/toast_compression.c:238,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/toast_compression.c:239,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/common/toast_compression.c:240,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_compression.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - value
    - slicelength
    argTypes:
    - varlena*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 214
    functionDepth: 3
    functionLinenumber: 214
    functionLinenumberEnd: 246
    functionName: lz4_decompress_datum_slice
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 1
    functionsReached:
    - lz4_decompress_datum
    - VARSIZE
    - errmsg_internal
    - errcode
    - ereport
    - LZ4_decompress_safe_partial
    - LZ4_versionNumber
    - VARDATA
    - palloc
    - SET_VARSIZE
    - NO_COMPRESSION_SUPPORT
    linkageType: ''
    returnType: varlena
    signature: 'varlena *

      lz4_decompress_datum_slice(const varlena *value, int32 slicelength)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/toast_compression.c:263,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/toast_compression.c:267,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/toast_compression.c:269,1
    - Dst: VARATT_EXTERNAL_GET_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/toast_compression.c:270,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/toast_compression.c:272,1
    - Dst: VARDATA_COMPRESSED_GET_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/toast_compression.c:273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - attr
    argTypes:
    - varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 253
    functionDepth: 3
    functionLinenumber: 253
    functionLinenumberEnd: 276
    functionName: toast_get_compression_id
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 0
    functionsReached:
    - VARDATA_COMPRESSED_GET_COMPRESS_METHOD
    - VARATT_EXTERNAL_IS_COMPRESSED
    - VARATT_EXTERNAL_GET_COMPRESS_METHOD
    - VARATT_EXTERNAL_GET_POINTER
    - VARATT_IS_COMPRESSED
    - VARATT_IS_EXTERNAL_ONDISK
    linkageType: ''
    returnType: ToastCompressionId
    signature: ToastCompressionId toast_get_compression_id(varlena *attr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/toast_compression.c:287,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/toast_compression.c:289,1
    - Dst: NO_COMPRESSION_SUPPORT
      Src: /src/postgres/src/backend/access/common/toast_compression.c:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - compression
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 298
    functionName: CompressionNameToMethod
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 0
    functionsReached:
    - NO_COMPRESSION_SUPPORT
    - strcmp
    linkageType: ''
    returnType: char
    signature: char CompressionNameToMethod(const char *compression)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/toast_compression.c:313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - method
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 316
    functionName: GetCompressionMethodName
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: char
    signature: 'char *

      GetCompressionMethodName(char method)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: build_attrmap_by_position
      Src: /src/postgres/src/backend/access/common/tupconvert.c:69,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/common/tupconvert.c:78,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/tupconvert.c:84,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/tupconvert.c:85,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/tupconvert.c:87,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/tupconvert.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - indesc
    - outdesc
    - msg
    argTypes:
    - TupleDesc
    - TupleDesc
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 59
    functionDepth: 3
    functionLinenumber: 59
    functionLinenumberEnd: 93
    functionName: convert_tuples_by_position
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 3
    functionsReached:
    - build_attrmap_by_position
    - palloc_array
    - palloc_object
    linkageType: ''
    returnType: TupleConversionMap
    signature: "TupleConversionMap *\nconvert_tuples_by_position(TupleDesc indesc,\n\t\t\t\t\t\t
      \  TupleDesc outdesc,\n\t\t\t\t\t\t   const char *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/access/common/tupconvert.c:109,1
    - Dst: convert_tuples_by_name_attrmap
      Src: /src/postgres/src/backend/access/common/tupconvert.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - indesc
    - outdesc
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 102
    functionDepth: 4
    functionLinenumber: 102
    functionLinenumberEnd: 118
    functionName: convert_tuples_by_name
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 0
    functionsReached:
    - build_attrmap_by_name_if_req
    - convert_tuples_by_name_attrmap
    linkageType: ''
    returnType: TupleConversionMap
    signature: "TupleConversionMap *\nconvert_tuples_by_name(TupleDesc indesc,\n\t\t\t\t\t
      \  TupleDesc outdesc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupconvert.c:132,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/common/tupconvert.c:135,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/tupconvert.c:140,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/tupconvert.c:141,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/tupconvert.c:143,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/common/tupconvert.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - indesc
    - outdesc
    - attrMap
    argTypes:
    - TupleDesc
    - TupleDesc
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 149
    functionName: convert_tuples_by_name_attrmap
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc_array
    - palloc_object
    linkageType: ''
    returnType: TupleConversionMap
    signature: "TupleConversionMap *\nconvert_tuples_by_name_attrmap(TupleDesc indesc,\n\t\t\t\t\t\t\t
      \  TupleDesc outdesc,\n\t\t\t\t\t\t\t   AttrMap *attrMap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/common/tupconvert.c:169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupconvert.c:174,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/common/tupconvert.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - tuple
    - map
    argTypes:
    - HeapTuple
    - TupleConversionMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 154
    functionDepth: 6
    functionLinenumber: 154
    functionLinenumberEnd: 187
    functionName: execute_attr_map_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 3
    functionsReached:
    - Assert
    - heap_form_tuple
    - heap_deform_tuple
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple execute_attr_map_tuple(HeapTuple tuple, TupleConversionMap
      *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupconvert.c:205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupconvert.c:207,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/access/common/tupconvert.c:212,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/common/tupconvert.c:215,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/access/common/tupconvert.c:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - attrMap
    - in_slot
    - out_slot
    argTypes:
    - AttrMap*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 243
    functionName: execute_attr_map_slot
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecStoreVirtualTuple
    - slot_getallattrs
    - ExecClearTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nexecute_attr_map_slot(AttrMap *attrMap,\n\t\t\t\t\t
      \ TupleTableSlot *in_slot,\n\t\t\t\t\t  TupleTableSlot *out_slot)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/access/common/tupconvert.c:289,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/access/common/tupconvert.c:290,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - attrMap
    - in_cols
    argTypes:
    - AttrMap*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 294
    functionName: execute_attr_map_cols
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 0
    functionsReached:
    - bms_is_member
    - bms_add_member
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      execute_attr_map_cols(AttrMap *attrMap, Bitmapset *in_cols)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/access/common/tupconvert.c:303,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupconvert.c:304,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupconvert.c:305,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupconvert.c:306,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupconvert.c:307,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupconvert.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - map
    argTypes:
    - TupleConversionMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 309
    functionName: free_conversion_map
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 0
    functionsReached:
    - pfree
    - free_attrmap
    linkageType: ''
    returnType: void
    signature: void free_conversion_map(TupleConversionMap *map)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:26,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:38,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:39,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:44,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:52,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:55,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:58,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:61,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:64,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - buf
    - insertData
    argTypes:
    - StringInfo
    - ginxlogRecompressDataLeaf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 69
    functionName: desc_recompress_leaf
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gindesc.c
    functionUses: 0
    functionsReached:
    - SizeOfGinPostingList
    - appendStringInfo
    - SHORTALIGN
    - memcpy
    linkageType: ''
    returnType: void
    signature: void desc_recompress_leaf(StringInfo buf, ginxlogRecompressDataLeaf
      *insertData)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:74,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:75,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:86,1
    - Dst: BlockIdGetBlockNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:95,1
    - Dst: BlockIdGetBlockNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:97,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:99,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:102,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:104,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:107,1
    - Dst: desc_recompress_leaf
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:110,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:116,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:117,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:118,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:119,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:128,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:130,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:134,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:143,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:146,1
    - Dst: desc_recompress_leaf
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:148,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:159,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:161,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:164,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:172,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:174,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:179,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 183
    functionName: gin_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gindesc.c
    functionUses: 0
    functionsReached:
    - desc_recompress_leaf
    - XLogRecGetBlockData
    - BlockIdGetBlockNumber
    - appendStringInfo
    - PostingItemGetBlockNumber
    - XLogRecHasBlockImage
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void gin_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 222
    functionName: gin_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gindesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      gin_identify(uint8 info)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/seqdesc.c:23,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/seqdesc.c:24,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/seqdesc.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: seq_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/seqdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void seq_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 46
    functionName: seq_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/seqdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      seq_identify(uint8 info)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/brindesc.c:22,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/brindesc.c:23,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/brindesc.c:30,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/brindesc.c:37,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/brindesc.c:46,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/brindesc.c:56,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/brindesc.c:62,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/brindesc.c:68,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 71
    functionName: brin_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/brindesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void brin_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 107
    functionName: brin_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/brindesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      brin_identify(uint8 info)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/committsdesc.c:23,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/committsdesc.c:24,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/committsdesc.c:30,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/committsdesc.c:31,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/committsdesc.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 40
    functionName: commit_ts_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/committsdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - memcpy
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void commit_ts_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 54
    functionName: commit_ts_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/committsdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      commit_ts_identify(uint8 info)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/smgrdesc.c:23,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/smgrdesc.c:24,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/smgrdesc.c:30,1
    - Dst: relpathperm
      Src: /src/postgres/src/backend/access/rmgrdesc/smgrdesc.c:31,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/smgrdesc.c:37,1
    - Dst: relpathperm
      Src: /src/postgres/src/backend/access/rmgrdesc/smgrdesc.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 41
    functionName: smgr_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/smgrdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - relpathperm
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void smgr_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 59
    functionName: smgr_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/smgrdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      smgr_identify(uint8 info)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - buf
    - xlrec
    argTypes:
    - StringInfo
    - gistxlogPageUpdate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: out_gistxlogPageUpdate
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void out_gistxlogPageUpdate(StringInfo buf, gistxlogPageUpdate *xlrec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:28,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:31,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - xlrec
    argTypes:
    - StringInfo
    - gistxlogPageReuse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 25
    functionDepth: 2
    functionLinenumber: 25
    functionLinenumberEnd: 34
    functionName: out_gistxlogPageReuse
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - XidFromFullTransactionId
    - EpochFromFullTransactionId
    linkageType: ''
    returnType: void
    signature: void out_gistxlogPageReuse(StringInfo buf, gistxlogPageReuse *xlrec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - xlrec
    argTypes:
    - StringInfo
    - gistxlogDelete*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 42
    functionName: out_gistxlogDelete
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void out_gistxlogDelete(StringInfo buf, gistxlogDelete *xlrec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - xlrec
    argTypes:
    - StringInfo
    - gistxlogPageSplit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: out_gistxlogPageSplit
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void out_gistxlogPageSplit(StringInfo buf, gistxlogPageSplit *xlrec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:54,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:55,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - xlrec
    argTypes:
    - StringInfo
    - gistxlogPageDelete*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 58
    functionName: out_gistxlogPageDelete
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - XidFromFullTransactionId
    - EpochFromFullTransactionId
    linkageType: ''
    returnType: void
    signature: void out_gistxlogPageDelete(StringInfo buf, gistxlogPageDelete *xlrec)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:63,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:64,1
    - Dst: out_gistxlogPageUpdate
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:69,1
    - Dst: out_gistxlogPageReuse
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:72,1
    - Dst: out_gistxlogDelete
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:75,1
    - Dst: out_gistxlogPageSplit
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:78,1
    - Dst: out_gistxlogPageDelete
      Src: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c:81,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 84
    functionName: gist_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c
    functionUses: 0
    functionsReached:
    - out_gistxlogPageUpdate
    - XLogRecGetData
    - out_gistxlogPageSplit
    - out_gistxlogPageDelete
    - out_gistxlogPageReuse
    - XLogRecGetInfo
    - out_gistxlogDelete
    linkageType: ''
    returnType: void
    signature: void gist_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 111
    functionName: gist_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      gist_identify(uint8 info)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/logicalmsgdesc.c:21,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/logicalmsgdesc.c:22,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/logicalmsgdesc.c:31,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/logicalmsgdesc.c:33,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/logicalmsgdesc.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 18
    functionDepth: 2
    functionLinenumber: 18
    functionLinenumberEnd: 43
    functionName: logicalmsg_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/logicalmsgdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendStringInfo
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void logicalmsg_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: logicalmsg_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/logicalmsgdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      logicalmsg_identify(uint8 info)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:39,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:119,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:120,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:131,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 51
    argCount: 3
    argNames:
    - info
    - xlrec
    - parsed
    argTypes:
    - uint8
    - xl_xact_commit*
    - xl_xact_parsed_commit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 138
    functionName: ParseCommitRecord
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - strlen
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: void ParseCommitRecord(uint8 info, xl_xact_commit *xlrec, xl_xact_parsed_commit
      *parsed)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:145,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:214,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:215,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:226,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 45
    argCount: 3
    argNames:
    - info
    - xlrec
    - parsed
    argTypes:
    - uint8
    - xl_xact_abort*
    - xl_xact_parsed_abort*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 233
    functionName: ParseAbortRecord
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - strlen
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: void ParseAbortRecord(uint8 info, xl_xact_abort *xlrec, xl_xact_parsed_abort
      *parsed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:243,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:245,1
    - Dst: strncpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:259,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:260,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:263,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:266,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:269,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:272,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:275,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 3
    argNames:
    - info
    - xlrec
    - parsed
    argTypes:
    - uint8
    - xl_xact_prepare*
    - xl_xact_parsed_prepare*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 279
    functionName: ParsePrepareRecord
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    - memset
    - strncpy
    linkageType: ''
    returnType: void
    signature: void ParsePrepareRecord(uint8 info, xl_xact_prepare *xlrec, xl_xact_parsed_prepare
      *parsed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:289,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:292,1
    - Dst: relpathperm
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - buf
    - label
    - nrels
    - xlocators
    argTypes:
    - StringInfo
    - char*
    - int
    - RelFileLocator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 296
    functionName: xact_desc_relations
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - relpathperm
    linkageType: ''
    returnType: void
    signature: "void xact_desc_relations(StringInfo buf, char *label, int nrels,\n\t\t\t\t\tRelFileLocator
      *xlocators)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:305,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - nsubxacts
    - subxacts
    argTypes:
    - StringInfo
    - int
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 309
    functionName: xact_desc_subxacts
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void xact_desc_subxacts(StringInfo buf, int nsubxacts, TransactionId
      *subxacts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:319,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - buf
    - label
    - ndropped
    - dropped_stats
    argTypes:
    - StringInfo
    - char*
    - int
    - xl_xact_stats_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 331
    functionName: xact_desc_stats
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: "void xact_desc_stats(StringInfo buf, const char *label,\n\t\t\t\tint
      ndropped, xl_xact_stats_item *dropped_stats)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:338,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:341,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:342,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:344,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:344,1
    - Dst: xact_desc_relations
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:346,1
    - Dst: xact_desc_subxacts
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:347,1
    - Dst: xact_desc_stats
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:348,1
    - Dst: standby_desc_invalidations
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:350,1
    - Dst: XactCompletionRelcacheInitFileInval
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:352,1
    - Dst: XactCompletionApplyFeedback
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:354,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:355,1
    - Dst: XactCompletionForceSyncCommit
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:357,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:358,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:362,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:364,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:365,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - buf
    - info
    - xlrec
    - origin_id
    argTypes:
    - StringInfo
    - uint8
    - xl_xact_commit*
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 367
    functionName: xact_desc_commit
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - standby_desc_invalidations
    - appendStringInfo
    - appendStringInfoString
    - LSN_FORMAT_ARGS
    - xact_desc_subxacts
    - timestamptz_to_str
    - xact_desc_stats
    - XactCompletionApplyFeedback
    - XactCompletionForceSyncCommit
    - xact_desc_relations
    - ParseCommitRecord
    - TransactionIdIsValid
    - XactCompletionRelcacheInitFileInval
    linkageType: ''
    returnType: void
    signature: void xact_desc_commit(StringInfo buf, uint8 info, xl_xact_commit *xlrec,
      ReplOriginId origin_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:374,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:377,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:378,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:380,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:380,1
    - Dst: xact_desc_relations
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:382,1
    - Dst: xact_desc_subxacts
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:383,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:387,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:389,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:390,1
    - Dst: xact_desc_stats
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - buf
    - info
    - xlrec
    - origin_id
    argTypes:
    - StringInfo
    - uint8
    - xl_xact_abort*
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 369
    functionDepth: 3
    functionLinenumber: 369
    functionLinenumberEnd: 394
    functionName: xact_desc_abort
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - ParseAbortRecord
    - appendStringInfo
    - appendStringInfoString
    - LSN_FORMAT_ARGS
    - xact_desc_subxacts
    - timestamptz_to_str
    - xact_desc_stats
    - xact_desc_relations
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void xact_desc_abort(StringInfo buf, uint8 info, xl_xact_abort *xlrec,
      ReplOriginId origin_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ParsePrepareRecord
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:401,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:403,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:404,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:404,1
    - Dst: xact_desc_relations
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:406,1
    - Dst: xact_desc_relations
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:407,1
    - Dst: xact_desc_stats
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:409,1
    - Dst: xact_desc_stats
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:410,1
    - Dst: xact_desc_subxacts
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:411,1
    - Dst: standby_desc_invalidations
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:413,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:421,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:423,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - buf
    - info
    - xlrec
    - origin_id
    argTypes:
    - StringInfo
    - uint8
    - xl_xact_prepare*
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 396
    functionDepth: 3
    functionLinenumber: 396
    functionLinenumberEnd: 425
    functionName: xact_desc_prepare
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - standby_desc_invalidations
    - appendStringInfo
    - appendStringInfoString
    - xact_desc_stats
    - timestamptz_to_str
    - xact_desc_subxacts
    - ParsePrepareRecord
    - xact_desc_relations
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void xact_desc_prepare(StringInfo buf, uint8 info, xl_xact_prepare
      *xlrec, ReplOriginId origin_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:432,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - xlrec
    argTypes:
    - StringInfo
    - xl_xact_assignment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 427
    functionDepth: 2
    functionLinenumber: 427
    functionLinenumberEnd: 436
    functionName: xact_desc_assignment
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void xact_desc_assignment(StringInfo buf, xl_xact_assignment *xlrec)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:441,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:442,1
    - Dst: xact_desc_commit
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:448,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:448,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:449,1
    - Dst: xact_desc_abort
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:455,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:455,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:456,1
    - Dst: xact_desc_prepare
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:462,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:462,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:463,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:474,1
    - Dst: xact_desc_assignment
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:475,1
    - Dst: standby_desc_invalidations
      Src: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c:481,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 438
    functionDepth: 4
    functionLinenumber: 438
    functionLinenumberEnd: 484
    functionName: xact_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached:
    - standby_desc_invalidations
    - appendStringInfo
    - xact_desc_abort
    - xact_desc_commit
    - xact_desc_prepare
    - xact_desc_assignment
    - XLogRecGetOrigin
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void xact_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 517
    functionName: xact_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xactdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      xact_identify(uint8 info)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:22,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:23,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:31,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:41,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:48,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:55,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:63,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:75,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:83,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:92,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:104,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:113,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:121,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 128
    functionName: hash_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void hash_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 178
    functionName: hash_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      hash_identify(uint8 info)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:26,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:27,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:38,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:46,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:55,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:62,1
    - Dst: XLogRecHasBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:65,1
    - Dst: delvacuum_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:66,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:66,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:74,1
    - Dst: XLogRecHasBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:79,1
    - Dst: delvacuum_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:80,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:80,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:88,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:97,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:99,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:100,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:101,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:110,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:117,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:120,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:121,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:129,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:131,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 54
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 136
    functionName: btree_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c
    functionUses: 0
    functionsReached:
    - XLogRecGetBlockData
    - XLogRecHasBlockData
    - appendStringInfo
    - delvacuum_desc
    - EpochFromFullTransactionId
    - XidFromFullTransactionId
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void btree_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 16
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 193
    functionName: btree_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      btree_identify(uint8 info)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:204,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:206,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:215,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:225,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:226,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:233,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:240,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:243,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:245,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:247,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c:253,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 4
    argNames:
    - buf
    - block_data
    - ndeleted
    - nupdated
    argTypes:
    - StringInfo
    - char*
    - uint16
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 254
    functionName: delvacuum_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/nbtdesc.c
    functionUses: 1
    functionsReached:
    - OffsetNumberIsValid
    - Assert
    - appendStringInfo
    - appendStringInfoString
    - array_desc
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void delvacuum_desc(StringInfo buf, char *block_data,\n\t\t\t   uint16
      ndeleted, uint16 nupdated)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/genericdesc.c:26,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/access/rmgrdesc/genericdesc.c:27,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/genericdesc.c:34,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/genericdesc.c:36,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/genericdesc.c:41,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/genericdesc.c:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 45
    functionName: generic_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/genericdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - XLogRecGetDataLen
    - memcpy
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void generic_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: generic_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/genericdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      generic_identify(uint8 info)'
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:22,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:23,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:31,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:35,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:37,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:44,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:48,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:50,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:52,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:59,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:67,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:74,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:78,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:80,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:87,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:93,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:95,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:97,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:104,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:113,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c:121,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 129
    functionName: spg_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void spg_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 165
    functionName: spg_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/spgdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      spg_identify(uint8 info)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:22,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:26,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:29,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:32,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:35,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:38,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:41,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:44,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - buf
    - member
    argTypes:
    - StringInfo
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 47
    functionName: out_member
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void out_member(StringInfo buf, MultiXactMember *member)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:52,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:53,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:60,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:61,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:68,1
    - Dst: out_member
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:71,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c:77,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 80
    functionName: multixact_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c
    functionUses: 0
    functionsReached:
    - memcpy
    - appendStringInfo
    - out_member
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void multixact_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 104
    functionName: multixact_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      multixact_identify(uint8 info)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - wal_level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: get_wal_level_string
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      get_wal_level_string(int wal_level)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 75
    functionName: get_checksum_state_string
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      get_checksum_state_string(uint32 state)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:80,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:81,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:87,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:88,1
    - Dst: get_checksum_state_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 90
    functionName: xlog2_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c
    functionUses: 0
    functionsReached:
    - get_checksum_state_string
    - memcpy
    - appendStringInfoString
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void xlog2_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:95,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:96,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:103,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:109,1
    - Dst: get_wal_level_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:113,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:115,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:116,1
    - Dst: get_checksum_state_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:127,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:134,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:135,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:141,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:151,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:152,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:152,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:159,1
    - Dst: get_wal_level_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:160,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:162,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:179,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:180,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:186,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:187,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:189,1
    - Dst: get_wal_level_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:190,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:196,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:197,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:198,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:199,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:205,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:206,1
    - Dst: get_wal_level_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:207,1
    - Dst: get_checksum_state_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:208,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:214,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:215,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 221
    functionName: xlog_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c
    functionUses: 0
    functionsReached:
    - get_checksum_state_string
    - get_wal_level_string
    - memcpy
    - appendStringInfo
    - appendStringInfoString
    - EpochFromFullTransactionId
    - XidFromFullTransactionId
    - timestamptz_to_str
    - XLogRecGetInfo
    - LSN_FORMAT_ARGS
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void xlog_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 17
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 281
    functionName: xlog_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      xlog_identify(uint8 info)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 296
    functionName: xlog2_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      xlog2_identify(uint8 info)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:309,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:312,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:314,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:320,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:329,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:331,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:333,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:340,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:342,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:346,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:348,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:361,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:364,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:366,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:367,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:369,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:370,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:375,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:377,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:379,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:380,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:385,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:393,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:402,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:409,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:413,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:415,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:416,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:418,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:424,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 48
    argCount: 5
    argNames:
    - record
    - pretty
    - detailed_format
    - buf
    - fpi_len
    argTypes:
    - XLogReaderState*
    - bool
    - bool
    - StringInfo
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 425
    functionName: XLogRecGetBlockRefInfo
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c
    functionUses: 1
    functionsReached:
    - Assert
    - appendStringInfo
    - XLogRecGetBlock
    - BKPIMAGE_COMPRESSED
    - appendStringInfoString
    - XLogRecHasBlockImage
    - XLogRecBlockImageApply
    - XLogRecMaxBlockId
    - XLogRecGetBlockTagExtended
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void XLogRecGetBlockRefInfo(XLogReaderState *record, bool pretty,\n\t\t\t\t\t
      \  bool detailed_format, StringInfo buf,\n\t\t\t\t\t   uint32 *fpi_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/clogdesc.c:23,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/clogdesc.c:24,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/clogdesc.c:30,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/clogdesc.c:31,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/clogdesc.c:37,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/clogdesc.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 41
    functionName: clog_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/clogdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - memcpy
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void clog_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 59
    functionName: clog_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/clogdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      clog_identify(uint8 info)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/tblspcdesc.c:23,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/tblspcdesc.c:24,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/tblspcdesc.c:30,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/tblspcdesc.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 38
    functionName: tblspc_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/tblspcdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void tblspc_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: tblspc_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/tblspcdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      tblspc_identify(uint8 info)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:24,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:30,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:32,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:36,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:40,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:42,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - buf
    - xlrec
    argTypes:
    - StringInfo
    - xl_running_xacts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 44
    functionName: standby_desc_running_xacts
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void standby_desc_running_xacts(StringInfo buf, xl_running_xacts *xlrec)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:49,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:50,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:58,1
    - Dst: standby_desc_running_xacts
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:66,1
    - Dst: standby_desc_invalidations
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 46
    functionDepth: 3
    functionLinenumber: 46
    functionLinenumberEnd: 76
    functionName: standby_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c
    functionUses: 0
    functionsReached:
    - standby_desc_invalidations
    - appendStringInfo
    - standby_desc_running_xacts
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void standby_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 97
    functionName: standby_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      standby_identify(uint8 info)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:113,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:116,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:122,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:124,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:126,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:129,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:132,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:134,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:136,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c:138,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 6
    argNames:
    - buf
    - nmsgs
    - msgs
    - dbId
    - tsId
    - relcacheInitFileInval
    argTypes:
    - StringInfo
    - int
    - SharedInvalidationMessage*
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 140
    functionName: standby_desc_invalidations
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/standbydesc.c
    functionUses: 4
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: "void standby_desc_invalidations(StringInfo buf,\n\t\t\t\t\t\t   int
      nmsgs, SharedInvalidationMessage *msgs,\n\t\t\t\t\t\t   Oid dbId, Oid tsId,\n\t\t\t\t\t\t
      \  bool relcacheInitFileInval)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:29,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:31,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:34,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:36,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:38,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:40,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:42,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:47,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:52,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - buf
    - infobits
    - keyname
    argTypes:
    - StringInfo
    - uint8
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 53
    functionName: infobits_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendStringInfo
    - appendStringInfoString
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void infobits_desc(StringInfo buf, uint8 infobits, const char *keyname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:58,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:61,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:63,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:68,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - buf
    - flags
    argTypes:
    - StringInfo
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 74
    functionName: truncate_flags_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendStringInfoString
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void truncate_flags_desc(StringInfo buf, uint8 flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:82,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:87,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:88,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - plan
    - data
    argTypes:
    - StringInfo
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 94
    functionName: plan_elem_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - array_desc
    linkageType: ''
    returnType: void
    signature: void plan_elem_desc(StringInfo buf, void *plan, void *data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:169,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 11
    argNames:
    - cursor
    - flags
    - nplans
    - plans
    - frz_offsets
    - nredirected
    - redirected
    - ndead
    - nowdead
    - nunused
    - nowunused
    argTypes:
    - char*
    - uint16
    - int*
    - xlhp_freeze_plan**
    - OffsetNumber**
    - int*
    - OffsetNumber**
    - int*
    - OffsetNumber**
    - int*
    - OffsetNumber**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 182
    functionName: heap_xlog_deserialize_prune_and_freeze
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void heap_xlog_deserialize_prune_and_freeze(char *cursor, uint16 flags,\n\t\t\t\t\t\t\t\t\t
      \  int *nplans, xlhp_freeze_plan **plans,\n\t\t\t\t\t\t\t\t\t   OffsetNumber
      **frz_offsets,\n\t\t\t\t\t\t\t\t\t   int *nredirected, OffsetNumber **redirected,\n\t\t\t\t\t\t\t\t\t
      \  int *ndead, OffsetNumber **nowdead,\n\t\t\t\t\t\t\t\t\t   int *nunused, OffsetNumber
      **nowunused)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:187,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:188,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:195,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:203,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:205,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:206,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:212,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:214,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:215,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:222,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:224,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:225,1
    - Dst: truncate_flags_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:232,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:233,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:234,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:235,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:242,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:248,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:250,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:251,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:257,1
    - Dst: standby_desc_invalidations
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:258,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 262
    functionName: heap_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - standby_desc_invalidations
    - appendStringInfo
    - appendStringInfoString
    - infobits_desc
    - truncate_flags_desc
    - array_desc
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void heap_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:267,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:268,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:281,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:283,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:287,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:296,1
    - Dst: XLogRecHasBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:299,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:312,1
    - Dst: heap_xlog_deserialize_prune_and_freeze
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:314,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:320,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:325,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:326,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:332,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:333,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:339,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:340,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:346,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:347,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:355,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:357,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:361,1
    - Dst: XLogRecHasBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:365,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:367,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:368,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:376,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:378,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:379,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:385,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:389,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:390,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:391,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 264
    functionDepth: 3
    functionLinenumber: 264
    functionLinenumberEnd: 394
    functionName: heap2_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - XLogRecGetBlockData
    - memcpy
    - XLogRecHasBlockData
    - appendStringInfo
    - appendStringInfoString
    - infobits_desc
    - ItemPointerGetBlockNumber
    - ItemPointerGetOffsetNumber
    - heap_xlog_deserialize_prune_and_freeze
    - array_desc
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void heap2_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 439
    functionName: heap_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      heap_identify(uint8 info)'
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 475
    functionName: heap2_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      heap2_identify(uint8 info)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/dbasedesc.c:24,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/dbasedesc.c:25,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/dbasedesc.c:32,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/dbasedesc.c:41,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/dbasedesc.c:49,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/dbasedesc.c:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 54
    functionName: dbase_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/dbasedesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void dbase_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 75
    functionName: dbase_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/dbasedesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      dbase_identify(uint8 info)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c:30,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c:33,1
    - Dst: elem_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c:36,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c:38,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c:40,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - buf
    - array
    - elem_size
    - count
    - data
    argTypes:
    - StringInfo
    - void*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 41
    functionName: array_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c
    functionUses: 4
    functionsReached:
    - elem_desc
    - appendStringInfoString
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void array_desc(StringInfo buf, void *array, size_t elem_size, int
      count,\n\t\t   void (*elem_desc) (StringInfo buf, void *elem, void *data),\n\t\t
      \  void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - offset
    - data
    argTypes:
    - StringInfo
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: offset_elem_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void offset_elem_desc(StringInfo buf, void *offset, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - offset
    - data
    argTypes:
    - StringInfo
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: redirect_elem_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void redirect_elem_desc(StringInfo buf, void *offset, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - relid
    - data
    argTypes:
    - StringInfo
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: oid_elem_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/rmgrdesc_utils.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void oid_elem_desc(StringInfo buf, void *relid, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/relmapdesc.c:22,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/relmapdesc.c:23,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/relmapdesc.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 32
    functionName: relmap_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/relmapdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void relmap_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 47
    functionName: relmap_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/relmapdesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      relmap_identify(uint8 info)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/replorigindesc.c:21,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/replorigindesc.c:22,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/replorigindesc.c:32,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/replorigindesc.c:34,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/replorigindesc.c:44,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 18
    functionDepth: 2
    functionLinenumber: 18
    functionLinenumberEnd: 48
    functionName: replorigin_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/replorigindesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - LSN_FORMAT_ARGS
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void replorigin_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 62
    functionName: replorigin_identify
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/replorigindesc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      replorigin_identify(uint8 info)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:67,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:69,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 80
    functionName: tsm_bernoulli_handler
    functionSourceFile: /src/postgres/src/backend/access/tablesample/bernoulli.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    - makeNode
    - list_make1_oid
    linkageType: ''
    returnType: Datum
    signature: Datum tsm_bernoulli_handler(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:96,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:97,1
    - Dst: IsA
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:99,1
    - Dst: DatumGetFloat4
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:102,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:103,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:120,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - root
    - baserel
    - paramexprs
    - pages
    - tuples
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - BlockNumber*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 121
    functionName: bernoulli_samplescangetsamplesize
    functionSourceFile: /src/postgres/src/backend/access/tablesample/bernoulli.c
    functionUses: 0
    functionsReached:
    - DatumGetFloat4
    - linitial
    - estimate_expression_value
    - clamp_row_est
    - isnan
    - IsA
    linkageType: ''
    returnType: void
    signature: "void bernoulli_samplescangetsamplesize(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      \ RelOptInfo *baserel,\n\t\t\t\t\t\t\t\t  List *paramexprs,\n\t\t\t\t\t\t\t\t
      \ BlockNumber *pages,\n\t\t\t\t\t\t\t\t  double *tuples)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - eflags
    argTypes:
    - SampleScanState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: bernoulli_initsamplescan
    functionSourceFile: /src/postgres/src/backend/access/tablesample/bernoulli.c
    functionUses: 0
    functionsReached:
    - palloc0
    linkageType: ''
    returnType: void
    signature: void bernoulli_initsamplescan(SampleScanState *node, int eflags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetFloat4
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:142,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:146,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:147,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:148,1
    - Dst: rint
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - node
    - params
    - nparams
    - seed
    argTypes:
    - SampleScanState*
    - Datum*
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 167
    functionName: bernoulli_beginsamplescan
    functionSourceFile: /src/postgres/src/backend/access/tablesample/bernoulli.c
    functionUses: 0
    functionsReached:
    - DatumGetFloat4
    - errcode
    - ereport
    - errmsg
    - rint
    - isnan
    linkageType: ''
    returnType: void
    signature: "void bernoulli_beginsamplescan(SampleScanState *node,\n\t\t\t\t\t\t
      \ Datum *params,\n\t\t\t\t\t\t  int nparams,\n\t\t\t\t\t\t  uint32 seed)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:217,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/tablesample/bernoulli.c:217,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - node
    - blockno
    - maxoffset
    argTypes:
    - SampleScanState*
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 229
    functionName: bernoulli_nextsampletuple
    functionSourceFile: /src/postgres/src/backend/access/tablesample/bernoulli.c
    functionUses: 0
    functionsReached:
    - hash_any
    - DatumGetUInt32
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber bernoulli_nextsampletuple(SampleScanState *node,\n\t\t\t\t\t\t
      \ BlockNumber blockno,\n\t\t\t\t\t\t  OffsetNumber maxoffset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/access/tablesample/system.c:69,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/access/tablesample/system.c:71,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/tablesample/system.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 82
    functionName: tsm_system_handler
    functionSourceFile: /src/postgres/src/backend/access/tablesample/system.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    - makeNode
    - list_make1_oid
    linkageType: ''
    returnType: Datum
    signature: Datum tsm_system_handler(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/access/tablesample/system.c:98,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/access/tablesample/system.c:99,1
    - Dst: IsA
      Src: /src/postgres/src/backend/access/tablesample/system.c:101,1
    - Dst: DatumGetFloat4
      Src: /src/postgres/src/backend/access/tablesample/system.c:104,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/tablesample/system.c:105,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/access/tablesample/system.c:120,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/access/tablesample/system.c:123,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - root
    - baserel
    - paramexprs
    - pages
    - tuples
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - BlockNumber*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 124
    functionName: system_samplescangetsamplesize
    functionSourceFile: /src/postgres/src/backend/access/tablesample/system.c
    functionUses: 0
    functionsReached:
    - DatumGetFloat4
    - linitial
    - estimate_expression_value
    - clamp_row_est
    - isnan
    - IsA
    linkageType: ''
    returnType: void
    signature: "void system_samplescangetsamplesize(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \  RelOptInfo *baserel,\n\t\t\t\t\t\t\t   List *paramexprs,\n\t\t\t\t\t\t\t
      \  BlockNumber *pages,\n\t\t\t\t\t\t\t   double *tuples)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/tablesample/system.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - eflags
    argTypes:
    - SampleScanState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: system_initsamplescan
    functionSourceFile: /src/postgres/src/backend/access/tablesample/system.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: void
    signature: void system_initsamplescan(SampleScanState *node, int eflags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetFloat4
      Src: /src/postgres/src/backend/access/tablesample/system.c:145,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/tablesample/system.c:148,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/tablesample/system.c:149,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/tablesample/system.c:150,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/tablesample/system.c:151,1
    - Dst: rint
      Src: /src/postgres/src/backend/access/tablesample/system.c:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - node
    - params
    - nparams
    - seed
    argTypes:
    - SampleScanState*
    - Datum*
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 172
    functionName: system_beginsamplescan
    functionSourceFile: /src/postgres/src/backend/access/tablesample/system.c
    functionUses: 0
    functionsReached:
    - DatumGetFloat4
    - errcode
    - ereport
    - errmsg
    - rint
    - isnan
    linkageType: ''
    returnType: void
    signature: "void system_beginsamplescan(SampleScanState *node,\n\t\t\t\t\t   Datum
      *params,\n\t\t\t\t\t   int nparams,\n\t\t\t\t\t   uint32 seed)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/tablesample/system.c:205,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/tablesample/system.c:205,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - node
    - nblocks
    argTypes:
    - SampleScanState*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 221
    functionName: system_nextsampleblock
    functionSourceFile: /src/postgres/src/backend/access/tablesample/system.c
    functionUses: 0
    functionsReached:
    - hash_any
    - DatumGetUInt32
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber system_nextsampleblock(SampleScanState *node, BlockNumber
      nblocks)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - node
    - blockno
    - maxoffset
    argTypes:
    - SampleScanState*
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 256
    functionName: system_nextsampletuple
    functionSourceFile: /src/postgres/src/backend/access/tablesample/system.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber system_nextsampletuple(SampleScanState *node,\n\t\t\t\t\t
      \  BlockNumber blockno,\n\t\t\t\t\t   OffsetNumber maxoffset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/access/tablesample/tablesample.c:32,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/tablesample/tablesample.c:32,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/tablesample/tablesample.c:33,1
    - Dst: IsA
      Src: /src/postgres/src/backend/access/tablesample/tablesample.c:35,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/tablesample/tablesample.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - tsmhandler
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 40
    functionName: GetTsmRoutine
    functionSourceFile: /src/postgres/src/backend/access/tablesample/tablesample.c
    functionUses: 0
    functionsReached:
    - elog
    - OidFunctionCall1
    - PointerGetDatum
    - IsA
    - DatumGetPointer
    linkageType: ''
    returnType: TsmRoutine
    signature: 'TsmRoutine *

      GetTsmRoutine(Oid tsmhandler)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opts
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 201
    functionName: BloomGetNDistinctPerRange
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BloomGetNDistinctPerRange(opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opts
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 206
    functionName: BloomGetFalsePositiveRate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BloomGetFalsePositiveRate(opts)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ceil
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:280,1
    - Dst: log
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:280,1
    - Dst: pow
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:280,1
    - Dst: log
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:280,1
    - Dst: log
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:290,1
    - Dst: floor
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:291,1
    - Dst: ceil
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:291,1
    - Dst: floor
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:291,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - ndistinct
    - false_positive_rate
    - nbytesp
    - nbitsp
    - nhashesp
    argTypes:
    - int
    - double
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 301
    functionName: bloom_filter_size
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - floor
    - pow
    - ceil
    - log
    linkageType: ''
    returnType: void
    signature: "void bloom_filter_size(int ndistinct, double false_positive_rate,\n\t\t\t\t
      \ int *nbytesp, int *nbitsp, int *nhashesp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:321,1
    - Dst: bloom_filter_size
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:324,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:345,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:354,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ndistinct
    - false_positive_rate
    argTypes:
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 363
    functionName: bloom_init
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - palloc0
    - SET_VARSIZE
    - bloom_filter_size
    linkageType: ''
    returnType: BloomFilter
    signature: 'BloomFilter *

      bloom_init(int ndistinct, double false_positive_rate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_bytes_uint32_extended
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:378,1
    - Dst: hash_bytes_uint32_extended
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:379,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - filter
    - value
    - updated
    argTypes:
    - BloomFilter*
    - uint32
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 400
    functionName: bloom_add_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - hash_bytes_uint32_extended
    linkageType: ''
    returnType: BloomFilter
    signature: 'BloomFilter *

      bloom_add_value(BloomFilter *filter, uint32 value, bool *updated)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_bytes_uint32_extended
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:415,1
    - Dst: hash_bytes_uint32_extended
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - filter
    - value
    argTypes:
    - BloomFilter*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 407
    functionDepth: 2
    functionLinenumber: 407
    functionLinenumberEnd: 433
    functionName: bloom_contains_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - hash_bytes_uint32_extended
    linkageType: ''
    returnType: bool
    signature: bool bloom_contains_value(BloomFilter *filter, uint32 value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:461,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:461,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:461,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:466,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:466,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:467,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 470
    functionName: brin_bloom_opcinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - SizeofBrinOpcInfo
    - palloc0
    - MAXALIGN
    - PG_RETURN_POINTER
    - lookup_type_cache
    linkageType: ''
    returnType: Datum
    signature: Datum brin_bloom_opcinfo(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:503,1
    - Dst: BloomGetNDistinctPerRange
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:504,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:506,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:506,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:521,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - bdesc
    - opts
    argTypes:
    - BrinDesc*
    - BloomOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 530
    functionName: brin_bloom_get_ndistinct
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - Assert
    - BlockNumberIsValid
    - BrinGetPagesPerRange
    - Max
    - Min
    - BloomGetNDistinctPerRange
    linkageType: ''
    returnType: int
    signature: int brin_bloom_get_ndistinct(BrinDesc *bdesc, BloomOptions *opts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:542,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:543,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:544,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:545,1
    - Dst: PG_GET_OPCLASS_OPTIONS
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:546,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:547,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:554,1
    - Dst: bloom_init
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:565,1
    - Dst: brin_bloom_get_ndistinct
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:565,1
    - Dst: BloomGetFalsePositiveRate
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:566,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:567,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:572,1
    - Dst: bloom_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:578,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:580,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:580,1
    - Dst: bloom_add_value
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:582,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:584,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:586,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 539
    functionDepth: 3
    functionLinenumber: 539
    functionLinenumberEnd: 587
    functionName: brin_bloom_add_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_BOOL
    - PG_DETOAST_DATUM
    - Assert
    - bloom_get_procinfo
    - PG_GET_OPCLASS_OPTIONS
    - PG_GET_COLLATION
    - brin_bloom_get_ndistinct
    - bloom_add_value
    - FunctionCall1Coll
    - PointerGetDatum
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    - BloomGetFalsePositiveRate
    - bloom_init
    - DatumGetUInt32
    linkageType: ''
    returnType: Datum
    signature: Datum brin_bloom_add_value(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:597,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:598,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:599,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:600,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:601,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:610,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:625,1
    - Dst: bloom_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:638,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:640,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:640,1
    - Dst: bloom_contains_value
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:641,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:646,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:655,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 594
    functionDepth: 3
    functionLinenumber: 594
    functionLinenumberEnd: 656
    functionName: brin_bloom_consistent
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_DETOAST_DATUM
    - Assert
    - bloom_contains_value
    - bloom_get_procinfo
    - PG_GET_COLLATION
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    - FunctionCall1Coll
    - PG_GETARG_INT32
    - DatumGetUInt32
    linkageType: ''
    returnType: Datum
    signature: Datum brin_bloom_consistent(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:671,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:677,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:679,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:680,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:683,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:684,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:685,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:686,1
    - Dst: pg_popcount
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:695,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:698,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:700,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:700,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:701,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:705,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:706,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:708,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 709
    functionName: brin_bloom_union
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - PG_DETOAST_DATUM
    - Assert
    - pfree
    - PointerGetDatum
    - pg_popcount
    - PG_GETARG_POINTER
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum brin_bloom_union(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:731,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:731,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:733,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:734,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:737,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:738,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:739,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:740,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - bdesc
    - attno
    - procnum
    argTypes:
    - BrinDesc*
    - uint16
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 717
    functionDepth: 2
    functionLinenumber: 717
    functionLinenumberEnd: 745
    functionName: bloom_get_procinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 2
    functionsReached:
    - RegProcedureIsValid
    - fmgr_info_copy
    - errmsg_internal
    - errcode
    - ereport
    - index_getprocid
    - errdetail_internal
    - index_getprocinfo
    linkageType: ''
    returnType: FmgrInfo
    signature: 'FmgrInfo *

      bloom_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:750,1
    - Dst: init_local_reloptions
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:752,1
    - Dst: add_local_real_reloption
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:754,1
    - Dst: add_local_real_reloption
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:759,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 747
    functionDepth: 4
    functionLinenumber: 747
    functionLinenumberEnd: 767
    functionName: brin_bloom_options
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - add_local_real_reloption
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - init_local_reloptions
    linkageType: ''
    returnType: Datum
    signature: Datum brin_bloom_options(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:784,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:785,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:786,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 777
    functionDepth: 1
    functionLinenumber: 777
    functionLinenumberEnd: 789
    functionName: brin_bloom_summary_in
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum brin_bloom_summary_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:806,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:806,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:808,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:809,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:811,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:814,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 799
    functionDepth: 3
    functionLinenumber: 799
    functionLinenumberEnd: 817
    functionName: brin_bloom_summary_out
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_DETOAST_DATUM
    - appendStringInfo
    - initStringInfo
    - PG_RETURN_CSTRING
    - appendStringInfoChar
    linkageType: ''
    returnType: Datum
    signature: Datum brin_bloom_summary_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:826,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:827,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:828,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 831
    functionName: brin_bloom_summary_recv
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum brin_bloom_summary_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: byteasend
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 844
    functionName: brin_bloom_summary_send
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - byteasend
    linkageType: ''
    returnType: Datum
    signature: Datum brin_bloom_summary_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:96,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:98,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:109,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:109,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:109,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:113,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:113,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:117,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 126
    functionName: brin_inclusion_opcinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_inclusion.c
    functionUses: 0
    functionsReached:
    - SizeofBrinOpcInfo
    - palloc0
    - PG_GETARG_OID
    - MAXALIGN
    - PG_RETURN_POINTER
    - lookup_type_cache
    linkageType: ''
    returnType: Datum
    signature: Datum brin_inclusion_opcinfo(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:140,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:141,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:142,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:143,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:144,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:151,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:154,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:163,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:164,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:165,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:174,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:175,1
    - Dst: inclusion_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:182,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:183,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:183,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:185,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:187,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:188,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:191,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:195,1
    - Dst: inclusion_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:198,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:200,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:200,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:203,1
    - Dst: inclusion_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:213,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:215,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:215,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:219,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:220,1
    - Dst: inclusion_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:224,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:225,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:228,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:228,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:230,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:230,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:233,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:237,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 238
    functionName: brin_inclusion_add_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_inclusion.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - inclusion_get_procinfo
    - PG_GETARG_BOOL
    - Assert
    - pfree
    - datumCopy
    - PG_GET_COLLATION
    - FunctionCall2Coll
    - FunctionCall1Coll
    - PG_RETURN_BOOL
    - TupleDescCompactAttr
    - PG_GETARG_POINTER
    - BoolGetDatum
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum brin_inclusion_add_value(PG_FUNCTION_ARGS)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:252,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:253,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:254,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:264,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:267,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:270,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:271,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:293,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:295,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:296,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:296,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:299,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:301,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:302,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:302,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:305,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:307,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:308,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:308,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:311,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:313,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:314,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:314,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:317,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:319,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:320,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:320,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:323,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:325,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:326,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:326,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:329,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:331,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:332,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:332,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:335,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:337,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:338,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:338,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:353,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:355,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:356,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:372,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:374,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:375,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:376,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:378,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:391,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:393,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:394,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:395,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:397,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:399,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:400,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:426,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:428,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:429,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:430,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:432,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:436,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:438,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:439,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:440,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:442,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:445,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:447,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:448,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:449,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:451,1
    - Dst: inclusion_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:455,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:457,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:458,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:458,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:462,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:463,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 94
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 465
    functionName: brin_inclusion_consistent
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_inclusion.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - elog
    - Assert
    - inclusion_get_strategy_procinfo
    - PG_RETURN_DATUM
    - PG_GET_COLLATION
    - FunctionCall2Coll
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum brin_inclusion_consistent(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:476,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:477,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:478,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:479,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:485,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:486,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:489,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:492,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:493,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:494,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:497,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:498,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:501,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:503,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:504,1
    - Dst: inclusion_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:508,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:510,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:510,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:514,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:515,1
    - Dst: inclusion_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:519,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:520,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:524,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:524,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:526,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:526,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:529,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:533,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 534
    functionName: brin_inclusion_union
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_inclusion.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - inclusion_get_procinfo
    - Assert
    - pfree
    - datumCopy
    - PG_GET_COLLATION
    - FunctionCall2Coll
    - TupleDescCompactAttr
    - PG_GETARG_POINTER
    - BoolGetDatum
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum brin_inclusion_union(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:565,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:565,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:567,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:568,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:573,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:574,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:575,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:576,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - bdesc
    - attno
    - procnum
    - missing_ok
    argTypes:
    - BrinDesc*
    - uint16
    - uint16
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 585
    functionName: inclusion_get_procinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_inclusion.c
    functionUses: 2
    functionsReached:
    - RegProcedureIsValid
    - fmgr_info_copy
    - errmsg_internal
    - errcode
    - ereport
    - index_getprocid
    - errdetail_internal
    - index_getprocinfo
    linkageType: ''
    returnType: FmgrInfo
    signature: "FmgrInfo *\ninclusion_get_procinfo(BrinDesc *bdesc, uint16 attno,
      uint16 procnum,\n\t\t\t\t\t   bool missing_ok)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:613,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:640,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:641,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:641,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:642,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:643,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:644,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:646,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:647,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:650,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:650,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:652,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:653,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:653,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:655,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/brin/brin_inclusion.c:655,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - bdesc
    - attno
    - subtype
    - strategynum
    argTypes:
    - BrinDesc*
    - uint16
    - Oid
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 661
    functionName: inclusion_get_strategy_procinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_inclusion.c
    functionUses: 1
    functionsReached:
    - elog
    - UInt16GetDatum
    - SysCacheGetAttrNotNull
    - RegProcedureIsValid
    - Assert
    - HeapTupleIsValid
    - DatumGetObjectId
    - ObjectIdGetDatum
    - ReleaseSysCache
    - SearchSysCache4
    - TupleDescAttr
    - get_opcode
    - fmgr_info_cxt
    linkageType: ''
    returnType: FmgrInfo
    signature: "FmgrInfo *\ninclusion_get_strategy_procinfo(BrinDesc *bdesc, uint16
      attno, Oid subtype,\n\t\t\t\t\t\t\t\tuint16 strategynum)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:56,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:56,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:57,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:58,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:59,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:63,1
    - Dst: get_opfamily_name
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:66,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:69,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:69,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:70,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:70,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:76,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:83,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:87,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:92,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:97,1
    - Dst: check_amoptsproc_signature
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:109,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:111,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:113,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:127,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:129,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:142,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:147,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:149,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:151,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:176,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:177,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:178,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:180,1
    - Dst: check_amop_signature
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:185,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:189,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:190,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:191,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:193,1
    - Dst: identify_opfamily_groups
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:199,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:227,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:229,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:231,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:239,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:241,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:242,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:250,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:252,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:261,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:262,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:263,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:268,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:269,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:270,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 89
    argCount: 1
    argNames:
    - opclassoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 273
    functionName: brinvalidate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_validate.c
    functionUses: 0
    functionsReached:
    - identify_opfamily_groups
    - errcode
    - format_operator
    - format_procedure
    - check_amop_signature
    - NameStr
    - check_amoptsproc_signature
    - SearchSysCache1
    - elog
    - check_amproc_signature
    - HeapTupleIsValid
    - ReleaseSysCache
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - ereport
    - lfirst
    - GETSTRUCT
    - get_opfamily_name
    - format_type_be
    linkageType: ''
    returnType: bool
    signature: bool brinvalidate(Oid opclassoid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:227,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:229,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:231,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:239,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:241,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/brin/brin_validate.c:242,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 245
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_validate.c
    functionUses: 25
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - lfirst
    - errmsg
    linkageType: ''
    returnType: void
    signature: void foreach(lc, grouplist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:36,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:44,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:44,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:44,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:49,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:49,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:51,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 54
    functionName: brin_minmax_opcinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax.c
    functionUses: 0
    functionsReached:
    - SizeofBrinOpcInfo
    - palloc0
    - PG_GETARG_OID
    - MAXALIGN
    - PG_RETURN_POINTER
    - lookup_type_cache
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_opcinfo(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:66,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:67,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:68,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:69,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:70,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:77,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:80,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:88,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:89,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:91,1
    - Dst: minmax_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:99,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:101,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:102,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:105,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:105,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:106,1
    - Dst: minmax_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:113,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:115,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:116,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:119,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:119,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:120,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:124,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 125
    functionName: brin_minmax_add_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_BOOL
    - Assert
    - pfree
    - datumCopy
    - PG_GET_COLLATION
    - minmax_get_strategy_procinfo
    - FunctionCall2Coll
    - PG_RETURN_BOOL
    - TupleDescAttr
    - PG_GETARG_POINTER
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_add_value(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:139,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:140,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:141,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:150,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:153,1
    - Dst: minmax_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:162,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:164,1
    - Dst: minmax_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:174,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:176,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:178,1
    - Dst: minmax_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:181,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:183,1
    - Dst: minmax_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:188,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:190,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:195,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:200,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 201
    functionName: brin_minmax_consistent
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - elog
    - Assert
    - PG_RETURN_DATUM
    - minmax_get_strategy_procinfo
    - PG_GET_COLLATION
    - FunctionCall2Coll
    - PG_GETARG_POINTER
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_consistent(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:210,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:211,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:212,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:220,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:223,1
    - Dst: minmax_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:226,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:228,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:228,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:233,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:233,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:234,1
    - Dst: minmax_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:239,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:241,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:241,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:246,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:246,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:247,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:251,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 252
    functionName: brin_minmax_union
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - Assert
    - pfree
    - datumCopy
    - minmax_get_strategy_procinfo
    - PG_GET_COLLATION
    - FunctionCall2Coll
    - TupleDescAttr
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_union(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:266,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:293,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:294,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:294,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:295,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:296,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:297,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:299,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:300,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:303,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:303,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:306,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:306,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:308,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/brin/brin_minmax.c:308,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - bdesc
    - attno
    - subtype
    - strategynum
    argTypes:
    - BrinDesc*
    - uint16
    - Oid
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 314
    functionName: minmax_get_strategy_procinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax.c
    functionUses: 3
    functionsReached:
    - elog
    - UInt16GetDatum
    - SysCacheGetAttrNotNull
    - RegProcedureIsValid
    - Assert
    - HeapTupleIsValid
    - DatumGetObjectId
    - ObjectIdGetDatum
    - ReleaseSysCache
    - SearchSysCache4
    - TupleDescAttr
    - get_opcode
    - fmgr_info_cxt
    linkageType: ''
    returnType: FmgrInfo
    signature: "FmgrInfo *\nminmax_get_strategy_procinfo(BrinDesc *bdesc, uint16 attno,
      Oid subtype,\n\t\t\t\t\t\t\t uint16 strategynum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pagesPerRange
    - ','
    - heapBlk
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: HEAPBLK_TO_REVMAP_BLK
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEAPBLK_TO_REVMAP_BLK(pagesPerRange, heapBlk)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pagesPerRange
    - ','
    - heapBlk
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: HEAPBLK_TO_REVMAP_INDEX
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEAPBLK_TO_REVMAP_INDEX(pagesPerRange, heapBlk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:77,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:78,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:79,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:80,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:82,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - idxrel
    - pagesPerRange
    argTypes:
    - Relation
    - BlockNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 94
    functionName: brinRevmapInitialize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - PageGetContents
    - BufferGetPage
    - ReadBuffer
    - palloc_object
    linkageType: ''
    returnType: BrinRevmap
    signature: 'BrinRevmap *

      brinRevmapInitialize(Relation idxrel, BlockNumber *pagesPerRange)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:102,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:104,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - revmap
    argTypes:
    - BrinRevmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: brinRevmapTerminate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 0
    functionsReached:
    - pfree
    - ReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void brinRevmapTerminate(BrinRevmap *revmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: revmap_extend_and_get_blkno
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:116,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - revmap
    - heapBlk
    argTypes:
    - BrinRevmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 122
    functionName: brinRevmapExtend
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 0
    functionsReached:
    - Assert
    - revmap_extend_and_get_blkno
    linkageType: ''
    returnType: void
    signature: void brinRevmapExtend(BrinRevmap *revmap, BlockNumber heapBlk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: revmap_get_buffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:138,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - revmap
    - heapBlk
    argTypes:
    - BrinRevmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 142
    functionName: brinLockRevmapPageForUpdate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - revmap_get_buffer
    linkageType: ''
    returnType: Buffer
    signature: Buffer brinLockRevmapPageForUpdate(BrinRevmap *revmap, BlockNumber
      heapBlk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:163,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:164,1
    - Dst: HEAPBLK_TO_REVMAP_INDEX
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:166,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:168,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:169,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:170,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:171,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - buf
    - pagesPerRange
    - heapBlk
    - tid
    argTypes:
    - Buffer
    - BlockNumber
    - BlockNumber
    - ItemPointerData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 154
    functionDepth: 4
    functionLinenumber: 154
    functionLinenumberEnd: 174
    functionName: brinSetHeapBlockItemptr
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - PageGetContents
    - BufferGetPage
    - ItemPointerGetBlockNumber
    - ItemPointerGetOffsetNumber
    - ItemPointerSetInvalid
    - ItemPointerIsValid
    - HEAPBLK_TO_REVMAP_INDEX
    linkageType: ''
    returnType: void
    signature: "void brinSetHeapBlockItemptr(Buffer buf, BlockNumber pagesPerRange,\n\t\t\t\t\t\tBlockNumber
      heapBlk, ItemPointerData tid)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: revmap_get_blkno
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:215,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:222,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:225,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:228,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:231,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:233,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:234,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:237,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:240,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:240,1
    - Dst: HEAPBLK_TO_REVMAP_INDEX
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:242,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:244,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:246,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:256,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:257,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:258,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:259,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:262,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:263,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:265,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:268,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:268,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:270,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:271,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:272,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:274,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:275,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:278,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:285,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:287,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:291,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:292,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:294,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:299,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:309,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 6
    argNames:
    - revmap
    - heapBlk
    - buf
    - 'off'
    - size
    - mode
    argTypes:
    - BrinRevmap*
    - BlockNumber
    - Buffer*
    - OffsetNumber*
    - Size*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 193
    functionDepth: 4
    functionLinenumber: 193
    functionLinenumberEnd: 313
    functionName: brinGetTupleForHeapBlock
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 0
    functionsReached:
    - errcode
    - LockBuffer
    - BufferGetPage
    - revmap_get_blkno
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - ReleaseBuffer
    - Assert
    - BufferGetBlockNumber
    - PageGetContents
    - ItemPointerEquals
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - ItemPointerGetBlockNumber
    - HEAPBLK_TO_REVMAP_INDEX
    - ItemIdIsUsed
    - errmsg_internal
    - ereport
    - BRIN_IS_REGULAR_PAGE
    - CHECK_FOR_INTERRUPTS
    - PageGetItemId
    - BufferIsValid
    - ItemPointerIsValid
    - ItemPointerSetInvalid
    - ItemIdGetLength
    linkageType: ''
    returnType: BrinTuple
    signature: "BrinTuple *\nbrinGetTupleForHeapBlock(BrinRevmap *revmap, BlockNumber
      heapBlk,\n\t\t\t\t\t\t Buffer *buf, OffsetNumber *off, Size *size, int mode)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: brinRevmapInitialize
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:339,1
    - Dst: revmap_get_blkno
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:341,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:342,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:345,1
    - Dst: brinLockRevmapPageForUpdate
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:350,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:351,1
    - Dst: HEAPBLK_TO_REVMAP_INDEX
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:352,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:354,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:358,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:361,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:362,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:366,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:366,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:367,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:368,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:371,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:373,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:374,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:375,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:379,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:380,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:381,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:382,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:383,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:385,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:387,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:389,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:398,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:400,1
    - Dst: brinSetHeapBlockItemptr
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:401,1
    - Dst: PageIndexTupleDeleteNoCompact
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:403,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:406,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:407,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:409,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:418,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:419,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:420,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:421,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:422,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:423,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:424,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:427,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:429,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:430,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:431,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 56
    argCount: 2
    argNames:
    - idxrel
    - heapBlk
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 322
    functionDepth: 5
    functionLinenumber: 322
    functionLinenumberEnd: 434
    functionName: brinRevmapDesummarizeRange
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - brinSetHeapBlockItemptr
    - errcode
    - PageIndexTupleDeleteNoCompact
    - BlockNumberIsValid
    - LockBuffer
    - BufferGetPage
    - revmap_get_blkno
    - XLogRegisterData
    - ItemPointerGetOffsetNumber
    - brinLockRevmapPageForUpdate
    - XLogBeginInsert
    - PageGetContents
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - errmsg
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - HEAPBLK_TO_REVMAP_INDEX
    - ItemIdIsUsed
    - PageSetLSN
    - brinRevmapInitialize
    - BRIN_IS_REGULAR_PAGE
    - ereport
    - PageGetItemId
    - MarkBufferDirty
    - XLogRegisterBuffer
    - ItemPointerIsValid
    - brinRevmapTerminate
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - ItemPointerSetInvalid
    - END_CRIT_SECTION
    linkageType: ''
    returnType: bool
    signature: bool brinRevmapDesummarizeRange(Relation idxrel, BlockNumber heapBlk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_REVMAP_BLK
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - revmap
    - heapBlk
    argTypes:
    - BrinRevmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 454
    functionName: revmap_get_blkno
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 2
    functionsReached:
    - HEAPBLK_TO_REVMAP_BLK
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber revmap_get_blkno(BrinRevmap *revmap, BlockNumber heapBlk)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: revmap_get_blkno
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:468,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:471,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:474,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:483,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:486,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:488,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - revmap
    - heapBlk
    argTypes:
    - BrinRevmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 492
    functionName: revmap_get_buffer
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 1
    functionsReached:
    - elog
    - ReleaseBuffer
    - Assert
    - BufferGetBlockNumber
    - revmap_get_blkno
    - ReadBuffer
    linkageType: ''
    returnType: Buffer
    signature: Buffer revmap_get_buffer(BrinRevmap *revmap, BlockNumber heapBlk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_REVMAP_BLK
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:505,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:510,1
    - Dst: revmap_physical_extend
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - revmap
    - heapBlk
    argTypes:
    - BrinRevmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 515
    functionName: revmap_extend_and_get_blkno
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 1
    functionsReached:
    - HEAPBLK_TO_REVMAP_BLK
    - revmap_physical_extend
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber revmap_extend_and_get_blkno(BrinRevmap *revmap, BlockNumber
      heapBlk)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:537,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:538,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:539,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:548,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:553,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:556,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:557,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:558,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:562,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:562,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:564,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:572,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:573,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:576,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:580,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:580,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:581,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:582,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:583,1
    - Dst: BrinPageType
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:584,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:585,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:586,1
    - Dst: brin_start_evacuating_page
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:589,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:591,1
    - Dst: brin_evacuate_page
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:592,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:602,1
    - Dst: brin_page_init
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:605,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:606,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:620,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:622,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:629,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:630,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:631,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:633,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:635,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:636,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:637,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:640,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:642,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_revmap.c:644,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 1
    argNames:
    - revmap
    argTypes:
    - BrinRevmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 521
    functionDepth: 4
    functionLinenumber: 521
    functionLinenumberEnd: 645
    functionName: revmap_physical_extend
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_revmap.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - errcode
    - ExtendBufferedRel
    - LockBuffer
    - PageIsNew
    - BufferGetPage
    - BMR_REL
    - XLogRegisterData
    - RelationGetRelationName
    - brin_evacuate_page
    - XLogBeginInsert
    - BufferGetBlockNumber
    - PageGetContents
    - ReadBuffer
    - errmsg
    - RelationGetNumberOfBlocks
    - UnlockReleaseBuffer
    - PageSetLSN
    - BRIN_IS_REGULAR_PAGE
    - ereport
    - MarkBufferDirty
    - XLogRegisterBuffer
    - brin_start_evacuating_page
    - BrinPageType
    - brin_page_init
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void revmap_physical_extend(BrinRevmap *revmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - shared
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: ParallelTableScanFromBrinShared
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ParallelTableScanFromBrinShared(shared)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/brin/brin.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 313
    functionName: brinhandler
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum brinhandler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:325,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/brin/brin.c:326,1
    - Dst: brin_build_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:327,1
    - Dst: brinRevmapInitialize
      Src: /src/postgres/src/backend/access/brin/brin.c:328,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - idxRel
    - indexInfo
    argTypes:
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 319
    functionDepth: 5
    functionLinenumber: 319
    functionLinenumberEnd: 334
    functionName: initialize_brin_insertstate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - brinRevmapInitialize
    - brin_build_desc
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: BrinInsertState
    signature: 'BrinInsertState *

      initialize_brin_insertstate(Relation idxRel, IndexInfo *indexInfo)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: BrinGetAutoSummarize
      Src: /src/postgres/src/backend/access/brin/brin.c:364,1
    - Dst: initialize_brin_insertstate
      Src: /src/postgres/src/backend/access/brin/brin.c:371,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:381,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:391,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:401,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:407,1
    - Dst: AutoVacuumRequestWork
      Src: /src/postgres/src/backend/access/brin/brin.c:413,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:414,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:417,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:418,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:419,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:420,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:424,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:427,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin.c:437,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:440,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:443,1
    - Dst: add_values_to_range
      Src: /src/postgres/src/backend/access/brin/brin.c:445,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:453,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:457,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/brin/brin.c:458,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/brin/brin.c:469,1
    - Dst: brin_copy_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:470,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:478,1
    - Dst: brin_can_do_samepage_update
      Src: /src/postgres/src/backend/access/brin/brin.c:479,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:480,1
    - Dst: brin_doupdate
      Src: /src/postgres/src/backend/access/brin/brin.c:490,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/brin/brin.c:495,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin.c:504,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:505,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:506,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:508,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 49
    argCount: 8
    argNames:
    - idxRel
    - values
    - nulls
    - heaptid
    - heapRel
    - checkUnique
    - indexUnchanged
    - indexInfo
    argTypes:
    - Relation
    - Datum*
    - bool*
    - ItemPointer
    - Relation
    - IndexUniqueCheck
    - bool
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 348
    functionDepth: 6
    functionLinenumber: 348
    functionLinenumberEnd: 511
    functionName: brininsert
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_doupdate
    - add_values_to_range
    - errcode
    - LockBuffer
    - BufferGetPage
    - brin_copy_tuple
    - ItemPointerGetOffsetNumber
    - RelationGetRelationName
    - brin_can_do_samepage_update
    - initialize_brin_insertstate
    - ReleaseBuffer
    - MemoryContextReset
    - AutoVacuumRequestWork
    - errmsg
    - ItemPointerGetBlockNumber
    - brin_deform_tuple
    - ereport
    - CHECK_FOR_INTERRUPTS
    - PageGetItemId
    - BufferIsValid
    - brinGetTupleForHeapBlock
    - AllocSetContextCreate
    - brin_form_tuple
    - BrinGetAutoSummarize
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - ItemIdGetLength
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: "bool brininsert(Relation idxRel, Datum *values, bool *nulls,\n\t\t
      \  ItemPointer heaptid, Relation heapRel,\n\t\t   IndexUniqueCheck checkUnique,\n\t\t
      \  bool indexUnchanged,\n\t\t   IndexInfo *indexInfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin.c:532,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - index
    - indexInfo
    argTypes:
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 516
    functionDepth: 2
    functionLinenumber: 516
    functionLinenumberEnd: 534
    functionName: brininsertcleanup
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - pfree
    - brinRevmapTerminate
    linkageType: ''
    returnType: void
    signature: void brininsertcleanup(Relation index, IndexInfo *indexInfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/backend/access/brin/brin.c:549,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/brin/brin.c:551,1
    - Dst: brinRevmapInitialize
      Src: /src/postgres/src/backend/access/brin/brin.c:552,1
    - Dst: brin_build_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - r
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 543
    functionDepth: 5
    functionLinenumber: 543
    functionLinenumberEnd: 557
    functionName: brinbeginscan
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_build_desc
    - brinRevmapInitialize
    - RelationGetIndexScan
    - palloc_object
    linkageType: ''
    returnType: IndexScanDesc
    signature: IndexScanDesc brinbeginscan(Relation r, int nkeys, int norderbys)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/brin/brin.c:598,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:606,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:606,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:607,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:608,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/brin/brin.c:609,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/brin/brin.c:616,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:637,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:638,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:639,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:640,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:641,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:642,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin.c:644,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:648,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:651,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:654,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:657,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:662,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:668,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/brin/brin.c:671,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/brin/brin.c:672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:685,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin.c:687,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:705,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:706,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin.c:708,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/brin/brin.c:710,1
    - Dst: brin_new_memtuple
      Src: /src/postgres/src/backend/access/brin/brin.c:728,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin.c:734,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:737,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:753,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/brin/brin.c:755,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:757,1
    - Dst: brin_copy_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:762,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:763,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:776,1
    - Dst: check_null_keys
      Src: /src/postgres/src/backend/access/brin/brin.c:832,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:856,1
    - Dst: FunctionCall4Coll
      Src: /src/postgres/src/backend/access/brin/brin.c:886,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:888,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:889,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:890,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:891,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin.c:892,1
    - Dst: FunctionCall3Coll
      Src: /src/postgres/src/backend/access/brin/brin.c:908,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:910,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:911,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:912,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin.c:913,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin.c:935,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:938,1
    - Dst: tbm_add_page
      Src: /src/postgres/src/backend/access/brin/brin.c:939,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:941,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:946,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:947,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:950,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 117
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 571
    functionDepth: 5
    functionLinenumber: 571
    functionLinenumberEnd: 958
    functionName: bringetbitmap
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - brin_copy_tuple
    - table_close
    - DatumGetBool
    - ReleaseBuffer
    - MemoryContextReset
    - Assert
    - Int32GetDatum
    - table_open
    - PointerGetDatum
    - RelationGetNumberOfBlocks
    - brin_new_memtuple
    - MAXALIGN
    - brin_deform_tuple
    - fmgr_info_copy
    - FunctionCall4Coll
    - CHECK_FOR_INTERRUPTS
    - IndexGetRelation
    - check_null_keys
    - memset
    - brinGetTupleForHeapBlock
    - AllocSetContextCreate
    - pgstat_count_index_scan
    - TupleDescAttr
    - tbm_add_page
    - index_getprocinfo
    - palloc0_array
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - palloc
    - Min
    - FunctionCall3Coll
    - RelationGetRelid
    linkageType: ''
    returnType: int64
    signature: int64 bringetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin.c:976,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 5
    argNames:
    - scan
    - scankey
    - nscankeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 977
    functionName: brinrescan
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void brinrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys,\n\t\t
      \  ScanKey orderbys, int norderbys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin.c:987,1
    - Dst: brin_free_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:988,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:989,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 982
    functionDepth: 2
    functionLinenumber: 982
    functionLinenumberEnd: 990
    functionName: brinendscan
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_free_desc
    - pfree
    - brinRevmapTerminate
    linkageType: ''
    returnType: void
    signature: void brinendscan(IndexScanDesc scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:1010,1
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin.c:1021,1
    - Dst: form_and_insert_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1027,1
    - Dst: brin_memtuple_initialize
      Src: /src/postgres/src/backend/access/brin/brin.c:1033,1
    - Dst: add_values_to_range
      Src: /src/postgres/src/backend/access/brin/brin.c:1037,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - index
    - tid
    - values
    - isnull
    - tupleIsAlive
    - brstate
    argTypes:
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 999
    functionDepth: 3
    functionLinenumber: 999
    functionLinenumberEnd: 1039
    functionName: brinbuildCallback
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - add_values_to_range
    - brin_memtuple_initialize
    - form_and_insert_tuple
    - BRIN_elog
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: "void brinbuildCallback(Relation index,\n\t\t\t\t  ItemPointer tid,\n\t\t\t\t
      \ Datum *values,\n\t\t\t\t  bool *isnull,\n\t\t\t\t  bool tupleIsAlive,\n\t\t\t\t
      \ void *brstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:1061,1
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin.c:1078,1
    - Dst: form_and_spill_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1084,1
    - Dst: brin_memtuple_initialize
      Src: /src/postgres/src/backend/access/brin/brin.c:1098,1
    - Dst: add_values_to_range
      Src: /src/postgres/src/backend/access/brin/brin.c:1102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - index
    - tid
    - values
    - isnull
    - tupleIsAlive
    - brstate
    argTypes:
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1050
    functionDepth: 3
    functionLinenumber: 1050
    functionLinenumberEnd: 1104
    functionName: brinbuildCallbackParallel
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - add_values_to_range
    - brin_memtuple_initialize
    - BRIN_elog
    - ItemPointerGetBlockNumber
    - form_and_spill_tuple
    linkageType: ''
    returnType: void
    signature: "void brinbuildCallbackParallel(Relation index,\n\t\t\t\t\t\t  ItemPointer
      tid,\n\t\t\t\t\t\t  Datum *values,\n\t\t\t\t\t\t  bool *isnull,\n\t\t\t\t\t\t
      \ bool tupleIsAlive,\n\t\t\t\t\t\t  void *brstate)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:1123,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin.c:1124,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1125,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/brin/brin.c:1132,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/brin/brin.c:1132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:1134,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:1134,1
    - Dst: brin_metapage_init
      Src: /src/postgres/src/backend/access/brin/brin.c:1136,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1136,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1136,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin.c:1138,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin.c:1140,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1147,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/brin/brin.c:1149,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/brin/brin.c:1150,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1151,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/brin/brin.c:1153,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1155,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin.c:1156,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1159,1
    - Dst: brinRevmapInitialize
      Src: /src/postgres/src/backend/access/brin/brin.c:1164,1
    - Dst: initialize_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:1165,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:1166,1
    - Dst: _brin_begin_parallel
      Src: /src/postgres/src/backend/access/brin/brin.c:1177,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/brin/brin.c:1193,1
    - Dst: tuplesort_begin_index_brin
      Src: /src/postgres/src/backend/access/brin/brin.c:1222,1
    - Dst: _brin_parallel_merge
      Src: /src/postgres/src/backend/access/brin/brin.c:1226,1
    - Dst: _brin_end_parallel
      Src: /src/postgres/src/backend/access/brin/brin.c:1228,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/brin/brin.c:1238,1
    - Dst: form_and_insert_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1248,1
    - Dst: brin_fill_empty_ranges
      Src: /src/postgres/src/backend/access/brin/brin.c:1257,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin.c:1264,1
    - Dst: terminate_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:1265,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/brin/brin.c:1270,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1109
    functionDepth: 5
    functionLinenumber: 1109
    functionLinenumberEnd: 1276
    functionName: brinbuild
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - ExtendBufferedRel
    - BMR_REL
    - BufferGetPage
    - XLogRegisterData
    - _brin_begin_parallel
    - RelationGetRelationName
    - terminate_brin_buildstate
    - initialize_brin_buildstate
    - elog
    - brin_fill_empty_ranges
    - brin_metapage_init
    - Assert
    - XLogBeginInsert
    - BufferGetBlockNumber
    - BrinGetPagesPerRange
    - RelationGetNumberOfBlocks
    - palloc_object
    - UnlockReleaseBuffer
    - tuplesort_begin_index_brin
    - PageSetLSN
    - _brin_parallel_merge
    - palloc0_object
    - brinRevmapInitialize
    - form_and_insert_tuple
    - MarkBufferDirty
    - XLogRegisterBuffer
    - table_index_build_scan
    - brinRevmapTerminate
    - RelationNeedsWAL
    - _brin_end_parallel
    linkageType: ''
    returnType: IndexBuildResult
    signature: 'IndexBuildResult *

      brinbuild(Relation heap, Relation index, IndexInfo *indexInfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/brin/brin.c:1284,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/brin/brin.c:1284,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin.c:1288,1
    - Dst: brin_metapage_init
      Src: /src/postgres/src/backend/access/brin/brin.c:1289,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1289,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1289,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin.c:1291,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1292,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin.c:1293,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1278
    functionDepth: 4
    functionLinenumber: 1278
    functionLinenumberEnd: 1296
    functionName: brinbuildempty
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_metapage_init
    - ExtendBufferedRel
    - BrinGetPagesPerRange
    - START_CRIT_SECTION
    - BufferGetPage
    - BMR_REL
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - log_newpage_buffer
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void brinbuildempty(Relation index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/brin/brin.c:1313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - info
    - stats
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1307
    functionDepth: 0
    functionLinenumber: 1307
    functionLinenumberEnd: 1316
    functionName: brinbulkdelete
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\nbrinbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult
      *stats,\n\t\t\t   IndexBulkDeleteCallback callback, void *callback_state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/brin/brin.c:1332,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:1333,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1336,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1336,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:1336,1
    - Dst: brin_vacuum_scan
      Src: /src/postgres/src/backend/access/brin/brin.c:1339,1
    - Dst: brinsummarize
      Src: /src/postgres/src/backend/access/brin/brin.c:1341,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1322
    functionDepth: 1
    functionLinenumber: 1322
    functionLinenumberEnd: 1347
    functionName: brinvacuumcleanup
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - brinsummarize
    - brin_vacuum_scan
    - table_open
    - IndexGetRelation
    - RelationGetNumberOfBlocks
    - table_close
    - RelationGetRelid
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: 'IndexBulkDeleteResult *

      brinvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/brin/brin.c:1360,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/brin/brin.c:1363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1352
    functionDepth: 5
    functionLinenumber: 1352
    functionLinenumberEnd: 1364
    functionName: brinoptions
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      brinoptions(Datum reloptions, bool validate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin.c:1373,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/brin/brin.c:1375,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:1377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1370
    functionDepth: 1
    functionLinenumber: 1370
    functionLinenumberEnd: 1378
    functionName: brin_summarize_new_values
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum brin_summarize_new_values(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/brin/brin.c:1388,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/brin/brin.c:1389,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/brin/brin.c:1399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1400,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1401,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1402,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/brin/brin.c:1403,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1406,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1407,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1408,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1417,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/brin/brin.c:1418,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1420,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/brin/brin.c:1430,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/brin/brin.c:1431,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/access/brin/brin.c:1433,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/access/brin/brin.c:1434,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1445,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1450,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1451,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1452,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1453,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/access/brin/brin.c:1456,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/access/brin/brin.c:1457,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1458,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1465,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1466,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1467,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1468,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1469,1
    - Dst: brinsummarize
      Src: /src/postgres/src/backend/access/brin/brin.c:1473,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1475,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1476,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1477,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1478,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/brin/brin.c:1481,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/brin/brin.c:1484,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1486,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1487,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/brin/brin.c:1489,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1385
    functionDepth: 2
    functionLinenumber: 1385
    functionLinenumberEnd: 1490
    functionName: brin_summarize_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brinsummarize
    - errcode
    - RestrictSearchPath
    - errhint
    - RelationGetRelationName
    - RecoveryInProgress
    - table_close
    - object_ownercheck
    - table_open
    - index_close
    - PG_GETARG_INT64
    - errmsg
    - AtEOXact_GUC
    - OidIsValid
    - PG_RETURN_INT32
    - ereport
    - index_open
    - IndexGetRelation
    - aclcheck_error
    - SetUserIdAndSecContext
    - NewGUCNestLevel
    - PG_GETARG_OID
    - GetUserIdAndSecContext
    linkageType: ''
    returnType: Datum
    signature: Datum brin_summarize_range(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/brin/brin.c:1498,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/brin/brin.c:1499,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/brin/brin.c:1506,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1507,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1508,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1509,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/brin/brin.c:1510,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1513,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1514,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1515,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1528,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/brin/brin.c:1529,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1530,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1534,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1539,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1540,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1541,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1542,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/access/brin/brin.c:1545,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/brin/brin.c:1545,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/access/brin/brin.c:1546,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1547,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1554,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1555,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1556,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1557,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1558,1
    - Dst: brinRevmapDesummarizeRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1566,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1571,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1572,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1573,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1574,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1576,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1577,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin.c:1579,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1580
      start: 1495
    functionDepth: 6
    functionLinenumber: 1495
    functionLinenumberEnd: 1580
    functionName: brin_desummarize_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - GetUserId
    - errcode
    - errhint
    - RelationGetRelationName
    - RecoveryInProgress
    - table_close
    - object_ownercheck
    - table_open
    - index_close
    - PG_GETARG_INT64
    - errmsg
    - OidIsValid
    - ereport
    - index_open
    - IndexGetRelation
    - aclcheck_error
    - brinRevmapDesummarizeRange
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum brin_desummarize_range(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin.c:1597,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:1600,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/brin/brin.c:1601,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/brin/brin.c:1607,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin.c:1611,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin.c:1613,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin.c:1616,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/access/brin/brin.c:1616,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:1616,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin.c:1624,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1633,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:1635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1585
    functionDepth: 2
    functionLinenumber: 1585
    functionLinenumberEnd: 1638
    functionName: brin_build_desc
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - pfree
    - RelationGetDescr
    - ObjectIdGetDatum
    - palloc_array
    - DatumGetPointer
    - MemoryContextSwitchTo
    - FunctionCall1
    - AllocSetContextCreate
    - TupleDescAttr
    - palloc
    - index_getprocinfo
    linkageType: ''
    returnType: BrinDesc
    signature: 'BrinDesc *

      brin_build_desc(Relation rel)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:1644,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:1646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bdesc
    argTypes:
    - BrinDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1640
    functionDepth: 1
    functionLinenumber: 1640
    functionLinenumberEnd: 1647
    functionName: brin_free_desc
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void brin_free_desc(BrinDesc *bdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1659,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1660,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1661,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin.c:1662,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - index
    - stats
    argTypes:
    - Relation
    - BrinStatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1652
    functionDepth: 4
    functionLinenumber: 1652
    functionLinenumberEnd: 1668
    functionName: brinGetStats
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - PageGetContents
    - BufferGetPage
    - ReadBuffer
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void brinGetStats(Relation index, BrinStatsData *stats)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/brin/brin.c:1680,1
    - Dst: brin_build_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:1689,1
    - Dst: brin_new_memtuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 4
    argNames:
    - idxRel
    - revmap
    - pagesPerRange
    - tablePages
    argTypes:
    - Relation
    - BrinRevmap*
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1673
    functionDepth: 3
    functionLinenumber: 1673
    functionLinenumberEnd: 1712
    functionName: initialize_brin_buildstate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - brin_build_desc
    - brin_new_memtuple
    - palloc_object
    linkageType: ''
    returnType: BrinBuildState
    signature: "BrinBuildState *\ninitialize_brin_buildstate(Relation idxRel, BrinRevmap
      *revmap,\n\t\t\t\t\t\t   BlockNumber pagesPerRange, BlockNumber tablePages)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/brin/brin.c:1724,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1730,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin.c:1731,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:1732,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1733,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin.c:1734,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1735,1
    - Dst: brin_free_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:1738,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1739,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1740,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1717
    functionDepth: 4
    functionLinenumber: 1717
    functionLinenumberEnd: 1741
    functionName: terminate_brin_buildstate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - brin_free_desc
    - ReleaseBuffer
    - pfree
    - BufferGetBlockNumber
    - FreeSpaceMapVacuumRange
    - BufferGetPage
    - RecordPageWithFreeSpace
    - BufferIsInvalid
    - PageGetFreeSpace
    linkageType: ''
    returnType: void
    signature: void terminate_brin_buildstate(BrinBuildState *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: brin_form_placeholder_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1776,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:1777,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:1785,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin.c:1799,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:1799,1
    - Dst: table_index_build_range_scan
      Src: /src/postgres/src/backend/access/brin/brin.c:1819,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:1836,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1841,1
    - Dst: brin_can_do_samepage_update
      Src: /src/postgres/src/backend/access/brin/brin.c:1843,1
    - Dst: brin_doupdate
      Src: /src/postgres/src/backend/access/brin/brin.c:1845,1
    - Dst: brin_free_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1848,1
    - Dst: brin_free_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1849,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:1862,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin.c:1866,1
    - Dst: brin_copy_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1867,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1868,1
    - Dst: union_tuples
      Src: /src/postgres/src/backend/access/brin/brin.c:1871,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1874,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 5
    argNames:
    - indexInfo
    - state
    - heapRel
    - heapBlk
    - heapNumBlks
    argTypes:
    - IndexInfo*
    - BrinBuildState*
    - Relation
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1762
    functionDepth: 5
    functionLinenumber: 1762
    functionLinenumberEnd: 1875
    functionName: summarize_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_doupdate
    - brin_doinsert
    - brin_free_tuple
    - elog
    - ReleaseBuffer
    - union_tuples
    - Assert
    - brin_form_placeholder_tuple
    - LockBuffer
    - table_index_build_range_scan
    - CHECK_FOR_INTERRUPTS
    - brin_copy_tuple
    - brin_can_do_samepage_update
    - RelationGetNumberOfBlocks
    - brinGetTupleForHeapBlock
    - Min
    - brin_form_tuple
    linkageType: ''
    returnType: void
    signature: "void summarize_range(IndexInfo *indexInfo, BrinBuildState *state,
      Relation heapRel,\n\t\t\t\tBlockNumber heapBlk, BlockNumber heapNumBlks)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: brinRevmapInitialize
      Src: /src/postgres/src/backend/access/brin/brin.c:1900,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:1903,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin.c:1909,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin.c:1914,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:1938,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:1940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:1948,1
    - Dst: initialize_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:1949,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/access/brin/brin.c:1952,1
    - Dst: summarize_range
      Src: /src/postgres/src/backend/access/brin/brin.c:1954,1
    - Dst: brin_memtuple_initialize
      Src: /src/postgres/src/backend/access/brin/brin.c:1957,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1966,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin.c:1970,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1971,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin.c:1974,1
    - Dst: terminate_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:1977,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1978,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 6
    argNames:
    - index
    - heapRel
    - pageRange
    - include_partial
    - numSummarized
    - numExisting
    argTypes:
    - Relation
    - Relation
    - BlockNumber
    - bool
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1888
    functionDepth: 6
    functionLinenumber: 1888
    functionLinenumberEnd: 1980
    functionName: brinsummarize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - summarize_range
    - ReleaseBuffer
    - Assert
    - brin_memtuple_initialize
    - brinRevmapInitialize
    - brinRevmapTerminate
    - BuildIndexInfo
    - LockBuffer
    - CHECK_FOR_INTERRUPTS
    - pfree
    - BufferIsValid
    - RelationGetNumberOfBlocks
    - brinGetTupleForHeapBlock
    - Min
    - terminate_brin_buildstate
    - initialize_brin_buildstate
    linkageType: ''
    returnType: void
    signature: "void brinsummarize(Relation index, Relation heapRel, BlockNumber pageRange,\n\t\t\t
      \ bool include_partial, double *numSummarized, double *numExisting)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1992,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:1994,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1999,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2000
      start: 1986
    functionDepth: 1
    functionLinenumber: 1986
    functionLinenumberEnd: 2000
    functionName: form_and_insert_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - pfree
    - brin_doinsert
    - brin_form_tuple
    linkageType: ''
    returnType: void
    signature: void form_and_insert_tuple(BrinBuildState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2017,1
    - Dst: tuplesort_putbrintuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2021,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:2025,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 2007
    functionDepth: 1
    functionLinenumber: 2007
    functionLinenumberEnd: 2026
    functionName: form_and_spill_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - pfree
    - tuplesort_putbrintuple
    - brin_form_tuple
    linkageType: ''
    returnType: void
    signature: void form_and_spill_tuple(BrinBuildState *state)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin.c:2041,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2044,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2045,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2046,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:2063,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin.c:2092,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:2101,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin.c:2145,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin.c:2153,1
    - Dst: FunctionCall3Coll
      Src: /src/postgres/src/backend/access/brin/brin.c:2155,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2157,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2158,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2159,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:2162,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 40
    argCount: 3
    argNames:
    - bdesc
    - a
    - b
    argTypes:
    - BrinDesc*
    - BrinMemTuple*
    - BrinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2032
    functionDepth: 2
    functionLinenumber: 2032
    functionLinenumberEnd: 2163
    functionName: union_tuples
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - datumCopy
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - PointerGetDatum
    - AllocSetContextCreate
    - FunctionCall3Coll
    - brin_deform_tuple
    - index_getprocinfo
    linkageType: ''
    returnType: void
    signature: void union_tuples(BrinDesc *bdesc, BrinMemTuple *a, BrinTuple *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:2181,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/brin/brin.c:2187,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/brin/brin.c:2201,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:2203,1
    - Dst: brin_page_cleanup
      Src: /src/postgres/src/backend/access/brin/brin.c:2205,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:2207,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/brin/brin.c:2210,1
    - Dst: FreeSpaceMapVacuum
      Src: /src/postgres/src/backend/access/brin/brin.c:2217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - idxrel
    - strategy
    argTypes:
    - Relation
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2218
      start: 2173
    functionDepth: 1
    functionLinenumber: 2173
    functionLinenumberEnd: 2218
    functionName: brin_vacuum_scan
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - read_stream_next_buffer
    - ReleaseBuffer
    - read_stream_end
    - CHECK_FOR_INTERRUPTS
    - read_stream_begin_relation
    - RelationGetNumberOfBlocks
    - brin_page_cleanup
    - FreeSpaceMapVacuum
    linkageType: ''
    returnType: void
    signature: void brin_vacuum_scan(Relation idxrel, BufferAccessStrategy strategy)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin.c:2274,1
    - Dst: FunctionCall4Coll
      Src: /src/postgres/src/backend/access/brin/brin.c:2276,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2278,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2279,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2281,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin.c:2283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2296,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2308,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 5
    argNames:
    - idxRel
    - bdesc
    - dtup
    - values
    - nulls
    argTypes:
    - Relation
    - BrinDesc*
    - BrinMemTuple*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2312
      start: 2220
    functionDepth: 2
    functionLinenumber: 2220
    functionLinenumberEnd: 2312
    functionName: add_values_to_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 3
    functionsReached:
    - Assert
    - FunctionCall4Coll
    - PointerGetDatum
    - BoolGetDatum
    - DatumGetBool
    - index_getprocinfo
    linkageType: ''
    returnType: bool
    signature: "bool add_values_to_range(Relation idxRel, BrinDesc *bdesc, BrinMemTuple
      *dtup,\n\t\t\t\t\tconst Datum *values, const bool *nulls)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2327,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - bval
    - nullkeys
    - nnullkeys
    argTypes:
    - BrinValues*
    - ScanKey*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2360
      start: 2314
    functionDepth: 1
    functionLinenumber: 2314
    functionLinenumberEnd: 2360
    functionName: check_null_keys
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool check_null_keys(BrinValues *bval, ScanKey *nullkeys, int nnullkeys)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/brin/brin.c:2389,1
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/brin/brin.c:2403,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2404,1
    - Dst: CreateParallelContext
      Src: /src/postgres/src/backend/access/brin/brin.c:2405,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2420,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2420,1
    - Dst: _brin_parallel_estimate_shared
      Src: /src/postgres/src/backend/access/brin/brin.c:2425,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2426,1
    - Dst: tuplesort_estimate_shared
      Src: /src/postgres/src/backend/access/brin/brin.c:2427,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2428,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/brin/brin.c:2430,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2440,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/brin/brin.c:2441,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/brin/brin.c:2442,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2443,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/brin/brin.c:2444,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/brin/brin.c:2445,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/brin/brin.c:2450,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2451,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/brin/brin.c:2452,1
    - Dst: InitializeParallelDSM
      Src: /src/postgres/src/backend/access/brin/brin.c:2458,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2463,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2464,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/brin/brin.c:2465,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/brin/brin.c:2466,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/brin/brin.c:2471,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:2473,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:2474,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/access/brin/brin.c:2478,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/brin/brin.c:2479,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/brin/brin.c:2480,1
    - Dst: table_parallelscan_initialize
      Src: /src/postgres/src/backend/access/brin/brin.c:2487,1
    - Dst: ParallelTableScanFromBrinShared
      Src: /src/postgres/src/backend/access/brin/brin.c:2488,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/brin/brin.c:2495,1
    - Dst: tuplesort_initialize_shared
      Src: /src/postgres/src/backend/access/brin/brin.c:2496,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/brin/brin.c:2503,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/brin/brin.c:2504,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/brin/brin.c:2511,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin.c:2512,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/brin/brin.c:2513,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/brin/brin.c:2520,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/brin/brin.c:2521,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/brin/brin.c:2522,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/brin/brin.c:2523,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/brin/brin.c:2524,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/brin/brin.c:2525,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/access/brin/brin.c:2528,1
    - Dst: _brin_end_parallel
      Src: /src/postgres/src/backend/access/brin/brin.c:2542,1
    - Dst: _brin_leader_participate_as_worker
      Src: /src/postgres/src/backend/access/brin/brin.c:2551,1
    - Dst: WaitForParallelWorkersToAttach
      Src: /src/postgres/src/backend/access/brin/brin.c:2557,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 76
    argCount: 5
    argNames:
    - buildstate
    - heap
    - index
    - isconcurrent
    - request
    argTypes:
    - BrinBuildState*
    - Relation
    - Relation
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2558
      start: 2378
    functionDepth: 2
    functionLinenumber: 2378
    functionLinenumberEnd: 2558
    functionName: _brin_begin_parallel
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - shm_toc_estimate_chunk
    - RegisterSnapshot
    - IsMVCCSnapshot
    - ParallelTableScanFromBrinShared
    - shm_toc_allocate
    - tuplesort_initialize_shared
    - memcpy
    - LaunchParallelWorkers
    - Assert
    - CreateParallelContext
    - _brin_parallel_estimate_shared
    - pgstat_get_my_query_id
    - UnregisterSnapshot
    - palloc0_object
    - DestroyParallelContext
    - shm_toc_estimate_keys
    - mul_size
    - GetTransactionSnapshot
    - strlen
    - EnterParallelMode
    - ConditionVariableInit
    - table_parallelscan_initialize
    - SpinLockInit
    - InitializeParallelDSM
    - tuplesort_estimate_shared
    - shm_toc_insert
    - WaitForParallelWorkersToAttach
    - _brin_end_parallel
    - ExitParallelMode
    - _brin_leader_participate_as_worker
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void _brin_begin_parallel(BrinBuildState *buildstate, Relation heap,
      Relation index,\n\t\t\t\t\t bool isconcurrent, int request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WaitForParallelWorkersToFinish
      Src: /src/postgres/src/backend/access/brin/brin.c:2569,1
    - Dst: InstrAccumParallelQuery
      Src: /src/postgres/src/backend/access/brin/brin.c:2576,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2579,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2580,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/brin/brin.c:2581,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/brin/brin.c:2582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - brinleader
    - state
    argTypes:
    - BrinLeader*
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2583
      start: 2563
    functionDepth: 1
    functionLinenumber: 2563
    functionLinenumberEnd: 2583
    functionName: _brin_end_parallel
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - DestroyParallelContext
    - InstrAccumParallelQuery
    - WaitForParallelWorkersToFinish
    - ExitParallelMode
    - IsMVCCSnapshot
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void _brin_end_parallel(BrinLeader *brinleader, BrinBuildState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/brin/brin.c:2603,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/brin/brin.c:2610,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/brin/brin.c:2613,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/brin/brin.c:2615,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/brin/brin.c:2619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2622
      start: 2594
    functionDepth: 2
    functionLinenumber: 2594
    functionLinenumberEnd: 2622
    functionName: _brin_parallel_heapscan
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - ConditionVariableSleep
    - SpinLockAcquire
    - ConditionVariableCancelSleep
    - SpinLockRelease
    linkageType: ''
    returnType: double
    signature: double _brin_parallel_heapscan(BrinBuildState *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _brin_parallel_heapscan
      Src: /src/postgres/src/backend/access/brin/brin.c:2647,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/brin/brin.c:2650,1
    - Dst: brin_new_memtuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2656,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin.c:2666,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2669,1
    - Dst: tuplesort_getbrintuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2679,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2701,1
    - Dst: union_tuples
      Src: /src/postgres/src/backend/access/brin/brin.c:2711,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2724,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:2727,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/brin/brin.c:2735,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2737,1
    - Dst: brin_fill_empty_ranges
      Src: /src/postgres/src/backend/access/brin/brin.c:2743,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/brin/brin.c:2748,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2756,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:2759,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:2762,1
    - Dst: brin_fill_empty_ranges
      Src: /src/postgres/src/backend/access/brin/brin.c:2766,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2772,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:2773,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2776
      start: 2635
    functionDepth: 3
    functionLinenumber: 2635
    functionLinenumberEnd: 2776
    functionName: _brin_parallel_merge
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - brin_doinsert
    - brin_fill_empty_ranges
    - MemoryContextReset
    - _brin_parallel_heapscan
    - tuplesort_getbrintuple
    - union_tuples
    - Assert
    - pfree
    - tuplesort_performsort
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - AllocSetContextCreate
    - brin_new_memtuple
    - brin_form_tuple
    - tuplesort_end
    - brin_deform_tuple
    linkageType: ''
    returnType: double
    signature: double _brin_parallel_merge(BrinBuildState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/access/brin/brin.c:2786,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:2786,1
    - Dst: table_parallelscan_estimate
      Src: /src/postgres/src/backend/access/brin/brin.c:2787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - heap
    - snapshot
    argTypes:
    - Relation
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2782
    functionDepth: 1
    functionLinenumber: 2782
    functionLinenumberEnd: 2788
    functionName: _brin_parallel_estimate_shared
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - table_parallelscan_estimate
    - add_size
    - BUFFERALIGN
    linkageType: ''
    returnType: Size
    signature: Size _brin_parallel_estimate_shared(Relation heap, Snapshot snapshot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _brin_parallel_scan_and_build
      Src: /src/postgres/src/backend/access/brin/brin.c:2807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buildstate
    - heap
    - index
    argTypes:
    - BrinBuildState*
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2809
      start: 2793
    functionDepth: 1
    functionLinenumber: 2793
    functionLinenumberEnd: 2809
    functionName: _brin_leader_participate_as_worker
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - _brin_parallel_scan_and_build
    linkageType: ''
    returnType: void
    signature: void _brin_leader_participate_as_worker(BrinBuildState *buildstate,
      Relation heap, Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/brin/brin.c:2833,1
    - Dst: tuplesort_begin_index_brin
      Src: /src/postgres/src/backend/access/brin/brin.c:2839,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/access/brin/brin.c:2843,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/access/brin/brin.c:2846,1
    - Dst: ParallelTableScanFromBrinShared
      Src: /src/postgres/src/backend/access/brin/brin.c:2847,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/brin/brin.c:2850,1
    - Dst: form_and_spill_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2854,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/brin/brin.c:2857,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/brin/brin.c:2864,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/brin/brin.c:2868,1
    - Dst: ConditionVariableSignal
      Src: /src/postgres/src/backend/access/brin/brin.c:2871,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/brin/brin.c:2873,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 7
    argNames:
    - state
    - brinshared
    - sharedsort
    - heap
    - index
    - sortmem
    - progress
    argTypes:
    - BrinBuildState*
    - BrinShared*
    - Sharedsort*
    - Relation
    - Relation
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2874
      start: 2821
    functionDepth: 2
    functionLinenumber: 2821
    functionLinenumberEnd: 2874
    functionName: _brin_parallel_scan_and_build
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - SpinLockAcquire
    - table_beginscan_parallel
    - table_index_build_scan
    - tuplesort_end
    - ConditionVariableSignal
    - BuildIndexInfo
    - tuplesort_performsort
    - SpinLockRelease
    - tuplesort_begin_index_brin
    - ParallelTableScanFromBrinShared
    - form_and_spill_tuple
    linkageType: ''
    returnType: void
    signature: "void _brin_parallel_scan_and_build(BrinBuildState *state,\n\t\t\t\t\t\t\t
      \ BrinShared *brinshared, Sharedsort *sharedsort,\n\t\t\t\t\t\t\t  Relation
      heap, Relation index,\n\t\t\t\t\t\t\t  int sortmem, bool progress)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2898,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2902,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/access/brin/brin.c:2906,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2909,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/access/brin/brin.c:2924,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:2927,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/brin/brin.c:2928,1
    - Dst: initialize_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:2930,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2935,1
    - Dst: tuplesort_attach_shared
      Src: /src/postgres/src/backend/access/brin/brin.c:2936,1
    - Dst: InstrStartParallelQuery
      Src: /src/postgres/src/backend/access/brin/brin.c:2939,1
    - Dst: _brin_parallel_scan_and_build
      Src: /src/postgres/src/backend/access/brin/brin.c:2948,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2952,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2953,1
    - Dst: InstrEndParallelQuery
      Src: /src/postgres/src/backend/access/brin/brin.c:2954,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/brin/brin.c:2957,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/brin/brin.c:2958,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2959
      start: 2879
    functionDepth: 4
    functionLinenumber: 2879
    functionLinenumberEnd: 2959
    functionName: _brin_parallel_build_main
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - pgstat_report_query_id
    - shm_toc_lookup
    - InstrStartParallelQuery
    - Assert
    - index_open
    - table_open
    - InstrEndParallelQuery
    - tuplesort_attach_shared
    - index_close
    - _brin_parallel_scan_and_build
    - pgstat_report_activity
    - table_close
    - initialize_brin_buildstate
    linkageType: ''
    returnType: void
    signature: void _brin_parallel_build_main(dsm_segment *seg, shm_toc *toc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: brin_new_memtuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2979,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2982,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2984,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - state
    - blkno
    argTypes:
    - BrinBuildState*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2994
      start: 2972
    functionDepth: 1
    functionLinenumber: 2972
    functionLinenumberEnd: 2994
    functionName: brin_build_empty_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_new_memtuple
    - brin_form_tuple
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void brin_build_empty_tuple(BrinBuildState *state, BlockNumber blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: brin_build_empty_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:3025,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:3027,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - state
    - prevRange
    - nextRange
    argTypes:
    - BrinBuildState*
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3034
      start: 3009
    functionDepth: 2
    functionLinenumber: 3009
    functionLinenumberEnd: 3034
    functionName: brin_fill_empty_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - brin_build_empty_tuple
    - brin_doinsert
    linkageType: ''
    returnType: void
    signature: "void brin_fill_empty_ranges(BrinBuildState *state,\n\t\t\t\t\t   BlockNumber
      prevRange, BlockNumber nextRange)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:73,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:75,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:80,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:85,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - brdesc
    argTypes:
    - BrinDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 60
    functionDepth: 5
    functionLinenumber: 60
    functionLinenumberEnd: 92
    functionName: brtuple_disk_tupdesc
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 0
    functionsReached:
    - TupleDescFinalize
    - CreateTemplateTupleDesc
    - TupleDescInitEntry
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc brtuple_disk_tupdesc(BrinDesc *brdesc)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:121,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:123,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:124,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:125,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:125,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:128,1
    - Dst: bv_serialize
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:165,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:208,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:208,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:210,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:210,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:211,1
    - Dst: VARATT_IS_EXTENDED
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:219,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:219,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:220,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:220,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:226,1
    - Dst: toast_compress_datum
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:240,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:242,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:246,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:246,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:267,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:278,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:281,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:283,1
    - Dst: brtuple_disk_tupdesc
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:283,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:287,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:294,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:302,1
    - Dst: brtuple_disk_tupdesc
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:302,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:311,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:312,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:313,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:317,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:317,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 97
    argCount: 4
    argNames:
    - brdesc
    - blkno
    - tuple
    - size
    argTypes:
    - BrinDesc*
    - BlockNumber
    - BrinMemTuple*
    - Size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 99
    functionDepth: 6
    functionLinenumber: 99
    functionLinenumberEnd: 380
    functionName: brin_form_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 6
    functionsReached:
    - detoast_external_attr
    - palloc_array
    - toast_compress_datum
    - Assert
    - pfree
    - heap_compute_data_size
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - MAXALIGN
    - VARSIZE
    - bv_serialize
    - brtuple_disk_tupdesc
    - TupleDescAttr
    - BITMAPLEN
    - palloc0_array
    - VARATT_IS_EXTENDED
    - heap_fill_tuple
    - palloc0
    - DatumGetPointer
    linkageType: ''
    returnType: BrinTuple
    signature: "BrinTuple *\nbrin_form_tuple(BrinDesc *brdesc, BlockNumber blkno,
      BrinMemTuple *tuple,\n\t\t\t\tSize *size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:399,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:400,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - brdesc
    - blkno
    - size
    argTypes:
    - BrinDesc*
    - BlockNumber
    - Size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 427
    functionName: brin_form_placeholder_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 1
    functionsReached:
    - palloc0
    - MAXALIGN
    - BITMAPLEN
    linkageType: ''
    returnType: BrinTuple
    signature: 'BrinTuple *

      brin_form_placeholder_tuple(BrinDesc *brdesc, BlockNumber blkno, Size *size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - BrinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 436
    functionName: brin_free_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void brin_free_tuple(BrinTuple *tuple)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:449,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:452,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - tuple
    - len
    - dest
    - destsz
    argTypes:
    - BrinTuple*
    - Size
    - BrinTuple*
    - Size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 459
    functionName: brin_copy_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 3
    functionsReached:
    - repalloc
    - memcpy
    - palloc
    linkageType: ''
    returnType: BrinTuple
    signature: 'BrinTuple *

      brin_copy_tuple(BrinTuple *tuple, Size len, BrinTuple *dest, Size *destsz)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:469,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - a
    - alen
    - b
    - blen
    argTypes:
    - BrinTuple*
    - Size
    - BrinTuple*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 472
    functionName: brin_tuples_equal
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool brin_tuples_equal(const BrinTuple *a, Size alen, const BrinTuple
      *b, Size blen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:487,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:489,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:491,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:492,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:493,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:497,1
    - Dst: brin_memtuple_initialize
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - brdesc
    argTypes:
    - BrinDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 504
    functionName: brin_new_memtuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 4
    functionsReached:
    - brin_memtuple_initialize
    - palloc0
    - palloc_array
    - AllocSetContextCreate
    - MAXALIGN
    linkageType: ''
    returnType: BrinMemTuple
    signature: 'BrinMemTuple *

      brin_new_memtuple(BrinDesc *brdesc)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:516,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:519,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - dtuple
    - brdesc
    argTypes:
    - BrinMemTuple*
    - BrinDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 538
    functionName: brin_memtuple_initialize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 4
    functionsReached:
    - MAXALIGN
    - MemoryContextReset
    - PointerGetDatum
    linkageType: ''
    returnType: BrinMemTuple
    signature: 'BrinMemTuple *

      brin_memtuple_initialize(BrinMemTuple *dtuple, BrinDesc *brdesc)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: brin_memtuple_initialize
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:565,1
    - Dst: brin_new_memtuple
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:566,1
    - Dst: BrinTupleIsPlaceholder
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:568,1
    - Dst: BrinTupleIsEmptyRange
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:572,1
    - Dst: BrinTupleDataOffset
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:581,1
    - Dst: BrinTupleHasNulls
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:583,1
    - Dst: brin_deconstruct_tuple
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:587,1
    - Dst: BrinTupleHasNulls
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:588,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:595,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:612,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:619,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:624,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - brdesc
    - tuple
    - dMemtuple
    argTypes:
    - BrinDesc*
    - BrinTuple*
    - BrinMemTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 552
    functionDepth: 2
    functionLinenumber: 552
    functionLinenumberEnd: 627
    functionName: brin_deform_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 4
    functionsReached:
    - BrinTupleDataOffset
    - brin_memtuple_initialize
    - datumCopy
    - BrinTupleIsPlaceholder
    - MemoryContextSwitchTo
    - brin_deconstruct_tuple
    - PointerGetDatum
    - BrinTupleIsEmptyRange
    - brin_new_memtuple
    - BrinTupleHasNulls
    linkageType: ''
    returnType: BrinMemTuple
    signature: 'BrinMemTuple *

      brin_deform_tuple(BrinDesc *brdesc, BrinTuple *tuple, BrinMemTuple *dMemtuple)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:667,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:677,1
    - Dst: brtuple_disk_tupdesc
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:685,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:702,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:706,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:714,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:717,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:719,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 7
    argNames:
    - brdesc
    - tp
    - nullbits
    - nulls
    - values
    - allnulls
    - hasnulls
    argTypes:
    - BrinDesc*
    - char*
    - uint8*
    - bool
    - Datum*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 644
    functionDepth: 6
    functionLinenumber: 644
    functionLinenumberEnd: 722
    functionName: brin_deconstruct_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 1
    functionsReached:
    - att_addlength_pointer
    - att_pointer_alignby
    - brtuple_disk_tupdesc
    - fetchatt
    - att_nominal_alignby
    - TupleDescCompactAttr
    - att_isnull
    linkageType: ''
    returnType: void
    signature: "void brin_deconstruct_tuple(BrinDesc *brdesc,\n\t\t\t\t\t   char *tp,
      uint8 *nullbits, bool nulls,\n\t\t\t\t\t   Datum *values, bool *allnulls, bool
      *hasnulls)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:27,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:32,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:33,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:33,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:34,1
    - Dst: brin_metapage_init
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:35,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:36,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:37,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 23
    functionDepth: 4
    functionLinenumber: 23
    functionLinenumberEnd: 39
    functionName: brin_xlog_createidx
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_xlog.c
    functionUses: 0
    functionsReached:
    - brin_metapage_init
    - Assert
    - XLogInitBufferForRedo
    - BufferGetPage
    - BufferIsValid
    - PageSetLSN
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void brin_xlog_createidx(XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:59,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:61,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:62,1
    - Dst: brin_page_init
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:63,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:68,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:72,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:81,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:83,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:85,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:87,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:88,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:90,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:92,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:94,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:95,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:97,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:98,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:101,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:106,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:107,1
    - Dst: brinSetHeapBlockItemptr
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:109,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:111,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:112,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:114,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:115,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - record
    - xlrec
    argTypes:
    - XLogReaderState*
    - xl_brin_insert*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 45
    functionDepth: 5
    functionLinenumber: 45
    functionLinenumberEnd: 118
    functionName: brin_xlog_insert_update
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - ItemPointerSet
    - brinSetHeapBlockItemptr
    - Assert
    - XLogReadBufferForRedo
    - brin_page_init
    - XLogInitBufferForRedo
    - BufferGetBlockNumber
    - BufferGetPage
    - PageAddItem
    - PageGetMaxOffsetNumber
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRecGetInfo
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: "void brin_xlog_insert_update(XLogReaderState *record,\n\t\t\t\t\t\txl_brin_insert
      *xlrec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:126,1
    - Dst: brin_xlog_insert_update
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 123
    functionDepth: 6
    functionLinenumber: 123
    functionLinenumberEnd: 129
    functionName: brin_xlog_insert
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_xlog.c
    functionUses: 0
    functionsReached:
    - brin_xlog_insert_update
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void brin_xlog_insert(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:138,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:143,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:149,1
    - Dst: PageIndexTupleDeleteNoCompact
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:153,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:155,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:156,1
    - Dst: brin_xlog_insert_update
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:160,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:162,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 134
    functionDepth: 6
    functionLinenumber: 134
    functionLinenumberEnd: 164
    functionName: brin_xlog_update
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_xlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - PageIndexTupleDeleteNoCompact
    - brin_xlog_insert_update
    - XLogRecGetData
    - BufferGetPage
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void brin_xlog_update(XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:177,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:178,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:186,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:188,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:192,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:193,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:195,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:196,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:198,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:199,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 202
    functionName: brin_xlog_samepage_update
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogReadBufferForRedo
    - XLogRecGetData
    - BufferGetPage
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - PageIndexTupleOverwrite
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void brin_xlog_samepage_update(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:218,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:220,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:221,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:224,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:230,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:231,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:233,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:236,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:248,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:256,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:257,1
    - Dst: brin_page_init
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:258,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:260,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:261,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:263,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:264,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 207
    functionDepth: 4
    functionLinenumber: 207
    functionLinenumberEnd: 266
    functionName: brin_xlog_revmap_extend
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - XLogReadBufferForRedo
    - brin_page_init
    - XLogInitBufferForRedo
    - PageGetContents
    - BufferGetPage
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRecGetBlockTag
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void brin_xlog_revmap_extend(XLogReaderState *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:276,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:279,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:284,1
    - Dst: brinSetHeapBlockItemptr
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:285,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:287,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:287,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:288,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:290,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:291,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:294,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:297,1
    - Dst: PageIndexTupleDeleteNoCompact
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:299,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:301,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:302,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:304,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:305,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 268
    functionDepth: 5
    functionLinenumber: 268
    functionLinenumberEnd: 306
    functionName: brin_xlog_desummarize_page
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_xlog.c
    functionUses: 0
    functionsReached:
    - brinSetHeapBlockItemptr
    - XLogReadBufferForRedo
    - PageIndexTupleDeleteNoCompact
    - XLogRecGetData
    - BufferGetPage
    - BufferIsValid
    - ItemPointerSetInvalid
    - UnlockReleaseBuffer
    - MarkBufferDirty
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void brin_xlog_desummarize_page(XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:311,1
    - Dst: brin_xlog_createidx
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:316,1
    - Dst: brin_xlog_insert
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:319,1
    - Dst: brin_xlog_update
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:322,1
    - Dst: brin_xlog_samepage_update
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:325,1
    - Dst: brin_xlog_revmap_extend
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:328,1
    - Dst: brin_xlog_desummarize_page
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:331,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:334,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 308
    functionDepth: 7
    functionLinenumber: 308
    functionLinenumberEnd: 336
    functionName: brin_redo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - brin_xlog_desummarize_page
    - brin_xlog_createidx
    - brin_xlog_update
    - brin_xlog_insert
    - brin_xlog_samepage_update
    - brin_xlog_revmap_extend
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void brin_redo(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mask_page_lsn_and_checksum
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:347,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:349,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:356,1
    - Dst: BRIN_IS_META_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:357,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:359,1
    - Dst: BrinPageFlags
      Src: /src/postgres/src/backend/access/brin/brin_xlog.c:366,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 367
    functionName: brin_mask
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_xlog.c
    functionUses: 0
    functionsReached:
    - mask_page_lsn_and_checksum
    - mask_unused_space
    - BRIN_IS_REGULAR_PAGE
    - BrinPageFlags
    - mask_page_hint_bits
    - BRIN_IS_META_PAGE
    linkageType: ''
    returnType: void
    signature: void brin_mask(char *pagedata, BlockNumber blkno)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:68,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:68,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:73,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:74,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:75,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:76,1
    - Dst: brinRevmapExtend
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:81,1
    - Dst: brin_getinsertbuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:86,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:87,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:100,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:104,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:108,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:112,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:113,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:123,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:124,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:125,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:127,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:134,1
    - Dst: brin_initialize_empty_new_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:137,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:138,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:140,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:145,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:146,1
    - Dst: brin_tuples_equal
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:151,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:153,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:154,1
    - Dst: brin_initialize_empty_new_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:158,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:159,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:161,1
    - Dst: BrinPageFlags
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:175,1
    - Dst: brin_can_do_samepage_update
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:176,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:178,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:179,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:180,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:181,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:184,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:192,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:193,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:195,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:196,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:198,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:200,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:203,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:205,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:207,1
    - Dst: brin_initialize_empty_new_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:211,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:212,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:214,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:225,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:234,1
    - Dst: brinLockRevmapPageForUpdate
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:240,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:242,1
    - Dst: brin_page_init
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:250,1
    - Dst: PageIndexTupleDeleteNoCompact
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:252,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:253,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:255,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:256,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:257,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:261,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:263,1
    - Dst: brinSetHeapBlockItemptr
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:264,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:265,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:268,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:281,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:284,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:286,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:287,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:290,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:293,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:295,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:297,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:298,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:299,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:299,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:302,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:304,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:305,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:306,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:310,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:311,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 120
    argCount: 11
    argNames:
    - idxrel
    - pagesPerRange
    - revmap
    - heapBlk
    - oldbuf
    - oldoff
    - origtup
    - origsz
    - newtup
    - newsz
    - samepage
    argTypes:
    - Relation
    - BlockNumber
    - BrinRevmap*
    - BlockNumber
    - Buffer
    - OffsetNumber
    - BrinTuple*
    - Size
    - BrinTuple*
    - Size
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 52
    functionDepth: 5
    functionLinenumber: 52
    functionLinenumberEnd: 316
    functionName: brin_doupdate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 2
    functionsReached:
    - ItemPointerSet
    - XLogInsert
    - brinSetHeapBlockItemptr
    - errcode
    - PageIndexTupleDeleteNoCompact
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - RelationGetRelationName
    - XLogRegisterBufData
    - PageIndexTupleOverwrite
    - brin_can_do_samepage_update
    - elog
    - brinLockRevmapPageForUpdate
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - br_page_get_freespace
    - PageGetMaxOffsetNumber
    - brin_initialize_empty_new_buffer
    - errmsg
    - brinRevmapExtend
    - brin_tuples_equal
    - UnlockReleaseBuffer
    - MAXALIGN
    - PageSetLSN
    - ItemIdIsNormal
    - FreeSpaceMapVacuumRange
    - ereport
    - BRIN_IS_REGULAR_PAGE
    - PageGetItemId
    - BrinPageFlags
    - brin_getinsertbuffer
    - PageAddItem
    - BufferIsValid
    - MarkBufferDirty
    - XLogRegisterBuffer
    - brin_page_init
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - RecordPageWithFreeSpace
    - ItemIdGetLength
    - END_CRIT_SECTION
    linkageType: ''
    returnType: bool
    signature: "bool brin_doupdate(Relation idxrel, BlockNumber pagesPerRange,\n\t\t\t
      \ BrinRevmap *revmap, BlockNumber heapBlk,\n\t\t\t  Buffer oldbuf, OffsetNumber
      oldoff,\n\t\t\t  const BrinTuple *origtup, Size origsz,\n\t\t\t  const BrinTuple
      *newtup, Size newsz,\n\t\t\t  bool samepage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:326,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - origsz
    - newsz
    argTypes:
    - Buffer
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 321
    functionDepth: 4
    functionLinenumber: 321
    functionLinenumberEnd: 327
    functionName: brin_can_do_samepage_update
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 3
    functionsReached:
    - PageGetExactFreeSpace
    - BufferGetPage
    linkageType: ''
    returnType: bool
    signature: bool brin_can_do_samepage_update(Buffer buffer, Size origsz, Size newsz)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:353,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:358,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:359,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:360,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:361,1
    - Dst: brinRevmapExtend
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:366,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:372,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:379,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:380,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:380,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:382,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:391,1
    - Dst: brin_getinsertbuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:394,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:395,1
    - Dst: brinLockRevmapPageForUpdate
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:401,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:403,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:404,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:407,1
    - Dst: brin_page_init
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:409,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:410,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:412,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:413,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:417,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:419,1
    - Dst: brinSetHeapBlockItemptr
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:420,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:421,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:424,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:435,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:436,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:438,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:439,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:441,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:443,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:445,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:446,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:446,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:449,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:452,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:453,1
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:455,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:460,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:461,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 57
    argCount: 7
    argNames:
    - idxrel
    - pagesPerRange
    - revmap
    - buffer
    - heapBlk
    - tup
    - itemsz
    argTypes:
    - Relation
    - BlockNumber
    - BrinRevmap*
    - Buffer*
    - BlockNumber
    - BrinTuple*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 340
    functionDepth: 5
    functionLinenumber: 340
    functionLinenumberEnd: 465
    functionName: brin_doinsert
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 4
    functionsReached:
    - ItemPointerSet
    - XLogInsert
    - brinSetHeapBlockItemptr
    - errcode
    - LockBuffer
    - BufferGetPage
    - XLogRegisterData
    - RelationGetRelationName
    - XLogRegisterBufData
    - elog
    - brinLockRevmapPageForUpdate
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - br_page_get_freespace
    - BRIN_elog
    - errmsg
    - brinRevmapExtend
    - UnlockReleaseBuffer
    - MAXALIGN
    - PageSetLSN
    - FreeSpaceMapVacuumRange
    - ereport
    - PageAddItem
    - brin_getinsertbuffer
    - BufferIsValid
    - MarkBufferDirty
    - XLogRegisterBuffer
    - brin_page_init
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - RecordPageWithFreeSpace
    - END_CRIT_SECTION
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber brin_doinsert(Relation idxrel, BlockNumber pagesPerRange,\n\t\t\t
      \ BrinRevmap *revmap, Buffer *buffer, BlockNumber heapBlk,\n\t\t\t  const BrinTuple
      *tup, Size itemsz)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:475,1
    - Dst: BrinPageType
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - page
    - type
    argTypes:
    - Page
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 478
    functionName: brin_page_init
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 5
    functionsReached:
    - BrinPageType
    - PageInit
    linkageType: ''
    returnType: void
    signature: void brin_page_init(Page page, uint16 type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: brin_page_init
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:488,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - page
    - pagesPerRange
    - version
    argTypes:
    - Page
    - BlockNumber
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 483
    functionDepth: 2
    functionLinenumber: 483
    functionLinenumberEnd: 510
    functionName: brin_metapage_init
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 3
    functionsReached:
    - brin_page_init
    - PageGetContents
    linkageType: ''
    returnType: void
    signature: void brin_metapage_init(Page page, BlockNumber pagesPerRange, uint16
      version)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:528,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:530,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:533,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:538,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:539,1
    - Dst: BrinPageFlags
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:547,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:548,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - idxRel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 521
    functionDepth: 4
    functionLinenumber: 521
    functionLinenumberEnd: 554
    functionName: brin_start_evacuating_page
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 1
    functionsReached:
    - ItemIdIsUsed
    - MarkBufferDirtyHint
    - PageIsNew
    - PageGetItemId
    - BufferGetPage
    - BrinPageFlags
    - PageGetMaxOffsetNumber
    linkageType: ''
    returnType: bool
    signature: bool brin_start_evacuating_page(Relation idxRel, Buffer buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:573,1
    - Dst: BrinPageFlags
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:573,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:575,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:582,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:584,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:585,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:587,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:588,1
    - Dst: brin_copy_tuple
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:589,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:591,1
    - Dst: brin_doupdate
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:593,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:597,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:600,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:605,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - idxRel
    - pagesPerRange
    - revmap
    - buf
    argTypes:
    - Relation
    - BlockNumber
    - BrinRevmap*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 561
    functionDepth: 6
    functionLinenumber: 561
    functionLinenumberEnd: 606
    functionName: brin_evacuate_page
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 1
    functionsReached:
    - ItemIdIsUsed
    - brin_doupdate
    - Assert
    - LockBuffer
    - BRIN_IS_REGULAR_PAGE
    - CHECK_FOR_INTERRUPTS
    - BufferGetPage
    - BrinPageFlags
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - brin_copy_tuple
    - UnlockReleaseBuffer
    - ItemIdGetLength
    linkageType: ''
    returnType: void
    signature: "void brin_evacuate_page(Relation idxRel, BlockNumber pagesPerRange,\n\t\t\t\t
      \  BrinRevmap *revmap, Buffer buf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:624,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:636,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:638,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:639,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:641,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:642,1
    - Dst: brin_initialize_empty_new_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:644,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:645,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:648,1
    - Dst: BRIN_IS_META_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:652,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:652,1
    - Dst: BRIN_IS_REVMAP_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:653,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:653,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:657,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:657,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:658,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - idxrel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 621
    functionDepth: 4
    functionLinenumber: 621
    functionLinenumberEnd: 659
    functionName: brin_page_cleanup
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 1
    functionsReached:
    - BufferGetBlockNumber
    - LockBuffer
    - PageIsNew
    - br_page_get_freespace
    - BufferGetPage
    - RecordPageWithFreeSpace
    - brin_initialize_empty_new_buffer
    - BRIN_IS_REVMAP_PAGE
    - LockRelationForExtension
    - UnlockRelationForExtension
    - BRIN_IS_META_PAGE
    linkageType: ''
    returnType: void
    signature: void brin_page_cleanup(Relation idxrel, Buffer buf)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:697,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:699,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:700,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:705,1
    - Dst: GetPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:707,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:720,1
    - Dst: RELATION_IS_LOCAL
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:735,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:737,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:740,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:741,1
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:744,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:745,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:757,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:766,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:768,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:769,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:769,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:771,1
    - Dst: brin_initialize_empty_new_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:782,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:785,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:787,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:791,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:800,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:803,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:805,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:814,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:817,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:825,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:827,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:828,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:828,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:828,1
    - Dst: brin_initialize_empty_new_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:844,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:847,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:848,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:849,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:850,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:855,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:856,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:857,1
    - Dst: RecordAndGetPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:863,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 66
    argCount: 4
    argNames:
    - irel
    - oldbuf
    - itemsz
    - extended
    argTypes:
    - Relation
    - Buffer
    - Size
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 687
    functionDepth: 4
    functionLinenumber: 687
    functionLinenumberEnd: 865
    functionName: brin_getinsertbuffer
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 2
    functionsReached:
    - RelationSetTargetBlock
    - errcode
    - LockBuffer
    - BufferGetPage
    - RelationGetTargetBlock
    - RelationGetRelationName
    - ReleaseBuffer
    - Assert
    - GetPageWithFreeSpace
    - BufferGetBlockNumber
    - br_page_get_freespace
    - BRIN_elog
    - brin_initialize_empty_new_buffer
    - ReadBuffer
    - errmsg
    - LockRelationForExtension
    - UnlockReleaseBuffer
    - RecordAndGetPageWithFreeSpace
    - FreeSpaceMapVacuumRange
    - BRIN_IS_REGULAR_PAGE
    - ereport
    - CHECK_FOR_INTERRUPTS
    - BufferIsValid
    - RELATION_IS_LOCAL
    - UnlockRelationForExtension
    linkageType: ''
    returnType: Buffer
    signature: "Buffer brin_getinsertbuffer(Relation irel, Buffer oldbuf, Size itemsz,\n\t\t\t\t\t
      bool *extended)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:886,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:888,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:890,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:891,1
    - Dst: brin_page_init
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:892,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:893,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:896,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:897,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:899,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:906,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:906,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:907,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - idxrel
    - buffer
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 881
    functionDepth: 4
    functionLinenumber: 881
    functionLinenumberEnd: 908
    functionName: brin_initialize_empty_new_buffer
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 3
    functionsReached:
    - BufferGetBlockNumber
    - brin_page_init
    - br_page_get_freespace
    - START_CRIT_SECTION
    - BufferGetPage
    - BRIN_elog
    - RelationNeedsWAL
    - RecordPageWithFreeSpace
    - MarkBufferDirty
    - log_newpage_buffer
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void brin_initialize_empty_new_buffer(Relation idxrel, Buffer buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:920,1
    - Dst: BrinPageFlags
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:921,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:924,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 925
    functionName: br_page_get_freespace
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 5
    functionsReached:
    - BrinPageFlags
    - BRIN_IS_REGULAR_PAGE
    - PageGetFreeSpace
    linkageType: ''
    returnType: Size
    signature: Size br_page_get_freespace(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opts
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: MinMaxMultiGetValuesPerRange
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MinMaxMultiGetValuesPerRange(opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:285,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - cmp
    - colloid
    - values
    - nvalues
    argTypes:
    - FmgrInfo*
    - Oid
    - Datum*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 287
    functionName: AssertArrayOrder
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - Assert
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void AssertArrayOrder(FmgrInfo *cmp, Oid colloid, const Datum *values,
      int nvalues)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:302,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:304,1
    - Dst: AssertArrayOrder
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:312,1
    - Dst: AssertArrayOrder
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:315,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:333,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:339,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:342,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:349,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:371,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:374,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:384,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:387,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:394,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:411,1
    - Dst: bsearch_arg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:411,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - ranges
    - cmpFn
    - colloid
    argTypes:
    - Ranges*
    - FmgrInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 417
    functionName: AssertCheckRanges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - FunctionCall2Coll
    - bsearch_arg
    - AssertArrayOrder
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void AssertCheckRanges(Ranges *ranges, FmgrInfo *cmpFn, Oid colloid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:433,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:436,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:450,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:454,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:454,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:467,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:469,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:469,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - bdesc
    - colloid
    - attno
    - attr
    - ranges
    - nranges
    argTypes:
    - BrinDesc*
    - Oid
    - AttrNumber
    - Form_pg_attribute
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 472
    functionName: AssertCheckExpandedRanges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - minmax_multi_get_strategy_procinfo
    - Assert
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: "void AssertCheckExpandedRanges(BrinDesc *bdesc, Oid colloid, AttrNumber
      attno,\n\t\t\t\t\t\t  Form_pg_attribute attr, ExpandedRange *ranges,\n\t\t\t\t\t\t
      \ int nranges)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:489,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - maxvalues
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 499
    functionName: minmax_multi_init
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0
    linkageType: ''
    returnType: Ranges
    signature: 'Ranges *

      minmax_multi_init(int maxvalues)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:540,1
    - Dst: compare_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:548,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:562,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - range
    argTypes:
    - Ranges*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 513
    functionDepth: 3
    functionLinenumber: 513
    functionLinenumberEnd: 563
    functionName: range_deduplicate_values
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - compare_values
    - AssertCheckRanges
    - qsort_arg
    linkageType: ''
    returnType: void
    signature: void range_deduplicate_values(Ranges *range)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:586,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:588,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:598,1
    - Dst: range_deduplicate_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:601,1
    - Dst: get_typbyval
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:607,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:608,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:625,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:625,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:635,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:635,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:640,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:648,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:649,1
    - Dst: store_att_byval
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:676,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:678,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:683,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:683,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:688,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:688,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:690,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:690,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:695,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:695,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:697,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:702,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:706,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 57
    argCount: 1
    argNames:
    - range
    argTypes:
    - Ranges*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 573
    functionDepth: 4
    functionLinenumber: 573
    functionLinenumberEnd: 709
    functionName: brin_range_serialize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - range_deduplicate_values
    - memcpy
    - store_att_byval
    - Assert
    - palloc0
    - get_typlen
    - VARSIZE_ANY
    - get_typbyval
    - strlen
    - SET_VARSIZE
    - DatumGetCString
    - DatumGetPointer
    linkageType: ''
    returnType: SerializedRanges
    signature: 'SerializedRanges *

      brin_range_serialize(Ranges *range)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:731,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:738,1
    - Dst: minmax_multi_init
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:740,1
    - Dst: get_typbyval
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:751,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:752,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:772,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:775,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:775,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:776,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:780,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:782,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:788,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:802,1
    - Dst: fetch_att
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:804,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:809,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:811,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:812,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:818,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:820,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:820,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:821,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:821,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:822,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:826,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:828,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:830,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:831,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:836,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:836,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:840,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:840,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 62
    argCount: 2
    argNames:
    - maxvalues
    - serialized
    argTypes:
    - int
    - SerializedRanges*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 718
    functionDepth: 4
    functionLinenumber: 718
    functionLinenumberEnd: 844
    functionName: brin_range_deserialize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - minmax_multi_init
    - memcpy
    - Assert
    - get_typlen
    - VARSIZE_ANY
    - get_typbyval
    - strlen
    - PointerGetDatum
    - palloc
    - fetch_att
    - MAXALIGN
    linkageType: ''
    returnType: Ranges
    signature: 'Ranges *

      brin_range_deserialize(int maxvalues, SerializedRanges *serialized)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:865,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:867,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:870,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:872,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:876,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:878,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:881,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:883,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 855
    functionDepth: 1
    functionLinenumber: 855
    functionLinenumberEnd: 887
    functionName: compare_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - DatumGetBool
    linkageType: ''
    returnType: int
    signature: int compare_expanded_ranges(const void *a, const void *b, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:902,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:904,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:907,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:909,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 893
    functionDepth: 1
    functionLinenumber: 893
    functionLinenumberEnd: 913
    functionName: compare_values
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 1
    functionsReached:
    - FunctionCall2Coll
    - DatumGetBool
    linkageType: ''
    returnType: int
    signature: int compare_values(const void *a, const void *b, void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:945,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:947,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:950,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:958,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:960,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:962,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:990,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:993,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1003,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1006,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 6
    argNames:
    - bdesc
    - colloid
    - ranges
    - newval
    - attno
    - typid
    argTypes:
    - BrinDesc*
    - Oid
    - Ranges*
    - Datum
    - AttrNumber
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 918
    functionDepth: 1
    functionLinenumber: 918
    functionLinenumberEnd: 1017
    functionName: has_matching_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - minmax_multi_get_strategy_procinfo
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool has_matching_range(BrinDesc *bdesc, Oid colloid, Ranges *ranges,\n\t\t\t\t
      \  Datum newval, AttrNumber attno, Oid typid)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: has_matching_range
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1056,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1059,1
    - Dst: bsearch_arg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1083,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1094,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1097,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1111,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1114,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 7
    argNames:
    - bdesc
    - colloid
    - attno
    - attr
    - ranges
    - newval
    - full
    argTypes:
    - BrinDesc*
    - Oid
    - AttrNumber
    - Form_pg_attribute
    - Ranges*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1042
    functionDepth: 2
    functionLinenumber: 1042
    functionLinenumberEnd: 1120
    functionName: range_contains_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - bsearch_arg
    - has_matching_range
    - minmax_multi_get_strategy_procinfo
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool range_contains_value(BrinDesc *bdesc, Oid colloid,\n\t\t\t\t\t
      AttrNumber attno, Form_pg_attribute attr,\n\t\t\t\t\t Ranges *ranges, Datum
      newval, bool full)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1158,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - eranges
    - neranges
    - ranges
    argTypes:
    - ExpandedRange*
    - int
    - Ranges*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1165
    functionName: fill_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void fill_expanded_ranges(ExpandedRange *eranges, int neranges, Ranges
      *ranges)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1184,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1195,1
    - Dst: compare_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1206,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - cmp
    - colloid
    - eranges
    - neranges
    argTypes:
    - FmgrInfo*
    - Oid
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1176
    functionDepth: 2
    functionLinenumber: 1176
    functionLinenumberEnd: 1219
    functionName: sort_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - compare_expanded_ranges
    - qsort_arg
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int sort_expanded_ranges(FmgrInfo *cmp, Oid colloid,\n\t\t\t\t\t ExpandedRange
      *eranges, int neranges)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1244,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1253,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1265,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1269,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - cmp
    - colloid
    - eranges
    - neranges
    argTypes:
    - FmgrInfo*
    - Oid
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1295
    functionName: merge_overlapping_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - memmove
    - DatumGetBool
    linkageType: ''
    returnType: int
    signature: "int merge_overlapping_ranges(FmgrInfo *cmp, Oid colloid,\n\t\t\t\t\t\t
      ExpandedRange *eranges, int neranges)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1302
    functionDepth: 0
    functionLinenumber: 1302
    functionLinenumberEnd: 1314
    functionName: compare_distances
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int compare_distances(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1334,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1341,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1357,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1361,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - distanceFn
    - colloid
    - eranges
    - neranges
    argTypes:
    - FmgrInfo*
    - Oid
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1326
    functionDepth: 2
    functionLinenumber: 1326
    functionLinenumberEnd: 1371
    functionName: build_distances
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - qsort
    - palloc0_array
    - Assert
    - FunctionCall2Coll
    - DatumGetFloat8
    linkageType: ''
    returnType: DistanceValue
    signature: "DistanceValue *\nbuild_distances(FmgrInfo *distanceFn, Oid colloid,\n\t\t\t\tExpandedRange
      *eranges, int neranges)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1393,1
    - Dst: fill_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1396,1
    - Dst: sort_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - cmp
    - colloid
    - ranges
    - nranges
    argTypes:
    - FmgrInfo*
    - Oid
    - Ranges*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1383
    functionDepth: 3
    functionLinenumber: 1383
    functionLinenumberEnd: 1405
    functionName: build_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - palloc0
    - fill_expanded_ranges
    - sort_expanded_ranges
    linkageType: ''
    returnType: ExpandedRange
    signature: "ExpandedRange *\nbuild_expanded_ranges(FmgrInfo *cmp, Oid colloid,
      Ranges *ranges,\n\t\t\t\t\t  int *nranges)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - cranges
    - ncranges
    argTypes:
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1412
    functionDepth: 0
    functionLinenumber: 1412
    functionLinenumberEnd: 1428
    functionName: count_values
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int count_values(ExpandedRange *cranges, int ncranges)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1505,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1527,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1533,1
    - Dst: compare_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1543,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 6
    argNames:
    - eranges
    - neranges
    - distances
    - max_values
    - cmp
    - colloid
    argTypes:
    - ExpandedRange*
    - int
    - DistanceValue*
    - int
    - FmgrInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1473
    functionDepth: 2
    functionLinenumber: 1473
    functionLinenumberEnd: 1549
    functionName: reduce_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - compare_values
    - qsort_arg
    - palloc_array
    linkageType: ''
    returnType: int
    signature: "int reduce_expanded_ranges(ExpandedRange *eranges, int neranges,\n\t\t\t\t\t
      \  DistanceValue *distances, int max_values,\n\t\t\t\t\t   FmgrInfo *cmp, Oid
      colloid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1587,1
    - Dst: count_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1588,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - ranges
    - eranges
    - neranges
    argTypes:
    - Ranges*
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1589
      start: 1555
    functionDepth: 1
    functionLinenumber: 1555
    functionLinenumberEnd: 1589
    functionName: store_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - count_values
    linkageType: ''
    returnType: void
    signature: void store_expanded_ranges(Ranges *ranges, ExpandedRange *eranges,
      int neranges)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1622,1
    - Dst: range_deduplicate_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1626,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1650,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1654,1
    - Dst: build_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1657,1
    - Dst: AssertCheckExpandedRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1660,1
    - Dst: minmax_multi_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1663,1
    - Dst: build_distances
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1666,1
    - Dst: reduce_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1673,1
    - Dst: AssertCheckExpandedRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1681,1
    - Dst: count_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1681,1
    - Dst: store_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1684,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1686,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1687,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 5
    argNames:
    - bdesc
    - colloid
    - attno
    - attr
    - range
    argTypes:
    - BrinDesc*
    - Oid
    - AttrNumber
    - Form_pg_attribute
    - Ranges*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1598
    functionDepth: 4
    functionLinenumber: 1598
    functionLinenumberEnd: 1693
    functionName: ensure_free_space_in_buffer
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - range_deduplicate_values
    - build_expanded_ranges
    - Assert
    - AssertCheckRanges
    - AssertCheckExpandedRanges
    - count_values
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - reduce_expanded_ranges
    - minmax_multi_get_procinfo
    - build_distances
    - AllocSetContextCreate
    - store_expanded_ranges
    - minmax_multi_get_strategy_procinfo
    linkageType: ''
    returnType: bool
    signature: "bool ensure_free_space_in_buffer(BrinDesc *bdesc, Oid colloid,\n\t\t\t\t\t\t\tAttrNumber
      attno, Form_pg_attribute attr,\n\t\t\t\t\t\t\tRanges *range)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1708,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1712,1
    - Dst: ensure_free_space_in_buffer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1729,1
    - Dst: range_contains_value
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1746,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1750,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1771,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1774,1
    - Dst: range_contains_value
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1774,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 6
    argNames:
    - bdesc
    - colloid
    - attno
    - attr
    - ranges
    - newval
    argTypes:
    - BrinDesc*
    - Oid
    - AttrNumber
    - Form_pg_attribute
    - Ranges*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1699
    functionDepth: 5
    functionLinenumber: 1699
    functionLinenumberEnd: 1778
    functionName: range_add_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - range_contains_value
    - Assert
    - AssertCheckRanges
    - datumCopy
    - ensure_free_space_in_buffer
    - minmax_multi_get_strategy_procinfo
    linkageType: ''
    returnType: bool
    signature: "bool range_add_value(BrinDesc *bdesc, Oid colloid,\n\t\t\t\tAttrNumber
      attno, Form_pg_attribute attr,\n\t\t\t\tRanges *ranges, Datum newval)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1810,1
    - Dst: minmax_multi_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1814,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1823,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1827,1
    - Dst: build_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1830,1
    - Dst: build_distances
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1833,1
    - Dst: reduce_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1844,1
    - Dst: count_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1844,1
    - Dst: store_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1847,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1850,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1852,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - bdesc
    - ranges
    - max_values
    argTypes:
    - BrinDesc*
    - Ranges*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1785
    functionDepth: 4
    functionLinenumber: 1785
    functionLinenumberEnd: 1854
    functionName: compactify_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - build_expanded_ranges
    - Assert
    - AssertCheckRanges
    - count_values
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - reduce_expanded_ranges
    - minmax_multi_get_procinfo
    - build_distances
    - AllocSetContextCreate
    - store_expanded_ranges
    - minmax_multi_get_strategy_procinfo
    linkageType: ''
    returnType: void
    signature: void compactify_ranges(BrinDesc *bdesc, Ranges *ranges, int max_values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1866,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1866,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1866,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1871,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1871,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1872,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1856
    functionDepth: 1
    functionLinenumber: 1856
    functionLinenumberEnd: 1875
    functionName: brin_minmax_multi_opcinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - SizeofBrinOpcInfo
    - palloc0
    - MAXALIGN
    - PG_RETURN_POINTER
    - lookup_type_cache
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_opcinfo(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1883,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1884,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1887,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1887,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1888,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1891,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1891,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1892,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1892,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1898,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1900,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1901
      start: 1880
    functionDepth: 1
    functionLinenumber: 1880
    functionLinenumberEnd: 1901
    functionName: brin_minmax_multi_distance_float4
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - Assert
    - PG_RETURN_FLOAT8
    - isnan
    - get_float8_infinity
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_float4(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1909,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1910,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1913,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1913,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1914,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1917,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1917,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1918,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1924,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1926,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1927
      start: 1906
    functionDepth: 1
    functionLinenumber: 1906
    functionLinenumberEnd: 1927
    functionName: brin_minmax_multi_distance_float8
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT8
    - Assert
    - PG_RETURN_FLOAT8
    - isnan
    - get_float8_infinity
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_float8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1935,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1936,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1942,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1932
    functionDepth: 1
    functionLinenumber: 1932
    functionLinenumberEnd: 1945
    functionName: brin_minmax_multi_distance_int2
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_int2(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1953,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1960,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1950
    functionDepth: 1
    functionLinenumber: 1950
    functionLinenumberEnd: 1963
    functionName: brin_minmax_multi_distance_int4
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1971,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1972,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1978,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1981
      start: 1968
    functionDepth: 1
    functionLinenumber: 1968
    functionLinenumberEnd: 1981
    functionName: brin_minmax_multi_distance_int8
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1993,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1994,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2000,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2000,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2006,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2007,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2009,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2010,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2013
      start: 1987
    functionDepth: 2
    functionLinenumber: 1987
    functionLinenumberEnd: 2013
    functionName: brin_minmax_multi_distance_tid
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerGetBlockNumberNoCheck
    - ItemPointerGetOffsetNumberNoCheck
    - ItemPointerCompare
    - PG_RETURN_FLOAT8
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_tid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2022,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2023,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2029,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2029,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2029,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2031,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2033,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2018
    functionDepth: 1
    functionLinenumber: 2018
    functionLinenumberEnd: 2034
    functionName: brin_minmax_multi_distance_numeric
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - Assert
    - PG_RETURN_DATUM
    - DirectFunctionCall1
    - DirectFunctionCall2
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_numeric(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2050,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2051,1
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2053,1
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2054,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2060,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2060,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2060,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2069,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2072
      start: 2044
    functionDepth: 2
    functionLinenumber: 2044
    functionLinenumberEnd: 2072
    functionName: brin_minmax_multi_distance_uuid
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - Assert
    - PG_RETURN_FLOAT8
    - DirectFunctionCall2
    - DatumGetUUIDP
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_uuid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2081,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2082,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2086,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2089
      start: 2077
    functionDepth: 1
    functionLinenumber: 2077
    functionLinenumberEnd: 2089
    functionName: brin_minmax_multi_distance_date
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2101,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2106,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2096
    functionDepth: 1
    functionLinenumber: 2096
    functionLinenumberEnd: 2109
    functionName: brin_minmax_multi_distance_time
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_time(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2121,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2122,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2126,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2129
      start: 2116
    functionDepth: 1
    functionLinenumber: 2116
    functionLinenumberEnd: 2129
    functionName: brin_minmax_multi_distance_timetz
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_TIMETZADT_P
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_timetz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2139,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2144,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2147
      start: 2134
    functionDepth: 1
    functionLinenumber: 2134
    functionLinenumberEnd: 2147
    functionName: brin_minmax_multi_distance_timestamp
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_TIMESTAMP
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2157,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2158,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2177,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2180
      start: 2152
    functionDepth: 1
    functionLinenumber: 2152
    functionLinenumberEnd: 2180
    functionName: brin_minmax_multi_distance_interval
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - INT64CONST
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_interval(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2193,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2198,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2201
      start: 2188
    functionDepth: 1
    functionLinenumber: 2188
    functionLinenumberEnd: 2201
    functionName: brin_minmax_multi_distance_pg_lsn
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_LSN
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_pg_lsn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2214,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2215,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2235,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2238
      start: 2209
    functionDepth: 1
    functionLinenumber: 2209
    functionLinenumberEnd: 2238
    functionName: brin_minmax_multi_distance_macaddr
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_MACADDR_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_macaddr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR8_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2251,1
    - Dst: PG_GETARG_MACADDR8_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2278,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2281
      start: 2246
    functionDepth: 1
    functionLinenumber: 2246
    functionLinenumberEnd: 2281
    functionName: brin_minmax_multi_distance_macaddr8
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_MACADDR8_P
    - PG_RETURN_FLOAT8
    - Assert
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_macaddr8(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INET_PP
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2303,1
    - Dst: PG_GETARG_INET_PP
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2304,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2313,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2313,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2314,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2316,1
    - Dst: ip_addrsize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2316,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2317,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2317,1
    - Dst: ip_addrsize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2317,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2319,1
    - Dst: ip_addrsize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2319,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2320,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2320,1
    - Dst: ip_addrsize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2320,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2332,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2333,1
    - Dst: ip_addrsize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2335,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2343,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2350,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2369,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2371,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2372,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2374,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2375
      start: 2294
    functionDepth: 1
    functionLinenumber: 2294
    functionLinenumberEnd: 2375
    functionName: brin_minmax_multi_distance_inet
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - ip_family
    - memcpy
    - Assert
    - pfree
    - ip_addr
    - Max
    - palloc
    - PG_RETURN_FLOAT8
    - ip_bits
    - PG_GETARG_INET_PP
    - ip_addrsize
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_inet(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2380,1
    - Dst: compactify_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2387,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2390,1
    - Dst: brin_range_serialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2392,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - bdesc
    - src
    - dst
    argTypes:
    - BrinDesc*
    - Datum
    - Datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2394
      start: 2377
    functionDepth: 5
    functionLinenumber: 2377
    functionLinenumberEnd: 2394
    functionName: brin_minmax_multi_serialize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PointerGetDatum
    - brin_range_serialize
    - compactify_ranges
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void brin_minmax_multi_serialize(BrinDesc *bdesc, Datum src, Datum
      *dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MinMaxMultiGetValuesPerRange
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bdesc
    - opts
    argTypes:
    - BrinDesc*
    - MinMaxMultiOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2400
      start: 2396
    functionDepth: 1
    functionLinenumber: 2396
    functionLinenumberEnd: 2400
    functionName: brin_minmax_multi_get_values
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - MinMaxMultiGetValuesPerRange
    linkageType: ''
    returnType: int
    signature: int brin_minmax_multi_get_values(BrinDesc *bdesc, MinMaxMultiOptions
      *opts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2412,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2413,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2414,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2415,1
    - Dst: PG_GET_OPCLASS_OPTIONS
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2416,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2417,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2424,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2427,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2430,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2448,1
    - Dst: brin_minmax_multi_get_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2451,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2459,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2463,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2466,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2467,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2469,1
    - Dst: minmax_multi_init
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2470,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2477,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2480,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2485,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2493,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2495,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2497,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2505,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2509,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2512,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2513,1
    - Dst: brin_range_deserialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2515,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2522,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2525,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2528,1
    - Dst: range_add_value
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2535,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2539
      start: 2409
    functionDepth: 6
    functionLinenumber: 2409
    functionLinenumberEnd: 2539
    functionName: brin_minmax_multi_add_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GET_OPCLASS_OPTIONS
    - PG_RETURN_BOOL
    - brin_range_deserialize
    - Assert
    - brin_minmax_multi_get_values
    - BrinGetPagesPerRange
    - PointerGetDatum
    - PG_GETARG_POINTER
    - range_add_value
    - TupleDescAttr
    - minmax_multi_get_strategy_procinfo
    - minmax_multi_init
    - PG_GETARG_BOOL
    - PG_DETOAST_DATUM
    - MemoryContextSwitchTo
    - Max
    - Min
    - PG_GET_COLLATION
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_add_value(PG_FUNCTION_ARGS)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2549,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2550,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2551,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2552,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2554,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2567,1
    - Dst: brin_range_deserialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2568,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2585,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2594,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2597,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2597,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2614,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2616,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2619,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2622,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2624,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2627,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2640,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2643,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2643,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2648,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2665,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2700,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2702,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2702,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2707,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2722,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2725,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 75
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2726
      start: 2546
    functionDepth: 5
    functionLinenumber: 2546
    functionLinenumberEnd: 2726
    functionName: brin_minmax_multi_consistent
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - elog
    - brin_range_deserialize
    - PG_DETOAST_DATUM
    - Assert
    - PG_GET_COLLATION
    - FunctionCall2Coll
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    - minmax_multi_get_strategy_procinfo
    - PG_GETARG_INT32
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_consistent(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2735,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2736,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2737,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2739,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2754,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2755,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2758,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2760,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2761,1
    - Dst: brin_range_deserialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2763,1
    - Dst: brin_range_deserialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2764,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2767,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2779,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2783,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2786,1
    - Dst: fill_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2789,1
    - Dst: fill_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2793,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2797,1
    - Dst: sort_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2801,1
    - Dst: merge_overlapping_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2807,1
    - Dst: AssertCheckExpandedRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2810,1
    - Dst: minmax_multi_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2820,1
    - Dst: build_distances
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2821,1
    - Dst: reduce_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2834,1
    - Dst: AssertCheckExpandedRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2839,1
    - Dst: store_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2842,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2844,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2845,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2848,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2849,1
    - Dst: brin_range_serialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2849,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2852
      start: 2732
    functionDepth: 5
    functionLinenumber: 2732
    functionLinenumberEnd: 2852
    functionName: brin_minmax_multi_union
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - brin_range_deserialize
    - sort_expanded_ranges
    - Assert
    - pfree
    - minmax_multi_get_procinfo
    - PointerGetDatum
    - PG_GETARG_POINTER
    - AssertCheckExpandedRanges
    - fill_expanded_ranges
    - build_distances
    - brin_range_serialize
    - AllocSetContextCreate
    - TupleDescAttr
    - minmax_multi_get_strategy_procinfo
    - PG_DETOAST_DATUM
    - palloc0
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - reduce_expanded_ranges
    - store_expanded_ranges
    - PG_GET_COLLATION
    - merge_overlapping_ranges
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_union(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2874,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2874,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2876,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2877,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2880,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2881,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2882,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2883,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - bdesc
    - attno
    - procnum
    argTypes:
    - BrinDesc*
    - uint16
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2888
      start: 2860
    functionDepth: 2
    functionLinenumber: 2860
    functionLinenumberEnd: 2888
    functionName: minmax_multi_get_procinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 3
    functionsReached:
    - RegProcedureIsValid
    - fmgr_info_copy
    - errmsg_internal
    - errcode
    - ereport
    - index_getprocid
    - errdetail_internal
    - index_getprocinfo
    linkageType: ''
    returnType: FmgrInfo
    signature: 'FmgrInfo *

      minmax_multi_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2902,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2929,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2930,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2930,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2931,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2932,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2933,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2934,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2935,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2938,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2938,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2941,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2941,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2943,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2943,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - bdesc
    - attno
    - subtype
    - strategynum
    argTypes:
    - BrinDesc*
    - uint16
    - Oid
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2949
      start: 2896
    functionDepth: 2
    functionLinenumber: 2896
    functionLinenumberEnd: 2949
    functionName: minmax_multi_get_strategy_procinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 9
    functionsReached:
    - elog
    - UInt16GetDatum
    - SysCacheGetAttrNotNull
    - RegProcedureIsValid
    - Assert
    - HeapTupleIsValid
    - DatumGetObjectId
    - ObjectIdGetDatum
    - ReleaseSysCache
    - SearchSysCache4
    - TupleDescAttr
    - get_opcode
    - fmgr_info_cxt
    linkageType: ''
    returnType: FmgrInfo
    signature: "FmgrInfo *\nminmax_multi_get_strategy_procinfo(BrinDesc *bdesc, uint16
      attno, Oid subtype,\n\t\t\t\t\t\t\t\t   uint16 strategynum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2954,1
    - Dst: init_local_reloptions
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2956,1
    - Dst: add_local_int_reloption
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2958,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2963
      start: 2951
    functionDepth: 4
    functionLinenumber: 2951
    functionLinenumberEnd: 2963
    functionName: brin_minmax_multi_options
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - add_local_int_reloption
    - init_local_reloptions
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_options(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2980,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2981,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2982,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2985
      start: 2973
    functionDepth: 1
    functionLinenumber: 2973
    functionLinenumberEnd: 2985
    functionName: brin_minmax_multi_summary_in
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_summary_in(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3008,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3009,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3015,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3015,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3018,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3019,1
    - Dst: brin_range_deserialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3022,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3024,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3038,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3040,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3041,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3043,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3045,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3047,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3048,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3061,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3063,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3065,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3067,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3078,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3079,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3079,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3081,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3082,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3095,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3097,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3099,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3101,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3105,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3108
      start: 2995
    functionDepth: 5
    functionLinenumber: 2995
    functionLinenumberEnd: 3108
    functionName: brin_minmax_multi_summary_out
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - fmgr_info
    - PG_DETOAST_DATUM
    - appendStringInfo
    - cstring_to_text
    - initStringInfo
    - PG_RETURN_CSTRING
    - OutputFunctionCall
    - cstring_to_text_with_len
    - OidOutputFunctionCall
    - PointerGetDatum
    - FunctionCall1
    - DatumGetCString
    - brin_range_deserialize
    - getTypeOutputInfo
    - makeArrayResult
    - appendStringInfoChar
    - accumArrayResult
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_summary_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3117,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3118,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3119,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3122
      start: 3114
    functionDepth: 1
    functionLinenumber: 3114
    functionLinenumberEnd: 3122
    functionName: brin_minmax_multi_summary_recv
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_summary_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: byteasend
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3135
      start: 3131
    functionDepth: 1
    functionLinenumber: 3131
    functionLinenumberEnd: 3135
    functionName: brin_minmax_multi_summary_send
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - byteasend
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_summary_send(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/timeline.c:62,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:63,1
    - Dst: KeepFileRestoredFromArchive
      Src: /src/postgres/src/backend/access/transam/timeline.c:64,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - TimeLineID
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 66
    functionName: restoreTimeLineHistoryFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - RestoreArchivedFile
    - KeepFileRestoredFromArchive
    - TLHistoryFileName
    linkageType: ''
    returnType: void
    signature: void restoreTimeLineHistoryFiles(TimeLineID begin, TimeLineID end)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/transam/timeline.c:91,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/access/transam/timeline.c:94,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/timeline.c:99,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:101,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:104,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:106,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:110,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:111,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:112,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/transam/timeline.c:114,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/access/transam/timeline.c:117,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:136,1
    - Dst: fgets
      Src: /src/postgres/src/backend/access/transam/timeline.c:137,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:138,1
    - Dst: ferror
      Src: /src/postgres/src/backend/access/transam/timeline.c:141,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:142,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:143,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:144,1
    - Dst: isspace
      Src: /src/postgres/src/backend/access/transam/timeline.c:152,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/access/transam/timeline.c:158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:163,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:164,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/timeline.c:165,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:168,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:169,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/timeline.c:170,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:174,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/timeline.c:175,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/transam/timeline.c:179,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/transam/timeline.c:186,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:191,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:194,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:195,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/timeline.c:196,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/transam/timeline.c:202,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/transam/timeline.c:207,1
    - Dst: KeepFileRestoredFromArchive
      Src: /src/postgres/src/backend/access/transam/timeline.c:214,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 1
    argNames:
    - targetTLI
    argTypes:
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 217
    functionName: readTimeLineHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - AllocateFile
    - TLHistoryFileName
    - KeepFileRestoredFromArchive
    - errhint
    - FreeFile
    - RestoreArchivedFile
    - ferror
    - pgstat_report_wait_end
    - errmsg
    - palloc_object
    - TLHistoryFilePath
    - sscanf
    - ereport
    - isspace
    - fgets
    - list_make1
    - errcode_for_file_access
    - pgstat_report_wait_start
    - lcons
    linkageType: ''
    returnType: List
    signature: 'List *

      readTimeLineHistory(TimeLineID targetTLI)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/timeline.c:235,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:236,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:239,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:241,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:250,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - probeTLI
    argTypes:
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 255
    functionName: existsTimeLineHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - TLHistoryFilePath
    - RestoreArchivedFile
    - AllocateFile
    - TLHistoryFileName
    - ereport
    - errmsg
    - FreeFile
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: bool existsTimeLineHistory(TimeLineID probeTLI)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: existsTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/timeline.c:278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - startTLI
    argTypes:
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 290
    functionName: findNewestTimeLine
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - existsTimeLineHistory
    linkageType: ''
    returnType: TimeLineID
    signature: TimeLineID findNewestTimeLine(TimeLineID startTLI)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/timeline.c:316,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/timeline.c:321,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/timeline.c:321,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:323,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:328,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:329,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:330,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/timeline.c:337,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:338,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:341,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:343,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:347,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:349,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:357,1
    - Dst: read
      Src: /src/postgres/src/backend/access/transam/timeline.c:358,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:359,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:361,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:362,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:363,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:367,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/timeline.c:368,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:383,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:384,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:385,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:387,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:390,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:391,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:392,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:393,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/timeline.c:402,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/timeline.c:406,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/timeline.c:409,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:411,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/timeline.c:412,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:419,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:423,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:424,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:425,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:427,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:429,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/timeline.c:430,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:431,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/transam/timeline.c:431,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:432,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:433,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:434,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:436,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:437,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:438,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:439,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/timeline.c:445,1
    - Dst: access
      Src: /src/postgres/src/backend/access/transam/timeline.c:445,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/timeline.c:446,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/timeline.c:449,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/timeline.c:451,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/timeline.c:452,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 61
    argCount: 4
    argNames:
    - newTLI
    - parentTLI
    - switchpoint
    - reason
    argTypes:
    - TimeLineID
    - TimeLineID
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 454
    functionName: writeTimeLineHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - XLogArchivingActive
    - TLHistoryFileName
    - durable_rename
    - pg_fsync
    - LSN_FORMAT_ARGS
    - read
    - getpid
    - RestoreArchivedFile
    - OpenTransientFile
    - Assert
    - write
    - pgstat_report_wait_end
    - errmsg
    - data_sync_elevel
    - CloseTransientFile
    - TLHistoryFilePath
    - ereport
    - XLogArchiveNotify
    - strlen
    - errcode_for_file_access
    - unlink
    - access
    - pgstat_report_wait_start
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void writeTimeLineHistory(TimeLineID newTLI, TimeLineID parentTLI,\n\t\t\t\t\t
      XLogRecPtr switchpoint, char *reason)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/timeline.c:473,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/timeline.c:473,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:475,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:478,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:480,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:481,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:482,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:485,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/timeline.c:486,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:493,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:497,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:498,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:499,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:501,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:503,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/timeline.c:504,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:505,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/transam/timeline.c:505,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:506,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:507,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:508,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:510,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:511,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:512,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:513,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:519,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/timeline.c:520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - tli
    - content
    - size
    argTypes:
    - TimeLineID
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 521
    functionName: writeTimeLineHistoryFile
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 1
    functionsReached:
    - getpid
    - TLHistoryFilePath
    - OpenTransientFile
    - unlink
    - CloseTransientFile
    - ereport
    - write
    - pgstat_report_wait_end
    - durable_rename
    - errmsg
    - pgstat_report_wait_start
    - data_sync_elevel
    - pg_fsync
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: void
    signature: void writeTimeLineHistoryFile(TimeLineID tli, char *content, int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/timeline.c:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - tli
    - expectedTLEs
    argTypes:
    - TimeLineID
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 538
    functionName: tliInHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool tliInHistory(TimeLineID tli, List *expectedTLEs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/timeline.c:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 535
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 25
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, expectedTLEs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/timeline.c:551,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/timeline.c:553,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/timeline.c:554,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/timeline.c:562,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - ptr
    - history
    argTypes:
    - XLogRecPtr
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 564
    functionName: tliOfPointInHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - lfirst
    linkageType: ''
    returnType: TimeLineID
    signature: TimeLineID tliOfPointInHistory(XLogRecPtr ptr, List *history)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/timeline.c:551,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/timeline.c:553,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/timeline.c:554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 559
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 25
    functionsReached:
    - XLogRecPtrIsValid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, history)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/timeline.c:581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:590,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - tli
    - history
    - nextTLI
    argTypes:
    - TimeLineID
    - List*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 593
    functionName: tliSwitchPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - lfirst
    - ereport
    - errmsg
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr tliSwitchPoint(TimeLineID tli, List *history, TimeLineID
      *nextTLI)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/timeline.c:581,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 579
    functionDepth: 1
    functionLinenumber: 579
    functionLinenumberEnd: 587
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 25
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, history)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:182,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/parallel.c:182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:185,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:188,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/transam/parallel.c:191,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/backend/access/transam/parallel.c:192,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/parallel.c:195,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/parallel.c:196,1
    - Dst: shm_toc_initialize_estimator
      Src: /src/postgres/src/backend/access/transam/parallel.c:198,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/backend/access/transam/parallel.c:199,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - library_name
    - function_name
    - nworkers
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 205
    functionName: CreateParallelContext
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 3
    functionsReached:
    - palloc0_object
    - Assert
    - pstrdup
    - MemoryContextSwitchTo
    - dlist_push_head
    - shm_toc_initialize_estimator
    - IsInParallelMode
    - GetCurrentSubTransactionId
    linkageType: ''
    returnType: ParallelContext
    signature: "ParallelContext *\nCreateParallelContext(const char *library_name,
      const char *function_name,\n\t\t\t\t\t  int nworkers)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:231,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:232,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:235,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:238,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/transam/parallel.c:239,1
    - Dst: INTERRUPTS_CAN_BE_PROCESSED
      Src: /src/postgres/src/backend/access/transam/parallel.c:247,1
    - Dst: GetSessionDsmHandle
      Src: /src/postgres/src/backend/access/transam/parallel.c:257,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/access/transam/parallel.c:271,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/transam/parallel.c:271,1
    - Dst: EstimateLibraryStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:276,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:277,1
    - Dst: EstimateGUCStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:278,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:279,1
    - Dst: EstimateComboCIDStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:280,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:281,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:282,1
    - Dst: EstimateSnapshotSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:284,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:285,1
    - Dst: EstimateSnapshotSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:287,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:288,1
    - Dst: EstimateTransactionStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:289,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:290,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:291,1
    - Dst: EstimatePendingSyncsSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:292,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:293,1
    - Dst: EstimateReindexStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:294,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:295,1
    - Dst: EstimateRelationMapSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:296,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:297,1
    - Dst: EstimateUncommittedEnumsSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:298,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:299,1
    - Dst: EstimateClientConnectionInfoSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:300,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:301,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/transam/parallel.c:303,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:306,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/parallel.c:307,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/transam/parallel.c:309,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:312,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:312,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:313,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/transam/parallel.c:314,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/backend/access/transam/parallel.c:328,1
    - Dst: dsm_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:330,1
    - Dst: shm_toc_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:332,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/access/transam/parallel.c:333,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/parallel.c:338,1
    - Dst: shm_toc_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:339,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:345,1
    - Dst: GetAuthenticatedUserId
      Src: /src/postgres/src/backend/access/transam/parallel.c:347,1
    - Dst: GetSessionUserId
      Src: /src/postgres/src/backend/access/transam/parallel.c:348,1
    - Dst: GetCurrentRoleId
      Src: /src/postgres/src/backend/access/transam/parallel.c:349,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/parallel.c:350,1
    - Dst: GetSessionUserIsSuperuser
      Src: /src/postgres/src/backend/access/transam/parallel.c:351,1
    - Dst: GetTempNamespaceState
      Src: /src/postgres/src/backend/access/transam/parallel.c:353,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/access/transam/parallel.c:358,1
    - Dst: GetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/access/transam/parallel.c:359,1
    - Dst: ShareSerializableXact
      Src: /src/postgres/src/backend/access/transam/parallel.c:360,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/transam/parallel.c:361,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:363,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:385,1
    - Dst: SerializeLibraryState
      Src: /src/postgres/src/backend/access/transam/parallel.c:386,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:387,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:390,1
    - Dst: SerializeGUCState
      Src: /src/postgres/src/backend/access/transam/parallel.c:391,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:392,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:395,1
    - Dst: SerializeComboCIDState
      Src: /src/postgres/src/backend/access/transam/parallel.c:396,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:397,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:403,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:405,1
    - Dst: SerializeSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:406,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:407,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:412,1
    - Dst: SerializeSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:413,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:414,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:417,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:420,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:424,1
    - Dst: SerializeTransactionState
      Src: /src/postgres/src/backend/access/transam/parallel.c:425,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:426,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:429,1
    - Dst: SerializePendingSyncs
      Src: /src/postgres/src/backend/access/transam/parallel.c:430,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:431,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:435,1
    - Dst: SerializeReindexState
      Src: /src/postgres/src/backend/access/transam/parallel.c:436,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:437,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:440,1
    - Dst: SerializeRelationMap
      Src: /src/postgres/src/backend/access/transam/parallel.c:441,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:442,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:446,1
    - Dst: SerializeUncommittedEnums
      Src: /src/postgres/src/backend/access/transam/parallel.c:448,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:449,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:453,1
    - Dst: SerializeClientConnectionInfo
      Src: /src/postgres/src/backend/access/transam/parallel.c:454,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:455,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/transam/parallel.c:459,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:469,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/parallel.c:470,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:478,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/access/transam/parallel.c:479,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:480,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:482,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:491,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:492,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:493,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/parallel.c:494,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/parallel.c:495,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:496,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:503,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 127
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 504
    functionName: InitializeParallelDSM
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 3
    functionsReached:
    - SerializeLibraryState
    - SerializeClientConnectionInfo
    - SerializeComboCIDState
    - SerializeGUCState
    - EstimateLibraryStateSpace
    - shm_toc_estimate_chunk
    - INTERRUPTS_CAN_BE_PROCESSED
    - dsm_create
    - GetAuthenticatedUserId
    - EstimateSnapshotSpace
    - EstimatePendingSyncsSpace
    - shm_toc_create
    - EstimateUncommittedEnumsSpace
    - GetSessionUserId
    - EstimateRelationMapSpace
    - EstimateGUCStateSpace
    - ShareSerializableXact
    - GetCurrentRoleId
    - SerializeReindexState
    - SerializeRelationMap
    - shm_mq_create
    - EstimateComboCIDStateSpace
    - shm_mq_attach
    - EstimateReindexStateSpace
    - StaticAssertDecl
    - shm_toc_estimate_keys
    - mul_size
    - dsm_segment_address
    - SerializeTransactionState
    - GetTransactionSnapshot
    - strlen
    - GetCurrentStatementStartTimestamp
    - EstimateClientConnectionInfoSpace
    - GetSessionUserIsSuperuser
    - shm_mq_set_receiver
    - SerializePendingSyncs
    - palloc0_array
    - SerializeSnapshot
    - MemoryContextAlloc
    - EstimateTransactionStateSpace
    - GetSessionDsmHandle
    - SpinLockInit
    - shm_toc_insert
    - MemoryContextSwitchTo
    - GetCurrentTransactionStartTimestamp
    - SerializeUncommittedEnums
    - GetActiveSnapshot
    - GetUserIdAndSecContext
    - shm_toc_estimate
    - GetTempNamespaceState
    - IsolationUsesXactSnapshot
    - strcpy
    - shm_toc_allocate
    - BUFFERALIGN
    linkageType: ''
    returnType: void
    signature: void InitializeParallelDSM(ParallelContext *pcxt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:517,1
    - Dst: WaitForParallelWorkersToFinish
      Src: /src/postgres/src/backend/access/transam/parallel.c:522,1
    - Dst: WaitForParallelWorkersToExit
      Src: /src/postgres/src/backend/access/transam/parallel.c:523,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:527,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:534,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:544,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:551,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/access/transam/parallel.c:552,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:553,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:558,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 559
    functionName: ReinitializeParallelDSM
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    - pfree
    - MemoryContextSwitchTo
    - WaitForParallelWorkersToExit
    - WaitForParallelWorkersToFinish
    - shm_mq_attach
    - shm_mq_create
    - shm_mq_set_receiver
    linkageType: ''
    returnType: void
    signature: void ReinitializeParallelDSM(ParallelContext *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/parallel.c:576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pcxt
    - nworkers_to_launch
    argTypes:
    - ParallelContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 577
    functionName: ReinitializeParallelWorkers
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - Min
    linkageType: ''
    returnType: void
    signature: void ReinitializeParallelWorkers(ParallelContext *pcxt, int nworkers_to_launch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BecomeLockGroupLeader
      Src: /src/postgres/src/backend/access/transam/parallel.c:595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:598,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:601,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/parallel.c:604,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:605,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:607,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:613,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:614,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/access/transam/parallel.c:615,1
    - Dst: dsm_segment_handle
      Src: /src/postgres/src/backend/access/transam/parallel.c:615,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/parallel.c:628,1
    - Dst: RegisterDynamicBackgroundWorker
      Src: /src/postgres/src/backend/access/transam/parallel.c:630,1
    - Dst: shm_mq_set_handle
      Src: /src/postgres/src/backend/access/transam/parallel.c:633,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:650,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/transam/parallel.c:661,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:666,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 667
    functionName: LaunchParallelWorkers
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 3
    functionsReached:
    - BecomeLockGroupLeader
    - palloc0_array
    - memcpy
    - shm_mq_detach
    - Assert
    - UInt32GetDatum
    - dsm_segment_handle
    - MemoryContextSwitchTo
    - RegisterDynamicBackgroundWorker
    - memset
    - sprintf
    - shm_mq_set_handle
    - snprintf
    linkageType: ''
    returnType: void
    signature: void LaunchParallelWorkers(ParallelContext *pcxt)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:716,1
    - Dst: GetBackgroundWorkerPid
      Src: /src/postgres/src/backend/access/transam/parallel.c:739,1
    - Dst: shm_mq_get_queue
      Src: /src/postgres/src/backend/access/transam/parallel.c:743,1
    - Dst: shm_mq_get_sender
      Src: /src/postgres/src/backend/access/transam/parallel.c:744,1
    - Dst: shm_mq_get_queue
      Src: /src/postgres/src/backend/access/transam/parallel.c:757,1
    - Dst: shm_mq_get_sender
      Src: /src/postgres/src/backend/access/transam/parallel.c:758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:759,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:761,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/parallel.c:762,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/parallel.c:775,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/parallel.c:780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:787,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 791
    functionName: WaitForParallelWorkersToAttach
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 3
    functionsReached:
    - GetBackgroundWorkerPid
    - errcode
    - Assert
    - ereport
    - shm_mq_get_queue
    - CHECK_FOR_INTERRUPTS
    - ResetLatch
    - errhint
    - shm_mq_get_sender
    - errmsg
    - WaitLatch
    linkageType: ''
    returnType: void
    signature: void WaitForParallelWorkersToAttach(ParallelContext *pcxt)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:818,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:842,1
    - Dst: GetBackgroundWorkerPid
      Src: /src/postgres/src/backend/access/transam/parallel.c:864,1
    - Dst: shm_mq_get_queue
      Src: /src/postgres/src/backend/access/transam/parallel.c:876,1
    - Dst: shm_mq_get_sender
      Src: /src/postgres/src/backend/access/transam/parallel.c:877,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:878,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:879,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:880,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/parallel.c:881,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/parallel.c:895,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/parallel.c:897,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:904,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 908
    functionName: WaitForParallelWorkersToFinish
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 4
    functionsReached:
    - GetBackgroundWorkerPid
    - shm_toc_lookup
    - errcode
    - Assert
    - shm_mq_get_queue
    - ereport
    - CHECK_FOR_INTERRUPTS
    - ResetLatch
    - errhint
    - shm_mq_get_sender
    - errmsg
    - WaitLatch
    linkageType: ''
    returnType: void
    signature: void WaitForParallelWorkersToFinish(ParallelContext *pcxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WaitForBackgroundWorkerShutdown
      Src: /src/postgres/src/backend/access/transam/parallel.c:931,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:940,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:941,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:942,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:945,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 918
    functionDepth: 1
    functionLinenumber: 918
    functionLinenumberEnd: 948
    functionName: WaitForParallelWorkersToExit
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 1
    functionsReached:
    - errcode
    - pfree
    - ereport
    - WaitForBackgroundWorkerShutdown
    - errmsg
    linkageType: ''
    returnType: void
    signature: void WaitForParallelWorkersToExit(ParallelContext *pcxt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/transam/parallel.c:969,1
    - Dst: TerminateBackgroundWorker
      Src: /src/postgres/src/backend/access/transam/parallel.c:978,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:980,1
    - Dst: dsm_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:993,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1003,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:1012,1
    - Dst: WaitForParallelWorkersToExit
      Src: /src/postgres/src/backend/access/transam/parallel.c:1013,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:1014,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1019,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1024,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1025,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1026,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 958
    functionDepth: 2
    functionLinenumber: 958
    functionLinenumberEnd: 1027
    functionName: DestroyParallelContext
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 6
    functionsReached:
    - shm_mq_detach
    - RESUME_INTERRUPTS
    - pfree
    - HOLD_INTERRUPTS
    - WaitForParallelWorkersToExit
    - dlist_delete
    - dsm_detach
    - TerminateBackgroundWorker
    linkageType: ''
    returnType: void
    signature: void DestroyParallelContext(ParallelContext *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/access/transam/parallel.c:1035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1032
    functionDepth: 1
    functionLinenumber: 1032
    functionLinenumberEnd: 1036
    functionName: ParallelContextActive
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - dlist_is_empty
    linkageType: ''
    returnType: bool
    signature: bool ParallelContextActive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1051
    functionName: HandleParallelMessageInterrupt
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandleParallelMessageInterrupt(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:1071,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/parallel.c:1079,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/parallel.c:1083,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1085,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1090,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/transam/parallel.c:1095,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/backend/access/transam/parallel.c:1113,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1121,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1122,1
    - Dst: ProcessParallelMessage
      Src: /src/postgres/src/backend/access/transam/parallel.c:1123,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:1127,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1128,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:1129,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1134,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/parallel.c:1137,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:1139,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1056
    functionDepth: 3
    functionLinenumber: 1056
    functionLinenumberEnd: 1140
    functionName: ProcessParallelMessages
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - appendBinaryStringInfo
    - MemoryContextReset
    - RESUME_INTERRUPTS
    - errcode
    - shm_mq_receive
    - pfree
    - HOLD_INTERRUPTS
    - dlist_container
    - initStringInfo
    - ereport
    - MemoryContextSwitchTo
    - errmsg
    - AllocSetContextCreate
    - ProcessParallelMessage
    - dlist_foreach
    linkageType: ''
    returnType: void
    signature: void ProcessParallelMessages(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/access/transam/parallel.c:1157,1
    - Dst: pq_parse_errornotice
      Src: /src/postgres/src/backend/access/transam/parallel.c:1168,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/parallel.c:1171,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:1184,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/parallel.c:1185,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1187,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/parallel.c:1187,1
    - Dst: ThrowErrorData
      Src: /src/postgres/src/backend/access/transam/parallel.c:1199,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/access/transam/parallel.c:1214,1
    - Dst: pq_getmsgrawstring
      Src: /src/postgres/src/backend/access/transam/parallel.c:1215,1
    - Dst: pq_getmsgrawstring
      Src: /src/postgres/src/backend/access/transam/parallel.c:1216,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/access/transam/parallel.c:1217,1
    - Dst: NotifyMyFrontEnd
      Src: /src/postgres/src/backend/access/transam/parallel.c:1219,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/access/transam/parallel.c:1231,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/access/transam/parallel.c:1232,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/access/transam/parallel.c:1234,1
    - Dst: pgstat_progress_incr_param
      Src: /src/postgres/src/backend/access/transam/parallel.c:1236,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1243,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1250,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 3
    argNames:
    - pcxt
    - i
    - msg
    argTypes:
    - ParallelContext*
    - int
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1145
    functionDepth: 2
    functionLinenumber: 1145
    functionLinenumberEnd: 1254
    functionName: ProcessParallelMessage
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 1
    functionsReached:
    - elog
    - ThrowErrorData
    - shm_mq_detach
    - _
    - NotifyMyFrontEnd
    - pq_endmessage
    - pgstat_progress_incr_param
    - psprintf
    - pstrdup
    - pq_getmsgend
    - pq_getmsgbyte
    - pq_getmsgint64
    - Min
    - pq_getmsgint
    - pq_parse_errornotice
    - pq_getmsgrawstring
    linkageType: ''
    returnType: void
    signature: void ProcessParallelMessage(ParallelContext *pcxt, int i, StringInfo
      msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/access/transam/parallel.c:1265,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/access/transam/parallel.c:1269,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1273,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/transam/parallel.c:1274,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - isCommit
    - mySubId
    argTypes:
    - bool
    - SubTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1262
    functionDepth: 3
    functionLinenumber: 1262
    functionLinenumberEnd: 1276
    functionName: AtEOSubXact_Parallel
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - elog
    - DestroyParallelContext
    - dlist_is_empty
    - dlist_head_element
    linkageType: ''
    returnType: void
    signature: void AtEOSubXact_Parallel(bool isCommit, SubTransactionId mySubId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/access/transam/parallel.c:1286,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/access/transam/parallel.c:1290,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1292,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/transam/parallel.c:1293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1283
    functionDepth: 3
    functionLinenumber: 1283
    functionLinenumberEnd: 1295
    functionName: AtEOXact_Parallel
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - elog
    - DestroyParallelContext
    - dlist_is_empty
    - dlist_head_element
    linkageType: ''
    returnType: void
    signature: void AtEOXact_Parallel(bool isCommit)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/backend/access/transam/parallel.c:1332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:1335,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/parallel.c:1336,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/parallel.c:1339,1
    - Dst: dsm_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1352,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/transam/parallel.c:1352,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:1354,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1355,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:1356,1
    - Dst: shm_toc_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1357,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/access/transam/parallel.c:1357,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:1359,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:1361,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1364,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/access/transam/parallel.c:1370,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/transam/parallel.c:1370,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1378,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/backend/access/transam/parallel.c:1381,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1382,1
    - Dst: pq_redirect_to_shm_mq
      Src: /src/postgres/src/backend/access/transam/parallel.c:1383,1
    - Dst: pq_set_parallel_leader
      Src: /src/postgres/src/backend/access/transam/parallel.c:1384,1
    - Dst: BecomeLockGroupMember
      Src: /src/postgres/src/backend/access/transam/parallel.c:1401,1
    - Dst: SetParallelStartTimestamps
      Src: /src/postgres/src/backend/access/transam/parallel.c:1410,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1417,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:1419,1
    - Dst: LookupParallelWorkerFunction
      Src: /src/postgres/src/backend/access/transam/parallel.c:1421,1
    - Dst: SetAuthenticatedUserId
      Src: /src/postgres/src/backend/access/transam/parallel.c:1429,1
    - Dst: SetSessionAuthorization
      Src: /src/postgres/src/backend/access/transam/parallel.c:1430,1
    - Dst: SetCurrentRoleId
      Src: /src/postgres/src/backend/access/transam/parallel.c:1432,1
    - Dst: BackgroundWorkerInitializeConnectionByOid
      Src: /src/postgres/src/backend/access/transam/parallel.c:1440,1
    - Dst: SetClientEncoding
      Src: /src/postgres/src/backend/access/transam/parallel.c:1452,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/access/transam/parallel.c:1452,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1453,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/access/transam/parallel.c:1453,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1460,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/access/transam/parallel.c:1461,1
    - Dst: RestoreLibraryState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1462,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/access/transam/parallel.c:1463,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1466,1
    - Dst: StartParallelWorkerTransaction
      Src: /src/postgres/src/backend/access/transam/parallel.c:1467,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1475,1
    - Dst: RestorePendingSyncs
      Src: /src/postgres/src/backend/access/transam/parallel.c:1477,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1478,1
    - Dst: RestoreRelationMap
      Src: /src/postgres/src/backend/access/transam/parallel.c:1479,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1480,1
    - Dst: RestoreReindexState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1481,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1482,1
    - Dst: RestoreComboCIDState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1483,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1487,1
    - Dst: AttachSession
      Src: /src/postgres/src/backend/access/transam/parallel.c:1488,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1502,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1503,1
    - Dst: RestoreSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1504,1
    - Dst: RestoreSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1505,1
    - Dst: RestoreTransactionSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1506,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1508,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/access/transam/parallel.c:1514,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1523,1
    - Dst: RestoreGUCState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1524,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/parallel.c:1534,1
    - Dst: SetTempNamespaceState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1537,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1541,1
    - Dst: RestoreUncommittedEnums
      Src: /src/postgres/src/backend/access/transam/parallel.c:1543,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1546,1
    - Dst: RestoreClientConnectionInfo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1548,1
    - Dst: InitializeSystemUser
      Src: /src/postgres/src/backend/access/transam/parallel.c:1555,1
    - Dst: hba_authname
      Src: /src/postgres/src/backend/access/transam/parallel.c:1556,1
    - Dst: AttachSerializableXact
      Src: /src/postgres/src/backend/access/transam/parallel.c:1559,1
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1566,1
    - Dst: entrypt
      Src: /src/postgres/src/backend/access/transam/parallel.c:1571,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1574,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1577,1
    - Dst: EndParallelWorkerTransaction
      Src: /src/postgres/src/backend/access/transam/parallel.c:1580,1
    - Dst: DetachSession
      Src: /src/postgres/src/backend/access/transam/parallel.c:1583,1
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/access/transam/parallel.c:1586,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 78
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1300
    functionDepth: 2
    functionLinenumber: 1300
    functionLinenumberEnd: 1587
    functionName: ParallelWorkerMain
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - shm_toc_attach
    - PopActiveSnapshot
    - RestoreReindexState
    - InitializeSystemUser
    - AttachSession
    - errcode
    - RestoreComboCIDState
    - CommitTransactionCommand
    - StartParallelWorkerTransaction
    - SetSessionAuthorization
    - EndParallelWorkerTransaction
    - RestoreGUCState
    - entrypt
    - dsm_attach
    - DatumGetUInt32
    - elog
    - memcpy
    - shm_toc_lookup
    - Assert
    - GetDatabaseEncoding
    - SetParallelStartTimestamps
    - LookupParallelWorkerFunction
    - RestoreLibraryState
    - shm_mq_set_sender
    - pq_set_parallel_leader
    - SetAuthenticatedUserId
    - SetClientEncoding
    - RestoreClientConnectionInfo
    - StartTransactionCommand
    - errmsg
    - PointerGetDatum
    - BackgroundWorkerUnblockSignals
    - shm_mq_attach
    - InvalidateSystemCaches
    - RestoreRelationMap
    - RestoreSnapshot
    - AttachSerializableXact
    - RestorePendingSyncs
    - before_shmem_exit
    - ereport
    - pq_putmessage
    - dsm_segment_address
    - hba_authname
    - strlen
    - EnterParallelMode
    - AllocSetContextCreate
    - SetTempNamespaceState
    - SetUserIdAndSecContext
    - RestoreTransactionSnapshot
    - pq_redirect_to_shm_mq
    - RestoreUncommittedEnums
    - ExitParallelMode
    - DetachSession
    - PushActiveSnapshot
    - BecomeLockGroupMember
    - BackgroundWorkerInitializeConnectionByOid
    - SetCurrentRoleId
    linkageType: ''
    returnType: void
    signature: void ParallelWorkerMain(Datum main_arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:1598,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/parallel.c:1599,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/parallel.c:1602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - last_xlog_end
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1593
    functionDepth: 2
    functionLinenumber: 1593
    functionLinenumberEnd: 1603
    functionName: ParallelWorkerReportLastRecEnd
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void ParallelWorkerReportLastRecEnd(XLogRecPtr last_xlog_end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/access/transam/parallel.c:1624,1
    - Dst: dsm_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1628,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/transam/parallel.c:1628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1621
    functionDepth: 1
    functionLinenumber: 1621
    functionLinenumberEnd: 1629
    functionName: ParallelWorkerShutdown
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - dsm_detach
    - SendProcSignal
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ParallelWorkerShutdown(int code, Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/parallel.c:1656,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/transam/parallel.c:1660,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/parallel.c:1662,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1667,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/access/transam/parallel.c:1672,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - libraryname
    - funcname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1673
      start: 1649
    functionDepth: 1
    functionLinenumber: 1649
    functionLinenumberEnd: 1673
    functionName: LookupParallelWorkerFunction
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 1
    functionsReached:
    - elog
    - load_external_function
    - lengthof
    - strcmp
    linkageType: ''
    returnType: parallel_worker_main_type
    signature: parallel_worker_main_type LookupParallelWorkerFunction(const char *libraryname,
      const char *funcname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: NextMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId NextMultiXactId(MultiXactId multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: PreviousMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId PreviousMultiXactId(MultiXactId multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 249
    functionName: MyOldestMemberMXactIdSlot
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: MultiXactId
    signature: 'MultiXactId *

      MyOldestMemberMXactIdSlot(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:256,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - procno
    argTypes:
    - ProcNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 265
    functionName: PreparedXactOldestMemberMXactIdSlot
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: MultiXactId
    signature: 'MultiXactId *

      PreparedXactOldestMemberMXactIdSlot(ProcNumber procno)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: MyOldestVisibleMXactIdSlot
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: MultiXactId
    signature: 'MultiXactId *

      MyOldestVisibleMXactIdSlot(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 305
    functionName: debug_elog2
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_elog2(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 306
    functionName: debug_elog3
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_elog3(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 307
    functionName: debug_elog4
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_elog4(a,b,c,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 308
    functionName: debug_elog5
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_elog5(a,b,c,d,e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 309
    functionName: debug_elog6
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_elog6(a,b,c,d,e,f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:364,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:365,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:367,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/multixact.c:367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:370,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:370,1
    - Dst: MyOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:370,1
    - Dst: MultiXactIdCreateFromMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:383,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:385,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:386,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - xid1
    - status1
    - xid2
    - status2
    argTypes:
    - TransactionId
    - MultiXactStatus
    - TransactionId
    - MultiXactStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 389
    functionName: MultiXactIdCreate
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 2
    functionsReached:
    - debug_elog3
    - MyOldestMemberMXactIdSlot
    - Assert
    - MultiXactIdIsValid
    - TransactionIdEquals
    - mxid_to_string
    - MultiXactIdCreateFromMembers
    - TransactionIdIsValid
    linkageType: ''
    returnType: MultiXactId
    signature: "MultiXactId MultiXactIdCreate(TransactionId xid1, MultiXactStatus
      status1,\n\t\t\t\t  TransactionId xid2, MultiXactStatus status2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:420,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:421,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:424,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:424,1
    - Dst: MyOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:424,1
    - Dst: debug_elog5
      Src: /src/postgres/src/backend/access/transam/multixact.c:426,1
    - Dst: mxstatus_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:427,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:434,1
    - Dst: MultiXactIdCreateFromMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:449,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:451,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/multixact.c:462,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:465,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:467,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/transam/multixact.c:485,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/transam/multixact.c:489,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/transam/multixact.c:490,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/transam/multixact.c:491,1
    - Dst: MultiXactIdCreateFromMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:500,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:502,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:503,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:505,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - multi
    - xid
    - status
    argTypes:
    - MultiXactId
    - TransactionId
    - MultiXactStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 508
    functionName: MultiXactIdExpand
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - debug_elog4
    - debug_elog3
    - MyOldestMemberMXactIdSlot
    - TransactionIdIsInProgress
    - mxstatus_to_string
    - Assert
    - pfree
    - TransactionIdDidCommit
    - MultiXactIdIsValid
    - palloc_array
    - TransactionIdEquals
    - ISUPDATE_from_mxstatus
    - GetMultiXactIdMembers
    - MultiXactIdCreateFromMembers
    - TransactionIdIsValid
    - debug_elog5
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId MultiXactIdExpand(MultiXactId multi, TransactionId xid,
      MultiXactStatus status)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:528,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:534,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:538,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/transam/multixact.c:551,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:553,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:554,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/transam/multixact.c:566,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:568,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:570,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:575,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:577,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - multi
    - isLockOnly
    argTypes:
    - MultiXactId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 580
    functionName: MultiXactIdIsRunning
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 4
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - debug_elog3
    - debug_elog4
    - TransactionIdIsInProgress
    - pfree
    - debug_elog2
    - GetMultiXactIdMembers
    linkageType: ''
    returnType: bool
    signature: bool MultiXactIdIsRunning(MultiXactId multi, bool isLockOnly)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:598,1
    - Dst: MyOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:598,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:616,1
    - Dst: MyOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:620,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:622,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:624,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 595
    functionDepth: 2
    functionLinenumber: 595
    functionLinenumberEnd: 627
    functionName: MultiXactIdSetOldestMember
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 5
    functionsReached:
    - debug_elog4
    - MyOldestMemberMXactIdSlot
    - LWLockAcquire
    - MultiXactIdIsValid
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void MultiXactIdSetOldestMember(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:648,1
    - Dst: MyOldestVisibleMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:648,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:653,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:660,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:661,1
    - Dst: MyOldestVisibleMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:665,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:667,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:669,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 672
    functionName: MultiXactIdSetOldestVisible
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - debug_elog4
    - LWLockAcquire
    - MultiXactIdIsValid
    - LWLockRelease
    - MultiXactIdPrecedes
    - MyOldestVisibleMXactIdSlot
    linkageType: ''
    returnType: void
    signature: void MultiXactIdSetOldestVisible(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:684,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 678
    functionDepth: 1
    functionLinenumber: 678
    functionLinenumberEnd: 689
    functionName: ReadNextMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId ReadNextMultiXactId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:698,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - oldest
    - next
    argTypes:
    - MultiXactId*
    - MultiXactId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 702
    functionName: ReadMultiXactIdRange
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void ReadMultiXactIdRange(MultiXactId *oldest, MultiXactId *next)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:721,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:722,1
    - Dst: mXactCacheGetBySet
      Src: /src/postgres/src/backend/access/transam/multixact.c:734,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:735,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:737,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/transam/multixact.c:748,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:751,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:752,1
    - Dst: INJECTION_POINT_LOAD
      Src: /src/postgres/src/backend/access/transam/multixact.c:759,1
    - Dst: GetNewMultiXactId
      Src: /src/postgres/src/backend/access/transam/multixact.c:773,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/access/transam/multixact.c:775,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:788,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/multixact.c:789,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/multixact.c:790,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:792,1
    - Dst: RecordNewMultiXact
      Src: /src/postgres/src/backend/access/transam/multixact.c:795,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/multixact.c:798,1
    - Dst: mXactCachePut
      Src: /src/postgres/src/backend/access/transam/multixact.c:801,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:803,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 2
    argNames:
    - nmembers
    - members
    argTypes:
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 714
    functionDepth: 1
    functionLinenumber: 714
    functionLinenumberEnd: 806
    functionName: MultiXactIdCreateFromMembers
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 3
    functionsReached:
    - elog
    - INJECTION_POINT_LOAD
    - debug_elog3
    - XLogInsert
    - RecordNewMultiXact
    - XLogBeginInsert
    - MultiXactIdIsValid
    - mxid_to_string
    - XLogRegisterData
    - mXactCacheGetBySet
    - mXactCachePut
    - ISUPDATE_from_mxstatus
    - debug_elog2
    - INJECTION_POINT_CACHED
    - GetNewMultiXactId
    - END_CRIT_SECTION
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId MultiXactIdCreateFromMembers(int nmembers, MultiXactMember
      *members)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:833,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:834,1
    - Dst: NextMultiXactId
      Src: /src/postgres/src/backend/access/transam/multixact.c:837,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:838,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:839,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:850,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:851,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:853,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:860,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:875,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:878,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:879,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:880,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:882,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:894,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:900,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:913,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:915,1
    - Dst: MXOffsetToMemberOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:916,1
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:917,1
    - Dst: MXOffsetToFlagsBitShift
      Src: /src/postgres/src/backend/access/transam/multixact.c:918,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:929,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:933,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:935,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:938,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:960,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 65
    argCount: 4
    argNames:
    - multi
    - offset
    - nmembers
    - members
    argTypes:
    - MultiXactId
    - MultiXactOffset
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 815
    functionDepth: 2
    functionLinenumber: 815
    functionLinenumberEnd: 961
    functionName: RecordNewMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - NextMultiXactId
    - MXOffsetToMemberPage
    - MultiXactIdToOffsetPage
    - Assert
    - MXOffsetToFlagsBitShift
    - MultiXactIdToOffsetEntry
    - MXOffsetToMemberOffset
    - LWLockRelease
    - MXOffsetToFlagsOffset
    - SimpleLruGetBankLock
    - SimpleLruReadPage
    linkageType: ''
    returnType: void
    signature: "void RecordNewMultiXact(MultiXactId multi, MultiXactOffset offset,\n\t\t\t\t
      \  int nmembers, MultiXactMember *members)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:984,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/multixact.c:987,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:988,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:990,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1009,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1023,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1026,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/multixact.c:1028,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/multixact.c:1034,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1038,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1039,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1040,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1042,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1045,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1046,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1047,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1049,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/multixact.c:1059,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1061,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/multixact.c:1063,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1067,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:1068,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/multixact.c:1073,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1075,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1078,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:1079,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/multixact.c:1084,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1086,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1091,1
    - Dst: ExtendMultiXactOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:1099,1
    - Dst: NextMultiXactId
      Src: /src/postgres/src/backend/access/transam/multixact.c:1099,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1114,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1115,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1116,1
    - Dst: ExtendMultiXactMember
      Src: /src/postgres/src/backend/access/transam/multixact.c:1119,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/multixact.c:1128,1
    - Dst: NextMultiXactId
      Src: /src/postgres/src/backend/access/transam/multixact.c:1134,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1137,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:1139,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 2
    argNames:
    - nmembers
    - offset
    argTypes:
    - int
    - MultiXactOffset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 1142
    functionName: GetNewMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - errcode
    - ExtendMultiXactOffset
    - errhint
    - RecoveryInProgress
    - MultiXactIdPrecedes
    - elog
    - debug_elog4
    - debug_elog3
    - NextMultiXactId
    - get_database_name
    - errmsg
    - ExtendMultiXactMember
    - errmsg_plural
    - ereport
    - SendPostmasterSignal
    - START_CRIT_SECTION
    - LWLockRelease
    - errdetail
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId GetNewMultiXactId(int nmembers, MultiXactOffset *offset)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1188,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:1190,1
    - Dst: mXactCacheGetById
      Src: /src/postgres/src/backend/access/transam/multixact.c:1197,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1200,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1201,1
    - Dst: MultiXactIdSetOldestVisible
      Src: /src/postgres/src/backend/access/transam/multixact.c:1206,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1214,1
    - Dst: MyOldestVisibleMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1214,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:1216,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1235,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1240,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1242,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1245,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1251,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1260,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:1261,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:1264,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1265,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1268,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1276,1
    - Dst: NextMultiXactId
      Src: /src/postgres/src/backend/access/transam/multixact.c:1283,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1287,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:1288,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:1299,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1302,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1303,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1306,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1314,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1319,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1320,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1325,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1328,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1329,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1330,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1335,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/multixact.c:1340,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1350,1
    - Dst: MXOffsetToMemberOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:1351,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:1363,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1367,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1368,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:1378,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:1378,1
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:1380,1
    - Dst: MXOffsetToFlagsBitShift
      Src: /src/postgres/src/backend/access/transam/multixact.c:1381,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1388,1
    - Dst: mXactCachePut
      Src: /src/postgres/src/backend/access/transam/multixact.c:1393,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1395,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1396,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 92
    argCount: 4
    argNames:
    - multi
    - members
    - from_pgupgrade
    - isLockOnly
    argTypes:
    - MultiXactId
    - MultiXactMember**
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1171
    functionDepth: 3
    functionLinenumber: 1171
    functionLinenumberEnd: 1399
    functionName: GetMultiXactIdMembers
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 11
    functionsReached:
    - LWLockAcquire
    - errcode
    - MultiXactIdToOffsetPage
    - mXactCachePut
    - MXOffsetToFlagsOffset
    - palloc
    - MultiXactIdPrecedes
    - MyOldestVisibleMXactIdSlot
    - debug_elog3
    - NextMultiXactId
    - Assert
    - mXactCacheGetById
    - MXOffsetToFlagsBitShift
    - errmsg
    - SimpleLruReadPage
    - MXOffsetToMemberPage
    - ereport
    - MultiXactIdIsValid
    - mxid_to_string
    - MultiXactIdToOffsetEntry
    - MultiXactIdSetOldestVisible
    - MXOffsetToMemberOffset
    - debug_elog2
    - LWLockRelease
    - SimpleLruGetBankLock
    - TransactionIdIsValid
    linkageType: ''
    returnType: int
    signature: "int GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members,\n\t\t\t\t\t
      \ bool from_pgupgrade, bool isLockOnly)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1423
      start: 1408
    functionDepth: 0
    functionLinenumber: 1408
    functionLinenumberEnd: 1423
    functionName: mxactMemberComparator
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mxactMemberComparator(const void *arg1, const void *arg2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1443,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1444,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/transam/multixact.c:1447,1
    - Dst: dclist_foreach
      Src: /src/postgres/src/backend/access/transam/multixact.c:1449,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/access/transam/multixact.c:1451,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/transam/multixact.c:1461,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1463,1
    - Dst: dclist_move_head
      Src: /src/postgres/src/backend/access/transam/multixact.c:1464,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:1469,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - nmembers
    - members
    argTypes:
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1438
    functionDepth: 4
    functionLinenumber: 1438
    functionLinenumberEnd: 1471
    functionName: mXactCacheGetBySet
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - qsort
    - dclist_move_head
    - debug_elog3
    - mxid_to_string
    - dclist_foreach
    - dclist_container
    - debug_elog2
    - memcmp
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId mXactCacheGetBySet(int nmembers, MultiXactMember *members)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1486,1
    - Dst: dclist_foreach
      Src: /src/postgres/src/backend/access/transam/multixact.c:1488,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/access/transam/multixact.c:1490,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/multixact.c:1499,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:1501,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1503,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1504,1
    - Dst: dclist_move_head
      Src: /src/postgres/src/backend/access/transam/multixact.c:1513,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:1520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - multi
    - members
    argTypes:
    - MultiXactId
    - MultiXactMember**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1481
    functionDepth: 4
    functionLinenumber: 1481
    functionLinenumberEnd: 1522
    functionName: mXactCacheGetById
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - dclist_move_head
    - debug_elog3
    - memcpy
    - mxid_to_string
    - dclist_foreach
    - dclist_container
    - debug_elog2
    - palloc
    linkageType: ''
    returnType: int
    signature: int mXactCacheGetById(MultiXactId multi, MultiXactMember **members)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1533,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1534,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:1539,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/multixact.c:1540,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/multixact.c:1546,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:1552,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/transam/multixact.c:1555,1
    - Dst: dclist_push_head
      Src: /src/postgres/src/backend/access/transam/multixact.c:1557,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/access/transam/multixact.c:1558,1
    - Dst: dclist_tail_node
      Src: /src/postgres/src/backend/access/transam/multixact.c:1562,1
    - Dst: dclist_delete_from
      Src: /src/postgres/src/backend/access/transam/multixact.c:1563,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/access/transam/multixact.c:1565,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1566,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:1569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - multi
    - nmembers
    - members
    argTypes:
    - MultiXactId
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1528
    functionDepth: 3
    functionLinenumber: 1528
    functionLinenumberEnd: 1571
    functionName: mXactCachePut
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 2
    functionsReached:
    - qsort
    - debug_elog3
    - dclist_count
    - memcpy
    - MemoryContextAlloc
    - pfree
    - dclist_tail_node
    - dclist_delete_from
    - mxid_to_string
    - dclist_push_head
    - dclist_container
    - debug_elog2
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void mXactCachePut(MultiXactId multi, int nmembers, MultiXactMember
      *members)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:1591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - status
    argTypes:
    - MultiXactStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1573
    functionDepth: 1
    functionLinenumber: 1573
    functionLinenumberEnd: 1594
    functionName: mxstatus_to_string
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - elog
    linkageType: ''
    returnType: char
    signature: 'char *

      mxstatus_to_string(MultiXactStatus status)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:1604,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/multixact.c:1606,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/multixact.c:1608,1
    - Dst: mxstatus_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1609,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/multixact.c:1612,1
    - Dst: mxstatus_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1613,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/transam/multixact.c:1615,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/transam/multixact.c:1616,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:1617,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - multi
    - nmembers
    - members
    argTypes:
    - MultiXactId
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1596
    functionDepth: 3
    functionLinenumber: 1596
    functionLinenumberEnd: 1619
    functionName: mxid_to_string
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 6
    functionsReached:
    - mxstatus_to_string
    - pfree
    - appendStringInfo
    - initStringInfo
    - MemoryContextStrdup
    - appendStringInfoChar
    linkageType: ''
    returnType: char
    signature: 'char *

      mxid_to_string(MultiXactId multi, int nmembers, MultiXactMember *members)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MyOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1637,1
    - Dst: MyOldestVisibleMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1638,1
    - Dst: dclist_init
      Src: /src/postgres/src/backend/access/transam/multixact.c:1645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1627
    functionDepth: 2
    functionLinenumber: 1627
    functionLinenumberEnd: 1646
    functionName: AtEOXact_MultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - dclist_init
    - MyOldestMemberMXactIdSlot
    - MyOldestVisibleMXactIdSlot
    linkageType: ''
    returnType: void
    signature: void AtEOXact_MultiXact(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MyOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1658,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:1660,1
    - Dst: RegisterTwoPhaseRecord
      Src: /src/postgres/src/backend/access/transam/multixact.c:1661,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1655
    functionDepth: 2
    functionLinenumber: 1655
    functionLinenumberEnd: 1663
    functionName: AtPrepare_MultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MyOldestMemberMXactIdSlot
    - RegisterTwoPhaseRecord
    - MultiXactIdIsValid
    linkageType: ''
    returnType: void
    signature: void AtPrepare_MultiXact(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MyOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1678,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:1679,1
    - Dst: TwoPhaseGetDummyProcNumber
      Src: /src/postgres/src/backend/access/transam/multixact.c:1681,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1689,1
    - Dst: PreparedXactOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1691,1
    - Dst: MyOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1692,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1694,1
    - Dst: MyOldestVisibleMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1705,1
    - Dst: dclist_init
      Src: /src/postgres/src/backend/access/transam/multixact.c:1711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - fxid
    argTypes:
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1669
    functionDepth: 2
    functionLinenumber: 1669
    functionLinenumberEnd: 1712
    functionName: PostPrepare_MultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MyOldestMemberMXactIdSlot
    - LWLockAcquire
    - MultiXactIdIsValid
    - PreparedXactOldestMemberMXactIdSlot
    - TwoPhaseGetDummyProcNumber
    - LWLockRelease
    - dclist_init
    - MyOldestVisibleMXactIdSlot
    linkageType: ''
    returnType: void
    signature: void PostPrepare_MultiXact(FullTransactionId fxid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseGetDummyProcNumber
      Src: /src/postgres/src/backend/access/transam/multixact.c:1722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:1729,1
    - Dst: PreparedXactOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - fxid
    - info
    - recdata
    - len
    argTypes:
    - FullTransactionId
    - uint16
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1733
      start: 1718
    functionDepth: 2
    functionLinenumber: 1718
    functionLinenumberEnd: 1733
    functionName: multixact_twophase_recover
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - Assert
    - TwoPhaseGetDummyProcNumber
    - PreparedXactOldestMemberMXactIdSlot
    linkageType: ''
    returnType: void
    signature: "void multixact_twophase_recover(FullTransactionId fxid, uint16 info,\n\t\t\t\t\t\t
      \  void *recdata, uint32 len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseGetDummyProcNumber
      Src: /src/postgres/src/backend/access/transam/multixact.c:1743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:1745,1
    - Dst: PreparedXactOldestMemberMXactIdSlot
      Src: /src/postgres/src/backend/access/transam/multixact.c:1747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - fxid
    - info
    - recdata
    - len
    argTypes:
    - FullTransactionId
    - uint16
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1739
    functionDepth: 2
    functionLinenumber: 1739
    functionLinenumberEnd: 1748
    functionName: multixact_twophase_postcommit
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - Assert
    - TwoPhaseGetDummyProcNumber
    - PreparedXactOldestMemberMXactIdSlot
    linkageType: ''
    returnType: void
    signature: "void multixact_twophase_postcommit(FullTransactionId fxid, uint16
      info,\n\t\t\t\t\t\t\t  void *recdata, uint32 len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: multixact_twophase_postcommit
      Src: /src/postgres/src/backend/access/transam/multixact.c:1758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fxid
    - info
    - recdata
    - len
    argTypes:
    - FullTransactionId
    - uint16
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1754
    functionDepth: 3
    functionLinenumber: 1754
    functionLinenumberEnd: 1759
    functionName: multixact_twophase_postabort
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - multixact_twophase_postcommit
    linkageType: ''
    returnType: void
    signature: "void multixact_twophase_postabort(FullTransactionId fxid, uint16 info,\n\t\t\t\t\t\t\t
      void *recdata, uint32 len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/multixact.c:1776,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/multixact.c:1777,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/multixact.c:1778,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/multixact.c:1779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1814
      start: 1765
    functionDepth: 0
    functionLinenumber: 1765
    functionLinenumberEnd: 1814
    functionName: MultiXactShmemRequest
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - mul_size
    - add_size
    linkageType: ''
    returnType: void
    signature: void MultiXactShmemRequest(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruPagePrecedesUnitTests
      Src: /src/postgres/src/backend/access/transam/multixact.c:1819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1816
    functionDepth: 0
    functionLinenumber: 1816
    functionLinenumberEnd: 1829
    functionName: MultiXactShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - SlruPagePrecedesUnitTests
    linkageType: ''
    returnType: void
    signature: void MultiXactShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1831
    functionDepth: 0
    functionLinenumber: 1831
    functionLinenumberEnd: 1837
    functionName: MultiXactShmemAttach
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MultiXactShmemAttach(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_slru_buffers
      Src: /src/postgres/src/backend/access/transam/multixact.c:1845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1842
    functionDepth: 1
    functionLinenumber: 1842
    functionLinenumberEnd: 1846
    functionName: check_multixact_offset_buffers
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - check_slru_buffers
    linkageType: ''
    returnType: bool
    signature: bool check_multixact_offset_buffers(int *newval, void **extra, GucSource
      source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_slru_buffers
      Src: /src/postgres/src/backend/access/transam/multixact.c:1854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1851
    functionDepth: 1
    functionLinenumber: 1851
    functionLinenumberEnd: 1855
    functionName: check_multixact_member_buffers
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - check_slru_buffers
    linkageType: ''
    returnType: bool
    signature: bool check_multixact_member_buffers(int *newval, void **extra, GucSource
      source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruZeroAndWritePage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1866,1
    - Dst: SimpleLruZeroAndWritePage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1868
      start: 1862
    functionDepth: 1
    functionLinenumber: 1862
    functionLinenumberEnd: 1868
    functionName: BootStrapMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - SimpleLruZeroAndWritePage
    linkageType: ''
    returnType: void
    signature: void BootStrapMultiXact(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1888,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/multixact.c:1889,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1895,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/multixact.c:1896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1898
      start: 1878
    functionDepth: 2
    functionLinenumber: 1878
    functionLinenumberEnd: 1898
    functionName: StartupMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MultiXactIdToOffsetPage
    - pg_atomic_write_u64
    - MXOffsetToMemberPage
    linkageType: ''
    returnType: void
    signature: void StartupMultiXact(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1914,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1919,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1926,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/multixact.c:1927,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:1942,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:1946,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1948,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1950,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1952,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/multixact.c:1958,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1961,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1969,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/multixact.c:1970,1
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:1977,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:1984,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1986,1
    - Dst: MXOffsetToMemberOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:1987,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1988,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/multixact.c:1992,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2001,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2005,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2007,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/multixact.c:2010,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2011
      start: 1903
    functionDepth: 2
    functionLinenumber: 1903
    functionLinenumberEnd: 2011
    functionName: TrimMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - SimpleLruZeroPage
    - LWLockAcquire
    - MXOffsetToMemberPage
    - MultiXactIdToOffsetPage
    - MultiXactIdToOffsetEntry
    - MemSet
    - pg_atomic_write_u64
    - MXOffsetToMemberOffset
    - LWLockRelease
    - MXOffsetToFlagsOffset
    - SimpleLruGetBankLock
    - SetMultiXactIdLimit
    - SimpleLruReadPage
    linkageType: ''
    returnType: void
    signature: void TrimMultiXact(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2023,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2028,1
    - Dst: debug_elog6
      Src: /src/postgres/src/backend/access/transam/multixact.c:2030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - is_shutdown
    - nextMulti
    - nextMultiOffset
    - oldestMulti
    - oldestMultiDB
    argTypes:
    - bool
    - MultiXactId*
    - MultiXactOffset*
    - MultiXactId*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 2016
    functionDepth: 1
    functionLinenumber: 2016
    functionLinenumberEnd: 2033
    functionName: MultiXactGetCheckptMulti
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    - debug_elog6
    linkageType: ''
    returnType: void
    signature: "void MultiXactGetCheckptMulti(bool is_shutdown,\n\t\t\t\t\t\t MultiXactId
      *nextMulti,\n\t\t\t\t\t\t MultiXactOffset *nextMultiOffset,\n\t\t\t\t\t\t MultiXactId
      *oldestMulti,\n\t\t\t\t\t\t Oid *oldestMultiDB)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_START
      Src: /src/postgres/src/backend/access/transam/multixact.c:2041,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/multixact.c:2048,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/multixact.c:2049,1
    - Dst: TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/multixact.c:2051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2038
    functionDepth: 1
    functionLinenumber: 2038
    functionLinenumberEnd: 2052
    functionName: CheckPointMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_START
    - SimpleLruWriteAll
    - TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_DONE
    linkageType: ''
    returnType: void
    signature: void CheckPointMultiXact(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2066,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2066,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:2067,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2070,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - nextMulti
    - nextMultiOffset
    argTypes:
    - MultiXactId
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 2062
    functionDepth: 1
    functionLinenumber: 2062
    functionLinenumberEnd: 2074
    functionName: MultiXactSetNextMXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - debug_elog4
    - LWLockAcquire
    - Assert
    - MultiXactIdIsValid
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: "void MultiXactSetNextMXact(MultiXactId nextMulti,\n\t\t\t\t\t  MultiXactOffset
      nextMultiOffset)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2093,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2093,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2139,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2147,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2150,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/multixact.c:2151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2164,1
    - Dst: SetOldestOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:2173,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2182,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/multixact.c:2183,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2186,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/access/transam/multixact.c:2199,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/multixact.c:2200,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2205,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:2206,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/multixact.c:2211,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:2213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2216,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:2217,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/multixact.c:2222,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:2224,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - oldest_datminmxid
    - oldest_datoid
    argTypes:
    - MultiXactId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 2084
    functionDepth: 1
    functionLinenumber: 2084
    functionLinenumberEnd: 2227
    functionName: SetMultiXactIdLimit
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - errmsg_plural
    - LWLockAcquire
    - errmsg_internal
    - Assert
    - IsTransactionState
    - MultiXactIdIsValid
    - ereport
    - get_database_name
    - SetOldestOffset
    - errhint
    - LWLockRelease
    - errdetail
    - SendPostmasterSignal
    - MultiXactIdPrecedes
    linkageType: ''
    returnType: void
    signature: void SetMultiXactIdLimit(MultiXactId oldest_datminmxid, Oid oldest_datoid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2242,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2242,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2244,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2245,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:2247,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:2252,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - minMulti
    - minMultiOffset
    argTypes:
    - MultiXactId
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2257
      start: 2238
    functionDepth: 1
    functionLinenumber: 2238
    functionLinenumberEnd: 2257
    functionName: MultiXactAdvanceNextMXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - debug_elog3
    - LWLockAcquire
    - Assert
    - MultiXactIdIsValid
    - LWLockRelease
    - MultiXactIdPrecedes
    linkageType: ''
    returnType: void
    signature: "void MultiXactAdvanceNextMXact(MultiXactId minMulti,\n\t\t\t\t\t\t
      \ MultiXactOffset minMultiOffset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2268,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2270,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/multixact.c:2271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - oldestMulti
    - oldestMultiDB
    argTypes:
    - MultiXactId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2272
      start: 2265
    functionDepth: 2
    functionLinenumber: 2265
    functionLinenumberEnd: 2272
    functionName: MultiXactAdvanceOldest
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - Assert
    - SetMultiXactIdLimit
    - MultiXactIdPrecedes
    linkageType: ''
    returnType: void
    signature: void MultiXactAdvanceOldest(MultiXactId oldestMulti, Oid oldestMultiDB)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:2292,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2296,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2297,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2299,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2302,1
    - Dst: XLogSimpleInsertInt64
      Src: /src/postgres/src/backend/access/transam/multixact.c:2303,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2307
      start: 2282
    functionDepth: 2
    functionLinenumber: 2282
    functionLinenumberEnd: 2307
    functionName: ExtendMultiXactOffset
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - SimpleLruZeroPage
    - LWLockAcquire
    - XLogSimpleInsertInt64
    - MultiXactIdToOffsetPage
    - MultiXactIdToOffsetEntry
    - LWLockRelease
    - SimpleLruGetBankLock
    linkageType: ''
    returnType: void
    signature: void ExtendMultiXactOffset(MultiXactId multi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:2334,1
    - Dst: MXOffsetToFlagsBitShift
      Src: /src/postgres/src/backend/access/transam/multixact.c:2335,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2341,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2342,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2344,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2347,1
    - Dst: XLogSimpleInsertInt64
      Src: /src/postgres/src/backend/access/transam/multixact.c:2348,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2351,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - offset
    - nmembers
    argTypes:
    - MultiXactOffset
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2363
      start: 2316
    functionDepth: 2
    functionLinenumber: 2316
    functionLinenumberEnd: 2363
    functionName: ExtendMultiXactMember
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - SimpleLruZeroPage
    - LWLockAcquire
    - MXOffsetToMemberPage
    - XLogSimpleInsertInt64
    - MXOffsetToFlagsBitShift
    - LWLockRelease
    - MXOffsetToFlagsOffset
    - SimpleLruGetBankLock
    linkageType: ''
    returnType: void
    signature: void ExtendMultiXactMember(MultiXactOffset offset, int nmembers)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2386,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2393,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2394,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2402,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2403,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2407,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2410
      start: 2377
    functionDepth: 1
    functionLinenumber: 2377
    functionLinenumberEnd: 2410
    functionName: GetOldestMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - LWLockRelease
    - MultiXactIdIsValid
    - LWLockAcquire
    - MultiXactIdPrecedes
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId GetOldestMultiXactId(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2429,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2436,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2437,1
    - Dst: find_multixact_start
      Src: /src/postgres/src/backend/access/transam/multixact.c:2470,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2473,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/multixact.c:2474,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:2478,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2482,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2487,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2489,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2491
      start: 2416
    functionDepth: 1
    functionLinenumber: 2416
    functionLinenumberEnd: 2491
    functionName: SetOldestOffset
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - errmsg_internal
    - Assert
    - ereport
    - find_multixact_start
    - errmsg
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void SetOldestOffset(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2511,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2513,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:2514,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/multixact.c:2519,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/multixact.c:2520,1
    - Dst: SimpleLruDoesPhysicalPageExist
      Src: /src/postgres/src/backend/access/transam/multixact.c:2522,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/backend/access/transam/multixact.c:2526,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2530,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - multi
    - result
    argTypes:
    - MultiXactId
    - MultiXactOffset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2534
      start: 2502
    functionDepth: 2
    functionLinenumber: 2502
    functionLinenumberEnd: 2534
    functionName: find_multixact_start
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - Assert
    - MultiXactIdToOffsetPage
    - SimpleLruDoesPhysicalPageExist
    - SimpleLruReadPage_ReadOnly
    - MultiXactIdToOffsetEntry
    - SimpleLruWriteAll
    - LWLockRelease
    - SimpleLruGetBankLock
    linkageType: ''
    returnType: bool
    signature: bool find_multixact_start(MultiXactId multi, MultiXactOffset *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2551,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - multixacts
    - nextOffset
    - oldestMultiXactId
    - oldestOffset
    argTypes:
    - uint32*
    - MultiXactOffset*
    - MultiXactId*
    - MultiXactOffset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2545
    functionDepth: 1
    functionLinenumber: 2545
    functionLinenumberEnd: 2559
    functionName: GetMultiXactInfo
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: "void GetMultiXactInfo(uint32 *multixacts, MultiXactOffset *nextOffset,\n\t\t\t\t
      MultiXactId *oldestMultiXactId, MultiXactOffset *oldestOffset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetMultiXactInfo
      Src: /src/postgres/src/backend/access/transam/multixact.c:2602,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/multixact.c:2635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2589
    functionDepth: 2
    functionLinenumber: 2589
    functionLinenumberEnd: 2636
    functionName: MultiXactMemberFreezeThreshold
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - Min
    - GetMultiXactInfo
    linkageType: ''
    returnType: int
    signature: int MultiXactMemberFreezeThreshold(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/multixact.c:2645,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newOldestOffset
    argTypes:
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2647
      start: 2642
    functionDepth: 1
    functionLinenumber: 2642
    functionLinenumberEnd: 2647
    functionName: PerformMembersTruncation
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MXOffsetToMemberPage
    - SimpleLruTruncate
    linkageType: ''
    returnType: void
    signature: void PerformMembersTruncation(MultiXactOffset newOldestOffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/multixact.c:2662,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2663,1
    - Dst: PreviousMultiXactId
      Src: /src/postgres/src/backend/access/transam/multixact.c:2663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newOldestMulti
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2652
    functionDepth: 1
    functionLinenumber: 2652
    functionLinenumberEnd: 2664
    functionName: PerformOffsetsTruncation
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MultiXactIdToOffsetPage
    - PreviousMultiXactId
    - SimpleLruTruncate
    linkageType: ''
    returnType: void
    signature: void PerformOffsetsTruncation(MultiXactId newOldestMulti)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2685,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/multixact.c:2685,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2687,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2687,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2695,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2697,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2701,1
    - Dst: MultiXactIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/transam/multixact.c:2708,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2710,1
    - Dst: find_multixact_start
      Src: /src/postgres/src/backend/access/transam/multixact.c:2723,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2725,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:2726,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2728,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2742,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:2743,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2745,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:2749,1
    - Dst: MultiXactIdToOffsetSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:2753,1
    - Dst: MXOffsetToMemberSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:2755,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/multixact.c:2763,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2771,1
    - Dst: WriteMTruncateXlogRec
      Src: /src/postgres/src/backend/access/transam/multixact.c:2775,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2785,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2789,1
    - Dst: PerformMembersTruncation
      Src: /src/postgres/src/backend/access/transam/multixact.c:2792,1
    - Dst: PerformOffsetsTruncation
      Src: /src/postgres/src/backend/access/transam/multixact.c:2795,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/multixact.c:2799,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2800,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 2
    argNames:
    - newOldestMulti
    - newOldestMultiDB
    argTypes:
    - MultiXactId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2801
      start: 2677
    functionDepth: 3
    functionLinenumber: 2677
    functionLinenumberEnd: 2801
    functionName: TruncateMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - elog
    - PerformMembersTruncation
    - LWLockAcquire
    - Assert
    - PerformOffsetsTruncation
    - MultiXactIdIsValid
    - MultiXactIdPrecedesOrEquals
    - ereport
    - START_CRIT_SECTION
    - MultiXactIdToOffsetSegment
    - find_multixact_start
    - errmsg
    - LWLockRelease
    - MXOffsetToMemberSegment
    - RecoveryInProgress
    - WriteMTruncateXlogRec
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void TruncateMultiXact(MultiXactId newOldestMulti, Oid newOldestMultiDB)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2821,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2824
      start: 2810
    functionDepth: 1
    functionLinenumber: 2810
    functionLinenumberEnd: 2824
    functionName: MultiXactOffsetPagePrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MultiXactIdPrecedes
    linkageType: ''
    returnType: bool
    signature: bool MultiXactOffsetPagePrecedes(int64 page1, int64 page2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2835
      start: 2831
    functionDepth: 0
    functionLinenumber: 2831
    functionLinenumberEnd: 2835
    functionName: MultiXactMemberPagePrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool MultiXactMemberPagePrecedes(int64 page1, int64 page2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/multixact.c:2842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opaque_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2843
      start: 2837
    functionDepth: 1
    functionLinenumber: 2837
    functionLinenumberEnd: 2843
    functionName: MultiXactOffsetIoErrorDetail
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - errdetail
    linkageType: ''
    returnType: int
    signature: int MultiXactOffsetIoErrorDetail(const void *opaque_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2850,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/multixact.c:2851,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/multixact.c:2854,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - opaque_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2856
      start: 2845
    functionDepth: 1
    functionLinenumber: 2845
    functionLinenumberEnd: 2856
    functionName: MultiXactMemberIoErrorDetail
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MultiXactIdIsValid
    - errdetail
    linkageType: ''
    returnType: int
    signature: int MultiXactMemberIoErrorDetail(const void *opaque_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - multi1
    - multi2
    argTypes:
    - MultiXactId
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2870
      start: 2864
    functionDepth: 0
    functionLinenumber: 2864
    functionLinenumberEnd: 2870
    functionName: MultiXactIdPrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool MultiXactIdPrecedes(MultiXactId multi1, MultiXactId multi2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - multi1
    - multi2
    argTypes:
    - MultiXactId
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2884
      start: 2878
    functionDepth: 0
    functionLinenumber: 2878
    functionLinenumberEnd: 2884
    functionName: MultiXactIdPrecedesOrEquals
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool MultiXactIdPrecedesOrEquals(MultiXactId multi1, MultiXactId multi2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2905,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/multixact.c:2906,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2907,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/multixact.c:2908,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - oldestMultiDB
    - oldestMulti
    - oldestOffset
    argTypes:
    - Oid
    - MultiXactId
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2909
      start: 2893
    functionDepth: 1
    functionLinenumber: 2893
    functionLinenumberEnd: 2909
    functionName: WriteMTruncateXlogRec
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogFlush
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: "void WriteMTruncateXlogRec(Oid oldestMultiDB,\n\t\t\t\t\t  MultiXactId
      oldestMulti,\n\t\t\t\t\t  MultiXactOffset oldestOffset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/multixact.c:2917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2920,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/multixact.c:2920,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:2926,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/multixact.c:2926,1
    - Dst: SimpleLruZeroAndWritePage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2927,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:2933,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/multixact.c:2933,1
    - Dst: SimpleLruZeroAndWritePage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2934,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/multixact.c:2939,1
    - Dst: RecordNewMultiXact
      Src: /src/postgres/src/backend/access/transam/multixact.c:2944,1
    - Dst: MultiXactAdvanceNextMXact
      Src: /src/postgres/src/backend/access/transam/multixact.c:2948,1
    - Dst: NextMultiXactId
      Src: /src/postgres/src/backend/access/transam/multixact.c:2948,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2956,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2959,1
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2963,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:2969,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/multixact.c:2969,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:2972,1
    - Dst: MultiXactIdToOffsetSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:2976,1
    - Dst: MXOffsetToMemberSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:2978,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2981,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/multixact.c:2987,1
    - Dst: PerformMembersTruncation
      Src: /src/postgres/src/backend/access/transam/multixact.c:2989,1
    - Dst: PerformOffsetsTruncation
      Src: /src/postgres/src/backend/access/transam/multixact.c:2990,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2992,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:2995,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2996
      start: 2914
    functionDepth: 3
    functionLinenumber: 2914
    functionLinenumberEnd: 2996
    functionName: multixact_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - PerformMembersTruncation
    - LWLockAcquire
    - XLogRecGetXid
    - PerformOffsetsTruncation
    - SetMultiXactIdLimit
    - XLogRecGetInfo
    - elog
    - MultiXactAdvanceNextMXact
    - AdvanceNextFullTransactionIdPastXid
    - memcpy
    - NextMultiXactId
    - Assert
    - XLogRecHasAnyBlockRefs
    - MultiXactIdToOffsetSegment
    - SimpleLruZeroAndWritePage
    - MXOffsetToMemberSegment
    - XLogRecGetData
    - RecordNewMultiXact
    - TransactionIdPrecedes
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void multixact_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruSyncFileTag
      Src: /src/postgres/src/backend/access/transam/multixact.c:3004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ftag
    - path
    argTypes:
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3005
      start: 3001
    functionDepth: 1
    functionLinenumber: 3001
    functionLinenumberEnd: 3005
    functionName: multixactoffsetssyncfiletag
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - SlruSyncFileTag
    linkageType: ''
    returnType: int
    signature: int multixactoffsetssyncfiletag(const FileTag *ftag, char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruSyncFileTag
      Src: /src/postgres/src/backend/access/transam/multixact.c:3013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ftag
    - path
    argTypes:
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 3010
    functionDepth: 1
    functionLinenumber: 3010
    functionLinenumberEnd: 3014
    functionName: multixactmemberssyncfiletag
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - SlruSyncFileTag
    linkageType: ''
    returnType: int
    signature: int multixactmemberssyncfiletag(const FileTag *ftag, char *path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/transam.c:61,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:67,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/transam.c:69,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/transam.c:71,1
    - Dst: TransactionIdGetStatus
      Src: /src/postgres/src/backend/access/transam/transam.c:79,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - transactionId
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 94
    functionName: TransactionLogFetch
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsNormal
    - TransactionIdGetStatus
    - TransactionIdEquals
    linkageType: ''
    returnType: XidStatus
    signature: XidStatus TransactionLogFetch(TransactionId transactionId)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TransactionLogFetch
      Src: /src/postgres/src/backend/access/transam/transam.c:130,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/transam.c:156,1
    - Dst: SubTransGetParent
      Src: /src/postgres/src/backend/access/transam/transam.c:158,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/transam.c:159,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/transam.c:161,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/transam/transam.c:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - transactionId
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 172
    functionName: TransactionIdDidCommit
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 17
    functionsReached:
    - elog
    - TransactionIdPrecedes
    - TransactionIdDidCommit
    - SubTransGetParent
    - TransactionIdIsValid
    - TransactionLogFetch
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdDidCommit(TransactionId transactionId)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TransactionLogFetch
      Src: /src/postgres/src/backend/access/transam/transam.c:192,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/transam.c:210,1
    - Dst: SubTransGetParent
      Src: /src/postgres/src/backend/access/transam/transam.c:212,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/transam.c:213,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/transam.c:216,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/transam/transam.c:220,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - transactionId
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 227
    functionName: TransactionIdDidAbort
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 5
    functionsReached:
    - elog
    - TransactionIdPrecedes
    - TransactionIdDidAbort
    - SubTransGetParent
    - TransactionIdIsValid
    - TransactionLogFetch
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdDidAbort(TransactionId transactionId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdSetTreeStatus
      Src: /src/postgres/src/backend/access/transam/transam.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - xid
    - nxids
    - xids
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 245
    functionName: TransactionIdCommitTree
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 0
    functionsReached:
    - TransactionIdSetTreeStatus
    linkageType: ''
    returnType: void
    signature: void TransactionIdCommitTree(TransactionId xid, int nxids, TransactionId
      *xids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdSetTreeStatus
      Src: /src/postgres/src/backend/access/transam/transam.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - xid
    - nxids
    - xids
    - lsn
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 257
    functionName: TransactionIdAsyncCommitTree
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 0
    functionsReached:
    - TransactionIdSetTreeStatus
    linkageType: ''
    returnType: void
    signature: "void TransactionIdAsyncCommitTree(TransactionId xid, int nxids, TransactionId
      *xids,\n\t\t\t\t\t\t\t XLogRecPtr lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdSetTreeStatus
      Src: /src/postgres/src/backend/access/transam/transam.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - xid
    - nxids
    - xids
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 274
    functionName: TransactionIdAbortTree
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 0
    functionsReached:
    - TransactionIdSetTreeStatus
    linkageType: ''
    returnType: void
    signature: void TransactionIdAbortTree(TransactionId xid, int nxids, TransactionId
      *xids)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/transam.c:296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - mainxid
    - nxids
    - xids
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 280
    functionDepth: 2
    functionLinenumber: 280
    functionLinenumberEnd: 300
    functionName: TransactionIdLatest
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    linkageType: ''
    returnType: TransactionId
    signature: "TransactionId TransactionIdLatest(TransactionId mainxid,\n\t\t\t\t\tint
      nxids, const TransactionId *xids)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/transam.c:328,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:332,1
    - Dst: TransactionIdGetStatus
      Src: /src/postgres/src/backend/access/transam/transam.c:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 341
    functionName: TransactionIdGetCommitLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 1
    functionsReached:
    - TransactionIdIsNormal
    - TransactionIdGetStatus
    - TransactionIdEquals
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr TransactionIdGetCommitLSN(TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:105,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/access/transam/slru.c:105,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/slru.c:106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:114,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/access/transam/slru.c:114,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/slru.c:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - ctl
    - path
    - segno
    argTypes:
    - SlruDesc*
    - char*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 118
    functionName: SlruFileName
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - Assert
    - snprintf
    - INT64CONST
    linkageType: ''
    returnType: int
    signature: int SlruFileName(SlruDesc *ctl, char *path, int64 segno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - slotno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    functionName: SlotGetBankNumber
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SlotGetBankNumber(slotno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - xx_handler
    - ','
    - xx_segno
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 165
    functionName: INIT_SLRUFILETAG
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_SLRUFILETAG(a,xx_handler,xx_segno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:208,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:211,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:212,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:213,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:214,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:215,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:216,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:217,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:218,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:219,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:222,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - nslots
    - nlsns
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 225
    functionName: SimpleLruShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - Assert
    - MAXALIGN
    - BUFFERALIGN
    linkageType: ''
    returnType: Size
    signature: Size SimpleLruShmemSize(int nslots, int nlsns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/slru.c:237,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/slru.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - divisor
    - max
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 240
    functionName: SimpleLruAutotuneBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - Min
    - Max
    linkageType: ''
    returnType: int
    signature: int SimpleLruAutotuneBuffers(int divisor, int max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:250,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:253,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/slru.c:255,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/slru.c:257,1
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/backend/access/transam/slru.c:260,1
    - Dst: ShmemRequestInternal
      Src: /src/postgres/src/backend/access/transam/slru.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - options
    argTypes:
    - SlruOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 263
    functionName: SimpleLruRequestWithOpts
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - memcpy
    - MemoryContextAlloc
    - Assert
    - SimpleLruShmemSize
    - ShmemRequestInternal
    linkageType: ''
    returnType: void
    signature: void SimpleLruRequestWithOpts(const SlruOpts *options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/slru.c:282,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/slru.c:287,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/backend/access/transam/slru.c:288,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/slru.c:292,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/backend/access/transam/slru.c:293,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:296,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/slru.c:298,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/slru.c:303,1
    - Dst: pgstat_get_slru_index
      Src: /src/postgres/src/backend/access/transam/slru.c:305,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:308,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:310,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:312,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:314,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:316,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:318,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:322,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:324,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:326,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:331,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:334,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/access/transam/slru.c:337,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/access/transam/slru.c:350,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:355,1
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/backend/access/transam/slru.c:355,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 55
    argCount: 2
    argNames:
    - location
    - base_options
    argTypes:
    - void*
    - ShmemStructOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 356
    functionName: shmem_slru_init
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - memcpy
    - BUFFERALIGN
    - Assert
    - pg_atomic_init_u64
    - SimpleLruShmemSize
    - pgstat_get_slru_index
    - memset
    - MAXALIGN
    - LWLockInitialize
    - LWLockNewTrancheId
    - snprintf
    linkageType: ''
    returnType: void
    signature: void shmem_slru_init(void *location, ShmemStructOpts *base_options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/slru.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - location
    - base_options
    argTypes:
    - void*
    - ShmemStructOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 369
    functionName: shmem_slru_attach
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void shmem_slru_attach(void *location, ShmemStructOpts *base_options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - name
    - newval
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 386
    functionName: check_slru_buffers
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_slru_buffers(const char *name, int *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:402,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/slru.c:402,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:402,1
    - Dst: SlruSelectLRUPage
      Src: /src/postgres/src/backend/access/transam/slru.c:405,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:406,1
    - Dst: SlruRecentlyUsed
      Src: /src/postgres/src/backend/access/transam/slru.c:415,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/slru.c:418,1
    - Dst: SimpleLruZeroLSNs
      Src: /src/postgres/src/backend/access/transam/slru.c:421,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/slru.c:431,1
    - Dst: pgstat_count_slru_blocks_zeroed
      Src: /src/postgres/src/backend/access/transam/slru.c:434,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctl
    - pageno
    argTypes:
    - SlruDesc*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 437
    functionName: SimpleLruZeroPage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 4
    functionsReached:
    - pgstat_count_slru_blocks_zeroed
    - Assert
    - SlruRecentlyUsed
    - MemSet
    - pg_atomic_write_u64
    - LWLockHeldByMeInMode
    - SlruSelectLRUPage
    - SimpleLruGetBankLock
    - SimpleLruZeroLSNs
    linkageType: ''
    returnType: int
    signature: int SimpleLruZeroPage(SlruDesc *ctl, int64 pageno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/slru.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ctl
    - slotno
    argTypes:
    - SlruDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 457
    functionName: SimpleLruZeroLSNs
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - MemSet
    linkageType: ''
    returnType: void
    signature: void SimpleLruZeroLSNs(SlruDesc *ctl, int slotno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:471,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:472,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/slru.c:475,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:478,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:479,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctl
    - pageno
    argTypes:
    - SlruDesc*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 465
    functionDepth: 3
    functionLinenumber: 465
    functionLinenumberEnd: 482
    functionName: SimpleLruZeroAndWritePage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - SimpleLruZeroPage
    - LWLockAcquire
    - Assert
    - LWLockRelease
    - SimpleLruGetBankLock
    - SimpleLruWritePage
    linkageType: ''
    returnType: void
    signature: void SimpleLruZeroAndWritePage(SlruDesc *ctl, int64 pageno)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:495,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:497,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:500,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:501,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:502,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:503,1
    - Dst: LWLockConditionalAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:516,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ctl
    - slotno
    argTypes:
    - SlruDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 529
    functionName: SimpleLruWaitIO
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - Assert
    - LWLockConditionalAcquire
    - SlotGetBankNumber
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void SimpleLruWaitIO(SlruDesc *ctl, int slotno)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:556,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/slru.c:556,1
    - Dst: SlruSelectLRUPage
      Src: /src/postgres/src/backend/access/transam/slru.c:565,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:579,1
    - Dst: SlruRecentlyUsed
      Src: /src/postgres/src/backend/access/transam/slru.c:584,1
    - Dst: pgstat_count_slru_blocks_hit
      Src: /src/postgres/src/backend/access/transam/slru.c:587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:593,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:603,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:606,1
    - Dst: SlruPhysicalReadPage
      Src: /src/postgres/src/backend/access/transam/slru.c:609,1
    - Dst: SimpleLruZeroLSNs
      Src: /src/postgres/src/backend/access/transam/slru.c:612,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:617,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:623,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:627,1
    - Dst: SlruRecentlyUsed
      Src: /src/postgres/src/backend/access/transam/slru.c:629,1
    - Dst: pgstat_count_slru_blocks_read
      Src: /src/postgres/src/backend/access/transam/slru.c:632,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 4
    argNames:
    - ctl
    - pageno
    - write_ok
    - opaque_data
    argTypes:
    - SlruDesc*
    - int64
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 549
    functionDepth: 2
    functionLinenumber: 549
    functionLinenumberEnd: 636
    functionName: SimpleLruReadPage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 4
    functionsReached:
    - pgstat_count_slru_blocks_read
    - LWLockAcquire
    - Assert
    - SlruRecentlyUsed
    - SimpleLruZeroLSNs
    - SlruPhysicalReadPage
    - LWLockHeldByMeInMode
    - SlruSelectLRUPage
    - LWLockRelease
    - SimpleLruGetBankLock
    - SimpleLruWaitIO
    - pgstat_count_slru_blocks_hit
    - SlruReportIOError
    linkageType: ''
    returnType: int
    signature: "int SimpleLruReadPage(SlruDesc *ctl, int64 pageno, bool write_ok,\n\t\t\t\t
      \ const void *opaque_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:657,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:663,1
    - Dst: SlruRecentlyUsed
      Src: /src/postgres/src/backend/access/transam/slru.c:673,1
    - Dst: pgstat_count_slru_blocks_hit
      Src: /src/postgres/src/backend/access/transam/slru.c:676,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:683,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:684,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/slru.c:686,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ctl
    - pageno
    - opaque_data
    argTypes:
    - SlruDesc*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 653
    functionDepth: 3
    functionLinenumber: 653
    functionLinenumberEnd: 687
    functionName: SimpleLruReadPage_ReadOnly
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - LWLockAcquire
    - SlruRecentlyUsed
    - LWLockRelease
    - SimpleLruGetBankLock
    - pgstat_count_slru_blocks_hit
    - SimpleLruReadPage
    linkageType: ''
    returnType: int
    signature: int SimpleLruReadPage_ReadOnly(SlruDesc *ctl, int64 pageno, const void
      *opaque_data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:705,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:709,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/slru.c:709,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:709,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:715,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:735,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:738,1
    - Dst: SlruPhysicalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:741,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:747,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:751,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:753,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:762,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:766,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 3
    argNames:
    - ctl
    - slotno
    - fdata
    argTypes:
    - SlruDesc*
    - int
    - SlruWriteAll
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 700
    functionDepth: 2
    functionLinenumber: 700
    functionLinenumberEnd: 774
    functionName: SlruInternalWritePage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - SlruPhysicalWritePage
    - Assert
    - SlotGetBankNumber
    - LWLockHeldByMeInMode
    - LWLockRelease
    - SimpleLruGetBankLock
    - SimpleLruWaitIO
    - CloseTransientFile
    - SlruReportIOError
    linkageType: ''
    returnType: void
    signature: void SlruInternalWritePage(SlruDesc *ctl, int slotno, SlruWriteAll
      fdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:783,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctl
    - slotno
    argTypes:
    - SlruDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 780
    functionDepth: 3
    functionLinenumber: 780
    functionLinenumberEnd: 786
    functionName: SimpleLruWritePage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - Assert
    - SlruInternalWritePage
    linkageType: ''
    returnType: void
    signature: void SimpleLruWritePage(SlruDesc *ctl, int slotno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_count_slru_blocks_exists
      Src: /src/postgres/src/backend/access/transam/slru.c:806,1
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:808,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:810,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:820,1
    - Dst: lseek
      Src: /src/postgres/src/backend/access/transam/slru.c:823,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:827,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:832,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctl
    - pageno
    argTypes:
    - SlruDesc*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 840
    functionName: SimpleLruDoesPhysicalPageExist
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - SlruFileName
    - OpenTransientFile
    - pgstat_count_slru_blocks_exists
    - lseek
    - CloseTransientFile
    - SlruReportIOError
    linkageType: ''
    returnType: bool
    signature: bool SimpleLruDoesPhysicalPageExist(SlruDesc *ctl, int64 pageno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:862,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:871,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:881,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:882,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/slru.c:884,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/slru.c:889,1
    - Dst: pg_pread
      Src: /src/postgres/src/backend/access/transam/slru.c:890,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:892,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:895,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:898,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:900,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 3
    argNames:
    - ctl
    - pageno
    - slotno
    argTypes:
    - SlruDesc*
    - int64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 852
    functionDepth: 3
    functionLinenumber: 852
    functionLinenumberEnd: 908
    functionName: SlruPhysicalReadPage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - SlruFileName
    - OpenTransientFile
    - ereport
    - pgstat_report_wait_end
    - MemSet
    - errmsg
    - pgstat_report_wait_start
    - pg_pread
    - CloseTransientFile
    linkageType: ''
    returnType: bool
    signature: bool SlruPhysicalReadPage(SlruDesc *ctl, int64 pageno, int slotno)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_count_slru_blocks_written
      Src: /src/postgres/src/backend/access/transam/slru.c:935,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/slru.c:964,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/slru.c:972,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/slru.c:973,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/slru.c:974,1
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:1012,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1013,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/slru.c:1041,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/access/transam/slru.c:1042,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:1044,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1051,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:1054,1
    - Dst: INIT_SLRUFILETAG
      Src: /src/postgres/src/backend/access/transam/slru.c:1061,1
    - Dst: RegisterSyncRequest
      Src: /src/postgres/src/backend/access/transam/slru.c:1062,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/slru.c:1065,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/slru.c:1066,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:1068,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1071,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:1074,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1081,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 76
    argCount: 4
    argNames:
    - ctl
    - pageno
    - slotno
    - fdata
    argTypes:
    - SlruDesc*
    - int64
    - int
    - SlruWriteAll
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 924
    functionDepth: 3
    functionLinenumber: 924
    functionLinenumberEnd: 1090
    functionName: SlruPhysicalWritePage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - SlruFileName
    - OpenTransientFile
    - CloseTransientFile
    - RegisterSyncRequest
    - pg_pwrite
    - XLogFlush
    - START_CRIT_SECTION
    - pgstat_report_wait_end
    - INIT_SLRUFILETAG
    - pgstat_count_slru_blocks_written
    - pgstat_report_wait_start
    - pg_fsync
    - END_CRIT_SECTION
    linkageType: ''
    returnType: bool
    signature: bool SlruPhysicalWritePage(SlruDesc *ctl, int64 pageno, int slotno,
      SlruWriteAll fdata)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:1104,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1109,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1111,1
    - Dst: SlruDesc*::options::errdetail_for_io_error
      Src: /src/postgres/src/backend/access/transam/slru.c:1112,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1115,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1116,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1117,1
    - Dst: SlruDesc*::options::errdetail_for_io_error
      Src: /src/postgres/src/backend/access/transam/slru.c:1119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1123,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1124,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1125,1
    - Dst: SlruDesc*::options::errdetail_for_io_error
      Src: /src/postgres/src/backend/access/transam/slru.c:1127,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1129,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1130,1
    - Dst: SlruDesc*::options::errdetail_for_io_error
      Src: /src/postgres/src/backend/access/transam/slru.c:1132,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1136,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1137,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1138,1
    - Dst: SlruDesc*::options::errdetail_for_io_error
      Src: /src/postgres/src/backend/access/transam/slru.c:1140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1142,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1143,1
    - Dst: SlruDesc*::options::errdetail_for_io_error
      Src: /src/postgres/src/backend/access/transam/slru.c:1145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1148,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/transam/slru.c:1148,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1150,1
    - Dst: SlruDesc*::options::errdetail_for_io_error
      Src: /src/postgres/src/backend/access/transam/slru.c:1152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1155,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1156,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1157,1
    - Dst: SlruDesc*::options::errdetail_for_io_error
      Src: /src/postgres/src/backend/access/transam/slru.c:1159,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/slru.c:1163,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - ctl
    - pageno
    - opaque_data
    argTypes:
    - SlruDesc*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1096
    functionDepth: 1
    functionLinenumber: 1096
    functionLinenumberEnd: 1167
    functionName: SlruReportIOError
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - elog
    - SlruFileName
    - SlruDesc*::options::errdetail_for_io_error
    - ereport
    - errmsg
    - data_sync_elevel
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void SlruReportIOError(SlruDesc *ctl, int64 pageno, const void *opaque_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - shared
    - slotno
    argTypes:
    - SlruShared
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1203
    functionName: SlruRecentlyUsed
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - Assert
    - SlotGetBankNumber
    linkageType: ''
    returnType: void
    signature: void SlruRecentlyUsed(SlruShared shared, int slotno)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1237,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/access/transam/slru.c:1237,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:1237,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/slru.c:1304,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1311,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1323,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:1342,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:1355,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 2
    argNames:
    - ctl
    - pageno
    argTypes:
    - SlruDesc*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1218
    functionDepth: 3
    functionLinenumber: 1218
    functionLinenumberEnd: 1363
    functionName: SlruSelectLRUPage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - Assert
    - SlruDesc*::options::PagePrecedes
    - pg_atomic_read_u64
    - LWLockHeldByMe
    - SimpleLruGetBankLock
    - SimpleLruWaitIO
    - SlruInternalWritePage
    linkageType: ''
    returnType: int
    signature: int SlruSelectLRUPage(SlruDesc *ctl, int64 pageno)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1377,1
    - Dst: pgstat_count_slru_flush
      Src: /src/postgres/src/backend/access/transam/slru.c:1381,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1388,1
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1392,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1400,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1401,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:1409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1416,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1422,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1430,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:1439,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/access/transam/slru.c:1443,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - ctl
    - allow_redirtied
    argTypes:
    - SlruDesc*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1371
    functionDepth: 3
    functionLinenumber: 1371
    functionLinenumberEnd: 1444
    functionName: SimpleLruWriteAll
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - LWLockAcquire
    - Assert
    - fsync_fname
    - SlotGetBankNumber
    - pgstat_count_slru_flush
    - LWLockRelease
    - CloseTransientFile
    - SlruInternalWritePage
    - SlruReportIOError
    linkageType: ''
    returnType: void
    signature: void SimpleLruWriteAll(SlruDesc *ctl, bool allow_redirtied)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_count_slru_truncate
      Src: /src/postgres/src/backend/access/transam/slru.c:1464,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1480,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/slru.c:1480,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1483,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1484,1
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1489,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1490,1
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1493,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1501,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1502,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1508,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:1532,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:1534,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1536,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1540,1
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/backend/access/transam/slru.c:1543,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - ctl
    - cutoffPage
    argTypes:
    - SlruDesc*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1457
    functionDepth: 3
    functionLinenumber: 1457
    functionLinenumberEnd: 1544
    functionName: SimpleLruTruncate
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - SlruScanDirectory
    - pgstat_count_slru_truncate
    - LWLockAcquire
    - SlruDesc*::options::PagePrecedes
    - ereport
    - SlotGetBankNumber
    - errmsg
    - pg_atomic_read_u64
    - LWLockRelease
    - SimpleLruWaitIO
    - SlruInternalWritePage
    linkageType: ''
    returnType: void
    signature: void SimpleLruTruncate(SlruDesc *ctl, int64 cutoffPage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INIT_SLRUFILETAG
      Src: /src/postgres/src/backend/access/transam/slru.c:1562,1
    - Dst: RegisterSyncRequest
      Src: /src/postgres/src/backend/access/transam/slru.c:1563,1
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:1567,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1568,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/slru.c:1568,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/slru.c:1569,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctl
    - segno
    argTypes:
    - SlruDesc*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1552
    functionDepth: 1
    functionLinenumber: 1552
    functionLinenumberEnd: 1570
    functionName: SlruInternalDeleteSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - SlruFileName
    - errmsg_internal
    - unlink
    - RegisterSyncRequest
    - ereport
    - INIT_SLRUFILETAG
    linkageType: ''
    returnType: void
    signature: void SlruInternalDeleteSegment(SlruDesc *ctl, int64 segno)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1579,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1583,1
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1589,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1597,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1598,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:1620,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:1622,1
    - Dst: SlruInternalDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1634,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1636,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - ctl
    - segno
    argTypes:
    - SlruDesc*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1575
    functionDepth: 3
    functionLinenumber: 1575
    functionLinenumberEnd: 1637
    functionName: SlruDeleteSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - SlotGetBankNumber
    - LWLockRelease
    - SlruInternalDeleteSegment
    - SimpleLruWaitIO
    - SlruInternalWritePage
    linkageType: ''
    returnType: void
    signature: void SlruDeleteSegment(SlruDesc *ctl, int64 segno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1657,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1659,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1660,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ctl
    - segpage
    - cutoffPage
    argTypes:
    - SlruDesc*
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1652
    functionDepth: 1
    functionLinenumber: 1652
    functionLinenumberEnd: 1661
    functionName: SlruMayDeleteSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - Assert
    - SlruDesc*::options::PagePrecedes
    linkageType: ''
    returnType: bool
    signature: bool SlruMayDeleteSegment(SlruDesc *ctl, int64 segpage, int64 cutoffPage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1675,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1685,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1685,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1686,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1687,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1687,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1688,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1688,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1689,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1689,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1690,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1690,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1691,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/slru.c:1691,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1692,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/slru.c:1692,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1693,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1693,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1694,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1694,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1695,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1695,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1696,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1696,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1697,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1698,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1698,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1699,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1699,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1701,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1703,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1703,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1704,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1705,1
    - Dst: SlruDesc*::options::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1705,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1718,1
    - Dst: SlruMayDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1718,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1734,1
    - Dst: SlruMayDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1734,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 3
    argNames:
    - ctl
    - per_page
    - offset
    argTypes:
    - SlruDesc*
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1664
    functionDepth: 2
    functionLinenumber: 1664
    functionLinenumberEnd: 1738
    functionName: SlruPagePrecedesTestOffset
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - Assert
    - SlruDesc*::options::PagePrecedes
    - SlruMayDeleteSegment
    - TransactionIdFollowsOrEquals
    linkageType: ''
    returnType: void
    signature: void SlruPagePrecedesTestOffset(SlruDesc *ctl, int per_page, uint32
      offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruPagePrecedesTestOffset
      Src: /src/postgres/src/backend/access/transam/slru.c:1753,1
    - Dst: SlruPagePrecedesTestOffset
      Src: /src/postgres/src/backend/access/transam/slru.c:1754,1
    - Dst: SlruPagePrecedesTestOffset
      Src: /src/postgres/src/backend/access/transam/slru.c:1755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctl
    - per_page
    argTypes:
    - SlruDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1756
      start: 1749
    functionDepth: 3
    functionLinenumber: 1749
    functionLinenumberEnd: 1756
    functionName: SlruPagePrecedesUnitTests
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - SlruPagePrecedesTestOffset
    linkageType: ''
    returnType: void
    signature: void SlruPagePrecedesUnitTests(SlruDesc *ctl, int per_page)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlruMayDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1770,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctl
    - filename
    - segpage
    - data
    argTypes:
    - SlruDesc*
    - char*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1774
      start: 1764
    functionDepth: 2
    functionLinenumber: 1764
    functionLinenumberEnd: 1774
    functionName: SlruScanDirCbReportPresence
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - SlruMayDeleteSegment
    linkageType: ''
    returnType: bool
    signature: "bool SlruScanDirCbReportPresence(SlruDesc *ctl, char *filename, int64
      segpage,\n\t\t\t\t\t\t\tvoid *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlruMayDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1786,1
    - Dst: SlruInternalDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctl
    - filename
    - segpage
    - data
    argTypes:
    - SlruDesc*
    - char*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1780
    functionDepth: 2
    functionLinenumber: 1780
    functionLinenumberEnd: 1790
    functionName: SlruScanDirCbDeleteCutoff
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - SlruMayDeleteSegment
    - SlruInternalDeleteSegment
    linkageType: ''
    returnType: bool
    signature: "bool SlruScanDirCbDeleteCutoff(SlruDesc *ctl, char *filename, int64
      segpage,\n\t\t\t\t\t\t  void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruInternalDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctl
    - filename
    - segpage
    - data
    argTypes:
    - SlruDesc*
    - char*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1796
    functionDepth: 2
    functionLinenumber: 1796
    functionLinenumberEnd: 1802
    functionName: SlruScanDirCbDeleteAll
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - SlruInternalDeleteSegment
    linkageType: ''
    returnType: bool
    signature: bool SlruScanDirCbDeleteAll(SlruDesc *ctl, char *filename, int64 segpage,
      void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - ctl
    - len
    argTypes:
    - SlruDesc*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1810
    functionDepth: 0
    functionLinenumber: 1810
    functionLinenumberEnd: 1826
    functionName: SlruCorrectSegmentFilenameLength
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SlruCorrectSegmentFilenameLength(SlruDesc *ctl, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/slru.c:1852,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/slru.c:1853,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/slru.c:1857,1
    - Dst: SlruCorrectSegmentFilenameLength
      Src: /src/postgres/src/backend/access/transam/slru.c:1859,1
    - Dst: strspn
      Src: /src/postgres/src/backend/access/transam/slru.c:1860,1
    - Dst: strtoi64
      Src: /src/postgres/src/backend/access/transam/slru.c:1862,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/slru.c:1865,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/transam/slru.c:1867,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/slru.c:1872,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ctl
    - callback
    - data
    argTypes:
    - SlruDesc*
    - SlruScanCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1843
    functionDepth: 2
    functionLinenumber: 1843
    functionLinenumberEnd: 1875
    functionName: SlruScanDirectory
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - elog
    - callback
    - AllocateDir
    - FreeDir
    - strtoi64
    - strspn
    - strlen
    - SlruCorrectSegmentFilenameLength
    - ReadDir
    linkageType: ''
    returnType: bool
    signature: bool SlruScanDirectory(SlruDesc *ctl, SlruScanCallback callback, void
      *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:1890,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1892,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/slru.c:1896,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/slru.c:1897,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:1898,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1901,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctl
    - ftag
    - path
    argTypes:
    - SlruDesc*
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1883
    functionDepth: 1
    functionLinenumber: 1883
    functionLinenumberEnd: 1905
    functionName: SlruSyncFileTag
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - SlruFileName
    - OpenTransientFile
    - CloseTransientFile
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - pg_fsync
    linkageType: ''
    returnType: int
    signature: int SlruSyncFileTag(SlruDesc *ctl, const FileTag *ftag, char *path)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/varsup.c:77,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:78,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/transam/varsup.c:84,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:86,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/backend/access/transam/varsup.c:89,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/varsup.c:93,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:94,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:96,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:99,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:114,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:128,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/varsup.c:136,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:139,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/varsup.c:141,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/varsup.c:146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:147,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:152,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/varsup.c:153,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:154,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:156,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:159,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/varsup.c:161,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:166,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/varsup.c:169,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:171,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:175,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/varsup.c:178,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:180,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:185,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:187,1
    - Dst: ExtendCLOG
      Src: /src/postgres/src/backend/access/transam/varsup.c:199,1
    - Dst: ExtendCommitTs
      Src: /src/postgres/src/backend/access/transam/varsup.c:200,1
    - Dst: ExtendSUBTRANS
      Src: /src/postgres/src/backend/access/transam/varsup.c:201,1
    - Dst: FullTransactionIdAdvance
      Src: /src/postgres/src/backend/access/transam/varsup.c:209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:250,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:262,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/varsup.c:267,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:274,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 1
    argNames:
    - isSubXact
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 277
    functionName: GetNewTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 1
    functionsReached:
    - ExtendSUBTRANS
    - FullTransactionIdAdvance
    - LWLockAcquire
    - errcode
    - errhint
    - FullTransactionIdFromEpochAndXid
    - IsInParallelMode
    - ExtendCommitTs
    - RecoveryInProgress
    - elog
    - ExtendCLOG
    - Assert
    - XidFromFullTransactionId
    - get_database_name
    - errmsg
    - ereport
    - IsBootstrapProcessingMode
    - SendPostmasterSignal
    - TransactionIdFollowsOrEquals
    - pg_write_barrier
    - LWLockRelease
    - errdetail
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId GetNewTransactionId(bool isSubXact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:287,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 292
    functionName: ReadNextFullTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 5
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId ReadNextFullTransactionId(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:310,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/varsup.c:310,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:313,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:314,1
    - Dst: TransactionIdAdvance
      Src: /src/postgres/src/backend/access/transam/varsup.c:325,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:326,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/varsup.c:327,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/backend/access/transam/varsup.c:329,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:335,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 338
    functionName: AdvanceNextFullTransactionIdPastXid
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 1
    functionsReached:
    - AmStartupProcess
    - LWLockAcquire
    - Assert
    - XidFromFullTransactionId
    - TransactionIdAdvance
    - EpochFromFullTransactionId
    - unlikely
    - FullTransactionIdFromEpochAndXid
    - LWLockRelease
    - TransactionIdFollowsOrEquals
    linkageType: ''
    returnType: void
    signature: void AdvanceNextFullTransactionIdPastXid(TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:352,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/varsup.c:353,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oldest_datfrozenxid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 359
    functionName: AdvanceOldestClogXid
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void AdvanceOldestClogXid(TransactionId oldest_datfrozenxid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:375,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/varsup.c:375,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:438,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:445,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:446,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:449,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/varsup.c:450,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:460,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/varsup.c:462,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:465,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/access/transam/varsup.c:478,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/varsup.c:479,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:484,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:485,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/varsup.c:488,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:490,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:493,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:494,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/varsup.c:497,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:499,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - oldest_datfrozenxid
    - oldest_datoid
    argTypes:
    - TransactionId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 502
    functionName: SetTransactionIdLimit
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - errmsg_internal
    - Assert
    - IsTransactionState
    - ereport
    - XidFromFullTransactionId
    - TransactionIdIsNormal
    - get_database_name
    - errhint
    - errmsg
    - LWLockRelease
    - errdetail
    - SendPostmasterSignal
    - TransactionIdFollowsOrEquals
    linkageType: ''
    returnType: void
    signature: void SetTransactionIdLimit(TransactionId oldest_datfrozenxid, Oid oldest_datoid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:524,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:525,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:529,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/varsup.c:531,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/varsup.c:533,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:535,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/access/transam/varsup.c:537,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/varsup.c:537,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 515
    functionDepth: 2
    functionLinenumber: 515
    functionLinenumberEnd: 540
    functionName: ForceTransactionIdLimitUpdate
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - XidFromFullTransactionId
    - TransactionIdIsNormal
    - LWLockRelease
    - SearchSysCacheExists1
    - ObjectIdGetDatum
    - TransactionIdFollowsOrEquals
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: bool ForceTransactionIdLimitUpdate(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/varsup.c:559,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:560,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:562,1
    - Dst: XLogPutNextOid
      Src: /src/postgres/src/backend/access/transam/varsup.c:601,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:610,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 613
    functionName: GetNewObjectId
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - elog
    - LWLockAcquire
    - XLogPutNextOid
    - LWLockRelease
    - RecoveryInProgress
    linkageType: ''
    returnType: Oid
    signature: Oid GetNewObjectId(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:626,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:629,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:632,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - nextOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 639
    functionName: SetNextObjectId
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - elog
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void SetNextObjectId(Oid nextOid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetNextObjectId
      Src: /src/postgres/src/backend/access/transam/varsup.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 650
    functionDepth: 2
    functionLinenumber: 650
    functionLinenumberEnd: 654
    functionName: StopGeneratingPinnedObjectIds
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - SetNextObjectId
    linkageType: ''
    returnType: void
    signature: void StopGeneratingPinnedObjectIds(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:677,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/varsup.c:677,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/varsup.c:680,1
    - Dst: pg_memory_barrier
      Src: /src/postgres/src/backend/access/transam/varsup.c:697,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:699,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:701,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:701,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:702,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 671
    functionDepth: 2
    functionLinenumber: 671
    functionLinenumberEnd: 703
    functionName: AssertTransactionIdInAllowableRange
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - Assert
    - XidFromFullTransactionId
    - TransactionIdIsNormal
    - TransactionIdPrecedesOrEquals
    - pg_memory_barrier
    - TransactionIdFollowsOrEquals
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void AssertTransactionIdInAllowableRange(TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - symname
    - ','
    - name
    - ','
    - redo
    - ','
    - desc
    - ','
    - identify
    - ','
    - startup
    - ','
    - cleanup
    - ','
    - mask
    - ','
    - decode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: PG_RMGR
    functionSourceFile: /src/postgres/src/backend/access/transam/rmgr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask,decode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/rmgr.c:62,1
    - Dst: rm_startup
      Src: /src/postgres/src/backend/access/transam/rmgr.c:66,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 68
    functionName: RmgrStartup
    functionSourceFile: /src/postgres/src/backend/access/transam/rmgr.c
    functionUses: 0
    functionsReached:
    - rm_startup
    - RmgrIdExists
    linkageType: ''
    returnType: void
    signature: void RmgrStartup(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/rmgr.c:78,1
    - Dst: rm_cleanup
      Src: /src/postgres/src/backend/access/transam/rmgr.c:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 84
    functionName: RmgrCleanup
    functionSourceFile: /src/postgres/src/backend/access/transam/rmgr.c
    functionUses: 0
    functionsReached:
    - rm_cleanup
    - RmgrIdExists
    linkageType: ''
    returnType: void
    signature: void RmgrCleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/rmgr.c:93,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/rmgr.c:93,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/rmgr.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rmid
    argTypes:
    - RmgrId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: RmgrNotFound
    functionSourceFile: /src/postgres/src/backend/access/transam/rmgr.c
    functionUses: 1
    functionsReached:
    - errhint
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void RmgrNotFound(RmgrId rmid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/rmgr.c:109,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/rmgr.c:110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/rmgr.c:110,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/rmgr.c:111,1
    - Dst: RmgrIdIsCustom
      Src: /src/postgres/src/backend/access/transam/rmgr.c:113,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/rmgr.c:114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/rmgr.c:114,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/rmgr.c:115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/rmgr.c:119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/rmgr.c:120,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/rmgr.c:121,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/rmgr.c:124,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/rmgr.c:125,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/rmgr.c:126,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/rmgr.c:132,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/transam/rmgr.c:135,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/rmgr.c:136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/rmgr.c:137,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/rmgr.c:138,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/rmgr.c:143,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/rmgr.c:144,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - rmid
    - rmgr
    argTypes:
    - RmgrId
    - RmgrData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 146
    functionName: RegisterCustomRmgr
    functionSourceFile: /src/postgres/src/backend/access/transam/rmgr.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    - ereport
    - RmgrIdIsCustom
    - errhint
    - strlen
    - errmsg
    - RmgrIdExists
    - errdetail
    linkageType: ''
    returnType: void
    signature: void RegisterCustomRmgr(RmgrId rmid, const RmgrData *rmgr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/access/transam/rmgr.c:157,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/rmgr.c:161,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/rmgr.c:163,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/rmgr.c:164,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/rmgr.c:164,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/transam/rmgr.c:165,1
    - Dst: RmgrIdIsBuiltin
      Src: /src/postgres/src/backend/access/transam/rmgr.c:165,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/access/transam/rmgr.c:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 170
    functionName: pg_get_wal_resource_managers
    functionSourceFile: /src/postgres/src/backend/access/transam/rmgr.c
    functionUses: 0
    functionsReached:
    - InitMaterializedSRF
    - Int32GetDatum
    - GetRmgr
    - tuplestore_putvalues
    - CStringGetTextDatum
    - RmgrIdExists
    - RmgrIdIsBuiltin
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_wal_resource_managers(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 401
    functionName: IsTransactionState
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsTransactionState(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 418
    functionName: IsAbortedTransactionBlockState
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsAbortedTransactionBlockState(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:430,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:431,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 433
    functionName: GetTopTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - AssignTransactionId
    - XidFromFullTransactionId
    - FullTransactionIdIsValid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetTopTransactionId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 446
    functionName: GetTopTransactionIdIfAny
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - XidFromFullTransactionId
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetTopTransactionIdIfAny(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:460,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:461,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 463
    functionName: GetCurrentTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 8
    functionsReached:
    - AssignTransactionId
    - XidFromFullTransactionId
    - FullTransactionIdIsValid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetCurrentTransactionId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 476
    functionName: GetCurrentTransactionIdIfAny
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - XidFromFullTransactionId
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetCurrentTransactionIdIfAny(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:487,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 490
    functionName: GetTopFullTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - AssignTransactionId
    - FullTransactionIdIsValid
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId GetTopFullTransactionId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 504
    functionName: GetTopFullTransactionIdIfAny
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId GetTopFullTransactionIdIfAny(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:518,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 521
    functionName: GetCurrentFullTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - AssignTransactionId
    - FullTransactionIdIsValid
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId GetCurrentFullTransactionId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 535
    functionName: GetCurrentFullTransactionIdIfAny
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId GetCurrentFullTransactionIdIfAny(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:545,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 547
    functionName: MarkCurrentTransactionIdLoggedIfAny
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - FullTransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void MarkCurrentTransactionIdLoggedIfAny(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:568,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:572,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:576,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:580,1
    - Dst: GetCurrentTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xact.c:580,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 560
    functionDepth: 2
    functionLinenumber: 560
    functionLinenumberEnd: 584
    functionName: IsSubxactTopXidLogPending
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - GetCurrentTransactionIdIfAny
    - XLogLogicalInfoActive
    - IsTransactionState
    - IsSubTransaction
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: bool IsSubxactTopXidLogPending(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:595,1
    - Dst: IsSubxactTopXidLogPending
      Src: /src/postgres/src/backend/access/transam/xact.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 598
    functionName: MarkSubxactTopXidLogged
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsSubxactTopXidLogPending
    linkageType: ''
    returnType: void
    signature: void MarkSubxactTopXidLogged(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xact.c:617,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:618,1
    - Dst: ReadNextTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:619,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:622,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 608
    functionDepth: 2
    functionLinenumber: 608
    functionLinenumberEnd: 625
    functionName: GetStableLatestTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReadNextTransactionId
    - GetTopTransactionIdIfAny
    - TransactionIdIsValid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetStableLatestTransactionId(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:644,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:644,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:645,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:651,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:651,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:652,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:653,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:654,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:662,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/transam/xact.c:668,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:669,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:680,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:682,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:695,1
    - Dst: GetNewTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:708,1
    - Dst: SubTransSetParent
      Src: /src/postgres/src/backend/access/transam/xact.c:713,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:713,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:714,1
    - Dst: RegisterPredicateLockingXid
      Src: /src/postgres/src/backend/access/transam/xact.c:721,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:721,1
    - Dst: XactLockTableInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:731,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:731,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:753,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:755,1
    - Dst: GetTopTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:771,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:772,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:772,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:775,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:776,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:777,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:780,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 43
    argCount: 1
    argNames:
    - s
    argTypes:
    - TransactionState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 636
    functionDepth: 3
    functionLinenumber: 636
    functionLinenumberEnd: 787
    functionName: AssignTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 5
    functionsReached:
    - XLogInsert
    - errcode
    - RegisterPredicateLockingXid
    - palloc_array
    - XLogRegisterData
    - SubTransSetParent
    - AssignTransactionId
    - IsInParallelMode
    - GetTopTransactionId
    - XLogStandbyInfoActive
    - XLogBeginInsert
    - Assert
    - pfree
    - XidFromFullTransactionId
    - errmsg
    - GetNewTransactionId
    - IsParallelWorker
    - XLogLogicalInfoActive
    - ereport
    - XactLockTableInsert
    - FullTransactionIdIsValid
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void AssignTransactionId(TransactionState s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 798
    functionName: GetCurrentSubTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: SubTransactionId
    signature: SubTransactionId GetCurrentSubTransactionId(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - subxid
    argTypes:
    - SubTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 806
    functionDepth: 0
    functionLinenumber: 806
    functionLinenumberEnd: 819
    functionName: SubTransactionIsActive
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SubTransactionIsActive(SubTransactionId subxid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:842,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:843,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:845,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - used
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 850
    functionName: GetCurrentCommandId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 6
    functionsReached:
    - IsParallelWorker
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: CommandId
    signature: CommandId GetCurrentCommandId(bool used)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:863,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - xact_ts
    - stmt_ts
    argTypes:
    - TimestampTz
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 866
    functionName: SetParallelStartTimestamps
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsParallelWorker
    linkageType: ''
    returnType: void
    signature: void SetParallelStartTimestamps(TimestampTz xact_ts, TimestampTz stmt_ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 871
    functionDepth: 0
    functionLinenumber: 871
    functionLinenumberEnd: 875
    functionName: GetCurrentTransactionStartTimestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetCurrentTransactionStartTimestamp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 884
    functionName: GetCurrentStatementStartTimestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetCurrentStatementStartTimestamp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:898,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:904,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 907
    functionName: GetCurrentTransactionStopTimestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - GetCurrentTimestamp
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetCurrentTransactionStopTimestamp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:918,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:921,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 922
    functionName: SetCurrentStatementStartTimestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached:
    - Assert
    - GetCurrentTimestamp
    - IsParallelWorker
    linkageType: ''
    returnType: void
    signature: void SetCurrentStatementStartTimestamp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 936
    functionName: GetCurrentTransactionNestLevel
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int GetCurrentTransactionNestLevel(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/xact.c:960,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/xact.c:963,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xact.c:963,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:1010,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/xact.c:1012,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:1012,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/xact.c:1024,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/xact.c:1026,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 1034
    functionName: TransactionIdIsCurrentTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 21
    functionsReached:
    - TransactionIdPrecedes
    - FullTransactionIdIsValid
    - XidFromFullTransactionId
    - TransactionIdEquals
    - TransactionIdIsNormal
    - GetTopTransactionIdIfAny
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdIsCurrentTransactionId(TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1043
    functionDepth: 0
    functionLinenumber: 1043
    functionLinenumberEnd: 1047
    functionName: TransactionStartedDuringRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool TransactionStartedDuringRecovery(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1061
    functionDepth: 0
    functionLinenumber: 1061
    functionLinenumberEnd: 1075
    functionName: GetTopReadOnlyTransactionNestLevel
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int GetTopReadOnlyTransactionNestLevel(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1085,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1080
    functionDepth: 1
    functionLinenumber: 1080
    functionLinenumberEnd: 1088
    functionName: EnterParallelMode
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 4
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void EnterParallelMode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1098,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1099,1
    - Dst: ParallelContextActive
      Src: /src/postgres/src/backend/access/transam/xact.c:1100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1093
    functionDepth: 2
    functionLinenumber: 1093
    functionLinenumberEnd: 1103
    functionName: ExitParallelMode
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 7
    functionsReached:
    - Assert
    - ParallelContextActive
    linkageType: ''
    returnType: void
    signature: void ExitParallelMode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1118
    functionDepth: 0
    functionLinenumber: 1118
    functionLinenumberEnd: 1124
    functionName: IsInParallelMode
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsInParallelMode(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:1145,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:1145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:1146,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:1147,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:1148,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:1154,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:1155,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:1156,1
    - Dst: SnapshotSetCommandId
      Src: /src/postgres/src/backend/access/transam/xact.c:1161,1
    - Dst: AtCCI_LocalCache
      Src: /src/postgres/src/backend/access/transam/xact.c:1169,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1129
    functionDepth: 1
    functionLinenumber: 1129
    functionLinenumberEnd: 1171
    functionName: CommandCounterIncrement
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached:
    - errcode
    - ereport
    - SnapshotSetCommandId
    - errmsg
    - IsInParallelMode
    - AtCCI_LocalCache
    - IsParallelWorker
    linkageType: ''
    returnType: void
    signature: void CommandCounterIncrement(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1181
    functionDepth: 0
    functionLinenumber: 1181
    functionLinenumberEnd: 1185
    functionName: ForceSyncCommit
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ForceSyncCommit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/access/transam/xact.c:1199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1196
    functionDepth: 1
    functionLinenumber: 1196
    functionLinenumberEnd: 1200
    functionName: AtStart_Cache
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - AcceptInvalidationMessages
    linkageType: ''
    returnType: void
    signature: void AtStart_Cache(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xact.c:1224,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xact.c:1237,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1205
    functionDepth: 1
    functionLinenumber: 1205
    functionLinenumberEnd: 1250
    functionName: AtStart_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void AtStart_Memory(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1263,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/backend/access/transam/xact.c:1268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1255
    functionDepth: 1
    functionLinenumber: 1255
    functionLinenumberEnd: 1273
    functionName: AtStart_ResourceOwner
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - ResourceOwnerCreate
    linkageType: ''
    returnType: void
    signature: void AtStart_ResourceOwner(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1288,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xact.c:1300,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1283
    functionDepth: 1
    functionLinenumber: 1283
    functionLinenumberEnd: 1307
    functionName: AtSubStart_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void AtSubStart_Memory(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1317,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/backend/access/transam/xact.c:1324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1312
    functionDepth: 1
    functionLinenumber: 1312
    functionLinenumberEnd: 1329
    functionName: AtSubStart_ResourceOwner
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - ResourceOwnerCreate
    linkageType: ''
    returnType: void
    signature: void AtSubStart_ResourceOwner(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xact.c:1347,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:1348,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:1368,1
    - Dst: LogLogicalInvalidations
      Src: /src/postgres/src/backend/access/transam/xact.c:1369,1
    - Dst: smgrGetPendingDeletes
      Src: /src/postgres/src/backend/access/transam/xact.c:1372,1
    - Dst: xactGetCommittedChildren
      Src: /src/postgres/src/backend/access/transam/xact.c:1373,1
    - Dst: pgstat_get_transactional_drops
      Src: /src/postgres/src/backend/access/transam/xact.c:1374,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:1375,1
    - Dst: xactGetCommittedInvalidationMessages
      Src: /src/postgres/src/backend/access/transam/xact.c:1376,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:1395,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1398,1
    - Dst: LogStandbyInvalidations
      Src: /src/postgres/src/backend/access/transam/xact.c:1423,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1469,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xact.c:1470,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1473,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/xact.c:1479,1
    - Dst: XactLogCommitRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:1484,1
    - Dst: GetCurrentTransactionStopTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:1484,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/xact.c:1494,1
    - Dst: GetCurrentTransactionStopTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:1508,1
    - Dst: TransactionTreeSetCommitTsData
      Src: /src/postgres/src/backend/access/transam/xact.c:1510,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:1544,1
    - Dst: TransactionIdCommitTree
      Src: /src/postgres/src/backend/access/transam/xact.c:1550,1
    - Dst: XLogSetAsyncXactLSN
      Src: /src/postgres/src/backend/access/transam/xact.c:1565,1
    - Dst: TransactionIdAsyncCommitTree
      Src: /src/postgres/src/backend/access/transam/xact.c:1573,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xact.c:1583,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/xact.c:1587,1
    - Dst: SyncRepWaitForLSN
      Src: /src/postgres/src/backend/access/transam/xact.c:1599,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1609,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1611,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1344
    functionDepth: 3
    functionLinenumber: 1344
    functionLinenumberEnd: 1614
    functionName: RecordTransactionCommit
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - LogLogicalInvalidations
    - SyncRepWaitForLSN
    - replorigin_session_advance
    - TransactionIdCommitTree
    - XLogStandbyInfoActive
    - elog
    - TransactionIdLatest
    - Assert
    - pfree
    - GetTopTransactionIdIfAny
    - XactLogCommitRecord
    - XLogLogicalInfoActive
    - TransactionTreeSetCommitTsData
    - pgstat_get_transactional_drops
    - xactGetCommittedChildren
    - GetCurrentTransactionStopTimestamp
    - xactGetCommittedInvalidationMessages
    - pg_write_barrier
    - START_CRIT_SECTION
    - XLogFlush
    - smgrGetPendingDeletes
    - LogStandbyInvalidations
    - XLogSetAsyncXactLSN
    - END_CRIT_SECTION
    - TransactionIdIsValid
    - TransactionIdAsyncCommitTree
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId RecordTransactionCommit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AtCCI_RelationMap
      Src: /src/postgres/src/backend/access/transam/xact.c:1628,1
    - Dst: CommandEndInvalidationMessages
      Src: /src/postgres/src/backend/access/transam/xact.c:1633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1620
    functionDepth: 1
    functionLinenumber: 1620
    functionLinenumberEnd: 1634
    functionName: AtCCI_LocalCache
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - AtCCI_RelationMap
    - CommandEndInvalidationMessages
    linkageType: ''
    returnType: void
    signature: void AtCCI_LocalCache(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1656,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xact.c:1657,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1639
    functionDepth: 1
    functionLinenumber: 1639
    functionLinenumberEnd: 1666
    functionName: AtCommit_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextReset
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void AtCommit_Memory(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1681,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1685,1
    - Dst: MemoryContextIsEmpty
      Src: /src/postgres/src/backend/access/transam/xact.c:1693,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:1695,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1676
    functionDepth: 1
    functionLinenumber: 1676
    functionLinenumberEnd: 1698
    functionName: AtSubCommit_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextDelete
    - MemoryContextIsEmpty
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void AtSubCommit_Memory(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1711,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xact.c:1731,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:1735,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:1736,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:1737,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/xact.c:1747,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/transam/xact.c:1750,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:1766,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xact.c:1769,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1777,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1782
      start: 1705
    functionDepth: 1
    functionLinenumber: 1705
    functionLinenumberEnd: 1782
    functionName: AtSubCommit_childXids
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - memcpy
    - errcode
    - Assert
    - MemoryContextAlloc
    - pfree
    - ereport
    - repalloc
    - XidFromFullTransactionId
    - errmsg
    - Min
    linkageType: ''
    returnType: void
    signature: void AtSubCommit_childXids(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xact.c:1798,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:1815,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/transam/xact.c:1834,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:1835,1
    - Dst: smgrGetPendingDeletes
      Src: /src/postgres/src/backend/access/transam/xact.c:1846,1
    - Dst: xactGetCommittedChildren
      Src: /src/postgres/src/backend/access/transam/xact.c:1847,1
    - Dst: pgstat_get_transactional_drops
      Src: /src/postgres/src/backend/access/transam/xact.c:1848,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xact.c:1851,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:1855,1
    - Dst: GetCurrentTransactionStopTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:1858,1
    - Dst: XactLogAbortRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:1861,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/xact.c:1870,1
    - Dst: XLogSetAsyncXactLSN
      Src: /src/postgres/src/backend/access/transam/xact.c:1883,1
    - Dst: TransactionIdAbortTree
      Src: /src/postgres/src/backend/access/transam/xact.c:1893,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xact.c:1895,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/xact.c:1898,1
    - Dst: XidCacheRemoveRunningXids
      Src: /src/postgres/src/backend/access/transam/xact.c:1907,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1915,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1917,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - isSubXact
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1795
    functionDepth: 3
    functionLinenumber: 1795
    functionLinenumberEnd: 1920
    functionName: RecordTransactionAbort
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - GetCurrentTransactionIdIfAny
    - XidCacheRemoveRunningXids
    - END_CRIT_SECTION
    - TransactionIdLatest
    - pfree
    - TransactionIdDidCommit
    - START_CRIT_SECTION
    - TransactionIdAbortTree
    - XLogSetAsyncXactLSN
    - pgstat_get_transactional_drops
    - smgrGetPendingDeletes
    - xactGetCommittedChildren
    - XactLogAbortRecord
    - replorigin_session_advance
    - GetCurrentTransactionStopTimestamp
    - TransactionIdIsValid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId RecordTransactionAbort(bool isSubXact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1937,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1939,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1940
      start: 1925
    functionDepth: 1
    functionLinenumber: 1925
    functionLinenumberEnd: 1940
    functionName: AtAbort_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void AtAbort_Memory(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1948,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1951
      start: 1945
    functionDepth: 1
    functionLinenumber: 1945
    functionLinenumberEnd: 1951
    functionName: AtSubAbort_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void AtSubAbort_Memory(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1957
    functionDepth: 0
    functionLinenumber: 1957
    functionLinenumberEnd: 1965
    functionName: AtAbort_ResourceOwner
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AtAbort_ResourceOwner(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1977
      start: 1970
    functionDepth: 0
    functionLinenumber: 1970
    functionLinenumberEnd: 1977
    functionName: AtSubAbort_ResourceOwner
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AtSubAbort_ResourceOwner(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1994,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1983
    functionDepth: 0
    functionLinenumber: 1983
    functionLinenumberEnd: 2005
    functionName: AtSubAbort_childXids
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void AtSubAbort_childXids(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2021,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:2029,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xact.c:2035,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xact.c:2043,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2015
    functionDepth: 1
    functionLinenumber: 2015
    functionLinenumberEnd: 2052
    functionName: AtCleanup_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextReset
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void AtCleanup_Memory(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2068,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:2076,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xact.c:2085,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:2093,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2095
      start: 2063
    functionDepth: 1
    functionLinenumber: 2063
    functionLinenumberEnd: 2095
    functionName: AtSubCleanup_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextDelete
    - MemoryContextReset
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void AtSubCleanup_Memory(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2117,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:2117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2120,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/backend/access/transam/xact.c:2134,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/xact.c:2151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2154,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xact.c:2164,1
    - Dst: AtStart_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:2196,1
    - Dst: AtStart_ResourceOwner
      Src: /src/postgres/src/backend/access/transam/xact.c:2197,1
    - Dst: GetNextLocalTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:2204,1
    - Dst: VirtualXactLockTableInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:2209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2216,1
    - Dst: TRACE_POSTGRESQL_TRANSACTION_START
      Src: /src/postgres/src/backend/access/transam/xact.c:2219,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:2230,1
    - Dst: SPI_inside_nonatomic_context
      Src: /src/postgres/src/backend/access/transam/xact.c:2232,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2238,1
    - Dst: pgstat_report_xact_timestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2239,1
    - Dst: AtStart_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:2246,1
    - Dst: AtStart_Cache
      Src: /src/postgres/src/backend/access/transam/xact.c:2247,1
    - Dst: AfterTriggerBeginXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2248,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/access/transam/xact.c:2258,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:2260,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2261
      start: 2105
    functionDepth: 3
    functionLinenumber: 2105
    functionLinenumberEnd: 2261
    functionName: StartTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 5
    functionsReached:
    - TRACE_POSTGRESQL_TRANSACTION_START
    - enable_timeout_after
    - RecoveryInProgress
    - AfterTriggerBeginXact
    - SPI_inside_nonatomic_context
    - Assert
    - VirtualXactLockTableInsert
    - IsParallelWorker
    - pgstat_report_xact_timestamp
    - GetCurrentTimestamp
    - AtStart_Cache
    - GetNextLocalTransactionId
    - ShowTransactionState
    - AtStart_GUC
    - FullTransactionIdIsValid
    - pg_prng_double
    - AtStart_ResourceOwner
    - AtStart_Memory
    - GetUserIdAndSecContext
    linkageType: ''
    returnType: void
    signature: void StartTransaction(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:2280,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:2282,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2288,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:2289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2290,1
    - Dst: AfterTriggerFireDeferred
      Src: /src/postgres/src/backend/access/transam/xact.c:2304,1
    - Dst: PreCommit_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:2311,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2322,1
    - Dst: AtEOXact_Parallel
      Src: /src/postgres/src/backend/access/transam/xact.c:2332,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2336,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2342,1
    - Dst: AfterTriggerEndXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2347,1
    - Dst: PreCommit_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:2353,1
    - Dst: smgrDoPendingSyncs
      Src: /src/postgres/src/backend/access/transam/xact.c:2360,1
    - Dst: AtEOXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:2363,1
    - Dst: PreCommit_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:2371,1
    - Dst: PreCommit_CheckForSerializationFailure
      Src: /src/postgres/src/backend/access/transam/xact.c:2381,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2384,1
    - Dst: AtEOXact_RelationMap
      Src: /src/postgres/src/backend/access/transam/xact.c:2387,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/access/transam/xact.c:2399,1
    - Dst: RecordTransactionCommit
      Src: /src/postgres/src/backend/access/transam/xact.c:2407,1
    - Dst: ParallelWorkerReportLastRecEnd
      Src: /src/postgres/src/backend/access/transam/xact.c:2421,1
    - Dst: TRACE_POSTGRESQL_TRANSACTION_COMMIT
      Src: /src/postgres/src/backend/access/transam/xact.c:2424,1
    - Dst: ProcArrayEndTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:2431,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2449,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2453,1
    - Dst: AtEOXact_Aio
      Src: /src/postgres/src/backend/access/transam/xact.c:2457,1
    - Dst: AtEOXact_Buffers
      Src: /src/postgres/src/backend/access/transam/xact.c:2460,1
    - Dst: AtEOXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2463,1
    - Dst: AtEOXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2466,1
    - Dst: AtEOXact_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:2475,1
    - Dst: AtEOXact_MultiXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2477,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2479,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2482,1
    - Dst: smgrDoPendingDeletes
      Src: /src/postgres/src/backend/access/transam/xact.c:2495,1
    - Dst: AtCommit_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:2502,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:2508,1
    - Dst: AtEOXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:2509,1
    - Dst: AtEOXact_Enum
      Src: /src/postgres/src/backend/access/transam/xact.c:2510,1
    - Dst: AtEOXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:2511,1
    - Dst: AtEOXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:2512,1
    - Dst: AtEOXact_SMgr
      Src: /src/postgres/src/backend/access/transam/xact.c:2513,1
    - Dst: AtEOXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:2514,1
    - Dst: AtEOXact_ComboCid
      Src: /src/postgres/src/backend/access/transam/xact.c:2515,1
    - Dst: AtEOXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:2516,1
    - Dst: AtEOXact_RI
      Src: /src/postgres/src/backend/access/transam/xact.c:2517,1
    - Dst: AtEOXact_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:2518,1
    - Dst: AtEOXact_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:2519,1
    - Dst: AtEOXact_ApplyLauncher
      Src: /src/postgres/src/backend/access/transam/xact.c:2520,1
    - Dst: AtEOXact_LogicalRepWorkers
      Src: /src/postgres/src/backend/access/transam/xact.c:2521,1
    - Dst: AtEOXact_LogicalCtl
      Src: /src/postgres/src/backend/access/transam/xact.c:2522,1
    - Dst: pgstat_report_xact_timestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2523,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:2525,1
    - Dst: AtCommit_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:2530,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2549,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 89
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2550
      start: 2269
    functionDepth: 4
    functionLinenumber: 2269
    functionLinenumberEnd: 2550
    functionName: CommitTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 5
    functionsReached:
    - AtEOXact_Buffers
    - ParallelWorkerReportLastRecEnd
    - RESUME_INTERRUPTS
    - AtEOXact_Namespace
    - disable_timeout
    - HOLD_INTERRUPTS
    - PreCommit_Portals
    - AtEOXact_LogicalRepWorkers
    - ProcArrayEndTransaction
    - AtEOXact_PgStat
    - AtEOXact_LogicalCtl
    - CallXactCallbacks
    - TRACE_POSTGRESQL_TRANSACTION_COMMIT
    - AtEOXact_LargeObject
    - elog
    - AtEOXact_Enum
    - ResourceOwnerRelease
    - AtEOXact_ApplyLauncher
    - Assert
    - smgrDoPendingDeletes
    - AtEOXact_SMgr
    - AtEOXact_GUC
    - PreCommit_on_commit_actions
    - PreCommit_CheckForSerializationFailure
    - pgstat_report_xact_timestamp
    - AtEOXact_RelationMap
    - AtEOXact_Files
    - smgrDoPendingSyncs
    - AtEOXact_Aio
    - AtEOXact_HashTables
    - ShowTransactionState
    - AtEOXact_RelationCache
    - AtEOXact_on_commit_actions
    - AtEOXact_SPI
    - EnterParallelMode
    - AtCommit_Memory
    - AtEOXact_Snapshot
    - AtEOXact_RI
    - AtCommit_Notify
    - TransStateAsString
    - RecordTransactionCommit
    - ResourceOwnerDelete
    - AtEOXact_ComboCid
    - AtEOXact_TypeCache
    - PreCommit_Notify
    - AtEOXact_Inval
    - AtEOXact_Parallel
    - AtEOXact_MultiXact
    - AfterTriggerFireDeferred
    - AfterTriggerEndXact
    linkageType: ''
    returnType: void
    signature: void CommitTransaction(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:2562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2566,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:2566,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:2568,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2574,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:2575,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2576,1
    - Dst: AfterTriggerFireDeferred
      Src: /src/postgres/src/backend/access/transam/xact.c:2589,1
    - Dst: PreCommit_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:2596,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2600,1
    - Dst: AfterTriggerEndXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2610,1
    - Dst: PreCommit_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:2616,1
    - Dst: smgrDoPendingSyncs
      Src: /src/postgres/src/backend/access/transam/xact.c:2623,1
    - Dst: AtEOXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:2626,1
    - Dst: PreCommit_CheckForSerializationFailure
      Src: /src/postgres/src/backend/access/transam/xact.c:2635,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:2658,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:2659,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:2660,1
    - Dst: XactHasExportedSnapshots
      Src: /src/postgres/src/backend/access/transam/xact.c:2667,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:2668,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:2669,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:2670,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2673,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/access/transam/xact.c:2683,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2685,1
    - Dst: MarkAsPreparing
      Src: /src/postgres/src/backend/access/transam/xact.c:2691,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/transam/xact.c:2692,1
    - Dst: StartPrepare
      Src: /src/postgres/src/backend/access/transam/xact.c:2711,1
    - Dst: AtPrepare_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:2713,1
    - Dst: AtPrepare_Locks
      Src: /src/postgres/src/backend/access/transam/xact.c:2714,1
    - Dst: AtPrepare_PredicateLocks
      Src: /src/postgres/src/backend/access/transam/xact.c:2715,1
    - Dst: AtPrepare_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:2716,1
    - Dst: AtPrepare_MultiXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2717,1
    - Dst: AtPrepare_RelationMap
      Src: /src/postgres/src/backend/access/transam/xact.c:2718,1
    - Dst: EndPrepare
      Src: /src/postgres/src/backend/access/transam/xact.c:2727,1
    - Dst: PostPrepare_Locks
      Src: /src/postgres/src/backend/access/transam/xact.c:2741,1
    - Dst: ProcArrayClearTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:2748,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2760,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2762,1
    - Dst: AtEOXact_Aio
      Src: /src/postgres/src/backend/access/transam/xact.c:2766,1
    - Dst: AtEOXact_Buffers
      Src: /src/postgres/src/backend/access/transam/xact.c:2769,1
    - Dst: AtEOXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2772,1
    - Dst: AtEOXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2775,1
    - Dst: PostPrepare_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:2779,1
    - Dst: PostPrepare_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:2781,1
    - Dst: PostPrepare_smgr
      Src: /src/postgres/src/backend/access/transam/xact.c:2783,1
    - Dst: PostPrepare_MultiXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2785,1
    - Dst: PostPrepare_PredicateLocks
      Src: /src/postgres/src/backend/access/transam/xact.c:2787,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2789,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2792,1
    - Dst: PostPrepare_Twophase
      Src: /src/postgres/src/backend/access/transam/xact.c:2801,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:2804,1
    - Dst: AtEOXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:2805,1
    - Dst: AtEOXact_Enum
      Src: /src/postgres/src/backend/access/transam/xact.c:2806,1
    - Dst: AtEOXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:2807,1
    - Dst: AtEOXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:2808,1
    - Dst: AtEOXact_SMgr
      Src: /src/postgres/src/backend/access/transam/xact.c:2809,1
    - Dst: AtEOXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:2810,1
    - Dst: AtEOXact_ComboCid
      Src: /src/postgres/src/backend/access/transam/xact.c:2811,1
    - Dst: AtEOXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:2812,1
    - Dst: AtEOXact_RI
      Src: /src/postgres/src/backend/access/transam/xact.c:2813,1
    - Dst: AtEOXact_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:2815,1
    - Dst: AtEOXact_ApplyLauncher
      Src: /src/postgres/src/backend/access/transam/xact.c:2817,1
    - Dst: AtEOXact_LogicalRepWorkers
      Src: /src/postgres/src/backend/access/transam/xact.c:2818,1
    - Dst: AtEOXact_LogicalCtl
      Src: /src/postgres/src/backend/access/transam/xact.c:2819,1
    - Dst: pgstat_report_xact_timestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2820,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:2823,1
    - Dst: AtCommit_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:2828,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2847,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 85
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2848
      start: 2558
    functionDepth: 3
    functionLinenumber: 2558
    functionLinenumberEnd: 2848
    functionName: PrepareTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - AtEOXact_Buffers
    - RESUME_INTERRUPTS
    - GetUserId
    - errcode
    - AtPrepare_Locks
    - AtEOXact_Namespace
    - disable_timeout
    - HOLD_INTERRUPTS
    - PreCommit_Portals
    - AtEOXact_LogicalRepWorkers
    - IsInParallelMode
    - AtPrepare_MultiXact
    - PostPrepare_Locks
    - AtEOXact_LogicalCtl
    - CallXactCallbacks
    - AtEOXact_LargeObject
    - elog
    - AtEOXact_Enum
    - ResourceOwnerRelease
    - AtEOXact_ApplyLauncher
    - PostPrepare_MultiXact
    - Assert
    - PostPrepare_PgStat
    - errmsg
    - AtPrepare_Notify
    - AtEOXact_GUC
    - AtEOXact_SMgr
    - PreCommit_on_commit_actions
    - StartPrepare
    - EndPrepare
    - PreCommit_CheckForSerializationFailure
    - MarkAsPreparing
    - GetCurrentTimestamp
    - AtEOXact_Files
    - pgstat_report_xact_timestamp
    - smgrDoPendingSyncs
    - AtEOXact_Aio
    - PostPrepare_PredicateLocks
    - ShowTransactionState
    - ereport
    - GetCurrentFullTransactionId
    - AtEOXact_RelationCache
    - AtEOXact_on_commit_actions
    - AtEOXact_SPI
    - AtPrepare_PgStat
    - AtCommit_Memory
    - AtEOXact_Snapshot
    - AtEOXact_RI
    - TransStateAsString
    - AtPrepare_RelationMap
    - AtPrepare_PredicateLocks
    - ProcArrayClearTransaction
    - PostPrepare_Twophase
    - AtEOXact_ComboCid
    - XactHasExportedSnapshots
    - AtEOXact_TypeCache
    - PostPrepare_Inval
    - PostPrepare_smgr
    - ResourceOwnerDelete
    - AtEOXact_HashTables
    - AfterTriggerFireDeferred
    - AfterTriggerEndXact
    linkageType: ''
    returnType: void
    signature: void PrepareTransaction(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2862,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/access/transam/xact.c:2866,1
    - Dst: AtAbort_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:2869,1
    - Dst: AtAbort_ResourceOwner
      Src: /src/postgres/src/backend/access/transam/xact.c:2870,1
    - Dst: LWLockReleaseAll
      Src: /src/postgres/src/backend/access/transam/xact.c:2878,1
    - Dst: WaitLSNCleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:2883,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xact.c:2886,1
    - Dst: pgstat_progress_end_command
      Src: /src/postgres/src/backend/access/transam/xact.c:2887,1
    - Dst: pgaio_error_cleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:2889,1
    - Dst: UnlockBuffers
      Src: /src/postgres/src/backend/access/transam/xact.c:2892,1
    - Dst: XLogResetInsertion
      Src: /src/postgres/src/backend/access/transam/xact.c:2895,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xact.c:2898,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:2904,1
    - Dst: reschedule_timeouts
      Src: /src/postgres/src/backend/access/transam/xact.c:2913,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/access/transam/xact.c:2920,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2927,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:2928,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2929,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/xact.c:2947,1
    - Dst: ResetReindexState
      Src: /src/postgres/src/backend/access/transam/xact.c:2950,1
    - Dst: ResetLogicalStreamingState
      Src: /src/postgres/src/backend/access/transam/xact.c:2953,1
    - Dst: SnapBuildResetExportedSnapshotState
      Src: /src/postgres/src/backend/access/transam/xact.c:2956,1
    - Dst: AtEOXact_Parallel
      Src: /src/postgres/src/backend/access/transam/xact.c:2962,1
    - Dst: AfterTriggerEndXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2969,1
    - Dst: AtAbort_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:2970,1
    - Dst: smgrDoPendingSyncs
      Src: /src/postgres/src/backend/access/transam/xact.c:2971,1
    - Dst: AtEOXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:2972,1
    - Dst: AtAbort_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:2973,1
    - Dst: AtEOXact_RelationMap
      Src: /src/postgres/src/backend/access/transam/xact.c:2974,1
    - Dst: AtAbort_Twophase
      Src: /src/postgres/src/backend/access/transam/xact.c:2975,1
    - Dst: RecordTransactionAbort
      Src: /src/postgres/src/backend/access/transam/xact.c:2984,1
    - Dst: XLogSetAsyncXactLSN
      Src: /src/postgres/src/backend/access/transam/xact.c:2994,1
    - Dst: TRACE_POSTGRESQL_TRANSACTION_ABORT
      Src: /src/postgres/src/backend/access/transam/xact.c:2997,1
    - Dst: ProcArrayEndTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3004,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:3014,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:3016,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:3018,1
    - Dst: AtEOXact_Aio
      Src: /src/postgres/src/backend/access/transam/xact.c:3021,1
    - Dst: AtEOXact_Buffers
      Src: /src/postgres/src/backend/access/transam/xact.c:3022,1
    - Dst: AtEOXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:3023,1
    - Dst: AtEOXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:3024,1
    - Dst: AtEOXact_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:3025,1
    - Dst: AtEOXact_MultiXact
      Src: /src/postgres/src/backend/access/transam/xact.c:3026,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:3027,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:3030,1
    - Dst: smgrDoPendingDeletes
      Src: /src/postgres/src/backend/access/transam/xact.c:3033,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:3035,1
    - Dst: AtEOXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:3036,1
    - Dst: AtEOXact_Enum
      Src: /src/postgres/src/backend/access/transam/xact.c:3037,1
    - Dst: AtEOXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:3038,1
    - Dst: AtEOXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:3039,1
    - Dst: AtEOXact_SMgr
      Src: /src/postgres/src/backend/access/transam/xact.c:3040,1
    - Dst: AtEOXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:3041,1
    - Dst: AtEOXact_ComboCid
      Src: /src/postgres/src/backend/access/transam/xact.c:3042,1
    - Dst: AtEOXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:3043,1
    - Dst: AtEOXact_RI
      Src: /src/postgres/src/backend/access/transam/xact.c:3044,1
    - Dst: AtEOXact_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:3045,1
    - Dst: AtEOXact_ApplyLauncher
      Src: /src/postgres/src/backend/access/transam/xact.c:3046,1
    - Dst: AtEOXact_LogicalRepWorkers
      Src: /src/postgres/src/backend/access/transam/xact.c:3047,1
    - Dst: AtEOXact_LogicalCtl
      Src: /src/postgres/src/backend/access/transam/xact.c:3048,1
    - Dst: pgstat_report_xact_timestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:3049,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:3055,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 2854
    functionDepth: 4
    functionLinenumber: 2854
    functionLinenumberEnd: 3056
    functionName: AbortTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - AtEOXact_Buffers
    - RESUME_INTERRUPTS
    - AtEOXact_Namespace
    - disable_timeout
    - HOLD_INTERRUPTS
    - AtEOXact_LogicalRepWorkers
    - reschedule_timeouts
    - ResetLogicalStreamingState
    - sigprocmask
    - TRACE_POSTGRESQL_TRANSACTION_ABORT
    - AtAbort_Twophase
    - ProcArrayEndTransaction
    - AtEOXact_PgStat
    - pgaio_error_cleanup
    - AtEOXact_LogicalCtl
    - CallXactCallbacks
    - AtEOXact_LargeObject
    - elog
    - AtEOXact_Enum
    - UnlockBuffers
    - ResourceOwnerRelease
    - AtEOXact_ApplyLauncher
    - Assert
    - LWLockReleaseAll
    - pgstat_report_wait_end
    - ConditionVariableCancelSleep
    - smgrDoPendingDeletes
    - ResetReindexState
    - AtEOXact_SMgr
    - AtEOXact_GUC
    - pgstat_progress_end_command
    - pgstat_report_xact_timestamp
    - AtEOXact_RelationMap
    - AtEOXact_Files
    - smgrDoPendingSyncs
    - AtEOXact_Aio
    - AtEOXact_HashTables
    - AtEOXact_RelationCache
    - XLogResetInsertion
    - AtEOXact_on_commit_actions
    - AtEOXact_SPI
    - AtAbort_ResourceOwner
    - AtEOXact_RI
    - SetUserIdAndSecContext
    - AtAbort_Notify
    - TransStateAsString
    - LockErrorCleanup
    - AtAbort_Portals
    - RecordTransactionAbort
    - AtEOXact_ComboCid
    - AtEOXact_TypeCache
    - AtAbort_Memory
    - AtEOXact_Inval
    - AtEOXact_Parallel
    - WaitLSNCleanup
    - AtEOXact_MultiXact
    - XLogSetAsyncXactLSN
    - AfterTriggerEndXact
    - SnapBuildResetExportedSnapshotState
    linkageType: ''
    returnType: void
    signature: void AbortTransaction(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3070,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:3071,1
    - Dst: AtCleanup_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:3076,1
    - Dst: AtEOXact_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:3077,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:3081,1
    - Dst: AtCleanup_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:3086,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3106
      start: 3061
    functionDepth: 2
    functionLinenumber: 3061
    functionLinenumberEnd: 3106
    functionName: CleanupTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - elog
    - AtCleanup_Memory
    - TransStateAsString
    - ResourceOwnerDelete
    - AtCleanup_Portals
    - AtEOXact_Snapshot
    linkageType: ''
    returnType: void
    signature: void CleanupTransaction(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3123,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3166,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:3167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3175,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:3176,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3177
      start: 3111
    functionDepth: 1
    functionLinenumber: 3111
    functionLinenumberEnd: 3177
    functionName: StartTransactionCommand
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached:
    - elog
    - Assert
    - MemoryContextSwitchTo
    - StartTransaction
    - BlockStateAsString
    linkageType: ''
    returnType: void
    signature: void StartTransactionCommand(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - SavedTransactionCharacteristics*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3194
      start: 3188
    functionDepth: 0
    functionLinenumber: 3188
    functionLinenumberEnd: 3194
    functionName: SaveTransactionCharacteristics
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SaveTransactionCharacteristics(SavedTransactionCharacteristics
      *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - SavedTransactionCharacteristics*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3202
      start: 3196
    functionDepth: 0
    functionLinenumber: 3196
    functionLinenumberEnd: 3202
    functionName: RestoreTransactionCharacteristics
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RestoreTransactionCharacteristics(const SavedTransactionCharacteristics
      *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CommitTransactionCommandInternal
      Src: /src/postgres/src/backend/access/transam/xact.c:3216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3219
      start: 3209
    functionDepth: 1
    functionLinenumber: 3209
    functionLinenumberEnd: 3219
    functionName: CommitTransactionCommand
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached:
    - CommitTransactionCommandInternal
    linkageType: ''
    returnType: void
    signature: void CommitTransactionCommand(void)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: SaveTransactionCharacteristics
      Src: /src/postgres/src/backend/access/transam/xact.c:3234,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3246,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:3247,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3255,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/access/transam/xact.c:3277,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3285,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3289,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/access/transam/xact.c:3292,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3311,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3315,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/access/transam/xact.c:3318,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3328,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3329,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3333,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/access/transam/xact.c:3336,1
    - Dst: PrepareTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3345,1
    - Dst: StartSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3355,1
    - Dst: CommitSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3368,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3372,1
    - Dst: CommitSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3388,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3394,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3395,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3399,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/access/transam/xact.c:3402,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3407,1
    - Dst: PrepareTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3408,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3412,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:3413,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3424,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3431,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3432,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3450,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3451,1
    - Dst: DefineSavepoint
      Src: /src/postgres/src/backend/access/transam/xact.c:3453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3459,1
    - Dst: StartSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3460,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3479,1
    - Dst: DefineSavepoint
      Src: /src/postgres/src/backend/access/transam/xact.c:3481,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3487,1
    - Dst: StartSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3488,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 129
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3496
      start: 3227
    functionDepth: 5
    functionLinenumber: 3227
    functionLinenumberEnd: 3496
    functionName: CommitTransactionCommandInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - elog
    - CommitTransaction
    - RestoreTransactionCharacteristics
    - CommitSubTransaction
    - Assert
    - PrepareTransaction
    - CommandCounterIncrement
    - DefineSavepoint
    - SaveTransactionCharacteristics
    - CleanupTransaction
    - CleanupSubTransaction
    - AbortSubTransaction
    - AbortTransaction
    - StartTransaction
    - StartSubTransaction
    - BlockStateAsString
    linkageType: ''
    returnType: bool
    signature: bool CommitTransactionCommandInternal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AbortCurrentTransactionInternal
      Src: /src/postgres/src/backend/access/transam/xact.c:3510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3513
      start: 3503
    functionDepth: 1
    functionLinenumber: 3503
    functionLinenumberEnd: 3513
    functionName: AbortCurrentTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - AbortCurrentTransactionInternal
    linkageType: ''
    returnType: void
    signature: void AbortCurrentTransaction(void)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3544,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3545,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3556,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3557,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3569,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3570,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3581,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3592,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3593,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3612,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3621,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3622,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3632,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3633,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3643,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3659,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3660,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3668,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3674
      start: 3521
    functionDepth: 5
    functionLinenumber: 3521
    functionLinenumberEnd: 3674
    functionName: AbortCurrentTransactionInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - AbortSubTransaction
    - AbortTransaction
    - CleanupTransaction
    - CleanupSubTransaction
    linkageType: ''
    returnType: bool
    signature: bool AbortCurrentTransactionInternal(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/access/transam/xact.c:3706,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:3707,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:3708,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:3710,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3716,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:3717,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:3718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:3720,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:3727,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:3728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:3730,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3736,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - isTopLevel
    - stmtType
    argTypes:
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3740
      start: 3700
    functionDepth: 1
    functionLinenumber: 3700
    functionLinenumberEnd: 3740
    functionName: PreventInTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - elog
    - IsTransactionBlock
    - errcode
    - ereport
    - errmsg
    - IsSubTransaction
    linkageType: ''
    returnType: void
    signature: void PreventInTransactionBlock(bool isTopLevel, const char *stmtType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckTransactionBlock
      Src: /src/postgres/src/backend/access/transam/xact.c:3766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - isTopLevel
    - stmtType
    argTypes:
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3767
      start: 3763
    functionDepth: 1
    functionLinenumber: 3763
    functionLinenumberEnd: 3767
    functionName: WarnNoTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - CheckTransactionBlock
    linkageType: ''
    returnType: void
    signature: void WarnNoTransactionBlock(bool isTopLevel, const char *stmtType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckTransactionBlock
      Src: /src/postgres/src/backend/access/transam/xact.c:3772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - isTopLevel
    - stmtType
    argTypes:
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3773
      start: 3769
    functionDepth: 1
    functionLinenumber: 3769
    functionLinenumberEnd: 3773
    functionName: RequireTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - CheckTransactionBlock
    linkageType: ''
    returnType: void
    signature: void RequireTransactionBlock(bool isTopLevel, const char *stmtType)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/access/transam/xact.c:3784,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3790,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:3799,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:3800,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:3802,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - isTopLevel
    - throwError
    - stmtType
    argTypes:
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3804
      start: 3778
    functionDepth: 1
    functionLinenumber: 3778
    functionLinenumberEnd: 3804
    functionName: CheckTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - IsTransactionBlock
    - errcode
    - ereport
    - errmsg
    - IsSubTransaction
    linkageType: ''
    returnType: void
    signature: void CheckTransactionBlock(bool isTopLevel, bool throwError, const
      char *stmtType)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/access/transam/xact.c:3829,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3832,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - isTopLevel
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3843
      start: 3822
    functionDepth: 1
    functionLinenumber: 3822
    functionLinenumberEnd: 3843
    functionName: IsInTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - IsSubTransaction
    - IsTransactionBlock
    linkageType: ''
    returnType: bool
    signature: bool IsInTransactionBlock(bool isTopLevel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/xact.c:3863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - XactCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3868
      start: 3857
    functionDepth: 1
    functionLinenumber: 3857
    functionLinenumberEnd: 3868
    functionName: RegisterXactCallback
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: void RegisterXactCallback(XactCallback callback, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:3885,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - XactCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3889
      start: 3870
    functionDepth: 0
    functionLinenumber: 3870
    functionLinenumberEnd: 3889
    functionName: UnregisterXactCallback
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void UnregisterXactCallback(XactCallback callback, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XactCallbackItem*::callback
      Src: /src/postgres/src/backend/access/transam/xact.c:3901,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - event
    argTypes:
    - XactEvent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3903
      start: 3891
    functionDepth: 2
    functionLinenumber: 3891
    functionLinenumberEnd: 3903
    functionName: CallXactCallbacks
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached:
    - XactCallbackItem*::callback
    linkageType: ''
    returnType: void
    signature: void CallXactCallbacks(XactEvent event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/xact.c:3923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - SubXactCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3928
      start: 3917
    functionDepth: 1
    functionLinenumber: 3917
    functionLinenumberEnd: 3928
    functionName: RegisterSubXactCallback
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: void RegisterSubXactCallback(SubXactCallback callback, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:3945,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - SubXactCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3949
      start: 3930
    functionDepth: 0
    functionLinenumber: 3930
    functionLinenumberEnd: 3949
    functionName: UnregisterSubXactCallback
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void UnregisterSubXactCallback(SubXactCallback callback, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SubXactCallbackItem*::callback
      Src: /src/postgres/src/backend/access/transam/xact.c:3963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - event
    - mySubid
    - parentSubid
    argTypes:
    - SubXactEvent
    - SubTransactionId
    - SubTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3965
      start: 3951
    functionDepth: 2
    functionLinenumber: 3951
    functionLinenumberEnd: 3965
    functionName: CallSubXactCallbacks
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - SubXactCallbackItem*::callback
    linkageType: ''
    returnType: void
    signature: "void CallSubXactCallbacks(SubXactEvent event,\n\t\t\t\t\t SubTransactionId
      mySubid,\n\t\t\t\t\t SubTransactionId parentSubid)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4008,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4009,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4010,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4027,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4028,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4031
      start: 3977
    functionDepth: 1
    functionLinenumber: 3977
    functionLinenumberEnd: 4031
    functionName: BeginTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - ereport
    - errmsg
    - BlockStateAsString
    linkageType: ''
    returnType: void
    signature: void BeginTransactionBlock(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EndTransactionBlock
      Src: /src/postgres/src/backend/access/transam/xact.c:4052,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/transam/xact.c:4065,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4075,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - gid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4083
      start: 4045
    functionDepth: 1
    functionLinenumber: 4045
    functionLinenumberEnd: 4083
    functionName: PrepareTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextStrdup
    - EndTransactionBlock
    linkageType: ''
    returnType: bool
    signature: bool PrepareTransactionBlock(const char *gid)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4121,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4127,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4128,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4129,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4152,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4153,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4159,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4160,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4177,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4178,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4186,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4187,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4200,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4201,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4206,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4207,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4208,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4217,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4218,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4219,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4236,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4237,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4241,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 71
    argCount: 1
    argNames:
    - chain
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4249
      start: 4097
    functionDepth: 1
    functionLinenumber: 4097
    functionLinenumberEnd: 4249
    functionName: EndTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - elog
    - errcode
    - Assert
    - ereport
    - errmsg
    - BlockStateAsString
    linkageType: ''
    returnType: bool
    signature: bool EndTransactionBlock(bool chain)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4296,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4297,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4305,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4306,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4329,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4330,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4340,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4341,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4342,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4359,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4360,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4364,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 1
    argNames:
    - chain
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4368
      start: 4257
    functionDepth: 1
    functionLinenumber: 4257
    functionLinenumberEnd: 4368
    functionName: UserAbortTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - Assert
    - ereport
    - errmsg
    - BlockStateAsString
    linkageType: ''
    returnType: void
    signature: void UserAbortTransactionBlock(bool chain)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4395
      start: 4379
    functionDepth: 0
    functionLinenumber: 4379
    functionLinenumberEnd: 4395
    functionName: BeginImplicitTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BeginImplicitTransactionBlock(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4420
      start: 4404
    functionDepth: 0
    functionLinenumber: 4404
    functionLinenumberEnd: 4420
    functionName: EndImplicitTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EndImplicitTransactionBlock(void)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:4438,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:4438,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4441,1
    - Dst: PushTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4448,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/transam/xact.c:4456,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4474,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4475,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4477,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4499,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4500,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4503
      start: 4426
    functionDepth: 1
    functionLinenumber: 4426
    functionLinenumberEnd: 4503
    functionName: DefineSavepoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - elog
    - errcode
    - MemoryContextStrdup
    - ereport
    - errmsg
    - IsInParallelMode
    - BlockStateAsString
    - IsParallelWorker
    - PushTransaction
    linkageType: ''
    returnType: void
    signature: void DefineSavepoint(const char *name)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:4525,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:4525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4526,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4527,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4528,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4536,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4537,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4538,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4543,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4546,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4575,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4576,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xact.c:4582,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4587,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4588,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4589,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4593,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4594,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4610,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4612
      start: 4511
    functionDepth: 1
    functionLinenumber: 4511
    functionLinenumberEnd: 4612
    functionName: ReleaseSavepoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - elog
    - strcmp
    - errcode
    - Assert
    - ereport
    - errmsg
    - IsInParallelMode
    - IsParallelWorker
    - BlockStateAsString
    linkageType: ''
    returnType: void
    signature: void ReleaseSavepoint(const char *name)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:4634,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:4634,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4635,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4636,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4637,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4647,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4648,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4649,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4654,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4655,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4657,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4684,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4685,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xact.c:4691,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4696,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4697,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4698,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4702,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4703,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4704,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4721,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4724,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4733,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4734,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4735
      start: 4620
    functionDepth: 1
    functionLinenumber: 4620
    functionLinenumberEnd: 4735
    functionName: RollbackToSavepoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - elog
    - strcmp
    - errcode
    - Assert
    - ereport
    - errmsg
    - IsInParallelMode
    - IsParallelWorker
    - BlockStateAsString
    linkageType: ''
    returnType: void
    signature: void RollbackToSavepoint(const char *name)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: PushTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4778,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/transam/xact.c:4786,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4803,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4804,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/access/transam/xact.c:4808,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/access/transam/xact.c:4809,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4812
      start: 4747
    functionDepth: 2
    functionLinenumber: 4747
    functionLinenumberEnd: 4812
    functionName: BeginInternalSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 12
    functionsReached:
    - elog
    - PushTransaction
    - MemoryContextStrdup
    - CommitTransactionCommand
    - StartTransactionCommand
    - BlockStateAsString
    linkageType: ''
    returnType: void
    signature: void BeginInternalSubTransaction(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4833,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4835,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:4836,1
    - Dst: CommitSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4837,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4839,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4840
      start: 4821
    functionDepth: 1
    functionLinenumber: 4821
    functionLinenumberEnd: 4840
    functionName: ReleaseCurrentSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 14
    functionsReached:
    - elog
    - CommitSubTransaction
    - Assert
    - MemoryContextSwitchTo
    - BlockStateAsString
    linkageType: ''
    returnType: void
    signature: void ReleaseCurrentSubTransaction(void)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4886,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4887,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4895,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4898,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4901,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4906
      start: 4849
    functionDepth: 1
    functionLinenumber: 4849
    functionLinenumberEnd: 4906
    functionName: RollbackAndReleaseCurrentSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 12
    functionsReached:
    - elog
    - Assert
    - CleanupSubTransaction
    - AbortSubTransaction
    - BlockStateAsString
    linkageType: ''
    returnType: void
    signature: void RollbackAndReleaseCurrentSubTransaction(void)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: AtAbort_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:4921,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4946,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4947,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4959,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4960,1
    - Dst: AtAbort_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:4972,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4973,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4986,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4987,1
    - Dst: AtSubAbort_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:4998,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:5003,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5010,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:5018,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5019
      start: 4915
    functionDepth: 5
    functionLinenumber: 4915
    functionLinenumberEnd: 5019
    functionName: AbortOutOfAnyTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - AtAbort_Portals
    - MemoryContextSwitchTo
    - AtAbort_Memory
    - CleanupTransaction
    - CleanupSubTransaction
    - AtSubAbort_Portals
    - AbortSubTransaction
    - AbortTransaction
    linkageType: ''
    returnType: void
    signature: void AbortOutOfAnyTransaction(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5033
      start: 5024
    functionDepth: 0
    functionLinenumber: 5024
    functionLinenumberEnd: 5033
    functionName: IsTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsTransactionBlock(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5051
      start: 5042
    functionDepth: 0
    functionLinenumber: 5042
    functionLinenumberEnd: 5051
    functionName: IsTransactionOrTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsTransactionOrTransactionBlock(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5089,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5090,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5092
      start: 5056
    functionDepth: 1
    functionLinenumber: 5056
    functionLinenumberEnd: 5092
    functionName: TransactionBlockStatusCode
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - elog
    - BlockStateAsString
    linkageType: ''
    returnType: char
    signature: char TransactionBlockStatusCode(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5106
      start: 5097
    functionDepth: 0
    functionLinenumber: 5097
    functionLinenumberEnd: 5106
    functionName: IsSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsSubTransaction(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5126,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5127,1
    - Dst: AtSubStart_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:5136,1
    - Dst: AtSubStart_ResourceOwner
      Src: /src/postgres/src/backend/access/transam/xact.c:5137,1
    - Dst: AfterTriggerBeginSubXact
      Src: /src/postgres/src/backend/access/transam/xact.c:5138,1
    - Dst: CallSubXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:5145,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:5148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5149
      start: 5120
    functionDepth: 3
    functionLinenumber: 5120
    functionLinenumberEnd: 5149
    functionName: StartSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - elog
    - TransStateAsString
    - AtSubStart_Memory
    - ShowTransactionState
    - AfterTriggerBeginSubXact
    - AtSubStart_ResourceOwner
    - CallSubXactCallbacks
    linkageType: ''
    returnType: void
    signature: void StartSubTransaction(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:5162,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5165,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5166,1
    - Dst: CallSubXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:5170,1
    - Dst: AtEOSubXact_Parallel
      Src: /src/postgres/src/backend/access/transam/xact.c:5177,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5180,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/access/transam/xact.c:5189,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5198,1
    - Dst: AtSubCommit_childXids
      Src: /src/postgres/src/backend/access/transam/xact.c:5199,1
    - Dst: AfterTriggerEndSubXact
      Src: /src/postgres/src/backend/access/transam/xact.c:5200,1
    - Dst: AtSubCommit_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:5201,1
    - Dst: AtEOSubXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:5205,1
    - Dst: AtSubCommit_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:5207,1
    - Dst: CallSubXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:5209,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5212,1
    - Dst: AtEOSubXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:5215,1
    - Dst: AtEOSubXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:5217,1
    - Dst: AtEOSubXact_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:5218,1
    - Dst: AtSubCommit_smgr
      Src: /src/postgres/src/backend/access/transam/xact.c:5219,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5225,1
    - Dst: XactLockTableDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:5226,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:5226,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5231,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5234,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:5238,1
    - Dst: AtEOSubXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:5239,1
    - Dst: AtEOSubXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:5240,1
    - Dst: AtEOSubXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:5242,1
    - Dst: AtEOSubXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:5244,1
    - Dst: AtEOSubXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:5246,1
    - Dst: AtEOSubXact_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:5247,1
    - Dst: AtSubCommit_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:5248,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:5259,1
    - Dst: AtSubCommit_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:5262,1
    - Dst: PopTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:5266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5267
      start: 5157
    functionDepth: 4
    functionLinenumber: 5157
    functionLinenumberEnd: 5267
    functionName: CommitSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - AtSubCommit_Portals
    - AtEOSubXact_Files
    - CallSubXactCallbacks
    - AtSubCommit_smgr
    - elog
    - AtSubCommit_Notify
    - ResourceOwnerRelease
    - XactLockTableDelete
    - AtEOSubXact_SPI
    - PopTransaction
    - CommandCounterIncrement
    - AfterTriggerEndSubXact
    - XidFromFullTransactionId
    - AtEOXact_GUC
    - AtEOSubXact_Inval
    - AtEOSubXact_LargeObject
    - AtEOSubXact_Parallel
    - ShowTransactionState
    - AtEOSubXact_RelationCache
    - AtEOSubXact_HashTables
    - AtEOSubXact_Namespace
    - AtSubCommit_Memory
    - AtSubCommit_Snapshot
    - TransStateAsString
    - FullTransactionIdIsValid
    - AtEOSubXact_on_commit_actions
    - ResourceOwnerDelete
    - AtEOSubXact_TypeCache
    - AtSubCommit_childXids
    - AtEOSubXact_PgStat
    linkageType: ''
    returnType: void
    signature: void CommitSubTransaction(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:5278,1
    - Dst: AtSubAbort_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:5281,1
    - Dst: AtSubAbort_ResourceOwner
      Src: /src/postgres/src/backend/access/transam/xact.c:5282,1
    - Dst: LWLockReleaseAll
      Src: /src/postgres/src/backend/access/transam/xact.c:5293,1
    - Dst: WaitLSNCleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:5298,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xact.c:5300,1
    - Dst: pgstat_progress_end_command
      Src: /src/postgres/src/backend/access/transam/xact.c:5301,1
    - Dst: pgaio_error_cleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:5303,1
    - Dst: UnlockBuffers
      Src: /src/postgres/src/backend/access/transam/xact.c:5305,1
    - Dst: XLogResetInsertion
      Src: /src/postgres/src/backend/access/transam/xact.c:5308,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xact.c:5311,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:5317,1
    - Dst: reschedule_timeouts
      Src: /src/postgres/src/backend/access/transam/xact.c:5326,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/access/transam/xact.c:5333,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:5338,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5341,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5342,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/xact.c:5350,1
    - Dst: ResetReindexState
      Src: /src/postgres/src/backend/access/transam/xact.c:5353,1
    - Dst: ResetLogicalStreamingState
      Src: /src/postgres/src/backend/access/transam/xact.c:5356,1
    - Dst: AtEOSubXact_Parallel
      Src: /src/postgres/src/backend/access/transam/xact.c:5367,1
    - Dst: AfterTriggerEndSubXact
      Src: /src/postgres/src/backend/access/transam/xact.c:5376,1
    - Dst: AtSubAbort_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:5377,1
    - Dst: AtEOSubXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:5381,1
    - Dst: AtSubAbort_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:5383,1
    - Dst: RecordTransactionAbort
      Src: /src/postgres/src/backend/access/transam/xact.c:5386,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5389,1
    - Dst: AtSubAbort_childXids
      Src: /src/postgres/src/backend/access/transam/xact.c:5390,1
    - Dst: CallSubXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:5392,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5395,1
    - Dst: AtEOXact_Aio
      Src: /src/postgres/src/backend/access/transam/xact.c:5399,1
    - Dst: AtEOSubXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:5400,1
    - Dst: AtEOSubXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:5402,1
    - Dst: AtEOSubXact_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:5403,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5404,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5407,1
    - Dst: AtSubAbort_smgr
      Src: /src/postgres/src/backend/access/transam/xact.c:5410,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:5412,1
    - Dst: AtEOSubXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:5413,1
    - Dst: AtEOSubXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:5414,1
    - Dst: AtEOSubXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:5416,1
    - Dst: AtEOSubXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:5418,1
    - Dst: AtEOSubXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:5420,1
    - Dst: AtEOSubXact_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:5421,1
    - Dst: AtSubAbort_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:5422,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:5432,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5433
      start: 5272
    functionDepth: 4
    functionLinenumber: 5272
    functionLinenumberEnd: 5433
    functionName: AbortSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 4
    functionsReached:
    - RESUME_INTERRUPTS
    - HOLD_INTERRUPTS
    - reschedule_timeouts
    - ResetLogicalStreamingState
    - sigprocmask
    - pgaio_error_cleanup
    - AtEOSubXact_Files
    - AtSubAbort_smgr
    - AtSubAbort_childXids
    - CallSubXactCallbacks
    - elog
    - UnlockBuffers
    - ResourceOwnerRelease
    - AtEOSubXact_SPI
    - LWLockReleaseAll
    - AfterTriggerEndSubXact
    - pgstat_report_wait_end
    - ConditionVariableCancelSleep
    - ResetReindexState
    - AtEOXact_GUC
    - AtEOSubXact_LargeObject
    - pgstat_progress_end_command
    - AtEOSubXact_Inval
    - AtEOSubXact_Parallel
    - AtEOXact_Aio
    - ShowTransactionState
    - XLogResetInsertion
    - AtSubAbort_Notify
    - AtSubAbort_Portals
    - AtEOSubXact_RelationCache
    - AtEOSubXact_HashTables
    - AtEOSubXact_Namespace
    - AtSubAbort_ResourceOwner
    - SetUserIdAndSecContext
    - TransStateAsString
    - FullTransactionIdIsValid
    - AtEOSubXact_on_commit_actions
    - LockErrorCleanup
    - RecordTransactionAbort
    - AtEOSubXact_TypeCache
    - AtSubAbort_Snapshot
    - WaitLSNCleanup
    - AtSubAbort_Memory
    - AtEOSubXact_PgStat
    linkageType: ''
    returnType: void
    signature: void AbortSubTransaction(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:5446,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5449,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5450,1
    - Dst: AtSubCleanup_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:5452,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:5457,1
    - Dst: AtSubCleanup_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:5460,1
    - Dst: PopTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:5464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5465
      start: 5441
    functionDepth: 2
    functionLinenumber: 5441
    functionLinenumberEnd: 5465
    functionName: CleanupSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 4
    functionsReached:
    - elog
    - PopTransaction
    - TransStateAsString
    - ShowTransactionState
    - ResourceOwnerDelete
    - AtSubCleanup_Memory
    - AtSubCleanup_Portals
    linkageType: ''
    returnType: void
    signature: void CleanupSubTransaction(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/transam/xact.c:5484,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:5494,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:5495,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:5496,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:5497,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/access/transam/xact.c:5508,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/xact.c:5512,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5527
      start: 5474
    functionDepth: 1
    functionLinenumber: 5474
    functionLinenumberEnd: 5527
    functionName: PushTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - errcode
    - pfree
    - ereport
    - NewGUCNestLevel
    - errmsg
    - GetUserIdAndSecContext
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: void PushTransaction(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5542,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5543,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5546,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:5552,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:5560,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:5561,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5562
      start: 5536
    functionDepth: 1
    functionLinenumber: 5536
    functionLinenumberEnd: 5562
    functionName: PopTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - elog
    - pfree
    - TransStateAsString
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void PopTransaction(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5579,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5580,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5581,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5584,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5585
      start: 5570
    functionDepth: 1
    functionLinenumber: 5570
    functionLinenumberEnd: 5585
    functionName: EstimateTransactionStateSpace
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - mul_size
    - add_size
    - FullTransactionIdIsValid
    linkageType: ''
    returnType: Size
    signature: Size EstimateTransactionStateSpace(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xact.c:5624,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5635,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5636,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5637,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5639,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xact.c:5643,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5646,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:5647,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xact.c:5649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5653,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/transam/xact.c:5656,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xact.c:5660,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - maxsize
    - start_address
    argTypes:
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5662
      start: 5598
    functionDepth: 1
    functionLinenumber: 5598
    functionLinenumberEnd: 5662
    functionName: SerializeTransactionState
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - qsort
    - memcpy
    - add_size
    - FullTransactionIdIsValid
    - Assert
    - XidFromFullTransactionId
    - palloc
    linkageType: ''
    returnType: void
    signature: void SerializeTransactionState(Size maxsize, char *start_address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5674,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:5675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - tstatespace
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5688
      start: 5669
    functionDepth: 1
    functionLinenumber: 5669
    functionLinenumberEnd: 5688
    functionName: StartParallelWorkerTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - Assert
    - StartTransaction
    linkageType: ''
    returnType: void
    signature: void StartParallelWorkerTransaction(char *tstatespace)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5697,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:5698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5700
      start: 5694
    functionDepth: 1
    functionLinenumber: 5694
    functionLinenumberEnd: 5700
    functionName: EndParallelWorkerTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - Assert
    - CommitTransaction
    linkageType: ''
    returnType: void
    signature: void EndParallelWorkerTransaction(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/access/transam/xact.c:5710,1
    - Dst: ShowTransactionStateRec
      Src: /src/postgres/src/backend/access/transam/xact.c:5711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5712
      start: 5706
    functionDepth: 1
    functionLinenumber: 5706
    functionLinenumberEnd: 5712
    functionName: ShowTransactionState
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 7
    functionsReached:
    - message_level_is_interesting
    - ShowTransactionStateRec
    linkageType: ''
    returnType: void
    signature: void ShowTransactionState(const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stack_is_too_deep
      Src: /src/postgres/src/backend/access/transam/xact.c:5730,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:5731,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xact.c:5732,1
    - Dst: ShowTransactionStateRec
      Src: /src/postgres/src/backend/access/transam/xact.c:5735,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:5738,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:5743,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:5745,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:5747,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xact.c:5748,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5751,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5752,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:5753,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:5758,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - str
    - s
    argTypes:
    - char*
    - TransactionState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5759
      start: 5718
    functionDepth: 3
    functionLinenumber: 5718
    functionLinenumberEnd: 5759
    functionName: ShowTransactionStateRec
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - errmsg_internal
    - ShowTransactionStateRec
    - TransStateAsString
    - pfree
    - appendStringInfo
    - initStringInfo
    - ereport
    - XidFromFullTransactionId
    - stack_is_too_deep
    - BlockStateAsString
    linkageType: ''
    returnType: void
    signature: void ShowTransactionStateRec(const char *str, TransactionState s)
  - BBCount: 21
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 44
    argCount: 1
    argNames:
    - blockState
    argTypes:
    - TBlockState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5812
      start: 5765
    functionDepth: 0
    functionLinenumber: 5765
    functionLinenumberEnd: 5812
    functionName: BlockStateAsString
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      BlockStateAsString(TBlockState blockState)'
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - TransState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5837
      start: 5818
    functionDepth: 0
    functionLinenumber: 5818
    functionLinenumberEnd: 5837
    functionName: TransStateAsString
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      TransStateAsString(TransState state)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - TransactionId**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5859
      start: 5848
    functionDepth: 0
    functionLinenumber: 5848
    functionLinenumberEnd: 5859
    functionName: xactGetCommittedChildren
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int xactGetCommittedChildren(TransactionId **ptr)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5893,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5898,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:5925,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5957,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5961,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:5963,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:5981,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5983,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5986,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5989,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5993,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5995,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6001,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6003,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6009,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6011,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6017,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6018,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6024,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6026,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xact.c:6026,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6030,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/transam/xact.c:6033,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:6035,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 82
    argCount: 13
    argNames:
    - commit_time
    - nsubxacts
    - subxacts
    - nrels
    - rels
    - ndroppedstats
    - droppedstats
    - nmsgs
    - msgs
    - relcacheInval
    - xactflags
    - twophase_xid
    - twophase_gid
    argTypes:
    - TimestampTz
    - int
    - TransactionId*
    - int
    - RelFileLocator*
    - int
    - xl_xact_stats_item*
    - int
    - SharedInvalidationMessage*
    - bool
    - int
    - TransactionId
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6036
      start: 5872
    functionDepth: 1
    functionLinenumber: 5872
    functionLinenumberEnd: 6036
    functionName: XactLogCommitRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - XLogLogicalInfoActive
    - XLogBeginInsert
    - Assert
    - XLogRegisterData
    - XLogSetRecordFlags
    - strlen
    - TransactionIdIsValid
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr XactLogCommitRecord(TimestampTz commit_time,\n\t\t\t\t\tint
      nsubxacts, TransactionId *subxacts,\n\t\t\t\t\tint nrels, RelFileLocator *rels,\n\t\t\t\t\tint
      ndroppedstats, xl_xact_stats_item *droppedstats,\n\t\t\t\t\tint nmsgs, SharedInvalidationMessage
      *msgs,\n\t\t\t\t\tbool relcacheInval,\n\t\t\t\t\tint xactflags, TransactionId
      twophase_xid,\n\t\t\t\t\tconst char *twophase_gid)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6063,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6068,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6104,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:6106,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6110,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:6110,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:6134,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6136,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6139,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6142,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6146,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6148,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6154,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6156,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6162,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6164,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6170,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6172,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xact.c:6172,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6176,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/transam/xact.c:6179,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:6181,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 68
    argCount: 10
    argNames:
    - abort_time
    - nsubxacts
    - subxacts
    - nrels
    - rels
    - ndroppedstats
    - droppedstats
    - xactflags
    - twophase_xid
    - twophase_gid
    argTypes:
    - TimestampTz
    - int
    - TransactionId*
    - int
    - RelFileLocator*
    - int
    - xl_xact_stats_item*
    - int
    - TransactionId
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6182
      start: 6044
    functionDepth: 1
    functionLinenumber: 6044
    functionLinenumberEnd: 6182
    functionName: XactLogAbortRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - XLogLogicalInfoActive
    - XLogBeginInsert
    - Assert
    - XLogRegisterData
    - XLogSetRecordFlags
    - strlen
    - TransactionIdIsValid
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr XactLogAbortRecord(TimestampTz abort_time,\n\t\t\t\t   int
      nsubxacts, TransactionId *subxacts,\n\t\t\t\t   int nrels, RelFileLocator *rels,\n\t\t\t\t
      \  int ndroppedstats, xl_xact_stats_item *droppedstats,\n\t\t\t\t   int xactflags,
      TransactionId twophase_xid,\n\t\t\t\t   const char *twophase_gid)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6197,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6197,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/xact.c:6199,1
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/xact.c:6202,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6204,1
    - Dst: TransactionTreeSetCommitTsData
      Src: /src/postgres/src/backend/access/transam/xact.c:6213,1
    - Dst: TransactionIdCommitTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6221,1
    - Dst: RecordKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xact.c:6234,1
    - Dst: TransactionIdAsyncCommitTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6245,1
    - Dst: ExpireTreeKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xact.c:6250,1
    - Dst: ProcessCommittedInvalidationMessages
      Src: /src/postgres/src/backend/access/transam/xact.c:6257,1
    - Dst: XactCompletionRelcacheInitFileInval
      Src: /src/postgres/src/backend/access/transam/xact.c:6258,1
    - Dst: StandbyReleaseLockTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6267,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/access/transam/xact.c:6273,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6295,1
    - Dst: DropRelationFiles
      Src: /src/postgres/src/backend/access/transam/xact.c:6298,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6304,1
    - Dst: pgstat_execute_transactional_drops
      Src: /src/postgres/src/backend/access/transam/xact.c:6306,1
    - Dst: XactCompletionForceSyncCommit
      Src: /src/postgres/src/backend/access/transam/xact.c:6321,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6322,1
    - Dst: XactCompletionApplyFeedback
      Src: /src/postgres/src/backend/access/transam/xact.c:6329,1
    - Dst: XLogRequestWalReceiverReply
      Src: /src/postgres/src/backend/access/transam/xact.c:6330,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 4
    argNames:
    - parsed
    - xid
    - lsn
    - origin_id
    argTypes:
    - xl_xact_parsed_commit*
    - TransactionId
    - XLogRecPtr
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6331
      start: 6188
    functionDepth: 3
    functionLinenumber: 6188
    functionLinenumberEnd: 6331
    functionName: xact_redo_commit
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - replorigin_advance
    - XactCompletionApplyFeedback
    - RecordKnownAssignedTransactionIds
    - TransactionIdAsyncCommitTree
    - XactCompletionForceSyncCommit
    - TransactionIdCommitTree
    - AdvanceNextFullTransactionIdPastXid
    - TransactionIdLatest
    - Assert
    - XLogRequestWalReceiverReply
    - ExpireTreeKnownAssignedTransactionIds
    - ProcessCommittedInvalidationMessages
    - pgstat_execute_transactional_drops
    - DropRelationFiles
    - TransactionTreeSetCommitTsData
    - XLogFlush
    - StandbyReleaseLockTree
    - TransactionIdIsValid
    - XactCompletionRelcacheInitFileInval
    linkageType: ''
    returnType: void
    signature: "void xact_redo_commit(xl_xact_parsed_commit *parsed,\n\t\t\t\t TransactionId
      xid,\n\t\t\t\t XLogRecPtr lsn,\n\t\t\t\t ReplOriginId origin_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6348,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6348,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/xact.c:6351,1
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/xact.c:6354,1
    - Dst: TransactionIdAbortTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6359,1
    - Dst: RecordKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xact.c:6372,1
    - Dst: TransactionIdAbortTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6375,1
    - Dst: ExpireTreeKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xact.c:6380,1
    - Dst: StandbyReleaseLockTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6390,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/access/transam/xact.c:6396,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6407,1
    - Dst: DropRelationFiles
      Src: /src/postgres/src/backend/access/transam/xact.c:6409,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6415,1
    - Dst: pgstat_execute_transactional_drops
      Src: /src/postgres/src/backend/access/transam/xact.c:6417,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - parsed
    - xid
    - lsn
    - origin_id
    argTypes:
    - xl_xact_parsed_abort*
    - TransactionId
    - XLogRecPtr
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6419
      start: 6342
    functionDepth: 3
    functionLinenumber: 6342
    functionLinenumberEnd: 6419
    functionName: xact_redo_abort
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - ExpireTreeKnownAssignedTransactionIds
    - AdvanceNextFullTransactionIdPastXid
    - TransactionIdLatest
    - replorigin_advance
    - Assert
    - pgstat_execute_transactional_drops
    - DropRelationFiles
    - TransactionIdAbortTree
    - XLogFlush
    - RecordKnownAssignedTransactionIds
    - StandbyReleaseLockTree
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid,\n\t\t\t\tXLogRecPtr
      lsn, ReplOriginId origin_id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6427,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/xact.c:6427,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6431,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:6434,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6434,1
    - Dst: xact_redo_commit
      Src: /src/postgres/src/backend/access/transam/xact.c:6435,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xact.c:6435,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6436,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6440,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:6443,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6443,1
    - Dst: xact_redo_commit
      Src: /src/postgres/src/backend/access/transam/xact.c:6444,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6445,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xact.c:6448,1
    - Dst: PrepareRedoRemove
      Src: /src/postgres/src/backend/access/transam/xact.c:6449,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:6450,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6454,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:6457,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6457,1
    - Dst: xact_redo_abort
      Src: /src/postgres/src/backend/access/transam/xact.c:6458,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xact.c:6458,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6459,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6463,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:6466,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6466,1
    - Dst: xact_redo_abort
      Src: /src/postgres/src/backend/access/transam/xact.c:6467,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6468,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xact.c:6471,1
    - Dst: PrepareRedoRemove
      Src: /src/postgres/src/backend/access/transam/xact.c:6472,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:6473,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xact.c:6481,1
    - Dst: PrepareRedoAdd
      Src: /src/postgres/src/backend/access/transam/xact.c:6482,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6483,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6486,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:6487,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6491,1
    - Dst: ProcArrayApplyXidAssignment
      Src: /src/postgres/src/backend/access/transam/xact.c:6494,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:6505,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6506
      start: 6421
    functionDepth: 4
    functionLinenumber: 6421
    functionLinenumberEnd: 6506
    functionName: xact_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - PrepareRedoRemove
    - elog
    - ParseAbortRecord
    - LWLockAcquire
    - xact_redo_abort
    - XLogRecGetXid
    - Assert
    - ProcArrayApplyXidAssignment
    - LWLockRelease
    - XLogRecGetOrigin
    - XLogRecHasAnyBlockRefs
    - ParseCommitRecord
    - xact_redo_commit
    - PrepareRedoAdd
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void xact_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: RecoveryPrefetchEnabled
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RecoveryPrefetchEnabled()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: RecoveryPrefetchEnabled
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RecoveryPrefetchEnabled()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:221,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - max_distance
    - max_inflight
    - lrq_private
    - next
    argTypes:
    - uint32
    - uint32
    - uintptr_t
    - LsnReadQueueNextFun
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 235
    functionName: lrq_alloc
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc
    linkageType: ''
    returnType: LsnReadQueue
    signature: "LsnReadQueue *\nlrq_alloc(uint32 max_distance,\n\t\t  uint32 max_inflight,\n\t\t
      \ uintptr_t lrq_private,\n\t\t  LsnReadQueueNextFun next)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lrq
    argTypes:
    - LsnReadQueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: lrq_free
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void lrq_free(LsnReadQueue *lrq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lrq
    argTypes:
    - LsnReadQueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: lrq_inflight
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 lrq_inflight(LsnReadQueue *lrq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lrq
    argTypes:
    - LsnReadQueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 253
    functionName: lrq_completed
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 lrq_completed(LsnReadQueue *lrq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:262,1
    - Dst: LsnReadQueue*::next
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:263,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - lrq
    argTypes:
    - LsnReadQueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 280
    functionName: lrq_prefetch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - Assert
    - LsnReadQueue*::next
    linkageType: ''
    returnType: void
    signature: void lrq_prefetch(LsnReadQueue *lrq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryPrefetchEnabled
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:300,1
    - Dst: lrq_prefetch
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:301,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - lrq
    - lsn
    argTypes:
    - LsnReadQueue*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 302
    functionName: lrq_complete_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - RecoveryPrefetchEnabled
    - lrq_prefetch
    linkageType: ''
    returnType: void
    signature: void lrq_complete_lsn(LsnReadQueue *lrq, XLogRecPtr lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:316,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:316,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:317,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:318,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:319,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:320,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:321,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 323
    functionName: XLogPrefetchShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - pg_atomic_init_u64
    - GetCurrentTimestamp
    linkageType: ''
    returnType: void
    signature: void XLogPrefetchShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:331,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:331,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:332,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:333,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:334,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:335,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:336,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 328
    functionDepth: 2
    functionLinenumber: 328
    functionLinenumberEnd: 338
    functionName: XLogPrefetchResetStats
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - pg_atomic_write_u64
    linkageType: ''
    returnType: void
    signature: void XLogPrefetchResetStats(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 348
    functionName: XLogPrefetchReconfigure
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XLogPrefetchReconfigure(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:358,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:358,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:359,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - counter
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 360
    functionName: XLogPrefetchIncrement
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_atomic_write_u64
    - AmStartupProcess
    - pg_atomic_read_u64
    linkageType: ''
    returnType: void
    signature: void XLogPrefetchIncrement(pg_atomic_uint64 *counter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:372,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:377,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - reader
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 389
    functionName: XLogPrefetcherAllocate
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - dlist_init
    - hash_create
    linkageType: ''
    returnType: XLogPrefetcher
    signature: 'XLogPrefetcher *

      XLogPrefetcherAllocate(XLogReaderState *reader)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lrq_free
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:397,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:398,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - prefetcher
    argTypes:
    - XLogPrefetcher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 400
    functionName: XLogPrefetcherFree
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - pfree
    - lrq_free
    - hash_destroy
    linkageType: ''
    returnType: void
    signature: void XLogPrefetcherFree(XLogPrefetcher *prefetcher)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prefetcher
    argTypes:
    - XLogPrefetcher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 409
    functionName: XLogPrefetcherGetReader
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: XLogReaderState
    signature: 'XLogReaderState *

      XLogPrefetcherGetReader(XLogPrefetcher *prefetcher)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lrq_inflight
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:435,1
    - Dst: lrq_completed
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - prefetcher
    argTypes:
    - XLogPrefetcher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 445
    functionName: XLogPrefetcherComputeStats
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - lrq_inflight
    - lrq_completed
    linkageType: ''
    returnType: void
    signature: void XLogPrefetcherComputeStats(XLogPrefetcher *prefetcher)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: XLogReaderHasQueuedRecordOrError
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:489,1
    - Dst: XLogReadAhead
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:495,1
    - Dst: RecoveryPrefetchEnabled
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:515,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:553,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:555,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:583,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:586,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:589,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:610,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:614,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:619,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:632,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:637,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:660,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:660,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:681,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:688,1
    - Dst: XLogPrefetcherIsFiltered
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:693,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:695,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:703,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:710,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:724,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:733,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:736,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:741,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:743,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:745,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:754,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:757,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:763,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:765,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:767,1
    - Dst: PrefetchSharedBuffer
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:772,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:773,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:776,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:783,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:796,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:823,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 109
    argCount: 2
    argNames:
    - pgsr_private
    - lsn
    argTypes:
    - uintptr_t
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 463
    functionDepth: 3
    functionLinenumber: 463
    functionLinenumberEnd: 824
    functionName: XLogPrefetcherNextBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogPrefetcherAddFilter
    - RelFileLocatorEquals
    - Assert
    - XLogPrefetcherIsFiltered
    - smgrnblocks
    - XLogReaderHasQueuedRecordOrError
    - PrefetchSharedBuffer
    - smgrexists
    - smgropen
    - pg_unreachable
    - BufferIsValid
    - RecoveryPrefetchEnabled
    - XLogPrefetchIncrement
    - LSN_FORMAT_ARGS
    - XLogReadAhead
    linkageType: ''
    returnType: LsnReadQueueNextStatus
    signature: LsnReadQueueNextStatus XLogPrefetcherNextBlock(uintptr_t pgsr_private,
      XLogRecPtr *lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:837,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:842,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:842,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:843,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:843,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:844,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:844,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:845,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:845,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:846,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:846,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:847,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:847,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:848,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:848,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:849,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:850,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:851,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 829
    functionDepth: 2
    functionLinenumber: 829
    functionLinenumberEnd: 855
    functionName: pg_stat_get_recovery_prefetch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - InitMaterializedSRF
    - Int32GetDatum
    - tuplestore_putvalues
    - pg_atomic_read_u64
    - TimestampTzGetDatum
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stat_get_recovery_prefetch(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:868,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:876,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:887,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:888,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - prefetcher
    - rlocator
    - blockno
    - lsn
    argTypes:
    - XLogPrefetcher*
    - RelFileLocator
    - BlockNumber
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 861
    functionDepth: 2
    functionLinenumber: 861
    functionLinenumberEnd: 891
    functionName: XLogPrefetcherAddFilter
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 1
    functionsReached:
    - dlist_push_head
    - Min
    - hash_search
    - dlist_delete
    linkageType: ''
    returnType: void
    signature: "void XLogPrefetcherAddFilter(XLogPrefetcher *prefetcher, RelFileLocator
      rlocator,\n\t\t\t\t\t\tBlockNumber blockno, XLogRecPtr lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:902,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:902,1
    - Dst: dlist_tail_element
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:904,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:911,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:912,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - prefetcher
    - replaying_lsn
    argTypes:
    - XLogPrefetcher*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 914
    functionName: XLogPrefetcherCompleteFilters
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - dlist_is_empty
    - hash_search
    - unlikely
    - dlist_delete
    - dlist_tail_element
    linkageType: ''
    returnType: void
    signature: void XLogPrefetcherCompleteFilters(XLogPrefetcher *prefetcher, XLogRecPtr
      replaying_lsn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:927,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:927,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:932,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:936,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:939,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:948,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:952,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:955,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - prefetcher
    - rlocator
    - blockno
    argTypes:
    - XLogPrefetcher*
    - RelFileLocator
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 962
    functionName: XLogPrefetcherIsFiltered
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 1
    functionsReached:
    - elog
    - dlist_is_empty
    - hash_search
    - unlikely
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: bool
    signature: "bool XLogPrefetcherIsFiltered(XLogPrefetcher *prefetcher, RelFileLocator
      rlocator,\n\t\t\t\t\t\t BlockNumber blockno)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - prefetcher
    - recPtr
    argTypes:
    - XLogPrefetcher*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 980
    functionName: XLogPrefetcherBeginRead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - XLogBeginRead
    linkageType: ''
    returnType: void
    signature: void XLogPrefetcherBeginRead(XLogPrefetcher *prefetcher, XLogRecPtr
      recPtr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:996,1
    - Dst: lrq_free
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1002,1
    - Dst: RecoveryPrefetchEnabled
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1004,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1006,1
    - Dst: lrq_alloc
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1016,1
    - Dst: XLogReleasePreviousRecord
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1028,1
    - Dst: XLogPrefetcherCompleteFilters
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1035,1
    - Dst: lrq_complete_lsn
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1041,1
    - Dst: XLogReaderHasQueuedRecordOrError
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1047,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1049,1
    - Dst: lrq_inflight
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1050,1
    - Dst: lrq_completed
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1050,1
    - Dst: lrq_prefetch
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1051,1
    - Dst: XLogNextRecord
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1055,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1063,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1078,1
    - Dst: XLogPrefetcherComputeStats
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1079,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1081,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 2
    argNames:
    - prefetcher
    - errmsg
    argTypes:
    - XLogPrefetcher*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 986
    functionDepth: 3
    functionLinenumber: 986
    functionLinenumberEnd: 1084
    functionName: XLogPrefetcherReadRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - XLogNextRecord
    - Assert
    - XLogPrefetcherCompleteFilters
    - lrq_alloc
    - XLogPrefetcherComputeStats
    - XLogReaderHasQueuedRecordOrError
    - lrq_completed
    - XLogReleasePreviousRecord
    - lrq_inflight
    - unlikely
    - lrq_complete_lsn
    - lrq_prefetch
    - RecoveryPrefetchEnabled
    - lrq_free
    linkageType: ''
    returnType: XLogRecord
    signature: 'XLogRecord *

      XLogPrefetcherReadRecord(XLogPrefetcher *prefetcher, char **errmsg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - new_value
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1086
    functionDepth: 0
    functionLinenumber: 1086
    functionLinenumberEnd: 1098
    functionName: check_recovery_prefetch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_recovery_prefetch(int *new_value, void **extra, GucSource
      source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1105,1
    - Dst: XLogPrefetchReconfigure
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - new_value
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1100
    functionDepth: 1
    functionLinenumber: 1100
    functionLinenumberEnd: 1107
    functionName: assign_recovery_prefetch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - XLogPrefetchReconfigure
    - AmStartupProcess
    linkageType: ''
    returnType: void
    signature: void assign_recovery_prefetch(int new_value, void *extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:96,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:100,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:102,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - pageData
    - offset
    - length
    - data
    argTypes:
    - GenericXLogPageData*
    - OffsetNumber
    - OffsetNumber
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 108
    functionName: writeFragment
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void writeFragment(GenericXLogPageData *pageData, OffsetNumber offset,
      OffsetNumber length,\n\t\t\t  const char *data)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:139,1
    - Dst: writeFragment
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:196,1
    - Dst: writeFragment
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:217,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 38
    argCount: 7
    argNames:
    - pageData
    - curpage
    - targetpage
    - targetStart
    - targetEnd
    - validStart
    - validEnd
    argTypes:
    - GenericXLogPageData*
    - char*
    - char*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 221
    functionName: computeRegionDelta
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 0
    functionsReached:
    - Min
    - writeFragment
    linkageType: ''
    returnType: void
    signature: "void computeRegionDelta(GenericXLogPageData *pageData,\n\t\t\t\t   const
      char *curpage, const char *targetpage,\n\t\t\t\t   int targetStart, int targetEnd,\n\t\t\t\t
      \  int validStart, int validEnd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: computeRegionDelta
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:238,1
    - Dst: computeRegionDelta
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:242,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:255,1
    - Dst: applyPageRedo
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:256,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:257,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:258,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - pageData
    - curpage
    - targetpage
    argTypes:
    - GenericXLogPageData*
    - Page
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 263
    functionName: computeDelta
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 0
    functionsReached:
    - computeRegionDelta
    - elog
    - memcpy
    - applyPageRedo
    - memcmp
    linkageType: ''
    returnType: void
    signature: void computeDelta(GenericXLogPageData *pageData, Page curpage, Page
      targetpage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_aligned
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:274,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 286
    functionName: GenericXLogStart
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 0
    functionsReached:
    - RelationNeedsWAL
    - palloc_aligned
    linkageType: ''
    returnType: GenericXLogState
    signature: 'GenericXLogState *

      GenericXLogStart(Relation relation)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:308,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:313,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:313,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:326,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - state
    - buffer
    - flags
    argTypes:
    - GenericXLogState*
    - Buffer
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 298
    functionDepth: 4
    functionLinenumber: 298
    functionLinenumberEnd: 330
    functionName: GenericXLogRegisterBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - BufferGetPage
    - memcpy
    - BufferIsInvalid
    linkageType: ''
    returnType: Page
    signature: Page GenericXLogRegisterBuffer(GenericXLogState *state, Buffer buffer,
      int flags)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:345,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:347,1
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:359,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:362,1
    - Dst: computeDelta
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:370,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:377,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:378,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:380,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:384,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:388,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:393,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:394,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:399,1
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:406,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:408,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:408,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:410,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:415,1
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:420,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:422,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:422,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:426,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:428,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:433,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 1
    argNames:
    - state
    argTypes:
    - GenericXLogState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 336
    functionDepth: 4
    functionLinenumber: 336
    functionLinenumberEnd: 436
    functionName: GenericXLogFinish
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 0
    functionsReached:
    - XLogRegisterBufData
    - XLogInsert
    - memcpy
    - XLogBeginInsert
    - pfree
    - computeDelta
    - START_CRIT_SECTION
    - BufferGetPage
    - memset
    - BufferIsInvalid
    - MarkBufferDirty
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - PageSetLSN
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GenericXLogFinish(GenericXLogState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - GenericXLogState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 447
    functionName: GenericXLogAbort
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void GenericXLogAbort(GenericXLogState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:463,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:465,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - page
    - delta
    - deltaSize
    argTypes:
    - Page
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 472
    functionName: applyPageRedo
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void applyPageRedo(Page page, const char *delta, Size deltaSize)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:485,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:485,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:488,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:492,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:498,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:508,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:509,1
    - Dst: applyPageRedo
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:510,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:519,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:522,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:523,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:528,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:530,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:531,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 477
    functionDepth: 4
    functionLinenumber: 477
    functionLinenumberEnd: 533
    functionName: generic_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    - applyPageRedo
    - memset
    - PageSetLSN
    - XLogRecMaxBlockId
    - XLogRecHasBlockRef
    - BufferIsValid
    - MarkBufferDirty
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void generic_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mask_page_lsn_and_checksum
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:541,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/transam/generic_xlog.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - page
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 538
    functionDepth: 2
    functionLinenumber: 538
    functionLinenumberEnd: 544
    functionName: generic_mask
    functionSourceFile: /src/postgres/src/backend/access/transam/generic_xlog.c
    functionUses: 0
    functionsReached:
    - mask_page_lsn_and_checksum
    - mask_unused_space
    linkageType: ''
    returnType: void
    signature: void generic_mask(char *page, BlockNumber blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - endptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 602
    functionName: INSERT_FREESPACE
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSERT_FREESPACE(endptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 604
    functionDepth: 0
    functionLinenumber: 604
    functionLinenumberEnd: 606
    functionName: NextBufIdx
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NextBufIdx(idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - recptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 613
    functionName: XLogRecPtrToBufIdx
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XLogRecPtrToBufIdx(recptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - segsize
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 624
    functionName: ConvertToXSegs
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ConvertToXSegs(x, segsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _target
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 646
    functionName: RefreshXLogWriteResult
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RefreshXLogWriteResult(_target)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlog.c:803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:812,1
    - Dst: XLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xlog.c:815,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:816,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:856,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/transam/xlog.c:858,1
    - Dst: WALInsertLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:860,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:880,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:887,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:893,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:894,1
    - Dst: ReserveXLogInsertLocation
      Src: /src/postgres/src/backend/access/transam/xlog.c:902,1
    - Dst: ReserveXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlog.c:923,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:927,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:936,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:936,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:937,1
    - Dst: ReserveXLogInsertLocation
      Src: /src/postgres/src/backend/access/transam/xlog.c:938,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 6
    argNames:
    - rdata
    - fpw_lsn
    - flags
    - num_fpi
    - fpi_bytes
    - topxid_included
    argTypes:
    - XLogRecData*
    - XLogRecPtr
    - uint8
    - int
    - uint64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 783
    functionDepth: 1
    functionLinenumber: 783
    functionLinenumberEnd: 942
    functionName: XLogInsertRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - ReserveXLogSwitch
    - XLogRecPtrIsValid
    - Assert
    - WALInsertLockRelease
    - XLogInsertAllowed
    - START_CRIT_SECTION
    - ReserveXLogInsertLocation
    - unlikely
    - likely
    - WALInsertLockAcquire
    - WALInsertLockAcquireExclusive
    - END_CRIT_SECTION
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr XLogInsertRecord(XLogRecData *rdata,\n\t\t\t\t XLogRecPtr
      fpw_lsn,\n\t\t\t\t uint8 flags,\n\t\t\t\t int num_fpi,\n\t\t\t\t uint64 fpi_bytes,\n\t\t\t\t
      bool topxid_included)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1033,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1028
    functionDepth: 1
    functionLinenumber: 1028
    functionLinenumberEnd: 1040
    functionName: WALINSERT_SPECIAL_SWITCH::if
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogSegmentOffset
    linkageType: ''
    returnType: void
    signature: void if (inserted)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlog.c:1157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1160,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1172,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:1180,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1182,1
    - Dst: XLogBytePosToEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1183,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1190,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1191,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1192,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 4
    argNames:
    - size
    - StartPos
    - EndPos
    - PrevPtr
    argTypes:
    - int
    - XLogRecPtr*
    - XLogRecPtr*
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1148
    functionDepth: 2
    functionLinenumber: 1148
    functionLinenumberEnd: 1193
    functionName: ReserveXLogInsertLocation
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - SpinLockAcquire
    - Assert
    - XLogBytePosToEndRecPtr
    - XLogRecPtrToBytePos
    - SpinLockRelease
    - MAXALIGN
    - XLogBytePosToRecPtr
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline ReserveXLogInsertLocation(int size, XLogRecPtr
      *StartPos, XLogRecPtr *EndPos,\n\t\t\t\t\t\t  XLogRecPtr *PrevPtr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlog.c:1211,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1221,1
    - Dst: XLogBytePosToEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1225,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1226,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:1228,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1236,1
    - Dst: XLogBytePosToEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1237,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1239,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1244,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:1249,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1253,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1253,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1254,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1255,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1256,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 3
    argNames:
    - StartPos
    - EndPos
    - PrevPtr
    argTypes:
    - XLogRecPtr*
    - XLogRecPtr*
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1204
    functionDepth: 2
    functionLinenumber: 1204
    functionLinenumberEnd: 1259
    functionName: ReserveXLogSwitch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - Assert
    - MAXALIGN
    - XLogBytePosToEndRecPtr
    - XLogRecPtrToBytePos
    - SpinLockRelease
    - SpinLockAcquire
    - XLogBytePosToRecPtr
    linkageType: ''
    returnType: bool
    signature: bool ReserveXLogSwitch(XLogRecPtr *StartPos, XLogRecPtr *EndPos, XLogRecPtr
      *PrevPtr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetXLogBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:1280,1
    - Dst: INSERT_FREESPACE
      Src: /src/postgres/src/backend/access/transam/xlog.c:1281,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1287,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1301,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:1302,1
    - Dst: GetXLogBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:1317,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1323,1
    - Dst: INSERT_FREESPACE
      Src: /src/postgres/src/backend/access/transam/xlog.c:1333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1336,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:1337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1345,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1355,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1358,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1358,1
    - Dst: GetXLogBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:1390,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:1391,1
    - Dst: MAXALIGN64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:1403,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:1404,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:1405,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 6
    argNames:
    - write_len
    - isLogSwitch
    - rdata
    - StartPos
    - EndPos
    - tli
    argTypes:
    - int
    - bool
    - XLogRecData*
    - XLogRecPtr
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1265
    functionDepth: 1
    functionLinenumber: 1265
    functionLinenumberEnd: 1406
    functionName: CopyXLogRecordToWAL
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - MAXALIGN64
    - XLogSegmentOffset
    - memcpy
    - errmsg_internal
    - errcode
    - Assert
    - ereport
    - MemSet
    - GetXLogBuffer
    - INSERT_FREESPACE
    linkageType: ''
    returnType: void
    signature: "void CopyXLogRecordToWAL(int write_len, bool isLogSwitch, XLogRecData
      *rdata,\n\t\t\t\t\tXLogRecPtr StartPos, XLogRecPtr EndPos, TimeLineID tli)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1411
    functionDepth: 1
    functionLinenumber: 1411
    functionLinenumberEnd: 1450
    functionName: WALInsertLockAcquire
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void WALInsertLockAcquire(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1468,1
    - Dst: LWLockUpdateVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1469,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1456
    functionDepth: 1
    functionLinenumber: 1456
    functionLinenumberEnd: 1477
    functionName: WALInsertLockAcquireExclusive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - LWLockUpdateVar
    linkageType: ''
    returnType: void
    signature: void WALInsertLockAcquireExclusive(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockReleaseClearVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1493,1
    - Dst: LWLockReleaseClearVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1505
      start: 1485
    functionDepth: 1
    functionLinenumber: 1485
    functionLinenumberEnd: 1505
    functionName: WALInsertLockRelease
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LWLockReleaseClearVar
    linkageType: ''
    returnType: void
    signature: void WALInsertLockRelease(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockUpdateVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1520,1
    - Dst: LWLockUpdateVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - insertingAt
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1511
    functionDepth: 1
    functionLinenumber: 1511
    functionLinenumberEnd: 1528
    functionName: WALInsertLockUpdateInsertingAt
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockUpdateVar
    linkageType: ''
    returnType: void
    signature: void WALInsertLockUpdateInsertingAt(XLogRecPtr insertingAt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:1555,1
    - Dst: pg_atomic_read_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1561,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1566,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:1568,1
    - Dst: XLogBytePosToEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:1581,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:1582,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1583,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1583,1
    - Dst: LWLockWaitForVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1626,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:1641,1
    - Dst: pg_atomic_monotonic_advance_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1650,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - upto
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1544
    functionDepth: 3
    functionLinenumber: 1544
    functionLinenumberEnd: 1654
    functionName: WaitXLogInsertionsToFinish
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - LWLockWaitForVar
    - pg_atomic_monotonic_advance_u64
    - ereport
    - XLogBytePosToEndRecPtr
    - SpinLockRelease
    - errmsg
    - pg_atomic_read_membarrier_u64
    - SpinLockAcquire
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr WaitXLogInsertionsToFinish(XLogRecPtr upto)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1687,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1688,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:1697,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1715,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1735,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1738,1
    - Dst: WALInsertLockUpdateInsertingAt
      Src: /src/postgres/src/backend/access/transam/xlog.c:1743,1
    - Dst: AdvanceXLInsertBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:1745,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1746,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:1749,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1750,1
    - Dst: pg_memory_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:1758,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1768,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1769,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - ptr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1772
      start: 1672
    functionDepth: 2
    functionLinenumber: 1672
    functionLinenumberEnd: 1772
    functionName: GetXLogBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - elog
    - WALInsertLockUpdateInsertingAt
    - XLogSegmentOffset
    - AdvanceXLInsertBuffer
    - Assert
    - pg_atomic_read_u64
    - pg_memory_barrier
    - XLogRecPtrToBufIdx
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: char
    signature: 'char *

      GetXLogBuffer(XLogRecPtr ptr, TimeLineID tli)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:1797,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/access/transam/xlog.c:1797,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1800,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:1800,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1806,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:1808,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:1809,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1810,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1811,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:1830,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1847,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlog.c:1858,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:1864,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:1867,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:1873,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1888,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - dstbuf
    - startptr
    - count
    - tli
    argTypes:
    - char*
    - XLogRecPtr
    - Size
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1891
      start: 1788
    functionDepth: 2
    functionLinenumber: 1788
    functionLinenumberEnd: 1891
    functionName: WALReadFromBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - XLogRecPtrToBufIdx
    - memcpy
    - Assert
    - ereport
    - GetWALInsertionTimeLine
    - pg_read_barrier
    - errmsg
    - pg_atomic_read_u64
    - Min
    - RecoveryInProgress
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: Size
    signature: "Size WALReadFromBuffers(char *dstbuf, XLogRecPtr startptr, Size count,\n\t\t\t\t
      \  TimeLineID tli)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - bytepos
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1930
      start: 1898
    functionDepth: 1
    functionLinenumber: 1898
    functionLinenumberEnd: 1930
    functionName: XLogBytePosToRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - XLogSegNoOffsetToRecPtr
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogBytePosToRecPtr(uint64 bytepos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1973,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - bytepos
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1976
      start: 1938
    functionDepth: 1
    functionLinenumber: 1938
    functionLinenumberEnd: 1976
    functionName: XLogBytePosToEndRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 3
    functionsReached:
    - XLogSegNoOffsetToRecPtr
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogBytePosToEndRecPtr(uint64 bytepos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:1989,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1991,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1999,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2010,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 1981
    functionDepth: 1
    functionLinenumber: 1981
    functionLinenumberEnd: 2016
    functionName: XLogRecPtrToBytePos
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - Assert
    - XLogSegmentOffset
    - XLByteToSeg
    linkageType: ''
    returnType: uint64
    signature: uint64 XLogRecPtrToBytePos(XLogRecPtr ptr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2036,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:2044,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2051,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2062,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2065,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2071,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2080,1
    - Dst: WaitXLogInsertionsToFinish
      Src: /src/postgres/src/backend/access/transam/xlog.c:2082,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2084,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2086,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2090,1
    - Dst: TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START
      Src: /src/postgres/src/backend/access/transam/xlog.c:2095,1
    - Dst: XLogWrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:2098,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2099,1
    - Dst: TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE
      Src: /src/postgres/src/backend/access/transam/xlog.c:2101,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2110,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2122,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:2122,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2131,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2132,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:2138,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:2154,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2169,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2171,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2176,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:2181,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2182,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 59
    argCount: 3
    argNames:
    - upto
    - tli
    - opportunistic
    argTypes:
    - XLogRecPtr
    - TimeLineID
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2185
      start: 2025
    functionDepth: 4
    functionLinenumber: 2025
    functionLinenumberEnd: 2185
    functionName: AdvanceXLInsertBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - elog
    - XLogSegmentOffset
    - XLogRecPtrToBufIdx
    - LWLockAcquire
    - Assert
    - TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START
    - XLogWrite
    - pg_write_barrier
    - TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE
    - MemSet
    - pg_atomic_write_u64
    - SpinLockRelease
    - pg_atomic_read_u64
    - LWLockRelease
    - RefreshXLogWriteResult
    - WaitXLogInsertionsToFinish
    - SpinLockAcquire
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void AdvanceXLInsertBuffer(XLogRecPtr upto, TimeLineID tli, bool opportunistic)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:2210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2218
      start: 2191
    functionDepth: 1
    functionLinenumber: 2191
    functionLinenumberEnd: 2218
    functionName: CalculateCheckpointSegments
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - ConvertToXSegs
    linkageType: ''
    returnType: void
    signature: void CalculateCheckpointSegments(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CalculateCheckpointSegments
      Src: /src/postgres/src/backend/access/transam/xlog.c:2224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2220
    functionDepth: 2
    functionLinenumber: 2220
    functionLinenumberEnd: 2225
    functionName: assign_max_wal_size
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - CalculateCheckpointSegments
    linkageType: ''
    returnType: void
    signature: void assign_max_wal_size(int newval, void *extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CalculateCheckpointSegments
      Src: /src/postgres/src/backend/access/transam/xlog.c:2231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - double
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2227
    functionDepth: 2
    functionLinenumber: 2227
    functionLinenumberEnd: 2232
    functionName: assign_checkpoint_completion_target
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - CalculateCheckpointSegments
    linkageType: ''
    returnType: void
    signature: void assign_checkpoint_completion_target(double newval, void *extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/backend/access/transam/xlog.c:2237,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:2239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2244
      start: 2234
    functionDepth: 1
    functionLinenumber: 2234
    functionLinenumberEnd: 2244
    functionName: check_wal_segment_size
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - IsValidWalSegSize
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_wal_segment_size(int *newval, void **extra, GucSource source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:2264,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:2266,1
    - Dst: ceil
      Src: /src/postgres/src/backend/access/transam/xlog.c:2280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - lastredoptr
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 2250
    functionDepth: 1
    functionLinenumber: 2250
    functionLinenumberEnd: 2289
    functionName: XLOGfileslop
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - ConvertToXSegs
    - ceil
    linkageType: ''
    returnType: XLogSegNo
    signature: XLogSegNo XLOGfileslop(XLogRecPtr lastredoptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - new_segno
    argTypes:
    - XLogSegNo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2310
      start: 2300
    functionDepth: 1
    functionLinenumber: 2300
    functionLinenumberEnd: 2310
    functionName: XLogCheckpointNeeded
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLByteToSeg
    linkageType: ''
    returnType: bool
    signature: bool XLogCheckpointNeeded(XLogSegNo new_segno)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2336,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2341,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:2361,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2370,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:2373,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2374,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2375,1
    - Dst: XLByteInPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2381,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2388,1
    - Dst: XLogFileClose
      Src: /src/postgres/src/backend/access/transam/xlog.c:2390,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2391,1
    - Dst: XLogFileInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:2396,1
    - Dst: ReserveExternalFD
      Src: /src/postgres/src/backend/access/transam/xlog.c:2397,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2403,1
    - Dst: XLogFileOpen
      Src: /src/postgres/src/backend/access/transam/xlog.c:2406,1
    - Dst: ReserveExternalFD
      Src: /src/postgres/src/backend/access/transam/xlog.c:2407,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:2415,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:2452,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:2454,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:2455,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:2456,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:2467,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:2470,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:2471,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2472,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:2476,1
    - Dst: issue_xlog_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:2500,1
    - Dst: WalSndWakeupRequest
      Src: /src/postgres/src/backend/access/transam/xlog.c:2503,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:2507,1
    - Dst: XLogArchiveNotifySeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2508,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:2510,1
    - Dst: XLogCheckpointNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:2520,1
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:2522,1
    - Dst: XLogCheckpointNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:2523,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:2524,1
    - Dst: NextBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:2535,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2542,1
    - Dst: XLByteInPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2559,1
    - Dst: XLogFileClose
      Src: /src/postgres/src/backend/access/transam/xlog.c:2561,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2564,1
    - Dst: XLogFileOpen
      Src: /src/postgres/src/backend/access/transam/xlog.c:2567,1
    - Dst: ReserveExternalFD
      Src: /src/postgres/src/backend/access/transam/xlog.c:2568,1
    - Dst: issue_xlog_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:2571,1
    - Dst: WalSndWakeupRequest
      Src: /src/postgres/src/backend/access/transam/xlog.c:2575,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2587,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2592,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2599,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2600,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2601,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2609,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2610,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2611,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2612,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2613,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2619,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 114
    argCount: 3
    argNames:
    - WriteRqst
    - tli
    - flexible
    argTypes:
    - XLogwrtRqst
    - TimeLineID
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2622
      start: 2324
    functionDepth: 3
    functionLinenumber: 2324
    functionLinenumberEnd: 2622
    functionName: XLogWrite
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogArchivingActive
    - GetRedoRecPtr
    - ReserveExternalFD
    - pg_pwrite
    - XLByteInPrevSeg
    - XLogArchiveNotifySeg
    - LSN_FORMAT_ARGS
    - elog
    - issue_xlog_fsync
    - Assert
    - XLogFileClose
    - XLByteToPrevSeg
    - pgstat_report_wait_end
    - RequestCheckpoint
    - pg_atomic_write_u64
    - time
    - errmsg
    - SpinLockRelease
    - XLogFileName
    - XLogRecPtrToBufIdx
    - XLogSegmentOffset
    - WalSndWakeupRequest
    - XLogCheckpointNeeded
    - ereport
    - pgstat_count_io_op_time
    - pg_read_barrier
    - pgstat_prepare_io_time
    - pg_atomic_read_u64
    - RefreshXLogWriteResult
    - NextBufIdx
    - errcode_for_file_access
    - XLogFileOpen
    - pg_write_barrier
    - pgstat_report_wait_start
    - SpinLockAcquire
    - XLogFileInit
    linkageType: ''
    returnType: void
    signature: void XLogWrite(XLogwrtRqst WriteRqst, TimeLineID tli, bool flexible)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2637,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2642,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2663,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/access/transam/xlog.c:2674,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/access/transam/xlog.c:2677,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/xlog.c:2677,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - asyncXactLSN
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2679
      start: 2629
    functionDepth: 2
    functionLinenumber: 2629
    functionLinenumberEnd: 2679
    functionName: XLogSetAsyncXactLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 3
    functionsReached:
    - GetPGProcByNumber
    - SpinLockRelease
    - pg_atomic_read_u32
    - RefreshXLogWriteResult
    - SpinLockAcquire
    - SetLatch
    linkageType: ''
    returnType: void
    signature: void XLogSetAsyncXactLSN(XLogRecPtr asyncXactLSN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2688,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2691
      start: 2685
    functionDepth: 2
    functionLinenumber: 2685
    functionLinenumberEnd: 2691
    functionName: XLogSetReplicationSlotMinimumLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void XLogSetReplicationSlotMinimumLSN(XLogRecPtr lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2703,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2708
      start: 2698
    functionDepth: 2
    functionLinenumber: 2698
    functionLinenumberEnd: 2708
    functionName: XLogGetReplicationSlotMinimumLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogGetReplicationSlotMinimumLSN(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:2737,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2743,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:2749,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:2769,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:2771,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2773,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2773,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:2780,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:2784,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:2785,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2786,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2790,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 2
    argNames:
    - lsn
    - force
    argTypes:
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2791
      start: 2719
    functionDepth: 1
    functionLinenumber: 2719
    functionLinenumberEnd: 2791
    functionName: UpdateMinRecoveryPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - GetCurrentReplayRecPtr
    - elog
    - XLogRecPtrIsValid
    - LWLockAcquire
    - UpdateControlFile
    - errmsg_internal
    - ereport
    - LWLockRelease
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void UpdateMinRecoveryPoint(XLogRecPtr lsn, bool force)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xlog.c:2813,1
    - Dst: UpdateMinRecoveryPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:2815,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:2825,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2826,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2827,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2828,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:2831,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2853,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2861,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2864,1
    - Dst: WaitXLogInsertionsToFinish
      Src: /src/postgres/src/backend/access/transam/xlog.c:2865,1
    - Dst: LWLockAcquireOrWait
      Src: /src/postgres/src/backend/access/transam/xlog.c:2874,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2885,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2888,1
    - Dst: MinimumActiveBackends
      Src: /src/postgres/src/backend/access/transam/xlog.c:2902,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:2904,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:2905,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:2906,1
    - Dst: WaitXLogInsertionsToFinish
      Src: /src/postgres/src/backend/access/transam/xlog.c:2918,1
    - Dst: XLogWrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:2925,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2927,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:2932,1
    - Dst: WalSndWakeupProcessRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:2935,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:2935,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/access/transam/xlog.c:2941,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:2965,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2967,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2968,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2975,1
    - Dst: XLogNeedsFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:2975,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2976
      start: 2799
    functionDepth: 4
    functionLinenumber: 2799
    functionLinenumberEnd: 2976
    functionName: XLogFlush
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 5
    functionsReached:
    - LWLockAcquireOrWait
    - WaitXLogInsertionsToFinish
    - RecoveryInProgress
    - LSN_FORMAT_ARGS
    - elog
    - WaitLSNWakeup
    - Assert
    - XLogInsertAllowed
    - XLogWrite
    - pgstat_report_wait_end
    - SpinLockRelease
    - RefreshXLogWriteResult
    - XLogNeedsFlush
    - pg_usleep
    - UpdateMinRecoveryPoint
    - START_CRIT_SECTION
    - MinimumActiveBackends
    - WalSndWakeupProcessRequests
    - LWLockRelease
    - pgstat_report_wait_start
    - SpinLockAcquire
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void XLogFlush(XLogRecPtr record)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:3013,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3023,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3025,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:3031,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3034,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3036,1
    - Dst: XLByteInPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3049,1
    - Dst: XLogFileClose
      Src: /src/postgres/src/backend/access/transam/xlog.c:3052,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:3066,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/access/transam/xlog.c:3076,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3100,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3101,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3102,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3103,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3104,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:3107,1
    - Dst: WaitXLogInsertionsToFinish
      Src: /src/postgres/src/backend/access/transam/xlog.c:3110,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3111,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:3112,1
    - Dst: XLogWrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:3116,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3118,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:3120,1
    - Dst: WalSndWakeupProcessRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:3123,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:3123,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/access/transam/xlog.c:3129,1
    - Dst: AdvanceXLInsertBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:3135,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3143
      start: 3002
    functionDepth: 5
    functionLinenumber: 3002
    functionLinenumberEnd: 3143
    functionName: XLogBackgroundFlush
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - AdvanceXLInsertBuffer
    - LWLockAcquire
    - XLByteInPrevSeg
    - WaitXLogInsertionsToFinish
    - RecoveryInProgress
    - LSN_FORMAT_ARGS
    - TimestampDifferenceExceeds
    - elog
    - WaitLSNWakeup
    - XLogFileClose
    - XLogWrite
    - SpinLockRelease
    - GetCurrentTimestamp
    - RefreshXLogWriteResult
    - START_CRIT_SECTION
    - WalSndWakeupProcessRequests
    - LWLockRelease
    - SpinLockAcquire
    - END_CRIT_SECTION
    linkageType: ''
    returnType: bool
    signature: bool XLogBackgroundFlush(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xlog.c:3169,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:3183,1
    - Dst: LWLockConditionalAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3193,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3197,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:3204,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:3219,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3226
      start: 3157
    functionDepth: 1
    functionLinenumber: 3157
    functionLinenumberEnd: 3226
    functionName: XLogNeedsFlush
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - XLogRecPtrIsValid
    - XLogInsertAllowed
    - LWLockConditionalAcquire
    - LWLockRelease
    - RefreshXLogWriteResult
    linkageType: ''
    returnType: bool
    signature: bool XLogNeedsFlush(XLogRecPtr record)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:3253,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:3255,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3261,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:3262,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3266,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3267,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3268,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3279,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:3281,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/xlog.c:3281,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3283,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3289,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3291,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3293,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:3296,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3298,1
    - Dst: pg_pwrite_zeros
      Src: /src/postgres/src/backend/access/transam/xlog.c:3313,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:3325,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3331,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3338,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3340,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3344,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3345,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3346,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:3353,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:3358,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3360,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:3361,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3364,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3366,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3368,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3370,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:3372,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3375,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3376,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3377,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3378,1
    - Dst: InstallXLogFileSegment
      Src: /src/postgres/src/backend/access/transam/xlog.c:3397,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3401,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3410,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3411,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 61
    argCount: 4
    argNames:
    - logsegno
    - logtli
    - added
    - path
    argTypes:
    - XLogSegNo
    - TimeLineID
    - bool*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3415
      start: 3241
    functionDepth: 6
    functionLinenumber: 3241
    functionLinenumberEnd: 3415
    functionName: XLogFileInitInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - pg_pwrite
    - pg_pwrite_zeros
    - BasicOpenFile
    - InstallXLogFileSegment
    - pg_fsync
    - elog
    - getpid
    - Assert
    - get_sync_bit
    - XLogFilePath
    - pgstat_report_wait_end
    - errmsg
    - ereport
    - pgstat_count_io_op_time
    - pgstat_prepare_io_time
    - errcode_for_file_access
    - unlink
    - close
    - pgstat_report_wait_start
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int XLogFileInitInternal(XLogSegNo logsegno, TimeLineID logtli,\n\t\t\t\t\t
      bool *added, char *path)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:3436,1
    - Dst: XLogFileInitInternal
      Src: /src/postgres/src/backend/access/transam/xlog.c:3438,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3443,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:3444,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3446,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3447,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3448,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - logsegno
    - logtli
    argTypes:
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3450
      start: 3429
    functionDepth: 7
    functionLinenumber: 3429
    functionLinenumberEnd: 3450
    functionName: XLogFileInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogFileInitInternal
    - get_sync_bit
    - ereport
    - BasicOpenFile
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: int
    signature: int XLogFileInit(XLogSegNo logsegno, TimeLineID logtli)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:3482,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3483,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3485,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3486,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3487,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:3492,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/xlog.c:3492,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3494,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3497,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3499,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3500,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3501,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:3517,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3525,1
    - Dst: read
      Src: /src/postgres/src/backend/access/transam/xlog.c:3526,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3530,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3532,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3535,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:3536,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3537,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3540,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3543,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/xlog.c:3544,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3555,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3556,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3557,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3559,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3562,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:3563,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3564,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/transam/xlog.c:3564,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3565,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3566,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3567,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3570,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3571,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3572,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3574,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3575,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3576,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3577,1
    - Dst: InstallXLogFileSegment
      Src: /src/postgres/src/backend/access/transam/xlog.c:3582,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3583,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 5
    argNames:
    - destTLI
    - destsegno
    - srcTLI
    - srcsegno
    - upto
    argTypes:
    - TimeLineID
    - XLogSegNo
    - TimeLineID
    - XLogSegNo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3584
      start: 3467
    functionDepth: 2
    functionLinenumber: 3467
    functionLinenumberEnd: 3584
    functionName: XLogFileCopy
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errcode
    - InstallXLogFileSegment
    - pg_fsync
    - read
    - getpid
    - elog
    - OpenTransientFile
    - write
    - XLogFilePath
    - pgstat_report_wait_end
    - errmsg
    - data_sync_elevel
    - CloseTransientFile
    - ereport
    - memset
    - errcode_for_file_access
    - unlink
    - pgstat_report_wait_start
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void XLogFileCopy(TimeLineID destTLI, XLogSegNo destsegno,\n\t\t\t
      TimeLineID srcTLI, XLogSegNo srcsegno,\n\t\t\t int upto)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:3619,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:3621,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3623,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3626,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3633,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlog.c:3638,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3643,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:3647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:3651,1
    - Dst: access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3651,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:3652,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3654,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3659,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 5
    argNames:
    - segno
    - tmppath
    - find_free
    - max_segno
    - tli
    argTypes:
    - XLogSegNo*
    - char*
    - bool
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3662
      start: 3612
    functionDepth: 2
    functionLinenumber: 3612
    functionLinenumberEnd: 3662
    functionName: InstallXLogFileSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - LWLockAcquire
    - Assert
    - access
    - stat
    - XLogFilePath
    - durable_rename
    - durable_unlink
    - LWLockRelease
    linkageType: ''
    returnType: bool
    signature: "bool InstallXLogFileSegment(XLogSegNo *segno, char *tmppath,\n\t\t\t\t\t
      \  bool find_free, XLogSegNo max_segno, TimeLineID tli)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:3673,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3675,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:3676,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3678,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - segno
    - tli
    argTypes:
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3683
      start: 3667
    functionDepth: 2
    functionLinenumber: 3667
    functionLinenumberEnd: 3683
    functionName: XLogFileOpen
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - get_sync_bit
    - ereport
    - XLogFilePath
    - BasicOpenFile
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: int
    signature: int XLogFileOpen(XLogSegNo segno, TimeLineID tli)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:3691,1
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:3700,1
    - Dst: posix_fadvise
      Src: /src/postgres/src/backend/access/transam/xlog.c:3701,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3704,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3709,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3711,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3712,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3713,1
    - Dst: ReleaseExternalFD
      Src: /src/postgres/src/backend/access/transam/xlog.c:3717,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3718
      start: 3688
    functionDepth: 2
    functionLinenumber: 3688
    functionLinenumberEnd: 3718
    functionName: XLogFileClose
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - Assert
    - ereport
    - XLogIsNeeded
    - ReleaseExternalFD
    - errmsg
    - close
    - XLogFileName
    - posix_fadvise
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void XLogFileClose(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3751,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:3752,1
    - Dst: XLogFileInitInternal
      Src: /src/postgres/src/backend/access/transam/xlog.c:3756,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3758,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - endptr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3762
      start: 3739
    functionDepth: 7
    functionLinenumber: 3739
    functionLinenumberEnd: 3762
    functionName: PreallocXlogFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogFileInitInternal
    - XLogSegmentOffset
    - close
    - XLByteToPrevSeg
    linkageType: ''
    returnType: void
    signature: void PreallocXlogFiles(XLogRecPtr endptr, TimeLineID tli)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3782,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3784,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3790,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3792,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3793,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3794,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - segno
    - tli
    argTypes:
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3798
      start: 3776
    functionDepth: 2
    functionLinenumber: 3776
    functionLinenumberEnd: 3798
    functionName: CheckXLogRemoved
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - ereport
    - SpinLockRelease
    - errmsg
    - XLogFileName
    - SpinLockAcquire
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void CheckXLogRemoved(XLogSegNo segno, TimeLineID tli)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3812,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3817
      start: 3807
    functionDepth: 2
    functionLinenumber: 3807
    functionLinenumberEnd: 3817
    functionName: XLogGetLastRemovedSegno
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: XLogSegNo
    signature: XLogSegNo XLogGetLastRemovedSegno(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3830,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3831,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3837,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3841,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3853,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - tli
    argTypes:
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3855
      start: 3823
    functionDepth: 2
    functionLinenumber: 3823
    functionLinenumberEnd: 3855
    functionName: XLogGetOldestSegno
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - IsXLogFileName
    - AllocateDir
    - FreeDir
    - XLogFromFileName
    - ReadDir
    linkageType: ''
    returnType: XLogSegNo
    signature: XLogSegNo XLogGetOldestSegno(TimeLineID tli)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3867,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3869,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3872,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3873
      start: 3861
    functionDepth: 2
    functionLinenumber: 3861
    functionLinenumberEnd: 3873
    functionName: UpdateLastRemovedPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    - XLogFromFileName
    linkageType: ''
    returnType: void
    signature: void UpdateLastRemovedPtr(char *filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3887,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3889,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3890,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:3894,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:3897,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3898,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3899,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3901,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3902
      start: 3881
    functionDepth: 1
    functionLinenumber: 3881
    functionLinenumberEnd: 3902
    functionName: RemoveTempXlogFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - unlink
    - AllocateDir
    - FreeDir
    - strncmp
    - ReadDir
    - snprintf
    linkageType: ''
    returnType: void
    signature: void RemoveTempXlogFiles(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3925,1
    - Dst: XLOGfileslop
      Src: /src/postgres/src/backend/access/transam/xlog.c:3926,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3933,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3935,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3938,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3940,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3943,1
    - Dst: IsPartialXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3944,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:3958,1
    - Dst: XLogArchiveCheckDone
      Src: /src/postgres/src/backend/access/transam/xlog.c:3960,1
    - Dst: UpdateLastRemovedPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:3963,1
    - Dst: RemoveXlogFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3965,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3970,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - segno
    - lastredoptr
    - endptr
    - insertTLI
    argTypes:
    - XLogSegNo
    - XLogRecPtr
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3971
      start: 3914
    functionDepth: 3
    functionLinenumber: 3914
    functionLinenumberEnd: 3971
    functionName: RemoveOldXlogFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - UpdateLastRemovedPtr
    - XLogArchiveCheckDone
    - IsXLogFileName
    - IsPartialXLogFileName
    - strcmp
    - XLOGfileslop
    - AllocateDir
    - FreeDir
    - RemoveXlogFile
    - XLogFileName
    - ReadDir
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: "void RemoveOldXlogFiles(XLogSegNo segno, XLogRecPtr lastredoptr, XLogRecPtr
      endptr,\n\t\t\t\t   TimeLineID insertTLI)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4003,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4004,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:4010,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:4012,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4015,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4017,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:4020,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:4028,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:4029,1
    - Dst: XLogArchiveIsReady
      Src: /src/postgres/src/backend/access/transam/xlog.c:4037,1
    - Dst: RemoveXlogFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4038,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4042,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - switchpoint
    - newTLI
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4043
      start: 3989
    functionDepth: 2
    functionLinenumber: 3989
    functionLinenumberEnd: 4043
    functionName: RemoveNonParentXlogFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - IsXLogFileName
    - strcmp
    - AllocateDir
    - FreeDir
    - XLByteToPrevSeg
    - strncmp
    - XLogArchiveIsReady
    - RemoveXlogFile
    - XLogFileName
    - ReadDir
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: void RemoveNonParentXlogFiles(XLogRecPtr switchpoint, TimeLineID newTLI)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4069,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/access/transam/xlog.c:4079,1
    - Dst: InstallXLogFileSegment
      Src: /src/postgres/src/backend/access/transam/xlog.c:4080,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4083,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:4084,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4095,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:4096,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4111,1
    - Dst: rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:4112,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4114,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4115,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4116,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:4120,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:4122,1
    - Dst: XLogArchiveCleanup
      Src: /src/postgres/src/backend/access/transam/xlog.c:4132,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - segment_de
    - recycleSegNo
    - endlogSegNo
    - insertTLI
    argTypes:
    - struct dirent*
    - XLogSegNo
    - XLogSegNo*
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4133
      start: 4058
    functionDepth: 3
    functionLinenumber: 4058
    functionLinenumberEnd: 4133
    functionName: RemoveXlogFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - rename
    - errmsg_internal
    - ereport
    - XLogArchiveCleanup
    - get_dirent_type
    - errmsg
    - durable_unlink
    - InstallXLogFileSegment
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void RemoveXlogFile(const struct dirent *segment_de,\n\t\t\t   XLogSegNo
      recycleSegNo, XLogSegNo *endlogSegNo,\n\t\t\t   TimeLineID insertTLI)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlog.c:4155,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/access/transam/xlog.c:4156,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4157,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4158,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4159,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4163,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlog.c:4164,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/access/transam/xlog.c:4167,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4168,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4169,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4170,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4175,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4176,1
    - Dst: MakePGDirectory
      Src: /src/postgres/src/backend/access/transam/xlog.c:4177,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4178,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4180,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4185,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlog.c:4186,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/access/transam/xlog.c:4189,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4190,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4191,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4197,1
    - Dst: MakePGDirectory
      Src: /src/postgres/src/backend/access/transam/xlog.c:4198,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4199,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4200,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4203
      start: 4148
    functionDepth: 1
    functionLinenumber: 4148
    functionLinenumberEnd: 4203
    functionName: ValidateXLOGDirectoryStructure
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - MakePGDirectory
    - ereport
    - stat
    - snprintf
    - errmsg
    - errcode_for_file_access
    - S_ISDIR
    linkageType: ''
    returnType: void
    signature: void ValidateXLOGDirectoryStructure(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4217,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4219,1
    - Dst: IsBackupHistoryFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:4221,1
    - Dst: XLogArchiveCheckDone
      Src: /src/postgres/src/backend/access/transam/xlog.c:4223,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:4225,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4227,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:4228,1
    - Dst: XLogArchiveCleanup
      Src: /src/postgres/src/backend/access/transam/xlog.c:4229,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4235
      start: 4210
    functionDepth: 1
    functionLinenumber: 4210
    functionLinenumberEnd: 4235
    functionName: CleanupBackupHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogArchiveCheckDone
    - unlink
    - AllocateDir
    - FreeDir
    - XLogArchiveCleanup
    - ReadDir
    - IsBackupHistoryFileName
    - snprintf
    linkageType: ''
    returnType: void
    signature: void CleanupBackupHistory(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/access/transam/xlog.c:4264,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4265,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4266,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4267,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:4269,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:4272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - sysidentifier
    - data_checksum_version
    argTypes:
    - uint64
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4292
      start: 4253
    functionDepth: 1
    functionLinenumber: 4253
    functionLinenumberEnd: 4292
    functionName: InitControlFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - memcpy
    - errcode
    - ereport
    - memset
    - errmsg
    - pg_strong_random
    linkageType: ''
    returnType: void
    signature: void InitControlFile(uint64 sysidentifier, uint32 data_checksum_version)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4351,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4352,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4355,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:4364,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:4365,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4370,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4371,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4372,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:4376,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/xlog.c:4377,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4382,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4384,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:4387,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:4389,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:4390,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4391,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4392,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4393,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:4395,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:4397,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4398,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4400,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4402
      start: 4294
    functionDepth: 1
    functionLinenumber: 4294
    functionLinenumberEnd: 4402
    functionName: WriteControlFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - memcpy
    - FIN_CRC32C
    - COMP_CRC32C
    - ereport
    - write
    - INIT_CRC32C
    - pgstat_report_wait_end
    - memset
    - BasicOpenFile
    - errmsg
    - pgstat_report_wait_start
    - close
    - pg_fsync
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void WriteControlFile(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4415,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4418,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4419,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4420,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:4423,1
    - Dst: read
      Src: /src/postgres/src/backend/access/transam/xlog.c:4424,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4428,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4429,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4430,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4433,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4434,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4435,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:4438,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:4440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4450,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4451,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4452,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4453,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4457,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4460,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4461,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4462,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4463,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4466,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4469,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4470,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4473,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4475,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4476,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4478,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4486,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4487,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4488,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4490,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4494,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4496,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4497,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4498,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4500,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4504,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4506,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4507,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4508,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4509,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4510,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4512,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4513,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4514,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4516,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4520,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4522,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4523,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4524,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4526,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4530,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4532,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4533,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4534,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4536,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4540,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4542,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4543,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4544,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4546,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4552,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4554,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4556,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4560,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4562,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4563,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4564,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4566,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4570,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4572,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4573,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4574,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4576,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4580,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4582,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4583,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4584,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4586,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:4592,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/backend/access/transam/xlog.c:4596,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4597,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4597,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/xlog.c:4598,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4602,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4604,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/xlog.c:4605,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:4609,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4610,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4610,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4612,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:4615,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4616,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4618,1
    - Dst: CalculateCheckpointSegments
      Src: /src/postgres/src/backend/access/transam/xlog.c:4625,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4626
      start: 4404
    functionDepth: 2
    functionLinenumber: 4404
    functionLinenumberEnd: 4626
    functionName: ReadControlFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errcode
    - FIN_CRC32C
    - COMP_CRC32C
    - errhint
    - BasicOpenFile
    - ConvertToXSegs
    - read
    - Assert
    - CalculateCheckpointSegments
    - pgstat_report_wait_end
    - errmsg
    - errmsg_plural
    - EQ_CRC32C
    - ereport
    - pgstat_report_wait_start
    - errcode_for_file_access
    - SetConfigOption
    - INIT_CRC32C
    - close
    - errdetail
    - IsValidWalSegSize
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ReadControlFile(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: update_controlfile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4636
      start: 4632
    functionDepth: 2
    functionLinenumber: 4632
    functionLinenumberEnd: 4636
    functionName: UpdateControlFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - update_controlfile
    linkageType: ''
    returnType: void
    signature: void UpdateControlFile(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:4644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4646
      start: 4641
    functionDepth: 1
    functionLinenumber: 4641
    functionLinenumberEnd: 4646
    functionName: GetSystemIdentifier
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: uint64
    signature: uint64 GetSystemIdentifier(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:4654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4656
      start: 4651
    functionDepth: 1
    functionLinenumber: 4651
    functionLinenumberEnd: 4656
    functionName: GetMockAuthenticationNonce
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      GetMockAuthenticationNonce(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4678
      start: 4672
    functionDepth: 0
    functionLinenumber: 4672
    functionLinenumberEnd: 4678
    functionName: DataChecksumsNeedWrite
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DataChecksumsNeedWrite(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4686,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4691
      start: 4681
    functionDepth: 2
    functionLinenumber: 4681
    functionLinenumberEnd: 4691
    functionName: DataChecksumsOff
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: bool
    signature: bool DataChecksumsOff(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4698,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4703
      start: 4693
    functionDepth: 2
    functionLinenumber: 4693
    functionLinenumberEnd: 4703
    functionName: DataChecksumsOn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: bool
    signature: bool DataChecksumsOn(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4710,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4715
      start: 4705
    functionDepth: 2
    functionLinenumber: 4705
    functionLinenumberEnd: 4715
    functionName: DataChecksumsInProgressOn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: bool
    signature: bool DataChecksumsInProgressOn(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4735
      start: 4731
    functionDepth: 0
    functionLinenumber: 4731
    functionLinenumberEnd: 4735
    functionName: DataChecksumsNeedVerify
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DataChecksumsNeedVerify(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:4756,1
    - Dst: XLogChecksums
      Src: /src/postgres/src/backend/access/transam/xlog.c:4759,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4761,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4763,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4765,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4767,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4768,1
    - Dst: EmitProcSignalBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:4770,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:4773,1
    - Dst: WaitForProcSignalBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:4775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4776
      start: 4747
    functionDepth: 3
    functionLinenumber: 4747
    functionLinenumberEnd: 4776
    functionName: SetDataChecksumsOnInProgress
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - WaitForProcSignalBarrier
    - LWLockAcquire
    - UpdateControlFile
    - START_CRIT_SECTION
    - SpinLockRelease
    - LWLockRelease
    - EmitProcSignalBarrier
    - XLogChecksums
    - SpinLockAcquire
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void SetDataChecksumsOnInProgress(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4805,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4814,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:4815,1
    - Dst: SetDataChecksumsOff
      Src: /src/postgres/src/backend/access/transam/xlog.c:4817,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4821,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/transam/xlog.c:4823,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:4824,1
    - Dst: XLogChecksums
      Src: /src/postgres/src/backend/access/transam/xlog.c:4827,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4829,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4831,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4837,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4839,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4840,1
    - Dst: EmitProcSignalBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:4842,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:4845,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4847,1
    - Dst: WaitForProcSignalBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:4848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4849
      start: 4800
    functionDepth: 3
    functionLinenumber: 4800
    functionLinenumberEnd: 4849
    functionName: SetDataChecksumsOn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - INJECTION_POINT
    - WaitForProcSignalBarrier
    - LWLockAcquire
    - UpdateControlFile
    - SetDataChecksumsOff
    - START_CRIT_SECTION
    - RequestCheckpoint
    - SpinLockRelease
    - LWLockRelease
    - EmitProcSignalBarrier
    - XLogChecksums
    - SpinLockAcquire
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void SetDataChecksumsOn(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4869,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4874,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4888,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:4890,1
    - Dst: XLogChecksums
      Src: /src/postgres/src/backend/access/transam/xlog.c:4893,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4895,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4897,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4899,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4901,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4902,1
    - Dst: EmitProcSignalBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:4904,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:4907,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4909,1
    - Dst: WaitForProcSignalBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:4910,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4924,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:4927,1
    - Dst: XLogChecksums
      Src: /src/postgres/src/backend/access/transam/xlog.c:4931,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4933,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4935,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4937,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4939,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4940,1
    - Dst: EmitProcSignalBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:4942,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:4945,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4947,1
    - Dst: WaitForProcSignalBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:4948,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4949
      start: 4864
    functionDepth: 3
    functionLinenumber: 4864
    functionLinenumberEnd: 4949
    functionName: SetDataChecksumsOff
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - WaitForProcSignalBarrier
    - LWLockAcquire
    - UpdateControlFile
    - START_CRIT_SECTION
    - RequestCheckpoint
    - SpinLockRelease
    - LWLockRelease
    - EmitProcSignalBarrier
    - XLogChecksums
    - SpinLockAcquire
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void SetDataChecksumsOff(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:4962,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:4963,1
    - Dst: SetLocalDataChecksumState
      Src: /src/postgres/src/backend/access/transam/xlog.c:4964,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:4965,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4966
      start: 4959
    functionDepth: 2
    functionLinenumber: 4959
    functionLinenumberEnd: 4966
    functionName: InitLocalDataChecksumState
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - SpinLockAcquire
    - SpinLockRelease
    - SetLocalDataChecksumState
    linkageType: ''
    returnType: void
    signature: void InitLocalDataChecksumState(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data_checksum_version
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4974
      start: 4968
    functionDepth: 0
    functionLinenumber: 4968
    functionLinenumberEnd: 4974
    functionName: SetLocalDataChecksumState
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetLocalDataChecksumState(uint32 data_checksum_version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_checksum_state_string
      Src: /src/postgres/src/backend/access/transam/xlog.c:4980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4981
      start: 4977
    functionDepth: 2
    functionLinenumber: 4977
    functionLinenumberEnd: 4981
    functionName: show_data_checksums
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - get_checksum_state_string
    linkageType: ''
    returnType: char
    signature: 'char *

      show_data_checksums(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4994
      start: 4990
    functionDepth: 0
    functionLinenumber: 4990
    functionLinenumberEnd: 4994
    functionName: GetDefaultCharSignedness
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GetDefaultCharSignedness(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_add_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5008,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5009
      start: 5005
    functionDepth: 2
    functionLinenumber: 5005
    functionLinenumberEnd: 5009
    functionName: GetFakeLSNForUnloggedRel
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - pg_atomic_fetch_add_u64
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetFakeLSNForUnloggedRel(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5033
      start: 5022
    functionDepth: 0
    functionLinenumber: 5022
    functionLinenumberEnd: 5033
    functionName: XLOGChooseNumBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int XLOGChooseNumBuffers(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLOGChooseNumBuffers
      Src: /src/postgres/src/backend/access/transam/xlog.c:5054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5068
      start: 5038
    functionDepth: 1
    functionLinenumber: 5038
    functionLinenumberEnd: 5068
    functionName: check_wal_buffers
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLOGChooseNumBuffers
    linkageType: ''
    returnType: bool
    signature: bool check_wal_buffers(int *newval, void **extra, GucSource source)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:5082,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlog.c:5085,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/access/transam/xlog.c:5088,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:5091,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:5092,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/transam/xlog.c:5093,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlog.c:5099,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:5103,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/xlog.c:5106,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:5106,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/xlog.c:5116,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:5116,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:5117,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:5117,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:5137,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:5138,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/transam/xlog.c:5139,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:5146,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/transam/xlog.c:5147,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/access/transam/xlog.c:5150,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:5153,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5155
      start: 5073
    functionDepth: 2
    functionLinenumber: 5073
    functionLinenumberEnd: 5155
    functionName: check_wal_consistency_checking
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - memcpy
    - list_free
    - pfree
    - GetRmgr
    - pstrdup
    - guc_malloc
    - MemSet
    - lfirst
    - RmgrIdExists
    - SplitIdentifierString
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_wal_consistency_checking(char **newval, void **extra, GucSource
      source)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlog.c:5099,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:5103,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/xlog.c:5106,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:5106,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/xlog.c:5116,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:5116,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:5117,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:5117,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:5137,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:5138,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/transam/xlog.c:5139,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5144
      start: 5097
    functionDepth: 2
    functionLinenumber: 5097
    functionLinenumberEnd: 5144
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 28
    functionsReached:
    - pg_strcasecmp
    - list_free
    - GetRmgr
    - pfree
    - lfirst
    - RmgrIdExists
    - GUC_check_errdetail
    linkageType: ''
    returnType: void
    signature: void foreach(l, elemlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5177
      start: 5160
    functionDepth: 0
    functionLinenumber: 5160
    functionLinenumberEnd: 5177
    functionName: assign_wal_consistency_checking
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void assign_wal_consistency_checking(const char *newval, void *extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5190,1
    - Dst: find_option
      Src: /src/postgres/src/backend/access/transam/xlog.c:5196,1
    - Dst: set_config_option_ext
      Src: /src/postgres/src/backend/access/transam/xlog.c:5200,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5208
      start: 5187
    functionDepth: 1
    functionLinenumber: 5187
    functionLinenumberEnd: 5208
    functionName: InitializeWalConsistencyChecking
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - set_config_option_ext
    - find_option
    linkageType: ''
    returnType: void
    signature: void InitializeWalConsistencyChecking(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:5216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5220
      start: 5213
    functionDepth: 1
    functionLinenumber: 5213
    functionLinenumberEnd: 5220
    functionName: show_archive_command
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogArchivingActive
    linkageType: ''
    returnType: char
    signature: 'char *

      show_archive_command(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:5234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5235
      start: 5225
    functionDepth: 1
    functionLinenumber: 5225
    functionLinenumberEnd: 5235
    functionName: show_in_hot_standby
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - RecoveryInProgress
    linkageType: ''
    returnType: char
    signature: 'char *

      show_in_hot_standby(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:5250,1
    - Dst: IsXLogLogicalInfoEnabled
      Src: /src/postgres/src/backend/access/transam/xlog.c:5251,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:5253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5254
      start: 5240
    functionDepth: 1
    functionLinenumber: 5240
    functionLinenumberEnd: 5254
    functionName: show_effective_wal_level
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - RecoveryInProgress
    - XLogLogicalInfoActive
    - IsXLogLogicalInfoEnabled
    linkageType: ''
    returnType: char
    signature: 'char *

      show_effective_wal_level(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5271,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/transam/xlog.c:5272,1
    - Dst: ReadControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:5274,1
    - Dst: SetLocalDataChecksumState
      Src: /src/postgres/src/backend/access/transam/xlog.c:5275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - reset
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5276
      start: 5268
    functionDepth: 3
    functionLinenumber: 5268
    functionLinenumberEnd: 5276
    functionName: LocalProcessControlFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - Assert
    - SetLocalDataChecksumState
    - ReadControlFile
    - palloc_object
    linkageType: ''
    returnType: void
    signature: void LocalProcessControlFile(bool reset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5287
      start: 5283
    functionDepth: 0
    functionLinenumber: 5283
    functionLinenumberEnd: 5287
    functionName: GetActiveWalLevelOnStandby
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: WalLevel
    signature: WalLevel GetActiveWalLevelOnStandby(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:5312,1
    - Dst: XLOGChooseNumBuffers
      Src: /src/postgres/src/backend/access/transam/xlog.c:5312,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/xlog.c:5313,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/xlog.c:5316,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5319,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5325,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5325,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5327,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5327,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5329,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlog.c:5329,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5331,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5341
      start: 5292
    functionDepth: 1
    functionLinenumber: 5292
    functionLinenumberEnd: 5341
    functionName: XLOGShmemRequest
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - add_size
    - Assert
    - mul_size
    - XLOGChooseNumBuffers
    - Max
    - SetConfigOption
    - snprintf
    linkageType: ''
    returnType: void
    signature: void XLOGShmemRequest(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xlog.c:5361,1
    - Dst: MemoryContextAllowInCriticalSection
      Src: /src/postgres/src/backend/access/transam/xlog.c:5364,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5368,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:5376,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:5377,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5392,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/access/transam/xlog.c:5404,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5405,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/backend/access/transam/xlog.c:5414,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5416,1
    - Dst: SetLocalDataChecksumState
      Src: /src/postgres/src/backend/access/transam/xlog.c:5429,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5431,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5432,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5433,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5434,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5435,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5437
      start: 5346
    functionDepth: 2
    functionLinenumber: 5346
    functionLinenumberEnd: 5437
    functionName: XLOGShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - memcpy
    - SetLocalDataChecksumState
    - pfree
    - pg_atomic_init_u64
    - TYPEALIGN
    - SpinLockInit
    - MemoryContextAllowInCriticalSection
    - memset
    - AllocSetContextCreate
    - LWLockInitialize
    linkageType: ''
    returnType: void
    signature: void XLOGShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5446
      start: 5442
    functionDepth: 0
    functionLinenumber: 5442
    functionLinenumberEnd: 5446
    functionName: XLOGShmemAttach
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XLOGShmemAttach(void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SetInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:5466,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/access/transam/xlog.c:5480,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5483,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5485,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5502,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5512,1
    - Dst: MultiXactSetNextMXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:5519,1
    - Dst: AdvanceOldestClogXid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5520,1
    - Dst: SetTransactionIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5521,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5522,1
    - Dst: SetCommitTsLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5523,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:5547,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5549,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:5551,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:5552,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:5553,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:5554,1
    - Dst: XLogFileInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5559,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:5568,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/xlog.c:5569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5574,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:5575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5576,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:5578,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:5580,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:5581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5582,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:5583,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5584,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:5585,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:5587,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5588,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:5589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5590,1
    - Dst: InitControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:5595,1
    - Dst: WriteControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:5601,1
    - Dst: BootStrapCLOG
      Src: /src/postgres/src/backend/access/transam/xlog.c:5604,1
    - Dst: BootStrapCommitTs
      Src: /src/postgres/src/backend/access/transam/xlog.c:5605,1
    - Dst: BootStrapSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:5606,1
    - Dst: BootStrapMultiXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:5607,1
    - Dst: ReadControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:5613,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 88
    argCount: 1
    argNames:
    - data_checksum_version
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5614
      start: 5452
    functionDepth: 8
    functionLinenumber: 5452
    functionLinenumberEnd: 5614
    functionName: BootStrapXLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - gettimeofday
    - BootStrapCommitTs
    - FIN_CRC32C
    - COMP_CRC32C
    - FullTransactionIdFromEpochAndXid
    - BootStrapCLOG
    - SetMultiXactIdLimit
    - pg_fsync
    - getpid
    - SetInstallXLogFileSegmentActive
    - MultiXactSetNextMXact
    - memcpy
    - Assert
    - WriteControlFile
    - write
    - pgstat_report_wait_end
    - time
    - errmsg
    - SetTransactionIdLimit
    - BootStrapSUBTRANS
    - ereport
    - memset
    - InitControlFile
    - ReadControlFile
    - errcode_for_file_access
    - BootStrapMultiXact
    - SetCommitTsLimit
    - INIT_CRC32C
    - close
    - pgstat_report_wait_start
    - XLogFileInit
    - AdvanceOldestClogXid
    linkageType: ''
    returnType: void
    signature: void BootStrapXLOG(uint32 data_checksum_version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/access/transam/xlog.c:5619,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/access/transam/xlog.c:5621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tnow
    - buf
    - bufsize
    argTypes:
    - pg_time_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5624
      start: 5616
    functionDepth: 3
    functionLinenumber: 5616
    functionLinenumberEnd: 5624
    functionName: str_time
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - pg_localtime
    - pg_strftime
    linkageType: ''
    returnType: char
    signature: 'char *

      str_time(pg_time_t tnow, char *buf, size_t bufsize)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5637,1
    - Dst: UpdateMinRecoveryPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:5642,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5650,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5651,1
    - Dst: XLogFileCopy
      Src: /src/postgres/src/backend/access/transam/xlog.c:5668,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5669,1
    - Dst: XLogFileInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5679,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:5681,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:5685,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5687,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:5688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5689,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:5697,1
    - Dst: XLogArchiveCleanup
      Src: /src/postgres/src/backend/access/transam/xlog.c:5698,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - endTLI
    - endOfLog
    - newTLI
    argTypes:
    - TimeLineID
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5699
      start: 5629
    functionDepth: 8
    functionLinenumber: 5629
    functionLinenumberEnd: 5699
    functionName: XLogInitNewTimeline
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errcode_for_file_access
    - XLogSegmentOffset
    - Assert
    - XLogFileCopy
    - ereport
    - UpdateMinRecoveryPoint
    - XLogArchiveCleanup
    - XLByteToPrevSeg
    - errmsg
    - close
    - XLogFileName
    - XLogFileInit
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: void XLogInitNewTimeline(TimeLineID endTLI, XLogRecPtr endOfLog, TimeLineID
      newTLI)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:5711,1
    - Dst: ExecuteRecoveryCommand
      Src: /src/postgres/src/backend/access/transam/xlog.c:5712,1
    - Dst: RemoveNonParentXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:5725,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5754,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:5755,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5760,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:5761,1
    - Dst: XLogArchiveIsReadyOrDone
      Src: /src/postgres/src/backend/access/transam/xlog.c:5763,1
    - Dst: WaitForWalSummarization
      Src: /src/postgres/src/backend/access/transam/xlog.c:5774,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:5776,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:5777,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:5778,1
    - Dst: XLogArchiveCleanup
      Src: /src/postgres/src/backend/access/transam/xlog.c:5784,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:5786,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/xlog.c:5787,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - EndOfLogTLI
    - EndOfLog
    - newTLI
    argTypes:
    - TimeLineID
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5790
      start: 5704
    functionDepth: 3
    functionLinenumber: 5704
    functionLinenumberEnd: 5790
    functionName: CleanupAfterArchiveRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogArchivingActive
    - XLogSegmentOffset
    - strcmp
    - XLogArchiveNotify
    - XLogArchiveCleanup
    - XLByteToPrevSeg
    - XLogFilePath
    - durable_rename
    - RemoveNonParentXlogFiles
    - ExecuteRecoveryCommand
    - XLogFileName
    - XLogArchiveIsReadyOrDone
    - WaitForWalSummarization
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void CleanupAfterArchiveRecovery(TimeLineID EndOfLogTLI, XLogRecPtr
      EndOfLog,\n\t\t\t\t\t\t\tTimeLineID newTLI)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5809,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:5810,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5811,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:5812,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:5813,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5823,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5826,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5829,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5832,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5835,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5839
      start: 5800
    functionDepth: 1
    functionLinenumber: 5800
    functionLinenumberEnd: 5839
    functionName: CheckRequiredParameterValues
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - RecoveryRequiresIntParameter
    - errhint
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: void CheckRequiredParameterValues(void)
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5868,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5869,1
    - Dst: XRecOffIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5876,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5877,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:5878,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5879,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5889,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5890,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5891,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5896,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5897,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5898,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5903,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5904,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5905,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5910,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5911,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5912,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:5914,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5919,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5920,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5921,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:5923,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5928,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5929,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5930,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5935,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:5936,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5937,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:5943,1
    - Dst: ValidateXLOGDirectoryStructure
      Src: /src/postgres/src/backend/access/transam/xlog.c:5951,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/transam/xlog.c:5954,1
    - Dst: RegisterTimeout
      Src: /src/postgres/src/backend/access/transam/xlog.c:5955,1
    - Dst: RemoveTempXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:5975,1
    - Dst: SyncDataDirectory
      Src: /src/postgres/src/backend/access/transam/xlog.c:5976,1
    - Dst: InitWalRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:5990,1
    - Dst: MultiXactSetNextMXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:5998,1
    - Dst: AdvanceOldestClogXid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5999,1
    - Dst: SetTransactionIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:6000,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:6001,1
    - Dst: SetCommitTsLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:6002,1
    - Dst: RelationCacheInitFileRemove
      Src: /src/postgres/src/backend/access/transam/xlog.c:6017,1
    - Dst: StartupReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:6023,1
    - Dst: StartupLogicalDecodingStatus
      Src: /src/postgres/src/backend/access/transam/xlog.c:6029,1
    - Dst: StartupReorderBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:6035,1
    - Dst: StartupCLOG
      Src: /src/postgres/src/backend/access/transam/xlog.c:6041,1
    - Dst: StartupMultiXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:6047,1
    - Dst: StartupCommitTs
      Src: /src/postgres/src/backend/access/transam/xlog.c:6056,1
    - Dst: StartupReplicationOrigin
      Src: /src/postgres/src/backend/access/transam/xlog.c:6061,1
    - Dst: pg_atomic_write_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6069,1
    - Dst: pg_atomic_write_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6072,1
    - Dst: restoreTimeLineHistoryFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:6087,1
    - Dst: restoreTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/xlog.c:6097,1
    - Dst: pgstat_discard_stats
      Src: /src/postgres/src/backend/access/transam/xlog.c:6111,1
    - Dst: pgstat_restore_stats
      Src: /src/postgres/src/backend/access/transam/xlog.c:6113,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6124,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6129,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:6139,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:6151,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:6152,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:6164,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:6165,1
    - Dst: CheckRequiredParameterValues
      Src: /src/postgres/src/backend/access/transam/xlog.c:6190,1
    - Dst: ResetUnloggedRelations
      Src: /src/postgres/src/backend/access/transam/xlog.c:6198,1
    - Dst: DeleteAllExportedSnapshotFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:6204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6217,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:6218,1
    - Dst: InitRecoveryTransactionEnvironment
      Src: /src/postgres/src/backend/access/transam/xlog.c:6220,1
    - Dst: PrescanPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:6223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6226,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6226,1
    - Dst: ProcArrayInitRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6229,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:6229,1
    - Dst: StartupSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:6236,1
    - Dst: StandbyRecoverPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:6250,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:6261,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:6263,1
    - Dst: TransactionIdRetreat
      Src: /src/postgres/src/backend/access/transam/xlog.c:6264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6265,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/xlog.c:6265,1
    - Dst: ProcArrayApplyRecoveryInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:6269,1
    - Dst: PerformWalRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6276,1
    - Dst: FinishWalRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6285,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:6295,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6317,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6328,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:6329,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6330,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:6331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:6334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6335,1
    - Dst: ResetUnloggedRelations
      Src: /src/postgres/src/backend/access/transam/xlog.c:6347,1
    - Dst: PrescanPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:6354,1
    - Dst: SetInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:6360,1
    - Dst: findNewestTimeLine
      Src: /src/postgres/src/backend/access/transam/xlog.c:6379,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6380,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6381,1
    - Dst: XLogInitNewTimeline
      Src: /src/postgres/src/backend/access/transam/xlog.c:6388,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:6395,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:6398,1
    - Dst: writeTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlog.c:6410,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6414,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6418,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6421,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6438,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6439,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6439,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:6449,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:6450,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:6463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6465,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:6469,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:6470,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6472,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6490,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6491,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6492,1
    - Dst: PreallocXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:6499,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:6507,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6511,1
    - Dst: FullTransactionIdRetreat
      Src: /src/postgres/src/backend/access/transam/xlog.c:6513,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6514,1
    - Dst: StartupSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:6521,1
    - Dst: TrimCLOG
      Src: /src/postgres/src/backend/access/transam/xlog.c:6526,1
    - Dst: TrimMultiXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:6527,1
    - Dst: RecoverPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:6534,1
    - Dst: ShutdownWalRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6537,1
    - Dst: LocalSetXLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xlog.c:6540,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6545,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6545,1
    - Dst: CreateOverwriteContrecordRecord
      Src: /src/postgres/src/backend/access/transam/xlog.c:6546,1
    - Dst: UpdateFullPageWrites
      Src: /src/postgres/src/backend/access/transam/xlog.c:6555,1
    - Dst: PerformRecoveryXLogAction
      Src: /src/postgres/src/backend/access/transam/xlog.c:6561,1
    - Dst: XLogReportParameters
      Src: /src/postgres/src/backend/access/transam/xlog.c:6567,1
    - Dst: CleanupAfterArchiveRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6571,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/transam/xlog.c:6573,1
    - Dst: CompleteCommitTsInitialization
      Src: /src/postgres/src/backend/access/transam/xlog.c:6579,1
    - Dst: UpdateLogicalDecodingStatusEndOfRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6585,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:6589,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:6590,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:6591,1
    - Dst: XLogChecksums
      Src: /src/postgres/src/backend/access/transam/xlog.c:6606,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6608,1
    - Dst: SetLocalDataChecksumState
      Src: /src/postgres/src/backend/access/transam/xlog.c:6610,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6611,1
    - Dst: EmitAndWaitDataChecksumsBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:6613,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6614,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6615,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:6616,1
    - Dst: XLogChecksums
      Src: /src/postgres/src/backend/access/transam/xlog.c:6627,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6629,1
    - Dst: SetLocalDataChecksumState
      Src: /src/postgres/src/backend/access/transam/xlog.c:6631,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6632,1
    - Dst: EmitAndWaitDataChecksumsBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:6634,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6652,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6655,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6658,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:6660,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6661,1
    - Dst: WakeupCheckpointer
      Src: /src/postgres/src/backend/access/transam/xlog.c:6667,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/access/transam/xlog.c:6673,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/access/transam/xlog.c:6674,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/access/transam/xlog.c:6675,1
    - Dst: ShutdownRecoveryTransactionEnvironment
      Src: /src/postgres/src/backend/access/transam/xlog.c:6687,1
    - Dst: WalSndWakeup
      Src: /src/postgres/src/backend/access/transam/xlog.c:6693,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:6702,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 248
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6703
      start: 5844
    functionDepth: 9
    functionLinenumber: 5844
    functionLinenumberEnd: 6703
    functionName: StartupXLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errhint
    - SetMultiXactIdLimit
    - StartupMultiXact
    - XLogRecPtrIsValid
    - SetInstallXLogFileSegmentActive
    - CompleteCommitTsInitialization
    - pfree
    - InitRecoveryTransactionEnvironment
    - StandbyRecoverPreparedTransactions
    - ShutdownRecoveryTransactionEnvironment
    - time
    - restoreTwoPhaseData
    - CleanupAfterArchiveRecovery
    - StartupCLOG
    - XLogRecPtrToBytePos
    - XLogRecPtrToBufIdx
    - SetTransactionIdLimit
    - restoreTimeLineHistoryFiles
    - TransactionIdRetreat
    - FullTransactionIdRetreat
    - memset
    - ValidateXLOGDirectoryStructure
    - StartupLogicalDecodingStatus
    - SetCommitTsLimit
    - ResetUnloggedRelations
    - LWLockRelease
    - XLogInitNewTimeline
    - AdvanceOldestClogXid
    - set_ps_display
    - pgstat_discard_stats
    - durable_rename
    - ShutdownWalRecovery
    - RegisterTimeout
    - MultiXactSetNextMXact
    - WaitLSNWakeup
    - Assert
    - WalSndWakeup
    - PrescanPreparedTransactions
    - pg_atomic_write_u64
    - ProcArrayApplyRecoveryInfo
    - errmsg
    - DeleteAllExportedSnapshotFiles
    - ProcArrayInitRecovery
    - errmsg_internal
    - ereport
    - writeTimeLineHistory
    - RelationCacheInitFileRemove
    - SyncDataDirectory
    - FinishWalRecovery
    - CreateOverwriteContrecordRecord
    - errcode
    - WakeupCheckpointer
    - InitWalRecovery
    - CheckRequiredParameterValues
    - XLogChecksums
    - str_time
    - pg_atomic_write_membarrier_u64
    - RequestCheckpoint
    - EmitAndWaitDataChecksumsBarrier
    - SpinLockRelease
    - LocalSetXLogInsertAllowed
    - StartupCommitTs
    - UpdateLogicalDecodingStatusEndOfRecovery
    - PerformWalRecovery
    - pg_usleep
    - RecoverPreparedTransactions
    - PreallocXlogFiles
    - TransactionIdIsNormal
    - durable_unlink
    - UpdateFullPageWrites
    - TransactionIdIsValid
    - LWLockAcquire
    - StartupReplicationOrigin
    - StartupSUBTRANS
    - TrimMultiXact
    - findNewestTimeLine
    - StartupReplicationSlots
    - pgstat_restore_stats
    - memcpy
    - XidFromFullTransactionId
    - RemoveTempXlogFiles
    - TrimCLOG
    - XRecOffIsValid
    - IsBootstrapProcessingMode
    - XLogReportParameters
    - INJECTION_POINT
    - UpdateControlFile
    - unlink
    - SetLocalDataChecksumState
    - PerformRecoveryXLogAction
    - StartupReorderBuffer
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void StartupXLOG(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6713,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:6730,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6736,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6738,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6740,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - EndRecPtr
    - replayTLI
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6741
      start: 6709
    functionDepth: 3
    functionLinenumber: 6709
    functionLinenumberEnd: 6741
    functionName: SwitchIntoArchiveRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - UpdateControlFile
    - SpinLockRelease
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void SwitchIntoArchiveRecovery(XLogRecPtr EndRecPtr, TimeLineID replayTLI)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6758,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:6769,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - EndRecPtr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6772
      start: 6747
    functionDepth: 3
    functionLinenumber: 6747
    functionLinenumberEnd: 6772
    functionName: ReachedEndOfBackup
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - UpdateControlFile
    linkageType: ''
    returnType: void
    signature: void ReachedEndOfBackup(XLogRecPtr EndRecPtr, TimeLineID tli)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PromoteIsTriggered
      Src: /src/postgres/src/backend/access/transam/xlog.c:6803,1
    - Dst: CreateEndOfRecoveryRecord
      Src: /src/postgres/src/backend/access/transam/xlog.c:6816,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:6820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6826
      start: 6784
    functionDepth: 1
    functionLinenumber: 6784
    functionLinenumberEnd: 6826
    functionName: PerformRecoveryXLogAction
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - RequestCheckpoint
    - CreateEndOfRecoveryRecord
    - PromoteIsTriggered
    linkageType: ''
    returnType: bool
    signature: bool PerformRecoveryXLogAction(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6862
      start: 6834
    functionDepth: 0
    functionLinenumber: 6834
    functionLinenumberEnd: 6862
    functionName: RecoveryInProgress
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RecoveryInProgress(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6875,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6880
      start: 6870
    functionDepth: 2
    functionLinenumber: 6870
    functionLinenumberEnd: 6880
    functionName: GetRecoveryState
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: RecoveryState
    signature: RecoveryState GetRecoveryState(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:6903,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6912
      start: 6889
    functionDepth: 1
    functionLinenumber: 6889
    functionLinenumberEnd: 6912
    functionName: XLogInsertAllowed
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 4
    functionsReached:
    - RecoveryInProgress
    linkageType: ''
    returnType: bool
    signature: bool XLogInsertAllowed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6930
      start: 6922
    functionDepth: 0
    functionLinenumber: 6922
    functionLinenumberEnd: 6930
    functionName: LocalSetXLogInsertAllowed
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int LocalSetXLogInsertAllowed(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6948,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6956
      start: 6937
    functionDepth: 2
    functionLinenumber: 6937
    functionLinenumberEnd: 6956
    functionName: GetRedoRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetRedoRecPtr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - RedoRecPtr_p
    - doPageWrites_p
    argTypes:
    - XLogRecPtr*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6972
      start: 6967
    functionDepth: 0
    functionLinenumber: 6967
    functionLinenumberEnd: 6972
    functionName: GetFullPageWriteInfo
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GetFullPageWriteInfo(XLogRecPtr *RedoRecPtr_p, bool *doPageWrites_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6987,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6989,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6992
      start: 6982
    functionDepth: 2
    functionLinenumber: 6982
    functionLinenumberEnd: 6992
    functionName: GetInsertRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetInsertRecPtr(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7002,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:7004,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - insertTLI
    argTypes:
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7014
      start: 6999
    functionDepth: 1
    functionLinenumber: 6999
    functionLinenumberEnd: 7014
    functionName: GetFlushRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - RefreshXLogWriteResult
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetFlushRecPtr(TimeLineID *insertTLI)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7027
      start: 7020
    functionDepth: 1
    functionLinenumber: 7020
    functionLinenumberEnd: 7027
    functionName: GetWALInsertionTimeLine
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: TimeLineID
    signature: TimeLineID GetWALInsertionTimeLine(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7041,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7046
      start: 7036
    functionDepth: 2
    functionLinenumber: 7036
    functionLinenumberEnd: 7046
    functionName: GetWALInsertionTimeLineIfSet
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: TimeLineID
    signature: TimeLineID GetWALInsertionTimeLineIfSet(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7071,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7073,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7080
      start: 7056
    functionDepth: 1
    functionLinenumber: 7056
    functionLinenumberEnd: 7080
    functionName: GetLastImportantRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetLastImportantRecPtr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7091,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7094,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - lastSwitchLSN
    argTypes:
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7097
      start: 7085
    functionDepth: 1
    functionLinenumber: 7085
    functionLinenumberEnd: 7097
    functionName: GetLastSegSwitchData
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: pg_time_t
    signature: pg_time_t GetLastSegSwitchData(XLogRecPtr *lastSwitchLSN)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7110,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7115,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7116,1
    - Dst: WalSndInitStopping
      Src: /src/postgres/src/backend/access/transam/xlog.c:7121,1
    - Dst: WalSndWaitStopping
      Src: /src/postgres/src/backend/access/transam/xlog.c:7127,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7129,1
    - Dst: CreateRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:7130,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7139,1
    - Dst: RequestXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlog.c:7140,1
    - Dst: CreateCheckPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:7142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7144
      start: 7102
    functionDepth: 1
    functionLinenumber: 7102
    functionLinenumberEnd: 7144
    functionName: ShutdownXLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogArchivingActive
    - CreateRestartPoint
    - Assert
    - RequestXLogSwitch
    - ereport
    - errmsg
    - CreateCheckPoint
    - WalSndWaitStopping
    - RecoveryInProgress
    - WalSndInitStopping
    linkageType: ''
    returnType: void
    signature: void ShutdownXLOG(int code, Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:7155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7166
      start: 7150
    functionDepth: 0
    functionLinenumber: 7150
    functionLinenumberEnd: 7166
    functionName: CheckpointFlagsString
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      CheckpointFlagsString(int flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7175,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7177,1
    - Dst: CheckpointFlagsString
      Src: /src/postgres/src/backend/access/transam/xlog.c:7178,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7180,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7182,1
    - Dst: CheckpointFlagsString
      Src: /src/postgres/src/backend/access/transam/xlog.c:7183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - flags
    - restartpoint
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7184
      start: 7171
    functionDepth: 1
    functionLinenumber: 7171
    functionLinenumberEnd: 7184
    functionName: LogCheckpointStart
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - CheckpointFlagsString
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void LogCheckpointStart(int flags, bool restartpoint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7199,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlog.c:7201,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlog.c:7204,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlog.c:7218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7240,1
    - Dst: CheckpointFlagsString
      Src: /src/postgres/src/backend/access/transam/xlog.c:7246,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7261,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7262,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7264,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7265,1
    - Dst: CheckpointFlagsString
      Src: /src/postgres/src/backend/access/transam/xlog.c:7271,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7286,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - restartpoint
    - flags
    argTypes:
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7288
      start: 7189
    functionDepth: 1
    functionLinenumber: 7189
    functionLinenumberEnd: 7288
    functionName: LogCheckpointEnd
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - CheckpointFlagsString
    - ereport
    - TimestampDifferenceMilliseconds
    - errmsg
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void LogCheckpointEnd(bool restartpoint, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - nbytes
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7327
      start: 7296
    functionDepth: 0
    functionLinenumber: 7296
    functionLinenumberEnd: 7327
    functionName: UpdateCheckPointDistanceEstimate
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UpdateCheckPointDistanceEstimate(uint64 nbytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:7348,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:7353,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:7357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - flags
    - restartpoint
    - reset
    argTypes:
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7359
      start: 7334
    functionDepth: 2
    functionLinenumber: 7334
    functionLinenumberEnd: 7359
    functionName: update_checkpoint_display
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - set_ps_display
    - snprintf
    linkageType: ''
    returnType: void
    signature: void update_checkpoint_display(int flags, bool restartpoint, bool reset)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7424,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7425,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:7434,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7435,1
    - Dst: SyncPreCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:7443,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/transam/xlog.c:7446,1
    - Dst: INJECTION_POINT_LOAD
      Src: /src/postgres/src/backend/access/transam/xlog.c:7447,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7452,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7456,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:7458,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7459,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:7463,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:7464,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7471,1
    - Dst: GetOldestActiveTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:7472,1
    - Dst: GetLastImportantRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:7480,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7492,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7493,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:7494,1
    - Dst: LocalSetXLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xlog.c:7505,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7516,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7525,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7527,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:7531,1
    - Dst: INSERT_FREESPACE
      Src: /src/postgres/src/backend/access/transam/xlog.c:7539,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:7542,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7568,1
    - Dst: WALInsertLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7583,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7585,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7587,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7588,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7591,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:7592,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7593,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7605,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7607,1
    - Dst: LogCheckpointStart
      Src: /src/postgres/src/backend/access/transam/xlog.c:7614,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/access/transam/xlog.c:7616,1
    - Dst: update_checkpoint_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:7619,1
    - Dst: TRACE_POSTGRESQL_CHECKPOINT_START
      Src: /src/postgres/src/backend/access/transam/xlog.c:7621,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7631,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7635,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7637,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7640,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7642,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7646,1
    - Dst: IsLogicalDecodingEnabled
      Src: /src/postgres/src/backend/access/transam/xlog.c:7648,1
    - Dst: MultiXactGetCheckptMulti
      Src: /src/postgres/src/backend/access/transam/xlog.c:7650,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7664,1
    - Dst: GetVirtualXIDsDelayingChkpt
      Src: /src/postgres/src/backend/access/transam/xlog.c:7695,1
    - Dst: AbsorbSyncRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:7705,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:7707,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:7708,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:7709,1
    - Dst: HaveVirtualXIDsDelayingChkpt
      Src: /src/postgres/src/backend/access/transam/xlog.c:7710,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:7713,1
    - Dst: CheckPointGuts
      Src: /src/postgres/src/backend/access/transam/xlog.c:7715,1
    - Dst: GetVirtualXIDsDelayingChkpt
      Src: /src/postgres/src/backend/access/transam/xlog.c:7717,1
    - Dst: AbsorbSyncRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:7722,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:7724,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:7725,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:7726,1
    - Dst: HaveVirtualXIDsDelayingChkpt
      Src: /src/postgres/src/backend/access/transam/xlog.c:7727,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:7730,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7740,1
    - Dst: LogStandbySnapshot
      Src: /src/postgres/src/backend/access/transam/xlog.c:7741,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7743,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7748,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:7749,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7750,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:7754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7776,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7777,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7788,1
    - Dst: pg_atomic_read_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:7802,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:7804,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7805,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7811,1
    - Dst: WakeupWalSummarizer
      Src: /src/postgres/src/backend/access/transam/xlog.c:7830,1
    - Dst: SyncPostCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:7835,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:7841,1
    - Dst: UpdateCheckPointDistanceEstimate
      Src: /src/postgres/src/backend/access/transam/xlog.c:7842,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/transam/xlog.c:7844,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7850,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7851,1
    - Dst: InvalidateObsoleteReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:7852,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7860,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7861,1
    - Dst: RemoveOldXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:7864,1
    - Dst: PreallocXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:7872,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7881,1
    - Dst: TruncateSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7882,1
    - Dst: GetOldestTransactionIdConsideredRunning
      Src: /src/postgres/src/backend/access/transam/xlog.c:7882,1
    - Dst: LogCheckpointEnd
      Src: /src/postgres/src/backend/access/transam/xlog.c:7885,1
    - Dst: update_checkpoint_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:7888,1
    - Dst: TRACE_POSTGRESQL_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/xlog.c:7890,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 159
    argCount: 1
    argNames:
    - flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7897
      start: 7399
    functionDepth: 8
    functionLinenumber: 7399
    functionLinenumberEnd: 7897
    functionName: CreateCheckPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - WakeupWalSummarizer
    - XLogInsert
    - LWLockAcquire
    - XLogRegisterData
    - SyncPostCheckpoint
    - SyncPreCheckpoint
    - LogStandbySnapshot
    - GetLastImportantRecPtr
    - RemoveOldXlogFiles
    - LogCheckpointStart
    - RecoveryInProgress
    - update_checkpoint_display
    - AbsorbSyncRequests
    - XLByteToSeg
    - elog
    - XLogStandbyInfoActive
    - XLogRecPtrIsValid
    - GetOldestActiveTransactionId
    - KeepLogSeg
    - XLogBeginInsert
    - pfree
    - CheckPointGuts
    - pgstat_report_wait_end
    - WALInsertLockAcquire
    - time
    - SpinLockRelease
    - errmsg
    - HaveVirtualXIDsDelayingChkpt
    - LocalSetXLogInsertAllowed
    - pg_atomic_read_membarrier_u64
    - GetVirtualXIDsDelayingChkpt
    - GetCurrentTimestamp
    - XLogSegmentOffset
    - errmsg_internal
    - TRACE_POSTGRESQL_CHECKPOINT_START
    - TRACE_POSTGRESQL_CHECKPOINT_DONE
    - ereport
    - pgstat_report_wait_start
    - IsLogicalDecodingEnabled
    - MemSet
    - INJECTION_POINT_CACHED
    - XLogBytePosToRecPtr
    - pg_usleep
    - MultiXactGetCheckptMulti
    - LogCheckpointEnd
    - INJECTION_POINT
    - INJECTION_POINT_LOAD
    - InvalidateObsoleteReplicationSlots
    - UpdateControlFile
    - PreallocXlogFiles
    - GetOldestTransactionIdConsideredRunning
    - WALInsertLockRelease
    - START_CRIT_SECTION
    - XLogFlush
    - UpdateCheckPointDistanceEstimate
    - TruncateSUBTRANS
    - LWLockRelease
    - WALInsertLockAcquireExclusive
    - SpinLockAcquire
    - INSERT_FREESPACE
    - END_CRIT_SECTION
    linkageType: ''
    returnType: bool
    signature: bool CreateCheckPoint(int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7914,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7915,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7917,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7920,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7923,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7925,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7927,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:7928,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7929,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:7931,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7937,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7942,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7944,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:7946,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7947,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7950
      start: 7907
    functionDepth: 5
    functionLinenumber: 7907
    functionLinenumberEnd: 7950
    functionName: CreateEndOfRecoveryRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - XLogInsert
    - SpinLockAcquire
    - LWLockAcquire
    - UpdateControlFile
    - XLogBeginInsert
    - WALInsertLockRelease
    - START_CRIT_SECTION
    - XLogFlush
    - XLogRegisterData
    - SpinLockRelease
    - WALInsertLockAcquireExclusive
    - LWLockRelease
    - RecoveryInProgress
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void CreateEndOfRecoveryRecord(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7988,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7989,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7991,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7992,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:7996,1
    - Dst: GetXLogInsertRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8000,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:8002,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8003,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:8005,1
    - Dst: WALInsertLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8014,1
    - Dst: GetXLogBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:8015,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8017,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8024,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:8026,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8027,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8028,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:8032,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8033,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:8035,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:8037,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - aborted_lsn
    - pagePtr
    - newTLI
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8040
      start: 7978
    functionDepth: 5
    functionLinenumber: 7978
    functionLinenumberEnd: 8040
    functionName: CreateOverwriteContrecordRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - XLogSegmentOffset
    - XLogInsert
    - XLogBeginInsert
    - WALInsertLockRelease
    - START_CRIT_SECTION
    - XLogFlush
    - XLogRegisterData
    - WALInsertLockAcquire
    - GetXLogBuffer
    - GetXLogInsertRecPtr
    - RecoveryInProgress
    - END_CRIT_SECTION
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr CreateOverwriteContrecordRecord(XLogRecPtr aborted_lsn,
      XLogRecPtr pagePtr,\n\t\t\t\t\t\t\t\tTimeLineID newTLI)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckPointRelationMap
      Src: /src/postgres/src/backend/access/transam/xlog.c:8051,1
    - Dst: CheckPointReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:8052,1
    - Dst: CheckPointSnapBuild
      Src: /src/postgres/src/backend/access/transam/xlog.c:8053,1
    - Dst: CheckPointLogicalRewriteHeap
      Src: /src/postgres/src/backend/access/transam/xlog.c:8054,1
    - Dst: CheckPointReplicationOrigin
      Src: /src/postgres/src/backend/access/transam/xlog.c:8055,1
    - Dst: TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START
      Src: /src/postgres/src/backend/access/transam/xlog.c:8058,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:8059,1
    - Dst: CheckPointCLOG
      Src: /src/postgres/src/backend/access/transam/xlog.c:8060,1
    - Dst: CheckPointCommitTs
      Src: /src/postgres/src/backend/access/transam/xlog.c:8061,1
    - Dst: CheckPointSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8062,1
    - Dst: CheckPointMultiXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:8063,1
    - Dst: CheckPointPredicate
      Src: /src/postgres/src/backend/access/transam/xlog.c:8064,1
    - Dst: CheckPointBuffers
      Src: /src/postgres/src/backend/access/transam/xlog.c:8065,1
    - Dst: TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START
      Src: /src/postgres/src/backend/access/transam/xlog.c:8068,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:8069,1
    - Dst: ProcessSyncRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:8070,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:8071,1
    - Dst: TRACE_POSTGRESQL_BUFFER_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/xlog.c:8072,1
    - Dst: CheckPointTwoPhase
      Src: /src/postgres/src/backend/access/transam/xlog.c:8075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - checkPointRedo
    - flags
    argTypes:
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8076
      start: 8048
    functionDepth: 4
    functionLinenumber: 8048
    functionLinenumberEnd: 8076
    functionName: CheckPointGuts
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - CheckPointSnapBuild
    - GetCurrentTimestamp
    - TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START
    - CheckPointLogicalRewriteHeap
    - CheckPointTwoPhase
    - CheckPointSUBTRANS
    - CheckPointPredicate
    - CheckPointBuffers
    - CheckPointRelationMap
    - CheckPointMultiXact
    - CheckPointReplicationSlots
    - CheckPointCommitTs
    - TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START
    - ProcessSyncRequests
    - CheckPointCLOG
    - CheckPointReplicationOrigin
    - TRACE_POSTGRESQL_BUFFER_CHECKPOINT_DONE
    linkageType: ''
    returnType: void
    signature: void CheckPointGuts(XLogRecPtr checkPointRedo, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogHaveInvalidPages
      Src: /src/postgres/src/backend/access/transam/xlog.c:8098,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:8100,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8102,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8110,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - checkPoint
    - record
    argTypes:
    - CheckPoint*
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8115
      start: 8088
    functionDepth: 2
    functionLinenumber: 8088
    functionLinenumberEnd: 8115
    functionName: RecoveryRestartPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - elog
    - SpinLockRelease
    - XLogHaveInvalidPages
    - SpinLockAcquire
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void RecoveryRestartPoint(const CheckPoint *checkPoint, XLogReaderState
      *record)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8143,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8146,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8150,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:8156,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8158,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:8159,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8177,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8180,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:8181,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8182,1
    - Dst: UpdateMinRecoveryPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:8184,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8187,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:8189,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8190,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:8204,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8206,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8209,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8211,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:8220,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:8221,1
    - Dst: LogCheckpointStart
      Src: /src/postgres/src/backend/access/transam/xlog.c:8224,1
    - Dst: update_checkpoint_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:8227,1
    - Dst: CheckPointGuts
      Src: /src/postgres/src/backend/access/transam/xlog.c:8229,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/transam/xlog.c:8235,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8249,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:8291,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8293,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8299,1
    - Dst: UpdateCheckPointDistanceEstimate
      Src: /src/postgres/src/backend/access/transam/xlog.c:8300,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8306,1
    - Dst: GetWalRcvFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8312,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8313,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8315,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/transam/xlog.c:8317,1
    - Dst: InvalidateObsoleteReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:8319,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8327,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8328,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:8344,1
    - Dst: RemoveOldXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:8347,1
    - Dst: PreallocXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:8353,1
    - Dst: TruncateSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8363,1
    - Dst: GetOldestTransactionIdConsideredRunning
      Src: /src/postgres/src/backend/access/transam/xlog.c:8363,1
    - Dst: LogCheckpointEnd
      Src: /src/postgres/src/backend/access/transam/xlog.c:8366,1
    - Dst: update_checkpoint_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:8369,1
    - Dst: GetLatestXTime
      Src: /src/postgres/src/backend/access/transam/xlog.c:8371,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8373,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8374,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:8375,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlog.c:8376,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:8381,1
    - Dst: ExecuteRecoveryCommand
      Src: /src/postgres/src/backend/access/transam/xlog.c:8382,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 80
    argCount: 1
    argNames:
    - flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8388
      start: 8128
    functionDepth: 8
    functionLinenumber: 8128
    functionLinenumberEnd: 8388
    functionName: CreateRestartPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - strcmp
    - GetXLogReplayRecPtr
    - RemoveOldXlogFiles
    - update_checkpoint_display
    - RecoveryInProgress
    - LogCheckpointStart
    - LSN_FORMAT_ARGS
    - XLByteToSeg
    - KeepLogSeg
    - XLogRecPtrIsValid
    - errdetail
    - Assert
    - SpinLockRelease
    - errmsg
    - GetCurrentTimestamp
    - errmsg_internal
    - ereport
    - MemSet
    - ExecuteRecoveryCommand
    - UpdateMinRecoveryPoint
    - LogCheckpointEnd
    - INJECTION_POINT
    - InvalidateObsoleteReplicationSlots
    - UpdateControlFile
    - PreallocXlogFiles
    - GetOldestTransactionIdConsideredRunning
    - WALInsertLockRelease
    - GetLatestXTime
    - timestamptz_to_str
    - UpdateCheckPointDistanceEstimate
    - TruncateSUBTRANS
    - LWLockRelease
    - CheckPointGuts
    - WALInsertLockAcquireExclusive
    - SpinLockAcquire
    - GetWalRcvFlushRecPtr
    linkageType: ''
    returnType: bool
    signature: bool CreateRestartPoint(int flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8427,1
    - Dst: GetXLogWriteRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8435,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8436,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8437,1
    - Dst: XLogGetLastRemovedSegno
      Src: /src/postgres/src/backend/access/transam/xlog.c:8444,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8447,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:8448,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8456,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - targetLSN
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8478
      start: 8413
    functionDepth: 3
    functionLinenumber: 8413
    functionLinenumberEnd: 8478
    functionName: GetWALAvailability
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - KeepLogSeg
    - XLogRecPtrIsValid
    - GetXLogWriteRecPtr
    - XLogGetLastRemovedSegno
    - ConvertToXSegs
    - XLByteToSeg
    linkageType: ''
    returnType: WALAvailability
    signature: WALAvailability GetWALAvailability(XLogRecPtr targetLSN)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8504,1
    - Dst: XLogGetReplicationSlotMinimumLSN
      Src: /src/postgres/src/backend/access/transam/xlog.c:8508,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8509,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8511,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:8524,1
    - Dst: GetOldestUnsummarizedLSN
      Src: /src/postgres/src/backend/access/transam/xlog.c:8535,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8536,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8540,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:8550,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - recptr
    - logSegNo
    argTypes:
    - XLogRecPtr
    - XLogSegNo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8564
      start: 8497
    functionDepth: 3
    functionLinenumber: 8497
    functionLinenumberEnd: 8564
    functionName: KeepLogSeg
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 3
    functionsReached:
    - XLogRecPtrIsValid
    - GetOldestUnsummarizedLSN
    - ConvertToXSegs
    - XLogGetReplicationSlotMinimumLSN
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: void KeepLogSeg(XLogRecPtr recptr, XLogSegNo *logSegNo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8572,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8573,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nextOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8594
      start: 8569
    functionDepth: 1
    functionLinenumber: 8569
    functionLinenumberEnd: 8594
    functionName: XLogPutNextOid
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void XLogPutNextOid(Oid nextOid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8612,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/transam/xlog.c:8615,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - mark_unimportant
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8619
      start: 8606
    functionDepth: 1
    functionLinenumber: 8606
    functionLinenumberEnd: 8619
    functionName: RequestXLogSwitch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogSetRecordFlags
    - XLogInsert
    - XLogBeginInsert
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr RequestXLogSwitch(bool mark_unimportant)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:8630,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8631,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8633,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8634,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8636,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8638,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8639,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - rpName
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8643
      start: 8624
    functionDepth: 1
    functionLinenumber: 8624
    functionLinenumberEnd: 8643
    functionName: XLogRestorePoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - strlcpy
    - XLogInsert
    - XLogBeginInsert
    - ereport
    - XLogRegisterData
    - errmsg
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogRestorePoint(const char *rpName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8663,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/transam/xlog.c:8664,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8665,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8667
      start: 8654
    functionDepth: 1
    functionLinenumber: 8654
    functionLinenumberEnd: 8667
    functionName: XLogAssignLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogSetRecordFlags
    - XLogInsert
    - XLogRegisterData
    - XLogBeginInsert
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogAssignLSN(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:8692,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8706,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8707,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8709,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:8710,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8713,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:8723,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8725,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8727
      start: 8673
    functionDepth: 5
    functionLinenumber: 8673
    functionLinenumberEnd: 8727
    functionName: XLogReportParameters
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - LWLockAcquire
    - UpdateControlFile
    - XLogBeginInsert
    - XLogFlush
    - XLogRegisterData
    - XLogIsNeeded
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void XLogReportParameters(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8740,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8741,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8743,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:8744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - new_type
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8745
      start: 8732
    functionDepth: 5
    functionLinenumber: 8732
    functionLinenumberEnd: 8745
    functionName: XLogChecksums
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 4
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogFlush
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void XLogChecksums(uint32 new_type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:8775,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:8777,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:8788,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8790,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:8797,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8799,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8800,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8802,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:8807,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8809,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:8811,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8812
      start: 8754
    functionDepth: 2
    functionLinenumber: 8754
    functionLinenumberEnd: 8812
    functionName: UpdateFullPageWrites
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogStandbyInfoActive
    - XLogInsert
    - XLogBeginInsert
    - WALInsertLockRelease
    - START_CRIT_SECTION
    - XLogRegisterData
    - WALInsertLockAcquireExclusive
    - RecoveryInProgress
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void UpdateFullPageWrites(void)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:8826,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8833,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/xlog.c:8834,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8847,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8847,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8848,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8851,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8858,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8858,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8860,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8862,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8863,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8866,1
    - Dst: MultiXactSetNextMXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:8867,1
    - Dst: MultiXactAdvanceOldest
      Src: /src/postgres/src/backend/access/transam/xlog.c:8870,1
    - Dst: SetTransactionIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:8877,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8885,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8886,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8887,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8888,1
    - Dst: PrescanPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:8904,1
    - Dst: StandbyRecoverPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:8907,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:8918,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:8920,1
    - Dst: TransactionIdRetreat
      Src: /src/postgres/src/backend/access/transam/xlog.c:8921,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8922,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/xlog.c:8922,1
    - Dst: ProcArrayApplyRecoveryInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:8926,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8930,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:8934,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8935,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8941,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8943,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8944,1
    - Dst: RecoveryRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:8947,1
    - Dst: smgrdestroyall
      Src: /src/postgres/src/backend/access/transam/xlog.c:8955,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8962,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8962,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8964,1
    - Dst: FullTransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/xlog.c:8965,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8968,1
    - Dst: MultiXactAdvanceNextMXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:8983,1
    - Dst: MultiXactAdvanceOldest
      Src: /src/postgres/src/backend/access/transam/xlog.c:8990,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/xlog.c:8992,1
    - Dst: SetTransactionIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:8994,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8997,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8999,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:9002,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9004,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9005,1
    - Dst: RecoveryRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9008,1
    - Dst: smgrdestroyall
      Src: /src/postgres/src/backend/access/transam/xlog.c:9016,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9027,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:9027,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:9039,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9041,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9042,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/transam/xlog.c:9079,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/transam/xlog.c:9083,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:9086,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/transam/xlog.c:9090,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:9091,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:9092,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9104,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:9104,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9106,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:9128,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:9132,1
    - Dst: CommitTsParameterChange
      Src: /src/postgres/src/backend/access/transam/xlog.c:9137,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:9141,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9142,1
    - Dst: CheckRequiredParameterValues
      Src: /src/postgres/src/backend/access/transam/xlog.c:9145,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9151,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:9151,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9160,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9163,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9174,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:9174,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9176,1
    - Dst: SetLocalDataChecksumState
      Src: /src/postgres/src/backend/access/transam/xlog.c:9178,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9181,1
    - Dst: EmitAndWaitDataChecksumsBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:9184,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9190,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:9190,1
    - Dst: EnableLogicalDecoding
      Src: /src/postgres/src/backend/access/transam/xlog.c:9202,1
    - Dst: DisableLogicalDecoding
      Src: /src/postgres/src/backend/access/transam/xlog.c:9204,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:9206,1
    - Dst: InvalidateObsoleteReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:9217,1
    - Dst: kill
      Src: /src/postgres/src/backend/access/transam/xlog.c:9231,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 159
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9235
      start: 8823
    functionDepth: 3
    functionLinenumber: 8823
    functionLinenumberEnd: 9235
    functionName: xlog_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - CommitTsParameterChange
    - LWLockAcquire
    - DisableLogicalDecoding
    - XLogReadBufferForRedo
    - RecoveryRestartPoint
    - XLogRecMaxBlockId
    - CheckRequiredParameterValues
    - XLogRecGetInfo
    - FullTransactionIdPrecedes
    - MultiXactAdvanceNextMXact
    - XLogRecPtrIsValid
    - elog
    - memcpy
    - MultiXactSetNextMXact
    - Assert
    - XidFromFullTransactionId
    - StandbyRecoverPreparedTransactions
    - PrescanPreparedTransactions
    - smgrdestroyall
    - XLogRecHasBlockImage
    - ProcArrayApplyRecoveryInfo
    - errmsg
    - SpinLockRelease
    - EmitAndWaitDataChecksumsBarrier
    - EnableLogicalDecoding
    - UnlockReleaseBuffer
    - XLogRecHasAnyBlockRefs
    - MultiXactAdvanceOldest
    - SetTransactionIdLimit
    - TransactionIdRetreat
    - kill
    - ereport
    - XLogRecGetData
    - GetCurrentReplayRecPtr
    - TransactionIdPrecedes
    - InvalidateObsoleteReplicationSlots
    - UpdateControlFile
    - SetLocalDataChecksumState
    - TransactionIdIsNormal
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void xlog_redo(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:9240,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9246,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:9246,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9248,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9250,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9252,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:9254,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9255,1
    - Dst: EmitAndWaitDataChecksumsBarrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:9262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9264
      start: 9237
    functionDepth: 3
    functionLinenumber: 9237
    functionLinenumberEnd: 9264
    functionName: xlog2_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - memcpy
    - LWLockAcquire
    - UpdateControlFile
    - EmitAndWaitDataChecksumsBarrier
    - SpinLockRelease
    - LWLockRelease
    - SpinLockAcquire
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void xlog2_redo(XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: AmWalReceiverProcess
      Src: /src/postgres/src/backend/access/transam/xlog.c:9281,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:9310,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - method
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9313
      start: 9270
    functionDepth: 1
    functionLinenumber: 9270
    functionLinenumberEnd: 9313
    functionName: get_sync_bit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 3
    functionsReached:
    - elog
    - AmWalReceiverProcess
    linkageType: ''
    returnType: int
    signature: int get_sync_bit(int method)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:9331,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:9332,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:9338,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9341,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:9342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9343,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:9346,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:9347,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:9347,1
    - Dst: XLogFileClose
      Src: /src/postgres/src/backend/access/transam/xlog.c:9348,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - new_wal_sync_method
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9351
      start: 9318
    functionDepth: 3
    functionLinenumber: 9318
    functionLinenumberEnd: 9351
    functionName: assign_wal_sync_method
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - get_sync_bit
    - XLogFileClose
    - ereport
    - pgstat_report_wait_start
    - pgstat_report_wait_end
    - errmsg
    - XLogFileName
    - pg_fsync
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void assign_wal_sync_method(int new_wal_sync_method, void *extra)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9366,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:9380,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:9382,1
    - Dst: pg_fsync_no_writethrough
      Src: /src/postgres/src/backend/access/transam/xlog.c:9386,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/xlog.c:9387,1
    - Dst: pg_fsync_writethrough
      Src: /src/postgres/src/backend/access/transam/xlog.c:9391,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/xlog.c:9392,1
    - Dst: pg_fdatasync
      Src: /src/postgres/src/backend/access/transam/xlog.c:9396,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/xlog.c:9397,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9402,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9405,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9406,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:9407,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:9417,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9419,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:9420,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9421,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:9424,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:9426,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 3
    argNames:
    - fd
    - segno
    - tli
    argTypes:
    - int
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9428
      start: 9360
    functionDepth: 2
    functionLinenumber: 9360
    functionLinenumberEnd: 9428
    functionName: issue_xlog_fsync
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - errmsg_internal
    - _
    - pg_fsync_no_writethrough
    - Assert
    - errcode
    - ereport
    - XLogFileName
    - pgstat_count_io_op_time
    - pgstat_report_wait_end
    - pgstat_prepare_io_time
    - errmsg
    - pgstat_report_wait_start
    - pg_fdatasync
    - errcode_for_file_access
    - pg_fsync_writethrough
    linkageType: ''
    returnType: void
    signature: void issue_xlog_fsync(int fd, XLogSegNo segno, TimeLineID tli)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9463,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:9464,1
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:9470,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9471,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9472,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9473,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9474,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xlog.c:9476,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9477,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9478,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9479,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9482,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:9505,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9507,1
    - Dst: PG_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/access/transam/xlog.c:9514,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/transam/xlog.c:9514,1
    - Dst: RequestXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlog.c:9538,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9562,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9571,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9576,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9587,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9589,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9592,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9593,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9594,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9596,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:9622,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9628,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xlog.c:9634,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:9637,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:9638,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/access/transam/xlog.c:9659,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:9663,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/access/transam/xlog.c:9665,1
    - Dst: readlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:9672,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9675,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9676,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9682,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9683,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:9695,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/backend/access/transam/xlog.c:9696,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlog.c:9697,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:9703,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/transam/xlog.c:9707,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/transam/xlog.c:9708,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:9710,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:9712,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:9724,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlog.c:9726,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/transam/xlog.c:9734,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlog.c:9736,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/transam/xlog.c:9741,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:9743,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:9745,1
    - Dst: PG_END_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/access/transam/xlog.c:9747,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/transam/xlog.c:9747,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 90
    argCount: 5
    argNames:
    - backupidstr
    - fast
    - tablespaces
    - state
    - tblspcmapfile
    argTypes:
    - char*
    - bool
    - List**
    - BackupState*
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9755
      start: 9457
    functionDepth: 3
    functionLinenumber: 9457
    functionLinenumberEnd: 9755
    functionName: do_pg_backup_start
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - errcode
    - pstrdup
    - PG_ENSURE_ERROR_CLEANUP
    - XLogIsNeeded
    - errhint
    - RecoveryInProgress
    - strlcpy
    - Assert
    - pfree
    - FreeDir
    - RequestCheckpoint
    - get_dirent_type
    - time
    - errmsg
    - SpinLockRelease
    - palloc_object
    - ReadDir
    - appendStringInfoChar
    - strtoul
    - RequestXLogSwitch
    - ereport
    - initStringInfo
    - readlink
    - lappend
    - strlen
    - IS_DIR_SEP
    - WALInsertLockRelease
    - AllocateDir
    - appendStringInfo
    - strncmp
    - WALInsertLockAcquireExclusive
    - LWLockRelease
    - PG_END_ENSURE_ERROR_CLEANUP
    - SpinLockAcquire
    - BoolGetDatum
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void do_pg_backup_start(const char *backupidstr, bool fast, List **tablespaces,\n\t\t\t\t
      \  BackupState *state, StringInfo tblspcmapfile)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9764
      start: 9760
    functionDepth: 0
    functionLinenumber: 9760
    functionLinenumberEnd: 9764
    functionName: get_backup_status
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SessionBackupState
    signature: SessionBackupState get_backup_status(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9792,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:9794,1
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:9800,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9801,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9802,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9803,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9804,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:9813,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9819,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9833,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9840,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9841,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9842,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9843,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9883,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9885,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9888,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9889,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9890,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9892,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9898,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9901,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9910,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:9911,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9913,1
    - Dst: RequestXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlog.c:9925,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:9927,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9932,1
    - Dst: BackupHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:9933,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:9935,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9937,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:9938,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9939,1
    - Dst: build_backup_content
      Src: /src/postgres/src/backend/access/transam/xlog.c:9943,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:9944,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:9945,1
    - Dst: fflush
      Src: /src/postgres/src/backend/access/transam/xlog.c:9947,1
    - Dst: ferror
      Src: /src/postgres/src/backend/access/transam/xlog.c:9947,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:9947,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9948,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:9949,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9950,1
    - Dst: CleanupBackupHistory
      Src: /src/postgres/src/backend/access/transam/xlog.c:9959,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:9984,1
    - Dst: XLogArchivingAlways
      Src: /src/postgres/src/backend/access/transam/xlog.c:9985,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9987,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:9988,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9991,1
    - Dst: BackupHistoryFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:9992,1
    - Dst: XLogArchiveIsBusy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9998,1
    - Dst: XLogArchiveIsBusy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9999,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xlog.c:10001,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:10005,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:10006,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlog.c:10010,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlog.c:10014,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:10019,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:10020,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:10022,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:10028,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:10029,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:10032,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:10033,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 2
    argNames:
    - state
    - waitforarchive
    argTypes:
    - BackupState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10034
      start: 9779
    functionDepth: 2
    functionLinenumber: 9779
    functionLinenumberEnd: 10034
    functionName: do_pg_backup_stop
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogArchivingActive
    - XLogInsert
    - AllocateFile
    - LWLockAcquire
    - errcode
    - XLogRegisterData
    - XLogIsNeeded
    - errhint
    - RecoveryInProgress
    - FreeFile
    - XLByteToSeg
    - fprintf
    - ferror
    - XLogBeginInsert
    - Assert
    - build_backup_content
    - pfree
    - CleanupBackupHistory
    - ResetLatch
    - XLByteToPrevSeg
    - time
    - errmsg
    - SpinLockRelease
    - fflush
    - XLogFileName
    - RequestXLogSwitch
    - ereport
    - CHECK_FOR_INTERRUPTS
    - errcode_for_file_access
    - BackupHistoryFilePath
    - BackupHistoryFileName
    - WALInsertLockRelease
    - XLogArchiveIsBusy
    - WaitLatch
    - WALInsertLockAcquireExclusive
    - LWLockRelease
    - SpinLockAcquire
    - XLogArchivingAlways
    linkageType: ''
    returnType: void
    signature: void do_pg_backup_stop(BackupState *state, bool waitforarchive)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/transam/xlog.c:10056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:10059,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:10063,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:10064,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:10068,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:10071,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:10072,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10074
      start: 10053
    functionDepth: 2
    functionLinenumber: 10053
    functionLinenumberEnd: 10074
    functionName: do_pg_abort_backup
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - WALInsertLockRelease
    - ereport
    - errmsg
    - WALInsertLockAcquireExclusive
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void do_pg_abort_backup(int code, Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/access/transam/xlog.c:10087,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/transam/xlog.c:10087,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10089
      start: 10080
    functionDepth: 1
    functionLinenumber: 10080
    functionLinenumberEnd: 10089
    functionName: register_persistent_abort_backup_handler
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - before_shmem_exit
    - BoolGetDatum
    linkageType: ''
    returnType: void
    signature: void register_persistent_abort_backup_handler(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:10100,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:10102,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:10104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10105
      start: 10094
    functionDepth: 2
    functionLinenumber: 10094
    functionLinenumberEnd: 10105
    functionName: GetXLogInsertRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - XLogBytePosToRecPtr
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetXLogInsertRecPtr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:10116,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:10118,1
    - Dst: XLogBytePosToEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:10120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10121
      start: 10110
    functionDepth: 2
    functionLinenumber: 10110
    functionLinenumberEnd: 10121
    functionName: GetXLogInsertEndRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogBytePosToEndRecPtr
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetXLogInsertEndRecPtr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:10129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10132
      start: 10126
    functionDepth: 1
    functionLinenumber: 10126
    functionLinenumberEnd: 10132
    functionName: GetXLogWriteRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - RefreshXLogWriteResult
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetXLogWriteRecPtr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:10141,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:10144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - oldrecptr
    - oldtli
    argTypes:
    - XLogRecPtr*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10145
      start: 10138
    functionDepth: 1
    functionLinenumber: 10138
    functionLinenumberEnd: 10145
    functionName: GetOldestRestartPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void GetOldestRestartPoint(XLogRecPtr *oldrecptr, TimeLineID *oldtli)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:10151,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlog.c:10151,1
    - Dst: ShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlog.c:10153,1
    - Dst: ResetInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:10154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10155
      start: 10148
    functionDepth: 1
    functionLinenumber: 10148
    functionLinenumberEnd: 10155
    functionName: XLogShutdownWalRcv
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - ResetInstallXLogFileSegmentActive
    - AmStartupProcess
    - ShutdownWalRcv
    linkageType: ''
    returnType: void
    signature: void XLogShutdownWalRcv(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:10161,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:10163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10164
      start: 10158
    functionDepth: 1
    functionLinenumber: 10158
    functionLinenumberEnd: 10164
    functionName: SetInstallXLogFileSegmentActive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void SetInstallXLogFileSegmentActive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:10170,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:10172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10173
      start: 10167
    functionDepth: 1
    functionLinenumber: 10167
    functionLinenumberEnd: 10173
    functionName: ResetInstallXLogFileSegmentActive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void ResetInstallXLogFileSegmentActive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:10180,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:10182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10185
      start: 10175
    functionDepth: 1
    functionLinenumber: 10175
    functionLinenumberEnd: 10185
    functionName: IsInstallXLogFileSegmentActive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: bool
    signature: bool IsInstallXLogFileSegmentActive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:10193,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:10195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - sleeping
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10196
      start: 10190
    functionDepth: 2
    functionLinenumber: 10190
    functionLinenumberEnd: 10196
    functionName: SetWalWriterSleeping
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void SetWalWriterSleeping(bool sleeping)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:76,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:102,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:107,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:110,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:111,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:112,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:117,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:118,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:120,1
    - Dst: GetOldestRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:143,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:144,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:145,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:148,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:148,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:151,1
    - Dst: BuildRestoreCommand
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:158,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:159,1
    - Dst: fflush
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:162,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:163,1
    - Dst: PreRestoreCommand
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:173,1
    - Dst: system
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:178,1
    - Dst: PostRestoreCommand
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:180,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:182,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:183,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:191,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:222,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:223,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:225,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:234,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:235,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:236,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:237,1
    - Dst: wait_result_is_signal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:265,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:266,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:268,1
    - Dst: wait_result_is_any_signal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:269,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:270,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:281,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 5
    argNames:
    - path
    - xlogfname
    - recovername
    - expectedSize
    - cleanupEnabled
    argTypes:
    - char*
    - char*
    - char*
    - off_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 283
    functionName: RestoreArchivedFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 5
    functionsReached:
    - BuildRestoreCommand
    - strcmp
    - wait_result_is_any_signal
    - PreRestoreCommand
    - XLByteToSeg
    - PostRestoreCommand
    - errdetail
    - Assert
    - pfree
    - pgstat_report_wait_end
    - errmsg
    - fflush
    - XLogFileName
    - wait_result_is_signal
    - errmsg_internal
    - wait_result_to_str
    - ereport
    - proc_exit
    - errcode_for_file_access
    - unlink
    - stat
    - pgstat_report_wait_start
    - system
    - GetOldestRestartPoint
    - strcpy
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool RestoreArchivedFile(char *path, const char *xlogfname,\n\t\t\t\t\tconst
      char *recovername, off_t expectedSize,\n\t\t\t\t\tbool cleanupEnabled)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:306,1
    - Dst: GetOldestRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:313,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:314,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:315,1
    - Dst: replace_percent_placeholders
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:323,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:324,1
    - Dst: fflush
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:329,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:330,1
    - Dst: system
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:331,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:332,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:334,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:342,1
    - Dst: wait_result_is_any_signal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:347,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - command
    - commandName
    - failOnSignal
    - wait_event_info
    argTypes:
    - char*
    - char*
    - bool
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 295
    functionDepth: 4
    functionLinenumber: 295
    functionLinenumberEnd: 350
    functionName: ExecuteRecoveryCommand
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 2
    functionsReached:
    - errmsg_internal
    - wait_result_is_any_signal
    - Assert
    - pfree
    - replace_percent_placeholders
    - wait_result_to_str
    - ereport
    - pgstat_report_wait_start
    - pgstat_report_wait_end
    - fflush
    - errmsg
    - XLogFileName
    - system
    - GetOldestRestartPoint
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: "void ExecuteRecoveryCommand(const char *command, const char *commandName,\n\t\t\t\t\t
      \  bool failOnSignal, uint32 wait_event_info)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:365,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:367,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:384,1
    - Dst: rename
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:388,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:390,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:395,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:397,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:398,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:400,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:405,1
    - Dst: XLogArchiveForceDone
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:412,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:414,1
    - Dst: WalSndRqstFileReload
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:424,1
    - Dst: WalSndWakeup
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:431,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - path
    - xlogfname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 432
    functionName: KeepFileRestoredFromArchive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 2
    functionsReached:
    - strlcpy
    - rename
    - XLogArchiveForceDone
    - unlink
    - WalSndWakeup
    - ereport
    - stat
    - XLogArchiveNotify
    - durable_rename
    - errmsg
    - WalSndRqstFileReload
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: void
    signature: void KeepFileRestoredFromArchive(const char *path, const char *xlogfname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:451,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:452,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:455,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:456,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:457,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:463,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:464,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:465,1
    - Dst: IsTLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:481,1
    - Dst: PgArchForceDirScan
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:482,1
    - Dst: PgArchWakeup
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:486,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 487
    functionName: XLogArchiveNotify
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 3
    functionsReached:
    - AllocateFile
    - PgArchForceDirScan
    - ereport
    - errmsg
    - PgArchWakeup
    - StatusFilePath
    - FreeFile
    - IsTLHistoryFileName
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void XLogArchiveNotify(const char *xlog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:497,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:499,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - segno
    - tli
    argTypes:
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 492
    functionDepth: 2
    functionLinenumber: 492
    functionLinenumberEnd: 501
    functionName: XLogArchiveNotifySeg
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogArchiveNotify
    - XLogFileName
    linkageType: ''
    returnType: void
    signature: void XLogArchiveNotifySeg(XLogSegNo segno, TimeLineID tli)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:519,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:520,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:524,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:525,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:527,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:532,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:535,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:536,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:537,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:541,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:543,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:545,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 549
    functionName: XLogArchiveForceDone
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - AllocateFile
    - ereport
    - stat
    - durable_rename
    - errmsg
    - StatusFilePath
    - FreeFile
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void XLogArchiveForceDone(const char *xlog)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:572,1
    - Dst: XLogArchivingAlways
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:579,1
    - Dst: GetRecoveryState
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:580,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:590,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:591,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:595,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:596,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:600,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:601,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:605,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 565
    functionDepth: 3
    functionLinenumber: 565
    functionLinenumberEnd: 607
    functionName: XLogArchiveCheckDone
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 2
    functionsReached:
    - XLogArchivingActive
    - GetRecoveryState
    - stat
    - XLogArchiveNotify
    - StatusFilePath
    - XLogArchivingAlways
    linkageType: ''
    returnType: bool
    signature: bool XLogArchiveCheckDone(const char *xlog)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:626,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:627,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:631,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:632,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:636,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:637,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:645,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:646,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 651
    functionName: XLogArchiveIsBusy
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - StatusFilePath
    - stat
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool XLogArchiveIsBusy(const char *xlog)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:671,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:672,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:676,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:677,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:681,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:682,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 664
    functionDepth: 1
    functionLinenumber: 664
    functionLinenumberEnd: 686
    functionName: XLogArchiveIsReadyOrDone
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - StatusFilePath
    - stat
    linkageType: ''
    returnType: bool
    signature: bool XLogArchiveIsReadyOrDone(const char *xlog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:700,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 705
    functionName: XLogArchiveIsReady
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - StatusFilePath
    - stat
    linkageType: ''
    returnType: bool
    signature: bool XLogArchiveIsReady(const char *xlog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:718,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:719,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:723,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 726
    functionName: XLogArchiveCleanup
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 4
    functionsReached:
    - StatusFilePath
    - unlink
    linkageType: ''
    returnType: void
    signature: void XLogArchiveCleanup(const char *xlog)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: TransactionIdToPage
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 TransactionIdToPage(TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: TransactionIdToEntry
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdToEntry(xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:94,1
    - Dst: TransactionIdToEntry
      Src: /src/postgres/src/backend/access/transam/subtrans.c:95,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:100,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/subtrans.c:100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:101,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/transam/subtrans.c:101,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/subtrans.c:103,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/subtrans.c:104,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:117,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - xid
    - parent
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 123
    functionName: SubTransSetParent
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - TransactionIdToEntry
    - LWLockAcquire
    - TransactionIdToPage
    - Assert
    - TransactionIdFollows
    - LWLockRelease
    - SimpleLruGetBankLock
    - SimpleLruReadPage
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void SubTransSetParent(TransactionId xid, TransactionId parent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:131,1
    - Dst: TransactionIdToEntry
      Src: /src/postgres/src/backend/access/transam/subtrans.c:132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:138,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/subtrans.c:138,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/subtrans.c:141,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/backend/access/transam/subtrans.c:146,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:152,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/subtrans.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 155
    functionName: SubTransGetParent
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 2
    functionsReached:
    - TransactionIdToEntry
    - TransactionIdToPage
    - Assert
    - SimpleLruReadPage_ReadOnly
    - TransactionIdIsNormal
    - LWLockRelease
    - SimpleLruGetBankLock
    - TransactionIdFollowsOrEquals
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId SubTransGetParent(TransactionId xid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:176,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/subtrans.c:176,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/subtrans.c:178,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/subtrans.c:181,1
    - Dst: SubTransGetParent
      Src: /src/postgres/src/backend/access/transam/subtrans.c:183,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/subtrans.c:190,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/subtrans.c:191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:195,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/subtrans.c:195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 169
    functionDepth: 5
    functionLinenumber: 169
    functionLinenumberEnd: 198
    functionName: SubTransGetTopmostTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - elog
    - TransactionIdPrecedes
    - Assert
    - SubTransGetParent
    - TransactionIdFollowsOrEquals
    - TransactionIdIsValid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId SubTransGetTopmostTransaction(TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruAutotuneBuffers
      Src: /src/postgres/src/backend/access/transam/subtrans.c:212,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/subtrans.c:214,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/subtrans.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 215
    functionName: SUBTRANSShmemBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached:
    - SimpleLruAutotuneBuffers
    - Max
    - Min
    linkageType: ''
    returnType: int
    signature: int SUBTRANSShmemBuffers(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/subtrans.c:230,1
    - Dst: SUBTRANSShmemBuffers
      Src: /src/postgres/src/backend/access/transam/subtrans.c:230,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/subtrans.c:231,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/subtrans.c:241,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:244,1
    - Dst: SUBTRANSShmemBuffers
      Src: /src/postgres/src/backend/access/transam/subtrans.c:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 260
    functionName: SUBTRANSShmemRequest
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached:
    - Assert
    - SUBTRANSShmemBuffers
    - SetConfigOption
    - snprintf
    linkageType: ''
    returnType: void
    signature: void SUBTRANSShmemRequest(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruPagePrecedesUnitTests
      Src: /src/postgres/src/backend/access/transam/subtrans.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: SUBTRANSShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached:
    - SlruPagePrecedesUnitTests
    linkageType: ''
    returnType: void
    signature: void SUBTRANSShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_slru_buffers
      Src: /src/postgres/src/backend/access/transam/subtrans.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 275
    functionName: check_subtrans_buffers
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached:
    - check_slru_buffers
    linkageType: ''
    returnType: bool
    signature: bool check_subtrans_buffers(int *newval, void **extra, GucSource source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruZeroAndWritePage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 292
    functionName: BootStrapSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - SimpleLruZeroAndWritePage
    linkageType: ''
    returnType: void
    signature: void BootStrapSUBTRANS(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:316,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:318,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/subtrans.c:318,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/subtrans.c:322,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:326,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/subtrans.c:327,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:331,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:337,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:341,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - oldestActiveXID
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 301
    functionDepth: 3
    functionLinenumber: 301
    functionLinenumberEnd: 342
    functionName: StartupSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - SimpleLruZeroPage
    - LWLockAcquire
    - TransactionIdToPage
    - XidFromFullTransactionId
    - LWLockRelease
    - SimpleLruGetBankLock
    linkageType: ''
    returnType: void
    signature: void StartupSUBTRANS(TransactionId oldestActiveXID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_START
      Src: /src/postgres/src/backend/access/transam/subtrans.c:357,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/subtrans.c:358,1
    - Dst: TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/subtrans.c:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 347
    functionDepth: 4
    functionLinenumber: 347
    functionLinenumberEnd: 360
    functionName: CheckPointSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_DONE
    - TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_START
    - SimpleLruWriteAll
    linkageType: ''
    returnType: void
    signature: void CheckPointSUBTRANS(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToEntry
      Src: /src/postgres/src/backend/access/transam/subtrans.c:381,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/subtrans.c:382,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:385,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/subtrans.c:387,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/subtrans.c:388,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:391,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - newestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 371
    functionDepth: 3
    functionLinenumber: 371
    functionLinenumberEnd: 394
    functionName: ExtendSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - TransactionIdToEntry
    - SimpleLruZeroPage
    - LWLockAcquire
    - TransactionIdToPage
    - TransactionIdEquals
    - LWLockRelease
    - SimpleLruGetBankLock
    linkageType: ''
    returnType: void
    signature: void ExtendSUBTRANS(TransactionId newestXact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdRetreat
      Src: /src/postgres/src/backend/access/transam/subtrans.c:416,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:417,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/subtrans.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - oldestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 403
    functionDepth: 4
    functionLinenumber: 403
    functionLinenumberEnd: 420
    functionName: TruncateSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 2
    functionsReached:
    - TransactionIdToPage
    - TransactionIdRetreat
    - SimpleLruTruncate
    linkageType: ''
    returnType: void
    signature: void TruncateSUBTRANS(TransactionId oldestXact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/subtrans.c:438,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/subtrans.c:439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 427
    functionDepth: 2
    functionLinenumber: 427
    functionLinenumberEnd: 440
    functionName: SubTransPagePrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    linkageType: ''
    returnType: bool
    signature: bool SubTransPagePrecedes(int64 page1, int64 page2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/subtrans.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opaque_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 448
    functionName: subtrans_errdetail_for_io_error
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached:
    - errdetail
    linkageType: ''
    returnType: int
    signature: int subtrans_errdetail_for_io_error(const void *opaque_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/transam/xlogstats.c:34,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/transam/xlogstats.c:36,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogstats.c:39,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/transam/xlogstats.c:40,1
    - Dst: XLogRecGetTotalLen
      Src: /src/postgres/src/backend/access/transam/xlogstats.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - record
    - rec_len
    - fpi_len
    argTypes:
    - XLogReaderState*
    - uint32*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 48
    functionName: XLogRecGetLen
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogstats.c
    functionUses: 1
    functionsReached:
    - XLogRecGetBlock
    - XLogRecGetTotalLen
    - XLogRecHasBlockImage
    - XLogRecMaxBlockId
    - XLogRecHasBlockRef
    linkageType: ''
    returnType: void
    signature: "void XLogRecGetLen(XLogReaderState *record, uint32 *rec_len,\n\t\t\t
      \ uint32 *fpi_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogstats.c:61,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogstats.c:65,1
    - Dst: XLogRecGetLen
      Src: /src/postgres/src/backend/access/transam/xlogstats.c:67,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogstats.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - stats
    - record
    argTypes:
    - XLogStats*
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 96
    functionName: XLogRecStoreStats
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogstats.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogRecGetRmid
    - XLogRecGetInfo
    - XLogRecGetLen
    linkageType: ''
    returnType: void
    signature: void XLogRecStoreStats(XLogStats *stats, XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - pause_state
    argTypes:
    - RecoveryPauseState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 75
    functionName: GetRecoveryPauseStateString
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      GetRecoveryPauseStateString(RecoveryPauseState pause_state)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:89,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:90,1
    - Dst: get_backup_status
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:92,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:95,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:98,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:99,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:100,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:111,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:119,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:122,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:123,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:124,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:125,1
    - Dst: register_persistent_abort_backup_handler
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:127,1
    - Dst: do_pg_backup_start
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:128,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 131
    functionName: pg_backup_start
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - MemoryContextReset
    - PG_GETARG_BOOL
    - errcode
    - PG_RETURN_LSN
    - register_persistent_abort_backup_handler
    - ereport
    - MemoryContextSwitchTo
    - text_to_cstring
    - errmsg
    - AllocSetContextCreate
    - do_pg_backup_start
    - makeStringInfo
    - get_backup_status
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_backup_start(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:160,1
    - Dst: get_backup_status
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:162,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:165,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:166,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:169,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:171,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:175,1
    - Dst: do_pg_backup_stop
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:178,1
    - Dst: build_backup_content
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:181,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:183,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:184,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:185,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:188,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:193,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:197,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:197,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 153
    functionDepth: 6
    functionLinenumber: 153
    functionLinenumberEnd: 198
    functionName: pg_backup_stop
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 1
    functionsReached:
    - elog
    - PG_GETARG_BOOL
    - errcode
    - Assert
    - build_backup_content
    - pfree
    - PG_RETURN_DATUM
    - ereport
    - heap_form_tuple
    - HeapTupleGetDatum
    - MemoryContextDelete
    - errhint
    - LSNGetDatum
    - errmsg
    - CStringGetTextDatum
    - do_pg_backup_stop
    - get_call_result_type
    - get_backup_status
    linkageType: ''
    returnType: Datum
    signature: Datum pg_backup_stop(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:211,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:214,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:215,1
    - Dst: RequestXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:217,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 223
    functionName: pg_switch_wal
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_LSN
    - RequestXLogSwitch
    - ereport
    - errhint
    - errmsg
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_switch_wal(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:236,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:239,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:240,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:244,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:245,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:246,1
    - Dst: LogStandbySnapshot
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:248,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 254
    functionName: pg_log_standby_snapshot
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - XLogStandbyInfoActive
    - errcode
    - PG_RETURN_LSN
    - ereport
    - errhint
    - errmsg
    - LogStandbySnapshot
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_log_standby_snapshot(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:265,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:269,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:272,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:273,1
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:275,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:276,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:277,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:278,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:279,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:281,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:283,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:284,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:285,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:286,1
    - Dst: XLogRestorePoint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:288,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:293,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 294
    functionName: pg_create_restore_point
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_LSN
    - ereport
    - errhint
    - XLogIsNeeded
    - strlen
    - errmsg
    - text_to_cstring
    - XLogRestorePoint
    - RecoveryInProgress
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_create_restore_point(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:308,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:309,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:310,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:311,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:312,1
    - Dst: GetXLogWriteRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:314,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 317
    functionName: pg_current_wal_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_LSN
    - ereport
    - errhint
    - GetXLogWriteRecPtr
    - errmsg
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_current_wal_lsn(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:329,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:330,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:331,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:332,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:333,1
    - Dst: GetXLogInsertRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:335,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 324
    functionDepth: 3
    functionLinenumber: 324
    functionLinenumberEnd: 338
    functionName: pg_current_wal_insert_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_LSN
    - ereport
    - errhint
    - errmsg
    - GetXLogInsertRecPtr
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_current_wal_insert_lsn(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:351,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:352,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:353,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:354,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:356,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 359
    functionName: pg_current_wal_flush_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - GetFlushRecPtr
    - errcode
    - PG_RETURN_LSN
    - ereport
    - errhint
    - errmsg
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_current_wal_flush_lsn(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetWalRcvFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:372,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:374,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:375,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 378
    functionName: pg_last_wal_receive_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_RETURN_LSN
    - XLogRecPtrIsValid
    - GetWalRcvFlushRecPtr
    linkageType: ''
    returnType: Datum
    signature: Datum pg_last_wal_receive_lsn(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:391,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:393,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:394,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 397
    functionName: pg_last_wal_replay_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_RETURN_LSN
    - XLogRecPtrIsValid
    - GetXLogReplayRecPtr
    linkageType: ''
    returnType: Datum
    signature: Datum pg_last_wal_replay_lsn(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:408,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:416,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:417,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:418,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:419,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:420,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:427,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:428,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:430,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:433,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:434,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:439,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:440,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:440,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:443,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:449,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:451,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:457,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:459,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 403
    functionDepth: 6
    functionLinenumber: 403
    functionLinenumberEnd: 462
    functionName: pg_walfile_name_offset
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - heap_form_tuple
    - errhint
    - RecoveryInProgress
    - XLByteToSeg
    - Int32GetDatum
    - TupleDescFinalize
    - PG_RETURN_DATUM
    - errmsg
    - XLogFileName
    - TupleDescInitEntry
    - XLogSegmentOffset
    - CreateTemplateTupleDesc
    - ereport
    - GetWALInsertionTimeLine
    - BlessTupleDesc
    - PG_GETARG_LSN
    - HeapTupleGetDatum
    - CStringGetTextDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_walfile_name_offset(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:472,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:475,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:476,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:478,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:479,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:482,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:483,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:483,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:486,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 487
    functionName: pg_walfile_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - ereport
    - GetWALInsertionTimeLine
    - errhint
    - errmsg
    - XLogFileName
    - PG_GETARG_LSN
    - RecoveryInProgress
    - XLByteToSeg
    linkageType: ''
    returnType: Datum
    signature: Datum pg_walfile_name(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:497,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:497,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:509,1
    - Dst: pg_ascii_toupper
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:513,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:515,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:516,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:517,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:518,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:520,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:522,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:523,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:526,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:527,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:528,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:529,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:530,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:532,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:534,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:535,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 493
    functionDepth: 6
    functionLinenumber: 493
    functionLinenumberEnd: 540
    functionName: pg_split_walfile_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - heap_form_tuple
    - pstrdup
    - text_to_cstring
    - XLogFromFileName
    - elog
    - IsXLogFileName
    - PG_GETARG_TEXT_PP
    - Int32GetDatum
    - PG_RETURN_DATUM
    - errmsg
    - DirectFunctionCall3
    - ObjectIdGetDatum
    - get_call_result_type
    - CStringGetDatum
    - ereport
    - pg_ascii_toupper
    - Int64GetDatum
    - HeapTupleGetDatum
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum pg_split_walfile_name(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:552,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:554,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:555,1
    - Dst: PromoteIsTriggered
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:557,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:558,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:559,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:560,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:561,1
    - Dst: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:564,1
    - Dst: WakeupRecovery
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:567,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 570
    functionName: pg_wal_replay_pause
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - WakeupRecovery
    - SetRecoveryPause
    - PG_RETURN_VOID
    - errcode
    - PromoteIsTriggered
    - ereport
    - errhint
    - errmsg
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_wal_replay_pause(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:582,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:583,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:584,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:585,1
    - Dst: PromoteIsTriggered
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:587,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:588,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:590,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:591,1
    - Dst: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:594,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 597
    functionName: pg_wal_replay_resume
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - SetRecoveryPause
    - PG_RETURN_VOID
    - errcode
    - PromoteIsTriggered
    - ereport
    - errhint
    - errmsg
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_wal_replay_resume(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:605,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:606,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:607,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:608,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:609,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:611,1
    - Dst: GetRecoveryPauseState
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 612
    functionName: pg_is_wal_replay_paused
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - GetRecoveryPauseState
    - ereport
    - errhint
    - errmsg
    - PG_RETURN_BOOL
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_is_wal_replay_paused(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:628,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:629,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:630,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:631,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:632,1
    - Dst: GetRecoveryPauseState
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:634,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:637,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:637,1
    - Dst: GetRecoveryPauseStateString
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 623
    functionDepth: 2
    functionLinenumber: 623
    functionLinenumberEnd: 638
    functionName: pg_get_wal_replay_pause_state
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - GetRecoveryPauseState
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - ereport
    - GetRecoveryPauseStateString
    - errhint
    - errmsg
    - RecoveryInProgress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_wal_replay_pause_state(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetLatestXTime
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:651,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:653,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:655,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 656
    functionName: pg_last_xact_replay_timestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - GetLatestXTime
    - PG_RETURN_NULL
    - PG_RETURN_TIMESTAMPTZ
    linkageType: ''
    returnType: Datum
    signature: Datum pg_last_xact_replay_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:664,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 665
    functionName: pg_is_in_recovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - RecoveryInProgress
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_is_in_recovery(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:675,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:676,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:677,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 670
    functionDepth: 1
    functionLinenumber: 670
    functionLinenumberEnd: 680
    functionName: pg_wal_lsn_diff
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    - PG_RETURN_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum pg_wal_lsn_diff(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:691,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:692,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:696,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:697,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:699,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:700,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:703,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:705,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:708,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:710,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:711,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:712,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:715,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:716,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:717,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:718,1
    - Dst: kill
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:722,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:724,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:725,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:726,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:727,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:732,1
    - Dst: TimestampTzPlusSeconds
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:735,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:735,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:736,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:740,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:742,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:743,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:745,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:747,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:757,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:759,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:760,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:763,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:764,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:768,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 769
    functionName: pg_promote
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - AllocateFile
    - errcode
    - errcontext
    - TimestampTzPlusSeconds
    - errhint
    - PG_RETURN_BOOL
    - FreeFile
    - RecoveryInProgress
    - ResetLatch
    - errmsg
    - GetCurrentTimestamp
    - errmsg_plural
    - kill
    - ereport
    - CHECK_FOR_INTERRUPTS
    - PG_GETARG_INT32
    - errcode_for_file_access
    - PG_GETARG_BOOL
    - unlink
    - WaitLatch
    linkageType: ''
    returnType: Datum
    signature: Datum pg_promote(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:795,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:796,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:798,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:798,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:799,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:802,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:812,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:814,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:815,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:817,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:818,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:820,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:822,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:823,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:827,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:828,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:832,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:833,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:837,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:838,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:842,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:843,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:848,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:853,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:857,1
    - Dst: GetRecoveryPauseStateString
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:857,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:859,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:859,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:859,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 777
    functionDepth: 6
    functionLinenumber: 777
    functionLinenumberEnd: 860
    functionName: pg_stat_get_recovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - heap_form_tuple
    - GetRecoveryPauseStateString
    - RecoveryInProgress
    - elog
    - XLogRecPtrIsValid
    - Int32GetDatum
    - PG_RETURN_DATUM
    - SpinLockRelease
    - get_call_result_type
    - LSNGetDatum
    - TimestampTzGetDatum
    - palloc0_array
    - has_privs_of_role
    - HeapTupleGetDatum
    - CStringGetTextDatum
    - PG_RETURN_NULL
    - SpinLockAcquire
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stat_get_recovery(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:157,1
    - Dst: XLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:160,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:161,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 167
    functionName: XLogBeginInsert
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 67
    functionsReached:
    - Assert
    - XLogInsertAllowed
    - elog
    linkageType: ''
    returnType: void
    signature: void XLogBeginInsert(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:189,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:198,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:204,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:210,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:217,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - max_block_id
    - ndatas
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 220
    functionName: XLogEnsureRecordSpace
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 3
    functionsReached:
    - Assert
    - MemSet
    - repalloc
    - elog
    linkageType: ''
    returnType: void
    signature: void XLogEnsureRecordSpace(int max_block_id, int ndatas)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 239
    functionName: XLogResetInsertion
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XLogResetInsertion(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:266,1
    - Dst: BufferIsDirty
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:267,1
    - Dst: BufferIsLockedByMeInMode
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:267,1
    - Dst: BufferIsLockedByMeInMode
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:268,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:275,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:281,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:302,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:302,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 3
    argNames:
    - block_id
    - buffer
    - flags
    argTypes:
    - uint8
    - Buffer
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 310
    functionName: XLogRegisterBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 49
    functionsReached:
    - elog
    - RelFileLocatorEquals
    - Assert
    - BufferGetPage
    - BufferIsLockedByMeInMode
    - BufferGetTag
    - BufferIsDirty
    linkageType: ''
    returnType: void
    signature: void XLogRegisterBuffer(uint8 block_id, Buffer buffer, uint8 flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:322,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:355,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:355,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 6
    argNames:
    - block_id
    - rlocator
    - forknum
    - blknum
    - page
    - flags
    argTypes:
    - uint8
    - RelFileLocator*
    - ForkNumber
    - BlockNumber
    - PageData*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 363
    functionName: XLogRegisterBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - RelFileLocatorEquals
    - elog
    linkageType: ''
    returnType: void
    signature: "void XLogRegisterBlock(uint8 block_id, RelFileLocator *rlocator, ForkNumber
      forknum,\n\t\t\t\t  BlockNumber blknum, const PageData *page, uint8 flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:379,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:380,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 397
    functionName: XLogRegisterData
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 61
    functionsReached:
    - Assert
    - ereport
    - errmsg_internal
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: void XLogRegisterData(const void *data, uint32 len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:418,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:423,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:433,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:434,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:435,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:438,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:439,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:440,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - block_id
    - data
    - len
    argTypes:
    - uint8
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 451
    functionName: XLogRegisterBufData
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 29
    functionsReached:
    - elog
    - errmsg_internal
    - Assert
    - ereport
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: void XLogRegisterBufData(uint8 block_id, const void *data, uint32 len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 468
    functionName: XLogSetRecordFlags
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 10
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void XLogSetRecordFlags(uint8 flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:488,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:497,1
    - Dst: TRACE_POSTGRESQL_WAL_INSERT
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:499,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:505,1
    - Dst: XLogResetInsertion
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:507,1
    - Dst: GetFullPageWriteInfo
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:527,1
    - Dst: XLogRecordAssemble
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:529,1
    - Dst: XLogInsertRecord
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:533,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:535,1
    - Dst: XLogResetInsertion
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:537,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - rmid
    - info
    argTypes:
    - RmgrId
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 540
    functionName: XLogInsert
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 67
    functionsReached:
    - elog
    - GetFullPageWriteInfo
    - XLogRecPtrIsValid
    - XLogRecordAssemble
    - XLogResetInsertion
    - IsBootstrapProcessingMode
    - XLogInsertRecord
    - TRACE_POSTGRESQL_WAL_INSERT
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogInsert(RmgrId rmid, uint8 info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:549,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:550,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - rmid
    - info
    - value
    argTypes:
    - RmgrId
    - uint8
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 546
    functionDepth: 3
    functionLinenumber: 546
    functionLinenumberEnd: 552
    functionName: XLogSimpleInsertInt64
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 2
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogBeginInsert
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogSimpleInsertInt64(RmgrId rmid, uint8 info, int64 value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetFakeLSNForUnloggedRel
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:580,1
    - Dst: GetXLogInsertEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:593,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:594,1
    - Dst: RelationIsPermanent
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:594,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:597,1
    - Dst: XLogAssignLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:598,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 561
    functionDepth: 3
    functionLinenumber: 561
    functionLinenumberEnd: 603
    functionName: XLogGetFakeLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 19
    functionsReached:
    - XLogRecPtrIsValid
    - RelationIsPermanent
    - GetFakeLSNForUnloggedRel
    - Assert
    - GetXLogInsertEndRecPtr
    - RelationNeedsWAL
    - XLogAssignLSN
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogGetFakeLSN(Relation rel)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:692,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:697,1
    - Dst: XLogCompressBackupBlock
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:765,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:813,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:821,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:826,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:871,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:885,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:895,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:899,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:903,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:910,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:913,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:922,1
    - Dst: IsSubxactTopXidLogPending
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:927,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:929,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:935,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:947,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:948,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:949,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:955,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:980,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:981,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:983,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:993,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:994,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:995,1
    - Dst: GetCurrentTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1003,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 169
    argCount: 8
    argNames:
    - rmid
    - info
    - RedoRecPtr
    - doPageWrites
    - fpw_lsn
    - num_fpi
    - fpi_bytes
    - topxid_included
    argTypes:
    - RmgrId
    - uint8
    - XLogRecPtr
    - bool
    - XLogRecPtr*
    - int*
    - uint64*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 620
    functionDepth: 3
    functionLinenumber: 620
    functionLinenumberEnd: 1011
    functionName: XLogRecordAssemble
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 1
    functionsReached:
    - elog
    - RelFileLocatorEquals
    - XLogRecPtrIsValid
    - GetCurrentTransactionIdIfAny
    - memcpy
    - XLogCompressBackupBlock
    - errmsg_internal
    - Assert
    - PageGetLSN
    - COMP_CRC32C
    - ereport
    - INIT_CRC32C
    - GetTopTransactionIdIfAny
    - IsSubxactTopXidLogPending
    - errdetail_internal
    linkageType: ''
    returnType: XLogRecData
    signature: "XLogRecData *\nXLogRecordAssemble(RmgrId rmid, uint8 info,\n\t\t\t\t
      \  XLogRecPtr RedoRecPtr, bool doPageWrites,\n\t\t\t\t   XLogRecPtr *fpw_lsn,
      int *num_fpi, uint64 *fpi_bytes,\n\t\t\t\t   bool *topxid_included)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1033,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1034,1
    - Dst: pglz_compress
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1051,1
    - Dst: LZ4_compress_default
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1056,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1061,1
    - Dst: ZSTD_compress
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1067,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1069,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1072,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1077,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 5
    argNames:
    - page
    - hole_offset
    - hole_length
    - dest
    - dlen
    argTypes:
    - PageData*
    - uint16
    - uint16
    - void*
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1020
    functionDepth: 3
    functionLinenumber: 1020
    functionLinenumberEnd: 1094
    functionName: XLogCompressBackupBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 1
    functionsReached:
    - elog
    - ZSTD_compress
    - memcpy
    - ZSTD_isError
    - Assert
    - pglz_compress
    - LZ4_compress_default
    linkageType: ''
    returnType: bool
    signature: "bool XLogCompressBackupBlock(const PageData *page, uint16 hole_offset,
      uint16 hole_length,\n\t\t\t\t\t\tvoid *dest, uint16 *dlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetFullPageWriteInfo
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1110,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1112,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1103
    functionDepth: 4
    functionLinenumber: 1103
    functionLinenumberEnd: 1118
    functionName: XLogCheckBufferNeedsBackup
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 3
    functionsReached:
    - GetFullPageWriteInfo
    - PageGetLSN
    - BufferGetPage
    linkageType: ''
    returnType: bool
    signature: bool XLogCheckBufferNeedsBackup(Buffer buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1141,1
    - Dst: BufferIsDirty
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1141,1
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1153,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1159,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1159,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1165,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1170,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - buffer
    - buffer_std
    argTypes:
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1133
    functionDepth: 5
    functionLinenumber: 1133
    functionLinenumberEnd: 1176
    functionName: XLogSaveBufferForHint
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - GetRedoRecPtr
    - XLogBeginInsert
    - Assert
    - PageGetLSN
    - BufferGetPage
    - BufferIsDirty
    - XLogRegisterBuffer
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogSaveBufferForHint(Buffer buffer, bool buffer_std)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1201,1
    - Dst: XLogRegisterBlock
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1202,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1203,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1209,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - rlocator
    - forknum
    - blkno
    - page
    - page_std
    argTypes:
    - RelFileLocator*
    - ForkNumber
    - BlockNumber
    - Page
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1190
    functionDepth: 3
    functionLinenumber: 1190
    functionLinenumberEnd: 1215
    functionName: log_newpage
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 2
    functionsReached:
    - XLogInsert
    - XLogBeginInsert
    - PageIsNew
    - XLogRegisterBlock
    - PageSetLSN
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr log_newpage(RelFileLocator *rlocator, ForkNumber forknum,
      BlockNumber blkno,\n\t\t\tPage page, bool page_std)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1240,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1248,1
    - Dst: XLogRegisterBlock
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1253,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1258,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1266,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1268,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 6
    argNames:
    - rlocator
    - forknum
    - num_pages
    - blknos
    - pages
    - page_std
    argTypes:
    - RelFileLocator*
    - ForkNumber
    - int
    - BlockNumber*
    - Page*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1222
    functionDepth: 3
    functionLinenumber: 1222
    functionLinenumberEnd: 1272
    functionName: log_newpages
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 0
    functionsReached:
    - XLogEnsureRecordSpace
    - XLogInsert
    - XLogBeginInsert
    - PageIsNew
    - XLogRegisterBlock
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: "void log_newpages(RelFileLocator *rlocator, ForkNumber forknum, int
      num_pages,\n\t\t\t BlockNumber *blknos, Page *pages, bool page_std)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1287,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1293,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1295,1
    - Dst: log_newpage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buffer
    - page_std
    argTypes:
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1284
    functionDepth: 4
    functionLinenumber: 1284
    functionLinenumberEnd: 1298
    functionName: log_newpage_buffer
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 4
    functionsReached:
    - Assert
    - BufferGetTag
    - log_newpage
    - BufferGetPage
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr log_newpage_buffer(Buffer buffer, bool page_std)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1334,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1344,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1350,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1353,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1360,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1360,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1363,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1372,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1374,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1377,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1378,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1381,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1384,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1384,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1386,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1389,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 5
    argNames:
    - rel
    - forknum
    - startblk
    - endblk
    - page_std
    argTypes:
    - Relation
    - ForkNumber
    - BlockNumber
    - BlockNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1317
    functionDepth: 5
    functionLinenumber: 1317
    functionLinenumberEnd: 1391
    functionName: log_newpage_range
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 1
    functionsReached:
    - XLogEnsureRecordSpace
    - XLogInsert
    - XLogBeginInsert
    - ReadBufferExtended
    - LockBuffer
    - PageIsNew
    - CHECK_FOR_INTERRUPTS
    - BufferGetPage
    - START_CRIT_SECTION
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: "void log_newpage_range(Relation rel, ForkNumber forknum,\n\t\t\t\t
      \ BlockNumber startblk, BlockNumber endblk,\n\t\t\t\t  bool page_std)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DecodeXLogRecordRequiredSpace
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1410,1
    - Dst: AllocSizeIsValid
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1410,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1416,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1424,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1430,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1439,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1396
    functionDepth: 1
    functionLinenumber: 1396
    functionLinenumberEnd: 1441
    functionName: InitXLogInsert
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    - Assert
    - DecodeXLogRecordRequiredSpace
    - AllocSizeIsValid
    - AllocSetContextCreate
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: void InitXLogInsert(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: TransactionIdToPage
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 TransactionIdToPage(TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: TransactionIdToPgIndex
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdToPgIndex(xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: TransactionIdToByte
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdToByte(xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: TransactionIdToBIndex
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdToBIndex(xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - slotno
    - ','
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: GetLSNIndex
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetLSNIndex(slotno, xid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:195,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:198,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:207,1
    - Dst: TransactionIdSetPageStatus
      Src: /src/postgres/src/backend/access/transam/clog.c:219,1
    - Dst: set_status_by_pages
      Src: /src/postgres/src/backend/access/transam/clog.c:237,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:245,1
    - Dst: TransactionIdSetPageStatus
      Src: /src/postgres/src/backend/access/transam/clog.c:246,1
    - Dst: set_status_by_pages
      Src: /src/postgres/src/backend/access/transam/clog.c:253,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 5
    argNames:
    - xid
    - nsubxids
    - subxids
    - status
    - lsn
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - XidStatus
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 257
    functionName: TransactionIdSetTreeStatus
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 3
    functionsReached:
    - TransactionIdToPage
    - TransactionIdSetPageStatus
    - Assert
    - set_status_by_pages
    linkageType: ''
    returnType: void
    signature: "void TransactionIdSetTreeStatus(TransactionId xid, int nsubxids,\n\t\t\t\t\t\t
      \  TransactionId *subxids, XidStatus status, XLogRecPtr lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:273,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:282,1
    - Dst: TransactionIdSetPageStatus
      Src: /src/postgres/src/backend/access/transam/clog.c:289,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - nsubxids
    - subxids
    - status
    - lsn
    argTypes:
    - int
    - TransactionId*
    - XidStatus
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 295
    functionName: set_status_by_pages
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - TransactionIdToPage
    - TransactionIdSetPageStatus
    - Assert
    linkageType: ''
    returnType: void
    signature: "void set_status_by_pages(int nsubxids, TransactionId *subxids,\n\t\t\t\t\tXidStatus
      status, XLogRecPtr lsn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/access/transam/clog.c:310,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:314,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/transam/clog.c:334,1
    - Dst: LWLockConditionalAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:343,1
    - Dst: TransactionIdSetPageStatusInternal
      Src: /src/postgres/src/backend/access/transam/clog.c:346,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:348,1
    - Dst: TransactionGroupUpdateXidStatus
      Src: /src/postgres/src/backend/access/transam/clog.c:351,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:361,1
    - Dst: TransactionIdSetPageStatusInternal
      Src: /src/postgres/src/backend/access/transam/clog.c:362,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:364,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 7
    argNames:
    - xid
    - nsubxids
    - subxids
    - status
    - lsn
    - pageno
    - all_xact_same_page
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - XidStatus
    - XLogRecPtr
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 365
    functionName: TransactionIdSetPageStatus
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 2
    functionsReached:
    - TransactionIdSetPageStatusInternal
    - LWLockAcquire
    - LWLockConditionalAcquire
    - TransactionGroupUpdateXidStatus
    - SimpleLruGetBankLock
    - LWLockRelease
    - memcmp
    - StaticAssertDecl
    linkageType: ''
    returnType: void
    signature: "void TransactionIdSetPageStatus(TransactionId xid, int nsubxids,\n\t\t\t\t\t\t
      \  TransactionId *subxids, XidStatus status,\n\t\t\t\t\t\t   XLogRecPtr lsn,
      int64 pageno,\n\t\t\t\t\t\t   bool all_xact_same_page)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:380,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/clog.c:382,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:383,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/clog.c:383,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:383,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/clog.c:395,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/clog.c:395,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/clog.c:406,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:413,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:413,1
    - Dst: TransactionIdSetStatusBit
      Src: /src/postgres/src/backend/access/transam/clog.c:414,1
    - Dst: TransactionIdSetStatusBit
      Src: /src/postgres/src/backend/access/transam/clog.c:421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:427,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:427,1
    - Dst: TransactionIdSetStatusBit
      Src: /src/postgres/src/backend/access/transam/clog.c:428,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 6
    argNames:
    - xid
    - nsubxids
    - subxids
    - status
    - lsn
    - pageno
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - XidStatus
    - XLogRecPtr
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 372
    functionDepth: 3
    functionLinenumber: 372
    functionLinenumberEnd: 432
    functionName: TransactionIdSetPageStatusInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - Assert
    - TransactionIdToPage
    - TransactionIdIsValid
    - LWLockHeldByMeInMode
    - TransactionIdSetStatusBit
    - SimpleLruGetBankLock
    - SimpleLruReadPage
    linkageType: ''
    returnType: void
    signature: "void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,\n\t\t\t\t\t\t\t\t
      \  TransactionId *subxids, XidStatus status,\n\t\t\t\t\t\t\t\t   XLogRecPtr
      lsn, int64 pageno)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:460,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/clog.c:460,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:495,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/clog.c:513,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:520,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:524,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:526,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/clog.c:543,1
    - Dst: PGSemaphoreLock
      Src: /src/postgres/src/backend/access/transam/clog.c:547,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/clog.c:552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:554,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:554,1
    - Dst: PGSemaphoreUnlock
      Src: /src/postgres/src/backend/access/transam/clog.c:558,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:567,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:568,1
    - Dst: pg_atomic_exchange_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:578,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/clog.c:587,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:603,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:607,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:618,1
    - Dst: TransactionIdSetPageStatusInternal
      Src: /src/postgres/src/backend/access/transam/clog.c:620,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:628,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:633,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/clog.c:646,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:648,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:649,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/clog.c:652,1
    - Dst: PGSemaphoreUnlock
      Src: /src/postgres/src/backend/access/transam/clog.c:657,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 61
    argCount: 4
    argNames:
    - xid
    - status
    - lsn
    - pageno
    argTypes:
    - TransactionId
    - XidStatus
    - XLogRecPtr
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 449
    functionDepth: 4
    functionLinenumber: 449
    functionLinenumberEnd: 661
    functionName: TransactionGroupUpdateXidStatus
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - TransactionIdSetPageStatusInternal
    - pg_atomic_compare_exchange_u32
    - PGSemaphoreUnlock
    - LWLockAcquire
    - Assert
    - pg_write_barrier
    - pgstat_report_wait_end
    - pg_atomic_write_u32
    - SimpleLruGetBankLock
    - pgstat_report_wait_start
    - pg_atomic_read_u32
    - LWLockRelease
    - PGSemaphoreLock
    - GetPGProcByNumber
    - pg_atomic_exchange_u32
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: "bool TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus
      status,\n\t\t\t\t\t\t\t\tXLogRecPtr lsn, int64 pageno)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToByte
      Src: /src/postgres/src/backend/access/transam/clog.c:671,1
    - Dst: TransactionIdToBIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:677,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:678,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/clog.c:678,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:699,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/clog.c:718,1
    - Dst: GetLSNIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:720,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 4
    argNames:
    - xid
    - status
    - lsn
    - slotno
    argTypes:
    - TransactionId
    - XidStatus
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 725
    functionName: TransactionIdSetStatusBit
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - Assert
    - TransactionIdToPage
    - LWLockHeldByMeInMode
    - TransactionIdToByte
    - GetLSNIndex
    - SimpleLruGetBankLock
    - TransactionIdToBIndex
    linkageType: ''
    returnType: void
    signature: void TransactionIdSetStatusBit(TransactionId xid, XidStatus status,
      XLogRecPtr lsn, int slotno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:745,1
    - Dst: TransactionIdToByte
      Src: /src/postgres/src/backend/access/transam/clog.c:746,1
    - Dst: TransactionIdToBIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:747,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/backend/access/transam/clog.c:755,1
    - Dst: GetLSNIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:760,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:763,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - xid
    - lsn
    argTypes:
    - TransactionId
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 742
    functionDepth: 4
    functionLinenumber: 742
    functionLinenumberEnd: 766
    functionName: TransactionIdGetStatus
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 2
    functionsReached:
    - TransactionIdToPage
    - SimpleLruReadPage_ReadOnly
    - GetLSNIndex
    - TransactionIdToByte
    - LWLockRelease
    - SimpleLruGetBankLock
    - TransactionIdToBIndex
    linkageType: ''
    returnType: XidStatus
    signature: XidStatus TransactionIdGetStatus(TransactionId xid, XLogRecPtr *lsn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruAutotuneBuffers
      Src: /src/postgres/src/backend/access/transam/clog.c:780,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/clog.c:782,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/clog.c:782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 783
    functionName: CLOGShmemBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - SimpleLruAutotuneBuffers
    - Max
    - Min
    linkageType: ''
    returnType: int
    signature: int CLOGShmemBuffers(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/clog.c:796,1
    - Dst: CLOGShmemBuffers
      Src: /src/postgres/src/backend/access/transam/clog.c:796,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/clog.c:797,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/clog.c:807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:810,1
    - Dst: CLOGShmemBuffers
      Src: /src/postgres/src/backend/access/transam/clog.c:816,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 788
    functionDepth: 2
    functionLinenumber: 788
    functionLinenumberEnd: 826
    functionName: CLOGShmemRequest
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - CLOGShmemBuffers
    - Assert
    - SetConfigOption
    - snprintf
    linkageType: ''
    returnType: void
    signature: void CLOGShmemRequest(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruPagePrecedesUnitTests
      Src: /src/postgres/src/backend/access/transam/clog.c:831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 832
    functionName: CLOGShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - SlruPagePrecedesUnitTests
    linkageType: ''
    returnType: void
    signature: void CLOGShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_slru_buffers
      Src: /src/postgres/src/backend/access/transam/clog.c:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 837
    functionDepth: 1
    functionLinenumber: 837
    functionLinenumberEnd: 841
    functionName: check_transaction_buffers
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - check_slru_buffers
    linkageType: ''
    returnType: bool
    signature: bool check_transaction_buffers(int *newval, void **extra, GucSource
      source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruZeroAndWritePage
      Src: /src/postgres/src/backend/access/transam/clog.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 849
    functionDepth: 4
    functionLinenumber: 849
    functionLinenumberEnd: 854
    functionName: BootStrapCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - SimpleLruZeroAndWritePage
    linkageType: ''
    returnType: void
    signature: void BootStrapCLOG(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/clog.c:863,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:864,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/clog.c:869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 860
    functionDepth: 2
    functionLinenumber: 860
    functionLinenumberEnd: 870
    functionName: StartupCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - TransactionIdToPage
    - pg_atomic_write_u64
    - XidFromFullTransactionId
    linkageType: ''
    returnType: void
    signature: void StartupCLOG(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/clog.c:878,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:879,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:880,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:882,1
    - Dst: TransactionIdToPgIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:896,1
    - Dst: TransactionIdToByte
      Src: /src/postgres/src/backend/access/transam/clog.c:898,1
    - Dst: TransactionIdToBIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:899,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/clog.c:903,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/clog.c:909,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 875
    functionDepth: 3
    functionLinenumber: 875
    functionLinenumberEnd: 915
    functionName: TrimCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - TransactionIdToPage
    - XidFromFullTransactionId
    - MemSet
    - TransactionIdToByte
    - TransactionIdToPgIndex
    - LWLockRelease
    - SimpleLruGetBankLock
    - SimpleLruReadPage
    - TransactionIdToBIndex
    linkageType: ''
    returnType: void
    signature: void TrimCLOG(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_CLOG_CHECKPOINT_START
      Src: /src/postgres/src/backend/access/transam/clog.c:928,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/clog.c:929,1
    - Dst: TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/clog.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 920
    functionDepth: 4
    functionLinenumber: 920
    functionLinenumberEnd: 931
    functionName: CheckPointCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE
    - SimpleLruWriteAll
    - TRACE_POSTGRESQL_CLOG_CHECKPOINT_START
    linkageType: ''
    returnType: void
    signature: void CheckPointCLOG(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPgIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:952,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/clog.c:953,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:956,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:957,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:959,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/clog.c:962,1
    - Dst: XLogSimpleInsertInt64
      Src: /src/postgres/src/backend/access/transam/clog.c:963,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:965,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - newestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 942
    functionDepth: 4
    functionLinenumber: 942
    functionLinenumberEnd: 966
    functionName: ExtendCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - SimpleLruZeroPage
    - LWLockAcquire
    - XLogSimpleInsertInt64
    - TransactionIdToPage
    - TransactionIdEquals
    - LWLockRelease
    - TransactionIdToPgIndex
    - SimpleLruGetBankLock
    linkageType: ''
    returnType: void
    signature: void ExtendCLOG(TransactionId newestXact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:993,1
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/backend/access/transam/clog.c:996,1
    - Dst: AdvanceOldestClogXid
      Src: /src/postgres/src/backend/access/transam/clog.c:1006,1
    - Dst: WriteTruncateXlogRec
      Src: /src/postgres/src/backend/access/transam/clog.c:1014,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/clog.c:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - oldestXact
    - oldestxid_datoid
    argTypes:
    - TransactionId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 984
    functionDepth: 4
    functionLinenumber: 984
    functionLinenumberEnd: 1018
    functionName: TruncateCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - SlruScanDirectory
    - TransactionIdToPage
    - SimpleLruTruncate
    - WriteTruncateXlogRec
    - AdvanceOldestClogXid
    linkageType: ''
    returnType: void
    signature: void TruncateCLOG(TransactionId oldestXact, Oid oldestxid_datoid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/clog.c:1050,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/clog.c:1051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1039
    functionDepth: 2
    functionLinenumber: 1039
    functionLinenumberEnd: 1052
    functionName: CLOGPagePrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    linkageType: ''
    returnType: bool
    signature: bool CLOGPagePrecedes(int64 page1, int64 page2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/clog.c:1059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opaque_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1054
    functionDepth: 1
    functionLinenumber: 1054
    functionLinenumberEnd: 1060
    functionName: clog_errdetail_for_io_error
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - errdetail
    linkageType: ''
    returnType: int
    signature: int clog_errdetail_for_io_error(const void *opaque_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/clog.c:1079,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/clog.c:1080,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/clog.c:1081,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/clog.c:1082,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - pageno
    - oldestXact
    - oldestXactDb
    argTypes:
    - int64
    - TransactionId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1069
    functionDepth: 5
    functionLinenumber: 1069
    functionLinenumberEnd: 1083
    functionName: WriteTruncateXlogRec
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogFlush
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void WriteTruncateXlogRec(int64 pageno, TransactionId oldestXact, Oid
      oldestXactDb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/clog.c:1091,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:1094,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/clog.c:1094,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/clog.c:1100,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/clog.c:1100,1
    - Dst: SimpleLruZeroAndWritePage
      Src: /src/postgres/src/backend/access/transam/clog.c:1101,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/clog.c:1107,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/clog.c:1107,1
    - Dst: AdvanceOldestClogXid
      Src: /src/postgres/src/backend/access/transam/clog.c:1109,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/clog.c:1111,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/clog.c:1114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1088
    functionDepth: 4
    functionLinenumber: 1088
    functionLinenumberEnd: 1115
    functionName: clog_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - Assert
    - SimpleLruTruncate
    - SimpleLruZeroAndWritePage
    - XLogRecHasAnyBlockRefs
    - AdvanceOldestClogXid
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void clog_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruSyncFileTag
      Src: /src/postgres/src/backend/access/transam/clog.c:1123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ftag
    - path
    argTypes:
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1120
    functionDepth: 2
    functionLinenumber: 1120
    functionLinenumberEnd: 1124
    functionName: clogsyncfiletag
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - SlruSyncFileTag
    linkageType: ''
    returnType: int
    signature: int clogsyncfiletag(const FileTag *ftag, char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:36,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:38,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:41,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:42,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:44,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:45,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:46,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:47,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:54,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:55,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:56,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:57,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:60,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:61,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:62,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:63,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:65,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:66,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:67,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:74,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:75,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:77,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:78,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:82,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:82,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:83,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:85,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:86,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 2
    argNames:
    - state
    - ishistoryfile
    argTypes:
    - BackupState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 28
    functionDepth: 3
    functionLinenumber: 28
    functionLinenumberEnd: 92
    functionName: build_backup_content
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogbackup.c
    functionUses: 2
    functionsReached:
    - pg_localtime
    - XLogRecPtrIsValid
    - Assert
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - LSN_FORMAT_ARGS
    - XLogFileName
    - pg_strftime
    - XLByteToSeg
    linkageType: ''
    returnType: char
    signature: 'char *

      build_backup_content(BackupState *state, bool ishistoryfile)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:411,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:413,1
    - Dst: InitSharedLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:414,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 408
    functionDepth: 2
    functionLinenumber: 408
    functionLinenumberEnd: 416
    functionName: XLogRecoveryShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - InitSharedLatch
    - ConditionVariableInit
    - memset
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void XLogRecoveryShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: disable_startup_progress_timeout
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 434
    functionName: EnableStandbyMode
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - disable_startup_progress_timeout
    linkageType: ''
    returnType: void
    signature: void EnableStandbyMode(void)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: readRecoverySignalFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:485,1
    - Dst: validateRecoveryParameters
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:486,1
    - Dst: OwnLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:493,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:499,1
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:501,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:502,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:507,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:508,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:509,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:510,1
    - Dst: XLogReaderSetDecodeBuffer
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:517,1
    - Dst: XLogPrefetcherAllocate
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:520,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:529,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:530,1
    - Dst: read_backup_label
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:537,1
    - Dst: EnableStandbyMode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:549,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:561,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:562,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:563,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:564,1
    - Dst: ReadCheckpointRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:571,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:575,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:575,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:577,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:578,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:579,1
    - Dst: XLogPrefetcherBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:590,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:591,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:593,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:594,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:595,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:595,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:596,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:604,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:605,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:606,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:607,1
    - Dst: read_tablespace_map
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:615,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:621,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:624,1
    - Dst: remove_tablespace_symlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:630,1
    - Dst: symlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:633,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:634,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:635,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:638,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:639,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:663,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:665,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:666,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:667,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:668,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:670,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:673,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:674,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:676,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:698,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:700,1
    - Dst: EnableStandbyMode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:705,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:713,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:714,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:715,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:716,1
    - Dst: ReadCheckpointRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:723,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:727,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:728,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:729,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:739,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:740,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:741,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:743,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:743,1
    - Dst: XLogPrefetcherBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:749,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:750,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:751,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:752,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:753,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:753,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:761,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:763,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:767,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:768,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:769,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:771,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:772,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:775,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:776,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:777,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:779,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:780,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:782,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:791,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:793,1
    - Dst: tliSwitchPoint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:802,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:803,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:804,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:807,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:809,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:811,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:818,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:819,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:821,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:822,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:824,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:827,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:828,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:829,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:831,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:832,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:833,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:835,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:836,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:838,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:839,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:841,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:842,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:844,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:845,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:848,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:848,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:849,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:850,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:854,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:855,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:865,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:894,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:895,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:898,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:899,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:941,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:942,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:943,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 165
    argCount: 4
    argNames:
    - ControlFile
    - wasShutdown_ptr
    - haveBackupLabel_ptr
    - haveTblspcMap_ptr
    argTypes:
    - ControlFileData*
    - bool*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 974
    functionName: InitWalRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - readRecoverySignalFile
    - errcode
    - errhint
    - durable_rename
    - validateRecoveryParameters
    - symlink
    - LSN_FORMAT_ARGS
    - XLogReaderSetDecodeBuffer
    - ReadRecord
    - XLogRecPtrIsValid
    - memcpy
    - errdetail
    - pfree
    - Assert
    - XLogPrefetcherBeginRead
    - tliSwitchPoint
    - XidFromFullTransactionId
    - errmsg
    - ReadCheckpointRecord
    - palloc0_object
    - errmsg_internal
    - remove_tablespace_symlink
    - tliOfPointInHistory
    - psprintf
    - ereport
    - read_backup_label
    - XLogReaderAllocate
    - lfirst
    - XL_ROUTINE
    - errcode_for_file_access
    - XLogRecGetData
    - OwnLatch
    - XLogPrefetcherAllocate
    - unlink
    - U64FromFullTransactionId
    - stat
    - timestamptz_to_str
    - TransactionIdIsNormal
    - EnableStandbyMode
    - palloc
    - read_tablespace_map
    linkageType: ''
    returnType: void
    signature: "void InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,\n\t\t\t\tbool
      *haveBackupLabel_ptr, bool *haveTblspcMap_ptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:621,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:624,1
    - Dst: remove_tablespace_symlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:630,1
    - Dst: symlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:633,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:634,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:635,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:638,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 640
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 28
    functionsReached:
    - remove_tablespace_symlink
    - pfree
    - psprintf
    - ereport
    - lfirst
    - errmsg
    - symlink
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tablespaces)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:988,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:994,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:995,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:996,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:997,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1003,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1010,1
    - Dst: BasicOpenFilePerm
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1014,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1018,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1019,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1024,1
    - Dst: BasicOpenFilePerm
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1028,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1032,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1033,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1062,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1063,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1064,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 983
    functionDepth: 1
    functionLinenumber: 983
    functionLinenumberEnd: 1065
    functionName: readRecoverySignalFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - unlink
    - errcode
    - stat
    - ereport
    - BasicOpenFilePerm
    - IsBootstrapProcessingMode
    - errmsg
    - close
    - pg_fsync
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void readRecoverySignalFile(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1078,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1079,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1080,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1081,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1082,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1087,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1088,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1089,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1090,1
    - Dst: DatumGetTimestampTz
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1108,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1108,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1109,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1110,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1111,1
    - Dst: existsTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1125,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1126,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1127,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1128,1
    - Dst: findNewestTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1143,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1067
    functionDepth: 3
    functionLinenumber: 1067
    functionLinenumberEnd: 1145
    functionName: validateRecoveryParameters
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - strcmp
    - errcode
    - Int32GetDatum
    - CStringGetDatum
    - Assert
    - ereport
    - errhint
    - DatumGetTimestampTz
    - existsTimeLineHistory
    - errmsg
    - DirectFunctionCall3
    - findNewestTimeLine
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void validateRecoveryParameters(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1191,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1195,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1197,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1207,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1209,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1210,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1211,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1216,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1217,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1218,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1232,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1234,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1243,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1245,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1258,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1259,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1260,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1264,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1265,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1277,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1281,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1282,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1286,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1287,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1288,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1289,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1290,1
    - Dst: ferror
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1292,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1292,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1293,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1294,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1295,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 4
    argNames:
    - checkPointLoc
    - backupLabelTLI
    - backupEndRequired
    - backupFromStandby
    argTypes:
    - XLogRecPtr*
    - TimeLineID*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1166
    functionDepth: 1
    functionLinenumber: 1166
    functionLinenumberEnd: 1299
    functionName: read_backup_label
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - ferror
    - AllocateFile
    - errmsg_internal
    - strcmp
    - errcode
    - ereport
    - errhint
    - errmsg
    - errdetail
    - FreeFile
    - fscanf
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: "bool read_backup_label(XLogRecPtr *checkPointLoc, TimeLineID *backupLabelTLI,\n\t\t\t\t
      \ bool *backupEndRequired, bool *backupFromStandby)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1330,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1331,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1332,1
    - Dst: fgetc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1344,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1363,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1364,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1365,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1368,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1370,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1372,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1374,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1375,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1392,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1393,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1394,1
    - Dst: ferror
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1396,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1396,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1397,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1398,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1399,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 1
    argNames:
    - tablespaces
    argTypes:
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1312
    functionDepth: 1
    functionLinenumber: 1312
    functionLinenumberEnd: 1403
    functionName: read_tablespace_map
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - AllocateFile
    - strtoul
    - ferror
    - errcode
    - fgetc
    - pstrdup
    - ereport
    - lappend
    - errmsg
    - FreeFile
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: bool read_tablespace_map(List **tablespaces)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1419,1
    - Dst: XLogShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1430,1
    - Dst: ShutDownSlotSync
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1455,1
    - Dst: WalRcvStreaming
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1455,1
    - Dst: XLogPrefetcherBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1481,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1502,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1511,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1527,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1527,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1531,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1532,1
    - Dst: getRecoveryStopReason
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1548,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1416
    functionDepth: 2
    functionLinenumber: 1416
    functionLinenumberEnd: 1561
    functionName: FinishWalRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - ReadRecord
    - XLogSegmentOffset
    - memcpy
    - Assert
    - XLogPrefetcherBeginRead
    - getRecoveryStopReason
    - close
    - palloc_object
    - WalRcvStreaming
    - palloc
    - ShutDownSlotSync
    - XLogShutdownWalRcv
    linkageType: ''
    returnType: EndOfWalRecoveryInfo
    signature: 'EndOfWalRecoveryInfo *

      FinishWalRecovery(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogPrefetcherComputeStats
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1572,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1577,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1580,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1581,1
    - Dst: XLogPrefetcherFree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1582,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1590,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1591,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1594,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1595,1
    - Dst: DisownLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1603,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1566
    functionDepth: 2
    functionLinenumber: 1566
    functionLinenumberEnd: 1604
    functionName: ShutdownWalRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - XLogPrefetcherFree
    - unlink
    - pfree
    - DisownLatch
    - XLogPrefetcherComputeStats
    - XLogReaderFree
    - close
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ShutdownWalRecovery(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1623,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1641,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1644,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1651,1
    - Dst: CheckRecoveryConsistency
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1656,1
    - Dst: XLogPrefetcherBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1666,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1667,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1676,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1677,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1683,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1685,1
    - Dst: pg_rusage_init
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1693,1
    - Dst: RmgrStartup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1697,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1699,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1700,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1701,1
    - Dst: begin_startup_progress_phase
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1705,1
    - Dst: ereport_startup_progress
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1713,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1714,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1721,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1722,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1723,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1724,1
    - Dst: xlog_outrec
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1725,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1726,1
    - Dst: xlog_outdesc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1727,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1728,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1729,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1734,1
    - Dst: recoveryPausesHere
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1751,1
    - Dst: recoveryStopsBefore
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1756,1
    - Dst: recoveryApplyDelay
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1766,1
    - Dst: recoveryPausesHere
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1776,1
    - Dst: ApplyWalRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1782,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1790,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1792,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1794,1
    - Dst: recoveryStopsAfter
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1798,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1805,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1815,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1816,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1832,1
    - Dst: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1835,1
    - Dst: recoveryPausesHere
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1836,1
    - Dst: RmgrCleanup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1846,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1848,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1849,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1850,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1851,1
    - Dst: GetLatestXTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1852,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1854,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1855,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1856,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1863,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1864,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1874,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1875,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1876,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 97
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1611
    functionDepth: 3
    functionLinenumber: 1611
    functionLinenumberEnd: 1877
    functionName: PerformWalRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - ereport_startup_progress
    - pg_rusage_show
    - errcode
    - pg_rusage_init
    - RmgrStartup
    - xlog_outrec
    - LSN_FORMAT_ARGS
    - elog
    - ReadRecord
    - WaitLSNWakeup
    - Assert
    - pfree
    - appendStringInfoString
    - XLogPrefetcherBeginRead
    - CheckRecoveryConsistency
    - begin_startup_progress_phase
    - ProcessStartupProcInterrupts
    - SpinLockRelease
    - errmsg
    - recoveryApplyDelay
    - GetCurrentTimestamp
    - recoveryStopsAfter
    - initStringInfo
    - ereport
    - RmgrCleanup
    - xlog_outdesc
    - ApplyWalRecord
    - recoveryStopsBefore
    - proc_exit
    - SendPostmasterSignal
    - SetRecoveryPause
    - appendStringInfo
    - recoveryPausesHere
    - timestamptz_to_str
    - GetLatestXTime
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void PerformWalRecovery(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1897,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1917,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1917,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1925,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1925,1
    - Dst: checkTimeLineSwitch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1933,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1946,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1949,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1955,1
    - Dst: RecordKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1956,1
    - Dst: xlogrecovery_redo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1963,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1966,1
    - Dst: verifyBackupPageConsistency
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1974,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1983,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1987,1
    - Dst: AllowCascadeReplication
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2011,1
    - Dst: WalSndWakeup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2012,1
    - Dst: WalRcvRequestApplyReply
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2022,1
    - Dst: CheckRecoveryConsistency
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2026,1
    - Dst: RemoveNonParentXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2035,1
    - Dst: XLogPrefetchReconfigure
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2038,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 3
    argNames:
    - xlogreader
    - record
    - replayTLI
    argTypes:
    - XLogReaderState*
    - XLogRecord*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2040
      start: 1882
    functionDepth: 3
    functionLinenumber: 1882
    functionLinenumberEnd: 2040
    functionName: ApplyWalRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - AdvanceNextFullTransactionIdPastXid
    - checkTimeLineSwitch
    - AllowCascadeReplication
    - memcpy
    - GetRmgr
    - WalSndWakeup
    - WalRcvRequestApplyReply
    - xlogrecovery_redo
    - RecordKnownAssignedTransactionIds
    - verifyBackupPageConsistency
    - CheckRecoveryConsistency
    - SpinLockRelease
    - RemoveNonParentXlogFiles
    - SpinLockAcquire
    - XLogPrefetchReconfigure
    - TransactionIdIsValid
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void ApplyWalRecord(XLogReaderState *xlogreader, XLogRecord *record,
      TimeLineID *replayTLI)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2052,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2052,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2059,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2059,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2061,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2062,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2063,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2069,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2070,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2071,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2072,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2081,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2081,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2093,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2098,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2099,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2099,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - record
    - replayTLI
    argTypes:
    - XLogReaderState*
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2046
    functionDepth: 1
    functionLinenumber: 2046
    functionLinenumberEnd: 2101
    functionName: xlogrecovery_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - elog
    - memcpy
    - Assert
    - LSN_FORMAT_ARGS
    - ereport
    - timestamptz_to_str
    - XLogRecGetRmid
    - errmsg
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void xlogrecovery_redo(XLogReaderState *record, TimeLineID replayTLI)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2123,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2124,1
    - Dst: strspn
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2129,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2129,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2132,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2134,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2137,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2139,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2143
      start: 2117
    functionDepth: 3
    functionLinenumber: 2117
    functionLinenumberEnd: 2143
    functionName: CheckTablespaceDirectory
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - errcode
    - AllocateDir
    - ereport
    - get_dirent_type
    - strspn
    - strlen
    - errmsg
    - errhint
    - errdetail
    - ReadDir
    - snprintf
    linkageType: ''
    returnType: void
    signature: void CheckTablespaceDirectory(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2163,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2175,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2181,1
    - Dst: ReachedEndOfBackup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2187,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2192,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2193,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2194,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2195,1
    - Dst: XLogCheckInvalidPages
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2211,1
    - Dst: CheckTablespaceDirectory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2219,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2224,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2225,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2238,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2240,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2244,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2246
      start: 2150
    functionDepth: 4
    functionLinenumber: 2150
    functionLinenumberEnd: 2246
    functionName: CheckRecoveryConsistency
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - ReachedEndOfBackup
    - XLogCheckInvalidPages
    - Assert
    - ereport
    - errmsg
    - SpinLockRelease
    - CheckTablespaceDirectory
    - SpinLockAcquire
    - SendPostmasterSignal
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void CheckRecoveryConsistency(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2257,1
    - Dst: xlog_outdesc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2258,1
    - Dst: xlog_block_info
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2259,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2262,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2263,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2251
    functionDepth: 3
    functionLinenumber: 2251
    functionLinenumberEnd: 2267
    functionName: rm_redo_error_callback
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - pfree
    - errcontext
    - initStringInfo
    - xlog_outdesc
    - xlog_block_info
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void rm_redo_error_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2276,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2276,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2277,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2280,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2281,1
    - Dst: RmgrData::rm_identify
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2283,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2285,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2287,1
    - Dst: RmgrData::rm_desc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2290
      start: 2273
    functionDepth: 2
    functionLinenumber: 2273
    functionLinenumberEnd: 2290
    functionName: xlog_outdesc
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - GetRmgr
    - appendStringInfo
    - appendStringInfoString
    - RmgrData::rm_identify
    - RmgrData::rm_desc
    - XLogRecGetRmid
    - XLogRecGetInfo
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void xlog_outdesc(StringInfo buf, XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2297,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2298,1
    - Dst: XLogRecGetPrev
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2298,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2299,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2301,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2302,1
    - Dst: xlog_block_info
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2294
    functionDepth: 2
    functionLinenumber: 2294
    functionLinenumberEnd: 2305
    functionName: xlog_outrec
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - XLogRecGetDataLen
    - XLogRecGetXid
    - appendStringInfo
    - XLogRecGetPrev
    - xlog_block_info
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void xlog_outrec(StringInfo buf, XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2318,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2324,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2329,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2336,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2341,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2344
      start: 2312
    functionDepth: 2
    functionLinenumber: 2312
    functionLinenumberEnd: 2344
    functionName: xlog_block_info
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - XLogRecHasBlockImage
    - XLogRecMaxBlockId
    - XLogRecGetBlockTagExtended
    linkageType: ''
    returnType: void
    signature: void xlog_block_info(StringInfo buf, XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2359,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2360,1
    - Dst: tliInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2368,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2369,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2381,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2384,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2385,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2387,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 4
    argNames:
    - lsn
    - newTLI
    - prevTLI
    - replayTLI
    argTypes:
    - XLogRecPtr
    - TimeLineID
    - TimeLineID
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2353
    functionDepth: 2
    functionLinenumber: 2353
    functionLinenumberEnd: 2391
    functionName: checkTimeLineSwitch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - ereport
    - errmsg
    - tliInHistory
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: "void checkTimeLineSwitch(XLogRecPtr lsn, TimeLineID newTLI, TimeLineID
      prevTLI,\n\t\t\t\t\tTimeLineID replayTLI)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2405,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2407,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2411,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2417,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2423,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - record
    - recordXtime
    argTypes:
    - XLogReaderState*
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2427
      start: 2402
    functionDepth: 1
    functionLinenumber: 2402
    functionLinenumberEnd: 2427
    functionName: getRecordTimestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - XLogRecGetRmid
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: bool
    signature: bool getRecordTimestamp(XLogReaderState *record, TimestampTz *recordXtime)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2440,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2440,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2447,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2450,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2450,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2452,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2467,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2467,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2469,1
    - Dst: XLogReadBufferExtended
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2483,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2486,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2489,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2490,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2496,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2499,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2506,1
    - Dst: RestoreBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2515,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2516,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2517,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2518,1
    - Dst: RmgrData::rm_mask
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2526,1
    - Dst: RmgrData::rm_mask
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2527,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2531,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2533,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2539
      start: 2437
    functionDepth: 4
    functionLinenumber: 2437
    functionLinenumberEnd: 2539
    functionName: verifyBackupPageConsistency
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errcode
    - LockBuffer
    - BufferGetPage
    - XLogRecGetRmid
    - XLogRecBlockImageApply
    - XLogRecMaxBlockId
    - XLogRecGetInfo
    - elog
    - memcpy
    - GetRmgr
    - Assert
    - PageGetLSN
    - XLogRecHasBlockImage
    - RestoreBlockImage
    - UnlockReleaseBuffer
    - XLogRecHasAnyBlockRefs
    - memcmp
    - errmsg_internal
    - ereport
    - BufferIsValid
    - XLogRecGetBlockTagExtended
    - RmgrData::rm_mask
    - XLogReadBufferExtended
    linkageType: ''
    returnType: void
    signature: void verifyBackupPageConsistency(XLogReaderState *record)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2568,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2590,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2591,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2596,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2599,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2604,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2608,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2612,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2612,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2620,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2624,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2628,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2628,1
    - Dst: getRecordTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2655,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2680,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2682,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2686,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2687,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2689,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 64
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2694
      start: 2549
    functionDepth: 2
    functionLinenumber: 2549
    functionLinenumberEnd: 2694
    functionName: recoveryStopsBefore
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - ParseAbortRecord
    - XLogRecGetXid
    - getRecordTimestamp
    - LSN_FORMAT_ARGS
    - ereport
    - timestamptz_to_str
    - XLogRecGetRmid
    - errmsg
    - ParseCommitRecord
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: bool
    signature: bool recoveryStopsBefore(XLogReaderState *record)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2717,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2718,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2729,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2731,1
    - Dst: getRecordTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2736,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2737,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2739,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2740,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2742,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2757,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2758,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2759,1
    - Dst: getRecordTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2776,1
    - Dst: SetLatestXTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2777,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2782,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2785,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2785,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2792,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2795,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2795,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2801,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2824,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2825,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2827,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2832,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2833,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2835,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2845,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 66
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2856
      start: 2702
    functionDepth: 2
    functionLinenumber: 2702
    functionLinenumberEnd: 2856
    functionName: recoveryStopsAfter
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - ParseAbortRecord
    - strcmp
    - XLogRecGetXid
    - LSN_FORMAT_ARGS
    - ereport
    - timestamptz_to_str
    - XLogRecGetRmid
    - XLogRecGetInfo
    - errmsg
    - SetLatestXTime
    - ParseCommitRecord
    - getRecordTimestamp
    - XLogRecGetData
    linkageType: ''
    returnType: bool
    signature: bool recoveryStopsAfter(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2868,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2873,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2876,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2878,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2881,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2883,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2887,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2889,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2891,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2892
      start: 2862
    functionDepth: 1
    functionLinenumber: 2862
    functionLinenumberEnd: 2892
    functionName: getRecoveryStopReason
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - timestamptz_to_str
    - pstrdup
    - LSN_FORMAT_ARGS
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      getRecoveryStopReason(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2913,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2914,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2915,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2917,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2918,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2919,1
    - Dst: GetRecoveryPauseState
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2922,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2924,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2925,1
    - Dst: ConfirmRecoveryPaused
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2932,1
    - Dst: ConditionVariableTimedSleep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2939,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2942,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - endOfRecovery
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2943
      start: 2901
    functionDepth: 1
    functionLinenumber: 2901
    functionLinenumberEnd: 2943
    functionName: recoveryPausesHere
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - CheckForStandbyTrigger
    - GetRecoveryPauseState
    - ereport
    - ConditionVariableCancelSleep
    - errhint
    - ProcessStartupProcInterrupts
    - ConditionVariableTimedSleep
    - errmsg
    - ConfirmRecoveryPaused
    linkageType: ''
    returnType: void
    signature: void recoveryPausesHere(bool endOfRecovery)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2986,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2989,1
    - Dst: getRecordTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2995,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2998,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3004,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3004,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3010,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3013,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3015,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3022,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3027,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3027,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3033,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3035,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3041
      start: 2958
    functionDepth: 2
    functionLinenumber: 2958
    functionLinenumberEnd: 3041
    functionName: recoveryApplyDelay
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - TimestampTzPlusMilliseconds
    - CheckForStandbyTrigger
    - getRecordTimestamp
    - ResetLatch
    - XLogRecGetRmid
    - TimestampDifferenceMilliseconds
    - ProcessStartupProcInterrupts
    - WaitLatch
    - XLogRecGetInfo
    linkageType: ''
    returnType: bool
    signature: bool recoveryApplyDelay(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3051,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 3046
    functionDepth: 2
    functionLinenumber: 3046
    functionLinenumberEnd: 3056
    functionName: GetRecoveryPauseState
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 3
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: RecoveryPauseState
    signature: RecoveryPauseState GetRecoveryPauseState(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3069,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3076,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3079,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - recoveryPause
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3080
      start: 3066
    functionDepth: 2
    functionLinenumber: 3066
    functionLinenumberEnd: 3080
    functionName: SetRecoveryPause
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 3
    functionsReached:
    - SpinLockAcquire
    - ConditionVariableBroadcast
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void SetRecoveryPause(bool recoveryPause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3090,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3093,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3094
      start: 3086
    functionDepth: 2
    functionLinenumber: 3086
    functionLinenumberEnd: 3094
    functionName: ConfirmRecoveryPaused
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void ConfirmRecoveryPaused(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogPrefetcherGetReader
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3115,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3115,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3120,1
    - Dst: XLogPrefetcherReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3130,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3146,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3165,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3165,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3166,1
    - Dst: tliInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3172,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3178,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3179,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3181,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3183,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3183,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3184,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3187,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3217,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3218,1
    - Dst: EnableStandbyMode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3221,1
    - Dst: SwitchIntoArchiveRecovery
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3223,1
    - Dst: CheckRecoveryConsistency
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3227,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3240,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 4
    argNames:
    - xlogprefetcher
    - emode
    - fetching_ckpt
    - replayTLI
    argTypes:
    - XLogPrefetcher*
    - int
    - bool
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3246
      start: 3107
    functionDepth: 5
    functionLinenumber: 3107
    functionLinenumberEnd: 3246
    functionName: ReadRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 8
    functionsReached:
    - emode_for_corrupt_record
    - LSN_FORMAT_ARGS
    - XLByteToSeg
    - XLogRecPtrIsValid
    - Assert
    - XLogPrefetcherGetReader
    - CheckRecoveryConsistency
    - errmsg
    - XLogFileName
    - XLogSegmentOffset
    - SwitchIntoArchiveRecovery
    - AmStartupProcess
    - errmsg_internal
    - XLogPrefetcherReadRecord
    - ereport
    - CheckForStandbyTrigger
    - close
    - EnableStandbyMode
    - tliInHistory
    linkageType: ''
    returnType: XLogRecord
    signature: "XLogRecord *\nReadRecord(XLogPrefetcher *xlogprefetcher, int emode,\n\t\t
      \  bool fetching_ckpt, TimeLineID replayTLI)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3288,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3288,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3290,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3291,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3298,1
    - Dst: XLogCheckpointNeeded
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3306,1
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3308,1
    - Dst: XLogCheckpointNeeded
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3309,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3310,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3314,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3319,1
    - Dst: WaitForWALToBecomeAvailable
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3333,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3359,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3372,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3382,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3384,1
    - Dst: pg_pread
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3385,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3391,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3395,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3398,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3402,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3402,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3403,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3404,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3409,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3409,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3410,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3411,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3412,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3416,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3423,1
    - Dst: XLogReaderValidatePageHeader
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3468,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3468,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3469,1
    - Dst: XLogReaderResetError
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3472,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3490,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 88
    argCount: 5
    argNames:
    - xlogreader
    - targetPagePtr
    - reqLen
    - targetRecPtr
    - readBuf
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3500
      start: 3276
    functionDepth: 3
    functionLinenumber: 3276
    functionLinenumberEnd: 3500
    functionName: XLogPageRead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - GetRedoRecPtr
    - errcode
    - XLByteInSeg
    - emode_for_corrupt_record
    - XLByteToSeg
    - LSN_FORMAT_ARGS
    - XLogReaderResetError
    - Assert
    - pgstat_report_wait_end
    - RequestCheckpoint
    - errmsg
    - XLogFileName
    - pg_pread
    - XLogReaderValidatePageHeader
    - WaitForWALToBecomeAvailable
    - XLogSegmentOffset
    - AmStartupProcess
    - errmsg_internal
    - XLogCheckpointNeeded
    - ereport
    - pgstat_count_io_op_time
    - pgstat_prepare_io_time
    - errcode_for_file_access
    - close
    - pgstat_report_wait_start
    linkageType: ''
    returnType: int
    signature: "int XLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
      int reqLen,\n\t\t\t XLogRecPtr targetRecPtr, char *readBuf)"
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3612,1
    - Dst: XLogShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3654,1
    - Dst: WalRcvStreaming
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3667,1
    - Dst: XLogShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3668,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3678,1
    - Dst: WalRcvGetState
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3678,1
    - Dst: ResetInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3679,1
    - Dst: rescanLatestTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3688,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3703,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3704,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3710,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3712,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3713,1
    - Dst: KnownAssignedTransactionIdsIdleMaintenance
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3716,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3718,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3723,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3724,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3727,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3734,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3749,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3768,1
    - Dst: WalRcvStreaming
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3768,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3773,1
    - Dst: XLogFileReadAnyTLI
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3804,1
    - Dst: XLogShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3813,1
    - Dst: rescanLatestTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3821,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3837,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3855,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3858,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3859,1
    - Dst: SetInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3863,1
    - Dst: RequestXLogStreaming
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3864,1
    - Dst: WalRcvStreaming
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3873,1
    - Dst: GetWalRcvFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3897,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3903,1
    - Dst: SetCurrentChunkStartTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3904,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3932,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3933,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3935,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3955,1
    - Dst: WalRcvRequestApplyReply
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3979,1
    - Dst: KnownAssignedTransactionIdsIdleMaintenance
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3984,1
    - Dst: XLogPrefetcherComputeStats
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3987,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3993,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3997,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4002,1
    - Dst: recoveryPausesHere
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4011,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4017,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 152
    argCount: 7
    argNames:
    - RecPtr
    - randAccess
    - fetching_ckpt
    - tliRecPtr
    - replayTLI
    - replayLSN
    - nonblocking
    argTypes:
    - XLogRecPtr
    - bool
    - bool
    - XLogRecPtr
    - TimeLineID
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4021
      start: 3535
    functionDepth: 2
    functionLinenumber: 3535
    functionLinenumberEnd: 4021
    functionName: WaitForWALToBecomeAvailable
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - strcmp
    - WalRcvStreaming
    - LSN_FORMAT_ARGS
    - TimestampDifferenceExceeds
    - elog
    - SetInstallXLogFileSegmentActive
    - Assert
    - ResetLatch
    - XLogFileReadAnyTLI
    - ProcessStartupProcInterrupts
    - SetCurrentChunkStartTime
    - GetCurrentTimestamp
    - WalRcvGetState
    - tliOfPointInHistory
    - XLogFileRead
    - TimestampDifferenceMilliseconds
    - KnownAssignedTransactionIdsIdleMaintenance
    - CheckForStandbyTrigger
    - readTimeLineHistory
    - WalRcvRequestApplyReply
    - recoveryPausesHere
    - XLogPrefetcherComputeStats
    - ResetInstallXLogFileSegmentActive
    - rescanLatestTimeLine
    - WaitLatch
    - close
    - RequestXLogStreaming
    - GetWalRcvFlushRecPtr
    - XLogShutdownWalRcv
    linkageType: ''
    returnType: XLogPageReadResult
    signature: "XLogPageReadResult WaitForWALToBecomeAvailable(XLogRecPtr RecPtr,
      bool randAccess,\n\t\t\t\t\t\t\tbool fetching_ckpt, XLogRecPtr tliRecPtr,\n\t\t\t\t\t\t\tTimeLineID
      replayTLI, XLogRecPtr replayLSN,\n\t\t\t\t\t\t\tbool nonblocking)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - emode
    - RecPtr
    argTypes:
    - int
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4055
      start: 4042
    functionDepth: 0
    functionLinenumber: 4042
    functionLinenumberEnd: 4055
    functionName: emode_for_corrupt_record
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int emode_for_corrupt_record(int emode, XLogRecPtr RecPtr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4068,1
    - Dst: XRecOffIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4070,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4072,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4073,1
    - Dst: XLogPrefetcherBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4077,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4078,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4082,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4083,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4088,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4089,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4096,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4097,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4102,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4103,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - xlogprefetcher
    - RecPtr
    - replayTLI
    argTypes:
    - XLogPrefetcher*
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4107
      start: 4061
    functionDepth: 6
    functionLinenumber: 4061
    functionLinenumberEnd: 4107
    functionName: ReadCheckpointRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - ReadRecord
    - Assert
    - ereport
    - XLogPrefetcherBeginRead
    - XRecOffIsValid
    - errmsg
    linkageType: ''
    returnType: XLogRecord
    signature: "XLogRecord *\nReadCheckpointRecord(XLogPrefetcher *xlogprefetcher,
      XLogRecPtr RecPtr,\n\t\t\t\t\t TimeLineID replayTLI)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: findNewestTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4126,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4137,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4146,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4156,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4157,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4171,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4174,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4180,1
    - Dst: restoreTimeLineHistoryFiles
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4187,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4190,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - replayTLI
    - replayLSN
    argTypes:
    - TimeLineID
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4194
      start: 4116
    functionDepth: 3
    functionLinenumber: 4116
    functionLinenumberEnd: 4194
    functionName: rescanLatestTimeLine
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - readTimeLineHistory
    - restoreTimeLineHistoryFiles
    - ereport
    - list_free_deep
    - lfirst
    - errmsg
    - findNewestTimeLine
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: bool
    signature: bool rescanLatestTimeLine(TimeLineID replayTLI, XLogRecPtr replayLSN)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4153
      start: 4144
    functionDepth: 1
    functionLinenumber: 4144
    functionLinenumberEnd: 4153
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 28
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, newExpectedTLEs)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4212,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4218,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4220,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4222,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4231,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4244,1
    - Dst: IsInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4244,1
    - Dst: KeepFileRestoredFromArchive
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4245,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4250,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4253,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4260,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4262,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4269,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4274,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4276,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 4
    argNames:
    - segno
    - tli
    - source
    - notfoundOk
    argTypes:
    - XLogSegNo
    - TimeLineID
    - XLogSource
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4278
      start: 4203
    functionDepth: 2
    functionLinenumber: 4203
    functionLinenumberEnd: 4278
    functionName: XLogFileRead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - elog
    - RestoreArchivedFile
    - IsInstallXLogFileSegmentActive
    - GetCurrentTimestamp
    - set_ps_display
    - Assert
    - ereport
    - XLogFilePath
    - KeepFileRestoredFromArchive
    - BasicOpenFile
    - errmsg
    - XLogFileName
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int XLogFileRead(XLogSegNo segno, TimeLineID tli,\n\t\t\t XLogSource
      source, bool notfoundOk)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4314,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4318,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4328,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4332,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4350,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4353,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4362,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4373,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4375,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4376,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4377,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 2
    argNames:
    - segno
    - source
    argTypes:
    - XLogSegNo
    - XLogSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4379
      start: 4285
    functionDepth: 3
    functionLinenumber: 4285
    functionLinenumberEnd: 4379
    functionName: XLogFileReadAnyTLI
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - elog
    - errcode_for_file_access
    - readTimeLineHistory
    - XLogRecPtrIsValid
    - XLogFileRead
    - ereport
    - XLogFilePath
    - lfirst
    - errmsg
    - XLByteToSeg
    linkageType: ''
    returnType: int
    signature: int XLogFileReadAnyTLI(XLogSegNo segno, XLogSource source)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4318,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4328,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4332,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4350,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4353,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4362,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4370
      start: 4316
    functionDepth: 3
    functionLinenumber: 4316
    functionLinenumberEnd: 4370
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 28
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - XLogFileRead
    - lfirst
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: void foreach(cell, tles)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WalRcvRunning
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4388,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4390,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4395
      start: 4385
    functionDepth: 1
    functionLinenumber: 4385
    functionLinenumberEnd: 4395
    functionName: StartupRequestWalReceiverRestart
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - WalRcvRunning
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void StartupRequestWalReceiverRestart(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4415,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4420
      start: 4404
    functionDepth: 2
    functionLinenumber: 4404
    functionLinenumberEnd: 4420
    functionName: PromoteIsTriggered
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 3
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: bool
    signature: bool PromoteIsTriggered(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4425,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4427,1
    - Dst: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4438
      start: 4422
    functionDepth: 3
    functionLinenumber: 4422
    functionLinenumberEnd: 4438
    functionName: SetPromoteIsTriggered
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SetRecoveryPause
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void SetPromoteIsTriggered(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsPromoteSignaled
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4449,1
    - Dst: CheckPromoteSignal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4449,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4451,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4451,1
    - Dst: RemovePromoteSignalFiles
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4452,1
    - Dst: ResetPromoteSignaled
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4453,1
    - Dst: SetPromoteIsTriggered
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4454,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4459
      start: 4443
    functionDepth: 4
    functionLinenumber: 4443
    functionLinenumberEnd: 4459
    functionName: CheckForStandbyTrigger
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 4
    functionsReached:
    - SetPromoteIsTriggered
    - ereport
    - ResetPromoteSignaled
    - errmsg
    - IsPromoteSignaled
    - RemovePromoteSignalFiles
    - CheckPromoteSignal
    linkageType: ''
    returnType: bool
    signature: bool CheckForStandbyTrigger(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4468
      start: 4464
    functionDepth: 0
    functionLinenumber: 4464
    functionLinenumberEnd: 4468
    functionName: RemovePromoteSignalFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - unlink
    linkageType: ''
    returnType: void
    signature: void RemovePromoteSignalFiles(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4482
      start: 4473
    functionDepth: 1
    functionLinenumber: 4473
    functionLinenumberEnd: 4482
    functionName: CheckPromoteSignal
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - stat
    linkageType: ''
    returnType: bool
    signature: bool CheckPromoteSignal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4492
      start: 4488
    functionDepth: 1
    functionLinenumber: 4488
    functionLinenumberEnd: 4492
    functionName: WakeupRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - SetLatch
    linkageType: ''
    returnType: void
    signature: void WakeupRecovery(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4501
      start: 4497
    functionDepth: 0
    functionLinenumber: 4497
    functionLinenumberEnd: 4501
    functionName: XLogRequestWalReceiverReply
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XLogRequestWalReceiverReply(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4525,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4531
      start: 4512
    functionDepth: 2
    functionLinenumber: 4512
    functionLinenumberEnd: 4531
    functionName: HotStandbyActive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: bool
    signature: bool HotStandbyActive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4540,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4542
      start: 4537
    functionDepth: 1
    functionLinenumber: 4537
    functionLinenumberEnd: 4542
    functionName: HotStandbyActiveInReplay
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - Assert
    - AmStartupProcess
    linkageType: ''
    returnType: bool
    signature: bool HotStandbyActiveInReplay(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4555,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - replayTLI
    argTypes:
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4563
      start: 4549
    functionDepth: 2
    functionLinenumber: 4549
    functionLinenumberEnd: 4563
    functionName: GetXLogReplayRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4578,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - replayEndTLI
    argTypes:
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4586
      start: 4572
    functionDepth: 2
    functionLinenumber: 4572
    functionLinenumberEnd: 4586
    functionName: GetCurrentReplayRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetCurrentReplayRecPtr(TimeLineID *replayEndTLI)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4598,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - xtime
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4601
      start: 4595
    functionDepth: 2
    functionLinenumber: 4595
    functionLinenumberEnd: 4601
    functionName: SetLatestXTime
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void SetLatestXTime(TimestampTz xtime)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4611,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4616
      start: 4606
    functionDepth: 2
    functionLinenumber: 4606
    functionLinenumberEnd: 4616
    functionName: GetLatestXTime
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 3
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetLatestXTime(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4627,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - xtime
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4630
      start: 4624
    functionDepth: 2
    functionLinenumber: 4624
    functionLinenumberEnd: 4630
    functionName: SetCurrentChunkStartTime
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void SetCurrentChunkStartTime(TimestampTz xtime)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4641,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4646
      start: 4636
    functionDepth: 2
    functionLinenumber: 4636
    functionLinenumberEnd: 4646
    functionName: GetCurrentChunkReplayStartTime
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetCurrentChunkReplayStartTime(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rtime
    - fromStream
    argTypes:
    - TimestampTz*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4663
      start: 4652
    functionDepth: 1
    functionLinenumber: 4652
    functionLinenumberEnd: 4663
    functionName: GetXLogReceiptTime
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HotStandbyActiveInReplay
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4674,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4678,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4680,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4681,1
    - Dst: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4686,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4689,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4690,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4691,1
    - Dst: GetRecoveryPauseState
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4693,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4695,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4697,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4700,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4701,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4702,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4708,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4712,1
    - Dst: ConfirmRecoveryPaused
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4721,1
    - Dst: ConditionVariableTimedSleep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4728,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4731,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4734,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4735,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4736,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4738,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4742,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - param_name
    - currValue
    - minValue
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4744
      start: 4669
    functionDepth: 5
    functionLinenumber: 4669
    functionLinenumberEnd: 4744
    functionName: RecoveryRequiresIntParameter
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - SetRecoveryPause
    - CheckForStandbyTrigger
    - errcode
    - GetRecoveryPauseState
    - ereport
    - ConditionVariableCancelSleep
    - errhint
    - ProcessStartupProcInterrupts
    - ConditionVariableTimedSleep
    - errmsg
    - errdetail
    - ConfirmRecoveryPaused
    - HotStandbyActiveInReplay
    linkageType: ''
    returnType: void
    signature: void RecoveryRequiresIntParameter(const char *param_name, int currValue,
      int minValue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4757,1
    - Dst: ReplicationSlotValidateNameInternal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4758,1
    - Dst: GUC_check_errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4761,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4762,1
    - Dst: GUC_check_errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4764,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4769
      start: 4750
    functionDepth: 1
    functionLinenumber: 4750
    functionLinenumberEnd: 4769
    functionName: check_primary_slot_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ReplicationSlotValidateNameInternal
    - GUC_check_errhint
    - GUC_check_errcode
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_primary_slot_name(char **newval, void **extra, GucSource
      source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4792,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4793,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4794,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4796
      start: 4789
    functionDepth: 1
    functionLinenumber: 4789
    functionLinenumberEnd: 4796
    functionName: error_multiple_recovery_targets
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errdetail
    - errcode
    linkageType: ''
    returnType: pg_noreturn
    signature: pg_noreturn error_multiple_recovery_targets(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4804,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4804,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4806,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4810
      start: 4801
    functionDepth: 0
    functionLinenumber: 4801
    functionLinenumberEnd: 4810
    functionName: check_recovery_target
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strcmp
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_recovery_target(char **newval, void **extra, GucSource source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error_multiple_recovery_targets
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4820,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4822,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4826
      start: 4815
    functionDepth: 2
    functionLinenumber: 4815
    functionLinenumberEnd: 4826
    functionName: assign_recovery_target
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - error_multiple_recovery_targets
    - strcmp
    linkageType: ''
    returnType: void
    signature: void assign_recovery_target(const char *newval, void *extra)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4834,1
    - Dst: pg_lsn_in_safe
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4840,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4844,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4851
      start: 4831
    functionDepth: 1
    functionLinenumber: 4831
    functionLinenumberEnd: 4851
    functionName: check_recovery_target_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - pg_lsn_in_safe
    - strcmp
    - guc_malloc
    linkageType: ''
    returnType: bool
    signature: bool check_recovery_target_lsn(char **newval, void **extra, GucSource
      source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error_multiple_recovery_targets
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4861,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4863,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4870
      start: 4856
    functionDepth: 2
    functionLinenumber: 4856
    functionLinenumberEnd: 4870
    functionName: assign_recovery_target_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - error_multiple_recovery_targets
    - strcmp
    linkageType: ''
    returnType: void
    signature: void assign_recovery_target_lsn(const char *newval, void *extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4879,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4881,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4886
      start: 4875
    functionDepth: 0
    functionLinenumber: 4875
    functionLinenumberEnd: 4886
    functionName: check_recovery_target_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strlen
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_recovery_target_name(char **newval, void **extra, GucSource
      source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error_multiple_recovery_targets
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4896,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4898,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4905
      start: 4891
    functionDepth: 2
    functionLinenumber: 4891
    functionLinenumberEnd: 4905
    functionName: assign_recovery_target_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - error_multiple_recovery_targets
    - strcmp
    linkageType: ''
    returnType: void
    signature: void assign_recovery_target_name(const char *newval, void *extra)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4919,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4922,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4923,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4924,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4925,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4948,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4951,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4958,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4960,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4966
      start: 4916
    functionDepth: 0
    functionLinenumber: 4916
    functionLinenumberEnd: 4966
    functionName: check_recovery_target_time
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - ParseDateTime
    - strcmp
    - tm2timestamp
    - DecodeDateTime
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_recovery_target_time(char **newval, void **extra, GucSource
      source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error_multiple_recovery_targets
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4976,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4978,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4982
      start: 4971
    functionDepth: 2
    functionLinenumber: 4971
    functionLinenumberEnd: 4982
    functionName: assign_recovery_target_time
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - error_multiple_recovery_targets
    - strcmp
    linkageType: ''
    returnType: void
    signature: void assign_recovery_target_time(const char *newval, void *extra)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4993,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4995,1
    - Dst: strtou64
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5005,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5009,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5016,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5022,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5029
      start: 4987
    functionDepth: 1
    functionLinenumber: 4987
    functionLinenumberEnd: 5029
    functionName: check_recovery_target_timeline
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - guc_malloc
    - strtou64
    - strcmp
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_recovery_target_timeline(char **newval, void **extra, GucSource
      source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5039,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5042
      start: 5034
    functionDepth: 0
    functionLinenumber: 5034
    functionLinenumberEnd: 5042
    functionName: assign_recovery_target_timeline
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: void
    signature: void assign_recovery_target_timeline(const char *newval, void *extra)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5050,1
    - Dst: isspace
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5064,1
    - Dst: strtou64
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5070,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5074,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5081,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5087,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5094
      start: 5047
    functionDepth: 1
    functionLinenumber: 5047
    functionLinenumberEnd: 5094
    functionName: check_recovery_target_xid
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strtou64
    - strcmp
    - isspace
    - guc_malloc
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_recovery_target_xid(char **newval, void **extra, GucSource
      source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error_multiple_recovery_targets
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5104,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5113
      start: 5099
    functionDepth: 2
    functionLinenumber: 5099
    functionLinenumberEnd: 5113
    functionName: assign_recovery_target_xid
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - error_multiple_recovery_targets
    - strcmp
    linkageType: ''
    returnType: void
    signature: void assign_recovery_target_xid(const char *newval, void *extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: relpathperm
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:89,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:92,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - elevel
    - locator
    - forkno
    - blkno
    - present
    argTypes:
    - int
    - RelFileLocator
    - ForkNumber
    - BlockNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 97
    functionName: report_invalid_page
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - elog
    - relpathperm
    linkageType: ''
    returnType: void
    signature: "void report_invalid_page(int elevel, RelFileLocator locator, ForkNumber
      forkno,\n\t\t\t\t\tBlockNumber blkno, bool present)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: report_invalid_page
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:118,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:119,1
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:128,1
    - Dst: report_invalid_page
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:129,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:139,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:150,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - locator
    - forkno
    - blkno
    - present
    argTypes:
    - RelFileLocator
    - ForkNumber
    - BlockNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 161
    functionName: log_invalid_page
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - elog
    - hash_search
    - hash_create
    - message_level_is_interesting
    - report_invalid_page
    linkageType: ''
    returnType: void
    signature: "void log_invalid_page(RelFileLocator locator, ForkNumber forkno, BlockNumber
      blkno,\n\t\t\t\t bool present)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:174,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:176,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:178,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:182,1
    - Dst: relpathperm
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:184,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:186,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:189,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - locator
    - forkno
    - minblkno
    argTypes:
    - RelFileLocator
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 192
    functionName: forget_invalid_pages
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - RelFileLocatorEquals
    - elog
    - hash_search
    - relpathperm
    - hash_seq_search
    - hash_seq_init
    linkageType: ''
    returnType: void
    signature: "void forget_invalid_pages(RelFileLocator locator, ForkNumber forkno,\n\t\t\t\t\t
      BlockNumber minblkno)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:204,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:206,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:210,1
    - Dst: relpathperm
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:212,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:214,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - dbid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 220
    functionName: forget_invalid_pages_db
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - elog
    - hash_search
    - relpathperm
    - hash_seq_search
    - hash_seq_init
    linkageType: ''
    returnType: void
    signature: void forget_invalid_pages_db(Oid dbid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 230
    functionName: XLogHaveInvalidPages
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 1
    functionsReached:
    - hash_get_num_entries
    linkageType: ''
    returnType: bool
    signature: bool XLogHaveInvalidPages(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:243,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:249,1
    - Dst: report_invalid_page
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:251,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:257,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 262
    functionName: XLogCheckInvalidPages
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 1
    functionsReached:
    - elog
    - hash_destroy
    - hash_seq_search
    - hash_seq_init
    - report_invalid_page
    linkageType: ''
    returnType: void
    signature: void XLogCheckInvalidPages(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - record
    - block_id
    - buf
    argTypes:
    - XLogReaderState*
    - uint8
    - Buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 308
    functionName: XLogReadBufferForRedo
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 41
    functionsReached:
    - XLogReadBufferForRedoExtended
    linkageType: ''
    returnType: XLogRedoAction
    signature: "XLogRedoAction XLogReadBufferForRedo(XLogReaderState *record, uint8
      block_id,\n\t\t\t\t\t  Buffer *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - record
    - block_id
    argTypes:
    - XLogReaderState*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: XLogInitBufferForRedo
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 18
    functionsReached:
    - XLogReadBufferForRedoExtended
    linkageType: ''
    returnType: Buffer
    signature: Buffer XLogInitBufferForRedo(XLogReaderState *record, uint8 block_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:339,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:339,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:341,1
    - Dst: FlushOneBuffer
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - record
    - block_id
    - buffer
    argTypes:
    - XLogReaderState*
    - uint8
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 344
    functionName: XLogFlushBufferForRedoIfInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 2
    functionsReached:
    - Assert
    - FlushOneBuffer
    - XLogRecGetBlockTag
    - BufferIsValid
    linkageType: ''
    returnType: void
    signature: "void XLogFlushBufferForRedoIfInit(XLogReaderState *record, uint8 block_id,\n\t\t\t\t\t\t\t
      Buffer buffer)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:376,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:380,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:389,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:391,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:393,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:398,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:398,1
    - Dst: XLogReadBufferExtended
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:399,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:402,1
    - Dst: RestoreBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:403,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:404,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:405,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:406,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:412,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:414,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:417,1
    - Dst: FlushOneBuffer
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:428,1
    - Dst: XLogReadBufferExtended
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:434,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:435,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:440,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:442,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:444,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:444,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 5
    argNames:
    - record
    - block_id
    - mode
    - get_cleanup_lock
    - buf
    argTypes:
    - XLogReaderState*
    - uint8
    - ReadBufferMode
    - bool
    - Buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 361
    functionDepth: 4
    functionLinenumber: 361
    functionLinenumberEnd: 452
    functionName: XLogReadBufferForRedoExtended
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 10
    functionsReached:
    - errcode
    - XLogRecGetBlock
    - FlushOneBuffer
    - LockBuffer
    - PageIsNew
    - BufferGetPage
    - XLogRecBlockImageApply
    - elog
    - Assert
    - PageGetLSN
    - XLogRecHasBlockImage
    - RestoreBlockImage
    - LockBufferForCleanup
    - PageSetLSN
    - errmsg_internal
    - ereport
    - BufferIsValid
    - MarkBufferDirty
    - XLogRecGetBlockTagExtended
    - XLogReadBufferExtended
    linkageType: ''
    returnType: XLogRedoAction
    signature: "XLogRedoAction XLogReadBufferForRedoExtended(XLogReaderState *record,\n\t\t\t\t\t\t\t
      \ uint8 block_id,\n\t\t\t\t\t\t\t  ReadBufferMode mode, bool get_cleanup_lock,\n\t\t\t\t\t\t\t
      \ Buffer *buf)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:492,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:495,1
    - Dst: ReadRecentBuffer
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:497,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:504,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:514,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:516,1
    - Dst: ReadBufferWithoutRelcache
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:521,1
    - Dst: log_invalid_page
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:529,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:536,1
    - Dst: ExtendBufferedRelTo
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:537,1
    - Dst: BMR_SMGR
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:537,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:550,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:557,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:559,1
    - Dst: log_invalid_page
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:560,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 5
    argNames:
    - rlocator
    - forknum
    - blkno
    - mode
    - recent_buffer
    argTypes:
    - RelFileLocator
    - ForkNumber
    - BlockNumber
    - ReadBufferMode
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 483
    functionDepth: 4
    functionLinenumber: 483
    functionLinenumberEnd: 566
    functionName: XLogReadBufferExtended
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 2
    functionsReached:
    - ReleaseBuffer
    - BMR_SMGR
    - ReadRecentBuffer
    - smgrcreate
    - log_invalid_page
    - Assert
    - PageIsNew
    - ReadBufferWithoutRelcache
    - BufferGetPage
    - BufferIsValid
    - ExtendBufferedRelTo
    - smgropen
    - smgrnblocks
    linkageType: ''
    returnType: Buffer
    signature: "Buffer XLogReadBufferExtended(RelFileLocator rlocator, ForkNumber
      forknum,\n\t\t\t\t\t   BlockNumber blkno, ReadBufferMode mode,\n\t\t\t\t\t   Buffer
      recent_buffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:601,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:617,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:617,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - rlocator
    argTypes:
    - RelFileLocator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 636
    functionName: CreateFakeRelcacheEntry
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 6
    functionsReached:
    - smgropen
    - palloc0_object
    - RelationGetRelationName
    - sprintf
    linkageType: ''
    returnType: Relation
    signature: Relation CreateFakeRelcacheEntry(RelFileLocator rlocator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fakerel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 645
    functionName: FreeFakeRelcacheEntry
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 6
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void FreeFakeRelcacheEntry(Relation fakerel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: forget_invalid_pages
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rlocator
    - forknum
    argTypes:
    - RelFileLocator
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 657
    functionName: XLogDropRelation
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - forget_invalid_pages
    linkageType: ''
    returnType: void
    signature: void XLogDropRelation(RelFileLocator rlocator, ForkNumber forknum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smgrdestroyall
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:673,1
    - Dst: forget_invalid_pages_db
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dbid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 664
    functionDepth: 2
    functionLinenumber: 664
    functionLinenumberEnd: 676
    functionName: XLogDropDatabase
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - smgrdestroyall
    - forget_invalid_pages_db
    linkageType: ''
    returnType: void
    signature: void XLogDropDatabase(Oid dbid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: forget_invalid_pages
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rlocator
    - forkNum
    - nblocks
    argTypes:
    - RelFileLocator
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 683
    functionDepth: 2
    functionLinenumber: 683
    functionLinenumberEnd: 688
    functionName: XLogTruncateRelation
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - forget_invalid_pages
    linkageType: ''
    returnType: void
    signature: "void XLogTruncateRelation(RelFileLocator rlocator, ForkNumber forkNum,\n\t\t\t\t\t
      BlockNumber nblocks)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:737,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:738,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:739,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:740,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:752,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:768,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:768,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:777,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:806,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:813,1
    - Dst: tliSwitchPoint
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:814,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:817,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:817,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:820,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:822,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:824,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 4
    argNames:
    - state
    - wantPage
    - wantLength
    - currTLI
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - uint32
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 730
    functionDepth: 2
    functionLinenumber: 730
    functionLinenumberEnd: 826
    functionName: XLogReadDetermineTimeline
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - readTimeLineHistory
    - tliOfPointInHistory
    - Assert
    - list_free_deep
    - tliSwitchPoint
    - Min
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: "void XLogReadDetermineTimeline(XLogReaderState *state, XLogRecPtr
      wantPage,\n\t\t\t\t\t\t  uint32 wantLength, TimeLineID currTLI)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:836,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:837,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:842,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:843,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:844,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:847,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:848,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:849,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - state
    - nextSegNo
    - tli_p
    argTypes:
    - XLogReaderState*
    - XLogSegNo
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 829
    functionDepth: 2
    functionLinenumber: 829
    functionLinenumberEnd: 851
    functionName: wal_segment_open
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - ereport
    - XLogFilePath
    - BasicOpenFile
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: "void wal_segment_open(XLogReaderState *state, XLogSegNo nextSegNo,\n\t\t\t\t
      TimeLineID *tli_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 860
    functionName: wal_segment_close
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void wal_segment_close(XLogReaderState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_local_xlog_page_guts
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - state
    - targetPagePtr
    - reqLen
    - targetRecPtr
    - cur_page
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 868
    functionDepth: 1
    functionLinenumber: 868
    functionLinenumberEnd: 874
    functionName: read_local_xlog_page
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - read_local_xlog_page_guts
    linkageType: ''
    returnType: int
    signature: "int read_local_xlog_page(XLogReaderState *state, XLogRecPtr targetPagePtr,\n\t\t\t\t\t
      int reqLen, XLogRecPtr targetRecPtr, char *cur_page)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_local_xlog_page_guts
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - state
    - targetPagePtr
    - reqLen
    - targetRecPtr
    - cur_page
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 887
    functionName: read_local_xlog_page_no_wait
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - read_local_xlog_page_guts
    linkageType: ''
    returnType: int
    signature: "int read_local_xlog_page_no_wait(XLogReaderState *state, XLogRecPtr
      targetPagePtr,\n\t\t\t\t\t\t\t int reqLen, XLogRecPtr targetRecPtr,\n\t\t\t\t\t\t\t
      char *cur_page)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:920,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:921,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:926,1
    - Dst: GetWALInsertionTimeLineIfSet
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:932,1
    - Dst: XLogReadDetermineTimeline
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:962,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:985,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:986,1
    - Dst: WALRead
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1034,1
    - Dst: WALReadRaiseError
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1036,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 6
    argNames:
    - state
    - targetPagePtr
    - reqLen
    - targetRecPtr
    - cur_page
    - wait_for_wal
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 892
    functionDepth: 3
    functionLinenumber: 892
    functionLinenumberEnd: 1040
    functionName: read_local_xlog_page_guts
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 2
    functionsReached:
    - GetFlushRecPtr
    - WALReadRaiseError
    - CHECK_FOR_INTERRUPTS
    - XLogReadDetermineTimeline
    - WALRead
    - GetXLogReplayRecPtr
    - GetWALInsertionTimeLineIfSet
    - RecoveryInProgress
    - pg_usleep
    linkageType: ''
    returnType: int
    signature: "int read_local_xlog_page_guts(XLogReaderState *state, XLogRecPtr targetPagePtr,\n\t\t\t\t\t\t
      \ int reqLen, XLogRecPtr targetRecPtr,\n\t\t\t\t\t\t  char *cur_page, bool wait_for_wal)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1052,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1057,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1058,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1059,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1064,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1065,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1066,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - errinfo
    argTypes:
    - WALReadError*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1046
    functionDepth: 2
    functionLinenumber: 1046
    functionLinenumberEnd: 1070
    functionName: WALReadRaiseError
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 1
    functionsReached:
    - errcode
    - ereport
    - errmsg
    - XLogFileName
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void WALReadRaiseError(WALReadError *errinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/twophase.c:255,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/twophase.c:255,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:257,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/twophase.c:258,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/twophase.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 264
    functionName: TwoPhaseShmemRequest
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    - mul_size
    - add_size
    linkageType: ''
    returnType: void
    signature: void TwoPhaseShmemRequest(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:283,1
    - Dst: GetNumberFromPGProc
      Src: /src/postgres/src/backend/access/transam/twophase.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 294
    functionName: TwoPhaseShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    - GetNumberFromPGProc
    linkageType: ''
    returnType: void
    signature: void TwoPhaseShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AtAbort_Twophase
      Src: /src/postgres/src/backend/access/transam/twophase.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 304
    functionName: AtProcExit_Twophase
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - AtAbort_Twophase
    linkageType: ''
    returnType: void
    signature: void AtProcExit_Twophase(int code, Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:335,1
    - Dst: RemoveGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:337,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:340,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 343
    functionName: AtAbort_Twophase
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - RemoveGXact
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void AtAbort_Twophase(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:352,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 357
    functionName: PostPrepare_Twophase
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void PostPrepare_Twophase(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/twophase.c:371,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:372,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:374,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:379,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:380,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:381,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:382,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/access/transam/twophase.c:387,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:391,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/twophase.c:397,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:399,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:401,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:408,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:409,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:410,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:411,1
    - Dst: MarkAsPreparingGuts
      Src: /src/postgres/src/backend/access/transam/twophase.c:416,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:421,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:424,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - fxid
    - gid
    - prepared_at
    - owner
    - databaseid
    argTypes:
    - FullTransactionId
    - char*
    - TimestampTz
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 427
    functionName: MarkAsPreparing
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - strcmp
    - errcode
    - Assert
    - before_shmem_exit
    - ereport
    - errhint
    - strlen
    - errmsg
    - LWLockRelease
    - MarkAsPreparingGuts
    linkageType: ''
    returnType: GlobalTransaction
    signature: "GlobalTransaction MarkAsPreparing(FullTransactionId fxid, const char
      *gid,\n\t\t\t\tTimestampTz prepared_at, Oid owner, Oid databaseid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:447,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:447,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:449,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:450,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/twophase.c:453,1
    - Dst: LocalTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:463,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/twophase.c:463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:469,1
    - Dst: dlist_node_init
      Src: /src/postgres/src/backend/access/transam/twophase.c:480,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/twophase.c:482,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/access/transam/twophase.c:484,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:495,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 6
    argNames:
    - gxact
    - fxid
    - gid
    - prepared_at
    - owner
    - databaseid
    argTypes:
    - GlobalTransaction
    - FullTransactionId
    - char*
    - TimestampTz
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 502
    functionName: MarkAsPreparingGuts
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - dlist_node_init
    - AmStartupProcess
    - Assert
    - LocalTransactionIdIsValid
    - pg_atomic_init_u64
    - XidFromFullTransactionId
    - dlist_init
    - MemSet
    - LWLockHeldByMeInMode
    - GetPGProcByNumber
    - strcpy
    linkageType: ''
    returnType: void
    signature: "void MarkAsPreparingGuts(GlobalTransaction gxact, FullTransactionId
      fxid,\n\t\t\t\t\tconst char *gid, TimestampTz prepared_at, Oid owner,\n\t\t\t\t\tOid
      databaseid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:515,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - gxact
    - nsubxacts
    - children
    argTypes:
    - GlobalTransaction
    - int
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 529
    functionName: GXactLoadSubxactData
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - GetPGProcByNumber
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void GXactLoadSubxactData(GlobalTransaction gxact, int nsubxacts,\n\t\t\t\t\t
      TransactionId *children)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:543,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:546,1
    - Dst: ProcArrayAdd
      Src: /src/postgres/src/backend/access/transam/twophase.c:552,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:552,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - gxact
    - lock_held
    argTypes:
    - GlobalTransaction
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 553
    functionName: MarkAsPrepared
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - Assert
    - LWLockRelease
    - GetPGProcByNumber
    - ProcArrayAdd
    linkageType: ''
    returnType: void
    signature: void MarkAsPrepared(GlobalTransaction gxact, bool lock_held)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/access/transam/twophase.c:567,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:571,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:576,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/twophase.c:581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:586,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:587,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:588,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/access/transam/twophase.c:591,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:592,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:593,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:594,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:595,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:604,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:605,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:606,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:607,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:613,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:618,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:620,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:621,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:622,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - gid
    - user
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 627
    functionName: LockGXact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - strcmp
    - errcode
    - superuser_arg
    - before_shmem_exit
    - ereport
    - errhint
    - errmsg
    - LWLockRelease
    - GetPGProcByNumber
    linkageType: ''
    returnType: GlobalTransaction
    signature: GlobalTransaction LockGXact(const char *gid, Oid user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:640,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:640,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:658,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - gxact
    argTypes:
    - GlobalTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 659
    functionName: RemoveGXact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - Assert
    - elog
    - LWLockHeldByMeInMode
    linkageType: ''
    returnType: void
    signature: void RemoveGXact(GlobalTransaction gxact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:680,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:684,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/transam/twophase.c:691,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:694,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:697,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - gxacts
    argTypes:
    - GlobalTransaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 673
    functionDepth: 1
    functionLinenumber: 673
    functionLinenumberEnd: 700
    functionName: GetPreparedTransactionList
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - palloc_array
    - LWLockAcquire
    - LWLockRelease
    - memcpy
    linkageType: ''
    returnType: int
    signature: int GetPreparedTransactionList(GlobalTransaction *gxacts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/access/transam/twophase.c:724,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/access/transam/twophase.c:730,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/twophase.c:735,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/transam/twophase.c:739,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:740,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:742,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:744,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:746,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:748,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/transam/twophase.c:751,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/access/transam/twophase.c:752,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/transam/twophase.c:758,1
    - Dst: GetPreparedTransactionList
      Src: /src/postgres/src/backend/access/transam/twophase.c:761,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/twophase.c:764,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/access/transam/twophase.c:767,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:773,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:786,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:787,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:788,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:789,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:790,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/twophase.c:792,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:793,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/access/transam/twophase.c:794,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/access/transam/twophase.c:797,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 718
    functionDepth: 6
    functionLinenumber: 718
    functionLinenumberEnd: 798
    functionName: pg_prepared_xact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - heap_form_tuple
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - TupleDescFinalize
    - palloc_object
    - ObjectIdGetDatum
    - GetPreparedTransactionList
    - TupleDescInitEntry
    - CreateTemplateTupleDesc
    - SRF_PERCALL_SETUP
    - BlessTupleDesc
    - GetPGProcByNumber
    - TimestampTzGetDatum
    - TransactionIdGetDatum
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - CStringGetTextDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_prepared_xact(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:817,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/access/transam/twophase.c:817,1
    - Dst: FullTransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:823,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:827,1
    - Dst: FullTransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:833,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:841,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:844,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:845,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - fxid
    - lock_held
    argTypes:
    - FullTransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 851
    functionName: TwoPhaseGetGXact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - elog
    - LWLockAcquire
    - Assert
    - FullTransactionIdEquals
    - XidFromFullTransactionId
    - LWLockHeldByMe
    - LWLockRelease
    linkageType: ''
    returnType: GlobalTransaction
    signature: GlobalTransaction TwoPhaseGetGXact(FullTransactionId fxid, bool lock_held)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:868,1
    - Dst: VirtualTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:868,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:869,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:879,1
    - Dst: GET_VXID_FROM_PGPROC
      Src: /src/postgres/src/backend/access/transam/twophase.c:880,1
    - Dst: VirtualTransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:881,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:887,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:894,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:898,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - vxid
    - have_more
    argTypes:
    - VirtualTransactionId
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 901
    functionName: TwoPhaseGetXidByVirtualXID
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - Assert
    - VirtualTransactionIdEquals
    - XidFromFullTransactionId
    - GET_VXID_FROM_PGPROC
    - LWLockRelease
    - VirtualTransactionIdIsValid
    - GetPGProcByNumber
    linkageType: ''
    returnType: TransactionId
    signature: "TransactionId TwoPhaseGetXidByVirtualXID(VirtualTransactionId vxid,\n\t\t\t\t\t\t
      \  bool *have_more)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseGetGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:916,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fxid
    - lock_held
    argTypes:
    - FullTransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 913
    functionDepth: 2
    functionLinenumber: 913
    functionLinenumberEnd: 919
    functionName: TwoPhaseGetDummyProcNumber
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 3
    functionsReached:
    - TwoPhaseGetGXact
    linkageType: ''
    returnType: ProcNumber
    signature: ProcNumber TwoPhaseGetDummyProcNumber(FullTransactionId fxid, bool
      lock_held)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseGetGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:931,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fxid
    - lock_held
    argTypes:
    - FullTransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 928
    functionDepth: 2
    functionLinenumber: 928
    functionLinenumberEnd: 934
    functionName: TwoPhaseGetDummyProc
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - TwoPhaseGetGXact
    - GetPGProcByNumber
    linkageType: ''
    returnType: PGPROC
    signature: 'PGPROC *

      TwoPhaseGetDummyProc(FullTransactionId fxid, bool lock_held)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:951,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:951,1
    - Dst: FullTransactionIdFromAllowableAt
      Src: /src/postgres/src/backend/access/transam/twophase.c:952,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 948
    functionDepth: 3
    functionLinenumber: 948
    functionLinenumberEnd: 953
    functionName: AdjustToFullTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReadNextFullTransactionId
    - FullTransactionIdFromAllowableAt
    - TransactionIdIsValid
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId AdjustToFullTransactionId(TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/twophase.c:958,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:959,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:960,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - fxid
    argTypes:
    - char*
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 961
    functionName: TwoPhaseFilePath
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - XidFromFullTransactionId
    - EpochFromFullTransactionId
    - snprintf
    linkageType: ''
    returnType: int
    signature: int TwoPhaseFilePath(char *path, FullTransactionId fxid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1032,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/transam/twophase.c:1036,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/twophase.c:1042,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:1043,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:1046,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1029
    functionDepth: 1
    functionLinenumber: 1029
    functionLinenumberEnd: 1050
    functionName: save_state_data
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - memcpy
    - Max
    - palloc
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void save_state_data(const void *data, uint32 len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:1060,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:1061,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/transam/twophase.c:1071,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/twophase.c:1075,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:1076,1
    - Dst: xactGetCommittedChildren
      Src: /src/postgres/src/backend/access/transam/twophase.c:1090,1
    - Dst: smgrGetPendingDeletes
      Src: /src/postgres/src/backend/access/transam/twophase.c:1091,1
    - Dst: smgrGetPendingDeletes
      Src: /src/postgres/src/backend/access/transam/twophase.c:1092,1
    - Dst: pgstat_get_transactional_drops
      Src: /src/postgres/src/backend/access/transam/twophase.c:1094,1
    - Dst: pgstat_get_transactional_drops
      Src: /src/postgres/src/backend/access/transam/twophase.c:1096,1
    - Dst: xactGetCommittedInvalidationMessages
      Src: /src/postgres/src/backend/access/transam/twophase.c:1097,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1099,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1104,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1105,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1113,1
    - Dst: GXactLoadSubxactData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1115,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1119,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1120,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1124,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1125,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1129,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1131,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1135,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1137,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1141,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1143,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 50
    argCount: 1
    argNames:
    - gxact
    argTypes:
    - GlobalTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1057
    functionDepth: 2
    functionLinenumber: 1057
    functionLinenumberEnd: 1145
    functionName: StartPrepare
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - pfree
    - xactGetCommittedChildren
    - xactGetCommittedInvalidationMessages
    - GXactLoadSubxactData
    - XidFromFullTransactionId
    - save_state_data
    - Max
    - smgrGetPendingDeletes
    - pgstat_get_transactional_drops
    - palloc
    - strlen
    - GetPGProcByNumber
    linkageType: ''
    returnType: void
    signature: void StartPrepare(GlobalTransaction gxact)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RegisterTwoPhaseRecord
      Src: /src/postgres/src/backend/access/transam/twophase.c:1158,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1163,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1181,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1182,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1183,1
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/transam/twophase.c:1202,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:1204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1206,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1209,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1211,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/transam/twophase.c:1213,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1215,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/twophase.c:1220,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/twophase.c:1224,1
    - Dst: MarkAsPrepared
      Src: /src/postgres/src/backend/access/transam/twophase.c:1243,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:1259,1
    - Dst: SyncRepWaitForLSN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - gxact
    argTypes:
    - GlobalTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1150
    functionDepth: 5
    functionLinenumber: 1150
    functionLinenumberEnd: 1271
    functionName: EndPrepare
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - XLogEnsureRecordSpace
    - XLogInsert
    - END_CRIT_SECTION
    - errcode
    - Assert
    - XLogBeginInsert
    - SyncRepWaitForLSN
    - ereport
    - START_CRIT_SECTION
    - XLogFlush
    - XLogRegisterData
    - XLogSetRecordFlags
    - errmsg
    - replorigin_session_advance
    - RegisterTwoPhaseRecord
    - MarkAsPrepared
    linkageType: ''
    returnType: void
    signature: void EndPrepare(GlobalTransaction gxact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1285,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - rmid
    - info
    - data
    - len
    argTypes:
    - TwoPhaseRmgrId
    - uint16
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1276
    functionDepth: 2
    functionLinenumber: 1276
    functionLinenumberEnd: 1288
    functionName: RegisterTwoPhaseRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - save_state_data
    linkageType: ''
    returnType: void
    signature: "void RegisterTwoPhaseRecord(TwoPhaseRmgrId rmid, uint16 info,\n\t\t\t\t\t
      \  const void *data, uint32 len)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseFilePath
      Src: /src/postgres/src/backend/access/transam/twophase.c:1313,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1315,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1321,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1323,1
    - Dst: fstat
      Src: /src/postgres/src/backend/access/transam/twophase.c:1332,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1333,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1335,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1337,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1338,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1342,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/twophase.c:1343,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1349,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1350,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1351,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1352,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:1358,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/twophase.c:1360,1
    - Dst: read
      Src: /src/postgres/src/backend/access/transam/twophase.c:1361,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1365,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1369,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1370,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/twophase.c:1374,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1377,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1378,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1379,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1383,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1384,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1385,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1389,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1390,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1391,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1394,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1395,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1396,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1400,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1401,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1402,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1403,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - fxid
    - missing_ok
    argTypes:
    - FullTransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1300
    functionDepth: 2
    functionLinenumber: 1300
    functionLinenumberEnd: 1407
    functionName: ReadTwoPhaseFile
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - errmsg_plural
    - OpenTransientFile
    - errcode
    - FIN_CRC32C
    - EQ_CRC32C
    - COMP_CRC32C
    - ereport
    - pgstat_report_wait_start
    - pgstat_report_wait_end
    - INIT_CRC32C
    - TwoPhaseFilePath
    - errmsg
    - palloc
    - MAXALIGN
    - fstat
    - CloseTransientFile
    - errcode_for_file_access
    - read
    linkageType: ''
    returnType: char
    signature: 'char *

      ReadTwoPhaseFile(FullTransactionId fxid, bool missing_ok)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/backend/access/transam/twophase.c:1424,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/access/transam/twophase.c:1425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1430,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1432,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/twophase.c:1433,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/access/transam/twophase.c:1435,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/access/transam/twophase.c:1436,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1441,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1442,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1443,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1444,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1446,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1447,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1448,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1449,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/twophase.c:1452,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/twophase.c:1453,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1454,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1455,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1456,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1457,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1460,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/transam/twophase.c:1462,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1462,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:1463,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1463,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1463,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1465,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - lsn
    - buf
    - len
    argTypes:
    - XLogRecPtr
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1466
      start: 1417
    functionDepth: 1
    functionLinenumber: 1417
    functionLinenumberEnd: 1466
    functionName: XlogReadTwoPhaseData
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - XLogRecGetDataLen
    - memcpy
    - errcode
    - LSN_FORMAT_ARGS
    - ereport
    - palloc_array
    - XLogReaderAllocate
    - XLogBeginRead
    - XLogRecGetRmid
    - XLogRecGetInfo
    - errmsg
    - XL_ROUTINE
    - errdetail
    - XLogReaderFree
    - XLogReadRecord
    - errcode_for_file_access
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void XlogReadTwoPhaseData(XLogRecPtr lsn, char **buf, int *len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1480,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:1480,1
    - Dst: AdjustToFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:1486,1
    - Dst: ReadTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1487,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:1493,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1472
    functionDepth: 4
    functionLinenumber: 1472
    functionLinenumberEnd: 1497
    functionName: StandbyTransactionIdIsPrepared
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - AdjustToFullTransactionId
    - Assert
    - pfree
    - TransactionIdEquals
    - ReadTwoPhaseFile
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: bool StandbyTransactionIdIsPrepared(TransactionId xid)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LockGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:1527,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/transam/twophase.c:1527,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:1528,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:1530,1
    - Dst: ReadTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1538,1
    - Dst: XlogReadTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1540,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1547,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:1547,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1548,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1549,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1551,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1553,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1555,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1557,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1559,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1561,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/twophase.c:1564,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1567,1
    - Dst: RecordTransactionCommitPrepared
      Src: /src/postgres/src/backend/access/transam/twophase.c:1578,1
    - Dst: RecordTransactionAbortPrepared
      Src: /src/postgres/src/backend/access/transam/twophase.c:1586,1
    - Dst: ProcArrayRemove
      Src: /src/postgres/src/backend/access/transam/twophase.c:1593,1
    - Dst: DropRelationFiles
      Src: /src/postgres/src/backend/access/transam/twophase.c:1624,1
    - Dst: pgstat_execute_transactional_drops
      Src: /src/postgres/src/backend/access/transam/twophase.c:1627,1
    - Dst: pgstat_execute_transactional_drops
      Src: /src/postgres/src/backend/access/transam/twophase.c:1629,1
    - Dst: RelationCacheInitFilePreInvalidate
      Src: /src/postgres/src/backend/access/transam/twophase.c:1641,1
    - Dst: SendSharedInvalidMessages
      Src: /src/postgres/src/backend/access/transam/twophase.c:1642,1
    - Dst: RelationCacheInitFilePostInvalidate
      Src: /src/postgres/src/backend/access/transam/twophase.c:1644,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:1653,1
    - Dst: ProcessRecords
      Src: /src/postgres/src/backend/access/transam/twophase.c:1657,1
    - Dst: ProcessRecords
      Src: /src/postgres/src/backend/access/transam/twophase.c:1659,1
    - Dst: PredicateLockTwoPhaseFinish
      Src: /src/postgres/src/backend/access/transam/twophase.c:1661,1
    - Dst: RemoveGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:1670,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:1676,1
    - Dst: AtEOXact_PgStat
      Src: /src/postgres/src/backend/access/transam/twophase.c:1679,1
    - Dst: RemoveTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1685,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1689,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1691,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 63
    argCount: 2
    argNames:
    - gid
    - isCommit
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1502
    functionDepth: 3
    functionLinenumber: 1502
    functionLinenumberEnd: 1692
    functionName: FinishPreparedTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - GetUserId
    - RESUME_INTERRUPTS
    - HOLD_INTERRUPTS
    - ReadTwoPhaseFile
    - ProcessRecords
    - AtEOXact_PgStat
    - TransactionIdLatest
    - Assert
    - PredicateLockTwoPhaseFinish
    - pfree
    - XidFromFullTransactionId
    - RelationCacheInitFilePostInvalidate
    - MAXALIGN
    - ProcArrayRemove
    - RemoveGXact
    - RecordTransactionAbortPrepared
    - XlogReadTwoPhaseData
    - pgstat_execute_transactional_drops
    - DropRelationFiles
    - GetPGProcByNumber
    - LockGXact
    - SendSharedInvalidMessages
    - RelationCacheInitFilePreInvalidate
    - TransactionIdEquals
    - RecordTransactionCommitPrepared
    - LWLockRelease
    - RemoveTwoPhaseFile
    linkageType: ''
    returnType: void
    signature: void FinishPreparedTransaction(const char *gid, bool isCommit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1705,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1709,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1714,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - bufptr
    - fxid
    - callbacks
    argTypes:
    - char*
    - FullTransactionId
    - TwoPhaseCallback[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1697
    functionDepth: 1
    functionLinenumber: 1697
    functionLinenumberEnd: 1716
    functionName: ProcessRecords
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - Assert
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: "void ProcessRecords(char *bufptr, FullTransactionId fxid,\n\t\t\t
      \  const TwoPhaseCallback callbacks[])"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseFilePath
      Src: /src/postgres/src/backend/access/transam/twophase.c:1733,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/twophase.c:1734,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1736,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1737,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1738,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - fxid
    - giveWarning
    argTypes:
    - FullTransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1728
    functionDepth: 2
    functionLinenumber: 1728
    functionLinenumberEnd: 1739
    functionName: RemoveTwoPhaseFile
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - unlink
    - ereport
    - TwoPhaseFilePath
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void RemoveTwoPhaseFile(FullTransactionId fxid, bool giveWarning)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1755,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1756,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1757,1
    - Dst: TwoPhaseFilePath
      Src: /src/postgres/src/backend/access/transam/twophase.c:1759,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1761,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1764,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1765,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1766,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/twophase.c:1770,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/twophase.c:1771,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1776,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1777,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1778,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/twophase.c:1780,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1785,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1786,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1787,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/twophase.c:1789,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/twophase.c:1795,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/twophase.c:1796,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1797,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1798,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1799,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/twophase.c:1800,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1802,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1803,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1805,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - fxid
    - content
    - len
    argTypes:
    - FullTransactionId
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1747
    functionDepth: 2
    functionLinenumber: 1747
    functionLinenumberEnd: 1806
    functionName: RecreateTwoPhaseFile
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - OpenTransientFile
    - CloseTransientFile
    - FIN_CRC32C
    - COMP_CRC32C
    - ereport
    - write
    - INIT_CRC32C
    - pgstat_report_wait_end
    - TwoPhaseFilePath
    - errmsg
    - pgstat_report_wait_start
    - pg_fsync
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void RecreateTwoPhaseFile(FullTransactionId fxid, void *content, int
      len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_START
      Src: /src/postgres/src/backend/access/transam/twophase.c:1836,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:1854,1
    - Dst: XlogReadTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1870,1
    - Dst: RecreateTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1871,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1875,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:1879,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/access/transam/twophase.c:1887,1
    - Dst: TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/twophase.c:1889,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1892,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/twophase.c:1893,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - redo_horizon
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1899
      start: 1827
    functionDepth: 3
    functionLinenumber: 1827
    functionLinenumberEnd: 1899
    functionName: CheckPointTwoPhase
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - errmsg_plural
    - LWLockAcquire
    - RecreateTwoPhaseFile
    - pfree
    - TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_START
    - ereport
    - fsync_fname
    - LWLockRelease
    - TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_DONE
    - XlogReadTwoPhaseData
    linkageType: ''
    returnType: void
    signature: void CheckPointTwoPhase(XLogRecPtr redo_horizon)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:1915,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/twophase.c:1916,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/twophase.c:1917,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1919,1
    - Dst: strspn
      Src: /src/postgres/src/backend/access/transam/twophase.c:1920,1
    - Dst: FullTransactionIdFromU64
      Src: /src/postgres/src/backend/access/transam/twophase.c:1925,1
    - Dst: strtou64
      Src: /src/postgres/src/backend/access/transam/twophase.c:1925,1
    - Dst: ProcessTwoPhaseBuffer
      Src: /src/postgres/src/backend/access/transam/twophase.c:1927,1
    - Dst: PrepareRedoAdd
      Src: /src/postgres/src/backend/access/transam/twophase.c:1932,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:1936,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/twophase.c:1937,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1909
    functionDepth: 1
    functionLinenumber: 1909
    functionLinenumberEnd: 1938
    functionName: restoreTwoPhaseData
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - strtou64
    - LWLockAcquire
    - AllocateDir
    - FreeDir
    - ProcessTwoPhaseBuffer
    - FullTransactionIdFromU64
    - strspn
    - strlen
    - LWLockRelease
    - ReadDir
    - PrepareRedoAdd
    linkageType: ''
    returnType: void
    signature: void restoreTwoPhaseData(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:1975,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:1982,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1989,1
    - Dst: ProcessTwoPhaseBuffer
      Src: /src/postgres/src/backend/access/transam/twophase.c:1991,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2002,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/twophase.c:2003,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:2013,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:2018,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2024,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2026,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - xids_p
    - nxids_p
    argTypes:
    - TransactionId**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 1971
    functionDepth: 2
    functionLinenumber: 1971
    functionLinenumberEnd: 2035
    functionName: PrescanPreparedTransactions
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - TransactionIdPrecedes
    - LWLockAcquire
    - Assert
    - pfree
    - repalloc
    - XidFromFullTransactionId
    - LWLockRelease
    - palloc
    - ProcessTwoPhaseBuffer
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId PrescanPreparedTransactions(TransactionId **xids_p, int
      *nxids_p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:2055,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2061,1
    - Dst: ProcessTwoPhaseBuffer
      Src: /src/postgres/src/backend/access/transam/twophase.c:2063,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2067,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2069,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2050
    functionDepth: 1
    functionLinenumber: 2050
    functionLinenumberEnd: 2070
    functionName: StandbyRecoverPreparedTransactions
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - LWLockAcquire
    - Assert
    - pfree
    - LWLockRelease
    - ProcessTwoPhaseBuffer
    linkageType: ''
    returnType: void
    signature: void StandbyRecoverPreparedTransactions(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:2093,1
    - Dst: ProcessTwoPhaseBuffer
      Src: /src/postgres/src/backend/access/transam/twophase.c:2113,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2120,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2121,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2122,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2125,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:2125,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2126,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2127,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2129,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2131,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2132,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2133,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2134,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2135,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2136,1
    - Dst: MarkAsPreparingGuts
      Src: /src/postgres/src/backend/access/transam/twophase.c:2142,1
    - Dst: GXactLoadSubxactData
      Src: /src/postgres/src/backend/access/transam/twophase.c:2149,1
    - Dst: MarkAsPrepared
      Src: /src/postgres/src/backend/access/transam/twophase.c:2150,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2152,1
    - Dst: ProcessRecords
      Src: /src/postgres/src/backend/access/transam/twophase.c:2157,1
    - Dst: StandbyReleaseLockTree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2165,1
    - Dst: PostPrepare_Twophase
      Src: /src/postgres/src/backend/access/transam/twophase.c:2171,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2173,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:2175,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2088
    functionDepth: 3
    functionLinenumber: 2088
    functionLinenumberEnd: 2179
    functionName: RecoverPreparedTransactions
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - LWLockAcquire
    - Assert
    - pfree
    - GXactLoadSubxactData
    - ereport
    - XidFromFullTransactionId
    - EpochFromFullTransactionId
    - TransactionIdEquals
    - MAXALIGN
    - ProcessRecords
    - StandbyReleaseLockTree
    - errmsg
    - LWLockRelease
    - ProcessTwoPhaseBuffer
    - PostPrepare_Twophase
    - MarkAsPrepared
    - MarkAsPreparingGuts
    linkageType: ''
    returnType: void
    signature: void RecoverPreparedTransactions(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2204,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2207,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2207,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/transam/twophase.c:2210,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2210,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/transam/twophase.c:2211,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2211,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2216,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2217,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2218,1
    - Dst: RemoveTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2224,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2225,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2226,1
    - Dst: PrepareRedoRemoveFull
      Src: /src/postgres/src/backend/access/transam/twophase.c:2227,1
    - Dst: FullTransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:2233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2237,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2238,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2239,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2240,1
    - Dst: RemoveTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2245,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2246,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2247,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2248,1
    - Dst: PrepareRedoRemoveFull
      Src: /src/postgres/src/backend/access/transam/twophase.c:2249,1
    - Dst: ReadTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2257,1
    - Dst: XlogReadTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/twophase.c:2262,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:2267,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2267,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2272,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2273,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2274,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2276,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2277,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2278,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2279,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2280,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2288,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2294,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/transam/twophase.c:2294,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2294,1
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2298,1
    - Dst: SubTransSetParent
      Src: /src/postgres/src/backend/access/transam/twophase.c:2301,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2301,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 5
    argNames:
    - fxid
    - prepare_start_lsn
    - fromdisk
    - setParent
    - setNextXid
    argTypes:
    - FullTransactionId
    - XLogRecPtr
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2192
    functionDepth: 4
    functionLinenumber: 2192
    functionLinenumberEnd: 2305
    functionName: ProcessTwoPhaseBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 4
    functionsReached:
    - PrepareRedoRemoveFull
    - errcode
    - FullTransactionIdFollowsOrEquals
    - ReadTwoPhaseFile
    - SubTransSetParent
    - XLogRecPtrIsValid
    - AdvanceNextFullTransactionIdPastXid
    - Assert
    - XidFromFullTransactionId
    - TransactionIdDidAbort
    - errmsg
    - MAXALIGN
    - XlogReadTwoPhaseData
    - TransactionIdDidCommit
    - ereport
    - EpochFromFullTransactionId
    - TransactionIdEquals
    - TransactionIdFollows
    - LWLockHeldByMeInMode
    - RemoveTwoPhaseFile
    linkageType: ''
    returnType: char
    signature: "char *\nProcessTwoPhaseBuffer(FullTransactionId fxid,\n\t\t\t\t\t
      \ XLogRecPtr prepare_start_lsn,\n\t\t\t\t\t  bool fromdisk,\n\t\t\t\t\t  bool
      setParent, bool setNextXid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INJECTION_POINT_LOAD
      Src: /src/postgres/src/backend/access/transam/twophase.c:2343,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:2345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2348,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/access/transam/twophase.c:2351,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/twophase.c:2357,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/twophase.c:2367,1
    - Dst: XactLogCommitRecord
      Src: /src/postgres/src/backend/access/transam/twophase.c:2374,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/twophase.c:2385,1
    - Dst: TransactionTreeSetCommitTsData
      Src: /src/postgres/src/backend/access/transam/twophase.c:2399,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/twophase.c:2410,1
    - Dst: TransactionIdCommitTree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2413,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:2418,1
    - Dst: SyncRepWaitForLSN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2426,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 11
    argNames:
    - xid
    - nchildren
    - children
    - nrels
    - rels
    - nstats
    - stats
    - ninvalmsgs
    - invalmsgs
    - initfileinval
    - gid
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - int
    - RelFileLocator*
    - int
    - xl_xact_stats_item*
    - int
    - SharedInvalidationMessage*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2427
      start: 2318
    functionDepth: 5
    functionLinenumber: 2318
    functionLinenumberEnd: 2427
    functionName: RecordTransactionCommitPrepared
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - INJECTION_POINT_LOAD
    - GetCurrentTimestamp
    - Assert
    - SyncRepWaitForLSN
    - pg_write_barrier
    - START_CRIT_SECTION
    - XLogFlush
    - TransactionTreeSetCommitTsData
    - XactLogCommitRecord
    - INJECTION_POINT_CACHED
    - replorigin_session_advance
    - END_CRIT_SECTION
    - TransactionIdCommitTree
    linkageType: ''
    returnType: void
    signature: "void RecordTransactionCommitPrepared(TransactionId xid,\n\t\t\t\t\t\t\t\tint
      nchildren,\n\t\t\t\t\t\t\t\tTransactionId *children,\n\t\t\t\t\t\t\t\tint nrels,\n\t\t\t\t\t\t\t\tRelFileLocator
      *rels,\n\t\t\t\t\t\t\t\tint nstats,\n\t\t\t\t\t\t\t\txl_xact_stats_item *stats,\n\t\t\t\t\t\t\t\tint
      ninvalmsgs,\n\t\t\t\t\t\t\t\tSharedInvalidationMessage *invalmsgs,\n\t\t\t\t\t\t\t\tbool
      initfileinval,\n\t\t\t\t\t\t\t\tconst char *gid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/transam/twophase.c:2461,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:2462,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:2465,1
    - Dst: XactLogAbortRecord
      Src: /src/postgres/src/backend/access/transam/twophase.c:2472,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/twophase.c:2472,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/twophase.c:2481,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/twophase.c:2485,1
    - Dst: TransactionIdAbortTree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2491,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:2493,1
    - Dst: SyncRepWaitForLSN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2501,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 8
    argNames:
    - xid
    - nchildren
    - children
    - nrels
    - rels
    - nstats
    - stats
    - gid
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - int
    - RelFileLocator*
    - int
    - xl_xact_stats_item*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2502
      start: 2437
    functionDepth: 5
    functionLinenumber: 2437
    functionLinenumberEnd: 2502
    functionName: RecordTransactionAbortPrepared
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - TransactionIdDidCommit
    - SyncRepWaitForLSN
    - START_CRIT_SECTION
    - XLogFlush
    - TransactionIdAbortTree
    - XactLogAbortRecord
    - replorigin_session_advance
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void RecordTransactionAbortPrepared(TransactionId xid,\n\t\t\t\t\t\t\t
      \  int nchildren,\n\t\t\t\t\t\t\t   TransactionId *children,\n\t\t\t\t\t\t\t
      \  int nrels,\n\t\t\t\t\t\t\t   RelFileLocator *rels,\n\t\t\t\t\t\t\t   int
      nstats,\n\t\t\t\t\t\t\t   xl_xact_stats_item *stats,\n\t\t\t\t\t\t\t   const
      char *gid)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2522,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2522,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2523,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/twophase.c:2523,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2527,1
    - Dst: FullTransactionIdFromAllowableAt
      Src: /src/postgres/src/backend/access/transam/twophase.c:2528,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2532,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2556,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2560,1
    - Dst: TwoPhaseFilePath
      Src: /src/postgres/src/backend/access/transam/twophase.c:2561,1
    - Dst: access
      Src: /src/postgres/src/backend/access/transam/twophase.c:2563,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2565,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2566,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/twophase.c:2568,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/twophase.c:2569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2574,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:2575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2576,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2581,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2582,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2583,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:2584,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2596,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:2598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2601,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/access/transam/twophase.c:2607,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:2611,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2612,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2613,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 5
    argNames:
    - fxid
    - buf
    - start_lsn
    - end_lsn
    - origin_id
    argTypes:
    - FullTransactionId
    - char*
    - XLogRecPtr
    - XLogRecPtr
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2614
      start: 2512
    functionDepth: 3
    functionLinenumber: 2512
    functionLinenumberEnd: 2614
    functionName: PrepareRedoAdd
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - FullTransactionIdFromAllowableAt
    - replorigin_advance
    - errcode
    - errhint
    - RecoveryInProgress
    - LSN_FORMAT_ARGS
    - elog
    - XLogRecPtrIsValid
    - Assert
    - XidFromFullTransactionId
    - errmsg
    - MAXALIGN
    - ereport
    - EpochFromFullTransactionId
    - TwoPhaseFilePath
    - errcode_for_file_access
    - FullTransactionIdIsValid
    - access
    - LWLockHeldByMeInMode
    - errdetail
    - strcpy
    linkageType: ''
    returnType: void
    signature: "void PrepareRedoAdd(FullTransactionId fxid, char *buf,\n\t\t\t   XLogRecPtr
      start_lsn, XLogRecPtr end_lsn,\n\t\t\t   ReplOriginId origin_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2632,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2633,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/twophase.c:2633,1
    - Dst: FullTransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:2639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2641,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:2656,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2657,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2658,1
    - Dst: RemoveTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2661,1
    - Dst: RemoveGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:2663,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - fxid
    - giveWarning
    argTypes:
    - FullTransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2625
    functionDepth: 3
    functionLinenumber: 2625
    functionLinenumberEnd: 2664
    functionName: PrepareRedoRemoveFull
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - FullTransactionIdEquals
    - RemoveTwoPhaseFile
    - XidFromFullTransactionId
    - EpochFromFullTransactionId
    - LWLockHeldByMeInMode
    - RecoveryInProgress
    - RemoveGXact
    linkageType: ''
    returnType: void
    signature: void PrepareRedoRemoveFull(FullTransactionId fxid, bool giveWarning)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdFromAllowableAt
      Src: /src/postgres/src/backend/access/transam/twophase.c:2673,1
    - Dst: PrepareRedoRemoveFull
      Src: /src/postgres/src/backend/access/transam/twophase.c:2675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - giveWarning
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2676
      start: 2669
    functionDepth: 4
    functionLinenumber: 2669
    functionLinenumberEnd: 2676
    functionName: PrepareRedoRemove
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - FullTransactionIdFromAllowableAt
    - PrepareRedoRemoveFull
    linkageType: ''
    returnType: void
    signature: void PrepareRedoRemove(TransactionId xid, bool giveWarning)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:2700,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/twophase.c:2706,1
    - Dst: ReadTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2725,1
    - Dst: XlogReadTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/twophase.c:2726,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2735,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2739,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2742,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - gid
    - prepare_end_lsn
    - origin_prepare_timestamp
    argTypes:
    - char*
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2693
    functionDepth: 3
    functionLinenumber: 2693
    functionLinenumberEnd: 2744
    functionName: LookupGXact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - strcmp
    - Assert
    - pfree
    - ReadTwoPhaseFile
    - LWLockRelease
    - XlogReadTwoPhaseData
    linkageType: ''
    returnType: bool
    signature: "bool LookupGXact(const char *gid, XLogRecPtr prepare_end_lsn,\n\t\t\tTimestampTz
      origin_prepare_timestamp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2755,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2755,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2757,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2758,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2759,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/twophase.c:2760,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/twophase.c:2762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - subid
    - xid
    - gid_res
    - szgid
    argTypes:
    - Oid
    - TransactionId
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2763
      start: 2752
    functionDepth: 1
    functionLinenumber: 2752
    functionLinenumberEnd: 2763
    functionName: TwoPhaseTransactionGid
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - errcode
    - Assert
    - ereport
    - OidIsValid
    - TransactionIdIsValid
    - snprintf
    linkageType: ''
    returnType: void
    signature: void TwoPhaseTransactionGid(Oid subid, TransactionId xid, char *gid_res,
      int szgid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/backend/access/transam/twophase.c:2779,1
    - Dst: TwoPhaseTransactionGid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2793,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/twophase.c:2795,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - subid
    - gid
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2796
      start: 2770
    functionDepth: 2
    functionLinenumber: 2770
    functionLinenumberEnd: 2796
    functionName: IsTwoPhaseTransactionGidForSubid
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - sscanf
    - TwoPhaseTransactionGid
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool IsTwoPhaseTransactionGidForSubid(Oid subid, char *gid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:2807,1
    - Dst: IsTwoPhaseTransactionGidForSubid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2814,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2820,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2823
      start: 2802
    functionDepth: 3
    functionLinenumber: 2802
    functionLinenumberEnd: 2823
    functionName: LookupGXactBySubid
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - IsTwoPhaseTransactionGidForSubid
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: bool
    signature: bool LookupGXactBySubid(Oid subid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:2839,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:2860,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2868,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2870,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/twophase.c:2871,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2875,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2878
      start: 2834
    functionDepth: 2
    functionLinenumber: 2834
    functionLinenumberEnd: 2878
    functionName: TwoPhaseGetOldestXidInCommit
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - LWLockAcquire
    - XidFromFullTransactionId
    - LWLockRelease
    - GetPGProcByNumber
    - TransactionIdIsValid
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId TwoPhaseGetOldestXidInCommit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:77,1
    - Dst: va_start
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:79,1
    - Dst: vsnprintf
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:80,1
    - Dst: va_end
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - state
    - fmt
    argTypes:
    - XLogReaderState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 84
    functionName: report_invalid_record
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 0
    functionsReached:
    - va_start
    - vsnprintf
    - va_end
    - _
    linkageType: ''
    returnType: void
    signature: void report_invalid_record(XLogReaderState *state, const char *fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - state
    - buffer
    - size
    argTypes:
    - XLogReaderState*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: XLogReaderSetDecodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void XLogReaderSetDecodeBuffer(XLogReaderState *state, void *buffer,
      size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc_extended
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:114,1
    - Dst: palloc_extended
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:129,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:133,1
    - Dst: WALOpenSegmentInit
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:138,1
    - Dst: palloc_extended
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:144,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:148,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:149,1
    - Dst: allocate_recordbuf
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - wal_segment_size
    - waldir
    - routine
    - private_data
    argTypes:
    - int
    - char*
    - XLogReaderRoutine*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 160
    functionName: XLogReaderAllocate
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 6
    functionsReached:
    - pfree
    - allocate_recordbuf
    - palloc_extended
    - WALOpenSegmentInit
    linkageType: ''
    returnType: XLogReaderState
    signature: "XLogReaderState *\nXLogReaderAllocate(int wal_segment_size, const
      char *waldir,\n\t\t\t\t   XLogReaderRoutine *routine, void *private_data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogReaderState*::routine::segment_close
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:166,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:169,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:171,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:173,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:174,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 176
    functionName: XLogReaderFree
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 6
    functionsReached:
    - pfree
    - XLogReaderState*::routine::segment_close
    linkageType: ''
    returnType: void
    signature: void XLogReaderFree(XLogReaderState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:197,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:197,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:200,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - reclength
    argTypes:
    - XLogReaderState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 203
    functionName: allocate_recordbuf
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - pfree
    - Max
    - palloc
    linkageType: ''
    returnType: void
    signature: void allocate_recordbuf(XLogReaderState *state, uint32 reclength)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - seg
    - segcxt
    - segsize
    - waldir
    argTypes:
    - WALOpenSegment*
    - WALSegmentContext*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 219
    functionName: WALOpenSegmentInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void WALOpenSegmentInit(WALOpenSegment *seg, WALSegmentContext *segcxt,\n\t\t\t\t
      \  int segsize, const char *waldir)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:235,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:235,1
    - Dst: ResetDecoder
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - state
    - RecPtr
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 244
    functionName: XLogBeginRead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 5
    functionsReached:
    - Assert
    - XLogRecPtrIsValid
    - ResetDecoder
    linkageType: ''
    returnType: void
    signature: void XLogBeginRead(XLogReaderState *state, XLogRecPtr RecPtr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:265,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:274,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:277,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:282,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:290,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 312
    functionName: XLogReleasePreviousRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - Assert
    - pfree
    - unlikely
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogReleasePreviousRecord(XLogReaderState *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogReleasePreviousRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:347,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - state
    - errormsg
    argTypes:
    - XLogReaderState*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 372
    functionName: XLogNextRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - XLogReleasePreviousRecord
    - XLogRecPtrIsValid
    - Assert
    linkageType: ''
    returnType: DecodedXLogRecord
    signature: 'DecodedXLogRecord *

      XLogNextRecord(XLogReaderState *state, char **errormsg)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogReleasePreviousRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:399,1
    - Dst: XLogReaderHasQueuedRecordOrError
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:405,1
    - Dst: XLogReadAhead
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:406,1
    - Dst: XLogNextRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - state
    - errormsg
    argTypes:
    - XLogReaderState*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 390
    functionDepth: 3
    functionLinenumber: 390
    functionLinenumberEnd: 423
    functionName: XLogReadRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 5
    functionsReached:
    - Assert
    - XLogReaderHasQueuedRecordOrError
    - XLogReleasePreviousRecord
    - XLogNextRecord
    - XLogReadAhead
    linkageType: ''
    returnType: XLogRecord
    signature: 'XLogRecord *

      XLogReadRecord(XLogReaderState *state, char **errormsg)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DecodeXLogRecordRequiredSpace
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:442,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:446,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:450,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:521,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 3
    argNames:
    - state
    - xl_tot_len
    - allow_oversized
    argTypes:
    - XLogReaderState*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 527
    functionName: XLogReadRecordAlloc
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 0
    functionsReached:
    - unlikely
    - DecodeXLogRecordRequiredSpace
    - palloc
    linkageType: ''
    returnType: DecodedXLogRecord
    signature: 'DecodedXLogRecord *

      XLogReadRecordAlloc(XLogReaderState *state, size_t xl_tot_len, bool allow_oversized)'
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:582,1
    - Dst: XRecOffIsValid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:582,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:599,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:600,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:610,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:621,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:622,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:630,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:631,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:636,1
    - Dst: ValidXLogRecordHeader
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:660,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:670,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:672,1
    - Dst: XLogReadRecordAlloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:685,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:714,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:717,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:738,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:760,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:762,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:773,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:777,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:782,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:783,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:791,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:794,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:797,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:805,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:808,1
    - Dst: ValidXLogRecordHeader
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:816,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:836,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:836,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:837,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:838,1
    - Dst: allocate_recordbuf
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:839,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:840,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:844,1
    - Dst: ValidXLogRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:847,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:850,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:853,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:858,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:859,1
    - Dst: ValidXLogRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:866,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:869,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:882,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:891,1
    - Dst: XLogReadRecordAlloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:892,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:896,1
    - Dst: DecodeXLogRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:911,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:919,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:952,1
    - Dst: XLogReaderInvalReadState
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:958,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 186
    argCount: 2
    argNames:
    - state
    - nonblocking
    argTypes:
    - XLogReaderState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 529
    functionDepth: 2
    functionLinenumber: 529
    functionLinenumberEnd: 967
    functionName: XLogDecodeNextRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 0
    functionsReached:
    - XLogPageHeaderSize
    - DecodeXLogRecord
    - XLogReaderInvalReadState
    - LSN_FORMAT_ARGS
    - XLogRecPtrIsValid
    - memcpy
    - Assert
    - pfree
    - ReadPageInternal
    - MAXALIGN
    - lengthof
    - XLogSegmentOffset
    - report_invalid_record
    - ValidXLogRecord
    - XRecOffIsValid
    - allocate_recordbuf
    - XLogReadRecordAlloc
    - ValidXLogRecordHeader
    - Min
    linkageType: ''
    returnType: XLogPageReadResult
    signature: XLogPageReadResult XLogDecodeNextRecord(XLogReaderState *state, bool
      nonblocking)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogDecodeNextRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:988,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - state
    - nonblocking
    argTypes:
    - XLogReaderState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 977
    functionDepth: 3
    functionLinenumber: 977
    functionLinenumberEnd: 993
    functionName: XLogReadAhead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 2
    functionsReached:
    - Assert
    - XLogDecodeNextRecord
    linkageType: ''
    returnType: DecodedXLogRecord
    signature: 'DecodedXLogRecord *

      XLogReadAhead(XLogReaderState *state, bool nonblocking)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1019,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1021,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1022,1
    - Dst: XLogReaderState*::routine::page_read
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1052,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1061,1
    - Dst: XLogReaderValidatePageHeader
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1063,1
    - Dst: XLogReaderState*::routine::page_read
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1072,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1072,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1080,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1086,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1091,1
    - Dst: XLogReaderState*::routine::page_read
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1093,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1093,1
    - Dst: XLogReaderValidatePageHeader
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1105,1
    - Dst: XLogReaderInvalReadState
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1116,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 50
    argCount: 3
    argNames:
    - state
    - pageptr
    - reqLen
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1119
    functionName: ReadPageInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - XLogPageHeaderSize
    - Assert
    - XLogReaderInvalReadState
    - XLogReaderState*::routine::page_read
    - Max
    - XLogReaderValidatePageHeader
    - XLByteToSeg
    linkageType: ''
    returnType: int
    signature: int ReadPageInternal(XLogReaderState *state, XLogRecPtr pageptr, int
      reqLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1124
    functionDepth: 0
    functionLinenumber: 1124
    functionLinenumberEnd: 1130
    functionName: XLogReaderInvalReadState
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XLogReaderInvalReadState(XLogReaderState *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1145,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1147,1
    - Dst: RmgrIdIsValid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1151,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1153,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1155,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1166,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1168,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1169,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1182,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1184,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1185,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 5
    argNames:
    - state
    - RecPtr
    - PrevRecPtr
    - record
    - randAccess
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - XLogRecPtr
    - XLogRecord*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1138
    functionDepth: 1
    functionLinenumber: 1138
    functionLinenumberEnd: 1191
    functionName: ValidXLogRecordHeader
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - RmgrIdIsValid
    - report_invalid_record
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: bool
    signature: "bool ValidXLogRecordHeader(XLogReaderState *state, XLogRecPtr RecPtr,\n\t\t\t\t\t
      \ XLogRecPtr PrevRecPtr, XLogRecord *record,\n\t\t\t\t\t  bool randAccess)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1209,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1212,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1213,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1215,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1216,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1218,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1220,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - state
    - record
    - recptr
    argTypes:
    - XLogReaderState*
    - XLogRecord*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1227
    functionName: ValidXLogRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - report_invalid_record
    - Assert
    - FIN_CRC32C
    - EQ_CRC32C
    - COMP_CRC32C
    - INIT_CRC32C
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: bool
    signature: bool ValidXLogRecord(XLogReaderState *state, XLogRecord *record, XLogRecPtr
      recptr)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1243,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1245,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1246,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1252,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1254,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1258,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1267,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1269,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1273,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1285,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1293,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1299,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1308,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1311,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1315,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1329,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1331,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1333,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1335,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1355,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1357,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1362,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 3
    argNames:
    - state
    - recptr
    - phdr
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1235
    functionDepth: 2
    functionLinenumber: 1235
    functionLinenumberEnd: 1371
    functionName: XLogReaderValidatePageHeader
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 2
    functionsReached:
    - XLogSegmentOffset
    - report_invalid_record
    - Assert
    - LSN_FORMAT_ARGS
    - XLogFileName
    - XLByteToSeg
    linkageType: ''
    returnType: bool
    signature: "bool XLogReaderValidatePageHeader(XLogReaderState *state, XLogRecPtr
      recptr,\n\t\t\t\t\t\t\t char *phdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1376
    functionDepth: 0
    functionLinenumber: 1376
    functionLinenumberEnd: 1381
    functionName: XLogReaderResetError
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XLogReaderResetError(XLogReaderState *state)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1409,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1409,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1441,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1447,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1450,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1466,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1475,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1491,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1492,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1499,1
    - Dst: XLogReaderInvalReadState
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1505,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 3
    argNames:
    - state
    - RecPtr
    - errormsg
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1400
    functionDepth: 4
    functionLinenumber: 1400
    functionLinenumberEnd: 1519
    functionName: XLogFindNextRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - XLogPageHeaderSize
    - Assert
    - XLogReaderInvalReadState
    - XLogReadRecord
    - XLogBeginRead
    - ReadPageInternal
    - MAXALIGN
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr,
      char **errormsg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1554,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1562,1
    - Dst: XLogReaderState*::routine::segment_close
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1568,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1570,1
    - Dst: XLogReaderState*::routine::segment_open
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1574,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1589,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1591,1
    - Dst: pg_pread
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1596,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1599,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1613,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 6
    argNames:
    - state
    - buf
    - startptr
    - count
    - tli
    - errinfo
    argTypes:
    - XLogReaderState*
    - char*
    - XLogRecPtr
    - Size
    - TimeLineID
    - WALReadError*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1532
    functionDepth: 3
    functionLinenumber: 1532
    functionLinenumberEnd: 1624
    functionName: WALRead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 2
    functionsReached:
    - XLogSegmentOffset
    - XLogReaderState*::routine::segment_close
    - Assert
    - XLByteInSeg
    - pgstat_count_io_op_time
    - pgstat_report_wait_end
    - XLogReaderState*::routine::segment_open
    - pgstat_prepare_io_time
    - pgstat_report_wait_start
    - pg_pread
    - XLByteToSeg
    linkageType: ''
    returnType: bool
    signature: "bool WALRead(XLogReaderState *state,\n\t\tchar *buf, XLogRecPtr startptr,
      Size count, TimeLineID tli,\n\t\tWALReadError *errinfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1645,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1658
      start: 1635
    functionDepth: 0
    functionLinenumber: 1635
    functionLinenumberEnd: 1658
    functionName: ResetDecoder
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void ResetDecoder(XLogReaderState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - xl_tot_len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1688
      start: 1669
    functionDepth: 0
    functionLinenumber: 1669
    functionLinenumberEnd: 1688
    functionName: DecodeXLogRecordRequiredSpace
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t DecodeXLogRecordRequiredSpace(size_t xl_tot_len)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1744,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1751,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1763,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1771,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1775,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1789,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1792,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1801,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1809,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1813,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1815,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1820,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1823,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1830,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1831,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1832,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1836,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1839,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1856,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1861,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1872,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1876,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1883,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1886,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1889,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1898,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1901,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1904,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1910,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1917,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1919,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1925,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1929,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1931,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1958,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1964,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1970,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1972,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1981,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1983,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1990,1
    - Dst: DecodeXLogRecordRequiredSpace
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1990,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1996,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1998,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 153
    argCount: 5
    argNames:
    - state
    - decoded
    - record
    - lsn
    - errormsg
    argTypes:
    - XLogReaderState*
    - DecodedXLogRecord*
    - XLogRecord*
    - XLogRecPtr
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1702
    functionDepth: 1
    functionLinenumber: 1702
    functionLinenumberEnd: 2003
    functionName: DecodeXLogRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - report_invalid_record
    - COPY_HEADER_FIELD
    - memcpy
    - Assert
    - BKPIMAGE_COMPRESSED
    - DecodeXLogRecordRequiredSpace
    - MAXALIGN
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: bool
    signature: "bool DecodeXLogRecord(XLogReaderState *state,\n\t\t\t\t DecodedXLogRecord
      *decoded,\n\t\t\t\t XLogRecord *record,\n\t\t\t\t XLogRecPtr lsn,\n\t\t\t\t
      char **errormsg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _dst
    - ','
    - _size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1712
    functionDepth: 0
    functionLinenumber: 1712
    functionLinenumberEnd: 1720
    functionName: COPY_HEADER_FIELD
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_HEADER_FIELD(_dst, _size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2016,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2020,1
    - Dst: pg_fatal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - record
    - block_id
    - rlocator
    - forknum
    - blknum
    argTypes:
    - XLogReaderState*
    - uint8
    - RelFileLocator*
    - ForkNumber*
    - BlockNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2027
      start: 2011
    functionDepth: 1
    functionLinenumber: 2011
    functionLinenumberEnd: 2027
    functionName: XLogRecGetBlockTag
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 13
    functionsReached:
    - elog
    - XLogRecGetBlockTagExtended
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id,\n\t\t\t\t
      \  RelFileLocator *rlocator, ForkNumber *forknum,\n\t\t\t\t   BlockNumber *blknum)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2045,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 6
    argNames:
    - record
    - block_id
    - rlocator
    - forknum
    - blknum
    - prefetch_buffer
    argTypes:
    - XLogReaderState*
    - uint8
    - RelFileLocator*
    - ForkNumber*
    - BlockNumber*
    - Buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2037
    functionDepth: 1
    functionLinenumber: 2037
    functionLinenumberEnd: 2058
    functionName: XLogRecGetBlockTagExtended
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 10
    functionsReached:
    - XLogRecHasBlockRef
    linkageType: ''
    returnType: bool
    signature: "bool XLogRecGetBlockTagExtended(XLogReaderState *record, uint8 block_id,\n\t\t\t\t\t\t
      \  RelFileLocator *rlocator, ForkNumber *forknum,\n\t\t\t\t\t\t   BlockNumber
      *blknum,\n\t\t\t\t\t\t   Buffer *prefetch_buffer)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - record
    - block_id
    - len
    argTypes:
    - XLogReaderState*
    - uint8
    - Size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 2065
    functionDepth: 0
    functionLinenumber: 2065
    functionLinenumberEnd: 2088
    functionName: XLogRecGetBlockData
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2106,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2108,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2114,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2115,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2123,1
    - Dst: pglz_decompress
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2130,1
    - Dst: LZ4_decompress_safe
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2137,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2141,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2142,1
    - Dst: ZSTD_decompress
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2151,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2155,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2158,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2159,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2167,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2168,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2175,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2176,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2187,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2191,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2193,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2194,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 3
    argNames:
    - record
    - block_id
    - page
    argTypes:
    - XLogReaderState*
    - uint8
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2200
      start: 2096
    functionDepth: 2
    functionLinenumber: 2096
    functionLinenumberEnd: 2200
    functionName: RestoreBlockImage
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 3
    functionsReached:
    - report_invalid_record
    - ZSTD_isError
    - memcpy
    - pglz_decompress
    - BKPIMAGE_COMPRESSED
    - LZ4_decompress_safe
    - MemSet
    - ZSTD_decompress
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: bool
    signature: bool RestoreBlockImage(XLogReaderState *record, uint8 block_id, char
      *page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2214,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2214,1
    - Dst: FullTransactionIdFromAllowableAt
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2216,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2218
      start: 2207
    functionDepth: 3
    functionLinenumber: 2207
    functionLinenumberEnd: 2218
    functionName: XLogRecGetFullXid
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 0
    functionsReached:
    - Assert
    - FullTransactionIdFromAllowableAt
    - AmStartupProcess
    - XLogRecGetXid
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId XLogRecGetFullXid(XLogReaderState *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:101,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:111,1
    - Dst: GetWalRcvWriteRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:115,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:116,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:124,1
    - Dst: GetWalRcvFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:129,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:130,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:133,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:137,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:140,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - lsnType
    argTypes:
    - WaitLSNType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 98
    functionDepth: 3
    functionLinenumber: 98
    functionLinenumberEnd: 142
    functionName: GetCurrentLSNForWaitType
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 0
    functionsReached:
    - elog
    - GetFlushRecPtr
    - Assert
    - GetXLogReplayRecPtr
    - Max
    - pg_unreachable
    - GetWalRcvWriteRecPtr
    - GetWalRcvFlushRecPtr
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetCurrentLSNForWaitType(WaitLSNType lsnType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:151,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 156
    functionName: WaitLSNShmemRequest
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 0
    functionsReached:
    - mul_size
    - add_size
    linkageType: ''
    returnType: void
    signature: void WaitLSNShmemRequest(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:165,1
    - Dst: pairingheap_initialize
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:166,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 172
    functionName: WaitLSNShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 0
    functionsReached:
    - pg_atomic_init_u64
    - pairingheap_initialize
    - memset
    linkageType: ''
    returnType: void
    signature: void WaitLSNShmemInit(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap_const_container
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:181,1
    - Dst: pairingheap_const_container
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - pairingheap_node*
    - pairingheap_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 190
    functionName: waitlsn_cmp
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 0
    functionsReached:
    - pairingheap_const_container
    linkageType: ''
    returnType: int
    signature: int waitlsn_cmp(const pairingheap_node *a, const pairingheap_node *b,
      void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:201,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:203,1
    - Dst: pairingheap_first
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:205,1
    - Dst: pairingheap_container
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:206,1
    - Dst: pg_atomic_write_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - lsnType
    argTypes:
    - WaitLSNType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 212
    functionName: updateMinWaitedLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 0
    functionsReached:
    - pairingheap_first
    - Assert
    - pairingheap_container
    - pg_atomic_write_membarrier_u64
    - pairingheap_is_empty
    linkageType: ''
    returnType: void
    signature: void updateMinWaitedLSN(WaitLSNType lsnType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:223,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:231,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:232,1
    - Dst: updateMinWaitedLSN
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:234,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - lsn
    - lsnType
    argTypes:
    - XLogRecPtr
    - WaitLSNType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 217
    functionDepth: 3
    functionLinenumber: 217
    functionLinenumberEnd: 237
    functionName: addLSNWaiter
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 0
    functionsReached:
    - pairingheap_add
    - updateMinWaitedLSN
    - LWLockAcquire
    - Assert
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void addLSNWaiter(XLogRecPtr lsn, WaitLSNType lsnType)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:248,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:250,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:252,1
    - Dst: pairingheap_remove
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:256,1
    - Dst: updateMinWaitedLSN
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:258,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - lsnType
    argTypes:
    - WaitLSNType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 242
    functionDepth: 3
    functionLinenumber: 242
    functionLinenumberEnd: 262
    functionName: deleteLSNWaiter
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 0
    functionsReached:
    - updateMinWaitedLSN
    - LWLockAcquire
    - Assert
    - LWLockRelease
    - pairingheap_remove
    linkageType: ''
    returnType: void
    signature: void deleteLSNWaiter(WaitLSNType lsnType)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:289,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:296,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:302,1
    - Dst: pairingheap_first
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:304,1
    - Dst: pairingheap_container
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:308,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:313,1
    - Dst: pairingheap_remove_first
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:315,1
    - Dst: updateMinWaitedLSN
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:324,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:325,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:335,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:335,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - lsnType
    - currentLSN
    argTypes:
    - WaitLSNType
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 282
    functionDepth: 3
    functionLinenumber: 282
    functionLinenumberEnd: 338
    functionName: wakeupWaiters
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - updateMinWaitedLSN
    - GetPGProcByNumber
    - LWLockAcquire
    - pairingheap_first
    - Assert
    - pairingheap_container
    - pairingheap_remove_first
    - LWLockRelease
    - SetLatch
    - pairingheap_is_empty
    linkageType: ''
    returnType: void
    signature: void wakeupWaiters(WaitLSNType lsnType, XLogRecPtr currentLSN)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:348,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:355,1
    - Dst: pg_atomic_read_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:356,1
    - Dst: wakeupWaiters
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:359,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - lsnType
    - currentLSN
    argTypes:
    - WaitLSNType
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 343
    functionDepth: 4
    functionLinenumber: 343
    functionLinenumberEnd: 360
    functionName: WaitLSNWakeup
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 4
    functionsReached:
    - Assert
    - pg_atomic_read_membarrier_u64
    - XLogRecPtrIsValid
    - wakeupWaiters
    linkageType: ''
    returnType: void
    signature: void WaitLSNWakeup(WaitLSNType lsnType, XLogRecPtr currentLSN)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: deleteLSNWaiter
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 365
    functionDepth: 4
    functionLinenumber: 365
    functionLinenumberEnd: 379
    functionName: WaitLSNCleanup
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 2
    functionsReached:
    - deleteLSNWaiter
    linkageType: ''
    returnType: void
    signature: void WaitLSNCleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - WaitLSNType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 392
    functionName: WaitLSNTypeRequiresRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool WaitLSNTypeRequiresRecovery(WaitLSNType t)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:410,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:413,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:417,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:417,1
    - Dst: addLSNWaiter
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:426,1
    - Dst: GetCurrentLSNForWaitType
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:434,1
    - Dst: WaitLSNTypeRequiresRecovery
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:437,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:437,1
    - Dst: deleteLSNWaiter
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:443,1
    - Dst: PromoteIsTriggered
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:445,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:458,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:458,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:463,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:465,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:473,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:475,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:476,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:478,1
    - Dst: deleteLSNWaiter
      Src: /src/postgres/src/backend/access/transam/xlogwait.c:486,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 3
    argNames:
    - lsnType
    - targetLSN
    - timeout
    argTypes:
    - WaitLSNType
    - XLogRecPtr
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 402
    functionDepth: 4
    functionLinenumber: 402
    functionLinenumberEnd: 495
    functionName: WaitForLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogwait.c
    functionUses: 4
    functionsReached:
    - GetCurrentTimestamp
    - TimestampTzPlusMilliseconds
    - deleteLSNWaiter
    - Assert
    - PromoteIsTriggered
    - errcode
    - errcontext
    - ereport
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - TimestampDifferenceMilliseconds
    - WaitLatch
    - errmsg
    - WaitLSNTypeRequiresRecovery
    - RecoveryInProgress
    - GetCurrentLSNForWaitType
    - addLSNWaiter
    linkageType: ''
    returnType: WaitLSNResult
    signature: WaitLSNResult WaitForLSN(WaitLSNType lsnType, XLogRecPtr targetLSN,
      int64 timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: TransactionIdToCTsPage
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 TransactionIdToCTsPage(TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: TransactionIdToCTsEntry
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TransactionIdToCTsEntry(xid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:189,1
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:194,1
    - Dst: SetXidCommitTsInPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:199,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:215,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:221,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 5
    argNames:
    - xid
    - nsubxids
    - subxids
    - timestamp
    - nodeid
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - TimestampTz
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 224
    functionName: TransactionTreeSetCommitTsData
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 3
    functionsReached:
    - TransactionIdPrecedes
    - LWLockAcquire
    - TransactionIdToCTsPage
    - SetXidCommitTsInPage
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: "void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids,\n\t\t\t\t\t\t\t
      \  TransactionId *subxids, TimestampTz timestamp,\n\t\t\t\t\t\t\t   ReplOriginId
      nodeid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:235,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:239,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:241,1
    - Dst: TransactionIdSetCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:243,1
    - Dst: TransactionIdSetCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:245,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - xid
    - nsubxids
    - subxids
    - ts
    - nodeid
    - pageno
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - TimestampTz
    - ReplOriginId
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 230
    functionDepth: 3
    functionLinenumber: 230
    functionLinenumberEnd: 250
    functionName: SetXidCommitTsInPage
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - TransactionIdSetCommitTs
    - LWLockRelease
    - SimpleLruGetBankLock
    - SimpleLruReadPage
    linkageType: ''
    returnType: void
    signature: "void SetXidCommitTsInPage(TransactionId xid, int nsubxids,\n\t\t\t\t\t
      TransactionId *subxids, TimestampTz ts,\n\t\t\t\t\t ReplOriginId nodeid, int64
      pageno)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToCTsEntry
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:264,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:264,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - xid
    - ts
    - nodeid
    - slotno
    argTypes:
    - TransactionId
    - TimestampTz
    - ReplOriginId
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 272
    functionName: TransactionIdSetCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - TransactionIdToCTsEntry
    - TransactionIdIsNormal
    - memcpy
    - Assert
    linkageType: ''
    returnType: void
    signature: "void TransactionIdSetCommitTs(TransactionId xid, TimestampTz ts,\n\t\t\t\t\t\t
      ReplOriginId nodeid, int slotno)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:286,1
    - Dst: TransactionIdToCTsEntry
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:287,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:293,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:296,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:297,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:306,1
    - Dst: error_commit_ts_disabled
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:310,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:329,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:329,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:329,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:330,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:335,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:336,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:337,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:346,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:347,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:356,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:356,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - xid
    - ts
    - nodeid
    argTypes:
    - TransactionId
    - TimestampTz*
    - ReplOriginId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 282
    functionDepth: 4
    functionLinenumber: 282
    functionLinenumberEnd: 358
    functionName: TransactionIdGetCommitTsData
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - LWLockAcquire
    - memcpy
    - errcode
    - TransactionIdToCTsPage
    - TransactionIdToCTsEntry
    - Assert
    - ereport
    - error_commit_ts_disabled
    - SimpleLruReadPage_ReadOnly
    - TransactionIdIsNormal
    - errmsg
    - LWLockRelease
    - SimpleLruGetBankLock
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: "bool TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts,\n\t\t\t\t\t\t\t
      ReplOriginId *nodeid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:373,1
    - Dst: error_commit_ts_disabled
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:377,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:384,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ts
    - nodeid
    argTypes:
    - TimestampTz*
    - ReplOriginId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 387
    functionName: GetLatestCommitTsData
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - error_commit_ts_disabled
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetLatestCommitTsData(TimestampTz *ts, ReplOriginId *nodeid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:392,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:393,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:394,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:395,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:396,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 400
    functionName: error_commit_ts_disabled
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 2
    functionsReached:
    - errcode
    - ereport
    - errhint
    - errmsg
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void error_commit_ts_disabled(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:408,1
    - Dst: TransactionIdGetCommitTsData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:412,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:415,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 405
    functionDepth: 5
    functionLinenumber: 405
    functionLinenumberEnd: 418
    functionName: pg_xact_commit_timestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - TransactionIdGetCommitTsData
    - PG_RETURN_TIMESTAMPTZ
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum pg_xact_commit_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetLatestCommitTsData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:440,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:442,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:443,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:445,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:447,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:451,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:454,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:457,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:461,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:463,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 428
    functionDepth: 6
    functionLinenumber: 428
    functionLinenumberEnd: 464
    functionName: pg_last_committed_xact
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - elog
    - GetLatestCommitTsData
    - heap_form_tuple
    - PG_RETURN_DATUM
    - TransactionIdGetDatum
    - TimestampTzGetDatum
    - HeapTupleGetDatum
    - TransactionIdIsNormal
    - memset
    - ObjectIdGetDatum
    - get_call_result_type
    linkageType: ''
    returnType: Datum
    signature: Datum pg_last_committed_xact(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:475,1
    - Dst: TransactionIdGetCommitTsData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:484,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:486,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:487,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:491,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:495,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:498,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:502,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:504,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 472
    functionDepth: 6
    functionLinenumber: 472
    functionLinenumberEnd: 505
    functionName: pg_xact_commit_timestamp_origin
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - elog
    - TransactionIdGetCommitTsData
    - heap_form_tuple
    - PG_RETURN_DATUM
    - TimestampTzGetDatum
    - HeapTupleGetDatum
    - memset
    - ObjectIdGetDatum
    - get_call_result_type
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum pg_xact_commit_timestamp_origin(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruAutotuneBuffers
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:519,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:521,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 522
    functionName: CommitTsShmemBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - SimpleLruAutotuneBuffers
    - Max
    - Min
    linkageType: ''
    returnType: int
    signature: int CommitTsShmemBuffers(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:536,1
    - Dst: CommitTsShmemBuffers
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:536,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:537,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:547,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:550,1
    - Dst: CommitTsShmemBuffers
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:556,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 528
    functionDepth: 2
    functionLinenumber: 528
    functionLinenumberEnd: 570
    functionName: CommitTsShmemRequest
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - Assert
    - CommitTsShmemBuffers
    - SetConfigOption
    - snprintf
    linkageType: ''
    returnType: void
    signature: void CommitTsShmemRequest(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:576,1
    - Dst: SlruPagePrecedesUnitTests
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 581
    functionName: CommitTsShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - SlruPagePrecedesUnitTests
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: void
    signature: void CommitTsShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_slru_buffers
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 590
    functionName: check_commit_ts_buffers
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - check_slru_buffers
    linkageType: ''
    returnType: bool
    signature: bool check_commit_ts_buffers(int *newval, void **extra, GucSource source)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 606
    functionName: BootStrapCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BootStrapCommitTs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ActivateCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 616
    functionName: StartupCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - ActivateCommitTs
    linkageType: ''
    returnType: void
    signature: void StartupCommitTs(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DeactivateCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:635,1
    - Dst: ActivateCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 638
    functionName: CompleteCommitTsInitialization
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - DeactivateCommitTs
    - ActivateCommitTs
    linkageType: ''
    returnType: void
    signature: void CompleteCommitTsInitialization(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ActivateCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:663,1
    - Dst: DeactivateCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:666,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - newvalue
    - oldvalue
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 667
    functionName: CommitTsParameterChange
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - DeactivateCommitTs
    - ActivateCommitTs
    linkageType: ''
    returnType: void
    signature: void CommitTsParameterChange(bool newvalue, bool oldvalue)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:695,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:699,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:702,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:705,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:707,1
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:708,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:713,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:728,1
    - Dst: ReadNextTransactionId
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:732,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:734,1
    - Dst: SimpleLruDoesPhysicalPageExist
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:737,1
    - Dst: SimpleLruZeroAndWritePage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:738,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:741,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:743,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 685
    functionDepth: 4
    functionLinenumber: 685
    functionLinenumberEnd: 744
    functionName: ActivateCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 3
    functionsReached:
    - LWLockAcquire
    - TransactionIdToCTsPage
    - SimpleLruDoesPhysicalPageExist
    - XidFromFullTransactionId
    - ReadNextTransactionId
    - SimpleLruZeroAndWritePage
    - pg_atomic_write_u64
    - IsBootstrapProcessingMode
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void ActivateCommitTs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:766,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:770,1
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:790,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 756
    functionDepth: 3
    functionLinenumber: 756
    functionLinenumberEnd: 793
    functionName: DeactivateCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 2
    functionsReached:
    - SlruScanDirectory
    - LWLockAcquire
    - LWLockRelease
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: void
    signature: void DeactivateCommitTs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 798
    functionDepth: 4
    functionLinenumber: 798
    functionLinenumberEnd: 807
    functionName: CheckPointCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - SimpleLruWriteAll
    linkageType: ''
    returnType: void
    signature: void CheckPointCommitTs(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:831,1
    - Dst: TransactionIdToCTsEntry
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:839,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:840,1
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:843,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:845,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:847,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:850,1
    - Dst: XLogSimpleInsertInt64
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:854,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:856,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - newestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 820
    functionDepth: 4
    functionLinenumber: 820
    functionLinenumberEnd: 857
    functionName: ExtendCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - SimpleLruZeroPage
    - LWLockAcquire
    - XLogSimpleInsertInt64
    - Assert
    - TransactionIdToCTsPage
    - TransactionIdToCTsEntry
    - TransactionIdEquals
    - LWLockRelease
    - SimpleLruGetBankLock
    linkageType: ''
    returnType: void
    signature: void ExtendCommitTs(TransactionId newestXact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:874,1
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:877,1
    - Dst: WriteTruncateXlogRec
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:882,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:885,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oldestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 865
    functionDepth: 4
    functionLinenumber: 865
    functionLinenumberEnd: 886
    functionName: TruncateCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - TransactionIdToCTsPage
    - SlruScanDirectory
    - WriteTruncateXlogRec
    - SimpleLruTruncate
    linkageType: ''
    returnType: void
    signature: void TruncateCommitTs(TransactionId oldestXact)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:898,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:901,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:903,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:908,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:912,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - oldestXact
    - newestXact
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 891
    functionDepth: 2
    functionLinenumber: 891
    functionLinenumberEnd: 913
    functionName: SetCommitTsLimit
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 2
    functionsReached:
    - Assert
    - TransactionIdPrecedes
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void SetCommitTsLimit(TransactionId oldestXact, TransactionId newestXact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:921,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:923,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:925,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - oldestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 918
    functionDepth: 2
    functionLinenumber: 918
    functionLinenumberEnd: 926
    functionName: AdvanceOldestCommitTsXid
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void AdvanceOldestCommitTsXid(TransactionId oldestXact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:963,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:964,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 952
    functionDepth: 2
    functionLinenumber: 952
    functionLinenumberEnd: 965
    functionName: CommitTsPagePrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    linkageType: ''
    returnType: bool
    signature: bool CommitTsPagePrecedes(int64 page1, int64 page2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opaque_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 973
    functionName: commit_ts_errdetail_for_io_error
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - errdetail
    linkageType: ''
    returnType: int
    signature: int commit_ts_errdetail_for_io_error(const void *opaque_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:986,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:987,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - pageno
    - oldestXid
    argTypes:
    - int64
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 978
    functionDepth: 3
    functionLinenumber: 978
    functionLinenumberEnd: 989
    functionName: WriteTruncateXlogRec
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 2
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void WriteTruncateXlogRec(int64 pageno, TransactionId oldestXid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:997,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1000,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1000,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1006,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1006,1
    - Dst: SimpleLruZeroAndWritePage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1007,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1011,1
    - Dst: AdvanceOldestCommitTsXid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1013,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1019,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1022,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1025,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 994
    functionDepth: 4
    functionLinenumber: 994
    functionLinenumberEnd: 1026
    functionName: commit_ts_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - Assert
    - SimpleLruTruncate
    - SimpleLruZeroAndWritePage
    - AdvanceOldestCommitTsXid
    - pg_atomic_write_u64
    - XLogRecHasAnyBlockRefs
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void commit_ts_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruSyncFileTag
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1034,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ftag
    - path
    argTypes:
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1035
    functionName: committssyncfiletag
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - SlruSyncFileTag
    linkageType: ''
    returnType: int
    signature: int committssyncfiletag(const FileTag *ftag, char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p1
    - ','
    - p2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 28
    functionName: point_point_distance
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgproc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: point_point_distance(p1,p2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:36,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:36,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:37,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:37,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:38,1
    - Dst: hypot
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:54,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - point
    - box
    argTypes:
    - Point*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 55
    functionName: point_box_distance
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgproc.c
    functionUses: 0
    functionsReached:
    - hypot
    - isnan
    - get_float8_nan
    linkageType: ''
    returnType: double
    signature: double point_box_distance(Point *point, BOX *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:67,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:72,1
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:74,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:74,1
    - Dst: point_box_distance
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:75,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - key
    - isLeaf
    - orderbys
    - norderbys
    argTypes:
    - Datum
    - bool
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 79
    functionName: spg_key_orderbys_distances
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgproc.c
    functionUses: 0
    functionsReached:
    - DatumGetBoxP
    - palloc_array
    - DatumGetPointP
    - point_box_distance
    - point_point_distance
    linkageType: ''
    returnType: double
    signature: "double *\nspg_key_orderbys_distances(Datum key, bool isLeaf,\n\t\t\t\t\t\t
      \  ScanKey orderbys, int norderbys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/spgist/spgproc.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - orig
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: box_copy
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgproc.c
    functionUses: 0
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: BOX
    signature: 'BOX *

      box_copy(BOX *orig)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:48,1
    - Dst: spgdoinsert
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:56,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:59,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:65,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - index
    - tid
    - values
    - isnull
    - tupleIsAlive
    - state
    argTypes:
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 67
    functionName: spgistBuildCallback
    functionSourceFile: /src/postgres/src/backend/access/spgist/spginsert.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - spgdoinsert
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void spgistBuildCallback(Relation index, ItemPointer tid, Datum *values,\n\t\t\t\t\tbool
      *isnull, bool tupleIsAlive, void *state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:82,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:83,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:84,1
    - Dst: SpGistNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:89,1
    - Dst: SpGistNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:90,1
    - Dst: SpGistNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:91,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:93,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:93,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:94,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:94,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:95,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:95,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:97,1
    - Dst: SpGistInitMetapage
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:99,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:99,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:100,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:101,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:102,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:103,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:104,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:107,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:109,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:110,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:111,1
    - Dst: initSpGistState
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:116,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:120,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:124,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:128,1
    - Dst: SpGistUpdateMetaPage
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:130,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:136,1
    - Dst: log_newpage_range
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:138,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:139,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 72
    functionDepth: 6
    functionLinenumber: 72
    functionLinenumberEnd: 148
    functionName: spgbuild
    functionSourceFile: /src/postgres/src/backend/access/spgist/spginsert.c
    functionUses: 0
    functionsReached:
    - BufferGetPage
    - RelationGetRelationName
    - SpGistInitMetapage
    - elog
    - Assert
    - BufferGetBlockNumber
    - SpGistNewBuffer
    - RelationGetNumberOfBlocks
    - UnlockReleaseBuffer
    - log_newpage_range
    - palloc0_object
    - AllocSetContextCreate
    - MarkBufferDirty
    - initSpGistState
    - table_index_build_scan
    - START_CRIT_SECTION
    - SpGistUpdateMetaPage
    - MemoryContextDelete
    - RelationNeedsWAL
    - SpGistInitBuffer
    - END_CRIT_SECTION
    linkageType: ''
    returnType: IndexBuildResult
    signature: 'IndexBuildResult *

      spgbuild(Relation heap, Relation index, IndexInfo *indexInfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smgr_bulk_start_rel
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:159,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:162,1
    - Dst: SpGistInitMetapage
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:163,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:164,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:167,1
    - Dst: SpGistInitPage
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:168,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:169,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:172,1
    - Dst: SpGistInitPage
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:173,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:174,1
    - Dst: smgr_bulk_finish
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 177
    functionName: spgbuildempty
    functionSourceFile: /src/postgres/src/backend/access/spgist/spginsert.c
    functionUses: 0
    functionsReached:
    - smgr_bulk_get_buf
    - smgr_bulk_finish
    - smgr_bulk_start_rel
    - SpGistInitPage
    - smgr_bulk_write
    - SpGistInitMetapage
    linkageType: ''
    returnType: void
    signature: void spgbuildempty(Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:193,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:196,1
    - Dst: initSpGistState
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:198,1
    - Dst: spgdoinsert
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:206,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:208,1
    - Dst: initSpGistState
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:209,1
    - Dst: SpGistUpdateMetaPage
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:212,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:214,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/spgist/spginsert.c:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 8
    argNames:
    - index
    - values
    - isnull
    - ht_ctid
    - heapRel
    - checkUnique
    - indexUnchanged
    - indexInfo
    argTypes:
    - Relation
    - Datum*
    - bool*
    - ItemPointer
    - Relation
    - IndexUniqueCheck
    - bool
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 219
    functionName: spginsert
    functionSourceFile: /src/postgres/src/backend/access/spgist/spginsert.c
    functionUses: 0
    functionsReached:
    - initSpGistState
    - MemoryContextReset
    - spgdoinsert
    - SpGistUpdateMetaPage
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - AllocSetContextCreate
    linkageType: ''
    returnType: bool
    signature: "bool spginsert(Relation index, Datum *values, bool *isnull,\n\t\t
      \ ItemPointer ht_ctid, Relation heapRel,\n\t\t  IndexUniqueCheck checkUnique,\n\t\t
      \ bool indexUnchanged,\n\t\t  IndexInfo *indexInfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:37,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - state
    - stateSrc
    argTypes:
    - SpGistState*
    - spgxlogState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 42
    functionName: fillFakeState
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - palloc0
    - memset
    linkageType: ''
    returnType: void
    signature: void fillFakeState(SpGistState *state, spgxlogState stateSrc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:52,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:54,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:55,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:58,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:60,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:60,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:61,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:63,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:66,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:66,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:68,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - page
    - tuple
    - size
    - offset
    argTypes:
    - Page
    - void*
    - int
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 71
    functionName: addOrReplaceTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - PageGetItemId
    - PageAddItem
    - PageGetMaxOffsetNumber
    - PageGetItem
    - PageIndexTupleDelete
    - SpGistPageGetOpaque
    linkageType: ''
    returnType: void
    signature: void addOrReplaceTuple(Page page, const void *tuple, int size, OffsetNumber
      offset)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:77,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:88,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:97,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:98,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:103,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:107,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:113,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:120,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:121,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:122,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:122,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:122,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:123,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:129,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:130,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:133,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:137,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:138,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:140,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:141,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:146,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:151,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:153,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:155,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:156,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:158,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:161,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:162,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:164,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:165,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 73
    functionDepth: 4
    functionLinenumber: 73
    functionLinenumberEnd: 167
    functionName: spgRedoAddLeaf
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - SGLT_SET_NEXTOFFSET
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - XLogRecGetBlockTag
    - elog
    - memcpy
    - Assert
    - spgUpdateNodeLink
    - XLogInitBufferForRedo
    - SGLT_GET_NEXTOFFSET
    - PageIndexTupleDelete
    - UnlockReleaseBuffer
    - PageSetLSN
    - PageGetItemId
    - PageAddItem
    - BufferIsValid
    - MarkBufferDirty
    - addOrReplaceTuple
    - XLogRecGetData
    - SpGistInitBuffer
    linkageType: ''
    returnType: void
    signature: void spgRedoAddLeaf(XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:173,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:184,1
    - Dst: fillFakeState
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:186,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:207,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:208,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:213,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:219,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:231,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:234,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:238,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:239,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:241,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:242,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:245,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:247,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:249,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:255,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:256,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:258,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:259,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:262,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:266,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:268,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:269,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:271,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:274,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:275,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:277,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:278,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 45
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 279
    functionName: spgRedoMoveLeafs
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - memcpy
    - spgPageIndexMultiDelete
    - spgUpdateNodeLink
    - XLogReadBufferForRedo
    - XLogInitBufferForRedo
    - SpGistInitBuffer
    - BufferGetPage
    - PageGetItemId
    - PageGetItem
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - fillFakeState
    - XLogRecGetBlockTag
    - addOrReplaceTuple
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void spgRedoMoveLeafs(XLogReaderState *record)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:285,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:297,1
    - Dst: fillFakeState
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:299,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:304,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:305,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:307,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:309,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:310,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:313,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:316,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:317,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:319,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:320,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:327,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:328,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:342,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:343,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:347,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:350,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:352,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:361,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:362,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:364,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:367,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:368,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:370,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:371,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:374,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:378,1
    - Dst: spgFormDeadTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:381,1
    - Dst: spgFormDeadTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:385,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:389,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:390,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:393,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:397,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:399,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:408,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:409,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:411,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:414,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:415,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:417,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:418,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:426,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:430,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:432,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:433,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:435,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:438,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:439,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:441,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:442,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 70
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 281
    functionDepth: 4
    functionLinenumber: 281
    functionLinenumberEnd: 445
    functionName: spgRedoAddNode
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - XLogRecHasBlockRef
    - XLogRecGetBlockTag
    - elog
    - spgFormDeadTuple
    - memcpy
    - Assert
    - spgUpdateNodeLink
    - XLogInitBufferForRedo
    - PageIndexTupleDelete
    - UnlockReleaseBuffer
    - PageSetLSN
    - PageGetItemId
    - PageAddItem
    - BufferIsValid
    - MarkBufferDirty
    - fillFakeState
    - addOrReplaceTuple
    - XLogRecGetData
    - SpGistPageGetOpaque
    - SpGistInitBuffer
    linkageType: ''
    returnType: void
    signature: void spgRedoAddNode(XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:451,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:464,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:468,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:481,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:483,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:487,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:490,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:492,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:494,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:495,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:497,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:498,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:502,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:504,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:506,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:507,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:509,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:513,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:515,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:516,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:518,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:519,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 447
    functionDepth: 4
    functionLinenumber: 447
    functionLinenumberEnd: 520
    functionName: spgRedoSplitTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - XLogReadBufferForRedo
    - XLogInitBufferForRedo
    - BufferGetPage
    - PageAddItem
    - PageIndexTupleDelete
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - SpGistInitBuffer
    - addOrReplaceTuple
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void spgRedoSplitTuple(XLogReaderState *record)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:526,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:544,1
    - Dst: fillFakeState
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:546,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:558,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:572,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:573,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:575,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:588,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:590,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:598,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:605,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:617,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:625,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:626,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:628,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:638,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:639,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:652,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:659,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:665,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:666,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:670,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:671,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:677,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:678,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:682,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:686,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:688,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:695,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:696,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:697,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:701,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:702,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:704,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:705,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:711,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:712,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:713,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:714,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:717,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:721,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:725,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:727,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:728,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:729,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:732,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:733,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:735,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:736,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:739,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 94
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 522
    functionDepth: 4
    functionLinenumber: 522
    functionLinenumberEnd: 740
    functionName: spgRedoPickSplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - XLogRecHasBlockRef
    - XLogRecGetBlockTag
    - memcpy
    - spgUpdateNodeLink
    - Assert
    - XLogInitBufferForRedo
    - UnlockReleaseBuffer
    - PageSetLSN
    - PageGetItemId
    - BufferIsValid
    - MarkBufferDirty
    - fillFakeState
    - addOrReplaceTuple
    - XLogRecGetData
    - spgPageIndexMultiDelete
    - SpGistInitBuffer
    linkageType: ''
    returnType: void
    signature: void spgRedoPickSplit(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:746,1
    - Dst: fillFakeState
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:759,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:774,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:776,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:778,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:784,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:793,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:794,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:802,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:812,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:813,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:814,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:815,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:818,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:819,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:821,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:822,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 742
    functionDepth: 4
    functionLinenumber: 742
    functionLinenumberEnd: 823
    functionName: spgRedoVacuumLeaf
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - SGLT_SET_NEXTOFFSET
    - spgPageIndexMultiDelete
    - Assert
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItemId
    - PageGetItem
    - PageSetLSN
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - fillFakeState
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void spgRedoVacuumLeaf(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:829,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:837,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:839,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:842,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:844,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:845,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:847,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:848,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 825
    functionDepth: 4
    functionLinenumber: 825
    functionLinenumberEnd: 849
    functionName: spgRedoVacuumRoot
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - XLogRecGetData
    - PageIndexMultiDelete
    - BufferGetPage
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void spgRedoVacuumRoot(XLogReaderState *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:855,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:870,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:871,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:876,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:878,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:879,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:887,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:889,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:891,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:894,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:901,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:904,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:910,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:914,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:916,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:919,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:920,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:922,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:923,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 851
    functionDepth: 4
    functionLinenumber: 851
    functionLinenumberEnd: 924
    functionName: spgRedoVacuumRedirect
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - ResolveRecoveryConflictWithSnapshot
    - Assert
    - XLogReadBufferForRedo
    - pfree
    - palloc_array
    - BufferGetPage
    - PageGetItemId
    - PageIndexMultiDelete
    - PageGetItem
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - SpGistPageGetOpaque
    - PageSetLSN
    - MarkBufferDirty
    - ItemPointerSetInvalid
    - BufferIsValid
    - XLogRecGetBlockTag
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void spgRedoVacuumRedirect(XLogReaderState *record)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:929,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:932,1
    - Dst: spgRedoAddLeaf
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:936,1
    - Dst: spgRedoMoveLeafs
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:939,1
    - Dst: spgRedoAddNode
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:942,1
    - Dst: spgRedoSplitTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:945,1
    - Dst: spgRedoPickSplit
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:948,1
    - Dst: spgRedoVacuumLeaf
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:951,1
    - Dst: spgRedoVacuumRoot
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:954,1
    - Dst: spgRedoVacuumRedirect
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:957,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:960,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:963,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:964,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 926
    functionDepth: 5
    functionLinenumber: 926
    functionLinenumberEnd: 965
    functionName: spg_redo
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - elog
    - MemoryContextReset
    - spgRedoPickSplit
    - spgRedoVacuumRoot
    - MemoryContextSwitchTo
    - spgRedoSplitTuple
    - spgRedoAddLeaf
    - spgRedoMoveLeafs
    - spgRedoAddNode
    - spgRedoVacuumLeaf
    - spgRedoVacuumRedirect
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void spg_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 973
    functionName: spg_xlog_startup
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void spg_xlog_startup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:978,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 980
    functionName: spg_xlog_cleanup
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void spg_xlog_cleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mask_page_lsn_and_checksum
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:991,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:993,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:1000,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 985
    functionDepth: 2
    functionLinenumber: 985
    functionLinenumberEnd: 1001
    functionName: spg_mask
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - mask_page_lsn_and_checksum
    - mask_unused_space
    - mask_page_hint_bits
    linkageType: ''
    returnType: void
    signature: void spg_mask(char *pagedata, BlockNumber blkno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:30,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:32,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 39
    functionName: spg_quad_config
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum spg_quad_config(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - f
    - ','
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: SPTEST
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPTEST(f, x, y)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:59,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:60,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:61,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:62,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:65,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:66,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:67,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:70,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:71,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:72,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:75,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:76,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:79,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 11
    argCount: 2
    argNames:
    - centroid
    - tst
    argTypes:
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 81
    functionName: getQuadrant
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - elog
    - SPTEST
    linkageType: ''
    returnType: int16
    signature: int16 getQuadrant(Point *centroid, Point *tst)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - bbox
    - centroid
    - quadrant
    argTypes:
    - BOX*
    - Point*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 114
    functionName: getQuadrantArea
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: BOX
    signature: 'BOX *

      getQuadrantArea(BOX *bbox, Point *centroid, int quadrant)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:119,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:120,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:121,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:129,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:130,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:133,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:136,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:139,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:141,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 144
    functionName: spg_quad_choose
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - PointPGetDatum
    - Assert
    - getQuadrant
    - DatumGetPointP
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum spg_quad_choose(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 156
    functionName: x_cmp
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int x_cmp(const void *a, const void *b, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: y_cmp
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int y_cmp(const void *a, const void *b, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:173,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:174,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:182,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:184,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:186,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:188,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:190,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:194,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:198,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:199,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:207,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:212,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:213,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:217,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:218,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:220,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 225
    functionName: spg_quad_picksplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - qsort
    - palloc0_object
    - PG_RETURN_VOID
    - PointPGetDatum
    - palloc_array
    - getQuadrant
    - DatumGetPointP
    - palloc_object
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum spg_quad_picksplit(PG_FUNCTION_ARGS)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:231,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:232,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:239,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:240,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:251,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:252,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:256,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:267,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:275,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:282,1
    - Dst: box_copy
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:285,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:287,1
    - Dst: spg_key_orderbys_distances
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:290,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:290,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:297,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:304,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:310,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:314,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:318,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:322,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:327,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:337,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:339,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:339,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:340,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:341,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:352,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:354,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:356,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:358,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:364,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:373,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:378,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:389,1
    - Dst: getQuadrantArea
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:390,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:392,1
    - Dst: spg_key_orderbys_distances
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:396,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:396,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:404,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 94
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 228
    functionDepth: 3
    functionLinenumber: 228
    functionLinenumberEnd: 405
    functionName: spg_quad_inner_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - elog
    - spg_key_orderbys_distances
    - PG_RETURN_VOID
    - Assert
    - DatumGetBoxP
    - getQuadrantArea
    - palloc_array
    - SPTEST
    - MemoryContextSwitchTo
    - BoxPGetDatum
    - getQuadrant
    - DatumGetPointP
    - box_copy
    - PointerGetDatum
    - DirectFunctionCall2
    - PG_GETARG_POINTER
    - DatumGetBool
    - get_float8_infinity
    linkageType: ''
    returnType: Datum
    signature: Datum spg_quad_inner_consistent(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:411,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:412,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:413,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:427,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:432,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:435,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:438,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:442,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:446,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:455,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:458,1
    - Dst: spg_key_orderbys_distances
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:469,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:472,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 408
    functionDepth: 3
    functionLinenumber: 408
    functionLinenumberEnd: 473
    functionName: spg_quad_leaf_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - elog
    - spg_key_orderbys_distances
    - SPTEST
    - DatumGetPointP
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum spg_quad_leaf_consistent(PG_FUNCTION_ARGS)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:61,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:61,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:62,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:63,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:64,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:69,1
    - Dst: get_opfamily_name
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:72,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:75,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:75,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:76,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:76,1
    - Dst: identify_opfamily_groups
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:77,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:83,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:92,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:93,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:94,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:96,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:104,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:107,1
    - Dst: OidFunctionCall2
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:109,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:110,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:111,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:117,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:123,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:126,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:127,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:128,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:129,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:130,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:144,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:159,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:163,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:171,1
    - Dst: check_amoptsproc_signature
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:176,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:179,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:180,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:181,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:183,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:191,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:192,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:193,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:195,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:205,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:211,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:213,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:215,1
    - Dst: get_op_rettype
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:224,1
    - Dst: opfamily_can_sort_type
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:225,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:227,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:229,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:231,1
    - Dst: check_amop_signature
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:245,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:247,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:272,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:274,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:275,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:292,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:293,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:294,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:296,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:305,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:306,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:307,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:312,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:313,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:314,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 112
    argCount: 1
    argNames:
    - opclassoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 317
    functionName: spgvalidate
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvalidate.c
    functionUses: 0
    functionsReached:
    - identify_opfamily_groups
    - errcode
    - format_operator
    - format_procedure
    - OidFunctionCall2
    - NameStr
    - check_amop_signature
    - check_amoptsproc_signature
    - SearchSysCache1
    - elog
    - check_amproc_signature
    - HeapTupleIsValid
    - ReleaseSysCache
    - errmsg
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - SearchSysCacheList1
    - opfamily_can_sort_type
    - ReleaseCatCacheList
    - ereport
    - lfirst
    - memset
    - GETSTRUCT
    - get_opfamily_name
    - format_type_be
    - get_op_rettype
    linkageType: ''
    returnType: bool
    signature: bool spgvalidate(Oid opclassoid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 153
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvalidate.c
    functionUses: 28
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, grouplist)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:272,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:274,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:275,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:292,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:293,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:294,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:296,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 299
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvalidate.c
    functionUses: 28
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - lfirst
    - errmsg
    linkageType: ''
    returnType: void
    signature: void foreach(lc, grouplist)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:340,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:356,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:376,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:377,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:378,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - opfamilyoid
    - opclassoid
    - operators
    - functions
    argTypes:
    - Oid
    - Oid
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 383
    functionName: spgadjustmembers
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvalidate.c
    functionUses: 0
    functionsReached:
    - lfirst
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: "void spgadjustmembers(Oid opfamilyoid,\n\t\t\t\t Oid opclassoid,\n\t\t\t\t
      List *operators,\n\t\t\t\t List *functions)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 345
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvalidate.c
    functionUses: 28
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, operators)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:356,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:376,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:377,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgvalidate.c:378,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 382
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvalidate.c
    functionUses: 28
    functionsReached:
    - lfirst
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, functions)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:74,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - bds
    - tid
    argTypes:
    - spgBulkDeleteState*
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 84
    functionName: spgAddPendingTID
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - ItemPointerEquals
    - palloc_object
    linkageType: ''
    returnType: void
    signature: void spgAddPendingTID(spgBulkDeleteState *bds, const ItemPointerData
      *tid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:99,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - bds
    argTypes:
    - spgBulkDeleteState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 103
    functionName: spgClearPendingList
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    linkageType: ''
    returnType: void
    signature: void spgClearPendingList(spgBulkDeleteState *bds)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:129,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:141,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:143,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:144,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:152,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:153,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:156,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:156,1
    - Dst: spgBulkDeleteState*::callback
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:158,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:171,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:174,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:175,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:176,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:177,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:178,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:179,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:187,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:188,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:188,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:201,1
    - Dst: spgAddPendingTID
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:202,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:206,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:206,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:243,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:244,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:255,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:260,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:261,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:265,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:306,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:326,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:329,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:331,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:336,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:350,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:351,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:359,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:368,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:370,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:371,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:374,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:376,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:380,1
    - Dst: STORE_STATE
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:382,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:384,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:386,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:387,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:388,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:389,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:390,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:391,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:393,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:395,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:397,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:400,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 112
    argCount: 4
    argNames:
    - bds
    - index
    - buffer
    - forPending
    argTypes:
    - spgBulkDeleteState*
    - Relation
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 125
    functionDepth: 5
    functionLinenumber: 125
    functionLinenumberEnd: 401
    functionName: vacuumLeafPage
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - SGLT_SET_NEXTOFFSET
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - RelationGetRelationName
    - elog
    - STORE_STATE
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - SGLT_GET_NEXTOFFSET
    - spgBulkDeleteState*::callback
    - PageSetLSN
    - spgAddPendingTID
    - PageGetItemId
    - memset
    - MarkBufferDirty
    - XLogRegisterBuffer
    - ItemPointerIsValid
    - TransactionIdFollowsOrEquals
    - spgPageIndexMultiDelete
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void vacuumLeafPage(spgBulkDeleteState *bds, Relation index, Buffer
      buffer,\n\t\t\t   bool forPending)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:411,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:415,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:424,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:425,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:428,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:428,1
    - Dst: spgBulkDeleteState*::callback
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:430,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:444,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:453,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:456,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:458,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:460,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:464,1
    - Dst: STORE_STATE
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:467,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:469,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:471,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:474,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:476,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:478,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:481,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - bds
    - index
    - buffer
    argTypes:
    - spgBulkDeleteState*
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 408
    functionDepth: 5
    functionLinenumber: 408
    functionLinenumberEnd: 482
    functionName: vacuumLeafRoot
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - BufferGetPage
    - PageIndexMultiDelete
    - XLogRegisterData
    - PageGetItem
    - elog
    - STORE_STATE
    - XLogBeginInsert
    - Assert
    - PageGetMaxOffsetNumber
    - PageSetLSN
    - spgBulkDeleteState*::callback
    - PageGetItemId
    - MarkBufferDirty
    - XLogRegisterBuffer
    - ItemPointerIsValid
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void vacuumLeafRoot(spgBulkDeleteState *bds, Relation index, Buffer
      buffer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:496,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:497,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:499,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:508,1
    - Dst: GlobalVisTestFor
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:512,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:514,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:527,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:527,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:538,1
    - Dst: GlobalVisTestIsRemovableXid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:539,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:542,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:547,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:548,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:584,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:588,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:596,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:598,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:602,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:604,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:605,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:608,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:610,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:612,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:615,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 3
    argNames:
    - index
    - heaprel
    - buffer
    argTypes:
    - Relation
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 493
    functionDepth: 5
    functionLinenumber: 493
    functionLinenumberEnd: 616
    functionName: vacuumRedirectAndPlaceholder
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - BufferGetPage
    - PageIndexMultiDelete
    - XLogRegisterData
    - PageGetItem
    - XLogBeginInsert
    - Assert
    - GlobalVisTestFor
    - PageGetMaxOffsetNumber
    - PageSetLSN
    - PageGetItemId
    - MarkBufferDirty
    - XLogRegisterBuffer
    - GlobalVisTestIsRemovableXid
    - TransactionIdPrecedes
    - START_CRIT_SECTION
    - RelationIsAccessibleInLogicalDecoding
    - RelationNeedsWAL
    - SpGistPageGetOpaque
    - ItemPointerSetInvalid
    - END_CRIT_SECTION
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void vacuumRedirectAndPlaceholder(Relation index, Relation heaprel,
      Buffer buffer)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:625,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:628,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:629,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:631,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:638,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:642,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:644,1
    - Dst: vacuumLeafRoot
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:646,1
    - Dst: vacuumLeafPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:651,1
    - Dst: vacuumRedirectAndPlaceholder
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:652,1
    - Dst: vacuumRedirectAndPlaceholder
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:658,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:667,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:669,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:669,1
    - Dst: RecordFreeIndexPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:671,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:676,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:681,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - bds
    - buffer
    argTypes:
    - spgBulkDeleteState*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 621
    functionDepth: 6
    functionLinenumber: 621
    functionLinenumberEnd: 682
    functionName: spgvacuumpage
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - vacuumLeafRoot
    - SpGistPageIsLeaf
    - SpGistBlockIsRoot
    - vacuumRedirectAndPlaceholder
    - BufferGetBlockNumber
    - LockBuffer
    - PageIsNew
    - RecordFreeIndexPage
    - BufferGetPage
    - UnlockReleaseBuffer
    - PageIsEmpty
    - vacuumLeafPage
    - SpGistSetLastUsedPage
    linkageType: ''
    returnType: void
    signature: void spgvacuumpage(spgBulkDeleteState *bds, Buffer buffer)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:703,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:706,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:707,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:709,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:710,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:712,1
    - Dst: SpGistPageIsDeleted
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:712,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:716,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:718,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:721,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:722,1
    - Dst: vacuumLeafPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:726,1
    - Dst: vacuumRedirectAndPlaceholder
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:728,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:730,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:739,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:756,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:761,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:762,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:763,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:771,1
    - Dst: spgAddPendingTID
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:772,1
    - Dst: spgAddPendingTID
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:778,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:782,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:790,1
    - Dst: spgClearPendingList
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:793,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 1
    argNames:
    - bds
    argTypes:
    - spgBulkDeleteState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 687
    functionDepth: 6
    functionLinenumber: 687
    functionLinenumberEnd: 794
    functionName: spgprocesspending
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - SpGistPageIsLeaf
    - LockBuffer
    - PageIsNew
    - BufferGetPage
    - PageGetItem
    - vacuum_delay_point
    - ItemPointerGetOffsetNumber
    - RelationGetRelationName
    - vacuumLeafPage
    - SpGistSetLastUsedPage
    - elog
    - SpGistPageIsDeleted
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - spgAddPendingTID
    - ReadBufferExtended
    - spgClearPendingList
    - PageGetItemId
    - ItemPointerIsValid
    - SpGistBlockIsRoot
    - vacuumRedirectAndPlaceholder
    linkageType: ''
    returnType: void
    signature: void spgprocesspending(spgBulkDeleteState *bds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:771,1
    - Dst: spgAddPendingTID
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 769
    functionDepth: 2
    functionLinenumber: 769
    functionLinenumberEnd: 773
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - ItemPointerIsValid
    - spgAddPendingTID
    linkageType: ''
    returnType: void
    signature: void SGITITERATE(innerTuple, i, node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSpGistState
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:809,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:811,1
    - Dst: RELATION_IS_LOCAL
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:823,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:830,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:852,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:853,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:855,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:869,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:871,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:873,1
    - Dst: spgvacuumpage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:876,1
    - Dst: spgprocesspending
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:880,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:888,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:891,1
    - Dst: SpGistUpdateMetaPage
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:894,1
    - Dst: IndexFreeSpaceMapVacuum
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:909,1
    - Dst: RelationTruncate
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:930,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 1
    argNames:
    - bds
    argTypes:
    - spgBulkDeleteState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 799
    functionDepth: 7
    functionLinenumber: 799
    functionLinenumberEnd: 940
    functionName: spgvacuumscan
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - RELATION_IS_LOCAL
    - initSpGistState
    - read_stream_next_buffer
    - spgprocesspending
    - read_stream_end
    - RelationTruncate
    - spgvacuumpage
    - SpGistUpdateMetaPage
    - read_stream_begin_relation
    - vacuum_delay_point
    - GetActiveSnapshot
    - LockRelationForExtension
    - RelationGetNumberOfBlocks
    - BufferIsValid
    - IndexFreeSpaceMapVacuum
    - UnlockRelationForExtension
    - read_stream_reset
    linkageType: ''
    returnType: void
    signature: void spgvacuumscan(spgBulkDeleteState *bds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:957,1
    - Dst: spgvacuumscan
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - info
    - stats
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 949
    functionDepth: 8
    functionLinenumber: 949
    functionLinenumberEnd: 966
    functionName: spgbulkdelete
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - spgvacuumscan
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\nspgbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult
      *stats,\n\t\t\t  IndexBulkDeleteCallback callback, void *callback_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - itemptr
    - state
    argTypes:
    - ItemPointer
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 969
    functionDepth: 0
    functionLinenumber: 969
    functionLinenumberEnd: 973
    functionName: dummy_callback
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dummy_callback(ItemPointer itemptr, void *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:997,1
    - Dst: spgvacuumscan
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:1003,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 980
    functionDepth: 8
    functionLinenumber: 980
    functionLinenumberEnd: 1019
    functionName: spgvacuumcleanup
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgvacuum.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - spgvacuumscan
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: 'IndexBulkDeleteResult *

      spgvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 103
    functionName: spghandler
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum spghandler(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:129,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:130,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:132,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:136,1
    - Dst: get_atttype
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:136,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:147,1
    - Dst: list_head
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:148,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:155,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:157,1
    - Dst: exprType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:157,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:157,1
    - Dst: lnext
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:158,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:161,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - index
    - indexcol
    argTypes:
    - Relation
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 163
    functionName: GetIndexInputType
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - elog
    - IsPolymorphicType
    - RelationGetIndexExpressions
    - Assert
    - exprType
    - lnext
    - getBaseType
    - list_head
    - lfirst
    - get_atttype
    linkageType: ''
    returnType: Oid
    signature: Oid GetIndexInputType(Relation index, AttrNumber indexcol)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:173,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:173,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:174,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:175,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:176,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - desc
    - type
    argTypes:
    - SpGistTypeDesc*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 182
    functionName: fillTypeDesc
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void fillTypeDesc(SpGistTypeDesc *desc, Oid type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:199,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:203,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:204,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:204,1
    - Dst: GetIndexInputType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:211,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:216,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:217,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:219,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:220,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:229,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:232,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:232,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:240,1
    - Dst: fillTypeDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:245,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:249,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:249,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:250,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:252,1
    - Dst: fillTypeDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:254,1
    - Dst: fillTypeDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:262,1
    - Dst: fillTypeDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:263,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:274,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:275,1
    - Dst: SpGistPageGetMeta
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:277,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:277,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:280,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:281,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:285,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 188
    functionDepth: 4
    functionLinenumber: 188
    functionLinenumberEnd: 297
    functionName: spgGetCache
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - errcode
    - LockBuffer
    - BufferGetPage
    - RelationGetRelationName
    - GetIndexInputType
    - IsBinaryCoercible
    - elog
    - Assert
    - RelationGetDescr
    - ReadBuffer
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - UnlockReleaseBuffer
    - MemoryContextAllocZero
    - SpGistPageGetMeta
    - ereport
    - FunctionCall2Coll
    - TupleDescAttr
    - index_getprocinfo
    - IndexRelationGetNumberOfAttributes
    - index_getprocid
    - fillTypeDesc
    linkageType: ''
    returnType: SpGistCache
    signature: 'SpGistCache *

      spgGetCache(Relation index)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:322,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:322,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:323,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:326,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:326,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:327,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:339,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - index
    - keyType
    argTypes:
    - Relation
    - SpGistTypeDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 315
    functionDepth: 5
    functionLinenumber: 315
    functionLinenumberEnd: 343
    functionName: getSpGistTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - RelationGetDescr
    - CreateTupleDescCopy
    - TupleDescFinalize
    - populate_compact_attribute
    - TupleDescAttr
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc getSpGistTupleDesc(Relation index, SpGistTypeDesc *keyType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: spgGetCache
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:354,1
    - Dst: getSpGistTupleDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:363,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:366,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - SpGistState*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 346
    functionDepth: 6
    functionLinenumber: 346
    functionLinenumberEnd: 384
    functionName: initSpGistState
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 3
    functionsReached:
    - palloc0
    - GetTopTransactionIdIfAny
    - spgGetCache
    - getSpGistTupleDesc
    linkageType: ''
    returnType: void
    signature: void initSpGistState(SpGistState *state, Relation index)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetFreeIndexPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:400,1
    - Dst: SpGistBlockIsFixed
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:409,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:412,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:418,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:420,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:422,1
    - Dst: SpGistPageIsDeleted
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:425,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:425,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:428,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:432,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:435,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:435,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 392
    functionDepth: 4
    functionLinenumber: 392
    functionLinenumberEnd: 439
    functionName: SpGistNewBuffer
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 1
    functionsReached:
    - ReleaseBuffer
    - ExtendBufferedRel
    - LockBuffer
    - PageIsNew
    - SpGistPageIsDeleted
    - SpGistBlockIsFixed
    - BufferGetPage
    - BMR_REL
    - PageIsEmpty
    - ReadBuffer
    - ConditionalLockBuffer
    - GetFreeIndexPage
    linkageType: ''
    returnType: Buffer
    signature: Buffer SpGistNewBuffer(Relation index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:457,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:459,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:461,1
    - Dst: SpGistPageGetMeta
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:462,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:477,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:478,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:482,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 448
    functionDepth: 4
    functionLinenumber: 448
    functionLinenumberEnd: 485
    functionName: SpGistUpdateMetaPage
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 3
    functionsReached:
    - ReleaseBuffer
    - SpGistPageGetMeta
    - BufferGetPage
    - ReadBuffer
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - ConditionalLockBuffer
    linkageType: ''
    returnType: void
    signature: void SpGistUpdateMetaPage(Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 490
    functionName: GET_LUP
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_LUP(c, f)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: spgGetCache
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:514,1
    - Dst: GBUF_REQ_LEAF
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:517,1
    - Dst: GBUF_REQ_NULLS
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:519,1
    - Dst: SpGistNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:526,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:527,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:536,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:537,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:551,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:551,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:552,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - index
    - flags
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 511
    functionDepth: 5
    functionLinenumber: 511
    functionLinenumberEnd: 556
    functionName: allocNewBuffer
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - PageGetExactFreeSpace
    - GBUF_REQ_LEAF
    - BufferGetBlockNumber
    - SpGistNewBuffer
    - BufferGetPage
    - GBUF_REQ_NULLS
    - UnlockReleaseBuffer
    - SpGistInitBuffer
    - GBUF_INNER_PARITY
    - spgGetCache
    linkageType: ''
    returnType: Buffer
    signature: Buffer allocNewBuffer(Relation index, int flags)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: spgGetCache
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:570,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:575,1
    - Dst: SpGistGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:584,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:585,1
    - Dst: GET_LUP
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:588,1
    - Dst: allocNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:594,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:598,1
    - Dst: SpGistBlockIsFixed
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:598,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:606,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:608,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:613,1
    - Dst: allocNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:615,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:618,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:620,1
    - Dst: SpGistPageIsDeleted
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:620,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:620,1
    - Dst: GBUF_REQ_LEAF
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:625,1
    - Dst: GBUF_REQ_NULLS
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:627,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:629,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:630,1
    - Dst: GBUF_REQ_LEAF
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:639,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:639,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:639,1
    - Dst: GBUF_REQ_NULLS
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:640,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:640,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:640,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:642,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:656,1
    - Dst: allocNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:661,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 4
    argNames:
    - index
    - flags
    - needSpace
    - isNew
    argTypes:
    - Relation
    - int
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 567
    functionDepth: 6
    functionLinenumber: 567
    functionLinenumberEnd: 662
    functionName: SpGistGetBuffer
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - SpGistPageIsLeaf
    - PageIsNew
    - SpGistPageStoresNulls
    - BufferGetPage
    - PageIsEmpty
    - SpGistGetTargetPageFreeSpace
    - ConditionalLockBuffer
    - spgGetCache
    - elog
    - allocNewBuffer
    - ReleaseBuffer
    - PageGetExactFreeSpace
    - Assert
    - SpGistPageIsDeleted
    - GBUF_REQ_NULLS
    - ReadBuffer
    - UnlockReleaseBuffer
    - GBUF_REQ_LEAF
    - SpGistBlockIsFixed
    - GET_LUP
    - Min
    - SpGistInitBuffer
    linkageType: ''
    returnType: Buffer
    signature: Buffer SpGistGetBuffer(Relation index, int flags, int needSpace, bool
      *isNew)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: spgGetCache
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:674,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:677,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:678,1
    - Dst: SpGistBlockIsFixed
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:682,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:685,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:688,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:689,1
    - Dst: GET_LUP
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:692,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:694,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - index
    - buffer
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 671
    functionDepth: 5
    functionLinenumber: 671
    functionLinenumberEnd: 701
    functionName: SpGistSetLastUsedPage
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 2
    functionsReached:
    - SpGistPageIsLeaf
    - PageGetExactFreeSpace
    - BufferGetBlockNumber
    - SpGistPageStoresNulls
    - SpGistBlockIsFixed
    - BufferGetPage
    - GET_LUP
    - GBUF_INNER_PARITY
    - spgGetCache
    linkageType: ''
    returnType: void
    signature: void SpGistSetLastUsedPage(Relation index, Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:711,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - page
    - f
    argTypes:
    - Page
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 715
    functionName: SpGistInitPage
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 1
    functionsReached:
    - SpGistPageGetOpaque
    - PageInit
    linkageType: ''
    returnType: void
    signature: void SpGistInitPage(Page page, uint16 f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:723,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:723,1
    - Dst: SpGistInitPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:724,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - b
    - f
    argTypes:
    - Buffer
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 720
    functionDepth: 4
    functionLinenumber: 720
    functionLinenumberEnd: 725
    functionName: SpGistInitBuffer
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 8
    functionsReached:
    - Assert
    - SpGistInitPage
    - BufferGetPageSize
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: void SpGistInitBuffer(Buffer b, uint16 f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpGistInitPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:736,1
    - Dst: SpGistPageGetMeta
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:737,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 730
    functionDepth: 2
    functionLinenumber: 730
    functionLinenumberEnd: 752
    functionName: SpGistInitMetapage
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 2
    functionsReached:
    - SpGistInitPage
    - memset
    - SpGistPageGetMeta
    linkageType: ''
    returnType: void
    signature: void SpGistInitMetapage(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:764,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 757
    functionDepth: 5
    functionLinenumber: 757
    functionLinenumberEnd: 768
    functionName: spgoptions
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      spgoptions(Datum reloptions, bool validate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:787,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:787,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - att
    - datum
    argTypes:
    - SpGistTypeDesc*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 777
    functionDepth: 4
    functionLinenumber: 777
    functionLinenumberEnd: 790
    functionName: SpGistGetInnerTypeSize
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    - VARSIZE_ANY
    - DatumGetPointer
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int SpGistGetInnerTypeSize(SpGistTypeDesc *att, Datum datum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:802,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:806,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:806,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:807,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:807,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - target
    - att
    - datum
    argTypes:
    - void*
    - SpGistTypeDesc*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 795
    functionDepth: 4
    functionLinenumber: 795
    functionLinenumberEnd: 809
    functionName: memcpyInnerDatum
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - memcpy
    - DatumGetPointer
    - VARSIZE_ANY
    linkageType: ''
    returnType: void
    signature: void memcpyInnerDatum(void *target, SpGistTypeDesc *att, Datum datum)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:847,1
    - Dst: SGLTHDRSZ
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:852,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:854,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - tupleDescriptor
    - datums
    - isnulls
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 816
    functionDepth: 4
    functionLinenumber: 816
    functionLinenumberEnd: 864
    functionName: SpGistGetLeafTupleSize
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    - heap_compute_data_size
    - SGLTHDRSZ
    linkageType: ''
    returnType: Size
    signature: "Size SpGistGetLeafTupleSize(TupleDesc tupleDescriptor,\n\t\t\t\t\t
      \  const Datum *datums, const bool *isnulls)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:905,1
    - Dst: SGLTHDRSZ
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:910,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:912,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:922,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:925,1
    - Dst: SGLT_SET_HASNULLMASK
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:935,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:938,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:944,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - state
    - heapPtr
    - datums
    - isnulls
    argTypes:
    - SpGistState*
    - ItemPointerData*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 869
    functionDepth: 5
    functionLinenumber: 869
    functionLinenumberEnd: 950
    functionName: spgFormLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - SGLT_SET_NEXTOFFSET
    - SGLT_SET_HASNULLMASK
    - heap_fill_tuple
    - heap_compute_data_size
    - palloc0
    - MAXALIGN
    - SGLTHDRSZ
    linkageType: ''
    returnType: SpGistLeafTuple
    signature: "SpGistLeafTuple spgFormLeafTuple(SpGistState *state, const ItemPointerData
      *heapPtr,\n\t\t\t\t const Datum *datums, const bool *isnulls)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SpGistGetInnerTypeSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:968,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:975,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:976,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:977,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:980,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:989,1
    - Dst: memcpyInnerDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:992,1
    - Dst: SGNTDATAPTR
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:992,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - state
    - label
    - isnull
    argTypes:
    - SpGistState*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 958
    functionDepth: 5
    functionLinenumber: 958
    functionLinenumberEnd: 995
    functionName: spgFormNodeTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - memcpyInnerDatum
    - errcode
    - palloc0
    - ereport
    - errmsg
    - SpGistGetInnerTypeSize
    - ItemPointerSetInvalid
    - SGNTDATAPTR
    linkageType: ''
    returnType: SpGistNodeTuple
    signature: SpGistNodeTuple spgFormNodeTuple(SpGistState *state, Datum label, bool
      isnull)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SpGistGetInnerTypeSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1012,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1020,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1033,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1034,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1035,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1038,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1047,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1050,1
    - Dst: memcpyInnerDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1057,1
    - Dst: SGITDATAPTR
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1057,1
    - Dst: SGITNODEPTR
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1059,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1065,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1065,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1066,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 5
    argNames:
    - state
    - hasPrefix
    - prefix
    - nNodes
    - nodes
    argTypes:
    - SpGistState*
    - bool
    - Datum
    - int
    - SpGistNodeTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1000
    functionDepth: 5
    functionLinenumber: 1000
    functionLinenumberEnd: 1070
    functionName: spgFormInnerTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpyInnerDatum
    - memcpy
    - errcode
    - palloc0
    - ereport
    - errhint
    - errmsg
    - SpGistGetInnerTypeSize
    - SGITDATAPTR
    - SGITNODEPTR
    - IndexTupleSize
    linkageType: ''
    returnType: SpGistInnerTuple
    signature: "SpGistInnerTuple spgFormInnerTuple(SpGistState *state, bool hasPrefix,
      Datum prefix,\n\t\t\t\t  int nNodes, SpGistNodeTuple *nodes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1091,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1095,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - state
    - tupstate
    - blkno
    - offnum
    argTypes:
    - SpGistState*
    - int
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1083
    functionDepth: 2
    functionLinenumber: 1083
    functionLinenumberEnd: 1105
    functionName: spgFormDeadTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 1
    functionsReached:
    - ItemPointerSetInvalid
    - ItemPointerSet
    - SGLT_SET_NEXTOFFSET
    linkageType: ''
    returnType: SpGistDeadTuple
    signature: "SpGistDeadTuple spgFormDeadTuple(SpGistState *state, int tupstate,\n\t\t\t\t
      BlockNumber blkno, OffsetNumber offnum)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SGLT_GET_HASNULLMASK
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1132,1
    - Dst: SGLTHDRSZ
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1139,1
    - Dst: index_deform_tuple_internal
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - tup
    - tupleDescriptor
    - datums
    - isnulls
    - keyColumnIsNull
    argTypes:
    - SpGistLeafTuple
    - TupleDesc
    - Datum*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1113
    functionDepth: 6
    functionLinenumber: 1113
    functionLinenumberEnd: 1151
    functionName: spgDeformLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - Assert
    - SGLTHDRSZ
    - SGLT_GET_HASNULLMASK
    - index_deform_tuple_internal
    linkageType: ''
    returnType: void
    signature: "void spgDeformLeafTuple(SpGistLeafTuple tup, TupleDesc tupleDescriptor,\n\t\t\t\t
      \  Datum *datums, bool *isnulls, bool keyColumnIsNull)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SGITNODEPTR
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1166,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1167,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1171,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1172,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1179,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1182,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1183,1
    - Dst: SGNTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - state
    - innerTuple
    argTypes:
    - SpGistState*
    - SpGistInnerTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1158
    functionDepth: 1
    functionLinenumber: 1158
    functionLinenumberEnd: 1188
    functionName: spgExtractNodeLabels
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - elog
    - SGNTDATUM
    - palloc_array
    - IndexTupleHasNulls
    - SGITNODEPTR
    linkageType: ''
    returnType: Datum
    signature: 'Datum *

      spgExtractNodeLabels(SpGistState *state, SpGistInnerTuple innerTuple)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1171,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1173
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - elog
    - IndexTupleHasNulls
    linkageType: ''
    returnType: void
    signature: void SGITITERATE(innerTuple, i, node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1182,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1183,1
    - Dst: SGNTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1180
    functionDepth: 1
    functionLinenumber: 1180
    functionLinenumberEnd: 1185
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - elog
    - SGNTDATUM
    - IndexTupleHasNulls
    linkageType: ''
    returnType: void
    signature: void SGITITERATE(innerTuple, i, node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1205,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1211,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1211,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1214,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1225,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1226,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1254,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1256,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1266,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1272,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1280,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1284,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 40
    argCount: 6
    argNames:
    - state
    - page
    - item
    - size
    - startOffset
    - errorOK
    argTypes:
    - SpGistState*
    - Page
    - void*
    - Size
    - OffsetNumber*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1201
    functionDepth: 2
    functionLinenumber: 1201
    functionLinenumberEnd: 1288
    functionName: SpGistPageAddNewItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - elog
    - PageGetExactFreeSpace
    - Assert
    - PageGetItemId
    - PageAddItem
    - PageGetMaxOffsetNumber
    - PageGetItem
    - PageIndexTupleDelete
    - SpGistPageGetOpaque
    - MAXALIGN
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber SpGistPageAddNewItem(SpGistState *state, Page page, const
      void *item, Size size,\n\t\t\t\t\t OffsetNumber *startOffset, bool errorOK)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_index_column_opclass
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1326,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1327,1
    - Dst: get_opclass_opfamily_and_input_type
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1334,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1341,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1342,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1349,1
    - Dst: opfamily_can_sort_type
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1354,1
    - Dst: get_op_rettype
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1355,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1362,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 6
    argNames:
    - index_oid
    - attno
    - prop
    - propname
    - res
    - isnull
    argTypes:
    - Oid
    - int
    - IndexAMProperty
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1296
    functionDepth: 3
    functionLinenumber: 1296
    functionLinenumberEnd: 1367
    functionName: spgproperty
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - SearchSysCacheList1
    - ReleaseSysCacheList
    - opfamily_can_sort_type
    - get_opclass_opfamily_and_input_type
    - GETSTRUCT
    - get_op_rettype
    - OidIsValid
    - get_index_column_opclass
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: "bool spgproperty(Oid index_oid, int attno,\n\t\t\tIndexAMProperty
      prop, const char *propname,\n\t\t\tbool *res, bool *isnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:62,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - tup
    - nodeN
    - blkno
    - offset
    argTypes:
    - SpGistInnerTuple
    - int
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 69
    functionName: spgUpdateNodeLink
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 4
    functionsReached:
    - elog
    - ItemPointerSet
    linkageType: ''
    returnType: void
    signature: "void spgUpdateNodeLink(SpGistInnerTuple tup, int nodeN,\n\t\t\t\t
      \ BlockNumber blkno, OffsetNumber offset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    linkageType: ''
    returnType: void
    signature: void SGITITERATE(tup, i, node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:90,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:92,1
    - Dst: spgFormNodeTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:101,1
    - Dst: spgFormInnerTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:103,1
    - Dst: SGITDATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - state
    - tuple
    - label
    - offset
    argTypes:
    - SpGistState*
    - SpGistInnerTuple
    - Datum
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 79
    functionDepth: 6
    functionLinenumber: 79
    functionLinenumberEnd: 108
    functionName: addNode
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - elog
    - spgFormNodeTuple
    - SGITDATUM
    - palloc_array
    - spgFormInnerTuple
    linkageType: ''
    returnType: SpGistInnerTuple
    signature: SpGistInnerTuple addNode(SpGistState *state, SpGistInnerTuple tuple,
      Datum label, int offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 99
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SGITITERATE(tuple, i, node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u16
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: cmpOffsetNumbers
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u16
    linkageType: ''
    returnType: int
    signature: int cmpOffsetNumbers(const void *a, const void *b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:151,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:153,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:155,1
    - Dst: spgFormDeadTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:166,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:168,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:169,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:173,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:175,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 8
    argNames:
    - state
    - page
    - itemnos
    - nitems
    - firststate
    - reststate
    - blkno
    - offnum
    argTypes:
    - SpGistState*
    - Page
    - OffsetNumber*
    - int
    - int
    - int
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 177
    functionName: spgPageIndexMultiDelete
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 4
    functionsReached:
    - qsort
    - elog
    - spgFormDeadTuple
    - memcpy
    - PageIndexMultiDelete
    - PageAddItem
    - SpGistPageGetOpaque
    linkageType: ''
    returnType: void
    signature: "void spgPageIndexMultiDelete(SpGistState *state, Page page,\n\t\t\t\t\t\tOffsetNumber
      *itemnos, int nitems,\n\t\t\t\t\t\tint firststate, int reststate,\n\t\t\t\t\t\tBlockNumber
      blkno, OffsetNumber offnum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:190,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:191,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:193,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - index
    - parent
    - blkno
    - offnum
    argTypes:
    - Relation
    - SPPageDesc*
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 196
    functionName: saveNodeLink
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - spgUpdateNodeLink
    - PageGetItem
    - MarkBufferDirty
    - PageGetItemId
    linkageType: ''
    returnType: void
    signature: "void saveNodeLink(Relation index, SPPageDesc *parent,\n\t\t\t BlockNumber
      blkno, OffsetNumber offnum)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:216,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:219,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:222,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:223,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:235,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:251,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:252,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:255,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:255,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:256,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:264,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:265,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:266,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:273,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:274,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:275,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:278,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:286,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:289,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:291,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:296,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:297,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:298,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:303,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:305,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:307,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:309,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:314,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:318,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 55
    argCount: 7
    argNames:
    - index
    - state
    - leafTuple
    - current
    - parent
    - isNulls
    - isNew
    argTypes:
    - Relation
    - SpGistState*
    - SpGistLeafTuple
    - SPPageDesc*
    - SPPageDesc*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 201
    functionDepth: 5
    functionLinenumber: 201
    functionLinenumberEnd: 319
    functionName: addLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - SGLT_SET_NEXTOFFSET
    - SpGistPageAddNewItem
    - XLogRegisterData
    - PageGetItem
    - elog
    - XLogBeginInsert
    - SGLT_GET_NEXTOFFSET
    - PageIndexTupleDelete
    - PageSetLSN
    - PageGetItemId
    - PageAddItem
    - MarkBufferDirty
    - XLogRegisterBuffer
    - saveNodeLink
    - SpGistBlockIsRoot
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void addLeafTuple(Relation index, SpGistState *state, SpGistLeafTuple
      leafTuple,\n\t\t\t SPPageDesc *current, SPPageDesc *parent, bool isNulls, bool
      isNew)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:339,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:351,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:352,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:353,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:363,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:364,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:364,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:368,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:370,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - index
    - state
    - current
    - nToSplit
    argTypes:
    - Relation
    - SpGistState*
    - SPPageDesc*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 331
    functionDepth: 2
    functionLinenumber: 331
    functionLinenumberEnd: 376
    functionName: checkSplitConditions
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - elog
    - SpGistBlockIsRoot
    - Assert
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - SGLT_GET_NEXTOFFSET
    linkageType: ''
    returnType: int
    signature: "int checkSplitConditions(Relation index, SpGistState *state,\n\t\t\t\t\t
      SPPageDesc *current, int *nToSplit)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:407,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:408,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:411,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:412,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:423,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:424,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:425,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:426,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:438,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:438,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:445,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:447,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:451,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:453,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:455,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:457,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:459,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:469,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:470,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:471,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:478,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:480,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:486,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:492,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:493,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:496,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:504,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:510,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:513,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:514,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:516,1
    - Dst: STORE_STATE
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:521,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:530,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:531,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:532,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:534,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:536,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:538,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:539,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:540,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:542,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:544,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:545,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:546,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:549,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:552,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:553,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 79
    argCount: 6
    argNames:
    - index
    - state
    - current
    - parent
    - newLeafTuple
    - isNulls
    argTypes:
    - Relation
    - SpGistState*
    - SPPageDesc*
    - SPPageDesc*
    - SpGistLeafTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 385
    functionDepth: 7
    functionLinenumber: 385
    functionLinenumberEnd: 554
    functionName: moveLeafs
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - SGLT_SET_NEXTOFFSET
    - SpGistPageAddNewItem
    - palloc_array
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - SpGistSetLastUsedPage
    - elog
    - STORE_STATE
    - memcpy
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - SGLT_GET_NEXTOFFSET
    - UnlockReleaseBuffer
    - PageSetLSN
    - PageGetItemId
    - MarkBufferDirty
    - XLogRegisterBuffer
    - spgPageIndexMultiDelete
    - saveNodeLink
    - SpGistGetBuffer
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - palloc
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void moveLeafs(Relation index, SpGistState *state,\n\t\t  SPPageDesc
      *current, SPPageDesc *parent,\n\t\t  SpGistLeafTuple newLeafTuple, bool isNulls)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:569,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:572,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:572,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - current
    - position
    - blkno
    - offnum
    argTypes:
    - SPPageDesc*
    - OffsetNumber
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 563
    functionDepth: 3
    functionLinenumber: 563
    functionLinenumberEnd: 574
    functionName: setRedirectionTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - Assert
    - PageGetItemId
    - PageGetItem
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: "void setRedirectionTuple(SPPageDesc *current, OffsetNumber position,\n\t\t\t\t\tBlockNumber
      blkno, OffsetNumber offnum)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:637,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - in
    - out
    - tooBig
    - includeNew
    argTypes:
    - spgPickSplitIn*
    - spgPickSplitOut*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 645
    functionName: checkAllTheSame
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - palloc_array
    linkageType: ''
    returnType: bool
    signature: "bool checkAllTheSame(spgPickSplitIn *in, spgPickSplitOut *out, bool
      tooBig,\n\t\t\t\tbool *includeNew)"
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:718,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:720,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:721,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:722,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:723,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:724,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:725,1
    - Dst: STORE_STATE
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:727,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:738,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:749,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:750,1
    - Dst: SGLTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:754,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:763,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:774,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:775,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:776,1
    - Dst: SGLTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:786,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:792,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:793,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:793,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:799,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:801,1
    - Dst: SGLTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:813,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:817,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:824,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:825,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:827,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:828,1
    - Dst: spgDeformLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:837,1
    - Dst: spgFormLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:846,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:861,1
    - Dst: spgDeformLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:870,1
    - Dst: spgFormLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:882,1
    - Dst: checkAllTheSame
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:896,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:917,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:918,1
    - Dst: spgFormNodeTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:930,1
    - Dst: spgFormInnerTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:932,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:953,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:968,1
    - Dst: SpGistPageGetFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:969,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:978,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:979,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1008,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1009,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1037,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1046,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1048,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1057,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1060,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1060,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1093,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1093,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1108,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1113,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1127,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1129,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1132,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1139,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1147,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1148,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1157,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1173,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1186,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1210,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1215,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1217,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1217,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1218,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1218,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1221,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1224,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1224,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1231,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1234,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1259,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1266,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1276,1
    - Dst: setRedirectionTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1282,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1286,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1293,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1297,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1298,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1300,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1305,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1313,1
    - Dst: setRedirectionTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1319,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1331,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1331,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1332,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1334,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1339,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1342,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1350,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1356,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1361,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1364,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1366,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1368,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1370,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1372,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1373,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1376,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1381,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1385,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1390,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1397,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1403,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1405,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1409,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1414,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1416,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1421,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1423,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1426,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1430,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1434,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1439,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1440,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1444,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1445,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 313
    argCount: 8
    argNames:
    - index
    - state
    - current
    - parent
    - newLeafTuple
    - level
    - isNulls
    - isNew
    argTypes:
    - Relation
    - SpGistState*
    - SPPageDesc*
    - SPPageDesc*
    - SpGistLeafTuple
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 672
    functionDepth: 7
    functionLinenumber: 672
    functionLinenumberEnd: 1449
    functionName: doPickSplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 1
    functionsReached:
    - ItemPointerSet
    - spgFormNodeTuple
    - SGLT_SET_NEXTOFFSET
    - SpGistPageAddNewItem
    - XLogInsert
    - palloc_array
    - SGLTDATUM
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - spgFormLeafTuple
    - ItemPointerGetOffsetNumber
    - SpGistSetLastUsedPage
    - elog
    - STORE_STATE
    - PageGetExactFreeSpace
    - memcpy
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - spgDeformLeafTuple
    - PageGetMaxOffsetNumber
    - SGLT_GET_NEXTOFFSET
    - PointerGetDatum
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - GBUF_INNER_PARITY
    - PageSetLSN
    - PageGetItemId
    - FunctionCall2Coll
    - PageAddItem
    - memset
    - BufferIsValid
    - MarkBufferDirty
    - spgFormInnerTuple
    - XLogRegisterBuffer
    - ItemPointerIsValid
    - index_getprocinfo
    - palloc0_array
    - spgPageIndexMultiDelete
    - SpGistBlockIsRoot
    - saveNodeLink
    - checkAllTheSame
    - SpGistGetBuffer
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - SpGistPageGetFreeSpace
    - SpGistPageGetOpaque
    - palloc
    - Min
    - SpGistInitBuffer
    - END_CRIT_SECTION
    - setRedirectionTuple
    linkageType: ''
    returnType: bool
    signature: "bool doPickSplit(Relation index, SpGistState *state,\n\t\t\tSPPageDesc
      *current, SPPageDesc *parent,\n\t\t\tSpGistLeafTuple newLeafTuple,\n\t\t\tint
      level, bool isNulls, bool isNew)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 941
    functionDepth: 0
    functionLinenumber: 941
    functionLinenumberEnd: 944
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SGITITERATE(innerTuple, i, node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1466,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1467,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1485,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1489,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1491,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1492,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 6
    argNames:
    - index
    - state
    - innerTuple
    - current
    - parent
    - nodeN
    argTypes:
    - Relation
    - SpGistState*
    - SpGistInnerTuple
    - SPPageDesc*
    - SPPageDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1454
    functionDepth: 6
    functionLinenumber: 1454
    functionLinenumberEnd: 1503
    functionName: spgMatchNodeAction
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - elog
    - ItemPointerIsValid
    - ItemPointerGetOffsetNumber
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - SpGistSetLastUsedPage
    linkageType: ''
    returnType: void
    signature: "void spgMatchNodeAction(Relation index, SpGistState *state,\n\t\t\t\t
      \  SpGistInnerTuple innerTuple,\n\t\t\t\t   SPPageDesc *current, SPPageDesc
      *parent, int nodeN)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1478
    functionDepth: 0
    functionLinenumber: 1478
    functionLinenumberEnd: 1482
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SGITITERATE(innerTuple, i, node)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1518,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1518,1
    - Dst: addNode
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1521,1
    - Dst: STORE_STATE
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1524,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1536,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1542,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1544,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1545,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1548,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1551,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1553,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1557,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1558,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1559,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1561,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1563,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1565,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1568,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1583,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1584,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1585,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1596,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1597,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1600,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1601,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1612,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1625,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1629,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1633,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1636,1
    - Dst: spgFormDeadTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1646,1
    - Dst: spgFormDeadTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1649,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1652,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1653,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1656,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1660,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1662,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1664,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1666,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1671,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1674,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1679,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1682,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1684,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1685,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1687,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1690,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1691,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1692,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1695,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1701,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1702,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 78
    argCount: 7
    argNames:
    - index
    - state
    - innerTuple
    - current
    - parent
    - nodeN
    - nodeLabel
    argTypes:
    - Relation
    - SpGistState*
    - SpGistInnerTuple
    - SPPageDesc*
    - SPPageDesc*
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1508
    functionDepth: 7
    functionLinenumber: 1508
    functionLinenumberEnd: 1705
    functionName: spgAddNodeAction
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - SpGistPageAddNewItem
    - addNode
    - SpGistPageStoresNulls
    - BufferGetPage
    - XLogRegisterData
    - SpGistSetLastUsedPage
    - elog
    - STORE_STATE
    - PageGetExactFreeSpace
    - spgFormDeadTuple
    - XLogBeginInsert
    - Assert
    - BufferGetBlockNumber
    - PageIndexTupleDelete
    - UnlockReleaseBuffer
    - GBUF_INNER_PARITY
    - PageSetLSN
    - PageAddItem
    - MarkBufferDirty
    - XLogRegisterBuffer
    - SpGistBlockIsRoot
    - saveNodeLink
    - SpGistGetBuffer
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - SpGistPageGetOpaque
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void spgAddNodeAction(Relation index, SpGistState *state,\n\t\t\t\t
      SpGistInnerTuple innerTuple,\n\t\t\t\t SPPageDesc *current, SPPageDesc *parent,\n\t\t\t\t
      int nodeN, Datum nodeLabel)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1726,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1726,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1731,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1736,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1743,1
    - Dst: spgFormNodeTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1753,1
    - Dst: spgFormInnerTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1756,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1764,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1771,1
    - Dst: spgFormInnerTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1777,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1795,1
    - Dst: SpGistPageGetFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1796,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1803,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1804,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1809,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1814,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1815,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1819,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1829,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1836,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1838,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1838,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1841,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1852,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1854,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1855,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1856,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1859,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1861,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1865,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1866,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1867,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1868,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1870,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1878,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1881,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1883,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1887,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1887,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1891,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1896,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1897,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 67
    argCount: 5
    argNames:
    - index
    - state
    - innerTuple
    - current
    - out
    argTypes:
    - Relation
    - SpGistState*
    - SpGistInnerTuple
    - SPPageDesc*
    - spgChooseOut*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1899
      start: 1710
    functionDepth: 7
    functionLinenumber: 1710
    functionLinenumberEnd: 1899
    functionName: spgSplitNodeAction
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - spgFormNodeTuple
    - XLogInsert
    - SpGistPageAddNewItem
    - SpGistPageStoresNulls
    - palloc_array
    - BufferGetPage
    - XLogRegisterData
    - PageGetItem
    - SpGistSetLastUsedPage
    - elog
    - XLogBeginInsert
    - Assert
    - spgUpdateNodeLink
    - BufferGetBlockNumber
    - PageIndexTupleDelete
    - UnlockReleaseBuffer
    - GBUF_INNER_PARITY
    - PageSetLSN
    - PageGetItemId
    - PageAddItem
    - MarkBufferDirty
    - spgFormInnerTuple
    - XLogRegisterBuffer
    - SpGistBlockIsRoot
    - SpGistGetBuffer
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - SpGistPageGetFreeSpace
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: "void spgSplitNodeAction(Relation index, SpGistState *state,\n\t\t\t\t
      \  SpGistInnerTuple innerTuple,\n\t\t\t\t   SPPageDesc *current, spgChooseOut
      *out)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1772
    functionDepth: 0
    functionLinenumber: 1772
    functionLinenumberEnd: 1775
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SGITITERATE(innerTuple, i, node)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1929,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1943,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1943,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1947,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1949,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1955,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1959,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1959,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1972,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1973,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1973,1
    - Dst: SpGistGetLeafTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1984,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1994,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1995,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1996,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1999,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2000,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2023,1
    - Dst: INTERRUPTS_PENDING_CONDITION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2039,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2054,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2056,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2058,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2063,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2064,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2069,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2082,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2084,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2085,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2094,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2097,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2098,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2099,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2102,1
    - Dst: spgFormLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2108,1
    - Dst: SpGistPageGetFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2110,1
    - Dst: addLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2113,1
    - Dst: checkSplitConditions
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2127,1
    - Dst: moveLeafs
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2128,1
    - Dst: doPickSplit
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2134,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2139,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2144,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2144,1
    - Dst: INTERRUPTS_PENDING_CONDITION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2165,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2171,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2172,1
    - Dst: SGITDATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2179,1
    - Dst: spgExtractNodeLabels
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2181,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2183,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2188,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2190,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2191,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2207,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2210,1
    - Dst: spgMatchNodeAction
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2218,1
    - Dst: SpGistGetLeafTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2271,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2272,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2273,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2276,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2277,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2290,1
    - Dst: spgAddNodeAction
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2292,1
    - Dst: spgSplitNodeAction
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2305,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2312,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2325,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2326,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2331,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2341,1
    - Dst: INTERRUPTS_CAN_BE_PROCESSED
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2341,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2349,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 163
    argCount: 5
    argNames:
    - index
    - state
    - heapPtr
    - datums
    - isnulls
    argTypes:
    - Relation
    - SpGistState*
    - ItemPointerData*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2352
      start: 1908
    functionDepth: 8
    functionLinenumber: 1908
    functionLinenumberEnd: 2352
    functionName: spgdoinsert
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 2
    functionsReached:
    - SGITDATUM
    - SpGistPageIsLeaf
    - errcode
    - LockBuffer
    - SpGistPageStoresNulls
    - pg_prng_uint64_range
    - BufferGetPage
    - errhint
    - PageGetItem
    - spgFormLeafTuple
    - INTERRUPTS_CAN_BE_PROCESSED
    - RelationGetRelationName
    - FunctionCall1Coll
    - spgSplitNodeAction
    - spgAddNodeAction
    - elog
    - SpGistSetLastUsedPage
    - ReleaseBuffer
    - spgMatchNodeAction
    - Assert
    - SpGistGetLeafTupleSize
    - BufferGetBlockNumber
    - pfree
    - spgExtractNodeLabels
    - ReadBuffer
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - UnlockReleaseBuffer
    - moveLeafs
    - INTERRUPTS_PENDING_CONDITION
    - ereport
    - CHECK_FOR_INTERRUPTS
    - PageGetItemId
    - FunctionCall2Coll
    - memset
    - TupleDescCompactAttr
    - checkSplitConditions
    - index_getprocinfo
    - addLeafTuple
    - PG_DETOAST_DATUM
    - SpGistGetBuffer
    - doPickSplit
    - index_getprocid
    - SpGistPageGetFreeSpace
    - Min
    - ConditionalLockBuffer
    linkageType: ''
    returnType: bool
    signature: "bool spgdoinsert(Relation index, SpGistState *state,\n\t\t\tconst
      ItemPointerData *heapPtr, const Datum *datums, const bool *isnulls)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:31,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:33,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 40
    functionName: spg_kd_config
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum spg_kd_config(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - coord
    - isX
    - tst
    argTypes:
    - double
    - bool
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 53
    functionName: getSide
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getSide(double coord, bool isX, Point *tst)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:58,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:59,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:60,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:64,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:66,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:67,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:69,1
    - Dst: getSide
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:73,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:75,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 78
    functionName: spg_kd_choose
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - getSide
    - Assert
    - PointPGetDatum
    - DatumGetPointP
    - PG_GETARG_POINTER
    - DatumGetFloat8
    linkageType: ''
    returnType: Datum
    signature: Datum spg_kd_choose(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 95
    functionName: x_cmp
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int x_cmp(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 106
    functionName: y_cmp
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int y_cmp(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:112,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:113,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:119,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:122,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:126,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:132,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:137,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:138,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:155,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 159
    functionName: spg_kd_picksplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 0
    functionsReached:
    - qsort
    - PG_RETURN_VOID
    - PointPGetDatum
    - palloc_array
    - Float8GetDatum
    - DatumGetPointP
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum spg_kd_picksplit(PG_FUNCTION_ARGS)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:164,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:171,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:172,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:177,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:184,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:190,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:194,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:200,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:202,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:207,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:209,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:215,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:220,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:230,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:234,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:236,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:241,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:243,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:248,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:262,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:264,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:278,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:279,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:294,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:324,1
    - Dst: box_copy
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:325,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:327,1
    - Dst: spg_key_orderbys_distances
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:331,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:331,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:340,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:344,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 105
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 345
    functionName: spg_kd_inner_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_VOID
    - FPlt
    - spg_key_orderbys_distances
    - Assert
    - DatumGetBoxP
    - palloc_array
    - MemoryContextSwitchTo
    - BoxPGetDatum
    - DatumGetPointP
    - box_copy
    - FPgt
    - PG_GETARG_POINTER
    - DatumGetFloat8
    - get_float8_infinity
    linkageType: ''
    returnType: Datum
    signature: Datum spg_kd_inner_consistent(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: SPG_IS_COLLATION_AWARE_STRATEGY
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPG_IS_COLLATION_AWARE_STRATEGY(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:99,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:101,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 108
    functionName: spg_text_config
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum spg_text_config(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:119,1
    - Dst: SET_VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:123,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:125,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:129,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:130,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data
    - datalen
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 134
    functionName: formTextDatum
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 2
    functionsReached:
    - SET_VARSIZE_SHORT
    - memcpy
    - PointerGetDatum
    - SET_VARSIZE
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum formTextDatum(const char *data, int datalen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - a
    - b
    - lena
    - lenb
    argTypes:
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 152
    functionName: commonPrefix
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int commonPrefix(const char *a, const char *b, int lena, int lenb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - nodeLabels
    - nNodes
    - c
    - i
    argTypes:
    - Datum*
    - int
    - int16
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 183
    functionName: searchChar
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 1
    functionsReached:
    - DatumGetInt16
    linkageType: ''
    returnType: bool
    signature: bool searchChar(const Datum *nodeLabels, int nNodes, int16 c, int *i)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:188,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:189,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:190,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:191,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:192,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:202,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:204,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:205,1
    - Dst: commonPrefix
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:207,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:232,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:235,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:237,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:249,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:253,1
    - Dst: searchChar
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:266,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:284,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:288,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:307,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:308,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:316,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:320,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 321
    functionName: spg_text_choose
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - commonPrefix
    - DatumGetTextPP
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - formTextDatum
    - searchChar
    - palloc_object
    - PG_GETARG_POINTER
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum spg_text_choose(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s16
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 331
    functionName: cmpNodePtr
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s16
    linkageType: ''
    returnType: int
    signature: int cmpNodePtr(const void *a, const void *b)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:336,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:337,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:338,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:344,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:347,1
    - Dst: commonPrefix
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:348,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:348,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:349,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:350,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:351,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:361,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:371,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:371,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:375,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:379,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:381,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:382,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:394,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:398,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:399,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:400,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:404,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:409,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:413,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:414,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:414,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:415,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:417,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:423,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 333
    functionDepth: 4
    functionLinenumber: 333
    functionLinenumberEnd: 424
    functionName: spg_text_picksplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - qsort
    - PG_RETURN_VOID
    - commonPrefix
    - DatumGetTextPP
    - palloc_array
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - formTextDatum
    - Min
    - PG_GETARG_POINTER
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum spg_text_picksplit(PG_FUNCTION_ARGS)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:429,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:430,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:431,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:431,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:451,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:452,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:457,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:458,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:462,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:463,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:466,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:466,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:467,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:470,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:470,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:471,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:480,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:481,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:482,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:487,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:497,1
    - Dst: SPG_IS_COLLATION_AWARE_STRATEGY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:516,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:524,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:525,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:527,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:527,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:527,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:528,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:551,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:564,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:566,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:566,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:571,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 426
    functionDepth: 4
    functionLinenumber: 426
    functionLinenumberEnd: 572
    functionName: spg_text_inner_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - pg_newlocale_from_collation
    - palloc_array
    - VARDATA_ANY
    - SET_VARSIZE
    - VARDATA
    - DatumGetInt16
    - elog
    - memcpy
    - Assert
    - VARSIZE_ANY_EXHDR
    - PointerGetDatum
    - memcmp
    - PG_GETARG_POINTER
    - SPG_IS_COLLATION_AWARE_STRATEGY
    - DatumGetTextPP
    - datumCopy
    - palloc
    - Min
    - PG_GET_COLLATION
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum spg_text_inner_consistent(PG_FUNCTION_ARGS)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:577,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:578,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:590,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:593,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:594,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:596,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:597,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:600,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:601,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:603,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:604,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:608,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:610,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:611,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:613,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:613,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:614,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:615,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:615,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:616,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:617,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:625,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:626,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:636,1
    - Dst: DirectFunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:636,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:637,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:639,1
    - Dst: SPG_IS_COLLATION_AWARE_STRATEGY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:653,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:653,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:655,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:656,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:657,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:662,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:662,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:662,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:691,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:701,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 574
    functionDepth: 4
    functionLinenumber: 574
    functionLinenumberEnd: 702
    functionName: spg_text_leaf_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall2Coll
    - VARDATA_ANY
    - VARDATA
    - SET_VARSIZE
    - PG_RETURN_BOOL
    - DatumGetBool
    - elog
    - memcpy
    - Assert
    - VARSIZE_ANY_EXHDR
    - pg_verifymbstr
    - PointerGetDatum
    - memcmp
    - PG_GETARG_POINTER
    - varstr_cmp
    - SPG_IS_COLLATION_AWARE_STRATEGY
    - DatumGetTextPP
    - palloc
    - Min
    - PG_GET_COLLATION
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum spg_text_leaf_consistent(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:64,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:64,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:66,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:68,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - pairingheap_node*
    - pairingheap_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 82
    functionName: pairingheap_SpGistSearchItem_cmp
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - isnan
    linkageType: ''
    returnType: int
    signature: "int pairingheap_SpGistSearchItem_cmp(const pairingheap_node *a,\n\t\t\t\t\t\t\t\t
      const pairingheap_node *b, void *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:91,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:92,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:92,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:95,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:98,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:100,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - so
    - item
    argTypes:
    - SpGistScanOpaque
    - SpGistSearchItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 101
    functionName: spgFreeSearchItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - pfree
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void spgFreeSearchItem(SpGistScanOpaque so, SpGistSearchItem *item)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - so
    - item
    argTypes:
    - SpGistScanOpaque
    - SpGistSearchItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: spgAddSearchItemToQueue
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - pairingheap_add
    linkageType: ''
    returnType: void
    signature: void spgAddSearchItemToQueue(SpGistScanOpaque so, SpGistSearchItem
      *item)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:119,1
    - Dst: SizeOfSpGistSearchItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:119,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - so
    - isnull
    - distances
    argTypes:
    - SpGistScanOpaque
    - bool
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 128
    functionName: spgAllocSearchItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - SizeOfSpGistSearchItem
    - memcpy
    - palloc
    linkageType: ''
    returnType: SpGistSearchItem
    signature: 'SpGistSearchItem *

      spgAllocSearchItem(SpGistScanOpaque so, bool isnull, double *distances)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: spgAllocSearchItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:134,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:136,1
    - Dst: spgAddSearchItemToQueue
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - so
    - isnull
    argTypes:
    - SpGistScanOpaque
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 148
    functionName: spgAddStartItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - spgAllocSearchItem
    - spgAddSearchItemToQueue
    - ItemPointerSet
    linkageType: ''
    returnType: void
    signature: void spgAddStartItem(SpGistScanOpaque so, bool isnull)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:159,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:161,1
    - Dst: pairingheap_allocate
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:164,1
    - Dst: spgAddStartItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:168,1
    - Dst: spgAddStartItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:172,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:174,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:183,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:192,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - so
    argTypes:
    - SpGistScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 154
    functionDepth: 3
    functionLinenumber: 154
    functionLinenumberEnd: 195
    functionName: resetSpGistScanOpaque
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - pfree
    - MemoryContextSwitchTo
    - pairingheap_allocate
    - spgAddStartItem
    linkageType: ''
    returnType: void
    signature: void resetSpGistScanOpaque(SpGistScanOpaque so)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 302
    functionName: spgPrepareScanKeys
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void spgPrepareScanKeys(IndexScanDesc scan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:311,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:313,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:315,1
    - Dst: initSpGistState
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:318,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:320,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:323,1
    - Dst: getSpGistTupleDesc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:334,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:340,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:341,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:344,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:345,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:350,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:353,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:354,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:355,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:359,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:360,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:363,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:364,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 3
    argNames:
    - rel
    - keysz
    - orderbysz
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 304
    functionDepth: 7
    functionLinenumber: 304
    functionLinenumberEnd: 372
    functionName: spgbeginscan
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - fmgr_info_copy
    - initSpGistState
    - palloc0_object
    - palloc0_array
    - RelationGetIndexScan
    - palloc_array
    - getSpGistTupleDesc
    - index_getprocinfo
    - memset
    - AllocSetContextCreate
    - get_float8_infinity
    linkageType: ''
    returnType: IndexScanDesc
    signature: IndexScanDesc spgbeginscan(Relation rel, int keysz, int orderbysz)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:382,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:389,1
    - Dst: get_func_rettype
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:407,1
    - Dst: spgPrepareScanKeys
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:412,1
    - Dst: resetSpGistScanOpaque
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:415,1
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:418,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 5
    argNames:
    - scan
    - scankey
    - nscankeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 374
    functionDepth: 4
    functionLinenumber: 374
    functionLinenumberEnd: 421
    functionName: spgrescan
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - resetSpGistScanOpaque
    - get_func_rettype
    - spgPrepareScanKeys
    - pgstat_count_index_scan
    linkageType: ''
    returnType: void
    signature: "void spgrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys,\n\t\t
      \ ScanKey orderbys, int norderbys)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:428,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:429,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:432,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:435,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:436,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:439,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:443,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:444,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:445,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:446,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:447,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:448,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:451,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 423
    functionDepth: 3
    functionLinenumber: 423
    functionLinenumberEnd: 452
    functionName: spgendscan
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextDelete
    - RelationGetDescr
    - FreeTupleDesc
    linkageType: ''
    returnType: void
    signature: void spgendscan(IndexScanDesc scan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: spgAllocSearchItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:462,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:476,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:485,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:486,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 8
    argNames:
    - so
    - level
    - leafTuple
    - leafValue
    - recheck
    - recheckDistances
    - isnull
    - distances
    argTypes:
    - SpGistScanOpaque
    - int
    - SpGistLeafTuple
    - Datum
    - bool
    - bool
    - bool
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 502
    functionName: spgNewHeapItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - spgAllocSearchItem
    - datumCopy
    - memcpy
    - palloc
    linkageType: ''
    returnType: SpGistSearchItem
    signature: "SpGistSearchItem *\nspgNewHeapItem(SpGistScanOpaque so, int level,
      SpGistLeafTuple leafTuple,\n\t\t\t   Datum leafValue, bool recheck, bool recheckDistances,\n\t\t\t
      \  bool isnull, double *distances)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:524,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:543,1
    - Dst: SGLTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:548,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:555,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:555,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:557,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:558,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:564,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:573,1
    - Dst: spgNewHeapItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:574,1
    - Dst: spgAddSearchItemToQueue
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:582,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:584,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:589,1
    - Dst: storeRes
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:590,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 6
    argNames:
    - so
    - item
    - leafTuple
    - isnull
    - reportedSome
    - storeRes
    argTypes:
    - SpGistScanOpaque
    - SpGistSearchItem*
    - SpGistLeafTuple
    - bool
    - bool*
    - storeRes_func
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 510
    functionDepth: 3
    functionLinenumber: 510
    functionLinenumberEnd: 597
    functionName: spgLeafTest
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - storeRes
    - spgAddSearchItemToQueue
    - Assert
    - SGLTDATUM
    - MemoryContextSwitchTo
    - FunctionCall2Coll
    - spgNewHeapItem
    - PointerGetDatum
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool spgLeafTest(SpGistScanOpaque so, SpGistSearchItem *item,\n\t\t\tSpGistLeafTuple
      leafTuple, bool isnull,\n\t\t\tbool *reportedSome, storeRes_func storeRes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:610,1
    - Dst: SGITDATUM
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:618,1
    - Dst: spgExtractNodeLabels
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 4
    argNames:
    - in
    - so
    - item
    - innerTuple
    argTypes:
    - spgInnerConsistentIn*
    - SpGistScanOpaque
    - SpGistSearchItem*
    - SpGistInnerTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 600
    functionDepth: 2
    functionLinenumber: 600
    functionLinenumberEnd: 621
    functionName: spgInitInnerConsistentIn
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - SGITDATUM
    - spgExtractNodeLabels
    linkageType: ''
    returnType: void
    signature: "void spgInitInnerConsistentIn(spgInnerConsistentIn *in,\n\t\t\t\t\t\t
      SpGistScanOpaque so,\n\t\t\t\t\t\t SpGistSearchItem *item,\n\t\t\t\t\t\t SpGistInnerTuple
      innerTuple)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: spgAllocSearchItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:630,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 7
    argNames:
    - so
    - parentItem
    - tuple
    - out
    - i
    - isnull
    - distances
    argTypes:
    - SpGistScanOpaque
    - SpGistSearchItem*
    - SpGistNodeTuple
    - spgInnerConsistentOut*
    - int
    - bool
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 623
    functionDepth: 2
    functionLinenumber: 623
    functionLinenumberEnd: 659
    functionName: spgMakeInnerItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - spgAllocSearchItem
    - datumCopy
    linkageType: ''
    returnType: SpGistSearchItem
    signature: "SpGistSearchItem *\nspgMakeInnerItem(SpGistScanOpaque so,\n\t\t\t\t
      SpGistSearchItem *parentItem,\n\t\t\t\t SpGistNodeTuple tuple,\n\t\t\t\t spgInnerConsistentOut
      *out, int i, bool isnull,\n\t\t\t\t double *distances)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:665,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:670,1
    - Dst: spgInitInnerConsistentIn
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:676,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:679,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:681,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:682,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:688,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:695,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:701,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:716,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:720,1
    - Dst: spgMakeInnerItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:729,1
    - Dst: spgAddSearchItemToQueue
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:732,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:736,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 4
    argNames:
    - so
    - item
    - innerTuple
    - isnull
    argTypes:
    - SpGistScanOpaque
    - SpGistSearchItem*
    - SpGistInnerTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 661
    functionDepth: 3
    functionLinenumber: 661
    functionLinenumberEnd: 737
    functionName: spgInnerTest
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - elog
    - spgMakeInnerItem
    - spgAddSearchItemToQueue
    - Assert
    - spgInitInnerConsistentIn
    - palloc_array
    - MemoryContextSwitchTo
    - FunctionCall2Coll
    - memset
    - PointerGetDatum
    - ItemPointerIsValid
    linkageType: ''
    returnType: void
    signature: "void spgInnerTest(SpGistScanOpaque so, SpGistSearchItem *item,\n\t\t\t
      SpGistInnerTuple innerTuple, bool isnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 703
    functionDepth: 0
    functionLinenumber: 703
    functionLinenumberEnd: 706
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SGITITERATE(innerTuple, i, node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:743,1
    - Dst: pairingheap_remove_first
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:747,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - so
    argTypes:
    - SpGistScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 740
    functionDepth: 1
    functionLinenumber: 740
    functionLinenumberEnd: 748
    functionName: spgGetNextQueueItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - pairingheap_remove_first
    - pairingheap_is_empty
    linkageType: ''
    returnType: SpGistSearchItem
    signature: 'SpGistSearchItem *

      spgGetNextQueueItem(SpGistScanOpaque so)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:766,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:775,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:775,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:778,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:778,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:785,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:785,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:787,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:787,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:793,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:797,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:797,1
    - Dst: spgLeafTest
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:799,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:801,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 8
    argNames:
    - so
    - item
    - page
    - offset
    - isnull
    - isroot
    - reportedSome
    - storeRes
    argTypes:
    - SpGistScanOpaque
    - SpGistSearchItem*
    - Page
    - OffsetNumber
    - bool
    - bool
    - bool*
    - storeRes_func
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 757
    functionDepth: 4
    functionLinenumber: 757
    functionLinenumberEnd: 802
    functionName: spgTestLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - elog
    - ItemPointerIsValid
    - spgLeafTest
    - Assert
    - PageGetItemId
    - PageGetItem
    - SGLT_GET_NEXTOFFSET
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber spgTestLeafTuple(SpGistScanOpaque so,\n\t\t\t\t SpGistSearchItem
      *item,\n\t\t\t\t Page page, OffsetNumber offset,\n\t\t\t\t bool isnull, bool
      isroot,\n\t\t\t\t bool *reportedSome,\n\t\t\t\t storeRes_func storeRes)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: spgGetNextQueueItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:820,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:827,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:832,1
    - Dst: storeRes
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:833,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:840,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:841,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:847,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:848,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:850,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:852,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:853,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:854,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:859,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:861,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:863,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:866,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:868,1
    - Dst: spgTestLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:872,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:881,1
    - Dst: spgTestLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:882,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:893,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:893,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:901,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:901,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:905,1
    - Dst: spgInnerTest
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:909,1
    - Dst: spgFreeSearchItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:914,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:916,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:920,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 4
    argNames:
    - index
    - so
    - scanWholeIndex
    - storeRes
    argTypes:
    - Relation
    - SpGistScanOpaque
    - bool
    - storeRes_func
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 811
    functionDepth: 5
    functionLinenumber: 811
    functionLinenumberEnd: 921
    functionName: spgWalk
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - SpGistPageIsLeaf
    - LockBuffer
    - SpGistPageStoresNulls
    - BufferGetPage
    - PageGetItem
    - ItemPointerGetOffsetNumber
    - elog
    - spgGetNextQueueItem
    - spgFreeSearchItem
    - MemoryContextReset
    - Assert
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - spgTestLeafTuple
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - storeRes
    - spgInnerTest
    - CHECK_FOR_INTERRUPTS
    - PageGetItemId
    - SpGistBlockIsRoot
    linkageType: ''
    returnType: void
    signature: "void spgWalk(Relation index, SpGistScanOpaque so, bool scanWholeIndex,\n\t\tstoreRes_func
      storeRes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:931,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:932,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 8
    argNames:
    - so
    - heapPtr
    - leafValue
    - isnull
    - leafTuple
    - recheck
    - recheckDistances
    - distances
    argTypes:
    - SpGistScanOpaque
    - ItemPointer
    - Datum
    - bool
    - SpGistLeafTuple
    - bool
    - bool
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 934
    functionName: storeBitmap
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - tbm_add_tuples
    linkageType: ''
    returnType: void
    signature: "void storeBitmap(SpGistScanOpaque so, ItemPointer heapPtr,\n\t\t\tDatum
      leafValue, bool isnull,\n\t\t\tSpGistLeafTuple leafTuple, bool recheck,\n\t\t\tbool
      recheckDistances, double *distances)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: spgWalk
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 936
    functionDepth: 6
    functionLinenumber: 936
    functionLinenumberEnd: 950
    functionName: spggetbitmap
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - spgWalk
    linkageType: ''
    returnType: int64
    signature: int64 spggetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:959,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:970,1
    - Dst: spgDeformLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1007,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1013,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 8
    argNames:
    - so
    - heapPtr
    - leafValue
    - isnull
    - leafTuple
    - recheck
    - recheckDistances
    - nonNullDistances
    argTypes:
    - SpGistScanOpaque
    - ItemPointer
    - Datum
    - bool
    - SpGistLeafTuple
    - bool
    - bool
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 953
    functionDepth: 7
    functionLinenumber: 953
    functionLinenumberEnd: 1018
    functionName: storeGettuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - spgDeformLeafTuple
    - heap_form_tuple
    - palloc_array
    linkageType: ''
    returnType: void
    signature: "void storeGettuple(SpGistScanOpaque so, ItemPointer heapPtr,\n\t\t\t
      \ Datum leafValue, bool isnull,\n\t\t\t  SpGistLeafTuple leafTuple, bool recheck,\n\t\t\t
      \ bool recheckDistances, double *nonNullDistances)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1026,1
    - Dst: index_store_float8_orderby_distances
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1041,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1055,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1064,1
    - Dst: spgWalk
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1068,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1020
    functionDepth: 6
    functionLinenumber: 1020
    functionLinenumberEnd: 1075
    functionName: spggettuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - elog
    - index_store_float8_orderby_distances
    - pfree
    - spgWalk
    linkageType: ''
    returnType: bool
    signature: bool spggettuple(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: spgGetCache
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1087,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - index
    - attno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1077
    functionDepth: 5
    functionLinenumber: 1077
    functionLinenumberEnd: 1090
    functionName: spgcanreturn
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - spgGetCache
    linkageType: ''
    returnType: bool
    signature: bool spgcanreturn(Relation index, int attno)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:50,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:50,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:51,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:52,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:53,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:58,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:60,1
    - Dst: get_opfamily_name
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:63,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:66,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:66,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:67,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:67,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:73,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:82,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:83,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:84,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:86,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:101,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:106,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:112,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:116,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:121,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:125,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:130,1
    - Dst: check_amoptsproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:135,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:138,1
    - Dst: check_amproc_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:142,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:148,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:150,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:162,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:164,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:180,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:181,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:182,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:184,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:193,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:193,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:198,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:199,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:200,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:202,1
    - Dst: get_op_rettype
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:206,1
    - Dst: opfamily_can_sort_type
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:207,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:209,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:210,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:211,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:213,1
    - Dst: check_amop_signature
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:224,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:230,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:232,1
    - Dst: identify_opfamily_groups
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:238,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:242,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:272,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:277,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:278,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:279,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 104
    argCount: 1
    argNames:
    - opclassoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 31
    functionDepth: 3
    functionLinenumber: 31
    functionLinenumberEnd: 282
    functionName: gistvalidate
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvalidate.c
    functionUses: 0
    functionsReached:
    - identify_opfamily_groups
    - errcode
    - format_operator
    - format_procedure
    - check_amop_signature
    - NameStr
    - check_amoptsproc_signature
    - SearchSysCache1
    - elog
    - check_amproc_signature
    - HeapTupleIsValid
    - ReleaseSysCache
    - errmsg
    - OidIsValid
    - get_opfamily_proc
    - ObjectIdGetDatum
    - SearchSysCacheList1
    - opfamily_can_sort_type
    - ReleaseCatCacheList
    - ereport
    - lfirst
    - GETSTRUCT
    - get_opfamily_name
    - get_op_rettype
    linkageType: ''
    returnType: bool
    signature: bool gistvalidate(Oid opclassoid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 257
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvalidate.c
    functionUses: 28
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, grouplist)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:305,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:346,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:347,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:348,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 4
    argNames:
    - opfamilyoid
    - opclassoid
    - operators
    - functions
    argTypes:
    - Oid
    - Oid
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 353
    functionName: gistadjustmembers
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvalidate.c
    functionUses: 0
    functionsReached:
    - lfirst
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: "void gistadjustmembers(Oid opfamilyoid,\n\t\t\t\t  Oid opclassoid,\n\t\t\t\t
      \ List *operators,\n\t\t\t\t  List *functions)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 310
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvalidate.c
    functionUses: 28
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, operators)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:346,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:347,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvalidate.c:348,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 352
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvalidate.c
    functionUses: 28
    functionsReached:
    - lfirst
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, functions)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:193,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:194,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:195,1
    - Dst: initGISTstate
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:200,1
    - Dst: createTempGistContext
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:207,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:234,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:238,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:240,1
    - Dst: tuplesort_begin_index_gist
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:267,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:274,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:281,1
    - Dst: gist_indexsortbuild
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:283,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:285,1
    - Dst: gistNewBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:297,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:298,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:298,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:299,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:301,1
    - Dst: GISTInitBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:303,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:305,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:306,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:308,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:310,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:313,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:323,1
    - Dst: gistEmptyAllBuffers
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:324,1
    - Dst: gistFreeBuildBuffers
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:325,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:332,1
    - Dst: log_newpage_range
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:334,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:335,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:341,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:342,1
    - Dst: freeGISTstate
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:344,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:349,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 65
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 178
    functionDepth: 6
    functionLinenumber: 178
    functionLinenumberEnd: 355
    functionName: gistbuild
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 0
    functionsReached:
    - BufferGetPage
    - gistNewBuffer
    - RelationGetRelationName
    - gistEmptyAllBuffers
    - freeGISTstate
    - elog
    - Assert
    - BufferGetBlockNumber
    - tuplesort_begin_index_gist
    - RelationGetNumberOfBlocks
    - palloc_object
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - UnlockReleaseBuffer
    - log_newpage_range
    - tuplesort_end
    - GISTInitBuffer
    - PageSetLSN
    - tuplesort_performsort
    - MarkBufferDirty
    - initGISTstate
    - gistFreeBuildBuffers
    - table_index_build_scan
    - createTempGistContext
    - START_CRIT_SECTION
    - MemoryContextSwitchTo
    - gist_indexsortbuild
    - RelationNeedsWAL
    - MemoryContextDelete
    - index_getprocid
    - END_CRIT_SECTION
    linkageType: ''
    returnType: IndexBuildResult
    signature: 'IndexBuildResult *

      gistbuild(Relation heap, Relation index, IndexInfo *indexInfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:377,1
    - Dst: gistCompressValues
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:380,1
    - Dst: tuplesort_putindextuplevalues
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:384,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:389,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 6
    argNames:
    - index
    - tid
    - values
    - isnull
    - tupleIsAlive
    - state
    argTypes:
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 394
    functionName: gistSortedBuildCallback
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 0
    functionsReached:
    - gistCompressValues
    - tuplesort_putindextuplevalues
    - MemoryContextReset
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void gistSortedBuildCallback(Relation index,\n\t\t\t\t\t\tItemPointer
      tid,\n\t\t\t\t\t\tDatum *values,\n\t\t\t\t\t\tbool *isnull,\n\t\t\t\t\t\tbool
      tupleIsAlive,\n\t\t\t\t\t\tvoid *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smgr_bulk_start_rel
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:409,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:412,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:413,1
    - Dst: gistinitpage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:415,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:420,1
    - Dst: gist_indexsortbuild_levelstate_add
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:422,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:423,1
    - Dst: gist_indexsortbuild_levelstate_flush
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:436,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:440,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:441,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:446,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:447,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:448,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:449,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:451,1
    - Dst: smgr_bulk_finish
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:453,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - state
    argTypes:
    - GISTBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 399
    functionDepth: 2
    functionLinenumber: 399
    functionLinenumberEnd: 454
    functionName: gist_indexsortbuild
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - smgr_bulk_get_buf
    - palloc0_object
    - MemoryContextReset
    - memcpy
    - gist_indexsortbuild_levelstate_flush
    - pfree
    - tuplesort_getindextuple
    - gist_indexsortbuild_levelstate_add
    - gistinitpage
    - PageSetLSN
    - palloc
    - smgr_bulk_finish
    - smgr_bulk_write
    - smgr_bulk_start_rel
    linkageType: ''
    returnType: void
    signature: void gist_indexsortbuild(GISTBuildState *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:468,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:469,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:473,1
    - Dst: gist_indexsortbuild_levelstate_flush
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:477,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:483,1
    - Dst: gistinitpage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:486,1
    - Dst: gistfillbuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:489,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - state
    - levelstate
    - itup
    argTypes:
    - GISTBuildState*
    - GistSortedBuildLevelState*
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 490
    functionName: gist_indexsortbuild_levelstate_add
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - GistPageGetOpaque
    - gist_indexsortbuild_levelstate_flush
    - palloc0
    - gistinitpage
    - gistfillbuffer
    - PageGetFreeSpace
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void gist_indexsortbuild_levelstate_add(GISTBuildState *state,\n\t\t\t\t\t\t\t\t
      \  GistSortedBuildLevelState *levelstate,\n\t\t\t\t\t\t\t\t   IndexTuple itup)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:503,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:505,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:507,1
    - Dst: gistextractpage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:510,1
    - Dst: gistextractpage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:517,1
    - Dst: gistjoinvector
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:519,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:520,1
    - Dst: gistSplit
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:524,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:529,1
    - Dst: gistunion
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:530,1
    - Dst: gistfillitupvec
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:533,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:537,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:550,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:554,1
    - Dst: gistinitpage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:556,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:561,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:561,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:562,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:562,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:564,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:581,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:588,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:589,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:590,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:600,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:601,1
    - Dst: gistinitpage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:603,1
    - Dst: gist_indexsortbuild_levelstate_add
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:607,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 2
    argNames:
    - state
    - levelstate
    argTypes:
    - GISTBuildState*
    - GistSortedBuildLevelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 492
    functionDepth: 2
    functionLinenumber: 492
    functionLinenumberEnd: 609
    functionName: gist_indexsortbuild_levelstate_flush
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 2
    functionsReached:
    - RelationGetRelationName
    - elog
    - gistSplit
    - pfree
    - gist_indexsortbuild_levelstate_add
    - PageSetLSN
    - IndexTupleSize
    - palloc0_object
    - GistPageGetOpaque
    - CHECK_FOR_INTERRUPTS
    - PageAddItem
    - gistinitpage
    - ItemPointerSetBlockNumber
    - gistfillitupvec
    - gistunion
    - GistPageIsLeaf
    - smgr_bulk_get_buf
    - MemoryContextSwitchTo
    - gistjoinvector
    - gistextractpage
    - palloc
    - smgr_bulk_write
    linkageType: ''
    returnType: void
    signature: "void gist_indexsortbuild_levelstate_flush(GISTBuildState *state,\n\t\t\t\t\t\t\t\t\t
      GistSortedBuildLevelState *levelstate)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:657,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:660,1
    - Dst: pow
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:727,1
    - Dst: pow
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:731,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:757,1
    - Dst: calculatePagesPerBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:767,1
    - Dst: gistInitBuildBuffers
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:770,1
    - Dst: gistGetMaxLevel
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:771,1
    - Dst: gistInitParentMap
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:773,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:777,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - buildstate
    argTypes:
    - GISTBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 625
    functionDepth: 2
    functionLinenumber: 625
    functionLinenumberEnd: 779
    functionName: gistInitBuffering
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 0
    functionsReached:
    - elog
    - calculatePagesPerBuffer
    - pow
    - gistInitParentMap
    - gistInitBuildBuffers
    - TupleDescCompactAttr
    - MAXALIGN
    - gistGetMaxLevel
    linkageType: ''
    returnType: void
    signature: void gistInitBuffering(GISTBuildState *buildstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pow
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:813,1
    - Dst: rint
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - buildstate
    - levelStep
    argTypes:
    - GISTBuildState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 816
    functionName: calculatePagesPerBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - pow
    - rint
    linkageType: ''
    returnType: int
    signature: int calculatePagesPerBuffer(GISTBuildState *buildstate, int levelStep)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:833,1
    - Dst: gistFormTuple
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:836,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:843,1
    - Dst: gistBufferingBuildInsert
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:857,1
    - Dst: gistdoinsert
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:865,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:869,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:870,1
    - Dst: calculatePagesPerBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:877,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:892,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:892,1
    - Dst: gistInitBuffering
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:901,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 6
    argNames:
    - index
    - tid
    - values
    - isnull
    - tupleIsAlive
    - state
    argTypes:
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 821
    functionDepth: 3
    functionLinenumber: 821
    functionLinenumberEnd: 903
    functionName: gistBuildCallback
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 0
    functionsReached:
    - gistInitBuffering
    - gistdoinsert
    - calculatePagesPerBuffer
    - MemoryContextReset
    - gistFormTuple
    - RelationGetSmgr
    - MemoryContextSwitchTo
    - smgrnblocks
    - gistBufferingBuildInsert
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: "void gistBuildCallback(Relation index,\n\t\t\t\t  ItemPointer tid,\n\t\t\t\t
      \ Datum *values,\n\t\t\t\t  bool *isnull,\n\t\t\t\t  bool tupleIsAlive,\n\t\t\t\t
      \ void *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gistProcessItup
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:912,1
    - Dst: gistProcessEmptyingQueue
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buildstate
    - itup
    argTypes:
    - GISTBuildState*
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 908
    functionDepth: 1
    functionLinenumber: 908
    functionLinenumberEnd: 916
    functionName: gistBufferingBuildInsert
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - gistProcessItup
    - gistProcessEmptyingQueue
    linkageType: ''
    returnType: void
    signature: void gistBufferingBuildInsert(GISTBuildState *buildstate, IndexTuple
      itup)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:939,1
    - Dst: LEVEL_HAS_BUFFERS
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:957,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:969,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:970,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:972,1
    - Dst: gistchoose
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:973,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:974,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:975,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:976,1
    - Dst: gistMemorizeParent
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:979,1
    - Dst: gistgetadjusted
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:985,1
    - Dst: gistbufferinginserttuples
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:988,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:999,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1005,1
    - Dst: LEVEL_HAS_BUFFERS
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1009,1
    - Dst: gistGetNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1018,1
    - Dst: gistPushItupToNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1021,1
    - Dst: BUFFER_OVERFLOWED
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1023,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1031,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1032,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1033,1
    - Dst: gistbufferinginserttuples
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1034,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 4
    argNames:
    - buildstate
    - itup
    - startblkno
    - startlevel
    argTypes:
    - GISTBuildState*
    - IndexTuple
    - BlockNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 924
    functionDepth: 4
    functionLinenumber: 924
    functionLinenumberEnd: 1041
    functionName: gistProcessItup
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - gistPushItupToNodeBuffer
    - Assert
    - LockBuffer
    - BUFFER_OVERFLOWED
    - CHECK_FOR_INTERRUPTS
    - BufferGetPage
    - PageGetItemId
    - gistMemorizeParent
    - PageGetItem
    - gistgetadjusted
    - ReadBuffer
    - UnlockReleaseBuffer
    - gistbufferinginserttuples
    - gistchoose
    - ItemPointerGetBlockNumber
    - LEVEL_HAS_BUFFERS
    - gistGetNodeBuffer
    linkageType: ''
    returnType: bool
    signature: "bool gistProcessItup(GISTBuildState *buildstate, IndexTuple itup,\n\t\t\t\tBlockNumber
      startblkno, int startlevel)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gistplacetopage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1065,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1081,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1083,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1087,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1090,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1099,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1102,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1103,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1104,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1105,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1107,1
    - Dst: gistMemorizeAllDownlinks
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1108,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1109,1
    - Dst: gistMemorizeParent
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1115,1
    - Dst: gistBufferingFindCorrectParent
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1136,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1137,1
    - Dst: gistRelocateBuildBuffersOnSplit
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1149,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1156,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1157,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1161,1
    - Dst: gistMemorizeParent
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1171,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1172,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1173,1
    - Dst: gistMemorizeAllDownlinks
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1182,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1188,1
    - Dst: gistbufferinginserttuples
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1193,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1197,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1200,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 8
    argNames:
    - buildstate
    - buffer
    - level
    - itup
    - ntup
    - oldoffnum
    - parentblk
    - downlinkoffnum
    argTypes:
    - GISTBuildState*
    - Buffer
    - int
    - IndexTuple*
    - int
    - OffsetNumber
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1055
    functionDepth: 4
    functionLinenumber: 1055
    functionLinenumberEnd: 1203
    functionName: gistbufferinginserttuples
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 2
    functionsReached:
    - LockBuffer
    - palloc_array
    - BufferGetPage
    - gistMemorizeParent
    - PageGetItem
    - elog
    - Assert
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - list_length
    - UnlockReleaseBuffer
    - gistbufferinginserttuples
    - ItemPointerGetBlockNumber
    - gistMemorizeAllDownlinks
    - list_free_deep
    - gistRelocateBuildBuffersOnSplit
    - PageGetItemId
    - lfirst
    - gistBufferingFindCorrectParent
    - gistplacetopage
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber gistbufferinginserttuples(GISTBuildState *buildstate,
      Buffer buffer, int level,\n\t\t\t\t\t\t  IndexTuple *itup, int ntup, OffsetNumber
      oldoffnum,\n\t\t\t\t\t\t  BlockNumber parentblk, OffsetNumber downlinkoffnum)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1161,1
    - Dst: gistMemorizeParent
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1171,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1172,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1173,1
    - Dst: gistMemorizeAllDownlinks
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1182,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1159
    functionDepth: 1
    functionLinenumber: 1159
    functionLinenumberEnd: 1190
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 28
    functionsReached:
    - BufferGetBlockNumber
    - gistMemorizeParent
    - lfirst
    - UnlockReleaseBuffer
    - gistMemorizeAllDownlinks
    linkageType: ''
    returnType: void
    signature: void foreach(lc, splitinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gistGetParent
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1237,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1245,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1249,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1250,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1251,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1252,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1253,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1259,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1260,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1262,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1276,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1278,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1279,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1281,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1289,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 5
    argNames:
    - buildstate
    - childblkno
    - level
    - parentblkno
    - downlinkoffnum
    argTypes:
    - GISTBuildState*
    - BlockNumber
    - int
    - BlockNumber*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1224
    functionDepth: 4
    functionLinenumber: 1224
    functionLinenumberEnd: 1291
    functionName: gistBufferingFindCorrectParent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - gistGetParent
    - elog
    - OffsetNumberNext
    - LockBuffer
    - BufferGetPage
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    - ReadBuffer
    - ItemPointerGetBlockNumber
    - gistcheckpage
    linkageType: ''
    returnType: Buffer
    signature: "Buffer gistBufferingFindCorrectParent(GISTBuildState *buildstate,\n\t\t\t\t\t\t\t
      \  BlockNumber childblkno, int level,\n\t\t\t\t\t\t\t   BlockNumber *parentblkno,\n\t\t\t\t\t\t\t
      \  OffsetNumber *downlinkoffnum)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1309,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1310,1
    - Dst: gistUnloadNodeBuffers
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1317,1
    - Dst: gistPopItupFromNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1336,1
    - Dst: gistProcessItup
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1349,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1359,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - buildstate
    argTypes:
    - GISTBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1298
    functionDepth: 5
    functionLinenumber: 1298
    functionLinenumberEnd: 1362
    functionName: gistProcessEmptyingQueue
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - MemoryContextReset
    - linitial
    - gistPopItupFromNodeBuffer
    - list_delete_first
    - gistUnloadNodeBuffers
    - gistProcessItup
    linkageType: ''
    returnType: void
    signature: void gistProcessEmptyingQueue(GISTBuildState *buildstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1378,1
    - Dst: linitial
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1396,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1406,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1409,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1410,1
    - Dst: gistProcessEmptyingQueue
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1412,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1416,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1418,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1420,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - buildstate
    argTypes:
    - GISTBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1371
    functionDepth: 6
    functionLinenumber: 1371
    functionLinenumberEnd: 1421
    functionName: gistEmptyAllBuffers
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - elog
    - gistProcessEmptyingQueue
    - linitial
    - MemoryContextSwitchTo
    - list_delete_first
    - lcons
    linkageType: ''
    returnType: void
    signature: void gistEmptyAllBuffers(GISTBuildState *buildstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1444,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1450,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1451,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1453,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1456,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1465,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1466,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1467,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1468,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1426
    functionDepth: 4
    functionLinenumber: 1426
    functionLinenumberEnd: 1477
    functionName: gistGetMaxLevel
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - LockBuffer
    - BufferGetPage
    - PageGetItemId
    - PageGetItem
    - ReadBuffer
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - GistPageIsLeaf
    linkageType: ''
    returnType: int
    signature: int gistGetMaxLevel(Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - buildstate
    argTypes:
    - GISTBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1515
    functionDepth: 1
    functionLinenumber: 1515
    functionLinenumberEnd: 1527
    functionName: gistInitParentMap
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void gistInitParentMap(GISTBuildState *buildstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buildstate
    - child
    - parent
    argTypes:
    - GISTBuildState*
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1529
    functionDepth: 1
    functionLinenumber: 1529
    functionLinenumberEnd: 1540
    functionName: gistMemorizeParent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 3
    functionsReached:
    - hash_search
    linkageType: ''
    returnType: void
    signature: void gistMemorizeParent(GISTBuildState *buildstate, BlockNumber child,
      BlockNumber parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1550,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1553,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1553,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1555,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1558,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1559,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1560,1
    - Dst: gistMemorizeParent
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - buildstate
    - parentbuf
    argTypes:
    - GISTBuildState*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1545
    functionDepth: 4
    functionLinenumber: 1545
    functionLinenumberEnd: 1564
    functionName: gistMemorizeAllDownlinks
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 2
    functionsReached:
    - Assert
    - BufferGetBlockNumber
    - BufferGetPage
    - PageGetItemId
    - gistMemorizeParent
    - PageGetMaxOffsetNumber
    - PageGetItem
    - ItemPointerGetBlockNumber
    - GistPageIsLeaf
    linkageType: ''
    returnType: void
    signature: void gistMemorizeAllDownlinks(GISTBuildState *buildstate, Buffer parentbuf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1573,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuild.c:1578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buildstate
    - child
    argTypes:
    - GISTBuildState*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1581
      start: 1566
    functionDepth: 1
    functionLinenumber: 1566
    functionLinenumberEnd: 1581
    functionName: gistGetParent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuild.c
    functionUses: 1
    functionsReached:
    - elog
    - hash_search
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber gistGetParent(GISTBuildState *buildstate, BlockNumber child)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_max
      Src: /src/postgres/src/backend/access/gist/gistproc.c:57,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/access/gist/gistproc.c:58,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/access/gist/gistproc.c:59,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/access/gist/gistproc.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - n
    - a
    - b
    argTypes:
    - BOX*
    - BOX*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 3
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: rt_box_union
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_min
    - float8_max
    linkageType: ''
    returnType: void
    signature: void rt_box_union(BOX *n, const BOX *a, const BOX *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: float8_le
      Src: /src/postgres/src/backend/access/gist/gistproc.c:77,1
    - Dst: float8_le
      Src: /src/postgres/src/backend/access/gist/gistproc.c:78,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/gist/gistproc.c:86,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/gist/gistproc.c:86,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/gist/gistproc.c:87,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/access/gist/gistproc.c:88,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:88,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 90
    functionName: size_box
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_mul
    - float8_mi
    - isnan
    - float8_le
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: float8 size_box(const BOX *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rt_box_union
      Src: /src/postgres/src/backend/access/gist/gistproc.c:101,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:102,1
    - Dst: size_box
      Src: /src/postgres/src/backend/access/gist/gistproc.c:102,1
    - Dst: size_box
      Src: /src/postgres/src/backend/access/gist/gistproc.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - original
    - new
    argTypes:
    - BOX*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 103
    functionName: box_penalty
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - size_box
    - rt_box_union
    linkageType: ''
    returnType: float8
    signature: float8 box_penalty(const BOX *original, const BOX *new)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:115,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:116,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:117,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/gist/gistproc.c:119,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:121,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:126,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:127,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:133,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:134,1
    - Dst: gist_box_leaf_consistent
      Src: /src/postgres/src/backend/access/gist/gistproc.c:134,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:134,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:138,1
    - Dst: rtree_internal_consistent
      Src: /src/postgres/src/backend/access/gist/gistproc.c:138,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:138,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 141
    functionName: gist_box_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - rtree_internal_consistent
    - DatumGetBoxP
    - PG_GETARG_BOX_P
    - PG_GETARG_UINT16
    - GIST_LEAF
    - PG_GETARG_OID
    - gist_box_leaf_consistent
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_box_consistent(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: float8_lt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:149,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:151,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:153,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - b
    - addon
    argTypes:
    - BOX*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 157
    functionName: adjustBox
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_gt
    - float8_lt
    linkageType: ''
    returnType: void
    signature: void adjustBox(BOX *b, const BOX *addon)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:167,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:168,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:175,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:176,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistproc.c:177,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:181,1
    - Dst: adjustBox
      Src: /src/postgres/src/backend/access/gist/gistproc.c:182,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 187
    functionName: gist_box_union
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - memcpy
    - DatumGetBoxP
    - adjustBox
    - palloc_object
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_box_union(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:202,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:203,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:204,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:205,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:206,1
    - Dst: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:208,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 199
    functionDepth: 5
    functionLinenumber: 199
    functionLinenumberEnd: 210
    functionName: gist_box_penalty
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - box_penalty
    - PG_GETARG_POINTER
    - DatumGetBoxP
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_box_penalty(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:228,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:229,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistproc.c:232,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:234,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:241,1
    - Dst: adjustBox
      Src: /src/postgres/src/backend/access/gist/gistproc.c:245,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:254,1
    - Dst: adjustBox
      Src: /src/postgres/src/backend/access/gist/gistproc.c:258,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:264,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - entryvec
    - v
    argTypes:
    - GistEntryVector*
    - GIST_SPLITVEC*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 216
    functionDepth: 3
    functionLinenumber: 216
    functionLinenumberEnd: 266
    functionName: fallbackSplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - OffsetNumberNext
    - DatumGetBoxP
    - adjustBox
    - BoxPGetDatum
    - palloc_object
    - palloc
    linkageType: ''
    returnType: void
    signature: void fallbackSplit(GistEntryVector *entryvec, GIST_SPLITVEC *v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_cmp_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 322
    functionName: interval_cmp_lower
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_cmp_internal
    linkageType: ''
    returnType: int
    signature: int interval_cmp_lower(const void *i1, const void *i2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_cmp_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 334
    functionName: interval_cmp_upper
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_cmp_internal
    linkageType: ''
    returnType: int
    signature: int interval_cmp_upper(const void *i1, const void *i2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - val
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 346
    functionName: non_negative
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: float
    signature: float non_negative(float val)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: float4_div
      Src: /src/postgres/src/backend/access/gist/gistproc.c:383,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/gist/gistproc.c:383,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:397,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:400,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/access/gist/gistproc.c:403,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:403,1
    - Dst: non_negative
      Src: /src/postgres/src/backend/access/gist/gistproc.c:437,1
    - Dst: non_negative
      Src: /src/postgres/src/backend/access/gist/gistproc.c:437,1
    - Dst: non_negative
      Src: /src/postgres/src/backend/access/gist/gistproc.c:439,1
    - Dst: non_negative
      Src: /src/postgres/src/backend/access/gist/gistproc.c:439,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 6
    argNames:
    - context
    - dimNum
    - rightLower
    - minLeftCount
    - leftUpper
    - maxLeftCount
    argTypes:
    - ConsiderSplitContext*
    - int
    - float8
    - int
    - float8
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 351
    functionDepth: 3
    functionLinenumber: 351
    functionLinenumberEnd: 455
    functionName: g_box_consider_split
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float4_div
    - float8_div
    - float8_mi
    - Min
    - non_negative
    linkageType: ''
    returnType: void
    signature: "void g_box_consider_split(ConsiderSplitContext *context, int dimNum,\n\t\t\t\t\t
      float8 rightLower, int minLeftCount,\n\t\t\t\t\t float8 leftUpper, int maxLeftCount)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_cmp_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 467
    functionName: common_entry_cmp
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_cmp_internal
    linkageType: ''
    returnType: int
    signature: int common_entry_cmp(const void *i1, const void *i2)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:498,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:499,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gistproc.c:513,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:519,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:520,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistproc.c:525,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:527,1
    - Dst: adjustBox
      Src: /src/postgres/src/backend/access/gist/gistproc.c:531,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistproc.c:546,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:548,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistproc.c:565,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/gist/gistproc.c:567,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/gist/gistproc.c:569,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:616,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:618,1
    - Dst: float8_le
      Src: /src/postgres/src/backend/access/gist/gistproc.c:631,1
    - Dst: g_box_consider_split
      Src: /src/postgres/src/backend/access/gist/gistproc.c:637,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:653,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:655,1
    - Dst: float8_ge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:667,1
    - Dst: g_box_consider_split
      Src: /src/postgres/src/backend/access/gist/gistproc.c:673,1
    - Dst: fallbackSplit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:683,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:684,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:696,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:697,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:702,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:703,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:710,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistproc.c:735,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:743,1
    - Dst: float8_le
      Src: /src/postgres/src/backend/access/gist/gistproc.c:755,1
    - Dst: float8_ge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:758,1
    - Dst: PLACE_LEFT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:776,1
    - Dst: float8_ge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:776,1
    - Dst: PLACE_RIGHT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:779,1
    - Dst: ceil
      Src: /src/postgres/src/backend/access/gist/gistproc.c:792,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:800,1
    - Dst: fabs
      Src: /src/postgres/src/backend/access/gist/gistproc.c:801,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:801,1
    - Dst: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:801,1
    - Dst: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:802,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/gist/gistproc.c:809,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:816,1
    - Dst: PLACE_LEFT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:823,1
    - Dst: PLACE_RIGHT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:825,1
    - Dst: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:829,1
    - Dst: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:829,1
    - Dst: PLACE_LEFT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:830,1
    - Dst: PLACE_RIGHT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:832,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:837,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:838,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:839,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 115
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 495
    functionDepth: 5
    functionLinenumber: 495
    functionLinenumberEnd: 840
    functionName: gist_box_picksplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - ceil
    - float8_lt
    - float8_ge
    - PG_RETURN_POINTER
    - float8_eq
    - qsort
    - memcpy
    - Assert
    - adjustBox
    - float8_gt
    - PointerGetDatum
    - g_box_consider_split
    - PG_GETARG_POINTER
    - palloc0_object
    - memset
    - PLACE_LEFT
    - float8_le
    - OffsetNumberNext
    - PLACE_RIGHT
    - box_penalty
    - DatumGetBoxP
    - fabs
    - fallbackSplit
    - palloc
    - float8_mi
    linkageType: ''
    returnType: Datum
    signature: Datum gist_box_picksplit(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - box
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 721
    functionName: PLACE_LEFT
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PLACE_LEFT(box, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - box
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 730
    functionName: PLACE_RIGHT
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PLACE_RIGHT(box, off)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:855,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:856,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:857,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:860,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:861,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:862,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:863,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:866,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 852
    functionDepth: 2
    functionLinenumber: 852
    functionLinenumberEnd: 867
    functionName: gist_box_same
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - PG_GETARG_BOX_P
    - float8_eq
    linkageType: ''
    returnType: Datum
    signature: Datum gist_box_same(PG_FUNCTION_ARGS)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:880,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:880,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:881,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:882,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:885,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:885,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:886,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:887,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:890,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:890,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:891,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:892,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:895,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:895,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:896,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:897,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:900,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:900,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:901,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:902,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:905,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:905,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:906,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:907,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:910,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:910,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:911,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:912,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:915,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:915,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:916,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:917,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:920,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:920,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:921,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:922,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:925,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:925,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:926,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:927,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:930,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:930,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:931,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:932,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:935,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:935,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:936,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:937,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:940,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 3
    argNames:
    - key
    - query
    - strategy
    argTypes:
    - BOX*
    - BOX*
    - StrategyNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 872
    functionDepth: 1
    functionLinenumber: 872
    functionLinenumberEnd: 945
    functionName: gist_box_leaf_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached:
    - elog
    - DirectFunctionCall2
    - PointerGetDatum
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool gist_box_leaf_consistent(BOX *key, BOX *query, StrategyNumber
      strategy)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:965,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:965,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:966,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:967,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:970,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:970,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:971,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:972,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:975,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:975,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:976,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:977,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:980,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:980,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:981,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:982,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:985,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:985,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:986,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:987,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:991,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:991,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:992,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:993,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:996,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:996,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:997,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:998,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1001,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1001,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1002,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1003,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1006,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1006,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1007,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1008,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1011,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1011,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1012,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1013,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1016,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1016,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1017,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1018,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1021,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 3
    argNames:
    - key
    - query
    - strategy
    argTypes:
    - BOX*
    - BOX*
    - StrategyNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 1026
    functionName: rtree_internal_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached:
    - elog
    - DirectFunctionCall2
    - PointerGetDatum
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool rtree_internal_consistent(BOX *key, BOX *query, StrategyNumber
      strategy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1038,1
    - Dst: DatumGetPolygonP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1043,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1046,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1047,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1049,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1050,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1050,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1056,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1035
    functionDepth: 2
    functionLinenumber: 1035
    functionLinenumberEnd: 1057
    functionName: gist_poly_compress
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - memcpy
    - gistentryinit
    - PointerGetDatum
    - palloc_object
    - DatumGetPolygonP
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_poly_compress(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1065,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1066,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1067,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1069,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1071,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1077,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1078,1
    - Dst: rtree_internal_consistent
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1085,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1085,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1089,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1091,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1062
    functionDepth: 2
    functionLinenumber: 1062
    functionLinenumberEnd: 1092
    functionName: gist_poly_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - rtree_internal_consistent
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - DatumGetBoxP
    - PG_GETARG_UINT16
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_poly_consistent(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1104,1
    - Dst: DatumGetCircleP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1109,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1112,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1113,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1114,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1115,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1116,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1118,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1119,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1119,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1101
    functionDepth: 3
    functionLinenumber: 1101
    functionLinenumberEnd: 1126
    functionName: gist_circle_compress
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - DatumGetCircleP
    - gistentryinit
    - float8_pl
    - PointerGetDatum
    - palloc_object
    - float8_mi
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_circle_compress(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1134,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1135,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1136,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1138,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1140,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1147,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1148,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1155,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1156,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1157,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1158,1
    - Dst: rtree_internal_consistent
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1160,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1160,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1131
    functionDepth: 3
    functionLinenumber: 1131
    functionLinenumberEnd: 1164
    functionName: gist_circle_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - rtree_internal_consistent
    - float8_pl
    - DatumGetBoxP
    - PG_GETARG_CIRCLE_P
    - PG_GETARG_UINT16
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - float8_mi
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_circle_consistent(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1173,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1177,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1178,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1179,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1183,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1183,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1186,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1170
    functionDepth: 2
    functionLinenumber: 1170
    functionLinenumberEnd: 1190
    functionName: gist_point_compress
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - gistentryinit
    - BoxPGetDatum
    - DatumGetPointP
    - palloc_object
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_point_compress(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1201,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1202,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1206,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1208,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1211,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1211,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1198
    functionDepth: 2
    functionLinenumber: 1198
    functionLinenumberEnd: 1216
    functionName: gist_point_fetch
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - gistentryinit
    - DatumGetBoxP
    - PointerGetDatum
    - palloc_object
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_point_fetch(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p1
    - ','
    - p2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1219
    functionDepth: 0
    functionLinenumber: 1219
    functionLinenumberEnd: 1222
    functionName: point_point_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: point_point_distance(p1,p2)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1231,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1242,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1244,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1246,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1253,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1255,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1257,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1259,1
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1267,1
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1269,1
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1275,1
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1281,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 3
    argNames:
    - isLeaf
    - box
    - point
    argTypes:
    - bool
    - BOX*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1223
    functionDepth: 3
    functionLinenumber: 1223
    functionLinenumberEnd: 1287
    functionName: computeDistance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - Assert
    - elog
    - float8_mi
    - point_point_distance
    linkageType: ''
    returnType: float8
    signature: float8 computeDistance(bool isLeaf, BOX *box, Point *point)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1298,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1301,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1304,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1307,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1313,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1314,1
    - Dst: FPle
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1318,1
    - Dst: FPge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1319,1
    - Dst: FPle
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1320,1
    - Dst: FPge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1321,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1325,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - strategy
    - isLeaf
    - key
    - query
    argTypes:
    - StrategyNumber
    - bool
    - BOX*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1289
    functionDepth: 1
    functionLinenumber: 1289
    functionLinenumberEnd: 1331
    functionName: gist_point_consistent_internal
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - elog
    - FPle
    - FPlt
    - FPge
    - FPgt
    - FPeq
    linkageType: ''
    returnType: bool
    signature: "bool gist_point_consistent_internal(StrategyNumber strategy,\n\t\t\t\t\t\t\t
      \  bool isLeaf, BOX *key, Point *query)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1342,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1343,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1344,1
    - Dst: gist_point_consistent_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1361,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1362,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1363,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1364,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1384,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1385,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1396,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1398,1
    - Dst: DirectFunctionCall5
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1398,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1399,1
    - Dst: PolygonPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1400,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1401,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1402,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1404,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1410,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1412,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1414,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1414,1
    - Dst: PolygonPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1415,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1416,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1423,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1425,1
    - Dst: DirectFunctionCall5
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1425,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1426,1
    - Dst: CirclePGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1427,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1428,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1429,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1431,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1439,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1441,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1441,1
    - Dst: CirclePGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1442,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1443,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1449,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1454,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1339
    functionDepth: 2
    functionLinenumber: 1339
    functionLinenumberEnd: 1455
    functionName: gist_point_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - CirclePGetDatum
    - GIST_LEAF
    - PG_RETURN_BOOL
    - DirectFunctionCall2
    - DatumGetBool
    - elog
    - Assert
    - PG_GETARG_UINT16
    - PointerGetDatum
    - PG_GETARG_POINTER
    - PolygonPGetDatum
    - DirectFunctionCall5
    - gist_point_consistent_internal
    - PG_GETARG_CIRCLE_P
    - PG_GETARG_POINT_P
    - Int16GetDatum
    - PG_GETARG_POLYGON_P
    - PointPGetDatum
    - DatumGetBoxP
    - PG_GETARG_BOX_P
    linkageType: ''
    returnType: Datum
    signature: Datum gist_point_consistent(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1460,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1461,1
    - Dst: computeDistance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1468,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1468,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1469,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1470,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1473,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1478,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1457
    functionDepth: 4
    functionLinenumber: 1457
    functionLinenumberEnd: 1479
    functionName: gist_point_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - elog
    - DatumGetBoxP
    - computeDistance
    - PG_GETARG_UINT16
    - GIST_LEAF
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_point_distance(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: computeDistance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1490,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1491,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1492,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1495,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - entry
    - query
    - strategy
    argTypes:
    - GISTENTRY*
    - Datum
    - StrategyNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1481
    functionDepth: 4
    functionLinenumber: 1481
    functionLinenumberEnd: 1500
    functionName: gist_bbox_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - elog
    - computeDistance
    - DatumGetBoxP
    - DatumGetPointP
    linkageType: ''
    returnType: float8
    signature: float8 gist_bbox_distance(GISTENTRY *entry, Datum query, StrategyNumber
      strategy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1505,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1506,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1507,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1509,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1510,1
    - Dst: gist_bbox_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1514,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1502
    functionDepth: 5
    functionLinenumber: 1502
    functionLinenumberEnd: 1517
    functionName: gist_box_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_UINT16
    - PG_GETARG_OID
    - gist_bbox_distance
    - PG_RETURN_FLOAT8
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_box_distance(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1532,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1533,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1534,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1536,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1538,1
    - Dst: gist_bbox_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1541,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1529
    functionDepth: 5
    functionLinenumber: 1529
    functionLinenumberEnd: 1545
    functionName: gist_circle_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_UINT16
    - PG_GETARG_OID
    - gist_bbox_distance
    - PG_RETURN_FLOAT8
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_circle_distance(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1550,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1551,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1552,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1554,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1556,1
    - Dst: gist_bbox_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1559,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1547
    functionDepth: 5
    functionLinenumber: 1547
    functionLinenumberEnd: 1563
    functionName: gist_poly_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_UINT16
    - PG_GETARG_OID
    - gist_bbox_distance
    - PG_RETURN_FLOAT8
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gist_poly_distance(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ieee_float32_to_uint32
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1583,1
    - Dst: ieee_float32_to_uint32
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1584,1
    - Dst: part_bits32_by2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1587,1
    - Dst: part_bits32_by2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1580
    functionDepth: 1
    functionLinenumber: 1580
    functionLinenumberEnd: 1588
    functionName: point_zorder_internal
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - ieee_float32_to_uint32
    - part_bits32_by2
    linkageType: ''
    returnType: uint64
    signature: uint64 point_zorder_internal(float4 x, float4 y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1596,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1597,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1598,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1599,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1591
    functionDepth: 1
    functionLinenumber: 1591
    functionLinenumberEnd: 1603
    functionName: part_bits32_by2
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 part_bits32_by2(uint32 x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1651,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1670,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1608
    functionDepth: 1
    functionLinenumber: 1608
    functionLinenumberEnd: 1681
    functionName: ieee_float32_to_uint32
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached:
    - Assert
    - isnan
    linkageType: ''
    returnType: uint32
    signature: uint32 ieee_float32_to_uint32(float f)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1689,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1690,1
    - Dst: point_zorder_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1702,1
    - Dst: point_zorder_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1703,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - a
    - b
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1686
    functionDepth: 2
    functionLinenumber: 1686
    functionLinenumberEnd: 1710
    functionName: gist_bbox_zorder_cmp
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - point_zorder_internal
    - DatumGetBoxP
    linkageType: ''
    returnType: int
    signature: int gist_bbox_zorder_cmp(Datum a, Datum b, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1722,1
    - Dst: point_zorder_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1725,1
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - original
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1719
    functionDepth: 2
    functionLinenumber: 1719
    functionLinenumberEnd: 1728
    functionName: gist_bbox_zorder_abbrev_convert
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - point_zorder_internal
    - UInt64GetDatum
    - DatumGetBoxP
    linkageType: ''
    returnType: Datum
    signature: Datum gist_bbox_zorder_abbrev_convert(Datum original, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - memtupcount
    - ssup
    argTypes:
    - int
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1737
    functionDepth: 0
    functionLinenumber: 1737
    functionLinenumberEnd: 1741
    functionName: gist_bbox_zorder_abbrev_abort
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool gist_bbox_zorder_abbrev_abort(int memtupcount, SortSupport ssup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1749,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1763
      start: 1746
    functionDepth: 1
    functionLinenumber: 1746
    functionLinenumberEnd: 1763
    functionName: gist_point_sortsupport
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum gist_point_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:51,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:54,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:56,1
    - Dst: GistClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:57,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:59,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:60,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:62,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - record
    - block_id
    argTypes:
    - XLogReaderState*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 39
    functionDepth: 4
    functionLinenumber: 39
    functionLinenumberEnd: 64
    functionName: gistRedoClearFollowRight
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - BufferGetPage
    - GistPageSetNSN
    - GistClearFollowRight
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void gistRedoClearFollowRight(XLogReaderState *record, uint8 block_id)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:73,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:77,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:84,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:86,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:100,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:101,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:105,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:116,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:117,1
    - Dst: GistMarkTuplesDeleted
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:118,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:124,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:125,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:125,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:130,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:135,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:144,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:146,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:147,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:157,1
    - Dst: gistRedoClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:158,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:160,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:161,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 162
    functionName: gistRedoPageUpdateRecord
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageIndexMultiDelete
    - gistRedoClearFollowRight
    - PageIsEmpty
    - XLogRecHasBlockRef
    - PageIndexTupleOverwrite
    - XLogRecGetBlockData
    - elog
    - Assert
    - PageGetMaxOffsetNumber
    - GistMarkTuplesDeleted
    - UnlockReleaseBuffer
    - PageSetLSN
    - IndexTupleSize
    - PageAddItem
    - BufferIsValid
    - MarkBufferDirty
    - XLogRecGetData
    - GistPageIsLeaf
    - OffsetNumberNext
    linkageType: ''
    returnType: void
    signature: void gistRedoPageUpdateRecord(XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:173,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:193,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:195,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:200,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:202,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:204,1
    - Dst: GistClearPageHasGarbage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:206,1
    - Dst: GistMarkTuplesDeleted
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:207,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:209,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:210,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:213,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 215
    functionName: gistRedoDeleteRecord
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - ResolveRecoveryConflictWithSnapshot
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageIndexMultiDelete
    - PageSetLSN
    - GistMarkTuplesDeleted
    - BufferIsValid
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRecGetBlockTag
    - GistClearPageHasGarbage
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void gistRedoDeleteRecord(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:228,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:231,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:235,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:237,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - begin
    - len
    - n
    argTypes:
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 242
    functionName: decodePageSplitRecord
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - memcpy
    - IndexTupleSize
    - palloc
    linkageType: ''
    returnType: IndexTuple
    signature: 'IndexTuple *

      decodePageSplitRecord(char *begin, int len, int *n)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:248,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:273,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:276,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:280,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:281,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:282,1
    - Dst: decodePageSplitRecord
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:284,1
    - Dst: GISTInitBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:291,1
    - Dst: gistfillbuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:294,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:298,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:299,1
    - Dst: GistClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:300,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:308,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:309,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:312,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:313,1
    - Dst: GistMarkFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:316,1
    - Dst: GistClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:318,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:321,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:322,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:327,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:331,1
    - Dst: gistRedoClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:332,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:335,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 244
    functionDepth: 5
    functionLinenumber: 244
    functionLinenumberEnd: 336
    functionName: gistRedoPageSplitRecord
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogRecGetBlockData
    - GistPageGetOpaque
    - Assert
    - XLogInitBufferForRedo
    - GISTInitBuffer
    - XLogRecHasBlockRef
    - BufferGetPage
    - gistRedoClearFollowRight
    - GistPageSetNSN
    - GistClearFollowRight
    - GistMarkFollowRight
    - PageSetLSN
    - gistfillbuffer
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - XLogRecGetBlockTag
    - decodePageSplitRecord
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void gistRedoPageSplitRecord(XLogReaderState *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:343,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:347,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:349,1
    - Dst: GistPageSetDeleted
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:351,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:353,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:354,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:357,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:359,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:361,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:363,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:364,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:367,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:368,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:369,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:370,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 339
    functionDepth: 4
    functionLinenumber: 339
    functionLinenumberEnd: 371
    functionName: gistRedoPageDelete
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - XLogRecGetData
    - BufferGetPage
    - UnlockReleaseBuffer
    - PageIndexTupleDelete
    - BufferIsValid
    - MarkBufferDirty
    - GistPageSetDeleted
    - PageSetLSN
    linkageType: ''
    returnType: void
    signature: void gistRedoPageDelete(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:376,1
    - Dst: ResolveRecoveryConflictWithSnapshotFullXid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 392
    functionName: gistRedoPageReuse
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - ResolveRecoveryConflictWithSnapshotFullXid
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void gistRedoPageReuse(XLogReaderState *record)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:397,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:406,1
    - Dst: gistRedoPageUpdateRecord
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:410,1
    - Dst: gistRedoDeleteRecord
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:413,1
    - Dst: gistRedoPageReuse
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:416,1
    - Dst: gistRedoPageSplitRecord
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:419,1
    - Dst: gistRedoPageDelete
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:422,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:425,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:428,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:429,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 394
    functionDepth: 6
    functionLinenumber: 394
    functionLinenumberEnd: 430
    functionName: gist_redo
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - gistRedoPageUpdateRecord
    - elog
    - MemoryContextReset
    - gistRedoPageReuse
    - MemoryContextSwitchTo
    - gistRedoPageSplitRecord
    - gistRedoPageDelete
    - gistRedoDeleteRecord
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void gist_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createTempGistContext
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 436
    functionName: gist_xlog_startup
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - createTempGistContext
    linkageType: ''
    returnType: void
    signature: void gist_xlog_startup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 442
    functionName: gist_xlog_cleanup
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void gist_xlog_cleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mask_page_lsn_and_checksum
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:452,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:454,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:455,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:461,1
    - Dst: GistMarkFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:467,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:469,1
    - Dst: mask_lp_flags
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:476,1
    - Dst: GistClearPageHasGarbage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 447
    functionDepth: 2
    functionLinenumber: 447
    functionLinenumberEnd: 484
    functionName: gist_mask
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - mask_page_lsn_and_checksum
    - mask_unused_space
    - mask_lp_flags
    - GistPageSetNSN
    - mask_page_hint_bits
    - GistMarkFollowRight
    - GistClearPageHasGarbage
    - GistPageIsLeaf
    linkageType: ''
    returnType: void
    signature: void gist_mask(char *pagedata, BlockNumber blkno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:510,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:516,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:517,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:526,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:531,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:532,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:533,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 6
    argNames:
    - page_is_leaf
    - dist
    - origrlink
    - orignsn
    - leftchildbuf
    - markfollowright
    argTypes:
    - bool
    - SplitPageLayout*
    - BlockNumber
    - GistNSN
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 489
    functionDepth: 5
    functionLinenumber: 489
    functionLinenumberEnd: 540
    functionName: gistXLogSplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogRegisterBufData
    - XLogInsert
    - XLogBeginInsert
    - XLogRegisterData
    - BufferIsValid
    - XLogRegisterBuffer
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr gistXLogSplit(bool page_is_leaf,\n\t\t\t  SplitPageLayout
      *dist,\n\t\t\t  BlockNumber origrlink, GistNSN orignsn,\n\t\t\t  Buffer leftchildbuf,
      bool markfollowright)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:556,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:557,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:559,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:560,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - buffer
    - xid
    - parentBuffer
    - downlinkOffset
    argTypes:
    - Buffer
    - FullTransactionId
    - Buffer
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 546
    functionDepth: 5
    functionLinenumber: 546
    functionLinenumberEnd: 565
    functionName: gistXLogPageDelete
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogRegisterBuffer
    - XLogBeginInsert
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr gistXLogPageDelete(Buffer buffer, FullTransactionId xid,\n\t\t\t\t
      \  Buffer parentBuffer, OffsetNumber downlinkOffset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:583,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:588,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:589,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - rel
    - heaprel
    - blkno
    - deleteXid
    argTypes:
    - Relation
    - Relation
    - BlockNumber
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 570
    functionDepth: 3
    functionLinenumber: 570
    functionLinenumberEnd: 592
    functionName: gistXLogPageReuse
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogBeginInsert
    - RelationIsAccessibleInLogicalDecoding
    linkageType: ''
    returnType: void
    signature: "void gistXLogPageReuse(Relation rel, Relation heaprel,\n\t\t\t\t  BlockNumber
      blkno, FullTransactionId deleteXid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:618,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:619,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:621,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:622,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:626,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:626,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:632,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:633,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - buffer
    - todelete
    - ntodelete
    - itup
    - ituplen
    - leftchildbuf
    argTypes:
    - Buffer
    - OffsetNumber*
    - int
    - IndexTuple*
    - int
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 605
    functionDepth: 5
    functionLinenumber: 605
    functionLinenumberEnd: 638
    functionName: gistXLogUpdate
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogRegisterBufData
    - XLogInsert
    - XLogBeginInsert
    - XLogRegisterData
    - BufferIsValid
    - XLogRegisterBuffer
    - IndexTupleSize
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr gistXLogUpdate(Buffer buffer,\n\t\t\t   OffsetNumber *todelete,
      int ntodelete,\n\t\t\t   IndexTuple *itup, int ituplen,\n\t\t\t   Buffer leftchildbuf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:653,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:657,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:658,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:665,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:667,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - buffer
    - todelete
    - ntodelete
    - snapshotConflictHorizon
    - heaprel
    argTypes:
    - Buffer
    - OffsetNumber*
    - int
    - TransactionId
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 646
    functionDepth: 5
    functionLinenumber: 646
    functionLinenumberEnd: 672
    functionName: gistXLogDelete
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - XLogBeginInsert
    - RelationIsAccessibleInLogicalDecoding
    - XLogRegisterData
    - XLogRegisterBuffer
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr gistXLogDelete(Buffer buffer, OffsetNumber *todelete, int
      ntodelete,\n\t\t\t   TransactionId snapshotConflictHorizon, Relation heaprel)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:49,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:50,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/gist/gistget.c:50,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:51,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:53,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistget.c:54,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:57,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gistget.c:58,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:59,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/gist/gistget.c:66,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:69,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:69,1
    - Dst: BufferBeginSetHintBits
      Src: /src/postgres/src/backend/access/gist/gistget.c:84,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistget.c:89,1
    - Dst: ItemIdMarkDead
      Src: /src/postgres/src/backend/access/gist/gistget.c:90,1
    - Dst: GistMarkPageHasGarbage
      Src: /src/postgres/src/backend/access/gist/gistget.c:96,1
    - Dst: BufferFinishSetHintBits
      Src: /src/postgres/src/backend/access/gist/gistget.c:97,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:101,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 38
    functionDepth: 4
    functionLinenumber: 38
    functionLinenumberEnd: 108
    functionName: gistkillitems
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - BufferGetLSNAtomic
    - Assert
    - BufferFinishSetHintBits
    - LockBuffer
    - BufferGetPage
    - PageGetItemId
    - UnlockReleaseBuffer
    - ReadBuffer
    - BufferIsValid
    - BufferBeginSetHintBits
    - ItemIdMarkDead
    - GistMarkPageHasGarbage
    - gistcheckpage
    - GistPageIsLeaf
    linkageType: ''
    returnType: void
    signature: void gistkillitems(IndexScanDesc scan)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: GistTupleIsInvalid
      Src: /src/postgres/src/backend/access/gist/gistget.c:156,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:160,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistget.c:161,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/gist/gistget.c:164,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistget.c:176,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:196,1
    - Dst: gistdentryinit
      Src: /src/postgres/src/backend/access/gist/gistget.c:211,1
    - Dst: FunctionCall5Coll
      Src: /src/postgres/src/backend/access/gist/gistget.c:230,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:232,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:234,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:235,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:236,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistget.c:238,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistget.c:256,1
    - Dst: gistdentryinit
      Src: /src/postgres/src/backend/access/gist/gistget.c:273,1
    - Dst: FunctionCall5Coll
      Src: /src/postgres/src/backend/access/gist/gistget.c:294,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:296,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:298,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:299,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:300,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/access/gist/gistget.c:302,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 6
    argNames:
    - scan
    - tuple
    - page
    - offset
    - recheck_p
    - recheck_distances_p
    argTypes:
    - IndexScanDesc
    - IndexTuple
    - Page
    - OffsetNumber
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 312
    functionName: gistindex_keytest
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - elog
    - UInt16GetDatum
    - FunctionCall5Coll
    - Assert
    - index_getattr
    - DatumGetBool
    - PointerGetDatum
    - DatumGetFloat8
    - ObjectIdGetDatum
    - GistTupleIsInvalid
    - gistdentryinit
    - GistPageIsLeaf
    - get_float8_infinity
    linkageType: ''
    returnType: bool
    signature: "bool gistindex_keytest(IndexScanDesc scan,\n\t\t\t\t  IndexTuple tuple,\n\t\t\t\t
      \ Page page,\n\t\t\t\t  OffsetNumber offset,\n\t\t\t\t  bool *recheck_p,\n\t\t\t\t
      \ bool *recheck_distances_p)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:350,1
    - Dst: GISTSearchItemIsHeap
      Src: /src/postgres/src/backend/access/gist/gistget.c:350,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:352,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:353,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:354,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistget.c:354,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gistget.c:355,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:356,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistget.c:357,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/gist/gistget.c:365,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gistget.c:366,1
    - Dst: GistPageGetNSN
      Src: /src/postgres/src/backend/access/gist/gistget.c:367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:374,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:376,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistget.c:379,1
    - Dst: SizeOfGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:379,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistget.c:384,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/access/gist/gistget.c:387,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:389,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gistget.c:400,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:402,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistget.c:409,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/gist/gistget.c:418,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistget.c:423,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistget.c:424,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistget.c:426,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/gist/gistget.c:436,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:439,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:445,1
    - Dst: gistindex_keytest
      Src: /src/postgres/src/backend/access/gist/gistget.c:447,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:450,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistget.c:451,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:457,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/gist/gistget.c:463,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:466,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:481,1
    - Dst: gistFetchTuple
      Src: /src/postgres/src/backend/access/gist/gistget.c:483,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:484,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:498,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistget.c:501,1
    - Dst: SizeOfGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:501,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:503,1
    - Dst: gistFetchTuple
      Src: /src/postgres/src/backend/access/gist/gistget.c:515,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistget.c:520,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/gist/gistget.c:527,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistget.c:531,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/access/gist/gistget.c:534,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:536,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:540,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 73
    argCount: 5
    argNames:
    - scan
    - pageItem
    - myDistances
    - tbm
    - ntids
    argTypes:
    - IndexScanDesc
    - GISTSearchItem*
    - IndexOrderByDistance*
    - TIDBitmap*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 336
    functionDepth: 4
    functionLinenumber: 336
    functionLinenumberEnd: 541
    functionName: gistScanPage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - BufferGetLSNAtomic
    - GistFollowRight
    - LockBuffer
    - BufferGetPage
    - SizeOfGISTSearchItem
    - PageGetItem
    - GISTSearchItemIsHeap
    - gistcheckpage
    - XLogRecPtrIsValid
    - MemoryContextReset
    - memcpy
    - gistindex_keytest
    - Assert
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - gistFetchTuple
    - pairingheap_add
    - GistPageGetOpaque
    - ItemIdIsDead
    - PageGetItemId
    - GistPageIsDeleted
    - tbm_add_tuples
    - GistPageIsLeaf
    - OffsetNumberNext
    - GistPageGetNSN
    - PredicateLockPage
    - MemoryContextSwitchTo
    - palloc
    linkageType: ''
    returnType: void
    signature: "void gistScanPage(IndexScanDesc scan, GISTSearchItem *pageItem,\n\t\t\t
      IndexOrderByDistance *myDistances, TIDBitmap *tbm, int64 *ntids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/access/gist/gistget.c:553,1
    - Dst: pairingheap_remove_first
      Src: /src/postgres/src/backend/access/gist/gistget.c:555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - so
    argTypes:
    - GISTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 565
    functionName: getNextGISTSearchItem
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - pairingheap_remove_first
    - pairingheap_is_empty
    linkageType: ''
    returnType: GISTSearchItem
    signature: 'GISTSearchItem *

      getNextGISTSearchItem(GISTScanOpaque so)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistget.c:579,1
    - Dst: getNextGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:585,1
    - Dst: GISTSearchItemIsHeap
      Src: /src/postgres/src/backend/access/gist/gistget.c:590,1
    - Dst: index_store_float8_orderby_distances
      Src: /src/postgres/src/backend/access/gist/gistget.c:596,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gist/gistget.c:608,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:610,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistget.c:613,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 570
    functionDepth: 5
    functionLinenumber: 570
    functionLinenumberEnd: 617
    functionName: getNextNearest
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - index_store_float8_orderby_distances
    - pfree
    - CHECK_FOR_INTERRUPTS
    - getNextGISTSearchItem
    - gistScanPage
    - GISTSearchItemIsHeap
    linkageType: ''
    returnType: bool
    signature: bool getNextNearest(IndexScanDesc scan)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistget.c:628,1
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/gist/gistget.c:638,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistget.c:646,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gistget.c:649,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:650,1
    - Dst: getNextNearest
      Src: /src/postgres/src/backend/access/gist/gistget.c:656,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:671,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistget.c:674,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:677,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:708,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistget.c:711,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:714,1
    - Dst: gistkillitems
      Src: /src/postgres/src/backend/access/gist/gistget.c:726,1
    - Dst: getNextGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:728,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gist/gistget.c:733,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:741,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistget.c:743,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 58
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 622
    functionDepth: 6
    functionLinenumber: 622
    functionLinenumberEnd: 747
    functionName: gistgettuple
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - elog
    - MemoryContextReset
    - pfree
    - gistkillitems
    - CHECK_FOR_INTERRUPTS
    - MemoryContextSwitchTo
    - pgstat_count_index_scan
    - memset
    - getNextGISTSearchItem
    - gistScanPage
    - getNextNearest
    - palloc
    linkageType: ''
    returnType: bool
    signature: bool gistgettuple(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/gist/gistget.c:762,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistget.c:770,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gistget.c:773,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:774,1
    - Dst: getNextGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:782,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gist/gistget.c:787,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:789,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistget.c:791,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 752
    functionDepth: 5
    functionLinenumber: 752
    functionLinenumberEnd: 795
    functionName: gistgetbitmap
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - pfree
    - CHECK_FOR_INTERRUPTS
    - pgstat_count_index_scan
    - memset
    - getNextGISTSearchItem
    - gistScanPage
    linkageType: ''
    returnType: int64
    signature: int64 gistgetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistget.c:807,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistget.c:808,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gist/gistget.c:808,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistget.c:809,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gist/gistget.c:809,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - index
    - attno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 804
    functionDepth: 2
    functionLinenumber: 804
    functionLinenumberEnd: 813
    functionName: gistcanreturn
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - index_getprocid
    linkageType: ''
    returnType: bool
    signature: bool gistcanreturn(Relation index, int attno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: ROTATEDIST
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTATEDIST(d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gist.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 118
    functionName: gisthandler
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gisthandler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gist/gist.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 134
    functionName: createTempGistContext
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 2
    functionsReached:
    - AllocSetContextCreate
    linkageType: ''
    returnType: MemoryContext
    signature: MemoryContext createTempGistContext(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/gist/gist.c:145,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/gist/gist.c:145,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:149,1
    - Dst: GISTInitBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:150,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gist.c:151,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/gist/gist.c:152,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:153,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 139
    functionDepth: 5
    functionLinenumber: 139
    functionLinenumberEnd: 157
    functionName: gistbuildempty
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 0
    functionsReached:
    - ExtendBufferedRel
    - START_CRIT_SECTION
    - BMR_REL
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - log_newpage_buffer
    - END_CRIT_SECTION
    - GISTInitBuffer
    linkageType: ''
    returnType: void
    signature: void gistbuildempty(Relation index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:179,1
    - Dst: initGISTstate
      Src: /src/postgres/src/backend/access/gist/gist.c:180,1
    - Dst: createTempGistContext
      Src: /src/postgres/src/backend/access/gist/gist.c:181,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:183,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:186,1
    - Dst: gistFormTuple
      Src: /src/postgres/src/backend/access/gist/gist.c:188,1
    - Dst: gistdoinsert
      Src: /src/postgres/src/backend/access/gist/gist.c:191,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:194,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gist.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 8
    argNames:
    - r
    - values
    - isnull
    - ht_ctid
    - heapRel
    - checkUnique
    - indexUnchanged
    - indexInfo
    argTypes:
    - Relation
    - Datum*
    - bool*
    - ItemPointer
    - Relation
    - IndexUniqueCheck
    - bool
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 198
    functionName: gistinsert
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 0
    functionsReached:
    - gistdoinsert
    - MemoryContextReset
    - gistFormTuple
    - createTempGistContext
    - MemoryContextSwitchTo
    - initGISTstate
    linkageType: ''
    returnType: bool
    signature: "bool gistinsert(Relation r, Datum *values, bool *isnull,\n\t\t   ItemPointer
      ht_ctid, Relation heapRel,\n\t\t   IndexUniqueCheck checkUnique,\n\t\t   bool
      indexUnchanged,\n\t\t   IndexInfo *indexInfo)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:241,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:242,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gist.c:243,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:256,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:260,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gist.c:260,1
    - Dst: gistnospace
      Src: /src/postgres/src/backend/access/gist/gist.c:274,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gist.c:280,1
    - Dst: GistPageHasGarbage
      Src: /src/postgres/src/backend/access/gist/gist.c:280,1
    - Dst: gistprunepage
      Src: /src/postgres/src/backend/access/gist/gist.c:282,1
    - Dst: gistnospace
      Src: /src/postgres/src/backend/access/gist/gist.c:283,1
    - Dst: gistextractpage
      Src: /src/postgres/src/backend/access/gist/gist.c:305,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:306,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/gist/gist.c:313,1
    - Dst: gistjoinvector
      Src: /src/postgres/src/backend/access/gist/gist.c:315,1
    - Dst: gistSplit
      Src: /src/postgres/src/backend/access/gist/gist.c:316,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:328,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:344,1
    - Dst: GistPageGetNSN
      Src: /src/postgres/src/backend/access/gist/gist.c:345,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:348,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/gist/gist.c:349,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:349,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:352,1
    - Dst: gistNewBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:359,1
    - Dst: GISTInitBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:360,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:361,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:362,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/gist/gist.c:363,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:364,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:365,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:374,1
    - Dst: GistTupleSetValid
      Src: /src/postgres/src/backend/access/gist/gist.c:375,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/gist/gist.c:390,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:390,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:391,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gist.c:396,1
    - Dst: gistfillitupvec
      Src: /src/postgres/src/backend/access/gist/gist.c:402,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gist.c:414,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/gist/gist.c:418,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gist/gist.c:434,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gist.c:434,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:435,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gist.c:435,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/gist/gist.c:441,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gist.c:444,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:449,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:452,1
    - Dst: GistMarkFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:463,1
    - Dst: GistClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:465,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gist.c:472,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gist.c:480,1
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/gist/gist.c:481,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:483,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gist.c:490,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:491,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gist.c:492,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/gist/gist.c:498,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:498,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:499,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gist.c:515,1
    - Dst: gistXLogSplit
      Src: /src/postgres/src/backend/access/gist/gist.c:516,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:520,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:524,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:536,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:544,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:550,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/gist/gist.c:555,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gist.c:555,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:556,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gist.c:557,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/gist/gist.c:562,1
    - Dst: gistfillbuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:563,1
    - Dst: gistfillbuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:569,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gist.c:572,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:574,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gist.c:575,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gist.c:581,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:586,1
    - Dst: gistXLogUpdate
      Src: /src/postgres/src/backend/access/gist/gist.c:592,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:597,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:599,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:618,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:620,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gist.c:622,1
    - Dst: GistClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:623,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:625,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:628,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 145
    argCount: 13
    argNames:
    - rel
    - freespace
    - giststate
    - buffer
    - itup
    - ntup
    - oldoffnum
    - newblkno
    - leftchildbuf
    - splitinfo
    - markfollowright
    - heapRel
    - is_build
    argTypes:
    - Relation
    - Size
    - GISTSTATE*
    - Buffer
    - IndexTuple*
    - int
    - OffsetNumber
    - BlockNumber*
    - Buffer
    - List**
    - bool
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 230
    functionDepth: 6
    functionLinenumber: 230
    functionLinenumberEnd: 631
    functionName: gistplacetopage
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 1
    functionsReached:
    - GistFollowRight
    - gistXLogUpdate
    - palloc_array
    - BufferGetPage
    - GistClearFollowRight
    - gistNewBuffer
    - RelationGetRelationName
    - PageIndexTupleOverwrite
    - elog
    - gistSplit
    - gistXLogSplit
    - Assert
    - BufferGetBlockNumber
    - gistprunepage
    - ItemPointerEquals
    - PageIndexTupleDelete
    - GistPageSetNSN
    - XLogGetFakeLSN
    - palloc_object
    - gistnospace
    - UnlockReleaseBuffer
    - gistfillbuffer
    - GISTInitBuffer
    - IndexTupleSize
    - XLogEnsureRecordSpace
    - PageSetLSN
    - GistPageGetOpaque
    - OffsetNumberIsValid
    - GistTupleSetValid
    - lappend
    - memmove
    - PageGetTempPageCopySpecial
    - PageAddItem
    - GistPageIsDeleted
    - GistMarkFollowRight
    - BufferIsValid
    - GistPageHasGarbage
    - ItemPointerSetBlockNumber
    - MarkBufferDirty
    - gistfillitupvec
    - GistPageIsLeaf
    - GistPageGetNSN
    - PredicateLockPageSplit
    - START_CRIT_SECTION
    - PageRestoreTempPage
    - RelationNeedsWAL
    - gistjoinvector
    - gistextractpage
    - END_CRIT_SECTION
    linkageType: ''
    returnType: bool
    signature: "bool gistplacetopage(Relation rel, Size freespace, GISTSTATE *giststate,\n\t\t\t\tBuffer
      buffer,\n\t\t\t\tIndexTuple *itup, int ntup, OffsetNumber oldoffnum,\n\t\t\t\tBlockNumber
      *newblkno,\n\t\t\t\tBuffer leftchildbuf,\n\t\t\t\tList **splitinfo,\n\t\t\t\tbool
      markfollowright,\n\t\t\t\tRelation heapRel,\n\t\t\t\tbool is_build)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gist.c:649,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:680,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:682,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:686,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:687,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:695,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gist.c:696,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:699,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:701,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/gist/gist.c:701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:702,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gist.c:702,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:702,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:709,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:713,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:714,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:717,1
    - Dst: gistfixsplit
      Src: /src/postgres/src/backend/access/gist/gist.c:720,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:722,1
    - Dst: GistPageGetNSN
      Src: /src/postgres/src/backend/access/gist/gist.c:729,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gist.c:730,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:738,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gist.c:744,1
    - Dst: gistchoose
      Src: /src/postgres/src/backend/access/gist/gist.c:755,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gist.c:756,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gist.c:757,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:758,1
    - Dst: GistTupleIsInvalid
      Src: /src/postgres/src/backend/access/gist/gist.c:763,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gist.c:764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gist.c:765,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gist.c:766,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/gist/gist.c:767,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/gist/gist.c:768,1
    - Dst: gistgetadjusted
      Src: /src/postgres/src/backend/access/gist/gist.c:774,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:783,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:784,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:786,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:788,1
    - Dst: gistinserttuple
      Src: /src/postgres/src/backend/access/gist/gist.c:805,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:816,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:823,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gist.c:827,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:847,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:848,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:850,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:851,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gist.c:859,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:865,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:875,1
    - Dst: GistPageGetNSN
      Src: /src/postgres/src/backend/access/gist/gist.c:876,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gist.c:877,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:883,1
    - Dst: gistinserttuple
      Src: /src/postgres/src/backend/access/gist/gist.c:892,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:894,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:898,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 111
    argCount: 6
    argNames:
    - r
    - itup
    - freespace
    - giststate
    - heapRel
    - is_build
    argTypes:
    - Relation
    - IndexTuple
    - Size
    - GISTSTATE*
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 638
    functionDepth: 4
    functionLinenumber: 638
    functionLinenumberEnd: 902
    functionName: gistdoinsert
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 2
    functionsReached:
    - BufferGetLSNAtomic
    - GistFollowRight
    - LockBuffer
    - BufferGetPage
    - PageGetItem
    - errhint
    - gistinserttuple
    - RelationGetRelationName
    - gistcheckpage
    - XLogRecPtrIsValid
    - ReleaseBuffer
    - Assert
    - PageGetLSN
    - gistgetadjusted
    - ReadBuffer
    - errmsg
    - gistchoose
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - palloc0_object
    - gistfixsplit
    - ereport
    - PageGetItemId
    - GistPageIsDeleted
    - memset
    - GistTupleIsInvalid
    - GistPageIsLeaf
    - GistPageGetNSN
    - RelationNeedsWAL
    - errdetail
    linkageType: ''
    returnType: void
    signature: "void gistdoinsert(Relation r, IndexTuple itup, Size freespace,\n\t\t\t
      GISTSTATE *giststate, Relation heapRel, bool is_build)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gist.c:927,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/access/gist/gist.c:931,1
    - Dst: linitial
      Src: /src/postgres/src/backend/access/gist/gist.c:935,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/access/gist/gist.c:936,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:938,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:939,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gist.c:940,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:941,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gist.c:943,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:949,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:954,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gist.c:954,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/gist/gist.c:956,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:962,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:963,1
    - Dst: GistPageGetNSN
      Src: /src/postgres/src/backend/access/gist/gist.c:965,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:966,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gist.c:979,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:980,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/gist/gist.c:984,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:987,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gist.c:989,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gist.c:991,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gist.c:992,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:993,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:997,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gist.c:1004,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/gist/gist.c:1009,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1013,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:1016,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gist.c:1017,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 3
    argNames:
    - r
    - child
    - downlinkoffnum
    argTypes:
    - Relation
    - BlockNumber
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 913
    functionDepth: 4
    functionLinenumber: 913
    functionLinenumberEnd: 1019
    functionName: gistFindPath
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 0
    functionsReached:
    - BufferGetLSNAtomic
    - GistFollowRight
    - LockBuffer
    - BufferGetPage
    - PageGetItem
    - RelationGetRelationName
    - gistcheckpage
    - elog
    - Assert
    - linitial
    - PageGetMaxOffsetNumber
    - ReadBuffer
    - list_delete_first
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - palloc0_object
    - GistPageGetOpaque
    - lappend
    - PageGetItemId
    - GistPageIsDeleted
    - list_make1
    - GistPageIsLeaf
    - OffsetNumberNext
    - GistPageGetNSN
    - lcons
    linkageType: ''
    returnType: GISTInsertStack
    signature: 'GISTInsertStack *

      gistFindPath(Relation r, BlockNumber child, OffsetNumber *downlinkoffnum)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gist.c:1035,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:1036,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:1037,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gist.c:1042,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gist.c:1043,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:1044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:1062,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:1062,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:1074,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gist.c:1075,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gist.c:1077,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gist.c:1078,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:1079,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:1087,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1089,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1098,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1099,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gist.c:1100,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:1101,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1112,1
    - Dst: gistFindPath
      Src: /src/postgres/src/backend/access/gist/gist.c:1117,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1123,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:1124,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1132,1
    - Dst: gistFindCorrectParent
      Src: /src/postgres/src/backend/access/gist/gist.c:1133,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 3
    argNames:
    - r
    - child
    - is_build
    argTypes:
    - Relation
    - GISTInsertStack*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1026
    functionDepth: 5
    functionLinenumber: 1026
    functionLinenumberEnd: 1134
    functionName: gistFindCorrectParent
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 1
    functionsReached:
    - OffsetNumberNext
    - GistPageGetOpaque
    - ReleaseBuffer
    - Assert
    - PageGetLSN
    - gistFindCorrectParent
    - LockBuffer
    - PageGetItemId
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - PageGetItem
    - ReadBuffer
    - UnlockReleaseBuffer
    - gistFindPath
    - ItemPointerGetBlockNumber
    - gistcheckpage
    linkageType: ''
    returnType: void
    signature: void gistFindCorrectParent(Relation r, GISTInsertStack *child, bool
      is_build)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:1143,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:1148,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gist.c:1149,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gist.c:1152,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gist.c:1152,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/gist/gist.c:1155,1
    - Dst: gistgetadjusted
      Src: /src/postgres/src/backend/access/gist/gist.c:1160,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1181,1
    - Dst: gistFindCorrectParent
      Src: /src/postgres/src/backend/access/gist/gist.c:1182,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gist.c:1183,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gist.c:1184,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/gist/gist.c:1185,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1186,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:1189,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:1189,1
    - Dst: GistTupleSetValid
      Src: /src/postgres/src/backend/access/gist/gist.c:1190,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - rel
    - buf
    - giststate
    - stack
    - is_build
    argTypes:
    - Relation
    - Buffer
    - GISTSTATE*
    - GISTInsertStack*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1139
    functionDepth: 6
    functionLinenumber: 1139
    functionLinenumberEnd: 1193
    functionName: gistformdownlink
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 0
    functionsReached:
    - OffsetNumberNext
    - GistTupleSetValid
    - gistFindCorrectParent
    - BufferGetBlockNumber
    - LockBuffer
    - PageGetItemId
    - BufferGetPage
    - gistgetadjusted
    - PageGetMaxOffsetNumber
    - PageGetItem
    - ItemPointerSetBlockNumber
    - CopyIndexTuple
    linkageType: ''
    returnType: IndexTuple
    signature: "IndexTuple gistformdownlink(Relation rel, Buffer buf, GISTSTATE *giststate,\n\t\t\t\t
      GISTInsertStack *stack, bool is_build)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gist.c:1207,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gist.c:1208,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gist.c:1209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:1211,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:1211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:1212,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:1212,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gist.c:1222,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:1225,1
    - Dst: gistformdownlink
      Src: /src/postgres/src/backend/access/gist/gist.c:1228,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/gist/gist.c:1233,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:1235,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1238,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:1238,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1239,1
    - Dst: gistfinishsplit
      Src: /src/postgres/src/backend/access/gist/gist.c:1246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - state
    - giststate
    argTypes:
    - GISTInsertState*
    - GISTSTATE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1199
    functionDepth: 7
    functionLinenumber: 1199
    functionLinenumberEnd: 1247
    functionName: gistfixsplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 1
    functionsReached:
    - GistPageGetOpaque
    - OffsetNumberIsValid
    - GistFollowRight
    - Assert
    - lappend
    - ereport
    - LockBuffer
    - BufferGetPage
    - gistfinishsplit
    - ReadBuffer
    - errmsg
    - RelationGetRelationName
    - palloc_object
    - gistformdownlink
    linkageType: ''
    returnType: void
    signature: void gistfixsplit(GISTInsertState *state, GISTSTATE *giststate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gistinserttuples
      Src: /src/postgres/src/backend/access/gist/gist.c:1263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - state
    - stack
    - giststate
    - tuple
    - oldoffnum
    argTypes:
    - GISTInsertState*
    - GISTInsertStack*
    - GISTSTATE*
    - IndexTuple
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1259
    functionDepth: 1
    functionLinenumber: 1259
    functionLinenumberEnd: 1265
    functionName: gistinserttuple
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 1
    functionsReached:
    - gistinserttuples
    linkageType: ''
    returnType: bool
    signature: "bool gistinserttuple(GISTInsertState *state, GISTInsertStack *stack,\n\t\t\t\tGISTSTATE
      *giststate, IndexTuple tuple, OffsetNumber oldoffnum)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/gist/gist.c:1307,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:1307,1
    - Dst: gistplacetopage
      Src: /src/postgres/src/backend/access/gist/gist.c:1310,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:1325,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1326,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:1327,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1328,1
    - Dst: gistfinishsplit
      Src: /src/postgres/src/backend/access/gist/gist.c:1337,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1339,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 10
    argNames:
    - state
    - stack
    - giststate
    - tuples
    - ntup
    - oldoffnum
    - leftchild
    - rightchild
    - unlockbuf
    - unlockleftchild
    argTypes:
    - GISTInsertState*
    - GISTInsertStack*
    - GISTSTATE*
    - IndexTuple*
    - int
    - OffsetNumber
    - Buffer
    - Buffer
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1293
    functionDepth: 7
    functionLinenumber: 1293
    functionLinenumberEnd: 1342
    functionName: gistinserttuples
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 1
    functionsReached:
    - BufferGetBlockNumber
    - LockBuffer
    - gistplacetopage
    - gistfinishsplit
    - BufferIsValid
    - UnlockReleaseBuffer
    - CheckForSerializableConflictIn
    linkageType: ''
    returnType: bool
    signature: "bool gistinserttuples(GISTInsertState *state, GISTInsertStack *stack,\n\t\t\t\t
      GISTSTATE *giststate,\n\t\t\t\t IndexTuple *tuples, int ntup, OffsetNumber oldoffnum,\n\t\t\t\t
      Buffer leftchild, Buffer rightchild,\n\t\t\t\t bool unlockbuf, bool unlockleftchild)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:1362,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/gist/gist.c:1362,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:1371,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/gist/gist.c:1377,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/access/gist/gist.c:1379,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/access/gist/gist.c:1380,1
    - Dst: gistFindCorrectParent
      Src: /src/postgres/src/backend/access/gist/gist.c:1382,1
    - Dst: gistinserttuples
      Src: /src/postgres/src/backend/access/gist/gist.c:1383,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/access/gist/gist.c:1397,1
    - Dst: linitial
      Src: /src/postgres/src/backend/access/gist/gist.c:1398,1
    - Dst: gistFindCorrectParent
      Src: /src/postgres/src/backend/access/gist/gist.c:1407,1
    - Dst: gistinserttuples
      Src: /src/postgres/src/backend/access/gist/gist.c:1408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:1424,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 5
    argNames:
    - state
    - stack
    - giststate
    - splitinfo
    - unlockbuf
    argTypes:
    - GISTInsertState*
    - GISTInsertStack*
    - GISTSTATE*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1353
    functionDepth: 8
    functionLinenumber: 1353
    functionLinenumberEnd: 1442
    functionName: gistfinishsplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 2
    functionsReached:
    - Assert
    - gistFindCorrectParent
    - linitial
    - LockBuffer
    - lsecond
    - list_length
    - list_nth
    - gistinserttuples
    linkageType: ''
    returnType: void
    signature: "void gistfinishsplit(GISTInsertState *state, GISTInsertStack *stack,\n\t\t\t\tGISTSTATE
      *giststate, List *splitinfo, bool unlockbuf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/access/gist/gist.c:1463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:1466,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gist.c:1473,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gist.c:1474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gist.c:1475,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gist.c:1476,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gist.c:1477,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gist.c:1479,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gist.c:1481,1
    - Dst: gistSplitByKey
      Src: /src/postgres/src/backend/access/gist/gist.c:1483,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gist.c:1486,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gist.c:1487,1
    - Dst: gistfitpage
      Src: /src/postgres/src/backend/access/gist/gist.c:1496,1
    - Dst: gistSplit
      Src: /src/postgres/src/backend/access/gist/gist.c:1498,1
    - Dst: ROTATEDIST
      Src: /src/postgres/src/backend/access/gist/gist.c:1502,1
    - Dst: gistfillitupvec
      Src: /src/postgres/src/backend/access/gist/gist.c:1504,1
    - Dst: gistFormTuple
      Src: /src/postgres/src/backend/access/gist/gist.c:1505,1
    - Dst: gistfitpage
      Src: /src/postgres/src/backend/access/gist/gist.c:1508,1
    - Dst: gistSplit
      Src: /src/postgres/src/backend/access/gist/gist.c:1513,1
    - Dst: ROTATEDIST
      Src: /src/postgres/src/backend/access/gist/gist.c:1524,1
    - Dst: gistfillitupvec
      Src: /src/postgres/src/backend/access/gist/gist.c:1526,1
    - Dst: gistFormTuple
      Src: /src/postgres/src/backend/access/gist/gist.c:1527,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 5
    argNames:
    - r
    - page
    - itup
    - len
    - giststate
    argTypes:
    - Relation
    - Page
    - IndexTuple*
    - int
    - GISTSTATE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1449
    functionDepth: 1
    functionLinenumber: 1449
    functionLinenumberEnd: 1531
    functionName: gistSplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 3
    functionsReached:
    - gistSplit
    - errcode
    - Assert
    - gistFormTuple
    - ereport
    - check_stack_depth
    - palloc_array
    - gistfitpage
    - memset
    - errmsg
    - RelationGetRelationName
    - gistSplitByKey
    - gistfillitupvec
    - ROTATEDIST
    - IndexTupleSize
    linkageType: ''
    returnType: SplitPageLayout
    signature: "SplitPageLayout *\ngistSplit(Relation r,\n\t\t  Page page,\n\t\t  IndexTuple
      *itup,\t\t/* contains compressed entry */\n\t\t  int len,\n\t\t  GISTSTATE *giststate)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:1546,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gist/gist.c:1550,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:1553,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gist.c:1556,1
    - Dst: CreateTupleDescTruncatedCopy
      Src: /src/postgres/src/backend/access/gist/gist.c:1572,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gist.c:1573,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gist.c:1575,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gist.c:1577,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gist/gist.c:1578,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gist.c:1580,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gist/gist.c:1581,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:1585,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gist/gist.c:1585,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gist.c:1586,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gist/gist.c:1587,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:1593,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gist/gist.c:1593,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gist.c:1594,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gist/gist.c:1595,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gist.c:1600,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gist/gist.c:1601,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gist.c:1603,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gist/gist.c:1604,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gist.c:1606,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gist/gist.c:1607,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:1611,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gist/gist.c:1611,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gist.c:1612,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gist/gist.c:1613,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:1619,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gist/gist.c:1619,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gist.c:1620,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gist/gist.c:1621,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:1637,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:1658,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1536
    functionDepth: 5
    functionLinenumber: 1536
    functionLinenumberEnd: 1661
    functionName: initGISTstate
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 2
    functionsReached:
    - elog
    - fmgr_info_copy
    - AllocSetContextCreate
    - MemoryContextSwitchTo
    - CreateTupleDescTruncatedCopy
    - index_getprocid
    - palloc_object
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - index_getprocinfo
    linkageType: ''
    returnType: GISTSTATE
    signature: 'GISTSTATE *

      initGISTstate(Relation index)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gist/gist.c:1667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - giststate
    argTypes:
    - GISTSTATE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1663
    functionDepth: 1
    functionLinenumber: 1663
    functionLinenumberEnd: 1668
    functionName: freeGISTstate
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 1
    functionsReached:
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void freeGISTstate(GISTSTATE *giststate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:1682,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gist.c:1682,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:1688,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gist.c:1691,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gist.c:1693,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/gist/gist.c:1695,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/gist/gist.c:1703,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gist.c:1703,1
    - Dst: index_compute_xid_horizon_for_tuples
      Src: /src/postgres/src/backend/access/gist/gist.c:1705,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:1708,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/gist/gist.c:1710,1
    - Dst: GistClearPageHasGarbage
      Src: /src/postgres/src/backend/access/gist/gist.c:1719,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gist.c:1721,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gist.c:1724,1
    - Dst: gistXLogDelete
      Src: /src/postgres/src/backend/access/gist/gist.c:1728,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:1733,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:1736,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:1736,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:1738,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - rel
    - page
    - buffer
    - heapRel
    argTypes:
    - Relation
    - Page
    - Buffer
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1674
    functionDepth: 6
    functionLinenumber: 1674
    functionLinenumberEnd: 1747
    functionName: gistprunepage
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 1
    functionsReached:
    - XLogStandbyInfoActive
    - OffsetNumberNext
    - END_CRIT_SECTION
    - index_compute_xid_horizon_for_tuples
    - Assert
    - ItemIdIsDead
    - START_CRIT_SECTION
    - PageGetItemId
    - PageIndexMultiDelete
    - RelationNeedsWAL
    - PageGetMaxOffsetNumber
    - gistXLogDelete
    - XLogGetFakeLSN
    - PageSetLSN
    - MarkBufferDirty
    - GistClearPageHasGarbage
    - GistPageIsLeaf
    linkageType: ''
    returnType: void
    signature: void gistprunepage(Relation rel, Page page, Buffer buffer, Relation
      heapRel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:49,1
    - Dst: BufFileCreateTemp
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:57,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:63,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:78,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:90,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 3
    argNames:
    - pagesPerBuffer
    - levelStep
    - maxLevel
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 104
    functionName: gistInitBuildBuffers
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - BufFileCreateTemp
    - hash_create
    - palloc_array
    - palloc_object
    linkageType: ''
    returnType: GISTBuildBuffers
    signature: 'GISTBuildBuffers *

      gistInitBuildBuffers(int pagesPerBuffer, int levelStep, int maxLevel)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:118,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:127,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:146,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:166,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - gfbb
    - giststate
    - nodeBlocknum
    - level
    argTypes:
    - GISTBuildBuffers*
    - GISTSTATE*
    - BlockNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 173
    functionName: gistGetNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - repalloc
    - hash_search
    - lcons
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: GISTNodeBuffer
    signature: "GISTNodeBuffer *\ngistGetNodeBuffer(GISTBuildBuffers *gfbb, GISTSTATE
      *giststate,\n\t\t\t\t  BlockNumber nodeBlocknum, int level)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:183,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - gfbb
    argTypes:
    - GISTBuildBuffers*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 190
    functionName: gistAllocateNewPageBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - PAGE_FREE_SPACE
    - MemoryContextAllocZero
    linkageType: ''
    returnType: GISTNodeBufferPage
    signature: 'GISTNodeBufferPage *

      gistAllocateNewPageBuffer(GISTBuildBuffers *gfbb)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - gfbb
    - nodeBuffer
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 213
    functionName: gistAddLoadedBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - repalloc
    linkageType: ''
    returnType: void
    signature: void gistAddLoadedBuffer(GISTBuildBuffers *gfbb, GISTNodeBuffer *nodeBuffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gistAllocateNewPageBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:225,1
    - Dst: ReadTempFileBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:228,1
    - Dst: gistBuffersReleaseBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:232,1
    - Dst: gistAddLoadedBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:235,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - gfbb
    - nodeBuffer
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 238
    functionName: gistLoadNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - ReadTempFileBlock
    - gistAddLoadedBuffer
    - gistBuffersReleaseBlock
    - gistAllocateNewPageBuffer
    linkageType: ''
    returnType: void
    signature: void gistLoadNodeBuffer(GISTBuildBuffers *gfbb, GISTNodeBuffer *nodeBuffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gistBuffersGetFreeBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:252,1
    - Dst: WriteTempFileBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:255,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - gfbb
    - nodeBuffer
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 264
    functionName: gistUnloadNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - pfree
    - WriteTempFileBlock
    - gistBuffersGetFreeBlock
    linkageType: ''
    returnType: void
    signature: void gistUnloadNodeBuffer(GISTBuildBuffers *gfbb, GISTNodeBuffer *nodeBuffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gistUnloadNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - gfbb
    argTypes:
    - GISTBuildBuffers*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 280
    functionName: gistUnloadNodeBuffers
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - gistUnloadNodeBuffer
    linkageType: ''
    returnType: void
    signature: void gistUnloadNodeBuffers(GISTBuildBuffers *gfbb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:292,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:292,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:292,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:295,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:295,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:299,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pageBuffer
    - itup
    argTypes:
    - GISTNodeBufferPage*
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 303
    functionName: gistPlaceItupToPage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - MAXALIGN
    - IndexTupleSize
    - PAGE_FREE_SPACE
    linkageType: ''
    returnType: void
    signature: void gistPlaceItupToPage(GISTNodeBufferPage *pageBuffer, IndexTuple
      itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:314,1
    - Dst: PAGE_IS_EMPTY
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:314,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:319,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:320,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:323,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:324,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:327,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - pageBuffer
    - itup
    argTypes:
    - GISTNodeBufferPage*
    - IndexTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 328
    functionName: gistGetItupFromPage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - PAGE_FREE_SPACE
    - palloc
    - MAXALIGN
    - PAGE_IS_EMPTY
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: void gistGetItupFromPage(GISTNodeBufferPage *pageBuffer, IndexTuple
      *itup)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:341,1
    - Dst: gistAllocateNewPageBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:348,1
    - Dst: gistAddLoadedBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:350,1
    - Dst: gistLoadNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:355,1
    - Dst: PAGE_NO_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:360,1
    - Dst: gistBuffersGetFreeBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:368,1
    - Dst: WriteTempFileBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:369,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:375,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:376,1
    - Dst: gistPlaceItupToPage
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:383,1
    - Dst: BUFFER_HALF_FILLED
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:388,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:390,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:396,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - gfbb
    - nodeBuffer
    - itup
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 397
    functionName: gistPushItupToNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - gistPlaceItupToPage
    - gistAddLoadedBuffer
    - MemoryContextSwitchTo
    - BUFFER_HALF_FILLED
    - WriteTempFileBlock
    - gistAllocateNewPageBuffer
    - gistLoadNodeBuffer
    - MAXALIGN
    - gistBuffersGetFreeBlock
    - PAGE_NO_SPACE
    - lcons
    - PAGE_FREE_SPACE
    linkageType: ''
    returnType: void
    signature: "void gistPushItupToNodeBuffer(GISTBuildBuffers *gfbb, GISTNodeBuffer
      *nodeBuffer,\n\t\t\t\t\t\t IndexTuple itup)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gistLoadNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:415,1
    - Dst: gistGetItupFromPage
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:420,1
    - Dst: PAGE_IS_EMPTY
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:426,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:442,1
    - Dst: ReadTempFileBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:443,1
    - Dst: gistBuffersReleaseBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:449,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:454,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - gfbb
    - nodeBuffer
    - itup
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    - IndexTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 403
    functionDepth: 3
    functionLinenumber: 403
    functionLinenumberEnd: 460
    functionName: gistPopItupFromNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - ReadTempFileBlock
    - gistGetItupFromPage
    - Assert
    - pfree
    - gistBuffersReleaseBlock
    - gistLoadNodeBuffer
    - PAGE_IS_EMPTY
    linkageType: ''
    returnType: bool
    signature: "bool gistPopItupFromNodeBuffer(GISTBuildBuffers *gfbb, GISTNodeBuffer
      *nodeBuffer,\n\t\t\t\t\t\t  IndexTuple *itup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - gfbb
    argTypes:
    - GISTBuildBuffers*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 477
    functionName: gistBuffersGetFreeBlock
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long gistBuffersGetFreeBlock(GISTBuildBuffers *gfbb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - gfbb
    - blocknum
    argTypes:
    - GISTBuildBuffers*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 499
    functionName: gistBuffersReleaseBlock
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 2
    functionsReached:
    - repalloc
    linkageType: ''
    returnType: void
    signature: void gistBuffersReleaseBlock(GISTBuildBuffers *gfbb, long blocknum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - gfbb
    argTypes:
    - GISTBuildBuffers*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 511
    functionName: gistFreeBuildBuffers
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - BufFileClose
    linkageType: ''
    returnType: void
    signature: void gistFreeBuildBuffers(GISTBuildBuffers *gfbb)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LEVEL_HAS_BUFFERS
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:547,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:553,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:570,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:571,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:582,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:583,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:591,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:593,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:596,1
    - Dst: gistGetNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:608,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:608,1
    - Dst: gistPopItupFromNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:623,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:631,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:657,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:662,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:683,1
    - Dst: gistPushItupToNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:719,1
    - Dst: gistgetadjusted
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:722,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:726,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:735,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 6
    argNames:
    - gfbb
    - giststate
    - r
    - level
    - buffer
    - splitinfo
    argTypes:
    - GISTBuildBuffers*
    - GISTSTATE*
    - Relation
    - int
    - Buffer
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 530
    functionDepth: 4
    functionLinenumber: 530
    functionLinenumberEnd: 736
    functionName: gistRelocateBuildBuffersOnSplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - hash_search
    - memcpy
    - gistPushItupToNodeBuffer
    - Assert
    - gistDeCompressAtt
    - BufferGetBlockNumber
    - pfree
    - palloc_array
    - gistpenalty
    - gistgetadjusted
    - lfirst
    - gistPopItupFromNodeBuffer
    - list_length
    - IndexRelationGetNumberOfKeyAttributes
    - foreach_current_index
    - LEVEL_HAS_BUFFERS
    - gistGetNodeBuffer
    linkageType: ''
    returnType: void
    signature: "void gistRelocateBuildBuffersOnSplit(GISTBuildBuffers *gfbb, GISTSTATE
      *giststate,\n\t\t\t\t\t\t\t\tRelation r, int level,\n\t\t\t\t\t\t\t\tBuffer
      buffer, List *splitinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:591,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:593,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:596,1
    - Dst: gistGetNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:608,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 612
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 28
    functionsReached:
    - gistDeCompressAtt
    - BufferGetBlockNumber
    - lfirst
    - foreach_current_index
    - gistGetNodeBuffer
    linkageType: ''
    returnType: void
    signature: void foreach(lc, splitinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufFileSeekBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:748,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:749,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - file
    - blknum
    - ptr
    argTypes:
    - BufFile*
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 751
    functionName: ReadTempFileBlock
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 2
    functionsReached:
    - elog
    - BufFileSeekBlock
    - BufFileReadExact
    linkageType: ''
    returnType: void
    signature: void ReadTempFileBlock(BufFile *file, long blknum, void *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufFileSeekBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:756,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:757,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:758,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - file
    - blknum
    - ptr
    argTypes:
    - BufFile*
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 759
    functionName: WriteTempFileBlock
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 2
    functionsReached:
    - elog
    - BufFileSeekBlock
    - BufFileWrite
    linkageType: ''
    returnType: void
    signature: void WriteTempFileBlock(BufFile *file, long blknum, const void *ptr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: float8_cmp_internal
      Src: /src/postgres/src/backend/access/gist/gistscan.c:51,1
    - Dst: GISTSearchItemIsHeap
      Src: /src/postgres/src/backend/access/gist/gistscan.c:60,1
    - Dst: GISTSearchItemIsHeap
      Src: /src/postgres/src/backend/access/gist/gistscan.c:60,1
    - Dst: GISTSearchItemIsHeap
      Src: /src/postgres/src/backend/access/gist/gistscan.c:62,1
    - Dst: GISTSearchItemIsHeap
      Src: /src/postgres/src/backend/access/gist/gistscan.c:62,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - pairingheap_node*
    - pairingheap_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 66
    functionName: pairingheap_GISTSearchItem_cmp
    functionSourceFile: /src/postgres/src/backend/access/gist/gistscan.c
    functionUses: 0
    functionsReached:
    - float8_cmp_internal
    - GISTSearchItemIsHeap
    linkageType: ''
    returnType: int
    signature: int pairingheap_GISTSearchItem_cmp(const pairingheap_node *a, const
      pairingheap_node *b, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/backend/access/gist/gistscan.c:81,1
    - Dst: initGISTstate
      Src: /src/postgres/src/backend/access/gist/gistscan.c:84,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistscan.c:90,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gistscan.c:93,1
    - Dst: createTempGistContext
      Src: /src/postgres/src/backend/access/gist/gistscan.c:95,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistscan.c:100,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/gist/gistscan.c:104,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistscan.c:105,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gistscan.c:106,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistscan.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 3
    argNames:
    - r
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 73
    functionDepth: 6
    functionLinenumber: 73
    functionLinenumberEnd: 124
    functionName: gistbeginscan
    functionSourceFile: /src/postgres/src/backend/access/gist/gistscan.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - palloc0_array
    - createTempGistContext
    - RelationGetIndexScan
    - palloc_array
    - MemoryContextSwitchTo
    - memset
    - palloc
    - initGISTstate
    linkageType: ''
    returnType: IndexScanDesc
    signature: IndexScanDesc gistbeginscan(Relation r, int nkeys, int norderbys)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistscan.c:151,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gist/gistscan.c:157,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistscan.c:165,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/gist/gistscan.c:186,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistscan.c:187,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/gist/gistscan.c:188,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/gist/gistscan.c:191,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/gist/gistscan.c:199,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/gist/gistscan.c:200,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/access/gist/gistscan.c:204,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gist/gistscan.c:208,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistscan.c:214,1
    - Dst: pairingheap_allocate
      Src: /src/postgres/src/backend/access/gist/gistscan.c:215,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistscan.c:216,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistscan.c:232,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistscan.c:237,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gistscan.c:260,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistscan.c:276,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistscan.c:287,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistscan.c:292,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistscan.c:294,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistscan.c:309,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistscan.c:310,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gistscan.c:312,1
    - Dst: get_func_rettype
      Src: /src/postgres/src/backend/access/gist/gistscan.c:326,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gistscan.c:332,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistscan.c:340,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 70
    argCount: 5
    argNames:
    - scan
    - key
    - nkeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 126
    functionDepth: 5
    functionLinenumber: 126
    functionLinenumberEnd: 345
    functionName: gistrescan
    functionSourceFile: /src/postgres/src/backend/access/gist/gistscan.c
    functionUses: 0
    functionsReached:
    - RelationGetRelationName
    - elog
    - MemoryContextReset
    - memcpy
    - Assert
    - TupleDescFinalize
    - pfree
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - TupleDescInitEntry
    - fmgr_info_copy
    - CreateTemplateTupleDesc
    - get_func_rettype
    - AllocSetContextCreate
    - TupleDescAttr
    - RelationGetNumberOfAttributes
    - MemoryContextSwitchTo
    - pairingheap_allocate
    - palloc
    linkageType: ''
    returnType: void
    signature: "void gistrescan(IndexScanDesc scan, ScanKey key, int nkeys,\n\t\t
      \  ScanKey orderbys, int norderbys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: freeGISTstate
      Src: /src/postgres/src/backend/access/gist/gistscan.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 347
    functionDepth: 2
    functionLinenumber: 347
    functionLinenumberEnd: 357
    functionName: gistendscan
    functionSourceFile: /src/postgres/src/backend/access/gist/gistscan.c
    functionUses: 0
    functionsReached:
    - freeGISTstate
    linkageType: ''
    returnType: void
    signature: void gistendscan(IndexScanDesc scan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/gist/gistutil.c:39,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistutil.c:40,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistutil.c:40,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistutil.c:44,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gist/gistutil.c:47,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistutil.c:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - page
    - itup
    - len
    - 'off'
    argTypes:
    - Page
    - IndexTuple*
    - int
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 53
    functionName: gistfillbuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 3
    functionsReached:
    - elog
    - OffsetNumberNext
    - PageAddItem
    - PageGetMaxOffsetNumber
    - PageIsEmpty
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: void gistfillbuffer(Page page, IndexTuple *itup, int len, OffsetNumber
      off)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistutil.c:66,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistutil.c:70,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistutil.c:70,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistutil.c:72,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/gist/gistutil.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - page
    - itvec
    - len
    - todelete
    - freespace
    argTypes:
    - Page
    - IndexTuple*
    - int
    - OffsetNumber
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 76
    functionName: gistnospace
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 1
    functionsReached:
    - PageGetItem
    - PageGetFreeSpace
    - PageGetItemId
    - IndexTupleSize
    linkageType: ''
    returnType: bool
    signature: bool gistnospace(Page page, IndexTuple *itvec, int len, OffsetNumber
      todelete, Size freespace)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistutil.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - itvec
    - len
    argTypes:
    - IndexTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 89
    functionName: gistfitpage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 1
    functionsReached:
    - IndexTupleSize
    linkageType: ''
    returnType: bool
    signature: bool gistfitpage(IndexTuple *itvec, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistutil.c:101,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistutil.c:103,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistutil.c:104,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistutil.c:105,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistutil.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - page
    - len
    argTypes:
    - Page
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 108
    functionName: gistextractpage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 2
    functionsReached:
    - OffsetNumberNext
    - palloc_array
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - PageGetItem
    linkageType: ''
    returnType: IndexTuple
    signature: 'IndexTuple *

      gistextractpage(Page page, int *len /* out */ )'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/access/gist/gistutil.c:116,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/gist/gistutil.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - itvec
    - len
    - additvec
    - addlen
    argTypes:
    - IndexTuple*
    - int*
    - IndexTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: gistjoinvector
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 2
    functionsReached:
    - memmove
    - repalloc_array
    linkageType: ''
    returnType: IndexTuple
    signature: 'IndexTuple *

      gistjoinvector(IndexTuple *itvec, int *len, IndexTuple *additvec, int addlen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistutil.c:136,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistutil.c:138,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistutil.c:142,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistutil.c:142,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistutil.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - vec
    - veclen
    - memlen
    argTypes:
    - IndexTuple*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 147
    functionName: gistfillitupvec
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 3
    functionsReached:
    - palloc
    - memcpy
    - IndexTupleSize
    linkageType: ''
    returnType: IndexTupleData
    signature: 'IndexTupleData *

      gistfillitupvec(IndexTuple *vec, int veclen, int *memlen)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistutil.c:162,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistutil.c:175,1
    - Dst: gistdentryinit
      Src: /src/postgres/src/backend/access/gist/gistutil.c:180,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/gist/gistutil.c:204,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:206,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:207,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 5
    argNames:
    - giststate
    - itvec
    - len
    - attr
    - isnull
    argTypes:
    - GISTSTATE*
    - IndexTuple*
    - int
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 154
    functionDepth: 3
    functionLinenumber: 154
    functionLinenumberEnd: 212
    functionName: gistMakeUnionItVec
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - index_getattr
    - FunctionCall2Coll
    - PointerGetDatum
    - palloc
    - gistdentryinit
    linkageType: ''
    returnType: void
    signature: "void gistMakeUnionItVec(GISTSTATE *giststate, IndexTuple *itvec, int
      len,\n\t\t\t\t   Datum *attr, bool *isnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gistMakeUnionItVec
      Src: /src/postgres/src/backend/access/gist/gistutil.c:224,1
    - Dst: gistFormTuple
      Src: /src/postgres/src/backend/access/gist/gistutil.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - r
    - itvec
    - len
    - giststate
    argTypes:
    - Relation
    - IndexTuple*
    - int
    - GISTSTATE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 218
    functionDepth: 4
    functionLinenumber: 218
    functionLinenumberEnd: 227
    functionName: gistunion
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 1
    functionsReached:
    - gistFormTuple
    - gistMakeUnionItVec
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple gistunion(Relation r, IndexTuple *itvec, int len, GISTSTATE
      *giststate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/gist/gistutil.c:273,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:275,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:276,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 8
    argNames:
    - giststate
    - attno
    - entry1
    - isnull1
    - entry2
    - isnull2
    - dst
    - dstisnull
    argTypes:
    - GISTSTATE*
    - int
    - GISTENTRY*
    - bool
    - GISTENTRY*
    - bool
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 278
    functionName: gistMakeUnionKey
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: "void gistMakeUnionKey(GISTSTATE *giststate, int attno,\n\t\t\t\t GISTENTRY
      *entry1, bool isnull1,\n\t\t\t\t GISTENTRY *entry2, bool isnull2,\n\t\t\t\t
      Datum *dst, bool *dstisnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall3Coll
      Src: /src/postgres/src/backend/access/gist/gistutil.c:285,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - giststate
    - attno
    - a
    - b
    argTypes:
    - GISTSTATE*
    - int
    - Datum
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 290
    functionName: gistKeyIsEQ
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - FunctionCall3Coll
    - PointerGetDatum
    linkageType: ''
    returnType: bool
    signature: bool gistKeyIsEQ(GISTSTATE *giststate, int attno, Datum a, Datum b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistutil.c:301,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistutil.c:305,1
    - Dst: gistdentryinit
      Src: /src/postgres/src/backend/access/gist/gistutil.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 7
    argNames:
    - giststate
    - r
    - tuple
    - p
    - o
    - attdata
    - isnull
    argTypes:
    - GISTSTATE*
    - Relation
    - IndexTuple
    - Page
    - OffsetNumber
    - GISTENTRY*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 310
    functionName: gistDeCompressAtt
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 2
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - index_getattr
    - gistdentryinit
    linkageType: ''
    returnType: void
    signature: "void gistDeCompressAtt(GISTSTATE *giststate, Relation r, IndexTuple
      tuple, Page p,\n\t\t\t\t  OffsetNumber o, GISTENTRY *attdata, bool *isnull)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistutil.c:328,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistutil.c:331,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistutil.c:334,1
    - Dst: gistMakeUnionKey
      Src: /src/postgres/src/backend/access/gist/gistutil.c:336,1
    - Dst: gistKeyIsEQ
      Src: /src/postgres/src/backend/access/gist/gistutil.c:352,1
    - Dst: gistFormTuple
      Src: /src/postgres/src/backend/access/gist/gistutil.c:360,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 4
    argNames:
    - r
    - oldtup
    - addtup
    - giststate
    argTypes:
    - Relation
    - IndexTuple
    - IndexTuple
    - GISTSTATE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 315
    functionDepth: 4
    functionLinenumber: 315
    functionLinenumberEnd: 365
    functionName: gistgetadjusted
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 4
    functionsReached:
    - gistFormTuple
    - gistDeCompressAtt
    - gistMakeUnionKey
    - IndexRelationGetNumberOfKeyAttributes
    - gistKeyIsEQ
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple gistgetadjusted(Relation r, IndexTuple oldtup, IndexTuple
      addtup, GISTSTATE *giststate)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistutil.c:386,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistutil.c:386,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistutil.c:388,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistutil.c:435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistutil.c:436,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistutil.c:438,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistutil.c:440,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistutil.c:440,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistutil.c:447,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistutil.c:454,1
    - Dst: gistdentryinit
      Src: /src/postgres/src/backend/access/gist/gistutil.c:456,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistutil.c:458,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistutil.c:476,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistutil.c:506,1
    - Dst: pg_prng_bool
      Src: /src/postgres/src/backend/access/gist/gistutil.c:511,1
    - Dst: pg_prng_bool
      Src: /src/postgres/src/backend/access/gist/gistutil.c:533,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 4
    argNames:
    - r
    - p
    - it
    - giststate
    argTypes:
    - Relation
    - Page
    - IndexTuple
    - GISTSTATE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 373
    functionDepth: 4
    functionLinenumber: 373
    functionLinenumberEnd: 541
    functionName: gistchoose
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 2
    functionsReached:
    - OffsetNumberNext
    - Assert
    - gistDeCompressAtt
    - index_getattr
    - pg_prng_bool
    - PageGetItemId
    - gistpenalty
    - PageGetMaxOffsetNumber
    - PageGetItem
    - IndexRelationGetNumberOfKeyAttributes
    - gistdentryinit
    - GistPageIsLeaf
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber gistchoose(Relation r, Page p, IndexTuple it,\t/* it
      has compressed entry */\n\t\t   GISTSTATE *giststate)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistutil.c:555,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistutil.c:558,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gist/gistutil.c:562,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/gist/gistutil.c:562,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:564,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistutil.c:567,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistutil.c:571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 9
    argNames:
    - giststate
    - nkey
    - e
    - k
    - r
    - pg
    - o
    - l
    - isNull
    argTypes:
    - GISTSTATE*
    - int
    - GISTENTRY*
    - Datum
    - Relation
    - Page
    - OffsetNumber
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 572
    functionName: gistdentryinit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 4
    functionsReached:
    - gistentryinit
    - PointerGetDatum
    - OidIsValid
    - FunctionCall1Coll
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e,\n\t\t\t
      \  Datum k, Relation r, Page pg, OffsetNumber o,\n\t\t\t   bool l, bool isNull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gistCompressValues
      Src: /src/postgres/src/backend/access/gist/gistutil.c:581,1
    - Dst: index_form_tuple
      Src: /src/postgres/src/backend/access/gist/gistutil.c:583,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistutil.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - giststate
    - r
    - attdata
    - isnull
    - isleaf
    argTypes:
    - GISTSTATE*
    - Relation
    - Datum*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 574
    functionDepth: 2
    functionLinenumber: 574
    functionLinenumberEnd: 593
    functionName: gistFormTuple
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 5
    functionsReached:
    - ItemPointerSetOffsetNumber
    - index_form_tuple
    - gistCompressValues
    linkageType: ''
    returnType: IndexTuple
    signature: "IndexTuple gistFormTuple(GISTSTATE *giststate, Relation r,\n\t\t\t
      \ const Datum *attdata, const bool *isnull, bool isleaf)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistutil.c:604,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistutil.c:613,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistutil.c:616,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gist/gistutil.c:618,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/gist/gistutil.c:618,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:620,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 6
    argNames:
    - giststate
    - r
    - attdata
    - isnull
    - isleaf
    - compatt
    argTypes:
    - GISTSTATE*
    - Relation
    - Datum*
    - bool*
    - bool
    - Datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 640
    functionName: gistCompressValues
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 2
    functionsReached:
    - gistentryinit
    - PointerGetDatum
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - FunctionCall1Coll
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void gistCompressValues(GISTSTATE *giststate, Relation r,\n\t\t\t\t
      \  const Datum *attdata, const bool *isnull, bool isleaf, Datum *compatt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistutil.c:651,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gist/gistutil.c:654,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/gist/gistutil.c:654,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - giststate
    - nkey
    - k
    - r
    argTypes:
    - GISTSTATE*
    - int
    - Datum
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 660
    functionName: gistFetchAtt
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - FunctionCall1Coll
    - PointerGetDatum
    - gistentryinit
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum gistFetchAtt(GISTSTATE *giststate, int nkey, Datum k, Relation
      r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistutil.c:669,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistutil.c:674,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistutil.c:678,1
    - Dst: gistFetchAtt
      Src: /src/postgres/src/backend/access/gist/gistutil.c:683,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistutil.c:715,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistutil.c:718,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/gist/gistutil.c:720,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - giststate
    - r
    - tuple
    argTypes:
    - GISTSTATE*
    - Relation
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 666
    functionDepth: 6
    functionLinenumber: 666
    functionLinenumberEnd: 721
    functionName: gistFetchTuple
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 1
    functionsReached:
    - index_getattr
    - heap_form_tuple
    - gistFetchAtt
    - MemoryContextSwitchTo
    - IndexRelationGetNumberOfKeyAttributes
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple gistFetchTuple(GISTSTATE *giststate, Relation r, IndexTuple
      tuple)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall3Coll
      Src: /src/postgres/src/backend/access/gist/gistutil.c:733,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:735,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:736,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:737,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/gist/gistutil.c:739,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/access/gist/gistutil.c:747,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 6
    argNames:
    - giststate
    - attno
    - orig
    - isNullOrig
    - add
    - isNullAdd
    argTypes:
    - GISTSTATE*
    - int
    - GISTENTRY*
    - bool
    - GISTENTRY*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 723
    functionDepth: 1
    functionLinenumber: 723
    functionLinenumberEnd: 751
    functionName: gistpenalty
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 2
    functionsReached:
    - isnan
    - get_float4_infinity
    - FunctionCall3Coll
    - PointerGetDatum
    linkageType: ''
    returnType: float
    signature: "float gistpenalty(GISTSTATE *giststate, int attno,\n\t\t\tGISTENTRY
      *orig, bool isNullOrig,\n\t\t\tGISTENTRY *add, bool isNullAdd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/gist/gistutil.c:761,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistutil.c:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - page
    - f
    argTypes:
    - Page
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 767
    functionName: gistinitpage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 3
    functionsReached:
    - GistPageGetOpaque
    - PageInit
    linkageType: ''
    returnType: void
    signature: void gistinitpage(Page page, uint32 f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistutil.c:777,1
    - Dst: gistinitpage
      Src: /src/postgres/src/backend/access/gist/gistutil.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - b
    - f
    argTypes:
    - Buffer
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 772
    functionDepth: 4
    functionLinenumber: 772
    functionLinenumberEnd: 779
    functionName: GISTInitBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 4
    functionsReached:
    - gistinitpage
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: void GISTInitBuffer(Buffer b, uint32 f)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistutil.c:787,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/gist/gistutil.c:795,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistutil.c:796,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistutil.c:797,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistutil.c:798,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gistutil.c:799,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistutil.c:800,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/gist/gistutil.c:801,1
    - Dst: PageGetSpecialSize
      Src: /src/postgres/src/backend/access/gist/gistutil.c:806,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistutil.c:806,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistutil.c:807,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistutil.c:808,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistutil.c:809,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gistutil.c:810,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistutil.c:811,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/gist/gistutil.c:812,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 784
    functionDepth: 4
    functionLinenumber: 784
    functionLinenumberEnd: 813
    functionName: gistcheckpage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 6
    functionsReached:
    - PageGetSpecialSize
    - errcode
    - BufferGetBlockNumber
    - ereport
    - PageIsNew
    - BufferGetPage
    - errhint
    - errmsg
    - RelationGetRelationName
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void gistcheckpage(Relation rel, Buffer buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetFreeIndexPage
      Src: /src/postgres/src/backend/access/gist/gistutil.c:831,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistutil.c:836,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/gist/gistutil.c:842,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistutil.c:844,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/gist/gistutil.c:849,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gistutil.c:852,1
    - Dst: gistPageRecyclable
      Src: /src/postgres/src/backend/access/gist/gistutil.c:858,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/gist/gistutil.c:866,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gistutil.c:866,1
    - Dst: gistXLogPageReuse
      Src: /src/postgres/src/backend/access/gist/gistutil.c:867,1
    - Dst: GistPageGetDeleteXid
      Src: /src/postgres/src/backend/access/gist/gistutil.c:867,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistutil.c:872,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistutil.c:876,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/gist/gistutil.c:880,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/gist/gistutil.c:880,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - r
    - heaprel
    argTypes:
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 823
    functionDepth: 5
    functionLinenumber: 823
    functionLinenumberEnd: 884
    functionName: gistNewBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 2
    functionsReached:
    - XLogStandbyInfoActive
    - ReleaseBuffer
    - gistPageRecyclable
    - ExtendBufferedRel
    - LockBuffer
    - PageIsNew
    - GistPageGetDeleteXid
    - BufferGetPage
    - BMR_REL
    - RelationNeedsWAL
    - ReadBuffer
    - gistXLogPageReuse
    - ConditionalLockBuffer
    - gistcheckpage
    - GetFreeIndexPage
    linkageType: ''
    returnType: Buffer
    signature: Buffer gistNewBuffer(Relation r, Relation heaprel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/gist/gistutil.c:890,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gistutil.c:892,1
    - Dst: GistPageGetDeleteXid
      Src: /src/postgres/src/backend/access/gist/gistutil.c:904,1
    - Dst: GlobalVisCheckRemovableFullXid
      Src: /src/postgres/src/backend/access/gist/gistutil.c:906,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 887
    functionDepth: 2
    functionLinenumber: 887
    functionLinenumberEnd: 909
    functionName: gistPageRecyclable
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 1
    functionsReached:
    - GlobalVisCheckRemovableFullXid
    - GistPageIsDeleted
    - PageIsNew
    - GistPageGetDeleteXid
    linkageType: ''
    returnType: bool
    signature: bool gistPageRecyclable(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/gist/gistutil.c:919,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/gist/gistutil.c:922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 911
    functionDepth: 5
    functionLinenumber: 911
    functionLinenumberEnd: 923
    functionName: gistoptions
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - lengthof
    - build_reloptions
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      gistoptions(Datum reloptions, bool validate)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_index_column_opclass
      Src: /src/postgres/src/backend/access/gist/gistutil.c:970,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistutil.c:971,1
    - Dst: get_opclass_opfamily_and_input_type
      Src: /src/postgres/src/backend/access/gist/gistutil.c:978,1
    - Dst: SearchSysCacheExists4
      Src: /src/postgres/src/backend/access/gist/gistutil.c:986,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:987,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:988,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:989,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:990,1
    - Dst: SearchSysCacheExists4
      Src: /src/postgres/src/backend/access/gist/gistutil.c:998,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:999,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1000,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1001,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1002,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 6
    argNames:
    - index_oid
    - attno
    - prop
    - propname
    - res
    - isnull
    argTypes:
    - Oid
    - int
    - IndexAMProperty
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 1008
    functionName: gistproperty
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - SearchSysCacheExists4
    - get_opclass_opfamily_and_input_type
    - OidIsValid
    - get_index_column_opclass
    - ObjectIdGetDatum
    - Int16GetDatum
    linkageType: ''
    returnType: bool
    signature: "bool gistproperty(Oid index_oid, int attno,\n\t\t\t IndexAMProperty
      prop, const char *propname,\n\t\t\t bool *res, bool *isnull)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1017,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1022,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1024,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1026,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1028,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1030,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1032,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1034,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1038
    functionName: gist_translate_cmptype_common
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_UINT16
    linkageType: ''
    returnType: Datum
    signature: Datum gist_translate_cmptype_common(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1054,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1055,1
    - Dst: OidFunctionCall1Coll
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1059,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1059,1
    - Dst: DatumGetUInt16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1060,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cmptype
    - opfamily
    argTypes:
    - CompareType
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1047
    functionDepth: 1
    functionLinenumber: 1047
    functionLinenumberEnd: 1061
    functionName: gisttranslatecmptype
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - DatumGetUInt16
    - Int32GetDatum
    - OidIsValid
    - get_opfamily_proc
    - OidFunctionCall1Coll
    linkageType: ''
    returnType: StrategyNumber
    signature: StrategyNumber gisttranslatecmptype(CompareType cmptype, Oid opfamily)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:64,1
    - Dst: gistvacuumscan
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - info
    - stats
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 69
    functionName: gistbulkdelete
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvacuum.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - gistvacuumscan
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: "IndexBulkDeleteResult *\ngistbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult
      *stats,\n\t\t\t   IndexBulkDeleteCallback callback, void *callback_state)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:88,1
    - Dst: gistvacuumscan
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 105
    functionName: gistvacuumcleanup
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvacuum.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - gistvacuumscan
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: 'IndexBulkDeleteResult *

      gistvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GenerationContextCreate
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:167,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:172,1
    - Dst: intset_create
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:173,1
    - Dst: intset_create
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:174,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:175,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:182,1
    - Dst: GetInsertRecPtr
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:183,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:185,1
    - Dst: RELATION_IS_LOCAL
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:210,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:218,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:231,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:232,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:234,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:248,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:250,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:252,1
    - Dst: gistvacuumpage
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:255,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:263,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:266,1
    - Dst: IndexFreeSpaceMapVacuum
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:281,1
    - Dst: gistvacuum_delete_empty_pages
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:290,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:293,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 4
    argNames:
    - info
    - stats
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 124
    functionDepth: 4
    functionLinenumber: 124
    functionLinenumberEnd: 297
    functionName: gistvacuumscan
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvacuum.c
    functionUses: 2
    functionsReached:
    - read_stream_next_buffer
    - GetInsertRecPtr
    - read_stream_begin_relation
    - vacuum_delay_point
    - IndexFreeSpaceMapVacuum
    - XLogGetFakeLSN
    - gistvacuumpage
    - LockRelationForExtension
    - RelationGetNumberOfBlocks
    - gistvacuum_delete_empty_pages
    - read_stream_reset
    - read_stream_end
    - GenerationContextCreate
    - BufferIsValid
    - RELATION_IS_LOCAL
    - intset_create
    - MemoryContextSwitchTo
    - RelationNeedsWAL
    - MemoryContextDelete
    - UnlockRelationForExtension
    linkageType: ''
    returnType: void
    signature: "void gistvacuumscan(IndexVacuumInfo *info, IndexBulkDeleteResult *stats,\n\t\t\t
      \  IndexBulkDeleteCallback callback, void *callback_state)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:314,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:332,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:333,1
    - Dst: gistPageRecyclable
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:335,1
    - Dst: RecordFreeIndexPage
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:338,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:342,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:347,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:352,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:353,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:365,1
    - Dst: GistPageGetNSN
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:366,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:383,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:385,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:386,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:388,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:399,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:401,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:403,1
    - Dst: GistMarkTuplesDeleted
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:404,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:406,1
    - Dst: gistXLogUpdate
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:410,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:413,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:416,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:416,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:418,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:422,1
    - Dst: intset_add_member
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:437,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:451,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:456,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:458,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:459,1
    - Dst: GistTupleIsInvalid
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:462,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:463,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:464,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:465,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:466,1
    - Dst: intset_add_member
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:475,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:478,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:492,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:494,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 2
    argNames:
    - vstate
    - buffer
    argTypes:
    - GistVacState*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 307
    functionDepth: 6
    functionLinenumber: 307
    functionLinenumberEnd: 498
    functionName: gistvacuumpage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvacuum.c
    functionUses: 1
    functionsReached:
    - callback
    - gistPageRecyclable
    - GistFollowRight
    - gistXLogUpdate
    - LockBuffer
    - BufferGetPage
    - PageIndexMultiDelete
    - PageGetItem
    - errhint
    - vacuum_delay_point
    - RelationGetRelationName
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - XLogGetFakeLSN
    - errmsg
    - GistMarkTuplesDeleted
    - UnlockReleaseBuffer
    - PageSetLSN
    - GistPageGetOpaque
    - ReadBufferExtended
    - ereport
    - PageGetItemId
    - GistPageIsDeleted
    - MarkBufferDirty
    - GistTupleIsInvalid
    - GistPageIsLeaf
    - intset_add_member
    - OffsetNumberNext
    - GistPageGetNSN
    - RecordFreeIndexPage
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - errdetail
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void gistvacuumpage(GistVacState *vstate, Buffer buffer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: intset_num_entries
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:513,1
    - Dst: intset_begin_iterate
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:514,1
    - Dst: intset_iterate_next
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:516,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:527,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:530,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:531,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:533,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:533,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:533,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:539,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:540,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:548,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:552,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:554,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:555,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:558,1
    - Dst: intset_is_member
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:559,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:579,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:590,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:593,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:595,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:596,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:598,1
    - Dst: gistdeletepage
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:599,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:603,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:605,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:608,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - info
    - vstate
    argTypes:
    - IndexVacuumInfo*
    - GistVacState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 503
    functionDepth: 5
    functionLinenumber: 503
    functionLinenumberEnd: 616
    functionName: gistvacuum_delete_empty_pages
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvacuum.c
    functionUses: 1
    functionsReached:
    - LockBuffer
    - PageIsNew
    - BufferGetPage
    - PageGetItem
    - gistcheckpage
    - gistdeletepage
    - ReleaseBuffer
    - Assert
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - ItemPointerGetBlockNumber
    - intset_num_entries
    - ReadBufferExtended
    - PageGetItemId
    - intset_begin_iterate
    - GistPageIsDeleted
    - intset_iterate_next
    - intset_is_member
    - GistPageIsLeaf
    - OffsetNumberNext
    linkageType: ''
    returnType: void
    signature: void gistvacuum_delete_empty_pages(IndexVacuumInfo *info, GistVacState
      *vstate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:635,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:636,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:645,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:648,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:652,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:655,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:665,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:665,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:666,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:669,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:673,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:674,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:677,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:678,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:679,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:680,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:693,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:695,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:698,1
    - Dst: GistPageSetDeleted
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:699,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:704,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:705,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:707,1
    - Dst: gistXLogPageDelete
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:708,1
    - Dst: XLogGetFakeLSN
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:710,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:711,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:712,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gistvacuum.c:714,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 5
    argNames:
    - info
    - stats
    - parentBuffer
    - downlink
    - leafBuffer
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - Buffer
    - OffsetNumber
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 630
    functionDepth: 6
    functionLinenumber: 630
    functionLinenumberEnd: 717
    functionName: gistdeletepage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvacuum.c
    functionUses: 1
    functionsReached:
    - ReadNextFullTransactionId
    - GistFollowRight
    - PageIsNew
    - BufferGetPage
    - PageGetItem
    - GistPageSetDeleted
    - Assert
    - BufferGetBlockNumber
    - PageGetMaxOffsetNumber
    - PageIndexTupleDelete
    - gistXLogPageDelete
    - XLogGetFakeLSN
    - ItemPointerGetBlockNumber
    - PageSetLSN
    - PageGetItemId
    - GistPageIsDeleted
    - MarkBufferDirty
    - GistPageIsLeaf
    - START_CRIT_SECTION
    - RelationNeedsWAL
    - END_CRIT_SECTION
    linkageType: ''
    returnType: bool
    signature: "bool gistdeletepage(IndexVacuumInfo *info, IndexBulkDeleteResult *stats,\n\t\t\t
      \  Buffer parentBuffer, OffsetNumber downlink,\n\t\t\t   Buffer leafBuffer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:54,1
    - Dst: gistMakeUnionItVec
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:64,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:67,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - giststate
    - itvec
    - gsvp
    argTypes:
    - GISTSTATE*
    - IndexTuple*
    - GistSplitUnion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 46
    functionDepth: 4
    functionLinenumber: 46
    functionLinenumberEnd: 68
    functionName: gistunionsubkeyvec
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached:
    - pfree
    - palloc_array
    - gistMakeUnionItVec
    linkageType: ''
    returnType: void
    signature: "void gistunionsubkeyvec(GISTSTATE *giststate, IndexTuple *itvec,\n\t\t\t\t
      \  GistSplitUnion *gsvp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gistunionsubkeyvec
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:91,1
    - Dst: gistunionsubkeyvec
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - giststate
    - itvec
    - spl
    argTypes:
    - GISTSTATE*
    - IndexTuple*
    - GistSplitVector*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 79
    functionDepth: 5
    functionLinenumber: 79
    functionLinenumberEnd: 99
    functionName: gistunionsubkey
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached:
    - gistunionsubkeyvec
    linkageType: ''
    returnType: void
    signature: void gistunionsubkey(GISTSTATE *giststate, IndexTuple *itvec, GistSplitVector
      *spl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:127,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:132,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:143,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:148,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - r
    - giststate
    - valvec
    - spl
    - attno
    argTypes:
    - Relation
    - GISTSTATE*
    - GISTENTRY*
    - GistSplitVector*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 159
    functionName: findDontCares
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached:
    - gistpenalty
    - gistentryinit
    linkageType: ''
    returnType: int
    signature: "int findDontCares(Relation r, GISTSTATE *giststate, GISTENTRY *valvec,\n\t\t\t
      \ GistSplitVector *spl, int attno)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - a
    - len
    - dontcare
    argTypes:
    - OffsetNumber*
    - int*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 191
    functionName: removeDontCares
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void removeDontCares(OffsetNumber *a, int *len, const bool *dontcare)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:207,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:216,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:217,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:219,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 6
    argNames:
    - r
    - giststate
    - v
    - itup
    - 'off'
    - attno
    argTypes:
    - Relation
    - GISTSTATE*
    - GistSplitVector*
    - IndexTuple
    - OffsetNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 199
    functionDepth: 4
    functionLinenumber: 199
    functionLinenumberEnd: 235
    functionName: placeOne
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached:
    - gistDeCompressAtt
    - gistpenalty
    - gistentryinit
    linkageType: ''
    returnType: void
    signature: "void placeOne(Relation r, GISTSTATE *giststate, GistSplitVector *v,\n\t\t
      IndexTuple itup, OffsetNumber off, int attno)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - s
    - ','
    - d
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 243
    functionName: SWAPVAR
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SWAPVAR( s, d, t )
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:268,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:269,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:270,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:271,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:278,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:279,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:280,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:281,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:302,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:303,1
    - Dst: SWAPVAR
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:320,1
    - Dst: SWAPVAR
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:321,1
    - Dst: SWAPVAR
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:322,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:323,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:324,1
    - Dst: gistMakeUnionKey
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:328,1
    - Dst: gistMakeUnionKey
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:332,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 6
    argNames:
    - r
    - giststate
    - attno
    - sv
    - oldL
    - oldR
    argTypes:
    - Relation
    - GISTSTATE*
    - int
    - GIST_SPLITVEC*
    - Datum
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 336
    functionName: supportSecondarySplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached:
    - gistpenalty
    - gistMakeUnionKey
    - SWAPVAR
    - gistentryinit
    linkageType: ''
    returnType: void
    signature: "void supportSecondarySplit(Relation r, GISTSTATE *giststate, int attno,\n\t\t\t\t\t
      \ GIST_SPLITVEC *sv, Datum oldL, Datum oldR)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:355,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:356,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:359,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:376,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:379,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:381,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:383,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:384,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:387,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:389,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:391,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 4
    argNames:
    - giststate
    - entryvec
    - v
    - attno
    argTypes:
    - GISTSTATE*
    - GistEntryVector*
    - GIST_SPLITVEC*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 393
    functionName: genericPickSplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached:
    - OffsetNumberNext
    - memcpy
    - FunctionCall2Coll
    - PointerGetDatum
    - palloc
    linkageType: ''
    returnType: void
    signature: void genericPickSplit(GISTSTATE *giststate, GistEntryVector *entryvec,
      GIST_SPLITVEC *v, int attno)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:433,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:435,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:436,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:444,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:445,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:446,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:447,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:448,1
    - Dst: genericPickSplit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:460,1
    - Dst: supportSecondarySplit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:473,1
    - Dst: gistKeyIsEQ
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:497,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:504,1
    - Dst: findDontCares
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:506,1
    - Dst: removeDontCares
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:513,1
    - Dst: removeDontCares
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:514,1
    - Dst: gistunionsubkey
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:562,1
    - Dst: placeOne
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:565,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 7
    argNames:
    - r
    - entryvec
    - attno
    - v
    - itup
    - len
    - giststate
    argTypes:
    - Relation
    - GistEntryVector*
    - int
    - GistSplitVector*
    - IndexTuple*
    - int
    - GISTSTATE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 414
    functionDepth: 6
    functionLinenumber: 414
    functionLinenumberEnd: 579
    functionName: gistUserPicksplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached:
    - palloc0_array
    - errcode
    - gistunionsubkey
    - Assert
    - placeOne
    - supportSecondarySplit
    - ereport
    - removeDontCares
    - FunctionCall2Coll
    - errhint
    - PointerGetDatum
    - errmsg
    - RelationGetRelationName
    - genericPickSplit
    - findDontCares
    - gistKeyIsEQ
    linkageType: ''
    returnType: bool
    signature: "bool gistUserPicksplit(Relation r, GistEntryVector *entryvec, int
      attno, GistSplitVector *v,\n\t\t\t\t  IndexTuple *itup, int len, GISTSTATE *giststate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:590,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - v
    - len
    argTypes:
    - GIST_SPLITVEC*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 599
    functionName: gistSplitHalf
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: void
    signature: void gistSplitHalf(GIST_SPLITVEC *v, int len)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:633,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:635,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:642,1
    - Dst: gistdentryinit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:644,1
    - Dst: gistSplitByKey
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:661,1
    - Dst: gistSplitHalf
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:663,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:677,1
    - Dst: gistunionsubkey
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:689,1
    - Dst: gistUserPicksplit
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:703,1
    - Dst: gistSplitByKey
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:711,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:719,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:734,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:741,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:742,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:743,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:744,1
    - Dst: gistSplitByKey
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:747,1
    - Dst: gistunionsubkey
      Src: /src/postgres/src/backend/access/gist/gistsplit.c:777,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 62
    argCount: 7
    argNames:
    - r
    - page
    - itup
    - len
    - giststate
    - v
    - attno
    argTypes:
    - Relation
    - Page
    - IndexTuple*
    - int
    - GISTSTATE*
    - GistSplitVector*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 622
    functionDepth: 7
    functionLinenumber: 622
    functionLinenumberEnd: 779
    functionName: gistSplitByKey
    functionSourceFile: /src/postgres/src/backend/access/gist/gistsplit.c
    functionUses: 2
    functionsReached:
    - memcpy
    - Assert
    - index_getattr
    - gistSplitHalf
    - palloc_array
    - gistSplitByKey
    - palloc
    - gistdentryinit
    - gistUserPicksplit
    - gistunionsubkey
    linkageType: ''
    returnType: void
    signature: "void gistSplitByKey(Relation r, Page page, IndexTuple *itup, int len,\n\t\t\t
      \  GISTSTATE *giststate, GistSplitVector *v, int attno)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::slot_callbacks
      Src: /src/postgres/src/backend/access/table/tableam.c:64,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableam.c:83,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 89
    functionName: table_slot_callbacks
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - Assert
    - Relation::rd_tableam::slot_callbacks
    linkageType: ''
    returnType: TupleTableSlotOps
    signature: 'TupleTableSlotOps *

      table_slot_callbacks(Relation relation)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/access/table/tableam.c:97,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/table/tableam.c:98,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/table/tableam.c:98,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/table/tableam.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - relation
    - reglist
    argTypes:
    - Relation
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 104
    functionName: table_slot_create
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 4
    functionsReached:
    - MakeSingleTupleTableSlot
    - RelationGetDescr
    - table_slot_callbacks
    - lappend
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      table_slot_create(Relation relation, List **reglist)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/table/tableam.c:117,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:118,1
    - Dst: GetCatalogSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:118,1
    - Dst: table_beginscan_common
      Src: /src/postgres/src/backend/access/table/tableam.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - relation
    - nkeys
    - key
    argTypes:
    - Relation
    - int
    - ScanKeyData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 122
    functionName: table_beginscan_catalog
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - GetCatalogSnapshot
    - RegisterSnapshot
    - table_beginscan_common
    - RelationGetRelid
    linkageType: ''
    returnType: TableScanDesc
    signature: TableScanDesc table_beginscan_catalog(Relation relation, int nkeys,
      ScanKeyData *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:135,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/table/tableam.c:136,1
    - Dst: EstimateSnapshotSpace
      Src: /src/postgres/src/backend/access/table/tableam.c:136,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableam.c:138,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/table/tableam.c:140,1
    - Dst: Relation::rd_tableam::parallelscan_estimate
      Src: /src/postgres/src/backend/access/table/tableam.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - snapshot
    argTypes:
    - Relation
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: table_parallelscan_estimate
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 3
    functionsReached:
    - Relation::rd_tableam::parallelscan_estimate
    - add_size
    - Assert
    - IsMVCCSnapshot
    - EstimateSnapshotSpace
    linkageType: ''
    returnType: Size
    signature: Size table_parallelscan_estimate(Relation rel, Snapshot snapshot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::parallelscan_initialize
      Src: /src/postgres/src/backend/access/table/tableam.c:149,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:153,1
    - Dst: SerializeSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableam.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - rel
    - pscan
    - snapshot
    argTypes:
    - Relation
    - ParallelTableScanDesc
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 163
    functionName: table_parallelscan_initialize
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 3
    functionsReached:
    - Assert
    - IsMVCCSnapshot
    - SerializeSnapshot
    - Relation::rd_tableam::parallelscan_initialize
    linkageType: ''
    returnType: void
    signature: "void table_parallelscan_initialize(Relation rel, ParallelTableScanDesc
      pscan,\n\t\t\t\t\t\t\t  Snapshot snapshot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableam.c:173,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/table/tableam.c:173,1
    - Dst: RestoreSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:178,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:179,1
    - Dst: table_beginscan_common
      Src: /src/postgres/src/backend/access/table/tableam.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - relation
    - pscan
    - flags
    argTypes:
    - Relation
    - ParallelTableScanDesc
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 190
    functionName: table_beginscan_parallel
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 3
    functionsReached:
    - RelFileLocatorEquals
    - RestoreSnapshot
    - Assert
    - RegisterSnapshot
    - table_beginscan_common
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_parallel(Relation relation, ParallelTableScanDesc
      pscan,\n\t\t\t\t\t\t uint32 flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableam.c:201,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/table/tableam.c:201,1
    - Dst: RestoreSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:209,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:210,1
    - Dst: table_beginscan_common
      Src: /src/postgres/src/backend/access/table/tableam.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - relation
    - pscan
    - flags
    argTypes:
    - Relation
    - ParallelTableScanDesc
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 222
    functionName: table_beginscan_parallel_tidrange
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - RelFileLocatorEquals
    - RestoreSnapshot
    - Assert
    - RegisterSnapshot
    - table_beginscan_common
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_parallel_tidrange(Relation relation,\n\t\t\t\t\t\t\t\t
      \ ParallelTableScanDesc pscan,\n\t\t\t\t\t\t\t\t  uint32 flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/access/table/tableam.c:252,1
    - Dst: table_index_fetch_begin
      Src: /src/postgres/src/backend/access/table/tableam.c:253,1
    - Dst: table_index_fetch_tuple
      Src: /src/postgres/src/backend/access/table/tableam.c:254,1
    - Dst: table_index_fetch_end
      Src: /src/postgres/src/backend/access/table/tableam.c:256,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/table/tableam.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - rel
    - tid
    - snapshot
    - all_dead
    argTypes:
    - Relation
    - ItemPointer
    - Snapshot
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 260
    functionName: table_index_fetch_tuple_check
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 1
    functionsReached:
    - table_index_fetch_tuple
    - ExecDropSingleTupleTableSlot
    - table_slot_create
    - table_index_fetch_begin
    - table_index_fetch_end
    linkageType: ''
    returnType: bool
    signature: "bool table_index_fetch_tuple_check(Relation rel,\n\t\t\t\t\t\t\t  ItemPointer
      tid,\n\t\t\t\t\t\t\t  Snapshot snapshot,\n\t\t\t\t\t\t\t  bool *all_dead)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TableAmRoutine*::tuple_tid_valid
      Src: /src/postgres/src/backend/access/table/tableam.c:278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/table/tableam.c:279,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/table/tableam.c:280,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/table/tableam.c:281,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/table/tableam.c:282,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/backend/access/table/tableam.c:283,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/table/tableam.c:284,1
    - Dst: TableAmRoutine*::tuple_get_latest_tid
      Src: /src/postgres/src/backend/access/table/tableam.c:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - scan
    - tid
    argTypes:
    - TableScanDesc
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 287
    functionName: table_tuple_get_latest_tid
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - errcode
    - ItemPointerGetBlockNumberNoCheck
    - TableAmRoutine*::tuple_tid_valid
    - ItemPointerGetOffsetNumberNoCheck
    - ereport
    - TableAmRoutine*::tuple_get_latest_tid
    - errmsg
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: void table_tuple_get_latest_tid(TableScanDesc scan, ItemPointer tid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_tuple_insert
      Src: /src/postgres/src/backend/access/table/tableam.c:304,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/table/tableam.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - slot
    argTypes:
    - Relation
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: simple_table_tuple_insert
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - GetCurrentCommandId
    - table_tuple_insert
    linkageType: ''
    returnType: void
    signature: void simple_table_tuple_insert(Relation rel, TupleTableSlot *slot)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: table_tuple_delete
      Src: /src/postgres/src/backend/access/table/tableam.c:321,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/table/tableam.c:322,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:331,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:339,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:343,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:347,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - rel
    - tid
    - snapshot
    argTypes:
    - Relation
    - ItemPointer
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 350
    functionName: simple_table_tuple_delete
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - elog
    - GetCurrentCommandId
    - table_tuple_delete
    linkageType: ''
    returnType: void
    signature: void simple_table_tuple_delete(Relation rel, ItemPointer tid, Snapshot
      snapshot)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: table_tuple_update
      Src: /src/postgres/src/backend/access/table/tableam.c:370,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/table/tableam.c:371,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:380,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:388,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:392,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:396,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - rel
    - otid
    - slot
    - snapshot
    - update_indexes
    argTypes:
    - Relation
    - ItemPointer
    - TupleTableSlot*
    - Snapshot
    - TU_UpdateIndexes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 399
    functionName: simple_table_tuple_update
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - elog
    - GetCurrentCommandId
    - table_tuple_update
    linkageType: ''
    returnType: void
    signature: "void simple_table_tuple_update(Relation rel, ItemPointer otid,\n\t\t\t\t\t\t
      \ TupleTableSlot *slot,\n\t\t\t\t\t\t  Snapshot snapshot,\n\t\t\t\t\t\t  TU_UpdateIndexes
      *update_indexes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 411
    functionName: table_block_parallelscan_estimate
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size
    signature: Size table_block_parallelscan_estimate(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/table/tableam.c:419,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/table/tableam.c:422,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/table/tableam.c:424,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/table/tableam.c:427,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - rel
    - pscan
    argTypes:
    - Relation
    - ParallelTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 413
    functionDepth: 2
    functionLinenumber: 413
    functionLinenumberEnd: 430
    functionName: table_block_parallelscan_initialize
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - pg_atomic_init_u64
    - RelationUsesLocalBuffers
    - SpinLockInit
    - RelationGetNumberOfBlocks
    linkageType: ''
    returnType: Size
    signature: Size table_block_parallelscan_initialize(Relation rel, ParallelTableScanDesc
      pscan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/table/tableam.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - pscan
    argTypes:
    - Relation
    - ParallelTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 432
    functionDepth: 2
    functionLinenumber: 432
    functionLinenumberEnd: 438
    functionName: table_block_parallelscan_reinitialize
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - pg_atomic_write_u64
    linkageType: ''
    returnType: void
    signature: void table_block_parallelscan_reinitialize(Relation rel, ParallelTableScanDesc
      pscan)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/access/table/tableam.c:459,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/table/tableam.c:466,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/table/tableam.c:470,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/table/tableam.c:503,1
    - Dst: ss_get_location
      Src: /src/postgres/src/backend/access/table/tableam.c:504,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/table/tableam.c:508,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/table/tableam.c:526,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/table/tableam.c:526,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/table/tableam.c:535,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 5
    argNames:
    - rel
    - pbscanwork
    - pbscan
    - startblock
    - numblocks
    argTypes:
    - Relation
    - ParallelBlockTableScanWorker
    - ParallelBlockTableScanDesc
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 452
    functionDepth: 3
    functionLinenumber: 452
    functionLinenumberEnd: 537
    functionName: table_block_parallelscan_startblock_init
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 1
    functionsReached:
    - ss_get_location
    - memset
    - SpinLockRelease
    - Max
    - Min
    - SpinLockAcquire
    - StaticAssertDecl
    - pg_nextpower2_32
    linkageType: ''
    returnType: void
    signature: "void table_block_parallelscan_startblock_init(Relation rel,\n\t\t\t\t\t\t\t\t\t\t
      ParallelBlockTableScanWorker pbscanwork,\n\t\t\t\t\t\t\t\t\t\t ParallelBlockTableScanDesc
      pbscan,\n\t\t\t\t\t\t\t\t\t\t BlockNumber startblock,\n\t\t\t\t\t\t\t\t\t\t
      BlockNumber numblocks)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_add_u64
      Src: /src/postgres/src/backend/access/table/tableam.c:633,1
    - Dst: ss_report_location
      Src: /src/postgres/src/backend/access/table/tableam.c:659,1
    - Dst: ss_report_location
      Src: /src/postgres/src/backend/access/table/tableam.c:661,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - rel
    - pbscanwork
    - pbscan
    argTypes:
    - Relation
    - ParallelBlockTableScanWorker
    - ParallelBlockTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 547
    functionDepth: 3
    functionLinenumber: 547
    functionLinenumberEnd: 665
    functionName: table_block_parallelscan_nextpage
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_add_u64
    - ss_report_location
    linkageType: ''
    returnType: BlockNumber
    signature: "BlockNumber table_block_parallelscan_nextpage(Relation rel,\n\t\t\t\t\t\t\t\t
      \ ParallelBlockTableScanWorker pbscanwork,\n\t\t\t\t\t\t\t\t  ParallelBlockTableScanDesc
      pbscan)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/table/tableam.c:689,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/table/tableam.c:689,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/table/tableam.c:692,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/table/tableam.c:692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rel
    - forkNumber
    argTypes:
    - Relation
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 680
    functionDepth: 2
    functionLinenumber: 680
    functionLinenumberEnd: 695
    functionName: table_block_relation_size
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - RelationGetSmgr
    - smgrnblocks
    linkageType: ''
    returnType: uint64
    signature: uint64 table_block_relation_size(Relation rel, ForkNumber forkNumber)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/table/tableam.c:731,1
    - Dst: RelationGetFillFactor
      Src: /src/postgres/src/backend/access/table/tableam.c:802,1
    - Dst: get_rel_data_width
      Src: /src/postgres/src/backend/access/table/tableam.c:804,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/access/table/tableam.c:809,1
    - Dst: rint
      Src: /src/postgres/src/backend/access/table/tableam.c:811,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 7
    argNames:
    - rel
    - attr_widths
    - pages
    - tuples
    - allvisfrac
    - overhead_bytes_per_tuple
    - usable_bytes_per_page
    argTypes:
    - Relation
    - int32*
    - BlockNumber*
    - double*
    - double*
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 717
    functionDepth: 1
    functionLinenumber: 717
    functionLinenumberEnd: 825
    functionName: table_block_relation_estimate_size
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 1
    functionsReached:
    - RelationGetFillFactor
    - clamp_row_est
    - rint
    - RelationGetNumberOfBlocks
    - get_rel_data_width
    linkageType: ''
    returnType: void
    signature: "void table_block_relation_estimate_size(Relation rel, int32 *attr_widths,\n\t\t\t\t\t\t\t\t
      \  BlockNumber *pages, double *tuples,\n\t\t\t\t\t\t\t\t   double *allvisfrac,\n\t\t\t\t\t\t\t\t
      \  Size overhead_bytes_per_tuple,\n\t\t\t\t\t\t\t\t   Size usable_bytes_per_page)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidFunctionCall0
      Src: /src/postgres/src/backend/access/table/tableamapi.c:32,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/tableamapi.c:33,1
    - Dst: IsA
      Src: /src/postgres/src/backend/access/table/tableamapi.c:35,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableamapi.c:36,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:44,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:45,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:46,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:47,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:49,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:50,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:51,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:53,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:54,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:55,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:56,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:58,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:59,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:60,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:61,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:62,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:64,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:70,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:71,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:73,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:74,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:75,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:76,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:78,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:79,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:80,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:81,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:82,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:83,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:84,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:85,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:86,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:88,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:91,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:93,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:94,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 43
    argCount: 1
    argNames:
    - amhandler
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 97
    functionName: GetTableAmRoutine
    functionSourceFile: /src/postgres/src/backend/access/table/tableamapi.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - OidFunctionCall0
    - IsA
    - DatumGetPointer
    linkageType: ''
    returnType: TableAmRoutine
    signature: 'TableAmRoutine *

      GetTableAmRoutine(Oid amhandler)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/table/tableamapi.c:105,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/table/tableamapi.c:110,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/table/tableamapi.c:112,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/access/table/tableamapi.c:122,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/table/tableamapi.c:124,1
    - Dst: get_table_am_oid
      Src: /src/postgres/src/backend/access/table/tableamapi.c:124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/table/tableamapi.c:133,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/table/tableamapi.c:134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/table/tableamapi.c:135,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/table/tableamapi.c:140,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 148
    functionName: check_default_table_access_method
    functionSourceFile: /src/postgres/src/backend/access/table/tableamapi.c
    functionUses: 0
    functionsReached:
    - errcode
    - IsTransactionState
    - ereport
    - get_table_am_oid
    - strlen
    - errmsg
    - OidIsValid
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_default_table_access_method(char **newval, void **extra,
      GucSource source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/access/table/table.c:44,1
    - Dst: validate_relation_as_table
      Src: /src/postgres/src/backend/access/table/table.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 49
    functionName: table_open
    functionSourceFile: /src/postgres/src/backend/access/table/table.c
    functionUses: 15
    functionsReached:
    - relation_open
    - validate_relation_as_table
    linkageType: ''
    returnType: Relation
    signature: Relation table_open(Oid relationId, LOCKMODE lockmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: try_relation_open
      Src: /src/postgres/src/backend/access/table/table.c:64,1
    - Dst: validate_relation_as_table
      Src: /src/postgres/src/backend/access/table/table.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 73
    functionName: try_table_open
    functionSourceFile: /src/postgres/src/backend/access/table/table.c
    functionUses: 0
    functionsReached:
    - validate_relation_as_table
    - try_relation_open
    linkageType: ''
    returnType: Relation
    signature: Relation try_table_open(Oid relationId, LOCKMODE lockmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: relation_openrv
      Src: /src/postgres/src/backend/access/table/table.c:87,1
    - Dst: validate_relation_as_table
      Src: /src/postgres/src/backend/access/table/table.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - relation
    - lockmode
    argTypes:
    - RangeVar*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: table_openrv
    functionSourceFile: /src/postgres/src/backend/access/table/table.c
    functionUses: 0
    functionsReached:
    - validate_relation_as_table
    - relation_openrv
    linkageType: ''
    returnType: Relation
    signature: Relation table_openrv(const RangeVar *relation, LOCKMODE lockmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: relation_openrv_extended
      Src: /src/postgres/src/backend/access/table/table.c:108,1
    - Dst: validate_relation_as_table
      Src: /src/postgres/src/backend/access/table/table.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - relation
    - lockmode
    - missing_ok
    argTypes:
    - RangeVar*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 114
    functionName: table_openrv_extended
    functionSourceFile: /src/postgres/src/backend/access/table/table.c
    functionUses: 0
    functionsReached:
    - validate_relation_as_table
    - relation_openrv_extended
    linkageType: ''
    returnType: Relation
    signature: "Relation table_openrv_extended(const RangeVar *relation, LOCKMODE
      lockmode,\n\t\t\t\t\t  bool missing_ok)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: relation_close
      Src: /src/postgres/src/backend/access/table/table.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - relation
    - lockmode
    argTypes:
    - Relation
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 129
    functionName: table_close
    functionSourceFile: /src/postgres/src/backend/access/table/table.c
    functionUses: 15
    functionsReached:
    - relation_close
    linkageType: ''
    returnType: void
    signature: void table_close(Relation relation, LOCKMODE lockmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/table/table.c:148,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/table/table.c:149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/table/table.c:150,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/table/table.c:151,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/access/table/table.c:152,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 3
    argCount: 1
    argNames:
    - r
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 153
    functionName: validate_relation_as_table
    functionSourceFile: /src/postgres/src/backend/access/table/table.c
    functionUses: 4
    functionsReached:
    - errdetail_relkind_not_supported
    - errcode
    - ereport
    - errmsg
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: void validate_relation_as_table(Relation r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/table/toast_helper.c:51,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:65,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:67,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/table/toast_helper.c:74,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/table/toast_helper.c:77,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/table/toast_helper.c:78,1
    - Dst: VARSIZE_EXTERNAL
      Src: /src/postgres/src/backend/access/table/toast_helper.c:79,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:105,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/table/toast_helper.c:137,1
    - Dst: detoast_attr
      Src: /src/postgres/src/backend/access/table/toast_helper.c:141,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/access/table/toast_helper.c:143,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/table/toast_helper.c:144,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/table/toast_helper.c:152,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 1
    argNames:
    - ttc
    argTypes:
    - ToastTupleContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 40
    functionDepth: 6
    functionLinenumber: 40
    functionLinenumberEnd: 162
    functionName: toast_tuple_init
    functionSourceFile: /src/postgres/src/backend/access/table/toast_helper.c
    functionUses: 1
    functionsReached:
    - detoast_external_attr
    - VARSIZE_EXTERNAL
    - VARSIZE_ANY
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - detoast_attr
    - TupleDescAttr
    - memcmp
    - VARATT_IS_EXTERNAL_ONDISK
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void toast_tuple_init(ToastTupleContext *ttc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/table/toast_helper.c:187,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/table/toast_helper.c:196,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/table/toast_helper.c:200,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:200,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/table/toast_helper.c:203,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:203,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 20
    argCount: 3
    argNames:
    - ttc
    - for_compression
    - check_main
    argTypes:
    - ToastTupleContext*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 219
    functionName: toast_tuple_find_biggest_attribute
    functionSourceFile: /src/postgres/src/backend/access/table/toast_helper.c
    functionUses: 1
    functionsReached:
    - MAXALIGN
    - VARATT_IS_EXTERNAL
    - VARATT_IS_COMPRESSED
    - TupleDescAttr
    - DatumGetPointer
    linkageType: ''
    returnType: int
    signature: "int toast_tuple_find_biggest_attribute(ToastTupleContext *ttc,\n\t\t\t\t\t\t\t\t
      \  bool for_compression, bool check_main)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: toast_compress_datum
      Src: /src/postgres/src/backend/access/table/toast_helper.c:233,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:235,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/table/toast_helper.c:239,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:239,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/table/toast_helper.c:242,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ttc
    - attribute
    argTypes:
    - ToastTupleContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 226
    functionDepth: 5
    functionLinenumber: 226
    functionLinenumberEnd: 250
    functionName: toast_tuple_try_compression
    functionSourceFile: /src/postgres/src/backend/access/table/toast_helper.c
    functionUses: 1
    functionsReached:
    - pfree
    - VARSIZE
    - DatumGetPointer
    - toast_compress_datum
    linkageType: ''
    returnType: void
    signature: void toast_tuple_try_compression(ToastTupleContext *ttc, int attribute)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toast_save_datum
      Src: /src/postgres/src/backend/access/table/toast_helper.c:263,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/table/toast_helper.c:266,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ttc
    - attribute
    - options
    argTypes:
    - ToastTupleContext*
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 255
    functionDepth: 7
    functionLinenumber: 255
    functionLinenumberEnd: 269
    functionName: toast_tuple_externalize
    functionSourceFile: /src/postgres/src/backend/access/table/toast_helper.c
    functionUses: 1
    functionsReached:
    - toast_save_datum
    - pfree
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void toast_tuple_externalize(ToastTupleContext *ttc, int attribute,
      uint32 options)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/table/toast_helper.c:292,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:292,1
    - Dst: toast_delete_datum
      Src: /src/postgres/src/backend/access/table/toast_helper.c:308,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - ttc
    argTypes:
    - ToastTupleContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 274
    functionDepth: 7
    functionLinenumber: 274
    functionLinenumberEnd: 311
    functionName: toast_tuple_cleanup
    functionSourceFile: /src/postgres/src/backend/access/table/toast_helper.c
    functionUses: 1
    functionsReached:
    - pfree
    - toast_delete_datum
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void toast_tuple_cleanup(ToastTupleContext *ttc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/table/toast_helper.c:327,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/table/toast_helper.c:333,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/toast_helper.c:333,1
    - Dst: toast_delete_datum
      Src: /src/postgres/src/backend/access/table/toast_helper.c:334,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - rel
    - values
    - isnull
    - is_speculative
    argTypes:
    - Relation
    - Datum*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 317
    functionDepth: 7
    functionLinenumber: 317
    functionLinenumberEnd: 337
    functionName: toast_delete_external
    functionSourceFile: /src/postgres/src/backend/access/table/toast_helper.c
    functionUses: 1
    functionsReached:
    - TupleDescCompactAttr
    - toast_delete_datum
    - VARATT_IS_EXTERNAL_ONDISK
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void toast_delete_external(Relation rel, const Datum *values, const
      bool *isnull,\n\t\t\t\t\t  bool is_speculative)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:64,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:66,1
    - Dst: pgstat_progress_start_command
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:76,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:77,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - next
    - estimate_backup_size
    - incremental
    argTypes:
    - bbsink*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 84
    functionName: bbsink_progress_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0_object
    - pgstat_progress_start_command
    - pgstat_progress_update_param
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      bbsink_progress_new(bbsink *next, bool estimate_backup_size, bool incremental)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:109,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:110,1
    - Dst: bbsink_forward_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: bbsink_progress_begin_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - list_length
    - bbsink_forward_begin_backup
    - pgstat_progress_update_multi_param
    linkageType: ''
    returnType: void
    signature: void bbsink_progress_begin_backup(bbsink *sink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:132,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:133,1
    - Dst: bbsink_forward_end_archive
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 146
    functionName: bbsink_progress_end_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - list_length
    - bbsink_forward_end_archive
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void bbsink_progress_end_archive(bbsink *sink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bbsink_forward_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:170,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 186
    functionName: bbsink_progress_archive_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - bbsink_forward_archive_contents
    - pgstat_progress_update_multi_param
    linkageType: ''
    returnType: void
    signature: void bbsink_progress_archive_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_progress_end_command
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:194,1
    - Dst: bbsink_forward_cleanup
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: bbsink_progress_cleanup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - pgstat_progress_end_command
    - bbsink_forward_cleanup
    linkageType: ''
    returnType: void
    signature: void bbsink_progress_cleanup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: basebackup_progress_wait_checkpoint
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void basebackup_progress_wait_checkpoint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 216
    functionName: basebackup_progress_estimate_backup_size
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void basebackup_progress_estimate_backup_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:237,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - bbsink_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 239
    functionName: basebackup_progress_wait_wal_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - list_length
    - pgstat_progress_update_multi_param
    linkageType: ''
    returnType: void
    signature: void basebackup_progress_wait_wal_archive(bbsink_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 249
    functionName: basebackup_progress_transfer_wal
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void basebackup_progress_transfer_wal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:42,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:45,1
    - Dst: GetWalSummaries
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:47,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:50,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:53,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:55,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:56,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:57,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:59,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 33
    functionDepth: 6
    functionLinenumber: 33
    functionLinenumberEnd: 64
    functionName: pg_available_wal_summaries
    functionSourceFile: /src/postgres/src/backend/backup/walsummaryfuncs.c
    functionUses: 0
    functionsReached:
    - InitMaterializedSRF
    - heap_form_tuple
    - GetWalSummaries
    - CHECK_FOR_INTERRUPTS
    - lfirst
    - memset
    - LSNGetDatum
    - tuplestore_puttuple
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_available_wal_summaries(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:50,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:53,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:55,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:56,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:57,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:59,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 6
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/walsummaryfuncs.c
    functionUses: 28
    functionsReached:
    - heap_form_tuple
    - CHECK_FOR_INTERRUPTS
    - lfirst
    - LSNGetDatum
    - tuplestore_puttuple
    - Int64GetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(lc, wslist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:84,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:86,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:93,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:95,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:96,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:97,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:101,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:102,1
    - Dst: OpenWalSummaryFile
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:104,1
    - Dst: CreateBlockRefTableReader
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:105,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:106,1
    - Dst: BlockRefTableReaderNextRelation
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:110,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:116,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:118,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:119,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:120,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:121,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:131,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:133,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:134,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:136,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:137,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:146,1
    - Dst: BlockRefTableReaderGetBlocks
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:148,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:157,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:160,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:162,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:163,1
    - Dst: DestroyBlockRefTableReader
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:169,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:170,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 70
    functionDepth: 6
    functionLinenumber: 70
    functionLinenumberEnd: 173
    functionName: pg_wal_summary_contents
    functionSourceFile: /src/postgres/src/backend/backup/walsummaryfuncs.c
    functionUses: 0
    functionsReached:
    - BlockRefTableReaderNextRelation
    - BlockRefTableReaderGetBlocks
    - errcode
    - heap_form_tuple
    - BlockNumberIsValid
    - CreateBlockRefTableReader
    - OpenWalSummaryFile
    - PG_GETARG_INT64
    - errmsg
    - FilePathName
    - ObjectIdGetDatum
    - DestroyBlockRefTableReader
    - ereport
    - CHECK_FOR_INTERRUPTS
    - FileClose
    - memset
    - PG_GETARG_LSN
    - Int64GetDatum
    - Int16GetDatum
    - InitMaterializedSRF
    - tuplestore_puttuple
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_wal_summary_contents(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetWalSummarizerState
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:190,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:193,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:194,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:196,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:198,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:199,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:200,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:205,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:207,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:209,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 178
    functionDepth: 6
    functionLinenumber: 178
    functionLinenumberEnd: 210
    functionName: pg_get_wal_summarizer_state
    functionSourceFile: /src/postgres/src/backend/backup/walsummaryfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - Int32GetDatum
    - heap_form_tuple
    - PG_RETURN_DATUM
    - HeapTupleGetDatum
    - memset
    - GetWalSummarizerState
    - LSNGetDatum
    - get_call_result_type
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_wal_summarizer_state(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:65,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:66,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:67,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:73,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:76,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - next
    - compress
    argTypes:
    - bbsink*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 85
    functionName: bbsink_lz4_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_lz4.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - errcode
    - Assert
    - ereport
    - errmsg
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      bbsink_lz4_new(bbsink *next, pg_compress_specification *compress)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:100,1
    - Dst: palloc
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:108,1
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:116,1
    - Dst: bbsink_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 126
    functionName: bbsink_lz4_begin_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_lz4.c
    functionUses: 0
    functionsReached:
    - bbsink_begin_backup
    - LZ4F_compressBound
    - memset
    - palloc
    linkageType: ''
    returnType: void
    signature: void bbsink_lz4_begin_backup(bbsink *sink)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_createCompressionContext
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:139,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:140,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:141,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:142,1
    - Dst: LZ4F_compressBegin
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:145,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:150,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:151,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:152,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:163,1
    - Dst: bbsink_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:164,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - sink
    - archive_name
    argTypes:
    - bbsink*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 166
    functionName: bbsink_lz4_begin_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_lz4.c
    functionUses: 0
    functionsReached:
    - elog
    - LZ4F_getErrorName
    - LZ4F_createCompressionContext
    - bbsink_begin_archive
    - Assert
    - pfree
    - psprintf
    - LZ4F_compressBegin
    - LZ4F_isError
    linkageType: ''
    returnType: void
    signature: void bbsink_lz4_begin_archive(bbsink *sink, const char *archive_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:186,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:196,1
    - Dst: LZ4F_compressUpdate
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:203,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:210,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:211,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - sink
    - avail_in
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 218
    functionName: bbsink_lz4_archive_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_lz4.c
    functionUses: 0
    functionsReached:
    - elog
    - LZ4F_getErrorName
    - bbsink_archive_contents
    - LZ4F_compressUpdate
    - LZ4F_compressBound
    - LZ4F_isError
    linkageType: ''
    returnType: void
    signature: void bbsink_lz4_archive_contents(bbsink *sink, size_t avail_in)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_compressBound
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:234,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:236,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:241,1
    - Dst: LZ4F_compressEnd
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:245,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:250,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:251,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:252,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:258,1
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:262,1
    - Dst: bbsink_forward_end_archive
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 267
    functionName: bbsink_lz4_end_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_lz4.c
    functionUses: 0
    functionsReached:
    - elog
    - LZ4F_getErrorName
    - LZ4F_compressEnd
    - LZ4F_freeCompressionContext
    - Assert
    - bbsink_forward_end_archive
    - bbsink_archive_contents
    - LZ4F_compressBound
    - LZ4F_isError
    linkageType: ''
    returnType: void
    signature: void bbsink_lz4_end_archive(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:276,1
    - Dst: bbsink_manifest_contents
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 278
    functionName: bbsink_lz4_manifest_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_lz4.c
    functionUses: 0
    functionsReached:
    - memcpy
    - bbsink_manifest_contents
    linkageType: ''
    returnType: void
    signature: void bbsink_lz4_manifest_contents(bbsink *sink, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/backend/backup/basebackup_lz4.c:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 294
    functionName: bbsink_lz4_cleanup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_freeCompressionContext
    linkageType: ''
    returnType: void
    signature: void bbsink_lz4_cleanup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:110,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:116,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - send_to_client
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 120
    functionName: bbsink_copystream_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - UINT64CONST
    - GetCurrentTimestamp
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      bbsink_copystream_new(bool send_to_client)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:143,1
    - Dst: SendXlogRecPtrResult
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:149,1
    - Dst: SendTablespaceList
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:152,1
    - Dst: pq_puttextmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:155,1
    - Dst: SendCopyOutResponse
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 159
    functionName: bbsink_copystream_begin_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached:
    - pq_puttextmessage
    - SendCopyOutResponse
    - palloc
    - SendTablespaceList
    - SendXlogRecPtrResult
    linkageType: ''
    returnType: void
    signature: void bbsink_copystream_begin_backup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_nth
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:171,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:172,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:173,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:174,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:175,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - sink
    - archive_name
    argTypes:
    - bbsink*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 177
    functionName: bbsink_copystream_begin_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached:
    - pq_beginmessage
    - pq_sendstring
    - pq_endmessage
    - pq_sendbyte
    - list_nth
    linkageType: ''
    returnType: void
    signature: void bbsink_copystream_begin_archive(bbsink *sink, const char *archive_name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:194,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:202,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:210,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:223,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:224,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:225,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:226,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:227,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 182
    functionDepth: 3
    functionLinenumber: 182
    functionLinenumberEnd: 230
    functionName: bbsink_copystream_archive_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached:
    - pq_beginmessage
    - GetCurrentTimestamp
    - pq_endmessage
    - pq_putmessage
    - pq_sendint64
    - pq_flush_if_writable
    - TimestampDifferenceMilliseconds
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void bbsink_copystream_archive_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:248,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:249,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:250,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:251,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:252,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 240
    functionDepth: 3
    functionLinenumber: 240
    functionLinenumberEnd: 254
    functionName: bbsink_copystream_end_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached:
    - pq_beginmessage
    - GetCurrentTimestamp
    - pq_endmessage
    - pq_sendint64
    - pq_flush_if_writable
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void bbsink_copystream_end_archive(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:264,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:265,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 259
    functionDepth: 3
    functionLinenumber: 259
    functionLinenumberEnd: 267
    functionName: bbsink_copystream_begin_manifest
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached:
    - pq_beginmessage
    - pq_sendbyte
    - pq_endmessage
    linkageType: ''
    returnType: void
    signature: void bbsink_copystream_begin_manifest(bbsink *sink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 282
    functionName: bbsink_copystream_manifest_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached:
    - pq_putmessage
    linkageType: ''
    returnType: void
    signature: void bbsink_copystream_manifest_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 291
    functionName: bbsink_copystream_end_manifest
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bbsink_copystream_end_manifest(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SendCopyDone
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:300,1
    - Dst: SendXlogRecPtrResult
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - sink
    - endptr
    - endtli
    argTypes:
    - bbsink*
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 302
    functionName: bbsink_copystream_end_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached:
    - SendCopyDone
    - SendXlogRecPtrResult
    linkageType: ''
    returnType: void
    signature: "void bbsink_copystream_end_backup(bbsink *sink, XLogRecPtr endptr,\n\t\t\t\t\t\t\t
      TimeLineID endtli)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 311
    functionName: bbsink_copystream_cleanup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bbsink_copystream_cleanup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:321,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:322,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:323,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 316
    functionDepth: 3
    functionLinenumber: 316
    functionLinenumberEnd: 325
    functionName: SendCopyOutResponse
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 1
    functionsReached:
    - pq_beginmessage
    - pq_sendbyte
    - pq_endmessage
    - pq_sendint16
    linkageType: ''
    returnType: void
    signature: void SendCopyOutResponse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 334
    functionName: SendCopyDone
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 1
    functionsReached:
    - pq_putemptymessage
    linkageType: ''
    returnType: void
    signature: void SendCopyDone(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:349,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:351,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:352,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:358,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:360,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:363,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:366,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:366,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:366,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:367,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:368,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:370,1
    - Dst: pq_puttextmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - ptr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 340
    functionDepth: 5
    functionLinenumber: 340
    functionLinenumberEnd: 374
    functionName: SendXlogRecPtrResult
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 2
    functionsReached:
    - do_tup_output
    - CreateTemplateTupleDesc
    - CreateDestReceiver
    - pq_puttextmessage
    - TupleDescFinalize
    - psprintf
    - begin_tup_output_tupdesc
    - CStringGetTextDatum
    - TupleDescInitBuiltinEntry
    - end_tup_output
    - Int64GetDatum
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void SendXlogRecPtrResult(XLogRecPtr ptr, TimeLineID tli)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:387,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:389,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:390,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:391,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:392,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:393,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:396,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:401,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:413,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:414,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:417,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:421,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:424,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - tablespaces
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 379
    functionDepth: 5
    functionLinenumber: 379
    functionLinenumberEnd: 425
    functionName: SendTablespaceList
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 1
    functionsReached:
    - do_tup_output
    - CreateTemplateTupleDesc
    - CreateDestReceiver
    - TupleDescFinalize
    - begin_tup_output_tupdesc
    - lfirst
    - CStringGetTextDatum
    - TupleDescInitBuiltinEntry
    - end_tup_output
    - ObjectIdGetDatum
    - Int64GetDatum
    linkageType: ''
    returnType: void
    signature: void SendTablespaceList(List *tablespaces)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:401,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:413,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:414,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:417,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:421,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 422
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 28
    functionsReached:
    - do_tup_output
    - lfirst
    - CStringGetTextDatum
    - ObjectIdGetDatum
    - Int64GetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tablespaces)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/backup/walsummary.c:49,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/backup/walsummary.c:50,1
    - Dst: IsWalSummaryFilename
      Src: /src/postgres/src/backend/backup/walsummary.c:59,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/backup/walsummary.c:61,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/walsummary.c:70,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/walsummary.c:72,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/backup/walsummary.c:76,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/walsummary.c:80,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/backup/walsummary.c:82,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 3
    argNames:
    - tli
    - start_lsn
    - end_lsn
    argTypes:
    - TimeLineID
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 85
    functionName: GetWalSummaries
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - sscanf
    - AllocateDir
    - lappend
    - FreeDir
    - IsWalSummaryFilename
    - palloc_object
    - ReadDir
    linkageType: ''
    returnType: List
    signature: 'List *

      GetWalSummaries(TimeLineID tli, XLogRecPtr start_lsn, XLogRecPtr end_lsn)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/walsummary.c:109,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/walsummary.c:114,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/walsummary.c:116,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/walsummary.c:120,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 10
    argCount: 4
    argNames:
    - wslist
    - tli
    - start_lsn
    - end_lsn
    argTypes:
    - List*
    - TimeLineID
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 124
    functionName: FilterWalSummaries
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - lfirst
    - lappend
    linkageType: ''
    returnType: List
    signature: "List *\nFilterWalSummaries(List *wslist, TimeLineID tli,\n\t\t\t\t
      \  XLogRecPtr start_lsn, XLogRecPtr end_lsn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/walsummary.c:109,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/walsummary.c:114,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/walsummary.c:116,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/walsummary.c:120,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 121
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 28
    functionsReached:
    - XLogRecPtrIsValid
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, wslist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_copy
      Src: /src/postgres/src/backend/backup/walsummary.c:152,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/backup/walsummary.c:153,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/walsummary.c:164,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - wslist
    - start_lsn
    - end_lsn
    - missing_lsn
    argTypes:
    - List*
    - XLogRecPtr
    - XLogRecPtr
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 195
    functionName: WalSummariesAreComplete
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 0
    functionsReached:
    - lfirst
    - list_copy
    - list_sort
    linkageType: ''
    returnType: bool
    signature: "bool WalSummariesAreComplete(List *wslist, XLogRecPtr start_lsn,\n\t\t\t\t\t\tXLogRecPtr
      end_lsn, XLogRecPtr *missing_lsn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/walsummary.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 186
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 28
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, wslist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/walsummary.c:210,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/walsummary.c:213,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/walsummary.c:214,1
    - Dst: PathNameOpenFile
      Src: /src/postgres/src/backend/backup/walsummary.c:216,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummary.c:218,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/walsummary.c:219,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/walsummary.c:220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ws
    - missing_ok
    argTypes:
    - WalSummaryFile*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 223
    functionName: OpenWalSummaryFile
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 1
    functionsReached:
    - PathNameOpenFile
    - LSN_FORMAT_ARGS
    - ereport
    - errmsg
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: File
    signature: File OpenWalSummaryFile(WalSummaryFile *ws, bool missing_ok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/walsummary.c:235,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/walsummary.c:238,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/walsummary.c:239,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/walsummary.c:241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummary.c:245,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/walsummary.c:246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/walsummary.c:247,1
    - Dst: unlink
      Src: /src/postgres/src/backend/backup/walsummary.c:251,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummary.c:252,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/walsummary.c:253,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/walsummary.c:254,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummary.c:255,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/walsummary.c:256,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ws
    - cutoff_time
    argTypes:
    - WalSummaryFile*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 257
    functionName: RemoveWalSummaryIfOlderThan
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 0
    functionsReached:
    - errcode_for_file_access
    - errmsg_internal
    - unlink
    - LSN_FORMAT_ARGS
    - ereport
    - errmsg
    - lstat
    - snprintf
    linkageType: ''
    returnType: void
    signature: void RemoveWalSummaryIfOlderThan(WalSummaryFile *ws, time_t cutoff_time)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/backend/backup/walsummary.c:265,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/walsummary.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 267
    functionName: IsWalSummaryFilename
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 1
    functionsReached:
    - strspn
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool IsWalSummaryFilename(char *filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FileRead
      Src: /src/postgres/src/backend/backup/walsummary.c:278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummary.c:281,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/walsummary.c:282,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/walsummary.c:283,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/walsummary.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - wal_summary_io
    - data
    - length
    argTypes:
    - void*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 288
    functionName: ReadWalSummary
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 0
    functionsReached:
    - ereport
    - FileRead
    - errmsg
    - FilePathName
    - errcode_for_file_access
    linkageType: ''
    returnType: int
    signature: int ReadWalSummary(void *wal_summary_io, void *data, int length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FileWrite
      Src: /src/postgres/src/backend/backup/walsummary.c:299,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummary.c:302,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/walsummary.c:303,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/walsummary.c:304,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/walsummary.c:305,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummary.c:307,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/walsummary.c:308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/walsummary.c:309,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/walsummary.c:310,1
    - Dst: errhint
      Src: /src/postgres/src/backend/backup/walsummary.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - wal_summary_io
    - data
    - length
    argTypes:
    - void*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 316
    functionName: WriteWalSummary
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 0
    functionsReached:
    - ereport
    - FileWrite
    - errhint
    - errmsg
    - FilePathName
    - errcode_for_file_access
    linkageType: ''
    returnType: int
    signature: int WriteWalSummary(void *wal_summary_io, void *data, int length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/backup/walsummary.c:328,1
    - Dst: va_start
      Src: /src/postgres/src/backend/backup/walsummary.c:331,1
    - Dst: appendStringInfoVA
      Src: /src/postgres/src/backend/backup/walsummary.c:332,1
    - Dst: va_end
      Src: /src/postgres/src/backend/backup/walsummary.c:333,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/backup/walsummary.c:336,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummary.c:338,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/walsummary.c:339,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/walsummary.c:340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - callback_arg
    - fmt
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 341
    functionName: ReportWalSummaryError
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 0
    functionsReached:
    - va_end
    - errmsg_internal
    - errcode
    - va_start
    - appendStringInfoVA
    - initStringInfo
    - ereport
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void ReportWalSummaryError(void *callback_arg, char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/walsummary.c:349,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/walsummary.c:350,1
    - Dst: pg_cmp_u64
      Src: /src/postgres/src/backend/backup/walsummary.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 353
    functionName: ListComparatorForWalSummaryFiles
    functionSourceFile: /src/postgres/src/backend/backup/walsummary.c
    functionUses: 0
    functionsReached:
    - lfirst
    - pg_cmp_u64
    linkageType: ''
    returnType: int
    signature: int ListComparatorForWalSummaryFiles(const ListCell *a, const ListCell
      *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:69,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:70,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:71,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:77,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:80,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - next
    - compress
    argTypes:
    - bbsink*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 90
    functionName: bbsink_gzip_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - errcode
    - Assert
    - ereport
    - errmsg
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      bbsink_gzip_new(bbsink *next, pg_compress_specification *compress)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:104,1
    - Dst: bbsink_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 112
    functionName: bbsink_gzip_begin_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - bbsink_begin_backup
    - palloc
    linkageType: ''
    returnType: void
    signature: void bbsink_gzip_begin_backup(bbsink *sink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:125,1
    - Dst: deflateInit2
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:143,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:147,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:155,1
    - Dst: bbsink_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:156,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - sink
    - archive_name
    argTypes:
    - bbsink*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 158
    functionName: bbsink_gzip_begin_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - bbsink_begin_archive
    - psprintf
    - pfree
    - deflateInit2
    - ereport
    - memset
    - errmsg
    linkageType: ''
    returnType: void
    signature: void bbsink_gzip_begin_archive(bbsink *sink, const char *archive_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:186,1
    - Dst: deflate
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:203,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:205,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 221
    functionName: bbsink_gzip_archive_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - Assert
    - deflate
    - bbsink_archive_contents
    - elog
    linkageType: ''
    returnType: void
    signature: void bbsink_gzip_archive_contents(bbsink *sink, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:244,1
    - Dst: deflate
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:254,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:256,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:270,1
    - Dst: deflateEnd
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:275,1
    - Dst: bbsink_forward_end_archive
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 280
    functionName: bbsink_gzip_end_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - deflate
    - elog
    - Assert
    - bbsink_forward_end_archive
    - bbsink_archive_contents
    - deflateEnd
    linkageType: ''
    returnType: void
    signature: void bbsink_gzip_end_archive(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:289,1
    - Dst: bbsink_manifest_contents
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 291
    functionName: bbsink_gzip_manifest_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - memcpy
    - bbsink_manifest_contents
    linkageType: ''
    returnType: void
    signature: void bbsink_gzip_manifest_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - opaque
    - items
    - size
    argTypes:
    - void*
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 301
    functionName: gzip_palloc
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: void
    signature: 'void *

      gzip_palloc(void *opaque, unsigned items, unsigned size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - opaque
    - address
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 311
    functionName: gzip_pfree
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void gzip_pfree(void *opaque, void *address)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: deflateEnd
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 327
    functionName: bbsink_gzip_cleanup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - deflateEnd
    linkageType: ''
    returnType: void
    signature: void bbsink_gzip_cleanup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:26,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:27,1
    - Dst: bbsink_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 31
    functionName: bbsink_forward_begin_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_sink.c
    functionUses: 1
    functionsReached:
    - Assert
    - bbsink_begin_backup
    linkageType: ''
    returnType: void
    signature: void bbsink_forward_begin_backup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:39,1
    - Dst: bbsink_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - archive_name
    argTypes:
    - bbsink*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: bbsink_forward_begin_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_sink.c
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink_begin_archive
    linkageType: ''
    returnType: void
    signature: void bbsink_forward_begin_archive(bbsink *sink, const char *archive_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:56,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:57,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:58,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: bbsink_forward_archive_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_sink.c
    functionUses: 1
    functionsReached:
    - Assert
    - bbsink_archive_contents
    linkageType: ''
    returnType: void
    signature: void bbsink_forward_archive_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:68,1
    - Dst: bbsink_end_archive
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: bbsink_forward_end_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_sink.c
    functionUses: 3
    functionsReached:
    - Assert
    - bbsink_end_archive
    linkageType: ''
    returnType: void
    signature: void bbsink_forward_end_archive(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:78,1
    - Dst: bbsink_begin_manifest
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 80
    functionName: bbsink_forward_begin_manifest
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_sink.c
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink_begin_manifest
    linkageType: ''
    returnType: void
    signature: void bbsink_forward_begin_manifest(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:91,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:92,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:93,1
    - Dst: bbsink_manifest_contents
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: bbsink_forward_manifest_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_sink.c
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink_manifest_contents
    linkageType: ''
    returnType: void
    signature: void bbsink_forward_manifest_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:103,1
    - Dst: bbsink_end_manifest
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: bbsink_forward_end_manifest
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_sink.c
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink_end_manifest
    linkageType: ''
    returnType: void
    signature: void bbsink_forward_end_manifest(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:113,1
    - Dst: bbsink_end_backup
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - sink
    - endptr
    - endtli
    argTypes:
    - bbsink*
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 115
    functionName: bbsink_forward_end_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_sink.c
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink_end_backup
    linkageType: ''
    returnType: void
    signature: void bbsink_forward_end_backup(bbsink *sink, XLogRecPtr endptr, TimeLineID
      endtli)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:123,1
    - Dst: bbsink_cleanup
      Src: /src/postgres/src/backend/backup/basebackup_sink.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 125
    functionName: bbsink_forward_cleanup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_sink.c
    functionUses: 1
    functionsReached:
    - Assert
    - bbsink_cleanup
    linkageType: ''
    returnType: void
    signature: void bbsink_forward_cleanup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:64,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:65,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:66,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:71,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - next
    - compress
    argTypes:
    - bbsink*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 80
    functionName: bbsink_zstd_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_zstd.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - errcode
    - Assert
    - ereport
    - errmsg
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      bbsink_zstd_new(bbsink *next, pg_compress_specification *compress)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_createCCtx
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:95,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:97,1
    - Dst: ZSTD_CCtx_setParameter
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:99,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:101,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:102,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:103,1
    - Dst: ZSTD_CCtx_setParameter
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:112,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:114,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:115,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:116,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:117,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:118,1
    - Dst: ZSTD_CCtx_setParameter
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:123,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:126,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:127,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:128,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:129,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:130,1
    - Dst: palloc
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:137,1
    - Dst: ZSTD_compressBound
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:143,1
    - Dst: bbsink_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:151,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 152
    functionName: bbsink_zstd_begin_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_zstd.c
    functionUses: 0
    functionsReached:
    - elog
    - bbsink_begin_backup
    - ZSTD_createCCtx
    - ZSTD_isError
    - ZSTD_getErrorName
    - errcode
    - ZSTD_CCtx_setParameter
    - ereport
    - ZSTD_compressBound
    - errmsg
    - palloc
    linkageType: ''
    returnType: void
    signature: void bbsink_zstd_begin_backup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_CCtx_reset
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:168,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:176,1
    - Dst: bbsink_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:177,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - sink
    - archive_name
    argTypes:
    - bbsink*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 179
    functionName: bbsink_zstd_begin_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_zstd.c
    functionUses: 0
    functionsReached:
    - bbsink_begin_archive
    - Assert
    - pfree
    - psprintf
    - ZSTD_CCtx_reset
    linkageType: ''
    returnType: void
    signature: void bbsink_zstd_begin_archive(bbsink *sink, const char *archive_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_compressBound
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:201,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:209,1
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:217,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:220,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:221,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:223,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 225
    functionName: bbsink_zstd_archive_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_zstd.c
    functionUses: 0
    functionsReached:
    - elog
    - ZSTD_compressStream2
    - ZSTD_isError
    - ZSTD_getErrorName
    - bbsink_archive_contents
    - ZSTD_compressBound
    linkageType: ''
    returnType: void
    signature: void bbsink_zstd_archive_contents(bbsink *sink, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_compressBound
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:243,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:251,1
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:259,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:263,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:264,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:265,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:271,1
    - Dst: bbsink_forward_end_archive
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 276
    functionName: bbsink_zstd_end_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_zstd.c
    functionUses: 0
    functionsReached:
    - elog
    - ZSTD_compressStream2
    - ZSTD_isError
    - ZSTD_getErrorName
    - bbsink_forward_end_archive
    - bbsink_archive_contents
    - ZSTD_compressBound
    linkageType: ''
    returnType: void
    signature: void bbsink_zstd_end_archive(bbsink *sink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_freeCCtx
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:290,1
    - Dst: bbsink_forward_end_backup
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - sink
    - endptr
    - endtli
    argTypes:
    - bbsink*
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 295
    functionName: bbsink_zstd_end_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_zstd.c
    functionUses: 0
    functionsReached:
    - bbsink_forward_end_backup
    - ZSTD_freeCCtx
    linkageType: ''
    returnType: void
    signature: "void bbsink_zstd_end_backup(bbsink *sink, XLogRecPtr endptr,\n\t\t\t\t\t
      \  TimeLineID endtli)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:304,1
    - Dst: bbsink_manifest_contents
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 306
    functionName: bbsink_zstd_manifest_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_zstd.c
    functionUses: 0
    functionsReached:
    - memcpy
    - bbsink_manifest_contents
    linkageType: ''
    returnType: void
    signature: void bbsink_zstd_manifest_contents(bbsink *sink, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_freeCCtx
      Src: /src/postgres/src/backend/backup/basebackup_zstd.c:320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 323
    functionName: bbsink_zstd_cleanup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_freeCCtx
    linkageType: ''
    returnType: void
    signature: void bbsink_zstd_cleanup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:73,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:74,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - next
    - maxrate
    argTypes:
    - bbsink*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 90
    functionName: bbsink_throttle_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_throttle.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0_object
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      bbsink_throttle_new(bbsink *next, uint32 maxrate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bbsink_forward_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:101,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 3
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: bbsink_throttle_begin_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_throttle.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - bbsink_forward_begin_backup
    linkageType: ''
    returnType: void
    signature: void bbsink_throttle_begin_backup(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: throttle
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:113,1
    - Dst: bbsink_forward_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 116
    functionName: bbsink_throttle_archive_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_throttle.c
    functionUses: 0
    functionsReached:
    - bbsink_forward_archive_contents
    - throttle
    linkageType: ''
    returnType: void
    signature: void bbsink_throttle_archive_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: throttle
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:124,1
    - Dst: bbsink_forward_manifest_contents
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 127
    functionName: bbsink_throttle_manifest_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_throttle.c
    functionUses: 0
    functionsReached:
    - bbsink_forward_manifest_contents
    - throttle
    linkageType: ''
    returnType: void
    signature: void bbsink_throttle_manifest_contents(bbsink *sink, size_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:139,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:160,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:167,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:170,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:176,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:182,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:199,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - sink
    - increment
    argTypes:
    - bbsink_throttle*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 200
    functionName: throttle
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_throttle.c
    functionUses: 2
    functionsReached:
    - GetCurrentTimestamp
    - Assert
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - WaitLatch
    linkageType: ''
    returnType: void
    signature: void throttle(bbsink_throttle *sink, size_t increment)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup_server.c:62,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/backup/basebackup_server.c:69,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/backup/basebackup_server.c:70,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/backup/basebackup_server.c:70,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:71,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_server.c:72,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:73,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/backup/basebackup_server.c:74,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/backup/basebackup_server.c:76,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/backend/backup/basebackup_server.c:86,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:87,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_server.c:88,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:89,1
    - Dst: pg_check_dir
      Src: /src/postgres/src/backend/backup/basebackup_server.c:91,1
    - Dst: MakePGDirectory
      Src: /src/postgres/src/backend/backup/basebackup_server.c:99,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:100,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup_server.c:101,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:113,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_server.c:114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:121,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup_server.c:122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:123,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - next
    - pathname
    argTypes:
    - bbsink*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 128
    functionName: bbsink_server_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_server.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - MakePGDirectory
    - GetUserId
    - has_privs_of_role
    - errcode
    - is_absolute_path
    - ereport
    - CommitTransactionCommand
    - pg_check_dir
    - StartTransactionCommand
    - errmsg
    - errdetail
    - errcode_for_file_access
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      bbsink_server_new(bbsink *next, char *pathname)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_server.c:139,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_server.c:140,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_server.c:142,1
    - Dst: PathNameOpenFile
      Src: /src/postgres/src/backend/backup/basebackup_server.c:144,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:147,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup_server.c:148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:149,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_server.c:151,1
    - Dst: bbsink_forward_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup_server.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - sink
    - archive_name
    argTypes:
    - bbsink*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 154
    functionName: bbsink_server_begin_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_server.c
    functionUses: 0
    functionsReached:
    - PathNameOpenFile
    - Assert
    - pfree
    - psprintf
    - ereport
    - bbsink_forward_begin_archive
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void bbsink_server_begin_archive(bbsink *sink, const char *archive_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FileWrite
      Src: /src/postgres/src/backend/backup/basebackup_server.c:165,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:171,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup_server.c:172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:173,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_server.c:174,1
    - Dst: errhint
      Src: /src/postgres/src/backend/backup/basebackup_server.c:175,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:177,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_server.c:178,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:179,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_server.c:180,1
    - Dst: errhint
      Src: /src/postgres/src/backend/backup/basebackup_server.c:182,1
    - Dst: bbsink_forward_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_server.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 159
    functionDepth: 3
    functionLinenumber: 159
    functionLinenumberEnd: 188
    functionName: bbsink_server_archive_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_server.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - FileWrite
    - errhint
    - errmsg
    - FilePathName
    - bbsink_forward_archive_contents
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void bbsink_server_archive_contents(bbsink *sink, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FileSync
      Src: /src/postgres/src/backend/backup/basebackup_server.c:204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:205,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup_server.c:206,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:207,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_server.c:208,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/backup/basebackup_server.c:212,1
    - Dst: bbsink_forward_end_archive
      Src: /src/postgres/src/backend/backup/basebackup_server.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 217
    functionName: bbsink_server_end_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_server.c
    functionUses: 0
    functionsReached:
    - bbsink_forward_end_archive
    - ereport
    - FileClose
    - errmsg
    - FileSync
    - FilePathName
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void bbsink_server_end_archive(bbsink *sink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_server.c:233,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_server.c:235,1
    - Dst: PathNameOpenFile
      Src: /src/postgres/src/backend/backup/basebackup_server.c:237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:240,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup_server.c:241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:242,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_server.c:244,1
    - Dst: bbsink_forward_begin_manifest
      Src: /src/postgres/src/backend/backup/basebackup_server.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 247
    functionName: bbsink_server_begin_manifest
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_server.c
    functionUses: 0
    functionsReached:
    - PathNameOpenFile
    - bbsink_forward_begin_manifest
    - Assert
    - pfree
    - psprintf
    - ereport
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void bbsink_server_begin_manifest(bbsink *sink)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FileWrite
      Src: /src/postgres/src/backend/backup/basebackup_server.c:258,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:264,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup_server.c:265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:266,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_server.c:267,1
    - Dst: errhint
      Src: /src/postgres/src/backend/backup/basebackup_server.c:268,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_server.c:270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_server.c:271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_server.c:272,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_server.c:273,1
    - Dst: errhint
      Src: /src/postgres/src/backend/backup/basebackup_server.c:275,1
    - Dst: bbsink_forward_manifest_contents
      Src: /src/postgres/src/backend/backup/basebackup_server.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 281
    functionName: bbsink_server_manifest_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_server.c
    functionUses: 0
    functionsReached:
    - bbsink_forward_manifest_contents
    - errcode
    - ereport
    - FileWrite
    - errhint
    - errmsg
    - FilePathName
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void bbsink_server_manifest_contents(bbsink *sink, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FileClose
      Src: /src/postgres/src/backend/backup/basebackup_server.c:294,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_server.c:302,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_server.c:303,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/backup/basebackup_server.c:304,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_server.c:305,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_server.c:306,1
    - Dst: bbsink_forward_end_manifest
      Src: /src/postgres/src/backend/backup/basebackup_server.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 309
    functionName: bbsink_server_end_manifest
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_server.c
    functionUses: 0
    functionsReached:
    - bbsink_forward_end_manifest
    - pfree
    - psprintf
    - FileClose
    - durable_rename
    linkageType: ''
    returnType: void
    signature: void bbsink_server_end_manifest(bbsink *sink)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - manifest
    argTypes:
    - backup_manifest_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 37
    functionName: IsManifestEnabled
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsManifestEnabled(backup_manifest_info *manifest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - manifest
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: AppendToManifest
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AppendToManifest(manifest, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/backup/backup_manifest.c:61,1
    - Dst: BufFileCreateTemp
      Src: /src/postgres/src/backend/backup/backup_manifest.c:68,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/backend/backup/backup_manifest.c:69,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/backend/backup/backup_manifest.c:70,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/backup_manifest.c:71,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/backend/backup/backup_manifest.c:72,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/backup/backup_manifest.c:75,1
    - Dst: AppendToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:81,1
    - Dst: GetSystemIdentifier
      Src: /src/postgres/src/backend/backup/backup_manifest.c:85,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - manifest
    - want_manifest
    - manifest_checksum_type
    argTypes:
    - backup_manifest_info*
    - backup_manifest_option
    - pg_checksum_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 86
    functionName: InitializeBackupManifest
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_cryptohash_create
    - pg_cryptohash_error
    - BufFileCreateTemp
    - AppendToManifest
    - GetSystemIdentifier
    - memset
    - UINT64CONST
    - pg_cryptohash_init
    linkageType: ''
    returnType: void
    signature: "void InitializeBackupManifest(backup_manifest_info *manifest,\n\t\t\t\t\t\t
      backup_manifest_option want_manifest,\n\t\t\t\t\t\t pg_checksum_type manifest_checksum_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/backend/backup/backup_manifest.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - manifest
    argTypes:
    - backup_manifest_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: FreeBackupManifest
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 0
    functionsReached:
    - pg_cryptohash_free
    linkageType: ''
    returnType: void
    signature: void FreeBackupManifest(backup_manifest_info *manifest)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsManifestEnabled
      Src: /src/postgres/src/backend/backup/backup_manifest.c:110,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/backup/backup_manifest.c:119,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/backup_manifest.c:121,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/backup/backup_manifest.c:133,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/backup/backup_manifest.c:136,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/backup/backup_manifest.c:140,1
    - Dst: strlen
      Src: /src/postgres/src/backend/backup/backup_manifest.c:147,1
    - Dst: pg_verify_mbstr
      Src: /src/postgres/src/backend/backup/backup_manifest.c:149,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/backup/backup_manifest.c:151,1
    - Dst: escape_json_with_len
      Src: /src/postgres/src/backend/backup/backup_manifest.c:152,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/backup/backup_manifest.c:153,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/backup/backup_manifest.c:157,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/backup/backup_manifest.c:158,1
    - Dst: hex_encode
      Src: /src/postgres/src/backend/backup/backup_manifest.c:159,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/backup/backup_manifest.c:161,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/backup/backup_manifest.c:164,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/backup/backup_manifest.c:172,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/backup/backup_manifest.c:173,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/backup/backup_manifest.c:174,1
    - Dst: pg_gmtime
      Src: /src/postgres/src/backend/backup/backup_manifest.c:175,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/backup/backup_manifest.c:176,1
    - Dst: pg_checksum_final
      Src: /src/postgres/src/backend/backup/backup_manifest.c:184,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/backup_manifest.c:186,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/backup/backup_manifest.c:189,1
    - Dst: pg_checksum_type_name
      Src: /src/postgres/src/backend/backup/backup_manifest.c:191,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/backup/backup_manifest.c:192,1
    - Dst: hex_encode
      Src: /src/postgres/src/backend/backup/backup_manifest.c:193,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/backup/backup_manifest.c:195,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/backup/backup_manifest.c:199,1
    - Dst: AppendStringToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:202,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/backup_manifest.c:205,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 6
    argNames:
    - manifest
    - spcoid
    - pathname
    - size
    - mtime
    - checksum_ctx
    argTypes:
    - backup_manifest_info*
    - Oid
    - char*
    - size_t
    - pg_time_t
    - pg_checksum_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 101
    functionDepth: 8
    functionLinenumber: 101
    functionLinenumberEnd: 206
    functionName: AddFileToBackupManifest
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 0
    functionsReached:
    - pg_checksum_final
    - elog
    - pg_gmtime
    - hex_encode
    - pfree
    - appendStringInfoString
    - OidIsValid
    - appendStringInfoChar
    - initStringInfo
    - strlen
    - AppendStringToManifest
    - IsManifestEnabled
    - appendStringInfo
    - pg_verify_mbstr
    - enlargeStringInfo
    - pg_strftime
    - pg_checksum_type_name
    - escape_json_with_len
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void AddFileToBackupManifest(backup_manifest_info *manifest, Oid spcoid,\n\t\t\t\t\t\tconst
      char *pathname, size_t size, pg_time_t mtime,\n\t\t\t\t\t\tpg_checksum_context
      *checksum_ctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsManifestEnabled
      Src: /src/postgres/src/backend/backup/backup_manifest.c:222,1
    - Dst: AppendStringToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:226,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/backup/backup_manifest.c:229,1
    - Dst: AppendStringToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:232,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/backup_manifest.c:236,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/backup_manifest.c:245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/backup_manifest.c:254,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/backup_manifest.c:255,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/backup_manifest.c:277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/backup_manifest.c:278,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/backup_manifest.c:279,1
    - Dst: AppendToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:283,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/backup_manifest.c:287,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/backup_manifest.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/backup_manifest.c:305,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/backup_manifest.c:306,1
    - Dst: AppendStringToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:310,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 5
    argNames:
    - manifest
    - startptr
    - starttli
    - endptr
    - endtli
    argTypes:
    - backup_manifest_info*
    - XLogRecPtr
    - TimeLineID
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 311
    functionName: AddWALInfoToBackupManifest
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 0
    functionsReached:
    - IsManifestEnabled
    - XLogRecPtrIsValid
    - readTimeLineHistory
    - ereport
    - AppendToManifest
    - lfirst
    - errmsg
    - AppendStringToManifest
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: "void AddWALInfoToBackupManifest(backup_manifest_info *manifest, XLogRecPtr
      startptr,\n\t\t\t\t\t\t   TimeLineID starttli, XLogRecPtr endptr,\n\t\t\t\t\t\t
      \  TimeLineID endtli)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/backup_manifest.c:236,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/backup_manifest.c:245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/backup_manifest.c:254,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/backup_manifest.c:255,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/backup_manifest.c:277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/backup_manifest.c:278,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/backup_manifest.c:279,1
    - Dst: AppendToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:283,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/backup_manifest.c:287,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/backup_manifest.c:288,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 298
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 28
    functionsReached:
    - XLogRecPtrIsValid
    - ereport
    - AppendToManifest
    - lfirst
    - errmsg
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void foreach(lc, timelines)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsManifestEnabled
      Src: /src/postgres/src/backend/backup/backup_manifest.c:323,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/backend/backup/backup_manifest.c:338,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/backup_manifest.c:340,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/backend/backup/backup_manifest.c:341,1
    - Dst: AppendStringToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:342,1
    - Dst: hex_encode
      Src: /src/postgres/src/backend/backup/backup_manifest.c:344,1
    - Dst: AppendStringToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:347,1
    - Dst: AppendStringToManifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:348,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/backup/backup_manifest.c:354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/backup_manifest.c:355,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/backup_manifest.c:356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/backup_manifest.c:357,1
    - Dst: bbsink_begin_manifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:363,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/backup_manifest.c:368,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/backup/backup_manifest.c:370,1
    - Dst: bbsink_manifest_contents
      Src: /src/postgres/src/backend/backup/backup_manifest.c:371,1
    - Dst: bbsink_end_manifest
      Src: /src/postgres/src/backend/backup/backup_manifest.c:374,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/backup/backup_manifest.c:377,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - manifest
    - sink
    argTypes:
    - backup_manifest_info*
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 378
    functionName: SendBackupManifest
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 0
    functionsReached:
    - elog
    - IsManifestEnabled
    - pg_cryptohash_final
    - BufFileSeek
    - hex_encode
    - bbsink_begin_manifest
    - BufFileClose
    - BufFileReadExact
    - pg_cryptohash_error
    - bbsink_end_manifest
    - ereport
    - errmsg
    - bbsink_manifest_contents
    - Min
    - AppendStringToManifest
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void SendBackupManifest(backup_manifest_info *manifest, bbsink *sink)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/backup/backup_manifest.c:386,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/backup_manifest.c:388,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/backend/backup/backup_manifest.c:391,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/backup_manifest.c:392,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/backend/backup/backup_manifest.c:393,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/backup/backup_manifest.c:395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - manifest
    - s
    argTypes:
    - backup_manifest_info*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 397
    functionName: AppendStringToManifest
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 3
    functionsReached:
    - elog
    - pg_cryptohash_update
    - Assert
    - pg_cryptohash_error
    - strlen
    - BufFileWrite
    linkageType: ''
    returnType: void
    signature: void AppendStringToManifest(backup_manifest_info *manifest, const char
      *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initialize_target_list
      Src: /src/postgres/src/backend/backup/basebackup_target.c:71,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_target.c:76,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup_target.c:78,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_target.c:98,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/backup/basebackup_target.c:99,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/backup/basebackup_target.c:100,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup_target.c:103,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_target.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - name
    - (*check_detail) (char *, char *)
    - (*get_sink) (bbsink *, void *)
    argTypes:
    - char*
    - void*
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 105
    functionName: BaseBackupAddTarget
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 0
    functionsReached:
    - strcmp
    - initialize_target_list
    - pstrdup
    - lappend
    - MemoryContextSwitchTo
    - lfirst
    - palloc_object
    linkageType: ''
    returnType: void
    signature: "void BaseBackupAddTarget(char *name,\n\t\t\t\t\tvoid *(*check_detail)
      (char *, char *),\n\t\t\t\t\tbbsink *(*get_sink) (bbsink *, void *))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_target.c:76,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup_target.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 91
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 28
    functionsReached:
    - lfirst
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach(lc, BaseBackupTargetTypeList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initialize_target_list
      Src: /src/postgres/src/backend/backup/basebackup_target.c:123,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_target.c:128,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup_target.c:130,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/backup/basebackup_target.c:135,1
    - Dst: BaseBackupTargetType*::check_detail
      Src: /src/postgres/src/backend/backup/basebackup_target.c:137,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_target.c:144,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_target.c:145,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_target.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - target
    - target_detail
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 150
    functionName: BaseBackupGetTargetHandle
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 0
    functionsReached:
    - BaseBackupTargetType*::check_detail
    - strcmp
    - initialize_target_list
    - errcode
    - ereport
    - lfirst
    - errmsg
    - palloc_object
    linkageType: ''
    returnType: BaseBackupTargetHandle
    signature: 'BaseBackupTargetHandle *

      BaseBackupGetTargetHandle(char *target, char *target_detail)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_target.c:128,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup_target.c:130,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/backup/basebackup_target.c:135,1
    - Dst: BaseBackupTargetType*::check_detail
      Src: /src/postgres/src/backend/backup/basebackup_target.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 141
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 28
    functionsReached:
    - BaseBackupTargetType*::check_detail
    - lfirst
    - strcmp
    - palloc_object
    linkageType: ''
    returnType: void
    signature: void foreach(lc, BaseBackupTargetTypeList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BaseBackupTargetHandle*::type::get_sink
      Src: /src/postgres/src/backend/backup/basebackup_target.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - handle
    - next_sink
    argTypes:
    - BaseBackupTargetHandle*
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: BaseBackupGetSink
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 0
    functionsReached:
    - BaseBackupTargetHandle*::type::get_sink
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      BaseBackupGetSink(BaseBackupTargetHandle *handle, bbsink *next_sink)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_target.c:177,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup_target.c:180,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_target.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 184
    functionName: initialize_target_list
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 2
    functionsReached:
    - lappend
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void initialize_target_list(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - next_sink
    - detail_arg
    argTypes:
    - bbsink*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 197
    functionName: blackhole_get_sink
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      blackhole_get_sink(bbsink *next_sink, void *detail_arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bbsink_server_new
      Src: /src/postgres/src/backend/backup/basebackup_target.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - next_sink
    - detail_arg
    argTypes:
    - bbsink*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 206
    functionName: server_get_sink
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 0
    functionsReached:
    - bbsink_server_new
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      server_get_sink(bbsink *next_sink, void *detail_arg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_target.c:216,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_target.c:217,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_target.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - target
    - target_detail
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 222
    functionName: reject_target_detail
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: 'void *

      reject_target_detail(char *target, char *target_detail)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_target.c:235,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_target.c:236,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_target.c:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - target
    - target_detail
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 241
    functionName: server_check_detail
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_target.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: 'void *

      server_check_detail(char *target, char *target_detail)'
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:259,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/backup/basebackup.c:263,1
    - Dst: InitializeBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:265,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup.c:271,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/backup/basebackup.c:272,1
    - Dst: basebackup_progress_wait_checkpoint
      Src: /src/postgres/src/backend/backup/basebackup.c:274,1
    - Dst: do_pg_backup_start
      Src: /src/postgres/src/backend/backup/basebackup.c:275,1
    - Dst: PG_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/backup/basebackup.c:288,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/backup/basebackup.c:288,1
    - Dst: PrepareForIncrementalBackup
      Src: /src/postgres/src/backend/backup/basebackup.c:295,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup.c:298,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup.c:300,1
    - Dst: basebackup_progress_estimate_backup_size
      Src: /src/postgres/src/backend/backup/basebackup.c:308,1
    - Dst: foreach
      Src: /src/postgres/src/backend/backup/basebackup.c:310,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:312,1
    - Dst: sendDir
      Src: /src/postgres/src/backend/backup/basebackup.c:315,1
    - Dst: sendTablespace
      Src: /src/postgres/src/backend/backup/basebackup.c:318,1
    - Dst: bbsink_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup.c:326,1
    - Dst: foreach
      Src: /src/postgres/src/backend/backup/basebackup.c:329,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:331,1
    - Dst: bbsink_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:339,1
    - Dst: build_backup_content
      Src: /src/postgres/src/backend/backup/basebackup.c:342,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:343,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup.c:345,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:350,1
    - Dst: sendDir
      Src: /src/postgres/src/backend/backup/basebackup.c:356,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/basebackup.c:360,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:361,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:362,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:363,1
    - Dst: sendFile
      Src: /src/postgres/src/backend/backup/basebackup.c:365,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:371,1
    - Dst: bbsink_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:373,1
    - Dst: sendTablespace
      Src: /src/postgres/src/backend/backup/basebackup.c:375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:386,1
    - Dst: lnext
      Src: /src/postgres/src/backend/backup/basebackup.c:386,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/basebackup.c:391,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:392,1
    - Dst: bbsink_end_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:395,1
    - Dst: basebackup_progress_wait_wal_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:399,1
    - Dst: do_pg_backup_stop
      Src: /src/postgres/src/backend/backup/basebackup.c:400,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup.c:406,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup.c:407,1
    - Dst: PG_END_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/backup/basebackup.c:409,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/backup/basebackup.c:409,1
    - Dst: basebackup_progress_transfer_wal
      Src: /src/postgres/src/backend/backup/basebackup.c:432,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/backup/basebackup.c:443,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:444,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/backup/basebackup.c:445,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:446,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/backup/basebackup.c:448,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/backup/basebackup.c:449,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:452,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:453,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:454,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup.c:456,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/backup/basebackup.c:456,1
    - Dst: IsTLHistoryFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:459,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup.c:461,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/backup/basebackup.c:461,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/backup/basebackup.c:464,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:470,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/backup/basebackup.c:477,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:484,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:485,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:491,1
    - Dst: linitial
      Src: /src/postgres/src/backend/backup/basebackup.c:491,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:497,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:499,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:500,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:504,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:508,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:513,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:514,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:515,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:523,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:524,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:530,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:535,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:536,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:538,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:548,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:551,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:553,1
    - Dst: fstat
      Src: /src/postgres/src/backend/backup/basebackup.c:556,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:557,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:558,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:559,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:563,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:564,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:565,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:566,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:570,1
    - Dst: basebackup_read_file
      Src: /src/postgres/src/backend/backup/basebackup.c:572,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/basebackup.c:573,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:577,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:578,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:588,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:589,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:590,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:598,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:600,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/backup/basebackup.c:608,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:609,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:623,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:625,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/basebackup.c:627,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:628,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:629,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:630,1
    - Dst: sendFile
      Src: /src/postgres/src/backend/backup/basebackup.c:632,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/backup/basebackup.c:637,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:638,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/basebackup.c:642,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:643,1
    - Dst: bbsink_end_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:646,1
    - Dst: AddWALInfoToBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:649,1
    - Dst: SendBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:652,1
    - Dst: bbsink_end_backup
      Src: /src/postgres/src/backend/backup/basebackup.c:654,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:659,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/backup/basebackup.c:660,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:665,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:666,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:667,1
    - Dst: FreeBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:675,1
    - Dst: ReleaseAuxProcessResources
      Src: /src/postgres/src/backend/backup/basebackup.c:678,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 156
    argCount: 3
    argNames:
    - opt
    - sink
    - ib
    argTypes:
    - basebackup_options*
    - bbsink*
    - IncrementalBackupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 239
    functionDepth: 4
    functionLinenumber: 239
    functionLinenumberEnd: 679
    functionName: perform_base_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 0
    functionsReached:
    - bbsink_begin_backup
    - strcmp
    - bbsink_begin_archive
    - sendTablespace
    - errcode
    - basebackup_progress_wait_checkpoint
    - sendDir
    - InitializeBackupManifest
    - PG_ENSURE_ERROR_CLEANUP
    - pstrdup
    - XLogFromFileName
    - RecoveryInProgress
    - ReleaseAuxProcessResources
    - XLByteToSeg
    - OpenTransientFile
    - foreach
    - IsXLogFileName
    - SendBackupManifest
    - Assert
    - build_backup_content
    - pfree
    - FreeDir
    - PrepareForIncrementalBackup
    - sendFileWithContent
    - lnext
    - XLByteToPrevSeg
    - CheckXLogRemoved
    - linitial
    - _tarWriteHeader
    - do_pg_backup_start
    - errmsg
    - XLogFileName
    - do_pg_backup_stop
    - ReadDir
    - fstat
    - IsTLHistoryFileName
    - lstat
    - CloseTransientFile
    - palloc0_object
    - bbsink_end_archive
    - errmsg_plural
    - psprintf
    - initStringInfo
    - lappend
    - ereport
    - bbsink_archive_contents
    - FreeBackupManifest
    - basebackup_read_file
    - lfirst
    - memset
    - basebackup_progress_estimate_backup_size
    - sendFile
    - basebackup_progress_wait_wal_archive
    - basebackup_progress_transfer_wal
    - bbsink_end_backup
    - errcode_for_file_access
    - AddWALInfoToBackupManifest
    - list_sort
    - AllocateDir
    - PG_END_ENSURE_ERROR_CLEANUP
    - StatusFilePath
    - Min
    - BoolGetDatum
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void perform_base_backup(basebackup_options *opt, bbsink *sink,\n\t\t\t\t\tIncrementalBackupInfo
      *ib)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:504,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:508,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:513,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:514,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 502
    functionDepth: 2
    functionLinenumber: 502
    functionLinenumberEnd: 517
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 29
    functionsReached:
    - XLogFromFileName
    - ereport
    - lfirst
    - errmsg
    - XLogFileName
    linkageType: ''
    returnType: void
    signature: void foreach(lc, walFileList)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:530,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:535,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:536,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:538,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:548,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:551,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:553,1
    - Dst: fstat
      Src: /src/postgres/src/backend/backup/basebackup.c:556,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:557,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:558,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:559,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:563,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:564,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:565,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:566,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:570,1
    - Dst: basebackup_read_file
      Src: /src/postgres/src/backend/backup/basebackup.c:572,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/basebackup.c:573,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:577,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:578,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:588,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:589,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:590,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:598,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:600,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/backup/basebackup.c:608,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:609,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 528
    functionDepth: 3
    functionLinenumber: 528
    functionLinenumberEnd: 610
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 29
    functionsReached:
    - OpenTransientFile
    - Assert
    - bbsink_archive_contents
    - ereport
    - CheckXLogRemoved
    - _tarWriteHeader
    - sendFileWithContent
    - basebackup_read_file
    - lfirst
    - errmsg
    - XLogFromFileName
    - StatusFilePath
    - Min
    - fstat
    - CloseTransientFile
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: void
    signature: void foreach(lc, walFileList)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:623,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:625,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/basebackup.c:627,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:628,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:629,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:630,1
    - Dst: sendFile
      Src: /src/postgres/src/backend/backup/basebackup.c:632,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/backup/basebackup.c:637,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:638,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 639
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 29
    functionsReached:
    - lstat
    - ereport
    - sendFileWithContent
    - lfirst
    - errmsg
    - sendFile
    - StatusFilePath
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: void
    signature: void foreach(lc, historyFileList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:688,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:689,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 692
    functionName: compareWalFileNames
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 0
    functionsReached:
    - lfirst
    - strcmp
    linkageType: ''
    returnType: int
    signature: int compareWalFileNames(const ListCell *a, const ListCell *b)
  - BBCount: 50
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/backup/basebackup.c:720,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:728,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:730,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:733,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:735,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:736,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:739,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:742,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:743,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:744,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:745,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:748,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:750,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:753,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:754,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:755,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/backup/basebackup.c:756,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/backup/basebackup.c:758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:761,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:762,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:763,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:767,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:770,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:771,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:772,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:773,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:776,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:779,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:780,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:781,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:782,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:785,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:788,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:789,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:790,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:791,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:793,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:794,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:795,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:798,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:803,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:805,1
    - Dst: defGetInt64
      Src: /src/postgres/src/backend/backup/basebackup.c:807,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:809,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:810,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:811,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:817,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:820,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:821,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:822,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:823,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:826,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:829,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:830,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:831,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:832,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:835,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:837,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:841,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:842,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:843,1
    - Dst: parse_bool
      Src: /src/postgres/src/backend/backup/basebackup.c:844,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/backup/basebackup.c:851,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:854,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:855,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:856,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:860,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:862,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:865,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:866,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:867,1
    - Dst: pg_checksum_parse_type
      Src: /src/postgres/src/backend/backup/basebackup.c:868,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:870,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:871,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:872,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:876,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:879,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:880,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:881,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:882,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:885,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:887,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:890,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:891,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:892,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:896,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:898,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:901,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:902,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:903,1
    - Dst: parse_compress_algorithm
      Src: /src/postgres/src/backend/backup/basebackup.c:904,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:905,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:906,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:907,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:911,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:914,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:915,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:916,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:917,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:921,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:922,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:923,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:932,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:933,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:934,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:941,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:942,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:943,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:947,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:950,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:951,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:952,1
    - Dst: BaseBackupGetTargetHandle
      Src: /src/postgres/src/backend/backup/basebackup.c:958,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:961,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:962,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:963,1
    - Dst: parse_compress_specification
      Src: /src/postgres/src/backend/backup/basebackup.c:969,1
    - Dst: validate_compress_specification
      Src: /src/postgres/src/backend/backup/basebackup.c:972,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:974,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:975,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:976,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 143
    argCount: 2
    argNames:
    - options
    - opt
    argTypes:
    - List*
    - basebackup_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 697
    functionDepth: 3
    functionLinenumber: 697
    functionLinenumberEnd: 979
    functionName: parse_basebackup_options
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - defGetBoolean
    - strcmp
    - errcode
    - parse_compress_specification
    - validate_compress_specification
    - ereport
    - parse_bool
    - pg_checksum_parse_type
    - BaseBackupGetTargetHandle
    - MemSet
    - lfirst
    - errmsg
    - defGetInt64
    - parse_compress_algorithm
    - defGetString
    linkageType: ''
    returnType: void
    signature: void parse_basebackup_options(List *options, basebackup_options *opt)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:728,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:730,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:733,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:735,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:736,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:739,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:742,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:743,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:744,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:745,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:748,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:750,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:753,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:754,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:755,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/backup/basebackup.c:756,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/backup/basebackup.c:758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:761,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:762,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:763,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:767,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:770,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:771,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:772,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:773,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:776,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:779,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:780,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:781,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:782,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:785,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:788,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:789,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:790,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:791,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:793,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:794,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:795,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:798,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:803,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:805,1
    - Dst: defGetInt64
      Src: /src/postgres/src/backend/backup/basebackup.c:807,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:809,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:810,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:811,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:817,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:820,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:821,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:822,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:823,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:826,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:829,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:830,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:831,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/backup/basebackup.c:832,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:835,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:837,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:841,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:842,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:843,1
    - Dst: parse_bool
      Src: /src/postgres/src/backend/backup/basebackup.c:844,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/backup/basebackup.c:851,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:854,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:855,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:856,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:860,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:862,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:865,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:866,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:867,1
    - Dst: pg_checksum_parse_type
      Src: /src/postgres/src/backend/backup/basebackup.c:868,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:870,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:871,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:872,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:876,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:879,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:880,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:881,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:882,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:885,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:887,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:890,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:891,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:892,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:896,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:898,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:901,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:902,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:903,1
    - Dst: parse_compress_algorithm
      Src: /src/postgres/src/backend/backup/basebackup.c:904,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:905,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:906,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:907,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:911,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:914,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:915,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:916,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/backup/basebackup.c:917,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:921,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:922,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:923,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 110
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 726
    functionDepth: 3
    functionLinenumber: 726
    functionLinenumberEnd: 925
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 29
    functionsReached:
    - pg_strcasecmp
    - defGetBoolean
    - strcmp
    - errcode
    - ereport
    - parse_bool
    - pg_checksum_parse_type
    - lfirst
    - errmsg
    - defGetInt64
    - parse_compress_algorithm
    - defGetString
    linkageType: ''
    returnType: void
    signature: void foreach(lopt, options)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: get_backup_status
      Src: /src/postgres/src/backend/backup/basebackup.c:994,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:997,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:998,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:999,1
    - Dst: parse_basebackup_options
      Src: /src/postgres/src/backend/backup/basebackup.c:1001,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/backup/basebackup.c:1003,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:1009,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/backup/basebackup.c:1011,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1024,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:1025,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1026,1
    - Dst: bbsink_copystream_new
      Src: /src/postgres/src/backend/backup/basebackup.c:1034,1
    - Dst: BaseBackupGetSink
      Src: /src/postgres/src/backend/backup/basebackup.c:1036,1
    - Dst: bbsink_throttle_new
      Src: /src/postgres/src/backend/backup/basebackup.c:1040,1
    - Dst: bbsink_gzip_new
      Src: /src/postgres/src/backend/backup/basebackup.c:1044,1
    - Dst: bbsink_lz4_new
      Src: /src/postgres/src/backend/backup/basebackup.c:1046,1
    - Dst: bbsink_zstd_new
      Src: /src/postgres/src/backend/backup/basebackup.c:1048,1
    - Dst: bbsink_progress_new
      Src: /src/postgres/src/backend/backup/basebackup.c:1051,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/backup/basebackup.c:1057,1
    - Dst: perform_base_backup
      Src: /src/postgres/src/backend/backup/basebackup.c:1059,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/backup/basebackup.c:1061,1
    - Dst: bbsink_cleanup
      Src: /src/postgres/src/backend/backup/basebackup.c:1063,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/backup/basebackup.c:1065,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - cmd
    - ib
    argTypes:
    - BaseBackupCmd*
    - IncrementalBackupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 989
    functionDepth: 5
    functionLinenumber: 989
    functionLinenumberEnd: 1066
    functionName: SendBaseBackup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - set_ps_display
    - errcode
    - perform_base_backup
    - bbsink_throttle_new
    - parse_basebackup_options
    - PG_FINALLY
    - bbsink_progress_new
    - errmsg
    - PG_END_TRY
    - bbsink_lz4_new
    - ereport
    - bbsink_copystream_new
    - bbsink_cleanup
    - bbsink_zstd_new
    - get_backup_status
    - bbsink_gzip_new
    - WalSndSetState
    - BaseBackupGetSink
    - snprintf
    linkageType: ''
    returnType: void
    signature: void SendBaseBackup(BaseBackupCmd *cmd, IncrementalBackupInfo *ib)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_checksum_init
      Src: /src/postgres/src/backend/backup/basebackup.c:1082,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1083,1
    - Dst: strlen
      Src: /src/postgres/src/backend/backup/basebackup.c:1087,1
    - Dst: geteuid
      Src: /src/postgres/src/backend/backup/basebackup.c:1098,1
    - Dst: getegid
      Src: /src/postgres/src/backend/backup/basebackup.c:1099,1
    - Dst: time
      Src: /src/postgres/src/backend/backup/basebackup.c:1101,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:1105,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/backend/backup/basebackup.c:1107,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1108,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/basebackup.c:1114,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/backup/basebackup.c:1116,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:1117,1
    - Dst: _tarWritePadding
      Src: /src/postgres/src/backend/backup/basebackup.c:1122,1
    - Dst: AddFileToBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:1124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 5
    argNames:
    - sink
    - filename
    - content
    - len
    - manifest
    argTypes:
    - bbsink*
    - char*
    - char*
    - int
    - backup_manifest_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1074
    functionDepth: 9
    functionLinenumber: 1074
    functionLinenumberEnd: 1126
    functionName: sendFileWithContent
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 3
    functionsReached:
    - elog
    - geteuid
    - pg_checksum_init
    - memcpy
    - getegid
    - bbsink_archive_contents
    - _tarWriteHeader
    - strlen
    - time
    - _tarWritePadding
    - Min
    - AddFileToBackupManifest
    - pg_checksum_update
    linkageType: ''
    returnType: void
    signature: "void sendFileWithContent(bbsink *sink, const char *filename, const
      char *content,\n\t\t\t\t\tint len, backup_manifest_info *manifest)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:1147,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/basebackup.c:1154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1157,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:1158,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1159,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:1166,1
    - Dst: sendDir
      Src: /src/postgres/src/backend/backup/basebackup.c:1170,1
    - Dst: strlen
      Src: /src/postgres/src/backend/backup/basebackup.c:1170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - sink
    - path
    - spcoid
    - sizeonly
    - manifest
    - ib
    argTypes:
    - bbsink*
    - char*
    - Oid
    - bool
    - backup_manifest_info*
    - IncrementalBackupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1135
    functionDepth: 1
    functionLinenumber: 1135
    functionLinenumberEnd: 1174
    functionName: sendTablespace
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 1
    functionsReached:
    - lstat
    - sendDir
    - ereport
    - _tarWriteHeader
    - strlen
    - errmsg
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: int64
    signature: "int64 sendTablespace(bbsink *sink, char *path, Oid spcoid, bool sizeonly,\n\t\t\t
      \  backup_manifest_info *manifest, IncrementalBackupInfo *ib)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/backup/basebackup.c:1209,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/backend/backup/basebackup.c:1218,1
    - Dst: strspn
      Src: /src/postgres/src/backend/backup/basebackup.c:1222,1
    - Dst: strlen
      Src: /src/postgres/src/backend/backup/basebackup.c:1222,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1231,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1233,1
    - Dst: atooid
      Src: /src/postgres/src/backend/backup/basebackup.c:1238,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1241,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/backup/basebackup.c:1247,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/backup/basebackup.c:1248,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1258,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1258,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1262,1
    - Dst: strlen
      Src: /src/postgres/src/backend/backup/basebackup.c:1264,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1268,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/basebackup.c:1279,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/backup/basebackup.c:1280,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1281,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:1282,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1283,1
    - Dst: errhint
      Src: /src/postgres/src/backend/backup/basebackup.c:1284,1
    - Dst: strlen
      Src: /src/postgres/src/backend/backup/basebackup.c:1292,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1296,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1298,1
    - Dst: parse_filename_for_nontemp_relation
      Src: /src/postgres/src/backend/backup/basebackup.c:1313,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:1326,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/basebackup.c:1329,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1331,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/backup/basebackup.c:1340,1
    - Dst: looks_like_temp_rel_name
      Src: /src/postgres/src/backend/backup/basebackup.c:1340,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1342,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:1349,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1352,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/basebackup.c:1355,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1358,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:1359,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1360,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1371,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1373,1
    - Dst: convert_link_to_directory
      Src: /src/postgres/src/backend/backup/basebackup.c:1374,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:1375,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1390,1
    - Dst: convert_link_to_directory
      Src: /src/postgres/src/backend/backup/basebackup.c:1393,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:1394,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:1401,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:1403,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1410,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/backend/backup/basebackup.c:1410,1
    - Dst: readlink
      Src: /src/postgres/src/backend/backup/basebackup.c:1415,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1417,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:1418,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1419,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1422,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:1423,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1424,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:1428,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/backup/basebackup.c:1431,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:1440,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:1449,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1458,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1468,1
    - Dst: sendDir
      Src: /src/postgres/src/backend/backup/basebackup.c:1472,1
    - Dst: S_ISREG
      Src: /src/postgres/src/backend/backup/basebackup.c:1475,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/backup/basebackup.c:1489,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:1492,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/backup/basebackup.c:1501,1
    - Dst: GetFileBackupMethod
      Src: /src/postgres/src/backend/backup/basebackup.c:1504,1
    - Dst: GetIncrementalFileSize
      Src: /src/postgres/src/backend/backup/basebackup.c:1513,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:1514,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup.c:1521,1
    - Dst: sendFile
      Src: /src/postgres/src/backend/backup/basebackup.c:1525,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/backend/backup/basebackup.c:1538,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1545,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1546,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup.c:1550,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/backup/basebackup.c:1552,1
    CyclomaticComplexity: 63
    EdgeCount: 63
    ICount: 131
    argCount: 9
    argNames:
    - sink
    - path
    - basepathlen
    - sizeonly
    - tablespaces
    - sendtblspclinks
    - manifest
    - spcoid
    - ib
    argTypes:
    - bbsink*
    - char*
    - int
    - bool
    - List*
    - bool
    - backup_manifest_info*
    - Oid
    - IncrementalBackupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1188
    functionDepth: 3
    functionLinenumber: 1188
    functionLinenumberEnd: 1554
    functionName: sendDir
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 3
    functionsReached:
    - looks_like_temp_rel_name
    - GetFileBackupMethod
    - S_ISREG
    - strcmp
    - errcode
    - sendDir
    - pstrdup
    - palloc_array
    - errhint
    - parse_filename_for_nontemp_relation
    - convert_link_to_directory
    - S_ISLNK
    - RecoveryInProgress
    - elog
    - pfree
    - FreeDir
    - _tarWriteHeader
    - strspn
    - errmsg
    - OidIsValid
    - ReadDir
    - lstat
    - S_ISDIR
    - atooid
    - psprintf
    - ereport
    - CHECK_FOR_INTERRUPTS
    - readlink
    - lfirst
    - strlen
    - last_dir_separator
    - sendFile
    - tarPaddingBytesRequired
    - errcode_for_file_access
    - GetIncrementalFileSize
    - AllocateDir
    - strncmp
    - snprintf
    linkageType: ''
    returnType: int64
    signature: "int64 sendDir(bbsink *sink, const char *path, int basepathlen, bool
      sizeonly,\n\t\tList *tablespaces, bool sendtblspclinks, backup_manifest_info
      *manifest,\n\t\tOid spcoid, IncrementalBackupInfo *ib)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:1449,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:1458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1447
    functionDepth: 1
    functionLinenumber: 1447
    functionLinenumberEnd: 1463
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 29
    functionsReached:
    - lfirst
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tablespaces)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pg_checksum_init
      Src: /src/postgres/src/backend/backup/basebackup.c:1589,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1590,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:1593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1598,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:1599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1600,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:1603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:1609,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/backup/basebackup.c:1618,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1632,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1634,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1636,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1638,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/basebackup.c:1653,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1656,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:1663,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/backend/backup/basebackup.c:1664,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1667,1
    - Dst: read_file_data_into_buffer
      Src: /src/postgres/src/backend/backup/basebackup.c:1704,1
    - Dst: read_file_data_into_buffer
      Src: /src/postgres/src/backend/backup/basebackup.c:1725,1
    - Dst: DataChecksumsNeedVerify
      Src: /src/postgres/src/backend/backup/basebackup.c:1751,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1753,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1754,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:1777,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:1781,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/backend/backup/basebackup.c:1784,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1786,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/basebackup.c:1793,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/backup/basebackup.c:1795,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/backend/backup/basebackup.c:1796,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1799,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:1800,1
    - Dst: _tarWritePadding
      Src: /src/postgres/src/backend/backup/basebackup.c:1809,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:1811,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1815,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/backup/basebackup.c:1816,1
    - Dst: pgstat_prepare_report_checksum_failure
      Src: /src/postgres/src/backend/backup/basebackup.c:1821,1
    - Dst: pgstat_report_checksum_failures_in_db
      Src: /src/postgres/src/backend/backup/basebackup.c:1822,1
    - Dst: AddFileToBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:1827,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 77
    argCount: 13
    argNames:
    - sink
    - readfilename
    - tarfilename
    - statbuf
    - missing_ok
    - dboid
    - spcoid
    - relfilenumber
    - segno
    - manifest
    - num_incremental_blocks
    - incremental_blocks
    - truncation_block_length
    argTypes:
    - bbsink*
    - char*
    - char*
    - struct stat*
    - bool
    - Oid
    - Oid
    - RelFileNumber
    - unsigned
    - backup_manifest_info*
    - unsigned
    - BlockNumber*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1573
    functionDepth: 9
    functionLinenumber: 1573
    functionLinenumberEnd: 1831
    functionName: sendFile
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 3
    functionsReached:
    - DataChecksumsNeedVerify
    - RelFileNumberIsValid
    - pg_checksum_update
    - elog
    - OpenTransientFile
    - pg_checksum_init
    - pgstat_prepare_report_checksum_failure
    - Assert
    - _tarWriteHeader
    - errmsg
    - _tarWritePadding
    - pgstat_report_checksum_failures_in_db
    - CloseTransientFile
    - AddFileToBackupManifest
    - errmsg_plural
    - push_to_sink
    - bbsink_archive_contents
    - ereport
    - MemSet
    - memset
    - errcode_for_file_access
    - read_file_data_into_buffer
    - Min
    linkageType: ''
    returnType: bool
    signature: "bool sendFile(bbsink *sink, const char *readfilename, const char *tarfilename,\n\t\t
      struct stat *statbuf, bool missing_ok, Oid dboid, Oid spcoid,\n\t\t RelFileNumber
      relfilenumber, unsigned segno,\n\t\t backup_manifest_info *manifest, unsigned
      num_incremental_blocks,\n\t\t BlockNumber *incremental_blocks, unsigned truncation_block_length)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: basebackup_read_file
      Src: /src/postgres/src/backend/backup/basebackup.c:1861,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/basebackup.c:1862,1
    - Dst: DataChecksumsNeedVerify
      Src: /src/postgres/src/backend/backup/basebackup.c:1879,1
    - Dst: verify_page_checksum
      Src: /src/postgres/src/backend/backup/basebackup.c:1885,1
    - Dst: DataChecksumsNeedVerify
      Src: /src/postgres/src/backend/backup/basebackup.c:1908,1
    - Dst: basebackup_read_file
      Src: /src/postgres/src/backend/backup/basebackup.c:1911,1
    - Dst: verify_page_checksum
      Src: /src/postgres/src/backend/backup/basebackup.c:1926,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1933,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1934,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1940,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1941,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 8
    argNames:
    - sink
    - readfilename
    - fd
    - offset
    - length
    - blkno
    - verify_checksum
    - checksum_failures
    argTypes:
    - bbsink*
    - char*
    - int
    - off_t
    - size_t
    - BlockNumber
    - bool
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1947
      start: 1851
    functionDepth: 1
    functionLinenumber: 1851
    functionLinenumberEnd: 1947
    functionName: read_file_data_into_buffer
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 1
    functionsReached:
    - DataChecksumsNeedVerify
    - ereport
    - basebackup_read_file
    - errmsg
    - verify_page_checksum
    - Min
    linkageType: ''
    returnType: off_t
    signature: "off_t read_file_data_into_buffer(bbsink *sink, const char *readfilename,
      int fd,\n\t\t\t\t\t\t   off_t offset, size_t length, BlockNumber blkno,\n\t\t\t\t\t\t
      \  bool verify_checksum, int *checksum_failures)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/backup/basebackup.c:1981,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/backup/basebackup.c:1988,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:1991,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/backend/backup/basebackup.c:1992,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1994,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 5
    argNames:
    - sink
    - checksum_ctx
    - bytes_done
    - data
    - length
    argTypes:
    - bbsink*
    - pg_checksum_context*
    - size_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1966
    functionDepth: 2
    functionLinenumber: 1966
    functionLinenumberEnd: 1997
    functionName: push_to_sink
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 1
    functionsReached:
    - elog
    - bbsink_archive_contents
    - memcpy
    - pg_checksum_update
    linkageType: ''
    returnType: void
    signature: "void push_to_sink(bbsink *sink, pg_checksum_context *checksum_ctx,\n\t\t\t
      size_t *bytes_done, void *data, size_t length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/backup/basebackup.c:2021,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/backup/basebackup.c:2021,1
    - Dst: DataChecksumsNeedVerify
      Src: /src/postgres/src/backend/backup/basebackup.c:2024,1
    - Dst: pg_checksum_page
      Src: /src/postgres/src/backend/backup/basebackup.c:2028,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - page
    - start_lsn
    - blkno
    - expected_checksum
    argTypes:
    - Page
    - XLogRecPtr
    - BlockNumber
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2007
    functionDepth: 2
    functionLinenumber: 2007
    functionLinenumberEnd: 2036
    functionName: verify_page_checksum
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 1
    functionsReached:
    - PageGetLSN
    - DataChecksumsNeedVerify
    - pg_checksum_page
    - PageIsNew
    linkageType: ''
    returnType: bool
    signature: "bool verify_page_checksum(Page page, XLogRecPtr start_lsn, BlockNumber
      blkno,\n\t\t\t\t\t uint16 *expected_checksum)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/backup/basebackup.c:2053,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:2055,1
    - Dst: tarCreateHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:2057,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:2067,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:2068,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:2069,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:2073,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:2074,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:2075,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:2080,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:2083,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 5
    argNames:
    - sink
    - filename
    - linktarget
    - statbuf
    - sizeonly
    argTypes:
    - bbsink*
    - char*
    - char*
    - struct stat*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2038
    functionDepth: 2
    functionLinenumber: 2038
    functionLinenumberEnd: 2087
    functionName: _tarWriteHeader
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 7
    functionsReached:
    - elog
    - errcode
    - Assert
    - tarCreateHeader
    - bbsink_archive_contents
    - ereport
    - errmsg
    - StaticAssertDecl
    linkageType: ''
    returnType: int64
    signature: "int64 _tarWriteHeader(bbsink *sink, const char *filename, const char
      *linktarget,\n\t\t\t\tstruct stat *statbuf, bool sizeonly)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/backend/backup/basebackup.c:2095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:2101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:2102,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/backup/basebackup.c:2106,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:2107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2092
    functionDepth: 2
    functionLinenumber: 2092
    functionLinenumberEnd: 2109
    functionName: _tarWritePadding
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 2
    functionsReached:
    - Assert
    - MemSet
    - bbsink_archive_contents
    - tarPaddingBytesRequired
    linkageType: ''
    returnType: void
    signature: void _tarWritePadding(bbsink *sink, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: S_ISLNK
      Src: /src/postgres/src/backend/backup/basebackup.c:2119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - pathbuf
    - statbuf
    argTypes:
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2121
      start: 2115
    functionDepth: 1
    functionLinenumber: 2115
    functionLinenumberEnd: 2121
    functionName: convert_link_to_directory
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 1
    functionsReached:
    - S_ISLNK
    linkageType: ''
    returnType: void
    signature: void convert_link_to_directory(const char *pathbuf, struct stat *statbuf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/backup/basebackup.c:2138,1
    - Dst: pg_pread
      Src: /src/postgres/src/backend/backup/basebackup.c:2139,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/backup/basebackup.c:2140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:2143,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:2144,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:2145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:2147,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:2148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:2149,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 6
    argNames:
    - fd
    - buf
    - nbytes
    - offset
    - filename
    - partial_read_ok
    argTypes:
    - int
    - char*
    - size_t
    - off_t
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2153
      start: 2132
    functionDepth: 3
    functionLinenumber: 2132
    functionLinenumberEnd: 2153
    functionName: basebackup_read_file
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 3
    functionsReached:
    - ereport
    - pgstat_report_wait_end
    - errmsg
    - pgstat_report_wait_start
    - pg_pread
    - errcode_for_file_access
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t basebackup_read_file(int fd, char *buf, size_t nbytes, off_t
      offset,\n\t\t\t\t\t const char *filename, bool partial_read_ok)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:158,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:160,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:162,1
    - Dst: backup_file_create
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:170,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:172,1
    - Dst: json_parse_manifest_incremental_init
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:181,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - mcxt
    argTypes:
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 151
    functionDepth: 4
    functionLinenumber: 151
    functionLinenumberEnd: 186
    functionName: CreateIncrementalBackupInfo
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - initStringInfo
    - json_parse_manifest_incremental_init
    - MemoryContextSwitchTo
    - backup_file_create
    linkageType: ''
    returnType: IncrementalBackupInfo
    signature: 'IncrementalBackupInfo *

      CreateIncrementalBackupInfo(MemoryContext mcxt)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:200,1
    - Dst: json_parse_manifest_incremental_chunk
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:208,1
    - Dst: memmove
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:211,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:216,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ib
    - data
    - len
    argTypes:
    - IncrementalBackupInfo*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 193
    functionDepth: 4
    functionLinenumber: 193
    functionLinenumberEnd: 220
    functionName: AppendIncrementalManifestData
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - appendBinaryStringInfo
    - json_parse_manifest_incremental_chunk
    - memmove
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void AppendIncrementalManifestData(IncrementalBackupInfo *ib, const
      char *data,\n\t\t\t\t\t\t\t  int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:232,1
    - Dst: json_parse_manifest_incremental_chunk
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:235,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:239,1
    - Dst: json_parse_manifest_incremental_shutdown
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:243,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ib
    argTypes:
    - IncrementalBackupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 247
    functionName: FinalizeIncrementalManifest
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - pfree
    - json_parse_manifest_incremental_chunk
    - json_parse_manifest_incremental_shutdown
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void FinalizeIncrementalManifest(IncrementalBackupInfo *ib)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:278,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:281,1
    - Dst: list_length
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:289,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:291,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:312,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:313,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:316,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:323,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:344,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:345,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:346,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:404,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:409,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:410,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:411,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:413,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:414,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:419,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:420,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:421,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:423,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:424,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:430,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:432,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:434,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:435,1
    - Dst: errhint
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:436,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:441,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:442,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:443,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:445,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:446,1
    - Dst: WaitForWalSummarization
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:458,1
    - Dst: GetWalSummaries
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:467,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:477,1
    - Dst: FilterWalSummaries
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:509,1
    - Dst: WalSummariesAreComplete
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:518,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:521,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:522,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:523,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:524,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:526,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:527,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:529,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:531,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:533,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:534,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:535,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:536,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:553,1
    - Dst: CreateEmptyBlockRefTable
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:570,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:573,1
    - Dst: OpenWalSummaryFile
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:583,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:584,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:585,1
    - Dst: CreateBlockRefTableReader
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:586,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:587,1
    - Dst: BlockRefTableReaderNextRelation
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:589,1
    - Dst: BlockRefTableSetLimitBlock
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:592,1
    - Dst: BlockRefTableReaderGetBlocks
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:599,1
    - Dst: BlockRefTableMarkBlockModified
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:605,1
    - Dst: DestroyBlockRefTableReader
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:609,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:610,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:614,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 84
    argCount: 2
    argNames:
    - ib
    - backup_state
    argTypes:
    - IncrementalBackupInfo*
    - BackupState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 262
    functionDepth: 3
    functionLinenumber: 262
    functionLinenumberEnd: 615
    functionName: PrepareForIncrementalBackup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 1
    functionsReached:
    - BlockRefTableReaderNextRelation
    - BlockRefTableReaderGetBlocks
    - errcode
    - WalSummariesAreComplete
    - errhint
    - list_concat
    - CreateBlockRefTableReader
    - WaitForWalSummarization
    - LSN_FORMAT_ARGS
    - BlockRefTableMarkBlockModified
    - XLogRecPtrIsValid
    - BlockRefTableSetLimitBlock
    - OpenWalSummaryFile
    - Assert
    - errmsg
    - CreateEmptyBlockRefTable
    - list_length
    - FilePathName
    - DestroyBlockRefTableReader
    - errmsg_internal
    - ereport
    - GetWalSummaries
    - FilterWalSummaries
    - FileClose
    - lfirst
    - readTimeLineHistory
    - palloc0
    - MemoryContextSwitchTo
    - errdetail
    - list_nth
    linkageType: ''
    returnType: void
    signature: "void PrepareForIncrementalBackup(IncrementalBackupInfo *ib,\n\t\t\t\t\t\t\tBackupState
      *backup_state)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 335
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 29
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, expectedTLEs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:477,1
    - Dst: FilterWalSummaries
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:509,1
    - Dst: WalSummariesAreComplete
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:518,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:521,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:522,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:523,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:524,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:526,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:527,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:529,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:531,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:533,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:534,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:535,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:536,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:553,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 475
    functionDepth: 2
    functionLinenumber: 475
    functionLinenumberEnd: 561
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 29
    functionsReached:
    - XLogRecPtrIsValid
    - errcode
    - WalSummariesAreComplete
    - ereport
    - FilterWalSummaries
    - lfirst
    - list_concat
    - errmsg
    - errdetail
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void foreach(lc, expectedTLEs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:573,1
    - Dst: OpenWalSummaryFile
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:583,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:584,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:585,1
    - Dst: CreateBlockRefTableReader
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:586,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:587,1
    - Dst: BlockRefTableReaderNextRelation
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:589,1
    - Dst: BlockRefTableSetLimitBlock
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:592,1
    - Dst: BlockRefTableReaderGetBlocks
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:599,1
    - Dst: BlockRefTableMarkBlockModified
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:605,1
    - Dst: DestroyBlockRefTableReader
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:609,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:610,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 571
    functionDepth: 2
    functionLinenumber: 571
    functionLinenumberEnd: 611
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 29
    functionsReached:
    - BlockRefTableMarkBlockModified
    - BlockRefTableReaderNextRelation
    - BlockRefTableSetLimitBlock
    - OpenWalSummaryFile
    - errmsg_internal
    - BlockRefTableReaderGetBlocks
    - ereport
    - FileClose
    - lfirst
    - CreateBlockRefTableReader
    - FilePathName
    - DestroyBlockRefTableReader
    linkageType: ''
    returnType: void
    signature: void foreach(lc, required_wslist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetRelationPath
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:630,1
    - Dst: strrchr
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:633,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:634,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:638,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:640,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - dboid
    - spcoid
    - relfilenumber
    - forknum
    - segno
    argTypes:
    - Oid
    - Oid
    - RelFileNumber
    - ForkNumber
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 622
    functionDepth: 2
    functionLinenumber: 622
    functionLinenumberEnd: 643
    functionName: GetIncrementalFilePath
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - Assert
    - psprintf
    - strrchr
    - GetRelationPath
    linkageType: ''
    returnType: char
    signature: "char *\nGetIncrementalFilePath(Oid dboid, Oid spcoid, RelFileNumber
      relfilenumber,\n\t\t\t\t\t   ForkNumber forknum, unsigned segno)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:684,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:684,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:685,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:685,1
    - Dst: backup_file_lookup
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:723,1
    - Dst: GetIncrementalFilePath
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:727,1
    - Dst: backup_file_lookup
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:729,1
    - Dst: BlockRefTableGetEntry
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:740,1
    - Dst: BlockRefTableGetEntry
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:753,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:791,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:792,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:793,1
    - Dst: BlockRefTableEntryGetBlocks
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:802,1
    - Dst: qsort
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:829,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:847,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 11
    argNames:
    - ib
    - path
    - dboid
    - spcoid
    - relfilenumber
    - forknum
    - segno
    - size
    - num_blocks_required
    - relative_block_numbers
    - truncation_block_length
    argTypes:
    - IncrementalBackupInfo*
    - char*
    - Oid
    - Oid
    - RelFileNumber
    - ForkNumber
    - unsigned
    - size_t
    - unsigned*
    - BlockNumber*
    - unsigned*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 660
    functionDepth: 3
    functionLinenumber: 660
    functionLinenumberEnd: 871
    functionName: GetFileBackupMethod
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 1
    functionsReached:
    - qsort
    - errmsg_internal
    - errcode
    - Assert
    - BlockNumberIsValid
    - ereport
    - BlockRefTableEntryGetBlocks
    - BlockRefTableGetEntry
    - GetIncrementalFilePath
    - backup_file_lookup
    - OidIsValid
    - RelFileNumberIsValid
    linkageType: ''
    returnType: FileBackupMethod
    signature: "FileBackupMethod GetFileBackupMethod(IncrementalBackupInfo *ib, const
      char *path,\n\t\t\t\t\tOid dboid, Oid spcoid,\n\t\t\t\t\tRelFileNumber relfilenumber,
      ForkNumber forknum,\n\t\t\t\t\tunsigned segno, size_t size,\n\t\t\t\t\tunsigned
      *num_blocks_required,\n\t\t\t\t\tBlockNumber *relative_block_numbers,\n\t\t\t\t\tunsigned
      *truncation_block_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:884,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - num_blocks_required
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 901
    functionName: GetIncrementalHeaderSize
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: size_t
    signature: size_t GetIncrementalHeaderSize(unsigned num_blocks_required)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:912,1
    - Dst: GetIncrementalHeaderSize
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - num_blocks_required
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 906
    functionDepth: 2
    functionLinenumber: 906
    functionLinenumberEnd: 923
    functionName: GetIncrementalFileSize
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 1
    functionsReached:
    - Assert
    - GetIncrementalHeaderSize
    linkageType: ''
    returnType: size_t
    signature: size_t GetIncrementalFileSize(unsigned num_blocks_required)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_bytes
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:933,1
    - Dst: strlen
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 928
    functionDepth: 2
    functionLinenumber: 928
    functionLinenumberEnd: 934
    functionName: hash_string_pointer
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - hash_bytes
    - strlen
    linkageType: ''
    returnType: uint32
    signature: uint32 hash_string_pointer(const char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - context
    - manifest_version
    argTypes:
    - JsonManifestParseContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 939
    functionDepth: 0
    functionLinenumber: 939
    functionLinenumberEnd: 947
    functionName: manifest_process_version
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - JsonManifestParseContext*::error_cb
    linkageType: ''
    returnType: void
    signature: "void manifest_process_version(JsonManifestParseContext *context,\n\t\t\t\t\t\t
      int manifest_version)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetSystemIdentifier
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:960,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - context
    - manifest_system_identifier
    argTypes:
    - JsonManifestParseContext*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 953
    functionDepth: 2
    functionLinenumber: 953
    functionLinenumberEnd: 967
    functionName: manifest_process_system_identifier
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - GetSystemIdentifier
    - JsonManifestParseContext*::error_cb
    linkageType: ''
    returnType: void
    signature: "void manifest_process_system_identifier(JsonManifestParseContext *context,\n\t\t\t\t\t\t\t\t
      \  uint64 manifest_system_identifier)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: backup_file_insert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:986,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:989,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - context
    - pathname
    - size
    - checksum_type
    - checksum_length
    - checksum_payload
    argTypes:
    - JsonManifestParseContext*
    - char*
    - uint64
    - pg_checksum_type
    - int
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 993
    functionName: manifest_process_file
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - MemoryContextStrdup
    - backup_file_insert
    linkageType: ''
    returnType: void
    signature: "void manifest_process_file(JsonManifestParseContext *context,\n\t\t\t\t\t
      \ const char *pathname, uint64 size,\n\t\t\t\t\t  pg_checksum_type checksum_type,\n\t\t\t\t\t
      \ int checksum_length,\n\t\t\t\t\t  uint8 *checksum_payload)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1008,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - context
    - tli
    - start_lsn
    - end_lsn
    argTypes:
    - JsonManifestParseContext*
    - TimeLineID
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 1002
    functionDepth: 1
    functionLinenumber: 1002
    functionLinenumberEnd: 1014
    functionName: manifest_process_wal_range
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - lappend
    - palloc_object
    linkageType: ''
    returnType: void
    signature: "void manifest_process_wal_range(JsonManifestParseContext *context,\n\t\t\t\t\t\t
      \  TimeLineID tli, XLogRecPtr start_lsn,\n\t\t\t\t\t\t   XLogRecPtr end_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1025,1
    - Dst: va_start
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1032,1
    - Dst: appendStringInfoVA
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1033,1
    - Dst: va_end
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1034,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1037,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1040,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1041,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - context
    - fmt
    argTypes:
    - JsonManifestParseContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1020
    functionDepth: 3
    functionLinenumber: 1020
    functionLinenumberEnd: 1042
    functionName: manifest_report_error
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - va_end
    - errmsg_internal
    - va_start
    - appendStringInfoVA
    - initStringInfo
    - ereport
    - enlargeStringInfo
    linkageType: ''
    returnType: void
    signature: void manifest_report_error(JsonManifestParseContext *context, const
      char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1047
    functionDepth: 1
    functionLinenumber: 1047
    functionLinenumberEnd: 1054
    functionName: compare_block_numbers
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int compare_block_numbers(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: standard_planner
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:337,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - parse
    - query_string
    - cursorOptions
    - boundParams
    - es
    argTypes:
    - Query*
    - char*
    - int
    - ParamListInfo
    - ExplainState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 343
    functionName: planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 3
    functionsReached:
    - standard_planner
    - pgstat_report_plan_id
    linkageType: ''
    returnType: PlannedStmt
    signature: "PlannedStmt *\nplanner(Query *parse, const char *query_string, int
      cursorOptions,\n\t\tParamListInfo boundParams, ExplainState *es)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:366,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:418,1
    - Dst: max_parallel_hazard
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:421,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:532,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:536,1
    - Dst: get_cheapest_fractional_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:537,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:539,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:547,1
    - Dst: materialize_finished_plan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:548,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:568,1
    - Dst: SS_compute_initplan_cost
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:607,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:626,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:626,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:626,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:627,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:629,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:630,1
    - Dst: SS_finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:632,1
    - Dst: SS_finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:634,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:638,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:641,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:642,1
    - Dst: set_plan_references
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:645,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:645,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:645,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:646,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:648,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:649,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:651,1
    - Dst: set_plan_references
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:651,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:655,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:669,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:682,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:683,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:684,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:685,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:686,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:687,1
    - Dst: DestroyPartitionDirectory
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:728,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 167
    argCount: 5
    argNames:
    - parse
    - query_string
    - cursorOptions
    - boundParams
    - es
    argTypes:
    - Query*
    - char*
    - int
    - ParamListInfo
    - ExplainState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 731
    functionName: standard_planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - lfirst_int
    - bms_difference
    - bms_add_member
    - fetch_upper_rel
    - foreach
    - Assert
    - ExecSupportsBackwardScan
    - SS_compute_initplan_cost
    - list_length
    - create_plan
    - IsParallelWorker
    - subquery_planner
    - DestroyPartitionDirectory
    - get_cheapest_fractional_path
    - lfirst
    - lfirst_node
    - SS_finalize_plan
    - makeNode
    - materialize_finished_plan
    - set_plan_references
    - max_parallel_hazard
    - forboth
    linkageType: ''
    returnType: PlannedStmt
    signature: "PlannedStmt *\nstandard_planner(Query *parse, const char *query_string,
      int cursorOptions,\n\t\t\t\t ParamListInfo boundParams, ExplainState *es)"
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:786,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:807,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:812,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:813,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:827,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:837,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:837,1
    - Dst: SS_process_ctes
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:844,1
    - Dst: transform_MERGE_to_join
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:849,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:868,1
    - Dst: get_attgenerated
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:870,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:871,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:872,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:873,1
    - Dst: preprocess_relation_rtes
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:887,1
    - Dst: replace_empty_jointree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:893,1
    - Dst: pull_up_sublinks
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:902,1
    - Dst: preprocess_function_rtes
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:910,1
    - Dst: pull_up_subqueries
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:916,1
    - Dst: flatten_simple_union_all
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:925,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:942,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:944,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:950,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:957,1
    - Dst: list_cell_number
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:958,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:975,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:976,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:985,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:989,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1006,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1008,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1016,1
    - Dst: ExecCheckOneRelPerms
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1017,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1019,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1020,1
    - Dst: preprocess_rowmarks
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1028,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1044,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1048,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1050,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1052,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1055,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1060,1
    - Dst: preprocess_qual_conditions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1063,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1065,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1068,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1070,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1073,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1075,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1079,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1081,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1087,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1091,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1095,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1099,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1108,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1111,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1114,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1117,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1119,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1122,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1126,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1132,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1135,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1139,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1141,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1149,1
    - Dst: flatten_join_alias_vars
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1164,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1172,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1179,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1186,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1192,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1202,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1204,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1204,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1205,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1223,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1225,1
    - Dst: find_having_conflicts
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1236,1
    - Dst: flatten_group_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1253,1
    - Dst: flatten_group_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1255,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1260,1
    - Dst: expand_grouping_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1271,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1326,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1328,1
    - Dst: contain_agg_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1330,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1331,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1332,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1333,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1335,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1335,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1338,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1342,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1348,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1352,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1361,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1361,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1365,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1368,1
    - Dst: reduce_outer_joins
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1381,1
    - Dst: remove_useless_result_rtes
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1390,1
    - Dst: grouping_planner
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1395,1
    - Dst: SS_identify_outer_params
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1401,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1409,1
    - Dst: SS_charge_for_initplans
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1410,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1417,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 206
    argCount: 8
    argNames:
    - glob
    - parse
    - plan_name
    - parent_root
    - alternative_root
    - hasRecursion
    - tuple_fraction
    - setops
    argTypes:
    - PlannerGlobal*
    - Query*
    - char*
    - PlannerInfo*
    - PlannerInfo*
    - bool
    - double
    - SetOperationStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 769
    functionDepth: 2
    functionLinenumber: 769
    functionLinenumberEnd: 1420
    functionName: subquery_planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - pull_varnos
    - copyObject
    - errcode
    - SS_process_ctes
    - list_concat
    - preprocess_expression
    - expression_returns_set
    - fetch_upper_rel
    - contain_subplans
    - foreach
    - preprocess_rowmarks
    - transform_MERGE_to_join
    - Assert
    - pull_up_sublinks
    - preprocess_qual_conditions
    - bms_is_member
    - linitial
    - expand_grouping_sets
    - preprocess_function_rtes
    - getRTEPermissionInfo
    - get_rel_name
    - errmsg
    - list_length
    - flatten_simple_union_all
    - get_attgenerated
    - IS_OUTER_JOIN
    - SS_charge_for_initplans
    - replace_empty_jointree
    - pull_up_subqueries
    - contain_agg_clause
    - rt_fetch
    - ereport
    - lappend
    - list_cell_number
    - lfirst
    - memset
    - assign_special_exec_param
    - aclcheck_error
    - list_make1
    - grouping_planner
    - SS_identify_outer_params
    - bms_make_singleton
    - lfirst_node
    - remove_useless_result_rtes
    - ExecCheckOneRelPerms
    - flatten_group_exprs
    - flatten_join_alias_vars
    - makeNode
    - Max
    - contain_volatile_functions
    - set_cheapest
    - preprocess_relation_rtes
    - find_having_conflicts
    - reduce_outer_joins
    linkageType: ''
    returnType: PlannerInfo
    signature: "PlannerInfo *\nsubquery_planner(PlannerGlobal *glob, Query *parse,
      char *plan_name,\n\t\t\t\t PlannerInfo *parent_root, PlannerInfo *alternative_root,\n\t\t\t\t
      bool hasRecursion, double tuple_fraction,\n\t\t\t\t SetOperationStmt *setops)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: flatten_join_alias_vars
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1453,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1475,1
    - Dst: canonicalize_qual
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1482,1
    - Dst: printf
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1485,1
    - Dst: pprint
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1486,1
    - Dst: convert_saop_to_hashed_saop
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1497,1
    - Dst: SS_process_sublinks
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1502,1
    - Dst: SS_replace_correlation_vars
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1511,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1520,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 22
    argCount: 3
    argNames:
    - root
    - expr
    - kind
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1428
    functionDepth: 1
    functionLinenumber: 1428
    functionLinenumberEnd: 1523
    functionName: preprocess_expression
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - eval_const_expressions
    - convert_saop_to_hashed_saop
    - flatten_join_alias_vars
    - pprint
    - SS_process_sublinks
    - printf
    - SS_replace_correlation_vars
    - canonicalize_qual
    - make_ands_implicit
    linkageType: ''
    returnType: Node
    signature: 'Node *

      preprocess_expression(PlannerInfo *root, Node *expr, int kind)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1535,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1539,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1544,1
    - Dst: preprocess_qual_conditions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1545,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1545,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1547,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1549,1
    - Dst: preprocess_qual_conditions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1553,1
    - Dst: preprocess_qual_conditions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1554,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1556,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1559,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1560,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - root
    - jtnode
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1530
    functionDepth: 2
    functionLinenumber: 1530
    functionLinenumberEnd: 1561
    functionName: preprocess_qual_conditions
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - preprocess_qual_conditions
    - lfirst
    - preprocess_expression
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void preprocess_qual_conditions(PlannerInfo *root, Node *jtnode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1600,1
    - Dst: expression_has_grouping_conflict
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1602,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - parse
    - group_rtindex
    argTypes:
    - Query*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1609
      start: 1586
    functionDepth: 1
    functionLinenumber: 1586
    functionLinenumberEnd: 1609
    functionName: find_having_conflicts
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - expression_has_grouping_conflict
    - bms_add_member
    - foreach_ptr
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      find_having_conflicts(Query *parse, Index group_rtindex)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: group_var_eqop
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1626,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - var
    - context
    argTypes:
    - Var*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1618
    functionDepth: 1
    functionLinenumber: 1618
    functionLinenumberEnd: 1627
    functionName: having_var_grouping_eqop
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - group_var_eqop
    linkageType: ''
    returnType: Oid
    signature: Oid having_var_grouping_eqop(Var *var, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1644,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1646,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1648,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1654,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - parse
    - var
    argTypes:
    - Query*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1639
    functionDepth: 1
    functionLinenumber: 1639
    functionLinenumberEnd: 1657
    functionName: group_var_eqop
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - Assert
    - elog
    - get_sortgroupclause_tle
    - foreach_node
    linkageType: ''
    returnType: Oid
    signature: Oid group_var_eqop(Query *parse, Var *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1674
      start: 1670
    functionDepth: 2
    functionLinenumber: 1670
    functionLinenumberEnd: 1674
    functionName: preprocess_phv_expression
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - preprocess_expression
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      preprocess_phv_expression(PlannerInfo *root, Expr *expr)'
  - BBCount: 54
    BranchProfiles: []
    Callsites:
    - Dst: preprocess_limit
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1724,1
    - Dst: plan_set_operations
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1755,1
    - Dst: postprocess_setop_tlist
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1759,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1759,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1770,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1778,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1779,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1782,1
    - Dst: LCS_asString
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1783,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1789,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1817,1
    - Dst: preprocess_grouping_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1822,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1827,1
    - Dst: preprocess_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1837,1
    - Dst: preprocess_aggrefs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1848,1
    - Dst: preprocess_aggrefs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1849,1
    - Dst: find_window_functions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1860,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1861,1
    - Dst: optimize_window_clauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1869,1
    - Dst: select_active_windows
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1872,1
    - Dst: name_active_windows
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1875,1
    - Dst: preprocess_minmax_aggregates
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1888,1
    - Dst: query_planner
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1924,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1935,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1937,1
    - Dst: make_sort_input_target
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1946,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1950,1
    - Dst: make_window_input_target
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1965,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1969,1
    - Dst: make_group_input_target
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1986,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1988,1
    - Dst: split_pathtarget_at_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2005,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2009,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2009,1
    - Dst: split_pathtarget_at_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2011,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2014,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2015,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2015,1
    - Dst: split_pathtarget_at_srfs_grouping
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2017,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2021,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2022,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2022,1
    - Dst: split_pathtarget_at_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2024,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2027,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2028,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2028,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2036,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2041,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2042,1
    - Dst: apply_scanjoin_target_to_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2043,1
    - Dst: create_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2069,1
    - Dst: adjust_paths_for_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2076,1
    - Dst: create_window_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2087,1
    - Dst: adjust_paths_for_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2096,1
    - Dst: create_distinct_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2107,1
    - Dst: create_ordered_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2122,1
    - Dst: adjust_paths_for_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2130,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2138,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2148,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2149,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2164,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2166,1
    - Dst: create_lockrows_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2177,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2179,1
    - Dst: limit_needed
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2185,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2187,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2208,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2211,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2219,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2222,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2230,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2234,1
    - Dst: adjust_inherited_attnums_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2242,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2246,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2255,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2259,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2268,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2272,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2284,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2286,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2287,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2290,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2295,1
    - Dst: adjust_inherited_attnums_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2301,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2305,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2309,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2318,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2322,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2340,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2342,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2344,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2346,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2348,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2350,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2357,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2359,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2361,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2363,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2365,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2367,1
    - Dst: create_modifytable_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2381,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2396,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2400,1
    - Dst: limit_needed
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2410,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2411,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2413,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2415,1
    - Dst: limit_needed
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2419,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2430,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 221
    argCount: 3
    argNames:
    - root
    - tuple_fraction
    - setops
    argTypes:
    - PlannerInfo*
    - double
    - SetOperationStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2440
      start: 1703
    functionDepth: 1
    functionLinenumber: 1703
    functionLinenumberEnd: 2440
    functionName: grouping_planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_limit_path
    - lappend_int
    - copyObject
    - make_group_input_target
    - optimize_window_clauses
    - errcode
    - query_planner
    - apply_scanjoin_target_to_paths
    - adjust_inherited_attnums_multilevel
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - linitial_int
    - make_sort_input_target
    - create_grouping_paths
    - adjust_paths_for_srfs
    - IS_DUMMY_REL
    - fetch_upper_rel
    - preprocess_grouping_sets
    - foreach
    - LCS_asString
    - linitial_node
    - Assert
    - select_active_windows
    - postprocess_setop_tlist
    - find_base_rel
    - errmsg
    - list_length
    - bms_next_member
    - preprocess_minmax_aggregates
    - add_path
    - create_distinct_paths
    - make_window_input_target
    - equal
    - lappend
    - ereport
    - create_pathtarget
    - split_pathtarget_at_srfs_grouping
    - create_ordered_paths
    - lfirst
    - create_lockrows_path
    - assign_special_exec_param
    - list_make1
    - preprocess_aggrefs
    - bms_membership
    - preprocess_targetlist
    - plan_set_operations
    - find_window_functions
    - adjust_appendrel_attrs_multilevel
    - split_pathtarget_at_srfs
    - preprocess_limit
    - make_pathkeys_for_sortclauses
    - create_modifytable_path
    - limit_needed
    - add_partial_path
    - name_active_windows
    - is_parallel_safe
    - preprocess_groupclause
    - list_make1_int
    - create_window_paths
    linkageType: ''
    returnType: void
    signature: "void grouping_planner(PlannerInfo *root, double tuple_fraction,\n\t\t\t\t
      SetOperationStmt *setops)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2458,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2476,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2478,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2485,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2487,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2488,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2493,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2501,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2506,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2508,1
    - Dst: bms_overlap_list
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2510,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2512,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2515,1
    - Dst: bms_overlap_list
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2526,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2527,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2528,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2529,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2532,1
    - Dst: extract_rollup_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2536,1
    - Dst: extract_rollup_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2541,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2545,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2546,1
    - Dst: reorder_grouping_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2559,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2560,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2567,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2579,1
    - Dst: bms_overlap_list
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2590,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2603,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2608,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2618,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2625
      start: 2451
    functionDepth: 1
    functionLinenumber: 2451
    functionLinenumberEnd: 2625
    functionName: preprocess_grouping_sets
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - errcode
    - extract_rollup_sets
    - reorder_grouping_sets
    - palloc
    - bms_add_member
    - foreach
    - linitial_node
    - errmsg
    - list_length
    - OidIsValid
    - palloc0_object
    - remap_to_groupclause_idx
    - lappend
    - ereport
    - lfirst
    - lfirst_node
    - makeNode
    - errdetail
    - bms_overlap_list
    - bms_is_empty
    - preprocess_groupclause
    linkageType: ''
    returnType: grouping_sets_data
    signature: 'grouping_sets_data *

      preprocess_grouping_sets(PlannerInfo *root)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2545,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2546,1
    - Dst: reorder_grouping_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2559,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2560,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2567,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2579,1
    - Dst: bms_overlap_list
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2590,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2603,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2608,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2609
      start: 2543
    functionDepth: 1
    functionLinenumber: 2543
    functionLinenumberEnd: 2609
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 34
    functionsReached:
    - linitial_node
    - remap_to_groupclause_idx
    - lappend
    - makeNode
    - reorder_grouping_sets
    - lfirst
    - list_length
    - preprocess_groupclause
    - bms_overlap_list
    linkageType: ''
    returnType: void
    signature: void foreach(lc_set, sets)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2642,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2651,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2653,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2655,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2655,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - groupClause
    - gsets
    - tleref_to_colnum_map
    argTypes:
    - List*
    - List*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2662
      start: 2631
    functionDepth: 1
    functionLinenumber: 2631
    functionLinenumberEnd: 2662
    functionName: remap_to_groupclause_idx
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - lappend_int
    - foreach
    - lfirst_int
    - lappend
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: "List *\nremap_to_groupclause_idx(List *groupClause,\n\t\t\t\t\t\t
      List *gsets,\n\t\t\t\t\t\t int *tleref_to_colnum_map)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2645
      start: 2640
    functionDepth: 1
    functionLinenumber: 2640
    functionLinenumberEnd: 2645
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 35
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, groupClause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2651,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2653,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2655,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2655,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2659
      start: 2647
    functionDepth: 1
    functionLinenumber: 2647
    functionLinenumberEnd: 2659
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 36
    functionsReached:
    - lappend_int
    - foreach
    - lfirst_int
    - lappend
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, gsets)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CheckSelectLocking
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2685,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2685,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2705,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2707,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2713,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2715,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2724,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2735,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2737,1
    - Dst: select_rowmark_type
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2740,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2746,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2753,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2755,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2759,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2762,1
    - Dst: select_rowmark_type
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2765,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2771,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2775
      start: 2668
    functionDepth: 1
    functionLinenumber: 2668
    functionLinenumberEnd: 2775
    functionName: preprocess_rowmarks
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - foreach
    - linitial_node
    - get_relids_in_jointree
    - Assert
    - rt_fetch
    - lappend
    - makeNode
    - bms_is_member
    - select_rowmark_type
    - CheckSelectLocking
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void preprocess_rowmarks(PlannerInfo *root)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: GetFdwRoutineByRelId
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2791,1
    - Dst: FdwRoutine*::GetForeignRowMarkType
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2794,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2824,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - rte
    - strength
    argTypes:
    - RangeTblEntry*
    - LockClauseStrength
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2827
      start: 2780
    functionDepth: 1
    functionLinenumber: 2780
    functionLinenumberEnd: 2827
    functionName: select_rowmark_type
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - elog
    - FdwRoutine*::GetForeignRowMarkType
    - GetFdwRoutineByRelId
    linkageType: ''
    returnType: RowMarkType
    signature: RowMarkType select_rowmark_type(RangeTblEntry *rte, LockClauseStrength
      strength)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2855,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2863,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2864,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2873,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2886,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2887,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2896,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2937,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2954,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 72
    argCount: 4
    argNames:
    - root
    - tuple_fraction
    - offset_est
    - count_est
    argTypes:
    - PlannerInfo*
    - double
    - int64*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3015
      start: 2846
    functionDepth: 1
    functionLinenumber: 2846
    functionLinenumberEnd: 3015
    functionName: preprocess_limit
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - DatumGetInt64
    - Assert
    - estimate_expression_value
    - Min
    - IsA
    linkageType: ''
    returnType: double
    signature: "double preprocess_limit(PlannerInfo *root, double tuple_fraction,\n\t\t\t\t
      int64 *offset_est, int64 *count_est)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3039,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3052,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3057,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3068
      start: 3031
    functionDepth: 1
    functionLinenumber: 3031
    functionLinenumberEnd: 3068
    functionName: limit_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - IsA
    - DatumGetInt64
    linkageType: ''
    returnType: bool
    signature: bool limit_needed(Query *parse)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3110,1
    - Dst: get_sortgroupref_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3111,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3113,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3121,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3129,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3131,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3133,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3135,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3137,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3139,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3150,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3158,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3160,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3162,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3164,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3165,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3170,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3170,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3170,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - root
    - force
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3172
      start: 3097
    functionDepth: 1
    functionLinenumber: 3097
    functionLinenumberEnd: 3172
    functionName: preprocess_groupclause
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 3
    functionsReached:
    - foreach
    - list_length
    - lfirst_int
    - Assert
    - OidIsValid
    - lappend
    - list_member_ptr
    - list_copy
    - equal
    - get_sortgroupref_clause
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      preprocess_groupclause(PlannerInfo *root, List *force)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3110,1
    - Dst: get_sortgroupref_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3111,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3114
      start: 3108
    functionDepth: 1
    functionLinenumber: 3108
    functionLinenumberEnd: 3114
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 38
    functionsReached:
    - get_sortgroupref_clause
    - lappend
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(sl, force)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3196,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3211,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3219,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3222,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3227,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3247,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3248,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3249,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3250,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3258,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3265,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3265,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3269,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3275,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3282,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3284,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3290,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3291,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3298,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3305,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3312,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3313,1
    - Dst: BipartiteMatch
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3327,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3335,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3357,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3359,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3364,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3368,1
    - Dst: BipartiteMatchFree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3376,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3377,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3378,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3381,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3382,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3383,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3384,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3386,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3387,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 79
    argCount: 1
    argNames:
    - groupingSets
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3390
      start: 3193
    functionDepth: 2
    functionLinenumber: 3193
    functionLinenumberEnd: 3390
    functionName: extract_rollup_sets
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - BipartiteMatchFree
    - lfirst_int
    - bms_free
    - list_head
    - list_concat
    - bms_add_member
    - bms_is_subset
    - memcpy
    - Assert
    - pfree
    - lnext
    - BipartiteMatch
    - bms_equal
    - list_length
    - lappend
    - lfirst
    - list_make1
    - palloc0
    - palloc
    - lcons
    linkageType: ''
    returnType: List
    signature: 'List *

      extract_rollup_sets(List *groupingSets)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3258,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3265,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3265,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3269,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3275,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3282,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3284,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3290,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3291,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3298,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3305,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3312,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3313,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3320
      start: 3256
    functionDepth: 1
    functionLinenumber: 3256
    functionLinenumberEnd: 3320
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - memcpy
    - lfirst_int
    - bms_equal
    - lappend
    - bms_free
    - lfirst
    - palloc
    - list_length
    - list_make1
    - bms_add_member
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void for_each_cell(lc, groupingSets, lc1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3265,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3266
      start: 3263
    functionDepth: 1
    functionLinenumber: 3263
    functionLinenumberEnd: 3266
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 38
    functionsReached:
    - bms_add_member
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, candidate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3414,1
    - Dst: list_difference_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3415,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3416,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3418,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3418,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3421,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3421,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3424,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3426,1
    - Dst: list_delete_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3427,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3437,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3439,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3440,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3443,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - groupingSets
    - sortclause
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3446
      start: 3405
    functionDepth: 3
    functionLinenumber: 3405
    functionLinenumberEnd: 3446
    functionName: reorder_grouping_sets
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - lappend_int
    - list_free
    - list_difference_int
    - list_member_int
    - makeNode
    - lfirst
    - list_concat
    - list_copy
    - list_delete_int
    - list_length
    - list_nth
    - lcons
    linkageType: ''
    returnType: List
    signature: 'List *

      reorder_grouping_sets(List *groupingSets, List *sortclause)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3414,1
    - Dst: list_difference_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3415,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3416,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3418,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3418,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3421,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3421,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3424,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3426,1
    - Dst: list_delete_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3427,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3437,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3439,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3440,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3441
      start: 3412
    functionDepth: 3
    functionLinenumber: 3412
    functionLinenumberEnd: 3441
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 38
    functionsReached:
    - lappend_int
    - list_difference_int
    - list_member_int
    - makeNode
    - lfirst
    - list_concat
    - list_copy
    - list_delete_int
    - list_length
    - list_nth
    - lcons
    linkageType: ''
    returnType: void
    signature: void foreach(lc, groupingSets)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - keys
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3467
      start: 3453
    functionDepth: 1
    functionLinenumber: 3453
    functionLinenumberEnd: 3467
    functionName: has_volatile_pathkey
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: bool has_volatile_pathkey(List *keys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3464
      start: 3458
    functionDepth: 1
    functionLinenumber: 3458
    functionLinenumberEnd: 3464
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 38
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, keys)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3511,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3522,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3524,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3525,1
    - Dst: AGGKIND_IS_ORDERED_SET
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3527,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3553,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3555,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3558,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3559,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3562,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3562,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3575,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3576,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3596,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3596,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3602,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3604,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3605,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3614,1
    - Dst: has_volatile_pathkey
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3621,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3623,1
    - Dst: append_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3637,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3637,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3641,1
    - Dst: append_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3649,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3649,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3653,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3666,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3676,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3682,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3682,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3706,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3708,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3710,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3712,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 74
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3717
      start: 3498
    functionDepth: 2
    functionLinenumber: 3498
    functionLinenumberEnd: 3717
    functionName: adjust_group_pathkeys_for_groupagg
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - bms_del_member
    - compare_pathkeys
    - append_pathkeys
    - bms_add_member
    - foreach
    - linitial_node
    - Assert
    - list_nth_node
    - list_copy
    - bms_next_member
    - IsA
    - bms_num_members
    - lfirst
    - AGGKIND_IS_ORDERED_SET
    - lfirst_node
    - bms_del_members
    - castNode
    - make_pathkeys_for_sortclauses
    - has_volatile_pathkey
    - foreach_current_index
    linkageType: ''
    returnType: void
    signature: void adjust_group_pathkeys_for_groupagg(PlannerInfo *root)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3743,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3745,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3756,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3763,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3764,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3789,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3804,1
    - Dst: adjust_group_pathkeys_for_groupagg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3807,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3819,1
    - Dst: make_pathkeys_for_window
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3821,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3839,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3841,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3855,1
    - Dst: generate_setop_child_grouplist
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3865,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3868,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3905,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3906,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 2
    argNames:
    - root
    - extra
    argTypes:
    - PlannerInfo*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3914
      start: 3722
    functionDepth: 3
    functionLinenumber: 3722
    functionLinenumberEnd: 3914
    functionName: standard_qp_callback
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - generate_setop_child_grouplist
    - make_pathkeys_for_sortclauses_extended
    - linitial_node
    - Assert
    - make_pathkeys_for_sortclauses
    - list_copy
    - make_pathkeys_for_window
    - list_length
    - grouping_is_sortable
    - adjust_group_pathkeys_for_groupagg
    linkageType: ''
    returnType: void
    signature: void standard_qp_callback(PlannerInfo *root, void *extra)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3945,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3949,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3951,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3955,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3960,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3962,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3963,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3964,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3983,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3986,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3988,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3989,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3990,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4006,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4009,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4016,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 4
    argNames:
    - root
    - path_rows
    - gd
    - target_list
    argTypes:
    - PlannerInfo*
    - double
    - grouping_sets_data*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4030
      start: 3927
    functionDepth: 1
    functionLinenumber: 3927
    functionLinenumberEnd: 4030
    functionName: get_number_of_groups
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - foreach
    - Assert
    - lfirst_node
    - lfirst
    - list_length
    - get_sortgrouplist_exprs
    - estimate_num_groups
    - forboth
    linkageType: ''
    returnType: double
    signature: "double get_number_of_groups(PlannerInfo *root,\n\t\t\t\t\t double
      path_rows,\n\t\t\t\t\t grouping_sets_data *gd,\n\t\t\t\t\t List *target_list)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4061,1
    - Dst: get_agg_clause_costs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4062,1
    - Dst: make_grouping_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4068,1
    - Dst: is_degenerate_grouping
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4075,1
    - Dst: create_degenerate_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4076,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4094,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4119,1
    - Dst: can_partial_agg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4125,1
    - Dst: create_ordinary_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4145,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4150,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 5
    argNames:
    - root
    - input_rel
    - target
    - target_parallel_safe
    - gd
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - bool
    - grouping_sets_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4152
      start: 4049
    functionDepth: 1
    functionLinenumber: 4049
    functionLinenumberEnd: 4152
    functionName: create_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_degenerate_grouping_paths
    - make_grouping_rel
    - can_partial_agg
    - grouping_is_hashable
    - create_ordinary_grouping_paths
    - set_cheapest
    - get_agg_clause_costs
    - MemSet
    - is_degenerate_grouping
    - grouping_is_sortable
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\ncreate_grouping_paths(PlannerInfo *root,\n\t\t\t\t\t
      \ RelOptInfo *input_rel,\n\t\t\t\t\t  PathTarget *target,\n\t\t\t\t\t  bool
      target_parallel_safe,\n\t\t\t\t\t  grouping_sets_data *gd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4169,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4171,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4182,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - root
    - input_rel
    - target
    - target_parallel_safe
    - havingQual
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - bool
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4209
      start: 4162
    functionDepth: 1
    functionLinenumber: 4162
    functionLinenumberEnd: 4209
    functionName: make_grouping_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - is_parallel_safe
    - fetch_upper_rel
    - IS_OTHER_REL
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\nmake_grouping_rel(PlannerInfo *root, RelOptInfo *input_rel,\n\t\t\t\t
      \ PathTarget *target, bool target_parallel_safe,\n\t\t\t\t  Node *havingQual)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4225
      start: 4218
    functionDepth: 0
    functionLinenumber: 4218
    functionLinenumberEnd: 4225
    functionName: is_degenerate_grouping
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_degenerate_grouping(PlannerInfo *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4247,1
    - Dst: create_group_result_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4262,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4265,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4268,1
    - Dst: create_group_result_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4281,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - root
    - input_rel
    - grouped_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4287
      start: 4239
    functionDepth: 1
    functionLinenumber: 4239
    functionLinenumberEnd: 4287
    functionName: create_degenerate_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_group_result_path
    - lappend
    - create_append_path
    - list_length
    - add_path
    linkageType: ''
    returnType: void
    signature: "void create_degenerate_grouping_paths(PlannerInfo *root, RelOptInfo
      *input_rel,\n\t\t\t\t\t\t\t\t RelOptInfo *grouped_rel)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4320,1
    - Dst: group_by_has_partkey
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4336,1
    - Dst: create_partial_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4362,1
    - Dst: create_partitionwise_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4382,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4385,1
    - Dst: gather_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4392,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4396,1
    - Dst: add_paths_to_grouping_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4405,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4406,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4407,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4408,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4416,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 32
    argCount: 7
    argNames:
    - root
    - input_rel
    - grouped_rel
    - agg_costs
    - gd
    - extra
    - partially_grouped_rel_p
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - AggClauseCosts*
    - grouping_sets_data*
    - GroupPathExtraData*
    - RelOptInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4425
      start: 4302
    functionDepth: 1
    functionLinenumber: 4302
    functionLinenumberEnd: 4425
    functionName: create_ordinary_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - errcode
    - Assert
    - errdetail
    - IS_PARTITIONED_REL
    - ereport
    - gather_grouping_paths
    - create_partitionwise_grouping_paths
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - create_partial_grouping_paths
    - errmsg
    - set_cheapest
    - group_by_has_partkey
    - add_paths_to_grouping_rel
    linkageType: ''
    returnType: void
    signature: "void create_ordinary_grouping_paths(PlannerInfo *root, RelOptInfo
      *input_rel,\n\t\t\t\t\t\t\t   RelOptInfo *grouped_rel,\n\t\t\t\t\t\t\t   const
      AggClauseCosts *agg_costs,\n\t\t\t\t\t\t\t   grouping_sets_data *gd,\n\t\t\t\t\t\t\t
      \  GroupPathExtraData *extra,\n\t\t\t\t\t\t\t   RelOptInfo **partially_grouped_rel_p)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4444,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4465,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4470,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4493,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4495,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4497,1
    - Dst: estimate_hashagg_tablesize
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4500,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4517,1
    - Dst: for_each_cell
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4519,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4521,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4537,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4541,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4548,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4549,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4553,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4555,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4556,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4557,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4578,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4582,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4587,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4592,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4595,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4599,1
    - Dst: create_groupingsets_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4600,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4627,1
    - Dst: estimate_hashagg_tablesize
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4634,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4639,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4642,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4644,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4670,1
    - Dst: floor
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4671,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4680,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4682,1
    - Dst: estimate_hashagg_tablesize
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4686,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4695,1
    - Dst: floor
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4695,1
    - Dst: DiscreteKnapsack
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4708,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4710,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4712,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4712,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4715,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4717,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4721,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4722,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4725,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4729,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4735,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4739,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4740,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4742,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4744,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4745,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4746,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4752,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4757,1
    - Dst: create_groupingsets_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4758,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4772,1
    - Dst: create_groupingsets_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4773,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 98
    argCount: 8
    argNames:
    - root
    - grouped_rel
    - path
    - is_sorted
    - can_hash
    - gd
    - agg_costs
    - dNumGroups
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - bool
    - bool
    - grouping_sets_data*
    - AggClauseCosts*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4780
      start: 4433
    functionDepth: 2
    functionLinenumber: 4433
    functionLinenumberEnd: 4780
    functionName: consider_groupingsets_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - for_each_from
    - Min
    - list_head
    - list_concat
    - create_groupingsets_path
    - get_hash_memory_limit
    - DiscreteKnapsack
    - Assert
    - floor
    - linitial
    - bms_is_member
    - lnext
    - pathkeys_contained_in
    - list_copy
    - list_length
    - add_path
    - remap_to_groupclause_idx
    - lappend
    - list_make1
    - for_each_cell
    - lfirst_node
    - estimate_hashagg_tablesize
    - makeNode
    - Max
    - palloc
    - preprocess_groupclause
    - bms_is_empty
    - lcons
    linkageType: ''
    returnType: void
    signature: "void consider_groupingsets_paths(PlannerInfo *root,\n\t\t\t\t\t\t\tRelOptInfo
      *grouped_rel,\n\t\t\t\t\t\t\tPath *path,\n\t\t\t\t\t\t\tbool is_sorted,\n\t\t\t\t\t\t\tbool
      can_hash,\n\t\t\t\t\t\t\tgrouping_sets_data *gd,\n\t\t\t\t\t\t\tconst AggClauseCosts
      *agg_costs,\n\t\t\t\t\t\t\tdouble dNumGroups)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4541,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4548,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4549,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4553,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4555,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4556,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4557,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4565
      start: 4539
    functionDepth: 2
    functionLinenumber: 4539
    functionLinenumberEnd: 4565
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 40
    functionsReached:
    - remap_to_groupclause_idx
    - lappend
    - makeNode
    - list_make1
    - preprocess_groupclause
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, sets_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4739,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4740,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4742,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4744,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4745,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4746,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4753
      start: 4737
    functionDepth: 2
    functionLinenumber: 4737
    functionLinenumberEnd: 4753
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 40
    functionsReached:
    - Assert
    - remap_to_groupclause_idx
    - makeNode
    - list_make1
    - preprocess_groupclause
    - lcons
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, hash_sets)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4808,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4816,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4832,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4834,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4838,1
    - Dst: create_one_window_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4841,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4856,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4866,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 7
    argNames:
    - root
    - input_rel
    - input_target
    - output_target
    - output_target_parallel_safe
    - wflists
    - activeWindows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - PathTarget*
    - bool
    - WindowFuncLists*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4869
      start: 4795
    functionDepth: 1
    functionLinenumber: 4795
    functionLinenumberEnd: 4869
    functionName: create_window_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - foreach
    - pathkeys_count_contained_in
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - create_one_window_path
    - lfirst
    - set_cheapest
    - is_parallel_safe
    - fetch_upper_rel
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\ncreate_window_paths(PlannerInfo *root,\n\t\t\t\t\tRelOptInfo
      *input_rel,\n\t\t\t\t\tPathTarget *input_target,\n\t\t\t\t\tPathTarget *output_target,\n\t\t\t\t\tbool
      output_target_parallel_safe,\n\t\t\t\t\tWindowFuncLists *wflists,\n\t\t\t\t\tList
      *activeWindows)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4914,1
    - Dst: make_pathkeys_for_window
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4922,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4926,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4938,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4948,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4957,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4969,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4970,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4972,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4974,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4975,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4977,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4986,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4986,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4992,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4995,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4997,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5000,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5007,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5008,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5012,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5013,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5016,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5024,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5027,1
    - Dst: create_windowagg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5032,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5038,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 7
    argNames:
    - root
    - window_rel
    - path
    - input_target
    - output_target
    - wflists
    - activeWindows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    - PathTarget*
    - WindowFuncLists*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5039
      start: 4882
    functionDepth: 2
    functionLinenumber: 4882
    functionLinenumberEnd: 5039
    functionName: create_one_window_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - add_column_to_pathtarget
    - copyObject
    - copy_pathtarget
    - foreach
    - clamp_width_est
    - create_sort_path
    - lappend
    - pathkeys_count_contained_in
    - lnext
    - create_windowagg_path
    - add_path
    - create_incremental_sort_path
    - make_opclause
    - make_pathkeys_for_window
    - list_length
    - foreach_current_index
    - get_typavgwidth
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void create_one_window_path(PlannerInfo *root,\n\t\t\t\t\t   RelOptInfo
      *window_rel,\n\t\t\t\t\t   Path *path,\n\t\t\t\t\t   PathTarget *input_target,\n\t\t\t\t\t
      \  PathTarget *output_target,\n\t\t\t\t\t   WindowFuncLists *wflists,\n\t\t\t\t\t
      \  List *activeWindows)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4914,1
    - Dst: make_pathkeys_for_window
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4922,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4926,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4938,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4948,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4957,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4969,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4970,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4972,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4974,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4975,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4977,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4986,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4986,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4992,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4995,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4997,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5000,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5007,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5008,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5012,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5013,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5016,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5024,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5027,1
    - Dst: create_windowagg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5032,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5036
      start: 4912
    functionDepth: 2
    functionLinenumber: 4912
    functionLinenumberEnd: 5036
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 43
    functionsReached:
    - add_column_to_pathtarget
    - copyObject
    - copy_pathtarget
    - foreach
    - clamp_width_est
    - create_sort_path
    - lappend
    - pathkeys_count_contained_in
    - lnext
    - create_windowagg_path
    - create_incremental_sort_path
    - make_opclause
    - make_pathkeys_for_window
    - list_length
    - foreach_current_index
    - get_typavgwidth
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeWindows)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5059,1
    - Dst: create_final_distinct_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5079,1
    - Dst: create_partial_distinct_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5082,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5086,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5087,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5088,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5089,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5097,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - root
    - input_rel
    - target
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5112
      start: 5052
    functionDepth: 1
    functionLinenumber: 5052
    functionLinenumberEnd: 5112
    functionName: create_distinct_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_partial_distinct_paths
    - errcode
    - ereport
    - set_cheapest
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - errmsg
    - create_final_distinct_paths
    - errdetail
    - fetch_upper_rel
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\ncreate_distinct_paths(PlannerInfo *root, RelOptInfo
      *input_rel,\n\t\t\t\t\t  PathTarget *target)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5144,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5157,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5159,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5163,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5174,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5176,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5178,1
    - Dst: get_useful_pathkeys_for_distinct
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5186,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5186,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5190,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5209,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5211,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5225,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5226,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5235,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5236,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5238,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5251,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5253,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5254,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5272,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5285,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5286,1
    - Dst: create_final_distinct_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5293,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 4
    argNames:
    - root
    - input_rel
    - final_distinct_rel
    - target
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5296
      start: 5122
    functionDepth: 1
    functionLinenumber: 5122
    functionLinenumberEnd: 5296
    functionName: create_partial_distinct_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_limit_path
    - make_ordered_path
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - get_useful_pathkeys_for_distinct
    - makeConst
    - grouping_is_sortable
    - estimate_num_groups
    - fetch_upper_rel
    - generate_useful_gather_paths
    - foreach
    - Assert
    - linitial
    - create_final_distinct_paths
    - list_length
    - create_unique_path
    - create_agg_path
    - lfirst
    - get_sortgrouplist_exprs
    - Int64GetDatum
    - grouping_is_hashable
    - add_partial_path
    - set_cheapest
    linkageType: ''
    returnType: void
    signature: "void create_partial_distinct_paths(PlannerInfo *root, RelOptInfo *input_rel,\n\t\t\t\t\t\t\t
      \ RelOptInfo *final_distinct_rel,\n\t\t\t\t\t\t\t  PathTarget *target)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5190,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5209,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5211,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5225,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5226,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5235,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5236,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5238,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5241
      start: 5188
    functionDepth: 1
    functionLinenumber: 5188
    functionLinenumberEnd: 5241
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_limit_path
    - create_unique_path
    - make_ordered_path
    - add_partial_path
    - list_length
    - makeConst
    - Int64GetDatum
    linkageType: ''
    returnType: void
    signature: void foreach_node(List, useful_pathkeys, useful_pathkeys_list)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5332,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5334,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5342,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5365,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5366,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5371,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5373,1
    - Dst: get_useful_pathkeys_for_distinct
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5378,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5381,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5381,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5385,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5412,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5414,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5422,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5423,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5429,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5430,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5432,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5458,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5461,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5462,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 3
    argNames:
    - root
    - input_rel
    - distinct_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5475
      start: 5305
    functionDepth: 1
    functionLinenumber: 5305
    functionLinenumberEnd: 5475
    functionName: create_final_distinct_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - create_limit_path
    - create_unique_path
    - make_ordered_path
    - foreach
    - Assert
    - grouping_is_hashable
    - add_path
    - create_agg_path
    - lfirst
    - Int64GetDatum
    - get_useful_pathkeys_for_distinct
    - list_length
    - makeConst
    - get_sortgrouplist_exprs
    - grouping_is_sortable
    - estimate_num_groups
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\ncreate_final_distinct_paths(PlannerInfo *root, RelOptInfo
      *input_rel,\n\t\t\t\t\t\t\tRelOptInfo *distinct_rel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5385,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5412,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5414,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5422,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5423,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5429,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5430,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5432,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5435
      start: 5383
    functionDepth: 1
    functionLinenumber: 5383
    functionLinenumberEnd: 5435
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_limit_path
    - create_unique_path
    - make_ordered_path
    - Int64GetDatum
    - list_length
    - makeConst
    - add_path
    linkageType: ''
    returnType: void
    signature: void foreach_node(List, useful_pathkeys, useful_pathkeys_list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5493,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5514,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5517,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5520,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5531,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5531,1
    - Dst: list_concat_unique_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5536,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5543,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5547,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 3
    argNames:
    - root
    - needed_pathkeys
    - path_pathkeys
    argTypes:
    - PlannerInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5551
      start: 5485
    functionDepth: 1
    functionLinenumber: 5485
    functionLinenumberEnd: 5551
    functionName: get_useful_pathkeys_for_distinct
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - compare_pathkeys
    - list_concat_unique_ptr
    - lappend
    - list_member_ptr
    - list_length
    linkageType: ''
    returnType: List
    signature: "List *\nget_useful_pathkeys_for_distinct(PlannerInfo *root, List *needed_pathkeys,\n\t\t\t\t\t\t\t\t
      List *path_pathkeys)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5514,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5517,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5520,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5521
      start: 5508
    functionDepth: 1
    functionLinenumber: 5508
    functionLinenumberEnd: 5521
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - lappend
    - list_member_ptr
    linkageType: ''
    returnType: void
    signature: void foreach_node(PathKey, pathkey, path_pathkeys)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5582,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5603,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5605,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5610,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5634,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5640,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5652,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5653,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5656,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5675,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5677,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5679,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5685,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5709,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5715,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5721,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5723,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5733,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5734,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5737,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5747,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5760,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 47
    argCount: 5
    argNames:
    - root
    - input_rel
    - target
    - target_parallel_safe
    - limit_tuples
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - bool
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5763
      start: 5570
    functionDepth: 1
    functionLinenumber: 5570
    functionLinenumberEnd: 5763
    functionName: create_ordered_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - foreach
    - create_sort_path
    - apply_projection_to_path
    - linitial
    - Assert
    - pathkeys_count_contained_in
    - create_incremental_sort_path
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - compute_gather_rows
    - lfirst
    - create_gather_merge_path
    - equal
    - add_path
    - fetch_upper_rel
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\ncreate_ordered_paths(PlannerInfo *root,\n\t\t\t\t\t
      RelOptInfo *input_rel,\n\t\t\t\t\t PathTarget *target,\n\t\t\t\t\t bool target_parallel_safe,\n\t\t\t\t\t
      double limit_tuples)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5807,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5811,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5813,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5814,1
    - Dst: get_sortgroupref_clause_noerr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5829,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5831,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5832,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5835,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5843,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5853,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5873,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5875,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5876,1
    - Dst: add_new_columns_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5879,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5882,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5883,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5886,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - root
    - final_target
    argTypes:
    - PlannerInfo*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5887
      start: 5793
    functionDepth: 1
    functionLinenumber: 5793
    functionLinenumberEnd: 5887
    functionName: make_group_input_target
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - add_column_to_pathtarget
    - foreach
    - get_pathtarget_sortgroupref
    - list_free
    - Assert
    - remove_nulling_relids
    - lappend
    - get_sortgroupref_clause_noerr
    - create_empty_pathtarget
    - lfirst
    - pull_var_clause
    - set_pathtarget_cost_width
    - add_new_columns_to_pathtarget
    - bms_make_singleton
    linkageType: ''
    returnType: PathTarget
    signature: 'PathTarget *

      make_group_input_target(PlannerInfo *root, PathTarget *final_target)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5916,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5920,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5922,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5923,1
    - Dst: get_sortgroupref_clause_noerr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5926,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5933,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5941,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5951,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5960,1
    - Dst: add_new_columns_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5965,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5972,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5974,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5976,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5984,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5985,1
    - Dst: mark_partial_aggref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5988,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5990,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5995,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5996,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5999,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - root
    - grouping_target
    - havingQual
    argTypes:
    - PlannerInfo*
    - PathTarget*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6000
      start: 5905
    functionDepth: 1
    functionLinenumber: 5905
    functionLinenumberEnd: 6000
    functionName: make_partial_grouping_target
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - add_column_to_pathtarget
    - foreach
    - get_pathtarget_sortgroupref
    - memcpy
    - mark_partial_aggref
    - list_free
    - lappend
    - makeNode
    - get_sortgroupref_clause_noerr
    - create_empty_pathtarget
    - lfirst
    - pull_var_clause
    - set_pathtarget_cost_width
    - IsA
    - add_new_columns_to_pathtarget
    linkageType: ''
    returnType: PathTarget
    signature: "PathTarget *\nmake_partial_grouping_target(PlannerInfo *root,\n\t\t\t\t\t\t\t
      PathTarget *grouping_target,\n\t\t\t\t\t\t\t Node *havingQual)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6012,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6012,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6014,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6024,1
    - Dst: DO_AGGSPLIT_SERIALIZE
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6026,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - agg
    - aggsplit
    argTypes:
    - Aggref*
    - AggSplit
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6031
      start: 6008
    functionDepth: 1
    functionLinenumber: 6008
    functionLinenumberEnd: 6031
    functionName: mark_partial_aggref
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - Assert
    - OidIsValid
    - DO_AGGSPLIT_SERIALIZE
    - DO_AGGSPLIT_SKIPFINAL
    linkageType: ''
    returnType: void
    signature: void mark_partial_aggref(Aggref *agg, AggSplit aggsplit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6047,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6051,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6058,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6059,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6060,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6062,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6063,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6067,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - new_tlist
    - orig_tlist
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6069
      start: 6043
    functionDepth: 2
    functionLinenumber: 6043
    functionLinenumberEnd: 6069
    functionName: postprocess_setop_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - lnext
    - list_head
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      postprocess_setop_tlist(List *new_tlist, List *orig_tlist)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6051,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6058,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6059,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6060,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6062,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6063,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6065
      start: 6049
    functionDepth: 2
    functionLinenumber: 6049
    functionLinenumberEnd: 6065
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 48
    functionsReached:
    - Assert
    - lnext
    - elog
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, new_tlist)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6088,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6092,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6098,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6102,1
    - Dst: get_func_support
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6105,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6108,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6118,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6118,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6119,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6132,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6158,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6167,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6177,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6178,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6180,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6181,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6191,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6193,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6199,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 37
    argCount: 2
    argNames:
    - root
    - wflists
    argTypes:
    - PlannerInfo*
    - WindowFuncLists*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6213
      start: 6080
    functionDepth: 1
    functionLinenumber: 6080
    functionLinenumberEnd: 6213
    functionName: optimize_window_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - equal
    - foreach
    - list_length
    - Assert
    - get_func_support
    - OidFunctionCall1
    - list_concat
    - PointerGetDatum
    - DatumGetPointer
    - OidIsValid
    - foreach_current_index
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void optimize_window_clauses(PlannerInfo *root, WindowFuncLists *wflists)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6088,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6092,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6098,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6102,1
    - Dst: get_func_support
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6105,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6108,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6118,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6118,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6119,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6132,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6158,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6167,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6177,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6178,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6180,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6181,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6191,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6193,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6199,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6212
      start: 6086
    functionDepth: 1
    functionLinenumber: 6086
    functionLinenumberEnd: 6212
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 50
    functionsReached:
    - equal
    - foreach
    - list_length
    - Assert
    - get_func_support
    - OidFunctionCall1
    - list_concat
    - PointerGetDatum
    - DatumGetPointer
    - OidIsValid
    - foreach_current_index
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, windowClause)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6167,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6177,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6178,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6180,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6181,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6191,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6193,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6199,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6210
      start: 6165
    functionDepth: 1
    functionLinenumber: 6165
    functionLinenumberEnd: 6210
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 51
    functionsReached:
    - equal
    - list_concat
    - foreach
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc3, windowClause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6227,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6228,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6236,1
    - Dst: list_concat_unique
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6256,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6256,1
    - Dst: qsort
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6281,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6285,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - root
    - wflists
    argTypes:
    - PlannerInfo*
    - WindowFuncLists*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6290
      start: 6220
    functionDepth: 1
    functionLinenumber: 6220
    functionLinenumberEnd: 6290
    functionName: select_active_windows
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - qsort
    - list_concat_unique
    - Assert
    - pfree
    - lappend
    - palloc_array
    - list_copy
    - list_length
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      select_active_windows(PlannerInfo *root, WindowFuncLists *wflists)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6236,1
    - Dst: list_concat_unique
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6256,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6259
      start: 6231
    functionDepth: 1
    functionLinenumber: 6231
    functionLinenumberEnd: 6259
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 51
    functionsReached:
    - Assert
    - list_concat_unique
    - list_copy
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, windowClause)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6312,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6323,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6326,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6328,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6334,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - activeWindows
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6336
      start: 6303
    functionDepth: 1
    functionLinenumber: 6303
    functionLinenumberEnd: 6336
    functionName: name_active_windows
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - snprintf
    - pstrdup
    - strcmp
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void name_active_windows(List *activeWindows)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6312,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6323,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6326,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6328,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6334,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6335
      start: 6310
    functionDepth: 1
    functionLinenumber: 6310
    functionLinenumberEnd: 6335
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 51
    functionsReached:
    - snprintf
    - pstrdup
    - strcmp
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, activeWindows)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6326,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6328,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6330
      start: 6324
    functionDepth: 1
    functionLinenumber: 6324
    functionLinenumberEnd: 6330
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 51
    functionsReached:
    - strcmp
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, activeWindows)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6362,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6364,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6365,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6382,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6382,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6384,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6384,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6388
      start: 6354
    functionDepth: 1
    functionLinenumber: 6354
    functionLinenumberEnd: 6388
    functionName: common_prefix_cmp
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - list_length
    - lfirst_node
    - forboth
    linkageType: ''
    returnType: int
    signature: int common_prefix_cmp(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6435,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6444,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6447,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6449,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6451,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6453,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6455,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6457,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6462,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6464,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6466,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6473,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6477,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6479,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6480,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6487,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6493,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6501,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6517,1
    - Dst: add_new_columns_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6521,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6524,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6525,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6528,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 3
    argNames:
    - root
    - final_target
    - activeWindows
    argTypes:
    - PlannerInfo*
    - PathTarget*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6529
      start: 6423
    functionDepth: 1
    functionLinenumber: 6423
    functionLinenumberEnd: 6529
    functionName: make_window_input_target
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - add_column_to_pathtarget
    - foreach
    - get_pathtarget_sortgroupref
    - list_free
    - Assert
    - bms_is_member
    - lappend
    - create_empty_pathtarget
    - lfirst
    - pull_var_clause
    - set_pathtarget_cost_width
    - bms_add_member
    - add_new_columns_to_pathtarget
    - lfirst_node
    linkageType: ''
    returnType: PathTarget
    signature: "PathTarget *\nmake_window_input_target(PlannerInfo *root,\n\t\t\t\t\t\t
      PathTarget *final_target,\n\t\t\t\t\t\t List *activeWindows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6444,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6447,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6449,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6451,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6453,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6455,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6459
      start: 6442
    functionDepth: 1
    functionLinenumber: 6442
    functionLinenumberEnd: 6459
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 53
    functionsReached:
    - bms_add_member
    - foreach
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, activeWindows)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6551,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6553,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6554,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6555,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6556,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6557,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6558,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6559,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6577,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6591,1
    - Dst: append_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6597,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - root
    - wc
    - tlist
    argTypes:
    - PlannerInfo*
    - WindowClause*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6603
      start: 6543
    functionDepth: 1
    functionLinenumber: 6543
    functionLinenumberEnd: 6603
    functionName: make_pathkeys_for_window
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 3
    functionsReached:
    - make_pathkeys_for_sortclauses_extended
    - errcode
    - Assert
    - ereport
    - make_pathkeys_for_sortclauses
    - errmsg
    - errdetail
    - append_pathkeys
    - grouping_is_sortable
    linkageType: ''
    returnType: List
    signature: "List *\nmake_pathkeys_for_window(PlannerInfo *root, WindowClause *wc,\n\t\t\t\t\t\t
      List *tlist)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6692,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6697,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6698,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6699,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6703,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6705,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6715,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6722,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6728,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6743,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6762,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6795,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6799,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6801,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6804,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6806,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6807,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6819,1
    - Dst: add_new_columns_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6823,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6826,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6827,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6830,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 3
    argNames:
    - root
    - final_target
    - have_postponed_srfs
    argTypes:
    - PlannerInfo*
    - PathTarget*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6831
      start: 6671
    functionDepth: 1
    functionLinenumber: 6671
    functionLinenumberEnd: 6831
    functionName: make_sort_input_target
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - add_column_to_pathtarget
    - foreach
    - get_pathtarget_sortgroupref
    - list_free
    - Assert
    - palloc0
    - cost_qual_eval_node
    - lappend
    - lfirst
    - contain_volatile_functions
    - create_empty_pathtarget
    - pull_var_clause
    - set_pathtarget_cost_width
    - list_length
    - expression_returns_set
    - add_new_columns_to_pathtarget
    linkageType: ''
    returnType: PathTarget
    signature: "PathTarget *\nmake_sort_input_target(PlannerInfo *root,\n\t\t\t\t\t
      \  PathTarget *final_target,\n\t\t\t\t\t   bool *have_postponed_srfs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6861,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6863,1
    - Dst: compare_fractional_path_costs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6869,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - rel
    - tuple_fraction
    argTypes:
    - RelOptInfo*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6876
      start: 6847
    functionDepth: 1
    functionLinenumber: 6847
    functionLinenumberEnd: 6876
    functionName: get_cheapest_fractional_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - lfirst
    - foreach
    - compare_fractional_path_costs
    linkageType: ''
    returnType: Path
    signature: 'Path *

      get_cheapest_fractional_path(RelOptInfo *rel, double tuple_fraction)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6899,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6899,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6900,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6900,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6903,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6916,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6923,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6926,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6927,1
    - Dst: create_set_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6931,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6936,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6941,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6949,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6956,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6959,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6960,1
    - Dst: create_set_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6964,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6971,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6977,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 4
    argNames:
    - root
    - rel
    - targets
    - targets_contain_srfs
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6979
      start: 6893
    functionDepth: 1
    functionLinenumber: 6893
    functionLinenumberEnd: 6979
    functionName: adjust_paths_for_srfs
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - foreach
    - lfirst_int
    - Assert
    - apply_projection_to_path
    - create_set_projection_path
    - create_projection_path
    - linitial_int
    - lfirst
    - list_length
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void adjust_paths_for_srfs(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t
      \ List *targets, List *targets_contain_srfs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6926,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6927,1
    - Dst: create_set_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6931,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6936,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6940
      start: 6924
    functionDepth: 1
    functionLinenumber: 6924
    functionLinenumberEnd: 6940
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 3
    functionsReached:
    - apply_projection_to_path
    - create_set_projection_path
    - lfirst_int
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void forboth(lc1, targets, lc2, targets_contain_srfs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6959,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6960,1
    - Dst: create_set_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6964,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6971,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6976
      start: 6957
    functionDepth: 1
    functionLinenumber: 6957
    functionLinenumberEnd: 6976
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 3
    functionsReached:
    - create_projection_path
    - create_set_projection_path
    - lfirst_int
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void forboth(lc1, targets, lc2, targets_contain_srfs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7018,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7024
      start: 7009
    functionDepth: 1
    functionLinenumber: 7009
    functionLinenumberEnd: 7024
    functionName: expression_planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - eval_const_expressions
    - fix_opfuncids
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      expression_planner(Expr *expr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7046,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7051,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7060,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7063,1
    - Dst: extract_query_dependencies_walker
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7069,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - expr
    - relationOids
    - invalItems
    argTypes:
    - Expr*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7075
      start: 7036
    functionDepth: 1
    functionLinenumber: 7036
    functionLinenumberEnd: 7075
    functionName: expression_planner_with_deps
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - eval_const_expressions
    - MemSet
    - fix_opfuncids
    - extract_query_dependencies_walker
    linkageType: ''
    returnType: Expr
    signature: "Expr *\nexpression_planner_with_deps(Expr *expr,\n\t\t\t\t\t\t\t List
      **relationOids,\n\t\t\t\t\t\t\t List **invalItems)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7110,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7113,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7115,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7121,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7121,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7124,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7132,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7133,1
    - Dst: setup_simple_rel_arrays
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7136,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7139,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7143,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7145,1
    - Dst: get_relation_data_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7165,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7175,1
    - Dst: create_seqscan_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7179,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7180,1
    - Dst: create_index_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 2
    argNames:
    - tableOid
    - indexOid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7192
      start: 7089
    functionDepth: 1
    functionLinenumber: 7089
    functionLinenumberEnd: 7192
    functionName: plan_cluster_use_sort
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - foreach
    - build_simple_rel
    - create_index_path
    - makeNode
    - create_seqscan_path
    - get_relation_data_width
    - addRTEPermissionInfo
    - list_make1
    - cost_sort
    - setup_simple_rel_arrays
    - cost_qual_eval
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: bool plan_cluster_use_sort(Oid tableOid, Oid indexOid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7234,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7237,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7239,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7245,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7245,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7255,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7263,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7264,1
    - Dst: setup_simple_rel_arrays
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7267,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7270,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7273,1
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7274,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7284,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7284,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7285,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7285,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7300,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7309,1
    - Dst: compute_parallel_worker
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7315,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7333,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7334,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 2
    argNames:
    - tableOid
    - indexOid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7337
      start: 7211
    functionDepth: 3
    functionLinenumber: 7211
    functionLinenumberEnd: 7337
    functionName: plan_create_index_workers
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - estimate_rel_size
    - compute_parallel_worker
    - build_simple_rel
    - RelationGetIndexExpressions
    - makeNode
    - index_open
    - RelationGetIndexPredicate
    - table_open
    - index_close
    - is_parallel_safe
    - addRTEPermissionInfo
    - list_make1
    - Min
    - setup_simple_rel_arrays
    - table_close
    linkageType: ''
    returnType: int
    signature: int plan_create_index_workers(Oid tableOid, Oid indexOid)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: get_number_of_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7366,1
    - Dst: get_number_of_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7380,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7393,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7396,1
    - Dst: get_useful_group_keys_orderings
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7401,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7403,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7403,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7407,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7412,1
    - Dst: consider_groupingsets_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7424,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7434,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7435,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7452,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7463,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7474,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7477,1
    - Dst: get_useful_group_keys_orderings
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7484,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7484,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7489,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7494,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7505,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7506,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7517,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7518,1
    - Dst: consider_groupingsets_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7537,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7547,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7548,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7565,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7566,1
    - Dst: gather_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7586,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 7
    argNames:
    - root
    - input_rel
    - grouped_rel
    - partially_grouped_rel
    - agg_costs
    - gd
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - AggClauseCosts*
    - grouping_sets_data*
    - GroupPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7587
      start: 7344
    functionDepth: 3
    functionLinenumber: 7344
    functionLinenumberEnd: 7587
    functionName: add_paths_to_grouping_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - make_ordered_path
    - foreach
    - Assert
    - get_number_of_groups
    - create_agg_path
    - gather_grouping_paths
    - lfirst
    - list_length
    - get_useful_group_keys_orderings
    - add_path
    - consider_groupingsets_paths
    - create_group_path
    linkageType: ''
    returnType: void
    signature: "void add_paths_to_grouping_rel(PlannerInfo *root, RelOptInfo *input_rel,\n\t\t\t\t\t\t
      \ RelOptInfo *grouped_rel,\n\t\t\t\t\t\t  RelOptInfo *partially_grouped_rel,\n\t\t\t\t\t\t
      \ const AggClauseCosts *agg_costs,\n\t\t\t\t\t\t  grouping_sets_data *gd,\n\t\t\t\t\t\t
      \ GroupPathExtraData *extra)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7407,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7412,1
    - Dst: consider_groupingsets_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7424,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7434,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7435,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7452,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7463,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7465
      start: 7405
    functionDepth: 3
    functionLinenumber: 7405
    functionLinenumberEnd: 7465
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 58
    functionsReached:
    - make_ordered_path
    - Assert
    - create_agg_path
    - lfirst
    - add_path
    - consider_groupingsets_paths
    - create_group_path
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, pathkey_orderings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7489,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7494,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7505,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7506,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7517,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7518,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7525
      start: 7487
    functionDepth: 1
    functionLinenumber: 7487
    functionLinenumberEnd: 7525
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 58
    functionsReached:
    - make_ordered_path
    - create_agg_path
    - lfirst
    - add_path
    - create_group_path
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, pathkey_orderings)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7631,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7652,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7670,1
    - Dst: make_partial_grouping_target
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7689,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7698,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7699,1
    - Dst: get_agg_clause_costs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7703,1
    - Dst: get_agg_clause_costs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7707,1
    - Dst: get_number_of_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7717,1
    - Dst: get_number_of_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7723,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7731,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7737,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7740,1
    - Dst: get_useful_group_keys_orderings
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7745,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7747,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7747,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7752,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7757,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7768,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7769,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7780,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7781,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7794,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7797,1
    - Dst: get_useful_group_keys_orderings
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7802,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7804,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7804,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7809,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7815,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7826,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7827,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7838,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7855,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7857,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7858,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7875,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7876,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7895,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7900,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7902,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7907,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7916,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7921,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7923,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7928,1
    - Dst: FdwRoutine*::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7942,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 85
    argCount: 6
    argNames:
    - root
    - grouped_rel
    - input_rel
    - gd
    - extra
    - force_rel_creation
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - grouping_sets_data*
    - GroupPathExtraData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7949
      start: 7605
    functionDepth: 2
    functionLinenumber: 7605
    functionLinenumberEnd: 7949
    functionName: create_partial_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - make_ordered_path
    - FdwRoutine*::GetForeignUpperPaths
    - IS_DUMMY_REL
    - fetch_upper_rel
    - make_partial_grouping_target
    - foreach
    - Assert
    - linitial
    - list_length
    - get_useful_group_keys_orderings
    - add_path
    - create_projection_path
    - get_number_of_groups
    - create_agg_path
    - MemSet
    - get_agg_clause_costs
    - lfirst
    - add_partial_path
    - create_group_path
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\ncreate_partial_grouping_paths(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \ RelOptInfo *grouped_rel,\n\t\t\t\t\t\t\t  RelOptInfo *input_rel,\n\t\t\t\t\t\t\t
      \ grouping_sets_data *gd,\n\t\t\t\t\t\t\t  GroupPathExtraData *extra,\n\t\t\t\t\t\t\t
      \ bool force_rel_creation)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7752,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7757,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7768,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7769,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7780,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7781,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7787
      start: 7750
    functionDepth: 1
    functionLinenumber: 7750
    functionLinenumberEnd: 7787
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 59
    functionsReached:
    - make_ordered_path
    - create_agg_path
    - lfirst
    - add_path
    - create_group_path
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, pathkey_orderings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7809,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7815,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7826,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7827,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7838,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7839,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7845
      start: 7807
    functionDepth: 1
    functionLinenumber: 7807
    functionLinenumberEnd: 7845
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 59
    functionsReached:
    - make_ordered_path
    - create_agg_path
    - add_partial_path
    - lfirst
    - create_group_path
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, pathkey_orderings)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7964,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7986,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7992,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 6
    argNames:
    - root
    - rel
    - path
    - cheapest_path
    - pathkeys
    - limit_tuples
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - List*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8001
      start: 7957
    functionDepth: 1
    functionLinenumber: 7957
    functionLinenumberEnd: 8001
    functionName: make_ordered_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 10
    functionsReached:
    - create_sort_path
    - pathkeys_count_contained_in
    - create_incremental_sort_path
    linkageType: ''
    returnType: Path
    signature: "Path *\nmake_ordered_path(PlannerInfo *root, RelOptInfo *rel, Path
      *path,\n\t\t\t\t  Path *cheapest_path, List *pathkeys, double limit_tuples)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8027,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8028,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8034,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8036,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8039,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8041,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8046,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8069,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8073,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8079,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8081,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8089,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8091
      start: 8016
    functionDepth: 1
    functionLinenumber: 8016
    functionLinenumberEnd: 8091
    functionName: gather_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - generate_useful_gather_paths
    - list_copy_head
    - foreach
    - create_sort_path
    - linitial
    - pathkeys_count_contained_in
    - create_incremental_sort_path
    - compute_gather_rows
    - lfirst
    - create_gather_merge_path
    - list_length
    - add_path
    linkageType: ''
    returnType: void
    signature: void gather_grouping_paths(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8125
      start: 8099
    functionDepth: 0
    functionLinenumber: 8099
    functionLinenumberEnd: 8125
    functionName: can_partial_agg
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool can_partial_agg(PlannerInfo *root)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8149,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8154,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8181,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8199,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8207,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8211,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8222,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8227,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8236,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8238,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8243,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8248,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8257,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8259,1
    - Dst: adjust_paths_for_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8270,1
    - Dst: llast_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8285,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8308,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8311,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8315,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8319,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8321,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8323,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8326,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8329,1
    - Dst: apply_scanjoin_target_to_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8332,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8339,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8340,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8344,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8354,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8355,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8362,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 6
    argNames:
    - root
    - rel
    - scanjoin_targets
    - scanjoin_targets_contain_srfs
    - scanjoin_target_parallel_safe
    - tlist_same_exprs
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8363
      start: 8141
    functionDepth: 2
    functionLinenumber: 8141
    functionLinenumberEnd: 8363
    functionName: apply_scanjoin_target_to_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - IS_OTHER_REL
    - check_stack_depth
    - apply_scanjoin_target_to_paths
    - adjust_paths_for_srfs
    - IS_DUMMY_REL
    - find_appinfos_by_relids
    - generate_useful_gather_paths
    - foreach
    - linitial_node
    - Assert
    - pfree
    - bms_next_member
    - copy_pathtarget
    - create_projection_path
    - IS_PARTITIONED_REL
    - lappend
    - lfirst
    - IS_SIMPLE_REL
    - lfirst_node
    - adjust_appendrel_attrs
    - llast_node
    - set_cheapest
    - add_paths_to_append_rel
    linkageType: ''
    returnType: void
    signature: "void apply_scanjoin_target_to_paths(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \  RelOptInfo *rel,\n\t\t\t\t\t\t\t   List *scanjoin_targets,\n\t\t\t\t\t\t\t
      \  List *scanjoin_targets_contain_srfs,\n\t\t\t\t\t\t\t   bool scanjoin_target_parallel_safe,\n\t\t\t\t\t\t\t
      \  bool tlist_same_exprs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8319,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8321,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8323,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8328
      start: 8317
    functionDepth: 1
    functionLinenumber: 8317
    functionLinenumberEnd: 8328
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 61
    functionsReached:
    - adjust_appendrel_attrs
    - lappend
    - copy_pathtarget
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, scanjoin_targets)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8399,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8404,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8414,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8417,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8420,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8426,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8428,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8432,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8438,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8442,1
    - Dst: make_grouping_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8457,1
    - Dst: create_ordinary_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8463,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8471,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8479,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8480,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8484,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8498,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8500,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8507,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8509,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 8
    argNames:
    - root
    - input_rel
    - grouped_rel
    - partially_grouped_rel
    - agg_costs
    - gd
    - patype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - AggClauseCosts*
    - grouping_sets_data*
    - PartitionwiseAggregateType
    - GroupPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8511
      start: 8382
    functionDepth: 2
    functionLinenumber: 8382
    functionLinenumberEnd: 8511
    functionName: create_partitionwise_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - adjust_appendrel_attrs
    - make_grouping_rel
    - copy_pathtarget
    - memcpy
    - Assert
    - create_ordinary_grouping_paths
    - pfree
    - lappend
    - bms_next_member
    - set_cheapest
    - IS_DUMMY_REL
    - find_appinfos_by_relids
    - add_paths_to_append_rel
    linkageType: ''
    returnType: void
    signature: "void create_partitionwise_grouping_paths(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\tRelOptInfo
      *input_rel,\n\t\t\t\t\t\t\t\t\tRelOptInfo *grouped_rel,\n\t\t\t\t\t\t\t\t\tRelOptInfo
      *partially_grouped_rel,\n\t\t\t\t\t\t\t\t\tconst AggClauseCosts *agg_costs,\n\t\t\t\t\t\t\t\t\tgrouping_sets_data
      *gd,\n\t\t\t\t\t\t\t\t\tPartitionwiseAggregateType patype,\n\t\t\t\t\t\t\t\t\tGroupPathExtraData
      *extra)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8529,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8546,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8551,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8552,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8559,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8562,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8568,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8568,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 3
    argNames:
    - input_rel
    - targetList
    - groupClause
    argTypes:
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8590
      start: 8519
    functionDepth: 1
    functionLinenumber: 8519
    functionLinenumberEnd: 8590
    functionName: group_by_has_partkey
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - get_sortgrouplist_exprs
    - Assert
    - OidIsValid
    - exprCollation
    - lfirst
    - equal
    - IsA
    linkageType: ''
    returnType: bool
    signature: "bool group_by_has_partkey(RelOptInfo *input_rel,\n\t\t\t\t\t List
      *targetList,\n\t\t\t\t\t List *groupClause)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8546,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8551,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8552,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8559,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8562,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8568,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8568,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8579
      start: 8543
    functionDepth: 1
    functionLinenumber: 8543
    functionLinenumberEnd: 8579
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 61
    functionsReached:
    - OidIsValid
    - exprCollation
    - lfirst
    - equal
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, partexprs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8551,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8552,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8559,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8562,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8568,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8568,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8575
      start: 8549
    functionDepth: 1
    functionLinenumber: 8549
    functionLinenumberEnd: 8575
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 61
    functionsReached:
    - OidIsValid
    - exprCollation
    - lfirst
    - equal
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lg, groupexprs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8609,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8614,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8615,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8618,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8630,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8631,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8632,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8633,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8636,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8639,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8640,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8646,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8647,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - op
    - targetlist
    argTypes:
    - SetOperationStmt*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8650
      start: 8606
    functionDepth: 2
    functionLinenumber: 8606
    functionLinenumberEnd: 8650
    functionName: generate_setop_child_grouplist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - copyObject
    - Assert
    - exprType
    - assignSortGroupRef
    - lnext
    - list_head
    - lfirst
    - lfirst_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      generate_setop_child_grouplist(SetOperationStmt *op, List *targetlist)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8618,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8630,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8631,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8632,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8633,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8636,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8639,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8640,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8643,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8644
      start: 8616
    functionDepth: 2
    functionLinenumber: 8616
    functionLinenumberEnd: 8644
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 61
    functionsReached:
    - Assert
    - exprType
    - assignSortGroupRef
    - lnext
    - lfirst
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(lt, targetlist)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8672,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8672,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8688,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8701,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8701,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8703,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8704,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8725,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8732,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8736,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8768,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8769,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8771,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8773,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8774,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8779,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8782,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8786,1
    - Dst: get_ordering_op_for_equality_op
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8797,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8798,1
    - Dst: get_equality_op_for_ordering_op
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8809,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8810,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8811,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8814,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8815,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8821,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8828,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8830,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8830,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8833,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8834,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8834,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8834,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8838,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8846,1
    - Dst: get_compatible_hash_operators
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8862,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8863,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8866,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8867,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8873,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8892,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8897,1
    - Dst: create_final_unique_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8901,1
    - Dst: create_partial_unique_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8905,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8909,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8915,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8922,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 92
    argCount: 3
    argNames:
    - root
    - rel
    - sjinfo
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8925
      start: 8662
    functionDepth: 1
    functionLinenumber: 8662
    functionLinenumberEnd: 8925
    functionName: create_unique_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkContext
    - IS_OTHER_REL
    - tlist_member
    - lfirst_oid
    - get_equality_op_for_ordering_op
    - elog
    - memcpy
    - get_compatible_hash_operators
    - Assert
    - get_ordering_op_for_equality_op
    - assignSortGroupRef
    - list_length
    - OidIsValid
    - bms_equal
    - copy_pathtarget
    - makeTargetEntry
    - lappend
    - create_pathtarget
    - create_final_unique_paths
    - lfirst
    - adjust_appendrel_attrs_multilevel
    - list_delete_last
    - makeNode
    - MemoryContextSwitchTo
    - make_pathkeys_for_sortclauses
    - make_tlist_from_pathtarget
    - set_cheapest
    - create_partial_unique_paths
    - forboth
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      create_unique_paths(PlannerInfo *root, RelOptInfo *rel, SpecialJoinInfo *sjinfo)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8939,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8958,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8960,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8973,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8989,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9002,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9008,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9016,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9017,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9020,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9032,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9037,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9048,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 6
    argNames:
    - root
    - input_rel
    - sortPathkeys
    - groupClause
    - sjinfo
    - unique_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    - SpecialJoinInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9050
      start: 8931
    functionDepth: 1
    functionLinenumber: 8931
    functionLinenumberEnd: 9050
    functionName: create_final_unique_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_unique_path
    - foreach
    - create_sort_path
    - create_projection_path
    - pathkeys_count_contained_in
    - create_agg_path
    - create_incremental_sort_path
    - lfirst
    - list_length
    - add_path
    - estimate_num_groups
    linkageType: ''
    returnType: void
    signature: "void create_final_unique_paths(PlannerInfo *root, RelOptInfo *input_rel,\n\t\t\t\t\t\t
      \ List *sortPathkeys, List *groupClause,\n\t\t\t\t\t\t  SpecialJoinInfo *sjinfo,
      RelOptInfo *unique_rel)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9072,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9075,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9077,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9078,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9091,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9108,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9110,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9115,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9131,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9144,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9150,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9158,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9159,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9162,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9174,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9179,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9190,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9195,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9196,1
    - Dst: create_final_unique_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9203,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 6
    argNames:
    - root
    - input_rel
    - sortPathkeys
    - groupClause
    - sjinfo
    - unique_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    - SpecialJoinInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9207
      start: 9056
    functionDepth: 2
    functionLinenumber: 9056
    functionLinenumberEnd: 9207
    functionName: create_partial_unique_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_unique_path
    - generate_useful_gather_paths
    - memcpy
    - foreach
    - list_length
    - create_sort_path
    - linitial
    - create_projection_path
    - create_final_unique_paths
    - pathkeys_count_contained_in
    - makeNode
    - create_agg_path
    - add_partial_path
    - create_incremental_sort_path
    - lfirst
    - set_cheapest
    - is_parallel_safe
    - estimate_num_groups
    linkageType: ''
    returnType: void
    signature: "void create_partial_unique_paths(PlannerInfo *root, RelOptInfo *input_rel,\n\t\t\t\t\t\t\tList
      *sortPathkeys, List *groupClause,\n\t\t\t\t\t\t\tSpecialJoinInfo *sjinfo, RelOptInfo
      *unique_rel)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9230,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9240,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9242,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9254,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9259,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9268,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9272,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - glob
    - name
    - always_number
    argTypes:
    - PlannerGlobal*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9274
      start: 9214
    functionDepth: 2
    functionLinenumber: 9214
    functionLinenumberEnd: 9274
    functionName: choose_plan_name
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pfree
    - psprintf
    - lappend
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      choose_plan_name(PlannerGlobal *glob, const char *name, bool always_number)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - subplanNames
    argTypes:
    - glob
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9235
      start: 9228
    functionDepth: 0
    functionLinenumber: 9228
    functionLinenumberEnd: 9235
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, subplan_name, glob->subplanNames)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:9259,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - subplanNames
    argTypes:
    - glob
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9264
      start: 9257
    functionDepth: 0
    functionLinenumber: 9257
    functionLinenumberEnd: 9264
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, subplan_name, glob->subplanNames)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:127,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:131,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:132,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - plan
    - coltype
    - coltypmod
    - colcollation
    argTypes:
    - Plan*
    - Oid*
    - int32*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 140
    functionName: get_first_col_type
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - exprType
    - exprTypmod
    - exprCollation
    - linitial_node
    linkageType: ''
    returnType: void
    signature: "void get_first_col_type(Plan *plan, Oid *coltype, int32 *coltypmod,\n\t\t\t\t
      \  Oid *colcollation)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sublinktype_to_string
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:178,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:186,1
    - Dst: simplify_EXISTS_query
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:222,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:225,1
    - Dst: choose_plan_name
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:226,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:237,1
    - Dst: get_cheapest_fractional_path
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:238,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:240,1
    - Dst: build_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:243,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:257,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:263,1
    - Dst: simplify_EXISTS_query
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:265,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:266,1
    - Dst: convert_EXISTS_to_ANY
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:268,1
    - Dst: choose_plan_name
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:275,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:276,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:284,1
    - Dst: subpath_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:288,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:294,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:297,1
    - Dst: build_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:306,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:309,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:310,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 6
    argNames:
    - root
    - orig_subquery
    - subLinkType
    - subLinkId
    - testexpr
    - isTopQual
    argTypes:
    - PlannerInfo*
    - Query*
    - SubLinkType
    - int
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 318
    functionName: make_subplan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - convert_EXISTS_to_ANY
    - copyObject
    - subpath_is_hashable
    - Assert
    - castNode
    - makeNode
    - get_cheapest_fractional_path
    - simplify_EXISTS_query
    - choose_plan_name
    - build_subplan
    - sublinktype_to_string
    - list_make2
    - create_plan
    - IsA
    - fetch_upper_rel
    - subquery_planner
    linkageType: ''
    returnType: Node
    signature: "Node *\nmake_subplan(PlannerInfo *root, Query *orig_subquery,\n\t\t\t
      SubLinkType subLinkType, int subLinkId,\n\t\t\t Node *testexpr, bool isTopQual)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:342,1
    - Dst: get_first_col_type
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:347,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:362,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:375,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:376,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:377,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:378,1
    - Dst: SS_process_sublinks
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:379,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:381,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:382,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:400,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:401,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:402,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:411,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:412,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:413,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:414,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:415,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:416,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:417,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:423,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:427,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:428,1
    - Dst: get_promoted_array_type
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:429,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:429,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:430,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:431,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:432,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:432,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:433,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:435,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:436,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:446,1
    - Dst: generate_subquery_params
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:447,1
    - Dst: convert_testexpr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:450,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:469,1
    - Dst: generate_subquery_params
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:470,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:479,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:480,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:481,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:482,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:482,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:483,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:489,1
    - Dst: generate_subquery_params
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:507,1
    - Dst: convert_testexpr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:510,1
    - Dst: subplan_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:529,1
    - Dst: testexpr_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:530,1
    - Dst: ExecMaterializesOutput
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:544,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:544,1
    - Dst: materialize_finished_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:545,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:554,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:555,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:556,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:557,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:560,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:570,1
    - Dst: cost_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:574,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 91
    argCount: 10
    argNames:
    - root
    - plan
    - path
    - subroot
    - plan_params
    - subLinkType
    - subLinkId
    - testexpr
    - testexpr_paramids
    - unknownEqFalse
    argTypes:
    - PlannerInfo*
    - Plan*
    - Path*
    - PlannerInfo*
    - List*
    - SubLinkType
    - int
    - Node*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 577
    functionName: build_subplan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - exprType
    - testexpr_is_hashable
    - cost_subplan
    - convert_testexpr
    - bms_add_member
    - nodeTag
    - elog
    - ExecMaterializesOutput
    - Assert
    - linitial
    - SS_process_sublinks
    - generate_new_exec_param
    - list_copy
    - OidIsValid
    - list_length
    - get_promoted_array_type
    - exprTypmod
    - generate_subquery_params
    - lappend
    - subplan_is_hashable
    - exprCollation
    - list_nth_cell
    - lfirst
    - get_first_col_type
    - format_type_be
    - makeNode
    - makeNullConst
    - materialize_finished_plan
    - IsA
    - list_make1_int
    linkageType: ''
    returnType: Node
    signature: "Node *\nbuild_subplan(PlannerInfo *root, Plan *plan, Path *path,\n\t\t\t
      \ PlannerInfo *subroot, List *plan_params,\n\t\t\t  SubLinkType subLinkType,
      int subLinkId,\n\t\t\t  Node *testexpr, List *testexpr_paramids,\n\t\t\t  bool
      unknownEqFalse)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:362,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:375,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:376,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:377,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:378,1
    - Dst: SS_process_sublinks
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:379,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:381,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 383
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 63
    functionsReached:
    - lappend_int
    - lappend
    - SS_process_sublinks
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, plan_params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:595,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:601,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:602,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:603,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:604,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:605,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - root
    - tlist
    - paramIds
    argTypes:
    - PlannerInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 611
    functionName: generate_subquery_params
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - exprTypmod
    - lappend_int
    - exprType
    - lappend
    - exprCollation
    - generate_new_exec_param
    - lfirst
    linkageType: ''
    returnType: List
    signature: 'List *

      generate_subquery_params(PlannerInfo *root, List *tlist, List **paramIds)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:595,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:601,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:602,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:603,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:604,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:605,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 607
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 63
    functionsReached:
    - exprTypmod
    - lappend_int
    - exprType
    - lappend
    - exprCollation
    - generate_new_exec_param
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:627,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:633,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - root
    - tlist
    - varno
    argTypes:
    - PlannerInfo*
    - List*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 638
    functionName: generate_subquery_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - makeVarFromTargetEntry
    - lfirst
    - lappend
    linkageType: ''
    returnType: List
    signature: 'List *

      generate_subquery_vars(PlannerInfo *root, List *tlist, Index varno)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:627,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:633,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 635
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 63
    functionsReached:
    - makeVarFromTargetEntry
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_testexpr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - testexpr
    - subst_nodes
    argTypes:
    - PlannerInfo*
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 647
    functionDepth: 1
    functionLinenumber: 647
    functionLinenumberEnd: 657
    functionName: convert_testexpr
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - convert_testexpr_mutator
    linkageType: ''
    returnType: Node
    signature: "Node *\nconvert_testexpr(PlannerInfo *root,\n\t\t\t\t Node *testexpr,\n\t\t\t\t
      List *subst_nodes)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:665,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:672,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:673,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:680,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:680,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:684,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:706,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - convert_testexpr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 659
    functionDepth: 3
    functionLinenumber: 659
    functionLinenumberEnd: 707
    functionName: convert_testexpr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - elog
    - copyObject
    - expression_tree_mutator
    - list_length
    - list_nth
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\nconvert_testexpr_mutator(Node *node,\n\t\t\t\t\t\t convert_testexpr_context
      *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EstimateSubplanHashTableSpace
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:725,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - plan
    - unknownEqFalse
    argTypes:
    - Plan*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 732
    functionName: subplan_is_hashable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - EstimateSubplanHashTableSpace
    - get_hash_memory_limit
    linkageType: ''
    returnType: bool
    signature: bool subplan_is_hashable(Plan *plan, bool unknownEqFalse)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EstimateSubplanHashTableSpace
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:749,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:752,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - path
    - unknownEqFalse
    argTypes:
    - Path*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 756
    functionName: subpath_is_hashable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - EstimateSubplanHashTableSpace
    - get_hash_memory_limit
    linkageType: ''
    returnType: bool
    signature: bool subpath_is_hashable(Path *path, bool unknownEqFalse)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:771,1
    - Dst: test_opexpr_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:773,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:776,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:780,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:782,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:784,1
    - Dst: test_opexpr_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:786,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - testexpr
    - param_ids
    argTypes:
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 764
    functionDepth: 2
    functionLinenumber: 764
    functionLinenumberEnd: 793
    functionName: testexpr_is_hashable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - test_opexpr_is_hashable
    - foreach
    - is_andclause
    - lfirst
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool testexpr_is_hashable(Node *testexpr, List *param_ids)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_ok_operator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:806,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:820,1
    - Dst: contain_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:822,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:822,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:824,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:824,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - testexpr
    - param_ids
    argTypes:
    - OpExpr*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 827
    functionName: test_opexpr_is_hashable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - linitial
    - contain_exec_param
    - lsecond
    - list_length
    - hash_ok_operator
    - contain_var_clause
    linkageType: ''
    returnType: bool
    signature: bool test_opexpr_is_hashable(OpExpr *testexpr, List *param_ids)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:841,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:849,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:851,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:851,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:859,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:859,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:860,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:861,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:862,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:863,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:865,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:868,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - expr
    argTypes:
    - OpExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 835
    functionDepth: 1
    functionLinenumber: 835
    functionLinenumberEnd: 871
    functionName: hash_ok_operator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - op_hashjoinable
    - exprType
    - linitial
    - HeapTupleIsValid
    - func_strict
    - ReleaseSysCache
    - GETSTRUCT
    - list_length
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool hash_ok_operator(OpExpr *expr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:890,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:892,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:894,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:910,1
    - Dst: contain_dml
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:950,1
    - Dst: contain_outer_selfref
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:952,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:953,1
    - Dst: inline_cte
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:955,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:957,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:965,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:968,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:974,1
    - Dst: choose_plan_name
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:975,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:984,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:990,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:993,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1001,1
    - Dst: get_first_col_type
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1006,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1035,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1036,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1041,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1042,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1043,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1044,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1046,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1048,1
    - Dst: cost_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1051,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 885
    functionDepth: 3
    functionLinenumber: 885
    functionLinenumberEnd: 1053
    functionName: SS_process_ctes
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - copyObject
    - cost_subplan
    - fetch_upper_rel
    - inline_cte
    - elog
    - foreach
    - Assert
    - list_length
    - create_plan
    - subquery_planner
    - lappend
    - choose_plan_name
    - lfirst
    - assign_special_exec_param
    - contain_outer_selfref
    - get_first_col_type
    - contain_dml
    - makeNode
    - contain_volatile_functions
    - list_make1_int
    linkageType: ''
    returnType: void
    signature: void SS_process_ctes(PlannerInfo *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_dml_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1063,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1060
    functionDepth: 1
    functionLinenumber: 1060
    functionLinenumberEnd: 1064
    functionName: contain_dml
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - contain_dml_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_dml(Node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1071,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1079,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1081,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1066
    functionDepth: 1
    functionLinenumber: 1066
    functionLinenumberEnd: 1082
    functionName: contain_dml_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_dml_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1096,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1096,1
    - Dst: contain_outer_selfref_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1098,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1087
    functionDepth: 1
    functionLinenumber: 1087
    functionLinenumberEnd: 1099
    functionName: contain_outer_selfref
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - contain_outer_selfref_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_outer_selfref(Node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1106,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1120,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1128,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1135,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - node
    - depth
    argTypes:
    - Node*
    - Index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1101
    functionDepth: 1
    functionLinenumber: 1101
    functionLinenumberEnd: 1136
    functionName: contain_outer_selfref_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_outer_selfref_walker(Node *node, Index *depth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1149,1
    - Dst: inline_cte_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - cte
    argTypes:
    - PlannerInfo*
    - CommonTableExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1141
    functionDepth: 1
    functionLinenumber: 1141
    functionLinenumberEnd: 1152
    functionName: inline_cte
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - castNode
    - inline_cte_walker
    linkageType: ''
    returnType: void
    signature: void inline_cte(PlannerInfo *root, CommonTableExpr *cte)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1159,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1170,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1177,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1182,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1190,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1193,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1219,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - inline_cte_walker_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1154
    functionDepth: 1
    functionLinenumber: 1154
    functionLinenumberEnd: 1220
    functionName: inline_cte_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - copyObject
    - strcmp
    - query_tree_walker
    - IncrementVarSublevelsUp
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool inline_cte_walker(Node *node, inline_cte_walker_context *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1246,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1247,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1248,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1252,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1255,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1256,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1257,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1266,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1267,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1270,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1272,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1273,1
    - Dst: convert_testexpr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1279,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1279,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1285,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1291,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1294,1
    - Dst: make_SAOP_expr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1298,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1298,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1299,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 3
    argNames:
    - root
    - testexpr
    - values
    argTypes:
    - PlannerInfo*
    - Node*
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1231
    functionDepth: 2
    functionLinenumber: 1231
    functionLinenumberEnd: 1301
    functionName: convert_VALUES_to_ANY
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - eval_const_expressions
    - foreach
    - linitial_node
    - exprType
    - linitial
    - lappend
    - linitial_oid
    - lsecond
    - lfirst
    - contain_volatile_functions
    - make_SAOP_expr
    - list_length
    - list_make1
    - convert_testexpr
    - IsA
    linkageType: ''
    returnType: ScalarArrayOpExpr
    signature: 'ScalarArrayOpExpr *

      convert_VALUES_to_ANY(PlannerInfo *root, Node *testexpr, Query *values)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1358,1
    - Dst: sublink_testexpr_is_not_nullable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1369,1
    - Dst: query_outputs_are_not_nullable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1370,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1377,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1378,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1384,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1392,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1393,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1399,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1405,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1409,1
    - Dst: addRangeTableEntryForSubquery
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1419,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1425,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1426,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1431,1
    - Dst: generate_subquery_vars
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1437,1
    - Dst: convert_testexpr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1444,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1449,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 4
    argNames:
    - root
    - sublink
    - under_not
    - available_rels
    argTypes:
    - PlannerInfo*
    - SubLink*
    - bool
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1340
    functionDepth: 2
    functionLinenumber: 1340
    functionLinenumberEnd: 1461
    functionName: convert_ANY_sublink_to_join
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - query_outputs_are_not_nullable
    - pull_varnos
    - generate_subquery_vars
    - Assert
    - pull_varnos_of_level
    - addRangeTableEntryForSubquery
    - lappend
    - makeNode
    - sublink_testexpr_is_not_nullable
    - contain_volatile_functions
    - list_length
    - convert_testexpr
    - bms_is_empty
    - bms_is_subset
    - make_parsestate
    linkageType: ''
    returnType: JoinExpr
    signature: "JoinExpr *\nconvert_ANY_sublink_to_join(PlannerInfo *root, SubLink
      *sublink,\n\t\t\t\t\t\t\tbool under_not, Relids available_rels)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1494,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1500,1
    - Dst: op_is_safe_index_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1508,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1511,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1511,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1513,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1513,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1518,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1520,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1524,1
    - Dst: op_is_safe_index_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1528,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1531,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1531,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1534,1
    - Dst: foreach_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1539,1
    - Dst: op_is_safe_index_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1542,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1546,1
    - Dst: flatten_join_alias_vars
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1563,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1573,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 2
    argNames:
    - root
    - sublink
    argTypes:
    - PlannerInfo*
    - SubLink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1585
      start: 1484
    functionDepth: 2
    functionLinenumber: 1484
    functionLinenumberEnd: 1585
    functionName: sublink_testexpr_is_not_nullable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - linitial
    - lappend
    - flatten_join_alias_vars
    - foreach_oid
    - expr_is_nonnullable
    - op_is_safe_index_member
    - is_andclause
    - list_concat
    - foreach_ptr
    - is_orclause
    - list_length
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool sublink_testexpr_is_not_nullable(PlannerInfo *root, SubLink *sublink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1573,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1566
    functionDepth: 1
    functionLinenumber: 1566
    functionLinenumberEnd: 1582
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 3
    functionsReached:
    - expr_is_nonnullable
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(Expr, expr, outer_exprs)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1606,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1623,1
    - Dst: simplify_EXISTS_query
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1631,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1646,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1653,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1659,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1678,1
    - Dst: preprocess_relation_rtes
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1683,1
    - Dst: replace_empty_jointree
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1694,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1711,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1712,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1713,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1720,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1721,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1729,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1732,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1735,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1738,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1738,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1744,1
    - Dst: CombineRangeTables
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1751,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1757,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1762,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1763,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 54
    argCount: 4
    argNames:
    - root
    - sublink
    - under_not
    - available_rels
    argTypes:
    - PlannerInfo*
    - SubLink*
    - bool
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1592
    functionDepth: 1
    functionLinenumber: 1592
    functionLinenumberEnd: 1773
    functionName: convert_EXISTS_sublink_to_join
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - pull_varnos
    - copyObject
    - bms_free
    - bms_add_member
    - bms_is_subset
    - CombineRangeTables
    - Assert
    - linitial
    - simplify_EXISTS_query
    - IncrementVarSublevelsUp
    - list_length
    - bms_next_member
    - contain_vars_of_level
    - OffsetVarNodes
    - replace_empty_jointree
    - MemSet
    - makeNode
    - contain_volatile_functions
    - preprocess_relation_rtes
    - bms_is_empty
    linkageType: ''
    returnType: JoinExpr
    signature: "JoinExpr *\nconvert_EXISTS_sublink_to_join(PlannerInfo *root, SubLink
      *sublink,\n\t\t\t\t\t\t\t   bool under_not, Relids available_rels)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1836,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1842,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1846,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1847,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1877,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 30
    argCount: 2
    argNames:
    - root
    - query
    argTypes:
    - PlannerInfo*
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1893
      start: 1797
    functionDepth: 1
    functionLinenumber: 1797
    functionLinenumberEnd: 1893
    functionName: simplify_EXISTS_query
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 2
    functionsReached:
    - eval_const_expressions
    - DatumGetInt64
    - Assert
    - foreach_node
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool simplify_EXISTS_query(PlannerInfo *root, Query *query)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1933,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1951,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1957,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1978,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1982,1
    - Dst: canonicalize_qual
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1983,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1984,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1994,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1996,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1998,1
    - Dst: hash_ok_operator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1999,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2001,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2002,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2004,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2006,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2007,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2008,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2009,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2012,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2020,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2021,1
    - Dst: hash_ok_operator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2021,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2023,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2024,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2025,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2026,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2034,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2052,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2053,1
    - Dst: contain_aggs_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2056,1
    - Dst: contain_aggs_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2057,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2066,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2073,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2079,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2085,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2097,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2098,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2099,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2100,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2103,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2104,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2105,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2106,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2107,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2108,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2112,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2113,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2116,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2121,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 63
    argCount: 4
    argNames:
    - root
    - subselect
    - testexpr
    - paramIds
    argTypes:
    - PlannerInfo*
    - Query*
    - Node**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 1909
    functionDepth: 2
    functionLinenumber: 1909
    functionLinenumberEnd: 2125
    functionName: convert_EXISTS_to_ANY
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - exprType
    - lappend_oid
    - make_ands_implicit
    - lfirst_oid
    - make_ands_explicit
    - contain_subplans
    - foreach
    - Assert
    - linitial
    - generate_new_exec_param
    - IncrementVarSublevelsUp
    - OidIsValid
    - contain_vars_of_level
    - hash_ok_operator
    - eval_const_expressions
    - exprTypmod
    - makeTargetEntry
    - lappend
    - contain_aggs_of_level
    - exprCollation
    - MemSet
    - lfirst
    - get_commutator
    - canonicalize_qual
    - lsecond
    - contain_volatile_functions
    - make_opclause
    - IsA
    linkageType: ''
    returnType: Query
    signature: "Query *\nconvert_EXISTS_to_ANY(PlannerInfo *root, Query *subselect,\n\t\t\t\t\t
      \ Node **testexpr, List **paramIds)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2097,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2098,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2099,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2100,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2103,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2104,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2105,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2106,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2107,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2108,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2112,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2113,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2095
    functionDepth: 1
    functionLinenumber: 2095
    functionLinenumberEnd: 2117
    functionName: forfour
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - exprTypmod
    - lappend_int
    - exprType
    - makeTargetEntry
    - lappend
    - exprCollation
    - generate_new_exec_param
    - lfirst
    - make_opclause
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void forfour(lc, leftargs, rc, rightargs, oc, opids, cc, opcollations)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replace_correlation_vars_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 2153
    functionDepth: 1
    functionLinenumber: 2153
    functionLinenumberEnd: 2158
    functionName: SS_replace_correlation_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - replace_correlation_vars_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      SS_replace_correlation_vars(PlannerInfo *root, Node *expr)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2165,1
    - Dst: replace_outer_var
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2168,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2170,1
    - Dst: replace_outer_placeholdervar
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2173,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2176,1
    - Dst: replace_outer_agg
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2179,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2181,1
    - Dst: replace_outer_grouping
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2184,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2186,1
    - Dst: replace_outer_merge_support
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2189,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2192,1
    - Dst: replace_outer_returning
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2195,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2198,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 2
    argNames:
    - node
    - root
    argTypes:
    - Node*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2199
      start: 2160
    functionDepth: 1
    functionLinenumber: 2160
    functionLinenumberEnd: 2199
    functionName: replace_correlation_vars_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - replace_outer_grouping
    - replace_outer_merge_support
    - replace_outer_placeholdervar
    - replace_outer_var
    - expression_tree_mutator
    - replace_outer_returning
    - IsA
    - replace_outer_agg
    linkageType: ''
    returnType: Node
    signature: 'Node *

      replace_correlation_vars_mutator(Node *node, PlannerInfo *root)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: process_sublinks_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - expr
    - isQual
    argTypes:
    - PlannerInfo*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2208
    functionDepth: 1
    functionLinenumber: 2208
    functionLinenumberEnd: 2216
    functionName: SS_process_sublinks
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 3
    functionsReached:
    - process_sublinks_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      SS_process_sublinks(PlannerInfo *root, Node *expr, bool isQual)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2227,1
    - Dst: process_sublinks_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2237,1
    - Dst: make_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2242,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2257,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2262,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2267,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2272,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2283,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2284,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2285,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2285,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2301,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2309,1
    - Dst: process_sublinks_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2313,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2313,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2314,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2315,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2317,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2319,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2322,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2330,1
    - Dst: process_sublinks_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2334,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2334,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2335,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2336,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2338,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2340,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2349,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - process_sublinks_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2352
      start: 2218
    functionDepth: 4
    functionLinenumber: 2218
    functionLinenumberEnd: 2352
    functionName: process_sublinks_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 2
    functionsReached:
    - foreach
    - make_andclause
    - Assert
    - make_orclause
    - lappend
    - process_sublinks_mutator
    - expression_tree_mutator
    - is_andclause
    - lfirst
    - list_concat
    - is_orclause
    - IsA
    - make_subplan
    linkageType: ''
    returnType: Node
    signature: 'Node *

      process_sublinks_mutator(Node *node, process_sublinks_context *context)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2392,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2394,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2396,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2399,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2401,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2404,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2406,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2406,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2411,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2414
      start: 2366
    functionDepth: 1
    functionLinenumber: 2366
    functionLinenumberEnd: 2414
    functionName: SS_identify_outer_params
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - lfirst
    - bms_add_member
    - foreach
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void SS_identify_outer_params(PlannerInfo *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SS_compute_initplan_cost
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2445,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2451,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2453,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2472,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - root
    - final_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2482
      start: 2430
    functionDepth: 1
    functionLinenumber: 2430
    functionLinenumberEnd: 2482
    functionName: SS_charge_for_initplans
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - lfirst
    - foreach
    - SS_compute_initplan_cost
    linkageType: ''
    returnType: void
    signature: void SS_charge_for_initplans(PlannerInfo *root, RelOptInfo *final_rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - init_plans
    - initplan_cost_p
    - unsafe_initplans_p
    argTypes:
    - List*
    - Cost*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2520
      start: 2494
    functionDepth: 1
    functionLinenumber: 2494
    functionLinenumberEnd: 2520
    functionName: SS_compute_initplan_cost
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 2
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void SS_compute_initplan_cost(List *init_plans,\n\t\t\t\t\t\t Cost
      *initplan_cost_p,\n\t\t\t\t\t\t bool *unsafe_initplans_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2517
      start: 2510
    functionDepth: 1
    functionLinenumber: 2510
    functionLinenumberEnd: 2517
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 70
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, init_plans)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - plan
    argTypes:
    - PlannerInfo*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2539
      start: 2535
    functionDepth: 0
    functionLinenumber: 2535
    functionLinenumberEnd: 2539
    functionName: SS_attach_initplans
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SS_attach_initplans(PlannerInfo *root, Plan *plan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - plan
    argTypes:
    - PlannerInfo*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2555
      start: 2550
    functionDepth: 1
    functionLinenumber: 2550
    functionLinenumberEnd: 2555
    functionName: SS_finalize_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - finalize_plan
    linkageType: ''
    returnType: void
    signature: void SS_finalize_plan(PlannerInfo *root, Plan *plan)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2616,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2618,1
    - Dst: planner_subplan_get_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2619,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2622,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2623,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2625,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2625,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2631,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2641,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2642,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2651,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2653,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2657,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2660,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2665,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2669,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2671,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2675,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2677,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2685,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2689,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2691,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2693,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2699,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2703,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2713,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2715,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2719,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2721,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2725,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2727,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2737,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2740,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2740,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2742,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2746,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2749,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2765,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2767,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2773,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2779,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2783,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2789,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2791,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2795,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2797,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2817,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2818,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2820,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2822,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2827,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2831,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2838,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2840,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2844,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2851,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2853,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2857,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2867,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2871,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2874,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2877,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2878,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2879,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2893,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2893,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2895,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2895,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2897,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2899,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2901,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2909,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2912,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2913,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2914,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2924,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2927,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2928,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2929,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2939,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2942,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2943,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2944,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2954,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2957,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2958,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2959,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2969,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2972,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2974,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2976,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2983,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2985,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2990,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2992,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2997,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3002,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3004,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3011,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3011,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3019,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3019,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3021,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3021,1
    - Dst: finalize_agg_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3039,1
    - Dst: finalize_agg_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3041,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3049,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3051,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3060,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3060,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3068,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3080,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3080,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3088,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3096,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3111,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3112,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3116,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3121,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3126,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3129,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3132,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3133,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3138,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3144,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3154,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3160,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3161,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3172,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3173,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3175,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3177,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 247
    argCount: 5
    argNames:
    - root
    - plan
    - gather_param
    - valid_params
    - scan_params
    argTypes:
    - PlannerInfo*
    - Plan*
    - int
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3180
      start: 2588
    functionDepth: 3
    functionLinenumber: 2588
    functionLinenumberEnd: 3180
    functionName: finalize_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 3
    functionsReached:
    - bms_del_member
    - lfirst_int
    - bms_free
    - bms_copy
    - planner_subplan_get_plan
    - bms_difference
    - bms_add_members
    - bms_add_member
    - nodeTag
    - bms_union
    - bms_is_subset
    - elog
    - foreach
    - finalize_agg_primnode
    - Assert
    - find_base_rel
    - list_length
    - finalize_plan
    - finalize_primnode
    - lfirst
    - bms_del_members
    - list_nth
    linkageType: ''
    returnType: Bitmapset
    signature: "Bitmapset *\nfinalize_plan(PlannerInfo *root, Plan *plan,\n\t\t\t
      \ int gather_param,\n\t\t\t  Bitmapset *valid_params,\n\t\t\t  Bitmapset *scan_params)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3191,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3197,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3201,1
    - Dst: find_minmax_agg_replacement_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3214,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3216,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3220,1
    - Dst: planner_subplan_get_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3223,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3228,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3238,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3240,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3241,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3245,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3252,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3253,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3255,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3255,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3257,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3261,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - finalize_primnode_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3262
      start: 3186
    functionDepth: 1
    functionLinenumber: 3186
    functionLinenumberEnd: 3262
    functionName: finalize_primnode
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 2
    functionsReached:
    - bms_del_member
    - foreach
    - lfirst_int
    - finalize_primnode
    - bms_join
    - bms_copy
    - planner_subplan_get_plan
    - expression_tree_walker
    - IsA
    - bms_add_member
    - find_minmax_agg_replacement_param
    linkageType: ''
    returnType: bool
    signature: bool finalize_primnode(Node *node, finalize_primnode_context *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3274,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3279,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3280,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - finalize_primnode_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3284
      start: 3269
    functionDepth: 2
    functionLinenumber: 3269
    functionLinenumberEnd: 3284
    functionName: finalize_agg_primnode
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - finalize_primnode
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool finalize_agg_primnode(Node *node, finalize_primnode_context *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - root
    - resulttype
    - resulttypmod
    - resultcollation
    argTypes:
    - PlannerInfo*
    - Oid
    - int32
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3302
      start: 3295
    functionDepth: 1
    functionLinenumber: 3295
    functionLinenumberEnd: 3302
    functionName: SS_make_initplan_output_param
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - generate_new_exec_param
    linkageType: ''
    returnType: Param
    signature: "Param *\nSS_make_initplan_output_param(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \ Oid resulttype, int32 resulttypmod,\n\t\t\t\t\t\t\t  Oid resultcollation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3325,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3326,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3327,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3334,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3336,1
    - Dst: get_first_col_type
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3339,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3342,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3344,1
    - Dst: cost_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 4
    argNames:
    - root
    - subroot
    - plan
    - prm
    argTypes:
    - PlannerInfo*
    - PlannerInfo*
    - Plan*
    - Param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3353
      start: 3311
    functionDepth: 2
    functionLinenumber: 3311
    functionLinenumberEnd: 3353
    functionName: SS_make_initplan_from_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - lappend
    - makeNode
    - list_length
    - cost_subplan
    - get_first_col_type
    - list_make1_int
    linkageType: ''
    returnType: void
    signature: "void SS_make_initplan_from_plan(PlannerInfo *root,\n\t\t\t\t\t\t   PlannerInfo
      *subroot, Plan *plan,\n\t\t\t\t\t\t   Param *prm)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - subLinkType
    argTypes:
    - SubLinkType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3382
      start: 3358
    functionDepth: 1
    functionLinenumber: 3358
    functionLinenumberEnd: 3382
    functionName: sublinktype_to_string
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      sublinktype_to_string(SubLinkType subLinkType)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:85,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:91,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:92,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:101,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:123,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:125,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:127,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:129,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:132,1
    - Dst: can_minmax_aggs
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:145,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:156,1
    - Dst: get_equality_op_for_ordering_op
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:164,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:165,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:166,1
    - Dst: build_minmax_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:177,1
    - Dst: build_minmax_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:179,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:197,1
    - Dst: SS_make_initplan_output_param
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:200,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:201,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:203,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:220,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:221,1
    - Dst: create_minmaxagg_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:222,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:223,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 227
    functionName: preprocess_minmax_aggregates
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 1
    functionsReached:
    - get_equality_op_for_ordering_op
    - planner_rt_fetch
    - elog
    - create_minmaxagg_path
    - Assert
    - linitial
    - OidIsValid
    - exprType
    - create_pathtarget
    - can_minmax_aggs
    - add_path
    - exprCollation
    - SS_make_initplan_output_param
    - lfirst
    - list_length
    - IsA
    - build_minmax_path
    - fetch_upper_rel
    linkageType: ''
    returnType: void
    signature: void preprocess_minmax_aggregates(PlannerInfo *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:156,1
    - Dst: get_equality_op_for_ordering_op
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:164,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:165,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:166,1
    - Dst: build_minmax_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:177,1
    - Dst: build_minmax_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:179,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 184
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 72
    functionsReached:
    - elog
    - lfirst
    - OidIsValid
    - get_equality_op_for_ordering_op
    - build_minmax_path
    linkageType: ''
    returnType: void
    signature: void foreach(lc, aggs_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:197,1
    - Dst: SS_make_initplan_output_param
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:200,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:201,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 204
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 72
    functionsReached:
    - exprType
    - SS_make_initplan_output_param
    - lfirst
    - exprCollation
    linkageType: ''
    returnType: void
    signature: void foreach(lc, aggs_list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:246,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:248,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:254,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:255,1
    - Dst: fetch_agg_sort_op
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:283,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:284,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:287,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:289,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:292,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:292,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:295,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - root
    - context
    argTypes:
    - PlannerInfo*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 307
    functionName: can_minmax_aggs
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 1
    functionsReached:
    - fetch_agg_sort_op
    - type_is_rowtype
    - foreach
    - linitial_node
    - Assert
    - linitial
    - OidIsValid
    - contain_mutable_functions
    - exprType
    - makeNode
    - lappend
    - list_length
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: bool can_minmax_aggs(PlannerInfo *root, List **context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:339,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:340,1
    - Dst: choose_plan_name
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:343,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:353,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:354,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:357,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:358,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:360,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:364,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:375,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:375,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:377,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:379,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:390,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:392,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:398,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:400,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:403,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:404,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:410,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:414,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:416,1
    - Dst: query_planner
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:426,1
    - Dst: SS_identify_outer_params
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:434,1
    - Dst: SS_charge_for_initplans
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:435,1
    - Dst: get_cheapest_fractional_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:447,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:459,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 61
    argCount: 6
    argNames:
    - root
    - mminfo
    - eqop
    - sortop
    - reverse_sort
    - nulls_first
    argTypes:
    - PlannerInfo*
    - MinMaxAggInfo*
    - Oid
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 317
    functionDepth: 3
    functionLinenumber: 317
    functionLinenumberEnd: 478
    functionName: build_minmax_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 2
    functionsReached:
    - get_cheapest_fractional_path_for_pathkeys
    - copyObject
    - query_planner
    - pstrdup
    - apply_projection_to_path
    - makeConst
    - memcpy
    - Assert
    - assignSortGroupRef
    - IncrementVarSublevelsUp
    - palloc_object
    - SS_charge_for_initplans
    - list_member
    - makeTargetEntry
    - create_pathtarget
    - choose_plan_name
    - list_make1
    - SS_identify_outer_params
    - Int64GetDatum
    - makeNode
    - lcons
    linkageType: ''
    returnType: bool
    signature: "bool build_minmax_path(PlannerInfo *root, MinMaxAggInfo *mminfo,\n\t\t\t\t
      \ Oid eqop, Oid sortop, bool reverse_sort, bool nulls_first)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - extra
    argTypes:
    - PlannerInfo*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 496
    functionName: minmax_qp_callback
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 0
    functionsReached:
    - make_pathkeys_for_sortclauses
    linkageType: ''
    returnType: void
    signature: void minmax_qp_callback(PlannerInfo *root, void *extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:510,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:510,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:511,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:513,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - aggfnoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 518
    functionName: fetch_agg_sort_op
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid fetch_agg_sort_op(Oid aggfnoid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - parentplan
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: NUM_EXEC_TLIST
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUM_EXEC_TLIST(parentplan)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - parentplan
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: NUM_EXEC_QUAL
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUM_EXEC_QUAL(parentplan)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - con
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: ISREGCLASSCONST
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISREGCLASSCONST(con)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - root
    - ','
    - lst
    - ','
    - rtoffset
    - ','
    - num_exec
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: fix_scan_list
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fix_scan_list(root, lst, rtoffset, num_exec)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:292,1
    - Dst: add_rtes_to_flat_rtable
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:300,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:305,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:311,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:315,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:316,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:322,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:330,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:332,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:344,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:351,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:351,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:353,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:353,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:357,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:369,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:371,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:380,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - root
    - plan
    argTypes:
    - PlannerInfo*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 385
    functionName: set_plan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - foreach_current_index
    - foreach
    - memcpy
    - Assert
    - lappend
    - palloc0
    - lfirst
    - add_rtes_to_flat_rtable
    - palloc_object
    - list_length
    - set_plan_refs
    - lfirst_node
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      set_plan_references(PlannerInfo *root, Plan *plan)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:411,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:414,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:419,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:430,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:432,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:435,1
    - Dst: add_rte_to_flat_rtable
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:436,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:450,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:467,1
    - Dst: flatten_unplanned_rtes
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:489,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:491,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:491,1
    - Dst: add_rtes_to_flat_rtable
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:493,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - root
    - recursing
    argTypes:
    - PlannerInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 498
    functionName: add_rtes_to_flat_rtable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - IS_DUMMY_REL
    - flatten_unplanned_rtes
    - foreach
    - Assert
    - OidIsValid
    - lappend
    - makeNode
    - add_rte_to_flat_rtable
    - lfirst
    - add_rtes_to_flat_rtable
    - list_length
    - fetch_upper_rel
    linkageType: ''
    returnType: void
    signature: void add_rtes_to_flat_rtable(PlannerInfo *root, bool recursing)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - glob
    - rte
    argTypes:
    - PlannerGlobal*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 514
    functionName: flatten_unplanned_rtes
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - query_tree_walker
    linkageType: ''
    returnType: void
    signature: void flatten_unplanned_rtes(PlannerGlobal *glob, RangeTblEntry *rte)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:521,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:527,1
    - Dst: add_rte_to_flat_rtable
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:528,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:531,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:541,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:548,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - node
    - cxt
    argTypes:
    - Node*
    - flatten_rtes_walker_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 549
    functionName: flatten_rtes_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - query_tree_walker
    - add_rte_to_flat_rtable
    - OidIsValid
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool flatten_rtes_walker(Node *node, flatten_rtes_walker_context *cxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:568,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:569,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:587,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:604,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:606,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:607,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:608,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:621,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:630,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:631,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - glob
    - rteperminfos
    - rte
    argTypes:
    - PlannerGlobal*
    - List*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 633
    functionName: add_rte_to_flat_rtable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - memcpy
    - list_length
    - lappend
    - getRTEPermissionInfo
    - palloc_object
    - OidIsValid
    - bms_add_member
    - lappend_oid
    - addRTEPermissionInfo
    linkageType: ''
    returnType: void
    signature: "void add_rte_to_flat_rtable(PlannerGlobal *glob, List *rteperminfos,\n\t\t\t\t\t
      \  RangeTblEntry *rte)"
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:652,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:660,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:661,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:663,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:664,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:673,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:674,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:676,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:677,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:679,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:689,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:690,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:692,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:693,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:695,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:698,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:699,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:701,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:704,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:705,1
    - Dst: set_indexonlyscan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:721,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:722,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:724,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:726,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:727,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:736,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:737,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:739,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:740,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:742,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:743,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:752,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:753,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:755,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:756,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:758,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:768,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:769,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:771,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:772,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:774,1
    - Dst: set_subqueryscan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:780,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:789,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:790,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:792,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:793,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:795,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:804,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:805,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:807,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:808,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:810,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:820,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:821,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:823,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:824,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:826,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:836,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:837,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:839,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:840,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:849,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:850,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:852,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:853,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:862,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:863,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:865,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:866,1
    - Dst: set_foreignscan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:870,1
    - Dst: set_customscan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:873,1
    - Dst: set_join_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:879,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:885,1
    - Dst: set_param_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:886,1
    - Dst: set_hash_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:891,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:902,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:904,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:906,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:923,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:929,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:941,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:943,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:945,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:962,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:963,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:966,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:968,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:981,1
    - Dst: convert_combining_aggrefs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:984,1
    - Dst: convert_combining_aggrefs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:987,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:991,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:995,1
    - Dst: set_windowagg_runcondition_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1009,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1013,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1021,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1023,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1024,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1027,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1028,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1031,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1043,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1067,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1069,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1072,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1075,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1079,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1089,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1090,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1092,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1093,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1097,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1099,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1103,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1108,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1110,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1111,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1127,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1127,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1127,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1128,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1131,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1132,1
    - Dst: set_returning_clause_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1134,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1139,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1152,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1152,1
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1168,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1171,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1173,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1174,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1177,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1179,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1180,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1182,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1185,1
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1221,1
    - Dst: forthree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1223,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1227,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1228,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1229,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1233,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1236,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1242,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1245,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1251,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1256,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1262,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1263,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1273,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1275,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1277,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1279,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1290,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1295,1
    - Dst: set_append_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1302,1
    - Dst: set_mergeappend_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1307,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1321,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1322,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1324,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1324,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1336,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1337,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1339,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1339,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1340,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1346,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1347,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1359,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1360,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 271
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Plan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 638
    functionDepth: 1
    functionLinenumber: 638
    functionLinenumberEnd: 1363
    functionName: set_plan_refs
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - forthree
    - copyObject
    - lappend_int
    - lfirst_int
    - linitial_int
    - set_subqueryscan_references
    - list_concat
    - set_indexonlyscan_references
    - set_mergeappend_references
    - nodeTag
    - elog
    - set_windowagg_runcondition_references
    - build_tlist_index
    - set_customscan_references
    - foreach
    - DO_AGGSPLIT_COMBINE
    - Assert
    - set_param_references
    - linitial
    - pfree
    - set_foreignscan_references
    - list_length
    - outerPlan
    - NUM_EXEC_TLIST
    - forboth
    - set_upper_references
    - lappend
    - lfirst
    - set_hash_references
    - set_plan_refs
    - convert_combining_aggrefs
    - set_dummy_tlist_references
    - fix_join_expr
    - set_returning_clause_references
    - NUM_EXEC_QUAL
    - set_join_references
    - fix_scan_expr
    - makeNullConst
    - makeVar
    - offset_relid_set
    - IsA
    - set_append_references
    - fix_scan_list
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1233,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1236,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1242,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1245,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1231
    functionDepth: 1
    functionLinenumber: 1231
    functionLinenumberEnd: 1252
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 76
    functionsReached:
    - fix_join_expr
    - NUM_EXEC_QUAL
    - lfirst
    - NUM_EXEC_TLIST
    linkageType: ''
    returnType: void
    signature: void foreach(l, mergeActionList)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1391,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1393,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1396,1
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1399,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1403,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1408,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1410,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1415,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1417,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1422,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1424,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1427,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1430,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1431,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - IndexOnlyScan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1374
    functionDepth: 1
    functionLinenumber: 1374
    functionLinenumberEnd: 1436
    functionName: set_indexonlyscan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - build_tlist_index
    - foreach
    - pfree
    - NUM_EXEC_QUAL
    - lappend
    - fix_upper_expr
    - lfirst
    - NUM_EXEC_TLIST
    - fix_scan_list
    linkageType: ''
    returnType: Plan
    signature: "Plan *\nset_indexonlyscan_references(PlannerInfo *root,\n\t\t\t\t\t\t\t
      IndexOnlyScan *plan,\n\t\t\t\t\t\t\t int rtoffset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1454,1
    - Dst: set_plan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1457,1
    - Dst: trivial_subqueryscan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1459,1
    - Dst: clean_up_removed_plan_level
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1466,1
    - Dst: record_elided_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1470,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1471,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1484,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1485,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1487,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - SubqueryScan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1445
    functionDepth: 2
    functionLinenumber: 1445
    functionLinenumberEnd: 1494
    functionName: set_subqueryscan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - bms_make_singleton
    - NUM_EXEC_QUAL
    - fix_scan_list
    - clean_up_removed_plan_level
    - find_base_rel
    - record_elided_node
    - set_plan_references
    - NUM_EXEC_TLIST
    - trivial_subqueryscan
    linkageType: ''
    returnType: Plan
    signature: "Plan *\nset_subqueryscan_references(PlannerInfo *root,\n\t\t\t\t\t\t\tSubqueryScan
      *plan,\n\t\t\t\t\t\t\tint rtoffset)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1533,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1540,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1541,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1545,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1547,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1548,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1558,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1563,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1567,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1569,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SubqueryScan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1521
    functionDepth: 1
    functionLinenumber: 1521
    functionLinenumberEnd: 1582
    functionName: trivial_subqueryscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - equal
    - Assert
    - lfirst
    - list_length
    - IsA
    - forboth
    linkageType: ''
    returnType: bool
    signature: bool trivial_subqueryscan(SubqueryScan *plan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SS_compute_initplan_cost
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1605,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1617,1
    - Dst: apply_tlist_labeling
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1626,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - parent
    - child
    argTypes:
    - Plan*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1591
    functionDepth: 2
    functionLinenumber: 1591
    functionLinenumberEnd: 1629
    functionName: clean_up_removed_plan_level
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - apply_tlist_labeling
    - list_concat
    - SS_compute_initplan_cost
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      clean_up_removed_plan_level(Plan *parent, Plan *child)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1650,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1653,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1658,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1660,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1665,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1667,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1672,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1674,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1679,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1680,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1683,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1684,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1693,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1694,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1696,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1697,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1699,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1700,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1702,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1703,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1706,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1707,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - root
    - fscan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - ForeignScan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1635
    functionDepth: 1
    functionLinenumber: 1635
    functionLinenumberEnd: 1712
    functionName: set_foreignscan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - build_tlist_index
    - pfree
    - NUM_EXEC_QUAL
    - fix_upper_expr
    - offset_relid_set
    - NUM_EXEC_TLIST
    - fix_scan_list
    linkageType: ''
    returnType: void
    signature: "void set_foreignscan_references(PlannerInfo *root,\n\t\t\t\t\t\t   ForeignScan
      *fscan,\n\t\t\t\t\t\t   int rtoffset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1732,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1735,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1740,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1742,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1747,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1749,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1754,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1755,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1758,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1759,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1765,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1766,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1768,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1769,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1771,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1772,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1776,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1778,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1778,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1778,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1781,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - root
    - cscan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - CustomScan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1782
      start: 1718
    functionDepth: 2
    functionLinenumber: 1718
    functionLinenumberEnd: 1782
    functionName: set_customscan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - build_tlist_index
    - foreach
    - pfree
    - NUM_EXEC_QUAL
    - fix_upper_expr
    - lfirst
    - offset_relid_set
    - set_plan_refs
    - NUM_EXEC_TLIST
    - fix_scan_list
    linkageType: ''
    returnType: void
    signature: "void set_customscan_references(PlannerInfo *root,\n\t\t\t\t\t\t  CustomScan
      *cscan,\n\t\t\t\t\t\t  int rtoffset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1805,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1806,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1807,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1810,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1811,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1813,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1818,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1823,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1826,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1840,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1847,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1849,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - root
    - part_prune_index
    - rtoffset
    argTypes:
    - PlannerInfo*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1850
      start: 1798
    functionDepth: 1
    functionLinenumber: 1798
    functionLinenumberEnd: 1850
    functionName: register_partpruneinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - foreach
    - Assert
    - lappend
    - list_nth_node
    - lfirst
    - offset_relid_set
    - list_length
    - bms_add_member
    - fix_scan_list
    linkageType: ''
    returnType: int
    signature: int register_partpruneinfo(PlannerInfo *root, int part_prune_index,
      int rtoffset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1818,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1823,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1826,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1840,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1816
    functionDepth: 1
    functionLinenumber: 1816
    functionLinenumberEnd: 1844
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 79
    functionsReached:
    - lfirst
    - bms_add_member
    - fix_scan_list
    linkageType: ''
    returnType: void
    signature: void foreach(l2, prune_infos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1871,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1874,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1876,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1876,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1876,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1887,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1889,1
    - Dst: clean_up_removed_plan_level
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1895,1
    - Dst: record_elided_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1898,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1899,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1910,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1912,1
    - Dst: register_partpruneinfo
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1920,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1923,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1924,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - root
    - aplan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Append*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1927
      start: 1859
    functionDepth: 3
    functionLinenumber: 1859
    functionLinenumberEnd: 1927
    functionName: set_append_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - set_dummy_tlist_references
    - register_partpruneinfo
    - foreach
    - Assert
    - linitial
    - clean_up_removed_plan_level
    - lfirst
    - record_elided_node
    - offset_relid_set
    - list_length
    - set_plan_refs
    linkageType: ''
    returnType: Plan
    signature: "Plan *\nset_append_references(PlannerInfo *root,\n\t\t\t\t\t  Append
      *aplan,\n\t\t\t\t\t  int rtoffset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1948,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1951,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1953,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1953,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1953,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1965,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1967,1
    - Dst: clean_up_removed_plan_level
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1973,1
    - Dst: record_elided_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1976,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1977,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1988,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1990,1
    - Dst: register_partpruneinfo
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2001,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2002,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - root
    - mplan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - MergeAppend*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1936
    functionDepth: 3
    functionLinenumber: 1936
    functionLinenumberEnd: 2005
    functionName: set_mergeappend_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - set_dummy_tlist_references
    - register_partpruneinfo
    - foreach
    - Assert
    - linitial
    - clean_up_removed_plan_level
    - lfirst
    - record_elided_node
    - offset_relid_set
    - list_length
    - set_plan_refs
    linkageType: ''
    returnType: Plan
    signature: "Plan *\nset_mergeappend_references(PlannerInfo *root,\n\t\t\t\t\t\t
      \  MergeAppend *mplan,\n\t\t\t\t\t\t   int rtoffset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2023,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2025,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2030,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2033,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Plan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2037
      start: 2011
    functionDepth: 1
    functionLinenumber: 2011
    functionLinenumberEnd: 2037
    functionName: set_hash_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - set_dummy_tlist_references
    - build_tlist_index
    - Assert
    - NUM_EXEC_QUAL
    - fix_upper_expr
    linkageType: ''
    returnType: void
    signature: void set_hash_references(PlannerInfo *root, Plan *plan, int rtoffset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_offset_members
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2049,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - relids
    - rtoffset
    argTypes:
    - Relids
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2050
      start: 2043
    functionDepth: 1
    functionLinenumber: 2043
    functionLinenumberEnd: 2050
    functionName: offset_relid_set
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 6
    functionsReached:
    - bms_offset_members
    linkageType: ''
    returnType: Relids
    signature: Relids offset_relid_set(Relids relids, int rtoffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2062,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - var
    argTypes:
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2066
      start: 2059
    functionDepth: 0
    functionLinenumber: 2059
    functionLinenumberEnd: 2066
    functionName: copyVar
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: Var
    signature: 'Var *

      copyVar(Var *var)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2085,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2087,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2090,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2092,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2095,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2097,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2100,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2102,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2103,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2106,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2108,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2109,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2112,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2114,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2115,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2118,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2122,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2123,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2125,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2126,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2128,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2129,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2131,1
    - Dst: ISREGCLASSCONST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2136,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2138,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2139,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2148,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2155,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2157,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2160,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2160,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 2
    argNames:
    - root
    - node
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2081
    functionDepth: 1
    functionLinenumber: 2081
    functionLinenumberEnd: 2166
    functionName: fix_expr_common
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - equal
    - set_sa_opfuncid
    - lappend_int
    - foreach
    - lfirst_int
    - DatumGetObjectId
    - set_opfuncid
    - Assert
    - ISREGCLASSCONST
    - OidIsValid
    - IsA
    - lappend_oid
    - record_plan_function_dependency
    linkageType: ''
    returnType: void
    signature: void fix_expr_common(PlannerInfo *root, Node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2186,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2187,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2188,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2189,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2190,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2191,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2191,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - root
    - p
    argTypes:
    - PlannerInfo*
    - Param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2194
      start: 2176
    functionDepth: 3
    functionLinenumber: 2176
    functionLinenumberEnd: 2194
    functionName: fix_param_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - list_length
    - list_nth
    - copyObject
    - elog
    linkageType: ''
    returnType: Node
    signature: 'Node *

      fix_param_node(PlannerInfo *root, Param *p)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2224,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2226,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2228,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - root
    - asplan
    - num_exec
    argTypes:
    - PlannerInfo*
    - AlternativeSubPlan*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2249
      start: 2207
    functionDepth: 1
    functionLinenumber: 2207
    functionLinenumberEnd: 2249
    functionName: fix_alternative_subplan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - Assert
    - lfirst
    - foreach
    linkageType: ''
    returnType: Node
    signature: "Node *\nfix_alternative_subplan(PlannerInfo *root, AlternativeSubPlan
      *asplan,\n\t\t\t\t\t\tdouble num_exec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fix_scan_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2284,1
    - Dst: fix_scan_expr_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2299,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 4
    argNames:
    - root
    - node
    - rtoffset
    - num_exec
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2302
      start: 2269
    functionDepth: 1
    functionLinenumber: 2269
    functionLinenumberEnd: 2302
    functionName: fix_scan_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - fix_scan_expr_walker
    - fix_scan_expr_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      fix_scan_expr(PlannerInfo *root, Node *node, int rtoffset, double num_exec)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2309,1
    - Dst: copyVar
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2311,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2321,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2322,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2328,1
    - Dst: fix_param_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2329,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2330,1
    - Dst: find_minmax_agg_replacement_param
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2336,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2340,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2344,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2346,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2348,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2348,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2352,1
    - Dst: fix_scan_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2358,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2360,1
    - Dst: fix_scan_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2361,1
    - Dst: fix_alternative_subplan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2361,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2365,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2366,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_scan_expr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2367
      start: 2304
    functionDepth: 4
    functionLinenumber: 2304
    functionLinenumberEnd: 2367
    functionName: fix_scan_expr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - fix_alternative_subplan
    - copyObject
    - Assert
    - IS_SPECIAL_VARNO
    - fix_expr_common
    - fix_param_node
    - expression_tree_mutator
    - fix_scan_expr_mutator
    - copyVar
    - IsA
    - find_minmax_agg_replacement_param
    linkageType: ''
    returnType: Node
    signature: 'Node *

      fix_scan_expr_mutator(Node *node, fix_scan_expr_context *context)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2374,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2374,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2375,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2376,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2376,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2377,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_scan_expr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2379
      start: 2369
    functionDepth: 2
    functionLinenumber: 2369
    functionLinenumberEnd: 2379
    functionName: fix_scan_expr_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - Assert
    - fix_expr_common
    - IsA
    - expression_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool fix_scan_expr_walker(Node *node, fix_scan_expr_context *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2397,1
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2398,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2407,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2414,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2417,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2422,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2424,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2434,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2439,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2441,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2443,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2446,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2450,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2457,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2459,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2463,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2470,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2476,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2481,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2494,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2500,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2501,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2502,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2508,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2509,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2511,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2512,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - root
    - join
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Join*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2513
      start: 2389
    functionDepth: 1
    functionLinenumber: 2389
    functionLinenumberEnd: 2513
    functionName: set_join_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - elog
    - fix_join_expr
    - build_tlist_index
    - foreach
    - pfree
    - NUM_EXEC_QUAL
    - bms_is_empty
    - fix_upper_expr
    - lfirst
    - IsA
    - NUM_EXEC_TLIST
    linkageType: ''
    returnType: void
    signature: void set_join_references(PlannerInfo *root, Join *join, int rtoffset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2541,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2551,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2556,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2557,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2560,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2561,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2566,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2568,1
    - Dst: search_indexed_tlist_for_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2575,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2580,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2585,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2588,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2593,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2594,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2596,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2601,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2606,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2608,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Plan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2609
      start: 2533
    functionDepth: 1
    functionLinenumber: 2533
    functionLinenumberEnd: 2609
    functionName: set_upper_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - build_tlist_index
    - foreach
    - flatCopyTargetEntry
    - pfree
    - remove_nulling_relids
    - NUM_EXEC_QUAL
    - lappend
    - fix_upper_expr
    - lfirst
    - search_indexed_tlist_for_sortgroupref
    - IsA
    - NUM_EXEC_TLIST
    - bms_make_singleton
    linkageType: ''
    returnType: void
    signature: void set_upper_references(PlannerInfo *root, Plan *plan, int rtoffset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2621,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2621,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2621,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2631,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2633,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2636,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2638,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2638,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2647,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2649,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2652,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - root
    - plan
    argTypes:
    - PlannerInfo*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2618
    functionDepth: 1
    functionLinenumber: 2618
    functionLinenumberEnd: 2654
    functionName: set_param_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - foreach
    - lfirst_int
    - Assert
    - lfirst
    - bms_intersect
    - IsA
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void set_param_references(PlannerInfo *root, Plan *plan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2685,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2686,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2693,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2694,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2706,1
    - Dst: mark_partial_aggref
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2714,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2719,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2719,1
    - Dst: mark_partial_aggref
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2721,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2725,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2726
      start: 2673
    functionDepth: 2
    functionLinenumber: 2673
    functionLinenumberEnd: 2726
    functionName: convert_combining_aggrefs
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - copyObject
    - memcpy
    - Assert
    - mark_partial_aggref
    - makeTargetEntry
    - makeNode
    - expression_tree_mutator
    - list_make1
    - IsA
    linkageType: ''
    returnType: Node
    signature: 'Node *

      convert_combining_aggrefs(Node *node, void *context)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2748,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2750,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2760,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2763,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2767,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2769,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2770,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2771,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2773,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2785,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2787,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - plan
    - rtoffset
    argTypes:
    - Plan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2792
      start: 2741
    functionDepth: 1
    functionLinenumber: 2741
    functionLinenumberEnd: 2792
    functionName: set_dummy_tlist_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 4
    functionsReached:
    - exprTypmod
    - foreach
    - flatCopyTargetEntry
    - exprType
    - lappend
    - exprCollation
    - lfirst
    - IsA
    - makeVar
    linkageType: ''
    returnType: void
    signature: void set_dummy_tlist_references(Plan *plan, int rtoffset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2817,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2818,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2828,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2830,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2840,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - tlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2849
      start: 2808
    functionDepth: 1
    functionLinenumber: 2808
    functionLinenumberEnd: 2849
    functionName: build_tlist_index
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 7
    functionsReached:
    - list_length
    - lfirst
    - IsA
    - palloc
    linkageType: ''
    returnType: indexed_tlist
    signature: 'indexed_tlist *

      build_tlist_index(List *tlist)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2828,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2830,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2840,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2844
      start: 2826
    functionDepth: 1
    functionLinenumber: 2826
    functionLinenumberEnd: 2844
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 87
    functionsReached:
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2868,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2869,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2879,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2881,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2894,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - tlist
    - ignore_rel
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2901
      start: 2859
    functionDepth: 1
    functionLinenumber: 2859
    functionLinenumberEnd: 2901
    functionName: build_tlist_index_other_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - list_length
    - lfirst
    - IsA
    - palloc
    linkageType: ''
    returnType: indexed_tlist
    signature: 'indexed_tlist *

      build_tlist_index_other_vars(List *tlist, int ignore_rel)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2879,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2881,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2894,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2896
      start: 2877
    functionDepth: 1
    functionLinenumber: 2877
    functionLinenumberEnd: 2896
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 87
    functionsReached:
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: copyVar
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2933,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2951,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2952,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2953,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2954,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2955,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 5
    argNames:
    - var
    - itlist
    - newvarno
    - rtoffset
    - nrm_match
    argTypes:
    - Var*
    - indexed_tlist*
    - int
    - int
    - NullingRelsMatch
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2967
      start: 2916
    functionDepth: 1
    functionLinenumber: 2916
    functionLinenumberEnd: 2967
    functionName: search_indexed_tlist_for_var
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - elog
    - bmsToString
    - bms_equal
    - copyVar
    - bms_is_subset
    linkageType: ''
    returnType: Var
    signature: "Var *\nsearch_indexed_tlist_for_var(Var *var, indexed_tlist *itlist,\n\t\t\t\t\t\t\t
      int newvarno, int rtoffset,\n\t\t\t\t\t\t\t NullingRelsMatch nrm_match)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2986,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2988,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2990,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3005,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3006,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3007,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3008,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3009,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3013,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - phv
    - itlist
    - newvarno
    - nrm_match
    argTypes:
    - PlaceHolderVar*
    - indexed_tlist*
    - int
    - NullingRelsMatch
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 2979
    functionDepth: 1
    functionLinenumber: 2979
    functionLinenumberEnd: 3020
    functionName: search_indexed_tlist_for_phv
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - elog
    - foreach
    - makeVarFromTargetEntry
    - bmsToString
    - lfirst
    - bms_equal
    - IsA
    - bms_is_subset
    linkageType: ''
    returnType: Var
    signature: "Var *\nsearch_indexed_tlist_for_phv(PlaceHolderVar *phv,\n\t\t\t\t\t\t\t
      indexed_tlist *itlist, int newvarno,\n\t\t\t\t\t\t\t NullingRelsMatch nrm_match)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3043,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3046,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3052,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - node
    - itlist
    - newvarno
    argTypes:
    - Expr*
    - indexed_tlist*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3058
      start: 3030
    functionDepth: 1
    functionLinenumber: 3030
    functionLinenumberEnd: 3058
    functionName: search_indexed_tlist_for_non_var
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - makeVarFromTargetEntry
    - IsA
    - tlist_member
    linkageType: ''
    returnType: Var
    signature: "Var *\nsearch_indexed_tlist_for_non_var(Expr *node,\n\t\t\t\t\t\t\t\t
      indexed_tlist *itlist, int newvarno)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3078,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3080,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3091,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3096,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - node
    - sortgroupref
    - itlist
    - newvarno
    argTypes:
    - Expr*
    - Index
    - indexed_tlist*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3103
      start: 3070
    functionDepth: 1
    functionLinenumber: 3070
    functionLinenumberEnd: 3103
    functionName: search_indexed_tlist_for_sortgroupref
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - equal
    - makeVarFromTargetEntry
    - lfirst
    - foreach
    linkageType: ''
    returnType: Var
    signature: "Var *\nsearch_indexed_tlist_for_sortgroupref(Expr *node,\n\t\t\t\t\t\t\t\t\t
      \ Index sortgroupref,\n\t\t\t\t\t\t\t\t\t  indexed_tlist *itlist,\n\t\t\t\t\t\t\t\t\t
      \ int newvarno)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fix_join_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 8
    argNames:
    - root
    - clauses
    - outer_itlist
    - inner_itlist
    - acceptable_rel
    - rtoffset
    - nrm_match
    - num_exec
    argTypes:
    - PlannerInfo*
    - List*
    - indexed_tlist*
    - indexed_tlist*
    - Index
    - int
    - NullingRelsMatch
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3168
      start: 3148
    functionDepth: 1
    functionLinenumber: 3148
    functionLinenumberEnd: 3168
    functionName: fix_join_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 3
    functionsReached:
    - fix_join_expr_mutator
    linkageType: ''
    returnType: List
    signature: "List *\nfix_join_expr(PlannerInfo *root,\n\t\t\t  List *clauses,\n\t\t\t
      \ indexed_tlist *outer_itlist,\n\t\t\t  indexed_tlist *inner_itlist,\n\t\t\t
      \ Index acceptable_rel,\n\t\t\t  int rtoffset,\n\t\t\t  NullingRelsMatch nrm_match,\n\t\t\t
      \ double num_exec)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3177,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3190,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3192,1
    - Dst: search_indexed_tlist_for_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3199,1
    - Dst: search_indexed_tlist_for_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3211,1
    - Dst: copyVar
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3223,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3231,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3233,1
    - Dst: search_indexed_tlist_for_phv
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3240,1
    - Dst: search_indexed_tlist_for_phv
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3249,1
    - Dst: fix_join_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3259,1
    - Dst: search_indexed_tlist_for_non_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3264,1
    - Dst: search_indexed_tlist_for_non_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3272,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3279,1
    - Dst: fix_param_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3280,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3281,1
    - Dst: fix_join_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3282,1
    - Dst: fix_alternative_subplan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3282,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3286,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3287,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 58
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_join_expr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3288
      start: 3170
    functionDepth: 4
    functionLinenumber: 3170
    functionLinenumberEnd: 3288
    functionName: fix_join_expr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - elog
    - fix_join_expr_mutator
    - fix_alternative_subplan
    - fix_expr_common
    - fix_param_node
    - search_indexed_tlist_for_var
    - expression_tree_mutator
    - search_indexed_tlist_for_phv
    - copyVar
    - IsA
    - search_indexed_tlist_for_non_var
    linkageType: ''
    returnType: Node
    signature: 'Node *

      fix_join_expr_mutator(Node *node, fix_join_expr_context *context)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fix_upper_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 6
    argNames:
    - root
    - node
    - subplan_itlist
    - newvarno
    - rtoffset
    - num_exec
    argTypes:
    - PlannerInfo*
    - Node*
    - indexed_tlist*
    - int
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3340
      start: 3324
    functionDepth: 1
    functionLinenumber: 3324
    functionLinenumberEnd: 3340
    functionName: fix_upper_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 6
    functionsReached:
    - fix_upper_expr_mutator
    linkageType: ''
    returnType: Node
    signature: "Node *\nfix_upper_expr(PlannerInfo *root,\n\t\t\t   Node *node,\n\t\t\t
      \  indexed_tlist *subplan_itlist,\n\t\t\t   int newvarno,\n\t\t\t   int rtoffset,\n\t\t\t
      \  double num_exec)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3349,1
    - Dst: search_indexed_tlist_for_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3353,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3359,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3362,1
    - Dst: search_indexed_tlist_for_phv
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3369,1
    - Dst: fix_upper_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3378,1
    - Dst: search_indexed_tlist_for_non_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3383,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3390,1
    - Dst: fix_param_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3391,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3392,1
    - Dst: find_minmax_agg_replacement_param
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3398,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3402,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3406,1
    - Dst: fix_upper_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3407,1
    - Dst: fix_alternative_subplan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3407,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3411,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3412,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_upper_expr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3413
      start: 3342
    functionDepth: 4
    functionLinenumber: 3342
    functionLinenumberEnd: 3413
    functionName: fix_upper_expr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - elog
    - fix_alternative_subplan
    - copyObject
    - fix_upper_expr_mutator
    - fix_expr_common
    - fix_param_node
    - search_indexed_tlist_for_var
    - expression_tree_mutator
    - search_indexed_tlist_for_phv
    - IsA
    - find_minmax_agg_replacement_param
    - search_indexed_tlist_for_non_var
    linkageType: ''
    returnType: Node
    signature: 'Node *

      fix_upper_expr_mutator(Node *node, fix_upper_expr_context *context)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_tlist_index_other_vars
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3466,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3468,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3475,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - root
    - rlist
    - topplan
    - resultRelation
    - rtoffset
    argTypes:
    - PlannerInfo*
    - List*
    - Plan*
    - Index
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3480
      start: 3443
    functionDepth: 2
    functionLinenumber: 3443
    functionLinenumberEnd: 3480
    functionName: set_returning_clause_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - pfree
    - fix_join_expr
    - build_tlist_index_other_vars
    - NUM_EXEC_TLIST
    linkageType: ''
    returnType: List
    signature: "List *\nset_returning_clause_references(PlannerInfo *root,\n\t\t\t\t\t\t\t\tList
      *rlist,\n\t\t\t\t\t\t\t\tPlan *topplan,\n\t\t\t\t\t\t\t\tIndex resultRelation,\n\t\t\t\t\t\t\t\tint
      rtoffset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3494,1
    - Dst: search_indexed_tlist_for_non_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3498,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3503,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3506,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_windowagg_cond_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3509
      start: 3487
    functionDepth: 2
    functionLinenumber: 3487
    functionLinenumberEnd: 3509
    functionName: fix_windowagg_condition_expr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - elog
    - expression_tree_mutator
    - IsA
    - search_indexed_tlist_for_non_var
    linkageType: ''
    returnType: Node
    signature: "Node *\nfix_windowagg_condition_expr_mutator(Node *node,\n\t\t\t\t\t\t\t\t\t
      fix_windowagg_cond_context *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fix_windowagg_condition_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - runcondition
    - subplan_itlist
    argTypes:
    - PlannerInfo*
    - List*
    - indexed_tlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3530
      start: 3517
    functionDepth: 3
    functionLinenumber: 3517
    functionLinenumberEnd: 3530
    functionName: fix_windowagg_condition_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - fix_windowagg_condition_expr_mutator
    linkageType: ''
    returnType: List
    signature: "List *\nfix_windowagg_condition_expr(PlannerInfo *root,\n\t\t\t\t\t\t\t
      List *runcondition,\n\t\t\t\t\t\t\t indexed_tlist *subplan_itlist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3546,1
    - Dst: fix_windowagg_condition_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3548,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - runcondition
    - plan
    argTypes:
    - PlannerInfo*
    - List*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3553
      start: 3538
    functionDepth: 4
    functionLinenumber: 3538
    functionLinenumberEnd: 3553
    functionName: set_windowagg_runcondition_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - pfree
    - build_tlist_index
    - fix_windowagg_condition_expr
    linkageType: ''
    returnType: List
    signature: "List *\nset_windowagg_runcondition_references(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t
      \ List *runcondition,\n\t\t\t\t\t\t\t\t\t  Plan *plan)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3569,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3571,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3574,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3576,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3579,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - root
    - aggref
    argTypes:
    - PlannerInfo*
    - Aggref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3584
      start: 3565
    functionDepth: 1
    functionLinenumber: 3565
    functionLinenumberEnd: 3584
    functionName: find_minmax_agg_replacement_param
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 3
    functionsReached:
    - equal
    - foreach
    - linitial
    - lfirst
    - list_length
    linkageType: ''
    returnType: Param
    signature: 'Param *

      find_minmax_agg_replacement_param(PlannerInfo *root, Aggref *aggref)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3611,1
    - Dst: GetSysCacheHashValue1
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3619,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3620,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - root
    - funcid
    argTypes:
    - PlannerInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3624
      start: 3598
    functionDepth: 1
    functionLinenumber: 3598
    functionLinenumberEnd: 3624
    functionName: record_plan_function_dependency
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - GetSysCacheHashValue1
    - ObjectIdGetDatum
    - lappend
    - makeNode
    linkageType: ''
    returnType: void
    signature: void record_plan_function_dependency(PlannerInfo *root, Oid funcid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3647,1
    - Dst: GetSysCacheHashValue1
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3655,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3656,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3658,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - root
    - typid
    argTypes:
    - PlannerInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3660
      start: 3638
    functionDepth: 1
    functionLinenumber: 3638
    functionLinenumberEnd: 3660
    functionName: record_plan_type_dependency
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - GetSysCacheHashValue1
    - ObjectIdGetDatum
    - lappend
    - makeNode
    linkageType: ''
    returnType: void
    signature: void record_plan_type_dependency(PlannerInfo *root, Oid typid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3689,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3696,1
    - Dst: extract_query_dependencies_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - query
    - relationOids
    - invalItems
    - hasRowSecurity
    argTypes:
    - Node*
    - List**
    - List**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3705
      start: 3679
    functionDepth: 1
    functionLinenumber: 3679
    functionLinenumberEnd: 3705
    functionName: extract_query_dependencies
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - extract_query_dependencies_walker
    - MemSet
    linkageType: ''
    returnType: void
    signature: "void extract_query_dependencies(Node *query,\n\t\t\t\t\t\t   List
      **relationOids,\n\t\t\t\t\t\t   List **invalItems,\n\t\t\t\t\t\t   bool *hasRowSecurity)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3720,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3720,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3721,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3734,1
    - Dst: extract_query_dependencies_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3739,1
    - Dst: extract_query_dependencies_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3741,1
    - Dst: UtilityContainsQuery
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3751,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3761,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3763,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3766,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3767,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3769,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3773,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3777,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3778,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3780
      start: 3715
    functionDepth: 2
    functionLinenumber: 3715
    functionLinenumberEnd: 3780
    functionName: extract_query_dependencies_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 3
    functionsReached:
    - foreach
    - Assert
    - UtilityContainsQuery
    - fix_expr_common
    - query_tree_walker
    - lfirst
    - OidIsValid
    - expression_tree_walker
    - extract_query_dependencies_walker
    - IsA
    - lappend_oid
    linkageType: ''
    returnType: bool
    signature: bool extract_query_dependencies_walker(Node *node, PlannerInfo *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3791,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - glob
    - plan_node_id
    - elided_type
    - relids
    argTypes:
    - PlannerGlobal*
    - int
    - NodeTag
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3798
      start: 3787
    functionDepth: 1
    functionLinenumber: 3787
    functionLinenumberEnd: 3798
    functionName: record_elided_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 3
    functionsReached:
    - lappend
    - makeNode
    linkageType: ''
    returnType: void
    signature: "void record_elided_node(PlannerGlobal *glob, int plan_node_id,\n\t\t\t\t
      \  NodeTag elided_type, Bitmapset *relids)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setup_simple_rel_arrays
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:88,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:96,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:97,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:99,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:106,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:110,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:129,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:139,1
    - Dst: create_group_result_path
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:140,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:145,1
    - Dst: add_base_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:173,1
    - Dst: remove_useless_groupby_columns
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:176,1
    - Dst: build_base_rel_tlists
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:188,1
    - Dst: find_placeholders_in_jointree
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:190,1
    - Dst: find_lateral_references
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:192,1
    - Dst: deconstruct_jointree
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:194,1
    - Dst: reconsider_outer_join_clauses
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:201,1
    - Dst: generate_base_implied_equalities
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:208,1
    - Dst: fix_placeholder_input_needed_levels
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:224,1
    - Dst: remove_useless_joins
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:231,1
    - Dst: reduce_unique_semijoins
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:237,1
    - Dst: remove_useless_self_joins
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:242,1
    - Dst: add_placeholders_to_base_rels
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:249,1
    - Dst: create_lateral_join_info
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:255,1
    - Dst: match_foreign_keys_to_quals
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:263,1
    - Dst: extract_restriction_or_clauses
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:269,1
    - Dst: setup_eager_aggregation
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:275,1
    - Dst: add_other_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:285,1
    - Dst: distribute_row_identity_vars
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:292,1
    - Dst: make_one_rel
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:297,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:302,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 59
    argCount: 3
    argNames:
    - root
    - qp_callback
    - qp_extra
    argTypes:
    - PlannerInfo*
    - query_pathkeys_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 305
    functionName: query_planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planmain.c
    functionUses: 5
    functionsReached:
    - build_simple_rel
    - add_other_rels_to_query
    - make_one_rel
    - match_foreign_keys_to_quals
    - elog
    - distribute_row_identity_vars
    - Assert
    - linitial
    - create_group_result_path
    - remove_useless_groupby_columns
    - find_placeholders_in_jointree
    - build_base_rel_tlists
    - list_length
    - extract_restriction_or_clauses
    - reduce_unique_semijoins
    - add_path
    - find_lateral_references
    - generate_base_implied_equalities
    - remove_useless_joins
    - remove_useless_self_joins
    - setup_eager_aggregation
    - create_lateral_join_info
    - setup_simple_rel_arrays
    - add_base_rels_to_query
    - reconsider_outer_join_clauses
    - add_placeholders_to_base_rels
    - deconstruct_jointree
    - set_cheapest
    - is_parallel_safe
    - IsA
    - fix_placeholder_input_needed_levels
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\nquery_planner(PlannerInfo *root,\n\t\t\t  query_pathkeys_callback
      qp_callback, void *qp_extra)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:104,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:106,1
    - Dst: join_is_removable
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:111,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:119,1
    - Dst: remove_leftjoinrel_from_query
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:121,1
    - Dst: remove_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:125,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:127,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - root
    - joinlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 146
    functionName: remove_useless_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - elog
    - list_delete_cell
    - foreach
    - remove_leftjoinrel_from_query
    - remove_rel_from_joinlist
    - join_is_removable
    - lfirst
    - bms_singleton_member
    linkageType: ''
    returnType: List
    signature: 'List *

      remove_useless_joins(PlannerInfo *root, List *joinlist)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:177,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:188,1
    - Dst: rel_supports_distinctness
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:195,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:199,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:200,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:201,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:202,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:219,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:232,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:234,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:236,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:238,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:240,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:242,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:249,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:252,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:252,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:264,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:266,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:285,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:297,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:302,1
    - Dst: rel_is_distinct_for
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:309,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 46
    argCount: 2
    argNames:
    - root
    - sjinfo
    argTypes:
    - PlannerInfo*
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 317
    functionName: join_is_removable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - rel_supports_distinctness
    - pull_varnos
    - foreach
    - RINFO_IS_PUSHED_DOWN
    - Assert
    - rel_is_distinct_for
    - bms_is_member
    - lappend
    - bms_copy
    - find_base_rel
    - lfirst
    - bms_overlap
    - clause_sides_match_join
    - bms_add_member
    - bms_is_subset
    - bms_union
    - bms_get_singleton_member
    linkageType: ''
    returnType: bool
    signature: bool join_is_removable(PlannerInfo *root, SpecialJoinInfo *sjinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:331,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:339,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:340,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:341,1
    - Dst: remove_rel_from_query
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:343,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:361,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:363,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:371,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:374,1
    - Dst: remove_join_clause_from_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:376,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:378,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:387,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:395,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:398,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:399,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:399,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:403,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:421,1
    - Dst: rebuild_placeholder_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:427,1
    - Dst: rebuild_joinclause_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:428,1
    - Dst: rebuild_eclass_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:429,1
    - Dst: rebuild_lateral_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 3
    argNames:
    - root
    - relid
    - sjinfo
    argTypes:
    - PlannerInfo*
    - int
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 431
    functionName: remove_leftjoinrel_from_query
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - pull_varnos
    - bms_add_members
    - bms_add_member
    - bms_union
    - Assert
    - pfree
    - bms_is_member
    - rebuild_placeholder_attr_needed
    - rebuild_lateral_attr_needed
    - find_base_rel
    - list_copy
    - remove_rel_from_restrictinfo
    - RINFO_IS_PUSHED_DOWN
    - remove_rel_from_query
    - lfirst
    - rebuild_joinclause_attr_needed
    - remove_join_clause_from_rels
    - distribute_restrictinfo_to_rels
    - rebuild_eclass_attr_needed
    linkageType: ''
    returnType: void
    signature: "void remove_leftjoinrel_from_query(PlannerInfo *root, int relid,\n\t\t\t\t\t\t\t
      \ SpecialJoinInfo *sjinfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:374,1
    - Dst: remove_join_clause_from_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:376,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:378,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:387,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:395,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:398,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:399,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:399,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 405
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 93
    functionsReached:
    - pull_varnos
    - Assert
    - bms_is_member
    - lfirst
    - remove_rel_from_restrictinfo
    - distribute_restrictinfo_to_rels
    - remove_join_clause_from_rels
    - RINFO_IS_PUSHED_DOWN
    linkageType: ''
    returnType: void
    signature: void foreach(l, joininfos)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:461,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:462,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:463,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:468,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:469,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:473,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:474,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:486,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:488,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:496,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:497,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:498,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:499,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:502,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:503,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:504,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:505,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:510,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:511,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:512,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:513,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:515,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:516,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:517,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:518,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:526,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:550,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:554,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:554,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:557,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:558,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:559,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:561,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:569,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:572,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:572,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:575,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:576,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:580,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:583,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:583,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:595,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:597,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:607,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:619,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:621,1
    - Dst: remove_rel_from_eclass
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:660,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:666,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:667,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:673,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:678,1
    - Dst: remove_rel_from_phvs
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:681,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 79
    argCount: 5
    argNames:
    - root
    - relid
    - subst
    - sjinfo
    - joinrelids
    argTypes:
    - PlannerInfo*
    - int
    - int
    - SpecialJoinInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 685
    functionName: remove_rel_from_query
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - foreach_delete_current
    - foreach
    - Assert
    - bms_is_member
    - bms_copy
    - foreach_node
    - remove_rel_from_phvs
    - lfirst
    - ChangeVarNodesExtended
    - bms_difference
    - bms_is_empty
    - bms_is_subset
    - remove_rel_from_eclass
    - adjust_relid_set
    - bms_make_singleton
    linkageType: ''
    returnType: void
    signature: "void remove_rel_from_query(PlannerInfo *root, int relid,\n\t\t\t\t\t
      \ int subst, SpecialJoinInfo *sjinfo,\n\t\t\t\t\t  Relids joinrelids)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:705,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:706,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:707,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:709,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:710,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:711,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:713,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:714,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:715,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:717,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:718,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:719,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:721,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:722,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:723,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:725,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:726,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:727,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:734,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:734,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:735,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:737,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:740,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:747,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:749,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:754,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:756,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 3
    argNames:
    - rinfo
    - relid
    - ojrelid
    argTypes:
    - RestrictInfo*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 695
    functionDepth: 2
    functionLinenumber: 695
    functionLinenumberEnd: 760
    functionName: remove_rel_from_restrictinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 3
    functionsReached:
    - bms_del_member
    - foreach
    - Assert
    - castNode
    - bms_copy
    - lfirst_node
    - lfirst
    - is_andclause
    - remove_rel_from_restrictinfo
    - is_orclause
    - restriction_is_or_clause
    linkageType: ''
    returnType: void
    signature: void remove_rel_from_restrictinfo(RestrictInfo *rinfo, int relid, int
      ojrelid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:747,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 745
    functionDepth: 3
    functionLinenumber: 745
    functionLinenumberEnd: 750
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 95
    functionsReached:
    - remove_rel_from_restrictinfo
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, andargs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:786,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:788,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:788,1
    - Dst: remove_rel_from_phvs
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:790,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:794,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:795,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:799,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:807,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:814,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:816,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:818,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:819,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:821,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:823,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:824,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:825,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:826,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:827,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:832,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:834,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:836,1
    - Dst: ec_clear_derived_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:844,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - root
    - ec
    - relid
    - ojrelid
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 773
    functionDepth: 3
    functionLinenumber: 773
    functionLinenumberEnd: 845
    functionName: remove_rel_from_eclass
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - foreach_delete_current
    - foreach
    - Assert
    - ec_clear_derived_clauses
    - bms_is_member
    - bms_is_empty
    - bms_copy
    - foreach_node
    - remove_rel_from_phvs
    - lfirst
    - remove_rel_from_restrictinfo
    - IsA
    linkageType: ''
    returnType: void
    signature: "void remove_rel_from_eclass(PlannerInfo *root, EquivalenceClass *ec,\n\t\t\t\t\t
      \  int relid, int ojrelid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:862,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:862,1
    - Dst: remove_rel_from_phvs_mutator
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - node
    - relid
    - ojrelid
    argTypes:
    - Node*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 859
    functionDepth: 1
    functionLinenumber: 859
    functionLinenumberEnd: 865
    functionName: remove_rel_from_phvs
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 2
    functionsReached:
    - remove_rel_from_phvs_mutator
    - bms_add_member
    - bms_make_singleton
    linkageType: ''
    returnType: Node
    signature: 'Node *

      remove_rel_from_phvs(Node *node, int relid, int ojrelid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:872,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:878,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:882,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:895,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:896,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:899,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:905,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - node
    - removable
    argTypes:
    - Node*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 867
    functionDepth: 1
    functionLinenumber: 867
    functionLinenumberEnd: 908
    functionName: remove_rel_from_phvs_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_is_empty
    - expression_tree_mutator
    - bms_difference
    - IsA
    linkageType: ''
    returnType: Node
    signature: 'Node *

      remove_rel_from_phvs_mutator(Node *node, Relids removable)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:927,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:929,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:936,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:938,1
    - Dst: remove_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:943,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:947,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:951,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:952,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - joinlist
    - relid
    - nremoved
    argTypes:
    - List*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 957
    functionName: remove_rel_from_joinlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 2
    functionsReached:
    - elog
    - remove_rel_from_joinlist
    - lappend
    - lfirst
    - IsA
    - nodeTag
    linkageType: ''
    returnType: List
    signature: 'List *

      remove_rel_from_joinlist(List *joinlist, int relid, int *nremoved)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:927,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:929,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:936,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:938,1
    - Dst: remove_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:943,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:947,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:951,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:952,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 925
    functionDepth: 2
    functionLinenumber: 925
    functionLinenumberEnd: 954
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 96
    functionsReached:
    - elog
    - remove_rel_from_joinlist
    - lappend
    - lfirst
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void foreach(jl, joinlist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:981,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:983,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:996,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:999,1
    - Dst: rel_supports_distinctness
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1006,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1010,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1011,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1019,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1019,1
    - Dst: innerrel_is_unique
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1027,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1033,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 1035
    functionName: reduce_unique_semijoins
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - rel_supports_distinctness
    - foreach_delete_current
    - foreach
    - generate_join_implied_equalities
    - Assert
    - lfirst
    - find_base_rel
    - list_concat
    - innerrel_is_unique
    - bms_union
    - bms_get_singleton_member
    linkageType: ''
    returnType: void
    signature: void reduce_unique_semijoins(PlannerInfo *root)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1066,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1068,1
    - Dst: query_supports_distinctness
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1079,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1084
    functionName: rel_supports_distinctness
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 2
    functionsReached:
    - query_supports_distinctness
    - lfirst
    - foreach
    linkageType: ''
    returnType: bool
    signature: bool rel_supports_distinctness(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: relation_has_unique_index_for
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1127,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1151,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1163,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1167,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1169,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1176,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1183,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1187,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1191,1
    - Dst: query_is_distinct_for
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1194,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 4
    argNames:
    - root
    - rel
    - clause_list
    - extra_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1109
    functionDepth: 2
    functionLinenumber: 1109
    functionLinenumberEnd: 1198
    functionName: rel_is_distinct_for
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - get_leftop
    - get_rightop
    - query_is_distinct_for
    - castNode
    - lappend
    - palloc
    - IsA
    - relation_has_unique_index_for
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: "bool rel_is_distinct_for(PlannerInfo *root, RelOptInfo *rel, List
      *clause_list,\n\t\t\t\t\tList **extra_clauses)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1151,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1163,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1167,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1169,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1176,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1183,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1187,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1191,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1149
    functionDepth: 2
    functionLinenumber: 1149
    functionLinenumberEnd: 1192
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 98
    functionsReached:
    - get_leftop
    - get_rightop
    - castNode
    - lappend
    - palloc
    - IsA
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, clause_list)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 6
    argCount: 1
    argNames:
    - query
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1212
    functionDepth: 0
    functionLinenumber: 1212
    functionLinenumberEnd: 1229
    functionName: query_supports_distinctness
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool query_supports_distinctness(Query *query)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1273,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1275,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1276,1
    - Dst: distinct_col_search
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1279,1
    - Dst: equality_ops_are_compatible
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1281,1
    - Dst: collations_agree_on_equality
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1282,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1283,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1306,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1308,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1309,1
    - Dst: distinct_col_search
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1312,1
    - Dst: equality_ops_are_compatible
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1314,1
    - Dst: collations_agree_on_equality
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1315,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1316,1
    - Dst: expand_grouping_sets
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1343,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1345,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1363,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1365,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1372,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1373,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1382,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1383,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1384,1
    - Dst: distinct_col_search
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1386,1
    - Dst: equality_ops_are_compatible
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1388,1
    - Dst: collations_agree_on_equality
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1389,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1390,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 51
    argCount: 2
    argNames:
    - query
    - distinct_cols
    argTypes:
    - Query*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1259
    functionDepth: 2
    functionLinenumber: 1259
    functionLinenumberEnd: 1407
    functionName: query_is_distinct_for
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - foreach
    - collations_agree_on_equality
    - list_length
    - Assert
    - castNode
    - get_sortgroupclause_tle
    - lnext
    - expand_grouping_sets
    - exprCollation
    - distinct_col_search
    - lfirst
    - list_head
    - equality_ops_are_compatible
    linkageType: ''
    returnType: bool
    signature: bool query_is_distinct_for(Query *query, List *distinct_cols)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - colno
    - distinct_cols
    argTypes:
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1417
    functionDepth: 0
    functionLinenumber: 1417
    functionLinenumberEnd: 1427
    functionName: distinct_col_search
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: DistinctColInfo
    signature: 'DistinctColInfo *

      distinct_col_search(int colno, List *distinct_cols)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1420
    functionDepth: 0
    functionLinenumber: 1420
    functionLinenumberEnd: 1424
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(DistinctColInfo, dcinfo, distinct_cols)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: innerrel_is_unique_ext
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - root
    - joinrelids
    - outerrelids
    - innerrel
    - jointype
    - restrictlist
    - force_cache
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    - RelOptInfo*
    - JoinType
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1466
      start: 1455
    functionDepth: 1
    functionLinenumber: 1455
    functionLinenumberEnd: 1466
    functionName: innerrel_is_unique
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - innerrel_is_unique_ext
    linkageType: ''
    returnType: bool
    signature: "bool innerrel_is_unique(PlannerInfo *root,\n\t\t\t\t   Relids joinrelids,\n\t\t\t\t
      \  Relids outerrelids,\n\t\t\t\t   RelOptInfo *innerrel,\n\t\t\t\t   JoinType
      jointype,\n\t\t\t\t   List *restrictlist,\n\t\t\t\t   bool force_cache)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: rel_supports_distinctness
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1501,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1516,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1518,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1520,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1521,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1534,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1536,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1538,1
    - Dst: is_innerrel_unique_for
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1543,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1557,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1558,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1559,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1562,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1564,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1588,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1590,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1591,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1592,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 8
    argNames:
    - root
    - joinrelids
    - outerrelids
    - innerrel
    - jointype
    - restrictlist
    - force_cache
    - extra_clauses
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    - RelOptInfo*
    - JoinType
    - List*
    - bool
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1477
    functionDepth: 2
    functionLinenumber: 1477
    functionLinenumberEnd: 1597
    functionName: innerrel_is_unique_ext
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - rel_supports_distinctness
    - foreach
    - lappend
    - makeNode
    - bms_copy
    - MemoryContextSwitchTo
    - lfirst
    - is_innerrel_unique_for
    - bms_equal
    - bms_is_subset
    linkageType: ''
    returnType: bool
    signature: "bool innerrel_is_unique_ext(PlannerInfo *root,\n\t\t\t\t\t   Relids
      joinrelids,\n\t\t\t\t\t   Relids outerrelids,\n\t\t\t\t\t   RelOptInfo *innerrel,\n\t\t\t\t\t
      \  JoinType jointype,\n\t\t\t\t\t   List *restrictlist,\n\t\t\t\t\t   bool force_cache,\n\t\t\t\t\t
      \  List **extra_clauses)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1625,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1631,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1632,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1644,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1649,1
    - Dst: rel_is_distinct_for
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1653,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 7
    argNames:
    - root
    - joinrelids
    - outerrelids
    - innerrel
    - jointype
    - restrictlist
    - extra_clauses
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    - RelOptInfo*
    - JoinType
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1604
    functionDepth: 3
    functionLinenumber: 1604
    functionLinenumberEnd: 1654
    functionName: is_innerrel_unique_for
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - IS_OUTER_JOIN
    - RINFO_IS_PUSHED_DOWN
    - rel_is_distinct_for
    - lappend
    - lfirst
    - clause_sides_match_join
    linkageType: ''
    returnType: bool
    signature: "bool is_innerrel_unique_for(PlannerInfo *root,\n\t\t\t\t\t   Relids
      joinrelids,\n\t\t\t\t\t   Relids outerrelids,\n\t\t\t\t\t   RelOptInfo *innerrel,\n\t\t\t\t\t
      \  JoinType jointype,\n\t\t\t\t\t   List *restrictlist,\n\t\t\t\t\t   List **extra_clauses)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1625,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1631,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1632,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1644,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1649,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1650
      start: 1623
    functionDepth: 2
    functionLinenumber: 1623
    functionLinenumberEnd: 1650
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 100
    functionsReached:
    - IS_OUTER_JOIN
    - RINFO_IS_PUSHED_DOWN
    - lappend
    - lfirst
    - clause_sides_match_join
    linkageType: ''
    returnType: void
    signature: void foreach(lc, restrictlist)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1689,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1691,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1695,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1697,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1701,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1702,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1705,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1710,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1713,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1721,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1724,1
    - Dst: ec_clear_derived_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1727,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1730,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1734,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1736,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1740,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1750,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1753,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1761,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1764,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1766,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 3
    argNames:
    - ec
    - from
    - to
    argTypes:
    - EquivalenceClass*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1678
    functionDepth: 1
    functionLinenumber: 1678
    functionLinenumberEnd: 1767
    functionName: update_eclasses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - list_free
    - Assert
    - ec_clear_derived_clauses
    - bms_is_member
    - lappend
    - foreach_node
    - ChangeVarNodesExtended
    - equal
    - adjust_relid_set
    linkageType: ''
    returnType: void
    signature: void update_eclasses(EquivalenceClass *ec, int from, int to)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1710,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1713,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1708
    functionDepth: 1
    functionLinenumber: 1708
    functionLinenumberEnd: 1718
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 5
    functionsReached:
    - equal
    linkageType: ''
    returnType: void
    signature: void foreach_node(EquivalenceMember, other, new_members)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1750,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1753,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1748
    functionDepth: 1
    functionLinenumber: 1748
    functionLinenumberEnd: 1758
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 5
    functionsReached:
    - equal
    linkageType: ''
    returnType: void
    signature: void foreach_node(RestrictInfo, other, new_sources)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - RestrictInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1789
      start: 1778
    functionDepth: 1
    functionLinenumber: 1778
    functionLinenumberEnd: 1789
    functionName: restrict_infos_logically_equal
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - equal
    linkageType: ''
    returnType: bool
    signature: bool restrict_infos_logically_equal(RestrictInfo *a, RestrictInfo *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1814,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1814,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1816,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1818,1
    - Dst: restrict_infos_logically_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1825,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1832,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 4
    argNames:
    - root
    - rinfo_candidates
    - keep_rinfo_list
    - removed_relid
    argTypes:
    - PlannerInfo*
    - List*
    - List**
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1834
      start: 1804
    functionDepth: 2
    functionLinenumber: 1804
    functionLinenumberEnd: 1834
    functionName: add_non_redundant_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_is_member
    - foreach_node
    - distribute_restrictinfo_to_rels
    - bms_equal
    - restrict_infos_logically_equal
    linkageType: ''
    returnType: void
    signature: "void add_non_redundant_clauses(PlannerInfo *root,\n\t\t\t\t\t\t  List
      *rinfo_candidates,\n\t\t\t\t\t\t  List **keep_rinfo_list,\n\t\t\t\t\t\t  Index
      removed_relid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1814,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1814,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1816,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1818,1
    - Dst: restrict_infos_logically_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1825,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1832,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1810
    functionDepth: 2
    functionLinenumber: 1810
    functionLinenumberEnd: 1833
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 7
    functionsReached:
    - Assert
    - bms_is_member
    - foreach_node
    - distribute_restrictinfo_to_rels
    - bms_equal
    - restrict_infos_logically_equal
    linkageType: ''
    returnType: void
    signature: void foreach_node(RestrictInfo, rinfo, rinfo_candidates)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1851,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1855,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1862,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1870,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1871,1
    - Dst: ChangeVarNodesWalkExpression
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1875,1
    - Dst: ChangeVarNodesWalkExpression
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1876,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1878,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1888,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1889,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1893,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1895,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1902,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1905,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1907,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1910,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1912,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1917,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1918,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1927,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1929,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1940,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - ChangeVarNodes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1848
    functionDepth: 2
    functionLinenumber: 1848
    functionLinenumberEnd: 1946
    functionName: replace_relid_callback
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - get_leftop
    - get_rightop
    - Assert
    - bms_is_member
    - bms_num_members
    - makeNode
    - ChangeVarNodesWalkExpression
    - bms_get_singleton_member
    - equal
    - IsA
    - adjust_relid_set
    - bms_membership
    linkageType: ''
    returnType: bool
    signature: bool replace_relid_callback(Node *node, ChangeVarNodes_context *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1983,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1984,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1992,1
    - Dst: remove_join_clause_from_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1995,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1996,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1999,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2000,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2002,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2011,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2013,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2015,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2018,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2019,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2021,1
    - Dst: add_non_redundant_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2027,1
    - Dst: add_non_redundant_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2029,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2032,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2033,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2042,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2044,1
    - Dst: update_eclasses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2046,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2047,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2054,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2056,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2058,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2060,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2061,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2068,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2070,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2086,1
    - Dst: list_delete_ptr
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2088,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2093,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2103,1
    - Dst: remove_rel_from_query
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2107,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2110,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2121,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2121,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2122,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2122,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2138,1
    - Dst: rebuild_placeholder_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2145,1
    - Dst: rebuild_joinclause_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2146,1
    - Dst: rebuild_eclass_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2147,1
    - Dst: rebuild_lateral_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2148,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 56
    argCount: 6
    argNames:
    - root
    - kmark
    - rmark
    - toKeep
    - toRemove
    - restrictlist
    argTypes:
    - PlannerInfo*
    - PlanRowMark*
    - PlanRowMark*
    - RelOptInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2149
      start: 1972
    functionDepth: 3
    functionLinenumber: 1972
    functionLinenumberEnd: 2149
    functionName: remove_self_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - list_concat
    - bms_add_members
    - update_eclasses
    - bms_add_member
    - foreach
    - Assert
    - pfree
    - bms_is_member
    - rebuild_placeholder_attr_needed
    - foreach_node
    - rebuild_lateral_attr_needed
    - ChangeVarNodesExtended
    - list_copy
    - bms_next_member
    - add_non_redundant_clauses
    - adjust_relid_set
    - remove_rel_from_query
    - list_free
    - list_member
    - lappend
    - list_delete_ptr
    - lfirst
    - rebuild_joinclause_attr_needed
    - remove_join_clause_from_rels
    - bms_membership
    - list_nth
    - rebuild_eclass_attr_needed
    linkageType: ''
    returnType: void
    signature: "void remove_self_join_rel(PlannerInfo *root, PlanRowMark *kmark, PlanRowMark
      *rmark,\n\t\t\t\t\t RelOptInfo *toKeep, RelOptInfo *toRemove,\n\t\t\t\t\t List
      *restrictlist)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: remove_join_clause_from_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1995,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1996,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1999,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2000,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2002,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1993
    functionDepth: 1
    functionLinenumber: 1993
    functionLinenumberEnd: 2003
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 8
    functionsReached:
    - lappend
    - remove_join_clause_from_rels
    - ChangeVarNodesExtended
    - bms_membership
    linkageType: ''
    returnType: void
    signature: void foreach_node(RestrictInfo, rinfo, joininfos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2175,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2176,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2177,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2179,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2185,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2185,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2187,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2191,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2192,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2192,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2194,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2196,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2204,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2205,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2206,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2209,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2210,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2212,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 6
    argNames:
    - root
    - joinquals
    - selfjoinquals
    - otherjoinquals
    - from
    - to
    argTypes:
    - PlannerInfo*
    - List*
    - List**
    - List**
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2217
      start: 2160
    functionDepth: 2
    functionLinenumber: 2160
    functionLinenumberEnd: 2217
    functionName: split_selfjoin_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - equal
    - copyObject
    - get_leftop
    - get_rightop
    - bms_num_members
    - lappend
    - ChangeVarNodesExtended
    - list_length
    - bms_singleton_member
    - IsA
    - bms_membership
    linkageType: ''
    returnType: void
    signature: "void split_selfjoin_quals(PlannerInfo *root, List *joinquals, List
      **selfjoinquals,\n\t\t\t\t\t List **otherjoinquals, int from, int to)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2175,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2176,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2177,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2179,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2185,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2185,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2187,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2191,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2192,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2192,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2194,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2196,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2204,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2205,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2206,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2209,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2210,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2212,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2167
    functionDepth: 2
    functionLinenumber: 2167
    functionLinenumberEnd: 2213
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 8
    functionsReached:
    - equal
    - copyObject
    - get_leftop
    - get_rightop
    - bms_num_members
    - lappend
    - ChangeVarNodesExtended
    - list_length
    - bms_singleton_member
    - IsA
    - bms_membership
    linkageType: ''
    returnType: void
    signature: void foreach_node(RestrictInfo, rinfo, joinquals)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2236,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2239,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2239,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2240,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2242,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2243,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2246,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2246,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2247,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2248,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2248,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2249,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2264,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2264,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2266,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2267,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2267,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2268,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2269,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2269,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2271,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2271,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - root
    - outer
    - uclauses
    - relid
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2283
      start: 2225
    functionDepth: 2
    functionLinenumber: 2225
    functionLinenumberEnd: 2283
    functionName: match_unique_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - copyObject
    - get_rightop
    - get_leftop
    - Assert
    - foreach_node
    - is_opclause
    - ChangeVarNodesExtended
    - equal
    - bms_is_empty
    linkageType: ''
    returnType: bool
    signature: "bool match_unique_clauses(PlannerInfo *root, RelOptInfo *outer, List
      *uclauses,\n\t\t\t\t\t Index relid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2236,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2239,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2239,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2240,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2242,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2243,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2246,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2246,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2247,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2248,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2248,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2249,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2264,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2264,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2266,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2267,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2267,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2268,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2269,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2269,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2271,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2271,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2280
      start: 2229
    functionDepth: 2
    functionLinenumber: 2229
    functionLinenumberEnd: 2280
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 10
    functionsReached:
    - copyObject
    - get_rightop
    - get_leftop
    - Assert
    - foreach_node
    - is_opclause
    - ChangeVarNodesExtended
    - equal
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: void foreach_node(RestrictInfo, rinfo, uclauses)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2298,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2304,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2318,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2326,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2328,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2330,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2331,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2332,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2333,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2348,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2350,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2359,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2373,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2374,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2386,1
    - Dst: split_selfjoin_quals
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2397,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2400,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2400,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2401,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2401,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2409,1
    - Dst: innerrel_is_unique_ext
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2418,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2420,1
    - Dst: match_unique_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2435,1
    - Dst: remove_self_join_rel
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2442,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2444,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 45
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2452
      start: 2291
    functionDepth: 4
    functionLinenumber: 2291
    functionLinenumberEnd: 2452
    functionName: remove_self_joins_one_group
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - foreach
    - list_length
    - generate_join_implied_equalities
    - Assert
    - remove_self_join_rel
    - bms_is_member
    - split_selfjoin_quals
    - lfirst
    - list_concat
    - bms_next_member
    - bms_add_member
    - match_unique_clauses
    - innerrel_is_unique_ext
    linkageType: ''
    returnType: Relids
    signature: Relids remove_self_joins_one_group(PlannerInfo *root, Relids relids)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2471,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2473,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2492,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2492,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2493,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2496,1
    - Dst: remove_self_joins_recurse
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2499,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2503,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2504,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2507,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2517,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2520,1
    - Dst: qsort
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2527,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2552,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2555,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2565,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2565,1
    - Dst: remove_self_joins_one_group
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2566,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2567,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2568,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2569,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2570,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2571,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2572,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2583,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2583,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 3
    argNames:
    - root
    - joinlist
    - toRemove
    argTypes:
    - PlannerInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2586
      start: 2458
    functionDepth: 5
    functionLinenumber: 2458
    functionLinenumberEnd: 2586
    functionName: remove_self_joins_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - bms_free
    - palloc_array
    - bms_add_members
    - bms_add_member
    - nodeTag
    - elog
    - qsort
    - Assert
    - bms_is_member
    - bms_next_member
    - remove_self_joins_one_group
    - IsA
    - bms_num_members
    - lfirst
    - bms_membership
    - bms_del_members
    - remove_self_joins_recurse
    - bms_overlap
    - bms_is_empty
    linkageType: ''
    returnType: Relids
    signature: Relids remove_self_joins_recurse(PlannerInfo *root, List *joinlist,
      Relids toRemove)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2471,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2473,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2492,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2492,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2493,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2496,1
    - Dst: remove_self_joins_recurse
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2499,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2503,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2504,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2505
      start: 2469
    functionDepth: 6
    functionLinenumber: 2469
    functionLinenumberEnd: 2505
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 102
    functionsReached:
    - elog
    - Assert
    - remove_self_joins_recurse
    - bms_is_member
    - lfirst
    - IsA
    - bms_add_member
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void foreach(jl, joinlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2601
      start: 2591
    functionDepth: 0
    functionLinenumber: 2591
    functionLinenumberEnd: 2601
    functionName: self_join_candidates_cmp
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int self_join_candidates_cmp(const void *a, const void *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2645,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2645,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2645,1
    - Dst: remove_self_joins_recurse
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2652,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2654,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2657,1
    - Dst: remove_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2661,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2663,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - root
    - joinlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2638
    functionDepth: 6
    functionLinenumber: 2638
    functionLinenumberEnd: 2668
    functionName: remove_useless_self_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - elog
    - linitial
    - remove_self_joins_recurse
    - remove_rel_from_joinlist
    - unlikely
    - bms_next_member
    - list_length
    - IsA
    linkageType: ''
    returnType: List
    signature: 'List *

      remove_useless_self_joins(PlannerInfo *root, List *joinlist)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:350,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:357,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:366,1
    - Dst: apply_tlist_labeling
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:367,1
    - Dst: SS_attach_initplans
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:376,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 389
    functionName: create_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 3
    functionsReached:
    - elog
    - Assert
    - apply_tlist_labeling
    - create_plan_recurse
    - SS_attach_initplans
    - IsA
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_plan(PlannerInfo *root, Path *best_path)'
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:401,1
    - Dst: create_scan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:421,1
    - Dst: create_join_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:426,1
    - Dst: create_append_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:430,1
    - Dst: create_merge_append_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:435,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:440,1
    - Dst: create_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:442,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:446,1
    - Dst: create_minmaxagg_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:448,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:451,1
    - Dst: create_group_result_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:459,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:459,1
    - Dst: create_scan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:460,1
    - Dst: create_project_set_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:464,1
    - Dst: create_material_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:468,1
    - Dst: create_memoize_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:473,1
    - Dst: create_unique_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:478,1
    - Dst: create_gather_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:483,1
    - Dst: create_sort_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:487,1
    - Dst: create_incrementalsort_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:492,1
    - Dst: create_group_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:497,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:501,1
    - Dst: create_groupingsets_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:502,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:506,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:506,1
    - Dst: create_agg_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:507,1
    - Dst: create_windowagg_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:512,1
    - Dst: create_setop_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:516,1
    - Dst: create_recursiveunion_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:521,1
    - Dst: create_lockrows_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:525,1
    - Dst: create_modifytable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:530,1
    - Dst: create_limit_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:534,1
    - Dst: create_gather_merge_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:539,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:543,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 104
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - Path*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 550
    functionName: create_plan_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - create_windowagg_plan
    - create_limit_plan
    - check_stack_depth
    - create_material_plan
    - create_group_result_plan
    - create_groupingsets_plan
    - elog
    - create_append_plan
    - create_join_plan
    - Assert
    - create_modifytable_plan
    - create_memoize_plan
    - create_sort_plan
    - create_lockrows_plan
    - create_group_plan
    - create_gather_merge_plan
    - create_minmaxagg_plan
    - create_setop_plan
    - create_agg_plan
    - create_scan_plan
    - create_recursiveunion_plan
    - create_unique_plan
    - create_projection_plan
    - create_gather_plan
    - create_merge_append_plan
    - create_incrementalsort_plan
    - IsA
    - create_project_set_plan
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_plan_recurse(PlannerInfo *root, Path *best_path, int flags)'
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:581,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:595,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:612,1
    - Dst: get_gating_quals
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:619,1
    - Dst: get_gating_quals
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:622,1
    - Dst: use_physical_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:640,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:645,1
    - Dst: apply_pathtarget_labeling_to_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:652,1
    - Dst: build_physical_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:656,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:660,1
    - Dst: apply_pathtarget_labeling_to_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:666,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:672,1
    - Dst: create_seqscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:678,1
    - Dst: create_samplescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:685,1
    - Dst: create_indexscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:692,1
    - Dst: create_indexscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:700,1
    - Dst: create_bitmap_scan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:708,1
    - Dst: create_tidscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:715,1
    - Dst: create_tidrangescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:722,1
    - Dst: create_subqueryscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:729,1
    - Dst: create_functionscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:736,1
    - Dst: create_tablefuncscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:743,1
    - Dst: create_valuesscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:750,1
    - Dst: create_ctescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:757,1
    - Dst: create_namedtuplestorescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:764,1
    - Dst: create_resultscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:771,1
    - Dst: create_worktablescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:778,1
    - Dst: create_foreignscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:785,1
    - Dst: create_customscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:792,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:799,1
    - Dst: create_gating_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:811,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 102
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - Path*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 814
    functionName: create_scan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - copyObject
    - create_seqscan_plan
    - create_foreignscan_plan
    - create_ctescan_plan
    - get_gating_quals
    - elog
    - IS_JOIN_REL
    - Assert
    - list_concat_copy
    - create_tablefuncscan_plan
    - create_samplescan_plan
    - create_tidrangescan_plan
    - create_indexscan_plan
    - create_bitmap_scan_plan
    - create_customscan_plan
    - create_functionscan_plan
    - build_physical_tlist
    - create_tidscan_plan
    - create_valuesscan_plan
    - apply_pathtarget_labeling_to_tlist
    - create_subqueryscan_plan
    - create_gating_plan
    - use_physical_tlist
    - create_namedtuplestorescan_plan
    - castNode
    - create_worktablescan_plan
    - create_resultscan_plan
    - build_path_tlist
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_scan_plan(PlannerInfo *root, Path *best_path, int flags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:830,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:832,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:842,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:844,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - root
    - path
    argTypes:
    - PlannerInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 822
    functionDepth: 1
    functionLinenumber: 822
    functionLinenumberEnd: 855
    functionName: build_path_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - foreach
    - makeTargetEntry
    - lappend
    - replace_nestloop_params
    - lfirst
    linkageType: ''
    returnType: List
    signature: 'List *

      build_path_tlist(PlannerInfo *root, Path *path)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:901,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:909,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:920,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:928,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:930,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:932,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:933,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:967,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:969,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:973,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:978,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:980,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 41
    argCount: 3
    argNames:
    - root
    - path
    - flags
    argTypes:
    - PlannerInfo*
    - Path*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 862
    functionDepth: 1
    functionLinenumber: 862
    functionLinenumberEnd: 990
    functionName: use_physical_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - bms_nonempty_difference
    - foreach
    - bms_is_empty
    - bms_is_member
    - lfirst
    - IsA
    - bms_is_subset
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: bool use_physical_tlist(PlannerInfo *root, Path *path, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1007,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1010,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - root
    - quals
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1011
    functionName: get_gating_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - extract_actual_clauses
    - order_qual_clauses
    linkageType: ''
    returnType: List
    signature: 'List *

      get_gating_quals(PlannerInfo *root, List *quals)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1025,1
    - Dst: make_gating_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1032,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1032,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1044,1
    - Dst: copy_plan_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1065,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - root
    - path
    - plan
    - gating_quals
    argTypes:
    - PlannerInfo*
    - Path*
    - Plan*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1019
    functionDepth: 2
    functionLinenumber: 1019
    functionLinenumberEnd: 1071
    functionName: create_gating_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - make_gating_result
    - copy_plan_costsize
    - IsA
    - build_path_tlist
    linkageType: ''
    returnType: Plan
    signature: "Plan *\ncreate_gating_plan(PlannerInfo *root, Path *path, Plan *plan,\n\t\t\t\t
      \  List *gating_quals)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: create_mergejoin_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1087,1
    - Dst: create_hashjoin_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1091,1
    - Dst: create_nestloop_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1095,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1099,1
    - Dst: get_gating_quals
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1110,1
    - Dst: create_gating_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1112,1
    - Dst: get_loc_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1122,1
    - Dst: set_qpqual
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1123,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1124,1
    - Dst: get_qpqual
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1124,1
    - Dst: get_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1125,1
    - Dst: get_loc_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1125,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - JoinPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1078
    functionDepth: 3
    functionLinenumber: 1078
    functionLinenumberEnd: 1129
    functionName: create_join_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - elog
    - create_gating_plan
    - get_loc_restrictinfo
    - get_actual_clauses
    - create_hashjoin_plan
    - set_qpqual
    - list_concat
    - get_qpqual
    - create_mergejoin_plan
    - create_nestloop_plan
    - get_gating_quals
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_join_plan(PlannerInfo *root, JoinPath *best_path)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1140,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1150,1
    - Dst: trivial_subqueryscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1157,1
    - Dst: mark_async_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1158,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1171,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1174,1
    - Dst: FdwRoutine*::IsForeignPathAsyncCapable
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1176,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1186,1
    - Dst: mark_async_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1193,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - plan
    - path
    argTypes:
    - Plan*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1137
    functionDepth: 2
    functionLinenumber: 1137
    functionLinenumberEnd: 1204
    functionName: mark_async_capable_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - mark_async_capable_plan
    - Assert
    - FdwRoutine*::IsForeignPathAsyncCapable
    - IsA
    - nodeTag
    - trivial_subqueryscan
    linkageType: ''
    returnType: bool
    signature: bool mark_async_capable_plan(Plan *plan, Path *path)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1217,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1218,1
    - Dst: make_one_row_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1246,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1247,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1247,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1251,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1267,1
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1283,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1292,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1298,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1301,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1303,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1307,1
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1344,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1345,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1347,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1348,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1348,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1350,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1350,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1352,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1352,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1356,1
    - Dst: make_incrementalsort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1368,1
    - Dst: label_incrementalsort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1372,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1379,1
    - Dst: label_sort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1383,1
    - Dst: mark_async_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1392,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1394,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1398,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1413,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1419,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1420,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1423,1
    - Dst: make_partition_pruneinfo
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1427,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1436,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1445,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1446,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 65
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - AppendPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1451
      start: 1213
    functionDepth: 3
    functionLinenumber: 1213
    functionLinenumberEnd: 1451
    functionName: create_append_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_sort
    - label_sort_with_costsize
    - replace_nestloop_params
    - list_concat
    - make_incrementalsort
    - elog
    - foreach
    - Assert
    - extract_actual_clauses
    - makeBoolConst
    - pathkeys_count_contained_in
    - list_length
    - memcmp
    - mark_async_capable_plan
    - make_one_row_result
    - copy_generic_path_info
    - lappend
    - prepare_sort_from_pathkeys
    - lfirst
    - list_make1
    - list_copy_head
    - makeNode
    - create_plan_recurse
    - make_partition_pruneinfo
    - label_incrementalsort_with_costsize
    - inject_projection_plan
    - build_path_tlist
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_append_plan(PlannerInfo *root, AppendPath *best_path, int flags)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1464,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1466,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1467,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1480,1
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1494,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1503,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1510,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1512,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1523,1
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1542,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1543,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1546,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1548,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1550,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1550,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1554,1
    - Dst: make_incrementalsort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1566,1
    - Dst: label_incrementalsort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1570,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1577,1
    - Dst: label_sort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1581,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1588,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1606,1
    - Dst: make_partition_pruneinfo
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1609,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1623,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1624,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - MergeAppendPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1460
    functionDepth: 2
    functionLinenumber: 1460
    functionLinenumberEnd: 1628
    functionName: create_merge_append_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_sort
    - label_sort_with_costsize
    - make_incrementalsort
    - elog
    - foreach
    - Assert
    - extract_actual_clauses
    - pathkeys_count_contained_in
    - list_length
    - memcmp
    - copy_generic_path_info
    - lappend
    - prepare_sort_from_pathkeys
    - lfirst
    - list_copy_head
    - makeNode
    - create_plan_recurse
    - make_partition_pruneinfo
    - label_incrementalsort_with_costsize
    - inject_projection_plan
    - build_path_tlist
    linkageType: ''
    returnType: Plan
    signature: "Plan *\ncreate_merge_append_plan(PlannerInfo *root, MergeAppendPath
      *best_path,\n\t\t\t\t\t\t int flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1644,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1647,1
    - Dst: make_one_row_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1649,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GroupResultPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1637
    functionDepth: 2
    functionLinenumber: 1637
    functionLinenumberEnd: 1654
    functionName: create_group_result_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_one_row_result
    - copy_generic_path_info
    - build_path_tlist
    - order_qual_clauses
    linkageType: ''
    returnType: Result
    signature: 'Result *

      create_group_result_plan(PlannerInfo *root, GroupResultPath *best_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1670,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1672,1
    - Dst: make_project_set
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1674,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - ProjectSetPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1662
    functionDepth: 2
    functionLinenumber: 1662
    functionLinenumberEnd: 1679
    functionName: create_project_set_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_project_set
    - copy_generic_path_info
    - create_plan_recurse
    - build_path_tlist
    linkageType: ''
    returnType: ProjectSet
    signature: 'ProjectSet *

      create_project_set_plan(PlannerInfo *root, ProjectSetPath *best_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1699,1
    - Dst: make_material
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1702,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - MaterialPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1707
      start: 1688
    functionDepth: 2
    functionLinenumber: 1688
    functionLinenumberEnd: 1707
    functionName: create_material_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_material
    - copy_generic_path_info
    - create_plan_recurse
    linkageType: ''
    returnType: Material
    signature: 'Material *

      create_material_plan(PlannerInfo *root, MaterialPath *best_path, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1730,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1733,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1736,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1737,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1738,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1739,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1742,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1744,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1745,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1748,1
    - Dst: pull_paramids
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1752,1
    - Dst: make_memoize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1754,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - MemoizePath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1716
    functionDepth: 2
    functionLinenumber: 1716
    functionLinenumberEnd: 1762
    functionName: create_memoize_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - pull_paramids
    - copy_generic_path_info
    - create_plan_recurse
    - exprCollation
    - replace_nestloop_params
    - lfirst
    - make_memoize
    - palloc
    - list_length
    - lfirst_oid
    - forboth
    linkageType: ''
    returnType: Memoize
    signature: 'Memoize *

      create_memoize_plan(PlannerInfo *root, MemoizePath *best_path, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1783,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1785,1
    - Dst: make_gather
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1787,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1790,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GatherPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1800
      start: 1770
    functionDepth: 2
    functionLinenumber: 1770
    functionLinenumberEnd: 1800
    functionName: create_gather_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - copy_generic_path_info
    - create_plan_recurse
    - assign_special_exec_param
    - make_gather
    - build_path_tlist
    linkageType: ''
    returnType: Gather
    signature: 'Gather *

      create_gather_plan(PlannerInfo *root, GatherPath *best_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1814,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1817,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1820,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1823,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1826,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1829,1
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1832,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1846,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GatherMergePath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1808
    functionDepth: 2
    functionLinenumber: 1808
    functionLinenumberEnd: 1855
    functionName: create_gather_merge_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - copy_generic_path_info
    - makeNode
    - create_plan_recurse
    - prepare_sort_from_pathkeys
    - pathkeys_contained_in
    - assign_special_exec_param
    - build_path_tlist
    linkageType: ''
    returnType: GatherMerge
    signature: 'GatherMerge *

      create_gather_merge_plan(PlannerInfo *root, GatherMergePath *best_path)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: use_physical_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1885,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1892,1
    - Dst: apply_pathtarget_labeling_to_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1895,1
    - Dst: is_projection_capable_path
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1898,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1906,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1908,1
    - Dst: is_projection_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1908,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1909,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1917,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1918,1
    - Dst: tlist_same_exprs
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1919,1
    - Dst: make_gating_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1946,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1948,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - ProjectionPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1864
    functionDepth: 2
    functionLinenumber: 1864
    functionLinenumberEnd: 1952
    functionName: create_projection_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - use_physical_tlist
    - tlist_same_exprs
    - Assert
    - is_projection_capable_plan
    - is_projection_capable_path
    - make_gating_result
    - copy_generic_path_info
    - create_plan_recurse
    - apply_pathtarget_labeling_to_tlist
    - build_path_tlist
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_projection_plan(PlannerInfo *root, ProjectionPath *best_path, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_gating_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1970,1
    - Dst: copy_plan_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - subplan
    - tlist
    - parallel_safe
    argTypes:
    - Plan*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1965
    functionDepth: 1
    functionLinenumber: 1965
    functionLinenumberEnd: 1983
    functionName: inject_projection_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - make_gating_result
    - copy_plan_costsize
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      inject_projection_plan(Plan *subplan, List *tlist, bool parallel_safe)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_projection_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2005,1
    - Dst: tlist_same_exprs
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2006,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2007,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - subplan
    - tlist
    - tlist_parallel_safe
    argTypes:
    - Plan*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 1997
    functionDepth: 2
    functionLinenumber: 1997
    functionLinenumberEnd: 2017
    functionName: change_plan_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 0
    functionsReached:
    - inject_projection_plan
    - is_projection_capable_plan
    - tlist_same_exprs
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      change_plan_targetlist(Plan *subplan, List *tlist, bool tlist_parallel_safe)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2036,1
    - Dst: make_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2045,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2046,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2049,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - SortPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2025
    functionDepth: 2
    functionLinenumber: 2025
    functionLinenumberEnd: 2052
    functionName: create_sort_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - copy_generic_path_info
    - create_plan_recurse
    - make_sort_from_pathkeys
    - IS_OTHER_REL
    linkageType: ''
    returnType: Sort
    signature: 'Sort *

      create_sort_plan(PlannerInfo *root, SortPath *best_path, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2067,1
    - Dst: make_incrementalsort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2069,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2071,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - IncrementalSortPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 2059
    functionDepth: 2
    functionLinenumber: 2059
    functionLinenumberEnd: 2078
    functionName: create_incrementalsort_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_incrementalsort_from_pathkeys
    - copy_generic_path_info
    - create_plan_recurse
    - IS_OTHER_REL
    linkageType: ''
    returnType: IncrementalSort
    signature: "IncrementalSort *\ncreate_incrementalsort_plan(PlannerInfo *root,
      IncrementalSortPath *best_path,\n\t\t\t\t\t\t\tint flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2098,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2100,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2102,1
    - Dst: make_group
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2104,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2106,1
    - Dst: extract_grouping_cols
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2107,1
    - Dst: extract_grouping_ops
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2109,1
    - Dst: extract_grouping_collations
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2110,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GroupPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2086
    functionDepth: 2
    functionLinenumber: 2086
    functionLinenumberEnd: 2117
    functionName: create_group_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - extract_grouping_collations
    - extract_grouping_cols
    - list_length
    - extract_grouping_ops
    - copy_generic_path_info
    - create_plan_recurse
    - order_qual_clauses
    - make_group
    - build_path_tlist
    linkageType: ''
    returnType: Group
    signature: 'Group *

      create_group_plan(PlannerInfo *root, GroupPath *best_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2135,1
    - Dst: make_unique_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2144,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2147,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - UniquePath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2153
      start: 2125
    functionDepth: 2
    functionLinenumber: 2125
    functionLinenumberEnd: 2153
    functionName: create_unique_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - copy_generic_path_info
    - make_unique_from_pathkeys
    - create_plan_recurse
    - IS_OTHER_REL
    linkageType: ''
    returnType: Unique
    signature: 'Unique *

      create_unique_plan(PlannerInfo *root, UniquePath *best_path, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2173,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2175,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2177,1
    - Dst: make_agg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2179,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2182,1
    - Dst: extract_grouping_cols
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2183,1
    - Dst: extract_grouping_ops
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2185,1
    - Dst: extract_grouping_collations
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2186,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - AggPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2161
    functionDepth: 2
    functionLinenumber: 2161
    functionLinenumberEnd: 2197
    functionName: create_agg_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - extract_grouping_collations
    - extract_grouping_cols
    - make_agg
    - extract_grouping_ops
    - copy_generic_path_info
    - create_plan_recurse
    - order_qual_clauses
    - list_length
    - build_path_tlist
    linkageType: ''
    returnType: Agg
    signature: 'Agg *

      create_agg_plan(PlannerInfo *root, AggPath *best_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2215,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2217,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2217,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - groupClause
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2228
      start: 2207
    functionDepth: 1
    functionLinenumber: 2207
    functionLinenumberEnd: 2228
    functionName: remap_groupColIdx
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 0
    functionsReached:
    - Assert
    - lfirst
    - palloc0_array
    - list_length
    linkageType: ''
    returnType: AttrNumber
    signature: 'AttrNumber *

      remap_groupColIdx(PlannerInfo *root, List *groupClause)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2220
    functionDepth: 1
    functionLinenumber: 2220
    functionLinenumberEnd: 2225
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 106
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, groupClause)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2258,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2264,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2272,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2274,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2280,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2283,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2285,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2286,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2295,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2305,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2307,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2309,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2311,1
    - Dst: remap_groupColIdx
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2317,1
    - Dst: make_sort_from_groupcols
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2322,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2332,1
    - Dst: make_agg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2337,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2341,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2341,1
    - Dst: extract_grouping_ops
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2343,1
    - Dst: extract_grouping_collations
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2344,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2360,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2368,1
    - Dst: remap_groupColIdx
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2372,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2374,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2374,1
    - Dst: make_agg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2376,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2376,1
    - Dst: extract_grouping_ops
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2382,1
    - Dst: extract_grouping_collations
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2383,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2391,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GroupingSetsPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2395
      start: 2245
    functionDepth: 2
    functionLinenumber: 2245
    functionLinenumberEnd: 2395
    functionName: create_groupingsets_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - extract_grouping_collations
    - foreach
    - make_agg
    - Assert
    - linitial
    - for_each_from
    - palloc0
    - get_sortgroupclause_tle
    - create_plan_recurse
    - make_sort_from_groupcols
    - extract_grouping_ops
    - lappend
    - copy_generic_path_info
    - lfirst
    - remap_groupColIdx
    - list_length
    - build_path_tlist
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_groupingsets_plan(PlannerInfo *root, GroupingSetsPath *best_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2411,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2413,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2424,1
    - Dst: make_limit
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2426,1
    - Dst: SS_make_initplan_from_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2442,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2446,1
    - Dst: make_one_row_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2448,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - MinMaxAggPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2464
      start: 2403
    functionDepth: 3
    functionLinenumber: 2403
    functionLinenumberEnd: 2464
    functionName: create_minmaxagg_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - foreach
    - Assert
    - make_one_row_result
    - copy_generic_path_info
    - make_limit
    - lfirst
    - create_plan
    - SS_make_initplan_from_plan
    - build_path_tlist
    linkageType: ''
    returnType: Result
    signature: 'Result *

      create_minmaxagg_plan(PlannerInfo *root, MinMaxAggPath *best_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2477,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2478,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2497,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2500,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2506,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2507,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2508,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2511,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2513,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2514,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2516,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2516,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2519,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2523,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2524,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2525,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2528,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2530,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2533,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2533,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2536,1
    - Dst: make_windowagg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2541,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - WindowAggPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2472
    functionDepth: 2
    functionLinenumber: 2472
    functionLinenumberEnd: 2559
    functionName: create_windowagg_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_windowagg
    - foreach
    - Assert
    - OidIsValid
    - copy_generic_path_info
    - get_sortgroupclause_tle
    - palloc_array
    - create_plan_recurse
    - exprCollation
    - lfirst
    - list_length
    - build_path_tlist
    linkageType: ''
    returnType: WindowAgg
    signature: 'WindowAgg *

      create_windowagg_plan(PlannerInfo *root, WindowAggPath *best_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2571,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2579,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2581,1
    - Dst: make_setop
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2584,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - SetOpPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2595
      start: 2567
    functionDepth: 2
    functionLinenumber: 2567
    functionLinenumberEnd: 2595
    functionName: create_setop_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - copy_generic_path_info
    - make_setop
    - create_plan_recurse
    - build_path_tlist
    linkageType: ''
    returnType: SetOp
    signature: 'SetOp *

      create_setop_plan(PlannerInfo *root, SetOpPath *best_path, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2612,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2613,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2615,1
    - Dst: make_recursive_union
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2617,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - RecursiveUnionPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2603
    functionDepth: 2
    functionLinenumber: 2603
    functionLinenumberEnd: 2627
    functionName: create_recursiveunion_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_recursive_union
    - copy_generic_path_info
    - create_plan_recurse
    - build_path_tlist
    linkageType: ''
    returnType: RecursiveUnion
    signature: 'RecursiveUnion *

      create_recursiveunion_plan(PlannerInfo *root, RecursiveUnionPath *best_path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2643,1
    - Dst: make_lockrows
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2645,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - LockRowsPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2650
      start: 2635
    functionDepth: 2
    functionLinenumber: 2635
    functionLinenumberEnd: 2650
    functionName: create_lockrows_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - copy_generic_path_info
    - create_plan_recurse
    - make_lockrows
    linkageType: ''
    returnType: LockRows
    signature: "LockRows *\ncreate_lockrows_plan(PlannerInfo *root, LockRowsPath *best_path,\n\t\t\t\t\t
      int flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2666,1
    - Dst: apply_tlist_labeling
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2669,1
    - Dst: make_modifytable
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2671,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - ModifyTablePath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2691
      start: 2658
    functionDepth: 2
    functionLinenumber: 2658
    functionLinenumberEnd: 2691
    functionName: create_modifytable_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - apply_tlist_labeling
    - make_modifytable
    - copy_generic_path_info
    - create_plan_recurse
    linkageType: ''
    returnType: ModifyTable
    signature: 'ModifyTable *

      create_modifytable_plan(PlannerInfo *root, ModifyTablePath *best_path)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2710,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2718,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2719,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2720,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2721,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2724,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2726,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2727,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2731,1
    - Dst: make_limit
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2736,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - LimitPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2699
    functionDepth: 2
    functionLinenumber: 2699
    functionLinenumberEnd: 2745
    functionName: create_limit_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - foreach
    - copy_generic_path_info
    - get_sortgroupclause_tle
    - create_plan_recurse
    - make_limit
    - exprCollation
    - lfirst
    - palloc
    - list_length
    linkageType: ''
    returnType: Limit
    signature: 'Limit *

      create_limit_plan(PlannerInfo *root, LimitPath *best_path, int flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2768,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2769,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2772,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2775,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2781,1
    - Dst: make_seqscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2784,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2788,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2791
      start: 2760
    functionDepth: 1
    functionLinenumber: 2760
    functionLinenumberEnd: 2791
    functionName: create_seqscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - extract_actual_clauses
    - copy_generic_path_info
    - replace_nestloop_params
    - order_qual_clauses
    - make_seqscan
    linkageType: ''
    returnType: SeqScan
    signature: "SeqScan *\ncreate_seqscan_plan(PlannerInfo *root, Path *best_path,\n\t\t\t\t\tList
      *tlist, List *scan_clauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2808,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2809,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2812,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2815,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2818,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2824,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2826,1
    - Dst: make_samplescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2829,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2834,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2837
      start: 2798
    functionDepth: 1
    functionLinenumber: 2798
    functionLinenumberEnd: 2837
    functionName: create_samplescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - Assert
    - extract_actual_clauses
    - copy_generic_path_info
    - replace_nestloop_params
    - order_qual_clauses
    - make_samplescan
    linkageType: ''
    returnType: SampleScan
    signature: "SampleScan *\ncreate_samplescan_plan(PlannerInfo *root, Path *best_path,\n\t\t\t\t\t
      \  List *tlist, List *scan_clauses)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2870,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2871,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2873,1
    - Dst: fix_indexqual_references
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2882,1
    - Dst: fix_indexorderby_references
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2889,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2922,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2926,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2928,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2929,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2929,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2932,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2936,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2939,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2953,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2955,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2957,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2974,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2974,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2974,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2975,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2977,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2978,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2979,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2983,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2987,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2988,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2990,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3003,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3005,1
    - Dst: make_indexonlyscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3014,1
    - Dst: make_indexscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3024,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3035,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 5
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    - indexonly
    argTypes:
    - PlannerInfo*
    - IndexPath*
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3038
      start: 2849
    functionDepth: 1
    functionLinenumber: 2849
    functionLinenumberEnd: 3038
    functionName: create_indexscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - exprType
    - replace_nestloop_params
    - lappend_oid
    - predicate_implied_by
    - fix_indexqual_references
    - elog
    - foreach
    - Assert
    - extract_actual_clauses
    - list_length
    - OidIsValid
    - is_redundant_with_indexclauses
    - lappend
    - get_opfamily_member_for_cmptype
    - copy_generic_path_info
    - fix_indexorderby_references
    - lfirst
    - order_qual_clauses
    - list_make1
    - lfirst_node
    - contain_mutable_functions
    - make_indexscan
    - make_indexonlyscan
    - forboth
    linkageType: ''
    returnType: Scan
    signature: "Scan *\ncreate_indexscan_plan(PlannerInfo *root,\n\t\t\t\t\t  IndexPath
      *best_path,\n\t\t\t\t\t  List *tlist,\n\t\t\t\t\t  List *scan_clauses,\n\t\t\t\t\t
      \ bool indexonly)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2922,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2926,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2928,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2929,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2929,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2932,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2933
      start: 2920
    functionDepth: 1
    functionLinenumber: 2920
    functionLinenumberEnd: 2933
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 111
    functionsReached:
    - is_redundant_with_indexclauses
    - contain_mutable_functions
    - lappend
    - list_make1
    - predicate_implied_by
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, scan_clauses)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3061,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3062,1
    - Dst: create_bitmap_subplan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3065,1
    - Dst: bitmap_subplan_mark_shared
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3070,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3101,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3106,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3108,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3110,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3111,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3111,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3113,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3117,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3120,1
    - Dst: list_difference_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3128,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3138,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3140,1
    - Dst: make_bitmap_heapscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3144,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3150,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - BitmapHeapPath*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3153
      start: 3045
    functionDepth: 1
    functionLinenumber: 3045
    functionLinenumberEnd: 3153
    functionName: create_bitmap_scan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - list_member
    - contain_mutable_functions
    - lappend
    - list_member_ptr
    - extract_actual_clauses
    - list_difference_ptr
    - copy_generic_path_info
    - replace_nestloop_params
    - order_qual_clauses
    - bitmap_subplan_mark_shared
    - make_bitmap_heapscan
    - predicate_implied_by
    - list_make1
    - create_bitmap_subplan
    - lfirst_node
    linkageType: ''
    returnType: BitmapHeapScan
    signature: "BitmapHeapScan *\ncreate_bitmap_scan_plan(PlannerInfo *root,\n\t\t\t\t\t\tBitmapHeapPath
      *best_path,\n\t\t\t\t\t\tList *tlist,\n\t\t\t\t\t\tList *scan_clauses)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3101,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3106,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3108,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3110,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3111,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3111,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3113,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3114
      start: 3099
    functionDepth: 1
    functionLinenumber: 3099
    functionLinenumberEnd: 3114
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 111
    functionsReached:
    - list_member
    - contain_mutable_functions
    - lappend
    - list_member_ptr
    - list_make1
    - predicate_implied_by
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, scan_clauses)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3181,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3197,1
    - Dst: create_bitmap_subplan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3204,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3204,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3207,1
    - Dst: list_concat_unique
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3208,1
    - Dst: list_concat_unique
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3209,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3211,1
    - Dst: make_bitmap_and
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3213,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3217,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3225,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3244,1
    - Dst: create_bitmap_subplan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3251,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3251,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3254,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3258,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3259,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3263,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3264,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3271,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3273,1
    - Dst: make_bitmap_or
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3277,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3281,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3294,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3297,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3297,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3300,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3303,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3303,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3306,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3316,1
    - Dst: create_indexscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3317,1
    - Dst: make_bitmap_indexscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3320,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3328,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3336,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3338,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3341,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3342,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3343,1
    - Dst: get_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3344,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3346,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3349,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3351,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3359,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3359,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3361,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3362,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3371,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3371,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 89
    argCount: 5
    argNames:
    - root
    - bitmapqual
    - qual
    - indexqual
    - indexECs
    argTypes:
    - PlannerInfo*
    - Path*
    - List**
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3376
      start: 3175
    functionDepth: 2
    functionLinenumber: 3175
    functionLinenumberEnd: 3376
    functionName: create_bitmap_subplan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - list_concat_unique
    - list_concat
    - clamp_row_est
    - predicate_implied_by
    - nodeTag
    - elog
    - make_ands_explicit
    - foreach
    - Assert
    - linitial
    - make_bitmap_indexscan
    - create_indexscan_plan
    - list_length
    - create_bitmap_subplan
    - get_actual_clauses
    - lappend
    - make_bitmap_or
    - lfirst
    - list_make1
    - make_bitmap_and
    - make_orclause
    - castNode
    - IsA
    linkageType: ''
    returnType: Plan
    signature: "Plan *\ncreate_bitmap_subplan(PlannerInfo *root, Path *bitmapqual,\n\t\t\t\t\t
      \ List **qual, List **indexqual, List **indexECs)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3392,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3393,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3414,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3421,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3425,1
    - Dst: is_redundant_derived_clause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3427,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3429,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3435,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3438,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3439,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3452,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3453,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3454,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3454,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3460,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3462,1
    - Dst: make_tidscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3465,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3470,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - TidPath*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3473
      start: 3383
    functionDepth: 1
    functionLinenumber: 3383
    functionLinenumberEnd: 3473
    functionName: create_tidscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_difference
    - Assert
    - extract_actual_clauses
    - make_orclause
    - lappend
    - list_member_ptr
    - make_tidscan
    - copy_generic_path_info
    - replace_nestloop_params
    - order_qual_clauses
    - list_length
    - is_redundant_derived_clause
    - list_make1
    - lfirst_node
    linkageType: ''
    returnType: TidScan
    signature: "TidScan *\ncreate_tidscan_plan(PlannerInfo *root, TidPath *best_path,\n\t\t\t\t\tList
      *tlist, List *scan_clauses)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3421,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3425,1
    - Dst: is_redundant_derived_clause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3427,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3429,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3430
      start: 3419
    functionDepth: 1
    functionLinenumber: 3419
    functionLinenumberEnd: 3430
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 112
    functionsReached:
    - is_redundant_derived_clause
    - lappend
    - list_member_ptr
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, scan_clauses)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3489,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3490,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3503,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3507,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3509,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3515,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3518,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3519,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3525,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3527,1
    - Dst: make_tidrangescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3530,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3535,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - TidRangePath*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3538
      start: 3480
    functionDepth: 1
    functionLinenumber: 3480
    functionLinenumberEnd: 3538
    functionName: create_tidrangescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - extract_actual_clauses
    - lappend
    - list_member_ptr
    - copy_generic_path_info
    - replace_nestloop_params
    - make_tidrangescan
    - order_qual_clauses
    - lfirst_node
    linkageType: ''
    returnType: TidRangeScan
    signature: "TidRangeScan *\ncreate_tidrangescan_plan(PlannerInfo *root, TidRangePath
      *best_path,\n\t\t\t\t\t\t List *tlist, List *scan_clauses)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3503,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3507,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3509,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3510
      start: 3501
    functionDepth: 1
    functionLinenumber: 3501
    functionLinenumberEnd: 3510
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 112
    functionsReached:
    - lappend
    - list_member_ptr
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, scan_clauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3555,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3556,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3563,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3566,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3569,1
    - Dst: process_subquery_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3583,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3586,1
    - Dst: make_subqueryscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3589,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - SubqueryScanPath*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3597
      start: 3545
    functionDepth: 2
    functionLinenumber: 3545
    functionLinenumberEnd: 3597
    functionName: create_subqueryscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - extract_actual_clauses
    - process_subquery_nestloop_params
    - copy_generic_path_info
    - replace_nestloop_params
    - make_subqueryscan
    - order_qual_clauses
    - create_plan
    linkageType: ''
    returnType: SubqueryScan
    signature: "SubqueryScan *\ncreate_subqueryscan_plan(PlannerInfo *root, SubqueryScanPath
      *best_path,\n\t\t\t\t\t\t List *tlist, List *scan_clauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3614,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3616,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3620,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3623,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3629,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3631,1
    - Dst: make_functionscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3634,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3640
      start: 3604
    functionDepth: 1
    functionLinenumber: 3604
    functionLinenumberEnd: 3640
    functionName: create_functionscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - Assert
    - extract_actual_clauses
    - copy_generic_path_info
    - replace_nestloop_params
    - make_functionscan
    - order_qual_clauses
    linkageType: ''
    returnType: FunctionScan
    signature: "FunctionScan *\ncreate_functionscan_plan(PlannerInfo *root, Path *best_path,\n\t\t\t\t\t\t
      List *tlist, List *scan_clauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3657,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3658,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3659,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3663,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3666,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3672,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3674,1
    - Dst: make_tablefuncscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3677,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3683
      start: 3647
    functionDepth: 1
    functionLinenumber: 3647
    functionLinenumberEnd: 3683
    functionName: create_tablefuncscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - Assert
    - extract_actual_clauses
    - copy_generic_path_info
    - replace_nestloop_params
    - make_tablefuncscan
    - order_qual_clauses
    linkageType: ''
    returnType: TableFuncScan
    signature: "TableFuncScan *\ncreate_tablefuncscan_plan(PlannerInfo *root, Path
      *best_path,\n\t\t\t\t\t\t  List *tlist, List *scan_clauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3700,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3702,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3706,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3709,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3715,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3718,1
    - Dst: make_valuesscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3721,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3727
      start: 3690
    functionDepth: 1
    functionLinenumber: 3690
    functionLinenumberEnd: 3727
    functionName: create_valuesscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - make_valuesscan
    - Assert
    - extract_actual_clauses
    - copy_generic_path_info
    - replace_nestloop_params
    - order_qual_clauses
    linkageType: ''
    returnType: ValuesScan
    signature: "ValuesScan *\ncreate_valuesscan_plan(PlannerInfo *root, Path *best_path,\n\t\t\t\t\t
      \  List *tlist, List *scan_clauses)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3749,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3750,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3751,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3752,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3763,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3772,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3774,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3776,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3781,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3782,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3783,1
    - Dst: list_nth_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3784,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3786,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3787,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3789,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3794,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3800,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3803,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3806,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3812,1
    - Dst: make_ctescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3815,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3818,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3821
      start: 3734
    functionDepth: 3
    functionLinenumber: 3734
    functionLinenumberEnd: 3821
    functionName: create_ctescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - elog
    - planner_rt_fetch
    - make_ctescan
    - foreach
    - strcmp
    - Assert
    - list_nth_int
    - extract_actual_clauses
    - copy_generic_path_info
    - linitial_int
    - replace_nestloop_params
    - lfirst
    - order_qual_clauses
    - list_length
    linkageType: ''
    returnType: CteScan
    signature: "CteScan *\ncreate_ctescan_plan(PlannerInfo *root, Path *best_path,\n\t\t\t\t\tList
      *tlist, List *scan_clauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3837,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3839,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3842,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3845,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3851,1
    - Dst: make_namedtuplestorescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3854,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3857,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3860
      start: 3829
    functionDepth: 1
    functionLinenumber: 3829
    functionLinenumberEnd: 3860
    functionName: create_namedtuplestorescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - Assert
    - extract_actual_clauses
    - copy_generic_path_info
    - make_namedtuplestorescan
    - replace_nestloop_params
    - order_qual_clauses
    linkageType: ''
    returnType: NamedTuplestoreScan
    signature: "NamedTuplestoreScan *\ncreate_namedtuplestorescan_plan(PlannerInfo
      *root, Path *best_path,\n\t\t\t\t\t\t\t\tList *tlist, List *scan_clauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3876,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3878,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3881,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3884,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3890,1
    - Dst: make_one_row_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3893,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3899
      start: 3868
    functionDepth: 1
    functionLinenumber: 3868
    functionLinenumberEnd: 3899
    functionName: create_resultscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - Assert
    - extract_actual_clauses
    - make_one_row_result
    - copy_generic_path_info
    - replace_nestloop_params
    - order_qual_clauses
    linkageType: ''
    returnType: Result
    signature: "Result *\ncreate_resultscan_plan(PlannerInfo *root, Path *best_path,\n\t\t\t\t\t
      \  List *tlist, List *scan_clauses)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3916,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3919,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3928,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3935,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3938,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3941,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3944,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3950,1
    - Dst: make_worktablescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3953,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3956,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3959
      start: 3906
    functionDepth: 1
    functionLinenumber: 3906
    functionLinenumberEnd: 3959
    functionName: create_worktablescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - elog
    - planner_rt_fetch
    - Assert
    - extract_actual_clauses
    - copy_generic_path_info
    - replace_nestloop_params
    - order_qual_clauses
    - make_worktablescan
    linkageType: ''
    returnType: WorkTableScan
    signature: "WorkTableScan *\ncreate_worktablescan_plan(PlannerInfo *root, Path
      *best_path,\n\t\t\t\t\t\t  List *tlist, List *scan_clauses)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3976,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3980,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3991,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3993,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4001,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignPlan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4010,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4016,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4039,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4061,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4063,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4065,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4090,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4093,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4095,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4097,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4103,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4110,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - ForeignPath*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4114
      start: 3966
    functionDepth: 2
    functionLinenumber: 3966
    functionLinenumberEnd: 4114
    functionName: create_foreignscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - foreach
    - Assert
    - bms_difference
    - copy_generic_path_info
    - bms_is_member
    - RelOptInfo*::fdwroutine::GetForeignPlan
    - create_plan_recurse
    - pull_varattnos
    - bms_free
    - replace_nestloop_params
    - lfirst
    - order_qual_clauses
    linkageType: ''
    returnType: ForeignScan
    signature: "ForeignScan *\ncreate_foreignscan_plan(PlannerInfo *root, ForeignPath
      *best_path,\n\t\t\t\t\t\tList *tlist, List *scan_clauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4131,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4133,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4133,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4136,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4143,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4149,1
    - Dst: CustomPath*::methods::PlanCustomPath
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4150,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4161,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4177,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - root
    - best_path
    - tlist
    - scan_clauses
    argTypes:
    - PlannerInfo*
    - CustomPath*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4183
      start: 4121
    functionDepth: 2
    functionLinenumber: 4121
    functionLinenumberEnd: 4183
    functionName: create_customscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - foreach
    - castNode
    - lappend
    - copy_generic_path_info
    - create_plan_recurse
    - CustomPath*::methods::PlanCustomPath
    - replace_nestloop_params
    - lfirst
    - order_qual_clauses
    linkageType: ''
    returnType: CustomScan
    signature: "CustomScan *\ncreate_customscan_plan(PlannerInfo *root, CustomPath
      *best_path,\n\t\t\t\t\t   List *tlist, List *scan_clauses)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4201,1
    - Dst: reparameterize_path_by_child
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4225,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4228,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4232,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4234,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4237,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4241,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4245,1
    - Dst: extract_actual_join_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4247,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4254,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4262,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4264,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4268,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4269,1
    - Dst: identify_current_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4276,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4278,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4295,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4299,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4302,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4304,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4315,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4320,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4322,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4322,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4323,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4326,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4329,1
    - Dst: change_plan_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4332,1
    - Dst: make_nestloop
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4336,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4346,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - NestPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4349
      start: 4192
    functionDepth: 3
    functionLinenumber: 4192
    functionLinenumberEnd: 4349
    functionName: create_nestloop_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - copyObject
    - tlist_member
    - bms_free
    - replace_nestloop_params
    - bms_difference
    - bms_union
    - Assert
    - extract_actual_clauses
    - change_plan_targetlist
    - list_copy
    - reparameterize_path_by_child
    - make_nestloop
    - list_length
    - IS_OUTER_JOIN
    - makeTargetEntry
    - lappend
    - copy_generic_path_info
    - lfirst
    - extract_actual_join_clauses
    - order_qual_clauses
    - castNode
    - create_plan_recurse
    - identify_current_nestloop_params
    - PATH_REQ_OUTER
    - is_parallel_safe
    - IsA
    - build_path_tlist
    linkageType: ''
    returnType: NestLoop
    signature: "NestLoop *\ncreate_nestloop_plan(PlannerInfo *root,\n\t\t\t\t\t NestPath
      *best_path)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4295,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4299,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4302,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4304,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4315,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4320,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4322,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4322,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4323,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4326,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4329,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4330
      start: 4293
    functionDepth: 1
    functionLinenumber: 4293
    functionLinenumberEnd: 4330
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 115
    functionsReached:
    - copyObject
    - tlist_member
    - makeTargetEntry
    - castNode
    - lappend
    - replace_nestloop_params
    - lfirst
    - is_parallel_safe
    - list_copy
    - list_length
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, nestParams)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4359,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4385,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4388,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4393,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4397,1
    - Dst: extract_actual_join_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4399,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4406,1
    - Dst: get_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4414,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4415,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4424,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4426,1
    - Dst: get_switched_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4434,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4438,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4455,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4455,1
    - Dst: make_incrementalsort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4465,1
    - Dst: label_incrementalsort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4470,1
    - Dst: make_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4478,1
    - Dst: label_sort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4506,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4506,1
    - Dst: make_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4509,1
    - Dst: label_sort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4513,1
    - Dst: make_material
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4526,1
    - Dst: copy_plan_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4533,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4547,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4547,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4548,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4549,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4550,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4551,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4555,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4556,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4558,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4560,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4579,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4600,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4601,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4603,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4605,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4625,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4630,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4643,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4649,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4668,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4672,1
    - Dst: make_mergejoin
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4691,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4707,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 106
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - MergePath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4710
      start: 4351
    functionDepth: 2
    functionLinenumber: 4351
    functionLinenumberEnd: 4710
    functionName: create_mergejoin_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_difference
    - get_switched_clauses
    - label_sort_with_costsize
    - replace_nestloop_params
    - list_head
    - bms_difference
    - bms_union
    - elog
    - make_material
    - foreach
    - Assert
    - extract_actual_clauses
    - lnext
    - pathkeys_contained_in
    - list_length
    - IS_OUTER_JOIN
    - get_actual_clauses
    - copy_generic_path_info
    - copy_plan_costsize
    - make_incrementalsort_from_pathkeys
    - lfirst
    - extract_actual_join_clauses
    - order_qual_clauses
    - lfirst_node
    - make_sort_from_pathkeys
    - create_plan_recurse
    - label_incrementalsort_with_costsize
    - make_mergejoin
    - palloc
    - build_path_tlist
    linkageType: ''
    returnType: MergeJoin
    signature: "MergeJoin *\ncreate_mergejoin_plan(PlannerInfo *root,\n\t\t\t\t\t
      \ MergePath *best_path)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4643,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4647
      start: 4639
    functionDepth: 1
    functionLinenumber: 4639
    functionLinenumberEnd: 4647
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 116
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l2, innerpathkeys)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4721,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4741,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4744,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4748,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4753,1
    - Dst: extract_actual_join_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4755,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4762,1
    - Dst: get_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4770,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4771,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4780,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4782,1
    - Dst: get_switched_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4789,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4800,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4802,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4805,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4805,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4806,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4807,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4809,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4834,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4836,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4837,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4838,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4838,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4839,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4839,1
    - Dst: make_hash
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4845,1
    - Dst: copy_plan_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4855,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4870,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4871,1
    - Dst: make_hashjoin
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4874,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4887,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 47
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - HashPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4890
      start: 4712
    functionDepth: 2
    functionLinenumber: 4712
    functionLinenumberEnd: 4890
    functionName: create_hashjoin_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_difference
    - get_switched_clauses
    - is_opclause
    - replace_nestloop_params
    - bms_difference
    - lappend_oid
    - bms_union
    - Assert
    - extract_actual_clauses
    - linitial
    - list_length
    - IS_OUTER_JOIN
    - get_actual_clauses
    - lappend
    - copy_generic_path_info
    - copy_plan_costsize
    - extract_actual_join_clauses
    - order_qual_clauses
    - lfirst_node
    - make_hash
    - create_plan_recurse
    - lsecond
    - make_hashjoin
    - IsA
    - build_path_tlist
    linkageType: ''
    returnType: HashJoin
    signature: "HashJoin *\ncreate_hashjoin_plan(PlannerInfo *root,\n\t\t\t\t\t HashPath
      *best_path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4834,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4836,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4837,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4838,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4838,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4839,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4840
      start: 4832
    functionDepth: 1
    functionLinenumber: 4832
    functionLinenumberEnd: 4840
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 116
    functionsReached:
    - linitial
    - lappend
    - lsecond
    - lappend_oid
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, hashclauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replace_nestloop_params_mutator
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4913
      start: 4908
    functionDepth: 1
    functionLinenumber: 4908
    functionLinenumberEnd: 4913
    functionName: replace_nestloop_params
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 23
    functionsReached:
    - replace_nestloop_params_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      replace_nestloop_params(PlannerInfo *root, Node *expr)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4920,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4925,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4927,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4928,1
    - Dst: replace_nestloop_param_var
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4931,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4933,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4938,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4941,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4941,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4959,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4961,1
    - Dst: replace_nestloop_params_mutator
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4963,1
    - Dst: replace_nestloop_param_placeholdervar
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4968,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4970,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - node
    - root
    argTypes:
    - Node*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4971
      start: 4915
    functionDepth: 1
    functionLinenumber: 4915
    functionLinenumberEnd: 4971
    functionName: replace_nestloop_params_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - memcpy
    - replace_nestloop_params_mutator
    - replace_nestloop_param_placeholdervar
    - Assert
    - IS_SPECIAL_VARNO
    - bms_is_member
    - makeNode
    - find_placeholder_info
    - expression_tree_mutator
    - IsA
    - bms_is_subset
    - replace_nestloop_param_var
    linkageType: ''
    returnType: Node
    signature: 'Node *

      replace_nestloop_params_mutator(Node *node, PlannerInfo *root)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5004,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5006,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5010,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5012,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5015,1
    - Dst: fix_indexqual_clause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5016,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5018,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - root
    - index_path
    - stripped_indexquals_p
    - fixed_indexquals_p
    argTypes:
    - PlannerInfo*
    - IndexPath*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5024
      start: 4993
    functionDepth: 1
    functionLinenumber: 4993
    functionLinenumberEnd: 5024
    functionName: fix_indexqual_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - fix_indexqual_clause
    - lappend
    - foreach
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void fix_indexqual_references(PlannerInfo *root, IndexPath *index_path,\n\t\t\t\t\t\t
      List **stripped_indexquals_p, List **fixed_indexquals_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5044,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5046,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5047,1
    - Dst: fix_indexqual_clause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5049,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - index_path
    argTypes:
    - PlannerInfo*
    - IndexPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5054
      start: 5034
    functionDepth: 1
    functionLinenumber: 5034
    functionLinenumberEnd: 5054
    functionName: fix_indexorderby_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - lfirst_int
    - lappend
    - lfirst
    - fix_indexqual_clause
    - forboth
    linkageType: ''
    returnType: List
    signature: 'List *

      fix_indexorderby_references(PlannerInfo *root, IndexPath *index_path)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5073,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5075,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5080,1
    - Dst: fix_indexqual_operand
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5080,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5080,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5084,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5091,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5091,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5091,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5092,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5094,1
    - Dst: fix_indexqual_operand
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5094,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5094,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5096,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5099,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5104,1
    - Dst: fix_indexqual_operand
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5104,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5104,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5108,1
    - Dst: fix_indexqual_operand
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5113,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5118,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5119,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - root
    - index
    - indexcol
    - clause
    - indexcolnos
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - int
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5122
      start: 5063
    functionDepth: 2
    functionLinenumber: 5063
    functionLinenumberEnd: 5122
    functionName: fix_indexqual_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - elog
    - fix_indexqual_operand
    - lfirst_int
    - Assert
    - linitial
    - replace_nestloop_params
    - lfirst
    - list_length
    - IsA
    - nodeTag
    - forboth
    linkageType: ''
    returnType: Node
    signature: "Node *\nfix_indexqual_clause(PlannerInfo *root, IndexOptInfo *index,
      int indexcol,\n\t\t\t\t\t Node *clause, List *indexcolnos)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5142,1
    - Dst: strip_noop_phvs
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5147,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5152,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5158,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5162,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5168,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5172,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5178,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5183,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5184,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5186,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5188,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5189,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5189,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5190,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5190,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5195,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5197,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5202,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 3
    argNames:
    - node
    - index
    - indexcol
    argTypes:
    - Node*
    - IndexOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5204
      start: 5135
    functionDepth: 2
    functionLinenumber: 5135
    functionLinenumberEnd: 5204
    functionName: fix_indexqual_operand
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - elog
    - strip_noop_phvs
    - copyObject
    - Assert
    - exprType
    - lnext
    - exprCollation
    - list_head
    - lfirst
    - equal
    - IsA
    - makeVar
    linkageType: ''
    returnType: Node
    signature: 'Node *

      fix_indexqual_operand(Node *node, IndexOptInfo *index, int indexcol)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5226,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5226,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5227,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5234,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5242,1
    - Dst: CommuteOpExpr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5245,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5246,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5251,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5251,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - clauses
    - outerrelids
    argTypes:
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5257
      start: 5215
    functionDepth: 2
    functionLinenumber: 5215
    functionLinenumberEnd: 5257
    functionName: get_switched_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - Assert
    - lappend
    - makeNode
    - is_opclause
    - lfirst
    - list_copy
    - CommuteOpExpr
    - bms_is_subset
    linkageType: ''
    returnType: List
    signature: 'List *

      get_switched_clauses(List *clauses, Relids outerrelids)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5226,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5226,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5227,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5234,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5242,1
    - Dst: CommuteOpExpr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5245,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5246,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5251,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5251,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5255
      start: 5221
    functionDepth: 2
    functionLinenumber: 5221
    functionLinenumberEnd: 5255
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - Assert
    - lappend
    - makeNode
    - is_opclause
    - lfirst
    - list_copy
    - CommuteOpExpr
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5301,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5315,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5319,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5322,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5325,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5376,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - root
    - clauses
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5379
      start: 5292
    functionDepth: 1
    functionLinenumber: 5292
    functionLinenumberEnd: 5379
    functionName: order_qual_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 23
    functionsReached:
    - lappend
    - cost_qual_eval_node
    - lfirst
    - palloc
    - list_length
    - IsA
    linkageType: ''
    returnType: List
    signature: 'List *

      order_qual_clauses(PlannerInfo *root, List *clauses)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5319,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5322,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5325,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5347
      start: 5317
    functionDepth: 1
    functionLinenumber: 5317
    functionLinenumberEnd: 5347
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - lfirst
    - cost_qual_eval_node
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - Plan*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5396
      start: 5386
    functionDepth: 0
    functionLinenumber: 5386
    functionLinenumberEnd: 5396
    functionName: copy_generic_path_info
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 41
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void copy_generic_path_info(Plan *dest, Path *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - Plan*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5414
      start: 5402
    functionDepth: 0
    functionLinenumber: 5402
    functionLinenumberEnd: 5414
    functionName: copy_plan_costsize
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void copy_plan_costsize(Plan *dest, Plan *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5431,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5431,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - root
    - plan
    - limit_tuples
    argTypes:
    - PlannerInfo*
    - Sort*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5447
      start: 5425
    functionDepth: 1
    functionLinenumber: 5425
    functionLinenumberEnd: 5447
    functionName: label_sort_with_costsize
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 3
    functionsReached:
    - Assert
    - IsA
    - cost_sort
    linkageType: ''
    returnType: void
    signature: void label_sort_with_costsize(PlannerInfo *root, Sort *plan, double
      limit_tuples)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5460,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5460,1
    - Dst: cost_incremental_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - root
    - plan
    - pathkeys
    - limit_tuples
    argTypes:
    - PlannerInfo*
    - IncrementalSort*
    - List*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5478
      start: 5453
    functionDepth: 1
    functionLinenumber: 5453
    functionLinenumberEnd: 5478
    functionName: label_incrementalsort_with_costsize
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 3
    functionsReached:
    - Assert
    - IsA
    - cost_incremental_sort
    linkageType: ''
    returnType: void
    signature: "void label_incrementalsort_with_costsize(PlannerInfo *root, IncrementalSort
      *plan,\n\t\t\t\t\t\t\t\t\tList *pathkeys, double limit_tuples)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5488,1
    - Dst: bitmap_subplan_mark_shared
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5489,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5489,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5490,1
    - Dst: bitmap_subplan_mark_shared
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5493,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5493,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5495,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5498,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - plan
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5499
      start: 5485
    functionDepth: 1
    functionLinenumber: 5485
    functionLinenumberEnd: 5499
    functionName: bitmap_subplan_mark_shared
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - elog
    - linitial
    - bitmap_subplan_mark_shared
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void bitmap_subplan_mark_shared(Plan *plan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    argTypes:
    - List*
    - List*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5530
      start: 5515
    functionDepth: 1
    functionLinenumber: 5515
    functionLinenumberEnd: 5530
    functionName: make_seqscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: SeqScan
    signature: "SeqScan *\nmake_seqscan(List *qptlist,\n\t\t\t List *qpqual,\n\t\t\t
      Index scanrelid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - tsc
    argTypes:
    - List*
    - List*
    - Index
    - TableSampleClause*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5549
      start: 5532
    functionDepth: 1
    functionLinenumber: 5532
    functionLinenumberEnd: 5549
    functionName: make_samplescan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: SampleScan
    signature: "SampleScan *\nmake_samplescan(List *qptlist,\n\t\t\t\tList *qpqual,\n\t\t\t\tIndex
      scanrelid,\n\t\t\t\tTableSampleClause *tsc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 10
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - indexid
    - indexqual
    - indexqualorig
    - indexorderby
    - indexorderbyorig
    - indexorderbyops
    - indexscandir
    argTypes:
    - List*
    - List*
    - Index
    - Oid
    - List*
    - List*
    - List*
    - List*
    - List*
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5580
      start: 5551
    functionDepth: 1
    functionLinenumber: 5551
    functionLinenumberEnd: 5580
    functionName: make_indexscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: IndexScan
    signature: "IndexScan *\nmake_indexscan(List *qptlist,\n\t\t\t   List *qpqual,\n\t\t\t
      \  Index scanrelid,\n\t\t\t   Oid indexid,\n\t\t\t   List *indexqual,\n\t\t\t
      \  List *indexqualorig,\n\t\t\t   List *indexorderby,\n\t\t\t   List *indexorderbyorig,\n\t\t\t
      \  List *indexorderbyops,\n\t\t\t   ScanDirection indexscandir)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 9
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - indexid
    - indexqual
    - recheckqual
    - indexorderby
    - indextlist
    - indexscandir
    argTypes:
    - List*
    - List*
    - Index
    - Oid
    - List*
    - List*
    - List*
    - List*
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5609
      start: 5582
    functionDepth: 1
    functionLinenumber: 5582
    functionLinenumberEnd: 5609
    functionName: make_indexonlyscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: IndexOnlyScan
    signature: "IndexOnlyScan *\nmake_indexonlyscan(List *qptlist,\n\t\t\t\t   List
      *qpqual,\n\t\t\t\t   Index scanrelid,\n\t\t\t\t   Oid indexid,\n\t\t\t\t   List
      *indexqual,\n\t\t\t\t   List *recheckqual,\n\t\t\t\t   List *indexorderby,\n\t\t\t\t
      \  List *indextlist,\n\t\t\t\t   ScanDirection indexscandir)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - scanrelid
    - indexid
    - indexqual
    - indexqualorig
    argTypes:
    - Index
    - Oid
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5630
      start: 5611
    functionDepth: 1
    functionLinenumber: 5611
    functionLinenumberEnd: 5630
    functionName: make_bitmap_indexscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: BitmapIndexScan
    signature: "BitmapIndexScan *\nmake_bitmap_indexscan(Index scanrelid,\n\t\t\t\t\t
      \ Oid indexid,\n\t\t\t\t\t  List *indexqual,\n\t\t\t\t\t  List *indexqualorig)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - qptlist
    - qpqual
    - lefttree
    - bitmapqualorig
    - scanrelid
    argTypes:
    - List*
    - List*
    - Plan*
    - List*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5650
      start: 5632
    functionDepth: 1
    functionLinenumber: 5632
    functionLinenumberEnd: 5650
    functionName: make_bitmap_heapscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: BitmapHeapScan
    signature: "BitmapHeapScan *\nmake_bitmap_heapscan(List *qptlist,\n\t\t\t\t\t
      List *qpqual,\n\t\t\t\t\t Plan *lefttree,\n\t\t\t\t\t List *bitmapqualorig,\n\t\t\t\t\t
      Index scanrelid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - tidquals
    argTypes:
    - List*
    - List*
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5669
      start: 5652
    functionDepth: 1
    functionLinenumber: 5652
    functionLinenumberEnd: 5669
    functionName: make_tidscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: TidScan
    signature: "TidScan *\nmake_tidscan(List *qptlist,\n\t\t\t List *qpqual,\n\t\t\t
      Index scanrelid,\n\t\t\t List *tidquals)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5677,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - tidrangequals
    argTypes:
    - List*
    - List*
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5688
      start: 5671
    functionDepth: 1
    functionLinenumber: 5671
    functionLinenumberEnd: 5688
    functionName: make_tidrangescan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: TidRangeScan
    signature: "TidRangeScan *\nmake_tidrangescan(List *qptlist,\n\t\t\t\t  List *qpqual,\n\t\t\t\t
      \ Index scanrelid,\n\t\t\t\t  List *tidrangequals)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - subplan
    argTypes:
    - List*
    - List*
    - Index
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5708
      start: 5690
    functionDepth: 1
    functionLinenumber: 5690
    functionLinenumberEnd: 5708
    functionName: make_subqueryscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: SubqueryScan
    signature: "SubqueryScan *\nmake_subqueryscan(List *qptlist,\n\t\t\t\t  List *qpqual,\n\t\t\t\t
      \ Index scanrelid,\n\t\t\t\t  Plan *subplan)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5717,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - functions
    - funcordinality
    argTypes:
    - List*
    - List*
    - Index
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5729
      start: 5710
    functionDepth: 1
    functionLinenumber: 5710
    functionLinenumberEnd: 5729
    functionName: make_functionscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: FunctionScan
    signature: "FunctionScan *\nmake_functionscan(List *qptlist,\n\t\t\t\t  List *qpqual,\n\t\t\t\t
      \ Index scanrelid,\n\t\t\t\t  List *functions,\n\t\t\t\t  bool funcordinality)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - tablefunc
    argTypes:
    - List*
    - List*
    - Index
    - TableFunc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5748
      start: 5731
    functionDepth: 1
    functionLinenumber: 5731
    functionLinenumberEnd: 5748
    functionName: make_tablefuncscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: TableFuncScan
    signature: "TableFuncScan *\nmake_tablefuncscan(List *qptlist,\n\t\t\t\t   List
      *qpqual,\n\t\t\t\t   Index scanrelid,\n\t\t\t\t   TableFunc *tablefunc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - values_lists
    argTypes:
    - List*
    - List*
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5767
      start: 5750
    functionDepth: 1
    functionLinenumber: 5750
    functionLinenumberEnd: 5767
    functionName: make_valuesscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: ValuesScan
    signature: "ValuesScan *\nmake_valuesscan(List *qptlist,\n\t\t\t\tList *qpqual,\n\t\t\t\tIndex
      scanrelid,\n\t\t\t\tList *values_lists)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - ctePlanId
    - cteParam
    argTypes:
    - List*
    - List*
    - Index
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5788
      start: 5769
    functionDepth: 1
    functionLinenumber: 5769
    functionLinenumberEnd: 5788
    functionName: make_ctescan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: CteScan
    signature: "CteScan *\nmake_ctescan(List *qptlist,\n\t\t\t List *qpqual,\n\t\t\t
      Index scanrelid,\n\t\t\t int ctePlanId,\n\t\t\t int cteParam)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - enrname
    argTypes:
    - List*
    - List*
    - Index
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5808
      start: 5790
    functionDepth: 1
    functionLinenumber: 5790
    functionLinenumberEnd: 5808
    functionName: make_namedtuplestorescan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: NamedTuplestoreScan
    signature: "NamedTuplestoreScan *\nmake_namedtuplestorescan(List *qptlist,\n\t\t\t\t\t\t
      List *qpqual,\n\t\t\t\t\t\t Index scanrelid,\n\t\t\t\t\t\t char *enrname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - wtParam
    argTypes:
    - List*
    - List*
    - Index
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5827
      start: 5810
    functionDepth: 1
    functionLinenumber: 5810
    functionLinenumberEnd: 5827
    functionName: make_worktablescan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: WorkTableScan
    signature: "WorkTableScan *\nmake_worktablescan(List *qptlist,\n\t\t\t\t   List
      *qpqual,\n\t\t\t\t   Index scanrelid,\n\t\t\t\t   int wtParam)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 8
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - fdw_exprs
    - fdw_private
    - fdw_scan_tlist
    - fdw_recheck_quals
    - outer_plan
    argTypes:
    - List*
    - List*
    - Index
    - List*
    - List*
    - List*
    - List*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5867
      start: 5829
    functionDepth: 1
    functionLinenumber: 5829
    functionLinenumberEnd: 5867
    functionName: make_foreignscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: ForeignScan
    signature: "ForeignScan *\nmake_foreignscan(List *qptlist,\n\t\t\t\t List *qpqual,\n\t\t\t\t
      Index scanrelid,\n\t\t\t\t List *fdw_exprs,\n\t\t\t\t List *fdw_private,\n\t\t\t\t
      List *fdw_scan_tlist,\n\t\t\t\t List *fdw_recheck_quals,\n\t\t\t\t Plan *outer_plan)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5877,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5879,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5900,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5901,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5902,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5906,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5907,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5912,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5913,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5913,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 6
    argNames:
    - tlist
    - lefttree
    - righttree
    - wtParam
    - distinctList
    - numGroups
    argTypes:
    - List*
    - Plan*
    - Plan*
    - int
    - List*
    - Cardinality
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5923
      start: 5869
    functionDepth: 1
    functionLinenumber: 5869
    functionLinenumberEnd: 5923
    functionName: make_recursive_union
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - OidIsValid
    - get_sortgroupclause_tle
    - makeNode
    - palloc_array
    - exprCollation
    - lfirst
    - list_length
    linkageType: ''
    returnType: RecursiveUnion
    signature: "RecursiveUnion *\nmake_recursive_union(List *tlist,\n\t\t\t\t\t Plan
      *lefttree,\n\t\t\t\t\t Plan *righttree,\n\t\t\t\t\t int wtParam,\n\t\t\t\t\t
      List *distinctList,\n\t\t\t\t\t Cardinality numGroups)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5906,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5907,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5912,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5913,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5915
      start: 5904
    functionDepth: 1
    functionLinenumber: 5904
    functionLinenumberEnd: 5915
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - Assert
    - get_sortgroupclause_tle
    - exprCollation
    - lfirst
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void foreach(slitem, distinctList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bitmapplans
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5938
      start: 5925
    functionDepth: 1
    functionLinenumber: 5925
    functionLinenumberEnd: 5938
    functionName: make_bitmap_and
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: BitmapAnd
    signature: 'BitmapAnd *

      make_bitmap_and(List *bitmapplans)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bitmapplans
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5953
      start: 5940
    functionDepth: 1
    functionLinenumber: 5940
    functionLinenumberEnd: 5953
    functionName: make_bitmap_or
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: BitmapOr
    signature: 'BitmapOr *

      make_bitmap_or(List *bitmapplans)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 9
    argNames:
    - tlist
    - joinclauses
    - otherclauses
    - nestParams
    - lefttree
    - righttree
    - jointype
    - ojrelids
    - inner_unique
    argTypes:
    - List*
    - List*
    - List*
    - List*
    - Plan*
    - Plan*
    - JoinType
    - Relids
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5980
      start: 5955
    functionDepth: 1
    functionLinenumber: 5955
    functionLinenumberEnd: 5980
    functionName: make_nestloop
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: NestLoop
    signature: "NestLoop *\nmake_nestloop(List *tlist,\n\t\t\t  List *joinclauses,\n\t\t\t
      \ List *otherclauses,\n\t\t\t  List *nestParams,\n\t\t\t  Plan *lefttree,\n\t\t\t
      \ Plan *righttree,\n\t\t\t  JoinType jointype,\n\t\t\t  Relids ojrelids,\n\t\t\t
      \ bool inner_unique)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 12
    argNames:
    - tlist
    - joinclauses
    - otherclauses
    - hashclauses
    - hashoperators
    - hashcollations
    - hashkeys
    - lefttree
    - righttree
    - jointype
    - ojrelids
    - inner_unique
    argTypes:
    - List*
    - List*
    - List*
    - List*
    - List*
    - List*
    - List*
    - Plan*
    - Plan*
    - JoinType
    - Relids
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6013
      start: 5982
    functionDepth: 1
    functionLinenumber: 5982
    functionLinenumberEnd: 6013
    functionName: make_hashjoin
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: HashJoin
    signature: "HashJoin *\nmake_hashjoin(List *tlist,\n\t\t\t  List *joinclauses,\n\t\t\t
      \ List *otherclauses,\n\t\t\t  List *hashclauses,\n\t\t\t  List *hashoperators,\n\t\t\t
      \ List *hashcollations,\n\t\t\t  List *hashkeys,\n\t\t\t  Plan *lefttree,\n\t\t\t
      \ Plan *righttree,\n\t\t\t  JoinType jointype,\n\t\t\t  Relids ojrelids,\n\t\t\t
      \ bool inner_unique)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - lefttree
    - hashkeys
    - skewTable
    - skewColumn
    - skewInherit
    argTypes:
    - Plan*
    - List*
    - Oid
    - AttrNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6036
      start: 6015
    functionDepth: 1
    functionLinenumber: 6015
    functionLinenumberEnd: 6036
    functionName: make_hash
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Hash
    signature: "Hash *\nmake_hash(Plan *lefttree,\n\t\t  List *hashkeys,\n\t\t  Oid
      skewTable,\n\t\t  AttrNumber skewColumn,\n\t\t  bool skewInherit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6054,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 14
    argNames:
    - tlist
    - joinclauses
    - otherclauses
    - mergeclauses
    - mergefamilies
    - mergecollations
    - mergereversals
    - mergenullsfirst
    - lefttree
    - righttree
    - jointype
    - ojrelids
    - inner_unique
    - skip_mark_restore
    argTypes:
    - List*
    - List*
    - List*
    - List*
    - Oid*
    - Oid*
    - bool*
    - bool*
    - Plan*
    - Plan*
    - JoinType
    - Relids
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6073
      start: 6038
    functionDepth: 1
    functionLinenumber: 6038
    functionLinenumberEnd: 6073
    functionName: make_mergejoin
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: MergeJoin
    signature: "MergeJoin *\nmake_mergejoin(List *tlist,\n\t\t\t   List *joinclauses,\n\t\t\t
      \  List *otherclauses,\n\t\t\t   List *mergeclauses,\n\t\t\t   Oid *mergefamilies,\n\t\t\t
      \  Oid *mergecollations,\n\t\t\t   bool *mergereversals,\n\t\t\t   bool *mergenullsfirst,\n\t\t\t
      \  Plan *lefttree,\n\t\t\t   Plan *righttree,\n\t\t\t   JoinType jointype,\n\t\t\t
      \  Relids ojrelids,\n\t\t\t   bool inner_unique,\n\t\t\t   bool skip_mark_restore)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 6
    argNames:
    - lefttree
    - numCols
    - sortColIdx
    - sortOperators
    - collations
    - nullsFirst
    argTypes:
    - Plan*
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6104
      start: 6081
    functionDepth: 1
    functionLinenumber: 6081
    functionLinenumberEnd: 6104
    functionName: make_sort
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Sort
    signature: "Sort *\nmake_sort(Plan *lefttree, int numCols,\n\t\t  AttrNumber *sortColIdx,
      Oid *sortOperators,\n\t\t  Oid *collations, bool *nullsFirst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 7
    argNames:
    - lefttree
    - numCols
    - nPresortedCols
    - sortColIdx
    - sortOperators
    - collations
    - nullsFirst
    argTypes:
    - Plan*
    - int
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6135
      start: 6112
    functionDepth: 1
    functionLinenumber: 6112
    functionLinenumberEnd: 6135
    functionName: make_incrementalsort
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: IncrementalSort
    signature: "IncrementalSort *\nmake_incrementalsort(Plan *lefttree, int numCols,
      int nPresortedCols,\n\t\t\t\t\t AttrNumber *sortColIdx, Oid *sortOperators,\n\t\t\t\t\t
      Oid *collations, bool *nullsFirst)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6200,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6201,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6202,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6203,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6204,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6210,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6226,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6229,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6229,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6230,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6243,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6246,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6273,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6274,1
    - Dst: find_computable_ec_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6290,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6292,1
    - Dst: is_projection_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6299,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6302,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6303,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6313,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6313,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6314,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6317,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6325,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6329,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6330,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 63
    argCount: 10
    argNames:
    - lefttree
    - pathkeys
    - relids
    - reqColIdx
    - adjust_tlist_in_place
    - p_numsortkeys
    - p_sortColIdx
    - p_sortOperators
    - p_collations
    - p_nullsFirst
    argTypes:
    - Plan*
    - List*
    - Relids
    - AttrNumber*
    - bool
    - int*
    - AttrNumber**
    - Oid**
    - Oid**
    - bool**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6350
      start: 6178
    functionDepth: 2
    functionLinenumber: 6178
    functionLinenumberEnd: 6350
    functionName: prepare_sort_from_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 3
    functionsReached:
    - elog
    - inject_projection_plan
    - copyObject
    - get_sortgroupref_tle
    - Assert
    - linitial
    - find_ec_member_matching_expr
    - is_projection_capable_plan
    - makeTargetEntry
    - lappend
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - lfirst
    - palloc
    - list_length
    - find_computable_ec_member
    - get_tle_by_resno
    linkageType: ''
    returnType: Plan
    signature: "Plan *\nprepare_sort_from_pathkeys(Plan *lefttree, List *pathkeys,\n\t\t\t\t\t\t
      \  Relids relids,\n\t\t\t\t\t\t   const AttrNumber *reqColIdx,\n\t\t\t\t\t\t
      \  bool adjust_tlist_in_place,\n\t\t\t\t\t\t   int *p_numsortkeys,\n\t\t\t\t\t\t
      \  AttrNumber **p_sortColIdx,\n\t\t\t\t\t\t   Oid **p_sortOperators,\n\t\t\t\t\t\t
      \  Oid **p_collations,\n\t\t\t\t\t\t   bool **p_nullsFirst)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6210,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6226,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6229,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6229,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6230,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6243,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6246,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6273,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6274,1
    - Dst: find_computable_ec_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6290,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6292,1
    - Dst: is_projection_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6299,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6302,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6303,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6313,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6313,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6314,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6317,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6325,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6329,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6330,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6340
      start: 6208
    functionDepth: 2
    functionLinenumber: 6208
    functionLinenumberEnd: 6340
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - elog
    - inject_projection_plan
    - copyObject
    - get_sortgroupref_tle
    - Assert
    - linitial
    - find_ec_member_matching_expr
    - is_projection_capable_plan
    - makeTargetEntry
    - lappend
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - lfirst
    - list_length
    - find_computable_ec_member
    - get_tle_by_resno
    linkageType: ''
    returnType: void
    signature: void foreach(i, pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6273,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6282
      start: 6271
    functionDepth: 1
    functionLinenumber: 6271
    functionLinenumberEnd: 6282
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - lfirst
    - find_ec_member_matching_expr
    linkageType: ''
    returnType: void
    signature: void foreach(j, tlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6370,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - lefttree
    - pathkeys
    - relids
    argTypes:
    - Plan*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6384
      start: 6360
    functionDepth: 3
    functionLinenumber: 6360
    functionLinenumberEnd: 6384
    functionName: make_sort_from_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - prepare_sort_from_pathkeys
    - make_sort
    linkageType: ''
    returnType: Sort
    signature: 'Sort *

      make_sort_from_pathkeys(Plan *lefttree, List *pathkeys, Relids relids)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6406,1
    - Dst: make_incrementalsort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - lefttree
    - pathkeys
    - relids
    - nPresortedCols
    argTypes:
    - Plan*
    - List*
    - Relids
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6420
      start: 6395
    functionDepth: 3
    functionLinenumber: 6395
    functionLinenumberEnd: 6420
    functionName: make_incrementalsort_from_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - prepare_sort_from_pathkeys
    - make_incrementalsort
    linkageType: ''
    returnType: IncrementalSort
    signature: "IncrementalSort *\nmake_incrementalsort_from_pathkeys(Plan *lefttree,
      List *pathkeys,\n\t\t\t\t\t\t\t\t   Relids relids, int nPresortedCols)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6441,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6442,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6443,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6444,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6445,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6450,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6451,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6455,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - sortcls
    - lefttree
    argTypes:
    - List*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6463
      start: 6429
    functionDepth: 2
    functionLinenumber: 6429
    functionLinenumberEnd: 6463
    functionName: make_sort_from_sortclauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 0
    functionsReached:
    - make_sort
    - get_sortgroupclause_tle
    - exprCollation
    - lfirst
    - palloc
    - list_length
    linkageType: ''
    returnType: Sort
    signature: 'Sort *

      make_sort_from_sortclauses(List *sortcls, Plan *lefttree)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6450,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6451,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6458
      start: 6448
    functionDepth: 1
    functionLinenumber: 6448
    functionLinenumberEnd: 6458
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - lfirst
    - get_sortgroupclause_tle
    - exprCollation
    linkageType: ''
    returnType: void
    signature: void foreach(l, sortcls)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6492,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6493,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6494,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6495,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6496,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6501,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6502,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6505,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6509,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - groupcls
    - grpColIdx
    - lefttree
    argTypes:
    - List*
    - AttrNumber*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6517
      start: 6478
    functionDepth: 2
    functionLinenumber: 6478
    functionLinenumberEnd: 6517
    functionName: make_sort_from_groupcols
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - elog
    - make_sort
    - exprCollation
    - lfirst
    - palloc
    - list_length
    - get_tle_by_resno
    linkageType: ''
    returnType: Sort
    signature: "Sort *\nmake_sort_from_groupcols(List *groupcls,\n\t\t\t\t\t\t AttrNumber
      *grpColIdx,\n\t\t\t\t\t\t Plan *lefttree)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6501,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6502,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6505,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6509,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6512
      start: 6499
    functionDepth: 1
    functionLinenumber: 6499
    functionLinenumberEnd: 6512
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - elog
    - get_tle_by_resno
    - lfirst
    - exprCollation
    linkageType: ''
    returnType: void
    signature: void foreach(l, groupcls)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - lefttree
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6531
      start: 6519
    functionDepth: 1
    functionLinenumber: 6519
    functionLinenumberEnd: 6531
    functionName: make_material
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Material
    signature: 'Material *

      make_material(Plan *lefttree)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_material
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6549,1
    - Dst: SS_compute_initplan_cost
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6561,1
    - Dst: cost_material
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - subplan
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6583
      start: 6541
    functionDepth: 2
    functionLinenumber: 6541
    functionLinenumberEnd: 6583
    functionName: materialize_finished_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - cost_material
    - make_material
    - SS_compute_initplan_cost
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      materialize_finished_plan(Plan *subplan)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6592,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 11
    argNames:
    - lefttree
    - hashoperators
    - collations
    - param_exprs
    - singlerow
    - binary_mode
    - est_entries
    - keyparamids
    - est_calls
    - est_unique_keys
    - est_hit_ratio
    argTypes:
    - Plan*
    - Oid*
    - Oid*
    - List*
    - bool
    - bool
    - uint32
    - Bitmapset*
    - Cardinality
    - Cardinality
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6613
      start: 6585
    functionDepth: 1
    functionLinenumber: 6585
    functionLinenumberEnd: 6613
    functionName: make_memoize
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_length
    - makeNode
    linkageType: ''
    returnType: Memoize
    signature: "Memoize *\nmake_memoize(Plan *lefttree, Oid *hashoperators, Oid *collations,\n\t\t\t
      List *param_exprs, bool singlerow, bool binary_mode,\n\t\t\t uint32 est_entries,
      Bitmapset *keyparamids,\n\t\t\t Cardinality est_calls, Cardinality est_unique_keys,\n\t\t\t
      double est_hit_ratio)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 13
    argNames:
    - tlist
    - qual
    - aggstrategy
    - aggsplit
    - numGroupCols
    - grpColIdx
    - grpOperators
    - grpCollations
    - groupingSets
    - chain
    - numGroups
    - transitionSpace
    - lefttree
    argTypes:
    - List*
    - List*
    - AggStrategy
    - AggSplit
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - List*
    - List*
    - Cardinality
    - Size
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6643
      start: 6615
    functionDepth: 1
    functionLinenumber: 6615
    functionLinenumberEnd: 6643
    functionName: make_agg
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Agg
    signature: "Agg *\nmake_agg(List *tlist, List *qual,\n\t\t AggStrategy aggstrategy,
      AggSplit aggsplit,\n\t\t int numGroupCols, AttrNumber *grpColIdx, Oid *grpOperators,
      Oid *grpCollations,\n\t\t List *groupingSets, List *chain, Cardinality numGroups,\n\t\t
      Size transitionSpace, Plan *lefttree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 14
    argNames:
    - tlist
    - wc
    - partNumCols
    - partColIdx
    - partOperators
    - partCollations
    - ordNumCols
    - ordColIdx
    - ordOperators
    - ordCollations
    - runCondition
    - qual
    - topWindow
    - lefttree
    argTypes:
    - List*
    - WindowClause*
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - List*
    - List*
    - bool
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6683
      start: 6645
    functionDepth: 1
    functionLinenumber: 6645
    functionLinenumberEnd: 6683
    functionName: make_windowagg
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: WindowAgg
    signature: "WindowAgg *\nmake_windowagg(List *tlist, WindowClause *wc,\n\t\t\t
      \  int partNumCols, AttrNumber *partColIdx, Oid *partOperators, Oid *partCollations,\n\t\t\t
      \  int ordNumCols, AttrNumber *ordColIdx, Oid *ordOperators, Oid *ordCollations,\n\t\t\t
      \  List *runCondition, List *qual, bool topWindow, Plan *lefttree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 7
    argNames:
    - tlist
    - qual
    - numGroupCols
    - grpColIdx
    - grpOperators
    - grpCollations
    - lefttree
    argTypes:
    - List*
    - List*
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6708
      start: 6685
    functionDepth: 1
    functionLinenumber: 6685
    functionLinenumberEnd: 6708
    functionName: make_group
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Group
    signature: "Group *\nmake_group(List *tlist,\n\t\t   List *qual,\n\t\t   int numGroupCols,\n\t\t
      \  AttrNumber *grpColIdx,\n\t\t   Oid *grpOperators,\n\t\t   Oid *grpCollations,\n\t\t
      \  Plan *lefttree)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6738,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6738,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6739,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6740,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6741,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6745,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6765,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6768,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6768,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6769,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6778,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6780,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6781,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6793,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6799,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6803,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6804,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 4
    argNames:
    - lefttree
    - pathkeys
    - numCols
    - relids
    argTypes:
    - Plan*
    - List*
    - int
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6821
      start: 6716
    functionDepth: 1
    functionLinenumber: 6716
    functionLinenumberEnd: 6821
    functionName: make_unique_from_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - get_sortgroupref_tle
    - Assert
    - linitial
    - find_ec_member_matching_expr
    - OidIsValid
    - get_opfamily_member_for_cmptype
    - palloc_array
    - makeNode
    - lfirst
    - list_length
    linkageType: ''
    returnType: Unique
    signature: "Unique *\nmake_unique_from_pathkeys(Plan *lefttree, List *pathkeys,
      int numCols,\n\t\t\t\t\t\t  Relids relids)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6745,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6765,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6768,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6768,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6769,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6778,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6780,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6781,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6793,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6799,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6803,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6804,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6813
      start: 6743
    functionDepth: 1
    functionLinenumber: 6743
    functionLinenumberEnd: 6813
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 119
    functionsReached:
    - elog
    - foreach
    - get_sortgroupref_tle
    - Assert
    - linitial
    - find_ec_member_matching_expr
    - OidIsValid
    - get_opfamily_member_for_cmptype
    - lfirst
    - list_length
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pathkeys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 6
    argNames:
    - qptlist
    - qpqual
    - nworkers
    - rescan_param
    - single_copy
    - subplan
    argTypes:
    - List*
    - List*
    - int
    - int
    - bool
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6845
      start: 6823
    functionDepth: 1
    functionLinenumber: 6823
    functionLinenumberEnd: 6845
    functionName: make_gather
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Gather
    signature: "Gather *\nmake_gather(List *qptlist,\n\t\t\tList *qpqual,\n\t\t\tint
      nworkers,\n\t\t\tint rescan_param,\n\t\t\tbool single_copy,\n\t\t\tPlan *subplan)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6857,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6859,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6876,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6877,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6878,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6879,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6883,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6884,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6891,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6891,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6892,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 7
    argNames:
    - cmd
    - strategy
    - tlist
    - lefttree
    - righttree
    - groupList
    - numGroups
    argTypes:
    - SetOpCmd
    - SetOpStrategy
    - List*
    - Plan*
    - Plan*
    - List*
    - Cardinality
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6907
      start: 6852
    functionDepth: 1
    functionLinenumber: 6852
    functionLinenumberEnd: 6907
    functionName: make_setop
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - OidIsValid
    - get_sortgroupclause_tle
    - makeNode
    - palloc_array
    - exprCollation
    - lfirst
    - list_length
    linkageType: ''
    returnType: SetOp
    signature: "SetOp *\nmake_setop(SetOpCmd cmd, SetOpStrategy strategy,\n\t\t   List
      *tlist, Plan *lefttree, Plan *righttree,\n\t\t   List *groupList, Cardinality
      numGroups)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6883,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6884,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6891,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6891,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6892,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6895
      start: 6881
    functionDepth: 1
    functionLinenumber: 6881
    functionLinenumberEnd: 6895
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 119
    functionsReached:
    - Assert
    - get_sortgroupclause_tle
    - exprCollation
    - lfirst
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void foreach(slitem, groupList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6916,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - lefttree
    - rowMarks
    - epqParam
    argTypes:
    - Plan*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6928
      start: 6913
    functionDepth: 1
    functionLinenumber: 6913
    functionLinenumberEnd: 6928
    functionName: make_lockrows
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: LockRows
    signature: 'LockRows *

      make_lockrows(Plan *lefttree, List *rowMarks, int epqParam)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 8
    argNames:
    - lefttree
    - limitOffset
    - limitCount
    - limitOption
    - uniqNumCols
    - uniqColIdx
    - uniqOperators
    - uniqCollations
    argTypes:
    - Plan*
    - Node*
    - Node*
    - LimitOption
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6956
      start: 6934
    functionDepth: 1
    functionLinenumber: 6934
    functionLinenumberEnd: 6956
    functionName: make_limit
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Limit
    signature: "Limit *\nmake_limit(Plan *lefttree, Node *limitOffset, Node *limitCount,\n\t\t
      \  LimitOption limitOption, int uniqNumCols, AttrNumber *uniqColIdx,\n\t\t   Oid
      *uniqOperators, Oid *uniqCollations)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6968,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - tlist
    - resconstantqual
    - subplan
    argTypes:
    - List*
    - Node*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6982
      start: 6963
    functionDepth: 1
    functionLinenumber: 6963
    functionLinenumberEnd: 6982
    functionName: make_gating_result
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 3
    functionsReached:
    - Assert
    - makeNode
    linkageType: ''
    returnType: Result
    signature: "Result *\nmake_gating_result(List *tlist,\n\t\t\t\t   Node *resconstantqual,\n\t\t\t\t
      \  Plan *subplan)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6999,1
    - Dst: IS_UPPER_REL
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7006,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - tlist
    - resconstantqual
    - rel
    argTypes:
    - List*
    - Node*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7012
      start: 6994
    functionDepth: 1
    functionLinenumber: 6994
    functionLinenumberEnd: 7012
    functionName: make_one_row_result
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 4
    functionsReached:
    - IS_UPPER_REL
    - makeNode
    - IS_JOIN_REL
    linkageType: ''
    returnType: Result
    signature: "Result *\nmake_one_row_result(List *tlist,\n\t\t\t\t\tNode *resconstantqual,\n\t\t\t\t\tRelOptInfo
      *rel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tlist
    - subplan
    argTypes:
    - List*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7031
      start: 7018
    functionDepth: 1
    functionLinenumber: 7018
    functionLinenumberEnd: 7031
    functionName: make_project_set
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: ProjectSet
    signature: "ProjectSet *\nmake_project_set(List *tlist,\n\t\t\t\t Plan *subplan)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7048,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7058,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7060,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7060,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7062,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7063,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7063,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7064,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7065,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7065,1
    - Dst: extract_update_targetlist_colnos
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7104,1
    - Dst: infer_arbiter_indexes
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7113,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7138,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7159,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7169,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7171,1
    - Dst: GetFdwRoutineByRelId
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7174,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7189,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7191,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7192,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7193,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7194,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7195,1
    - Dst: has_row_triggers
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7213,1
    - Dst: has_stored_generated_columns
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7214,1
    - Dst: contain_vars_returning_old_or_new
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7223,1
    - Dst: has_transition_tables
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7231,1
    - Dst: FdwRoutine*::PlanDirectModify
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7237,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7242,1
    - Dst: FdwRoutine*::PlanForeignModify
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7247,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7250,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 86
    argCount: 16
    argNames:
    - root
    - subplan
    - operation
    - canSetTag
    - nominalRelation
    - rootRelation
    - resultRelations
    - updateColnosLists
    - withCheckOptionLists
    - returningLists
    - rowMarks
    - onconflict
    - mergeActionLists
    - mergeJoinConditions
    - forPortionOf
    - epqParam
    argTypes:
    - PlannerInfo*
    - Plan*
    - CmdType
    - bool
    - Index
    - Index
    - List*
    - List*
    - List*
    - List*
    - List*
    - OnConflictExpr*
    - List*
    - List*
    - ForPortionOfExpr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7257
      start: 7037
    functionDepth: 1
    functionLinenumber: 7037
    functionLinenumberEnd: 7257
    functionName: make_modifytable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - errdetail_relkind_not_supported
    - lfirst_int
    - errcode
    - has_row_triggers
    - bms_add_member
    - Assert
    - has_stored_generated_columns
    - GetFdwRoutineByRelId
    - get_rel_name
    - errmsg
    - list_length
    - lappend
    - ereport
    - contain_vars_returning_old_or_new
    - has_transition_tables
    - FdwRoutine*::PlanForeignModify
    - unlikely
    - FdwRoutine*::PlanDirectModify
    - extract_update_targetlist_colnos
    - makeNode
    - infer_arbiter_indexes
    linkageType: ''
    returnType: ModifyTable
    signature: "ModifyTable *\nmake_modifytable(PlannerInfo *root, Plan *subplan,\n\t\t\t\t
      CmdType operation, bool canSetTag,\n\t\t\t\t Index nominalRelation, Index rootRelation,\n\t\t\t\t
      List *resultRelations,\n\t\t\t\t List *updateColnosLists,\n\t\t\t\t List *withCheckOptionLists,
      List *returningLists,\n\t\t\t\t List *rowMarks, OnConflictExpr *onconflict,\n\t\t\t\t
      List *mergeActionLists, List *mergeJoinConditions,\n\t\t\t\t ForPortionOfExpr
      *forPortionOf, int epqParam)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7138,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7159,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7169,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7171,1
    - Dst: GetFdwRoutineByRelId
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7174,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7189,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7191,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7192,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7193,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7194,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7195,1
    - Dst: has_row_triggers
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7213,1
    - Dst: has_stored_generated_columns
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7214,1
    - Dst: contain_vars_returning_old_or_new
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7223,1
    - Dst: has_transition_tables
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7231,1
    - Dst: FdwRoutine*::PlanDirectModify
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7237,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7242,1
    - Dst: FdwRoutine*::PlanForeignModify
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7247,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7250,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7252
      start: 7136
    functionDepth: 1
    functionLinenumber: 7136
    functionLinenumberEnd: 7252
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 119
    functionsReached:
    - planner_rt_fetch
    - errdetail_relkind_not_supported
    - lfirst_int
    - Assert
    - errcode
    - lappend
    - ereport
    - has_stored_generated_columns
    - contain_vars_returning_old_or_new
    - has_transition_tables
    - GetFdwRoutineByRelId
    - unlikely
    - get_rel_name
    - errmsg
    - FdwRoutine*::PlanForeignModify
    - FdwRoutine*::PlanDirectModify
    - has_row_triggers
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc, resultRelations)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7283,1
    - Dst: IS_DUMMY_APPEND
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7293,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - path
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7307
      start: 7263
    functionDepth: 1
    functionLinenumber: 7263
    functionLinenumberEnd: 7307
    functionName: is_projection_capable_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - castNode
    - IS_DUMMY_APPEND
    linkageType: ''
    returnType: bool
    signature: bool is_projection_capable_path(Path *path)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - plan
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7349
      start: 7313
    functionDepth: 1
    functionLinenumber: 7313
    functionLinenumberEnd: 7349
    functionName: is_projection_capable_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 4
    functionsReached:
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: bool is_projection_capable_plan(Plan *plan)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:182,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:186,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:188,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:193,1
    - Dst: add_base_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:194,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:194,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:196,1
    - Dst: add_base_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:200,1
    - Dst: add_base_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:201,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:204,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:205,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - root
    - jtnode
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 206
    functionName: add_base_rels_to_query
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - build_simple_rel
    - lfirst
    - IsA
    - nodeTag
    - add_base_rels_to_query
    linkageType: ''
    returnType: void
    signature: void add_base_rels_to_query(PlannerInfo *root, Node *jtnode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: expand_inherited_rtentry
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:235,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 237
    functionName: add_other_rels_to_query
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - expand_inherited_rtentry
    linkageType: ''
    returnType: void
    signature: void add_other_rels_to_query(PlannerInfo *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:257,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:264,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:264,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:265,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:274,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:280,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:281,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:282,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - root
    - final_tlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 285
    functionName: build_base_rel_tlists
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - list_free
    - add_vars_to_targetlist
    - pull_var_clause
    - bms_make_singleton
    linkageType: ''
    returnType: void
    signature: void build_base_rel_tlists(PlannerInfo *root, List *final_tlist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:307,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:307,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:311,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:313,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:316,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:321,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:332,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:334,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:337,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:340,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:343,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:345,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:349,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:349,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - root
    - vars
    - where_needed
    argTypes:
    - PlannerInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 351
    functionName: add_vars_to_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - elog
    - copyObject
    - IsA
    - Assert
    - lappend
    - find_placeholder_info
    - find_base_rel
    - lfirst
    - bms_add_members
    - bms_is_empty
    - bms_is_subset
    - nodeTag
    linkageType: ''
    returnType: void
    signature: "void add_vars_to_targetlist(PlannerInfo *root, List *vars,\n\t\t\t\t\t
      \  Relids where_needed)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:311,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:313,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:316,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:321,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:332,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:334,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:337,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:340,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:343,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:345,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:349,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:349,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 350
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 120
    functionsReached:
    - elog
    - copyObject
    - Assert
    - lappend
    - find_placeholder_info
    - lfirst
    - find_base_rel
    - bms_add_members
    - IsA
    - bms_is_subset
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void foreach(temp, vars)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:378,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:378,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:382,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:384,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:387,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:390,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:392,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:394,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:397,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:400,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:402,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:406,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:406,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - root
    - vars
    - where_needed
    argTypes:
    - PlannerInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 408
    functionName: add_vars_to_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 0
    functionsReached:
    - elog
    - IsA
    - Assert
    - find_placeholder_info
    - find_base_rel
    - lfirst
    - bms_add_members
    - bms_is_empty
    - bms_is_subset
    - nodeTag
    linkageType: ''
    returnType: void
    signature: "void add_vars_to_attr_needed(PlannerInfo *root, List *vars,\n\t\t\t\t\t\tRelids
      where_needed)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:382,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:384,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:387,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:390,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:392,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:394,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:397,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:400,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:402,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:406,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:406,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 407
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 120
    functionsReached:
    - elog
    - Assert
    - find_placeholder_info
    - lfirst
    - find_base_rel
    - bms_add_members
    - IsA
    - bms_is_subset
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void foreach(temp, vars)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:443,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:459,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:459,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:460,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:460,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:461,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:463,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:464,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:476,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:482,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:482,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:489,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:490,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:493,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:495,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:497,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:515,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:517,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:539,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:549,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:584,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:598,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:602,1
    - Dst: collations_agree_on_equality
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:603,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:613,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:625,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:644,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:651,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:651,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:654,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:667,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:669,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:670,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:677,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:679,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:681,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 79
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 686
    functionName: remove_useless_groupby_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - get_sortgroupclause_tle
    - get_mergejoin_opfamilies
    - bms_difference
    - bms_add_member
    - foreach
    - collations_agree_on_equality
    - Assert
    - bms_is_member
    - foreach_node
    - bms_subset_compare
    - list_length
    - list_member_oid
    - IsA
    - lappend
    - lfirst
    - bms_membership
    - lfirst_node
    - palloc0_array
    - palloc
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: void remove_useless_groupby_columns(PlannerInfo *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:598,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:602,1
    - Dst: collations_agree_on_equality
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:603,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 605
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 121
    functionsReached:
    - lfirst
    - list_member_oid
    - collations_agree_on_equality
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, groupbycols[relid])
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:740,1
    - Dst: is_partial_agg_memory_risky
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:747,1
    - Dst: create_agg_clause_infos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:754,1
    - Dst: create_grouping_expr_infos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:766,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 767
    functionName: setup_eager_aggregation
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - create_grouping_expr_infos
    - create_agg_clause_infos
    - is_partial_agg_memory_risky
    - bms_membership
    linkageType: ''
    returnType: void
    signature: void setup_eager_aggregation(PlannerInfo *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:785,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 780
    functionDepth: 1
    functionLinenumber: 780
    functionLinenumberEnd: 794
    functionName: is_partial_agg_memory_risky
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - foreach
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: bool is_partial_agg_memory_risky(PlannerInfo *root)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:811,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:812,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:814,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:828,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:833,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:834,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:840,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:846,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:853,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:855,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:859,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:862,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:869,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:881,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:887,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:893,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:894,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:901,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:906,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:909,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:918,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:919,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 921
    functionName: create_agg_clause_infos
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - pull_varnos
    - list_free
    - Assert
    - list_append_unique
    - castNode
    - list_free_deep
    - makeNode
    - lfirst
    - pull_var_clause
    - list_concat
    - contain_volatile_functions
    - get_func_leakproof
    - bms_add_members
    - IsA
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void create_agg_clause_infos(PlannerInfo *root)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:840,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:846,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:853,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:855,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:859,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:862,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:869,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:881,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:887,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:893,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:894,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:901,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:906,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 907
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 122
    functionsReached:
    - pull_varnos
    - Assert
    - list_append_unique
    - castNode
    - makeNode
    - lfirst
    - contain_volatile_functions
    - get_func_leakproof
    - bms_add_members
    - IsA
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tlist_exprs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:941,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:943,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:945,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:946,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:950,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:955,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:968,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:968,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:970,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:971,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:974,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:986,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:987,1
    - Dst: OidFunctionCall1Coll
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:987,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:988,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:989,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:992,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:993,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:994,1
    - Dst: get_eclass_for_sortgroupclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:994,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1002,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1003,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1004,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1007,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1008,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1012,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 1014
    functionName: create_grouping_expr_infos
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - copyObject
    - lfirst_int
    - exprType
    - get_sortgroupclause_tle
    - DatumGetBool
    - foreach
    - Assert
    - OidIsValid
    - get_opfamily_proc
    - ObjectIdGetDatum
    - OidFunctionCall1Coll
    - lookup_type_cache
    - lappend
    - get_eclass_for_sortgroupclause
    - exprCollation
    - lfirst
    - lfirst_node
    - makeNode
    - IsA
    linkageType: ''
    returnType: void
    signature: void create_grouping_expr_infos(PlannerInfo *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1002,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1003,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1004,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1007,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1008,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1000
    functionDepth: 1
    functionLinenumber: 1000
    functionLinenumberEnd: 1013
    functionName: forthree
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - copyObject
    - lfirst_int
    - lappend
    - makeNode
    - lfirst
    linkageType: ''
    returnType: void
    signature: void forthree(lc1, exprs, lc2, sortgrouprefs, lc3, ecs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1033,1
    - Dst: get_ordering_op_properties
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1037,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1039,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1043,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1051,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1055,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1056,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1058,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1060,1
    - Dst: get_eclass_for_sort_expr
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1064,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - root
    - sgc
    - expr
    argTypes:
    - PlannerInfo*
    - SortGroupClause*
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1021
    functionDepth: 1
    functionLinenumber: 1021
    functionLinenumberEnd: 1067
    functionName: get_eclass_for_sortgroupclause
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - elog
    - get_eclass_for_sort_expr
    - get_ordering_op_properties
    - get_opfamily_member_for_cmptype
    - get_mergejoin_opfamilies
    - exprCollation
    - OidIsValid
    linkageType: ''
    returnType: EquivalenceClass
    signature: "EquivalenceClass *\nget_eclass_for_sortgroupclause(PlannerInfo *root,
      SortGroupClause *sgc,\n\t\t\t\t\t\t\t   Expr *expr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1115,1
    - Dst: extract_lateral_references
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1139,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1141
    functionName: find_lateral_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - extract_lateral_references
    linkageType: ''
    returnType: void
    signature: void find_lateral_references(PlannerInfo *root)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1158,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1160,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1162,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1164,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1169,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1180,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1182,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1183,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1190,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1197,1
    - Dst: preprocess_phv_expression
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1208,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1209,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1212,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1221,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1227,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - root
    - brel
    - rtindex
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1143
    functionDepth: 3
    functionLinenumber: 1143
    functionLinenumberEnd: 1234
    functionName: extract_lateral_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - add_vars_to_targetlist
    - copyObject
    - list_free
    - Assert
    - lappend
    - pull_vars_of_level
    - lfirst
    - preprocess_phv_expression
    - IncrementVarSublevelsUp
    - IsA
    - bms_make_singleton
    linkageType: ''
    returnType: void
    signature: void extract_lateral_references(PlannerInfo *root, RelOptInfo *brel,
      Index rtindex)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1180,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1182,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1183,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1190,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1197,1
    - Dst: preprocess_phv_expression
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1208,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1209,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1178
    functionDepth: 3
    functionLinenumber: 1178
    functionLinenumberEnd: 1210
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 123
    functionsReached:
    - copyObject
    - Assert
    - lappend
    - lfirst
    - preprocess_phv_expression
    - IncrementVarSublevelsUp
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, vars)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1271,1
    - Dst: add_vars_to_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1273,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1244
    functionDepth: 2
    functionLinenumber: 1244
    functionLinenumberEnd: 1275
    functionName: rebuild_lateral_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - add_vars_to_attr_needed
    - bms_make_singleton
    linkageType: ''
    returnType: void
    signature: void rebuild_lateral_attr_needed(PlannerInfo *root)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1308,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1317,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1319,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1321,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1326,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1329,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1332,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1339,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1344,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1360,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1362,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1378,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1379,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1379,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1381,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1384,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1387,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1390,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1397,1
    - Dst: find_base_rel_ignore_join
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1399,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1403,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1453,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1454,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1479,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1479,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1490,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1492,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 75
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1282
    functionDepth: 1
    functionLinenumber: 1282
    functionLinenumberEnd: 1495
    functionName: create_lateral_join_info
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - foreach
    - Assert
    - bms_is_empty
    - bms_is_member
    - bms_copy
    - find_placeholder_info
    - lfirst
    - find_base_rel
    - bms_next_member
    - bms_add_members
    - bms_intersect
    - IsA
    - bms_add_member
    - find_base_rel_ignore_join
    - bms_get_singleton_member
    linkageType: ''
    returnType: void
    signature: void create_lateral_join_info(PlannerInfo *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1541,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1542,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1549,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1557,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1557,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1562,1
    - Dst: deconstruct_distribute
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1564,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1575,1
    - Dst: deconstruct_distribute_oj_quals
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1578,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1521
    functionDepth: 1
    functionLinenumber: 1521
    functionLinenumberEnd: 1586
    functionName: deconstruct_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - linitial_node
    - Assert
    - deconstruct_distribute
    - list_free_deep
    - deconstruct_distribute_oj_quals
    - lfirst
    - deconstruct_recurse
    - bms_equal
    - IsA
    - bms_union
    linkageType: ''
    returnType: List
    signature: 'List *

      deconstruct_jointree(PlannerInfo *root)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1562,1
    - Dst: deconstruct_distribute
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1560
    functionDepth: 1
    functionLinenumber: 1560
    functionLinenumberEnd: 1565
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 124
    functionsReached:
    - deconstruct_distribute
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, item_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1575,1
    - Dst: deconstruct_distribute_oj_quals
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1573
    functionDepth: 1
    functionLinenumber: 1573
    functionLinenumberEnd: 1579
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 124
    functionsReached:
    - lfirst
    - deconstruct_distribute_oj_quals
    linkageType: ''
    returnType: void
    signature: void foreach(lc, item_list)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1612,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1615,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1619,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1624,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1627,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1630,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1633,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1635,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1654,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1655,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1661,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1661,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1665,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1666,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1669,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1672,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1673,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1675,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1685,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1688,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1704,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1708,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1709,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1713,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1715,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1726,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1728,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1731,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1735,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1736,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1740,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1743,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1745,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1751,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1753,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1755,1
    - Dst: mark_rels_nulled_by_join
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1757,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1760,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1770,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1774,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1775,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1779,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1781,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1784,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1785,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1794,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1795,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1798,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1800,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1801,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1805,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1806,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1807,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1809,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1810,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1814,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1816,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1818,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1820,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1822,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1823,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1825,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1827,1
    - Dst: mark_rels_nulled_by_join
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1829,1
    - Dst: mark_rels_nulled_by_join
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1831,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1833,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1842,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1855,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1855,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1857,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1857,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1861,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1870,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1871,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1874,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1875,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1878,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1883,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1884,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1889,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 137
    argCount: 5
    argNames:
    - root
    - jtnode
    - parent_domain
    - parent_jtitem
    - item_list
    argTypes:
    - PlannerInfo*
    - Node*
    - JoinDomain*
    - JoinTreeItem*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1892
      start: 1603
    functionDepth: 1
    functionLinenumber: 1603
    functionLinenumberEnd: 1892
    functionName: deconstruct_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - mark_rels_nulled_by_join
    - bms_copy
    - llast
    - list_concat
    - bms_add_members
    - bms_add_member
    - nodeTag
    - bms_union
    - elog
    - foreach
    - Assert
    - linitial
    - list_length
    - palloc0_object
    - lappend
    - lfirst
    - deconstruct_recurse
    - list_make1
    - bms_make_singleton
    - makeNode
    - list_make2
    - IsA
    linkageType: ''
    returnType: List
    signature: "List *\ndeconstruct_recurse(PlannerInfo *root, Node *jtnode,\n\t\t\t\t\tJoinDomain
      *parent_domain,\n\t\t\t\t\tJoinTreeItem *parent_jtitem,\n\t\t\t\t\tList **item_list)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1906,1
    - Dst: process_security_barrier_quals
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1912,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1916,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1924,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1936,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1945,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1959,1
    - Dst: make_outerjoininfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1971,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1982,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2011,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2012,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2018,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2031,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2035,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2036,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - root
    - jtitem
    argTypes:
    - PlannerInfo*
    - JoinTreeItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 1901
    functionDepth: 1
    functionLinenumber: 1901
    functionLinenumberEnd: 2038
    functionName: deconstruct_distribute
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - elog
    - make_outerjoininfo
    - lappend
    - distribute_quals_to_rels
    - list_concat
    - bms_add_members
    - IsA
    - nodeTag
    - bms_union
    - process_security_barrier_quals
    linkageType: ''
    returnType: void
    signature: void deconstruct_distribute(PlannerInfo *root, JoinTreeItem *jtitem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2067,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2069,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2077,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - root
    - rti
    - jtitem
    argTypes:
    - PlannerInfo*
    - int
    - JoinTreeItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2093
      start: 2053
    functionDepth: 1
    functionLinenumber: 2053
    functionLinenumberEnd: 2093
    functionName: process_security_barrier_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - distribute_quals_to_rels
    - lfirst
    - foreach
    - Assert
    linkageType: ''
    returnType: void
    signature: "void process_security_barrier_quals(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \  int rti, JoinTreeItem *jtitem)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2119,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2119,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - root
    - ojrelid
    - lower_rels
    argTypes:
    - PlannerInfo*
    - Index
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2124
      start: 2103
    functionDepth: 1
    functionLinenumber: 2103
    functionLinenumberEnd: 2124
    functionName: mark_rels_nulled_by_join
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - bms_next_member
    - bms_is_member
    - bms_add_member
    - Assert
    linkageType: ''
    returnType: void
    signature: "void mark_rels_nulled_by_join(PlannerInfo *root, Index ojrelid,\n\t\t\t\t\t\t
      Relids lower_rels)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2166,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2183,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2185,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2187,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2189,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2190,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2193,1
    - Dst: LCS_asString
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2194,1
    - Dst: compute_semijoin_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2207,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2212,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2213,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2221,1
    - Dst: find_nonnullable_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2227,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2230,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2236,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2242,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2242,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2255,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2267,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2268,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2269,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2271,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2273,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2275,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2278,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2279,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2281,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2283,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2285,1
    - Dst: contain_placeholder_references_to
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2298,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2322,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2324,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2327,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2330,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2332,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2335,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2340,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2341,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2344,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2347,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2369,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2371,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2372,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2381,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2383,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2386,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2394,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2398,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2411,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2413,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2417,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2421,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2430,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2431,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2432,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2433,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2436,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2436,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2437,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2439,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2439,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2453,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2454,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2462,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2464,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2466,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2468,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2469,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2471,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 98
    argCount: 7
    argNames:
    - root
    - left_rels
    - right_rels
    - inner_join_rels
    - jointype
    - ojrelid
    - clause
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    - Relids
    - JoinType
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2476
      start: 2145
    functionDepth: 1
    functionLinenumber: 2145
    functionLinenumberEnd: 2476
    functionName: make_outerjoininfo
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - pull_varnos
    - bms_del_member
    - find_nonnullable_rels
    - errcode
    - bms_copy
    - bms_add_members
    - bms_intersect
    - bms_add_member
    - bms_is_subset
    - bms_union
    - contain_placeholder_references_to
    - foreach
    - LCS_asString
    - Assert
    - bms_is_member
    - errmsg
    - ereport
    - lfirst
    - bms_int_members
    - bms_del_members
    - makeNode
    - bms_overlap
    - compute_semijoin_info
    - bms_is_empty
    linkageType: ''
    returnType: SpecialJoinInfo
    signature: "SpecialJoinInfo *\nmake_outerjoininfo(PlannerInfo *root,\n\t\t\t\t
      \  Relids left_rels, Relids right_rels,\n\t\t\t\t   Relids inner_join_rels,\n\t\t\t\t
      \  JoinType jointype, Index ojrelid,\n\t\t\t\t   List *clause)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2536,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2546,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2547,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2550,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2551,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2552,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2559,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2569,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2570,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2571,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2572,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2573,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2574,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2577,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2578,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2584,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2590,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2591,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2592,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2596,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2597,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2598,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2601,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2602,1
    - Dst: op_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2616,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2617,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2623,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2630,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2631,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2631,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2641,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 63
    argCount: 3
    argNames:
    - root
    - sjinfo
    - clause
    argTypes:
    - PlannerInfo*
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2652
      start: 2485
    functionDepth: 1
    functionLinenumber: 2485
    functionLinenumberEnd: 2652
    functionName: compute_semijoin_info
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - pull_varnos
    - copyObject
    - exprType
    - get_mergejoin_opfamilies
    - lappend_oid
    - bms_is_subset
    - bms_union
    - op_hashjoinable
    - linitial
    - OidIsValid
    - list_length
    - IsA
    - lappend
    - op_mergejoinable
    - lfirst
    - get_commutator
    - lsecond
    - contain_volatile_functions
    - bms_overlap
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: void compute_semijoin_info(PlannerInfo *root, SpecialJoinInfo *sjinfo,
      List *clause)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2536,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2546,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2547,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2550,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2551,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2552,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2559,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2569,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2570,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2571,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2572,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2573,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2574,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2577,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2578,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2584,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2590,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2591,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2592,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2596,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2597,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2598,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2601,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2602,1
    - Dst: op_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2616,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2617,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2623,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2630,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2631,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2631,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2632
      start: 2534
    functionDepth: 1
    functionLinenumber: 2534
    functionLinenumberEnd: 2632
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 127
    functionsReached:
    - pull_varnos
    - copyObject
    - exprType
    - get_mergejoin_opfamilies
    - lappend_oid
    - bms_is_subset
    - bms_union
    - op_hashjoinable
    - linitial
    - OidIsValid
    - list_length
    - IsA
    - lappend
    - op_mergejoinable
    - lfirst
    - get_commutator
    - lsecond
    - contain_volatile_functions
    - bms_overlap
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clause)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2674,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2675,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2686,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2720,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2721,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2730,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2731,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2747,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2768,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2768,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2770,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2800,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2802,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2803,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2808,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2809,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2813,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2815,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2818,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2841,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2847,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2865,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2867,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2868,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2873,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2879,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 54
    argCount: 3
    argNames:
    - root
    - jtitems
    - jtitem
    argTypes:
    - PlannerInfo*
    - List*
    - JoinTreeItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2890
      start: 2663
    functionDepth: 1
    functionLinenumber: 2663
    functionLinenumberEnd: 2890
    functionName: deconstruct_distribute_oj_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - bms_del_member
    - Assert
    - remove_nulling_relids
    - bms_is_member
    - bms_copy
    - distribute_quals_to_rels
    - add_nulling_relids
    - lfirst
    - bms_equal
    - bms_is_empty
    - bms_add_member
    - bms_union
    - bms_make_singleton
    linkageType: ''
    returnType: void
    signature: "void deconstruct_distribute_oj_quals(PlannerInfo *root,\n\t\t\t\t\t\t\t\tList
      *jtitems,\n\t\t\t\t\t\t\t\tJoinTreeItem *jtitem)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2747,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2768,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2768,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2770,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2800,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2802,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2803,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2808,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2809,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2813,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2815,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2818,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2841,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2847,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2865,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2867,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2868,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2873,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2874
      start: 2745
    functionDepth: 1
    functionLinenumber: 2745
    functionLinenumberEnd: 2874
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 127
    functionsReached:
    - bms_del_member
    - Assert
    - bms_is_member
    - bms_copy
    - distribute_quals_to_rels
    - lfirst
    - bms_union
    - bms_equal
    - bms_add_member
    - add_nulling_relids
    - bms_make_singleton
    linkageType: ''
    returnType: void
    signature: void foreach(lc, jtitems)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2922,1
    - Dst: distribute_qual_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 13
    argNames:
    - root
    - clauses
    - jtitem
    - sjinfo
    - security_level
    - qualscope
    - ojscope
    - outerjoin_nonnullable
    - incompatible_relids
    - allow_equivalence
    - has_clone
    - is_clone
    - postponed_oj_qual_list
    argTypes:
    - PlannerInfo*
    - List*
    - JoinTreeItem*
    - SpecialJoinInfo*
    - Index
    - Relids
    - Relids
    - Relids
    - Relids
    - bool
    - bool
    - bool
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2937
      start: 2904
    functionDepth: 1
    functionLinenumber: 2904
    functionLinenumberEnd: 2937
    functionName: distribute_quals_to_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 4
    functionsReached:
    - lfirst
    - distribute_qual_to_rels
    linkageType: ''
    returnType: void
    signature: "void distribute_quals_to_rels(PlannerInfo *root, List *clauses,\n\t\t\t\t\t\t
      JoinTreeItem *jtitem,\n\t\t\t\t\t\t SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t Index
      security_level,\n\t\t\t\t\t\t Relids qualscope,\n\t\t\t\t\t\t Relids ojscope,\n\t\t\t\t\t\t
      Relids outerjoin_nonnullable,\n\t\t\t\t\t\t Relids incompatible_relids,\n\t\t\t\t\t\t
      bool allow_equivalence,\n\t\t\t\t\t\t bool has_clone,\n\t\t\t\t\t\t bool is_clone,\n\t\t\t\t\t\t
      List **postponed_oj_qual_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2922,1
    - Dst: distribute_qual_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2936
      start: 2920
    functionDepth: 1
    functionLinenumber: 2920
    functionLinenumberEnd: 2936
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 127
    functionsReached:
    - lfirst
    - distribute_qual_to_rels
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauses)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3006,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3020,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3024,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3025,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3028,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3030,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3039,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3041,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3048,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3049,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3071,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3076,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3079,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3082,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3096,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3097,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3099,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3139,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3174,1
    - Dst: check_redundant_nullability_qual
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3190,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3206,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3238,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3240,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3247,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3250,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3251,1
    - Dst: check_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3259,1
    - Dst: process_equivalence
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3297,1
    - Dst: initialize_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3301,1
    - Dst: initialize_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3309,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3310,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3312,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3316,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3320,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3324,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3326,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3330,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3334,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3341,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3345,1
    - Dst: initialize_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3354,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3359,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 90
    argCount: 13
    argNames:
    - root
    - clause
    - jtitem
    - sjinfo
    - security_level
    - qualscope
    - ojscope
    - outerjoin_nonnullable
    - incompatible_relids
    - allow_equivalence
    - has_clone
    - is_clone
    - postponed_oj_qual_list
    argTypes:
    - PlannerInfo*
    - Node*
    - JoinTreeItem*
    - SpecialJoinInfo*
    - Index
    - Relids
    - Relids
    - Relids
    - Relids
    - bool
    - bool
    - bool
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3360
      start: 2982
    functionDepth: 2
    functionLinenumber: 2982
    functionLinenumberEnd: 3360
    functionName: distribute_qual_to_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - pull_varnos
    - add_vars_to_targetlist
    - bms_copy
    - pull_var_clause
    - bms_intersect
    - check_mergejoinable
    - bms_is_subset
    - elog
    - Assert
    - linitial
    - make_restrictinfo
    - list_free
    - process_equivalence
    - lappend
    - initialize_mergeclause_eclasses
    - bms_membership
    - check_redundant_nullability_qual
    - makeNode
    - contain_volatile_functions
    - distribute_restrictinfo_to_rels
    - bms_overlap
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: "void distribute_qual_to_rels(PlannerInfo *root, Node *clause,\n\t\t\t\t\t\tJoinTreeItem
      *jtitem,\n\t\t\t\t\t\tSpecialJoinInfo *sjinfo,\n\t\t\t\t\t\tIndex security_level,\n\t\t\t\t\t\tRelids
      qualscope,\n\t\t\t\t\t\tRelids ojscope,\n\t\t\t\t\t\tRelids outerjoin_nonnullable,\n\t\t\t\t\t\tRelids
      incompatible_relids,\n\t\t\t\t\t\tbool allow_equivalence,\n\t\t\t\t\t\tbool
      has_clone,\n\t\t\t\t\t\tbool is_clone,\n\t\t\t\t\t\tList **postponed_oj_qual_list)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_forced_null_var
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3379,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3392,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3394,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3402,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - root
    - clause
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3407
      start: 3372
    functionDepth: 1
    functionLinenumber: 3372
    functionLinenumberEnd: 3407
    functionName: check_redundant_nullability_qual
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - bms_is_member
    - lfirst
    - find_forced_null_var
    - foreach
    linkageType: ''
    returnType: bool
    signature: bool check_redundant_nullability_qual(PlannerInfo *root, Node *clause)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3424,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3424,1
    - Dst: restriction_is_always_true
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3444,1
    - Dst: restriction_is_always_false
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3457,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3462,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3463,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3478,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3481,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - root
    - relid
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - Index
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3483
      start: 3417
    functionDepth: 1
    functionLinenumber: 3417
    functionLinenumberEnd: 3483
    functionName: add_base_clause_to_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 0
    functionsReached:
    - make_restrictinfo
    - bms_membership
    - Assert
    - makeBoolConst
    - lappend
    - find_base_rel
    - Min
    - restriction_is_always_true
    - restriction_is_always_false
    linkageType: ''
    returnType: void
    signature: "void add_base_clause_to_rel(PlannerInfo *root, Index relid,\n\t\t\t\t\t
      \  RestrictInfo *restrictinfo)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3506,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3521,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3529,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3529,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3535,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3537,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3539,1
    - Dst: restriction_is_always_true
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3542,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - root
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3548
      start: 3492
    functionDepth: 2
    functionLinenumber: 3492
    functionLinenumberEnd: 3548
    functionName: restriction_is_always_true
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - foreach
    - Assert
    - expr_is_nonnullable
    - lfirst
    - is_orclause
    - restriction_is_always_true
    - IsA
    - restriction_is_or_clause
    linkageType: ''
    returnType: bool
    signature: "bool restriction_is_always_true(PlannerInfo *root,\n\t\t\t\t\t\t   RestrictInfo
      *restrictinfo)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3571,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3586,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3594,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3594,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3605,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3607,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3609,1
    - Dst: restriction_is_always_false
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3610,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - root
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3617
      start: 3557
    functionDepth: 2
    functionLinenumber: 3557
    functionLinenumberEnd: 3617
    functionName: restriction_is_always_false
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - foreach
    - restriction_is_always_false
    - Assert
    - expr_is_nonnullable
    - lfirst
    - is_orclause
    - IsA
    - restriction_is_or_clause
    linkageType: ''
    returnType: bool
    signature: "bool restriction_is_always_false(PlannerInfo *root,\n\t\t\t\t\t\t\tRestrictInfo
      *restrictinfo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3634,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3638,1
    - Dst: add_base_clause_to_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3644,1
    - Dst: check_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3657,1
    - Dst: check_memoizable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3664,1
    - Dst: add_join_clause_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3669,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - root
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3680
      start: 3628
    functionDepth: 2
    functionLinenumber: 3628
    functionLinenumberEnd: 3680
    functionName: distribute_restrictinfo_to_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 5
    functionsReached:
    - elog
    - check_hashjoinable
    - add_base_clause_to_rel
    - check_memoizable
    - add_join_clause_to_rels
    - bms_is_empty
    - bms_get_singleton_member
    linkageType: ''
    returnType: void
    signature: "void distribute_restrictinfo_to_rels(PlannerInfo *root,\n\t\t\t\t\t\t\t\tRestrictInfo
      *restrictinfo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3732,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3735,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3736,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3743,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3750,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3751,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3763,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3764,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3764,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3772,1
    - Dst: get_join_domain_min_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3775,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3785,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3812,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3814,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3819,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3820,1
    - Dst: check_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3828,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3839,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 8
    argNames:
    - root
    - opno
    - collation
    - item1
    - item2
    - qualscope
    - security_level
    - both_const
    argTypes:
    - PlannerInfo*
    - Oid
    - Oid
    - Expr*
    - Expr*
    - Relids
    - Index
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3842
      start: 3713
    functionDepth: 3
    functionLinenumber: 3713
    functionLinenumberEnd: 3842
    functionName: process_implied_equality
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 0
    functionsReached:
    - eval_const_expressions
    - pull_varnos
    - make_restrictinfo
    - add_vars_to_targetlist
    - copyObject
    - check_mergejoinable
    - get_join_domain_min_rels
    - list_free
    - Assert
    - bms_is_empty
    - pull_var_clause
    - make_opclause
    - distribute_restrictinfo_to_rels
    - IsA
    - bms_is_subset
    - DatumGetBool
    - bms_membership
    linkageType: ''
    returnType: RestrictInfo
    signature: "RestrictInfo *\nprocess_implied_equality(PlannerInfo *root,\n\t\t\t\t\t\t
      Oid opno,\n\t\t\t\t\t\t Oid collation,\n\t\t\t\t\t\t Expr *item1,\n\t\t\t\t\t\t
      Expr *item2,\n\t\t\t\t\t\t Relids qualscope,\n\t\t\t\t\t\t Index security_level,\n\t\t\t\t\t\t
      bool both_const)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3873,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3876,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3877,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3884,1
    - Dst: check_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3896,1
    - Dst: check_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3897,1
    - Dst: check_memoizable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 7
    argNames:
    - root
    - opno
    - collation
    - item1
    - item2
    - qualscope
    - security_level
    argTypes:
    - PlannerInfo*
    - Oid
    - Oid
    - Expr*
    - Expr*
    - Relids
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3901
      start: 3857
    functionDepth: 1
    functionLinenumber: 3857
    functionLinenumberEnd: 3901
    functionName: build_implied_join_equality
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 0
    functionsReached:
    - make_restrictinfo
    - check_hashjoinable
    - copyObject
    - check_memoizable
    - make_opclause
    - check_mergejoinable
    linkageType: ''
    returnType: RestrictInfo
    signature: "RestrictInfo *\nbuild_implied_join_equality(PlannerInfo *root,\n\t\t\t\t\t\t\tOid
      opno,\n\t\t\t\t\t\t\tOid collation,\n\t\t\t\t\t\t\tExpr *item1,\n\t\t\t\t\t\t\tExpr
      *item2,\n\t\t\t\t\t\t\tRelids qualscope,\n\t\t\t\t\t\t\tIndex security_level)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3929,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3933,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3937,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3939,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3942,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3944,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3945,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - root
    - domain_relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3949
      start: 3926
    functionDepth: 1
    functionLinenumber: 3926
    functionLinenumberEnd: 3949
    functionName: get_join_domain_min_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - bms_del_members
    - foreach
    - bms_is_member
    - bms_copy
    - lfirst
    - bms_equal
    linkageType: ''
    returnType: Relids
    signature: Relids get_join_domain_min_rels(PlannerInfo *root, Relids domain_relids)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3985,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3987,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3992,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3994,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3998,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4000,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4007,1
    - Dst: add_vars_to_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4010,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4011,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4015
      start: 3960
    functionDepth: 2
    functionLinenumber: 3960
    functionLinenumberEnd: 4015
    functionName: rebuild_joinclause_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - foreach
    - list_free
    - bms_is_member
    - lfirst
    - pull_var_clause
    - add_vars_to_attr_needed
    - bms_intersect
    - bms_add_member
    - bms_membership
    linkageType: ''
    returnType: void
    signature: void rebuild_joinclause_attr_needed(PlannerInfo *root)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4038,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4040,1
    - Dst: match_eclasses_to_foreign_key_col
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4085,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4103,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4105,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4111,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4112,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4114,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4115,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4118,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4120,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4122,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4124,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4136,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4153,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4154,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4157,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4175,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 58
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4179
      start: 4032
    functionDepth: 2
    functionLinenumber: 4032
    functionLinenumberEnd: 4179
    functionName: match_foreign_keys_to_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - match_eclasses_to_foreign_key_col
    - foreach
    - get_leftop
    - get_rightop
    - OidIsValid
    - lappend
    - lfirst
    - get_commutator
    - list_length
    - IsA
    linkageType: ''
    returnType: void
    signature: void match_foreign_keys_to_quals(PlannerInfo *root)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4206,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4208,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4212,1
    - Dst: op_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4214,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4214,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4215,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - restrictinfo
    argTypes:
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4223
      start: 4197
    functionDepth: 2
    functionLinenumber: 4197
    functionLinenumberEnd: 4223
    functionName: check_mergejoinable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 3
    functionsReached:
    - exprType
    - linitial
    - get_mergejoin_opfamilies
    - is_opclause
    - op_mergejoinable
    - contain_volatile_functions
    - list_length
    linkageType: ''
    returnType: void
    signature: void check_mergejoinable(RestrictInfo *restrictinfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4243,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4245,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4249,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4251,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4251,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4252,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - restrictinfo
    argTypes:
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4254
      start: 4234
    functionDepth: 2
    functionLinenumber: 4234
    functionLinenumberEnd: 4254
    functionName: check_hashjoinable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - op_hashjoinable
    - exprType
    - linitial
    - is_opclause
    - contain_volatile_functions
    - list_length
    linkageType: ''
    returnType: void
    signature: void check_hashjoinable(RestrictInfo *restrictinfo)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4272,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4274,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4277,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4277,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4279,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4282,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4282,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4285,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4285,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4292,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4295,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:4295,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - restrictinfo
    argTypes:
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4297
      start: 4262
    functionDepth: 2
    functionLinenumber: 4262
    functionLinenumberEnd: 4297
    functionName: check_memoizable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - exprType
    - linitial
    - OidIsValid
    - is_opclause
    - lsecond
    - list_length
    - lookup_type_cache
    linkageType: ''
    returnType: void
    signature: void check_memoizable(RestrictInfo *restrictinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_recombination.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - root
    - tour
    - num_gene
    argTypes:
    - PlannerInfo*
    - Gene*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 60
    functionName: init_tour
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_recombination.c
    functionUses: 0
    functionsReached:
    - geqo_randint
    linkageType: ''
    returnType: void
    signature: void init_tour(PlannerInfo *root, Gene *tour, int num_gene)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_recombination.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - root
    - num_gene
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 82
    functionName: alloc_city_table
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_recombination.c
    functionUses: 0
    functionsReached:
    - palloc_array
    linkageType: ''
    returnType: City
    signature: 'City *

      alloc_city_table(PlannerInfo *root, int num_gene)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_recombination.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - city_table
    argTypes:
    - PlannerInfo*
    - City*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: free_city_table
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_recombination.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void free_city_table(PlannerInfo *root, City * city_table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:75,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:78,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:95,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:97,1
    - Dst: gimme_tree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:102,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:124,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:129,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - root
    - tour
    - num_gene
    argTypes:
    - PlannerInfo*
    - Gene*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 133
    functionName: geqo_eval
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c
    functionUses: 0
    functionsReached:
    - Assert
    - list_truncate
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - gimme_tree
    - AllocSetContextCreate
    - list_length
    linkageType: ''
    returnType: Cost
    signature: Cost geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetGeqoPrivateData
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:165,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:190,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:194,1
    - Dst: merge_clump
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:199,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:202,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:211,1
    - Dst: merge_clump
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:213,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:219,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - root
    - tour
    - num_gene
    argTypes:
    - PlannerInfo*
    - Gene*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 162
    functionDepth: 3
    functionLinenumber: 162
    functionLinenumberEnd: 223
    functionName: gimme_tree
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c
    functionUses: 1
    functionsReached:
    - list_length
    - linitial
    - merge_clump
    - lfirst
    - palloc_object
    - GetGeqoPrivateData
    - list_nth
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      gimme_tree(PlannerInfo *root, Gene *tour, int num_gene)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:211,1
    - Dst: merge_clump
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 214
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c
    functionUses: 133
    functionsReached:
    - lfirst
    - merge_clump
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clumps)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:247,1
    - Dst: desirable_join
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:250,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:260,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:267,1
    - Dst: generate_partitionwise_join_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:271,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:280,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:295,1
    - Dst: IS_GROUPED_REL
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:295,1
    - Dst: generate_grouped_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:297,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:298,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:304,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:307,1
    - Dst: merge_clump
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:314,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:325,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:328,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:330,1
    - Dst: list_insert_nth
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:335,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 5
    argNames:
    - root
    - clumps
    - new_clump
    - num_gene
    - force
    argTypes:
    - PlannerInfo*
    - List*
    - Clump*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 237
    functionDepth: 3
    functionLinenumber: 237
    functionLinenumberEnd: 338
    functionName: merge_clump
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c
    functionUses: 3
    functionsReached:
    - generate_useful_gather_paths
    - foreach_delete_current
    - list_length
    - Assert
    - pfree
    - lappend
    - generate_partitionwise_join_paths
    - generate_grouped_paths
    - merge_clump
    - list_insert_nth
    - IS_GROUPED_REL
    - lfirst
    - make_join_rel
    - set_cheapest
    - bms_equal
    - list_nth
    - desirable_join
    linkageType: ''
    returnType: List
    signature: "List *\nmerge_clump(PlannerInfo *root, List *clumps, Clump *new_clump,
      int num_gene,\n\t\t\tbool force)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:247,1
    - Dst: desirable_join
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:250,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:260,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:267,1
    - Dst: generate_partitionwise_join_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:271,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:280,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:295,1
    - Dst: IS_GROUPED_REL
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:295,1
    - Dst: generate_grouped_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:297,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:298,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:304,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:307,1
    - Dst: merge_clump
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:314,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 317
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c
    functionUses: 133
    functionsReached:
    - generate_useful_gather_paths
    - foreach_delete_current
    - Assert
    - pfree
    - generate_partitionwise_join_paths
    - generate_grouped_paths
    - merge_clump
    - IS_GROUPED_REL
    - lfirst
    - make_join_rel
    - set_cheapest
    - bms_equal
    - desirable_join
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clumps)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:351,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - root
    - outer_rel
    - inner_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 357
    functionName: desirable_join
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c
    functionUses: 2
    functionsReached:
    - have_join_order_restriction
    - have_relevant_joinclause
    linkageType: ''
    returnType: bool
    signature: "bool desirable_join(PlannerInfo *root,\n\t\t\t   RelOptInfo *outer_rel,
      RelOptInfo *inner_rel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_ox1.c:65,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_ox1.c:66,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 6
    argNames:
    - root
    - tour1
    - tour2
    - offspring
    - num_gene
    - city_table
    argTypes:
    - PlannerInfo*
    - Gene*
    - Gene*
    - Gene*
    - int
    - City*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 96
    functionName: ox1
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_ox1.c
    functionUses: 0
    functionsReached:
    - geqo_randint
    linkageType: ''
    returnType: void
    signature: "void ox1(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring,
      int num_gene,\n\tCity * city_table)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - root
    - chromo1
    - chromo2
    - string_length
    argTypes:
    - PlannerInfo*
    - Chromosome*
    - Chromosome*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 56
    functionName: geqo_copy
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_copy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void geqo_copy(PlannerInfo *root, Chromosome *chromo1, Chromosome
      *chromo2,\n\t\t  int string_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetGeqoPrivateData
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_random.c:21,1
    - Dst: pg_prng_fseed
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_random.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - seed
    argTypes:
    - PlannerInfo*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 18
    functionDepth: 4
    functionLinenumber: 18
    functionLinenumberEnd: 24
    functionName: geqo_set_seed
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_random.c
    functionUses: 0
    functionsReached:
    - GetGeqoPrivateData
    - pg_prng_fseed
    linkageType: ''
    returnType: void
    signature: void geqo_set_seed(PlannerInfo *root, double seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetGeqoPrivateData
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_random.c:29,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_random.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 26
    functionDepth: 3
    functionLinenumber: 26
    functionLinenumberEnd: 32
    functionName: geqo_rand
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_random.c
    functionUses: 0
    functionsReached:
    - GetGeqoPrivateData
    - pg_prng_double
    linkageType: ''
    returnType: double
    signature: double geqo_rand(PlannerInfo *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetGeqoPrivateData
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_random.c:37,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_random.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - root
    - upper
    - lower
    argTypes:
    - PlannerInfo*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 34
    functionDepth: 3
    functionLinenumber: 34
    functionLinenumberEnd: 44
    functionName: geqo_randint
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_random.c
    functionUses: 2
    functionsReached:
    - GetGeqoPrivateData
    - pg_prng_uint64_range
    linkageType: ''
    returnType: int
    signature: int geqo_randint(PlannerInfo *root, int upper, int lower)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GetPlannerExtensionId
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:105,1
    - Dst: SetPlannerInfoExtensionState
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:108,1
    - Dst: geqo_set_seed
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:115,1
    - Dst: gimme_pool_size
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:118,1
    - Dst: gimme_number_generations
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:119,1
    - Dst: alloc_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:125,1
    - Dst: random_init_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:128,1
    - Dst: sort_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:131,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:136,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:143,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:144,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:148,1
    - Dst: alloc_edge_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:151,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:154,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:157,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:160,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:163,1
    - Dst: alloc_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:164,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:167,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:170,1
    - Dst: alloc_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:171,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:174,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:177,1
    - Dst: alloc_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:178,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:181,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:184,1
    - Dst: alloc_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:185,1
    - Dst: geqo_selection
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:195,1
    - Dst: gimme_edge_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:199,1
    - Dst: gimme_tour
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:204,1
    - Dst: pmx
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:207,1
    - Dst: cx
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:210,1
    - Dst: geqo_mutation
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:215,1
    - Dst: px
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:219,1
    - Dst: ox1
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:222,1
    - Dst: ox2
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:225,1
    - Dst: geqo_eval
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:230,1
    - Dst: spread_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:233,1
    - Dst: print_gen
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:238,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:247,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:250,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:259,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:262,1
    - Dst: print_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:266,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:270,1
    - Dst: gimme_tree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:281,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:284,1
    - Dst: print_plan
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:288,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:292,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:293,1
    - Dst: free_edge_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:296,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:298,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:300,1
    - Dst: free_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:301,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:303,1
    - Dst: free_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:304,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:306,1
    - Dst: free_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:307,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:309,1
    - Dst: free_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:310,1
    - Dst: free_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:313,1
    - Dst: SetPlannerInfoExtensionState
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:316,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 80
    argCount: 3
    argNames:
    - root
    - number_of_rels
    - initial_rels
    argTypes:
    - PlannerInfo*
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 319
    functionName: geqo
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_main.c
    functionUses: 0
    functionsReached:
    - gimme_edge_table
    - alloc_pool
    - GetPlannerExtensionId
    - geqo_selection
    - cx
    - spread_chromo
    - geqo_mutation
    - free_chromo
    - elog
    - alloc_edge_table
    - alloc_city_table
    - free_edge_table
    - pmx
    - SetPlannerInfoExtensionState
    - geqo_set_seed
    - print_pool
    - print_plan
    - alloc_chromo
    - free_pool
    - ox2
    - gimme_tree
    - ox1
    - gimme_number_generations
    - gimme_tour
    - free_city_table
    - geqo_eval
    - random_init_pool
    - gimme_pool_size
    - px
    - print_gen
    - sort_pool
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      geqo(PlannerInfo *root, int number_of_rels, List *initial_rels)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pow
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:339,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - nr_rel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 350
    functionName: gimme_pool_size
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_main.c
    functionUses: 1
    functionsReached:
    - pow
    - ceil
    linkageType: ''
    returnType: int
    signature: int gimme_pool_size(int nr_rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pool_size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 367
    functionName: gimme_number_generations
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_main.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int gimme_number_generations(int pool_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - root
    - num_gene
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 70
    functionName: alloc_edge_table
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - palloc_array
    linkageType: ''
    returnType: Edge
    signature: 'Edge *

      alloc_edge_table(PlannerInfo *root, int num_gene)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - edge_table
    argTypes:
    - PlannerInfo*
    - Edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 82
    functionName: free_edge_table
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void free_edge_table(PlannerInfo *root, Edge *edge_table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gimme_edge
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:132,1
    - Dst: gimme_edge
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:133,1
    - Dst: gimme_edge
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:135,1
    - Dst: gimme_edge
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - root
    - tour1
    - tour2
    - num_gene
    - edge_table
    argTypes:
    - PlannerInfo*
    - Gene*
    - Gene*
    - int
    - Edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 141
    functionName: gimme_edge_table
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - gimme_edge
    linkageType: ''
    returnType: float
    signature: "float gimme_edge_table(PlannerInfo *root, Gene *tour1, Gene *tour2,\n\t\t\t\t
      int num_gene, Edge *edge_table)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: abs
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - root
    - gene1
    - gene2
    - edge_table
    argTypes:
    - PlannerInfo*
    - Gene
    - Gene
    - Edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 190
    functionName: gimme_edge
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - abs
    linkageType: ''
    returnType: int
    signature: int gimme_edge(PlannerInfo *root, Gene gene1, Gene gene2, Edge *edge_table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:208,1
    - Dst: remove_gene
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:217,1
    - Dst: gimme_gene
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:222,1
    - Dst: edge_failure
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - root
    - edge_table
    - new_gene
    - num_gene
    argTypes:
    - PlannerInfo*
    - Edge*
    - Gene*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 236
    functionName: gimme_tour
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - gimme_gene
    - edge_failure
    - geqo_randint
    - remove_gene
    linkageType: ''
    returnType: int
    signature: int gimme_tour(PlannerInfo *root, Edge *edge_table, Gene *new_gene,
      int num_gene)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: abs
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:261,1
    - Dst: abs
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:268,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - root
    - gene
    - edge
    - edge_table
    argTypes:
    - PlannerInfo*
    - Gene
    - Edge
    - Edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 280
    functionName: remove_gene
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - abs
    linkageType: ''
    returnType: void
    signature: void remove_gene(PlannerInfo *root, Gene gene, Edge edge, Edge *edge_table)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: abs
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:320,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:345,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:352,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:370,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - root
    - edge
    - edge_table
    argTypes:
    - PlannerInfo*
    - Edge
    - Edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 289
    functionDepth: 4
    functionLinenumber: 289
    functionLinenumberEnd: 372
    functionName: gimme_gene
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - elog
    - abs
    - geqo_randint
    linkageType: ''
    returnType: Gene
    signature: Gene gimme_gene(PlannerInfo *root, Edge edge, Edge *edge_table)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:414,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:431,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:436,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:452,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:470,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:475,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 5
    argNames:
    - root
    - gene
    - index
    - edge_table
    - num_gene
    argTypes:
    - PlannerInfo*
    - Gene*
    - int
    - Edge*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 380
    functionDepth: 4
    functionLinenumber: 380
    functionLinenumberEnd: 477
    functionName: edge_failure
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - elog
    - geqo_randint
    linkageType: ''
    returnType: Gene
    signature: Gene edge_failure(PlannerInfo *root, Gene *gene, int index, Edge *edge_table,
      int num_gene)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: linear_rand
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:61,1
    - Dst: linear_rand
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:62,1
    - Dst: linear_rand
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:71,1
    - Dst: geqo_copy
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:74,1
    - Dst: geqo_copy
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - root
    - momma
    - daddy
    - pool
    - bias
    argTypes:
    - PlannerInfo*
    - Chromosome*
    - Chromosome*
    - Pool*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 76
    functionName: geqo_selection
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c
    functionUses: 1
    functionsReached:
    - geqo_copy
    - linear_rand
    linkageType: ''
    returnType: void
    signature: "void geqo_selection(PlannerInfo *root, Chromosome *momma, Chromosome
      *daddy,\n\t\t\t   Pool *pool, double bias)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: geqo_rand
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:105,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - root
    - pool_size
    - bias
    argTypes:
    - PlannerInfo*
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 88
    functionDepth: 4
    functionLinenumber: 88
    functionLinenumberEnd: 112
    functionName: linear_rand
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c
    functionUses: 1
    functionsReached:
    - geqo_rand
    - sqrt
    linkageType: ''
    returnType: int
    signature: int linear_rand(PlannerInfo *root, int pool_size, double bias)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pool
    argTypes:
    - Pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 53
    functionName: avg_pool
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: double
    signature: double avg_pool(Pool *pool)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:79,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:81,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:82,1
    - Dst: fflush
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:85,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - fp
    - pool
    - start
    - stop
    argTypes:
    - FILE*
    - Pool*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 86
    functionName: print_pool
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c
    functionUses: 1
    functionsReached:
    - fflush
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_pool(FILE *fp, Pool *pool, int start, int stop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:102,1
    - Dst: avg_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:108,1
    - Dst: fflush
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - fp
    - pool
    - generation
    argTypes:
    - FILE*
    - Pool*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 111
    functionName: print_gen
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c
    functionUses: 1
    functionsReached:
    - avg_pool
    - fflush
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_gen(FILE *fp, Pool *pool, int generation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:120,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:124,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:126,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:127,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:130,1
    - Dst: fflush
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - fp
    - edge_table
    - num_gene
    argTypes:
    - FILE*
    - Edge*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 133
    functionName: print_edge_table
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c
    functionUses: 0
    functionsReached:
    - fflush
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_edge_table(FILE *fp, Edge *edge_table, int num_gene)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_ox2.c:68,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_ox2.c:73,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 6
    argNames:
    - root
    - tour1
    - tour2
    - offspring
    - num_gene
    - city_table
    argTypes:
    - PlannerInfo*
    - Gene*
    - Gene*
    - Gene*
    - int
    - City*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 50
    functionDepth: 4
    functionLinenumber: 50
    functionLinenumberEnd: 113
    functionName: ox2
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_ox2.c
    functionUses: 1
    functionsReached:
    - geqo_randint
    linkageType: ''
    returnType: void
    signature: void ox2(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring,
      int num_gene, City * city_table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_mutation.c:48,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_mutation.c:54,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_mutation.c:55,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_mutation.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - root
    - tour
    - num_gene
    argTypes:
    - PlannerInfo*
    - Gene*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 43
    functionDepth: 4
    functionLinenumber: 43
    functionLinenumberEnd: 67
    functionName: geqo_mutation
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_mutation.c
    functionUses: 1
    functionsReached:
    - geqo_randint
    linkageType: ''
    returnType: void
    signature: void geqo_mutation(PlannerInfo *root, Gene *tour, int num_gene)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_px.c:65,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_px.c:70,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 6
    argNames:
    - root
    - tour1
    - tour2
    - offspring
    - num_gene
    - city_table
    argTypes:
    - PlannerInfo*
    - Gene*
    - Gene*
    - Gene*
    - int
    - City*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 50
    functionDepth: 4
    functionLinenumber: 50
    functionLinenumberEnd: 109
    functionName: px
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_px.c
    functionUses: 1
    functionsReached:
    - geqo_randint
    linkageType: ''
    returnType: void
    signature: "void px(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring,
      int num_gene,\n   City * city_table)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_cx.c:70,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 6
    argNames:
    - root
    - tour1
    - tour2
    - offspring
    - num_gene
    - city_table
    argTypes:
    - PlannerInfo*
    - Gene*
    - Gene*
    - Gene*
    - int
    - City*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 51
    functionDepth: 4
    functionLinenumber: 51
    functionLinenumberEnd: 125
    functionName: cx
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_cx.c
    functionUses: 1
    functionsReached:
    - geqo_randint
    linkageType: ''
    returnType: int
    signature: "int cx(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring,\n
      \  int num_gene, City * city_table)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:53,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:54,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:55,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:56,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:79,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:80,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:216,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:217,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:218,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:219,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 89
    argCount: 5
    argNames:
    - root
    - tour1
    - tour2
    - offspring
    - num_gene
    argTypes:
    - PlannerInfo*
    - Gene*
    - Gene*
    - Gene*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 50
    functionDepth: 4
    functionLinenumber: 50
    functionLinenumberEnd: 220
    functionName: pmx
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c
    functionUses: 1
    functionsReached:
    - pfree
    - geqo_randint
    - palloc_array
    linkageType: ''
    returnType: void
    signature: void pmx(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring,
      int num_gene)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:49,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:54,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - root
    - pool_size
    - string_length
    argTypes:
    - PlannerInfo*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 62
    functionName: alloc_pool
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c
    functionUses: 1
    functionsReached:
    - palloc_array
    - palloc_object
    linkageType: ''
    returnType: Pool
    signature: 'Pool *

      alloc_pool(PlannerInfo *root, int pool_size, int string_length)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:77,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:80,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - root
    - pool
    argTypes:
    - PlannerInfo*
    - Pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 84
    functionName: free_pool
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void free_pool(PlannerInfo *root, Pool *pool)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: init_tour
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:108,1
    - Dst: geqo_eval
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:109,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:117,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:123,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - root
    - pool
    argTypes:
    - PlannerInfo*
    - Pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 126
    functionName: random_init_pool
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c
    functionUses: 1
    functionsReached:
    - init_tour
    - geqo_eval
    - elog
    linkageType: ''
    returnType: void
    signature: void random_init_pool(PlannerInfo *root, Pool *pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - pool
    argTypes:
    - PlannerInfo*
    - Pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: sort_pool
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c
    functionUses: 1
    functionsReached:
    - qsort
    linkageType: ''
    returnType: void
    signature: void sort_pool(PlannerInfo *root, Pool *pool)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 156
    functionName: compare
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int compare(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:167,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - root
    - string_length
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 171
    functionName: alloc_chromo
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c
    functionUses: 1
    functionsReached:
    - palloc_array
    - palloc_object
    linkageType: ''
    returnType: Chromosome
    signature: 'Chromosome *

      alloc_chromo(PlannerInfo *root, int string_length)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:180,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - root
    - chromo
    argTypes:
    - PlannerInfo*
    - Chromosome*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 182
    functionName: free_chromo
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void free_chromo(PlannerInfo *root, Chromosome *chromo)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: geqo_copy
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:252,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 3
    argNames:
    - root
    - chromo
    - pool
    argTypes:
    - PlannerInfo*
    - Chromosome*
    - Pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 268
    functionName: spread_chromo
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c
    functionUses: 1
    functionsReached:
    - geqo_copy
    linkageType: ''
    returnType: void
    signature: void spread_chromo(PlannerInfo *root, Chromosome *chromo, Pool *pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:67,1
    - Dst: make_sub_restrictinfos
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:68,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:80,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:80,1
    - Dst: make_plain_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 10
    argNames:
    - root
    - clause
    - is_pushed_down
    - has_clone
    - is_clone
    - pseudoconstant
    - security_level
    - required_relids
    - incompatible_relids
    - outer_relids
    argTypes:
    - PlannerInfo*
    - Expr*
    - bool
    - bool
    - bool
    - bool
    - Index
    - Relids
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 93
    functionName: make_restrictinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 4
    functionsReached:
    - make_plain_restrictinfo
    - Assert
    - is_andclause
    - is_orclause
    - make_sub_restrictinfos
    linkageType: ''
    returnType: RestrictInfo
    signature: "RestrictInfo *\nmake_restrictinfo(PlannerInfo *root,\n\t\t\t\t  Expr
      *clause,\n\t\t\t\t  bool is_pushed_down,\n\t\t\t\t  bool has_clone,\n\t\t\t\t
      \ bool is_clone,\n\t\t\t\t  bool pseudoconstant,\n\t\t\t\t  Index security_level,\n\t\t\t\t
      \ Relids required_relids,\n\t\t\t\t  Relids incompatible_relids,\n\t\t\t\t  Relids
      outer_relids)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:115,1
    - Dst: contain_leaked_vars
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:135,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:150,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:150,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:152,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:152,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:153,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:153,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:155,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:164,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:165,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:171,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:180,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:198,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:200,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:201,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 54
    argCount: 11
    argNames:
    - root
    - clause
    - orclause
    - is_pushed_down
    - has_clone
    - is_clone
    - pseudoconstant
    - security_level
    - required_relids
    - incompatible_relids
    - outer_relids
    argTypes:
    - PlannerInfo*
    - Expr*
    - Expr*
    - bool
    - bool
    - bool
    - bool
    - Index
    - Relids
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 242
    functionName: make_plain_restrictinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 1
    functionsReached:
    - pull_varnos
    - contain_leaked_vars
    - get_leftop
    - get_rightop
    - Assert
    - bms_difference
    - bms_num_members
    - bms_free
    - makeNode
    - is_opclause
    - bms_overlap
    - list_length
    - bms_is_empty
    - bms_union
    linkageType: ''
    returnType: RestrictInfo
    signature: "RestrictInfo *\nmake_plain_restrictinfo(PlannerInfo *root,\n\t\t\t\t\t\tExpr
      *clause,\n\t\t\t\t\t\tExpr *orclause,\n\t\t\t\t\t\tbool is_pushed_down,\n\t\t\t\t\t\tbool
      has_clone,\n\t\t\t\t\t\tbool is_clone,\n\t\t\t\t\t\tbool pseudoconstant,\n\t\t\t\t\t\tIndex
      security_level,\n\t\t\t\t\t\tRelids required_relids,\n\t\t\t\t\t\tRelids incompatible_relids,\n\t\t\t\t\t\tRelids
      outer_relids)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:273,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:278,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:279,1
    - Dst: make_sub_restrictinfos
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:280,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:281,1
    - Dst: make_plain_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:290,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:292,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:302,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:307,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:308,1
    - Dst: make_sub_restrictinfos
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:309,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:310,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:319,1
    - Dst: make_plain_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 10
    argNames:
    - root
    - clause
    - is_pushed_down
    - has_clone
    - is_clone
    - pseudoconstant
    - security_level
    - required_relids
    - incompatible_relids
    - outer_relids
    argTypes:
    - PlannerInfo*
    - Expr*
    - bool
    - bool
    - bool
    - bool
    - Index
    - Relids
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 333
    functionName: make_sub_restrictinfos
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 2
    functionsReached:
    - make_plain_restrictinfo
    - foreach
    - make_andclause
    - make_orclause
    - lappend
    - lfirst
    - is_andclause
    - is_orclause
    - make_sub_restrictinfos
    linkageType: ''
    returnType: Expr
    signature: "Expr *\nmake_sub_restrictinfos(PlannerInfo *root,\n\t\t\t\t\t   Expr
      *clause,\n\t\t\t\t\t   bool is_pushed_down,\n\t\t\t\t\t   bool has_clone,\n\t\t\t\t\t
      \  bool is_clone,\n\t\t\t\t\t   bool pseudoconstant,\n\t\t\t\t\t   Index security_level,\n\t\t\t\t\t
      \  Relids required_relids,\n\t\t\t\t\t   Relids incompatible_relids,\n\t\t\t\t\t
      \  Relids outer_relids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:356,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:356,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:359,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:360,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:365,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:365,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:366,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:369,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 2
    argNames:
    - rinfo
    - comm_op
    argTypes:
    - RestrictInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 399
    functionName: commute_restrictinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - linitial
    - castNode
    - makeNode
    - list_make2
    - lsecond
    - list_length
    linkageType: ''
    returnType: RestrictInfo
    signature: 'RestrictInfo *

      commute_restrictinfo(RestrictInfo *rinfo, Oid comm_op)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - restrictinfo
    argTypes:
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 413
    functionName: restriction_is_or_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool restriction_is_or_clause(RestrictInfo *restrictinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - restrictinfo
    - rel
    argTypes:
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 434
    functionName: restriction_is_securely_promotable
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool restriction_is_securely_promotable(RestrictInfo *restrictinfo,\n\t\t\t\t\t\t\t\t
      \  RelOptInfo *rel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:446,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:448,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - rinfo
    argTypes:
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 449
    functionName: rinfo_is_constant_true
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 0
    functionsReached:
    - IsA
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool rinfo_is_constant_true(RestrictInfo *rinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:467,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:470,1
    - Dst: rinfo_is_constant_true
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:470,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - restrictinfo_list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 459
    functionDepth: 2
    functionLinenumber: 459
    functionLinenumberEnd: 475
    functionName: get_actual_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 4
    functionsReached:
    - Assert
    - lappend
    - rinfo_is_constant_true
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      get_actual_clauses(List *restrictinfo_list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:467,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:470,1
    - Dst: rinfo_is_constant_true
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:470,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 473
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 134
    functionsReached:
    - Assert
    - lappend
    - rinfo_is_constant_true
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, restrictinfo_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:493,1
    - Dst: rinfo_is_constant_true
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:496,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - restrictinfo_list
    - pseudoconstant
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 484
    functionDepth: 2
    functionLinenumber: 484
    functionLinenumberEnd: 500
    functionName: extract_actual_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 20
    functionsReached:
    - lappend
    - rinfo_is_constant_true
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: "List *\nextract_actual_clauses(List *restrictinfo_list,\n\t\t\t\t\t
      \  bool pseudoconstant)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:493,1
    - Dst: rinfo_is_constant_true
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:496,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 491
    functionDepth: 2
    functionLinenumber: 491
    functionLinenumberEnd: 498
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 134
    functionsReached:
    - lappend
    - rinfo_is_constant_true
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, restrictinfo_list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:525,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:527,1
    - Dst: rinfo_is_constant_true
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:530,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:536,1
    - Dst: rinfo_is_constant_true
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:537,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - restrictinfo_list
    - joinrelids
    - joinquals
    - otherquals
    argTypes:
    - List*
    - Relids
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 512
    functionDepth: 2
    functionLinenumber: 512
    functionLinenumberEnd: 541
    functionName: extract_actual_join_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 3
    functionsReached:
    - Assert
    - lappend
    - lfirst_node
    - RINFO_IS_PUSHED_DOWN
    - rinfo_is_constant_true
    linkageType: ''
    returnType: void
    signature: "void extract_actual_join_clauses(List *restrictinfo_list,\n\t\t\t\t\t\t\tRelids
      joinrelids,\n\t\t\t\t\t\t\tList **joinquals,\n\t\t\t\t\t\t\tList **otherquals)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:525,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:527,1
    - Dst: rinfo_is_constant_true
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:530,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:536,1
    - Dst: rinfo_is_constant_true
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:537,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 523
    functionDepth: 2
    functionLinenumber: 523
    functionLinenumberEnd: 540
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 134
    functionsReached:
    - Assert
    - lappend
    - lfirst_node
    - RINFO_IS_PUSHED_DOWN
    - rinfo_is_constant_true
    linkageType: ''
    returnType: void
    signature: void foreach(l, restrictinfo_list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:578,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:582,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:595,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:599,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - rinfo
    - baserel
    argTypes:
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 607
    functionName: join_clause_is_movable_to
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 0
    functionsReached:
    - bms_is_member
    - bms_overlap
    linkageType: ''
    returnType: bool
    signature: bool join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:666,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:670,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/restrictinfo.c:674,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - rinfo
    - currentrelids
    - current_and_outer
    argTypes:
    - RestrictInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 660
    functionDepth: 1
    functionLinenumber: 660
    functionLinenumberEnd: 678
    functionName: join_clause_is_movable_into
    functionSourceFile: /src/postgres/src/backend/optimizer/util/restrictinfo.c
    functionUses: 0
    functionsReached:
    - bms_is_subset
    - bms_overlap
    linkageType: ''
    returnType: bool
    signature: "bool join_clause_is_movable_into(RestrictInfo *rinfo,\n\t\t\t\t\t\t\tRelids
      currentrelids,\n\t\t\t\t\t\t\tRelids current_and_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_agg_clause_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: contain_agg_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - contain_agg_clause_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_agg_clause(Node *clause)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:220,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:222,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:230,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:230,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 232
    functionName: contain_agg_clause_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - Assert
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_agg_clause_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_windowfuncs
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 250
    functionName: contain_window_function
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - contain_windowfuncs
    linkageType: ''
    returnType: bool
    signature: bool contain_window_function(Node *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:262,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:266,1
    - Dst: find_window_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - clause
    - maxWinRef
    argTypes:
    - Node*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 269
    functionName: find_window_functions
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - palloc0
    - find_window_functions_walker
    - palloc_object
    linkageType: ''
    returnType: WindowFuncLists
    signature: 'WindowFuncLists *

      find_window_functions(Node *clause, Index maxWinRef)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:276,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:282,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:286,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:297,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:297,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:298,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - node
    - lists
    argTypes:
    - Node*
    - WindowFuncLists*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 299
    functionName: find_window_functions_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - lappend
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool find_window_functions_walker(Node *node, WindowFuncLists *lists)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:322,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:327,1
    - Dst: get_function_rows
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:327,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:329,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:335,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:336,1
    - Dst: get_function_rows
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:336,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - root
    - clause
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 340
    functionName: expression_returns_set_rows
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - set_opfuncid
    - IsA
    - clamp_row_est
    - get_function_rows
    linkageType: ''
    returnType: double
    signature: double expression_returns_set_rows(PlannerInfo *root, Node *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_subplans_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 362
    functionName: contain_subplans
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - contain_subplans_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_subplans(Node *clause)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:369,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:370,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:371,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:373,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 374
    functionName: contain_subplans_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_subplans_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_mutable_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 402
    functionName: contain_mutable_functions
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 6
    functionsReached:
    - contain_mutable_functions_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_mutable_functions(Node *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: func_volatile
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 408
    functionName: contain_mutable_functions_checker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - func_volatile
    linkageType: ''
    returnType: bool
    signature: bool contain_mutable_functions_checker(Oid func_id, void *context)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:416,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:420,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:434,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:436,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:436,1
    - Dst: to_jsonb_is_immutable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:439,1
    - Dst: to_json_is_immutable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:440,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:447,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:449,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:452,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:457,1
    - Dst: jspIsMutable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:461,1
    - Dst: DatumGetJsonPathP
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:461,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:466,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:472,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:489,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:492,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:496,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 498
    functionName: contain_mutable_functions_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - to_jsonb_is_immutable
    - check_functions_in_node
    - foreach
    - exprType
    - Assert
    - castNode
    - DatumGetJsonPathP
    - query_tree_walker
    - lfirst
    - to_json_is_immutable
    - expression_tree_walker
    - jspIsMutable
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_mutable_functions_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expression_planner
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:522,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 518
    functionDepth: 2
    functionLinenumber: 518
    functionLinenumberEnd: 526
    functionName: contain_mutable_functions_after_planning
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - contain_mutable_functions
    - expression_planner
    linkageType: ''
    returnType: bool
    signature: bool contain_mutable_functions_after_planning(Expr *expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_volatile_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 570
    functionName: contain_volatile_functions
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 14
    functionsReached:
    - contain_volatile_functions_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_volatile_functions(Node *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: func_volatile
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 576
    functionName: contain_volatile_functions_checker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - func_volatile
    linkageType: ''
    returnType: bool
    signature: bool contain_volatile_functions_checker(Oid func_id, void *context)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:584,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:588,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:594,1
    - Dst: contain_volatile_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:612,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:623,1
    - Dst: contain_volatile_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:639,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:658,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:661,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:665,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 667
    functionName: contain_volatile_functions_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - check_functions_in_node
    - contain_volatile_functions_walker
    - query_tree_walker
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_volatile_functions_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expression_planner
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:691,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 687
    functionDepth: 2
    functionLinenumber: 687
    functionLinenumberEnd: 695
    functionName: contain_volatile_functions_after_planning
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - expression_planner
    - contain_volatile_functions
    linkageType: ''
    returnType: bool
    signature: bool contain_volatile_functions_after_planning(Expr *expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_volatile_functions_not_nextval_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 705
    functionName: contain_volatile_functions_not_nextval
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - contain_volatile_functions_not_nextval_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_volatile_functions_not_nextval(Node *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: func_volatile
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 712
    functionName: contain_volatile_functions_not_nextval_checker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - func_volatile
    linkageType: ''
    returnType: bool
    signature: bool contain_volatile_functions_not_nextval_checker(Oid func_id, void
      *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:720,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:734,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:737,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:741,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 714
    functionDepth: 1
    functionLinenumber: 714
    functionLinenumberEnd: 744
    functionName: contain_volatile_functions_not_nextval_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - check_functions_in_node
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_volatile_functions_not_nextval_walker(Node *node, void
      *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: max_parallel_hazard_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 762
    functionDepth: 1
    functionLinenumber: 762
    functionLinenumberEnd: 772
    functionName: max_parallel_hazard
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - max_parallel_hazard_walker
    linkageType: ''
    returnType: char
    signature: char max_parallel_hazard(Query *parse)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:809,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:811,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:813,1
    - Dst: max_parallel_hazard_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:818,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - root
    - node
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 781
    functionDepth: 1
    functionLinenumber: 781
    functionLinenumberEnd: 819
    functionName: is_parallel_safe
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 8
    functionsReached:
    - max_parallel_hazard_walker
    - lfirst
    - list_concat
    - foreach
    linkageType: ''
    returnType: bool
    signature: bool is_parallel_safe(PlannerInfo *root, Node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:832,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:843,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - proparallel
    - context
    argTypes:
    - char
    - max_parallel_hazard_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 822
    functionDepth: 1
    functionLinenumber: 822
    functionLinenumberEnd: 847
    functionName: max_parallel_hazard_test
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - Assert
    - elog
    linkageType: ''
    returnType: bool
    signature: bool max_parallel_hazard_test(char proparallel, max_parallel_hazard_context
      *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:853,1
    - Dst: func_parallel
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 850
    functionDepth: 2
    functionLinenumber: 850
    functionLinenumberEnd: 855
    functionName: max_parallel_hazard_checker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - max_parallel_hazard_test
    - func_parallel
    linkageType: ''
    returnType: bool
    signature: bool max_parallel_hazard_checker(Oid func_id, void *context)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:864,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:879,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:881,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:885,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:887,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:899,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:901,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:908,1
    - Dst: max_parallel_hazard_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:912,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:919,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:921,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:931,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:937,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:940,1
    - Dst: max_parallel_hazard_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:942,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:944,1
    - Dst: max_parallel_hazard_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:947,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:960,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:968,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:970,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:981,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:993,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:999,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 54
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - max_parallel_hazard_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 857
    functionDepth: 2
    functionLinenumber: 857
    functionLinenumberEnd: 1002
    functionName: max_parallel_hazard_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 3
    functionsReached:
    - max_parallel_hazard_walker
    - check_functions_in_node
    - list_free
    - list_member_int
    - list_concat_copy
    - query_tree_walker
    - max_parallel_hazard_test
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool max_parallel_hazard_walker(Node *node, max_parallel_hazard_context
      *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_nonstrict_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1024,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1021
    functionDepth: 1
    functionLinenumber: 1021
    functionLinenumberEnd: 1025
    functionName: contain_nonstrict_functions
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - contain_nonstrict_functions_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_nonstrict_functions(Node *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1031
    functionName: contain_nonstrict_functions_checker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - func_strict
    linkageType: ''
    returnType: bool
    signature: bool contain_nonstrict_functions_checker(Oid func_id, void *context)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1038,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1043,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1051,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1056,1
    - Dst: getSubscriptingRoutines
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1065,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1070,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1075,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1080,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1094,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1099,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1101,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1103,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1105,1
    - Dst: contain_nonstrict_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1112,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1115,1
    - Dst: contain_nonstrict_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1122,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1125,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1127,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1129,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1131,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1133,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1135,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1137,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1139,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1141,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1143,1
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1147,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1151,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 72
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1153
    functionName: contain_nonstrict_functions_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - check_functions_in_node
    - contain_nonstrict_functions_walker
    - getSubscriptingRoutines
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_nonstrict_functions_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_exec_param_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - clause
    - param_ids
    argTypes:
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1167
    functionDepth: 1
    functionLinenumber: 1167
    functionLinenumberEnd: 1171
    functionName: contain_exec_param
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - contain_exec_param_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_exec_param(Node *clause, List *param_ids)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1178,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1183,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - node
    - param_ids
    argTypes:
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1187
    functionName: contain_exec_param_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - list_member_int
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_exec_param_walker(Node *node, List *param_ids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_context_dependent_node_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1209
    functionDepth: 1
    functionLinenumber: 1209
    functionLinenumberEnd: 1215
    functionName: contain_context_dependent_node
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - contain_context_dependent_node_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_context_dependent_node(Node *clause)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1224,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1226,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1249,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1256,1
    - Dst: contain_context_dependent_node_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1263,1
    - Dst: contain_context_dependent_node_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1269,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1274,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - node
    - flags
    argTypes:
    - Node*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1219
    functionDepth: 1
    functionLinenumber: 1219
    functionLinenumberEnd: 1276
    functionName: contain_context_dependent_node_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - expression_tree_walker
    - contain_context_dependent_node_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_context_dependent_node_walker(Node *node, int *flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_leaked_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1293
    functionDepth: 1
    functionLinenumber: 1293
    functionLinenumberEnd: 1297
    functionName: contain_leaked_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - contain_leaked_vars_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_leaked_vars(Node *clause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1299
    functionDepth: 1
    functionLinenumber: 1299
    functionLinenumberEnd: 1303
    functionName: contain_leaked_vars_checker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - get_func_leakproof
    linkageType: ''
    returnType: bool
    signature: bool contain_leaked_vars_checker(Oid func_id, void *context)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1311,1
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1351,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1353,1
    - Dst: getSubscriptingRoutines
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1363,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1371,1
    - Dst: forthree
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1389,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1393,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1393,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1395,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1396,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1396,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1397,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1397,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1414,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1416,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1417,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1428,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1452,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 65
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1305
    functionDepth: 1
    functionLinenumber: 1305
    functionLinenumberEnd: 1454
    functionName: contain_leaked_vars_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - lookup_type_cache
    - forthree
    - check_functions_in_node
    - lfirst
    - getSubscriptingRoutines
    - get_func_leakproof
    - OidIsValid
    - expression_tree_walker
    - lfirst_oid
    - get_opcode
    - nodeTag
    - contain_var_clause
    linkageType: ''
    returnType: bool
    signature: bool contain_leaked_vars_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1491
    functionDepth: 1
    functionLinenumber: 1491
    functionLinenumberEnd: 1495
    functionName: find_nonnullable_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - find_nonnullable_rels_walker
    linkageType: ''
    returnType: Relids
    signature: Relids find_nonnullable_rels(Node *clause)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1505,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1510,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1512,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1523,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1525,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1526,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1526,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1530,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1534,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1535,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1537,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1541,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1542,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1543,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1545,1
    - Dst: is_strict_saop
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1549,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1550,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1552,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1562,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1582,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1586,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1586,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1591,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1597,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1603,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1607,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1611,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1615,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1617,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1622,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1624,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1629,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1631,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1636,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1638,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1642,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1644,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1650,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1652,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1661,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1663,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1686,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1688,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1696,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1708,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1709,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 84
    argCount: 2
    argNames:
    - node
    - top_level
    argTypes:
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1497
    functionDepth: 1
    functionLinenumber: 1497
    functionLinenumberEnd: 1712
    functionName: find_nonnullable_rels_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - elog
    - bms_membership
    - foreach
    - func_strict
    - find_nonnullable_rels_walker
    - set_opfuncid
    - bms_join
    - bms_is_empty
    - lfirst
    - bms_int_members
    - bms_add_members
    - is_strict_saop
    - IsA
    - bms_make_singleton
    linkageType: ''
    returnType: Relids
    signature: Relids find_nonnullable_rels_walker(Node *node, bool top_level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1742
    functionDepth: 1
    functionLinenumber: 1742
    functionLinenumberEnd: 1746
    functionName: find_nonnullable_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - find_nonnullable_vars_walker
    linkageType: ''
    returnType: List
    signature: 'List *

      find_nonnullable_vars(Node *clause)'
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1756,1
    - Dst: mbms_add_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1761,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1765,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1776,1
    - Dst: mbms_add_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1778,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1779,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1779,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1783,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1787,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1788,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1790,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1794,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1795,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1796,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1798,1
    - Dst: is_strict_saop
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1802,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1803,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1805,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1820,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1840,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1844,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1844,1
    - Dst: mbms_int_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1849,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1861,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1865,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1869,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1873,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1875,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1880,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1882,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1887,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1889,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1894,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1896,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1900,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1902,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1908,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1910,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1919,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1921,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1928,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1930,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1934,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 82
    argCount: 2
    argNames:
    - node
    - top_level
    argTypes:
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1748
    functionDepth: 1
    functionLinenumber: 1748
    functionLinenumberEnd: 1937
    functionName: find_nonnullable_vars_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - elog
    - mbms_add_members
    - find_nonnullable_vars_walker
    - foreach
    - func_strict
    - set_opfuncid
    - mbms_add_member
    - lfirst
    - IsA
    - mbms_int_members
    - is_strict_saop
    linkageType: ''
    returnType: List
    signature: 'List *

      find_nonnullable_vars_walker(Node *node, bool top_level)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_forced_null_var
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1961,1
    - Dst: mbms_add_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1964,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1969,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1975,1
    - Dst: mbms_add_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1977,1
    - Dst: find_forced_null_vars
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1978,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1978,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1981,1
    - Dst: find_forced_null_vars
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1993,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1951
    functionDepth: 1
    functionLinenumber: 1951
    functionLinenumberEnd: 1997
    functionName: find_forced_null_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - mbms_add_members
    - find_forced_null_var
    - foreach
    - find_forced_null_vars
    - mbms_add_member
    - lfirst
    - IsA
    linkageType: ''
    returnType: List
    signature: 'List *

      find_forced_null_vars(Node *node)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2017,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2026,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2031,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2040,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 2012
    functionDepth: 1
    functionLinenumber: 2012
    functionLinenumberEnd: 2046
    functionName: find_forced_null_var
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - IsA
    linkageType: ''
    returnType: Var
    signature: 'Var *

      find_forced_null_var(Node *node)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2097,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2103,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2115,1
    - Dst: flatten_group_exprs
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2140,1
    - Dst: flatten_join_alias_vars
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2148,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2155,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2158,1
    - Dst: find_subquery_safe_quals
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2171,1
    - Dst: flatten_join_alias_vars
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2173,1
    - Dst: find_nonnullable_vars
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2174,1
    - Dst: mbms_is_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2178,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - query
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2191
      start: 2066
    functionDepth: 2
    functionLinenumber: 2066
    functionLinenumberEnd: 2191
    functionName: query_outputs_are_not_nullable
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - flatten_group_exprs
    - flatten_join_alias_vars
    - foreach_node
    - MemSet
    - expr_is_nonnullable
    - find_subquery_safe_quals
    - find_nonnullable_vars
    - IsA
    - mbms_is_member
    linkageType: ''
    returnType: bool
    signature: bool query_outputs_are_not_nullable(Query *query)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2209,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2214,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2219,1
    - Dst: find_subquery_safe_quals
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2220,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2223,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2225,1
    - Dst: find_subquery_safe_quals
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2233,1
    - Dst: find_subquery_safe_quals
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2234,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2237,1
    - Dst: find_subquery_safe_quals
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2250,1
    - Dst: find_subquery_safe_quals
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2255,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2263,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2269,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2270,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 2
    argNames:
    - jtnode
    - safe_quals
    argTypes:
    - Node*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2271
      start: 2204
    functionDepth: 1
    functionLinenumber: 2204
    functionLinenumberEnd: 2271
    functionName: find_subquery_safe_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - elog
    - lappend
    - find_subquery_safe_quals
    - foreach_ptr
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void find_subquery_safe_quals(Node *jtnode, List **safe_quals)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2292,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2293,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2299,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2299,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2300,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2301,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2310,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2311,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2311,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2311,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2315,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 2
    argNames:
    - expr
    - falseOK
    argTypes:
    - ScalarArrayOpExpr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2286
    functionDepth: 1
    functionLinenumber: 2286
    functionLinenumberEnd: 2323
    functionName: is_strict_saop
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - set_sa_opfuncid
    - Assert
    - func_strict
    - lsecond
    - ARR_NDIM
    - list_length
    - DatumGetArrayTypeP
    - IsA
    - ArrayGetNItems
    - ARR_DIMS
    linkageType: ''
    returnType: bool
    signature: bool is_strict_saop(ScalarArrayOpExpr *expr, bool falseOK)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2357,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2361
      start: 2348
    functionDepth: 2
    functionLinenumber: 2348
    functionLinenumberEnd: 2361
    functionName: is_pseudo_constant_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - contain_volatile_functions
    - contain_var_clause
    linkageType: ''
    returnType: bool
    signature: bool is_pseudo_constant_clause(Node *clause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2371,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - clause
    - relids
    argTypes:
    - Node*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2375
      start: 2368
    functionDepth: 2
    functionLinenumber: 2368
    functionLinenumberEnd: 2375
    functionName: is_pseudo_constant_clause_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - bms_is_empty
    - contain_volatile_functions
    linkageType: ''
    returnType: bool
    signature: bool is_pseudo_constant_clause_relids(Node *clause, Relids relids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2394,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2396,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2397,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - clause
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2400
      start: 2390
    functionDepth: 1
    functionLinenumber: 2390
    functionLinenumberEnd: 2400
    functionName: NumRelids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - pull_varnos
    - bms_num_members
    - bms_del_members
    - bms_free
    linkageType: ''
    returnType: int
    signature: int NumRelids(PlannerInfo *root, Node *clause)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2414,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2415,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2416,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2418,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2420,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2421,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2431,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2432,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2432,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - clause
    argTypes:
    - OpExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2434
      start: 2407
    functionDepth: 2
    functionLinenumber: 2407
    functionLinenumberEnd: 2434
    functionName: CommuteOpExpr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - elog
    - linitial
    - OidIsValid
    - is_opclause
    - lsecond
    - get_commutator
    - list_length
    linkageType: ''
    returnType: void
    signature: void CommuteOpExpr(OpExpr *clause)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lookup_rowtype_tupdesc_domain
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2457,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2460,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2463,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2469,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2472,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 5
    argNames:
    - rowtypeid
    - fieldnum
    - expectedtype
    - expectedtypmod
    - expectedcollation
    argTypes:
    - Oid
    - int
    - Oid
    - int32
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2474
      start: 2446
    functionDepth: 2
    functionLinenumber: 2446
    functionLinenumberEnd: 2474
    functionName: rowtype_field_matches
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - lookup_rowtype_tupdesc_domain
    - TupleDescAttr
    - ReleaseTupleDesc
    linkageType: ''
    returnType: bool
    signature: "bool rowtype_field_matches(Oid rowtypeid, int fieldnum,\n\t\t\t\t\t
      \ Oid expectedtype, int32 expectedtypmod,\n\t\t\t\t\t  Oid expectedcollation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - root
    - node
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2529
      start: 2515
    functionDepth: 1
    functionLinenumber: 2515
    functionLinenumberEnd: 2529
    functionName: eval_const_expressions
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 7
    functionsReached:
    - eval_const_expressions_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      eval_const_expressions(PlannerInfo *root, Node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_saop_to_hashed_saop_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2552
      start: 2548
    functionDepth: 1
    functionLinenumber: 2548
    functionLinenumberEnd: 2552
    functionName: convert_saop_to_hashed_saop
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - convert_saop_to_hashed_saop_walker
    linkageType: ''
    returnType: void
    signature: void convert_saop_to_hashed_saop(Node *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2560,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2563,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2564,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2568,1
    - Dst: get_op_hash_functions_ext
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2573,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2573,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2578,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2586,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2586,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2586,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2598,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2605,1
    - Dst: get_op_hash_functions_ext
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2606,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2606,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2611,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2619,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2619,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2619,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2630,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2638,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2639
      start: 2554
    functionDepth: 1
    functionLinenumber: 2554
    functionLinenumberEnd: 2639
    functionName: convert_saop_to_hashed_saop_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - get_opcode
    - exprType
    - linitial
    - get_negator
    - get_op_hash_functions_ext
    - lsecond
    - ARR_NDIM
    - OidIsValid
    - expression_tree_walker
    - IsA
    - ArrayGetNItems
    - ARR_DIMS
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool convert_saop_to_hashed_saop_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - node
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2671
      start: 2659
    functionDepth: 1
    functionLinenumber: 2659
    functionLinenumberEnd: 2671
    functionName: estimate_expression_value
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 3
    functionsReached:
    - eval_const_expressions_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      estimate_expression_value(PlannerInfo *root, Node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2685
      start: 2682
    functionDepth: 0
    functionLinenumber: 2682
    functionLinenumberEnd: 2685
    functionName: ece_generic_processing
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ece_generic_processing(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2691
    functionDepth: 0
    functionLinenumber: 2691
    functionLinenumberEnd: 2693
    functionName: ece_all_arguments_const
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ece_all_arguments_const(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2700
      start: 2695
    functionDepth: 0
    functionLinenumber: 2695
    functionLinenumberEnd: 2700
    functionName: ece_evaluate_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ece_evaluate_expr(node)
  - BBCount: 135
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2710,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2714,1
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2736,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2747,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2765,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2770,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2771,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2788,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2806,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2806,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2807,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2808,1
    - Dst: expand_function_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2810,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2814,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2818,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2823,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2827,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2857,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2859,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2876,1
    - Dst: ece_generic_processing
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2889,1
    - Dst: simplify_aggref
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2891,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2904,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2910,1
    - Dst: simplify_boolean_equality
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2930,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2941,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2970,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2982,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2982,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2984,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2985,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2993,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2994,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3009,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3013,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3022,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3029,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3044,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3047,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3047,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3067,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3080,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3090,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3090,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3102,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3104,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3104,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3105,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3105,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3115,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3123,1
    - Dst: ece_generic_processing
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3141,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3144,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3146,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3146,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3148,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3149,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3156,1
    - Dst: ece_function_is_safe
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3159,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3160,1
    - Dst: ece_generic_processing
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3169,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3172,1
    - Dst: ece_all_arguments_const
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3178,1
    - Dst: ece_function_is_safe
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3179,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3180,1
    - Dst: simplify_or_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3195,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3200,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3202,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3203,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3206,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3212,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3213,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3215,1
    - Dst: simplify_and_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3223,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3228,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3230,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3231,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3234,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3240,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3241,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3243,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3249,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3249,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3250,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3250,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3257,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3260,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3278,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3280,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3283,1
    - Dst: makeJsonValueExpr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3285,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3287,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3300,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3320,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3323,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3343,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3354,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3354,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3356,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3359,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3375,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3376,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3380,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3383,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3387,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3391,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3409,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3410,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3419,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3427,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3429,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3440,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3453,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3454,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3455,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3456,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3473,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3476,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3477,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3478,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3526,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3531,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3542,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3544,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3549,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3557,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3562,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3569,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3575,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3580,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3595,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3607,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3624,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3626,1
    - Dst: ece_generic_processing
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3649,1
    - Dst: ece_all_arguments_const
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3651,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3652,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3663,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3667,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3667,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3678,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3684,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3687,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3692,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3696,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3704,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3712,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3713,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3715,1
    - Dst: evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3732,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3737,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3769,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3771,1
    - Dst: rowtype_field_matches
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3775,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3783,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3796,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3801,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3803,1
    - Dst: rowtype_field_matches
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3806,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3811,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3812,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3813,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3817,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3823,1
    - Dst: rowtype_field_matches
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3827,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3832,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3842,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3844,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3856,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3858,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3864,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3871,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3881,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3885,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3895,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3900,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3904,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3906,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3907,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3909,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3911,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3925,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3931,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3934,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3948,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3954,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3957,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3977,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3979,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3991,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3995,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3999,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4003,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4012,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4018,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4021,1
    - Dst: make_notclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4036,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4039,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4042,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4045,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4051,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4073,1
    - Dst: DomainHasConstraints
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4076,1
    - Dst: record_plan_type_dependency
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4080,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4084,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4093,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4115,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4121,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4125,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4128,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4145,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4161,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4162,1
    - Dst: ece_generic_processing
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4176,1
    CyclomaticComplexity: 156
    EdgeCount: 156
    ICount: 532
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - eval_const_expressions_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4177
      start: 2704
    functionDepth: 3
    functionLinenumber: 2704
    functionLinenumberEnd: 4177
    functionName: eval_const_expressions_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 3
    functionsReached:
    - set_sa_opfuncid
    - copyObject
    - make_andclause
    - applyRelabelType
    - get_typlenbyval
    - exprType
    - simplify_boolean_equality
    - check_stack_depth
    - simplify_and_arguments
    - makeJsonValueExpr
    - ParamListInfo::paramFetch
    - makeConst
    - make_notclause
    - list_make3
    - nodeTag
    - DatumGetBool
    - rowtype_field_matches
    - SearchSysCache1
    - elog
    - simplify_aggref
    - foreach
    - memcpy
    - simplify_or_arguments
    - HeapTupleIsValid
    - linitial
    - Assert
    - makeBoolConst
    - Int32GetDatum
    - DomainHasConstraints
    - record_plan_type_dependency
    - ReleaseSysCache
    - evaluate_expr
    - OidIsValid
    - eval_const_expressions_mutator
    - ObjectIdGetDatum
    - list_length
    - exprTypmod
    - ece_generic_processing
    - simplify_function
    - set_opfuncid
    - lappend
    - exprCollation
    - expression_tree_mutator
    - expr_is_nonnullable
    - lfirst
    - negate_clause
    - list_make1
    - ece_function_is_safe
    - lfirst_node
    - ece_evaluate_expr
    - getTypeInputInfo
    - make_orclause
    - castNode
    - datumCopy
    - contain_mutable_functions
    - makeNode
    - lsecond
    - makeNullConst
    - ece_all_arguments_const
    - expand_function_arguments
    - BoolGetDatum
    - list_nth
    - IsA
    - getTypeOutputInfo
    - makeVar
    linkageType: ''
    returnType: Node
    signature: "Node *\neval_const_expressions_mutator(Node *node,\n\t\t\t\t\t\t\t
      \  eval_const_expressions_context *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2982,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2982,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2984,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2985,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2993,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2994,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2998
      start: 2980
    functionDepth: 1
    functionLinenumber: 2980
    functionLinenumberEnd: 2998
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 140
    functionsReached:
    - expr_is_nonnullable
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(arg, args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4193,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4195,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4199
      start: 4188
    functionDepth: 1
    functionLinenumber: 4188
    functionLinenumberEnd: 4199
    functionName: contain_non_const_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_non_const_walker(Node *node, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: func_volatile
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - funcid
    - context
    argTypes:
    - Oid
    - eval_const_expressions_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4221
      start: 4204
    functionDepth: 1
    functionLinenumber: 4204
    functionLinenumberEnd: 4221
    functionName: ece_function_is_safe
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - func_volatile
    linkageType: ''
    returnType: bool
    signature: bool ece_function_is_safe(Oid funcid, eval_const_expressions_context
      *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4261,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4264,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4266,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4269,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4274,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4276,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4281,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4289,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4293,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4301,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4307,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4323,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - args
    - context
    - haveNull
    - forceTrue
    argTypes:
    - List*
    - eval_const_expressions_context*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4327
      start: 4242
    functionDepth: 4
    functionLinenumber: 4242
    functionLinenumberEnd: 4327
    functionName: simplify_or_arguments
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - list_free
    - linitial
    - list_concat_copy
    - lappend
    - list_delete_first
    - list_copy
    - is_orclause
    - eval_const_expressions_mutator
    - IsA
    - DatumGetBool
    linkageType: ''
    returnType: List
    signature: "List *\nsimplify_or_arguments(List *args,\n\t\t\t\t\t  eval_const_expressions_context
      *context,\n\t\t\t\t\t  bool *haveNull, bool *forceTrue)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4357,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4360,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4362,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4365,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4370,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4372,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4377,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4385,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4389,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4397,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4403,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4419,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - args
    - context
    - haveNull
    - forceFalse
    argTypes:
    - List*
    - eval_const_expressions_context*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4423
      start: 4348
    functionDepth: 4
    functionLinenumber: 4348
    functionLinenumberEnd: 4423
    functionName: simplify_and_arguments
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - list_free
    - linitial
    - list_concat_copy
    - lappend
    - is_andclause
    - list_delete_first
    - list_copy
    - eval_const_expressions_mutator
    - IsA
    - DatumGetBool
    linkageType: ''
    returnType: List
    signature: "List *\nsimplify_and_arguments(List *args,\n\t\t\t\t\t   eval_const_expressions_context
      *context,\n\t\t\t\t\t   bool *haveNull, bool *forceFalse)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4448,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4448,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4449,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4450,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4453,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4456,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4459,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4463,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4464,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4471,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4474,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4477,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4481,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4482,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - opno
    - args
    argTypes:
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4488
      start: 4442
    functionDepth: 1
    functionLinenumber: 4442
    functionLinenumberEnd: 4488
    functionName: simplify_boolean_equality
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - Assert
    - linitial
    - lsecond
    - negate_clause
    - list_length
    - IsA
    - DatumGetBool
    linkageType: ''
    returnType: Node
    signature: 'Node *

      simplify_boolean_equality(Oid opno, List *args)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4534,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4534,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4535,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4536,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4537,1
    - Dst: expand_function_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4547,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4548,1
    - Dst: evaluate_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4557,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4562,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4590,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4590,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4594,1
    - Dst: inline_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4598,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4602,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 10
    argNames:
    - funcid
    - result_type
    - result_typmod
    - result_collid
    - input_collid
    - args_p
    - funcvariadic
    - process_args
    - allow_non_const
    - context
    argTypes:
    - Oid
    - Oid
    - int32
    - Oid
    - Oid
    - List**
    - bool
    - bool
    - bool
    - eval_const_expressions_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4605
      start: 4511
    functionDepth: 1
    functionLinenumber: 4511
    functionLinenumberEnd: 4605
    functionName: simplify_function
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - inline_function
    - evaluate_function
    - HeapTupleIsValid
    - Assert
    - expression_tree_mutator
    - ReleaseSysCache
    - OidFunctionCall1
    - GETSTRUCT
    - expand_function_arguments
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - DatumGetPointer
    linkageType: ''
    returnType: Expr
    signature: "Expr *\nsimplify_function(Oid funcid, Oid result_type, int32 result_typmod,\n\t\t\t\t
      \ Oid result_collid, Oid input_collid, List **args_p,\n\t\t\t\t  bool funcvariadic,
      bool process_args, bool allow_non_const,\n\t\t\t\t  eval_const_expressions_context
      *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_func_support
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4620,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4622,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4635,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4635,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4636,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4642,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - aggref
    - context
    argTypes:
    - Aggref*
    - eval_const_expressions_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4649
      start: 4617
    functionDepth: 1
    functionLinenumber: 4617
    functionLinenumberEnd: 4649
    functionName: simplify_aggref
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_func_support
    - OidFunctionCall1
    - PointerGetDatum
    - OidIsValid
    - DatumGetPointer
    linkageType: ''
    returnType: Node
    signature: 'Node *

      simplify_aggref(Aggref *aggref, eval_const_expressions_context *context)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4662,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4662,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4669,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4700,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4703,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4714,1
    - Dst: find_relation_notnullatts
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4729,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4731,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4747,1
    - Dst: has_subclass
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4762,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4767,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4768,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4768,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4771,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4776,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 3
    argNames:
    - root
    - var
    - source
    argTypes:
    - PlannerInfo*
    - Var*
    - NotNullSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4782
      start: 4659
    functionDepth: 3
    functionLinenumber: 4659
    functionLinenumberEnd: 4782
    functionName: var_is_nonnullable
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - elog
    - planner_rt_fetch
    - Assert
    - RelationGetDescr
    - table_close
    - bms_is_member
    - bms_is_empty
    - table_open
    - find_base_rel
    - TupleDescCompactAttr
    - find_relation_notnullatts
    - IsA
    - has_subclass
    linkageType: ''
    returnType: bool
    signature: bool var_is_nonnullable(PlannerInfo *root, Var *var, NotNullSource
      source)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4807,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4809,1
    - Dst: var_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4814,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4829,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4831,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4844,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4846,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4862,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4866,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4868,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4915,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 3
    argNames:
    - root
    - expr
    - source
    argTypes:
    - PlannerInfo*
    - Expr*
    - NotNullSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4923
      start: 4803
    functionDepth: 4
    functionLinenumber: 4803
    functionLinenumberEnd: 4923
    functionName: expr_is_nonnullable
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 8
    functionsReached:
    - var_is_nonnullable
    - check_stack_depth
    - expr_is_nonnullable
    - foreach_ptr
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: bool expr_is_nonnullable(PlannerInfo *root, Expr *expr, NotNullSource
      source)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4949,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4968,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4973,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4975,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4976,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4978,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4979,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4980,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4981,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4982,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4989,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4991,1
    - Dst: reorder_function_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5001,1
    - Dst: recheck_cast_function_args
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5003,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5007,1
    - Dst: add_function_defaults
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5010,1
    - Dst: recheck_cast_function_args
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5012,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 4
    argNames:
    - args
    - include_out_arguments
    - result_type
    - func_tuple
    argTypes:
    - List*
    - bool
    - Oid
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5018
      start: 4945
    functionDepth: 1
    functionLinenumber: 4945
    functionLinenumberEnd: 5018
    functionName: expand_function_arguments
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - elog
    - reorder_function_arguments
    - Assert
    - add_function_defaults
    - ARR_HASNULL
    - ARR_ELEMTYPE
    - SysCacheGetAttr
    - ARR_DATA_PTR
    - lfirst
    - ARR_NDIM
    - GETSTRUCT
    - list_length
    - DatumGetArrayTypeP
    - IsA
    - recheck_cast_function_args
    - ARR_DIMS
    linkageType: ''
    returnType: List
    signature: "List *\nexpand_function_arguments(List *args, bool include_out_arguments,\n\t\t\t\t\t\t
      \ Oid result_type, HeapTuple func_tuple)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4989,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4991,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4996
      start: 4987
    functionDepth: 1
    functionLinenumber: 4987
    functionLinenumberEnd: 4996
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 140
    functionsReached:
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5029,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5030,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5035,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5037,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5038,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5044,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5046,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5057,1
    - Dst: fetch_function_defaults
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5068,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5074,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5083,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5084,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - args
    - pronargs
    - func_tuple
    argTypes:
    - List*
    - int
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5088
      start: 5026
    functionDepth: 1
    functionLinenumber: 5026
    functionLinenumberEnd: 5088
    functionName: reorder_function_arguments
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - lappend
    - lfirst
    - memset
    - GETSTRUCT
    - fetch_function_defaults
    - list_length
    - IsA
    linkageType: ''
    returnType: List
    signature: 'List *

      reorder_function_arguments(List *args, int pronargs, HeapTuple func_tuple)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5044,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5046,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5057,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5060
      start: 5042
    functionDepth: 1
    functionLinenumber: 5042
    functionLinenumberEnd: 5060
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 140
    functionsReached:
    - Assert
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5074,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5076
      start: 5071
    functionDepth: 1
    functionLinenumber: 5071
    functionLinenumberEnd: 5076
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 140
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, defaults)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5099,1
    - Dst: fetch_function_defaults
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5104,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5107,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5109,1
    - Dst: list_delete_first_n
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5111,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - args
    - pronargs
    - func_tuple
    argTypes:
    - List*
    - int
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5115
      start: 5096
    functionDepth: 1
    functionLinenumber: 5096
    functionLinenumberEnd: 5115
    functionName: add_function_defaults
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - elog
    - list_concat_copy
    - list_delete_first_n
    - fetch_function_defaults
    - list_length
    linkageType: ''
    returnType: List
    signature: 'List *

      add_function_defaults(List *args, int pronargs, HeapTuple func_tuple)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5127,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5129,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5130,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5130,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - func_tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5133
      start: 5120
    functionDepth: 1
    functionLinenumber: 5120
    functionLinenumberEnd: 5133
    functionName: fetch_function_defaults
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - pfree
    - castNode
    - stringToNode
    - SysCacheGetAttrNotNull
    - TextDatumGetCString
    linkageType: ''
    returnType: List
    signature: 'List *

      fetch_function_defaults(HeapTuple func_tuple)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5155,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5162,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5163,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5167,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5169,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5170,1
    - Dst: enforce_generic_type_consistency
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5171,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5178,1
    - Dst: make_fn_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - args
    - result_type
    - proargtypes
    - pronargs
    - func_tuple
    argTypes:
    - List*
    - Oid
    - Oid*
    - int
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5182
      start: 5150
    functionDepth: 1
    functionLinenumber: 5150
    functionLinenumberEnd: 5182
    functionName: recheck_cast_function_args
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - elog
    - memcpy
    - exprType
    - Assert
    - lfirst
    - GETSTRUCT
    - list_length
    - enforce_generic_type_consistency
    - make_fn_arguments
    linkageType: ''
    returnType: void
    signature: "void recheck_cast_function_args(List *args, Oid result_type,\n\t\t\t\t\t\t
      \  Oid *proargtypes, int pronargs,\n\t\t\t\t\t\t   HeapTuple func_tuple)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5167,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5168
      start: 5165
    functionDepth: 1
    functionLinenumber: 5165
    functionLinenumberEnd: 5168
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 140
    functionsReached:
    - exprType
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5202,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5232,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5232,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5233,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5245,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5275,1
    - Dst: evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5286,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 9
    argNames:
    - funcid
    - result_type
    - result_typmod
    - result_collid
    - input_collid
    - args
    - funcvariadic
    - func_tuple
    - context
    argTypes:
    - Oid
    - Oid
    - int32
    - Oid
    - Oid
    - List*
    - bool
    - HeapTuple
    - eval_const_expressions_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5288
      start: 5195
    functionDepth: 1
    functionLinenumber: 5195
    functionLinenumberEnd: 5288
    functionName: evaluate_function
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - makeNode
    - makeNullConst
    - lfirst
    - GETSTRUCT
    - evaluate_expr
    - IsA
    linkageType: ''
    returnType: Expr
    signature: "Expr *\nevaluate_function(Oid funcid, Oid result_type, int32 result_typmod,\n\t\t\t\t
      \ Oid result_collid, Oid input_collid, List *args,\n\t\t\t\t  bool funcvariadic,\n\t\t\t\t
      \ HeapTuple func_tuple,\n\t\t\t\t  eval_const_expressions_context *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5232,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5232,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5236
      start: 5230
    functionDepth: 1
    functionLinenumber: 5230
    functionLinenumberEnd: 5236
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 140
    functionsReached:
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(arg, args)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5328,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5357,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5358,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5362,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5366,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5366,1
    - Dst: FmgrHookIsNeeded
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5370,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5377,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5380,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5387,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5399,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5400,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5406,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5415,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5424,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5424,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5425,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5426,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5426,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5428,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5429,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5431,1
    - Dst: prepare_sql_fn_parse_info
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5442,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5452,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5453,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5456,1
    - Dst: sql_fn_parser_setup
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5458,1
    - Dst: transformTopLevelStmt
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5460,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5460,1
    - Dst: free_parsestate
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5462,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5473,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5492,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5496,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5510,1
    - Dst: check_sql_fn_retval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5511,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5511,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5521,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5525,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5535,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5547,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5550,1
    - Dst: contain_nonstrict_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5554,1
    - Dst: contain_context_dependent_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5561,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5570,1
    - Dst: substitute_actual_parameters
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5571,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5578,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5597,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5599,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5599,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5608,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5618,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5620,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5622,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5630,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5632,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5634,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5636,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5651,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5657,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5658,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5659,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5667,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5668,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 124
    argCount: 8
    argNames:
    - funcid
    - result_type
    - result_collid
    - input_collid
    - args
    - funcvariadic
    - func_tuple
    - context
    argTypes:
    - Oid
    - Oid
    - Oid
    - Oid
    - List*
    - bool
    - HeapTuple
    - eval_const_expressions_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5672
      start: 5321
    functionDepth: 4
    functionLinenumber: 5321
    functionLinenumberEnd: 5672
    functionName: inline_function
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - copyObject
    - contain_context_dependent_node
    - GetUserId
    - exprType
    - object_aclcheck
    - sql_fn_parser_setup
    - NameStr
    - check_sql_fn_retval
    - lappend_oid
    - make_parsestate
    - cost_qual_eval
    - contain_subplans
    - linitial_node
    - linitial
    - FmgrHookIsNeeded
    - list_length
    - OidIsValid
    - TextDatumGetCString
    - list_member_oid
    - eval_const_expressions_mutator
    - free_parsestate
    - prepare_sql_fn_parse_info
    - exprCollation
    - stringToNode
    - lfirst
    - GETSTRUCT
    - get_expr_result_type
    - AllocSetContextCreate
    - list_make1
    - SysCacheGetAttrNotNull
    - record_plan_function_dependency
    - pg_parse_query
    - contain_nonstrict_functions
    - list_delete_last
    - castNode
    - transformTopLevelStmt
    - contain_mutable_functions
    - makeNode
    - palloc0
    - MemoryContextSwitchTo
    - substitute_actual_parameters
    - MemoryContextDelete
    - heap_attisnull
    - contain_volatile_functions
    - IsA
    - SysCacheGetAttr
    linkageType: ''
    returnType: Expr
    signature: "Expr *\ninline_function(Oid funcid, Oid result_type, Oid result_collid,\n\t\t\t\tOid
      input_collid, List *args,\n\t\t\t\tbool funcvariadic,\n\t\t\t\tHeapTuple func_tuple,\n\t\t\t\teval_const_expressions_context
      *context)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5578,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5597,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5599,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5599,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5608,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5612
      start: 5576
    functionDepth: 2
    functionLinenumber: 5576
    functionLinenumberEnd: 5612
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 140
    functionsReached:
    - contain_subplans
    - lfirst
    - contain_volatile_functions
    - list_make1
    - cost_qual_eval
    linkageType: ''
    returnType: void
    signature: void foreach(arg, args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: substitute_actual_parameters_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - expr
    - nargs
    - args
    - usecounts
    argTypes:
    - Node*
    - int
    - List*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5688
      start: 5677
    functionDepth: 1
    functionLinenumber: 5677
    functionLinenumberEnd: 5688
    functionName: substitute_actual_parameters
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - substitute_actual_parameters_mutator
    linkageType: ''
    returnType: Node
    signature: "Node *\nsubstitute_actual_parameters(Node *expr, int nargs, List *args,\n\t\t\t\t\t\t\t
      int *usecounts)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5696,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5701,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5703,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5710,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5712,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - substitute_actual_parameters_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5713
      start: 5690
    functionDepth: 3
    functionLinenumber: 5690
    functionLinenumberEnd: 5713
    functionName: substitute_actual_parameters_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - elog
    - list_nth
    - expression_tree_mutator
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\nsubstitute_actual_parameters_mutator(Node *node,\n\t\t\t\t\t\t\t\t\t
      substitute_actual_parameters_context *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: geterrposition
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5725,1
    - Dst: errposition
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5728,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5729,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5730,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5734
      start: 5718
    functionDepth: 1
    functionLinenumber: 5718
    functionLinenumberEnd: 5734
    functionName: sql_inline_error_callback
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - internalerrposition
    - errcontext
    - geterrposition
    - errposition
    - internalerrquery
    linkageType: ''
    returnType: void
    signature: void sql_inline_error_callback(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5757,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5760,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5763,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5769,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5779,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5780,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5784,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5787,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5800,1
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5800,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5802,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5806,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5811,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - expr
    - result_type
    - result_typmod
    - result_collation
    argTypes:
    - Expr*
    - Oid
    - int32
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5815
      start: 5742
    functionDepth: 2
    functionLinenumber: 5742
    functionLinenumberEnd: 5815
    functionName: evaluate_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - fix_opfuncids
    - CreateExecutorState
    - get_typlenbyval
    - GetPerTupleExprContext
    - datumCopy
    - PG_DETOAST_DATUM_COPY
    - MemoryContextSwitchTo
    - FreeExecutorState
    - ExecInitExpr
    - PointerGetDatum
    - ExecEvalExprSwitchContext
    - makeConst
    linkageType: ''
    returnType: Expr
    signature: "Expr *\nevaluate_expr(Expr *expr, Oid result_type, int32 result_typmod,\n\t\t\t
      \ Oid result_collation)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5850,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5856,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5863,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5865,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5867,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5882,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5883,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5887,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5887,1
    - Dst: FmgrHookIsNeeded
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5891,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5897,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5897,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5898,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5899,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5900,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5906,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5908,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5917,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5920,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5923,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5924,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5940,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5940,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5941,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5951,1
    - Dst: inline_sql_function_in_from
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5964,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5973,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5974,1
    - Dst: substitute_actual_parameters_in_from
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5979,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5987,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5989,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5991,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5993,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6004,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6017,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6018,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6020,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 67
    argCount: 2
    argNames:
    - root
    - rte
    argTypes:
    - PlannerInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6023
      start: 5834
    functionDepth: 3
    functionLinenumber: 5834
    functionLinenumberEnd: 6023
    functionName: inline_function_in_from
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - copyObject
    - GetUserId
    - inline_sql_function_in_from
    - check_stack_depth
    - object_aclcheck
    - NameStr
    - SearchSysCache1
    - elog
    - contain_subplans
    - Assert
    - linitial
    - HeapTupleIsValid
    - FmgrHookIsNeeded
    - ReleaseSysCache
    - OidFunctionCall1
    - substitute_actual_parameters_in_from
    - PointerGetDatum
    - list_length
    - ObjectIdGetDatum
    - TextDatumGetCString
    - GETSTRUCT
    - AllocSetContextCreate
    - SysCacheGetAttrNotNull
    - record_plan_function_dependency
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - contain_volatile_functions
    - heap_attisnull
    - IsA
    - DatumGetPointer
    linkageType: ''
    returnType: Query
    signature: 'Query *

      inline_function_in_from(PlannerInfo *root, RangeTblEntry *rte)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6078,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6082,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6090,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6090,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6091,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6092,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6092,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6094,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6095,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6097,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6100,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6101,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6102,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6104,1
    - Dst: prepare_sql_fn_parse_info
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6116,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6125,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6126,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6129,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6129,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6133,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6135,1
    - Dst: BuildDescFromLists
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6146,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6152,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6157,1
    - Dst: check_sql_fn_retval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6174,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6174,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6187,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 40
    argCount: 6
    argNames:
    - root
    - rtfunc
    - fexpr
    - func_tuple
    - funcform
    - src
    argTypes:
    - PlannerInfo*
    - RangeTblFunction*
    - FuncExpr*
    - HeapTuple
    - Form_pg_proc
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6190
      start: 6038
    functionDepth: 6
    functionLinenumber: 6038
    functionLinenumberEnd: 6190
    functionName: inline_sql_function_in_from
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - pg_parse_query
    - linitial_node
    - pg_analyze_and_rewrite_withcb
    - linitial
    - castNode
    - pg_rewrite_query
    - prepare_sql_fn_parse_info
    - BuildDescFromLists
    - stringToNode
    - AcquireRewriteLocks
    - get_expr_result_type
    - check_sql_fn_retval
    - list_length
    - list_make1
    - TextDatumGetCString
    - IsA
    - SysCacheGetAttr
    linkageType: ''
    returnType: Query
    signature: "Query *\ninline_sql_function_in_from(PlannerInfo *root,\n\t\t\t\t\t\t\tRangeTblFunction
      *rtfunc,\n\t\t\t\t\t\t\tFuncExpr *fexpr,\n\t\t\t\t\t\t\tHeapTuple func_tuple,\n\t\t\t\t\t\t\tForm_pg_proc
      funcform,\n\t\t\t\t\t\t\tconst char *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - expr
    - nargs
    - args
    argTypes:
    - Query*
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6211
      start: 6198
    functionDepth: 1
    functionLinenumber: 6198
    functionLinenumberEnd: 6211
    functionName: substitute_actual_parameters_in_from
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - query_tree_mutator
    linkageType: ''
    returnType: Query
    signature: 'Query *

      substitute_actual_parameters_in_from(Query *expr, int nargs, List *args)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6221,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6224,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6231,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6238,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6244,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6244,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6245,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6249,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - substitute_actual_parameters_in_from_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6252
      start: 6213
    functionDepth: 3
    functionLinenumber: 6213
    functionLinenumberEnd: 6252
    functionName: substitute_actual_parameters_in_from_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - elog
    - copyObject
    - query_tree_mutator
    - expression_tree_mutator
    - IncrementVarSublevelsUp
    - list_nth
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\nsubstitute_actual_parameters_in_from_mutator(Node *node,\n\t\t\t\t\t\t\t\t\t\t\t
      substitute_actual_parameters_in_from_context *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pull_paramids_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6266
      start: 6258
    functionDepth: 1
    functionLinenumber: 6258
    functionLinenumberEnd: 6266
    functionName: pull_paramids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - pull_paramids_walker
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      pull_paramids(Expr *expr)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6273,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6277,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6281
      start: 6268
    functionDepth: 1
    functionLinenumber: 6268
    functionLinenumberEnd: 6281
    functionName: pull_paramids_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: bool pull_paramids_walker(Node *node, Bitmapset **context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grouping_conflict_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - expr
    - get_eqop
    - context
    argTypes:
    - Node*
    - grouping_eqop_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6331
      start: 6317
    functionDepth: 1
    functionLinenumber: 6317
    functionLinenumberEnd: 6331
    functionName: expression_has_grouping_conflict
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - grouping_conflict_walker
    linkageType: ''
    returnType: bool
    signature: "bool expression_has_grouping_conflict(Node *expr,\n\t\t\t\t\t\t\t\t
      grouping_eqop_callback get_eqop,\n\t\t\t\t\t\t\t\t void *context)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6358,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6370,1
    - Dst: grouping_walker_ctx*::get_eqop
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6370,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6371,1
    - Dst: get_collation_isdeterministic
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6372,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6376,1
    - Dst: op_is_safe_index_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6380,1
    - Dst: grouping_check_operands
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6381,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6385,1
    - Dst: op_is_safe_index_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6389,1
    - Dst: grouping_check_operands
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6390,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6394,1
    - Dst: forfour
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6403,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6408,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6409,1
    - Dst: grouping_check_operand
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6411,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6411,1
    - Dst: grouping_check_operand
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6412,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6412,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6417,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6423,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6426,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6435,1
    - Dst: grouping_walker_ctx*::get_eqop
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6435,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6436,1
    - Dst: get_collation_isdeterministic
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6437,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6439,1
    - Dst: exprInputCollation
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6441,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6443,1
    - Dst: grouping_conflict_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6448,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6461,1
    - Dst: grouping_conflict_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6463,1
    - Dst: grouping_conflict_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6464,1
    - Dst: grouping_conflict_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6467,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6470,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 44
    argCount: 2
    argNames:
    - node
    - ctx
    argTypes:
    - Node*
    - grouping_walker_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6471
      start: 6352
    functionDepth: 1
    functionLinenumber: 6352
    functionLinenumberEnd: 6471
    functionName: grouping_conflict_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - forfour
    - lfirst_oid
    - exprInputCollation
    - grouping_check_operand
    - foreach_node
    - op_is_safe_index_member
    - lfirst
    - grouping_conflict_walker
    - OidIsValid
    - expression_tree_walker
    - grouping_check_operands
    - IsA
    - get_collation_isdeterministic
    - grouping_walker_ctx*::get_eqop
    linkageType: ''
    returnType: bool
    signature: bool grouping_conflict_walker(Node *node, grouping_walker_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grouping_check_operand
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6486,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - opno
    - inputcollid
    - args
    - ctx
    argTypes:
    - Oid
    - Oid
    - List*
    - grouping_walker_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6490
      start: 6478
    functionDepth: 1
    functionLinenumber: 6478
    functionLinenumberEnd: 6490
    functionName: grouping_check_operands
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - grouping_check_operand
    - lfirst
    linkageType: ''
    returnType: bool
    signature: "bool grouping_check_operands(Oid opno, Oid inputcollid, List *args,\n\t\t\t\t\t\tgrouping_walker_ctx
      *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grouping_check_operand
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6486,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6488
      start: 6484
    functionDepth: 1
    functionLinenumber: 6484
    functionLinenumberEnd: 6488
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 140
    functionsReached:
    - grouping_check_operand
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6510,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6513,1
    - Dst: grouping_walker_ctx*::get_eqop
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6516,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6518,1
    - Dst: equality_ops_are_compatible
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6521,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6524,1
    - Dst: get_collation_isdeterministic
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6525,1
    - Dst: grouping_conflict_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6532,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 4
    argNames:
    - arg
    - opno
    - inputcollid
    - ctx
    argTypes:
    - Node*
    - Oid
    - Oid
    - grouping_walker_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6533
      start: 6504
    functionDepth: 2
    functionLinenumber: 6504
    functionLinenumberEnd: 6533
    functionName: grouping_check_operand
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 3
    functionsReached:
    - equality_ops_are_compatible
    - OidIsValid
    - grouping_conflict_walker
    - IsA
    - get_collation_isdeterministic
    - grouping_walker_ctx*::get_eqop
    linkageType: ''
    returnType: bool
    signature: "bool grouping_check_operand(Node *arg, Oid opno, Oid inputcollid,\n\t\t\t\t\t
      \  grouping_walker_ctx *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_array_type
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6548,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6550,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6560,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6580,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6583,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6585,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6585,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6586,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6586,1
    - Dst: construct_md_array
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6593,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6595,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6596,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6599,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6600,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6601,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6605,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6607,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:6612,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 7
    argNames:
    - oper
    - leftexpr
    - coltype
    - arraycollid
    - inputcollid
    - exprs
    - haveNonConst
    argTypes:
    - Oid
    - Node*
    - Oid
    - Oid
    - Oid
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6616
      start: 6542
    functionDepth: 1
    functionLinenumber: 6542
    functionLinenumberEnd: 6616
    functionName: make_SAOP_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - get_typlenbyvalalign
    - get_array_type
    - construct_md_array
    - list_length
    - list_free
    - pfree
    - makeNode
    - palloc_array
    - list_make2
    - PointerGetDatum
    - OidIsValid
    - makeConst
    - get_opcode
    linkageType: ''
    returnType: ScalarArrayOpExpr
    signature: "ScalarArrayOpExpr *\nmake_SAOP_expr(Oid oper, Node *leftexpr, Oid
      coltype, Oid arraycollid,\n\t\t\t   Oid inputcollid, List *exprs, bool haveNonConst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6591
      start: 6587
    functionDepth: 0
    functionLinenumber: 6587
    functionLinenumberEnd: 6591
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void foreach_node(Const, value, exprs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:55,1
    - Dst: make_inh_translation_list
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:61,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - parentrel
    - childrel
    - parentRTindex
    - childRTindex
    argTypes:
    - Relation
    - Relation
    - Index
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 65
    functionName: make_append_rel_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - make_inh_translation_list
    - makeNode
    - RelationGetRelid
    linkageType: ''
    returnType: AppendRelInfo
    signature: "AppendRelInfo *\nmake_append_rel_info(Relation parentrel, Relation
      childrel,\n\t\t\t\t\t Index parentRTindex, Index childRTindex)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:87,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:88,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:89,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:98,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:108,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:112,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:115,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:126,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:126,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:146,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:147,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:147,1
    - Dst: SearchSysCacheAttName
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:151,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:152,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:153,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:154,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:156,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:157,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:166,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:167,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:169,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:171,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:172,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:174,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:174,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 4
    argNames:
    - oldrelation
    - newrelation
    - newvarno
    - appinfo
    argTypes:
    - Relation
    - Relation
    - Index
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 185
    functionName: make_inh_translation_list
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 1
    functionsReached:
    - elog
    - strcmp
    - errcode
    - HeapTupleIsValid
    - RelationGetDescr
    - Assert
    - lappend
    - palloc0
    - ereport
    - ReleaseSysCache
    - NameStr
    - RelationGetRelationName
    - GETSTRUCT
    - errmsg
    - SearchSysCacheAttName
    - TupleDescAttr
    - RelationGetRelid
    - makeVar
    linkageType: ''
    returnType: void
    signature: "void make_inh_translation_list(Relation oldrelation, Relation newrelation,\n\t\t\t\t\t\t
      \ Index newvarno,\n\t\t\t\t\t\t  AppendRelInfo *appinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:214,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:214,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - root
    - node
    - nappinfos
    - appinfos
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    - AppendRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 217
    functionName: adjust_appendrel_attrs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 3
    functionsReached:
    - Assert
    - adjust_appendrel_attrs_mutator
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\nadjust_appendrel_attrs(PlannerInfo *root, Node *node, int
      nappinfos,\n\t\t\t\t\t   AppendRelInfo **appinfos)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:229,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:231,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:286,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:287,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:288,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:289,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:289,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:292,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:293,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:294,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:299,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:305,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:307,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:321,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:324,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:352,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:354,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:355,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:359,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:363,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:365,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:387,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:391,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:399,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:401,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:404,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:408,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:419,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:427,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:429,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:443,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:448,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:461,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:461,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:462,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:462,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:463,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:464,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:464,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:471,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:474,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:477,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:481,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:485,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:488,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:491,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:494,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:497,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:500,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:527,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:530,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:533,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:537,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:543,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:552,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:555,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:558,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:561,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:566,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:568,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:579,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:580,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:580,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:582,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:583,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:583,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:585,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 145
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - adjust_appendrel_attrs_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 586
    functionName: adjust_appendrel_attrs_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 2
    functionsReached:
    - elog
    - copyObject
    - memcpy
    - Assert
    - OidIsValid
    - rt_fetch
    - bms_is_member
    - makeNode
    - expression_tree_mutator
    - bms_add_members
    - makeNullConst
    - get_rel_name
    - adjust_appendrel_attrs_mutator
    - palloc
    - list_length
    - list_nth
    - IsA
    - adjust_child_relids
    linkageType: ''
    returnType: Node
    signature: "Node *\nadjust_appendrel_attrs_mutator(Node *node,\n\t\t\t\t\t\t\t
      \  adjust_appendrel_attrs_context *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:608,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:612,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:616,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:618,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:620,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - root
    - node
    - childrel
    - parentrel
    argTypes:
    - PlannerInfo*
    - Node*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 596
    functionDepth: 2
    functionLinenumber: 596
    functionLinenumberEnd: 623
    functionName: adjust_appendrel_attrs_multilevel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 3
    functionsReached:
    - elog
    - adjust_appendrel_attrs
    - adjust_appendrel_attrs_multilevel
    - pfree
    - find_appinfos_by_relids
    linkageType: ''
    returnType: Node
    signature: "Node *\nadjust_appendrel_attrs_multilevel(PlannerInfo *root, Node
      *node,\n\t\t\t\t\t\t\t\t  RelOptInfo *childrel,\n\t\t\t\t\t\t\t\t  RelOptInfo
      *parentrel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:640,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:644,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:646,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:647,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - relids
    - nappinfos
    - appinfos
    argTypes:
    - Relids
    - int
    - AppendRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 657
    functionName: adjust_child_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - bms_is_member
    - bms_add_member
    - bms_copy
    linkageType: ''
    returnType: Relids
    signature: Relids adjust_child_relids(Relids relids, int nappinfos, AppendRelInfo
      **appinfos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:675,1
    - Dst: adjust_child_relids_multilevel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:682,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:686,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:690,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:692,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:694,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - root
    - relids
    - childrel
    - parentrel
    argTypes:
    - PlannerInfo*
    - Relids
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 663
    functionDepth: 2
    functionLinenumber: 663
    functionLinenumberEnd: 697
    functionName: adjust_child_relids_multilevel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 1
    functionsReached:
    - elog
    - pfree
    - adjust_child_relids_multilevel
    - bms_overlap
    - find_appinfos_by_relids
    - adjust_child_relids
    linkageType: ''
    returnType: Relids
    signature: "Relids adjust_child_relids_multilevel(PlannerInfo *root, Relids relids,\n\t\t\t\t\t\t\t
      \  RelOptInfo *childrel,\n\t\t\t\t\t\t\t   RelOptInfo *parentrel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:710,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:710,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:715,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:720,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:721,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:722,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:723,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:724,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:725,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:726,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:728,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - attnums
    - context
    argTypes:
    - List*
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 703
    functionDepth: 3
    functionLinenumber: 703
    functionLinenumberEnd: 731
    functionName: adjust_inherited_attnums
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - elog
    - lappend_int
    - list_length
    - lfirst_int
    - Assert
    - get_rel_name
    - OidIsValid
    - list_nth
    - IsA
    linkageType: ''
    returnType: List
    signature: 'List *

      adjust_inherited_attnums(List *attnums, AppendRelInfo *context)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:715,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:720,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:721,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:722,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:723,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:724,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:725,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:726,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:728,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 713
    functionDepth: 3
    functionLinenumber: 713
    functionLinenumberEnd: 729
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 140
    functionsReached:
    - elog
    - lappend_int
    - lfirst_int
    - get_rel_name
    - list_length
    - list_nth
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, attnums)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:744,1
    - Dst: adjust_inherited_attnums_multilevel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:748,1
    - Dst: adjust_inherited_attnums
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:753,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - root
    - attnums
    - child_relid
    - top_parent_relid
    argTypes:
    - PlannerInfo*
    - List*
    - Index
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 737
    functionDepth: 4
    functionLinenumber: 737
    functionLinenumberEnd: 754
    functionName: adjust_inherited_attnums_multilevel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 2
    functionsReached:
    - elog
    - adjust_inherited_attnums_multilevel
    - adjust_inherited_attnums
    linkageType: ''
    returnType: List
    signature: "List *\nadjust_inherited_attnums_multilevel(PlannerInfo *root, List
      *attnums,\n\t\t\t\t\t\t\t\t\tIndex child_relid, Index top_parent_relid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:770,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:777,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:779,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:783,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:783,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:785,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:787,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:788,1
    - Dst: adjust_inherited_attnums_multilevel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:791,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - root
    - relid
    - processed_tlist
    - update_colnos
    argTypes:
    - PlannerInfo*
    - Index
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 765
    functionDepth: 5
    functionLinenumber: 765
    functionLinenumberEnd: 795
    functionName: get_translated_update_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - adjust_appendrel_attrs_multilevel
    - copyObject
    - Assert
    - bms_is_member
    - adjust_inherited_attnums_multilevel
    - find_base_rel
    linkageType: ''
    returnType: void
    signature: "void get_translated_update_targetlist(PlannerInfo *root, Index relid,\n\t\t\t\t\t\t\t\t
      List **processed_tlist, List **update_colnos)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:816,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:816,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:819,1
    - Dst: find_base_rel_ignore_join
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:826,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:829,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 836
    functionName: find_appinfos_by_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 4
    functionsReached:
    - elog
    - bms_num_members
    - palloc_array
    - bms_next_member
    - find_base_rel_ignore_join
    linkageType: ''
    returnType: AppendRelInfo
    signature: 'AppendRelInfo **

      find_appinfos_by_relids(PlannerInfo *root, Relids relids, int *nappinfos)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:873,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:874,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:875,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:876,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:885,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:886,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:887,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:889,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:897,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:898,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:905,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:910,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:912,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:913,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:915,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:918,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:924,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:930,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:931,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:933,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:933,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:934,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:935,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:936,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:938,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:941,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:944,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:945,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:946,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:948,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 4
    argNames:
    - root
    - orig_var
    - rtindex
    - rowid_name
    argTypes:
    - PlannerInfo*
    - Var*
    - Index
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 863
    functionDepth: 1
    functionLinenumber: 863
    functionLinenumberEnd: 949
    functionName: add_row_identity_var
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - copyObject
    - strcmp
    - exprType
    - pstrdup
    - bms_add_member
    - elog
    - foreach
    - Assert
    - bms_is_member
    - list_length
    - exprTypmod
    - makeTargetEntry
    - lappend
    - lfirst
    - get_typavgwidth
    - bms_make_singleton
    - makeNode
    - equal
    - IsA
    linkageType: ''
    returnType: void
    signature: "void add_row_identity_var(PlannerInfo *root, Var *orig_var,\n\t\t\t\t\t
      Index rtindex, const char *rowid_name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:967,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:977,1
    - Dst: add_row_identity_var
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:983,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:992,1
    - Dst: FdwRoutine*::AddForeignUpdateTargets
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:995,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1016,1
    - Dst: add_row_identity_var
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1022,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 15
    argCount: 4
    argNames:
    - root
    - rtindex
    - target_rte
    - target_relation
    argTypes:
    - PlannerInfo*
    - Index
    - RangeTblEntry*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 958
    functionDepth: 2
    functionLinenumber: 958
    functionLinenumberEnd: 1025
    functionName: add_row_identity_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - Assert
    - FdwRoutine*::AddForeignUpdateTargets
    - add_row_identity_var
    - GetFdwRoutineForRelation
    - makeVar
    linkageType: ''
    returnType: void
    signature: "void add_row_identity_columns(PlannerInfo *root, Index rtindex,\n\t\t\t\t\t\t
      RangeTblEntry *target_rte,\n\t\t\t\t\t\t Relation target_relation)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1054,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1057,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1060,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1081,1
    - Dst: add_row_identity_columns
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1082,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1084,1
    - Dst: build_base_rel_tlists
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1085,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1097,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1099,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1101,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1104,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1107,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1107,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1039
    functionDepth: 3
    functionLinenumber: 1039
    functionLinenumberEnd: 1111
    functionName: distribute_row_identity_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 1
    functionsReached:
    - copyObject
    - foreach
    - IsA
    - Assert
    - rt_fetch
    - add_row_identity_columns
    - lappend
    - build_base_rel_tlists
    - table_open
    - find_base_rel
    - lfirst
    - table_close
    linkageType: ''
    returnType: void
    signature: void distribute_row_identity_vars(PlannerInfo *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:121,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:129,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:133,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:135,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:137,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:150,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:158,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:164,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 171
    functionName: setup_simple_rel_arrays
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 3
    functionsReached:
    - elog
    - palloc0_array
    - foreach
    - Assert
    - lfirst
    - list_length
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void setup_simple_rel_arrays(PlannerInfo *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:187,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:192,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:195,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:199,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - root
    - add_size
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 205
    functionName: expand_planner_arrays
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0_array
    - repalloc0_array
    linkageType: ''
    returnType: void
    signature: void expand_planner_arrays(PlannerInfo *root, int add_size)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:218,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:220,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:224,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:226,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:228,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:260,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:279,1
    - Dst: get_relation_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:365,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:381,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:383,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:385,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:395,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:424,1
    - Dst: apply_child_basequals
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:425,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:432,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 124
    argCount: 3
    argNames:
    - root
    - relid
    - parent
    argTypes:
    - PlannerInfo*
    - int
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 440
    functionName: build_simple_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 4
    functionsReached:
    - elog
    - apply_child_basequals
    - mark_dummy_rel
    - palloc0_array
    - Assert
    - makeNode
    - get_relation_info
    - getRTEPermissionInfo
    - create_empty_pathtarget
    - list_length
    - bms_make_singleton
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      build_simple_rel(PlannerInfo *root, int relid, RelOptInfo *parent)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:458,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:461,1
    - Dst: create_rel_agg_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:468,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:480,1
    - Dst: build_grouped_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:483,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 491
    functionName: build_simple_grouped_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - create_rel_agg_info
    - Assert
    - bms_copy
    - IS_DUMMY_REL
    - build_grouped_rel
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      build_simple_grouped_rel(PlannerInfo *root, RelOptInfo *rel)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:503,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 537
    functionName: build_grouped_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - makeNode
    - memcpy
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      build_grouped_rel(PlannerInfo *root, RelOptInfo *rel)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:556,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - root
    - relid
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 559
    functionName: find_base_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 15
    functionsReached:
    - elog
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      find_base_rel(PlannerInfo *root, int relid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - root
    - relid
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 572
    functionName: find_base_rel_noerr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      find_base_rel_noerr(PlannerInfo *root, int relid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:606,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - root
    - relid
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 609
    functionName: find_base_rel_ignore_join
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 2
    functionsReached:
    - elog
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      find_base_rel_ignore_join(PlannerInfo *root, int relid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:628,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:634,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:636,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 649
    functionName: build_join_rel_hash
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - hash_search
    - foreach
    - Assert
    - hash_create
    - lfirst
    linkageType: ''
    returnType: void
    signature: void build_join_rel_hash(PlannerInfo *root)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:663,1
    - Dst: build_join_rel_hash
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:664,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:679,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:690,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:692,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:694,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 656
    functionDepth: 2
    functionLinenumber: 656
    functionLinenumberEnd: 700
    functionName: find_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - hash_search
    - foreach
    - bms_equal
    - build_join_rel_hash
    - lfirst
    - list_length
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      find_join_rel(PlannerInfo *root, Relids relids)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:722,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:732,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:733,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:740,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:741,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - joinrel
    - outer_rel
    - inner_rel
    argTypes:
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 718
    functionDepth: 1
    functionLinenumber: 718
    functionLinenumberEnd: 749
    functionName: set_foreign_rel_properties
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - GetUserId
    linkageType: ''
    returnType: void
    signature: "void set_foreign_rel_properties(RelOptInfo *joinrel, RelOptInfo *outer_rel,\n\t\t\t\t\t\t
      \  RelOptInfo *inner_rel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:760,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:768,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - root
    - joinrel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 775
    functionName: add_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - lappend
    - hash_search
    linkageType: ''
    returnType: void
    signature: void add_join_rel(PlannerInfo *root, RelOptInfo *joinrel)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:807,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:807,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:807,1
    - Dst: find_join_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:812,1
    - Dst: build_joinrel_restrictlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:821,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:832,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:834,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:841,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:850,1
    - Dst: min_join_parameterization
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:852,1
    - Dst: set_foreign_rel_properties
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:908,1
    - Dst: build_joinrel_tlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:919,1
    - Dst: build_joinrel_tlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:921,1
    - Dst: add_placeholders_to_joinrel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:923,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:933,1
    - Dst: build_joinrel_restrictlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:940,1
    - Dst: build_joinrel_joinlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:945,1
    - Dst: has_relevant_eclass_joinclause
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:951,1
    - Dst: set_joinrel_size_estimates
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:956,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:974,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:975,1
    - Dst: build_joinrel_partition_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:988,1
    - Dst: add_join_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1002,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1003,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1003,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1005,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 100
    argCount: 7
    argNames:
    - root
    - joinrelids
    - outer_rel
    - inner_rel
    - sjinfo
    - pushed_down_joins
    - restrictlist_ptr
    argTypes:
    - PlannerInfo*
    - Relids
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 794
    functionDepth: 3
    functionLinenumber: 794
    functionLinenumberEnd: 1009
    functionName: build_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - IS_OTHER_REL
    - bms_copy
    - add_placeholders_to_joinrel
    - bms_union
    - find_join_rel
    - build_joinrel_restrictlist
    - add_join_rel
    - Assert
    - set_foreign_rel_properties
    - build_joinrel_joinlist
    - bms_num_members
    - lappend
    - min_join_parameterization
    - has_relevant_eclass_joinclause
    - build_joinrel_partition_info
    - build_joinrel_tlist
    - bms_del_members
    - set_joinrel_size_estimates
    - makeNode
    - create_empty_pathtarget
    - is_parallel_safe
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\nbuild_join_rel(PlannerInfo *root,\n\t\t\t   Relids joinrelids,\n\t\t\t
      \  RelOptInfo *outer_rel,\n\t\t\t   RelOptInfo *inner_rel,\n\t\t\t   SpecialJoinInfo
      *sjinfo,\n\t\t\t   List *pushed_down_joins,\n\t\t\t   List **restrictlist_ptr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1031,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1034,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1034,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1034,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1037,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1040,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1048,1
    - Dst: set_foreign_rel_properties
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1106,1
    - Dst: build_child_join_reltarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1109,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1113,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1122,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1123,1
    - Dst: set_joinrel_size_estimates
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1135,1
    - Dst: build_joinrel_partition_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1153,1
    - Dst: find_join_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1153,1
    - Dst: add_join_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1156,1
    - Dst: has_useful_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1164,1
    - Dst: add_child_join_rel_equivalences
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 82
    argCount: 8
    argNames:
    - root
    - outer_rel
    - inner_rel
    - parent_joinrel
    - restrictlist
    - sjinfo
    - nappinfos
    - appinfos
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - List*
    - SpecialJoinInfo*
    - int
    - AppendRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1025
    functionDepth: 3
    functionLinenumber: 1025
    functionLinenumberEnd: 1170
    functionName: build_child_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - adjust_appendrel_attrs
    - set_joinrel_size_estimates
    - add_join_rel
    - IS_OTHER_REL
    - Assert
    - add_child_join_rel_equivalences
    - makeNode
    - bms_copy
    - has_useful_pathkeys
    - set_foreign_rel_properties
    - create_empty_pathtarget
    - find_join_rel
    - build_child_join_reltarget
    - adjust_child_relids
    - build_joinrel_partition_info
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\nbuild_child_join_rel(PlannerInfo *root, RelOptInfo *outer_rel,\n\t\t\t\t\t
      RelOptInfo *inner_rel, RelOptInfo *parent_joinrel,\n\t\t\t\t\t List *restrictlist,
      SpecialJoinInfo *sjinfo,\n\t\t\t\t\t int nappinfos, AppendRelInfo **appinfos)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1201,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - root
    - joinrelids
    - outer_rel
    - inner_rel
    argTypes:
    - PlannerInfo*
    - Relids
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1180
    functionDepth: 1
    functionLinenumber: 1180
    functionLinenumberEnd: 1204
    functionName: min_join_parameterization
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - bms_del_members
    - bms_union
    linkageType: ''
    returnType: Relids
    signature: "Relids min_join_parameterization(PlannerInfo *root,\n\t\t\t\t\t\t
      \ Relids joinrelids,\n\t\t\t\t\t\t  RelOptInfo *outer_rel,\n\t\t\t\t\t\t  RelOptInfo
      *inner_rel)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1270,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1272,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1277,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1280,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1283,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1292,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1295,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1296,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1298,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1299,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1305,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1305,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1306,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1307,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1311,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1312,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1316,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1329,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1330,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1331,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1337,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1348,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1352,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1367,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1370,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1371,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1373,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1374,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1378,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1380,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1380,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1381,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1382,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1386,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1387,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1391,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1397,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 43
    argCount: 6
    argNames:
    - root
    - joinrel
    - input_rel
    - sjinfo
    - pushed_down_joins
    - can_null
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1258
    functionDepth: 3
    functionLinenumber: 1258
    functionLinenumberEnd: 1398
    functionName: build_joinrel_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - elog
    - bms_nonempty_difference
    - copyObject
    - foreach
    - clamp_width_est
    - Assert
    - bms_is_member
    - bms_join
    - lappend
    - find_placeholder_info
    - lfirst
    - find_base_rel
    - nodeTag
    - list_nth
    - bms_intersect
    - IsA
    - bms_is_subset
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: "void build_joinrel_tlist(PlannerInfo *root, RelOptInfo *joinrel,\n\t\t\t\t\tRelOptInfo
      *input_rel,\n\t\t\t\t\tSpecialJoinInfo *sjinfo,\n\t\t\t\t\tList *pushed_down_joins,\n\t\t\t\t\tbool
      can_null)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1305,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1305,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1306,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1301
    functionDepth: 1
    functionLinenumber: 1301
    functionLinenumberEnd: 1309
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 146
    functionsReached:
    - Assert
    - bms_is_member
    - lfirst
    - bms_add_member
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pushed_down_joins)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1378,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1380,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1380,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1381,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1376
    functionDepth: 1
    functionLinenumber: 1376
    functionLinenumberEnd: 1384
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 146
    functionsReached:
    - Assert
    - lfirst
    - bms_add_member
    - bms_is_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pushed_down_joins)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1453,1
    - Dst: subbuild_joinrel_restrictlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1460,1
    - Dst: subbuild_joinrel_restrictlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1462,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1470,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - root
    - joinrel
    - outer_rel
    - inner_rel
    - sjinfo
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1443
    functionDepth: 1
    functionLinenumber: 1443
    functionLinenumberEnd: 1478
    functionName: build_joinrel_restrictlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 2
    functionsReached:
    - list_concat
    - generate_join_implied_equalities
    - bms_union
    - subbuild_joinrel_restrictlist
    linkageType: ''
    returnType: List
    signature: "List *\nbuild_joinrel_restrictlist(PlannerInfo *root,\n\t\t\t\t\t\t
      \  RelOptInfo *joinrel,\n\t\t\t\t\t\t   RelOptInfo *outer_rel,\n\t\t\t\t\t\t
      \  RelOptInfo *inner_rel,\n\t\t\t\t\t\t   SpecialJoinInfo *sjinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: subbuild_joinrel_joinlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1492,1
    - Dst: subbuild_joinrel_joinlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - joinrel
    - outer_rel
    - inner_rel
    argTypes:
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1480
    functionDepth: 1
    functionLinenumber: 1480
    functionLinenumberEnd: 1496
    functionName: build_joinrel_joinlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 2
    functionsReached:
    - subbuild_joinrel_joinlist
    linkageType: ''
    returnType: void
    signature: "void build_joinrel_joinlist(RelOptInfo *joinrel,\n\t\t\t\t\t   RelOptInfo
      *outer_rel,\n\t\t\t\t\t   RelOptInfo *inner_rel)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1507,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1509,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1511,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1524,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1524,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1525,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1539,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1539,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1540,1
    - Dst: list_append_unique_ptr
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1550,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 5
    argNames:
    - root
    - joinrel
    - input_rel
    - both_input_relids
    - new_restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - Relids
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1562
      start: 1498
    functionDepth: 1
    functionLinenumber: 1498
    functionLinenumberEnd: 1562
    functionName: subbuild_joinrel_restrictlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - foreach
    - Assert
    - list_append_unique_ptr
    - lfirst
    - bms_overlap
    - bms_is_subset
    - RINFO_IS_PUSHED_DOWN
    linkageType: ''
    returnType: List
    signature: "List *\nsubbuild_joinrel_restrictlist(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \ RelOptInfo *joinrel,\n\t\t\t\t\t\t\t  RelOptInfo *input_rel,\n\t\t\t\t\t\t\t
      \ Relids both_input_relids,\n\t\t\t\t\t\t\t  List *new_restrictlist)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1572,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1576,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1578,1
    - Dst: list_append_unique_ptr
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - joinrel
    - joininfo_list
    - new_joininfo
    argTypes:
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1564
    functionDepth: 1
    functionLinenumber: 1564
    functionLinenumberEnd: 1600
    functionName: subbuild_joinrel_joinlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - Assert
    - lfirst
    - bms_is_subset
    - list_append_unique_ptr
    linkageType: ''
    returnType: List
    signature: "List *\nsubbuild_joinrel_joinlist(RelOptInfo *joinrel,\n\t\t\t\t\t\t
      \ List *joininfo_list,\n\t\t\t\t\t\t  List *new_joininfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1576,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1578,1
    - Dst: list_append_unique_ptr
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1574
    functionDepth: 1
    functionLinenumber: 1574
    functionLinenumberEnd: 1597
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 147
    functionsReached:
    - lfirst
    - bms_is_subset
    - list_append_unique_ptr
    linkageType: ''
    returnType: void
    signature: void foreach(l, joininfo_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1630,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1632,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1634,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1638,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1640,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1647,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - root
    - kind
    - relids
    argTypes:
    - PlannerInfo*
    - UpperRelationKind
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1616
    functionDepth: 1
    functionLinenumber: 1616
    functionLinenumberEnd: 1656
    functionName: fetch_upper_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 13
    functionsReached:
    - foreach
    - lappend
    - makeNode
    - bms_copy
    - lfirst
    - create_empty_pathtarget
    - bms_equal
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      fetch_upper_rel(PlannerInfo *root, UpperRelationKind kind, Relids relids)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1673,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1680,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1683,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1686,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1667
    functionDepth: 2
    functionLinenumber: 1667
    functionLinenumberEnd: 1689
    functionName: find_childrel_parents
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - find_base_rel
    - bms_add_member
    linkageType: ''
    returnType: Relids
    signature: Relids find_childrel_parents(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1716,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1716,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1719,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1722,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1722,1
    - Dst: find_param_path_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1725,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1732,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1734,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1736,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1738,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1741,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1749,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1757,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1759,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1759,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1764,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1770,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1772,1
    - Dst: get_parameterized_baserel_size
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1776,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1779,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1784,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 3
    argNames:
    - root
    - baserel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1703
    functionDepth: 2
    functionLinenumber: 1703
    functionLinenumberEnd: 1787
    functionName: get_baserel_parampathinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - find_param_path_info
    - get_parameterized_baserel_size
    - foreach
    - generate_join_implied_equalities
    - Assert
    - lappend
    - join_clause_is_movable_into
    - makeNode
    - lfirst
    - list_concat
    - bms_overlap
    - bms_is_empty
    - bms_is_subset
    - bms_add_member
    - bms_union
    linkageType: ''
    returnType: ParamPathInfo
    signature: "ParamPathInfo *\nget_baserel_parampathinfo(PlannerInfo *root, RelOptInfo
      *baserel,\n\t\t\t\t\t\t  Relids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1757,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1759,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1755
    functionDepth: 2
    functionLinenumber: 1755
    functionLinenumberEnd: 1762
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 149
    functionsReached:
    - Assert
    - lfirst
    - join_clause_is_movable_into
    linkageType: ''
    returnType: void
    signature: void foreach(lc, eqclauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1770,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1768
    functionDepth: 1
    functionLinenumber: 1768
    functionLinenumberEnd: 1773
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 149
    functionsReached:
    - lfirst
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pclauses)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1836,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1836,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1842,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1842,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1853,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1855,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1856,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1860,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1861,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1866,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1868,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1870,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1873,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1876,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1879,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1883,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1892,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1894,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1894,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1897,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1901,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1906,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1907,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1910,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1947,1
    - Dst: generate_join_implied_equalities_for_ecs
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1950,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1957,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1959,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1959,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1962,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1965,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1974,1
    - Dst: find_param_path_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1977,1
    - Dst: get_parameterized_joinrel_size
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1981,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1994,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1999,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 7
    argNames:
    - root
    - joinrel
    - outer_path
    - inner_path
    - sjinfo
    - required_outer
    - restrict_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - SpecialJoinInfo*
    - Relids
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1817
    functionDepth: 2
    functionLinenumber: 1817
    functionLinenumberEnd: 2002
    functionName: get_joinrel_parampathinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - find_param_path_info
    - foreach
    - generate_join_implied_equalities
    - Assert
    - lappend
    - join_clause_is_movable_into
    - makeNode
    - lfirst
    - list_concat
    - get_parameterized_joinrel_size
    - PATH_REQ_OUTER
    - bms_overlap
    - generate_join_implied_equalities_for_ecs
    - bms_is_empty
    - bms_is_subset
    - bms_union
    linkageType: ''
    returnType: ParamPathInfo
    signature: "ParamPathInfo *\nget_joinrel_parampathinfo(PlannerInfo *root, RelOptInfo
      *joinrel,\n\t\t\t\t\t\t  Path *outer_path,\n\t\t\t\t\t\t  Path *inner_path,\n\t\t\t\t\t\t
      \ SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t  Relids required_outer,\n\t\t\t\t\t\t
      \ List **restrict_clauses)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1892,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1894,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1894,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1897,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1901,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1906,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1907,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1910,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1911
      start: 1890
    functionDepth: 2
    functionLinenumber: 1890
    functionLinenumberEnd: 1911
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 150
    functionsReached:
    - Assert
    - lfirst
    - join_clause_is_movable_into
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, eclauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1957,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1959,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1959,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1962,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1965,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1966
      start: 1955
    functionDepth: 2
    functionLinenumber: 1955
    functionLinenumberEnd: 1966
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 150
    functionsReached:
    - Assert
    - lfirst
    - join_clause_is_movable_into
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, eclauses)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2020,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2020,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2023,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2026,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2026,1
    - Dst: find_param_path_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2029,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2033,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2038,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - appendrel
    - required_outer
    argTypes:
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2041
      start: 2014
    functionDepth: 1
    functionLinenumber: 2014
    functionLinenumberEnd: 2041
    functionName: get_appendrel_parampathinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - find_param_path_info
    - Assert
    - lappend
    - makeNode
    - bms_overlap
    - bms_is_empty
    - bms_is_subset
    linkageType: ''
    returnType: ParamPathInfo
    signature: 'ParamPathInfo *

      get_appendrel_parampathinfo(RelOptInfo *appendrel, Relids required_outer)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2052,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2054,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2056,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - required_outer
    argTypes:
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2061
      start: 2047
    functionDepth: 1
    functionLinenumber: 2047
    functionLinenumberEnd: 2061
    functionName: find_param_path_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 3
    functionsReached:
    - bms_equal
    - lfirst
    - foreach
    linkageType: ''
    returnType: ParamPathInfo
    signature: 'ParamPathInfo *

      find_param_path_info(RelOptInfo *rel, Relids required_outer)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2078,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2078,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2080,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2081,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2082,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2097,1
    - Dst: get_param_path_clause_serials
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2098,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2099,1
    - Dst: get_param_path_clause_serials
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2100,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2101,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2103,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2105,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2109,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2120,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2122,1
    - Dst: get_param_path_clause_serials
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2125,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2126,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2127,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2129,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - path
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2141
      start: 2068
    functionDepth: 1
    functionLinenumber: 2068
    functionLinenumberEnd: 2141
    functionName: get_param_path_clause_serials
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - get_param_path_clause_serials
    - foreach
    - Assert
    - bms_copy
    - lfirst
    - list_head
    - bms_int_members
    - bms_add_members
    - IsA
    - bms_add_member
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      get_param_path_clause_serials(Path *path)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2160,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2160,1
    - Dst: have_partkey_equi_join
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2179,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2182,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2192,1
    - Dst: set_joinrel_partition_key_exprs
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2210,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2211,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 6
    argNames:
    - root
    - joinrel
    - outer_rel
    - inner_rel
    - sjinfo
    - restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2149
    functionDepth: 1
    functionLinenumber: 2149
    functionLinenumberEnd: 2213
    functionName: build_joinrel_partition_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 2
    functionsReached:
    - Assert
    - IS_PARTITIONED_REL
    - set_joinrel_partition_key_exprs
    - have_partkey_equi_join
    linkageType: ''
    returnType: void
    signature: "void build_joinrel_partition_info(PlannerInfo *root,\n\t\t\t\t\t\t\t
      RelOptInfo *joinrel, RelOptInfo *outer_rel,\n\t\t\t\t\t\t\t RelOptInfo *inner_rel,
      SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t\t List *restrictlist)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2236,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2237,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2240,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2247,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2256,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2257,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2265,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2269,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2272,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2273,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2275,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2276,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2278,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2279,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2281,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2282,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2291,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2301,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2302,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2305,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2306,1
    - Dst: match_expr_to_partition_keys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2315,1
    - Dst: match_expr_to_partition_keys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2318,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2343,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2344,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2348,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2387,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2391,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2393,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2396,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2406,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2408,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2411,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2413,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2415,1
    - Dst: exprs_known_equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2417,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2433,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2435,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 83
    argCount: 6
    argNames:
    - root
    - joinrel
    - rel1
    - rel2
    - jointype
    - restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2456
      start: 2222
    functionDepth: 1
    functionLinenumber: 2222
    functionLinenumberEnd: 2456
    functionName: have_partkey_equi_join
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - get_mergejoin_opfamilies
    - bms_is_subset
    - op_in_opfamily
    - foreach
    - Assert
    - linitial
    - linitial_oid
    - OidIsValid
    - list_member_oid
    - IS_OUTER_JOIN
    - RINFO_IS_PUSHED_DOWN
    - remove_nulling_relids
    - exprs_known_equal
    - exprCollation
    - lfirst
    - memset
    - lfirst_node
    - op_strict
    - get_opfamily_member
    - castNode
    - match_expr_to_partition_keys
    - lsecond
    - bms_overlap
    linkageType: ''
    returnType: bool
    signature: "bool have_partkey_equi_join(PlannerInfo *root, RelOptInfo *joinrel,\n\t\t\t\t\t
      \  RelOptInfo *rel1, RelOptInfo *rel2,\n\t\t\t\t\t   JoinType jointype, List
      *restrictlist)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2247,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2256,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2257,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2265,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2269,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2272,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2273,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2275,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2276,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2278,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2279,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2281,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2282,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2291,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2301,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2302,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2305,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2306,1
    - Dst: match_expr_to_partition_keys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2315,1
    - Dst: match_expr_to_partition_keys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2318,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2343,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2344,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2348,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2245
    functionDepth: 1
    functionLinenumber: 2245
    functionLinenumberEnd: 2358
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 153
    functionsReached:
    - IS_OUTER_JOIN
    - op_in_opfamily
    - op_strict
    - linitial
    - castNode
    - remove_nulling_relids
    - match_expr_to_partition_keys
    - lsecond
    - bms_overlap
    - OidIsValid
    - list_member_oid
    - bms_is_subset
    - RINFO_IS_PUSHED_DOWN
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, restrictlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2476,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2477,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2480,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2481,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2488,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2490,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2490,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2504,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2506,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2506,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - expr
    - rel
    - strict_op
    argTypes:
    - Expr*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2512
      start: 2469
    functionDepth: 1
    functionLinenumber: 2469
    functionLinenumberEnd: 2512
    functionName: match_expr_to_partition_keys
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 2
    functionsReached:
    - foreach
    - Assert
    - castNode
    - lfirst
    - equal
    - IsA
    linkageType: ''
    returnType: int
    signature: int match_expr_to_partition_keys(Expr *expr, RelOptInfo *rel, bool
      strict_op)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2526,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2527,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2558,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2559,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2572,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2573,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2584,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2585,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2587,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2598,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2600,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2602,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2629,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2629,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2631,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2636,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2637,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2639,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2640,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2641,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2643,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2649,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 4
    argNames:
    - joinrel
    - outer_rel
    - inner_rel
    - jointype
    argTypes:
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2518
    functionDepth: 1
    functionLinenumber: 2518
    functionLinenumberEnd: 2655
    functionName: set_joinrel_partition_key_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_array
    - foreach
    - exprType
    - list_concat_copy
    - lappend
    - makeNode
    - exprCollation
    - list_make2
    - lfirst
    - list_concat
    - list_copy
    linkageType: ''
    returnType: void
    signature: "void set_joinrel_partition_key_exprs(RelOptInfo *joinrel,\n\t\t\t\t\t\t\t\tRelOptInfo
      *outer_rel, RelOptInfo *inner_rel,\n\t\t\t\t\t\t\t\tJoinType jointype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2636,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2637,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2639,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2640,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2641,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2644
      start: 2634
    functionDepth: 1
    functionLinenumber: 2634
    functionLinenumberEnd: 2644
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 155
    functionsReached:
    - exprType
    - lappend
    - makeNode
    - exprCollation
    - list_make2
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, list_concat_copy(inner_expr, inner_null_expr))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - root
    - parentrel
    - childrel
    - nappinfos
    - appinfos
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - int
    - AppendRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2678
      start: 2661
    functionDepth: 2
    functionLinenumber: 2661
    functionLinenumberEnd: 2678
    functionName: build_child_join_reltarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - adjust_appendrel_attrs
    linkageType: ''
    returnType: void
    signature: "void build_child_join_reltarget(PlannerInfo *root,\n\t\t\t\t\t\t   RelOptInfo
      *parentrel,\n\t\t\t\t\t\t   RelOptInfo *childrel,\n\t\t\t\t\t\t   int nappinfos,\n\t\t\t\t\t\t
      \  AppendRelInfo **appinfos)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2705,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2706,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2722,1
    - Dst: IS_GROUPED_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2722,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2726,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2736,1
    - Dst: eager_aggregation_possible_for_relation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2752,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2759,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2760,1
    - Dst: init_grouping_targets
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2763,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2775,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2777,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2780,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2780,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2782,1
    - Dst: mark_partial_aggref
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2783,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2785,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2789,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2790,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2793,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2802,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 3
    argNames:
    - root
    - rel
    - calculate_grouped_rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2814
      start: 2690
    functionDepth: 3
    functionLinenumber: 2690
    functionLinenumberEnd: 2814
    functionName: create_rel_agg_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - adjust_appendrel_attrs_multilevel
    - add_column_to_pathtarget
    - copyObject
    - foreach
    - IS_OTHER_REL
    - Assert
    - mark_partial_aggref
    - makeNode
    - eager_aggregation_possible_for_relation
    - IS_GROUPED_REL
    - create_empty_pathtarget
    - set_pathtarget_cost_width
    - init_grouping_targets
    - IsA
    - estimate_num_groups
    - lfirst_node
    linkageType: ''
    returnType: RelAggInfo
    signature: "RelAggInfo *\ncreate_rel_agg_info(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\tbool
      calculate_grouped_rows)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2837,1
    - Dst: find_base_rel_ignore_join
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2839,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2844,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2861,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2863,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2869,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2870,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2877,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2879,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2881,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2886,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2893,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2897,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2897,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2908,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2913
      start: 2820
    functionDepth: 2
    functionLinenumber: 2820
    functionLinenumberEnd: 2913
    functionName: eager_aggregation_possible_for_relation
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - foreach
    - Assert
    - lfirst
    - bms_overlap
    - bms_next_member
    - IsA
    - bms_is_subset
    - find_base_rel_ignore_join
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: bool eager_aggregation_possible_for_relation(PlannerInfo *root, RelOptInfo
      *rel)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2937,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2939,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2952,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2962,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2962,1
    - Dst: get_expression_sortgroupref
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2968,1
    - Dst: get_sortgroupref_clause
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2974,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2975,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2982,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2987,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2993,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2995,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2996,1
    - Dst: is_var_needed_by_join
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2999,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3023,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3023,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3025,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3026,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3029,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3041,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3042,1
    - Dst: OidFunctionCall1Coll
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3042,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3043,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3044,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3048,1
    - Dst: get_sort_group_operators
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3052,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3052,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3058,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3061,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3064,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3065,1
    - Dst: is_var_in_aggref_only
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3067,1
    - Dst: add_new_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3075,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3084,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3098,1
    - Dst: check_functional_grouping
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3101,1
    - Dst: add_new_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3111,1
    - Dst: add_new_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3112,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 50
    argCount: 6
    argNames:
    - root
    - rel
    - target
    - agg_input
    - group_clauses
    - group_exprs
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - PathTarget*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3131
      start: 2926
    functionDepth: 1
    functionLinenumber: 2926
    functionLinenumberEnd: 3131
    functionName: init_grouping_targets
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - is_var_needed_by_join
    - add_new_column_to_pathtarget
    - exprType
    - DatumGetBool
    - add_column_to_pathtarget
    - foreach
    - Assert
    - OidIsValid
    - get_opfamily_proc
    - ObjectIdGetDatum
    - OidFunctionCall1Coll
    - get_sort_group_operators
    - lookup_type_cache
    - list_member
    - get_expression_sortgroupref
    - lappend
    - exprCollation
    - lfirst
    - lfirst_node
    - makeNode
    - get_sortgroupref_clause
    - is_var_in_aggref_only
    - IsA
    - check_functional_grouping
    linkageType: ''
    returnType: bool
    signature: "bool init_grouping_targets(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t
      \ PathTarget *target, PathTarget *agg_input,\n\t\t\t\t\t  List **group_clauses,
      List **group_exprs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3098,1
    - Dst: check_functional_grouping
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3101,1
    - Dst: add_new_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3111,1
    - Dst: add_new_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3128
      start: 3092
    functionDepth: 1
    functionLinenumber: 3092
    functionLinenumberEnd: 3128
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 158
    functionsReached:
    - add_new_column_to_pathtarget
    - check_functional_grouping
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, possibly_dependent)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3146,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3151,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3151,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3153,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3156,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3161,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3163,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3167,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - root
    - var
    argTypes:
    - PlannerInfo*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3171
      start: 3138
    functionDepth: 1
    functionLinenumber: 3138
    functionLinenumberEnd: 3171
    functionName: is_var_in_aggref_only
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - foreach
    - list_free
    - Assert
    - list_member
    - bms_is_member
    - pull_var_clause
    - IsA
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: bool is_var_in_aggref_only(PlannerInfo *root, Var *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3189,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3190,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3192,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - root
    - var
    - rel
    argTypes:
    - PlannerInfo*
    - Var*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3196
      start: 3177
    functionDepth: 2
    functionLinenumber: 3177
    functionLinenumberEnd: 3196
    functionName: is_var_needed_by_join
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - bms_nonempty_difference
    - find_base_rel
    - bms_add_member
    - bms_copy
    linkageType: ''
    returnType: bool
    signature: bool is_var_needed_by_join(PlannerInfo *root, Var *var, RelOptInfo
      *rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3210,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3210,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3212,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3217,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3218,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3220,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3224,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3231,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3236,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:3238,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3245
      start: 3205
    functionDepth: 1
    functionLinenumber: 3205
    functionLinenumberEnd: 3245
    functionName: get_expression_sortgroupref
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - foreach
    - Assert
    - bms_is_member
    - lfirst
    - equal
    - IsA
    - lfirst_node
    linkageType: ''
    returnType: Index
    signature: Index get_expression_sortgroupref(PlannerInfo *root, Expr *expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - root
    - expr
    - phrels
    argTypes:
    - PlannerInfo*
    - Expr*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 67
    functionName: make_placeholder_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: PlaceHolderVar
    signature: 'PlaceHolderVar *

      make_placeholder_expr(PlannerInfo *root, Expr *expr, Relids phrels)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:91,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:100,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:106,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:108,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:111,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:128,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:129,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:130,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:132,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:135,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:135,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:139,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:139,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:140,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:149,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:161,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:164,1
    - Dst: find_placeholders_in_expr
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:174,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 2
    argNames:
    - root
    - phv
    argTypes:
    - PlannerInfo*
    - PlaceHolderVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 177
    functionName: find_placeholder_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 7
    functionsReached:
    - elog
    - pull_varnos
    - exprTypmod
    - copyObject
    - palloc0_array
    - Assert
    - exprType
    - repalloc0_array
    - lappend
    - makeNode
    - bms_copy
    - bms_int_members
    - bms_difference
    - find_placeholders_in_expr
    - bms_is_empty
    - get_typavgwidth
    linkageType: ''
    returnType: PlaceHolderInfo
    signature: 'PlaceHolderInfo *

      find_placeholder_info(PlannerInfo *root, PlaceHolderVar *phv)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:196,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:197,1
    - Dst: find_placeholders_recurse
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 200
    functionName: find_placeholders_in_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - find_placeholders_recurse
    linkageType: ''
    returnType: void
    signature: void find_placeholders_in_jointree(PlannerInfo *root)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:213,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:217,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:225,1
    - Dst: find_placeholders_recurse
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:227,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:227,1
    - Dst: find_placeholders_in_expr
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:233,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:235,1
    - Dst: find_placeholders_recurse
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:242,1
    - Dst: find_placeholders_recurse
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:243,1
    - Dst: find_placeholders_in_expr
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:246,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:249,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:250,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - root
    - jtnode
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 251
    functionName: find_placeholders_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - find_placeholders_recurse
    - lfirst
    - find_placeholders_in_expr
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void find_placeholders_recurse(PlannerInfo *root, Node *jtnode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:268,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:274,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:277,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:281,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 284
    functionName: find_placeholders_in_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 2
    functionsReached:
    - list_free
    - find_placeholder_info
    - lfirst
    - pull_var_clause
    - IsA
    linkageType: ''
    returnType: void
    signature: void find_placeholders_in_expr(PlannerInfo *root, Node *expr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:274,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:277,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 282
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 161
    functionsReached:
    - find_placeholder_info
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(vl, vars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:306,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:308,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:309,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:314,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 317
    functionName: fix_placeholder_input_needed_levels
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - add_vars_to_targetlist
    - foreach
    - list_free
    - lfirst
    - pull_var_clause
    linkageType: ''
    returnType: void
    signature: void fix_placeholder_input_needed_levels(PlannerInfo *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:333,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:335,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:336,1
    - Dst: add_vars_to_attr_needed
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:341,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 328
    functionDepth: 2
    functionLinenumber: 328
    functionLinenumberEnd: 344
    functionName: rebuild_placeholder_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 2
    functionsReached:
    - foreach
    - list_free
    - lfirst
    - pull_var_clause
    - add_vars_to_attr_needed
    linkageType: ''
    returnType: void
    signature: void rebuild_placeholder_attr_needed(PlannerInfo *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:362,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:364,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:368,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:369,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:378,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:381,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:382,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 386
    functionName: add_placeholders_to_base_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - bms_nonempty_difference
    - copyObject
    - foreach
    - Assert
    - lappend
    - lfirst
    - find_base_rel
    - bms_get_singleton_member
    linkageType: ''
    returnType: void
    signature: void add_placeholders_to_base_rels(PlannerInfo *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:410,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:412,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:415,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:418,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:433,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:434,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:445,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:447,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:449,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:472,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:477,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - root
    - joinrel
    - outer_rel
    - inner_rel
    - sjinfo
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 478
    functionName: add_placeholders_to_joinrel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - bms_nonempty_difference
    - copyObject
    - foreach
    - clamp_width_est
    - Assert
    - lappend
    - cost_qual_eval_node
    - lfirst
    - bms_add_members
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: "void add_placeholders_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel,\n\t\t\t\t\t\t\tRelOptInfo
      *outer_rel, RelOptInfo *inner_rel,\n\t\t\t\t\t\t\tSpecialJoinInfo *sjinfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: contain_placeholder_references_walker
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - root
    - clause
    - relid
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 505
    functionName: contain_placeholder_references_to
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - contain_placeholder_references_walker
    linkageType: ''
    returnType: bool
    signature: "bool contain_placeholder_references_to(PlannerInfo *root, Node *clause,\n\t\t\t\t\t\t\t\t
      \ int relid)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:513,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:521,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:534,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:540,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:547,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - contain_placeholder_references_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 549
    functionName: contain_placeholder_references_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - query_tree_walker
    - bms_is_member
    linkageType: ''
    returnType: bool
    signature: "bool contain_placeholder_references_walker(Node *node,\n\t\t\t\t\t\t\t\t\t
      \ contain_placeholder_references_context *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:580,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:580,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:583,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:587,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - root
    - phinfo
    argTypes:
    - PlannerInfo*
    - PlaceHolderInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 589
    functionName: get_placeholder_nulling_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 0
    functionsReached:
    - bms_del_members
    - Assert
    - bms_is_member
    - bms_add_members
    - bms_next_member
    linkageType: ''
    returnType: Relids
    signature: Relids get_placeholder_nulling_relids(PlannerInfo *root, PlaceHolderInfo
      *phinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: contain_noop_phv_walker
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:617,1
    - Dst: strip_noop_phvs_mutator
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:620,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 621
    functionName: strip_noop_phvs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - strip_noop_phvs_mutator
    - contain_noop_phv_walker
    linkageType: ''
    returnType: Node
    signature: 'Node *

      strip_noop_phvs(Node *node)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:637,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:641,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:645,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 647
    functionName: contain_noop_phv_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - bms_is_empty
    linkageType: ''
    returnType: bool
    signature: bool contain_noop_phv_walker(Node *node, void *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:662,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:666,1
    - Dst: strip_noop_phvs_mutator
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:669,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:676,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 678
    functionName: strip_noop_phvs_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 2
    functionsReached:
    - expression_tree_mutator
    - strip_noop_phvs_mutator
    - IsA
    - bms_is_empty
    linkageType: ''
    returnType: Node
    signature: 'Node *

      strip_noop_phvs_mutator(Node *node, void *context)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:71,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 3
    argNames:
    - path1
    - path2
    - criterion
    argTypes:
    - Path*
    - Path*
    - CostSelector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 111
    functionName: compare_path_costs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - unlikely
    linkageType: ''
    returnType: int
    signature: int compare_path_costs(Path *path1, Path *path2, CostSelector criterion)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:130,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:139,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - path1
    - path2
    - fraction
    argTypes:
    - Path*
    - Path*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 149
    functionName: compare_fractional_path_costs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - unlikely
    - compare_path_costs
    linkageType: ''
    returnType: int
    signature: "int compare_fractional_path_costs(Path *path1, Path *path2,\n\t\t\t\t\t\t\t
      \ double fraction)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:187,1
    - Dst: CONSIDER_PATH_STARTUP_COST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:202,1
    - Dst: CONSIDER_PATH_STARTUP_COST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:214,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 3
    argNames:
    - path1
    - path2
    - fuzz_factor
    argTypes:
    - Path*
    - Path*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 238
    functionName: compare_path_costs_fuzzily
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - unlikely
    - CONSIDER_PATH_STARTUP_COST
    linkageType: ''
    returnType: PathCostComparison
    signature: PathCostComparison compare_path_costs_fuzzily(Path *path1, Path *path2,
      double fuzz_factor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 185
    functionName: CONSIDER_PATH_STARTUP_COST
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONSIDER_PATH_STARTUP_COST(p)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:276,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:276,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:279,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:284,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:286,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:292,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:310,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:310,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:311,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:315,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:353,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:356,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:360,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:363,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:379,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 48
    argCount: 1
    argNames:
    - parent_rel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 384
    functionName: set_cheapest
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 13
    functionsReached:
    - elog
    - compare_pathkeys
    - foreach
    - Assert
    - lappend
    - lfirst
    - PATH_REQ_OUTER
    - bms_subset_compare
    - IsA
    - compare_path_costs
    - lcons
    linkageType: ''
    returnType: void
    signature: void set_cheapest(RelOptInfo *parent_rel)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:470,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:480,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:482,1
    - Dst: compare_path_costs_fuzzily
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:491,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:511,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:518,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:518,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:519,1
    - Dst: compare_path_costs_fuzzily
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:565,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:587,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:587,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:588,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:599,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:599,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:600,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:624,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:630,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:631,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:642,1
    - Dst: list_insert_nth
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:658,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:663,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:664,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 75
    argCount: 2
    argNames:
    - parent_rel
    - new_path
    argTypes:
    - RelOptInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 458
    functionDepth: 2
    functionLinenumber: 458
    functionLinenumberEnd: 666
    functionName: add_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 16
    functionsReached:
    - compare_pathkeys
    - foreach_current_index
    - foreach_delete_current
    - foreach
    - pfree
    - compare_path_costs_fuzzily
    - CHECK_FOR_INTERRUPTS
    - lfirst
    - PATH_REQ_OUTER
    - bms_subset_compare
    - IsA
    - list_insert_nth
    linkageType: ''
    returnType: void
    signature: void add_path(RelOptInfo *parent_rel, Path *new_path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:700,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:702,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:711,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:735,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:741,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:741,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 6
    argNames:
    - parent_rel
    - disabled_nodes
    - startup_cost
    - total_cost
    - pathkeys
    - required_outer
    argTypes:
    - RelOptInfo*
    - int
    - Cost
    - Cost
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 751
    functionName: add_path_precheck
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - compare_pathkeys
    - foreach
    - unlikely
    - lfirst
    - PATH_REQ_OUTER
    - bms_equal
    linkageType: ''
    returnType: bool
    signature: "bool add_path_precheck(RelOptInfo *parent_rel, int disabled_nodes,\n\t\t\t\t
      \ Cost startup_cost, Cost total_cost,\n\t\t\t\t  List *pathkeys, Relids required_outer)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:806,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:812,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:814,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:819,1
    - Dst: compare_path_costs_fuzzily
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:833,1
    - Dst: compare_path_costs_fuzzily
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:851,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:865,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:866,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:877,1
    - Dst: list_insert_nth
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:893,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:898,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 2
    argNames:
    - parent_rel
    - new_path
    argTypes:
    - RelOptInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 792
    functionDepth: 2
    functionLinenumber: 792
    functionLinenumberEnd: 900
    functionName: add_partial_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 6
    functionsReached:
    - compare_pathkeys
    - foreach_delete_current
    - foreach
    - Assert
    - pfree
    - compare_path_costs_fuzzily
    - CHECK_FOR_INTERRUPTS
    - lfirst
    - foreach_current_index
    - list_insert_nth
    linkageType: ''
    returnType: void
    signature: void add_partial_path(RelOptInfo *parent_rel, Path *new_path)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:930,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:932,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:942,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:983,1
    - Dst: add_path_precheck
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1008,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 35
    argCount: 5
    argNames:
    - parent_rel
    - disabled_nodes
    - startup_cost
    - total_cost
    - pathkeys
    argTypes:
    - RelOptInfo*
    - int
    - Cost
    - Cost
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 911
    functionDepth: 2
    functionLinenumber: 911
    functionLinenumberEnd: 1013
    functionName: add_partial_path_precheck
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - compare_pathkeys
    - foreach
    - add_path_precheck
    - unlikely
    - lfirst
    linkageType: ''
    returnType: bool
    signature: "bool add_partial_path_precheck(RelOptInfo *parent_rel, int disabled_nodes,\n\t\t\t\t\t\t
      \ Cost startup_cost, Cost total_cost, List *pathkeys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1029,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1034,1
    - Dst: cost_seqscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - root
    - rel
    - required_outer
    - parallel_workers
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1025
    functionDepth: 3
    functionLinenumber: 1025
    functionLinenumberEnd: 1044
    functionName: create_seqscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - cost_seqscan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: "Path *\ncreate_seqscan_path(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\tRelids
      required_outer, int parallel_workers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1053,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1058,1
    - Dst: cost_samplescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1050
    functionDepth: 3
    functionLinenumber: 1050
    functionLinenumberEnd: 1068
    functionName: create_samplescan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_samplescan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: 'Path *

      create_samplescan_path(PlannerInfo *root, RelOptInfo *rel, Relids required_outer)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1104,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1110,1
    - Dst: cost_index
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 11
    argNames:
    - root
    - index
    - indexclauses
    - indexorderbys
    - indexorderbycols
    - pathkeys
    - indexscandir
    - indexonly
    - required_outer
    - loop_count
    - partial_path
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - List*
    - List*
    - List*
    - List*
    - ScanDirection
    - bool
    - Relids
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1134
    functionName: create_index_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - cost_index
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: IndexPath
    signature: "IndexPath *\ncreate_index_path(PlannerInfo *root,\n\t\t\t\t  IndexOptInfo
      *index,\n\t\t\t\t  List *indexclauses,\n\t\t\t\t  List *indexorderbys,\n\t\t\t\t
      \ List *indexorderbycols,\n\t\t\t\t  List *pathkeys,\n\t\t\t\t  ScanDirection
      indexscandir,\n\t\t\t\t  bool indexonly,\n\t\t\t\t  Relids required_outer,\n\t\t\t\t
      \ double loop_count,\n\t\t\t\t  bool partial_path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1156,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1161,1
    - Dst: cost_bitmap_heap_scan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 6
    argNames:
    - root
    - rel
    - bitmapqual
    - required_outer
    - loop_count
    - parallel_degree
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Relids
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1148
    functionDepth: 3
    functionLinenumber: 1148
    functionLinenumberEnd: 1175
    functionName: create_bitmap_heap_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_bitmap_heap_scan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: BitmapHeapPath
    signature: "BitmapHeapPath *\ncreate_bitmap_heap_path(PlannerInfo *root,\n\t\t\t\t\t\tRelOptInfo
      *rel,\n\t\t\t\t\t\tPath *bitmapqual,\n\t\t\t\t\t\tRelids required_outer,\n\t\t\t\t\t\tdouble
      loop_count,\n\t\t\t\t\t\tint parallel_degree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1186,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1201,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1203,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1204,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1206,1
    - Dst: cost_bitmap_and_node
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - root
    - rel
    - bitmapquals
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1181
    functionDepth: 3
    functionLinenumber: 1181
    functionLinenumberEnd: 1227
    functionName: create_bitmap_and_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_bitmap_and_node
    - makeNode
    - lfirst
    - PATH_REQ_OUTER
    - bms_add_members
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: BitmapAndPath
    signature: "BitmapAndPath *\ncreate_bitmap_and_path(PlannerInfo *root,\n\t\t\t\t\t
      \  RelOptInfo *rel,\n\t\t\t\t\t   List *bitmapquals)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1201,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1203,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1199
    functionDepth: 1
    functionLinenumber: 1199
    functionLinenumberEnd: 1205
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 170
    functionsReached:
    - bms_add_members
    - lfirst
    - PATH_REQ_OUTER
    linkageType: ''
    returnType: void
    signature: void foreach(lc, bitmapquals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1238,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1253,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1255,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1256,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1258,1
    - Dst: cost_bitmap_or_node
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - root
    - rel
    - bitmapquals
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1233
    functionDepth: 3
    functionLinenumber: 1233
    functionLinenumberEnd: 1279
    functionName: create_bitmap_or_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_bitmap_or_node
    - makeNode
    - lfirst
    - PATH_REQ_OUTER
    - bms_add_members
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: BitmapOrPath
    signature: "BitmapOrPath *\ncreate_bitmap_or_path(PlannerInfo *root,\n\t\t\t\t\t
      \ RelOptInfo *rel,\n\t\t\t\t\t  List *bitmapquals)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1253,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1255,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1251
    functionDepth: 1
    functionLinenumber: 1251
    functionLinenumberEnd: 1257
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 170
    functionsReached:
    - bms_add_members
    - lfirst
    - PATH_REQ_OUTER
    linkageType: ''
    returnType: void
    signature: void foreach(lc, bitmapquals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1289,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1294,1
    - Dst: cost_tidscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - root
    - rel
    - tidquals
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1285
    functionDepth: 3
    functionLinenumber: 1285
    functionLinenumberEnd: 1307
    functionName: create_tidscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - get_baserel_parampathinfo
    - cost_tidscan
    linkageType: ''
    returnType: TidPath
    signature: "TidPath *\ncreate_tidscan_path(PlannerInfo *root, RelOptInfo *rel,
      List *tidquals,\n\t\t\t\t\tRelids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1319,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1324,1
    - Dst: cost_tidrangescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 5
    argNames:
    - root
    - rel
    - tidrangequals
    - required_outer
    - parallel_workers
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - Relids
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1314
    functionDepth: 3
    functionLinenumber: 1314
    functionLinenumberEnd: 1337
    functionName: create_tidrangescan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - get_baserel_parampathinfo
    - cost_tidrangescan
    linkageType: ''
    returnType: TidRangePath
    signature: "TidRangePath *\ncreate_tidrangescan_path(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t List *tidrangequals, Relids required_outer,\n\t\t\t\t\t\t
      int parallel_workers)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1359,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1362,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1381,1
    - Dst: get_appendrel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1409,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1411,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1412,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1414,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1415,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1421,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1426,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1434,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1434,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1434,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1437,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1449,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1451,1
    - Dst: cost_append
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1460,1
    - Dst: cost_append
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1465,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 8
    argNames:
    - root
    - rel
    - input
    - pathkeys
    - required_outer
    - parallel_workers
    - parallel_aware
    - rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - AppendPathInput
    - List*
    - Relids
    - int
    - bool
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1351
    functionDepth: 3
    functionLinenumber: 1351
    functionLinenumberEnd: 1472
    functionName: create_append_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - foreach
    - list_sort
    - Assert
    - linitial
    - bms_equal
    - cost_append
    - makeNode
    - lfirst
    - list_concat
    - PATH_REQ_OUTER
    - list_length
    - get_baserel_parampathinfo
    - get_appendrel_parampathinfo
    linkageType: ''
    returnType: AppendPath
    signature: "AppendPath *\ncreate_append_path(PlannerInfo *root,\n\t\t\t\t   RelOptInfo
      *rel,\n\t\t\t\t   AppendPathInput input,\n\t\t\t\t   List *pathkeys, Relids
      required_outer,\n\t\t\t\t   int parallel_workers, bool parallel_aware,\n\t\t\t\t
      \  double rows)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1486,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1487,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1490,1
    - Dst: bms_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1483
    functionDepth: 2
    functionLinenumber: 1483
    functionLinenumberEnd: 1494
    functionName: append_total_cost_compare
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - bms_compare
    - lfirst
    - compare_path_costs
    linkageType: ''
    returnType: int
    signature: int append_total_cost_compare(const ListCell *a, const ListCell *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1508,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1509,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1512,1
    - Dst: bms_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1516
      start: 1505
    functionDepth: 2
    functionLinenumber: 1505
    functionLinenumberEnd: 1516
    functionName: append_startup_cost_compare
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - bms_compare
    - lfirst
    - compare_path_costs
    linkageType: ''
    returnType: int
    signature: int append_startup_cost_compare(const ListCell *a, const ListCell *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1541,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1541,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1541,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1558,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1572,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1578,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1578,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1578,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1584,1
    - Dst: cost_incremental_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1597,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1612,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1638,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1639,1
    - Dst: cost_merge_append
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1647,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1648,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 6
    argNames:
    - root
    - rel
    - subpaths
    - child_append_relid_sets
    - pathkeys
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1523
    functionDepth: 1
    functionLinenumber: 1523
    functionLinenumberEnd: 1654
    functionName: create_merge_append_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - list_length
    - Assert
    - linitial
    - pathkeys_count_contained_in
    - makeNode
    - lfirst
    - cost_incremental_sort
    - PATH_REQ_OUTER
    - cost_sort
    - bms_equal
    - cost_merge_append
    - bms_is_empty
    linkageType: ''
    returnType: MergeAppendPath
    signature: "MergeAppendPath *\ncreate_merge_append_path(PlannerInfo *root,\n\t\t\t\t\t\t
      RelOptInfo *rel,\n\t\t\t\t\t\t List *subpaths,\n\t\t\t\t\t\t List *child_append_relid_sets,\n\t\t\t\t\t\t
      List *pathkeys,\n\t\t\t\t\t\t Relids required_outer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1572,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1578,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1578,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1578,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1584,1
    - Dst: cost_incremental_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1597,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1612,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1630
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 1630
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 171
    functionsReached:
    - Assert
    - pathkeys_count_contained_in
    - lfirst
    - cost_incremental_sort
    - PATH_REQ_OUTER
    - cost_sort
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: void foreach(l, subpaths)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1667,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - root
    - rel
    - target
    - havingqual
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1663
    functionDepth: 1
    functionLinenumber: 1663
    functionLinenumberEnd: 1704
    functionName: create_group_result_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 2
    functionsReached:
    - cost_qual_eval
    - makeNode
    linkageType: ''
    returnType: GroupResultPath
    signature: "GroupResultPath *\ncreate_group_result_path(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t PathTarget *target, List *havingqual)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1716,1
    - Dst: cost_material
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1730,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - rel
    - subpath
    - enabled
    argTypes:
    - RelOptInfo*
    - Path*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1711
    functionDepth: 1
    functionLinenumber: 1711
    functionLinenumberEnd: 1739
    functionName: create_material_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - cost_material
    - makeNode
    linkageType: ''
    returnType: MaterialPath
    signature: 'MaterialPath *

      create_material_path(RelOptInfo *rel, Path *subpath, bool enabled)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1750,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1752,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 8
    argNames:
    - root
    - rel
    - subpath
    - param_exprs
    - hash_operators
    - singlerow
    - binary_mode
    - est_calls
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - List*
    - List*
    - bool
    - bool
    - Cardinality
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1804
      start: 1745
    functionDepth: 1
    functionLinenumber: 1745
    functionLinenumberEnd: 1804
    functionName: create_memoize_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - makeNode
    - clamp_row_est
    linkageType: ''
    returnType: MemoizePath
    signature: "MemoizePath *\ncreate_memoize_path(PlannerInfo *root, RelOptInfo *rel,
      Path *subpath,\n\t\t\t\t\tList *param_exprs, List *hash_operators,\n\t\t\t\t\tbool
      singlerow, bool binary_mode, Cardinality est_calls)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1823,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1832,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1833,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1837,1
    - Dst: cost_gather_merge
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 7
    argNames:
    - root
    - rel
    - subpath
    - target
    - pathkeys
    - required_outer
    - rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    - List*
    - Relids
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1812
    functionDepth: 3
    functionLinenumber: 1812
    functionLinenumberEnd: 1855
    functionName: create_gather_merge_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 2
    functionsReached:
    - elog
    - cost_gather_merge
    - Assert
    - makeNode
    - pathkeys_contained_in
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: GatherMergePath
    signature: "GatherMergePath *\ncreate_gather_merge_path(PlannerInfo *root, RelOptInfo
      *rel, Path *subpath,\n\t\t\t\t\t\t PathTarget *target, List *pathkeys,\n\t\t\t\t\t\t
      Relids required_outer, double *rows)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1868,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1870,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1875,1
    - Dst: cost_gather
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1893,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 6
    argNames:
    - root
    - rel
    - subpath
    - target
    - required_outer
    - rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    - Relids
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1896
      start: 1864
    functionDepth: 3
    functionLinenumber: 1864
    functionLinenumberEnd: 1896
    functionName: create_gather_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - cost_gather
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: GatherPath
    signature: "GatherPath *\ncreate_gather_path(PlannerInfo *root, RelOptInfo *rel,
      Path *subpath,\n\t\t\t\t   PathTarget *target, Relids required_outer, double
      *rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1913,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1918,1
    - Dst: cost_subqueryscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 6
    argNames:
    - root
    - rel
    - subpath
    - trivial_pathtarget
    - pathkeys
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - bool
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1908
    functionDepth: 3
    functionLinenumber: 1908
    functionLinenumberEnd: 1931
    functionName: create_subqueryscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_subqueryscan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: SubqueryScanPath
    signature: "SubqueryScanPath *\ncreate_subqueryscan_path(PlannerInfo *root, RelOptInfo
      *rel, Path *subpath,\n\t\t\t\t\t\t bool trivial_pathtarget,\n\t\t\t\t\t\t List
      *pathkeys, Relids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1942,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1947,1
    - Dst: cost_functionscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - root
    - rel
    - pathkeys
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1957
      start: 1938
    functionDepth: 3
    functionLinenumber: 1938
    functionLinenumberEnd: 1957
    functionName: create_functionscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_functionscan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: "Path *\ncreate_functionscan_path(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      List *pathkeys, Relids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1968,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1973,1
    - Dst: cost_tablefuncscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1964
    functionDepth: 3
    functionLinenumber: 1964
    functionLinenumberEnd: 1983
    functionName: create_tablefuncscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_tablefuncscan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: "Path *\ncreate_tablefuncscan_path(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      \ Relids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1994,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1999,1
    - Dst: cost_valuesscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1990
    functionDepth: 3
    functionLinenumber: 1990
    functionLinenumberEnd: 2009
    functionName: create_valuesscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_valuesscan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: "Path *\ncreate_valuesscan_path(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t
      \  Relids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2020,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2025,1
    - Dst: cost_ctescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - root
    - rel
    - pathkeys
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 2016
    functionDepth: 3
    functionLinenumber: 2016
    functionLinenumberEnd: 2035
    functionName: create_ctescan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_ctescan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: "Path *\ncreate_ctescan_path(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\tList
      *pathkeys, Relids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2046,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2051,1
    - Dst: cost_namedtuplestorescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2061
      start: 2042
    functionDepth: 3
    functionLinenumber: 2042
    functionLinenumberEnd: 2061
    functionName: create_namedtuplestorescan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_namedtuplestorescan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: "Path *\ncreate_namedtuplestorescan_path(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t\t\tRelids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2072,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2077,1
    - Dst: cost_resultscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2068
    functionDepth: 3
    functionLinenumber: 2068
    functionLinenumberEnd: 2087
    functionName: create_resultscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_resultscan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: "Path *\ncreate_resultscan_path(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t
      \  Relids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2098,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2103,1
    - Dst: cost_ctescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2094
    functionDepth: 3
    functionLinenumber: 2094
    functionLinenumberEnd: 2114
    functionName: create_worktablescan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_ctescan
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: "Path *\ncreate_worktablescan_path(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      \ Relids required_outer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2141,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2141,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 12
    argNames:
    - root
    - rel
    - target
    - rows
    - disabled_nodes
    - startup_cost
    - total_cost
    - pathkeys
    - required_outer
    - fdw_outerpath
    - fdw_restrictinfo
    - fdw_private
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - double
    - int
    - Cost
    - Cost
    - List*
    - Relids
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2127
    functionDepth: 3
    functionLinenumber: 2127
    functionLinenumberEnd: 2162
    functionName: create_foreignscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - IS_SIMPLE_REL
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: ForeignPath
    signature: "ForeignPath *\ncreate_foreignscan_path(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\tPathTarget *target,\n\t\t\t\t\t\tdouble rows, int disabled_nodes,\n\t\t\t\t\t\tCost
      startup_cost, Cost total_cost,\n\t\t\t\t\t\tList *pathkeys,\n\t\t\t\t\t\tRelids
      required_outer,\n\t\t\t\t\t\tPath *fdw_outerpath,\n\t\t\t\t\t\tList *fdw_restrictinfo,\n\t\t\t\t\t\tList
      *fdw_private)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2186,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2195,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2195,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 12
    argNames:
    - root
    - rel
    - target
    - rows
    - disabled_nodes
    - startup_cost
    - total_cost
    - pathkeys
    - required_outer
    - fdw_outerpath
    - fdw_restrictinfo
    - fdw_private
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - double
    - int
    - Cost
    - Cost
    - List*
    - Relids
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2175
    functionDepth: 1
    functionLinenumber: 2175
    functionLinenumberEnd: 2216
    functionName: create_foreign_join_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - elog
    - bms_is_empty
    - makeNode
    linkageType: ''
    returnType: ForeignPath
    signature: "ForeignPath *\ncreate_foreign_join_path(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t PathTarget *target,\n\t\t\t\t\t\t double rows, int disabled_nodes,\n\t\t\t\t\t\t
      Cost startup_cost, Cost total_cost,\n\t\t\t\t\t\t List *pathkeys,\n\t\t\t\t\t\t
      Relids required_outer,\n\t\t\t\t\t\t Path *fdw_outerpath,\n\t\t\t\t\t\t List
      *fdw_restrictinfo,\n\t\t\t\t\t\t List *fdw_private)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2239,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2245,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 11
    argNames:
    - root
    - rel
    - target
    - rows
    - disabled_nodes
    - startup_cost
    - total_cost
    - pathkeys
    - fdw_outerpath
    - fdw_restrictinfo
    - fdw_private
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - double
    - int
    - Cost
    - Cost
    - List*
    - Path*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2265
      start: 2229
    functionDepth: 1
    functionLinenumber: 2229
    functionLinenumberEnd: 2265
    functionName: create_foreign_upper_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_is_empty
    - makeNode
    linkageType: ''
    returnType: ForeignPath
    signature: "ForeignPath *\ncreate_foreign_upper_path(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t  PathTarget *target,\n\t\t\t\t\t\t  double rows, int disabled_nodes,\n\t\t\t\t\t\t
      \ Cost startup_cost, Cost total_cost,\n\t\t\t\t\t\t  List *pathkeys,\n\t\t\t\t\t\t
      \ Path *fdw_outerpath,\n\t\t\t\t\t\t  List *fdw_restrictinfo,\n\t\t\t\t\t\t
      \ List *fdw_private)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2285,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2285,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2288,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2290,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - outerrelids
    - outer_paramrels
    - innerrelids
    - inner_paramrels
    argTypes:
    - Relids
    - Relids
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2295
      start: 2276
    functionDepth: 1
    functionLinenumber: 2276
    functionLinenumberEnd: 2295
    functionName: calc_nestloop_required_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - bms_del_members
    - Assert
    - bms_copy
    - bms_overlap
    - bms_union
    linkageType: ''
    returnType: Relids
    signature: "Relids calc_nestloop_required_outer(Relids outerrelids,\n\t\t\t\t\t\t\t
      Relids outer_paramrels,\n\t\t\t\t\t\t\t Relids innerrelids,\n\t\t\t\t\t\t\t
      Relids inner_paramrels)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2306,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2330,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2331,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2331,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - outer_path
    - inner_path
    argTypes:
    - Path*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2336
      start: 2303
    functionDepth: 1
    functionLinenumber: 2303
    functionLinenumberEnd: 2336
    functionName: calc_non_nestloop_required_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_union
    - PATH_REQ_OUTER
    - bms_overlap
    linkageType: ''
    returnType: Relids
    signature: Relids calc_non_nestloop_required_outer(Path *outer_path, Path *inner_path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2367,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2368,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2388,1
    - Dst: get_param_path_clause_serials
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2390,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2396,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2398,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2399,1
    - Dst: get_joinrel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2408,1
    - Dst: final_cost_nestloop
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2427,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 10
    argNames:
    - root
    - joinrel
    - jointype
    - workspace
    - extra
    - outer_path
    - inner_path
    - restrict_clauses
    - pathkeys
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - JoinType
    - JoinCostWorkspace*
    - JoinPathExtraData*
    - Path*
    - Path*
    - List*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2430
      start: 2355
    functionDepth: 3
    functionLinenumber: 2355
    functionLinenumberEnd: 2430
    functionName: create_nestloop_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - get_param_path_clause_serials
    - bms_is_member
    - lappend
    - makeNode
    - get_joinrel_parampathinfo
    - lfirst
    - PATH_REQ_OUTER
    - bms_overlap
    - final_cost_nestloop
    linkageType: ''
    returnType: NestPath
    signature: "NestPath *\ncreate_nestloop_path(PlannerInfo *root,\n\t\t\t\t\t RelOptInfo
      *joinrel,\n\t\t\t\t\t JoinType jointype,\n\t\t\t\t\t JoinCostWorkspace *workspace,\n\t\t\t\t\t
      JoinPathExtraData *extra,\n\t\t\t\t\t Path *outer_path,\n\t\t\t\t\t Path *inner_path,\n\t\t\t\t\t
      List *restrict_clauses,\n\t\t\t\t\t List *pathkeys,\n\t\t\t\t\t Relids required_outer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2396,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2398,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2400
      start: 2394
    functionDepth: 1
    functionLinenumber: 2394
    functionLinenumberEnd: 2400
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 171
    functionsReached:
    - lfirst
    - bms_is_member
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, restrict_clauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2468,1
    - Dst: get_joinrel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2474,1
    - Dst: final_cost_mergejoin
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2499,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 14
    argNames:
    - root
    - joinrel
    - jointype
    - workspace
    - extra
    - outer_path
    - inner_path
    - restrict_clauses
    - pathkeys
    - required_outer
    - mergeclauses
    - outersortkeys
    - innersortkeys
    - outer_presorted_keys
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - JoinType
    - JoinCostWorkspace*
    - JoinPathExtraData*
    - Path*
    - Path*
    - List*
    - List*
    - Relids
    - List*
    - List*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2502
      start: 2452
    functionDepth: 3
    functionLinenumber: 2452
    functionLinenumberEnd: 2502
    functionName: create_mergejoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - final_cost_mergejoin
    - makeNode
    - get_joinrel_parampathinfo
    linkageType: ''
    returnType: MergePath
    signature: "MergePath *\ncreate_mergejoin_path(PlannerInfo *root,\n\t\t\t\t\t
      \ RelOptInfo *joinrel,\n\t\t\t\t\t  JoinType jointype,\n\t\t\t\t\t  JoinCostWorkspace
      *workspace,\n\t\t\t\t\t  JoinPathExtraData *extra,\n\t\t\t\t\t  Path *outer_path,\n\t\t\t\t\t
      \ Path *inner_path,\n\t\t\t\t\t  List *restrict_clauses,\n\t\t\t\t\t  List *pathkeys,\n\t\t\t\t\t
      \ Relids required_outer,\n\t\t\t\t\t  List *mergeclauses,\n\t\t\t\t\t  List
      *outersortkeys,\n\t\t\t\t\t  List *innersortkeys,\n\t\t\t\t\t  int outer_presorted_keys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2533,1
    - Dst: get_joinrel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2539,1
    - Dst: final_cost_hashjoin
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2573,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 11
    argNames:
    - root
    - joinrel
    - jointype
    - workspace
    - extra
    - outer_path
    - inner_path
    - parallel_hash
    - restrict_clauses
    - required_outer
    - hashclauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - JoinType
    - JoinCostWorkspace*
    - JoinPathExtraData*
    - Path*
    - Path*
    - bool
    - List*
    - Relids
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2520
    functionDepth: 3
    functionLinenumber: 2520
    functionLinenumberEnd: 2576
    functionName: create_hashjoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - final_cost_hashjoin
    - makeNode
    - get_joinrel_parampathinfo
    linkageType: ''
    returnType: HashPath
    signature: "HashPath *\ncreate_hashjoin_path(PlannerInfo *root,\n\t\t\t\t\t RelOptInfo
      *joinrel,\n\t\t\t\t\t JoinType jointype,\n\t\t\t\t\t JoinCostWorkspace *workspace,\n\t\t\t\t\t
      JoinPathExtraData *extra,\n\t\t\t\t\t Path *outer_path,\n\t\t\t\t\t Path *inner_path,\n\t\t\t\t\t
      bool parallel_hash,\n\t\t\t\t\t List *restrict_clauses,\n\t\t\t\t\t Relids required_outer,\n\t\t\t\t\t
      List *hashclauses)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2592,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2608,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2608,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2618,1
    - Dst: is_projection_capable_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2635,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2636,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - root
    - rel
    - subpath
    - target
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2671
      start: 2586
    functionDepth: 2
    functionLinenumber: 2586
    functionLinenumberEnd: 2671
    functionName: create_projection_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 6
    functionsReached:
    - equal
    - Assert
    - is_projection_capable_path
    - makeNode
    - is_parallel_safe
    - IsA
    linkageType: ''
    returnType: ProjectionPath
    signature: "ProjectionPath *\ncreate_projection_path(PlannerInfo *root,\n\t\t\t\t\t
      \  RelOptInfo *rel,\n\t\t\t\t\t   Path *subpath,\n\t\t\t\t\t   PathTarget *target)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_projection_capable_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2707,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2708,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2727,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2727,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2728,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2740,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2745,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2755,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2762,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - root
    - rel
    - path
    - target
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2773
      start: 2695
    functionDepth: 3
    functionLinenumber: 2695
    functionLinenumberEnd: 2773
    functionName: apply_projection_to_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 4
    functionsReached:
    - is_parallel_safe
    - create_projection_path
    - is_projection_capable_path
    - IsA
    linkageType: ''
    returnType: Path
    signature: "Path *\napply_projection_to_path(PlannerInfo *root,\n\t\t\t\t\t\t
      RelOptInfo *rel,\n\t\t\t\t\t\t Path *path,\n\t\t\t\t\t\t PathTarget *target)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2790,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2802,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2814,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2816,1
    - Dst: expression_returns_set_rows
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2819,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - root
    - rel
    - subpath
    - target
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2840
      start: 2784
    functionDepth: 2
    functionLinenumber: 2784
    functionLinenumberEnd: 2840
    functionName: create_set_projection_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 3
    functionsReached:
    - foreach
    - expression_returns_set_rows
    - makeNode
    - lfirst
    - is_parallel_safe
    linkageType: ''
    returnType: ProjectSetPath
    signature: "ProjectSetPath *\ncreate_set_projection_path(PlannerInfo *root,\n\t\t\t\t\t\t
      \  RelOptInfo *rel,\n\t\t\t\t\t\t   Path *subpath,\n\t\t\t\t\t\t   PathTarget
      *target)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2862,1
    - Dst: cost_incremental_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2878,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 6
    argNames:
    - root
    - rel
    - subpath
    - pathkeys
    - presorted_keys
    - limit_tuples
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - List*
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2891
      start: 2854
    functionDepth: 1
    functionLinenumber: 2854
    functionLinenumberEnd: 2891
    functionName: create_incremental_sort_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 7
    functionsReached:
    - makeNode
    - cost_incremental_sort
    linkageType: ''
    returnType: IncrementalSortPath
    signature: "IncrementalSortPath *\ncreate_incremental_sort_path(PlannerInfo *root,\n\t\t\t\t\t\t\t
      RelOptInfo *rel,\n\t\t\t\t\t\t\t Path *subpath,\n\t\t\t\t\t\t\t List *pathkeys,\n\t\t\t\t\t\t\t
      int presorted_keys,\n\t\t\t\t\t\t\t double limit_tuples)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2910,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2925,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - root
    - rel
    - subpath
    - pathkeys
    - limit_tuples
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - List*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2934
      start: 2903
    functionDepth: 1
    functionLinenumber: 2903
    functionLinenumberEnd: 2934
    functionName: create_sort_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 7
    functionsReached:
    - makeNode
    - cost_sort
    linkageType: ''
    returnType: SortPath
    signature: "SortPath *\ncreate_sort_path(PlannerInfo *root,\n\t\t\t\t RelOptInfo
      *rel,\n\t\t\t\t Path *subpath,\n\t\t\t\t List *pathkeys,\n\t\t\t\t double limit_tuples)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2955,1
    - Dst: cost_group
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2975,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2976,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 6
    argNames:
    - root
    - rel
    - subpath
    - groupClause
    - qual
    - numGroups
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - List*
    - List*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2989
      start: 2947
    functionDepth: 1
    functionLinenumber: 2947
    functionLinenumberEnd: 2989
    functionName: create_group_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 6
    functionsReached:
    - list_length
    - makeNode
    - cost_group
    linkageType: ''
    returnType: GroupPath
    signature: "GroupPath *\ncreate_group_path(PlannerInfo *root,\n\t\t\t\t  RelOptInfo
      *rel,\n\t\t\t\t  Path *subpath,\n\t\t\t\t  List *groupClause,\n\t\t\t\t  List
      *qual,\n\t\t\t\t  double numGroups)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3011,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 5
    argNames:
    - root
    - rel
    - subpath
    - numCols
    - numGroups
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3050
      start: 3004
    functionDepth: 1
    functionLinenumber: 3004
    functionLinenumberEnd: 3050
    functionName: create_unique_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 6
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: UniquePath
    signature: "UniquePath *\ncreate_unique_path(PlannerInfo *root,\n\t\t\t\t   RelOptInfo
      *rel,\n\t\t\t\t   Path *subpath,\n\t\t\t\t   int numCols,\n\t\t\t\t   double
      numGroups)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3078,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3099,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3100,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3117,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 10
    argNames:
    - root
    - rel
    - subpath
    - target
    - aggstrategy
    - aggsplit
    - groupClause
    - qual
    - aggcosts
    - numGroups
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    - AggStrategy
    - AggSplit
    - List*
    - List*
    - AggClauseCosts*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3131
      start: 3066
    functionDepth: 1
    functionLinenumber: 3066
    functionLinenumberEnd: 3131
    functionName: create_agg_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 10
    functionsReached:
    - list_length
    - list_copy_head
    - makeNode
    - cost_agg
    linkageType: ''
    returnType: AggPath
    signature: "AggPath *\ncreate_agg_path(PlannerInfo *root,\n\t\t\t\tRelOptInfo
      *rel,\n\t\t\t\tPath *subpath,\n\t\t\t\tPathTarget *target,\n\t\t\t\tAggStrategy
      aggstrategy,\n\t\t\t\tAggSplit aggsplit,\n\t\t\t\tList *groupClause,\n\t\t\t\tList
      *qual,\n\t\t\t\tconst AggClauseCosts *aggcosts,\n\t\t\t\tdouble numGroups)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3157,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3179,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3180,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3184,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3202,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3203,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3204,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3204,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3208,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3210,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3210,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3224,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3250,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3265,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3275,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 7
    argNames:
    - root
    - rel
    - subpath
    - having_qual
    - aggstrategy
    - rollups
    - agg_costs
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - List*
    - AggStrategy
    - List*
    - AggClauseCosts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3300
      start: 3148
    functionDepth: 1
    functionLinenumber: 3148
    functionLinenumberEnd: 3300
    functionName: create_groupingsets_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - Assert
    - linitial
    - makeNode
    - cost_agg
    - lfirst
    - cost_sort
    - list_length
    linkageType: ''
    returnType: GroupingSetsPath
    signature: "GroupingSetsPath *\ncreate_groupingsets_path(PlannerInfo *root,\n\t\t\t\t\t\t
      RelOptInfo *rel,\n\t\t\t\t\t\t Path *subpath,\n\t\t\t\t\t\t List *having_qual,\n\t\t\t\t\t\t
      AggStrategy aggstrategy,\n\t\t\t\t\t\t List *rollups,\n\t\t\t\t\t\t const AggClauseCosts
      *agg_costs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3208,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3210,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3210,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3224,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3250,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3265,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3275,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3292
      start: 3206
    functionDepth: 1
    functionLinenumber: 3206
    functionLinenumberEnd: 3292
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 172
    functionsReached:
    - linitial
    - cost_agg
    - lfirst
    - cost_sort
    - list_length
    linkageType: ''
    returnType: void
    signature: void foreach(lc, rollups)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3318,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3343,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3365,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3378,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3379,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 5
    argNames:
    - root
    - rel
    - target
    - mmaggregates
    - quals
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3382
      start: 3311
    functionDepth: 2
    functionLinenumber: 3311
    functionLinenumberEnd: 3382
    functionName: create_minmaxagg_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - is_parallel_safe
    - cost_qual_eval
    - lfirst
    - makeNode
    linkageType: ''
    returnType: MinMaxAggPath
    signature: "MinMaxAggPath *\ncreate_minmaxagg_path(PlannerInfo *root,\n\t\t\t\t\t
      \ RelOptInfo *rel,\n\t\t\t\t\t  PathTarget *target,\n\t\t\t\t\t  List *mmaggregates,\n\t\t\t\t\t
      \ List *quals)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3349
      start: 3341
    functionDepth: 1
    functionLinenumber: 3341
    functionLinenumberEnd: 3349
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 172
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, mmaggregates)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3416,1
    - Dst: cost_windowagg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 9
    argNames:
    - root
    - rel
    - subpath
    - target
    - windowFuncs
    - runCondition
    - winclause
    - qual
    - topwindow
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    - List*
    - List*
    - WindowClause*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3456
      start: 3402
    functionDepth: 1
    functionLinenumber: 3402
    functionLinenumberEnd: 3456
    functionName: create_windowagg_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 2
    functionsReached:
    - Assert
    - makeNode
    - cost_windowagg
    linkageType: ''
    returnType: WindowAggPath
    signature: "WindowAggPath *\ncreate_windowagg_path(PlannerInfo *root,\n\t\t\t\t\t
      \ RelOptInfo *rel,\n\t\t\t\t\t  Path *subpath,\n\t\t\t\t\t  PathTarget *target,\n\t\t\t\t\t
      \ List *windowFuncs,\n\t\t\t\t\t  List *runCondition,\n\t\t\t\t\t  WindowClause
      *winclause,\n\t\t\t\t\t  List *qual,\n\t\t\t\t\t  bool topwindow)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3486,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3527,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3557,1
    - Dst: EstimateSetOpHashTableSpace
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3580,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3582,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 9
    argNames:
    - root
    - rel
    - leftpath
    - rightpath
    - cmd
    - strategy
    - groupList
    - numGroups
    - outputRows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - SetOpCmd
    - SetOpStrategy
    - List*
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3588
      start: 3475
    functionDepth: 1
    functionLinenumber: 3475
    functionLinenumberEnd: 3588
    functionName: create_setop_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - list_length
    - EstimateSetOpHashTableSpace
    - makeNode
    - get_hash_memory_limit
    linkageType: ''
    returnType: SetOpPath
    signature: "SetOpPath *\ncreate_setop_path(PlannerInfo *root,\n\t\t\t\t  RelOptInfo
      *rel,\n\t\t\t\t  Path *leftpath,\n\t\t\t\t  Path *rightpath,\n\t\t\t\t  SetOpCmd
      cmd,\n\t\t\t\t  SetOpStrategy strategy,\n\t\t\t\t  List *groupList,\n\t\t\t\t
      \ double numGroups,\n\t\t\t\t  double outputRows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3614,1
    - Dst: cost_recursive_union
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 8
    argNames:
    - root
    - rel
    - leftpath
    - rightpath
    - target
    - distinctList
    - wtParam
    - numGroups
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - PathTarget*
    - List*
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3638
      start: 3604
    functionDepth: 1
    functionLinenumber: 3604
    functionLinenumberEnd: 3638
    functionName: create_recursiveunion_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - cost_recursive_union
    linkageType: ''
    returnType: RecursiveUnionPath
    signature: "RecursiveUnionPath *\ncreate_recursiveunion_path(PlannerInfo *root,\n\t\t\t\t\t\t
      \  RelOptInfo *rel,\n\t\t\t\t\t\t   Path *leftpath,\n\t\t\t\t\t\t   Path *rightpath,\n\t\t\t\t\t\t
      \  PathTarget *target,\n\t\t\t\t\t\t   List *distinctList,\n\t\t\t\t\t\t   int
      wtParam,\n\t\t\t\t\t\t   double numGroups)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 5
    argNames:
    - root
    - rel
    - subpath
    - rowMarks
    - epqParam
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3687
      start: 3649
    functionDepth: 1
    functionLinenumber: 3649
    functionLinenumberEnd: 3687
    functionName: create_lockrows_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: LockRowsPath
    signature: "LockRowsPath *\ncreate_lockrows_path(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t Path *subpath, List *rowMarks, int epqParam)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3723,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3725,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3727,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3729,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3730,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3731,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3732,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3732,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 17
    argNames:
    - root
    - rel
    - subpath
    - operation
    - canSetTag
    - nominalRelation
    - rootRelation
    - resultRelations
    - updateColnosLists
    - withCheckOptionLists
    - returningLists
    - rowMarks
    - onconflict
    - mergeActionLists
    - mergeJoinConditions
    - forPortionOf
    - epqParam
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - CmdType
    - bool
    - Index
    - Index
    - List*
    - List*
    - List*
    - List*
    - List*
    - OnConflictExpr*
    - List*
    - List*
    - ForPortionOfExpr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3793
      start: 3711
    functionDepth: 1
    functionLinenumber: 3711
    functionLinenumberEnd: 3793
    functionName: create_modifytable_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - Assert
    - makeNode
    - list_length
    linkageType: ''
    returnType: ModifyTablePath
    signature: "ModifyTablePath *\ncreate_modifytable_path(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\tPath *subpath,\n\t\t\t\t\t\tCmdType operation, bool canSetTag,\n\t\t\t\t\t\tIndex
      nominalRelation, Index rootRelation,\n\t\t\t\t\t\tList *resultRelations,\n\t\t\t\t\t\tList
      *updateColnosLists,\n\t\t\t\t\t\tList *withCheckOptionLists, List *returningLists,\n\t\t\t\t\t\tList
      *rowMarks, OnConflictExpr *onconflict,\n\t\t\t\t\t\tList *mergeActionLists,
      List *mergeJoinConditions,\n\t\t\t\t\t\tForPortionOfExpr *forPortionOf, int
      epqParam)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3819,1
    - Dst: adjust_limit_rows_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3844,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 8
    argNames:
    - root
    - rel
    - subpath
    - limitOffset
    - limitCount
    - limitOption
    - offset_est
    - count_est
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Node*
    - Node*
    - LimitOption
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3850
      start: 3812
    functionDepth: 1
    functionLinenumber: 3812
    functionLinenumberEnd: 3850
    functionName: create_limit_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 5
    functionsReached:
    - adjust_limit_rows_costs
    - makeNode
    linkageType: ''
    returnType: LimitPath
    signature: "LimitPath *\ncreate_limit_path(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t
      \ Path *subpath,\n\t\t\t\t  Node *limitOffset, Node *limitCount,\n\t\t\t\t  LimitOption
      limitOption,\n\t\t\t\t  int64 offset_est, int64 count_est)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3886,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3905,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 5
    argNames:
    - rows
    - startup_cost
    - total_cost
    - offset_est
    - count_est
    argTypes:
    - double*
    - Cost*
    - Cost*
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3916
      start: 3868
    functionDepth: 1
    functionLinenumber: 3868
    functionLinenumberEnd: 3916
    functionName: adjust_limit_rows_costs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - clamp_row_est
    linkageType: ''
    returnType: void
    signature: "void adjust_limit_rows_costs(double *rows,\t/* in/out parameter */\n\t\t\t\t\t\tCost
      *startup_cost, /* in/out parameter */\n\t\t\t\t\t\tCost *total_cost,\t/* in/out
      parameter */\n\t\t\t\t\t\tint64 offset_est,\n\t\t\t\t\t\tint64 count_est)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3944,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3944,1
    - Dst: create_seqscan_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3949,1
    - Dst: create_samplescan_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3951,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3956,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3965,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3967,1
    - Dst: cost_index
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3968,1
    - Dst: create_bitmap_heap_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3975,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3997,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4006,1
    - Dst: create_resultscan_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4007,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4020,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4022,1
    - Dst: reparameterize_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4024,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4031,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4033,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4037,1
    - Dst: reparameterize_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4049,1
    - Dst: create_material_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4056,1
    - Dst: reparameterize_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4063,1
    - Dst: create_memoize_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4068,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 57
    argCount: 4
    argNames:
    - root
    - path
    - required_outer
    - loop_count
    argTypes:
    - PlannerInfo*
    - Path*
    - Relids
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4080
      start: 3936
    functionDepth: 4
    functionLinenumber: 3936
    functionLinenumberEnd: 4080
    functionName: reparameterize_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - create_append_path
    - create_bitmap_heap_path
    - create_seqscan_path
    - create_subqueryscan_path
    - bms_is_subset
    - memcpy
    - foreach
    - create_samplescan_path
    - cost_index
    - create_memoize_path
    - lappend
    - create_resultscan_path
    - lfirst
    - get_baserel_parampathinfo
    - create_material_path
    - makeNode
    - PATH_REQ_OUTER
    - reparameterize_path
    - IsA
    linkageType: ''
    returnType: Path
    signature: "Path *\nreparameterize_path(PlannerInfo *root, Path *path,\n\t\t\t\t\tRelids
      required_outer,\n\t\t\t\t\tdouble loop_count)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4144,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4144,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4159,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4163,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4170,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4171,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4173,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4175,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4183,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4184,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4193,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4194,1
    - Dst: REPARAMETERIZE_CHILD_PATH_LIST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4203,1
    - Dst: REPARAMETERIZE_CHILD_PATH_LIST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4212,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4222,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4224,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4226,1
    - Dst: rfpc_func
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4232,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4242,1
    - Dst: REPARAMETERIZE_CHILD_PATH_LIST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4243,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4245,1
    - Dst: CustomPath*::methods::ReparameterizeCustomPathByChild
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4249,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4261,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4262,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4263,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4273,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4274,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4275,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4276,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4286,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4287,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4288,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4289,1
    - Dst: REPARAMETERIZE_CHILD_PATH_LIST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4298,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4307,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4316,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4317,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4326,1
    - Dst: adjust_child_relids_multilevel
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4343,1
    - Dst: find_param_path_info
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4348,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4360,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4360,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4362,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4363,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4366,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4367,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4368,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4370,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4372,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4381,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4384,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4385,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 127
    argCount: 3
    argNames:
    - root
    - path
    - child_rel
    argTypes:
    - PlannerInfo*
    - Path*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4389
      start: 4106
    functionDepth: 3
    functionLinenumber: 4106
    functionLinenumberEnd: 4389
    functionName: reparameterize_path_by_child
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - GetMemoryChunkContext
    - bms_free
    - bms_copy
    - nodeTag
    - bms_overlap
    - Assert
    - REPARAMETERIZE_CHILD_PATH_LIST
    - ADJUST_CHILD_ATTRS
    - adjust_child_relids_multilevel
    - rfpc_func
    - copy_pathtarget
    - lappend
    - find_param_path_info
    - makeNode
    - MemoryContextSwitchTo
    - REPARAMETERIZE_CHILD_PATH
    - PATH_REQ_OUTER
    - CustomPath*::methods::ReparameterizeCustomPathByChild
    linkageType: ''
    returnType: Path
    signature: "Path *\nreparameterize_path_by_child(PlannerInfo *root, Path *path,\n\t\t\t\t\t\t\t
      RelOptInfo *child_rel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4120
      start: 4115
    functionDepth: 0
    functionLinenumber: 4115
    functionLinenumberEnd: 4120
    functionName: ADJUST_CHILD_ATTRS
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADJUST_CHILD_ATTRS(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4127
      start: 4121
    functionDepth: 0
    functionLinenumber: 4121
    functionLinenumberEnd: 4127
    functionName: REPARAMETERIZE_CHILD_PATH
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REPARAMETERIZE_CHILD_PATH(path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pathlist
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4138
      start: 4128
    functionDepth: 0
    functionLinenumber: 4128
    functionLinenumberEnd: 4138
    functionName: REPARAMETERIZE_CHILD_PATH_LIST
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REPARAMETERIZE_CHILD_PATH_LIST(pathlist)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4422,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4422,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4429,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4439,1
    - Dst: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4447,1
    - Dst: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4455,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4464,1
    - Dst: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4472,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4482,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4483,1
    - Dst: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4491,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4499,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4507,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4515,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 55
    argCount: 2
    argNames:
    - path
    - child_rel
    argTypes:
    - Path*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4525
      start: 4402
    functionDepth: 1
    functionLinenumber: 4402
    functionLinenumberEnd: 4525
    functionName: path_is_reparameterizable_by_child
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - REJECT_IF_PATH_NOT_REPARAMETERIZABLE
    - REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
    - PATH_REQ_OUTER
    - bms_overlap
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: bool path_is_reparameterizable_by_child(Path *path, RelOptInfo *child_rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4410
      start: 4405
    functionDepth: 0
    functionLinenumber: 4405
    functionLinenumberEnd: 4410
    functionName: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REJECT_IF_PATH_NOT_REPARAMETERIZABLE(path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pathlist
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4416
      start: 4411
    functionDepth: 0
    functionLinenumber: 4411
    functionLinenumberEnd: 4416
    functionName: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE(pathlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reparameterize_path_by_child
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4543,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4543,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4548,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - root
    - pathlist
    - child_rel
    argTypes:
    - PlannerInfo*
    - List*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4556
      start: 4533
    functionDepth: 4
    functionLinenumber: 4533
    functionLinenumberEnd: 4556
    functionName: reparameterize_pathlist_by_child
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - lappend
    - lfirst
    - reparameterize_path_by_child
    - list_free
    linkageType: ''
    returnType: List
    signature: "List *\nreparameterize_pathlist_by_child(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      List *pathlist,\n\t\t\t\t\t\t\t\t RelOptInfo *child_rel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reparameterize_path_by_child
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4543,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4543,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4548,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4553
      start: 4541
    functionDepth: 4
    functionLinenumber: 4541
    functionLinenumberEnd: 4553
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 173
    functionsReached:
    - lappend
    - lfirst
    - reparameterize_path_by_child
    - list_free
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pathlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4569,1
    - Dst: path_is_reparameterizable_by_child
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pathlist
    - child_rel
    argTypes:
    - List*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4576
      start: 4562
    functionDepth: 2
    functionLinenumber: 4562
    functionLinenumberEnd: 4576
    functionName: pathlist_is_reparameterizable_by_child
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - path_is_reparameterizable_by_child
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool pathlist_is_reparameterizable_by_child(List *pathlist, RelOptInfo
      *child_rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4569,1
    - Dst: path_is_reparameterizable_by_child
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4573
      start: 4567
    functionDepth: 2
    functionLinenumber: 4567
    functionLinenumberEnd: 4573
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 173
    functionsReached:
    - path_is_reparameterizable_by_child
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pathlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:45,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:53,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:61,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:64,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - extension_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 71
    functionName: GetPlannerExtensionId
    functionSourceFile: /src/postgres/src/backend/optimizer/util/extendplan.c
    functionUses: 1
    functionsReached:
    - repalloc
    - pg_nextpower2_32
    - strcmp
    - MemoryContextAlloc
    linkageType: ''
    returnType: int
    signature: int GetPlannerExtensionId(const char *extension_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:80,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:88,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:90,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:90,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:92,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:100,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - glob
    - extension_id
    - opaque
    argTypes:
    - PlannerGlobal*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 76
    functionDepth: 3
    functionLinenumber: 76
    functionLinenumberEnd: 107
    functionName: SetPlannerGlobalExtensionState
    functionSourceFile: /src/postgres/src/backend/optimizer/util/extendplan.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkContext
    - Assert
    - repalloc0_array
    - Max
    - pg_nextpower2_32
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: "void SetPlannerGlobalExtensionState(PlannerGlobal *glob, int extension_id,\n\t\t\t\t\t\t\t
      \  void *opaque)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:116,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:124,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:124,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:126,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:134,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - root
    - extension_id
    - opaque
    argTypes:
    - PlannerInfo*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 141
    functionName: SetPlannerInfoExtensionState
    functionSourceFile: /src/postgres/src/backend/optimizer/util/extendplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - repalloc0_array
    - Max
    - pg_nextpower2_32
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: "void SetPlannerInfoExtensionState(PlannerInfo *root, int extension_id,\n\t\t\t\t\t\t\t
      void *opaque)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:150,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:158,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:160,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:160,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:162,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:170,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/extendplan.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - rel
    - extension_id
    - opaque
    argTypes:
    - RelOptInfo*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 177
    functionName: SetRelOptInfoExtensionState
    functionSourceFile: /src/postgres/src/backend/optimizer/util/extendplan.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkContext
    - Assert
    - repalloc0_array
    - Max
    - pg_nextpower2_32
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: "void SetRelOptInfoExtensionState(RelOptInfo *rel, int extension_id,\n\t\t\t\t\t\t\tvoid
      *opaque)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:77,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:79,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:80,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:95,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:101,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:104,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:106,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:107,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:110,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - root
    - var
    argTypes:
    - PlannerInfo*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 113
    functionName: assign_param_for_var
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 0
    functionsReached:
    - copyObject
    - foreach
    - list_length
    - lappend
    - makeNode
    - lfirst
    - bms_equal
    - IsA
    - lappend_oid
    linkageType: ''
    returnType: int
    signature: int assign_param_for_var(PlannerInfo *root, Var *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:126,1
    - Dst: assign_param_for_var
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:129,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - root
    - var
    argTypes:
    - PlannerInfo*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 140
    functionName: replace_outer_var
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - Assert
    - assign_param_for_var
    - makeNode
    linkageType: ''
    returnType: Param
    signature: 'Param *

      replace_outer_var(PlannerInfo *root, Var *var)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:161,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:163,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:164,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:175,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:177,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:179,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:181,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:182,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:183,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - root
    - phv
    argTypes:
    - PlannerInfo*
    - PlaceHolderVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 188
    functionName: assign_param_for_placeholdervar
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 0
    functionsReached:
    - copyObject
    - foreach
    - Assert
    - exprType
    - lappend
    - makeNode
    - lfirst
    - IncrementVarSublevelsUp
    - list_length
    - IsA
    - lappend_oid
    linkageType: ''
    returnType: int
    signature: int assign_param_for_placeholdervar(PlannerInfo *root, PlaceHolderVar
      *phv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:203,1
    - Dst: assign_param_for_placeholdervar
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:206,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:208,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:211,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:212,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - root
    - phv
    argTypes:
    - PlannerInfo*
    - PlaceHolderVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 217
    functionName: replace_outer_placeholdervar
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - exprTypmod
    - assign_param_for_placeholdervar
    - Assert
    - exprType
    - makeNode
    - exprCollation
    linkageType: ''
    returnType: Param
    signature: 'Param *

      replace_outer_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:231,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:241,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:242,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:243,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:245,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:247,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:248,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:251,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - root
    - agg
    argTypes:
    - PlannerInfo*
    - Aggref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 262
    functionName: replace_outer_agg
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - copyObject
    - Assert
    - lappend
    - makeNode
    - IncrementVarSublevelsUp
    - list_length
    - lappend_oid
    linkageType: ''
    returnType: Param
    signature: 'Param *

      replace_outer_agg(PlannerInfo *root, Aggref *agg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:276,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:278,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:288,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:290,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:292,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:294,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:295,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:298,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - root
    - grp
    argTypes:
    - PlannerInfo*
    - GroupingFunc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 309
    functionName: replace_outer_grouping
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - copyObject
    - exprType
    - Assert
    - lappend
    - makeNode
    - IncrementVarSublevelsUp
    - list_length
    - lappend_oid
    linkageType: ''
    returnType: Param
    signature: 'Param *

      replace_outer_grouping(PlannerInfo *root, GroupingFunc *grp)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:324,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:334,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:341,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:343,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:345,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:346,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:349,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - root
    - msf
    argTypes:
    - PlannerInfo*
    - MergeSupportFunc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 360
    functionName: replace_outer_merge_support
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - elog
    - copyObject
    - exprType
    - Assert
    - lappend
    - makeNode
    - list_length
    - lappend_oid
    linkageType: ''
    returnType: Param
    signature: 'Param *

      replace_outer_merge_support(PlannerInfo *root, MergeSupportFunc *msf)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:375,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:385,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:386,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:387,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:389,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:391,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:392,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:395,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:397,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:401,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:402,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:403,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - root
    - rexpr
    argTypes:
    - PlannerInfo*
    - ReturningExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 406
    functionName: replace_outer_returning
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - exprTypmod
    - copyObject
    - exprType
    - Assert
    - lappend
    - makeNode
    - exprCollation
    - IncrementVarSublevelsUp
    - exprLocation
    - list_length
    - lappend_oid
    linkageType: ''
    returnType: Param
    signature: 'Param *

      replace_outer_returning(PlannerInfo *root, ReturningExpr *rexpr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:421,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:423,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:424,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:427,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:439,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:446,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:448,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - root
    - var
    argTypes:
    - PlannerInfo*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 453
    functionName: replace_nestloop_param_var
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - copyObject
    - foreach
    - lappend
    - makeNode
    - generate_new_exec_param
    - lfirst
    - equal
    linkageType: ''
    returnType: Param
    signature: 'Param *

      replace_nestloop_param_var(PlannerInfo *root, Var *var)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:470,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:472,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:473,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:476,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:479,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:480,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:481,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:488,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:489,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:490,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:491,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:494,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:496,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:497,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 2
    argNames:
    - root
    - phv
    argTypes:
    - PlannerInfo*
    - PlaceHolderVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 501
    functionName: replace_nestloop_param_placeholdervar
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - exprTypmod
    - copyObject
    - foreach
    - exprType
    - lappend
    - makeNode
    - exprCollation
    - generate_new_exec_param
    - lfirst
    - equal
    linkageType: ''
    returnType: Param
    signature: 'Param *

      replace_nestloop_param_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:533,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:535,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:542,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:543,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:546,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:551,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:551,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:559,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:561,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:562,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:565,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:572,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:572,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:574,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:577,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:582,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:582,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:590,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:592,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:593,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:597,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - root
    - subplan_params
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 599
    functionName: process_subquery_nestloop_params
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - elog
    - copyObject
    - foreach
    - Assert
    - bms_is_member
    - lappend
    - makeNode
    - find_placeholder_info
    - lfirst
    - equal
    - IsA
    - bms_is_subset
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void process_subquery_nestloop_params(PlannerInfo *root, List *subplan_params)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:533,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:535,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:542,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:543,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:546,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:551,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:551,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:559,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:561,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:562,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:565,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:572,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:572,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:574,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:577,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:582,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:582,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:590,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:592,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:593,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:597,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 531
    functionDepth: 2
    functionLinenumber: 531
    functionLinenumberEnd: 598
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 179
    functionsReached:
    - elog
    - copyObject
    - foreach
    - Assert
    - bms_is_member
    - lappend
    - makeNode
    - find_placeholder_info
    - lfirst
    - equal
    - IsA
    - bms_is_subset
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, subplan_params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:638,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:643,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:645,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:653,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:654,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:659,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:661,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:663,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:665,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:668,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:671,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:672,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:674,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:695,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:706,1
    - Dst: get_placeholder_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:706,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:709,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - root
    - leftrelids
    - outerrelids
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 621
    functionDepth: 2
    functionLinenumber: 621
    functionLinenumberEnd: 714
    functionName: identify_current_nestloop_params
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 1
    functionsReached:
    - foreach_delete_current
    - foreach
    - copyObject
    - get_placeholder_nulling_relids
    - bms_is_member
    - lappend
    - find_placeholder_info
    - lfirst
    - bms_overlap
    - bms_intersect
    - IsA
    - bms_is_subset
    - bms_union
    linkageType: ''
    returnType: List
    signature: "List *\nidentify_current_nestloop_params(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      Relids leftrelids,\n\t\t\t\t\t\t\t\t Relids outerrelids)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:732,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:734,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - root
    - paramtype
    - paramtypmod
    - paramcollation
    argTypes:
    - PlannerInfo*
    - Oid
    - int32
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 743
    functionName: generate_new_exec_param
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 8
    functionsReached:
    - list_length
    - lappend_oid
    - makeNode
    linkageType: ''
    returnType: Param
    signature: "Param *\ngenerate_new_exec_param(PlannerInfo *root, Oid paramtype,
      int32 paramtypmod,\n\t\t\t\t\t\tOid paramcollation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:756,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/paramassign.c:758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 761
    functionName: assign_special_exec_param
    functionSourceFile: /src/postgres/src/backend/optimizer/util/paramassign.c
    functionUses: 5
    functionsReached:
    - list_length
    - lappend_oid
    linkageType: ''
    returnType: int
    signature: int assign_special_exec_param(PlannerInfo *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - node
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 132
    functionName: pull_varnos
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 16
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: Relids
    signature: Relids pull_varnos(PlannerInfo *root, Node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - root
    - node
    - levelsup
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 158
    functionName: pull_varnos_of_level
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: Relids
    signature: Relids pull_varnos_of_level(PlannerInfo *root, Node *node, int levelsup)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:165,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/var.c:171,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/var.c:172,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:177,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/var.c:182,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:185,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/var.c:227,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/var.c:230,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/var.c:233,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/util/var.c:243,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/util/var.c:244,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/var.c:246,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/util/var.c:249,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/var.c:250,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/var.c:252,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/var.c:261,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:266,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:272,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:277,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - pull_varnos_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 278
    functionName: pull_varnos_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 0
    functionsReached:
    - bms_equal
    - bms_join
    - query_tree_walker
    - bms_difference
    - bms_add_members
    - expression_tree_walker
    - IsA
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: bool pull_varnos_walker(Node *node, pull_varnos_context *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pull_varattnos_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - node
    - varno
    - varattnos
    argTypes:
    - Node*
    - Index
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 306
    functionName: pull_varattnos
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - pull_varattnos_walker
    linkageType: ''
    returnType: void
    signature: void pull_varattnos(Node *node, Index varno, Bitmapset **varattnos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:313,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/var.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:325,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:325,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:327,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - pull_varattnos_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 328
    functionName: pull_varattnos_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - Assert
    - expression_tree_walker
    - IsA
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: bool pull_varattnos_walker(Node *node, pull_varattnos_context *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - node
    - levelsup
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 356
    functionName: pull_vars_of_level
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: List
    signature: 'List *

      pull_vars_of_level(Node *node, int levelsup)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:363,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:368,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:371,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:376,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:380,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:386,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:391,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - pull_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 392
    functionName: pull_vars_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    - query_tree_walker
    - lappend
    linkageType: ''
    returnType: bool
    signature: bool pull_vars_walker(Node *node, pull_vars_context *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_var_clause_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 409
    functionName: contain_var_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 3
    functionsReached:
    - contain_var_clause_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_var_clause(Node *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:416,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:422,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:424,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:430,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 431
    functionName: contain_var_clause_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_var_clause_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - levelsup
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 452
    functionName: contain_vars_of_level
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_vars_of_level(Node *node, int levelsup)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:459,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:465,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:471,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:477,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:483,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:490,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - node
    - sublevels_up
    argTypes:
    - Node*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 493
    functionName: contain_vars_of_level_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_vars_of_level_walker(Node *node, int *sublevels_up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain_vars_returning_old_or_new_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 514
    functionName: contain_vars_returning_old_or_new
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - contain_vars_returning_old_or_new_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_vars_returning_old_or_new(Node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:521,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:528,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:534,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 536
    functionName: contain_vars_returning_old_or_new_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_vars_returning_old_or_new_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - node
    - levelsup
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 568
    functionName: locate_var_of_level
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 0
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: int
    signature: int locate_var_of_level(Node *node, int levelsup)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:576,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:588,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:594,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:600,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:607,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - locate_var_of_level_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 610
    functionName: locate_var_of_level_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: "bool locate_var_of_level_walker(Node *node,\n\t\t\t\t\t\t   locate_var_of_level_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:658,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:660,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:662,1
    - Dst: pull_var_clause_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - node
    - flags
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 670
    functionName: pull_var_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 13
    functionsReached:
    - Assert
    - pull_var_clause_walker
    linkageType: ''
    returnType: List
    signature: 'List *

      pull_var_clause(Node *node, int flags)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:677,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:680,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:681,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:684,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:687,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:690,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:699,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:701,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:704,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:707,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:716,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:718,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:723,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:732,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:734,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:737,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:740,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:749,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/var.c:751,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - pull_var_clause_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 672
    functionDepth: 1
    functionLinenumber: 672
    functionLinenumberEnd: 752
    functionName: pull_var_clause_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - elog
    - expression_tree_walker
    - IsA
    - lappend
    linkageType: ''
    returnType: bool
    signature: bool pull_var_clause_walker(Node *node, pull_var_clause_context *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:790,1
    - Dst: flatten_join_alias_vars_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - root
    - query
    - node
    argTypes:
    - PlannerInfo*
    - Query*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 780
    functionDepth: 1
    functionLinenumber: 780
    functionLinenumberEnd: 801
    functionName: flatten_join_alias_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 4
    functionsReached:
    - Assert
    - flatten_join_alias_vars_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      flatten_join_alias_vars(PlannerInfo *root, Query *query, Node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:828,1
    - Dst: flatten_join_alias_vars_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - query
    - node
    - sublevels_up
    argTypes:
    - Query*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 839
    functionName: flatten_join_alias_for_parser
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 0
    functionsReached:
    - Assert
    - flatten_join_alias_vars_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      flatten_join_alias_for_parser(Query *query, Node *node, int sublevels_up)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:847,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/var.c:856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:868,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/var.c:868,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/var.c:868,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/util/var.c:869,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/var.c:871,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:875,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/var.c:882,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:884,1
    - Dst: flatten_join_alias_vars_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:888,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:889,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:891,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:891,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/var.c:891,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/var.c:893,1
    - Dst: add_nullingrels_if_needed
      Src: /src/postgres/src/backend/optimizer/util/var.c:902,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:907,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/var.c:908,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:909,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:910,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/var.c:917,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:920,1
    - Dst: flatten_join_alias_vars_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:924,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/optimizer/util/var.c:928,1
    - Dst: add_nullingrels_if_needed
      Src: /src/postgres/src/backend/optimizer/util/var.c:931,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:933,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:938,1
    - Dst: alias_relid_set
      Src: /src/postgres/src/backend/optimizer/util/var.c:944,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:951,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:960,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:970,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:970,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:971,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:971,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:973,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:974,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:974,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:975,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:975,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:977,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 68
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - flatten_join_alias_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 841
    functionDepth: 3
    functionLinenumber: 841
    functionLinenumberEnd: 978
    functionName: flatten_join_alias_vars_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 3
    functionsReached:
    - copyObject
    - Assert
    - alias_relid_set
    - query_tree_mutator
    - rt_fetch
    - flatten_join_alias_vars_mutator
    - lappend
    - makeNode
    - checkExprHasSubLink
    - expression_tree_mutator
    - lfirst
    - add_nullingrels_if_needed
    - IncrementVarSublevelsUp
    - list_length
    - list_nth
    - IsA
    - forboth
    linkageType: ''
    returnType: Node
    signature: "Node *\nflatten_join_alias_vars_mutator(Node *node,\n\t\t\t\t\t\t\t\tflatten_join_alias_vars_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1008,1
    - Dst: flatten_group_exprs_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:1018,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - root
    - query
    - node
    argTypes:
    - PlannerInfo*
    - Query*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 998
    functionDepth: 1
    functionLinenumber: 998
    functionLinenumberEnd: 1019
    functionName: flatten_group_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - Assert
    - flatten_group_exprs_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      flatten_group_exprs(PlannerInfo *root, Query *query, Node *node)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1027,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/var.c:1036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1041,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/var.c:1042,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1043,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:1044,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/var.c:1051,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1054,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/optimizer/util/var.c:1059,1
    - Dst: mark_nullable_by_grouping
      Src: /src/postgres/src/backend/optimizer/util/var.c:1062,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1065,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:1077,1
    - Dst: flatten_group_exprs_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:1079,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1094,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1106,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:1115,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:1125,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - flatten_join_alias_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1021
    functionDepth: 3
    functionLinenumber: 1021
    functionLinenumberEnd: 1127
    functionName: flatten_group_exprs_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - copyObject
    - flatten_group_exprs_mutator
    - Assert
    - query_tree_mutator
    - rt_fetch
    - expression_tree_mutator
    - IncrementVarSublevelsUp
    - checkExprHasSubLink
    - list_nth
    - IsA
    - mark_nullable_by_grouping
    linkageType: ''
    returnType: Node
    signature: "Node *\nflatten_group_exprs_mutator(Node *node,\n\t\t\t\t\t\t\tflatten_join_alias_vars_context
      *context)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1143,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/var.c:1143,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/var.c:1144,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/util/var.c:1146,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/var.c:1148,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/var.c:1159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1175,1
    - Dst: contain_agg_clause
      Src: /src/postgres/src/backend/optimizer/util/var.c:1175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1176,1
    - Dst: contain_window_function
      Src: /src/postgres/src/backend/optimizer/util/var.c:1176,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/var.c:1178,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/util/var.c:1179,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/util/var.c:1184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1186,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/var.c:1186,1
    - Dst: make_placeholder_expr
      Src: /src/postgres/src/backend/optimizer/util/var.c:1188,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/var.c:1191,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - root
    - newnode
    - oldvar
    argTypes:
    - PlannerInfo*
    - Node*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1133
    functionDepth: 2
    functionLinenumber: 1133
    functionLinenumberEnd: 1197
    functionName: mark_nullable_by_grouping
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - Assert
    - pull_varnos_of_level
    - contain_agg_clause
    - get_relids_in_jointree
    - contain_window_function
    - bms_copy
    - contain_volatile_functions
    - bms_equal
    - expression_returns_set
    - bms_is_empty
    - make_placeholder_expr
    - add_nulling_relids
    - bms_make_singleton
    linkageType: ''
    returnType: Node
    signature: 'Node *

      mark_nullable_by_grouping(PlannerInfo *root, Node *newnode, Var *oldvar)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1209,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1210,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/util/var.c:1222,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/var.c:1224,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:1227,1
    - Dst: get_relids_for_join
      Src: /src/postgres/src/backend/optimizer/util/var.c:1228,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/util/var.c:1230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1231,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/var.c:1231,1
    - Dst: make_placeholder_expr
      Src: /src/postgres/src/backend/optimizer/util/var.c:1233,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/var.c:1236,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:1242,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - root
    - newnode
    - oldvar
    argTypes:
    - PlannerInfo*
    - Node*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1203
    functionDepth: 2
    functionLinenumber: 1203
    functionLinenumberEnd: 1245
    functionName: add_nullingrels_if_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - elog
    - bms_del_member
    - Assert
    - pull_varnos_of_level
    - bms_copy
    - is_standard_join_alias_expression
    - get_relids_for_join
    - bms_is_empty
    - make_placeholder_expr
    - adjust_standard_join_alias_expression
    linkageType: ''
    returnType: Node
    signature: 'Node *

      add_nullingrels_if_needed(PlannerInfo *root, Node *newnode, Var *oldvar)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1260,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1263,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1266,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1285,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/var.c:1285,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1287,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1292,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1294,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1299,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1301,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1306,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1313,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/var.c:1314,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1316,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/var.c:1316,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 2
    argNames:
    - newnode
    - oldvar
    argTypes:
    - Node*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1255
    functionDepth: 1
    functionLinenumber: 1255
    functionLinenumberEnd: 1323
    functionName: is_standard_join_alias_expression
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - foreach
    - Assert
    - linitial
    - lfirst
    - is_standard_join_alias_expression
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool is_standard_join_alias_expression(Node *newnode, Var *oldvar)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1332,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/var.c:1337,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1340,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/var.c:1345,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1348,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1352,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/var.c:1352,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1354,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1358,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1360,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1364,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1366,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1370,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1372,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1377,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/var.c:1378,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1380,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/var.c:1380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1384,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - newnode
    - oldvar
    argTypes:
    - Node*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1329
    functionDepth: 1
    functionLinenumber: 1329
    functionLinenumberEnd: 1385
    functionName: adjust_standard_join_alias_expression
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - foreach
    - Assert
    - linitial
    - lfirst
    - bms_add_members
    - IsA
    - adjust_standard_join_alias_expression
    linkageType: ''
    returnType: void
    signature: void adjust_standard_join_alias_expression(Node *newnode, Var *oldvar)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/util/var.c:1398,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/var.c:1400,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/var.c:1403,1
    - Dst: get_relids_for_join
      Src: /src/postgres/src/backend/optimizer/util/var.c:1403,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/var.c:1405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - query
    - relids
    argTypes:
    - Query*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1391
    functionDepth: 1
    functionLinenumber: 1391
    functionLinenumberEnd: 1408
    functionName: alias_relid_set
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - rt_fetch
    - get_relids_for_join
    - bms_next_member
    - bms_join
    - bms_add_member
    linkageType: ''
    returnType: Relids
    signature: Relids alias_relid_set(Query *query, Relids relids)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: IS_SRF_CALL
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SRF_CALL(node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:94,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - targetlist
    argTypes:
    - Expr*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: tlist_member
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 4
    functionsReached:
    - equal
    - lfirst
    linkageType: ''
    returnType: TargetEntry
    signature: 'TargetEntry *

      tlist_member(Expr *node, List *targetlist)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:94,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 98
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - equal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(temp, targetlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:117,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:120,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 7
    argCount: 2
    argNames:
    - var
    - targetlist
    argTypes:
    - Var*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 129
    functionName: tlist_member_match_var
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - lfirst
    - IsA
    linkageType: ''
    returnType: TargetEntry
    signature: 'TargetEntry *

      tlist_member_match_var(Var *var, List *targetlist)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:117,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:120,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 127
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(temp, targetlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:143,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:148,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:150,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:154,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:154,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - tlist
    - exprs
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 162
    functionName: add_to_flat_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - copyObject
    - tlist_member
    - makeTargetEntry
    - lappend
    - lfirst
    - list_length
    linkageType: ''
    returnType: List
    signature: 'List *

      add_to_flat_tlist(List *tlist, List *exprs)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:148,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:150,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:154,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:154,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 160
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - copyObject
    - tlist_member
    - makeTargetEntry
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:179,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - tlist
    - includeJunk
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 187
    functionName: get_tlist_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - lfirst
    - lappend
    linkageType: ''
    returnType: List
    signature: 'List *

      get_tlist_exprs(List *tlist, bool includeJunk)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:179,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 185
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 208
    functionName: count_nonjunk_tlist_entries
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: int
    signature: int count_nonjunk_tlist_entries(List *tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 206
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:232,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:232,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:237,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:238,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - tlist1
    - tlist2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 245
    functionName: tlist_same_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - list_length
    - lfirst
    - equal
    linkageType: ''
    returnType: bool
    signature: bool tlist_same_exprs(List *tlist1, List *tlist2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:237,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:238,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 11
    functionsReached:
    - equal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void forboth(lc1, tlist1, lc2, tlist2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:260,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:264,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:275,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:275,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:277,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - tlist
    - colTypes
    - junkOK
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 283
    functionName: tlist_same_datatypes
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - exprType
    - lnext
    - list_head
    - lfirst
    - lfirst_oid
    linkageType: ''
    returnType: bool
    signature: bool tlist_same_datatypes(List *tlist, List *colTypes, bool junkOK)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:264,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:275,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:275,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:277,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 279
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - exprType
    - lfirst_oid
    - lfirst
    - lnext
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:294,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:298,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:309,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:309,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:311,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - tlist
    - colCollations
    - junkOK
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 317
    functionName: tlist_same_collations
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - lnext
    - exprCollation
    - list_head
    - lfirst
    - lfirst_oid
    linkageType: ''
    returnType: bool
    signature: bool tlist_same_collations(List *tlist, List *colCollations, bool junkOK)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:298,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:309,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:309,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:311,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 296
    functionDepth: 2
    functionLinenumber: 296
    functionLinenumberEnd: 313
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst_oid
    - lfirst
    - lnext
    - exprCollation
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:332,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:332,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:332,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:335,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:336,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - dest_tlist
    - src_tlist
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 345
    functionName: apply_tlist_labeling
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 3
    functionsReached:
    - Assert
    - lfirst
    - list_length
    linkageType: ''
    returnType: void
    signature: void apply_tlist_labeling(List *dest_tlist, List *src_tlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:335,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:336,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 344
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 11
    functionsReached:
    - Assert
    - lfirst
    linkageType: ''
    returnType: void
    signature: void forboth(ld, dest_tlist, ls, src_tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:360,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sortref
    - targetList
    argTypes:
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 368
    functionName: get_sortgroupref_tle
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 4
    functionsReached:
    - elog
    - lfirst
    linkageType: ''
    returnType: TargetEntry
    signature: 'TargetEntry *

      get_sortgroupref_tle(Index sortref, List *targetList)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, targetList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sgClause
    - targetList
    argTypes:
    - SortGroupClause*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 375
    functionDepth: 2
    functionLinenumber: 375
    functionLinenumberEnd: 380
    functionName: get_sortgroupclause_tle
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 13
    functionsReached:
    - get_sortgroupref_tle
    linkageType: ''
    returnType: TargetEntry
    signature: "TargetEntry *\nget_sortgroupclause_tle(SortGroupClause *sgClause,\n\t\t\t\t\t\tList
      *targetList)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sgClause
    - targetList
    argTypes:
    - SortGroupClause*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 393
    functionName: get_sortgroupclause_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - get_sortgroupclause_tle
    linkageType: ''
    returnType: Node
    signature: 'Node *

      get_sortgroupclause_expr(SortGroupClause *sgClause, List *targetList)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:408,1
    - Dst: get_sortgroupclause_expr
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:411,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - sgClauses
    - targetList
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 400
    functionDepth: 4
    functionLinenumber: 400
    functionLinenumberEnd: 415
    functionName: get_sortgrouplist_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 4
    functionsReached:
    - lfirst
    - get_sortgroupclause_expr
    - lappend
    linkageType: ''
    returnType: List
    signature: 'List *

      get_sortgrouplist_exprs(List *sgClauses, List *targetList)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:408,1
    - Dst: get_sortgroupclause_expr
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:411,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 406
    functionDepth: 4
    functionLinenumber: 406
    functionLinenumberEnd: 413
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    - get_sortgroupclause_expr
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(l, sgClauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:437,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sortref
    - clauses
    argTypes:
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 445
    functionName: get_sortgroupref_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 3
    functionsReached:
    - elog
    - lfirst
    linkageType: ''
    returnType: SortGroupClause
    signature: 'SortGroupClause *

      get_sortgroupref_clause(Index sortref, List *clauses)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 441
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sortref
    - clauses
    argTypes:
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 465
    functionName: get_sortgroupref_clause_noerr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: SortGroupClause
    signature: 'SortGroupClause *

      get_sortgroupref_clause_noerr(Index sortref, List *clauses)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 462
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:474,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:479,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:486,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - groupClause
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 491
    functionName: extract_grouping_ops
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 3
    functionsReached:
    - Assert
    - OidIsValid
    - palloc_array
    - lfirst
    - list_length
    linkageType: ''
    returnType: Oid
    signature: 'Oid *

      extract_grouping_ops(List *groupClause)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:486,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 488
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - Assert
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(glitem, groupClause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:500,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:505,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:509,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:510,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - groupClause
    - tlist
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 497
    functionDepth: 3
    functionLinenumber: 497
    functionLinenumberEnd: 516
    functionName: extract_grouping_collations
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 3
    functionsReached:
    - get_sortgroupclause_tle
    - palloc_array
    - exprCollation
    - lfirst
    - list_length
    linkageType: ''
    returnType: Oid
    signature: 'Oid *

      extract_grouping_collations(List *groupClause, List *tlist)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:509,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:510,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 507
    functionDepth: 3
    functionLinenumber: 507
    functionLinenumberEnd: 513
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    - get_sortgroupclause_tle
    - exprCollation
    linkageType: ''
    returnType: void
    signature: void foreach(glitem, groupClause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:526,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:530,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:534,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - groupClause
    - tlist
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 522
    functionDepth: 3
    functionLinenumber: 522
    functionLinenumberEnd: 541
    functionName: extract_grouping_cols
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - list_length
    - lfirst
    - get_sortgroupclause_tle
    - palloc_array
    linkageType: ''
    returnType: AttrNumber
    signature: 'AttrNumber *

      extract_grouping_cols(List *groupClause, List *tlist)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:534,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 532
    functionDepth: 3
    functionLinenumber: 532
    functionLinenumberEnd: 538
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    - get_sortgroupclause_tle
    linkageType: ''
    returnType: void
    signature: void foreach(glitem, groupClause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:555,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - groupClause
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 561
    functionName: grouping_is_sortable
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 5
    functionsReached:
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool grouping_is_sortable(List *groupClause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:555,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 559
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(glitem, groupClause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - groupClause
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 568
    functionDepth: 1
    functionLinenumber: 568
    functionLinenumberEnd: 581
    functionName: grouping_is_hashable
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 3
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool grouping_is_hashable(List *groupClause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 579
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(glitem, groupClause)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:602,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:606,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:606,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:611,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - tlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 626
    functionName: make_pathtarget_from_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - lappend
    - makeNode
    - lfirst
    - palloc
    - list_length
    linkageType: ''
    returnType: PathTarget
    signature: 'PathTarget *

      make_pathtarget_from_tlist(List *tlist)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:611,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 616
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 182
    functionsReached:
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:640,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:642,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:645,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:651,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - target
    argTypes:
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 632
    functionDepth: 1
    functionLinenumber: 632
    functionLinenumberEnd: 656
    functionName: make_tlist_from_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 1
    functionsReached:
    - makeTargetEntry
    - lfirst
    - foreach
    - lappend
    linkageType: ''
    returnType: List
    signature: 'List *

      make_tlist_from_pathtarget(PathTarget *target)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:668,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:671,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:673,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:677,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:679,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - src
    argTypes:
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 683
    functionName: copy_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 7
    functionsReached:
    - memcpy
    - makeNode
    - list_copy
    - palloc
    - list_length
    linkageType: ''
    returnType: PathTarget
    signature: 'PathTarget *

      copy_pathtarget(PathTarget *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 694
    functionName: create_empty_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 9
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: PathTarget
    signature: 'PathTarget *

      create_empty_pathtarget(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:707,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:711,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:715,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:721,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:723,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - target
    - expr
    - sortgroupref
    argTypes:
    - PathTarget*
    - Expr*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 736
    functionName: add_column_to_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 8
    functionsReached:
    - list_length
    - palloc0
    - lappend
    - repalloc
    linkageType: ''
    returnType: void
    signature: void add_column_to_pathtarget(PathTarget *target, Expr *expr, Index
      sortgroupref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:752,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:753,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - target
    - expr
    argTypes:
    - PathTarget*
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 749
    functionDepth: 2
    functionLinenumber: 749
    functionLinenumberEnd: 754
    functionName: add_new_column_to_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - list_member
    - add_column_to_pathtarget
    linkageType: ''
    returnType: void
    signature: void add_new_column_to_pathtarget(PathTarget *target, Expr *expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:767,1
    - Dst: add_new_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - target
    - exprs
    argTypes:
    - PathTarget*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 760
    functionDepth: 3
    functionLinenumber: 760
    functionLinenumberEnd: 771
    functionName: add_new_columns_to_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 4
    functionsReached:
    - lfirst
    - add_new_column_to_pathtarget
    linkageType: ''
    returnType: void
    signature: void add_new_columns_to_pathtarget(PathTarget *target, List *exprs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:767,1
    - Dst: add_new_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 765
    functionDepth: 3
    functionLinenumber: 765
    functionLinenumberEnd: 770
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 183
    functionsReached:
    - lfirst
    - add_new_column_to_pathtarget
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:793,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:795,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:809,1
    - Dst: tlist_member_match_var
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:810,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:812,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:821,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:824,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - tlist
    - target
    argTypes:
    - List*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 782
    functionDepth: 2
    functionLinenumber: 782
    functionLinenumberEnd: 830
    functionName: apply_pathtarget_labeling_to_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - tlist_member
    - tlist_member_match_var
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void apply_pathtarget_labeling_to_tlist(List *tlist, PathTarget *target)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: split_pathtarget_at_srfs_extended
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - root
    - target
    - input_target
    - targets
    - targets_contain_srfs
    argTypes:
    - PlannerInfo*
    - PathTarget*
    - PathTarget*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 852
    functionName: split_pathtarget_at_srfs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 1
    functionsReached:
    - split_pathtarget_at_srfs_extended
    linkageType: ''
    returnType: void
    signature: "void split_pathtarget_at_srfs(PlannerInfo *root,\n\t\t\t\t\t\t PathTarget
      *target, PathTarget *input_target,\n\t\t\t\t\t\t List **targets, List **targets_contain_srfs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: split_pathtarget_at_srfs_extended
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - root
    - target
    - input_target
    - targets
    - targets_contain_srfs
    argTypes:
    - PlannerInfo*
    - PathTarget*
    - PathTarget*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 867
    functionDepth: 1
    functionLinenumber: 867
    functionLinenumberEnd: 875
    functionName: split_pathtarget_at_srfs_grouping
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 1
    functionsReached:
    - split_pathtarget_at_srfs_extended
    linkageType: ''
    returnType: void
    signature: "void split_pathtarget_at_srfs_grouping(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      \ PathTarget *target, PathTarget *input_target,\n\t\t\t\t\t\t\t\t  List **targets,
      List **targets_contain_srfs)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:965,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:966,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:985,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:986,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:987,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:997,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:999,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1002,1
    - Dst: split_pathtarget_walker
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1010,1
    - Dst: IS_SRF_CALL
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1033,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1044,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1045,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1056,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1057,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1059,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1064,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1065,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1065,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1065,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1066,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1067,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1067,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1067,1
    - Dst: forthree
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1079,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1083,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1086,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1092,1
    - Dst: add_sp_items_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1100,1
    - Dst: for_each_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1101,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1102,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1104,1
    - Dst: add_sp_items_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1106,1
    - Dst: for_each_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1108,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1109,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1111,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1116,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1118,1
    - Dst: add_sp_item_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1119,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1122,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1128,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1129,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 68
    argCount: 6
    argNames:
    - root
    - target
    - input_target
    - targets
    - targets_contain_srfs
    - is_grouping_target
    argTypes:
    - PlannerInfo*
    - PathTarget*
    - PathTarget*
    - List**
    - List**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 941
    functionDepth: 2
    functionLinenumber: 941
    functionLinenumberEnd: 1135
    functionName: split_pathtarget_at_srfs_extended
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - forthree
    - lappend_int
    - get_pathtarget_sortgroupref
    - add_sp_item_to_pathtarget
    - set_pathtarget_cost_width
    - list_concat
    - foreach
    - lnext
    - list_member
    - lappend
    - list_nth_cell
    - lfirst
    - list_make1
    - for_each_cell
    - split_pathtarget_walker
    - IS_SRF_CALL
    - create_empty_pathtarget
    - add_sp_items_to_pathtarget
    - list_make1_int
    linkageType: ''
    returnType: void
    signature: "void split_pathtarget_at_srfs_extended(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      \ PathTarget *target, PathTarget *input_target,\n\t\t\t\t\t\t\t\t  List **targets,
      List **targets_contain_srfs,\n\t\t\t\t\t\t\t\t  bool is_grouping_target)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1116,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1118,1
    - Dst: add_sp_item_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1120
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 185
    functionsReached:
    - list_member
    - add_sp_item_to_pathtarget
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lcx, input_srfs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1162,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1163,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1175,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1177,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1181,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1191,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1192,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1193,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1194,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1195,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1197,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1201,1
    - Dst: IS_SRF_CALL
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1210,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1212,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1227,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1233,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1235,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1236,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1237,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1241,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1242,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1242,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1242,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1245,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1246,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1246,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1246,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1247,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1248,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1248,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1248,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1256,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1257,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1268,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - split_pathtarget_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1143
    functionDepth: 2
    functionLinenumber: 1143
    functionLinenumberEnd: 1269
    functionName: split_pathtarget_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 1
    functionsReached:
    - IS_SRF_CALL
    - list_member
    - remove_nulling_relids
    - lappend
    - list_nth_cell
    - lfirst
    - list_concat
    - Max
    - palloc_object
    - list_length
    - expression_tree_walker
    - IsA
    - bms_make_singleton
    linkageType: ''
    returnType: bool
    signature: bool split_pathtarget_walker(Node *node, split_pathtarget_context *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1295,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1297,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1298,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1303,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1311,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1311,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1323,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1323,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - target
    - item
    argTypes:
    - PathTarget*
    - split_pathtarget_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1284
    functionDepth: 2
    functionLinenumber: 1284
    functionLinenumberEnd: 1325
    functionName: add_sp_item_to_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - add_column_to_pathtarget
    - copyObject
    - foreach
    - get_pathtarget_sortgroupref
    - list_length
    - palloc0
    - lfirst
    - equal
    linkageType: ''
    returnType: void
    signature: void add_sp_item_to_pathtarget(PathTarget *target, split_pathtarget_item
      *item)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1337,1
    - Dst: add_sp_item_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - target
    - items
    argTypes:
    - PathTarget*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1330
    functionDepth: 3
    functionLinenumber: 1330
    functionLinenumberEnd: 1341
    functionName: add_sp_items_to_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 1
    functionsReached:
    - add_sp_item_to_pathtarget
    - lfirst
    linkageType: ''
    returnType: void
    signature: void add_sp_items_to_pathtarget(PathTarget *target, List *items)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1337,1
    - Dst: add_sp_item_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1335
    functionDepth: 3
    functionLinenumber: 1335
    functionLinenumberEnd: 1340
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 186
    functionsReached:
    - add_sp_item_to_pathtarget
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, items)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:98,1
    - Dst: expand_appendrel_subquery
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:106,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:123,1
    - Dst: get_plan_rowmark
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:131,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:145,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:150,1
    - Dst: expand_partitioned_rtentry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:156,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:183,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:183,1
    - Dst: expand_planner_arrays
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:186,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:186,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:194,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:201,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:211,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:213,1
    - Dst: expand_single_inheritance_child
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:218,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:223,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:227,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:255,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:261,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:262,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:263,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:264,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:266,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:267,1
    - Dst: makeWholeRowVar
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:274,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:274,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:278,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:279,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:280,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:281,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:283,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:284,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:290,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:296,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:297,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:298,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:299,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:301,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:302,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:309,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:309,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:312,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 63
    argCount: 4
    argNames:
    - root
    - rel
    - rte
    - rti
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 313
    functionName: expand_inherited_rtentry
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - expand_planner_arrays
    - add_vars_to_targetlist
    - build_simple_rel
    - pstrdup
    - lfirst_oid
    - table_close
    - Assert
    - table_open
    - linitial_oid
    - getRTEPermissionInfo
    - get_plan_rowmark
    - makeWholeRowVar
    - list_length
    - expand_appendrel_subquery
    - expand_single_inheritance_child
    - makeTargetEntry
    - lappend
    - RELATION_IS_OTHER_TEMP
    - bms_make_singleton
    - find_all_inheritors
    - makeVar
    - expand_partitioned_rtentry
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void expand_inherited_rtentry(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      RangeTblEntry *rte, Index rti)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:194,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:201,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:211,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:213,1
    - Dst: expand_single_inheritance_child
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:218,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:223,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:227,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 192
    functionDepth: 3
    functionLinenumber: 192
    functionLinenumberEnd: 228
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 186
    functionsReached:
    - expand_single_inheritance_child
    - build_simple_rel
    - table_open
    - RELATION_IS_OTHER_TEMP
    - lfirst_oid
    - table_close
    linkageType: ''
    returnType: void
    signature: void foreach(l, inhOIDs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:332,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:338,1
    - Dst: prune_append_rel_partitions
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:350,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:353,1
    - Dst: expand_planner_arrays
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:362,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:364,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:372,1
    - Dst: try_table_open
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:385,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:388,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:397,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:398,1
    - Dst: expand_single_inheritance_child
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:401,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:406,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:408,1
    - Dst: translate_col_privs
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:417,1
    - Dst: expand_partitioned_rtentry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:420,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:428,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 8
    argNames:
    - root
    - relinfo
    - parentrte
    - parentRTindex
    - parentrel
    - parent_updatedCols
    - top_parentrc
    - lockmode
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    - Index
    - Relation
    - Bitmapset*
    - PlanRowMark*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 430
    functionName: expand_partitioned_rtentry
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 2
    functionsReached:
    - elog
    - bms_del_member
    - try_table_open
    - expand_planner_arrays
    - expand_single_inheritance_child
    - translate_col_privs
    - build_simple_rel
    - Assert
    - bms_num_members
    - check_stack_depth
    - PartitionDirectoryLookup
    - palloc0
    - bms_add_members
    - RELATION_IS_OTHER_TEMP
    - bms_next_member
    - table_close
    - expand_partitioned_rtentry
    - prune_append_rel_partitions
    linkageType: ''
    returnType: void
    signature: "void expand_partitioned_rtentry(PlannerInfo *root, RelOptInfo *relinfo,\n\t\t\t\t\t\t
      \  RangeTblEntry *parentrte,\n\t\t\t\t\t\t   Index parentRTindex, Relation parentrel,\n\t\t\t\t\t\t
      \  Bitmapset *parent_updatedCols,\n\t\t\t\t\t\t   PlanRowMark *top_parentrc,
      LOCKMODE lockmode)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:460,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:461,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:482,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:484,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:490,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:501,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:502,1
    - Dst: get_relation_notnullatts
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:511,1
    - Dst: make_append_rel_info
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:516,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:518,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:521,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:531,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:536,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:545,1
    - Dst: strVal
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:548,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:548,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:554,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:556,1
    - Dst: makeString
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:556,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:556,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:564,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:572,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:574,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:582,1
    - Dst: select_rowmark_type
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:588,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:604,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:613,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:616,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:624,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:633,1
    - Dst: add_row_identity_var
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:639,1
    - Dst: add_row_identity_columns
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:642,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 63
    argCount: 8
    argNames:
    - root
    - parentrte
    - parentRTindex
    - parentrel
    - top_parentrc
    - childrel
    - childrte_p
    - childRTindex_p
    argTypes:
    - PlannerInfo*
    - RangeTblEntry*
    - Index
    - Relation
    - PlanRowMark*
    - Relation
    - RangeTblEntry**
    - Index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 452
    functionDepth: 3
    functionLinenumber: 452
    functionLinenumberEnd: 646
    functionName: expand_single_inheritance_child
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 3
    functionsReached:
    - copyObject
    - pstrdup
    - add_row_identity_columns
    - select_rowmark_type
    - NameStr
    - makeAlias
    - strVal
    - bms_add_member
    - memcpy
    - Assert
    - RelationGetDescr
    - bms_is_member
    - get_relation_notnullatts
    - list_length
    - makeString
    - lappend
    - add_row_identity_var
    - TupleDescAttr
    - makeNode
    - make_append_rel_info
    - list_nth
    - RelationGetRelid
    - makeVar
    linkageType: ''
    returnType: void
    signature: "void expand_single_inheritance_child(PlannerInfo *root, RangeTblEntry
      *parentrte,\n\t\t\t\t\t\t\t\tIndex parentRTindex, Relation parentrel,\n\t\t\t\t\t\t\t\tPlanRowMark
      *top_parentrc, Relation childrel,\n\t\t\t\t\t\t\t\tRangeTblEntry **childrte_p,\n\t\t\t\t\t\t\t\tIndex
      *childRTindex_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:662,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:663,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:663,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:671,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:672,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:680,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:680,1
    - Dst: translate_col_privs_multilevel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:682,1
    - Dst: get_dependent_generated_columns
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:690,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 694
    functionName: get_rel_all_updated_cols
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 0
    functionsReached:
    - planner_rt_fetch
    - translate_col_privs_multilevel
    - IS_OTHER_REL
    - Assert
    - get_dependent_generated_columns
    - getRTEPermissionInfo
    - find_base_rel
    - IS_SIMPLE_REL
    - bms_union
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      get_rel_all_updated_cols(PlannerInfo *root, RelOptInfo *rel)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:719,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:721,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:726,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:733,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:739,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:741,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - parent_privs
    - translated_vars
    argTypes:
    - Bitmapset*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 746
    functionName: translate_col_privs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 1
    functionsReached:
    - bms_is_member
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: Bitmapset
    signature: "Bitmapset *\ntranslate_col_privs(const Bitmapset *parent_privs,\n\t\t\t\t\tList
      *translated_vars)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:733,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:739,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:741,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 731
    functionDepth: 1
    functionLinenumber: 731
    functionLinenumberEnd: 743
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 186
    functionsReached:
    - bms_is_member
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, translated_vars)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: translate_col_privs_multilevel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:772,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:782,1
    - Dst: translate_col_privs
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:784,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - root
    - rel
    - parent_rel
    - parent_cols
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 757
    functionDepth: 2
    functionLinenumber: 757
    functionLinenumberEnd: 785
    functionName: translate_col_privs_multilevel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 2
    functionsReached:
    - elog
    - translate_col_privs_multilevel
    - translate_col_privs
    - Assert
    linkageType: ''
    returnType: Bitmapset
    signature: "Bitmapset *\ntranslate_col_privs_multilevel(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t\t   RelOptInfo *parent_rel,\n\t\t\t\t\t\t\t   Bitmapset
      *parent_cols)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:802,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:804,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:814,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:816,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:819,1
    - Dst: expand_inherited_rtentry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:823,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - root
    - rel
    - rte
    - rti
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 796
    functionDepth: 4
    functionLinenumber: 796
    functionLinenumberEnd: 825
    functionName: expand_appendrel_subquery
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 1
    functionsReached:
    - foreach
    - build_simple_rel
    - Assert
    - lfirst
    - expand_inherited_rtentry
    linkageType: ''
    returnType: void
    signature: "void expand_appendrel_subquery(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      \ RangeTblEntry *rte, Index rti)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:857,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:859,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:863,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:863,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:864,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:867,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:869,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:872,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:881,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:881,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:883,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:889,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:890,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:897,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:906,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:908,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:927,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:929,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:934,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:937,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:938,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:944,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:948,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 5
    argNames:
    - root
    - parentrel
    - childrel
    - childRTE
    - appinfo
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RangeTblEntry*
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 838
    functionDepth: 3
    functionLinenumber: 838
    functionLinenumberEnd: 958
    functionName: apply_child_basequals
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 1
    functionsReached:
    - adjust_appendrel_attrs
    - eval_const_expressions
    - make_restrictinfo
    - foreach
    - Assert
    - lappend
    - Min
    - lfirst
    - contain_volatile_functions
    - contain_vars_of_level
    - make_ands_implicit
    - IsA
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool apply_child_basequals(PlannerInfo *root, RelOptInfo *parentrel,\n\t\t\t\t\t
      \ RelOptInfo *childrel, RangeTblEntry *childRTE,\n\t\t\t\t\t  AppendRelInfo
      *appinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:934,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:937,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:938,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 932
    functionDepth: 3
    functionLinenumber: 932
    functionLinenumberEnd: 945
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 188
    functionsReached:
    - make_restrictinfo
    - lfirst
    - Min
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, qualset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:51,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:51,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:64,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:66,1
    - Dst: have_relevant_eclass_joinclause
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:78,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - root
    - rel1
    - rel2
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 81
    functionName: have_relevant_joinclause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/joininfo.c
    functionUses: 1
    functionsReached:
    - list_length
    - have_relevant_eclass_joinclause
    - lfirst
    - bms_overlap
    linkageType: ''
    returnType: bool
    signature: "bool have_relevant_joinclause(PlannerInfo *root,\n\t\t\t\t\t\t RelOptInfo
      *rel1, RelOptInfo *rel2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:64,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 71
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/joininfo.c
    functionUses: 188
    functionsReached:
    - lfirst
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: void foreach(l, joininfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: restriction_is_always_true
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:105,1
    - Dst: restriction_is_always_false
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:118,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:123,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:124,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:138,1
    - Dst: find_base_rel_ignore_join
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:140,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:145,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - root
    - restrictinfo
    - join_relids
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 147
    functionName: add_join_clause_to_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/util/joininfo.c
    functionUses: 1
    functionsReached:
    - make_restrictinfo
    - makeBoolConst
    - lappend
    - bms_next_member
    - restriction_is_always_true
    - find_base_rel_ignore_join
    - restriction_is_always_false
    linkageType: ''
    returnType: void
    signature: "void add_join_clause_to_rels(PlannerInfo *root,\n\t\t\t\t\t\tRestrictInfo
      *restrictinfo,\n\t\t\t\t\t\tRelids join_relids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:168,1
    - Dst: find_base_rel_ignore_join
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:170,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:180,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:180,1
    - Dst: list_delete_ptr
      Src: /src/postgres/src/backend/optimizer/util/joininfo.c:181,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - root
    - restrictinfo
    - join_relids
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 183
    functionName: remove_join_clause_from_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/util/joininfo.c
    functionUses: 4
    functionsReached:
    - Assert
    - list_member_ptr
    - list_delete_ptr
    - bms_next_member
    - find_base_rel_ignore_join
    linkageType: ''
    returnType: void
    signature: "void remove_join_clause_from_rels(PlannerInfo *root,\n\t\t\t\t\t\t\t
      RestrictInfo *restrictinfo,\n\t\t\t\t\t\t\t Relids join_relids)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:89,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:101,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:103,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:105,1
    - Dst: join_clause_is_movable_to
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:106,1
    - Dst: extract_or_clause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:109,1
    - Dst: consider_new_or_clause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:116,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 120
    functionName: extract_restriction_or_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/util/orclauses.c
    functionUses: 1
    functionsReached:
    - foreach
    - extract_or_clause
    - join_clause_is_movable_to
    - Assert
    - consider_new_or_clause
    - lfirst
    - restriction_is_or_clause
    linkageType: ''
    returnType: void
    signature: void extract_restriction_or_clauses(PlannerInfo *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:135,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - rinfo
    - rel
    argTypes:
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 143
    functionName: is_safe_restriction_clause_for
    functionSourceFile: /src/postgres/src/backend/optimizer/util/orclauses.c
    functionUses: 0
    functionsReached:
    - bms_equal
    - contain_volatile_functions
    linkageType: ''
    returnType: bool
    signature: bool is_safe_restriction_clause_for(RestrictInfo *rinfo, RelOptInfo
      *rel)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:173,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:173,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:174,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:176,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:181,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:188,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:190,1
    - Dst: extract_or_clause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:200,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:202,1
    - Dst: is_safe_restriction_clause_for
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:204,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:205,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:210,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:212,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:212,1
    - Dst: is_safe_restriction_clause_for
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:213,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:214,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:230,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:231,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:232,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:235,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:244,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - or_rinfo
    - rel
    argTypes:
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 155
    functionDepth: 3
    functionLinenumber: 155
    functionLinenumberEnd: 246
    functionName: extract_or_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/orclauses.c
    functionUses: 2
    functionsReached:
    - make_ands_explicit
    - foreach
    - extract_or_clause
    - Assert
    - make_orclause
    - castNode
    - restriction_is_or_clause
    - lappend
    - is_safe_restriction_clause_for
    - is_andclause
    - lfirst
    - list_concat
    - is_orclause
    - lfirst_node
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      extract_or_clause(RestrictInfo *or_rinfo, RelOptInfo *rel)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:188,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:190,1
    - Dst: extract_or_clause
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:200,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:202,1
    - Dst: is_safe_restriction_clause_for
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:204,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 186
    functionDepth: 4
    functionLinenumber: 186
    functionLinenumberEnd: 206
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/orclauses.c
    functionUses: 190
    functionsReached:
    - extract_or_clause
    - lappend
    - is_safe_restriction_clause_for
    - lfirst_node
    - restriction_is_or_clause
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, andargs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:265,1
    - Dst: clause_selectivity
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:281,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:297,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:298,1
    - Dst: init_dummy_sjinfo
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:329,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:330,1
    - Dst: clause_selectivity
      Src: /src/postgres/src/backend/optimizer/util/orclauses.c:335,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - root
    - rel
    - orclause
    - join_or_rinfo
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Expr*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 253
    functionDepth: 3
    functionLinenumber: 253
    functionLinenumberEnd: 345
    functionName: consider_new_or_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/orclauses.c
    functionUses: 1
    functionsReached:
    - make_restrictinfo
    - init_dummy_sjinfo
    - lappend
    - clause_selectivity
    - bms_difference
    - Min
    linkageType: ''
    returnType: void
    signature: "void consider_new_or_clause(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t
      \  Expr *orclause, RestrictInfo *join_or_rinfo)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:134,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:147,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:149,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:150,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:151,1
    - Dst: RelationIsPermanent
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:155,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:155,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:158,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:161,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:164,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:166,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:168,1
    - Dst: find_relation_notnullatts
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:180,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:188,1
    - Dst: RelationGetParallelWorkers
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:192,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:203,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:214,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:228,1
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:240,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:252,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:262,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:262,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:266,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:270,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:274,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:279,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:280,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:281,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:282,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:283,1
    - Dst: index_can_return
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:319,1
    - Dst: RelationGetIndexAttOptions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:333,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:336,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:337,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:360,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:361,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:362,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:375,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:379,1
    - Dst: get_ordering_op_properties
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:380,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:435,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:436,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:440,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:443,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:448,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:451,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:452,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:453,1
    - Dst: build_index_tlist
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:457,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:478,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:485,1
    - Dst: IndexAmRoutine*::amgettreeheight
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:496,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:512,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:521,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:524,1
    - Dst: get_relation_statistics
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:529,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:535,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:538,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:538,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:540,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:541,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:542,1
    - Dst: GetForeignServerIdByRelId
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:545,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:545,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:546,1
    - Dst: get_relation_foreign_keys
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:555,1
    - Dst: set_relation_partition_info
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:568,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:570,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 179
    argCount: 4
    argNames:
    - root
    - relationObjectId
    - inhparent
    - rel
    argTypes:
    - PlannerInfo*
    - Oid
    - bool
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 120
    functionDepth: 3
    functionLinenumber: 120
    functionLinenumberEnd: 571
    functionName: get_relation_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - RelationIsPermanent
    - errdetail_relkind_not_supported
    - IsSystemRelation
    - errcode
    - palloc_array
    - RelationGetRelationName
    - IndexAmRoutine*::amgettreeheight
    - make_ands_implicit
    - lfirst_oid
    - RecoveryInProgress
    - table_close
    - RelationGetParallelWorkers
    - make_ands_explicit
    - RelationGetIndexExpressions
    - Assert
    - GetForeignServerIdByRelId
    - RelationGetIndexPredicate
    - table_open
    - index_close
    - errmsg
    - RelationGetNumberOfBlocks
    - OidIsValid
    - RelationGetRelid
    - RelationGetIndexList
    - eval_const_expressions
    - ChangeVarNodes
    - list_free
    - HeapTupleHeaderGetXmin
    - ereport
    - index_open
    - get_opfamily_member_for_cmptype
    - set_relation_partition_info
    - RelationGetForm
    - unlikely
    - RelationGetIndexAttOptions
    - index_can_return
    - RelationGetNumberOfAttributes
    - estimate_rel_size
    - TransactionIdPrecedes
    - get_ordering_op_properties
    - get_relation_statistics
    - build_index_tlist
    - palloc0
    - makeNode
    - find_relation_notnullatts
    - get_relation_foreign_keys
    - GetFdwRoutineForRelation
    - lcons
    linkageType: ''
    returnType: void
    signature: "void get_relation_info(PlannerInfo *root, Oid relationObjectId, bool
      inhparent,\n\t\t\t\t  RelOptInfo *rel)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:228,1
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:240,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:252,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:262,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:262,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:266,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:270,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:274,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:279,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:280,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:281,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:282,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:283,1
    - Dst: index_can_return
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:319,1
    - Dst: RelationGetIndexAttOptions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:333,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:336,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:337,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:360,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:361,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:362,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:375,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:379,1
    - Dst: get_ordering_op_properties
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:380,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:435,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:436,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:440,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:443,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:448,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:451,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:452,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:453,1
    - Dst: build_index_tlist
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:457,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:478,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:485,1
    - Dst: IndexAmRoutine*::amgettreeheight
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:496,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:512,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:521,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 133
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 522
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 190
    functionsReached:
    - palloc_array
    - IndexAmRoutine*::amgettreeheight
    - make_ands_implicit
    - lfirst_oid
    - make_ands_explicit
    - RelationGetIndexExpressions
    - Assert
    - RelationGetIndexPredicate
    - index_close
    - RelationGetNumberOfBlocks
    - OidIsValid
    - eval_const_expressions
    - ChangeVarNodes
    - HeapTupleHeaderGetXmin
    - get_opfamily_member_for_cmptype
    - index_open
    - RelationGetForm
    - RelationGetIndexAttOptions
    - index_can_return
    - TransactionIdPrecedes
    - estimate_rel_size
    - get_ordering_op_properties
    - build_index_tlist
    - makeNode
    - lcons
    linkageType: ''
    returnType: void
    signature: void foreach(l, indexoidlist)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:597,1
    - Dst: RelationGetFKeyList
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:614,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:630,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:635,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:635,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:645,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:661,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:665,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:666,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:667,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:673,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:674,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:675,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:677,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 4
    argNames:
    - root
    - rel
    - relation
    - inhparent
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 680
    functionName: get_relation_foreign_keys
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - RelationGetFKeyList
    - memcpy
    - Assert
    - lappend
    - makeNode
    - lfirst
    - memset
    - list_length
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void get_relation_foreign_keys(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      \ Relation relation, bool inhparent)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:630,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:635,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:635,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:645,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:661,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:665,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:666,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:667,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:673,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:674,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:675,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:677,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 679
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 190
    functionsReached:
    - memcpy
    - Assert
    - lappend
    - makeNode
    - lfirst
    - memset
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, cachedfkeys)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:645,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:661,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:665,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:666,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:667,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:673,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:674,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:675,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:677,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 678
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 190
    functionsReached:
    - memcpy
    - lappend
    - makeNode
    - lfirst
    - memset
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, rtable)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:692,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:712,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:724,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:736,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:738,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:749,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - root
    - relation
    argTypes:
    - PlannerInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 689
    functionDepth: 2
    functionLinenumber: 689
    functionLinenumberEnd: 755
    functionName: get_relation_notnullatts
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - hash_search
    - Assert
    - hash_create
    - TupleDescCompactAttr
    - bms_add_member
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void get_relation_notnullatts(PlannerInfo *root, Relation relation)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:771,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - root
    - relid
    argTypes:
    - PlannerInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 762
    functionDepth: 1
    functionLinenumber: 762
    functionLinenumberEnd: 779
    functionName: find_relation_notnullatts
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - hash_search
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      find_relation_notnullatts(PlannerInfo *root, Oid relid)'
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:844,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:846,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:853,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:859,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:859,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:861,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:864,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:872,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:873,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:874,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:876,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:888,1
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:894,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:907,1
    - Dst: get_constraint_index
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:909,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:911,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:912,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:913,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:926,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:940,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:944,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:945,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1020,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1021,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1022,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1026,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1066,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1071,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1075,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1079,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1081,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1089,1
    - Dst: infer_collation_opclass_match
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1098,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1109,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1120,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1139,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1142,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1146,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1149,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1150,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1151,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1160,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1162,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1167,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1172,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1179,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1182,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1183,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1184,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1188,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1190,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 116
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 801
    functionDepth: 3
    functionLinenumber: 801
    functionLinenumberEnd: 1193
    functionName: infer_arbiter_indexes
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - list_difference
    - errcode
    - get_constraint_index
    - lappend_oid
    - make_ands_implicit
    - predicate_implied_by
    - table_close
    - bms_add_member
    - make_ands_explicit
    - RelationGetIndexExpressions
    - Assert
    - infer_collation_opclass_match
    - RelationGetIndexPredicate
    - table_open
    - index_close
    - errmsg
    - bms_equal
    - OidIsValid
    - RelationGetIndexList
    - eval_const_expressions
    - ChangeVarNodes
    - list_free
    - list_member
    - rt_fetch
    - lappend
    - ereport
    - index_open
    - foreach_ptr
    - IsA
    linkageType: ''
    returnType: List
    signature: 'List *

      infer_arbiter_indexes(PlannerInfo *root)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:894,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 889
    functionDepth: 2
    functionLinenumber: 889
    functionLinenumberEnd: 896
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - lappend
    - index_open
    linkageType: ''
    returnType: void
    signature: void foreach_oid(indexoid, indexList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:926,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:940,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:944,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:945,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 948
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 6
    functionsReached:
    - Assert
    - bms_add_member
    - RelationGetIndexPredicate
    - RelationGetIndexExpressions
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(RelationData, idxRel, indexRelList)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1020,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1021,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1022,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1026,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1066,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1071,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1075,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1079,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1081,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1089,1
    - Dst: infer_collation_opclass_match
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1098,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1109,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1120,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1139,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1142,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1146,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1149,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1150,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1151,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1160,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1162,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1167,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1172,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 955
    functionDepth: 2
    functionLinenumber: 955
    functionLinenumberEnd: 1174
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 7
    functionsReached:
    - list_difference
    - errcode
    - lappend_oid
    - make_ands_implicit
    - predicate_implied_by
    - bms_add_member
    - make_ands_explicit
    - RelationGetIndexExpressions
    - infer_collation_opclass_match
    - RelationGetIndexPredicate
    - errmsg
    - bms_equal
    - OidIsValid
    - eval_const_expressions
    - ChangeVarNodes
    - list_member
    - ereport
    - foreach_ptr
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(RelationData, idxRel, indexRelList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1177
    functionDepth: 2
    functionLinenumber: 1177
    functionLinenumberEnd: 1180
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 7
    functionsReached:
    - index_close
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(RelationData, idxRel, indexRelList)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: get_opclass_family
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1243,1
    - Dst: get_opclass_input_type
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1244,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1272,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1279,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1286,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 26
    argCount: 3
    argNames:
    - elem
    - idxRel
    - idxExprs
    argTypes:
    - InferenceElem*
    - Relation
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1222
    functionDepth: 3
    functionLinenumber: 1222
    functionLinenumberEnd: 1292
    functionName: infer_collation_opclass_match
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - get_opclass_input_type
    - equal
    - list_nth
    - get_opclass_family
    - IsA
    linkageType: ''
    returnType: bool
    signature: "bool infer_collation_opclass_match(InferenceElem *elem, Relation idxRel,\n\t\t\t\t\t\t\t
      \ List *idxExprs)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RELKIND_HAS_TABLE_AM
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1314,1
    - Dst: table_relation_estimate_size
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1316,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1327,1
    - Dst: get_rel_data_width
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1380,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1381,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1386,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 5
    argNames:
    - rel
    - attr_widths
    - pages
    - tuples
    - allvisfrac
    argTypes:
    - Relation
    - int32*
    - BlockNumber*
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1304
    functionDepth: 1
    functionLinenumber: 1304
    functionLinenumberEnd: 1413
    functionName: estimate_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 4
    functionsReached:
    - RELKIND_HAS_TABLE_AM
    - table_relation_estimate_size
    - RelationGetNumberOfBlocks
    - rint
    - MAXALIGN
    - get_rel_data_width
    linkageType: ''
    returnType: void
    signature: "void estimate_rel_size(Relation rel, int32 *attr_widths,\n\t\t\t\t
      \ BlockNumber *pages, double *tuples, double *allvisfrac)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1435,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1437,1
    - Dst: get_attavgwidth
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1451,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1451,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1455,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1462,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - rel
    - attr_widths
    argTypes:
    - Relation
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1429
    functionDepth: 2
    functionLinenumber: 1429
    functionLinenumberEnd: 1463
    functionName: get_rel_data_width
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - RelationGetNumberOfAttributes
    - clamp_width_est
    - Assert
    - get_attavgwidth
    - TupleDescAttr
    - get_typavgwidth
    - RelationGetRelid
    linkageType: ''
    returnType: int32
    signature: int32 get_rel_data_width(Relation rel, int32 *attr_widths)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1478,1
    - Dst: get_rel_data_width
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1480,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - relid
    - attr_widths
    argTypes:
    - Oid
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1471
    functionDepth: 3
    functionLinenumber: 1471
    functionLinenumberEnd: 1485
    functionName: get_relation_data_width
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - table_open
    - table_close
    - get_rel_data_width
    linkageType: ''
    returnType: int32
    signature: int32 get_relation_data_width(Oid relid, int32 *attr_widths)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1550,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1558,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1566,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1578,1
    - Dst: canonicalize_qual
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1580,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1586,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1587,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1597,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1601,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1602,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1604,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1619,1
    - Dst: set_baserel_partition_constraint
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1631,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1632,1
    - Dst: expand_generated_columns_in_expr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1639,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1643,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 37
    argCount: 6
    argNames:
    - root
    - relationObjectId
    - rel
    - include_noinherit
    - include_notnull
    - include_partition
    argTypes:
    - PlannerInfo*
    - Oid
    - RelOptInfo*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1512
    functionDepth: 3
    functionLinenumber: 1512
    functionLinenumberEnd: 1646
    functionName: get_relation_constraints
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - eval_const_expressions
    - ChangeVarNodes
    - set_baserel_partition_constraint
    - Assert
    - expand_generated_columns_in_expr
    - lappend
    - TupleDescCompactAttr
    - TupleDescAttr
    - makeNode
    - table_open
    - stringToNode
    - list_concat
    - canonicalize_qual
    - make_ands_implicit
    - table_close
    - makeVar
    linkageType: ''
    returnType: List
    signature: "List *\nget_relation_constraints(PlannerInfo *root,\n\t\t\t\t\t\t
      Oid relationObjectId, RelOptInfo *rel,\n\t\t\t\t\t\t bool include_noinherit,\n\t\t\t\t\t\t
      bool include_notnull,\n\t\t\t\t\t\t bool include_partition)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1662,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1663,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1663,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1664,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1667,1
    - Dst: statext_is_kind_built
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1670,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1672,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1678,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1681,1
    - Dst: statext_is_kind_built
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1684,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1686,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1692,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1695,1
    - Dst: statext_is_kind_built
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1698,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1700,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1706,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1709,1
    - Dst: statext_is_kind_built
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1712,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1714,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1720,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1723,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1726,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 6
    argNames:
    - stainfos
    - rel
    - statOid
    - inh
    - keys
    - exprs
    argTypes:
    - List**
    - RelOptInfo*
    - Oid
    - bool
    - Bitmapset*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1654
    functionDepth: 1
    functionLinenumber: 1654
    functionLinenumberEnd: 1727
    functionName: get_relation_statistics_worker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - lappend
    - makeNode
    - bms_copy
    - ReleaseSysCache
    - GETSTRUCT
    - statext_is_kind_built
    - ObjectIdGetDatum
    - BoolGetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: void
    signature: "void get_relation_statistics_worker(List **stainfos, RelOptInfo *rel,\n\t\t\t\t\t\t\t
      \  Oid statOid, bool inh,\n\t\t\t\t\t\t\t   Bitmapset *keys, List *exprs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetStatExtList
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1746,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1750,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1757,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1757,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1758,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1759,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1760,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1768,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1784,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1791,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1792,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1793,1
    - Dst: expand_generated_columns_in_expr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1796,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1808,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1818,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1821,1
    - Dst: get_relation_statistics_worker
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1827,1
    - Dst: get_relation_statistics_worker
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1829,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1831,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1832,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1835,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - root
    - rel
    - relation
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1838
      start: 1737
    functionDepth: 2
    functionLinenumber: 1737
    functionLinenumberEnd: 1838
    functionName: get_relation_statistics
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - bms_free
    - RelationGetStatExtList
    - lfirst_oid
    - bms_add_member
    - SearchSysCache1
    - elog
    - fix_opfuncids
    - HeapTupleIsValid
    - pfree
    - ReleaseSysCache
    - ObjectIdGetDatum
    - TextDatumGetCString
    - eval_const_expressions
    - ChangeVarNodes
    - list_free
    - expand_generated_columns_in_expr
    - get_relation_statistics_worker
    - stringToNode
    - GETSTRUCT
    - SysCacheGetAttr
    linkageType: ''
    returnType: List
    signature: "List *\nget_relation_statistics(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\tRelation
      relation)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1750,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1757,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1757,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1758,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1759,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1760,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1768,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1784,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1791,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1792,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1793,1
    - Dst: expand_generated_columns_in_expr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1796,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1808,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1818,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1821,1
    - Dst: get_relation_statistics_worker
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1827,1
    - Dst: get_relation_statistics_worker
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1829,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1831,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1832,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1748
    functionDepth: 2
    functionLinenumber: 1748
    functionLinenumberEnd: 1833
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 190
    functionsReached:
    - SearchSysCache1
    - elog
    - ChangeVarNodes
    - eval_const_expressions
    - fix_opfuncids
    - HeapTupleIsValid
    - pfree
    - expand_generated_columns_in_expr
    - bms_free
    - ObjectIdGetDatum
    - get_relation_statistics_worker
    - stringToNode
    - ReleaseSysCache
    - TextDatumGetCString
    - GETSTRUCT
    - lfirst_oid
    - bms_add_member
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: void foreach(l, statoidlist)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1864,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1864,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1883,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1885,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1888,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1890,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1938,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1940,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1942,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1943,1
    - Dst: predicate_refuted_by
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1950,1
    - Dst: get_relation_constraints
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1979,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1994,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1996,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1997,1
    - Dst: predicate_refuted_by
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2013,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 1851
    functionDepth: 4
    functionLinenumber: 1851
    functionLinenumberEnd: 2017
    functionName: relation_excluded_by_constraints
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - predicate_refuted_by
    - foreach
    - Assert
    - contain_mutable_functions
    - lappend
    - lfirst
    - IS_SIMPLE_REL
    - get_relation_constraints
    - IsA
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool relation_excluded_by_constraints(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      RelOptInfo *rel, RangeTblEntry *rte)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1994,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1996,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1997,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1992
    functionDepth: 2
    functionLinenumber: 1992
    functionLinenumberEnd: 1998
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 191
    functionsReached:
    - contain_mutable_functions
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, constraint_pred)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2046,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2059,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2061,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2064,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2074,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2081,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2082,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2088,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2093,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2095,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2101,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2103,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2104,1
    - Dst: expandRTE
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2118,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2120,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2122,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2128,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2134,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2135,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2144,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2150
      start: 2041
    functionDepth: 3
    functionLinenumber: 2041
    functionLinenumberEnd: 2150
    functionName: build_physical_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - elog
    - planner_rt_fetch
    - RelationGetNumberOfAttributes
    - expandRTE
    - foreach
    - IsA
    - makeVarFromTargetEntry
    - makeTargetEntry
    - lappend
    - table_open
    - lfirst
    - TupleDescAttr
    - table_close
    - makeVar
    linkageType: ''
    returnType: List
    signature: 'List *

      build_physical_tlist(PlannerInfo *root, RelOptInfo *rel)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2171,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2183,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2185,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2187,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2198,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2199,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2200,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2203,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2204,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2210,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - root
    - index
    - heapRelation
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2162
    functionDepth: 2
    functionLinenumber: 2162
    functionLinenumberEnd: 2213
    functionName: build_index_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - elog
    - makeTargetEntry
    - lappend
    - lnext
    - list_head
    - lfirst
    - SystemAttributeDefinition
    - TupleDescAttr
    - makeVar
    linkageType: ''
    returnType: List
    signature: "List *\nbuild_index_tlist(PlannerInfo *root, IndexOptInfo *index,\n\t\t\t\t
      \ Relation heapRelation)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2231,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2241,1
    - Dst: OidFunctionCall4Coll
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2241,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2243,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2244,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2245,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2246,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2249,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 5
    argNames:
    - root
    - operatorid
    - args
    - inputcollid
    - varRelid
    argTypes:
    - PlannerInfo*
    - Oid
    - List*
    - Oid
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2224
    functionDepth: 2
    functionLinenumber: 2224
    functionLinenumberEnd: 2252
    functionName: restriction_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - elog
    - get_oprrest
    - OidFunctionCall4Coll
    - Int32GetDatum
    - PointerGetDatum
    - ObjectIdGetDatum
    - DatumGetFloat8
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity restriction_selectivity(PlannerInfo *root,\n\t\t\t\t\t\tOid
      operatorid,\n\t\t\t\t\t\tList *args,\n\t\t\t\t\t\tOid inputcollid,\n\t\t\t\t\t\tint
      varRelid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_oprjoin
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2271,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2281,1
    - Dst: OidFunctionCall5Coll
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2281,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2283,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2284,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2285,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2286,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2287,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 6
    argNames:
    - root
    - operatorid
    - args
    - inputcollid
    - jointype
    - sjinfo
    argTypes:
    - PlannerInfo*
    - Oid
    - List*
    - Oid
    - JoinType
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2263
    functionDepth: 2
    functionLinenumber: 2263
    functionLinenumberEnd: 2293
    functionName: join_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - elog
    - OidFunctionCall5Coll
    - PointerGetDatum
    - ObjectIdGetDatum
    - DatumGetFloat8
    - Int16GetDatum
    - get_oprjoin
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity join_selectivity(PlannerInfo *root,\n\t\t\t\t Oid operatorid,\n\t\t\t\t
      List *args,\n\t\t\t\t Oid inputcollid,\n\t\t\t\t JoinType jointype,\n\t\t\t\t
      SpecialJoinInfo *sjinfo)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_func_support
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2313,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2332,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2332,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2333,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2339,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 8
    argNames:
    - root
    - funcid
    - args
    - inputcollid
    - is_join
    - varRelid
    - jointype
    - sjinfo
    argTypes:
    - PlannerInfo*
    - Oid
    - List*
    - Oid
    - bool
    - int
    - JoinType
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2342
      start: 2303
    functionDepth: 1
    functionLinenumber: 2303
    functionLinenumberEnd: 2342
    functionName: function_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - elog
    - get_func_support
    - OidFunctionCall1
    - PointerGetDatum
    - DatumGetPointer
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity function_selectivity(PlannerInfo *root,\n\t\t\t\t\t Oid
      funcid,\n\t\t\t\t\t List *args,\n\t\t\t\t\t Oid inputcollid,\n\t\t\t\t\t bool
      is_join,\n\t\t\t\t\t int varRelid,\n\t\t\t\t\t JoinType jointype,\n\t\t\t\t\t
      SpecialJoinInfo *sjinfo)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2364,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2364,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2365,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2366,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2367,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2369,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2384,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2384,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2385,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2392,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 4
    argNames:
    - root
    - funcid
    - node
    - cost
    argTypes:
    - PlannerInfo*
    - Oid
    - Node*
    - QualCost*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2401
      start: 2357
    functionDepth: 1
    functionLinenumber: 2357
    functionLinenumberEnd: 2401
    functionName: add_function_cost
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - OidFunctionCall1
    - GETSTRUCT
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void add_function_cost(PlannerInfo *root, Oid funcid, Node *node,\n\t\t\t\t
      \ QualCost *cost)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2425,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2425,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2426,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2427,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2430,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2432,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2445,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2445,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2446,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2451,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - root
    - funcid
    - node
    argTypes:
    - PlannerInfo*
    - Oid
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2462
      start: 2418
    functionDepth: 1
    functionLinenumber: 2418
    functionLinenumberEnd: 2462
    functionName: get_function_rows
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - Assert
    - ReleaseSysCache
    - OidFunctionCall1
    - GETSTRUCT
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - DatumGetPointer
    linkageType: ''
    returnType: double
    signature: double get_function_rows(PlannerInfo *root, Oid funcid, Node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2481,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2483,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - attno
    argTypes:
    - RelOptInfo*
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2500
      start: 2476
    functionDepth: 1
    functionLinenumber: 2476
    functionLinenumberEnd: 2500
    functionName: has_unique_index
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - lfirst
    - foreach
    linkageType: ''
    returnType: bool
    signature: bool has_unique_index(RelOptInfo *rel, AttrNumber attno)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2511,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2517,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2545,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2549,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 25
    argCount: 3
    argNames:
    - root
    - rti
    - event
    argTypes:
    - PlannerInfo*
    - Index
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2551
      start: 2508
    functionDepth: 3
    functionLinenumber: 2508
    functionLinenumberEnd: 2551
    functionName: has_row_triggers
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - table_open
    - planner_rt_fetch
    - table_close
    - elog
    linkageType: ''
    returnType: bool
    signature: bool has_row_triggers(PlannerInfo *root, Index rti, CmdType event)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2561,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2566,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2573,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2599,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2603,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 3
    argNames:
    - root
    - rti
    - event
    argTypes:
    - PlannerInfo*
    - Index
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2605
      start: 2558
    functionDepth: 3
    functionLinenumber: 2558
    functionLinenumberEnd: 2605
    functionName: has_transition_tables
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - elog
    - planner_rt_fetch
    - Assert
    - table_open
    - table_close
    linkageType: ''
    returnType: bool
    signature: bool has_transition_tables(PlannerInfo *root, Index rti, CmdType event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2615,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2621,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2623,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2626,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - root
    - rti
    argTypes:
    - PlannerInfo*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2629
      start: 2612
    functionDepth: 3
    functionLinenumber: 2612
    functionLinenumberEnd: 2629
    functionName: has_stored_generated_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - table_open
    - planner_rt_fetch
    - RelationGetDescr
    - table_close
    linkageType: ''
    returnType: bool
    signature: bool has_stored_generated_columns(PlannerInfo *root, Index rti)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2644,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2650,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2652,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2664,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2668,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2669,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2671,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2672,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2677,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - root
    - rti
    - target_cols
    argTypes:
    - PlannerInfo*
    - Index
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2680
      start: 2639
    functionDepth: 3
    functionLinenumber: 2639
    functionLinenumberEnd: 2680
    functionName: get_dependent_generated_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - RelationGetDescr
    - pull_varattnos
    - table_open
    - stringToNode
    - bms_overlap
    - TupleDescCompactAttr
    - table_close
    - bms_add_member
    linkageType: ''
    returnType: Bitmapset
    signature: "Bitmapset *\nget_dependent_generated_columns(PlannerInfo *root, Index
      rti,\n\t\t\t\t\t\t\t\tBitmapset *target_cols)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CreatePartitionDirectory
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2699,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2702,1
    - Dst: find_partition_scheme
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2705,1
    - Dst: set_baserel_partition_key_exprs
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2708,1
    - Dst: set_baserel_partition_constraint
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - relation
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2710
      start: 2687
    functionDepth: 1
    functionLinenumber: 2687
    functionLinenumberEnd: 2710
    functionName: set_relation_partition_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - set_baserel_partition_constraint
    - set_baserel_partition_key_exprs
    - Assert
    - PartitionDirectoryLookup
    - find_partition_scheme
    - CreatePartitionDirectory
    linkageType: ''
    returnType: void
    signature: "void set_relation_partition_info(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t\tRelation
      relation)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2727,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2732,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2734,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2742,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2744,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2754,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2754,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2756,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2756,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2768,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2782,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2786,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2787,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2790,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2791,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2794,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2795,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2798,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2799,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2802,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2803,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2806,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2808,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2812,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - root
    - relation
    argTypes:
    - PlannerInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2815
      start: 2717
    functionDepth: 1
    functionLinenumber: 2717
    functionLinenumberEnd: 2815
    functionName: find_partition_scheme
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - fmgr_info_copy
    - palloc0_object
    - foreach
    - memcpy
    - Assert
    - lappend
    - palloc_array
    - lfirst
    - RelationGetPartitionKey
    - memcmp
    linkageType: ''
    returnType: PartitionScheme
    signature: PartitionScheme find_partition_scheme(PlannerInfo *root, Relation relation)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2827,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2834,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2837,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2840,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2851,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2853,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2861,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2864,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2864,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2865,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2866,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2870,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2881,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - relation
    - rel
    argTypes:
    - Relation
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2882
      start: 2823
    functionDepth: 2
    functionLinenumber: 2823
    functionLinenumberEnd: 2882
    functionName: set_baserel_partition_key_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - elog
    - ChangeVarNodes
    - copyObject
    - palloc0_array
    - Assert
    - palloc_array
    - lnext
    - list_head
    - IS_SIMPLE_REL
    - lfirst
    - RelationGetPartitionKey
    - list_make1
    - makeVar
    linkageType: ''
    returnType: void
    signature: "void set_baserel_partition_key_exprs(Relation relation,\n\t\t\t\t\t\t\t\tRelOptInfo
      *rel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionQual
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2906,1
    - Dst: expression_planner
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2909,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2911,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - relation
    - rel
    argTypes:
    - Relation
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2914
      start: 2891
    functionDepth: 2
    functionLinenumber: 2891
    functionLinenumberEnd: 2914
    functionName: set_baserel_partition_constraint
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - RelationGetPartitionQual
    - expression_planner
    - ChangeVarNodes
    linkageType: ''
    returnType: void
    signature: void set_baserel_partition_constraint(Relation relation, RelOptInfo
      *rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - item
    - ','
    - clause
    - ','
    - info
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 78
    functionName: iterate_begin
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: iterate_begin(item, clause, info)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - info
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: iterate_end
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: iterate_end(info)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:171,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:172,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:175,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:176,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - predicate_list
    - clause_list
    - weak
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 182
    functionName: predicate_implied_by
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 8
    functionsReached:
    - list_length
    - linitial
    - predicate_implied_by_recurse
    linkageType: ''
    returnType: bool
    signature: "bool predicate_implied_by(List *predicate_list, List *clause_list,\n\t\t\t\t\t
      bool weak)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:241,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:242,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:245,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:246,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:251,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - predicate_list
    - clause_list
    - weak
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 252
    functionName: predicate_refuted_by
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - list_length
    - linitial
    - predicate_refuted_by_recurse
    linkageType: ''
    returnType: bool
    signature: "bool predicate_refuted_by(List *predicate_list, List *clause_list,\n\t\t\t\t\t
      bool weak)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:301,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:302,1
    - Dst: predicate_classify
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:305,1
    - Dst: predicate_classify
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:307,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:318,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:320,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:327,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:338,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:340,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:347,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:356,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:358,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:365,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:374,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:376,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:383,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:398,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:404,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:411,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:418,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:430,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:432,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:439,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:453,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:455,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:462,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:471,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:473,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:480,1
    - Dst: predicate_implied_by_simple_clause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:489,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:497,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 109
    argCount: 3
    argNames:
    - clause
    - predicate
    - weak
    argTypes:
    - Node*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 499
    functionName: predicate_implied_by_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - elog
    - predicate_classify
    - IsA
    - Assert
    - predicate_implied_by_recurse
    - iterate_end
    - iterate_begin
    - predicate_implied_by_simple_clause
    linkageType: ''
    returnType: bool
    signature: "bool predicate_implied_by_recurse(Node *clause, Node *predicate,\n\t\t\t\t\t\t\t
      bool weak)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 402
    functionDepth: 2
    functionLinenumber: 402
    functionLinenumberEnd: 410
    functionName: iterate_begin
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - predicate_implied_by_recurse
    linkageType: ''
    returnType: void
    signature: void iterate_begin(pitem, predicate, pred_info)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:543,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:544,1
    - Dst: predicate_classify
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:547,1
    - Dst: predicate_classify
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:549,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:562,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:564,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:571,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:580,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:582,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:589,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:598,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:600,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:607,1
    - Dst: extract_not_arg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:622,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:624,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:632,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:634,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:641,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:655,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:657,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:664,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:674,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:680,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:687,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:694,1
    - Dst: extract_not_arg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:704,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:706,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:714,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:716,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:723,1
    - Dst: extract_strong_not_arg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:739,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:741,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:753,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:755,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:762,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:771,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:773,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:780,1
    - Dst: extract_not_arg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:790,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:792,1
    - Dst: predicate_refuted_by_simple_clause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:800,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:808,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 130
    argCount: 3
    argNames:
    - clause
    - predicate
    - weak
    argTypes:
    - Node*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 810
    functionName: predicate_refuted_by_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - elog
    - predicate_refuted_by_simple_clause
    - predicate_classify
    - extract_not_arg
    - IsA
    - Assert
    - predicate_implied_by_recurse
    - extract_strong_not_arg
    - iterate_end
    - iterate_begin
    - predicate_refuted_by_recurse
    linkageType: ''
    returnType: bool
    signature: "bool predicate_refuted_by_recurse(Node *clause, Node *predicate,\n\t\t\t\t\t\t\t
      bool weak)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:680,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 678
    functionDepth: 3
    functionLinenumber: 678
    functionLinenumberEnd: 686
    functionName: iterate_begin
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - predicate_refuted_by_recurse
    linkageType: ''
    returnType: void
    signature: void iterate_begin(pitem, predicate, pred_info)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:831,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:832,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:832,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:838,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:847,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:854,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:863,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:866,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:874,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:880,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:881,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:881,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:881,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:890,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:892,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 827
    functionDepth: 2
    functionLinenumber: 827
    functionLinenumberEnd: 903
    functionName: predicate_classify
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - Assert
    - lsecond
    - is_andclause
    - ARR_NDIM
    - is_orclause
    - list_length
    - DatumGetArrayTypeP
    - IsA
    - ArrayGetNItems
    - ARR_DIMS
    linkageType: ''
    returnType: PredClass
    signature: PredClass predicate_classify(Node *clause, PredIterInfo info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 914
    functionName: list_startup_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - list_head
    linkageType: ''
    returnType: void
    signature: void list_startup_fn(Node *clause, PredIterInfo info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:924,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:925,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 916
    functionDepth: 2
    functionLinenumber: 916
    functionLinenumberEnd: 927
    functionName: list_next_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - lfirst
    - lnext
    linkageType: ''
    returnType: Node
    signature: 'Node *

      list_next_fn(PredIterInfo info)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 933
    functionName: list_cleanup_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void list_cleanup_fn(PredIterInfo info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 939
    functionDepth: 1
    functionLinenumber: 939
    functionLinenumberEnd: 944
    functionName: boolexpr_startup_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - list_head
    linkageType: ''
    returnType: void
    signature: void boolexpr_startup_fn(Node *clause, PredIterInfo info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:972,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:976,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:977,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:978,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:978,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:980,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:981,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:994,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:998,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1003,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 960
    functionDepth: 1
    functionLinenumber: 960
    functionLinenumberEnd: 1007
    functionName: arrayconst_startup_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - get_typlenbyvalalign
    - ARR_ELEMTYPE
    - lsecond
    - list_copy
    - palloc_object
    - DatumGetArrayTypeP
    - deconstruct_array
    linkageType: ''
    returnType: void
    signature: void arrayconst_startup_fn(Node *clause, PredIterInfo info)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 1009
    functionDepth: 0
    functionLinenumber: 1009
    functionLinenumberEnd: 1020
    functionName: arrayconst_next_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Node
    signature: 'Node *

      arrayconst_next_fn(PredIterInfo info)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1027,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1028,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1029,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 1022
    functionDepth: 1
    functionLinenumber: 1022
    functionLinenumberEnd: 1031
    functionName: arrayconst_cleanup_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - pfree
    - list_free
    linkageType: ''
    returnType: void
    signature: void arrayconst_cleanup_fn(PredIterInfo info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1051,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1062,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1065,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1068
    functionName: arrayexpr_startup_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - lsecond
    - list_head
    - list_copy
    - palloc_object
    linkageType: ''
    returnType: void
    signature: void arrayexpr_startup_fn(Node *clause, PredIterInfo info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1077,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1077,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1078,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1070
    functionDepth: 2
    functionLinenumber: 1070
    functionLinenumberEnd: 1080
    functionName: arrayexpr_next_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - lsecond
    - lfirst
    - lnext
    linkageType: ''
    returnType: Node
    signature: 'Node *

      arrayexpr_next_fn(PredIterInfo info)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1087,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1082
    functionDepth: 1
    functionLinenumber: 1082
    functionLinenumberEnd: 1089
    functionName: arrayexpr_cleanup_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - pfree
    - list_free
    linkageType: ''
    returnType: void
    signature: void arrayexpr_cleanup_fn(PredIterInfo info)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1104,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1113,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1140,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1140,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1141,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1143,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1146,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1148,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1151,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1157,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1158,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1158,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1170,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1194,1
    - Dst: operator_predicate_proof
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1213,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 40
    argCount: 3
    argNames:
    - predicate
    - clause
    - weak
    argTypes:
    - Expr*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1099
    functionDepth: 2
    functionLinenumber: 1099
    functionLinenumberEnd: 1214
    functionName: predicate_implied_by_simple_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - list_length
    - Assert
    - linitial
    - is_notclause
    - CHECK_FOR_INTERRUPTS
    - lsecond
    - get_notclausearg
    - equal
    - clause_is_strict_for
    - operator_predicate_proof
    - IsA
    - nodeTag
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool predicate_implied_by_simple_clause(Expr *predicate, Node *clause,\n\t\t\t\t\t\t\t\t
      \  bool weak)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1231,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1245,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1259,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1278,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1293,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1311,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1325,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1343,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1358,1
    - Dst: operator_predicate_proof
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1379,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 65
    argCount: 3
    argNames:
    - predicate
    - clause
    - weak
    argTypes:
    - Expr*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1226
    functionDepth: 1
    functionLinenumber: 1226
    functionLinenumberEnd: 1380
    functionName: predicate_refuted_by_simple_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - equal
    - clause_is_strict_for
    - operator_predicate_proof
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: "bool predicate_refuted_by_simple_clause(Expr *predicate, Node *clause,\n\t\t\t\t\t\t\t\t
      \  bool weak)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1392,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1397,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1399,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1387
    functionDepth: 1
    functionLinenumber: 1387
    functionLinenumberEnd: 1409
    functionName: extract_not_arg
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - linitial
    - IsA
    linkageType: ''
    returnType: Node
    signature: 'Node *

      extract_not_arg(Node *clause)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1420,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1425,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1427,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1415
    functionDepth: 1
    functionLinenumber: 1415
    functionLinenumberEnd: 1435
    functionName: extract_strong_not_arg
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - linitial
    - IsA
    linkageType: ''
    returnType: Node
    signature: 'Node *

      extract_strong_not_arg(Node *clause)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1476,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1478,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1482,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1490,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1491,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1493,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1495,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1495,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1500,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1501,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1503,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1505,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1505,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1519,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1520,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1522,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1523,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1525,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1526,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1528,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1529,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1537,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1540,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1541,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1551,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1552,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1559,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1572,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1573,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1573,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1573,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1575,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1582,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1595,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1602,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 52
    argCount: 3
    argNames:
    - clause
    - subexpr
    - allow_false
    argTypes:
    - Node*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1461
    functionDepth: 2
    functionLinenumber: 1461
    functionLinenumberEnd: 1606
    functionName: clause_is_strict_for
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 3
    functionsReached:
    - is_funcclause
    - op_strict
    - foreach
    - list_length
    - func_strict
    - linitial
    - is_opclause
    - lsecond
    - lfirst
    - ARR_NDIM
    - equal
    - clause_is_strict_for
    - DatumGetArrayTypeP
    - IsA
    - ArrayGetNItems
    - ARR_DIMS
    linkageType: ''
    returnType: bool
    signature: bool clause_is_strict_for(Node *clause, Node *subexpr, bool allow_false)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1812,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1815,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1817,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1820,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1839,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1840,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1841,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1842,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1844,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1846,1
    - Dst: operator_same_subexprs_proof
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1849,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1854,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1857,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1862,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1865,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1868,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1872,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1873,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1875,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1876,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1879,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1881,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1885,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1886,1
    - Dst: operator_same_subexprs_proof
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1888,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1893,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1896,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1900,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1901,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1905,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1908,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1911,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1915,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1916,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1935,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1952,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1964,1
    - Dst: get_btree_test_op
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1974,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1976,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1985,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1988,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1991,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2000,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2003,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2006,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2007,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2011,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2014,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2019,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2022,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 109
    argCount: 4
    argNames:
    - predicate
    - clause
    - refute_it
    - weak
    argTypes:
    - Expr*
    - Node*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2023
      start: 1780
    functionDepth: 2
    functionLinenumber: 1780
    functionLinenumberEnd: 2023
    functionName: operator_predicate_proof
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - is_opclause
    - FreeExecutorState
    - ExecEvalExprSwitchContext
    - operator_same_subexprs_proof
    - DatumGetBool
    - elog
    - fix_opfuncids
    - linitial
    - OidIsValid
    - list_length
    - get_commutator
    - get_btree_test_op
    - op_strict
    - CreateExecutorState
    - GetPerTupleExprContext
    - MemoryContextSwitchTo
    - lsecond
    - ExecInitExpr
    - make_opclause
    - equal
    - IsA
    linkageType: ''
    returnType: bool
    signature: "bool operator_predicate_proof(Expr *predicate, Node *clause,\n\t\t\t\t\t\t
      bool refute_it, bool weak)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2051,1
    - Dst: operator_same_subexprs_lookup
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2064,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - pred_op
    - clause_op
    - refute_it
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2065
      start: 2033
    functionDepth: 1
    functionLinenumber: 2033
    functionLinenumberEnd: 2065
    functionName: operator_same_subexprs_proof
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - get_negator
    - operator_same_subexprs_lookup
    linkageType: ''
    returnType: bool
    signature: bool operator_same_subexprs_proof(Oid pred_op, Oid clause_op, bool
      refute_it)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2126,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2130,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2137,1
    - Dst: get_op_index_interpretation
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2170,1
    - Dst: get_op_index_interpretation
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2172,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2178,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2192,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2226,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2230,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2231,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2235,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2241,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2253,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2264,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2265,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2281,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 69
    argCount: 3
    argNames:
    - pred_op
    - clause_op
    - refute_it
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2299
      start: 2102
    functionDepth: 1
    functionLinenumber: 2102
    functionLinenumberEnd: 2299
    functionName: lookup_proof_cache
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - get_op_index_interpretation
    - hash_search
    - Assert
    - get_opfamily_member_for_cmptype
    - get_negator
    - list_free_deep
    - hash_create
    - op_volatile
    - lfirst
    - OidIsValid
    - CacheRegisterSyscacheCallback
    linkageType: ''
    returnType: OprProofCacheEntry
    signature: 'OprProofCacheEntry *

      lookup_proof_cache(Oid pred_op, Oid clause_op, bool refute_it)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2178,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2192,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2226,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2230,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2231,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2235,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2241,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2253,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2262
      start: 2176
    functionDepth: 1
    functionLinenumber: 2176
    functionLinenumberEnd: 2262
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 195
    functionsReached:
    - Assert
    - get_opfamily_member_for_cmptype
    - get_negator
    - op_volatile
    - lfirst
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void foreach(lcp, pred_op_infos)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2192,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2226,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2230,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2231,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2235,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2241,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2253,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2258
      start: 2181
    functionDepth: 1
    functionLinenumber: 2181
    functionLinenumberEnd: 2258
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 195
    functionsReached:
    - Assert
    - get_opfamily_member_for_cmptype
    - get_negator
    - op_volatile
    - lfirst
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void foreach(lcc, clause_op_infos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup_proof_cache
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - pred_op
    - clause_op
    - refute_it
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2316
      start: 2306
    functionDepth: 2
    functionLinenumber: 2306
    functionLinenumberEnd: 2316
    functionName: operator_same_subexprs_lookup
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - lookup_proof_cache
    linkageType: ''
    returnType: bool
    signature: bool operator_same_subexprs_lookup(Oid pred_op, Oid clause_op, bool
      refute_it)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup_proof_cache
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - pred_op
    - clause_op
    - refute_it
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2341
      start: 2331
    functionDepth: 2
    functionLinenumber: 2331
    functionLinenumberEnd: 2341
    functionName: get_btree_test_op
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - lookup_proof_cache
    linkageType: ''
    returnType: Oid
    signature: Oid get_btree_test_op(Oid pred_op, Oid clause_op, bool refute_it)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2354,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2357,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - SysCacheIdentifier
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2364
      start: 2347
    functionDepth: 1
    functionLinenumber: 2347
    functionLinenumberEnd: 2364
    functionName: InvalidateOprProofCacheCallBack
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_seq_search
    - hash_seq_init
    linkageType: ''
    returnType: void
    signature: "void InvalidateOprProofCacheCallBack(Datum arg, SysCacheIdentifier
      cacheid,\n\t\t\t\t\t\t\t\tuint32 hashvalue)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:84,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:91,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:93,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:96,1
    - Dst: expand_insert_targetlist
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:109,1
    - Dst: extract_update_targetlist_colnos
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:111,1
    - Dst: add_row_identity_columns
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:127,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:149,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:151,1
    - Dst: expand_insert_targetlist
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:155,1
    - Dst: extract_update_targetlist_colnos
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:160,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:168,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:169,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:174,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:177,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:180,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:183,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:184,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:186,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:188,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:196,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:200,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:203,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:206,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:209,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:210,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:212,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:231,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:233,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:245,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:251,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:252,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:253,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:254,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:256,1
    - Dst: makeWholeRowVar
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:261,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:261,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:265,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:266,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:267,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:268,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:270,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:276,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:282,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:283,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:284,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:285,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:287,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:298,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:303,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:309,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:312,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:316,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:319,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:320,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:324,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:326,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:332,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 79
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 333
    functionName: preprocess_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 1
    functionsReached:
    - tlist_member
    - pstrdup
    - add_row_identity_columns
    - pull_var_clause
    - table_close
    - elog
    - foreach
    - Assert
    - list_concat_copy
    - table_open
    - makeWholeRowVar
    - list_length
    - list_free
    - makeTargetEntry
    - rt_fetch
    - lappend
    - lfirst
    - expand_insert_targetlist
    - extract_update_targetlist_colnos
    - makeVar
    - IsA
    - snprintf
    linkageType: ''
    returnType: void
    signature: void preprocess_targetlist(PlannerInfo *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:174,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:177,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:180,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:183,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:184,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:186,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 187
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 196
    functionsReached:
    - tlist_member
    - makeTargetEntry
    - lappend
    - lfirst
    - list_length
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(l2, vars)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:200,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:203,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:206,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:209,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:210,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:212,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 213
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 196
    functionsReached:
    - tlist_member
    - makeTargetEntry
    - lappend
    - lfirst
    - list_length
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(l, vars)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:309,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:312,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:316,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:319,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:320,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:324,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 325
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 196
    functionsReached:
    - tlist_member
    - makeTargetEntry
    - lappend
    - lfirst
    - list_length
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(l, vars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:358,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 365
    functionName: extract_update_targetlist_colnos
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 2
    functionsReached:
    - lappend_int
    - lfirst
    linkageType: ''
    returnType: List
    signature: 'List *

      extract_update_targetlist_colnos(List *tlist)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:358,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 363
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 196
    functionsReached:
    - lappend_int
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tlist)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:391,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:400,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:404,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:409,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:414,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:449,1
    - Dst: getBaseTypeAndTypmod
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:463,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:464,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:475,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:481,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:482,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:485,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:487,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:487,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:491,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:503,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:506,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:510,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:513,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:515,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - root
    - tlist
    - rel
    argTypes:
    - PlannerInfo*
    - List*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 519
    functionName: expand_insert_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 1
    functionsReached:
    - eval_const_expressions
    - RelationGetNumberOfAttributes
    - elog
    - flatCopyTargetEntry
    - makeTargetEntry
    - pstrdup
    - coerce_null_to_domain
    - lnext
    - lappend
    - list_head
    - lfirst
    - NameStr
    - makeConst
    - TupleDescAttr
    - IsA
    - getBaseTypeAndTypmod
    linkageType: ''
    returnType: List
    signature: 'List *

      expand_insert_targetlist(PlannerInfo *root, List *tlist, Relation rel)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rowmarks
    - rtindex
    argTypes:
    - List*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 540
    functionName: get_plan_rowmark
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 1
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: PlanRowMark
    signature: 'PlanRowMark *

      get_plan_rowmark(List *rowmarks, Index rtindex)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 538
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 196
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, rowmarks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:108,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:115,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:116,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:124,1
    - Dst: setup_simple_rel_arrays
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:132,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:139,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:141,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:144,1
    - Dst: generate_recursion_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:151,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 176
    functionName: plan_set_operations
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - generate_recursion_path
    - Assert
    - castNode
    - setup_simple_rel_arrays
    - IsA
    - recurse_set_operations
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      plan_set_operations(PlannerInfo *root)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:226,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:238,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:241,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:244,1
    - Dst: choose_plan_name
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:251,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:252,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:262,1
    - Dst: generate_setop_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:265,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:271,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:277,1
    - Dst: generate_union_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:283,1
    - Dst: generate_nonunion_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:287,1
    - Dst: tlist_same_datatypes
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:304,1
    - Dst: tlist_same_collations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:305,1
    - Dst: generate_setop_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:311,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:318,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:321,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:326,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:327,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:331,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:335,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:340,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:343,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:345,1
    - Dst: postprocess_setop_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:348,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:352,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:353,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 8
    argNames:
    - setOp
    - root
    - parentOp
    - colTypes
    - colCollations
    - refnames_tlist
    - pTargetList
    - istrivial_tlist
    argTypes:
    - Node*
    - PlannerInfo*
    - SetOperationStmt*
    - List*
    - List*
    - List*
    - List**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 213
    functionDepth: 4
    functionLinenumber: 213
    functionLinenumberEnd: 359
    functionName: recurse_set_operations
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - build_simple_rel
    - check_stack_depth
    - apply_projection_to_path
    - generate_union_paths
    - generate_nonunion_paths
    - nodeTag
    - elog
    - foreach
    - Assert
    - postprocess_setop_rel
    - generate_setop_tlist
    - subquery_planner
    - tlist_same_datatypes
    - create_projection_path
    - create_pathtarget
    - choose_plan_name
    - lfirst
    - IsA
    - tlist_same_collations
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\nrecurse_set_operations(Node *setOp, PlannerInfo *root,\n\t\t\t\t\t
      \  SetOperationStmt *parentOp,\n\t\t\t\t\t   List *colTypes, List *colCollations,\n\t\t\t\t\t
      \  List *refnames_tlist,\n\t\t\t\t\t   List **pTargetList,\n\t\t\t\t\t   bool
      *istrivial_tlist)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:387,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:393,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:400,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:405,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:412,1
    - Dst: generate_append_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:420,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:421,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:427,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:428,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:429,1
    - Dst: generate_setop_grouplist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:442,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:445,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:446,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:447,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:448,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:449,1
    - Dst: create_recursiveunion_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:461,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:470,1
    - Dst: postprocess_setop_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:471,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 4
    argNames:
    - setOp
    - root
    - refnames_tlist
    - pTargetList
    argTypes:
    - SetOperationStmt*
    - PlannerInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 364
    functionDepth: 5
    functionLinenumber: 364
    functionLinenumberEnd: 473
    functionName: generate_recursion_path
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - elog
    - recurse_set_operations
    - build_setop_child_paths
    - errcode
    - Assert
    - grouping_is_hashable
    - postprocess_setop_rel
    - create_pathtarget
    - ereport
    - create_recursiveunion_path
    - list_make2
    - errmsg
    - errdetail
    - add_path
    - generate_append_tlist
    - fetch_upper_rel
    - bms_union
    - generate_setop_grouplist
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\ngenerate_recursion_path(SetOperationStmt *setOp, PlannerInfo
      *root,\n\t\t\t\t\t\tList *refnames_tlist,\n\t\t\t\t\t\tList **pTargetList)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:498,1
    - Dst: add_setop_child_rel_equivalences
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:502,1
    - Dst: set_subquery_size_estimates
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:512,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:518,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:522,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:524,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:531,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:533,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:545,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:546,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:549,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:549,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:566,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:591,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:597,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:613,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:614,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:617,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:617,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:627,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:635,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:641,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:643,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:646,1
    - Dst: postprocess_setop_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:649,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:679,1
    - Dst: get_tlist_exprs
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:680,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 43
    argCount: 6
    argNames:
    - root
    - rel
    - trivial_tlist
    - child_tlist
    - interesting_pathkeys
    - pNumGroups
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - bool
    - List*
    - List*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 488
    functionDepth: 4
    functionLinenumber: 488
    functionLinenumberEnd: 685
    functionName: build_setop_child_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - create_incremental_sort_path
    - create_subqueryscan_path
    - fetch_upper_rel
    - estimate_num_groups
    - mark_dummy_rel
    - foreach
    - Assert
    - linitial
    - postprocess_setop_rel
    - pathkeys_count_contained_in
    - convert_subquery_pathkeys
    - set_subquery_size_estimates
    - add_path
    - create_sort_path
    - add_setop_child_rel_equivalences
    - lfirst
    - is_dummy_rel
    - get_tlist_exprs
    - add_partial_path
    - make_tlist_from_pathtarget
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: "void build_setop_child_paths(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\tbool
      trivial_tlist, List *child_tlist,\n\t\t\t\t\t\tList *interesting_pathkeys, double
      *pNumGroups)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: plan_union_children
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:722,1
    - Dst: generate_append_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:735,1
    - Dst: generate_setop_grouplist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:743,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:745,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:749,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:762,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:763,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:764,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:769,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:783,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:790,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:797,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:800,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:803,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:808,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:815,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:838,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:839,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:844,1
    - Dst: create_setop_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:845,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:853,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:862,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:882,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:884,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:886,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:889,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:900,1
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:901,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:901,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:902,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:905,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:908,1
    - Dst: create_gather_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:912,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:918,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:919,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:937,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:947,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:953,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:963,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:973,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:974,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:977,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:980,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:983,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:990,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:991,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:994,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:997,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:999,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1011,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1019,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1022,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1025,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1031,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1034,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 95
    argCount: 4
    argNames:
    - op
    - root
    - refnames_tlist
    - pTargetList
    argTypes:
    - SetOperationStmt*
    - PlannerInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 690
    functionDepth: 5
    functionLinenumber: 690
    functionLinenumberEnd: 1038
    functionName: generate_union_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - create_merge_append_path
    - build_setop_child_paths
    - lfirst_int
    - create_append_path
    - create_setop_pathtarget
    - bms_add_members
    - grouping_is_sortable
    - fetch_upper_rel
    - mark_dummy_rel
    - foreach
    - Assert
    - linitial
    - pg_leftmost_one_pos32
    - list_length
    - add_path
    - create_unique_path
    - create_sort_path
    - lappend
    - get_cheapest_path_for_pathkeys
    - create_agg_path
    - create_gather_path
    - lfirst
    - plan_union_children
    - generate_append_tlist
    - generate_setop_grouplist
    - lfirst_node
    - is_dummy_rel
    - grouping_is_hashable
    - make_pathkeys_for_sortclauses
    - Max
    - Min
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\ngenerate_union_paths(SetOperationStmt *op, PlannerInfo
      *root,\n\t\t\t\t\t List *refnames_tlist,\n\t\t\t\t\t List **pTargetList)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:762,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:763,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:764,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:769,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:783,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 760
    functionDepth: 5
    functionLinenumber: 760
    functionLinenumberEnd: 785
    functionName: forthree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 3
    functionsReached:
    - build_setop_child_paths
    - lfirst_int
    - lfirst_node
    - lfirst
    - is_dummy_rel
    linkageType: ''
    returnType: void
    signature: void forthree(lc, rellist, lc2, trivial_tlist_list, lc3, tlist_list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:790,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:797,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:800,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:803,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:808,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:815,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:838,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:839,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 841
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 199
    functionsReached:
    - linitial
    - lappend
    - get_cheapest_path_for_pathkeys
    - lfirst
    - bms_add_members
    - is_dummy_rel
    linkageType: ''
    returnType: void
    signature: void foreach(lc, rellist)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1077,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1084,1
    - Dst: generate_setop_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1098,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1103,1
    - Dst: generate_setop_grouplist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1108,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1111,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1112,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1114,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1115,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1117,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1119,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1124,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1134,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1139,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1177,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1178,1
    - Dst: create_setop_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1186,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1187,1
    - Dst: create_setop_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1189,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1190,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1200,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1202,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1208,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1215,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1224,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1228,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1251,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1251,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1253,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1275,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1289,1
    - Dst: create_setop_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1299,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1308,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1322,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1325,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1329,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1336,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1344,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1347,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1351,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1358,1
    - Dst: create_setop_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1365,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1374,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 103
    argCount: 4
    argNames:
    - op
    - root
    - refnames_tlist
    - pTargetList
    argTypes:
    - SetOperationStmt*
    - PlannerInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1043
    functionDepth: 5
    functionLinenumber: 1043
    functionLinenumberEnd: 1378
    functionName: generate_nonunion_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - build_setop_child_paths
    - errcode
    - create_append_path
    - create_setop_pathtarget
    - grouping_is_sortable
    - fetch_upper_rel
    - bms_union
    - mark_dummy_rel
    - elog
    - Assert
    - pathkeys_contained_in
    - generate_setop_tlist
    - errmsg
    - create_setop_path
    - add_path
    - create_sort_path
    - ereport
    - get_cheapest_path_for_pathkeys
    - list_make1
    - generate_setop_grouplist
    - is_dummy_rel
    - grouping_is_hashable
    - make_pathkeys_for_sortclauses
    - list_make2
    - errdetail
    - Min
    - recurse_set_operations
    linkageType: ''
    returnType: RelOptInfo
    signature: "RelOptInfo *\ngenerate_nonunion_paths(SetOperationStmt *op, PlannerInfo
      *root,\n\t\t\t\t\t\tList *refnames_tlist,\n\t\t\t\t\t\tList **pTargetList)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1399,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1409,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1411,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1413,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1419,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1420,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1423,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1424,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1437,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1437,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1444,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1445,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 5
    argNames:
    - root
    - top_union
    - refnames_tlist
    - tlist_list
    - istrivial_tlist
    argTypes:
    - PlannerInfo*
    - SetOperationStmt*
    - List*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1392
    functionDepth: 5
    functionLinenumber: 1392
    functionLinenumberEnd: 1449
    functionName: plan_union_children
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - equal
    - lappend_int
    - linitial
    - lappend
    - list_delete_first
    - list_make1
    - IsA
    - recurse_set_operations
    - lcons
    linkageType: ''
    returnType: List
    signature: "List *\nplan_union_children(PlannerInfo *root,\n\t\t\t\t\tSetOperationStmt
      *top_union,\n\t\t\t\t\tList *refnames_tlist,\n\t\t\t\t\tList **tlist_list,\n\t\t\t\t\tList
      **istrivial_tlist)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1454
    functionDepth: 3
    functionLinenumber: 1454
    functionLinenumberEnd: 1467
    functionName: postprocess_setop_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 3
    functionsReached:
    - set_cheapest
    linkageType: ''
    returnType: void
    signature: void postprocess_setop_rel(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1502,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1503,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1504,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1505,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1510,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1528,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1531,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1533,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1534,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1535,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1538,1
    - Dst: coerce_to_common_type
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1548,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1566,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1568,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1569,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1569,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1574,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1576,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1586,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 7
    argNames:
    - colTypes
    - colCollations
    - varno
    - hack_constants
    - input_tlist
    - refnames_tlist
    - trivial_tlist
    argTypes:
    - List*
    - List*
    - Index
    - bool
    - List*
    - List*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1480
    functionDepth: 1
    functionLinenumber: 1480
    functionLinenumberEnd: 1590
    functionName: generate_setop_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 2
    functionsReached:
    - exprTypmod
    - applyRelabelType
    - Assert
    - exprType
    - makeTargetEntry
    - pstrdup
    - lappend
    - exprCollation
    - lfirst
    - lfirst_oid
    - IsA
    - coerce_to_common_type
    - makeVar
    linkageType: ''
    returnType: List
    signature: "List *\ngenerate_setop_tlist(List *colTypes, List *colCollations,\n\t\t\t\t\t
      Index varno,\n\t\t\t\t\t bool hack_constants,\n\t\t\t\t\t List *input_tlist,\n\t\t\t\t\t
      List *refnames_tlist,\n\t\t\t\t\t bool *trivial_tlist)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1502,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1503,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1504,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1505,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1510,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1528,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1531,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1533,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1534,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1535,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1538,1
    - Dst: coerce_to_common_type
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1548,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1566,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1568,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1569,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1569,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1574,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1576,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1586,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1499
    functionDepth: 1
    functionLinenumber: 1499
    functionLinenumberEnd: 1587
    functionName: forfour
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - exprTypmod
    - applyRelabelType
    - Assert
    - exprType
    - makeTargetEntry
    - pstrdup
    - lappend
    - exprCollation
    - lfirst
    - lfirst_oid
    - IsA
    - coerce_to_common_type
    - makeVar
    linkageType: ''
    returnType: void
    signature: "void forfour(ctlc, colTypes, cclc, colCollations,\n\t\t\titlc, input_tlist,
      rtlc, refnames_tlist)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1630,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1630,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1634,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1637,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1641,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1644,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1645,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1645,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1648,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1650,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1660,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1663,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1673,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1675,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1679,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1680,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1686,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1688,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1698,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1701,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 4
    argNames:
    - colTypes
    - colCollations
    - input_tlists
    - refnames_tlist
    argTypes:
    - List*
    - List*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1608
    functionDepth: 2
    functionLinenumber: 1608
    functionLinenumberEnd: 1704
    functionName: generate_append_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 2
    functionsReached:
    - exprTypmod
    - Assert
    - exprType
    - makeTargetEntry
    - pstrdup
    - lappend
    - palloc_array
    - lnext
    - pfree
    - lfirst
    - list_head
    - list_length
    - lfirst_oid
    - makeVar
    linkageType: ''
    returnType: List
    signature: "List *\ngenerate_append_tlist(List *colTypes, List *colCollations,\n\t\t\t\t\t
      \ List *input_tlists,\n\t\t\t\t\t  List *refnames_tlist)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1634,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1637,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1641,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1644,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1645,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1645,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1648,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1650,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1660,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1663,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1632
    functionDepth: 2
    functionLinenumber: 1632
    functionLinenumberEnd: 1664
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 199
    functionsReached:
    - exprTypmod
    - Assert
    - exprType
    - lnext
    - lfirst
    - list_head
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(tlistl, input_tlists)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1641,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1644,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1645,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1645,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1648,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1650,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1660,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1662
      start: 1639
    functionDepth: 2
    functionLinenumber: 1639
    functionLinenumberEnd: 1662
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 199
    functionsReached:
    - exprTypmod
    - Assert
    - exprType
    - lnext
    - lfirst
    - list_head
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(subtlistl, subtlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1673,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1675,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1679,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1680,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1686,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1688,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1670
    functionDepth: 1
    functionLinenumber: 1670
    functionLinenumberEnd: 1699
    functionName: forthree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 3
    functionsReached:
    - Assert
    - makeTargetEntry
    - pstrdup
    - lappend
    - lfirst
    - lfirst_oid
    - makeVar
    linkageType: ''
    returnType: void
    signature: "void forthree(curColType, colTypes, curColCollation, colCollations,\n\t\t\t
      ref_tl_item, refnames_tlist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1720,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1724,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1736,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1737,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1738,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1739,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - op
    - targetlist
    argTypes:
    - SetOperationStmt*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1717
    functionDepth: 2
    functionLinenumber: 1717
    functionLinenumberEnd: 1745
    functionName: generate_setop_grouplist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 3
    functionsReached:
    - copyObject
    - Assert
    - lnext
    - list_head
    - lfirst
    linkageType: ''
    returnType: List
    signature: 'List *

      generate_setop_grouplist(SetOperationStmt *op, List *targetlist)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1736,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1737,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1738,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1739,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1725
    functionDepth: 2
    functionLinenumber: 1725
    functionLinenumberEnd: 1742
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 199
    functionsReached:
    - Assert
    - lfirst
    - lnext
    linkageType: ''
    returnType: void
    signature: void foreach(lt, targetlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1765,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1770,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - root
    - tlist
    - child_pathlist
    argTypes:
    - PlannerInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1757
    functionDepth: 1
    functionLinenumber: 1757
    functionLinenumberEnd: 1780
    functionName: create_setop_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 2
    functionsReached:
    - lfirst
    - create_pathtarget
    - rint
    linkageType: ''
    returnType: PathTarget
    signature: 'PathTarget *

      create_setop_pathtarget(PlannerInfo *root, List *tlist, List *child_pathlist)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1774
      start: 1768
    functionDepth: 1
    functionLinenumber: 1768
    functionLinenumberEnd: 1774
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 199
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, child_pathlist)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:76,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:77,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:85,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:87,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:87,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:96,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:100,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:121,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:125,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:165,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:167,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:168,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:168,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:170,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:178,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:180,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:181,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:181,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:183,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:192,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:194,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:211,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:225,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:249,1
    - Dst: make_notclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:266,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 105
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 267
    functionName: negate_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 3
    functionsReached:
    - elog
    - foreach
    - make_andclause
    - make_orclause
    - linitial
    - makeBoolConst
    - get_negator
    - makeNode
    - lappend
    - lfirst
    - negate_clause
    - make_notclause
    - nodeTag
    - DatumGetBool
    linkageType: ''
    returnType: Node
    signature: 'Node *

      negate_clause(Node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:302,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:302,1
    - Dst: find_duplicate_ors
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - qual
    - is_check
    argTypes:
    - Expr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 312
    functionName: canonicalize_qual
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 3
    functionsReached:
    - Assert
    - IsA
    - find_duplicate_ors
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      canonicalize_qual(Expr *qual, bool is_check)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:330,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:332,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:333,1
    - Dst: pull_ands
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:334,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - andlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 339
    functionName: pull_ands
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 1
    functionsReached:
    - lappend
    - is_andclause
    - lfirst
    - list_concat
    - pull_ands
    linkageType: ''
    returnType: List
    signature: 'List *

      pull_ands(List *andlist)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:330,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:332,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:333,1
    - Dst: pull_ands
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:334,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 337
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 200
    functionsReached:
    - lappend
    - is_andclause
    - lfirst
    - list_concat
    - pull_ands
    linkageType: ''
    returnType: void
    signature: void foreach(arg, andlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:356,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:358,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:359,1
    - Dst: pull_ors
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:360,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - orlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 348
    functionDepth: 2
    functionLinenumber: 348
    functionLinenumberEnd: 365
    functionName: pull_ors
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 1
    functionsReached:
    - lappend
    - pull_ors
    - lfirst
    - list_concat
    - is_orclause
    linkageType: ''
    returnType: List
    signature: 'List *

      pull_ors(List *orlist)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:356,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:358,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:359,1
    - Dst: pull_ors
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:360,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 354
    functionDepth: 3
    functionLinenumber: 354
    functionLinenumberEnd: 363
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 200
    functionsReached:
    - lappend
    - pull_ors
    - lfirst
    - list_concat
    - is_orclause
    linkageType: ''
    returnType: void
    signature: void foreach(arg, orlist)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:408,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:414,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:416,1
    - Dst: find_duplicate_ors
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:418,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:421,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:428,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:431,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:436,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:443,1
    - Dst: pull_ors
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:447,1
    - Dst: process_duplicate_ors
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:450,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:452,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:458,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:460,1
    - Dst: find_duplicate_ors
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:462,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:465,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:472,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:480,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:483,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:487,1
    - Dst: pull_ands
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:491,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:495,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:498,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:499,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:502,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 44
    argCount: 2
    argNames:
    - qual
    - is_check
    argTypes:
    - Expr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 405
    functionDepth: 3
    functionLinenumber: 405
    functionLinenumberEnd: 506
    functionName: find_duplicate_ors
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 2
    functionsReached:
    - foreach
    - make_andclause
    - linitial
    - makeBoolConst
    - lappend
    - pull_ors
    - process_duplicate_ors
    - lfirst
    - is_andclause
    - is_orclause
    - list_length
    - pull_ands
    - IsA
    - find_duplicate_ors
    - DatumGetBool
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      find_duplicate_ors(Expr *qual, bool is_check)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:527,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:530,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:531,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:541,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:543,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:546,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:556,1
    - Dst: list_union
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:564,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:573,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:579,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:581,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:583,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:591,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:600,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:607,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:622,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:624,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:628,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:631,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:632,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:632,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:634,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:634,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:644,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:645,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:662,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:663,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:663,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:665,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:665,1
    - Dst: pull_ors
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:665,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:672,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:673,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:675,1
    - Dst: pull_ands
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:675,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 61
    argCount: 1
    argNames:
    - orlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 516
    functionDepth: 3
    functionLinenumber: 516
    functionLinenumberEnd: 676
    functionName: process_duplicate_ors
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 1
    functionsReached:
    - equal
    - list_difference
    - make_andclause
    - list_member
    - linitial
    - make_orclause
    - makeBoolConst
    - lappend
    - pull_ors
    - is_andclause
    - lfirst
    - list_length
    - pull_ands
    - list_union
    - list_make1
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      process_duplicate_ors(List *orlist)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:541,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:543,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:546,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:556,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 539
    functionDepth: 2
    functionLinenumber: 539
    functionLinenumberEnd: 559
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 201
    functionsReached:
    - list_length
    - list_make1
    - is_andclause
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(temp, orlist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:573,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:579,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:581,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:583,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:591,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:600,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 571
    functionDepth: 2
    functionLinenumber: 571
    functionLinenumberEnd: 601
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 201
    functionsReached:
    - list_member
    - lappend
    - is_andclause
    - lfirst
    - equal
    linkageType: ''
    returnType: void
    signature: void foreach(temp, reference)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:579,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:581,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:583,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:591,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 597
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 201
    functionsReached:
    - list_member
    - is_andclause
    - lfirst
    - equal
    linkageType: ''
    returnType: void
    signature: void foreach(temp2, orlist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:622,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:624,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:628,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:631,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:632,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:632,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:634,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:634,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:644,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepqual.c:645,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 620
    functionDepth: 2
    functionLinenumber: 620
    functionLinenumberEnd: 652
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepqual.c
    functionUses: 201
    functionsReached:
    - list_difference
    - make_andclause
    - list_member
    - linitial
    - lappend
    - is_andclause
    - lfirst
    - list_length
    linkageType: ''
    returnType: void
    signature: void foreach(temp, orlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: preprocess_aggrefs_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - clause
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: preprocess_aggrefs
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepagg.c
    functionUses: 1
    functionsReached:
    - preprocess_aggrefs_walker
    linkageType: ''
    returnType: void
    signature: void preprocess_aggrefs(PlannerInfo *root, Node *clause)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:142,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:149,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:150,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:151,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:152,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:154,1
    - Dst: get_aggregate_argtypes
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:168,1
    - Dst: resolve_aggregate_transtype
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:171,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:185,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:187,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:188,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:203,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:208,1
    - Dst: GetAggInitVal
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:214,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:216,1
    - Dst: find_compatible_agg
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:222,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:225,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:227,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:232,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:235,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:238,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:239,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:252,1
    - Dst: find_compatible_trans
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:260,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:269,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:285,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:286,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:298,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:310,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:311,1
    - Dst: agg_args_support_sendreceive
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:328,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 75
    argCount: 2
    argNames:
    - aggref
    - root
    argTypes:
    - Aggref*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 341
    functionName: preprocess_aggref
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepagg.c
    functionUses: 0
    functionsReached:
    - agg_args_support_sendreceive
    - get_typlenbyval
    - exprType
    - find_compatible_trans
    - get_aggregate_argtypes
    - SearchSysCache1
    - elog
    - Assert
    - HeapTupleIsValid
    - linitial
    - find_compatible_agg
    - ReleaseSysCache
    - list_nth_node
    - list_length
    - OidIsValid
    - ObjectIdGetDatum
    - exprTypmod
    - GetAggInitVal
    - lappend
    - GETSTRUCT
    - list_make1
    - makeNode
    - resolve_aggregate_transtype
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: void preprocess_aggref(Aggref *aggref, PlannerInfo *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:348,1
    - Dst: preprocess_aggref
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:361,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:361,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - root
    argTypes:
    - Node*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 363
    functionName: preprocess_aggrefs_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepagg.c
    functionUses: 1
    functionsReached:
    - Assert
    - preprocess_aggref
    - IsA
    - expression_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool preprocess_aggrefs_walker(Node *node, PlannerInfo *root)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:388,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:401,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:403,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:408,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:416,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:417,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:418,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:419,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:426,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:428,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:441,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 19
    argCount: 3
    argNames:
    - root
    - newagg
    - same_input_transnos
    argTypes:
    - PlannerInfo*
    - Aggref*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 446
    functionName: find_compatible_agg
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepagg.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - foreach
    - linitial_node
    - list_free
    - contain_volatile_functions
    - equal
    - lfirst_node
    linkageType: ''
    returnType: int
    signature: "int find_compatible_agg(PlannerInfo *root, Aggref *newagg,\n\t\t\t\t\tList
      **same_input_transnos)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:473,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:474,1
    - Dst: datumIsEqual
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:513,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 15
    argCount: 13
    argNames:
    - root
    - newagg
    - shareable
    - aggtransfn
    - aggtranstype
    - transtypeLen
    - transtypeByVal
    - aggcombinefn
    - aggserialfn
    - aggdeserialfn
    - initValue
    - initValueIsNull
    - transnos
    argTypes:
    - PlannerInfo*
    - Aggref*
    - bool
    - Oid
    - Oid
    - int
    - bool
    - Oid
    - Oid
    - Oid
    - Datum
    - bool
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 518
    functionName: find_compatible_trans
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepagg.c
    functionUses: 1
    functionsReached:
    - list_nth_node
    - datumIsEqual
    - lfirst_int
    linkageType: ''
    returnType: int
    signature: "int find_compatible_trans(PlannerInfo *root, Aggref *newagg, bool
      shareable,\n\t\t\t\t\t  Oid aggtransfn, Oid aggtranstype,\n\t\t\t\t\t  int transtypeLen,
      bool transtypeByVal,\n\t\t\t\t\t  Oid aggcombinefn,\n\t\t\t\t\t  Oid aggserialfn,
      Oid aggdeserialfn,\n\t\t\t\t\t  Datum initValue, bool initValueIsNull,\n\t\t\t\t\t
      \ List *transnos)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:473,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:474,1
    - Dst: datumIsEqual
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:513,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 516
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepagg.c
    functionUses: 202
    functionsReached:
    - list_nth_node
    - datumIsEqual
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, transnos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:528,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:529,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:530,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - textInitVal
    - transtype
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 534
    functionName: GetAggInitVal
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepagg.c
    functionUses: 1
    functionsReached:
    - pfree
    - getTypeInputInfo
    - TextDatumGetCString
    - OidInputFunctionCall
    linkageType: ''
    returnType: Datum
    signature: Datum GetAggInitVal(Datum textInitVal, Oid transtype)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:563,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:565,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:571,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:574,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:578,1
    - Dst: DO_AGGSPLIT_DESERIALIZE
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:580,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:581,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:582,1
    - Dst: DO_AGGSPLIT_SERIALIZE
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:584,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:585,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:586,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:593,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:598,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:611,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:643,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:646,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:667,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:669,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:670,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:676,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:677,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:678,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/prep/prepagg.c:689,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 3
    argNames:
    - root
    - aggsplit
    - costs
    argTypes:
    - PlannerInfo*
    - AggSplit
    - AggClauseCosts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 558
    functionDepth: 2
    functionLinenumber: 558
    functionLinenumberEnd: 695
    functionName: get_agg_clause_costs
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepagg.c
    functionUses: 2
    functionsReached:
    - DO_AGGSPLIT_COMBINE
    - foreach
    - linitial_node
    - DO_AGGSPLIT_DESERIALIZE
    - cost_qual_eval_node
    - DO_AGGSPLIT_SKIPFINAL
    - OidIsValid
    - add_function_cost
    - MAXALIGN
    - get_typavgwidth
    - DO_AGGSPLIT_SERIALIZE
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void get_agg_clause_costs(PlannerInfo *root, AggSplit aggsplit, AggClauseCosts
      *costs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:220,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:237,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:247,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:256,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:257,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:272,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:274,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:277,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:277,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:278,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:284,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:286,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:290,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:291,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:296,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:308,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:320,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:321,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:322,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:340,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:341,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:342,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:344,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:347,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:348,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:349,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:352,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:353,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:354,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:358,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:359,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:360,1
    - Dst: makeWholeRowVar
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:384,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:384,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:386,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:389,1
    - Dst: make_and_qual
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:397,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 78
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 401
    functionName: transform_MERGE_to_join
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - elog
    - make_and_qual
    - IsA
    - Assert
    - linitial
    - lappend
    - rt_fetch
    - makeNode
    - foreach_node
    - makeAlias
    - list_length
    - makeWholeRowVar
    - makeFromExpr
    - list_make1
    - nodeTag
    - add_nulling_relids
    - bms_make_singleton
    linkageType: ''
    returnType: void
    signature: void transform_MERGE_to_join(Query *parse)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:427,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:431,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:442,1
    - Dst: get_relation_notnullatts
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:461,1
    - Dst: expand_virtual_generated_columns
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:468,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:472,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 420
    functionDepth: 3
    functionLinenumber: 420
    functionLinenumberEnd: 476
    functionName: preprocess_relation_rtes
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - rt_fetch
    - table_open
    - get_relation_notnullatts
    - list_length
    - table_close
    - expand_virtual_generated_columns
    linkageType: ''
    returnType: Query
    signature: 'Query *

      preprocess_relation_rtes(PlannerInfo *root)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:497,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:499,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:508,1
    - Dst: build_generation_expression
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:515,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:516,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:518,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:519,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:525,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:532,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:533,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:537,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:538,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:559,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:559,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:588,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 5
    argNames:
    - root
    - parse
    - rte
    - rt_index
    - relation
    argTypes:
    - PlannerInfo*
    - Query*
    - RangeTblEntry*
    - int
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 595
    functionName: expand_virtual_generated_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - ChangeVarNodes
    - Assert
    - RelationGetDescr
    - makeTargetEntry
    - lappend
    - palloc0
    - pullup_replace_vars
    - build_generation_expression
    - list_length
    - TupleDescAttr
    - makeVar
    linkageType: ''
    returnType: Query
    signature: "Query *\nexpand_virtual_generated_columns(PlannerInfo *root, Query
      *parse,\n\t\t\t\t\t\t\t\t RangeTblEntry *rte, int rt_index,\n\t\t\t\t\t\t\t\t
      Relation relation)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:627,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:629,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:632,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:633,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:636,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 639
    functionName: replace_empty_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - lappend
    - makeNode
    - makeAlias
    - list_length
    - list_make1
    linkageType: ''
    returnType: void
    signature: void replace_empty_jointree(Query *parse)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:676,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:684,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:687,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:687,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 688
    functionName: pull_up_sublinks
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - list_make1
    - pull_up_sublinks_jointree_recurse
    - IsA
    - makeFromExpr
    linkageType: ''
    returnType: void
    signature: void pull_up_sublinks(PlannerInfo *root)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:701,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:707,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:711,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:714,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:724,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:729,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:730,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:732,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:733,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:736,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:740,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:756,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:767,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:768,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:772,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:774,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:792,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:794,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:799,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:808,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:814,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:827,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:829,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:833,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:834,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 3
    argNames:
    - root
    - jtnode
    - relids
    argTypes:
    - PlannerInfo*
    - Node*
    - Relids*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 696
    functionDepth: 1
    functionLinenumber: 696
    functionLinenumberEnd: 836
    functionName: pull_up_sublinks_jointree_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - pull_up_sublinks_jointree_recurse
    - foreach
    - memcpy
    - lappend
    - check_stack_depth
    - bms_join
    - pull_up_sublinks_qual_recurse
    - lfirst
    - palloc_object
    - makeFromExpr
    - IsA
    - bms_add_member
    - nodeTag
    - bms_union
    - bms_make_singleton
    linkageType: ''
    returnType: Node
    signature: "Node *\npull_up_sublinks_jointree_recurse(PlannerInfo *root, Node
      *jtnode,\n\t\t\t\t\t\t\t\t  Relids *relids)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:860,1
    - Dst: convert_VALUES_to_ANY
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:871,1
    - Dst: convert_ANY_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:882,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:889,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:898,1
    - Dst: convert_ANY_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:908,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:915,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:924,1
    - Dst: convert_EXISTS_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:936,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:943,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:952,1
    - Dst: convert_EXISTS_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:962,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:969,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:978,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:991,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:994,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:998,1
    - Dst: convert_ANY_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1002,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1009,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1019,1
    - Dst: convert_ANY_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1028,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1035,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1045,1
    - Dst: convert_EXISTS_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1056,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1063,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1073,1
    - Dst: convert_EXISTS_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1082,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1089,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1099,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1112,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1118,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1120,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1123,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1130,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1135,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1136,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1138,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 91
    argCount: 6
    argNames:
    - root
    - node
    - jtlink1
    - available_rels1
    - jtlink2
    - available_rels2
    argTypes:
    - PlannerInfo*
    - Node*
    - Node**
    - Relids
    - Node**
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 853
    functionDepth: 3
    functionLinenumber: 853
    functionLinenumberEnd: 1142
    functionName: pull_up_sublinks_qual_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - pull_up_sublinks_jointree_recurse
    - convert_ANY_sublink_to_join
    - foreach
    - make_andclause
    - IsA
    - linitial
    - lappend
    - pull_up_sublinks_qual_recurse
    - is_notclause
    - is_andclause
    - lfirst
    - list_length
    - convert_VALUES_to_ANY
    - convert_EXISTS_sublink_to_join
    - get_notclausearg
    linkageType: ''
    returnType: Node
    signature: "Node *\npull_up_sublinks_qual_recurse(PlannerInfo *root, Node *node,\n\t\t\t\t\t\t\t
      \ Node **jtlink1, Relids available_rels1,\n\t\t\t\t\t\t\t  Node **jtlink2, Relids
      available_rels2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1177,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1179,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1187,1
    - Dst: inline_function_in_from
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1172
    functionDepth: 4
    functionLinenumber: 1172
    functionLinenumberEnd: 1209
    functionName: preprocess_function_rtes
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - eval_const_expressions
    - inline_function_in_from
    - lfirst
    - foreach
    linkageType: ''
    returnType: void
    signature: void preprocess_function_rtes(PlannerInfo *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1223,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1223,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1226,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1229,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1219
    functionDepth: 1
    functionLinenumber: 1219
    functionLinenumberEnd: 1230
    functionName: pull_up_subqueries
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - pull_up_subqueries_recurse
    linkageType: ''
    returnType: void
    signature: void pull_up_subqueries(PlannerInfo *root)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1269,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1271,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1273,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1274,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1277,1
    - Dst: is_simple_subquery
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1287,1
    - Dst: is_safe_append_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1289,1
    - Dst: pull_up_simple_subquery
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1290,1
    - Dst: is_simple_union_all
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1304,1
    - Dst: pull_up_simple_union_all
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1305,1
    - Dst: is_simple_values
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1316,1
    - Dst: pull_up_simple_values
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1317,1
    - Dst: pull_up_constant_function
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1323,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1333,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1335,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1337,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1337,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1337,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1346,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1351,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1354,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1361,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1364,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1369,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1372,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1377,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1380,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1385,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1391,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1392,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 48
    argCount: 4
    argNames:
    - root
    - jtnode
    - lowest_outer_join
    - containing_appendrel
    argTypes:
    - PlannerInfo*
    - Node*
    - JoinExpr*
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1263
    functionDepth: 1
    functionLinenumber: 1263
    functionLinenumberEnd: 1394
    functionName: pull_up_subqueries_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - is_simple_union_all
    - foreach
    - is_safe_append_member
    - Assert
    - rt_fetch
    - check_stack_depth
    - is_simple_values
    - CHECK_FOR_INTERRUPTS
    - is_simple_subquery
    - pull_up_simple_union_all
    - pull_up_constant_function
    - lfirst
    - pull_up_simple_subquery
    - pull_up_subqueries_recurse
    - IsA
    - nodeTag
    - pull_up_simple_values
    linkageType: ''
    returnType: Node
    signature: "Node *\npull_up_subqueries_recurse(PlannerInfo *root, Node *jtnode,\n\t\t\t\t\t\t
      \  JoinExpr *lowest_outer_join,\n\t\t\t\t\t\t   AppendRelInfo *containing_appendrel)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1426,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1435,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1457,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1474,1
    - Dst: preprocess_relation_rtes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1484,1
    - Dst: replace_empty_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1490,1
    - Dst: pull_up_sublinks
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1497,1
    - Dst: preprocess_function_rtes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1503,1
    - Dst: pull_up_subqueries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1515,1
    - Dst: is_simple_subquery
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1525,1
    - Dst: is_safe_append_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1526,1
    - Dst: flatten_join_alias_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1553,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1561,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1562,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1563,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1569,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1570,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1585,1
    - Dst: get_nullingrels
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1587,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1599,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1599,1
    - Dst: perform_pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1619,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1631,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1633,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1656,1
    - Dst: CombineRangeTables
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1667,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1674,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1691,1
    - Dst: substitute_phv_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1694,1
    - Dst: fix_append_rel_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1695,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1709,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1711,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1745,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1745,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1746,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1748,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1749,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 119
    argCount: 5
    argNames:
    - root
    - jtnode
    - rte
    - lowest_outer_join
    - containing_appendrel
    argTypes:
    - PlannerInfo*
    - Node*
    - RangeTblEntry*
    - JoinExpr*
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1408
    functionDepth: 5
    functionLinenumber: 1408
    functionLinenumberEnd: 1752
    functionName: pull_up_simple_subquery
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - copyObject
    - list_concat
    - fix_append_rel_relids
    - CombineRangeTables
    - foreach
    - is_safe_append_member
    - Assert
    - pull_up_sublinks
    - linitial
    - perform_pullup_replace_vars
    - is_simple_subquery
    - preprocess_function_rtes
    - IncrementVarSublevelsUp
    - list_length
    - OffsetVarNodes
    - replace_empty_jointree
    - pull_up_subqueries
    - get_relids_in_jointree
    - get_nullingrels
    - lfirst
    - memset
    - substitute_phv_relids
    - flatten_join_alias_vars
    - palloc0
    - makeNode
    - preprocess_relation_rtes
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\npull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry
      *rte,\n\t\t\t\t\t\tJoinExpr *lowest_outer_join,\n\t\t\t\t\t\tAppendRelInfo *containing_appendrel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1768,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1776,1
    - Dst: IncrementVarSublevelsUp_rtable
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1783,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1797,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1799,1
    - Dst: CombineRangeTables
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1815,1
    - Dst: pull_up_union_leaf_queries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - root
    - jtnode
    - rte
    argTypes:
    - PlannerInfo*
    - Node*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1825
      start: 1763
    functionDepth: 1
    functionLinenumber: 1763
    functionLinenumberEnd: 1825
    functionName: pull_up_simple_union_all
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - copyObject
    - CombineRangeTables
    - Assert
    - pull_up_union_leaf_queries
    - lfirst
    - list_length
    - IncrementVarSublevelsUp_rtable
    linkageType: ''
    returnType: Node
    signature: 'Node *

      pull_up_simple_union_all(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1797,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1795
    functionDepth: 1
    functionLinenumber: 1795
    functionLinenumberEnd: 1801
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 208
    functionsReached:
    - Assert
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(rt, rtable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1849,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1863,1
    - Dst: make_setop_translation_list
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1868,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1870,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1885,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1887,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1890,1
    - Dst: pull_up_union_leaf_queries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1895,1
    - Dst: pull_up_union_leaf_queries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1897,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1902,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1903,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 5
    argNames:
    - setOp
    - root
    - parentRTindex
    - setOpQuery
    - childRToffset
    argTypes:
    - Node*
    - PlannerInfo*
    - int
    - Query*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1845
    functionDepth: 2
    functionLinenumber: 1845
    functionLinenumberEnd: 1905
    functionName: pull_up_union_leaf_queries
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - lappend
    - makeNode
    - pull_up_union_leaf_queries
    - make_setop_translation_list
    - IsA
    - nodeTag
    - pull_up_subqueries_recurse
    linkageType: ''
    returnType: void
    signature: "void pull_up_union_leaf_queries(Node *setOp, PlannerInfo *root, int
      parentRTindex,\n\t\t\t\t\t\t   Query *setOpQuery, int childRToffset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1925,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1927,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1929,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1931,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1936,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1936,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - query
    - newvarno
    - appinfo
    argTypes:
    - Query*
    - int
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1941
      start: 1915
    functionDepth: 1
    functionLinenumber: 1915
    functionLinenumberEnd: 1941
    functionName: make_setop_translation_list
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - foreach
    - makeVarFromTargetEntry
    - palloc0
    - lappend
    - lfirst
    - list_length
    linkageType: ''
    returnType: void
    signature: "void make_setop_translation_list(Query *query, int newvarno,\n\t\t\t\t\t\t\tAppendRelInfo
      *appinfo)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1960,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1962,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2024,1
    - Dst: jointree_contains_lateral_outer_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2033,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2056,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2060,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2073,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 27
    argCount: 4
    argNames:
    - root
    - subquery
    - rte
    - lowest_outer_join
    argTypes:
    - PlannerInfo*
    - Query*
    - RangeTblEntry*
    - JoinExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 1953
    functionDepth: 2
    functionLinenumber: 1953
    functionLinenumberEnd: 2077
    functionName: is_simple_subquery
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - get_relids_in_jointree
    - pull_varnos_of_level
    - contain_volatile_functions
    - jointree_contains_lateral_outer_refs
    - IsA
    - bms_is_subset
    linkageType: ''
    returnType: bool
    signature: "bool is_simple_subquery(PlannerInfo *root, Query *subquery, RangeTblEntry
      *rte,\n\t\t\t\t   JoinExpr *lowest_outer_join)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2104,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2105,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2105,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2111,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2117,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2117,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2127,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2128,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2128,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2144,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2144,1
    - Dst: perform_pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2153,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2167,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2167,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2170,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2172,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 3
    argNames:
    - root
    - jtnode
    - rte
    argTypes:
    - PlannerInfo*
    - Node*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2181
      start: 2093
    functionDepth: 2
    functionLinenumber: 2093
    functionLinenumberEnd: 2181
    functionName: pull_up_simple_values
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - copyObject
    - list_length
    - Assert
    - linitial
    - makeTargetEntry
    - lappend
    - palloc0
    - perform_pullup_replace_vars
    - makeNode
    - lfirst
    - makeAlias
    - contain_vars_of_level
    - list_make1
    linkageType: ''
    returnType: Node
    signature: 'Node *

      pull_up_simple_values(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2127,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2128,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2133
      start: 2125
    functionDepth: 1
    functionLinenumber: 2125
    functionLinenumberEnd: 2133
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 209
    functionsReached:
    - makeTargetEntry
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, values_list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2193,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2200,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2214,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2215,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2224,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - root
    - rte
    argTypes:
    - PlannerInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2229
      start: 2190
    functionDepth: 2
    functionLinenumber: 2190
    functionLinenumberEnd: 2229
    functionName: is_simple_values
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - Assert
    - linitial
    - contain_volatile_functions
    - list_length
    - expression_returns_set
    linkageType: ''
    returnType: bool
    signature: bool is_simple_values(PlannerInfo *root, RangeTblEntry *rte)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2266,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2268,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2269,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2284,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2292,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2292,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2312,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2312,1
    - Dst: perform_pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2328,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - root
    - jtnode
    - rte
    - containing_appendrel
    argTypes:
    - PlannerInfo*
    - Node*
    - RangeTblEntry*
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2351
      start: 2249
    functionDepth: 1
    functionLinenumber: 2249
    functionLinenumberEnd: 2351
    functionName: pull_up_constant_function
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - IsA
    - linitial_node
    - makeTargetEntry
    - palloc0
    - perform_pullup_replace_vars
    - get_expr_result_type
    - list_length
    - list_make1
    linkageType: ''
    returnType: Node
    signature: "Node *\npull_up_constant_function(PlannerInfo *root, Node *jtnode,\n\t\t\t\t\t\t
      \ RangeTblEntry *rte,\n\t\t\t\t\t\t  AppendRelInfo *containing_appendrel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2367,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2369,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2372,1
    - Dst: is_simple_union_all_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2385,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 9
    argCount: 1
    argNames:
    - subquery
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2387
      start: 2361
    functionDepth: 1
    functionLinenumber: 2361
    functionLinenumberEnd: 2387
    functionName: is_simple_union_all
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - elog
    - castNode
    - IsA
    - is_simple_union_all_recurse
    linkageType: ''
    returnType: bool
    signature: bool is_simple_union_all(Query *subquery)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2393,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2395,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2401,1
    - Dst: tlist_same_datatypes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2405,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2407,1
    - Dst: is_simple_union_all_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2416,1
    - Dst: is_simple_union_all_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2417,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2421,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2422,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - setOp
    - setOpQuery
    - colTypes
    argTypes:
    - Node*
    - Query*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2425
      start: 2389
    functionDepth: 3
    functionLinenumber: 2389
    functionLinenumberEnd: 2425
    functionName: is_simple_union_all_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - Assert
    - tlist_same_datatypes
    - rt_fetch
    - check_stack_depth
    - is_simple_union_all_recurse
    - IsA
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: bool is_simple_union_all_recurse(Node *setOp, Query *setOpQuery, List
      *colTypes)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2451,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2451,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2456,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2460,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2462,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2464,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - subquery
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2432
    functionDepth: 1
    functionLinenumber: 2432
    functionLinenumberEnd: 2468
    functionName: is_safe_append_member
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - Assert
    - linitial
    - IsA
    - list_length
    linkageType: ''
    returnType: bool
    signature: bool is_safe_append_member(Query *subquery)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2487,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2489,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2495,1
    - Dst: jointree_contains_lateral_outer_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2497,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2498,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2506,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2506,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2510,1
    - Dst: jointree_contains_lateral_outer_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2525,1
    - Dst: jointree_contains_lateral_outer_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2530,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2538,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2538,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2543,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2544,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - root
    - jtnode
    - restricted
    - safe_upper_varnos
    argTypes:
    - PlannerInfo*
    - Node*
    - bool
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2546
      start: 2480
    functionDepth: 2
    functionLinenumber: 2480
    functionLinenumberEnd: 2546
    functionName: jointree_contains_lateral_outer_refs
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - pull_varnos_of_level
    - lfirst
    - jointree_contains_lateral_outer_refs
    - IsA
    - bms_is_subset
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: "bool jointree_contains_lateral_outer_refs(PlannerInfo *root, Node
      *jtnode,\n\t\t\t\t\t\t\t\t\t bool restricted,\n\t\t\t\t\t\t\t\t\t Relids safe_upper_varnos)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2576,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2592,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2594,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2599,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2602,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2612,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2614,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2616,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2618,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2621,1
    - Dst: replace_vars_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2624,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2625,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2630,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2632,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2635,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2642,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2644,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2648,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2652,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - root
    - rvcontext
    - containing_appendrel
    argTypes:
    - PlannerInfo*
    - pullup_replace_vars_context*
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2555
    functionDepth: 1
    functionLinenumber: 2555
    functionLinenumberEnd: 2655
    functionName: perform_pullup_replace_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 3
    functionsReached:
    - foreach
    - Assert
    - replace_vars_in_jointree
    - pullup_replace_vars
    - lfirst
    linkageType: ''
    returnType: void
    signature: "void perform_pullup_replace_vars(PlannerInfo *root,\n\t\t\t\t\t\t\tpullup_replace_vars_context
      *rvcontext,\n\t\t\t\t\t\t\tAppendRelInfo *containing_appendrel)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2668,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2681,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2683,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2690,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2692,1
    - Dst: pullup_replace_vars_subquery
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2697,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2702,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2707,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2721,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2725,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2731,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2736,1
    - Dst: replace_vars_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2737,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2737,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2738,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2740,1
    - Dst: replace_vars_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2745,1
    - Dst: replace_vars_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2746,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2758,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2763,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2764,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 2
    argNames:
    - jtnode
    - context
    argTypes:
    - Node*
    - pullup_replace_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2765
      start: 2662
    functionDepth: 1
    functionLinenumber: 2662
    functionLinenumberEnd: 2765
    functionName: replace_vars_in_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - Assert
    - rt_fetch
    - pullup_replace_vars
    - pullup_replace_vars_subquery
    - replace_vars_in_jointree
    - lfirst
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: "void replace_vars_in_jointree(Node *jtnode,\n\t\t\t\t\t\t pullup_replace_vars_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replace_rte_variables
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - expr
    - context
    argTypes:
    - Node*
    - pullup_replace_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2781
      start: 2773
    functionDepth: 1
    functionLinenumber: 2773
    functionLinenumberEnd: 2781
    functionName: pullup_replace_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 6
    functionsReached:
    - replace_rte_variables
    linkageType: ''
    returnType: Node
    signature: 'Node *

      pullup_replace_vars(Node *expr, pullup_replace_vars_context *context)'
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2794,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2820,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2824,1
    - Dst: ReplaceVarFromTargetList
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2832,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2861,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2872,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2877,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2878,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2883,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2889,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2899,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2900,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2954,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2961,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2962,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2970,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2972,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2973,1
    - Dst: contain_nonstrict_functions
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2984,1
    - Dst: make_placeholder_expr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2999,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3001,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3008,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3009,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3017,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3021,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3022,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3025,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3029,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3030,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3064,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3065,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3068,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3072,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3073,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3075,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3076,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3077,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3083,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3087,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3087,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3088,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3094,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 93
    argCount: 2
    argNames:
    - var
    - context
    argTypes:
    - Var*
    - replace_rte_variables_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3097
      start: 2783
    functionDepth: 2
    functionLinenumber: 2783
    functionLinenumberEnd: 3097
    functionName: pullup_replace_vars_callback
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 0
    functionsReached:
    - pull_varnos
    - copyObject
    - bms_add_members
    - bms_intersect
    - bms_is_subset
    - Assert
    - bms_is_member
    - IncrementVarSublevelsUp
    - contain_vars_of_level
    - bms_next_member
    - list_length
    - IsA
    - make_placeholder_expr
    - add_nulling_relids
    - bms_make_singleton
    - contain_nonstrict_functions
    - bms_del_members
    - ReplaceVarFromTargetList
    - bms_overlap
    - bms_is_empty
    linkageType: ''
    returnType: Node
    signature: "Node *\npullup_replace_vars_callback(const Var *var,\n\t\t\t\t\t\t\t
      replace_rte_variables_context *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3110,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3110,1
    - Dst: replace_rte_variables
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - query
    - context
    argTypes:
    - Query*
    - pullup_replace_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3116
      start: 3106
    functionDepth: 1
    functionLinenumber: 3106
    functionLinenumberEnd: 3116
    functionName: pullup_replace_vars_subquery
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - replace_rte_variables
    linkageType: ''
    returnType: Query
    signature: "Query *\npullup_replace_vars_subquery(Query *query,\n\t\t\t\t\t\t\t
      pullup_replace_vars_context *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3146,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3147,1
    - Dst: is_simple_union_all_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3157,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3167,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3167,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3170,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3179,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3180,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3181,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3195,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3196,1
    - Dst: pull_up_union_leaf_queries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3210,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3211
      start: 3133
    functionDepth: 4
    functionLinenumber: 3133
    functionLinenumberEnd: 3211
    functionName: flatten_simple_union_all
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - copyObject
    - Assert
    - castNode
    - rt_fetch
    - lappend
    - is_simple_union_all_recurse
    - makeNode
    - pull_up_union_leaf_queries
    - list_length
    - list_make1
    - IsA
    linkageType: ''
    returnType: void
    signature: void flatten_simple_union_all(PlannerInfo *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reduce_outer_joins_pass1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3272,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3276,1
    - Dst: reduce_outer_joins_pass2
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3281,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3291,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3294,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3299,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3308,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3310,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3311,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3314,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3318,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3322
      start: 3255
    functionDepth: 1
    functionLinenumber: 3255
    functionLinenumberEnd: 3322
    functionName: reduce_outer_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - remove_nulling_relids
    - bms_is_empty
    - lfirst
    - reduce_outer_joins_pass1
    - reduce_outer_joins_pass2
    - bms_make_singleton
    linkageType: ''
    returnType: void
    signature: void reduce_outer_joins(PlannerInfo *root)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3334,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3342,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3346,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3348,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3353,1
    - Dst: reduce_outer_joins_pass1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3357,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3357,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3358,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3361,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3363,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3366,1
    - Dst: reduce_outer_joins_pass1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3373,1
    - Dst: reduce_outer_joins_pass1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3374,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3377,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3380,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3390,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3397,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3403,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3409,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3413,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3419,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3420,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3422
      start: 3329
    functionDepth: 1
    functionLinenumber: 3329
    functionLinenumberEnd: 3422
    functionName: reduce_outer_joins_pass1
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - lappend
    - bms_add_members
    - list_make2
    - lfirst
    - palloc_object
    - reduce_outer_joins_pass1
    - IsA
    - nodeTag
    - bms_union
    - bms_make_singleton
    linkageType: ''
    returnType: reduce_outer_joins_pass1_state
    signature: 'reduce_outer_joins_pass1_state *

      reduce_outer_joins_pass1(Node *jtnode)'
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3453,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3454,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3455,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3456,1
    - Dst: find_nonnullable_rels
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3465,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3466,1
    - Dst: find_forced_null_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3468,1
    - Dst: mbms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3472,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3472,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3472,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3473,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3475,1
    - Dst: reduce_outer_joins_pass2
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3478,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3478,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3483,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3486,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3491,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3492,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3500,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3504,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3508,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3510,1
    - Dst: report_reduced_full_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3516,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3522,1
    - Dst: report_reduced_full_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3526,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3542,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3562,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3563,1
    - Dst: find_nonnullable_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3583,1
    - Dst: mbms_overlap_sets
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3593,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3594,1
    - Dst: has_notnull_forced_var
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3595,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3607,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3608,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3611,1
    - Dst: find_nonnullable_rels
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3647,1
    - Dst: find_forced_null_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3648,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3652,1
    - Dst: mbms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3654,1
    - Dst: reduce_outer_joins_pass2
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3685,1
    - Dst: reduce_outer_joins_pass2
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3705,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3710,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3714,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3715,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 112
    argCount: 6
    argNames:
    - jtnode
    - state1
    - state2
    - root
    - nonnullable_rels
    - forced_null_vars
    argTypes:
    - Node*
    - reduce_outer_joins_pass1_state*
    - reduce_outer_joins_pass2_state*
    - PlannerInfo*
    - Relids
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3716
      start: 3440
    functionDepth: 2
    functionLinenumber: 3440
    functionLinenumberEnd: 3716
    functionName: reduce_outer_joins_pass2
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - find_nonnullable_rels
    - bms_free
    - find_nonnullable_vars
    - bms_add_members
    - reduce_outer_joins_pass2
    - bms_add_member
    - nodeTag
    - elog
    - Assert
    - linitial
    - has_notnull_forced_var
    - list_length
    - mbms_add_members
    - find_forced_null_vars
    - rt_fetch
    - lfirst
    - report_reduced_full_join
    - mbms_overlap_sets
    - lsecond
    - bms_overlap
    - IsA
    - forboth
    linkageType: ''
    returnType: void
    signature: "void reduce_outer_joins_pass2(Node *jtnode,\n\t\t\t\t\t\t reduce_outer_joins_pass1_state
      *state1,\n\t\t\t\t\t\t reduce_outer_joins_pass2_state *state2,\n\t\t\t\t\t\t
      PlannerInfo *root,\n\t\t\t\t\t\t Relids nonnullable_rels,\n\t\t\t\t\t\t List
      *forced_null_vars)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3725,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - state2
    - rtindex
    - relids
    argTypes:
    - reduce_outer_joins_pass2_state*
    - int
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3729
      start: 3719
    functionDepth: 1
    functionLinenumber: 3719
    functionLinenumberEnd: 3729
    functionName: report_reduced_full_join
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - lappend
    - palloc_object
    linkageType: ''
    returnType: void
    signature: "void report_reduced_full_join(reduce_outer_joins_pass2_state *state2,\n\t\t\t\t\t\t
      int rtindex, Relids relids)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3758,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3762,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3770,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3774,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3777,1
    - Dst: bms_offset_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3787,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3790,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3795,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3806,1
    - Dst: find_relation_notnullatts
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3811,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3817,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3819,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3823,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 3
    argNames:
    - root
    - forced_null_vars
    - right_state
    argTypes:
    - PlannerInfo*
    - List*
    - reduce_outer_joins_pass1_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3827
      start: 3742
    functionDepth: 2
    functionLinenumber: 3742
    functionLinenumberEnd: 3827
    functionName: has_notnull_forced_var
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - bms_offset_members
    - Assert
    - bms_is_member
    - rt_fetch
    - bms_free
    - bms_overlap
    - bms_next_member
    - find_relation_notnullatts
    - bms_is_empty
    linkageType: ''
    returnType: bool
    signature: "bool has_notnull_forced_var(PlannerInfo *root, List *forced_null_vars,\n\t\t\t\t\t
      \  reduce_outer_joins_pass1_state *right_state)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3758,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3762,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3770,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3774,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3777,1
    - Dst: bms_offset_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3787,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3790,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3795,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3806,1
    - Dst: find_relation_notnullatts
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3811,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3817,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3819,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3823,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3824
      start: 3748
    functionDepth: 2
    functionLinenumber: 3748
    functionLinenumberEnd: 3824
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 14
    functionsReached:
    - bms_offset_members
    - Assert
    - bms_is_member
    - rt_fetch
    - bms_free
    - bms_overlap
    - bms_next_member
    - find_relation_notnullatts
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: void foreach_node(Bitmapset, attrs, forced_null_vars)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3893,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3893,1
    - Dst: remove_useless_results_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3901,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3901,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3912,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3915,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3920,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3936,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3938,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3940,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3941,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3943
      start: 3886
    functionDepth: 1
    functionLinenumber: 3886
    functionLinenumberEnd: 3943
    functionName: remove_useless_result_rtes
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - remove_useless_results_recurse
    - foreach_delete_current
    - foreach
    - Assert
    - remove_nulling_relids
    - bms_is_empty
    - rt_fetch
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void remove_useless_result_rtes(PlannerInfo *root)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3964,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3965,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3969,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3984,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3986,1
    - Dst: remove_useless_results_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3990,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3994,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4002,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4003,1
    - Dst: find_dependent_phvs_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4004,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4006,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4007,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4020,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4021,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4038,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4050,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4050,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4051,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4052,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4055,1
    - Dst: remove_useless_results_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4072,1
    - Dst: remove_useless_results_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4078,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4105,1
    - Dst: find_dependent_phvs_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4106,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4108,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4111,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4111,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4117,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4117,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4118,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4122,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4124,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4127,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4127,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4133,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4133,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4134,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4159,1
    - Dst: find_dependent_phvs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4161,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4163,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4164,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4192,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4193,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4196,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4196,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4202,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4202,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4203,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4214,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4220,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4221,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 76
    argCount: 4
    argNames:
    - root
    - jtnode
    - parent_quals
    - dropped_outer_joins
    argTypes:
    - PlannerInfo*
    - Node*
    - Node**
    - Relids*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4223
      start: 3959
    functionDepth: 1
    functionLinenumber: 3959
    functionLinenumberEnd: 4223
    functionName: remove_useless_results_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - remove_useless_results_recurse
    - foreach_delete_current
    - list_concat
    - bms_add_member
    - get_result_relid
    - nodeTag
    - elog
    - foreach
    - remove_result_refs
    - Assert
    - linitial
    - bms_next_member
    - list_length
    - find_dependent_phvs_in_jointree
    - lfirst
    - list_make1
    - castNode
    - makeFromExpr
    - IsA
    - find_dependent_phvs
    linkageType: ''
    returnType: Node
    signature: "Node *\nremove_useless_results_recurse(PlannerInfo *root, Node *jtnode,\n\t\t\t\t\t\t\t
      \  Node **parent_quals,\n\t\t\t\t\t\t\t   Relids *dropped_outer_joins)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4235,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - root
    - jtnode
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4241
      start: 4230
    functionDepth: 1
    functionLinenumber: 4230
    functionLinenumberEnd: 4241
    functionName: get_result_relid
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - rt_fetch
    - IsA
    linkageType: ''
    returnType: int
    signature: int get_result_relid(PlannerInfo *root, Node *jtnode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4270,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4270,1
    - Dst: substitute_phv_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4271,1
    - Dst: fix_append_rel_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - root
    - varno
    - newjtloc
    argTypes:
    - PlannerInfo*
    - int
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4279
      start: 4260
    functionDepth: 1
    functionLinenumber: 4260
    functionLinenumberEnd: 4279
    functionName: remove_result_refs
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - fix_append_rel_relids
    - get_relids_in_jointree
    - Assert
    - substitute_phv_relids
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: void remove_result_refs(PlannerInfo *root, int varno, Node *newjtloc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4305,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4310,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4314,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4327,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4327,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4328,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4329,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4329,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4331,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - find_dependent_phvs_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4332
      start: 4299
    functionDepth: 1
    functionLinenumber: 4299
    functionLinenumberEnd: 4332
    functionName: find_dependent_phvs_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 0
    functionsReached:
    - Assert
    - query_tree_walker
    - bms_equal
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: "bool find_dependent_phvs_walker(Node *node,\n\t\t\t\t\t\t   find_dependent_phvs_context
      *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4343,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4346,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - root
    - varno
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4354
      start: 4334
    functionDepth: 1
    functionLinenumber: 4334
    functionLinenumberEnd: 4354
    functionName: find_dependent_phvs
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - query_tree_walker
    - bms_make_singleton
    linkageType: ''
    returnType: bool
    signature: bool find_dependent_phvs(PlannerInfo *root, int varno)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4367,1
    - Dst: find_dependent_phvs_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4373,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4383,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4385,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4387,1
    - Dst: range_table_entry_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4390,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - root
    - node
    - varno
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4395
      start: 4356
    functionDepth: 2
    functionLinenumber: 4356
    functionLinenumberEnd: 4395
    functionName: find_dependent_phvs_in_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - get_relids_in_jointree
    - find_dependent_phvs_walker
    - rt_fetch
    - range_table_entry_walker
    - bms_next_member
    - bms_make_singleton
    linkageType: ''
    returnType: bool
    signature: bool find_dependent_phvs_in_jointree(PlannerInfo *root, Node *node,
      int varno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4423,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4428,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4430,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4435,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4435,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4439,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4452,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4453,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4454,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4455,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4455,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4457,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - substitute_phv_relids_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4458
      start: 4417
    functionDepth: 1
    functionLinenumber: 4417
    functionLinenumberEnd: 4458
    functionName: substitute_phv_relids_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 0
    functionsReached:
    - bms_del_member
    - Assert
    - bms_is_member
    - bms_is_empty
    - query_tree_walker
    - expression_tree_walker
    - IsA
    - bms_union
    linkageType: ''
    returnType: bool
    signature: "bool substitute_phv_relids_walker(Node *node,\n\t\t\t\t\t\t\t substitute_phv_relids_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - node
    - varno
    - subrelids
    argTypes:
    - Node*
    - int
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4476
      start: 4460
    functionDepth: 1
    functionLinenumber: 4460
    functionLinenumberEnd: 4476
    functionName: substitute_phv_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: void
    signature: void substitute_phv_relids(Node *node, int varno, Relids subrelids)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4500,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4502,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4505,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4510,1
    - Dst: substitute_phv_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4516,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - root
    - varno
    - subrelids
    argTypes:
    - PlannerInfo*
    - int
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4519
      start: 4488
    functionDepth: 2
    functionLinenumber: 4488
    functionLinenumberEnd: 4519
    functionName: fix_append_rel_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - foreach
    - Assert
    - lfirst
    - bms_singleton_member
    - substitute_phv_relids
    linkageType: ''
    returnType: void
    signature: void fix_append_rel_relids(PlannerInfo *root, int varno, Relids subrelids)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4540,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4544,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4546,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4551,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4553,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4554,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4554,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4559,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4563,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4566,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4567,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4575,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4580,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4585,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4586,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - jtnode
    - include_outer_joins
    - include_inner_joins
    argTypes:
    - Node*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4588
      start: 4532
    functionDepth: 1
    functionLinenumber: 4532
    functionLinenumberEnd: 4588
    functionName: get_relids_in_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 7
    functionsReached:
    - elog
    - foreach
    - get_relids_in_jointree
    - bms_join
    - lfirst
    - IsA
    - bms_add_member
    - nodeTag
    - bms_make_singleton
    linkageType: ''
    returnType: Relids
    signature: "Relids get_relids_in_jointree(Node *jtnode, bool include_outer_joins,\n\t\t\t\t\t
      \  bool include_inner_joins)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_jointree_node_for_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4598,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4601,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - query
    - joinrelid
    argTypes:
    - Query*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4603
      start: 4593
    functionDepth: 2
    functionLinenumber: 4593
    functionLinenumberEnd: 4603
    functionName: get_relids_for_join
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - find_jointree_node_for_rel
    - elog
    - get_relids_in_jointree
    linkageType: ''
    returnType: Relids
    signature: Relids get_relids_for_join(Query *query, int joinrelid)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4615,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4622,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4627,1
    - Dst: find_jointree_node_for_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4629,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4629,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4634,1
    - Dst: find_jointree_node_for_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4640,1
    - Dst: find_jointree_node_for_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4643,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4648,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4649,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - jtnode
    - relid
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4651
      start: 4610
    functionDepth: 1
    functionLinenumber: 4610
    functionLinenumberEnd: 4651
    functionName: find_jointree_node_for_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - lfirst
    - find_jointree_node_for_rel
    - IsA
    - nodeTag
    linkageType: ''
    returnType: Node
    signature: 'Node *

      find_jointree_node_for_rel(Node *jtnode, int relid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4662,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4664,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4665,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4668
      start: 4659
    functionDepth: 1
    functionLinenumber: 4659
    functionLinenumberEnd: 4668
    functionName: get_nullingrels
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - list_length
    - get_nullingrels_recurse
    - palloc0_array
    - palloc_object
    linkageType: ''
    returnType: nullingrel_info
    signature: 'nullingrel_info *

      get_nullingrels(Query *parse)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4685,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4689,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4692,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4697,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4699,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4699,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4702,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4710,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4711,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4716,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4716,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4718,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4719,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4722,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4722,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4724,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4725,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4728,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4728,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4730,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4731,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4734,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4740,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4741,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 3
    argNames:
    - jtnode
    - upper_nullingrels
    - info
    argTypes:
    - Node*
    - Relids
    - nullingrel_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4742
      start: 4679
    functionDepth: 1
    functionLinenumber: 4679
    functionLinenumberEnd: 4742
    functionName: get_nullingrels_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - Assert
    - bms_copy
    - lfirst
    - get_nullingrels_recurse
    - IsA
    - bms_add_member
    - nodeTag
    linkageType: ''
    returnType: void
    signature: "void get_nullingrels_recurse(Node *jtnode, Relids upper_nullingrels,\n\t\t\t\t\t\tnullingrel_info
      *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - path
    - ','
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: PATH_PARAM_BY_PARENT
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_PARAM_BY_PARENT(path, rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - path
    - ','
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: PATH_PARAM_BY_REL_SELF
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_PARAM_BY_REL_SELF(path, rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - path
    - ','
    - rel
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: PATH_PARAM_BY_REL
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_PARAM_BY_REL(path, rel)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: join_path_setup_hook
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:178,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:206,1
    - Dst: innerrel_is_unique
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:210,1
    - Dst: innerrel_is_unique
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:219,1
    - Dst: select_mergejoin_clauses
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:243,1
    - Dst: compute_semi_anti_join_factors
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:256,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:274,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:276,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:285,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:286,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:287,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:288,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:293,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:294,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:295,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:296,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:307,1
    - Dst: sort_inner_and_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:315,1
    - Dst: match_unsorted_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:327,1
    - Dst: match_unsorted_inner
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:344,1
    - Dst: hash_inner_and_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:354,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignJoinPaths
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:364,1
    - Dst: set_join_pathlist_hook
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:380,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 50
    argCount: 7
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - sjinfo
    - restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 382
    functionName: add_paths_to_joinrel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - join_path_setup_hook
    - set_join_pathlist_hook
    - foreach
    - select_mergejoin_clauses
    - bms_difference
    - compute_semi_anti_join_factors
    - match_unsorted_outer
    - bms_join
    - match_unsorted_inner
    - RelOptInfo*::fdwroutine::GetForeignJoinPaths
    - hash_inner_and_outer
    - lfirst
    - bms_overlap
    - bms_add_members
    - sort_inner_and_outer
    - innerrel_is_unique
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: "void add_paths_to_joinrel(PlannerInfo *root,\n\t\t\t\t\t RelOptInfo
      *joinrel,\n\t\t\t\t\t RelOptInfo *outerrel,\n\t\t\t\t\t RelOptInfo *innerrel,\n\t\t\t\t\t
      JoinType jointype,\n\t\t\t\t\t SpecialJoinInfo *sjinfo,\n\t\t\t\t\t List *restrictlist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:408,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:409,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - root
    - outerrelids
    - inner_paramrels
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 410
    functionName: allow_star_schema_join
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - bms_nonempty_difference
    - bms_overlap
    linkageType: ''
    returnType: bool
    signature: "bool allow_star_schema_join(PlannerInfo *root,\n\t\t\t\t\t   Relids
      outerrelids,\n\t\t\t\t\t   Relids inner_paramrels)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:432,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:433,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:435,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:439,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:441,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:443,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:445,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:447,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:456,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:457,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - root
    - outerrelids
    - inner_paramrels
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 460
    functionName: have_unsafe_outer_join_ref
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - foreach
    - bms_difference
    - bms_is_member
    - bms_free
    - lfirst
    - bms_overlap
    - bms_intersect
    linkageType: ''
    returnType: bool
    signature: "bool have_unsafe_outer_join_ref(PlannerInfo *root,\n\t\t\t\t\t\t   Relids
      outerrelids,\n\t\t\t\t\t\t   Relids inner_paramrels)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:496,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:507,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:507,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:508,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:511,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:512,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:518,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:523,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:528,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:530,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:531,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:540,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:542,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:543,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:557,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:563,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:566,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:570,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:572,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:573,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:577,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:577,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:581,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:581,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:583,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:584,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:593,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:595,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:596,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 8
    argNames:
    - root
    - param_info
    - outerrel
    - innerrel
    - ph_lateral_vars
    - param_exprs
    - operators
    - binary_mode
    argTypes:
    - PlannerInfo*
    - ParamPathInfo*
    - RelOptInfo*
    - RelOptInfo*
    - List*
    - List**
    - List**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 475
    functionDepth: 2
    functionLinenumber: 475
    functionLinenumberEnd: 613
    functionName: paraminfo_get_equal_hashops
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - lappend_oid
    - list_free
    - list_member
    - linitial
    - OidIsValid
    - lappend
    - exprType
    - lsecond
    - lfirst
    - list_concat
    - contain_volatile_functions
    - list_length
    - IsA
    - clause_sides_match_join
    - lookup_type_cache
    linkageType: ''
    returnType: bool
    signature: "bool paraminfo_get_equal_hashops(PlannerInfo *root, ParamPathInfo
      *param_info,\n\t\t\t\t\t\t\tRelOptInfo *outerrel, RelOptInfo *innerrel,\n\t\t\t\t\t\t\tList
      *ph_lateral_vars, List **param_exprs,\n\t\t\t\t\t\t\tList **operators, bool
      *binary_mode)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:496,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:507,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:507,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:508,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:511,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:512,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:518,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:523,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:528,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:530,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:531,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:540,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:542,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:543,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:557,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 559
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 222
    functionsReached:
    - lappend_oid
    - list_free
    - list_member
    - linitial
    - OidIsValid
    - lappend
    - lsecond
    - lfirst
    - list_length
    - IsA
    - clause_sides_match_join
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauses)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:566,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:570,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:572,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:573,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:577,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:577,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:581,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:581,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:583,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:584,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:593,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:595,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:596,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 564
    functionDepth: 2
    functionLinenumber: 564
    functionLinenumberEnd: 609
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 222
    functionsReached:
    - list_free
    - exprType
    - list_member
    - lappend
    - lfirst
    - contain_volatile_functions
    - OidIsValid
    - lappend_oid
    - lookup_type_cache
    linkageType: ''
    returnType: void
    signature: void foreach(lc, lateral_vars)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:634,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:637,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:639,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:648,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:658,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:658,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:661,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:666,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:669,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:675,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:677,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:678,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:680,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:684,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:686,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:686,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:688,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:691,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:694,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - root
    - innerrelids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 620
    functionDepth: 2
    functionLinenumber: 620
    functionLinenumberEnd: 698
    functionName: extract_lateral_vars_from_PHVs
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - pull_varnos
    - foreach
    - list_free
    - Assert
    - lappend
    - bms_is_member
    - pull_vars_of_level
    - find_placeholder_info
    - lfirst
    - bms_overlap
    - bms_equal
    - IsA
    - bms_is_subset
    - bms_membership
    linkageType: ''
    returnType: List
    signature: 'List *

      extract_lateral_vars_from_PHVs(PlannerInfo *root, Relids innerrelids)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:669,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:675,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:677,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:678,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:680,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:684,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:686,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:686,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:688,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:691,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 667
    functionDepth: 2
    functionLinenumber: 667
    functionLinenumberEnd: 692
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 223
    functionsReached:
    - Assert
    - bms_is_member
    - lappend
    - find_placeholder_info
    - lfirst
    - IsA
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void foreach(cell, vars)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: extract_lateral_vars_from_PHVs
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:746,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:808,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:810,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:820,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:823,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:825,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:827,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:839,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:841,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:843,1
    - Dst: paraminfo_get_equal_hashops
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:849,1
    - Dst: create_memoize_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:859,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 7
    argNames:
    - root
    - innerrel
    - outerrel
    - inner_path
    - outer_path
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 711
    functionDepth: 3
    functionLinenumber: 711
    functionLinenumberEnd: 870
    functionName: get_memoize_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - create_memoize_path
    - foreach
    - bms_is_member
    - foreach_node
    - paraminfo_get_equal_hashops
    - lfirst
    - contain_volatile_functions
    - extract_lateral_vars_from_PHVs
    linkageType: ''
    returnType: Path
    signature: "Path *\nget_memoize_path(PlannerInfo *root, RelOptInfo *innerrel,\n\t\t\t\t
      RelOptInfo *outerrel, Path *inner_path,\n\t\t\t\t Path *outer_path, JoinType
      jointype,\n\t\t\t\t JoinPathExtraData *extra)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:893,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:894,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:903,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:904,1
    - Dst: calc_nestloop_required_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:929,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:932,1
    - Dst: allow_star_schema_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:933,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:936,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:941,1
    - Dst: have_unsafe_outer_join_ref
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:941,1
    - Dst: PATH_PARAM_BY_PARENT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:950,1
    - Dst: path_is_reparameterizable_by_child
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:951,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:953,1
    - Dst: initial_cost_nestloop
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:966,1
    - Dst: add_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:970,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:974,1
    - Dst: create_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:975,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:989,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 8
    argNames:
    - root
    - joinrel
    - outer_path
    - inner_path
    - pathkeys
    - jointype
    - nestloop_subtype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - List*
    - JoinType
    - uint64
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 877
    functionDepth: 4
    functionLinenumber: 877
    functionLinenumberEnd: 991
    functionName: try_nestloop_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - initial_cost_nestloop
    - add_path_precheck
    - Assert
    - PATH_PARAM_BY_PARENT
    - allow_star_schema_join
    - bms_is_member
    - bms_free
    - path_is_reparameterizable_by_child
    - have_unsafe_outer_join_ref
    - create_nestloop_path
    - PATH_REQ_OUTER
    - bms_overlap
    - calc_nestloop_required_outer
    - add_path
    linkageType: ''
    returnType: void
    signature: "void try_nestloop_path(PlannerInfo *root,\n\t\t\t\t  RelOptInfo *joinrel,\n\t\t\t\t
      \ Path *outer_path,\n\t\t\t\t  Path *inner_path,\n\t\t\t\t  List *pathkeys,\n\t\t\t\t
      \ JoinType jointype,\n\t\t\t\t  uint64 nestloop_subtype,\n\t\t\t\t  JoinPathExtraData
      *extra)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1016,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1016,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1017,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1017,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1017,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1034,1
    - Dst: PATH_PARAM_BY_PARENT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1045,1
    - Dst: path_is_reparameterizable_by_child
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1046,1
    - Dst: initial_cost_nestloop
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1053,1
    - Dst: add_partial_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1055,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1061,1
    - Dst: create_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1062,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 8
    argNames:
    - root
    - joinrel
    - outer_path
    - inner_path
    - pathkeys
    - jointype
    - nestloop_subtype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - List*
    - JoinType
    - uint64
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 998
    functionDepth: 4
    functionLinenumber: 998
    functionLinenumberEnd: 1072
    functionName: try_partial_nestloop_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - initial_cost_nestloop
    - Assert
    - PATH_PARAM_BY_PARENT
    - path_is_reparameterizable_by_child
    - add_partial_path
    - create_nestloop_path
    - PATH_REQ_OUTER
    - bms_is_empty
    - bms_is_subset
    - add_partial_path_precheck
    linkageType: ''
    returnType: void
    signature: "void try_partial_nestloop_path(PlannerInfo *root,\n\t\t\t\t\t\t  RelOptInfo
      *joinrel,\n\t\t\t\t\t\t  Path *outer_path,\n\t\t\t\t\t\t  Path *inner_path,\n\t\t\t\t\t\t
      \ List *pathkeys,\n\t\t\t\t\t\t  JoinType jointype,\n\t\t\t\t\t\t  uint64 nestloop_subtype,\n\t\t\t\t\t\t
      \ JoinPathExtraData *extra)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: try_partial_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1098,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1118,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1118,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1119,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1119,1
    - Dst: calc_non_nestloop_required_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1126,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1129,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1132,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1147,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1151,1
    - Dst: initial_cost_mergejoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1157,1
    - Dst: add_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1163,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1167,1
    - Dst: create_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1168,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1186,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 11
    argNames:
    - root
    - joinrel
    - outer_path
    - inner_path
    - pathkeys
    - mergeclauses
    - outersortkeys
    - innersortkeys
    - jointype
    - extra
    - is_partial
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - List*
    - List*
    - List*
    - List*
    - JoinType
    - JoinPathExtraData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1079
    functionDepth: 4
    functionLinenumber: 1079
    functionLinenumberEnd: 1188
    functionName: try_mergejoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - create_mergejoin_path
    - add_path_precheck
    - bms_is_member
    - bms_free
    - pathkeys_count_contained_in
    - calc_non_nestloop_required_outer
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - bms_overlap
    - try_partial_mergejoin_path
    - add_path
    - initial_cost_mergejoin
    linkageType: ''
    returnType: void
    signature: "void try_mergejoin_path(PlannerInfo *root,\n\t\t\t\t   RelOptInfo
      *joinrel,\n\t\t\t\t   Path *outer_path,\n\t\t\t\t   Path *inner_path,\n\t\t\t\t
      \  List *pathkeys,\n\t\t\t\t   List *mergeclauses,\n\t\t\t\t   List *outersortkeys,\n\t\t\t\t
      \  List *innersortkeys,\n\t\t\t\t   JoinType jointype,\n\t\t\t\t   JoinPathExtraData
      *extra,\n\t\t\t\t   bool is_partial)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1213,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1214,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1214,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1214,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1215,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1215,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1229,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1233,1
    - Dst: initial_cost_mergejoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1239,1
    - Dst: add_partial_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1245,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1251,1
    - Dst: create_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1252,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 10
    argNames:
    - root
    - joinrel
    - outer_path
    - inner_path
    - pathkeys
    - mergeclauses
    - outersortkeys
    - innersortkeys
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - List*
    - List*
    - List*
    - List*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1195
    functionDepth: 4
    functionLinenumber: 1195
    functionLinenumberEnd: 1266
    functionName: try_partial_mergejoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - add_partial_path_precheck
    - create_mergejoin_path
    - Assert
    - pathkeys_count_contained_in
    - add_partial_path
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - bms_is_empty
    - initial_cost_mergejoin
    linkageType: ''
    returnType: void
    signature: "void try_partial_mergejoin_path(PlannerInfo *root,\n\t\t\t\t\t\t   RelOptInfo
      *joinrel,\n\t\t\t\t\t\t   Path *outer_path,\n\t\t\t\t\t\t   Path *inner_path,\n\t\t\t\t\t\t
      \  List *pathkeys,\n\t\t\t\t\t\t   List *mergeclauses,\n\t\t\t\t\t\t   List
      *outersortkeys,\n\t\t\t\t\t\t   List *innersortkeys,\n\t\t\t\t\t\t   JoinType
      jointype,\n\t\t\t\t\t\t   JoinPathExtraData *extra)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1292,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1292,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1293,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1293,1
    - Dst: calc_non_nestloop_required_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1300,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1303,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1306,1
    - Dst: initial_cost_hashjoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1314,1
    - Dst: add_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1317,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1321,1
    - Dst: create_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1322,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1337,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 7
    argNames:
    - root
    - joinrel
    - outer_path
    - inner_path
    - hashclauses
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - List*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1273
    functionDepth: 4
    functionLinenumber: 1273
    functionLinenumberEnd: 1339
    functionName: try_hashjoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - add_path_precheck
    - bms_is_member
    - bms_free
    - calc_non_nestloop_required_outer
    - PATH_REQ_OUTER
    - bms_overlap
    - initial_cost_hashjoin
    - create_hashjoin_path
    - add_path
    linkageType: ''
    returnType: void
    signature: "void try_hashjoin_path(PlannerInfo *root,\n\t\t\t\t  RelOptInfo *joinrel,\n\t\t\t\t
      \ Path *outer_path,\n\t\t\t\t  Path *inner_path,\n\t\t\t\t  List *hashclauses,\n\t\t\t\t
      \ JoinType jointype,\n\t\t\t\t  JoinPathExtraData *extra)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1367,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1368,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1368,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1368,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1369,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1369,1
    - Dst: initial_cost_hashjoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1376,1
    - Dst: add_partial_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1378,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1384,1
    - Dst: create_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1385,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 8
    argNames:
    - root
    - joinrel
    - outer_path
    - inner_path
    - hashclauses
    - jointype
    - extra
    - parallel_hash
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - List*
    - JoinType
    - JoinPathExtraData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1350
    functionDepth: 4
    functionLinenumber: 1350
    functionLinenumberEnd: 1396
    functionName: try_partial_hashjoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - Assert
    - add_partial_path
    - PATH_REQ_OUTER
    - initial_cost_hashjoin
    - bms_is_empty
    - create_hashjoin_path
    - add_partial_path_precheck
    linkageType: ''
    returnType: void
    signature: "void try_partial_hashjoin_path(PlannerInfo *root,\n\t\t\t\t\t\t  RelOptInfo
      *joinrel,\n\t\t\t\t\t\t  Path *outer_path,\n\t\t\t\t\t\t  Path *inner_path,\n\t\t\t\t\t\t
      \ List *hashclauses,\n\t\t\t\t\t\t  JoinType jointype,\n\t\t\t\t\t\t  JoinPathExtraData
      *extra,\n\t\t\t\t\t\t  bool parallel_hash)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1450,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1451,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1465,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1467,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1473,1
    - Dst: select_outer_pathkeys_for_merge
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1504,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1510,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1517,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1518,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1519,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1519,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1520,1
    - Dst: find_mergeclauses_for_outer_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1531,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1531,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1531,1
    - Dst: make_inner_pathkeys_for_merge
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1534,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1539,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1549,1
    - Dst: try_partial_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1566,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 6
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1409
    functionDepth: 5
    functionLinenumber: 1409
    functionLinenumberEnd: 1577
    functionName: sort_inner_and_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - lcons
    - foreach_current_index
    - get_cheapest_parallel_safe_total_inner
    - find_mergeclauses_for_outer_pathkeys
    - Assert
    - linitial
    - list_delete_nth_cell
    - build_join_pathkeys
    - PATH_PARAM_BY_REL
    - try_partial_mergejoin_path
    - lfirst
    - list_head
    - list_copy
    - make_inner_pathkeys_for_merge
    - list_length
    - try_mergejoin_path
    - bms_is_empty
    - select_outer_pathkeys_for_merge
    linkageType: ''
    returnType: void
    signature: "void sort_inner_and_outer(PlannerInfo *root,\n\t\t\t\t\t RelOptInfo
      *joinrel,\n\t\t\t\t\t RelOptInfo *outerrel,\n\t\t\t\t\t RelOptInfo *innerrel,\n\t\t\t\t\t
      JoinType jointype,\n\t\t\t\t\t JoinPathExtraData *extra)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1510,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1517,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1518,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1519,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1519,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1520,1
    - Dst: find_mergeclauses_for_outer_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1531,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1531,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1531,1
    - Dst: make_inner_pathkeys_for_merge
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1534,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1539,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1549,1
    - Dst: try_partial_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1566,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1508
    functionDepth: 5
    functionLinenumber: 1508
    functionLinenumberEnd: 1576
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 224
    functionsReached:
    - find_mergeclauses_for_outer_pathkeys
    - Assert
    - list_delete_nth_cell
    - build_join_pathkeys
    - try_partial_mergejoin_path
    - lfirst
    - list_head
    - list_copy
    - make_inner_pathkeys_for_merge
    - list_length
    - try_mergejoin_path
    - foreach_current_index
    - lcons
    linkageType: ''
    returnType: void
    signature: void foreach(l, all_pathkeys)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: find_mergeclauses_for_outer_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1615,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1636,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1636,1
    - Dst: make_inner_pathkeys_for_merge
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1640,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1650,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1691,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1704,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1706,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1720,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1721,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1728,1
    - Dst: trim_mergeclauses_for_inner_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1736,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1739,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1743,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1757,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1764,1
    - Dst: trim_mergeclauses_for_inner_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1779,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1782,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1787,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 10
    argNames:
    - root
    - joinrel
    - innerrel
    - outerpath
    - jointype
    - extra
    - useallclauses
    - inner_cheapest_total
    - merge_pathkeys
    - is_partial
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - Path*
    - JoinType
    - JoinPathExtraData*
    - bool
    - Path*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1593
    functionDepth: 5
    functionLinenumber: 1593
    functionLinenumberEnd: 1808
    functionName: generate_mergejoin_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - find_mergeclauses_for_outer_pathkeys
    - Assert
    - list_truncate
    - get_cheapest_path_for_pathkeys
    - trim_mergeclauses_for_inner_pathkeys
    - make_inner_pathkeys_for_merge
    - pathkeys_contained_in
    - list_copy
    - list_length
    - try_mergejoin_path
    - compare_path_costs
    linkageType: ''
    returnType: void
    signature: "void generate_mergejoin_paths(PlannerInfo *root,\n\t\t\t\t\t\t RelOptInfo
      *joinrel,\n\t\t\t\t\t\t RelOptInfo *innerrel,\n\t\t\t\t\t\t Path *outerpath,\n\t\t\t\t\t\t
      JoinType jointype,\n\t\t\t\t\t\t JoinPathExtraData *extra,\n\t\t\t\t\t\t bool
      useallclauses,\n\t\t\t\t\t\t Path *inner_cheapest_total,\n\t\t\t\t\t\t List
      *merge_pathkeys,\n\t\t\t\t\t\t bool is_partial)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1877,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1893,1
    - Dst: RELATION_WAS_MADE_UNIQUE
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1897,1
    - Dst: ExecMaterializesOutput
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1918,1
    - Dst: create_material_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1920,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1923,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1925,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1931,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1939,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1952,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1954,1
    - Dst: try_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1957,1
    - Dst: get_memoize_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1970,1
    - Dst: try_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1974,1
    - Dst: try_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1986,1
    - Dst: generate_mergejoin_paths
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2001,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2019,1
    - Dst: consider_parallel_nestloop
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2022,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2033,1
    - Dst: consider_parallel_mergejoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2037,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 59
    argCount: 6
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2041
      start: 1833
    functionDepth: 6
    functionLinenumber: 1833
    functionLinenumberEnd: 2041
    functionName: match_unsorted_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - elog
    - ExecMaterializesOutput
    - get_cheapest_parallel_safe_total_inner
    - foreach
    - RELATION_WAS_MADE_UNIQUE
    - generate_mergejoin_paths
    - create_material_path
    - consider_parallel_mergejoin
    - build_join_pathkeys
    - PATH_PARAM_BY_REL
    - lfirst
    - get_memoize_path
    - bms_is_empty
    - try_nestloop_path
    - consider_parallel_nestloop
    linkageType: ''
    returnType: void
    signature: "void match_unsorted_outer(PlannerInfo *root,\n\t\t\t\t\t RelOptInfo
      *joinrel,\n\t\t\t\t\t RelOptInfo *outerrel,\n\t\t\t\t\t RelOptInfo *innerrel,\n\t\t\t\t\t
      JoinType jointype,\n\t\t\t\t\t JoinPathExtraData *extra)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2067,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2069,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2075,1
    - Dst: generate_mergejoin_paths
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - extra
    - inner_cheapest_total
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - JoinPathExtraData*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2055
    functionDepth: 6
    functionLinenumber: 2055
    functionLinenumberEnd: 2082
    functionName: consider_parallel_mergejoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - build_join_pathkeys
    - lfirst
    - foreach
    - generate_mergejoin_paths
    linkageType: ''
    returnType: void
    signature: "void consider_parallel_mergejoin(PlannerInfo *root,\n\t\t\t\t\t\t\tRelOptInfo
      *joinrel,\n\t\t\t\t\t\t\tRelOptInfo *outerrel,\n\t\t\t\t\t\t\tRelOptInfo *innerrel,\n\t\t\t\t\t\t\tJoinType
      jointype,\n\t\t\t\t\t\t\tJoinPathExtraData *extra,\n\t\t\t\t\t\t\tPath *inner_cheapest_total)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2115,1
    - Dst: ExecMaterializesOutput
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2116,1
    - Dst: create_material_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2119,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2120,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2123,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2125,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2130,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2139,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2141,1
    - Dst: try_partial_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2148,1
    - Dst: get_memoize_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2156,1
    - Dst: try_partial_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2160,1
    - Dst: try_partial_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2167,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 6
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2171
      start: 2095
    functionDepth: 5
    functionLinenumber: 2095
    functionLinenumberEnd: 2171
    functionName: consider_parallel_nestloop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - ExecMaterializesOutput
    - foreach
    - Assert
    - create_material_path
    - build_join_pathkeys
    - PATH_PARAM_BY_REL
    - try_partial_nestloop_path
    - lfirst
    - get_memoize_path
    linkageType: ''
    returnType: void
    signature: "void consider_parallel_nestloop(PlannerInfo *root,\n\t\t\t\t\t\t   RelOptInfo
      *joinrel,\n\t\t\t\t\t\t   RelOptInfo *outerrel,\n\t\t\t\t\t\t   RelOptInfo *innerrel,\n\t\t\t\t\t\t
      \  JoinType jointype,\n\t\t\t\t\t\t   JoinPathExtraData *extra)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2192,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2204,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2206,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2212,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2222,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2237,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2237,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2237,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2240,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2263,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2264,1
    - Dst: try_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2275,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2283,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2285,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2291,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2294,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2296,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2302,1
    - Dst: try_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2309,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2336,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2343,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2353,1
    - Dst: try_partial_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2354,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2377,1
    - Dst: try_partial_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2380,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 44
    argCount: 6
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2387
      start: 2184
    functionDepth: 5
    functionLinenumber: 2184
    functionLinenumberEnd: 2387
    functionName: hash_inner_and_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - IS_OUTER_JOIN
    - get_cheapest_parallel_safe_total_inner
    - foreach
    - try_partial_hashjoin_path
    - linitial
    - castNode
    - lappend
    - bms_is_empty
    - PATH_PARAM_BY_REL
    - lfirst
    - get_commutator
    - OidIsValid
    - try_hashjoin_path
    - clause_sides_match_join
    - RINFO_IS_PUSHED_DOWN
    linkageType: ''
    returnType: void
    signature: "void hash_inner_and_outer(PlannerInfo *root,\n\t\t\t\t\t RelOptInfo
      *joinrel,\n\t\t\t\t\t RelOptInfo *outerrel,\n\t\t\t\t\t RelOptInfo *innerrel,\n\t\t\t\t\t
      JoinType jointype,\n\t\t\t\t\t JoinPathExtraData *extra)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2421,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2437,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2445,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2458,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2466,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2484,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2484,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2484,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2498,1
    - Dst: EC_MUST_BE_REDUNDANT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2500,1
    - Dst: EC_MUST_BE_REDUNDANT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2501,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2507,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 38
    argCount: 7
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - restrictlist
    - jointype
    - mergejoin_allowed
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - List*
    - JoinType
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2526
      start: 2411
    functionDepth: 2
    functionLinenumber: 2411
    functionLinenumberEnd: 2526
    functionName: select_mergejoin_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - IS_OUTER_JOIN
    - RINFO_IS_PUSHED_DOWN
    - castNode
    - lappend
    - update_mergeclause_eclasses
    - EC_MUST_BE_REDUNDANT
    - lfirst
    - get_commutator
    - OidIsValid
    - IsA
    - clause_sides_match_join
    linkageType: ''
    returnType: List
    signature: "List *\nselect_mergejoin_clauses(PlannerInfo *root,\n\t\t\t\t\t\t
      RelOptInfo *joinrel,\n\t\t\t\t\t\t RelOptInfo *outerrel,\n\t\t\t\t\t\t RelOptInfo
      *innerrel,\n\t\t\t\t\t\t List *restrictlist,\n\t\t\t\t\t\t JoinType jointype,\n\t\t\t\t\t\t
      bool *mergejoin_allowed)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2437,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2445,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2458,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2466,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2484,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2484,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2484,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2498,1
    - Dst: EC_MUST_BE_REDUNDANT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2500,1
    - Dst: EC_MUST_BE_REDUNDANT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2501,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2507,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2508
      start: 2435
    functionDepth: 2
    functionLinenumber: 2435
    functionLinenumberEnd: 2508
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 228
    functionsReached:
    - RINFO_IS_PUSHED_DOWN
    - castNode
    - lappend
    - update_mergeclause_eclasses
    - EC_MUST_BE_REDUNDANT
    - lfirst
    - get_commutator
    - OidIsValid
    - IsA
    - clause_sides_match_join
    linkageType: ''
    returnType: void
    signature: void foreach(l, restrictlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: set_base_rel_consider_startup
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:190,1
    - Dst: set_base_rel_sizes
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:195,1
    - Dst: setup_simple_grouped_rels
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:226,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:228,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:231,1
    - Dst: set_base_rel_pathlists
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:239,1
    - Dst: make_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:244,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:249,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:249,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - root
    - joinlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 252
    functionName: make_one_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - set_base_rel_sizes
    - bms_equal
    - set_base_rel_consider_startup
    - setup_simple_grouped_rels
    - IS_SIMPLE_REL
    - make_rel_from_joinlist
    - IS_DUMMY_REL
    - set_base_rel_pathlists
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      make_one_rel(PlannerInfo *root, List *joinlist)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:282,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:284,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:288,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 295
    functionName: set_base_rel_consider_startup
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - lfirst
    - foreach
    - find_base_rel
    - bms_get_singleton_member
    linkageType: ''
    returnType: void
    signature: void set_base_rel_consider_startup(PlannerInfo *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:321,1
    - Dst: set_rel_consider_parallel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:338,1
    - Dst: set_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:340,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 342
    functionName: set_base_rel_sizes
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - set_rel_consider_parallel
    - set_rel_size
    linkageType: ''
    returnType: void
    signature: void set_base_rel_sizes(PlannerInfo *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:371,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:371,1
    - Dst: build_simple_grouped_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:373,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 375
    functionName: setup_simple_grouped_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - IS_SIMPLE_REL
    - build_simple_grouped_rel
    linkageType: ''
    returnType: void
    signature: void setup_simple_grouped_rels(PlannerInfo *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:396,1
    - Dst: set_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:402,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 404
    functionName: set_base_rel_pathlists
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - set_rel_pathlist
    linkageType: ''
    returnType: void
    signature: void set_base_rel_pathlists(PlannerInfo *root)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: relation_excluded_by_constraints
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:415,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:428,1
    - Dst: set_append_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:433,1
    - Dst: set_foreign_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:443,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:452,1
    - Dst: set_tablesample_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:457,1
    - Dst: set_plain_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:462,1
    - Dst: set_subquery_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:472,1
    - Dst: set_function_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:475,1
    - Dst: set_tablefunc_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:478,1
    - Dst: set_values_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:481,1
    - Dst: set_worktable_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:491,1
    - Dst: set_cte_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:493,1
    - Dst: set_namedtuplestore_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:497,1
    - Dst: set_result_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:501,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:504,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:512,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:512,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 50
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 410
    functionDepth: 5
    functionLinenumber: 410
    functionLinenumberEnd: 513
    functionName: set_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - set_foreign_size
    - set_cte_pathlist
    - elog
    - set_function_size_estimates
    - set_namedtuplestore_pathlist
    - set_tablesample_rel_size
    - set_subquery_pathlist
    - set_result_pathlist
    - Assert
    - set_worktable_pathlist
    - set_dummy_rel_pathlist
    - set_append_rel_size
    - set_plain_rel_size
    - IS_DUMMY_REL
    - set_tablefunc_size_estimates
    - relation_excluded_by_constraints
    - set_values_size_estimates
    linkageType: ''
    returnType: void
    signature: "void set_rel_size(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t Index
      rti, RangeTblEntry *rte)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:523,1
    - Dst: set_append_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:530,1
    - Dst: set_foreign_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:540,1
    - Dst: set_tablesample_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:545,1
    - Dst: set_plain_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:550,1
    - Dst: set_function_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:558,1
    - Dst: set_tablefunc_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:562,1
    - Dst: set_values_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:566,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:578,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:607,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:608,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:611,1
    - Dst: set_grouped_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:620,1
    - Dst: pprint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:623,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 46
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 625
    functionName: set_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - set_tablefunc_pathlist
    - set_append_rel_pathlist
    - elog
    - set_plain_rel_pathlist
    - generate_useful_gather_paths
    - set_values_pathlist
    - bms_equal
    - pprint
    - set_tablesample_rel_pathlist
    - set_foreign_pathlist
    - set_cheapest
    - IS_DUMMY_REL
    - set_grouped_rel_pathlist
    - set_function_pathlist
    linkageType: ''
    returnType: void
    signature: "void set_rel_pathlist(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t
      Index rti, RangeTblEntry *rte)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_index_predicates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:638,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 642
    functionName: set_plain_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - set_baserel_size_estimates
    - check_index_predicates
    linkageType: ''
    returnType: void
    signature: void set_plain_rel_size(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:656,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:659,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:662,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:662,1
    - Dst: get_rel_persistence
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:679,1
    - Dst: func_parallel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:688,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:692,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:706,1
    - Dst: RelOptInfo*::fdwroutine::IsForeignScanParallelSafe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:709,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:744,1
    - Dst: limit_needed
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:753,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:758,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:768,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:806,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:819,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:826,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 648
    functionDepth: 2
    functionLinenumber: 648
    functionLinenumberEnd: 831
    functionName: set_rel_consider_parallel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - castNode
    - limit_needed
    - IS_SIMPLE_REL
    - RelOptInfo*::fdwroutine::IsForeignScanParallelSafe
    - is_parallel_safe
    - func_parallel
    - get_rel_persistence
    linkageType: ''
    returnType: void
    signature: "void set_rel_consider_parallel(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      \ RangeTblEntry *rte)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: create_tidscan_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:857,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:861,1
    - Dst: create_seqscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:861,1
    - Dst: create_plain_partial_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:865,1
    - Dst: create_index_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:868,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 837
    functionDepth: 4
    functionLinenumber: 837
    functionLinenumberEnd: 869
    functionName: set_plain_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - create_tidscan_paths
    - create_plain_partial_paths
    - create_index_paths
    - create_seqscan_path
    - add_path
    linkageType: ''
    returnType: void
    signature: void set_plain_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: compute_parallel_worker
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:880,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:888,1
    - Dst: create_seqscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:888,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 875
    functionDepth: 4
    functionLinenumber: 875
    functionLinenumberEnd: 889
    functionName: create_plain_partial_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - compute_parallel_worker
    - create_seqscan_path
    - add_partial_path
    linkageType: ''
    returnType: void
    signature: void create_plain_partial_paths(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_index_predicates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:907,1
    - Dst: GetTsmRoutine
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:914,1
    - Dst: TsmRoutine*::SampleScanGetSampleSize
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:915,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 895
    functionDepth: 2
    functionLinenumber: 895
    functionLinenumberEnd: 929
    functionName: set_tablesample_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - GetTsmRoutine
    - set_baserel_size_estimates
    - TsmRoutine*::SampleScanGetSampleSize
    - check_index_predicates
    linkageType: ''
    returnType: void
    signature: void set_tablesample_rel_size(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: create_samplescan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:949,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:968,1
    - Dst: GetTsmRoutine
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:969,1
    - Dst: create_material_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:971,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:974,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 935
    functionDepth: 4
    functionLinenumber: 935
    functionLinenumberEnd: 977
    functionName: set_tablesample_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - GetTsmRoutine
    - create_material_path
    - create_samplescan_path
    - add_path
    - bms_membership
    linkageType: ''
    returnType: void
    signature: void set_tablesample_rel_pathlist(PlannerInfo *root, RelOptInfo *rel,
      RangeTblEntry *rte)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_foreign_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:987,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignRelSize
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:990,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:993,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1000,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 983
    functionDepth: 1
    functionLinenumber: 983
    functionLinenumberEnd: 1001
    functionName: set_foreign_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - set_foreign_size_estimates
    - Max
    - RelOptInfo*::fdwroutine::GetForeignRelSize
    - clamp_row_est
    linkageType: ''
    returnType: void
    signature: void set_foreign_size(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelOptInfo*::fdwroutine::GetForeignPaths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1007
    functionDepth: 0
    functionLinenumber: 1007
    functionLinenumberEnd: 1012
    functionName: set_foreign_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - RelOptInfo*::fdwroutine::GetForeignPaths
    linkageType: ''
    returnType: void
    signature: void set_foreign_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1039,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1041,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1041,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1051,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1082,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1084,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1086,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1107,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1110,1
    - Dst: relation_excluded_by_constraints
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1120,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1126,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1141,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1143,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1145,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1146,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1147,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1164,1
    - Dst: has_useful_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1176,1
    - Dst: add_child_rel_equivalences
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1177,1
    - Dst: set_rel_consider_parallel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1210,1
    - Dst: set_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1215,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1243,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1257,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1260,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1261,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1263,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1268,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1276,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1276,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1277,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1278,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1291,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1294,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1296,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1310,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1313,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 71
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1025
    functionDepth: 6
    functionLinenumber: 1025
    functionLinenumberEnd: 1314
    functionName: set_append_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - exprType
    - check_stack_depth
    - has_useful_pathkeys
    - rint
    - IS_DUMMY_REL
    - foreach
    - Assert
    - set_rel_size
    - set_dummy_rel_pathlist
    - pfree
    - find_base_rel
    - set_rel_consider_parallel
    - exprTypmod
    - IsA
    - lappend
    - lfirst
    - IS_SIMPLE_REL
    - relation_excluded_by_constraints
    - get_typavgwidth
    - add_child_rel_equivalences
    - adjust_appendrel_attrs
    - palloc0
    - bms_overlap
    - bms_is_empty
    - forboth
    linkageType: ''
    returnType: void
    signature: "void set_append_rel_size(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\tIndex
      rti, RangeTblEntry *rte)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1332,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1334,1
    - Dst: set_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1360,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1365,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1371,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1375,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1320
    functionDepth: 4
    functionLinenumber: 1320
    functionLinenumberEnd: 1376
    functionName: set_append_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - foreach
    - set_rel_pathlist
    - lappend
    - lfirst
    - IS_DUMMY_REL
    - add_paths_to_append_rel
    linkageType: ''
    returnType: void
    signature: "void set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\tIndex
      rti, RangeTblEntry *rte)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1400,1
    - Dst: IS_GROUPED_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1400,1
    - Dst: generate_grouped_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1402,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1403,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1383
    functionDepth: 3
    functionLinenumber: 1383
    functionLinenumberEnd: 1405
    functionName: set_grouped_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - IS_GROUPED_REL
    - generate_grouped_paths
    - set_cheapest
    linkageType: ''
    returnType: void
    signature: void set_grouped_rel_pathlist(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1446,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1460,1
    - Dst: get_cheapest_fractional_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1481,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1487,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1488,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1500,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1501,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1529,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1530,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1550,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1563,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1565,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1567,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1578,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1580,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1590,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1604,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1606,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1615,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1628,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1628,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1634,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1634,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1648,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1650,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1652,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1654,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1667,1
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1668,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1668,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1669,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1672,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1675,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1687,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1706,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1708,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1710,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1718,1
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1719,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1719,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1722,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1724,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1727,1
    - Dst: generate_orderedappend_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1735,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1753,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1761,1
    - Dst: get_cheapest_parameterized_child_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1771,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1780,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1785,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1786,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1798,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1800,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1803,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1805,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1813,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1814,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1817,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 106
    argCount: 3
    argNames:
    - root
    - rel
    - live_childrels
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1419
    functionDepth: 4
    functionLinenumber: 1419
    functionLinenumberEnd: 1820
    functionName: add_paths_to_append_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 3
    functionsReached:
    - compare_pathkeys
    - get_cheapest_parallel_safe_total_inner
    - for_each_from
    - create_append_path
    - foreach
    - Assert
    - linitial
    - pg_leftmost_one_pos32
    - list_length
    - bms_equal
    - generate_orderedappend_paths
    - add_path
    - lappend
    - get_cheapest_fractional_path
    - lfirst
    - get_cheapest_parameterized_child_path
    - list_make1
    - accumulate_append_subpath
    - add_partial_path
    - Max
    - PATH_REQ_OUTER
    - Min
    linkageType: ''
    returnType: void
    signature: "void add_paths_to_append_rel(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\tList
      *live_childrels)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1446,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1460,1
    - Dst: get_cheapest_fractional_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1481,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1487,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1488,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1500,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1501,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1529,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1530,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1550,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1563,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1565,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1567,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1578,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1580,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1590,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1604,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1606,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1615,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1620
      start: 1444
    functionDepth: 2
    functionLinenumber: 1444
    functionLinenumberEnd: 1620
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 233
    functionsReached:
    - compare_pathkeys
    - accumulate_append_subpath
    - get_cheapest_parallel_safe_total_inner
    - foreach
    - Assert
    - linitial
    - lappend
    - get_cheapest_fractional_path
    - lfirst
    - PATH_REQ_OUTER
    - bms_equal
    linkageType: ''
    returnType: void
    signature: void foreach(l, live_childrels)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1578,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1580,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1576
    functionDepth: 1
    functionLinenumber: 1576
    functionLinenumberEnd: 1586
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 233
    functionsReached:
    - compare_pathkeys
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lpk, all_child_pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1604,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1602
    functionDepth: 1
    functionLinenumber: 1602
    functionLinenumberEnd: 1611
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 233
    functionsReached:
    - bms_equal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lco, all_child_outers)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1753,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1761,1
    - Dst: get_cheapest_parameterized_child_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1771,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1780,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1785,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1786,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1789
      start: 1751
    functionDepth: 4
    functionLinenumber: 1751
    functionLinenumberEnd: 1789
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 233
    functionsReached:
    - accumulate_append_subpath
    - create_append_path
    - lfirst
    - get_cheapest_parameterized_child_path
    - add_path
    linkageType: ''
    returnType: void
    signature: void foreach(l, all_child_outers)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1761,1
    - Dst: get_cheapest_parameterized_child_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1771,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1780,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1782
      start: 1759
    functionDepth: 1
    functionLinenumber: 1759
    functionLinenumberEnd: 1782
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 233
    functionsReached:
    - lfirst
    - get_cheapest_parameterized_child_path
    - accumulate_append_subpath
    linkageType: ''
    returnType: void
    signature: void foreach(lcr, live_childrels)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1870,1
    - Dst: partitions_are_ordered
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1871,1
    - Dst: build_partition_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1873,1
    - Dst: build_partition_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1877,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1895,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1917,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1919,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1922,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1924,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1936,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1950,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1957,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1964,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1970,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2010,1
    - Dst: get_cheapest_fractional_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2017,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2062,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2065,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2068,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2069,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2074,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2077,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2086,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2089,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2094,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2104,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2104,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2113,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2113,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2123,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2123,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2135,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2135,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2142,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2142,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2150,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2150,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 66
    argCount: 4
    argNames:
    - root
    - rel
    - live_childrels
    - all_child_pathkeys
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 1851
    functionDepth: 4
    functionLinenumber: 1851
    functionLinenumberEnd: 2158
    functionName: generate_orderedappend_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - get_cheapest_fractional_path_for_pathkeys
    - get_singleton_append_subpath
    - accumulate_append_subpath
    - create_merge_append_path
    - Assert
    - build_partition_pathkeys
    - lappend
    - partitions_are_ordered
    - get_cheapest_path_for_pathkeys
    - create_append_path
    - list_nth_node
    - lfirst
    - IS_SIMPLE_REL
    - pathkeys_contained_in
    - list_length
    - add_path
    linkageType: ''
    returnType: void
    signature: "void generate_orderedappend_paths(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t\t
      List *live_childrels,\n\t\t\t\t\t\t\t List *all_child_pathkeys)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1895,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1917,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1919,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1922,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1924,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1936,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1950,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1957,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1964,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1970,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2010,1
    - Dst: get_cheapest_fractional_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2017,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2062,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2065,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2068,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2069,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2074,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2077,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2086,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2089,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2094,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2104,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2104,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2113,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2113,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2123,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2123,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2135,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2135,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2142,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2142,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2150,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2150,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2157
      start: 1893
    functionDepth: 4
    functionLinenumber: 1893
    functionLinenumberEnd: 2157
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 233
    functionsReached:
    - get_cheapest_fractional_path_for_pathkeys
    - get_singleton_append_subpath
    - accumulate_append_subpath
    - create_merge_append_path
    - Assert
    - lappend
    - get_cheapest_path_for_pathkeys
    - create_append_path
    - list_nth_node
    - lfirst
    - pathkeys_contained_in
    - list_length
    - add_path
    linkageType: ''
    returnType: void
    signature: void foreach(lcp, all_child_pathkeys)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2179,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2184,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2185,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2185,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2197,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2199,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2202,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2202,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2210,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2214,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2214,1
    - Dst: reparameterize_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2216,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2219,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2219,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2219,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2222,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2167
    functionDepth: 5
    functionLinenumber: 2167
    functionLinenumberEnd: 2232
    functionName: get_cheapest_parameterized_child_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 3
    functionsReached:
    - foreach
    - Assert
    - get_cheapest_path_for_pathkeys
    - compare_path_costs
    - lfirst
    - PATH_REQ_OUTER
    - reparameterize_path
    - bms_equal
    - bms_is_subset
    linkageType: ''
    returnType: Path
    signature: "Path *\nget_cheapest_parameterized_child_path(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t\t\t\t  Relids required_outer)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2259,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2265,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2267,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2269,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2278,1
    - Dst: list_copy_tail
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2279,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2281,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2283,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2286,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2288,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2293,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2297,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2299,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2301,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2306,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - path
    - subpaths
    - special_subpaths
    - child_append_relid_sets
    argTypes:
    - Path*
    - List**
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2307
      start: 2255
    functionDepth: 1
    functionLinenumber: 2255
    functionLinenumberEnd: 2307
    functionName: accumulate_append_subpath
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 6
    functionsReached:
    - list_copy_head
    - lappend
    - list_copy_tail
    - list_concat
    - IsA
    linkageType: ''
    returnType: void
    signature: "void accumulate_append_subpath(Path *path, List **subpaths, List **special_subpaths,\n\t\t\t\t\t\t
      \ List **child_append_relid_sets)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2324,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2326,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2330,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2333,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2335,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2337,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2340,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2344,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2347,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2349,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2351,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - path
    - child_append_relid_sets
    argTypes:
    - Path*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2321
    functionDepth: 1
    functionLinenumber: 2321
    functionLinenumberEnd: 2356
    functionName: get_singleton_append_subpath
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - Assert
    - linitial
    - lappend
    - list_concat
    - list_length
    - IsA
    linkageType: ''
    returnType: Path
    signature: 'Path *

      get_singleton_append_subpath(Path *path, List **child_append_relid_sets)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2383,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2383,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - rel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2394
      start: 2369
    functionDepth: 4
    functionLinenumber: 2369
    functionLinenumberEnd: 2394
    functionName: set_dummy_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - create_append_path
    - add_path
    - set_cheapest
    linkageType: ''
    returnType: void
    signature: void set_dummy_rel_pathlist(RelOptInfo *rel)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2436,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2440,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2444,1
    - Dst: get_func_support
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2447,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2450,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2455,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2457,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2463,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2467,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2476,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2476,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2477,1
    - Dst: get_op_index_interpretation
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2488,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2492,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2565,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2577,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2581,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2583,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2586,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 69
    argCount: 7
    argNames:
    - subquery
    - attno
    - wfunc
    - opexpr
    - wfunc_left
    - keep_original
    - run_cond_attrs
    argTypes:
    - Query*
    - AttrNumber
    - WindowFunc*
    - OpExpr*
    - bool
    - bool*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2593
      start: 2419
    functionDepth: 3
    functionLinenumber: 2419
    functionLinenumberEnd: 2593
    functionName: find_window_run_conditions
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - get_op_index_interpretation
    - contain_subplans
    - copyObject
    - linitial
    - lappend
    - get_opfamily_member_for_cmptype
    - makeNode
    - get_func_support
    - lsecond
    - is_pseudo_constant_clause
    - OidFunctionCall1
    - PointerGetDatum
    - lfirst
    - OidIsValid
    - list_nth
    - IsA
    - bms_add_member
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: "bool find_window_run_conditions(Query *subquery, AttrNumber attno,\n\t\t\t\t\t\t
      \  WindowFunc *wfunc, OpExpr *opexpr, bool wfunc_left,\n\t\t\t\t\t\t   bool
      *keep_original, Bitmapset **run_cond_attrs)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2492,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2565,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2571
      start: 2490
    functionDepth: 1
    functionLinenumber: 2490
    functionLinenumberEnd: 2571
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 234
    functionsReached:
    - lfirst
    - get_opfamily_member_for_cmptype
    linkageType: ''
    returnType: void
    signature: void foreach(lc, opinfos)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2619,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2622,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2633,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2634,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2644,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2645,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2647,1
    - Dst: find_window_run_conditions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2650,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2656,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2657,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2659,1
    - Dst: find_window_run_conditions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2662,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 3
    argNames:
    - subquery
    - clause
    - run_cond_attrs
    argTypes:
    - Query*
    - Node*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2609
    functionDepth: 4
    functionLinenumber: 2609
    functionLinenumberEnd: 2668
    functionName: check_and_push_window_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - set_opfuncid
    - linitial
    - func_strict
    - find_window_run_conditions
    - lsecond
    - list_length
    - list_nth
    - IsA
    linkageType: ''
    returnType: bool
    signature: "bool check_and_push_window_quals(Query *subquery, Node *clause,\n\t\t\t\t\t\t\tBitmapset
      **run_cond_attrs)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2702,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2719,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2721,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2721,1
    - Dst: subquery_is_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2753,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2759,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2761,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2766,1
    - Dst: qual_is_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2770,1
    - Dst: subquery_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2774,1
    - Dst: check_and_push_window_quals
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2786,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2794,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2799,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2807,1
    - Dst: remove_unused_subquery_outputs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2815,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2835,1
    - Dst: choose_plan_name
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2838,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2839,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2851,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2853,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2855,1
    - Dst: set_subquery_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2864,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2871,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2871,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2876,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2878,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2881,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2888,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2900,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2902,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2906,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2909,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2912,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2913,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2922,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2926,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2928,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2932,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2935,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2938,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2939,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 70
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2945
      start: 2682
    functionDepth: 5
    functionLinenumber: 2682
    functionLinenumberEnd: 2945
    functionName: set_subquery_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - foreach_current_index
    - copyObject
    - qual_is_pushdown_safe
    - IS_DUMMY_REL
    - create_subqueryscan_path
    - fetch_upper_rel
    - foreach
    - pfree
    - Assert
    - set_dummy_rel_pathlist
    - convert_subquery_pathkeys
    - set_subquery_size_estimates
    - subquery_push_qual
    - subquery_is_pushdown_safe
    - list_length
    - add_path
    - subquery_planner
    - lappend
    - bms_is_empty
    - choose_plan_name
    - lfirst
    - memset
    - remove_unused_subquery_outputs
    - bms_membership
    - palloc0
    - check_and_push_window_quals
    - add_partial_path
    - make_tlist_from_pathtarget
    - IsA
    linkageType: ''
    returnType: void
    signature: "void set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t
      \ Index rti, RangeTblEntry *rte)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2980,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2982,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2985,1
    - Dst: build_expression_pathkey
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3002,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3010,1
    - Dst: create_functionscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3010,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3012
      start: 2951
    functionDepth: 4
    functionLinenumber: 2951
    functionLinenumberEnd: 3012
    functionName: set_function_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - foreach
    - lfirst
    - create_functionscan_path
    - IsA
    - build_expression_pathkey
    - add_path
    linkageType: ''
    returnType: void
    signature: void set_function_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3031,1
    - Dst: create_valuesscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3032
      start: 3018
    functionDepth: 4
    functionLinenumber: 3018
    functionLinenumberEnd: 3032
    functionName: set_values_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - create_valuesscan_path
    - add_path
    linkageType: ''
    returnType: void
    signature: void set_values_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3051,1
    - Dst: create_tablefuncscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3053
      start: 3038
    functionDepth: 4
    functionLinenumber: 3038
    functionLinenumberEnd: 3053
    functionName: set_tablefunc_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - create_tablefuncscan_path
    - add_path
    linkageType: ''
    returnType: void
    signature: void set_tablefunc_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3085,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3094,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3096,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3098,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3103,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3104,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3105,1
    - Dst: list_nth_int
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3106,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3108,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3110,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3110,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3110,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3111,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3112,1
    - Dst: set_cte_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3115,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3118,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3131,1
    - Dst: create_ctescan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3131,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3132
      start: 3062
    functionDepth: 4
    functionLinenumber: 3062
    functionLinenumberEnd: 3132
    functionName: set_cte_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - strcmp
    - Assert
    - list_nth_int
    - convert_subquery_pathkeys
    - lfirst
    - set_cte_size_estimates
    - list_length
    - list_nth
    - create_ctescan_path
    - add_path
    linkageType: ''
    returnType: void
    signature: void set_cte_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_namedtuplestore_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3148,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3158,1
    - Dst: create_namedtuplestorescan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3159
      start: 3141
    functionDepth: 4
    functionLinenumber: 3141
    functionLinenumberEnd: 3159
    functionName: set_namedtuplestore_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - set_namedtuplestore_size_estimates
    - create_namedtuplestorescan_path
    - add_path
    linkageType: ''
    returnType: void
    signature: "void set_namedtuplestore_pathlist(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t\t
      RangeTblEntry *rte)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_result_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3175,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3185,1
    - Dst: create_resultscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3186
      start: 3168
    functionDepth: 4
    functionLinenumber: 3168
    functionLinenumberEnd: 3186
    functionName: set_result_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - set_result_size_estimates
    - create_resultscan_path
    - add_path
    linkageType: ''
    returnType: void
    signature: "void set_result_pathlist(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\tRangeTblEntry
      *rte)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3210,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3217,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3221,1
    - Dst: set_cte_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3224,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3235,1
    - Dst: create_worktablescan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3236
      start: 3195
    functionDepth: 4
    functionLinenumber: 3195
    functionLinenumberEnd: 3236
    functionName: set_worktable_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - elog
    - create_worktablescan_path
    - add_path
    - set_cte_size_estimates
    linkageType: ''
    returnType: void
    signature: void set_worktable_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3276,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3277,1
    - Dst: create_gather_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3279,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3281,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3287,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3289,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3295,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3296,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3298,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - root
    - rel
    - override_rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3300
      start: 3254
    functionDepth: 4
    functionLinenumber: 3254
    functionLinenumberEnd: 3300
    functionName: generate_gather_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - foreach
    - linitial
    - compute_gather_rows
    - create_gather_path
    - lfirst
    - create_gather_merge_path
    - add_path
    linkageType: ''
    returnType: void
    signature: void generate_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool
      override_rows)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3340,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3342,1
    - Dst: relation_can_be_sorted_early
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3357,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3369,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3370,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3373,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3374,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - root
    - rel
    - require_parallel_safe
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3379
      start: 3323
    functionDepth: 1
    functionLinenumber: 3323
    functionLinenumberEnd: 3379
    functionName: get_useful_pathkeys_for_relation
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - list_copy_head
    - foreach
    - lappend
    - lfirst
    - relation_can_be_sorted_early
    - list_length
    linkageType: ''
    returnType: List
    signature: "List *\nget_useful_pathkeys_for_relation(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t\t\t bool require_parallel_safe)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: generate_gather_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3409,1
    - Dst: get_useful_pathkeys_for_relation
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3412,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3415,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3423,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3428,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3430,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3433,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3474,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3481,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3487,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3488,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3495,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - root
    - rel
    - override_rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3498
      start: 3391
    functionDepth: 5
    functionLinenumber: 3391
    functionLinenumberEnd: 3498
    functionName: generate_useful_gather_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 7
    functionsReached:
    - get_useful_pathkeys_for_relation
    - foreach
    - create_sort_path
    - generate_gather_paths
    - linitial
    - pathkeys_count_contained_in
    - create_incremental_sort_path
    - compute_gather_rows
    - lfirst
    - create_gather_merge_path
    - add_path
    linkageType: ''
    returnType: void
    signature: void generate_useful_gather_paths(PlannerInfo *root, RelOptInfo *rel,
      bool override_rows)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3423,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3428,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3430,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3433,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3474,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3481,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3487,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3488,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3495,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3497
      start: 3421
    functionDepth: 4
    functionLinenumber: 3421
    functionLinenumberEnd: 3497
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 241
    functionsReached:
    - foreach
    - create_sort_path
    - pathkeys_count_contained_in
    - create_incremental_sort_path
    - compute_gather_rows
    - lfirst
    - create_gather_merge_path
    - add_path
    linkageType: ''
    returnType: void
    signature: void foreach(lc, useful_pathkeys_list)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3522,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3524,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3532,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3536,1
    - Dst: get_agg_clause_costs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3537,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3544,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3550,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3553,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3556,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3564,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3566,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3575,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3585,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3586,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3591,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3596,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3613,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3615,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3628,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3646,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3659,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3665,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3677,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3688,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3697,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3699,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3704,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3722,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3735,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3741,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3753,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3764,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3780,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3789,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3800,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3815,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3824,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3835,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 71
    argCount: 3
    argNames:
    - root
    - grouped_rel
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3837
      start: 3508
    functionDepth: 3
    functionLinenumber: 3508
    functionLinenumberEnd: 3837
    functionName: generate_grouped_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 3
    functionsReached:
    - IS_OTHER_REL
    - create_incremental_sort_path
    - IS_DUMMY_REL
    - grouping_is_sortable
    - estimate_num_groups
    - mark_dummy_rel
    - foreach
    - Assert
    - linitial
    - pathkeys_count_contained_in
    - bms_equal
    - add_path
    - create_sort_path
    - create_projection_path
    - create_agg_path
    - MemSet
    - get_agg_clause_costs
    - lfirst
    - grouping_is_hashable
    - make_pathkeys_for_sortclauses
    - add_partial_path
    - make_tlist_from_pathtarget
    linkageType: ''
    returnType: void
    signature: "void generate_grouped_paths(PlannerInfo *root, RelOptInfo *grouped_rel,\n\t\t\t\t\t
      \  RelOptInfo *rel)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3858,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3871,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3874,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3878,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3880,1
    - Dst: make_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3883,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3887,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3888,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3892,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3900,1
    - Dst: geqo
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3916,1
    - Dst: standard_join_search
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3918,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - root
    - joinlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3920
      start: 3846
    functionDepth: 6
    functionLinenumber: 3846
    functionLinenumberEnd: 3920
    functionName: make_rel_from_joinlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - elog
    - standard_join_search
    - linitial
    - lappend
    - geqo
    - lfirst
    - make_rel_from_joinlist
    - find_base_rel
    - list_length
    - IsA
    - nodeTag
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      make_rel_from_joinlist(PlannerInfo *root, List *joinlist)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3871,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3874,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3878,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3880,1
    - Dst: make_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3883,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3887,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3888,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3892,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3893
      start: 3869
    functionDepth: 7
    functionLinenumber: 3869
    functionLinenumberEnd: 3893
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 242
    functionsReached:
    - elog
    - lappend
    - lfirst
    - make_rel_from_joinlist
    - find_base_rel
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void foreach(jl, joinlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3961,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3974,1
    - Dst: join_search_one_level
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3987,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4003,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4007,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4009,1
    - Dst: generate_partitionwise_join_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4012,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4021,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4024,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4036,1
    - Dst: IS_GROUPED_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4036,1
    - Dst: generate_grouped_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4038,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4039,1
    - Dst: pprint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4043,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4052,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4053,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4053,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4055,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - root
    - levels_needed
    - initial_rels
    argTypes:
    - PlannerInfo*
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4060
      start: 3951
    functionDepth: 6
    functionLinenumber: 3951
    functionLinenumberEnd: 4060
    functionName: standard_join_search
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - elog
    - generate_useful_gather_paths
    - foreach
    - list_length
    - join_search_one_level
    - Assert
    - linitial
    - palloc0
    - generate_partitionwise_join_paths
    - generate_grouped_paths
    - pprint
    - IS_GROUPED_REL
    - lfirst
    - set_cheapest
    - bms_equal
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      standard_join_search(PlannerInfo *root, int levels_needed, List *initial_rels)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_output_expressions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4173,1
    - Dst: recurse_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4180,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4191,1
    - Dst: compare_tlist_datatypes
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4192,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 3
    argNames:
    - subquery
    - topquery
    - safetyInfo
    argTypes:
    - Query*
    - Query*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4197
      start: 4146
    functionDepth: 1
    functionLinenumber: 4146
    functionLinenumberEnd: 4197
    functionName: subquery_is_pushdown_safe
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - recurse_pushdown_safe
    - Assert
    - check_output_expressions
    - castNode
    - compare_tlist_datatypes
    linkageType: ''
    returnType: bool
    signature: "bool subquery_is_pushdown_safe(Query *subquery, Query *topquery,\n\t\t\t\t\t\t
      \ pushdown_safety_info *safetyInfo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4206,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4212,1
    - Dst: subquery_is_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4213,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4215,1
    - Dst: recurse_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4223,1
    - Dst: recurse_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4225,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4230,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4231,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - setOp
    - topquery
    - safetyInfo
    argTypes:
    - Node*
    - Query*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4234
      start: 4202
    functionDepth: 2
    functionLinenumber: 4202
    functionLinenumberEnd: 4234
    functionName: recurse_pushdown_safe
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - elog
    - recurse_pushdown_safe
    - Assert
    - rt_fetch
    - subquery_is_pushdown_safe
    - IsA
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: "bool recurse_pushdown_safe(Node *setOp, Query *topquery,\n\t\t\t\t\t
      \ pushdown_safety_info *safetyInfo)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: flatten_group_exprs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4302,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4307,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4316,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4325,1
    - Dst: targetIsInSortList
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4335,1
    - Dst: targetIsInAllPartitionLists
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4346,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 23
    argCount: 2
    argNames:
    - subquery
    - safetyInfo
    argTypes:
    - Query*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4353
      start: 4271
    functionDepth: 2
    functionLinenumber: 4271
    functionLinenumberEnd: 4353
    functionName: check_output_expressions
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - targetIsInSortList
    - flatten_group_exprs
    - lfirst
    - contain_volatile_functions
    - targetIsInAllPartitionLists
    - expression_returns_set
    linkageType: ''
    returnType: void
    signature: void check_output_expressions(Query *subquery, pushdown_safety_info
      *safetyInfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4307,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4316,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4325,1
    - Dst: targetIsInSortList
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4335,1
    - Dst: targetIsInAllPartitionLists
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4346,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4352
      start: 4305
    functionDepth: 2
    functionLinenumber: 4305
    functionLinenumberEnd: 4352
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 243
    functionsReached:
    - targetIsInSortList
    - lfirst
    - contain_volatile_functions
    - targetIsInAllPartitionLists
    - expression_returns_set
    linkageType: ''
    returnType: void
    signature: void foreach(lc, flattened_targetList)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4377,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4381,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4386,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4387,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4387,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4389,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4392,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - tlist
    - colTypes
    - safetyInfo
    argTypes:
    - List*
    - List*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4393
      start: 4372
    functionDepth: 2
    functionLinenumber: 4372
    functionLinenumberEnd: 4393
    functionName: compare_tlist_datatypes
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - elog
    - exprType
    - lnext
    - list_head
    - lfirst
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: "void compare_tlist_datatypes(List *tlist, List *colTypes,\n\t\t\t\t\t\tpushdown_safety_info
      *safetyInfo)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4381,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4386,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4387,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4387,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4390
      start: 4379
    functionDepth: 2
    functionLinenumber: 4379
    functionLinenumberEnd: 4390
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 243
    functionsReached:
    - elog
    - exprType
    - lnext
    - lfirst
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4410,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4412,1
    - Dst: targetIsInSortList
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - tle
    - query
    argTypes:
    - TargetEntry*
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4418
      start: 4405
    functionDepth: 1
    functionLinenumber: 4405
    functionLinenumberEnd: 4418
    functionName: targetIsInAllPartitionLists
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - lfirst
    - foreach
    - targetIsInSortList
    linkageType: ''
    returnType: bool
    signature: bool targetIsInAllPartitionLists(TargetEntry *tle, Query *query)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4468,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4473,1
    - Dst: contain_leaked_vars
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4478,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4492,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4495,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4504,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4523,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4551,1
    - Dst: setop_has_grouping
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4558,1
    - Dst: expression_has_grouping_conflict
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4560,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 36
    argCount: 4
    argNames:
    - subquery
    - rti
    - rinfo
    - safetyInfo
    argTypes:
    - Query*
    - Index
    - RestrictInfo*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4566
      start: 4458
    functionDepth: 2
    functionLinenumber: 4458
    functionLinenumberEnd: 4566
    functionName: qual_is_pushdown_safe
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - expression_has_grouping_conflict
    - contain_subplans
    - contain_leaked_vars
    - list_free
    - Assert
    - setop_has_grouping
    - lfirst
    - contain_volatile_functions
    - pull_var_clause
    - IsA
    linkageType: ''
    returnType: pushdown_safe_type
    signature: "pushdown_safe_type qual_is_pushdown_safe(Query *subquery, Index rti,
      RestrictInfo *rinfo,\n\t\t\t\t\t  pushdown_safety_info *safetyInfo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4495,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4504,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4523,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4549
      start: 4493
    functionDepth: 1
    functionLinenumber: 4493
    functionLinenumberEnd: 4549
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 244
    functionsReached:
    - Assert
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(vl, vars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: subquery_column_grouping_eqop
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4593,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4593,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - var
    - context
    argTypes:
    - Var*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4596
      start: 4578
    functionDepth: 1
    functionLinenumber: 4578
    functionLinenumberEnd: 4596
    functionName: pushdown_var_grouping_eqop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - Assert
    - subquery_column_grouping_eqop
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid pushdown_var_grouping_eqop(Var *var, void *context)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4617,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4620,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4623,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4625,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4636,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4638,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4641,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4643,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4650,1
    - Dst: setop_column_grouping_eqop
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4658,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 2
    argNames:
    - subquery
    - attno
    argTypes:
    - Query*
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4661
      start: 4611
    functionDepth: 1
    functionLinenumber: 4611
    functionLinenumberEnd: 4661
    functionName: subquery_column_grouping_eqop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - foreach
    - setop_column_grouping_eqop
    - list_nth_node
    - lfirst
    - list_length
    - lfirst_node
    linkageType: ''
    returnType: Oid
    signature: Oid subquery_column_grouping_eqop(Query *subquery, AttrNumber attno)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4680,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4686,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4688,1
    - Dst: setop_column_grouping_eqop
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4695,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4696,1
    - Dst: setop_column_grouping_eqop
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4698,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - setop
    - attno
    argTypes:
    - Node*
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4699
      start: 4674
    functionDepth: 1
    functionLinenumber: 4674
    functionLinenumberEnd: 4699
    functionName: setop_column_grouping_eqop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - OidIsValid
    - setop_column_grouping_eqop
    - list_nth_node
    - list_length
    - IsA
    linkageType: ''
    returnType: Oid
    signature: Oid setop_column_grouping_eqop(Node *setop, AttrNumber attno)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4711,1
    - Dst: setop_has_grouping
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4718,1
    - Dst: setop_has_grouping
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4718,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - setop
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4719
      start: 4706
    functionDepth: 1
    functionLinenumber: 4706
    functionLinenumberEnd: 4719
    functionName: setop_has_grouping
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - setop_has_grouping
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool setop_has_grouping(Node *setop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recurse_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4730,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4744,1
    - Dst: make_and_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4756,1
    - Dst: make_and_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4759,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - subquery
    - rte
    - rti
    - qual
    argTypes:
    - Query*
    - RangeTblEntry*
    - Index
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4767
      start: 4724
    functionDepth: 1
    functionLinenumber: 4724
    functionLinenumberEnd: 4767
    functionName: subquery_push_qual
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - make_and_qual
    - ReplaceVarsFromTargetList
    - recurse_push_qual
    linkageType: ''
    returnType: void
    signature: void subquery_push_qual(Query *subquery, RangeTblEntry *rte, Index
      rti, Node *qual)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4776,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4779,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4782,1
    - Dst: subquery_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4783,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4785,1
    - Dst: recurse_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4789,1
    - Dst: recurse_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4790,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4794,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4795,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - setOp
    - topquery
    - rte
    - rti
    - qual
    argTypes:
    - Node*
    - Query*
    - RangeTblEntry*
    - Index
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4797
      start: 4772
    functionDepth: 2
    functionLinenumber: 4772
    functionLinenumberEnd: 4797
    functionName: recurse_push_qual
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - elog
    - recurse_push_qual
    - Assert
    - rt_fetch
    - subquery_push_qual
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: "void recurse_push_qual(Node *setOp, Query *topquery,\n\t\t\t\t  RangeTblEntry
      *rte, Index rti, Node *qual)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4861,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4864,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4866,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4868,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4875,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4883,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4885,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4902,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4911,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4918,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4926,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4926,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4927,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4928,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 23
    argCount: 3
    argNames:
    - subquery
    - rel
    - extra_used_attrs
    argTypes:
    - Query*
    - RelOptInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4930
      start: 4824
    functionDepth: 2
    functionLinenumber: 4824
    functionLinenumberEnd: 4930
    functionName: remove_unused_subquery_outputs
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - exprTypmod
    - foreach
    - exprType
    - bms_is_member
    - pull_varattnos
    - exprCollation
    - makeNullConst
    - lfirst
    - contain_volatile_functions
    - expression_returns_set
    linkageType: ''
    returnType: void
    signature: "void remove_unused_subquery_outputs(Query *subquery, RelOptInfo *rel,\n\t\t\t\t\t\t\t
      \  Bitmapset *extra_used_attrs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: compute_bitmap_pages
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4944,1
    - Dst: compute_parallel_worker
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4947,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4953,1
    - Dst: create_bitmap_heap_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - root
    - rel
    - bitmapqual
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4955
      start: 4936
    functionDepth: 4
    functionLinenumber: 4936
    functionLinenumberEnd: 4955
    functionName: create_partial_bitmap_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - compute_bitmap_pages
    - compute_parallel_worker
    - create_bitmap_heap_path
    - add_partial_path
    linkageType: ''
    returnType: void
    signature: "void create_partial_bitmap_paths(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t\tPath
      *bitmapqual)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5011,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5029,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5039,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5046,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 4
    argNames:
    - rel
    - heap_pages
    - index_pages
    - max_workers
    argTypes:
    - RelOptInfo*
    - double
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5049
      start: 4972
    functionDepth: 0
    functionLinenumber: 4972
    functionLinenumberEnd: 5049
    functionName: compute_parallel_worker
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 3
    functionsReached:
    - Min
    - Max
    linkageType: ''
    returnType: int
    signature: "int compute_parallel_worker(RelOptInfo *rel, double heap_pages, double
      index_pages,\n\t\t\t\t\t\tint max_workers)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5069,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5073,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5077,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5080,1
    - Dst: generate_partitionwise_join_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5095,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5109,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5112,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5122,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5122,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5128,1
    - Dst: IS_GROUPED_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5128,1
    - Dst: generate_grouped_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5130,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5131,1
    - Dst: pprint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5135,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5138,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5144,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5149,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:5150,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5151
      start: 5060
    functionDepth: 5
    functionLinenumber: 5060
    functionLinenumberEnd: 5151
    functionName: generate_partitionwise_join_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 4
    functionsReached:
    - IS_JOIN_REL
    - Assert
    - IS_OTHER_REL
    - bms_equal
    - IS_PARTITIONED_REL
    - check_stack_depth
    - generate_partitionwise_join_paths
    - generate_grouped_paths
    - pprint
    - lappend
    - list_free
    - IS_GROUPED_REL
    - set_cheapest
    - IS_DUMMY_REL
    - add_paths_to_append_rel
    - mark_dummy_rel
    linkageType: ''
    returnType: void
    signature: void generate_partitionwise_join_paths(PlannerInfo *root, RelOptInfo
      *rel)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:84,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:98,1
    - Dst: has_join_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:101,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:119,1
    - Dst: make_rels_by_clause_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:123,1
    - Dst: make_rels_by_clauseless_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:139,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:166,1
    - Dst: has_join_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:176,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:180,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:186,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:188,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:195,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:196,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:198,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:232,1
    - Dst: make_rels_by_clauseless_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:234,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:260,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 34
    argCount: 2
    argNames:
    - root
    - level
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 262
    functionName: join_search_one_level
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - make_rels_by_clause_joins
    - elog
    - have_relevant_joinclause
    - Assert
    - has_join_restriction
    - lfirst
    - have_join_order_restriction
    - make_rels_by_clauseless_joins
    - bms_overlap
    - make_join_rel
    - foreach_current_index
    linkageType: ''
    returnType: void
    signature: void join_search_one_level(PlannerInfo *root, int level)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:98,1
    - Dst: has_join_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:101,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:119,1
    - Dst: make_rels_by_clause_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:123,1
    - Dst: make_rels_by_clauseless_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:139,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 143
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 246
    functionsReached:
    - make_rels_by_clause_joins
    - has_join_restriction
    - lfirst
    - make_rels_by_clauseless_joins
    - foreach_current_index
    linkageType: ''
    returnType: void
    signature: void foreach(r, joinrels[level - 1])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:166,1
    - Dst: has_join_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:176,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:180,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:186,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:188,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:195,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:196,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:198,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 202
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 246
    functionsReached:
    - have_relevant_joinclause
    - has_join_restriction
    - lfirst
    - have_join_order_restriction
    - make_join_rel
    - bms_overlap
    - foreach_current_index
    linkageType: ''
    returnType: void
    signature: void foreach(r, joinrels[k])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:186,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:188,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:195,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:196,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:198,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 201
    functionName: for_each_from
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 3
    functionsReached:
    - have_relevant_joinclause
    - lfirst
    - make_join_rel
    - have_join_order_restriction
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: void for_each_from(r2, joinrels[other_level], first_rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:232,1
    - Dst: make_rels_by_clauseless_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 237
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 246
    functionsReached:
    - lfirst
    - make_rels_by_clauseless_joins
    linkageType: ''
    returnType: void
    signature: void foreach(r, joinrels[level - 1])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:294,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:296,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:297,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:298,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 4
    argNames:
    - root
    - old_rel
    - other_rels
    - first_rel_idx
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 303
    functionName: make_rels_by_clause_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 2
    functionsReached:
    - have_relevant_joinclause
    - lfirst
    - make_join_rel
    - have_join_order_restriction
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: "void make_rels_by_clause_joins(PlannerInfo *root,\n\t\t\t\t\t\t  RelOptInfo
      *old_rel,\n\t\t\t\t\t\t  List *other_rels,\n\t\t\t\t\t\t  int first_rel_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:294,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:296,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:297,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:298,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 302
    functionName: for_each_from
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 3
    functionsReached:
    - have_relevant_joinclause
    - lfirst
    - make_join_rel
    - have_join_order_restriction
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: void for_each_from(l, other_rels, first_rel_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:327,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:329,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - root
    - old_rel
    - other_rels
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 334
    functionName: make_rels_by_clauseless_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 3
    functionsReached:
    - lfirst
    - make_join_rel
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: "void make_rels_by_clauseless_joins(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \ RelOptInfo *old_rel,\n\t\t\t\t\t\t\t  List *other_rels)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:327,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:329,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 333
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 246
    functionsReached:
    - lfirst
    - make_join_rel
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: void foreach(l, other_rels)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:382,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:384,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:391,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:398,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:404,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:405,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:407,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:408,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:419,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:420,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:422,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:423,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:434,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:435,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:442,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:443,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:451,1
    - Dst: create_unique_paths
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:452,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:483,1
    - Dst: create_unique_paths
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:484,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:512,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:513,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:523,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:572,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:573,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:585,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:597,1
    - Dst: min_join_parameterization
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:614,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:618,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:624,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:626,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:632,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:633,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:635,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:641,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 94
    argCount: 6
    argNames:
    - root
    - rel1
    - rel2
    - joinrelids
    - sjinfo_p
    - reversed_p
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - Relids
    - SpecialJoinInfo**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 650
    functionName: join_is_legal
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 0
    functionsReached:
    - foreach
    - bms_copy
    - bms_add_members
    - lfirst
    - min_join_parameterization
    - bms_overlap
    - bms_equal
    - bms_is_subset
    - create_unique_paths
    linkageType: ''
    returnType: bool
    signature: "bool join_is_legal(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo
      *rel2,\n\t\t\t  Relids joinrelids,\n\t\t\t  SpecialJoinInfo **sjinfo_p, bool
      *reversed_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - sjinfo
    - left_relids
    - right_relids
    argTypes:
    - SpecialJoinInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 663
    functionDepth: 0
    functionLinenumber: 663
    functionLinenumberEnd: 684
    functionName: init_dummy_sjinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void init_dummy_sjinfo(SpecialJoinInfo *sjinfo, Relids left_relids,\n\t\t\t\t
      \ Relids right_relids)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:710,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:710,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:713,1
    - Dst: join_is_legal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:716,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:720,1
    - Dst: add_outer_joins_to_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:728,1
    - Dst: init_dummy_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:748,1
    - Dst: build_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:755,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:763,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:765,1
    - Dst: make_grouped_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:770,1
    - Dst: populate_joinrel_with_paths
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:774,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:777,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - root
    - rel1
    - rel2
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 698
    functionDepth: 4
    functionLinenumber: 698
    functionLinenumberEnd: 780
    functionName: make_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 9
    functionsReached:
    - init_dummy_sjinfo
    - populate_joinrel_with_paths
    - join_is_legal
    - Assert
    - build_join_rel
    - bms_free
    - is_dummy_rel
    - bms_overlap
    - make_grouped_join_rel
    - bms_union
    - add_outer_joins_to_relids
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:815,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:824,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:828,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:837,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:847,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:849,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:855,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:859,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:860,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:861,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:862,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:864,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:867,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:875,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 23
    argCount: 4
    argNames:
    - root
    - input_relids
    - sjinfo
    - pushed_down_joins
    argTypes:
    - PlannerInfo*
    - Relids
    - SpecialJoinInfo*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 882
    functionName: add_outer_joins_to_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - foreach
    - bms_is_member
    - lappend
    - bms_copy
    - lfirst
    - bms_add_members
    - bms_add_member
    - bms_is_subset
    linkageType: ''
    returnType: Relids
    signature: "Relids add_outer_joins_to_relids(PlannerInfo *root, Relids input_relids,\n\t\t\t\t\t\t
      \ SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t  List **pushed_down_joins)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:939,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:940,1
    - Dst: create_rel_agg_info
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:952,1
    - Dst: build_grouped_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:966,1
    - Dst: set_joinrel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:978,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1005,1
    - Dst: IS_GROUPED_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1005,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1008,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1040,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1042,1
    - Dst: set_joinrel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1045,1
    - Dst: populate_joinrel_with_paths
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1056,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 6
    argNames:
    - root
    - rel1
    - rel2
    - joinrel
    - sjinfo
    - restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 915
    functionDepth: 4
    functionLinenumber: 915
    functionLinenumberEnd: 1062
    functionName: make_grouped_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - create_rel_agg_info
    - populate_joinrel_with_paths
    - set_joinrel_size_estimates
    - Assert
    - bms_equal
    - bms_copy
    - IS_GROUPED_REL
    - IS_DUMMY_REL
    - build_grouped_rel
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: "void make_grouped_join_rel(PlannerInfo *root, RelOptInfo *rel1,\n\t\t\t\t\t
      \ RelOptInfo *rel2, RelOptInfo *joinrel,\n\t\t\t\t\t  SpecialJoinInfo *sjinfo,
      List *restrictlist)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1099,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1099,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1100,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1102,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1105,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1108,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1113,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1114,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1116,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1119,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1120,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1121,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1122,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1125,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1130,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1130,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1131,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1133,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1136,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1139,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1151,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1152,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1153,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1163,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1164,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1166,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1166,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1167,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1169,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1172,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1175,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1188,1
    - Dst: create_unique_paths
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1189,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1191,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1191,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1192,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1194,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1197,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1200,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1206,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1207,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1209,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1212,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1213,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1214,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1215,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1218,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1224,1
    - Dst: try_partitionwise_join
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1229,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 63
    argCount: 6
    argNames:
    - root
    - rel1
    - rel2
    - joinrel
    - sjinfo
    - restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1071
    functionDepth: 3
    functionLinenumber: 1071
    functionLinenumberEnd: 1230
    functionName: populate_joinrel_with_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 2
    functionsReached:
    - elog
    - errcode
    - ereport
    - try_partitionwise_join
    - create_unique_paths
    - errmsg
    - is_dummy_rel
    - bms_equal
    - add_paths_to_joinrel
    - bms_is_subset
    - restriction_is_constant_false
    - mark_dummy_rel
    linkageType: ''
    returnType: void
    signature: "void populate_joinrel_with_paths(PlannerInfo *root, RelOptInfo *rel1,\n\t\t\t\t\t\t\tRelOptInfo
      *rel2, RelOptInfo *joinrel,\n\t\t\t\t\t\t\tSpecialJoinInfo *sjinfo, List *restrictlist)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1264,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1265,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1275,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1277,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1279,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1280,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1292,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1294,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1301,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1302,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1307,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1308,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1319,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1320,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1327,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1328,1
    - Dst: has_legal_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1346,1
    - Dst: has_legal_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1347,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 32
    argCount: 3
    argNames:
    - root
    - rel1
    - rel2
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1352
    functionName: have_join_order_restriction
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 6
    functionsReached:
    - foreach
    - has_legal_joinclause
    - lfirst
    - bms_overlap
    - bms_is_subset
    linkageType: ''
    returnType: bool
    signature: "bool have_join_order_restriction(PlannerInfo *root,\n\t\t\t\t\t\t\tRelOptInfo
      *rel1, RelOptInfo *rel2)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1374,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1376,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1378,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1379,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1385,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1392,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1393,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1397,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1398,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1366
    functionDepth: 1
    functionLinenumber: 1366
    functionLinenumberEnd: 1403
    functionName: has_join_restriction
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 3
    functionsReached:
    - foreach
    - lfirst
    - bms_overlap
    - bms_equal
    - bms_is_subset
    linkageType: ''
    returnType: bool
    signature: bool has_join_restriction(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1427,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1429,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1432,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1435,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1442,1
    - Dst: join_is_legal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1444,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1448,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1452,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1422
    functionDepth: 3
    functionLinenumber: 1422
    functionLinenumberEnd: 1457
    functionName: has_legal_joinclause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - join_is_legal
    - foreach
    - have_relevant_joinclause
    - bms_free
    - lfirst
    - bms_overlap
    - bms_union
    linkageType: ''
    returnType: bool
    signature: bool has_legal_joinclause(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1475,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1485,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1487,1
    - Dst: IS_DUMMY_APPEND
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1492,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - rel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1495
    functionName: is_dummy_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 7
    functionsReached:
    - linitial
    - IsA
    - IS_DUMMY_APPEND
    linkageType: ''
    returnType: bool
    signature: bool is_dummy_rel(RelOptInfo *rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1519,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1523,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1523,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1533,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1533,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1538,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - rel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1512
    functionDepth: 4
    functionLinenumber: 1512
    functionLinenumberEnd: 1541
    functionName: mark_dummy_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 7
    functionsReached:
    - GetMemoryChunkContext
    - create_append_path
    - MemoryContextSwitchTo
    - set_cheapest
    - add_path
    - is_dummy_rel
    linkageType: ''
    returnType: void
    signature: void mark_dummy_rel(RelOptInfo *rel)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1571,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1573,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1576,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1583,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - restrictlist
    - joinrel
    - only_pushed_down
    argTypes:
    - List*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1556
    functionDepth: 1
    functionLinenumber: 1556
    functionLinenumberEnd: 1588
    functionName: restriction_is_constant_false
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - IsA
    - RINFO_IS_PUSHED_DOWN
    - DatumGetBool
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: "bool restriction_is_constant_false(List *restrictlist,\n\t\t\t\t\t\t\t
      \ RelOptInfo *joinrel,\n\t\t\t\t\t\t\t  bool only_pushed_down)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1571,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1573,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1576,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1583,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1569
    functionDepth: 1
    functionLinenumber: 1569
    functionLinenumberEnd: 1586
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 251
    functionsReached:
    - IsA
    - RINFO_IS_PUSHED_DOWN
    - DatumGetBool
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, restrictlist)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1615,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1616,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1624,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1631,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1637,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1637,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1640,1
    - Dst: REL_HAS_ALL_PART_PROPS
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1640,1
    - Dst: REL_HAS_ALL_PART_PROPS
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1653,1
    - Dst: compute_partition_bounds
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1655,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1660,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1661,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1684,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1685,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1686,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1687,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1695,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1696,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1723,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1751,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1752,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1752,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1758,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1759,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1759,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1765,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1765,1
    - Dst: build_child_join_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1771,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1776,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1777,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1785,1
    - Dst: build_child_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1793,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1797,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1798,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1803,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1803,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1804,1
    - Dst: make_grouped_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1808,1
    - Dst: populate_joinrel_with_paths
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1813,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1823,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1824,1
    - Dst: free_child_join_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1825,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 82
    argCount: 6
    argNames:
    - root
    - rel1
    - rel2
    - joinrel
    - parent_sjinfo
    - parent_restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1610
    functionDepth: 5
    functionLinenumber: 1610
    functionLinenumberEnd: 1827
    functionName: try_partitionwise_join
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - build_child_join_rel
    - bms_free
    - check_stack_depth
    - list_head
    - bms_add_members
    - IS_DUMMY_REL
    - make_grouped_join_rel
    - find_appinfos_by_relids
    - bms_add_member
    - bms_union
    - compute_partition_bounds
    - elog
    - adjust_child_relids
    - Assert
    - pfree
    - lnext
    - bms_equal
    - build_child_join_sjinfo
    - free_child_join_sjinfo
    - IS_PARTITIONED_REL
    - IS_SIMPLE_REL
    - REL_HAS_ALL_PART_PROPS
    - lfirst_node
    - adjust_appendrel_attrs
    - populate_joinrel_with_paths
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: "void try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo
      *rel2,\n\t\t\t\t\t   RelOptInfo *joinrel, SpecialJoinInfo *parent_sjinfo,\n\t\t\t\t\t
      \  List *parent_restrictlist)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1850,1
    - Dst: init_dummy_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1851,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1855,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1856,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1858,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1861,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1863,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1866,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1868,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1872,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1877,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1878,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 4
    argNames:
    - root
    - parent_sjinfo
    - left_relids
    - right_relids
    argTypes:
    - PlannerInfo*
    - SpecialJoinInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1837
    functionDepth: 2
    functionLinenumber: 1837
    functionLinenumberEnd: 1881
    functionName: build_child_join_sjinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - adjust_appendrel_attrs
    - init_dummy_sjinfo
    - memcpy
    - Assert
    - pfree
    - makeNode
    - find_appinfos_by_relids
    - adjust_child_relids
    linkageType: ''
    returnType: SpecialJoinInfo
    signature: "SpecialJoinInfo *\nbuild_child_join_sjinfo(PlannerInfo *root, SpecialJoinInfo
      *parent_sjinfo,\n\t\t\t\t\t\tRelids left_relids, Relids right_relids)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1902,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1905,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1908,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1913,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1914,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1915,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1916,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1918,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1926,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - child_sjinfo
    - parent_sjinfo
    argTypes:
    - SpecialJoinInfo*
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1927
      start: 1891
    functionDepth: 1
    functionLinenumber: 1891
    functionLinenumberEnd: 1927
    functionName: free_child_join_sjinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - Assert
    - pfree
    - bms_free
    linkageType: ''
    returnType: void
    signature: "void free_child_join_sjinfo(SpecialJoinInfo *child_sjinfo,\n\t\t\t\t\t
      \  SpecialJoinInfo *parent_sjinfo)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1949,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1950,1
    - Dst: partition_bounds_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1965,1
    - Dst: partition_bounds_merge
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1976,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1987,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1991,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1994,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1999,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2000,1
    - Dst: get_matching_part_pairs
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2011,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2013,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2014,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2014,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 7
    argNames:
    - root
    - rel1
    - rel2
    - joinrel
    - parent_sjinfo
    - parts1
    - parts2
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 1933
    functionDepth: 1
    functionLinenumber: 1933
    functionLinenumberEnd: 2017
    functionName: compute_partition_bounds
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - partition_bounds_equal
    - palloc0_array
    - get_matching_part_pairs
    - Assert
    - partition_bounds_merge
    - list_length
    linkageType: ''
    returnType: void
    signature: "void compute_partition_bounds(PlannerInfo *root, RelOptInfo *rel1,\n\t\t\t\t\t\t
      RelOptInfo *rel2, RelOptInfo *joinrel,\n\t\t\t\t\t\t SpecialJoinInfo *parent_sjinfo,\n\t\t\t\t\t\t
      List **parts1, List **parts2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2028,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2029,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2053,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2054,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2062,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2064,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2064,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2064,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2077,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2079,1
    - Dst: find_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2082,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2083,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2089,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2091,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2091,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2091,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2098,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2100,1
    - Dst: find_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2104,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2111,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:2112,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 6
    argNames:
    - root
    - joinrel
    - rel1
    - rel2
    - parts1
    - parts2
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2023
    functionDepth: 3
    functionLinenumber: 2023
    functionLinenumberEnd: 2114
    functionName: get_matching_part_pairs
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - Assert
    - lappend
    - bms_num_members
    - find_base_rel
    - IS_SIMPLE_REL
    - bms_singleton_member
    - bms_intersect
    - find_join_rel
    linkageType: ''
    returnType: void
    signature: "void get_matching_part_pairs(PlannerInfo *root, RelOptInfo *joinrel,\n\t\t\t\t\t\tRelOptInfo
      *rel1, RelOptInfo *rel2,\n\t\t\t\t\t\tList **parts1, List **parts2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 2
    argNames:
    - var
    - rel
    argTypes:
    - Var*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 66
    functionName: IsCTIDVar
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsCTIDVar(Var *var, RelOptInfo *rel)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:86,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:91,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:93,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:94,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:99,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:100,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:105,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:106,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:115,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:116,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 2
    argNames:
    - rinfo
    - rel
    argTypes:
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 120
    functionName: IsBinaryTidClause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached:
    - linitial
    - bms_is_member
    - is_opclause
    - lsecond
    - IsCTIDVar
    - contain_volatile_functions
    - list_length
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool IsBinaryTidClause(RestrictInfo *rinfo, RelOptInfo *rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsBinaryTidClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rinfo
    - rel
    argTypes:
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 140
    functionName: IsTidEqualClause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached:
    - IsBinaryTidClause
    linkageType: ''
    returnType: bool
    signature: bool IsTidEqualClause(RestrictInfo *rinfo, RelOptInfo *rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsBinaryTidClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:155,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - rinfo
    - rel
    argTypes:
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 164
    functionName: IsTidRangeClause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached:
    - IsBinaryTidClause
    linkageType: ''
    returnType: bool
    signature: bool IsTidRangeClause(RestrictInfo *rinfo, RelOptInfo *rel)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:189,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:189,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:190,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:191,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:194,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:195,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:198,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:198,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:199,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 3
    argNames:
    - root
    - rinfo
    - rel
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 206
    functionName: IsTidEqualAnyClause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached:
    - pull_varnos
    - Assert
    - linitial
    - bms_is_member
    - lsecond
    - IsCTIDVar
    - contain_volatile_functions
    - list_length
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool IsTidEqualAnyClause(PlannerInfo *root, RestrictInfo *rinfo, RelOptInfo
      *rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - rinfo
    - rel
    argTypes:
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 226
    functionName: IsCurrentOfClause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool IsCurrentOfClause(RestrictInfo *rinfo, RelOptInfo *rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: restriction_is_securely_promotable
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:248,1
    - Dst: IsTidEqualClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:254,1
    - Dst: IsTidEqualAnyClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:255,1
    - Dst: IsCurrentOfClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:256,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - root
    - rinfo
    - rel
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 234
    functionDepth: 4
    functionLinenumber: 234
    functionLinenumberEnd: 260
    functionName: RestrictInfoIsTidQual
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached:
    - restriction_is_securely_promotable
    - IsCurrentOfClause
    - IsTidEqualAnyClause
    - IsTidEqualClause
    linkageType: ''
    returnType: bool
    signature: bool RestrictInfoIsTidQual(PlannerInfo *root, RestrictInfo *rinfo,
      RelOptInfo *rel)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:292,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:294,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:303,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:305,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:309,1
    - Dst: TidQualFromRestrictInfoList
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:315,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:318,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:324,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:324,1
    - Dst: RestrictInfoIsTidQual
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:325,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:326,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:344,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:353,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:353,1
    - Dst: RestrictInfoIsTidQual
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:360,1
    - Dst: IsCurrentOfClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:363,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:366,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:385,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 4
    argNames:
    - root
    - rlist
    - rel
    - isCurrentOf
    argTypes:
    - PlannerInfo*
    - List*
    - RelOptInfo*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 280
    functionDepth: 5
    functionLinenumber: 280
    functionLinenumberEnd: 387
    functionName: TidQualFromRestrictInfoList
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - list_length
    - Assert
    - castNode
    - IsCurrentOfClause
    - lfirst_node
    - RestrictInfoIsTidQual
    - is_andclause
    - lfirst
    - list_concat
    - TidQualFromRestrictInfoList
    - list_make1
    - restriction_is_or_clause
    linkageType: ''
    returnType: List
    signature: "List *\nTidQualFromRestrictInfoList(PlannerInfo *root, List *rlist,
      RelOptInfo *rel,\n\t\t\t\t\t\t\tbool *isCurrentOf)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:292,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:294,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:303,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:305,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:309,1
    - Dst: TidQualFromRestrictInfoList
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:315,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:318,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:324,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:324,1
    - Dst: RestrictInfoIsTidQual
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:325,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:326,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:344,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:353,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:353,1
    - Dst: RestrictInfoIsTidQual
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:360,1
    - Dst: IsCurrentOfClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:363,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:366,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 290
    functionDepth: 6
    functionLinenumber: 290
    functionLinenumberEnd: 378
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 253
    functionsReached:
    - elog
    - foreach
    - list_length
    - Assert
    - castNode
    - IsCurrentOfClause
    - lfirst_node
    - RestrictInfoIsTidQual
    - is_andclause
    - lfirst
    - list_concat
    - TidQualFromRestrictInfoList
    - list_make1
    - restriction_is_or_clause
    linkageType: ''
    returnType: void
    signature: void foreach(l, rlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:408,1
    - Dst: IsTidRangeClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:410,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rlist
    - rel
    argTypes:
    - List*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 397
    functionDepth: 4
    functionLinenumber: 397
    functionLinenumberEnd: 415
    functionName: TidRangeQualFromRestrictInfoList
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached:
    - lappend
    - IsTidRangeClause
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      TidRangeQualFromRestrictInfoList(List *rlist, RelOptInfo *rel)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:408,1
    - Dst: IsTidRangeClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:410,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 406
    functionDepth: 4
    functionLinenumber: 406
    functionLinenumberEnd: 412
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 253
    functionsReached:
    - lappend
    - IsTidRangeClause
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, rlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:432,1
    - Dst: restriction_is_securely_promotable
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:451,1
    - Dst: IsTidEqualClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:452,1
    - Dst: join_clause_is_movable_to
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:460,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:464,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:467,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:468,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:470,1
    - Dst: create_tidscan_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:470,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 3
    argNames:
    - root
    - rel
    - clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 425
    functionDepth: 4
    functionLinenumber: 425
    functionLinenumberEnd: 473
    functionName: BuildParameterizedTidPaths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached:
    - restriction_is_securely_promotable
    - IsTidEqualClause
    - bms_del_member
    - join_clause_is_movable_to
    - list_make1
    - create_tidscan_path
    - add_path
    - bms_union
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void BuildParameterizedTidPaths(PlannerInfo *root, RelOptInfo *rel,
      List *clauses)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:432,1
    - Dst: restriction_is_securely_promotable
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:451,1
    - Dst: IsTidEqualClause
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:452,1
    - Dst: join_clause_is_movable_to
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:460,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:464,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:467,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:468,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:470,1
    - Dst: create_tidscan_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:470,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 430
    functionDepth: 4
    functionLinenumber: 430
    functionLinenumberEnd: 472
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 253
    functionsReached:
    - restriction_is_securely_promotable
    - IsTidEqualClause
    - bms_del_member
    - join_clause_is_movable_to
    - list_make1
    - create_tidscan_path
    - add_path
    - bms_union
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:485,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:486,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 5
    argNames:
    - root
    - rel
    - ec
    - em
    - arg
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - EquivalenceClass*
    - EquivalenceMember*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 489
    functionName: ec_member_matches_ctid
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 0
    functionsReached:
    - IsA
    - IsCTIDVar
    linkageType: ''
    returnType: bool
    signature: "bool ec_member_matches_ctid(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t
      \  EquivalenceClass *ec, EquivalenceMember *em,\n\t\t\t\t\t   void *arg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TidQualFromRestrictInfoList
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:511,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:522,1
    - Dst: create_tidscan_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:522,1
    - Dst: TidRangeQualFromRestrictInfoList
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:543,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:554,1
    - Dst: create_tidrangescan_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:554,1
    - Dst: compute_parallel_worker
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:564,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:568,1
    - Dst: create_tidrangescan_path
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:568,1
    - Dst: generate_implied_equalities_for_column
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:586,1
    - Dst: BuildParameterizedTidPaths
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:593,1
    - Dst: BuildParameterizedTidPaths
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:601,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 496
    functionDepth: 6
    functionLinenumber: 496
    functionLinenumberEnd: 604
    functionName: create_tidscan_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 1
    functionsReached:
    - compute_parallel_worker
    - generate_implied_equalities_for_column
    - TidRangeQualFromRestrictInfoList
    - add_partial_path
    - BuildParameterizedTidPaths
    - create_tidrangescan_path
    - TidQualFromRestrictInfoList
    - create_tidscan_path
    - add_path
    linkageType: ''
    returnType: bool
    signature: bool create_tidscan_paths(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - idxcollation
    - ','
    - exprcollation
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: IndexCollMatchesExprColl
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IndexCollMatchesExprColl(idxcollation, exprcollation)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:258,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:263,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:276,1
    - Dst: match_restriction_clauses_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:277,1
    - Dst: get_index_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:284,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:293,1
    - Dst: match_join_clauses_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:294,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:301,1
    - Dst: match_eclass_clauses_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:302,1
    - Dst: consider_index_join_clauses
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:310,1
    - Dst: generate_bitmap_or_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:321,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:323,1
    - Dst: generate_bitmap_or_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:329,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:331,1
    - Dst: choose_bitmap_and
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:345,1
    - Dst: create_bitmap_heap_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:346,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:348,1
    - Dst: create_partial_bitmap_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:352,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:373,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:374,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:376,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:395,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:397,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:397,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:398,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:405,1
    - Dst: choose_bitmap_and
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:408,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:411,1
    - Dst: get_loop_count
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:412,1
    - Dst: create_bitmap_heap_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:413,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:415,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 238
    functionDepth: 5
    functionLinenumber: 238
    functionLinenumberEnd: 418
    functionName: create_index_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - list_append_unique
    - create_bitmap_heap_path
    - list_concat
    - bms_is_subset
    - get_loop_count
    - foreach
    - Assert
    - match_restriction_clauses_to_index
    - consider_index_join_clauses
    - add_path
    - lappend
    - MemSet
    - lfirst
    - match_join_clauses_to_index
    - get_index_paths
    - match_eclass_clauses_to_index
    - generate_bitmap_or_paths
    - choose_bitmap_and
    - PATH_REQ_OUTER
    - create_partial_bitmap_paths
    linkageType: ''
    returnType: void
    signature: void create_index_paths(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:373,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:374,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 378
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 254
    functionsReached:
    - list_append_unique
    - lfirst
    - PATH_REQ_OUTER
    linkageType: ''
    returnType: void
    signature: void foreach(lc, bitjoinpaths)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:395,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:397,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:397,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:398,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:405,1
    - Dst: choose_bitmap_and
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:408,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:411,1
    - Dst: get_loop_count
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:412,1
    - Dst: create_bitmap_heap_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:413,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 381
    functionDepth: 4
    functionLinenumber: 381
    functionLinenumberEnd: 416
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 254
    functionsReached:
    - get_loop_count
    - lappend
    - create_bitmap_heap_path
    - lfirst
    - list_concat
    - PATH_REQ_OUTER
    - choose_bitmap_and
    - bms_is_subset
    - add_path
    linkageType: ''
    returnType: void
    signature: void foreach(lc, all_path_outers)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:395,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:397,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:397,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 399
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 254
    functionsReached:
    - lappend
    - lfirst
    - bms_is_subset
    - PATH_REQ_OUTER
    linkageType: ''
    returnType: void
    signature: void foreach(lcp, bitjoinpaths)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:471,1
    - Dst: consider_index_join_outer_rels
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:472,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:479,1
    - Dst: consider_index_join_outer_rels
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 7
    argNames:
    - root
    - rel
    - index
    - rclauseset
    - jclauseset
    - eclauseset
    - bitindexpaths
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    - IndexClauseSet*
    - IndexClauseSet*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 487
    functionName: consider_index_join_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - list_length
    - consider_index_join_outer_rels
    linkageType: ''
    returnType: void
    signature: "void consider_index_join_clauses(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t\tIndexOptInfo
      *index,\n\t\t\t\t\t\t\tIndexClauseSet *rclauseset,\n\t\t\t\t\t\t\tIndexClauseSet
      *jclauseset,\n\t\t\t\t\t\t\tIndexClauseSet *eclauseset,\n\t\t\t\t\t\t\tList
      **bitindexpaths)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:517,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:523,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:539,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:542,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:550,1
    - Dst: eclass_already_used
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:562,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:571,1
    - Dst: get_join_index_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:575,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:578,1
    - Dst: get_join_index_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:583,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 10
    argNames:
    - root
    - rel
    - index
    - rclauseset
    - jclauseset
    - eclauseset
    - bitindexpaths
    - indexjoinclauses
    - considered_clauses
    - considered_relids
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    - IndexClauseSet*
    - IndexClauseSet*
    - List**
    - List*
    - int
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 501
    functionDepth: 3
    functionLinenumber: 501
    functionLinenumberEnd: 589
    functionName: consider_index_join_outer_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - list_length
    - list_member
    - get_join_index_paths
    - eclass_already_used
    - lfirst
    - bms_subset_compare
    - list_nth
    - bms_union
    linkageType: ''
    returnType: void
    signature: "void consider_index_join_outer_rels(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t\t   IndexOptInfo *index,\n\t\t\t\t\t\t\t   IndexClauseSet
      *rclauseset,\n\t\t\t\t\t\t\t   IndexClauseSet *jclauseset,\n\t\t\t\t\t\t\t   IndexClauseSet
      *eclauseset,\n\t\t\t\t\t\t\t   List **bitindexpaths,\n\t\t\t\t\t\t\t   List
      *indexjoinclauses,\n\t\t\t\t\t\t\t   int considered_clauses,\n\t\t\t\t\t\t\t
      \  List **considered_relids)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:517,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:523,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:539,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:542,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:550,1
    - Dst: eclass_already_used
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:562,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:571,1
    - Dst: get_join_index_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:575,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:578,1
    - Dst: get_join_index_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:583,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 515
    functionDepth: 3
    functionLinenumber: 515
    functionLinenumberEnd: 588
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 254
    functionsReached:
    - list_length
    - list_member
    - get_join_index_paths
    - eclass_already_used
    - lfirst
    - bms_subset_compare
    - list_nth
    - bms_union
    linkageType: ''
    returnType: void
    signature: void foreach(lc, indexjoinclauses)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:618,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:622,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:629,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:631,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:633,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:635,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:644,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:646,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:648,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:651,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:658,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:666,1
    - Dst: get_index_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:669,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:674,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 9
    argNames:
    - root
    - rel
    - index
    - rclauseset
    - jclauseset
    - eclauseset
    - bitindexpaths
    - relids
    - considered_relids
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    - IndexClauseSet*
    - IndexClauseSet*
    - List**
    - Relids
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 675
    functionName: get_join_index_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - foreach
    - list_member
    - Assert
    - lappend
    - MemSet
    - lfirst
    - list_concat
    - get_index_paths
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: "void get_join_index_paths(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t
      IndexOptInfo *index,\n\t\t\t\t\t IndexClauseSet *rclauseset,\n\t\t\t\t\t IndexClauseSet
      *jclauseset,\n\t\t\t\t\t IndexClauseSet *eclauseset,\n\t\t\t\t\t List **bitindexpaths,\n\t\t\t\t\t
      Relids relids,\n\t\t\t\t\t List **considered_relids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:690,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:694,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - parent_ec
    - oldrelids
    - indexjoinclauses
    argTypes:
    - EquivalenceClass*
    - Relids
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 698
    functionName: eclass_already_used
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - lfirst
    - bms_is_subset
    linkageType: ''
    returnType: bool
    signature: "bool eclass_already_used(EquivalenceClass *parent_ec, Relids oldrelids,\n\t\t\t\t\tList
      *indexjoinclauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:690,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:694,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 696
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 255
    functionsReached:
    - lfirst
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void foreach(lc, indexjoinclauses)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: build_index_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:727,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:747,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:750,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:755,1
    - Dst: build_index_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:765,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:770,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 5
    argNames:
    - root
    - rel
    - index
    - clauses
    - bitindexpaths
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 714
    functionDepth: 3
    functionLinenumber: 714
    functionLinenumberEnd: 772
    functionName: get_index_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - build_index_paths
    - lappend
    - lfirst
    - list_concat
    - add_path
    linkageType: ''
    returnType: void
    signature: "void get_index_paths(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\tIndexOptInfo
      *index, IndexClauseSet *clauses,\n\t\t\t\tList **bitindexpaths)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:747,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:750,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:755,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 745
    functionDepth: 3
    functionLinenumber: 745
    functionLinenumberEnd: 756
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 255
    functionsReached:
    - lfirst
    - add_path
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, indexpaths)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:829,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:862,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:867,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:869,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:873,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:887,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:888,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:905,1
    - Dst: get_loop_count
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:908,1
    - Dst: has_useful_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:916,1
    - Dst: build_index_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:920,1
    - Dst: truncate_useless_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:922,1
    - Dst: match_pathkeys_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:935,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:938,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:938,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:941,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:942,1
    - Dst: check_index_only
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:957,1
    - Dst: create_index_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:968,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:978,1
    - Dst: create_index_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:988,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1004,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1006,1
    - Dst: build_index_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1015,1
    - Dst: truncate_useless_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1017,1
    - Dst: create_index_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1021,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1031,1
    - Dst: create_index_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1038,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1054,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1056,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 74
    argCount: 7
    argNames:
    - root
    - rel
    - index
    - clauses
    - useful_predicate
    - scantype
    - skip_nonnative_saop
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    - bool
    - ScanTypeControl
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 808
    functionDepth: 4
    functionLinenumber: 808
    functionLinenumberEnd: 1062
    functionName: build_index_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - bms_copy
    - has_useful_pathkeys
    - bms_add_members
    - check_index_only
    - get_loop_count
    - foreach
    - Assert
    - pfree
    - list_length
    - create_index_path
    - truncate_useless_pathkeys
    - lappend
    - lfirst
    - match_pathkeys_to_index
    - list_copy_head
    - add_partial_path
    - IsA
    - build_index_pathkeys
    linkageType: ''
    returnType: List
    signature: "List *\nbuild_index_paths(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t
      \ IndexOptInfo *index, IndexClauseSet *clauses,\n\t\t\t\t  bool useful_predicate,\n\t\t\t\t
      \ ScanTypeControl scantype,\n\t\t\t\t  bool *skip_nonnative_saop)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1098,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1100,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1132,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1134,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1137,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1145,1
    - Dst: match_clauses_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1146,1
    - Dst: match_clauses_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1158,1
    - Dst: build_index_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1163,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1168,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 4
    argNames:
    - root
    - rel
    - clauses
    - other_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1090
    functionDepth: 5
    functionLinenumber: 1090
    functionLinenumberEnd: 1172
    functionName: build_paths_for_OR
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - build_index_paths
    - foreach
    - list_concat_copy
    - match_clauses_to_index
    - MemSet
    - lfirst
    - list_concat
    - predicate_implied_by
    linkageType: ''
    returnType: List
    signature: "List *\nbuild_paths_for_OR(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t
      \  List *clauses, List *other_clauses)"
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1198
    functionDepth: 0
    functionLinenumber: 1198
    functionLinenumberEnd: 1230
    functionName: or_arg_index_match_cmp
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int or_arg_index_match_cmp(const void *a, const void *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1236
    functionDepth: 0
    functionLinenumber: 1236
    functionLinenumberEnd: 1253
    functionName: or_arg_index_match_cmp_group
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int or_arg_index_match_cmp_group(const void *a, const void *b)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1283,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1283,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1285,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1293,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1296,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1314,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1317,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1320,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1327,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1336,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1337,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1340,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1341,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1351,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1352,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1353,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1355,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1357,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1364,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1365,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1366,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1385,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1396,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1423,1
    - Dst: qsort
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1438,1
    - Dst: qsort
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1459,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1482,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1496,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1501,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1503,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1504,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1505,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1507,1
    - Dst: make_plain_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1511,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1512,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1513,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1522,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1528,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 90
    argCount: 3
    argNames:
    - root
    - rel
    - rinfo
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1269
    functionDepth: 3
    functionLinenumber: 1269
    functionLinenumberEnd: 1530
    functionName: group_similar_or_args
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - get_leftop
    - get_rightop
    - palloc_array
    - qsort
    - foreach
    - Assert
    - pfree
    - bms_is_member
    - OidIsValid
    - list_length
    - make_plain_restrictinfo
    - lappend
    - lfirst
    - get_commutator
    - match_index_to_operand
    - make_orclause
    - castNode
    - contain_volatile_functions
    - list_nth
    - IsA
    linkageType: ''
    returnType: List
    signature: 'List *

      group_similar_or_args(PlannerInfo *root, RelOptInfo *rel, RestrictInfo *rinfo)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1296,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1314,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1317,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1320,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1327,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1336,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1337,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1340,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1341,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1351,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1352,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1353,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1355,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1357,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1364,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1365,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1366,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1385,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1396,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1294
    functionDepth: 2
    functionLinenumber: 1294
    functionLinenumberEnd: 1415
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 259
    functionsReached:
    - match_index_to_operand
    - get_leftop
    - get_rightop
    - foreach
    - castNode
    - bms_is_member
    - OidIsValid
    - lfirst
    - contain_volatile_functions
    - get_commutator
    - list_length
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, orargs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1563,1
    - Dst: build_paths_for_OR
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1564,1
    - Dst: choose_bitmap_and
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1569,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1571,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1588,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1588,1
    - Dst: build_paths_for_OR
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1590,1
    - Dst: choose_bitmap_and
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1600,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1602,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 4
    argNames:
    - root
    - rel
    - ri
    - other_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RestrictInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1546
    functionDepth: 6
    functionLinenumber: 1546
    functionLinenumberEnd: 1614
    functionName: make_bitmap_paths_for_or_group
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - lappend
    - lfirst
    - choose_bitmap_and
    - list_make1
    - build_paths_for_OR
    linkageType: ''
    returnType: List
    signature: "List *\nmake_bitmap_paths_for_or_group(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t\t   RestrictInfo *ri, List *other_clauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1588,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1588,1
    - Dst: build_paths_for_OR
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1590,1
    - Dst: choose_bitmap_and
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1600,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1602,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1586
    functionDepth: 6
    functionLinenumber: 1586
    functionLinenumberEnd: 1603
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 259
    functionsReached:
    - lappend
    - lfirst
    - choose_bitmap_and
    - list_make1
    - build_paths_for_OR
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1639,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1643,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1651,1
    - Dst: group_similar_or_args
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1665,1
    - Dst: list_delete
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1678,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1678,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1683,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1687,1
    - Dst: build_paths_for_OR
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1691,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1696,1
    - Dst: generate_bitmap_or_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1697,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1701,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1701,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1703,1
    - Dst: make_bitmap_paths_for_or_group
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1709,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1720,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1726,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1729,1
    - Dst: build_paths_for_OR
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1731,1
    - Dst: choose_bitmap_and
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1750,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1751,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1755,1
    - Dst: create_bitmap_or_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1763,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1764,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 4
    argNames:
    - root
    - rel
    - clauses
    - other_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1627
    functionDepth: 7
    functionLinenumber: 1627
    functionLinenumberEnd: 1769
    functionName: generate_bitmap_or_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - list_delete
    - generate_bitmap_or_paths
    - group_similar_or_args
    - list_free
    - create_bitmap_or_path
    - castNode
    - list_concat_copy
    - lappend
    - lfirst_node
    - make_bitmap_paths_for_or_group
    - lfirst
    - is_andclause
    - list_copy
    - list_concat
    - choose_bitmap_and
    - list_make1
    - build_paths_for_OR
    - restriction_is_or_clause
    linkageType: ''
    returnType: List
    signature: "List *\ngenerate_bitmap_or_paths(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      List *clauses, List *other_clauses)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1643,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1651,1
    - Dst: group_similar_or_args
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1665,1
    - Dst: list_delete
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1678,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1678,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1683,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1687,1
    - Dst: build_paths_for_OR
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1691,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1696,1
    - Dst: generate_bitmap_or_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1697,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1701,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1701,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1703,1
    - Dst: make_bitmap_paths_for_or_group
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1709,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1720,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1726,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1729,1
    - Dst: build_paths_for_OR
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1731,1
    - Dst: choose_bitmap_and
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1750,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1751,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1755,1
    - Dst: create_bitmap_or_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1763,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1764,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1641
    functionDepth: 8
    functionLinenumber: 1641
    functionLinenumberEnd: 1766
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 259
    functionsReached:
    - list_delete
    - generate_bitmap_or_paths
    - group_similar_or_args
    - list_free
    - create_bitmap_or_path
    - castNode
    - lappend
    - lfirst_node
    - make_bitmap_paths_for_or_group
    - lfirst
    - is_andclause
    - list_copy
    - list_concat
    - choose_bitmap_and
    - list_make1
    - build_paths_for_OR
    - restriction_is_or_clause
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauses)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1683,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1687,1
    - Dst: build_paths_for_OR
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1691,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1696,1
    - Dst: generate_bitmap_or_paths
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1697,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1701,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1701,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1703,1
    - Dst: make_bitmap_paths_for_or_group
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1709,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1720,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1726,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1729,1
    - Dst: build_paths_for_OR
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1731,1
    - Dst: choose_bitmap_and
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1750,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1751,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1681
    functionDepth: 8
    functionLinenumber: 1681
    functionLinenumberEnd: 1752
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 259
    functionsReached:
    - generate_bitmap_or_paths
    - castNode
    - lappend
    - make_bitmap_paths_for_or_group
    - is_andclause
    - lfirst
    - list_concat
    - choose_bitmap_and
    - list_make1
    - build_paths_for_OR
    - restriction_is_or_clause
    linkageType: ''
    returnType: void
    signature: void foreach(j, groupedArgs)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1786,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1796,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1798,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1855,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1860,1
    - Dst: classify_index_clause_usage
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1862,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1874,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1885,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1886,1
    - Dst: qsort
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1902,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1921,1
    - Dst: bitmap_scan_cost_est
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1922,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1923,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1924,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1932,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1939,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1941,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1943,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1943,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1953,1
    - Dst: bitmap_and_cost_est
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1954,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1959,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1960,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1961,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1967,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1967,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1979,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1982,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1983,1
    - Dst: create_bitmap_and_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1984,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 68
    argCount: 3
    argNames:
    - root
    - rel
    - paths
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1783
    functionDepth: 4
    functionLinenumber: 1783
    functionLinenumberEnd: 1985
    functionName: choose_bitmap_and
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 7
    functionsReached:
    - classify_index_clause_usage
    - list_truncate
    - palloc_array
    - bms_copy
    - create_bitmap_and_path
    - list_concat
    - cost_bitmap_tree_node
    - bms_add_members
    - predicate_implied_by
    - qsort
    - bitmap_and_cost_est
    - foreach
    - Assert
    - linitial
    - list_concat_copy
    - bms_equal
    - list_length
    - list_free
    - lappend
    - lfirst
    - list_make1
    - bitmap_scan_cost_est
    - bms_overlap
    linkageType: ''
    returnType: Path
    signature: 'Path *

      choose_bitmap_and(PlannerInfo *root, RelOptInfo *rel, List *paths)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1860,1
    - Dst: classify_index_clause_usage
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1862,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1874,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1885,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1886,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1858
    functionDepth: 1
    functionLinenumber: 1858
    functionLinenumberEnd: 1895
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 260
    functionsReached:
    - bms_equal
    - classify_index_clause_usage
    - lfirst
    - cost_bitmap_tree_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, paths)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1998,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1999,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 1988
    functionDepth: 1
    functionLinenumber: 1988
    functionLinenumberEnd: 2015
    functionName: path_usage_comparator
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - cost_bitmap_tree_node
    linkageType: ''
    returnType: int
    signature: int path_usage_comparator(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cost_bitmap_heap_scan
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2042,1
    - Dst: get_loop_count
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2045,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - ipath
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2021
    functionDepth: 1
    functionLinenumber: 2021
    functionLinenumberEnd: 2049
    functionName: bitmap_scan_cost_est
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - get_loop_count
    - PATH_REQ_OUTER
    - cost_bitmap_heap_scan
    linkageType: ''
    returnType: Cost
    signature: Cost bitmap_scan_cost_est(PlannerInfo *root, RelOptInfo *rel, Path
      *ipath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_bitmap_and_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2064,1
    - Dst: bitmap_scan_cost_est
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - root
    - rel
    - paths
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2055
    functionDepth: 4
    functionLinenumber: 2055
    functionLinenumberEnd: 2067
    functionName: bitmap_and_cost_est
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - create_bitmap_and_path
    - bitmap_scan_cost_est
    linkageType: ''
    returnType: Cost
    signature: Cost bitmap_and_cost_est(PlannerInfo *root, RelOptInfo *rel, List *paths)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2091,1
    - Dst: find_indexpath_quals
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2097,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2107,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2107,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2116,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2118,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2120,1
    - Dst: find_list_position
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2121,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2123,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2125,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2127,1
    - Dst: find_list_position
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - path
    - clauselist
    argTypes:
    - Path*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2134
      start: 2084
    functionDepth: 1
    functionLinenumber: 2084
    functionLinenumberEnd: 2134
    functionName: classify_index_clause_usage
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - find_list_position
    - foreach
    - lfirst
    - find_indexpath_quals
    - palloc_object
    - list_length
    - bms_add_member
    linkageType: ''
    returnType: PathClauseUsage
    signature: 'PathClauseUsage *

      classify_index_clause_usage(Path *path, List **clauselist)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2155,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2160,1
    - Dst: find_indexpath_quals
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2162,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2162,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2165,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2170,1
    - Dst: find_indexpath_quals
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2172,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2172,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2175,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2180,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2182,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2184,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2186,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2189,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - bitmapqual
    - quals
    - preds
    argTypes:
    - Path*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2190
      start: 2152
    functionDepth: 1
    functionLinenumber: 2152
    functionLinenumberEnd: 2190
    functionName: find_indexpath_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - lappend
    - lfirst
    - list_concat
    - find_indexpath_quals
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void find_indexpath_quals(Path *bitmapqual, List **quals, List **preds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2206,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2208,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2210,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - node
    - nodelist
    argTypes:
    - Node*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2218
      start: 2199
    functionDepth: 1
    functionLinenumber: 2199
    functionLinenumberEnd: 2218
    functionName: find_list_position
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - equal
    - lfirst
    - foreach
    - lappend
    linkageType: ''
    returnType: int
    signature: int find_list_position(Node *node, List **nodelist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2248,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2261,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2263,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2265,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2285,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2290,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2292,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2293,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - rel
    - index
    argTypes:
    - RelOptInfo*
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2225
    functionDepth: 2
    functionLinenumber: 2225
    functionLinenumberEnd: 2296
    functionName: check_index_only
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - foreach
    - bms_free
    - pull_varattnos
    - lfirst
    - bms_is_subset
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: bool check_index_only(RelOptInfo *rel, IndexOptInfo *index)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2336,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2347,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2350,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2354,1
    - Dst: adjust_rowcount_for_semijoins
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2357,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 3
    argNames:
    - root
    - cur_relid
    - outer_relids
    argTypes:
    - PlannerInfo*
    - Index
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2324
    functionDepth: 1
    functionLinenumber: 2324
    functionLinenumberEnd: 2368
    functionName: get_loop_count
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 4
    functionsReached:
    - bms_next_member
    - IS_DUMMY_REL
    - adjust_rowcount_for_semijoins
    - Assert
    linkageType: ''
    returnType: double
    signature: double get_loop_count(PlannerInfo *root, Index cur_relid, Relids outer_relids)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2385,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2387,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2390,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2391,1
    - Dst: approximate_joinrel_size
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2397,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2398,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - root
    - cur_relid
    - outer_relid
    - rowcount
    argTypes:
    - PlannerInfo*
    - Index
    - Index
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2408
      start: 2377
    functionDepth: 1
    functionLinenumber: 2377
    functionLinenumberEnd: 2408
    functionName: adjust_rowcount_for_semijoins
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - foreach
    - approximate_joinrel_size
    - bms_is_member
    - lfirst
    - estimate_num_groups
    linkageType: ''
    returnType: double
    signature: "double adjust_rowcount_for_semijoins(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \ Index cur_relid,\n\t\t\t\t\t\t\t  Index outer_relid,\n\t\t\t\t\t\t\t  double
      rowcount)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2438,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2441,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2445,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2451
      start: 2421
    functionDepth: 1
    functionLinenumber: 2421
    functionLinenumberEnd: 2451
    functionName: approximate_joinrel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - bms_next_member
    - IS_DUMMY_REL
    - Assert
    linkageType: ''
    returnType: double
    signature: double approximate_joinrel_size(PlannerInfo *root, Relids relids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: match_clauses_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - root
    - index
    - clauseset
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2470
      start: 2463
    functionDepth: 1
    functionLinenumber: 2463
    functionLinenumberEnd: 2470
    functionName: match_restriction_clauses_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_clauses_to_index
    linkageType: ''
    returnType: void
    signature: "void match_restriction_clauses_to_index(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      \  IndexOptInfo *index,\n\t\t\t\t\t\t\t\t   IndexClauseSet *clauseset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2488,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2490,1
    - Dst: join_clause_is_movable_to
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2493,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2501,1
    - Dst: list_append_unique_ptr
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2502,1
    - Dst: match_clause_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - root
    - rel
    - index
    - clauseset
    - joinorclauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2506
      start: 2479
    functionDepth: 2
    functionLinenumber: 2479
    functionLinenumberEnd: 2506
    functionName: match_join_clauses_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - foreach
    - join_clause_is_movable_to
    - match_clause_to_index
    - list_append_unique_ptr
    - lfirst
    - restriction_is_or_clause
    linkageType: ''
    returnType: void
    signature: "void match_join_clauses_to_index(PlannerInfo *root,\n\t\t\t\t\t\t\tRelOptInfo
      *rel, IndexOptInfo *index,\n\t\t\t\t\t\t\tIndexClauseSet *clauseset,\n\t\t\t\t\t\t\tList
      **joinorclauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: generate_implied_equalities_for_column
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2531,1
    - Dst: match_clauses_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2542,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - root
    - index
    - clauseset
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2544
      start: 2513
    functionDepth: 1
    functionLinenumber: 2513
    functionLinenumberEnd: 2544
    functionName: match_eclass_clauses_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - generate_implied_equalities_for_column
    - match_clauses_to_index
    linkageType: ''
    returnType: void
    signature: "void match_eclass_clauses_to_index(PlannerInfo *root, IndexOptInfo
      *index,\n\t\t\t\t\t\t\t  IndexClauseSet *clauseset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2561,1
    - Dst: match_clause_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - root
    - clauses
    - index
    - clauseset
    argTypes:
    - PlannerInfo*
    - List*
    - IndexOptInfo*
    - IndexClauseSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2551
    functionDepth: 1
    functionLinenumber: 2551
    functionLinenumberEnd: 2565
    functionName: match_clauses_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 3
    functionsReached:
    - match_clause_to_index
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void match_clauses_to_index(PlannerInfo *root,\n\t\t\t\t\t   List
      *clauses,\n\t\t\t\t\t   IndexOptInfo *index,\n\t\t\t\t\t   IndexClauseSet *clauseset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2561,1
    - Dst: match_clause_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2564
      start: 2559
    functionDepth: 1
    functionLinenumber: 2559
    functionLinenumberEnd: 2564
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 266
    functionsReached:
    - match_clause_to_index
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauses)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: restriction_is_securely_promotable
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2605,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2615,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2617,1
    - Dst: match_clause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2624,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2632,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - root
    - rinfo
    - index
    - clauseset
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2637
      start: 2584
    functionDepth: 1
    functionLinenumber: 2584
    functionLinenumberEnd: 2637
    functionName: match_clause_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 3
    functionsReached:
    - restriction_is_securely_promotable
    - foreach
    - lappend
    - lfirst
    - match_clause_to_indexcol
    linkageType: ''
    returnType: void
    signature: "void match_clause_to_index(PlannerInfo *root,\n\t\t\t\t\t  RestrictInfo
      *rinfo,\n\t\t\t\t\t  IndexOptInfo *index,\n\t\t\t\t\t  IndexClauseSet *clauseset)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2718,1
    - Dst: IsBooleanOpfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2729,1
    - Dst: match_boolean_index_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2731,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2741,1
    - Dst: match_opclause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2743,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2745,1
    - Dst: match_funcclause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2747,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2749,1
    - Dst: match_saopclause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2751,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2753,1
    - Dst: match_rowcompare_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2755,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2757,1
    - Dst: match_orclause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2759,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2761,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2766,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2768,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2770,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2779
      start: 2708
    functionDepth: 1
    functionLinenumber: 2708
    functionLinenumberEnd: 2779
    functionName: match_clause_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - IsBooleanOpfamily
    - Assert
    - match_boolean_index_clause
    - match_orclause_to_indexcol
    - makeNode
    - match_opclause_to_indexcol
    - match_funcclause_to_indexcol
    - match_saopclause_to_indexcol
    - restriction_is_or_clause
    - list_make1
    - IsA
    - match_rowcompare_to_indexcol
    linkageType: ''
    returnType: IndexClause
    signature: "IndexClause *\nmatch_clause_to_indexcol(PlannerInfo *root,\n\t\t\t\t\t\t
      RestrictInfo *rinfo,\n\t\t\t\t\t\t int indexcol,\n\t\t\t\t\t\t IndexOptInfo
      *index)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsBuiltinBooleanOpfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2793,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2795,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - opfamily
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2796
      start: 2789
    functionDepth: 1
    functionLinenumber: 2789
    functionLinenumberEnd: 2796
    functionName: IsBooleanOpfamily
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - op_in_opfamily
    - IsBuiltinBooleanOpfamily
    linkageType: ''
    returnType: bool
    signature: bool IsBooleanOpfamily(Oid opfamily)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2824,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2827,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2829,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2833,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2835,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2837,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2840,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2842,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2852,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2858,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2861,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2863,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2867,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2870,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2872,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2883,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2886,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2886,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2894
      start: 2814
    functionDepth: 2
    functionLinenumber: 2814
    functionLinenumberEnd: 2894
    functionName: match_boolean_index_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - makeBoolConst
    - is_notclause
    - makeNode
    - make_simple_restrictinfo
    - make_opclause
    - list_make1
    - IsA
    - get_notclausearg
    linkageType: ''
    returnType: IndexClause
    signature: "IndexClause *\nmatch_boolean_index_clause(PlannerInfo *root,\n\t\t\t\t\t\t
      \  RestrictInfo *rinfo,\n\t\t\t\t\t\t   int indexcol,\n\t\t\t\t\t\t   IndexOptInfo
      *index)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2922,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2925,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2926,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2943,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2944,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2945,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2947,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2948,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2950,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2952,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2963,1
    - Dst: get_index_clause_from_support
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2964,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2972,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2973,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2974,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2976,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2978,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2980,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2981,1
    - Dst: commute_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2986,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2989,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2991,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3003,1
    - Dst: get_index_clause_from_support
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3004,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3013
      start: 2901
    functionDepth: 2
    functionLinenumber: 2901
    functionLinenumberEnd: 3013
    functionName: match_opclause_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - op_in_opfamily
    - linitial
    - set_opfuncid
    - bms_is_member
    - OidIsValid
    - makeNode
    - IndexCollMatchesExprColl
    - lsecond
    - contain_volatile_functions
    - get_index_clause_from_support
    - get_commutator
    - list_length
    - list_make1
    - commute_restrictinfo
    linkageType: ''
    returnType: IndexClause
    signature: "IndexClause *\nmatch_opclause_to_indexcol(PlannerInfo *root,\n\t\t\t\t\t\t
      \  RestrictInfo *rinfo,\n\t\t\t\t\t\t   int indexcol,\n\t\t\t\t\t\t   IndexOptInfo
      *index)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3041,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3043,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3045,1
    - Dst: get_index_clause_from_support
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3047,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3059
      start: 3020
    functionDepth: 1
    functionLinenumber: 3020
    functionLinenumberEnd: 3059
    functionName: match_funcclause_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - get_index_clause_from_support
    - lfirst
    - foreach
    linkageType: ''
    returnType: IndexClause
    signature: "IndexClause *\nmatch_funcclause_to_indexcol(PlannerInfo *root,\n\t\t\t\t\t\t\t
      RestrictInfo *rinfo,\n\t\t\t\t\t\t\t int indexcol,\n\t\t\t\t\t\t\t IndexOptInfo
      *index)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_func_support
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3074,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3078,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3094,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3094,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3095,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3099,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3109,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3111,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 6
    argNames:
    - root
    - rinfo
    - funcid
    - indexarg
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - Oid
    - int
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3125
      start: 3066
    functionDepth: 1
    functionLinenumber: 3066
    functionLinenumberEnd: 3125
    functionName: get_index_clause_from_support
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - lappend
    - makeNode
    - get_func_support
    - make_simple_restrictinfo
    - OidFunctionCall1
    - lfirst
    - PointerGetDatum
    - OidIsValid
    - DatumGetPointer
    linkageType: ''
    returnType: IndexClause
    signature: "IndexClause *\nget_index_clause_from_support(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \ RestrictInfo *rinfo,\n\t\t\t\t\t\t\t  Oid funcid,\n\t\t\t\t\t\t\t  int indexarg,\n\t\t\t\t\t\t\t
      \ int indexcol,\n\t\t\t\t\t\t\t  IndexOptInfo *index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3109,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3111,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3113
      start: 3107
    functionDepth: 1
    functionLinenumber: 3107
    functionLinenumberEnd: 3113
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 268
    functionsReached:
    - make_simple_restrictinfo
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, sresult)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3151,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3152,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3153,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3164,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3165,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3166,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3168,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3169,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3171,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3174,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3188
      start: 3132
    functionDepth: 2
    functionLinenumber: 3132
    functionLinenumberEnd: 3188
    functionName: match_saopclause_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - pull_varnos
    - op_in_opfamily
    - linitial
    - bms_is_member
    - makeNode
    - IndexCollMatchesExprColl
    - lsecond
    - contain_volatile_functions
    - list_make1
    linkageType: ''
    returnType: IndexClause
    signature: "IndexClause *\nmatch_saopclause_to_indexcol(PlannerInfo *root,\n\t\t\t\t\t\t\t
      RestrictInfo *rinfo,\n\t\t\t\t\t\t\t int indexcol,\n\t\t\t\t\t\t\t IndexOptInfo
      *index)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3234,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3235,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3236,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3237,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3240,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3246,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3247,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3247,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3248,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3253,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3254,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3254,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3255,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3258,1
    - Dst: get_op_opfamily_strategy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3267,1
    - Dst: expand_indexqual_rowcompare
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3273,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3282
      start: 3200
    functionDepth: 2
    functionLinenumber: 3200
    functionLinenumberEnd: 3282
    functionName: match_rowcompare_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - pull_varnos
    - linitial
    - bms_is_member
    - get_op_opfamily_strategy
    - linitial_oid
    - IndexCollMatchesExprColl
    - contain_volatile_functions
    - get_commutator
    - expand_indexqual_rowcompare
    linkageType: ''
    returnType: IndexClause
    signature: "IndexClause *\nmatch_rowcompare_to_indexcol(PlannerInfo *root,\n\t\t\t\t\t\t\t
      RestrictInfo *rinfo,\n\t\t\t\t\t\t\t int indexcol,\n\t\t\t\t\t\t\t IndexOptInfo
      *index)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3325,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3327,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3335,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3339,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3346,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3354,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3355,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3356,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3357,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3358,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3363,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3364,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3365,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3367,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3368,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3389,1
    - Dst: get_array_type
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3390,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3398,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3400,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3401,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3408,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3417,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3425,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3428,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3439,1
    - Dst: make_SAOP_expr
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3454,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3459,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3461,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3461,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 59
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3467
      start: 3294
    functionDepth: 2
    functionLinenumber: 3294
    functionLinenumberEnd: 3467
    functionName: match_orclause_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - exprType
    - op_in_opfamily
    - foreach
    - Assert
    - linitial
    - bms_is_member
    - OidIsValid
    - list_length
    - get_array_type
    - list_free
    - lappend
    - lfirst
    - get_commutator
    - list_make1
    - match_index_to_operand
    - makeNode
    - make_simple_restrictinfo
    - IndexCollMatchesExprColl
    - lsecond
    - contain_volatile_functions
    - make_SAOP_expr
    - IsA
    linkageType: ''
    returnType: IndexClause
    signature: "IndexClause *\nmatch_orclause_to_indexcol(PlannerInfo *root,\n\t\t\t\t\t\t
      \  RestrictInfo *rinfo,\n\t\t\t\t\t\t   int indexcol,\n\t\t\t\t\t\t   IndexOptInfo
      *index)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3500,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3528,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3534,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3537,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3538,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3539,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3540,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3550,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3552,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3553,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3556,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3560,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3564,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3564,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3566,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3574,1
    - Dst: get_op_opfamily_strategy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3575,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3577,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3578,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3586,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3589,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3593,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3594,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3595,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3596,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3603,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3610,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3627,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3640,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3646,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3647,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3648,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3650,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3652,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3653,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3655,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3662,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3666,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3668,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3670,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3671,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3672,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3672,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3682,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3682,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3683,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3683,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3684,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3684,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3686,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3687,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3687,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 78
    argCount: 6
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    - expr_op
    - var_on_left
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3692
      start: 3492
    functionDepth: 3
    functionLinenumber: 3492
    functionLinenumberEnd: 3692
    functionName: expand_indexqual_rowcompare
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - pull_varnos
    - lappend_int
    - copyObject
    - list_truncate
    - lappend_oid
    - lfirst_oid
    - elog
    - linitial
    - bms_is_member
    - get_op_opfamily_strategy
    - linitial_oid
    - list_length
    - OidIsValid
    - get_commutator
    - list_make1_oid
    - list_make1
    - match_index_to_operand
    - list_copy_head
    - get_opfamily_member
    - makeNode
    - make_simple_restrictinfo
    - IndexCollMatchesExprColl
    - contain_volatile_functions
    - make_opclause
    - get_op_opfamily_properties
    - list_nth
    - list_make1_int
    - list_nth_oid
    linkageType: ''
    returnType: IndexClause
    signature: "IndexClause *\nexpand_indexqual_rowcompare(PlannerInfo *root,\n\t\t\t\t\t\t\tRestrictInfo
      *rinfo,\n\t\t\t\t\t\t\tint indexcol,\n\t\t\t\t\t\t\tIndexOptInfo *index,\n\t\t\t\t\t\t\tOid
      expr_op,\n\t\t\t\t\t\t\tbool var_on_left)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3646,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3647,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3648,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3650,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3652,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3653,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3655,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3656
      start: 3642
    functionDepth: 1
    functionLinenumber: 3642
    functionLinenumberEnd: 3656
    functionName: forthree
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 3
    functionsReached:
    - elog
    - get_opfamily_member
    - OidIsValid
    - lfirst_oid
    - lappend_oid
    linkageType: ''
    returnType: void
    signature: "void forthree(opfamilies_cell, opfamilies,\n\t\t\t\t\t lefttypes_cell,
      lefttypes,\n\t\t\t\t\t righttypes_cell, righttypes)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3730,1
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3752,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3754,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3759,1
    - Dst: match_clause_to_ordering_op
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3774,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3780,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3781,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 4
    argNames:
    - index
    - pathkeys
    - orderby_clauses_p
    - clause_columns_p
    argTypes:
    - IndexOptInfo*
    - List*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3798
      start: 3714
    functionDepth: 1
    functionLinenumber: 3714
    functionLinenumberEnd: 3798
    functionName: match_pathkeys_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - setup_eclass_member_iterator
    - lappend
    - match_clause_to_ordering_op
    - eclass_member_iterator_next
    - lfirst
    - bms_equal
    linkageType: ''
    returnType: void
    signature: "void match_pathkeys_to_index(IndexOptInfo *index, List *pathkeys,\n\t\t\t\t\t\tList
      **orderby_clauses_p,\n\t\t\t\t\t\tList **clause_columns_p)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3730,1
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3752,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3754,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3759,1
    - Dst: match_clause_to_ordering_op
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3774,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3780,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3781,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3797
      start: 3728
    functionDepth: 1
    functionLinenumber: 3728
    functionLinenumberEnd: 3797
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 269
    functionsReached:
    - lappend_int
    - setup_eclass_member_iterator
    - lappend
    - match_clause_to_ordering_op
    - eclass_member_iterator_next
    - lfirst
    - bms_equal
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, pathkeys)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3840,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3848,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3850,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3851,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3860,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3867,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3868,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3869,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3873,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3874,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3875,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3878,1
    - Dst: get_op_opfamily_sortfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3890,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3897,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3900,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3905,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 4
    argNames:
    - index
    - indexcol
    - clause
    - pk_opfamily
    argTypes:
    - IndexOptInfo*
    - int
    - Expr*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3911
      start: 3825
    functionDepth: 2
    functionLinenumber: 3825
    functionLinenumberEnd: 3911
    functionName: match_clause_to_ordering_op
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - match_index_to_operand
    - get_leftop
    - get_rightop
    - memcpy
    - Assert
    - get_op_opfamily_sortfamily
    - makeNode
    - is_opclause
    - IndexCollMatchesExprColl
    - list_make2
    - contain_volatile_functions
    - get_commutator
    - contain_var_clause
    linkageType: ''
    returnType: Expr
    signature: "Expr *\nmatch_clause_to_ordering_op(IndexOptInfo *index,\n\t\t\t\t\t\t\tint
      indexcol,\n\t\t\t\t\t\t\tExpr *clause,\n\t\t\t\t\t\t\tOid pk_opfamily)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3949,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3949,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3957,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3959,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3975,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3978,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3980,1
    - Dst: join_clause_is_movable_to
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3983,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3986,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3998,1
    - Dst: find_childrel_parents
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3999,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4001,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4002,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4004,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4006,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4007,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4008,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4026,1
    - Dst: get_plan_rowmark
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4027,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4036,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4038,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4045,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4064,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4066,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4069,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4070,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4070,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4072,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 38
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4075
      start: 3939
    functionDepth: 3
    functionLinenumber: 3939
    functionLinenumberEnd: 4075
    functionName: check_index_predicates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - list_concat
    - bms_difference
    - predicate_implied_by
    - bms_union
    - foreach
    - Assert
    - bms_is_member
    - list_copy
    - get_plan_rowmark
    - join_clause_is_movable_to
    - generate_join_implied_equalities
    - lappend
    - lfirst
    - IS_SIMPLE_REL
    - list_make1
    - find_childrel_parents
    - bms_del_members
    - contain_mutable_functions
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: void check_index_predicates(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4097,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4113,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4117,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - root
    - rel
    - ec
    - em
    - arg
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - EquivalenceClass*
    - EquivalenceMember*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4121
      start: 4087
    functionDepth: 1
    functionLinenumber: 4087
    functionLinenumberEnd: 4121
    functionName: ec_member_matches_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - Assert
    - list_member_oid
    - match_index_to_operand
    - IndexCollMatchesExprColl
    linkageType: ''
    returnType: bool
    signature: "bool ec_member_matches_indexcol(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      \  EquivalenceClass *ec, EquivalenceMember *em,\n\t\t\t\t\t\t   void *arg)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4157,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4159,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4173,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4178,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4187,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4195,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4197,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4222,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4231,1
    - Dst: collations_agree_on_equality
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4239,1
    - Dst: exprInputCollation
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4240,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4245,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4247,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4249,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4251,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4261,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4261,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4262,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4264,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4265,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 48
    argCount: 4
    argNames:
    - root
    - rel
    - restrictlist
    - extra_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4286
      start: 4143
    functionDepth: 2
    functionLinenumber: 4143
    functionLinenumberEnd: 4286
    functionName: relation_has_unique_index_for
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - foreach
    - collations_agree_on_equality
    - get_rightop
    - get_leftop
    - exprInputCollation
    - Assert
    - lappend
    - MemoryContextSwitchTo
    - lfirst
    - bms_is_empty
    - list_member_oid
    - bms_membership
    linkageType: ''
    returnType: bool
    signature: "bool relation_has_unique_index_for(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t\t
      \ List *restrictlist, List **extra_clauses)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4222,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4231,1
    - Dst: collations_agree_on_equality
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4239,1
    - Dst: exprInputCollation
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4240,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4245,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4247,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4249,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4251,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4261,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4261,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4262,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4264,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4265,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4270
      start: 4220
    functionDepth: 2
    functionLinenumber: 4220
    functionLinenumberEnd: 4270
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 271
    functionsReached:
    - match_index_to_operand
    - get_rightop
    - collations_agree_on_equality
    - get_leftop
    - Assert
    - exprInputCollation
    - bms_is_empty
    - lappend
    - MemoryContextSwitchTo
    - lfirst
    - list_member_oid
    - bms_membership
    linkageType: ''
    returnType: void
    signature: void foreach(lc, restrictlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsBooleanOpfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4312,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4316,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4318,1
    - Dst: match_boolean_index_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4329,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - root
    - index
    - indexcol
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4334
      start: 4304
    functionDepth: 3
    functionLinenumber: 4304
    functionLinenumberEnd: 4334
    functionName: indexcol_is_bool_constant_for_query
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - match_boolean_index_clause
    - lfirst
    - foreach
    - IsBooleanOpfamily
    linkageType: ''
    returnType: bool
    signature: "bool indexcol_is_bool_constant_for_query(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\tIndexOptInfo
      *index,\n\t\t\t\t\t\t\t\t\tint indexcol)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strip_noop_phvs
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4368,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4379,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4388,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4405,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4411,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4412,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4416,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4417,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4422,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4425,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 26
    argCount: 3
    argNames:
    - operand
    - indexcol
    - index
    argTypes:
    - Node*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4430
      start: 4355
    functionDepth: 2
    functionLinenumber: 4355
    functionLinenumberEnd: 4430
    functionName: match_index_to_operand
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 14
    functionsReached:
    - elog
    - strip_noop_phvs
    - lnext
    - list_head
    - lfirst
    - equal
    - IsA
    linkageType: ''
    returnType: bool
    signature: "bool match_index_to_operand(Node *operand,\n\t\t\t\t\t   int indexcol,\n\t\t\t\t\t
      \  IndexOptInfo *index)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4456,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4456,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - root
    - expr
    - index
    argTypes:
    - PlannerInfo*
    - Node*
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4461
      start: 4452
    functionDepth: 2
    functionLinenumber: 4452
    functionLinenumberEnd: 4461
    functionName: is_pseudo_constant_for_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - pull_varnos
    - bms_is_member
    - contain_volatile_functions
    linkageType: ''
    returnType: bool
    signature: bool is_pseudo_constant_for_index(PlannerInfo *root, Node *expr, IndexOptInfo
      *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 134
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:202,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:210,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:210,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:213,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:214,1
    - Dst: canonicalize_ec_expression
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:222,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:223,1
    - Dst: canonicalize_ec_expression
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:225,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:226,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:235,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:247,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:248,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:250,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:258,1
    - Dst: op_input_types
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:280,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:305,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:307,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:326,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:330,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:332,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:337,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:348,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:358,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:361,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:379,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:380,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:382,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:400,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:409,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:410,1
    - Dst: ec_add_derived_clauses
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:416,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:417,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:420,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:422,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:425,1
    - Dst: ec_clear_derived_clauses
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:429,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:431,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:432,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:434,1
    - Dst: add_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:446,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:448,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:449,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:451,1
    - Dst: add_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:463,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:465,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:466,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:468,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:480,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:487,1
    - Dst: add_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:498,1
    - Dst: add_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:500,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:503,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 138
    argCount: 3
    argNames:
    - root
    - p_restrictinfo
    - jdomain
    argTypes:
    - PlannerInfo*
    - RestrictInfo**
    - JoinDomain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 178
    functionDepth: 3
    functionLinenumber: 178
    functionLinenumberEnd: 514
    functionName: process_equivalence
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - get_leftop
    - get_rightop
    - exprType
    - is_opclause
    - list_concat
    - bms_join
    - elog
    - foreach
    - Assert
    - func_strict
    - canonicalize_ec_expression
    - ec_add_derived_clauses
    - make_restrictinfo
    - set_opfuncid
    - add_eq_member
    - lappend
    - lfirst
    - list_make1
    - ec_clear_derived_clauses
    - makeNode
    - list_delete_nth_cell
    - op_input_types
    - Max
    - equal
    - Min
    - foreach_current_index
    linkageType: ''
    returnType: bool
    signature: "bool process_equivalence(PlannerInfo *root,\n\t\t\t\t\tRestrictInfo
      **p_restrictinfo,\n\t\t\t\t\tJoinDomain *jdomain)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:547,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:553,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:560,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:572,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:578,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - expr
    - req_type
    - req_collation
    argTypes:
    - Expr*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 584
    functionName: canonicalize_ec_expression
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - exprTypmod
    - IsPolymorphicType
    - applyRelabelType
    - exprType
    - exprCollation
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      canonicalize_ec_expression(Expr *expr, Oid req_type, Oid req_collation)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:595,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 6
    argNames:
    - ec
    - expr
    - relids
    - jdomain
    - parent
    - datatype
    argTypes:
    - EquivalenceClass*
    - Expr*
    - Relids
    - JoinDomain*
    - EquivalenceMember*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 591
    functionDepth: 1
    functionLinenumber: 591
    functionLinenumberEnd: 622
    functionName: make_eq_member
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_is_empty
    - makeNode
    linkageType: ''
    returnType: EquivalenceMember
    signature: "EquivalenceMember *\nmake_eq_member(EquivalenceClass *ec, Expr *expr,
      Relids relids,\n\t\t\t   JoinDomain *jdomain, EquivalenceMember *parent, Oid
      datatype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:631,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:635,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - ec
    - expr
    - relids
    - jdomain
    - datatype
    argTypes:
    - EquivalenceClass*
    - Expr*
    - Relids
    - JoinDomain*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 627
    functionDepth: 2
    functionLinenumber: 627
    functionLinenumberEnd: 641
    functionName: add_eq_member
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - bms_add_members
    - make_eq_member
    - lappend
    linkageType: ''
    returnType: EquivalenceMember
    signature: "EquivalenceMember *\nadd_eq_member(EquivalenceClass *ec, Expr *expr,
      Relids relids,\n\t\t\t  JoinDomain *jdomain, Oid datatype)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:668,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:674,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:677,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:679,1
    - Dst: make_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:686,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:689,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:697,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 9
    argNames:
    - root
    - ec
    - ec_index
    - expr
    - relids
    - jdomain
    - parent_em
    - datatype
    - child_relid
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - int
    - Expr*
    - Relids
    - JoinDomain*
    - EquivalenceMember*
    - Oid
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 660
    functionDepth: 2
    functionLinenumber: 660
    functionLinenumberEnd: 701
    functionName: add_child_eq_member
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 0
    functionsReached:
    - palloc0_array
    - Assert
    - repalloc0_array
    - lappend
    - make_eq_member
    - unlikely
    - bms_add_member
    linkageType: ''
    returnType: EquivalenceMember
    signature: "EquivalenceMember *\nadd_child_eq_member(PlannerInfo *root, EquivalenceClass
      *ec, int ec_index,\n\t\t\t\t\tExpr *expr, Relids relids, JoinDomain *jdomain,\n\t\t\t\t\tEquivalenceMember
      *parent_em, Oid datatype,\n\t\t\t\t\tIndex child_relid)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: canonicalize_ec_expression
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:755,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:761,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:766,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:768,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:782,1
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:785,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:786,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:792,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:803,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:817,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:819,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:820,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:830,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:838,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:843,1
    - Dst: add_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:845,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:845,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:857,1
    - Dst: contain_agg_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:858,1
    - Dst: contain_window_function
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:859,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:866,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:874,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:887,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:891,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:893,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:898,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 65
    argCount: 8
    argNames:
    - root
    - expr
    - opfamilies
    - opcintype
    - collation
    - sortref
    - rel
    - create_it
    argTypes:
    - PlannerInfo*
    - Expr*
    - List*
    - Oid
    - Oid
    - Index
    - Relids
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 735
    functionDepth: 3
    functionLinenumber: 735
    functionLinenumberEnd: 901
    functionName: get_eclass_for_sort_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - pull_varnos
    - copyObject
    - contain_window_function
    - expression_returns_set
    - bms_add_member
    - elog
    - foreach
    - linitial_node
    - setup_eclass_member_iterator
    - Assert
    - bms_is_member
    - canonicalize_ec_expression
    - list_copy
    - bms_equal
    - list_length
    - bms_next_member
    - contain_agg_clause
    - add_eq_member
    - lappend
    - eclass_member_iterator_next
    - lfirst
    - makeNode
    - MemoryContextSwitchTo
    - contain_volatile_functions
    - equal
    linkageType: ''
    returnType: EquivalenceClass
    signature: "EquivalenceClass *\nget_eclass_for_sort_expr(PlannerInfo *root,\n\t\t\t\t\t\t
      Expr *expr,\n\t\t\t\t\t\t List *opfamilies,\n\t\t\t\t\t\t Oid opcintype,\n\t\t\t\t\t\t
      Oid collation,\n\t\t\t\t\t\t Index sortref,\n\t\t\t\t\t\t Relids rel,\n\t\t\t\t\t\t
      bool create_it)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:924,1
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:927,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:928,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:943,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:950,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:953,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 3
    argNames:
    - ec
    - expr
    - relids
    argTypes:
    - EquivalenceClass*
    - Expr*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 958
    functionName: find_ec_member_matching_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 5
    functionsReached:
    - setup_eclass_member_iterator
    - eclass_member_iterator_next
    - equal
    - IsA
    - bms_is_subset
    linkageType: ''
    returnType: EquivalenceMember
    signature: "EquivalenceMember *\nfind_ec_member_matching_expr(EquivalenceClass
      *ec,\n\t\t\t\t\t\t\t Expr *expr,\n\t\t\t\t\t\t\t Relids relids)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1007,1
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1012,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1013,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1029,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1035,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1041,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1041,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1044,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1053,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 5
    argNames:
    - root
    - ec
    - exprs
    - relids
    - require_parallel_safe
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - List*
    - Relids
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 990
    functionDepth: 2
    functionLinenumber: 990
    functionLinenumberEnd: 1060
    functionName: find_computable_ec_member
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - list_free
    - setup_eclass_member_iterator
    - list_member
    - eclass_member_iterator_next
    - lfirst
    - pull_var_clause
    - is_parallel_safe
    - bms_is_subset
    linkageType: ''
    returnType: EquivalenceMember
    signature: "EquivalenceMember *\nfind_computable_ec_member(PlannerInfo *root,\n\t\t\t\t\t\t
      \ EquivalenceClass *ec,\n\t\t\t\t\t\t  List *exprs,\n\t\t\t\t\t\t  Relids relids,\n\t\t\t\t\t\t
      \ bool require_parallel_safe)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1041,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1041,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1039
    functionDepth: 1
    functionLinenumber: 1039
    functionLinenumberEnd: 1043
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 274
    functionsReached:
    - list_member
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, emvars)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1092,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1094,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1096,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1106,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1114,1
    - Dst: find_computable_ec_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1123,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1134,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 4
    argNames:
    - root
    - rel
    - ec
    - require_parallel_safe
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - EquivalenceClass*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1075
    functionDepth: 3
    functionLinenumber: 1075
    functionLinenumberEnd: 1138
    functionName: relation_can_be_sorted_early
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - foreach
    - find_ec_member_matching_expr
    - lfirst
    - is_parallel_safe
    - expression_returns_set
    - find_computable_ec_member
    linkageType: ''
    returnType: bool
    signature: "bool relation_can_be_sorted_early(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t\t
      EquivalenceClass *ec, bool require_parallel_safe)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1202,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1208,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1209,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1216,1
    - Dst: generate_base_implied_equalities_const
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1219,1
    - Dst: generate_base_implied_equalities_no_const
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1221,1
    - Dst: generate_base_implied_equalities_broken
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1225,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1229,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1240,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1250,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1250,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1254,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1256,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1186
    functionDepth: 1
    functionLinenumber: 1186
    functionLinenumberEnd: 1265
    functionName: generate_base_implied_equalities
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - foreach
    - Assert
    - bms_is_member
    - generate_base_implied_equalities_const
    - lfirst
    - generate_base_implied_equalities_broken
    - bms_next_member
    - generate_base_implied_equalities_no_const
    - list_length
    - bms_add_member
    - bms_membership
    linkageType: ''
    returnType: void
    signature: void generate_base_implied_equalities(PlannerInfo *root)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1284,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1285,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1287,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1294,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1302,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1304,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1309,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1313,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1316,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1323,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1326,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1329,1
    - Dst: process_implied_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1341,1
    - Dst: ec_add_derived_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1361,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - root
    - ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1270
    functionDepth: 4
    functionLinenumber: 1270
    functionLinenumberEnd: 1364
    functionName: generate_base_implied_equalities_const
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - foreach
    - Assert
    - linitial
    - OidIsValid
    - ec_add_derived_clause
    - select_equality_operator
    - lfirst
    - distribute_restrictinfo_to_rels
    - list_length
    - IsA
    - process_implied_equality
    linkageType: ''
    returnType: void
    signature: "void generate_base_implied_equalities_const(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t
      \  EquivalenceClass *ec)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1388,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1390,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1392,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1396,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1400,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1408,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1411,1
    - Dst: process_implied_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1423,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1447,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1458,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1460,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1461,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1466,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1467,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - root
    - ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1369
    functionDepth: 4
    functionLinenumber: 1369
    functionLinenumberEnd: 1469
    functionName: generate_base_implied_equalities_no_const
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - add_vars_to_targetlist
    - foreach
    - list_free
    - Assert
    - pfree
    - palloc0
    - select_equality_operator
    - lfirst
    - pull_var_clause
    - OidIsValid
    - process_implied_equality
    - bms_get_singleton_member
    linkageType: ''
    returnType: void
    signature: "void generate_base_implied_equalities_no_const(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t\t
      \ EquivalenceClass *ec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1491,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1493,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1496,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - root
    - ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1485
    functionDepth: 3
    functionLinenumber: 1485
    functionLinenumberEnd: 1499
    functionName: generate_base_implied_equalities_broken
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - lfirst
    - foreach
    - distribute_restrictinfo_to_rels
    - bms_membership
    linkageType: ''
    returnType: void
    signature: "void generate_base_implied_equalities_broken(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t\tEquivalenceClass
      *ec)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1565,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1565,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1570,1
    - Dst: add_outer_joins_to_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1571,1
    - Dst: get_eclass_indexes_for_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1596,1
    - Dst: get_common_eclass_indexes
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1598,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1602,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1604,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1616,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1616,1
    - Dst: generate_join_implied_equalities_normal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1619,1
    - Dst: generate_join_implied_equalities_broken
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1627,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1634,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 5
    argNames:
    - root
    - join_relids
    - outer_relids
    - inner_rel
    - sjinfo
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    - RelOptInfo*
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1548
    functionDepth: 3
    functionLinenumber: 1548
    functionLinenumberEnd: 1638
    functionName: generate_join_implied_equalities
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 6
    functionsReached:
    - generate_join_implied_equalities_broken
    - get_common_eclass_indexes
    - list_length
    - IS_OTHER_REL
    - Assert
    - get_eclass_indexes_for_relids
    - generate_join_implied_equalities_normal
    - list_concat
    - bms_overlap
    - bms_next_member
    - list_nth
    - bms_is_empty
    - bms_union
    - add_outer_joins_to_relids
    linkageType: ''
    returnType: List
    signature: "List *\ngenerate_join_implied_equalities(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      Relids join_relids,\n\t\t\t\t\t\t\t\t Relids outer_relids,\n\t\t\t\t\t\t\t\t
      RelOptInfo *inner_rel,\n\t\t\t\t\t\t\t\t SpecialJoinInfo *sjinfo)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1662,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1664,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1664,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1669,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1679,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1687,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1691,1
    - Dst: generate_join_implied_equalities_normal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1695,1
    - Dst: generate_join_implied_equalities_broken
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1703,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1710,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 5
    argNames:
    - root
    - eclasses
    - join_relids
    - outer_relids
    - inner_rel
    argTypes:
    - PlannerInfo*
    - List*
    - Relids
    - Relids
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1648
    functionDepth: 1
    functionLinenumber: 1648
    functionLinenumberEnd: 1714
    functionName: generate_join_implied_equalities_for_ecs
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - generate_join_implied_equalities_broken
    - IS_OTHER_REL
    - Assert
    - generate_join_implied_equalities_normal
    - lfirst
    - list_concat
    - bms_overlap
    - list_length
    - bms_is_empty
    - bms_union
    linkageType: ''
    returnType: List
    signature: "List *\ngenerate_join_implied_equalities_for_ecs(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t\t
      List *eclasses,\n\t\t\t\t\t\t\t\t\t\t Relids join_relids,\n\t\t\t\t\t\t\t\t\t\t
      Relids outer_relids,\n\t\t\t\t\t\t\t\t\t\t RelOptInfo *inner_rel)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1679,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1687,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1691,1
    - Dst: generate_join_implied_equalities_normal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1695,1
    - Dst: generate_join_implied_equalities_broken
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1703,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1710,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1711
      start: 1677
    functionDepth: 1
    functionLinenumber: 1677
    functionLinenumberEnd: 1711
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 279
    functionsReached:
    - generate_join_implied_equalities_broken
    - generate_join_implied_equalities_normal
    - lfirst
    - list_concat
    - bms_overlap
    - list_length
    linkageType: ''
    returnType: void
    signature: void foreach(lc, eclasses)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1742,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1743,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1750,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1753,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1754,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1755,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1756,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1758,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1781,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1786,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1790,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1793,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1796,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1797,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1798,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1800,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1801,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1802,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1804,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1805,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1831,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1835,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1849,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1856,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1856,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1860,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1866,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1869,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1876,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1880,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 58
    argCount: 5
    argNames:
    - root
    - ec
    - join_relids
    - outer_relids
    - inner_relids
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - Relids
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1719
    functionDepth: 1
    functionLinenumber: 1719
    functionLinenumberEnd: 1887
    functionName: generate_join_implied_equalities_normal
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - op_hashjoinable
    - setup_eclass_member_iterator
    - exprType
    - linitial
    - lappend
    - create_join_clause
    - eclass_member_iterator_next
    - select_equality_operator
    - lfirst
    - list_concat
    - OidIsValid
    - IsA
    - bms_is_subset
    linkageType: ''
    returnType: List
    signature: "List *\ngenerate_join_implied_equalities_normal(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t\tEquivalenceClass
      *ec,\n\t\t\t\t\t\t\t\t\t\tRelids join_relids,\n\t\t\t\t\t\t\t\t\t\tRelids outer_relids,\n\t\t\t\t\t\t\t\t\t\tRelids
      inner_relids)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1781,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1786,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1790,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1793,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1796,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1797,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1798,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1800,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1801,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1802,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1804,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1805,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1819
      start: 1779
    functionDepth: 1
    functionLinenumber: 1779
    functionLinenumberEnd: 1819
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 279
    functionsReached:
    - op_hashjoinable
    - exprType
    - select_equality_operator
    - lfirst
    - OidIsValid
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, outer_members)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1786,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1790,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1793,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1796,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1797,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1798,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1800,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1801,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1802,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1804,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1805,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1784
    functionDepth: 1
    functionLinenumber: 1784
    functionLinenumberEnd: 1816
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 279
    functionsReached:
    - op_hashjoinable
    - exprType
    - select_equality_operator
    - lfirst
    - OidIsValid
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, inner_members)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1860,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1866,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1869,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1876,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1880,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1883
      start: 1858
    functionDepth: 1
    functionLinenumber: 1858
    functionLinenumberEnd: 1883
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 279
    functionsReached:
    - lappend
    - create_join_clause
    - select_equality_operator
    - lfirst
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, new_members)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1908,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1910,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1913,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1914,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1915,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1916,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1930,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1931,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 6
    argNames:
    - root
    - ec
    - nominal_join_relids
    - outer_relids
    - nominal_inner_relids
    - inner_rel
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - Relids
    - Relids
    - Relids
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1897
    functionDepth: 3
    functionLinenumber: 1897
    functionLinenumberEnd: 1937
    functionName: generate_join_implied_equalities_broken
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - adjust_appendrel_attrs_multilevel
    - foreach
    - IS_OTHER_REL
    - lappend
    - lfirst
    - bms_is_subset
    linkageType: ''
    returnType: List
    signature: "List *\ngenerate_join_implied_equalities_broken(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t\tEquivalenceClass
      *ec,\n\t\t\t\t\t\t\t\t\t\tRelids nominal_join_relids,\n\t\t\t\t\t\t\t\t\t\tRelids
      outer_relids,\n\t\t\t\t\t\t\t\t\t\tRelids nominal_inner_relids,\n\t\t\t\t\t\t\t\t\t\tRelOptInfo
      *inner_rel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1951,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1953,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1956,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1957,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1963,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1963,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ec
    - lefttype
    - righttype
    argTypes:
    - EquivalenceClass*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1967
      start: 1946
    functionDepth: 1
    functionLinenumber: 1946
    functionLinenumberEnd: 1967
    functionName: select_equality_operator
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 6
    functionsReached:
    - foreach
    - get_opfamily_member_for_cmptype
    - get_func_leakproof
    - OidIsValid
    - lfirst_oid
    - get_opcode
    linkageType: ''
    returnType: Oid
    signature: Oid select_equality_operator(EquivalenceClass *ec, Oid lefttype, Oid
      righttype)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ec_search_clause_for_ems
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1992,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2000,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2011,1
    - Dst: build_implied_join_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2016,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2021,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2034,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2037,1
    - Dst: ec_add_derived_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2058,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2060,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 6
    argNames:
    - root
    - ec
    - opno
    - leftem
    - rightem
    - parent_ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - Oid
    - EquivalenceMember*
    - EquivalenceMember*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2063
      start: 1981
    functionDepth: 2
    functionLinenumber: 1981
    functionLinenumberEnd: 2063
    functionName: create_join_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - ec_search_clause_for_ems
    - build_implied_join_equality
    - ec_add_derived_clause
    - create_join_clause
    - MemoryContextSwitchTo
    - bms_add_members
    - bms_union
    linkageType: ''
    returnType: RestrictInfo
    signature: "RestrictInfo *\ncreate_join_clause(PlannerInfo *root,\n\t\t\t\t   EquivalenceClass
      *ec, Oid opno,\n\t\t\t\t   EquivalenceMember *leftem,\n\t\t\t\t   EquivalenceMember
      *rightem,\n\t\t\t\t   EquivalenceClass *parent_ec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2145,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2147,1
    - Dst: reconsider_outer_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2149,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2156,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2158,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2159,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2168,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2173,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2175,1
    - Dst: reconsider_outer_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2177,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2184,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2186,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2187,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2196,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2201,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2203,1
    - Dst: reconsider_full_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2205,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2212,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2214,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2215,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2224,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2230,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2232,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2234,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2236,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2238,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2240,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2242,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2244,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2246,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2133
    functionDepth: 3
    functionLinenumber: 2133
    functionLinenumberEnd: 2248
    functionName: reconsider_outer_join_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - make_restrictinfo
    - foreach_delete_current
    - foreach
    - reconsider_full_join_clause
    - reconsider_outer_join_clause
    - makeBoolConst
    - lfirst
    - distribute_restrictinfo_to_rels
    linkageType: ''
    returnType: void
    signature: void reconsider_outer_join_clauses(PlannerInfo *root)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2271,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2271,1
    - Dst: op_input_types
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2276,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2279,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2280,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2286,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2287,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2293,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2300,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2311,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2315,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2317,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2320,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2321,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2336,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2338,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2345,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2348,1
    - Dst: build_implied_join_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2350,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2355,1
    - Dst: find_join_domain
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2358,1
    - Dst: process_equivalence
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2359,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 3
    argNames:
    - root
    - ojcinfo
    - outer_on_left
    argTypes:
    - PlannerInfo*
    - OuterJoinClauseInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2375
      start: 2255
    functionDepth: 4
    functionLinenumber: 2255
    functionLinenumberEnd: 2375
    functionName: reconsider_outer_join_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - get_leftop
    - get_rightop
    - foreach
    - Assert
    - build_implied_join_equality
    - OidIsValid
    - find_join_domain
    - process_equivalence
    - bms_copy
    - is_opclause
    - select_equality_operator
    - op_input_types
    - lfirst
    - equal
    linkageType: ''
    returnType: bool
    signature: "bool reconsider_outer_join_clause(PlannerInfo *root, OuterJoinClauseInfo
      *ojcinfo,\n\t\t\t\t\t\t\t bool outer_on_left)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2387,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2399,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2399,1
    - Dst: op_input_types
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2402,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2403,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2404,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2408,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2410,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2419,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2430,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2447,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2449,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2452,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2453,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2459,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2461,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2462,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2473,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2474,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2476,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2476,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2478,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2494,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2496,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2503,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2506,1
    - Dst: build_implied_join_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2508,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2513,1
    - Dst: find_join_domain
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2516,1
    - Dst: process_equivalence
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2517,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2520,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2523,1
    - Dst: build_implied_join_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2525,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2530,1
    - Dst: find_join_domain
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2533,1
    - Dst: process_equivalence
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2534,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2548,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 65
    argCount: 2
    argNames:
    - root
    - ojcinfo
    argTypes:
    - PlannerInfo*
    - OuterJoinClauseInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2561
      start: 2382
    functionDepth: 4
    functionLinenumber: 2382
    functionLinenumberEnd: 2561
    functionName: reconsider_full_join_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - get_leftop
    - get_rightop
    - build_implied_join_equality
    - bms_copy
    - is_opclause
    - foreach
    - Assert
    - linitial
    - list_length
    - OidIsValid
    - IsA
    - remove_nulling_relids
    - process_equivalence
    - lfirst
    - bms_make_singleton
    - find_join_domain
    - list_delete_nth_cell
    - select_equality_operator
    - op_input_types
    - lsecond
    - equal
    - foreach_current_index
    linkageType: ''
    returnType: bool
    signature: bool reconsider_full_join_clause(PlannerInfo *root, OuterJoinClauseInfo
      *ojcinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2577,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2586,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2589,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2593,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2595,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2596,1
    - Dst: add_vars_to_attr_needed
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2601,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2602,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2606
      start: 2572
    functionDepth: 2
    functionLinenumber: 2572
    functionLinenumberEnd: 2606
    functionName: rebuild_eclass_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - foreach
    - list_free
    - Assert
    - lfirst
    - pull_var_clause
    - add_vars_to_attr_needed
    - list_length
    linkageType: ''
    returnType: void
    signature: void rebuild_eclass_attr_needed(PlannerInfo *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2620,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2622,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2624,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2629
      start: 2615
    functionDepth: 1
    functionLinenumber: 2615
    functionLinenumberEnd: 2629
    functionName: find_join_domain
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - elog
    - lfirst
    - bms_is_subset
    - foreach
    linkageType: ''
    returnType: JoinDomain
    signature: 'JoinDomain *

      find_join_domain(PlannerInfo *root, Relids relids)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2651,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2653,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2669,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2670,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2674,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2679,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2680,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2682,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 4
    argNames:
    - root
    - item1
    - item2
    - opfamily
    argTypes:
    - PlannerInfo*
    - Node*
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2690
      start: 2646
    functionDepth: 1
    functionLinenumber: 2646
    functionLinenumberEnd: 2690
    functionName: exprs_known_equal
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - equal
    - foreach
    - Assert
    - lfirst
    - OidIsValid
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool exprs_known_equal(PlannerInfo *root, Node *item1, Node *item2,
      Oid opfamily)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2726,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2726,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2727,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2727,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2728,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2732,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2734,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2748,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2750,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2754,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2758,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2760,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2778,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2779,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 33
    argCount: 3
    argNames:
    - root
    - fkinfo
    - colno
    argTypes:
    - PlannerInfo*
    - ForeignKeyOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2791
      start: 2708
    functionDepth: 3
    functionLinenumber: 2708
    functionLinenumberEnd: 2791
    functionName: match_eclasses_to_foreign_key_col
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - equal
    - foreach
    - Assert
    - get_mergejoin_opfamilies
    - lfirst
    - IS_SIMPLE_REL
    - bms_next_member
    - list_nth
    - bms_intersect
    - IsA
    linkageType: ''
    returnType: EquivalenceClass
    signature: "EquivalenceClass *\nmatch_eclasses_to_foreign_key_col(PlannerInfo
      *root,\n\t\t\t\t\t\t\t\t  ForeignKeyOptInfo *fkinfo,\n\t\t\t\t\t\t\t\t  int
      colno)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2808,1
    - Dst: ec_search_derived_clause_for_ems
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - ec
    - em
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - EquivalenceMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2811
      start: 2802
    functionDepth: 1
    functionLinenumber: 2802
    functionLinenumberEnd: 2811
    functionName: find_derived_clause_for_ec_member
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 0
    functionsReached:
    - Assert
    - ec_search_derived_clause_for_ems
    linkageType: ''
    returnType: RestrictInfo
    signature: "RestrictInfo *\nfind_derived_clause_for_ec_member(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      \ EquivalenceClass *ec,\n\t\t\t\t\t\t\t\t  EquivalenceMember *em)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2846,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2846,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2849,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2851,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2862,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2862,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2870,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2880,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2881,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2891,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2899,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2911,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2913,1
    - Dst: add_child_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2915,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 4
    argNames:
    - root
    - appinfo
    - parent_rel
    - child_rel
    argTypes:
    - PlannerInfo*
    - AppendRelInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2927
      start: 2831
    functionDepth: 3
    functionLinenumber: 2831
    functionLinenumberEnd: 2927
    functionName: add_child_rel_equivalences
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - adjust_appendrel_attrs
    - adjust_appendrel_attrs_multilevel
    - Assert
    - foreach_node
    - bms_add_members
    - add_child_eq_member
    - IS_SIMPLE_REL
    - bms_difference
    - bms_next_member
    - list_nth
    - bms_is_empty
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: "void add_child_rel_equivalences(PlannerInfo *root,\n\t\t\t\t\t\t   AppendRelInfo
      *appinfo,\n\t\t\t\t\t\t   RelOptInfo *parent_rel,\n\t\t\t\t\t\t   RelOptInfo
      *child_rel)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2951,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2951,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2951,1
    - Dst: get_eclass_indexes_for_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2954,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2964,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2967,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2980,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2980,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2982,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2988,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2994,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2998,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3015,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3017,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3029,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3031,1
    - Dst: add_child_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3053,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3061,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3066,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 5
    argNames:
    - root
    - nappinfos
    - appinfos
    - parent_joinrel
    - child_joinrel
    argTypes:
    - PlannerInfo*
    - int
    - AppendRelInfo**
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3067
      start: 2939
    functionDepth: 3
    functionLinenumber: 2939
    functionLinenumberEnd: 3067
    functionName: add_child_join_rel_equivalences
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - adjust_appendrel_attrs
    - adjust_appendrel_attrs_multilevel
    - IS_JOIN_REL
    - Assert
    - bms_difference
    - foreach_node
    - MemoryContextSwitchTo
    - bms_add_members
    - add_child_eq_member
    - bms_overlap
    - bms_next_member
    - list_nth
    - get_eclass_indexes_for_relids
    - bms_membership
    linkageType: ''
    returnType: void
    signature: "void add_child_join_rel_equivalences(PlannerInfo *root,\n\t\t\t\t\t\t\t\tint
      nappinfos, AppendRelInfo **appinfos,\n\t\t\t\t\t\t\t\tRelOptInfo *parent_joinrel,\n\t\t\t\t\t\t\t\tRelOptInfo
      *child_joinrel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3087,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3091,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3099,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3101,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3102,1
    - Dst: add_child_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3111,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3118,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3121,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3130,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - root
    - child_rel
    - child_tlist
    - setop_pathkeys
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3132
      start: 3082
    functionDepth: 3
    functionLinenumber: 3082
    functionLinenumberEnd: 3132
    functionName: add_setop_child_rel_equivalences
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - elog
    - bms_add_range
    - exprType
    - linitial
    - lnext
    - list_head
    - add_child_eq_member
    - list_length
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void add_setop_child_rel_equivalences(PlannerInfo *root, RelOptInfo
      *child_rel,\n\t\t\t\t\t\t\t\t List *child_tlist, List *setop_pathkeys)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3091,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3099,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3101,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3102,1
    - Dst: add_child_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3111,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3118,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3122
      start: 3089
    functionDepth: 3
    functionLinenumber: 3089
    functionLinenumberEnd: 3122
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 288
    functionsReached:
    - elog
    - exprType
    - linitial
    - lnext
    - add_child_eq_member
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, child_tlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - it
    - ec
    - child_relids
    argTypes:
    - EquivalenceMemberIterator*
    - EquivalenceClass*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3164
      start: 3154
    functionDepth: 1
    functionLinenumber: 3154
    functionLinenumberEnd: 3164
    functionName: setup_eclass_member_iterator
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 6
    functionsReached:
    - list_head
    linkageType: ''
    returnType: void
    signature: "void setup_eclass_member_iterator(EquivalenceMemberIterator *it,\n\t\t\t\t\t\t\t
      EquivalenceClass *ec, Relids child_relids)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3183,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3184,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3189,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3204,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - it
    argTypes:
    - EquivalenceMemberIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3212
      start: 3173
    functionDepth: 2
    functionLinenumber: 3173
    functionLinenumberEnd: 3212
    functionName: eclass_member_iterator_next
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 6
    functionsReached:
    - bms_next_member
    - list_head
    - lnext
    - lfirst_node
    linkageType: ''
    returnType: EquivalenceMember
    signature: 'EquivalenceMember *

      eclass_member_iterator_next(EquivalenceMemberIterator *it)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3250,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3253,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3253,1
    - Dst: find_childrel_parents
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3257,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3262,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3270,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3270,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3276,1
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3289,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3290,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3292,1
    - Dst: callback
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3293,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3304,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3306,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3311,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3315,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3319,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3327,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3330,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3333,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3337,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3341,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 36
    argCount: 5
    argNames:
    - root
    - rel
    - callback
    - callback_arg
    - prohibited_rels
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - ec_matches_callback_type
    - void*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3354
      start: 3237
    functionDepth: 3
    functionLinenumber: 3237
    functionLinenumberEnd: 3354
    functionName: generate_implied_equalities_for_column
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - callback
    - foreach
    - list_length
    - Assert
    - setup_eclass_member_iterator
    - bms_equal
    - OidIsValid
    - lappend
    - create_join_clause
    - eclass_member_iterator_next
    - select_equality_operator
    - lfirst
    - IS_SIMPLE_REL
    - bms_overlap
    - bms_next_member
    - list_nth
    - bms_is_subset
    - find_childrel_parents
    linkageType: ''
    returnType: List
    signature: "List *\ngenerate_implied_equalities_for_column(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t
      \  RelOptInfo *rel,\n\t\t\t\t\t\t\t\t\t   ec_matches_callback_type callback,\n\t\t\t\t\t\t\t\t\t
      \  void *callback_arg,\n\t\t\t\t\t\t\t\t\t   Relids prohibited_rels)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_common_eclass_indexes
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3385,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3389,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3391,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3398,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3399,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3399,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3405,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel1
    - rel2
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3433
      start: 3368
    functionDepth: 3
    functionLinenumber: 3368
    functionLinenumberEnd: 3433
    functionName: have_relevant_eclass_joinclause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - get_common_eclass_indexes
    - list_length
    - Assert
    - bms_overlap
    - bms_next_member
    - list_nth
    linkageType: ''
    returnType: bool
    signature: "bool have_relevant_eclass_joinclause(PlannerInfo *root,\n\t\t\t\t\t\t\t\tRelOptInfo
      *rel1, RelOptInfo *rel2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_eclass_indexes_for_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3451,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3454,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3456,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3463,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3470,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - root
    - rel1
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3475
      start: 3444
    functionDepth: 3
    functionLinenumber: 3444
    functionLinenumberEnd: 3475
    functionName: has_relevant_eclass_joinclause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - list_length
    - bms_next_member
    - list_nth
    - bms_is_subset
    - get_eclass_indexes_for_relids
    linkageType: ''
    returnType: bool
    signature: bool has_relevant_eclass_joinclause(PlannerInfo *root, RelOptInfo *rel1)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3496,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3502,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3512,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3514,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3514,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3521,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3527,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3529,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3532,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3534,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - root
    - eclass
    - rel
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3539
      start: 3488
    functionDepth: 1
    functionLinenumber: 3488
    functionLinenumberEnd: 3539
    functionName: eclass_useful_for_merging
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 0
    functionsReached:
    - foreach
    - IS_OTHER_REL
    - Assert
    - lfirst
    - bms_overlap
    - list_length
    - bms_is_empty
    - bms_is_subset
    linkageType: ''
    returnType: bool
    signature: "bool eclass_useful_for_merging(PlannerInfo *root,\n\t\t\t\t\t\t  EquivalenceClass
      *eclass,\n\t\t\t\t\t\t  RelOptInfo *rel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3560,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rinfo
    - clauselist
    argTypes:
    - RestrictInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3567
      start: 3548
    functionDepth: 1
    functionLinenumber: 3548
    functionLinenumberEnd: 3567
    functionName: is_redundant_derived_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool is_redundant_derived_clause(RestrictInfo *rinfo, List *clauselist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3564
      start: 3558
    functionDepth: 1
    functionLinenumber: 3558
    functionLinenumberEnd: 3564
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 290
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauselist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3583,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - rinfo
    - indexclauses
    argTypes:
    - RestrictInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3604
      start: 3575
    functionDepth: 1
    functionLinenumber: 3575
    functionLinenumberEnd: 3604
    functionName: is_redundant_with_indexclauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: bool is_redundant_with_indexclauses(RestrictInfo *rinfo, List *indexclauses)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3583,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3601
      start: 3581
    functionDepth: 1
    functionLinenumber: 3581
    functionLinenumberEnd: 3601
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 290
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, indexclauses)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3618,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3620,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3630,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3630,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3634,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3637
      start: 3611
    functionDepth: 1
    functionLinenumber: 3611
    functionLinenumberEnd: 3637
    functionName: get_eclass_indexes_for_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - Assert
    - bms_add_members
    - bms_is_member
    - bms_next_member
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      get_eclass_indexes_for_relids(PlannerInfo *root, Relids relids)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_eclass_indexes_for_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3652,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3658,1
    - Dst: get_eclass_indexes_for_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3661,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - root
    - relids1
    - relids2
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3665
      start: 3645
    functionDepth: 2
    functionLinenumber: 3645
    functionLinenumberEnd: 3665
    functionName: get_common_eclass_indexes
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - bms_int_members
    - get_eclass_indexes_for_relids
    - bms_get_singleton_member
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      get_common_eclass_indexes(PlannerInfo *root, Relids relids1, Relids relids2)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3674,1
    - Dst: derives_create
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3685,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3686,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3689,1
    - Dst: ec_add_clause_to_derives_hash
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3691
      start: 3671
    functionDepth: 1
    functionLinenumber: 3671
    functionLinenumberEnd: 3691
    functionName: ec_build_derives_hash
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 0
    functionsReached:
    - derives_create
    - ec_add_clause_to_derives_hash
    - Assert
    - foreach_node
    - list_length
    linkageType: ''
    returnType: void
    signature: void ec_build_derives_hash(PlannerInfo *root, EquivalenceClass *ec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3714,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3716,1
    - Dst: ec_add_clause_to_derives_hash
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3718,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ec
    - clause
    argTypes:
    - EquivalenceClass*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3719
      start: 3701
    functionDepth: 1
    functionLinenumber: 3701
    functionLinenumberEnd: 3719
    functionName: ec_add_derived_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - Assert
    - lappend
    - ec_add_clause_to_derives_hash
    linkageType: ''
    returnType: void
    signature: void ec_add_derived_clause(EquivalenceClass *ec, RestrictInfo *clause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3734,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3736,1
    - Dst: ec_add_clause_to_derives_hash
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ec
    - clauses
    argTypes:
    - EquivalenceClass*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3738
      start: 3731
    functionDepth: 1
    functionLinenumber: 3731
    functionLinenumberEnd: 3738
    functionName: ec_add_derived_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - list_concat
    - foreach_node
    - ec_add_clause_to_derives_hash
    linkageType: ''
    returnType: void
    signature: void ec_add_derived_clauses(EquivalenceClass *ec, List *clauses)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3759,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - key
    - leftem
    - rightem
    - parent_ec
    argTypes:
    - ECDerivesKey*
    - EquivalenceMember*
    - EquivalenceMember*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3777
      start: 3753
    functionDepth: 1
    functionLinenumber: 3753
    functionLinenumberEnd: 3777
    functionName: fill_ec_derives_key
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void fill_ec_derives_key(ECDerivesKey *key,\n\t\t\t\t\tEquivalenceMember
      *leftem,\n\t\t\t\t\tEquivalenceMember *rightem,\n\t\t\t\t\tEquivalenceClass
      *parent_ec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3798,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3804,1
    - Dst: fill_ec_derives_key
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3811,1
    - Dst: derives_insert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3815,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ec
    - rinfo
    argTypes:
    - EquivalenceClass*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3818
      start: 3787
    functionDepth: 2
    functionLinenumber: 3787
    functionLinenumberEnd: 3818
    functionName: ec_add_clause_to_derives_hash
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - Assert
    - fill_ec_derives_key
    - derives_insert
    linkageType: ''
    returnType: void
    signature: void ec_add_clause_to_derives_hash(EquivalenceClass *ec, RestrictInfo
      *rinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3832,1
    - Dst: derives_destroy
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3837,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ec
    argTypes:
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3840
      start: 3829
    functionDepth: 1
    functionLinenumber: 3829
    functionLinenumberEnd: 3840
    functionName: ec_clear_derived_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - derives_destroy
    - list_free
    linkageType: ''
    returnType: void
    signature: void ec_clear_derived_clauses(EquivalenceClass *ec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3859,1
    - Dst: ec_search_derived_clause_for_ems
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3872,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 5
    argNames:
    - root
    - ec
    - leftem
    - rightem
    - parent_ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - EquivalenceMember*
    - EquivalenceMember*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3874
      start: 3853
    functionDepth: 1
    functionLinenumber: 3853
    functionLinenumberEnd: 3874
    functionName: ec_search_clause_for_ems
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - foreach_node
    - ec_search_derived_clause_for_ems
    linkageType: ''
    returnType: RestrictInfo
    signature: "RestrictInfo *\nec_search_clause_for_ems(PlannerInfo *root, EquivalenceClass
      *ec,\n\t\t\t\t\t\t EquivalenceMember *leftem, EquivalenceMember *rightem,\n\t\t\t\t\t\t
      EquivalenceClass *parent_ec)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3899,1
    - Dst: ec_build_derives_hash
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3900,1
    - Dst: fill_ec_derives_key
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3909,1
    - Dst: derives_lookup
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3910,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3914,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3915,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3922,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3928,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 5
    argNames:
    - root
    - ec
    - leftem
    - rightem
    - parent_ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - EquivalenceMember*
    - EquivalenceMember*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3943
      start: 3891
    functionDepth: 2
    functionLinenumber: 3891
    functionLinenumberEnd: 3943
    functionName: ec_search_derived_clause_for_ems
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - derives_lookup
    - Assert
    - foreach_node
    - ec_build_derives_hash
    - list_length
    - fill_ec_derives_key
    linkageType: ''
    returnType: RestrictInfo
    signature: "RestrictInfo *\nec_search_derived_clause_for_ems(PlannerInfo *root,
      EquivalenceClass *ec,\n\t\t\t\t\t\t\t\t EquivalenceMember *leftem,\n\t\t\t\t\t\t\t\t
      EquivalenceMember *rightem,\n\t\t\t\t\t\t\t\t EquivalenceClass *parent_ec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clauselist_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - root
    - clauses
    - varRelid
    - jointype
    - sjinfo
    argTypes:
    - PlannerInfo*
    - List*
    - int
    - JoinType
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 108
    functionName: clauselist_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 0
    functionsReached:
    - clauselist_selectivity_ext
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity clauselist_selectivity(PlannerInfo *root,\n\t\t\t\t\t
      \  List *clauses,\n\t\t\t\t\t   int varRelid,\n\t\t\t\t\t   JoinType jointype,\n\t\t\t\t\t
      \  SpecialJoinInfo *sjinfo)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:135,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:136,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:136,1
    - Dst: find_single_rel_for_clauses
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:144,1
    - Dst: statext_clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:153,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:169,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:179,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:183,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:192,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:211,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:211,1
    - Dst: is_pseudo_constant_clause_relids
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:220,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:220,1
    - Dst: is_pseudo_constant_clause_relids
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:223,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:223,1
    - Dst: NumRelids
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:228,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:229,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:229,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:231,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:231,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:241,1
    - Dst: addRangeClause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:245,1
    - Dst: addRangeClause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:250,1
    - Dst: nulltestsel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:293,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:337,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 72
    argCount: 6
    argNames:
    - root
    - clauses
    - varRelid
    - jointype
    - sjinfo
    - use_extended_stats
    argTypes:
    - PlannerInfo*
    - List*
    - int
    - JoinType
    - SpecialJoinInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 342
    functionName: clauselist_selectivity_ext
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 1
    functionsReached:
    - addRangeClause
    - get_oprrest
    - is_pseudo_constant_clause_relids
    - pfree
    - linitial
    - NumRelids
    - clause_selectivity_ext
    - bms_is_member
    - is_opclause
    - find_single_rel_for_clauses
    - lsecond
    - lfirst
    - is_pseudo_constant_clause
    - nulltestsel
    - list_length
    - IsA
    - statext_clauselist_selectivity
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity clauselist_selectivity_ext(PlannerInfo *root,\n\t\t\t\t\t\t
      \  List *clauses,\n\t\t\t\t\t\t   int varRelid,\n\t\t\t\t\t\t   JoinType jointype,\n\t\t\t\t\t\t
      \  SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t   bool use_extended_stats)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:169,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:179,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:183,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:192,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:211,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:211,1
    - Dst: is_pseudo_constant_clause_relids
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:220,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:220,1
    - Dst: is_pseudo_constant_clause_relids
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:223,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:223,1
    - Dst: NumRelids
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:228,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:229,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:229,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:231,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:231,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:241,1
    - Dst: addRangeClause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:245,1
    - Dst: addRangeClause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:250,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 167
    functionDepth: 3
    functionLinenumber: 167
    functionLinenumberEnd: 264
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 290
    functionsReached:
    - addRangeClause
    - get_oprrest
    - is_pseudo_constant_clause_relids
    - linitial
    - NumRelids
    - bms_is_member
    - clause_selectivity_ext
    - is_opclause
    - lsecond
    - lfirst
    - is_pseudo_constant_clause
    - list_length
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find_single_rel_for_clauses
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:376,1
    - Dst: statext_clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:385,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:409,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:412,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:412,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 6
    argNames:
    - root
    - clauses
    - varRelid
    - jointype
    - sjinfo
    - use_extended_stats
    argTypes:
    - PlannerInfo*
    - List*
    - int
    - JoinType
    - SpecialJoinInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 419
    functionName: clauselist_selectivity_or
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 0
    functionsReached:
    - bms_is_member
    - clause_selectivity_ext
    - find_single_rel_for_clauses
    - lfirst
    - statext_clauselist_selectivity
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity clauselist_selectivity_or(PlannerInfo *root,\n\t\t\t\t\t\t
      \ List *clauses,\n\t\t\t\t\t\t  int varRelid,\n\t\t\t\t\t\t  JoinType jointype,\n\t\t\t\t\t\t
      \ SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t  bool use_extended_stats)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:409,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:412,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:412,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 416
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 290
    functionsReached:
    - bms_is_member
    - lfirst
    - clause_selectivity_ext
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauses)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:436,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:441,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:451,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:498,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 5
    argNames:
    - rqlist
    - clause
    - varonleft
    - isLTsel
    - s2
    argTypes:
    - RangeQueryClause**
    - Node*
    - bool
    - bool
    - Selectivity
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 426
    functionDepth: 2
    functionLinenumber: 426
    functionLinenumberEnd: 514
    functionName: addRangeClause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 2
    functionsReached:
    - equal
    - get_leftop
    - get_rightop
    - palloc_object
    linkageType: ''
    returnType: void
    signature: "void addRangeClause(RangeQueryClause **rqlist, Node *clause,\n\t\t\t
      \  bool varonleft, bool isLTsel, Selectivity s2)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:530,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:544,1
    - Dst: find_single_rel_for_clauses
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:548,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:561,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:564,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:566,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:575,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 2
    argNames:
    - root
    - clauses
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 522
    functionDepth: 2
    functionLinenumber: 522
    functionLinenumberEnd: 578
    functionName: find_single_rel_for_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 3
    functionsReached:
    - IsA
    - find_single_rel_for_clauses
    - is_andclause
    - lfirst
    - find_base_rel
    - bms_is_empty
    - bms_get_singleton_member
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      find_single_rel_for_clauses(PlannerInfo *root, List *clauses)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:530,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:544,1
    - Dst: find_single_rel_for_clauses
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:548,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:561,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:564,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:566,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 528
    functionDepth: 3
    functionLinenumber: 528
    functionLinenumberEnd: 572
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 290
    functionsReached:
    - IsA
    - find_single_rel_for_clauses
    - is_andclause
    - lfirst
    - bms_is_empty
    - bms_get_singleton_member
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NumRelids
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:623,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - root
    - clause
    - rinfo
    - varRelid
    - sjinfo
    argTypes:
    - PlannerInfo*
    - Node*
    - RestrictInfo*
    - int
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 585
    functionDepth: 2
    functionLinenumber: 585
    functionLinenumberEnd: 625
    functionName: treat_as_join_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 0
    functionsReached:
    - NumRelids
    linkageType: ''
    returnType: bool
    signature: "bool treat_as_join_clause(PlannerInfo *root, Node *clause, RestrictInfo
      *rinfo,\n\t\t\t\t\t int varRelid, SpecialJoinInfo *sjinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - root
    - clause
    - varRelid
    - jointype
    - sjinfo
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    - JoinType
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 675
    functionName: clause_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 1
    functionsReached:
    - clause_selectivity_ext
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity clause_selectivity(PlannerInfo *root,\n\t\t\t\t   Node
      *clause,\n\t\t\t\t   int varRelid,\n\t\t\t\t   JoinType jointype,\n\t\t\t\t
      \  SpecialJoinInfo *sjinfo)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:698,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:712,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:730,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:757,1
    - Dst: boolvarsel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:769,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:772,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:778,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:780,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:783,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:785,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:791,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:798,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:801,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:802,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:808,1
    - Dst: clauselist_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:811,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:818,1
    - Dst: clauselist_selectivity_or
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:824,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:831,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:831,1
    - Dst: treat_as_join_clause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:836,1
    - Dst: join_selectivity
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:839,1
    - Dst: restriction_selectivity
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:848,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:860,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:863,1
    - Dst: function_selectivity
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:868,1
    - Dst: treat_as_join_clause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:872,1
    - Dst: boolvarsel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:880,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:882,1
    - Dst: scalararraysel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:885,1
    - Dst: treat_as_join_clause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:887,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:893,1
    - Dst: rowcomparesel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:896,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:902,1
    - Dst: nulltestsel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:905,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:912,1
    - Dst: booltestsel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:915,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:922,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:926,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:931,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:934,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:941,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:944,1
    - Dst: boolvarsel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:960,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:973,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 91
    argCount: 6
    argNames:
    - root
    - clause
    - varRelid
    - jointype
    - sjinfo
    - use_extended_stats
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    - JoinType
    - SpecialJoinInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 683
    functionDepth: 4
    functionLinenumber: 683
    functionLinenumberEnd: 977
    functionName: clause_selectivity_ext
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 6
    functionsReached:
    - restriction_selectivity
    - is_opclause
    - nulltestsel
    - DatumGetBool
    - elog
    - treat_as_join_clause
    - bms_is_member
    - scalararraysel
    - rowcomparesel
    - find_base_rel
    - get_notclausearg
    - function_selectivity
    - is_notclause
    - booltestsel
    - join_selectivity
    - is_andclause
    - estimate_expression_value
    - is_orclause
    - clauselist_selectivity_ext
    - clause_selectivity_ext
    - clauselist_selectivity_or
    - is_funcclause
    - IsA
    - boolvarsel
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity clause_selectivity_ext(PlannerInfo *root,\n\t\t\t\t\t
      \  Node *clause,\n\t\t\t\t\t   int varRelid,\n\t\t\t\t\t   JoinType jointype,\n\t\t\t\t\t
      \  SpecialJoinInfo *sjinfo,\n\t\t\t\t\t   bool use_extended_stats)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: LOG2
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOG2(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:223,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:228,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - nrows
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 231
    functionName: clamp_row_est
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 8
    functionsReached:
    - isnan
    - rint
    linkageType: ''
    returnType: double
    signature: double clamp_row_est(double nrows)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tuple_width
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 260
    functionName: clamp_width_est
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 5
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int32
    signature: int32 clamp_width_est(int64 tuple_width)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:284,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:293,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:303,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:315,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 340
    functionName: cost_seqscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_tablespace_page_costs
    - get_restriction_qual_cost
    - clamp_row_est
    - get_parallel_divisor
    linkageType: ''
    returnType: void
    signature: "void cost_seqscan(Path *path, PlannerInfo *root,\n\t\t\t RelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:366,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:368,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:370,1
    - Dst: GetTsmRoutine
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:371,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:380,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 418
    functionName: cost_samplescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - GetTsmRoutine
    - Assert
    - get_tablespace_page_costs
    - get_restriction_qual_cost
    linkageType: ''
    returnType: void
    signature: "void cost_samplescan(Path *path, PlannerInfo *root,\n\t\t\t\tRelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - path
    - root
    - rel
    - param_info
    - rows
    argTypes:
    - GatherPath*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 458
    functionName: cost_gather
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void cost_gather(GatherPath *path, PlannerInfo *root,\n\t\t\tRelOptInfo
      *rel, ParamPathInfo *param_info,\n\t\t\tdouble *rows)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:496,1
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 8
    argNames:
    - path
    - root
    - rel
    - param_info
    - input_disabled_nodes
    - input_startup_cost
    - input_total_cost
    - rows
    argTypes:
    - GatherMergePath*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    - int
    - Cost
    - Cost
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 525
    functionName: cost_gather_merge
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - LOG2
    linkageType: ''
    returnType: void
    signature: "void cost_gather_merge(GatherMergePath *path, PlannerInfo *root,\n\t\t\t\t
      \ RelOptInfo *rel, ParamPathInfo *param_info,\n\t\t\t\t  int input_disabled_nodes,\n\t\t\t\t
      \ Cost input_startup_cost, Cost input_total_cost,\n\t\t\t\t  double *rows)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:575,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:575,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:576,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:578,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:591,1
    - Dst: extract_nonindex_conditions
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:591,1
    - Dst: extract_nonindex_conditions
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:593,1
    - Dst: extract_nonindex_conditions
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:600,1
    - Dst: amcostestimate
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:618,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:636,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:639,1
    - Dst: index_pages_fetched
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:680,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:686,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:702,1
    - Dst: index_pages_fetched
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:704,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:710,1
    - Dst: index_pages_fetched
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:720,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:726,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:734,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:737,1
    - Dst: compute_parallel_worker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:765,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:795,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:809,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:811,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 71
    argCount: 4
    argNames:
    - path
    - root
    - loop_count
    - partial_path
    argTypes:
    - IndexPath*
    - PlannerInfo*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 821
    functionName: cost_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - amcostestimate
    - compute_parallel_worker
    - Assert
    - get_tablespace_page_costs
    - ceil
    - list_concat
    - extract_nonindex_conditions
    - clamp_row_est
    - get_parallel_divisor
    - IsA
    - cost_qual_eval
    - index_pages_fetched
    linkageType: ''
    returnType: void
    signature: "void cost_index(IndexPath *path, PlannerInfo *root, double loop_count,\n\t\t
      \  bool partial_path)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:847,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:851,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:854,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - qual_clauses
    - indexclauses
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 839
    functionDepth: 2
    functionLinenumber: 839
    functionLinenumberEnd: 857
    functionName: extract_nonindex_conditions
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - is_redundant_with_indexclauses
    - lappend
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      extract_nonindex_conditions(List *qual_clauses, List *indexclauses)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:847,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:851,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:854,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 845
    functionDepth: 2
    functionLinenumber: 845
    functionLinenumberEnd: 855
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 290
    functionsReached:
    - is_redundant_with_indexclauses
    - lappend
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, qual_clauses)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:912,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:921,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:931,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:948,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - tuples_fetched
    - pages
    - index_pages
    - root
    argTypes:
    - double
    - BlockNumber
    - double
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 951
    functionName: index_pages_fetched
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - Max
    - ceil
    linkageType: ''
    returnType: double
    signature: "double index_pages_fetched(double tuples_fetched, BlockNumber pages,\n\t\t\t\t\tdouble
      index_pages, PlannerInfo *root)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:968,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:972,1
    - Dst: get_indexpath_pages
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:974,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:974,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:977,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:981,1
    - Dst: get_indexpath_pages
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:983,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:983,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:986,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:993,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:993,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - bitmapqual
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 996
    functionName: get_indexpath_pages
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - get_indexpath_pages
    - lfirst
    - IsA
    - nodeTag
    linkageType: ''
    returnType: double
    signature: double get_indexpath_pages(Path *bitmapqual)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1032,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1032,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1033,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1034,1
    - Dst: compute_bitmap_pages
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1042,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1050,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1064,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1079,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1088,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1093,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 6
    argNames:
    - path
    - root
    - baserel
    - param_info
    - bitmapqual
    - loop_count
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    - Path*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1012
    functionDepth: 2
    functionLinenumber: 1012
    functionLinenumberEnd: 1109
    functionName: cost_bitmap_heap_scan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - Assert
    - get_tablespace_page_costs
    - get_restriction_qual_cost
    - compute_bitmap_pages
    - clamp_row_est
    - get_parallel_divisor
    - IsA
    - sqrt
    linkageType: ''
    returnType: void
    signature: "void cost_bitmap_heap_scan(Path *path, PlannerInfo *root, RelOptInfo
      *baserel,\n\t\t\t\t\t  ParamPathInfo *param_info,\n\t\t\t\t\t  Path *bitmapqual,
      double loop_count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1118,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1131,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1136,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1143,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - path
    - cost
    - selec
    argTypes:
    - Path*
    - Cost*
    - Selectivity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1115
    functionDepth: 1
    functionLinenumber: 1115
    functionLinenumberEnd: 1146
    functionName: cost_bitmap_tree_node
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 3
    functionsReached:
    - elog
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void cost_bitmap_tree_node(Path *path, Cost *cost, Selectivity *selec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1176,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1178,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1182,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - path
    - root
    argTypes:
    - BitmapAndPath*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1158
    functionDepth: 2
    functionLinenumber: 1158
    functionLinenumberEnd: 1195
    functionName: cost_bitmap_and_node
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - cost_bitmap_tree_node
    - lfirst
    - list_head
    - foreach
    linkageType: ''
    returnType: void
    signature: void cost_bitmap_and_node(BitmapAndPath *path, PlannerInfo *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1222,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1224,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1228,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1233,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1234,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - path
    - root
    argTypes:
    - BitmapOrPath*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1203
    functionDepth: 2
    functionLinenumber: 1203
    functionLinenumberEnd: 1241
    functionName: cost_bitmap_or_node
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - foreach
    - lfirst
    - list_head
    - cost_bitmap_tree_node
    - Min
    - IsA
    linkageType: ''
    returnType: void
    signature: void cost_bitmap_or_node(BitmapOrPath *path, PlannerInfo *root)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1268,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1280,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1288,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1289,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1289,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1289,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1291,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1295,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1297,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1299,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1315,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1318,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1326,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 5
    argNames:
    - path
    - root
    - baserel
    - tidquals
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1251
    functionDepth: 1
    functionLinenumber: 1251
    functionLinenumberEnd: 1350
    functionName: cost_tidscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - estimate_array_length
    - Assert
    - get_tablespace_page_costs
    - get_restriction_qual_cost
    - lsecond
    - list_length
    - IsA
    - cost_qual_eval
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void cost_tidscan(Path *path, PlannerInfo *root,\n\t\t\t RelOptInfo
      *baserel, List *tidquals, ParamPathInfo *param_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1280,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1288,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1289,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1289,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1289,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1291,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1295,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1297,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1278
    functionDepth: 1
    functionLinenumber: 1278
    functionLinenumberEnd: 1309
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 293
    functionsReached:
    - estimate_array_length
    - Assert
    - lsecond
    - list_length
    - IsA
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, tidquals)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1381,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1382,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1391,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1393,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1413,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1416,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1424,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1445,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1461,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 5
    argNames:
    - path
    - root
    - baserel
    - tidrangequals
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1468
      start: 1361
    functionDepth: 2
    functionLinenumber: 1361
    functionLinenumberEnd: 1468
    functionName: cost_tidrangescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - clauselist_selectivity
    - Assert
    - get_tablespace_page_costs
    - ceil
    - get_restriction_qual_cost
    - clamp_row_est
    - get_parallel_divisor
    - cost_qual_eval
    linkageType: ''
    returnType: void
    signature: "void cost_tidrangescan(Path *path, PlannerInfo *root,\n\t\t\t\t  RelOptInfo
      *baserel, List *tidrangequals,\n\t\t\t\t  ParamPathInfo *param_info)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1491,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1492,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1501,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1506,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1507,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1542,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 5
    argNames:
    - path
    - root
    - baserel
    - param_info
    - trivial_pathtarget
    argTypes:
    - SubqueryScanPath*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1478
    functionDepth: 2
    functionLinenumber: 1478
    functionLinenumberEnd: 1554
    functionName: cost_subqueryscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - clauselist_selectivity
    - Assert
    - list_concat_copy
    - get_restriction_qual_cost
    - clamp_row_est
    linkageType: ''
    returnType: void
    signature: "void cost_subqueryscan(SubqueryScanPath *path, PlannerInfo *root,\n\t\t\t\t
      \ RelOptInfo *baserel, ParamPathInfo *param_info,\n\t\t\t\t  bool trivial_pathtarget)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1576,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1578,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1599,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1620
      start: 1563
    functionDepth: 1
    functionLinenumber: 1563
    functionLinenumberEnd: 1620
    functionName: cost_functionscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - planner_rt_fetch
    - cost_qual_eval_node
    - get_restriction_qual_cost
    linkageType: ''
    returnType: void
    signature: "void cost_functionscan(Path *path, PlannerInfo *root,\n\t\t\t\t  RelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1642,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1644,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1660,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1665,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1629
    functionDepth: 1
    functionLinenumber: 1629
    functionLinenumberEnd: 1681
    functionName: cost_tablefuncscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - planner_rt_fetch
    - cost_qual_eval_node
    - get_restriction_qual_cost
    linkageType: ''
    returnType: void
    signature: "void cost_tablefuncscan(Path *path, PlannerInfo *root,\n\t\t\t\t   RelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1702,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1733
      start: 1690
    functionDepth: 1
    functionLinenumber: 1690
    functionLinenumberEnd: 1733
    functionName: cost_valuesscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_restriction_qual_cost
    linkageType: ''
    returnType: void
    signature: "void cost_valuesscan(Path *path, PlannerInfo *root,\n\t\t\t\tRelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1756,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1757,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1769,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1785
      start: 1745
    functionDepth: 1
    functionLinenumber: 1745
    functionLinenumberEnd: 1785
    functionName: cost_ctescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - Assert
    - get_restriction_qual_cost
    linkageType: ''
    returnType: void
    signature: "void cost_ctescan(Path *path, PlannerInfo *root,\n\t\t\t RelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1802,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1803,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1791
    functionDepth: 1
    functionLinenumber: 1791
    functionLinenumberEnd: 1827
    functionName: cost_namedtuplestorescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_restriction_qual_cost
    linkageType: ''
    returnType: void
    signature: "void cost_namedtuplestorescan(Path *path, PlannerInfo *root,\n\t\t\t\t\t\t
      RelOptInfo *baserel, ParamPathInfo *param_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1845,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1854,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1866
      start: 1833
    functionDepth: 1
    functionLinenumber: 1833
    functionLinenumberEnd: 1866
    functionName: cost_resultscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_restriction_qual_cost
    linkageType: ''
    returnType: void
    signature: "void cost_resultscan(Path *path, PlannerInfo *root,\n\t\t\t\tRelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1911,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - runion
    - nrterm
    - rterm
    argTypes:
    - Path*
    - Path*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1875
    functionDepth: 0
    functionLinenumber: 1875
    functionLinenumberEnd: 1913
    functionName: cost_recursive_union
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Max
    linkageType: ''
    returnType: void
    signature: void cost_recursive_union(Path *runion, Path *nrterm, Path *rterm)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1957,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1976,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1989,1
    - Dst: tuplesort_merge_order
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1991,1
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2000,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2006,1
    - Dst: log
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2006,1
    - Dst: log
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2006,1
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2022,1
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2027,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 7
    argNames:
    - startup_cost
    - run_cost
    - tuples
    - width
    - comparison_cost
    - sort_mem
    - limit_tuples
    argTypes:
    - Cost*
    - Cost*
    - double
    - int
    - Cost
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 1951
    functionDepth: 1
    functionLinenumber: 1951
    functionLinenumberEnd: 2039
    functionName: cost_tuplesort
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 0
    functionsReached:
    - ceil
    - LOG2
    - tuplesort_merge_order
    - relation_byte_size
    - log
    linkageType: ''
    returnType: void
    signature: "void cost_tuplesort(Cost *startup_cost, Cost *run_cost,\n\t\t\t   double
      tuples, int width,\n\t\t\t   Cost comparison_cost, int sort_mem,\n\t\t\t   double
      limit_tuples)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2073,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2073,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2083,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2109,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2111,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2117,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2117,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2124,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2126,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2132,1
    - Dst: cost_tuplesort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2182,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 12
    argNames:
    - path
    - root
    - pathkeys
    - presorted_keys
    - input_disabled_nodes
    - input_startup_cost
    - input_total_cost
    - input_tuples
    - width
    - comparison_cost
    - sort_mem
    - limit_tuples
    argTypes:
    - Path*
    - PlannerInfo*
    - List*
    - int
    - int
    - Cost
    - Cost
    - double
    - int
    - Cost
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2187
      start: 2053
    functionDepth: 2
    functionLinenumber: 2053
    functionLinenumberEnd: 2187
    functionName: cost_incremental_sort
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 4
    functionsReached:
    - pull_varnos
    - Assert
    - linitial
    - bms_is_member
    - lappend
    - cost_tuplesort
    - lfirst
    - list_length
    - Min
    - foreach_current_index
    - estimate_num_groups
    linkageType: ''
    returnType: void
    signature: "void cost_incremental_sort(Path *path,\n\t\t\t\t\t  PlannerInfo *root,
      List *pathkeys, int presorted_keys,\n\t\t\t\t\t  int input_disabled_nodes,\n\t\t\t\t\t
      \ Cost input_startup_cost, Cost input_total_cost,\n\t\t\t\t\t  double input_tuples,
      int width, Cost comparison_cost, int sort_mem,\n\t\t\t\t\t  double limit_tuples)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2109,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2111,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2117,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2117,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2124,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2128
      start: 2107
    functionDepth: 2
    functionLinenumber: 2107
    functionLinenumberEnd: 2128
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 293
    functionsReached:
    - pull_varnos
    - linitial
    - bms_is_member
    - lappend
    - lfirst
    - foreach_current_index
    linkageType: ''
    returnType: void
    signature: void foreach(l, pathkeys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cost_tuplesort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 10
    argNames:
    - path
    - root
    - pathkeys
    - input_disabled_nodes
    - input_cost
    - tuples
    - width
    - comparison_cost
    - sort_mem
    - limit_tuples
    argTypes:
    - Path*
    - PlannerInfo*
    - List*
    - int
    - Cost
    - double
    - int
    - Cost
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 2201
    functionDepth: 2
    functionLinenumber: 2201
    functionLinenumberEnd: 2227
    functionName: cost_sort
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 7
    functionsReached:
    - cost_tuplesort
    linkageType: ''
    returnType: void
    signature: "void cost_sort(Path *path, PlannerInfo *root,\n\t\t  List *pathkeys,
      int input_disabled_nodes,\n\t\t  Cost input_cost, double tuples, int width,\n\t\t
      \ Cost comparison_cost, int sort_mem,\n\t\t  double limit_tuples)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2253,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2254,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2260,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2279,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - subpaths
    - numpaths
    - parallel_workers
    argTypes:
    - List*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2235
    functionDepth: 1
    functionLinenumber: 2235
    functionLinenumberEnd: 2305
    functionName: append_nonpartial_cost
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 0
    functionsReached:
    - Min
    - lfirst
    - palloc_array
    linkageType: ''
    returnType: Cost
    signature: Cost append_nonpartial_cost(List *subpaths, int numpaths, int parallel_workers)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2265
      start: 2258
    functionDepth: 1
    functionLinenumber: 2258
    functionLinenumberEnd: 2265
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 293
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, subpaths)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2294
      start: 2277
    functionDepth: 1
    functionLinenumber: 2277
    functionLinenumberEnd: 2294
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void for_each_cell(l, subpaths, cell)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2336,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2348,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2350,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2377,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2379,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2384,1
    - Dst: cost_incremental_sort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2399,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2414,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2442,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2445,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2447,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2457,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2473,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2480,1
    - Dst: append_nonpartial_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2487,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 53
    argCount: 2
    argNames:
    - apath
    - root
    argTypes:
    - AppendPath*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2498
      start: 2311
    functionDepth: 3
    functionLinenumber: 2311
    functionLinenumberEnd: 2498
    functionName: cost_append
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - foreach
    - append_nonpartial_cost
    - Assert
    - linitial
    - pathkeys_count_contained_in
    - lfirst
    - cost_incremental_sort
    - cost_sort
    - clamp_row_est
    - get_parallel_divisor
    - Min
    linkageType: ''
    returnType: void
    signature: void cost_append(AppendPath *apath, PlannerInfo *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 8
    argNames:
    - path
    - root
    - pathkeys
    - n_streams
    - input_disabled_nodes
    - input_startup_cost
    - input_total_cost
    - tuples
    argTypes:
    - Path*
    - PlannerInfo*
    - List*
    - int
    - int
    - Cost
    - Cost
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2525
    functionDepth: 1
    functionLinenumber: 2525
    functionLinenumberEnd: 2569
    functionName: cost_merge_append
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - LOG2
    linkageType: ''
    returnType: void
    signature: "void cost_merge_append(Path *path, PlannerInfo *root,\n\t\t\t\t  List
      *pathkeys, int n_streams,\n\t\t\t\t  int input_disabled_nodes,\n\t\t\t\t  Cost
      input_startup_cost, Cost input_total_cost,\n\t\t\t\t  double tuples)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2591,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 7
    argNames:
    - path
    - enabled
    - input_disabled_nodes
    - input_startup_cost
    - input_total_cost
    - tuples
    - width
    argTypes:
    - Path*
    - bool
    - int
    - Cost
    - Cost
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2583
    functionDepth: 1
    functionLinenumber: 2583
    functionLinenumberEnd: 2626
    functionName: cost_material
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - ceil
    - relation_byte_size
    linkageType: ''
    returnType: void
    signature: "void cost_material(Path *path,\n\t\t\t  bool enabled, int input_disabled_nodes,\n\t\t\t
      \ Cost input_startup_cost, Cost input_total_cost,\n\t\t\t  double tuples, int
      width)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2663,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2671,1
    - Dst: ExecEstimateCacheEntryOverheadBytes
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2672,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2675,1
    - Dst: get_expr_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2676,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2676,1
    - Dst: floor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2679,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2682,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2708,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2708,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2717,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2726,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2731,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 4
    argNames:
    - root
    - mpath
    - rescan_startup_cost
    - rescan_total_cost
    argTypes:
    - PlannerInfo*
    - MemoizePath*
    - Cost*
    - Cost*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2775
      start: 2641
    functionDepth: 1
    functionLinenumber: 2641
    functionLinenumberEnd: 2775
    functionName: cost_memoize_rescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 0
    functionsReached:
    - foreach
    - Assert
    - floor
    - get_expr_width
    - lfirst
    - Max
    - get_hash_memory_limit
    - ExecEstimateCacheEntryOverheadBytes
    - Min
    - estimate_num_groups
    - relation_byte_size
    linkageType: ''
    returnType: void
    signature: "void cost_memoize_rescan(PlannerInfo *root, MemoizePath *mpath,\n\t\t\t\t\tCost
      *rescan_startup_cost, Cost *rescan_total_cost)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2805,1
    - Dst: hash_agg_entry_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2930,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2930,1
    - Dst: hash_agg_set_limits
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2933,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2936,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2939,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2939,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2940,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2947,1
    - Dst: log
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2947,1
    - Dst: log
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2947,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2953,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2981,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2985,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2986,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 71
    argCount: 12
    argNames:
    - path
    - root
    - aggstrategy
    - aggcosts
    - numGroupCols
    - numGroups
    - quals
    - disabled_nodes
    - input_startup_cost
    - input_total_cost
    - input_tuples
    - input_width
    argTypes:
    - Path*
    - PlannerInfo*
    - AggStrategy
    - AggClauseCosts*
    - int
    - double
    - List*
    - int
    - Cost
    - Cost
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2997
      start: 2788
    functionDepth: 2
    functionLinenumber: 2788
    functionLinenumberEnd: 2997
    functionName: cost_agg
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 3
    functionsReached:
    - hash_agg_set_limits
    - clauselist_selectivity
    - Assert
    - ceil
    - Max
    - clamp_row_est
    - list_length
    - hash_agg_entry_size
    - cost_qual_eval
    - relation_byte_size
    - log
    linkageType: ''
    returnType: void
    signature: "void cost_agg(Path *path, PlannerInfo *root,\n\t\t AggStrategy aggstrategy,
      const AggClauseCosts *aggcosts,\n\t\t int numGroupCols, double numGroups,\n\t\t
      List *quals,\n\t\t int disabled_nodes,\n\t\t Cost input_startup_cost, Cost input_total_cost,\n\t\t
      double input_tuples, double input_width)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3028,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3031,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3033,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3049,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3053,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3095,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3115,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3134,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3138,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3178,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3188,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3199,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3207,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3216,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 77
    argCount: 3
    argNames:
    - root
    - wc
    - input_tuples
    argTypes:
    - PlannerInfo*
    - WindowClause*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3217
      start: 3012
    functionDepth: 5
    functionLinenumber: 3012
    functionLinenumberEnd: 3217
    functionName: get_windowclause_startup_tuples
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 0
    functionsReached:
    - IsA
    - Assert
    - list_free
    - DatumGetInt64
    - Min
    - DatumGetInt32
    - clamp_row_est
    - DatumGetInt16
    - get_sortgrouplist_exprs
    - estimate_num_groups
    linkageType: ''
    returnType: double
    signature: "double get_windowclause_startup_tuples(PlannerInfo *root, WindowClause
      *wc,\n\t\t\t\t\t\t\t\tdouble input_tuples)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3240,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3241,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3257,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3262,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3268,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3276,1
    - Dst: get_windowclause_startup_tuples
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 8
    argNames:
    - path
    - root
    - windowFuncs
    - winclause
    - input_disabled_nodes
    - input_startup_cost
    - input_total_cost
    - input_tuples
    argTypes:
    - Path*
    - PlannerInfo*
    - List*
    - WindowClause*
    - int
    - Cost
    - Cost
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3313
      start: 3226
    functionDepth: 6
    functionLinenumber: 3226
    functionLinenumberEnd: 3313
    functionName: cost_windowagg
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - get_windowclause_startup_tuples
    - cost_qual_eval_node
    - list_length
    - add_function_cost
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void cost_windowagg(Path *path, PlannerInfo *root,\n\t\t\t   List
      *windowFuncs, WindowClause *winclause,\n\t\t\t   int input_disabled_nodes,\n\t\t\t
      \  Cost input_startup_cost, Cost input_total_cost,\n\t\t\t   double input_tuples)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3257,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3262,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3268,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3281
      start: 3255
    functionDepth: 2
    functionLinenumber: 3255
    functionLinenumberEnd: 3281
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 295
    functionsReached:
    - add_function_cost
    - cost_qual_eval_node
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, windowFuncs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3353,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3357,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 9
    argNames:
    - path
    - root
    - numGroupCols
    - numGroups
    - quals
    - input_disabled_nodes
    - input_startup_cost
    - input_total_cost
    - input_tuples
    argTypes:
    - Path*
    - PlannerInfo*
    - int
    - double
    - List*
    - int
    - Cost
    - Cost
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3369
      start: 3323
    functionDepth: 2
    functionLinenumber: 3323
    functionLinenumberEnd: 3369
    functionName: cost_group
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - clauselist_selectivity
    - cost_qual_eval
    - clamp_row_est
    linkageType: ''
    returnType: void
    signature: "void cost_group(Path *path, PlannerInfo *root,\n\t\t   int numGroupCols,
      double numGroups,\n\t\t   List *quals,\n\t\t   int input_disabled_nodes,\n\t\t
      \  Cost input_startup_cost, Cost input_total_cost,\n\t\t   double input_tuples)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cost_rescan
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3416,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 7
    argNames:
    - root
    - workspace
    - jointype
    - enable_mask
    - outer_path
    - inner_path
    - extra
    argTypes:
    - PlannerInfo*
    - JoinCostWorkspace*
    - JoinType
    - uint64
    - Path*
    - Path*
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3467
      start: 3395
    functionDepth: 1
    functionLinenumber: 3395
    functionLinenumberEnd: 3467
    functionName: initial_cost_nestloop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - cost_rescan
    linkageType: ''
    returnType: void
    signature: "void initial_cost_nestloop(PlannerInfo *root, JoinCostWorkspace *workspace,\n\t\t\t\t\t
      \ JoinType jointype, uint64 enable_mask,\n\t\t\t\t\t  Path *outer_path, Path
      *inner_path,\n\t\t\t\t\t  JoinPathExtraData *extra)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3509,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3512,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3539,1
    - Dst: has_indexed_join_quals
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3558,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3635,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 4
    argNames:
    - root
    - path
    - workspace
    - extra
    argTypes:
    - PlannerInfo*
    - NestPath*
    - JoinCostWorkspace*
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3646
      start: 3477
    functionDepth: 2
    functionLinenumber: 3477
    functionLinenumberEnd: 3646
    functionName: final_cost_nestloop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - has_indexed_join_quals
    - clamp_row_est
    - rint
    - get_parallel_divisor
    - cost_qual_eval
    linkageType: ''
    returnType: void
    signature: "void final_cost_nestloop(PlannerInfo *root, NestPath *path,\n\t\t\t\t\tJoinCostWorkspace
      *workspace,\n\t\t\t\t\tJoinPathExtraData *extra)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3735,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3736,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3737,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3738,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3744,1
    - Dst: cached_scansel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3747,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3749,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3790,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3791,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3792,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3793,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3796,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3808,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3809,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3834,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3834,1
    - Dst: cost_incremental_sort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3842,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3857,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3893,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3893,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3900,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 90
    argCount: 10
    argNames:
    - root
    - workspace
    - jointype
    - mergeclauses
    - outer_path
    - inner_path
    - outersortkeys
    - innersortkeys
    - outer_presorted_keys
    - extra
    argTypes:
    - PlannerInfo*
    - JoinCostWorkspace*
    - JoinType
    - List*
    - Path*
    - Path*
    - List*
    - List*
    - int
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3948
      start: 3680
    functionDepth: 3
    functionLinenumber: 3680
    functionLinenumberEnd: 3948
    functionName: initial_cost_mergejoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - elog
    - Assert
    - linitial
    - pathkeys_contained_in
    - cost_incremental_sort
    - clamp_row_est
    - rint
    - cost_sort
    - cached_scansel
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: "void initial_cost_mergejoin(PlannerInfo *root, JoinCostWorkspace *workspace,\n\t\t\t\t\t
      \  JoinType jointype,\n\t\t\t\t\t   List *mergeclauses,\n\t\t\t\t\t   Path *outer_path,
      Path *inner_path,\n\t\t\t\t\t   List *outersortkeys, List *innersortkeys,\n\t\t\t\t\t
      \  int outer_presorted_keys,\n\t\t\t\t\t   JoinPathExtraData *extra)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4017,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4020,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4027,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4028,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4041,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4042,1
    - Dst: approx_tuple_count
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4051,1
    - Dst: RELATION_WAS_MADE_UNIQUE
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4080,1
    - Dst: ExecSupportsMarkRestore
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4155,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4171,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 57
    argCount: 4
    argNames:
    - root
    - path
    - workspace
    - extra
    argTypes:
    - PlannerInfo*
    - MergePath*
    - JoinCostWorkspace*
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4235
      start: 3977
    functionDepth: 2
    functionLinenumber: 3977
    functionLinenumberEnd: 4235
    functionName: final_cost_mergejoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - list_length
    - RELATION_WAS_MADE_UNIQUE
    - approx_tuple_count
    - ExecSupportsMarkRestore
    - clamp_row_est
    - get_parallel_divisor
    - cost_qual_eval
    - relation_byte_size
    linkageType: ''
    returnType: void
    signature: "void final_cost_mergejoin(PlannerInfo *root, MergePath *path,\n\t\t\t\t\t
      JoinCostWorkspace *workspace,\n\t\t\t\t\t JoinPathExtraData *extra)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4252,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4254,1
    - Dst: mergejoinscansel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4263,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4274,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4276,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4286,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - root
    - rinfo
    - pathkey
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - PathKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4291
      start: 4240
    functionDepth: 1
    functionLinenumber: 4240
    functionLinenumberEnd: 4291
    functionName: cached_scansel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - foreach
    - lappend
    - MemoryContextSwitchTo
    - lfirst
    - mergejoinscansel
    - palloc_object
    linkageType: ''
    returnType: MergeScanSelCache
    signature: 'MergeScanSelCache *

      cached_scansel(PlannerInfo *root, RestrictInfo *rinfo, PathKey *pathkey)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4333,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4374,1
    - Dst: ExecChooseHashTableSize
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4386,1
    - Dst: page_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4405,1
    - Dst: page_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 8
    argNames:
    - root
    - workspace
    - jointype
    - hashclauses
    - outer_path
    - inner_path
    - extra
    - parallel_hash
    argTypes:
    - PlannerInfo*
    - JoinCostWorkspace*
    - JoinType
    - List*
    - Path*
    - Path*
    - JoinPathExtraData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4425
      start: 4319
    functionDepth: 1
    functionLinenumber: 4319
    functionLinenumberEnd: 4425
    functionName: initial_cost_hashjoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - list_length
    - ExecChooseHashTableSize
    - page_size
    - get_parallel_divisor
    linkageType: ''
    returnType: void
    signature: "void initial_cost_hashjoin(PlannerInfo *root, JoinCostWorkspace *workspace,\n\t\t\t\t\t
      \ JoinType jointype,\n\t\t\t\t\t  List *hashclauses,\n\t\t\t\t\t  Path *outer_path,
      Path *inner_path,\n\t\t\t\t\t  JoinPathExtraData *extra,\n\t\t\t\t\t  bool parallel_hash)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4474,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4477,1
    - Dst: RELATION_WAS_MADE_UNIQUE
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4499,1
    - Dst: estimate_multivariate_bucketsize
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4513,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4521,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4533,1
    - Dst: estimate_hash_bucket_stats
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4541,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4552,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4552,1
    - Dst: estimate_hash_bucket_stats
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4559,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4560,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4585,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4585,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4586,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4593,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4594,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4619,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4624,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4641,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4663,1
    - Dst: approx_tuple_count
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4670,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 67
    argCount: 4
    argNames:
    - root
    - path
    - workspace
    - extra
    argTypes:
    - PlannerInfo*
    - HashPath*
    - JoinCostWorkspace*
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4689
      start: 4438
    functionDepth: 2
    functionLinenumber: 4438
    functionLinenumberEnd: 4689
    functionName: final_cost_hashjoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - rint
    - get_rightop
    - RELATION_WAS_MADE_UNIQUE
    - get_leftop
    - Assert
    - approx_tuple_count
    - cost_qual_eval
    - estimate_hash_bucket_stats
    - clamp_row_est
    - get_hash_memory_limit
    - get_parallel_divisor
    - bms_is_subset
    - estimate_multivariate_bucketsize
    - relation_byte_size
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void final_cost_hashjoin(PlannerInfo *root, HashPath *path,\n\t\t\t\t\tJoinCostWorkspace
      *workspace,\n\t\t\t\t\tJoinPathExtraData *extra)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4521,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4533,1
    - Dst: estimate_hash_bucket_stats
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4541,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4552,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4552,1
    - Dst: estimate_hash_bucket_stats
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4559,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4560,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4574
      start: 4519
    functionDepth: 2
    functionLinenumber: 4519
    functionLinenumberEnd: 4574
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 296
    functionsReached:
    - get_rightop
    - get_leftop
    - Assert
    - estimate_hash_bucket_stats
    - bms_is_subset
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(hcl, otherclauses)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4719,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4720,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4757,1
    - Dst: ExecMaterializesOutput
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4781,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4781,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - root
    - subplan
    - plan
    argTypes:
    - PlannerInfo*
    - SubPlan*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4790
      start: 4699
    functionDepth: 2
    functionLinenumber: 4699
    functionLinenumberEnd: 4790
    functionName: cost_subplan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 3
    functionsReached:
    - ExecMaterializesOutput
    - cost_qual_eval
    - clamp_row_est
    - make_ands_implicit
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void cost_subplan(PlannerInfo *root, SubPlan *subplan, Plan *plan)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4855,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4862,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4882,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4889,1
    - Dst: cost_memoize_rescan
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4899,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 4
    argNames:
    - root
    - path
    - rescan_startup_cost
    - rescan_total_cost
    argTypes:
    - PlannerInfo*
    - Path*
    - Cost*
    - Cost*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4907
      start: 4807
    functionDepth: 2
    functionLinenumber: 4807
    functionLinenumberEnd: 4907
    functionName: cost_rescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - cost_memoize_rescan
    - ceil
    - relation_byte_size
    linkageType: ''
    returnType: void
    signature: "void cost_rescan(PlannerInfo *root, Path *path,\n\t\t\tCost *rescan_startup_cost,\t/*
      output parameters */\n\t\t\tCost *rescan_total_cost)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4936,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - cost
    - quals
    - root
    argTypes:
    - QualCost*
    - List*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4942
      start: 4922
    functionDepth: 1
    functionLinenumber: 4922
    functionLinenumberEnd: 4942
    functionName: cost_qual_eval
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 14
    functionsReached:
    - lfirst
    - cost_qual_eval_walker
    linkageType: ''
    returnType: void
    signature: void cost_qual_eval(QualCost *cost, List *quals, PlannerInfo *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4936,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4939
      start: 4934
    functionDepth: 1
    functionLinenumber: 4934
    functionLinenumberEnd: 4939
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 296
    functionsReached:
    - lfirst
    - cost_qual_eval_walker
    linkageType: ''
    returnType: void
    signature: void foreach(l, quals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - cost
    - qual
    - root
    argTypes:
    - QualCost*
    - Node*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4960
      start: 4948
    functionDepth: 1
    functionLinenumber: 4948
    functionLinenumberEnd: 4960
    functionName: cost_qual_eval_node
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 9
    functionsReached:
    - cost_qual_eval_walker
    linkageType: ''
    returnType: void
    signature: void cost_qual_eval_node(QualCost *cost, Node *qual, PlannerInfo *root)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4974,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4991,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4993,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5035,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5037,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5040,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5041,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5042,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5045,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5046,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5049,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5052,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5055,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5057,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5059,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5062,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5067,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5093,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5096,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5097,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5110,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5116,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5124,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5126,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5129,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5129,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5131,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5134,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5139,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5144,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5146,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5152,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5154,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5156,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5156,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5160,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5161,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5162,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5163,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5164,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5165,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5170,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5173,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5175,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5194,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5204,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5204,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5207,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5223,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 85
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - cost_qual_eval_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5224
      start: 4962
    functionDepth: 2
    functionLinenumber: 4962
    functionLinenumberEnd: 5224
    functionName: cost_qual_eval_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 4
    functionsReached:
    - elog
    - getTypeInputInfo
    - set_sa_opfuncid
    - cost_qual_eval_walker
    - estimate_array_length
    - foreach
    - get_opcode
    - exprType
    - set_opfuncid
    - linitial
    - expression_tree_walker
    - cost_qual_eval_node
    - lsecond
    - OidIsValid
    - add_function_cost
    - lfirst_oid
    - IsA
    - getTypeOutputInfo
    linkageType: ''
    returnType: bool
    signature: bool cost_qual_eval_walker(Node *node, cost_qual_eval_context *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - root
    - baserel
    - param_info
    - qpqual_cost
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    - QualCost*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5253
      start: 5238
    functionDepth: 2
    functionLinenumber: 5238
    functionLinenumberEnd: 5253
    functionName: get_restriction_qual_cost
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 12
    functionsReached:
    - cost_qual_eval
    linkageType: ''
    returnType: void
    signature: "void get_restriction_qual_cost(PlannerInfo *root, RelOptInfo *baserel,\n\t\t\t\t\t\t
      \ ParamPathInfo *param_info,\n\t\t\t\t\t\t  QualCost *qpqual_cost)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5304,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5309,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5311,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5312,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5321,1
    - Dst: init_dummy_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5330,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5332,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5339,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5340,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5358,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 8
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - sjinfo
    - restrictlist
    - semifactors
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - SpecialJoinInfo*
    - List*
    - SemiAntiJoinFactors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5365
      start: 5280
    functionDepth: 2
    functionLinenumber: 5280
    functionLinenumberEnd: 5365
    functionName: compute_semi_anti_join_factors
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - clauselist_selectivity
    - init_dummy_sjinfo
    - IS_OUTER_JOIN
    - list_free
    - lappend
    - Max
    - RINFO_IS_PUSHED_DOWN
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void compute_semi_anti_join_factors(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \  RelOptInfo *joinrel,\n\t\t\t\t\t\t\t   RelOptInfo *outerrel,\n\t\t\t\t\t\t\t
      \  RelOptInfo *innerrel,\n\t\t\t\t\t\t\t   JoinType jointype,\n\t\t\t\t\t\t\t
      \  SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t\t   List *restrictlist,\n\t\t\t\t\t\t\t
      \  SemiAntiJoinFactors *semifactors)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5309,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5311,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5313
      start: 5307
    functionDepth: 1
    functionLinenumber: 5307
    functionLinenumberEnd: 5313
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 297
    functionsReached:
    - lappend
    - RINFO_IS_PUSHED_DOWN
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, restrictlist)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5406,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5429,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5431,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5433,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5437,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - path
    argTypes:
    - NestPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5443
      start: 5377
    functionDepth: 2
    functionLinenumber: 5377
    functionLinenumberEnd: 5443
    functionName: has_indexed_join_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - foreach
    - is_redundant_with_indexclauses
    - join_clause_is_movable_into
    - lfirst
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool has_indexed_join_quals(NestPath *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_dummy_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5483,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5489,1
    - Dst: clause_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5492,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - root
    - path
    - quals
    argTypes:
    - PlannerInfo*
    - JoinPath*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5499
      start: 5470
    functionDepth: 2
    functionLinenumber: 5470
    functionLinenumberEnd: 5499
    functionName: approx_tuple_count
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - init_dummy_sjinfo
    - clamp_row_est
    - lfirst
    - clause_selectivity
    linkageType: ''
    returnType: double
    signature: double approx_tuple_count(PlannerInfo *root, JoinPath *path, List *quals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5489,1
    - Dst: clause_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5493
      start: 5487
    functionDepth: 2
    functionLinenumber: 5487
    functionLinenumberEnd: 5493
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 298
    functionsReached:
    - lfirst
    - clause_selectivity
    linkageType: ''
    returnType: void
    signature: void foreach(l, quals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5521,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5524,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5530,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5532,1
    - Dst: set_rel_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5535
      start: 5515
    functionDepth: 2
    functionLinenumber: 5515
    functionLinenumberEnd: 5535
    functionName: set_baserel_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - clauselist_selectivity
    - set_rel_width
    - Assert
    - clamp_row_est
    - cost_qual_eval
    linkageType: ''
    returnType: void
    signature: void set_baserel_size_estimates(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5558,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5560,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5565,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - root
    - rel
    - param_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5570
      start: 5545
    functionDepth: 2
    functionLinenumber: 5545
    functionLinenumberEnd: 5570
    functionName: get_parameterized_baserel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - clauselist_selectivity
    - list_concat_copy
    - clamp_row_est
    linkageType: ''
    returnType: double
    signature: "double get_parameterized_baserel_size(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t\t   List *param_clauses)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calc_joinrel_size_estimate
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - root
    - rel
    - outer_rel
    - inner_rel
    - sjinfo
    - restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5609
      start: 5594
    functionDepth: 1
    functionLinenumber: 5594
    functionLinenumberEnd: 5609
    functionName: set_joinrel_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 3
    functionsReached:
    - calc_joinrel_size_estimate
    linkageType: ''
    returnType: void
    signature: "void set_joinrel_size_estimates(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      \  RelOptInfo *outer_rel,\n\t\t\t\t\t\t   RelOptInfo *inner_rel,\n\t\t\t\t\t\t
      \  SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t   List *restrictlist)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calc_joinrel_size_estimate
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5644,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - root
    - rel
    - outer_path
    - inner_path
    - sjinfo
    - restrict_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5656
      start: 5626
    functionDepth: 1
    functionLinenumber: 5626
    functionLinenumberEnd: 5656
    functionName: get_parameterized_joinrel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - calc_joinrel_size_estimate
    linkageType: ''
    returnType: double
    signature: "double get_parameterized_joinrel_size(PlannerInfo *root, RelOptInfo
      *rel,\n\t\t\t\t\t\t\t   Path *outer_path,\n\t\t\t\t\t\t\t   Path *inner_path,\n\t\t\t\t\t\t\t
      \  SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t\t   List *restrict_clauses)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: get_foreign_key_join_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5698,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5709,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5718,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5720,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5721,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5723,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5727,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5732,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5739,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5740,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5744,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5794,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5799,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 8
    argNames:
    - root
    - joinrel
    - outer_rel
    - inner_rel
    - outer_rows
    - inner_rows
    - sjinfo
    - restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - double
    - double
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5800
      start: 5667
    functionDepth: 2
    functionLinenumber: 5667
    functionLinenumberEnd: 5800
    functionName: calc_joinrel_size_estimate
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - elog
    - clauselist_selectivity
    - IS_OUTER_JOIN
    - list_free
    - lappend
    - get_foreign_key_join_selectivity
    - clamp_row_est
    - RINFO_IS_PUSHED_DOWN
    - lfirst_node
    linkageType: ''
    returnType: double
    signature: "double calc_joinrel_size_estimate(PlannerInfo *root,\n\t\t\t\t\t\t
      \  RelOptInfo *joinrel,\n\t\t\t\t\t\t   RelOptInfo *outer_rel,\n\t\t\t\t\t\t
      \  RelOptInfo *inner_rel,\n\t\t\t\t\t\t   double outer_rows,\n\t\t\t\t\t\t   double
      inner_rows,\n\t\t\t\t\t\t   SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t   List *restrictlist)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5718,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5720,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5721,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5724
      start: 5716
    functionDepth: 1
    functionLinenumber: 5716
    functionLinenumberEnd: 5724
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 298
    functionsReached:
    - lappend
    - RINFO_IS_PUSHED_DOWN
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, restrictlist)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5830,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5832,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5841,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5842,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5844,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5845,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5863,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5873,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5878,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5912,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5921,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5922,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5953,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5956,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5996,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5997,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6008,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6009,1
    - Dst: find_derived_clause_for_ec_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6033,1
    - Dst: clause_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6041,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6055,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 54
    argCount: 5
    argNames:
    - root
    - outer_relids
    - inner_relids
    - sjinfo
    - restrictlist
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    - SpecialJoinInfo*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6057
      start: 5817
    functionDepth: 2
    functionLinenumber: 5817
    functionLinenumberEnd: 6057
    functionName: get_foreign_key_join_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - foreach_delete_current
    - foreach
    - bms_is_member
    - list_member_ptr
    - lappend
    - find_derived_clause_for_ec_member
    - clause_selectivity
    - lfirst
    - list_concat
    - list_copy
    - find_base_rel
    - Max
    - list_length
    - CLAMP_PROBABILITY
    - bms_membership
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity get_foreign_key_join_selectivity(PlannerInfo *root,\n\t\t\t\t\t\t\t\t
      Relids outer_relids,\n\t\t\t\t\t\t\t\t Relids inner_relids,\n\t\t\t\t\t\t\t\t
      SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t\t\t List **restrictlist)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5878,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5912,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5921,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5922,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5924
      start: 5876
    functionDepth: 1
    functionLinenumber: 5876
    functionLinenumberEnd: 5924
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 299
    functionsReached:
    - foreach_delete_current
    - lfirst
    - list_member_ptr
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, worklist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6077,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6078,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6078,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6084,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6093,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6095,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6125,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6129,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6137,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6138
      start: 6069
    functionDepth: 3
    functionLinenumber: 6069
    functionLinenumberEnd: 6138
    functionName: set_subquery_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - planner_rt_fetch
    - foreach
    - Assert
    - set_baserel_size_estimates
    - find_base_rel
    - IsA
    - fetch_upper_rel
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void set_subquery_size_estimates(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6156,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6158,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6165,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6167,1
    - Dst: expression_returns_set_rows
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6168,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6176
      start: 6149
    functionDepth: 3
    functionLinenumber: 6149
    functionLinenumberEnd: 6176
    functionName: set_function_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - foreach
    - Assert
    - expression_returns_set_rows
    - set_baserel_size_estimates
    - lfirst
    linkageType: ''
    returnType: void
    signature: void set_function_size_estimates(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6192,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6192,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6198
      start: 6187
    functionDepth: 3
    functionLinenumber: 6187
    functionLinenumberEnd: 6198
    functionName: set_tablefunc_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - planner_rt_fetch
    - set_baserel_size_estimates
    linkageType: ''
    returnType: void
    signature: void set_tablefunc_size_estimates(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6215,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6216,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6217,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6225,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6229
      start: 6209
    functionDepth: 3
    functionLinenumber: 6209
    functionLinenumberEnd: 6229
    functionName: set_values_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - planner_rt_fetch
    - set_baserel_size_estimates
    - list_length
    linkageType: ''
    returnType: void
    signature: void set_values_size_estimates(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6247,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6249,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6258,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - root
    - rel
    - cte_rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6268
      start: 6241
    functionDepth: 3
    functionLinenumber: 6241
    functionLinenumberEnd: 6268
    functionName: set_cte_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - Assert
    - planner_rt_fetch
    - set_baserel_size_estimates
    - clamp_row_est
    linkageType: ''
    returnType: void
    signature: void set_cte_size_estimates(PlannerInfo *root, RelOptInfo *rel, double
      cte_rows)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6285,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6286,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6287,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6301
      start: 6279
    functionDepth: 3
    functionLinenumber: 6279
    functionLinenumberEnd: 6301
    functionName: set_namedtuplestore_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - planner_rt_fetch
    - set_baserel_size_estimates
    linkageType: ''
    returnType: void
    signature: void set_namedtuplestore_size_estimates(PlannerInfo *root, RelOptInfo
      *rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6316,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6317,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6317,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6324
      start: 6312
    functionDepth: 3
    functionLinenumber: 6312
    functionLinenumberEnd: 6324
    functionName: set_result_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - planner_rt_fetch
    - set_baserel_size_estimates
    linkageType: ''
    returnType: void
    signature: void set_result_size_estimates(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6345,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6349,1
    - Dst: set_rel_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6352
      start: 6341
    functionDepth: 2
    functionLinenumber: 6341
    functionLinenumberEnd: 6352
    functionName: set_foreign_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - set_rel_width
    - cost_qual_eval
    linkageType: ''
    returnType: void
    signature: void set_foreign_size_estimates(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6379,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6388,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6390,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6405,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6406,1
    - Dst: get_attavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6433,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6447,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6451,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6458,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6462,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6476,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6476,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6476,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6477,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6480,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6492,1
    - Dst: get_relation_data_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6497,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6509,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6518,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6519
      start: 6376
    functionDepth: 4
    functionLinenumber: 6376
    functionLinenumberEnd: 6519
    functionName: set_rel_width
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - planner_rt_fetch
    - exprTypmod
    - foreach
    - clamp_width_est
    - Assert
    - exprType
    - get_attavgwidth
    - cost_qual_eval_node
    - find_placeholder_info
    - lfirst
    - get_relation_data_width
    - MAXALIGN
    - IsA
    - get_typavgwidth
    linkageType: ''
    returnType: void
    signature: void set_rel_width(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6543,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6545,1
    - Dst: get_expr_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6547,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6550,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6554,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - root
    - target
    argTypes:
    - PlannerInfo*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6563
      start: 6533
    functionDepth: 2
    functionLinenumber: 6533
    functionLinenumberEnd: 6563
    functionName: set_pathtarget_cost_width
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 6
    functionsReached:
    - foreach
    - clamp_width_est
    - cost_qual_eval_node
    - get_expr_width
    - lfirst
    - IsA
    linkageType: ''
    returnType: PathTarget
    signature: 'PathTarget *

      set_pathtarget_cost_width(PlannerInfo *root, PathTarget *target)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6576,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6581,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6584,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6604,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6609,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6609,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6610,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6612
      start: 6571
    functionDepth: 1
    functionLinenumber: 6571
    functionLinenumberEnd: 6612
    functionName: get_expr_width
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - exprTypmod
    - Assert
    - exprType
    - IS_SPECIAL_VARNO
    - IsA
    - get_typavgwidth
    linkageType: ''
    returnType: int32
    signature: int32 get_expr_width(PlannerInfo *root, const Node *expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6622,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tuples
    - width
    argTypes:
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6623
      start: 6619
    functionDepth: 1
    functionLinenumber: 6619
    functionLinenumberEnd: 6623
    functionName: relation_byte_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 7
    functionsReached:
    - MAXALIGN
    linkageType: ''
    returnType: double
    signature: double relation_byte_size(double tuples, int width)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6633,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tuples
    - width
    argTypes:
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6634
      start: 6630
    functionDepth: 2
    functionLinenumber: 6630
    functionLinenumberEnd: 6634
    functionName: page_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - ceil
    - relation_byte_size
    linkageType: ''
    returnType: double
    signature: double page_size(double tuples, int width)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6666
      start: 6640
    functionDepth: 0
    functionLinenumber: 6640
    functionLinenumberEnd: 6666
    functionName: get_parallel_divisor
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double get_parallel_divisor(Path *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6697,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6702,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6721,1
    - Dst: tbm_calculate_entries
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6722,1
    - Dst: index_pages_fetched
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6732,1
    - Dst: get_indexpath_pages
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6734,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6742,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6756,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6768,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 6
    argNames:
    - root
    - baserel
    - bitmapqual
    - loop_count
    - cost_p
    - tuples_p
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - double
    - Cost*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6779
      start: 6680
    functionDepth: 2
    functionLinenumber: 6680
    functionLinenumberEnd: 6779
    functionName: compute_bitmap_pages
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - ceil
    - get_indexpath_pages
    - Max
    - clamp_row_est
    - tbm_calculate_entries
    - cost_bitmap_tree_node
    - Min
    - index_pages_fetched
    linkageType: ''
    returnType: double
    signature: "double compute_bitmap_pages(PlannerInfo *root, RelOptInfo *baserel,\n\t\t\t\t\t
      Path *bitmapqual, double loop_count,\n\t\t\t\t\t Cost *cost_p, double *tuples_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6794,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6796,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6797
      start: 6791
    functionDepth: 2
    functionLinenumber: 6791
    functionLinenumberEnd: 6797
    functionName: compute_gather_rows
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 5
    functionsReached:
    - Assert
    - clamp_row_est
    - get_parallel_divisor
    linkageType: ''
    returnType: double
    signature: double compute_gather_rows(Path *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:66,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:72,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:74,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:86,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:88,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:94,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:96,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 5
    argNames:
    - root
    - eclass
    - opfamily
    - cmptype
    - nulls_first
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - Oid
    - CompareType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 99
    functionName: make_canonical_pathkey
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - elog
    - foreach
    - lappend
    - makeNode
    - MemoryContextSwitchTo
    - lfirst
    linkageType: ''
    returnType: PathKey
    signature: "PathKey *\nmake_canonical_pathkey(PlannerInfo *root,\n\t\t\t\t\t   EquivalenceClass
      *eclass, Oid opfamily,\n\t\t\t\t\t   CompareType cmptype, bool nulls_first)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:111,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:115,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:117,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - target
    - source
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 121
    functionName: append_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 2
    functionsReached:
    - Assert
    - lappend
    - pathkey_is_redundant
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      append_pathkeys(List *target, List *source)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:115,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:117,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 119
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 304
    functionsReached:
    - lappend
    - pathkey_is_redundant
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EC_MUST_BE_REDUNDANT
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:165,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - new_pathkey
    - pathkeys
    argTypes:
    - PathKey*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 178
    functionName: pathkey_is_redundant
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 2
    functionsReached:
    - lfirst
    - EC_MUST_BE_REDUNDANT
    linkageType: ''
    returnType: bool
    signature: bool pathkey_is_redundant(PathKey *new_pathkey, List *pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 175
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 304
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pathkeys)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:222,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:226,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:227,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:229,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:231,1
    - Dst: get_eclass_for_sort_expr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:235,1
    - Dst: make_canonical_pathkey
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:244,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 10
    argNames:
    - root
    - expr
    - opfamily
    - opcintype
    - collation
    - reverse_sort
    - nulls_first
    - sortref
    - rel
    - create_it
    argTypes:
    - PlannerInfo*
    - Expr*
    - Oid
    - Oid
    - Oid
    - bool
    - bool
    - Index
    - Relids
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 197
    functionDepth: 4
    functionLinenumber: 197
    functionLinenumberEnd: 246
    functionName: make_pathkey_from_sortinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - elog
    - get_eclass_for_sort_expr
    - get_mergejoin_opfamilies
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - make_canonical_pathkey
    linkageType: ''
    returnType: PathKey
    signature: "PathKey *\nmake_pathkey_from_sortinfo(PlannerInfo *root,\n\t\t\t\t\t\t
      \  Expr *expr,\n\t\t\t\t\t\t   Oid opfamily,\n\t\t\t\t\t\t   Oid opcintype,\n\t\t\t\t\t\t
      \  Oid collation,\n\t\t\t\t\t\t   bool reverse_sort,\n\t\t\t\t\t\t   bool nulls_first,\n\t\t\t\t\t\t
      \  Index sortref,\n\t\t\t\t\t\t   Relids rel,\n\t\t\t\t\t\t   bool create_it)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_ordering_op_properties
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:270,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:272,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:276,1
    - Dst: make_pathkey_from_sortinfo
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 7
    argNames:
    - root
    - expr
    - ordering_op
    - reverse_sort
    - nulls_first
    - sortref
    - create_it
    argTypes:
    - PlannerInfo*
    - Expr*
    - Oid
    - bool
    - bool
    - Index
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 255
    functionDepth: 5
    functionLinenumber: 255
    functionLinenumberEnd: 288
    functionName: make_pathkey_from_sortop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - elog
    - get_ordering_op_properties
    - make_pathkey_from_sortinfo
    - exprCollation
    linkageType: ''
    returnType: PathKey
    signature: "PathKey *\nmake_pathkey_from_sortop(PlannerInfo *root,\n\t\t\t\t\t\t
      Expr *expr,\n\t\t\t\t\t\t Oid ordering_op,\n\t\t\t\t\t\t bool reverse_sort,\n\t\t\t\t\t\t
      bool nulls_first,\n\t\t\t\t\t\t Index sortref,\n\t\t\t\t\t\t bool create_it)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:319,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:320,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - keys1
    - keys2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 335
    functionName: compare_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 10
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: PathKeysComparison
    signature: PathKeysComparison compare_pathkeys(List *keys1, List *keys2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:319,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 324
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 13
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void forboth(key1, keys1, key2, keys2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - keys1
    - keys2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 354
    functionName: pathkeys_contained_in
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 11
    functionsReached:
    - compare_pathkeys
    linkageType: ''
    returnType: bool
    signature: bool pathkeys_contained_in(List *keys1, List *keys2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:392,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:405,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:413,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:414,1
    - Dst: get_sortgroupref_clause_noerr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:423,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:433,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:433,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:435,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:436,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:440,1
    - Dst: list_concat_unique_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:443,1
    - Dst: list_concat_unique_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:445,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:448,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 4
    argNames:
    - pathkeys
    - group_pathkeys
    - group_clauses
    - num_groupby_pathkeys
    argTypes:
    - List*
    - List**
    - List**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 369
    functionDepth: 2
    functionLinenumber: 369
    functionLinenumberEnd: 450
    functionName: group_keys_reorder_by_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - list_copy_head
    - list_length
    - list_concat_unique_ptr
    - Assert
    - list_free
    - lappend
    - list_member_ptr
    - get_sortgroupref_clause_noerr
    - lfirst
    - OidIsValid
    - foreach_current_index
    linkageType: ''
    returnType: int
    signature: "int group_keys_reorder_by_pathkeys(List *pathkeys, List **group_pathkeys,\n\t\t\t\t\t\t\t
      \  List **group_clauses,\n\t\t\t\t\t\t\t   int num_groupby_pathkeys)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:405,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:413,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:414,1
    - Dst: get_sortgroupref_clause_noerr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:423,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:433,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:433,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:435,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:436,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 403
    functionDepth: 2
    functionLinenumber: 403
    functionLinenumberEnd: 437
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 304
    functionsReached:
    - Assert
    - lappend
    - list_member_ptr
    - get_sortgroupref_clause_noerr
    - lfirst
    - OidIsValid
    - foreach_current_index
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pathkeys)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:477,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:480,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:502,1
    - Dst: group_keys_reorder_by_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:506,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:511,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:513,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:517,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:523,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:527,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:532,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:534,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:534,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:535,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:535,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:535,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:536,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:536,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:537,1
    - Dst: list_difference_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:537,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:539,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:541,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:544,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - root
    - path
    argTypes:
    - PlannerInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 466
    functionDepth: 3
    functionLinenumber: 466
    functionLinenumberEnd: 550
    functionName: get_useful_group_keys_orderings
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 2
    functionsReached:
    - list_difference
    - compare_pathkeys
    - forboth
    - linitial_node
    - Assert
    - for_each_from
    - lappend
    - makeNode
    - list_difference_ptr
    - pathkeys_contained_in
    - group_keys_reorder_by_pathkeys
    - list_length
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      get_useful_group_keys_orderings(PlannerInfo *root, Path *path)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:570,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:590,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:591,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - keys1
    - keys2
    - n_common
    argTypes:
    - List*
    - List*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 604
    functionName: pathkeys_count_contained_in
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 19
    functionsReached:
    - list_length
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool pathkeys_count_contained_in(List *keys1, List *keys2, int *n_common)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:590,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 599
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 14
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void forboth(key1, keys1, key2, keys2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:630,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:641,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:644,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:645,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:645,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 9
    argCount: 5
    argNames:
    - paths
    - pathkeys
    - required_outer
    - cost_criterion
    - require_parallel_safe
    argTypes:
    - List*
    - List*
    - Relids
    - CostSelector
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 619
    functionDepth: 3
    functionLinenumber: 619
    functionLinenumberEnd: 649
    functionName: get_cheapest_path_for_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 7
    functionsReached:
    - lfirst
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - compare_path_costs
    - bms_is_subset
    linkageType: ''
    returnType: Path
    signature: "Path *\nget_cheapest_path_for_pathkeys(List *paths, List *pathkeys,\n\t\t\t\t\t\t\t
      \  Relids required_outer,\n\t\t\t\t\t\t\t   CostSelector cost_criterion,\n\t\t\t\t\t\t\t
      \  bool require_parallel_safe)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:630,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:641,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:644,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:645,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:645,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 628
    functionDepth: 3
    functionLinenumber: 628
    functionLinenumberEnd: 647
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 304
    functionsReached:
    - lfirst
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - compare_path_costs
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void foreach(l, paths)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:676,1
    - Dst: compare_fractional_path_costs
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:683,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:686,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:687,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:687,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 4
    argNames:
    - paths
    - pathkeys
    - required_outer
    - fraction
    argTypes:
    - List*
    - List*
    - Relids
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 665
    functionDepth: 3
    functionLinenumber: 665
    functionLinenumberEnd: 691
    functionName: get_cheapest_fractional_path_for_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 3
    functionsReached:
    - compare_fractional_path_costs
    - lfirst
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - bms_is_subset
    linkageType: ''
    returnType: Path
    signature: "Path *\nget_cheapest_fractional_path_for_pathkeys(List *paths,\n\t\t\t\t\t\t\t\t\t\t
      \ List *pathkeys,\n\t\t\t\t\t\t\t\t\t\t  Relids required_outer,\n\t\t\t\t\t\t\t\t\t\t
      \ double fraction)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:676,1
    - Dst: compare_fractional_path_costs
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:683,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:686,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:687,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:687,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 674
    functionDepth: 3
    functionLinenumber: 674
    functionLinenumberEnd: 689
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 304
    functionsReached:
    - compare_fractional_path_costs
    - lfirst
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void foreach(l, paths)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:705,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:708,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - paths
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 698
    functionDepth: 1
    functionLinenumber: 698
    functionLinenumberEnd: 713
    functionName: get_cheapest_parallel_safe_total_inner
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 5
    functionsReached:
    - lfirst
    - bms_is_empty
    - PATH_REQ_OUTER
    linkageType: ''
    returnType: Path
    signature: 'Path *

      get_cheapest_parallel_safe_total_inner(List *paths)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:705,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:708,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 710
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 304
    functionsReached:
    - lfirst
    - bms_is_empty
    - PATH_REQ_OUTER
    linkageType: ''
    returnType: void
    signature: void foreach(l, paths)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:752,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:754,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:770,1
    - Dst: make_pathkey_from_sortinfo
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:784,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:801,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:802,1
    - Dst: indexcol_is_bool_constant_for_query
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:816,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - root
    - index
    - scandir
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 739
    functionDepth: 5
    functionLinenumber: 739
    functionLinenumberEnd: 824
    functionName: build_index_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 1
    functionsReached:
    - pathkey_is_redundant
    - foreach
    - ScanDirectionIsBackward
    - lappend
    - make_pathkey_from_sortinfo
    - indexcol_is_bool_constant_for_query
    - lfirst
    linkageType: ''
    returnType: List
    signature: "List *\nbuild_index_pathkeys(PlannerInfo *root,\n\t\t\t\t\t IndexOptInfo
      *index,\n\t\t\t\t\t ScanDirection scandir)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsBuiltinBooleanOpfamily
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:855,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:859,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:861,1
    - Dst: matches_boolean_partition_clause
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:868,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - partrel
    - partkeycol
    argTypes:
    - RelOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 873
    functionName: partkey_is_bool_constant_for_query
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - lfirst
    - matches_boolean_partition_clause
    - foreach
    - IsBuiltinBooleanOpfamily
    linkageType: ''
    returnType: bool
    signature: bool partkey_is_bool_constant_for_query(RelOptInfo *partrel, int partkeycol)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:888,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:891,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:894,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:896,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:898,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - rinfo
    - partrel
    - partkeycol
    argTypes:
    - RestrictInfo*
    - RelOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 883
    functionDepth: 2
    functionLinenumber: 883
    functionLinenumberEnd: 903
    functionName: matches_boolean_partition_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 1
    functionsReached:
    - equal
    - linitial
    - is_notclause
    - get_notclausearg
    linkageType: ''
    returnType: bool
    signature: "bool matches_boolean_partition_clause(RestrictInfo *rinfo,\n\t\t\t\t\t\t\t\t
      RelOptInfo *partrel, int partkeycol)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:926,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:927,1
    - Dst: partitions_are_ordered
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:927,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:929,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:929,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:934,1
    - Dst: make_pathkey_from_sortinfo
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:943,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:948,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:949,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:961,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:962,1
    - Dst: partkey_is_bool_constant_for_query
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:976,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - root
    - partrel
    - scandir
    - partialkeys
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - ScanDirection
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 918
    functionDepth: 5
    functionLinenumber: 918
    functionLinenumberEnd: 986
    functionName: build_partition_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 1
    functionsReached:
    - pathkey_is_redundant
    - ScanDirectionIsBackward
    - Assert
    - linitial
    - partkey_is_bool_constant_for_query
    - lappend
    - make_pathkey_from_sortinfo
    - partitions_are_ordered
    - IS_SIMPLE_REL
    linkageType: ''
    returnType: List
    signature: "List *\nbuild_partition_pathkeys(PlannerInfo *root, RelOptInfo *partrel,\n\t\t\t\t\t\t
      ScanDirection scandir, bool *partialkeys)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_ordering_op_properties
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1013,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1015,1
    - Dst: make_pathkey_from_sortinfo
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1018,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1022,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1030,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - root
    - expr
    - opno
    - rel
    - create_it
    argTypes:
    - PlannerInfo*
    - Expr*
    - Oid
    - Relids
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 999
    functionDepth: 5
    functionLinenumber: 999
    functionLinenumberEnd: 1035
    functionName: build_expression_pathkey
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 1
    functionsReached:
    - elog
    - get_ordering_op_properties
    - make_pathkey_from_sortinfo
    - exprCollation
    - list_make1
    linkageType: ''
    returnType: List
    signature: "List *\nbuild_expression_pathkey(PlannerInfo *root,\n\t\t\t\t\t\t
      Expr *expr,\n\t\t\t\t\t\t Oid opno,\n\t\t\t\t\t\t Relids rel,\n\t\t\t\t\t\t
      bool create_it)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1060,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1065,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1080,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1082,1
    - Dst: find_var_for_subquery_tle
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1084,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1091,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1091,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1092,1
    - Dst: get_eclass_for_sort_expr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1103,1
    - Dst: make_canonical_pathkey
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1118,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1147,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1156,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1160,1
    - Dst: find_var_for_subquery_tle
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1168,1
    - Dst: canonicalize_ec_expression
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1178,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1181,1
    - Dst: get_eclass_for_sort_expr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1185,1
    - Dst: make_canonical_pathkey
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1201,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1207,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1210,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1232,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1234,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 4
    argNames:
    - root
    - rel
    - subquery_pathkeys
    - subquery_tlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1053
    functionDepth: 4
    functionLinenumber: 1053
    functionLinenumberEnd: 1240
    functionName: convert_subquery_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 3
    functionsReached:
    - elog
    - get_eclass_for_sort_expr
    - equal
    - foreach
    - pathkey_is_redundant
    - get_sortgroupref_tle
    - Assert
    - linitial
    - find_var_for_subquery_tle
    - lappend
    - canonicalize_ec_expression
    - lfirst
    - list_nth
    - list_length
    - make_canonical_pathkey
    linkageType: ''
    returnType: List
    signature: "List *\nconvert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      \ List *subquery_pathkeys,\n\t\t\t\t\t\t  List *subquery_tlist)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1065,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1080,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1082,1
    - Dst: find_var_for_subquery_tle
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1084,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1091,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1091,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1092,1
    - Dst: get_eclass_for_sort_expr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1103,1
    - Dst: make_canonical_pathkey
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1118,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1147,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1156,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1160,1
    - Dst: find_var_for_subquery_tle
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1168,1
    - Dst: canonicalize_ec_expression
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1178,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1181,1
    - Dst: get_eclass_for_sort_expr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1185,1
    - Dst: make_canonical_pathkey
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1201,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1207,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1210,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1232,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1234,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1063
    functionDepth: 4
    functionLinenumber: 1063
    functionLinenumberEnd: 1237
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 308
    functionsReached:
    - elog
    - get_eclass_for_sort_expr
    - equal
    - foreach
    - pathkey_is_redundant
    - get_sortgroupref_tle
    - Assert
    - linitial
    - find_var_for_subquery_tle
    - lappend
    - canonicalize_ec_expression
    - lfirst
    - list_nth
    - list_length
    - make_canonical_pathkey
    linkageType: ''
    returnType: void
    signature: void foreach(i, subquery_pathkeys)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1160,1
    - Dst: find_var_for_subquery_tle
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1168,1
    - Dst: canonicalize_ec_expression
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1178,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1181,1
    - Dst: get_eclass_for_sort_expr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1185,1
    - Dst: make_canonical_pathkey
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1201,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1207,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1210,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1158
    functionDepth: 4
    functionLinenumber: 1158
    functionLinenumberEnd: 1217
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 308
    functionsReached:
    - get_eclass_for_sort_expr
    - list_length
    - find_var_for_subquery_tle
    - canonicalize_ec_expression
    - lfirst
    - list_nth
    - equal
    - make_canonical_pathkey
    linkageType: ''
    returnType: void
    signature: void foreach(k, subquery_tlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1261,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1263,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1268,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - rel
    - tle
    argTypes:
    - RelOptInfo*
    - TargetEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1251
    functionDepth: 1
    functionLinenumber: 1251
    functionLinenumberEnd: 1275
    functionName: find_var_for_subquery_tle
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 3
    functionsReached:
    - copyObject
    - foreach
    - Assert
    - lfirst
    - IsA
    linkageType: ''
    returnType: Var
    signature: 'Var *

      find_var_for_subquery_tle(RelOptInfo *rel, TargetEntry *tle)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1301,1
    - Dst: truncate_useless_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 4
    argNames:
    - root
    - joinrel
    - jointype
    - outer_pathkeys
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - JoinType
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1294
    functionDepth: 1
    functionLinenumber: 1294
    functionLinenumberEnd: 1318
    functionName: build_join_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 5
    functionsReached:
    - Assert
    - truncate_useless_pathkeys
    linkageType: ''
    returnType: List
    signature: "List *\nbuild_join_pathkeys(PlannerInfo *root,\n\t\t\t\t\tRelOptInfo
      *joinrel,\n\t\t\t\t\tJoinType jointype,\n\t\t\t\t\tList *outer_pathkeys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - sortclauses
    - tlist
    argTypes:
    - PlannerInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1335
    functionDepth: 1
    functionLinenumber: 1335
    functionLinenumberEnd: 1353
    functionName: make_pathkeys_for_sortclauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 9
    functionsReached:
    - Assert
    - make_pathkeys_for_sortclauses_extended
    linkageType: ''
    returnType: List
    signature: "List *\nmake_pathkeys_for_sortclauses(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \ List *sortclauses,\n\t\t\t\t\t\t\t  List *tlist)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1393,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1395,1
    - Dst: get_sortgroupclause_expr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1399,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1400,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1407,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1409,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1410,1
    - Dst: make_pathkey_from_sortop
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1413,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1431,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1432,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1434,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 7
    argNames:
    - root
    - sortclauses
    - tlist
    - remove_redundant
    - remove_group_rtindex
    - sortable
    - set_ec_sortref
    argTypes:
    - PlannerInfo*
    - List**
    - List*
    - bool
    - bool
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1380
    functionDepth: 6
    functionLinenumber: 1380
    functionLinenumberEnd: 1437
    functionName: make_pathkeys_for_sortclauses_extended
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 3
    functionsReached:
    - foreach_delete_current
    - foreach
    - pathkey_is_redundant
    - Assert
    - remove_nulling_relids
    - get_sortgroupclause_expr
    - lappend
    - lfirst
    - make_pathkey_from_sortop
    - OidIsValid
    - bms_make_singleton
    linkageType: ''
    returnType: List
    signature: "List *\nmake_pathkeys_for_sortclauses_extended(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t
      \  List **sortclauses,\n\t\t\t\t\t\t\t\t\t   List *tlist,\n\t\t\t\t\t\t\t\t\t
      \  bool remove_redundant,\n\t\t\t\t\t\t\t\t\t   bool remove_group_rtindex,\n\t\t\t\t\t\t\t\t\t
      \  bool *sortable,\n\t\t\t\t\t\t\t\t\t   bool set_ec_sortref)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1470,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1472,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1473,1
    - Dst: op_input_types
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1476,1
    - Dst: get_eclass_for_sort_expr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1480,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1481,1
    - Dst: get_eclass_for_sort_expr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1489,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1462
    functionDepth: 4
    functionLinenumber: 1462
    functionLinenumberEnd: 1497
    functionName: initialize_mergeclause_eclasses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 1
    functionsReached:
    - get_eclass_for_sort_expr
    - get_leftop
    - get_rightop
    - Assert
    - op_input_types
    linkageType: ''
    returnType: void
    signature: void initialize_mergeclause_eclasses(PlannerInfo *root, RestrictInfo
      *restrictinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - root
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1509
    functionDepth: 1
    functionLinenumber: 1509
    functionLinenumberEnd: 1523
    functionName: update_mergeclause_eclasses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void update_mergeclause_eclasses(PlannerInfo *root, RestrictInfo *restrictinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1554,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1556,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1561,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1605,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1611,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1626,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - root
    - pathkeys
    - restrictinfos
    argTypes:
    - PlannerInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1630
      start: 1543
    functionDepth: 2
    functionLinenumber: 1543
    functionLinenumberEnd: 1630
    functionName: find_mergeclauses_for_outer_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 3
    functionsReached:
    - lfirst
    - update_mergeclause_eclasses
    - list_concat
    - lappend
    linkageType: ''
    returnType: List
    signature: "List *\nfind_mergeclauses_for_outer_pathkeys(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t
      List *pathkeys,\n\t\t\t\t\t\t\t\t\t List *restrictinfos)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1554,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1552
    functionDepth: 2
    functionLinenumber: 1552
    functionLinenumberEnd: 1557
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 310
    functionsReached:
    - lfirst
    - update_mergeclause_eclasses
    linkageType: ''
    returnType: void
    signature: void foreach(i, restrictinfos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1561,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1605,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1611,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1626,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1559
    functionDepth: 1
    functionLinenumber: 1559
    functionLinenumberEnd: 1627
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 310
    functionsReached:
    - lfirst
    - list_concat
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(i, pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1605,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1603
    functionDepth: 1
    functionLinenumber: 1603
    functionLinenumberEnd: 1612
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 310
    functionsReached:
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(j, restrictinfos)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1664,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1679,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1680,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1685,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1691,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1709,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1711,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1714,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1718,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1739,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1741,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1758,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1760,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1762,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1784,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1787,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1788,1
    - Dst: make_canonical_pathkey
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1820,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1826,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1826,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1827,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1830,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1831,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 74
    argCount: 3
    argNames:
    - root
    - mergeclauses
    - joinrel
    argTypes:
    - PlannerInfo*
    - List*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1834
      start: 1658
    functionDepth: 2
    functionLinenumber: 1658
    functionLinenumberEnd: 1834
    functionName: select_outer_pathkeys_for_merge
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 1
    functionsReached:
    - list_copy_head
    - foreach
    - pathkey_is_redundant
    - Assert
    - pfree
    - lappend
    - update_mergeclause_eclasses
    - linitial_oid
    - lfirst
    - list_copy
    - palloc
    - list_length
    - make_canonical_pathkey
    - bms_overlap
    linkageType: ''
    returnType: List
    signature: "List *\nselect_outer_pathkeys_for_merge(PlannerInfo *root,\n\t\t\t\t\t\t\t\tList
      *mergeclauses,\n\t\t\t\t\t\t\t\tRelOptInfo *joinrel)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1685,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1691,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1709,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1711,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1714,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1718,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1683
    functionDepth: 2
    functionLinenumber: 1683
    functionLinenumberEnd: 1725
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 312
    functionsReached:
    - foreach
    - Assert
    - update_mergeclause_eclasses
    - lfirst
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: void foreach(lc, mergeclauses)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1870,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1874,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1879,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1897,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1898,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1899,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1902,1
    - Dst: make_canonical_pathkey
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1913,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1928,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1929,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - root
    - mergeclauses
    - outer_pathkeys
    argTypes:
    - PlannerInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1857
    functionDepth: 2
    functionLinenumber: 1857
    functionLinenumberEnd: 1933
    functionName: make_inner_pathkeys_for_merge
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 3
    functionsReached:
    - elog
    - pathkey_is_redundant
    - lappend
    - update_mergeclause_eclasses
    - lnext
    - list_head
    - lfirst
    - make_canonical_pathkey
    linkageType: ''
    returnType: List
    signature: "List *\nmake_inner_pathkeys_for_merge(PlannerInfo *root,\n\t\t\t\t\t\t\t
      \ List *mergeclauses,\n\t\t\t\t\t\t\t  List *outer_pathkeys)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1874,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1879,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1897,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1898,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1899,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1902,1
    - Dst: make_canonical_pathkey
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1913,1
    - Dst: pathkey_is_redundant
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1928,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1929,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1930
      start: 1872
    functionDepth: 2
    functionLinenumber: 1872
    functionLinenumberEnd: 1930
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 312
    functionsReached:
    - elog
    - pathkey_is_redundant
    - lappend
    - update_mergeclause_eclasses
    - lnext
    - lfirst
    - make_canonical_pathkey
    linkageType: ''
    returnType: void
    signature: void foreach(lc, mergeclauses)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1976,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1977,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1979,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1985,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2004,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2006,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2013,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - root
    - mergeclauses
    - pathkeys
    argTypes:
    - PlannerInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 1960
    functionDepth: 2
    functionLinenumber: 1960
    functionLinenumberEnd: 2024
    functionName: trim_mergeclauses_for_inner_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 1
    functionsReached:
    - lappend
    - list_head
    - lnext
    - lfirst
    linkageType: ''
    returnType: List
    signature: "List *\ntrim_mergeclauses_for_inner_pathkeys(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\t
      List *mergeclauses,\n\t\t\t\t\t\t\t\t\t List *pathkeys)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:1985,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2004,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2006,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2013,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2021
      start: 1983
    functionDepth: 2
    functionLinenumber: 1983
    functionLinenumberEnd: 2021
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 312
    functionsReached:
    - lfirst
    - lnext
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(i, mergeclauses)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2063,1
    - Dst: right_merge_direction
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2068,1
    - Dst: eclass_useful_for_merging
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2077,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2086,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2088,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2092,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 3
    argNames:
    - root
    - rel
    - pathkeys
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2115
      start: 2055
    functionDepth: 2
    functionLinenumber: 2055
    functionLinenumberEnd: 2115
    functionName: pathkeys_useful_for_merging
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - foreach
    - right_merge_direction
    - update_mergeclause_eclasses
    - lfirst
    - eclass_useful_for_merging
    linkageType: ''
    returnType: int
    signature: int pathkeys_useful_for_merging(PlannerInfo *root, RelOptInfo *rel,
      List *pathkeys)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2063,1
    - Dst: right_merge_direction
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2068,1
    - Dst: eclass_useful_for_merging
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2077,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2086,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2088,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2092,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2061
    functionDepth: 2
    functionLinenumber: 2061
    functionLinenumberEnd: 2112
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 314
    functionsReached:
    - foreach
    - right_merge_direction
    - update_mergeclause_eclasses
    - lfirst
    - eclass_useful_for_merging
    linkageType: ''
    returnType: void
    signature: void foreach(i, pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2127,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - root
    - pathkey
    argTypes:
    - PlannerInfo*
    - PathKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2147
      start: 2122
    functionDepth: 1
    functionLinenumber: 2122
    functionLinenumberEnd: 2147
    functionName: right_merge_direction
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 2
    functionsReached:
    - lfirst
    - foreach
    linkageType: ''
    returnType: bool
    signature: bool right_merge_direction(PlannerInfo *root, PathKey *pathkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - keys1
    - keys2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2161
      start: 2153
    functionDepth: 2
    functionLinenumber: 2153
    functionLinenumberEnd: 2161
    functionName: count_common_leading_pathkeys_ordered
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - pathkeys_count_contained_in
    linkageType: ''
    returnType: int
    signature: int count_common_leading_pathkeys_ordered(List *keys1, List *keys2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - keys1
    - keys2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2191
      start: 2168
    functionDepth: 1
    functionLinenumber: 2168
    functionLinenumberEnd: 2191
    functionName: count_common_leading_pathkeys_unordered
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - list_member_ptr
    linkageType: ''
    returnType: int
    signature: int count_common_leading_pathkeys_unordered(List *keys1, List *keys2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2178
    functionDepth: 1
    functionLinenumber: 2178
    functionLinenumberEnd: 2188
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 21
    functionsReached:
    - list_member_ptr
    linkageType: ''
    returnType: void
    signature: void foreach_node(PathKey, pathkey, keys2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2206,1
    - Dst: count_common_leading_pathkeys_ordered
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2217,1
    - Dst: count_common_leading_pathkeys_ordered
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2224,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2229,1
    - Dst: count_common_leading_pathkeys_ordered
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2230,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2235,1
    - Dst: count_common_leading_pathkeys_unordered
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2243,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2248,1
    - Dst: count_common_leading_pathkeys_unordered
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2249,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2255,1
    - Dst: pathkeys_useful_for_merging
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2262,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2263,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2272,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - root
    - rel
    - pathkeys
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2273
      start: 2199
    functionDepth: 3
    functionLinenumber: 2199
    functionLinenumberEnd: 2273
    functionName: truncate_useless_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 2
    functionsReached:
    - list_copy_head
    - count_common_leading_pathkeys_ordered
    - pathkeys_useful_for_merging
    - Max
    - list_length
    - count_common_leading_pathkeys_unordered
    linkageType: ''
    returnType: List
    signature: "List *\ntruncate_useless_pathkeys(PlannerInfo *root,\n\t\t\t\t\t\t
      \ RelOptInfo *rel,\n\t\t\t\t\t\t  List *pathkeys)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2299
      start: 2290
    functionDepth: 0
    functionLinenumber: 2290
    functionLinenumberEnd: 2299
    functionName: has_useful_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool has_useful_pathkeys(PlannerInfo *root, RelOptInfo *rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/jit/jit.c:59,1
    - Dst: provider_init
      Src: /src/postgres/src/backend/jit/jit.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: pg_jit_available
    functionSourceFile: /src/postgres/src/backend/jit/jit.c
    functionUses: 0
    functionsReached:
    - provider_init
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_jit_available(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/jit/jit.c:91,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/jit.c:92,1
    - Dst: pg_file_exists
      Src: /src/postgres/src/backend/jit/jit.c:93,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/jit.c:95,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/jit/jit.c:112,1
    - Dst: init
      Src: /src/postgres/src/backend/jit/jit.c:113,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/jit.c:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 121
    functionName: provider_init
    functionSourceFile: /src/postgres/src/backend/jit/jit.c
    functionUses: 1
    functionsReached:
    - elog
    - load_external_function
    - pg_file_exists
    - init
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool provider_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reset_after_error
      Src: /src/postgres/src/backend/jit/jit.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 132
    functionName: jit_reset_after_error
    functionSourceFile: /src/postgres/src/backend/jit/jit.c
    functionUses: 1
    functionsReached:
    - reset_after_error
    linkageType: ''
    returnType: void
    signature: void jit_reset_after_error(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: release_context
      Src: /src/postgres/src/backend/jit/jit.c:141,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/jit.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - context
    argTypes:
    - JitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: jit_release_context
    functionSourceFile: /src/postgres/src/backend/jit/jit.c
    functionUses: 0
    functionsReached:
    - release_context
    - pfree
    linkageType: ''
    returnType: void
    signature: void jit_release_context(JitContext *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: provider_init
      Src: /src/postgres/src/backend/jit/jit.c:175,1
    - Dst: compile_expr
      Src: /src/postgres/src/backend/jit/jit.c:176,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 179
    functionName: jit_compile_expr
    functionSourceFile: /src/postgres/src/backend/jit/jit.c
    functionUses: 0
    functionsReached:
    - compile_expr
    - provider_init
    linkageType: ''
    returnType: bool
    signature: bool jit_compile_expr(struct ExprState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/jit/jit.c:186,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/jit/jit.c:187,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/jit/jit.c:188,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/jit/jit.c:189,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/jit/jit.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - dst
    - add
    argTypes:
    - JitInstrumentation*
    - JitInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 191
    functionName: InstrJitAgg
    functionSourceFile: /src/postgres/src/backend/jit/jit.c
    functionUses: 0
    functionsReached:
    - INSTR_TIME_ADD
    linkageType: ''
    returnType: void
    signature: void InstrJitAgg(JitInstrumentation *dst, JitInstrumentation *add)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - b
    - ','
    - mod
    - ','
    - funcname
    - ','
    - v_state
    - ','
    - op
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: build_EvalXFunc
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: build_EvalXFunc(b, mod, funcname, v_state, op, ...)
  - BBCount: 181
    BranchProfiles: []
    Callsites:
    - Dst: llvm_enter_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:143,1
    - Dst: llvm_create_context
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:150,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:154,1
    - Dst: llvm_mutable_module
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:156,1
    - Dst: LLVMGetModuleContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:157,1
    - Dst: LLVMCreateBuilderInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:159,1
    - Dst: llvm_expand_funcname
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:161,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:164,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:165,1
    - Dst: LLVMSetLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:166,1
    - Dst: LLVMSetVisibility
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:167,1
    - Dst: llvm_copy_attributes
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:168,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:170,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:173,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:174,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:175,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:177,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:179,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:184,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:189,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:196,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:201,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:206,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:211,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:216,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:221,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:228,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:233,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:238,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:243,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:248,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:253,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:258,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:263,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:268,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:273,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:278,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:283,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:290,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:295,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:302,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:304,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:307,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:316,1
    - Dst: ExecEvalStepOp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:319,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:321,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:321,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:322,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:322,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:331,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:332,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:334,1
    - Dst: LLVMBuildRet
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:336,1
    - Dst: LLVMBuildRet
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:341,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:341,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:367,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:385,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:390,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:391,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:392,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:396,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:406,1
    - Dst: slot_compile_deform
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:408,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:411,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:412,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:422,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:423,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:425,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:432,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:434,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:435,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:436,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:437,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:440,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:482,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:483,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:484,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:485,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:486,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:488,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:511,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:514,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:519,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:521,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:566,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:567,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:568,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:571,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:572,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:576,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:582,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:583,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:585,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:600,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:601,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:604,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:606,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:608,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:611,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:619,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:623,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:624,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:625,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:629,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:632,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:633,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:634,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:635,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:644,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:646,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:655,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:656,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:658,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:659,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:661,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:686,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:691,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:694,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:694,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:700,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:700,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:704,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:707,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:711,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:719,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:731,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:732,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:733,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:735,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:741,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:744,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:746,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:747,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:749,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:754,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:756,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:761,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:763,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:785,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:787,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:789,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:791,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:793,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:796,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:797,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:800,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:800,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:802,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:803,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:806,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:807,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:808,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:813,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:815,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:815,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:817,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:820,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:821,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:822,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:823,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:831,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:834,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:837,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:839,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:842,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:843,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:844,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:847,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:849,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:849,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:851,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:851,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:853,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:877,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:879,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:881,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:883,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:885,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:888,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:889,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:892,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:892,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:893,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:894,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:896,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:897,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:898,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:903,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:905,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:905,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:907,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:910,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:911,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:912,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:913,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:921,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:924,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:927,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:929,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:932,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:933,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:934,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:937,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:939,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:939,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:941,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:941,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:943,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:953,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:954,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:955,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:957,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:966,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:968,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:979,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:982,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:983,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:986,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:987,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:988,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:989,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:990,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:993,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:999,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1001,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1001,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1003,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1003,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1005,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1011,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1021,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1023,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1024,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1025,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1037,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1039,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1040,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1041,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1056,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1057,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1060,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1061,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1062,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1063,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1064,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1067,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1076,1
    - Dst: LLVMBuildSelect
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1080,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1081,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1082,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1083,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1084,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1086,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1087,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1087,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1089,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1095,1
    - Dst: LLVMBuildSelect
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1099,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1100,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1101,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1102,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1103,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1105,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1106,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1106,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1108,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1113,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1115,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1119,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1121,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1131,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1133,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1135,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1139,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1140,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1141,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1145,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1148,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1148,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1153,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1153,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1157,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1157,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1160,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1162,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1175,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1177,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1178,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1180,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1183,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1185,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1190,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1192,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1196,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1198,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1206,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1207,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1210,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1210,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1212,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1213,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1215,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1217,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1222,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1224,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1234,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1235,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1238,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1238,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1240,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1241,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1243,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1244,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1246,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1247,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1248,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1261,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1262,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1265,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1265,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1267,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1268,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1270,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1272,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1283,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1284,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1285,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1286,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1288,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1289,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1290,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1291,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1293,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1303,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1308,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1312,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1313,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1315,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1329,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1332,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1333,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1335,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1338,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1341,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1342,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1343,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1347,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1349,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1350,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1352,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1356,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1357,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1358,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1359,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1360,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1362,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1390,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1392,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1394,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1396,1
    - Dst: llvm_function_reference
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1399,1
    - Dst: llvm_function_reference
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1400,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1401,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1401,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1402,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1402,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1405,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1412,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1413,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1414,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1415,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1419,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1420,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1421,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1423,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1424,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1427,1
    - Dst: l_funcvaluep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1429,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1430,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1431,1
    - Dst: l_funcnullp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1432,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1434,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1435,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1438,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1441,1
    - Dst: LLVMBuildPhi
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1454,1
    - Dst: LLVMAddIncoming
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1455,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1457,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1466,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1467,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1468,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1474,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1477,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1480,1
    - Dst: l_funcvaluep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1481,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1482,1
    - Dst: l_funcnullp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1483,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1489,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1489,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1491,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1492,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1496,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1498,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1503,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1505,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1531,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1532,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1533,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1534,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1536,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1536,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1539,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1540,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1541,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1542,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1543,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1544,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1546,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1547,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1554,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1560,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1561,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1566,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1567,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1567,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1569,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1569,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1571,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1571,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1573,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1576,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1577,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1577,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1579,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1579,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1581,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1581,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1582,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1585,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1587,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1594,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1595,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1597,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1601,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1602,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1604,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1624,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1626,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1628,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1631,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1631,1
    - Dst: l_funcvalue
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1634,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1637,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1638,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1641,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1642,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1643,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1644,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1645,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1648,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1651,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1652,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1653,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1654,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1657,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1674,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1675,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1676,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1677,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1678,1
    - Dst: l_funcvaluep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1679,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1682,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1689,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1690,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1692,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1694,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1696,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1699,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1702,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1703,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1703,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1704,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1704,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1706,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1711,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1713,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1717,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1719,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1723,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1725,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1735,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1742,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1747,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1749,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1751,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1752,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1753,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1755,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1758,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1760,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1760,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1761,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1761,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1763,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1768,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1770,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1774,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1776,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1780,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1782,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1795,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1797,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1800,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1815,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1816,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1818,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1819,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1822,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1823,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1826,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1828,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1830,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1833,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1837,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1841,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1844,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1846,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1849,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1850,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1853,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1859,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1862,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1863,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1866,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1874,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1875,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1875,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1876,1
    - Dst: LLVMBuildTrunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1895,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1896,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1915,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1920,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1923,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1925,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1927,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1927,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1928,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1930,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1935,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1937,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1941,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1943,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1947,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1949,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1953,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1955,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1965,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1966,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1967,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1968,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1970,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1971,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1972,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1973,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1975,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1985,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1991,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1996,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1997,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1999,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2004,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2006,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2010,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2012,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2019,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2021,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2022,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2022,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2023,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2057,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2058,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2064,1
    - Dst: LLVMBuildShl
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2070,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2070,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2072,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2073,1
    - Dst: LLVMBuildLShr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2074,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2075,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2076,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2084,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2090,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2092,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2093,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2095,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2098,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2107,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2111,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2117,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2117,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2118,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2118,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2119,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2123,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2127,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2130,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2130,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2134,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2144,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2150,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2150,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2153,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2156,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2159,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2160,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2161,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2164,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2169,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2182,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2183,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2189,1
    - Dst: LLVMBuildShl
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2195,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2195,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2197,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2198,1
    - Dst: LLVMBuildLShr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2199,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2200,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2201,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2206,1
    - Dst: LLVMBuildXor
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2215,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2218,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2219,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2219,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2221,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2226,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2228,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2232,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2234,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2238,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2240,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2244,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2246,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2250,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2252,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2256,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2258,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2270,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2293,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2296,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2299,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2302,1
    - Dst: LLVMBuildSwitch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2305,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2312,1
    - Dst: LLVMAddCase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2313,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2316,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2318,1
    - Dst: LLVMBuildUnreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2320,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2325,1
    - Dst: LLVMAddCase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2326,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2329,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2331,1
    - Dst: LLVMBuildUnreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2333,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2338,1
    - Dst: LLVMAddCase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2339,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2342,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2344,1
    - Dst: LLVMBuildUnreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2346,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2348,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2351,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2356,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2359,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2363,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2366,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2375,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2378,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2379,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2382,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2383,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2385,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2390,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2392,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2408,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2409,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2409,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2410,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2410,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2413,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2415,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2418,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2419,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2421,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2426,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2428,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2432,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2434,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2454,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2457,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2458,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2459,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2461,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2462,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2465,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2469,1
    - Dst: castNode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2472,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2476,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2477,1
    - Dst: l_mcxt_switch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2478,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2479,1
    - Dst: l_mcxt_switch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2481,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2483,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2484,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2486,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2503,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2506,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2506,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2507,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2507,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2510,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2514,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2519,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2524,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2528,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2536,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2541,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2543,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2548,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2549,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2552,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2574,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2575,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2577,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2583,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2585,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2585,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2588,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2589,1
    - Dst: LLVMBuildPtrToInt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2590,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2591,1
    - Dst: castNode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2634,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2640,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2640,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2641,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2642,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2649,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2654,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2655,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2657,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2659,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2659,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2672,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2678,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2680,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2683,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2684,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2685,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2693,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2695,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2696,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2703,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2704,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2705,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2706,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2709,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2712,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2723,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2726,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2732,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2733,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2734,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2738,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2742,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2743,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2744,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2745,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2748,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2754,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2760,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2767,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2768,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2768,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2770,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2774,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2775,1
    - Dst: l_mcxt_switch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2776,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2780,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2786,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2791,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2792,1
    - Dst: l_funcvaluep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2796,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2797,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2798,1
    - Dst: l_funcnullp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2799,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2802,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2826,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2828,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2831,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2832,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2838,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2839,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2845,1
    - Dst: LLVMBuildTrunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2850,1
    - Dst: LLVMBuildTrunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2853,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2856,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2858,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2859,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2861,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2865,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2866,1
    - Dst: l_mcxt_switch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2868,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2869,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2872,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2876,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2877,1
    - Dst: l_mcxt_switch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2879,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2881,1
    - Dst: castNode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2887,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2891,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2895,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2895,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2896,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2896,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2898,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2898,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2899,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2901,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2902,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2903,1
    - Dst: castNode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2911,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2915,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2919,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2919,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2920,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2920,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2922,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2922,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2923,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2925,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2926,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2927,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2934,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2936,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2940,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2942,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2946,1
    - Dst: LLVMDisposeBuilder
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2951,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2961,1
    - Dst: llvm_leave_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2970,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2972,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2973,1
    CyclomaticComplexity: 163
    EdgeCount: 163
    ICount: 1063
    argCount: 1
    argNames:
    - state
    argTypes:
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2977
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 2977
    functionName: llvm_compile_expr
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 0
    functionsReached:
    - l_bb_append_v
    - INSTR_TIME_ACCUM_DIFF
    - LLVMBuildSwitch
    - LLVMBuildPhi
    - llvm_pg_var_func_type
    - llvm_mutable_module
    - palloc_array
    - l_datum_const
    - LLVMBuildICmp
    - llvm_create_context
    - llvm_copy_attributes
    - LLVMAppendBasicBlockInContext
    - LLVMDisposeBuilder
    - l_funcvalue
    - LLVMBuildPtrToInt
    - LLVMGetParam
    - elog
    - llvm_pg_func
    - LLVMBuildLShr
    - llvm_expand_funcname
    - Assert
    - LLVMSetVisibility
    - l_load_struct_gep
    - LLVMBuildShl
    - LLVMBuildUnreachable
    - LLVMBuildStore
    - llvm_pg_var_type
    - LLVMBuildTrunc
    - l_call
    - l_bb_before_v
    - LLVMBuildSelect
    - l_int16_const
    - LLVMGetFunctionType
    - l_funcnullp
    - LLVMInt32TypeInContext
    - lengthof
    - llvm_enter_fatal_on_oom
    - palloc0_object
    - LLVMAddIncoming
    - ExecEvalStepOp
    - l_int32_const
    - l_load_gep1
    - build_EvalXFunc
    - l_funcnull
    - l_mcxt_switch
    - llvm_leave_fatal_on_oom
    - l_ptr
    - INSTR_TIME_SET_CURRENT
    - LLVMBuildBr
    - LLVMSetLinkage
    - l_sbool_const
    - BuildV1Call
    - LLVMGetModuleContext
    - LLVMBuildBitCast
    - slot_compile_deform
    - LLVMBuildRet
    - l_funcvaluep
    - l_ptr_const
    - LLVMBuildOr
    - l_load
    - l_gep
    - l_int8_const
    - LLVMAddFunction
    - LLVMBuildCondBr
    - llvm_function_reference
    - LLVMBuildXor
    - LLVMPositionBuilderAtEnd
    - l_struct_gep
    - LLVMAddCase
    - castNode
    - LLVMBuildAnd
    - palloc
    - LLVMBuildZExt
    - LLVMCreateBuilderInContext
    linkageType: ''
    returnType: bool
    signature: bool llvm_compile_expr(ExprState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckExprStillValid
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2993,1
    - Dst: llvm_enter_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2995,1
    - Dst: llvm_get_function
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2996,1
    - Dst: llvm_leave_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2999,1
    - Dst: func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - state
    - econtext
    - isNull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3005
      start: 2987
    functionDepth: 1
    functionLinenumber: 2987
    functionLinenumberEnd: 3005
    functionName: ExecRunCompiledExpr
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 0
    functionsReached:
    - llvm_enter_fatal_on_oom
    - func
    - CheckExprStillValid
    - Assert
    - llvm_leave_fatal_on_oom
    - llvm_get_function
    linkageType: ''
    returnType: Datum
    signature: Datum ExecRunCompiledExpr(ExprState *state, ExprContext *econtext,
      bool *isNull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: llvm_function_reference
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3017,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3019,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3019,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3020,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3025,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3025,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3027,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3027,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3030,1
    - Dst: LLVMGetModuleContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3039,1
    - Dst: create_LifetimeEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3040,1
    - Dst: l_int64_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3043,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3044,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3044,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3044,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3045,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3045,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3045,1
    - Dst: l_int64_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3047,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3048,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3048,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3048,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3049,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3049,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3049,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 5
    argNames:
    - context
    - b
    - mod
    - fcinfo
    - v_fcinfo_isnull
    argTypes:
    - LLVMJitContext*
    - LLVMBuilderRef
    - LLVMModuleRef
    - FunctionCallInfo
    - LLVMValueRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3054
      start: 3007
    functionDepth: 1
    functionLinenumber: 3007
    functionLinenumberEnd: 3054
    functionName: BuildV1Call
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 1
    functionsReached:
    - l_ptr_const
    - LLVMInt8TypeInContext
    - l_load
    - l_int64_const
    - LLVMBuildStore
    - llvm_function_reference
    - l_struct_gep
    - l_call
    - l_ptr
    - LLVMGetFunctionType
    - create_LifetimeEnd
    - l_sbool_const
    - lengthof
    - LLVMGetModuleContext
    linkageType: ''
    returnType: LLVMValueRef
    signature: "LLVMValueRef BuildV1Call(LLVMJitContext *context, LLVMBuilderRef b,\n\t\t\tLLVMModuleRef
      mod, FunctionCallInfo fcinfo,\n\t\t\tLLVMValueRef *v_fcinfo_isnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3064,1
    - Dst: LLVMCountParams
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3070,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3071,1
    - Dst: LLVMCountParams
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3072,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3074,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3077,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3077,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3082,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3082,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3084,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 7
    argNames:
    - b
    - mod
    - funcname
    - v_state
    - op
    - nargs
    - v_args
    argTypes:
    - LLVMBuilderRef
    - LLVMModuleRef
    - char*
    - LLVMValueRef
    - ExprEvalStep*
    - int
    - LLVMValueRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3087
      start: 3059
    functionDepth: 1
    functionLinenumber: 3059
    functionLinenumberEnd: 3087
    functionName: build_EvalXFuncInt
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 0
    functionsReached:
    - elog
    - llvm_pg_func
    - l_ptr_const
    - pfree
    - LLVMCountParams
    - palloc_array
    - l_call
    - l_ptr
    - LLVMGetFunctionType
    linkageType: ''
    returnType: LLVMValueRef
    signature: "LLVMValueRef build_EvalXFuncInt(LLVMBuilderRef b, LLVMModuleRef mod,
      const char *funcname,\n\t\t\t\t   LLVMValueRef v_state, ExprEvalStep *op,\n\t\t\t\t
      \  int nargs, LLVMValueRef *v_args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3101,1
    - Dst: LLVMGetModuleContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3105,1
    - Dst: LLVMInt64TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3106,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3107,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3107,1
    - Dst: LLVMFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3109,1
    - Dst: LLVMVoidTypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3109,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3110,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3111,1
    - Dst: LLVMSetFunctionCallConv
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3115,1
    - Dst: LLVMGetIntrinsicID
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - mod
    argTypes:
    - LLVMModuleRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3118
      start: 3090
    functionDepth: 1
    functionLinenumber: 3090
    functionLinenumberEnd: 3118
    functionName: create_LifetimeEnd
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 1
    functionsReached:
    - LLVMVoidTypeInContext
    - LLVMInt8TypeInContext
    - Assert
    - LLVMGetIntrinsicID
    - LLVMAddFunction
    - LLVMGetModuleContext
    - LLVMSetFunctionCallConv
    - LLVMFunctionType
    - l_ptr
    - LLVMGetNamedFunction
    - lengthof
    - LLVMInt64TypeInContext
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef create_LifetimeEnd(LLVMModuleRef mod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: croak_memory_wrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:40,1
    - Dst: llvm::unwrap<llvm::Function>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - r
    argTypes:
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: LLVMGetFunctionReturnType
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp
    functionUses: 0
    functionsReached:
    - croak_memory_wrap
    - llvm::unwrap<llvm::Function>
    linkageType: ''
    returnType: LLVMTypeRef
    signature: LLVMTypeRef LLVMGetFunctionReturnType(LLVMValueRef r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: croak_memory_wrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:46,1
    - Dst: llvm::unwrap<llvm::Function>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - r
    argTypes:
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: LLVMGetFunctionType
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp
    functionUses: 3
    functionsReached:
    - croak_memory_wrap
    - llvm::unwrap<llvm::Function>
    linkageType: ''
    returnType: LLVMTypeRef
    signature: LLVMTypeRef LLVMGetFunctionType(LLVMValueRef r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:57,1
    - Dst: unwrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:58,1
    - Dst: std::make_unique<llvm::backport::SectionMemoryManager>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:59,1
    - Dst: llvm::orc::RTDyldObjectLinkingLayer::RTDyldObjectLinkingLayer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:57,1
    - Dst: wrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:62,1
    - Dst: unwrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:63,1
    - Dst: std::make_unique<llvm::backport::SectionMemoryManager>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:63,1
    - Dst: llvm::orc::RTDyldObjectLinkingLayer::RTDyldObjectLinkingLayer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ES
    argTypes:
    - LLVMOrcExecutionSessionRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 65
    functionName: LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp
    functionUses: 0
    functionsReached:
    - wrap
    - unwrap
    - std::make_unique<llvm::backport::SectionMemoryManager>
    - llvm::orc::RTDyldObjectLinkingLayer::RTDyldObjectLinkingLayer
    linkageType: ''
    returnType: LLVMOrcObjectLayerRef
    signature: LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager(LLVMOrcExecutionSessionRef
      ES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    functionName: ilog
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ilog(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:158,1
    - Dst: clear
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 160
    functionName: llvm_inline_reset_caches
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void llvm_inline_reset_caches(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetModuleContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:169,1
    - Dst: llvm::unwrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:170,1
    - Dst: llvm_build_inline_plan
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:172,1
    - Dst: llvm_execute_inline_plan
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:175,1
    - Dst: std::unique_ptr::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - M
    argTypes:
    - LLVMModuleRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 176
    functionName: llvm_inline
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 0
    functionsReached:
    - llvm::unwrap
    - llvm_build_inline_plan
    - llvm_execute_inline_plan
    - LLVMGetModuleContext
    - std::unique_ptr::get
    linkageType: ''
    returnType: void
    signature: void llvm_inline(LLVMModuleRef M)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ImportMapTy::ImportMapTy
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:185,1
    - Dst: add_module_to_inline_search_path
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:192,1
    - Dst: InlineSearchPath::empty
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:194,1
    - Dst: llvm::Module*::functions
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:203,1
    - Dst: isDeclaration
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:209,1
    - Dst: isIntrinsic
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:213,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:216,1
    - Dst: InlineWorkList::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:218,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:223,1
    - Dst: InlineWorkList::empty
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:230,1
    - Dst: InlineWorkList::pop_back_val
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:232,1
    - Dst: llvm_split_symbol_name
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:239,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:239,1
    - Dst: llvm::GlobalValue::getGUIDAssumingExternalLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:242,1
    - Dst: llvm::GlobalValue::getGUID
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:244,1
    - Dst: add_module_to_inline_search_path
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:253,1
    - Dst: summaries_for_guid
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:260,1
    - Dst: modulePath
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:263,1
    - Dst: llvm::cast<llvm::FunctionSummary>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:267,1
    - Dst: notEligibleToImport
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:269,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:271,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:272,1
    - Dst: llvm::FunctionSummary*::instCount
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:276,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:278,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:279,1
    - Dst: llvm::FunctionSummary*::instCount
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:279,1
    - Dst: load_module_cached
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:284,1
    - Dst: llvm::Module*::materializeMetadata
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:285,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:286,1
    - Dst: llvm::Module*::getFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:288,1
    - Dst: llvm::Function*::materialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:297,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:300,1
    - Dst: llvm::Function*::isDeclaration
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:301,1
    - Dst: llvm::Function*::hasExternalLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:301,1
    - Dst: function_inlinable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:311,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:329,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:330,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:335,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:336,1
    - Dst: llvm::FunctionSummary*::instCount
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:336,1
    - Dst: llvm::StringSet::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:339,1
    - Dst: llvm::StringSet::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:344,1
    - Dst: first
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:345,1
    - Dst: llvm::StringSet::size
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:345,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:359,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:360,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 65
    argCount: 2
    argNames:
    - lc
    - mod
    argTypes:
    - LLVMContextRef
    - llvm::Module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 374
    functionName: llvm_build_inline_plan
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - add_module_to_inline_search_path
    - getName
    - summaries_for_guid
    - llvm::StringSet::size
    - InlineWorkList::push_back
    - InlineWorkList::pop_back_val
    - llvm::Function*::hasExternalLinkage
    - load_module_cached
    - llvm::Function*::isDeclaration
    - elog
    - llvm::StringRef::data
    - Assert
    - function_inlinable
    - InlineWorkList::empty
    - first
    - InlineSearchPath::empty
    - llvm::GlobalValue::getGUID
    - llvm::GlobalValue::getGUIDAssumingExternalLinkage
    - llvm::Module*::materializeMetadata
    - llvm::Function*::materialize
    - llvm_split_symbol_name
    - llvm::FunctionSummary*::instCount
    - ilog
    - ImportMapTy::ImportMapTy
    - notEligibleToImport
    - modulePath
    - llvm::Module*::functions
    - isDeclaration
    - llvm::StringSet::insert
    - llvm::cast<llvm::FunctionSummary>
    - isIntrinsic
    - llvm::Module*::getFunction
    linkageType: ''
    returnType: std::unique_ptr<ImportMapTy>
    signature: std::unique_ptr<ImportMapTy> llvm_build_inline_plan(LLVMContextRef
      lc, llvm::Module *mod)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: first
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:387,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:391,1
    - Dst: count
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:391,1
    - Dst: std::move
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:392,1
    - Dst: erase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:393,1
    - Dst: empty
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:395,1
    - Dst: first
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:400,1
    - Dst: llvm_split_symbol_name
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:404,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:404,1
    - Dst: std::unique_ptr::getNamedValue
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:406,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:409,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:409,1
    - Dst: llvm::isa<llvm::Function>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:417,1
    - Dst: llvm::dyn_cast<llvm::Function>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:419,1
    - Dst: llvm::stripDebugInfo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:426,1
    - Dst: create_redirection_function
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:440,1
    - Dst: llvm::SetVector::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:442,1
    - Dst: llvm::stripDebugInfo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:443,1
    - Dst: llvm::GlobalValue*::hasExternalLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:446,1
    - Dst: llvm::GlobalValue*::setLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:448,1
    - Dst: llvm::SetVector::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:452,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:453,1
    - Dst: data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:454,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:454,1
    - Dst: llvm::IRMover::move
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:458,1
    - Dst: std::move
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:458,1
    - Dst: llvm::SetVector::getArrayRef
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:458,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:461,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - mod
    - globalsToInline
    argTypes:
    - llvm::Module*
    - ImportMapTy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 463
    functionName: llvm_execute_inline_plan
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - llvm::GlobalValue*::hasExternalLinkage
    - elog
    - llvm::IRMover::move
    - Assert
    - llvm::StringRef::data
    - std::unique_ptr::getNamedValue
    - llvm::stripDebugInfo
    - count
    - llvm::SetVector::insert
    - first
    - std::move
    - empty
    - llvm::GlobalValue*::setLinkage
    - create_redirection_function
    - llvm_split_symbol_name
    - ilog
    - data
    - llvm::isa<llvm::Function>
    - llvm::dyn_cast<llvm::Function>
    - llvm::SetVector::getArrayRef
    - erase
    linkageType: ''
    returnType: void
    signature: void llvm_execute_inline_plan(llvm::Module *mod, ImportMapTy *globalsToInline)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:474,1
    - Dst: end
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:475,1
    - Dst: insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:477,1
    - Dst: std::make_pair
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:478,1
    - Dst: load_module
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:478,1
    - Dst: auto::second::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lc
    - modPath
    argTypes:
    - LLVMContextRef
    - llvm::StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 482
    functionName: load_module_cached
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - find
    - load_module
    - insert
    - std::make_pair
    - auto::second::get
    - end
    linkageType: ''
    returnType: llvm::Module
    signature: 'llvm::Module *

      load_module_cached(LLVMContextRef lc, llvm::StringRef modPath)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:492,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:492,1
    - Dst: LLVMCreateMemoryBufferWithContentsOfFile
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:494,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:495,1
    - Dst: LLVMGetBitcodeModuleInContext2
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:497,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:498,1
    - Dst: llvm::StripDebugInfo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:505,1
    - Dst: llvm::unwrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:505,1
    - Dst: std::unique_ptr<llvm::Module>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:507,1
    - Dst: llvm::unwrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - lc
    - Identifier
    argTypes:
    - LLVMContextRef
    - llvm::StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 508
    functionName: load_module
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 2
    functionsReached:
    - elog
    - llvm::StripDebugInfo
    - llvm::unwrap
    - llvm::StringRef::data
    - std::unique_ptr<llvm::Module>
    - LLVMCreateMemoryBufferWithContentsOfFile
    - LLVMGetBitcodeModuleInContext2
    - snprintf
    linkageType: ''
    returnType: std::unique_ptr<llvm::Module>
    signature: std::unique_ptr<llvm::Module> load_module(LLVMContextRef lc, llvm::StringRef
      Identifier)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: llvm::isa<llvm::DbgInfoIntrinsic>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:526,1
    - Dst: llvm::SmallVector::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:530,1
    - Dst: llvm::SmallVector::empty
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:534,1
    - Dst: llvm::SmallVector::pop_back_val
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:535,1
    - Dst: llvm::SmallPtrSet::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:538,1
    - Dst: llvm::User*::operands
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:541,1
    - Dst: llvm::dyn_cast<llvm::User>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:542,1
    - Dst: llvm::isa<llvm::BlockAddress>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:545,1
    - Dst: llvm::dyn_cast<llvm::GlobalVariable>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:547,1
    - Dst: llvm::SmallPtrSet<llvm::GlobalVariable *, 8>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:548,1
    - Dst: auto*::hasInitializer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:549,1
    - Dst: llvm::SmallVector::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:550,1
    - Dst: auto*::getInitializer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:550,1
    - Dst: llvm::dyn_cast<llvm::Function>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:553,1
    - Dst: llvm::SmallPtrSet<llvm::Function *, 8>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:554,1
    - Dst: llvm::SmallVector::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:557,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 27
    argCount: 4
    argNames:
    - F
    - running_instcount
    - referencedVars
    - referencedFunctions
    argTypes:
    - llvm::Function
    - int
    - llvm::SmallPtrSet<llvm::GlobalVariable *, 8>
    - llvm::SmallPtrSet<llvm::Function *, 8>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 562
    functionName: function_references
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 0
    functionsReached:
    - auto*::getInitializer
    - auto*::hasInitializer
    - llvm::isa<llvm::BlockAddress>
    - llvm::User*::operands
    - llvm::SmallPtrSet::insert
    - llvm::dyn_cast<llvm::Function>
    - llvm::isa<llvm::DbgInfoIntrinsic>
    - llvm::SmallPtrSet<llvm::Function *, 8>::insert
    - llvm::dyn_cast<llvm::User>
    - llvm::SmallVector::pop_back_val
    - llvm::SmallVector::empty
    - llvm::dyn_cast<llvm::GlobalVariable>
    - llvm::SmallPtrSet<llvm::GlobalVariable *, 8>::insert
    - llvm::SmallVector::push_back
    linkageType: ''
    returnType: void
    signature: "void function_references(llvm::Function &F,\n\t\t\t\t\tint &running_instcount,\n\t\t\t\t\tllvm::SmallPtrSet<llvm::GlobalVariable
      *, 8> &referencedVars,\n\t\t\t\t\tllvm::SmallPtrSet<llvm::Function *, 8> &referencedFunctions)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: llvm::Function::isInterposable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:586,1
    - Dst: llvm::Function::hasAvailableExternallyLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:593,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:596,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:596,1
    - Dst: llvm::Function::materialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:598,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:599,1
    - Dst: llvm::Function::getAttributes
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:601,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:603,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:604,1
    - Dst: function_references
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:608,1
    - Dst: materialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:612,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:613,1
    - Dst: isThreadLocal
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:619,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:621,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:622,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:622,1
    - Dst: hasExternalLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:630,1
    - Dst: hasAvailableExternallyLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:630,1
    - Dst: isConstant
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:641,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:643,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:644,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:644,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:648,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:649,1
    - Dst: getLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:649,1
    - Dst: llvm::StringSet<>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:651,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:651,1
    - Dst: llvm::SmallPtrSet<const llvm::Function *, 8>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:656,1
    - Dst: materialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:666,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:667,1
    - Dst: isIntrinsic
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:669,1
    - Dst: llvm::SmallPtrSet<const llvm::Function *, 8>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:673,1
    - Dst: hasExternalLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:681,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:683,1
    - Dst: FunctionInlineStates::find
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:692,1
    - Dst: FunctionInlineStates::end
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:693,1
    - Dst: InlineWorkList::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:703,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:705,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:707,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:720,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:722,1
    - Dst: InlineWorkList::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:726,1
    - Dst: isInterposable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:734,1
    - Dst: function_inlinable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:737,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:746,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:748,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:748,1
    - Dst: llvm::StringSet<>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:753,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:753,1
    - Dst: llvm::StringSet<>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:757,1
    - Dst: first
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:757,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 69
    argCount: 8
    argNames:
    - F
    - threshold
    - functionStates
    - worklist
    - searchpath
    - visitedFunctions
    - running_instcount
    - importVars
    argTypes:
    - llvm::Function
    - int
    - FunctionInlineStates
    - InlineWorkList
    - InlineSearchPath
    - llvm::SmallPtrSet<const llvm::Function *, 8>
    - int
    - llvm::StringSet<>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 761
    functionName: function_inlinable
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 2
    functionsReached:
    - FunctionInlineStates::end
    - getName
    - getLinkage
    - InlineWorkList::push_back
    - elog
    - llvm::StringRef::data
    - function_inlinable
    - hasAvailableExternallyLinkage
    - llvm::StringSet<>::insert
    - isConstant
    - llvm::Function::materialize
    - hasExternalLinkage
    - first
    - materialize
    - llvm::SmallPtrSet<const llvm::Function *, 8>::insert
    - function_references
    - ilog
    - llvm::Function::getName
    - isThreadLocal
    - llvm::Function::isInterposable
    - llvm::Function::hasAvailableExternallyLinkage
    - isInterposable
    - FunctionInlineStates::find
    - isIntrinsic
    - llvm::Function::getAttributes
    linkageType: ''
    returnType: bool
    signature: "bool function_inlinable(llvm::Function &F,\n\t\t\t\t   int threshold,\n\t\t\t\t
      \  FunctionInlineStates &functionStates,\n\t\t\t\t   InlineWorkList &worklist,\n\t\t\t\t
      \  InlineSearchPath &searchpath,\n\t\t\t\t   llvm::SmallPtrSet<const llvm::Function
      *, 8> &visitedFunctions,\n\t\t\t\t   int &running_instcount,\n\t\t\t\t   llvm::StringSet<>
      &importVars)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerForgetFile
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:771,1
    - Dst: llvm::ErrorOr::getError
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:773,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:775,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:775,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:776,1
    - Dst: llvm::ErrorOr::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:780,1
    - Dst: llvm::getModuleSummaryIndex
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:783,1
    - Dst: std::move
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:785,1
    - Dst: llvm::Expected::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:785,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:786,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:787,1
    - Dst: toString
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:788,1
    - Dst: llvm::Expected::takeError
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:788,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - llvm::StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 791
    functionName: llvm_load_summary
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 0
    functionsReached:
    - elog
    - llvm::ErrorOr::getError
    - ResourceOwnerForgetFile
    - llvm::Expected::get
    - llvm::StringRef::data
    - llvm::ErrorOr::get
    - std::error_code::message
    - toString
    - llvm::Expected::takeError
    - ilog
    - llvm::getModuleSummaryIndex
    - std::move
    linkageType: ''
    returnType: std::unique_ptr<llvm::ModuleSummaryIndex>
    signature: std::unique_ptr<llvm::ModuleSummaryIndex> llvm_load_summary(llvm::StringRef
      path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: llvm::StringRef::starts_with
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:803,1
    - Dst: find
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:807,1
    - Dst: end
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:808,1
    - Dst: std::string::replace
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:811,1
    - Dst: strlen
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:811,1
    - Dst: std::string
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:811,1
    - Dst: llvm_load_summary
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:813,1
    - Dst: find
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:814,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:817,1
    - Dst: end
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:817,1
    - Dst: push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:821,1
    - Dst: auto::second::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:821,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' searchpath'
    - modpath
    argTypes:
    - InlineSearchPath
    - llvm::StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 796
    functionDepth: 2
    functionLinenumber: 796
    functionLinenumberEnd: 822
    functionName: add_module_to_inline_search_path
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - find
    - push_back
    - Assert
    - std::string::replace
    - llvm_load_summary
    - std::string
    - auto::second::get
    - end
    - strlen
    - llvm::StringRef::starts_with
    linkageType: ''
    returnType: void
    signature: void add_module_to_inline_search_path(InlineSearchPath& searchpath,
      llvm::StringRef modpath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getValueInfo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:835,1
    - Dst: llvm::ValueInfo::getSummaryList
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:839,1
    - Dst: llvm::SmallVector::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:840,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:840,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ' path'
    - guid
    argTypes:
    - InlineSearchPath
    - llvm::GlobalValue::GUID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 844
    functionName: summaries_for_guid
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - getValueInfo
    - llvm::SmallVector::push_back
    - get
    - llvm::ValueInfo::getSummaryList
    linkageType: ''
    returnType: llvm::SmallVector<llvm::GlobalValueSummary *, 1>
    signature: llvm::SmallVector<llvm::GlobalValueSummary *, 1> summaries_for_guid(const
      InlineSearchPath& path, llvm::GlobalValue::GUID guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: llvm::Function*::getContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:856,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:862,1
    - Dst: llvm::Function*::getFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:862,1
    - Dst: std::unique_ptr<llvm::Module>::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:864,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:865,1
    - Dst: llvm::IRBuilder::SetInsertPoint
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:867,1
    - Dst: llvm::IRBuilder::CreateCall
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:868,1
    - Dst: llvm::Function*::arg_begin
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:868,1
    - Dst: llvm::CallInst*::addFnAttr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:869,1
    - Dst: llvm::IRBuilder::CreateRet
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - importMod
    - F
    - Name
    argTypes:
    - std::unique_ptr<llvm::Module>
    - llvm::Function*
    - llvm::StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 849
    functionDepth: 1
    functionLinenumber: 849
    functionLinenumberEnd: 873
    functionName: create_redirection_function
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - llvm::IRBuilder::SetInsertPoint
    - llvm::IRBuilder::CreateCall
    - llvm::Function*::getFunctionType
    - llvm::CallInst*::addFnAttr
    - llvm::IRBuilder::CreateRet
    - std::unique_ptr<llvm::Module>::get
    - AllocSetContextCreate
    - llvm::Function*::arg_begin
    - llvm::Function*::getContext
    linkageType: ''
    returnType: llvm::Function
    signature: "llvm::Function *\ncreate_redirection_function(std::unique_ptr<llvm::Module>
      &importMod,\n\t\t\t\t\t\t\tllvm::Function *F,\n\t\t\t\t\t\t\tllvm::StringRef
      Name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - MemGroup
    - Size
    argTypes:
    - MemoryGroup
    - uintptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: backport::SectionMemoryManager::hasSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - Free::allocatedSize
    linkageType: ''
    returnType: bool
    signature: "bool SectionMemoryManager::hasSpace(const MemoryGroup &MemGroup,\n
      \                                   uintptr_t Size) const"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:69,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:81,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:81,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:85,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:85,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:87,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:89,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:100,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:101,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:102,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:105,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:106,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:107,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:112,1
    - Dst: AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:119,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:120,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:125,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:125,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:126,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:127,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:132,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:132,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:133,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:134,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:139,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:139,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:140,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:141,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:151,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:153,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:161,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:171,1
    - Dst: llvm_unreachable
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:185,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:191,1
    - Dst: FreeMemBlock::Free::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:192,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:193,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: MemoryGroup::PendingMem::size
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:203,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:207,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:207,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:208,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:213,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:228,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:241,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:243,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:245,1
    - Dst: MemoryGroup::AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:249,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:250,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:251,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: MemoryGroup::FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:266,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:278,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:282,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:288,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:291,1
    - Dst: backport::SectionMemoryManager::invalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:301,1
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:307,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:310,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:312,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:316,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:320,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:320,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:322,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:322,1
    - Dst: protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:331,1
    - Dst: MemoryGroup::PendingMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:334,1
    - Dst: trimBlockToPageSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:339,1
    - Dst: erase_if
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:345,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:346,1
    - Dst: std::error_code
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:349,1
    - Dst: sys::Memory::InvalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:354,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:354,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:355,1
    - Dst: releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    - Dst: backport::DefaultMMapper::allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:378,1
    - Dst: backport::DefaultMMapper::protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:383,1
    - Dst: backport::DefaultMMapper::releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:387,1
    - Dst: std::make_unique<DefaultMMapper>
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:397,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:398,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 143
    argCount: 6
    argNames:
    - CodeSize
    - CodeAlign_i
    - RODataSize
    - RODataAlign_i
    - RWDataSize
    - RWDataAlign_i
    argTypes:
    - uintptr_t
    - uint32_t
    - uintptr_t
    - uint32_t
    - uintptr_t
    - uint32_t
    assertStmts:
    - condition: (((uintptr_t)Trimmed.base() % PageSize) == 0)
      pos:
        line_end: 318
        line_start: 318
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: ((Trimmed.allocatedSize() % PageSize) == 0)
      pos:
        line_end: 319
        line_start: 319
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (!(Alignment & (Alignment - 1)) && "Alignment must be a power of
        two.")
      pos:
        line_end: 170
        line_start: 170
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RWDataAlign, (void *)Addr))
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RODataAlign, (void *)Addr))
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: "(M.base() <= Trimmed.base() &&\n         Trimmed.allocatedSize()
        <= M.allocatedSize())"
      pos:
        line_end: 321
        line_start: 320
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(CodeAlign, (void *)Addr))
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 402
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 402
    functionName: backport::SectionMemoryManager::reserveAllocationSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - base
    - MemoryGroup::PendingMem::clear
    - MemoryGroup::FreeMem::push_back
    - backport::SectionMemoryManager::allocateSection
    - backport::SectionMemoryManager::hasSpace
    - MemoryGroup::PendingMem::push_back
    - allocateMappedMemory
    - protectMappedMemory
    - trimBlockToPageSize
    - std::make_unique<DefaultMMapper>
    - FreeMem::push_back
    - releaseMappedMemory
    - backport::DefaultMMapper::releaseMappedMemory
    - MemoryGroup::PendingMem::size
    - Near::base
    - sys::Process::getPageSizeEstimate
    - Align::value
    - assert
    - FreeMem::clear
    - std::error_code::message
    - std::error_code
    - MemoryGroup::AllocatedMem::push_back
    - backport::SectionMemoryManager::applyMemoryGroupPermissions
    - backport::DefaultMMapper::protectMappedMemory
    - alignTo
    - allocatedSize
    - isAddrAligned
    - sys::MemoryBlock::allocatedSize
    - sys::Memory::InvalidateInstructionCache
    - sys::MemoryBlock::base
    - FreeMemBlock::Free::base
    - sys::MemoryBlock
    - llvm_unreachable
    - erase_if
    - get
    - backport::DefaultMMapper::allocateMappedMemory
    - FreeMemBlock::Free::allocatedSize
    - AllocatedMem::push_back
    - max
    - Align
    - backport::SectionMemoryManager::invalidateInstructionCache
    linkageType: ''
    returnType: void
    signature: "void SectionMemoryManager::reserveAllocationSpace(uintptr_t CodeSize,\n
      \                                                 uint32_t CodeAlign_i,\n                                                  uintptr_t
      RODataSize,\n                                                  uint32_t RODataAlign_i,\n
      \                                                 uintptr_t RWDataSize,\n                                                  uint32_t
      RWDataAlign_i)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:69,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:81,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:81,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:85,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:85,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:87,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:89,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:100,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:101,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:102,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:105,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:106,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:107,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:112,1
    - Dst: AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:119,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:120,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:125,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:125,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:126,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:127,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:132,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:132,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:133,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:134,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:139,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:139,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:140,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:141,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 6
    argNames:
    - CodeSize
    - CodeAlign
    - RODataSize
    - RODataAlign
    - RWDataSize
    - RWDataAlign
    argTypes:
    - uintptr_t
    - Align
    - uintptr_t
    - Align
    - uintptr_t
    - Align
    assertStmts:
    - condition: (isAddrAligned(CodeAlign, (void *)Addr))
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RODataAlign, (void *)Addr))
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RWDataAlign, (void *)Addr))
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 143
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 143
    functionName: backport::SectionMemoryManager::reserveAllocationSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - sys::Process::getPageSizeEstimate
    - assert
    - FreeMem::clear
    - AllocatedMem::push_back
    - backport::SectionMemoryManager::hasSpace
    - allocateMappedMemory
    - alignTo
    - max
    - sys::MemoryBlock
    - FreeMem::push_back
    - isAddrAligned
    - Align
    - sys::MemoryBlock::base
    - Align::value
    linkageType: ''
    returnType: void
    signature: "void SectionMemoryManager::reserveAllocationSpace(\n    uintptr_t
      CodeSize, Align CodeAlign, uintptr_t RODataSize,\n    Align RODataAlign, uintptr_t
      RWDataSize, Align RWDataAlign)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:151,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - Size
    - Alignment
    - SectionID
    - SectionName
    - IsReadOnly
    argTypes:
    - uintptr_t
    - unsigned
    - unsigned
    - StringRef
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 155
    functionName: backport::SectionMemoryManager::allocateDataSection
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - backport::SectionMemoryManager::allocateSection
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *SectionMemoryManager::allocateDataSection(uintptr_t Size,\n
      \                                                  unsigned Alignment,\n                                                   unsigned
      SectionID,\n                                                   StringRef SectionName,\n
      \                                                  bool IsReadOnly)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - Size
    - Alignment
    - SectionID
    - SectionName
    argTypes:
    - uintptr_t
    - unsigned
    - unsigned
    - StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: backport::SectionMemoryManager::allocateCodeSection
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - backport::SectionMemoryManager::allocateSection
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *SectionMemoryManager::allocateCodeSection(uintptr_t Size,\n
      \                                                  unsigned Alignment,\n                                                   unsigned
      SectionID,\n                                                   StringRef SectionName)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:171,1
    - Dst: llvm_unreachable
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:185,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:191,1
    - Dst: Free::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:192,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:193,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: MemoryGroup::PendingMem::size
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:203,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:207,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:207,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:208,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:213,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:228,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:241,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:243,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:245,1
    - Dst: MemoryGroup::AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:249,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:250,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:251,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: MemoryGroup::FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:266,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 3
    argNames:
    - Purpose
    - Size
    - Alignment
    argTypes:
    - SectionMemoryManager::AllocationPurpose
    - uintptr_t
    - unsigned
    assertStmts:
    - condition: (!(Alignment & (Alignment - 1)) && "Alignment must be a power of
        two.")
      pos:
        line_end: 170
        line_start: 170
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 271
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 271
    functionName: backport::SectionMemoryManager::allocateSection
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 3
    functionsReached:
    - llvm_unreachable
    - MemoryGroup::FreeMem::push_back
    - assert
    - MemoryGroup::PendingMem::push_back
    - allocateMappedMemory
    - Near::base
    - Free::allocatedSize
    - Free::base
    - MemoryGroup::AllocatedMem::push_back
    - sys::MemoryBlock::allocatedSize
    - sys::MemoryBlock::base
    - MemoryGroup::PendingMem::size
    - sys::MemoryBlock
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *SectionMemoryManager::allocateSection(\n    SectionMemoryManager::AllocationPurpose
      Purpose, uintptr_t Size,\n    unsigned Alignment)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:278,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:282,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:288,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:291,1
    - Dst: backport::SectionMemoryManager::invalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:301,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ErrMsg
    argTypes:
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 304
    functionName: backport::SectionMemoryManager::finalizeMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - std::error_code::message
    - backport::SectionMemoryManager::invalidateInstructionCache
    - backport::SectionMemoryManager::applyMemoryGroupPermissions
    linkageType: ''
    returnType: bool
    signature: bool SectionMemoryManager::finalizeMemory(std::string *ErrMsg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:307,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:310,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:312,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:316,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:320,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:320,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:322,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts:
    - condition: (((uintptr_t)Trimmed.base() % PageSize) == 0)
      pos:
        line_end: 318
        line_start: 318
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: ((Trimmed.allocatedSize() % PageSize) == 0)
      pos:
        line_end: 319
        line_start: 319
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: "(M.base() <= Trimmed.base() &&\n         Trimmed.allocatedSize()
        <= M.allocatedSize())"
      pos:
        line_end: 321
        line_start: 320
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 325
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 325
    functionName: backport::trimBlockToPageSize
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - sys::MemoryBlock::allocatedSize
    - sys::MemoryBlock::base
    - assert
    - sys::Process::getPageSizeEstimate
    linkageType: ''
    returnType: sys::MemoryBlock
    signature: sys::MemoryBlock trimBlockToPageSize(sys::MemoryBlock M)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:331,1
    - Dst: MemoryGroup::PendingMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:334,1
    - Dst: trimBlockToPageSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:339,1
    - Dst: erase_if
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:345,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:346,1
    - Dst: std::error_code
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - MemGroup
    - Permissions
    argTypes:
    - MemoryGroup
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 350
    functionName: backport::SectionMemoryManager::applyMemoryGroupPermissions
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 2
    functionsReached:
    - erase_if
    - MemoryGroup::PendingMem::clear
    - protectMappedMemory
    - Free::allocatedSize
    - trimBlockToPageSize
    - std::error_code
    linkageType: ''
    returnType: std::error_code
    signature: "std::error_code SectionMemoryManager::applyMemoryGroupPermissions(MemoryGroup
      &MemGroup,\n                                                  unsigned Permissions)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sys::Memory::InvalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:354,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:354,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 356
    functionName: backport::SectionMemoryManager::invalidateInstructionCache
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 2
    functionsReached:
    - sys::Memory::InvalidateInstructionCache
    - base
    - allocatedSize
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::invalidateInstructionCache()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 363
    functionName: SectionMemoryManager::~SectionMemoryManager()
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - releaseMappedMemory
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::~SectionMemoryManager()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 365
    functionName: SectionMemoryManager::MemoryMapper::~MemoryMapper()
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::MemoryMapper::~MemoryMapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 367
    functionName: backport::SectionMemoryManager::anchor
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::anchor()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - Purpose
    - NumBytes
    - NearBlock
    - Flags
    - EC
    argTypes:
    - SectionMemoryManager::AllocationPurpose
    - size_t
    - sys::MemoryBlock*
    - unsigned
    - std::error_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 379
    functionName: backport::DefaultMMapper::allocateMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 2
    functionsReached:
    - backport::DefaultMMapper::allocateMappedMemory
    linkageType: ''
    returnType: sys::MemoryBlock
    signature: "sys::MemoryBlock allocateMappedMemory(SectionMemoryManager::AllocationPurpose
      Purpose,\n                       size_t NumBytes, const sys::MemoryBlock *const
      NearBlock,\n                       unsigned Flags, std::error_code &EC) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - Block
    - Flags
    argTypes:
    - sys::MemoryBlock
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: backport::DefaultMMapper::protectMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 2
    functionsReached:
    - backport::DefaultMMapper::protectMappedMemory
    linkageType: ''
    returnType: std::error_code
    signature: "std::error_code protectMappedMemory(const sys::MemoryBlock &Block,\n
      \                                     unsigned Flags) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 388
    functionName: backport::DefaultMMapper::releaseMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 2
    functionsReached:
    - backport::DefaultMMapper::releaseMappedMemory
    linkageType: ''
    returnType: std::error_code
    signature: std::error_code releaseMappedMemory(sys::MemoryBlock &M) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - Purpose
    - NumBytes
    - NearBlock
    - Flags
    - EC
    argTypes:
    - SectionMemoryManager::AllocationPurpose
    - size_t
    - sys::MemoryBlock*
    - unsigned
    - std::error_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 379
    functionName: backport::DefaultMMapper::allocateMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 3
    functionsReached:
    - backport::DefaultMMapper::allocateMappedMemory
    linkageType: ''
    returnType: sys::MemoryBlock
    signature: "sys::MemoryBlock allocateMappedMemory(SectionMemoryManager::AllocationPurpose
      Purpose,\n                       size_t NumBytes, const sys::MemoryBlock *const
      NearBlock,\n                       unsigned Flags, std::error_code &EC) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - Block
    - Flags
    argTypes:
    - sys::MemoryBlock
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: backport::DefaultMMapper::protectMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 3
    functionsReached:
    - backport::DefaultMMapper::protectMappedMemory
    linkageType: ''
    returnType: std::error_code
    signature: "std::error_code protectMappedMemory(const sys::MemoryBlock &Block,\n
      \                                     unsigned Flags) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 388
    functionName: backport::DefaultMMapper::releaseMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 3
    functionsReached:
    - backport::DefaultMMapper::releaseMappedMemory
    linkageType: ''
    returnType: std::error_code
    signature: std::error_code releaseMappedMemory(sys::MemoryBlock &M) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<DefaultMMapper>
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:397,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - UnownedMM
    - ReserveAlloc
    argTypes:
    - MemoryMapper*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 400
    functionName: backport::SectionMemoryManager::SectionMemoryManager
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - get
    - std::make_unique<DefaultMMapper>
    linkageType: ''
    returnType: void
    signature: "void SectionMemoryManager::SectionMemoryManager(MemoryMapper *UnownedMM,\n
      \                                          bool ReserveAlloc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - MemGroup
    - Size
    argTypes:
    - MemoryGroup
    - uintptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: backport::SectionMemoryManager::hasSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 2
    functionsReached:
    - Free::allocatedSize
    linkageType: ''
    returnType: bool
    signature: "bool SectionMemoryManager::hasSpace(const MemoryGroup &MemGroup,\n
      \                                   uintptr_t Size) const"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:69,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:81,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:81,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:85,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:85,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:87,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:89,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:100,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:101,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:102,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:105,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:106,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:107,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:112,1
    - Dst: AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:119,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:120,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:125,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:125,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:126,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:127,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:132,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:132,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:133,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:134,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:139,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:139,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:140,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:141,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:151,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:153,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:161,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:171,1
    - Dst: llvm_unreachable
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:185,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:191,1
    - Dst: FreeMemBlock::Free::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:192,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:193,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: MemoryGroup::PendingMem::size
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:203,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:207,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:207,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:208,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:213,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:228,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:241,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:243,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:245,1
    - Dst: MemoryGroup::AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:249,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:250,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:251,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: MemoryGroup::FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:266,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:278,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:282,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:288,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:291,1
    - Dst: backport::SectionMemoryManager::invalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:301,1
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:307,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:310,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:312,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:316,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:320,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:320,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:322,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:322,1
    - Dst: protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:331,1
    - Dst: MemoryGroup::PendingMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:334,1
    - Dst: trimBlockToPageSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:339,1
    - Dst: erase_if
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:345,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:346,1
    - Dst: std::error_code
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:349,1
    - Dst: sys::Memory::InvalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:354,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:354,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:355,1
    - Dst: releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    - Dst: backport::DefaultMMapper::allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:378,1
    - Dst: backport::DefaultMMapper::protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:383,1
    - Dst: backport::DefaultMMapper::releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:387,1
    - Dst: std::make_unique<DefaultMMapper>
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:397,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:398,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 143
    argCount: 6
    argNames:
    - CodeSize
    - CodeAlign_i
    - RODataSize
    - RODataAlign_i
    - RWDataSize
    - RWDataAlign_i
    argTypes:
    - uintptr_t
    - uint32_t
    - uintptr_t
    - uint32_t
    - uintptr_t
    - uint32_t
    assertStmts:
    - condition: (((uintptr_t)Trimmed.base() % PageSize) == 0)
      pos:
        line_end: 318
        line_start: 318
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: ((Trimmed.allocatedSize() % PageSize) == 0)
      pos:
        line_end: 319
        line_start: 319
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (!(Alignment & (Alignment - 1)) && "Alignment must be a power of
        two.")
      pos:
        line_end: 170
        line_start: 170
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RWDataAlign, (void *)Addr))
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RODataAlign, (void *)Addr))
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: "(M.base() <= Trimmed.base() &&\n         Trimmed.allocatedSize()
        <= M.allocatedSize())"
      pos:
        line_end: 321
        line_start: 320
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(CodeAlign, (void *)Addr))
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 402
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 402
    functionName: backport::SectionMemoryManager::reserveAllocationSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - base
    - MemoryGroup::PendingMem::clear
    - MemoryGroup::FreeMem::push_back
    - backport::SectionMemoryManager::allocateSection
    - backport::SectionMemoryManager::hasSpace
    - MemoryGroup::PendingMem::push_back
    - allocateMappedMemory
    - protectMappedMemory
    - trimBlockToPageSize
    - std::make_unique<DefaultMMapper>
    - FreeMem::push_back
    - releaseMappedMemory
    - backport::DefaultMMapper::releaseMappedMemory
    - MemoryGroup::PendingMem::size
    - Near::base
    - sys::Process::getPageSizeEstimate
    - Align::value
    - assert
    - FreeMem::clear
    - std::error_code::message
    - std::error_code
    - MemoryGroup::AllocatedMem::push_back
    - backport::SectionMemoryManager::applyMemoryGroupPermissions
    - backport::DefaultMMapper::protectMappedMemory
    - alignTo
    - allocatedSize
    - isAddrAligned
    - sys::MemoryBlock::allocatedSize
    - sys::Memory::InvalidateInstructionCache
    - sys::MemoryBlock::base
    - FreeMemBlock::Free::base
    - sys::MemoryBlock
    - llvm_unreachable
    - erase_if
    - get
    - backport::DefaultMMapper::allocateMappedMemory
    - FreeMemBlock::Free::allocatedSize
    - AllocatedMem::push_back
    - max
    - Align
    - backport::SectionMemoryManager::invalidateInstructionCache
    linkageType: ''
    returnType: void
    signature: "void SectionMemoryManager::reserveAllocationSpace(uintptr_t CodeSize,\n
      \                                                 uint32_t CodeAlign_i,\n                                                  uintptr_t
      RODataSize,\n                                                  uint32_t RODataAlign_i,\n
      \                                                 uintptr_t RWDataSize,\n                                                  uint32_t
      RWDataAlign_i)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:69,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:75,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:76,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:77,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:81,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:81,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:85,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:85,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:87,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:89,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:100,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:101,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:102,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:105,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:106,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:107,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:112,1
    - Dst: AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:119,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:120,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:125,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:125,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:126,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:127,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:132,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:132,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:133,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:134,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:139,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:139,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:140,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:141,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 6
    argNames:
    - CodeSize
    - CodeAlign
    - RODataSize
    - RODataAlign
    - RWDataSize
    - RWDataAlign
    argTypes:
    - uintptr_t
    - Align
    - uintptr_t
    - Align
    - uintptr_t
    - Align
    assertStmts:
    - condition: (isAddrAligned(CodeAlign, (void *)Addr))
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RODataAlign, (void *)Addr))
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RWDataAlign, (void *)Addr))
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 143
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 143
    functionName: backport::SectionMemoryManager::reserveAllocationSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - sys::Process::getPageSizeEstimate
    - assert
    - FreeMem::clear
    - AllocatedMem::push_back
    - backport::SectionMemoryManager::hasSpace
    - allocateMappedMemory
    - alignTo
    - max
    - sys::MemoryBlock
    - FreeMem::push_back
    - isAddrAligned
    - Align
    - sys::MemoryBlock::base
    - Align::value
    linkageType: ''
    returnType: void
    signature: "void SectionMemoryManager::reserveAllocationSpace(\n    uintptr_t
      CodeSize, Align CodeAlign, uintptr_t RODataSize,\n    Align RODataAlign, uintptr_t
      RWDataSize, Align RWDataAlign)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:151,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - Size
    - Alignment
    - SectionID
    - SectionName
    - IsReadOnly
    argTypes:
    - uintptr_t
    - unsigned
    - unsigned
    - StringRef
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 155
    functionName: backport::SectionMemoryManager::allocateDataSection
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - backport::SectionMemoryManager::allocateSection
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *SectionMemoryManager::allocateDataSection(uintptr_t Size,\n
      \                                                  unsigned Alignment,\n                                                   unsigned
      SectionID,\n                                                   StringRef SectionName,\n
      \                                                  bool IsReadOnly)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - Size
    - Alignment
    - SectionID
    - SectionName
    argTypes:
    - uintptr_t
    - unsigned
    - unsigned
    - StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: backport::SectionMemoryManager::allocateCodeSection
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - backport::SectionMemoryManager::allocateSection
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *SectionMemoryManager::allocateCodeSection(uintptr_t Size,\n
      \                                                  unsigned Alignment,\n                                                   unsigned
      SectionID,\n                                                   StringRef SectionName)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:171,1
    - Dst: llvm_unreachable
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:185,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:191,1
    - Dst: Free::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:192,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:193,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: MemoryGroup::PendingMem::size
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:203,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:207,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:207,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:208,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:213,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:228,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:241,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:243,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:245,1
    - Dst: MemoryGroup::AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:249,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:250,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:251,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: MemoryGroup::FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:266,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 3
    argNames:
    - Purpose
    - Size
    - Alignment
    argTypes:
    - SectionMemoryManager::AllocationPurpose
    - uintptr_t
    - unsigned
    assertStmts:
    - condition: (!(Alignment & (Alignment - 1)) && "Alignment must be a power of
        two.")
      pos:
        line_end: 170
        line_start: 170
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 271
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 271
    functionName: backport::SectionMemoryManager::allocateSection
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 6
    functionsReached:
    - llvm_unreachable
    - MemoryGroup::FreeMem::push_back
    - assert
    - MemoryGroup::PendingMem::push_back
    - allocateMappedMemory
    - Near::base
    - Free::allocatedSize
    - Free::base
    - MemoryGroup::AllocatedMem::push_back
    - sys::MemoryBlock::allocatedSize
    - sys::MemoryBlock::base
    - MemoryGroup::PendingMem::size
    - sys::MemoryBlock
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *SectionMemoryManager::allocateSection(\n    SectionMemoryManager::AllocationPurpose
      Purpose, uintptr_t Size,\n    unsigned Alignment)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:278,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:282,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:288,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:291,1
    - Dst: backport::SectionMemoryManager::invalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:301,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ErrMsg
    argTypes:
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 304
    functionName: backport::SectionMemoryManager::finalizeMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - std::error_code::message
    - backport::SectionMemoryManager::invalidateInstructionCache
    - backport::SectionMemoryManager::applyMemoryGroupPermissions
    linkageType: ''
    returnType: bool
    signature: bool SectionMemoryManager::finalizeMemory(std::string *ErrMsg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:307,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:310,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:312,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:316,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:320,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:320,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:321,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:322,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts:
    - condition: (((uintptr_t)Trimmed.base() % PageSize) == 0)
      pos:
        line_end: 318
        line_start: 318
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: ((Trimmed.allocatedSize() % PageSize) == 0)
      pos:
        line_end: 319
        line_start: 319
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: "(M.base() <= Trimmed.base() &&\n         Trimmed.allocatedSize()
        <= M.allocatedSize())"
      pos:
        line_end: 321
        line_start: 320
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 325
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 325
    functionName: backport::trimBlockToPageSize
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - sys::MemoryBlock::allocatedSize
    - sys::MemoryBlock::base
    - assert
    - sys::Process::getPageSizeEstimate
    linkageType: ''
    returnType: sys::MemoryBlock
    signature: sys::MemoryBlock trimBlockToPageSize(sys::MemoryBlock M)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:331,1
    - Dst: MemoryGroup::PendingMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:334,1
    - Dst: trimBlockToPageSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:339,1
    - Dst: erase_if
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:345,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:346,1
    - Dst: std::error_code
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - MemGroup
    - Permissions
    argTypes:
    - MemoryGroup
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 350
    functionName: backport::SectionMemoryManager::applyMemoryGroupPermissions
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 4
    functionsReached:
    - erase_if
    - MemoryGroup::PendingMem::clear
    - protectMappedMemory
    - Free::allocatedSize
    - trimBlockToPageSize
    - std::error_code
    linkageType: ''
    returnType: std::error_code
    signature: "std::error_code SectionMemoryManager::applyMemoryGroupPermissions(MemoryGroup
      &MemGroup,\n                                                  unsigned Permissions)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sys::Memory::InvalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:354,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:354,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 356
    functionName: backport::SectionMemoryManager::invalidateInstructionCache
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 4
    functionsReached:
    - sys::Memory::InvalidateInstructionCache
    - base
    - allocatedSize
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::invalidateInstructionCache()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 363
    functionName: SectionMemoryManager::~SectionMemoryManager()
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - releaseMappedMemory
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::~SectionMemoryManager()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 365
    functionName: SectionMemoryManager::MemoryMapper::~MemoryMapper()
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::MemoryMapper::~MemoryMapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 367
    functionName: backport::SectionMemoryManager::anchor
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::anchor()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - Purpose
    - NumBytes
    - NearBlock
    - Flags
    - EC
    argTypes:
    - SectionMemoryManager::AllocationPurpose
    - size_t
    - sys::MemoryBlock*
    - unsigned
    - std::error_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 379
    functionName: backport::DefaultMMapper::allocateMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 5
    functionsReached:
    - backport::DefaultMMapper::allocateMappedMemory
    linkageType: ''
    returnType: sys::MemoryBlock
    signature: "sys::MemoryBlock allocateMappedMemory(SectionMemoryManager::AllocationPurpose
      Purpose,\n                       size_t NumBytes, const sys::MemoryBlock *const
      NearBlock,\n                       unsigned Flags, std::error_code &EC) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - Block
    - Flags
    argTypes:
    - sys::MemoryBlock
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: backport::DefaultMMapper::protectMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 5
    functionsReached:
    - backport::DefaultMMapper::protectMappedMemory
    linkageType: ''
    returnType: std::error_code
    signature: "std::error_code protectMappedMemory(const sys::MemoryBlock &Block,\n
      \                                     unsigned Flags) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 388
    functionName: backport::DefaultMMapper::releaseMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 5
    functionsReached:
    - backport::DefaultMMapper::releaseMappedMemory
    linkageType: ''
    returnType: std::error_code
    signature: std::error_code releaseMappedMemory(sys::MemoryBlock &M) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - Purpose
    - NumBytes
    - NearBlock
    - Flags
    - EC
    argTypes:
    - SectionMemoryManager::AllocationPurpose
    - size_t
    - sys::MemoryBlock*
    - unsigned
    - std::error_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 379
    functionName: backport::DefaultMMapper::allocateMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 6
    functionsReached:
    - backport::DefaultMMapper::allocateMappedMemory
    linkageType: ''
    returnType: sys::MemoryBlock
    signature: "sys::MemoryBlock allocateMappedMemory(SectionMemoryManager::AllocationPurpose
      Purpose,\n                       size_t NumBytes, const sys::MemoryBlock *const
      NearBlock,\n                       unsigned Flags, std::error_code &EC) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - Block
    - Flags
    argTypes:
    - sys::MemoryBlock
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: backport::DefaultMMapper::protectMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 6
    functionsReached:
    - backport::DefaultMMapper::protectMappedMemory
    linkageType: ''
    returnType: std::error_code
    signature: "std::error_code protectMappedMemory(const sys::MemoryBlock &Block,\n
      \                                     unsigned Flags) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backport::DefaultMMapper::releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 388
    functionName: backport::DefaultMMapper::releaseMappedMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 6
    functionsReached:
    - backport::DefaultMMapper::releaseMappedMemory
    linkageType: ''
    returnType: std::error_code
    signature: std::error_code releaseMappedMemory(sys::MemoryBlock &M) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<DefaultMMapper>
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:397,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - UnownedMM
    - ReserveAlloc
    argTypes:
    - MemoryMapper*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 400
    functionName: backport::SectionMemoryManager::SectionMemoryManager
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - get
    - std::make_unique<DefaultMMapper>
    linkageType: ''
    returnType: void
    signature: "void SectionMemoryManager::SectionMemoryManager(MemoryMapper *UnownedMM,\n
      \                                          bool ReserveAlloc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:134,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - handle
    argTypes:
    - ResourceOwner
    - LLVMJitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: ResourceOwnerRememberJIT
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerRemember
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerRememberJIT(ResourceOwner owner, LLVMJitContext *handle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerForget
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:139,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - handle
    argTypes:
    - ResourceOwner
    - LLVMJitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: ResourceOwnerForgetJIT
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerForget
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerForgetJIT(ResourceOwner owner, LLVMJitContext *handle)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cb
    argTypes:
    - JitProviderCallbacks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: _PG_jit_provider_init
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _PG_jit_provider_init(JitProviderCallbacks *cb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:177,1
    - Dst: llvm_inline_reset_caches
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:201,1
    - Dst: LLVMContextDispose
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:203,1
    - Dst: LLVMContextCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:204,1
    - Dst: llvm_create_types
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 213
    functionName: llvm_recreate_llvm_context
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - elog
    - LLVMContextDispose
    - llvm_inline_reset_caches
    - llvm_create_types
    - LLVMContextCreate
    linkageType: ''
    returnType: void
    signature: void llvm_recreate_llvm_context(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: llvm_assert_in_fatal_section
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:228,1
    - Dst: llvm_session_initialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:230,1
    - Dst: llvm_recreate_llvm_context
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:232,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:234,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:236,1
    - Dst: ResourceOwnerRememberJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - jitFlags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 247
    functionName: llvm_create_context
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - ResourceOwnerEnlarge
    - llvm_session_initialize
    - llvm_recreate_llvm_context
    - ResourceOwnerRememberJIT
    - llvm_assert_in_fatal_section
    - MemoryContextAllocZero
    linkageType: ''
    returnType: LLVMJitContext
    signature: 'LLVMJitContext *

      llvm_create_context(int jitFlags)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: llvm_enter_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:272,1
    - Dst: LLVMDisposeModule
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:276,1
    - Dst: foreach
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:280,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:282,1
    - Dst: LLVMOrcResourceTrackerRemove
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:288,1
    - Dst: LLVMOrcReleaseResourceTracker
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:289,1
    - Dst: LLVMOrcLLJITGetExecutionSession
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:297,1
    - Dst: LLVMOrcExecutionSessionGetSymbolStringPool
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:298,1
    - Dst: LLVMOrcSymbolStringPoolClearDeadEntries
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:299,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:302,1
    - Dst: list_free
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:304,1
    - Dst: llvm_leave_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:307,1
    - Dst: ResourceOwnerForgetJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - context
    argTypes:
    - JitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 311
    functionName: llvm_release_context
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - llvm_enter_fatal_on_oom
    - LLVMDisposeModule
    - foreach
    - LLVMOrcResourceTrackerRemove
    - list_free
    - pfree
    - ResourceOwnerForgetJIT
    - LLVMOrcExecutionSessionGetSymbolStringPool
    - LLVMOrcReleaseResourceTracker
    - LLVMOrcLLJITGetExecutionSession
    - LLVMOrcSymbolStringPoolClearDeadEntries
    - llvm_leave_fatal_on_oom
    - lfirst
    linkageType: ''
    returnType: void
    signature: void llvm_release_context(JitContext *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: llvm_assert_in_fatal_section
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:319,1
    - Dst: LLVMModuleCreateWithNameInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:328,1
    - Dst: LLVMSetTarget
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:329,1
    - Dst: LLVMSetDataLayout
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - context
    argTypes:
    - LLVMJitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 334
    functionName: llvm_mutable_module
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - LLVMSetDataLayout
    - LLVMModuleCreateWithNameInContext
    - LLVMSetTarget
    - llvm_assert_in_fatal_section
    linkageType: ''
    returnType: LLVMModuleRef
    signature: LLVMModuleRef llvm_mutable_module(LLVMJitContext *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:344,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - context
    - basename
    argTypes:
    - struct LLVMJitContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 356
    functionName: llvm_expand_funcname
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - Assert
    - psprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      llvm_expand_funcname(struct LLVMJitContext *context, const char *basename)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: llvm_assert_in_fatal_section
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:367,1
    - Dst: llvm_compile_module
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:375,1
    - Dst: foreach
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:385,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:391,1
    - Dst: LLVMOrcLLJITLookup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:394,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:396,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:397,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:405,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:406,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - context
    - funcname
    argTypes:
    - LLVMJitContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 416
    functionName: llvm_get_function
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - elog
    - llvm_error_message
    - INSTR_TIME_ACCUM_DIFF
    - foreach
    - llvm_compile_module
    - LLVMOrcLLJITLookup
    - lfirst
    - INSTR_TIME_SET_CURRENT
    - llvm_assert_in_fatal_section
    linkageType: ''
    returnType: void
    signature: 'void *

      llvm_get_function(LLVMJitContext *context, const char *funcname)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetNamedGlobal
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:429,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:431,1
    - Dst: LLVMGlobalGetValueType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - varname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 436
    functionName: llvm_pg_var_type
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - elog
    - LLVMGlobalGetValueType
    - LLVMGetNamedGlobal
    linkageType: ''
    returnType: LLVMTypeRef
    signature: LLVMTypeRef llvm_pg_var_type(const char *varname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:448,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:450,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - varname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 455
    functionName: llvm_pg_var_func_type
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - elog
    - LLVMGetFunctionType
    - LLVMGetNamedFunction
    linkageType: ''
    returnType: LLVMTypeRef
    signature: LLVMTypeRef llvm_pg_var_func_type(const char *varname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:471,1
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:475,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:478,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:480,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:482,1
    - Dst: llvm_copy_attributes
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:483,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mod
    - funcname
    argTypes:
    - LLVMModuleRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 464
    functionDepth: 2
    functionLinenumber: 464
    functionLinenumberEnd: 486
    functionName: llvm_pg_func
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - elog
    - LLVMAddFunction
    - llvm_copy_attributes
    - LLVMGetFunctionType
    - LLVMGetNamedFunction
    linkageType: ''
    returnType: LLVMValueRef
    signature: LLVMValueRef llvm_pg_func(LLVMModuleRef mod, const char *funcname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetAttributeCountAtIndex
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:498,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:503,1
    - Dst: LLVMGetAttributesAtIndex
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:504,1
    - Dst: LLVMAddAttributeAtIndex
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:507,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:509,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - v_from
    - v_to
    - index
    argTypes:
    - LLVMValueRef
    - LLVMValueRef
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 510
    functionName: llvm_copy_attributes_at_index
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - pfree
    - LLVMAddAttributeAtIndex
    - palloc_array
    - LLVMGetAttributeCountAtIndex
    - LLVMGetAttributesAtIndex
    linkageType: ''
    returnType: void
    signature: void llvm_copy_attributes_at_index(LLVMValueRef v_from, LLVMValueRef
      v_to, uint32 index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: llvm_copy_attributes_at_index
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:522,1
    - Dst: LLVMGetTypeKind
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:524,1
    - Dst: LLVMGetFunctionReturnType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:524,1
    - Dst: llvm_copy_attributes_at_index
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:527,1
    - Dst: LLVMCountParams
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:531,1
    - Dst: llvm_copy_attributes_at_index
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - v_from
    - v_to
    argTypes:
    - LLVMValueRef
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 516
    functionDepth: 2
    functionLinenumber: 516
    functionLinenumberEnd: 535
    functionName: llvm_copy_attributes
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - llvm_copy_attributes_at_index
    - LLVMCountParams
    - LLVMGetTypeKind
    - LLVMGetFunctionReturnType
    linkageType: ''
    returnType: void
    signature: void llvm_copy_attributes(LLVMValueRef v_from, LLVMValueRef v_to)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fmgr_symbol
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:552,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:557,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:562,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:573,1
    - Dst: LLVMGetNamedGlobal
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:575,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:577,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:579,1
    - Dst: LLVMAddGlobal
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:581,1
    - Dst: LLVMSetInitializer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:582,1
    - Dst: LLVMSetGlobalConstant
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:583,1
    - Dst: LLVMSetLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:584,1
    - Dst: LLVMSetUnnamedAddr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:585,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:587,1
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:591,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:595,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:595,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - context
    - builder
    - mod
    - fcinfo
    argTypes:
    - LLVMJitContext*
    - LLVMBuilderRef
    - LLVMModuleRef
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 540
    functionDepth: 2
    functionLinenumber: 540
    functionLinenumberEnd: 598
    functionName: llvm_function_reference
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - fmgr_symbol
    - l_ptr_const
    - LLVMGetNamedGlobal
    - l_load
    - psprintf
    - pstrdup
    - LLVMSetUnnamedAddr
    - LLVMSetGlobalConstant
    - LLVMAddFunction
    - LLVMSetInitializer
    - LLVMAddGlobal
    - LLVMGetFunctionType
    - LLVMSetLinkage
    - LLVMGetNamedFunction
    linkageType: ''
    returnType: LLVMValueRef
    signature: "LLVMValueRef llvm_function_reference(LLVMJitContext *context,\n\t\t\t\t\t\tLLVMBuilderRef
      builder,\n\t\t\t\t\t\tLLVMModuleRef mod,\n\t\t\t\t\t\tFunctionCallInfo fcinfo)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LLVMPassManagerBuilderCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:623,1
    - Dst: LLVMPassManagerBuilderSetOptLevel
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:624,1
    - Dst: LLVMCreateFunctionPassManagerForModule
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:625,1
    - Dst: LLVMPassManagerBuilderUseInlinerWithThreshold
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:630,1
    - Dst: LLVMAddPromoteMemoryToRegisterPass
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:635,1
    - Dst: LLVMPassManagerBuilderPopulateFunctionPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:638,1
    - Dst: LLVMInitializeFunctionPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:644,1
    - Dst: LLVMGetFirstFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:645,1
    - Dst: LLVMGetNextFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:647,1
    - Dst: LLVMRunFunctionPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:648,1
    - Dst: LLVMFinalizeFunctionPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:649,1
    - Dst: LLVMDisposePassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:650,1
    - Dst: LLVMCreatePassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:656,1
    - Dst: LLVMPassManagerBuilderPopulateModulePassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:657,1
    - Dst: LLVMAddAlwaysInlinerPass
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:661,1
    - Dst: LLVMAddFunctionInliningPass
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:665,1
    - Dst: LLVMRunPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:666,1
    - Dst: LLVMDisposePassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:667,1
    - Dst: LLVMPassManagerBuilderDispose
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:669,1
    - Dst: LLVMCreatePassBuilderOptions
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:684,1
    - Dst: LLVMPassBuilderOptionsSetDebugLogging
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:687,1
    - Dst: LLVMPassBuilderOptionsSetVerifyEach
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:692,1
    - Dst: LLVMPassBuilderOptionsSetInlinerThreshold
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:695,1
    - Dst: LLVMRunPasses
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:697,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:700,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:700,1
    - Dst: LLVMDisposePassBuilderOptions
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:702,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - context
    - module
    argTypes:
    - LLVMJitContext*
    - LLVMModuleRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 704
    functionName: llvm_optimize_module
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - LLVMCreatePassBuilderOptions
    - llvm_error_message
    - LLVMPassManagerBuilderUseInlinerWithThreshold
    - LLVMAddPromoteMemoryToRegisterPass
    - LLVMRunPassManager
    - LLVMPassManagerBuilderPopulateFunctionPassManager
    - LLVMPassBuilderOptionsSetInlinerThreshold
    - LLVMPassBuilderOptionsSetVerifyEach
    - LLVMPassBuilderOptionsSetDebugLogging
    - elog
    - LLVMCreatePassManager
    - LLVMDisposePassBuilderOptions
    - LLVMAddFunctionInliningPass
    - LLVMRunPasses
    - LLVMGetNextFunction
    - LLVMPassManagerBuilderPopulateModulePassManager
    - LLVMAddAlwaysInlinerPass
    - LLVMPassManagerBuilderDispose
    - LLVMPassManagerBuilderSetOptLevel
    - LLVMRunFunctionPassManager
    - LLVMInitializeFunctionPassManager
    - LLVMCreateFunctionPassManagerForModule
    - LLVMPassManagerBuilderCreate
    - LLVMDisposePassManager
    - LLVMGetFirstFunction
    - LLVMFinalizeFunctionPassManager
    linkageType: ''
    returnType: void
    signature: void llvm_optimize_module(LLVMJitContext *context, LLVMModuleRef module)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:726,1
    - Dst: llvm_inline
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:727,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:728,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:729,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:737,1
    - Dst: LLVMWriteBitcodeToFile
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:740,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:741,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:746,1
    - Dst: llvm_optimize_module
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:747,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:748,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:749,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:756,1
    - Dst: LLVMWriteBitcodeToFile
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:759,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:760,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:764,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:772,1
    - Dst: LLVMOrcLLJITGetMainJITDylib
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:776,1
    - Dst: LLVMOrcCreateNewThreadSafeModule
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:778,1
    - Dst: LLVMOrcJITDylibCreateResourceTracker
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:781,1
    - Dst: LLVMOrcLLJITAddLLVMIRModuleWithRT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:790,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:795,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:796,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:801,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:802,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:809,1
    - Dst: lappend
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:810,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:811,1
    - Dst: ereport
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:813,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:814,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:815,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:816,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:817,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:818,1
    - Dst: errhidecontext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:819,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 1
    argNames:
    - context
    argTypes:
    - LLVMJitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 820
    functionName: llvm_compile_module
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - llvm_error_message
    - INSTR_TIME_ACCUM_DIFF
    - llvm_inline
    - LLVMOrcJITDylibCreateResourceTracker
    - elog
    - llvm_optimize_module
    - pfree
    - INSTR_TIME_GET_DOUBLE
    - errmsg_internal
    - errhidestmt
    - psprintf
    - lappend
    - ereport
    - LLVMOrcCreateNewThreadSafeModule
    - errhidecontext
    - LLVMOrcLLJITGetMainJITDylib
    - INSTR_TIME_SET_CURRENT
    - MemoryContextAlloc
    - LLVMOrcLLJITAddLLVMIRModuleWithRT
    - MemoryContextSwitchTo
    - LLVMWriteBitcodeToFile
    linkageType: ''
    returnType: void
    signature: void llvm_compile_module(LLVMJitContext *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:838,1
    - Dst: LLVMInitializeNativeTarget
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:840,1
    - Dst: LLVMInitializeNativeAsmPrinter
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:841,1
    - Dst: LLVMInitializeNativeAsmParser
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:842,1
    - Dst: LLVMContextCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:846,1
    - Dst: llvm_create_types
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:856,1
    - Dst: llvm_set_target
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:861,1
    - Dst: LLVMGetTargetFromTriple
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:863,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:865,1
    - Dst: LLVMGetHostCPUName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:874,1
    - Dst: LLVMGetHostCPUFeatures
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:875,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:876,1
    - Dst: LLVMCreateTargetMachine
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:880,1
    - Dst: LLVMCreateTargetMachine
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:885,1
    - Dst: LLVMDisposeMessage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:890,1
    - Dst: LLVMDisposeMessage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:892,1
    - Dst: LLVMLoadLibraryPermanently
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:896,1
    - Dst: LLVMOrcCreateNewThreadSafeContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:899,1
    - Dst: llvm_create_jit_instance
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:901,1
    - Dst: llvm_create_jit_instance
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:904,1
    - Dst: on_proc_exit
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:908,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:912,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 913
    functionName: llvm_session_initialize
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - elog
    - LLVMGetHostCPUFeatures
    - LLVMInitializeNativeAsmPrinter
    - LLVMInitializeNativeAsmParser
    - LLVMGetHostCPUName
    - LLVMOrcCreateNewThreadSafeContext
    - llvm_create_jit_instance
    - on_proc_exit
    - llvm_set_target
    - MemoryContextSwitchTo
    - llvm_create_types
    - LLVMCreateTargetMachine
    - LLVMInitializeNativeTarget
    - LLVMContextCreate
    - LLVMDisposeMessage
    - LLVMLoadLibraryPermanently
    - LLVMGetTargetFromTriple
    linkageType: ''
    returnType: void
    signature: void llvm_session_initialize(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: llvm_in_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:926,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:928,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:933,1
    - Dst: LLVMOrcDisposeLLJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:939,1
    - Dst: LLVMOrcDisposeLLJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:944,1
    - Dst: LLVMOrcDisposeThreadSafeContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:949,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 953
    functionName: llvm_shutdown
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - elog
    - llvm_in_fatal_on_oom
    - LLVMOrcDisposeThreadSafeContext
    - Assert
    - LLVMOrcDisposeLLJIT
    linkageType: ''
    returnType: void
    signature: void llvm_shutdown(int code, Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:963,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:965,1
    - Dst: LLVMGetFunctionReturnType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - mod
    - name
    argTypes:
    - LLVMModuleRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 956
    functionDepth: 2
    functionLinenumber: 956
    functionLinenumberEnd: 970
    functionName: load_return_type
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - elog
    - LLVMGetNamedFunction
    - LLVMGetFunctionReturnType
    linkageType: ''
    returnType: LLVMTypeRef
    signature: LLVMTypeRef load_return_type(LLVMModuleRef mod, const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:980,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:983,1
    - Dst: LLVMGetTarget
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:983,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:986,1
    - Dst: LLVMGetDataLayoutStr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:986,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 987
    functionName: llvm_set_target
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - elog
    - pstrdup
    - LLVMGetTarget
    - LLVMGetDataLayoutStr
    linkageType: ''
    returnType: void
    signature: void llvm_set_target(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1002,1
    - Dst: LLVMCreateMemoryBufferWithContentsOfFile
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1005,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1007,1
    - Dst: LLVMParseBitcodeInContext2
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1012,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1014,1
    - Dst: LLVMDisposeMemoryBuffer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1016,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1018,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1019,1
    - Dst: load_return_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1020,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1021,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1022,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1023,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1024,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1025,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1026,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1027,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1028,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1029,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1030,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1031,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1032,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1033,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1034,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1035,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1036,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1037,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1038,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1039,1
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1041,1
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1042,1
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1043,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 995
    functionDepth: 3
    functionLinenumber: 995
    functionLinenumberEnd: 1044
    functionName: llvm_create_types
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - elog
    - LLVMDisposeMemoryBuffer
    - load_return_type
    - LLVMGetNamedFunction
    - llvm_pg_var_type
    - LLVMCreateMemoryBufferWithContentsOfFile
    - LLVMParseBitcodeInContext2
    - snprintf
    linkageType: ''
    returnType: void
    signature: void llvm_create_types(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1056,1
    - Dst: strlen
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1056,1
    - Dst: strlen
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1064,1
    - Dst: strrchr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1065,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1068,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1069,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1075,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1081,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - name
    - modname
    - funcname
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1050
    functionDepth: 0
    functionLinenumber: 1050
    functionLinenumberEnd: 1083
    functionName: llvm_split_symbol_name
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - pstrdup
    - strrchr
    - pnstrdup
    - strlen
    - strncmp
    linkageType: ''
    returnType: void
    signature: void llvm_split_symbol_name(const char *name, char **modname, char
      **funcname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1101,1
    - Dst: llvm_split_symbol_name
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1105,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1108,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1111,1
    - Dst: LLVMSearchForAddressOfSymbol
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1114,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1116,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1118,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - symname
    - ctx
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1125
    functionName: llvm_resolve_symbol
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - pfree
    - load_external_function
    - LLVMSearchForAddressOfSymbol
    - llvm_split_symbol_name
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t llvm_resolve_symbol(const char *symname, void *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1134,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1136,1
    - Dst: LLVMOrcSymbolStringPoolEntryStr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1143,1
    - Dst: LLVMOrcRetainSymbolStringPoolEntry
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1145,1
    - Dst: llvm_resolve_symbol
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1147,1
    - Dst: LLVMOrcAbsoluteSymbols
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1151,1
    - Dst: LLVMOrcJITDylibDefine
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1152,1
    - Dst: LLVMOrcDisposeMaterializationUnit
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1154,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 8
    argNames:
    - GeneratorObj
    - Ctx
    - LookupState
    - Kind
    - JD
    - JDLookupFlags
    - LookupSet
    - LookupSetSize
    argTypes:
    - LLVMOrcDefinitionGeneratorRef
    - void*
    - LLVMOrcLookupStateRef*
    - LLVMOrcLookupKind
    - LLVMOrcJITDylibRef
    - LLVMOrcJITDylibLookupFlags
    - LLVMOrcCLookupSet
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1127
    functionDepth: 2
    functionLinenumber: 1127
    functionLinenumberEnd: 1159
    functionName: llvm_resolve_symbols
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - palloc0_array
    - LLVMOrcRetainSymbolStringPoolEntry
    - pfree
    - LLVMOrcJITDylibDefine
    - LLVMOrcDisposeMaterializationUnit
    - LLVMOrcSymbolStringPoolEntryStr
    - llvm_resolve_symbol
    - LLVMOrcAbsoluteSymbols
    linkageType: ''
    returnType: LLVMErrorRef
    signature: "LLVMErrorRef llvm_resolve_symbols(LLVMOrcDefinitionGeneratorRef GeneratorObj,
      void *Ctx,\n\t\t\t\t\t LLVMOrcLookupStateRef *LookupState, LLVMOrcLookupKind
      Kind,\n\t\t\t\t\t LLVMOrcJITDylibRef JD, LLVMOrcJITDylibLookupFlags JDLookupFlags,\n\t\t\t\t\t
      LLVMOrcCLookupSet LookupSet, size_t LookupSetSize)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1173,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - error
    argTypes:
    - void*
    - LLVMErrorRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1170
    functionDepth: 1
    functionLinenumber: 1170
    functionLinenumberEnd: 1175
    functionName: llvm_log_jit_error
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - elog
    - llvm_error_message
    linkageType: ''
    returnType: void
    signature: void llvm_log_jit_error(void *ctx, LLVMErrorRef error)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManagerReserveAlloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1185,1
    - Dst: LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1188,1
    - Dst: LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1191,1
    - Dst: LLVMCreateGDBRegistrationListener
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1196,1
    - Dst: LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1198,1
    - Dst: LLVMCreatePerfJITEventListener
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1203,1
    - Dst: LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - Ctx
    - ES
    - Triple
    argTypes:
    - void*
    - LLVMOrcExecutionSessionRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1180
    functionDepth: 1
    functionLinenumber: 1180
    functionLinenumberEnd: 1210
    functionName: llvm_create_object_layer
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - LLVMCreatePerfJITEventListener
    - LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener
    - LLVMCreateGDBRegistrationListener
    - LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManagerReserveAlloc
    - LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager
    - LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager
    linkageType: ''
    returnType: LLVMOrcObjectLayerRef
    signature: LLVMOrcObjectLayerRef llvm_create_object_layer(void *Ctx, LLVMOrcExecutionSessionRef
      ES, const char *Triple)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LLVMOrcCreateLLJITBuilder
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1226,1
    - Dst: LLVMOrcJITTargetMachineBuilderCreateFromTargetMachine
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1227,1
    - Dst: LLVMOrcLLJITBuilderSetJITTargetMachineBuilder
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1228,1
    - Dst: LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1230,1
    - Dst: LLVMOrcCreateLLJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1234,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1236,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1237,1
    - Dst: LLVMOrcExecutionSessionSetErrorReporter
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1239,1
    - Dst: LLVMOrcLLJITGetExecutionSession
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1239,1
    - Dst: LLVMOrcCreateDynamicLibrarySearchGeneratorForProcess
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1246,1
    - Dst: LLVMOrcLLJITGetGlobalPrefix
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1247,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1250,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1251,1
    - Dst: LLVMOrcJITDylibAddGenerator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1252,1
    - Dst: LLVMOrcLLJITGetMainJITDylib
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1252,1
    - Dst: LLVMOrcCreateCustomCAPIDefinitionGenerator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1259,1
    - Dst: LLVMOrcCreateCustomCAPIDefinitionGenerator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1261,1
    - Dst: LLVMOrcJITDylibAddGenerator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1263,1
    - Dst: LLVMOrcLLJITGetMainJITDylib
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1263,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - tm
    argTypes:
    - LLVMTargetMachineRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1216
    functionDepth: 1
    functionLinenumber: 1216
    functionLinenumberEnd: 1266
    functionName: llvm_create_jit_instance
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - elog
    - llvm_error_message
    - LLVMOrcCreateDynamicLibrarySearchGeneratorForProcess
    - LLVMOrcLLJITBuilderSetJITTargetMachineBuilder
    - LLVMOrcCreateCustomCAPIDefinitionGenerator
    - LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator
    - LLVMOrcLLJITGetGlobalPrefix
    - LLVMOrcLLJITGetExecutionSession
    - LLVMOrcExecutionSessionSetErrorReporter
    - LLVMOrcCreateLLJIT
    - LLVMOrcJITTargetMachineBuilderCreateFromTargetMachine
    - LLVMOrcLLJITGetMainJITDylib
    - LLVMOrcCreateLLJITBuilder
    - LLVMOrcJITDylibAddGenerator
    linkageType: ''
    returnType: LLVMOrcLLJITRef
    signature: LLVMOrcLLJITRef llvm_create_jit_instance(LLVMTargetMachineRef tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetErrorMessage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1271,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1272,1
    - Dst: LLVMDisposeErrorMessage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - error
    argTypes:
    - LLVMErrorRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1268
    functionDepth: 0
    functionLinenumber: 1268
    functionLinenumberEnd: 1277
    functionName: llvm_error_message
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 5
    functionsReached:
    - LLVMDisposeErrorMessage
    - LLVMGetErrorMessage
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      llvm_error_message(LLVMErrorRef error)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1285,1
    - Dst: jit_release_context
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1282
    functionDepth: 1
    functionLinenumber: 1282
    functionLinenumberEnd: 1289
    functionName: ResOwnerReleaseJitContext
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - jit_release_context
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ResOwnerReleaseJitContext(Datum res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertVariableIsOfType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_types.c:84,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_types.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 87
    functionName: AttributeTemplate
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_types.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - StaticAssertVariableIsOfType
    linkageType: ''
    returnType: Datum
    signature: Datum AttributeTemplate(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertVariableIsOfType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_types.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - struct ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 104
    functionName: ExecEvalSubroutineTemplate
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_types.c
    functionUses: 0
    functionsReached:
    - StaticAssertVariableIsOfType
    linkageType: ''
    returnType: void
    signature: "void ExecEvalSubroutineTemplate(ExprState *state,\n\t\t\t\t\t\t   struct
      ExprEvalStep *op,\n\t\t\t\t\t\t   ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertVariableIsOfType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_types.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - struct ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: ExecEvalBoolSubroutineTemplate
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_types.c
    functionUses: 0
    functionsReached:
    - StaticAssertVariableIsOfType
    linkageType: ''
    returnType: bool
    signature: "bool ExecEvalBoolSubroutineTemplate(ExprState *state,\n\t\t\t\t\t\t\t
      \  struct ExprEvalStep *op,\n\t\t\t\t\t\t\t   ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: FunctionReturningBool
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool FunctionReturningBool(void)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: llvm_mutable_module
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:101,1
    - Dst: LLVMGetModuleContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:102,1
    - Dst: llvm_expand_funcname
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:104,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:112,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:113,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:140,1
    - Dst: LLVMFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:142,1
    - Dst: LLVMVoidTypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:142,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:143,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:145,1
    - Dst: LLVMSetLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:146,1
    - Dst: LLVMSetParamAlignment
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:147,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:147,1
    - Dst: llvm_copy_attributes
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:148,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:151,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:153,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:155,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:157,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:159,1
    - Dst: LLVMCreateBuilderInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:161,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:163,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:164,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:165,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:166,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:167,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:168,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:172,1
    - Dst: LLVMBuildAlloca
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:175,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:177,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:180,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:183,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:185,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:192,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:194,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:196,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:198,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:206,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:208,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:210,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:215,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:224,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:228,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:234,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:235,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:240,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:240,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:243,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:249,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:256,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:257,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:258,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:260,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:264,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:265,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:274,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:275,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:280,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:282,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:283,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:284,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:286,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:286,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:298,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:298,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:299,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:300,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:307,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:309,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:311,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:313,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:315,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:317,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:331,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:332,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:333,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:341,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:342,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:344,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:350,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:353,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:353,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:354,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:355,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:356,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:357,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:358,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:359,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:362,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:364,1
    - Dst: LLVMInt16TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:364,1
    - Dst: LLVMBuildSwitch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:374,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:379,1
    - Dst: LLVMAddCase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:381,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:387,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:390,1
    - Dst: LLVMBuildUnreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:391,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:399,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:400,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:404,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:409,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:417,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:417,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:427,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:433,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:437,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:439,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:468,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:469,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:470,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:470,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:472,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:474,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:475,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:478,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:480,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:482,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:485,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:486,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:487,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:487,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:489,1
    - Dst: l_datum_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:490,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:491,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:493,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:499,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:500,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:501,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:503,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:515,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:535,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:538,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:538,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:540,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:541,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:543,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:549,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:552,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:557,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:560,1
    - Dst: LLVMBuildAdd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:563,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:566,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:568,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:580,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:581,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:584,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:585,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:589,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:590,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:591,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:592,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:594,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:604,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:605,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:636,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:638,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:650,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:653,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:653,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:657,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:660,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:660,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:661,1
    - Dst: LLVMIntTypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:670,1
    - Dst: LLVMPointerType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:671,1
    - Dst: LLVMBuildPointerCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:674,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:675,1
    - Dst: LLVMBuildSExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:676,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:678,1
    - Dst: LLVMBuildPtrToInt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:686,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:690,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:696,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:700,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:701,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:702,1
    - Dst: l_callsite_ro
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:705,1
    - Dst: l_callsite_alwaysinline
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:706,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:710,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:711,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:712,1
    - Dst: l_callsite_ro
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:715,1
    - Dst: LLVMBuildAdd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:718,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:718,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:728,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:729,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:729,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:733,1
    - Dst: LLVMBuildAdd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:735,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:736,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:746,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:750,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:756,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:759,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:761,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:761,1
    - Dst: LLVMBuildTrunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:762,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:762,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:763,1
    - Dst: LLVMBuildRetVoid
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:764,1
    - Dst: LLVMDisposeBuilder
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:767,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 228
    argCount: 4
    argNames:
    - context
    - desc
    - ops
    - natts
    argTypes:
    - LLVMJitContext*
    - TupleDesc
    - TupleTableSlotOps*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 770
    functionName: slot_compile_deform
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c
    functionUses: 1
    functionsReached:
    - l_bb_append_v
    - LLVMBuildSwitch
    - LLVMInt8TypeInContext
    - LLVMBuildAdd
    - llvm_pg_var_func_type
    - TYPEALIGN
    - llvm_mutable_module
    - palloc_array
    - LLVMBuildAlloca
    - LLVMBuildICmp
    - LLVMFunctionType
    - llvm_copy_attributes
    - LLVMAppendBasicBlockInContext
    - l_datum_const
    - LLVMDisposeBuilder
    - LLVMInt16TypeInContext
    - LLVMBuildSExt
    - LLVMBuildPtrToInt
    - LLVMGetParam
    - llvm_pg_func
    - LLVMIntTypeInContext
    - llvm_expand_funcname
    - l_load_struct_gep
    - Assert
    - LLVMBuildUnreachable
    - LLVMBuildStore
    - LLVMBuildTrunc
    - l_call
    - LLVMBuildPointerCast
    - l_int16_const
    - LLVMGetFunctionType
    - lengthof
    - LLVMVoidTypeInContext
    - LLVMSetParamAlignment
    - l_callsite_ro
    - l_load_gep1
    - l_int32_const
    - LLVMPointerType
    - l_sizet_const
    - l_ptr
    - TupleDescCompactAttr
    - TupleDescAttr
    - LLVMSetLinkage
    - LLVMBuildBr
    - LLVMBuildRetVoid
    - LLVMGetModuleContext
    - LLVMBuildBitCast
    - l_gep
    - l_load
    - l_int8_const
    - LLVMAddFunction
    - LLVMBuildCondBr
    - LLVMPositionBuilderAtEnd
    - l_struct_gep
    - LLVMAddCase
    - pg_unreachable
    - LLVMBuildAnd
    - l_callsite_alwaysinline
    - LLVMInt32TypeInContext
    - LLVMBuildZExt
    - LLVMCreateBuilderInContext
    linkageType: ''
    returnType: LLVMValueRef
    signature: "LLVMValueRef slot_compile_deform(LLVMJitContext *context, TupleDesc
      desc,\n\t\t\t\t\tconst TupleTableSlotOps *ops, int natts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::set_new_handler
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:59,1
    - Dst: llvm::install_bad_alloc_error_handler
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:60,1
    - Dst: llvm::install_fatal_error_handler
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 64
    functionName: llvm_enter_fatal_on_oom
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp
    functionUses: 3
    functionsReached:
    - std::set_new_handler
    - llvm::install_bad_alloc_error_handler
    - llvm::install_fatal_error_handler
    linkageType: ''
    returnType: void
    signature: void llvm_enter_fatal_on_oom(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::set_new_handler
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:75,1
    - Dst: llvm::remove_bad_alloc_error_handler
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:76,1
    - Dst: llvm::remove_fatal_error_handler
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 79
    functionName: llvm_leave_fatal_on_oom
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp
    functionUses: 3
    functionsReached:
    - std::set_new_handler
    - llvm::remove_bad_alloc_error_handler
    - llvm::remove_fatal_error_handler
    linkageType: ''
    returnType: void
    signature: void llvm_leave_fatal_on_oom(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: llvm_in_fatal_on_oom
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool llvm_in_fatal_on_oom(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::set_new_handler
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:100,1
    - Dst: llvm::remove_bad_alloc_error_handler
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:101,1
    - Dst: llvm::remove_fatal_error_handler
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 105
    functionName: llvm_reset_after_error
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp
    functionUses: 0
    functionsReached:
    - std::set_new_handler
    - llvm::remove_bad_alloc_error_handler
    - llvm::remove_fatal_error_handler
    linkageType: ''
    returnType: void
    signature: void llvm_reset_after_error(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: llvm_assert_in_fatal_section
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp
    functionUses: 3
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void llvm_assert_in_fatal_section(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:116,1
    - Dst: errcode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:117,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:118,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: fatal_system_new_handler
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void fatal_system_new_handler(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:127,1
    - Dst: errcode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:128,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:129,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - user_data
    - reason
    - gen_crash_diag
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 131
    functionName: fatal_llvm_new_handler
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: "void fatal_llvm_new_handler(void *user_data,\n\t\t\t\t\t   const char
      *reason,\n\t\t\t\t\t   bool gen_crash_diag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:138,1
    - Dst: errcode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:139,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - user_data
    - reason
    - gen_crash_diag
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 141
    functionName: fatal_llvm_error_handler
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_error.cpp
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: "void fatal_llvm_error_handler(void *user_data,\n\t\t\t\t\t\t const
      char *reason,\n\t\t\t\t\t\t bool gen_crash_diag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:43,1
    - Dst: sigfillset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:48,1
    - Dst: sigfillset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:49,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:57,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:58,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:61,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:62,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:65,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:66,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:69,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:70,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:73,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:74,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:77,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:78,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:81,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:82,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:85,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:86,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:91,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:94,1
    - Dst: sigdelset
      Src: /src/postgres/src/backend/libpq/pqsignal.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 99
    functionName: pqinitmask
    functionSourceFile: /src/postgres/src/backend/libpq/pqsignal.c
    functionUses: 0
    functionsReached:
    - sigdelset
    - sigemptyset
    - sigfillset
    linkageType: ''
    returnType: void
    signature: void pqinitmask(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-scram.c:214,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth-scram.c:215,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-scram.c:218,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth-scram.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - port
    - buf
    argTypes:
    - Port*
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 220
    functionName: scram_get_mechanisms
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void scram_get_mechanisms(Port *port, StringInfo buf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/auth-scram.c:243,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:256,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:260,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:263,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:264,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:265,1
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/auth-scram.c:272,1
    - Dst: parse_scram_secret
      Src: /src/postgres/src/backend/libpq/auth-scram.c:276,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:288,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:289,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:300,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth-scram.c:300,1
    - Dst: mock_scram_secret
      Src: /src/postgres/src/backend/libpq/auth-scram.c:323,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - port
    - selected_mech
    - shadow_pass
    argTypes:
    - Port*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 331
    functionName: scram_init
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - parse_scram_secret
    - strcmp
    - errcode
    - _
    - psprintf
    - ereport
    - mock_scram_secret
    - get_password_type
    - errmsg
    linkageType: ''
    returnType: void
    signature: 'void *

      scram_init(Port *port, const char *selected_mech, const char *shadow_pass)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-scram.c:366,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:368,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:378,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:379,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:380,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:381,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:382,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:383,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:384,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:385,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:386,1
    - Dst: read_client_first_message
      Src: /src/postgres/src/backend/libpq/auth-scram.c:397,1
    - Dst: build_server_first_message
      Src: /src/postgres/src/backend/libpq/auth-scram.c:400,1
    - Dst: read_client_final_message
      Src: /src/postgres/src/backend/libpq/auth-scram.c:413,1
    - Dst: verify_final_nonce
      Src: /src/postgres/src/backend/libpq/auth-scram.c:415,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:416,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:417,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:418,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:419,1
    - Dst: verify_client_proof
      Src: /src/postgres/src/backend/libpq/auth-scram.c:440,1
    - Dst: build_server_final_message
      Src: /src/postgres/src/backend/libpq/auth-scram.c:447,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:455,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:463,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:467,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:468,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 6
    argNames:
    - opaq
    - input
    - inputlen
    - output
    - outputlen
    - logdetail
    argTypes:
    - void*
    - char*
    - int
    - char**
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 473
    functionName: scram_exchange
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - verify_final_nonce
    - elog
    - memcpy
    - errcode
    - Assert
    - read_client_final_message
    - pstrdup
    - ereport
    - read_client_first_message
    - build_server_final_message
    - build_server_first_message
    - strlen
    - errmsg
    - verify_client_proof
    - errdetail
    linkageType: ''
    returnType: int
    signature: "int scram_exchange(void *opaq, const char *input, int inputlen,\n\t\t\t
      \  char **output, int *outputlen, const char **logdetail)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_saslprep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:494,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/libpq/auth-scram.c:499,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:500,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:501,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:502,1
    - Dst: scram_build_secret
      Src: /src/postgres/src/backend/libpq/auth-scram.c:504,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-scram.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - password
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 480
    functionDepth: 5
    functionLinenumber: 480
    functionLinenumberEnd: 513
    functionName: pg_be_scram_build_secret
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - errcode
    - pfree
    - ereport
    - errmsg
    - pg_strong_random
    - pg_saslprep
    - scram_build_secret
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_be_scram_build_secret(const char *password)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: parse_scram_secret
      Src: /src/postgres/src/backend/libpq/auth-scram.c:538,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:545,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:549,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:549,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:550,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:551,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:555,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:556,1
    - Dst: pg_saslprep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:561,1
    - Dst: scram_SaltedPassword
      Src: /src/postgres/src/backend/libpq/auth-scram.c:566,1
    - Dst: scram_ServerKey
      Src: /src/postgres/src/backend/libpq/auth-scram.c:569,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:572,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-scram.c:576,1
    - Dst: timingsafe_bcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:582,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - username
    - password
    - secret
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 520
    functionDepth: 5
    functionLinenumber: 520
    functionLinenumberEnd: 583
    functionName: scram_verify_plain_password
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - elog
    - parse_scram_secret
    - scram_SaltedPassword
    - pfree
    - timingsafe_bcmp
    - pg_b64_dec_len
    - ereport
    - scram_ServerKey
    - strlen
    - errmsg
    - pg_b64_decode
    - palloc
    - pg_saslprep
    linkageType: ''
    returnType: bool
    signature: "bool scram_verify_plain_password(const char *username, const char
      *password,\n\t\t\t\t\t\t\tconst char *secret)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:619,1
    - Dst: strsep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:620,1
    - Dst: strsep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:623,1
    - Dst: strsep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:626,1
    - Dst: strsep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:629,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:635,1
    - Dst: strtol
      Src: /src/postgres/src/backend/libpq/auth-scram.c:641,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:649,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:649,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:650,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:651,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:651,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:655,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:660,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:660,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:661,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:662,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:662,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:666,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:668,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:668,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:669,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:670,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:670,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:674,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 7
    argNames:
    - secret
    - iterations
    - hash_type
    - key_length
    - salt
    - stored_key
    - server_key
    argTypes:
    - char*
    - int*
    - pg_cryptohash_type*
    - int*
    - char**
    - uint8*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 597
    functionDepth: 2
    functionLinenumber: 597
    functionLinenumberEnd: 681
    functionName: parse_scram_secret
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 2
    functionsReached:
    - strsep
    - memcpy
    - strcmp
    - pg_b64_dec_len
    - strtol
    - pstrdup
    - strlen
    - pg_b64_decode
    - palloc
    linkageType: ''
    returnType: bool
    signature: "bool parse_scram_secret(const char *secret, int *iterations,\n\t\t\t\t
      \  pg_cryptohash_type *hash_type, int *key_length,\n\t\t\t\t   char **salt,
      uint8 *stored_key, uint8 *server_key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: scram_mock_salt
      Src: /src/postgres/src/backend/libpq/auth-scram.c:715,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:717,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:719,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:721,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:722,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:726,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/auth-scram.c:733,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/auth-scram.c:734,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 7
    argNames:
    - username
    - hash_type
    - iterations
    - key_length
    - salt
    - stored_key
    - server_key
    argTypes:
    - char*
    - pg_cryptohash_type*
    - int*
    - int*
    - char**
    - uint8*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 694
    functionDepth: 2
    functionLinenumber: 694
    functionLinenumberEnd: 735
    functionName: mock_scram_secret
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - elog
    - pg_b64_enc_len
    - pg_b64_encode
    - scram_mock_salt
    - memset
    - palloc
    linkageType: ''
    returnType: void
    signature: "void mock_scram_secret(const char *username, pg_cryptohash_type *hash_type,\n\t\t\t\t
      \ int *iterations, int *key_length, char **salt,\n\t\t\t\t  uint8 *stored_key,
      uint8 *server_key)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:747,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:748,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:749,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:750,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:751,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:755,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:756,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:757,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:758,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - input
    - attr
    argTypes:
    - char**
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 740
    functionDepth: 1
    functionLinenumber: 740
    functionLinenumberEnd: 774
    functionName: read_attr_value
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 2
    functionsReached:
    - errcode
    - ereport
    - errmsg
    - errdetail
    - sanitize_char
    linkageType: ''
    returnType: char
    signature: 'char *

      read_attr_value(char **input, char attr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 794
    functionName: is_scram_printable
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_scram_printable(char *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:810,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:812,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 814
    functionName: sanitize_char
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      sanitize_char(char c)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 824
    functionDepth: 0
    functionLinenumber: 824
    functionLinenumberEnd: 844
    functionName: sanitize_str
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      sanitize_str(const char *s)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:860,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:861,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:862,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:863,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:873,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:874,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:875,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:876,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:877,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:883,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:884,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:885,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:886,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - input
    - attr_p
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 852
    functionDepth: 1
    functionLinenumber: 852
    functionLinenumberEnd: 902
    functionName: read_any_attr
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - errmsg
    - errdetail
    - sanitize_char
    linkageType: ''
    returnType: char
    signature: 'char *

      read_any_attr(char **input, char *attr_p)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:913,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:991,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:992,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:993,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:994,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:998,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:999,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1000,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1001,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1002,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1013,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1014,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1015,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1016,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1020,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1021,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1022,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1023,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1028,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1029,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1030,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1031,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1032,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1042,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1043,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1044,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1045,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1047,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1053,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1054,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1055,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1056,1
    - Dst: sanitize_str
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1057,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1060,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1061,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1062,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1063,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1064,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1071,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1072,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1073,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1075,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1076,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1077,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1078,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1079,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1082,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1092,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1093,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1094,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1101,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1104,1
    - Dst: is_scram_printable
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1105,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1106,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1107,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1108,1
    - Dst: read_any_attr
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1115,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 2
    argNames:
    - state
    - input
    argTypes:
    - scram_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 910
    functionDepth: 2
    functionLinenumber: 910
    functionLinenumberEnd: 1118
    functionName: read_client_first_message
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - strcmp
    - errcode
    - read_any_attr
    - pstrdup
    - ereport
    - errmsg
    - read_attr_value
    - errdetail
    - sanitize_char
    - sanitize_str
    - is_scram_printable
    linkageType: ''
    returnType: void
    signature: void read_client_first_message(scram_state *state, const char *input)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1127,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1128,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1129,1
    - Dst: timingsafe_bcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1133,1
    - Dst: timingsafe_bcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1124
    functionDepth: 1
    functionLinenumber: 1124
    functionLinenumberEnd: 1139
    functionName: verify_final_nonce
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - timingsafe_bcmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool verify_final_nonce(scram_state *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_hmac_create
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1151,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1160,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1161,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1163,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1164,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1165,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1167,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1168,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1169,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1171,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1172,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1174,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1175,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1178,1
    - Dst: scram_H
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1185,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1187,1
    - Dst: timingsafe_bcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1189,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1146
    functionDepth: 1
    functionLinenumber: 1146
    functionLinenumberEnd: 1193
    functionName: verify_client_proof
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_hmac_init
    - elog
    - scram_H
    - pg_hmac_free
    - timingsafe_bcmp
    - pg_hmac_error
    - strlen
    - pg_hmac_create
    - pg_hmac_update
    - pg_hmac_final
    linkageType: ''
    returnType: bool
    signature: bool verify_client_proof(scram_state *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1236,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1237,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1238,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1240,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1242,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1248,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1252,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1199
    functionDepth: 2
    functionLinenumber: 1199
    functionLinenumberEnd: 1257
    functionName: build_server_first_message
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_b64_enc_len
    - errcode
    - pg_b64_encode
    - psprintf
    - ereport
    - pstrdup
    - errmsg
    - pg_strong_random
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      build_server_first_message(scram_state *state)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1275,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1322,1
    - Dst: be_tls_get_certificate_hash
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1325,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1330,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1332,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1334,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1335,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1336,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1338,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1340,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1341,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1344,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1351,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1352,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1353,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1354,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1357,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1368,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1370,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1371,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1372,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1375,1
    - Dst: read_any_attr
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1381,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1384,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1384,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1385,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1386,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1388,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1390,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1391,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1392,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1393,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1396,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1397,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1398,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1399,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1401,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1402,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - state
    - input
    argTypes:
    - scram_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1404
      start: 1263
    functionDepth: 2
    functionLinenumber: 1263
    functionLinenumberEnd: 1404
    functionName: read_client_final_message
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - strcmp
    - errcode
    - be_tls_get_certificate_hash
    - pg_b64_encode
    - pstrdup
    - pg_b64_decode
    - palloc
    - elog
    - memcpy
    - Assert
    - pfree
    - pg_b64_dec_len
    - errmsg
    - ereport
    - strlen
    - read_attr_value
    - pg_b64_enc_len
    - read_any_attr
    - errdetail
    - snprintf
    linkageType: ''
    returnType: void
    signature: void read_client_final_message(scram_state *state, const char *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_hmac_create
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1415,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1418,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1419,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1421,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1422,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1423,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1425,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1426,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1427,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1429,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1430,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1432,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1433,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1436,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1438,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1440,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1441,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1445,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1459,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1409
    functionDepth: 2
    functionLinenumber: 1409
    functionLinenumberEnd: 1460
    functionName: build_server_final_message
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_hmac_init
    - elog
    - pg_b64_enc_len
    - pg_hmac_free
    - pg_b64_encode
    - psprintf
    - pg_hmac_error
    - strlen
    - pg_hmac_create
    - palloc
    - pg_hmac_update
    - pg_hmac_final
    linkageType: ''
    returnType: char
    signature: 'char *

      build_server_final_message(scram_state *state)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetMockAuthenticationNonce
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1474,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1489,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1491,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1492,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1493,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1493,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1494,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1495,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1497,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1500,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - username
    - hash_type
    - key_length
    argTypes:
    - char*
    - pg_cryptohash_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1468
    functionDepth: 2
    functionLinenumber: 1468
    functionLinenumberEnd: 1503
    functionName: scram_mock_salt
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_cryptohash_update
    - pg_cryptohash_final
    - pg_cryptohash_free
    - pg_cryptohash_create
    - Assert
    - strlen
    - GetMockAuthenticationNonce
    - StaticAssertDecl
    - pg_cryptohash_init
    linkageType: ''
    returnType: uint8
    signature: "uint8 *\nscram_mock_salt(const char *username, pg_cryptohash_type
      hash_type,\n\t\t\t\tint key_length)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/pqcomm.c:182,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/pqcomm.c:184,1
    - Dst: getsockname
      Src: /src/postgres/src/backend/libpq/pqcomm.c:189,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:193,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:194,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:209,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:213,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:217,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:220,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:221,1
    - Dst: getsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:252,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:257,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:260,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:261,1
    - Dst: pq_setkeepalivesidle
      Src: /src/postgres/src/backend/libpq/pqcomm.c:273,1
    - Dst: pq_setkeepalivesinterval
      Src: /src/postgres/src/backend/libpq/pqcomm.c:274,1
    - Dst: pq_setkeepalivescount
      Src: /src/postgres/src/backend/libpq/pqcomm.c:275,1
    - Dst: pq_settcpusertimeout
      Src: /src/postgres/src/backend/libpq/pqcomm.c:276,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/libpq/pqcomm.c:281,1
    - Dst: on_proc_exit
      Src: /src/postgres/src/backend/libpq/pqcomm.c:287,1
    - Dst: pg_set_noblock
      Src: /src/postgres/src/backend/libpq/pqcomm.c:296,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:297,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:298,1
    - Dst: fcntl
      Src: /src/postgres/src/backend/libpq/pqcomm.c:304,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqcomm.c:305,1
    - Dst: CreateWaitEventSet
      Src: /src/postgres/src/backend/libpq/pqcomm.c:308,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/libpq/pqcomm.c:309,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/libpq/pqcomm.c:311,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/libpq/pqcomm.c:313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:321,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 1
    argNames:
    - client_sock
    argTypes:
    - ClientSocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 324
    functionName: pq_init
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_setkeepalivescount
    - getsockname
    - CreateWaitEventSet
    - pq_setkeepalivesidle
    - pq_setkeepalivesinterval
    - elog
    - memcpy
    - pq_settcpusertimeout
    - pg_set_noblock
    - Assert
    - errmsg
    - fcntl
    - on_proc_exit
    - palloc0_object
    - ereport
    - MemoryContextAlloc
    - setsockopt
    - getsockopt
    - AddWaitEventToSet
    linkageType: ''
    returnType: Port
    signature: 'Port *

      pq_init(ClientSocket *client_sock)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 339
    functionName: socket_comm_reset
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void socket_comm_reset(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gss_delete_sec_context
      Src: /src/postgres/src/backend/libpq/pqcomm.c:369,1
    - Dst: gss_release_cred
      Src: /src/postgres/src/backend/libpq/pqcomm.c:372,1
    - Dst: secure_close
      Src: /src/postgres/src/backend/libpq/pqcomm.c:380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 394
    functionName: socket_close
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - secure_close
    - gss_release_cred
    - gss_delete_sec_context
    linkageType: ''
    returnType: void
    signature: void socket_close(int code, Datum arg)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/libpq/pqcomm.c:443,1
    - Dst: UNIXSOCK_PATH
      Src: /src/postgres/src/backend/libpq/pqcomm.c:454,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqcomm.c:455,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:457,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:458,1
    - Dst: Lock_AF_UNIX
      Src: /src/postgres/src/backend/libpq/pqcomm.c:463,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:469,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/pqcomm.c:473,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:478,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/pqcomm.c:479,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:481,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:482,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/pqcomm.c:483,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/pqcomm.c:485,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:503,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:504,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/pqcomm.c:513,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/pqcomm.c:516,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/pqcomm.c:519,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:522,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/pqcomm.c:523,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/pqcomm.c:534,1
    - Dst: socket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:542,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:544,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:545,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:547,1
    - Dst: fcntl
      Src: /src/postgres/src/backend/libpq/pqcomm.c:554,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqcomm.c:555,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:570,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:573,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:574,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:576,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:579,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:588,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:591,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:592,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:594,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:597,1
    - Dst: bind
      Src: /src/postgres/src/backend/libpq/pqcomm.c:609,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:614,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:617,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/pqcomm.c:621,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/pqcomm.c:623,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:626,1
    - Dst: Setup_AF_UNIX
      Src: /src/postgres/src/backend/libpq/pqcomm.c:632,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:634,1
    - Dst: listen
      Src: /src/postgres/src/backend/libpq/pqcomm.c:646,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:649,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:650,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:652,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:654,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:659,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:660,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:665,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/pqcomm.c:673,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 105
    argCount: 7
    argNames:
    - family
    - hostName
    - portNumber
    - unixSocketDir
    - ListenSockets
    - NumListenSockets
    - MaxListen
    argTypes:
    - int
    - char*
    - unsigned short
    - char*
    - pgsocket[]
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 418
    functionDepth: 2
    functionLinenumber: 418
    functionLinenumberEnd: 679
    functionName: ListenServerPort
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - errcode_for_socket_access
    - Lock_AF_UNIX
    - listen
    - errhint
    - closesocket
    - pg_freeaddrinfo_all
    - elog
    - pg_getnameinfo_all
    - UNIXSOCK_PATH
    - _
    - errmsg
    - socket
    - fcntl
    - ereport
    - bind
    - MemSet
    - strlen
    - Setup_AF_UNIX
    - gai_strerror
    - setsockopt
    - pg_getaddrinfo_all
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int ListenServerPort(int family, const char *hostName, unsigned short
      portNumber,\n\t\t\t\t const char *unixSocketDir,\n\t\t\t\t pgsocket ListenSockets[],
      int *NumListenSockets, int MaxListen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CreateSocketLockFile
      Src: /src/postgres/src/backend/libpq/pqcomm.c:700,1
    - Dst: unlink
      Src: /src/postgres/src/backend/libpq/pqcomm.c:706,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/pqcomm.c:711,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqcomm.c:711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - unixSocketDir
    - unixSocketPath
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 714
    functionName: Lock_AF_UNIX
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 1
    functionsReached:
    - lappend
    - pstrdup
    - unlink
    - CreateSocketLockFile
    linkageType: ''
    returnType: int
    signature: int Lock_AF_UNIX(const char *unixSocketDir, const char *unixSocketPath)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:732,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqcomm.c:736,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/libpq/pqcomm.c:742,1
    - Dst: getgrnam
      Src: /src/postgres/src/backend/libpq/pqcomm.c:751,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:754,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:755,1
    - Dst: chown
      Src: /src/postgres/src/backend/libpq/pqcomm.c:761,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:763,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:765,1
    - Dst: chmod
      Src: /src/postgres/src/backend/libpq/pqcomm.c:772,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:774,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:775,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:776,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - sock_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 781
    functionName: Setup_AF_UNIX
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 1
    functionsReached:
    - elog
    - strtoul
    - Assert
    - chown
    - ereport
    - chmod
    - errmsg
    - getgrnam
    - errcode_for_file_access
    linkageType: ''
    returnType: int
    signature: int Setup_AF_UNIX(const char *sock_path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/postgres/src/backend/libpq/pqcomm.c:799,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:803,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:805,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/libpq/pqcomm.c:814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - server_fd
    - client_sock
    argTypes:
    - pgsocket
    - ClientSocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 819
    functionName: AcceptConnection
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - errcode_for_socket_access
    - ereport
    - accept
    - errmsg
    - pg_usleep
    linkageType: ''
    returnType: int
    signature: int AcceptConnection(pgsocket server_fd, ClientSocket *client_sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/pqcomm.c:838,1
    - Dst: utime
      Src: /src/postgres/src/backend/libpq/pqcomm.c:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 843
    functionName: TouchSocketFiles
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - lfirst
    - utime
    linkageType: ''
    returnType: void
    signature: void TouchSocketFiles(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/pqcomm.c:838,1
    - Dst: utime
      Src: /src/postgres/src/backend/libpq/pqcomm.c:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 842
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 317
    functionsReached:
    - lfirst
    - utime
    linkageType: ''
    returnType: void
    signature: void foreach(l, sock_paths)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/pqcomm.c:856,1
    - Dst: unlink
      Src: /src/postgres/src/backend/libpq/pqcomm.c:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 848
    functionDepth: 1
    functionLinenumber: 848
    functionLinenumberEnd: 862
    functionName: RemoveSocketFiles
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - lfirst
    - unlink
    linkageType: ''
    returnType: void
    signature: void RemoveSocketFiles(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/pqcomm.c:856,1
    - Dst: unlink
      Src: /src/postgres/src/backend/libpq/pqcomm.c:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 860
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 317
    functionsReached:
    - lfirst
    - unlink
    linkageType: ''
    returnType: void
    signature: void foreach(l, sock_paths)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:884,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqcomm.c:885,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:886,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - nonblocking
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 889
    functionName: socket_set_nonblocking
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void socket_set_nonblocking(bool nonblocking)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/postgres/src/backend/libpq/pqcomm.c:905,1
    - Dst: socket_set_nonblocking
      Src: /src/postgres/src/backend/libpq/pqcomm.c:915,1
    - Dst: secure_read
      Src: /src/postgres/src/backend/libpq/pqcomm.c:924,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:940,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:941,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:942,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 897
    functionDepth: 2
    functionLinenumber: 897
    functionLinenumberEnd: 957
    functionName: pq_recvbuf
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - socket_set_nonblocking
    - errcode_for_socket_access
    - ereport
    - memmove
    - secure_read
    - errmsg
    linkageType: ''
    returnType: int
    signature: int pq_recvbuf(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:966,1
    - Dst: pq_recvbuf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:970,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 963
    functionDepth: 3
    functionLinenumber: 963
    functionLinenumberEnd: 974
    functionName: pq_getbyte
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - Assert
    - pq_recvbuf
    linkageType: ''
    returnType: int
    signature: int pq_getbyte(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:985,1
    - Dst: pq_recvbuf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:989,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 982
    functionDepth: 3
    functionLinenumber: 982
    functionLinenumberEnd: 993
    functionName: pq_peekbyte
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - Assert
    - pq_recvbuf
    linkageType: ''
    returnType: int
    signature: int pq_peekbyte(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1008,1
    - Dst: socket_set_nonblocking
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1017,1
    - Dst: secure_read
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1021,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1041,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1042,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1043,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1003
    functionDepth: 2
    functionLinenumber: 1003
    functionLinenumberEnd: 1054
    functionName: pq_getbyte_if_available
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - socket_set_nonblocking
    - Assert
    - errcode_for_socket_access
    - ereport
    - secure_read
    - errmsg
    linkageType: ''
    returnType: int
    signature: int pq_getbyte_if_available(unsigned char *c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1068,1
    - Dst: pq_recvbuf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1074,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1080,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - b
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1062
    functionDepth: 3
    functionLinenumber: 1062
    functionLinenumberEnd: 1086
    functionName: pq_getbytes
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - Assert
    - pq_recvbuf
    - memcpy
    linkageType: ''
    returnType: int
    signature: int pq_getbytes(void *b, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1102,1
    - Dst: pq_recvbuf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1097
    functionDepth: 3
    functionLinenumber: 1097
    functionLinenumberEnd: 1118
    functionName: pq_discardbytes
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - Assert
    - pq_recvbuf
    linkageType: ''
    returnType: int
    signature: int pq_discardbytes(size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1127
    functionDepth: 1
    functionLinenumber: 1127
    functionLinenumberEnd: 1132
    functionName: pq_buffer_remaining_data
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pq_buffer_remaining_data(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1149,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1150,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1141
    functionDepth: 1
    functionLinenumber: 1141
    functionLinenumberEnd: 1154
    functionName: pq_startmsgread
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void pq_startmsgread(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1165
    functionDepth: 1
    functionLinenumber: 1165
    functionLinenumberEnd: 1171
    functionName: pq_endmsgread
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void pq_endmsgread(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1181
    functionDepth: 0
    functionLinenumber: 1181
    functionLinenumberEnd: 1185
    functionName: pq_is_reading_msg
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pq_is_reading_msg(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1208,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1210,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1215,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1216,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1217,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1221,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1225,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1226,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1227,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1240,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1242,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1244,1
    - Dst: pq_discardbytes
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1246,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1247,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1248,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1249,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1253,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1255,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1258,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1262,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - s
    - maxlen
    argTypes:
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1203
    functionDepth: 4
    functionLinenumber: 1203
    functionLinenumberEnd: 1274
    functionName: pq_getmessage
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - pq_getbytes
    - pg_ntoh32
    - errcode
    - Assert
    - ereport
    - pq_discardbytes
    - PG_RE_THROW
    - errmsg
    - enlargeStringInfo
    - PG_END_TRY
    - resetStringInfo
    linkageType: ''
    returnType: int
    signature: int pq_getmessage(StringInfo s, int maxlen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: socket_set_nonblocking
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1287,1
    - Dst: internal_flush
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1288,1
    - Dst: socket_set_nonblocking
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1301,1
    - Dst: internal_flush_buffer
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1302,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1311,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - b
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1319
      start: 1277
    functionDepth: 2
    functionLinenumber: 1277
    functionLinenumberEnd: 1319
    functionName: internal_putbytes
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - internal_flush_buffer
    - internal_flush
    - socket_set_nonblocking
    - memcpy
    linkageType: ''
    returnType: int
    signature: int internal_putbytes(const void *b, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket_set_nonblocking
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1336,1
    - Dst: internal_flush
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1327
    functionDepth: 2
    functionLinenumber: 1327
    functionLinenumberEnd: 1340
    functionName: socket_flush
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - internal_flush
    - socket_set_nonblocking
    linkageType: ''
    returnType: int
    signature: int socket_flush(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_flush_buffer
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1349
    functionDepth: 1
    functionLinenumber: 1349
    functionLinenumberEnd: 1353
    functionName: internal_flush
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 2
    functionsReached:
    - internal_flush_buffer
    linkageType: ''
    returnType: int
    signature: int internal_flush(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: secure_write
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1374,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1403,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1404,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1405,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - buf
    - start
    - end
    argTypes:
    - char*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1362
    functionDepth: 1
    functionLinenumber: 1362
    functionLinenumberEnd: 1427
    functionName: internal_flush_buffer
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 2
    functionsReached:
    - secure_write
    - errcode_for_socket_access
    - ereport
    - errmsg
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline internal_flush_buffer(const char *buf, size_t *start, size_t
      *end)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket_set_nonblocking
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1449,1
    - Dst: internal_flush
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1435
    functionDepth: 2
    functionLinenumber: 1435
    functionLinenumberEnd: 1455
    functionName: socket_flush_if_writable
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - internal_flush
    - socket_set_nonblocking
    linkageType: ''
    returnType: int
    signature: int socket_flush_if_writable(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1461
    functionDepth: 0
    functionLinenumber: 1461
    functionLinenumberEnd: 1465
    functionName: socket_is_send_pending
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool socket_is_send_pending(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1496,1
    - Dst: internal_putbytes
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1501,1
    - Dst: pg_hton32
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1504,1
    - Dst: internal_putbytes
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1505,1
    - Dst: internal_putbytes
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1508,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - msgtype
    - s
    - len
    argTypes:
    - char
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1516
      start: 1491
    functionDepth: 3
    functionLinenumber: 1491
    functionLinenumberEnd: 1516
    functionName: socket_putmessage
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_hton32
    - internal_putbytes
    linkageType: ''
    returnType: int
    signature: int socket_putmessage(char msgtype, const char *s, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1537,1
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1540,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1541,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - msgtype
    - s
    - len
    argTypes:
    - char
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1543
    functionName: socket_putmessage_noblock
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_putmessage
    - repalloc
    - Assert
    linkageType: ''
    returnType: void
    signature: void socket_putmessage_noblock(char msgtype, const char *s, size_t
      len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1564,1
    - Dst: internal_putbytes
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1569,1
    - Dst: internal_putbytes
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1572,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - msgtype
    - s
    - len
    argTypes:
    - char
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1580
      start: 1561
    functionDepth: 3
    functionLinenumber: 1561
    functionLinenumberEnd: 1580
    functionName: pq_putmessage_v2
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - Assert
    - internal_putbytes
    linkageType: ''
    returnType: int
    signature: int pq_putmessage_v2(char msgtype, const char *s, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: WSAIoctl
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1608,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1619,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1620,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1621,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - port
    - idle
    - interval
    argTypes:
    - Port*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1593
    functionDepth: 1
    functionLinenumber: 1593
    functionLinenumberEnd: 1629
    functionName: pq_setkeepaliveswin32
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - ereport
    - WSAIoctl
    - errmsg
    - WSAGetLastError
    linkageType: ''
    returnType: int
    signature: int pq_setkeepaliveswin32(Port *port, int idle, int interval)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1647,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1651,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1652,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1632
    functionDepth: 1
    functionLinenumber: 1632
    functionLinenumberEnd: 1665
    functionName: pq_getkeepalivesidle
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - ereport
    - getsockopt
    - errmsg
    linkageType: ''
    returnType: int
    signature: int pq_getkeepalivesidle(Port *port)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pq_getkeepalivesidle
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1681,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1693,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1696,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1697,1
    - Dst: pq_setkeepaliveswin32
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1703,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1708,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1709,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - idle
    - port
    argTypes:
    - int
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1667
    functionDepth: 2
    functionLinenumber: 1667
    functionLinenumberEnd: 1715
    functionName: pq_setkeepalivesidle
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 1
    functionsReached:
    - pq_getkeepalivesidle
    - ereport
    - setsockopt
    - errmsg
    - pq_setkeepaliveswin32
    linkageType: ''
    returnType: int
    signature: int pq_setkeepalivesidle(int idle, Port *port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1732,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1736,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1737,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1750
      start: 1717
    functionDepth: 1
    functionLinenumber: 1717
    functionLinenumberEnd: 1750
    functionName: pq_getkeepalivesinterval
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - ereport
    - getsockopt
    - errmsg
    linkageType: ''
    returnType: int
    signature: int pq_getkeepalivesinterval(Port *port)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pq_getkeepalivesinterval
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1765,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1777,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1780,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1781,1
    - Dst: pq_setkeepaliveswin32
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1787,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1792,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1793,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - interval
    - port
    argTypes:
    - int
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1752
    functionDepth: 2
    functionLinenumber: 1752
    functionLinenumberEnd: 1799
    functionName: pq_setkeepalivesinterval
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 1
    functionsReached:
    - pq_getkeepalivesinterval
    - ereport
    - setsockopt
    - errmsg
    - pq_setkeepaliveswin32
    linkageType: ''
    returnType: int
    signature: int pq_setkeepalivesinterval(int interval, Port *port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1815,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1819,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1820,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1801
    functionDepth: 1
    functionLinenumber: 1801
    functionLinenumberEnd: 1829
    functionName: pq_getkeepalivescount
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - ereport
    - getsockopt
    - errmsg
    linkageType: ''
    returnType: int
    signature: int pq_getkeepalivescount(Port *port)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pq_getkeepalivescount
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1843,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1855,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1858,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1859,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1867,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1868,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - count
    - port
    argTypes:
    - int
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1831
    functionDepth: 2
    functionLinenumber: 1831
    functionLinenumberEnd: 1874
    functionName: pq_setkeepalivescount
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 1
    functionsReached:
    - pq_getkeepalivescount
    - ereport
    - setsockopt
    - errmsg
    linkageType: ''
    returnType: int
    signature: int pq_setkeepalivescount(int count, Port *port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1890,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1894,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1895,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1876
    functionDepth: 1
    functionLinenumber: 1876
    functionLinenumberEnd: 1904
    functionName: pq_gettcpusertimeout
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - ereport
    - getsockopt
    - errmsg
    linkageType: ''
    returnType: int
    signature: int pq_gettcpusertimeout(Port *port)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pq_gettcpusertimeout
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1918,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1930,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1933,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1934,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1942,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1943,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - timeout
    - port
    argTypes:
    - int
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1906
    functionDepth: 2
    functionLinenumber: 1906
    functionLinenumberEnd: 1949
    functionName: pq_settcpusertimeout
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 1
    functionsReached:
    - pq_gettcpusertimeout
    - ereport
    - setsockopt
    - errmsg
    linkageType: ''
    returnType: int
    signature: int pq_settcpusertimeout(int timeout, Port *port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_setkeepalivesidle
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1969
      start: 1954
    functionDepth: 3
    functionLinenumber: 1954
    functionLinenumberEnd: 1969
    functionName: assign_tcp_keepalives_idle
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_setkeepalivesidle
    linkageType: ''
    returnType: void
    signature: void assign_tcp_keepalives_idle(int newval, void *extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1980,1
    - Dst: pq_getkeepalivesidle
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1974
    functionDepth: 2
    functionLinenumber: 1974
    functionLinenumberEnd: 1982
    functionName: show_tcp_keepalives_idle
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_getkeepalivesidle
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      show_tcp_keepalives_idle(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_setkeepalivesinterval
      Src: /src/postgres/src/backend/libpq/pqcomm.c:1991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1992
      start: 1987
    functionDepth: 3
    functionLinenumber: 1987
    functionLinenumberEnd: 1992
    functionName: assign_tcp_keepalives_interval
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_setkeepalivesinterval
    linkageType: ''
    returnType: void
    signature: void assign_tcp_keepalives_interval(int newval, void *extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2003,1
    - Dst: pq_getkeepalivesinterval
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2003,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1997
    functionDepth: 2
    functionLinenumber: 1997
    functionLinenumberEnd: 2005
    functionName: show_tcp_keepalives_interval
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_getkeepalivesinterval
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      show_tcp_keepalives_interval(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_setkeepalivescount
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 2010
    functionDepth: 3
    functionLinenumber: 2010
    functionLinenumberEnd: 2015
    functionName: assign_tcp_keepalives_count
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_setkeepalivescount
    linkageType: ''
    returnType: void
    signature: void assign_tcp_keepalives_count(int newval, void *extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2026,1
    - Dst: pq_getkeepalivescount
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 2020
    functionDepth: 2
    functionLinenumber: 2020
    functionLinenumberEnd: 2028
    functionName: show_tcp_keepalives_count
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_getkeepalivescount
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      show_tcp_keepalives_count(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_settcpusertimeout
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2033
    functionDepth: 3
    functionLinenumber: 2033
    functionLinenumberEnd: 2038
    functionName: assign_tcp_user_timeout
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_settcpusertimeout
    linkageType: ''
    returnType: void
    signature: void assign_tcp_user_timeout(int newval, void *extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2049,1
    - Dst: pq_gettcpusertimeout
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2049,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2051
      start: 2043
    functionDepth: 2
    functionLinenumber: 2043
    functionLinenumberEnd: 2051
    functionName: show_tcp_user_timeout
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - pq_gettcpusertimeout
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      show_tcp_user_timeout(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ModifyWaitEvent
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2066,1
    - Dst: WaitEventSetWait
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2069,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2069,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/libpq/pqcomm.c:2082,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 2056
    functionDepth: 1
    functionLinenumber: 2056
    functionLinenumberEnd: 2088
    functionName: pq_check_connection
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - ModifyWaitEvent
    - WaitEventSetWait
    - ResetLatch
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool pq_check_connection(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: on_dsm_detach
      Src: /src/postgres/src/backend/libpq/pqmq.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - seg
    - mqh
    argTypes:
    - dsm_segment*
    - shm_mq_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: pq_redirect_to_shm_mq
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 1
    functionsReached:
    - on_dsm_detach
    linkageType: ''
    returnType: void
    signature: void pq_redirect_to_shm_mq(dsm_segment *seg, shm_mq_handle *mqh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/pqmq.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - seg
    - arg
    argTypes:
    - dsm_segment*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 78
    functionName: pq_cleanup_redirect_to_shm_mq
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void pq_cleanup_redirect_to_shm_mq(dsm_segment *seg, Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqmq.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pid
    - procNumber
    argTypes:
    - pid_t
    - ProcNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: pq_set_parallel_leader
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void pq_set_parallel_leader(pid_t pid, ProcNumber procNumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: mq_comm_reset
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mq_comm_reset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: mq_flush
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mq_flush(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: mq_flush_if_writable
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mq_flush_if_writable(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: mq_is_send_pending
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mq_is_send_pending(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/libpq/pqmq.c:142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqmq.c:171,1
    - Dst: shm_mq_sendv
      Src: /src/postgres/src/backend/libpq/pqmq.c:172,1
    - Dst: IsLogicalParallelApplyWorker
      Src: /src/postgres/src/backend/libpq/pqmq.c:176,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/libpq/pqmq.c:177,1
    - Dst: AmRepackWorker
      Src: /src/postgres/src/backend/libpq/pqmq.c:180,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/libpq/pqmq.c:181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqmq.c:186,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/libpq/pqmq.c:186,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/libpq/pqmq.c:187,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/libpq/pqmq.c:196,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/libpq/pqmq.c:198,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/pqmq.c:199,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqmq.c:204,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - msgtype
    - s
    - len
    argTypes:
    - char
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 208
    functionName: mq_putmessage
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 0
    functionsReached:
    - IsLogicalParallelApplyWorker
    - shm_mq_detach
    - Assert
    - AmRepackWorker
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - shm_mq_sendv
    - SendProcSignal
    - WaitLatch
    - IsParallelWorker
    linkageType: ''
    returnType: int
    signature: int mq_putmessage(char msgtype, const char *s, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqmq.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - msgtype
    - s
    - len
    argTypes:
    - char
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 221
    functionName: mq_putmessage_noblock
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void mq_putmessage_noblock(char msgtype, const char *s, size_t len)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/libpq/pqmq.c:231,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/libpq/pqmq.c:238,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/libpq/pqmq.c:243,1
    - Dst: pq_getmsgrawstring
      Src: /src/postgres/src/backend/libpq/pqmq.c:246,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:254,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:263,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:271,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:273,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:275,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:277,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:279,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:281,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqmq.c:284,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqmq.c:287,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqmq.c:288,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/backend/libpq/pqmq.c:289,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:293,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:296,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:299,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/libpq/pqmq.c:302,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/libpq/pqmq.c:305,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:308,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:311,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:314,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:317,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:320,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:323,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:326,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:329,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/libpq/pqmq.c:332,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:335,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqmq.c:338,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 89
    argCount: 2
    argNames:
    - msg
    - edata
    argTypes:
    - StringInfo
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 342
    functionName: pq_parse_errornotice
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 1
    functionsReached:
    - elog
    - strcmp
    - MAKE_SQLSTATE
    - pstrdup
    - MemSet
    - pg_strtoint32
    - pq_getmsgend
    - strlen
    - pq_getmsgbyte
    - pq_getmsgrawstring
    linkageType: ''
    returnType: void
    signature: void pq_parse_errornotice(StringInfo msg, ErrorData *edata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/pqformat.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - msgtype
    argTypes:
    - StringInfo
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: pq_beginmessage
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 7
    functionsReached:
    - initStringInfo
    linkageType: ''
    returnType: void
    signature: void pq_beginmessage(StringInfo buf, char msgtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/libpq/pqformat.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - msgtype
    argTypes:
    - StringInfo
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 119
    functionName: pq_beginmessage_reuse
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - resetStringInfo
    linkageType: ''
    returnType: void
    signature: void pq_beginmessage_reuse(StringInfo buf, char msgtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/libpq/pqformat.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - data
    - datalen
    argTypes:
    - StringInfo
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 130
    functionName: pq_sendbytes
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 1
    functionsReached:
    - appendBinaryStringInfo
    linkageType: ''
    returnType: void
    signature: void pq_sendbytes(StringInfo buf, const void *data, int datalen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_server_to_client
      Src: /src/postgres/src/backend/libpq/pqformat.c:146,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:149,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/libpq/pqformat.c:150,1
    - Dst: appendBinaryStringInfoNT
      Src: /src/postgres/src/backend/libpq/pqformat.c:151,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/pqformat.c:152,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/libpq/pqformat.c:156,1
    - Dst: appendBinaryStringInfoNT
      Src: /src/postgres/src/backend/libpq/pqformat.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - str
    - slen
    argTypes:
    - StringInfo
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 159
    functionName: pq_sendcountedtext
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - pfree
    - pq_sendint32
    - pg_server_to_client
    - strlen
    - appendBinaryStringInfoNT
    linkageType: ''
    returnType: void
    signature: void pq_sendcountedtext(StringInfo buf, const char *str, int slen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_server_to_client
      Src: /src/postgres/src/backend/libpq/pqformat.c:176,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:179,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/libpq/pqformat.c:180,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/pqformat.c:181,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/libpq/pqformat.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - buf
    - str
    - slen
    argTypes:
    - StringInfo
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 185
    functionName: pq_sendtext
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - appendBinaryStringInfo
    - pfree
    - strlen
    - pg_server_to_client
    linkageType: ''
    returnType: void
    signature: void pq_sendtext(StringInfo buf, const char *str, int slen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:197,1
    - Dst: pg_server_to_client
      Src: /src/postgres/src/backend/libpq/pqformat.c:200,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:203,1
    - Dst: appendBinaryStringInfoNT
      Src: /src/postgres/src/backend/libpq/pqformat.c:204,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/pqformat.c:205,1
    - Dst: appendBinaryStringInfoNT
      Src: /src/postgres/src/backend/libpq/pqformat.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 209
    functionName: pq_sendstring
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - pfree
    - appendBinaryStringInfoNT
    - strlen
    - pg_server_to_client
    linkageType: ''
    returnType: void
    signature: void pq_sendstring(StringInfo buf, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/backend/libpq/pqformat.c:233,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/libpq/pqformat.c:235,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/pqformat.c:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 238
    functionName: pq_send_ascii_string
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - appendStringInfoCharMacro
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void pq_send_ascii_string(StringInfo buf, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/libpq/pqformat.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - f
    argTypes:
    - StringInfo
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 262
    functionName: pq_sendfloat4
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - pq_sendint32
    linkageType: ''
    returnType: void
    signature: void pq_sendfloat4(StringInfo buf, float4 f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/libpq/pqformat.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - f
    argTypes:
    - StringInfo
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 286
    functionName: pq_sendfloat8
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 1
    functionsReached:
    - pq_sendint64
    linkageType: ''
    returnType: void
    signature: void pq_sendfloat8(StringInfo buf, float8 f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/libpq/pqformat.c:299,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/pqformat.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 303
    functionName: pq_endmessage
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 8
    functionsReached:
    - pfree
    - pq_putmessage
    linkageType: ''
    returnType: void
    signature: void pq_endmessage(StringInfo buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/libpq/pqformat.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 317
    functionName: pq_endmessage_reuse
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - pq_putmessage
    linkageType: ''
    returnType: void
    signature: void pq_endmessage_reuse(StringInfo buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/pqformat.c:327,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/libpq/pqformat.c:329,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/libpq/pqformat.c:330,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/libpq/pqformat.c:331,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/libpq/pqformat.c:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 324
    functionDepth: 3
    functionLinenumber: 324
    functionLinenumberEnd: 333
    functionName: pq_begintypsend
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 1
    functionsReached:
    - initStringInfo
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: void
    signature: void pq_begintypsend(StringInfo buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqformat.c:350,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/libpq/pqformat.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 354
    functionName: pq_endtypsend
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 1
    functionsReached:
    - Assert
    - SET_VARSIZE
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      pq_endtypsend(StringInfo buf)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:368,1
    - Dst: pg_server_to_client
      Src: /src/postgres/src/backend/libpq/pqformat.c:371,1
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/libpq/pqformat.c:374,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:374,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/pqformat.c:375,1
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/libpq/pqformat.c:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - msgtype
    - str
    argTypes:
    - char
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 379
    functionName: pq_puttextmessage
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - pfree
    - strlen
    - pq_putmessage
    - pg_server_to_client
    linkageType: ''
    returnType: void
    signature: void pq_puttextmessage(char msgtype, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/libpq/pqformat.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msgtype
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 390
    functionName: pq_putemptymessage
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 1
    functionsReached:
    - pq_putmessage
    linkageType: ''
    returnType: void
    signature: void pq_putemptymessage(char msgtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:401,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:402,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 405
    functionName: pq_getmsgbyte
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: int
    signature: int pq_getmsgbyte(StringInfo msg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/libpq/pqformat.c:424,1
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/libpq/pqformat.c:428,1
    - Dst: pg_ntoh16
      Src: /src/postgres/src/backend/libpq/pqformat.c:429,1
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/libpq/pqformat.c:432,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/libpq/pqformat.c:433,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqformat.c:436,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - msg
    - b
    argTypes:
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 441
    functionName: pq_getmsgint
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 1
    functionsReached:
    - elog
    - pq_copymsgbytes
    - pg_ntoh16
    - pg_ntoh32
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int pq_getmsgint(StringInfo msg, int b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/libpq/pqformat.c:456,1
    - Dst: pg_ntoh64
      Src: /src/postgres/src/backend/libpq/pqformat.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 459
    functionName: pq_getmsgint64
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 1
    functionsReached:
    - pq_copymsgbytes
    - pg_ntoh64
    linkageType: ''
    returnType: int64
    signature: int64 pq_getmsgint64(StringInfo msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/libpq/pqformat.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 467
    functionDepth: 2
    functionLinenumber: 467
    functionLinenumberEnd: 478
    functionName: pq_getmsgfloat4
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - pq_getmsgint
    linkageType: ''
    returnType: float4
    signature: float4 pq_getmsgfloat4(StringInfo msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/libpq/pqformat.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 486
    functionDepth: 2
    functionLinenumber: 486
    functionLinenumberEnd: 497
    functionName: pq_getmsgfloat8
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 1
    functionsReached:
    - pq_getmsgint64
    linkageType: ''
    returnType: float8
    signature: float8 pq_getmsgfloat8(StringInfo msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: datalen < 0 || datalen >
      Src: /src/postgres/src/backend/libpq/pqformat.c:511,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:512,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:513,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:514,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - msg
    - datalen
    argTypes:
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 518
    functionName: pq_getmsgbytes
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - datalen < 0 || datalen >
    - errcode
    linkageType: ''
    returnType: char
    signature: 'char *

      pq_getmsgbytes(StringInfo msg, int datalen)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: datalen < 0 || datalen >
      Src: /src/postgres/src/backend/libpq/pqformat.c:529,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:530,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:532,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/pqformat.c:533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - msg
    - buf
    - datalen
    argTypes:
    - StringInfo
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 535
    functionName: pq_copymsgbytes
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - memcpy
    - errcode
    - ereport
    - errmsg
    - datalen < 0 || datalen >
    linkageType: ''
    returnType: void
    signature: void pq_copymsgbytes(StringInfo msg, void *buf, int datalen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rawbytes < 0 || rawbytes >
      Src: /src/postgres/src/backend/libpq/pqformat.c:550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:551,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:553,1
    - Dst: pg_client_to_server
      Src: /src/postgres/src/backend/libpq/pqformat.c:557,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:559,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/pqformat.c:562,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/pqformat.c:563,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - msg
    - rawbytes
    - nbytes
    argTypes:
    - StringInfo
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 568
    functionName: pq_getmsgtext
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - pg_client_to_server
    - memcpy
    - errcode
    - ereport
    - rawbytes < 0 || rawbytes >
    - strlen
    - errmsg
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      pq_getmsgtext(StringInfo msg, int rawbytes, int *nbytes)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:590,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:592,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:593,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:594,1
    - Dst: pg_client_to_server
      Src: /src/postgres/src/backend/libpq/pqformat.c:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 598
    functionName: pq_getmsgstring
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - pg_client_to_server
    - errcode
    - ereport
    - strlen
    - errmsg
    linkageType: ''
    returnType: char
    signature: 'char *

      pq_getmsgstring(StringInfo msg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:619,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:621,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:622,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 606
    functionDepth: 1
    functionLinenumber: 606
    functionLinenumberEnd: 627
    functionName: pq_getmsgrawstring
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - ereport
    - strlen
    - errmsg
    - errcode
    linkageType: ''
    returnType: char
    signature: 'char *

      pq_getmsgrawstring(StringInfo msg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:637,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:638,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 640
    functionName: pq_getmsgend
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void pq_getmsgend(StringInfo msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: range_sockaddr_AF_INET
      Src: /src/postgres/src/backend/libpq/ifaddr.c:54,1
    - Dst: range_sockaddr_AF_INET6
      Src: /src/postgres/src/backend/libpq/ifaddr.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - addr
    - netaddr
    - netmask
    argTypes:
    - struct sockaddr_storage*
    - struct sockaddr_storage*
    - struct sockaddr_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 63
    functionName: pg_range_sockaddr
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 0
    functionsReached:
    - range_sockaddr_AF_INET
    - range_sockaddr_AF_INET6
    linkageType: ''
    returnType: int
    signature: "int pg_range_sockaddr(const struct sockaddr_storage *addr,\n\t\t\t\t
      \ const struct sockaddr_storage *netaddr,\n\t\t\t\t  const struct sockaddr_storage
      *netmask)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - addr
    - netaddr
    - netmask
    argTypes:
    - struct sockaddr_in*
    - struct sockaddr_in*
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 75
    functionName: range_sockaddr_AF_INET
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int range_sockaddr_AF_INET(const struct sockaddr_in *addr,\n\t\t\t\t\t
      \  const struct sockaddr_in *netaddr,\n\t\t\t\t\t   const struct sockaddr_in
      *netmask)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - addr
    - netaddr
    - netmask
    argTypes:
    - struct sockaddr_in6*
    - struct sockaddr_in6*
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 92
    functionName: range_sockaddr_AF_INET6
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int range_sockaddr_AF_INET6(const struct sockaddr_in6 *addr,\n\t\t\t\t\t\tconst
      struct sockaddr_in6 *netaddr,\n\t\t\t\t\t\tconst struct sockaddr_in6 *netmask)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/postgres/src/backend/libpq/ifaddr.c:116,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/ifaddr.c:130,1
    - Dst: pg_hton32
      Src: /src/postgres/src/backend/libpq/ifaddr.c:137,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/ifaddr.c:138,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/ifaddr.c:149,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/ifaddr.c:163,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 3
    argNames:
    - mask
    - numbits
    - family
    argTypes:
    - struct sockaddr_storage*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 173
    functionName: pg_sockaddr_cidr_mask
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 0
    functionsReached:
    - pg_hton32
    - strtol
    - memset
    - memcpy
    linkageType: ''
    returnType: int
    signature: int pg_sockaddr_cidr_mask(struct sockaddr_storage *mask, char *numbits,
      int family)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/postgres/src/backend/libpq/ifaddr.c:203,1
    - Dst: pg_sockaddr_cidr_mask
      Src: /src/postgres/src/backend/libpq/ifaddr.c:211,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - callback
    - cb_data
    - addr
    - mask
    argTypes:
    - PgIfAddrCallback
    - void*
    - struct sockaddr*
    - struct sockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 216
    functionName: run_ifaddr_callback
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 0
    functionsReached:
    - pg_sockaddr_cidr_mask
    - IN6_IS_ADDR_UNSPECIFIED
    linkageType: ''
    returnType: void
    signature: "void run_ifaddr_callback(PgIfAddrCallback callback, void *cb_data,\n\t\t\t\t\tstruct
      sockaddr *addr, struct sockaddr *mask)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: WSASocket
      Src: /src/postgres/src/backend/libpq/ifaddr.c:240,1
    - Dst: realloc
      Src: /src/postgres/src/backend/libpq/ifaddr.c:247,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/ifaddr.c:250,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/ifaddr.c:251,1
    - Dst: WSAIoctl
      Src: /src/postgres/src/backend/libpq/ifaddr.c:257,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/libpq/ifaddr.c:261,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/ifaddr.c:264,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/ifaddr.c:265,1
    - Dst: run_ifaddr_callback
      Src: /src/postgres/src/backend/libpq/ifaddr.c:273,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/ifaddr.c:277,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/ifaddr.c:278,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - callback
    - cb_data
    argTypes:
    - PgIfAddrCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 280
    functionName: pg_foreach_ifaddr
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 1
    functionsReached:
    - realloc
    - run_ifaddr_callback
    - free
    - WSAIoctl
    - closesocket
    - WSAGetLastError
    - WSASocket
    linkageType: ''
    returnType: int
    signature: int pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/postgres/src/backend/libpq/ifaddr.c:300,1
    - Dst: run_ifaddr_callback
      Src: /src/postgres/src/backend/libpq/ifaddr.c:304,1
    - Dst: freeifaddrs
      Src: /src/postgres/src/backend/libpq/ifaddr.c:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - callback
    - cb_data
    argTypes:
    - PgIfAddrCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 294
    functionDepth: 3
    functionLinenumber: 294
    functionLinenumberEnd: 309
    functionName: pg_foreach_ifaddr
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 1
    functionsReached:
    - run_ifaddr_callback
    - getifaddrs
    - freeifaddrs
    linkageType: ''
    returnType: int
    signature: int pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 334
    functionName: _SIZEOF_ADDR_IFREQ
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _SIZEOF_ADDR_IFREQ(ifr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 339
    functionName: _SIZEOF_ADDR_IFREQ
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _SIZEOF_ADDR_IFREQ(ifr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/postgres/src/backend/libpq/ifaddr.c:361,1
    - Dst: realloc
      Src: /src/postgres/src/backend/libpq/ifaddr.c:368,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/ifaddr.c:371,1
    - Dst: close
      Src: /src/postgres/src/backend/libpq/ifaddr.c:372,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/ifaddr.c:377,1
    - Dst: ioctl
      Src: /src/postgres/src/backend/libpq/ifaddr.c:381,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/ifaddr.c:385,1
    - Dst: close
      Src: /src/postgres/src/backend/libpq/ifaddr.c:386,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/ifaddr.c:402,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/ifaddr.c:403,1
    - Dst: ioctl
      Src: /src/postgres/src/backend/libpq/ifaddr.c:404,1
    - Dst: ioctl
      Src: /src/postgres/src/backend/libpq/ifaddr.c:405,1
    - Dst: run_ifaddr_callback
      Src: /src/postgres/src/backend/libpq/ifaddr.c:406,1
    - Dst: _SIZEOF_ADDR_IFREQ
      Src: /src/postgres/src/backend/libpq/ifaddr.c:408,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/ifaddr.c:411,1
    - Dst: close
      Src: /src/postgres/src/backend/libpq/ifaddr.c:412,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 2
    argNames:
    - callback
    - cb_data
    argTypes:
    - PgIfAddrCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 348
    functionDepth: 3
    functionLinenumber: 348
    functionLinenumberEnd: 414
    functionName: pg_foreach_ifaddr
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 1
    functionsReached:
    - realloc
    - memcpy
    - ioctl
    - run_ifaddr_callback
    - free
    - memset
    - close
    - socket
    - _SIZEOF_ADDR_IFREQ
    linkageType: ''
    returnType: int
    signature: int pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/ifaddr.c:432,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/libpq/ifaddr.c:434,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/ifaddr.c:435,1
    - Dst: pg_sockaddr_cidr_mask
      Src: /src/postgres/src/backend/libpq/ifaddr.c:436,1
    - Dst: run_ifaddr_callback
      Src: /src/postgres/src/backend/libpq/ifaddr.c:437,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/ifaddr.c:442,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/ifaddr.c:445,1
    - Dst: pg_sockaddr_cidr_mask
      Src: /src/postgres/src/backend/libpq/ifaddr.c:446,1
    - Dst: run_ifaddr_callback
      Src: /src/postgres/src/backend/libpq/ifaddr.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - callback
    - cb_data
    argTypes:
    - PgIfAddrCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 424
    functionDepth: 3
    functionLinenumber: 424
    functionLinenumberEnd: 452
    functionName: pg_foreach_ifaddr
    functionSourceFile: /src/postgres/src/backend/libpq/ifaddr.c
    functionUses: 1
    functionsReached:
    - run_ifaddr_callback
    - pg_sockaddr_cidr_mask
    - memset
    - pg_ntoh32
    linkageType: ''
    returnType: int
    signature: int pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: be_tls_init
      Src: /src/postgres/src/backend/libpq/be-secure.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - isServerStart
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: secure_initialize
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 0
    functionsReached:
    - be_tls_init
    linkageType: ''
    returnType: int
    signature: int secure_initialize(bool isServerStart)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: be_tls_destroy
      Src: /src/postgres/src/backend/libpq/be-secure.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: secure_destroy
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 0
    functionsReached:
    - be_tls_destroy
    linkageType: ''
    returnType: void
    signature: void secure_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 110
    functionName: secure_loaded_verify_locations
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool secure_loaded_verify_locations(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pq_buffer_remaining_data
      Src: /src/postgres/src/backend/libpq/be-secure.c:123,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/be-secure.c:126,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/libpq/be-secure.c:128,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/libpq/be-secure.c:129,1
    - Dst: pq_endmsgread
      Src: /src/postgres/src/backend/libpq/be-secure.c:131,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure.c:136,1
    - Dst: pq_buffer_remaining_data
      Src: /src/postgres/src/backend/libpq/be-secure.c:136,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/libpq/be-secure.c:138,1
    - Dst: be_tls_open_server
      Src: /src/postgres/src/backend/libpq/be-secure.c:140,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure.c:148,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure.c:153,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure.c:157,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure.c:158,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 115
    functionDepth: 4
    functionLinenumber: 115
    functionLinenumberEnd: 165
    functionName: secure_open_server
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 0
    functionsReached:
    - elog
    - INJECTION_POINT
    - pq_getbytes
    - errmsg_internal
    - Assert
    - pfree
    - pq_buffer_remaining_data
    - ereport
    - pq_startmsgread
    - pq_endmsgread
    - palloc
    - be_tls_open_server
    linkageType: ''
    returnType: int
    signature: int secure_open_server(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: be_tls_close
      Src: /src/postgres/src/backend/libpq/be-secure.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 177
    functionName: secure_close
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 2
    functionsReached:
    - be_tls_close
    linkageType: ''
    returnType: void
    signature: void secure_close(Port *port)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ProcessClientReadInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:189,1
    - Dst: be_tls_read
      Src: /src/postgres/src/backend/libpq/be-secure.c:196,1
    - Dst: be_gssapi_read
      Src: /src/postgres/src/backend/libpq/be-secure.c:203,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure.c:209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure.c:218,1
    - Dst: ModifyWaitEvent
      Src: /src/postgres/src/backend/libpq/be-secure.c:220,1
    - Dst: WaitEventSetWait
      Src: /src/postgres/src/backend/libpq/be-secure.c:222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure.c:243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure.c:244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure.c:245,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/libpq/be-secure.c:250,1
    - Dst: ProcessClientReadInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:251,1
    - Dst: ProcessClientReadInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:266,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 269
    functionName: secure_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 4
    functionsReached:
    - WaitEventSetWait
    - errcode
    - Assert
    - ereport
    - ResetLatch
    - secure_raw_read
    - be_tls_read
    - ProcessClientReadInterrupt
    - errmsg
    - ModifyWaitEvent
    - be_gssapi_read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t secure_read(Port *port, void *ptr, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure.c:282,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure.c:283,1
    - Dst: recv
      Src: /src/postgres/src/backend/libpq/be-secure.c:296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 302
    functionName: secure_raw_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 5
    functionsReached:
    - Assert
    - recv
    - memcpy
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t secure_raw_read(Port *port, void *ptr, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ProcessClientWriteInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:315,1
    - Dst: be_tls_write
      Src: /src/postgres/src/backend/libpq/be-secure.c:322,1
    - Dst: be_gssapi_write
      Src: /src/postgres/src/backend/libpq/be-secure.c:329,1
    - Dst: secure_raw_write
      Src: /src/postgres/src/backend/libpq/be-secure.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure.c:343,1
    - Dst: ModifyWaitEvent
      Src: /src/postgres/src/backend/libpq/be-secure.c:345,1
    - Dst: WaitEventSetWait
      Src: /src/postgres/src/backend/libpq/be-secure.c:347,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure.c:352,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure.c:353,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure.c:354,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/libpq/be-secure.c:359,1
    - Dst: ProcessClientWriteInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:360,1
    - Dst: ProcessClientWriteInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:375,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 378
    functionName: secure_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 2
    functionsReached:
    - WaitEventSetWait
    - secure_raw_write
    - be_tls_write
    - errcode
    - Assert
    - ereport
    - ResetLatch
    - ProcessClientWriteInterrupt
    - errmsg
    - ModifyWaitEvent
    - be_gssapi_write
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t secure_write(Port *port, const void *ptr, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/postgres/src/backend/libpq/be-secure.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 394
    functionName: secure_raw_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 5
    functionsReached:
    - send
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t secure_raw_write(Port *port, const void *ptr, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:55,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:56,1
    - Dst: replace_percent_placeholders
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:59,1
    - Dst: OpenPipeStream
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:61,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:64,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:65,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:66,1
    - Dst: fgets
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:71,1
    - Dst: ferror
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:73,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:75,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:76,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:77,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:78,1
    - Dst: ClosePipeStream
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:84,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:87,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:88,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:89,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:90,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:97,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:98,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:99,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:101,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:103,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:104,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:109,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:112,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 5
    argNames:
    - cmd
    - prompt
    - is_server_start
    - buf
    - size
    argTypes:
    - char*
    - char*
    - bool
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 45
    functionDepth: 4
    functionLinenumber: 45
    functionLinenumberEnd: 114
    functionName: run_ssl_passphrase_command
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-common.c
    functionUses: 0
    functionsReached:
    - ferror
    - explicit_bzero
    - Assert
    - wait_result_to_str
    - replace_percent_placeholders
    - pfree
    - ereport
    - pg_strip_crlf
    - ClosePipeStream
    - errmsg
    - fgets
    - errdetail_internal
    - OpenPipeStream
    - errcode_for_file_access
    linkageType: ''
    returnType: int
    signature: "int run_ssl_passphrase_command(const char *cmd, const char *prompt,\n\t\t\t\t\t\t
      \  bool is_server_start, char *buf, int size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:126,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:128,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:129,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:130,1
    - Dst: S_ISREG
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:136,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:138,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:139,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:140,1
    - Dst: geteuid
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:162,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:166,1
    - Dst: geteuid
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:171,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:174,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:175,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:176,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:178,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - ssl_key_file
    - isServerStart
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 184
    functionName: check_ssl_key_file_permissions
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-common.c
    functionUses: 0
    functionsReached:
    - geteuid
    - S_ISREG
    - errcode
    - ereport
    - stat
    - errmsg
    - errdetail
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: bool check_ssl_key_file_permissions(const char *ssl_key_file, bool
      isServerStart)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:202,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:203,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:205,1
    - Dst: list_head
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:213,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:214,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:218,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:220,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:222,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:223,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:228,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:228,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:235,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:236,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:237,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:238,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:242,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:247,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:248,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:252,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:253,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:259,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:260,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:261,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:262,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:266,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:269,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:270,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:271,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:272,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:276,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:277,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:280,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:283,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:286,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:287,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:288,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:289,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:293,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:294,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:297,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:300,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:303,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:304,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:305,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:306,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:310,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:311,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:318,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:321,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:322,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:329,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:333,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:334,1
    - Dst: parse_bool
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:339,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:343,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:344,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 74
    argCount: 2
    argNames:
    - tok_line
    - elevel
    argTypes:
    - TokenizedAuthLine*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 352
    functionName: parse_hosts_line
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-common.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - errcontext
    - linitial
    - palloc0
    - pstrdup
    - ereport
    - lappend
    - lnext
    - parse_bool
    - lfirst
    - list_head
    - errmsg
    linkageType: ''
    returnType: HostsLine
    signature: 'HostsLine *

      parse_hosts_line(TokenizedAuthLine *tok_line, int elevel)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:218,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:220,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:222,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:223,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:228,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:228,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 229
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-common.c
    functionUses: 7
    functionsReached:
    - strcmp
    - errcode
    - errcontext
    - lappend
    - ereport
    - pstrdup
    - errmsg
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(AuthToken, hostname, tokens)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:381,1
    - Dst: open_auth_file
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:393,1
    - Dst: tokenize_auth_file
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:402,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:406,1
    - Dst: parse_hosts_line
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:413,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:419,1
    - Dst: free_auth_file
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:423,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:429,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - hosts
    - err_msg
    argTypes:
    - List**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 364
    functionDepth: 3
    functionLinenumber: 364
    functionLinenumberEnd: 438
    functionName: load_hosts
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-common.c
    functionUses: 0
    functionsReached:
    - psprintf
    - lappend
    - parse_hosts_line
    - tokenize_auth_file
    - open_auth_file
    - lfirst
    - free_auth_file
    linkageType: ''
    returnType: HostsFileLoadResult
    signature: HostsFileLoadResult load_hosts(List **hosts, char **err_msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:406,1
    - Dst: parse_hosts_line
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:413,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 404
    functionDepth: 3
    functionLinenumber: 404
    functionLinenumberEnd: 420
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-common.c
    functionUses: 317
    functionsReached:
    - lfirst
    - parse_hosts_line
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(line, hosts_lines)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:171,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:174,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:177,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:185,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:214,1
    - Dst: load_hosts
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:229,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:230,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:231,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:246,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:250,1
    - Dst: init_host_context
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:252,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:263,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:267,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:269,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:270,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:277,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:281,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:282,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:283,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:284,1
    - Dst: host_cache_create
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:295,1
    - Dst: host_cache_insert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:302,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:305,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:306,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:307,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:309,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:314,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:322,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:338,1
    - Dst: init_host_context
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:347,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:363,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:364,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:365,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:367,1
    - Dst: SSL_CTX_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:384,1
    - Dst: SSLv23_method
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:384,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:387,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:388,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:389,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:389,1
    - Dst: SSL_CTX_up_ref
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:406,1
    - Dst: SSL_CTX_set_mode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:413,1
    - Dst: ssl_protocol_version_to_openssl
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:417,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:421,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:423,1
    - Dst: GetConfigOption
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:425,1
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:430,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:432,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:433,1
    - Dst: ssl_protocol_version_to_openssl
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:444,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:446,1
    - Dst: GetConfigOption
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:448,1
    - Dst: SSL_CTX_set_max_proto_version
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:453,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:455,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:456,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:471,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:472,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:473,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:474,1
    - Dst: SSL_CTX_set_num_tickets
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:491,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:493,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:496,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:499,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:510,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:513,1
    - Dst: initialize_dh
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:517,1
    - Dst: initialize_ecdh
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:519,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:523,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:525,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:526,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:527,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:538,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:540,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:541,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:542,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:549,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:556,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:560,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:563,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:578,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:580,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:581,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 160
    argCount: 1
    argNames:
    - isServerStart
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 148
    functionDepth: 4
    functionLinenumber: 148
    functionLinenumberEnd: 583
    functionName: be_tls_init
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - SSL_CTX_set_cipher_list
    - GetConfigOption
    - strcmp
    - errcode
    - errcontext
    - pstrdup
    - SSLerrmessage
    - SSL_CTX_set_options
    - errhint
    - SSL_CTX_set_num_tickets
    - SSL_CTX_up_ref
    - MemoryContextRegisterResetCallback
    - initialize_dh
    - load_hosts
    - Assert
    - linitial
    - SSL_CTX_free
    - SSL_CTX_set_max_proto_version
    - SSL_CTX_new
    - errmsg
    - palloc0_object
    - SSL_CTX_set_session_cache_mode
    - initialize_ecdh
    - SSL_CTX_set_min_proto_version
    - lappend
    - ereport
    - SSL_CTX_set_ciphersuites
    - lfirst
    - AllocSetContextCreate
    - ssl_protocol_version_to_openssl
    - SSL_CTX_set_mode
    - palloc0
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - ERR_get_error
    - errdetail
    - host_cache_insert
    - init_host_context
    - SSLv23_method
    - host_cache_create
    linkageType: ''
    returnType: int
    signature: int be_tls_init(bool isServerStart)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:250,1
    - Dst: init_host_context
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:252,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:263,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:267,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:269,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:270,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:277,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:281,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:282,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:283,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:284,1
    - Dst: host_cache_create
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:295,1
    - Dst: host_cache_insert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:302,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:305,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:306,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:307,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:309,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:314,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:322,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 324
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 317
    functionsReached:
    - strcmp
    - errcode
    - linitial
    - errcontext
    - pstrdup
    - ereport
    - lappend
    - lfirst
    - errmsg
    - host_cache_insert
    - init_host_context
    - host_cache_create
    linkageType: ''
    returnType: void
    signature: void foreach(line, pg_hosts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: host_cache_insert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:302,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:305,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:306,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:307,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:309,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - hostnames
    argTypes:
    - host
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 315
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 7
    functionsReached:
    - errcode
    - errcontext
    - pstrdup
    - ereport
    - errmsg
    - host_cache_insert
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, hostname, host->hostnames)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:598,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:601,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:605,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:608,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 609
    functionName: host_context_cleanup_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_free
    - foreach_ptr
    linkageType: ''
    returnType: void
    signature: void host_context_cleanup_cb(void *arg)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:614,1
    - Dst: SSLv23_method
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:614,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:619,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:620,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:621,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:621,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:639,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:640,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:641,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:643,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:658,1
    - Dst: SSL_CTX_set_default_passwd_cb_userdata
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:659,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:672,1
    - Dst: SSL_CTX_set_default_passwd_cb_userdata
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:673,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:683,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:691,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:693,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:694,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:695,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:696,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:696,1
    - Dst: check_ssl_key_file_permissions
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:700,1
    - Dst: SSL_CTX_use_PrivateKey_file
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:712,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:717,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:719,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:722,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:723,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:724,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:725,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:725,1
    - Dst: SSL_CTX_check_private_key
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:729,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:731,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:732,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:733,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:734,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:734,1
    - Dst: STACK_OF
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:743,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:745,1
    - Dst: SSL_load_client_CA_file
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:746,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:748,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:749,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:750,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:751,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:751,1
    - Dst: SSL_CTX_set_client_CA_list
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:762,1
    - Dst: SSL_CTX_get_cert_store
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:772,1
    - Dst: X509_STORE_load_locations
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:777,1
    - Dst: X509_STORE_set_flags
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:782,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:787,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:788,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:789,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:790,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:790,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:795,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:796,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:797,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:798,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:798,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:803,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:805,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:807,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:807,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:818,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 85
    argCount: 2
    argNames:
    - host
    - isServerStart
    argTypes:
    - HostsLine*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 611
    functionDepth: 2
    functionLinenumber: 611
    functionLinenumberEnd: 820
    functionName: init_host_context
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 2
    functionsReached:
    - SSL_CTX_set_default_passwd_cb_userdata
    - X509_STORE_load_locations
    - SSLv23_method
    - errcode
    - SSLerrmessage
    - errhint
    - SSL_CTX_get_cert_store
    - SSL_load_client_CA_file
    - SSL_CTX_use_certificate_chain_file
    - STACK_OF
    - SSL_CTX_set_client_CA_list
    - SSL_CTX_free
    - SSL_CTX_new
    - errmsg
    - X509_STORE_set_flags
    - ereport
    - SSL_CTX_check_private_key
    - SSL_CTX_load_verify_locations
    - SSL_CTX_use_PrivateKey_file
    - ERR_get_error
    - SSL_CTX_set_default_passwd_cb
    - check_ssl_key_file_permissions
    linkageType: ''
    returnType: bool
    signature: bool init_host_context(HostsLine *host, bool isServerStart)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:826,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 822
    functionDepth: 0
    functionLinenumber: 822
    functionLinenumberEnd: 829
    functionName: be_tls_destroy
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - SSL_CTX_free
    linkageType: ''
    returnType: void
    signature: void be_tls_destroy(void)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:842,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:846,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:847,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:848,1
    - Dst: SSL_CTX_set_info_callback
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:853,1
    - Dst: SSL_CTX_set_alpn_select_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:856,1
    - Dst: SSL_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:858,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:860,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:861,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:862,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:863,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:863,1
    - Dst: ssl_set_port_bio
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:868,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:869,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:870,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:871,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:871,1
    - Dst: SSL_CTX_set_client_hello_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:890,1
    - Dst: SSL_set_verify
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:899,1
    - Dst: SSL_set_ex_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:908,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:923,1
    - Dst: SSL_accept
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:924,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:927,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:943,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:955,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:960,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:961,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:962,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:964,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:965,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:966,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:969,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1005,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1006,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1007,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1008,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1009,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1011,1
    - Dst: ssl_protocol_version_to_string
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1013,1
    - Dst: ssl_protocol_version_to_string
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1016,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1019,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1022,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1023,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1024,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1027,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1028,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1029,1
    - Dst: SSL_get0_alpn_selected
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1042,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1047,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1048,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1048,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1055,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1056,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1057,1
    - Dst: SSL_get_peer_certificate
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1063,1
    - Dst: X509_get_subject_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1072,1
    - Dst: X509_NAME_get_text_by_NID
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1077,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1077,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1082,1
    - Dst: X509_NAME_get_text_by_NID
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1083,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1083,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1089,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1097,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1099,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1101,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1102,1
    - Dst: BIO_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1109,1
    - Dst: BIO_s_mem
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1109,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1114,1
    - Dst: X509_NAME_print_ex
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1127,1
    - Dst: BIO_get_mem_ptr
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1128,1
    - Dst: BIO_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1130,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1133,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1138,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1139,1
    - Dst: BIO_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1141,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1143,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1147,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1148,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1151,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 145
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 1163
    functionName: be_tls_open_server
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - SSL_CTX_set_alpn_select_cb
    - errcode
    - SSL_set_ex_data
    - SSLerrmessage
    - SSL_CTX_set_client_hello_cb
    - errcode_for_socket_access
    - SSL_get0_alpn_selected
    - errhint
    - BIO_free
    - BIO_new
    - memcpy
    - Assert
    - pfree
    - BIO_s_mem
    - ERR_clear_error
    - errmsg
    - memcmp
    - errdetail_internal
    - ereport
    - SSL_set_verify
    - ERR_GET_REASON
    - strlen
    - X509_NAME_get_text_by_NID
    - WaitLatchOrSocket
    - SSL_new
    - MemoryContextAlloc
    - ssl_set_port_bio
    - SSL_get_error
    - X509_NAME_print_ex
    - SSL_accept
    - unconstify
    - SSL_get_peer_certificate
    - BIO_get_mem_ptr
    - X509_get_subject_name
    - ERR_get_error
    - ssl_protocol_version_to_string
    - SSL_CTX_set_info_callback
    linkageType: ''
    returnType: int
    signature: int be_tls_open_server(Port *port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_shutdown
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1170,1
    - Dst: SSL_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1171,1
    - Dst: X509_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1178,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1184,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1190,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1165
    functionDepth: 0
    functionLinenumber: 1165
    functionLinenumberEnd: 1193
    functionName: be_tls_close
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - pfree
    - SSL_shutdown
    - X509_free
    - SSL_free
    linkageType: ''
    returnType: void
    signature: void be_tls_close(Port *port)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1203,1
    - Dst: SSL_read
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1204,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1205,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1206,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1231,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1232,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1233,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1242,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1243,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1244,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 4
    argNames:
    - port
    - ptr
    - len
    - waitfor
    argTypes:
    - Port*
    - void*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1195
    functionDepth: 1
    functionLinenumber: 1195
    functionLinenumberEnd: 1252
    functionName: be_tls_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - SSL_read
    - errcode
    - SSL_get_error
    - ereport
    - SSLerrmessage
    - ERR_clear_error
    - errmsg
    - ERR_get_error
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t be_tls_read(Port *port, void *ptr, size_t len, int *waitfor)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1262,1
    - Dst: SSL_write
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1263,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1264,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1265,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1296,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1297,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1298,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1298,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1312,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1313,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1314,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 4
    argNames:
    - port
    - ptr
    - len
    - waitfor
    argTypes:
    - Port*
    - void*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1254
    functionDepth: 1
    functionLinenumber: 1254
    functionLinenumberEnd: 1322
    functionName: be_tls_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - errcode
    - SSL_get_error
    - ereport
    - SSLerrmessage
    - SSL_write
    - ERR_clear_error
    - errmsg
    - ERR_get_error
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t be_tls_write(Port *port, const void *ptr, size_t len, int *waitfor)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BIO_get_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1346,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1350,1
    - Dst: BIO_clear_retry_flags
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1351,1
    - Dst: BIO_set_retry_read
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1358,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - h
    - buf
    - size
    argTypes:
    - BIO*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1342
    functionDepth: 2
    functionLinenumber: 1342
    functionLinenumberEnd: 1364
    functionName: port_bio_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_set_retry_read
    - BIO_clear_retry_flags
    - BIO_get_data
    - secure_raw_read
    linkageType: ''
    returnType: int
    signature: int port_bio_read(BIO *h, char *buf, int size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: secure_raw_write
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1371,1
    - Dst: BIO_get_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1371,1
    - Dst: BIO_clear_retry_flags
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1372,1
    - Dst: BIO_set_retry_write
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1378,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - h
    - buf
    - size
    argTypes:
    - BIO*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1366
    functionDepth: 2
    functionLinenumber: 1366
    functionLinenumberEnd: 1383
    functionName: port_bio_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_set_retry_write
    - secure_raw_write
    - BIO_clear_retry_flags
    - BIO_get_data
    linkageType: ''
    returnType: int
    signature: int port_bio_write(BIO *h, const char *buf, int size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BIO_get_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - h
    - cmd
    - num
    - ptr
    argTypes:
    - BIO*
    - int
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1385
    functionDepth: 0
    functionLinenumber: 1385
    functionLinenumberEnd: 1413
    functionName: port_bio_ctrl
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_get_data
    linkageType: ''
    returnType: long
    signature: long port_bio_ctrl(BIO *h, int cmd, long num, void *ptr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BIO_get_new_index
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1422,1
    - Dst: BIO_meth_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1426,1
    - Dst: BIO_meth_set_write
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1429,1
    - Dst: BIO_meth_set_read
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1430,1
    - Dst: BIO_meth_set_ctrl
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1431,1
    - Dst: BIO_meth_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1433,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1415
    functionDepth: 0
    functionLinenumber: 1415
    functionLinenumberEnd: 1439
    functionName: port_bio_method
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_meth_set_read
    - BIO_meth_free
    - BIO_meth_set_ctrl
    - BIO_meth_new
    - BIO_meth_set_write
    - BIO_get_new_index
    linkageType: ''
    returnType: BIO_METHOD
    signature: 'BIO_METHOD *

      port_bio_method(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: port_bio_method
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1447,1
    - Dst: BIO_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1451,1
    - Dst: BIO_set_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1455,1
    - Dst: BIO_set_init
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1456,1
    - Dst: SSL_set_bio
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1441
    functionDepth: 1
    functionLinenumber: 1441
    functionLinenumberEnd: 1460
    functionName: ssl_set_port_bio
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - BIO_set_data
    - BIO_set_init
    - port_bio_method
    - BIO_new
    - SSL_set_bio
    linkageType: ''
    returnType: int
    signature: int ssl_set_port_bio(Port *port)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1477,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1479,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1480,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1481,1
    - Dst: PEM_read_DHparams
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1486,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1487,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1491,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1492,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1493,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1494,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1494,1
    - Dst: DH_check
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1499,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1501,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1502,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1503,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1504,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1504,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1505,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1510,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1511,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1512,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1513,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1519,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1520,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1521,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1522,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - filename
    - isServerStart
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1469
    functionDepth: 1
    functionLinenumber: 1469
    functionLinenumberEnd: 1527
    functionName: load_dh_file
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - PEM_read_DHparams
    - AllocateFile
    - DH_check
    - errcode
    - DH_free
    - ereport
    - SSLerrmessage
    - errmsg
    - ERR_get_error
    - FreeFile
    - errcode_for_file_access
    linkageType: ''
    returnType: DH
    signature: 'DH *

      load_dh_file(char *filename, bool isServerStart)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new_mem_buf
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1542,1
    - Dst: PEM_read_bio_DHparams
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1545,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1547,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1548,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1549,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1549,1
    - Dst: BIO_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - buffer
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1553
      start: 1536
    functionDepth: 1
    functionLinenumber: 1536
    functionLinenumberEnd: 1553
    functionName: load_dh_buffer
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - BIO_new_mem_buf
    - SSLerrmessage
    - ereport
    - ERR_get_error
    - BIO_free
    - PEM_read_bio_DHparams
    linkageType: ''
    returnType: DH
    signature: 'DH *

      load_dh_buffer(const char *buffer, size_t len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1565,1
    - Dst: run_ssl_passphrase_command
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - buf
    - size
    - rwflag
    - userdata
    argTypes:
    - char*
    - int
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1558
    functionDepth: 5
    functionLinenumber: 1558
    functionLinenumberEnd: 1568
    functionName: ssl_external_passwd_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - Assert
    - run_ssl_passphrase_command
    linkageType: ''
    returnType: int
    signature: int ssl_external_passwd_cb(char *buf, int size, int rwflag, void *userdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - buf
    - size
    - rwflag
    - userdata
    argTypes:
    - char*
    - int
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1579
    functionDepth: 1
    functionLinenumber: 1579
    functionLinenumberEnd: 1588
    functionName: dummy_ssl_passwd_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int dummy_ssl_passwd_cb(char *buf, int size, int rwflag, void *userdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1599,1
    - Dst: pg_clean_ascii
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1596
    functionDepth: 2
    functionLinenumber: 1596
    functionLinenumberEnd: 1624
    functionName: prepare_cert_name
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - pg_clean_ascii
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      prepare_cert_name(char *name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: X509_STORE_CTX_get_error_depth
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1654,1
    - Dst: X509_STORE_CTX_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1655,1
    - Dst: X509_verify_cert_error_string
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1656,1
    - Dst: X509_STORE_CTX_get_ex_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1662,1
    - Dst: SSL_get_ex_data_X509_STORE_CTX_idx
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1662,1
    - Dst: SSL_get_ex_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1663,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1665,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1666,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1667,1
    - Dst: X509_STORE_CTX_get_current_cert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1670,1
    - Dst: X509_NAME_to_cstring
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1686,1
    - Dst: X509_get_subject_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1686,1
    - Dst: prepare_cert_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1687,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1688,1
    - Dst: X509_NAME_to_cstring
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1690,1
    - Dst: X509_get_issuer_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1690,1
    - Dst: prepare_cert_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1691,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1692,1
    - Dst: X509_get_serialNumber
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1698,1
    - Dst: ASN1_INTEGER_to_BN
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1699,1
    - Dst: BN_bn2dec
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1700,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1702,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1703,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1704,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1705,1
    - Dst: BN_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1708,1
    - Dst: OPENSSL_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1709,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1710,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 2
    argNames:
    - ok
    - ctx
    argTypes:
    - int
    - X509_STORE_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1636
    functionDepth: 3
    functionLinenumber: 1636
    functionLinenumberEnd: 1718
    functionName: verify_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - X509_STORE_CTX_get_error_depth
    - BN_bn2dec
    - BN_free
    - X509_get_issuer_name
    - prepare_cert_name
    - _
    - pfree
    - SSL_get_ex_data_X509_STORE_CTX_idx
    - appendStringInfoChar
    - initStringInfo
    - X509_get_serialNumber
    - OPENSSL_free
    - SSL_get_ex_data
    - X509_NAME_to_cstring
    - ASN1_INTEGER_to_BN
    - appendStringInfo
    - X509_verify_cert_error_string
    - X509_STORE_CTX_get_error
    - X509_STORE_CTX_get_ex_data
    - X509_get_subject_name
    - X509_STORE_CTX_get_current_cert
    linkageType: ''
    returnType: int
    signature: int verify_cb(int ok, X509_STORE_CTX *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SSL_state_string_long
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1729,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1734,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1735,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1738,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1739,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1742,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1743,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1746,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1747,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1750,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1751,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1754,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1758,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1759,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1762,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1763,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - ssl
    - type
    - args
    argTypes:
    - SSL*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1724
    functionDepth: 1
    functionLinenumber: 1724
    functionLinenumberEnd: 1766
    functionName: info_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg_internal
    - SSL_state_string_long
    linkageType: ''
    returnType: void
    signature: void info_cb(const SSL *ssl, int type, int args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1791,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1792,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1793,1
    - Dst: SSL_select_next_proto
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1795,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 6
    argNames:
    - ssl
    - out
    - outlen
    - in
    - inlen
    - userdata
    argTypes:
    - SSL*
    - unsigned char**
    - unsigned char*
    - unsigned char*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1775
    functionDepth: 1
    functionLinenumber: 1775
    functionLinenumberEnd: 1811
    functionName: alpn_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - Assert
    - SSL_select_next_proto
    linkageType: ''
    returnType: int
    signature: "int alpn_cb(SSL *ssl,\n\t\tconst unsigned char **out,\n\t\tunsigned
      char *outlen,\n\t\tconst unsigned char *in,\n\t\tunsigned int inlen,\n\t\tvoid
      *userdata)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STACK_OF
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1830,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1832,1
    - Dst: SSL_CTX_get0_certificate
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1840,1
    - Dst: SSL_CTX_get0_privatekey
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1843,1
    - Dst: SSL_CTX_get0_chain_certs
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1845,1
    - Dst: SSL_use_cert_and_key
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1846,1
    - Dst: SSL_check_private_key
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1847,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1853,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1854,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1855,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1856,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1856,1
    - Dst: SSL_CTX_get_cert_store
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1865,1
    - Dst: STACK_OF
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1874,1
    - Dst: SSL_get_SSL_CTX
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1874,1
    - Dst: SSL_CTX_set1_cert_store
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1875,1
    - Dst: SSL_CTX_get_client_CA_list
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1881,1
    - Dst: SSL_dup_CA_list
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1882,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1884,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1885,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1886,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1887,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1887,1
    - Dst: SSL_set_client_CA_list
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1891,1
    - Dst: SSL_set_verify
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1898,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - ssl
    - host_config
    argTypes:
    - SSL*
    - HostsLine*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1906
      start: 1822
    functionDepth: 1
    functionLinenumber: 1822
    functionLinenumberEnd: 1906
    functionName: ssl_update_ssl
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_use_cert_and_key
    - errcode
    - SSLerrmessage
    - SSL_get_SSL_CTX
    - SSL_CTX_get_cert_store
    - Assert
    - SSL_CTX_get0_privatekey
    - STACK_OF
    - SSL_set_client_CA_list
    - SSL_dup_CA_list
    - SSL_check_private_key
    - errmsg_internal
    - ereport
    - SSL_CTX_set1_cert_store
    - SSL_set_verify
    - SSL_CTX_get0_certificate
    - SSL_CTX_get_client_CA_list
    - SSL_CTX_get0_chain_certs
    - ERR_get_error
    linkageType: ''
    returnType: bool
    signature: bool ssl_update_ssl(SSL *ssl, HostsLine *host_config)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: SSL_client_hello_get0_ext
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1931,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1980,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1984,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1985,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2028,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2029,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2030,1
    - Dst: ssl_update_ssl
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2049,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2052,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2053,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2054,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 70
    argCount: 3
    argNames:
    - ssl
    - al
    - arg
    argTypes:
    - SSL*
    - int*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 1916
    functionDepth: 2
    functionLinenumber: 1916
    functionLinenumberEnd: 2059
    functionName: sni_clienthello_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - SSL_client_hello_get0_ext
    - pg_strncasecmp
    - strlen
    - errmsg
    - foreach_ptr
    - ssl_update_ssl
    linkageType: ''
    returnType: int
    signature: int sni_clienthello_cb(SSL *ssl, int *al, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1984,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1985,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - hostnames
    argTypes:
    - host
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1982
    functionDepth: 2
    functionLinenumber: 1982
    functionLinenumberEnd: 1990
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 9
    functionsReached:
    - strlen
    - pg_strncasecmp
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, hostname, host->hostnames)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2080,1
    - Dst: load_dh_file
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2083,1
    - Dst: load_dh_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2085,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2088,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2089,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2090,1
    - Dst: SSL_CTX_set_tmp_dh
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2094,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2096,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2097,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2098,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2099,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2099,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2100,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - context
    - isServerStart
    argTypes:
    - SSL_CTX*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2106
      start: 2075
    functionDepth: 2
    functionLinenumber: 2075
    functionLinenumberEnd: 2106
    functionName: initialize_dh
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - errcode
    - DH_free
    - ereport
    - SSLerrmessage
    - SSL_CTX_set_options
    - load_dh_file
    - errmsg
    - ERR_get_error
    - SSL_CTX_set_tmp_dh
    - load_dh_buffer
    linkageType: ''
    returnType: bool
    signature: bool initialize_dh(SSL_CTX *context, bool isServerStart)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set1_groups_list
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2127,1
    - Dst: SSLerrmessageExt
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2128,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2128,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2129,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - context
    - isServerStart
    argTypes:
    - SSL_CTX*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 2113
    functionDepth: 1
    functionLinenumber: 2113
    functionLinenumberEnd: 2135
    functionName: initialize_ecdh
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - _
    - errcode
    - SSLerrmessageExt
    - ereport
    - errhint
    - errmsg
    - ERR_get_error
    - SSL_CTX_set1_groups_list
    linkageType: ''
    returnType: bool
    signature: bool initialize_ecdh(SSL_CTX *context, bool isServerStart)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ecode
    - replacement
    argTypes:
    - unsigned long
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2157
      start: 2150
    functionDepth: 0
    functionLinenumber: 2150
    functionLinenumberEnd: 2157
    functionName: SSLerrmessageExt
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - SSLerrmessage
    linkageType: ''
    returnType: char
    signature: 'char *

      SSLerrmessageExt(unsigned long ecode, const char *replacement)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2175,1
    - Dst: ERR_reason_error_string
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2176,1
    - Dst: ERR_SYSTEM_ERROR
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2188,1
    - Dst: strerror
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2189,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2189,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2193,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ecode
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2168
    functionDepth: 0
    functionLinenumber: 2168
    functionLinenumberEnd: 2195
    functionName: SSLerrmessage
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 20
    functionsReached:
    - _
    - ERR_reason_error_string
    - ERR_SYSTEM_ERROR
    - ERR_GET_REASON
    - strerror
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      SSLerrmessage(unsigned long ecode)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_cipher_bits
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2209
      start: 2197
    functionDepth: 0
    functionLinenumber: 2197
    functionLinenumberEnd: 2209
    functionName: be_tls_get_cipher_bits
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_cipher_bits
    linkageType: ''
    returnType: int
    signature: int be_tls_get_cipher_bits(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_version
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2218
      start: 2211
    functionDepth: 0
    functionLinenumber: 2211
    functionLinenumberEnd: 2218
    functionName: be_tls_get_version
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_version
    linkageType: ''
    returnType: char
    signature: 'char *

      be_tls_get_version(Port *port)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_cipher
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 2220
    functionDepth: 0
    functionLinenumber: 2220
    functionLinenumberEnd: 2227
    functionName: be_tls_get_cipher
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_cipher
    linkageType: ''
    returnType: char
    signature: 'char *

      be_tls_get_cipher(Port *port)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2233,1
    - Dst: X509_NAME_to_cstring
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2233,1
    - Dst: X509_get_subject_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2236
      start: 2229
    functionDepth: 1
    functionLinenumber: 2229
    functionLinenumberEnd: 2236
    functionName: be_tls_get_peer_subject_name
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - X509_get_subject_name
    - X509_NAME_to_cstring
    linkageType: ''
    returnType: void
    signature: void be_tls_get_peer_subject_name(Port *port, char *ptr, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2242,1
    - Dst: X509_NAME_to_cstring
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2242,1
    - Dst: X509_get_issuer_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2245
      start: 2238
    functionDepth: 1
    functionLinenumber: 2238
    functionLinenumberEnd: 2245
    functionName: be_tls_get_peer_issuer_name
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - X509_get_issuer_name
    - X509_NAME_to_cstring
    linkageType: ''
    returnType: void
    signature: void be_tls_get_peer_issuer_name(Port *port, char *ptr, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: X509_get_serialNumber
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2256,1
    - Dst: ASN1_INTEGER_to_BN
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2257,1
    - Dst: BN_bn2dec
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2258,1
    - Dst: BN_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2260,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2261,1
    - Dst: OPENSSL_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2266
      start: 2247
    functionDepth: 1
    functionLinenumber: 2247
    functionLinenumberEnd: 2266
    functionName: be_tls_get_peer_serial
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - ASN1_INTEGER_to_BN
    - BN_bn2dec
    - BN_free
    - X509_get_serialNumber
    - OPENSSL_free
    linkageType: ''
    returnType: void
    signature: void be_tls_get_peer_serial(Port *port, char *ptr, size_t len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_certificate
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2279,1
    - Dst: X509_get_signature_info
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2289,1
    - Dst: OBJ_find_sigid_algs
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2291,1
    - Dst: X509_get_signature_nid
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2291,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2294,1
    - Dst: EVP_sha256
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2306,1
    - Dst: EVP_get_digestbynid
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2309,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2311,1
    - Dst: OBJ_nid2sn
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2312,1
    - Dst: X509_digest
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2317,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2318,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2320,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2321,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - port
    - len
    argTypes:
    - Port*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2325
      start: 2268
    functionDepth: 1
    functionLinenumber: 2268
    functionLinenumberEnd: 2325
    functionName: be_tls_get_certificate_hash
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - elog
    - X509_digest
    - memcpy
    - EVP_sha256
    - SSL_get_certificate
    - EVP_get_digestbynid
    - palloc
    - OBJ_nid2sn
    - OBJ_find_sigid_algs
    - X509_get_signature_nid
    - X509_get_signature_info
    linkageType: ''
    returnType: char
    signature: 'char *

      be_tls_get_certificate_hash(Port *port, size_t *len)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2334,1
    - Dst: BIO_s_mem
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2334,1
    - Dst: X509_NAME_entry_count
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2337,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2348,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2349,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2350,1
    - Dst: BIO_set_close
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2352,1
    - Dst: X509_NAME_get_entry
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2355,1
    - Dst: OBJ_obj2nid
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2356,1
    - Dst: X509_NAME_ENTRY_get_object
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2356,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2358,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2359,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2360,1
    - Dst: X509_NAME_ENTRY_get_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2361,1
    - Dst: OBJ_nid2sn
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2362,1
    - Dst: OBJ_nid2ln
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2364,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2366,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2368,1
    - Dst: BIO_printf
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2369,1
    - Dst: ASN1_STRING_print_ex
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2370,1
    - Dst: BIO_write
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2377,1
    - Dst: BIO_get_mem_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2378,1
    - Dst: pg_any_to_server
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2379,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2381,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2383,1
    - Dst: BIO_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2384,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2385,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - name
    argTypes:
    - X509_NAME*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2388
      start: 2331
    functionDepth: 1
    functionLinenumber: 2331
    functionLinenumberEnd: 2388
    functionName: X509_NAME_to_cstring
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 3
    functionsReached:
    - errcode
    - OBJ_nid2ln
    - pstrdup
    - BIO_write
    - X509_NAME_entry_count
    - BIO_free
    - X509_NAME_ENTRY_get_object
    - BIO_new
    - elog
    - BIO_s_mem
    - pfree
    - errmsg
    - BIO_printf
    - X509_NAME_ENTRY_get_data
    - ereport
    - BIO_set_close
    - X509_NAME_get_entry
    - ASN1_STRING_print_ex
    - pg_any_to_server
    - BIO_get_mem_data
    - OBJ_obj2nid
    - OBJ_nid2sn
    linkageType: ''
    returnType: char
    signature: 'char *

      X509_NAME_to_cstring(const X509_NAME *name)'
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - v
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2434
      start: 2404
    functionDepth: 0
    functionLinenumber: 2404
    functionLinenumberEnd: 2434
    functionName: ssl_protocol_version_to_openssl
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ssl_protocol_version_to_openssl(int v)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - v
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2457
      start: 2439
    functionDepth: 0
    functionLinenumber: 2439
    functionLinenumberEnd: 2457
    functionName: ssl_protocol_version_to_string
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      ssl_protocol_version_to_string(int v)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2463,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2464,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2467,1
    - Dst: string_hash
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2469,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2472
      start: 2459
    functionDepth: 3
    functionLinenumber: 2459
    functionLinenumberEnd: 2472
    functionName: host_cache_pointer
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - pfree
    - pstrdup
    - pg_tolower
    - strlen
    - string_hash
    linkageType: ''
    returnType: uint32
    signature: uint32 host_cache_pointer(const char *key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2481,1
    - Dst: SSL_CTX_set_default_passwd_cb_userdata
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2482,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2489,1
    - Dst: SSL_CTX_set_default_passwd_cb_userdata
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2490,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:2500,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - context
    - isServerStart
    argTypes:
    - SSL_CTX*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2502
      start: 2474
    functionDepth: 0
    functionLinenumber: 2474
    functionLinenumberEnd: 2502
    functionName: default_openssl_tls_init
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_default_passwd_cb_userdata
    - SSL_CTX_set_default_passwd_cb
    linkageType: ''
    returnType: void
    signature: void default_openssl_tls_init(SSL_CTX *context, bool isServerStart)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:89,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:90,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:95,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:99,1
    - Dst: newLOfd
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:105,1
    - Dst: inv_open
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:107,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:108,1
    - Dst: RegisterSnapshotOnOwner
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:116,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:119,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 123
    functionName: be_lo_open
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_INT32
    - Assert
    - inv_open
    - PreventCommandIfReadOnly
    - PG_GETARG_OID
    - newLOfd
    - PG_GETARG_INT32
    - GetCurrentSubTransactionId
    - RegisterSnapshotOnOwner
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_open(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:131,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:133,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:136,1
    - Dst: closeLOfd
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:139,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 142
    functionName: be_lo_close
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_INT32
    - errcode
    - closeLOfd
    - ereport
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_close(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:162,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:173,1
    - Dst: inv_read
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:176,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - fd
    - buf
    - len
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 179
    functionName: lo_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 6
    functionsReached:
    - inv_read
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: int
    signature: int lo_read(int fd, char *buf, int len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:188,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:190,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:195,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:197,1
    - Dst: inv_write
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - fd
    - buf
    - len
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 203
    functionName: lo_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 6
    functionsReached:
    - inv_write
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: int
    signature: int lo_write(int fd, const char *buf, int len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:208,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:209,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:210,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:214,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:216,1
    - Dst: inv_seek
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:222,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:224,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:227,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 228
    functionName: be_lo_lseek
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - inv_seek
    - PG_RETURN_INT32
    - errcode
    - ereport
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_lseek(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:233,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:234,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:239,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:240,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:241,1
    - Dst: inv_seek
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:243,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 246
    functionName: be_lo_lseek64
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - inv_seek
    - errcode
    - ereport
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_INT64
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_lseek64(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:253,1
    - Dst: inv_create
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:256,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 259
    functionName: be_lo_creat
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - inv_create
    - PreventCommandIfReadOnly
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_creat(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:264,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:266,1
    - Dst: inv_create
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:269,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 272
    functionName: be_lo_create
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - inv_create
    - PreventCommandIfReadOnly
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_create(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:281,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:282,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:283,1
    - Dst: inv_tell
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:285,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:289,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:291,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:294,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 295
    functionName: be_lo_tell
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - inv_tell
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_tell(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:300,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:304,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:305,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:306,1
    - Dst: inv_tell
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:308,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 311
    functionName: be_lo_tell64
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - inv_tell
    - errmsg
    - PG_RETURN_INT64
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_tell64(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:316,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:318,1
    - Dst: LargeObjectExists
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:320,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:321,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:323,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:331,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:332,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:333,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:334,1
    - Dst: closeLOfd
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:346,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:354,1
    - Dst: inv_drop
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:354,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 355
    functionName: be_lo_unlink
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - object_ownercheck
    - closeLOfd
    - PG_RETURN_INT32
    - ereport
    - PreventCommandIfReadOnly
    - PG_GETARG_OID
    - errmsg
    - inv_drop
    - LargeObjectExists
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_unlink(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:364,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:365,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:372,1
    - Dst: lo_read
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:373,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:373,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:374,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 377
    functionName: be_loread
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - lo_read
    - PG_RETURN_BYTEA_P
    - SET_VARSIZE
    - VARDATA
    - palloc
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum be_loread(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:382,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:383,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:387,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:389,1
    - Dst: lo_write
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:390,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:390,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 379
    functionDepth: 4
    functionLinenumber: 379
    functionLinenumberEnd: 392
    functionName: be_lowrite
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_INT32
    - lo_write
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PreventCommandIfReadOnly
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum be_lowrite(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:405,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:407,1
    - Dst: lo_import_internal
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 408
    functionName: be_lo_import
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - lo_import_internal
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_import(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:417,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:418,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:420,1
    - Dst: lo_import_internal
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 421
    functionName: be_lo_import_with_oid
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - PG_GETARG_OID
    - lo_import_internal
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_import_with_oid(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:434,1
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:439,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:442,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:443,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:444,1
    - Dst: inv_create
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:451,1
    - Dst: inv_open
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:456,1
    - Dst: read
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:458,1
    - Dst: inv_write
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:460,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:465,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:466,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:467,1
    - Dst: inv_close
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:470,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:472,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:473,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:475,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - filename
    - lobjOid
    argTypes:
    - text*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 479
    functionName: lo_import_internal
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 4
    functionsReached:
    - OpenTransientFile
    - inv_close
    - Assert
    - inv_create
    - ereport
    - text_to_cstring_buffer
    - inv_open
    - PreventCommandIfReadOnly
    - errmsg
    - inv_write
    - CloseTransientFile
    - errcode_for_file_access
    - read
    linkageType: ''
    returnType: Oid
    signature: Oid lo_import_internal(text *filename, Oid lobjOid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:488,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:489,1
    - Dst: inv_open
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:502,1
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:511,1
    - Dst: umask
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:512,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:513,1
    - Dst: OpenTransientFilePerm
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:515,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:518,1
    - Dst: umask
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:520,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:524,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:525,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:526,1
    - Dst: inv_read
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:532,1
    - Dst: write
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:534,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:536,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:537,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:538,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:542,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:543,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:545,1
    - Dst: inv_close
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:548,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:550,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 551
    functionName: be_lo_export
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - inv_close
    - PG_RETURN_INT32
    - PG_GETARG_TEXT_PP
    - CloseTransientFile
    - OpenTransientFilePerm
    - ereport
    - write
    - inv_open
    - text_to_cstring_buffer
    - PG_FINALLY
    - PG_GETARG_OID
    - errmsg
    - inv_read
    - PG_END_TRY
    - errcode_for_file_access
    - umask
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_export(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:563,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:564,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:565,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:570,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:571,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:572,1
    - Dst: inv_truncate
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:575,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - len
    argTypes:
    - int32
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 576
    functionName: lo_truncate_internal
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - inv_truncate
    - errcode
    linkageType: ''
    returnType: void
    signature: void lo_truncate_internal(int32 fd, int64 len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:581,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:582,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:584,1
    - Dst: lo_truncate_internal
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:586,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 588
    functionName: be_lo_truncate
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PreventCommandIfReadOnly
    - PG_GETARG_INT32
    - lo_truncate_internal
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_truncate(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:593,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:594,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:596,1
    - Dst: lo_truncate_internal
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:598,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 590
    functionDepth: 2
    functionLinenumber: 590
    functionLinenumberEnd: 600
    functionName: be_lo_truncate64
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PreventCommandIfReadOnly
    - PG_GETARG_INT64
    - PG_GETARG_INT32
    - lo_truncate_internal
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_truncate64(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: closeLOfd
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:626,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:636,1
    - Dst: close_lo_relation
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:640,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 606
    functionDepth: 1
    functionLinenumber: 606
    functionLinenumberEnd: 643
    functionName: AtEOXact_LargeObject
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 3
    functionsReached:
    - closeLOfd
    - close_lo_relation
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void AtEOXact_LargeObject(bool isCommit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: closeLOfd
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:670,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - isCommit
    - mySubid
    - parentSubid
    argTypes:
    - bool
    - SubTransactionId
    - SubTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 673
    functionName: AtEOSubXact_LargeObject
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 2
    functionsReached:
    - closeLOfd
    linkageType: ''
    returnType: void
    signature: "void AtEOSubXact_LargeObject(bool isCommit, SubTransactionId mySubid,\n\t\t\t\t\t\tSubTransactionId
      parentSubid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:687,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:705,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:713,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 718
    functionName: newLOfd
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 1
    functionsReached:
    - repalloc0_array
    - MemoryContextAllocZero
    - AllocSetContextCreate
    linkageType: ''
    returnType: int
    signature: int newLOfd(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UnregisterSnapshotFromOwner
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:733,1
    - Dst: inv_close
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:735,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 736
    functionName: closeLOfd
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 4
    functionsReached:
    - UnregisterSnapshotFromOwner
    - inv_close
    linkageType: ''
    returnType: void
    signature: void closeLOfd(int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inv_open
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:755,1
    - Dst: inv_seek
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:761,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:777,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:778,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:779,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:781,1
    - Dst: inv_seek
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:783,1
    - Dst: inv_read
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:784,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:785,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:786,1
    - Dst: inv_close
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:788,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - loOid
    - offset
    - nbytes
    argTypes:
    - Oid
    - int64
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 745
    functionDepth: 2
    functionLinenumber: 745
    functionLinenumberEnd: 791
    functionName: lo_get_fragment_internal
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - inv_read
    - inv_seek
    - inv_close
    - errcode
    - Assert
    - ereport
    - inv_open
    - errmsg
    - VARDATA
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      lo_get_fragment_internal(Oid loOid, int64 offset, int32 nbytes)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:799,1
    - Dst: lo_get_fragment_internal
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:802,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 796
    functionDepth: 3
    functionLinenumber: 796
    functionLinenumberEnd: 805
    functionName: be_lo_get
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BYTEA_P
    - lo_get_fragment_internal
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_get(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:813,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:814,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:815,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:819,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:820,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:821,1
    - Dst: lo_get_fragment_internal
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:823,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:825,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 810
    functionDepth: 3
    functionLinenumber: 810
    functionLinenumberEnd: 826
    functionName: be_lo_get_fragment
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - PG_RETURN_BYTEA_P
    - PG_GETARG_OID
    - PG_GETARG_INT64
    - errmsg
    - lo_get_fragment_internal
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_get_fragment(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:834,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:835,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:839,1
    - Dst: inv_create
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:842,1
    - Dst: inv_open
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:843,1
    - Dst: inv_write
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:844,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:844,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:845,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:845,1
    - Dst: inv_close
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:846,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 831
    functionDepth: 4
    functionLinenumber: 831
    functionLinenumberEnd: 849
    functionName: be_lo_from_bytea
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - inv_close
    - Assert
    - inv_create
    - inv_open
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PreventCommandIfReadOnly
    - PG_GETARG_OID
    - PG_RETURN_OID
    - inv_write
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_from_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:857,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:858,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:859,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:863,1
    - Dst: inv_open
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:866,1
    - Dst: inv_seek
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:867,1
    - Dst: inv_write
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:868,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:868,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:868,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:869,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:869,1
    - Dst: inv_close
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:870,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/libpq/be-fsstubs.c:872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 854
    functionDepth: 4
    functionLinenumber: 854
    functionLinenumberEnd: 873
    functionName: be_lo_put
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - inv_seek
    - inv_close
    - PG_RETURN_VOID
    - Assert
    - inv_open
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PreventCommandIfReadOnly
    - PG_GETARG_OID
    - PG_GETARG_INT64
    - inv_write
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_put(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:68,1
    - Dst: pg_be_sasl_mech*::get_mechanisms
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:70,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:72,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:74,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:75,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:86,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:87,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:93,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:94,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:95,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:103,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:104,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:107,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:111,1
    - Dst: pq_getmsgrawstring
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:123,1
    - Dst: pg_be_sasl_mech*::init
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:137,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:139,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:143,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:150,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:158,1
    - Dst: pg_be_sasl_mech*::exchange
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:163,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:168,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:177,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:182,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:185,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:187,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:189,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:201,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 5
    argNames:
    - mech
    - port
    - shadow_pass
    - logdetail
    - abandoned
    argTypes:
    - pg_be_sasl_mech*
    - Port*
    - char*
    - char**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 214
    functionName: CheckSASLAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth-sasl.c
    functionUses: 0
    functionsReached:
    - errcode
    - pg_be_sasl_mech*::get_mechanisms
    - elog
    - pfree
    - pq_getmessage
    - Assert
    - pg_be_sasl_mech*::init
    - pq_getmsgend
    - errmsg
    - pq_getmsgbytes
    - appendStringInfoChar
    - initStringInfo
    - ereport
    - pq_startmsgread
    - sendAuthRequest
    - pg_be_sasl_mech*::exchange
    - pq_getmsgrawstring
    - pq_getbyte
    - pq_getmsgint
    linkageType: ''
    returnType: int
    signature: "int CheckSASLAuth(const pg_be_sasl_mech *mech, Port *port, char *shadow_pass,\n\t\t\t
      \ const char **logdetail, bool *abandoned)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/libpq/crypt.c:52,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/libpq/crypt.c:52,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/libpq/crypt.c:53,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:55,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:55,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/libpq/crypt.c:60,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/libpq/crypt.c:64,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:65,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:65,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/libpq/crypt.c:69,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/libpq/crypt.c:71,1
    - Dst: DatumGetTimestampTz
      Src: /src/postgres/src/backend/libpq/crypt.c:74,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/libpq/crypt.c:76,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/libpq/crypt.c:84,1
    - Dst: TimestampDifferenceMicroseconds
      Src: /src/postgres/src/backend/libpq/crypt.c:85,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:93,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:93,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/crypt.c:113,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/crypt.c:119,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:119,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:122,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/libpq/crypt.c:122,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:127,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/libpq/crypt.c:127,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:132,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/libpq/crypt.c:132,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:137,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:137,1
    - Dst: StoreConnectionWarning
      Src: /src/postgres/src/backend/libpq/crypt.c:140,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/crypt.c:142,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - role
    - logdetail
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 147
    functionName: get_role_password
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - GetCurrentTimestamp
    - _
    - StoreConnectionWarning
    - HeapTupleIsValid
    - psprintf
    - TimestampDifferenceMicroseconds
    - pstrdup
    - MemoryContextSwitchTo
    - ngettext
    - ReleaseSysCache
    - DatumGetTimestampTz
    - PointerGetDatum
    - TextDatumGetCString
    - SysCacheGetAttr
    linkageType: ''
    returnType: char
    signature: 'char *

      get_role_password(const char *role, const char **logdetail)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/libpq/crypt.c:162,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:163,1
    - Dst: strspn
      Src: /src/postgres/src/backend/libpq/crypt.c:164,1
    - Dst: parse_scram_secret
      Src: /src/postgres/src/backend/libpq/crypt.c:166,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - shadow_pass
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 152
    functionDepth: 3
    functionLinenumber: 152
    functionLinenumberEnd: 170
    functionName: get_password_type
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 1
    functionsReached:
    - strlen
    - strncmp
    - strspn
    - parse_scram_secret
    linkageType: ''
    returnType: PasswordType
    signature: PasswordType get_password_type(const char *shadow_pass)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/crypt.c:183,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/crypt.c:193,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/crypt.c:200,1
    - Dst: pg_md5_encrypt
      Src: /src/postgres/src/backend/libpq/crypt.c:202,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:202,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/crypt.c:204,1
    - Dst: pg_be_scram_build_secret
      Src: /src/postgres/src/backend/libpq/crypt.c:208,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/crypt.c:212,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/crypt.c:217,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/crypt.c:233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/crypt.c:235,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/crypt.c:236,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/crypt.c:237,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/crypt.c:238,1
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/crypt.c:243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/crypt.c:244,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/crypt.c:245,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/crypt.c:246,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/crypt.c:247,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/crypt.c:248,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - target_type
    - role
    - password
    argTypes:
    - PasswordType
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 179
    functionDepth: 6
    functionLinenumber: 179
    functionLinenumberEnd: 251
    functionName: encrypt_password
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_be_scram_build_secret
    - Assert
    - errcode
    - errdetail
    - pstrdup
    - ereport
    - get_password_type
    - errhint
    - strlen
    - errmsg
    - palloc
    - pg_md5_encrypt
    linkageType: ''
    returnType: char
    signature: "char *\nencrypt_password(PasswordType target_type, const char *role,\n\t\t\t\t
      const char *password)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/crypt.c:274,1
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/crypt.c:276,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:279,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:279,1
    - Dst: pg_md5_encrypt
      Src: /src/postgres/src/backend/libpq/crypt.c:288,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:288,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:296,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:296,1
    - Dst: timingsafe_bcmp
      Src: /src/postgres/src/backend/libpq/crypt.c:297,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:297,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:301,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:301,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 6
    argNames:
    - role
    - shadow_pass
    - client_pass
    - md5_salt
    - md5_salt_len
    - logdetail
    argTypes:
    - char*
    - char*
    - char*
    - uint8*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 264
    functionDepth: 4
    functionLinenumber: 264
    functionLinenumberEnd: 307
    functionName: md5_crypt_verify
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 0
    functionsReached:
    - _
    - Assert
    - timingsafe_bcmp
    - psprintf
    - get_password_type
    - strlen
    - pg_md5_encrypt
    linkageType: ''
    returnType: int
    signature: "int md5_crypt_verify(const char *role, const char *shadow_pass,\n\t\t\t\t
      const char *client_pass,\n\t\t\t\t const uint8 *md5_salt, int md5_salt_len,\n\t\t\t\t
      const char **logdetail)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/crypt.c:332,1
    - Dst: scram_verify_plain_password
      Src: /src/postgres/src/backend/libpq/crypt.c:335,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:343,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:343,1
    - Dst: pg_md5_encrypt
      Src: /src/postgres/src/backend/libpq/crypt.c:350,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:352,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:359,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:359,1
    - Dst: timingsafe_bcmp
      Src: /src/postgres/src/backend/libpq/crypt.c:360,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:360,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:364,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:364,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:383,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:383,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - role
    - shadow_pass
    - client_pass
    - logdetail
    argTypes:
    - char*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 319
    functionDepth: 6
    functionLinenumber: 319
    functionLinenumberEnd: 386
    functionName: plain_crypt_verify
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 0
    functionsReached:
    - _
    - timingsafe_bcmp
    - psprintf
    - get_password_type
    - strlen
    - scram_verify_plain_password
    - pg_md5_encrypt
    linkageType: ''
    returnType: int
    signature: "int plain_crypt_verify(const char *role, const char *shadow_pass,\n\t\t\t\t
      \  const char *client_pass,\n\t\t\t\t   const char **logdetail)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:133,1
    - Dst: secure_raw_write
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:164,1
    - Dst: gss_wrap
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:207,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:211,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:211,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:217,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:224,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:225,1
    - Dst: pg_hton32
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:237,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:238,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:241,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:250,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 256
    functionName: be_gssapi_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 1
    functionsReached:
    - elog
    - pg_hton32
    - secure_raw_write
    - gss_wrap
    - memcpy
    - _
    - gss_release_buffer
    - Assert
    - ereport
    - errmsg
    - pg_GSS_error
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t be_gssapi_write(Port *port, const void *ptr, size_t len)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:296,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:302,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:327,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:338,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:356,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:361,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:372,1
    - Dst: gss_unwrap
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:396,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:399,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:405,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:406,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:411,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:418,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 422
    functionName: be_gssapi_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 1
    functionsReached:
    - gss_release_buffer
    - gss_unwrap
    - pg_ntoh32
    - memcpy
    - _
    - Assert
    - ereport
    - secure_raw_read
    - errmsg
    - pg_GSS_error
    - Min
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t be_gssapi_read(Port *port, void *ptr, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:443,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:462,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:478,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 2
    argNames:
    - port
    - len
    argTypes:
    - Port*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 432
    functionDepth: 2
    functionLinenumber: 432
    functionLinenumberEnd: 490
    functionName: read_or_wait
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 0
    functionsReached:
    - WaitLatchOrSocket
    - secure_raw_read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t read_or_wait(Port *port, ssize_t len)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:512,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:518,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:533,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:534,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:535,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:537,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:538,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:539,1
    - Dst: setenv
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:553,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:554,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:555,1
    - Dst: read_or_wait
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:569,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:576,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:590,1
    - Dst: read_or_wait
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:600,1
    - Dst: gss_accept_sec_context
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:607,1
    - Dst: GSS_ERROR
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:613,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:615,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:615,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:617,1
    - Dst: pg_store_delegated_credential
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:631,1
    - Dst: pg_hton32
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:648,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:649,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:652,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:656,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:659,1
    - Dst: secure_raw_write
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:666,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:676,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:683,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:695,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:710,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:711,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:712,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:713,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:714,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:715,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:717,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:719,1
    - Dst: gss_wrap_size_limit
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:727,1
    - Dst: GSS_ERROR
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:731,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:733,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:733,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 90
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 504
    functionDepth: 3
    functionLinenumber: 504
    functionLinenumberEnd: 740
    functionName: secure_open_gssapi
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 0
    functionsReached:
    - gss_release_buffer
    - errcode
    - gss_wrap_size_limit
    - gss_accept_sec_context
    - GSS_ERROR
    - pg_hton32
    - pg_ntoh32
    - _
    - memcpy
    - errmsg
    - MemoryContextAllocZero
    - secure_raw_write
    - setenv
    - ereport
    - pg_GSS_error
    - pg_store_delegated_credential
    - INJECTION_POINT
    - WaitLatchOrSocket
    - malloc
    - free
    - read_or_wait
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t secure_open_gssapi(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 745
    functionDepth: 0
    functionLinenumber: 745
    functionLinenumberEnd: 752
    functionName: be_gssapi_get_auth
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool be_gssapi_get_auth(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 764
    functionName: be_gssapi_get_enc
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool be_gssapi_get_enc(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 770
    functionDepth: 0
    functionLinenumber: 770
    functionLinenumberEnd: 777
    functionName: be_gssapi_get_princ
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      be_gssapi_get_princ(Port *port)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 783
    functionDepth: 0
    functionLinenumber: 783
    functionLinenumberEnd: 790
    functionName: be_gssapi_get_delegation
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool be_gssapi_get_delegation(Port *port)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gss_display_status
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:34,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:44,1
    - Dst: Min
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:44,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:46,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:55,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 4
    argNames:
    - s
    - len
    - stat
    - type
    argTypes:
    - char*
    - size_t
    - OM_uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 58
    functionName: pg_GSS_error_int
    functionSourceFile: /src/postgres/src/backend/libpq/be-gssapi-common.c
    functionUses: 1
    functionsReached:
    - elog
    - gss_release_buffer
    - memcpy
    - Min
    - gss_display_status
    linkageType: ''
    returnType: void
    signature: void pg_GSS_error_int(char *s, size_t len, OM_uint32 stat, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_GSS_error_int
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:82,1
    - Dst: pg_GSS_error_int
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:85,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:91,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:92,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - errmsg
    - maj_stat
    - min_stat
    argTypes:
    - char*
    - OM_uint32
    - OM_uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 94
    functionName: pg_GSS_error
    functionSourceFile: /src/postgres/src/backend/libpq/be-gssapi-common.c
    functionUses: 8
    functionsReached:
    - ereport
    - errmsg_internal
    - errdetail_internal
    - pg_GSS_error_int
    linkageType: ''
    returnType: void
    signature: "void pg_GSS_error(const char *errmsg,\n\t\t\t OM_uint32 maj_stat,
      OM_uint32 min_stat)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gss_store_cred_into
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:119,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:132,1
    - Dst: gss_release_cred
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:136,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:139,1
    - Dst: setenv
      Src: /src/postgres/src/backend/libpq/be-gssapi-common.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - cred
    argTypes:
    - gss_cred_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 147
    functionName: pg_store_delegated_credential
    functionSourceFile: /src/postgres/src/backend/libpq/be-gssapi-common.c
    functionUses: 1
    functionsReached:
    - gss_release_cred
    - gss_store_cred_into
    - setenv
    - pg_GSS_error
    linkageType: ''
    returnType: void
    signature: void pg_store_delegated_credential(gss_cred_id_t cred)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:242,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/libpq/auth.c:255,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:261,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:264,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:267,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:270,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:275,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:280,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:283,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:286,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:289,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:292,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:295,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:298,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:301,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:305,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:305,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:309,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:313,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:314,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:315,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth.c:316,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/libpq/auth.c:319,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 4
    argNames:
    - port
    - elevel
    - status
    - logdetail
    argTypes:
    - Port*
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 320
    functionName: auth_failed
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - errdetail_log
    - _
    - errcode
    - Assert
    - psprintf
    - ereport
    - gettext_noop
    - pg_unreachable
    - errmsg
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void auth_failed(Port *port, int elevel, int status, const char *logdetail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:340,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:350,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:351,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth.c:352,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/libpq/auth.c:356,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:361,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:362,1
    - Dst: hba_authname
      Src: /src/postgres/src/backend/libpq/auth.c:365,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - port
    - id
    argTypes:
    - Port*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 368
    functionName: set_authn_id
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - errdetail_log
    - Assert
    - MemoryContextStrdup
    - ereport
    - hba_authname
    - errmsg
    linkageType: ''
    returnType: void
    signature: void set_authn_id(Port *port, const char *id)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: hba_getauthmethod
      Src: /src/postgres/src/backend/libpq/auth.c:396,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:398,1
    - Dst: secure_loaded_verify_locations
      Src: /src/postgres/src/backend/libpq/auth.c:408,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:409,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:410,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:411,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:420,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:421,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:422,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:446,1
    - Dst: ENABLE_GSS
      Src: /src/postgres/src/backend/libpq/auth.c:452,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:453,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:456,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:458,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:461,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:462,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:464,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:468,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:469,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:471,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:492,1
    - Dst: ENABLE_GSS
      Src: /src/postgres/src/backend/libpq/auth.c:498,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:499,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:502,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:504,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:528,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:531,1
    - Dst: HOSTNAME_LOOKUP_DETAIL
      Src: /src/postgres/src/backend/libpq/auth.c:534,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:536,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:537,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:539,1
    - Dst: HOSTNAME_LOOKUP_DETAIL
      Src: /src/postgres/src/backend/libpq/auth.c:543,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/libpq/auth.c:552,1
    - Dst: pg_GSS_checkauth
      Src: /src/postgres/src/backend/libpq/auth.c:561,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:564,1
    - Dst: pg_GSS_recvauth
      Src: /src/postgres/src/backend/libpq/auth.c:565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:568,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/libpq/auth.c:576,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:578,1
    - Dst: pg_SSPI_recvauth
      Src: /src/postgres/src/backend/libpq/auth.c:579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:581,1
    - Dst: auth_peer
      Src: /src/postgres/src/backend/libpq/auth.c:586,1
    - Dst: ident_inet
      Src: /src/postgres/src/backend/libpq/auth.c:590,1
    - Dst: CheckPWChallengeAuth
      Src: /src/postgres/src/backend/libpq/auth.c:595,1
    - Dst: CheckPasswordAuth
      Src: /src/postgres/src/backend/libpq/auth.c:599,1
    - Dst: CheckPAMAuth
      Src: /src/postgres/src/backend/libpq/auth.c:604,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:606,1
    - Dst: CheckBSDAuth
      Src: /src/postgres/src/backend/libpq/auth.c:612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:614,1
    - Dst: CheckLDAPAuth
      Src: /src/postgres/src/backend/libpq/auth.c:620,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:622,1
    - Dst: CheckSASLAuth
      Src: /src/postgres/src/backend/libpq/auth.c:631,1
    - Dst: CheckCertAuth
      Src: /src/postgres/src/backend/libpq/auth.c:644,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:646,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:660,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:661,1
    - Dst: hba_authname
      Src: /src/postgres/src/backend/libpq/auth.c:663,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:671,1
    - Dst: auth_failed
      Src: /src/postgres/src/backend/libpq/auth.c:673,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 89
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 375
    functionDepth: 6
    functionLinenumber: 375
    functionLinenumberEnd: 677
    functionName: ClientAuthentication
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - hba_getauthmethod
    - errcode
    - CheckSASLAuth
    - ENABLE_GSS
    - CheckCertAuth
    - pg_getnameinfo_all
    - CheckPasswordAuth
    - _
    - Assert
    - secure_loaded_verify_locations
    - CheckLDAPAuth
    - errmsg
    - pg_SSPI_recvauth
    - pg_GSS_recvauth
    - ident_inet
    - MemoryContextAllocZero
    - auth_peer
    - CheckPAMAuth
    - ereport
    - CHECK_FOR_INTERRUPTS
    - hba_authname
    - auth_failed
    - CheckPWChallengeAuth
    - sendAuthRequest
    - HOSTNAME_LOOKUP_DETAIL
    - CheckBSDAuth
    - pg_GSS_checkauth
    linkageType: ''
    returnType: void
    signature: void ClientAuthentication(Port *port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - port
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 526
    functionName: HOSTNAME_LOOKUP_DETAIL
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HOSTNAME_LOOKUP_DETAIL(port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:688,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/libpq/auth.c:690,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/libpq/auth.c:691,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/libpq/auth.c:693,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/libpq/auth.c:695,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/libpq/auth.c:703,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:705,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - port
    - areq
    - extradata
    - extralen
    argTypes:
    - Port*
    - AuthRequest
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 683
    functionDepth: 4
    functionLinenumber: 683
    functionLinenumberEnd: 706
    functionName: sendAuthRequest
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 2
    functionsReached:
    - pq_beginmessage
    - pq_endmessage
    - pq_flush
    - pq_sendint32
    - CHECK_FOR_INTERRUPTS
    - pq_sendbytes
    linkageType: ''
    returnType: void
    signature: void sendAuthRequest(Port *port, AuthRequest areq, const void *extradata,
      int extralen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/libpq/auth.c:719,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/libpq/auth.c:722,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:731,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:732,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:733,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:738,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/libpq/auth.c:739,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:742,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:751,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:752,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:753,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:770,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:771,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:772,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:775,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 713
    functionDepth: 5
    functionLinenumber: 713
    functionLinenumberEnd: 783
    functionName: recv_password_packet
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - pq_getbyte
    - elog
    - errcode
    - pfree
    - pq_getmessage
    - initStringInfo
    - ereport
    - pq_startmsgread
    - strlen
    - errmsg
    linkageType: ''
    returnType: char
    signature: 'char *

      recv_password_packet(Port *port)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:802,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:804,1
    - Dst: get_role_password
      Src: /src/postgres/src/backend/libpq/auth.c:808,1
    - Dst: plain_crypt_verify
      Src: /src/postgres/src/backend/libpq/auth.c:811,1
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/auth.c:813,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:819,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:820,1
    - Dst: queue_md5_password_warning
      Src: /src/postgres/src/backend/libpq/auth.c:825,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:826,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - port
    - logdetail
    argTypes:
    - Port*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 794
    functionDepth: 7
    functionLinenumber: 794
    functionLinenumberEnd: 830
    functionName: CheckPasswordAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - plain_crypt_verify
    - queue_md5_password_warning
    - recv_password_packet
    - pfree
    - get_role_password
    - set_authn_id
    - get_password_type
    - sendAuthRequest
    linkageType: ''
    returnType: int
    signature: int CheckPasswordAuth(Port *port, const char **logdetail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:842,1
    - Dst: get_role_password
      Src: /src/postgres/src/backend/libpq/auth.c:846,1
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/auth.c:860,1
    - Dst: CheckMD5Auth
      Src: /src/postgres/src/backend/libpq/auth.c:873,1
    - Dst: CheckSASLAuth
      Src: /src/postgres/src/backend/libpq/auth.c:875,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:886,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:890,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - port
    - logdetail
    argTypes:
    - Port*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 835
    functionDepth: 6
    functionLinenumber: 835
    functionLinenumberEnd: 893
    functionName: CheckPWChallengeAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - CheckMD5Auth
    - Assert
    - get_role_password
    - CheckSASLAuth
    - pfree
    - set_authn_id
    - get_password_type
    linkageType: ''
    returnType: int
    signature: int CheckPWChallengeAuth(Port *port, const char **logdetail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/libpq/auth.c:903,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:906,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:910,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:912,1
    - Dst: md5_crypt_verify
      Src: /src/postgres/src/backend/libpq/auth.c:917,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:922,1
    - Dst: queue_md5_password_warning
      Src: /src/postgres/src/backend/libpq/auth.c:925,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - port
    - shadow_pass
    - logdetail
    argTypes:
    - Port*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 895
    functionDepth: 6
    functionLinenumber: 895
    functionLinenumberEnd: 928
    functionName: CheckMD5Auth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - queue_md5_password_warning
    - recv_password_packet
    - md5_crypt_verify
    - pfree
    - ereport
    - sendAuthRequest
    - pg_strong_random
    - errmsg
    linkageType: ''
    returnType: int
    signature: int CheckMD5Auth(Port *port, char *shadow_pass, const char **logdetail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 934
    functionName: md5_password_warning_enabled
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool md5_password_warning_enabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/auth.c:943,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth.c:945,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:945,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth.c:946,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:946,1
    - Dst: StoreConnectionWarning
      Src: /src/postgres/src/backend/libpq/auth.c:947,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/auth.c:949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 950
    functionName: queue_md5_password_warning
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 2
    functionsReached:
    - StoreConnectionWarning
    - pstrdup
    - _
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void queue_md5_password_warning(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: setenv
      Src: /src/postgres/src/backend/libpq/auth.c:977,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:980,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:981,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:982,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/libpq/auth.c:1010,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:1012,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/libpq/auth.c:1014,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1019,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1020,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1021,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:1027,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/libpq/auth.c:1028,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1031,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1039,1
    - Dst: gss_accept_sec_context
      Src: /src/postgres/src/backend/libpq/auth.c:1042,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1055,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1057,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:1062,1
    - Dst: pg_store_delegated_credential
      Src: /src/postgres/src/backend/libpq/auth.c:1066,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1075,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:1078,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/auth.c:1081,1
    - Dst: gss_delete_sec_context
      Src: /src/postgres/src/backend/libpq/auth.c:1086,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/auth.c:1087,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1087,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1093,1
    - Dst: gss_release_cred
      Src: /src/postgres/src/backend/libpq/auth.c:1102,1
    - Dst: pg_GSS_checkauth
      Src: /src/postgres/src/backend/libpq/auth.c:1104,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 958
    functionDepth: 5
    functionLinenumber: 958
    functionLinenumberEnd: 1105
    functionName: pg_GSS_recvauth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - gss_release_buffer
    - errcode
    - gss_accept_sec_context
    - elog
    - _
    - pfree
    - pq_getmessage
    - gss_delete_sec_context
    - errmsg
    - gss_release_cred
    - setenv
    - initStringInfo
    - ereport
    - CHECK_FOR_INTERRUPTS
    - pq_startmsgread
    - sendAuthRequest
    - pg_store_delegated_credential
    - pg_GSS_error
    - pq_getbyte
    - pg_GSS_checkauth
    linkageType: ''
    returnType: int
    signature: int pg_GSS_recvauth(Port *port)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gss_display_name
      Src: /src/postgres/src/backend/libpq/auth.c:1125,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/auth.c:1128,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1128,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth.c:1137,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:1138,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/auth.c:1140,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/libpq/auth.c:1150,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:1151,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/auth.c:1156,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/auth.c:1158,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1169,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/libpq/auth.c:1175,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:1177,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1182,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1185,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1190,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1192,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1194,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1198,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1201,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1111
    functionDepth: 2
    functionLinenumber: 1111
    functionLinenumberEnd: 1204
    functionName: pg_GSS_checkauth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 2
    functionsReached:
    - elog
    - gss_display_name
    - pg_GSS_error
    - gss_release_buffer
    - pg_strcasecmp
    - memcpy
    - _
    - strchr
    - strcmp
    - pfree
    - check_usermap
    - MemoryContextStrdup
    - set_authn_id
    - strlen
    - palloc
    linkageType: ''
    returnType: int
    signature: int pg_GSS_checkauth(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FormatMessage
      Src: /src/postgres/src/backend/libpq/auth.c:1223,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1227,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1228,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1229,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1231,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1232,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - severity
    - errmsg
    - r
    argTypes:
    - int
    - char*
    - SECURITY_STATUS
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1218
    functionDepth: 1
    functionLinenumber: 1218
    functionLinenumberEnd: 1234
    functionName: pg_SSPI_error
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 2
    functionsReached:
    - FormatMessage
    - ereport
    - errmsg_internal
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: void pg_SSPI_error(int severity, const char *errmsg, SECURITY_STATUS
      r)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: AcquireCredentialsHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1264,1
    - Dst: pg_SSPI_error
      Src: /src/postgres/src/backend/libpq/auth.c:1274,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1274,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/libpq/auth.c:1284,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/libpq/auth.c:1285,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1290,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1291,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1293,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1297,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1298,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1299,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:1305,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/libpq/auth.c:1306,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1309,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1312,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1313,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1315,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1335,1
    - Dst: AcceptSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1338,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1349,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1356,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:1362,1
    - Dst: FreeContextBuffer
      Src: /src/postgres/src/backend/libpq/auth.c:1365,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1372,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1373,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1375,1
    - Dst: pg_SSPI_error
      Src: /src/postgres/src/backend/libpq/auth.c:1376,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1377,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/auth.c:1388,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1390,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1391,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:1394,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1397,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1405,1
    - Dst: QuerySecurityContextToken
      Src: /src/postgres/src/backend/libpq/auth.c:1415,1
    - Dst: pg_SSPI_error
      Src: /src/postgres/src/backend/libpq/auth.c:1417,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1418,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1424,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1425,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/backend/libpq/auth.c:1427,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1427,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1428,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1429,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1430,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/auth.c:1432,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1434,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1435,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/backend/libpq/auth.c:1437,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1438,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1439,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1440,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1442,1
    - Dst: LookupAccountSid
      Src: /src/postgres/src/backend/libpq/auth.c:1444,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1446,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1447,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1448,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1450,1
    - Dst: pg_SSPI_make_upn
      Src: /src/postgres/src/backend/libpq/auth.c:1454,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1472,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1477,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:1480,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1481,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1487,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/libpq/auth.c:1489,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1491,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1510,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1511,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1512,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1516,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 107
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1236
    functionDepth: 5
    functionLinenumber: 1236
    functionLinenumberEnd: 1517
    functionName: pg_SSPI_recvauth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - errcode
    - pg_SSPI_error
    - FreeCredentialsHandle
    - DeleteSecurityContext
    - GetLastError
    - set_authn_id
    - elog
    - CloseHandle
    - check_usermap
    - memcpy
    - _
    - pfree
    - pq_getmessage
    - errmsg
    - pg_SSPI_make_upn
    - errmsg_internal
    - LookupAccountSid
    - psprintf
    - initStringInfo
    - ereport
    - pq_startmsgread
    - sendAuthRequest
    - strlen
    - AcceptSecurityContext
    - AcquireCredentialsHandle
    - pq_getbyte
    - QuerySecurityContextToken
    - pg_strcasecmp
    - GetTokenInformation
    - FreeContextBuffer
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: int pg_SSPI_recvauth(Port *port)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1544,1
    - Dst: TranslateName
      Src: /src/postgres/src/backend/libpq/auth.c:1545,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1548,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1552,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1554,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth.c:1559,1
    - Dst: TranslateName
      Src: /src/postgres/src/backend/libpq/auth.c:1561,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1564,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/auth.c:1566,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1570,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1571,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1572,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1573,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1583,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1584,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1585,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1586,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/libpq/auth.c:1591,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1598,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1599,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1600,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1601,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/libpq/auth.c:1606,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1609,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - accountname
    - accountnamesize
    - domainname
    - domainnamesize
    - update_accountname
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1523
    functionDepth: 2
    functionLinenumber: 1523
    functionLinenumberEnd: 1611
    functionName: pg_SSPI_make_upn
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - errcode
    - pfree
    - strchr
    - psprintf
    - ereport
    - GetLastError
    - errmsg
    - TranslateName
    - palloc
    - strcpy
    linkageType: ''
    returnType: int
    signature: "int pg_SSPI_make_upn(char *accountname,\n\t\t\t\t size_t accountnamesize,\n\t\t\t\t
      char *domainname,\n\t\t\t\t size_t domainnamesize,\n\t\t\t\t bool update_accountname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1624
    functionDepth: 0
    functionLinenumber: 1624
    functionLinenumberEnd: 1628
    functionName: is_ident_whitespace
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_ident_whitespace(const char c)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1645,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1647,1
    - Dst: is_ident_whitespace
      Src: /src/postgres/src/backend/libpq/auth.c:1663,1
    - Dst: is_ident_whitespace
      Src: /src/postgres/src/backend/libpq/auth.c:1666,1
    - Dst: is_ident_whitespace
      Src: /src/postgres/src/backend/libpq/auth.c:1670,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:1672,1
    - Dst: is_ident_whitespace
      Src: /src/postgres/src/backend/libpq/auth.c:1693,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 40
    argCount: 2
    argNames:
    - ident_response
    - ident_user
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1636
    functionDepth: 1
    functionLinenumber: 1636
    functionLinenumberEnd: 1706
    functionName: interpret_ident_response
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - is_ident_whitespace
    - strlen
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool interpret_ident_response(const char *ident_response,\n\t\t\t\t\t\t
      char *ident_user)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1741,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1745,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1750,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1759,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1775,1
    - Dst: socket
      Src: /src/postgres/src/backend/libpq/auth.c:1783,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1787,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1788,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1789,1
    - Dst: bind
      Src: /src/postgres/src/backend/libpq/auth.c:1799,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1802,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1803,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1804,1
    - Dst: connect
      Src: /src/postgres/src/backend/libpq/auth.c:1810,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1814,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1815,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1816,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1823,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:1829,1
    - Dst: send
      Src: /src/postgres/src/backend/libpq/auth.c:1831,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1831,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1836,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1837,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1838,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:1846,1
    - Dst: recv
      Src: /src/postgres/src/backend/libpq/auth.c:1848,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1853,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1854,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1855,1
    - Dst: interpret_ident_response
      Src: /src/postgres/src/backend/libpq/auth.c:1862,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1864,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1865,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:1870,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1872,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1874,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:1883,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1884,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 91
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1717
    functionDepth: 2
    functionLinenumber: 1717
    functionLinenumberEnd: 1887
    functionName: ident_inet
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - send
    - connect
    - pg_getnameinfo_all
    - pg_freeaddrinfo_all
    - check_usermap
    - errcode_for_socket_access
    - ereport
    - CHECK_FOR_INTERRUPTS
    - set_authn_id
    - bind
    - strlen
    - errmsg
    - recv
    - socket
    - closesocket
    - interpret_ident_response
    - pg_getaddrinfo_all
    - snprintf
    linkageType: ''
    returnType: int
    signature: int ident_inet(Port *port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getpeereid
      Src: /src/postgres/src/backend/libpq/auth.c:1915,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1919,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1920,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1921,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1923,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1924,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1925,1
    - Dst: getpwuid_r
      Src: /src/postgres/src/backend/libpq/auth.c:1930,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1934,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1935,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1940,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1941,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:1950,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1952,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:1958,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1902
    functionDepth: 2
    functionLinenumber: 1902
    functionLinenumberEnd: 1961
    functionName: auth_peer
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - check_usermap
    - errcode
    - Assert
    - errcode_for_socket_access
    - ereport
    - set_authn_id
    - getpwuid_r
    - errmsg
    - getpeereid
    linkageType: ''
    returnType: int
    signature: int auth_peer(Port *port)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/backend/libpq/auth.c:2002,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2004,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:2005,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2006,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:2015,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:2022,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:2023,1
    - Dst: strdup
      Src: /src/postgres/src/backend/libpq/auth.c:2035,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2040,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2041,1
    - Dst: strdup
      Src: /src/postgres/src/backend/libpq/auth.c:2046,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2051,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2052,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:2065,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:2066,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 4
    argNames:
    - num_msg
    - msg
    - resp
    - appdata_ptr
    argTypes:
    - int
    - PG_PAM_CONST**
    - struct pam_response**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2069
      start: 1974
    functionDepth: 6
    functionLinenumber: 1974
    functionLinenumberEnd: 2069
    functionName: pam_passwd_conv_proc
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - recv_password_packet
    - errcode
    - ereport
    - sendAuthRequest
    - strlen
    - errmsg
    - strdup
    - free
    - calloc
    linkageType: ''
    returnType: int
    signature: "int pam_passwd_conv_proc(int num_msg, PG_PAM_CONST struct pam_message
      **msg,\n\t\t\t\t\t struct pam_response **resp, void *appdata_ptr)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: unconstify
      Src: /src/postgres/src/backend/libpq/auth.c:2095,1
    - Dst: pam_start
      Src: /src/postgres/src/backend/libpq/auth.c:2100,1
    - Dst: pam_start
      Src: /src/postgres/src/backend/libpq/auth.c:2103,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2108,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2109,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2110,1
    - Dst: pam_set_item
      Src: /src/postgres/src/backend/libpq/auth.c:2115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2120,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2121,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:2136,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2141,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:2142,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2143,1
    - Dst: pam_set_item
      Src: /src/postgres/src/backend/libpq/auth.c:2147,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2151,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2152,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2153,1
    - Dst: pam_set_item
      Src: /src/postgres/src/backend/libpq/auth.c:2159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2163,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2164,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2165,1
    - Dst: pam_authenticate
      Src: /src/postgres/src/backend/libpq/auth.c:2170,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2176,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2177,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2178,1
    - Dst: pam_acct_mgmt
      Src: /src/postgres/src/backend/libpq/auth.c:2183,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2190,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2191,1
    - Dst: pam_end
      Src: /src/postgres/src/backend/libpq/auth.c:2196,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2200,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2201,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2202,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:2208,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 3
    argNames:
    - port
    - user
    - password
    argTypes:
    - Port*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2211
      start: 2075
    functionDepth: 2
    functionLinenumber: 2075
    functionLinenumberEnd: 2211
    functionName: CheckPAMAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - gai_strerror
    - pg_getnameinfo_all
    - errmsg_internal
    - pam_set_item
    - pam_acct_mgmt
    - pam_start
    - ereport
    - unconstify
    - set_authn_id
    - pam_end
    - errmsg
    - pam_strerror
    - pam_authenticate
    linkageType: ''
    returnType: int
    signature: int CheckPAMAuth(Port *port, const char *user, const char *password)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:2227,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:2229,1
    - Dst: auth_userokay
      Src: /src/postgres/src/backend/libpq/auth.c:2238,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2240,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:2245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - port
    - user
    argTypes:
    - Port*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2220
    functionDepth: 6
    functionLinenumber: 2220
    functionLinenumberEnd: 2247
    functionName: CheckBSDAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - recv_password_packet
    - auth_userokay
    - pfree
    - set_authn_id
    - sendAuthRequest
    linkageType: ''
    returnType: int
    signature: int CheckBSDAuth(Port *port, char *user)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:2274,1
    - Dst: ldap_sslinit
      Src: /src/postgres/src/backend/libpq/auth.c:2275,1
    - Dst: ldap_init
      Src: /src/postgres/src/backend/libpq/auth.c:2277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2280,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2281,1
    - Dst: LdapGetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:2282,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:2303,1
    - Dst: ldap_dn2domain
      Src: /src/postgres/src/backend/libpq/auth.c:2315,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2317,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2318,1
    - Dst: ldap_domain2hostlist
      Src: /src/postgres/src/backend/libpq/auth.c:2323,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2325,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2326,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/auth.c:2328,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2329,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2332,1
    - Dst: strcspn
      Src: /src/postgres/src/backend/libpq/auth.c:2351,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth.c:2355,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth.c:2358,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth.c:2359,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:2360,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:2362,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2372,1
    - Dst: ldap_initialize
      Src: /src/postgres/src/backend/libpq/auth.c:2375,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2379,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2380,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2381,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:2387,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2390,1
    - Dst: ldap_init
      Src: /src/postgres/src/backend/libpq/auth.c:2394,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2397,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2398,1
    - Dst: ldap_set_option
      Src: /src/postgres/src/backend/libpq/auth.c:2405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2407,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2408,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2409,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2410,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2411,1
    - Dst: ldap_start_tls_s
      Src: /src/postgres/src/backend/libpq/auth.c:2418,1
    - Dst: ldap_start_tls_s
      Src: /src/postgres/src/backend/libpq/auth.c:2420,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2423,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2424,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2425,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2426,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2427,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 75
    argCount: 2
    argNames:
    - port
    - ldap
    argTypes:
    - Port*
    - LDAP**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2433
      start: 2263
    functionDepth: 3
    functionLinenumber: 2263
    functionLinenumberEnd: 2433
    functionName: InitializeLDAPConnection
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - ldap_domain2hostlist
    - strcmp
    - errhint
    - ldap_err2string
    - ldap_memfree
    - appendBinaryStringInfo
    - pfree
    - ldap_set_option
    - appendStringInfoString
    - LdapGetLastError
    - ldap_unbind
    - errmsg
    - ldap_sslinit
    - errdetail_for_ldap
    - ldap_init
    - appendStringInfoChar
    - initStringInfo
    - ereport
    - ldap_dn2domain
    - ldap_initialize
    - appendStringInfo
    - strcspn
    - ldap_start_tls_s
    linkageType: ''
    returnType: int
    signature: int InitializeLDAPConnection(Port *port, LDAP **ldap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2453
      start: 2449
    functionDepth: 0
    functionLinenumber: 2449
    functionLinenumberEnd: 2453
    functionName: dummy_ldap_password_mutator
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      dummy_ldap_password_mutator(char *input)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:2464,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/libpq/auth.c:2467,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth.c:2469,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth.c:2473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pattern
    - user_name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2477
      start: 2459
    functionDepth: 3
    functionLinenumber: 2459
    functionLinenumberEnd: 2477
    functionName: FormatSearchFilter
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - initStringInfo
    - strncmp
    - appendStringInfoChar
    linkageType: ''
    returnType: char
    signature: 'char *

      FormatSearchFilter(const char *pattern, const char *user_name)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2500,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2501,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2507,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2508,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:2522,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:2528,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:2530,1
    - Dst: InitializeLDAPConnection
      Src: /src/postgres/src/backend/libpq/auth.c:2534,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2537,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2569,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2570,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2571,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2572,1
    - Dst: ldap_simple_bind_s
      Src: /src/postgres/src/backend/libpq/auth.c:2581,1
    - Dst: ldap_password_hook
      Src: /src/postgres/src/backend/libpq/auth.c:2583,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2587,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2590,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2591,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2592,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2593,1
    - Dst: FormatSearchFilter
      Src: /src/postgres/src/backend/libpq/auth.c:2599,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:2601,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:2603,1
    - Dst: ldap_search_s
      Src: /src/postgres/src/backend/libpq/auth.c:2606,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2617,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2618,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2619,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/backend/libpq/auth.c:2621,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2622,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2623,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2624,1
    - Dst: ldap_count_entries
      Src: /src/postgres/src/backend/libpq/auth.c:2628,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2633,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth.c:2634,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2637,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2638,1
    - Dst: errdetail_plural
      Src: /src/postgres/src/backend/libpq/auth.c:2639,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2644,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2645,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2646,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/backend/libpq/auth.c:2647,1
    - Dst: ldap_first_entry
      Src: /src/postgres/src/backend/libpq/auth.c:2651,1
    - Dst: ldap_get_dn
      Src: /src/postgres/src/backend/libpq/auth.c:2652,1
    - Dst: ldap_get_option
      Src: /src/postgres/src/backend/libpq/auth.c:2657,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2658,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2659,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2661,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2662,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2663,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2664,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2665,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/backend/libpq/auth.c:2666,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth.c:2669,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2671,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2672,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/backend/libpq/auth.c:2673,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:2676,1
    - Dst: ldap_simple_bind_s
      Src: /src/postgres/src/backend/libpq/auth.c:2681,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2685,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2686,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2687,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2688,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2689,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2690,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2691,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:2696,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2698,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2699,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2700,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 96
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2703
      start: 2482
    functionDepth: 6
    functionLinenumber: 2482
    functionLinenumberEnd: 2703
    functionName: CheckLDAPAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pstrdup
    - set_authn_id
    - ldap_msgfree
    - ldap_password_hook
    - ldap_err2string
    - ldap_memfree
    - ldap_simple_bind_s
    - errdetail_plural
    - ldap_search_s
    - pfree
    - ldap_count_entries
    - ldap_unbind
    - errmsg
    - errdetail_for_ldap
    - InitializeLDAPConnection
    - recv_password_packet
    - FormatSearchFilter
    - psprintf
    - ereport
    - sendAuthRequest
    - ldap_get_option
    - ldap_first_entry
    - ldap_get_dn
    - errdetail
    linkageType: ''
    returnType: int
    signature: int CheckLDAPAuth(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_get_option
      Src: /src/postgres/src/backend/libpq/auth.c:2715,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth.c:2718,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2719,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ldap
    argTypes:
    - LDAP*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2723
      start: 2709
    functionDepth: 1
    functionLinenumber: 2709
    functionLinenumberEnd: 2723
    functionName: errdetail_for_ldap
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 2
    functionsReached:
    - ldap_memfree
    - ldap_get_option
    - errdetail
    linkageType: ''
    returnType: int
    signature: int errdetail_for_ldap(LDAP *ldap)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:2739,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:2753,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2755,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2756,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2776,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2777,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:2782,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:2786,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2799,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2800,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2805,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2811
      start: 2733
    functionDepth: 2
    functionLinenumber: 2733
    functionLinenumberEnd: 2811
    functionName: CheckCertAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - check_usermap
    - Assert
    - ereport
    - set_authn_id
    - strlen
    - errmsg
    linkageType: ''
    returnType: int
    signature: int CheckCertAuth(Port *port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: token_has_regexp
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: token_has_regexp(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: token_is_member_check
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: token_is_member_check(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - k
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: token_is_keyword
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: token_is_keyword(t, k)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - k
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: token_matches
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: token_matches(t, k)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - k
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: token_matches_insensitive
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: token_matches_insensitive(t,k)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/backend/libpq/hba.c:144,1
    - Dst: isblank
      Src: /src/postgres/src/backend/libpq/hba.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: pg_isblank
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - isblank
    linkageType: ''
    returnType: bool
    signature: bool pg_isblank(const char c)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/libpq/hba.c:192,1
    - Dst: pg_isblank
      Src: /src/postgres/src/backend/libpq/hba.c:197,1
    - Dst: pg_isblank
      Src: /src/postgres/src/backend/libpq/hba.c:205,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/hba.c:223,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 31
    argCount: 4
    argNames:
    - lineptr
    - buf
    - initial_quote
    - terminating_comma
    argTypes:
    - char**
    - StringInfo
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 249
    functionName: next_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - resetStringInfo
    - pg_isblank
    linkageType: ''
    returnType: bool
    signature: "bool next_token(char **lineptr, StringInfo buf,\n\t\t   bool *initial_quote,
      bool *terminating_comma)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:260,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/hba.c:262,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - token
    - quoted
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 269
    functionName: make_auth_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - palloc0
    - strlen
    - memcpy
    linkageType: ''
    returnType: AuthToken
    signature: 'AuthToken *

      make_auth_token(const char *token, bool quoted)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:278,1
    - Dst: pg_regfree
      Src: /src/postgres/src/backend/libpq/hba.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - token
    argTypes:
    - AuthToken*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 280
    functionName: free_auth_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - token_has_regexp
    - pg_regfree
    linkageType: ''
    returnType: void
    signature: void free_auth_token(AuthToken *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - AuthToken*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 291
    functionName: copy_auth_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - make_auth_token
    linkageType: ''
    returnType: AuthToken
    signature: 'AuthToken *

      copy_auth_token(AuthToken *in)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:306,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/hba.c:311,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/hba.c:312,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:312,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/libpq/hba.c:313,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:314,1
    - Dst: pg_regcomp
      Src: /src/postgres/src/backend/libpq/hba.c:316,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/libpq/hba.c:322,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:325,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:327,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:330,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 5
    argNames:
    - token
    - filename
    - line_num
    - err_msg
    - elevel
    argTypes:
    - AuthToken*
    - char*
    - int
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 336
    functionName: regcomp_auth_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - pg_mb2wchar_with_len
    - pg_regcomp
    - Assert
    - pg_regerror
    - errcode
    - errcontext
    - ereport
    - psprintf
    - pfree
    - strlen
    - errmsg
    - palloc
    linkageType: ''
    returnType: int
    signature: "int regcomp_auth_token(AuthToken *token, char *filename, int line_num,\n\t\t\t\t
      \  char **err_msg, int elevel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:351,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/hba.c:353,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:353,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/libpq/hba.c:354,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:354,1
    - Dst: pg_regexec
      Src: /src/postgres/src/backend/libpq/hba.c:356,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - match
    - token
    - nmatch
    - pmatch
    argTypes:
    - char*
    - AuthToken*
    - size_t
    - regmatch_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 360
    functionName: regexec_auth_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - pg_mb2wchar_with_len
    - pg_regexec
    - Assert
    - pfree
    - strlen
    - palloc
    linkageType: ''
    returnType: int
    signature: "int regexec_auth_token(const char *match, AuthToken *token, size_t
      nmatch,\n\t\t\t\t   regmatch_t pmatch[])"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/hba.c:385,1
    - Dst: next_token
      Src: /src/postgres/src/backend/libpq/hba.c:389,1
    - Dst: tokenize_expand_file
      Src: /src/postgres/src/backend/libpq/hba.c:395,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:405,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:406,1
    - Dst: make_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:406,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:407,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:411,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 5
    argNames:
    - filename
    - lineptr
    - elevel
    - depth
    - err_msg
    argTypes:
    - char*
    - char**
    - int
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 414
    functionName: next_field_expand
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - make_auth_token
    - next_token
    - tokenize_expand_file
    - pfree
    - initStringInfo
    - lappend
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: List
    signature: "List *\nnext_field_expand(const char *filename, char **lineptr,\n\t\t\t\t
      \ int elevel, int depth, char **err_msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AbsoluteConfigLocation
      Src: /src/postgres/src/backend/libpq/hba.c:447,1
    - Dst: open_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:448,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:454,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:455,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:458,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:464,1
    - Dst: tokenize_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:468,1
    - Dst: free_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:470,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:471,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 7
    argNames:
    - outer_filename
    - inc_filename
    - tok_lines
    - elevel
    - depth
    - missing_ok
    - err_msg
    argTypes:
    - char*
    - char*
    - List**
    - int
    - int
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 472
    functionName: tokenize_include_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - AbsoluteConfigLocation
    - pfree
    - Assert
    - ereport
    - open_auth_file
    - tokenize_auth_file
    - errmsg
    - free_auth_file
    linkageType: ''
    returnType: void
    signature: "void tokenize_include_file(const char *outer_filename,\n\t\t\t\t\t
      \ const char *inc_filename,\n\t\t\t\t\t  List **tok_lines,\n\t\t\t\t\t  int
      elevel,\n\t\t\t\t\t  int depth,\n\t\t\t\t\t  bool missing_ok,\n\t\t\t\t\t  char
      **err_msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AbsoluteConfigLocation
      Src: /src/postgres/src/backend/libpq/hba.c:503,1
    - Dst: open_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:504,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:509,1
    - Dst: tokenize_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:517,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:520,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:528,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:534,1
    - Dst: foreach
      Src: /src/postgres/src/backend/libpq/hba.c:538,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:540,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:545,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:552,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:553,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:554,1
    - Dst: free_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:559,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 6
    argNames:
    - tokens
    - outer_filename
    - inc_filename
    - elevel
    - depth
    - err_msg
    argTypes:
    - List*
    - char*
    - char*
    - int
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 561
    functionName: tokenize_expand_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 1
    functionsReached:
    - AbsoluteConfigLocation
    - foreach
    - pfree
    - pstrdup
    - tokenize_auth_file
    - open_auth_file
    - lappend
    - MemoryContextSwitchTo
    - lfirst
    - free_auth_file
    linkageType: ''
    returnType: List
    signature: "List *\ntokenize_expand_file(List *tokens,\n\t\t\t\t\t const char
      *outer_filename,\n\t\t\t\t\t const char *inc_filename,\n\t\t\t\t\t int elevel,\n\t\t\t\t\t
      int depth,\n\t\t\t\t\t char **err_msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:528,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:534,1
    - Dst: foreach
      Src: /src/postgres/src/backend/libpq/hba.c:538,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:540,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:545,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:552,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:553,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:554,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 557
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - foreach
    - pstrdup
    - lappend
    - MemoryContextSwitchTo
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(inc_line, inc_lines)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:545,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:552,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:553,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 555
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - lfirst
    - lappend
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void foreach(inc_token, inc_tokens)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FreeFile
      Src: /src/postgres/src/backend/libpq/hba.c:570,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - file
    - depth
    argTypes:
    - FILE*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 578
    functionName: free_auth_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 3
    functionsReached:
    - MemoryContextDelete
    - FreeFile
    linkageType: ''
    returnType: void
    signature: void free_auth_file(FILE *file, int depth)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:605,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/hba.c:606,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:607,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:610,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/libpq/hba.c:615,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:620,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/hba.c:621,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:622,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:627,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/hba.c:646,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - filename
    - elevel
    - depth
    - err_msg
    argTypes:
    - char*
    - int
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 592
    functionDepth: 2
    functionLinenumber: 592
    functionLinenumberEnd: 652
    functionName: open_auth_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 3
    functionsReached:
    - AllocateFile
    - psprintf
    - ereport
    - errmsg
    - AllocSetContextCreate
    - errcode_for_file_access
    linkageType: ''
    returnType: FILE
    signature: "FILE *\nopen_auth_file(const char *filename, int elevel, int depth,\n\t\t\t
      \  char **err_msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 664
    functionName: tokenize_error_callback
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - errcontext
    linkageType: ''
    returnType: void
    signature: void tokenize_error_callback(void *arg)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:697,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/hba.c:711,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:714,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/hba.c:716,1
    - Dst: feof
      Src: /src/postgres/src/backend/libpq/hba.c:721,1
    - Dst: ferror
      Src: /src/postgres/src/backend/libpq/hba.c:721,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/libpq/hba.c:732,1
    - Dst: pg_get_line_append
      Src: /src/postgres/src/backend/libpq/hba.c:734,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/backend/libpq/hba.c:737,1
    - Dst: ferror
      Src: /src/postgres/src/backend/libpq/hba.c:758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:763,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/hba.c:764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:765,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:767,1
    - Dst: next_field_expand
      Src: /src/postgres/src/backend/libpq/hba.c:778,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:787,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:788,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:789,1
    - Dst: list_length
      Src: /src/postgres/src/backend/libpq/hba.c:801,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:806,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/libpq/hba.c:806,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:807,1
    - Dst: lsecond_node
      Src: /src/postgres/src/backend/libpq/hba.c:807,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:809,1
    - Dst: tokenize_include_file
      Src: /src/postgres/src/backend/libpq/hba.c:811,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:823,1
    - Dst: GetConfFilesInDir
      Src: /src/postgres/src/backend/libpq/hba.c:830,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/hba.c:839,1
    - Dst: tokenize_include_file
      Src: /src/postgres/src/backend/libpq/hba.c:842,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/hba.c:848,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/hba.c:849,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:855,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:856,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:869,1
    - Dst: tokenize_include_file
      Src: /src/postgres/src/backend/libpq/hba.c:872,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:892,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/hba.c:893,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:895,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:897,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:898,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:899,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:900,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:907,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:908,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 107
    argCount: 5
    argNames:
    - filename
    - file
    - tok_lines
    - elevel
    - depth
    argTypes:
    - char*
    - FILE*
    - List**
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 686
    functionDepth: 4
    functionLinenumber: 686
    functionLinenumberEnd: 911
    functionName: tokenize_auth_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 3
    functionsReached:
    - strcmp
    - tokenize_include_file
    - pstrdup
    - pg_strip_crlf
    - resetStringInfo
    - ferror
    - linitial_node
    - Assert
    - linitial
    - appendStringInfoString
    - pfree
    - errmsg
    - pg_get_line_append
    - list_length
    - appendStringInfoChar
    - palloc0_object
    - lsecond_node
    - feof
    - initStringInfo
    - ereport
    - psprintf
    - lappend
    - AllocSetContextCreate
    - errcode_for_file_access
    - next_field_expand
    - GetConfFilesInDir
    - MemoryContextSwitchTo
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: "void tokenize_auth_file(const char *filename, FILE *file, List **tok_lines,\n\t\t\t\t
      \  int elevel, int depth)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/libpq/hba.c:925,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/libpq/hba.c:928,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/libpq/hba.c:930,1
    - Dst: is_member_of_role_nosuper
      Src: /src/postgres/src/backend/libpq/hba.c:938,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - userid
    - role
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 939
    functionName: is_member
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 101
    functionsReached:
    - OidIsValid
    - is_member_of_role_nosuper
    - get_role_oid
    linkageType: ''
    returnType: bool
    signature: bool is_member(Oid userid, const char *role)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:957,1
    - Dst: token_is_member_check
      Src: /src/postgres/src/backend/libpq/hba.c:958,1
    - Dst: is_member
      Src: /src/postgres/src/backend/libpq/hba.c:960,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:963,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:965,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:967,1
    - Dst: token_matches_insensitive
      Src: /src/postgres/src/backend/libpq/hba.c:972,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:975,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 4
    argNames:
    - role
    - roleid
    - tokens
    - case_insensitive
    argTypes:
    - char*
    - Oid
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 949
    functionDepth: 2
    functionLinenumber: 949
    functionLinenumberEnd: 979
    functionName: check_role
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - is_member
    - token_matches
    - token_matches_insensitive
    - lfirst
    - regexec_auth_token
    - token_has_regexp
    - token_is_keyword
    - token_is_member_check
    linkageType: ''
    returnType: bool
    signature: bool check_role(const char *role, Oid roleid, List *tokens, bool case_insensitive)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:957,1
    - Dst: token_is_member_check
      Src: /src/postgres/src/backend/libpq/hba.c:958,1
    - Dst: is_member
      Src: /src/postgres/src/backend/libpq/hba.c:960,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:963,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:965,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:967,1
    - Dst: token_matches_insensitive
      Src: /src/postgres/src/backend/libpq/hba.c:972,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:975,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 955
    functionDepth: 2
    functionLinenumber: 955
    functionLinenumberEnd: 977
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - is_member
    - token_matches
    - token_matches_insensitive
    - lfirst
    - regexec_auth_token
    - token_has_regexp
    - token_is_keyword
    - token_is_member_check
    linkageType: ''
    returnType: void
    signature: void foreach(cell, tokens)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:996,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1003,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1006,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1008,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1010,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1013,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1014,1
    - Dst: is_member
      Src: /src/postgres/src/backend/libpq/hba.c:1016,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1019,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:1021,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1023,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:1026,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 4
    argNames:
    - dbname
    - role
    - roleid
    - tokens
    argTypes:
    - char*
    - char*
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 988
    functionDepth: 2
    functionLinenumber: 988
    functionLinenumberEnd: 1030
    functionName: check_db
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - is_member
    - strcmp
    - token_matches
    - lfirst
    - regexec_auth_token
    - token_has_regexp
    - token_is_keyword
    linkageType: ''
    returnType: bool
    signature: bool check_db(const char *dbname, const char *role, Oid roleid, List
      *tokens)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:996,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1003,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1006,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1008,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1010,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1013,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1014,1
    - Dst: is_member
      Src: /src/postgres/src/backend/libpq/hba.c:1016,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1019,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:1021,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1023,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:1026,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 994
    functionDepth: 2
    functionLinenumber: 994
    functionLinenumberEnd: 1028
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - is_member
    - strcmp
    - token_matches
    - lfirst
    - regexec_auth_token
    - token_has_regexp
    - token_is_keyword
    linkageType: ''
    returnType: void
    signature: void foreach(cell, tokens)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct sockaddr_in*
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1032
    functionDepth: 0
    functionLinenumber: 1032
    functionLinenumberEnd: 1036
    functionName: ipv4eq
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ipv4eq(struct sockaddr_in *a, struct sockaddr_in *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct sockaddr_in6*
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1038
    functionDepth: 0
    functionLinenumber: 1038
    functionLinenumberEnd: 1048
    functionName: ipv6eq
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ipv6eq(struct sockaddr_in6 *a, struct sockaddr_in6 *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:1058,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:1059,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/libpq/hba.c:1064,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/libpq/hba.c:1067,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - pattern
    - actual_hostname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1053
    functionDepth: 2
    functionLinenumber: 1053
    functionLinenumberEnd: 1068
    functionName: hostname_match
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool hostname_match(const char *pattern, const char *actual_hostname)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1090,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1102,1
    - Dst: hostname_match
      Src: /src/postgres/src/backend/libpq/hba.c:1106,1
    - Dst: getaddrinfo
      Src: /src/postgres/src/backend/libpq/hba.c:1114,1
    - Dst: ipv4eq
      Src: /src/postgres/src/backend/libpq/hba.c:1130,1
    - Dst: ipv6eq
      Src: /src/postgres/src/backend/libpq/hba.c:1139,1
    - Dst: freeaddrinfo
      Src: /src/postgres/src/backend/libpq/hba.c:1150,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/hba.c:1153,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 2
    argNames:
    - port
    - hostname
    argTypes:
    - Port*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1073
    functionDepth: 3
    functionLinenumber: 1073
    functionLinenumberEnd: 1159
    functionName: check_hostname
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - elog
    - getaddrinfo
    - pg_getnameinfo_all
    - hostname_match
    - ipv4eq
    - ipv6eq
    - pstrdup
    - freeaddrinfo
    linkageType: ''
    returnType: bool
    signature: bool check_hostname(Port *port, const char *hostname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_range_sockaddr
      Src: /src/postgres/src/backend/libpq/hba.c:1168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - raddr
    - addr
    - mask
    argTypes:
    - SockAddr*
    - struct sockaddr*
    - struct sockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1164
    functionDepth: 2
    functionLinenumber: 1164
    functionLinenumberEnd: 1173
    functionName: check_ip
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - pg_range_sockaddr
    linkageType: ''
    returnType: bool
    signature: bool check_ip(SockAddr *raddr, struct sockaddr *addr, struct sockaddr
      *mask)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_sockaddr_cidr_mask
      Src: /src/postgres/src/backend/libpq/hba.c:1192,1
    - Dst: check_ip
      Src: /src/postgres/src/backend/libpq/hba.c:1193,1
    - Dst: check_ip
      Src: /src/postgres/src/backend/libpq/hba.c:1198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - addr
    - netmask
    - cb_data
    argTypes:
    - struct sockaddr*
    - struct sockaddr*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1178
    functionDepth: 3
    functionLinenumber: 1178
    functionLinenumberEnd: 1200
    functionName: check_network_callback
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - pg_sockaddr_cidr_mask
    - check_ip
    linkageType: ''
    returnType: void
    signature: "void check_network_callback(struct sockaddr *addr, struct sockaddr
      *netmask,\n\t\t\t\t\t   void *cb_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_foreach_ifaddr
      Src: /src/postgres/src/backend/libpq/hba.c:1215,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1217,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - raddr
    - method
    argTypes:
    - SockAddr*
    - IPCompareMethod
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1205
    functionDepth: 4
    functionLinenumber: 1205
    functionLinenumberEnd: 1223
    functionName: check_same_host_or_net
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - pg_foreach_ifaddr
    linkageType: ''
    returnType: bool
    signature: bool check_same_host_or_net(SockAddr *raddr, IPCompareMethod method)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - optname
    - ','
    - validmethods
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1240
    functionDepth: 0
    functionLinenumber: 1240
    functionLinenumberEnd: 1244
    functionName: INVALID_AUTH_OPTION
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INVALID_AUTH_OPTION(optname, validmethods)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - methodval
    - ','
    - optname
    - ','
    - validmethods
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1254
    functionDepth: 0
    functionLinenumber: 1254
    functionLinenumberEnd: 1259
    functionName: REQUIRE_AUTH_OPTION
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REQUIRE_AUTH_OPTION(methodval, optname, validmethods)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - argvar
    - ','
    - argname
    - ','
    - authname
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1260
    functionDepth: 0
    functionLinenumber: 1260
    functionLinenumberEnd: 1274
    functionName: MANDATORY_AUTH_ARG
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MANDATORY_AUTH_ARG(argvar, argname, authname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1284
    functionDepth: 0
    functionLinenumber: 1284
    functionLinenumberEnd: 1296
    functionName: IDENT_FIELD_ABSENT
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IDENT_FIELD_ABSENT(field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tokens
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1297
    functionDepth: 0
    functionLinenumber: 1297
    functionLinenumberEnd: 1309
    functionName: IDENT_MULTI_VALUE
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IDENT_MULTI_VALUE(tokens)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/hba.c:1341,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1342,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:1347,1
    - Dst: list_head
      Src: /src/postgres/src/backend/libpq/hba.c:1348,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1349,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1352,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1353,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1354,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1355,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1356,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:1361,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1362,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1366,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1367,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1368,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1369,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1370,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1380,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1381,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1382,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1383,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1384,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1389,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1390,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1391,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1392,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1401,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1402,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1403,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1404,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1421,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1422,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1423,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1425,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1427,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1432,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1435,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1436,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1437,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1438,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1444,1
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1447,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1447,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1450,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:1453,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1457,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1460,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1461,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1462,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1463,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1469,1
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1472,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1472,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1475,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:1478,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1484,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1487,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1488,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1489,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1490,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1495,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1498,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1499,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1500,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1501,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1502,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:1507,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1509,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1513,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1518,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1529,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/hba.c:1532,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1546,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:1549,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1557,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1558,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1559,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:1560,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1561,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1563,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:1564,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1566,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1570,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1577,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1578,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1579,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1581,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1583,1
    - Dst: pg_sockaddr_cidr_mask
      Src: /src/postgres/src/backend/libpq/hba.c:1588,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1591,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1592,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1593,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1595,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1597,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:1602,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:1607,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1608,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1611,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1612,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1613,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1614,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1615,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1620,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1623,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1624,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1625,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1626,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:1631,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1633,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1637,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1638,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1639,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:1640,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1641,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1643,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:1644,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1646,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:1650,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1653,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1657,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1658,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1659,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1660,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1670,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1673,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1674,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1675,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1676,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1681,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1684,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1685,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1686,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1687,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1688,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:1693,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1696,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1698,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1700,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1702,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1704,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1710,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1716,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1718,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1720,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1722,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1728,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1734,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1740,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1746,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1750,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1751,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1752,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1754,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1756,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 208
    argCount: 2
    argNames:
    - tok_line
    - elevel
    argTypes:
    - TokenizedAuthLine*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1323
    functionDepth: 3
    functionLinenumber: 1323
    functionLinenumberEnd: 1759
    functionName: parse_hba_line
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - strchr
    - errcontext
    - pstrdup
    - errhint
    - list_head
    - pg_freeaddrinfo_all
    - regcomp_auth_token
    - memcpy
    - Assert
    - linitial
    - pg_sockaddr_cidr_mask
    - pfree
    - lnext
    - errmsg
    - palloc0_object
    - psprintf
    - lappend
    - ereport
    - lfirst
    - token_is_keyword
    - gai_strerror
    - pg_getaddrinfo_all
    - copy_auth_token
    linkageType: ''
    returnType: HbaLine
    signature: 'HbaLine *

      parse_hba_line(TokenizedAuthLine *tok_line, int elevel)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1447,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1447,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1450,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:1453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1445
    functionDepth: 3
    functionLinenumber: 1445
    functionLinenumberEnd: 1454
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - lfirst
    - regcomp_auth_token
    - lappend
    - copy_auth_token
    linkageType: ''
    returnType: void
    signature: void foreach(tokencell, tokens)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1472,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1472,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1475,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:1478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1470
    functionDepth: 3
    functionLinenumber: 1470
    functionLinenumberEnd: 1479
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - lfirst
    - regcomp_auth_token
    - lappend
    - copy_auth_token
    linkageType: ''
    returnType: void
    signature: void foreach(tokencell, tokens)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1857,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1859,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/hba.c:1860,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1866,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1867,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1868,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1869,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1871,1
    - Dst: parse_hba_auth_opt
      Src: /src/postgres/src/backend/libpq/hba.c:1877,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:1880,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1853
    functionDepth: 2
    functionLinenumber: 1853
    functionLinenumberEnd: 1881
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - parse_hba_auth_opt
    - errcode
    - strchr
    - errcontext
    - psprintf
    - pstrdup
    - ereport
    - pfree
    - lfirst
    - errmsg
    linkageType: ''
    returnType: void
    signature: void foreach(tokencell, tokens)
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2010,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2018,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2018,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2019,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2021,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2025,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2026,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2027,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2028,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2034,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2038,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2042,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2043,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2044,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2045,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2055,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2056,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2057,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2058,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2063,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2067,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2068,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2069,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2070,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2076,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2080,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2086,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2087,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2088,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2089,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2094,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2096,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2097,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2099,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2101,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2102,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2107,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2114,1
    - Dst: ldap_url_parse
      Src: /src/postgres/src/backend/libpq/hba.c:2116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2119,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2120,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2121,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/hba.c:2121,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:2122,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/hba.c:2123,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2127,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2130,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2131,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2132,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:2133,1
    - Dst: ldap_free_urldesc
      Src: /src/postgres/src/backend/libpq/hba.c:2135,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2140,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2142,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2145,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2148,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2151,1
    - Dst: ldap_free_urldesc
      Src: /src/postgres/src/backend/libpq/hba.c:2152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2154,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2155,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2156,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2160,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2162,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2163,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2168,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2170,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2171,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2171,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2172,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2174,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2175,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2177,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2179,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2181,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2182,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2184,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2186,1
    - Dst: atoi
      Src: /src/postgres/src/backend/libpq/hba.c:2187,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2190,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2191,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2192,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2193,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:2195,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2199,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2201,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2202,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2204,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2206,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2207,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2209,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2211,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2212,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2214,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2216,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2217,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2219,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2221,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2222,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2224,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2226,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2227,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2229,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2231,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2232,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2234,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2238,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2238,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2239,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2241,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2245,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2245,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2246,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2251,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2254,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2254,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2255,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2260,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2263,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2263,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2264,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2269,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2271,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2272,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2274,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2276,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2277,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2279,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2281,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2282,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/libpq/hba.c:2284,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:2284,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:2286,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2288,1
    - Dst: valid_oauth_hba_option_name
      Src: /src/postgres/src/backend/libpq/hba.c:2297,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2299,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2300,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2301,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2302,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:2307,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2307,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:2308,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2308,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2310,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2312,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2313,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2320,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2321,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2322,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2324,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:2326,1
    CyclomaticComplexity: 63
    EdgeCount: 63
    ICount: 195
    argCount: 5
    argNames:
    - name
    - val
    - hbaline
    - elevel
    - err_msg
    argTypes:
    - char*
    - char*
    - HbaLine*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2331
      start: 1999
    functionDepth: 2
    functionLinenumber: 1999
    functionLinenumberEnd: 2331
    functionName: parse_hba_auth_opt
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 1
    functionsReached:
    - strcmp
    - errcode
    - errcontext
    - REQUIRE_AUTH_OPTION
    - pstrdup
    - ereport
    - psprintf
    - lappend
    - atoi
    - gettext_noop
    - INVALID_AUTH_OPTION
    - strncmp
    - errmsg
    - ldap_url_parse
    - ldap_err2string
    - strlen
    - ldap_free_urldesc
    - valid_oauth_hba_option_name
    linkageType: ''
    returnType: bool
    signature: "bool parse_hba_auth_opt(char *name, char *val, HbaLine *hbaline,\n\t\t\t\t
      \  int elevel, char **err_msg)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/libpq/hba.c:2345,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2349,1
    - Dst: check_hostname
      Src: /src/postgres/src/backend/libpq/hba.c:2395,1
    - Dst: check_ip
      Src: /src/postgres/src/backend/libpq/hba.c:2401,1
    - Dst: check_same_host_or_net
      Src: /src/postgres/src/backend/libpq/hba.c:2411,1
    - Dst: check_db
      Src: /src/postgres/src/backend/libpq/hba.c:2422,1
    - Dst: check_role
      Src: /src/postgres/src/backend/libpq/hba.c:2426,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/hba.c:2435,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 53
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2438
      start: 2337
    functionDepth: 5
    functionLinenumber: 2337
    functionLinenumberEnd: 2438
    functionName: check_hba
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - get_role_oid
    - check_db
    - lfirst
    - check_same_host_or_net
    - check_ip
    - check_hostname
    - check_role
    linkageType: ''
    returnType: void
    signature: void check_hba(Port *port)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2349,1
    - Dst: check_hostname
      Src: /src/postgres/src/backend/libpq/hba.c:2395,1
    - Dst: check_ip
      Src: /src/postgres/src/backend/libpq/hba.c:2401,1
    - Dst: check_same_host_or_net
      Src: /src/postgres/src/backend/libpq/hba.c:2411,1
    - Dst: check_db
      Src: /src/postgres/src/backend/libpq/hba.c:2422,1
    - Dst: check_role
      Src: /src/postgres/src/backend/libpq/hba.c:2426,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2347
    functionDepth: 5
    functionLinenumber: 2347
    functionLinenumberEnd: 2432
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - check_db
    - lfirst
    - check_same_host_or_net
    - check_ip
    - check_hostname
    - check_role
    linkageType: ''
    returnType: void
    signature: void foreach(line, parsed_hba_lines)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:2462,1
    - Dst: tokenize_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:2469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:2472,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/hba.c:2473,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:2476,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2479,1
    - Dst: parse_hba_line
      Src: /src/postgres/src/backend/libpq/hba.c:2489,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:2502,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2512,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2513,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2514,1
    - Dst: free_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:2520,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:2521,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:2529,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:2535,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2540
      start: 2451
    functionDepth: 5
    functionLinenumber: 2451
    functionLinenumberEnd: 2540
    functionName: load_hba
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - parse_hba_line
    - lappend
    - tokenize_auth_file
    - open_auth_file
    - ereport
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - lfirst
    - errmsg
    - AllocSetContextCreate
    - free_auth_file
    linkageType: ''
    returnType: bool
    signature: bool load_hba(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2479,1
    - Dst: parse_hba_line
      Src: /src/postgres/src/backend/libpq/hba.c:2489,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:2502,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2503
      start: 2477
    functionDepth: 4
    functionLinenumber: 2477
    functionLinenumberEnd: 2503
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - parse_hba_line
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(line, hba_lines)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:2568,1
    - Dst: list_head
      Src: /src/postgres/src/backend/libpq/hba.c:2569,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/hba.c:2571,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2575,1
    - Dst: IDENT_MULTI_VALUE
      Src: /src/postgres/src/backend/libpq/hba.c:2576,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:2577,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2578,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:2581,1
    - Dst: IDENT_FIELD_ABSENT
      Src: /src/postgres/src/backend/libpq/hba.c:2582,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2583,1
    - Dst: IDENT_MULTI_VALUE
      Src: /src/postgres/src/backend/libpq/hba.c:2584,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:2585,1
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2588,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:2591,1
    - Dst: IDENT_FIELD_ABSENT
      Src: /src/postgres/src/backend/libpq/hba.c:2592,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2593,1
    - Dst: IDENT_MULTI_VALUE
      Src: /src/postgres/src/backend/libpq/hba.c:2594,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:2595,1
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2596,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2602,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2609,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 2
    argNames:
    - tok_line
    - elevel
    argTypes:
    - TokenizedAuthLine*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2617
      start: 2557
    functionDepth: 3
    functionLinenumber: 2557
    functionLinenumberEnd: 2617
    functionName: parse_ident_line
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - IDENT_FIELD_ABSENT
    - regcomp_auth_token
    - Assert
    - linitial
    - IDENT_MULTI_VALUE
    - pstrdup
    - lnext
    - list_head
    - lfirst
    - copy_auth_token
    linkageType: ''
    returnType: IdentLine
    signature: 'IdentLine *

      parse_ident_line(TokenizedAuthLine *tok_line, int elevel)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2635,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/libpq/hba.c:2640,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:2643,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2656,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/libpq/hba.c:2664,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2665,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2666,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2667,1
    - Dst: token_is_member_check
      Src: /src/postgres/src/backend/libpq/hba.c:2679,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:2680,1
    - Dst: strstr
      Src: /src/postgres/src/backend/libpq/hba.c:2681,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2692,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2693,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2694,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/hba.c:2716,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:2716,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:2719,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:2720,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/libpq/hba.c:2721,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:2723,1
    - Dst: strstr
      Src: /src/postgres/src/backend/libpq/hba.c:2725,1
    - Dst: make_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2732,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:2734,1
    - Dst: check_role
      Src: /src/postgres/src/backend/libpq/hba.c:2742,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/libpq/hba.c:2743,1
    - Dst: free_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2747,1
    - Dst: token_matches_insensitive
      Src: /src/postgres/src/backend/libpq/hba.c:2759,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:2765,1
    - Dst: check_role
      Src: /src/postgres/src/backend/libpq/hba.c:2770,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/libpq/hba.c:2771,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 7
    argNames:
    - identLine
    - usermap_name
    - pg_user
    - system_user
    - case_insensitive
    - found_p
    - error_p
    argTypes:
    - IdentLine*
    - char*
    - char*
    - char*
    - bool
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2774
      start: 2625
    functionDepth: 2
    functionLinenumber: 2625
    functionLinenumberEnd: 2774
    functionName: check_ident_usermap
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - token_matches
    - strstr
    - free_auth_token
    - get_role_oid
    - memcpy
    - make_auth_token
    - pg_regerror
    - pfree
    - errmsg
    - token_is_member_check
    - check_role
    - ereport
    - regexec_auth_token
    - strlen
    - token_has_regexp
    - list_make1
    - token_matches_insensitive
    - palloc
    - strcpy
    linkageType: ''
    returnType: void
    signature: "void check_ident_usermap(IdentLine *identLine, const char *usermap_name,\n\t\t\t\t\tconst
      char *pg_user, const char *system_user,\n\t\t\t\t\tbool case_insensitive, bool
      *found_p, bool *error_p)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/libpq/hba.c:2803,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2808,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2811,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2812,1
    - Dst: check_ident_usermap
      Src: /src/postgres/src/backend/libpq/hba.c:2822,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2822,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2831,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2832,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 4
    argNames:
    - usermap_name
    - pg_user
    - system_user
    - case_insensitive
    argTypes:
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2836
      start: 2790
    functionDepth: 3
    functionLinenumber: 2790
    functionLinenumberEnd: 2836
    functionName: check_usermap
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 5
    functionsReached:
    - pg_strcasecmp
    - strcmp
    - ereport
    - check_ident_usermap
    - lfirst
    - errmsg
    linkageType: ''
    returnType: int
    signature: "int check_usermap(const char *usermap_name,\n\t\t\t  const char *pg_user,\n\t\t\t
      \ const char *system_user,\n\t\t\t  bool case_insensitive)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_ident_usermap
      Src: /src/postgres/src/backend/libpq/hba.c:2822,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2822,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2827
      start: 2820
    functionDepth: 3
    functionLinenumber: 2820
    functionLinenumberEnd: 2827
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - check_ident_usermap
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(line_cell, parsed_ident_lines)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:2858,1
    - Dst: tokenize_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:2865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:2868,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/hba.c:2869,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:2872,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2875,1
    - Dst: parse_ident_line
      Src: /src/postgres/src/backend/libpq/hba.c:2884,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:2897,1
    - Dst: free_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:2901,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:2902,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:2910,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:2916,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2922
      start: 2845
    functionDepth: 5
    functionLinenumber: 2845
    functionLinenumberEnd: 2922
    functionName: load_ident
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - parse_ident_line
    - Assert
    - lappend
    - tokenize_auth_file
    - open_auth_file
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - lfirst
    - AllocSetContextCreate
    - free_auth_file
    linkageType: ''
    returnType: bool
    signature: bool load_ident(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2875,1
    - Dst: parse_ident_line
      Src: /src/postgres/src/backend/libpq/hba.c:2884,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:2897,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2898
      start: 2873
    functionDepth: 4
    functionLinenumber: 2873
    functionLinenumberEnd: 2898
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 319
    functionsReached:
    - parse_ident_line
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(line_cell, ident_lines)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_hba
      Src: /src/postgres/src/backend/libpq/hba.c:2937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2938
      start: 2934
    functionDepth: 6
    functionLinenumber: 2934
    functionLinenumberEnd: 2938
    functionName: hba_getauthmethod
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 1
    functionsReached:
    - check_hba
    linkageType: ''
    returnType: void
    signature: void hba_getauthmethod(Port *port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - auth_method
    argTypes:
    - UserAuth
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2951
      start: 2947
    functionDepth: 0
    functionLinenumber: 2947
    functionLinenumberEnd: 2951
    functionName: hba_authname
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      hba_authname(UserAuth auth_method)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:99,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - port
    - buf
    argTypes:
    - Port*
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: oauth_get_mechanisms
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void oauth_get_mechanisms(Port *port, StringInfo buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:113,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:114,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:115,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:116,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:121,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:126,1
    - Dst: load_validator_library
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - port
    - selected_mech
    - shadow_pass
    argTypes:
    - Port*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 133
    functionName: oauth_init
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - strcmp
    - errcode
    - Assert
    - load_validator_library
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: 'void *

      oauth_init(Port *port, const char *selected_mech, const char *shadow_pass)'
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:166,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:177,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:178,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:179,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:180,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:181,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:182,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:183,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:184,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:185,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:201,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:202,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:203,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:212,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:223,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:228,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:243,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:251,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:252,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:253,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:254,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:255,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:262,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:263,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:264,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:271,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:272,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:273,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:277,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:278,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:279,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:284,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:285,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:286,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:287,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:288,1
    - Dst: parse_kvpairs_for_auth
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:291,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:293,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:294,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:295,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:296,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:300,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:301,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:302,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:303,1
    - Dst: check_validator_hba_options
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:309,1
    - Dst: generate_error_response
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:322,1
    - Dst: validate
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:327,1
    - Dst: generate_error_response
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:329,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:341,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 79
    argCount: 6
    argNames:
    - opaq
    - input
    - inputlen
    - output
    - outputlen
    - logdetail
    argTypes:
    - void*
    - char*
    - int
    - char**
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 344
    functionName: oauth_exchange
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - elog
    - parse_kvpairs_for_auth
    - explicit_bzero
    - errcode
    - Assert
    - check_validator_hba_options
    - pstrdup
    - ereport
    - generate_error_response
    - strlen
    - errmsg
    - errdetail
    - sanitize_char
    - validate
    linkageType: ''
    returnType: int
    signature: "int oauth_exchange(void *opaq, const char *input, int inputlen,\n\t\t\t
      \  char **output, int *outputlen, const char **logdetail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:360,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 364
    functionName: sanitize_char
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 4
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      sanitize_char(char c)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:387,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:388,1
    - Dst: strspn
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:390,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:392,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:393,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:394,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:395,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:418,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:419,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:420,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:421,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - key
    - val
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 424
    functionName: validate_kvpair
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - strspn
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: void validate_kvpair(const char *key, const char *val)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:463,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:464,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:465,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:466,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:479,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:481,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:482,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:483,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:484,1
    - Dst: validate_kvpair
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:490,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:492,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:495,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:496,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:497,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:498,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:515,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:516,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:517,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:518,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:520,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - input
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 430
    functionDepth: 2
    functionLinenumber: 430
    functionLinenumberEnd: 522
    functionName: parse_kvpairs_for_auth
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 1
    functionsReached:
    - strcmp
    - errcode
    - strchr
    - ereport
    - validate_kvpair
    - pg_unreachable
    - errmsg
    - errdetail
    linkageType: ''
    returnType: char
    signature: 'char *

      parse_kvpairs_for_auth(char **input)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:542,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:543,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:544,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:545,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:551,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:552,1
    - Dst: strstr
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:553,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:554,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:556,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:563,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:565,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:566,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:567,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:569,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:570,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:572,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - output
    - outputlen
    argTypes:
    - struct oauth_ctx*
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 529
    functionDepth: 3
    functionLinenumber: 529
    functionLinenumberEnd: 576
    functionName: generate_error_response
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 1
    functionsReached:
    - errdetail_log
    - errcode
    - pfree
    - escape_json
    - appendStringInfoString
    - initStringInfo
    - ereport
    - strstr
    - errmsg
    linkageType: ''
    returnType: void
    signature: void generate_error_response(struct oauth_ctx *ctx, char **output,
      int *outputlen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:611,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:613,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:615,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:615,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:617,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:618,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:619,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:620,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:625,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:634,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:635,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:636,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:637,1
    - Dst: strspn
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:645,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:656,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:657,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:658,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:659,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - header
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 600
    functionDepth: 2
    functionLinenumber: 600
    functionLinenumberEnd: 664
    functionName: validate_token_format
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - errdetail_log
    - errcode
    - Assert
    - ereport
    - pg_strncasecmp
    - strspn
    - strlen
    - errmsg
    linkageType: ''
    returnType: char
    signature: 'char *

      validate_token_format(const char *header)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: validate_token_format
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:680,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:688,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:689,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:690,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:693,1
    - Dst: validate_cb
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:694,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:697,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:699,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:700,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:711,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:718,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:739,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:746,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:757,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:758,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 3
    argNames:
    - port
    - auth
    - logdetail
    argTypes:
    - Port*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 671
    functionDepth: 4
    functionLinenumber: 671
    functionLinenumberEnd: 761
    functionName: validate
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 15
    functionsReached:
    - palloc0_object
    - errdetail_log
    - validate_token_format
    - check_usermap
    - _
    - errcode
    - pfree
    - ereport
    - validate_cb
    - set_authn_id
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool validate(Port *port, const char *auth, const char **logdetail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:782,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:785,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:793,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:794,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:798,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:806,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:807,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:809,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:817,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:818,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:822,1
    - Dst: startup_cb
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:826,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:829,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:832,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - libname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 833
    functionName: load_validator_library
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - startup_cb
    - Assert
    - load_external_function
    - ereport
    - errmsg
    - errdetail
    - MemoryContextRegisterResetCallback
    linkageType: ''
    returnType: void
    signature: void load_validator_library(const char *libname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shutdown_cb
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 847
    functionName: shutdown_validator_library
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - shutdown_cb
    linkageType: ''
    returnType: void
    signature: void shutdown_validator_library(void *arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:868,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:869,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:870,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:872,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:874,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:880,1
    - Dst: SplitDirectoriesString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:882,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:885,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:886,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:887,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:889,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:898,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:898,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:902,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:903,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:904,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:906,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:908,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:915,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:919,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:920,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:921,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:923,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:925,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:929,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:930,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 3
    argNames:
    - hbaline
    - elevel
    - err_msg
    argTypes:
    - HbaLine*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 856
    functionDepth: 2
    functionLinenumber: 856
    functionLinenumberEnd: 933
    functionName: check_oauth_validator
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - pfree
    - errcontext
    - psprintf
    - pstrdup
    - ereport
    - linitial
    - list_free_deep
    - errmsg
    - SplitDirectoriesString
    linkageType: ''
    returnType: bool
    signature: bool check_oauth_validator(HbaLine *hbaline, int elevel, char **err_msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:915,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 913
    functionDepth: 0
    functionLinenumber: 913
    functionLinenumberEnd: 917
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 9
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, allowed, elemlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:958,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:962,1
    - Dst: valid_oauth_hba_option_name
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:966,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:972,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:973,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:976,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:982,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:982,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:985,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - state
    - num
    - opts
    argTypes:
    - ValidatorModuleState*
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 950
    functionDepth: 1
    functionLinenumber: 950
    functionLinenumberEnd: 998
    functionName: RegisterOAuthHBAOptions
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 1
    functionsReached:
    - Assert
    - errcontext
    - lappend
    - ereport
    - pstrdup
    - MemoryContextSwitchTo
    - errmsg
    - valid_oauth_hba_option_name
    linkageType: ''
    returnType: void
    signature: "void RegisterOAuthHBAOptions(ValidatorModuleState *state, int num,\n\t\t\t\t\t\tconst
      char *opts[])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1004
    functionDepth: 0
    functionLinenumber: 1004
    functionLinenumberEnd: 1025
    functionName: valid_oauth_hba_option_name
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 2
    functionsReached:
    - strspn
    linkageType: ''
    returnType: bool
    signature: bool valid_oauth_hba_option_name(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1043,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1064,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1066,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1066,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1068,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1069,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1070,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1073,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1075,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1076,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - port
    - logdetail
    argTypes:
    - Port*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1085
    functionName: check_validator_hba_options
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 1
    functionsReached:
    - _
    - strcmp
    - errcode
    - errcontext
    - psprintf
    - ereport
    - errhint
    - errmsg
    - errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_validator_hba_options(Port *port, const char **logdetail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1043,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1064,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1066,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1066,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1068,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1069,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1070,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1073,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1075,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1076,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - oauth_opt_keys
    argTypes:
    - hba
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1036
    functionDepth: 2
    functionLinenumber: 1036
    functionLinenumberEnd: 1081
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 9
    functionsReached:
    - _
    - strcmp
    - errcode
    - errcontext
    - psprintf
    - ereport
    - errhint
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, key, hba->oauth_opt_keys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1043,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1041
    functionDepth: 0
    functionLinenumber: 1041
    functionLinenumberEnd: 1048
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 9
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, optname, ValidatorOptions)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1118,1
    - Dst: list_length
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1118,1
    - Dst: list_length
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1118,1
    - Dst: forboth
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1120,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1122,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1123,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:1125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - state
    - optname
    argTypes:
    - ValidatorModuleState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1091
    functionDepth: 1
    functionLinenumber: 1091
    functionLinenumberEnd: 1136
    functionName: GetOAuthHBAOption
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 2
    functionsReached:
    - strcmp
    - Assert
    - lfirst
    - list_length
    - forboth
    linkageType: ''
    returnType: char
    signature: 'char *

      GetOAuthHBAOption(const ValidatorModuleState *state, const char *optname)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:98,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:98,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:117,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - pstmt
    argTypes:
    - PlannedStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 122
    functionName: CommandIsReadOnly
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsA
    - elog
    linkageType: ''
    returnType: bool
    signature: bool CommandIsReadOnly(PlannedStmt *pstmt)
  - BBCount: 124
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:132,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:390,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:396,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:397,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 157
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 400
    functionName: ClassifyUtilityCommandAsReadOnly
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - elog
    - nodeTag
    linkageType: ''
    returnType: int
    signature: int ClassifyUtilityCommandAsReadOnly(Node *parsetree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cmdname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 417
    functionName: PreventCommandIfReadOnly
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 10
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void PreventCommandIfReadOnly(const char *cmdname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/tcop/utility.c:429,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:430,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cmdname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 435
    functionName: PreventCommandIfParallelMode
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - IsInParallelMode
    - errcode
    linkageType: ''
    returnType: void
    signature: void PreventCommandIfParallelMode(const char *cmdname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/tcop/utility.c:448,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:449,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:450,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cmdname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 454
    functionName: PreventCommandDuringRecovery
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - RecoveryInProgress
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void PreventCommandDuringRecovery(const char *cmdname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: InSecurityRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:466,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:467,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:468,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cmdname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 472
    functionName: CheckRestrictedOperation
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - ereport
    - InSecurityRestrictedOperation
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void CheckRestrictedOperation(const char *cmdname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:513,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:514,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:516,1
    - Dst: standard_ProcessUtility
      Src: /src/postgres/src/backend/tcop/utility.c:528,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 8
    argNames:
    - pstmt
    - queryString
    - readOnlyTree
    - context
    - params
    - queryEnv
    - dest
    - qc
    argTypes:
    - PlannedStmt*
    - char*
    - bool
    - ProcessUtilityContext
    - ParamListInfo
    - QueryEnvironment*
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 531
    functionName: ProcessUtility
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 2
    functionsReached:
    - Assert
    - standard_ProcessUtility
    - IsA
    linkageType: ''
    returnType: void
    signature: "void ProcessUtility(PlannedStmt *pstmt,\n\t\t\t   const char *queryString,\n\t\t\t
      \  bool readOnlyTree,\n\t\t\t   ProcessUtilityContext context,\n\t\t\t   ParamListInfo
      params,\n\t\t\t   QueryEnvironment *queryEnv,\n\t\t\t   DestReceiver *dest,\n\t\t\t
      \  QueryCompletion *qc)"
  - BBCount: 85
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:559,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/tcop/utility.c:564,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/tcop/utility.c:575,1
    - Dst: ClassifyUtilityCommandAsReadOnly
      Src: /src/postgres/src/backend/tcop/utility.c:579,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/tcop/utility.c:581,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:583,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/tcop/utility.c:586,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/backend/tcop/utility.c:586,1
    - Dst: PreventCommandIfParallelMode
      Src: /src/postgres/src/backend/tcop/utility.c:588,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/backend/tcop/utility.c:588,1
    - Dst: PreventCommandDuringRecovery
      Src: /src/postgres/src/backend/tcop/utility.c:590,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/backend/tcop/utility.c:590,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/tcop/utility.c:593,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:597,1
    - Dst: BeginTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:617,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/utility.c:618,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/utility.c:620,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/utility.c:622,1
    - Dst: SetPGVariable
      Src: /src/postgres/src/backend/tcop/utility.c:623,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/tcop/utility.c:624,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/utility.c:626,1
    - Dst: SetPGVariable
      Src: /src/postgres/src/backend/tcop/utility.c:627,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/tcop/utility.c:628,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/utility.c:630,1
    - Dst: SetPGVariable
      Src: /src/postgres/src/backend/tcop/utility.c:631,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/tcop/utility.c:632,1
    - Dst: EndTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:639,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/utility.c:643,1
    - Dst: PrepareTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:648,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/utility.c:652,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:657,1
    - Dst: FinishPreparedTransaction
      Src: /src/postgres/src/backend/tcop/utility.c:658,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:662,1
    - Dst: FinishPreparedTransaction
      Src: /src/postgres/src/backend/tcop/utility.c:663,1
    - Dst: UserAbortTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:667,1
    - Dst: RequireTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:671,1
    - Dst: DefineSavepoint
      Src: /src/postgres/src/backend/tcop/utility.c:672,1
    - Dst: RequireTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:676,1
    - Dst: ReleaseSavepoint
      Src: /src/postgres/src/backend/tcop/utility.c:677,1
    - Dst: RequireTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:681,1
    - Dst: RollbackToSavepoint
      Src: /src/postgres/src/backend/tcop/utility.c:682,1
    - Dst: PerformCursorOpen
      Src: /src/postgres/src/backend/tcop/utility.c:697,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:705,1
    - Dst: PerformPortalClose
      Src: /src/postgres/src/backend/tcop/utility.c:706,1
    - Dst: PerformPortalFetch
      Src: /src/postgres/src/backend/tcop/utility.c:711,1
    - Dst: ExecuteDoStmt
      Src: /src/postgres/src/backend/tcop/utility.c:715,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:720,1
    - Dst: CreateTableSpace
      Src: /src/postgres/src/backend/tcop/utility.c:721,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:726,1
    - Dst: DropTableSpace
      Src: /src/postgres/src/backend/tcop/utility.c:727,1
    - Dst: AlterTableSpaceOptions
      Src: /src/postgres/src/backend/tcop/utility.c:732,1
    - Dst: ExecuteTruncate
      Src: /src/postgres/src/backend/tcop/utility.c:736,1
    - Dst: DoCopy
      Src: /src/postgres/src/backend/tcop/utility.c:743,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/utility.c:747,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:752,1
    - Dst: PrepareQuery
      Src: /src/postgres/src/backend/tcop/utility.c:753,1
    - Dst: ExecuteQuery
      Src: /src/postgres/src/backend/tcop/utility.c:758,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:765,1
    - Dst: DeallocateQuery
      Src: /src/postgres/src/backend/tcop/utility.c:766,1
    - Dst: GrantRole
      Src: /src/postgres/src/backend/tcop/utility.c:771,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:776,1
    - Dst: createdb
      Src: /src/postgres/src/backend/tcop/utility.c:777,1
    - Dst: AlterDatabase
      Src: /src/postgres/src/backend/tcop/utility.c:782,1
    - Dst: AlterDatabaseRefreshColl
      Src: /src/postgres/src/backend/tcop/utility.c:787,1
    - Dst: AlterDatabaseSet
      Src: /src/postgres/src/backend/tcop/utility.c:792,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:797,1
    - Dst: DropDatabase
      Src: /src/postgres/src/backend/tcop/utility.c:798,1
    - Dst: Async_Notify
      Src: /src/postgres/src/backend/tcop/utility.c:806,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:814,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:826,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:827,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:829,1
    - Dst: Async_Listen
      Src: /src/postgres/src/backend/tcop/utility.c:832,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:840,1
    - Dst: Async_Unlisten
      Src: /src/postgres/src/backend/tcop/utility.c:842,1
    - Dst: Async_UnlistenAll
      Src: /src/postgres/src/backend/tcop/utility.c:844,1
    - Dst: closeAllVfds
      Src: /src/postgres/src/backend/tcop/utility.c:852,1
    - Dst: load_file
      Src: /src/postgres/src/backend/tcop/utility.c:854,1
    - Dst: superuser
      Src: /src/postgres/src/backend/tcop/utility.c:854,1
    - Dst: ExecuteCallStmt
      Src: /src/postgres/src/backend/tcop/utility.c:859,1
    - Dst: castNode
      Src: /src/postgres/src/backend/tcop/utility.c:859,1
    - Dst: ExecVacuum
      Src: /src/postgres/src/backend/tcop/utility.c:863,1
    - Dst: ExecRepack
      Src: /src/postgres/src/backend/tcop/utility.c:867,1
    - Dst: ExplainQuery
      Src: /src/postgres/src/backend/tcop/utility.c:871,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:875,1
    - Dst: AlterSystemSetConfigFile
      Src: /src/postgres/src/backend/tcop/utility.c:876,1
    - Dst: ExecSetVariableStmt
      Src: /src/postgres/src/backend/tcop/utility.c:880,1
    - Dst: GetPGVariable
      Src: /src/postgres/src/backend/tcop/utility.c:887,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:893,1
    - Dst: DiscardCommand
      Src: /src/postgres/src/backend/tcop/utility.c:894,1
    - Dst: CreateEventTrigger
      Src: /src/postgres/src/backend/tcop/utility.c:899,1
    - Dst: AlterEventTrigger
      Src: /src/postgres/src/backend/tcop/utility.c:904,1
    - Dst: CreateRole
      Src: /src/postgres/src/backend/tcop/utility.c:912,1
    - Dst: AlterRole
      Src: /src/postgres/src/backend/tcop/utility.c:917,1
    - Dst: AlterRoleSet
      Src: /src/postgres/src/backend/tcop/utility.c:922,1
    - Dst: DropRole
      Src: /src/postgres/src/backend/tcop/utility.c:927,1
    - Dst: ReassignOwnedObjects
      Src: /src/postgres/src/backend/tcop/utility.c:932,1
    - Dst: RequireTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:941,1
    - Dst: LockTableCommand
      Src: /src/postgres/src/backend/tcop/utility.c:942,1
    - Dst: WarnNoTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:946,1
    - Dst: AfterTriggerSetState
      Src: /src/postgres/src/backend/tcop/utility.c:947,1
    - Dst: ExecCheckpoint
      Src: /src/postgres/src/backend/tcop/utility.c:951,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:963,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:964,1
    - Dst: ExecuteGrantStmt
      Src: /src/postgres/src/backend/tcop/utility.c:968,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:976,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:977,1
    - Dst: ExecDropStmt
      Src: /src/postgres/src/backend/tcop/utility.c:981,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:989,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:990,1
    - Dst: ExecRenameStmt
      Src: /src/postgres/src/backend/tcop/utility.c:994,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1002,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1003,1
    - Dst: ExecAlterObjectDependsStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1007,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1015,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1016,1
    - Dst: ExecAlterObjectSchemaStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1020,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1028,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1029,1
    - Dst: ExecAlterOwnerStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1033,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1041,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1042,1
    - Dst: CommentObject
      Src: /src/postgres/src/backend/tcop/utility.c:1046,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1054,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1055,1
    - Dst: ExecSecLabelStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1059,1
    - Dst: ExecWaitStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1065,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1072,1
    - Dst: free_parsestate
      Src: /src/postgres/src/backend/tcop/utility.c:1078,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/utility.c:1085,1
    CyclomaticComplexity: 89
    EdgeCount: 89
    ICount: 276
    argCount: 8
    argNames:
    - pstmt
    - queryString
    - readOnlyTree
    - context
    - params
    - queryEnv
    - dest
    - qc
    argTypes:
    - PlannedStmt*
    - char*
    - bool
    - ProcessUtilityContext
    - ParamListInfo
    - QueryEnvironment*
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 547
    functionDepth: 4
    functionLinenumber: 547
    functionLinenumberEnd: 1086
    functionName: standard_ProcessUtility
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 2
    functionsReached:
    - make_parsestate
    - ExecuteTruncate
    - ExecAlterOwnerStmt
    - ExecuteDoStmt
    - ExplainQuery
    - AlterRoleSet
    - AlterDatabase
    - createdb
    - ExecAlterObjectSchemaStmt
    - list_make1
    - ExecSecLabelStmt
    - AlterRole
    - ClassifyUtilityCommandAsReadOnly
    - Async_Unlisten
    - CreateTableSpace
    - DropRole
    - GrantRole
    - copyObject
    - BeginTransactionBlock
    - DefineSavepoint
    - GetCommandTagName
    - DropTableSpace
    - nodeTag
    - load_file
    - errmsg
    - UserAbortTransactionBlock
    - ereport
    - RollbackToSavepoint
    - PreventInTransactionBlock
    - PerformCursorOpen
    - CommentObject
    - PreventCommandIfReadOnly
    - lfirst
    - ExecuteQuery
    - SetQueryCompletion
    - ExecRenameStmt
    - DoCopy
    - ExecWaitStmt
    - strcmp
    - errcode
    - AlterEventTrigger
    - Async_Notify
    - ExecDropStmt
    - ExecuteGrantStmt
    - IsInParallelMode
    - Async_Listen
    - CreateCommandTag
    - SetPGVariable
    - ReleaseSavepoint
    - PerformPortalClose
    - EventTriggerSupportsObjectType
    - PreventCommandIfParallelMode
    - closeAllVfds
    - superuser
    - AlterDatabaseRefreshColl
    - CreateRole
    - PerformPortalFetch
    - ExecRepack
    - RequireTransactionBlock
    - ExecCheckpoint
    - Async_UnlistenAll
    - IsTransactionBlock
    - AlterTableSpaceOptions
    - AlterDatabaseSet
    - castNode
    - AfterTriggerSetState
    - CreateEventTrigger
    - LockTableCommand
    - ProcessUtilitySlow
    - PrepareTransactionBlock
    - DeallocateQuery
    - PreventCommandDuringRecovery
    - DiscardCommand
    - check_stack_depth
    - FinishPreparedTransaction
    - ReassignOwnedObjects
    - EndTransactionBlock
    - foreach
    - AlterSystemSetConfigFile
    - CommandCounterIncrement
    - CheckRestrictedOperation
    - DropDatabase
    - ExecAlterObjectDependsStmt
    - free_parsestate
    - WarnNoTransactionBlock
    - ExecSetVariableStmt
    - ExecuteCallStmt
    - PrepareQuery
    - ExecVacuum
    - GetPGVariable
    linkageType: ''
    returnType: void
    signature: "void standard_ProcessUtility(PlannedStmt *pstmt,\n\t\t\t\t\t\tconst
      char *queryString,\n\t\t\t\t\t\tbool readOnlyTree,\n\t\t\t\t\t\tProcessUtilityContext
      context,\n\t\t\t\t\t\tParamListInfo params,\n\t\t\t\t\t\tQueryEnvironment *queryEnv,\n\t\t\t\t\t\tDestReceiver
      *dest,\n\t\t\t\t\t\tQueryCompletion *qc)"
  - BBCount: 102
    BranchProfiles: []
    Callsites:
    - Dst: EventTriggerBeginCompleteQuery
      Src: /src/postgres/src/backend/tcop/utility.c:1112,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/utility.c:1115,1
    - Dst: EventTriggerDDLCommandStart
      Src: /src/postgres/src/backend/tcop/utility.c:1118,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:1120,1
    - Dst: CreateSchemaCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1126,1
    - Dst: transformCreateStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1145,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/utility.c:1155,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/tcop/utility.c:1157,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:1159,1
    - Dst: DefineRelation
      Src: /src/postgres/src/backend/tcop/utility.c:1169,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1173,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/utility.c:1181,1
    - Dst: transformRelOptions
      Src: /src/postgres/src/backend/tcop/utility.c:1187,1
    - Dst: heap_reloptions
      Src: /src/postgres/src/backend/tcop/utility.c:1193,1
    - Dst: NewRelationCreateToastTable
      Src: /src/postgres/src/backend/tcop/utility.c:1197,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:1200,1
    - Dst: DefineRelation
      Src: /src/postgres/src/backend/tcop/utility.c:1208,1
    - Dst: CreateForeignTable
      Src: /src/postgres/src/backend/tcop/utility.c:1212,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1214,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:1218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1229,1
    - Dst: expandTableLikeClause
      Src: /src/postgres/src/backend/tcop/utility.c:1231,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/tcop/utility.c:1232,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/tcop/utility.c:1243,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/tcop/utility.c:1251,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/utility.c:1263,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/utility.c:1286,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/utility.c:1288,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:1294,1
    - Dst: AlterTableGetLockLevel
      Src: /src/postgres/src/backend/tcop/utility.c:1305,1
    - Dst: AlterTableLookupRelation
      Src: /src/postgres/src/backend/tcop/utility.c:1306,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/tcop/utility.c:1308,1
    - Dst: EventTriggerAlterTableStart
      Src: /src/postgres/src/backend/tcop/utility.c:1320,1
    - Dst: EventTriggerAlterTableRelid
      Src: /src/postgres/src/backend/tcop/utility.c:1321,1
    - Dst: AlterTable
      Src: /src/postgres/src/backend/tcop/utility.c:1324,1
    - Dst: EventTriggerAlterTableEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:1330,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:1331,1
    - Dst: AlterDomainDefault
      Src: /src/postgres/src/backend/tcop/utility.c:1356,1
    - Dst: AlterDomainNotNull
      Src: /src/postgres/src/backend/tcop/utility.c:1361,1
    - Dst: AlterDomainNotNull
      Src: /src/postgres/src/backend/tcop/utility.c:1366,1
    - Dst: AlterDomainAddConstraint
      Src: /src/postgres/src/backend/tcop/utility.c:1371,1
    - Dst: AlterDomainDropConstraint
      Src: /src/postgres/src/backend/tcop/utility.c:1377,1
    - Dst: AlterDomainValidateConstraint
      Src: /src/postgres/src/backend/tcop/utility.c:1384,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1388,1
    - Dst: DefineAggregate
      Src: /src/postgres/src/backend/tcop/utility.c:1406,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1412,1
    - Dst: DefineOperator
      Src: /src/postgres/src/backend/tcop/utility.c:1413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1417,1
    - Dst: DefineType
      Src: /src/postgres/src/backend/tcop/utility.c:1418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1423,1
    - Dst: DefineTSParser
      Src: /src/postgres/src/backend/tcop/utility.c:1424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1428,1
    - Dst: DefineTSDictionary
      Src: /src/postgres/src/backend/tcop/utility.c:1429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1433,1
    - Dst: DefineTSTemplate
      Src: /src/postgres/src/backend/tcop/utility.c:1434,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1438,1
    - Dst: DefineTSConfiguration
      Src: /src/postgres/src/backend/tcop/utility.c:1439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1444,1
    - Dst: DefineCollation
      Src: /src/postgres/src/backend/tcop/utility.c:1445,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1451,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:1467,1
    - Dst: RangeVarGetRelidExtended
      Src: /src/postgres/src/backend/tcop/utility.c:1482,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/tcop/utility.c:1499,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/tcop/utility.c:1504,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/tcop/utility.c:1507,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/tcop/utility.c:1508,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1514,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:1519,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:1520,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:1521,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/utility.c:1523,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/utility.c:1527,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/utility.c:1528,1
    - Dst: transformIndexStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1543,1
    - Dst: EventTriggerAlterTableStart
      Src: /src/postgres/src/backend/tcop/utility.c:1546,1
    - Dst: DefineIndex
      Src: /src/postgres/src/backend/tcop/utility.c:1548,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1566,1
    - Dst: EventTriggerAlterTableEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1569,1
    - Dst: ExecReindex
      Src: /src/postgres/src/backend/tcop/utility.c:1574,1
    - Dst: CreateExtension
      Src: /src/postgres/src/backend/tcop/utility.c:1581,1
    - Dst: ExecAlterExtensionStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1585,1
    - Dst: ExecAlterExtensionContentsStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1589,1
    - Dst: CreateForeignDataWrapper
      Src: /src/postgres/src/backend/tcop/utility.c:1594,1
    - Dst: AlterForeignDataWrapper
      Src: /src/postgres/src/backend/tcop/utility.c:1598,1
    - Dst: CreateForeignServer
      Src: /src/postgres/src/backend/tcop/utility.c:1602,1
    - Dst: AlterForeignServer
      Src: /src/postgres/src/backend/tcop/utility.c:1606,1
    - Dst: CreateUserMapping
      Src: /src/postgres/src/backend/tcop/utility.c:1610,1
    - Dst: AlterUserMapping
      Src: /src/postgres/src/backend/tcop/utility.c:1614,1
    - Dst: RemoveUserMapping
      Src: /src/postgres/src/backend/tcop/utility.c:1618,1
    - Dst: ImportForeignSchema
      Src: /src/postgres/src/backend/tcop/utility.c:1624,1
    - Dst: DefineCompositeType
      Src: /src/postgres/src/backend/tcop/utility.c:1633,1
    - Dst: DefineEnum
      Src: /src/postgres/src/backend/tcop/utility.c:1639,1
    - Dst: DefineRange
      Src: /src/postgres/src/backend/tcop/utility.c:1643,1
    - Dst: AlterEnum
      Src: /src/postgres/src/backend/tcop/utility.c:1647,1
    - Dst: EventTriggerAlterTableStart
      Src: /src/postgres/src/backend/tcop/utility.c:1651,1
    - Dst: DefineView
      Src: /src/postgres/src/backend/tcop/utility.c:1652,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1654,1
    - Dst: EventTriggerAlterTableEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1658,1
    - Dst: CreateFunction
      Src: /src/postgres/src/backend/tcop/utility.c:1662,1
    - Dst: AlterFunction
      Src: /src/postgres/src/backend/tcop/utility.c:1666,1
    - Dst: DefineRule
      Src: /src/postgres/src/backend/tcop/utility.c:1670,1
    - Dst: DefineSequence
      Src: /src/postgres/src/backend/tcop/utility.c:1674,1
    - Dst: AlterSequence
      Src: /src/postgres/src/backend/tcop/utility.c:1678,1
    - Dst: ExecCreateTableAs
      Src: /src/postgres/src/backend/tcop/utility.c:1682,1
    - Dst: EventTriggerInhibitCommandCollection
      Src: /src/postgres/src/backend/tcop/utility.c:1694,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/utility.c:1695,1
    - Dst: ExecRefreshMatView
      Src: /src/postgres/src/backend/tcop/utility.c:1697,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/tcop/utility.c:1700,1
    - Dst: EventTriggerUndoInhibitCommandCollection
      Src: /src/postgres/src/backend/tcop/utility.c:1702,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/utility.c:1704,1
    - Dst: CreateTrigger
      Src: /src/postgres/src/backend/tcop/utility.c:1708,1
    - Dst: CreateProceduralLanguage
      Src: /src/postgres/src/backend/tcop/utility.c:1715,1
    - Dst: DefineDomain
      Src: /src/postgres/src/backend/tcop/utility.c:1719,1
    - Dst: CreateConversionCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1723,1
    - Dst: CreateCast
      Src: /src/postgres/src/backend/tcop/utility.c:1727,1
    - Dst: DefineOpClass
      Src: /src/postgres/src/backend/tcop/utility.c:1731,1
    - Dst: DefineOpFamily
      Src: /src/postgres/src/backend/tcop/utility.c:1737,1
    - Dst: CreatePropGraph
      Src: /src/postgres/src/backend/tcop/utility.c:1747,1
    - Dst: AlterPropGraph
      Src: /src/postgres/src/backend/tcop/utility.c:1751,1
    - Dst: CreateTransform
      Src: /src/postgres/src/backend/tcop/utility.c:1755,1
    - Dst: AlterOpFamily
      Src: /src/postgres/src/backend/tcop/utility.c:1759,1
    - Dst: AlterTSDictionary
      Src: /src/postgres/src/backend/tcop/utility.c:1765,1
    - Dst: AlterTSConfiguration
      Src: /src/postgres/src/backend/tcop/utility.c:1769,1
    - Dst: AlterTableMoveAll
      Src: /src/postgres/src/backend/tcop/utility.c:1780,1
    - Dst: ExecDropStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1786,1
    - Dst: ExecRenameStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1792,1
    - Dst: ExecAlterObjectDependsStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1797,1
    - Dst: ExecAlterObjectSchemaStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1803,1
    - Dst: ExecAlterOwnerStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1808,1
    - Dst: AlterOperator
      Src: /src/postgres/src/backend/tcop/utility.c:1812,1
    - Dst: AlterType
      Src: /src/postgres/src/backend/tcop/utility.c:1816,1
    - Dst: CommentObject
      Src: /src/postgres/src/backend/tcop/utility.c:1820,1
    - Dst: ExecuteGrantStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1824,1
    - Dst: DropOwnedObjects
      Src: /src/postgres/src/backend/tcop/utility.c:1830,1
    - Dst: ExecAlterDefaultPrivilegesStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1836,1
    - Dst: EventTriggerCollectAlterDefPrivs
      Src: /src/postgres/src/backend/tcop/utility.c:1837,1
    - Dst: CreatePolicy
      Src: /src/postgres/src/backend/tcop/utility.c:1842,1
    - Dst: AlterPolicy
      Src: /src/postgres/src/backend/tcop/utility.c:1846,1
    - Dst: ExecSecLabelStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1850,1
    - Dst: CreateAccessMethod
      Src: /src/postgres/src/backend/tcop/utility.c:1854,1
    - Dst: CreatePublication
      Src: /src/postgres/src/backend/tcop/utility.c:1858,1
    - Dst: AlterPublication
      Src: /src/postgres/src/backend/tcop/utility.c:1862,1
    - Dst: CreateSubscription
      Src: /src/postgres/src/backend/tcop/utility.c:1872,1
    - Dst: AlterSubscription
      Src: /src/postgres/src/backend/tcop/utility.c:1878,1
    - Dst: DropSubscription
      Src: /src/postgres/src/backend/tcop/utility.c:1884,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/utility.c:1893,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:1895,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:1896,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:1897,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:1898,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/tcop/utility.c:1911,1
    - Dst: transformStatsStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1914,1
    - Dst: CreateStatistics
      Src: /src/postgres/src/backend/tcop/utility.c:1916,1
    - Dst: AlterStatistics
      Src: /src/postgres/src/backend/tcop/utility.c:1921,1
    - Dst: AlterCollation
      Src: /src/postgres/src/backend/tcop/utility.c:1925,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1929,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:1930,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1939,1
    - Dst: EventTriggerSQLDrop
      Src: /src/postgres/src/backend/tcop/utility.c:1944,1
    - Dst: EventTriggerDDLCommandEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1945,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/tcop/utility.c:1948,1
    - Dst: EventTriggerEndCompleteQuery
      Src: /src/postgres/src/backend/tcop/utility.c:1951,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/utility.c:1953,1
    CyclomaticComplexity: 111
    EdgeCount: 111
    ICount: 394
    argCount: 8
    argNames:
    - pstate
    - pstmt
    - queryString
    - context
    - params
    - queryEnv
    - dest
    - qc
    argTypes:
    - ParseState*
    - PlannedStmt*
    - char*
    - ProcessUtilityContext
    - ParamListInfo
    - QueryEnvironment*
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1954
      start: 1093
    functionDepth: 3
    functionLinenumber: 1093
    functionLinenumberEnd: 1954
    functionName: ProcessUtilitySlow
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 1
    functionsReached:
    - EventTriggerAlterTableRelid
    - CreateTransform
    - AlterOperator
    - DefineDomain
    - list_concat
    - CreatePropGraph
    - RemoveUserMapping
    - DropOwnedObjects
    - ExecAlterOwnerStmt
    - CreateForeignServer
    - CreateExtension
    - get_rel_relkind
    - list_delete_first
    - EventTriggerEndCompleteQuery
    - OidIsValid
    - transformIndexStmt
    - AlterDomainValidateConstraint
    - PG_END_TRY
    - CreateFunction
    - ProcessUtility
    - DefineTSConfiguration
    - DefineOperator
    - AlterDomainDefault
    - ExecAlterObjectSchemaStmt
    - CreateUserMapping
    - ExecSecLabelStmt
    - find_all_inheritors
    - DefineRelation
    - DefineAggregate
    - CreateForeignDataWrapper
    - makeNode
    - errdetail
    - expandTableLikeClause
    - transformCreateStmt
    - ExecAlterDefaultPrivilegesStmt
    - DefineCompositeType
    - AlterForeignServer
    - AlterPublication
    - PG_TRY
    - DefineView
    - DefineCollation
    - lfirst_oid
    - ExecAlterExtensionStmt
    - AlterOpFamily
    - nodeTag
    - elog
    - CreateSchemaCommand
    - CreateCast
    - Assert
    - linitial
    - ExecReindex
    - CreateForeignTable
    - PG_FINALLY
    - DefineRule
    - errmsg
    - NewRelationCreateToastTable
    - AlterStatistics
    - AlterDomainNotNull
    - AlterFunction
    - list_free
    - ereport
    - PreventInTransactionBlock
    - CommentObject
    - CreateSubscription
    - EventTriggerCollectAlterDefPrivs
    - transformStatsStmt
    - lfirst
    - EventTriggerUndoInhibitCommandCollection
    - DefineType
    - ImportForeignSchema
    - AlterDomainDropConstraint
    - ExecRenameStmt
    - EventTriggerDDLCommandEnd
    - DefineTSDictionary
    - ExecRefreshMatView
    - CreatePublication
    - EventTriggerBeginCompleteQuery
    - DefineTSTemplate
    - errcode
    - DropSubscription
    - AlterUserMapping
    - DefineEnum
    - DefineSequence
    - ExecDropStmt
    - AlterSequence
    - AlterForeignDataWrapper
    - ExecuteGrantStmt
    - transformRelOptions
    - CreateTrigger
    - DefineRange
    - DefineOpClass
    - DefineIndex
    - AlterTSConfiguration
    - AlterType
    - DefineTSParser
    - EventTriggerAlterTableEnd
    - ExecCreateTableAs
    - AlterPropGraph
    - DefineOpFamily
    - AlterEnum
    - ExecAlterExtensionContentsStmt
    - CreatePolicy
    - CreateProceduralLanguage
    - AlterSubscription
    - AlterTable
    - heap_reloptions
    - AlterTableLookupRelation
    - EventTriggerAlterTableStart
    - AlterDomainAddConstraint
    - foreach
    - EventTriggerInhibitCommandCollection
    - RangeVarGetRelidExtended
    - CreateAccessMethod
    - CommandCounterIncrement
    - EventTriggerSQLDrop
    - AlterPolicy
    - AlterTableGetLockLevel
    - CreateConversionCommand
    - list_length
    - ExecAlterObjectDependsStmt
    - AlterCollation
    - EventTriggerDDLCommandStart
    - RangeVarGetRelid
    - CreateStatistics
    - EventTriggerCollectSimpleCommand
    - AlterTableMoveAll
    - AlterTSDictionary
    - IsA
    linkageType: ''
    returnType: void
    signature: "void ProcessUtilitySlow(ParseState *pstate,\n\t\t\t\t   PlannedStmt
      *pstmt,\n\t\t\t\t   const char *queryString,\n\t\t\t\t   ProcessUtilityContext
      context,\n\t\t\t\t   ParamListInfo params,\n\t\t\t\t   QueryEnvironment *queryEnv,\n\t\t\t\t
      \  DestReceiver *dest,\n\t\t\t\t   QueryCompletion *qc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/tcop/utility.c:1507,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/tcop/utility.c:1508,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1514,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:1519,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:1520,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:1521,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/utility.c:1523,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1505
    functionDepth: 1
    functionLinenumber: 1505
    functionLinenumberEnd: 1525
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 321
    functionsReached:
    - elog
    - errcode
    - ereport
    - get_rel_relkind
    - errmsg
    - errdetail
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, inheritors)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EventTriggerAlterTableEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1980,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/tcop/utility.c:1983,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/tcop/utility.c:1991,1
    - Dst: EventTriggerAlterTableStart
      Src: /src/postgres/src/backend/tcop/utility.c:2000,1
    - Dst: EventTriggerAlterTableRelid
      Src: /src/postgres/src/backend/tcop/utility.c:2001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - stmt
    - context
    argTypes:
    - Node*
    - AlterTableUtilityContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1970
    functionDepth: 2
    functionLinenumber: 1970
    functionLinenumberEnd: 2002
    functionName: ProcessUtilityForAlterTable
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - EventTriggerAlterTableRelid
    - makeNode
    - ProcessUtility
    - EventTriggerAlterTableEnd
    - EventTriggerAlterTableStart
    linkageType: ''
    returnType: void
    signature: void ProcessUtilityForAlterTable(Node *stmt, AlterTableUtilityContext
      *context)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:2014,1
    - Dst: RemoveRelations
      Src: /src/postgres/src/backend/tcop/utility.c:2024,1
    - Dst: RemoveObjects
      Src: /src/postgres/src/backend/tcop/utility.c:2027,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - stmt
    - isTopLevel
    argTypes:
    - DropStmt*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2030
      start: 2007
    functionDepth: 2
    functionLinenumber: 2007
    functionLinenumberEnd: 2030
    functionName: ExecDropStmt
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 2
    functionsReached:
    - RemoveRelations
    - RemoveObjects
    - PreventInTransactionBlock
    linkageType: ''
    returnType: void
    signature: void ExecDropStmt(DropStmt *stmt, bool isTopLevel)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:2044,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/utility.c:2059,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/utility.c:2060,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/utility.c:2070,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2090
      start: 2041
    functionDepth: 1
    functionLinenumber: 2041
    functionLinenumberEnd: 2090
    functionName: UtilityReturnsTuples
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - PortalIsValid
    - FetchPreparedStatement
    - nodeTag
    - GetPortalByName
    linkageType: ''
    returnType: bool
    signature: bool UtilityReturnsTuples(Node *parsetree)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:2103,1
    - Dst: CallStmtResultDesc
      Src: /src/postgres/src/backend/tcop/utility.c:2106,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/utility.c:2115,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/utility.c:2116,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/tcop/utility.c:2118,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/utility.c:2126,1
    - Dst: FetchPreparedStatementResultDesc
      Src: /src/postgres/src/backend/tcop/utility.c:2129,1
    - Dst: ExplainResultDesc
      Src: /src/postgres/src/backend/tcop/utility.c:2133,1
    - Dst: GetPGVariableResultDesc
      Src: /src/postgres/src/backend/tcop/utility.c:2139,1
    - Dst: WaitStmtResultDesc
      Src: /src/postgres/src/backend/tcop/utility.c:2143,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2148
      start: 2100
    functionDepth: 5
    functionLinenumber: 2100
    functionLinenumberEnd: 2148
    functionName: UtilityTupleDescriptor
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - PortalIsValid
    - GetPGVariableResultDesc
    - CreateTupleDescCopy
    - CallStmtResultDesc
    - FetchPreparedStatementResultDesc
    - ExplainResultDesc
    - FetchPreparedStatement
    - nodeTag
    - GetPortalByName
    - WaitStmtResultDesc
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc UtilityTupleDescriptor(Node *parsetree)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: UtilityReturnsTuples
      Src: /src/postgres/src/backend/tcop/utility.c:2173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2180
      start: 2156
    functionDepth: 2
    functionLinenumber: 2156
    functionLinenumberEnd: 2180
    functionName: QueryReturnsTuples
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - UtilityReturnsTuples
    linkageType: ''
    returnType: bool
    signature: bool QueryReturnsTuples(Query *parsetree)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:2203,1
    - Dst: castNode
      Src: /src/postgres/src/backend/tcop/utility.c:2206,1
    - Dst: UtilityContainsQuery
      Src: /src/postgres/src/backend/tcop/utility.c:2208,1
    - Dst: castNode
      Src: /src/postgres/src/backend/tcop/utility.c:2212,1
    - Dst: UtilityContainsQuery
      Src: /src/postgres/src/backend/tcop/utility.c:2214,1
    - Dst: castNode
      Src: /src/postgres/src/backend/tcop/utility.c:2218,1
    - Dst: UtilityContainsQuery
      Src: /src/postgres/src/backend/tcop/utility.c:2220,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2226
      start: 2198
    functionDepth: 1
    functionLinenumber: 2198
    functionLinenumberEnd: 2226
    functionName: UtilityContainsQuery
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 2
    functionsReached:
    - UtilityContainsQuery
    - castNode
    - nodeTag
    linkageType: ''
    returnType: Query
    signature: 'Query *

      UtilityContainsQuery(Node *parsetree)'
  - BBCount: 45
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 132
    argCount: 1
    argNames:
    - objtype
    argTypes:
    - ObjectType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2373
      start: 2235
    functionDepth: 0
    functionLinenumber: 2235
    functionLinenumberEnd: 2373
    functionName: AlterObjectTypeCommandTag
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CommandTag
    signature: CommandTag AlterObjectTypeCommandTag(ObjectType objtype)
  - BBCount: 230
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:2389,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2393,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2705,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2711,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2715,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2719,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2723,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2727,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/utility.c:3160,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:3195,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3198,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/utility.c:3223,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:3258,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3261,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3270,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:3271,1
    CyclomaticComplexity: 228
    EdgeCount: 228
    ICount: 687
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3277
      start: 2384
    functionDepth: 1
    functionLinenumber: 2384
    functionLinenumberEnd: 3277
    functionName: CreateCommandTag
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 4
    functionsReached:
    - elog
    - linitial
    - nodeTag
    - CreateCommandTag
    - AlterObjectTypeCommandTag
    linkageType: ''
    returnType: CommandTag
    signature: CommandTag CreateCommandTag(Node *parsetree)
  - BBCount: 140
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:3294,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3298,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3397,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/utility.c:3407,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3409,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/utility.c:3565,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/utility.c:3567,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/utility.c:3569,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/tcop/utility.c:3570,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3574,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3772,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3776,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3803,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3807,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3816,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:3817,1
    CyclomaticComplexity: 119
    EdgeCount: 119
    ICount: 381
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3823
      start: 3289
    functionDepth: 1
    functionLinenumber: 3289
    functionLinenumberEnd: 3823
    functionName: GetCommandLogLevel
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - GetCommandLogLevel
    - strcmp
    - defGetBoolean
    - lfirst
    - FetchPreparedStatement
    - nodeTag
    linkageType: ''
    returnType: LogStmtLevel
    signature: LogStmtLevel GetCommandLogLevel(Node *parsetree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: donothingReceive
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool donothingReceive(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: donothingStartup
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void donothingStartup(DestReceiver *self, int operation, TupleDesc
      typeinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: donothingCleanup
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void donothingCleanup(DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - commandTag
    - dest
    argTypes:
    - CommandTag
    - CommandDest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: BeginCommand
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BeginCommand(CommandTag commandTag, CommandDest dest)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: printtup_create_DR
      Src: /src/postgres/src/backend/tcop/dest.c:124,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/tcop/dest.c:127,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/tcop/dest.c:130,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/tcop/dest.c:133,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/tcop/dest.c:136,1
    - Dst: CreateTuplestoreDestReceiver
      Src: /src/postgres/src/backend/tcop/dest.c:139,1
    - Dst: CreateIntoRelDestReceiver
      Src: /src/postgres/src/backend/tcop/dest.c:142,1
    - Dst: CreateCopyDestReceiver
      Src: /src/postgres/src/backend/tcop/dest.c:145,1
    - Dst: CreateSQLFunctionDestReceiver
      Src: /src/postgres/src/backend/tcop/dest.c:148,1
    - Dst: CreateTransientRelDestReceiver
      Src: /src/postgres/src/backend/tcop/dest.c:151,1
    - Dst: CreateTupleQueueDestReceiver
      Src: /src/postgres/src/backend/tcop/dest.c:154,1
    - Dst: CreateExplainSerializeDestReceiver
      Src: /src/postgres/src/backend/tcop/dest.c:157,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/tcop/dest.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - dest
    argTypes:
    - CommandDest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 162
    functionName: CreateDestReceiver
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 3
    functionsReached:
    - CreateTransientRelDestReceiver
    - CreateTuplestoreDestReceiver
    - CreateTupleQueueDestReceiver
    - CreateExplainSerializeDestReceiver
    - printtup_create_DR
    - unconstify
    - CreateCopyDestReceiver
    - pg_unreachable
    - CreateSQLFunctionDestReceiver
    - CreateIntoRelDestReceiver
    linkageType: ''
    returnType: DestReceiver
    signature: 'DestReceiver *

      CreateDestReceiver(CommandDest dest)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: BuildQueryCompletionString
      Src: /src/postgres/src/backend/tcop/dest.c:182,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/tcop/dest.c:185,1
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/tcop/dest.c:187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - qc
    - dest
    - force_undecorated_output
    - noblock
    argTypes:
    - QueryCompletion*
    - CommandDest
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 202
    functionName: EndCommandExtended
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached:
    - BuildQueryCompletionString
    - pq_putmessage
    - pq_putmessage_noblock
    linkageType: ''
    returnType: void
    signature: "void EndCommandExtended(const QueryCompletion *qc, CommandDest dest,\n\t\t\t\t
      \  bool force_undecorated_output, bool noblock)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EndCommandExtended
      Src: /src/postgres/src/backend/tcop/dest.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - qc
    - dest
    - force_undecorated_output
    argTypes:
    - QueryCompletion*
    - CommandDest
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 208
    functionName: EndCommand
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached:
    - EndCommandExtended
    linkageType: ''
    returnType: void
    signature: void EndCommand(const QueryCompletion *qc, CommandDest dest, bool force_undecorated_output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/tcop/dest.c:219,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/dest.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - commandTag
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: EndReplicationCommand
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached:
    - strlen
    - pq_putmessage
    linkageType: ''
    returnType: void
    signature: void EndReplicationCommand(const char *commandTag)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/dest.c:239,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - dest
    argTypes:
    - CommandDest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 254
    functionName: NullCommand
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached:
    - pq_putemptymessage
    linkageType: ''
    returnType: void
    signature: void NullCommand(CommandDest dest)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/tcop/dest.c:278,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/tcop/dest.c:279,1
    - Dst: TransactionBlockStatusCode
      Src: /src/postgres/src/backend/tcop/dest.c:279,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/tcop/dest.c:280,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/tcop/dest.c:283,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - dest
    argTypes:
    - CommandDest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 267
    functionDepth: 4
    functionLinenumber: 267
    functionLinenumberEnd: 298
    functionName: ReadyForQuery
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 3
    functionsReached:
    - pq_beginmessage
    - TransactionBlockStatusCode
    - pq_endmessage
    - pq_flush
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void ReadyForQuery(CommandDest dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/backend_startup.c:80,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/backend_startup.c:81,1
    - Dst: secure_initialize
      Src: /src/postgres/src/backend/tcop/backend_startup.c:100,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:103,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:104,1
    - Dst: BackendInitialize
      Src: /src/postgres/src/backend/tcop/backend_startup.c:110,1
    - Dst: InitProcess
      Src: /src/postgres/src/backend/tcop/backend_startup.c:116,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:122,1
    - Dst: PostgresMain
      Src: /src/postgres/src/backend/tcop/backend_startup.c:124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - startup_data
    - startup_data_len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 125
    functionName: BackendMain
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 0
    functionsReached:
    - BackendInitialize
    - PostgresMain
    - Assert
    - ereport
    - MemoryContextSwitchTo
    - errmsg
    - InitProcess
    - secure_initialize
    linkageType: ''
    returnType: void
    signature: void BackendMain(const void *startup_data, size_t startup_data_len)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ReserveExternalFD
      Src: /src/postgres/src/backend/tcop/backend_startup.c:152,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/tcop/backend_startup.c:162,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:176,1
    - Dst: pq_init
      Src: /src/postgres/src/backend/tcop/backend_startup.c:177,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:178,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/backend_startup.c:196,1
    - Dst: InitializeTimeouts
      Src: /src/postgres/src/backend/tcop/backend_startup.c:198,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/tcop/backend_startup.c:199,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/tcop/backend_startup.c:206,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:210,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/backend_startup.c:211,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/tcop/backend_startup.c:212,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:218,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:225,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:230,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:231,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/tcop/backend_startup.c:237,1
    - Dst: IS_INJECTION_POINT_ATTACHED
      Src: /src/postgres/src/backend/tcop/backend_startup.c:238,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/backend/tcop/backend_startup.c:245,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/backend_startup.c:246,1
    - Dst: strspn
      Src: /src/postgres/src/backend/tcop/backend_startup.c:263,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:263,1
    - Dst: strspn
      Src: /src/postgres/src/backend/tcop/backend_startup.c:264,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:264,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:266,1
    - Dst: RegisterTimeout
      Src: /src/postgres/src/backend/tcop/backend_startup.c:284,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/backend_startup.c:285,1
    - Dst: ProcessSSLStartup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:288,1
    - Dst: ProcessStartupPacket
      Src: /src/postgres/src/backend/tcop/backend_startup.c:295,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:307,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:309,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:313,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:314,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:315,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:316,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:318,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:320,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:321,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/backend_startup.c:322,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:325,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:326,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:327,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:333,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:336,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:337,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:338,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:343,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/backend_startup.c:353,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/tcop/backend_startup.c:354,1
    - Dst: check_on_shmem_exit_lists_are_empty
      Src: /src/postgres/src/backend/tcop/backend_startup.c:365,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/tcop/backend_startup.c:372,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:378,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:380,1
    - Dst: GetBackendTypeDesc
      Src: /src/postgres/src/backend/tcop/backend_startup.c:380,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:381,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:383,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/tcop/backend_startup.c:384,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:386,1
    - Dst: init_ps_display
      Src: /src/postgres/src/backend/tcop/backend_startup.c:388,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/backend_startup.c:389,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/backend_startup.c:391,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 80
    argCount: 2
    argNames:
    - client_sock
    - cac
    argTypes:
    - ClientSocket*
    - CAC_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 392
    functionName: BackendInitialize
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 1
    functionsReached:
    - ReserveExternalFD
    - set_ps_display
    - errcode
    - disable_timeout
    - enable_timeout_after
    - PG_PROTOCOL
    - sigprocmask
    - errhint
    - elog
    - pg_getnameinfo_all
    - RegisterTimeout
    - pfree
    - appendStringInfoString
    - IS_INJECTION_POINT_ATTACHED
    - strspn
    - errmsg
    - errmsg_internal
    - ProcessStartupPacket
    - initStringInfo
    - ereport
    - ProcessSSLStartup
    - InitializeTimeouts
    - init_ps_display
    - strlen
    - pq_init
    - pg_usleep
    - proc_exit
    - gai_strerror
    - INJECTION_POINT
    - pqsignal
    - appendStringInfo
    - MemoryContextStrdup
    - GetBackendTypeDesc
    - MemoryContextSwitchTo
    - errdetail
    - check_on_shmem_exit_lists_are_empty
    linkageType: ''
    returnType: void
    signature: void BackendInitialize(ClientSocket *client_sock, CAC_state cac)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/backend_startup.c:405,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/tcop/backend_startup.c:407,1
    - Dst: pq_peekbyte
      Src: /src/postgres/src/backend/tcop/backend_startup.c:408,1
    - Dst: pq_endmsgread
      Src: /src/postgres/src/backend/tcop/backend_startup.c:409,1
    - Dst: secure_open_server
      Src: /src/postgres/src/backend/tcop/backend_startup.c:439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/backend_startup.c:447,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:451,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:452,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:453,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:458,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:459,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:468,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:469,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 400
    functionDepth: 5
    functionLinenumber: 400
    functionLinenumberEnd: 471
    functionName: ProcessSSLStartup
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 1
    functionsReached:
    - pq_peekbyte
    - errcode
    - Assert
    - ereport
    - secure_open_server
    - pq_startmsgread
    - pq_endmsgread
    - errmsg
    linkageType: ''
    returnType: int
    signature: int ProcessSSLStartup(Port *port)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/tcop/backend_startup.c:507,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/tcop/backend_startup.c:515,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/tcop/backend_startup.c:530,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:534,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:535,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:536,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:540,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:546,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:547,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:548,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tcop/backend_startup.c:557,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/tcop/backend_startup.c:560,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:562,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:563,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:564,1
    - Dst: pq_endmsgread
      Src: /src/postgres/src/backend/tcop/backend_startup.c:567,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:573,1
    - Dst: ProcessCancelRequestPacket
      Src: /src/postgres/src/backend/tcop/backend_startup.c:577,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:604,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:605,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:607,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:608,1
    - Dst: secure_write
      Src: /src/postgres/src/backend/tcop/backend_startup.c:611,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:615,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/tcop/backend_startup.c:616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:617,1
    - Dst: secure_open_server
      Src: /src/postgres/src/backend/tcop/backend_startup.c:622,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/backend_startup.c:626,1
    - Dst: pq_buffer_remaining_data
      Src: /src/postgres/src/backend/tcop/backend_startup.c:635,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:636,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:637,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:638,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:639,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:670,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:671,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:673,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:674,1
    - Dst: secure_write
      Src: /src/postgres/src/backend/tcop/backend_startup.c:677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:681,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/tcop/backend_startup.c:682,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:683,1
    - Dst: secure_open_gssapi
      Src: /src/postgres/src/backend/tcop/backend_startup.c:688,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/backend_startup.c:692,1
    - Dst: pq_buffer_remaining_data
      Src: /src/postgres/src/backend/tcop/backend_startup.c:701,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:702,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:703,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:704,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:705,1
    - Dst: Min
      Src: /src/postgres/src/backend/tcop/backend_startup.c:734,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:737,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:737,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:738,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:738,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:739,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:740,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:741,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:742,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:742,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:743,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:744,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:745,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:751,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:773,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:778,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:779,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:780,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:781,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:782,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:783,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:784,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:793,1
    - Dst: parse_bool
      Src: /src/postgres/src/backend/tcop/backend_startup.c:798,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:799,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:800,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:801,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/backend_startup.c:804,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:806,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/backend_startup.c:814,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:814,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/backend_startup.c:819,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:820,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/backend_startup.c:821,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:822,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:830,1
    - Dst: pg_clean_ascii
      Src: /src/postgres/src/backend/tcop/backend_startup.c:832,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:835,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:843,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:845,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:853,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:853,1
    - Dst: SendNegotiateProtocolVersion
      Src: /src/postgres/src/backend/tcop/backend_startup.c:855,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/tcop/backend_startup.c:857,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:862,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:863,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:864,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:868,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:874,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:876,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/backend_startup.c:879,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:897,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/backend_startup.c:899,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/backend_startup.c:906,1
    CyclomaticComplexity: 74
    EdgeCount: 74
    ICount: 161
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 485
    functionDepth: 5
    functionLinenumber: 485
    functionLinenumberEnd: 909
    functionName: ProcessStartupPacket
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 1
    functionsReached:
    - secure_write
    - secure_open_gssapi
    - strcmp
    - errcode
    - errcode_for_socket_access
    - pstrdup
    - parse_bool
    - errhint
    - palloc
    - PG_PROTOCOL_MAJOR
    - pg_ntoh32
    - pfree
    - Assert
    - SendNegotiateProtocolVersion
    - errmsg
    - PG_PROTOCOL_MINOR
    - lappend
    - ereport
    - secure_open_server
    - list_free_deep
    - pq_startmsgread
    - strlen
    - pg_clean_ascii
    - pq_getbytes
    - ProcessCancelRequestPacket
    - pq_buffer_remaining_data
    - MemoryContextSwitchTo
    - pq_endmsgread
    - strncmp
    - errdetail
    - Min
    linkageType: ''
    returnType: int
    signature: int ProcessStartupPacket(Port *port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:924,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:925,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:926,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:932,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:933,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:934,1
    - Dst: SendCancelRequest
      Src: /src/postgres/src/backend/tcop/backend_startup.c:939,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:939,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - port
    - pkt
    - pktlen
    argTypes:
    - Port*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 916
    functionDepth: 1
    functionLinenumber: 916
    functionLinenumberEnd: 940
    functionName: ProcessCancelRequestPacket
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 1
    functionsReached:
    - pg_ntoh32
    - errcode
    - ereport
    - SendCancelRequest
    - errmsg
    linkageType: ''
    returnType: void
    signature: void ProcessCancelRequestPacket(Port *port, void *pkt, int pktlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/tcop/backend_startup.c:964,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:965,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:966,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/backend_startup.c:966,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/backend_startup.c:967,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/tcop/backend_startup.c:968,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/backend_startup.c:968,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/tcop/backend_startup.c:969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - unrecognized_protocol_options
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 958
    functionDepth: 4
    functionLinenumber: 958
    functionLinenumberEnd: 972
    functionName: SendNegotiateProtocolVersion
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 1
    functionsReached:
    - pq_beginmessage
    - foreach
    - pq_sendstring
    - pq_endmessage
    - pq_sendint32
    - lfirst
    - list_length
    linkageType: ''
    returnType: void
    signature: void SendNegotiateProtocolVersion(List *unrecognized_protocol_options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _exit
      Src: /src/postgres/src/backend/tcop/backend_startup.c:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 992
    functionName: process_startup_packet_die
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 0
    functionsReached:
    - _exit
    linkageType: ''
    returnType: void
    signature: void process_startup_packet_die(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _exit
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 998
    functionDepth: 0
    functionLinenumber: 998
    functionLinenumberEnd: 1002
    functionName: StartupPacketTimeoutHandler
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 0
    functionsReached:
    - _exit
    linkageType: ''
    returnType: void
    signature: void StartupPacketTimeoutHandler(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1045,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1053,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1055,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1059,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1062,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1064,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1084,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1085,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1089,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1096,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - elemlist
    - flags
    argTypes:
    - List*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1017
    functionDepth: 2
    functionLinenumber: 1017
    functionLinenumberEnd: 1103
    functionName: validate_log_connections_options
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - linitial
    - lfirst
    - list_length
    - lengthof
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool validate_log_connections_options(List *elemlist, uint32 *flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1084,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1085,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1089,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1096,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1074
    functionDepth: 2
    functionLinenumber: 1074
    functionLinenumberEnd: 1100
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 323
    functionsReached:
    - pg_strcasecmp
    - lfirst
    - lengthof
    - GUC_check_errdetail
    linkageType: ''
    returnType: void
    signature: void foreach(l, elemlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1118,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1120,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1122,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1123,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1124,1
    - Dst: validate_log_connections_options
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1129,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1132,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1133,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1109
    functionDepth: 3
    functionLinenumber: 1109
    functionLinenumberEnd: 1148
    functionName: check_log_connections
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 0
    functionsReached:
    - validate_log_connections_options
    - list_free
    - pfree
    - pstrdup
    - guc_malloc
    - SplitIdentifierString
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_log_connections(char **newval, void **extra, GucSource source)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1153
    functionDepth: 0
    functionLinenumber: 1153
    functionLinenumberEnd: 1157
    functionName: assign_log_connections
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void assign_log_connections(const char *newval, void *extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pid
    - ','
    - uid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: ERRDETAIL_SIGNAL_SENDER
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERRDETAIL_SIGNAL_SENDER(pid, uid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/tcop/postgres.c:222,1
    - Dst: VALGRIND_PRINTF
      Src: /src/postgres/src/backend/tcop/postgres.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 227
    functionName: valgrind_report_error_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - VALGRIND_PRINTF
    - unlikely
    linkageType: ''
    returnType: void
    signature: void valgrind_report_error_query(const char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - query
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 231
    functionName: valgrind_report_error_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: valgrind_report_error_query(query)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/tcop/postgres.c:257,1
    - Dst: fflush
      Src: /src/postgres/src/backend/tcop/postgres.c:258,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:260,1
    - Dst: interactive_getc
      Src: /src/postgres/src/backend/tcop/postgres.c:265,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/tcop/postgres.c:300,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/tcop/postgres.c:307,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/tcop/postgres.c:319,1
    - Dst: printf
      Src: /src/postgres/src/backend/tcop/postgres.c:325,1
    - Dst: fflush
      Src: /src/postgres/src/backend/tcop/postgres.c:326,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 1
    argNames:
    - inBuf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 329
    functionName: InteractiveBackend
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - resetStringInfo
    - printf
    - fflush
    - interactive_getc
    - appendStringInfoChar
    linkageType: ''
    returnType: int
    signature: int InteractiveBackend(StringInfo inBuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:348,1
    - Dst: getc
      Src: /src/postgres/src/backend/tcop/postgres.c:350,1
    - Dst: ProcessClientReadInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 355
    functionName: interactive_getc
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - getc
    - ProcessClientReadInterrupt
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: int
    signature: int interactive_getc(void)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_CANCEL_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:374,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/tcop/postgres.c:375,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/tcop/postgres.c:376,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/tcop/postgres.c:380,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:381,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:382,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:383,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:392,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:393,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:394,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:467,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:468,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:469,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/tcop/postgres.c:479,1
    - Dst: RESUME_CANCEL_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:481,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 61
    argCount: 1
    argNames:
    - inBuf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 365
    functionDepth: 5
    functionLinenumber: 365
    functionLinenumberEnd: 484
    functionName: SocketBackend
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - pq_getbyte
    - errmsg_internal
    - HOLD_CANCEL_INTERRUPTS
    - errcode
    - IsTransactionState
    - pq_getmessage
    - ereport
    - pq_startmsgread
    - RESUME_CANCEL_INTERRUPTS
    - errmsg
    linkageType: ''
    returnType: int
    signature: int SocketBackend(StringInfo inBuf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SocketBackend
      Src: /src/postgres/src/backend/tcop/postgres.c:499,1
    - Dst: InteractiveBackend
      Src: /src/postgres/src/backend/tcop/postgres.c:501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - inBuf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 493
    functionDepth: 6
    functionLinenumber: 493
    functionLinenumberEnd: 503
    functionName: ReadCommand
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - InteractiveBackend
    - SocketBackend
    linkageType: ''
    returnType: int
    signature: int ReadCommand(StringInfo inBuf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:522,1
    - Dst: ProcessCatchupInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:526,1
    - Dst: ProcessNotifyInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:530,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:543,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/tcop/postgres.c:545,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - blocked
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 549
    functionName: ProcessClientReadInterrupt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - SetLatch
    - ProcessCatchupInterrupt
    - ProcessNotifyInterrupt
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void ProcessClientReadInterrupt(bool blocked)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:593,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/tcop/postgres.c:597,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - blocked
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 601
    functionName: ProcessClientWriteInterrupt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - SetLatch
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void ProcessClientWriteInterrupt(bool blocked)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_QUERY_PARSE_START
      Src: /src/postgres/src/backend/tcop/postgres.c:621,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:624,1
    - Dst: raw_parser
      Src: /src/postgres/src/backend/tcop/postgres.c:626,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:629,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/tcop/postgres.c:636,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:639,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:640,1
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:651,1
    - Dst: stringToNodeWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:652,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:654,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:656,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:657,1
    - Dst: TRACE_POSTGRESQL_QUERY_PARSE_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:664,1
    - Dst: elog_node_display
      Src: /src/postgres/src/backend/tcop/postgres.c:667,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - query_string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 671
    functionName: pg_parse_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 3
    functionsReached:
    - elog
    - nodeToStringWithLocations
    - copyObject
    - raw_parser
    - pfree
    - stringToNodeWithLocations
    - elog_node_display
    - TRACE_POSTGRESQL_QUERY_PARSE_DONE
    - ResetUsage
    - TRACE_POSTGRESQL_QUERY_PARSE_START
    - equal
    - ShowUsage
    linkageType: ''
    returnType: List
    signature: 'List *

      pg_parse_query(const char *query_string)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_QUERY_REWRITE_START
      Src: /src/postgres/src/backend/tcop/postgres.c:692,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:698,1
    - Dst: parse_analyze_fixedparams
      Src: /src/postgres/src/backend/tcop/postgres.c:700,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:704,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/tcop/postgres.c:709,1
    - Dst: TRACE_POSTGRESQL_QUERY_REWRITE_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - parsetree
    - query_string
    - paramTypes
    - numParams
    - queryEnv
    argTypes:
    - RawStmt*
    - char*
    - Oid*
    - int
    - QueryEnvironment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 714
    functionName: pg_analyze_and_rewrite_fixedparams
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - TRACE_POSTGRESQL_QUERY_REWRITE_DONE
    - pg_rewrite_query
    - parse_analyze_fixedparams
    - TRACE_POSTGRESQL_QUERY_REWRITE_START
    - ResetUsage
    - ShowUsage
    linkageType: ''
    returnType: List
    signature: "List *\npg_analyze_and_rewrite_fixedparams(RawStmt *parsetree,\n\t\t\t\t\t\t\t\t
      \  const char *query_string,\n\t\t\t\t\t\t\t\t   const Oid *paramTypes,\n\t\t\t\t\t\t\t\t
      \  int numParams,\n\t\t\t\t\t\t\t\t   QueryEnvironment *queryEnv)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_QUERY_REWRITE_START
      Src: /src/postgres/src/backend/tcop/postgres.c:731,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:737,1
    - Dst: parse_analyze_varparams
      Src: /src/postgres/src/backend/tcop/postgres.c:739,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:750,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:751,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:752,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:757,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/tcop/postgres.c:762,1
    - Dst: TRACE_POSTGRESQL_QUERY_REWRITE_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:764,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - parsetree
    - query_string
    - paramTypes
    - numParams
    - queryEnv
    argTypes:
    - RawStmt*
    - char*
    - Oid**
    - int*
    - QueryEnvironment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 767
    functionName: pg_analyze_and_rewrite_varparams
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errcode
    - TRACE_POSTGRESQL_QUERY_REWRITE_DONE
    - pg_rewrite_query
    - ereport
    - TRACE_POSTGRESQL_QUERY_REWRITE_START
    - ResetUsage
    - errmsg
    - parse_analyze_varparams
    - ShowUsage
    linkageType: ''
    returnType: List
    signature: "List *\npg_analyze_and_rewrite_varparams(RawStmt *parsetree,\n\t\t\t\t\t\t\t\t
      const char *query_string,\n\t\t\t\t\t\t\t\t Oid **paramTypes,\n\t\t\t\t\t\t\t\t
      int *numParams,\n\t\t\t\t\t\t\t\t QueryEnvironment *queryEnv)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_QUERY_REWRITE_START
      Src: /src/postgres/src/backend/tcop/postgres.c:785,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:791,1
    - Dst: parse_analyze_withcb
      Src: /src/postgres/src/backend/tcop/postgres.c:793,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:797,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/tcop/postgres.c:802,1
    - Dst: TRACE_POSTGRESQL_QUERY_REWRITE_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - parsetree
    - query_string
    - parserSetup
    - parserSetupArg
    - queryEnv
    argTypes:
    - RawStmt*
    - char*
    - ParserSetupHook
    - void*
    - QueryEnvironment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 807
    functionName: pg_analyze_and_rewrite_withcb
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - parse_analyze_withcb
    - TRACE_POSTGRESQL_QUERY_REWRITE_DONE
    - pg_rewrite_query
    - TRACE_POSTGRESQL_QUERY_REWRITE_START
    - ResetUsage
    - ShowUsage
    linkageType: ''
    returnType: List
    signature: "List *\npg_analyze_and_rewrite_withcb(RawStmt *parsetree,\n\t\t\t\t\t\t\t
      \ const char *query_string,\n\t\t\t\t\t\t\t  ParserSetupHook parserSetup,\n\t\t\t\t\t\t\t
      \ void *parserSetupArg,\n\t\t\t\t\t\t\t  QueryEnvironment *queryEnv)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: elog_node_display
      Src: /src/postgres/src/backend/tcop/postgres.c:821,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:825,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/tcop/postgres.c:830,1
    - Dst: QueryRewrite
      Src: /src/postgres/src/backend/tcop/postgres.c:835,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:839,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/tcop/postgres.c:848,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:850,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:851,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:864,1
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:865,1
    - Dst: stringToNodeWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:866,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/postgres.c:874,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:875,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:879,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:880,1
    - Dst: elog_node_display
      Src: /src/postgres/src/backend/tcop/postgres.c:888,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - query
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 815
    functionDepth: 1
    functionLinenumber: 815
    functionLinenumberEnd: 892
    functionName: pg_rewrite_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 4
    functionsReached:
    - equal
    - elog
    - nodeToStringWithLocations
    - copyObject
    - pfree
    - lappend
    - elog_node_display
    - lfirst_node
    - ResetUsage
    - stringToNodeWithLocations
    - list_make1
    - QueryRewrite
    - ShowUsage
    linkageType: ''
    returnType: List
    signature: 'List *

      pg_rewrite_query(Query *query)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:864,1
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:865,1
    - Dst: stringToNodeWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:866,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/postgres.c:874,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 862
    functionDepth: 1
    functionLinenumber: 862
    functionLinenumberEnd: 876
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 323
    functionsReached:
    - nodeToStringWithLocations
    - pfree
    - lappend
    - stringToNodeWithLocations
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, querytree_list)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:910,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/tcop/postgres.c:910,1
    - Dst: TRACE_POSTGRESQL_QUERY_PLAN_START
      Src: /src/postgres/src/backend/tcop/postgres.c:912,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:915,1
    - Dst: planner
      Src: /src/postgres/src/backend/tcop/postgres.c:918,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:921,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/tcop/postgres.c:928,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:936,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:937,1
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:949,1
    - Dst: stringToNodeWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:950,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:951,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:959,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:960,1
    - Dst: elog_node_display
      Src: /src/postgres/src/backend/tcop/postgres.c:972,1
    - Dst: TRACE_POSTGRESQL_QUERY_PLAN_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:974,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 5
    argNames:
    - querytree
    - query_string
    - cursorOptions
    - boundParams
    - es
    argTypes:
    - Query*
    - char*
    - int
    - ParamListInfo
    - ExplainState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 899
    functionDepth: 2
    functionLinenumber: 899
    functionLinenumberEnd: 977
    functionName: pg_plan_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - elog
    - nodeToStringWithLocations
    - copyObject
    - Assert
    - ActiveSnapshotSet
    - pfree
    - TRACE_POSTGRESQL_QUERY_PLAN_START
    - elog_node_display
    - ResetUsage
    - stringToNodeWithLocations
    - equal
    - planner
    - TRACE_POSTGRESQL_QUERY_PLAN_DONE
    - ShowUsage
    linkageType: ''
    returnType: PlannedStmt
    signature: "PlannedStmt *\npg_plan_query(Query *querytree, const char *query_string,
      int cursorOptions,\n\t\t\t  ParamListInfo boundParams, ExplainState *es)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:996,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/tcop/postgres.c:1002,1
    - Dst: pg_plan_query
      Src: /src/postgres/src/backend/tcop/postgres.c:1013,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/postgres.c:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - querytrees
    - query_string
    - cursorOptions
    - boundParams
    argTypes:
    - List*
    - char*
    - int
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 987
    functionDepth: 3
    functionLinenumber: 987
    functionLinenumberEnd: 1021
    functionName: pg_plan_queries
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - lappend
    - makeNode
    - pg_plan_query
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: "List *\npg_plan_queries(List *querytrees, const char *query_string,
      int cursorOptions,\n\t\t\t\tParamListInfo boundParams)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:996,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/tcop/postgres.c:1002,1
    - Dst: pg_plan_query
      Src: /src/postgres/src/backend/tcop/postgres.c:1013,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/postgres.c:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 994
    functionDepth: 3
    functionLinenumber: 994
    functionLinenumberEnd: 1018
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 323
    functionsReached:
    - lappend
    - makeNode
    - pg_plan_query
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(query_list, querytrees)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:1046,1
    - Dst: TRACE_POSTGRESQL_QUERY_START
      Src: /src/postgres/src/backend/tcop/postgres.c:1048,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1055,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1064,1
    - Dst: drop_unnamed_stmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1072,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1077,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/tcop/postgres.c:1083,1
    - Dst: check_log_statement
      Src: /src/postgres/src/backend/tcop/postgres.c:1086,1
    - Dst: truncate_query_log
      Src: /src/postgres/src/backend/tcop/postgres.c:1091,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1093,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1094,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1096,1
    - Dst: errdetail_execute
      Src: /src/postgres/src/backend/tcop/postgres.c:1097,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:1101,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1107,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/postgres.c:1117,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:1124,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1137,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1138,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/postgres.c:1146,1
    - Dst: GetCommandTagNameAndLen
      Src: /src/postgres/src/backend/tcop/postgres.c:1147,1
    - Dst: set_ps_display_with_len
      Src: /src/postgres/src/backend/tcop/postgres.c:1149,1
    - Dst: BeginCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1151,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:1161,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1162,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1163,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1164,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1165,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1169,1
    - Dst: BeginImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:1179,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1182,1
    - Dst: analyze_requires_snapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1187,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1189,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1189,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/postgres.c:1205,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:1208,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1211,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1214,1
    - Dst: pg_analyze_and_rewrite_fixedparams
      Src: /src/postgres/src/backend/tcop/postgres.c:1216,1
    - Dst: pg_plan_queries
      Src: /src/postgres/src/backend/tcop/postgres.c:1219,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1233,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1236,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/tcop/postgres.c:1242,1
    - Dst: PortalDefineQuery
      Src: /src/postgres/src/backend/tcop/postgres.c:1251,1
    - Dst: PortalStart
      Src: /src/postgres/src/backend/tcop/postgres.c:1261,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:1270,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:1276,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:1278,1
    - Dst: PortalSetResultFormat
      Src: /src/postgres/src/backend/tcop/postgres.c:1283,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/tcop/postgres.c:1288,1
    - Dst: SetRemoteDestReceiverParams
      Src: /src/postgres/src/backend/tcop/postgres.c:1290,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1295,1
    - Dst: PortalRun
      Src: /src/postgres/src/backend/tcop/postgres.c:1300,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/tcop/postgres.c:1307,1
    - Dst: PortalDrop
      Src: /src/postgres/src/backend/tcop/postgres.c:1309,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/postgres.c:1311,1
    - Dst: EndImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:1323,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1324,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:1326,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:1341,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/postgres.c:1347,1
    - Dst: disable_statement_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:1354,1
    - Dst: EndCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1363,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/tcop/postgres.c:1367,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1375,1
    - Dst: NullCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1381,1
    - Dst: check_log_duration
      Src: /src/postgres/src/backend/tcop/postgres.c:1386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1390,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1391,1
    - Dst: truncate_query_log
      Src: /src/postgres/src/backend/tcop/postgres.c:1398,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1401,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1404,1
    - Dst: errdetail_execute
      Src: /src/postgres/src/backend/tcop/postgres.c:1405,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:1408,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1414,1
    - Dst: TRACE_POSTGRESQL_QUERY_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:1416,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 101
    argCount: 1
    argNames:
    - query_string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1029
    functionDepth: 4
    functionLinenumber: 1029
    functionLinenumberEnd: 1419
    functionName: exec_simple_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - PopActiveSnapshot
    - CreateDestReceiver
    - errcode
    - DestReceiver*::rDestroy
    - drop_unnamed_stmt
    - disable_statement_timeout
    - CreatePortal
    - IsTransactionExitStmt
    - finish_xact_command
    - ResetUsage
    - BeginCommand
    - TRACE_POSTGRESQL_QUERY_START
    - PortalDrop
    - CreateCommandTag
    - GetPortalByName
    - pgstat_report_query_id
    - PortalIsValid
    - pfree
    - Assert
    - CommandCounterIncrement
    - lnext
    - errmsg
    - pgstat_report_activity
    - list_length
    - start_xact_command
    - errdetail_execute
    - BeginImplicitTransactionBlock
    - pg_plan_queries
    - pgstat_report_plan_id
    - errhidestmt
    - SetRemoteDestReceiverParams
    - PortalRun
    - ereport
    - set_ps_display_with_len
    - CHECK_FOR_INTERRUPTS
    - IsAbortedTransactionBlockState
    - PortalSetResultFormat
    - check_log_duration
    - truncate_query_log
    - GetCommandTagNameAndLen
    - GetTransactionSnapshot
    - AllocSetContextCreate
    - check_log_statement
    - pg_analyze_and_rewrite_fixedparams
    - EndCommand
    - NullCommand
    - lfirst_node
    - pg_parse_query
    - PortalDefineQuery
    - MemoryContextSwitchTo
    - TRACE_POSTGRESQL_QUERY_DONE
    - EndImplicitTransactionBlock
    - PortalStart
    - MemoryContextDelete
    - analyze_requires_snapshot
    - PushActiveSnapshot
    - IsA
    - ShowUsage
    linkageType: ''
    returnType: void
    signature: void exec_simple_query(const char *query_string)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:1124,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1137,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1138,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/postgres.c:1146,1
    - Dst: GetCommandTagNameAndLen
      Src: /src/postgres/src/backend/tcop/postgres.c:1147,1
    - Dst: set_ps_display_with_len
      Src: /src/postgres/src/backend/tcop/postgres.c:1149,1
    - Dst: BeginCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1151,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:1161,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1162,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1163,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1164,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1165,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1169,1
    - Dst: BeginImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:1179,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1182,1
    - Dst: analyze_requires_snapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1187,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1189,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1189,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/postgres.c:1205,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:1208,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1211,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1214,1
    - Dst: pg_analyze_and_rewrite_fixedparams
      Src: /src/postgres/src/backend/tcop/postgres.c:1216,1
    - Dst: pg_plan_queries
      Src: /src/postgres/src/backend/tcop/postgres.c:1219,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1233,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1236,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/tcop/postgres.c:1242,1
    - Dst: PortalDefineQuery
      Src: /src/postgres/src/backend/tcop/postgres.c:1251,1
    - Dst: PortalStart
      Src: /src/postgres/src/backend/tcop/postgres.c:1261,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:1270,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:1276,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:1278,1
    - Dst: PortalSetResultFormat
      Src: /src/postgres/src/backend/tcop/postgres.c:1283,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/tcop/postgres.c:1288,1
    - Dst: SetRemoteDestReceiverParams
      Src: /src/postgres/src/backend/tcop/postgres.c:1290,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1295,1
    - Dst: PortalRun
      Src: /src/postgres/src/backend/tcop/postgres.c:1300,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/tcop/postgres.c:1307,1
    - Dst: PortalDrop
      Src: /src/postgres/src/backend/tcop/postgres.c:1309,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/postgres.c:1311,1
    - Dst: EndImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:1323,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1324,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:1326,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:1341,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/postgres.c:1347,1
    - Dst: disable_statement_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:1354,1
    - Dst: EndCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1363,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/tcop/postgres.c:1367,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1368
      start: 1122
    functionDepth: 4
    functionLinenumber: 1122
    functionLinenumberEnd: 1368
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 323
    functionsReached:
    - PopActiveSnapshot
    - CreateDestReceiver
    - errcode
    - DestReceiver*::rDestroy
    - disable_statement_timeout
    - CreatePortal
    - IsTransactionExitStmt
    - finish_xact_command
    - BeginCommand
    - PortalDrop
    - CreateCommandTag
    - GetPortalByName
    - pgstat_report_query_id
    - PortalIsValid
    - Assert
    - CommandCounterIncrement
    - lnext
    - errmsg
    - start_xact_command
    - BeginImplicitTransactionBlock
    - pg_plan_queries
    - pgstat_report_plan_id
    - SetRemoteDestReceiverParams
    - PortalRun
    - ereport
    - set_ps_display_with_len
    - CHECK_FOR_INTERRUPTS
    - IsAbortedTransactionBlockState
    - PortalSetResultFormat
    - GetCommandTagNameAndLen
    - GetTransactionSnapshot
    - AllocSetContextCreate
    - pg_analyze_and_rewrite_fixedparams
    - EndCommand
    - lfirst_node
    - PortalDefineQuery
    - MemoryContextSwitchTo
    - EndImplicitTransactionBlock
    - PortalStart
    - MemoryContextDelete
    - analyze_requires_snapshot
    - PushActiveSnapshot
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(parsetree_item, parsetree_list)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:1447,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:1449,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1452,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1454,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:1455,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1465,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1484,1
    - Dst: drop_unnamed_stmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1489,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:1492,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1495,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/tcop/postgres.c:1502,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/postgres.c:1509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1510,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1511,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1512,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/postgres.c:1518,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:1528,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1529,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1530,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1532,1
    - Dst: CreateCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:1539,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/postgres.c:1540,1
    - Dst: analyze_requires_snapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1545,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1547,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1547,1
    - Dst: pg_analyze_and_rewrite_varparams
      Src: /src/postgres/src/backend/tcop/postgres.c:1556,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1564,1
    - Dst: CreateCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:1570,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/tcop/postgres.c:1582,1
    - Dst: CompleteCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:1585,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1596,1
    - Dst: StorePreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:1603,1
    - Dst: SaveCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:1610,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1614,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/postgres.c:1621,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:1627,1
    - Dst: check_log_duration
      Src: /src/postgres/src/backend/tcop/postgres.c:1632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1635,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1636,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1637,1
    - Dst: truncate_query_log
      Src: /src/postgres/src/backend/tcop/postgres.c:1644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1646,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1647,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1651,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:1654,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1660,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 66
    argCount: 4
    argNames:
    - query_string
    - stmt_name
    - paramTypes
    - numParams
    argTypes:
    - char*
    - char*
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1426
    functionDepth: 2
    functionLinenumber: 1426
    functionLinenumberEnd: 1663
    functionName: exec_parse_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - set_ps_display
    - errcode
    - drop_unnamed_stmt
    - IsTransactionExitStmt
    - StorePreparedStatement
    - ResetUsage
    - pq_putemptymessage
    - CreateCachedPlan
    - CreateCommandTag
    - linitial_node
    - pfree
    - CommandCounterIncrement
    - errmsg
    - pgstat_report_activity
    - list_length
    - pg_analyze_and_rewrite_varparams
    - MemoryContextSetParent
    - start_xact_command
    - errmsg_internal
    - errhidestmt
    - SaveCachedPlan
    - ereport
    - CHECK_FOR_INTERRUPTS
    - IsAbortedTransactionBlockState
    - check_log_duration
    - GetTransactionSnapshot
    - truncate_query_log
    - AllocSetContextCreate
    - pg_parse_query
    - MemoryContextSwitchTo
    - analyze_requires_snapshot
    - PushActiveSnapshot
    - CompleteCachedPlan
    - ShowUsage
    linkageType: ''
    returnType: void
    signature: "void exec_parse_message(const char *query_string,\t/* string to execute
      */\n\t\t\t\t   const char *stmt_name,\t/* name for prepared stmt */\n\t\t\t\t
      \  Oid *paramTypes, /* parameter types */\n\t\t\t\t   int numParams)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:1695,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:1696,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1698,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:1699,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:1708,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1716,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1717,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1718,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:1726,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/postgres.c:1728,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:1730,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/tcop/postgres.c:1732,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1734,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:1739,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1742,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1750,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1753,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:1756,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tcop/postgres.c:1759,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:1761,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:1765,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1768,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1769,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1770,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1774,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1775,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1776,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:1787,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1789,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1791,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1792,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1793,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/tcop/postgres.c:1801,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/tcop/postgres.c:1803,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1811,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:1814,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:1818,1
    - Dst: analyze_requires_snapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1831,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1833,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1833,1
    - Dst: makeParamList
      Src: /src/postgres/src/backend/tcop/postgres.c:1857,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:1872,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/tcop/postgres.c:1886,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/tcop/postgres.c:1886,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:1889,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:1910,1
    - Dst: pg_client_to_server
      Src: /src/postgres/src/backend/tcop/postgres.c:1919,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/tcop/postgres.c:1924,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1939,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/tcop/postgres.c:1942,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:1945,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:1956,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1961,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:1964,1
    - Dst: getTypeBinaryInputInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:1976,1
    - Dst: OidReceiveFunctionCall
      Src: /src/postgres/src/backend/tcop/postgres.c:1983,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1987,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1988,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1989,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1994,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1995,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1996,1
    - Dst: BuildParamLogString
      Src: /src/postgres/src/backend/tcop/postgres.c:2026,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:2034,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:2048,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tcop/postgres.c:2051,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:2053,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:2056,1
    - Dst: GetCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:2063,1
    - Dst: PortalDefineQuery
      Src: /src/postgres/src/backend/tcop/postgres.c:2071,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/postgres.c:2079,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2081,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/tcop/postgres.c:2083,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/tcop/postgres.c:2085,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:2092,1
    - Dst: PortalStart
      Src: /src/postgres/src/backend/tcop/postgres.c:2097,1
    - Dst: PortalSetResultFormat
      Src: /src/postgres/src/backend/tcop/postgres.c:2102,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2114,1
    - Dst: check_log_duration
      Src: /src/postgres/src/backend/tcop/postgres.c:2119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2123,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2124,1
    - Dst: truncate_query_log
      Src: /src/postgres/src/backend/tcop/postgres.c:2131,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2133,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2134,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2140,1
    - Dst: errdetail_params
      Src: /src/postgres/src/backend/tcop/postgres.c:2141,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:2144,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:2150,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:2152,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 171
    argCount: 1
    argNames:
    - input_message
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2155
      start: 1670
    functionDepth: 2
    functionLinenumber: 1670
    functionLinenumberEnd: 2155
    functionName: exec_bind_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - set_ps_display
    - errcode
    - OidReceiveFunctionCall
    - pstrdup
    - palloc_array
    - IsTransactionExitStmt
    - CreatePortal
    - ResetUsage
    - pq_putemptymessage
    - FetchPreparedStatement
    - OidInputFunctionCall
    - pg_client_to_server
    - foreach
    - pgstat_report_query_id
    - pfree
    - valgrind_report_error_query
    - makeParamList
    - pq_getmsgend
    - errmsg
    - pgstat_report_activity
    - pq_getmsgbytes
    - GetCachedPlan
    - pq_getmsgstring
    - start_xact_command
    - errmsg_internal
    - pgstat_report_plan_id
    - errhidestmt
    - getTypeBinaryInputInfo
    - ereport
    - IsAbortedTransactionBlockState
    - pnstrdup
    - PortalSetResultFormat
    - GetTransactionSnapshot
    - check_log_duration
    - truncate_query_log
    - errdetail_params
    - lfirst_node
    - getTypeInputInfo
    - palloc0_array
    - BuildParamLogString
    - initReadOnlyStringInfo
    - INT64CONST
    - PortalDefineQuery
    - unconstify
    - MemoryContextSwitchTo
    - PortalStart
    - analyze_requires_snapshot
    - PushActiveSnapshot
    - pq_getmsgint
    - ShowUsage
    linkageType: ''
    returnType: void
    signature: void exec_bind_message(StringInfo input_message)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:2189,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:2190,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2191,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2192,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:2201,1
    - Dst: NullCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:2202,1
    - Dst: IsTransactionStmtList
      Src: /src/postgres/src/backend/tcop/postgres.c:2207,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:2215,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:2217,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:2227,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/postgres.c:2229,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2231,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/tcop/postgres.c:2233,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/tcop/postgres.c:2235,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/postgres.c:2240,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2242,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/tcop/postgres.c:2244,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/tcop/postgres.c:2246,1
    - Dst: GetCommandTagNameAndLen
      Src: /src/postgres/src/backend/tcop/postgres.c:2251,1
    - Dst: set_ps_display_with_len
      Src: /src/postgres/src/backend/tcop/postgres.c:2253,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:2256,1
    - Dst: BeginCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:2258,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/tcop/postgres.c:2264,1
    - Dst: SetRemoteDestReceiverParams
      Src: /src/postgres/src/backend/tcop/postgres.c:2266,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:2272,1
    - Dst: check_log_statement
      Src: /src/postgres/src/backend/tcop/postgres.c:2283,1
    - Dst: truncate_query_log
      Src: /src/postgres/src/backend/tcop/postgres.c:2288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2291,1
    - Dst: _
      Src: /src/postgres/src/backend/tcop/postgres.c:2293,1
    - Dst: _
      Src: /src/postgres/src/backend/tcop/postgres.c:2294,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2299,1
    - Dst: errdetail_params
      Src: /src/postgres/src/backend/tcop/postgres.c:2300,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:2304,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:2311,1
    - Dst: IsTransactionExitStmtList
      Src: /src/postgres/src/backend/tcop/postgres.c:2312,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2313,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2314,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2315,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:2319,1
    - Dst: PortalRun
      Src: /src/postgres/src/backend/tcop/postgres.c:2335,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/tcop/postgres.c:2342,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:2359,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/postgres.c:2374,1
    - Dst: disable_statement_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:2386,1
    - Dst: EndCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:2390,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2396,1
    - Dst: check_log_duration
      Src: /src/postgres/src/backend/tcop/postgres.c:2408,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2411,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2412,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2413,1
    - Dst: truncate_query_log
      Src: /src/postgres/src/backend/tcop/postgres.c:2420,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2422,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2423,1
    - Dst: _
      Src: /src/postgres/src/backend/tcop/postgres.c:2426,1
    - Dst: _
      Src: /src/postgres/src/backend/tcop/postgres.c:2427,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2432,1
    - Dst: errdetail_params
      Src: /src/postgres/src/backend/tcop/postgres.c:2433,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:2436,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:2442,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:2444,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 96
    argCount: 2
    argNames:
    - portal_name
    - max_rows
    argTypes:
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2447
      start: 2162
    functionDepth: 3
    functionLinenumber: 2162
    functionLinenumberEnd: 2447
    functionName: exec_execute_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - CreateDestReceiver
    - errcode
    - DestReceiver*::rDestroy
    - disable_statement_timeout
    - pstrdup
    - finish_xact_command
    - ResetUsage
    - BeginCommand
    - pq_putemptymessage
    - GetPortalByName
    - PortalIsValid
    - foreach
    - pgstat_report_query_id
    - Assert
    - _
    - pfree
    - valgrind_report_error_query
    - CommandCounterIncrement
    - errmsg
    - pgstat_report_activity
    - start_xact_command
    - pgstat_report_plan_id
    - errhidestmt
    - SetRemoteDestReceiverParams
    - PortalRun
    - ereport
    - set_ps_display_with_len
    - CHECK_FOR_INTERRUPTS
    - IsAbortedTransactionBlockState
    - check_log_duration
    - errdetail_params
    - GetCommandTagNameAndLen
    - truncate_query_log
    - IsTransactionStmtList
    - check_log_statement
    - EndCommand
    - NullCommand
    - lfirst_node
    - INT64CONST
    - IsTransactionExitStmtList
    - ShowUsage
    linkageType: ''
    returnType: void
    signature: void exec_execute_message(const char *portal_name, long max_rows)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/postgres.c:2469,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/postgres.c:2471,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - stmt_list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2476
      start: 2456
    functionDepth: 2
    functionLinenumber: 2456
    functionLinenumberEnd: 2476
    functionName: check_log_statement
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - lfirst
    - GetCommandLogLevel
    linkageType: ''
    returnType: bool
    signature: bool check_log_statement(List *stmt_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/postgres.c:2469,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/postgres.c:2471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2473
      start: 2467
    functionDepth: 2
    functionLinenumber: 2467
    functionLinenumberEnd: 2473
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 325
    functionsReached:
    - lfirst
    - GetCommandLogLevel
    linkageType: ''
    returnType: void
    signature: void foreach(stmt_item, stmt_list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TimestampDifference
      Src: /src/postgres/src/backend/tcop/postgres.c:2508,1
    - Dst: GetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:2508,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:2509,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/backend/tcop/postgres.c:2536,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/tcop/postgres.c:2540,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 16
    argCount: 2
    argNames:
    - msec_str
    - was_logged
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2550
      start: 2495
    functionDepth: 3
    functionLinenumber: 2495
    functionLinenumberEnd: 2550
    functionName: check_log_duration
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 4
    functionsReached:
    - GetCurrentTimestamp
    - pg_prng_double
    - GetCurrentStatementStartTimestamp
    - TimestampDifference
    - snprintf
    linkageType: ''
    returnType: int
    signature: int check_log_duration(char *msec_str, bool was_logged)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/postgres.c:2570,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/tcop/postgres.c:2580,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tcop/postgres.c:2581,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tcop/postgres.c:2582,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2586
      start: 2559
    functionDepth: 1
    functionLinenumber: 2559
    functionLinenumberEnd: 2586
    functionName: truncate_query_log
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 4
    functionsReached:
    - strlen
    - pg_mbcliplen
    - memcpy
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      truncate_query_log(const char *query)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2601,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:2603,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:2608,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2611,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - raw_parsetree_list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2618
      start: 2594
    functionDepth: 1
    functionLinenumber: 2594
    functionLinenumberEnd: 2618
    functionName: errdetail_execute
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - IsA
    - FetchPreparedStatement
    - errdetail
    - lfirst_node
    linkageType: ''
    returnType: int
    signature: int errdetail_execute(List *raw_parsetree_list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2601,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:2603,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:2608,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2611,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2615
      start: 2599
    functionDepth: 1
    functionLinenumber: 2599
    functionLinenumberEnd: 2615
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 325
    functionsReached:
    - IsA
    - FetchPreparedStatement
    - errdetail
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(parsetree_item, raw_parsetree_list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BuildParamLogString
      Src: /src/postgres/src/backend/tcop/postgres.c:2634,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2636,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - params
    argTypes:
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2640
      start: 2627
    functionDepth: 1
    functionLinenumber: 2627
    functionLinenumberEnd: 2640
    functionName: errdetail_params
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - BuildParamLogString
    - errdetail
    linkageType: ''
    returnType: int
    signature: int errdetail_params(ParamListInfo params)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2653,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2656,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2659,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2662,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2665,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2668,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2671,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2674,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - reason
    argTypes:
    - RecoveryConflictReason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2679
      start: 2647
    functionDepth: 1
    functionLinenumber: 2647
    functionLinenumberEnd: 2679
    functionName: errdetail_recovery_conflict
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errdetail
    linkageType: ''
    returnType: int
    signature: int errdetail_recovery_conflict(RecoveryConflictReason reason)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:2699,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/backend/tcop/postgres.c:2700,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tcop/postgres.c:2710,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tcop/postgres.c:2713,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tcop/postgres.c:2719,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tcop/postgres.c:2722,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:2727,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2686
    functionDepth: 3
    functionLinenumber: 2686
    functionLinenumberEnd: 2728
    functionName: bind_param_error_callback
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - pfree
    - errcontext
    - initStringInfo
    - appendStringInfoStringQuoted
    linkageType: ''
    returnType: void
    signature: void bind_param_error_callback(void *arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:2744,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:2747,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:2754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2762,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2763,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2764,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:2768,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:2779,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2781,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2782,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2783,1
    - Dst: pq_beginmessage_reuse
      Src: /src/postgres/src/backend/tcop/postgres.c:2792,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/tcop/postgres.c:2793,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/postgres.c:2799,1
    - Dst: pq_endmessage_reuse
      Src: /src/postgres/src/backend/tcop/postgres.c:2801,1
    - Dst: CachedPlanGetTargetList
      Src: /src/postgres/src/backend/tcop/postgres.c:2811,1
    - Dst: SendRowDescriptionMessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2813,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2819,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - stmt_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2820
      start: 2735
    functionDepth: 3
    functionLinenumber: 2735
    functionLinenumberEnd: 2820
    functionName: exec_describe_statement_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - start_xact_command
    - pq_sendint16
    - SendRowDescriptionMessage
    - errcode
    - Assert
    - pq_endmessage_reuse
    - pq_sendint32
    - ereport
    - pq_beginmessage_reuse
    - MemoryContextSwitchTo
    - IsAbortedTransactionBlockState
    - errmsg
    - CachedPlanGetTargetList
    - pq_putemptymessage
    - FetchPreparedStatement
    linkageType: ''
    returnType: void
    signature: void exec_describe_statement_message(const char *stmt_name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:2836,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:2839,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:2841,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:2842,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2843,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2845,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:2855,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2857,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2858,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2859,1
    - Dst: SendRowDescriptionMessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2866,1
    - Dst: FetchPortalTargetList
      Src: /src/postgres/src/backend/tcop/postgres.c:2868,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2871,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - portal_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2872
      start: 2827
    functionDepth: 3
    functionLinenumber: 2827
    functionLinenumberEnd: 2872
    functionName: exec_describe_portal_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - start_xact_command
    - PortalIsValid
    - SendRowDescriptionMessage
    - errcode
    - ereport
    - MemoryContextSwitchTo
    - IsAbortedTransactionBlockState
    - errmsg
    - FetchPortalTargetList
    - pq_putemptymessage
    - GetPortalByName
    linkageType: ''
    returnType: void
    signature: void exec_describe_portal_message(const char *portal_name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:2883,1
    - Dst: BeginImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:2896,1
    - Dst: enable_statement_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:2906,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:2912,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:2913,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2915
      start: 2878
    functionDepth: 2
    functionLinenumber: 2878
    functionLinenumberEnd: 2915
    functionName: start_xact_command
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 7
    functionsReached:
    - BeginImplicitTransactionBlock
    - enable_statement_timeout
    - enable_timeout_after
    - StartTransactionCommand
    - get_timeout_active
    linkageType: ''
    returnType: void
    signature: void start_xact_command(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: disable_statement_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:2921,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:2925,1
    - Dst: MemoryContextCheck
      Src: /src/postgres/src/backend/tcop/postgres.c:2930,1
    - Dst: MemoryContextStats
      Src: /src/postgres/src/backend/tcop/postgres.c:2935,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2940
      start: 2917
    functionDepth: 2
    functionLinenumber: 2917
    functionLinenumberEnd: 2940
    functionName: finish_xact_command
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 3
    functionsReached:
    - MemoryContextCheck
    - disable_statement_timeout
    - CommitTransactionCommand
    - MemoryContextStats
    linkageType: ''
    returnType: void
    signature: void finish_xact_command(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:2952,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2963
      start: 2949
    functionDepth: 1
    functionLinenumber: 2949
    functionLinenumberEnd: 2963
    functionName: IsTransactionExitStmt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 4
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool IsTransactionExitStmt(Node *parsetree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/postgres.c:2969,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2971,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2974,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - pstmts
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2978
      start: 2966
    functionDepth: 2
    functionLinenumber: 2966
    functionLinenumberEnd: 2978
    functionName: IsTransactionExitStmtList
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - list_length
    - IsTransactionExitStmt
    - linitial_node
    linkageType: ''
    returnType: bool
    signature: bool IsTransactionExitStmtList(List *pstmts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/postgres.c:2984,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2986,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:2989,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - pstmts
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2993
      start: 2981
    functionDepth: 1
    functionLinenumber: 2981
    functionLinenumberEnd: 2993
    functionName: IsTransactionStmtList
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - list_length
    - IsA
    - linitial_node
    linkageType: ''
    returnType: bool
    signature: bool IsTransactionStmtList(List *pstmts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DropCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:3005,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3007
      start: 2996
    functionDepth: 1
    functionLinenumber: 2996
    functionLinenumberEnd: 3007
    functionName: drop_unnamed_stmt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - DropCachedPlan
    linkageType: ''
    returnType: void
    signature: void drop_unnamed_stmt(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sigaddset
      Src: /src/postgres/src/backend/tcop/postgres.c:3024,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/tcop/postgres.c:3025,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:3032,1
    - Dst: GetQuitSignalReason
      Src: /src/postgres/src/backend/tcop/postgres.c:3069,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3073,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3074,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3075,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3079,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3080,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3081,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3082,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/postgres.c:3086,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3091,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3092,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3093,1
    - Dst: _exit
      Src: /src/postgres/src/backend/tcop/postgres.c:3111,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3112
      start: 3021
    functionDepth: 1
    functionLinenumber: 3021
    functionLinenumberEnd: 3112
    functionName: quickdie
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errcode
    - HOLD_INTERRUPTS
    - ereport
    - sigprocmask
    - errhint
    - GetQuitSignalReason
    - errmsg
    - errdetail
    - _exit
    - sigaddset
    linkageType: ''
    returnType: void
    signature: void quickdie(SIGNAL_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SetLatch
      Src: /src/postgres/src/backend/tcop/postgres.c:3143,1
    - Dst: ProcessInterrupts
      Src: /src/postgres/src/backend/tcop/postgres.c:3152,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3153
      start: 3118
    functionDepth: 1
    functionLinenumber: 3118
    functionLinenumberEnd: 3153
    functionName: die
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 9
    functionsReached:
    - SetLatch
    - ProcessInterrupts
    linkageType: ''
    returnType: void
    signature: void die(SIGNAL_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SetLatch
      Src: /src/postgres/src/backend/tcop/postgres.c:3172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3173
      start: 3159
    functionDepth: 1
    functionLinenumber: 3159
    functionLinenumberEnd: 3173
    functionName: StatementCancelHandler
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - SetLatch
    linkageType: ''
    returnType: void
    signature: void StatementCancelHandler(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3180,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3181,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3182,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3186
      start: 3176
    functionDepth: 1
    functionLinenumber: 3176
    functionLinenumberEnd: 3186
    functionName: FloatExceptionHandler
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void FloatExceptionHandler(SIGNAL_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/tcop/postgres.c:3195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3198
      start: 3192
    functionDepth: 2
    functionLinenumber: 3192
    functionLinenumberEnd: 3198
    functionName: HandleRecoveryConflictInterrupt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - pg_atomic_read_u32
    linkageType: ''
    returnType: void
    signature: void HandleRecoveryConflictInterrupt(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: GetAwaitedLock
      Src: /src/postgres/src/backend/tcop/postgres.c:3217,1
    - Dst: CheckDeadLockAlert
      Src: /src/postgres/src/backend/tcop/postgres.c:3221,1
    - Dst: GetAwaitedLock
      Src: /src/postgres/src/backend/tcop/postgres.c:3232,1
    - Dst: HoldingBufferPinThatDelaysRecovery
      Src: /src/postgres/src/backend/tcop/postgres.c:3240,1
    - Dst: report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3252,1
    - Dst: HoldingBufferPinThatDelaysRecovery
      Src: /src/postgres/src/backend/tcop/postgres.c:3262,1
    - Dst: report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3265,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:3275,1
    - Dst: report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3278,1
    - Dst: report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3282,1
    - Dst: report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3288,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:3291,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - reason
    argTypes:
    - RecoveryConflictReason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3292
      start: 3203
    functionDepth: 1
    functionLinenumber: 3203
    functionLinenumberEnd: 3292
    functionName: ProcessRecoveryConflictInterrupt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - CheckDeadLockAlert
    - GetAwaitedLock
    - elog
    - IsTransactionOrTransactionBlock
    - HoldingBufferPinThatDelaysRecovery
    - report_recovery_conflict
    linkageType: ''
    returnType: void
    signature: void ProcessRecoveryConflictInterrupt(RecoveryConflictReason reason)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3307,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3308,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3309,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3310,1
    - Dst: errdetail_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3311,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/tcop/postgres.c:3329,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:3352,1
    - Dst: pg_atomic_fetch_or_u32
      Src: /src/postgres/src/backend/tcop/postgres.c:3370,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3380,1
    - Dst: pgstat_report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3381,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3382,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3384,1
    - Dst: errdetail_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3385,1
    - Dst: pgstat_report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3393,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3394,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3395,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3396,1
    - Dst: errdetail_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3397,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/postgres.c:3398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - reason
    argTypes:
    - RecoveryConflictReason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3400
      start: 3299
    functionDepth: 2
    functionLinenumber: 3299
    functionLinenumberEnd: 3400
    functionName: report_recovery_conflict
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - pgstat_report_recovery_conflict
    - errdetail_recovery_conflict
    - errcode
    - LockErrorCleanup
    - ereport
    - IsAbortedTransactionBlockState
    - errhint
    - errmsg
    - IsSubTransaction
    - pg_atomic_fetch_or_u32
    linkageType: ''
    returnType: void
    signature: void report_recovery_conflict(RecoveryConflictReason reason)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:3415,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:3416,1
    - Dst: pg_atomic_read_membarrier_u32
      Src: /src/postgres/src/backend/tcop/postgres.c:3419,1
    - Dst: pg_atomic_fetch_and_u32
      Src: /src/postgres/src/backend/tcop/postgres.c:3436,1
    - Dst: ProcessRecoveryConflictInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:3438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3441
      start: 3405
    functionDepth: 2
    functionLinenumber: 3405
    functionLinenumberEnd: 3441
    functionName: ProcessRecoveryConflictInterrupts
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_atomic_fetch_and_u32
    - pg_atomic_read_membarrier_u32
    - ProcessRecoveryConflictInterrupt
    linkageType: ''
    returnType: void
    signature: void ProcessRecoveryConflictInterrupts(void)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3473,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3478,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3479,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3480,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3481,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3482,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3483,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3484,1
    - Dst: ERRDETAIL_SIGNAL_SENDER
      Src: /src/postgres/src/backend/tcop/postgres.c:3485,1
    - Dst: IsLogicalWorker
      Src: /src/postgres/src/backend/tcop/postgres.c:3486,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3487,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3488,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3489,1
    - Dst: ERRDETAIL_SIGNAL_SENDER
      Src: /src/postgres/src/backend/tcop/postgres.c:3490,1
    - Dst: IsLogicalLauncher
      Src: /src/postgres/src/backend/tcop/postgres.c:3491,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3493,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:3494,1
    - Dst: ERRDETAIL_SIGNAL_SENDER
      Src: /src/postgres/src/backend/tcop/postgres.c:3495,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:3501,1
    - Dst: AmWalReceiverProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3503,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3504,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3505,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3506,1
    - Dst: ERRDETAIL_SIGNAL_SENDER
      Src: /src/postgres/src/backend/tcop/postgres.c:3507,1
    - Dst: AmBackgroundWorkerProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3508,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3509,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3510,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3511,1
    - Dst: ERRDETAIL_SIGNAL_SENDER
      Src: /src/postgres/src/backend/tcop/postgres.c:3513,1
    - Dst: AmIoWorkerProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3514,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3516,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:3517,1
    - Dst: ERRDETAIL_SIGNAL_SENDER
      Src: /src/postgres/src/backend/tcop/postgres.c:3518,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:3520,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3525,1
    - Dst: ERRDETAIL_SIGNAL_SENDER
      Src: /src/postgres/src/backend/tcop/postgres.c:3526,1
    - Dst: pq_check_connection
      Src: /src/postgres/src/backend/tcop/postgres.c:3541,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:3544,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3552,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3555,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3556,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3557,1
    - Dst: get_timeout_indicator
      Src: /src/postgres/src/backend/tcop/postgres.c:3591,1
    - Dst: get_timeout_indicator
      Src: /src/postgres/src/backend/tcop/postgres.c:3592,1
    - Dst: get_timeout_finish_time
      Src: /src/postgres/src/backend/tcop/postgres.c:3601,1
    - Dst: get_timeout_finish_time
      Src: /src/postgres/src/backend/tcop/postgres.c:3601,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3606,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3607,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3608,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3609,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3613,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3614,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3616,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3618,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3620,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3621,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3622,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3623,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3633,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3634,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3635,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3636,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/tcop/postgres.c:3640,1
    - Dst: ProcessRecoveryConflictInterrupts
      Src: /src/postgres/src/backend/tcop/postgres.c:3641,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/tcop/postgres.c:3654,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3655,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3656,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3657,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/tcop/postgres.c:3667,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3668,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3669,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3670,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/tcop/postgres.c:3680,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3681,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3682,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3683,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:3692,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/tcop/postgres.c:3695,1
    - Dst: ProcessProcSignalBarrier
      Src: /src/postgres/src/backend/tcop/postgres.c:3699,1
    - Dst: ProcessParallelMessages
      Src: /src/postgres/src/backend/tcop/postgres.c:3702,1
    - Dst: ProcessLogMemoryContextInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:3705,1
    - Dst: ProcessParallelApplyMessages
      Src: /src/postgres/src/backend/tcop/postgres.c:3708,1
    - Dst: ProcessSlotSyncMessage
      Src: /src/postgres/src/backend/tcop/postgres.c:3711,1
    - Dst: ProcessRepackMessages
      Src: /src/postgres/src/backend/tcop/postgres.c:3714,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 111
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3715
      start: 3456
    functionDepth: 4
    functionLinenumber: 3456
    functionLinenumberEnd: 3715
    functionName: ProcessInterrupts
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - ProcessLogMemoryContextInterrupt
    - ProcessSlotSyncMessage
    - errcode
    - IsLogicalWorker
    - IsTransactionOrTransactionBlock
    - ProcessParallelMessages
    - enable_timeout_after
    - AmBackgroundWorkerProcess
    - AmAutoVacuumWorkerProcess
    - errmsg
    - pg_atomic_read_u32
    - ProcessRecoveryConflictInterrupts
    - AmIoWorkerProcess
    - errmsg_internal
    - ProcessRepackMessages
    - IsLogicalLauncher
    - ProcessProcSignalBarrier
    - ERRDETAIL_SIGNAL_SENDER
    - ereport
    - pq_check_connection
    - ProcessParallelApplyMessages
    - proc_exit
    - INJECTION_POINT
    - LockErrorCleanup
    - AmWalReceiverProcess
    - get_timeout_finish_time
    - get_timeout_indicator
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void ProcessInterrupts(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WaitEventSetCanReportClosed
      Src: /src/postgres/src/backend/tcop/postgres.c:3723,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3725,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3729
      start: 3720
    functionDepth: 1
    functionLinenumber: 3720
    functionLinenumberEnd: 3729
    functionName: check_client_connection_check_interval
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - WaitEventSetCanReportClosed
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_client_connection_check_interval(int *newval, void **extra,
      GucSource source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - bool*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3750
      start: 3741
    functionDepth: 0
    functionLinenumber: 3741
    functionLinenumberEnd: 3750
    functionName: check_stage_log_stats
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_stage_log_stats(bool *newval, void **extra, GucSource source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3761,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - bool*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3767
      start: 3755
    functionDepth: 0
    functionLinenumber: 3755
    functionLinenumberEnd: 3767
    functionName: check_log_stats
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_log_stats(bool *newval, void **extra, GucSource source)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/tcop/postgres.c:3773,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:3779,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:3780,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:3781,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:3782,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3784
      start: 3770
    functionDepth: 1
    functionLinenumber: 3770
    functionLinenumberEnd: 3784
    functionName: assign_transaction_timeout
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - IsTransactionState
    - disable_timeout
    - get_timeout_active
    - enable_timeout_after
    linkageType: ''
    returnType: void
    signature: void assign_transaction_timeout(int newval, void *extra)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:3798,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/tcop/postgres.c:3800,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3803,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3804,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/postgres.c:3805,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/postgres.c:3811,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/postgres.c:3813,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/postgres.c:3815,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3819,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3820,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/postgres.c:3821,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3826,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/postgres.c:3827,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/tcop/postgres.c:3830,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3836
      start: 3789
    functionDepth: 2
    functionLinenumber: 3789
    functionLinenumberEnd: 3836
    functionName: check_restrict_nonsystem_relation_kind
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - list_free
    - pfree
    - pstrdup
    - guc_malloc
    - lfirst
    - SplitIdentifierString
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_restrict_nonsystem_relation_kind(char **newval, void **extra,
      GucSource source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/postgres.c:3811,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/postgres.c:3813,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/postgres.c:3815,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3819,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3820,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/postgres.c:3821,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3824
      start: 3809
    functionDepth: 2
    functionLinenumber: 3809
    functionLinenumberEnd: 3824
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 325
    functionsReached:
    - pg_strcasecmp
    - list_free
    - pfree
    - lfirst
    - GUC_check_errdetail
    linkageType: ''
    returnType: void
    signature: void foreach(l, elemlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3847
      start: 3841
    functionDepth: 0
    functionLinenumber: 3841
    functionLinenumberEnd: 3847
    functionName: assign_restrict_nonsystem_relation_kind
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void assign_restrict_nonsystem_relation_kind(const char *newval, void
      *extra)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/tcop/postgres.c:3862,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3863,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3866,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3870,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3871,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3874,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3877,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3878,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3881,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3883,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - debug_flag
    - context
    - source
    argTypes:
    - int
    - GucContext
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3884
      start: 3855
    functionDepth: 1
    functionLinenumber: 3855
    functionLinenumberEnd: 3884
    functionName: set_debug_options
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - SetConfigOption
    - sprintf
    linkageType: ''
    returnType: void
    signature: void set_debug_options(int debug_flag, GucContext context, GucSource
      source)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3921,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - arg
    - context
    - source
    argTypes:
    - char*
    - GucContext
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3926
      start: 3887
    functionDepth: 1
    functionLinenumber: 3887
    functionLinenumberEnd: 3926
    functionName: set_plan_disabling_options
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - SetConfigOption
    linkageType: ''
    returnType: bool
    signature: bool set_plan_disabling_options(const char *arg, GucContext context,
      GucSource source)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3947
      start: 3929
    functionDepth: 0
    functionLinenumber: 3929
    functionLinenumberEnd: 3947
    functionName: get_stats_option_name
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      get_stats_option_name(const char *arg)'
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/postgres.c:3984,1
    - Dst: pg_getopt_start
      Src: /src/postgres/src/backend/tcop/postgres.c:4000,1
    - Dst: pg_getopt_next
      Src: /src/postgres/src/backend/tcop/postgres.c:4009,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4014,1
    - Dst: parse_dispatch_option
      Src: /src/postgres/src/backend/tcop/postgres.c:4035,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4036,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4037,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4038,1
    - Dst: ParseLongOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4046,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4050,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4051,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4052,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4055,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4056,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4057,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4060,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:4061,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:4062,1
    - Dst: strdup
      Src: /src/postgres/src/backend/tcop/postgres.c:4068,1
    - Dst: set_debug_options
      Src: /src/postgres/src/backend/tcop/postgres.c:4072,1
    - Dst: atoi
      Src: /src/postgres/src/backend/tcop/postgres.c:4072,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4081,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4085,1
    - Dst: set_plan_disabling_options
      Src: /src/postgres/src/backend/tcop/postgres.c:4089,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4094,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4098,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4107,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4111,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4115,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4123,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4127,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4131,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/tcop/postgres.c:4137,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4141,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4145,1
    - Dst: get_stats_option_name
      Src: /src/postgres/src/backend/tcop/postgres.c:4154,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4157,1
    - Dst: atoi
      Src: /src/postgres/src/backend/tcop/postgres.c:4173,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:4177,1
    - Dst: strdup
      Src: /src/postgres/src/backend/tcop/postgres.c:4193,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4204,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/postgres.c:4205,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4207,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4208,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4209,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/postgres.c:4211,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 131
    argCount: 4
    argNames:
    - argc
    - argv
    - ctx
    - dbname
    argTypes:
    - int
    - char*[]
    - GucContext
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4213
      start: 3969
    functionDepth: 2
    functionLinenumber: 3969
    functionLinenumberEnd: 4213
    functionName: process_postgres_switches
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - pg_getopt_start
    - strlcpy
    - get_stats_option_name
    - ParseLongOption
    - strcmp
    - errcode
    - pfree
    - ereport
    - atoi
    - set_plan_disabling_options
    - parse_dispatch_option
    - errhint
    - errmsg
    - strdup
    - set_debug_options
    - pg_getopt_next
    - SetConfigOption
    linkageType: ''
    returnType: void
    signature: "void process_postgres_switches(int argc, char *argv[], GucContext
      ctx,\n\t\t\t\t\t\t  const char **dbname)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4231,1
    - Dst: InitStandaloneProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:4234,1
    - Dst: InitializeGUCOptions
      Src: /src/postgres/src/backend/tcop/postgres.c:4239,1
    - Dst: process_postgres_switches
      Src: /src/postgres/src/backend/tcop/postgres.c:4244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4251,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4252,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4253,1
    - Dst: SelectConfigFiles
      Src: /src/postgres/src/backend/tcop/postgres.c:4258,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:4259,1
    - Dst: checkDataDir
      Src: /src/postgres/src/backend/tcop/postgres.c:4265,1
    - Dst: ChangeToDataDir
      Src: /src/postgres/src/backend/tcop/postgres.c:4266,1
    - Dst: CreateDataDirLockFile
      Src: /src/postgres/src/backend/tcop/postgres.c:4271,1
    - Dst: LocalProcessControlFile
      Src: /src/postgres/src/backend/tcop/postgres.c:4274,1
    - Dst: RegisterBuiltinShmemCallbacks
      Src: /src/postgres/src/backend/tcop/postgres.c:4277,1
    - Dst: process_shared_preload_libraries
      Src: /src/postgres/src/backend/tcop/postgres.c:4282,1
    - Dst: InitializeMaxBackends
      Src: /src/postgres/src/backend/tcop/postgres.c:4285,1
    - Dst: InitPostmasterChildSlots
      Src: /src/postgres/src/backend/tcop/postgres.c:4291,1
    - Dst: InitializeFastPathLocks
      Src: /src/postgres/src/backend/tcop/postgres.c:4294,1
    - Dst: process_shmem_requests
      Src: /src/postgres/src/backend/tcop/postgres.c:4304,1
    - Dst: ShmemCallRequestCallbacks
      Src: /src/postgres/src/backend/tcop/postgres.c:4310,1
    - Dst: InitializeShmemGUCs
      Src: /src/postgres/src/backend/tcop/postgres.c:4317,1
    - Dst: InitializeWalConsistencyChecking
      Src: /src/postgres/src/backend/tcop/postgres.c:4323,1
    - Dst: CreateSharedMemoryAndSemaphores
      Src: /src/postgres/src/backend/tcop/postgres.c:4329,1
    - Dst: set_max_safe_fds
      Src: /src/postgres/src/backend/tcop/postgres.c:4335,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4341,1
    - Dst: InitProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:4347,1
    - Dst: PostgresMain
      Src: /src/postgres/src/backend/tcop/postgres.c:4353,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 3
    argNames:
    - argc
    - argv
    - username
    argTypes:
    - int
    - char*[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4354
      start: 4225
    functionDepth: 4
    functionLinenumber: 4225
    functionLinenumberEnd: 4354
    functionName: PostgresSingleUserMain
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - process_shared_preload_libraries
    - CreateSharedMemoryAndSemaphores
    - errcode
    - RegisterBuiltinShmemCallbacks
    - InitializeFastPathLocks
    - CreateDataDirLockFile
    - checkDataDir
    - process_postgres_switches
    - InitializeShmemGUCs
    - InitializeMaxBackends
    - PostgresMain
    - Assert
    - set_max_safe_fds
    - InitPostmasterChildSlots
    - errmsg
    - ShmemCallRequestCallbacks
    - GetCurrentTimestamp
    - ereport
    - process_shmem_requests
    - ChangeToDataDir
    - InitializeWalConsistencyChecking
    - InitProcess
    - InitializeGUCOptions
    - proc_exit
    - LocalProcessControlFile
    - InitStandaloneProcess
    - SelectConfigFiles
    linkageType: ''
    returnType: void
    signature: "void PostgresSingleUserMain(int argc, char *argv[],\n\t\t\t\t\t   const
      char *username)"
  - BBCount: 60
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4378,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4381,1
    - Dst: GetProcessingMode
      Src: /src/postgres/src/backend/tcop/postgres.c:4381,1
    - Dst: WalSndSignals
      Src: /src/postgres/src/backend/tcop/postgres.c:4399,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4402,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4403,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4404,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4415,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4417,1
    - Dst: InitializeTimeouts
      Src: /src/postgres/src/backend/tcop/postgres.c:4418,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4426,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4427,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4428,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4429,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4435,1
    - Dst: BaseInit
      Src: /src/postgres/src/backend/tcop/postgres.c:4440,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/tcop/postgres.c:4443,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4449,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/backend/tcop/postgres.c:4454,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/tcop/postgres.c:4456,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4458,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4459,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4460,1
    - Dst: InitPostgres
      Src: /src/postgres/src/backend/tcop/postgres.c:4474,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/tcop/postgres.c:4485,1
    - Dst: SetProcessingMode
      Src: /src/postgres/src/backend/tcop/postgres.c:4489,1
    - Dst: BeginReportingGUCOptions
      Src: /src/postgres/src/backend/tcop/postgres.c:4495,1
    - Dst: on_proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:4502,1
    - Dst: pgstat_report_connect
      Src: /src/postgres/src/backend/tcop/postgres.c:4504,1
    - Dst: InitWalSender
      Src: /src/postgres/src/backend/tcop/postgres.c:4508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4517,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/tcop/postgres.c:4518,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/postgres.c:4519,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/tcop/postgres.c:4521,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/tcop/postgres.c:4522,1
    - Dst: printf
      Src: /src/postgres/src/backend/tcop/postgres.c:4528,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:4536,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:4546,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:4549,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:4550,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:4551,1
    - Dst: EventTriggerOnLogin
      Src: /src/postgres/src/backend/tcop/postgres.c:4554,1
    - Dst: sigsetjmp
      Src: /src/postgres/src/backend/tcop/postgres.c:4578,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:4592,1
    - Dst: disable_all_timeouts
      Src: /src/postgres/src/backend/tcop/postgres.c:4605,1
    - Dst: pq_comm_reset
      Src: /src/postgres/src/backend/tcop/postgres.c:4614,1
    - Dst: EmitErrorReport
      Src: /src/postgres/src/backend/tcop/postgres.c:4617,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4623,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/tcop/postgres.c:4634,1
    - Dst: WalSndErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:4637,1
    - Dst: PortalErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:4639,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/tcop/postgres.c:4649,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:4652,1
    - Dst: jit_reset_after_error
      Src: /src/postgres/src/backend/tcop/postgres.c:4654,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:4660,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/tcop/postgres.c:4661,1
    - Dst: pq_is_reading_msg
      Src: /src/postgres/src/backend/tcop/postgres.c:4682,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4683,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4684,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4685,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:4688,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:4723,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/tcop/postgres.c:4724,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:4726,1
    - Dst: InvalidateCatalogSnapshotConditionally
      Src: /src/postgres/src/backend/tcop/postgres.c:4732,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:4752,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:4754,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:4755,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:4762,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:4766,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:4768,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:4769,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:4776,1
    - Dst: ProcessNotifyInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:4792,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/tcop/postgres.c:4807,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:4810,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:4811,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:4817,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:4818,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:4821,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:4822,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:4828,1
    - Dst: ReportChangedGUCOptions
      Src: /src/postgres/src/backend/tcop/postgres.c:4834,1
    - Dst: IsExternalConnectionBackend
      Src: /src/postgres/src/backend/tcop/postgres.c:4843,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4849,1
    - Dst: TimestampDifferenceMicroseconds
      Src: /src/postgres/src/backend/tcop/postgres.c:4852,1
    - Dst: TimestampDifferenceMicroseconds
      Src: /src/postgres/src/backend/tcop/postgres.c:4855,1
    - Dst: TimestampDifferenceMicroseconds
      Src: /src/postgres/src/backend/tcop/postgres.c:4858,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4861,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4862,1
    - Dst: ReadyForQuery
      Src: /src/postgres/src/backend/tcop/postgres.c:4868,1
    - Dst: ReadCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:4883,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:4895,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:4900,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:4913,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/tcop/postgres.c:4923,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4940,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:4942,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:4943,1
    - Dst: exec_replication_command
      Src: /src/postgres/src/backend/tcop/postgres.c:4947,1
    - Dst: exec_simple_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4948,1
    - Dst: exec_simple_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4951,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4953,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:4966,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4969,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:4971,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:4972,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:4973,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tcop/postgres.c:4976,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:4978,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:4980,1
    - Dst: exec_parse_message
      Src: /src/postgres/src/backend/tcop/postgres.c:4982,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4985,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:4990,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4993,1
    - Dst: exec_bind_message
      Src: /src/postgres/src/backend/tcop/postgres.c:4999,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:5009,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:5012,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:5014,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:5015,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:5016,1
    - Dst: exec_execute_message
      Src: /src/postgres/src/backend/tcop/postgres.c:5018,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:5025,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:5028,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:5031,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:5032,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:5035,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:5047,1
    - Dst: HandleFunctionRequest
      Src: /src/postgres/src/backend/tcop/postgres.c:5049,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:5052,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:5054,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:5064,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/tcop/postgres.c:5066,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:5067,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:5068,1
    - Dst: DropPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:5074,1
    - Dst: drop_unnamed_stmt
      Src: /src/postgres/src/backend/tcop/postgres.c:5078,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:5085,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:5086,1
    - Dst: PortalDrop
      Src: /src/postgres/src/backend/tcop/postgres.c:5087,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5091,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:5092,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5093,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:5099,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:5101,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:5110,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:5113,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/tcop/postgres.c:5115,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:5116,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:5117,1
    - Dst: exec_describe_statement_message
      Src: /src/postgres/src/backend/tcop/postgres.c:5122,1
    - Dst: exec_describe_portal_message
      Src: /src/postgres/src/backend/tcop/postgres.c:5125,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5128,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:5129,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5130,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:5135,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:5140,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/tcop/postgres.c:5142,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:5146,1
    - Dst: EndImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:5153,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:5154,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:5155,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:5187,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5201,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:5202,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5203,1
    CyclomaticComplexity: 69
    EdgeCount: 69
    ICount: 288
    argCount: 2
    argNames:
    - dbname
    - username
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5207
      start: 4368
    functionDepth: 7
    functionLinenumber: 4368
    functionLinenumberEnd: 5207
    functionName: PostgresMain
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - RESUME_INTERRUPTS
    - disable_timeout
    - enable_timeout_after
    - sigsetjmp
    - pq_flush
    - SetProcessingMode
    - pgstat_report_activity
    - on_proc_exit
    - pq_getmsgstring
    - ReportChangedGUCOptions
    - ReplicationSlotRelease
    - proc_exit
    - AbortCurrentTransaction
    - pq_endmessage
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - EndImplicitTransactionBlock
    - FlushErrorState
    - GetProcessingMode
    - pq_getmsgbyte
    - TimestampDifferenceMicroseconds
    - ProcessNotifyInterrupt
    - set_ps_display
    - drop_unnamed_stmt
    - HOLD_INTERRUPTS
    - IsTransactionOrTransactionBlock
    - palloc_array
    - PG_PROTOCOL
    - printf
    - DropPreparedStatement
    - BeginReportingGUCOptions
    - BaseInit
    - Assert
    - ReadyForQuery
    - pq_getmsgend
    - errmsg
    - exec_bind_message
    - get_timeout_active
    - disable_all_timeouts
    - forbidden_in_wal_sender
    - initStringInfo
    - ereport
    - WalSndSignals
    - pqsignal
    - SetCurrentStatementStartTimestamp
    - pq_getmsgint
    - IsExternalConnectionBackend
    - pgstat_report_stat
    - errcode
    - jit_reset_after_error
    - sigprocmask
    - pq_putemptymessage
    - pq_beginmessage
    - pq_is_reading_msg
    - MemoryContextReset
    - PortalIsValid
    - pgstat_report_connect
    - InvalidateCatalogSnapshotConditionally
    - exec_execute_message
    - exec_parse_message
    - exec_simple_query
    - AllocSetContextCreate
    - exec_describe_statement_message
    - WalSndErrorCleanup
    - EmitErrorReport
    - pq_comm_reset
    - pq_sendint32
    - PortalErrorCleanup
    - finish_xact_command
    - InitWalSender
    - PortalDrop
    - ReadCommand
    - ReplicationSlotCleanup
    - GetPortalByName
    - InitPostgres
    - valgrind_report_error_query
    - HandleFunctionRequest
    - pg_strong_random
    - GetCurrentTimestamp
    - start_xact_command
    - CHECK_FOR_INTERRUPTS
    - InitializeTimeouts
    - IsAbortedTransactionBlockState
    - exec_replication_command
    - pq_sendbytes
    - exec_describe_portal_message
    - ProcessConfigFile
    - EventTriggerOnLogin
    linkageType: ''
    returnType: void
    signature: void PostgresMain(const char *dbname, const char *username)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5222,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:5223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5224,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5226,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:5227,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - firstchar
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5230
      start: 5216
    functionDepth: 1
    functionLinenumber: 5216
    functionLinenumberEnd: 5230
    functionName: forbidden_in_wal_sender
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void forbidden_in_wal_sender(char firstchar)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/postgres/src/backend/tcop/postgres.c:5239,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/tcop/postgres.c:5240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5241
      start: 5236
    functionDepth: 3
    functionLinenumber: 5236
    functionLinenumberEnd: 5241
    functionName: ResetUsage
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 14
    functionsReached:
    - gettimeofday
    - getrusage
    linkageType: ''
    returnType: void
    signature: void ResetUsage(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/postgres/src/backend/tcop/postgres.c:5252,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/tcop/postgres.c:5253,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tcop/postgres.c:5254,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tcop/postgres.c:5255,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5276,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/tcop/postgres.c:5278,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5279,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5287,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5301,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5311,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5317,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5324,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5342,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:5343,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:5344,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:5346,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 1
    argNames:
    - title
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5347
      start: 5243
    functionDepth: 3
    functionLinenumber: 5243
    functionLinenumberEnd: 5347
    functionName: ShowUsage
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 14
    functionsReached:
    - gettimeofday
    - memcpy
    - errmsg_internal
    - pfree
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - ereport
    - getrusage
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: void ShowUsage(const char *title)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TimestampDifference
      Src: /src/postgres/src/backend/tcop/postgres.c:5363,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:5364,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5379
      start: 5352
    functionDepth: 1
    functionLinenumber: 5352
    functionLinenumberEnd: 5379
    functionName: log_disconnections
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - TimestampDifference
    - ereport
    - GetCurrentTimestamp
    - errmsg
    linkageType: ''
    returnType: void
    signature: void log_disconnections(int code, Datum arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:5392,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:5397,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:5398,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:5402,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:5403,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5405
      start: 5388
    functionDepth: 1
    functionLinenumber: 5388
    functionLinenumberEnd: 5405
    functionName: enable_statement_timeout
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - Assert
    - disable_timeout
    - get_timeout_active
    - enable_timeout_after
    linkageType: ''
    returnType: void
    signature: void enable_statement_timeout(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:5413,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:5414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5415
      start: 5410
    functionDepth: 1
    functionLinenumber: 5410
    functionLinenumberEnd: 5415
    functionName: disable_statement_timeout
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 4
    functionsReached:
    - disable_timeout
    - get_timeout_active
    linkageType: ''
    returnType: void
    signature: void disable_statement_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/tcop/pquery.c:77,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:82,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 8
    argNames:
    - plannedstmt
    - sourceText
    - snapshot
    - crosscheck_snapshot
    - dest
    - params
    - queryEnv
    - instrument_options
    argTypes:
    - PlannedStmt*
    - char*
    - Snapshot
    - Snapshot
    - DestReceiver*
    - ParamListInfo
    - QueryEnvironment*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 101
    functionName: CreateQueryDesc
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 0
    functionsReached:
    - RegisterSnapshot
    - palloc_object
    linkageType: ''
    returnType: QueryDesc
    signature: "QueryDesc *\nCreateQueryDesc(PlannedStmt *plannedstmt,\n\t\t\t\tconst
      char *sourceText,\n\t\t\t\tSnapshot snapshot,\n\t\t\t\tSnapshot crosscheck_snapshot,\n\t\t\t\tDestReceiver
      *dest,\n\t\t\t\tParamListInfo params,\n\t\t\t\tQueryEnvironment *queryEnv,\n\t\t\t\tint
      instrument_options)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:110,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:113,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:114,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/pquery.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - qdesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 118
    functionName: FreeQueryDesc
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void FreeQueryDesc(QueryDesc *qdesc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/tcop/pquery.c:150,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:151,1
    - Dst: ExecutorStart
      Src: /src/postgres/src/backend/tcop/pquery.c:157,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/tcop/pquery.c:162,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:184,1
    - Dst: ExecutorFinish
      Src: /src/postgres/src/backend/tcop/pquery.c:190,1
    - Dst: ExecutorEnd
      Src: /src/postgres/src/backend/tcop/pquery.c:191,1
    - Dst: FreeQueryDesc
      Src: /src/postgres/src/backend/tcop/pquery.c:193,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 6
    argNames:
    - plan
    - sourceText
    - params
    - queryEnv
    - dest
    - qc
    argTypes:
    - PlannedStmt*
    - char*
    - ParamListInfo
    - QueryEnvironment*
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 194
    functionName: ProcessQuery
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 0
    functionsReached:
    - ExecutorFinish
    - ExecutorStart
    - SetQueryCompletion
    - ExecutorRun
    - FreeQueryDesc
    - ExecutorEnd
    - GetActiveSnapshot
    - CreateQueryDesc
    linkageType: ''
    returnType: void
    signature: "void ProcessQuery(PlannedStmt *plan,\n\t\t\t const char *sourceText,\n\t\t\t
      ParamListInfo params,\n\t\t\t QueryEnvironment *queryEnv,\n\t\t\t DestReceiver
      *dest,\n\t\t\t QueryCompletion *qc)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/pquery.c:217,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/pquery.c:219,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:221,1
    - Dst: UtilityReturnsTuples
      Src: /src/postgres/src/backend/tcop/pquery.c:236,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:243,1
    - Dst: UtilityReturnsTuples
      Src: /src/postgres/src/backend/tcop/pquery.c:258,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:266,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/pquery.c:266,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/pquery.c:277,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:279,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:292,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:306,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/pquery.c:306,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 54
    argCount: 1
    argNames:
    - stmts
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 313
    functionName: ChoosePortalStrategy
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 0
    functionsReached:
    - elog
    - linitial
    - lfirst
    - UtilityReturnsTuples
    - list_length
    - IsA
    - nodeTag
    linkageType: ''
    returnType: PortalStrategy
    signature: PortalStrategy ChoosePortalStrategy(List *stmts)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/pquery.c:277,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:279,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:292,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:306,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/pquery.c:306,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 307
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 325
    functionsReached:
    - elog
    - lfirst
    - nodeTag
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, stmts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FetchStatementTargetList
      Src: /src/postgres/src/backend/tcop/pquery.c:329,1
    - Dst: PortalGetPrimaryStmt
      Src: /src/postgres/src/backend/tcop/pquery.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - portal
    argTypes:
    - Portal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 330
    functionName: FetchPortalTargetList
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 2
    functionsReached:
    - PortalGetPrimaryStmt
    - FetchStatementTargetList
    linkageType: ''
    returnType: List
    signature: 'List *

      FetchPortalTargetList(Portal portal)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:349,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:367,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:390,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/pquery.c:391,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:392,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/pquery.c:392,1
    - Dst: FetchPortalTargetList
      Src: /src/postgres/src/backend/tcop/pquery.c:393,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:395,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/pquery.c:400,1
    - Dst: FetchPreparedStatementTargetList
      Src: /src/postgres/src/backend/tcop/pquery.c:401,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 404
    functionName: FetchStatementTargetList
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - PortalIsValid
    - Assert
    - FetchPreparedStatementTargetList
    - FetchPortalTargetList
    - IsA
    - FetchPreparedStatement
    - GetPortalByName
    linkageType: ''
    returnType: List
    signature: 'List *

      FetchStatementTargetList(Node *stmt)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:440,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/pquery.c:440,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:441,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:449,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:456,1
    - Dst: ChoosePortalStrategy
      Src: /src/postgres/src/backend/tcop/pquery.c:464,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:475,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:477,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:477,1
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/tcop/pquery.c:492,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/pquery.c:492,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:494,1
    - Dst: ExecutorStart
      Src: /src/postgres/src/backend/tcop/pquery.c:514,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:533,1
    - Dst: PortalGetPrimaryStmt
      Src: /src/postgres/src/backend/tcop/pquery.c:546,1
    - Dst: ExecCleanTypeFromTL
      Src: /src/postgres/src/backend/tcop/pquery.c:548,1
    - Dst: PortalGetPrimaryStmt
      Src: /src/postgres/src/backend/tcop/pquery.c:566,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:568,1
    - Dst: UtilityTupleDescriptor
      Src: /src/postgres/src/backend/tcop/pquery.c:569,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/tcop/pquery.c:586,1
    - Dst: MarkPortalFailed
      Src: /src/postgres/src/backend/tcop/pquery.c:589,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/tcop/pquery.c:596,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:598,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:600,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 66
    argCount: 4
    argNames:
    - portal
    - params
    - eflags
    - snapshot
    argTypes:
    - Portal
    - ParamListInfo
    - int
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 429
    functionDepth: 6
    functionLinenumber: 429
    functionLinenumberEnd: 607
    functionName: PortalStart
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 3
    functionsReached:
    - PopActiveSnapshot
    - PG_TRY
    - PortalIsValid
    - linitial_node
    - Assert
    - PG_RE_THROW
    - PG_END_TRY
    - GetTransactionSnapshot
    - CreateQueryDesc
    - PG_CATCH
    - ExecutorStart
    - MarkPortalFailed
    - ChoosePortalStrategy
    - UtilityTupleDescriptor
    - MemoryContextSwitchTo
    - GetActiveSnapshot
    - PushActiveSnapshot
    - ExecCleanTypeFromTL
    - PortalGetPrimaryStmt
    linkageType: ''
    returnType: void
    signature: "void PortalStart(Portal portal, ParamListInfo params,\n\t\t\tint eflags,
      Snapshot snapshot)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/tcop/pquery.c:630,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/pquery.c:636,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/pquery.c:637,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/pquery.c:638,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tcop/pquery.c:640,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - portal
    - nFormats
    - formats
    argTypes:
    - Portal
    - int
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 656
    functionName: PortalSetResultFormat
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 3
    functionsReached:
    - memcpy
    - errcode
    - MemoryContextAlloc
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void PortalSetResultFormat(Portal portal, int nFormats, int16 *formats)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:694,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/pquery.c:694,1
    - Dst: TRACE_POSTGRESQL_QUERY_EXECUTE_START
      Src: /src/postgres/src/backend/tcop/pquery.c:696,1
    - Dst: InitializeQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:700,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:704,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/pquery.c:706,1
    - Dst: MarkPortalActive
      Src: /src/postgres/src/backend/tcop/pquery.c:712,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:734,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:741,1
    - Dst: FillPortalStore
      Src: /src/postgres/src/backend/tcop/pquery.c:756,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:761,1
    - Dst: CopyQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:770,1
    - Dst: PortalRunMulti
      Src: /src/postgres/src/backend/tcop/pquery.c:784,1
    - Dst: MarkPortalDone
      Src: /src/postgres/src/backend/tcop/pquery.c:788,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:795,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/tcop/pquery.c:801,1
    - Dst: MarkPortalFailed
      Src: /src/postgres/src/backend/tcop/pquery.c:804,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:808,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:810,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/tcop/pquery.c:818,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:820,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:823,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:825,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/pquery.c:834,1
    - Dst: TRACE_POSTGRESQL_QUERY_EXECUTE_DONE
      Src: /src/postgres/src/backend/tcop/pquery.c:836,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 73
    argCount: 6
    argNames:
    - portal
    - count
    - isTopLevel
    - dest
    - altdest
    - qc
    argTypes:
    - Portal
    - long
    - bool
    - DestReceiver*
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 680
    functionDepth: 4
    functionLinenumber: 680
    functionLinenumberEnd: 839
    functionName: PortalRun
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 3
    functionsReached:
    - PG_TRY
    - TRACE_POSTGRESQL_QUERY_EXECUTE_DONE
    - CopyQueryCompletion
    - InitializeQueryCompletion
    - ResetUsage
    - PortalRunSelect
    - elog
    - PortalIsValid
    - Assert
    - PG_RE_THROW
    - PG_END_TRY
    - MarkPortalActive
    - FillPortalStore
    - PortalRunMulti
    - PG_CATCH
    - MarkPortalFailed
    - TRACE_POSTGRESQL_QUERY_EXECUTE_START
    - MarkPortalDone
    - MemoryContextSwitchTo
    - ShowUsage
    linkageType: ''
    returnType: bool
    signature: "bool PortalRun(Portal portal, long count, bool isTopLevel,\n\t\t  DestReceiver
      *dest, DestReceiver *altdest,\n\t\t  QueryCompletion *qc)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:876,1
    - Dst: RunFromStore
      Src: /src/postgres/src/backend/tcop/pquery.c:913,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:916,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/tcop/pquery.c:917,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:919,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/tcop/pquery.c:922,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/pquery.c:934,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/pquery.c:935,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/pquery.c:936,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/pquery.c:937,1
    - Dst: RunFromStore
      Src: /src/postgres/src/backend/tcop/pquery.c:952,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:955,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/tcop/pquery.c:956,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:958,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/tcop/pquery.c:961,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 58
    argCount: 4
    argNames:
    - portal
    - forward
    - count
    - dest
    argTypes:
    - Portal
    - bool
    - long
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 859
    functionDepth: 1
    functionLinenumber: 859
    functionLinenumberEnd: 981
    functionName: PortalRunSelect
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - PopActiveSnapshot
    - ScanDirectionIsNoMovement
    - errcode
    - Assert
    - ExecutorRun
    - ereport
    - errhint
    - errmsg
    - PushActiveSnapshot
    - RunFromStore
    linkageType: ''
    returnType: uint64
    signature: "uint64 PortalRunSelect(Portal portal,\n\t\t\t\tbool forward,\n\t\t\t\tlong
      count,\n\t\t\t\tDestReceiver *dest)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: InitializeQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:996,1
    - Dst: PortalCreateHoldStore
      Src: /src/postgres/src/backend/tcop/pquery.c:997,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/tcop/pquery.c:998,1
    - Dst: SetTuplestoreDestReceiverParams
      Src: /src/postgres/src/backend/tcop/pquery.c:999,1
    - Dst: PortalRunMulti
      Src: /src/postgres/src/backend/tcop/pquery.c:1017,1
    - Dst: PortalRunUtility
      Src: /src/postgres/src/backend/tcop/pquery.c:1022,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/pquery.c:1022,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:1027,1
    - Dst: CopyQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:1034,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/tcop/pquery.c:1036,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - portal
    - isTopLevel
    argTypes:
    - Portal
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 990
    functionDepth: 2
    functionLinenumber: 990
    functionLinenumberEnd: 1037
    functionName: FillPortalStore
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - elog
    - PortalCreateHoldStore
    - CreateDestReceiver
    - linitial_node
    - PortalRunUtility
    - DestReceiver*::rDestroy
    - CopyQueryCompletion
    - InitializeQueryCompletion
    - SetTuplestoreDestReceiverParams
    - PortalRunMulti
    linkageType: ''
    returnType: void
    signature: void FillPortalStore(Portal portal, bool isTopLevel)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/tcop/pquery.c:1058,1
    - Dst: DestReceiver*::rStartup
      Src: /src/postgres/src/backend/tcop/pquery.c:1060,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/tcop/pquery.c:1062,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/tcop/pquery.c:1068,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1075,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/tcop/pquery.c:1077,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1080,1
    - Dst: DestReceiver*::receiveSlot
      Src: /src/postgres/src/backend/tcop/pquery.c:1090,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/tcop/pquery.c:1093,1
    - Dst: DestReceiver*::rShutdown
      Src: /src/postgres/src/backend/tcop/pquery.c:1106,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/tcop/pquery.c:1108,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 4
    argNames:
    - portal
    - direction
    - count
    - dest
    argTypes:
    - Portal
    - ScanDirection
    - uint64
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1051
    functionDepth: 1
    functionLinenumber: 1051
    functionLinenumberEnd: 1111
    functionName: RunFromStore
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - ScanDirectionIsNoMovement
    - DestReceiver*::rShutdown
    - ExecDropSingleTupleTableSlot
    - DestReceiver*::rStartup
    - MemoryContextSwitchTo
    - MakeSingleTupleTableSlot
    - ScanDirectionIsForward
    - DestReceiver*::receiveSlot
    - ExecClearTuple
    - tuplestore_gettupleslot
    linkageType: ''
    returnType: uint64
    signature: "uint64 RunFromStore(Portal portal, ScanDirection direction, uint64
      count,\n\t\t\t DestReceiver *dest)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PlannedStmtRequiresSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1125,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1127,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1132,1
    - Dst: PushActiveSnapshotWithLevel
      Src: /src/postgres/src/backend/tcop/pquery.c:1142,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1144,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/tcop/pquery.c:1149,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1159,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/tcop/pquery.c:1168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1170,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1170,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 6
    argNames:
    - portal
    - pstmt
    - isTopLevel
    - setHoldSnapshot
    - dest
    - qc
    argTypes:
    - Portal
    - PlannedStmt*
    - bool
    - bool
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1117
    functionDepth: 2
    functionLinenumber: 1117
    functionLinenumberEnd: 1174
    functionName: PortalRunUtility
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - PopActiveSnapshot
    - PlannedStmtRequiresSnapshot
    - Assert
    - ActiveSnapshotSet
    - ProcessUtility
    - MemoryContextSwitchTo
    - RegisterSnapshot
    - GetTransactionSnapshot
    - GetActiveSnapshot
    - PushActiveSnapshotWithLevel
    linkageType: ''
    returnType: void
    signature: "void PortalRunUtility(Portal portal, PlannedStmt *pstmt,\n\t\t\t\t
      bool isTopLevel, bool setHoldSnapshot,\n\t\t\t\t DestReceiver *dest, QueryCompletion
      *qc)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/pquery.c:1209,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/pquery.c:1211,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/pquery.c:1216,1
    - Dst: TRACE_POSTGRESQL_QUERY_EXECUTE_START
      Src: /src/postgres/src/backend/tcop/pquery.c:1223,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/pquery.c:1226,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1236,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1241,1
    - Dst: PushCopiedSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1254,1
    - Dst: UpdateActiveSnapshotCommandId
      Src: /src/postgres/src/backend/tcop/pquery.c:1264,1
    - Dst: ProcessQuery
      Src: /src/postgres/src/backend/tcop/pquery.c:1269,1
    - Dst: ProcessQuery
      Src: /src/postgres/src/backend/tcop/pquery.c:1278,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/pquery.c:1286,1
    - Dst: TRACE_POSTGRESQL_QUERY_EXECUTE_DONE
      Src: /src/postgres/src/backend/tcop/pquery.c:1288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1305,1
    - Dst: PortalRunUtility
      Src: /src/postgres/src/backend/tcop/pquery.c:1307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1312,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1312,1
    - Dst: PortalRunUtility
      Src: /src/postgres/src/backend/tcop/pquery.c:1314,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1322,1
    - Dst: MemoryContextDeleteChildren
      Src: /src/postgres/src/backend/tcop/pquery.c:1324,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/pquery.c:1341,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/pquery.c:1342,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1347,1
    - Dst: CopyQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:1358,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 6
    argNames:
    - portal
    - isTopLevel
    - setHoldSnapshot
    - dest
    - altdest
    - qc
    argTypes:
    - Portal
    - bool
    - bool
    - DestReceiver*
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1181
    functionDepth: 4
    functionLinenumber: 1181
    functionLinenumberEnd: 1359
    functionName: PortalRunMulti
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 2
    functionsReached:
    - PopActiveSnapshot
    - TRACE_POSTGRESQL_QUERY_EXECUTE_DONE
    - CopyQueryCompletion
    - RegisterSnapshot
    - ResetUsage
    - ProcessQuery
    - foreach
    - Assert
    - CommandCounterIncrement
    - lnext
    - PushCopiedSnapshot
    - PortalRunUtility
    - CHECK_FOR_INTERRUPTS
    - GetTransactionSnapshot
    - MemoryContextDeleteChildren
    - lfirst_node
    - TRACE_POSTGRESQL_QUERY_EXECUTE_START
    - UpdateActiveSnapshotCommandId
    - IsA
    - ShowUsage
    linkageType: ''
    returnType: void
    signature: "void PortalRunMulti(Portal portal,\n\t\t\t   bool isTopLevel, bool
      setHoldSnapshot,\n\t\t\t   DestReceiver *dest, DestReceiver *altdest,\n\t\t\t
      \  QueryCompletion *qc)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1385,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/pquery.c:1385,1
    - Dst: MarkPortalActive
      Src: /src/postgres/src/backend/tcop/pquery.c:1390,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:1398,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1405,1
    - Dst: DoPortalRunFetch
      Src: /src/postgres/src/backend/tcop/pquery.c:1410,1
    - Dst: FillPortalStore
      Src: /src/postgres/src/backend/tcop/pquery.c:1422,1
    - Dst: DoPortalRunFetch
      Src: /src/postgres/src/backend/tcop/pquery.c:1427,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:1431,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/tcop/pquery.c:1436,1
    - Dst: MarkPortalFailed
      Src: /src/postgres/src/backend/tcop/pquery.c:1439,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/tcop/pquery.c:1446,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:1448,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1450,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 4
    argNames:
    - portal
    - fdirection
    - count
    - dest
    argTypes:
    - Portal
    - FetchDirection
    - long
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1373
    functionDepth: 3
    functionLinenumber: 1373
    functionLinenumberEnd: 1460
    functionName: PortalRunFetch
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - elog
    - PG_CATCH
    - PG_TRY
    - PortalIsValid
    - Assert
    - MarkPortalFailed
    - DoPortalRunFetch
    - MarkPortalActive
    - MemoryContextSwitchTo
    - PG_RE_THROW
    - FillPortalStore
    - PG_END_TRY
    linkageType: ''
    returnType: uint64
    signature: "uint64 PortalRunFetch(Portal portal,\n\t\t\t   FetchDirection fdirection,\n\t\t\t
      \  long count,\n\t\t\t   DestReceiver *dest)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1479,1
    - Dst: DoPortalRewind
      Src: /src/postgres/src/backend/tcop/pquery.c:1532,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1534,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1544,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1547,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1550,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1561,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1563,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1564,1
    - Dst: DoPortalRewind
      Src: /src/postgres/src/backend/tcop/pquery.c:1570,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1571,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1581,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1582,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1591,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1592,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:1602,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1638,1
    - Dst: DoPortalRewind
      Src: /src/postgres/src/backend/tcop/pquery.c:1655,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1659,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 79
    argCount: 4
    argNames:
    - portal
    - fdirection
    - count
    - dest
    argTypes:
    - Portal
    - FetchDirection
    - long
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1471
    functionDepth: 2
    functionLinenumber: 1471
    functionLinenumberEnd: 1660
    functionName: DoPortalRunFetch
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - Assert
    - DoPortalRewind
    - PortalRunSelect
    - elog
    linkageType: ''
    returnType: uint64
    signature: "uint64 DoPortalRunFetch(Portal portal,\n\t\t\t\t FetchDirection fdirection,\n\t\t\t\t
      long count,\n\t\t\t\t DestReceiver *dest)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/pquery.c:1679,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/pquery.c:1680,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/pquery.c:1681,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/pquery.c:1682,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1689,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/tcop/pquery.c:1690,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1691,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1698,1
    - Dst: ExecutorRewind
      Src: /src/postgres/src/backend/tcop/pquery.c:1699,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1700,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - portal
    argTypes:
    - Portal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1665
    functionDepth: 1
    functionLinenumber: 1665
    functionLinenumberEnd: 1706
    functionName: DoPortalRewind
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - PopActiveSnapshot
    - errcode
    - tuplestore_rescan
    - ExecutorRewind
    - ereport
    - MemoryContextSwitchTo
    - errhint
    - errmsg
    - PushActiveSnapshot
    linkageType: ''
    returnType: void
    signature: void DoPortalRewind(Portal portal)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1733,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1734,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1735,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1736,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1737,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1739,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1740,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1741,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1742,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1743,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1744,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 6
    argCount: 1
    argNames:
    - pstmt
    argTypes:
    - PlannedStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1711
    functionDepth: 1
    functionLinenumber: 1711
    functionLinenumberEnd: 1748
    functionName: PlannedStmtRequiresSnapshot
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool PlannedStmtRequiresSnapshot(PlannedStmt *pstmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/tcop/pquery.c:1770,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/tcop/pquery.c:1775,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:1776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1777,1
    - Dst: PushActiveSnapshotWithLevel
      Src: /src/postgres/src/backend/tcop/pquery.c:1785,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1785,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1787,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1788
      start: 1760
    functionDepth: 1
    functionLinenumber: 1760
    functionLinenumberEnd: 1788
    functionName: EnsurePortalSnapshotExists
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - ActiveSnapshotSet
    - unlikely
    - GetTransactionSnapshot
    - GetActiveSnapshot
    - PushActiveSnapshotWithLevel
    linkageType: ''
    returnType: void
    signature: void EnsurePortalSnapshotExists(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - tag
    - ','
    - name
    - ','
    - evtrgok
    - ','
    - rwrok
    - ','
    - rowcnt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: PG_CMDTAG
    functionSourceFile: /src/postgres/src/backend/tcop/cmdtag.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - qc
    argTypes:
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: InitializeQueryCompletion
    functionSourceFile: /src/postgres/src/backend/tcop/cmdtag.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InitializeQueryCompletion(QueryCompletion *qc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - commandTag
    argTypes:
    - CommandTag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: GetCommandTagName
    functionSourceFile: /src/postgres/src/backend/tcop/cmdtag.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      GetCommandTagName(CommandTag commandTag)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - commandTag
    - len
    argTypes:
    - CommandTag
    - Size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: GetCommandTagNameAndLen
    functionSourceFile: /src/postgres/src/backend/tcop/cmdtag.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      GetCommandTagNameAndLen(CommandTag commandTag, Size *len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - commandTag
    argTypes:
    - CommandTag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: command_tag_display_rowcount
    functionSourceFile: /src/postgres/src/backend/tcop/cmdtag.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool command_tag_display_rowcount(CommandTag commandTag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - commandTag
    argTypes:
    - CommandTag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: command_tag_event_trigger_ok
    functionSourceFile: /src/postgres/src/backend/tcop/cmdtag.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool command_tag_event_trigger_ok(CommandTag commandTag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - commandTag
    argTypes:
    - CommandTag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: command_tag_table_rewrite_ok
    functionSourceFile: /src/postgres/src/backend/tcop/cmdtag.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool command_tag_table_rewrite_ok(CommandTag commandTag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/backend/tcop/cmdtag.c:94,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/cmdtag.c:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - commandname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 107
    functionName: GetCommandTagEnum
    functionSourceFile: /src/postgres/src/backend/tcop/cmdtag.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - lengthof
    linkageType: ''
    returnType: CommandTag
    signature: CommandTag GetCommandTagEnum(const char *commandname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetCommandTagNameAndLen
      Src: /src/postgres/src/backend/tcop/cmdtag.c:126,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tcop/cmdtag.c:133,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/cmdtag.c:137,1
    - Dst: command_tag_display_rowcount
      Src: /src/postgres/src/backend/tcop/cmdtag.c:146,1
    - Dst: pg_ulltoa_n
      Src: /src/postgres/src/backend/tcop/cmdtag.c:154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/cmdtag.c:160,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/cmdtag.c:160,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - buff
    - qc
    - nameonly
    argTypes:
    - char*
    - QueryCompletion*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 163
    functionName: BuildQueryCompletionString
    functionSourceFile: /src/postgres/src/backend/tcop/cmdtag.c
    functionUses: 1
    functionsReached:
    - pg_ulltoa_n
    - memcpy
    - Assert
    - GetCommandTagNameAndLen
    - strlen
    - command_tag_display_rowcount
    linkageType: ''
    returnType: Size
    signature: "Size BuildQueryCompletionString(char *buff, const QueryCompletion
      *qc,\n\t\t\t\t\t\t   bool nameonly)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/tcop/fastpath.c:71,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/fastpath.c:75,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/tcop/fastpath.c:85,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/tcop/fastpath.c:86,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/tcop/fastpath.c:87,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/fastpath.c:87,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/fastpath.c:88,1
    - Dst: getTypeBinaryOutputInfo
      Src: /src/postgres/src/backend/tcop/fastpath.c:96,1
    - Dst: OidSendFunctionCall
      Src: /src/postgres/src/backend/tcop/fastpath.c:97,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/fastpath.c:98,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/tcop/fastpath.c:98,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/tcop/fastpath.c:99,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/tcop/fastpath.c:99,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/tcop/fastpath.c:100,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/fastpath.c:101,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:104,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/fastpath.c:105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:106,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/tcop/fastpath.c:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - retval
    - isnull
    - rettype
    - format
    argTypes:
    - Datum
    - bool
    - Oid
    - int16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 110
    functionName: SendFunctionResult
    functionSourceFile: /src/postgres/src/backend/tcop/fastpath.c
    functionUses: 0
    functionsReached:
    - pq_beginmessage
    - getTypeBinaryOutputInfo
    - VARSIZE
    - OidSendFunctionCall
    - errcode
    - pfree
    - pq_endmessage
    - pq_sendint32
    - ereport
    - OidOutputFunctionCall
    - strlen
    - VARDATA
    - pq_sendbytes
    - errmsg
    - getTypeOutputInfo
    - pq_sendcountedtext
    linkageType: ''
    returnType: void
    signature: void SendFunctionResult(Datum retval, bool isnull, Oid rettype, int16
      format)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/fastpath.c:124,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/tcop/fastpath.c:134,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/tcop/fastpath.c:137,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tcop/fastpath.c:137,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/tcop/fastpath.c:138,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:139,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/fastpath.c:140,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:141,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/tcop/fastpath.c:142,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:146,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/fastpath.c:147,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:148,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/tcop/fastpath.c:149,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/fastpath.c:153,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/tcop/fastpath.c:154,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tcop/fastpath.c:158,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/tcop/fastpath.c:159,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/tcop/fastpath.c:159,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/tcop/fastpath.c:161,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/tcop/fastpath.c:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - func_id
    - fip
    argTypes:
    - Oid
    - struct fp_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 169
    functionName: fetch_fp_info
    functionSourceFile: /src/postgres/src/backend/tcop/fastpath.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - strlcpy
    - memcpy
    - errcode
    - Assert
    - HeapTupleIsValid
    - ereport
    - ReleaseSysCache
    - MemSet
    - errmsg
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    - fmgr_info
    linkageType: ''
    returnType: void
    signature: void fetch_fp_info(Oid func_id, struct fp_info *fip)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/tcop/fastpath.c:190,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/fastpath.c:205,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:206,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/fastpath.c:207,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:208,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/fastpath.c:215,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/fastpath.c:215,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/fastpath.c:220,1
    - Dst: fetch_fp_info
      Src: /src/postgres/src/backend/tcop/fastpath.c:227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:232,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:233,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/tcop/fastpath.c:242,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/tcop/fastpath.c:242,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/tcop/fastpath.c:244,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/tcop/fastpath.c:245,1
    - Dst: InvokeNamespaceSearchHook
      Src: /src/postgres/src/backend/tcop/fastpath.c:246,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/tcop/fastpath.c:248,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/tcop/fastpath.c:248,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/tcop/fastpath.c:250,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/tcop/fastpath.c:251,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/tcop/fastpath.c:252,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/tcop/fastpath.c:261,1
    - Dst: parse_fcall_arguments
      Src: /src/postgres/src/backend/tcop/fastpath.c:263,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/fastpath.c:266,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/tcop/fastpath.c:289,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/fastpath.c:298,1
    - Dst: SendFunctionResult
      Src: /src/postgres/src/backend/tcop/fastpath.c:300,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/fastpath.c:303,1
    - Dst: check_log_duration
      Src: /src/postgres/src/backend/tcop/fastpath.c:308,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:311,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:312,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:315,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:316,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 1
    argNames:
    - msgBuf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 187
    functionDepth: 5
    functionLinenumber: 187
    functionLinenumberEnd: 320
    functionName: HandleFunctionRequest
    functionSourceFile: /src/postgres/src/backend/tcop/fastpath.c
    functionUses: 1
    functionsReached:
    - PopActiveSnapshot
    - InvokeFunctionExecuteHook
    - GetUserId
    - errcode
    - get_func_name
    - fetch_fp_info
    - object_aclcheck
    - pq_getmsgend
    - errmsg
    - SendFunctionResult
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - ereport
    - CHECK_FOR_INTERRUPTS
    - IsAbortedTransactionBlockState
    - check_log_duration
    - GetTransactionSnapshot
    - aclcheck_error
    - get_namespace_name
    - LOCAL_FCINFO
    - PushActiveSnapshot
    - pq_getmsgint
    - parse_fcall_arguments
    - InvokeNamespaceSearchHook
    linkageType: ''
    returnType: void
    signature: void HandleFunctionRequest(StringInfo msgBuf)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/fastpath.c:339,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tcop/fastpath.c:342,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/fastpath.c:344,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/fastpath.c:347,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:350,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/fastpath.c:351,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:352,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:358,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/fastpath.c:359,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:360,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/fastpath.c:363,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/fastpath.c:373,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:382,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/fastpath.c:383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:384,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/tcop/fastpath.c:388,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/tcop/fastpath.c:389,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/tcop/fastpath.c:390,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/tcop/fastpath.c:407,1
    - Dst: pg_client_to_server
      Src: /src/postgres/src/backend/tcop/fastpath.c:418,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/tcop/fastpath.c:420,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/fastpath.c:424,1
    - Dst: getTypeBinaryInputInfo
      Src: /src/postgres/src/backend/tcop/fastpath.c:433,1
    - Dst: OidReceiveFunctionCall
      Src: /src/postgres/src/backend/tcop/fastpath.c:440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:445,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/fastpath.c:446,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:447,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/fastpath.c:451,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/fastpath.c:452,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/fastpath.c:453,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/fastpath.c:457,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 51
    argCount: 3
    argNames:
    - msgBuf
    - fip
    - fcinfo
    argTypes:
    - StringInfo
    - struct fp_info*
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 458
    functionName: parse_fcall_arguments
    functionSourceFile: /src/postgres/src/backend/tcop/fastpath.c
    functionUses: 1
    functionsReached:
    - appendBinaryStringInfo
    - getTypeInputInfo
    - pg_client_to_server
    - errcode
    - pfree
    - OidReceiveFunctionCall
    - getTypeBinaryInputInfo
    - initStringInfo
    - ereport
    - errmsg
    - palloc
    - pq_getmsgint
    - pq_getmsgbytes
    - OidInputFunctionCall
    - resetStringInfo
    linkageType: ''
    returnType: int16
    signature: "int16 parse_fcall_arguments(StringInfo msgBuf, struct fp_info *fip,\n\t\t\t\t\t
      \ FunctionCallInfo fcinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: proc_exit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 222
    functionName: CheckerModeMain
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void CheckerModeMain(void)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:247,1
    - Dst: InitStandaloneProcess
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:249,1
    - Dst: InitializeGUCOptions
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:255,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:256,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:257,1
    - Dst: pg_getopt_start
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:261,1
    - Dst: pg_getopt_next
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:262,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:267,1
    - Dst: parse_dispatch_option
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:278,1
    - Dst: errcode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:279,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:280,1
    - Dst: ParseLongOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:292,1
    - Dst: errcode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:293,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:294,1
    - Dst: ereport
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:297,1
    - Dst: errcode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:298,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:299,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:303,1
    - Dst: pfree
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:304,1
    - Dst: pfree
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:305,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:309,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:316,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:317,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:319,1
    - Dst: pfree
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:321,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:325,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:331,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:334,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:337,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:339,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:346,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:347,1
    - Dst: SelectConfigFiles
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:351,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:352,1
    - Dst: checkDataDir
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:358,1
    - Dst: ChangeToDataDir
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:359,1
    - Dst: CreateDataDirLockFile
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:361,1
    - Dst: SetProcessingMode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:363,1
    - Dst: RegisterBuiltinShmemCallbacks
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:366,1
    - Dst: InitializeMaxBackends
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:368,1
    - Dst: InitPostmasterChildSlots
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:375,1
    - Dst: InitializeFastPathLocks
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:377,1
    - Dst: ShmemCallRequestCallbacks
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:379,1
    - Dst: CreateSharedMemoryAndSemaphores
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:380,1
    - Dst: set_max_safe_fds
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:386,1
    - Dst: SetProcessingMode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:395,1
    - Dst: CheckerModeMain
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:396,1
    - Dst: abort
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:397,1
    - Dst: InitProcess
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:403,1
    - Dst: BaseInit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:405,1
    - Dst: bootstrap_signals
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:407,1
    - Dst: BootStrapXLOG
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:408,1
    - Dst: pg_link_canary_is_frontend
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:414,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:415,1
    - Dst: InitPostgres
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:417,1
    - Dst: boot_yylex_init
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:426,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:427,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:432,1
    - Dst: boot_yyparse
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:433,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:434,1
    - Dst: RelationMapFinishBootstrap
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:440,1
    - Dst: cleanup
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:443,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:444,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 99
    argCount: 3
    argNames:
    - argc
    - argv
    - check_only
    argTypes:
    - int
    - char*[]
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 236
    functionDepth: 9
    functionLinenumber: 236
    functionLinenumberEnd: 445
    functionName: BootstrapModeMain
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - abort
    - CreateSharedMemoryAndSemaphores
    - strcmp
    - errcode
    - cleanup
    - RegisterBuiltinShmemCallbacks
    - InitializeFastPathLocks
    - pstrdup
    - CommitTransactionCommand
    - CreateDataDirLockFile
    - checkDataDir
    - parse_dispatch_option
    - boot_yylex_init
    - InitializeMaxBackends
    - BaseInit
    - RelationMapFinishBootstrap
    - elog
    - strlcpy
    - pg_link_canary_is_frontend
    - Assert
    - pfree
    - InitPostgres
    - SetProcessingMode
    - set_max_safe_fds
    - InitPostmasterChildSlots
    - bootstrap_signals
    - errmsg
    - StartTransactionCommand
    - ShmemCallRequestCallbacks
    - pg_getopt_next
    - pg_getopt_start
    - ParseLongOption
    - psprintf
    - ereport
    - boot_yyparse
    - ChangeToDataDir
    - InitProcess
    - InitializeGUCOptions
    - proc_exit
    - SetConfigOption
    - BootStrapXLOG
    - write_stderr
    - InitStandaloneProcess
    - CheckerModeMain
    - SelectConfigFiles
    linkageType: ''
    returnType: void
    signature: void BootstrapModeMain(int argc, char *argv[], bool check_only)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:459,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:466,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:467,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:468,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 470
    functionName: bootstrap_signals
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 1
    functionsReached:
    - Assert
    - pqsignal
    linkageType: ''
    returnType: void
    signature: void bootstrap_signals(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:488,1
    - Dst: populate_typ_list
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:496,1
    - Dst: closerel
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:499,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:501,1
    - Dst: table_openrv
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:504,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:504,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:505,1
    - Dst: AllocateAttribute
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:509,1
    - Dst: memmove
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:510,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:511,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:517,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:518,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - relname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 483
    functionDepth: 4
    functionLinenumber: 483
    functionLinenumberEnd: 522
    functionName: boot_openrel
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - elog
    - RelationGetNumberOfAttributes
    - closerel
    - populate_typ_list
    - memmove
    - AllocateAttribute
    - table_openrv
    - strlen
    - makeRangeVar
    - NameStr
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void boot_openrel(char *relname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:535,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:535,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:536,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:537,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:540,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:545,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:548,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:549,1
    - Dst: table_close
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:550,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - relname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 528
    functionDepth: 3
    functionLinenumber: 528
    functionLinenumberEnd: 553
    functionName: closerel
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 1
    functionsReached:
    - elog
    - table_close
    - strcmp
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: void closerel(char *relname)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:572,1
    - Dst: closerel
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:573,1
    - Dst: AllocateAttribute
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:577,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:578,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:580,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:581,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:581,1
    - Dst: gettype
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:584,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:624,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:640,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 4
    argNames:
    - name
    - type
    - attnum
    - nullness
    argTypes:
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 565
    functionDepth: 4
    functionLinenumber: 565
    functionLinenumberEnd: 662
    functionName: DefineAttr
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - elog
    - gettype
    - Assert
    - closerel
    - AllocateAttribute
    - namestrcpy
    - MemSet
    - NameStr
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void DefineAttr(char *name, char *type, int attnum, int nullness)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:679,1
    - Dst: CreateTupleDesc
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:681,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:682,1
    - Dst: pfree
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:683,1
    - Dst: simple_heap_insert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:685,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:686,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:687,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 672
    functionDepth: 6
    functionLinenumber: 672
    functionLinenumberEnd: 694
    functionName: InsertOneTuple
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - elog
    - simple_heap_insert
    - heap_freetuple
    - pfree
    - heap_form_tuple
    - CreateTupleDesc
    linkageType: ''
    returnType: void
    signature: void InsertOneTuple(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:714,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:716,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:718,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:718,1
    - Dst: boot_get_type_io_data
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:721,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:735,1
    - Dst: InsertOneProargdefaultsValue
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:737,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:739,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:740,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:741,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:746,1
    - Dst: ereport
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:753,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:754,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:755,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - value
    - i
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 700
    functionDepth: 2
    functionLinenumber: 700
    functionLinenumberEnd: 756
    functionName: InsertOneValue
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - elog
    - InsertOneProargdefaultsValue
    - errmsg_internal
    - Assert
    - RelationGetDescr
    - ereport
    - OidOutputFunctionCall
    - NameStr
    - RelationGetRelationName
    - TupleDescAttr
    - OidInputFunctionCall
    - boot_get_type_io_data
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void InsertOneValue(char *value, int i)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:780,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:782,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:784,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:787,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:789,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:790,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:791,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:792,1
    - Dst: OidFunctionCall3
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:795,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:796,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:797,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:798,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:799,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:799,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:804,1
    - Dst: boot_get_type_io_data
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:823,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:833,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:834,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:837,1
    - Dst: lappend
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:844,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:851,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:852,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:859,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 767
    functionDepth: 2
    functionLinenumber: 767
    functionLinenumberEnd: 861
    functionName: InsertOneProargdefaultsValue
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 1
    functionsReached:
    - makeConst
    - DatumGetInt16
    - OidInputFunctionCall
    - elog
    - Assert
    - Int32GetDatum
    - nodeToString
    - ObjectIdGetDatum
    - StaticAssertDecl
    - boot_get_type_io_data
    - DatumGetCString
    - CStringGetDatum
    - lappend
    - DatumGetArrayTypeP
    - Int16GetDatum
    - deconstruct_array_builtin
    - CStringGetTextDatum
    - OidFunctionCall3
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void InsertOneProargdefaultsValue(char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:870,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:871,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:872,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:873,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:875,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:875,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:876,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:877,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 867
    functionDepth: 2
    functionLinenumber: 867
    functionLinenumberEnd: 879
    functionName: InsertOneNull
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - NameStr
    - RelationGetRelationName
    - PointerGetDatum
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void InsertOneNull(int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closerel
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 885
    functionDepth: 4
    functionLinenumber: 885
    functionLinenumberEnd: 890
    functionName: cleanup
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 52
    functionsReached:
    - closerel
    linkageType: ''
    returnType: void
    signature: void cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:906,1
    - Dst: table_open
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:908,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:909,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:910,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:911,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:913,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:916,1
    - Dst: lappend
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:917,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:920,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:922,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:923,1
    - Dst: table_close
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:924,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 898
    functionDepth: 7
    functionLinenumber: 898
    functionLinenumberEnd: 925
    functionName: populate_typ_list
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 1
    functionsReached:
    - memcpy
    - Assert
    - table_close
    - lappend
    - MemoryContextSwitchTo
    - table_open
    - heap_getnext
    - table_beginscan_catalog
    - GETSTRUCT
    - palloc_object
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void populate_typ_list(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:947,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:949,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:949,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:961,1
    - Dst: populate_typ_list
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:963,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:971,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:973,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:973,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:986,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:990,1
    - Dst: populate_typ_list
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:991,1
    - Dst: gettype
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:992,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:994,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 938
    functionDepth: 8
    functionLinenumber: 938
    functionLinenumberEnd: 997
    functionName: gettype
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 2
    functionsReached:
    - elog
    - gettype
    - populate_typ_list
    - list_free_deep
    - lfirst
    - strncmp
    - NameStr
    linkageType: ''
    returnType: Oid
    signature: Oid gettype(char *type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:947,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:949,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 945
    functionDepth: 1
    functionLinenumber: 945
    functionLinenumberEnd: 954
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 326
    functionsReached:
    - lfirst
    - strncmp
    - NameStr
    linkageType: ''
    returnType: void
    signature: void foreach(lc, Typ)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:971,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:973,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:973,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 978
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 326
    functionsReached:
    - lfirst
    - strncmp
    - NameStr
    linkageType: ''
    returnType: void
    signature: void foreach(lc, Typ)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1029,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1035,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1043,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1064,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1073,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 9
    argNames:
    - typid
    - typlen
    - typbyval
    - typalign
    - typdelim
    - typioparam
    - typinput
    - typoutput
    - typcollation
    argTypes:
    - Oid
    - int16*
    - bool*
    - char*
    - char*
    - Oid*
    - Oid*
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1083
    functionName: boot_get_type_io_data
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 2
    functionsReached:
    - elog
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: void
    signature: "void boot_get_type_io_data(Oid typid,\n\t\t\t\t\t  int16 *typlen,\n\t\t\t\t\t
      \ bool *typbyval,\n\t\t\t\t\t  char *typalign,\n\t\t\t\t\t  char *typdelim,\n\t\t\t\t\t
      \ Oid *typioparam,\n\t\t\t\t\t  Oid *typinput,\n\t\t\t\t\t  Oid *typoutput,\n\t\t\t\t\t
      \ Oid *typcollation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1029,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1032
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 326
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, Typ)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1096,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1098,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rolname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1102
    functionName: boot_get_role_oid
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - lengthof
    - strcmp
    linkageType: ''
    returnType: Oid
    signature: Oid boot_get_role_oid(const char *rolname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1111
    functionDepth: 1
    functionLinenumber: 1111
    functionLinenumberEnd: 1116
    functionName: AllocateAttribute
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 2
    functionsReached:
    - MemoryContextAllocZero
    linkageType: ''
    returnType: Form_pg_attribute
    signature: Form_pg_attribute AllocateAttribute(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1144,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1148,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1150,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1153,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1155,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1158,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1167,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - heap
    - ind
    - indexInfo
    argTypes:
    - Oid
    - Oid
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1129
    functionDepth: 1
    functionLinenumber: 1129
    functionLinenumberEnd: 1173
    functionName: index_register
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - copyObject
    - memcpy
    - Assert
    - AllocSetContextCreate
    - MemoryContextSwitchTo
    - palloc_object
    linkageType: ''
    returnType: void
    signature: "void index_register(Oid heap,\n\t\t\t   Oid ind,\n\t\t\t   const IndexInfo
      *indexInfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1188,1
    - Dst: index_open
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1189,1
    - Dst: index_build
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1191,1
    - Dst: index_close
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1193,1
    - Dst: table_close
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:1194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1179
    functionDepth: 3
    functionLinenumber: 1179
    functionLinenumberEnd: 1196
    functionName: build_indices
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - index_build
    - index_open
    - table_open
    - index_close
    - table_close
    linkageType: ''
    returnType: void
    signature: void build_indices(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - natts
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: SizeOfItem
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeOfItem(natts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nitems
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: MinSizeOfItems
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MinSizeOfItems(nitems)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: num_combinations
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:91,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:93,1
    - Dst: generator_init
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:106,1
    - Dst: generator_next
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:108,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:121,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:121,1
    - Dst: ndistinct_for_combination
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:125,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:128,1
    - Dst: generator_free
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:131,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - totalrows
    - data
    argTypes:
    - double
    - StatsBuildData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 138
    functionName: statext_ndistinct_build
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - AttributeNumberIsValid
    - generator_free
    - Assert
    - palloc_array
    - num_combinations
    - ndistinct_for_combination
    - palloc
    - generator_init
    - generator_next
    linkageType: ''
    returnType: MVNDistinct
    signature: 'MVNDistinct *

      statext_ndistinct_build(double totalrows, StatsBuildData *data)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:152,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:153,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:153,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:154,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:155,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:157,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:160,1
    - Dst: statext_ndistinct_deserialize
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:164,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:164,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mvoid
    - inh
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 169
    functionName: statext_ndistinct_load
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - SysCacheGetAttr
    - DatumGetByteaPP
    - ObjectIdGetDatum
    - BoolGetDatum
    - statext_ndistinct_deserialize
    - SearchSysCache2
    linkageType: ''
    returnType: MVNDistinct
    signature: 'MVNDistinct *

      statext_ndistinct_load(Oid mvoid, bool inh)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:198,1
    - Dst: SizeOfItem
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:200,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:203,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:204,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:206,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:209,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:211,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:213,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:224,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:226,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:229,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 1
    argNames:
    - ndistinct
    argTypes:
    - MVNDistinct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 240
    functionName: statext_ndistinct_serialize
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - SizeOfItem
    - VARDATA
    - SET_VARSIZE
    - palloc
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      statext_ndistinct_serialize(MVNDistinct *ndistinct)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:259,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:260,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:261,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:264,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:267,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:269,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:271,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:275,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:278,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:281,1
    - Dst: MinSizeOfItems
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:284,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:285,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:286,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:287,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:293,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:293,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:304,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:310,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:313,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:315,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:319,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:323,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:323,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 1
    argNames:
    - data
    argTypes:
    - bytea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 246
    functionDepth: 4
    functionLinenumber: 246
    functionLinenumberEnd: 326
    functionName: statext_ndistinct_deserialize
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - elog
    - memcpy
    - Assert
    - palloc0
    - VARSIZE_ANY
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - palloc
    - MinSizeOfItems
    - MAXALIGN
    linkageType: ''
    returnType: MVNDistinct
    signature: 'MVNDistinct *

      statext_ndistinct_deserialize(bytea *data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:335,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ndistinct
    argTypes:
    - MVNDistinct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 337
    functionName: statext_ndistinct_free
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void statext_ndistinct_free(MVNDistinct *ndistinct)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:392,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:393,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:394,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 4
    argNames:
    - ndistinct
    - stxkeys
    - numexprs
    - elevel
    argTypes:
    - MVNDistinct*
    - int2vector*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 402
    functionName: statext_ndistinct_validate
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool statext_ndistinct_validate(const MVNDistinct *ndistinct,\n\t\t\t\t\t\t
      \  const int2vector *stxkeys,\n\t\t\t\t\t\t   int numexprs, int elevel)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: multi_sort_init
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:430,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:438,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:439,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:440,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:465,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:467,1
    - Dst: multi_sort_add_dimension
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:471,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:482,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:492,1
    - Dst: estimate_ndistinct
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:507,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 4
    argNames:
    - totalrows
    - data
    - k
    - combination
    argTypes:
    - double
    - StatsBuildData*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 508
    functionName: ndistinct_for_combination
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_array
    - multi_sort_compare
    - multi_sort_add_dimension
    - palloc_array
    - estimate_ndistinct
    - qsort_interruptible
    - multi_sort_init
    - lookup_type_cache
    linkageType: ''
    returnType: double
    signature: "double ndistinct_for_combination(double totalrows, StatsBuildData
      *data,\n\t\t\t\t\t\t  int k, int *combination)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: floor
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:532,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - totalrows
    - numrows
    - d
    - f1
    argTypes:
    - double
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 533
    functionName: estimate_ndistinct
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - floor
    linkageType: ''
    returnType: double
    signature: double estimate_ndistinct(double totalrows, int numrows, int d, int
      f1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:546,1
    - Dst: Min
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - n
    - k
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 559
    functionName: n_choose_k
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - Assert
    - Min
    linkageType: ''
    returnType: int
    signature: int n_choose_k(int n, int k)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 569
    functionName: num_combinations
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int num_combinations(int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:584,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:587,1
    - Dst: n_choose_k
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:589,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:592,1
    - Dst: generate_combinations
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:599,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - n
    - k
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 579
    functionDepth: 2
    functionLinenumber: 579
    functionLinenumberEnd: 608
    functionName: generator_init
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - generate_combinations
    - Assert
    - palloc_array
    - palloc_object
    - n_choose_k
    linkageType: ''
    returnType: CombinationGenerator
    signature: 'CombinationGenerator *

      generator_init(int n, int k)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - CombinationGenerator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 624
    functionName: generator_next
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: 'int *

      generator_next(CombinationGenerator *state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:635,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - CombinationGenerator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 637
    functionName: generator_free
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void generator_free(CombinationGenerator *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: generate_combinations_recurse
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:664,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - state
    - index
    - start
    - current
    argTypes:
    - CombinationGenerator*
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 647
    functionDepth: 1
    functionLinenumber: 647
    functionLinenumberEnd: 676
    functionName: generate_combinations_recurse
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - memcpy
    - generate_combinations_recurse
    linkageType: ''
    returnType: void
    signature: "void generate_combinations_recurse(CombinationGenerator *state,\n\t\t\t\t\t\t\t
      \ int index, int start, int *current)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:685,1
    - Dst: generate_combinations_recurse
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:687,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - CombinationGenerator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 682
    functionDepth: 2
    functionLinenumber: 682
    functionLinenumberEnd: 690
    functionName: generate_combinations
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - pfree
    - palloc0_array
    - generate_combinations_recurse
    linkageType: ''
    returnType: void
    signature: void generate_combinations(CombinationGenerator *state)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats.c:128,1
    - Dst: fetch_statentries_for_relation
      Src: /src/postgres/src/backend/statistics/extended_stats.c:129,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/statistics/extended_stats.c:132,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:135,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:146,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/statistics/extended_stats.c:149,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:155,1
    - Dst: lookup_var_attr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:169,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/statistics/extended_stats.c:173,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats.c:174,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:175,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats.c:176,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/statistics/extended_stats.c:178,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/statistics/extended_stats.c:179,1
    - Dst: errtable
      Src: /src/postgres/src/backend/statistics/extended_stats.c:180,1
    - Dst: statext_compute_stattarget
      Src: /src/postgres/src/backend/statistics/extended_stats.c:185,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:186,1
    - Dst: make_build_data
      Src: /src/postgres/src/backend/statistics/extended_stats.c:198,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:201,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/statistics/extended_stats.c:203,1
    - Dst: statext_ndistinct_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:206,1
    - Dst: statext_dependencies_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:208,1
    - Dst: statext_mcv_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:210,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:218,1
    - Dst: build_expr_data
      Src: /src/postgres/src/backend/statistics/extended_stats.c:220,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:221,1
    - Dst: compute_expr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:223,1
    - Dst: serialize_expr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:225,1
    - Dst: statext_store
      Src: /src/postgres/src/backend/statistics/extended_stats.c:230,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/statistics/extended_stats.c:234,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:238,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:241,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/statistics/extended_stats.c:242,1
    - Dst: list_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:244,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats.c:246,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 7
    argNames:
    - onerel
    - inh
    - totalrows
    - numrows
    - rows
    - natts
    - vacattrstats
    argTypes:
    - Relation
    - bool
    - double
    - int
    - HeapTuple*
    - int
    - VacAttrStats**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 247
    functionName: BuildRelationExtStatistics
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - statext_ndistinct_build
    - errcode
    - lfirst_int
    - RelationGetRelationName
    - statext_compute_stattarget
    - table_close
    - AmAutoVacuumWorkerProcess
    - statext_dependencies_build
    - elog
    - MemoryContextReset
    - foreach
    - statext_store
    - errtable
    - serialize_expr_stats
    - table_open
    - make_build_data
    - errmsg
    - list_length
    - build_expr_data
    - list_free
    - bms_num_members
    - ereport
    - statext_mcv_build
    - lfirst
    - lookup_var_attr_stats
    - compute_expr_stats
    - AllocSetContextCreate
    - fetch_statentries_for_relation
    - get_namespace_name
    - pgstat_progress_update_multi_param
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: "void BuildRelationExtStatistics(Relation onerel, bool inh, double
      totalrows,\n\t\t\t\t\t\t   int numrows, HeapTuple *rows,\n\t\t\t\t\t\t   int
      natts, VacAttrStats **vacattrstats)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:155,1
    - Dst: lookup_var_attr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:169,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/statistics/extended_stats.c:173,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats.c:174,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:175,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats.c:176,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/statistics/extended_stats.c:178,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/statistics/extended_stats.c:179,1
    - Dst: errtable
      Src: /src/postgres/src/backend/statistics/extended_stats.c:180,1
    - Dst: statext_compute_stattarget
      Src: /src/postgres/src/backend/statistics/extended_stats.c:185,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:186,1
    - Dst: make_build_data
      Src: /src/postgres/src/backend/statistics/extended_stats.c:198,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:201,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/statistics/extended_stats.c:203,1
    - Dst: statext_ndistinct_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:206,1
    - Dst: statext_dependencies_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:208,1
    - Dst: statext_mcv_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:210,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:218,1
    - Dst: build_expr_data
      Src: /src/postgres/src/backend/statistics/extended_stats.c:220,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:221,1
    - Dst: compute_expr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:223,1
    - Dst: serialize_expr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:225,1
    - Dst: statext_store
      Src: /src/postgres/src/backend/statistics/extended_stats.c:230,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/statistics/extended_stats.c:234,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:238,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 239
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 328
    functionsReached:
    - statext_ndistinct_build
    - errcode
    - lfirst_int
    - RelationGetRelationName
    - statext_compute_stattarget
    - statext_dependencies_build
    - AmAutoVacuumWorkerProcess
    - elog
    - MemoryContextReset
    - foreach
    - statext_store
    - errtable
    - serialize_expr_stats
    - make_build_data
    - errmsg
    - list_length
    - build_expr_data
    - bms_num_members
    - ereport
    - statext_mcv_build
    - lfirst
    - lookup_var_attr_stats
    - compute_expr_stats
    - get_namespace_name
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void foreach(lc, statslist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats.c:260,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/statistics/extended_stats.c:266,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:269,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:269,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/statistics/extended_stats.c:271,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:274,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:274,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/statistics/extended_stats.c:276,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - onerel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 252
    functionDepth: 4
    functionLinenumber: 252
    functionLinenumberEnd: 281
    functionName: HasRelationExtStatistics
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: bool HasRelationExtStatistics(Relation onerel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/statistics/extended_stats.c:311,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:314,1
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats.c:316,1
    - Dst: fetch_statentries_for_relation
      Src: /src/postgres/src/backend/statistics/extended_stats.c:317,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:321,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:324,1
    - Dst: lookup_var_attr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:331,1
    - Dst: statext_compute_stattarget
      Src: /src/postgres/src/backend/statistics/extended_stats.c:341,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats.c:349,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:351,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/statistics/extended_stats.c:352,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - onerel
    - natts
    - vacattrstats
    argTypes:
    - Relation
    - int
    - VacAttrStats**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 296
    functionDepth: 3
    functionLinenumber: 296
    functionLinenumberEnd: 356
    functionName: ComputeExtStatisticsRows
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - bms_num_members
    - MemoryContextSwitchTo
    - table_open
    - MemoryContextDelete
    - lfirst
    - lookup_var_attr_stats
    - statext_compute_stattarget
    - AllocSetContextCreate
    - table_close
    - fetch_statentries_for_relation
    linkageType: ''
    returnType: int
    signature: "int ComputeExtStatisticsRows(Relation onerel,\n\t\t\t\t\t\t int natts,
      VacAttrStats **vacattrstats)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:321,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:324,1
    - Dst: lookup_var_attr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:331,1
    - Dst: statext_compute_stattarget
      Src: /src/postgres/src/backend/statistics/extended_stats.c:341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 347
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 328
    functionsReached:
    - bms_num_members
    - lfirst
    - statext_compute_stattarget
    - lookup_var_attr_stats
    linkageType: ''
    returnType: void
    signature: void foreach(lc, lstats)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - stattarget
    - nattrs
    - stats
    argTypes:
    - int
    - int
    - VacAttrStats**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 414
    functionName: statext_compute_stattarget
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 4
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int statext_compute_stattarget(int stattarget, int nattrs, VacAttrStats
      **stats)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:444,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/statistics/extended_stats.c:447,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - htup
    - type
    argTypes:
    - HeapTuple
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 420
    functionDepth: 3
    functionLinenumber: 420
    functionLinenumberEnd: 448
    functionName: statext_is_kind_built
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - elog
    - heap_attisnull
    linkageType: ''
    returnType: bool
    signature: bool statext_is_kind_built(HeapTuple htup, char type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:460,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/statistics/extended_stats.c:466,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:469,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/statistics/extended_stats.c:471,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:474,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:474,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/statistics/extended_stats.c:485,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats.c:486,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/statistics/extended_stats.c:488,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/statistics/extended_stats.c:489,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:489,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:492,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:496,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/statistics/extended_stats.c:497,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/statistics/extended_stats.c:500,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/extended_stats.c:502,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/statistics/extended_stats.c:503,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/statistics/extended_stats.c:504,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/extended_stats.c:505,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:506,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/statistics/extended_stats.c:507,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/extended_stats.c:508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:510,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/statistics/extended_stats.c:514,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:518,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats.c:525,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:526,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:528,1
    - Dst: expand_generated_columns_in_expr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:531,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:541,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/statistics/extended_stats.c:544,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:549,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/statistics/extended_stats.c:552,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - pg_statext
    - rel
    argTypes:
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 453
    functionDepth: 4
    functionLinenumber: 453
    functionLinenumberEnd: 555
    functionName: fetch_statentries_for_relation
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - lappend_int
    - pstrdup
    - NameStr
    - ARR_NDIM
    - DatumGetInt16
    - bms_add_member
    - elog
    - fix_opfuncids
    - systable_endscan
    - HeapTupleIsValid
    - Assert
    - pfree
    - ObjectIdGetDatum
    - RelationGetRelid
    - TextDatumGetCString
    - ARR_DIMS
    - eval_const_expressions
    - palloc0_object
    - systable_beginscan
    - expand_generated_columns_in_expr
    - lappend
    - ARR_HASNULL
    - stringToNode
    - ARR_DATA_PTR
    - GETSTRUCT
    - SysCacheGetAttrNotNull
    - DatumGetArrayTypeP
    - get_namespace_name
    - ScanKeyInit
    - ARR_ELEMTYPE
    - systable_getnext
    - SysCacheGetAttr
    linkageType: ''
    returnType: List
    signature: 'List *

      fetch_statentries_for_relation(Relation pg_statext, Relation rel)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/statistics/extended_stats.c:574,1
    - Dst: exprType
      Src: /src/postgres/src/backend/statistics/extended_stats.c:586,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/statistics/extended_stats.c:587,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/statistics/extended_stats.c:588,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/statistics/extended_stats.c:590,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:591,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:592,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:593,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats.c:594,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:620,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/extended_stats.c:621,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/statistics/extended_stats.c:621,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:622,1
    - Dst: std_typanalyze
      Src: /src/postgres/src/backend/statistics/extended_stats.c:624,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:628,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:629,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 634
    functionName: examine_attribute
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - elog
    - palloc0_object
    - exprTypmod
    - std_typanalyze
    - exprType
    - HeapTupleIsValid
    - heap_freetuple
    - pfree
    - exprCollation
    - OidFunctionCall1
    - SearchSysCacheCopy1
    - GETSTRUCT
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - DatumGetBool
    linkageType: ''
    returnType: VacAttrStats
    signature: 'VacAttrStats *

      examine_attribute(Node *expr)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:650,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/statistics/extended_stats.c:655,1
    - Dst: exprType
      Src: /src/postgres/src/backend/statistics/extended_stats.c:667,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/statistics/extended_stats.c:668,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/statistics/extended_stats.c:676,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/statistics/extended_stats.c:678,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:679,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:680,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:681,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats.c:683,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:705,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/extended_stats.c:706,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/statistics/extended_stats.c:706,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:707,1
    - Dst: std_typanalyze
      Src: /src/postgres/src/backend/statistics/extended_stats.c:709,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:713,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:714,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - expr
    - stattarget
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 719
    functionName: examine_expression
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - elog
    - palloc0_object
    - exprTypmod
    - std_typanalyze
    - Assert
    - exprType
    - HeapTupleIsValid
    - heap_freetuple
    - pfree
    - exprCollation
    - OidFunctionCall1
    - SearchSysCacheCopy1
    - GETSTRUCT
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - DatumGetBool
    linkageType: ''
    returnType: VacAttrStats
    signature: 'VacAttrStats *

      examine_expression(Node *expr, int stattarget)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:738,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:738,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:740,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:743,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:764,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:774,1
    - Dst: examine_attribute
      Src: /src/postgres/src/backend/statistics/extended_stats.c:776,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:784,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 800
    functionName: lookup_var_attr_stats
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 4
    functionsReached:
    - pfree
    - bms_num_members
    - lfirst
    - examine_attribute
    - bms_next_member
    - palloc
    - list_length
    linkageType: ''
    returnType: VacAttrStats
    signature: "VacAttrStats **\nlookup_var_attr_stats(Bitmapset *attrs, List *exprs,\n\t\t\t\t\t
      \ int nvacatts, VacAttrStats **vacatts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:774,1
    - Dst: examine_attribute
      Src: /src/postgres/src/backend/statistics/extended_stats.c:776,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:784,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 797
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 328
    functionsReached:
    - pfree
    - lfirst
    - examine_attribute
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats.c:817,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:819,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:820,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:823,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:826,1
    - Dst: statext_ndistinct_serialize
      Src: /src/postgres/src/backend/statistics/extended_stats.c:835,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:838,1
    - Dst: statext_dependencies_serialize
      Src: /src/postgres/src/backend/statistics/extended_stats.c:843,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:846,1
    - Dst: statext_mcv_serialize
      Src: /src/postgres/src/backend/statistics/extended_stats.c:850,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:853,1
    - Dst: RemoveStatisticsDataById
      Src: /src/postgres/src/backend/statistics/extended_stats.c:865,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:868,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:868,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:869,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:871,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats.c:873,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 7
    argNames:
    - statOid
    - inh
    - ndistinct
    - dependencies
    - mcv
    - exprs
    - stats
    argTypes:
    - Oid
    - bool
    - MVNDistinct*
    - MVDependencies*
    - MCVList*
    - Datum
    - VacAttrStats**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 807
    functionDepth: 6
    functionLinenumber: 807
    functionLinenumberEnd: 874
    functionName: statext_store
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - RemoveStatisticsDataById
    - heap_freetuple
    - statext_dependencies_serialize
    - heap_form_tuple
    - RelationGetDescr
    - statext_ndistinct_serialize
    - table_close
    - statext_mcv_serialize
    - table_open
    - memset
    - PointerGetDatum
    - ObjectIdGetDatum
    - BoolGetDatum
    - CatalogTupleInsert
    linkageType: ''
    returnType: void
    signature: "void statext_store(Oid statOid, bool inh,\n\t\t\t  MVNDistinct *ndistinct,
      MVDependencies *dependencies,\n\t\t\t  MCVList *mcv, Datum exprs, VacAttrStats
      **stats)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:882,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ndims
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 877
    functionDepth: 1
    functionLinenumber: 877
    functionLinenumberEnd: 890
    functionName: multi_sort_init
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc0
    linkageType: ''
    returnType: MultiSortSupport
    signature: MultiSortSupport multi_sort_init(int ndims)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/statistics/extended_stats.c:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - mss
    - sortdim
    - oper
    - collation
    argTypes:
    - MultiSortSupport
    - int
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 896
    functionDepth: 1
    functionLinenumber: 896
    functionLinenumberEnd: 907
    functionName: multi_sort_add_dimension
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - PrepareSortSupportFromOrderingOp
    linkageType: ''
    returnType: void
    signature: "void multi_sort_add_dimension(MultiSortSupport mss, int sortdim,\n\t\t\t\t\t\t
      Oid oper, Oid collation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/statistics/extended_stats.c:922,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 910
    functionDepth: 2
    functionLinenumber: 910
    functionLinenumberEnd: 932
    functionName: multi_sort_compare
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - ApplySortComparator
    linkageType: ''
    returnType: int
    signature: int multi_sort_compare(const void *a, const void *b, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/statistics/extended_stats.c:939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dim
    - a
    - b
    - mss
    argTypes:
    - int
    - SortItem*
    - SortItem*
    - MultiSortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 935
    functionDepth: 2
    functionLinenumber: 935
    functionLinenumberEnd: 942
    functionName: multi_sort_compare_dim
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - ApplySortComparator
    linkageType: ''
    returnType: int
    signature: "int multi_sort_compare_dim(int dim, const SortItem *a, const SortItem
      *b,\n\t\t\t\t\t   MultiSortSupport mss)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/statistics/extended_stats.c:953,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - start
    - end
    - a
    - b
    - mss
    argTypes:
    - int
    - int
    - SortItem*
    - SortItem*
    - MultiSortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 944
    functionDepth: 2
    functionLinenumber: 944
    functionLinenumberEnd: 962
    functionName: multi_sort_compare_dims
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - ApplySortComparator
    linkageType: ''
    returnType: int
    signature: "int multi_sort_compare_dims(int start, int end,\n\t\t\t\t\t\tconst
      SortItem *a, const SortItem *b,\n\t\t\t\t\t\tMultiSortSupport mss)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: compare_datums_simple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 970
    functionName: compare_scalars_simple
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - compare_datums_simple
    linkageType: ''
    returnType: int
    signature: int compare_scalars_simple(const void *a, const void *b, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/statistics/extended_stats.c:975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 972
    functionDepth: 2
    functionLinenumber: 972
    functionLinenumberEnd: 976
    functionName: compare_datums_simple
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - ApplySortComparator
    linkageType: ''
    returnType: int
    signature: int compare_datums_simple(Datum a, Datum b, SortSupport ssup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:992,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/extended_stats.c:998,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1001,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1011,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1011,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1012,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1018,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - attrs
    - nexprs
    - numattrs
    argTypes:
    - Bitmapset*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 1022
    functionName: build_attnums_array
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - AttributeNumberIsValid
    - Assert
    - bms_num_members
    - palloc_array
    - bms_next_member
    linkageType: ''
    returnType: AttrNumber
    signature: 'AttrNumber *

      build_attnums_array(Bitmapset *attrs, int nexprs, int *numattrs)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1048,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1052,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1057,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1067,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1080,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1082,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1106,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1123,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1129,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1129,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1149,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1154,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 5
    argNames:
    - data
    - nitems
    - mss
    - numattrs
    - attnums
    argTypes:
    - StatsBuildData*
    - int*
    - MultiSortSupport
    - int
    - AttrNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1031
    functionDepth: 4
    functionLinenumber: 1031
    functionLinenumberEnd: 1158
    functionName: build_sorted_items
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - PG_DETOAST_DATUM
    - Assert
    - pfree
    - palloc0
    - get_typlen
    - palloc_array
    - toast_raw_datum_size
    - PointerGetDatum
    - qsort_interruptible
    - MAXALIGN
    linkageType: ''
    returnType: SortItem
    signature: "SortItem *\nbuild_sorted_items(StatsBuildData *data, int *nitems,\n\t\t\t\t
      \  MultiSortSupport mss,\n\t\t\t\t   int numattrs, AttrNumber *attnums)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stats
    - requiredkind
    argTypes:
    - List*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1164
    functionDepth: 1
    functionLinenumber: 1164
    functionLinenumberEnd: 1178
    functionName: has_stats_of_kind
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool has_stats_of_kind(List *stats, char requiredkind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1175
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 328
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, stats)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1194,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1196,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stat
    - expr
    argTypes:
    - StatisticExtInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1187
    functionDepth: 1
    functionLinenumber: 1187
    functionLinenumberEnd: 1205
    functionName: stat_find_expression
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - equal
    - lfirst
    - foreach
    linkageType: ''
    returnType: int
    signature: int stat_find_expression(StatisticExtInfo *stat, Node *expr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1222,1
    - Dst: stat_find_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1225,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - stat
    - exprs
    - expr_idxs
    argTypes:
    - StatisticExtInfo*
    - List*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1214
    functionDepth: 2
    functionLinenumber: 1214
    functionLinenumberEnd: 1235
    functionName: stat_covers_expressions
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - stat_find_expression
    - lfirst
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: "bool stat_covers_expressions(StatisticExtInfo *stat, List *exprs,\n\t\t\t\t\t\tBitmapset
      **expr_idxs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1222,1
    - Dst: stat_find_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1225,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1220
    functionDepth: 2
    functionLinenumber: 1220
    functionLinenumberEnd: 1231
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 329
    functionsReached:
    - stat_find_expression
    - lfirst
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1268,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1299,1
    - Dst: stat_covers_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1300,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1304,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1305,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1308,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1308,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1310,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1311,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1317,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1317,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 6
    argNames:
    - stats
    - requiredkind
    - inh
    - clause_attnums
    - clause_exprs
    - nclauses
    argTypes:
    - List*
    - char
    - bool
    - Bitmapset**
    - List**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1255
    functionDepth: 3
    functionLinenumber: 1255
    functionLinenumberEnd: 1335
    functionName: choose_best_statistics
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - list_length
    - bms_num_members
    - stat_covers_expressions
    - bms_free
    - lfirst
    - bms_add_members
    - bms_is_subset
    linkageType: ''
    returnType: StatisticExtInfo
    signature: "StatisticExtInfo *\nchoose_best_statistics(List *stats, char requiredkind,
      bool inh,\n\t\t\t\t\t   Bitmapset **clause_attnums, List **clause_exprs,\n\t\t\t\t\t
      \  int nclauses)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1268,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1299,1
    - Dst: stat_covers_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1300,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1304,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1305,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1308,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1308,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1310,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1311,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1317,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1317,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1265
    functionDepth: 3
    functionLinenumber: 1265
    functionLinenumberEnd: 1332
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 329
    functionsReached:
    - list_length
    - bms_num_members
    - stat_covers_expressions
    - bms_free
    - lfirst
    - bms_add_members
    - bms_is_subset
    linkageType: ''
    returnType: void
    signature: void foreach(lc, stats)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1383,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1387,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1403,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1407,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1413,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1419,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1423,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1433,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1451,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1451,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1454,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1455,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1460,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1465,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1472,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1476,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1490,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1508,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1508,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1511,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1512,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1517,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1522,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1523,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1524,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1543,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1549,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1550,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1560,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1565,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1566,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1572,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1580,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 76
    argCount: 6
    argNames:
    - root
    - clause
    - relid
    - attnums
    - exprs
    - leakproof
    argTypes:
    - PlannerInfo*
    - Node*
    - Index
    - Bitmapset**
    - List**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1377
    functionDepth: 2
    functionLinenumber: 1377
    functionLinenumberEnd: 1582
    functionName: statext_is_compatible_clause_internal
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - get_opcode
    - get_oprrest
    - foreach
    - AttrNumberIsForUserDefinedAttr
    - is_orclause
    - lappend
    - statext_is_compatible_clause_internal
    - is_notclause
    - is_opclause
    - is_andclause
    - lfirst
    - get_func_leakproof
    - list_length
    - IsA
    - bms_add_member
    - examine_opclause_args
    linkageType: ''
    returnType: bool
    signature: "bool statext_is_compatible_clause_internal(PlannerInfo *root, Node
      *clause,\n\t\t\t\t\t\t\t\t\t  Index relid, Bitmapset **attnums,\n\t\t\t\t\t\t\t\t\t
      \ List **exprs, bool *leakproof)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: is_andclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1617,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1626,1
    - Dst: statext_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1628,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1628,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1637,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1646,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1655,1
    - Dst: bms_offset_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1687,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1691,1
    - Dst: all_rows_selectable
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1694,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 5
    argNames:
    - root
    - clause
    - relid
    - attnums
    - exprs
    argTypes:
    - PlannerInfo*
    - Node*
    - Index
    - Bitmapset**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1700
      start: 1604
    functionDepth: 3
    functionLinenumber: 1604
    functionLinenumberEnd: 1700
    functionName: statext_is_compatible_clause
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - foreach
    - bms_offset_members
    - all_rows_selectable
    - statext_is_compatible_clause_internal
    - pull_varattnos
    - statext_is_compatible_clause
    - is_andclause
    - lfirst
    - IsA
    - bms_get_singleton_member
    linkageType: ''
    returnType: bool
    signature: "bool statext_is_compatible_clause(PlannerInfo *root, Node *clause,
      Index relid,\n\t\t\t\t\t\t\t Bitmapset **attnums, List **exprs)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1747,1
    - Dst: has_stats_of_kind
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1750,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1753,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1753,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1756,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1756,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1772,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1776,1
    - Dst: statext_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1777,1
    - Dst: choose_best_statistics
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1799,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1811,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1848,1
    - Dst: stat_covers_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1849,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1859,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1861,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1862,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1863,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1866,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1866,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1867,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1873,1
    - Dst: list_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1876,1
    - Dst: statext_mcv_load
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1888,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1903,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1920,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1930,1
    - Dst: mcv_clause_selectivity_or
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1937,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1953,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1956,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1961,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1968,1
    - Dst: clauselist_selectivity_ext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1992,1
    - Dst: mcv_clauselist_selectivity
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2000,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2006,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 62
    argCount: 8
    argNames:
    - root
    - clauses
    - varRelid
    - jointype
    - sjinfo
    - rel
    - estimatedclauses
    - is_or
    argTypes:
    - PlannerInfo*
    - List*
    - int
    - JoinType
    - SpecialJoinInfo*
    - RelOptInfo*
    - Bitmapset**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 1736
    functionDepth: 5
    functionLinenumber: 1736
    functionLinenumberEnd: 2017
    functionName: statext_mcv_clauselist_selectivity
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - planner_rt_fetch
    - bms_free
    - palloc_array
    - has_stats_of_kind
    - bms_is_subset
    - bms_add_member
    - mcv_combine_selectivities
    - Assert
    - bms_is_member
    - statext_is_compatible_clause
    - choose_best_statistics
    - list_length
    - list_free
    - mcv_clauselist_selectivity
    - lappend
    - lfirst
    - CLAMP_PROBABILITY
    - mcv_clause_selectivity_or
    - bms_membership
    - statext_mcv_load
    - clauselist_selectivity_ext
    - clause_selectivity_ext
    - stat_covers_expressions
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity statext_mcv_clauselist_selectivity(PlannerInfo *root,
      List *clauses, int varRelid,\n\t\t\t\t\t\t\t\t   JoinType jointype, SpecialJoinInfo
      *sjinfo,\n\t\t\t\t\t\t\t\t   RelOptInfo *rel, Bitmapset **estimatedclauses,\n\t\t\t\t\t\t\t\t
      \  bool is_or)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1772,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1776,1
    - Dst: statext_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1777,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1789
      start: 1770
    functionDepth: 4
    functionLinenumber: 1770
    functionLinenumberEnd: 1789
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 331
    functionsReached:
    - statext_is_compatible_clause
    - lfirst
    - bms_is_member
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1848,1
    - Dst: stat_covers_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1849,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1859,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1861,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1862,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1863,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1866,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1866,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1867,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1873,1
    - Dst: list_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1876,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1878
      start: 1820
    functionDepth: 3
    functionLinenumber: 1820
    functionLinenumberEnd: 1878
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 331
    functionsReached:
    - list_free
    - lappend
    - stat_covers_expressions
    - bms_free
    - lfirst
    - list_length
    - bms_is_subset
    - bms_add_member
    - bms_membership
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1903,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1920,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1930,1
    - Dst: mcv_clause_selectivity_or
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1937,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1953,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1956,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1961,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1968,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1971
      start: 1901
    functionDepth: 5
    functionLinenumber: 1901
    functionLinenumberEnd: 1971
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 331
    functionsReached:
    - mcv_combine_selectivities
    - bms_is_member
    - clause_selectivity_ext
    - lfirst
    - CLAMP_PROBABILITY
    - mcv_clause_selectivity_or
    linkageType: ''
    returnType: void
    signature: void foreach(l, stat_clauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: statext_mcv_clauselist_selectivity
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2032,1
    - Dst: dependencies_clauselist_selectivity
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 8
    argNames:
    - root
    - clauses
    - varRelid
    - jointype
    - sjinfo
    - rel
    - estimatedclauses
    - is_or
    argTypes:
    - PlannerInfo*
    - List*
    - int
    - JoinType
    - SpecialJoinInfo*
    - RelOptInfo*
    - Bitmapset**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2060
      start: 2023
    functionDepth: 6
    functionLinenumber: 2023
    functionLinenumberEnd: 2060
    functionName: statext_clauselist_selectivity
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - dependencies_clauselist_selectivity
    - statext_mcv_clauselist_selectivity
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity statext_clauselist_selectivity(PlannerInfo *root, List
      *clauses, int varRelid,\n\t\t\t\t\t\t\t   JoinType jointype, SpecialJoinInfo
      *sjinfo,\n\t\t\t\t\t\t\t   RelOptInfo *rel, Bitmapset **estimatedclauses,\n\t\t\t\t\t\t\t
      \  bool is_or)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2085,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2085,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2087,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2088,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2091,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2094,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2097,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2103,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - args
    - exprp
    - cstp
    - expronleftp
    argTypes:
    - List*
    - Node**
    - Const**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2123
      start: 2074
    functionDepth: 1
    functionLinenumber: 2074
    functionLinenumberEnd: 2123
    functionName: examine_opclause_args
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - Assert
    - linitial
    - lsecond
    - list_length
    - IsA
    linkageType: ''
    returnType: bool
    signature: "bool examine_opclause_args(List *args, Node **exprp, Const **cstp,\n\t\t\t\t\t
      \ bool *expronleftp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2138,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2157,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2164,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2165,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2168,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2171,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2171,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2178,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2179,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2191,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2194,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2201,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2202,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2212,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2214,1
    - Dst: get_attribute_options
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2235,1
    - Dst: VacAttrStats*::compute_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2240,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2254,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2256,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2257,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2258,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2261,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2262,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 5
    argNames:
    - onerel
    - exprdata
    - nexprs
    - rows
    - numrows
    argTypes:
    - Relation
    - AnlExprData*
    - int
    - HeapTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2263
      start: 2129
    functionDepth: 2
    functionLinenumber: 2129
    functionLinenumberEnd: 2263
    functionName: compute_expr_stats
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - ResetExprContext
    - FreeExecutorState
    - ExecEvalExprSwitchContext
    - MemoryContextReset
    - Assert
    - RelationGetDescr
    - MakeSingleTupleTableSlot
    - get_attribute_options
    - VacAttrStats*::compute_stats
    - ExecStoreHeapTuple
    - ExecDropSingleTupleTableSlot
    - AllocSetContextCreate
    - ExecPrepareExpr
    - CreateExecutorState
    - GetPerTupleExprContext
    - datumCopy
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - palloc
    linkageType: ''
    returnType: void
    signature: "void compute_expr_stats(Relation onerel, AnlExprData *exprdata, int
      nexprs,\n\t\t\t\t   HeapTuple *rows, int numrows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - stats
    - rownum
    - isNull
    argTypes:
    - VacAttrStatsP
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2281
      start: 2272
    functionDepth: 0
    functionLinenumber: 2272
    functionLinenumberEnd: 2281
    functionName: expr_fetch_func
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum expr_fetch_func(VacAttrStatsP stats, int rownum, bool *isNull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2292,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2296,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2301,1
    - Dst: examine_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - exprs
    - stattarget
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2310
      start: 2288
    functionDepth: 2
    functionLinenumber: 2288
    functionLinenumberEnd: 2310
    functionName: build_expr_data
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - list_length
    - palloc0
    - lfirst
    - examine_expression
    linkageType: ''
    returnType: AnlExprData
    signature: 'AnlExprData *

      build_expr_data(List *exprs, int stattarget)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2301,1
    - Dst: examine_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2307
      start: 2299
    functionDepth: 2
    functionLinenumber: 2299
    functionLinenumberEnd: 2307
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 331
    functionsReached:
    - examine_expression
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2322,1
    - Dst: get_rel_type_id
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2325,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2327,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2328,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2329,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2344,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2360,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2361,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2362,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2363,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2364,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2365,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2369,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2374,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2379,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2389,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2393,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2394,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2395,1
    - Dst: construct_array
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2410,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2416,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2425,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2425,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2427,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2428,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2428,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2434,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2436,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 2
    argNames:
    - exprdata
    - nexprs
    argTypes:
    - AnlExprData*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2313
    functionDepth: 6
    functionLinenumber: 2313
    functionLinenumberEnd: 2437
    functionName: serialize_expr_stats
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - errcode
    - heap_form_tuple
    - Float4GetDatum
    - table_close
    - makeArrayResult
    - construct_array_builtin
    - Int32GetDatum
    - RelationGetDescr
    - table_open
    - errmsg
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - ereport
    - heap_copy_tuple_as_datum
    - Int16GetDatum
    - construct_array
    - palloc
    - BoolGetDatum
    - get_rel_type_id
    - accumArrayResult
    linkageType: ''
    returnType: Datum
    signature: Datum serialize_expr_stats(AnlExprData *exprdata, int nexprs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2457,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2458,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2458,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2459,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2460,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2462,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2465,1
    - Dst: DatumGetExpandedArray
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2469,1
    - Dst: deconstruct_expanded_array
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2471,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2476,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2480,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2483,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2484,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2488,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2490,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - stxoid
    - inh
    - idx
    argTypes:
    - Oid
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2493
      start: 2446
    functionDepth: 3
    functionLinenumber: 2446
    functionLinenumberEnd: 2493
    functionName: statext_expressions_load
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - elog
    - HeapTupleHeaderGetDatumLength
    - HeapTupleIsValid
    - DatumGetExpandedArray
    - SysCacheGetAttr
    - ReleaseSysCache
    - deconstruct_expanded_array
    - heap_copytuple
    - DatumGetHeapTupleHeader
    - ObjectIdGetDatum
    - BoolGetDatum
    - ItemPointerSetInvalid
    - SearchSysCache2
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple statext_expressions_load(Oid stxoid, bool inh, int idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2516,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2516,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2520,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2521,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2522,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2525,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2526,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2529,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2530,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2532,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2536,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2540,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2544,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2548,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2552,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2557,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2560,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2563,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2572,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2581,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2583,1
    - Dst: examine_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2586,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2597,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2599,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2608,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2609,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2612,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2612,1
    - Dst: ExecPrepareExprList
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2619,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2627,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2630,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2632,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2637,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2644,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2645,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2662,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2663,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 73
    argCount: 6
    argNames:
    - rel
    - stat
    - numrows
    - rows
    - stats
    - stattarget
    argTypes:
    - Relation
    - StatExtEntry*
    - int
    - HeapTuple*
    - VacAttrStats**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2666
      start: 2500
    functionDepth: 4
    functionLinenumber: 2500
    functionLinenumberEnd: 2666
    functionName: make_build_data
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - ResetExprContext
    - FreeExecutorState
    - foreach
    - Assert
    - RelationGetDescr
    - MakeSingleTupleTableSlot
    - bms_next_member
    - list_length
    - MAXALIGN
    - ExecStoreHeapTuple
    - heap_getattr
    - ExecDropSingleTupleTableSlot
    - bms_num_members
    - examine_expression
    - lfirst
    - CreateExecutorState
    - GetPerTupleExprContext
    - ExecEvalExpr
    - palloc
    - ExecPrepareExprList
    linkageType: ''
    returnType: StatsBuildData
    signature: "StatsBuildData *\nmake_build_data(Relation rel, StatExtEntry *stat,
      int numrows, HeapTuple *rows,\n\t\t\t\tVacAttrStats **stats, int stattarget)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2637,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2644,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2659
      start: 2633
    functionDepth: 1
    functionLinenumber: 2633
    functionLinenumberEnd: 2659
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 332
    functionsReached:
    - GetPerTupleExprContext
    - lfirst
    - ExecEvalExpr
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprstates)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:185,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:189,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:190,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:194,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:199,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:207,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:209,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:210,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:212,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:214,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:217,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - pg_stext
    - nspoid
    - stxname
    argTypes:
    - Relation
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 177
    functionDepth: 4
    functionLinenumber: 177
    functionLinenumberEnd: 218
    functionName: get_pg_statistic_ext
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - CStringGetDatum
    - SearchSysCacheCopy1
    - GETSTRUCT
    - OidIsValid
    - ObjectIdGetDatum
    - systable_getnext
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple get_pg_statistic_ext(Relation pg_stext, Oid nspoid, const
      char *stxname)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:232,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:235,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:236,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:236,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:236,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:237,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:239,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:241,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:258,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - tup
    - enabled
    argTypes:
    - HeapTuple
    - StakindFlags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 262
    functionName: expand_stxkind
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - elog
    - ARR_HASNULL
    - ARR_ELEMTYPE
    - ARR_DATA_PTR
    - ARR_NDIM
    - SysCacheGetAttrNotNull
    - DatumGetArrayTypeP
    - ARR_DIMS
    linkageType: ''
    returnType: void
    signature: void expand_stxkind(HeapTuple tup, StakindFlags *enabled)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:275,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:277,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:281,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:283,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:284,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:288,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:289,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:293,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:293,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:294,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:297,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:299,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - values
    - nulls
    - replaces
    argTypes:
    - Datum*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 267
    functionDepth: 7
    functionLinenumber: 267
    functionLinenumberEnd: 302
    functionName: upsert_pg_statistic_ext_data
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - heap_freetuple
    - HeapTupleIsValid
    - RelationGetDescr
    - heap_form_tuple
    - CatalogTupleUpdate
    - CommandCounterIncrement
    - table_open
    - ReleaseSysCache
    - table_close
    - CatalogTupleInsert
    - SearchSysCache2
    - heap_modify_tuple
    linkageType: ''
    returnType: void
    signature: "void upsert_pg_statistic_ext_data(const Datum *values, const bool
      *nulls,\n\t\t\t\t\t\t\t const bool *replaces)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:359,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:360,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:361,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:362,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:363,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:364,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:366,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:368,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:369,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:370,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:371,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:376,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:377,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:377,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:378,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:379,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:379,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:382,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:383,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:383,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:384,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:385,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:385,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:386,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:387,1
    - Dst: RangeVarGetRelidExtended
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:395,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:395,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:402,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:403,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:404,1
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:409,1
    - Dst: get_pg_statistic_ext
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:410,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:412,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:414,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:415,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:416,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:422,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:430,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:432,1
    - Dst: expand_stxkind
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:441,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:445,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:453,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:454,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:455,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:466,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:469,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:472,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:482,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:483,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:484,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:486,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:499,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:500,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:501,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:503,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:517,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:518,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:519,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:521,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:522,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:523,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:527,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:541,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:542,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:543,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:545,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:546,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:547,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:561,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:562,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:563,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:565,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:583,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:584,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:585,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:595,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:596,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:597,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:602,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:603,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:605,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:608,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:613,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:626,1
    - Dst: exprType
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:628,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:629,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:630,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:639,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:641,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:658,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:659,1
    - Dst: statext_ndistinct_deserialize
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:660,1
    - Dst: statext_ndistinct_validate
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:662,1
    - Dst: statext_ndistinct_free
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:672,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:677,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:678,1
    - Dst: statext_dependencies_deserialize
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:679,1
    - Dst: statext_dependencies_validate
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:681,1
    - Dst: statext_dependencies_free
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:691,1
    - Dst: import_mcv
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:699,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:699,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:700,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:707,1
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:722,1
    - Dst: import_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:732,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:736,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:739,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:743,1
    - Dst: upsert_pg_statistic_ext_data
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:752,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:755,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:756,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:758,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:760,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:762,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:764,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 165
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 313
    functionDepth: 8
    functionLinenumber: 313
    functionLinenumberEnd: 766
    functionName: extended_statistics_update
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - errcode
    - exprType
    - import_mcv
    - errhint
    - SearchSysCache2
    - makeRangeVar
    - get_namespace_oid
    - statext_ndistinct_free
    - PG_GETARG_ARRAYTYPE_P
    - RecoveryInProgress
    - table_close
    - statext_dependencies_validate
    - elog
    - fix_opfuncids
    - RangeVarGetRelidExtended
    - HeapTupleIsValid
    - pfree
    - Assert
    - heap_freetuple
    - table_open
    - ReleaseSysCache
    - errmsg
    - list_length
    - TextDatumGetCString
    - ObjectIdGetDatum
    - import_expressions
    - PG_GETARG_JSONB_P
    - eval_const_expressions
    - exprTypmod
    - ereport
    - expand_stxkind
    - exprCollation
    - stringToNode
    - DatumGetByteaPP
    - get_pg_statistic_ext
    - GETSTRUCT
    - statext_dependencies_free
    - upsert_pg_statistic_ext_data
    - statext_dependencies_deserialize
    - Int16GetDatum
    - palloc0_array
    - PG_GETARG_BOOL
    - statext_ndistinct_validate
    - stats_check_required_arg
    - list_nth
    - BoolGetDatum
    - PG_ARGISNULL
    - statext_ndistinct_deserialize
    - SysCacheGetAttr
    linkageType: ''
    returnType: bool
    signature: bool extended_statistics_update(FunctionCallInfo fcinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:776,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:778,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:779,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:780,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:785,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:787,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:788,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:789,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:794,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:796,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:797,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - arr
    - argindex
    - required_ndims
    - mcv_length
    argTypes:
    - ArrayType*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 805
    functionName: check_mcvlist_array
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - errmsg
    - ARR_NDIM
    - array_contains_nulls
    - ARR_DIMS
    linkageType: ''
    returnType: bool
    signature: "bool check_mcvlist_array(const ArrayType *arr, int argindex, int required_ndims,\n\t\t\t\t\tint
      mcv_length)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:829,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:831,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:832,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:833,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:838,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:840,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:841,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:842,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:844,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:853,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:861,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:862,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:863,1
    - Dst: check_mcvlist_array
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:869,1
    - Dst: check_mcvlist_array
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:870,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:880,1
    - Dst: statext_mcv_import
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:883,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:886,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:887,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 8
    argNames:
    - mcv_arr
    - freqs_arr
    - base_freqs_arr
    - atttypids
    - atttypmods
    - atttypcolls
    - numattrs
    - ok
    argTypes:
    - ArrayType*
    - ArrayType*
    - ArrayType*
    - Oid*
    - int32*
    - Oid*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 893
    functionName: import_mcv
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 1
    functionsReached:
    - deconstruct_array_builtin
    - errcode
    - check_mcvlist_array
    - ereport
    - statext_mcv_import
    - ARR_DATA_PTR
    - errmsg
    - ARR_NDIM
    - ARR_DIMS
    linkageType: ''
    returnType: Datum
    signature: "Datum import_mcv(const ArrayType *mcv_arr, const ArrayType *freqs_arr,\n\t\t
      \  const ArrayType *base_freqs_arr, Oid *atttypids, int32 *atttypmods,\n\t\t
      \  Oid *atttypcolls, int numattrs, bool *ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:901,1
    - Dst: strlen
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:904,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:905,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - JsonbValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 898
    functionDepth: 1
    functionLinenumber: 898
    functionLinenumberEnd: 909
    functionName: key_in_expr_argnames
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - Assert
    - strncmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool key_in_expr_argnames(JsonbValue *key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:923,1
    - Dst: JsonContainerIsObject
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:923,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:925,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:928,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:929,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:935,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:945,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:946,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:949,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:950,1
    - Dst: key_in_expr_argnames
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:961,1
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:963,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:965,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:966,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:967,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:970,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - cont
    - exprnum
    argTypes:
    - JsonbContainer*
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 914
    functionDepth: 2
    functionLinenumber: 914
    functionLinenumberEnd: 975
    functionName: check_all_expr_argnames_valid
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - JsonbIteratorInit
    - JsonContainerIsObject
    - errcode
    - Assert
    - JsonbIteratorNext
    - pfree
    - ereport
    - jbv_string_get_cstr
    - errmsg
    - key_in_expr_argnames
    linkageType: ''
    returnType: bool
    signature: bool check_all_expr_argnames_valid(JsonbContainer *cont, AttrNumber
      exprnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:985,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:987,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - jval
    argTypes:
    - JsonbValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 991
    functionName: jbv_string_get_cstr
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc0
    - memcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      jbv_string_get_cstr(JsonbValue *jval)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1005,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1008,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1019,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1020,1
    - Dst: ThrowErrorData
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1027,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1028,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1031,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - jval
    - func
    - exprnum
    - argname
    - datum
    argTypes:
    - JsonbValue*
    - PGFunction
    - AttrNumber
    - char*
    - Datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 996
    functionDepth: 3
    functionLinenumber: 996
    functionLinenumberEnd: 1033
    functionName: jbv_to_infunc_datum
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - ThrowErrorData
    - DirectInputFunctionCallSafe
    - pfree
    - appendStringInfo
    - initStringInfo
    - jbv_string_get_cstr
    linkageType: ''
    returnType: bool
    signature: "bool jbv_to_infunc_datum(JsonbValue *jval, PGFunction func, AttrNumber
      exprnum,\n\t\t\t\t\tconst char *argname, Datum *datum)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InputFunctionCallSafe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1062,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1067,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1068,1
    - Dst: ThrowErrorData
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1073,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1074,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1078,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1078,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1080,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1081,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1082,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1087,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1087,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1089,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1090,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1091,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 7
    argNames:
    - array_in
    - s
    - typid
    - typmod
    - exprnum
    - element_name
    - ok
    argTypes:
    - FmgrInfo*
    - char*
    - Oid
    - int32
    - AttrNumber
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1043
    functionDepth: 3
    functionLinenumber: 1043
    functionLinenumberEnd: 1098
    functionName: array_in_safe
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - ThrowErrorData
    - errcode
    - pfree
    - appendStringInfo
    - DatumGetArrayTypeP
    - initStringInfo
    - ereport
    - ARR_NDIM
    - errmsg
    - array_contains_nulls
    - InputFunctionCallSafe
    linkageType: ''
    returnType: Datum
    signature: "Datum array_in_safe(FmgrInfo *array_in, const char *s, Oid typid,
      int32 typmod,\n\t\t\t  AttrNumber exprnum, const char *element_name, bool *ok)"
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: JsonContainerIsObject
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1132,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1134,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1135,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1136,1
    - Dst: strlen
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1149,1
    - Dst: getKeyJsonValueFromContainer
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1151,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1166,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1167,1
    - Dst: check_all_expr_argnames_valid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1173,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1184,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1185,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1186,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1195,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1197,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1199,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1214,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1216,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1224,1
    - Dst: statatt_init_empty_tuple
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1226,1
    - Dst: statatt_get_elem_type
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1265,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1266,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1267,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1269,1
    - Dst: jbv_to_infunc_datum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1282,1
    - Dst: jbv_to_infunc_datum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1294,1
    - Dst: jbv_to_infunc_datum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1306,1
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1334,1
    - Dst: array_in_safe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1335,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1339,1
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1341,1
    - Dst: array_in_safe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1342,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1345,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1350,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1351,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1352,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1357,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1358,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1359,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1365,1
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1379,1
    - Dst: array_in_safe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1381,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1384,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1387,1
    - Dst: jbv_to_infunc_datum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1400,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1403,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1404,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1406,1
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1424,1
    - Dst: array_in_safe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1425,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1428,1
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1431,1
    - Dst: array_in_safe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1432,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1435,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1439,1
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1454,1
    - Dst: array_in_safe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1455,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1458,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1461,1
    - Dst: type_is_multirange
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1485,1
    - Dst: get_multirange_range
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1486,1
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1488,1
    - Dst: array_in_safe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1490,1
    - Dst: statatt_check_bounds_histogram
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1494,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1495,1
    - Dst: jbv_to_infunc_datum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1512,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1515,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1517,1
    - Dst: jbv_string_get_cstr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1522,1
    - Dst: array_in_safe
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1523,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1528,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1536,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1536,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1537,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1537,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1539,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 161
    argCount: 8
    argNames:
    - pgsd
    - cont
    - exprnum
    - array_in_fn
    - typid
    - typmod
    - typcoll
    - pg_statistic_ok
    argTypes:
    - Relation
    - JsonbContainer*
    - AttrNumber
    - FmgrInfo*
    - Oid
    - int32
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1111
    functionDepth: 6
    functionLinenumber: 1111
    functionLinenumberEnd: 1547
    functionName: import_pg_statistic
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - statatt_init_empty_tuple
    - errcode
    - heap_form_tuple
    - errhint
    - jbv_to_infunc_datum
    - statatt_set_slot
    - check_all_expr_argnames_valid
    - construct_array_builtin
    - type_is_multirange
    - heap_freetuple
    - pfree
    - RelationGetDescr
    - statatt_get_elem_type
    - errmsg
    - array_in_safe
    - PointerGetDatum
    - ARR_DIMS
    - lookup_type_cache
    - statatt_check_bounds_histogram
    - getKeyJsonValueFromContainer
    - JsonContainerIsObject
    - get_multirange_range
    - ereport
    - jbv_string_get_cstr
    - heap_copy_tuple_as_datum
    - strlen
    - DatumGetArrayTypeP
    linkageType: ''
    returnType: Datum
    signature: "Datum import_pg_statistic(Relation pgsd, JsonbContainer *cont,\n\t\t\t\t\tAttrNumber
      exprnum, FmgrInfo *array_in_fn,\n\t\t\t\t\tOid typid, int32 typmod, Oid typcoll,\n\t\t\t\t\tbool
      *pg_statistic_ok)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_rel_type_id
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1568,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1580,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1582,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1583,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1584,1
    - Dst: JsonContainerSize
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1594,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1597,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1598,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1599,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1604,1
    - Dst: getIthJsonbValueFromContainer
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1621,1
    - Dst: import_pg_statistic
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1630,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1657,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1658,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1659,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1664,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1677,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1683,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 7
    argNames:
    - pgsd
    - numexprs
    - atttypids
    - atttypmods
    - atttypcolls
    - exprs_jsonb
    - exprs_is_perfect
    argTypes:
    - Relation
    - int
    - Oid*
    - int32*
    - Oid*
    - Jsonb*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1561
    functionDepth: 7
    functionLinenumber: 1561
    functionLinenumberEnd: 1685
    functionName: import_expressions
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 1
    functionsReached:
    - JsonContainerSize
    - errcode
    - JB_ROOT_IS_ARRAY
    - import_pg_statistic
    - pfree
    - ereport
    - getIthJsonbValueFromContainer
    - errmsg
    - fmgr_info
    - makeArrayResult
    - get_rel_type_id
    - accumArrayResult
    linkageType: ''
    returnType: Datum
    signature: "Datum import_expressions(Relation pgsd, int numexprs,\n\t\t\t\t   Oid
      *atttypids, int32 *atttypmods,\n\t\t\t\t   Oid *atttypcolls, Jsonb *exprs_jsonb,\n\t\t\t\t
      \  bool *exprs_is_perfect)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1694,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1699,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1700,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1701,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1703,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1705,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1706,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1710,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - stxoid
    - inherited
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1691
    functionDepth: 3
    functionLinenumber: 1691
    functionLinenumberEnd: 1715
    functionName: delete_pg_statistic_ext_data
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - table_close
    - CommandCounterIncrement
    - table_open
    - CatalogTupleDelete
    - ReleaseSysCache
    - ObjectIdGetDatum
    - BoolGetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: bool
    signature: bool delete_pg_statistic_ext_data(Oid stxoid, bool inherited)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1727,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1730,1
    - Dst: stats_fill_fcinfo_from_arg_pairs
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1733,1
    - Dst: extended_statistics_update
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1736,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1739,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1740
      start: 1724
    functionDepth: 9
    functionLinenumber: 1724
    functionLinenumberEnd: 1740
    functionName: pg_restore_extended_stats
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - extended_statistics_update
    - InitFunctionCallInfoData
    - LOCAL_FCINFO
    - PG_RETURN_BOOL
    - stats_fill_fcinfo_from_arg_pairs
    linkageType: ''
    returnType: Datum
    signature: Datum pg_restore_extended_stats(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1761,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1762,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1762,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1763,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1764,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1764,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1767,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1768,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1768,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1769,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1770,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1770,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1771,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1772,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1774,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1776,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1777,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1778,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1779,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1780,1
    - Dst: RangeVarGetRelidExtended
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1789,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1789,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1794,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1797,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1798,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1799,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1800,1
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1803,1
    - Dst: get_pg_statistic_ext
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1804,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1806,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1808,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1809,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1810,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1811,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1813,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1816,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1824,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1825,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1826,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1827,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1828,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1829,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1831,1
    - Dst: delete_pg_statistic_ext_data
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1834,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1835,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1837,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/extended_stats_funcs.c:1839,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1840
      start: 1745
    functionDepth: 5
    functionLinenumber: 1745
    functionLinenumberEnd: 1840
    functionName: pg_clear_extended_stats
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats_funcs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_RETURN_VOID
    - errcode
    - errhint
    - makeRangeVar
    - get_namespace_oid
    - RecoveryInProgress
    - table_close
    - RangeVarGetRelidExtended
    - HeapTupleIsValid
    - heap_freetuple
    - table_open
    - errmsg
    - TextDatumGetCString
    - ereport
    - get_pg_statistic_ext
    - GETSTRUCT
    - get_namespace_name
    - PG_GETARG_BOOL
    - delete_pg_statistic_ext_data
    - stats_check_required_arg
    linkageType: ''
    returnType: Datum
    signature: Datum pg_clear_extended_stats(PG_FUNCTION_ARGS)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:154,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:155,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:156,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:157,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:158,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:159,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:160,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:161,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:162,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:163,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:171,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:172,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:174,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:174,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:175,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:175,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:177,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:178,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:180,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:181,1
    - Dst: RangeVarGetRelidExtended
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:184,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:184,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:189,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:191,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:192,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:193,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:194,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:195,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:195,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:196,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:199,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:200,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:201,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:204,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:206,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:207,1
    - Dst: SearchSysCacheExistsAttName
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:210,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:211,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:218,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:219,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:220,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:226,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:227,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:228,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:231,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:232,1
    - Dst: stats_check_arg_array
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:239,1
    - Dst: stats_check_arg_array
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:245,1
    - Dst: stats_check_arg_array
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:250,1
    - Dst: stats_check_arg_pair
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:256,1
    - Dst: stats_check_arg_pair
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:263,1
    - Dst: stats_check_arg_pair
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:271,1
    - Dst: statatt_get_type
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:280,1
    - Dst: statatt_get_elem_type
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:292,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:293,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:305,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:307,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:309,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:310,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:322,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:323,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:324,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:325,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:333,1
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:335,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:337,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:337,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:337,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:337,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:340,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:341,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:341,1
    - Dst: statatt_init_empty_tuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:343,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:347,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:349,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:352,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:354,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:357,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:359,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:367,1
    - Dst: statatt_build_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:368,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:370,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:376,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:377,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:378,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:379,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:383,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:384,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:385,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:392,1
    - Dst: statatt_build_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:408,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:410,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:416,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:428,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:429,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:430,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:432,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:441,1
    - Dst: statatt_build_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:445,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:447,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:453,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:465,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:467,1
    - Dst: statatt_build_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:485,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:487,1
    - Dst: statatt_check_bounds_histogram
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:492,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:494,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:507,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:508,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:509,1
    - Dst: statatt_build_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:514,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:516,1
    - Dst: statatt_set_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:521,1
    - Dst: upsert_pg_statistic
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:530,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:532,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:533,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:534,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 145
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 128
    functionDepth: 6
    functionLinenumber: 128
    functionLinenumberEnd: 537
    functionName: attribute_statistics_update
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 0
    functionsReached:
    - statatt_init_empty_tuple
    - PG_GETARG_DATUM
    - errcode
    - stats_check_arg_array
    - errhint
    - PG_GETARG_INT16
    - get_attname
    - makeRangeVar
    - statatt_set_slot
    - RecoveryInProgress
    - table_close
    - construct_array_builtin
    - RangeVarGetRelidExtended
    - errdetail
    - HeapTupleIsValid
    - statatt_get_elem_type
    - RelationGetDescr
    - table_open
    - ReleaseSysCache
    - errmsg
    - PointerGetDatum
    - OidIsValid
    - TextDatumGetCString
    - ObjectIdGetDatum
    - fmgr_info
    - ARR_DIMS
    - statatt_check_bounds_histogram
    - statatt_build_stavalues
    - heap_deform_tuple
    - ereport
    - DatumGetArrayTypeP
    - upsert_pg_statistic
    - Int16GetDatum
    - SearchSysCache3
    - get_attnum
    - PG_GETARG_BOOL
    - stats_check_required_arg
    - stats_check_arg_pair
    - statatt_get_type
    - BoolGetDatum
    - PG_ARGISNULL
    - SearchSysCacheExistsAttName
    linkageType: ''
    returnType: bool
    signature: bool attribute_statistics_update(FunctionCallInfo fcinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:548,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:550,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:550,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:552,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:556,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:556,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:557,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:560,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - starel
    - oldtup
    - values
    - nulls
    - replaces
    argTypes:
    - Relation
    - HeapTuple
    - Datum*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 542
    functionDepth: 7
    functionLinenumber: 542
    functionLinenumberEnd: 563
    functionName: upsert_pg_statistic
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 1
    functionsReached:
    - heap_freetuple
    - HeapTupleIsValid
    - RelationGetDescr
    - heap_form_tuple
    - CatalogTupleUpdate
    - CommandCounterIncrement
    - CatalogTupleInsert
    - heap_modify_tuple
    linkageType: ''
    returnType: void
    signature: "void upsert_pg_statistic(Relation starel, HeapTuple oldtup,\n\t\t\t\t\tconst
      Datum *values, const bool *nulls, const bool *replaces)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:571,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:576,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:577,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:578,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:579,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:581,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:583,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:584,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:588,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - reloid
    - attnum
    - stainherit
    argTypes:
    - Oid
    - AttrNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 568
    functionDepth: 3
    functionLinenumber: 568
    functionLinenumberEnd: 593
    functionName: delete_pg_statistic
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 0
    functionsReached:
    - SearchSysCache3
    - HeapTupleIsValid
    - table_close
    - CommandCounterIncrement
    - table_open
    - CatalogTupleDelete
    - ReleaseSysCache
    - ObjectIdGetDatum
    - BoolGetDatum
    - Int16GetDatum
    linkageType: ''
    returnType: bool
    signature: bool delete_pg_statistic(Oid reloid, AttrNumber attnum, bool stainherit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:609,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:610,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:611,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:612,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:614,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:614,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:615,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:615,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:617,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:618,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:619,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:620,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:621,1
    - Dst: RangeVarGetRelidExtended
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:623,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:623,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:627,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:627,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:628,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:631,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:633,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:637,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:638,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:639,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:640,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:642,1
    - Dst: delete_pg_statistic
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:644,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:645,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 598
    functionDepth: 4
    functionLinenumber: 598
    functionLinenumberEnd: 646
    functionName: pg_clear_attribute_stats
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_RETURN_VOID
    - get_attnum
    - PG_GETARG_BOOL
    - errcode
    - RangeVarGetRelidExtended
    - RecoveryInProgress
    - ereport
    - stats_check_required_arg
    - errhint
    - get_rel_name
    - errmsg
    - makeRangeVar
    - delete_pg_statistic
    - TextDatumGetCString
    linkageType: ''
    returnType: Datum
    signature: Datum pg_clear_attribute_stats(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:677,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:680,1
    - Dst: stats_fill_fcinfo_from_arg_pairs
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:683,1
    - Dst: attribute_statistics_update
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:687,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 674
    functionDepth: 7
    functionLinenumber: 674
    functionLinenumberEnd: 691
    functionName: pg_restore_attribute_stats
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 0
    functionsReached:
    - InitFunctionCallInfoData
    - attribute_statistics_update
    - LOCAL_FCINFO
    - PG_RETURN_BOOL
    - stats_fill_fcinfo_from_arg_pairs
    linkageType: ''
    returnType: Datum
    signature: Datum pg_restore_attribute_stats(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - natts
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: SizeOfItem
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeOfItem(natts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ndeps
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: MinSizeOfItems
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MinSizeOfItems(ndeps)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: generate_dependencies_recurse
      Src: /src/postgres/src/backend/statistics/dependencies.c:104,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:139,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:141,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - state
    - index
    - start
    - current
    argTypes:
    - DependencyGenerator
    - int
    - AttrNumber
    - AttrNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 147
    functionName: generate_dependencies_recurse
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - repalloc
    - generate_dependencies_recurse
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void generate_dependencies_recurse(DependencyGenerator state, int
      index,\n\t\t\t\t\t\t\t  AttrNumber start, AttrNumber *current)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/dependencies.c:153,1
    - Dst: generate_dependencies_recurse
      Src: /src/postgres/src/backend/statistics/dependencies.c:155,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - DependencyGenerator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 158
    functionName: generate_dependencies
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - pfree
    - palloc0_array
    - generate_dependencies_recurse
    linkageType: ''
    returnType: void
    signature: void generate_dependencies(DependencyGenerator state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:171,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/statistics/dependencies.c:174,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/dependencies.c:175,1
    - Dst: generate_dependencies
      Src: /src/postgres/src/backend/statistics/dependencies.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - n
    - k
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 186
    functionName: DependencyGenerator_init
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0_object
    - generate_dependencies
    - palloc_array
    linkageType: ''
    returnType: DependencyGenerator
    signature: DependencyGenerator DependencyGenerator_init(int n, int k)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:192,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - DependencyGenerator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 194
    functionName: DependencyGenerator_free
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void DependencyGenerator_free(DependencyGenerator state)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - DependencyGenerator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 204
    functionName: DependencyGenerator_next
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: AttrNumber
    signature: 'AttrNumber *

      DependencyGenerator_next(DependencyGenerator state)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:231,1
    - Dst: multi_sort_init
      Src: /src/postgres/src/backend/statistics/dependencies.c:234,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/dependencies.c:240,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/dependencies.c:263,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:265,1
    - Dst: multi_sort_add_dimension
      Src: /src/postgres/src/backend/statistics/dependencies.c:269,1
    - Dst: build_sorted_items
      Src: /src/postgres/src/backend/statistics/dependencies.c:279,1
    - Dst: multi_sort_compare_dims
      Src: /src/postgres/src/backend/statistics/dependencies.c:300,1
    - Dst: multi_sort_compare_dim
      Src: /src/postgres/src/backend/statistics/dependencies.c:315,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - data
    - k
    - dependency
    argTypes:
    - StatsBuildData*
    - int
    - AttrNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 214
    functionDepth: 5
    functionLinenumber: 214
    functionLinenumberEnd: 323
    functionName: dependency_degree
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - elog
    - multi_sort_compare_dims
    - multi_sort_compare_dim
    - Assert
    - multi_sort_add_dimension
    - palloc_array
    - build_sorted_items
    - multi_sort_init
    - lookup_type_cache
    linkageType: ''
    returnType: double
    signature: double dependency_degree(StatsBuildData *data, int k, AttrNumber *dependency)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:351,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/statistics/dependencies.c:354,1
    - Dst: DependencyGenerator_init
      Src: /src/postgres/src/backend/statistics/dependencies.c:369,1
    - Dst: DependencyGenerator_next
      Src: /src/postgres/src/backend/statistics/dependencies.c:372,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/dependencies.c:379,1
    - Dst: dependency_degree
      Src: /src/postgres/src/backend/statistics/dependencies.c:382,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/dependencies.c:384,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/statistics/dependencies.c:385,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/dependencies.c:393,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/statistics/dependencies.c:405,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:413,1
    - Dst: DependencyGenerator_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:424,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/statistics/dependencies.c:427,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - data
    argTypes:
    - StatsBuildData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 341
    functionDepth: 6
    functionLinenumber: 341
    functionLinenumberEnd: 430
    functionName: statext_dependencies_build
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - MemoryContextReset
    - Assert
    - palloc0
    - dependency_degree
    - repalloc
    - MemoryContextSwitchTo
    - DependencyGenerator_free
    - DependencyGenerator_init
    - MemoryContextDelete
    - AllocSetContextCreate
    - DependencyGenerator_next
    linkageType: ''
    returnType: MVDependencies
    signature: 'MVDependencies *

      statext_dependencies_build(StatsBuildData *data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SizeOfItem
      Src: /src/postgres/src/backend/statistics/dependencies.c:449,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/dependencies.c:451,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/statistics/dependencies.c:452,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/statistics/dependencies.c:454,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:457,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:459,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:461,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:469,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:472,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:479,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:483,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - dependencies
    argTypes:
    - MVDependencies*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 436
    functionDepth: 2
    functionLinenumber: 436
    functionLinenumberEnd: 486
    functionName: statext_dependencies_serialize
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - memcpy
    - Assert
    - palloc0
    - SizeOfItem
    - VARDATA
    - SET_VARSIZE
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      statext_dependencies_serialize(MVDependencies *dependencies)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/dependencies.c:502,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:503,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/dependencies.c:504,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/statistics/dependencies.c:507,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/statistics/dependencies.c:510,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:513,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:515,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:517,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:521,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:525,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:529,1
    - Dst: MinSizeOfItems
      Src: /src/postgres/src/backend/statistics/dependencies.c:532,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/dependencies.c:534,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:535,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/dependencies.c:536,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:539,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:549,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:553,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:557,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/dependencies.c:560,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:567,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:573,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/dependencies.c:573,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:577,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/dependencies.c:577,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 1
    argNames:
    - data
    argTypes:
    - bytea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 491
    functionDepth: 4
    functionLinenumber: 491
    functionLinenumberEnd: 580
    functionName: statext_dependencies_deserialize
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_object
    - memcpy
    - Assert
    - palloc0
    - repalloc
    - VARSIZE_ANY
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - MinSizeOfItems
    linkageType: ''
    returnType: MVDependencies
    signature: 'MVDependencies *

      statext_dependencies_deserialize(bytea *data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:589,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - dependencies
    argTypes:
    - MVDependencies*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 591
    functionName: statext_dependencies_free
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void statext_dependencies_free(MVDependencies *dependencies)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/dependencies.c:646,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/dependencies.c:647,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/dependencies.c:648,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 4
    argNames:
    - dependencies
    - stxkeys
    - numexprs
    - elevel
    argTypes:
    - MVDependencies*
    - int2vector*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 656
    functionName: statext_dependencies_validate
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool statext_dependencies_validate(const MVDependencies *dependencies,\n\t\t\t\t\t\t\t
      \ const int2vector *stxkeys,\n\t\t\t\t\t\t\t  int numexprs, int elevel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dependency
    - attnums
    argTypes:
    - MVDependency*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 681
    functionName: dependency_is_fully_matched
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - bms_is_member
    linkageType: ''
    returnType: bool
    signature: bool dependency_is_fully_matched(MVDependency *dependency, Bitmapset
      *attnums)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/dependencies.c:695,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/dependencies.c:696,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/dependencies.c:697,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/dependencies.c:698,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:699,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:701,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:704,1
    - Dst: statext_dependencies_deserialize
      Src: /src/postgres/src/backend/statistics/dependencies.c:708,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/statistics/dependencies.c:708,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/dependencies.c:710,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mvoid
    - inh
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 687
    functionDepth: 5
    functionLinenumber: 687
    functionLinenumberEnd: 713
    functionName: statext_dependencies_load
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - elog
    - HeapTupleIsValid
    - statext_dependencies_deserialize
    - ReleaseSysCache
    - SysCacheGetAttr
    - DatumGetByteaPP
    - ObjectIdGetDatum
    - BoolGetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: MVDependencies
    signature: 'MVDependencies *

      statext_dependencies_load(Oid mvoid, bool inh)'
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:730,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/dependencies.c:739,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:745,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:751,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:755,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:755,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:756,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:757,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:757,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:758,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/dependencies.c:774,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:779,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:794,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:801,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:801,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:804,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/dependencies.c:813,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:818,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:826,1
    - Dst: dependency_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:834,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:834,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:849,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/statistics/dependencies.c:855,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:870,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:874,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:889,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 60
    argCount: 3
    argNames:
    - clause
    - relid
    - attnum
    argTypes:
    - Node*
    - Index
    - AttrNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 724
    functionDepth: 3
    functionLinenumber: 724
    functionLinenumberEnd: 894
    functionName: dependency_is_compatible_clause
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - get_oprrest
    - foreach
    - dependency_is_compatible_clause
    - linitial
    - AttrNumberIsForUserDefinedAttr
    - is_notclause
    - is_opclause
    - is_pseudo_constant_clause
    - lsecond
    - lfirst
    - is_orclause
    - list_length
    - IsA
    - get_notclausearg
    - bms_membership
    linkageType: ''
    returnType: bool
    signature: bool dependency_is_compatible_clause(Node *clause, Index relid, AttrNumber
      *attnum)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/dependencies.c:921,1
    - Dst: dependency_is_fully_matched
      Src: /src/postgres/src/backend/statistics/dependencies.c:958,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 3
    argNames:
    - dependencies
    - ndependencies
    - attnums
    argTypes:
    - MVDependencies**
    - int
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 912
    functionDepth: 2
    functionLinenumber: 912
    functionLinenumberEnd: 964
    functionName: find_strongest_dependency
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - dependency_is_fully_matched
    - bms_num_members
    linkageType: ''
    returnType: MVDependency
    signature: "MVDependency *\nfind_strongest_dependency(MVDependencies **dependencies,
      int ndependencies,\n\t\t\t\t\t\t  Bitmapset *attnums)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1028,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/dependencies.c:1036,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/dependencies.c:1037,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1041,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1049,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/dependencies.c:1054,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1055,1
    - Dst: clauselist_selectivity_ext
      Src: /src/postgres/src/backend/statistics/dependencies.c:1059,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/dependencies.c:1100,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/dependencies.c:1106,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/dependencies.c:1135,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1137,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:1138,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 9
    argNames:
    - root
    - clauses
    - varRelid
    - jointype
    - sjinfo
    - dependencies
    - ndependencies
    - list_attnums
    - estimatedclauses
    argTypes:
    - PlannerInfo*
    - List*
    - int
    - JoinType
    - SpecialJoinInfo*
    - MVDependency**
    - int
    - AttrNumber*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 997
    functionDepth: 4
    functionLinenumber: 997
    functionLinenumberEnd: 1141
    functionName: clauselist_apply_dependencies
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - bms_member_index
    - clauselist_selectivity_ext
    - pfree
    - bms_num_members
    - lappend
    - palloc_array
    - bms_free
    - lfirst
    - CLAMP_PROBABILITY
    - bms_next_member
    - bms_add_member
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity clauselist_apply_dependencies(PlannerInfo *root, List
      *clauses,\n\t\t\t\t\t\t\t  int varRelid, JoinType jointype,\n\t\t\t\t\t\t\t
      \ SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t\t  MVDependency **dependencies, int
      ndependencies,\n\t\t\t\t\t\t\t  AttrNumber *list_attnums,\n\t\t\t\t\t\t\t  Bitmapset
      **estimatedclauses)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1049,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/dependencies.c:1054,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1047
    functionDepth: 1
    functionLinenumber: 1047
    functionLinenumberEnd: 1057
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 333
    functionsReached:
    - lfirst
    - bms_add_member
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:1158,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/dependencies.c:1167,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1173,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1179,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1183,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:1183,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:1184,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1185,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:1185,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:1186,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/dependencies.c:1202,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:1207,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1222,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1229,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:1229,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:1232,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/dependencies.c:1241,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1246,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1253,1
    - Dst: dependency_is_compatible_expression
      Src: /src/postgres/src/backend/statistics/dependencies.c:1261,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1261,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1269,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1276,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/statistics/dependencies.c:1282,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:1297,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1305,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1311,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1313,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1315,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 59
    argCount: 4
    argNames:
    - clause
    - relid
    - statlist
    - expr
    argTypes:
    - Node*
    - Index
    - List*
    - Node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1151
    functionDepth: 3
    functionLinenumber: 1151
    functionLinenumberEnd: 1324
    functionName: dependency_is_compatible_expression
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - equal
    - get_oprrest
    - foreach
    - dependency_is_compatible_expression
    - linitial
    - is_notclause
    - is_opclause
    - is_pseudo_constant_clause
    - lsecond
    - lfirst
    - is_orclause
    - list_length
    - IsA
    - get_notclausearg
    - bms_membership
    linkageType: ''
    returnType: bool
    signature: bool dependency_is_compatible_expression(Node *clause, Index relid,
      List *statlist, Node **expr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1305,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1311,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1313,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1303
    functionDepth: 1
    functionLinenumber: 1303
    functionLinenumberEnd: 1321
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 335
    functionsReached:
    - equal
    - lfirst
    - foreach
    linkageType: ''
    returnType: void
    signature: void foreach(lc, statlist)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/statistics/dependencies.c:1374,1
    - Dst: has_stats_of_kind
      Src: /src/postgres/src/backend/statistics/dependencies.c:1381,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/dependencies.c:1384,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1384,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/dependencies.c:1392,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1392,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1414,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1421,1
    - Dst: dependency_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1428,1
    - Dst: dependency_is_compatible_expression
      Src: /src/postgres/src/backend/statistics/dependencies.c:1432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1439,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1469,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1469,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1485,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1494,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1495,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1508,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:1508,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1509,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1519,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/dependencies.c:1527,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:1529,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1530,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/dependencies.c:1545,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1545,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1549,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1551,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1573,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:1578,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1584,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1594,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1596,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1599,1
    - Dst: statext_dependencies_load
      Src: /src/postgres/src/backend/statistics/dependencies.c:1611,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:1665,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1669,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1682,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/statistics/dependencies.c:1682,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1695,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1695,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/statistics/dependencies.c:1697,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1706,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1757,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:1758,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1759,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1760,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/dependencies.c:1768,1
    - Dst: find_strongest_dependency
      Src: /src/postgres/src/backend/statistics/dependencies.c:1777,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1787,1
    - Dst: clauselist_apply_dependencies
      Src: /src/postgres/src/backend/statistics/dependencies.c:1795,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1801,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1803,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1804,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:1805,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1806,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1807,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 145
    argCount: 7
    argNames:
    - root
    - clauses
    - varRelid
    - jointype
    - sjinfo
    - rel
    - estimatedclauses
    argTypes:
    - PlannerInfo*
    - List*
    - int
    - JoinType
    - SpecialJoinInfo*
    - RelOptInfo*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1353
    functionDepth: 6
    functionLinenumber: 1353
    functionLinenumberEnd: 1810
    functionName: dependencies_clauselist_selectivity
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - bms_del_member
    - dependency_is_compatible_expression
    - AttrNumberIsForUserDefinedAttr
    - bms_free
    - palloc_array
    - has_stats_of_kind
    - bms_add_member
    - clauselist_apply_dependencies
    - AttributeNumberIsValid
    - foreach
    - Assert
    - pfree
    - bms_is_member
    - bms_next_member
    - list_length
    - find_strongest_dependency
    - lfirst
    - bms_membership
    - dependency_is_compatible_clause
    - statext_dependencies_load
    - equal
    - list_nth
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity dependencies_clauselist_selectivity(PlannerInfo *root,\n\t\t\t\t\t\t\t\t\tList
      *clauses,\n\t\t\t\t\t\t\t\t\tint varRelid,\n\t\t\t\t\t\t\t\t\tJoinType jointype,\n\t\t\t\t\t\t\t\t\tSpecialJoinInfo
      *sjinfo,\n\t\t\t\t\t\t\t\t\tRelOptInfo *rel,\n\t\t\t\t\t\t\t\t\tBitmapset **estimatedclauses)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1414,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1421,1
    - Dst: dependency_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1428,1
    - Dst: dependency_is_compatible_expression
      Src: /src/postgres/src/backend/statistics/dependencies.c:1432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1439,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1444,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1412
    functionDepth: 4
    functionLinenumber: 1412
    functionLinenumberEnd: 1467
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 336
    functionsReached:
    - dependency_is_compatible_clause
    - dependency_is_compatible_expression
    - Assert
    - bms_is_member
    - lfirst
    - equal
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ndims
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: ITEM_SIZE
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ITEM_SIZE(ndims)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ndims
    - ','
    - nitems
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: SizeOfMCVList
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeOfMCVList(ndims,nitems)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - value
    - ','
    - is_or
    - ','
    - match
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: RESULT_MERGE
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESULT_MERGE(value, is_or, match)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - value
    - ','
    - is_or
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: RESULT_IS_FINAL
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESULT_IS_FINAL(value, is_or)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - samplerows
    - totalrows
    argTypes:
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 161
    functionName: get_mincount_for_mcv_list
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double get_mincount_for_mcv_list(int samplerows, double totalrows)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: build_mss
      Src: /src/postgres/src/backend/statistics/mcv.c:192,1
    - Dst: build_sorted_items
      Src: /src/postgres/src/backend/statistics/mcv.c:195,1
    - Dst: build_distinct_groups
      Src: /src/postgres/src/backend/statistics/mcv.c:206,1
    - Dst: get_mincount_for_mcv_list
      Src: /src/postgres/src/backend/statistics/mcv.c:235,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:267,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:271,1
    - Dst: build_column_frequencies
      Src: /src/postgres/src/backend/statistics/mcv.c:272,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:277,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/mcv.c:295,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/mcv.c:296,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:299,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:303,1
    - Dst: bsearch_arg
      Src: /src/postgres/src/backend/statistics/mcv.c:322,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:330,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:331,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:334,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:335,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 52
    argCount: 3
    argNames:
    - data
    - totalrows
    - stattarget
    argTypes:
    - StatsBuildData*
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 177
    functionDepth: 5
    functionLinenumber: 177
    functionLinenumberEnd: 338
    functionName: statext_mcv_build
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 2
    functionsReached:
    - palloc0_array
    - memcpy
    - build_column_frequencies
    - get_mincount_for_mcv_list
    - Assert
    - pfree
    - palloc0
    - palloc_array
    - build_mss
    - bsearch_arg
    - palloc
    - build_sorted_items
    - build_distinct_groups
    linkageType: ''
    returnType: MCVList
    signature: 'MCVList *

      statext_mcv_build(StatsBuildData *data, double totalrows, int stattarget)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: multi_sort_init
      Src: /src/postgres/src/backend/statistics/mcv.c:351,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/mcv.c:359,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:361,1
    - Dst: multi_sort_add_dimension
      Src: /src/postgres/src/backend/statistics/mcv.c:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - data
    argTypes:
    - StatsBuildData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 368
    functionName: build_mss
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - elog
    - multi_sort_add_dimension
    - multi_sort_init
    - lookup_type_cache
    linkageType: ''
    returnType: MultiSortSupport
    signature: MultiSortSupport build_mss(StatsBuildData *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:386,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:386,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:388,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - numrows
    - items
    - mss
    argTypes:
    - int
    - SortItem*
    - MultiSortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 393
    functionName: count_distinct_groups
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - Assert
    - multi_sort_compare
    linkageType: ''
    returnType: int
    signature: int count_distinct_groups(int numrows, SortItem *items, MultiSortSupport
      mss)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 412
    functionName: compare_sort_item_count
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int compare_sort_item_count(const void *a, const void *b, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count_distinct_groups
      Src: /src/postgres/src/backend/statistics/mcv.c:427,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:438,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:438,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:441,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:451,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/mcv.c:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - numrows
    - items
    - mss
    - ndistinct
    argTypes:
    - int
    - SortItem*
    - MultiSortSupport
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 421
    functionDepth: 4
    functionLinenumber: 421
    functionLinenumberEnd: 459
    functionName: build_distinct_groups
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - qsort_interruptible
    - Assert
    - multi_sort_compare
    - palloc
    - count_distinct_groups
    linkageType: ''
    returnType: SortItem
    signature: "SortItem *\nbuild_distinct_groups(int numrows, SortItem *items, MultiSortSupport
      mss,\n\t\t\t\t\t  int *ndistinct)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/statistics/mcv.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 472
    functionName: sort_item_compare
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - ApplySortComparator
    linkageType: ''
    returnType: int
    signature: int sort_item_compare(const void *a, const void *b, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:496,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:497,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:500,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:500,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:501,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:505,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:513,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/mcv.c:525,1
    - Dst: sort_item_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:536,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 487
    functionDepth: 3
    functionLinenumber: 487
    functionLinenumberEnd: 549
    functionName: build_column_frequencies
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - Assert
    - sort_item_compare
    - qsort_interruptible
    - MAXALIGN
    - palloc
    linkageType: ''
    returnType: SortItem
    signature: "SortItem **\nbuild_column_frequencies(SortItem *groups, int ngroups,\n\t\t\t\t\t\t
      MultiSortSupport mss, int *ncounts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/mcv.c:561,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:562,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:562,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/mcv.c:564,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:565,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/mcv.c:567,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:571,1
    - Dst: statext_mcv_deserialize
      Src: /src/postgres/src/backend/statistics/mcv.c:575,1
    - Dst: DatumGetByteaP
      Src: /src/postgres/src/backend/statistics/mcv.c:575,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/mcv.c:577,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - mvoid
    - inh
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 580
    functionName: statext_mcv_load
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - elog
    - statext_mcv_deserialize
    - HeapTupleIsValid
    - DatumGetByteaP
    - ReleaseSysCache
    - SysCacheGetAttr
    - ObjectIdGetDatum
    - BoolGetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: MCVList
    signature: 'MCVList *

      statext_mcv_load(Oid mvoid, bool inh)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:636,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:637,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:647,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:650,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/mcv.c:662,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:669,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/statistics/mcv.c:691,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/mcv.c:693,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:706,1
    - Dst: compare_datums_simple
      Src: /src/postgres/src/backend/statistics/mcv.c:706,1
    - Dst: compare_datums_simple
      Src: /src/postgres/src/backend/statistics/mcv.c:709,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:717,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:749,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:765,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/statistics/mcv.c:765,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mcv.c:768,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/statistics/mcv.c:768,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:776,1
    - Dst: strlen
      Src: /src/postgres/src/backend/statistics/mcv.c:795,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/statistics/mcv.c:795,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:805,1
    - Dst: ITEM_SIZE
      Src: /src/postgres/src/backend/statistics/mcv.c:828,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:834,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/statistics/mcv.c:835,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/statistics/mcv.c:837,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:841,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:844,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:847,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:850,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:853,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:857,1
    - Dst: store_att_byval
      Src: /src/postgres/src/backend/statistics/mcv.c:883,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:885,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:891,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/statistics/mcv.c:891,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mcv.c:896,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/statistics/mcv.c:896,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:899,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:903,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:903,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/statistics/mcv.c:903,1
    - Dst: strlen
      Src: /src/postgres/src/backend/statistics/mcv.c:908,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/statistics/mcv.c:908,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:911,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:915,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/statistics/mcv.c:915,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:920,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:924,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:933,1
    - Dst: ITEM_SIZE
      Src: /src/postgres/src/backend/statistics/mcv.c:933,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:936,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:939,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:942,1
    - Dst: bsearch_arg
      Src: /src/postgres/src/backend/statistics/mcv.c:954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:965,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:974,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:978,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:980,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:981,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 134
    argCount: 2
    argNames:
    - mcvlist
    - stats
    argTypes:
    - MCVList*
    - VacAttrStats**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 618
    functionDepth: 4
    functionLinenumber: 618
    functionLinenumberEnd: 984
    functionName: statext_mcv_serialize
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - ITEM_SIZE
    - VARDATA_ANY
    - SET_VARSIZE
    - qsort_interruptible
    - VARDATA
    - bsearch_arg
    - memcpy
    - Assert
    - pfree
    - VARSIZE_ANY_EXHDR
    - PointerGetDatum
    - MAXALIGN
    - DatumGetCString
    - lookup_type_cache
    - compare_datums_simple
    - store_att_byval
    - strlen
    - PrepareSortSupportFromOrderingOp
    - palloc0_array
    - PG_DETOAST_DATUM
    - palloc0
    - DatumGetPointer
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      statext_mcv_serialize(MCVList *mcvlist, VacAttrStats **stats)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1028,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1029,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1030,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:1033,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1037,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1038,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1041,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1044,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1047,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1050,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1054,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1058,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1062,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1065,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1069,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1071,1
    - Dst: SizeOfMCVList
      Src: /src/postgres/src/backend/statistics/mcv.c:1082,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1089,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1090,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1091,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1094,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:1098,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1110,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1111,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1121,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1122,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1123,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/mcv.c:1135,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/mcv.c:1139,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1155,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1158,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1159,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1162,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/statistics/mcv.c:1165,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1169,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1171,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1173,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1191,1
    - Dst: fetch_att
      Src: /src/postgres/src/backend/statistics/mcv.c:1194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1197,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1209,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1213,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1214,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1225,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/statistics/mcv.c:1229,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1230,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/statistics/mcv.c:1230,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1234,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1237,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1247,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1250,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1254,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1263,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1271,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1279,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1282,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1284,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1287,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1290,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1312,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1316,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1318,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 129
    argCount: 1
    argNames:
    - data
    argTypes:
    - bytea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 993
    functionDepth: 4
    functionLinenumber: 993
    functionLinenumberEnd: 1321
    functionName: statext_mcv_deserialize
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - elog
    - memcpy
    - Assert
    - pfree
    - palloc0
    - VARSIZE_ANY
    - palloc_array
    - repalloc
    - VARDATA_ANY
    - SizeOfMCVList
    - PointerGetDatum
    - SET_VARSIZE
    - palloc
    - VARDATA
    - fetch_att
    - MAXALIGN
    linkageType: ''
    returnType: MCVList
    signature: 'MCVList *

      statext_mcv_deserialize(bytea *data)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/statistics/mcv.c:1341,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/statistics/mcv.c:1348,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/mcv.c:1351,1
    - Dst: statext_mcv_deserialize
      Src: /src/postgres/src/backend/statistics/mcv.c:1353,1
    - Dst: PG_GETARG_BYTEA_P
      Src: /src/postgres/src/backend/statistics/mcv.c:1353,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/statistics/mcv.c:1363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/mcv.c:1364,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1365,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mcv.c:1366,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/statistics/mcv.c:1368,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/backend/statistics/mcv.c:1374,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/mcv.c:1376,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/statistics/mcv.c:1380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1398,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1405,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1406,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/statistics/mcv.c:1420,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1421,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/statistics/mcv.c:1423,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/statistics/mcv.c:1424,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/statistics/mcv.c:1424,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1426,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1427,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1433,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1440,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1441,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1442,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1443,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1444,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/mcv.c:1447,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/mcv.c:1450,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1453,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/statistics/mcv.c:1455,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/statistics/mcv.c:1459,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1335
    functionDepth: 6
    functionLinenumber: 1335
    functionLinenumberEnd: 1461
    functionName: pg_stats_ext_mcvlist_items
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - errcode
    - heap_form_tuple
    - Float8GetDatum
    - FunctionCall1
    - SRF_RETURN_DONE
    - makeArrayResult
    - statext_mcv_deserialize
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - Assert
    - cstring_to_text
    - Int32GetDatum
    - errmsg
    - PointerGetDatum
    - get_call_result_type
    - fmgr_info
    - SRF_PERCALL_SETUP
    - ereport
    - memset
    - BlessTupleDesc
    - DatumGetPointer
    - TupleDescGetAttInMetadata
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - PG_GETARG_BYTEA_P
    - BoolGetDatum
    - getTypeOutputInfo
    - accumArrayResult
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stats_ext_mcvlist_items(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/mcv.c:1476,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mcv.c:1478,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/mcv.c:1480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1469
    functionDepth: 1
    functionLinenumber: 1469
    functionLinenumberEnd: 1481
    functionName: pg_mcv_list_in
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_mcv_list_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: byteaout
      Src: /src/postgres/src/backend/statistics/mcv.c:1498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1495
    functionDepth: 1
    functionLinenumber: 1495
    functionLinenumberEnd: 1499
    functionName: pg_mcv_list_out
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - byteaout
    linkageType: ''
    returnType: Datum
    signature: Datum pg_mcv_list_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/mcv.c:1507,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1508,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mcv.c:1509,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/mcv.c:1511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1504
    functionDepth: 1
    functionLinenumber: 1504
    functionLinenumberEnd: 1512
    functionName: pg_mcv_list_recv
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_mcv_list_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: byteasend
      Src: /src/postgres/src/backend/statistics/mcv.c:1523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1520
    functionDepth: 1
    functionLinenumber: 1520
    functionLinenumberEnd: 1524
    functionName: pg_mcv_list_send
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - byteasend
    linkageType: ''
    returnType: Datum
    signature: Datum pg_mcv_list_send(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1537,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/mcv.c:1545,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1548,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/statistics/mcv.c:1556,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/mcv.c:1559,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/mcv.c:1562,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/mcv.c:1564,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1571,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 4
    argNames:
    - expr
    - keys
    - exprs
    - collid
    argTypes:
    - Node*
    - Bitmapset*
    - List*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1532
    functionDepth: 1
    functionLinenumber: 1532
    functionLinenumberEnd: 1575
    functionName: mcv_match_expression
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - elog
    - bms_num_members
    - exprCollation
    - lfirst
    - equal
    - IsA
    - bms_member_index
    linkageType: ''
    returnType: int
    signature: int mcv_match_expression(Node *expr, Bitmapset *keys, List *exprs,
      Oid *collid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/mcv.c:1562,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/mcv.c:1564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1560
    functionDepth: 1
    functionLinenumber: 1560
    functionLinenumberEnd: 1568
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 336
    functionsReached:
    - equal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprs)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1607,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1608,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/statistics/mcv.c:1610,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/mcv.c:1611,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/mcv.c:1619,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1622,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1629,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1641,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1641,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/mcv.c:1644,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1645,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1660,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1669,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1678,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1694,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1694,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1699,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1699,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1705,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1708,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1729,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1729,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/mcv.c:1732,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1733,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1737,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/mcv.c:1745,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/statistics/mcv.c:1746,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/mcv.c:1746,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/statistics/mcv.c:1748,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/mcv.c:1749,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1755,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1775,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1784,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1796,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1805,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1808,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1808,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1813,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1817,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1820,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1826,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1851,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1854,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1854,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1866,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/mcv.c:1866,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:1869,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1870,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1878,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1880,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1882,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1893,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1894,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/mcv.c:1894,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:1897,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1906,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1908,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1910,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/mcv.c:1917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1919,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1932,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1936,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1945,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1958,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1961,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 105
    argCount: 6
    argNames:
    - root
    - clauses
    - keys
    - exprs
    - mcvlist
    - is_or
    argTypes:
    - PlannerInfo*
    - List*
    - Bitmapset*
    - List*
    - MCVList*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1967
      start: 1596
    functionDepth: 2
    functionLinenumber: 1596
    functionLinenumberEnd: 1967
    functionName: mcv_get_match_bitmap
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - RESULT_IS_FINAL
    - palloc_array
    - is_opclause
    - DatumGetBool
    - elog
    - get_typlenbyvalalign
    - Assert
    - pfree
    - list_length
    - mcv_match_expression
    - fmgr_info
    - RESULT_MERGE
    - mcv_get_match_bitmap
    - is_notclause
    - FunctionCall2Coll
    - lfirst
    - memset
    - is_andclause
    - is_orclause
    - DatumGetArrayTypeP
    - get_opcode
    - deconstruct_array
    - examine_opclause_args
    - ARR_ELEMTYPE
    - IsA
    - bms_member_index
    linkageType: ''
    returnType: bool
    signature: "bool *\nmcv_get_match_bitmap(PlannerInfo *root, List *clauses,\n\t\t\t\t\t
      Bitmapset *keys, List *exprs,\n\t\t\t\t\t MCVList *mcvlist, bool is_or)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/mcv.c:1619,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1622,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1629,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1641,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1641,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/mcv.c:1644,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1645,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1660,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1669,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1678,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1694,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1694,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1699,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1699,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1705,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1708,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1729,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1729,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/mcv.c:1732,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1733,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1737,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/mcv.c:1745,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/statistics/mcv.c:1746,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/mcv.c:1746,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/statistics/mcv.c:1748,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/mcv.c:1749,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1755,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1775,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1784,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1796,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1805,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1808,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1808,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1813,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1817,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1820,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1826,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1851,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1854,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1854,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1866,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/mcv.c:1866,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:1869,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1870,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1878,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1880,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1882,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1893,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1894,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/mcv.c:1894,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:1897,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1906,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1908,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1910,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/mcv.c:1917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1919,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1932,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1936,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1945,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1958,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1961,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 97
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1617
    functionDepth: 3
    functionLinenumber: 1617
    functionLinenumberEnd: 1964
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 336
    functionsReached:
    - RESULT_IS_FINAL
    - is_opclause
    - DatumGetBool
    - elog
    - get_typlenbyvalalign
    - Assert
    - pfree
    - list_length
    - mcv_match_expression
    - fmgr_info
    - RESULT_MERGE
    - mcv_get_match_bitmap
    - is_notclause
    - FunctionCall2Coll
    - lfirst
    - is_andclause
    - is_orclause
    - DatumGetArrayTypeP
    - get_opcode
    - deconstruct_array
    - examine_opclause_args
    - ARR_ELEMTYPE
    - IsA
    - bms_member_index
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/mcv.c:2014,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/mcv.c:2022,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - simple_sel
    - mcv_sel
    - mcv_basesel
    - mcv_totalsel
    argTypes:
    - Selectivity
    - Selectivity
    - Selectivity
    - Selectivity
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2025
      start: 2003
    functionDepth: 1
    functionLinenumber: 2003
    functionLinenumberEnd: 2025
    functionName: mcv_combine_selectivities
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 2
    functionsReached:
    - CLAMP_PROBABILITY
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcv_combine_selectivities(Selectivity simple_sel,\n\t\t\t\t\t\t
      \ Selectivity mcv_sel,\n\t\t\t\t\t\t  Selectivity mcv_basesel,\n\t\t\t\t\t\t
      \ Selectivity mcv_totalsel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: statext_mcv_load
      Src: /src/postgres/src/backend/statistics/mcv.c:2061,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:2064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 9
    argNames:
    - root
    - stat
    - clauses
    - varRelid
    - jointype
    - sjinfo
    - rel
    - basesel
    - totalsel
    argTypes:
    - PlannerInfo*
    - StatisticExtInfo*
    - List*
    - int
    - JoinType
    - SpecialJoinInfo*
    - RelOptInfo*
    - Selectivity*
    - Selectivity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2045
    functionDepth: 3
    functionLinenumber: 2045
    functionLinenumberEnd: 2082
    functionName: mcv_clauselist_selectivity
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 2
    functionsReached:
    - statext_mcv_load
    - mcv_get_match_bitmap
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcv_clauselist_selectivity(PlannerInfo *root, StatisticExtInfo
      *stat,\n\t\t\t\t\t\t   List *clauses, int varRelid,\n\t\t\t\t\t\t   JoinType
      jointype, SpecialJoinInfo *sjinfo,\n\t\t\t\t\t\t   RelOptInfo *rel,\n\t\t\t\t\t\t
      \  Selectivity *basesel, Selectivity *totalsel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:2135,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:2138,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/statistics/mcv.c:2138,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 9
    argNames:
    - root
    - stat
    - mcv
    - clause
    - or_matches
    - basesel
    - overlap_mcvsel
    - overlap_basesel
    - totalsel
    argTypes:
    - PlannerInfo*
    - StatisticExtInfo*
    - MCVList*
    - Node*
    - bool**
    - Selectivity*
    - Selectivity*
    - Selectivity*
    - Selectivity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2173
      start: 2123
    functionDepth: 3
    functionLinenumber: 2123
    functionLinenumberEnd: 2173
    functionName: mcv_clause_selectivity_or
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 2
    functionsReached:
    - list_make1
    - pfree
    - mcv_get_match_bitmap
    - palloc0_array
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcv_clause_selectivity_or(PlannerInfo *root, StatisticExtInfo
      *stat,\n\t\t\t\t\t\t  MCVList *mcv, Node *clause, bool **or_matches,\n\t\t\t\t\t\t
      \ Selectivity *basesel, Selectivity *overlap_mcvsel,\n\t\t\t\t\t\t  Selectivity
      *overlap_basesel, Selectivity *totalsel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2185,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2186,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - mcvlist
    argTypes:
    - MCVList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2178
    functionDepth: 0
    functionLinenumber: 2178
    functionLinenumberEnd: 2189
    functionName: statext_mcv_free
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void statext_mcv_free(MCVList *mcvlist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:2216,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:2231,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:2232,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/statistics/mcv.c:2248,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:2249,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/mcv.c:2266,1
    - Dst: InputFunctionCallSafe
      Src: /src/postgres/src/backend/statistics/mcv.c:2269,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/mcv.c:2272,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mcv.c:2273,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mcv.c:2274,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2275,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2279,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/statistics/mcv.c:2291,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/statistics/mcv.c:2298,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:2298,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/mcv.c:2300,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:2301,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/statistics/mcv.c:2303,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/mcv.c:2305,1
    - Dst: statext_mcv_serialize
      Src: /src/postgres/src/backend/statistics/mcv.c:2310,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2314,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2316,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2318,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2319,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/mcv.c:2323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mcv.c:2324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mcv.c:2325,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:2329,1
    - Dst: statext_mcv_free
      Src: /src/postgres/src/backend/statistics/mcv.c:2332,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 59
    argCount: 10
    argNames:
    - elevel
    - numattrs
    - atttypids
    - atttypmods
    - atttypcolls
    - nitems
    - mcv_elems
    - mcv_nulls
    - freqs
    - base_freqs
    argTypes:
    - int
    - int
    - Oid*
    - int32*
    - Oid*
    - int
    - Datum*
    - bool*
    - float8*
    - float8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2334
      start: 2203
    functionDepth: 5
    functionLinenumber: 2203
    functionLinenumberEnd: 2334
    functionName: statext_mcv_import
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - errcode
    - InputFunctionCallSafe
    - elog
    - pfree
    - HeapTupleIsValid
    - errmsg
    - PointerGetDatum
    - ObjectIdGetDatum
    - TextDatumGetCString
    - fmgr_info
    - palloc0_object
    - ereport
    - statext_mcv_serialize
    - SearchSysCacheCopy1
    - GETSTRUCT
    - getTypeInputInfo
    - palloc0_array
    - palloc0
    - statext_mcv_free
    linkageType: ''
    returnType: Datum
    signature: "Datum statext_mcv_import(int elevel, int numattrs,\n\t\t\t\t   Oid
      *atttypids, int32 *atttypmods, Oid *atttypcolls,\n\t\t\t\t   int nitems, Datum
      *mcv_elems, bool *mcv_nulls,\n\t\t\t\t   float8 *freqs, float8 *base_freqs)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/relation_stats.c:88,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/relation_stats.c:89,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/relation_stats.c:91,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/relation_stats.c:91,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/relation_stats.c:92,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/relation_stats.c:92,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/statistics/relation_stats.c:94,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/relation_stats.c:95,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/relation_stats.c:96,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/relation_stats.c:97,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/relation_stats.c:98,1
    - Dst: RangeVarGetRelidExtended
      Src: /src/postgres/src/backend/statistics/relation_stats.c:100,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/statistics/relation_stats.c:100,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:104,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/backend/statistics/relation_stats.c:106,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:110,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/statistics/relation_stats.c:112,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/relation_stats.c:115,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/relation_stats.c:116,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/relation_stats.c:117,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:124,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/backend/statistics/relation_stats.c:126,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:130,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/backend/statistics/relation_stats.c:132,1
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/relation_stats.c:140,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/statistics/relation_stats.c:142,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:142,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/relation_stats.c:143,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/relation_stats.c:144,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/relation_stats.c:146,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:151,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:158,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:165,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:172,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/relation_stats.c:178,1
    - Dst: heap_modify_tuple_by_cols
      Src: /src/postgres/src/backend/statistics/relation_stats.c:181,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/statistics/relation_stats.c:183,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/relation_stats.c:184,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/relation_stats.c:187,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/relation_stats.c:190,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/statistics/relation_stats.c:192,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 64
    functionDepth: 7
    functionLinenumber: 64
    functionLinenumberEnd: 195
    functionName: relation_statistics_update
    functionSourceFile: /src/postgres/src/backend/statistics/relation_stats.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - errcode
    - errhint
    - Float4GetDatum
    - makeRangeVar
    - RecoveryInProgress
    - table_close
    - SearchSysCache1
    - elog
    - RangeVarGetRelidExtended
    - HeapTupleIsValid
    - RelationGetDescr
    - UInt32GetDatum
    - heap_freetuple
    - CommandCounterIncrement
    - table_open
    - ReleaseSysCache
    - PG_GETARG_UINT32
    - errmsg
    - ObjectIdGetDatum
    - TextDatumGetCString
    - heap_modify_tuple_by_cols
    - ereport
    - GETSTRUCT
    - PG_GETARG_FLOAT4
    - CatalogTupleUpdate
    - stats_check_required_arg
    - PG_ARGISNULL
    linkageType: ''
    returnType: bool
    signature: bool relation_statistics_update(FunctionCallInfo fcinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/statistics/relation_stats.c:204,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/statistics/relation_stats.c:206,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/relation_stats.c:208,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:209,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/relation_stats.c:210,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:211,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:212,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:214,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:216,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:218,1
    - Dst: relation_statistics_update
      Src: /src/postgres/src/backend/statistics/relation_stats.c:221,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/relation_stats.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 201
    functionDepth: 8
    functionLinenumber: 201
    functionLinenumberEnd: 223
    functionName: pg_clear_relation_stats
    functionSourceFile: /src/postgres/src/backend/statistics/relation_stats.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_RETURN_VOID
    - relation_statistics_update
    - InitFunctionCallInfoData
    - UInt32GetDatum
    - LOCAL_FCINFO
    - Float4GetDatum
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_clear_relation_stats(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/statistics/relation_stats.c:228,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/statistics/relation_stats.c:231,1
    - Dst: stats_fill_fcinfo_from_arg_pairs
      Src: /src/postgres/src/backend/statistics/relation_stats.c:235,1
    - Dst: relation_statistics_update
      Src: /src/postgres/src/backend/statistics/relation_stats.c:239,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 225
    functionDepth: 8
    functionLinenumber: 225
    functionLinenumberEnd: 243
    functionName: pg_restore_relation_stats
    functionSourceFile: /src/postgres/src/backend/statistics/relation_stats.c
    functionUses: 0
    functionsReached:
    - InitFunctionCallInfoData
    - LOCAL_FCINFO
    - PG_RETURN_BOOL
    - relation_statistics_update
    - stats_fill_fcinfo_from_arg_pairs
    linkageType: ''
    returnType: Datum
    signature: Datum pg_restore_relation_stats(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:58,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:59,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:60,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - fcinfo
    - arginfo
    - argnum
    argTypes:
    - FunctionCallInfo
    - struct StatsArgInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: stats_check_required_arg
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 5
    functionsReached:
    - ereport
    - PG_ARGISNULL
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: "void stats_check_required_arg(FunctionCallInfo fcinfo,\n\t\t\t\t\t\t
      struct StatsArgInfo *arginfo,\n\t\t\t\t\t\t int argnum)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:79,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/stat_utils.c:82,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/stat_utils.c:82,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/statistics/stat_utils.c:84,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:86,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:87,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:88,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/statistics/stat_utils.c:93,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:95,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:96,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - fcinfo
    - arginfo
    - argnum
    argTypes:
    - FunctionCallInfo
    - struct StatsArgInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 103
    functionName: stats_check_arg_array
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 1
    functionsReached:
    - PG_GETARG_DATUM
    - errcode
    - ereport
    - ARR_NDIM
    - errmsg
    - array_contains_nulls
    - DatumGetArrayTypeP
    - PG_ARGISNULL
    linkageType: ''
    returnType: bool
    signature: "bool stats_check_arg_array(FunctionCallInfo fcinfo,\n\t\t\t\t\t  struct
      StatsArgInfo *arginfo,\n\t\t\t\t\t  int argnum)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:118,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:118,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:121,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:121,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:123,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:126,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:127,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:128,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - fcinfo
    - arginfo
    - argnum1
    - argnum2
    argTypes:
    - FunctionCallInfo
    - struct StatsArgInfo*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 136
    functionName: stats_check_arg_pair
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 1
    functionsReached:
    - ereport
    - PG_ARGISNULL
    - errmsg
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool stats_check_arg_pair(FunctionCallInfo fcinfo,\n\t\t\t\t\t struct
      StatsArgInfo *arginfo,\n\t\t\t\t\t int argnum1, int argnum2)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:159,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:161,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:166,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/statistics/stat_utils.c:170,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/statistics/stat_utils.c:173,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:189,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:190,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:191,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:204,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:205,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:206,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/statistics/stat_utils.c:210,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:210,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:211,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/stat_utils.c:212,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/stat_utils.c:213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:224,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:225,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:226,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/statistics/stat_utils.c:227,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/statistics/stat_utils.c:228,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:232,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:233,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:234,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/statistics/stat_utils.c:237,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/statistics/stat_utils.c:237,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/statistics/stat_utils.c:239,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/statistics/stat_utils.c:240,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/statistics/stat_utils.c:244,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/statistics/stat_utils.c:245,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/statistics/stat_utils.c:246,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/stat_utils.c:249,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:254,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 40
    argCount: 4
    argNames:
    - relation
    - relId
    - oldRelId
    - arg
    argTypes:
    - RangeVar*
    - Oid
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 257
    functionName: RangeVarCallbackForStats
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 0
    functionsReached:
    - errdetail_relkind_not_supported
    - GetUserId
    - errcode
    - NameStr
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - object_ownercheck
    - get_relkind_objtype
    - pg_class_aclcheck
    - ReleaseSysCache
    - get_rel_relkind
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - UnlockRelationOid
    - ereport
    - IndexGetRelation
    - LockRelationOid
    - GETSTRUCT
    - aclcheck_error
    linkageType: ''
    returnType: void
    signature: "void RangeVarCallbackForStats(const RangeVar *relation,\n\t\t\t\t\t\t
      Oid relId, Oid oldRelId, void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/statistics/stat_utils.c:270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:273,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - argname
    - arginfo
    argTypes:
    - char*
    - struct StatsArgInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 277
    functionName: get_arg_by_name
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - ereport
    - errmsg
    linkageType: ''
    returnType: int
    signature: int get_arg_by_name(const char *argname, struct StatsArgInfo *arginfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:287,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:288,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/statistics/stat_utils.c:289,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/statistics/stat_utils.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - argname
    - argtype
    - expectedtype
    argTypes:
    - char*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 295
    functionName: stats_check_arg_type
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - ereport
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool stats_check_arg_type(const char *argname, Oid argtype, Oid expectedtype)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/statistics/stat_utils.c:316,1
    - Dst: list_head
      Src: /src/postgres/src/backend/statistics/stat_utils.c:329,1
    - Dst: lnext
      Src: /src/postgres/src/backend/statistics/stat_utils.c:333,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/stat_utils.c:336,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/stat_utils.c:338,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - rel
    - attnum
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 339
    functionName: statatt_get_index_expr
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 0
    functionsReached:
    - elog
    - RelationGetIndexExpressions
    - lnext
    - list_head
    - lfirst
    linkageType: ''
    returnType: Node
    signature: 'Node *

      statatt_get_index_expr(Relation rel, int attnum)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: extract_variadic_args
      Src: /src/postgres/src/backend/statistics/stat_utils.c:368,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:373,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/stat_utils.c:374,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:387,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:388,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:391,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:392,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/statistics/stat_utils.c:393,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/statistics/stat_utils.c:394,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/stat_utils.c:399,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/statistics/stat_utils.c:408,1
    - Dst: get_arg_by_name
      Src: /src/postgres/src/backend/statistics/stat_utils.c:411,1
    - Dst: stats_check_arg_type
      Src: /src/postgres/src/backend/statistics/stat_utils.c:413,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 3
    argNames:
    - pairs_fcinfo
    - positional_fcinfo
    - arginfo
    argTypes:
    - FunctionCallInfo
    - FunctionCallInfo
    - struct StatsArgInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 350
    functionDepth: 3
    functionLinenumber: 350
    functionLinenumberEnd: 425
    functionName: stats_fill_fcinfo_from_arg_pairs
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 3
    functionsReached:
    - extract_variadic_args
    - format_type_be
    - pg_strcasecmp
    - ereport
    - stats_check_arg_type
    - get_arg_by_name
    - errhint
    - errmsg
    - TextDatumGetCString
    linkageType: ''
    returnType: bool
    signature: "bool stats_fill_fcinfo_from_arg_pairs(FunctionCallInfo pairs_fcinfo,\n\t\t\t\t\t\t\t\t
      FunctionCallInfo positional_fcinfo,\n\t\t\t\t\t\t\t\t struct StatsArgInfo *arginfo)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/statistics/stat_utils.c:445,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/stat_utils.c:451,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:451,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:452,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:455,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:456,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:457,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:458,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/statistics/stat_utils.c:459,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/stat_utils.c:461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:464,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:465,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:466,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/statistics/stat_utils.c:467,1
    - Dst: statatt_get_index_expr
      Src: /src/postgres/src/backend/statistics/stat_utils.c:469,1
    - Dst: exprType
      Src: /src/postgres/src/backend/statistics/stat_utils.c:485,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/statistics/stat_utils.c:486,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:488,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/statistics/stat_utils.c:491,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/stat_utils.c:493,1
    - Dst: type_is_multirange
      Src: /src/postgres/src/backend/statistics/stat_utils.c:499,1
    - Dst: get_multirange_range
      Src: /src/postgres/src/backend/statistics/stat_utils.c:500,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/stat_utils.c:503,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/statistics/stat_utils.c:515,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 8
    argNames:
    - reloid
    - attnum
    - atttypid
    - atttypmod
    - atttyptype
    - atttypcoll
    - eq_opr
    - lt_opr
    argTypes:
    - Oid
    - AttrNumber
    - Oid*
    - int32*
    - char*
    - Oid*
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 439
    functionDepth: 3
    functionLinenumber: 439
    functionLinenumberEnd: 516
    functionName: statatt_get_type
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 1
    functionsReached:
    - errcode
    - exprType
    - RelationGetRelationName
    - type_is_multirange
    - HeapTupleIsValid
    - ReleaseSysCache
    - errmsg
    - OidIsValid
    - relation_close
    - ObjectIdGetDatum
    - lookup_type_cache
    - exprTypmod
    - get_multirange_range
    - ereport
    - statatt_get_index_expr
    - exprCollation
    - GETSTRUCT
    - relation_open
    - Int16GetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: void
    signature: "void statatt_get_type(Oid reloid, AttrNumber attnum,\n\t\t\t\t Oid
      *atttypid, int32 *atttypmod,\n\t\t\t\t char *atttyptype, Oid *atttypcoll,\n\t\t\t\t
      Oid *eq_opr, Oid *lt_opr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/statistics/stat_utils.c:542,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:545,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/stat_utils.c:549,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:550,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - atttypid
    - atttyptype
    - elemtypid
    - elem_eq_opr
    argTypes:
    - Oid
    - char
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 556
    functionName: statatt_get_elem_type
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 2
    functionsReached:
    - OidIsValid
    - get_base_element_type
    - lookup_type_cache
    linkageType: ''
    returnType: bool
    signature: "bool statatt_get_elem_type(Oid atttypid, char atttyptype,\n\t\t\t\t\t
      \ Oid *elemtypid, Oid *elem_eq_opr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/stat_utils.c:579,1
    - Dst: InputFunctionCallSafe
      Src: /src/postgres/src/backend/statistics/stat_utils.c:581,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/stat_utils.c:584,1
    - Dst: ThrowErrorData
      Src: /src/postgres/src/backend/statistics/stat_utils.c:586,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/stat_utils.c:591,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/statistics/stat_utils.c:593,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/stat_utils.c:593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:595,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:596,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:597,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/statistics/stat_utils.c:602,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/stat_utils.c:602,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:604,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:605,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:606,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 6
    argNames:
    - staname
    - array_in
    - d
    - typid
    - typmod
    - ok
    argTypes:
    - char*
    - FmgrInfo*
    - Datum
    - Oid
    - int32
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 614
    functionName: statatt_build_stavalues
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 1
    functionsReached:
    - ThrowErrorData
    - errcode
    - pfree
    - DatumGetArrayTypeP
    - ereport
    - InputFunctionCallSafe
    - ARR_NDIM
    - errmsg
    - array_contains_nulls
    - TextDatumGetCString
    linkageType: ''
    returnType: Datum
    signature: "Datum statatt_build_stavalues(const char *staname, FmgrInfo *array_in,
      Datum d, Oid typid,\n\t\t\t\t\t\tint32 typmod, bool *ok)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/statistics/stat_utils.c:653,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/statistics/stat_utils.c:655,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:664,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/statistics/stat_utils.c:671,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:673,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/statistics/stat_utils.c:676,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:678,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/statistics/stat_utils.c:681,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:683,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 10
    argNames:
    - values
    - nulls
    - replaces
    - stakind
    - staop
    - stacoll
    - stanumbers
    - stanumbers_isnull
    - stavalues
    - stavalues_isnull
    argTypes:
    - Datum*
    - bool*
    - bool*
    - int16
    - Oid
    - Oid
    - Datum
    - bool
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 698
    functionName: statatt_set_slot
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 2
    functionsReached:
    - DatumGetObjectId
    - ereport
    - errmsg
    - DatumGetInt16
    - ObjectIdGetDatum
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: "void statatt_set_slot(Datum *values, bool *nulls, bool *replaces,\n\t\t\t\t
      int16 stakind, Oid staop, Oid stacoll,\n\t\t\t\t Datum stanumbers, bool stanumbers_isnull,\n\t\t\t\t
      Datum stavalues, bool stavalues_isnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/stat_utils.c:717,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/stat_utils.c:718,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:721,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:723,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:725,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:740,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/stat_utils.c:742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 6
    argNames:
    - reloid
    - attnum
    - inherited
    - values
    - nulls
    - replaces
    argTypes:
    - Oid
    - int16
    - bool
    - Datum*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 745
    functionName: statatt_init_empty_tuple
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 2
    functionsReached:
    - ObjectIdGetDatum
    - BoolGetDatum
    - memset
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: "void statatt_init_empty_tuple(Oid reloid, int16 attnum, bool inherited,\n\t\t\t\t\t\t
      Datum *values, bool *nulls, bool *replaces)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/stat_utils.c:757,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/stat_utils.c:758,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/stat_utils.c:769,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/statistics/stat_utils.c:779,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/statistics/stat_utils.c:780,1
    - Dst: range_deserialize
      Src: /src/postgres/src/backend/statistics/stat_utils.c:793,1
    - Dst: DatumGetRangeTypeP
      Src: /src/postgres/src/backend/statistics/stat_utils.c:793,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:798,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:799,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:800,1
    - Dst: range_cmp_bounds
      Src: /src/postgres/src/backend/statistics/stat_utils.c:806,1
    - Dst: range_cmp_bounds
      Src: /src/postgres/src/backend/statistics/stat_utils.c:807,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:809,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:810,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:811,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - arrayval
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 754
    functionDepth: 2
    functionLinenumber: 754
    functionLinenumberEnd: 821
    functionName: statatt_check_bounds_histogram
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 2
    functionsReached:
    - get_typlenbyvalalign
    - range_deserialize
    - errcode
    - ereport
    - ARR_ELEMTYPE
    - errmsg
    - DatumGetArrayTypeP
    - DatumGetRangeTypeP
    - range_cmp_bounds
    - deconstruct_array
    - lookup_type_cache
    linkageType: ''
    returnType: bool
    signature: bool statatt_check_bounds_histogram(Datum arrayval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetForeignDataWrapperExtended
      Src: /src/postgres/src/backend/foreign/foreign.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fdwid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: GetForeignDataWrapper
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - GetForeignDataWrapperExtended
    linkageType: ''
    returnType: ForeignDataWrapper
    signature: 'ForeignDataWrapper *

      GetForeignDataWrapper(Oid fdwid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:59,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:59,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:61,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:64,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:68,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/foreign/foreign.c:70,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/foreign/foreign.c:73,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/foreign/foreign.c:73,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:79,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:86,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - fdwid
    - flags
    argTypes:
    - Oid
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 91
    functionName: GetForeignDataWrapperExtended
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - pstrdup
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - palloc_object
    - untransformRelOptions
    - ObjectIdGetDatum
    - SysCacheGetAttr
    linkageType: ''
    returnType: ForeignDataWrapper
    signature: 'ForeignDataWrapper *

      GetForeignDataWrapperExtended(Oid fdwid, uint16 flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_foreign_data_wrapper_oid
      Src: /src/postgres/src/backend/foreign/foreign.c:101,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:103,1
    - Dst: GetForeignDataWrapper
      Src: /src/postgres/src/backend/foreign/foreign.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - fdwname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 107
    functionName: GetForeignDataWrapperByName
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - GetForeignDataWrapper
    - get_foreign_data_wrapper_oid
    linkageType: ''
    returnType: ForeignDataWrapper
    signature: 'ForeignDataWrapper *

      GetForeignDataWrapperByName(const char *fdwname, bool missing_ok)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetForeignServerExtended
      Src: /src/postgres/src/backend/foreign/foreign.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - serverid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: GetForeignServer
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - GetForeignServerExtended
    linkageType: ''
    returnType: ForeignServer
    signature: 'ForeignServer *

      GetForeignServer(Oid serverid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:134,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:134,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:136,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:139,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:143,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/foreign/foreign.c:145,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/foreign/foreign.c:147,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/foreign/foreign.c:147,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:152,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/foreign/foreign.c:156,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:159,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/foreign/foreign.c:163,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:166,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:173,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - serverid
    - flags
    argTypes:
    - Oid
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 178
    functionName: GetForeignServerExtended
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - pstrdup
    - ReleaseSysCache
    - TextDatumGetCString
    - GETSTRUCT
    - NameStr
    - palloc_object
    - untransformRelOptions
    - ObjectIdGetDatum
    - SysCacheGetAttr
    linkageType: ''
    returnType: ForeignServer
    signature: 'ForeignServer *

      GetForeignServerExtended(Oid serverid, uint16 flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_foreign_server_oid
      Src: /src/postgres/src/backend/foreign/foreign.c:187,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:189,1
    - Dst: GetForeignServer
      Src: /src/postgres/src/backend/foreign/foreign.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - srvname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 193
    functionName: GetForeignServerByName
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - GetForeignServer
    - get_foreign_server_oid
    linkageType: ''
    returnType: ForeignServer
    signature: 'ForeignServer *

      GetForeignServerByName(const char *srvname, bool missing_ok)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetForeignDataWrapper
      Src: /src/postgres/src/backend/foreign/foreign.c:207,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:209,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:210,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:212,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/foreign/foreign.c:214,1
    - Dst: OidFunctionCall3
      Src: /src/postgres/src/backend/foreign/foreign.c:216,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:217,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:218,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:219,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/foreign/foreign.c:221,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/foreign/foreign.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - userid
    - server
    argTypes:
    - Oid
    - ForeignServer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 222
    functionName: ForeignServerConnectionString
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - errcode
    - GetForeignDataWrapper
    - DatumGetTextPP
    - ereport
    - errmsg
    - PointerGetDatum
    - errdetail
    - OidIsValid
    - text_to_cstring
    - ObjectIdGetDatum
    - OidFunctionCall3
    linkageType: ''
    returnType: char
    signature: 'char *

      ForeignServerConnectionString(Oid userid, ForeignServer *server)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/foreign/foreign.c:239,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:240,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:241,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:243,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/foreign/foreign.c:246,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:247,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:248,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:251,1
    - Dst: GetForeignServer
      Src: /src/postgres/src/backend/foreign/foreign.c:253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:257,1
    - Dst: MappingUserName
      Src: /src/postgres/src/backend/foreign/foreign.c:258,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/foreign/foreign.c:261,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:262,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:267,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:274,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:276,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - userid
    - serverid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 279
    functionName: GetUserMapping
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - GetForeignServer
    - errcode
    - HeapTupleIsValid
    - MappingUserName
    - ereport
    - ReleaseSysCache
    - SysCacheGetAttr
    - errmsg
    - GETSTRUCT
    - palloc_object
    - untransformRelOptions
    - ObjectIdGetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: UserMapping
    signature: 'UserMapping *

      GetUserMapping(Oid userid, Oid serverid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:294,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:294,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:295,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:296,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:297,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/foreign/foreign.c:299,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:304,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:311,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 316
    functionName: GetForeignTable
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - untransformRelOptions
    - palloc_object
    - ObjectIdGetDatum
    - SysCacheGetAttr
    linkageType: ''
    returnType: ForeignTable
    signature: 'ForeignTable *

      GetForeignTable(Oid relid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/foreign/foreign.c:331,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:332,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:333,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:334,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:335,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:337,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:344,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - relid
    - attnum
    argTypes:
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 349
    functionName: GetForeignColumnOptions
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - SysCacheGetAttr
    - untransformRelOptions
    - ObjectIdGetDatum
    - SearchSysCache2
    - Int16GetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      GetForeignColumnOptions(Oid relid, AttrNumber attnum)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/foreign/foreign.c:363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:366,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:368,1
    - Dst: OidFunctionCall0
      Src: /src/postgres/src/backend/foreign/foreign.c:371,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/foreign/foreign.c:372,1
    - Dst: IsA
      Src: /src/postgres/src/backend/foreign/foreign.c:374,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - fdwhandler
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 379
    functionName: GetFdwRoutine
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - ereport
    - unlikely
    - errmsg
    - OidFunctionCall0
    - IsA
    - DatumGetPointer
    linkageType: ''
    returnType: FdwRoutine
    signature: 'FdwRoutine *

      GetFdwRoutine(Oid fdwhandler)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:393,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:393,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:394,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:395,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:396,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 401
    functionName: GetForeignServerIdByRelId
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid GetForeignServerIdByRelId(Oid relid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:418,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:418,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:419,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:420,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:421,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:423,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:426,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:426,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:427,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:428,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:429,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:433,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:434,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:435,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:436,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/foreign/foreign.c:437,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:439,1
    - Dst: GetFdwRoutine
      Src: /src/postgres/src/backend/foreign/foreign.c:442,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - serverid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 408
    functionDepth: 2
    functionLinenumber: 408
    functionLinenumberEnd: 443
    functionName: GetFdwRoutineByServerId
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - errcode
    - HeapTupleIsValid
    - GetFdwRoutine
    - ereport
    - ReleaseSysCache
    - GETSTRUCT
    - errmsg
    - NameStr
    - OidIsValid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: FdwRoutine
    signature: 'FdwRoutine *

      GetFdwRoutineByServerId(Oid serverid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetForeignServerIdByRelId
      Src: /src/postgres/src/backend/foreign/foreign.c:456,1
    - Dst: GetFdwRoutineByServerId
      Src: /src/postgres/src/backend/foreign/foreign.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 3
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: GetFdwRoutineByRelId
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 3
    functionsReached:
    - GetForeignServerIdByRelId
    - GetFdwRoutineByServerId
    linkageType: ''
    returnType: FdwRoutine
    signature: 'FdwRoutine *

      GetFdwRoutineByRelId(Oid relid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetFdwRoutineByRelId
      Src: /src/postgres/src/backend/foreign/foreign.c:482,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/foreign/foreign.c:482,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/foreign/foreign.c:485,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:487,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/foreign/foreign.c:497,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - relation
    - makecopy
    argTypes:
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 473
    functionDepth: 4
    functionLinenumber: 473
    functionLinenumberEnd: 504
    functionName: GetFdwRoutineForRelation
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 2
    functionsReached:
    - memcpy
    - MemoryContextAlloc
    - GetFdwRoutineByRelId
    - palloc_object
    - RelationGetRelid
    linkageType: ''
    returnType: FdwRoutine
    signature: 'FdwRoutine *

      GetFdwRoutineForRelation(Relation relation, bool makecopy)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/foreign/foreign.c:525,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:527,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/foreign/foreign.c:529,1
    - Dst: foreach
      Src: /src/postgres/src/backend/foreign/foreign.c:535,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:537,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/foreign/foreign.c:539,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - tablename
    - stmt
    argTypes:
    - char*
    - ImportForeignSchemaStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 545
    functionName: IsImportableForeignTable
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - lfirst
    - foreach
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool IsImportableForeignTable(const char *tablename,\n\t\t\t\t\t\t
      ImportForeignSchemaStmt *stmt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/foreign/foreign.c:556,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:561,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/foreign/foreign.c:565,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:569,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:573,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:577,1
    - Dst: strVal
      Src: /src/postgres/src/backend/foreign/foreign.c:577,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/foreign/foreign.c:585,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 553
    functionDepth: 2
    functionLinenumber: 553
    functionLinenumberEnd: 590
    functionName: pg_options_to_table
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - InitMaterializedSRF
    - tuplestore_putvalues
    - lfirst
    - CStringGetTextDatum
    - untransformRelOptions
    - strVal
    linkageType: ''
    returnType: Datum
    signature: Datum pg_options_to_table(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:569,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:573,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:577,1
    - Dst: strVal
      Src: /src/postgres/src/backend/foreign/foreign.c:577,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/foreign/foreign.c:585,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 587
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 337
    functionsReached:
    - strVal
    - lfirst
    - CStringGetTextDatum
    - tuplestore_putvalues
    linkageType: ''
    returnType: void
    signature: void foreach(cell, options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/foreign/foreign.c:638,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - option
    - context
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 641
    functionName: is_conninfo_option
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool is_conninfo_option(const char *option, Oid context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:659,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/foreign/foreign.c:659,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/foreign/foreign.c:660,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:666,1
    - Dst: is_conninfo_option
      Src: /src/postgres/src/backend/foreign/foreign.c:668,1
    - Dst: initClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:679,1
    - Dst: updateClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:685,1
    - Dst: getClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:689,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:690,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:691,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:692,1
    - Dst: errhint
      Src: /src/postgres/src/backend/foreign/foreign.c:694,1
    - Dst: errhint
      Src: /src/postgres/src/backend/foreign/foreign.c:696,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/foreign/foreign.c:698,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/foreign/foreign.c:702,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 656
    functionDepth: 2
    functionLinenumber: 656
    functionLinenumberEnd: 703
    functionName: postgresql_fdw_validator
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - updateClosestMatch
    - errcode
    - ereport
    - initClosestMatch
    - errhint
    - lfirst
    - PG_GETARG_OID
    - untransformRelOptions
    - getClosestMatch
    - errmsg
    - PG_RETURN_BOOL
    - is_conninfo_option
    linkageType: ''
    returnType: Datum
    signature: Datum postgresql_fdw_validator(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:666,1
    - Dst: is_conninfo_option
      Src: /src/postgres/src/backend/foreign/foreign.c:668,1
    - Dst: initClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:679,1
    - Dst: updateClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:685,1
    - Dst: getClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:689,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:690,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:691,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:692,1
    - Dst: errhint
      Src: /src/postgres/src/backend/foreign/foreign.c:694,1
    - Dst: errhint
      Src: /src/postgres/src/backend/foreign/foreign.c:696,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/foreign/foreign.c:698,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 664
    functionDepth: 1
    functionLinenumber: 664
    functionLinenumberEnd: 700
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 337
    functionsReached:
    - updateClosestMatch
    - errcode
    - ereport
    - initClosestMatch
    - errhint
    - lfirst
    - errmsg
    - getClosestMatch
    - PG_RETURN_BOOL
    - is_conninfo_option
    linkageType: ''
    returnType: void
    signature: void foreach(cell, options_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetSysCacheOid1
      Src: /src/postgres/src/backend/foreign/foreign.c:717,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:719,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:720,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:721,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:722,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - fdwname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 712
    functionDepth: 2
    functionLinenumber: 712
    functionLinenumberEnd: 726
    functionName: get_foreign_data_wrapper_oid
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - errcode
    - CStringGetDatum
    - ereport
    - GetSysCacheOid1
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid get_foreign_data_wrapper_oid(const char *fdwname, bool missing_ok)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetSysCacheOid1
      Src: /src/postgres/src/backend/foreign/foreign.c:740,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:741,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:742,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:743,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:744,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:745,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - servername
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 747
    functionName: get_foreign_server_oid
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - errcode
    - CStringGetDatum
    - ereport
    - GetSysCacheOid1
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid get_foreign_server_oid(const char *servername, bool missing_ok)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/foreign/foreign.c:777,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/foreign/foreign.c:777,1
    - Dst: foreach
      Src: /src/postgres/src/backend/foreign/foreign.c:779,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:781,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/foreign/foreign.c:792,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:794,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/foreign/foreign.c:801,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:803,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/foreign/foreign.c:810,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:812,1
    - Dst: IsA
      Src: /src/postgres/src/backend/foreign/foreign.c:837,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/foreign/foreign.c:842,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/foreign/foreign.c:855,1
    - Dst: IsA
      Src: /src/postgres/src/backend/foreign/foreign.c:863,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/foreign/foreign.c:868,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/foreign/foreign.c:881,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 1
    argNames:
    - joinrel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 772
    functionDepth: 3
    functionLinenumber: 772
    functionLinenumberEnd: 891
    functionName: GetExistingLocalJoinPath
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - foreach
    - memcpy
    - IS_JOIN_REL
    - Assert
    - pathkeys_count_contained_in
    - makeNode
    - lfirst
    - pathkeys_contained_in
    - IsA
    linkageType: ''
    returnType: Path
    signature: 'Path *

      GetExistingLocalJoinPath(RelOptInfo *joinrel)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: COPY_SCALAR_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_SCALAR_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: COPY_NODE_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_NODE_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: COPY_BITMAPSET_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_BITMAPSET_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: COPY_STRING_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_STRING_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: COPY_ARRAY_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_ARRAY_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 59
    functionName: COPY_POINTER_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_POINTER_FIELD(fldname, sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: COPY_LOCATION_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_LOCATION_FIELD(fldname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:75,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:77,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:78,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:79,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:80,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:95,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:100,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:101,1
    - Dst: COPY_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - from
    argTypes:
    - Const*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 105
    functionName: _copyConst
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached:
    - datumCopy
    - makeNode
    - COPY_LOCATION_FIELD
    - COPY_SCALAR_FIELD
    linkageType: ''
    returnType: Const
    signature: 'Const *

      _copyConst(const Const *from)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:110,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:112,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:116,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:117,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:120,1
    - Dst: COPY_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:123,1
    - Dst: COPY_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:126,1
    - Dst: COPY_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:129,1
    - Dst: COPY_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:132,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:135,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:136,1
    - Dst: COPY_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:141,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - from
    argTypes:
    - A_Const*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 144
    functionName: _copyA_Const
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - COPY_STRING_FIELD
    - makeNode
    - COPY_SCALAR_FIELD
    - COPY_LOCATION_FIELD
    - nodeTag
    linkageType: ''
    returnType: A_Const
    signature: 'A_Const *

      _copyA_Const(const A_Const *from)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetExtensibleNodeMethods
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:152,1
    - Dst: newNode
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:153,1
    - Dst: COPY_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:155,1
    - Dst: ExtensibleNodeMethods*::nodeCopy
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - from
    argTypes:
    - ExtensibleNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 161
    functionName: _copyExtensibleNode
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached:
    - GetExtensibleNodeMethods
    - newNode
    - COPY_STRING_FIELD
    - ExtensibleNodeMethods*::nodeCopy
    linkageType: ''
    returnType: ExtensibleNode
    signature: 'ExtensibleNode *

      _copyExtensibleNode(const ExtensibleNode *from)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - from
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 167
    functionName: _copyBitmapset
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached:
    - bms_copy
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      _copyBitmapset(const Bitmapset *from)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:185,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:187,1
    - Dst: list_copy_deep
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:192,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:202,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:206,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/copyfuncs.c:206,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - from
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 212
    functionName: copyObjectImpl
    functionSourceFile: /src/postgres/src/backend/nodes/copyfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - list_copy_deep
    - check_stack_depth
    - list_copy
    - nodeTag
    linkageType: ''
    returnType: void
    signature: 'void *

      copyObjectImpl(const void *from)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: COMPARE_SCALAR_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_SCALAR_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: COMPARE_NODE_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_NODE_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: COMPARE_BITMAPSET_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_BITMAPSET_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: COMPARE_STRING_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_STRING_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: equalstr
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: equalstr(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: COMPARE_ARRAY_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_ARRAY_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 78
    functionName: COMPARE_POINTER_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_POINTER_FIELD(fldname, sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: COMPARE_LOCATION_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_LOCATION_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: COMPARE_COERCIONFORM_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_COERCIONFORM_FIELD(fldname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPARE_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:98,1
    - Dst: COMPARE_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:99,1
    - Dst: COMPARE_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:100,1
    - Dst: COMPARE_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:101,1
    - Dst: COMPARE_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:102,1
    - Dst: COMPARE_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:103,1
    - Dst: COMPARE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:104,1
    - Dst: datumIsEqual
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Const*
    - Const*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 114
    functionName: _equalConst
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached:
    - COMPARE_LOCATION_FIELD
    - COMPARE_SCALAR_FIELD
    - datumIsEqual
    linkageType: ''
    returnType: bool
    signature: bool _equalConst(const Const *a, const Const *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPARE_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:121,1
    - Dst: GetExtensibleNodeMethods
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:124,1
    - Dst: ExtensibleNodeMethods*::nodeEqual
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ExtensibleNode*
    - ExtensibleNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 131
    functionName: _equalExtensibleNode
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached:
    - COMPARE_STRING_FIELD
    - ExtensibleNodeMethods*::nodeEqual
    - GetExtensibleNodeMethods
    linkageType: ''
    returnType: bool
    signature: bool _equalExtensibleNode(const ExtensibleNode *a, const ExtensibleNode
      *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPARE_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:136,1
    - Dst: equal
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:139,1
    - Dst: COMPARE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - A_Const*
    - A_Const*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: _equalA_Const
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached:
    - equal
    - COMPARE_LOCATION_FIELD
    - COMPARE_SCALAR_FIELD
    linkageType: ''
    returnType: bool
    signature: bool _equalA_Const(const A_Const *a, const A_Const *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_equal
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: _equalBitmapset
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached:
    - bms_equal
    linkageType: ''
    returnType: bool
    signature: bool _equalBitmapset(const Bitmapset *a, const Bitmapset *b)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: COMPARE_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:165,1
    - Dst: COMPARE_SCALAR_FIELD
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:166,1
    - Dst: forboth
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:175,1
    - Dst: equal
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:177,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:177,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:177,1
    - Dst: forboth
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:182,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:184,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:184,1
    - Dst: forboth
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:189,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:191,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:191,1
    - Dst: forboth
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:196,1
    - Dst: lfirst_xid
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:198,1
    - Dst: lfirst_xid
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:198,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:212,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 215
    functionName: _equalList
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - lfirst_int
    - Assert
    - COMPARE_SCALAR_FIELD
    - lfirst
    - lfirst_xid
    - equal
    - lfirst_oid
    - forboth
    linkageType: ''
    returnType: bool
    signature: bool _equalList(const List *a, const List *b)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:239,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:239,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:243,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:245,1
    - Dst: _equalList
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:253,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:257,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/equalfuncs.c:258,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 264
    functionName: equal
    functionSourceFile: /src/postgres/src/backend/nodes/equalfuncs.c
    functionUses: 126
    functionsReached:
    - elog
    - check_stack_depth
    - nodeTag
    - _equalList
    linkageType: ''
    returnType: bool
    signature: bool equal(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/value.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 29
    functionName: makeInteger
    functionSourceFile: /src/postgres/src/backend/nodes/value.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Integer
    signature: 'Integer *

      makeInteger(int i)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/value.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - numericStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: makeFloat
    functionSourceFile: /src/postgres/src/backend/nodes/value.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Float
    signature: 'Float *

      makeFloat(char *numericStr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/value.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: makeBoolean
    functionSourceFile: /src/postgres/src/backend/nodes/value.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Boolean
    signature: 'Boolean *

      makeBoolean(bool val)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/value.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: makeString
    functionSourceFile: /src/postgres/src/backend/nodes/value.c
    functionUses: 8
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: String
    signature: 'String *

      makeString(char *str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/value.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: makeBitString
    functionSourceFile: /src/postgres/src/backend/nodes/value.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: BitString
    signature: 'BitString *

      makeBitString(char *str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - kind
    - name
    - lexpr
    - rexpr
    - location
    argTypes:
    - A_Expr_Kind
    - List*
    - Node*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 41
    functionName: makeA_Expr
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: A_Expr
    signature: "A_Expr *\nmakeA_Expr(A_Expr_Kind kind, List *name,\n\t\t   Node *lexpr,
      Node *rexpr, int location)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:51,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/nodes/makefuncs.c:54,1
    - Dst: makeString
      Src: /src/postgres/src/backend/nodes/makefuncs.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - kind
    - name
    - lexpr
    - rexpr
    - location
    argTypes:
    - A_Expr_Kind
    - char*
    - Node*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 59
    functionName: makeSimpleA_Expr
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 2
    functionsReached:
    - list_make1
    - makeString
    - makeNode
    linkageType: ''
    returnType: A_Expr
    signature: "A_Expr *\nmakeSimpleA_Expr(A_Expr_Kind kind, char *name,\n\t\t\t\t
      Node *lexpr, Node *rexpr, int location)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 6
    argNames:
    - varno
    - varattno
    - vartype
    - vartypmod
    - varcollid
    - varlevelsup
    argTypes:
    - int
    - AttrNumber
    - Oid
    - int32
    - Oid
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 99
    functionName: makeVar
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 18
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Var
    signature: "Var *\nmakeVar(int varno,\n\t\tAttrNumber varattno,\n\t\tOid vartype,\n\t\tint32
      vartypmod,\n\t\tOid varcollid,\n\t\tIndex varlevelsup)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeVar
      Src: /src/postgres/src/backend/nodes/makefuncs.c:110,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/makefuncs.c:112,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/makefuncs.c:113,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/makefuncs.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - varno
    - tle
    argTypes:
    - int
    - TargetEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 116
    functionName: makeVarFromTargetEntry
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 7
    functionsReached:
    - exprType
    - exprTypmod
    - exprCollation
    - makeVar
    linkageType: ''
    returnType: Var
    signature: "Var *\nmakeVarFromTargetEntry(int varno,\n\t\t\t\t\t   TargetEntry
      *tle)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: get_rel_type_id
      Src: /src/postgres/src/backend/nodes/makefuncs.c:150,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/makefuncs.c:151,1
    - Dst: ereport
      Src: /src/postgres/src/backend/nodes/makefuncs.c:152,1
    - Dst: errcode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:153,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/nodes/makefuncs.c:154,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/nodes/makefuncs.c:155,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/nodes/makefuncs.c:156,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/makefuncs.c:173,1
    - Dst: get_rel_type_id
      Src: /src/postgres/src/backend/nodes/makefuncs.c:176,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/makefuncs.c:177,1
    - Dst: ereport
      Src: /src/postgres/src/backend/nodes/makefuncs.c:178,1
    - Dst: errcode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/nodes/makefuncs.c:180,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/nodes/makefuncs.c:181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:192,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/makefuncs.c:193,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/makefuncs.c:194,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/nodes/makefuncs.c:195,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/nodes/makefuncs.c:203,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/makefuncs.c:218,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/nodes/makefuncs.c:221,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/makefuncs.c:230,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/makefuncs.c:231,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/nodes/makefuncs.c:232,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/nodes/makefuncs.c:235,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/nodes/makefuncs.c:245,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/makefuncs.c:249,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/nodes/makefuncs.c:255,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/nodes/makefuncs.c:272,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 4
    argNames:
    - rte
    - varno
    - varlevelsup
    - allowScalar
    argTypes:
    - RangeTblEntry*
    - int
    - Index
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 282
    functionName: makeWholeRowVar
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 3
    functionsReached:
    - type_is_rowtype
    - list_length
    - errcode
    - Assert
    - linitial
    - exprType
    - ereport
    - exprCollation
    - get_rel_name
    - errmsg
    - OidIsValid
    - get_rel_type_id
    - makeVar
    linkageType: ''
    returnType: Var
    signature: "Var *\nmakeWholeRowVar(RangeTblEntry *rte,\n\t\t\t\tint varno,\n\t\t\t\tIndex
      varlevelsup,\n\t\t\t\tbool allowScalar)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - expr
    - resno
    - resname
    - resjunk
    argTypes:
    - Expr*
    - AttrNumber
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 312
    functionName: makeTargetEntry
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 30
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: TargetEntry
    signature: "TargetEntry *\nmakeTargetEntry(Expr *expr,\n\t\t\t\tAttrNumber resno,\n\t\t\t\tchar
      *resname,\n\t\t\t\tbool resjunk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:326,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/makefuncs.c:326,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/makefuncs.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - src_tle
    argTypes:
    - TargetEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 329
    functionName: flatCopyTargetEntry
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 3
    functionsReached:
    - Assert
    - IsA
    - makeNode
    - memcpy
    linkageType: ''
    returnType: TargetEntry
    signature: 'TargetEntry *

      flatCopyTargetEntry(TargetEntry *src_tle)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fromlist
    - quals
    argTypes:
    - List*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 343
    functionName: makeFromExpr
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 4
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: FromExpr
    signature: 'FromExpr *

      makeFromExpr(List *fromlist, Node *quals)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:358,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/nodes/makefuncs.c:366,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/nodes/makefuncs.c:366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 7
    argNames:
    - consttype
    - consttypmod
    - constcollid
    - constlen
    - constvalue
    - constisnull
    - constbyval
    argTypes:
    - Oid
    - int32
    - Oid
    - int
    - Datum
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 378
    functionName: makeConst
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 10
    functionsReached:
    - PointerGetDatum
    - makeNode
    - PG_DETOAST_DATUM
    linkageType: ''
    returnType: Const
    signature: "Const *\nmakeConst(Oid consttype,\n\t\t  int32 consttypmod,\n\t\t
      \ Oid constcollid,\n\t\t  int constlen,\n\t\t  Datum constvalue,\n\t\t  bool
      constisnull,\n\t\t  bool constbyval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/nodes/makefuncs.c:393,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/nodes/makefuncs.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - consttype
    - consttypmod
    - constcollid
    argTypes:
    - Oid
    - int32
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 401
    functionName: makeNullConst
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 6
    functionsReached:
    - makeConst
    - get_typlenbyval
    linkageType: ''
    returnType: Const
    signature: 'Const *

      makeNullConst(Oid consttype, int32 consttypmod, Oid constcollid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeConst
      Src: /src/postgres/src/backend/nodes/makefuncs.c:411,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/nodes/makefuncs.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - isnull
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 407
    functionDepth: 2
    functionLinenumber: 407
    functionLinenumberEnd: 413
    functionName: makeBoolConst
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 9
    functionsReached:
    - makeConst
    - BoolGetDatum
    linkageType: ''
    returnType: Node
    signature: 'Node *

      makeBoolConst(bool value, bool isnull)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - boolop
    - args
    - location
    argTypes:
    - BoolExprType
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 429
    functionName: makeBoolExpr
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      makeBoolExpr(BoolExprType boolop, List *args, int location)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:440,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/nodes/makefuncs.c:442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - aliasname
    - colnames
    argTypes:
    - char*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 446
    functionName: makeAlias
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 4
    functionsReached:
    - pstrdup
    - makeNode
    linkageType: ''
    returnType: Alias
    signature: 'Alias *

      makeAlias(const char *aliasname, List *colnames)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - arg
    - rtype
    - rtypmod
    - rcollid
    - rformat
    argTypes:
    - Expr*
    - Oid
    - int32
    - Oid
    - CoercionForm
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 466
    functionName: makeRelabelType
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: RelabelType
    signature: "RelabelType *\nmakeRelabelType(Expr *arg, Oid rtype, int32 rtypmod,
      Oid rcollid,\n\t\t\t\tCoercionForm rformat)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - schemaname
    - relname
    - location
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 486
    functionName: makeRangeVar
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 7
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: RangeVar
    signature: 'RangeVar *

      makeRangeVar(char *schemaname, char *relname, int location)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:497,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/nodes/makefuncs.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - colname
    argTypes:
    - String*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 510
    functionName: makeNotNullConstraint
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - list_make1
    - makeNode
    linkageType: ''
    returnType: Constraint
    signature: 'Constraint *

      makeNotNullConstraint(String *colname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeTypeNameFromNameList
      Src: /src/postgres/src/backend/nodes/makefuncs.c:521,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/nodes/makefuncs.c:521,1
    - Dst: makeString
      Src: /src/postgres/src/backend/nodes/makefuncs.c:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - typnam
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 518
    functionDepth: 2
    functionLinenumber: 518
    functionLinenumberEnd: 522
    functionName: makeTypeName
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 1
    functionsReached:
    - list_make1
    - makeString
    - makeTypeNameFromNameList
    linkageType: ''
    returnType: TypeName
    signature: 'TypeName *

      makeTypeName(char *typnam)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - names
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 540
    functionName: makeTypeNameFromNameList
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 2
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: TypeName
    signature: 'TypeName *

      makeTypeNameFromNameList(List *names)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - typeOid
    - typmod
    argTypes:
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 555
    functionName: makeTypeNameFromOid
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: TypeName
    signature: 'TypeName *

      makeTypeNameFromOid(Oid typeOid, int32 typmod)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:567,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/nodes/makefuncs.c:569,1
    - Dst: makeTypeNameFromOid
      Src: /src/postgres/src/backend/nodes/makefuncs.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 4
    argNames:
    - colname
    - typeOid
    - typmod
    - collOid
    argTypes:
    - char*
    - Oid
    - int32
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 564
    functionDepth: 2
    functionLinenumber: 564
    functionLinenumberEnd: 585
    functionName: makeColumnDef
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeTypeNameFromOid
    - pstrdup
    - makeNode
    linkageType: ''
    returnType: ColumnDef
    signature: 'ColumnDef *

      makeColumnDef(const char *colname, Oid typeOid, int32 typmod, Oid collOid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 6
    argNames:
    - funcid
    - rettype
    - args
    - funccollid
    - inputcollid
    - fformat
    argTypes:
    - Oid
    - Oid
    - List*
    - Oid
    - Oid
    - CoercionForm
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 611
    functionName: makeFuncExpr
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: FuncExpr
    signature: "FuncExpr *\nmakeFuncExpr(Oid funcid, Oid rettype, List *args,\n\t\t\t
      Oid funccollid, Oid inputcollid, CoercionForm fformat)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - location
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 627
    functionName: makeStringConst
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Node
    signature: 'Node *

      makeStringConst(char *str, int location)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - name
    - arg
    - location
    argTypes:
    - char*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 648
    functionName: makeDefElem
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: DefElem
    signature: 'DefElem *

      makeDefElem(char *name, Node *arg, int location)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - nameSpace
    - name
    - arg
    - defaction
    - location
    argTypes:
    - char*
    - char*
    - Node*
    - DefElemAction
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 667
    functionName: makeDefElemExtended
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: DefElem
    signature: "DefElem *\nmakeDefElemExtended(char *nameSpace, char *name, Node *arg,\n\t\t\t\t\tDefElemAction
      defaction, int location)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - name
    - args
    - funcformat
    - location
    argTypes:
    - List*
    - List*
    - CoercionForm
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 692
    functionName: makeFuncCall
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 2
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: FuncCall
    signature: 'FuncCall *

      makeFuncCall(List *name, List *args, CoercionForm funcformat, int location)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:705,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/nodes/makefuncs.c:714,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/nodes/makefuncs.c:716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 7
    argNames:
    - opno
    - opresulttype
    - opretset
    - leftop
    - rightop
    - opcollid
    - inputcollid
    argTypes:
    - Oid
    - Oid
    - bool
    - Expr*
    - Expr*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 700
    functionDepth: 1
    functionLinenumber: 700
    functionLinenumberEnd: 719
    functionName: make_opclause
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 9
    functionsReached:
    - list_make1
    - list_make2
    - makeNode
    linkageType: ''
    returnType: Expr
    signature: "Expr *\nmake_opclause(Oid opno, Oid opresulttype, bool opretset,\n\t\t\t
      \ Expr *leftop, Expr *rightop,\n\t\t\t  Oid opcollid, Oid inputcollid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - andclauses
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 735
    functionName: make_andclause
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 8
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      make_andclause(List *andclauses)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - orclauses
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 751
    functionName: make_orclause
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 9
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      make_orclause(List *orclauses)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:761,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/nodes/makefuncs.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - notclause
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 767
    functionName: make_notclause
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 2
    functionsReached:
    - list_make1
    - makeNode
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      make_notclause(Expr *notclause)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: make_andclause
      Src: /src/postgres/src/backend/nodes/makefuncs.c:786,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/nodes/makefuncs.c:786,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - qual1
    - qual2
    argTypes:
    - Node*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 779
    functionDepth: 2
    functionLinenumber: 779
    functionLinenumberEnd: 787
    functionName: make_and_qual
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 2
    functionsReached:
    - list_make2
    - make_andclause
    linkageType: ''
    returnType: Node
    signature: 'Node *

      make_and_qual(Node *qual1, Node *qual2)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/nodes/makefuncs.c:802,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/makefuncs.c:803,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/makefuncs.c:804,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/nodes/makefuncs.c:806,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - andclauses
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 798
    functionDepth: 3
    functionLinenumber: 798
    functionLinenumberEnd: 807
    functionName: make_ands_explicit
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 7
    functionsReached:
    - list_length
    - linitial
    - makeBoolConst
    - make_andclause
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      make_ands_explicit(List *andclauses)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_andclause
      Src: /src/postgres/src/backend/nodes/makefuncs.c:819,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/makefuncs.c:821,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/nodes/makefuncs.c:823,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/nodes/makefuncs.c:826,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 809
    functionDepth: 2
    functionLinenumber: 809
    functionLinenumberEnd: 827
    functionName: make_ands_implicit
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 10
    functionsReached:
    - list_make1
    - is_andclause
    - DatumGetBool
    - IsA
    linkageType: ''
    returnType: List
    signature: 'List *

      make_ands_implicit(Expr *clause)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:843,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:855,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 11
    argNames:
    - numattrs
    - numkeyattrs
    - amoid
    - expressions
    - predicates
    - unique
    - nulls_not_distinct
    - isready
    - concurrent
    - summarizing
    - withoutoverlaps
    argTypes:
    - int
    - int
    - Oid
    - List*
    - List*
    - bool
    - bool
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 833
    functionDepth: 1
    functionLinenumber: 833
    functionLinenumberEnd: 885
    functionName: makeIndexInfo
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - makeNode
    linkageType: ''
    returnType: IndexInfo
    signature: "IndexInfo *\nmakeIndexInfo(int numattrs, int numkeyattrs, Oid amoid,
      List *expressions,\n\t\t\t  List *predicates, bool unique, bool nulls_not_distinct,\n\t\t\t
      \ bool isready, bool concurrent, bool summarizing,\n\t\t\t  bool withoutoverlaps)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - kind
    - content
    - location
    argTypes:
    - GroupingSetKind
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 891
    functionDepth: 1
    functionLinenumber: 891
    functionLinenumberEnd: 900
    functionName: makeGroupingSet
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: GroupingSet
    signature: 'GroupingSet *

      makeGroupingSet(GroupingSetKind kind, List *content, int location)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - relation
    - oid
    - va_cols
    argTypes:
    - RangeVar*
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 915
    functionName: makeVacuumRelation
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: VacuumRelation
    signature: 'VacuumRelation *

      makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - type
    - encoding
    - location
    argTypes:
    - JsonFormatType
    - JsonEncoding
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 931
    functionName: makeJsonFormat
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: JsonFormat
    signature: 'JsonFormat *

      makeJsonFormat(JsonFormatType type, JsonEncoding encoding, int location)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - raw_expr
    - formatted_expr
    - format
    argTypes:
    - Expr*
    - Expr*
    - JsonFormat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 948
    functionName: makeJsonValueExpr
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 1
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: JsonValueExpr
    signature: "JsonValueExpr *\nmakeJsonValueExpr(Expr *raw_expr, Expr *formatted_expr,\n\t\t\t\t
      \ JsonFormat *format)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - btype
    - expr
    - location
    argTypes:
    - JsonBehaviorType
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 964
    functionName: makeJsonBehavior
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: JsonBehavior
    signature: 'JsonBehavior *

      makeJsonBehavior(JsonBehaviorType btype, Node *expr, int location)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:973,1
    - Dst: castNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - Node*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 979
    functionName: makeJsonKeyValue
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - castNode
    - makeNode
    linkageType: ''
    returnType: Node
    signature: 'Node *

      makeJsonKeyValue(Node *key, Node *value)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 6
    argNames:
    - expr
    - format
    - item_type
    - unique_keys
    - exprBaseType
    - location
    argTypes:
    - Node*
    - JsonFormat*
    - JsonValueType
    - bool
    - Oid
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 1001
    functionName: makeJsonIsPredicate
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - makeNode
    linkageType: ''
    returnType: Node
    signature: "Node *\nmakeJsonIsPredicate(Node *expr, JsonFormat *format, JsonValueType
      item_type,\n\t\t\t\t\tbool unique_keys, Oid exprBaseType, int location)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1011,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1013,1
    - Dst: makeStringConst
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1014,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1016,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - string
    - name
    - string_location
    - name_location
    argTypes:
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1007
    functionDepth: 2
    functionLinenumber: 1007
    functionLinenumberEnd: 1022
    functionName: makeJsonTablePathSpec
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - makeStringConst
    - pstrdup
    - makeNode
    linkageType: ''
    returnType: JsonTablePathSpec
    signature: "JsonTablePathSpec *\nmakeJsonTablePathSpec(char *string, char *name,
      int string_location,\n\t\t\t\t\t  int name_location)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1031,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1033,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pathvalue
    - pathname
    argTypes:
    - Const*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1028
    functionDepth: 1
    functionLinenumber: 1028
    functionLinenumberEnd: 1038
    functionName: makeJsonTablePath
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsA
    - makeNode
    linkageType: ''
    returnType: JsonTablePath
    signature: 'JsonTablePath *

      makeJsonTablePath(Const *pathvalue, char *pathname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nodelabel
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: WRITE_NODE_TYPE
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_NODE_TYPE(nodelabel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: WRITE_INT_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_INT_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: WRITE_UINT_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_UINT_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: WRITE_INT64_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_INT64_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: WRITE_UINT64_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_UINT64_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: WRITE_OID_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_OID_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: WRITE_LONG_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_LONG_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: WRITE_CHAR_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_CHAR_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - enumtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: WRITE_ENUM_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_ENUM_FIELD(fldname, enumtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: WRITE_FLOAT_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_FLOAT_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: WRITE_BOOL_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_BOOL_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: WRITE_STRING_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_STRING_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: WRITE_LOCATION_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_LOCATION_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: WRITE_NODE_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_NODE_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: WRITE_BITMAPSET_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_BITMAPSET_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: WRITE_NODE_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_NODE_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: WRITE_ATTRNUMBER_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_ATTRNUMBER_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: WRITE_OID_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_OID_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: WRITE_INDEX_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_INDEX_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: WRITE_INT_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_INT_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: WRITE_BOOL_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_BOOL_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 143
    functionName: booltostr
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: booltostr(x)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:159,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:164,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/nodes/outfuncs.c:176,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/nodes/outfuncs.c:178,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:179,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:186,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:187,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 16
    argCount: 2
    argNames:
    - str
    - s
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 189
    functionName: outToken
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - appendStringInfoString
    - isdigit
    linkageType: ''
    returnType: void
    signature: void outToken(StringInfo str, const char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:203,1
    - Dst: outToken
      Src: /src/postgres/src/backend/nodes/outfuncs.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - str
    - c
    argTypes:
    - StringInfo
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 195
    functionDepth: 3
    functionLinenumber: 195
    functionLinenumberEnd: 211
    functionName: outChar
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - outToken
    linkageType: ''
    returnType: void
    signature: void outChar(StringInfo str, char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: double_to_shortest_decimal_buf
      Src: /src/postgres/src/backend/nodes/outfuncs.c:221,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - str
    - d
    argTypes:
    - StringInfo
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 216
    functionDepth: 4
    functionLinenumber: 216
    functionLinenumberEnd: 223
    functionName: outDouble
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - double_to_shortest_decimal_buf
    linkageType: ''
    returnType: void
    signature: void outDouble(StringInfo str, double d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - fnname
    - ','
    - datatype
    - ','
    - fmtstr
    - ','
    - convfunc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 247
    functionName: WRITE_SCALAR_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITE_SCALAR_ARRAY(fnname, datatype, fmtstr, convfunc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:301,1
    - Dst: outNode
      Src: /src/postgres/src/backend/nodes/outfuncs.c:303,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/outfuncs.c:303,1
    - Dst: lnext
      Src: /src/postgres/src/backend/nodes/outfuncs.c:304,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:305,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:307,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:308,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/outfuncs.c:308,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:309,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:310,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/outfuncs.c:310,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:311,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:312,1
    - Dst: lfirst_xid
      Src: /src/postgres/src/backend/nodes/outfuncs.c:312,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/outfuncs.c:314,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 316
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 338
    functionsReached:
    - outNode
    - elog
    - lfirst_int
    - appendStringInfo
    - lnext
    - lfirst_xid
    - lfirst
    - lfirst_oid
    - IsA
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void foreach(lc, node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:335,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:336,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/nodes/outfuncs.c:338,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:339,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - str
    - bms
    argTypes:
    - StringInfo
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 341
    functionName: outBitmapset
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - bms_next_member
    - appendStringInfo
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void outBitmapset(StringInfo str, const Bitmapset *bms)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: datumGetSize
      Src: /src/postgres/src/backend/nodes/outfuncs.c:352,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:357,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:359,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:360,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/nodes/outfuncs.c:364,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:366,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:369,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:371,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:372,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - str
    - value
    - typlen
    - typbyval
    argTypes:
    - StringInfo
    - Datum
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 375
    functionName: outDatum
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - datumGetSize
    - appendStringInfoChar
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void outDatum(StringInfo str, Datum value, int typlen, bool typbyval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:389,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:391,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:392,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:393,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:394,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:395,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:396,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:397,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:399,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:401,1
    - Dst: outDatum
      Src: /src/postgres/src/backend/nodes/outfuncs.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - Const*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 386
    functionDepth: 3
    functionLinenumber: 386
    functionLinenumberEnd: 404
    functionName: _outConst
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - WRITE_NODE_TYPE
    - outDatum
    - WRITE_OID_FIELD
    - appendStringInfoString
    - WRITE_LOCATION_FIELD
    - WRITE_BOOL_FIELD
    - WRITE_INT_FIELD
    linkageType: ''
    returnType: void
    signature: void _outConst(StringInfo str, const Const *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:411,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:426,1
    - Dst: outToken
      Src: /src/postgres/src/backend/nodes/outfuncs.c:427,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:429,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:430,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - BoolExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 406
    functionDepth: 3
    functionLinenumber: 406
    functionLinenumberEnd: 431
    functionName: _outBoolExpr
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - WRITE_NODE_TYPE
    - appendStringInfoString
    - outToken
    - WRITE_NODE_FIELD
    - WRITE_LOCATION_FIELD
    linkageType: ''
    returnType: void
    signature: void _outBoolExpr(StringInfo str, const BoolExpr *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:436,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:438,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:439,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:440,1
    - Dst: WRITE_ATTRNUMBER_ARRAY
      Src: /src/postgres/src/backend/nodes/outfuncs.c:441,1
    - Dst: WRITE_ATTRNUMBER_ARRAY
      Src: /src/postgres/src/backend/nodes/outfuncs.c:442,1
    - Dst: WRITE_OID_ARRAY
      Src: /src/postgres/src/backend/nodes/outfuncs.c:443,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:444,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:445,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:446,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:447,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:449,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:451,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:452,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:454,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/outfuncs.c:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - ForeignKeyOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 433
    functionDepth: 2
    functionLinenumber: 433
    functionLinenumberEnd: 455
    functionName: _outForeignKeyOptInfo
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - WRITE_NODE_TYPE
    - appendStringInfo
    - appendStringInfoString
    - WRITE_OID_ARRAY
    - WRITE_ATTRNUMBER_ARRAY
    - WRITE_UINT_FIELD
    - list_length
    - WRITE_INT_FIELD
    linkageType: ''
    returnType: void
    signature: void _outForeignKeyOptInfo(StringInfo str, const ForeignKeyOptInfo
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:467,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:469,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:470,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:471,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:472,1
    - Dst: WRITE_NODE_ARRAY
      Src: /src/postgres/src/backend/nodes/outfuncs.c:473,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:474,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:476,1
    - Dst: WRITE_BITMAPSET_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:477,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:478,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:479,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:480,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:481,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:482,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 484
    functionName: _outEquivalenceClass
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - WRITE_NODE_TYPE
    - WRITE_OID_FIELD
    - WRITE_NODE_FIELD
    - WRITE_BOOL_FIELD
    - WRITE_NODE_ARRAY
    - WRITE_BITMAPSET_FIELD
    - WRITE_UINT_FIELD
    - WRITE_INT_FIELD
    linkageType: ''
    returnType: void
    signature: void _outEquivalenceClass(StringInfo str, const EquivalenceClass *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetExtensibleNodeMethods
      Src: /src/postgres/src/backend/nodes/outfuncs.c:491,1
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:493,1
    - Dst: WRITE_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:495,1
    - Dst: ExtensibleNodeMethods*::nodeOut
      Src: /src/postgres/src/backend/nodes/outfuncs.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - ExtensibleNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 499
    functionName: _outExtensibleNode
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - GetExtensibleNodeMethods
    - WRITE_NODE_TYPE
    - ExtensibleNodeMethods*::nodeOut
    - WRITE_STRING_FIELD
    linkageType: ''
    returnType: void
    signature: void _outExtensibleNode(StringInfo str, const ExtensibleNode *node)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:504,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:506,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:507,1
    - Dst: WRITE_ENUM_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:508,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:513,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:514,1
    - Dst: WRITE_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:515,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:516,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:517,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:518,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:521,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:522,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:524,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:525,1
    - Dst: WRITE_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:526,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:527,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:528,1
    - Dst: WRITE_ENUM_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:531,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:532,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:533,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:534,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:535,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:536,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:539,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:540,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:543,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:546,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:547,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:548,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:549,1
    - Dst: WRITE_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:552,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:553,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:554,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:555,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:556,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:557,1
    - Dst: WRITE_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:560,1
    - Dst: WRITE_FLOAT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:561,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:562,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:563,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:564,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:566,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:569,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:570,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:572,1
    - Dst: WRITE_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:573,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:574,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:575,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:581,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/outfuncs.c:584,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:588,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:589,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:590,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 80
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 591
    functionName: _outRangeTblEntry
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - WRITE_NODE_TYPE
    - WRITE_OID_FIELD
    - WRITE_ENUM_FIELD
    - WRITE_NODE_FIELD
    - WRITE_BOOL_FIELD
    - WRITE_FLOAT_FIELD
    - WRITE_UINT_FIELD
    - WRITE_STRING_FIELD
    - WRITE_INT_FIELD
    - WRITE_CHAR_FIELD
    linkageType: ''
    returnType: void
    signature: void _outRangeTblEntry(StringInfo str, const RangeTblEntry *node)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:596,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:601,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:604,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:605,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:608,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:609,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:612,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:613,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:616,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:617,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:620,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:621,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:624,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:625,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:628,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:629,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:632,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:633,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:636,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:637,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:640,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:641,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:644,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:645,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:648,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:649,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:652,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:653,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/outfuncs.c:656,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:660,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:661,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:662,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:663,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:664,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 67
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - A_Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 665
    functionName: _outA_Expr
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - WRITE_NODE_TYPE
    - appendStringInfoString
    - WRITE_NODE_FIELD
    - WRITE_LOCATION_FIELD
    linkageType: ''
    returnType: void
    signature: void _outA_Expr(StringInfo str, const A_Expr *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - Integer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 667
    functionDepth: 2
    functionLinenumber: 667
    functionLinenumberEnd: 671
    functionName: _outInteger
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void _outInteger(StringInfo str, const Integer *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - Float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 673
    functionDepth: 2
    functionLinenumber: 673
    functionLinenumberEnd: 681
    functionName: _outFloat
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void _outFloat(StringInfo str, const Float *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - Boolean*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 683
    functionDepth: 2
    functionLinenumber: 683
    functionLinenumberEnd: 687
    functionName: _outBoolean
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void _outBoolean(StringInfo str, const Boolean *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:697,1
    - Dst: outToken
      Src: /src/postgres/src/backend/nodes/outfuncs.c:699,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - String*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 689
    functionDepth: 3
    functionLinenumber: 689
    functionLinenumberEnd: 701
    functionName: _outString
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - outToken
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void _outString(StringInfo str, const String *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/outfuncs.c:711,1
    - Dst: outToken
      Src: /src/postgres/src/backend/nodes/outfuncs.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - BitString*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 703
    functionDepth: 3
    functionLinenumber: 703
    functionLinenumberEnd: 713
    functionName: _outBitString
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - outToken
    linkageType: ''
    returnType: void
    signature: void _outBitString(StringInfo str, const BitString *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:718,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:721,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:724,1
    - Dst: outNode
      Src: /src/postgres/src/backend/nodes/outfuncs.c:725,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:727,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - A_Const*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 728
    functionName: _outA_Const
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - outNode
    - WRITE_NODE_TYPE
    - appendStringInfoString
    - WRITE_LOCATION_FIELD
    linkageType: ''
    returnType: void
    signature: void _outA_Const(StringInfo str, const A_Const *node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/outfuncs.c:739,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:742,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:743,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:743,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:743,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:744,1
    - Dst: _outList
      Src: /src/postgres/src/backend/nodes/outfuncs.c:745,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:747,1
    - Dst: _outInteger
      Src: /src/postgres/src/backend/nodes/outfuncs.c:748,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:749,1
    - Dst: _outFloat
      Src: /src/postgres/src/backend/nodes/outfuncs.c:750,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:751,1
    - Dst: _outBoolean
      Src: /src/postgres/src/backend/nodes/outfuncs.c:752,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:753,1
    - Dst: _outString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:754,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:755,1
    - Dst: _outBitString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:756,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:757,1
    - Dst: outBitmapset
      Src: /src/postgres/src/backend/nodes/outfuncs.c:758,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:761,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/outfuncs.c:762,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/outfuncs.c:772,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/outfuncs.c:773,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:776,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 2
    argNames:
    - str
    - obj
    argTypes:
    - StringInfo
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 735
    functionDepth: 4
    functionLinenumber: 735
    functionLinenumberEnd: 778
    functionName: outNode
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 2
    functionsReached:
    - elog
    - _outInteger
    - appendStringInfoString
    - _outBoolean
    - check_stack_depth
    - _outList
    - outBitmapset
    - _outBitString
    - _outFloat
    - IsA
    - _outString
    - nodeTag
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void outNode(StringInfo str, const void *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:799,1
    - Dst: outNode
      Src: /src/postgres/src/backend/nodes/outfuncs.c:800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - obj
    - write_loc_fields
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 789
    functionDepth: 5
    functionLinenumber: 789
    functionLinenumberEnd: 805
    functionName: nodeToStringInternal
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - outNode
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      nodeToStringInternal(const void *obj, bool write_loc_fields)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nodeToStringInternal
      Src: /src/postgres/src/backend/nodes/outfuncs.c:813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - obj
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 810
    functionDepth: 6
    functionLinenumber: 810
    functionLinenumberEnd: 814
    functionName: nodeToString
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 1
    functionsReached:
    - nodeToStringInternal
    linkageType: ''
    returnType: char
    signature: 'char *

      nodeToString(const void *obj)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nodeToStringInternal
      Src: /src/postgres/src/backend/nodes/outfuncs.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - obj
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 816
    functionDepth: 6
    functionLinenumber: 816
    functionLinenumberEnd: 820
    functionName: nodeToStringWithLocations
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 4
    functionsReached:
    - nodeToStringInternal
    linkageType: ''
    returnType: char
    signature: 'char *

      nodeToStringWithLocations(const void *obj)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:833,1
    - Dst: outBitmapset
      Src: /src/postgres/src/backend/nodes/outfuncs.c:834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - bms
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 827
    functionDepth: 3
    functionLinenumber: 827
    functionLinenumberEnd: 836
    functionName: bmsToString
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 2
    functionsReached:
    - initStringInfo
    - outBitmapset
    linkageType: ''
    returnType: char
    signature: 'char *

      bmsToString(const Bitmapset *bms)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: IsPointerList
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsPointerList(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: IsIntegerList
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsIntegerList(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: IsOidList
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsOidList(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: IsXidList
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsXidList(l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:70,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:71,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:72,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:74,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 78
    functionName: check_list_invariants
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void check_list_invariants(const List *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: check_list_invariants
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_list_invariants(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:96,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/nodes/list.c:126,1
    - Dst: Max
      Src: /src/postgres/src/backend/nodes/list.c:126,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/list.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - type
    - min_size
    argTypes:
    - NodeTag
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 145
    functionName: new_list
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - Max
    - pg_nextpower2_32
    - palloc
    linkageType: ''
    returnType: List
    signature: 'List *

      new_list(NodeTag type, int min_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:159,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/nodes/list.c:169,1
    - Dst: Max
      Src: /src/postgres/src/backend/nodes/list.c:169,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/nodes/list.c:186,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/nodes/list.c:186,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:188,1
    - Dst: wipe_mem
      Src: /src/postgres/src/backend/nodes/list.c:198,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/backend/nodes/list.c:201,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/nodes/list.c:209,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/nodes/list.c:219,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/nodes/list.c:219,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:221,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/list.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - list
    - min_size
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 154
    functionDepth: 3
    functionLinenumber: 154
    functionLinenumberEnd: 229
    functionName: enlarge_list
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkContext
    - memcpy
    - MemoryContextAlloc
    - Assert
    - pfree
    - VALGRIND_MAKE_MEM_NOACCESS
    - repalloc
    - Max
    - wipe_mem
    - pg_nextpower2_32
    linkageType: ''
    returnType: void
    signature: void enlarge_list(List *list, int min_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:238,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - t
    - datum1
    argTypes:
    - NodeTag
    - ListCell
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 235
    functionDepth: 4
    functionLinenumber: 235
    functionLinenumberEnd: 243
    functionName: list_make1_impl
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - check_list_invariants
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      list_make1_impl(NodeTag t, ListCell datum1)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:248,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - t
    - datum1
    - datum2
    argTypes:
    - NodeTag
    - ListCell
    - ListCell
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 254
    functionName: list_make2_impl
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - check_list_invariants
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      list_make2_impl(NodeTag t, ListCell datum1, ListCell datum2)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:260,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - t
    - datum1
    - datum2
    - datum3
    argTypes:
    - NodeTag
    - ListCell
    - ListCell
    - ListCell
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 256
    functionDepth: 4
    functionLinenumber: 256
    functionLinenumberEnd: 267
    functionName: list_make3_impl
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - check_list_invariants
    - new_list
    linkageType: ''
    returnType: List
    signature: "List *\nlist_make3_impl(NodeTag t, ListCell datum1, ListCell datum2,\n\t\t\t\tListCell
      datum3)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:273,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - t
    - datum1
    - datum2
    - datum3
    - datum4
    argTypes:
    - NodeTag
    - ListCell
    - ListCell
    - ListCell
    - ListCell
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 269
    functionDepth: 4
    functionLinenumber: 269
    functionLinenumberEnd: 281
    functionName: list_make4_impl
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - check_list_invariants
    - new_list
    linkageType: ''
    returnType: List
    signature: "List *\nlist_make4_impl(NodeTag t, ListCell datum1, ListCell datum2,\n\t\t\t\tListCell
      datum3, ListCell datum4)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:287,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - t
    - datum1
    - datum2
    - datum3
    - datum4
    - datum5
    argTypes:
    - NodeTag
    - ListCell
    - ListCell
    - ListCell
    - ListCell
    - ListCell
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 283
    functionDepth: 4
    functionLinenumber: 283
    functionLinenumberEnd: 296
    functionName: list_make5_impl
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - check_list_invariants
    - new_list
    linkageType: ''
    returnType: List
    signature: "List *\nlist_make5_impl(NodeTag t, ListCell datum1, ListCell datum2,\n\t\t\t\tListCell
      datum3, ListCell datum4, ListCell datum5)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: enlarge_list
      Src: /src/postgres/src/backend/nodes/list.c:309,1
    - Dst: memmove
      Src: /src/postgres/src/backend/nodes/list.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 304
    functionDepth: 4
    functionLinenumber: 304
    functionLinenumberEnd: 314
    functionName: new_head_cell
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - enlarge_list
    - memmove
    linkageType: ''
    returnType: void
    signature: void new_head_cell(List *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: enlarge_list
      Src: /src/postgres/src/backend/nodes/list.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 322
    functionDepth: 4
    functionLinenumber: 322
    functionLinenumberEnd: 329
    functionName: new_tail_cell
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - enlarge_list
    linkageType: ''
    returnType: void
    signature: void new_tail_cell(List *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:341,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:341,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:344,1
    - Dst: new_tail_cell
      Src: /src/postgres/src/backend/nodes/list.c:346,1
    - Dst: llast
      Src: /src/postgres/src/backend/nodes/list.c:348,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:349,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 5
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: lappend
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 371
    functionsReached:
    - Assert
    - check_list_invariants
    - new_tail_cell
    - llast
    - IsPointerList
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      lappend(List *list, void *datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:359,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:359,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:362,1
    - Dst: new_tail_cell
      Src: /src/postgres/src/backend/nodes/list.c:364,1
    - Dst: llast_int
      Src: /src/postgres/src/backend/nodes/list.c:366,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 356
    functionDepth: 5
    functionLinenumber: 356
    functionLinenumberEnd: 369
    functionName: lappend_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 27
    functionsReached:
    - Assert
    - check_list_invariants
    - IsIntegerList
    - new_tail_cell
    - llast_int
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      lappend_int(List *list, int datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:377,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:377,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:380,1
    - Dst: new_tail_cell
      Src: /src/postgres/src/backend/nodes/list.c:382,1
    - Dst: llast_oid
      Src: /src/postgres/src/backend/nodes/list.c:384,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 374
    functionDepth: 5
    functionLinenumber: 374
    functionLinenumberEnd: 387
    functionName: lappend_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 25
    functionsReached:
    - Assert
    - IsOidList
    - llast_oid
    - check_list_invariants
    - new_tail_cell
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      lappend_oid(List *list, Oid datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:395,1
    - Dst: IsXidList
      Src: /src/postgres/src/backend/nodes/list.c:395,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:398,1
    - Dst: new_tail_cell
      Src: /src/postgres/src/backend/nodes/list.c:400,1
    - Dst: llast_xid
      Src: /src/postgres/src/backend/nodes/list.c:402,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 392
    functionDepth: 5
    functionLinenumber: 392
    functionLinenumberEnd: 405
    functionName: lappend_xid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - IsXidList
    - Assert
    - check_list_invariants
    - new_tail_cell
    - llast_xid
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      lappend_xid(List *list, TransactionId datum)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:417,1
    - Dst: enlarge_list
      Src: /src/postgres/src/backend/nodes/list.c:421,1
    - Dst: memmove
      Src: /src/postgres/src/backend/nodes/list.c:424,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - list
    - pos
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 414
    functionDepth: 4
    functionLinenumber: 414
    functionLinenumberEnd: 429
    functionName: insert_new_cell
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - enlarge_list
    - memmove
    linkageType: ''
    returnType: ListCell
    signature: 'ListCell *

      insert_new_cell(List *list, int pos)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:443,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/nodes/list.c:444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:446,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:446,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:447,1
    - Dst: insert_new_cell
      Src: /src/postgres/src/backend/nodes/list.c:447,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - list
    - pos
    - datum
    argTypes:
    - List*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 438
    functionDepth: 5
    functionLinenumber: 438
    functionLinenumberEnd: 450
    functionName: list_insert_nth
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 3
    functionsReached:
    - Assert
    - check_list_invariants
    - lfirst
    - list_make1
    - IsPointerList
    - insert_new_cell
    linkageType: ''
    returnType: List
    signature: 'List *

      list_insert_nth(List *list, int pos, void *datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:457,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/nodes/list.c:458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:460,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:460,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:461,1
    - Dst: insert_new_cell
      Src: /src/postgres/src/backend/nodes/list.c:461,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - list
    - pos
    - datum
    argTypes:
    - List*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 452
    functionDepth: 5
    functionLinenumber: 452
    functionLinenumberEnd: 464
    functionName: list_insert_nth_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - lfirst_int
    - Assert
    - check_list_invariants
    - IsIntegerList
    - list_make1_int
    - insert_new_cell
    linkageType: ''
    returnType: List
    signature: 'List *

      list_insert_nth_int(List *list, int pos, int datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:471,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/nodes/list.c:472,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:474,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:474,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:475,1
    - Dst: insert_new_cell
      Src: /src/postgres/src/backend/nodes/list.c:475,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - list
    - pos
    - datum
    argTypes:
    - List*
    - int
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 466
    functionDepth: 5
    functionLinenumber: 466
    functionLinenumberEnd: 478
    functionName: list_insert_nth_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsOidList
    - check_list_invariants
    - list_make1_oid
    - lfirst_oid
    - insert_new_cell
    linkageType: ''
    returnType: List
    signature: 'List *

      list_insert_nth_oid(List *list, int pos, Oid datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:497,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:497,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:500,1
    - Dst: new_head_cell
      Src: /src/postgres/src/backend/nodes/list.c:502,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/list.c:504,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - datum
    - list
    argTypes:
    - void*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 494
    functionDepth: 5
    functionLinenumber: 494
    functionLinenumberEnd: 507
    functionName: lcons
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 18
    functionsReached:
    - Assert
    - linitial
    - check_list_invariants
    - IsPointerList
    - new_head_cell
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      lcons(void *datum, List *list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:515,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:515,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:518,1
    - Dst: new_head_cell
      Src: /src/postgres/src/backend/nodes/list.c:520,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/nodes/list.c:522,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - datum
    - list
    argTypes:
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 512
    functionDepth: 5
    functionLinenumber: 512
    functionLinenumberEnd: 525
    functionName: lcons_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - check_list_invariants
    - IsIntegerList
    - linitial_int
    - new_head_cell
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      lcons_int(int datum, List *list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:533,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:533,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:536,1
    - Dst: new_head_cell
      Src: /src/postgres/src/backend/nodes/list.c:538,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/nodes/list.c:540,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:541,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - datum
    - list
    argTypes:
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 530
    functionDepth: 5
    functionLinenumber: 530
    functionLinenumberEnd: 543
    functionName: lcons_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsOidList
    - check_list_invariants
    - linitial_oid
    - new_head_cell
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      lcons_oid(Oid datum, List *list)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:566,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:570,1
    - Dst: enlarge_list
      Src: /src/postgres/src/backend/nodes/list.c:575,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:578,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:582,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 560
    functionDepth: 4
    functionLinenumber: 560
    functionLinenumberEnd: 584
    functionName: list_concat
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 66
    functionsReached:
    - memcpy
    - Assert
    - enlarge_list
    - check_list_invariants
    - list_copy
    linkageType: ''
    returnType: List
    signature: 'List *

      list_concat(List *list1, const List *list2)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:604,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:608,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:611,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:612,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:614,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:617,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 597
    functionDepth: 4
    functionLinenumber: 597
    functionLinenumberEnd: 619
    functionName: list_concat_copy
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 12
    functionsReached:
    - memcpy
    - Assert
    - check_list_invariants
    - list_copy
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      list_concat_copy(const List *list1, const List *list2)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/list.c:637,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - list
    - new_size
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 651
    functionName: list_truncate
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 4
    functionsReached:
    - list_length
    linkageType: ''
    returnType: List
    signature: 'List *

      list_truncate(List *list, int new_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:665,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:665,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:666,1
    - Dst: equal
      Src: /src/postgres/src/backend/nodes/list.c:670,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 660
    functionDepth: 3
    functionLinenumber: 660
    functionLinenumberEnd: 675
    functionName: list_member
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 43
    functionsReached:
    - Assert
    - check_list_invariants
    - lfirst
    - equal
    - IsPointerList
    linkageType: ''
    returnType: bool
    signature: bool list_member(const List *list, const void *datum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: equal
      Src: /src/postgres/src/backend/nodes/list.c:670,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 668
    functionDepth: 3
    functionLinenumber: 668
    functionLinenumberEnd: 672
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - equal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:686,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:686,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:687,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 681
    functionDepth: 2
    functionLinenumber: 681
    functionLinenumberEnd: 696
    functionName: list_member_ptr
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 16
    functionsReached:
    - Assert
    - IsPointerList
    - check_list_invariants
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool list_member_ptr(const List *list, const void *datum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 693
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:706,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:706,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:707,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 701
    functionDepth: 2
    functionLinenumber: 701
    functionLinenumberEnd: 716
    functionName: list_member_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 4
    functionsReached:
    - Assert
    - IsIntegerList
    - check_list_invariants
    - lfirst_int
    linkageType: ''
    returnType: bool
    signature: bool list_member_int(const List *list, int datum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 713
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:726,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:726,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:727,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:731,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 721
    functionDepth: 2
    functionLinenumber: 721
    functionLinenumberEnd: 736
    functionName: list_member_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 10
    functionsReached:
    - Assert
    - IsOidList
    - lfirst_oid
    - check_list_invariants
    linkageType: ''
    returnType: bool
    signature: bool list_member_oid(const List *list, Oid datum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:731,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 733
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:746,1
    - Dst: IsXidList
      Src: /src/postgres/src/backend/nodes/list.c:746,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:747,1
    - Dst: lfirst_xid
      Src: /src/postgres/src/backend/nodes/list.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 741
    functionDepth: 2
    functionLinenumber: 741
    functionLinenumberEnd: 756
    functionName: list_member_xid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsXidList
    - lfirst_xid
    - check_list_invariants
    linkageType: ''
    returnType: bool
    signature: bool list_member_xid(const List *list, TransactionId datum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_xid
      Src: /src/postgres/src/backend/nodes/list.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 753
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lfirst_xid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:771,1
    - Dst: list_free
      Src: /src/postgres/src/backend/nodes/list.c:780,1
    - Dst: memmove
      Src: /src/postgres/src/backend/nodes/list.c:791,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/nodes/list.c:800,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/nodes/list.c:800,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:802,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:803,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/list.c:806,1
    - Dst: wipe_mem
      Src: /src/postgres/src/backend/nodes/list.c:814,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/backend/nodes/list.c:817,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:824,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 766
    functionDepth: 2
    functionLinenumber: 766
    functionLinenumberEnd: 829
    functionName: list_delete_nth_cell
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 4
    functionsReached:
    - GetMemoryChunkContext
    - memcpy
    - MemoryContextAlloc
    - check_list_invariants
    - Assert
    - list_free
    - pfree
    - memmove
    - VALGRIND_MAKE_MEM_NOACCESS
    - wipe_mem
    linkageType: ''
    returnType: List
    signature: 'List *

      list_delete_nth_cell(List *list, int n)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/nodes/list.c:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - cell
    argTypes:
    - List*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 840
    functionDepth: 3
    functionLinenumber: 840
    functionLinenumberEnd: 844
    functionName: list_delete_cell
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 1
    functionsReached:
    - list_delete_nth_cell
    linkageType: ''
    returnType: List
    signature: 'List *

      list_delete_cell(List *list, ListCell *cell)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:857,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:857,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:858,1
    - Dst: equal
      Src: /src/postgres/src/backend/nodes/list.c:862,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:862,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/nodes/list.c:863,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 852
    functionDepth: 4
    functionLinenumber: 852
    functionLinenumberEnd: 868
    functionName: list_delete
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 14
    functionsReached:
    - list_delete_cell
    - Assert
    - check_list_invariants
    - lfirst
    - equal
    - IsPointerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_delete(List *list, void *datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: equal
      Src: /src/postgres/src/backend/nodes/list.c:862,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:862,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/nodes/list.c:863,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 860
    functionDepth: 4
    functionLinenumber: 860
    functionLinenumberEnd: 864
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - equal
    - lfirst
    - list_delete_cell
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:876,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:876,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:877,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:881,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/nodes/list.c:882,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 871
    functionDepth: 4
    functionLinenumber: 871
    functionLinenumberEnd: 887
    functionName: list_delete_ptr
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 2
    functionsReached:
    - list_delete_cell
    - Assert
    - check_list_invariants
    - lfirst
    - IsPointerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_delete_ptr(List *list, void *datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:881,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/nodes/list.c:882,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 879
    functionDepth: 4
    functionLinenumber: 879
    functionLinenumberEnd: 883
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lfirst
    - list_delete_cell
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:895,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:895,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:896,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:900,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/nodes/list.c:901,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 890
    functionDepth: 4
    functionLinenumber: 890
    functionLinenumberEnd: 906
    functionName: list_delete_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 2
    functionsReached:
    - list_delete_cell
    - lfirst_int
    - Assert
    - check_list_invariants
    - IsIntegerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_delete_int(List *list, int datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:900,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/nodes/list.c:901,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 898
    functionDepth: 4
    functionLinenumber: 898
    functionLinenumberEnd: 902
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - list_delete_cell
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:914,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:914,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:915,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:919,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/nodes/list.c:920,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 909
    functionDepth: 4
    functionLinenumber: 909
    functionLinenumberEnd: 925
    functionName: list_delete_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - list_delete_cell
    - Assert
    - IsOidList
    - check_list_invariants
    - lfirst_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      list_delete_oid(List *list, Oid datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:919,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/nodes/list.c:920,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 917
    functionDepth: 4
    functionLinenumber: 917
    functionLinenumberEnd: 921
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lfirst_oid
    - list_delete_cell
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:945,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/nodes/list.c:950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 942
    functionDepth: 3
    functionLinenumber: 942
    functionLinenumberEnd: 951
    functionName: list_delete_first
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 9
    functionsReached:
    - check_list_invariants
    - list_delete_nth_cell
    linkageType: ''
    returnType: List
    signature: 'List *

      list_delete_first(List *list)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:959,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/list.c:965,1
    - Dst: list_free
      Src: /src/postgres/src/backend/nodes/list.c:967,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/nodes/list.c:971,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/list.c:971,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 956
    functionDepth: 2
    functionLinenumber: 956
    functionLinenumberEnd: 972
    functionName: list_delete_last
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 3
    functionsReached:
    - check_list_invariants
    - list_truncate
    - list_length
    - list_free
    linkageType: ''
    returnType: List
    signature: 'List *

      list_delete_last(List *list)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:985,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/list.c:992,1
    - Dst: list_free
      Src: /src/postgres/src/backend/nodes/list.c:994,1
    - Dst: memmove
      Src: /src/postgres/src/backend/nodes/list.c:1005,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/nodes/list.c:1014,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/nodes/list.c:1014,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:1016,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/list.c:1018,1
    - Dst: wipe_mem
      Src: /src/postgres/src/backend/nodes/list.c:1026,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/backend/nodes/list.c:1029,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1036,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 982
    functionDepth: 2
    functionLinenumber: 982
    functionLinenumberEnd: 1041
    functionName: list_delete_first_n
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 1
    functionsReached:
    - GetMemoryChunkContext
    - memcpy
    - MemoryContextAlloc
    - check_list_invariants
    - list_free
    - pfree
    - VALGRIND_MAKE_MEM_NOACCESS
    - memmove
    - wipe_mem
    - list_length
    linkageType: ''
    returnType: List
    signature: 'List *

      list_delete_first_n(List *list, int n)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1071,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1071,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1072,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1072,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:1074,1
    - Dst: list_member
      Src: /src/postgres/src/backend/nodes/list.c:1077,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1077,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1078,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1078,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1065
    functionDepth: 6
    functionLinenumber: 1065
    functionLinenumberEnd: 1083
    functionName: list_union
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 1
    functionsReached:
    - Assert
    - list_member
    - check_list_invariants
    - lappend
    - lfirst
    - list_copy
    - IsPointerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_union(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member
      Src: /src/postgres/src/backend/nodes/list.c:1077,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1077,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1078,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1078,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1075
    functionDepth: 6
    functionLinenumber: 1075
    functionLinenumberEnd: 1079
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - list_member
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1095,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1096,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1096,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:1098,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/nodes/list.c:1101,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1101,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1102,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1102,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1089
    functionDepth: 6
    functionLinenumber: 1089
    functionLinenumberEnd: 1107
    functionName: list_union_ptr
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - check_list_invariants
    - lappend
    - list_member_ptr
    - lfirst
    - list_copy
    - IsPointerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_union_ptr(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/nodes/list.c:1101,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1101,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1102,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1099
    functionDepth: 6
    functionLinenumber: 1099
    functionLinenumberEnd: 1103
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lfirst
    - list_member_ptr
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1118,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:1118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1119,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:1119,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:1121,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/nodes/list.c:1124,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1124,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/list.c:1125,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1125,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1112
    functionDepth: 6
    functionLinenumber: 1112
    functionLinenumberEnd: 1130
    functionName: list_union_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - lappend_int
    - lfirst_int
    - Assert
    - list_member_int
    - check_list_invariants
    - IsIntegerList
    - list_copy
    linkageType: ''
    returnType: List
    signature: 'List *

      list_union_int(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_int
      Src: /src/postgres/src/backend/nodes/list.c:1124,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1124,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/list.c:1125,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1122
    functionDepth: 6
    functionLinenumber: 1122
    functionLinenumberEnd: 1126
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - list_member_int
    - lappend_int
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1141,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:1141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1142,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:1142,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:1144,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/nodes/list.c:1147,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1147,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/nodes/list.c:1148,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1148,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1135
    functionDepth: 6
    functionLinenumber: 1135
    functionLinenumberEnd: 1153
    functionName: list_union_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsOidList
    - check_list_invariants
    - list_copy
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      list_union_oid(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/nodes/list.c:1147,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1147,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/nodes/list.c:1148,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1145
    functionDepth: 6
    functionLinenumber: 1145
    functionLinenumberEnd: 1149
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1182,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1183,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1183,1
    - Dst: list_member
      Src: /src/postgres/src/backend/nodes/list.c:1188,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1188,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1189,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1189,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1173
    functionDepth: 6
    functionLinenumber: 1173
    functionLinenumberEnd: 1194
    functionName: list_intersection
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - list_member
    - check_list_invariants
    - lappend
    - lfirst
    - IsPointerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_intersection(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member
      Src: /src/postgres/src/backend/nodes/list.c:1188,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1188,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1189,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1186
    functionDepth: 6
    functionLinenumber: 1186
    functionLinenumberEnd: 1190
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - list_member
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list1)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1208,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:1208,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1209,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:1209,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/nodes/list.c:1214,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1214,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/list.c:1215,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1215,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1218,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1199
    functionDepth: 6
    functionLinenumber: 1199
    functionLinenumberEnd: 1220
    functionName: list_intersection_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - lappend_int
    - lfirst_int
    - Assert
    - list_member_int
    - check_list_invariants
    - IsIntegerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_intersection_int(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_int
      Src: /src/postgres/src/backend/nodes/list.c:1214,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1214,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/list.c:1215,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1212
    functionDepth: 6
    functionLinenumber: 1212
    functionLinenumberEnd: 1216
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - list_member_int
    - lappend_int
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list1)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1242,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1242,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1243,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1243,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:1246,1
    - Dst: list_member
      Src: /src/postgres/src/backend/nodes/list.c:1250,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1250,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1251,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1251,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1236
    functionDepth: 6
    functionLinenumber: 1236
    functionLinenumberEnd: 1256
    functionName: list_difference
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 8
    functionsReached:
    - Assert
    - list_member
    - check_list_invariants
    - lappend
    - lfirst
    - list_copy
    - IsPointerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_difference(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member
      Src: /src/postgres/src/backend/nodes/list.c:1250,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1250,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1251,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1248
    functionDepth: 6
    functionLinenumber: 1248
    functionLinenumberEnd: 1252
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - list_member
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list1)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1268,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1268,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1269,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1269,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:1272,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/nodes/list.c:1276,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1276,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1277,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1277,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1262
    functionDepth: 6
    functionLinenumber: 1262
    functionLinenumberEnd: 1282
    functionName: list_difference_ptr
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 2
    functionsReached:
    - Assert
    - check_list_invariants
    - lappend
    - list_member_ptr
    - lfirst
    - list_copy
    - IsPointerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_difference_ptr(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/nodes/list.c:1276,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1276,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1277,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1274
    functionDepth: 6
    functionLinenumber: 1274
    functionLinenumberEnd: 1278
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lfirst
    - list_member_ptr
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list1)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1293,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:1293,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1294,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:1294,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:1297,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/nodes/list.c:1301,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1301,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/list.c:1302,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1302,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1287
    functionDepth: 6
    functionLinenumber: 1287
    functionLinenumberEnd: 1307
    functionName: list_difference_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 2
    functionsReached:
    - lappend_int
    - lfirst_int
    - Assert
    - list_member_int
    - check_list_invariants
    - IsIntegerList
    - list_copy
    linkageType: ''
    returnType: List
    signature: 'List *

      list_difference_int(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_int
      Src: /src/postgres/src/backend/nodes/list.c:1301,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1301,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/list.c:1302,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1299
    functionDepth: 6
    functionLinenumber: 1299
    functionLinenumberEnd: 1303
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - list_member_int
    - lappend_int
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list1)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1318,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:1318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1319,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:1319,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/list.c:1322,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/nodes/list.c:1326,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1326,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/nodes/list.c:1327,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1327,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1312
    functionDepth: 6
    functionLinenumber: 1312
    functionLinenumberEnd: 1332
    functionName: list_difference_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsOidList
    - check_list_invariants
    - list_copy
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      list_difference_oid(const List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/nodes/list.c:1326,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1326,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/nodes/list.c:1327,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1324
    functionDepth: 6
    functionLinenumber: 1324
    functionLinenumberEnd: 1328
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list1)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member
      Src: /src/postgres/src/backend/nodes/list.c:1345,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1342
    functionDepth: 6
    functionLinenumber: 1342
    functionLinenumberEnd: 1349
    functionName: list_append_unique
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 4
    functionsReached:
    - list_member
    - lappend
    linkageType: ''
    returnType: List
    signature: 'List *

      list_append_unique(List *list, void *datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/nodes/list.c:1358,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1355
    functionDepth: 6
    functionLinenumber: 1355
    functionLinenumberEnd: 1362
    functionName: list_append_unique_ptr
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 4
    functionsReached:
    - lappend
    - list_member_ptr
    linkageType: ''
    returnType: List
    signature: 'List *

      list_append_unique_ptr(List *list, void *datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_int
      Src: /src/postgres/src/backend/nodes/list.c:1370,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/list.c:1373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1367
    functionDepth: 6
    functionLinenumber: 1367
    functionLinenumberEnd: 1374
    functionName: list_append_unique_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - list_member_int
    - lappend_int
    linkageType: ''
    returnType: List
    signature: 'List *

      list_append_unique_int(List *list, int datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/nodes/list.c:1382,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/nodes/list.c:1385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - datum
    argTypes:
    - List*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1379
    functionDepth: 6
    functionLinenumber: 1379
    functionLinenumberEnd: 1386
    functionName: list_append_unique_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 3
    functionsReached:
    - lappend_oid
    - list_member_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      list_append_unique_oid(List *list, Oid datum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1409,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1410,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1410,1
    - Dst: list_member
      Src: /src/postgres/src/backend/nodes/list.c:1414,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1414,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1415,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1415,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1404
    functionDepth: 6
    functionLinenumber: 1404
    functionLinenumberEnd: 1420
    functionName: list_concat_unique
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 3
    functionsReached:
    - Assert
    - list_member
    - check_list_invariants
    - lappend
    - lfirst
    - IsPointerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_concat_unique(List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member
      Src: /src/postgres/src/backend/nodes/list.c:1414,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1414,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1415,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1412
    functionDepth: 6
    functionLinenumber: 1412
    functionLinenumberEnd: 1416
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - list_member
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1431,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1432,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1432,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/nodes/list.c:1436,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1436,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1437,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1437,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1426
    functionDepth: 6
    functionLinenumber: 1426
    functionLinenumberEnd: 1442
    functionName: list_concat_unique_ptr
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 2
    functionsReached:
    - Assert
    - check_list_invariants
    - lappend
    - list_member_ptr
    - lfirst
    - IsPointerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_concat_unique_ptr(List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/nodes/list.c:1436,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1436,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/list.c:1437,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1434
    functionDepth: 6
    functionLinenumber: 1434
    functionLinenumberEnd: 1438
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lfirst
    - list_member_ptr
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1452,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:1452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1453,1
    - Dst: IsIntegerList
      Src: /src/postgres/src/backend/nodes/list.c:1453,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/nodes/list.c:1457,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1457,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/list.c:1458,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1458,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1447
    functionDepth: 6
    functionLinenumber: 1447
    functionLinenumberEnd: 1463
    functionName: list_concat_unique_int
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - lappend_int
    - lfirst_int
    - Assert
    - list_member_int
    - check_list_invariants
    - IsIntegerList
    linkageType: ''
    returnType: List
    signature: 'List *

      list_concat_unique_int(List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_int
      Src: /src/postgres/src/backend/nodes/list.c:1457,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1457,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/list.c:1458,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1459
      start: 1455
    functionDepth: 6
    functionLinenumber: 1455
    functionLinenumberEnd: 1459
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - list_member_int
    - lappend_int
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1473,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:1473,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1474,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:1474,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/nodes/list.c:1478,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1478,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/nodes/list.c:1479,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1479,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1468
    functionDepth: 6
    functionLinenumber: 1468
    functionLinenumberEnd: 1484
    functionName: list_concat_unique_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsOidList
    - check_list_invariants
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      list_concat_unique_oid(List *list1, const List *list2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/nodes/list.c:1478,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1478,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/nodes/list.c:1479,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1476
    functionDepth: 6
    functionLinenumber: 1476
    functionLinenumberEnd: 1480
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 338
    functionsReached:
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1499,1
    - Dst: IsOidList
      Src: /src/postgres/src/backend/nodes/list.c:1499,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/list.c:1500,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1513,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1494
    functionDepth: 2
    functionLinenumber: 1494
    functionLinenumberEnd: 1514
    functionName: list_deduplicate_oid
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsOidList
    - check_list_invariants
    - list_length
    linkageType: ''
    returnType: void
    signature: void list_deduplicate_oid(List *list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1525,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/list.c:1530,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1530,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/list.c:1533,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/list.c:1534,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - list
    - deep
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1535
      start: 1519
    functionDepth: 2
    functionLinenumber: 1519
    functionLinenumberEnd: 1535
    functionName: list_free_private
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - check_list_invariants
    - pfree
    - lfirst
    linkageType: ''
    returnType: void
    signature: void list_free_private(List *list, bool deep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_free_private
      Src: /src/postgres/src/backend/nodes/list.c:1548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1545
    functionDepth: 3
    functionLinenumber: 1545
    functionLinenumberEnd: 1549
    functionName: list_free
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 66
    functionsReached:
    - list_free_private
    linkageType: ''
    returnType: void
    signature: void list_free(List *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1565,1
    - Dst: IsPointerList
      Src: /src/postgres/src/backend/nodes/list.c:1565,1
    - Dst: list_free_private
      Src: /src/postgres/src/backend/nodes/list.c:1566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1559
    functionDepth: 3
    functionLinenumber: 1559
    functionLinenumberEnd: 1567
    functionName: list_free_deep
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 9
    functionsReached:
    - Assert
    - IsPointerList
    - list_free_private
    linkageType: ''
    returnType: void
    signature: void list_free_deep(List *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:1580,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:1581,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - oldlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1572
    functionDepth: 4
    functionLinenumber: 1572
    functionLinenumberEnd: 1586
    functionName: list_copy
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 43
    functionsReached:
    - check_list_invariants
    - memcpy
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      list_copy(const List *oldlist)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/list.c:1600,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:1602,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:1603,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1605,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - oldlist
    - len
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1592
    functionDepth: 4
    functionLinenumber: 1592
    functionLinenumberEnd: 1607
    functionName: list_copy_head
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 11
    functionsReached:
    - check_list_invariants
    - Min
    - memcpy
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      list_copy_head(const List *oldlist, int len)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:1623,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/list.c:1624,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1627,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - oldlist
    - nskip
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1612
    functionDepth: 4
    functionLinenumber: 1612
    functionLinenumberEnd: 1629
    functionName: list_copy_tail
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 1
    functionsReached:
    - check_list_invariants
    - memcpy
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      list_copy_tail(const List *oldlist, int nskip)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/list.c:1647,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/list.c:1647,1
    - Dst: new_list
      Src: /src/postgres/src/backend/nodes/list.c:1649,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1651,1
    - Dst: copyObjectImpl
      Src: /src/postgres/src/backend/nodes/list.c:1652,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/list.c:1652,1
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1654,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - oldlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1638
    functionDepth: 4
    functionLinenumber: 1638
    functionLinenumberEnd: 1656
    functionName: list_copy_deep
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 1
    functionsReached:
    - Assert
    - check_list_invariants
    - lfirst
    - IsA
    - copyObjectImpl
    - new_list
    linkageType: ''
    returnType: List
    signature: 'List *

      list_copy_deep(const List *oldlist)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_list_invariants
      Src: /src/postgres/src/backend/nodes/list.c:1679,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/list.c:1682,1
    - Dst: qsort
      Src: /src/postgres/src/backend/nodes/list.c:1684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - list
    - cmp
    argTypes:
    - List*
    - list_sort_comparator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1673
    functionDepth: 2
    functionLinenumber: 1673
    functionLinenumberEnd: 1685
    functionName: list_sort
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 3
    functionsReached:
    - check_list_invariants
    - qsort
    - list_length
    linkageType: ''
    returnType: void
    signature: void list_sort(List *list, list_sort_comparator cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1693,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/list.c:1694,1
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/backend/nodes/list.c:1696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1697
      start: 1690
    functionDepth: 1
    functionLinenumber: 1690
    functionLinenumberEnd: 1697
    functionName: list_int_cmp
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    - lfirst_int
    linkageType: ''
    returnType: int
    signature: int list_int_cmp(const ListCell *p1, const ListCell *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1705,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/list.c:1706,1
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/backend/nodes/list.c:1708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1709
      start: 1702
    functionDepth: 1
    functionLinenumber: 1702
    functionLinenumberEnd: 1709
    functionName: list_oid_cmp
    functionSourceFile: /src/postgres/src/backend/nodes/list.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    - lfirst_oid
    linkageType: ''
    returnType: int
    signature: int list_oid_cmp(const ListCell *p1, const ListCell *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: WORDNUM
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WORDNUM(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: BITNUM
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITNUM(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nwords
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: BITMAPSET_SIZE
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITMAPSET_SIZE(nwords)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: RIGHTMOST_ONE
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIGHTMOST_ONE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: HAS_MULTIPLE_ONES
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HAS_MULTIPLE_ONES(x)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/bitmapset.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 95
    functionName: bms_is_valid_set
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool bms_is_valid_set(const Bitmapset *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:112,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 116
    functionName: bms_copy_and_free
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    functionsReached:
    - bms_free
    - bms_copy
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_copy_and_free(Bitmapset *a)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:128,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:128,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:133,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/bitmapset.c:134,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 137
    functionName: bms_copy
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 39
    functionsReached:
    - memcpy
    - Assert
    - bms_is_valid_set
    - palloc
    - BITMAPSET_SIZE
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_copy(const Bitmapset *a)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:147,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:147,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:148,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 173
    functionName: bms_equal
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 51
    functionsReached:
    - Assert
    - bms_is_valid_set
    linkageType: ''
    returnType: bool
    signature: bool bms_equal(const Bitmapset *a, const Bitmapset *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:188,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:189,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 211
    functionName: bms_compare
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 3
    functionsReached:
    - Assert
    - bms_is_valid_set
    linkageType: ''
    returnType: int
    signature: int bms_compare(const Bitmapset *a, const Bitmapset *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:224,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:225,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:226,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/nodes/bitmapset.c:227,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - x
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 232
    functionName: bms_make_singleton
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 29
    functionsReached:
    - elog
    - WORDNUM
    - palloc0
    - BITNUM
    - BITMAPSET_SIZE
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_make_singleton(int x)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: bms_free
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 37
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void bms_free(Bitmapset *a)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:259,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:259,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:260,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:260,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:264,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:266,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:270,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 251
    functionDepth: 3
    functionLinenumber: 251
    functionLinenumberEnd: 286
    functionName: bms_union
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 43
    functionsReached:
    - Assert
    - bms_is_valid_set
    - bms_copy
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_union(const Bitmapset *a, const Bitmapset *b)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:301,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:302,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:302,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:311,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:316,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:333,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 292
    functionDepth: 3
    functionLinenumber: 292
    functionLinenumberEnd: 340
    functionName: bms_intersect
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 13
    functionsReached:
    - Assert
    - pfree
    - bms_is_valid_set
    - bms_copy
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_intersect(const Bitmapset *a, const Bitmapset *b)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:352,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:353,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:353,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:359,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/nodes/bitmapset.c:366,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:403,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 346
    functionDepth: 3
    functionLinenumber: 346
    functionLinenumberEnd: 407
    functionName: bms_difference
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 19
    functionsReached:
    - Assert
    - bms_nonempty_difference
    - bms_is_valid_set
    - bms_copy
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_difference(const Bitmapset *a, const Bitmapset *b)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:430,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:430,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:437,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:438,1
    - Dst: bmw_leftmost_one_pos
      Src: /src/postgres/src/backend/nodes/bitmapset.c:439,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/nodes/bitmapset.c:443,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:444,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:449,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/nodes/bitmapset.c:450,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:472,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:486,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:531,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 2
    argNames:
    - a
    - offset
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 418
    functionDepth: 2
    functionLinenumber: 418
    functionLinenumberEnd: 541
    functionName: bms_offset_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 6
    functionsReached:
    - elog
    - BITMAPSET_SIZE
    - Assert
    - WORDNUM
    - bms_is_valid_set
    - bmw_leftmost_one_pos
    - palloc0
    - BITNUM
    - pg_add_s32_overflow
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_offset_members(const Bitmapset *a, int offset)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:551,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:552,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:552,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 572
    functionName: bms_is_subset
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 85
    functionsReached:
    - Assert
    - bms_is_valid_set
    linkageType: ''
    returnType: bool
    signature: bool bms_is_subset(const Bitmapset *a, const Bitmapset *b)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:586,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:586,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:587,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:587,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/bitmapset.c:601,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 579
    functionDepth: 2
    functionLinenumber: 579
    functionLinenumberEnd: 639
    functionName: bms_subset_compare
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 6
    functionsReached:
    - Assert
    - Min
    - bms_is_valid_set
    linkageType: ''
    returnType: BMS_Comparison
    signature: BMS_Comparison bms_subset_compare(const Bitmapset *a, const Bitmapset
      *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:650,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:650,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:654,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:658,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:659,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - x
    - a
    argTypes:
    - int
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 644
    functionDepth: 2
    functionLinenumber: 644
    functionLinenumberEnd: 665
    functionName: bms_is_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 101
    functionsReached:
    - elog
    - Assert
    - WORDNUM
    - bms_is_valid_set
    - BITNUM
    linkageType: ''
    returnType: bool
    signature: bool bms_is_member(int x, const Bitmapset *a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:681,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:681,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/nodes/bitmapset.c:684,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:687,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:688,1
    - Dst: pg_popcount
      Src: /src/postgres/src/backend/nodes/bitmapset.c:691,1
    - Dst: bmw_popcount
      Src: /src/postgres/src/backend/nodes/bitmapset.c:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - a
    - x
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 673
    functionDepth: 3
    functionLinenumber: 673
    functionLinenumberEnd: 704
    functionName: bms_member_index
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 5
    functionsReached:
    - bmw_popcount
    - Assert
    - WORDNUM
    - bms_is_valid_set
    - bms_is_member
    - BITNUM
    - pg_popcount
    linkageType: ''
    returnType: int
    signature: int bms_member_index(Bitmapset *a, int x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:715,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:715,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:716,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:716,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/bitmapset.c:722,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 730
    functionName: bms_overlap
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 63
    functionsReached:
    - Assert
    - Min
    - bms_is_valid_set
    linkageType: ''
    returnType: bool
    signature: bool bms_overlap(const Bitmapset *a, const Bitmapset *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:742,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:742,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/bitmapset.c:749,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:752,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:753,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:754,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 761
    functionName: bms_overlap_list
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 3
    functionsReached:
    - elog
    - lfirst_int
    - Assert
    - WORDNUM
    - bms_is_valid_set
    - BITNUM
    linkageType: ''
    returnType: bool
    signature: bool bms_overlap_list(const Bitmapset *a, const List *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/bitmapset.c:749,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:752,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:753,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:754,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 747
    functionDepth: 1
    functionLinenumber: 747
    functionLinenumberEnd: 758
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 338
    functionsReached:
    - elog
    - WORDNUM
    - BITNUM
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:773,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:773,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:774,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:774,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 768
    functionDepth: 2
    functionLinenumber: 768
    functionLinenumberEnd: 792
    functionName: bms_nonempty_difference
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 8
    functionsReached:
    - Assert
    - bms_is_valid_set
    linkageType: ''
    returnType: bool
    signature: bool bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:806,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:806,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:809,1
    - Dst: HAS_MULTIPLE_ONES
      Src: /src/postgres/src/backend/nodes/bitmapset.c:819,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:820,1
    - Dst: bmw_rightmost_one_pos
      Src: /src/postgres/src/backend/nodes/bitmapset.c:822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:827,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 799
    functionDepth: 2
    functionLinenumber: 799
    functionLinenumberEnd: 829
    functionName: bms_singleton_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 6
    functionsReached:
    - elog
    - HAS_MULTIPLE_ONES
    - bmw_rightmost_one_pos
    - Assert
    - bms_is_valid_set
    linkageType: ''
    returnType: int
    signature: int bms_singleton_member(const Bitmapset *a)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:849,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:849,1
    - Dst: HAS_MULTIPLE_ONES
      Src: /src/postgres/src/backend/nodes/bitmapset.c:862,1
    - Dst: bmw_rightmost_one_pos
      Src: /src/postgres/src/backend/nodes/bitmapset.c:865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:870,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - a
    - member
    argTypes:
    - Bitmapset*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 842
    functionDepth: 2
    functionLinenumber: 842
    functionLinenumberEnd: 873
    functionName: bms_get_singleton_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 13
    functionsReached:
    - Assert
    - bms_is_valid_set
    - bmw_rightmost_one_pos
    - HAS_MULTIPLE_ONES
    linkageType: ''
    returnType: bool
    signature: bool bms_get_singleton_member(const Bitmapset *a, int *member)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:881,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:881,1
    - Dst: bmw_popcount
      Src: /src/postgres/src/backend/nodes/bitmapset.c:888,1
    - Dst: pg_popcount
      Src: /src/postgres/src/backend/nodes/bitmapset.c:890,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 878
    functionDepth: 2
    functionLinenumber: 878
    functionLinenumberEnd: 892
    functionName: bms_num_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 25
    functionsReached:
    - Assert
    - bms_is_valid_set
    - pg_popcount
    - bmw_popcount
    linkageType: ''
    returnType: int
    signature: int bms_num_members(const Bitmapset *a)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:906,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:906,1
    - Dst: HAS_MULTIPLE_ONES
      Src: /src/postgres/src/backend/nodes/bitmapset.c:919,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 899
    functionDepth: 2
    functionLinenumber: 899
    functionLinenumberEnd: 925
    functionName: bms_membership
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 29
    functionsReached:
    - Assert
    - bms_is_valid_set
    - HAS_MULTIPLE_ONES
    linkageType: ''
    returnType: BMS_Membership
    signature: BMS_Membership bms_membership(const Bitmapset *a)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:939,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:939,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:942,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/nodes/bitmapset.c:944,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:946,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:947,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/nodes/bitmapset.c:955,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:955,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:973,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - a
    - x
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 933
    functionDepth: 2
    functionLinenumber: 933
    functionLinenumberEnd: 977
    functionName: bms_add_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 92
    functionsReached:
    - elog
    - bms_copy_and_free
    - Assert
    - WORDNUM
    - bms_is_valid_set
    - repalloc
    - BITNUM
    - BITMAPSET_SIZE
    - bms_make_singleton
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_add_member(Bitmapset *a, int x)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:992,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:992,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:995,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:999,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1000,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1003,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1007,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1026,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - a
    - x
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 986
    functionDepth: 2
    functionLinenumber: 986
    functionLinenumberEnd: 1030
    functionName: bms_del_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 22
    functionsReached:
    - elog
    - bms_copy_and_free
    - Assert
    - WORDNUM
    - bms_is_valid_set
    - pfree
    - BITNUM
    - unlikely
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_del_member(Bitmapset *a, int x)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1043,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1044,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1044,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1048,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1052,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1060,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1076,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1079,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1035
    functionDepth: 3
    functionLinenumber: 1035
    functionLinenumberEnd: 1083
    functionName: bms_add_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 48
    functionsReached:
    - bms_copy_and_free
    - Assert
    - pfree
    - bms_is_valid_set
    - bms_copy
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_add_members(Bitmapset *a, const Bitmapset *b)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1095,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1096,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1096,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1099,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1102,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1107,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1107,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1090
    functionDepth: 3
    functionLinenumber: 1090
    functionLinenumberEnd: 1127
    functionName: bms_replace_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 1
    functionsReached:
    - bms_copy_and_free
    - Assert
    - pfree
    - bms_is_valid_set
    - bms_copy
    - repalloc
    - BITMAPSET_SIZE
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_replace_members(Bitmapset *a, const Bitmapset *b)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1146,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1146,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1152,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1159,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1160,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1164,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1164,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1174,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1174,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1184,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1186,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1187,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 3
    argNames:
    - a
    - lower
    - upper
    argTypes:
    - Bitmapset*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1137
    functionDepth: 2
    functionLinenumber: 1137
    functionLinenumberEnd: 1221
    functionName: bms_add_range
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 3
    functionsReached:
    - elog
    - bms_copy_and_free
    - Assert
    - WORDNUM
    - bms_is_valid_set
    - palloc0
    - repalloc
    - BITNUM
    - BITMAPSET_SIZE
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_add_range(Bitmapset *a, int lower, int upper)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1234,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1234,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1235,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1235,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1242,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1247,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1261,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1269,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1227
    functionDepth: 2
    functionLinenumber: 1227
    functionLinenumberEnd: 1273
    functionName: bms_int_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 7
    functionsReached:
    - bms_copy_and_free
    - Assert
    - pfree
    - bms_is_valid_set
    - Min
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_int_members(Bitmapset *a, const Bitmapset *b)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1284,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1285,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1285,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1293,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1330,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1339,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1279
    functionDepth: 2
    functionLinenumber: 1279
    functionLinenumberEnd: 1343
    functionName: bms_del_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 13
    functionsReached:
    - Assert
    - bms_copy_and_free
    - pfree
    - bms_is_valid_set
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_del_members(Bitmapset *a, const Bitmapset *b)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1356,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1356,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1357,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1357,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1363,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1371,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1396,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1399,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1348
    functionDepth: 2
    functionLinenumber: 1348
    functionLinenumberEnd: 1403
    functionName: bms_join
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 10
    functionsReached:
    - Assert
    - bms_copy_and_free
    - pfree
    - bms_is_valid_set
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_join(Bitmapset *a, Bitmapset *b)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1431,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1431,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1439,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1440,1
    - Dst: bmw_rightmost_one_pos
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1452,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - a
    - prevbit
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1424
    functionDepth: 2
    functionLinenumber: 1424
    functionLinenumberEnd: 1460
    functionName: bms_next_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 47
    functionsReached:
    - bmw_rightmost_one_pos
    - Assert
    - WORDNUM
    - bms_is_valid_set
    - BITNUM
    linkageType: ''
    returnType: int
    signature: int bms_next_member(const Bitmapset *a, int prevbit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1493,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1493,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1503,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1515,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1517,1
    - Dst: bmw_leftmost_one_pos
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1529,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - a
    - prevbit
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1486
    functionDepth: 2
    functionLinenumber: 1486
    functionLinenumberEnd: 1537
    functionName: bms_prev_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 1
    functionsReached:
    - Assert
    - WORDNUM
    - bms_is_valid_set
    - bmw_leftmost_one_pos
    - BITNUM
    linkageType: ''
    returnType: int
    signature: int bms_prev_member(const Bitmapset *a, int prevbit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1545,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1545,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1549,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1542
    functionDepth: 2
    functionLinenumber: 1542
    functionLinenumberEnd: 1551
    functionName: bms_hash_value
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 1
    functionsReached:
    - Assert
    - hash_any
    - bms_is_valid_set
    - DatumGetUInt32
    linkageType: ''
    returnType: uint32
    signature: uint32 bms_hash_value(const Bitmapset *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1561,1
    - Dst: bms_hash_value
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1558
    functionDepth: 3
    functionLinenumber: 1558
    functionLinenumberEnd: 1563
    functionName: bitmap_hash
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_hash_value
    linkageType: ''
    returnType: uint32
    signature: uint32 bitmap_hash(const void *key, Size keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1571,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - void*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1568
    functionDepth: 3
    functionLinenumber: 1568
    functionLinenumberEnd: 1574
    functionName: bitmap_match
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_equal
    linkageType: ''
    returnType: int
    signature: int bitmap_match(const void *key1, const void *key2, Size keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: WORDNUM
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WORDNUM(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: BITNUM
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITNUM(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 239
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 240
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:261,1
    - Dst: tbm_calculate_entries
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - maxbytes
    - dsa
    argTypes:
    - Size
    - dsa_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 275
    functionName: tbm_create
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - makeNode
    - tbm_calculate_entries
    linkageType: ''
    returnType: TIDBitmap
    signature: 'TIDBitmap *

      tbm_create(Size maxbytes, dsa_area *dsa)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:285,1
    - Dst: pagetable_create
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:287,1
    - Dst: pagetable_insert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:296,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:299,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 306
    functionName: tbm_create_pagetable
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - Assert
    - pagetable_insert
    - memcpy
    - pagetable_create
    linkageType: ''
    returnType: void
    signature: void tbm_create_pagetable(TIDBitmap *tbm)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pagetable_destroy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:315,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:317,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:319,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 321
    functionName: tbm_free
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 2
    functionsReached:
    - pfree
    - pagetable_destroy
    linkageType: ''
    returnType: void
    signature: void tbm_free(TIDBitmap *tbm)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:333,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:338,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:340,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:341,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:342,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:344,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:346,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:347,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:348,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:350,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:352,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:353,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:354,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:357,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - dsa
    - dp
    argTypes:
    - dsa_area*
    - dsa_pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 358
    functionName: tbm_free_shared_area
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - pg_atomic_sub_fetch_u32
    - dsa_get_address
    - DsaPointerIsValid
    - dsa_free
    linkageType: ''
    returnType: void
    signature: void tbm_free_shared_area(dsa_area *dsa, dsa_pointer dp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:373,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:376,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:377,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:383,1
    - Dst: tbm_page_is_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:392,1
    - Dst: tbm_get_pageentry
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:395,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:410,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:411,1
    - Dst: tbm_lossify
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:418,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - tbm
    - tids
    - ntids
    - recheck
    argTypes:
    - TIDBitmap*
    - ItemPointerData*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 366
    functionDepth: 3
    functionLinenumber: 366
    functionLinenumberEnd: 423
    functionName: tbm_add_tuples
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 9
    functionsReached:
    - elog
    - tbm_get_pageentry
    - Assert
    - WORDNUM
    - tbm_page_is_lossy
    - BITNUM
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    - tbm_lossify
    linkageType: ''
    returnType: void
    signature: "void tbm_add_tuples(TIDBitmap *tbm, const ItemPointerData *tids, int
      ntids,\n\t\t\t   bool recheck)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tbm_mark_page_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:435,1
    - Dst: tbm_lossify
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - tbm
    - pageno
    argTypes:
    - TIDBitmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 439
    functionName: tbm_add_page
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 2
    functionsReached:
    - tbm_mark_page_lossy
    - tbm_lossify
    linkageType: ''
    returnType: void
    signature: void tbm_add_page(TIDBitmap *tbm, BlockNumber pageno)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:449,1
    - Dst: tbm_union_page
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:461,1
    - Dst: pagetable_start_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:462,1
    - Dst: pagetable_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:463,1
    - Dst: tbm_union_page
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:464,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TIDBitmap*
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 466
    functionName: tbm_union
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - Assert
    - pagetable_start_iterate
    - pagetable_iterate
    - tbm_union_page
    linkageType: ''
    returnType: void
    signature: void tbm_union(TIDBitmap *a, const TIDBitmap *b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: tbm_mark_page_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:489,1
    - Dst: tbm_page_is_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:496,1
    - Dst: tbm_get_pageentry
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:503,1
    - Dst: tbm_lossify
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:519,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - a
    - bpage
    argTypes:
    - TIDBitmap*
    - PagetableEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 520
    functionName: tbm_union_page
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - tbm_mark_page_lossy
    - tbm_get_pageentry
    - tbm_page_is_lossy
    - tbm_lossify
    linkageType: ''
    returnType: void
    signature: void tbm_union_page(TIDBitmap *a, const PagetableEntry *bpage)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:530,1
    - Dst: tbm_intersect_page
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:540,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:552,1
    - Dst: pagetable_start_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:553,1
    - Dst: pagetable_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:554,1
    - Dst: tbm_intersect_page
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:556,1
    - Dst: pagetable_delete
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:564,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:565,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TIDBitmap*
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 569
    functionName: tbm_intersect
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - elog
    - pagetable_delete
    - Assert
    - pagetable_start_iterate
    - tbm_intersect_page
    - pagetable_iterate
    linkageType: ''
    returnType: void
    signature: void tbm_intersect(TIDBitmap *a, const TIDBitmap *b)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: tbm_page_is_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:602,1
    - Dst: tbm_find_pageentry
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:603,1
    - Dst: tbm_page_is_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:620,1
    - Dst: tbm_find_pageentry
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:635,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:639,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 3
    argNames:
    - a
    - apage
    - b
    argTypes:
    - TIDBitmap*
    - PagetableEntry*
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 651
    functionName: tbm_intersect_page
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - Assert
    - tbm_page_is_lossy
    - tbm_find_pageentry
    linkageType: ''
    returnType: bool
    signature: bool tbm_intersect_page(TIDBitmap *a, PagetableEntry *apage, const
      TIDBitmap *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 660
    functionName: tbm_is_empty
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool tbm_is_empty(const TIDBitmap *tbm)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:680,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:686,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:711,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:715,1
    - Dst: pagetable_start_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:719,1
    - Dst: pagetable_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:728,1
    - Dst: qsort
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:730,1
    - Dst: qsort
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:733,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 740
    functionName: tbm_begin_private_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - qsort
    - MemoryContextAlloc
    - Assert
    - pagetable_start_iterate
    - pagetable_iterate
    - palloc_object
    linkageType: ''
    returnType: TBMPrivateIterator
    signature: 'TBMPrivateIterator *

      tbm_begin_private_iterate(TIDBitmap *tbm)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:761,1
    - Dst: dsa_allocate0
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:767,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:768,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:789,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:791,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:792,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:796,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:798,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:799,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:811,1
    - Dst: pagetable_start_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:813,1
    - Dst: pagetable_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:814,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:823,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:824,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:833,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:835,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:836,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:841,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:843,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:846,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:862,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:863,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:864,1
    - Dst: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:872,1
    - Dst: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:874,1
    - Dst: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:876,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:879,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 64
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 751
    functionDepth: 2
    functionLinenumber: 751
    functionLinenumberEnd: 889
    functionName: tbm_prepare_shared_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - pg_atomic_init_u32
    - memcpy
    - Assert
    - pagetable_start_iterate
    - dsa_allocate0
    - dsa_get_address
    - pagetable_iterate
    - qsort_arg
    - dsa_allocate
    - LWLockInitialize
    - pg_atomic_add_fetch_u32
    linkageType: ''
    returnType: dsa_pointer
    signature: dsa_pointer tbm_prepare_shared_iterate(TIDBitmap *tbm)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - iteritem
    - offsets
    - max_offsets
    argTypes:
    - TBMIterateResult*
    - OffsetNumber*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 898
    functionDepth: 0
    functionLinenumber: 898
    functionLinenumberEnd: 929
    functionName: tbm_extract_page_tuple
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int tbm_extract_page_tuple(TBMIterateResult *iteritem,\n\t\t\t\t\t
      \  OffsetNumber *offsets,\n\t\t\t\t\t   uint32 max_offsets)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:941,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:942,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - chunk
    - schunkbitp
    argTypes:
    - PagetableEntry*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 950
    functionName: tbm_advance_schunkbit
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - WORDNUM
    - BITNUM
    linkageType: ''
    returnType: void
    signature: void tbm_advance_schunkbit(PagetableEntry *chunk, int *schunkbitp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:978,1
    - Dst: tbm_advance_schunkbit
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:989,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 2
    argNames:
    - iterator
    - tbmres
    argTypes:
    - TBMPrivateIterator*
    - TBMIterateResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 1044
    functionName: tbm_private_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - Assert
    - tbm_advance_schunkbit
    linkageType: ''
    returnType: bool
    signature: bool tbm_private_iterate(TBMPrivateIterator *iterator, TBMIterateResult
      *tbmres)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1069,1
    - Dst: tbm_advance_schunkbit
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1080,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1112,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1127,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1132,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 2
    argNames:
    - iterator
    - tbmres
    argTypes:
    - TBMSharedIterator*
    - TBMIterateResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1053
    functionDepth: 1
    functionLinenumber: 1053
    functionLinenumberEnd: 1137
    functionName: tbm_shared_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - tbm_advance_schunkbit
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: bool
    signature: bool tbm_shared_iterate(TBMSharedIterator *iterator, TBMIterateResult
      *tbmres)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iterator
    argTypes:
    - TBMPrivateIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1146
    functionDepth: 0
    functionLinenumber: 1146
    functionLinenumberEnd: 1150
    functionName: tbm_end_private_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 3
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void tbm_end_private_iterate(TBMPrivateIterator *iterator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iterator
    argTypes:
    - TBMSharedIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1162
    functionName: tbm_end_shared_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void tbm_end_shared_iterate(TBMSharedIterator *iterator)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1182,1
    - Dst: pagetable_lookup
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1186,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - tbm
    - pageno
    argTypes:
    - TIDBitmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1192
    functionName: tbm_find_pageentry
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - Assert
    - pagetable_lookup
    linkageType: ''
    returnType: PagetableEntry
    signature: 'PagetableEntry *

      tbm_find_pageentry(const TIDBitmap *tbm, BlockNumber pageno)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tbm_create_pagetable
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1223,1
    - Dst: pagetable_insert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1227,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - tbm
    - pageno
    argTypes:
    - TIDBitmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1202
    functionDepth: 2
    functionLinenumber: 1202
    functionLinenumberEnd: 1244
    functionName: tbm_get_pageentry
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 2
    functionsReached:
    - MemSet
    - tbm_create_pagetable
    - pagetable_insert
    linkageType: ''
    returnType: PagetableEntry
    signature: 'PagetableEntry *

      tbm_get_pageentry(TIDBitmap *tbm, BlockNumber pageno)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1259,1
    - Dst: pagetable_lookup
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1264,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1268,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1269,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - tbm
    - pageno
    argTypes:
    - TIDBitmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1249
    functionDepth: 1
    functionLinenumber: 1249
    functionLinenumberEnd: 1275
    functionName: tbm_page_is_lossy
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 3
    functionsReached:
    - Assert
    - pagetable_lookup
    - WORDNUM
    - BITNUM
    linkageType: ''
    returnType: bool
    signature: bool tbm_page_is_lossy(const TIDBitmap *tbm, BlockNumber pageno)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: tbm_create_pagetable
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1295,1
    - Dst: pagetable_delete
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1306,1
    - Dst: pagetable_insert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1315,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1322,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1335,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1347,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1348,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - tbm
    - pageno
    argTypes:
    - TIDBitmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1283
    functionDepth: 2
    functionLinenumber: 1283
    functionLinenumberEnd: 1350
    functionName: tbm_mark_page_lossy
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 2
    functionsReached:
    - tbm_create_pagetable
    - pagetable_delete
    - WORDNUM
    - BITNUM
    - MemSet
    - pagetable_insert
    linkageType: ''
    returnType: void
    signature: void tbm_mark_page_lossy(TIDBitmap *tbm, BlockNumber pageno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1371,1
    - Dst: pagetable_start_iterate_at
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1373,1
    - Dst: pagetable_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1374,1
    - Dst: tbm_mark_page_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1387,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1418,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1355
    functionDepth: 3
    functionLinenumber: 1355
    functionLinenumberEnd: 1419
    functionName: tbm_lossify
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 3
    functionsReached:
    - tbm_mark_page_lossy
    - Assert
    - pagetable_start_iterate_at
    - pagetable_iterate
    - Min
    linkageType: ''
    returnType: void
    signature: void tbm_lossify(TIDBitmap *tbm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - left
    - right
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1424
    functionDepth: 1
    functionLinenumber: 1424
    functionLinenumberEnd: 1431
    functionName: tbm_comparator
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int tbm_comparator(const void *left, const void *right)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - left
    - right
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1438
    functionDepth: 0
    functionLinenumber: 1438
    functionLinenumberEnd: 1450
    functionName: tbm_shared_comparator
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tbm_shared_comparator(const void *left, const void *right, void
      *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1471,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1473,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1477,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1480,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1482,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - dsa
    - dp
    argTypes:
    - dsa_area*
    - dsa_pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1461
    functionDepth: 1
    functionLinenumber: 1461
    functionLinenumberEnd: 1485
    functionName: tbm_attach_shared_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - dsa_get_address
    linkageType: ''
    returnType: TBMSharedIterator
    signature: 'TBMSharedIterator *

      tbm_attach_shared_iterate(dsa_area *dsa, dsa_pointer dp)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocExtended
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1500,1
    - Dst: dsa_allocate_extended
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1508,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pagetable
    - size
    argTypes:
    - pagetable_hash*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1493
    functionDepth: 1
    functionLinenumber: 1493
    functionLinenumberEnd: 1514
    functionName: pagetable_allocate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - MemoryContextAllocExtended
    - dsa_get_address
    - dsa_allocate_extended
    linkageType: ''
    returnType: void
    signature: 'void *

      pagetable_allocate(pagetable_hash *pagetable, Size size)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1528,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1529,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1531,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - pagetable
    - pointer
    argTypes:
    - pagetable_hash*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1521
    functionDepth: 1
    functionLinenumber: 1521
    functionLinenumberEnd: 1534
    functionName: pagetable_free
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - pfree
    - DsaPointerIsValid
    - dsa_free
    linkageType: ''
    returnType: void
    signature: void pagetable_free(pagetable_hash *pagetable, void *pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1554,1
    - Dst: Max
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - maxbytes
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1541
    functionDepth: 0
    functionLinenumber: 1541
    functionLinenumberEnd: 1558
    functionName: tbm_calculate_entries
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 2
    functionsReached:
    - Min
    - Max
    linkageType: ''
    returnType: int
    signature: int tbm_calculate_entries(Size maxbytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1576,1
    - Dst: tbm_attach_shared_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1579,1
    - Dst: tbm_begin_private_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - tbm
    - dsa
    - dsp
    argTypes:
    - TIDBitmap*
    - dsa_area*
    - dsa_pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1570
    functionDepth: 2
    functionLinenumber: 1570
    functionLinenumberEnd: 1588
    functionName: tbm_begin_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - tbm_attach_shared_iterate
    - DsaPointerIsValid
    - tbm_begin_private_iterate
    linkageType: ''
    returnType: TBMIterator
    signature: TBMIterator tbm_begin_iterate(TIDBitmap *tbm, dsa_area *dsa, dsa_pointer
      dsp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1596,1
    - Dst: tbm_exhausted
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1596,1
    - Dst: tbm_end_shared_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1599,1
    - Dst: tbm_end_private_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1601,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - iterator
    argTypes:
    - TBMIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1593
    functionDepth: 1
    functionLinenumber: 1593
    functionLinenumberEnd: 1607
    functionName: tbm_end_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - Assert
    - tbm_end_shared_iterate
    - tbm_exhausted
    - tbm_end_private_iterate
    linkageType: ''
    returnType: void
    signature: void tbm_end_iterate(TBMIterator *iterator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1617,1
    - Dst: tbm_shared_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1620,1
    - Dst: tbm_private_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - iterator
    - tbmres
    argTypes:
    - TBMIterator*
    - TBMIterateResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1613
    functionDepth: 2
    functionLinenumber: 1613
    functionLinenumberEnd: 1623
    functionName: tbm_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - Assert
    - tbm_private_iterate
    - tbm_shared_iterate
    linkageType: ''
    returnType: bool
    signature: bool tbm_iterate(TBMIterator *iterator, TBMIterateResult *tbmres)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nodeRead
      Src: /src/postgres/src/backend/nodes/read.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - str
    - restore_loc_fields
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 84
    functionName: stringToNodeInternal
    functionSourceFile: /src/postgres/src/backend/nodes/read.c
    functionUses: 0
    functionsReached:
    - nodeRead
    linkageType: ''
    returnType: void
    signature: 'void *

      stringToNodeInternal(const char *str, bool restore_loc_fields)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringToNodeInternal
      Src: /src/postgres/src/backend/nodes/read.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: stringToNode
    functionSourceFile: /src/postgres/src/backend/nodes/read.c
    functionUses: 10
    functionsReached:
    - stringToNodeInternal
    linkageType: ''
    returnType: void
    signature: 'void *

      stringToNode(const char *str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringToNodeInternal
      Src: /src/postgres/src/backend/nodes/read.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: stringToNodeWithLocations
    functionSourceFile: /src/postgres/src/backend/nodes/read.c
    functionUses: 4
    functionsReached:
    - stringToNodeInternal
    linkageType: ''
    returnType: void
    signature: 'void *

      stringToNodeWithLocations(const char *str)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 24
    argCount: 1
    argNames:
    - length
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 206
    functionName: pg_strtok
    functionSourceFile: /src/postgres/src/backend/nodes/read.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_strtok(int *length)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/read.c:216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - token
    - length
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 228
    functionName: debackslash
    functionSourceFile: /src/postgres/src/backend/nodes/read.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      debackslash(const char *token, int length)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/postgres/src/backend/nodes/read.c:259,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/nodes/read.c:260,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/nodes/read.c:271,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/read.c:287,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/read.c:288,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 26
    argCount: 2
    argNames:
    - token
    - length
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 297
    functionName: nodeTokenType
    functionSourceFile: /src/postgres/src/backend/nodes/read.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strtoint
    - isdigit
    linkageType: ''
    returnType: NodeTag
    signature: NodeTag nodeTokenType(const char *token, int length)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/read.c:327,1
    - Dst: nodeTokenType
      Src: /src/postgres/src/backend/nodes/read.c:333,1
    - Dst: parseNodeString
      Src: /src/postgres/src/backend/nodes/read.c:338,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/read.c:339,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:341,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/read.c:355,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:357,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/read.c:366,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:368,1
    - Dst: strtol
      Src: /src/postgres/src/backend/nodes/read.c:371,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:373,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/nodes/read.c:375,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/read.c:387,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:389,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/nodes/read.c:392,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:394,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/nodes/read.c:396,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/read.c:408,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:410,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/nodes/read.c:413,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:415,1
    - Dst: lappend_xid
      Src: /src/postgres/src/backend/nodes/read.c:417,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/read.c:431,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:433,1
    - Dst: strtol
      Src: /src/postgres/src/backend/nodes/read.c:436,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:438,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/nodes/read.c:440,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/read.c:452,1
    - Dst: nodeRead
      Src: /src/postgres/src/backend/nodes/read.c:452,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/read.c:453,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:455,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:462,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:473,1
    - Dst: makeInteger
      Src: /src/postgres/src/backend/nodes/read.c:482,1
    - Dst: atoi
      Src: /src/postgres/src/backend/nodes/read.c:482,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/read.c:486,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/read.c:488,1
    - Dst: makeFloat
      Src: /src/postgres/src/backend/nodes/read.c:490,1
    - Dst: makeBoolean
      Src: /src/postgres/src/backend/nodes/read.c:494,1
    - Dst: makeString
      Src: /src/postgres/src/backend/nodes/read.c:498,1
    - Dst: debackslash
      Src: /src/postgres/src/backend/nodes/read.c:498,1
    - Dst: makeBitString
      Src: /src/postgres/src/backend/nodes/read.c:502,1
    - Dst: debackslash
      Src: /src/postgres/src/backend/nodes/read.c:502,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/read.c:505,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 122
    argCount: 2
    argNames:
    - token
    - tok_len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 319
    functionDepth: 6
    functionLinenumber: 319
    functionLinenumberEnd: 511
    functionName: nodeRead
    functionSourceFile: /src/postgres/src/backend/nodes/read.c
    functionUses: 2
    functionsReached:
    - lappend_int
    - lappend_oid
    - palloc
    - bms_add_member
    - nodeTokenType
    - makeBoolean
    - parseNodeString
    - elog
    - memcpy
    - lappend_xid
    - pg_strtok
    - nodeRead
    - debackslash
    - strtoul
    - makeString
    - strtol
    - lappend
    - makeBitString
    - makeInteger
    - makeFloat
    - atoi
    linkageType: ''
    returnType: void
    signature: 'void *

      nodeRead(const char *token, int tok_len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nodeTypeName
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: READ_LOCALS_NO_FIELDS
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_LOCALS_NO_FIELDS(nodeTypeName)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: READ_TEMP_LOCALS
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_TEMP_LOCALS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nodeTypeName
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: READ_LOCALS
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_LOCALS(nodeTypeName)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: READ_INT_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_INT_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: READ_UINT_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_UINT_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: READ_INT64_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_INT64_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: READ_UINT64_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_UINT64_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: READ_LONG_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_LONG_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: READ_OID_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_OID_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: READ_CHAR_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_CHAR_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - enumtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: READ_ENUM_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_ENUM_FIELD(fldname, enumtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: READ_FLOAT_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_FLOAT_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    functionName: READ_BOOL_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_BOOL_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: READ_STRING_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_STRING_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: READ_LOCATION_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_LOCATION_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: READ_LOCATION_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_LOCATION_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: READ_NODE_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_NODE_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: READ_BITMAPSET_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_BITMAPSET_FIELD(fldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    functionName: READ_ATTRNUMBER_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_ATTRNUMBER_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: READ_OID_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_OID_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    functionName: READ_INT_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_INT_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fldname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    functionName: READ_BOOL_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_BOOL_ARRAY(fldname, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: READ_DONE
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_DONE()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 182
    functionName: atoui
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atoui(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 184
    functionName: strtobool
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strtobool(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/nodes/readfuncs.c:193,1
    - Dst: debackslash
      Src: /src/postgres/src/backend/nodes/readfuncs.c:195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - token
    - length
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 196
    functionName: nullable_string
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - debackslash
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      nullable_string(const char *token, int length)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: READ_TEMP_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:211,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:213,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:215,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:217,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:219,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:221,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:223,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:230,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:232,1
    - Dst: strtol
      Src: /src/postgres/src/backend/nodes/readfuncs.c:235,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:237,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/nodes/readfuncs.c:238,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 206
    functionDepth: 3
    functionLinenumber: 206
    functionLinenumberEnd: 242
    functionName: _readBitmapset
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_strtok
    - strtol
    - READ_TEMP_LOCALS
    - bms_add_member
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      _readBitmapset(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _readBitmapset
      Src: /src/postgres/src/backend/nodes/readfuncs.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 248
    functionDepth: 4
    functionLinenumber: 248
    functionLinenumberEnd: 252
    functionName: readBitmapset
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 1
    functionsReached:
    - _readBitmapset
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      readBitmapset(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: READ_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:265,1
    - Dst: READ_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:267,1
    - Dst: READ_INT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:268,1
    - Dst: READ_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:269,1
    - Dst: READ_INT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:270,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:271,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:272,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:273,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:275,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:277,1
    - Dst: readDatum
      Src: /src/postgres/src/backend/nodes/readfuncs.c:279,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 282
    functionName: _readConst
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - READ_OID_FIELD
    - readDatum
    - READ_INT_FIELD
    - pg_strtok
    - READ_DONE
    - READ_LOCATION_FIELD
    - READ_BOOL_FIELD
    - READ_LOCALS
    linkageType: ''
    returnType: Const
    signature: 'Const *

      _readConst(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: READ_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:287,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:290,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:291,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:292,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:294,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:296,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:299,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:301,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:302,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 305
    functionName: _readBoolExpr
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_strtok
    - READ_DONE
    - READ_LOCATION_FIELD
    - strncmp
    - READ_NODE_FIELD
    - READ_LOCALS
    linkageType: ''
    returnType: BoolExpr
    signature: 'BoolExpr *

      _readBoolExpr(void)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: READ_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:310,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:313,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:314,1
    - Dst: nodeRead
      Src: /src/postgres/src/backend/nodes/readfuncs.c:318,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/readfuncs.c:321,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:324,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:327,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:330,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:333,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:336,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:339,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/readfuncs.c:340,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:345,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:347,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 307
    functionDepth: 7
    functionLinenumber: 307
    functionLinenumberEnd: 348
    functionName: _readA_Const
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - pg_strtok
    - READ_LOCALS
    - READ_DONE
    - READ_LOCATION_FIELD
    - strncmp
    - nodeTag
    - nodeRead
    linkageType: ''
    returnType: A_Const
    signature: 'A_Const *

      _readA_Const(void)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: READ_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:353,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:355,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:356,1
    - Dst: READ_ENUM_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:357,1
    - Dst: READ_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:362,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:363,1
    - Dst: READ_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:364,1
    - Dst: READ_INT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:365,1
    - Dst: READ_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:366,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:367,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:370,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:371,1
    - Dst: READ_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:373,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:374,1
    - Dst: READ_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:375,1
    - Dst: READ_INT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:376,1
    - Dst: READ_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:377,1
    - Dst: READ_ENUM_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:380,1
    - Dst: READ_INT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:381,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:382,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:383,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:384,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:385,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:388,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:389,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:392,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:404,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:405,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:406,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:407,1
    - Dst: READ_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:410,1
    - Dst: READ_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:411,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:412,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:413,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:414,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:415,1
    - Dst: READ_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:418,1
    - Dst: READ_FLOAT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:419,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:420,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:421,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:422,1
    - Dst: READ_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:424,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:427,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:428,1
    - Dst: READ_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:430,1
    - Dst: READ_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:431,1
    - Dst: READ_INT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:432,1
    - Dst: READ_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:433,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:439,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:442,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:447,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:448,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:449,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:451,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 86
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 452
    functionName: _readRangeTblEntry
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - READ_OID_FIELD
    - READ_STRING_FIELD
    - READ_CHAR_FIELD
    - READ_INT_FIELD
    - READ_DONE
    - READ_ENUM_FIELD
    - READ_BOOL_FIELD
    - READ_FLOAT_FIELD
    - READ_NODE_FIELD
    - READ_UINT_FIELD
    - READ_LOCALS
    linkageType: ''
    returnType: RangeTblEntry
    signature: 'RangeTblEntry *

      _readRangeTblEntry(void)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: READ_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:457,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:459,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:461,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:464,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:466,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:469,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:471,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:474,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:476,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:479,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:481,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:484,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:486,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:489,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:491,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:494,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:496,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:499,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:501,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:504,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:506,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:509,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:511,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:514,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:516,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:519,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:521,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:524,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:526,1
    - Dst: nodeRead
      Src: /src/postgres/src/backend/nodes/readfuncs.c:529,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:532,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:534,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:535,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:536,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:537,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:538,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:540,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 454
    functionDepth: 7
    functionLinenumber: 454
    functionLinenumberEnd: 541
    functionName: _readA_Expr
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_strtok
    - READ_LOCALS
    - READ_DONE
    - READ_LOCATION_FIELD
    - strncmp
    - READ_NODE_FIELD
    - nodeRead
    linkageType: ''
    returnType: A_Expr
    signature: 'A_Expr *

      _readA_Expr(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: READ_TEMP_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:550,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:552,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:553,1
    - Dst: nullable_string
      Src: /src/postgres/src/backend/nodes/readfuncs.c:555,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:557,1
    - Dst: GetExtensibleNodeMethods
      Src: /src/postgres/src/backend/nodes/readfuncs.c:558,1
    - Dst: newNode
      Src: /src/postgres/src/backend/nodes/readfuncs.c:560,1
    - Dst: ExtensibleNodeMethods*::nodeRead
      Src: /src/postgres/src/backend/nodes/readfuncs.c:565,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 543
    functionDepth: 7
    functionLinenumber: 543
    functionLinenumberEnd: 568
    functionName: _readExtensibleNode
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - GetExtensibleNodeMethods
    - pg_strtok
    - READ_TEMP_LOCALS
    - ExtensibleNodeMethods*::nodeRead
    - READ_DONE
    - nullable_string
    - newNode
    linkageType: ''
    returnType: ExtensibleNode
    signature: 'ExtensibleNode *

      _readExtensibleNode(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: READ_TEMP_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:582,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/readfuncs.c:585,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:587,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 579
    functionDepth: 1
    functionLinenumber: 579
    functionLinenumberEnd: 596
    functionName: parseNodeString
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 1
    functionsReached:
    - elog
    - pg_strtok
    - check_stack_depth
    - READ_TEMP_LOCALS
    linkageType: ''
    returnType: Node
    signature: 'Node *

      parseNodeString(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tokname
    - ','
    - namelen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 591
    functionName: MATCH
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MATCH(tokname, namelen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:618,1
    - Dst: atoui
      Src: /src/postgres/src/backend/nodes/readfuncs.c:619,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:621,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:623,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:629,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:634,1
    - Dst: atoi
      Src: /src/postgres/src/backend/nodes/readfuncs.c:635,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/readfuncs.c:642,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:645,1
    - Dst: atoi
      Src: /src/postgres/src/backend/nodes/readfuncs.c:646,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/nodes/readfuncs.c:648,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:651,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:653,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - typbyval
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 606
    functionDepth: 1
    functionLinenumber: 606
    functionLinenumberEnd: 657
    functionName: readDatum
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 1
    functionsReached:
    - elog
    - pg_strtok
    - atoi
    - PointerGetDatum
    - palloc
    - atoui
    linkageType: ''
    returnType: Datum
    signature: Datum readDatum(bool typbyval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - fnname
    - ','
    - datatype
    - ','
    - convfunc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 677
    functionName: READ_SCALAR_ARRAY
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_SCALAR_ARRAY(fnname, datatype, convfunc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:96,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:96,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:102,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:102,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:108,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:121,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:123,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - query
    - location
    - len
    argTypes:
    - char*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 130
    functionName: CleanQuerytext
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - strlen
    - scanner_isspace
    linkageType: ''
    returnType: char
    signature: 'char *

      CleanQuerytext(const char *query, int *location, int *len)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:143,1
    - Dst: IsQueryIdEnabled
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:143,1
    - Dst: InitJumble
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:145,1
    - Dst: DoJumble
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:147,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:153,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:156,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - query
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 162
    functionName: JumbleQuery
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - DoJumble
    - INT64CONST
    - Assert
    - IsQueryIdEnabled
    - InitJumble
    linkageType: ''
    returnType: JumbleState
    signature: 'JumbleState *

      JumbleQuery(Query *query)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 175
    functionName: EnableQueryId
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EnableQueryId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:186,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:189,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 203
    functionName: InitJumble
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - palloc
    - palloc_object
    linkageType: ''
    returnType: JumbleState
    signature: 'JumbleState *

      InitJumble(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _jumbleNode
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:214,1
    - Dst: FlushPendingNulls
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:218,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:225,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 228
    functionName: DoJumble
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - FlushPendingNulls
    - hash_any_extended
    - _jumbleNode
    - DatumGetInt64
    linkageType: ''
    returnType: int64
    signature: int64 DoJumble(JumbleState *jstate, Node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:243,1
    - Dst: likely
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:250,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:252,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:271,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:275,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:275,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:277,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:280,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:281,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - jstate
    - item
    - size
    argTypes:
    - JumbleState*
    - unsigned char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 292
    functionName: AppendJumbleInternal
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - DatumGetInt64
    - Assert
    - hash_any_extended
    - unlikely
    - likely
    - Min
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline AppendJumbleInternal(JumbleState *jstate,
      const unsigned char *item,\n\t\t\t\t\t Size size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FlushPendingNulls
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:302,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - jstate
    - value
    - size
    argTypes:
    - JumbleState*
    - unsigned char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 305
    functionName: AppendJumble
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - FlushPendingNulls
    - AppendJumbleInternal
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline AppendJumble(JumbleState *jstate, const unsigned char *value,
      Size size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jstate
    argTypes:
    - JumbleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 315
    functionName: AppendJumbleNull
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline AppendJumbleNull(JumbleState *jstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FlushPendingNulls
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:325,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jstate
    - value
    argTypes:
    - JumbleState*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 328
    functionName: AppendJumble8
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - FlushPendingNulls
    - AppendJumbleInternal
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline AppendJumble8(JumbleState *jstate, const unsigned char
      *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FlushPendingNulls
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:339,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jstate
    - value
    argTypes:
    - JumbleState*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 335
    functionDepth: 3
    functionLinenumber: 335
    functionLinenumberEnd: 342
    functionName: AppendJumble16
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - FlushPendingNulls
    - AppendJumbleInternal
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline AppendJumble16(JumbleState *jstate, const unsigned char
      *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FlushPendingNulls
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:353,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jstate
    - value
    argTypes:
    - JumbleState*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 349
    functionDepth: 3
    functionLinenumber: 349
    functionLinenumberEnd: 356
    functionName: AppendJumble32
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - FlushPendingNulls
    - AppendJumbleInternal
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline AppendJumble32(JumbleState *jstate, const unsigned char
      *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FlushPendingNulls
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:367,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jstate
    - value
    argTypes:
    - JumbleState*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 370
    functionName: AppendJumble64
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - FlushPendingNulls
    - AppendJumbleInternal
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline AppendJumble64(JumbleState *jstate, const unsigned char
      *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:381,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - jstate
    argTypes:
    - JumbleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 386
    functionName: FlushPendingNulls
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 6
    functionsReached:
    - Assert
    - AppendJumbleInternal
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline FlushPendingNulls(JumbleState *jstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:410,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:420,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - jstate
    - extern_param
    - location
    - len
    argTypes:
    - JumbleState*
    - bool
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 426
    functionName: RecordConstLocation
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - repalloc
    linkageType: ''
    returnType: void
    signature: void RecordConstLocation(JumbleState *jstate, bool extern_param, int
      location, int len)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:442,1
    - Dst: castNode
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:458,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:480,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:482,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:484,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:486,1
    - Dst: stack_is_too_deep
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:487,1
    - Dst: IsSquashableConstant
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:489,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - element
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 500
    functionName: IsSquashableConstant
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - foreach_current_index
    - foreach
    - castNode
    - IsSquashableConstant
    - lfirst
    - stack_is_too_deep
    - IsA
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: bool IsSquashableConstant(Node *element)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:518,1
    - Dst: IsSquashableConstant
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:523,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:523,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - elements
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 512
    functionDepth: 2
    functionLinenumber: 512
    functionLinenumberEnd: 528
    functionName: IsSquashableConstantList
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - list_length
    - IsSquashableConstant
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool IsSquashableConstantList(List *elements)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsSquashableConstant
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:523,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 525
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 339
    functionsReached:
    - IsSquashableConstant
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(temp, elements)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 532
    functionName: JUMBLE_NODE
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JUMBLE_NODE(item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - list
    - ','
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 534
    functionName: JUMBLE_ELEMENTS
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JUMBLE_ELEMENTS(list, node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - location
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 536
    functionName: JUMBLE_LOCATION
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JUMBLE_LOCATION(location)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 549
    functionName: JUMBLE_FIELD
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JUMBLE_FIELD(item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 556
    functionName: JUMBLE_STRING
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JUMBLE_STRING(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nodetype
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 559
    functionName: JUMBLE_CUSTOM
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JUMBLE_CUSTOM(nodetype, item)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: AppendJumbleNull
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:572,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:577,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:583,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:585,1
    - Dst: _jumbleList
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:593,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:598,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:599,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:604,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 605
    functionName: _jumbleNode
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - AppendJumbleNull
    - check_stack_depth
    - _jumbleList
    - JUMBLE_FIELD
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void _jumbleNode(JumbleState *jstate, Node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:616,1
    - Dst: _jumbleNode
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:617,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:617,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:620,1
    - Dst: AppendJumble32
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:621,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:621,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:624,1
    - Dst: AppendJumble32
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:625,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:625,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:628,1
    - Dst: AppendJumble32
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:629,1
    - Dst: lfirst_xid
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:629,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:632,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 607
    functionDepth: 4
    functionLinenumber: 607
    functionLinenumberEnd: 636
    functionName: _jumbleList
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - elog
    - _jumbleNode
    - foreach
    - lfirst_int
    - lfirst_xid
    - lfirst
    - lfirst_oid
    - AppendJumble32
    linkageType: ''
    returnType: void
    signature: void _jumbleList(JumbleState *jstate, Node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsSquashableConstantList
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:653,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:655,1
    - Dst: RecordConstLocation
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:661,1
    - Dst: _jumbleNode
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:673,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - jstate
    - elements
    - node
    argTypes:
    - JumbleState*
    - List*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 648
    functionDepth: 3
    functionLinenumber: 648
    functionLinenumberEnd: 675
    functionName: _jumbleElements
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - IsA
    - _jumbleNode
    - IsSquashableConstantList
    - RecordConstLocation
    linkageType: ''
    returnType: void
    signature: void _jumbleElements(JumbleState *jstate, List *elements, Node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:686,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:687,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:688,1
    - Dst: RecordConstLocation
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:697,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 681
    functionDepth: 2
    functionLinenumber: 681
    functionLinenumberEnd: 709
    functionName: _jumbleParam
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - JUMBLE_FIELD
    - RecordConstLocation
    linkageType: ''
    returnType: void
    signature: void _jumbleParam(JumbleState *jstate, Node *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:716,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:719,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:720,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:723,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:726,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:729,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:732,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:735,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:738,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:739,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 743
    functionName: _jumbleA_Const
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - JUMBLE_FIELD
    - nodeTag
    - JUMBLE_STRING
    linkageType: ''
    returnType: void
    signature: void _jumbleA_Const(JumbleState *jstate, Node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:750,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:751,1
    - Dst: JUMBLE_NODE
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:758,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:759,1
    - Dst: JUMBLE_LOCATION
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:760,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 761
    functionName: _jumbleVariableSetStmt
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - JUMBLE_FIELD
    - JUMBLE_NODE
    - JUMBLE_STRING
    - JUMBLE_LOCATION
    linkageType: ''
    returnType: void
    signature: void _jumbleVariableSetStmt(JumbleState *jstate, Node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:771,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - jstate
    - rte
    - expr
    argTypes:
    - JumbleState*
    - RangeTblEntry*
    - Alias*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 777
    functionName: _jumbleRangeTblEntry_eref
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - JUMBLE_FIELD
    - JUMBLE_STRING
    linkageType: ''
    returnType: void
    signature: "void _jumbleRangeTblEntry_eref(JumbleState *jstate,\n\t\t\t\t\t\t
      \ RangeTblEntry *rte,\n\t\t\t\t\t\t  Alias *expr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 789
    functionName: CompLocation
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int CompLocation(const void *a, const void *b)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:835,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:836,1
    - Dst: qsort
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:843,1
    - Dst: scanner_init
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:847,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:874,1
    - Dst: core_yylex
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:882,1
    - Dst: core_yylex
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:908,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:917,1
    - Dst: scanner_finish
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:927,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 36
    argCount: 3
    argNames:
    - jstate
    - query
    - query_loc
    argTypes:
    - JumbleState*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 930
    functionName: ComputeConstantLengths
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - qsort
    - memcpy
    - Assert
    - core_yylex
    - palloc_array
    - scanner_init
    - strlen
    - scanner_finish
    linkageType: ''
    returnType: LocationLen
    signature: "LocationLen *\nComputeConstantLengths(const JumbleState *jstate, const
      char *query,\n\t\t\t\t\t   int query_loc)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/nodes/extensible.c:53,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/extensible.c:57,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/extensible.c:58,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/nodes/extensible.c:60,1
    - Dst: ereport
      Src: /src/postgres/src/backend/nodes/extensible.c:64,1
    - Dst: errcode
      Src: /src/postgres/src/backend/nodes/extensible.c:65,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/nodes/extensible.c:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - p_htable
    - htable_label
    - extnodename
    - extnodemethods
    argTypes:
    - HTAB**
    - char*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 70
    functionName: RegisterExtensibleNodeEntry
    functionSourceFile: /src/postgres/src/backend/nodes/extensible.c
    functionUses: 0
    functionsReached:
    - elog
    - hash_search
    - errcode
    - ereport
    - hash_create
    - strlen
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void RegisterExtensibleNodeEntry(HTAB **p_htable, const char *htable_label,\n\t\t\t\t\t\t\tconst
      char *extnodename,\n\t\t\t\t\t\t\tconst void *extnodemethods)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RegisterExtensibleNodeEntry
      Src: /src/postgres/src/backend/nodes/extensible.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - methods
    argTypes:
    - ExtensibleNodeMethods*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 82
    functionName: RegisterExtensibleNodeMethods
    functionSourceFile: /src/postgres/src/backend/nodes/extensible.c
    functionUses: 0
    functionsReached:
    - RegisterExtensibleNodeEntry
    linkageType: ''
    returnType: void
    signature: void RegisterExtensibleNodeMethods(const ExtensibleNodeMethods *methods)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RegisterExtensibleNodeEntry
      Src: /src/postgres/src/backend/nodes/extensible.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - methods
    argTypes:
    - CustomScanMethods*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 94
    functionName: RegisterCustomScanMethods
    functionSourceFile: /src/postgres/src/backend/nodes/extensible.c
    functionUses: 0
    functionsReached:
    - RegisterExtensibleNodeEntry
    linkageType: ''
    returnType: void
    signature: void RegisterCustomScanMethods(const CustomScanMethods *methods)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/nodes/extensible.c:105,1
    - Dst: ereport
      Src: /src/postgres/src/backend/nodes/extensible.c:112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/nodes/extensible.c:113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/nodes/extensible.c:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - htable
    - extnodename
    - missing_ok
    argTypes:
    - HTAB*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 119
    functionName: GetExtensibleNodeEntry
    functionSourceFile: /src/postgres/src/backend/nodes/extensible.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - hash_search
    - errcode
    linkageType: ''
    returnType: void
    signature: 'void *

      GetExtensibleNodeEntry(HTAB *htable, const char *extnodename, bool missing_ok)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetExtensibleNodeEntry
      Src: /src/postgres/src/backend/nodes/extensible.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - extnodename
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 131
    functionName: GetExtensibleNodeMethods
    functionSourceFile: /src/postgres/src/backend/nodes/extensible.c
    functionUses: 4
    functionsReached:
    - GetExtensibleNodeEntry
    linkageType: ''
    returnType: ExtensibleNodeMethods
    signature: 'ExtensibleNodeMethods *

      GetExtensibleNodeMethods(const char *extnodename, bool missing_ok)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetExtensibleNodeEntry
      Src: /src/postgres/src/backend/nodes/extensible.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - CustomName
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 143
    functionName: GetCustomScanMethods
    functionSourceFile: /src/postgres/src/backend/nodes/extensible.c
    functionUses: 0
    functionsReached:
    - GetExtensibleNodeEntry
    linkageType: ''
    returnType: CustomScanMethods
    signature: 'CustomScanMethods *

      GetCustomScanMethods(const char *CustomName, bool missing_ok)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/params.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - numParams
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 63
    functionName: makeParamList
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 3
    functionsReached:
    - palloc
    linkageType: ''
    returnType: ParamListInfo
    signature: ParamListInfo makeParamList(int numParams)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeParamList
      Src: /src/postgres/src/backend/nodes/params.c:85,1
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/nodes/params.c:97,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/params.c:105,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/nodes/params.c:107,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/nodes/params.c:108,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - from
    argTypes:
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 112
    functionName: copyParamList
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached:
    - get_typlenbyval
    - datumCopy
    - makeParamList
    - ParamListInfo::paramFetch
    - OidIsValid
    linkageType: ''
    returnType: ParamListInfo
    signature: ParamListInfo copyParamList(ParamListInfo from)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pstate
    - arg
    argTypes:
    - ParseState*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 125
    functionName: paramlist_parser_setup
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void paramlist_parser_setup(ParseState *pstate, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/nodes/params.c:145,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/params.c:149,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/params.c:152,1
    - Dst: get_typcollation
      Src: /src/postgres/src/backend/nodes/params.c:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - pstate
    - pref
    argTypes:
    - ParseState*
    - ParamRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 161
    functionName: paramlist_param_ref
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - ParamListInfo::paramFetch
    - get_typcollation
    - makeNode
    linkageType: ''
    returnType: Node
    signature: 'Node *

      paramlist_param_ref(ParseState *pstate, ParamRef *pref)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/nodes/params.c:184,1
    - Dst: add_size
      Src: /src/postgres/src/backend/nodes/params.c:190,1
    - Dst: add_size
      Src: /src/postgres/src/backend/nodes/params.c:191,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/params.c:194,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/nodes/params.c:195,1
    - Dst: add_size
      Src: /src/postgres/src/backend/nodes/params.c:202,1
    - Dst: datumEstimateSpace
      Src: /src/postgres/src/backend/nodes/params.c:203,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - paramLI
    argTypes:
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 207
    functionName: EstimateParamListSpace
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached:
    - add_size
    - get_typlenbyval
    - datumEstimateSpace
    - ParamListInfo::paramFetch
    - OidIsValid
    linkageType: ''
    returnType: Size
    signature: Size EstimateParamListSpace(ParamListInfo paramLI)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:237,1
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/nodes/params.c:251,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:258,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:262,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/params.c:266,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/nodes/params.c:267,1
    - Dst: datumSerialize
      Src: /src/postgres/src/backend/nodes/params.c:274,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - paramLI
    - start_address
    argTypes:
    - ParamListInfo
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 277
    functionName: SerializeParamList
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached:
    - memcpy
    - get_typlenbyval
    - datumSerialize
    - ParamListInfo::paramFetch
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void SerializeParamList(ParamListInfo paramLI, char **start_address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:295,1
    - Dst: makeParamList
      Src: /src/postgres/src/backend/nodes/params.c:298,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:305,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:309,1
    - Dst: datumRestore
      Src: /src/postgres/src/backend/nodes/params.c:313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - start_address
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 317
    functionName: RestoreParamList
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached:
    - memcpy
    - datumRestore
    - makeParamList
    linkageType: ''
    returnType: ParamListInfo
    signature: ParamListInfo RestoreParamList(char **start_address)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/nodes/params.c:351,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/nodes/params.c:355,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/nodes/params.c:358,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/nodes/params.c:361,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/params.c:367,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/params.c:372,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/params.c:373,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/backend/nodes/params.c:377,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/nodes/params.c:385,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/nodes/params.c:386,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/backend/nodes/params.c:387,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/nodes/params.c:392,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/nodes/params.c:393,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - params
    - knownTextValues
    - maxlen
    argTypes:
    - ParamListInfo
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 332
    functionDepth: 3
    functionLinenumber: 332
    functionLinenumberEnd: 396
    functionName: BuildParamLogString
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 2
    functionsReached:
    - appendStringInfoStringQuoted
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - MemoryContextSwitchTo
    - IsAbortedTransactionBlockState
    - MemoryContextDelete
    - OidOutputFunctionCall
    - AllocSetContextCreate
    - OidIsValid
    - getTypeOutputInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      BuildParamLogString(ParamListInfo params, char **knownTextValues, int maxlen)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/backend/nodes/params.c:415,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/nodes/params.c:418,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 420
    functionName: ParamsErrorCallback
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached:
    - errcontext
    linkageType: ''
    returnType: void
    signature: void ParamsErrorCallback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:50,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:52,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:53,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:55,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:56,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:57,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - a
    - listidx
    - bitidx
    argTypes:
    - List*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 43
    functionDepth: 6
    functionLinenumber: 43
    functionLinenumberEnd: 60
    functionName: mbms_add_member
    functionSourceFile: /src/postgres/src/backend/nodes/multibitmapset.c
    functionUses: 2
    functionsReached:
    - elog
    - lappend
    - list_nth_cell
    - lfirst
    - list_length
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      mbms_add_member(List *a, int listidx, int bitidx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:77,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:77,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:78,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:82,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:83,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:85,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 70
    functionDepth: 6
    functionLinenumber: 70
    functionLinenumberEnd: 89
    functionName: mbms_add_members
    functionSourceFile: /src/postgres/src/backend/nodes/multibitmapset.c
    functionUses: 3
    functionsReached:
    - lappend
    - bms_add_members
    - lfirst
    - list_length
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      mbms_add_members(List *a, const List *b)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:82,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:83,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:85,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 80
    functionDepth: 4
    functionLinenumber: 80
    functionLinenumberEnd: 87
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/nodes/multibitmapset.c
    functionUses: 16
    functionsReached:
    - bms_add_members
    - lfirst
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void forboth(lca, a, lcb, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_truncate
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:106,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:106,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:110,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:111,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:113,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 99
    functionDepth: 3
    functionLinenumber: 99
    functionLinenumberEnd: 117
    functionName: mbms_int_members
    functionSourceFile: /src/postgres/src/backend/nodes/multibitmapset.c
    functionUses: 1
    functionsReached:
    - list_truncate
    - lfirst
    - bms_int_members
    - list_length
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      mbms_int_members(List *a, const List *b)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:110,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:111,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:113,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 3
    functionLinenumber: 108
    functionLinenumberEnd: 115
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/nodes/multibitmapset.c
    functionUses: 16
    functionsReached:
    - lfirst
    - bms_int_members
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void forboth(lca, a, lcb, b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:132,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:133,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:135,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:136,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - listidx
    - bitidx
    - a
    argTypes:
    - int
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 137
    functionName: mbms_is_member
    functionSourceFile: /src/postgres/src/backend/nodes/multibitmapset.c
    functionUses: 1
    functionsReached:
    - elog
    - list_nth_node
    - bms_is_member
    - list_length
    linkageType: ''
    returnType: bool
    signature: bool mbms_is_member(int listidx, int bitidx, const List *a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:155,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:156,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:158,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:159,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 145
    functionDepth: 3
    functionLinenumber: 145
    functionLinenumberEnd: 162
    functionName: mbms_overlap_sets
    functionSourceFile: /src/postgres/src/backend/nodes/multibitmapset.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - foreach_current_index
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      mbms_overlap_sets(const List *a, const List *b)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:155,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:156,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:158,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:159,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/nodes/multibitmapset.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/nodes/multibitmapset.c
    functionUses: 16
    functionsReached:
    - bms_overlap
    - foreach_current_index
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void forboth(lca, a, lcb, b)
  - BBCount: 64
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:49,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:79,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:107,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:108,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:110,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:111,1
    - Dst: get_promoted_array_type
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:114,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:116,1
    - Dst: errcode
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:117,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:118,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:119,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:119,1
    - Dst: get_promoted_array_type
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:145,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:146,1
    - Dst: ereport
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:147,1
    - Dst: errcode
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:149,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:150,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:170,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:170,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:192,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:230,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:250,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:278,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:282,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:285,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:291,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:291,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 199
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 296
    functionName: exprType
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 73
    functionsReached:
    - elog
    - format_type_be
    - linitial_node
    - exprType
    - Assert
    - errcode
    - linitial
    - ereport
    - errmsg
    - OidIsValid
    - IsA
    - get_promoted_array_type
    - nodeTag
    linkageType: ''
    returnType: Oid
    signature: Oid exprType(const Node *expr)
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:309,1
    - Dst: exprIsLengthCoercion
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:324,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:329,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:338,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:338,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:352,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:353,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:355,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:356,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:381,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:381,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:391,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:405,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:407,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:410,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:412,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:414,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:416,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:437,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:437,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:444,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:446,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:448,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:450,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:467,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:467,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:469,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:469,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:472,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:474,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:476,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:478,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:495,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:495,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:497,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:497,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:500,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:502,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:504,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:506,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:515,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:529,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:539,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:541,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 148
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 548
    functionName: exprTypmod
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 31
    functionsReached:
    - elog
    - exprTypmod
    - foreach
    - linitial_node
    - Assert
    - exprIsLengthCoercion
    - linitial
    - exprType
    - for_each_from
    - lfirst
    - IsA
    - nodeTag
    - lfirst_node
    linkageType: ''
    returnType: int32
    signature: int32 exprTypmod(const Node *expr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:571,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:589,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:593,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:594,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:603,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:608,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 2
    argNames:
    - expr
    - coercedTypmod
    argTypes:
    - Node*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 626
    functionName: exprIsLengthCoercion
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - list_length
    - DatumGetInt32
    - lsecond
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool exprIsLengthCoercion(const Node *expr, int32 *coercedTypmod)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:649,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:652,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:658,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:665,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:666,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:667,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:675,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 7
    argNames:
    - arg
    - rtype
    - rtypmod
    - rcollid
    - rformat
    - rlocation
    - overwrite_ok
    argTypes:
    - Node*
    - Oid
    - int32
    - Oid
    - CoercionForm
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 640
    functionDepth: 3
    functionLinenumber: 640
    functionLinenumberEnd: 685
    functionName: applyRelabelType
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 4
    functionsReached:
    - exprTypmod
    - copyObject
    - exprType
    - makeNode
    - exprCollation
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\napplyRelabelType(Node *arg, Oid rtype, int32 rtypmod, Oid
      rcollid,\n\t\t\t\t CoercionForm rformat, int rlocation, bool overwrite_ok)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:696,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:696,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - expr
    - typmod
    argTypes:
    - Node*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 693
    functionDepth: 4
    functionLinenumber: 693
    functionLinenumberEnd: 698
    functionName: relabel_to_typmod
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - exprType
    - applyRelabelType
    - exprCollation
    linkageType: ''
    returnType: Node
    signature: 'Node *

      relabel_to_typmod(Node *expr, int32 typmod)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:714,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:719,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:719,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:721,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:726,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:728,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:733,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:735,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:740,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:742,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:747,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:749,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:754,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 757
    functionName: strip_implicit_coercions
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - linitial
    - IsA
    - strip_implicit_coercions
    linkageType: ''
    returnType: Node
    signature: 'Node *

      strip_implicit_coercions(Node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expression_returns_set_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 771
    functionName: expression_returns_set
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 9
    functionsReached:
    - expression_returns_set_walker
    linkageType: ''
    returnType: bool
    signature: bool expression_returns_set(Node *clause)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:778,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:786,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:802,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:804,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:806,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:809,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 811
    functionName: expression_returns_set_walker
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool expression_returns_set_walker(Node *node, void *context)
  - BBCount: 61
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:833,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:863,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:893,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:894,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:896,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:897,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:930,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:930,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:999,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1012,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1014,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1035,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1066,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1069,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1072,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1078,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1078,1
    CyclomaticComplexity: 64
    EdgeCount: 64
    ICount: 188
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 1083
    functionName: exprCollation
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 56
    functionsReached:
    - elog
    - linitial_node
    - Assert
    - linitial
    - exprCollation
    - IsA
    - nodeTag
    linkageType: ''
    returnType: Oid
    signature: Oid exprCollation(const Node *expr)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1099,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1091
    functionDepth: 1
    functionLinenumber: 1091
    functionLinenumberEnd: 1130
    functionName: exprInputCollation
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 3
    functionsReached:
    - nodeTag
    linkageType: ''
    returnType: Oid
    signature: Oid exprInputCollation(const Node *expr)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1157,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1172,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1185,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1185,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1189,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1189,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1203,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1204,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1206,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1207,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1212,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1212,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1222,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1235,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1245,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1249,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1263,1
    - Dst: exprSetCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1268,1
    - Dst: exprSetCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1277,1
    - Dst: exprSetCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1281,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1281,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1286,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1286,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1296,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1297,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1301,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1305,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1318,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1322,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1322,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1325,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1325,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 147
    argCount: 2
    argNames:
    - expr
    - collation
    argTypes:
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1139
    functionDepth: 2
    functionLinenumber: 1139
    functionLinenumberEnd: 1328
    functionName: exprSetCollation
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - elog
    - linitial_node
    - Assert
    - exprSetCollation
    - exprCollation
    - OidIsValid
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void exprSetCollation(Node *expr, Oid collation)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1341,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - expr
    - inputcollation
    argTypes:
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1370
      start: 1338
    functionDepth: 1
    functionLinenumber: 1338
    functionLinenumberEnd: 1370
    functionName: exprSetInputCollation
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void exprSetInputCollation(Node *expr, Oid inputcollation)
  - BBCount: 92
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1409,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1442,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1449,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1450,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1458,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1459,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1469,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1470,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1478,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1479,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1491,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1492,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1500,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1500,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1506,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1510,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1517,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1518,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1526,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1527,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1535,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1536,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1544,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1545,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1550,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1570,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1589,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1590,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1597,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1610,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1611,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1615,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1622,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1623,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1631,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1632,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1640,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1641,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1651,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1655,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1659,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1667,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1669,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1669,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1681,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1682,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1700,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1701,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1713,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1723,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1724,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1725,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1730,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1734,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1784,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1799,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1802,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1806,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1810,1
    CyclomaticComplexity: 91
    EdgeCount: 91
    ICount: 295
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1402
    functionDepth: 1
    functionLinenumber: 1402
    functionLinenumberEnd: 1830
    functionName: exprLocation
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 2
    functionsReached:
    - foreach
    - leftmostLoc
    - lfirst
    - exprLocation
    - nodeTag
    linkageType: ''
    returnType: int
    signature: int exprLocation(const Node *expr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1845,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - loc1
    - loc2
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1837
    functionDepth: 0
    functionLinenumber: 1837
    functionLinenumberEnd: 1846
    functionName: leftmostLoc
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - Min
    linkageType: ''
    returnType: int
    signature: int leftmostLoc(int loc1, int loc2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fix_opfuncids_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1863
      start: 1858
    functionDepth: 1
    functionLinenumber: 1858
    functionLinenumberEnd: 1863
    functionName: fix_opfuncids
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 8
    functionsReached:
    - fix_opfuncids_walker
    linkageType: ''
    returnType: void
    signature: void fix_opfuncids(Node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1870,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1871,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1872,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1873,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1874,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1875,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1876,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1877,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1878,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1865
    functionDepth: 1
    functionLinenumber: 1865
    functionLinenumberEnd: 1879
    functionName: fix_opfuncids_walker
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - set_opfuncid
    - IsA
    - set_sa_opfuncid
    linkageType: ''
    returnType: bool
    signature: bool fix_opfuncids_walker(Node *node, void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_opcode
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1893,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - opexpr
    argTypes:
    - OpExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1889
    functionDepth: 1
    functionLinenumber: 1889
    functionLinenumberEnd: 1894
    functionName: set_opfuncid
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 10
    functionsReached:
    - get_opcode
    linkageType: ''
    returnType: void
    signature: void set_opfuncid(OpExpr *opexpr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_opcode
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1904,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - opexpr
    argTypes:
    - ScalarArrayOpExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1900
    functionDepth: 1
    functionLinenumber: 1900
    functionLinenumberEnd: 1905
    functionName: set_sa_opfuncid
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 5
    functionsReached:
    - get_opcode
    linkageType: ''
    returnType: void
    signature: void set_sa_opfuncid(ScalarArrayOpExpr *opexpr)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1931,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1937,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1945,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1953,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1964,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1965,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1973,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1974,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1986,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1988,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1991,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1991,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1993,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2002,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2004,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2004,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2006,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 51
    argCount: 3
    argNames:
    - node
    - checker
    - context
    argTypes:
    - Node*
    - check_function_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 1927
    functionDepth: 2
    functionLinenumber: 1927
    functionLinenumberEnd: 2015
    functionName: check_functions_in_node
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 6
    functionsReached:
    - getTypeInputInfo
    - set_sa_opfuncid
    - get_opcode
    - foreach
    - exprType
    - set_opfuncid
    - checker
    - lfirst_oid
    - getTypeOutputInfo
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: "bool check_functions_in_node(Node *node, check_function_callback checker,\n\t\t\t\t\t\tvoid
      *context)"
  - BBCount: 198
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2133,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2135,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2155,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2161,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2163,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2165,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2167,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2169,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2177,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2186,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2188,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2190,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2198,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2207,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2209,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2212,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2215,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2223,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2228,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2235,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2243,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2251,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2259,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2266,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2274,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2277,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2282,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2284,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2289,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2291,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2296,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2298,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2303,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2305,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2310,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2312,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2317,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2320,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2322,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2324,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2326,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2329,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2334,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2337,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2342,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2344,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2349,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2351,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2356,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2359,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2367,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2369,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2377,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2379,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2381,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2386,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2391,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2393,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2395,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2398,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2400,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2408,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2413,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2415,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2417,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2419,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2427,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2429,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2431,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2433,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2441,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2443,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2455,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2458,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2460,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2468,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2470,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2478,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2486,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2494,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2502,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2504,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2506,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2514,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2516,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2524,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2526,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2535,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2537,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2539,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2547,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2552,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2554,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2554,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2562,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2564,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2572,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2574,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2576,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2578,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2580,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2588,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2590,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2598,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2600,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2602,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2604,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2606,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2608,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2616,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2627,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2629,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2631,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2643,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2645,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2655,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2657,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2662,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2664,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2666,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2671,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2676,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2678,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2683,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2685,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2693,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2695,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2697,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2699,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2701,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2703,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2705,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2713,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2715,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2717,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2725,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2727,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2732,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2733,1
    CyclomaticComplexity: 160
    EdgeCount: 160
    ICount: 434
    argCount: 3
    argNames:
    - node
    - walker
    - context
    argTypes:
    - Node*
    - tree_walker_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2740
      start: 2110
    functionDepth: 1
    functionLinenumber: 2110
    functionLinenumberEnd: 2740
    functionName: expression_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - WALK
    - foreach
    - check_stack_depth
    - LIST_WALK
    - lfirst
    - nodeTag
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: "bool expression_tree_walker_impl(Node *node,\n\t\t\t\t\t\t\ttree_walker_callback
      walker,\n\t\t\t\t\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2126
      start: 2125
    functionDepth: 0
    functionLinenumber: 2125
    functionLinenumberEnd: 2126
    functionName: WALK
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WALK(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2128
      start: 2127
    functionDepth: 0
    functionLinenumber: 2127
    functionLinenumberEnd: 2128
    functionName: LIST_WALK
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_WALK(l)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2763,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2763,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2772,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2774,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2776,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2778,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2780,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2782,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2784,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2786,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2788,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2790,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2792,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2794,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2804,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2806,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2808,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2810,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2821,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2823,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2825,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2827,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2846,1
    - Dst: range_table_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2851,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 52
    argCount: 4
    argNames:
    - query
    - walker
    - context
    - flags
    argTypes:
    - Query*
    - tree_walker_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2855
      start: 2757
    functionDepth: 1
    functionLinenumber: 2757
    functionLinenumberEnd: 2855
    functionName: query_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - WALK
    - foreach
    - Assert
    - range_table_walker
    - IsA
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: "bool query_tree_walker_impl(Query *query,\n\t\t\t\t\t   tree_walker_callback
      walker,\n\t\t\t\t\t   void *context,\n\t\t\t\t\t   int flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2872,1
    - Dst: range_table_entry_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2874,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - rtable
    - walker
    - context
    - flags
    argTypes:
    - List*
    - tree_walker_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2878
      start: 2862
    functionDepth: 1
    functionLinenumber: 2862
    functionLinenumberEnd: 2878
    functionName: range_table_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - range_table_entry_walker
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: "bool range_table_walker_impl(List *rtable,\n\t\t\t\t\t\ttree_walker_callback
      walker,\n\t\t\t\t\t\tvoid *context,\n\t\t\t\t\t\tint flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2872,1
    - Dst: range_table_entry_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2874,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2876
      start: 2870
    functionDepth: 1
    functionLinenumber: 2870
    functionLinenumberEnd: 2876
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 345
    functionsReached:
    - range_table_entry_walker
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(rt, rtable)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2895,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2901,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2906,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2911,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2915,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2919,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2923,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2927,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2929,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2939,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2944,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2948,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 53
    argCount: 4
    argNames:
    - rte
    - walker
    - context
    - flags
    argTypes:
    - RangeTblEntry*
    - tree_walker_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2952
      start: 2883
    functionDepth: 1
    functionLinenumber: 2883
    functionLinenumberEnd: 2952
    functionName: range_table_entry_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - WALK
    linkageType: ''
    returnType: bool
    signature: "bool range_table_entry_walker_impl(RangeTblEntry *rte,\n\t\t\t\t\t\t\t
      \ tree_walker_callback walker,\n\t\t\t\t\t\t\t  void *context,\n\t\t\t\t\t\t\t
      \ int flags)"
  - BBCount: 86
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3038,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3040,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3052,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3062,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3081,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3087,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3088,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3096,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3098,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3099,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3100,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3101,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3102,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3103,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3112,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3113,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3124,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3125,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3135,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3136,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3137,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3146,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3147,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3156,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3157,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3159,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3161,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3163,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3174,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3175,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3184,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3185,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3194,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3195,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3204,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3205,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3214,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3215,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3224,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3225,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3234,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3235,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3244,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3245,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3251,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3260,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3262,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3264,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3274,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3275,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3284,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3285,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3294,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3295,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3296,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3297,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3306,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3307,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3316,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3317,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3326,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3327,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3328,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3337,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3338,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3347,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3348,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3357,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3358,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3359,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3360,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3369,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3370,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3371,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3380,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3381,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3390,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3391,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3401,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3402,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3403,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3412,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3413,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3422,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3423,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3432,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3433,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3435,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3444,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3445,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3454,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3455,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3456,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3457,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3466,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3467,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3468,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3469,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3470,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3479,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3480,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3481,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3490,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3491,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3492,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3493,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3495,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3496,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3505,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3506,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3515,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3516,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3525,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3526,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3535,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3536,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3545,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3546,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3555,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3556,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3568,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3569,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3570,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3571,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3572,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3581,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3582,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3583,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3592,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3598,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3600,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3601,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3611,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3612,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3613,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3614,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3623,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3624,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3639,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3641,1
    - Dst: mutator
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3642,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3642,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3653,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3654,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3655,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3664,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3665,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3666,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3667,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3668,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3669,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3679,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3680,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3681,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3691,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3692,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3693,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3694,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3695,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3696,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3697,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3707,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3708,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3715,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3721,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3722,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3723,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3724,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3734,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3735,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3736,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3746,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3747,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3748,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3757,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3758,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3768,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3769,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3778,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3779,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3789,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3790,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3800,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3801,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3811,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3812,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3813,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3822,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3823,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3824,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3825,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3826,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3827,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3828,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3829,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3838,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3839,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3840,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3841,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3842,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3851,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3852,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3853,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3858,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3859,1
    CyclomaticComplexity: 65
    EdgeCount: 65
    ICount: 491
    argCount: 3
    argNames:
    - node
    - mutator
    - context
    argTypes:
    - Node*
    - tree_mutator_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3864
      start: 3017
    functionDepth: 6
    functionLinenumber: 3017
    functionLinenumberEnd: 3864
    functionName: expression_tree_mutator_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - FLATCOPY
    - copyObject
    - MUTATE
    - foreach
    - lappend
    - check_stack_depth
    - mutator
    - lfirst
    - list_copy
    - nodeTag
    linkageType: ''
    returnType: Node
    signature: "Node *\nexpression_tree_mutator_impl(Node *node,\n\t\t\t\t\t\t\t tree_mutator_callback
      mutator,\n\t\t\t\t\t\t\t void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - newnode
    - ','
    - node
    - ','
    - nodetype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3030
      start: 3027
    functionDepth: 0
    functionLinenumber: 3027
    functionLinenumberEnd: 3030
    functionName: FLATCOPY
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLATCOPY(newnode, node, nodetype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - newfield
    - ','
    - oldfield
    - ','
    - fieldtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3033
      start: 3031
    functionDepth: 0
    functionLinenumber: 3031
    functionLinenumberEnd: 3033
    functionName: MUTATE
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUTATE(newfield, oldfield, fieldtype)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3892,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3892,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3898,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3902,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3903,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3904,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3905,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3906,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3907,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3908,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3909,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3910,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3911,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3912,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3913,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3923,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3924,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3925,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3926,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3938,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3940,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3943,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3944,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3945,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3947,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3965,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3967,1
    - Dst: range_table_mutator
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3968,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 4
    argNames:
    - query
    - mutator
    - context
    - flags
    argTypes:
    - Query*
    - tree_mutator_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3971
      start: 3886
    functionDepth: 6
    functionLinenumber: 3886
    functionLinenumberEnd: 3971
    functionName: query_tree_mutator_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - FLATCOPY
    - copyObject
    - MUTATE
    - foreach
    - Assert
    - lappend
    - IsA
    - range_table_mutator
    - lfirst_node
    linkageType: ''
    returnType: Query
    signature: "Query *\nquery_tree_mutator_impl(Query *query,\n\t\t\t\t\t\ttree_mutator_callback
      mutator,\n\t\t\t\t\t\tvoid *context,\n\t\t\t\t\t\tint flags)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3989,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3992,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3996,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4002,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4006,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4011,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4015,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4019,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4022,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4025,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4028,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4029,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4038,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4042,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4046,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4047,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 4
    argNames:
    - rtable
    - mutator
    - context
    - flags
    argTypes:
    - List*
    - tree_mutator_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4050
      start: 3978
    functionDepth: 6
    functionLinenumber: 3978
    functionLinenumberEnd: 4050
    functionName: range_table_mutator_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - FLATCOPY
    - copyObject
    - MUTATE
    - lappend
    - lfirst
    linkageType: ''
    returnType: List
    signature: "List *\nrange_table_mutator_impl(List *rtable,\n\t\t\t\t\t\t tree_mutator_callback
      mutator,\n\t\t\t\t\t\t void *context,\n\t\t\t\t\t\t int flags)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3989,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3992,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3996,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4002,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4006,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4011,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4015,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4019,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4022,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4025,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4028,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4029,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4038,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4042,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4046,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4047,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4048
      start: 3987
    functionDepth: 6
    functionLinenumber: 3987
    functionLinenumberEnd: 4048
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 347
    functionsReached:
    - FLATCOPY
    - copyObject
    - MUTATE
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(rt, rtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4066,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4067,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4072,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 4
    argNames:
    - node
    - walker
    - context
    - flags
    argTypes:
    - Node*
    - tree_walker_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4073
      start: 4060
    functionDepth: 1
    functionLinenumber: 4060
    functionLinenumberEnd: 4073
    functionName: query_or_expression_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - IsA
    - query_tree_walker
    - WALK
    linkageType: ''
    returnType: bool
    signature: "bool query_or_expression_tree_walker_impl(Node *node,\n\t\t\t\t\t\t\t\t\t
      tree_walker_callback walker,\n\t\t\t\t\t\t\t\t\t void *context,\n\t\t\t\t\t\t\t\t\t
      int flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4089,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4090,1
    - Dst: mutator
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4095,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 4
    argNames:
    - node
    - mutator
    - context
    - flags
    argTypes:
    - Node*
    - tree_mutator_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4096
      start: 4083
    functionDepth: 1
    functionLinenumber: 4083
    functionLinenumberEnd: 4096
    functionName: query_or_expression_tree_mutator_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - mutator
    - query_tree_mutator
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\nquery_or_expression_tree_mutator_impl(Node *node,\n\t\t\t\t\t\t\t\t\t
      \ tree_mutator_callback mutator,\n\t\t\t\t\t\t\t\t\t  void *context,\n\t\t\t\t\t\t\t\t\t
      \ int flags)"
  - BBCount: 255
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4129,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4131,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4153,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4155,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4160,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4163,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4171,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4174,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4176,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4178,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4180,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4183,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4189,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4191,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4193,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4198,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4201,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4206,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4211,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4213,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4215,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4223,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4225,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4233,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4235,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4243,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4245,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4253,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4255,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4257,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4259,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4264,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4266,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4271,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4273,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4275,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4277,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4279,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4281,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4289,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4297,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4299,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4301,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4303,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4305,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4313,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4315,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4317,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4319,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4324,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4326,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4328,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4333,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4335,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4337,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4339,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4348,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4352,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4357,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4359,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4359,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4367,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4369,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4371,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4373,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4375,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4377,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4385,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4387,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4389,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4391,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4393,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4401,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4403,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4405,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4407,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4409,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4411,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4419,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4421,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4423,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4425,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4427,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4429,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4437,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4439,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4441,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4449,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4451,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4459,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4461,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4463,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4465,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4467,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4469,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4471,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4473,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4475,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4477,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4479,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4481,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4483,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4485,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4487,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4489,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4497,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4499,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4507,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4509,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4518,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4529,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4531,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4533,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4535,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4541,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4546,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4548,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4556,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4558,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4563,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4568,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4570,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4575,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4580,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4582,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4587,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4589,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4594,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4596,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4598,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4600,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4608,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4610,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4618,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4620,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4622,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4630,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4633,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4635,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4643,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4645,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4647,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4649,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4651,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4659,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4661,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4669,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4671,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4673,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4681,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4683,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4692,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4694,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4696,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4705,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4711,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4713,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4718,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4720,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4725,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4730,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4732,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4740,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4742,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4744,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4750,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4755,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4757,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4765,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4767,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4775,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4777,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4785,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4787,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4795,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4797,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4799,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4801,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4809,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4811,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4819,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4821,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4829,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4831,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4839,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4841,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4843,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4851,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4853,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4858,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4859,1
    CyclomaticComplexity: 222
    EdgeCount: 222
    ICount: 557
    argCount: 3
    argNames:
    - node
    - walker
    - context
    argTypes:
    - Node*
    - tree_walker_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4863
      start: 4114
    functionDepth: 1
    functionLinenumber: 4114
    functionLinenumberEnd: 4863
    functionName: raw_expression_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - WALK
    - foreach
    - check_stack_depth
    - lfirst
    - nodeTag
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: "bool raw_expression_tree_walker_impl(Node *node,\n\t\t\t\t\t\t\t\ttree_walker_callback
      walker,\n\t\t\t\t\t\t\t\tvoid *context)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4883,1
    - Dst: planstate_walk_subplans
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4886,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4890,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4892,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4892,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4897,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4899,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4899,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4904,1
    - Dst: planstate_walk_members
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4907,1
    - Dst: planstate_walk_members
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4913,1
    - Dst: planstate_walk_members
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4919,1
    - Dst: planstate_walk_members
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4925,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4931,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4935,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4937,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4937,1
    - Dst: planstate_walk_subplans
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4946,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 45
    argCount: 3
    argNames:
    - planstate
    - walker
    - context
    argTypes:
    - PlanState*
    - planstate_tree_walker_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4950
      start: 4871
    functionDepth: 1
    functionLinenumber: 4871
    functionLinenumberEnd: 4950
    functionName: planstate_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - innerPlanState
    - foreach
    - check_stack_depth
    - planstate_walk_subplans
    - outerPlanState
    - lfirst
    - PSWALK
    - planstate_walk_members
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: "bool planstate_tree_walker_impl(PlanState *planstate,\n\t\t\t\t\t\t
      \  planstate_tree_walker_callback walker,\n\t\t\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4881
      start: 4880
    functionDepth: 0
    functionLinenumber: 4880
    functionLinenumberEnd: 4881
    functionName: PSWALK
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PSWALK(n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4964,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4966,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - plans
    - walker
    - context
    argTypes:
    - List*
    - planstate_tree_walker_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4971
      start: 4955
    functionDepth: 1
    functionLinenumber: 4955
    functionLinenumberEnd: 4971
    functionName: planstate_walk_subplans
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - PSWALK
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: "bool planstate_walk_subplans(List *plans,\n\t\t\t\t\t\tplanstate_tree_walker_callback
      walker,\n\t\t\t\t\t\tvoid *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4964,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4966,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4968
      start: 4962
    functionDepth: 1
    functionLinenumber: 4962
    functionLinenumberEnd: 4968
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 349
    functionsReached:
    - PSWALK
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, plans)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4984,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - planstates
    - nplans
    - walker
    - context
    argTypes:
    - PlanState**
    - int
    - planstate_tree_walker_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4989
      start: 4977
    functionDepth: 1
    functionLinenumber: 4977
    functionLinenumberEnd: 4989
    functionName: planstate_walk_members
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - PSWALK
    linkageType: ''
    returnType: bool
    signature: "bool planstate_walk_members(PlanState **planstates, int nplans,\n\t\t\t\t\t
      \  planstate_tree_walker_callback walker,\n\t\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/nodes/print.c:41,1
    - Dst: format_node_dump
      Src: /src/postgres/src/backend/nodes/print.c:42,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/print.c:43,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:44,1
    - Dst: fflush
      Src: /src/postgres/src/backend/nodes/print.c:45,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/print.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - obj
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 35
    functionDepth: 7
    functionLinenumber: 35
    functionLinenumberEnd: 47
    functionName: print
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 69
    functionsReached:
    - nodeToStringWithLocations
    - pfree
    - format_node_dump
    - printf
    - fflush
    linkageType: ''
    returnType: void
    signature: void print(const void *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/nodes/print.c:59,1
    - Dst: pretty_format_node_dump
      Src: /src/postgres/src/backend/nodes/print.c:60,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/print.c:61,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:62,1
    - Dst: fflush
      Src: /src/postgres/src/backend/nodes/print.c:63,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/print.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - obj
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 7
    functionLinenumber: 53
    functionLinenumberEnd: 65
    functionName: pprint
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 4
    functionsReached:
    - nodeToStringWithLocations
    - pfree
    - pretty_format_node_dump
    - printf
    - fflush
    linkageType: ''
    returnType: void
    signature: void pprint(const void *obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/nodes/print.c:77,1
    - Dst: pretty_format_node_dump
      Src: /src/postgres/src/backend/nodes/print.c:79,1
    - Dst: format_node_dump
      Src: /src/postgres/src/backend/nodes/print.c:81,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/print.c:82,1
    - Dst: ereport
      Src: /src/postgres/src/backend/nodes/print.c:83,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/nodes/print.c:84,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/nodes/print.c:85,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/print.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - lev
    - title
    - obj
    - pretty
    argTypes:
    - int
    - char*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 71
    functionDepth: 7
    functionLinenumber: 71
    functionLinenumberEnd: 87
    functionName: elog_node_display
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 3
    functionsReached:
    - nodeToStringWithLocations
    - errmsg_internal
    - pfree
    - format_node_dump
    - ereport
    - pretty_format_node_dump
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: void elog_node_display(int lev, const char *title, const void *obj,
      bool pretty)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:106,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:132,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:137,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - dump
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 96
    functionDepth: 3
    functionLinenumber: 96
    functionLinenumberEnd: 141
    functionName: format_node_dump
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 3
    functionsReached:
    - appendStringInfo
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      format_node_dump(const char *dump)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:163,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:181,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:186,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/print.c:191,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:204,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:215,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/print.c:219,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:229,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:239,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/print.c:242,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 65
    argCount: 1
    argNames:
    - dump
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 247
    functionName: pretty_format_node_dump
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 2
    functionsReached:
    - appendStringInfo
    - initStringInfo
    - Min
    linkageType: ''
    returnType: char
    signature: 'char *

      pretty_format_node_dump(const char *dump)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:259,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:260,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:263,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:268,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:272,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:276,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:280,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:284,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:288,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:292,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:296,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:300,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:304,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:308,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:312,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:316,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 1
    argNames:
    - rtable
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 321
    functionName: print_rt
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 0
    functionsReached:
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void print_rt(const List *rtable)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:263,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:268,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:272,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:276,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:280,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:284,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:288,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:292,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:296,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:300,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:304,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:308,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:312,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:316,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 320
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 349
    functionsReached:
    - lfirst
    - printf
    linkageType: ''
    returnType: void
    signature: void foreach(l, rtable)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:333,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/print.c:337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/print.c:361,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/print.c:362,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/nodes/print.c:363,1
    - Dst: get_rte_attribute_name
      Src: /src/postgres/src/backend/nodes/print.c:365,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:369,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/print.c:371,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:380,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/nodes/print.c:384,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/nodes/print.c:387,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:388,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/print.c:389,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/print.c:391,1
    - Dst: get_opname
      Src: /src/postgres/src/backend/nodes/print.c:396,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/print.c:397,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:399,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/nodes/print.c:399,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:400,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:401,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/nodes/print.c:401,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:405,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:406,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/nodes/print.c:406,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/print.c:409,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/nodes/print.c:415,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:416,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/print.c:417,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:419,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:419,1
    - Dst: lnext
      Src: /src/postgres/src/backend/nodes/print.c:420,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:421,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:423,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:426,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 61
    argCount: 2
    argNames:
    - expr
    - rtable
    argTypes:
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 328
    functionDepth: 2
    functionLinenumber: 328
    functionLinenumberEnd: 427
    functionName: print_expr
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 1
    functionsReached:
    - get_leftop
    - get_rightop
    - get_func_name
    - Assert
    - pfree
    - foreach
    - rt_fetch
    - lnext
    - lfirst
    - OidOutputFunctionCall
    - printf
    - get_opname
    - list_length
    - print_expr
    - IsA
    - getTypeOutputInfo
    - get_rte_attribute_name
    linkageType: ''
    returnType: void
    signature: void print_expr(const Node *expr, const List *rtable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:438,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:441,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:451,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/print.c:452,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:454,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:459,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:460,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:462,1
    - Dst: lnext
      Src: /src/postgres/src/backend/nodes/print.c:463,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:464,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:466,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - pathkeys
    - rtable
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 433
    functionDepth: 3
    functionLinenumber: 433
    functionLinenumberEnd: 467
    functionName: print_pathkeys
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 0
    functionsReached:
    - foreach
    - lnext
    - lfirst
    - printf
    - print_expr
    linkageType: ''
    returnType: void
    signature: void print_pathkeys(const List *pathkeys, const List *rtable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:441,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:451,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/print.c:452,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:454,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:459,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:460,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:462,1
    - Dst: lnext
      Src: /src/postgres/src/backend/nodes/print.c:463,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:464,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 439
    functionDepth: 3
    functionLinenumber: 439
    functionLinenumberEnd: 465
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 352
    functionsReached:
    - foreach
    - lnext
    - lfirst
    - printf
    - print_expr
    linkageType: ''
    returnType: void
    signature: void foreach(i, pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:478,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:481,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:483,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:486,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:488,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:489,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:490,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - tlist
    - rtable
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 473
    functionDepth: 3
    functionLinenumber: 473
    functionLinenumberEnd: 493
    functionName: print_tl
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 0
    functionsReached:
    - lfirst
    - print_expr
    - printf
    linkageType: ''
    returnType: void
    signature: void print_tl(const List *tlist, const List *rtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:481,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:483,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:486,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:488,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:489,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 479
    functionDepth: 3
    functionLinenumber: 479
    functionLinenumberEnd: 491
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 352
    functionsReached:
    - lfirst
    - print_expr
    - printf
    linkageType: ''
    returnType: void
    signature: void foreach(tl, tlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/nodes/print.c:502,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:504,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:509,1
    - Dst: debugtup
      Src: /src/postgres/src/backend/nodes/print.c:513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 499
    functionDepth: 3
    functionLinenumber: 499
    functionLinenumberEnd: 514
    functionName: print_slot
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 0
    functionsReached:
    - debugtup
    - TupIsNull
    - printf
    linkageType: ''
    returnType: void
    signature: void print_slot(TupleTableSlot *slot)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GetFullPathName
      Src: /src/postgres/src/backend/port/win32_shmem.c:72,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:74,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:75,1
    - Dst: malloc
      Src: /src/postgres/src/backend/port/win32_shmem.c:77,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:79,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/port/win32_shmem.c:81,1
    - Dst: GetFullPathName
      Src: /src/postgres/src/backend/port/win32_shmem.c:82,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:84,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:85,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 98
    functionName: GetSharedMemName
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    - GetLastError
    - malloc
    - strcpy
    - GetFullPathName
    linkageType: ''
    returnType: char
    signature: 'char *

      GetSharedMemName(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetSharedMemName
      Src: /src/postgres/src/backend/port/win32_shmem.c:118,1
    - Dst: OpenFileMapping
      Src: /src/postgres/src/backend/port/win32_shmem.c:120,1
    - Dst: free
      Src: /src/postgres/src/backend/port/win32_shmem.c:122,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_shmem.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - unsigned long
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 129
    functionName: PGSharedMemoryIsInUse
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached:
    - free
    - CloseHandle
    - OpenFileMapping
    - GetSharedMemName
    linkageType: ''
    returnType: bool
    signature: bool PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: OpenProcessToken
      Src: /src/postgres/src/backend/port/win32_shmem.c:143,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/backend/port/win32_shmem.c:143,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:145,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:146,1
    - Dst: _
      Src: /src/postgres/src/backend/port/win32_shmem.c:152,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:153,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/win32_shmem.c:154,1
    - Dst: LookupPrivilegeValue
      Src: /src/postgres/src/backend/port/win32_shmem.c:158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:160,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:161,1
    - Dst: _
      Src: /src/postgres/src/backend/port/win32_shmem.c:161,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:161,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/win32_shmem.c:162,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_shmem.c:163,1
    - Dst: AdjustTokenPrivileges
      Src: /src/postgres/src/backend/port/win32_shmem.c:170,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:173,1
    - Dst: _
      Src: /src/postgres/src/backend/port/win32_shmem.c:173,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:173,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/win32_shmem.c:174,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_shmem.c:175,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:179,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:181,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:182,1
    - Dst: errcode
      Src: /src/postgres/src/backend/port/win32_shmem.c:183,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:184,1
    - Dst: _
      Src: /src/postgres/src/backend/port/win32_shmem.c:184,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/win32_shmem.c:185,1
    - Dst: _
      Src: /src/postgres/src/backend/port/win32_shmem.c:186,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:188,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:189,1
    - Dst: _
      Src: /src/postgres/src/backend/port/win32_shmem.c:189,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:189,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/win32_shmem.c:190,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_shmem.c:191,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_shmem.c:195,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 198
    functionName: EnableLockPagesPrivilege
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached:
    - CloseHandle
    - _
    - errcode
    - ereport
    - GetLastError
    - errhint
    - GetCurrentProcess
    - errmsg
    - errdetail
    - LookupPrivilegeValue
    - AdjustTokenPrivileges
    - OpenProcessToken
    linkageType: ''
    returnType: bool
    signature: bool EnableLockPagesPrivilege(int elevel)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: VirtualAlloc
      Src: /src/postgres/src/backend/port/win32_shmem.c:223,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:226,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:230,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/port/win32_shmem.c:230,1
    - Dst: GetSharedMemName
      Src: /src/postgres/src/backend/port/win32_shmem.c:232,1
    - Dst: GetLargePageMinimum
      Src: /src/postgres/src/backend/port/win32_shmem.c:239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:242,1
    - Dst: errcode
      Src: /src/postgres/src/backend/port/win32_shmem.c:243,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:245,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32_shmem.c:246,1
    - Dst: EnableLockPagesPrivilege
      Src: /src/postgres/src/backend/port/win32_shmem.c:248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:250,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32_shmem.c:251,1
    - Dst: SetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:284,1
    - Dst: CreateFileMapping
      Src: /src/postgres/src/backend/port/win32_shmem.c:286,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:295,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:299,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:312,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:313,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:313,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/win32_shmem.c:314,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:322,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_shmem.c:324,1
    - Dst: Sleep
      Src: /src/postgres/src/backend/port/win32_shmem.c:327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:338,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:339,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/win32_shmem.c:340,1
    - Dst: free
      Src: /src/postgres/src/backend/port/win32_shmem.c:342,1
    - Dst: DuplicateHandle
      Src: /src/postgres/src/backend/port/win32_shmem.c:347,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/backend/port/win32_shmem.c:347,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/backend/port/win32_shmem.c:347,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:349,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:349,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/win32_shmem.c:350,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_shmem.c:356,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:357,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:357,1
    - Dst: MapViewOfFileEx
      Src: /src/postgres/src/backend/port/win32_shmem.c:371,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_shmem.c:373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_shmem.c:374,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:374,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/win32_shmem.c:375,1
    - Dst: getpid
      Src: /src/postgres/src/backend/port/win32_shmem.c:385,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/port/win32_shmem.c:392,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/win32_shmem.c:401,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/port/win32_shmem.c:401,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/port/win32_shmem.c:406,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 72
    argCount: 2
    argNames:
    - size
    - shim
    argTypes:
    - Size
    - PGShmemHeader**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 410
    functionName: PGSharedMemoryCreate
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached:
    - errcode
    - Sleep
    - GetLastError
    - errhint
    - DuplicateHandle
    - elog
    - CloseHandle
    - MapViewOfFileEx
    - getpid
    - Assert
    - CreateFileMapping
    - GetCurrentProcess
    - errmsg
    - PointerGetDatum
    - MAXALIGN
    - SetLastError
    - GetSharedMemName
    - errmsg_internal
    - ereport
    - VirtualAlloc
    - SetConfigOption
    - EnableLockPagesPrivilege
    - free
    - errdetail
    - GetLargePageMinimum
    - on_shmem_exit
    linkageType: ''
    returnType: PGShmemHeader
    signature: "PGShmemHeader *\nPGSharedMemoryCreate(Size size,\n\t\t\t\t\t PGShmemHeader
      **shim)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:430,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:431,1
    - Dst: VirtualFree
      Src: /src/postgres/src/backend/port/win32_shmem.c:436,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:437,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:438,1
    - Dst: VirtualFree
      Src: /src/postgres/src/backend/port/win32_shmem.c:439,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:440,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:441,1
    - Dst: MapViewOfFileEx
      Src: /src/postgres/src/backend/port/win32_shmem.c:443,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:445,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:446,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:448,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:451,1
    - Dst: dsm_set_control_handle
      Src: /src/postgres/src/backend/port/win32_shmem.c:452,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 455
    functionName: PGSharedMemoryReAttach
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    - MapViewOfFileEx
    - VirtualFree
    - dsm_set_control_handle
    - Assert
    - GetLastError
    linkageType: ''
    returnType: void
    signature: void PGSharedMemoryReAttach(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:474,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:476,1
    - Dst: PGSharedMemoryDetach
      Src: /src/postgres/src/backend/port/win32_shmem.c:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 490
    functionName: PGSharedMemoryNoReAttach
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached:
    - Assert
    - PGSharedMemoryDetach
    linkageType: ''
    returnType: void
    signature: void PGSharedMemoryNoReAttach(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: VirtualFree
      Src: /src/postgres/src/backend/port/win32_shmem.c:513,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:514,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:515,1
    - Dst: UnmapViewOfFile
      Src: /src/postgres/src/backend/port/win32_shmem.c:523,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:524,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:525,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_shmem.c:533,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:534,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:535,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 539
    functionName: PGSharedMemoryDetach
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 1
    functionsReached:
    - elog
    - CloseHandle
    - VirtualFree
    - GetLastError
    - UnmapViewOfFile
    linkageType: ''
    returnType: void
    signature: void PGSharedMemoryDetach(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:551,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/port/win32_shmem.c:551,1
    - Dst: PGSharedMemoryDetach
      Src: /src/postgres/src/backend/port/win32_shmem.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - status
    - shmId
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 553
    functionName: pgwin32_SharedMemoryDelete
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached:
    - Assert
    - PGSharedMemoryDetach
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void pgwin32_SharedMemoryDelete(int status, Datum shmId)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_shmem.c:579,1
    - Dst: VirtualAllocEx
      Src: /src/postgres/src/backend/port/win32_shmem.c:582,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:588,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:589,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:600,1
    - Dst: VirtualAllocEx
      Src: /src/postgres/src/backend/port/win32_shmem.c:606,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:610,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_shmem.c:611,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_shmem.c:616,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - hChild
    argTypes:
    - HANDLE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 622
    functionName: pgwin32_ReserveSharedMemoryRegion
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached:
    - Assert
    - GetLastError
    - elog
    - VirtualAllocEx
    linkageType: ''
    returnType: int
    signature: int pgwin32_ReserveSharedMemoryRegion(HANDLE hChild)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - hugepagesize
    - mmap_flags
    argTypes:
    - Size*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 636
    functionName: GetHugePageSize
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GetHugePageSize(Size *hugepagesize, int *mmap_flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/port/win32_shmem.c:646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 650
    functionName: check_huge_page_size
    functionSourceFile: /src/postgres/src/backend/port/win32_shmem.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_huge_page_size(int *newval, void **extra, GucSource source)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: PGSemaphoreShmemRequest
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreShmemRequest(int maxSemas)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/backend/port/win32_sema.c:48,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_sema.c:50,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/win32_sema.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 55
    functionName: PGSemaphoreInit
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - malloc
    - on_shmem_exit
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreInit(int maxSemas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_sema.c:68,1
    - Dst: free
      Src: /src/postgres/src/backend/port/win32_sema.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 70
    functionName: ReleaseSemaphores
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 0
    functionsReached:
    - CloseHandle
    - free
    linkageType: ''
    returnType: void
    signature: void ReleaseSemaphores(int code, Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32_sema.c:84,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_sema.c:87,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/backend/port/win32_sema.c:89,1
    - Dst: CreateSemaphore
      Src: /src/postgres/src/backend/port/win32_sema.c:95,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_sema.c:102,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_sema.c:103,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_sema.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 107
    functionName: PGSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - CreateSemaphore
    - Assert
    - ereport
    - GetLastError
    - ZeroMemory
    - errmsg
    linkageType: ''
    returnType: PGSemaphore
    signature: PGSemaphore PGSemaphoreCreate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGSemaphoreTryLock
      Src: /src/postgres/src/backend/port/win32_sema.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 123
    functionName: PGSemaphoreReset
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 0
    functionsReached:
    - PGSemaphoreTryLock
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreReset(PGSemaphore sema)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/port/win32_sema.c:154,1
    - Dst: WaitForMultipleObjectsEx
      Src: /src/postgres/src/backend/port/win32_sema.c:156,1
    - Dst: pgwin32_dispatch_queued_signals
      Src: /src/postgres/src/backend/port/win32_sema.c:161,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_sema.c:178,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_sema.c:179,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_sema.c:180,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_sema.c:183,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 187
    functionName: PGSemaphoreLock
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 1
    functionsReached:
    - elog
    - pgwin32_dispatch_queued_signals
    - ereport
    - CHECK_FOR_INTERRUPTS
    - GetLastError
    - errmsg
    - WaitForMultipleObjectsEx
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreLock(PGSemaphore sema)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseSemaphore
      Src: /src/postgres/src/backend/port/win32_sema.c:197,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_sema.c:198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_sema.c:199,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_sema.c:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 201
    functionName: PGSemaphoreUnlock
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 1
    functionsReached:
    - GetLastError
    - ReleaseSemaphore
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreUnlock(PGSemaphore sema)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/backend/port/win32_sema.c:213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_sema.c:228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_sema.c:229,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_sema.c:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 234
    functionName: PGSemaphoreTryLock
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 1
    functionsReached:
    - GetLastError
    - WaitForSingleObject
    - ereport
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool PGSemaphoreTryLock(PGSemaphore sema)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/port/atomics.c:26,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/port/atomics.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - val_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 31
    functionName: pg_atomic_init_u64_impl
    functionSourceFile: /src/postgres/src/backend/port/atomics.c
    functionUses: 1
    functionsReached:
    - StaticAssertDecl
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void pg_atomic_init_u64_impl(volatile pg_atomic_uint64 *ptr, uint64
      val_)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/port/atomics.c:47,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/port/atomics.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 59
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/backend/port/atomics.c
    functionUses: 6
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: bool
    signature: "bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64
      *ptr,\n\t\t\t\t\t\t\t\t\tuint64 *expected, uint64 newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/port/atomics.c:66,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/port/atomics.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 71
    functionName: pg_atomic_fetch_add_u64_impl
    functionSourceFile: /src/postgres/src/backend/port/atomics.c
    functionUses: 4
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr,
      int64 add_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: semget
      Src: /src/postgres/src/backend/port/sysv_sema.c:101,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_sema.c:134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_sema.c:135,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/sysv_sema.c:136,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_sema.c:140,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 3
    argNames:
    - semKey
    - numSems
    - retry_ok
    argTypes:
    - IpcSemaphoreKey
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 151
    functionName: InternalIpcSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - ereport
    - errhint
    - errmsg
    - errdetail
    - semget
    linkageType: ''
    returnType: IpcSemaphoreId
    signature: IpcSemaphoreId InternalIpcSemaphoreCreate(IpcSemaphoreKey semKey, int
      numSems, bool retry_ok)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: semctl
      Src: /src/postgres/src/backend/port/sysv_sema.c:162,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_sema.c:166,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/sysv_sema.c:167,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_sema.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - semId
    - semNum
    - value
    argTypes:
    - IpcSemaphoreId
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 174
    functionName: IpcSemaphoreInitialize
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - errhint
    - ereport
    - semctl
    linkageType: ''
    returnType: void
    signature: void IpcSemaphoreInitialize(IpcSemaphoreId semId, int semNum, int value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: semctl
      Src: /src/postgres/src/backend/port/sysv_sema.c:186,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - semId
    argTypes:
    - IpcSemaphoreId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 188
    functionName: IpcSemaphoreKill
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - semctl
    linkageType: ''
    returnType: void
    signature: void IpcSemaphoreKill(IpcSemaphoreId semId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: semctl
      Src: /src/postgres/src/backend/port/sysv_sema.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - semId
    - semNum
    argTypes:
    - IpcSemaphoreId
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: IpcSemaphoreGetValue
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - semctl
    linkageType: ''
    returnType: int
    signature: int IpcSemaphoreGetValue(IpcSemaphoreId semId, int semNum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: semctl
      Src: /src/postgres/src/backend/port/sysv_sema.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - semId
    - semNum
    argTypes:
    - IpcSemaphoreId
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 210
    functionName: IpcSemaphoreGetLastPID
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - semctl
    linkageType: ''
    returnType: pid_t
    signature: pid_t IpcSemaphoreGetLastPID(IpcSemaphoreId semId, int semNum)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: InternalIpcSemaphoreCreate
      Src: /src/postgres/src/backend/port/sysv_sema.c:239,1
    - Dst: semget
      Src: /src/postgres/src/backend/port/sysv_sema.c:245,1
    - Dst: IpcSemaphoreGetValue
      Src: /src/postgres/src/backend/port/sysv_sema.c:248,1
    - Dst: IpcSemaphoreGetLastPID
      Src: /src/postgres/src/backend/port/sysv_sema.c:255,1
    - Dst: getpid
      Src: /src/postgres/src/backend/port/sysv_sema.c:258,1
    - Dst: kill
      Src: /src/postgres/src/backend/port/sysv_sema.c:260,1
    - Dst: semctl
      Src: /src/postgres/src/backend/port/sysv_sema.c:271,1
    - Dst: InternalIpcSemaphoreCreate
      Src: /src/postgres/src/backend/port/sysv_sema.c:277,1
    - Dst: IpcSemaphoreInitialize
      Src: /src/postgres/src/backend/port/sysv_sema.c:294,1
    - Dst: PGSemaphoreUnlock
      Src: /src/postgres/src/backend/port/sysv_sema.c:297,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 29
    argCount: 1
    argNames:
    - numSems
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 300
    functionName: IpcSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 1
    functionsReached:
    - getpid
    - PGSemaphoreUnlock
    - IpcSemaphoreInitialize
    - kill
    - InternalIpcSemaphoreCreate
    - IpcSemaphoreGetLastPID
    - semget
    - semctl
    - IpcSemaphoreGetValue
    linkageType: ''
    returnType: IpcSemaphoreId
    signature: IpcSemaphoreId IpcSemaphoreCreate(int numSems)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/backend/port/sysv_sema.c:344,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_sema.c:345,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/port/sysv_sema.c:346,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_sema.c:347,1
    - Dst: malloc
      Src: /src/postgres/src/backend/port/sysv_sema.c:355,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:357,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/sysv_sema.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 363
    functionName: PGSemaphoreInit
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - ereport
    - stat
    - malloc
    - errmsg
    - on_shmem_exit
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreInit(int maxSemas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IpcSemaphoreKill
      Src: /src/postgres/src/backend/port/sysv_sema.c:376,1
    - Dst: free
      Src: /src/postgres/src/backend/port/sysv_sema.c:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - status
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 378
    functionName: ReleaseSemaphores
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - free
    - IpcSemaphoreKill
    linkageType: ''
    returnType: void
    signature: void ReleaseSemaphores(int status, Datum arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_sema.c:391,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:397,1
    - Dst: IpcSemaphoreCreate
      Src: /src/postgres/src/backend/port/sysv_sema.c:398,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:404,1
    - Dst: IpcSemaphoreInitialize
      Src: /src/postgres/src/backend/port/sysv_sema.c:410,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 385
    functionDepth: 3
    functionLinenumber: 385
    functionLinenumberEnd: 413
    functionName: PGSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - Assert
    - IpcSemaphoreCreate
    - IpcSemaphoreInitialize
    - elog
    linkageType: ''
    returnType: PGSemaphore
    signature: PGSemaphore PGSemaphoreCreate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IpcSemaphoreInitialize
      Src: /src/postgres/src/backend/port/sysv_sema.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 420
    functionDepth: 2
    functionLinenumber: 420
    functionLinenumberEnd: 424
    functionName: PGSemaphoreReset
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - IpcSemaphoreInitialize
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreReset(PGSemaphore sema)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: semop
      Src: /src/postgres/src/backend/port/sysv_sema.c:452,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 457
    functionName: PGSemaphoreLock
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 1
    functionsReached:
    - elog
    - semop
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreLock(PGSemaphore sema)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: semop
      Src: /src/postgres/src/backend/port/sysv_sema.c:482,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:486,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 487
    functionName: PGSemaphoreUnlock
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 2
    functionsReached:
    - elog
    - semop
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreUnlock(PGSemaphore sema)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: semop
      Src: /src/postgres/src/backend/port/sysv_sema.c:511,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:526,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 530
    functionName: PGSemaphoreTryLock
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 1
    functionsReached:
    - elog
    - semop
    linkageType: ''
    returnType: bool
    signature: bool PGSemaphoreTryLock(PGSemaphore sema)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/backend/port/sysv_shmem.c:140,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/port/sysv_shmem.c:143,1
    - Dst: shmget
      Src: /src/postgres/src/backend/port/sysv_shmem.c:157,1
    - Dst: shmget
      Src: /src/postgres/src/backend/port/sysv_shmem.c:187,1
    - Dst: shmctl
      Src: /src/postgres/src/backend/port/sysv_shmem.c:208,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:209,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:224,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:225,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/sysv_shmem.c:226,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:230,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:237,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:243,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/sysv_shmem.c:253,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/port/sysv_shmem.c:253,1
    - Dst: shmat
      Src: /src/postgres/src/backend/port/sysv_shmem.c:256,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:259,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/sysv_shmem.c:263,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/port/sysv_shmem.c:263,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/port/sysv_shmem.c:273,1
    - Dst: AddToDataDirLockFile
      Src: /src/postgres/src/backend/port/sysv_shmem.c:275,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 2
    argNames:
    - memKey
    - size
    argTypes:
    - IpcMemoryKey
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 279
    functionName: InternalIpcMemoryCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - shmctl
    - strtoul
    - elog
    - AddToDataDirLockFile
    - errdetail
    - Int32GetDatum
    - ereport
    - shmat
    - errhint
    - getenv
    - errmsg
    - PointerGetDatum
    - shmget
    - on_shmem_exit
    - sprintf
    linkageType: ''
    returnType: void
    signature: 'void *

      InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shmdt
      Src: /src/postgres/src/backend/port/sysv_shmem.c:290,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/port/sysv_shmem.c:290,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:291,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/port/sysv_shmem.c:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - status
    - shmaddr
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 292
    functionName: IpcMemoryDetach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    - shmdt
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void IpcMemoryDetach(int status, Datum shmaddr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shmctl
      Src: /src/postgres/src/backend/port/sysv_shmem.c:301,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/port/sysv_shmem.c:301,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:302,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/port/sysv_shmem.c:303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - status
    - shmId
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 304
    functionName: IpcMemoryDelete
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - shmctl
    - DatumGetInt32
    - elog
    linkageType: ''
    returnType: void
    signature: void IpcMemoryDelete(int status, Datum shmId)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PGSharedMemoryAttach
      Src: /src/postgres/src/backend/port/sysv_shmem.c:323,1
    - Dst: shmdt
      Src: /src/postgres/src/backend/port/sysv_shmem.c:324,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:325,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - unsigned long
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 337
    functionName: PGSharedMemoryIsInUse
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - PGSharedMemoryAttach
    - elog
    - shmdt
    linkageType: ''
    returnType: bool
    signature: bool PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: shmctl
      Src: /src/postgres/src/backend/port/sysv_shmem.c:361,1
    - Dst: stat
      Src: /src/postgres/src/backend/port/sysv_shmem.c:409,1
    - Dst: shmat
      Src: /src/postgres/src/backend/port/sysv_shmem.c:412,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 3
    argNames:
    - shmId
    - attachAt
    - addr
    argTypes:
    - IpcMemoryId
    - void*
    - PGShmemHeader**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 455
    functionName: PGSharedMemoryAttach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 1
    functionsReached:
    - shmctl
    - stat
    - shmat
    linkageType: ''
    returnType: IpcMemoryState
    signature: "IpcMemoryState PGSharedMemoryAttach(IpcMemoryId shmId,\n\t\t\t\t\t
      void *attachAt,\n\t\t\t\t\t PGShmemHeader **addr)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/port/sysv_shmem.c:497,1
    - Dst: fgets
      Src: /src/postgres/src/backend/port/sysv_shmem.c:504,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/port/sysv_shmem.c:506,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/port/sysv_shmem.c:516,1
    - Dst: pg_ceil_log2_64
      Src: /src/postgres/src/backend/port/sysv_shmem.c:553,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 2
    argNames:
    - hugepagesize
    - mmap_flags
    argTypes:
    - Size*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 479
    functionDepth: 3
    functionLinenumber: 479
    functionLinenumberEnd: 573
    functionName: GetHugePageSize
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - pg_ceil_log2_64
    - AllocateFile
    - sscanf
    - fgets
    - FreeFile
    linkageType: ''
    returnType: void
    signature: void GetHugePageSize(Size *hugepagesize, int *mmap_flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/port/sysv_shmem.c:585,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 590
    functionName: check_huge_page_size
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_huge_page_size(int *newval, void **extra, GucSource source)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:609,1
    - Dst: GetHugePageSize
      Src: /src/postgres/src/backend/port/sysv_shmem.c:619,1
    - Dst: add_size
      Src: /src/postgres/src/backend/port/sysv_shmem.c:622,1
    - Dst: mmap
      Src: /src/postgres/src/backend/port/sysv_shmem.c:624,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:628,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/port/sysv_shmem.c:638,1
    - Dst: mmap
      Src: /src/postgres/src/backend/port/sysv_shmem.c:648,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:656,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:657,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:659,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - size
    argTypes:
    - Size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 670
    functionName: CreateAnonymousSegment
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    - add_size
    - Assert
    - ereport
    - errhint
    - GetHugePageSize
    - SetConfigOption
    - errmsg
    - mmap
    linkageType: ''
    returnType: void
    signature: 'void *

      CreateAnonymousSegment(Size *size)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: munmap
      Src: /src/postgres/src/backend/port/sysv_shmem.c:682,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:683,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - status
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 687
    functionName: AnonymousShmemDetach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    - munmap
    linkageType: ''
    returnType: void
    signature: void AnonymousShmemDetach(int status, Datum arg)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/backend/port/sysv_shmem.c:716,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:717,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/port/sysv_shmem.c:718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:719,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:725,1
    - Dst: errcode
      Src: /src/postgres/src/backend/port/sysv_shmem.c:726,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:727,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:732,1
    - Dst: errcode
      Src: /src/postgres/src/backend/port/sysv_shmem.c:733,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:734,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:737,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/port/sysv_shmem.c:737,1
    - Dst: CreateAnonymousSegment
      Src: /src/postgres/src/backend/port/sysv_shmem.c:741,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/sysv_shmem.c:745,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/port/sysv_shmem.c:755,1
    - Dst: InternalIpcMemoryCreate
      Src: /src/postgres/src/backend/port/sysv_shmem.c:774,1
    - Dst: shmget
      Src: /src/postgres/src/backend/port/sysv_shmem.c:785,1
    - Dst: PGSharedMemoryAttach
      Src: /src/postgres/src/backend/port/sysv_shmem.c:792,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:798,1
    - Dst: errcode
      Src: /src/postgres/src/backend/port/sysv_shmem.c:799,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:800,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:803,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:813,1
    - Dst: dsm_cleanup_using_control_segment
      Src: /src/postgres/src/backend/port/sysv_shmem.c:834,1
    - Dst: shmctl
      Src: /src/postgres/src/backend/port/sysv_shmem.c:835,1
    - Dst: shmdt
      Src: /src/postgres/src/backend/port/sysv_shmem.c:840,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:841,1
    - Dst: getpid
      Src: /src/postgres/src/backend/port/sysv_shmem.c:846,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/port/sysv_shmem.c:858,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/port/sysv_shmem.c:873,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 2
    argNames:
    - size
    - shim
    argTypes:
    - Size
    - PGShmemHeader**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 701
    functionDepth: 2
    functionLinenumber: 701
    functionLinenumberEnd: 875
    functionName: PGSharedMemoryCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - errcode
    - CreateAnonymousSegment
    - errhint
    - elog
    - shmctl
    - getpid
    - memcpy
    - Assert
    - PGSharedMemoryAttach
    - errmsg
    - MAXALIGN
    - ereport
    - shmdt
    - shmget
    - SetConfigOption
    - errcode_for_file_access
    - InternalIpcMemoryCreate
    - stat
    - dsm_cleanup_using_control_segment
    - on_shmem_exit
    linkageType: ''
    returnType: PGShmemHeader
    signature: "PGShmemHeader *\nPGSharedMemoryCreate(Size size,\n\t\t\t\t\t PGShmemHeader
      **shim)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:900,1
    - Dst: PGSharedMemoryDetach
      Src: /src/postgres/src/backend/port/sysv_shmem.c:904,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:908,1
    - Dst: shmget
      Src: /src/postgres/src/backend/port/sysv_shmem.c:909,1
    - Dst: PGSharedMemoryAttach
      Src: /src/postgres/src/backend/port/sysv_shmem.c:913,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:915,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:918,1
    - Dst: dsm_set_control_handle
      Src: /src/postgres/src/backend/port/sysv_shmem.c:920,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 891
    functionDepth: 2
    functionLinenumber: 891
    functionLinenumberEnd: 923
    functionName: PGSharedMemoryReAttach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    - dsm_set_control_handle
    - Assert
    - PGSharedMemoryAttach
    - shmget
    - PGSharedMemoryDetach
    linkageType: ''
    returnType: void
    signature: void PGSharedMemoryReAttach(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:943,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:944,1
    - Dst: PGSharedMemoryDetach
      Src: /src/postgres/src/backend/port/sysv_shmem.c:948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 955
    functionName: PGSharedMemoryNoReAttach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - Assert
    - PGSharedMemoryDetach
    linkageType: ''
    returnType: void
    signature: void PGSharedMemoryNoReAttach(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: shmdt
      Src: /src/postgres/src/backend/port/sysv_shmem.c:976,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:982,1
    - Dst: munmap
      Src: /src/postgres/src/backend/port/sysv_shmem.c:988,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:989,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 993
    functionName: PGSharedMemoryDetach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 4
    functionsReached:
    - elog
    - shmdt
    - munmap
    linkageType: ''
    returnType: void
    signature: void PGSharedMemoryDetach(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: PG_SEM_REF
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_SEM_REF(x)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/port/posix_sema.c:96,1
    - Dst: sem_open
      Src: /src/postgres/src/backend/port/posix_sema.c:98,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:116,1
    - Dst: sem_unlink
      Src: /src/postgres/src/backend/port/posix_sema.c:123,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 126
    functionName: PosixSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - sem_unlink
    - sem_open
    - snprintf
    linkageType: ''
    returnType: sem_t
    signature: 'sem_t *

      PosixSemaphoreCreate(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sem_init
      Src: /src/postgres/src/backend/port/posix_sema.c:137,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - sem
    argTypes:
    - sem_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 139
    functionName: PosixSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - sem_init
    linkageType: ''
    returnType: void
    signature: void PosixSemaphoreCreate(sem_t *sem)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sem_close
      Src: /src/postgres/src/backend/port/posix_sema.c:151,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:152,1
    - Dst: sem_destroy
      Src: /src/postgres/src/backend/port/posix_sema.c:155,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - sem
    argTypes:
    - sem_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 158
    functionName: PosixSemaphoreKill
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - sem_destroy
    - sem_close
    linkageType: ''
    returnType: void
    signature: void PosixSemaphoreKill(sem_t *sem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mul_size
      Src: /src/postgres/src/backend/port/posix_sema.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 176
    functionName: PGSemaphoreShmemRequest
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - mul_size
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreShmemRequest(int maxSemas)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/backend/port/posix_sema.c:208,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/posix_sema.c:209,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/port/posix_sema.c:210,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/posix_sema.c:211,1
    - Dst: malloc
      Src: /src/postgres/src/backend/port/posix_sema.c:215,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:217,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/posix_sema.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 225
    functionName: PGSemaphoreInit
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - ereport
    - stat
    - malloc
    - errmsg
    - on_shmem_exit
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreInit(int maxSemas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PosixSemaphoreKill
      Src: /src/postgres/src/backend/port/posix_sema.c:239,1
    - Dst: free
      Src: /src/postgres/src/backend/port/posix_sema.c:240,1
    - Dst: PosixSemaphoreKill
      Src: /src/postgres/src/backend/port/posix_sema.c:245,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - status
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 247
    functionName: ReleaseSemaphores
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - PG_SEM_REF
    - PosixSemaphoreKill
    - free
    linkageType: ''
    returnType: void
    signature: void ReleaseSemaphores(int status, Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/posix_sema.c:261,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:264,1
    - Dst: PosixSemaphoreCreate
      Src: /src/postgres/src/backend/port/posix_sema.c:267,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:273,1
    - Dst: PosixSemaphoreCreate
      Src: /src/postgres/src/backend/port/posix_sema.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 280
    functionName: PGSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_SEM_REF
    - PosixSemaphoreCreate
    - elog
    linkageType: ''
    returnType: PGSemaphore
    signature: PGSemaphore PGSemaphoreCreate(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sem_trywait
      Src: /src/postgres/src/backend/port/posix_sema.c:296,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:296,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:302,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 305
    functionName: PGSemaphoreReset
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - sem_trywait
    - PG_SEM_REF
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreReset(PGSemaphore sema)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sem_wait
      Src: /src/postgres/src/backend/port/posix_sema.c:320,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:320,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 325
    functionName: PGSemaphoreLock
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 1
    functionsReached:
    - elog
    - PG_SEM_REF
    - sem_wait
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreLock(PGSemaphore sema)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sem_post
      Src: /src/postgres/src/backend/port/posix_sema.c:345,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:345,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 350
    functionName: PGSemaphoreUnlock
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 2
    functionsReached:
    - sem_post
    - PG_SEM_REF
    - elog
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreUnlock(PGSemaphore sema)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sem_trywait
      Src: /src/postgres/src/backend/port/posix_sema.c:369,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:369,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:377,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 381
    functionName: PGSemaphoreTryLock
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 1
    functionsReached:
    - elog
    - sem_trywait
    - PG_SEM_REF
    linkageType: ''
    returnType: bool
    signature: bool PGSemaphoreTryLock(PGSemaphore sema)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:58,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/socket.c:148,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/socket.c:149,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:150,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 94
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 154
    functionName: TranslateSocketError
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg_internal
    - WSAGetLastError
    linkageType: ''
    returnType: void
    signature: void TranslateSocketError(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNBLOCKED_SIGNAL_QUEUE
      Src: /src/postgres/src/backend/port/win32/socket.c:159,1
    - Dst: pgwin32_dispatch_queued_signals
      Src: /src/postgres/src/backend/port/win32/socket.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 166
    functionName: pgwin32_poll_signals
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - pgwin32_dispatch_queued_signals
    - UNBLOCKED_SIGNAL_QUEUE
    linkageType: ''
    returnType: int
    signature: int pgwin32_poll_signals(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/postgres/src/backend/port/win32/socket.c:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - SOCKET
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 178
    functionName: isDataGram
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - getsockopt
    linkageType: ''
    returnType: int
    signature: int isDataGram(SOCKET s)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: CreateEvent
      Src: /src/postgres/src/backend/port/win32/socket.c:192,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/socket.c:195,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/socket.c:196,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:196,1
    - Dst: ResetEvent
      Src: /src/postgres/src/backend/port/win32/socket.c:198,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/socket.c:199,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/socket.c:200,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:200,1
    - Dst: isDataGram
      Src: /src/postgres/src/backend/port/win32/socket.c:208,1
    - Dst: WSAEventSelect
      Src: /src/postgres/src/backend/port/win32/socket.c:216,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:218,1
    - Dst: WaitForMultipleObjectsEx
      Src: /src/postgres/src/backend/port/win32/socket.c:236,1
    - Dst: WSASend
      Src: /src/postgres/src/backend/port/win32/socket.c:247,1
    - Dst: WSAEventSelect
      Src: /src/postgres/src/backend/port/win32/socket.c:250,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:253,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:255,1
    - Dst: WSAEventSelect
      Src: /src/postgres/src/backend/port/win32/socket.c:256,1
    - Dst: WaitForMultipleObjectsEx
      Src: /src/postgres/src/backend/port/win32/socket.c:265,1
    - Dst: WSAEventSelect
      Src: /src/postgres/src/backend/port/win32/socket.c:267,1
    - Dst: pgwin32_dispatch_queued_signals
      Src: /src/postgres/src/backend/port/win32/socket.c:271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/socket.c:282,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/socket.c:283,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:283,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 3
    argNames:
    - s
    - what
    - timeout
    argTypes:
    - SOCKET
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 285
    functionName: pgwin32_waitforsinglesocket
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - ResetEvent
    - pgwin32_dispatch_queued_signals
    - errmsg_internal
    - TranslateSocketError
    - WSASend
    - ereport
    - WSAEventSelect
    - GetLastError
    - WSAGetLastError
    - CreateEvent
    - WaitForMultipleObjectsEx
    - isDataGram
    linkageType: ''
    returnType: int
    signature: int pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WSASocket
      Src: /src/postgres/src/backend/port/win32/socket.c:296,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:299,1
    - Dst: ioctlsocket
      Src: /src/postgres/src/backend/port/win32/socket.c:303,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:305,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/port/win32/socket.c:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - af
    - type
    - protocol
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 312
    functionName: pgwin32_socket
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - ioctlsocket
    - WSASocket
    - TranslateSocketError
    - closesocket
    linkageType: ''
    returnType: SOCKET
    signature: SOCKET pgwin32_socket(int af, int type, int protocol)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/postgres/src/backend/port/win32/socket.c:319,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - s
    - addr
    - addrlen
    argTypes:
    - SOCKET
    - struct sockaddr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 323
    functionName: pgwin32_bind
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - bind
    - TranslateSocketError
    linkageType: ''
    returnType: int
    signature: int pgwin32_bind(SOCKET s, struct sockaddr *addr, int addrlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listen
      Src: /src/postgres/src/backend/port/win32/socket.c:330,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - s
    - backlog
    argTypes:
    - SOCKET
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 334
    functionName: pgwin32_listen
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - TranslateSocketError
    - listen
    linkageType: ''
    returnType: int
    signature: int pgwin32_listen(SOCKET s, int backlog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgwin32_poll_signals
      Src: /src/postgres/src/backend/port/win32/socket.c:345,1
    - Dst: WSAAccept
      Src: /src/postgres/src/backend/port/win32/socket.c:347,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - s
    - addr
    - addrlen
    argTypes:
    - SOCKET
    - struct sockaddr*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 354
    functionName: pgwin32_accept
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - pgwin32_poll_signals
    - TranslateSocketError
    - WSAAccept
    linkageType: ''
    returnType: SOCKET
    signature: SOCKET pgwin32_accept(SOCKET s, struct sockaddr *addr, int *addrlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WSAConnect
      Src: /src/postgres/src/backend/port/win32/socket.c:363,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:367,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:369,1
    - Dst: pgwin32_waitforsinglesocket
      Src: /src/postgres/src/backend/port/win32/socket.c:373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - s
    - addr
    - addrlen
    argTypes:
    - SOCKET
    - struct sockaddr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 358
    functionDepth: 3
    functionLinenumber: 358
    functionLinenumberEnd: 379
    functionName: pgwin32_connect
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - WSAConnect
    - TranslateSocketError
    - WSAGetLastError
    - pgwin32_waitforsinglesocket
    linkageType: ''
    returnType: int
    signature: int pgwin32_connect(SOCKET s, const struct sockaddr *addr, int addrlen)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pgwin32_poll_signals
      Src: /src/postgres/src/backend/port/win32/socket.c:390,1
    - Dst: WSARecv
      Src: /src/postgres/src/backend/port/win32/socket.c:396,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:400,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:402,1
    - Dst: pgwin32_waitforsinglesocket
      Src: /src/postgres/src/backend/port/win32/socket.c:420,1
    - Dst: WSARecv
      Src: /src/postgres/src/backend/port/win32/socket.c:424,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:427,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:429,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/port/win32/socket.c:440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/socket.c:442,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/socket.c:443,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - s
    - buf
    - len
    - f
    argTypes:
    - SOCKET
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 381
    functionDepth: 3
    functionLinenumber: 381
    functionLinenumberEnd: 446
    functionName: pgwin32_recv
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - TranslateSocketError
    - errmsg_internal
    - pgwin32_poll_signals
    - pgwin32_waitforsinglesocket
    - WSARecv
    - ereport
    - WSAGetLastError
    - pg_usleep
    linkageType: ''
    returnType: int
    signature: int pgwin32_recv(SOCKET s, char *buf, int len, int f)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pgwin32_poll_signals
      Src: /src/postgres/src/backend/port/win32/socket.c:465,1
    - Dst: WSASend
      Src: /src/postgres/src/backend/port/win32/socket.c:477,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:483,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:485,1
    - Dst: pgwin32_waitforsinglesocket
      Src: /src/postgres/src/backend/port/win32/socket.c:501,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - s
    - buf
    - len
    - flags
    argTypes:
    - SOCKET
    - void*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 458
    functionDepth: 3
    functionLinenumber: 458
    functionLinenumberEnd: 506
    functionName: pgwin32_send
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - TranslateSocketError
    - WSASend
    - pgwin32_poll_signals
    - pgwin32_waitforsinglesocket
    - WSAGetLastError
    linkageType: ''
    returnType: int
    signature: int pgwin32_send(SOCKET s, const void *buf, int len, int flags)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32/socket.c:531,1
    - Dst: pgwin32_poll_signals
      Src: /src/postgres/src/backend/port/win32/socket.c:533,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/backend/port/win32/socket.c:536,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/backend/port/win32/socket.c:537,1
    - Dst: WSASend
      Src: /src/postgres/src/backend/port/win32/socket.c:560,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:561,1
    - Dst: FD_SET
      Src: /src/postgres/src/backend/port/win32/socket.c:562,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/port/win32/socket.c:568,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/backend/port/win32/socket.c:570,1
    - Dst: WSACreateEvent
      Src: /src/postgres/src/backend/port/win32/socket.c:588,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/backend/port/win32/socket.c:598,1
    - Dst: WSACreateEvent
      Src: /src/postgres/src/backend/port/win32/socket.c:601,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/backend/port/win32/socket.c:612,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/backend/port/win32/socket.c:615,1
    - Dst: WSAEventSelect
      Src: /src/postgres/src/backend/port/win32/socket.c:618,1
    - Dst: TranslateSocketError
      Src: /src/postgres/src/backend/port/win32/socket.c:620,1
    - Dst: WSAEventSelect
      Src: /src/postgres/src/backend/port/win32/socket.c:623,1
    - Dst: WSACloseEvent
      Src: /src/postgres/src/backend/port/win32/socket.c:625,1
    - Dst: WaitForMultipleObjectsEx
      Src: /src/postgres/src/backend/port/win32/socket.c:631,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/backend/port/win32/socket.c:642,1
    - Dst: WSAEnumNetworkEvents
      Src: /src/postgres/src/backend/port/win32/socket.c:643,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32/socket.c:644,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/backend/port/win32/socket.c:645,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/backend/port/win32/socket.c:647,1
    - Dst: FD_SET
      Src: /src/postgres/src/backend/port/win32/socket.c:653,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/backend/port/win32/socket.c:659,1
    - Dst: FD_SET
      Src: /src/postgres/src/backend/port/win32/socket.c:664,1
    - Dst: WSAEventSelect
      Src: /src/postgres/src/backend/port/win32/socket.c:675,1
    - Dst: WSACloseEvent
      Src: /src/postgres/src/backend/port/win32/socket.c:676,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/backend/port/win32/socket.c:682,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/backend/port/win32/socket.c:684,1
    - Dst: pgwin32_dispatch_queued_signals
      Src: /src/postgres/src/backend/port/win32/socket.c:691,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/backend/port/win32/socket.c:694,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/backend/port/win32/socket.c:696,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/port/win32/socket.c:702,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/port/win32/socket.c:704,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 100
    argCount: 5
    argNames:
    - nfds
    - readfds
    - writefds
    - exceptfds
    - timeout
    argTypes:
    - int
    - fd_set*
    - fd_set*
    - fd_set*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 516
    functionDepth: 2
    functionLinenumber: 516
    functionLinenumberEnd: 706
    functionName: pgwin32_select
    functionSourceFile: /src/postgres/src/backend/port/win32/socket.c
    functionUses: 0
    functionsReached:
    - elog
    - pgwin32_dispatch_queued_signals
    - memcpy
    - TranslateSocketError
    - Assert
    - WSASend
    - pgwin32_poll_signals
    - FD_ISSET
    - WSAEventSelect
    - WSAEnumNetworkEvents
    - FD_SET
    - WSACloseEvent
    - ZeroMemory
    - WSAGetLastError
    - WSACreateEvent
    - WaitForMultipleObjectsEx
    - FD_ZERO
    linkageType: ''
    returnType: int
    signature: int pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set
      *exceptfds, const struct timeval *timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GetFileAttributesA
      Src: /src/postgres/src/backend/port/win32/crashdump.c:82,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/backend/port/win32/crashdump.c:91,1
    - Dst: GetProcessId
      Src: /src/postgres/src/backend/port/win32/crashdump.c:92,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/backend/port/win32/crashdump.c:97,1
    - Dst: LoadLibrary
      Src: /src/postgres/src/backend/port/win32/crashdump.c:102,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:105,1
    - Dst: GetProcAddress
      Src: /src/postgres/src/backend/port/win32/crashdump.c:109,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:113,1
    - Dst: GetProcAddress
      Src: /src/postgres/src/backend/port/win32/crashdump.c:126,1
    - Dst: GetTickCount
      Src: /src/postgres/src/backend/port/win32/crashdump.c:133,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/port/win32/crashdump.c:134,1
    - Dst: CreateFile
      Src: /src/postgres/src/backend/port/win32/crashdump.c:139,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:144,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/crashdump.c:145,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:151,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:153,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/crashdump.c:154,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32/crashdump.c:156,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - pExceptionInfo
    argTypes:
    - struct _EXCEPTION_POINTERS*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 160
    functionName: crashDumpHandler
    functionSourceFile: /src/postgres/src/backend/port/win32/crashdump.c
    functionUses: 0
    functionsReached:
    - GetFileAttributesA
    - CloseHandle
    - LoadLibrary
    - GetTickCount
    - GetProcessId
    - write_stderr
    - GetProcAddress
    - GetLastError
    - GetCurrentProcess
    - GetCurrentThreadId
    - CreateFile
    - snprintf
    linkageType: ''
    returnType: LONG
    signature: LONG crashDumpHandler(struct _EXCEPTION_POINTERS *pExceptionInfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetUnhandledExceptionFilter
      Src: /src/postgres/src/backend/port/win32/crashdump.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 167
    functionName: pgwin32_install_crashdump_handler
    functionSourceFile: /src/postgres/src/backend/port/win32/crashdump.c
    functionUses: 0
    functionsReached:
    - SetUnhandledExceptionFilter
    linkageType: ''
    returnType: void
    signature: void pgwin32_install_crashdump_handler(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32/timer.c:40,1
    - Dst: WaitForSingleObjectEx
      Src: /src/postgres/src/backend/port/win32/timer.c:48,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/backend/port/win32/timer.c:52,1
    - Dst: ResetEvent
      Src: /src/postgres/src/backend/port/win32/timer.c:62,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/backend/port/win32/timer.c:63,1
    - Dst: pg_queue_signal
      Src: /src/postgres/src/backend/port/win32/timer.c:68,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32/timer.c:74,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - param
    argTypes:
    - LPVOID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 79
    functionName: pg_timer_thread
    functionSourceFile: /src/postgres/src/backend/port/win32/timer.c
    functionUses: 0
    functionsReached:
    - ResetEvent
    - WaitForSingleObjectEx
    - pg_queue_signal
    - Assert
    - LeaveCriticalSection
    - EnterCriticalSection
    linkageType: ''
    returnType: DWORD
    signature: DWORD pg_timer_thread(LPVOID param)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32/timer.c:88,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32/timer.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32/timer.c:90,1
    - Dst: CreateEvent
      Src: /src/postgres/src/backend/port/win32/timer.c:95,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/timer.c:97,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/timer.c:98,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/timer.c:99,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/port/win32/timer.c:101,1
    - Dst: InitializeCriticalSection
      Src: /src/postgres/src/backend/port/win32/timer.c:103,1
    - Dst: CreateThread
      Src: /src/postgres/src/backend/port/win32/timer.c:105,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/timer.c:107,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/timer.c:108,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/timer.c:109,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/backend/port/win32/timer.c:113,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/backend/port/win32/timer.c:117,1
    - Dst: SetEvent
      Src: /src/postgres/src/backend/port/win32/timer.c:118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - which
    - value
    - ovalue
    argTypes:
    - int
    - struct itimerval*
    - struct itimerval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 121
    functionName: setitimer
    functionSourceFile: /src/postgres/src/backend/port/win32/timer.c
    functionUses: 1
    functionsReached:
    - CreateThread
    - errmsg_internal
    - InitializeCriticalSection
    - Assert
    - SetEvent
    - ereport
    - LeaveCriticalSection
    - GetLastError
    - MemSet
    - EnterCriticalSection
    - CreateEvent
    linkageType: ''
    returnType: int
    signature: int setitimer(int which, const struct itimerval *value, struct itimerval
      *ovalue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/port/win32/signal.c:55,1
    - Dst: SleepEx
      Src: /src/postgres/src/backend/port/win32/signal.c:62,1
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/backend/port/win32/signal.c:66,1
    - Dst: pgwin32_dispatch_queued_signals
      Src: /src/postgres/src/backend/port/win32/signal.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - microsec
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 74
    functionName: pg_usleep
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 28
    functionsReached:
    - WaitForSingleObject
    - unlikely
    - pgwin32_dispatch_queued_signals
    - SleepEx
    linkageType: ''
    returnType: void
    signature: void pg_usleep(long microsec)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InitializeCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:84,1
    - Dst: CreateEvent
      Src: /src/postgres/src/backend/port/win32/signal.c:97,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/signal.c:99,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/signal.c:100,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/signal.c:100,1
    - Dst: CreateThread
      Src: /src/postgres/src/backend/port/win32/signal.c:103,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/signal.c:105,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/signal.c:106,1
    - Dst: SetConsoleCtrlHandler
      Src: /src/postgres/src/backend/port/win32/signal.c:109,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/signal.c:110,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/win32/signal.c:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 112
    functionName: pgwin32_signal_initialize
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 0
    functionsReached:
    - CreateThread
    - errmsg_internal
    - InitializeCriticalSection
    - ereport
    - GetLastError
    - SetConsoleCtrlHandler
    - CreateEvent
    linkageType: ''
    returnType: void
    signature: void pgwin32_signal_initialize(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32/signal.c:124,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:125,1
    - Dst: UNBLOCKED_SIGNAL_QUEUE
      Src: /src/postgres/src/backend/port/win32/signal.c:126,1
    - Dst: sigmask
      Src: /src/postgres/src/backend/port/win32/signal.c:133,1
    - Dst: sigmask
      Src: /src/postgres/src/backend/port/win32/signal.c:141,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:151,1
    - Dst: sigmask
      Src: /src/postgres/src/backend/port/win32/signal.c:155,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/port/win32/signal.c:157,1
    - Dst: sig
      Src: /src/postgres/src/backend/port/win32/signal.c:158,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/port/win32/signal.c:159,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:161,1
    - Dst: ResetEvent
      Src: /src/postgres/src/backend/port/win32/signal.c:169,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:170,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 171
    functionName: pgwin32_dispatch_queued_signals
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 5
    functionsReached:
    - ResetEvent
    - Assert
    - LeaveCriticalSection
    - sigprocmask
    - EnterCriticalSection
    - sig
    - sigmask
    - UNBLOCKED_SIGNAL_QUEUE
    linkageType: ''
    returnType: void
    signature: void pgwin32_dispatch_queued_signals(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pgwin32_dispatch_queued_signals
      Src: /src/postgres/src/backend/port/win32/signal.c:203,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - how
    - set
    - oset
    argTypes:
    - int
    - sigset_t*
    - sigset_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 206
    functionName: pqsigprocmask
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 0
    functionsReached:
    - pgwin32_dispatch_queued_signals
    linkageType: ''
    returnType: int
    signature: int pqsigprocmask(int how, const sigset_t *set, sigset_t *oset)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - signum
    - act
    - oldact
    argTypes:
    - int
    - struct sigaction*
    - struct sigaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 227
    functionName: pqsigaction
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int pqsigaction(int signum, const struct sigaction *act,\n\t\t\tstruct
      sigaction *oldact)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/port/win32/signal.c:236,1
    - Dst: CreateNamedPipe
      Src: /src/postgres/src/backend/port/win32/signal.c:238,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/signal.c:243,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32/signal.c:244,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/signal.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 248
    functionName: pgwin32_create_signal_listener
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 0
    functionsReached:
    - CreateNamedPipe
    - ereport
    - GetLastError
    - errmsg
    - snprintf
    linkageType: ''
    returnType: HANDLE
    signature: HANDLE pgwin32_create_signal_listener(pid_t pid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/win32/signal.c:265,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:269,1
    - Dst: sigmask
      Src: /src/postgres/src/backend/port/win32/signal.c:270,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:271,1
    - Dst: SetEvent
      Src: /src/postgres/src/backend/port/win32/signal.c:273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - signum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 274
    functionName: pg_queue_signal
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 1
    functionsReached:
    - Assert
    - SetEvent
    - LeaveCriticalSection
    - EnterCriticalSection
    - sigmask
    linkageType: ''
    returnType: void
    signature: void pg_queue_signal(int signum)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/port/win32/signal.c:284,1
    - Dst: GetCurrentProcessId
      Src: /src/postgres/src/backend/port/win32/signal.c:284,1
    - Dst: CreateNamedPipe
      Src: /src/postgres/src/backend/port/win32/signal.c:293,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/signal.c:299,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/signal.c:299,1
    - Dst: SleepEx
      Src: /src/postgres/src/backend/port/win32/signal.c:300,1
    - Dst: ConnectNamedPipe
      Src: /src/postgres/src/backend/port/win32/signal.c:310,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/signal.c:310,1
    - Dst: ReadFile
      Src: /src/postgres/src/backend/port/win32/signal.c:319,1
    - Dst: pg_queue_signal
      Src: /src/postgres/src/backend/port/win32/signal.c:331,1
    - Dst: WriteFile
      Src: /src/postgres/src/backend/port/win32/signal.c:337,1
    - Dst: FlushFileBuffers
      Src: /src/postgres/src/backend/port/win32/signal.c:346,1
    - Dst: DisconnectNamedPipe
      Src: /src/postgres/src/backend/port/win32/signal.c:358,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32/signal.c:370,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - param
    argTypes:
    - LPVOID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 375
    functionName: pg_signal_thread
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 0
    functionsReached:
    - DisconnectNamedPipe
    - CloseHandle
    - GetCurrentProcessId
    - pg_queue_signal
    - CreateNamedPipe
    - ConnectNamedPipe
    - SleepEx
    - write_stderr
    - GetLastError
    - ReadFile
    - WriteFile
    - FlushFileBuffers
    - snprintf
    linkageType: ''
    returnType: DWORD
    signature: DWORD pg_signal_thread(LPVOID param)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_queue_signal
      Src: /src/postgres/src/backend/port/win32/signal.c:390,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - dwCtrlType
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 394
    functionName: pg_console_handler
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 0
    functionsReached:
    - pg_queue_signal
    linkageType: ''
    returnType: BOOL
    signature: BOOL pg_console_handler(DWORD dwCtrlType)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lookup_ts_parser_cache
      Src: /src/postgres/src/backend/tsearch/wparser.c:53,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/tsearch/wparser.c:55,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/wparser.c:56,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/wparser.c:59,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/tsearch/wparser.c:61,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/wparser.c:64,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/tsearch/wparser.c:64,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/tsearch/wparser.c:68,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/wparser.c:69,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/backend/tsearch/wparser.c:71,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/wparser.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - funcctx
    - fcinfo
    - prsid
    argTypes:
    - FuncCallContext*
    - FunctionCallInfo
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 74
    functionName: tt_setup_firstcall
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - elog
    - TupleDescGetAttInMetadata
    - MemoryContextSwitchTo
    - OidFunctionCall1
    - palloc_object
    - OidIsValid
    - lookup_ts_parser_cache
    - get_call_result_type
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void tt_setup_firstcall(FuncCallContext *funcctx, FunctionCallInfo
      fcinfo,\n\t\t\t\t   Oid prsid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/wparser.c:89,1
    - Dst: BuildTupleFromCStrings
      Src: /src/postgres/src/backend/tsearch/wparser.c:94,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:95,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:97,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - funcctx
    argTypes:
    - FuncCallContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 103
    functionName: tt_process_call
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - pfree
    - HeapTupleGetDatum
    - BuildTupleFromCStrings
    - sprintf
    linkageType: ''
    returnType: Datum
    signature: Datum tt_process_call(FuncCallContext *funcctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/tsearch/wparser.c:111,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/tsearch/wparser.c:113,1
    - Dst: tt_setup_firstcall
      Src: /src/postgres/src/backend/tsearch/wparser.c:114,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/wparser.c:114,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/tsearch/wparser.c:117,1
    - Dst: tt_process_call
      Src: /src/postgres/src/backend/tsearch/wparser.c:119,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/tsearch/wparser.c:120,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/tsearch/wparser.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 122
    functionName: ts_token_type_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - tt_setup_firstcall
    - tt_process_call
    - PG_GETARG_OID
    - SRF_RETURN_DONE
    linkageType: ''
    returnType: Datum
    signature: Datum ts_token_type_byid(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/tsearch/wparser.c:130,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/wparser.c:132,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/tsearch/wparser.c:135,1
    - Dst: get_ts_parser_oid
      Src: /src/postgres/src/backend/tsearch/wparser.c:136,1
    - Dst: textToQualifiedNameList
      Src: /src/postgres/src/backend/tsearch/wparser.c:136,1
    - Dst: tt_setup_firstcall
      Src: /src/postgres/src/backend/tsearch/wparser.c:137,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/tsearch/wparser.c:140,1
    - Dst: tt_process_call
      Src: /src/postgres/src/backend/tsearch/wparser.c:142,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/tsearch/wparser.c:143,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/tsearch/wparser.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 145
    functionName: ts_token_type_byname
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - tt_setup_firstcall
    - get_ts_parser_oid
    - textToQualifiedNameList
    - tt_process_call
    - SRF_RETURN_DONE
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum ts_token_type_byname(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lookup_ts_parser_cache
      Src: /src/postgres/src/backend/tsearch/wparser.c:168,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/wparser.c:174,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/tsearch/wparser.c:176,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/wparser.c:179,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/wparser.c:181,1
    - Dst: FunctionCall2
      Src: /src/postgres/src/backend/tsearch/wparser.c:181,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:182,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/tsearch/wparser.c:182,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:183,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/tsearch/wparser.c:183,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/tsearch/wparser.c:185,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/tsearch/wparser.c:185,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:186,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:187,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:188,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/wparser.c:193,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/wparser.c:195,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/wparser.c:196,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/tsearch/wparser.c:202,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:202,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/tsearch/wparser.c:208,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/wparser.c:209,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/backend/tsearch/wparser.c:211,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/wparser.c:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 4
    argNames:
    - funcctx
    - fcinfo
    - prsid
    - txt
    argTypes:
    - FuncCallContext*
    - FunctionCallInfo
    - Oid
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 161
    functionDepth: 4
    functionLinenumber: 161
    functionLinenumberEnd: 213
    functionName: prs_setup_firstcall
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - palloc_array
    - repalloc
    - VARDATA_ANY
    - FunctionCall1
    - elog
    - memcpy
    - Int32GetDatum
    - FunctionCall2
    - VARSIZE_ANY_EXHDR
    - PointerGetDatum
    - palloc_object
    - get_call_result_type
    - TupleDescGetAttInMetadata
    - FunctionCall3
    - MemoryContextSwitchTo
    - DatumGetInt32
    - palloc
    - lookup_ts_parser_cache
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void prs_setup_firstcall(FuncCallContext *funcctx, FunctionCallInfo
      fcinfo,\n\t\t\t\t\tOid prsid, text *txt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/wparser.c:229,1
    - Dst: BuildTupleFromCStrings
      Src: /src/postgres/src/backend/tsearch/wparser.c:231,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:232,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - funcctx
    argTypes:
    - FuncCallContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 239
    functionName: prs_process_call
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - pfree
    - HeapTupleGetDatum
    - BuildTupleFromCStrings
    - sprintf
    linkageType: ''
    returnType: Datum
    signature: Datum prs_process_call(FuncCallContext *funcctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/tsearch/wparser.c:247,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/wparser.c:249,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/tsearch/wparser.c:251,1
    - Dst: prs_setup_firstcall
      Src: /src/postgres/src/backend/tsearch/wparser.c:252,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/wparser.c:252,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:253,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/tsearch/wparser.c:256,1
    - Dst: prs_process_call
      Src: /src/postgres/src/backend/tsearch/wparser.c:258,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/tsearch/wparser.c:259,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/tsearch/wparser.c:260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 241
    functionDepth: 5
    functionLinenumber: 241
    functionLinenumberEnd: 261
    functionName: ts_parse_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - PG_FREE_IF_COPY
    - PG_GETARG_OID
    - prs_process_call
    - SRF_RETURN_DONE
    - prs_setup_firstcall
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum ts_parse_byid(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/tsearch/wparser.c:269,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/wparser.c:271,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/wparser.c:272,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/tsearch/wparser.c:275,1
    - Dst: get_ts_parser_oid
      Src: /src/postgres/src/backend/tsearch/wparser.c:276,1
    - Dst: textToQualifiedNameList
      Src: /src/postgres/src/backend/tsearch/wparser.c:276,1
    - Dst: prs_setup_firstcall
      Src: /src/postgres/src/backend/tsearch/wparser.c:277,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/tsearch/wparser.c:280,1
    - Dst: prs_process_call
      Src: /src/postgres/src/backend/tsearch/wparser.c:282,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/tsearch/wparser.c:283,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/tsearch/wparser.c:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 263
    functionDepth: 5
    functionLinenumber: 263
    functionLinenumberEnd: 285
    functionName: ts_parse_byname
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - get_ts_parser_oid
    - textToQualifiedNameList
    - prs_process_call
    - SRF_RETURN_DONE
    - prs_setup_firstcall
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum ts_parse_byname(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/wparser.c:290,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/wparser.c:291,1
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/tsearch/wparser.c:292,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/tsearch/wparser.c:293,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser.c:293,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/wparser.c:293,1
    - Dst: lookup_ts_config_cache
      Src: /src/postgres/src/backend/tsearch/wparser.c:300,1
    - Dst: lookup_ts_parser_cache
      Src: /src/postgres/src/backend/tsearch/wparser.c:301,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/tsearch/wparser.c:303,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser.c:304,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser.c:305,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser.c:306,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/wparser.c:308,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/wparser.c:310,1
    - Dst: hlparsetext
      Src: /src/postgres/src/backend/tsearch/wparser.c:312,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/tsearch/wparser.c:313,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/tsearch/wparser.c:313,1
    - Dst: deserialize_deflist
      Src: /src/postgres/src/backend/tsearch/wparser.c:316,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:316,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/tsearch/wparser.c:320,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:321,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:322,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:323,1
    - Dst: generateHeadline
      Src: /src/postgres/src/backend/tsearch/wparser.c:325,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:327,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:328,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:330,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:331,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:332,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:333,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser.c:335,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 336
    functionName: ts_headline_byid_opt
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_GETARG_TSQUERY
    - PG_FREE_IF_COPY
    - palloc_array
    - VARDATA_ANY
    - PG_RETURN_POINTER
    - pfree
    - deserialize_deflist
    - VARSIZE_ANY_EXHDR
    - errmsg
    - PointerGetDatum
    - OidIsValid
    - PG_GETARG_POINTER
    - ereport
    - memset
    - hlparsetext
    - PG_NARGS
    - lookup_ts_config_cache
    - FunctionCall3
    - generateHeadline
    - PG_GETARG_OID
    - lookup_ts_parser_cache
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_byid_opt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:341,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/tsearch/wparser.c:341,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:342,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:343,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 345
    functionName: ts_headline_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_DATUM
    - DirectFunctionCall3
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:350,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/tsearch/wparser.c:350,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:351,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/wparser.c:351,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:352,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 354
    functionName: ts_headline
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - DirectFunctionCall3
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:359,1
    - Dst: DirectFunctionCall4
      Src: /src/postgres/src/backend/tsearch/wparser.c:359,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:360,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/wparser.c:360,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:361,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:362,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 364
    functionName: ts_headline_opt
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - ObjectIdGetDatum
    - DirectFunctionCall4
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_opt(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/wparser.c:369,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/tsearch/wparser.c:370,1
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/tsearch/wparser.c:371,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/tsearch/wparser.c:372,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser.c:372,1
    - Dst: PG_GETARG_TEXT_P
      Src: /src/postgres/src/backend/tsearch/wparser.c:372,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/tsearch/wparser.c:376,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/wparser.c:378,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/wparser.c:380,1
    - Dst: lookup_ts_config_cache
      Src: /src/postgres/src/backend/tsearch/wparser.c:383,1
    - Dst: lookup_ts_parser_cache
      Src: /src/postgres/src/backend/tsearch/wparser.c:384,1
    - Dst: deserialize_deflist
      Src: /src/postgres/src/backend/tsearch/wparser.c:387,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:387,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/tsearch/wparser.c:391,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser.c:392,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser.c:393,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser.c:394,1
    - Dst: transform_jsonb_string_values
      Src: /src/postgres/src/backend/tsearch/wparser.c:396,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:398,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:399,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:401,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:403,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:407,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:408,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/tsearch/wparser.c:411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 412
    functionName: ts_headline_jsonb_byid_opt
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_GETARG_TSQUERY
    - PG_FREE_IF_COPY
    - palloc_array
    - pfree
    - deserialize_deflist
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - PG_GETARG_POINTER
    - PG_GETARG_TEXT_P
    - palloc0_object
    - ereport
    - memset
    - transform_jsonb_string_values
    - PG_NARGS
    - PG_RETURN_JSONB_P
    - lookup_ts_config_cache
    - PG_GETARG_OID
    - lookup_ts_parser_cache
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_jsonb_byid_opt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:417,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/tsearch/wparser.c:417,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:418,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/wparser.c:418,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:419,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 421
    functionName: ts_headline_jsonb
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - DirectFunctionCall3
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_jsonb(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:426,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/tsearch/wparser.c:426,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:427,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:428,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 430
    functionName: ts_headline_jsonb_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_DATUM
    - DirectFunctionCall3
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_jsonb_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:435,1
    - Dst: DirectFunctionCall4
      Src: /src/postgres/src/backend/tsearch/wparser.c:435,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:436,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/wparser.c:436,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:437,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:438,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 440
    functionName: ts_headline_jsonb_opt
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - ObjectIdGetDatum
    - DirectFunctionCall4
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_jsonb_opt(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/wparser.c:445,1
    - Dst: PG_GETARG_TEXT_P
      Src: /src/postgres/src/backend/tsearch/wparser.c:446,1
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/tsearch/wparser.c:447,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/tsearch/wparser.c:448,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser.c:448,1
    - Dst: PG_GETARG_TEXT_P
      Src: /src/postgres/src/backend/tsearch/wparser.c:448,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/tsearch/wparser.c:453,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/wparser.c:455,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/wparser.c:457,1
    - Dst: lookup_ts_config_cache
      Src: /src/postgres/src/backend/tsearch/wparser.c:460,1
    - Dst: lookup_ts_parser_cache
      Src: /src/postgres/src/backend/tsearch/wparser.c:461,1
    - Dst: deserialize_deflist
      Src: /src/postgres/src/backend/tsearch/wparser.c:464,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:464,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/tsearch/wparser.c:468,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser.c:469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser.c:470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser.c:471,1
    - Dst: transform_json_string_values
      Src: /src/postgres/src/backend/tsearch/wparser.c:473,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:475,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:476,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/wparser.c:478,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:479,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:483,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser.c:484,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/tsearch/wparser.c:487,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 488
    functionName: ts_headline_json_byid_opt
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_GETARG_TSQUERY
    - PG_FREE_IF_COPY
    - palloc_array
    - pfree
    - deserialize_deflist
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - PG_GETARG_POINTER
    - PG_GETARG_TEXT_P
    - palloc0_object
    - PG_RETURN_TEXT_P
    - ereport
    - memset
    - PG_NARGS
    - transform_json_string_values
    - lookup_ts_config_cache
    - PG_GETARG_OID
    - lookup_ts_parser_cache
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_json_byid_opt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:493,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/tsearch/wparser.c:493,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:494,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/wparser.c:494,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:495,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 497
    functionName: ts_headline_json
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - DirectFunctionCall3
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_json(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:502,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/tsearch/wparser.c:502,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:503,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:504,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 506
    functionName: ts_headline_json_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_DATUM
    - DirectFunctionCall3
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_json_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:511,1
    - Dst: DirectFunctionCall4
      Src: /src/postgres/src/backend/tsearch/wparser.c:511,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:512,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/wparser.c:512,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:513,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:514,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/wparser.c:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 516
    functionName: ts_headline_json_opt
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - ObjectIdGetDatum
    - DirectFunctionCall4
    linkageType: ''
    returnType: Datum
    signature: Datum ts_headline_json_opt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hlparsetext
      Src: /src/postgres/src/backend/tsearch/wparser.c:534,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/tsearch/wparser.c:535,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:536,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:537,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/wparser.c:538,1
    - Dst: generateHeadline
      Src: /src/postgres/src/backend/tsearch/wparser.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - _state
    - elem_value
    - elem_len
    argTypes:
    - void*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 542
    functionName: headline_json_value
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    - hlparsetext
    - FunctionCall3
    - generateHeadline
    linkageType: ''
    returnType: text
    signature: 'text *

      headline_json_value(void *_state, char *elem_value, int elem_len)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:81,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:86,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:93,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:95,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 5
    argNames:
    - d
    - b
    - e
    - idsubst
    - posinsubst
    argTypes:
    - DictThesaurus*
    - char*
    - char*
    - uint32
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 103
    functionName: newLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc_array
    - repalloc_array
    - palloc_object
    - palloc
    linkageType: ''
    returnType: void
    signature: void newLexeme(DictThesaurus *d, char *b, char *e, uint32 idsubst,
      uint16 posinsubst)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:121,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:126,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:140,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:145,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:149,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:150,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 7
    argNames:
    - d
    - b
    - e
    - idsubst
    - nwrd
    - posinsubst
    - useasis
    argTypes:
    - DictThesaurus*
    - char*
    - char*
    - uint32
    - uint16
    - uint16
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 160
    functionName: addWrd
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - palloc
    - palloc_array
    - memcpy
    - repalloc_array
    linkageType: ''
    returnType: void
    signature: void addWrd(DictThesaurus *d, char *b, char *e, uint32 idsubst, uint16
      nwrd, uint16 posinsubst, bool useasis)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:170,1
    - Dst: tsearch_readline_begin
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:176,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:177,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:178,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:179,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:182,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:193,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:194,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:196,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:197,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:197,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:199,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:207,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:210,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:212,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:215,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:223,1
    - Dst: newLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:225,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:228,1
    - Dst: newLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:230,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:236,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:240,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:242,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:246,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:248,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:257,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:262,1
    - Dst: addWrd
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:263,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:268,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:276,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:277,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:278,1
    - Dst: addWrd
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:279,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:285,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:286,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:292,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:294,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:299,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:300,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 76
    argCount: 2
    argNames:
    - filename
    - d
    argTypes:
    - char*
    - DictThesaurus*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 301
    functionName: thesaurusRead
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - elog
    - tsearch_readline_end
    - tsearch_readline
    - errcode
    - tsearch_readline_begin
    - get_tsearch_config_filename
    - pfree
    - newLexeme
    - ereport
    - isspace
    - addWrd
    - errmsg
    - t_iseq
    - pg_mblen_cstr
    linkageType: ''
    returnType: void
    signature: void thesaurusRead(const char *filename, DictThesaurus *d)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:309,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:312,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:316,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 6
    argNames:
    - newwrds
    - nnw
    - tnm
    - lexeme
    - src
    - tnvariant
    argTypes:
    - TheLexeme*
    - int*
    - int*
    - TSLexeme*
    - LexemeInfo*
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 332
    functionName: addCompiledLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - repalloc
    - palloc_object
    linkageType: ''
    returnType: TheLexeme
    signature: 'TheLexeme *

      addCompiledLexeme(TheLexeme *newwrds, int *nnw, int *tnm, TSLexeme *lexeme,
      LexemeInfo *src, uint16 tnvariant)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - LexemeInfo*
    - LexemeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 354
    functionName: cmpLexemeInfo
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int cmpLexemeInfo(LexemeInfo *a, LexemeInfo *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TheLexeme*
    - TheLexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 370
    functionName: cmpLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int cmpLexeme(const TheLexeme *a, const TheLexeme *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmpLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 376
    functionName: cmpLexemeQ
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - cmpLexeme
    linkageType: ''
    returnType: int
    signature: int cmpLexemeQ(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cmpLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:385,1
    - Dst: cmpLexemeInfo
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 389
    functionName: cmpTheLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - cmpLexeme
    - cmpLexemeInfo
    linkageType: ''
    returnType: int
    signature: int cmpTheLexeme(const void *a, const void *b)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:404,1
    - Dst: addCompiledLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:405,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:408,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:408,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:409,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:410,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:411,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:411,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:412,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:415,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:416,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:417,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:421,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:422,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:423,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:426,1
    - Dst: addCompiledLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:447,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:456,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:457,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:461,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:468,1
    - Dst: cmpLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:475,1
    - Dst: cmpLexemeInfo
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:477,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:483,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:486,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:498,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 1
    argNames:
    - d
    argTypes:
    - DictThesaurus*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 500
    functionName: compileTheLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - qsort
    - FunctionCall4
    - strcmp
    - errcode
    - Int32GetDatum
    - pfree
    - cmpLexeme
    - cmpLexemeInfo
    - ereport
    - palloc_array
    - repalloc
    - errhint
    - strlen
    - PointerGetDatum
    - errmsg
    - addCompiledLexeme
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void compileTheLexeme(DictThesaurus *d)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:514,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:532,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:532,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:533,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:534,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:535,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:535,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:536,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:550,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:555,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:566,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:567,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:568,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:573,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:574,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:575,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:580,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:585,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:587,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:592,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 1
    argNames:
    - d
    argTypes:
    - DictThesaurus*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 594
    functionName: compileTheSubstitute
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - FunctionCall4
    - errcode
    - Int32GetDatum
    - pfree
    - pstrdup
    - ereport
    - palloc_array
    - repalloc
    - strlen
    - PointerGetDatum
    - errmsg
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void compileTheSubstitute(DictThesaurus *d)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:599,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:606,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:610,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:615,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:617,1
    - Dst: thesaurusRead
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:618,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:618,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:621,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:626,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:627,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:627,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:631,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:633,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:639,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:640,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:641,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:643,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:644,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:645,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:647,1
    - Dst: get_ts_dict_oid
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:648,1
    - Dst: lookup_ts_dictionary_cache
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:649,1
    - Dst: compileTheLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:651,1
    - Dst: compileTheSubstitute
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:652,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:654,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 596
    functionDepth: 2
    functionLinenumber: 596
    functionLinenumberEnd: 655
    functionName: thesaurus_init
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - compileTheLexeme
    - palloc0_object
    - thesaurusRead
    - strcmp
    - errcode
    - lookup_ts_dictionary_cache
    - pstrdup
    - ereport
    - get_ts_dict_oid
    - lfirst
    - errmsg
    - PG_RETURN_POINTER
    - stringToQualifiedNameList
    - PG_GETARG_POINTER
    - compileTheSubstitute
    - defGetString
    linkageType: ''
    returnType: Datum
    signature: Datum thesaurus_init(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:610,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:615,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:617,1
    - Dst: thesaurusRead
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:618,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:618,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:621,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:626,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:627,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:627,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:631,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 608
    functionDepth: 2
    functionLinenumber: 608
    functionLinenumberEnd: 636
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 352
    functionsReached:
    - thesaurusRead
    - strcmp
    - errcode
    - pstrdup
    - ereport
    - lfirst
    - errmsg
    - defGetString
    linkageType: ''
    returnType: void
    signature: void foreach(l, dictoptions)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:669,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - d
    - lexeme
    argTypes:
    - DictThesaurus*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 674
    functionName: findTheLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - bsearch
    linkageType: ''
    returnType: LexemeInfo
    signature: 'LexemeInfo *

      findTheLexeme(DictThesaurus *d, char *lexeme)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - stored
    - idsubst
    argTypes:
    - LexemeInfo*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 676
    functionDepth: 0
    functionLinenumber: 676
    functionLinenumberEnd: 694
    functionName: matchIdSubst
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool matchIdSubst(LexemeInfo *stored, uint32 idsubst)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: matchIdSubst
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:740,1
    - Dst: matchIdSubst
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:740,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 34
    argCount: 5
    argNames:
    - in
    - stored
    - curpos
    - newin
    - newn
    argTypes:
    - LexemeInfo*
    - LexemeInfo*
    - uint16
    - LexemeInfo**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 696
    functionDepth: 1
    functionLinenumber: 696
    functionLinenumberEnd: 751
    functionName: findVariant
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - matchIdSubst
    linkageType: ''
    returnType: LexemeInfo
    signature: 'LexemeInfo *

      findVariant(LexemeInfo *in, LexemeInfo *stored, uint16 curpos, LexemeInfo **newin,
      int newn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:759,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:763,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TheSubstitute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 753
    functionDepth: 0
    functionLinenumber: 753
    functionLinenumberEnd: 769
    functionName: copyTSLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - palloc_array
    linkageType: ''
    returnType: TSLexeme
    signature: 'TSLexeme *

      copyTSLexeme(TheSubstitute *ts)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:777,1
    - Dst: copyTSLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:781,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - d
    - info
    - curpos
    - moreres
    argTypes:
    - DictThesaurus*
    - LexemeInfo*
    - uint16
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 786
    functionName: checkMatch
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - Assert
    - copyTSLexeme
    linkageType: ''
    returnType: TSLexeme
    signature: 'TSLexeme *

      checkMatch(DictThesaurus *d, LexemeInfo *info, uint16 curpos, bool *moreres)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:791,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:792,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:799,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:800,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:803,1
    - Dst: lookup_ts_dictionary_cache
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:810,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:812,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:812,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:813,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:814,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:815,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:816,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:837,1
    - Dst: findTheLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:839,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:845,1
    - Dst: findVariant
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:849,1
    - Dst: findTheLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:854,1
    - Dst: findVariant
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:856,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:868,1
    - Dst: checkMatch
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:871,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:874,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:879,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 788
    functionDepth: 2
    functionLinenumber: 788
    functionLinenumberEnd: 880
    functionName: thesaurus_lexize
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - elog
    - PG_GETARG_DATUM
    - FunctionCall4
    - findTheLexeme
    - lookup_ts_dictionary_cache
    - pfree
    - findVariant
    - palloc_array
    - checkMatch
    - PointerGetDatum
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum thesaurus_lexize(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: tmpalloc
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: tmpalloc(sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: tmpalloc0
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: tmpalloc0(sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tsearch/spell.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - Conf
    argTypes:
    - IspellDict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 98
    functionName: NIStartBuild
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void NIStartBuild(IspellDict *Conf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/tsearch/spell.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - Conf
    argTypes:
    - IspellDict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 113
    functionName: NIFinishBuild
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void NIFinishBuild(IspellDict *Conf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/spell.c:136,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/spell.c:140,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/tsearch/spell.c:143,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/spell.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - Conf
    - size
    argTypes:
    - IspellDict*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 157
    functionName: compact_palloc0
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - Assert
    - MAXALIGN
    - palloc0
    linkageType: ''
    returnType: void
    signature: 'void *

      compact_palloc0(IspellDict *Conf, size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 160
    functionName: cpalloc
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cpalloc(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 161
    functionName: cpalloc0
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cpalloc0(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:165,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:165,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - Conf
    - str
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 169
    functionName: cpstrdup
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strcpy
    - strlen
    - cpalloc
    linkageType: ''
    returnType: char
    signature: 'char *

      cpstrdup(IspellDict *Conf, const char *str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/spell.c:181,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/spell.c:182,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:182,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/spell.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - Conf
    - src
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 186
    functionName: lowerstr_ctx
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - str_tolower
    - strlen
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: char
    signature: 'char *

      lowerstr_ctx(IspellDict *Conf, const char *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: STRNCMP
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRNCMP(s,p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - W
    - ','
    - L
    - ','
    - N
    - ','
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 193
    functionName: GETWCHAR
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETWCHAR(W,L,N,T)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - A
    - ','
    - N
    - ','
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 194
    functionName: GETCHAR
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETCHAR(A,N,T)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 201
    functionName: cmpspell
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int cmpspell(const void *s1, const void *s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 208
    functionName: cmpspellaffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int cmpspellaffix(const void *s1, const void *s2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/spell.c:216,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 227
    functionName: cmpcmdflag
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - Assert
    - strcmp
    linkageType: ''
    returnType: int
    signature: int cmpcmdflag(const void *f1, const void *f2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:234,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - c
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 240
    functionName: findchar
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - t_iseq
    - pg_mblen_cstr
    linkageType: ''
    returnType: char
    signature: 'char *

      findchar(char *str, int c)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:247,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:247,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:249,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - str
    - c1
    - c2
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 253
    functionName: findchar2
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - t_iseq
    - pg_mblen_cstr
    linkageType: ''
    returnType: char
    signature: 'char *

      findchar2(char *str, int c1, int c2)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:260,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:261,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - unsigned char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 278
    functionName: strbcmp
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: int
    signature: int strbcmp(const unsigned char *s1, const unsigned char *s2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:283,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:284,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - s1
    - s2
    - count
    argTypes:
    - unsigned char*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 304
    functionName: strbncmp
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: int
    signature: int strbncmp(const unsigned char *s1, const unsigned char *s2, size_t
      count)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:322,1
    - Dst: strbcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 326
    functionName: cmpaffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strbcmp
    - strcmp
    linkageType: ''
    returnType: int
    signature: int cmpaffix(const void *s1, const void *s2)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:368,1
    - Dst: strtol
      Src: /src/postgres/src/backend/tsearch/spell.c:380,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:382,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:384,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:386,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:387,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:388,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:390,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/tsearch/spell.c:396,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:399,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:401,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:408,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:409,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:410,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:414,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:416,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:417,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:418,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:422,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/spell.c:427,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:436,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:437,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:438,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 3
    argNames:
    - Conf
    - sflagset
    - sflag
    argTypes:
    - IspellDict*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 442
    functionName: getNextFlagFromString
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - elog
    - isdigit
    - errcode
    - strtol
    - ereport
    - isspace
    - errmsg
    - sprintf
    - t_iseq
    - pg_mblen_cstr
    - ts_copychar_cstr
    linkageType: ''
    returnType: void
    signature: void getNextFlagFromString(IspellDict *Conf, const char **sflagset,
      char *sflag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/spell.c:465,1
    - Dst: getNextFlagFromString
      Src: /src/postgres/src/backend/tsearch/spell.c:471,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:473,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - Conf
    - affix
    - affixflag
    argTypes:
    - IspellDict*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 456
    functionDepth: 3
    functionLinenumber: 456
    functionLinenumberEnd: 479
    functionName: IsAffixFlagInUse
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - Assert
    - getNextFlagFromString
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool IsAffixFlagInUse(IspellDict *Conf, int affix, const char *affixflag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:496,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:501,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:504,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:504,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:505,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - Conf
    - word
    - flag
    argTypes:
    - IspellDict*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 509
    functionName: NIAddSpell
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - cpstrdup
    - repalloc
    - strlen
    - strcpy
    - tmpalloc
    linkageType: ''
    returnType: void
    signature: void NIAddSpell(IspellDict *Conf, const char *word, const char *flag)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tsearch_readline_begin
      Src: /src/postgres/src/backend/tsearch/spell.c:525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:526,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:527,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:528,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/spell.c:531,1
    - Dst: findchar
      Src: /src/postgres/src/backend/tsearch/spell.c:541,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:548,1
    - Dst: isprint
      Src: /src/postgres/src/backend/tsearch/spell.c:548,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:548,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:564,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:569,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:571,1
    - Dst: NIAddSpell
      Src: /src/postgres/src/backend/tsearch/spell.c:573,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:574,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:576,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:578,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - Conf
    - filename
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 579
    functionName: NIImportDictionary
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - lowerstr_ctx
    - NIAddSpell
    - tsearch_readline_end
    - tsearch_readline
    - errcode
    - tsearch_readline_begin
    - pfree
    - ereport
    - isspace
    - findchar
    - errmsg
    - pg_mblen_cstr
    - isprint
    linkageType: ''
    returnType: void
    signature: void NIImportDictionary(IspellDict *Conf, const char *filename)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IsAffixFlagInUse
      Src: /src/postgres/src/backend/tsearch/spell.c:643,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 4
    argNames:
    - Conf
    - word
    - affixflag
    - flag
    argTypes:
    - IspellDict*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 604
    functionDepth: 4
    functionLinenumber: 604
    functionLinenumberEnd: 659
    functionName: FindWord
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - IsAffixFlagInUse
    linkageType: ''
    returnType: int
    signature: int FindWord(IspellDict *Conf, const char *word, const char *affixflag,
      int flag)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:690,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/spell.c:695,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:702,1
    - Dst: RS_isRegis
      Src: /src/postgres/src/backend/tsearch/spell.c:708,1
    - Dst: RS_compile
      Src: /src/postgres/src/backend/tsearch/spell.c:712,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:726,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:726,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:728,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:730,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:732,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:733,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:734,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/tsearch/spell.c:741,1
    - Dst: pg_regcomp
      Src: /src/postgres/src/backend/tsearch/spell.c:742,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/tsearch/spell.c:749,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:750,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:751,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:752,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:762,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:765,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:766,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:767,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 7
    argNames:
    - Conf
    - flag
    - flagflags
    - mask
    - find
    - repl
    - type
    argTypes:
    - IspellDict*
    - char*
    - char
    - char*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 679
    functionDepth: 2
    functionLinenumber: 679
    functionLinenumberEnd: 771
    functionName: NIAddAffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - pg_mb2wchar_with_len
    - strcmp
    - RS_compile
    - pg_regcomp
    - RS_isRegis
    - pg_regerror
    - errcode
    - ereport
    - repalloc
    - palloc_array
    - cpstrdup
    - strlen
    - palloc_object
    - errmsg
    - sprintf
    - tmpalloc
    linkageType: ''
    returnType: void
    signature: "void NIAddAffix(IspellDict *Conf, const char *flag, char flagflags,
      const char *mask,\n\t\t   const char *find, const char *repl, int type)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:801,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:805,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:807,1
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:811,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:820,1
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:829,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - str
    - next
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 793
    functionDepth: 1
    functionLinenumber: 793
    functionLinenumberEnd: 841
    functionName: get_nextfield
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - t_iseq
    - pg_mblen_cstr
    - isspace
    - ts_copychar_with_len
    linkageType: ''
    returnType: bool
    signature: bool get_nextfield(char **str, char *next)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_nextfield
      Src: /src/postgres/src/backend/tsearch/spell.c:872,1
    - Dst: get_nextfield
      Src: /src/postgres/src/backend/tsearch/spell.c:876,1
    - Dst: get_nextfield
      Src: /src/postgres/src/backend/tsearch/spell.c:880,1
    - Dst: get_nextfield
      Src: /src/postgres/src/backend/tsearch/spell.c:884,1
    - Dst: get_nextfield
      Src: /src/postgres/src/backend/tsearch/spell.c:888,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/spell.c:892,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 6
    argNames:
    - str
    - type
    - flag
    - find
    - repl
    - mask
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 857
    functionDepth: 2
    functionLinenumber: 857
    functionLinenumberEnd: 905
    functionName: parse_ooaffentry
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - elog
    - get_nextfield
    linkageType: ''
    returnType: int
    signature: "int parse_ooaffentry(char *str, char *type, char *flag, char *find,\n\t\t\t\t
      char *repl, char *mask)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:931,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:935,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:937,1
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:940,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:946,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:951,1
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:954,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:959,1
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:963,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:963,1
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:966,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:969,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:970,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:971,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:972,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:976,1
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:981,1
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:984,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:986,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:987,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:988,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:989,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:993,1
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:997,1
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:1000,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1003,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1004,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1005,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1006,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1010,1
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:1015,1
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:1018,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1020,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1021,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1022,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1023,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/spell.c:1026,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 75
    argCount: 4
    argNames:
    - str
    - mask
    - find
    - repl
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 916
    functionDepth: 1
    functionLinenumber: 916
    functionLinenumberEnd: 1034
    functionName: parse_affentry
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - isspace
    - ereport
    - errmsg
    - t_isalpha_cstr
    - t_iseq
    - pg_mblen_cstr
    - ts_copychar_with_len
    linkageType: ''
    returnType: bool
    signature: bool parse_affentry(const char *str, char *mask, char *find, char *repl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/postgres/src/backend/tsearch/spell.c:1049,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1051,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1052,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1053,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1055,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1056,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1057,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:1062,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - Conf
    - entry
    - s
    - val
    argTypes:
    - IspellDict*
    - CompoundAffixFlag*
    - char*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1039
    functionDepth: 2
    functionLinenumber: 1039
    functionLinenumberEnd: 1066
    functionName: setCompoundAffixFlagValue
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - cpstrdup
    - errcode
    - strtol
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void setCompoundAffixFlagValue(IspellDict *Conf, CompoundAffixFlag
      *entry,\n\t\t\t\t\t\t  char *s, uint32 val)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1082,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:1083,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1086,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1087,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1088,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1092,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:1094,1
    - Dst: ts_copychar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:1098,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1110,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1117,1
    - Dst: setCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1123,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - Conf
    - s
    - val
    argTypes:
    - IspellDict*
    - char*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1075
    functionDepth: 3
    functionLinenumber: 1075
    functionLinenumberEnd: 1127
    functionName: addCompoundAffixFlagValue
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - isspace
    - repalloc
    - setCompoundAffixFlagValue
    - errmsg
    - tmpalloc
    - pg_mblen_cstr
    - ts_copychar_with_len
    linkageType: ''
    returnType: void
    signature: void addCompoundAffixFlagValue(IspellDict *Conf, const char *s, uint32
      val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getNextFlagFromString
      Src: /src/postgres/src/backend/tsearch/spell.c:1148,1
    - Dst: setCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1149,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/tsearch/spell.c:1152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - Conf
    - s
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1133
    functionDepth: 3
    functionLinenumber: 1133
    functionLinenumberEnd: 1160
    functionName: getCompoundAffixFlagValue
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - setCompoundAffixFlagValue
    - getNextFlagFromString
    - bsearch
    linkageType: ''
    returnType: int
    signature: int getCompoundAffixFlagValue(IspellDict *Conf, const char *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/postgres/src/backend/tsearch/spell.c:1178,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1180,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1181,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1182,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1192,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1193,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1194,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - Conf
    - s
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1199
    functionName: getAffixFlagSet
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strtol
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: char
    signature: 'char *

      getAffixFlagSet(IspellDict *Conf, char *s)'
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: tsearch_readline_begin
      Src: /src/postgres/src/backend/tsearch/spell.c:1232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1233,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1234,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1235,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/spell.c:1238,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1240,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1240,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1242,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1246,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1247,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1247,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1249,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1250,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1250,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1252,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1253,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1253,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1256,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1257,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1257,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1259,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1260,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1260,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1262,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1263,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1263,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1265,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1266,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1267,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1269,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1270,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1271,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1273,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1275,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1277,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:1278,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1282,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1284,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1286,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1287,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1288,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1289,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1295,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:1297,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/spell.c:1300,1
    - Dst: tsearch_readline_begin
      Src: /src/postgres/src/backend/tsearch/spell.c:1303,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1304,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1305,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1306,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/spell.c:1309,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1313,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1313,1
    - Dst: parse_ooaffentry
      Src: /src/postgres/src/backend/tsearch/spell.c:1316,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1319,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:1320,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1323,1
    - Dst: atoi
      Src: /src/postgres/src/backend/tsearch/spell.c:1329,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1333,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/tsearch/spell.c:1338,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:1350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1354,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1355,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1356,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1363,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1363,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1366,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1379,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1380,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1380,1
    - Dst: strchr
      Src: /src/postgres/src/backend/tsearch/spell.c:1396,1
    - Dst: getCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1397,1
    - Dst: getAffixFlagSet
      Src: /src/postgres/src/backend/tsearch/spell.c:1398,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:1401,1
    - Dst: strchr
      Src: /src/postgres/src/backend/tsearch/spell.c:1402,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:1404,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:1405,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1406,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1408,1
    - Dst: NIAddAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:1411,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1413,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1414,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1415,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1419,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:1422,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1424,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 111
    argCount: 2
    argNames:
    - Conf
    - filename
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1207
    functionDepth: 4
    functionLinenumber: 1207
    functionLinenumberEnd: 1425
    functionName: NIImportOOAffixes
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - lowerstr_ctx
    - tsearch_readline
    - errcode
    - strchr
    - addCompoundAffixFlagValue
    - STRNCMP
    - getCompoundAffixFlagValue
    - qsort
    - tsearch_readline_begin
    - pfree
    - errmsg
    - getAffixFlagSet
    - cpstrdup
    - ereport
    - isspace
    - strlen
    - pg_mblen_cstr
    - tsearch_readline_end
    - palloc0_array
    - atoi
    - t_iseq
    - NIAddAffix
    - parse_ooaffentry
    linkageType: ''
    returnType: void
    signature: void NIImportOOAffixes(IspellDict *Conf, const char *filename)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: tsearch_readline_begin
      Src: /src/postgres/src/backend/tsearch/spell.c:1452,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1453,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1454,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1455,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/spell.c:1462,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/spell.c:1464,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1464,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1470,1
    - Dst: findchar2
      Src: /src/postgres/src/backend/tsearch/spell.c:1473,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1476,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:1477,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1478,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:1479,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:1481,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1483,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1490,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1497,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1504,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1509,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:1510,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/spell.c:1531,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1537,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1545,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1546,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1547,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1548,1
    - Dst: parse_affentry
      Src: /src/postgres/src/backend/tsearch/spell.c:1554,1
    - Dst: NIAddAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:1557,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1560,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1561,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:1563,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1568,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1569,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1570,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:1571,1
    - Dst: NIImportOOAffixes
      Src: /src/postgres/src/backend/tsearch/spell.c:1573,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 91
    argCount: 2
    argNames:
    - Conf
    - filename
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1436
    functionDepth: 5
    functionLinenumber: 1436
    functionLinenumberEnd: 1574
    functionName: NIImportAffixes
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - tsearch_readline_end
    - parse_affentry
    - tsearch_readline
    - errcode
    - tsearch_readline_begin
    - findchar2
    - pfree
    - NIAddAffix
    - ereport
    - isspace
    - NIImportOOAffixes
    - strlen
    - errmsg
    - addCompoundAffixFlagValue
    - str_tolower
    - pg_mblen_cstr
    - STRNCMP
    linkageType: ''
    returnType: void
    signature: void NIImportAffixes(IspellDict *Conf, const char *filename)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/spell.c:1587,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1599,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1606,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1606,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1607,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:1610,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1615,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1615,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1616,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:1619,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - Conf
    - a1
    - a2
    argTypes:
    - IspellDict*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1582
    functionDepth: 1
    functionLinenumber: 1582
    functionLinenumberEnd: 1627
    functionName: MergeAffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - cpalloc
    - Assert
    - repalloc
    - strlen
    - sprintf
    linkageType: ''
    returnType: int
    signature: int MergeAffix(IspellDict *Conf, int a1, int a2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/spell.c:1636,1
    - Dst: getCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - Conf
    - affix
    argTypes:
    - IspellDict*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1633
    functionDepth: 4
    functionLinenumber: 1633
    functionLinenumberEnd: 1640
    functionName: makeCompoundFlags
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - Assert
    - getCompoundAffixFlagValue
    linkageType: ''
    returnType: uint32
    signature: uint32 makeCompoundFlags(IspellDict *Conf, int affix)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: cpalloc0
      Src: /src/postgres/src/backend/tsearch/spell.c:1670,1
    - Dst: mkSPNode
      Src: /src/postgres/src/backend/tsearch/spell.c:1683,1
    - Dst: makeCompoundFlags
      Src: /src/postgres/src/backend/tsearch/spell.c:1703,1
    - Dst: MergeAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:1705,1
    - Dst: makeCompoundFlags
      Src: /src/postgres/src/backend/tsearch/spell.c:1711,1
    - Dst: mkSPNode
      Src: /src/postgres/src/backend/tsearch/spell.c:1723,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 4
    argNames:
    - Conf
    - low
    - high
    - level
    argTypes:
    - IspellDict*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1726
      start: 1650
    functionDepth: 5
    functionLinenumber: 1650
    functionLinenumberEnd: 1726
    functionName: mkSPNode
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 1
    functionsReached:
    - mkSPNode
    - MergeAffix
    - makeCompoundFlags
    - cpalloc0
    linkageType: ''
    returnType: SPNode
    signature: 'SPNode *

      mkSPNode(IspellDict *Conf, int low, int high, int level)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/postgres/src/backend/tsearch/spell.c:1754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1756,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1757,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1761,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1762,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1763,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/tsearch/spell.c:1765,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1765,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1766,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1767,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1768,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1781,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/spell.c:1788,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:1795,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/tsearch/spell.c:1804,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:1810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/spell.c:1813,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:1814,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1819,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/spell.c:1826,1
    - Dst: mkSPNode
      Src: /src/postgres/src/backend/tsearch/spell.c:1827,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 40
    argCount: 1
    argNames:
    - Conf
    argTypes:
    - IspellDict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1828
      start: 1732
    functionDepth: 6
    functionLinenumber: 1732
    functionLinenumberEnd: 1828
    functionName: NISortDictionary
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - qsort
    - palloc0_array
    - isdigit
    - errcode
    - strcmp
    - Assert
    - cpstrdup
    - strtol
    - ereport
    - isspace
    - mkSPNode
    - strlen
    - errmsg
    linkageType: ''
    returnType: void
    signature: void NISortDictionary(IspellDict *Conf)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1854,1
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1857,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1863,1
    - Dst: cpalloc0
      Src: /src/postgres/src/backend/tsearch/spell.c:1866,1
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1874,1
    - Dst: mkANode
      Src: /src/postgres/src/backend/tsearch/spell.c:1879,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1883,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:1884,1
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1890,1
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1892,1
    - Dst: mkANode
      Src: /src/postgres/src/backend/tsearch/spell.c:1900,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1904,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:1905,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1909,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 5
    argNames:
    - Conf
    - low
    - high
    - level
    - type
    argTypes:
    - IspellDict*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1841
    functionDepth: 1
    functionLinenumber: 1841
    functionLinenumberEnd: 1912
    functionName: mkANode
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 1
    functionsReached:
    - memcpy
    - cpalloc
    - pfree
    - mkANode
    - cpalloc0
    - tmpalloc
    - GETCHAR
    linkageType: ''
    returnType: AffixNode
    signature: 'AffixNode *

      mkANode(IspellDict *Conf, int low, int high, int level, int type)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/spell.c:1925,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1950,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - Conf
    - issuffix
    - startsuffix
    argTypes:
    - IspellDict*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1960
      start: 1918
    functionDepth: 1
    functionLinenumber: 1918
    functionLinenumberEnd: 1960
    functionName: mkVoidAffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - palloc0
    - cpalloc
    linkageType: ''
    returnType: void
    signature: void mkVoidAffix(IspellDict *Conf, bool issuffix, int startsuffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsAffixFlagInUse
      Src: /src/postgres/src/backend/tsearch/spell.c:1978,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - Conf
    - affixflag
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1972
    functionDepth: 4
    functionLinenumber: 1972
    functionLinenumberEnd: 1982
    functionName: isAffixInUse
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - IsAffixFlagInUse
    linkageType: ''
    returnType: bool
    signature: bool isAffixInUse(IspellDict *Conf, const char *affixflag)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/spell.c:2000,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/spell.c:2001,1
    - Dst: isAffixInUse
      Src: /src/postgres/src/backend/tsearch/spell.c:2011,1
    - Dst: strbncmp
      Src: /src/postgres/src/backend/tsearch/spell.c:2017,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2030,1
    - Dst: mkANode
      Src: /src/postgres/src/backend/tsearch/spell.c:2033,1
    - Dst: mkANode
      Src: /src/postgres/src/backend/tsearch/spell.c:2034,1
    - Dst: mkVoidAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:2035,1
    - Dst: mkVoidAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:2036,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 1
    argNames:
    - Conf
    argTypes:
    - IspellDict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2037
      start: 1987
    functionDepth: 5
    functionLinenumber: 1987
    functionLinenumberEnd: 2037
    functionName: NISortAffixes
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - qsort
    - isAffixInUse
    - repalloc
    - palloc_array
    - mkANode
    - mkVoidAffix
    - strbncmp
    linkageType: ''
    returnType: void
    signature: void NISortAffixes(IspellDict *Conf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GETWCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:2061,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 5
    argNames:
    - node
    - word
    - wrdlen
    - level
    - type
    argTypes:
    - AffixNode*
    - char*
    - int
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2080
      start: 2039
    functionDepth: 1
    functionLinenumber: 2039
    functionLinenumberEnd: 2080
    functionName: FindAffixes
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - GETWCHAR
    linkageType: ''
    returnType: AffixNodeData
    signature: 'AffixNodeData *

      FindAffixes(AffixNode *node, const char *word, int wrdlen, int *level, int type)'
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/spell.c:2144,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2144,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2148,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:2157,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:2158,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:2170,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:2171,1
    - Dst: RS_execute
      Src: /src/postgres/src/backend/tsearch/spell.c:2181,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2191,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/spell.c:2192,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:2193,1
    - Dst: pg_regexec
      Src: /src/postgres/src/backend/tsearch/spell.c:2195,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2198,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2201,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 57
    argCount: 6
    argNames:
    - word
    - len
    - Affix
    - flagflags
    - newword
    - baselen
    argTypes:
    - char*
    - size_t
    - AFFIX*
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2102
    functionDepth: 1
    functionLinenumber: 2102
    functionLinenumberEnd: 2205
    functionName: CheckAffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - pg_mb2wchar_with_len
    - pg_regexec
    - memcpy
    - Assert
    - pfree
    - palloc_array
    - strlen
    - RS_execute
    - strcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      CheckAffix(const char *word, size_t len, AFFIX *Affix, int flagflags, char *newword,
      int *baselen)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:2212,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - forms
    - cur
    - word
    argTypes:
    - char**
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2220
      start: 2207
    functionDepth: 0
    functionLinenumber: 2207
    functionLinenumberEnd: 2220
    functionName: addToResult
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - strcmp
    linkageType: ''
    returnType: int
    signature: int addToResult(char **forms, char **cur, char *word)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2229,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/spell.c:2242,1
    - Dst: FindWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2247,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2249,1
    - Dst: FindAffixes
      Src: /src/postgres/src/backend/tsearch/spell.c:2259,1
    - Dst: CheckAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:2264,1
    - Dst: FindWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2267,1
    - Dst: addToResult
      Src: /src/postgres/src/backend/tsearch/spell.c:2268,1
    - Dst: FindAffixes
      Src: /src/postgres/src/backend/tsearch/spell.c:2283,1
    - Dst: CheckAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:2289,1
    - Dst: FindWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2292,1
    - Dst: addToResult
      Src: /src/postgres/src/backend/tsearch/spell.c:2293,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2298,1
    - Dst: FindAffixes
      Src: /src/postgres/src/backend/tsearch/spell.c:2301,1
    - Dst: CheckAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:2306,1
    - Dst: FindWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2312,1
    - Dst: addToResult
      Src: /src/postgres/src/backend/tsearch/spell.c:2313,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2326,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2330
      start: 2222
    functionDepth: 5
    functionLinenumber: 2222
    functionLinenumberEnd: 2330
    functionName: NormalizeSubWord
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - pfree
    - pstrdup
    - FindAffixes
    - palloc_array
    - FindWord
    - strlen
    - CheckAffix
    - addToResult
    linkageType: ''
    returnType: char
    signature: 'char **

      NormalizeSubWord(IspellDict *Conf, const char *word, int flag)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/tsearch/spell.c:2353,1
    - Dst: strstr
      Src: /src/postgres/src/backend/tsearch/spell.c:2369,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 4
    argNames:
    - ptr
    - word
    - len
    - CheckInPlace
    argTypes:
    - CMPDAffix**
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2380
      start: 2340
    functionDepth: 0
    functionLinenumber: 2340
    functionLinenumberEnd: 2380
    functionName: CheckCompoundAffixes
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strstr
    linkageType: ''
    returnType: int
    signature: int CheckCompoundAffixes(CMPDAffix **ptr, const char *word, int len,
      bool CheckInPlace)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/tsearch/spell.c:2385,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/spell.c:2393,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2396,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/spell.c:2401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - s
    - makedup
    argTypes:
    - SplitVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2382
    functionDepth: 0
    functionLinenumber: 2382
    functionLinenumberEnd: 2405
    functionName: CopyVar
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - palloc_array
    - palloc_object
    linkageType: ''
    returnType: SplitVar
    signature: 'SplitVar *

      CopyVar(SplitVar *s, int makedup)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2413,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - v
    - word
    argTypes:
    - SplitVar*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2418
      start: 2407
    functionDepth: 0
    functionLinenumber: 2407
    functionLinenumberEnd: 2418
    functionName: AddStem
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - repalloc
    linkageType: ''
    returnType: void
    signature: void AddStem(SplitVar *v, char *word)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/tsearch/spell.c:2436,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2438,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/spell.c:2439,1
    - Dst: CopyVar
      Src: /src/postgres/src/backend/tsearch/spell.c:2440,1
    - Dst: CheckCompoundAffixes
      Src: /src/postgres/src/backend/tsearch/spell.c:2446,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:2465,1
    - Dst: NormalizeSubWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2474,1
    - Dst: CopyVar
      Src: /src/postgres/src/backend/tsearch/spell.c:2478,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2489,1
    - Dst: SplitToVariants
      Src: /src/postgres/src/backend/tsearch/spell.c:2493,1
    - Dst: word::word
      Src: /src/postgres/src/backend/tsearch/spell.c:2493,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2495,1
    - Dst: AddStem
      Src: /src/postgres/src/backend/tsearch/spell.c:2537,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2537,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2538,1
    - Dst: SplitToVariants
      Src: /src/postgres/src/backend/tsearch/spell.c:2548,1
    - Dst: AddStem
      Src: /src/postgres/src/backend/tsearch/spell.c:2551,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2551,1
    - Dst: AddStem
      Src: /src/postgres/src/backend/tsearch/spell.c:2565,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2565,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2566,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 81
    argCount: 7
    argNames:
    - Conf
    - snode
    - orig
    - word
    - wordlen
    - startpos
    - minpos
    argTypes:
    - IspellDict*
    - SPNode*
    - SplitVar*
    - char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2568
      start: 2420
    functionDepth: 6
    functionLinenumber: 2420
    functionLinenumberEnd: 2568
    functionName: SplitToVariants
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 1
    functionsReached:
    - memcpy
    - pfree
    - check_stack_depth
    - NormalizeSubWord
    - pnstrdup
    - CopyVar
    - memset
    - AddStem
    - word::word
    - palloc
    - SplitToVariants
    - CheckCompoundAffixes
    linkageType: ''
    returnType: SplitVar
    signature: 'SplitVar *

      SplitToVariants(IspellDict *Conf, SPNode *snode, SplitVar *orig, const char
      *word, int wordlen, int startpos, int minpos)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/spell.c:2574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - lres
    - lcur
    - word
    - flags
    - NVariant
    argTypes:
    - TSLexeme**
    - TSLexeme**
    - char*
    - int
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2584
      start: 2570
    functionDepth: 0
    functionLinenumber: 2570
    functionLinenumberEnd: 2584
    functionName: addNorm
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - palloc_array
    linkageType: ''
    returnType: void
    signature: void addNorm(TSLexeme **lres, TSLexeme **lcur, char *word, int flags,
      uint16 NVariant)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NormalizeSubWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2594,1
    - Dst: addNorm
      Src: /src/postgres/src/backend/tsearch/spell.c:2602,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2605,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2610,1
    - Dst: SplitToVariants
      Src: /src/postgres/src/backend/tsearch/spell.c:2612,1
    - Dst: NormalizeSubWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2619,1
    - Dst: addNorm
      Src: /src/postgres/src/backend/tsearch/spell.c:2629,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2629,1
    - Dst: addNorm
      Src: /src/postgres/src/backend/tsearch/spell.c:2632,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2637,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2639,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2644,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2646,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2647,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - Conf
    - word
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2653
      start: 2586
    functionDepth: 7
    functionLinenumber: 2586
    functionLinenumberEnd: 2653
    functionName: NINormalizeWord
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - addNorm
    - pfree
    - pstrdup
    - NormalizeSubWord
    - strlen
    - SplitToVariants
    linkageType: ''
    returnType: TSLexeme
    signature: 'TSLexeme *

      NINormalizeWord(IspellDict *Conf, const char *word)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:40,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/regis.c:42,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/regis.c:49,1
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:51,1
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:58,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/regis.c:60,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:66,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:67,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 71
    functionName: RS_isRegis
    functionSourceFile: /src/postgres/src/backend/tsearch/regis.c
    functionUses: 1
    functionsReached:
    - t_iseq
    - pg_mblen_cstr
    - elog
    - t_isalpha_cstr
    linkageType: ''
    returnType: bool
    signature: bool RS_isRegis(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/regis.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - prev
    - len
    argTypes:
    - RegisNode*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 82
    functionName: newRegisNode
    functionSourceFile: /src/postgres/src/backend/tsearch/regis.c
    functionUses: 0
    functionsReached:
    - palloc0
    linkageType: ''
    returnType: RegisNode
    signature: 'RegisNode *

      newRegisNode(RegisNode *prev, int len)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/regis.c:87,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/regis.c:92,1
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:99,1
    - Dst: newRegisNode
      Src: /src/postgres/src/backend/tsearch/regis.c:102,1
    - Dst: newRegisNode
      Src: /src/postgres/src/backend/tsearch/regis.c:104,1
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:106,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/regis.c:108,1
    - Dst: newRegisNode
      Src: /src/postgres/src/backend/tsearch/regis.c:111,1
    - Dst: newRegisNode
      Src: /src/postgres/src/backend/tsearch/regis.c:113,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:118,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/regis.c:122,1
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:127,1
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:129,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:133,1
    - Dst: t_isalpha_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:137,1
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:138,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/regis.c:139,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:142,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:145,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:146,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:150,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 3
    argNames:
    - r
    - issuffix
    - str
    argTypes:
    - Regis*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 158
    functionName: RS_compile
    functionSourceFile: /src/postgres/src/backend/tsearch/regis.c
    functionUses: 1
    functionsReached:
    - elog
    - newRegisNode
    - strlen
    - memset
    - t_isalpha_cstr
    - t_iseq
    - pg_mblen_cstr
    - ts_copychar_cstr
    linkageType: ''
    returnType: void
    signature: void RS_compile(Regis *r, bool issuffix, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/regis.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - r
    argTypes:
    - Regis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 174
    functionName: RS_free
    functionSourceFile: /src/postgres/src/backend/tsearch/regis.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void RS_free(Regis *r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:185,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:188,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - str
    - c
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 205
    functionName: mb_strchr
    functionSourceFile: /src/postgres/src/backend/tsearch/regis.c
    functionUses: 0
    functionsReached:
    - pg_mblen_cstr
    linkageType: ''
    returnType: bool
    signature: bool mb_strchr(char *str, char *c)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:217,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:228,1
    - Dst: mb_strchr
      Src: /src/postgres/src/backend/tsearch/regis.c:237,1
    - Dst: mb_strchr
      Src: /src/postgres/src/backend/tsearch/regis.c:241,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:245,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/regis.c:248,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - r
    - str
    argTypes:
    - Regis*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 252
    functionName: RS_execute
    functionSourceFile: /src/postgres/src/backend/tsearch/regis.c
    functionUses: 1
    functionsReached:
    - elog
    - pg_mblen_cstr
    - mb_strchr
    linkageType: ''
    returnType: bool
    signature: bool RS_execute(Regis *r, char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:51,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:52,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:64,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:67,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:70,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - in
    - end
    - flags
    argTypes:
    - char*
    - char**
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 83
    functionName: findwrd
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_synonym.c
    functionUses: 0
    functionsReached:
    - t_iseq
    - pg_mblen_cstr
    - isspace
    linkageType: ''
    returnType: char
    signature: 'char *

      findwrd(char *in, char **end, uint16 *flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: compareSyn
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_synonym.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int compareSyn(const void *a, const void *b)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:95,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:110,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:112,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:113,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:114,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:117,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:118,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:124,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:125,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:126,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:128,1
    - Dst: tsearch_readline_begin
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:130,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:131,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:133,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:136,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:138,1
    - Dst: findwrd
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:140,1
    - Dst: findwrd
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:153,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:171,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:176,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:182,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:183,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:187,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:187,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:188,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:188,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:196,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:199,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:200,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:203,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:207,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 208
    functionName: dsynonym_init
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_synonym.c
    functionUses: 0
    functionsReached:
    - tsearch_readline
    - defGetBoolean
    - strcmp
    - errcode
    - pstrdup
    - palloc_array
    - PG_RETURN_POINTER
    - qsort
    - get_tsearch_config_filename
    - tsearch_readline_begin
    - pfree
    - errmsg
    - str_tolower
    - PG_GETARG_POINTER
    - palloc0_object
    - ereport
    - lfirst
    - strlen
    - repalloc_array
    - defGetString
    - tsearch_readline_end
    - findwrd
    linkageType: ''
    returnType: Datum
    signature: Datum dsynonym_init(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:110,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:112,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:113,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:114,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:117,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:118,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 121
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_synonym.c
    functionUses: 352
    functionsReached:
    - defGetBoolean
    - strcmp
    - errcode
    - ereport
    - lfirst
    - errmsg
    - defGetString
    linkageType: ''
    returnType: void
    signature: void foreach(l, dictoptions)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:213,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:214,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:215,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:222,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:225,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:227,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:231,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:232,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:235,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:237,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:238,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:241,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 242
    functionName: dsynonym_lexize
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_synonym.c
    functionUses: 0
    functionsReached:
    - palloc0_array
    - bsearch
    - pfree
    - pstrdup
    - pnstrdup
    - PG_RETURN_POINTER
    - str_tolower
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum dsynonym_lexize(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:60,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: ts_typanalyze
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum ts_typanalyze(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:188,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:207,1
    - Dst: fetchfunc
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:209,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:226,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:226,1
    - Dst: DatumGetTSVector
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:231,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:237,1
    - Dst: ARRPTR
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:238,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:254,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:269,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:270,1
    - Dst: prune_lexemes_hashtable
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:279,1
    - Dst: TSVectorGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:288,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:289,1
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:322,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:323,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:325,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:328,1
    - Dst: Max
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:336,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:339,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:362,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:398,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:402,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:415,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:416,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:427,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:427,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:433,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 102
    argCount: 4
    argNames:
    - stats
    - fetchfunc
    - samplerows
    - totalrows
    argTypes:
    - VacAttrStats*
    - AnalyzeAttrFetchFunc
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 140
    functionDepth: 4
    functionLinenumber: 140
    functionLinenumberEnd: 463
    functionName: compute_tsvector_stats
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 0
    functionsReached:
    - palloc_array
    - hash_seq_search
    - cstring_to_text_with_len
    - vacuum_delay_point
    - STRPTR
    - qsort_interruptible
    - elog
    - memcpy
    - pfree
    - Assert
    - VARSIZE_ANY
    - fetchfunc
    - PointerGetDatum
    - ARRPTR
    - hash_create
    - prune_lexemes_hashtable
    - hash_seq_init
    - DatumGetTSVector
    - TSVectorGetDatum
    - hash_search
    - MemoryContextSwitchTo
    - hash_get_num_entries
    - Max
    - palloc
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void compute_tsvector_stats(VacAttrStats *stats,\n\t\t\t\t\t   AnalyzeAttrFetchFunc
      fetchfunc,\n\t\t\t\t\t   int samplerows,\n\t\t\t\t\t   double totalrows)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:475,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:476,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:482,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:484,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:485,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - lexemes_tab
    - b_current
    argTypes:
    - HTAB*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 488
    functionName: prune_lexemes_hashtable
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 1
    functionsReached:
    - elog
    - hash_search
    - pfree
    - hash_seq_search
    - hash_seq_init
    linkageType: ''
    returnType: void
    signature: void prune_lexemes_hashtable(HTAB *lexemes_tab, int b_current)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:499,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 501
    functionName: lexeme_hash
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 0
    functionsReached:
    - hash_any
    - DatumGetUInt32
    linkageType: ''
    returnType: uint32
    signature: uint32 lexeme_hash(const void *key, Size keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lexeme_compare
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - void*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 511
    functionName: lexeme_match
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 0
    functionsReached:
    - lexeme_compare
    linkageType: ''
    returnType: int
    signature: int lexeme_match(const void *key1, const void *key2, Size keysize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:528,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 529
    functionName: lexeme_compare
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 1
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int lexeme_compare(const void *key1, const void *key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - e1
    - e2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 541
    functionName: trackitem_compare_frequencies_desc
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int trackitem_compare_frequencies_desc(const void *e1, const void *e2,
      void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lexeme_compare
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - e1
    - e2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 553
    functionName: trackitem_compare_lexemes
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 0
    functionsReached:
    - lexeme_compare
    linkageType: ''
    returnType: int
    signature: int trackitem_compare_lexemes(const void *e1, const void *e2, void
      *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/dict.c:29,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/dict.c:30,1
    - Dst: lookup_ts_dictionary_cache
      Src: /src/postgres/src/backend/tsearch/dict.c:38,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/dict.c:40,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/dict.c:40,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict.c:41,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict.c:42,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/tsearch/dict.c:42,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/dict.c:43,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/tsearch/dict.c:43,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict.c:44,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/dict.c:49,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/dict.c:49,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict.c:50,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict.c:51,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/tsearch/dict.c:51,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/dict.c:52,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/tsearch/dict.c:52,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict.c:53,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/tsearch/dict.c:59,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/dict.c:64,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/tsearch/dict.c:68,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/tsearch/dict.c:72,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict.c:77,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/dict.c:77,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict.c:78,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict.c:81,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict.c:82,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict.c:84,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 26
    functionDepth: 4
    functionLinenumber: 26
    functionLinenumberEnd: 85
    functionName: ts_lexize
    functionSourceFile: /src/postgres/src/backend/tsearch/dict.c
    functionUses: 0
    functionsReached:
    - construct_array_builtin
    - FunctionCall4
    - lookup_ts_dictionary_cache
    - PG_GETARG_TEXT_PP
    - Int32GetDatum
    - pfree
    - palloc_array
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_GETARG_OID
    - PointerGetDatum
    - CStringGetTextDatum
    - PG_RETURN_NULL
    - PG_RETURN_POINTER
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum ts_lexize(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:50,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: get_current_ts_config
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - getTSCurrentConfig
    linkageType: ''
    returnType: Datum
    signature: Datum get_current_ts_config(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tsCompareString
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 74
    functionName: compareWORD
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - tsCompareString
    linkageType: ''
    returnType: int
    signature: int compareWORD(const void *a, const void *b)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:85,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:87,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:99,1
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:104,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:106,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:116,1
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:124,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:126,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:137,1
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:139,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:144,1
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:146,1
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:148,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 2
    argNames:
    - a
    - l
    argTypes:
    - ParsedWord*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 157
    functionName: uniqueWORD
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - qsort
    - pfree
    - palloc_array
    - LIMITPOS
    - strncmp
    - repalloc_array
    linkageType: ''
    returnType: int
    signature: int uniqueWORD(ParsedWord *a, int32 l)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: uniqueWORD
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:178,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:186,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:192,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:193,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:194,1
    - Dst: CALCDATASIZE
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:196,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:197,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:198,1
    - Dst: ARRPTR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:201,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:202,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:208,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:210,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:217,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:220,1
    - Dst: POSDATAPTR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:222,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:225,1
    - Dst: WEP_SETPOS
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:226,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:229,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:237,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 1
    argNames:
    - prs
    argTypes:
    - ParsedText*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 240
    functionName: make_tsvector
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - errcode
    - pfree
    - POSDATAPTR
    - CALCDATASIZE
    - ereport
    - SHORTALIGN
    - palloc0
    - WEP_SETWEIGHT
    - WEP_SETPOS
    - errmsg
    - SET_VARSIZE
    - STRPTR
    - ARRPTR
    - uniqueWORD
    linkageType: ''
    returnType: TSVector
    signature: TSVector make_tsvector(ParsedText *prs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:245,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:246,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:250,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:258,1
    - Dst: parsetext
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:260,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:260,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:260,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:262,1
    - Dst: make_tsvector
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:264,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 242
    functionDepth: 4
    functionLinenumber: 242
    functionLinenumberEnd: 267
    functionName: to_tsvector_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_FREE_IF_COPY
    - palloc_array
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_GETARG_OID
    - make_tsvector
    - PG_RETURN_TSVECTOR
    - parsetext
    linkageType: ''
    returnType: Datum
    signature: Datum to_tsvector_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:272,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:275,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:276,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:276,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:277,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 279
    functionName: to_tsvector
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum to_tsvector(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iterate_jsonb_values
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:295,1
    - Dst: make_tsvector
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - cfgId
    - jb
    - flags
    argTypes:
    - Oid
    - Jsonb*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 298
    functionName: jsonb_to_tsvector_worker
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - make_tsvector
    - iterate_jsonb_values
    linkageType: ''
    returnType: TSVector
    signature: TSVector jsonb_to_tsvector_worker(Oid cfgId, Jsonb *jb, uint32 flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:303,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:304,1
    - Dst: jsonb_to_tsvector_worker
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:307,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:308,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 300
    functionDepth: 4
    functionLinenumber: 300
    functionLinenumberEnd: 311
    functionName: jsonb_string_to_tsvector_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - jsonb_to_tsvector_worker
    - PG_GETARG_OID
    - PG_GETARG_JSONB_P
    - PG_RETURN_TSVECTOR
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_string_to_tsvector_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:316,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:320,1
    - Dst: jsonb_to_tsvector_worker
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:321,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:322,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 313
    functionDepth: 4
    functionLinenumber: 313
    functionLinenumberEnd: 325
    functionName: jsonb_string_to_tsvector
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - getTSCurrentConfig
    - PG_FREE_IF_COPY
    - jsonb_to_tsvector_worker
    - PG_GETARG_JSONB_P
    - PG_RETURN_TSVECTOR
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_string_to_tsvector(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:330,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:331,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:332,1
    - Dst: parse_jsonb_index_flags
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:334,1
    - Dst: jsonb_to_tsvector_worker
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:336,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:337,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:338,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 327
    functionDepth: 4
    functionLinenumber: 327
    functionLinenumberEnd: 341
    functionName: jsonb_to_tsvector_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - parse_jsonb_index_flags
    - PG_FREE_IF_COPY
    - jsonb_to_tsvector_worker
    - PG_GETARG_OID
    - PG_GETARG_JSONB_P
    - PG_RETURN_TSVECTOR
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_to_tsvector_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:346,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:347,1
    - Dst: parse_jsonb_index_flags
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:350,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:352,1
    - Dst: jsonb_to_tsvector_worker
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:353,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:354,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:355,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 343
    functionDepth: 4
    functionLinenumber: 343
    functionLinenumberEnd: 358
    functionName: jsonb_to_tsvector
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - parse_jsonb_index_flags
    - getTSCurrentConfig
    - PG_FREE_IF_COPY
    - jsonb_to_tsvector_worker
    - PG_GETARG_JSONB_P
    - PG_RETURN_TSVECTOR
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_to_tsvector(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iterate_json_values
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:374,1
    - Dst: make_tsvector
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - cfgId
    - json
    - flags
    argTypes:
    - Oid
    - text*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 377
    functionName: json_to_tsvector_worker
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - make_tsvector
    - iterate_json_values
    linkageType: ''
    returnType: TSVector
    signature: TSVector json_to_tsvector_worker(Oid cfgId, text *json, uint32 flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:382,1
    - Dst: PG_GETARG_TEXT_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:383,1
    - Dst: json_to_tsvector_worker
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:386,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:387,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 379
    functionDepth: 4
    functionLinenumber: 379
    functionLinenumberEnd: 390
    functionName: json_string_to_tsvector_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - json_to_tsvector_worker
    - PG_FREE_IF_COPY
    - PG_GETARG_OID
    - PG_GETARG_TEXT_P
    - PG_RETURN_TSVECTOR
    linkageType: ''
    returnType: Datum
    signature: Datum json_string_to_tsvector_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:395,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:399,1
    - Dst: json_to_tsvector_worker
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:400,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:401,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 392
    functionDepth: 4
    functionLinenumber: 392
    functionLinenumberEnd: 404
    functionName: json_string_to_tsvector
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - json_to_tsvector_worker
    - getTSCurrentConfig
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_P
    - PG_RETURN_TSVECTOR
    linkageType: ''
    returnType: Datum
    signature: Datum json_string_to_tsvector(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:409,1
    - Dst: PG_GETARG_TEXT_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:410,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:411,1
    - Dst: parse_jsonb_index_flags
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:413,1
    - Dst: json_to_tsvector_worker
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:415,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:416,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:417,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 406
    functionDepth: 4
    functionLinenumber: 406
    functionLinenumberEnd: 420
    functionName: json_to_tsvector_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - parse_jsonb_index_flags
    - json_to_tsvector_worker
    - PG_FREE_IF_COPY
    - PG_GETARG_OID
    - PG_GETARG_JSONB_P
    - PG_GETARG_TEXT_P
    - PG_RETURN_TSVECTOR
    linkageType: ''
    returnType: Datum
    signature: Datum json_to_tsvector_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:425,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:426,1
    - Dst: parse_jsonb_index_flags
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:429,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:431,1
    - Dst: json_to_tsvector_worker
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:432,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:433,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:434,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 422
    functionDepth: 4
    functionLinenumber: 422
    functionLinenumberEnd: 437
    functionName: json_to_tsvector
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - parse_jsonb_index_flags
    - json_to_tsvector_worker
    - getTSCurrentConfig
    - PG_FREE_IF_COPY
    - PG_GETARG_JSONB_P
    - PG_GETARG_TEXT_P
    - PG_RETURN_TSVECTOR
    linkageType: ''
    returnType: Datum
    signature: Datum json_to_tsvector(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:456,1
    - Dst: parsetext
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - _state
    - elem_value
    - elem_len
    argTypes:
    - void*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 473
    functionName: add_to_tsvector
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - palloc_array
    - parsetext
    linkageType: ''
    returnType: void
    signature: void add_to_tsvector(void *_state, char *elem_value, int elem_len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:506,1
    - Dst: parsetext
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:508,1
    - Dst: pushStop
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:523,1
    - Dst: pushOperator
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:525,1
    - Dst: pushValue
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:546,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:551,1
    - Dst: pushOperator
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:553,1
    - Dst: pushOperator
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:559,1
    - Dst: pushOperator
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:566,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:572,1
    - Dst: pushStop
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:575,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 6
    argNames:
    - opaque
    - state
    - strval
    - lenval
    - weight
    - prefix
    argTypes:
    - void*
    - TSQueryParserState
    - char*
    - int
    - int16
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 576
    functionName: pushval_morph
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - pushStop
    - pushValue
    - pfree
    - palloc_array
    - pushOperator
    - parsetext
    linkageType: ''
    returnType: void
    signature: void pushval_morph(void *opaque, TSQueryParserState state, char *strval,
      int lenval, int16 weight, bool prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:581,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:585,1
    - Dst: parse_tsquery
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:595,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:595,1
    - Dst: PG_RETURN_TSQUERY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 602
    functionName: to_tsquery_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - parse_tsquery
    - PG_GETARG_OID
    - text_to_cstring
    - PG_RETURN_TSQUERY
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum to_tsquery_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:607,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:610,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:611,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:611,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:612,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 614
    functionName: to_tsquery
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum to_tsquery(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:619,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:623,1
    - Dst: parse_tsquery
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:632,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:632,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 639
    functionName: plainto_tsquery_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - parse_tsquery
    - PG_GETARG_OID
    - text_to_cstring
    - PG_RETURN_POINTER
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum plainto_tsquery_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:644,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:647,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:648,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:648,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:649,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 651
    functionName: plainto_tsquery
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum plainto_tsquery(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:657,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:661,1
    - Dst: parse_tsquery
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:670,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:670,1
    - Dst: PG_RETURN_TSQUERY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 677
    functionName: phraseto_tsquery_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - parse_tsquery
    - PG_GETARG_OID
    - text_to_cstring
    - PG_RETURN_TSQUERY
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum phraseto_tsquery_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:682,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:685,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:686,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:686,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:687,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 689
    functionName: phraseto_tsquery
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum phraseto_tsquery(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:694,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:698,1
    - Dst: parse_tsquery
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:708,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:708,1
    - Dst: PG_RETURN_TSQUERY
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 715
    functionName: websearch_to_tsquery_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - parse_tsquery
    - PG_GETARG_OID
    - text_to_cstring
    - PG_RETURN_TSQUERY
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum websearch_to_tsquery_byid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:720,1
    - Dst: getTSCurrentConfig
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:723,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:724,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:724,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:725,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 717
    functionDepth: 1
    functionLinenumber: 717
    functionLinenumberEnd: 727
    functionName: websearch_to_tsquery
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum websearch_to_tsquery(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:33,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:34,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:43,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:45,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:48,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:49,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:50,1
    - Dst: readstoplist
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:51,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:51,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:54,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:57,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:58,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:59,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:60,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:65,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:66,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:67,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 73
    functionName: dsimple_init
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_simple.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - defGetBoolean
    - strcmp
    - errcode
    - ereport
    - lfirst
    - errmsg
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - defGetString
    - readstoplist
    linkageType: ''
    returnType: Datum
    signature: Datum dsimple_init(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:43,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:45,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:48,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:49,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:50,1
    - Dst: readstoplist
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:51,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:51,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:54,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:57,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:58,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:59,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:60,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:65,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:66,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:67,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 70
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_simple.c
    functionUses: 352
    functionsReached:
    - defGetBoolean
    - strcmp
    - errcode
    - ereport
    - lfirst
    - errmsg
    - defGetString
    - readstoplist
    linkageType: ''
    returnType: void
    signature: void foreach(l, dictoptions)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:78,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:79,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:80,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:84,1
    - Dst: searchstoplist
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:86,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:89,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:90,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:91,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:96,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:98,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:103,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_simple.c:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 106
    functionName: dsimple_lexize
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_simple.c
    functionUses: 0
    functionsReached:
    - palloc0_array
    - pfree
    - PG_RETURN_POINTER
    - searchstoplist
    - str_tolower
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum dsimple_lexize(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ld
    - cfg
    argTypes:
    - LexizeData*
    - TSConfigCacheEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: LexizeInit
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LexizeInit(LexizeData *ld, TSConfigCacheEntry *cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - newpl
    argTypes:
    - ListParsedLex*
    - ParsedLex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 83
    functionName: LPLAddTail
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LPLAddTail(ListParsedLex *list, ParsedLex *newpl)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - ListParsedLex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 97
    functionName: LPLRemoveHead
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ParsedLex
    signature: 'ParsedLex *

      LPLRemoveHead(ListParsedLex *list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:102,1
    - Dst: LPLAddTail
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ld
    - type
    - lemm
    - lenlemm
    argTypes:
    - LexizeData*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 109
    functionName: LexizeAddLemm
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached:
    - LPLAddTail
    - palloc_object
    linkageType: ''
    returnType: void
    signature: void LexizeAddLemm(LexizeData *ld, int type, char *lemm, int lenlemm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LPLAddTail
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:114,1
    - Dst: LPLRemoveHead
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ld
    argTypes:
    - LexizeData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 117
    functionName: RemoveHead
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 1
    functionsReached:
    - LPLAddTail
    - LPLRemoveHead
    linkageType: ''
    returnType: void
    signature: void RemoveHead(LexizeData *ld)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ld
    - correspondLexem
    argTypes:
    - LexizeData*
    - ParsedLex**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 139
    functionName: setCorrLex
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void setCorrLex(LexizeData *ld, ParsedLex **correspondLexem)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RemoveHead
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ld
    - stop
    argTypes:
    - LexizeData*
    - ParsedLex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 155
    functionName: moveToWaste
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached:
    - RemoveHead
    linkageType: ''
    returnType: void
    signature: void moveToWaste(LexizeData *ld, ParsedLex *stop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:165,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ld
    - lex
    - res
    argTypes:
    - LexizeData*
    - ParsedLex*
    - TSLexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 170
    functionName: setNewTmpRes
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void setNewTmpRes(LexizeData *ld, ParsedLex *lex, TSLexeme *res)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: RemoveHead
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:198,1
    - Dst: lookup_ts_dictionary_cache
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:204,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:208,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:208,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:209,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:210,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:211,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:212,1
    - Dst: setNewTmpRes
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:225,1
    - Dst: LexizeExec
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:226,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:235,1
    - Dst: RemoveHead
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:239,1
    - Dst: setCorrLex
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:240,1
    - Dst: RemoveHead
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:244,1
    - Dst: lookup_ts_dictionary_cache
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:249,1
    - Dst: LexizeExec
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:288,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:295,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:295,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:296,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:297,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:298,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:299,1
    - Dst: setNewTmpRes
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:306,1
    - Dst: moveToWaste
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:319,1
    - Dst: moveToWaste
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:324,1
    - Dst: setCorrLex
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:332,1
    - Dst: LexizeExec
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:341,1
    - Dst: setCorrLex
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:345,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 80
    argCount: 2
    argNames:
    - ld
    - correspondLexem
    argTypes:
    - LexizeData*
    - ParsedLex**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 347
    functionName: LexizeExec
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 1
    functionsReached:
    - FunctionCall4
    - lookup_ts_dictionary_cache
    - Int32GetDatum
    - LexizeExec
    - setNewTmpRes
    - RemoveHead
    - PointerGetDatum
    - strlen
    - setCorrLex
    - moveToWaste
    - DatumGetPointer
    linkageType: ''
    returnType: TSLexeme
    signature: 'TSLexeme *

      LexizeExec(LexizeData *ld, ParsedLex **correspondLexem)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lookup_ts_config_cache
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:366,1
    - Dst: lookup_ts_parser_cache
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:367,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:369,1
    - Dst: FunctionCall2
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:369,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:370,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:371,1
    - Dst: LexizeInit
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:373,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:377,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:377,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:378,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:379,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:380,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:387,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:388,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:392,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:393,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:394,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:395,1
    - Dst: LexizeAddLemm
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:400,1
    - Dst: LexizeExec
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:402,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:413,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:418,1
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:423,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:427,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:431,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:431,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 4
    argNames:
    - cfgId
    - prs
    - buf
    - buflen
    argTypes:
    - Oid
    - ParsedText*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 354
    functionDepth: 4
    functionLinenumber: 354
    functionLinenumberEnd: 432
    functionName: parsetext
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 5
    functionsReached:
    - LexizeInit
    - errcode
    - LexizeExec
    - repalloc
    - FunctionCall1
    - Int32GetDatum
    - pfree
    - FunctionCall2
    - PointerGetDatum
    - errmsg
    - ereport
    - LIMITPOS
    - strlen
    - lookup_ts_config_cache
    - LexizeAddLemm
    - FunctionCall3
    - DatumGetInt32
    - errdetail
    - lookup_ts_parser_cache
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void parsetext(Oid cfgId, ParsedText *prs, char *buf, int buflen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:445,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:447,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:450,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - prs
    - buf
    - buflen
    - type
    argTypes:
    - HeadlineParsedText*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 453
    functionName: hladdword
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached:
    - memset
    - repalloc
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void hladdword(HeadlineParsedText *prs, char *buf, int buflen, int
      type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:467,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:473,1
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:477,1
    - Dst: tsCompareString
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:481,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:481,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:486,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - prs
    - query
    - pos
    - buf
    - buflen
    argTypes:
    - HeadlineParsedText*
    - TSQuery
    - int32
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 496
    functionName: hlfinditem
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached:
    - memcpy
    - tsCompareString
    - GETQUERY
    - repalloc
    - LIMITPOS
    - GETOPERAND
    linkageType: ''
    returnType: void
    signature: void hlfinditem(HeadlineParsedText *prs, TSQuery query, int32 pos,
      char *buf, int buflen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hladdword
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:508,1
    - Dst: hlfinditem
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:516,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:516,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:521,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:532,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:535,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - prs
    - query
    - lexs
    - norms
    argTypes:
    - HeadlineParsedText*
    - TSQuery
    - ParsedLex*
    - TSLexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 537
    functionName: addHLParsedLex
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 0
    functionsReached:
    - pfree
    - hladdword
    - strlen
    - hlfinditem
    linkageType: ''
    returnType: void
    signature: void addHLParsedLex(HeadlineParsedText *prs, TSQuery query, ParsedLex
      *lexs, TSLexeme *norms)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lookup_ts_config_cache
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:552,1
    - Dst: lookup_ts_parser_cache
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:553,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:555,1
    - Dst: FunctionCall2
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:555,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:556,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:557,1
    - Dst: LexizeInit
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:559,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:563,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:563,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:564,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:565,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:566,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:571,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:572,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:573,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:574,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:578,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:579,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:580,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:581,1
    - Dst: LexizeAddLemm
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:586,1
    - Dst: LexizeExec
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:590,1
    - Dst: addHLParsedLex
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:593,1
    - Dst: addHLParsedLex
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:596,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:600,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:600,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 5
    argNames:
    - cfgId
    - prs
    - query
    - buf
    - buflen
    argTypes:
    - Oid
    - HeadlineParsedText*
    - TSQuery
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 539
    functionDepth: 4
    functionLinenumber: 539
    functionLinenumberEnd: 601
    functionName: hlparsetext
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 2
    functionsReached:
    - LexizeInit
    - lookup_ts_config_cache
    - errcode
    - Int32GetDatum
    - LexizeAddLemm
    - ereport
    - FunctionCall3
    - LexizeExec
    - FunctionCall2
    - DatumGetInt32
    - FunctionCall1
    - PointerGetDatum
    - errmsg
    - errdetail
    - addHLParsedLex
    - lookup_ts_parser_cache
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void hlparsetext(Oid cfgId, HeadlineParsedText *prs, TSQuery query,
      char *buf, int buflen)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:617,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:627,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:642,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:655,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:658,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:662,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:671,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:677,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 1
    argNames:
    - prs
    argTypes:
    - HeadlineParsedText*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 606
    functionDepth: 2
    functionLinenumber: 606
    functionLinenumberEnd: 679
    functionName: generateHeadline
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 2
    functionsReached:
    - memcpy
    - pfree
    - repalloc
    - SET_VARSIZE
    - palloc
    linkageType: ''
    returnType: text
    signature: 'text *

      generateHeadline(HeadlineParsedText *prs)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - character_class
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 35
    functionName: GENERATE_T_ISCLASS_DEF
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_locale.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_T_ISCLASS_DEF(character_class)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:88,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - stp
    - filename
    argTypes:
    - tsearch_readline_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 100
    functionName: tsearch_readline_begin
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_locale.c
    functionUses: 5
    functionsReached:
    - AllocateFile
    - initStringInfo
    linkageType: ''
    returnType: bool
    signature: "bool tsearch_readline_begin(tsearch_readline_state *stp,\n\t\t\t\t\t
      \  const char *filename)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:119,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:124,1
    - Dst: pg_any_to_server
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:128,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - stp
    argTypes:
    - tsearch_readline_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 107
    functionDepth: 3
    functionLinenumber: 107
    functionLinenumberEnd: 147
    functionName: tsearch_readline
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_locale.c
    functionUses: 5
    functionsReached:
    - pfree
    - pstrdup
    - pg_get_line_buf
    - pg_any_to_server
    linkageType: ''
    returnType: char
    signature: 'char *

      tsearch_readline(tsearch_readline_state *stp)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:159,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:164,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - stp
    argTypes:
    - tsearch_readline_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 169
    functionName: tsearch_readline_end
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_locale.c
    functionUses: 5
    functionsReached:
    - pfree
    - FreeFile
    linkageType: ''
    returnType: void
    signature: void tsearch_readline_end(tsearch_readline_state *stp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:187,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 195
    functionName: tsearch_readline_callback
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_locale.c
    functionUses: 0
    functionsReached:
    - errcontext
    linkageType: ''
    returnType: void
    signature: void tsearch_readline_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:49,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:49,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:50,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:51,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:52,1
    - Dst: get_share_path
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:55,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:56,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - basename
    - extension
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 33
    functionDepth: 5
    functionLinenumber: 33
    functionLinenumberEnd: 61
    functionName: get_tsearch_config_filename
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_utils.c
    functionUses: 2
    functionsReached:
    - errcode
    - get_share_path
    - ereport
    - strspn
    - strlen
    - errmsg
    - palloc
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *\nget_tsearch_config_filename(const char *basename,\n\t\t\t\t\t\t\tconst
      char *extension)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:76,1
    - Dst: tsearch_readline_begin
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:81,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:82,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:83,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:84,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:87,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:92,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:93,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:99,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:108,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:113,1
    - Dst: wordop
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:119,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:119,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:121,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:129,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:130,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:137,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 3
    argNames:
    - fname
    - s
    - (*wordop) (const char *, size_t, Oid)
    argTypes:
    - char*
    - StopList*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 68
    functionDepth: 6
    functionLinenumber: 68
    functionLinenumberEnd: 138
    functionName: readstoplist
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_utils.c
    functionUses: 2
    functionsReached:
    - tsearch_readline_end
    - wordop
    - qsort
    - tsearch_readline
    - errcode
    - tsearch_readline_begin
    - get_tsearch_config_filename
    - pfree
    - ereport
    - isspace
    - palloc_array
    - strlen
    - errmsg
    - repalloc_array
    - pg_mblen_cstr
    linkageType: ''
    returnType: void
    signature: void readstoplist(const char *fname, StopList *s, char *(*wordop) (const
      char *, size_t, Oid))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - s
    - key
    argTypes:
    - StopList*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 146
    functionName: searchstoplist
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_utils.c
    functionUses: 1
    functionsReached:
    - bsearch
    linkageType: ''
    returnType: bool
    signature: bool searchstoplist(StopList *s, char *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - query
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: tsquery_opr_selec_no_stats
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: tsquery_opr_selec_no_stats(query)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:69,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:74,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:75,1
    - Dst: get_restriction_variable
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:85,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:87,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:92,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:94,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:95,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:103,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:104,1
    - Dst: tsquerysel
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:119,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:127,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:129,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:131,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 132
    functionName: tsmatchsel
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 0
    functionsReached:
    - ReleaseVariableStats
    - get_restriction_variable
    - CLAMP_PROBABILITY
    - tsquerysel
    - PG_RETURN_FLOAT8
    - PG_GETARG_POINTER
    - IsA
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum tsmatchsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: tsmatchjoinsel
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum tsmatchjoinsel(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetTSQuery
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:158,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:164,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:169,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:172,1
    - Dst: mcelem_tsquery_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:180,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:182,1
    - Dst: tsquery_opr_selec_no_stats
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:187,1
    - Dst: tsquery_opr_selec_no_stats
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:198,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - vardata
    - constval
    argTypes:
    - VariableStatData*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 203
    functionName: tsquerysel
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 1
    functionsReached:
    - DatumGetTSQuery
    - HeapTupleIsValid
    - free_attstatsslot
    - tsquery_opr_selec_no_stats
    - GETSTRUCT
    - mcelem_tsquery_selec
    - get_attstatsslot
    linkageType: ''
    returnType: Selectivity
    signature: Selectivity tsquerysel(VariableStatData *vardata, Datum constval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tsquery_opr_selec_no_stats
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:226,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:231,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:238,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:238,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:238,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:238,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:238,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:239,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:249,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:249,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:249,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - query
    - mcelem
    - nmcelem
    - numbers
    - nnumbers
    argTypes:
    - TSQuery
    - Datum*
    - int
    - float4*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 255
    functionName: mcelem_tsquery_selec
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 1
    functionsReached:
    - Assert
    - pfree
    - GETQUERY
    - palloc_array
    - tsquery_opr_selec_no_stats
    - VARATT_IS_EXTERNAL
    - tsquery_opr_selec
    - VARATT_IS_COMPRESSED
    - GETOPERAND
    - DatumGetPointer
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcelem_tsquery_selec(TSQuery query, const Datum *mcelem,
      int nmcelem,\n\t\t\t\t\t const float4 *numbers, int nnumbers)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:286,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:329,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:332,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:332,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:342,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:343,1
    - Dst: Max
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:353,1
    - Dst: Min
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:353,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:364,1
    - Dst: Min
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:385,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:398,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:404,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:406,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:412,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:414,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:420,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:427,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 5
    argNames:
    - item
    - operand
    - lookup
    - length
    - minfreq
    argTypes:
    - QueryItem*
    - char*
    - TextFreq*
    - int
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 279
    functionDepth: 4
    functionLinenumber: 279
    functionLinenumberEnd: 430
    functionName: tsquery_opr_selec
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 2
    functionsReached:
    - elog
    - bsearch
    - check_stack_depth
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - tsquery_opr_selec
    - strncmp
    - CLAMP_PROBABILITY
    - Max
    - Min
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity tsquery_opr_selec(QueryItem *item, char *operand,\n\t\t\t\t
      \ TextFreq *lookup, int length, float4 minfreq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:447,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:456,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 438
    functionDepth: 4
    functionLinenumber: 438
    functionLinenumberEnd: 457
    functionName: compare_lexeme_textfreq
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 0
    functionsReached:
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - strncmp
    linkageType: ''
    returnType: int
    signature: int compare_lexeme_textfreq(const void *e1, const void *e2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:272,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:275,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - prev
    argTypes:
    - TParserPosition*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 284
    functionName: newTParserPosition
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    - palloc_object
    linkageType: ''
    returnType: TParserPosition
    signature: 'TParserPosition *

      newTParserPosition(TParserPosition *prev)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:289,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:291,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:294,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:295,1
    - Dst: newTParserPosition
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:297,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 305
    functionName: TParserInit
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - pg_mb2wchar_with_len
    - palloc_array
    - pg_database_encoding_max_length
    - newTParserPosition
    - fprintf
    linkageType: ''
    returnType: TParser
    signature: 'TParser *

      TParserInit(char *str, int len)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:321,1
    - Dst: newTParserPosition
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:330,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - orig
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 338
    functionName: TParserCopyInit
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - newTParserPosition
    - palloc0_object
    - fprintf
    linkageType: ''
    returnType: TParser
    signature: 'TParser *

      TParserCopyInit(const TParser *orig)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:348,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:353,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:356,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 359
    functionName: TParserClose
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - pfree
    - fprintf
    linkageType: ''
    returnType: void
    signature: void TParserClose(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:371,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:376,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 379
    functionName: TParserCopyClose
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - pfree
    - fprintf
    linkageType: ''
    returnType: void
    signature: void TParserCopyClose(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - nonascii
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 407
    functionName: p_iswhat
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: p_iswhat(type, nonascii)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - prs
    - c
    argTypes:
    - TParser*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 429
    functionName: p_iseq
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int p_iseq(TParser *prs, char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 436
    functionName: p_isEOF
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int p_isEOF(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_iseq
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 442
    functionName: p_iseqC
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - p_iseq
    linkageType: ''
    returnType: int
    signature: int p_iseqC(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_iseq
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 444
    functionDepth: 2
    functionLinenumber: 444
    functionLinenumberEnd: 448
    functionName: p_isneC
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - p_iseq
    linkageType: ''
    returnType: int
    signature: int p_isneC(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isascii
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 454
    functionName: p_isascii
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - isascii
    linkageType: ''
    returnType: int
    signature: int p_isascii(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_isascii
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:459,1
    - Dst: p_isalpha
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 460
    functionName: p_isasclet
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - p_isascii
    - p_isalpha
    linkageType: ''
    returnType: int
    signature: int p_isasclet(TParser *prs)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 489
    functionName: p_isurlchar
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int p_isurlchar(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_isalnum
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:497,1
    - Dst: p_isnotalnum
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:498,1
    - Dst: p_isalpha
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:499,1
    - Dst: p_isnotalpha
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:500,1
    - Dst: p_isdigit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:501,1
    - Dst: p_isnotdigit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:502,1
    - Dst: p_islower
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:503,1
    - Dst: p_isnotlower
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:504,1
    - Dst: p_isprint
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:505,1
    - Dst: p_isnotprint
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:506,1
    - Dst: p_ispunct
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:507,1
    - Dst: p_isnotpunct
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:508,1
    - Dst: p_isspace
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:509,1
    - Dst: p_isnotspace
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:510,1
    - Dst: p_isupper
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:511,1
    - Dst: p_isnotupper
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:512,1
    - Dst: p_isxdigit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:513,1
    - Dst: p_isnotxdigit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:514,1
    - Dst: p_isEOF
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:515,1
    - Dst: p_iseqC
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:516,1
    - Dst: p_isneC
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 494
    functionDepth: 3
    functionLinenumber: 494
    functionLinenumberEnd: 518
    functionName: _make_compiler_happy
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - p_ispunct
    - p_isnotlower
    - p_isnotxdigit
    - p_isnotdigit
    - p_isneC
    - p_isprint
    - p_isspace
    - p_isnotspace
    - p_iseqC
    - p_isnotprint
    - p_isupper
    - p_islower
    - p_isnotalpha
    - p_isalnum
    - p_isdigit
    - p_isnotalnum
    - p_isxdigit
    - p_isnotpunct
    - p_isalpha
    - p_isnotupper
    - p_isEOF
    linkageType: ''
    returnType: void
    signature: void _make_compiler_happy(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:527,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:531,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:533,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:537,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 543
    functionName: SpecialTags
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - pg_strncasecmp
    linkageType: ''
    returnType: void
    signature: void SpecialTags(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 551
    functionName: SpecialFURL
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpecialFURL(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 558
    functionName: SpecialHyphen
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpecialHyphen(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 567
    functionName: SpecialVerVersion
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpecialVerVersion(TParser *prs)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 578
    functionName: p_isstophost
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int p_isstophost(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 584
    functionName: p_isignore
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int p_isignore(TParser *prs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TParserCopyInit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:589,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:598,1
    - Dst: TParserGet
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:600,1
    - Dst: TParserCopyClose
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:609,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 586
    functionDepth: 2
    functionLinenumber: 586
    functionLinenumberEnd: 612
    functionName: p_ishost
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - TParserCopyInit
    - TParserGet
    - check_stack_depth
    - TParserCopyClose
    linkageType: ''
    returnType: int
    signature: int p_ishost(TParser *prs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TParserCopyInit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:617,1
    - Dst: newTParserPosition
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:620,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:627,1
    - Dst: TParserGet
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:629,1
    - Dst: TParserCopyClose
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 614
    functionDepth: 2
    functionLinenumber: 614
    functionLinenumberEnd: 641
    functionName: p_isURLPath
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - TParserCopyClose
    - TParserCopyInit
    - check_stack_depth
    - newTParserPosition
    - TParserGet
    linkageType: ''
    returnType: int
    signature: int p_isURLPath(TParser *prs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_dsplen
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:655,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:664,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:901,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 920
    functionName: p_isspecial
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - pg_dsplen
    - lengthof
    linkageType: ''
    returnType: int
    signature: int p_isspecial(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1572
    functionDepth: 0
    functionLinenumber: 1572
    functionLinenumberEnd: 1574
    functionName: TPARSERSTATEACTION
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TPARSERSTATEACTION(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1575
    functionDepth: 0
    functionLinenumber: 1575
    functionLinenumberEnd: 1577
    functionName: TPARSERSTATEACTION
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TPARSERSTATEACTION(state)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1669,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1671,1
    - Dst: pg_mblen_range
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1689,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1690,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1691,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1702,1
    - Dst: TParserStateActionItem*::isclass
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1709,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1718,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1721,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1722,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1724,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1726,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1727,1
    - Dst: TParserStateActionItem*::special
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1745,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1750,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1762,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1764,1
    - Dst: newTParserPosition
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1775,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1777,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1787,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1795,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1803,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 91
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1664
    functionDepth: 1
    functionLinenumber: 1664
    functionLinenumberEnd: 1831
    functionName: TParserGet
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 2
    functionsReached:
    - TParserStateActionItem*::special
    - pg_mblen_range
    - Assert
    - pfree
    - CHECK_FOR_INTERRUPTS
    - newTParserPosition
    - TParserStateActionItem*::isclass
    - fprintf
    linkageType: ''
    returnType: bool
    signature: bool TParserGet(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1836,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1842,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1843,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1849
      start: 1833
    functionDepth: 1
    functionLinenumber: 1833
    functionLinenumberEnd: 1849
    functionName: prsd_lextype
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - PG_RETURN_POINTER
    - palloc_array
    linkageType: ''
    returnType: Datum
    signature: Datum prsd_lextype(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1854,1
    - Dst: TParserInit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1854,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1854,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1851
    functionDepth: 2
    functionLinenumber: 1851
    functionLinenumberEnd: 1855
    functionName: prsd_start
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    - PG_RETURN_POINTER
    - TParserInit
    linkageType: ''
    returnType: Datum
    signature: Datum prsd_start(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1860,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1861,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1862,1
    - Dst: TParserGet
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1864,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1865,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1870,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1871
      start: 1857
    functionDepth: 2
    functionLinenumber: 1857
    functionLinenumberEnd: 1871
    functionName: prsd_nexttoken
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - TParserGet
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum prsd_nexttoken(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1876,1
    - Dst: TParserClose
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1878,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1879,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1880
      start: 1873
    functionDepth: 1
    functionLinenumber: 1873
    functionLinenumberEnd: 1880
    functionName: prsd_end
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - TParserClose
    linkageType: ''
    returnType: Datum
    signature: Datum prsd_end(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1888
    functionDepth: 0
    functionLinenumber: 1888
    functionLinenumberEnd: 1889
    functionName: TS_IDIGNORE
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TS_IDIGNORE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1889
    functionDepth: 0
    functionLinenumber: 1889
    functionLinenumberEnd: 1890
    functionName: HLIDREPLACE
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HLIDREPLACE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1891
      start: 1890
    functionDepth: 0
    functionLinenumber: 1890
    functionLinenumberEnd: 1891
    functionName: HLIDSKIP
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HLIDSKIP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1892
      start: 1891
    functionDepth: 0
    functionLinenumber: 1891
    functionLinenumberEnd: 1892
    functionName: XMLHLIDSKIP
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XMLHLIDSKIP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1893
      start: 1892
    functionDepth: 0
    functionLinenumber: 1892
    functionLinenumberEnd: 1893
    functionName: NONWORDTOKEN
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NONWORDTOKEN(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1893
    functionDepth: 0
    functionLinenumber: 1893
    functionLinenumberEnd: 1894
    functionName: NOENDTOKEN
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NOENDTOKEN(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1902
    functionDepth: 0
    functionLinenumber: 1902
    functionLinenumberEnd: 1904
    functionName: INTERESTINGWORD
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERESTINGWORD(j)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - j
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1906
    functionDepth: 0
    functionLinenumber: 1906
    functionLinenumberEnd: 1909
    functionName: BADENDPOINT
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BADENDPOINT(j)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1953,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - opaque
    - val
    - data
    argTypes:
    - void*
    - QueryOperand*
    - ExecPhraseData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1969
      start: 1936
    functionDepth: 0
    functionLinenumber: 1936
    functionLinenumberEnd: 1969
    functionName: checkcondition_HL
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - palloc_array
    linkageType: ''
    returnType: TSTernaryValue
    signature: TSTernaryValue checkcondition_HL(void *opaque, QueryOperand *val, ExecPhraseData
      *data)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2011,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2044,1
    - Dst: Max
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2070,1
    - Dst: TS_execute
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2112,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2112,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 51
    argCount: 6
    argNames:
    - prs
    - query
    - locations
    - nextpos
    - p
    - q
    argTypes:
    - HeadlineParsedText*
    - TSQuery
    - List*
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2132
      start: 1987
    functionDepth: 1
    functionLinenumber: 1987
    functionLinenumberEnd: 2132
    functionName: hlCover
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - TS_execute
    - lfirst
    - Max
    - GETQUERY
    linkageType: ''
    returnType: bool
    signature: "bool hlCover(HeadlineParsedText *prs, TSQuery query, List *locations,\n\t\tint
      *nextpos, int *p, int *q)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2011,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2029
      start: 2009
    functionDepth: 1
    functionLinenumber: 2009
    functionLinenumberEnd: 2029
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 352
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, locations)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2044,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2060
      start: 2042
    functionDepth: 1
    functionLinenumber: 2042
    functionLinenumberEnd: 2060
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 352
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, locations)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HLIDREPLACE
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2151,1
    - Dst: HLIDSKIP
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2153,1
    - Dst: XMLHLIDSKIP
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2158,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - prs
    - highlightall
    - startpos
    - endpos
    argTypes:
    - HeadlineParsedText*
    - bool
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2139
    functionDepth: 1
    functionLinenumber: 2139
    functionLinenumberEnd: 2164
    functionName: mark_fragment
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - HLIDSKIP
    - HLIDREPLACE
    - XMLHLIDSKIP
    linkageType: ''
    returnType: void
    signature: "void mark_fragment(HeadlineParsedText *prs, bool highlightall,\n\t\t\t
      \ int startpos, int endpos)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2192,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2200,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2202,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2212,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2214,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 6
    argNames:
    - prs
    - startpos
    - endpos
    - curlen
    - poslen
    - max_words
    argTypes:
    - HeadlineParsedText*
    - int*
    - int*
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2218
      start: 2175
    functionDepth: 1
    functionLinenumber: 2175
    functionLinenumberEnd: 2218
    functionName: get_next_fragment
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - INTERESTINGWORD
    - NONWORDTOKEN
    linkageType: ''
    returnType: void
    signature: "void get_next_fragment(HeadlineParsedText *prs, int *startpos, int
      *endpos,\n\t\t\t\t  int *curlen, int *poslen, int max_words)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2255,1
    - Dst: hlCover
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2258,1
    - Dst: get_next_fragment
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2272,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2276,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2336,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2344,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2346,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2354,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2359,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2361,1
    - Dst: mark_fragment
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2370,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2396,1
    - Dst: mark_fragment
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2400,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2403,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 89
    argCount: 8
    argNames:
    - prs
    - query
    - locations
    - highlightall
    - shortword
    - min_words
    - max_words
    - max_fragments
    argTypes:
    - HeadlineParsedText*
    - TSQuery
    - List*
    - bool
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2404
      start: 2226
    functionDepth: 2
    functionLinenumber: 2226
    functionLinenumberEnd: 2404
    functionName: mark_hl_fragments
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - hlCover
    - NONWORDTOKEN
    - pfree
    - get_next_fragment
    - repalloc
    - BADENDPOINT
    - palloc
    - mark_fragment
    linkageType: ''
    returnType: void
    signature: "void mark_hl_fragments(HeadlineParsedText *prs, TSQuery query, List
      *locations,\n\t\t\t\t  bool highlightall,\n\t\t\t\t  int shortword, int min_words,\n\t\t\t\t
      \ int max_words, int max_fragments)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: hlCover
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2431,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2444,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2446,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2462,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2464,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2468,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2481,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2483,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2487,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2505,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2507,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2509,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2531,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2531,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2550,1
    - Dst: mark_fragment
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2565,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 79
    argCount: 7
    argNames:
    - prs
    - query
    - locations
    - highlightall
    - shortword
    - min_words
    - max_words
    argTypes:
    - HeadlineParsedText*
    - TSQuery
    - List*
    - bool
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2566
      start: 2409
    functionDepth: 2
    functionLinenumber: 2409
    functionLinenumberEnd: 2566
    functionName: mark_hl_words
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - hlCover
    - NONWORDTOKEN
    - mark_fragment
    - BADENDPOINT
    - INTERESTINGWORD
    linkageType: ''
    returnType: void
    signature: "void mark_hl_words(HeadlineParsedText *prs, TSQuery query, List *locations,\n\t\t\t
      \ bool highlightall,\n\t\t\t  int shortword, int min_words, int max_words)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2574,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2575,1
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2576,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2596,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2597,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2599,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2600,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2601,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2602,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2603,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2604,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2605,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2606,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2607,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2608,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2609,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2610,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2611,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2612,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2613,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2614,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2615,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2616,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2617,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2618,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2619,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2621,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2622,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2623,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2631,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2633,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2635,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2636,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2637,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2639,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2640,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2641,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2643,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2644,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2645,1
    - Dst: TS_execute_locations
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2655,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2655,1
    - Dst: mark_hl_words
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2663,1
    - Dst: mark_hl_fragments
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2666,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2671,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2673,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2675,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2678,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2679,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2680,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2682,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2683,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2684,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2686,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2687,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2688,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2690,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2691,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2692,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2697,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2698
      start: 2571
    functionDepth: 3
    functionLinenumber: 2571
    functionLinenumberEnd: 2698
    functionName: prsd_headline
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - errcode
    - PG_GETARG_TSQUERY
    - GETQUERY
    - pstrdup
    - ereport
    - mark_hl_words
    - TS_execute_locations
    - lfirst
    - strlen
    - errmsg
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - defGetString
    - pg_strtoint32
    - mark_hl_fragments
    linkageType: ''
    returnType: Datum
    signature: Datum prsd_headline(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2596,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2597,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2599,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2600,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2601,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2602,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2603,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2604,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2605,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2606,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2607,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2608,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2609,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2610,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2611,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2612,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2613,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2614,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2615,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2616,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2617,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2618,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2619,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2621,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2622,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2623,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2625
      start: 2594
    functionDepth: 2
    functionLinenumber: 2594
    functionLinenumberEnd: 2625
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 352
    functionsReached:
    - pg_strcasecmp
    - errcode
    - pstrdup
    - ereport
    - lfirst
    - errmsg
    - defGetString
    - pg_strtoint32
    linkageType: ''
    returnType: void
    signature: void foreach(l, prsoptions)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:33,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:40,1
    - Dst: NIStartBuild
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:42,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:46,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:48,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:53,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:54,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:55,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:56,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:56,1
    - Dst: NIImportDictionary
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:58,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:59,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:62,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:67,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:68,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:69,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:70,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:70,1
    - Dst: NIImportAffixes
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:72,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:73,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:76,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:79,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:80,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:81,1
    - Dst: readstoplist
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:82,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:82,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:87,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:88,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:89,1
    - Dst: NISortDictionary
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:96,1
    - Dst: NISortAffixes
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:97,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:101,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:102,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:103,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:107,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:108,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:109,1
    - Dst: NIFinishBuild
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:112,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:114,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 30
    functionDepth: 7
    functionLinenumber: 30
    functionLinenumberEnd: 115
    functionName: dispell_init
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_ispell.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - NIFinishBuild
    - strcmp
    - errcode
    - get_tsearch_config_filename
    - pfree
    - ereport
    - readstoplist
    - NIStartBuild
    - NISortDictionary
    - lfirst
    - NIImportDictionary
    - errmsg
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - NISortAffixes
    - defGetString
    - NIImportAffixes
    linkageType: ''
    returnType: Datum
    signature: Datum dispell_init(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:46,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:48,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:53,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:54,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:55,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:56,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:56,1
    - Dst: NIImportDictionary
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:58,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:59,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:62,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:67,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:68,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:69,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:70,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:70,1
    - Dst: NIImportAffixes
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:72,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:73,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:76,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:79,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:80,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:81,1
    - Dst: readstoplist
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:82,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:82,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:87,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:88,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:89,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 44
    functionDepth: 7
    functionLinenumber: 44
    functionLinenumberEnd: 92
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_ispell.c
    functionUses: 352
    functionsReached:
    - strcmp
    - errcode
    - get_tsearch_config_filename
    - pfree
    - ereport
    - readstoplist
    - lfirst
    - NIImportDictionary
    - errmsg
    - defGetString
    - NIImportAffixes
    linkageType: ''
    returnType: void
    signature: void foreach(l, dictoptions)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:120,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:121,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:122,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:129,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:131,1
    - Dst: NINormalizeWord
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:132,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:135,1
    - Dst: searchstoplist
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:140,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:142,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:148,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:154,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 117
    functionDepth: 8
    functionLinenumber: 117
    functionLinenumberEnd: 155
    functionName: dispell_lexize
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_ispell.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pfree
    - PG_RETURN_POINTER
    - searchstoplist
    - str_tolower
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    - NINormalizeWord
    linkageType: ''
    returnType: Datum
    signature: Datum dispell_lexize(PG_FUNCTION_ARGS)
  - BBCount: 66
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1025,1
    - Dst: get_relation_by_qualified_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1047,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1047,1
    - Dst: get_object_address_attribute
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1054,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1054,1
    - Dst: get_object_address_attrdef
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1060,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1060,1
    - Dst: get_object_address_relobject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1068,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1068,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1077,1
    - Dst: get_object_address_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1078,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1079,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1081,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1081,1
    - Dst: get_domain_constraint_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1084,1
    - Dst: get_object_address_unqualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1102,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1103,1
    - Dst: get_object_address_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1107,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1107,1
    - Dst: LookupFuncWithArgs
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1114,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1114,1
    - Dst: LookupOperWithArgs
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1119,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1119,1
    - Dst: get_collation_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1124,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1124,1
    - Dst: get_conversion_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1129,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1129,1
    - Dst: get_object_address_opcf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1134,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1134,1
    - Dst: get_object_address_opf_member
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1138,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1138,1
    - Dst: oidparse
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1142,1
    - Dst: LargeObjectExists
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1144,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1147,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1149,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1155,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1155,1
    - Dst: lsecond_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1156,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1156,1
    - Dst: LookupTypeNameOid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1160,1
    - Dst: LookupTypeNameOid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1161,1
    - Dst: get_cast_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1164,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1170,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1170,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1171,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1171,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1171,1
    - Dst: LookupTypeNameOid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1172,1
    - Dst: get_language_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1173,1
    - Dst: get_transform_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1177,1
    - Dst: get_ts_parser_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1183,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1183,1
    - Dst: get_ts_dict_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1188,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1188,1
    - Dst: get_ts_template_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1193,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1193,1
    - Dst: get_ts_config_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1198,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1198,1
    - Dst: get_object_address_usermapping
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1202,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1202,1
    - Dst: get_object_address_publication_schema
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1206,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1206,1
    - Dst: get_object_address_publication_rel
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1210,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1210,1
    - Dst: get_object_address_defacl
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1215,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1215,1
    - Dst: get_statistics_object_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1220,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1220,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1228,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1235,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1244,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1252,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1253,1
    - Dst: UnlockDatabaseObject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1257,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1269,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1270,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1273,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1303,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 175
    argCount: 5
    argNames:
    - objtype
    - object
    - relp
    - lockmode
    - missing_ok
    argTypes:
    - ObjectType
    - Node*
    - Relation*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1015
    functionDepth: 1
    functionLinenumber: 1015
    functionLinenumberEnd: 1309
    functionName: get_object_address
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - errcode
    - get_ts_dict_oid
    - get_ts_parser_oid
    - get_collation_oid
    - get_object_address_unqualified
    - get_ts_config_oid
    - strVal
    - get_transform_oid
    - get_ts_template_oid
    - UnlockDatabaseObject
    - LargeObjectExists
    - elog
    - linitial_node
    - Assert
    - get_object_address_publication_rel
    - LockDatabaseObject
    - get_statistics_object_oid
    - get_object_address_opf_member
    - IsSharedRelation
    - get_relation_by_qualified_name
    - errmsg
    - get_object_address_opcf
    - UnlockSharedObject
    - OidIsValid
    - oidparse
    - LookupFuncWithArgs
    - get_cast_oid
    - lsecond_node
    - get_conversion_oid
    - ereport
    - get_object_address_attribute
    - get_object_address_publication_schema
    - get_object_address_attrdef
    - get_domain_constraint_oid
    - get_language_oid
    - castNode
    - get_object_address_usermapping
    - LookupTypeNameOid
    - get_object_address_type
    - LockSharedObject
    - lsecond
    - get_object_address_relobject
    - LookupOperWithArgs
    - get_object_address_defacl
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress get_object_address(ObjectType objtype, Node *object,\n\t\t\t\t
      \  Relation *relp, LOCKMODE lockmode, bool missing_ok)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1325,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1325,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1327,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1327,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1329,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1329,1
    - Dst: get_object_address
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1332,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 6
    argNames:
    - objtype
    - rel
    - object
    - relp
    - lockmode
    - missing_ok
    argTypes:
    - ObjectType
    - RangeVar*
    - List*
    - Relation*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1318
    functionDepth: 6
    functionLinenumber: 1318
    functionLinenumberEnd: 1334
    functionName: get_object_address_rv
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_address
    - makeString
    - lcons
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress get_object_address_rv(ObjectType objtype, RangeVar *rel,
      List *object,\n\t\t\t\t\t  Relation *relp, LOCKMODE lockmode,\n\t\t\t\t\t  bool
      missing_ok)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1347,1
    - Dst: get_am_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1354,1
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1359,1
    - Dst: get_extension_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1364,1
    - Dst: get_tablespace_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1369,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1374,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1379,1
    - Dst: get_language_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1384,1
    - Dst: get_foreign_data_wrapper_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1389,1
    - Dst: get_foreign_server_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1394,1
    - Dst: get_event_trigger_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1399,1
    - Dst: ParameterAclLookup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1404,1
    - Dst: get_publication_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1409,1
    - Dst: get_subscription_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1414,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1418,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 75
    argCount: 3
    argNames:
    - objtype
    - strval
    - missing_ok
    argTypes:
    - ObjectType
    - String*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1340
    functionDepth: 3
    functionLinenumber: 1340
    functionLinenumberEnd: 1426
    functionName: get_object_address_unqualified
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - elog
    - get_role_oid
    - get_database_oid
    - get_extension_oid
    - get_foreign_server_oid
    - get_subscription_oid
    - get_language_oid
    - get_foreign_data_wrapper_oid
    - get_am_oid
    - get_event_trigger_oid
    - get_publication_oid
    - get_namespace_oid
    - strVal
    - ParameterAclLookup
    - get_tablespace_oid
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress get_object_address_unqualified(ObjectType objtype,\n\t\t\t\t\t\t\t
      \  String *strval, bool missing_ok)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: relation_openrv_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1443,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1443,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1453,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1454,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1455,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1456,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1460,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1461,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1462,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1463,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1467,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1468,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1469,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1470,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1475,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1476,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1477,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1478,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1482,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1483,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1484,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1485,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1489,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1490,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1491,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1492,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1496,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1497,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1498,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1499,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1502,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1507,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 43
    argCount: 5
    argNames:
    - objtype
    - object
    - relp
    - lockmode
    - missing_ok
    argTypes:
    - ObjectType
    - List*
    - Relation*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1431
    functionDepth: 3
    functionLinenumber: 1431
    functionLinenumberEnd: 1511
    functionName: get_relation_by_qualified_name
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - elog
    - relation_openrv_extended
    - errcode
    - ereport
    - errmsg
    - makeRangeVarFromNameList
    - RelationGetRelationName
    - RelationGetRelid
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress get_relation_by_qualified_name(ObjectType objtype, List
      *object,\n\t\t\t\t\t\t\t   Relation *relp, LOCKMODE lockmode,\n\t\t\t\t\t\t\t
      \  bool missing_ok)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1532,1
    - Dst: llast
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1532,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1535,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1537,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1538,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1539,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1542,1
    - Dst: table_openrv_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1543,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1543,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1547,1
    - Dst: get_rewrite_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1554,1
    - Dst: get_trigger_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1560,1
    - Dst: get_relation_constraint_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1566,1
    - Dst: get_relation_policy_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1573,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1578,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1582,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1585,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 4
    argNames:
    - objtype
    - object
    - relp
    - missing_ok
    argTypes:
    - ObjectType
    - List*
    - Relation*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1520
    functionDepth: 5
    functionLinenumber: 1520
    functionLinenumberEnd: 1594
    functionName: get_object_address_relobject
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - elog
    - table_openrv_extended
    - list_copy_head
    - errcode
    - get_trigger_oid
    - OidIsValid
    - get_rewrite_oid
    - ereport
    - get_relation_constraint_oid
    - llast
    - errmsg
    - makeRangeVarFromNameList
    - list_length
    - strVal
    - table_close
    - get_relation_policy_oid
    - RelationGetRelid
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress get_object_address_relobject(ObjectType objtype, List
      *object,\n\t\t\t\t\t\t\t Relation *relp, bool missing_ok)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1613,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1614,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1615,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1616,1
    - Dst: llast
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1616,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1617,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1617,1
    - Dst: relation_openrv
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1619,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1619,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1620,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1623,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1627,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1628,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1629,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1630,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1635,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 5
    argNames:
    - objtype
    - object
    - relp
    - lockmode
    - missing_ok
    argTypes:
    - ObjectType
    - List*
    - Relation*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1645
      start: 1599
    functionDepth: 5
    functionLinenumber: 1599
    functionLinenumberEnd: 1645
    functionName: get_object_address_attribute
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - list_copy_head
    - get_attnum
    - errcode
    - ereport
    - NameListToString
    - llast
    - errmsg
    - makeRangeVarFromNameList
    - list_length
    - relation_close
    - strVal
    - RelationGetRelid
    - relation_openrv
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress get_object_address_attribute(ObjectType objtype, List
      *object,\n\t\t\t\t\t\t\t Relation *relp, LOCKMODE lockmode,\n\t\t\t\t\t\t\t
      bool missing_ok)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1665,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1666,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1667,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1668,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1669,1
    - Dst: llast
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1669,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1670,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1670,1
    - Dst: relation_openrv
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1672,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1672,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1673,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1675,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1678,1
    - Dst: GetAttrDefaultOid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1681,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1682,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1685,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1686,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1687,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1688,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1693,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 5
    argNames:
    - objtype
    - object
    - relp
    - lockmode
    - missing_ok
    argTypes:
    - ObjectType
    - List*
    - Relation*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1703
      start: 1650
    functionDepth: 5
    functionLinenumber: 1650
    functionLinenumberEnd: 1703
    functionName: get_object_address_attrdef
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - GetAttrDefaultOid
    - list_copy_head
    - get_attnum
    - errcode
    - RelationGetDescr
    - OidIsValid
    - ereport
    - NameListToString
    - llast
    - errmsg
    - makeRangeVarFromNameList
    - list_length
    - relation_close
    - strVal
    - RelationGetRelid
    - relation_openrv
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress get_object_address_attrdef(ObjectType objtype, List
      *object,\n\t\t\t\t\t\t   Relation *relp, LOCKMODE lockmode,\n\t\t\t\t\t\t   bool
      missing_ok)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LookupTypeName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1718,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1719,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1722,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1723,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1724,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1725,1
    - Dst: typeTypeId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1728,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1732,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1733,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1735,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1736,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1739,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - objtype
    - typename
    - missing_ok
    argTypes:
    - ObjectType
    - TypeName*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1708
    functionDepth: 1
    functionLinenumber: 1708
    functionLinenumberEnd: 1742
    functionName: get_object_address_type
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errcode
    - HeapTupleIsValid
    - LookupTypeName
    - ereport
    - typeTypeId
    - TypeNameToString
    - ReleaseSysCache
    - errmsg
    - GETSTRUCT
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress get_object_address_type(ObjectType objtype, TypeName
      *typename, bool missing_ok)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_index_am_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1754,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1754,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1754,1
    - Dst: list_copy_tail
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1755,1
    - Dst: get_opclass_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1761,1
    - Dst: get_opfamily_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1766,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1770,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - objtype
    - object
    - missing_ok
    argTypes:
    - ObjectType
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1747
    functionDepth: 5
    functionLinenumber: 1747
    functionLinenumberEnd: 1778
    functionName: get_object_address_opcf
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - elog
    - linitial
    - list_copy_tail
    - get_opfamily_oid
    - get_index_am_oid
    - strVal
    - get_opclass_oid
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress get_object_address_opcf(ObjectType objtype, List *object,
      bool missing_ok)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1803,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1803,1
    - Dst: llast
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1803,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1803,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1804,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1804,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1804,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1804,1
    - Dst: get_object_address_opcf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1807,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1817,1
    - Dst: get_object_address_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1818,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1830,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1833,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1834,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1835,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1836,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1837,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1838,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1841,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1842,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1843,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1845,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1846,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1847,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1851,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1852,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1861,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1864,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1865,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1866,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1867,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1868,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1869,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1872,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1873,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1874,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1876,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1877,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1878,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1882,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1883,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1888,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 3
    argNames:
    - objtype
    - object
    - missing_ok
    argTypes:
    - ObjectType
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1892
      start: 1785
    functionDepth: 6
    functionLinenumber: 1785
    functionLinenumberEnd: 1892
    functionName: get_object_address_opf_member
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errcode
    - TypeNameToString
    - llast
    - strVal
    - elog
    - HeapTupleIsValid
    - linitial
    - ReleaseSysCache
    - errmsg
    - get_object_address_opcf
    - list_length
    - ObjectIdGetDatum
    - ereport
    - GETSTRUCT
    - getObjectDescription
    - Int16GetDatum
    - lfirst_node
    - list_copy_head
    - get_object_address_type
    - ObjectAddressSet
    - atoi
    - SearchSysCache4
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress get_object_address_opf_member(ObjectType objtype,\n\t\t\t\t\t\t\t
      \ List *object, bool missing_ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1817,1
    - Dst: get_object_address_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1818,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1813
    functionDepth: 2
    functionLinenumber: 1813
    functionLinenumberEnd: 1822
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 352
    functionsReached:
    - get_object_address_type
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(cell, lsecond(object))
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1907,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1910,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1910,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1911,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1911,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1914,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1918,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1919,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1920,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1923,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1924,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1925,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1929,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1930,1
    - Dst: GetForeignServerByName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1934,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1938,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1939,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1940,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1943,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1944,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1945,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1946,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1949,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1950,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1951,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1956,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1958,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1897
    functionDepth: 3
    functionLinenumber: 1897
    functionLinenumberEnd: 1961
    functionName: get_object_address_usermapping
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - GetForeignServerByName
    - strcmp
    - errcode
    - HeapTupleIsValid
    - linitial
    - CStringGetDatum
    - ereport
    - ObjectIdGetDatum
    - ReleaseSysCache
    - lsecond
    - ObjectAddressSet
    - errmsg
    - GETSTRUCT
    - strVal
    - SearchSysCache2
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress get_object_address_usermapping(List *object, bool missing_ok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1978,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1980,1
    - Dst: relation_openrv_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1981,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1981,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1987,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1987,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1990,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1993,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1999,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2000,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2000,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2001,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2002,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2005,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2006,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2007,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2008,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2009,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - object
    - relp
    - missing_ok
    argTypes:
    - List*
    - Relation*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 1968
    functionDepth: 3
    functionLinenumber: 1968
    functionLinenumberEnd: 2015
    functionName: get_object_address_publication_rel
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - relation_openrv_extended
    - errcode
    - GetSysCacheOid2
    - linitial
    - ObjectIdGetDatum
    - ereport
    - lsecond
    - ObjectAddressSet
    - makeRangeVarFromNameList
    - errmsg
    - RelationGetRelationName
    - OidIsValid
    - relation_close
    - strVal
    - GetPublicationByName
    - RelationGetRelid
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress get_object_address_publication_rel(List *object,\n\t\t\t\t\t\t\t\t
      \  Relation *relp, bool missing_ok)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2030,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2033,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2033,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2034,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2034,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2036,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2037,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2041,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2047,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2049,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2050,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2051,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2052,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2053,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2054,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2021
    functionDepth: 1
    functionLinenumber: 2021
    functionLinenumberEnd: 2058
    functionName: get_object_address_publication_schema
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errcode
    - linitial
    - ObjectIdGetDatum
    - ereport
    - lsecond
    - ObjectAddressSet
    - errmsg
    - get_namespace_oid
    - OidIsValid
    - GetSysCacheOid2
    - strVal
    - GetPublicationByName
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress get_object_address_publication_schema(List *object, bool
      missing_ok)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2075,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2081,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2081,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2082,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2083,1
    - Dst: lthird
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2083,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2091,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2091,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2113,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2115,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2116,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2129,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2130,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2131,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2133,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2134,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2142,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2150,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2151,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2152,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2153,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2154,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2157,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2166,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2167,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2173,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2063
    functionDepth: 2
    functionLinenumber: 2063
    functionLinenumberEnd: 2177
    functionName: get_object_address_defacl
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errcode
    - lthird
    - errhint
    - get_namespace_oid
    - strVal
    - SearchSysCache1
    - HeapTupleIsValid
    - linitial
    - ReleaseSysCache
    - errmsg
    - CharGetDatum
    - list_length
    - ObjectIdGetDatum
    - CStringGetDatum
    - ereport
    - GETSTRUCT
    - SearchSysCache3
    - lsecond
    - ObjectAddressSet
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress get_object_address_defacl(List *object, bool missing_ok)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2192,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2197,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2199,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2200,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2200,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arr
    argTypes:
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2204
      start: 2183
    functionDepth: 6
    functionLinenumber: 2183
    functionLinenumberEnd: 2204
    functionName: textarray_to_strvaluelist
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - errcode
    - makeString
    - lappend
    - ereport
    - errmsg
    - TextDatumGetCString
    linkageType: ''
    returnType: List
    signature: 'List *

      textarray_to_strvaluelist(ArrayType *arr)'
  - BBCount: 86
    BranchProfiles: []
    Callsites:
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2212,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2212,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2213,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2214,1
    - Dst: read_objtype_from_string
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2229,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2231,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2232,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2233,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2250,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2252,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2254,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2256,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2265,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2267,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2269,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2271,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2272,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2273,1
    - Dst: makeFloat
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2274,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2274,1
    - Dst: textarray_to_strvaluelist
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2280,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2281,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2282,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2303,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2309,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2310,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2311,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2312,1
    - Dst: typeStringToTypeName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2313,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2313,1
    - Dst: textarray_to_strvaluelist
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2320,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2332,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2333,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2334,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2343,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2344,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2345,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2349,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2350,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2351,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2352,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2356,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2357,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2358,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2359,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2364,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2365,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2366,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2416,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2417,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2418,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2419,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2420,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2429,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2429,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2432,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2432,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2436,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2436,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2436,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2439,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2439,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2443,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2451,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2465,1
    - Dst: get_object_address
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2467,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2472,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2474,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2475,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2477,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2478,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2479,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2484,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2486,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2486,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 160
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2487
      start: 2209
    functionDepth: 7
    functionLinenumber: 2209
    functionLinenumberEnd: 2487
    functionName: pg_get_object_address
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - errcode
    - typeStringToTypeName
    - heap_form_tuple
    - PG_GETARG_ARRAYTYPE_P
    - textarray_to_strvaluelist
    - elog
    - read_objtype_from_string
    - Int32GetDatum
    - linitial
    - PG_RETURN_DATUM
    - errmsg
    - list_length
    - relation_close
    - TextDatumGetCString
    - ObjectIdGetDatum
    - get_call_result_type
    - lappend
    - ereport
    - deconstruct_array_builtin
    - get_object_address
    - makeNode
    - HeapTupleGetDatum
    - list_make2
    - makeFloat
    - lcons
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_object_address(PG_FUNCTION_ARGS)
  - BBCount: 69
    BranchProfiles: []
    Callsites:
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2510,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2510,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2511,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2512,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2517,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2518,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2525,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2526,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2527,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2528,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2531,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2533,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2539,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2540,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2548,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2549,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2550,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2550,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2562,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2563,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2564,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2573,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2574,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2575,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2575,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2579,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2580,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2581,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2582,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2588,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2588,1
    - Dst: lsecond_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2589,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2589,1
    - Dst: typenameTypeId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2590,1
    - Dst: typenameTypeId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2591,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2593,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2594,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2595,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2596,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2597,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2598,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2599,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2604,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2604,1
    - Dst: typenameTypeId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2605,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2607,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2608,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2619,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2621,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2622,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2623,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2624,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2625,1
    - Dst: has_createrole_privilege
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2630,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2631,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2633,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2634,1
    - Dst: is_admin_of_role
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2636,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2637,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2638,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2639,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2640,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2642,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2651,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2652,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2653,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2654,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2664,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 106
    argCount: 5
    argNames:
    - roleid
    - objtype
    - address
    - object
    - relation
    argTypes:
    - Oid
    - ObjectType
    - ObjectAddress
    - Node*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2667
      start: 2492
    functionDepth: 1
    functionLinenumber: 2492
    functionLinenumberEnd: 2667
    functionName: check_object_ownership
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - has_createrole_privilege
    - errcode
    - aclcheck_error_type
    - GetUserNameFromId
    - RelationGetRelationName
    - strVal
    - SearchSysCache1
    - elog
    - superuser_arg
    - linitial_node
    - object_ownercheck
    - HeapTupleIsValid
    - is_admin_of_role
    - typenameTypeId
    - ReleaseSysCache
    - errmsg
    - ObjectIdGetDatum
    - lsecond_node
    - ereport
    - NameListToString
    - GETSTRUCT
    - aclcheck_error
    - format_type_be
    - castNode
    - errdetail
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void check_object_ownership(Oid roleid, ObjectType objtype, ObjectAddress
      address,\n\t\t\t\t\t   Node *object, Relation relation)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2684,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2690,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2693,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2693,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2694,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2695,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2697,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2697,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2700,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - address
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2703
      start: 2675
    functionDepth: 1
    functionLinenumber: 2675
    functionLinenumberEnd: 2703
    functionName: get_object_namespace
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - get_object_property_data
    - Assert
    - HeapTupleIsValid
    - DatumGetObjectId
    - ReleaseSysCache
    - SysCacheGetAttrNotNull
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_object_namespace(const ObjectAddress *address)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2716,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2718,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2721,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2722,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - objtype
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2726
      start: 2711
    functionDepth: 1
    functionLinenumber: 2711
    functionLinenumberEnd: 2726
    functionName: read_objtype_from_string
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - strcmp
    - errcode
    - ereport
    - errmsg
    - lengthof
    linkageType: ''
    returnType: int
    signature: int read_objtype_from_string(const char *objtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2734,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2737
      start: 2731
    functionDepth: 1
    functionLinenumber: 2731
    functionLinenumberEnd: 2737
    functionName: get_object_class_descr
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: char
    signature: 'char *

      get_object_class_descr(Oid class_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2739
    functionDepth: 1
    functionLinenumber: 2739
    functionLinenumberEnd: 2745
    functionName: get_object_oid_index
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: Oid
    signature: Oid get_object_oid_index(Oid class_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2753
      start: 2747
    functionDepth: 1
    functionLinenumber: 2747
    functionLinenumberEnd: 2753
    functionName: get_object_catcache_oid
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: SysCacheIdentifier
    signature: SysCacheIdentifier get_object_catcache_oid(Oid class_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2761
      start: 2755
    functionDepth: 1
    functionLinenumber: 2755
    functionLinenumberEnd: 2761
    functionName: get_object_catcache_name
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: SysCacheIdentifier
    signature: SysCacheIdentifier get_object_catcache_name(Oid class_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2769
      start: 2763
    functionDepth: 1
    functionLinenumber: 2763
    functionLinenumberEnd: 2769
    functionName: get_object_attnum_oid
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber get_object_attnum_oid(Oid class_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2777
      start: 2771
    functionDepth: 1
    functionLinenumber: 2771
    functionLinenumberEnd: 2777
    functionName: get_object_attnum_name
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber get_object_attnum_name(Oid class_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2785
      start: 2779
    functionDepth: 1
    functionLinenumber: 2779
    functionLinenumberEnd: 2785
    functionName: get_object_attnum_namespace
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber get_object_attnum_namespace(Oid class_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2793
      start: 2787
    functionDepth: 1
    functionLinenumber: 2787
    functionLinenumberEnd: 2793
    functionName: get_object_attnum_owner
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber get_object_attnum_owner(Oid class_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2801
      start: 2795
    functionDepth: 1
    functionLinenumber: 2795
    functionLinenumberEnd: 2801
    functionName: get_object_attnum_acl
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber get_object_attnum_acl(Oid class_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2813,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2822,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - class_id
    - object_id
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2826
      start: 2810
    functionDepth: 1
    functionLinenumber: 2810
    functionLinenumberEnd: 2826
    functionName: get_object_type
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - get_rel_relkind
    - get_relkind_objtype
    - get_object_property_data
    linkageType: ''
    returnType: ObjectType
    signature: ObjectType get_object_type(Oid class_id, Oid object_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2834
      start: 2828
    functionDepth: 1
    functionLinenumber: 2828
    functionLinenumberEnd: 2834
    functionName: get_object_namensp_unique
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: bool
    signature: bool get_object_namensp_unique(Oid class_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2845,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2852
      start: 2840
    functionDepth: 1
    functionLinenumber: 2840
    functionLinenumberEnd: 2852
    functionName: is_objectclass_supported
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - lengthof
    linkageType: ''
    returnType: bool
    signature: bool is_objectclass_supported(Oid class_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2870,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2879,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2880,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2883
      start: 2857
    functionDepth: 1
    functionLinenumber: 2857
    functionLinenumberEnd: 2883
    functionName: get_object_property_data
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 12
    functionsReached:
    - errmsg_internal
    - ereport
    - lengthof
    linkageType: ''
    returnType: ObjectPropertyType
    signature: 'ObjectPropertyType *

      get_object_property_data(Oid class_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_catalog_object_by_oid_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - catalog
    - oidcol
    - objectId
    argTypes:
    - Relation
    - AttrNumber
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2897
      start: 2892
    functionDepth: 1
    functionLinenumber: 2892
    functionLinenumberEnd: 2897
    functionName: get_catalog_object_by_oid
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_catalog_object_by_oid_extended
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple get_catalog_object_by_oid(Relation catalog, AttrNumber oidcol,
      Oid objectId)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2912,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2913,1
    - Dst: SearchSysCacheLockedCopy1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2918,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2919,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2921,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2922,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2923,1
    - Dst: get_object_oid_index
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2928,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2932,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2932,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2934,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2937,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2939,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2941,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2942,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2944,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2949,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2951,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2953,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - catalog
    - oidcol
    - objectId
    - locktup
    argTypes:
    - Relation
    - AttrNumber
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2957
      start: 2905
    functionDepth: 4
    functionLinenumber: 2905
    functionLinenumberEnd: 2957
    functionName: get_catalog_object_by_oid_extended
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - get_object_oid_index
    - ScanKeyInit
    - systable_endscan
    - LockTuple
    - systable_beginscan
    - SearchSysCacheLockedCopy1
    - HeapTupleIsValid
    - Assert
    - OidIsValid
    - SearchSysCacheCopy1
    - heap_copytuple
    - get_object_catcache_oid
    - ObjectIdGetDatum
    - systable_getnext
    - RelationGetRelid
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple get_catalog_object_by_oid_extended(Relation catalog,\n\t\t\t\t\t\t\t\t
      \  AttrNumber oidcol,\n\t\t\t\t\t\t\t\t   Oid objectId,\n\t\t\t\t\t\t\t\t   bool
      locktup)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2973,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2974,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2975,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2978,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2983,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2984,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2987,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2991,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2996,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2997,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2999,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3004,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - object
    - missing_ok
    - pubname
    - nspname
    argTypes:
    - ObjectAddress*
    - bool
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3006
      start: 2966
    functionDepth: 1
    functionLinenumber: 2966
    functionLinenumberEnd: 3006
    functionName: getPublicationSchemaInfo
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - get_namespace_name
    - HeapTupleIsValid
    - pfree
    - get_publication_name
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: "bool getPublicationSchemaInfo(const ObjectAddress *object, bool missing_ok,\n\t\t\t\t\t\t
      char **pubname, char **nspname)"
  - BBCount: 154
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3019,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3025,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3030,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3037,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3038,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3040,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3040,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3042,1
    - Dst: format_procedure_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3049,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3055,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3055,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3062,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3068,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3068,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3080,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3082,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3085,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3087,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3090,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3092,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3095,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3098,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3099,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3103,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3105,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3105,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3106,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3107,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3109,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3110,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3120,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3121,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3122,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3125,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3130,1
    - Dst: CollationIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3133,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3136,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3138,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3138,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3139,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3140,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3141,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3150,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3151,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3152,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3155,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3160,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3162,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3166,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3167,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3169,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3169,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3170,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3171,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3175,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3175,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3176,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3179,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3189,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3190,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3191,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3194,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3199,1
    - Dst: ConversionIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3202,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3205,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3207,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3207,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3208,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3209,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3210,1
    - Dst: GetAttrDefaultColumnAddress
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3218,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3220,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3223,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3229,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3229,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3230,1
    - Dst: get_language_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3236,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3240,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3240,1
    - Dst: get_language_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3241,1
    - Dst: LargeObjectExists
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3246,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3248,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3248,1
    - Dst: format_operator_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3255,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3261,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3261,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3273,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3274,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3275,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3278,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3283,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3285,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3286,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3287,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3288,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3290,1
    - Dst: OpclassIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3293,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3296,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3298,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3298,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3299,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3300,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3301,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3303,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3304,1
    - Dst: getOpFamilyDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3309,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3316,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3317,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3318,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3321,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3326,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3326,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3327,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3327,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3328,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3341,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3344,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3347,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3349,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3352,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3354,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3357,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3360,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3361,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3365,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3367,1
    - Dst: getOpFamilyDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3368,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3381,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3381,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3383,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3385,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3388,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3390,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3392,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3393,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3406,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3409,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3412,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3414,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3417,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3419,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3422,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3425,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3426,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3430,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3432,1
    - Dst: getOpFamilyDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3433,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3446,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3446,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3448,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3450,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3453,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3455,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3457,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3458,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3471,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3473,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3476,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3478,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3481,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3483,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3486,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3489,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3490,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3494,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3496,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3497,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3500,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3500,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3501,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3502,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3503,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3504,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3517,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3519,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3522,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3524,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3527,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3529,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3532,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3535,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3536,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3540,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3542,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3543,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3546,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3546,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3547,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3548,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3549,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3550,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3558,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3562,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3566,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3566,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3576,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3577,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3578,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3581,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3586,1
    - Dst: StatisticsObjIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3589,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3592,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3594,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3594,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3595,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3596,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3598,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3608,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3609,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3610,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3613,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3617,1
    - Dst: TSParserIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3620,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3623,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3625,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3625,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3626,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3627,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3628,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3638,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3639,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3640,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3643,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3648,1
    - Dst: TSDictionaryIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3651,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3654,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3656,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3656,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3657,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3658,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3659,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3669,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3670,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3671,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3674,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3679,1
    - Dst: TSTemplateIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3682,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3685,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3687,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3687,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3688,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3689,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3690,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3700,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3701,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3702,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3705,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3710,1
    - Dst: TSConfigIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3713,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3716,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3718,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3718,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3719,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3720,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3721,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3727,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3731,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3731,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3743,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3745,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3748,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3750,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3753,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3755,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3758,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3761,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3762,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3766,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3768,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3768,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3769,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3770,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3772,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3773,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3781,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3785,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3789,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3789,1
    - Dst: get_tablespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3797,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3801,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3805,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3805,1
    - Dst: GetForeignDataWrapperExtended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3813,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3816,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3816,1
    - Dst: GetForeignServerExtended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3824,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3826,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3826,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3838,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3839,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3840,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3843,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3848,1
    - Dst: GetForeignServer
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3850,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3852,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3854,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3855,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3859,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3859,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3874,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3876,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3879,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3881,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3884,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3886,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3889,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3892,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3893,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3897,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3899,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3901,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3902,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3910,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3911,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3914,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3915,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3920,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3921,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3924,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3925,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3930,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3931,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3934,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3935,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3940,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3941,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3944,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3945,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3949,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3950,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3955,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3956,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3957,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3963,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3964,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3967,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3968,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3973,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3974,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3982,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3986,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3990,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3990,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3998,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3999,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4000,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4003,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4007,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4007,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4008,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4008,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4009,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4019,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4020,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4021,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4024,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4028,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4030,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4031,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4031,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4032,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4045,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4047,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4050,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4052,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4055,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4057,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4060,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4063,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4064,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4068,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4070,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4071,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4074,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4074,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4075,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4076,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4077,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4078,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4088,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4088,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4089,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4092,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4097,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4099,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4100,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4103,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4103,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4103,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4105,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4105,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4105,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4107,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4107,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4109,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4110,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4121,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4122,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4125,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4128,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4130,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4134,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4136,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4137,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4137,1
    - Dst: get_propgraph_label_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4138,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4139,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4141,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4151,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4151,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4152,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4155,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4159,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4161,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4162,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4164,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4164,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4164,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4166,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4167,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4178,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4179,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4182,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4185,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4187,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4191,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4193,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4195,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4195,1
    - Dst: get_propgraph_property_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4196,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4197,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4199,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4209,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4209,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4210,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4213,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4217,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4219,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4220,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4222,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4222,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4222,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4224,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4225,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4231,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4235,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4235,1
    - Dst: getPublicationSchemaInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4244,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4248,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4248,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4250,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4251,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4262,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4263,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4264,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4267,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4272,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4273,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4275,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4276,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4279,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4279,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4281,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4282,1
    - Dst: get_subscription_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4288,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4292,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4292,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4301,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4302,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4303,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4306,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4311,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4313,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4313,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4314,1
    - Dst: get_language_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4315,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4317,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4322,1
    CyclomaticComplexity: 193
    EdgeCount: 193
    ICount: 636
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - ObjectAddress*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4330
      start: 3014
    functionDepth: 4
    functionLinenumber: 3014
    functionLinenumberEnd: 4330
    functionName: getObjectDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 4
    functionsReached:
    - GetAttrDefaultColumnAddress
    - format_operator
    - get_language_name
    - GetUserNameFromId
    - format_procedure
    - get_propgraph_property_name
    - get_attname
    - NameStr
    - table_close
    - LargeObjectExists
    - elog
    - SearchSysCache1
    - format_procedure_extended
    - systable_endscan
    - TSConfigIsVisible
    - _
    - getOpFamilyDescription
    - pfree
    - HeapTupleIsValid
    - Assert
    - getRelationDescription
    - get_catalog_object_by_oid
    - get_propgraph_label_name
    - table_open
    - ReleaseSysCache
    - get_database_name
    - OpclassIsVisible
    - GetForeignServerExtended
    - OidIsValid
    - ObjectIdGetDatum
    - TextDatumGetCString
    - CollationIsVisible
    - GetForeignServer
    - getPublicationSchemaInfo
    - systable_beginscan
    - quote_qualified_identifier
    - initStringInfo
    - GetForeignDataWrapperExtended
    - format_operator_extended
    - GETSTRUCT
    - getObjectDescription
    - get_tablespace_name
    - SysCacheGetAttrNotNull
    - ConversionIsVisible
    - get_namespace_name
    - ScanKeyInit
    - format_type_be
    - get_extension_name
    - appendStringInfo
    - StatisticsObjIsVisible
    - get_publication_name
    - get_subscription_name
    - format_type_extended
    - TSParserIsVisible
    - ObjectAddressSet
    - TSTemplateIsVisible
    - systable_getnext
    - TSDictionaryIsVisible
    linkageType: ''
    returnType: char
    signature: 'char *

      getObjectDescription(const ObjectAddress *object, bool missing_ok)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - classid
    - objid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4345
      start: 4335
    functionDepth: 5
    functionLinenumber: 4335
    functionLinenumberEnd: 4345
    functionName: getObjectDescriptionOids
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - getObjectDescription
    linkageType: ''
    returnType: char
    signature: 'char *

      getObjectDescriptionOids(Oid classid, Oid objid)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4360,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4361,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4362,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4365,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4368,1
    - Dst: RelationIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4371,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4374,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4376,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4376,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4382,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4382,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4387,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4387,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4391,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4391,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4395,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4395,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4399,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4399,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4403,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4403,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4407,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4407,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4411,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4411,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4415,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4415,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4420,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4420,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4425,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 3
    argNames:
    - buffer
    - relid
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4426
      start: 4352
    functionDepth: 2
    functionLinenumber: 4352
    functionLinenumberEnd: 4426
    functionName: getRelationDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - get_namespace_name
    - _
    - HeapTupleIsValid
    - appendStringInfo
    - quote_qualified_identifier
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    - RelationIsVisible
    linkageType: ''
    returnType: void
    signature: void getRelationDescription(StringInfo buffer, Oid relid, bool missing_ok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4440,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4440,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4441,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4444,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4447,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4449,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4449,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4450,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4451,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4453,1
    - Dst: OpfamilyIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4456,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4459,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4461,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4461,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4462,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4463,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4464,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4466,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4467,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - buffer
    - opfid
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4468
      start: 4431
    functionDepth: 2
    functionLinenumber: 4431
    functionLinenumberEnd: 4468
    functionName: getOpFamilyDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - get_namespace_name
    - _
    - HeapTupleIsValid
    - appendStringInfo
    - quote_qualified_identifier
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    - OpfamilyIsVisible
    linkageType: ''
    returnType: void
    signature: void getOpFamilyDescription(StringInfo buffer, Oid opfid, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4476,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4477,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4478,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4483,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4483,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4484,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4490,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4493,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4495,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4495,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4496
      start: 4473
    functionDepth: 5
    functionLinenumber: 4473
    functionLinenumberEnd: 4496
    functionName: pg_describe_object
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - getObjectDescription
    - PG_RETURN_NULL
    - PG_GETARG_OID
    - OidIsValid
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum pg_describe_object(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4504,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4505,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4506,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4520,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4521,1
    - Dst: is_objectclass_supported
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4523,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4526,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4528,1
    - Dst: get_object_attnum_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4529,1
    - Dst: get_object_attnum_namespace
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4537,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4540,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4540,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4541,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4543,1
    - Dst: get_object_namensp_unique
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4551,1
    - Dst: get_object_attnum_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4553,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4558,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4559,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4561,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4563,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4563,1
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4563,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4568,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4572,1
    - Dst: getObjectTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4572,1
    - Dst: getObjectIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4579,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4582,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4584,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4584,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4586,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4595,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4604,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4610,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4612,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4612,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4613
      start: 4501
    functionDepth: 6
    functionLinenumber: 4501
    functionLinenumberEnd: 4613
    functionName: pg_identify_object
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - NameStr
    - getObjectIdentity
    - table_close
    - elog
    - get_catalog_object_by_oid
    - get_object_attnum_oid
    - DatumGetObjectId
    - RelationGetDescr
    - get_object_attnum_name
    - PG_RETURN_DATUM
    - table_open
    - OidIsValid
    - get_object_attnum_namespace
    - get_call_result_type
    - heap_getattr
    - get_object_namensp_unique
    - getObjectTypeDescription
    - quote_identifier
    - PG_GETARG_INT32
    - get_namespace_name
    - is_objectclass_supported
    - HeapTupleGetDatum
    - PG_GETARG_OID
    - CStringGetTextDatum
    - DatumGetName
    linkageType: ''
    returnType: Datum
    signature: Datum pg_identify_object(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4621,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4622,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4623,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4637,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4638,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4641,1
    - Dst: getObjectTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4641,1
    - Dst: getObjectIdentityParts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4645,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4653,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4657,1
    - Dst: strlist_to_textarray
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4657,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4659,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4659,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4664,1
    - Dst: strlist_to_textarray
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4664,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4666,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4666,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4670,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4672,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4672,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4673
      start: 4618
    functionDepth: 6
    functionLinenumber: 4618
    functionLinenumberEnd: 4673
    functionName: pg_identify_object_as_address
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - elog
    - strlist_to_textarray
    - construct_empty_array
    - pfree
    - heap_form_tuple
    - PG_RETURN_DATUM
    - get_call_result_type
    - HeapTupleGetDatum
    - getObjectIdentityParts
    - PG_GETARG_OID
    - CStringGetTextDatum
    - PointerGetDatum
    - getObjectTypeDescription
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum pg_identify_object_as_address(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4682,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4683,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4684,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4692,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4692,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4693,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4698,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4702,1
    - Dst: SearchSysCacheCopyAttNum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4712,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4714,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4715,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4717,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4724,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4726,1
    - Dst: get_object_attnum_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4726,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4728,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4730,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4731,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4734,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4734,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4735,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4739,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4741,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4742
      start: 4679
    functionDepth: 4
    functionLinenumber: 4679
    functionLinenumberEnd: 4742
    functionName: pg_get_acl
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_attnum_acl
    - heap_getattr
    - SearchSysCacheCopyAttNum
    - get_catalog_object_by_oid
    - get_object_attnum_oid
    - HeapTupleIsValid
    - RelationGetDescr
    - PG_RETURN_DATUM
    - PG_RETURN_NULL
    - table_open
    - PG_GETARG_OID
    - OidIsValid
    - table_close
    - PG_GETARG_INT32
    - SysCacheGetAttr
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_acl(PG_FUNCTION_ARGS)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4755,1
    - Dst: getRelationTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4760,1
    - Dst: getProcedureTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4766,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4771,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4775,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4779,1
    - Dst: getConstraintTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4783,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4788,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4792,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4796,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4800,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4804,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4808,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4812,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4816,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4820,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4824,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4828,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4832,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4836,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4840,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4844,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4848,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4852,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4856,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4860,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4864,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4868,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4872,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4876,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4880,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4884,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4888,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4892,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4896,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4900,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4904,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4908,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4912,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4916,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4920,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4924,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4928,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4932,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4936,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4940,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4944,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4948,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4952,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 146
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - ObjectAddress*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4955
      start: 4750
    functionDepth: 3
    functionLinenumber: 4750
    functionLinenumberEnd: 4955
    functionName: getObjectTypeDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 2
    functionsReached:
    - elog
    - getProcedureTypeDescription
    - Assert
    - appendStringInfoString
    - initStringInfo
    - getConstraintTypeDescription
    - getRelationTypeDescription
    linkageType: ''
    returnType: char
    signature: 'char *

      getObjectTypeDescription(const ObjectAddress *object, bool missing_ok)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4967,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4968,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4969,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4972,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4975,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4978,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4984,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4988,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4991,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4994,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4997,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5000,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5003,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5006,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5009,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5013,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5018,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5020,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 4
    argNames:
    - buffer
    - relid
    - objectSubId
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - int32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5021
      start: 4960
    functionDepth: 2
    functionLinenumber: 4960
    functionLinenumberEnd: 5021
    functionName: getRelationTypeDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - appendStringInfoString
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void getRelationTypeDescription(StringInfo buffer, Oid relid, int32
      objectSubId,\n\t\t\t\t\t\t   bool missing_ok)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5033,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5034,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5036,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5039,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5041,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5044,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5048,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5050,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5051,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5052,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5053,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5055,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5057,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - buffer
    - constroid
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5058
      start: 5026
    functionDepth: 3
    functionLinenumber: 5026
    functionLinenumberEnd: 5058
    functionName: getConstraintTypeDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - elog
    - get_catalog_object_by_oid
    - HeapTupleIsValid
    - appendStringInfoString
    - table_open
    - GETSTRUCT
    - OidIsValid
    - table_close
    linkageType: ''
    returnType: void
    signature: void getConstraintTypeDescription(StringInfo buffer, Oid constroid,
      bool missing_ok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5070,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5071,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5072,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5075,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5078,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5081,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5084,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5086,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5088,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5090,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - buffer
    - procid
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5091
      start: 5063
    functionDepth: 2
    functionLinenumber: 5063
    functionLinenumberEnd: 5091
    functionName: getProcedureTypeDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - appendStringInfoString
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void getProcedureTypeDescription(StringInfo buffer, Oid procid,\n\t\t\t\t\t\t\tbool
      missing_ok)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getObjectIdentityParts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - ObjectAddress*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5104
      start: 5100
    functionDepth: 1
    functionLinenumber: 5100
    functionLinenumberEnd: 5104
    functionName: getObjectIdentity
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - getObjectIdentityParts
    linkageType: ''
    returnType: char
    signature: 'char *

      getObjectIdentity(const ObjectAddress *object, bool missing_ok)'
  - BBCount: 190
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5122,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5130,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5149,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5157,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5164,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5165,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5167,1
    - Dst: format_procedure_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5175,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5181,1
    - Dst: format_procedure_parts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5183,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5193,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5198,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5200,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5210,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5212,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5215,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5218,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5221,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5225,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5227,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5228,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5229,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5233,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5233,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5234,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5234,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5237,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5247,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5248,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5249,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5252,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5256,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5257,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5258,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5259,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5260,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5262,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5263,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5263,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5264,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5273,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5274,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5275,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5278,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5282,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5284,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5286,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5287,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5287,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5288,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5291,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5291,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5297,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5297,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5302,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5303,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5303,1
    - Dst: getObjectIdentityParts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5304,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5308,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5308,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5308,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5311,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5321,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5322,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5323,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5326,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5330,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5331,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5332,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5333,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5334,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5336,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5337,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5337,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5338,1
    - Dst: GetAttrDefaultColumnAddress
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5346,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5348,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5351,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5356,1
    - Dst: getObjectIdentityParts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5357,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5368,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5369,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5370,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5373,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5377,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5378,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5379,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5379,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5381,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5381,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5381,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5382,1
    - Dst: LargeObjectExists
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5387,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5389,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5392,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5392,1
    - Dst: format_operator_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5398,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5404,1
    - Dst: format_operator_parts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5406,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5418,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5419,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5420,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5423,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5427,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5428,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5430,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5431,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5432,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5433,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5435,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5437,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5438,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5439,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5440,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5440,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5442,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5442,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5442,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5444,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5444,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5446,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5447,1
    - Dst: getOpFamilyIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5452,1
    - Dst: get_am_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5460,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5464,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5468,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5468,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5470,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5485,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5488,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5491,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5493,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5496,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5498,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5501,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5504,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5505,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5509,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5511,1
    - Dst: getOpFamilyIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5512,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5515,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5516,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5520,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5521,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5522,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5525,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5529,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5531,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5532,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5547,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5550,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5553,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5555,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5558,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5560,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5563,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5566,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5567,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5571,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5573,1
    - Dst: getOpFamilyIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5574,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5577,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5578,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5582,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5583,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5584,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5587,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5591,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5593,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5594,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5604,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5606,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5609,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5612,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5615,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5619,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5621,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5622,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5622,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5623,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5625,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5625,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5625,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5627,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5637,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5639,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5642,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5645,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5648,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5652,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5654,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5655,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5655,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5656,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5658,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5658,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5658,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5660,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5668,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5672,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5676,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5677,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5679,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5689,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5690,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5691,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5694,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5698,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5699,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5700,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5701,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5702,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5704,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5705,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5705,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5706,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5716,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5717,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5718,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5721,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5725,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5726,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5727,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5728,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5729,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5731,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5732,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5732,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5733,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5743,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5744,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5745,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5748,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5752,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5753,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5754,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5755,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5756,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5758,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5759,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5759,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5760,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5770,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5771,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5772,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5775,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5779,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5780,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5781,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5782,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5783,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5785,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5786,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5786,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5787,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5797,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5798,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5799,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5802,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5806,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5807,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5808,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5809,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5810,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5812,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5813,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5813,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5814,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5822,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5826,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5827,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5828,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5840,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5843,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5846,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5848,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5851,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5853,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5856,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5859,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5860,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5864,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5866,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5867,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5868,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5870,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5871,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5879,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5883,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5888,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5889,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5890,1
    - Dst: get_tablespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5898,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5902,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5907,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5908,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5909,1
    - Dst: GetForeignDataWrapperExtended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5917,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5921,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5921,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5923,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5923,1
    - Dst: GetForeignServerExtended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5932,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5936,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5937,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5939,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5939,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5952,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5953,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5954,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5957,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5961,1
    - Dst: GetForeignServer
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5963,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5965,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5967,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5968,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5974,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5974,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5975,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5975,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5978,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5979,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5994,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5996,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5999,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6001,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6004,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6006,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6009,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6012,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6013,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6017,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6019,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6020,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6022,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6024,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6026,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6027,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6029,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6037,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6041,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6045,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6049,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6053,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6057,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6064,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6066,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6067,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6067,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6070,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6071,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6079,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6083,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6087,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6087,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6089,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6099,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6100,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6101,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6104,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6108,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6109,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6109,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6110,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6110,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6112,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6113,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6123,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6124,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6125,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6128,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6132,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6134,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6135,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6137,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6138,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6148,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6150,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6153,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6156,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6159,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6163,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6165,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6166,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6166,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6167,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6169,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6169,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6169,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6171,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6180,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6180,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6181,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6184,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6187,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6188,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6188,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6188,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6190,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6192,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6192,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6192,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6194,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6203,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6203,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6204,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6207,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6211,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6212,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6212,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6212,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6213,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6215,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6215,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6215,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6216,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6225,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6225,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6226,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6229,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6233,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6234,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6234,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6234,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6235,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6237,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6237,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6237,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6238,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6250,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6251,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6254,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6257,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6260,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6264,1
    - Dst: get_propgraph_label_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6266,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6267,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6267,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6268,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6269,1
    - Dst: getObjectIdentityParts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6269,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6273,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6275,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6287,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6289,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6292,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6295,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6298,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6302,1
    - Dst: get_propgraph_property_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6304,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6305,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6305,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6306,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6307,1
    - Dst: getObjectIdentityParts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6307,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6311,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6313,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6321,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6324,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6325,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6327,1
    - Dst: getPublicationSchemaInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6337,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6340,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6344,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6346,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6349,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6351,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6362,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6363,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6364,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6367,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6372,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6373,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6375,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6376,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6379,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6381,1
    - Dst: get_subscription_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6389,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6392,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6393,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6395,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6408,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6410,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6414,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6417,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6420,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6424,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6426,1
    - Dst: get_language_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6427,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6429,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6434,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6435,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6435,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6438,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6443,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6462,1
    CyclomaticComplexity: 238
    EdgeCount: 238
    ICount: 724
    argCount: 4
    argNames:
    - object
    - objname
    - objargs
    - missing_ok
    argTypes:
    - ObjectAddress*
    - List**
    - List**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6469
      start: 5115
    functionDepth: 6
    functionLinenumber: 5115
    functionLinenumberEnd: 6469
    functionName: getObjectIdentityParts
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 3
    functionsReached:
    - GetAttrDefaultColumnAddress
    - pstrdup
    - get_language_name
    - GetUserNameFromId
    - get_propgraph_property_name
    - get_attname
    - NameStr
    - format_type_be_qualified
    - table_close
    - list_make3
    - format_procedure_parts
    - LargeObjectExists
    - elog
    - SearchSysCache1
    - format_procedure_extended
    - systable_endscan
    - get_catalog_object_by_oid
    - get_namespace_name_or_temp
    - Assert
    - HeapTupleIsValid
    - appendStringInfoString
    - pfree
    - get_propgraph_label_name
    - table_open
    - ReleaseSysCache
    - getObjectIdentityParts
    - get_database_name
    - GetForeignServerExtended
    - OidIsValid
    - getRelationIdentity
    - ObjectIdGetDatum
    - getOpFamilyIdentity
    - TextDatumGetCString
    - GetForeignServer
    - getPublicationSchemaInfo
    - systable_beginscan
    - quote_qualified_identifier
    - initStringInfo
    - lappend
    - psprintf
    - format_operator_extended
    - GETSTRUCT
    - list_make1
    - get_tablespace_name
    - quote_identifier
    - SysCacheGetAttrNotNull
    - ScanKeyInit
    - get_extension_name
    - appendStringInfo
    - get_publication_name
    - get_subscription_name
    - format_type_extended
    - list_make2
    - get_am_name
    - ObjectAddressSet
    - format_operator_parts
    - systable_getnext
    - GetForeignDataWrapperExtended
    linkageType: ''
    returnType: char
    signature: "char *\ngetObjectIdentityParts(const ObjectAddress *object,\n\t\t\t\t\t
      \  List **objname, List **objargs,\n\t\t\t\t\t   bool missing_ok)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6481,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6481,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6482,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6485,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6488,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6490,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6490,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6491,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6492,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6494,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6496,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6497,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6498,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6499,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6500,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6503,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6503,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6503,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6504,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6505,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6505,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6507,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6508,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - buffer
    - opfid
    - object
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - List**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6509
      start: 6471
    functionDepth: 2
    functionLinenumber: 6471
    functionLinenumberEnd: 6509
    functionName: getOpFamilyIdentity
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - get_namespace_name_or_temp
    - HeapTupleIsValid
    - appendStringInfo
    - quote_qualified_identifier
    - pstrdup
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    - list_make3
    linkageType: ''
    returnType: void
    signature: "void getOpFamilyIdentity(StringInfo buffer, Oid opfid, List **object,\n\t\t\t\t\tbool
      missing_ok)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6523,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6524,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6525,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6528,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6534,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6536,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6537,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6538,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6539,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6541,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6541,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6541,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6543,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - buffer
    - relid
    - object
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - List**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6544
      start: 6515
    functionDepth: 2
    functionLinenumber: 6515
    functionLinenumberEnd: 6544
    functionName: getRelationIdentity
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - get_namespace_name_or_temp
    - HeapTupleIsValid
    - appendStringInfoString
    - quote_qualified_identifier
    - pstrdup
    - ReleaseSysCache
    - list_make2
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void getRelationIdentity(StringInfo buffer, Oid relid, List **object,\n\t\t\t\t\tbool
      missing_ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6562,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6565,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6567,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6567,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6568,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6568,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6572,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6577,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6583,1
    - Dst: construct_md_array
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6586,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6592
      start: 6549
    functionDepth: 1
    functionLinenumber: 6549
    functionLinenumberEnd: 6592
    functionName: strlist_to_textarray
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - construct_md_array
    - palloc_array
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - lfirst
    - CStringGetTextDatum
    - AllocSetContextCreate
    - list_length
    linkageType: ''
    returnType: ArrayType
    signature: 'ArrayType *

      strlist_to_textarray(List *list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6572,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6581
      start: 6570
    functionDepth: 1
    functionLinenumber: 6570
    functionLinenumberEnd: 6581
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 352
    functionsReached:
    - lfirst
    - CStringGetTextDatum
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - relkind
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6631
      start: 6604
    functionDepth: 0
    functionLinenumber: 6604
    functionLinenumberEnd: 6631
    functionName: get_relkind_objtype
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ObjectType
    signature: ObjectType get_relkind_objtype(char relkind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: recordMultipleDependencies
      Src: /src/postgres/src/backend/catalog/pg_depend.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - depender
    - referenced
    - behavior
    argTypes:
    - ObjectAddress*
    - ObjectAddress*
    - DependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: recordDependencyOn
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - recordMultipleDependencies
    linkageType: ''
    returnType: void
    signature: "void recordDependencyOn(const ObjectAddress *depender,\n\t\t\t\t   const
      ObjectAddress *referenced,\n\t\t\t\t   DependencyType behavior)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:86,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:89,1
    - Dst: Min
      Src: /src/postgres/src/backend/catalog/pg_depend.c:95,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/pg_depend.c:97,1
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:113,1
    - Dst: dependencyLockAndCheckObject
      Src: /src/postgres/src/backend/catalog/pg_depend.c:121,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_depend.c:125,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_depend.c:125,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:130,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:136,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:137,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:138,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:139,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:140,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:141,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:142,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_depend.c:144,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:147,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/pg_depend.c:155,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_depend.c:157,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/pg_depend.c:168,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_depend.c:170,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/pg_depend.c:175,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:177,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_depend.c:181,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_depend.c:182,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 4
    argNames:
    - depender
    - referenced
    - nreferenced
    - behavior
    argTypes:
    - ObjectAddress*
    - ObjectAddress*
    - int
    - DependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 183
    functionName: recordMultipleDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 1
    functionsReached:
    - CatalogCloseIndexes
    - CatalogTuplesMultiInsertWithInfo
    - palloc_array
    - table_close
    - Int32GetDatum
    - RelationGetDescr
    - pfree
    - table_open
    - MakeSingleTupleTableSlot
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - CharGetDatum
    - ObjectIdGetDatum
    - CatalogOpenIndexes
    - ExecDropSingleTupleTableSlot
    - isObjectPinned
    - IsBootstrapProcessingMode
    - memset
    - dependencyLockAndCheckObject
    - Min
    linkageType: ''
    returnType: void
    signature: "void recordMultipleDependencies(const ObjectAddress *depender,\n\t\t\t\t\t\t
      \  const ObjectAddress *referenced,\n\t\t\t\t\t\t   int nreferenced,\n\t\t\t\t\t\t
      \  DependencyType behavior)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_depend.c:210,1
    - Dst: getExtensionOfObject
      Src: /src/postgres/src/backend/catalog/pg_depend.c:227,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:228,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:234,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:235,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:236,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_depend.c:237,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/pg_depend.c:238,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:243,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_depend.c:244,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/pg_depend.c:245,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_depend.c:246,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_depend.c:254,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - object
    - isReplace
    argTypes:
    - ObjectAddress*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 205
    functionDepth: 5
    functionLinenumber: 205
    functionLinenumberEnd: 256
    functionName: recordDependencyOnCurrentExtension
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - get_extension_name
    - errcode
    - Assert
    - getExtensionOfObject
    - recordDependencyOn
    - ereport
    - getObjectDescription
    - errmsg
    - errdetail
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: "void recordDependencyOnCurrentExtension(const ObjectAddress *object,\n\t\t\t\t\t\t\t\t
      \  bool isReplace)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_depend.c:281,1
    - Dst: getExtensionOfObject
      Src: /src/postgres/src/backend/catalog/pg_depend.c:287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:292,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:293,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:294,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_depend.c:295,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/pg_depend.c:296,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_depend.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 270
    functionDepth: 5
    functionLinenumber: 270
    functionLinenumberEnd: 299
    functionName: checkMembershipInCurrentExtension
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - get_extension_name
    - errcode
    - Assert
    - getExtensionOfObject
    - ereport
    - errmsg
    - errdetail
    - getObjectDescription
    linkageType: ''
    returnType: void
    signature: void checkMembershipInCurrentExtension(const ObjectAddress *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:323,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:325,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:328,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:329,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:332,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:334,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:337,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:337,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:340,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:343,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:347,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - classId
    - objectId
    - skipExtensionDeps
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 313
    functionDepth: 4
    functionLinenumber: 313
    functionLinenumberEnd: 352
    functionName: deleteDependencyRecordsFor
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: long
    signature: "long deleteDependencyRecordsFor(Oid classId, Oid objectId,\n\t\t\t\t\t\t
      \  bool skipExtensionDeps)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:373,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:375,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:378,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:379,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:382,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:384,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:387,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:387,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:389,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:393,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:398,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - classId
    - objectId
    - refclassId
    - deptype
    argTypes:
    - Oid
    - Oid
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 363
    functionDepth: 4
    functionLinenumber: 363
    functionLinenumberEnd: 403
    functionName: deleteDependencyRecordsForClass
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: long
    signature: "long deleteDependencyRecordsForClass(Oid classId, Oid objectId,\n\t\t\t\t\t\t\t\tOid
      refclassId, char deptype)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:420,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:422,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:425,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:426,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:429,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:431,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:434,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:434,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:436,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:442,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:447,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:449,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 5
    argNames:
    - classId
    - objectId
    - deptype
    - refclassId
    - refobjectId
    argTypes:
    - Oid
    - Oid
    - char
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 410
    functionDepth: 4
    functionLinenumber: 410
    functionLinenumberEnd: 452
    functionName: deleteDependencyRecordsForSpecific
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: long
    signature: "long deleteDependencyRecordsForSpecific(Oid classId, Oid objectId,
      char deptype,\n\t\t\t\t\t\t\t\t   Oid refclassId, Oid refobjectId)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:494,1
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:498,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_depend.c:516,1
    - Dst: dependencyLockAndCheckObject
      Src: /src/postgres/src/backend/catalog/pg_depend.c:526,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:528,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:531,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:534,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:535,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:538,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:540,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:543,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:543,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:545,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:551,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:555,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:556,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_depend.c:560,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:562,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:569,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:571,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 5
    argNames:
    - classId
    - objectId
    - refClassId
    - oldRefObjectId
    - newRefObjectId
    argTypes:
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 469
    functionDepth: 4
    functionLinenumber: 469
    functionLinenumberEnd: 574
    functionName: changeDependencyFor
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - dependencyLockAndCheckObject
    - systable_beginscan
    - heap_freetuple
    - HeapTupleIsValid
    - recordDependencyOn
    - CatalogTupleUpdate
    - isObjectPinned
    - table_open
    - CatalogTupleDelete
    - heap_copytuple
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: long
    signature: "long changeDependencyFor(Oid classId, Oid objectId,\n\t\t\t\t\tOid
      refClassId, Oid oldRefObjectId,\n\t\t\t\t\tOid newRefObjectId)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:594,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:596,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:599,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:600,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:603,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:605,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:608,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:608,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:613,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:614,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_depend.c:618,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:620,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:625,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - classId
    - oldObjectId
    - newObjectId
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 584
    functionDepth: 4
    functionLinenumber: 584
    functionLinenumberEnd: 630
    functionName: changeDependenciesOf
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - table_open
    - heap_copytuple
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: long
    signature: "long changeDependenciesOf(Oid classId, Oid oldObjectId,\n\t\t\t\t\t
      Oid newObjectId)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:652,1
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:664,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:665,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:666,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:667,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_depend.c:668,1
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:676,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:679,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:682,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:683,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:686,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:688,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:691,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:691,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:694,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:700,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:701,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_depend.c:705,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:707,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:713,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:715,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 3
    argNames:
    - refClassId
    - oldRefObjectId
    - newRefObjectId
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 640
    functionDepth: 5
    functionLinenumber: 640
    functionLinenumberEnd: 718
    functionName: changeDependenciesOn
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - errcode
    - HeapTupleIsValid
    - heap_freetuple
    - ereport
    - isObjectPinned
    - CatalogTupleUpdate
    - table_open
    - CatalogTupleDelete
    - heap_copytuple
    - errmsg
    - GETSTRUCT
    - getObjectDescription
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: long
    signature: "long changeDependenciesOn(Oid refClassId, Oid oldRefObjectId,\n\t\t\t\t\t
      Oid newRefObjectId)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_depend.c:731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 732
    functionName: isObjectPinned
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 3
    functionsReached:
    - IsPinnedObject
    linkageType: ''
    returnType: bool
    signature: bool isObjectPinned(const ObjectAddress *object)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_depend.c:758,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_depend.c:758,1
    - Dst: SET_LOCKTAG_OBJECT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:769,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/catalog/pg_depend.c:775,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/pg_depend.c:779,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:785,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/pg_depend.c:788,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:788,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:798,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:800,1
    - Dst: get_object_attnum_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:801,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:803,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:805,1
    - Dst: get_object_oid_index
      Src: /src/postgres/src/backend/catalog/pg_depend.c:805,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:808,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:809,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:810,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:811,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:812,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/pg_depend.c:813,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:815,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:816,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_depend.c:834,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/catalog/pg_depend.c:834,1
    - Dst: CheckRelationOidLockedByMe
      Src: /src/postgres/src/backend/catalog/pg_depend.c:836,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:838,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/pg_depend.c:840,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:840,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:842,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:843,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:844,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - classId
    - objectId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 751
    functionDepth: 4
    functionLinenumber: 751
    functionLinenumberEnd: 846
    functionName: dependencyLockAndCheckObject
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 2
    functionsReached:
    - errcode
    - SET_LOCKTAG_OBJECT
    - get_object_class_descr
    - table_close
    - systable_endscan
    - get_object_attnum_oid
    - Assert
    - HeapTupleIsValid
    - LockDatabaseObject
    - CheckRelationOidLockedByMe
    - IsSharedRelation
    - table_open
    - errmsg
    - get_object_catcache_oid
    - LockHeldByMe
    - ObjectIdGetDatum
    - systable_beginscan
    - ereport
    - LockRelationOid
    - SearchSysCacheExists1
    - IsPinnedObject
    - get_object_oid_index
    - ScanKeyInit
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void dependencyLockAndCheckObject(Oid classId, Oid objectId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:873,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:875,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:878,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:879,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:882,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:884,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:887,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:887,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:889,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:899,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:901,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - classId
    - objectId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 864
    functionDepth: 4
    functionLinenumber: 864
    functionLinenumberEnd: 904
    functionName: getExtensionOfObject
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 2
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: Oid
    signature: Oid getExtensionOfObject(Oid classId, Oid objectId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:919,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:921,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:924,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:925,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:928,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:930,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:933,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:933,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:935,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:939,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:942,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:944,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - classId
    - objectId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 910
    functionDepth: 6
    functionLinenumber: 910
    functionLinenumberEnd: 947
    functionName: getAutoExtensionsOfObject
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - lappend_oid
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: 'List *

      getAutoExtensionsOfObject(Oid classId, Oid objectId)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:971,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:973,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:976,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:977,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:980,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:981,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:984,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:986,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:989,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:989,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:991,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_depend.c:999,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:999,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1000,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1002,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1002,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1002,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1006,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1009,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1013,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1015,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - extensionOid
    - typname
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 962
    functionDepth: 4
    functionLinenumber: 962
    functionLinenumberEnd: 1018
    functionName: getExtensionType
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - strcmp
    - Int32GetDatum
    - HeapTupleIsValid
    - table_open
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: Oid
    signature: Oid getExtensionType(Oid extensionOid, const char *typname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1040,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1042,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1045,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1046,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1049,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1051,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1054,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1054,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1056,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1068,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1070,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - seqId
    - deptype
    - tableId
    - colId
    argTypes:
    - Oid
    - char
    - Oid*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1031
    functionDepth: 4
    functionLinenumber: 1031
    functionLinenumberEnd: 1073
    functionName: sequenceIsOwned
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool sequenceIsOwned(Oid seqId, char deptype, Oid *tableId, int32 *colId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1089,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1091,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1094,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1095,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1098,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1100,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1103,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1105,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1108,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1108,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1110,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1121,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1124,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1128,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1130,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 3
    argNames:
    - relid
    - attnum
    - deptype
    argTypes:
    - Oid
    - AttrNumber
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1080
    functionDepth: 6
    functionLinenumber: 1080
    functionLinenumberEnd: 1133
    functionName: getOwnedSequences_internal
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - Int32GetDatum
    - HeapTupleIsValid
    - table_open
    - get_rel_relkind
    - GETSTRUCT
    - lappend_oid
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: 'List *

      getOwnedSequences_internal(Oid relid, AttrNumber attnum, char deptype)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getOwnedSequences_internal
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1139
    functionDepth: 7
    functionLinenumber: 1139
    functionLinenumberEnd: 1143
    functionName: getOwnedSequences
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - getOwnedSequences_internal
    linkageType: ''
    returnType: List
    signature: 'List *

      getOwnedSequences(Oid relid)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1151,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1158,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1160,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1161,1
    - Dst: llast_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1163,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1164,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1166,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1168,1
    - Dst: getOwnedSequences_internal
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1171,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1172,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1173,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1179,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1182,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - rel
    - attnum
    - missing_ok
    argTypes:
    - Relation
    - AttrNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1148
    functionDepth: 7
    functionLinenumber: 1148
    functionLinenumberEnd: 1183
    functionName: getIdentitySequence
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - elog
    - get_attnum
    - list_free
    - llast_oid
    - linitial_oid
    - RelationGetForm
    - get_attname
    - getOwnedSequences_internal
    - list_length
    - get_partition_ancestors
    - RelationGetRelid
    linkageType: ''
    returnType: Oid
    signature: Oid getIdentitySequence(Relation rel, AttrNumber attnum, bool missing_ok)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1201,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1203,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1206,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1207,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1210,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1211,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1214,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1216,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1219,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1219,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1221,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1236,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1237,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - indexId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1191
    functionDepth: 4
    functionLinenumber: 1191
    functionLinenumberEnd: 1240
    functionName: get_index_constraint
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - Int32GetDatum
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: Oid
    signature: Oid get_index_constraint(Oid indexId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1257,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1259,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1262,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1263,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1266,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1267,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1270,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1272,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1275,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1275,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1277,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1287,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1291,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1292,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - indexId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1247
    functionDepth: 6
    functionLinenumber: 1247
    functionLinenumberEnd: 1295
    functionName: get_index_ref_constraints
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - Int32GetDatum
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - lappend_oid
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: 'List *

      get_index_ref_constraints(Oid indexId)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fasthash_init
      Src: /src/postgres/src/backend/catalog/namespace.c:260,1
    - Dst: fasthash_combine
      Src: /src/postgres/src/backend/catalog/namespace.c:263,1
    - Dst: fasthash_accum_cstring
      Src: /src/postgres/src/backend/catalog/namespace.c:269,1
    - Dst: fasthash_final32
      Src: /src/postgres/src/backend/catalog/namespace.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - SearchPathCacheKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 254
    functionDepth: 6
    functionLinenumber: 254
    functionLinenumberEnd: 272
    functionName: spcachekey_hash
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - fasthash_combine
    - fasthash_accum_cstring
    - fasthash_init
    - fasthash_final32
    linkageType: ''
    returnType: uint32
    signature: uint32 spcachekey_hash(SearchPathCacheKey key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - SearchPathCacheKey
    - SearchPathCacheKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 279
    functionName: spcachekey_equal
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool spcachekey_equal(SearchPathCacheKey a, SearchPathCacheKey b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 286
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 287
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/catalog/namespace.c:326,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/catalog/namespace.c:332,1
    - Dst: nsphash_create
      Src: /src/postgres/src/backend/catalog/namespace.c:336,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 338
    functionName: spcache_init
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - nsphash_create
    - MemoryContextReset
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void spcache_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:349,1
    - Dst: nsphash_lookup
      Src: /src/postgres/src/backend/catalog/namespace.c:361,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - searchPath
    - roleid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 366
    functionName: spcache_lookup
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - nsphash_lookup
    - strcmp
    linkageType: ''
    returnType: SearchPathCacheEntry
    signature: 'SearchPathCacheEntry *

      spcache_lookup(const char *searchPath, Oid roleid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:379,1
    - Dst: nsphash_lookup
      Src: /src/postgres/src/backend/catalog/namespace.c:395,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/catalog/namespace.c:401,1
    - Dst: nsphash_insert
      Src: /src/postgres/src/backend/catalog/namespace.c:402,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - searchPath
    - roleid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 416
    functionName: spcache_insert
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - nsphash_insert
    - strcmp
    - Assert
    - MemoryContextStrdup
    - nsphash_lookup
    linkageType: ''
    returnType: SearchPathCacheEntry
    signature: 'SearchPathCacheEntry *

      spcache_insert(const char *searchPath, Oid roleid)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:453,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:460,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:460,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:461,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:462,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:463,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:503,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:511,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:518,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:520,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:523,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:531,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:532,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:535,1
    - Dst: RelnameGetRelid
      Src: /src/postgres/src/backend/catalog/namespace.c:540,1
    - Dst: callback
      Src: /src/postgres/src/backend/catalog/namespace.c:554,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:579,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:580,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:590,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/catalog/namespace.c:591,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:593,1
    - Dst: ConditionalLockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:594,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:599,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:600,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:601,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:604,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:605,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:606,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:627,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:632,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:633,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:634,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:637,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:638,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:639,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 58
    argCount: 5
    argNames:
    - relation
    - lockmode
    - flags
    - callback
    - callback_arg
    argTypes:
    - RangeVar*
    - LOCKMODE
    - uint32
    - RangeVarGetRelidCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 441
    functionDepth: 2
    functionLinenumber: 441
    functionLinenumberEnd: 643
    functionName: RangeVarGetRelidExtended
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 6
    functionsReached:
    - LookupExplicitNamespace
    - callback
    - strcmp
    - errcode
    - Assert
    - ConditionalLockRelationOid
    - get_relname_relid
    - ereport
    - AcceptInvalidationMessages
    - get_database_name
    - RelnameGetRelid
    - LockRelationOid
    - errmsg
    - OidIsValid
    - UnlockRelationOid
    linkageType: ''
    returnType: Oid
    signature: "Oid RangeVarGetRelidExtended(const RangeVar *relation, LOCKMODE lockmode,\n\t\t\t\t\t\t
      uint32 flags,\n\t\t\t\t\t\t RangeVarGetRelidCallback callback, void *callback_arg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:664,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:664,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:665,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:666,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:667,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:675,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:678,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:682,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:688,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:694,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:698,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:702,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:703,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:705,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - newRelation
    argTypes:
    - RangeVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 711
    functionName: RangeVarGetCreationNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - recomputeNamespacePath
    - ereport
    - get_database_name
    - errmsg
    - get_namespace_oid
    - AccessTempTableNamespace
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid RangeVarGetCreationNamespace(const RangeVar *newRelation)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:756,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:756,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:757,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:759,1
    - Dst: RangeVarGetCreationNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:777,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:778,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:778,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:780,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/namespace.c:789,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:793,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:793,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/namespace.c:795,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/namespace.c:796,1
    - Dst: UnlockDatabaseObject
      Src: /src/postgres/src/backend/catalog/namespace.c:805,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:808,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:809,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/namespace.c:814,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:817,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/namespace.c:819,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:819,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/namespace.c:820,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/catalog/namespace.c:820,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/namespace.c:820,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:823,1
    - Dst: RangeVarAdjustRelationPersistence
      Src: /src/postgres/src/backend/catalog/namespace.c:836,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 43
    argCount: 3
    argNames:
    - relation
    - lockmode
    - existing_relation_id
    argTypes:
    - RangeVar*
    - LOCKMODE
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 739
    functionDepth: 2
    functionLinenumber: 739
    functionLinenumberEnd: 840
    functionName: RangeVarGetAndCheckCreationNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - GetUserId
    - object_aclcheck
    - UnlockDatabaseObject
    - Assert
    - object_ownercheck
    - LockDatabaseObject
    - get_relname_relid
    - get_relkind_objtype
    - get_database_name
    - get_rel_relkind
    - errmsg
    - OidIsValid
    - RangeVarAdjustRelationPersistence
    - UnlockRelationOid
    - RangeVarGetCreationNamespace
    - ereport
    - IsBootstrapProcessingMode
    - LockRelationOid
    - aclcheck_error
    - get_namespace_name
    linkageType: ''
    returnType: Oid
    signature: "Oid RangeVarGetAndCheckCreationNamespace(RangeVar *relation,\n\t\t\t\t\t\t\t\t\t
      LOCKMODE lockmode,\n\t\t\t\t\t\t\t\t\t Oid *existing_relation_id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isTempOrTempToastNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:852,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:854,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:855,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:856,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:857,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:859,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:860,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:861,1
    - Dst: isTempOrTempToastNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:865,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:867,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:868,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:869,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:870,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:873,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:874,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:875,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:876,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - newRelation
    - nspid
    argTypes:
    - RangeVar*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 846
    functionDepth: 1
    functionLinenumber: 846
    functionLinenumberEnd: 878
    functionName: RangeVarAdjustRelationPersistence
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - errcode
    - isAnyTempNamespace
    - ereport
    - isTempOrTempToastNamespace
    - errmsg
    linkageType: ''
    returnType: void
    signature: void RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:891,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:895,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:897,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:898,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - relname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 885
    functionDepth: 1
    functionLinenumber: 885
    functionLinenumberEnd: 904
    functionName: RelnameGetRelid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 2
    functionsReached:
    - OidIsValid
    - recomputeNamespacePath
    - get_relname_relid
    - lfirst_oid
    linkageType: ''
    returnType: Oid
    signature: Oid RelnameGetRelid(const char *relname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:895,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:897,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:898,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 893
    functionDepth: 1
    functionLinenumber: 893
    functionLinenumberEnd: 900
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - OidIsValid
    - lfirst_oid
    - get_relname_relid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:916,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 917
    functionName: RelationIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - RelationIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool RelationIsVisible(Oid relid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:933,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:933,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:934,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:941,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:943,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:945,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:954,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:963,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:969,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:977,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:977,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:985,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - relid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 925
    functionDepth: 3
    functionLinenumber: 925
    functionLinenumberEnd: 988
    functionName: RelationIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - lfirst_oid
    - HeapTupleIsValid
    - recomputeNamespacePath
    - get_relname_relid
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - OidIsValid
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool RelationIsVisibleExt(Oid relid, bool *is_missing)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:969,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:977,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:977,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 982
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - OidIsValid
    - lfirst_oid
    - get_relname_relid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypenameGetTypidExtended
      Src: /src/postgres/src/backend/catalog/namespace.c:998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - typname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 999
    functionName: TypenameGetTypid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - TypenameGetTypidExtended
    linkageType: ''
    returnType: Oid
    signature: Oid TypenameGetTypid(const char *typname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1014,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1018,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:1023,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1024,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1025,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1026,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - typname
    - temp_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1032
    functionName: TypenameGetTypidExtended
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - lfirst_oid
    - recomputeNamespacePath
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid TypenameGetTypidExtended(const char *typname, bool temp_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1018,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:1023,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1024,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1025,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1026,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1016
    functionDepth: 1
    functionLinenumber: 1016
    functionLinenumberEnd: 1028
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ObjectIdGetDatum
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypeIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:1043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - typid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1040
    functionDepth: 1
    functionLinenumber: 1040
    functionLinenumberEnd: 1044
    functionName: TypeIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - TypeIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool TypeIsVisible(Oid typid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:1060,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1060,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1061,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:1068,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1070,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1072,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1081,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:1090,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1096,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:1104,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1105,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1106,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:1114,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - typid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1052
    functionDepth: 3
    functionLinenumber: 1052
    functionLinenumberEnd: 1117
    functionName: TypeIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - lfirst_oid
    - HeapTupleIsValid
    - SearchSysCacheExists2
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - PointerGetDatum
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool TypeIsVisibleExt(Oid typid, bool *is_missing)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1096,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:1104,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1105,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1111
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - SearchSysCacheExists2
    - lfirst_oid
    - ObjectIdGetDatum
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1213,1
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:1219,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:1225,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1226,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1234,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/namespace.c:1238,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1238,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1243,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1256,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1272,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/namespace.c:1294,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/namespace.c:1299,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/namespace.c:1301,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/namespace.c:1302,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/namespace.c:1304,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/namespace.c:1305,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:1306,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1307,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/namespace.c:1308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1319,1
    - Dst: MatchNamedCall
      Src: /src/postgres/src/backend/catalog/namespace.c:1339,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1354,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1377,1
    - Dst: Max
      Src: /src/postgres/src/backend/catalog/namespace.c:1414,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/namespace.c:1416,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/namespace.c:1432,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1454,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1473,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1489,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:1545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1567,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:1569,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:1576,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1589,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 149
    argCount: 8
    argNames:
    - names
    - nargs
    - argnames
    - expand_variadic
    - expand_defaults
    - include_out_arguments
    - missing_ok
    - fgc_flags
    argTypes:
    - List*
    - int
    - List*
    - bool
    - bool
    - bool
    - bool
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1198
    functionDepth: 2
    functionLinenumber: 1198
    functionLinenumberEnd: 1592
    functionName: FuncnameGetCandidates
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - LookupExplicitNamespace
    - ARR_NDIM
    - lfirst_oid
    - elog
    - memcpy
    - MatchNamedCall
    - Assert
    - pfree
    - OidIsValid
    - memcmp
    - ARR_DIMS
    - SearchSysCacheList1
    - CStringGetDatum
    - ARR_HASNULL
    - ARR_DATA_PTR
    - GETSTRUCT
    - DatumGetArrayTypeP
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - ARR_ELEMTYPE
    - Max
    - palloc
    - ReleaseSysCacheList
    - SysCacheGetAttr
    linkageType: ''
    returnType: FuncCandidateList
    signature: "FuncCandidateList FuncnameGetCandidates(List *names, int nargs, List
      *argnames,\n\t\t\t\t\t  bool expand_variadic, bool expand_defaults,\n\t\t\t\t\t
      \ bool include_out_arguments, bool missing_ok,\n\t\t\t\t\t  int *fgc_flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1270
    functionDepth: 1
    functionLinenumber: 1270
    functionLinenumberEnd: 1276
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(nsp, activeSearchPath)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1622,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/namespace.c:1623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1635,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1636,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1637,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/namespace.c:1640,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/backend/catalog/namespace.c:1646,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1650,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/namespace.c:1653,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/namespace.c:1654,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:1666,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1681,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1700,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1728,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 7
    argNames:
    - proctup
    - nargs
    - argnames
    - include_out_arguments
    - pronargs
    - argnumbers
    - fgc_flags
    argTypes:
    - HeapTuple
    - int
    - List*
    - bool
    - int
    - int**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1617
    functionDepth: 1
    functionLinenumber: 1617
    functionLinenumberEnd: 1734
    functionName: MatchNamedCall
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - get_func_arg_info
    - strcmp
    - Assert
    - lfirst
    - memset
    - GETSTRUCT
    - palloc
    - list_length
    - SysCacheGetAttr
    linkageType: ''
    returnType: bool
    signature: "bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,\n\t\t\t
      \  bool include_out_arguments, int pronargs,\n\t\t\t   int **argnumbers, int
      *fgc_flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:1666,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1681,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1664
    functionDepth: 1
    functionLinenumber: 1664
    functionLinenumberEnd: 1698
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - lfirst
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach(lc, argnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FunctionIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:1745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - funcid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1742
    functionDepth: 1
    functionLinenumber: 1742
    functionLinenumberEnd: 1746
    functionName: FunctionIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - FunctionIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool FunctionIsVisible(Oid funcid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:1762,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1762,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1763,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:1770,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1772,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1774,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1783,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:1793,1
    - Dst: FuncnameGetCandidates
      Src: /src/postgres/src/backend/catalog/namespace.c:1800,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/namespace.c:1800,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/namespace.c:1800,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1806,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:1816,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - funcid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1819
      start: 1754
    functionDepth: 3
    functionLinenumber: 1754
    functionLinenumberEnd: 1819
    functionName: FunctionIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - memcmp
    - HeapTupleIsValid
    - makeString
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - list_make1
    - ObjectIdGetDatum
    - list_member_oid
    - FuncnameGetCandidates
    linkageType: ''
    returnType: bool
    signature: bool FunctionIsVisibleExt(Oid funcid, bool *is_missing)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:1842,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:1849,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1850,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/catalog/namespace.c:1854,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1855,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1856,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1857,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1858,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1859,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1861,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:1864,1
    - Dst: SearchSysCacheList3
      Src: /src/postgres/src/backend/catalog/namespace.c:1873,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1874,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1875,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1876,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1881,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1890,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1894,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1903,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1909,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1915,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - names
    - oprleft
    - oprright
    argTypes:
    - List*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1833
    functionDepth: 2
    functionLinenumber: 1833
    functionLinenumberEnd: 1917
    functionName: OpernameGetOprid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - LookupExplicitNamespace
    - ReleaseSysCacheList
    - lfirst_oid
    - HeapTupleIsValid
    - DeconstructQualifiedName
    - CStringGetDatum
    - recomputeNamespacePath
    - SearchSysCacheList3
    - ReleaseSysCache
    - GETSTRUCT
    - OidIsValid
    - SearchSysCache4
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid OpernameGetOprid(List *names, Oid oprleft, Oid oprright)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1894,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1903,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1909,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1892
    functionDepth: 1
    functionLinenumber: 1892
    functionLinenumberEnd: 1913
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ReleaseSysCacheList
    - lfirst_oid
    - GETSTRUCT
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:1963,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:1969,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1970,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1978,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/namespace.c:1982,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1982,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/namespace.c:1997,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2002,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2012,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2029,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:2074,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:2106,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 68
    argCount: 4
    argNames:
    - names
    - oprkind
    - missing_schema_ok
    - fgc_flags
    argTypes:
    - List*
    - char
    - bool
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 1946
    functionDepth: 2
    functionLinenumber: 1946
    functionLinenumberEnd: 2109
    functionName: OpernameGetCandidates
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - SearchSysCacheList1
    - LookupExplicitNamespace
    - Assert
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - CStringGetDatum
    - GETSTRUCT
    - palloc
    - OidIsValid
    - ReleaseSysCacheList
    - lfirst_oid
    linkageType: ''
    returnType: FuncCandidateList
    signature: "FuncCandidateList OpernameGetCandidates(List *names, char oprkind,
      bool missing_schema_ok,\n\t\t\t\t\t  int *fgc_flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2029,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 2027
    functionDepth: 1
    functionLinenumber: 2027
    functionLinenumberEnd: 2033
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(nsp, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OperatorIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - oprid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2121
      start: 2117
    functionDepth: 1
    functionLinenumber: 2117
    functionLinenumberEnd: 2121
    functionName: OperatorIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - OperatorIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool OperatorIsVisible(Oid oprid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:2137,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2137,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2138,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2145,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2147,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2149,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2158,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2168,1
    - Dst: OpernameGetOprid
      Src: /src/postgres/src/backend/catalog/namespace.c:2170,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/namespace.c:2170,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/namespace.c:2170,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - oprid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2129
    functionDepth: 3
    functionLinenumber: 2129
    functionLinenumberEnd: 2178
    functionName: OperatorIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - makeString
    - recomputeNamespacePath
    - OpernameGetOprid
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - list_make1
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool OperatorIsVisibleExt(Oid oprid, bool *is_missing)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2195,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2199,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/namespace.c:2204,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2205,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2206,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2207,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - amid
    - opcname
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2214
      start: 2189
    functionDepth: 1
    functionLinenumber: 2189
    functionLinenumberEnd: 2214
    functionName: OpclassnameGetOpcid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - lfirst_oid
    - recomputeNamespacePath
    - GetSysCacheOid3
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid OpclassnameGetOpcid(Oid amid, const char *opcname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2199,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/namespace.c:2204,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2205,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2206,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2207,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2210
      start: 2197
    functionDepth: 1
    functionLinenumber: 2197
    functionLinenumberEnd: 2210
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ObjectIdGetDatum
    - GetSysCacheOid3
    - PointerGetDatum
    - OidIsValid
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OpclassIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opcid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2226
      start: 2222
    functionDepth: 1
    functionLinenumber: 2222
    functionLinenumberEnd: 2226
    functionName: OpclassIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - OpclassIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool OpclassIsVisible(Oid opcid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:2242,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2242,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2243,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2250,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2252,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2254,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2263,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2273,1
    - Dst: OpclassnameGetOpcid
      Src: /src/postgres/src/backend/catalog/namespace.c:2275,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2278,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - opcid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2281
      start: 2234
    functionDepth: 3
    functionLinenumber: 2234
    functionLinenumberEnd: 2281
    functionName: OpclassIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - OpclassnameGetOpcid
    - HeapTupleIsValid
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool OpclassIsVisibleExt(Oid opcid, bool *is_missing)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2297,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2301,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/namespace.c:2306,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2307,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2308,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2309,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - amid
    - opfname
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2316
      start: 2291
    functionDepth: 1
    functionLinenumber: 2291
    functionLinenumberEnd: 2316
    functionName: OpfamilynameGetOpfid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - lfirst_oid
    - recomputeNamespacePath
    - GetSysCacheOid3
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid OpfamilynameGetOpfid(Oid amid, const char *opfname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2301,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/namespace.c:2306,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2307,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2308,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2309,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2312
      start: 2299
    functionDepth: 1
    functionLinenumber: 2299
    functionLinenumberEnd: 2312
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ObjectIdGetDatum
    - GetSysCacheOid3
    - PointerGetDatum
    - OidIsValid
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OpfamilyIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opfid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2328
      start: 2324
    functionDepth: 1
    functionLinenumber: 2324
    functionLinenumberEnd: 2328
    functionName: OpfamilyIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - OpfamilyIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool OpfamilyIsVisible(Oid opfid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:2344,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2344,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2345,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2352,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2354,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2356,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2365,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2375,1
    - Dst: OpfamilynameGetOpfid
      Src: /src/postgres/src/backend/catalog/namespace.c:2377,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - opfid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2383
      start: 2336
    functionDepth: 3
    functionLinenumber: 2336
    functionLinenumberEnd: 2383
    functionName: OpfamilyIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - OpfamilynameGetOpfid
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool OpfamilyIsVisibleExt(Oid opfid, bool *is_missing)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/namespace.c:2398,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2399,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2400,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2401,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2402,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/catalog/namespace.c:2411,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2412,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2413,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2414,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2415,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2417,1
    - Dst: is_encoding_supported_by_icu
      Src: /src/postgres/src/backend/catalog/namespace.c:2420,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2429,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - collname
    - collnamespace
    - encoding
    argTypes:
    - char*
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2431
      start: 2390
    functionDepth: 2
    functionLinenumber: 2390
    functionLinenumberEnd: 2431
    functionName: lookup_collation
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - SearchSysCache3
    - Int32GetDatum
    - HeapTupleIsValid
    - is_encoding_supported_by_icu
    - ReleaseSysCache
    - GetSysCacheOid3
    - PointerGetDatum
    - GETSTRUCT
    - OidIsValid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid lookup_collation(const char *collname, Oid collnamespace, int32
      encoding)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/catalog/namespace.c:2444,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2447,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2451,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:2457,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - collname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2464
      start: 2441
    functionDepth: 3
    functionLinenumber: 2441
    functionLinenumberEnd: 2464
    functionName: CollationGetCollid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - recomputeNamespacePath
    - lookup_collation
    - OidIsValid
    - lfirst_oid
    linkageType: ''
    returnType: Oid
    signature: Oid CollationGetCollid(const char *collname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2451,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:2457,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2449
    functionDepth: 3
    functionLinenumber: 2449
    functionLinenumberEnd: 2460
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - OidIsValid
    - lfirst_oid
    - lookup_collation
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CollationIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - collid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2479
      start: 2475
    functionDepth: 1
    functionLinenumber: 2475
    functionLinenumberEnd: 2479
    functionName: CollationIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - CollationIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool CollationIsVisible(Oid collid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:2495,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2495,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2496,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2503,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2505,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2507,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2516,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2527,1
    - Dst: CollationGetCollid
      Src: /src/postgres/src/backend/catalog/namespace.c:2529,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2532,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - collid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2535
      start: 2487
    functionDepth: 4
    functionLinenumber: 2487
    functionLinenumberEnd: 2535
    functionName: CollationIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - CollationGetCollid
    - HeapTupleIsValid
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool CollationIsVisibleExt(Oid collid, bool *is_missing)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2551,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2555,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2560,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2561,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2562,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2563,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2545
    functionDepth: 1
    functionLinenumber: 2545
    functionLinenumberEnd: 2569
    functionName: ConversionGetConid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - lfirst_oid
    - recomputeNamespacePath
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid ConversionGetConid(const char *conname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2555,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2560,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2561,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2562,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2563,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2553
    functionDepth: 1
    functionLinenumber: 2553
    functionLinenumberEnd: 2565
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ObjectIdGetDatum
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ConversionIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2581
      start: 2577
    functionDepth: 1
    functionLinenumber: 2577
    functionLinenumberEnd: 2581
    functionName: ConversionIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - ConversionIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool ConversionIsVisible(Oid conid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:2597,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2597,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2598,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2605,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2607,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2609,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2618,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2628,1
    - Dst: ConversionGetConid
      Src: /src/postgres/src/backend/catalog/namespace.c:2630,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - conid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2589
    functionDepth: 3
    functionLinenumber: 2589
    functionLinenumberEnd: 2636
    functionName: ConversionIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - ConversionGetConid
    - HeapTupleIsValid
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool ConversionIsVisibleExt(Oid conid, bool *is_missing)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:2653,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:2658,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2659,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2662,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2663,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2664,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2669,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2673,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2677,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2678,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2679,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2680,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2685,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:2686,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:2687,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:2688,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:2689,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2692
      start: 2643
    functionDepth: 1
    functionLinenumber: 2643
    functionLinenumberEnd: 2692
    functionName: get_statistics_object_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - LookupExplicitNamespace
    - lfirst_oid
    - errcode
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - ereport
    - NameListToString
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - GetSysCacheOid2
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_statistics_object_oid(List *names, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2673,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2677,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2678,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2679,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2680,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2682
      start: 2671
    functionDepth: 1
    functionLinenumber: 2671
    functionLinenumberEnd: 2682
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ObjectIdGetDatum
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatisticsObjIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stxid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2704
      start: 2700
    functionDepth: 1
    functionLinenumber: 2700
    functionLinenumberEnd: 2704
    functionName: StatisticsObjIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - StatisticsObjIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool StatisticsObjIsVisible(Oid stxid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:2720,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2720,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2721,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2728,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2730,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2732,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2741,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2750,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2756,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2767,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2768,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2769,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2777,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - stxid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2780
      start: 2712
    functionDepth: 3
    functionLinenumber: 2712
    functionLinenumberEnd: 2780
    functionName: StatisticsObjIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - lfirst_oid
    - HeapTupleIsValid
    - SearchSysCacheExists2
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - PointerGetDatum
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool StatisticsObjIsVisibleExt(Oid stxid, bool *is_missing)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2756,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2767,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2768,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2769,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2774
      start: 2754
    functionDepth: 1
    functionLinenumber: 2754
    functionLinenumberEnd: 2774
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - SearchSysCacheExists2
    - lfirst_oid
    - ObjectIdGetDatum
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:2797,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:2802,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2803,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2806,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2807,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2808,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2813,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2817,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2822,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2823,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2824,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2825,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2830,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:2831,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:2832,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:2833,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:2834,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2837
      start: 2787
    functionDepth: 1
    functionLinenumber: 2787
    functionLinenumberEnd: 2837
    functionName: get_ts_parser_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 3
    functionsReached:
    - LookupExplicitNamespace
    - lfirst_oid
    - errcode
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - ereport
    - NameListToString
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - GetSysCacheOid2
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_ts_parser_oid(List *names, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2817,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2822,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2823,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2824,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2825,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2827
      start: 2815
    functionDepth: 1
    functionLinenumber: 2815
    functionLinenumberEnd: 2827
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ObjectIdGetDatum
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSParserIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prsId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2849
      start: 2845
    functionDepth: 1
    functionLinenumber: 2845
    functionLinenumberEnd: 2849
    functionName: TSParserIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - TSParserIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool TSParserIsVisible(Oid prsId)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:2865,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2865,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2866,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2873,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2875,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2877,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2886,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2895,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2901,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2912,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2913,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2914,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2922,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - prsId
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2925
      start: 2857
    functionDepth: 3
    functionLinenumber: 2857
    functionLinenumberEnd: 2925
    functionName: TSParserIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - lfirst_oid
    - HeapTupleIsValid
    - SearchSysCacheExists2
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - PointerGetDatum
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool TSParserIsVisibleExt(Oid prsId, bool *is_missing)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2901,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2912,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2913,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2914,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2919
      start: 2899
    functionDepth: 1
    functionLinenumber: 2899
    functionLinenumberEnd: 2919
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - SearchSysCacheExists2
    - lfirst_oid
    - ObjectIdGetDatum
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:2942,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:2947,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2948,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2951,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2952,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2953,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2958,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2962,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2967,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2968,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2969,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2970,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2975,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:2976,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:2977,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:2978,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:2979,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2982
      start: 2932
    functionDepth: 1
    functionLinenumber: 2932
    functionLinenumberEnd: 2982
    functionName: get_ts_dict_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 2
    functionsReached:
    - LookupExplicitNamespace
    - lfirst_oid
    - errcode
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - ereport
    - NameListToString
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - GetSysCacheOid2
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_ts_dict_oid(List *names, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2962,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2967,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2968,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2969,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2970,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2972
      start: 2960
    functionDepth: 1
    functionLinenumber: 2960
    functionLinenumberEnd: 2972
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ObjectIdGetDatum
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSDictionaryIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dictId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2994
      start: 2990
    functionDepth: 1
    functionLinenumber: 2990
    functionLinenumberEnd: 2994
    functionName: TSDictionaryIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - TSDictionaryIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool TSDictionaryIsVisible(Oid dictId)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:3010,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3010,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3011,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:3018,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:3021,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3023,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3032,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:3041,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3047,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3058,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3059,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3060,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:3068,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - dictId
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3002
    functionDepth: 3
    functionLinenumber: 3002
    functionLinenumberEnd: 3071
    functionName: TSDictionaryIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - lfirst_oid
    - HeapTupleIsValid
    - SearchSysCacheExists2
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - PointerGetDatum
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool TSDictionaryIsVisibleExt(Oid dictId, bool *is_missing)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3047,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3058,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3059,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3060,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3065
      start: 3045
    functionDepth: 1
    functionLinenumber: 3045
    functionLinenumberEnd: 3065
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - SearchSysCacheExists2
    - lfirst_oid
    - ObjectIdGetDatum
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:3088,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3093,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3094,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3097,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3098,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3099,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3104,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3108,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3113,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3114,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3115,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3116,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3121,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3122,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3123,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3124,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3125,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3128
      start: 3078
    functionDepth: 1
    functionLinenumber: 3078
    functionLinenumberEnd: 3128
    functionName: get_ts_template_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - LookupExplicitNamespace
    - lfirst_oid
    - errcode
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - ereport
    - NameListToString
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - GetSysCacheOid2
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_ts_template_oid(List *names, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3108,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3113,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3114,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3115,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3118
      start: 3106
    functionDepth: 1
    functionLinenumber: 3106
    functionLinenumberEnd: 3118
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ObjectIdGetDatum
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSTemplateIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:3139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tmplId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3140
      start: 3136
    functionDepth: 1
    functionLinenumber: 3136
    functionLinenumberEnd: 3140
    functionName: TSTemplateIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - TSTemplateIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool TSTemplateIsVisible(Oid tmplId)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:3156,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3156,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3157,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:3164,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:3166,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3168,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3177,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:3186,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3192,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3203,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3204,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3205,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:3213,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - tmplId
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3216
      start: 3148
    functionDepth: 3
    functionLinenumber: 3148
    functionLinenumberEnd: 3216
    functionName: TSTemplateIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - lfirst_oid
    - HeapTupleIsValid
    - SearchSysCacheExists2
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - PointerGetDatum
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool TSTemplateIsVisibleExt(Oid tmplId, bool *is_missing)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3192,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3203,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3204,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3205,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3210
      start: 3190
    functionDepth: 1
    functionLinenumber: 3190
    functionLinenumberEnd: 3210
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - SearchSysCacheExists2
    - lfirst_oid
    - ObjectIdGetDatum
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:3233,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3238,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3239,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3242,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3243,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3244,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3249,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3253,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3258,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3259,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3260,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3261,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3266,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3267,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3269,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3270,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3273
      start: 3223
    functionDepth: 1
    functionLinenumber: 3223
    functionLinenumberEnd: 3273
    functionName: get_ts_config_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - LookupExplicitNamespace
    - lfirst_oid
    - errcode
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - ereport
    - NameListToString
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - GetSysCacheOid2
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_ts_config_oid(List *names, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3253,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3258,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3259,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3260,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3261,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3263
      start: 3251
    functionDepth: 1
    functionLinenumber: 3251
    functionLinenumberEnd: 3263
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - ObjectIdGetDatum
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSConfigIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:3284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cfgid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3285
      start: 3281
    functionDepth: 1
    functionLinenumber: 3281
    functionLinenumberEnd: 3285
    functionName: TSConfigIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - TSConfigIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool TSConfigIsVisible(Oid cfgid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:3301,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3301,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3302,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:3309,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:3312,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3314,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3323,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:3332,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3338,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3349,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3350,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3351,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:3359,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - cfgid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3362
      start: 3293
    functionDepth: 3
    functionLinenumber: 3293
    functionLinenumberEnd: 3362
    functionName: TSConfigIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - lfirst_oid
    - HeapTupleIsValid
    - SearchSysCacheExists2
    - recomputeNamespacePath
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - PointerGetDatum
    - ObjectIdGetDatum
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool TSConfigIsVisibleExt(Oid cfgid, bool *is_missing)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3338,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3349,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3350,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3351,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3356
      start: 3336
    functionDepth: 1
    functionLinenumber: 3336
    functionLinenumberEnd: 3356
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - SearchSysCacheExists2
    - lfirst_oid
    - ObjectIdGetDatum
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/namespace.c:3381,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3384,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3384,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3387,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3387,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3388,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/namespace.c:3388,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3391,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3391,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3392,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/namespace.c:3392,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3393,1
    - Dst: lthird
      Src: /src/postgres/src/backend/catalog/namespace.c:3393,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3398,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:3398,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3399,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3401,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3402,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3405,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3406,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3407,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3408,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - names
    - nspname_p
    - objname_p
    argTypes:
    - List*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3414
      start: 3372
    functionDepth: 1
    functionLinenumber: 3372
    functionLinenumberEnd: 3414
    functionName: DeconstructQualifiedName
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 8
    functionsReached:
    - strcmp
    - errcode
    - lthird
    - linitial
    - ereport
    - NameListToString
    - lsecond
    - get_database_name
    - errmsg
    - list_length
    - strVal
    linkageType: ''
    returnType: void
    signature: "void DeconstructQualifiedName(const List *names,\n\t\t\t\t\t\t char
      **nspname_p,\n\t\t\t\t\t\t char **objname_p)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3430,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3432,1
    - Dst: InvokeNamespaceSearchHook
      Src: /src/postgres/src/backend/catalog/namespace.c:3434,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - nspname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3447
      start: 3426
    functionDepth: 1
    functionLinenumber: 3426
    functionLinenumberEnd: 3447
    functionName: LookupNamespaceNoError
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - get_namespace_oid
    - strcmp
    - InvokeNamespaceSearchHook
    linkageType: ''
    returnType: Oid
    signature: Oid LookupNamespaceNoError(const char *nspname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3463,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3465,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3475,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3476,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:3479,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:3479,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/namespace.c:3481,1
    - Dst: InvokeNamespaceSearchHook
      Src: /src/postgres/src/backend/catalog/namespace.c:3484,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - nspname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3487
      start: 3456
    functionDepth: 1
    functionLinenumber: 3456
    functionLinenumberEnd: 3487
    functionName: LookupExplicitNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 9
    functionsReached:
    - GetUserId
    - strcmp
    - object_aclcheck
    - get_namespace_oid
    - aclcheck_error
    - OidIsValid
    - InvokeNamespaceSearchHook
    linkageType: ''
    returnType: Oid
    signature: Oid LookupExplicitNamespace(const char *nspname, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3506,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3509,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3513,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:3515,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:3515,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/namespace.c:3517,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - nspname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3521
      start: 3499
    functionDepth: 1
    functionLinenumber: 3499
    functionLinenumberEnd: 3521
    functionName: LookupCreationNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - strcmp
    - object_aclcheck
    - get_namespace_oid
    - AccessTempTableNamespace
    - aclcheck_error
    linkageType: ''
    returnType: Oid
    signature: Oid LookupCreationNamespace(const char *nspname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3534,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3534,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3535,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3536,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3537,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3541,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3542,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3543,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - oldNspOid
    - nspOid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3544
      start: 3530
    functionDepth: 1
    functionLinenumber: 3530
    functionLinenumberEnd: 3544
    functionName: CheckSetNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - isAnyTempNamespace
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void CheckSetNamespace(Oid oldNspOid, Oid nspOid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:3565,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3570,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3573,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3577,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3583,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3587,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3591,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3592,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3593,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3594,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - names
    - objname_p
    argTypes:
    - List*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3598
      start: 3558
    functionDepth: 2
    functionLinenumber: 3558
    functionLinenumberEnd: 3598
    functionName: QualifiedNameGetCreationNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - ereport
    - errmsg
    - get_namespace_oid
    - AccessTempTableNamespace
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid QualifiedNameGetCreationNamespace(const List *names, char **objname_p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetSysCacheOid1
      Src: /src/postgres/src/backend/catalog/namespace.c:3611,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3612,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3613,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3614,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3616,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - nspname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3619
      start: 3606
    functionDepth: 2
    functionLinenumber: 3606
    functionLinenumberEnd: 3619
    functionName: get_namespace_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 10
    functionsReached:
    - errcode
    - CStringGetDatum
    - ereport
    - GetSysCacheOid1
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid get_namespace_oid(const char *nspname, bool missing_ok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/catalog/namespace.c:3628,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/namespace.c:3630,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3633,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3633,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3636,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3636,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3637,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/namespace.c:3637,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3640,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3640,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3641,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/namespace.c:3641,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3642,1
    - Dst: lthird
      Src: /src/postgres/src/backend/catalog/namespace.c:3642,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3645,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3646,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3647,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3648,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - names
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3653
      start: 3625
    functionDepth: 2
    functionLinenumber: 3625
    functionLinenumberEnd: 3653
    functionName: makeRangeVarFromNameList
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 7
    functionsReached:
    - errcode
    - lthird
    - linitial
    - ereport
    - NameListToString
    - lsecond
    - errmsg
    - makeRangeVar
    - list_length
    - strVal
    linkageType: ''
    returnType: RangeVar
    signature: 'RangeVar *

      makeRangeVarFromNameList(const List *names)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/namespace.c:3671,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:3675,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3677,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3678,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/namespace.c:3680,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/namespace.c:3681,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3681,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/namespace.c:3682,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3683,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:3685,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/catalog/namespace.c:3686,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - names
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3690
      start: 3665
    functionDepth: 3
    functionLinenumber: 3665
    functionLinenumberEnd: 3690
    functionName: NameListToString
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 11
    functionsReached:
    - elog
    - appendStringInfoString
    - initStringInfo
    - list_head
    - lfirst
    - strVal
    - IsA
    - nodeTag
    - appendStringInfoChar
    linkageType: ''
    returnType: char
    signature: 'char *

      NameListToString(const List *names)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:3675,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3677,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3678,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/namespace.c:3680,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/namespace.c:3681,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3681,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/namespace.c:3682,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3683,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:3685,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/catalog/namespace.c:3686,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3687
      start: 3673
    functionDepth: 2
    functionLinenumber: 3673
    functionLinenumberEnd: 3687
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - elog
    - appendStringInfoString
    - lfirst
    - list_head
    - strVal
    - IsA
    - nodeTag
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void foreach(l, names)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/namespace.c:3705,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3709,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3710,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/namespace.c:3711,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/namespace.c:3711,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3711,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:3711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - names
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3715
      start: 3699
    functionDepth: 3
    functionLinenumber: 3699
    functionLinenumberEnd: 3715
    functionName: NameListToQuotedString
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - strVal
    - appendStringInfoString
    - initStringInfo
    - list_head
    - lfirst
    - quote_identifier
    - appendStringInfoChar
    linkageType: ''
    returnType: char
    signature: 'char *

      NameListToQuotedString(const List *names)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3709,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3710,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/namespace.c:3711,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/namespace.c:3711,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3711,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:3711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3712
      start: 3707
    functionDepth: 2
    functionLinenumber: 3707
    functionLinenumberEnd: 3712
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 352
    functionsReached:
    - strVal
    - appendStringInfoString
    - list_head
    - lfirst
    - quote_identifier
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void foreach(l, names)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3726
      start: 3720
    functionDepth: 1
    functionLinenumber: 3720
    functionLinenumberEnd: 3726
    functionName: isTempNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    linkageType: ''
    returnType: bool
    signature: bool isTempNamespace(Oid namespaceId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3735,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3738
      start: 3732
    functionDepth: 1
    functionLinenumber: 3732
    functionLinenumberEnd: 3738
    functionName: isTempToastNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    linkageType: ''
    returnType: bool
    signature: bool isTempToastNamespace(Oid namespaceId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3747,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3751
      start: 3744
    functionDepth: 1
    functionLinenumber: 3744
    functionLinenumberEnd: 3751
    functionName: isTempOrTempToastNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - OidIsValid
    linkageType: ''
    returnType: bool
    signature: bool isTempOrTempToastNamespace(Oid namespaceId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/namespace.c:3765,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3768,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3769,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:3770,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3772
      start: 3758
    functionDepth: 1
    functionLinenumber: 3758
    functionLinenumberEnd: 3772
    functionName: isAnyTempNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 2
    functionsReached:
    - get_namespace_name
    - pfree
    - strncmp
    linkageType: ''
    returnType: bool
    signature: bool isAnyTempNamespace(Oid namespaceId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isTempOrTempToastNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3785,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3788,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3789
      start: 3781
    functionDepth: 2
    functionLinenumber: 3781
    functionLinenumberEnd: 3789
    functionName: isOtherTempNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - isTempOrTempToastNamespace
    - isAnyTempNamespace
    linkageType: ''
    returnType: bool
    signature: bool isOtherTempNamespace(Oid namespaceId)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3806,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3806,1
    - Dst: GetTempNamespaceProcNumber
      Src: /src/postgres/src/backend/catalog/namespace.c:3808,1
    - Dst: ProcNumberGetProc
      Src: /src/postgres/src/backend/catalog/namespace.c:3815,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3829
      start: 3800
    functionDepth: 1
    functionLinenumber: 3800
    functionLinenumberEnd: 3829
    functionName: checkTempNamespaceStatus
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - Assert
    - OidIsValid
    - ProcNumberGetProc
    - GetTempNamespaceProcNumber
    linkageType: ''
    returnType: TempNamespaceStatus
    signature: TempNamespaceStatus checkTempNamespaceStatus(Oid namespaceId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/namespace.c:3844,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3847,1
    - Dst: atoi
      Src: /src/postgres/src/backend/catalog/namespace.c:3848,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3849,1
    - Dst: atoi
      Src: /src/postgres/src/backend/catalog/namespace.c:3850,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:3853,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3855
      start: 3837
    functionDepth: 1
    functionLinenumber: 3837
    functionLinenumberEnd: 3855
    functionName: GetTempNamespaceProcNumber
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - get_namespace_name
    - pfree
    - strncmp
    - atoi
    linkageType: ''
    returnType: ProcNumber
    signature: ProcNumber GetTempNamespaceProcNumber(Oid namespaceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3865,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3867
      start: 3862
    functionDepth: 1
    functionLinenumber: 3862
    functionLinenumberEnd: 3867
    functionName: GetTempToastNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - Assert
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid GetTempToastNamespace(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tempNamespaceId
    - tempToastNamespaceId
    argTypes:
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3882
      start: 3876
    functionDepth: 0
    functionLinenumber: 3876
    functionLinenumberEnd: 3882
    functionName: GetTempNamespaceState
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GetTempNamespaceState(Oid *tempNamespaceId, Oid *tempToastNamespaceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - tempNamespaceId
    - tempToastNamespaceId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3913
      start: 3892
    functionDepth: 1
    functionLinenumber: 3892
    functionLinenumberEnd: 3913
    functionName: SetTempNamespaceState
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void SetTempNamespaceState(Oid tempNamespaceId, Oid tempToastNamespaceId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3930,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:3932,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/catalog/namespace.c:3934,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/namespace.c:3935,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3936,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3938,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3942,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3942,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/catalog/namespace.c:3945,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:3950,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - context
    argTypes:
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3953
      start: 3923
    functionDepth: 5
    functionLinenumber: 3923
    functionLinenumberEnd: 3953
    functionName: GetSearchPathMatcher
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - Assert
    - recomputeNamespacePath
    - MemoryContextSwitchTo
    - linitial_oid
    - list_copy
    - list_delete_first
    linkageType: ''
    returnType: SearchPathMatcher
    signature: 'SearchPathMatcher *

      GetSearchPathMatcher(MemoryContext context)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/namespace.c:3965,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/namespace.c:3966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - SearchPathMatcher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3972
      start: 3960
    functionDepth: 5
    functionLinenumber: 3960
    functionLinenumberEnd: 3972
    functionName: CopySearchPathMatcher
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - list_copy
    - palloc_object
    linkageType: ''
    returnType: SearchPathMatcher
    signature: 'SearchPathMatcher *

      CopySearchPathMatcher(SearchPathMatcher *path)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3988,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3995,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4000,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/namespace.c:4001,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4008,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/namespace.c:4009,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4014,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/namespace.c:4017,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4019,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4019,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/namespace.c:4020,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 1
    argNames:
    - path
    argTypes:
    - SearchPathMatcher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4034
      start: 3982
    functionDepth: 2
    functionLinenumber: 3982
    functionLinenumberEnd: 4034
    functionName: SearchPathMatchesCurrentEnvironment
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - foreach
    - recomputeNamespacePath
    - lnext
    - list_head
    - lfirst_oid
    linkageType: ''
    returnType: bool
    signature: bool SearchPathMatchesCurrentEnvironment(SearchPathMatcher *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/catalog/namespace.c:4047,1
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:4053,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:4058,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4059,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:4062,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4063,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4069,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4073,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:4078,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4079,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4086,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4087,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4088,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:4089,1
    - Dst: GetDatabaseEncodingName
      Src: /src/postgres/src/backend/catalog/namespace.c:4089,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - collname
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4091
      start: 4042
    functionDepth: 4
    functionLinenumber: 4042
    functionLinenumberEnd: 4091
    functionName: get_collation_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - LookupExplicitNamespace
    - errcode
    - GetDatabaseEncoding
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - ereport
    - NameListToString
    - errmsg
    - lookup_collation
    - OidIsValid
    - lfirst_oid
    - GetDatabaseEncodingName
    linkageType: ''
    returnType: Oid
    signature: Oid get_collation_oid(List *collname, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4073,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:4078,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4079,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4081
      start: 4071
    functionDepth: 3
    functionLinenumber: 4071
    functionLinenumberEnd: 4081
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 353
    functionsReached:
    - OidIsValid
    - lfirst_oid
    - lookup_collation
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:4106,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:4111,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4112,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:4115,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4116,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4117,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4122,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4126,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:4131,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4132,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4133,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4134,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4141,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4142,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4143,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:4144,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - conname
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4146
      start: 4096
    functionDepth: 4
    functionLinenumber: 4096
    functionLinenumberEnd: 4146
    functionName: get_conversion_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - LookupExplicitNamespace
    - lfirst_oid
    - errcode
    - DeconstructQualifiedName
    - recomputeNamespacePath
    - ereport
    - NameListToString
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - GetSysCacheOid2
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_conversion_oid(List *conname, bool missing_ok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4126,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:4131,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4132,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4133,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4136
      start: 4124
    functionDepth: 1
    functionLinenumber: 4124
    functionLinenumberEnd: 4136
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 353
    functionsReached:
    - ObjectIdGetDatum
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4157,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4161,1
    - Dst: FindDefaultConversion
      Src: /src/postgres/src/backend/catalog/namespace.c:4166,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4167,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - for_encoding
    - to_encoding
    argTypes:
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4173
      start: 4151
    functionDepth: 1
    functionLinenumber: 4151
    functionLinenumberEnd: 4173
    functionName: FindDefaultConversionProc
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - OidIsValid
    - recomputeNamespacePath
    - FindDefaultConversion
    - lfirst_oid
    linkageType: ''
    returnType: Oid
    signature: Oid FindDefaultConversionProc(int32 for_encoding, int32 to_encoding)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4161,1
    - Dst: FindDefaultConversion
      Src: /src/postgres/src/backend/catalog/namespace.c:4166,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4167,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4169
      start: 4159
    functionDepth: 1
    functionLinenumber: 4159
    functionLinenumberEnd: 4169
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 353
    functionsReached:
    - OidIsValid
    - lfirst_oid
    - FindDefaultConversion
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/namespace.c:4188,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/catalog/namespace.c:4191,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:4195,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:4208,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:4211,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:4216,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4216,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4217,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:4221,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:4221,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4222,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:4223,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4224,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4225,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4227,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:4230,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4233,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4234,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4245,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4246,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4247,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4249,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:4253,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - searchPath
    - roleid
    - temp_missing
    argTypes:
    - char*
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4257
      start: 4178
    functionDepth: 6
    functionLinenumber: 4178
    functionLinenumberEnd: 4257
    functionName: preprocessNamespacePath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - elog
    - SearchSysCache1
    - strcmp
    - list_free
    - HeapTupleIsValid
    - pfree
    - OidIsValid
    - pstrdup
    - object_aclcheck
    - ReleaseSysCache
    - lfirst
    - NameStr
    - GETSTRUCT
    - SplitIdentifierString
    - get_namespace_oid
    - ObjectIdGetDatum
    - lappend_oid
    linkageType: ''
    returnType: List
    signature: "List *\npreprocessNamespacePath(const char *searchPath, Oid roleid,\n\t\t\t\t\t\tbool
      *temp_missing)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:4208,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:4211,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:4216,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4216,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4217,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:4221,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:4221,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4222,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:4223,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4224,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4225,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4227,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:4230,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4233,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4234,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4245,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4246,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4247,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4249,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4251
      start: 4206
    functionDepth: 6
    functionLinenumber: 4206
    functionLinenumberEnd: 4251
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 353
    functionsReached:
    - SearchSysCache1
    - strcmp
    - HeapTupleIsValid
    - object_aclcheck
    - ReleaseSysCache
    - lfirst
    - NameStr
    - GETSTRUCT
    - get_namespace_oid
    - OidIsValid
    - ObjectIdGetDatum
    - lappend_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, namelist)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4277,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4279,1
    - Dst: InvokeNamespaceSearchHook
      Src: /src/postgres/src/backend/catalog/namespace.c:4281,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4282,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4294,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4301,1
    - Dst: lcons_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4302,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4304,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4305,1
    - Dst: lcons_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - oidlist
    - firstNS
    argTypes:
    - List*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4309
      start: 4269
    functionDepth: 6
    functionLinenumber: 4269
    functionLinenumberEnd: 4309
    functionName: finalNamespacePath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - lcons_oid
    - OidIsValid
    - linitial_oid
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    - InvokeNamespaceSearchHook
    linkageType: ''
    returnType: List
    signature: 'List *

      finalNamespacePath(List *oidlist, Oid *firstNS)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4277,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4279,1
    - Dst: InvokeNamespaceSearchHook
      Src: /src/postgres/src/backend/catalog/namespace.c:4281,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4284
      start: 4275
    functionDepth: 6
    functionLinenumber: 4275
    functionLinenumberEnd: 4284
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 353
    functionsReached:
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    - InvokeNamespaceSearchHook
    linkageType: ''
    returnType: void
    signature: void foreach(lc, oidlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: spcache_init
      Src: /src/postgres/src/backend/catalog/namespace.c:4321,1
    - Dst: spcache_insert
      Src: /src/postgres/src/backend/catalog/namespace.c:4323,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4332,1
    - Dst: preprocessNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4333,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4335,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4347,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4350,1
    - Dst: finalNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4351,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4353,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - searchPath
    - roleid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4365
      start: 4315
    functionDepth: 7
    functionLinenumber: 4315
    functionLinenumberEnd: 4365
    functionName: cachedNamespacePath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - list_free
    - preprocessNamespacePath
    - MemoryContextSwitchTo
    - spcache_init
    - finalNamespacePath
    - spcache_insert
    linkageType: ''
    returnType: SearchPathCacheEntry
    signature: 'SearchPathCacheEntry *

      cachedNamespacePath(const char *searchPath, Oid roleid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:4373,1
    - Dst: cachedNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4381,1
    - Dst: equal
      Src: /src/postgres/src/backend/catalog/namespace.c:4385,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4397,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/namespace.c:4398,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4399,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4402,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4423
      start: 4370
    functionDepth: 8
    functionLinenumber: 4370
    functionLinenumberEnd: 4423
    functionName: recomputeNamespacePath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 34
    functionsReached:
    - GetUserId
    - list_free
    - MemoryContextSwitchTo
    - list_copy
    - equal
    - cachedNamespacePath
    linkageType: ''
    returnType: void
    signature: void recomputeNamespacePath(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4447,1
    - Dst: InitTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:4454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - force
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4455
      start: 4433
    functionDepth: 1
    functionLinenumber: 4433
    functionLinenumberEnd: 4455
    functionName: AccessTempTableNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 3
    functionsReached:
    - OidIsValid
    - InitTempTableNamespace
    linkageType: ''
    returnType: void
    signature: void AccessTempTableNamespace(bool force)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:4468,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4468,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4480,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:4480,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4482,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4483,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4484,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:4485,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/catalog/namespace.c:4497,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4498,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4499,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4500,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/catalog/namespace.c:4503,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4504,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4505,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4506,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/namespace.c:4508,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4510,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4511,1
    - Dst: NamespaceCreate
      Src: /src/postgres/src/backend/catalog/namespace.c:4521,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/namespace.c:4524,1
    - Dst: RemoveTempRelations
      Src: /src/postgres/src/backend/catalog/namespace.c:4532,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/namespace.c:4540,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4543,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4544,1
    - Dst: NamespaceCreate
      Src: /src/postgres/src/backend/catalog/namespace.c:4546,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/namespace.c:4549,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:4573,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/backend/catalog/namespace.c:4574,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4578
      start: 4461
    functionDepth: 3
    functionLinenumber: 4461
    functionLinenumberEnd: 4578
    functionName: InitTempTableNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - GetUserId
    - errcode
    - Assert
    - NamespaceCreate
    - ereport
    - CommandCounterIncrement
    - object_aclcheck
    - get_database_name
    - IsParallelWorker
    - errmsg
    - get_namespace_oid
    - RemoveTempRelations
    - OidIsValid
    - RecoveryInProgress
    - GetCurrentSubTransactionId
    - snprintf
    linkageType: ''
    returnType: void
    signature: void InitTempTableNamespace(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/catalog/namespace.c:4597,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - isCommit
    - parallel
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4619
      start: 4583
    functionDepth: 1
    functionLinenumber: 4583
    functionLinenumberEnd: 4619
    functionName: AtEOXact_Namespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 3
    functionsReached:
    - before_shmem_exit
    linkageType: ''
    returnType: void
    signature: void AtEOXact_Namespace(bool isCommit, bool parallel)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - isCommit
    - mySubid
    - parentSubid
    argTypes:
    - bool
    - SubTransactionId
    - SubTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4659
      start: 4629
    functionDepth: 0
    functionLinenumber: 4629
    functionLinenumberEnd: 4659
    functionName: AtEOSubXact_Namespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void AtEOSubXact_Namespace(bool isCommit, SubTransactionId mySubid,\n\t\t\t\t\t
      \ SubTransactionId parentSubid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: performDeletion
      Src: /src/postgres/src/backend/catalog/namespace.c:4685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tempNamespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4690
      start: 4669
    functionDepth: 1
    functionLinenumber: 4669
    functionLinenumberEnd: 4690
    functionName: RemoveTempRelations
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - performDeletion
    linkageType: ''
    returnType: void
    signature: void RemoveTempRelations(Oid tempNamespaceId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4698,1
    - Dst: AbortOutOfAnyTransaction
      Src: /src/postgres/src/backend/catalog/namespace.c:4701,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/catalog/namespace.c:4702,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/catalog/namespace.c:4703,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/catalog/namespace.c:4703,1
    - Dst: RemoveTempRelations
      Src: /src/postgres/src/backend/catalog/namespace.c:4705,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/catalog/namespace.c:4707,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/catalog/namespace.c:4708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4710
      start: 4695
    functionDepth: 6
    functionLinenumber: 4695
    functionLinenumberEnd: 4710
    functionName: RemoveTempRelationsCallback
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - CommitTransactionCommand
    - StartTransactionCommand
    - GetTransactionSnapshot
    - RemoveTempRelations
    - OidIsValid
    - AbortOutOfAnyTransaction
    - PushActiveSnapshot
    linkageType: ''
    returnType: void
    signature: void RemoveTempRelationsCallback(int code, Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4718,1
    - Dst: RemoveTempRelations
      Src: /src/postgres/src/backend/catalog/namespace.c:4719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4720
      start: 4715
    functionDepth: 2
    functionLinenumber: 4715
    functionLinenumberEnd: 4720
    functionName: ResetTempTableNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - RemoveTempRelations
    linkageType: ''
    returnType: void
    signature: void ResetTempTableNamespace(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: spcache_init
      Src: /src/postgres/src/backend/catalog/namespace.c:4750,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:4752,1
    - Dst: spcache_lookup
      Src: /src/postgres/src/backend/catalog/namespace.c:4754,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/namespace.c:4762,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/catalog/namespace.c:4765,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/catalog/namespace.c:4768,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:4769,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4770,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:4773,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4774,1
    - Dst: spcache_insert
      Src: /src/postgres/src/backend/catalog/namespace.c:4778,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4781
      start: 4728
    functionDepth: 4
    functionLinenumber: 4728
    functionLinenumberEnd: 4781
    functionName: check_search_path
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - spcache_lookup
    - GetUserId
    - list_free
    - pfree
    - pstrdup
    - spcache_init
    - spcache_insert
    - SplitIdentifierString
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_search_path(char **newval, void **extra, GucSource source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:4788,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/namespace.c:4788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4800
      start: 4784
    functionDepth: 1
    functionLinenumber: 4784
    functionLinenumberEnd: 4800
    functionName: assign_search_path
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsBootstrapProcessingMode
    linkageType: ''
    returnType: void
    signature: void assign_search_path(const char *newval, void *extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/namespace.c:4810,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4818,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4819,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4820,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:4824,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/catalog/namespace.c:4838,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/catalog/namespace.c:4843,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/catalog/namespace.c:4848,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/catalog/namespace.c:4853,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4861
      start: 4807
    functionDepth: 1
    functionLinenumber: 4807
    functionLinenumberEnd: 4861
    functionName: InitializeSearchPath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - MemoryContextSwitchTo
    - IsBootstrapProcessingMode
    - list_make1_oid
    - CacheRegisterSyscacheCallback
    linkageType: ''
    returnType: void
    signature: void InitializeSearchPath(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - SysCacheIdentifier
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4877
      start: 4867
    functionDepth: 0
    functionLinenumber: 4867
    functionLinenumberEnd: 4877
    functionName: InvalidationCallback
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InvalidationCallback(Datum arg, SysCacheIdentifier cacheid, uint32
      hashvalue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4895,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:4906,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4907,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/namespace.c:4910,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4913,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/catalog/namespace.c:4914,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - includeImplicit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4918
      start: 4890
    functionDepth: 9
    functionLinenumber: 4890
    functionLinenumberEnd: 4918
    functionName: fetch_search_path
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - recomputeNamespacePath
    - linitial_oid
    - list_delete_first
    - list_copy
    - AccessTempTableNamespace
    linkageType: ''
    returnType: List
    signature: 'List *

      fetch_search_path(bool includeImplicit)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4936,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - sarray
    - sarray_len
    argTypes:
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4951
      start: 4930
    functionDepth: 9
    functionLinenumber: 4930
    functionLinenumberEnd: 4951
    functionName: fetch_search_path_array
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - recomputeNamespacePath
    - lfirst_oid
    linkageType: ''
    returnType: int
    signature: int fetch_search_path_array(Oid *sarray, int sarray_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4948
      start: 4938
    functionDepth: 1
    functionLinenumber: 4938
    functionLinenumberEnd: 4948
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 353
    functionsReached:
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:4968,1
    - Dst: RelationIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4972,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:4975,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:4976,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4977
      start: 4965
    functionDepth: 4
    functionLinenumber: 4965
    functionLinenumberEnd: 4977
    functionName: pg_table_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - RelationIsVisibleExt
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_table_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:4982,1
    - Dst: TypeIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4986,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:4989,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:4990,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4991
      start: 4979
    functionDepth: 4
    functionLinenumber: 4979
    functionLinenumberEnd: 4991
    functionName: pg_type_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_GETARG_OID
    - TypeIsVisibleExt
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_type_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:4996,1
    - Dst: FunctionIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5000,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5003,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5004,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5005
      start: 4993
    functionDepth: 4
    functionLinenumber: 4993
    functionLinenumberEnd: 5005
    functionName: pg_function_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_GETARG_OID
    - FunctionIsVisibleExt
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_function_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5010,1
    - Dst: OperatorIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5014,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5017,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5018,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5019
      start: 5007
    functionDepth: 4
    functionLinenumber: 5007
    functionLinenumberEnd: 5019
    functionName: pg_operator_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - OperatorIsVisibleExt
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_operator_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5024,1
    - Dst: OpclassIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5028,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5031,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5032,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5033
      start: 5021
    functionDepth: 4
    functionLinenumber: 5021
    functionLinenumberEnd: 5033
    functionName: pg_opclass_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - OpclassIsVisibleExt
    - PG_RETURN_NULL
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_opclass_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5038,1
    - Dst: OpfamilyIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5042,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5045,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5046,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5047
      start: 5035
    functionDepth: 4
    functionLinenumber: 5035
    functionLinenumberEnd: 5047
    functionName: pg_opfamily_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - OpfamilyIsVisibleExt
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_opfamily_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5052,1
    - Dst: CollationIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5056,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5059,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5060,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5061
      start: 5049
    functionDepth: 5
    functionLinenumber: 5049
    functionLinenumberEnd: 5061
    functionName: pg_collation_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - CollationIsVisibleExt
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_collation_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5066,1
    - Dst: ConversionIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5070,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5073,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5074,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5075
      start: 5063
    functionDepth: 4
    functionLinenumber: 5063
    functionLinenumberEnd: 5075
    functionName: pg_conversion_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - ConversionIsVisibleExt
    - PG_RETURN_NULL
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_conversion_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5080,1
    - Dst: StatisticsObjIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5084,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5087,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5088,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5089
      start: 5077
    functionDepth: 4
    functionLinenumber: 5077
    functionLinenumberEnd: 5089
    functionName: pg_statistics_obj_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - StatisticsObjIsVisibleExt
    linkageType: ''
    returnType: Datum
    signature: Datum pg_statistics_obj_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5094,1
    - Dst: TSParserIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5098,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5101,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5103
      start: 5091
    functionDepth: 4
    functionLinenumber: 5091
    functionLinenumberEnd: 5103
    functionName: pg_ts_parser_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - TSParserIsVisibleExt
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ts_parser_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5108,1
    - Dst: TSDictionaryIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5112,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5115,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5117
      start: 5105
    functionDepth: 4
    functionLinenumber: 5105
    functionLinenumberEnd: 5117
    functionName: pg_ts_dict_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - TSDictionaryIsVisibleExt
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ts_dict_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5122,1
    - Dst: TSTemplateIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5126,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5129,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5131
      start: 5119
    functionDepth: 4
    functionLinenumber: 5119
    functionLinenumberEnd: 5131
    functionName: pg_ts_template_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_GETARG_OID
    - TSTemplateIsVisibleExt
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ts_template_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5136,1
    - Dst: TSConfigIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5140,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5143,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5145
      start: 5133
    functionDepth: 4
    functionLinenumber: 5133
    functionLinenumberEnd: 5145
    functionName: pg_ts_config_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - TSConfigIsVisibleExt
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ts_config_is_visible(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5151
      start: 5147
    functionDepth: 1
    functionLinenumber: 5147
    functionLinenumberEnd: 5151
    functionName: pg_my_temp_schema
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    linkageType: ''
    returnType: Datum
    signature: Datum pg_my_temp_schema(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/namespace.c:5156,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5158,1
    - Dst: isOtherTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:5158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5159
      start: 5153
    functionDepth: 3
    functionLinenumber: 5153
    functionLinenumberEnd: 5159
    functionName: pg_is_other_temp_schema
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - isOtherTempNamespace
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_is_other_temp_schema(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_range.c:51,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_range.c:53,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:55,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:56,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:57,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:58,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:59,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:60,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:61,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:62,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:63,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:64,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:65,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:66,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_range.c:68,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_range.c:68,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_range.c:70,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_range.c:71,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_range.c:74,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:76,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:78,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:79,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:81,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:82,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_range.c:84,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:86,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:87,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_range.c:90,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:92,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:93,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_range.c:96,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:98,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:99,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_range.c:102,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_range.c:103,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_range.c:109,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_range.c:111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 43
    argCount: 12
    argNames:
    - rangeTypeOid
    - rangeSubType
    - rangeCollation
    - rangeSubOpclass
    - rangeCanonical
    - rangeSubDiff
    - multirangeTypeOid
    - rangeConstruct2
    - rangeConstruct3
    - mltrngConstruct0
    - mltrngConstruct1
    - mltrngConstruct2
    argTypes:
    - Oid
    - Oid
    - Oid
    - Oid
    - RegProcedure
    - RegProcedure
    - Oid
    - RegProcedure
    - RegProcedure
    - RegProcedure
    - RegProcedure
    - RegProcedure
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 35
    functionDepth: 6
    functionLinenumber: 35
    functionLinenumberEnd: 112
    functionName: RangeCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_range.c
    functionUses: 0
    functionsReached:
    - heap_freetuple
    - record_object_address_dependencies
    - RelationGetDescr
    - heap_form_tuple
    - recordDependencyOn
    - table_open
    - add_exact_object_address
    - memset
    - new_object_addresses
    - ObjectAddressSet
    - free_object_addresses
    - OidIsValid
    - ObjectIdGetDatum
    - table_close
    - CatalogTupleInsert
    linkageType: ''
    returnType: void
    signature: "void RangeCreate(Oid rangeTypeOid, Oid rangeSubType, Oid rangeCollation,\n\t\t\tOid
      rangeSubOpclass, RegProcedure rangeCanonical,\n\t\t\tRegProcedure rangeSubDiff,
      Oid multirangeTypeOid,\n\t\t\tRegProcedure rangeConstruct2, RegProcedure rangeConstruct3,\n\t\t\tRegProcedure
      mltrngConstruct0, RegProcedure mltrngConstruct1, RegProcedure mltrngConstruct2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_range.c:127,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_range.c:129,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:132,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_range.c:134,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_range.c:137,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_range.c:137,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_range.c:139,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_range.c:142,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_range.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - rangeTypeOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 119
    functionDepth: 4
    functionLinenumber: 119
    functionLinenumberEnd: 145
    functionName: RangeDelete
    functionSourceFile: /src/postgres/src/backend/catalog/pg_range.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void RangeDelete(Oid rangeTypeOid)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:29,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:31,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:33,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:35,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:37,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:39,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:41,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:43,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:45,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:47,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_class.c:49,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_class.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 1
    argNames:
    - relkind
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 54
    functionName: errdetail_relkind_not_supported
    functionSourceFile: /src/postgres/src/backend/catalog/pg_class.c
    functionUses: 5
    functionsReached:
    - elog
    - errdetail
    linkageType: ''
    returnType: int
    signature: int errdetail_relkind_not_supported(char relkind)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_type.c:69,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_type.c:74,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_type.c:94,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:95,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:96,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:97,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:98,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:99,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:100,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:101,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:102,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:103,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:104,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:105,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:106,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:107,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:108,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:109,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:110,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:111,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:112,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:113,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:114,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:115,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:116,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:117,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:118,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:119,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:120,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:121,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:122,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:130,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:131,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:133,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_type.c:140,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:144,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_type.c:149,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_type.c:154,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/pg_type.c:159,1
    - Dst: GenerateTypeDependencies
      Src: /src/postgres/src/backend/catalog/pg_type.c:160,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_type.c:171,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:173,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_type.c:178,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_type.c:179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 58
    argCount: 3
    argNames:
    - typeName
    - typeNamespace
    - ownerId
    argTypes:
    - char*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 56
    functionDepth: 6
    functionLinenumber: 56
    functionLinenumberEnd: 182
    functionName: TypeShellMake
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 0
    functionsReached:
    - errcode
    - heap_form_tuple
    - table_close
    - CatalogTupleInsert
    - GenerateTypeDependencies
    - heap_freetuple
    - Assert
    - Int32GetDatum
    - table_open
    - errmsg
    - OidIsValid
    - CharGetDatum
    - ObjectIdGetDatum
    - InvokeObjectPostCreateHook
    - GetNewOidWithIndex
    - ereport
    - namestrcpy
    - IsBootstrapProcessingMode
    - Int16GetDatum
    - NameGetDatum
    - ObjectAddressSet
    - BoolGetDatum
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress TypeShellMake(const char *typeName, Oid typeNamespace,
      Oid ownerId)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:251,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:252,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:267,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:269,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:283,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:284,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:285,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:291,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:293,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:297,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:298,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:299,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:307,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:309,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:313,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:314,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:315,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:321,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:323,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:335,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_type.c:350,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:351,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:352,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:353,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:354,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:355,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:356,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:357,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:358,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:359,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:360,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:361,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:362,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:363,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:364,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:365,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:366,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:367,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:368,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:369,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:370,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:371,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:372,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:373,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:374,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:375,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:376,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:377,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:378,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:385,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:393,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/pg_type.c:403,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:406,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_type.c:416,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_type.c:418,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:419,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:420,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:421,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_type.c:423,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:430,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:432,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_type.c:438,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:441,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_type.c:442,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_type.c:449,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_type.c:450,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_type.c:455,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:464,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:469,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:470,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:471,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:472,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_type.c:479,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:483,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_type.c:485,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_type.c:485,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_type.c:488,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/pg_type.c:494,1
    - Dst: GenerateTypeDependencies
      Src: /src/postgres/src/backend/catalog/pg_type.c:495,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/pg_type.c:498,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_type.c:508,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:510,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_type.c:515,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 111
    argCount: 32
    argNames:
    - newTypeOid
    - typeName
    - typeNamespace
    - relationOid
    - relationKind
    - ownerId
    - internalSize
    - typeType
    - typeCategory
    - typePreferred
    - typDelim
    - inputProcedure
    - outputProcedure
    - receiveProcedure
    - sendProcedure
    - typmodinProcedure
    - typmodoutProcedure
    - analyzeProcedure
    - subscriptProcedure
    - elementType
    - isImplicitArray
    - arrayType
    - baseType
    - defaultTypeValue
    - defaultTypeBin
    - passedByValue
    - alignment
    - storage
    - typeMod
    - typNDims
    - typeNotNull
    - typeCollation
    argTypes:
    - Oid
    - char*
    - Oid
    - Oid
    - char
    - Oid
    - int16
    - char
    - char
    - bool
    - char
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    - bool
    - Oid
    - Oid
    - char*
    - char*
    - bool
    - char
    - char
    - int32
    - int32
    - bool
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 194
    functionDepth: 7
    functionLinenumber: 194
    functionLinenumberEnd: 518
    functionName: TypeCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 0
    functionsReached:
    - errcode
    - heap_form_tuple
    - get_user_default_acl
    - table_close
    - CatalogTupleInsert
    - GenerateTypeDependencies
    - elog
    - Int32GetDatum
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - errmsg
    - PointerGetDatum
    - CharGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - InvokeObjectPostCreateHook
    - GetNewOidWithIndex
    - CStringGetDatum
    - ereport
    - namestrcpy
    - stringToNode
    - IsBootstrapProcessingMode
    - GETSTRUCT
    - aclcheck_error
    - Int16GetDatum
    - heap_modify_tuple
    - NameGetDatum
    - CatalogTupleUpdate
    - CStringGetTextDatum
    - SearchSysCacheCopy2
    - ObjectAddressSet
    - BoolGetDatum
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress TypeCreate(Oid newTypeOid,\n\t\t   const char *typeName,\n\t\t
      \  Oid typeNamespace,\n\t\t   Oid relationOid,\t\t/* only for relation rowtypes
      */\n\t\t   char relationKind,\t/* ditto */\n\t\t   Oid ownerId,\n\t\t   int16
      internalSize,\n\t\t   char typeType,\n\t\t   char typeCategory,\n\t\t   bool
      typePreferred,\n\t\t   char typDelim,\n\t\t   Oid inputProcedure,\n\t\t   Oid
      outputProcedure,\n\t\t   Oid receiveProcedure,\n\t\t   Oid sendProcedure,\n\t\t
      \  Oid typmodinProcedure,\n\t\t   Oid typmodoutProcedure,\n\t\t   Oid analyzeProcedure,\n\t\t
      \  Oid subscriptProcedure,\n\t\t   Oid elementType,\n\t\t   bool isImplicitArray,\n\t\t
      \  Oid arrayType,\n\t\t   Oid baseType,\n\t\t   const char *defaultTypeValue,\t/*
      human-readable rep */\n\t\t   char *defaultTypeBin,\t/* cooked rep */\n\t\t
      \  bool passedByValue,\n\t\t   char alignment,\n\t\t   char storage,\n\t\t   int32
      typeMod,\n\t\t   int32 typNDims,\t\t/* Array dimensions for baseType */\n\t\t
      \  bool typeNotNull,\n\t\t   Oid typeCollation)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_type.c:565,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_type.c:576,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_type.c:577,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/pg_type.c:579,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_type.c:579,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_type.c:584,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_type.c:585,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/pg_type.c:587,1
    - Dst: deleteDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/pg_type.c:593,1
    - Dst: deleteSharedDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/pg_type.c:594,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:597,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_type.c:609,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:613,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:615,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/pg_type.c:620,1
    - Dst: recordDependencyOnNewAcl
      Src: /src/postgres/src/backend/catalog/pg_type.c:623,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_type.c:635,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:638,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:640,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:641,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:644,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:646,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:647,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:650,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:652,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:653,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:656,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:658,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:659,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:662,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:664,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:665,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:668,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:670,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:671,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:674,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:676,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:677,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:680,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:682,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:683,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:687,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:689,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:690,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:697,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:700,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:701,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_type.c:704,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_type.c:705,1
    - Dst: recordDependencyOnExpr
      Src: /src/postgres/src/backend/catalog/pg_type.c:709,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:720,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:722,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_type.c:725,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_type.c:727,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:735,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:737,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_type.c:738,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 81
    argCount: 9
    argNames:
    - typeTuple
    - typeCatalog
    - defaultExpr
    - typacl
    - relationKind
    - isImplicitArray
    - isDependentType
    - makeExtensionDep
    - rebuild
    argTypes:
    - HeapTuple
    - Relation
    - Node*
    - void*
    - char
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 554
    functionDepth: 6
    functionLinenumber: 554
    functionLinenumberEnd: 751
    functionName: GenerateTypeDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 2
    functionsReached:
    - deleteDependencyRecordsFor
    - recordDependencyOn
    - recordDependencyOnCurrentExtension
    - RelationGetDescr
    - recordDependencyOnOwner
    - new_object_addresses
    - OidIsValid
    - TextDatumGetCString
    - record_object_address_dependencies
    - recordDependencyOnExpr
    - heap_getattr
    - stringToNode
    - GETSTRUCT
    - free_object_addresses
    - DatumGetAclPCopy
    - deleteSharedDependencyRecordsFor
    - recordDependencyOnNewAcl
    - add_exact_object_address
    - ObjectAddressSet
    linkageType: ''
    returnType: void
    signature: "void GenerateTypeDependencies(HeapTuple typeTuple,\n\t\t\t\t\t\t Relation
      typeCatalog,\n\t\t\t\t\t\t Node *defaultExpr,\n\t\t\t\t\t\t void *typacl,\n\t\t\t\t\t\t
      char relationKind, /* only for relation rowtypes */\n\t\t\t\t\t\t bool isImplicitArray,\n\t\t\t\t\t\t
      bool isDependentType,\n\t\t\t\t\t\t bool makeExtensionDep,\n\t\t\t\t\t\t bool
      rebuild)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_type.c:771,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_type.c:773,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:773,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:774,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_type.c:775,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_type.c:776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_type.c:779,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/pg_type.c:784,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:785,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:786,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:795,1
    - Dst: get_typisdefined
      Src: /src/postgres/src/backend/catalog/pg_type.c:797,1
    - Dst: moveArrayTypeName
      Src: /src/postgres/src/backend/catalog/pg_type.c:798,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:801,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:802,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:803,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_type.c:807,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_type.c:809,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/catalog/pg_type.c:811,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_type.c:813,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_type.c:814,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:821,1
    - Dst: makeArrayTypeName
      Src: /src/postgres/src/backend/catalog/pg_type.c:823,1
    - Dst: RenameTypeInternal
      Src: /src/postgres/src/backend/catalog/pg_type.c:825,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_type.c:826,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - typeOid
    - newTypeName
    - typeNamespace
    argTypes:
    - Oid
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 762
    functionDepth: 3
    functionLinenumber: 762
    functionLinenumberEnd: 828
    functionName: RenameTypeInternal
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 1
    functionsReached:
    - get_typisdefined
    - errcode
    - table_close
    - elog
    - RenameTypeInternal
    - heap_freetuple
    - HeapTupleIsValid
    - Assert
    - pfree
    - table_open
    - moveArrayTypeName
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - makeArrayTypeName
    - CStringGetDatum
    - ereport
    - namestrcpy
    - SearchSysCacheCopy1
    - GETSTRUCT
    - GetSysCacheOid2
    - InvokeObjectPostAlterHook
    - CatalogTupleUpdate
    linkageType: ''
    returnType: void
    signature: void RenameTypeInternal(Oid typeOid, const char *newTypeName, Oid typeNamespace)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeObjectName
      Src: /src/postgres/src/backend/catalog/pg_type.c:859,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_type.c:863,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:864,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:865,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_type.c:869,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/pg_type.c:870,1
    - Dst: makeObjectName
      Src: /src/postgres/src/backend/catalog/pg_type.c:871,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - typeName
    - typeNamespace
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 837
    functionDepth: 2
    functionLinenumber: 837
    functionLinenumberEnd: 875
    functionName: makeArrayTypeName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 1
    functionsReached:
    - makeObjectName
    - SearchSysCacheExists2
    - CStringGetDatum
    - pfree
    - ObjectIdGetDatum
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      makeArrayTypeName(const char *typeName, Oid typeNamespace)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_typisdefined
      Src: /src/postgres/src/backend/catalog/pg_type.c:909,1
    - Dst: get_element_type
      Src: /src/postgres/src/backend/catalog/pg_type.c:913,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:914,1
    - Dst: get_array_type
      Src: /src/postgres/src/backend/catalog/pg_type.c:915,1
    - Dst: makeArrayTypeName
      Src: /src/postgres/src/backend/catalog/pg_type.c:924,1
    - Dst: RenameTypeInternal
      Src: /src/postgres/src/backend/catalog/pg_type.c:927,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_type.c:933,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_type.c:935,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - typeOid
    - typeName
    - typeNamespace
    argTypes:
    - Oid
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 902
    functionDepth: 4
    functionLinenumber: 902
    functionLinenumberEnd: 938
    functionName: moveArrayTypeName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 1
    functionsReached:
    - get_typisdefined
    - get_element_type
    - get_array_type
    - RenameTypeInternal
    - pfree
    - CommandCounterIncrement
    - OidIsValid
    - makeArrayTypeName
    linkageType: ''
    returnType: bool
    signature: bool moveArrayTypeName(Oid typeOid, const char *typeName, Oid typeNamespace)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/postgres/src/backend/catalog/pg_type.c:957,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/catalog/pg_type.c:960,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/pg_type.c:962,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/pg_type.c:965,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/catalog/pg_type.c:965,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/catalog/pg_type.c:968,1
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_type.c:968,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_type.c:970,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:971,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:972,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:973,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:974,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:975,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_type.c:976,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_type.c:977,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_type.c:979,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - rangeTypeName
    - typeNamespace
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 947
    functionDepth: 2
    functionLinenumber: 947
    functionLinenumberEnd: 980
    functionName: makeMultirangeTypeName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 0
    functionsReached:
    - errcode
    - SearchSysCacheExists2
    - CStringGetDatum
    - psprintf
    - pstrdup
    - ereport
    - strstr
    - pg_mbcliplen
    - pnstrdup
    - errhint
    - strlen
    - errmsg
    - errdetail
    - ObjectIdGetDatum
    linkageType: ''
    returnType: char
    signature: 'char *

      makeMultirangeTypeName(const char *rangeTypeName, Oid typeNamespace)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:58,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:61,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:61,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:62,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:63,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:64,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:67,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:72,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:82,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:84,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:85,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:86,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:87,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:89,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:94,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:96,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:97,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:97,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:99,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:107,1
    - Dst: recordDependencyOnNewAcl
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:110,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:114,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_namespace.c:117,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 3
    argNames:
    - nspName
    - ownerId
    - isTemp
    argTypes:
    - char*
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 42
    functionDepth: 6
    functionLinenumber: 42
    functionLinenumberEnd: 120
    functionName: NamespaceCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_namespace.c
    functionUses: 1
    functionsReached:
    - errcode
    - heap_form_tuple
    - get_user_default_acl
    - table_close
    - CatalogTupleInsert
    - elog
    - recordDependencyOnCurrentExtension
    - Assert
    - recordDependencyOnOwner
    - table_open
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - InvokeObjectPostCreateHook
    - GetNewOidWithIndex
    - ereport
    - namestrcpy
    - SearchSysCacheExists1
    - NameGetDatum
    - recordDependencyOnNewAcl
    linkageType: ''
    returnType: Oid
    signature: Oid NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_GUC_name_for_parameter_acl
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:42,1
    - Dst: GetSysCacheOid1
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:45,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:46,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:46,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:48,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:49,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:50,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:51,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - parameter
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 56
    functionName: ParameterAclLookup
    functionSourceFile: /src/postgres/src/backend/catalog/pg_parameter_acl.c
    functionUses: 1
    functionsReached:
    - errcode
    - pfree
    - cstring_to_text
    - ereport
    - GetSysCacheOid1
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - convert_GUC_name_for_parameter_acl
    linkageType: ''
    returnType: Oid
    signature: Oid ParameterAclLookup(const char *parameter, bool missing_ok)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_GUC_name_for_parameter_acl
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:83,1
    - Dst: convert_GUC_name_for_parameter_acl
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:86,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:94,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:95,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:96,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:99,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:101,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:101,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:103,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:104,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:107,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - parameter
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 68
    functionDepth: 6
    functionLinenumber: 68
    functionLinenumberEnd: 111
    functionName: ParameterAclCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_parameter_acl.c
    functionUses: 0
    functionsReached:
    - check_GUC_name_for_parameter_acl
    - GetNewOidWithIndex
    - heap_freetuple
    - RelationGetDescr
    - cstring_to_text
    - heap_form_tuple
    - table_close
    - table_open
    - PointerGetDatum
    - ObjectIdGetDatum
    - convert_GUC_name_for_parameter_acl
    - CatalogTupleInsert
    linkageType: ''
    returnType: Oid
    signature: Oid ParameterAclCreate(const char *parameter)
  - BBCount: 63
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_proc.c:154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:158,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:159,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/catalog/pg_proc.c:160,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:167,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_proc.c:174,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_proc.c:176,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_proc.c:177,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_proc.c:179,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_proc.c:180,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:181,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_proc.c:182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_proc.c:183,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:192,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_proc.c:199,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_proc.c:201,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_proc.c:202,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_proc.c:203,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_proc.c:204,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:205,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_proc.c:206,1
    - Dst: check_valid_polymorphic_signature
      Src: /src/postgres/src/backend/catalog/pg_proc.c:213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:217,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:218,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:219,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:220,1
    - Dst: check_valid_internal_signature
      Src: /src/postgres/src/backend/catalog/pg_proc.c:226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:232,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:233,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:238,1
    - Dst: check_valid_polymorphic_signature
      Src: /src/postgres/src/backend/catalog/pg_proc.c:247,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:251,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:252,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:253,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:254,1
    - Dst: check_valid_internal_signature
      Src: /src/postgres/src/backend/catalog/pg_proc.c:255,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:259,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:260,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:261,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:262,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:280,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:281,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:284,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:285,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:291,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:292,1
    - Dst: get_element_type
      Src: /src/postgres/src/backend/catalog/pg_proc.c:305,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:306,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:307,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:312,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_proc.c:329,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:330,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:331,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:332,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:333,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:334,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:335,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:336,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:337,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:338,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:339,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:340,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:341,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:342,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:343,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:344,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:345,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:346,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_proc.c:346,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:347,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:348,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:349,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:353,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:357,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:362,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:362,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:365,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:369,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:371,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:375,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:375,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:378,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_proc.c:384,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:385,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/catalog/pg_proc.c:388,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:389,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:390,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:391,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:393,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_proc.c:396,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:402,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:403,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:404,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/pg_proc.c:406,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_proc.c:407,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:414,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_proc.c:416,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_proc.c:418,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_proc.c:420,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_proc.c:422,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:442,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:443,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:449,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:451,1
    - Dst: build_function_result_tupdesc_t
      Src: /src/postgres/src/backend/catalog/pg_proc.c:462,1
    - Dst: build_function_result_tupdesc_d
      Src: /src/postgres/src/backend/catalog/pg_proc.c:463,1
    - Dst: equalRowTypes
      Src: /src/postgres/src/backend/catalog/pg_proc.c:470,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:471,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:472,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:473,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_proc.c:474,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:476,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:478,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:486,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:498,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:502,1
    - Dst: get_func_input_arg_names
      Src: /src/postgres/src/backend/catalog/pg_proc.c:504,1
    - Dst: get_func_input_arg_names
      Src: /src/postgres/src/backend/catalog/pg_proc.c:507,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_proc.c:515,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:516,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:517,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:518,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:521,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:523,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_proc.c:542,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:543,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:545,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:547,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:549,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:551,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:553,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:553,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:553,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_proc.c:554,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_proc.c:554,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/catalog/pg_proc.c:557,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_proc.c:558,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_proc.c:563,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_proc.c:564,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:566,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:566,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:567,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:568,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:569,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:571,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:573,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/pg_proc.c:574,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_proc.c:587,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_proc.c:588,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_proc.c:590,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/pg_proc.c:599,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:602,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_proc.c:606,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:608,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_proc.c:609,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_proc.c:610,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_proc.c:615,1
    - Dst: deleteDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/pg_proc.c:624,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_proc.c:626,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:628,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:631,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:632,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:635,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:636,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:639,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:640,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:645,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:646,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:652,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:653,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:657,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:659,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:660,1
    - Dst: collectDependenciesOfExpr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:665,1
    - Dst: collectDependenciesOfExpr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:669,1
    - Dst: find_temp_object
      Src: /src/postgres/src/backend/catalog/pg_proc.c:679,1
    - Dst: isTempNamespace
      Src: /src/postgres/src/backend/catalog/pg_proc.c:679,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:680,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:681,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_proc.c:683,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_proc.c:684,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_proc.c:694,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_proc.c:696,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/pg_proc.c:700,1
    - Dst: recordDependencyOnNewAcl
      Src: /src/postgres/src/backend/catalog/pg_proc.c:704,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_proc.c:708,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_proc.c:710,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_proc.c:713,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_proc.c:715,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:718,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_proc.c:724,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_proc.c:738,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/pg_proc.c:741,1
    - Dst: ProcessGUCArray
      Src: /src/postgres/src/backend/catalog/pg_proc.c:742,1
    - Dst: superuser
      Src: /src/postgres/src/backend/catalog/pg_proc.c:743,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:749,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:749,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/pg_proc.c:752,1
    - Dst: pgstat_create_function
      Src: /src/postgres/src/backend/catalog/pg_proc.c:757,1
    CyclomaticComplexity: 87
    EdgeCount: 87
    ICount: 247
    argCount: 28
    argNames:
    - procedureName
    - procNamespace
    - replace
    - returnsSet
    - returnType
    - proowner
    - languageObjectId
    - languageValidator
    - prosrc
    - probin
    - prosqlbody
    - prokind
    - security_definer
    - isLeakProof
    - isStrict
    - volatility
    - parallel
    - parameterTypes
    - allParameterTypes
    - parameterModes
    - parameterNames
    - parameterDefaults
    - trftypes
    - trfoids
    - proconfig
    - prosupport
    - procost
    - prorows
    argTypes:
    - char*
    - Oid
    - bool
    - bool
    - Oid
    - Oid
    - Oid
    - Oid
    - char*
    - char*
    - Node*
    - char
    - bool
    - bool
    - bool
    - char
    - char
    - oidvector*
    - Datum
    - Datum
    - Datum
    - List*
    - Datum
    - List*
    - Datum
    - Oid
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 98
    functionDepth: 7
    functionLinenumber: 98
    functionLinenumberEnd: 760
    functionName: ProcedureCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    functionsReached:
    - exprType
    - get_user_default_acl
    - errhint
    - format_procedure
    - table_close
    - collectDependenciesOfExpr
    - heap_freetuple
    - table_open
    - PointerGetDatum
    - OidIsValid
    - TextDatumGetCString
    - errmsg_plural
    - stringToNode
    - ARR_DATA_PTR
    - GETSTRUCT
    - aclcheck_error
    - SysCacheGetAttrNotNull
    - Int16GetDatum
    - pgstat_create_function
    - NewGUCNestLevel
    - errdetail
    - deleteDependencyRecordsFor
    - Float4GetDatum
    - find_temp_object
    - elog
    - recordDependencyOnCurrentExtension
    - get_element_type
    - Assert
    - check_valid_internal_signature
    - recordDependencyOnOwner
    - ReleaseSysCache
    - errmsg
    - new_object_addresses
    - AtEOXact_GUC
    - record_object_address_dependencies
    - errdetail_internal
    - ARR_DIMS
    - ereport
    - lfirst
    - getObjectDescription
    - heap_modify_tuple
    - CatalogTupleUpdate
    - strcmp
    - errcode
    - heap_form_tuple
    - ARR_NDIM
    - isTempNamespace
    - nodeToString
    - CharGetDatum
    - ObjectIdGetDatum
    - superuser
    - GetNewOidWithIndex
    - namestrcpy
    - SearchSysCache3
    - recordDependencyOnNewAcl
    - castNode
    - ARR_ELEMTYPE
    - ProcessGUCArray
    - build_function_result_tupdesc_t
    - SysCacheGetAttr
    - DatumGetPointer
    - get_func_input_arg_names
    - build_function_result_tupdesc_d
    - CatalogTupleInsert
    - HeapTupleIsValid
    - RelationGetDescr
    - object_ownercheck
    - CommandCounterIncrement
    - lnext
    - OidFunctionCall1
    - list_length
    - InvokeObjectPostCreateHook
    - equalRowTypes
    - check_valid_polymorphic_signature
    - ARR_HASNULL
    - list_nth_cell
    - free_object_addresses
    - NameGetDatum
    - add_exact_object_address
    - CStringGetTextDatum
    - ObjectAddressSet
    - BoolGetDatum
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress ProcedureCreate(const char *procedureName,\n\t\t\t\tOid
      procNamespace,\n\t\t\t\tbool replace,\n\t\t\t\tbool returnsSet,\n\t\t\t\tOid
      returnType,\n\t\t\t\tOid proowner,\n\t\t\t\tOid languageObjectId,\n\t\t\t\tOid
      languageValidator,\n\t\t\t\tconst char *prosrc,\n\t\t\t\tconst char *probin,\n\t\t\t\tNode
      *prosqlbody,\n\t\t\t\tchar prokind,\n\t\t\t\tbool security_definer,\n\t\t\t\tbool
      isLeakProof,\n\t\t\t\tbool isStrict,\n\t\t\t\tchar volatility,\n\t\t\t\tchar
      parallel,\n\t\t\t\toidvector *parameterTypes,\n\t\t\t\tDatum allParameterTypes,\n\t\t\t\tDatum
      parameterModes,\n\t\t\t\tDatum parameterNames,\n\t\t\t\tList *parameterDefaults,\n\t\t\t\tDatum
      trftypes,\n\t\t\t\tList *trfoids,\n\t\t\t\tDatum proconfig,\n\t\t\t\tOid prosupport,\n\t\t\t\tfloat4
      procost,\n\t\t\t\tfloat4 prorows)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_proc.c:563,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_proc.c:564,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:566,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:566,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:567,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:568,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:569,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:571,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:573,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/pg_proc.c:574,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 561
    functionDepth: 2
    functionLinenumber: 561
    functionLinenumberEnd: 575
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 353
    functionsReached:
    - errcode
    - exprType
    - ereport
    - lnext
    - errhint
    - lfirst
    - format_procedure
    - errmsg
    linkageType: ''
    returnType: void
    signature: void foreach(oldlc, oldDefaults)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:652,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 654
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 1
    functionsReached:
    - add_exact_object_address
    - ObjectAddressSet
    linkageType: ''
    returnType: void
    signature: void foreach_oid(transformid, trfoids)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:773,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/backend/catalog/pg_proc.c:778,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:779,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:786,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:786,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:787,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:788,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:790,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:791,1
    - Dst: fmgr_internal_function
      Src: /src/postgres/src/backend/catalog/pg_proc.c:793,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:794,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:795,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:796,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_proc.c:799,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:801,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 802
    functionName: fmgr_internal_validator
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - PG_RETURN_VOID
    - errcode
    - HeapTupleIsValid
    - fmgr_internal_function
    - ereport
    - ReleaseSysCache
    - PG_GETARG_OID
    - CheckFunctionValidatorAccess
    - TextDatumGetCString
    - errmsg
    - SysCacheGetAttrNotNull
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum fmgr_internal_validator(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:816,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/backend/catalog/pg_proc.c:823,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:824,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:832,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:832,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:833,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:834,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:836,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:837,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:839,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:840,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/catalog/pg_proc.c:842,1
    - Dst: fetch_finfo_record
      Src: /src/postgres/src/backend/catalog/pg_proc.c:843,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_proc.c:845,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:847,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 813
    functionDepth: 1
    functionLinenumber: 813
    functionLinenumberEnd: 848
    functionName: fmgr_c_validator
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - PG_RETURN_VOID
    - HeapTupleIsValid
    - fetch_finfo_record
    - load_external_function
    - ReleaseSysCache
    - PG_GETARG_OID
    - CheckFunctionValidatorAccess
    - TextDatumGetCString
    - SysCacheGetAttrNotNull
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum fmgr_c_validator(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:859,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/backend/catalog/pg_proc.c:873,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:874,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:876,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:876,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:877,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:878,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_proc.c:879,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/catalog/pg_proc.c:883,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:886,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:887,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:888,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:889,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_proc.c:890,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/catalog/pg_proc.c:897,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:899,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:902,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:903,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:904,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_proc.c:905,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:912,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:913,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:918,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:927,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:933,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:933,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/pg_proc.c:934,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/pg_proc.c:935,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:935,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:937,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/catalog/pg_proc.c:942,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/catalog/pg_proc.c:951,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/catalog/pg_proc.c:952,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_proc.c:953,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/catalog/pg_proc.c:967,1
    - Dst: prepare_sql_fn_parse_info
      Src: /src/postgres/src/backend/catalog/pg_proc.c:979,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/catalog/pg_proc.c:983,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/catalog/pg_proc.c:986,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_proc.c:991,1
    - Dst: check_sql_fn_statements
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1002,1
    - Dst: get_func_result_type
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1004,1
    - Dst: check_sql_fn_retval
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1006,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1015,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1017,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 856
    functionDepth: 6
    functionLinenumber: 856
    functionLinenumberEnd: 1018
    functionName: fmgr_sql_validator
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - get_typtype
    - errcode
    - pg_analyze_and_rewrite_withcb
    - get_func_result_type
    - NameStr
    - check_sql_fn_retval
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - linitial
    - ReleaseSysCache
    - AcquireRewriteLocks
    - errmsg
    - TextDatumGetCString
    - ObjectIdGetDatum
    - pg_rewrite_query
    - ereport
    - lappend
    - prepare_sql_fn_parse_info
    - stringToNode
    - CheckFunctionValidatorAccess
    - GETSTRUCT
    - list_make1
    - SysCacheGetAttrNotNull
    - lfirst_node
    - IsPolymorphicType
    - format_type_be
    - pg_parse_query
    - castNode
    - check_sql_fn_statements
    - PG_GETARG_OID
    - IsA
    - SysCacheGetAttr
    linkageType: ''
    returnType: Datum
    signature: Datum fmgr_sql_validator(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/catalog/pg_proc.c:942,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/catalog/pg_proc.c:951,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/catalog/pg_proc.c:952,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_proc.c:953,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 940
    functionDepth: 6
    functionLinenumber: 940
    functionLinenumberEnd: 954
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 353
    functionsReached:
    - pg_rewrite_query
    - AcquireRewriteLocks
    - lappend
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, stored_query_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/catalog/pg_proc.c:983,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/catalog/pg_proc.c:986,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_proc.c:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 981
    functionDepth: 6
    functionLinenumber: 981
    functionLinenumberEnd: 993
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 353
    functionsReached:
    - pg_analyze_and_rewrite_withcb
    - lappend
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, raw_parsetree_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: function_parse_error_transpose
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1029,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1032,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1034
    functionName: sql_function_parse_error_callback
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    functionsReached:
    - errcontext
    - function_parse_error_transpose
    linkageType: ''
    returnType: void
    signature: void sql_function_parse_error_callback(void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: geterrposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1060,1
    - Dst: getinternalerrposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1063,1
    - Dst: match_prosrc_to_query
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1074,1
    - Dst: errposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1089,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1091,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1092,1
    - Dst: errposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1100,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1101,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1102,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - prosrc
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1047
    functionDepth: 1
    functionLinenumber: 1047
    functionLinenumberEnd: 1106
    functionName: function_parse_error_transpose
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 2
    functionsReached:
    - internalerrposition
    - getinternalerrposition
    - geterrposition
    - errposition
    - internalerrquery
    - match_prosrc_to_query
    linkageType: ''
    returnType: bool
    signature: bool function_parse_error_transpose(const char *prosrc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1124,1
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1125,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1133,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1143,1
    - Dst: match_prosrc_to_literal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1147,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1156,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - prosrc
    - queryText
    - cursorpos
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1162
    functionName: match_prosrc_to_query
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 1
    functionsReached:
    - strncmp
    - pg_mbstrlen_with_len
    - strlen
    - match_prosrc_to_literal
    linkageType: ''
    returnType: int
    signature: "int match_prosrc_to_query(const char *prosrc, const char *queryText,\n\t\t\t\t\t
      \ int cursorpos)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1209,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1210,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 4
    argNames:
    - prosrc
    - literal
    - cursorpos
    - newcursorpos
    argTypes:
    - char*
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1227
    functionName: match_prosrc_to_literal
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 1
    functionsReached:
    - pg_mblen_cstr
    - strncmp
    linkageType: ''
    returnType: bool
    signature: "bool match_prosrc_to_literal(const char *prosrc, const char *literal,\n\t\t\t\t\t\tint
      cursorpos, int *newcursorpos)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1232,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1238,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1240,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - datum
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1229
    functionDepth: 6
    functionLinenumber: 1229
    functionLinenumberEnd: 1242
    functionName: oid_array_to_list
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 2
    functionsReached:
    - deconstruct_array_builtin
    - DatumGetArrayTypeP
    - lappend_oid
    - DatumGetObjectId
    linkageType: ''
    returnType: List
    signature: 'List *

      oid_array_to_list(Datum datum)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:50,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:56,1
    - Dst: lstat
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:64,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:65,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:66,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:67,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:70,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:71,1
    - Dst: readlink
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:76,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:78,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:79,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:80,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:83,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:84,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:85,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_tablespace.c:89,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - tablespaceOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 90
    functionName: get_tablespace_location
    functionSourceFile: /src/postgres/src/backend/catalog/pg_tablespace.c
    functionUses: 0
    functionsReached:
    - errcode
    - lstat
    - pstrdup
    - ereport
    - readlink
    - errmsg
    - S_ISLNK
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      get_tablespace_location(Oid tablespaceOid)'
  - BBCount: 66
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:113,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:116,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:127,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:128,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:129,1
    - Dst: check_valid_polymorphic_signature
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:138,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:142,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:143,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:144,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:145,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:150,1
    - Dst: check_valid_polymorphic_signature
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:158,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:159,1
    - Dst: AGGKIND_IS_ORDERED_SET
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:169,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:169,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:173,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:192,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:197,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:199,1
    - Dst: AGGKIND_IS_ORDERED_SET
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:216,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:220,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:227,1
    - Dst: lookup_agg_function
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:229,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:244,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:245,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:246,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:247,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:248,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:250,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:250,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:251,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:252,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:253,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:264,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:266,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:279,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:279,1
    - Dst: lookup_agg_function
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:282,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:288,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:289,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:290,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:291,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:292,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:294,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:294,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:295,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:296,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:297,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:306,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:307,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:309,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:315,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:325,1
    - Dst: lookup_agg_function
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:335,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:336,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:337,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:339,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:339,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:340,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:341,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:350,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:351,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:352,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:354,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:370,1
    - Dst: lookup_agg_function
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:383,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:393,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:394,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:395,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:405,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:405,1
    - Dst: lookup_agg_function
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:419,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:425,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:426,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:427,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:428,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:429,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:436,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:437,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:438,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:439,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:440,1
    - Dst: lookup_agg_function
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:451,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:456,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:457,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:458,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:459,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:460,1
    - Dst: lookup_agg_function
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:472,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:477,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:478,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:479,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:480,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:481,1
    - Dst: check_valid_polymorphic_signature
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:492,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:496,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:497,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:498,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:499,1
    - Dst: check_valid_internal_signature
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:507,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:511,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:512,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:513,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:514,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:521,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:533,1
    - Dst: lookup_agg_function
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:546,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:552,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:563,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:563,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:567,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:568,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:576,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:577,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:578,1
    - Dst: LookupOperName
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:579,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:589,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:589,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:591,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:594,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:594,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:596,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:598,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:600,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:600,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:602,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:605,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:605,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:607,1
    - Dst: ProcedureCreate
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:615,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:620,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:639,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:641,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:650,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:660,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:661,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:662,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:663,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:664,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:665,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:666,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:667,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:668,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:669,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:670,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:671,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:672,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:673,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:674,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:675,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:676,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:677,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:678,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:679,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:681,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:685,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:690,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:690,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:694,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:696,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:705,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:706,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:707,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:709,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:711,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:713,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:716,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:717,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:718,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:724,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:725,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:726,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:730,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:731,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:734,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:747,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:750,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:751,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:754,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:756,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:757,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:761,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:763,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:764,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:768,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:770,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:771,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:775,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:777,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:778,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:782,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:784,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:785,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:789,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:791,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:792,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:796,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:798,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:799,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:803,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:805,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:806,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:809,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:810,1
    CyclomaticComplexity: 81
    EdgeCount: 81
    ICount: 257
    argCount: 32
    argNames:
    - aggName
    - aggNamespace
    - replace
    - aggKind
    - numArgs
    - numDirectArgs
    - parameterTypes
    - allParameterTypes
    - parameterModes
    - parameterNames
    - parameterDefaults
    - variadicArgType
    - aggtransfnName
    - aggfinalfnName
    - aggcombinefnName
    - aggserialfnName
    - aggdeserialfnName
    - aggmtransfnName
    - aggminvtransfnName
    - aggmfinalfnName
    - finalfnExtraArgs
    - mfinalfnExtraArgs
    - finalfnModify
    - mfinalfnModify
    - aggsortopName
    - aggTransType
    - aggTransSpace
    - aggmTransType
    - aggmTransSpace
    - agginitval
    - aggminitval
    - proparallel
    argTypes:
    - char*
    - Oid
    - bool
    - char
    - int
    - int
    - oidvector*
    - Datum
    - Datum
    - Datum
    - List*
    - Oid
    - List*
    - List*
    - List*
    - List*
    - List*
    - List*
    - List*
    - List*
    - bool
    - bool
    - char
    - char
    - List*
    - Oid
    - int32
    - Oid
    - int32
    - char*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 45
    functionDepth: 8
    functionLinenumber: 45
    functionLinenumberEnd: 812
    functionName: AggregateCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_aggregate.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - heap_form_tuple
    - aclcheck_error_type
    - object_aclcheck
    - table_close
    - IsBinaryCoercible
    - CatalogTupleInsert
    - elog
    - SearchSysCache1
    - memcpy
    - Assert
    - HeapTupleIsValid
    - func_strict
    - check_valid_internal_signature
    - Int32GetDatum
    - ProcedureCreate
    - ReleaseSysCache
    - table_open
    - errmsg
    - PointerGetDatum
    - new_object_addresses
    - OidIsValid
    - CharGetDatum
    - memcmp
    - ObjectIdGetDatum
    - record_object_address_dependencies
    - errdetail_internal
    - errmsg_plural
    - ereport
    - check_valid_polymorphic_signature
    - NameListToString
    - GETSTRUCT
    - lookup_agg_function
    - free_object_addresses
    - AGGKIND_IS_ORDERED_SET
    - Int16GetDatum
    - heap_modify_tuple
    - format_type_be
    - CatalogTupleUpdate
    - LookupOperName
    - add_exact_object_address
    - CStringGetTextDatum
    - ObjectAddressSet
    - errdetail
    - BoolGetDatum
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress AggregateCreate(const char *aggName,\n\t\t\t\tOid aggNamespace,\n\t\t\t\tbool
      replace,\n\t\t\t\tchar aggKind,\n\t\t\t\tint numArgs,\n\t\t\t\tint numDirectArgs,\n\t\t\t\toidvector
      *parameterTypes,\n\t\t\t\tDatum allParameterTypes,\n\t\t\t\tDatum parameterModes,\n\t\t\t\tDatum
      parameterNames,\n\t\t\t\tList *parameterDefaults,\n\t\t\t\tOid variadicArgType,\n\t\t\t\tList
      *aggtransfnName,\n\t\t\t\tList *aggfinalfnName,\n\t\t\t\tList *aggcombinefnName,\n\t\t\t\tList
      *aggserialfnName,\n\t\t\t\tList *aggdeserialfnName,\n\t\t\t\tList *aggmtransfnName,\n\t\t\t\tList
      *aggminvtransfnName,\n\t\t\t\tList *aggmfinalfnName,\n\t\t\t\tbool finalfnExtraArgs,\n\t\t\t\tbool
      mfinalfnExtraArgs,\n\t\t\t\tchar finalfnModify,\n\t\t\t\tchar mfinalfnModify,\n\t\t\t\tList
      *aggsortopName,\n\t\t\t\tOid aggTransType,\n\t\t\t\tint32 aggTransSpace,\n\t\t\t\tOid
      aggmTransType,\n\t\t\t\tint32 aggmTransSpace,\n\t\t\t\tconst char *agginitval,\n\t\t\t\tconst
      char *aggminitval,\n\t\t\t\tchar proparallel)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: func_get_detail
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:850,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:858,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:859,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:860,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:861,1
    - Dst: func_signature_string
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:862,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:865,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:866,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:867,1
    - Dst: func_signature_string
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:868,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:880,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:881,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:882,1
    - Dst: func_signature_string
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:883,1
    - Dst: enforce_generic_type_consistency
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:891,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:903,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:904,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:906,1
    - Dst: func_signature_string
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:907,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:912,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:912,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:914,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:914,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 5
    argNames:
    - fnName
    - nargs
    - input_types
    - variadicArgType
    - rettype
    argTypes:
    - List*
    - int
    - Oid*
    - Oid
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 917
    functionName: lookup_agg_function
    functionSourceFile: /src/postgres/src/backend/catalog/pg_aggregate.c
    functionUses: 1
    functionsReached:
    - GetUserId
    - errcode
    - get_func_name
    - ereport
    - object_aclcheck
    - func_get_detail
    - errmsg
    - aclcheck_error
    - OidIsValid
    - func_signature_string
    - enforce_generic_type_consistency
    - IsBinaryCoercible
    linkageType: ''
    returnType: Oid
    signature: "Oid lookup_agg_function(List *fnName,\n\t\t\t\t\tint nargs,\n\t\t\t\t\tOid
      *input_types,\n\t\t\t\t\tOid variadicArgType,\n\t\t\t\t\tOid *rettype)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/pg_enum.c:103,1
    - Dst: init_uncommitted_enum_types
      Src: /src/postgres/src/backend/catalog/pg_enum.c:106,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:107,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_enum.c:111,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_enum.c:113,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/pg_enum.c:123,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_enum.c:136,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/pg_enum.c:143,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/pg_enum.c:146,1
    - Dst: Min
      Src: /src/postgres/src/backend/catalog/pg_enum.c:149,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/pg_enum.c:151,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_enum.c:153,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:153,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_enum.c:159,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_enum.c:159,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/catalog/pg_enum.c:160,1
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_enum.c:167,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:168,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:169,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:170,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_enum.c:171,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:185,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:186,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:187,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:192,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_enum.c:194,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:197,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:198,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:199,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_enum.c:201,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:202,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:204,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_enum.c:210,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_enum.c:220,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_enum.c:224,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_enum.c:226,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/pg_enum.c:227,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_enum.c:228,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 2
    argNames:
    - enumTypeOid
    - vals
    argTypes:
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 229
    functionName: EnumValuesCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - CatalogCloseIndexes
    - GetCurrentTransactionNestLevel
    - errcode
    - strcmp
    - CatalogTuplesMultiInsertWithInfo
    - palloc_array
    - Float4GetDatum
    - strVal
    - table_close
    - init_uncommitted_enum_types
    - qsort
    - pfree
    - RelationGetDescr
    - table_open
    - MakeSingleTupleTableSlot
    - ExecStoreVirtualTuple
    - errmsg
    - ExecClearTuple
    - list_length
    - ObjectIdGetDatum
    - CatalogOpenIndexes
    - ExecDropSingleTupleTableSlot
    - GetNewOidWithIndex
    - ereport
    - namestrcpy
    - lfirst
    - strlen
    - memset
    - hash_search
    - NameGetDatum
    - palloc0
    - errdetail
    - Min
    linkageType: ''
    returnType: void
    signature: void EnumValuesCreate(Oid enumTypeOid, List *vals)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_enum.c:159,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_enum.c:159,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/catalog/pg_enum.c:160,1
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_enum.c:167,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:168,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:169,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:170,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_enum.c:171,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:185,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:186,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:187,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:192,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_enum.c:194,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:197,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:198,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:199,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_enum.c:201,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:202,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:204,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_enum.c:210,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 216
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 353
    functionsReached:
    - NameGetDatum
    - strcmp
    - errcode
    - CatalogTuplesMultiInsertWithInfo
    - palloc0
    - ereport
    - ObjectIdGetDatum
    - Float4GetDatum
    - lfirst
    - strlen
    - errmsg
    - memset
    - errdetail
    - namestrcpy
    - ExecStoreVirtualTuple
    - strVal
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void foreach(lc, vals)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:185,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:186,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 189
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 353
    functionsReached:
    - strcmp
    - errcode
    - ereport
    - lfirst
    - errmsg
    - strVal
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, vals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_enum.c:244,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_enum.c:246,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:249,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_enum.c:251,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:254,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_enum.c:254,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_enum.c:256,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_enum.c:259,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_enum.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - enumTypeOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 236
    functionDepth: 4
    functionLinenumber: 236
    functionLinenumberEnd: 262
    functionName: EnumValuesDelete
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void EnumValuesDelete(Oid enumTypeOid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/catalog/pg_enum.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 279
    functionName: init_uncommitted_enum_types
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 1
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void init_uncommitted_enum_types(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/catalog/pg_enum.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 296
    functionName: init_uncommitted_enum_values
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void init_uncommitted_enum_values(void)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_enum.c:324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:325,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:326,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:327,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_enum.c:328,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/pg_enum.c:339,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/pg_enum.c:346,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:347,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:348,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:349,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_enum.c:351,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:354,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:355,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:356,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:361,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:362,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:363,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_enum.c:367,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/pg_enum.c:373,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:374,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/pg_enum.c:378,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/pg_enum.c:382,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:392,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:410,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_enum.c:412,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:412,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:416,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:417,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:418,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:420,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:452,1
    - Dst: RenumberEnumType
      Src: /src/postgres/src/backend/catalog/pg_enum.c:459,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_enum.c:461,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/catalog/pg_enum.c:462,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:473,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:474,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:475,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:476,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:484,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:485,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:486,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_enum.c:505,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:518,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_enum.c:575,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/catalog/pg_enum.c:576,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_enum.c:579,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:580,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:581,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:582,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_enum.c:583,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:584,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:585,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:585,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_enum.c:586,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:587,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_enum.c:589,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/pg_enum.c:602,1
    - Dst: EnumTypeUncommitted
      Src: /src/postgres/src/backend/catalog/pg_enum.c:603,1
    - Dst: init_uncommitted_enum_values
      Src: /src/postgres/src/backend/catalog/pg_enum.c:608,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:611,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 106
    argCount: 5
    argNames:
    - enumTypeOid
    - newVal
    - neighbor
    - newValIsAfter
    - skipIfExists
    argTypes:
    - Oid
    - char*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 304
    functionDepth: 6
    functionLinenumber: 304
    functionLinenumberEnd: 612
    functionName: AddEnumLabel
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - GetCurrentTransactionNestLevel
    - heap_form_tuple
    - palloc_array
    - Float4GetDatum
    - NameStr
    - table_close
    - CatalogTupleInsert
    - qsort
    - heap_freetuple
    - HeapTupleIsValid
    - RenumberEnumType
    - LockDatabaseObject
    - pfree
    - RelationGetDescr
    - table_open
    - ReleaseSysCache
    - errmsg
    - init_uncommitted_enum_values
    - OidIsValid
    - ObjectIdGetDatum
    - SearchSysCacheList1
    - GetNewOidWithIndex
    - CStringGetDatum
    - ReleaseCatCacheList
    - ereport
    - EnumTypeUncommitted
    - namestrcpy
    - strlen
    - GETSTRUCT
    - memset
    - NameGetDatum
    - hash_search
    - errdetail
    - SearchSysCache2
    linkageType: ''
    returnType: void
    signature: "void AddEnumLabel(Oid enumTypeOid,\n\t\t\t const char *newVal,\n\t\t\t
      const char *neighbor,\n\t\t\t bool newValIsAfter,\n\t\t\t bool skipIfExists)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_enum.c:634,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:635,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:636,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:637,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_enum.c:638,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/pg_enum.c:648,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_enum.c:650,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/pg_enum.c:653,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:654,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:667,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_enum.c:668,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:668,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_enum.c:670,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:670,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:674,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:675,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:676,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:679,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:680,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:681,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:685,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:686,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/catalog/pg_enum.c:688,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_enum.c:691,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_enum.c:692,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:693,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_enum.c:695,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - enumTypeOid
    - oldVal
    - newVal
    argTypes:
    - Oid
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 619
    functionDepth: 3
    functionLinenumber: 619
    functionLinenumberEnd: 696
    functionName: RenameEnumLabel
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - SearchSysCacheList1
    - strcmp
    - errcode
    - heap_freetuple
    - LockDatabaseObject
    - ReleaseCatCacheList
    - ereport
    - CatalogTupleUpdate
    - table_open
    - namestrcpy
    - strlen
    - errmsg
    - GETSTRUCT
    - errdetail
    - NameStr
    - heap_copytuple
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: "void RenameEnumLabel(Oid enumTypeOid,\n\t\t\t\tconst char *oldVal,\n\t\t\t\tconst
      char *newVal)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - typ_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 714
    functionName: EnumTypeUncommitted
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 1
    functionsReached:
    - hash_search
    linkageType: ''
    returnType: bool
    signature: bool EnumTypeUncommitted(Oid typ_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:730,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - enum_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 732
    functionName: EnumUncommitted
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - hash_search
    linkageType: ''
    returnType: bool
    signature: bool EnumUncommitted(Oid enum_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 748
    functionName: AtEOXact_Enum
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AtEOXact_Enum(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:789,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:790,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_enum.c:797,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:800,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_enum.c:804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - pg_enum
    - existing
    - nelems
    argTypes:
    - Relation
    - HeapTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 773
    functionDepth: 2
    functionLinenumber: 773
    functionLinenumberEnd: 805
    functionName: RenumberEnumType
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 1
    functionsReached:
    - heap_freetuple
    - CommandCounterIncrement
    - CatalogTupleUpdate
    - heap_copytuple
    - GETSTRUCT
    linkageType: ''
    returnType: void
    signature: void RenumberEnumType(Relation pg_enum, HeapTuple *existing, int nelems)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:814,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 809
    functionDepth: 1
    functionLinenumber: 809
    functionLinenumberEnd: 823
    functionName: sort_order_cmp
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - GETSTRUCT
    linkageType: ''
    returnType: int
    signature: int sort_order_cmp(const void *p1, const void *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/catalog/pg_enum.c:831,1
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/catalog/pg_enum.c:833,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 837
    functionName: EstimateUncommittedEnumsSpace
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 1
    functionsReached:
    - hash_get_num_entries
    linkageType: ''
    returnType: Size
    signature: Size EstimateUncommittedEnumsSpace(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_enum.c:848,1
    - Dst: EstimateUncommittedEnumsSpace
      Src: /src/postgres/src/backend/catalog/pg_enum.c:848,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/catalog/pg_enum.c:856,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:857,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/catalog/pg_enum.c:870,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:871,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_enum.c:882,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - space
    - size
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 839
    functionDepth: 2
    functionLinenumber: 839
    functionLinenumberEnd: 883
    functionName: SerializeUncommittedEnums
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 1
    functionsReached:
    - Assert
    - hash_seq_search
    - hash_seq_init
    - EstimateUncommittedEnumsSpace
    linkageType: ''
    returnType: void
    signature: void SerializeUncommittedEnums(void *space, Size size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_enum.c:890,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_enum.c:891,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:898,1
    - Dst: init_uncommitted_enum_types
      Src: /src/postgres/src/backend/catalog/pg_enum.c:901,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:904,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:906,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:909,1
    - Dst: init_uncommitted_enum_values
      Src: /src/postgres/src/backend/catalog/pg_enum.c:912,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:915,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:917,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - space
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 919
    functionName: RestoreUncommittedEnums
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 1
    functionsReached:
    - hash_search
    - Assert
    - init_uncommitted_enum_values
    - OidIsValid
    - init_uncommitted_enum_types
    linkageType: ''
    returnType: void
    signature: void RestoreUncommittedEnums(void *space)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:104,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:107,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:111,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:112,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:121,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:123,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:124,1
    - Dst: Max
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:132,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:134,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:136,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:137,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:139,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:140,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:142,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:143,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:145,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:146,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:151,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:152,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:170,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:172,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:173,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:185,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:187,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:188,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:189,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:190,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:191,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:192,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:193,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:194,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:195,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:196,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:197,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:198,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:199,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:200,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:201,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:202,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:203,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:204,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:205,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:206,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:209,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:214,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:219,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:224,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:229,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:234,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:239,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:244,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:248,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:248,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:250,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:252,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:254,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:257,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:259,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:271,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:273,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:278,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:279,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:283,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:290,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:291,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:294,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:296,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:299,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:301,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:313,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:315,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:320,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:321,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:325,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:335,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:336,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:355,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:359,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:364,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:369,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:371,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:387,1
    - Dst: InvokeObjectPostCreateHookArg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:393,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 157
    argCount: 33
    argNames:
    - constraintName
    - constraintNamespace
    - constraintType
    - isDeferrable
    - isDeferred
    - isEnforced
    - isValidated
    - parentConstrId
    - relId
    - constraintKey
    - constraintNKeys
    - constraintNTotalKeys
    - domainId
    - indexRelId
    - foreignRelId
    - foreignKey
    - pfEqOp
    - ppEqOp
    - ffEqOp
    - foreignNKeys
    - foreignUpdateType
    - foreignDeleteType
    - fkDeleteSetCols
    - numFkDeleteSetCols
    - foreignMatchType
    - exclOp
    - conExpr
    - conBin
    - conIsLocal
    - conInhCount
    - conNoInherit
    - conPeriod
    - is_internal
    argTypes:
    - char*
    - Oid
    - char
    - bool
    - bool
    - bool
    - bool
    - Oid
    - Oid
    - int16*
    - int
    - int
    - Oid
    - Oid
    - Oid
    - int16*
    - Oid*
    - Oid*
    - Oid*
    - int
    - char
    - char
    - int16*
    - int
    - char
    - Oid*
    - Node*
    - char*
    - bool
    - int16
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 50
    functionDepth: 6
    functionLinenumber: 50
    functionLinenumberEnd: 397
    functionName: CreateConstraintEntry
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ObjectAddressSubSet
    - heap_form_tuple
    - table_close
    - CatalogTupleInsert
    - recordDependencyOnSingleRelExpr
    - construct_array_builtin
    - Assert
    - RelationGetDescr
    - table_open
    - PointerGetDatum
    - new_object_addresses
    - CharGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - record_object_address_dependencies
    - GetNewOidWithIndex
    - InvokeObjectPostCreateHookArg
    - namestrcpy
    - free_object_addresses
    - Int16GetDatum
    - NameGetDatum
    - add_exact_object_address
    - Max
    - CStringGetTextDatum
    - ObjectAddressSet
    - palloc
    - BoolGetDatum
    linkageType: ''
    returnType: Oid
    signature: "Oid CreateConstraintEntry(const char *constraintName,\n\t\t\t\t\t
      \ Oid constraintNamespace,\n\t\t\t\t\t  char constraintType,\n\t\t\t\t\t  bool
      isDeferrable,\n\t\t\t\t\t  bool isDeferred,\n\t\t\t\t\t  bool isEnforced,\n\t\t\t\t\t
      \ bool isValidated,\n\t\t\t\t\t  Oid parentConstrId,\n\t\t\t\t\t  Oid relId,\n\t\t\t\t\t
      \ const int16 *constraintKey,\n\t\t\t\t\t  int constraintNKeys,\n\t\t\t\t\t
      \ int constraintNTotalKeys,\n\t\t\t\t\t  Oid domainId,\n\t\t\t\t\t  Oid indexRelId,\n\t\t\t\t\t
      \ Oid foreignRelId,\n\t\t\t\t\t  const int16 *foreignKey,\n\t\t\t\t\t  const
      Oid *pfEqOp,\n\t\t\t\t\t  const Oid *ppEqOp,\n\t\t\t\t\t  const Oid *ffEqOp,\n\t\t\t\t\t
      \ int foreignNKeys,\n\t\t\t\t\t  char foreignUpdateType,\n\t\t\t\t\t  char foreignDeleteType,\n\t\t\t\t\t
      \ const int16 *fkDeleteSetCols,\n\t\t\t\t\t  int numFkDeleteSetCols,\n\t\t\t\t\t
      \ char foreignMatchType,\n\t\t\t\t\t  const Oid *exclOp,\n\t\t\t\t\t  Node *conExpr,\n\t\t\t\t\t
      \ const char *conBin,\n\t\t\t\t\t  bool conIsLocal,\n\t\t\t\t\t  int16 conInhCount,\n\t\t\t\t\t
      \ bool conNoInherit,\n\t\t\t\t\t  bool conPeriod,\n\t\t\t\t\t  bool is_internal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:420,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:422,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:425,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:427,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:430,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:432,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:435,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:437,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:441,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:441,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:443,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - conCat
    - objId
    - conname
    argTypes:
    - ConstraintCategory
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 411
    functionDepth: 4
    functionLinenumber: 411
    functionLinenumberEnd: 447
    functionName: ConstraintNameIsUsed
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - CStringGetDatum
    - table_open
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: "bool ConstraintNameIsUsed(ConstraintCategory conCat, Oid objId,\n\t\t\t\t\t
      const char *conname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:464,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:466,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:469,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:471,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:474,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:476,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:479,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:479,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:481,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - conname
    - namespaceid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 456
    functionDepth: 4
    functionLinenumber: 456
    functionLinenumberEnd: 485
    functionName: ConstraintNameExists
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - CStringGetDatum
    - table_open
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool ConstraintNameExists(const char *conname, Oid namespaceid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:526,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:530,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:532,1
    - Dst: makeObjectName
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:536,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:542,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:542,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:551,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:554,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:556,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:559,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:561,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:564,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:564,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:566,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:573,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:574,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:577,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 5
    argNames:
    - name1
    - name2
    - label
    - namespaceid
    - others
    argTypes:
    - char*
    - char*
    - char*
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 512
    functionDepth: 4
    functionLinenumber: 512
    functionLinenumberEnd: 580
    functionName: ChooseConstraintName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - makeObjectName
    - strlcpy
    - ScanKeyInit
    - systable_endscan
    - strcmp
    - systable_beginscan
    - HeapTupleIsValid
    - CStringGetDatum
    - pfree
    - table_open
    - lfirst
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *\nChooseConstraintName(const char *name1, const char *name2,\n\t\t\t\t\t
      const char *label, Oid namespaceid,\n\t\t\t\t\t List *others)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:542,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:542,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 547
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 353
    functionsReached:
    - lfirst
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach(l, others)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:600,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:601,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:604,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:605,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:608,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:608,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:610,1
    - Dst: extractNotNullColumn
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:620,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:625,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:629,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:630,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - relid
    - attnum
    argTypes:
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 591
    functionDepth: 4
    functionLinenumber: 591
    functionLinenumberEnd: 633
    functionName: findNotNullConstraintAttnum
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - extractNotNullColumn
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - heap_copytuple
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple findNotNullConstraintAttnum(Oid relid, AttrNumber attnum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:646,1
    - Dst: findNotNullConstraintAttnum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - relid
    - colname
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 641
    functionDepth: 5
    functionLinenumber: 641
    functionLinenumberEnd: 651
    functionName: findNotNullConstraint
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - get_attnum
    - findNotNullConstraintAttnum
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple findNotNullConstraint(Oid relid, const char *colname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:666,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:667,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:670,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:671,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:674,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:674,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:676,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:687,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:691,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:692,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - typid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 657
    functionDepth: 4
    functionLinenumber: 657
    functionLinenumberEnd: 695
    functionName: findDomainNotNullConstraint
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - heap_copytuple
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple findDomainNotNullConstraint(Oid typid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:708,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:708,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:710,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:712,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:713,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:714,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:715,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:716,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:717,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:721,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - constrTup
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 722
    functionName: extractNotNullColumn
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - ARR_HASNULL
    - ARR_ELEMTYPE
    - ARR_DATA_PTR
    - ARR_NDIM
    - GETSTRUCT
    - SysCacheGetAttrNotNull
    - DatumGetArrayTypeP
    - ARR_DIMS
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber extractNotNullColumn(HeapTuple constrTup)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: findNotNullConstraintAttnum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:747,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:748,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:754,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:762,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:763,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:764,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:765,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:765,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:766,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:774,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:775,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:776,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:777,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:777,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:778,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:789,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:789,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:790,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:791,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:792,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:793,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:793,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:794,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:795,1
    - Dst: pg_add_s16_overflow
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:799,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:801,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:802,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:803,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:813,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:815,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 6
    argNames:
    - relid
    - attnum
    - new_conname
    - is_local
    - is_no_inherit
    - is_notvalid
    argTypes:
    - Oid
    - AttrNumber
    - char*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 741
    functionDepth: 5
    functionLinenumber: 741
    functionLinenumberEnd: 821
    functionName: AdjustNotNullInheritance
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - HeapTupleIsValid
    - errdetail
    - ereport
    - CatalogTupleUpdate
    - table_open
    - errhint
    - get_rel_name
    - GETSTRUCT
    - findNotNullConstraintAttnum
    - errmsg
    - NameStr
    - get_attname
    - table_close
    - pg_add_s16_overflow
    linkageType: ''
    returnType: bool
    signature: "bool AdjustNotNullInheritance(Oid relid, AttrNumber attnum, const
      char *new_conname,\n\t\t\t\t\t\t bool is_local, bool is_no_inherit, bool is_notvalid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:842,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:843,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:846,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:847,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:850,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:850,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:852,1
    - Dst: extractNotNullColumn
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:860,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:866,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:870,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:870,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:879,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:885,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:887,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:887,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:891,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:891,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:891,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:897,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:901,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:902,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 3
    argNames:
    - relid
    - cooked
    - include_noinh
    argTypes:
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 833
    functionDepth: 6
    functionLinenumber: 833
    functionLinenumberEnd: 905
    functionName: RelationGetNotNullConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - extractNotNullColumn
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - makeString
    - pstrdup
    - lappend
    - makeNode
    - table_open
    - GETSTRUCT
    - NameStr
    - palloc_object
    - list_make1
    - get_attname
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: 'List *

      RelationGetNotNullConstraints(Oid relid, bool cooked, bool include_noinh)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:918,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:920,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:920,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:921,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:922,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:923,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:928,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:936,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:949,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:950,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:951,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:952,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:953,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:955,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:961,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:962,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:964,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:966,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:968,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:972,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:974,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:984,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:987,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:990,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:991,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - conId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 911
    functionDepth: 3
    functionLinenumber: 911
    functionLinenumberEnd: 992
    functionName: RemoveConstraintById
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - table_open
    - CatalogTupleDelete
    - ReleaseSysCache
    - SearchSysCacheCopy1
    - GETSTRUCT
    - RelationGetRelationName
    - OidIsValid
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: void RemoveConstraintById(Oid conId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1011,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1013,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1013,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1014,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1015,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1016,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1021,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1022,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1025,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1026,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1027,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1028,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1029,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1030,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1033,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1034,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1035,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1036,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1039,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1041,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1043,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1045,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1046,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - conId
    - newname
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1004
    functionDepth: 5
    functionLinenumber: 1004
    functionLinenumberEnd: 1047
    functionName: RenameConstraintById
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - elog
    - InvokeObjectPostAlterHook
    - ConstraintNameIsUsed
    - format_type_be
    - errcode
    - HeapTupleIsValid
    - heap_freetuple
    - ereport
    - CatalogTupleUpdate
    - table_open
    - namestrcpy
    - SearchSysCacheCopy1
    - get_rel_name
    - GETSTRUCT
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: void RenameConstraintById(Oid conId, const char *newname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1065,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1067,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1070,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1071,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1074,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1076,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1079,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1079,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1081,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1084,1
    - Dst: object_address_present
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1086,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1092,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1093,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1097,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1106,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1108,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1111,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 5
    argNames:
    - ownerId
    - oldNspId
    - newNspId
    - isType
    - objsMoved
    argTypes:
    - Oid
    - Oid
    - Oid
    - bool
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1056
    functionDepth: 4
    functionLinenumber: 1056
    functionLinenumberEnd: 1114
    functionName: AlterConstraintNamespaces
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - InvokeObjectPostAlterHook
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - object_address_present
    - table_open
    - add_exact_object_address
    - ObjectAddressSet
    - GETSTRUCT
    - heap_copytuple
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: "void AlterConstraintNamespaces(Oid ownerId, Oid oldNspId,\n\t\t\t\t\t\t
      \ Oid newNspId, bool isType, ObjectAddresses *objsMoved)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1137,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1138,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1138,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1139,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1140,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1141,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1142,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1146,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1148,1
    - Dst: pg_add_s16_overflow
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1154,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1155,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1156,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1160,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1162,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1164,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1165,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1167,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1177,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1179,1
    - Dst: deleteDependencyRecordsForClass
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1181,1
    - Dst: deleteDependencyRecordsForClass
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1184,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1189,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1190,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - childConstrId
    - parentConstrId
    - childTableId
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1125
    functionDepth: 5
    functionLinenumber: 1125
    functionLinenumberEnd: 1191
    functionName: ConstraintSetParentConstraint
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - errcode
    - recordDependencyOn
    - table_close
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - Assert
    - table_open
    - deleteDependencyRecordsForClass
    - ReleaseSysCache
    - heap_copytuple
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - ereport
    - GETSTRUCT
    - CatalogTupleUpdate
    - ObjectAddressSet
    - pg_add_s16_overflow
    linkageType: ''
    returnType: void
    signature: "void ConstraintSetParentConstraint(Oid childConstrId,\n\t\t\t\t\t\t\t
      \ Oid parentConstrId,\n\t\t\t\t\t\t\t  Oid childTableId)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1208,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1210,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1213,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1214,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1217,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1218,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1221,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1223,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1227,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1227,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1228,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1230,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1234,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1235,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1236,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1237,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1239,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - relid
    - conname
    - missing_ok
    argTypes:
    - Oid
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1199
    functionDepth: 4
    functionLinenumber: 1199
    functionLinenumberEnd: 1242
    functionName: get_relation_constraint_oid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 1
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - errcode
    - HeapTupleIsValid
    - CStringGetDatum
    - ereport
    - table_open
    - get_rel_name
    - GETSTRUCT
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: Oid
    signature: Oid get_relation_constraint_oid(Oid relid, const char *conname, bool
      missing_ok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1269,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1271,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1274,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1275,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1278,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1279,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1282,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1284,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1288,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1288,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1293,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1296,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1297,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1305,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1306,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1307,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1309,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1310,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1311,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1312,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1317,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1323,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1327,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1328,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1329,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1330,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1332,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - relid
    - conname
    - missing_ok
    - constraintOid
    argTypes:
    - Oid
    - char*
    - bool
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1256
    functionDepth: 4
    functionLinenumber: 1256
    functionLinenumberEnd: 1335
    functionName: get_relation_constraint_attnos
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - errcode
    - ARR_NDIM
    - table_close
    - bms_add_member
    - elog
    - systable_endscan
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - get_rel_name
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - ARR_DIMS
    - heap_getattr
    - systable_beginscan
    - CStringGetDatum
    - ereport
    - ARR_HASNULL
    - ARR_DATA_PTR
    - GETSTRUCT
    - DatumGetArrayTypeP
    - ScanKeyInit
    - ARR_ELEMTYPE
    - systable_getnext
    linkageType: ''
    returnType: Bitmapset
    signature: "Bitmapset *\nget_relation_constraint_attnos(Oid relid, const char
      *conname,\n\t\t\t\t\t\t\t   bool missing_ok, Oid *constraintOid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1354,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1356,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1360,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1361,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1363,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1367,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1381,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1383,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - relationId
    - indexId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1345
    functionDepth: 4
    functionLinenumber: 1345
    functionLinenumberEnd: 1385
    functionName: get_relation_idx_constraint_oid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - table_open
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: Oid
    signature: Oid get_relation_idx_constraint_oid(Oid relationId, Oid indexId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1401,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1403,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1406,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1407,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1410,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1411,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1414,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1416,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1420,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1420,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1421,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1423,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1426,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1427,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1428,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1429,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1430,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1432,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - typid
    - conname
    - missing_ok
    argTypes:
    - Oid
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1392
    functionDepth: 4
    functionLinenumber: 1392
    functionLinenumberEnd: 1435
    functionName: get_domain_constraint_oid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 1
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - format_type_be
    - systable_beginscan
    - errcode
    - HeapTupleIsValid
    - CStringGetDatum
    - ereport
    - table_open
    - GETSTRUCT
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: Oid
    signature: Oid get_domain_constraint_oid(Oid typid, const char *conname, bool
      missing_ok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1464,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1466,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1469,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1471,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1474,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1474,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1476,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1497,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1498,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1500,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1501,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1502,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1503,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1504,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1506,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1507,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1508,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1509,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1514,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1517,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1523,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1525,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 3
    argNames:
    - relid
    - deferrableOk
    - constraintOid
    argTypes:
    - Oid
    - bool
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1451
    functionDepth: 4
    functionLinenumber: 1451
    functionLinenumberEnd: 1528
    functionName: get_primary_key_attnos
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ARR_NDIM
    - table_close
    - bms_add_member
    - elog
    - systable_endscan
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - ObjectIdGetDatum
    - ARR_DIMS
    - heap_getattr
    - systable_beginscan
    - ARR_HASNULL
    - ARR_DATA_PTR
    - GETSTRUCT
    - DatumGetArrayTypeP
    - ScanKeyInit
    - ARR_ELEMTYPE
    - systable_getnext
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      get_primary_key_attnos(Oid relid, bool deferrableOk, Oid *constraintOid)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1553,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1555,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1556,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1557,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1558,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1559,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1560,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1562,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1563,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1563,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1564,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1565,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1567,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1569,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1570,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1571,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1572,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1573,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1574,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1575,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1575,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1576,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1577,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1581,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1583,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1585,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1586,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1587,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1588,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1589,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1590,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1590,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1591,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1592,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1597,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1599,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1600,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1601,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1602,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1603,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1604,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1605,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1605,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1606,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1607,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1612,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1614,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1615,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1616,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1617,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1618,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1619,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1620,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1620,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1621,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1622,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1627,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1637,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1638,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1639,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1640,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1641,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1642,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1643,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1643,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1644,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1645,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 61
    argCount: 9
    argNames:
    - tuple
    - numfks
    - conkey
    - confkey
    - pf_eq_oprs
    - pp_eq_oprs
    - ff_eq_oprs
    - num_fk_del_set_cols
    - fk_del_set_cols
    argTypes:
    - HeapTuple
    - int*
    - AttrNumber*
    - AttrNumber*
    - Oid*
    - Oid*
    - Oid*
    - int*
    - AttrNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1537
    functionDepth: 1
    functionLinenumber: 1537
    functionLinenumberEnd: 1652
    functionName: DeconstructFkConstraintRow
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - pfree
    - ARR_HASNULL
    - ARR_ELEMTYPE
    - SysCacheGetAttr
    - ARR_DATA_PTR
    - ARR_NDIM
    - SysCacheGetAttrNotNull
    - DatumGetArrayTypeP
    - ARR_DIMS
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void DeconstructFkConstraintRow(HeapTuple tuple, int *numfks,\n\t\t\t\t\t\t
      \  AttrNumber *conkey, AttrNumber *confkey,\n\t\t\t\t\t\t   Oid *pf_eq_oprs,
      Oid *pp_eq_oprs, Oid *ff_eq_oprs,\n\t\t\t\t\t\t   int *num_fk_del_set_cols,
      AttrNumber *fk_del_set_cols)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_opclass_opfamily_and_input_type
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1678,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1681,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1682,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1683,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1684,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1688,1
    - Dst: GetOperatorFromCompareType
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1696,1
    - Dst: GetOperatorFromCompareType
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1707,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1722,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - opclass
    - containedbyoperoid
    - aggedcontainedbyoperoid
    - intersectoperoid
    argTypes:
    - Oid
    - Oid*
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1667
    functionDepth: 1
    functionLinenumber: 1667
    functionLinenumberEnd: 1724
    functionName: FindFKPeriodOpers
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - elog
    - GetOperatorFromCompareType
    - errcode
    - get_opclass_opfamily_and_input_type
    - ereport
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: "void FindFKPeriodOpers(Oid opclass,\n\t\t\t\t  Oid *containedbyoperoid,\n\t\t\t\t
      \ Oid *aggedcontainedbyoperoid,\n\t\t\t\t  Oid *intersectoperoid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_primary_key_attnos
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1753,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1761,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1763,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1766,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1770,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1773,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 5
    argNames:
    - relid
    - varno
    - varlevelsup
    - grouping_columns
    - constraintDeps
    argTypes:
    - Oid
    - Index
    - Index
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1741
    functionDepth: 6
    functionLinenumber: 1741
    functionLinenumberEnd: 1778
    functionName: check_functional_grouping
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 2
    functionsReached:
    - get_primary_key_attnos
    - lfirst
    - lappend_oid
    - IsA
    - bms_add_member
    - bms_is_subset
    linkageType: ''
    returnType: bool
    signature: "bool check_functional_grouping(Oid relid,\n\t\t\t\t\t\t  Index varno,
      Index varlevelsup,\n\t\t\t\t\t\t  List *grouping_columns,\n\t\t\t\t\t\t  List
      **constraintDeps)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1761,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1763,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1766,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1759
    functionDepth: 3
    functionLinenumber: 1759
    functionLinenumberEnd: 1768
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 353
    functionsReached:
    - lfirst
    - bms_add_member
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(gl, grouping_columns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/catalog/storage.c:99,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/storage.c:103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/storage.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - rlocator
    argTypes:
    - RelFileLocator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 106
    functionName: AddPendingSync
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_search
    - hash_create
    linkageType: ''
    returnType: void
    signature: void AddPendingSync(const RelFileLocator *rlocator)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/storage.c:129,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/catalog/storage.c:129,1
    - Dst: ProcNumberForTempRelations
      Src: /src/postgres/src/backend/catalog/storage.c:134,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/storage.c:146,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/catalog/storage.c:150,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/catalog/storage.c:151,1
    - Dst: log_smgrcreate
      Src: /src/postgres/src/backend/catalog/storage.c:154,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/catalog/storage.c:165,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/storage.c:169,1
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/catalog/storage.c:174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/storage.c:176,1
    - Dst: AddPendingSync
      Src: /src/postgres/src/backend/catalog/storage.c:177,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 3
    argNames:
    - rlocator
    - relpersistence
    - register_delete
    argTypes:
    - RelFileLocator
    - char
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 181
    functionName: RelationCreateStorage
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 2
    functionsReached:
    - elog
    - smgrcreate
    - GetCurrentTransactionNestLevel
    - MemoryContextAlloc
    - Assert
    - ProcNumberForTempRelations
    - XLogIsNeeded
    - AddPendingSync
    - IsInParallelMode
    - log_smgrcreate
    - smgropen
    linkageType: ''
    returnType: SMgrRelation
    signature: "SMgrRelation RelationCreateStorage(RelFileLocator rlocator, char relpersistence,\n\t\t\t\t\t
      \ bool register_delete)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/catalog/storage.c:197,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/catalog/storage.c:198,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/catalog/storage.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rlocator
    - forkNum
    argTypes:
    - RelFileLocator*
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 186
    functionDepth: 3
    functionLinenumber: 186
    functionLinenumberEnd: 200
    functionName: log_smgrcreate
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 3
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void log_smgrcreate(const RelFileLocator *rlocator, ForkNumber forkNum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/catalog/storage.c:213,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/storage.c:217,1
    - Dst: RelationCloseSmgr
      Src: /src/postgres/src/backend/catalog/storage.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 232
    functionName: RelationDropStorage
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 1
    functionsReached:
    - RelationCloseSmgr
    - GetCurrentTransactionNestLevel
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: void RelationDropStorage(Relation rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/catalog/storage.c:262,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/storage.c:270,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - rlocator
    - atCommit
    argTypes:
    - RelFileLocator
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 279
    functionName: RelationPreserveStorage
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 0
    functionsReached:
    - RelFileLocatorEquals
    - pfree
    linkageType: ''
    returnType: void
    signature: void RelationPreserveStorage(RelFileLocator rlocator, bool atCommit)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/catalog/storage.c:304,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/catalog/storage.c:311,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/catalog/storage.c:316,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/catalog/storage.c:316,1
    - Dst: FreeSpaceMapPrepareTruncateRel
      Src: /src/postgres/src/backend/catalog/storage.c:319,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/catalog/storage.c:320,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/catalog/storage.c:323,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/catalog/storage.c:330,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/catalog/storage.c:330,1
    - Dst: visibilitymap_prepare_truncate
      Src: /src/postgres/src/backend/catalog/storage.c:333,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/catalog/storage.c:334,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/catalog/storage.c:337,1
    - Dst: RelationPreTruncate
      Src: /src/postgres/src/backend/catalog/storage.c:342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/storage.c:370,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/catalog/storage.c:386,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/catalog/storage.c:388,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/catalog/storage.c:400,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/catalog/storage.c:401,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/catalog/storage.c:403,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/catalog/storage.c:414,1
    - Dst: smgrtruncate
      Src: /src/postgres/src/backend/catalog/storage.c:422,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/catalog/storage.c:422,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/catalog/storage.c:424,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/catalog/storage.c:439,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 46
    argCount: 2
    argNames:
    - rel
    - nblocks
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 288
    functionDepth: 5
    functionLinenumber: 288
    functionLinenumberEnd: 440
    functionName: RelationTruncate
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 3
    functionsReached:
    - XLogInsert
    - XLogBeginInsert
    - RelationGetSmgr
    - Assert
    - BlockNumberIsValid
    - visibilitymap_prepare_truncate
    - smgrtruncate
    - START_CRIT_SECTION
    - XLogFlush
    - XLogRegisterData
    - smgrexists
    - RelationNeedsWAL
    - FreeSpaceMapVacuumRange
    - FreeSpaceMapPrepareTruncateRel
    - RelationPreTruncate
    - smgrnblocks
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void RelationTruncate(Relation rel, BlockNumber nblocks)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/storage.c:457,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/catalog/storage.c:458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 449
    functionDepth: 2
    functionLinenumber: 449
    functionLinenumberEnd: 462
    functionName: RelationPreTruncate
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 1
    functionsReached:
    - RelationGetSmgr
    - hash_search
    linkageType: ''
    returnType: void
    signature: void RelationPreTruncate(Relation rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/catalog/storage.c:501,1
    - Dst: smgr_bulk_start_smgr
      Src: /src/postgres/src/backend/catalog/storage.c:504,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/catalog/storage.c:506,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/catalog/storage.c:516,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/catalog/storage.c:518,1
    - Dst: smgrread
      Src: /src/postgres/src/backend/catalog/storage.c:519,1
    - Dst: PageIsVerified
      Src: /src/postgres/src/backend/catalog/storage.c:524,1
    - Dst: pgstat_prepare_report_checksum_failure
      Src: /src/postgres/src/backend/catalog/storage.c:530,1
    - Dst: pgstat_report_checksum_failures_in_db
      Src: /src/postgres/src/backend/catalog/storage.c:531,1
    - Dst: relpathbackend
      Src: /src/postgres/src/backend/catalog/storage.c:543,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/storage.c:547,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/storage.c:548,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/storage.c:549,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/catalog/storage.c:558,1
    - Dst: smgr_bulk_finish
      Src: /src/postgres/src/backend/catalog/storage.c:560,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - src
    - dst
    - forkNum
    - relpersistence
    argTypes:
    - SMgrRelation
    - SMgrRelation
    - ForkNumber
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 477
    functionDepth: 2
    functionLinenumber: 477
    functionLinenumberEnd: 561
    functionName: RelationCopyStorage
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 1
    functionsReached:
    - smgr_bulk_get_buf
    - pgstat_prepare_report_checksum_failure
    - errcode
    - smgr_bulk_finish
    - relpathbackend
    - ereport
    - CHECK_FOR_INTERRUPTS
    - PageIsVerified
    - XLogIsNeeded
    - errmsg
    - smgrnblocks
    - pgstat_report_checksum_failures_in_db
    - smgr_bulk_write
    - smgr_bulk_start_smgr
    - smgrread
    linkageType: ''
    returnType: void
    signature: "void RelationCopyStorage(SMgrRelation src, SMgrRelation dst,\n\t\t\t\t\tForkNumber
      forkNum, char relpersistence)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/storage.c:576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - rlocator
    argTypes:
    - RelFileLocator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 580
    functionName: RelFileLocatorSkippingWAL
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 0
    functionsReached:
    - hash_search
    linkageType: ''
    returnType: bool
    signature: bool RelFileLocatorSkippingWAL(RelFileLocator rlocator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/catalog/storage.c:591,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/catalog/storage.c:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 593
    functionName: EstimatePendingSyncsSpace
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 1
    functionsReached:
    - hash_get_num_entries
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size EstimatePendingSyncsSpace(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/catalog/storage.c:617,1
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/catalog/storage.c:618,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/catalog/storage.c:622,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/catalog/storage.c:623,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/storage.c:624,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/storage.c:629,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/catalog/storage.c:632,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/catalog/storage.c:633,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/catalog/storage.c:636,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/catalog/storage.c:639,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - maxSize
    - startAddress
    argTypes:
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 640
    functionName: SerializePendingSyncs
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 1
    functionsReached:
    - hash_search
    - hash_create
    - hash_get_num_entries
    - hash_seq_search
    - hash_seq_init
    - hash_destroy
    - MemSet
    linkageType: ''
    returnType: void
    signature: void SerializePendingSyncs(Size maxSize, char *startAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/storage.c:655,1
    - Dst: AddPendingSync
      Src: /src/postgres/src/backend/catalog/storage.c:658,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - startAddress
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 650
    functionDepth: 2
    functionLinenumber: 650
    functionLinenumberEnd: 659
    functionName: RestorePendingSyncs
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 1
    functionsReached:
    - Assert
    - AddPendingSync
    linkageType: ''
    returnType: void
    signature: void RestorePendingSyncs(char *startAddress)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/storage.c:675,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/catalog/storage.c:704,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/storage.c:710,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/catalog/storage.c:715,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/storage.c:721,1
    - Dst: smgrdounlinkall
      Src: /src/postgres/src/backend/catalog/storage.c:728,1
    - Dst: smgrclose
      Src: /src/postgres/src/backend/catalog/storage.c:731,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/storage.c:733,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 672
    functionDepth: 1
    functionLinenumber: 672
    functionLinenumberEnd: 735
    functionName: smgrDoPendingDeletes
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 2
    functionsReached:
    - GetCurrentTransactionNestLevel
    - pfree
    - smgrclose
    - palloc_array
    - repalloc_array
    - smgropen
    - smgrdounlinkall
    linkageType: ''
    returnType: void
    signature: void smgrDoPendingDeletes(bool isCommit)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/storage.c:750,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/storage.c:750,1
    - Dst: AssertPendingSyncs_RelationCache
      Src: /src/postgres/src/backend/catalog/storage.c:762,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/storage.c:774,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/catalog/storage.c:777,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/catalog/storage.c:778,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/catalog/storage.c:785,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/catalog/storage.c:799,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/catalog/storage.c:801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/storage.c:804,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/storage.c:832,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/catalog/storage.c:837,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/catalog/storage.c:850,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/catalog/storage.c:859,1
    - Dst: log_newpage_range
      Src: /src/postgres/src/backend/catalog/storage.c:860,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/catalog/storage.c:861,1
    - Dst: smgrdosyncall
      Src: /src/postgres/src/backend/catalog/storage.c:870,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/storage.c:871,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 2
    argNames:
    - isCommit
    - isParallelWorker
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 740
    functionDepth: 6
    functionLinenumber: 740
    functionLinenumberEnd: 873
    functionName: smgrDoPendingSyncs
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 3
    functionsReached:
    - hash_search
    - AssertPendingSyncs_RelationCache
    - GetCurrentTransactionNestLevel
    - Assert
    - smgrdosyncall
    - pfree
    - BlockNumberIsValid
    - palloc_array
    - hash_seq_search
    - smgrexists
    - hash_seq_init
    - CreateFakeRelcacheEntry
    - FreeFakeRelcacheEntry
    - repalloc_array
    - smgropen
    - log_newpage_range
    - smgrnblocks
    linkageType: ''
    returnType: void
    signature: void smgrDoPendingSyncs(bool isCommit, bool isParallelWorker)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/storage.c:895,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/storage.c:912,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - forCommit
    - ptr
    argTypes:
    - bool
    - RelFileLocator**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 924
    functionName: smgrGetPendingDeletes
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 3
    functionsReached:
    - palloc_array
    - GetCurrentTransactionNestLevel
    linkageType: ''
    returnType: int
    signature: int smgrGetPendingDeletes(bool forCommit, RelFileLocator **ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/storage.c:944,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 946
    functionName: PostPrepare_smgr
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void PostPrepare_smgr(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/storage.c:957,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 965
    functionName: AtSubCommit_smgr
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 1
    functionsReached:
    - GetCurrentTransactionNestLevel
    linkageType: ''
    returnType: void
    signature: void AtSubCommit_smgr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smgrDoPendingDeletes
      Src: /src/postgres/src/backend/catalog/storage.c:977,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 974
    functionDepth: 2
    functionLinenumber: 974
    functionLinenumberEnd: 978
    functionName: AtSubAbort_smgr
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 1
    functionsReached:
    - smgrDoPendingDeletes
    linkageType: ''
    returnType: void
    signature: void AtSubAbort_smgr(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/catalog/storage.c:984,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/storage.c:987,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/catalog/storage.c:987,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/catalog/storage.c:991,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/catalog/storage.c:994,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/catalog/storage.c:995,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/catalog/storage.c:999,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/catalog/storage.c:1008,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/catalog/storage.c:1016,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/catalog/storage.c:1033,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/catalog/storage.c:1039,1
    - Dst: XLogTruncateRelation
      Src: /src/postgres/src/backend/catalog/storage.c:1044,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/catalog/storage.c:1048,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/catalog/storage.c:1051,1
    - Dst: FreeSpaceMapPrepareTruncateRel
      Src: /src/postgres/src/backend/catalog/storage.c:1053,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/catalog/storage.c:1054,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/catalog/storage.c:1057,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/catalog/storage.c:1063,1
    - Dst: visibilitymap_prepare_truncate
      Src: /src/postgres/src/backend/catalog/storage.c:1065,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/catalog/storage.c:1066,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/catalog/storage.c:1069,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/catalog/storage.c:1077,1
    - Dst: smgrtruncate
      Src: /src/postgres/src/backend/catalog/storage.c:1078,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/catalog/storage.c:1079,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/catalog/storage.c:1088,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/catalog/storage.c:1091,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/storage.c:1094,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 980
    functionDepth: 5
    functionLinenumber: 980
    functionLinenumberEnd: 1095
    functionName: smgr_redo
    functionSourceFile: /src/postgres/src/backend/catalog/storage.c
    functionUses: 0
    functionsReached:
    - smgrcreate
    - BlockNumberIsValid
    - visibilitymap_prepare_truncate
    - smgrtruncate
    - smgrexists
    - XLogRecGetInfo
    - elog
    - Assert
    - smgropen
    - XLogRecHasAnyBlockRefs
    - FreeSpaceMapVacuumRange
    - FreeSpaceMapPrepareTruncateRel
    - CreateFakeRelcacheEntry
    - XLogRecGetData
    - XLogFlush
    - START_CRIT_SECTION
    - XLogTruncateRelation
    - FreeFakeRelcacheEntry
    - smgrnblocks
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void smgr_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckAndCreateToastTable
      Src: /src/postgres/src/backend/catalog/toasting.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - relOid
    - reloptions
    - lockmode
    argTypes:
    - Oid
    - Datum
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: AlterTableCreateToastTable
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 0
    functionsReached:
    - CheckAndCreateToastTable
    linkageType: ''
    returnType: void
    signature: void AlterTableCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE
      lockmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckAndCreateToastTable
      Src: /src/postgres/src/backend/catalog/toasting.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - relOid
    - reloptions
    - lockmode
    - OIDOldToast
    argTypes:
    - Oid
    - Datum
    - LOCKMODE
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: NewHeapCreateToastTable
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 0
    functionsReached:
    - CheckAndCreateToastTable
    linkageType: ''
    returnType: void
    signature: "void NewHeapCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE
      lockmode,\n\t\t\t\t\t\tOid OIDOldToast)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckAndCreateToastTable
      Src: /src/postgres/src/backend/catalog/toasting.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - relOid
    - reloptions
    argTypes:
    - Oid
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 76
    functionName: NewRelationCreateToastTable
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 1
    functionsReached:
    - CheckAndCreateToastTable
    linkageType: ''
    returnType: void
    signature: void NewRelationCreateToastTable(Oid relOid, Datum reloptions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/toasting.c:84,1
    - Dst: create_toast_table
      Src: /src/postgres/src/backend/catalog/toasting.c:87,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/toasting.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - relOid
    - reloptions
    - lockmode
    - check
    - OIDOldToast
    argTypes:
    - Oid
    - Datum
    - LOCKMODE
    - bool
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 91
    functionName: CheckAndCreateToastTable
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 3
    functionsReached:
    - table_open
    - table_close
    - create_toast_table
    linkageType: ''
    returnType: void
    signature: "void CheckAndCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE
      lockmode,\n\t\t\t\t\t\t bool check, Oid OIDOldToast)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_openrv
      Src: /src/postgres/src/backend/catalog/toasting.c:103,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/catalog/toasting.c:103,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:107,1
    - Dst: create_toast_table
      Src: /src/postgres/src/backend/catalog/toasting.c:111,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:113,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/toasting.c:116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - relName
    - toastOid
    - toastIndexOid
    argTypes:
    - char*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 117
    functionName: BootstrapToastTable
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 0
    functionsReached:
    - elog
    - table_openrv
    - makeRangeVar
    - table_close
    - create_toast_table
    linkageType: ''
    returnType: void
    signature: void BootstrapToastTable(char *relName, Oid toastOid, Oid toastIndexOid)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/toasting.c:132,1
    - Dst: needs_toast_table
      Src: /src/postgres/src/backend/catalog/toasting.c:162,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/toasting.c:185,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:194,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/toasting.c:199,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/toasting.c:201,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/catalog/toasting.c:205,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/toasting.c:206,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/toasting.c:210,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/toasting.c:214,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/toasting.c:224,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/toasting.c:225,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/toasting.c:226,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/toasting.c:229,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/toasting.c:230,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/toasting.c:231,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/catalog/toasting.c:233,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/catalog/toasting.c:234,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/catalog/toasting.c:235,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/catalog/toasting.c:237,1
    - Dst: isTempOrTempToastNamespace
      Src: /src/postgres/src/backend/catalog/toasting.c:243,1
    - Dst: GetTempToastNamespace
      Src: /src/postgres/src/backend/catalog/toasting.c:244,1
    - Dst: RelationIsMapped
      Src: /src/postgres/src/backend/catalog/toasting.c:252,1
    - Dst: heap_create_with_catalog
      Src: /src/postgres/src/backend/catalog/toasting.c:254,1
    - Dst: table_relation_toast_am
      Src: /src/postgres/src/backend/catalog/toasting.c:261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/toasting.c:275,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/toasting.c:278,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/toasting.c:281,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/catalog/toasting.c:295,1
    - Dst: index_create
      Src: /src/postgres/src/backend/catalog/toasting.c:328,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/toasting.c:331,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/toasting.c:337,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/toasting.c:342,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/toasting.c:344,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/toasting.c:347,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/toasting.c:347,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/toasting.c:348,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:349,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/toasting.c:351,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/toasting.c:353,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/toasting.c:362,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/toasting.c:365,1
    - Dst: systable_inplace_update_begin
      Src: /src/postgres/src/backend/catalog/toasting.c:366,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/toasting.c:368,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:369,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/toasting.c:371,1
    - Dst: systable_inplace_update_finish
      Src: /src/postgres/src/backend/catalog/toasting.c:373,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/toasting.c:376,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/toasting.c:378,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/toasting.c:384,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/toasting.c:393,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/toasting.c:399,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 96
    argCount: 7
    argNames:
    - rel
    - toastOid
    - toastIndexOid
    - reloptions
    - lockmode
    - check
    - OIDOldToast
    argTypes:
    - Relation
    - Oid
    - Oid
    - Datum
    - LOCKMODE
    - bool
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 127
    functionDepth: 5
    functionLinenumber: 127
    functionLinenumberEnd: 402
    functionName: create_toast_table
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 2
    functionsReached:
    - recordDependencyOn
    - isTempOrTempToastNamespace
    - table_close
    - elog
    - heap_create_with_catalog
    - heap_freetuple
    - Assert
    - TupleDescFinalize
    - HeapTupleIsValid
    - systable_inplace_update_finish
    - CommandCounterIncrement
    - table_open
    - needs_toast_table
    - systable_inplace_update_begin
    - RelationIsMapped
    - populate_compact_attribute
    - OidIsValid
    - ObjectIdGetDatum
    - TupleDescInitEntry
    - CreateTemplateTupleDesc
    - SearchSysCacheCopy1
    - IsBootstrapProcessingMode
    - GETSTRUCT
    - TupleDescAttr
    - ScanKeyInit
    - CatalogTupleUpdate
    - makeNode
    - list_make2
    - index_create
    - GetTempToastNamespace
    - table_relation_toast_am
    - RelationGetRelid
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,\n\t\t\t\t
      \  Datum reloptions, LOCKMODE lockmode, bool check,\n\t\t\t\t   Oid OIDOldToast)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/toasting.c:420,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/catalog/toasting.c:429,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/toasting.c:429,1
    - Dst: table_relation_needs_toast_table
      Src: /src/postgres/src/backend/catalog/toasting.c:433,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 434
    functionName: needs_toast_table
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 3
    functionsReached:
    - IsCatalogRelation
    - table_relation_needs_toast_table
    - IsBootstrapProcessingMode
    linkageType: ''
    returnType: bool
    signature: bool needs_toast_table(Relation rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:56,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:61,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:66,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:68,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:69,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:69,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:70,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:71,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:73,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:74,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:80,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:83,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:83,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:84,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:85,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:91,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:92,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:93,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:93,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:94,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:95,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:96,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:97,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:98,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:101,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:104,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:104,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:107,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:109,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:110,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:119,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:122,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:128,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:128,1
    - Dst: InvokeObjectPostCreateHookArg
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:140,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 4
    argNames:
    - rel
    - attnum
    - expr
    - is_internal
    argTypes:
    - Relation
    - AttrNumber
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 36
    functionDepth: 7
    functionLinenumber: 36
    functionLinenumberEnd: 144
    functionName: StoreAttrDefault
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - recordDependencyOn
    - table_close
    - CatalogTupleInsert
    - recordDependencyOnSingleRelExpr
    - elog
    - heap_freetuple
    - pfree
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - nodeToString
    - ObjectIdGetDatum
    - GetNewOidWithIndex
    - InvokeObjectPostCreateHookArg
    - GETSTRUCT
    - heap_modify_tuple
    - Int16GetDatum
    - CatalogTupleUpdate
    - CStringGetTextDatum
    - SearchSysCacheCopy2
    - BoolGetDatum
    - RelationGetRelid
    - DatumGetPointer
    linkageType: ''
    returnType: Oid
    signature: "Oid StoreAttrDefault(Relation rel, AttrNumber attnum,\n\t\t\t\t Node
      *expr, bool is_internal)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:163,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:165,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:168,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:169,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:172,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:174,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:178,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:178,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:181,1
    - Dst: performDeletion
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:187,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:193,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:194,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 5
    argNames:
    - relid
    - attnum
    - behavior
    - complain
    - internal
    argTypes:
    - Oid
    - AttrNumber
    - DropBehavior
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 153
    functionDepth: 4
    functionLinenumber: 153
    functionLinenumberEnd: 199
    functionName: RemoveAttrDefault
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 0
    functionsReached:
    - elog
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - performDeletion
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: "void RemoveAttrDefault(Oid relid, AttrNumber attnum,\n\t\t\t\t  DropBehavior
      behavior, bool complain, bool internal)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:221,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:224,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:227,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:229,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:232,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:233,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:234,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:236,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:237,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:240,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:243,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:245,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:246,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:249,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:251,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:252,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:253,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:254,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:255,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:258,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:260,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:266,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - attrdefId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 208
    functionDepth: 4
    functionLinenumber: 208
    functionLinenumberEnd: 270
    functionName: RemoveAttrDefaultById
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 0
    functionsReached:
    - elog
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - table_open
    - CatalogTupleDelete
    - GETSTRUCT
    - SearchSysCacheCopy2
    - relation_close
    - relation_open
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: void RemoveAttrDefaultById(Oid attrdefId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:288,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:289,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:293,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:294,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:298,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:299,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:302,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:302,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:304,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:309,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - relid
    - attnum
    argTypes:
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 279
    functionDepth: 4
    functionLinenumber: 279
    functionLinenumberEnd: 313
    functionName: GetAttrDefaultOid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 1
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    - Int16GetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid GetAttrDefaultOid(Oid relid, AttrNumber attnum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:330,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:331,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:334,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:335,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:338,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:338,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:340,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:347,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - attrdefoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 321
    functionDepth: 4
    functionLinenumber: 321
    functionLinenumberEnd: 351
    functionName: GetAttrDefaultColumnAddress
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 2
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress GetAttrDefaultColumnAddress(Oid attrdefoid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/partition.c:59,1
    - Dst: get_partition_parent_worker
      Src: /src/postgres/src/backend/catalog/partition.c:61,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/partition.c:64,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/partition.c:65,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/partition.c:68,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/partition.c:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - relid
    - even_if_detached
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 74
    functionName: get_partition_parent
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 0
    functionsReached:
    - elog
    - get_partition_parent_worker
    - table_open
    - OidIsValid
    - table_close
    linkageType: ''
    returnType: Oid
    signature: Oid get_partition_parent(Oid relid, bool even_if_detached)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/partition.c:94,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/partition.c:97,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/partition.c:98,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/partition.c:101,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/partition.c:103,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/partition.c:105,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/partition.c:106,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/partition.c:108,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/partition.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - inhRel
    - relid
    - detach_pending
    argTypes:
    - Relation
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 119
    functionName: get_partition_parent_worker
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 1
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - Int32GetDatum
    - HeapTupleIsValid
    - GETSTRUCT
    - ObjectIdGetDatum
    - systable_getnext
    linkageType: ''
    returnType: Oid
    signature: Oid get_partition_parent_worker(Relation inhRel, Oid relid, bool *detach_pending)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/partition.c:139,1
    - Dst: get_partition_ancestors_worker
      Src: /src/postgres/src/backend/catalog/partition.c:141,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/partition.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 146
    functionName: get_partition_ancestors
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 1
    functionsReached:
    - table_open
    - table_close
    - get_partition_ancestors_worker
    linkageType: ''
    returnType: List
    signature: 'List *

      get_partition_ancestors(Oid relid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_partition_parent_worker
      Src: /src/postgres/src/backend/catalog/partition.c:162,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/partition.c:166,1
    - Dst: get_partition_ancestors_worker
      Src: /src/postgres/src/backend/catalog/partition.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - inhRel
    - relid
    - ancestors
    argTypes:
    - Relation
    - Oid
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 152
    functionDepth: 6
    functionLinenumber: 152
    functionLinenumberEnd: 168
    functionName: get_partition_ancestors_worker
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 2
    functionsReached:
    - get_partition_parent_worker
    - lappend_oid
    - get_partition_ancestors_worker
    linkageType: ''
    returnType: void
    signature: void get_partition_ancestors_worker(Relation inhRel, Oid relid, List
      **ancestors)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/catalog/partition.c:178,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/partition.c:183,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/partition.c:188,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/partition.c:188,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/partition.c:189,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/partition.c:190,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/partition.c:191,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/partition.c:193,1
    - Dst: get_partition_parent
      Src: /src/postgres/src/backend/catalog/partition.c:196,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/partition.c:198,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/partition.c:203,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - partition
    - indexId
    argTypes:
    - Relation
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 175
    functionDepth: 4
    functionLinenumber: 175
    functionLinenumberEnd: 205
    functionName: index_get_partition
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - list_free
    - HeapTupleIsValid
    - ObjectIdGetDatum
    - ReleaseSysCache
    - GETSTRUCT
    - lfirst_oid
    - RelationGetIndexList
    - get_partition_parent
    linkageType: ''
    returnType: Oid
    signature: Oid index_get_partition(Relation partition, Oid indexId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/partition.c:183,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/partition.c:188,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/partition.c:188,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/partition.c:189,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/partition.c:190,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/partition.c:191,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/partition.c:193,1
    - Dst: get_partition_parent
      Src: /src/postgres/src/backend/catalog/partition.c:196,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/partition.c:198,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 181
    functionDepth: 4
    functionLinenumber: 181
    functionLinenumberEnd: 201
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 353
    functionsReached:
    - SearchSysCache1
    - elog
    - list_free
    - HeapTupleIsValid
    - ObjectIdGetDatum
    - ReleaseSysCache
    - GETSTRUCT
    - lfirst_oid
    - get_partition_parent
    linkageType: ''
    returnType: void
    signature: void foreach(l, idxlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/catalog/partition.c:230,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/partition.c:230,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/partition.c:231,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/catalog/partition.c:233,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/partition.c:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - expr
    - fromrel_varno
    - to_rel
    - from_rel
    argTypes:
    - List*
    - int
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 242
    functionName: map_partition_varattnos
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 0
    functionsReached:
    - RelationGetDescr
    - RelationGetForm
    - build_attrmap_by_name
    - map_variable_attnos
    linkageType: ''
    returnType: List
    signature: "List *\nmap_partition_varattnos(List *expr, int fromrel_varno,\n\t\t\t\t\t\tRelation
      to_rel, Relation from_rel)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/catalog/partition.c:266,1
    - Dst: get_partition_natts
      Src: /src/postgres/src/backend/catalog/partition.c:267,1
    - Dst: get_partition_exprs
      Src: /src/postgres/src/backend/catalog/partition.c:268,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/partition.c:270,1
    - Dst: get_partition_col_attnum
      Src: /src/postgres/src/backend/catalog/partition.c:273,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/catalog/partition.c:277,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/partition.c:288,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/catalog/partition.c:292,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/partition.c:293,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/catalog/partition.c:295,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - rel
    - attnums
    - used_in_expr
    argTypes:
    - Relation
    - Bitmapset*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 254
    functionDepth: 3
    functionLinenumber: 254
    functionLinenumberEnd: 305
    functionName: has_partition_attrs
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 0
    functionsReached:
    - get_partition_exprs
    - get_partition_col_attnum
    - bms_is_member
    - lnext
    - pull_varattnos
    - list_head
    - lfirst
    - RelationGetPartitionKey
    - bms_overlap
    - get_partition_natts
    linkageType: ''
    returnType: bool
    signature: bool has_partition_attrs(Relation rel, Bitmapset *attnums, bool *used_in_expr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/partition.c:320,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/partition.c:320,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/partition.c:322,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/partition.c:326,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/partition.c:328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - parentId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 332
    functionName: get_default_partition_oid
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_default_partition_oid(Oid parentId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/partition.c:346,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/partition.c:348,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/partition.c:348,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/partition.c:350,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/partition.c:351,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/partition.c:354,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/partition.c:356,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/partition.c:358,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/partition.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - parentId
    - defaultPartId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 339
    functionDepth: 3
    functionLinenumber: 339
    functionLinenumberEnd: 360
    functionName: update_default_partition_oid
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 0
    functionsReached:
    - elog
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - table_open
    - SearchSysCacheCopy1
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: void update_default_partition_oid(Oid parentId, Oid defaultPartId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/catalog/partition.c:374,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/catalog/partition.c:381,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/partition.c:382,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/catalog/partition.c:387,1
    - Dst: canonicalize_qual
      Src: /src/postgres/src/backend/catalog/partition.c:389,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/catalog/partition.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - new_part_constraints
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 369
    functionDepth: 4
    functionLinenumber: 369
    functionLinenumberEnd: 392
    functionName: get_proposed_default_constraint
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 0
    functionsReached:
    - eval_const_expressions
    - make_ands_explicit
    - list_make1
    - canonicalize_qual
    - make_ands_implicit
    - makeBoolExpr
    linkageType: ''
    returnType: List
    signature: 'List *

      get_proposed_default_constraint(List *new_part_constraints)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/backend/catalog/heap.c:238,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - attno
    argTypes:
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 241
    functionName: SystemAttributeDefinition
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - elog
    - lengthof
    linkageType: ''
    returnType: FormData_pg_attribute
    signature: 'FormData_pg_attribute *

      SystemAttributeDefinition(AttrNumber attno)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lengthof
      Src: /src/postgres/src/backend/catalog/heap.c:252,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:256,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - attname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 261
    functionName: SystemAttributeByName
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - NameStr
    - lengthof
    - strcmp
    linkageType: ''
    returnType: FormData_pg_attribute
    signature: 'FormData_pg_attribute *

      SystemAttributeByName(const char *attname)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:305,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:305,1
    - Dst: IsCatalogNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:317,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:318,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/heap.c:319,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:320,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:321,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:322,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/heap.c:323,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:324,1
    - Dst: RELKIND_HAS_TABLESPACE
      Src: /src/postgres/src/backend/catalog/heap.c:333,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/heap.c:337,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:345,1
    - Dst: RelationBuildLocalRelation
      Src: /src/postgres/src/backend/catalog/heap.c:364,1
    - Dst: RELKIND_HAS_TABLE_AM
      Src: /src/postgres/src/backend/catalog/heap.c:385,1
    - Dst: table_relation_set_new_filelocator
      Src: /src/postgres/src/backend/catalog/heap.c:386,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/heap.c:389,1
    - Dst: RelationCreateStorage
      Src: /src/postgres/src/backend/catalog/heap.c:390,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:392,1
    - Dst: recordDependencyOnTablespace
      Src: /src/postgres/src/backend/catalog/heap.c:401,1
    - Dst: pgstat_create_relation
      Src: /src/postgres/src/backend/catalog/heap.c:405,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 15
    argNames:
    - relname
    - relnamespace
    - reltablespace
    - relid
    - relfilenumber
    - accessmtd
    - tupDesc
    - relkind
    - relpersistence
    - shared_relation
    - mapped_relation
    - allow_system_table_mods
    - relfrozenxid
    - relminmxid
    - create_storage
    argTypes:
    - char*
    - Oid
    - Oid
    - Oid
    - RelFileNumber
    - Oid
    - TupleDesc
    - char
    - char
    - bool
    - bool
    - bool
    - TransactionId*
    - MultiXactId*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 408
    functionName: heap_create
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - errcode
    - RelationCreateStorage
    - RELKIND_HAS_STORAGE
    - table_relation_set_new_filelocator
    - RELKIND_HAS_TABLE_AM
    - Assert
    - pgstat_create_relation
    - recordDependencyOnTablespace
    - errmsg
    - OidIsValid
    - RELKIND_HAS_TABLESPACE
    - RelationBuildLocalRelation
    - IsCatalogNamespace
    - ereport
    - IsToastNamespace
    - get_namespace_name
    - errdetail
    - IsNormalProcessingMode
    - RelFileNumberIsValid
    linkageType: ''
    returnType: Relation
    signature: "Relation heap_create(const char *relname,\n\t\t\tOid relnamespace,\n\t\t\tOid
      reltablespace,\n\t\t\tOid relid,\n\t\t\tRelFileNumber relfilenumber,\n\t\t\tOid
      accessmtd,\n\t\t\tTupleDesc tupDesc,\n\t\t\tchar relkind,\n\t\t\tchar relpersistence,\n\t\t\tbool
      shared_relation,\n\t\t\tbool mapped_relation,\n\t\t\tbool allow_system_table_mods,\n\t\t\tTransactionId
      *relfrozenxid,\n\t\t\tMultiXactId *relminmxid,\n\t\t\tbool create_storage)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:462,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:463,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:464,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:477,1
    - Dst: SystemAttributeByName
      Src: /src/postgres/src/backend/catalog/heap.c:479,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:479,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:480,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:481,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:482,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:483,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:494,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:494,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:494,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:495,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:495,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:496,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:497,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:498,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:499,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:499,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:508,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:512,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:512,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 3
    argNames:
    - tupdesc
    - relkind
    - flags
    argTypes:
    - TupleDesc
    - char
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 452
    functionDepth: 2
    functionLinenumber: 452
    functionLinenumberEnd: 518
    functionName: CheckAttributeNamesTypes
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - ereport
    - SystemAttributeByName
    - CheckAttributeType
    - errmsg
    - NameStr
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: "void CheckAttributeNamesTypes(TupleDesc tupdesc, char relkind,\n\t\t\t\t\t\t
      int flags)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: get_typtype
      Src: /src/postgres/src/backend/catalog/heap.c:554,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/catalog/heap.c:558,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:577,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:578,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:580,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:583,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:584,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:585,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:586,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:598,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:600,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:605,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/catalog/heap.c:605,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:624,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:625,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:626,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:627,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:628,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:630,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/heap.c:632,1
    - Dst: get_typ_typrelid
      Src: /src/postgres/src/backend/catalog/heap.c:632,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:634,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:638,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:642,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:642,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/heap.c:648,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/catalog/heap.c:650,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:657,1
    - Dst: get_range_subtype
      Src: /src/postgres/src/backend/catalog/heap.c:657,1
    - Dst: get_range_collation
      Src: /src/postgres/src/backend/catalog/heap.c:658,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:667,1
    - Dst: get_multirange_range
      Src: /src/postgres/src/backend/catalog/heap.c:667,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:672,1
    - Dst: get_element_type
      Src: /src/postgres/src/backend/catalog/heap.c:672,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:686,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:687,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:688,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:689,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:695,1
    - Dst: type_is_collatable
      Src: /src/postgres/src/backend/catalog/heap.c:695,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:698,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:699,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:701,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:702,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:703,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:705,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:706,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:707,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:708,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:709,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 44
    argCount: 5
    argNames:
    - attname
    - atttypid
    - attcollation
    - containing_rowtypes
    - flags
    argTypes:
    - char*
    - Oid
    - Oid
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 548
    functionDepth: 6
    functionLinenumber: 548
    functionLinenumberEnd: 711
    functionName: CheckAttributeType
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - get_typtype
    - errcode
    - get_range_subtype
    - check_stack_depth
    - getBaseType
    - errhint
    - NameStr
    - lappend_oid
    - get_element_type
    - RelationGetDescr
    - CheckAttributeType
    - errmsg
    - OidIsValid
    - relation_close
    - list_member_oid
    - get_range_collation
    - get_multirange_range
    - ereport
    - relation_open
    - TupleDescAttr
    - get_typ_typrelid
    - format_type_be
    - list_delete_last
    - type_is_collatable
    - errdetail
    linkageType: ''
    returnType: void
    signature: "void CheckAttributeType(const char *attname,\n\t\t\t\t   Oid atttypid,
      Oid attcollation,\n\t\t\t\t   List *containing_rowtypes,\n\t\t\t\t   int flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:745,1
    - Dst: Min
      Src: /src/postgres/src/backend/catalog/heap.c:748,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/heap.c:750,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/heap.c:752,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:756,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/catalog/heap.c:759,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:761,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:765,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:767,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:769,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:770,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:771,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:772,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:773,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:774,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:775,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:776,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:777,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:778,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:779,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:780,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:781,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:782,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:783,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:784,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:785,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:786,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:787,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/catalog/heap.c:809,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:821,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/heap.c:826,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:835,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/heap.c:837,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/heap.c:838,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 60
    argCount: 5
    argNames:
    - pg_attribute_rel
    - tupdesc
    - new_rel_oid
    - tupdesc_extra
    - indstate
    argTypes:
    - Relation
    - TupleDesc
    - Oid
    - FormExtraData_pg_attribute[]
    - CatalogIndexState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 731
    functionDepth: 3
    functionLinenumber: 731
    functionLinenumberEnd: 839
    functionName: InsertPgAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - CatalogCloseIndexes
    - CatalogTuplesMultiInsertWithInfo
    - palloc_array
    - Int32GetDatum
    - RelationGetDescr
    - pfree
    - MakeSingleTupleTableSlot
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - CharGetDatum
    - ObjectIdGetDatum
    - CatalogOpenIndexes
    - ExecDropSingleTupleTableSlot
    - memset
    - TupleDescAttr
    - Int16GetDatum
    - NameGetDatum
    - Min
    - BoolGetDatum
    linkageType: ''
    returnType: void
    signature: "void InsertPgAttributeTuples(Relation pg_attribute_rel,\n\t\t\t\t\t\tTupleDesc
      tupdesc,\n\t\t\t\t\t\tOid new_rel_oid,\n\t\t\t\t\t\tconst FormExtraData_pg_attribute
      tupdesc_extra[],\n\t\t\t\t\t\tCatalogIndexState indstate)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:862,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:864,1
    - Dst: InsertPgAttributeTuples
      Src: /src/postgres/src/backend/catalog/heap.c:866,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:871,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/heap.c:877,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:878,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/heap.c:879,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:882,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:885,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/heap.c:887,1
    - Dst: CreateTupleDesc
      Src: /src/postgres/src/backend/catalog/heap.c:900,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/catalog/heap.c:900,1
    - Dst: InsertPgAttributeTuples
      Src: /src/postgres/src/backend/catalog/heap.c:902,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/catalog/heap.c:903,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:909,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:911,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - new_rel_oid
    - tupdesc
    - relkind
    argTypes:
    - Oid
    - TupleDesc
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 848
    functionDepth: 5
    functionLinenumber: 848
    functionLinenumberEnd: 912
    functionName: AddNewAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - ObjectAddressSubSet
    - CatalogCloseIndexes
    - table_close
    - recordDependencyOn
    - table_open
    - CreateTupleDesc
    - FreeTupleDesc
    - ObjectAddressSet
    - OidIsValid
    - TupleDescAttr
    - CatalogOpenIndexes
    - InsertPgAttributeTuples
    - lengthof
    linkageType: ''
    returnType: void
    signature: "void AddNewAttributeTuples(Oid new_rel_oid,\n\t\t\t\t\t  TupleDesc
      tupdesc,\n\t\t\t\t\t  char relkind)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:940,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:941,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:943,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:944,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:945,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:946,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:947,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:948,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:949,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:950,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:951,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:952,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:953,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:954,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:955,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:956,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:957,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:958,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:959,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:960,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:961,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:962,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:963,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:964,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:965,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:966,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:967,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:968,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:969,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:970,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:971,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:972,1
    - Dst: MultiXactIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:973,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:986,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:986,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/heap.c:989,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:991,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 44
    argCount: 5
    argNames:
    - pg_class_desc
    - new_rel_desc
    - new_rel_oid
    - relacl
    - reloptions
    argTypes:
    - Relation
    - Relation
    - Oid
    - Datum
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 927
    functionDepth: 6
    functionLinenumber: 927
    functionLinenumberEnd: 992
    functionName: InsertPgClassTuple
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - heap_freetuple
    - Int32GetDatum
    - RelationGetDescr
    - heap_form_tuple
    - MultiXactIdGetDatum
    - TransactionIdGetDatum
    - Float4GetDatum
    - memset
    - CharGetDatum
    - ObjectIdGetDatum
    - BoolGetDatum
    - CatalogTupleInsert
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: "void InsertPgClassTuple(Relation pg_class_desc,\n\t\t\t\t   Relation
      new_rel_desc,\n\t\t\t\t   Oid new_rel_oid,\n\t\t\t\t   Datum relacl,\n\t\t\t\t
      \  Datum reloptions)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: InsertPgClassTuple
      Src: /src/postgres/src/backend/catalog/heap.c:1049,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 11
    argNames:
    - pg_class_desc
    - new_rel_desc
    - new_rel_oid
    - new_type_oid
    - reloftype
    - relowner
    - relkind
    - relfrozenxid
    - relminmxid
    - relacl
    - reloptions
    argTypes:
    - Relation
    - Relation
    - Oid
    - Oid
    - Oid
    - Oid
    - char
    - TransactionId
    - TransactionId
    - Datum
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1001
    functionDepth: 7
    functionLinenumber: 1001
    functionLinenumberEnd: 1051
    functionName: AddNewRelationTuple
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - InsertPgClassTuple
    linkageType: ''
    returnType: void
    signature: "void AddNewRelationTuple(Relation pg_class_desc,\n\t\t\t\t\tRelation
      new_rel_desc,\n\t\t\t\t\tOid new_rel_oid,\n\t\t\t\t\tOid new_type_oid,\n\t\t\t\t\tOid
      reloftype,\n\t\t\t\t\tOid relowner,\n\t\t\t\t\tchar relkind,\n\t\t\t\t\tTransactionId
      relfrozenxid,\n\t\t\t\t\tTransactionId relminmxid,\n\t\t\t\t\tDatum relacl,\n\t\t\t\t\tDatum
      reloptions)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypeCreate
      Src: /src/postgres/src/backend/catalog/heap.c:1070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - typeName
    - typeNamespace
    - new_rel_oid
    - new_rel_kind
    - ownerid
    - new_row_type
    - new_array_type
    argTypes:
    - char*
    - Oid
    - Oid
    - char
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1060
    functionDepth: 8
    functionLinenumber: 1060
    functionLinenumberEnd: 1102
    functionName: AddNewRelationType
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - TypeCreate
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress AddNewRelationType(const char *typeName,\n\t\t\t\t   Oid
      typeNamespace,\n\t\t\t\t   Oid new_rel_oid,\n\t\t\t\t   char new_rel_kind,\n\t\t\t\t
      \  Oid ownerid,\n\t\t\t\t   Oid new_row_type,\n\t\t\t\t   Oid new_array_type)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1179,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/heap.c:1179,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/heap.c:1179,1
    - Dst: CheckAttributeNamesTypes
      Src: /src/postgres/src/backend/catalog/heap.c:1186,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/heap.c:1193,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1195,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1197,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/heap.c:1205,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1206,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1207,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1208,1
    - Dst: moveArrayTypeName
      Src: /src/postgres/src/backend/catalog/heap.c:1210,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1211,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1213,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:1214,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1223,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1231,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1240,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1241,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1246,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1251,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1252,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1253,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1254,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1262,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1263,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1264,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1265,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/heap.c:1270,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1273,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1275,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1283,1
    - Dst: GetNewRelFileNumber
      Src: /src/postgres/src/backend/catalog/heap.c:1284,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/heap.c:1293,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/heap.c:1307,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/heap.c:1311,1
    - Dst: heap_create
      Src: /src/postgres/src/backend/catalog/heap.c:1331,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1347,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:1347,1
    - Dst: AssignTypeArrayOid
      Src: /src/postgres/src/backend/catalog/heap.c:1371,1
    - Dst: AddNewRelationType
      Src: /src/postgres/src/backend/catalog/heap.c:1382,1
    - Dst: makeArrayTypeName
      Src: /src/postgres/src/backend/catalog/heap.c:1394,1
    - Dst: TypeCreate
      Src: /src/postgres/src/backend/catalog/heap.c:1396,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/heap.c:1429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1434,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1435,1
    - Dst: AddNewRelationTuple
      Src: /src/postgres/src/backend/catalog/heap.c:1447,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1456,1
    - Dst: AddNewAttributeTuples
      Src: /src/postgres/src/backend/catalog/heap.c:1462,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/heap.c:1481,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:1487,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/heap.c:1489,1
    - Dst: recordDependencyOnNewAcl
      Src: /src/postgres/src/backend/catalog/heap.c:1491,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/heap.c:1493,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/heap.c:1495,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:1497,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/heap.c:1498,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:1502,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/heap.c:1503,1
    - Dst: RELKIND_HAS_TABLE_AM
      Src: /src/postgres/src/backend/catalog/heap.c:1514,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1515,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:1517,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/heap.c:1518,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/heap.c:1521,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/heap.c:1522,1
    - Dst: InvokeObjectPostCreateHookArg
      Src: /src/postgres/src/backend/catalog/heap.c:1526,1
    - Dst: StoreConstraints
      Src: /src/postgres/src/backend/catalog/heap.c:1535,1
    - Dst: register_on_commit_action
      Src: /src/postgres/src/backend/catalog/heap.c:1541,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1547,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1548,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 107
    argCount: 21
    argNames:
    - relname
    - relnamespace
    - reltablespace
    - relid
    - reltypeid
    - reloftypeid
    - ownerid
    - accessmtd
    - tupdesc
    - cooked_constraints
    - relkind
    - relpersistence
    - shared_relation
    - mapped_relation
    - oncommit
    - reloptions
    - use_user_acl
    - allow_system_table_mods
    - is_internal
    - relrewrite
    - typaddress
    argTypes:
    - char*
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    - TupleDesc
    - List*
    - char
    - char
    - bool
    - bool
    - OnCommitAction
    - Datum
    - bool
    - bool
    - bool
    - Oid
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1139
    functionDepth: 9
    functionLinenumber: 1139
    functionLinenumberEnd: 1551
    functionName: heap_create_with_catalog
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - errcode
    - get_user_default_acl
    - AddNewRelationType
    - errhint
    - table_close
    - elog
    - recordDependencyOnCurrentExtension
    - RELKIND_HAS_STORAGE
    - RELKIND_HAS_TABLE_AM
    - Assert
    - pfree
    - get_relname_relid
    - recordDependencyOnOwner
    - CheckAttributeNamesTypes
    - table_open
    - register_on_commit_action
    - moveArrayTypeName
    - errmsg
    - AssignTypeArrayOid
    - GetNewRelFileNumber
    - OidIsValid
    - heap_create
    - ObjectIdGetDatum
    - PointerGetDatum
    - new_object_addresses
    - record_object_address_dependencies
    - makeArrayTypeName
    - StoreConstraints
    - CStringGetDatum
    - ereport
    - InvokeObjectPostCreateHookArg
    - TypeCreate
    - IsBootstrapProcessingMode
    - LockRelationOid
    - free_object_addresses
    - GetSysCacheOid2
    - AddNewRelationTuple
    - recordDependencyOnNewAcl
    - add_exact_object_address
    - ObjectAddressSet
    - AddNewAttributeTuples
    - IsNormalProcessingMode
    - RelFileNumberIsValid
    - RelationGetRelid
    linkageType: ''
    returnType: Oid
    signature: "Oid heap_create_with_catalog(const char *relname,\n\t\t\t\t\t\t Oid
      relnamespace,\n\t\t\t\t\t\t Oid reltablespace,\n\t\t\t\t\t\t Oid relid,\n\t\t\t\t\t\t
      Oid reltypeid,\n\t\t\t\t\t\t Oid reloftypeid,\n\t\t\t\t\t\t Oid ownerid,\n\t\t\t\t\t\t
      Oid accessmtd,\n\t\t\t\t\t\t TupleDesc tupdesc,\n\t\t\t\t\t\t List *cooked_constraints,\n\t\t\t\t\t\t
      char relkind,\n\t\t\t\t\t\t char relpersistence,\n\t\t\t\t\t\t bool shared_relation,\n\t\t\t\t\t\t
      bool mapped_relation,\n\t\t\t\t\t\t OnCommitAction oncommit,\n\t\t\t\t\t\t Datum
      reloptions,\n\t\t\t\t\t\t bool use_user_acl,\n\t\t\t\t\t\t bool allow_system_table_mods,\n\t\t\t\t\t\t
      bool is_internal,\n\t\t\t\t\t\t Oid relrewrite,\n\t\t\t\t\t\t ObjectAddress
      *typaddress)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1570,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:1572,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1575,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:1577,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1580,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:1580,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1581,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:1583,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1585
      start: 1562
    functionDepth: 4
    functionLinenumber: 1562
    functionLinenumberEnd: 1585
    functionName: RelationRemoveInheritance
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void RelationRemoveInheritance(Oid relid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1602,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/heap.c:1604,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1604,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1605,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1606,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1609,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:1611,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1595
    functionDepth: 3
    functionLinenumber: 1595
    functionLinenumberEnd: 1614
    functionName: DeleteRelationTuple
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - ReleaseSysCache
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: void DeleteRelationTuple(Oid relid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1633,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:1636,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1639,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:1641,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:1645,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1646,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:1649,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1624
    functionDepth: 4
    functionLinenumber: 1624
    functionLinenumberEnd: 1651
    functionName: DeleteAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - table_open
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void DeleteAttributeTuples(Oid relid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1670,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:1673,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1676,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:1677,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1680,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:1682,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:1686,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1687,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:1690,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1661
    functionDepth: 4
    functionLinenumber: 1661
    functionLinenumberEnd: 1692
    functionName: DeleteSystemAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - table_open
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: void DeleteSystemAttributeTuples(Oid relid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/heap.c:1720,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1722,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/heap.c:1724,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1725,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1726,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1727,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1728,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:1730,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/heap.c:1754,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/heap.c:1756,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:1776,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:1776,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:1779,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1787,1
    - Dst: RemoveStatistics
      Src: /src/postgres/src/backend/catalog/heap.c:1789,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/heap.c:1791,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 2
    argNames:
    - relid
    - attnum
    argTypes:
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1792
      start: 1702
    functionDepth: 7
    functionLinenumber: 1702
    functionLinenumberEnd: 1792
    functionName: RemoveAttributeById
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - elog
    - heap_modify_tuple
    - HeapTupleIsValid
    - RelationGetDescr
    - CatalogTupleUpdate
    - table_open
    - namestrcpy
    - snprintf
    - SearchSysCacheCopy2
    - GETSTRUCT
    - relation_close
    - relation_open
    - ObjectIdGetDatum
    - table_close
    - RemoveStatistics
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: void RemoveAttributeById(Oid relid, AttrNumber attnum)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/heap.c:1821,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1821,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1822,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1823,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:1824,1
    - Dst: get_partition_parent
      Src: /src/postgres/src/backend/catalog/heap.c:1831,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/heap.c:1832,1
    - Dst: get_default_partition_oid
      Src: /src/postgres/src/backend/catalog/heap.c:1838,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1839,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/heap.c:1840,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:1843,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/heap.c:1848,1
    - Dst: CheckTableNotInUse
      Src: /src/postgres/src/backend/catalog/heap.c:1855,1
    - Dst: CheckTableForSerializableConflictIn
      Src: /src/postgres/src/backend/catalog/heap.c:1863,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1873,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/heap.c:1875,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1875,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1876,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1877,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1879,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:1881,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1882,1
    - Dst: RemovePartitionKeyByRelId
      Src: /src/postgres/src/backend/catalog/heap.c:1889,1
    - Dst: update_default_partition_oid
      Src: /src/postgres/src/backend/catalog/heap.c:1896,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/heap.c:1901,1
    - Dst: RelationDropStorage
      Src: /src/postgres/src/backend/catalog/heap.c:1902,1
    - Dst: pgstat_drop_relation
      Src: /src/postgres/src/backend/catalog/heap.c:1905,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/heap.c:1912,1
    - Dst: RemoveSubscriptionRel
      Src: /src/postgres/src/backend/catalog/heap.c:1917,1
    - Dst: remove_on_commit_action
      Src: /src/postgres/src/backend/catalog/heap.c:1922,1
    - Dst: RelationForgetRelation
      Src: /src/postgres/src/backend/catalog/heap.c:1931,1
    - Dst: RelationRemoveInheritance
      Src: /src/postgres/src/backend/catalog/heap.c:1936,1
    - Dst: RemoveStatistics
      Src: /src/postgres/src/backend/catalog/heap.c:1941,1
    - Dst: DeleteAttributeTuples
      Src: /src/postgres/src/backend/catalog/heap.c:1946,1
    - Dst: DeleteRelationTuple
      Src: /src/postgres/src/backend/catalog/heap.c:1951,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1953,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1960,1
    - Dst: CacheInvalidateRelcacheByRelid
      Src: /src/postgres/src/backend/catalog/heap.c:1961,1
    - Dst: CacheInvalidateRelcacheByRelid
      Src: /src/postgres/src/backend/catalog/heap.c:1967,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1970
      start: 1803
    functionDepth: 5
    functionLinenumber: 1803
    functionLinenumberEnd: 1970
    functionName: heap_drop_with_catalog
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - CheckTableNotInUse
    - RelationRemoveInheritance
    - DeleteAttributeTuples
    - RemoveSubscriptionRel
    - table_close
    - SearchSysCache1
    - elog
    - RELKIND_HAS_STORAGE
    - RelationForgetRelation
    - RemovePartitionKeyByRelId
    - HeapTupleIsValid
    - table_open
    - ReleaseSysCache
    - CatalogTupleDelete
    - OidIsValid
    - get_default_partition_oid
    - ObjectIdGetDatum
    - CheckTableForSerializableConflictIn
    - RelationDropStorage
    - relation_close
    - RemoveStatistics
    - remove_on_commit_action
    - DeleteRelationTuple
    - LockRelationOid
    - GETSTRUCT
    - relation_open
    - get_partition_parent
    - CacheInvalidateRelcacheByRelid
    - pgstat_drop_relation
    - update_default_partition_oid
    linkageType: ''
    returnType: void
    signature: void heap_drop_with_catalog(Oid relid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:1987,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/catalog/heap.c:1988,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:1997,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:1998,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:1999,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2001,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:2009,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/heap.c:2014,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2015,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2016,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:2017,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2018,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2021,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:2026,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:2026,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:2029,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:2031,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:2034,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2041,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2042
      start: 1983
    functionDepth: 7
    functionLinenumber: 1983
    functionLinenumberEnd: 2042
    functionName: RelationClearMissing
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - elog
    - RelationGetNumberOfAttributes
    - heap_modify_tuple
    - heap_freetuple
    - HeapTupleIsValid
    - RelationGetDescr
    - table_close
    - CatalogTupleUpdate
    - table_open
    - ReleaseSysCache
    - SearchSysCache2
    - memset
    - GETSTRUCT
    - ObjectIdGetDatum
    - BoolGetDatum
    - RelationGetRelid
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: void RelationClearMissing(Relation rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2061,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:2064,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/heap.c:2066,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2067,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2067,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2068,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:2069,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2070,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2071,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2072,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2075,1
    - Dst: construct_array
      Src: /src/postgres/src/backend/catalog/heap.c:2075,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2083,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:2089,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:2089,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:2091,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:2094,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2095,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - rel
    - attnum
    - missingval
    argTypes:
    - Relation
    - AttrNumber
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2096
      start: 2049
    functionDepth: 7
    functionLinenumber: 2049
    functionLinenumberEnd: 2096
    functionName: StoreAttrMissingVal
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - elog
    - heap_modify_tuple
    - Assert
    - HeapTupleIsValid
    - RelationGetDescr
    - table_close
    - CatalogTupleUpdate
    - table_open
    - ReleaseSysCache
    - SearchSysCache2
    - construct_array
    - GETSTRUCT
    - PointerGetDatum
    - ObjectIdGetDatum
    - BoolGetDatum
    - RelationGetRelid
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: void StoreAttrMissingVal(Relation rel, AttrNumber attnum, Datum missingval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:2119,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2124,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:2129,1
    - Dst: SearchSysCacheAttName
      Src: /src/postgres/src/backend/catalog/heap.c:2130,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:2131,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2132,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2134,1
    - Dst: OidFunctionCall3
      Src: /src/postgres/src/backend/catalog/heap.c:2137,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2138,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2139,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2140,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2143,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:2148,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:2148,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:2150,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:2153,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2154,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - relid
    - attname
    - value
    argTypes:
    - Oid
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2156
      start: 2105
    functionDepth: 7
    functionLinenumber: 2105
    functionLinenumberEnd: 2156
    functionName: SetAttrMissing
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - elog
    - HeapTupleIsValid
    - CStringGetDatum
    - Int32GetDatum
    - RelationGetDescr
    - CatalogTupleUpdate
    - table_open
    - ReleaseSysCache
    - GETSTRUCT
    - BoolGetDatum
    - SearchSysCacheAttName
    - ObjectIdGetDatum
    - table_close
    - OidFunctionCall3
    - heap_modify_tuple
    linkageType: ''
    returnType: void
    signature: void SetAttrMissing(Oid relid, char *attname, char *value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/heap.c:2180,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/catalog/heap.c:2189,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:2190,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/heap.c:2197,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:2200,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2220,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2222,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2223,1
    - Dst: CreateConstraintEntry
      Src: /src/postgres/src/backend/catalog/heap.c:2229,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2230,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2237,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/heap.c:2263,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 9
    argNames:
    - rel
    - ccname
    - expr
    - is_enforced
    - is_validated
    - is_local
    - inhcount
    - is_no_inherit
    - is_internal
    argTypes:
    - Relation
    - char*
    - Node*
    - bool
    - bool
    - bool
    - int16
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2266
      start: 2166
    functionDepth: 7
    functionLinenumber: 2166
    functionLinenumberEnd: 2266
    functionName: StoreRelCheck
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - errcode
    - pfree
    - ereport
    - nodeToString
    - lfirst
    - pull_var_clause
    - errmsg
    - RelationGetRelationName
    - palloc
    - list_length
    - RelationGetNamespace
    - CreateConstraintEntry
    - RelationGetRelid
    linkageType: ''
    returnType: Oid
    signature: "Oid StoreRelCheck(Relation rel, const char *ccname, Node *expr,\n\t\t\t
      \ bool is_enforced, bool is_validated, bool is_local,\n\t\t\t  int16 inhcount,
      bool is_no_inherit, bool is_internal)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:2200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2198
    functionDepth: 1
    functionLinenumber: 2198
    functionLinenumberEnd: 2208
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 353
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(vl, varList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2280,1
    - Dst: CreateConstraintEntry
      Src: /src/postgres/src/backend/catalog/heap.c:2283,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2284,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - rel
    - nnname
    - attnum
    - is_validated
    - is_local
    - inhcount
    - is_no_inherit
    argTypes:
    - Relation
    - char*
    - AttrNumber
    - bool
    - bool
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2317
      start: 2273
    functionDepth: 7
    functionLinenumber: 2273
    functionLinenumberEnd: 2317
    functionName: StoreRelNotNull
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - Assert
    - RelationGetNamespace
    - CreateConstraintEntry
    - RelationGetRelid
    linkageType: ''
    returnType: Oid
    signature: "Oid StoreRelNotNull(Relation rel, const char *nnname, AttrNumber attnum,\n\t\t\t\tbool
      is_validated, bool is_local, int inhcount,\n\t\t\t\tbool is_no_inherit)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/heap.c:2343,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:2347,1
    - Dst: StoreAttrDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2352,1
    - Dst: StoreRelCheck
      Src: /src/postgres/src/backend/catalog/heap.c:2357,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2365,1
    - Dst: SetRelationNumChecks
      Src: /src/postgres/src/backend/catalog/heap.c:2371,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - rel
    - cooked_constraints
    - is_internal
    argTypes:
    - Relation
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2329
    functionDepth: 8
    functionLinenumber: 2329
    functionLinenumberEnd: 2372
    functionName: StoreConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - elog
    - SetRelationNumChecks
    - CommandCounterIncrement
    - StoreAttrDefault
    - StoreRelCheck
    - lfirst
    linkageType: ''
    returnType: void
    signature: void StoreConstraints(Relation rel, List *cooked_constraints, bool
      is_internal)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:2347,1
    - Dst: StoreAttrDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2352,1
    - Dst: StoreRelCheck
      Src: /src/postgres/src/backend/catalog/heap.c:2357,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2365,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2345
    functionDepth: 8
    functionLinenumber: 2345
    functionLinenumberEnd: 2368
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 353
    functionsReached:
    - elog
    - StoreRelCheck
    - lfirst
    - StoreAttrDefault
    linkageType: ''
    returnType: void
    signature: void foreach(lc, cooked_constraints)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:2428,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/catalog/heap.c:2439,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/backend/catalog/heap.c:2441,1
    - Dst: addNSItemToQuery
      Src: /src/postgres/src/backend/catalog/heap.c:2447,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:2454,1
    - Dst: cookDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2457,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:2459,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/heap.c:2476,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/heap.c:2477,1
    - Dst: StoreAttrDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2480,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/heap.c:2482,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2493,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2512,1
    - Dst: cookConstraint
      Src: /src/postgres/src/backend/catalog/heap.c:2518,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2523,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/heap.c:2529,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2542,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2543,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2545,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2550,1
    - Dst: MergeWithExistingConstraint
      Src: /src/postgres/src/backend/catalog/heap.c:2558,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/catalog/heap.c:2583,1
    - Dst: list_union
      Src: /src/postgres/src/backend/catalog/heap.c:2586,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:2588,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:2589,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2589,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2590,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:2595,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2595,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2598,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2602,1
    - Dst: StoreRelCheck
      Src: /src/postgres/src/backend/catalog/heap.c:2609,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/heap.c:2616,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2627,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2639,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2640,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2641,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2642,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2642,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2642,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2644,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2645,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2646,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2647,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2649,1
    - Dst: AdjustNotNullInheritance
      Src: /src/postgres/src/backend/catalog/heap.c:2657,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2657,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/heap.c:2669,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2670,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2672,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2673,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2674,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2675,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:2679,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2679,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2680,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2680,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2682,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2684,1
    - Dst: StoreRelNotNull
      Src: /src/postgres/src/backend/catalog/heap.c:2687,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/heap.c:2693,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2705,1
    - Dst: SetRelationNumChecks
      Src: /src/postgres/src/backend/catalog/heap.c:2716,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 103
    argCount: 7
    argNames:
    - rel
    - newColDefaults
    - newConstraints
    - allow_merge
    - is_local
    - is_internal
    - queryString
    argTypes:
    - Relation
    - List*
    - List*
    - bool
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2719
      start: 2404
    functionDepth: 8
    functionLinenumber: 2404
    functionLinenumberEnd: 2719
    functionName: AddRelationNewConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - addRangeTableEntryForRelation
    - RelationGetNamespace
    - pull_var_clause
    - NameStr
    - RelationGetRelationName
    - get_attname
    - AdjustNotNullInheritance
    - strVal
    - make_parsestate
    - Assert
    - RelationGetDescr
    - linitial
    - cookConstraint
    - errmsg
    - palloc_object
    - list_length
    - SetRelationNumChecks
    - StoreRelNotNull
    - lappend
    - ereport
    - stringToNode
    - addNSItemToQuery
    - TupleDescAttr
    - ConstraintNameIsUsed
    - get_attnum
    - castNode
    - MergeWithExistingConstraint
    - cookDefault
    - StoreAttrDefault
    - StoreRelCheck
    - ChooseConstraintName
    - list_union
    - IsA
    - RelationGetRelid
    linkageType: ''
    returnType: List
    signature: "List *\nAddRelationNewConstraints(Relation rel,\n\t\t\t\t\t\t  List
      *newColDefaults,\n\t\t\t\t\t\t  List *newConstraints,\n\t\t\t\t\t\t  bool allow_merge,\n\t\t\t\t\t\t
      \ bool is_local,\n\t\t\t\t\t\t  bool is_internal,\n\t\t\t\t\t\t  const char
      *queryString)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:2454,1
    - Dst: cookDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2457,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:2459,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/heap.c:2476,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/heap.c:2477,1
    - Dst: StoreAttrDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2480,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/heap.c:2482,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2493,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2452
    functionDepth: 8
    functionLinenumber: 2452
    functionLinenumberEnd: 2494
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 9
    functionsReached:
    - castNode
    - lappend
    - cookDefault
    - StoreAttrDefault
    - NameStr
    - palloc_object
    - TupleDescAttr
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(RawColumnDefault, colDef, newColDefaults)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2512,1
    - Dst: cookConstraint
      Src: /src/postgres/src/backend/catalog/heap.c:2518,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2523,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/heap.c:2529,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2542,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2543,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2545,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2550,1
    - Dst: MergeWithExistingConstraint
      Src: /src/postgres/src/backend/catalog/heap.c:2558,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/catalog/heap.c:2583,1
    - Dst: list_union
      Src: /src/postgres/src/backend/catalog/heap.c:2586,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:2588,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:2589,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2589,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2590,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:2595,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2595,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2598,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2602,1
    - Dst: StoreRelCheck
      Src: /src/postgres/src/backend/catalog/heap.c:2609,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/heap.c:2616,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2627,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2639,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2640,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2641,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2642,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2642,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2642,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2644,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2645,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2646,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2647,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2649,1
    - Dst: AdjustNotNullInheritance
      Src: /src/postgres/src/backend/catalog/heap.c:2657,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2657,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/heap.c:2669,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2670,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2672,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2673,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2674,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2675,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:2679,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2679,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2680,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2680,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2682,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2684,1
    - Dst: StoreRelNotNull
      Src: /src/postgres/src/backend/catalog/heap.c:2687,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/heap.c:2693,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2705,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2502
    functionDepth: 8
    functionLinenumber: 2502
    functionLinenumberEnd: 2707
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 21
    functionsReached:
    - strcmp
    - errcode
    - RelationGetNamespace
    - pull_var_clause
    - get_attname
    - RelationGetRelationName
    - AdjustNotNullInheritance
    - strVal
    - Assert
    - linitial
    - cookConstraint
    - errmsg
    - palloc_object
    - list_length
    - StoreRelNotNull
    - lappend
    - ereport
    - stringToNode
    - ConstraintNameIsUsed
    - get_attnum
    - MergeWithExistingConstraint
    - StoreRelCheck
    - ChooseConstraintName
    - list_union
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void foreach_node(Constraint, cdef, newConstraints)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2542,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2543,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2545,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2547
      start: 2540
    functionDepth: 1
    functionLinenumber: 2540
    functionLinenumberEnd: 2547
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 9
    functionsReached:
    - ereport
    - errmsg
    - strcmp
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, chkname, checknames)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:2745,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:2749,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2752,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2752,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:2753,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2756,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:2757,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2760,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:2762,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:2766,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:2766,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2768,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/catalog/heap.c:2776,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2780,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2781,1
    - Dst: equal
      Src: /src/postgres/src/backend/catalog/heap.c:2782,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/heap.c:2782,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/heap.c:2782,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2798,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2799,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2800,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2801,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2805,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2806,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2807,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2808,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2816,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2817,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2818,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2819,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2826,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2827,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2828,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2829,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2838,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2839,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2840,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2841,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2845,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/heap.c:2848,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2849,1
    - Dst: pg_add_s16_overflow
      Src: /src/postgres/src/backend/catalog/heap.c:2865,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2867,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2868,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2869,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2874,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2886,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:2891,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:2894,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2895,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 53
    argCount: 8
    argNames:
    - rel
    - ccname
    - expr
    - allow_merge
    - is_local
    - is_enforced
    - is_initially_valid
    - is_no_inherit
    argTypes:
    - Relation
    - char*
    - Node*
    - bool
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2898
      start: 2731
    functionDepth: 4
    functionLinenumber: 2731
    functionLinenumberEnd: 2898
    functionName: MergeWithExistingConstraint
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - errcode
    - RelationGetRelationName
    - table_close
    - elog
    - systable_endscan
    - HeapTupleIsValid
    - Assert
    - table_open
    - heap_copytuple
    - errmsg
    - TextDatumGetCString
    - ObjectIdGetDatum
    - systable_beginscan
    - fastgetattr
    - CStringGetDatum
    - ereport
    - stringToNode
    - GETSTRUCT
    - ScanKeyInit
    - CatalogTupleUpdate
    - equal
    - pg_add_s16_overflow
    - systable_getnext
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: "bool MergeWithExistingConstraint(Relation rel, const char *ccname,
      Node *expr,\n\t\t\t\t\t\t\tbool allow_merge, bool is_local,\n\t\t\t\t\t\t\tbool
      is_enforced,\n\t\t\t\t\t\t\tbool is_initially_valid,\n\t\t\t\t\t\t\tbool is_no_inherit)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/heap.c:2930,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:2947,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/catalog/heap.c:2954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2956,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/heap.c:2958,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2958,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2959,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2959,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2961,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2962,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2963,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2964,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2964,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2965,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2967,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2968,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2969,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2970,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2970,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:2977,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/catalog/heap.c:2981,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2982,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2982,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2982,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2983,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2983,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2986,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2988,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2989,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2989,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/heap.c:2998,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2999,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3000,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3001,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3002,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/catalog/heap.c:3007,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3030,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3031,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3032,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:3033,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:3033,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3034,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/catalog/heap.c:3037,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:3050,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3051,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3052,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3053,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:3055,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3059,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:3062,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:3062,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:3063,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3063,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:3066,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3068,1
    - Dst: StoreRelNotNull
      Src: /src/postgres/src/backend/catalog/heap.c:3070,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/heap.c:3074,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:3091,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/heap.c:3097,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3098,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3099,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:3107,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/heap.c:3111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3112,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/catalog/heap.c:3119,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:3130,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:3140,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:3140,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:3141,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3141,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:3144,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3146,1
    - Dst: StoreRelNotNull
      Src: /src/postgres/src/backend/catalog/heap.c:3149,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/heap.c:3152,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 76
    argCount: 4
    argNames:
    - rel
    - constraints
    - old_notnulls
    - existing_constraints
    argTypes:
    - Relation
    - List*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3156
      start: 2916
    functionDepth: 8
    functionLinenumber: 2916
    functionLinenumberEnd: 3156
    functionName: AddRelationNotNullConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - lappend_int
    - foreach_delete_current
    - strcmp
    - errcode
    - pstrdup
    - RelationGetNamespace
    - get_attname
    - RelationGetRelationName
    - strVal
    - Assert
    - linitial
    - list_nth_node
    - list_copy
    - errmsg
    - list_length
    - StoreRelNotNull
    - lappend
    - ereport
    - get_attnum
    - list_delete_nth_cell
    - ChooseConstraintName
    - errdetail
    - list_nth
    - RelationGetRelid
    linkageType: ''
    returnType: List
    signature: "List *\nAddRelationNotNullConstraints(Relation rel, List *constraints,\n\t\t\t\t\t\t\t
      \ List *old_notnulls, List *existing_constraints)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3030,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3031,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3032,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:3033,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:3033,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3034,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/catalog/heap.c:3037,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3039
      start: 3021
    functionDepth: 1
    functionLinenumber: 3021
    functionLinenumberEnd: 3039
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 9
    functionsReached:
    - foreach_delete_current
    - errcode
    - linitial
    - ereport
    - errmsg
    - errdetail
    - strVal
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(CookedConstraint, old, old_notnulls)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:3050,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3051,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3052,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3053,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:3055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 3048
    functionDepth: 1
    functionLinenumber: 3048
    functionLinenumberEnd: 3056
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 9
    functionsReached:
    - strcmp
    - errcode
    - ereport
    - errmsg
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, thisname, givennames)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:3130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3135
      start: 3128
    functionDepth: 0
    functionLinenumber: 3128
    functionLinenumberEnd: 3135
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 9
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, thisname, nnnames)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3175,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/heap.c:3176,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3177,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3177,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3178,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:3179,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3180,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3181,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:3187,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/heap.c:3192,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:3195,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - rel
    - numchecks
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3197
      start: 3168
    functionDepth: 3
    functionLinenumber: 3168
    functionLinenumberEnd: 3197
    functionName: SetRelationNumChecks
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - elog
    - heap_freetuple
    - HeapTupleIsValid
    - CacheInvalidateRelcache
    - CatalogTupleUpdate
    - table_open
    - SearchSysCacheCopy1
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void SetRelationNumChecks(Relation rel, int numchecks)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/heap.c:3209,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/catalog/heap.c:3215,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3216,1
    - Dst: get_attgenerated
      Src: /src/postgres/src/backend/catalog/heap.c:3221,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3222,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3224,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:3225,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3226,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/catalog/heap.c:3227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3232,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3233,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/catalog/heap.c:3234,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/catalog/heap.c:3240,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3242
      start: 3202
    functionDepth: 1
    functionLinenumber: 3202
    functionLinenumberEnd: 3242
    functionName: check_nested_generated_walker
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - errcode
    - rt_fetch
    - ereport
    - errmsg
    - get_attname
    - errdetail
    - OidIsValid
    - expression_tree_walker
    - IsA
    - get_attgenerated
    - parser_errposition
    linkageType: ''
    returnType: bool
    signature: bool check_nested_generated_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_nested_generated_walker
      Src: /src/postgres/src/backend/catalog/heap.c:3247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pstate
    - node
    argTypes:
    - ParseState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3248
      start: 3244
    functionDepth: 2
    functionLinenumber: 3244
    functionLinenumberEnd: 3248
    functionName: check_nested_generated
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - check_nested_generated_walker
    linkageType: ''
    returnType: void
    signature: void check_nested_generated(ParseState *pstate, Node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3280
      start: 3276
    functionDepth: 0
    functionLinenumber: 3276
    functionLinenumberEnd: 3280
    functionName: contains_user_functions_checker
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool contains_user_functions_checker(Oid func_id, void *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/heap.c:3295,1
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/catalog/heap.c:3297,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3298,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3299,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3300,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3301,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/catalog/heap.c:3302,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/catalog/heap.c:3302,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/heap.c:3313,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3314,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3315,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3316,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3317,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/catalog/heap.c:3318,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/catalog/heap.c:3318,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/catalog/heap.c:3321,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3322
      start: 3287
    functionDepth: 3
    functionLinenumber: 3287
    functionLinenumberEnd: 3322
    functionName: check_virtual_generated_security_walker
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - check_functions_in_node
    - errcode
    - exprType
    - ereport
    - errmsg
    - exprLocation
    - errdetail
    - expression_tree_walker
    - IsA
    - parser_errposition
    linkageType: ''
    returnType: bool
    signature: bool check_virtual_generated_security_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_virtual_generated_security_walker
      Src: /src/postgres/src/backend/catalog/heap.c:3327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pstate
    - node
    argTypes:
    - ParseState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3328
      start: 3324
    functionDepth: 4
    functionLinenumber: 3324
    functionLinenumberEnd: 3328
    functionName: check_virtual_generated_security
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - check_virtual_generated_security_walker
    linkageType: ''
    returnType: void
    signature: void check_virtual_generated_security(ParseState *pstate, Node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3352,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/catalog/heap.c:3357,1
    - Dst: check_nested_generated
      Src: /src/postgres/src/backend/catalog/heap.c:3362,1
    - Dst: contain_mutable_functions_after_planning
      Src: /src/postgres/src/backend/catalog/heap.c:3365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3366,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3368,1
    - Dst: check_virtual_generated_security
      Src: /src/postgres/src/backend/catalog/heap.c:3372,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3380,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/catalog/heap.c:3380,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3388,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/heap.c:3390,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/catalog/heap.c:3392,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3398,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3400,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:3403,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:3404,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:3405,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/backend/catalog/heap.c:3411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 6
    argNames:
    - pstate
    - raw_default
    - atttypid
    - atttypmod
    - attname
    - attgenerated
    argTypes:
    - ParseState*
    - Node*
    - Oid
    - int32
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3414
      start: 3342
    functionDepth: 5
    functionLinenumber: 3342
    functionLinenumberEnd: 3414
    functionName: cookDefault
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - format_type_be
    - errcode
    - Assert
    - exprType
    - coerce_to_target_type
    - ereport
    - check_virtual_generated_security
    - transformExpr
    - errhint
    - assign_expr_collations
    - contain_mutable_functions_after_planning
    - errmsg
    - check_nested_generated
    - OidIsValid
    - contain_var_clause
    linkageType: ''
    returnType: Node
    signature: "Node *\ncookDefault(ParseState *pstate,\n\t\t\tNode *raw_default,\n\t\t\tOid
      atttypid,\n\t\t\tint32 atttypmod,\n\t\t\tconst char *attname,\n\t\t\tchar attgenerated)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: transformExpr
      Src: /src/postgres/src/backend/catalog/heap.c:3433,1
    - Dst: coerce_to_boolean
      Src: /src/postgres/src/backend/catalog/heap.c:3438,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/backend/catalog/heap.c:3443,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:3449,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3450,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3451,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - pstate
    - raw_constraint
    - relname
    argTypes:
    - ParseState*
    - Node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3456
      start: 3423
    functionDepth: 1
    functionLinenumber: 3423
    functionLinenumberEnd: 3456
    functionName: cookConstraint
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - errcode
    - ereport
    - coerce_to_boolean
    - transformExpr
    - assign_expr_collations
    - errmsg
    - list_length
    linkageType: ''
    returnType: Node
    signature: "Node *\ncookConstraint(ParseState *pstate,\n\t\t\t   Node *raw_constraint,\n\t\t\t
      \  char *relname)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3470,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3473,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3476,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3478,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3481,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3481,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/heap.c:3486,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3487,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:3494,1
    - Dst: CatalogTupleInsertWithInfo
      Src: /src/postgres/src/backend/catalog/heap.c:3496,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:3498,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3501,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:3504,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3505,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - fromrelid
    - torelid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3506
      start: 3461
    functionDepth: 4
    functionLinenumber: 3461
    functionLinenumberEnd: 3506
    functionName: CopyStatistics
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - CatalogCloseIndexes
    - systable_beginscan
    - CatalogTupleInsertWithInfo
    - HeapTupleIsValid
    - heap_freetuple
    - table_close
    - table_open
    - heap_copytuple
    - GETSTRUCT
    - ObjectIdGetDatum
    - CatalogOpenIndexes
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void CopyStatistics(Oid fromrelid, Oid torelid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3523,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3525,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3528,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3534,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3537,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3541,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3545,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3545,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:3546,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3548,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - relid
    - attnum
    argTypes:
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3551
      start: 3514
    functionDepth: 4
    functionLinenumber: 3514
    functionLinenumberEnd: 3551
    functionName: RemoveStatistics
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: void RemoveStatistics(Oid relid, AttrNumber attnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3569,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/heap.c:3574,1
    - Dst: BuildDummyIndexInfo
      Src: /src/postgres/src/backend/catalog/heap.c:3584,1
    - Dst: RelationTruncate
      Src: /src/postgres/src/backend/catalog/heap.c:3589,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/heap.c:3593,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/heap.c:3597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - heapRelation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3599
      start: 3561
    functionDepth: 6
    functionLinenumber: 3561
    functionLinenumberEnd: 3599
    functionName: RelationTruncateIndexes
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - RelationTruncate
    - index_build
    - index_open
    - BuildDummyIndexInfo
    - index_close
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void RelationTruncateIndexes(Relation heapRelation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3569,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/heap.c:3574,1
    - Dst: BuildDummyIndexInfo
      Src: /src/postgres/src/backend/catalog/heap.c:3584,1
    - Dst: RelationTruncate
      Src: /src/postgres/src/backend/catalog/heap.c:3589,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/heap.c:3593,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/heap.c:3597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3598
      start: 3567
    functionDepth: 6
    functionLinenumber: 3567
    functionLinenumberEnd: 3598
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 353
    functionsReached:
    - RelationTruncate
    - index_build
    - index_open
    - BuildDummyIndexInfo
    - index_close
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(indlist, RelationGetIndexList(heapRelation))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3619,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3622,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3623,1
    - Dst: heap_truncate_check_FKs
      Src: /src/postgres/src/backend/catalog/heap.c:3627,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:3632,1
    - Dst: heap_truncate_one_rel
      Src: /src/postgres/src/backend/catalog/heap.c:3635,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - relids
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3640
      start: 3610
    functionDepth: 6
    functionLinenumber: 3610
    functionLinenumberEnd: 3640
    functionName: heap_truncate
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - heap_truncate_check_FKs
    - lappend
    - heap_truncate_one_rel
    - table_open
    - lfirst
    - lfirst_oid
    - table_close
    linkageType: ''
    returnType: void
    signature: void heap_truncate(List *relids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3619,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3622,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3624
      start: 3617
    functionDepth: 6
    functionLinenumber: 3617
    functionLinenumberEnd: 3624
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 353
    functionsReached:
    - table_open
    - lfirst_oid
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, relids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:3632,1
    - Dst: heap_truncate_one_rel
      Src: /src/postgres/src/backend/catalog/heap.c:3635,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3639
      start: 3630
    functionDepth: 3
    functionLinenumber: 3630
    functionLinenumberEnd: 3639
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 353
    functionsReached:
    - table_close
    - lfirst
    - heap_truncate_one_rel
    linkageType: ''
    returnType: void
    signature: void foreach(cell, relations)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_relation_nontransactional_truncate
      Src: /src/postgres/src/backend/catalog/heap.c:3664,1
    - Dst: RelationTruncateIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:3667,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3671,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3673,1
    - Dst: table_relation_nontransactional_truncate
      Src: /src/postgres/src/backend/catalog/heap.c:3675,1
    - Dst: RelationTruncateIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:3676,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3680
      start: 3651
    functionDepth: 7
    functionLinenumber: 3651
    functionLinenumberEnd: 3680
    functionName: heap_truncate_one_rel
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - RelationTruncateIndexes
    - table_open
    - table_relation_nontransactional_truncate
    - OidIsValid
    - table_close
    linkageType: ''
    returnType: void
    signature: void heap_truncate_one_rel(Relation rel)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:3712,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3716,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3716,1
    - Dst: heap_truncate_find_FKs
      Src: /src/postgres/src/backend/catalog/heap.c:3729,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3742,1
    - Dst: heap_truncate_find_FKs
      Src: /src/postgres/src/backend/catalog/heap.c:3745,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3745,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3749,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3751,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3753,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3757,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3759,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3760,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3763,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3765,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3766,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:3768,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - relations
    - tempTables
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3774
      start: 3695
    functionDepth: 6
    functionLinenumber: 3695
    functionLinenumberEnd: 3774
    functionName: heap_truncate_check_FKs
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - heap_truncate_find_FKs
    - errcode
    - ereport
    - errhint
    - lfirst
    - get_rel_name
    - errmsg
    - list_make1_oid
    - errdetail
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void heap_truncate_check_FKs(List *relations, bool tempTables)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:3712,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3716,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3716,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3717
      start: 3710
    functionDepth: 6
    functionLinenumber: 3710
    functionLinenumberEnd: 3717
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 353
    functionsReached:
    - lappend_oid
    - lfirst
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, relations)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3742,1
    - Dst: heap_truncate_find_FKs
      Src: /src/postgres/src/backend/catalog/heap.c:3745,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3745,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3749,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3751,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3753,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3757,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3759,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3760,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3763,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3765,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3766,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:3768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3773
      start: 3740
    functionDepth: 3
    functionLinenumber: 3740
    functionLinenumberEnd: 3773
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 353
    functionsReached:
    - heap_truncate_find_FKs
    - errcode
    - ereport
    - errhint
    - get_rel_name
    - errmsg
    - list_make1_oid
    - errdetail
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, oids)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3749,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3751,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3753,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3757,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3759,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3760,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3763,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3765,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3766,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:3768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3772
      start: 3747
    functionDepth: 3
    functionLinenumber: 3747
    functionLinenumberEnd: 3772
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 353
    functionsReached:
    - errcode
    - ereport
    - errhint
    - get_rel_name
    - errmsg
    - errdetail
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell2, dependents)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/heap.c:3803,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3809,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3815,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3818,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3818,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3820,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3827,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3836,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3837,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3838,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3844,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3845,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3848,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3859,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3861,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3864,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3866,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3869,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3870,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3872,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3886,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3887,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3889,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3891,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3896,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/heap.c:3899,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3903,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/heap.c:3904,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/catalog/heap.c:3907,1
    - Dst: list_deduplicate_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3908,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 1
    argNames:
    - relationIds
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3911
      start: 3790
    functionDepth: 7
    functionLinenumber: 3790
    functionLinenumberEnd: 3911
    functionName: heap_truncate_find_FKs
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - lappend_oid
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - list_append_unique_oid
    - HeapTupleIsValid
    - list_free
    - table_close
    - list_sort
    - ObjectIdGetDatum
    - table_open
    - list_deduplicate_oid
    - list_copy
    - GETSTRUCT
    - OidIsValid
    - lfirst_oid
    - list_member_oid
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: 'List *

      heap_truncate_find_FKs(List *relationIds)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3859,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3861,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3864,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3866,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3869,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3870,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3872,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3886,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3887,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3889,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3891,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3896,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3897
      start: 3857
    functionDepth: 7
    functionLinenumber: 3857
    functionLinenumberEnd: 3897
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 353
    functionsReached:
    - lappend_oid
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - list_append_unique_oid
    - HeapTupleIsValid
    - ObjectIdGetDatum
    - GETSTRUCT
    - OidIsValid
    - lfirst_oid
    - list_member_oid
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void foreach(cell, parent_cons)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3939,1
    - Dst: buildint2vector
      Src: /src/postgres/src/backend/catalog/heap.c:3942,1
    - Dst: buildoidvector
      Src: /src/postgres/src/backend/catalog/heap.c:3943,1
    - Dst: buildoidvector
      Src: /src/postgres/src/backend/catalog/heap.c:3944,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/heap.c:3951,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3952,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/heap.c:3953,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3958,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3964,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3964,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3965,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3966,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3967,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3968,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3969,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3970,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:3973,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:3973,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/heap.c:3975,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3976,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/heap.c:3979,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:3980,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3980,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:3985,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/heap.c:3986,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3989,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:3992,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/heap.c:3993,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/heap.c:3997,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/heap.c:3998,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/heap.c:4011,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4012,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/heap.c:4013,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/heap.c:4023,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4025,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/heap.c:4035,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 7
    argNames:
    - rel
    - strategy
    - partnatts
    - partattrs
    - partexprs
    - partopclass
    - partcollation
    argTypes:
    - Relation
    - char
    - int16
    - AttrNumber*
    - List*
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4036
      start: 3917
    functionDepth: 7
    functionLinenumber: 3917
    functionLinenumberEnd: 4036
    functionName: StorePartitionKey
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - ObjectAddressSubSet
    - CacheInvalidateRelcache
    - heap_form_tuple
    - recordDependencyOn
    - table_close
    - CatalogTupleInsert
    - recordDependencyOnSingleRelExpr
    - Assert
    - pfree
    - RelationGetDescr
    - table_open
    - nodeToString
    - PointerGetDatum
    - new_object_addresses
    - CharGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - record_object_address_dependencies
    - buildoidvector
    - free_object_addresses
    - Int16GetDatum
    - add_exact_object_address
    - CStringGetTextDatum
    - ObjectAddressSet
    - buildint2vector
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void StorePartitionKey(Relation rel,\n\t\t\t\t  char strategy,\n\t\t\t\t
      \ int16 partnatts,\n\t\t\t\t  AttrNumber *partattrs,\n\t\t\t\t  List *partexprs,\n\t\t\t\t
      \ Oid *partopclass,\n\t\t\t\t  Oid *partcollation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:4048,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/heap.c:4050,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:4050,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:4051,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:4052,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:4055,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:4057,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:4058,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4059
      start: 4042
    functionDepth: 3
    functionLinenumber: 4042
    functionLinenumberEnd: 4059
    functionName: RemovePartitionKeyByRelId
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - ReleaseSysCache
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: void RemovePartitionKeyByRelId(Oid relid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:4085,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/heap.c:4086,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:4087,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4087,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:4088,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:4089,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4090,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:4097,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:4098,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/heap.c:4099,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:4101,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:4106,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:4107,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:4108,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/heap.c:4109,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/heap.c:4109,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:4112,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:4112,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:4115,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:4122,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:4124,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:4125,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:4126,1
    - Dst: update_default_partition_oid
      Src: /src/postgres/src/backend/catalog/heap.c:4133,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4133,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4134,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/heap.c:4137,1
    - Dst: get_default_oid_from_partdesc
      Src: /src/postgres/src/backend/catalog/heap.c:4146,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/catalog/heap.c:4146,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:4147,1
    - Dst: CacheInvalidateRelcacheByRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4148,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/heap.c:4150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - rel
    - parent
    - bound
    argTypes:
    - Relation
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4151
      start: 4073
    functionDepth: 7
    functionLinenumber: 4073
    functionLinenumberEnd: 4151
    functionName: StorePartitionBound
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - CacheInvalidateRelcache
    - table_close
    - elog
    - heap_freetuple
    - HeapTupleIsValid
    - Assert
    - RelationGetDescr
    - CommandCounterIncrement
    - table_open
    - nodeToString
    - OidIsValid
    - ObjectIdGetDatum
    - RelationGetRelid
    - SearchSysCacheCopy1
    - memset
    - GETSTRUCT
    - heap_modify_tuple
    - CacheInvalidateRelcacheByRelid
    - RelationGetPartitionDesc
    - CatalogTupleUpdate
    - get_default_oid_from_partdesc
    - CStringGetTextDatum
    - update_default_partition_oid
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: void StorePartitionBound(Relation rel, Relation parent, PartitionBoundSpec
      *bound)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ExtractSetVariableArgs
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:32,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:36,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:37,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:40,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:41,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:44,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:45,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:47,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:63,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:69,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:70,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:73,1
    - Dst: GUCArrayReset::GUCArrayReset
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:73,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:82,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:85,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:89,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:89,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:91,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:94,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:97,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:107,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:112,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:113,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:114,1
    - Dst: GUCArrayAdd
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:118,1
    - Dst: GUCArrayDelete
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:120,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:125,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:127,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:127,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:129,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:132,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:142,1
    - Dst: GUCArrayAdd
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:144,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:147,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:148,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:149,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:150,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:150,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:152,1
    - Dst: GUCArrayDelete
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:161,1
    - Dst: InvokeObjectPostAlterHookArg
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:164,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:167,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:170,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 53
    argCount: 3
    argNames:
    - databaseid
    - roleid
    - setstmt
    argTypes:
    - Oid
    - Oid
    - VariableSetStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 23
    functionDepth: 7
    functionLinenumber: 23
    functionLinenumberEnd: 171
    functionName: AlterSetting
    functionSourceFile: /src/postgres/src/backend/catalog/pg_db_role_setting.c
    functionUses: 0
    functionsReached:
    - GUCArrayAdd
    - heap_form_tuple
    - GUCArrayDelete
    - table_close
    - CatalogTupleInsert
    - systable_endscan
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - CatalogTupleDelete
    - PointerGetDatum
    - ObjectIdGetDatum
    - heap_getattr
    - systable_beginscan
    - GUCArrayReset::GUCArrayReset
    - ExtractSetVariableArgs
    - InvokeObjectPostAlterHookArg
    - memset
    - DatumGetArrayTypeP
    - heap_modify_tuple
    - ScanKeyInit
    - CatalogTupleUpdate
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:187,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:189,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:191,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:195,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:198,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:200,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:204,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:208,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:209,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:209,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:211,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:213,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:215,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - databaseid
    - roleid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 178
    functionDepth: 7
    functionLinenumber: 178
    functionLinenumberEnd: 216
    functionName: DropSetting
    functionSourceFile: /src/postgres/src/backend/catalog/pg_db_role_setting.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - HeapTupleIsValid
    - table_close
    - table_open
    - CatalogTupleDelete
    - table_beginscan_catalog
    - heap_getnext
    - OidIsValid
    - ObjectIdGetDatum
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void DropSetting(Oid databaseid, Oid roleid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:236,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:240,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:241,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:245,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:247,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:249,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:249,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:254,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:255,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:258,1
    - Dst: ProcessGUCArray
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:265,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - snapshot
    - databaseid
    - roleid
    - relsetting
    - source
    argTypes:
    - Snapshot
    - Oid
    - Oid
    - Relation
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 228
    functionDepth: 4
    functionLinenumber: 228
    functionLinenumberEnd: 270
    functionName: ApplySetting
    functionSourceFile: /src/postgres/src/backend/catalog/pg_db_role_setting.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - heap_getattr
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - RelationGetDescr
    - DatumGetArrayTypeP
    - ProcessGUCArray
    - ObjectIdGetDatum
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: "void ApplySetting(Snapshot snapshot, Oid databaseid, Oid roleid,\n\t\t\t
      Relation relsetting, GucSource source)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/catalog/index.c:160,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:164,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:167,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:167,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:168,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:169,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:170,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:171,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/index.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 148
    functionDepth: 4
    functionLinenumber: 148
    functionLinenumberEnd: 179
    functionName: relationHasPrimaryKey
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - list_free
    - HeapTupleIsValid
    - ObjectIdGetDatum
    - ReleaseSysCache
    - GETSTRUCT
    - lfirst_oid
    - RelationGetIndexList
    linkageType: ''
    returnType: bool
    signature: bool relationHasPrimaryKey(Relation rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:164,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:167,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:167,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:168,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:169,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:170,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 174
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 353
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ObjectIdGetDatum
    - ReleaseSysCache
    - GETSTRUCT
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(indexoidscan, indexoidlist)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: relationHasPrimaryKey
      Src: /src/postgres/src/backend/catalog/index.c:217,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:219,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:220,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:221,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:233,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:234,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:250,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:252,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/index.c:258,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:259,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:259,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:260,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:261,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:262,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:263,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:264,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:267,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:269,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:270,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:272,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 4
    argNames:
    - heapRel
    - indexInfo
    - is_alter_table
    - stmt
    argTypes:
    - Relation
    - IndexInfo*
    - bool
    - IndexStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 202
    functionDepth: 5
    functionLinenumber: 202
    functionLinenumberEnd: 274
    functionName: index_check_primary_key
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - elog
    - relationHasPrimaryKey
    - errcode
    - HeapTupleIsValid
    - ereport
    - ReleaseSysCache
    - errmsg
    - RelationGetRelationName
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    - RelationGetRelid
    - SearchSysCache2
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: "void index_check_primary_key(Relation heapRel,\n\t\t\t\t\t\tconst
      IndexInfo *indexInfo,\n\t\t\t\t\t\tbool is_alter_table,\n\t\t\t\t\t\tconst IndexStmt
      *stmt)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/index.c:291,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/index.c:292,1
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/catalog/index.c:300,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:303,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/index.c:304,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/catalog/index.c:309,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/index.c:317,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/catalog/index.c:323,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:332,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/index.c:333,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/index.c:333,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/index.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:346,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:349,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/index.c:350,1
    - Dst: AttrNumberGetAttrOffset
      Src: /src/postgres/src/backend/catalog/index.c:351,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:368,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/index.c:369,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/index.c:370,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/index.c:375,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:376,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:376,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:377,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:378,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:379,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/catalog/index.c:386,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:400,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/index.c:411,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:411,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:432,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:432,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:433,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:434,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:435,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:436,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/catalog/index.c:450,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:451,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:452,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:456,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:463,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:465,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:465,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:466,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:467,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:468,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:479,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/catalog/index.c:482,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/catalog/index.c:485,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 81
    argCount: 6
    argNames:
    - heapRelation
    - indexInfo
    - indexColNames
    - accessMethodId
    - collationIds
    - opclassIds
    argTypes:
    - Relation
    - IndexInfo*
    - List*
    - Oid
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 281
    functionDepth: 7
    functionLinenumber: 281
    functionLinenumberEnd: 488
    functionName: ConstructTupleDescriptor
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - exprType
    - get_base_element_type
    - list_head
    - NameStr
    - GetIndexAmRoutineByAmId
    - elog
    - SearchSysCache1
    - Assert
    - RelationGetDescr
    - HeapTupleIsValid
    - TupleDescFinalize
    - lnext
    - CheckAttributeType
    - ReleaseSysCache
    - AttrNumberGetAttrOffset
    - populate_compact_attribute
    - OidIsValid
    - ObjectIdGetDatum
    - exprTypmod
    - CreateTemplateTupleDesc
    - RelationGetForm
    - MemSet
    - namestrcpy
    - lfirst
    - GETSTRUCT
    - TupleDescAttr
    linkageType: ''
    returnType: TupleDesc
    signature: "TupleDesc ConstructTupleDescriptor(Relation heapRelation,\n\t\t\t\t\t\t
      const IndexInfo *indexInfo,\n\t\t\t\t\t\t const List *indexColNames,\n\t\t\t\t\t\t
      Oid accessMethodId,\n\t\t\t\t\t\t const Oid *collationIds,\n\t\t\t\t\t\t const
      Oid *opclassIds)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:502,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/index.c:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - indexRelation
    - numatts
    - indexoid
    argTypes:
    - Relation
    - int
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 506
    functionName: InitializeAttributeOids
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - RelationGetDescr
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: "void InitializeAttributeOids(Relation indexRelation,\n\t\t\t\t\t\tint
      numatts,\n\t\t\t\t\t\tOid indexoid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/index.c:522,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:541,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/index.c:543,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:548,1
    - Dst: InsertPgAttributeTuples
      Src: /src/postgres/src/backend/catalog/index.c:550,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/index.c:552,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - indexRelation
    - attopts
    - stattargets
    argTypes:
    - Relation
    - Datum*
    - NullableDatum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 512
    functionDepth: 4
    functionLinenumber: 512
    functionLinenumberEnd: 555
    functionName: AppendAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - CatalogCloseIndexes
    - palloc0_array
    - table_close
    - RelationGetDescr
    - table_open
    - CatalogOpenIndexes
    - InsertPgAttributeTuples
    linkageType: ''
    returnType: void
    signature: void AppendAttributeTuples(Relation indexRelation, const Datum *attopts,
      const NullableDatum *stattargets)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buildint2vector
      Src: /src/postgres/src/backend/catalog/index.c:593,1
    - Dst: buildoidvector
      Src: /src/postgres/src/backend/catalog/index.c:596,1
    - Dst: buildoidvector
      Src: /src/postgres/src/backend/catalog/index.c:597,1
    - Dst: buildint2vector
      Src: /src/postgres/src/backend/catalog/index.c:598,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/index.c:607,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/index.c:608,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/index.c:609,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/index.c:622,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/catalog/index.c:622,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/index.c:623,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/index.c:624,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:633,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:638,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:639,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:640,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:641,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:642,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:643,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:644,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:645,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:646,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:647,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:648,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:649,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:650,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:651,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:652,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:653,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:654,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:655,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:656,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/index.c:664,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:664,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/index.c:669,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:674,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:675,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 49
    argCount: 12
    argNames:
    - indexoid
    - heapoid
    - parentIndexId
    - indexInfo
    - collationOids
    - opclassOids
    - coloptions
    - primary
    - isexclusion
    - immediate
    - isvalid
    - isready
    argTypes:
    - Oid
    - Oid
    - Oid
    - IndexInfo*
    - Oid*
    - Oid*
    - int16*
    - bool
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 563
    functionDepth: 7
    functionLinenumber: 563
    functionLinenumberEnd: 676
    functionName: UpdateIndexRelation
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - make_ands_explicit
    - buildoidvector
    - pfree
    - RelationGetDescr
    - heap_form_tuple
    - table_close
    - heap_freetuple
    - table_open
    - nodeToString
    - CStringGetTextDatum
    - PointerGetDatum
    - BoolGetDatum
    - ObjectIdGetDatum
    - buildint2vector
    - CatalogTupleInsert
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: "void UpdateIndexRelation(Oid indexoid,\n\t\t\t\t\tOid heapoid,\n\t\t\t\t\tOid
      parentIndexId,\n\t\t\t\t\tconst IndexInfo *indexInfo,\n\t\t\t\t\tconst Oid *collationOids,\n\t\t\t\t\tconst
      Oid *opclassOids,\n\t\t\t\t\tconst int16 *coloptions,\n\t\t\t\t\tbool primary,\n\t\t\t\t\tbool
      isexclusion,\n\t\t\t\t\tbool immediate,\n\t\t\t\t\tbool isvalid,\n\t\t\t\t\tbool
      isready)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:752,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/index.c:770,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:773,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:776,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:781,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/index.c:789,1
    - Dst: RelationIsMapped
      Src: /src/postgres/src/backend/catalog/index.c:791,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:798,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/index.c:801,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:802,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:803,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:805,1
    - Dst: get_collation_isdeterministic
      Src: /src/postgres/src/backend/catalog/index.c:836,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:840,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:840,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:841,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:842,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:843,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:845,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:846,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:846,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:847,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/catalog/index.c:857,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:858,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:859,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:860,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:867,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:868,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:869,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:875,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:876,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:877,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:878,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:884,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/index.c:892,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:896,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:897,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:898,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:900,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:904,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:906,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/index.c:911,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:918,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:919,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:920,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:921,1
    - Dst: ConstructTupleDescriptor
      Src: /src/postgres/src/backend/catalog/index.c:927,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:940,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:945,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:946,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:947,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:948,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/index.c:955,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:956,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:957,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:967,1
    - Dst: GetNewRelFileNumber
      Src: /src/postgres/src/backend/catalog/index.c:972,1
    - Dst: heap_create
      Src: /src/postgres/src/backend/catalog/index.c:981,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:997,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:999,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:999,1
    - Dst: LockRelation
      Src: /src/postgres/src/backend/catalog/index.c:1006,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1016,1
    - Dst: InsertPgClassTuple
      Src: /src/postgres/src/backend/catalog/index.c:1021,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:1022,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1027,1
    - Dst: InitializeAttributeOids
      Src: /src/postgres/src/backend/catalog/index.c:1033,1
    - Dst: AppendAttributeTuples
      Src: /src/postgres/src/backend/catalog/index.c:1040,1
    - Dst: UpdateIndexRelation
      Src: /src/postgres/src/backend/catalog/index.c:1050,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:1062,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1065,1
    - Dst: StoreSingleInheritance
      Src: /src/postgres/src/backend/catalog/index.c:1067,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/index.c:1068,1
    - Dst: SetRelationHasSubclass
      Src: /src/postgres/src/backend/catalog/index.c:1069,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1086,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1092,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1107,1
    - Dst: index_constraint_create
      Src: /src/postgres/src/backend/catalog/index.c:1111,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/index.c:1127,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/index.c:1134,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/index.c:1137,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1150,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/index.c:1152,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/index.c:1155,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/index.c:1156,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1165,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1167,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:1168,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1170,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:1171,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/index.c:1175,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1182,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1184,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/index.c:1185,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1192,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/index.c:1193,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/index.c:1196,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/index.c:1197,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/index.c:1202,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/index.c:1212,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1222,1
    - Dst: InvokeObjectPostCreateHookArg
      Src: /src/postgres/src/backend/catalog/index.c:1226,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:1233,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1241,1
    - Dst: RelationInitIndexAccessInfo
      Src: /src/postgres/src/backend/catalog/index.c:1242,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1244,1
    - Dst: index_opclass_options
      Src: /src/postgres/src/backend/catalog/index.c:1251,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1264,1
    - Dst: index_register
      Src: /src/postgres/src/backend/catalog/index.c:1266,1
    - Dst: index_update_stats
      Src: /src/postgres/src/backend/catalog/index.c:1275,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:1279,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/index.c:1283,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:1291,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 158
    argCount: 21
    argNames:
    - heapRelation
    - indexRelationName
    - indexRelationId
    - parentIndexRelid
    - parentConstraintId
    - relFileNumber
    - indexInfo
    - indexColNames
    - accessMethodId
    - tableSpaceId
    - collationIds
    - opclassIds
    - opclassOptions
    - coloptions
    - stattargets
    - reloptions
    - flags
    - constr_flags
    - allow_system_table_mods
    - is_internal
    - constraintId
    argTypes:
    - Relation
    - char*
    - Oid
    - Oid
    - Oid
    - RelFileNumber
    - IndexInfo*
    - List*
    - Oid
    - Oid
    - Oid*
    - Oid*
    - Datum*
    - int16*
    - NullableDatum*
    - Datum
    - uint16
    - uint16
    - bool
    - bool
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 729
    functionDepth: 8
    functionLinenumber: 729
    functionLinenumberEnd: 1294
    functionName: index_create
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - InsertPgClassTuple
    - ObjectAddressSubSet
    - IsSystemRelation
    - index_build
    - errcode
    - CacheInvalidateRelcache
    - ConstructTupleDescriptor
    - recordDependencyOn
    - RelationInitIndexAccessInfo
    - RelationGetNamespace
    - NameStr
    - RelationGetRelationName
    - table_close
    - recordDependencyOnSingleRelExpr
    - elog
    - SearchSysCache1
    - Assert
    - HeapTupleIsValid
    - get_relname_relid
    - CommandCounterIncrement
    - table_open
    - ReleaseSysCache
    - SetRelationHasSubclass
    - index_close
    - RelationIsMapped
    - errmsg
    - GetNewRelFileNumber
    - OidIsValid
    - heap_create
    - ObjectIdGetDatum
    - new_object_addresses
    - index_opclass_options
    - get_collation_isdeterministic
    - record_object_address_dependencies
    - LockRelation
    - UpdateIndexRelation
    - ereport
    - InvokeObjectPostCreateHookArg
    - StoreSingleInheritance
    - IsBootstrapProcessingMode
    - GETSTRUCT
    - LockRelationOid
    - free_object_addresses
    - IsCatalogRelation
    - index_register
    - ConstraintNameIsUsed
    - index_constraint_create
    - InitializeAttributeOids
    - add_exact_object_address
    - index_update_stats
    - ObjectAddressSet
    - AppendAttributeTuples
    - IsNormalProcessingMode
    - RelFileNumberIsValid
    - RelationGetRelid
    linkageType: ''
    returnType: Oid
    signature: "Oid index_create(Relation heapRelation,\n\t\t\t const char *indexRelationName,\n\t\t\t
      Oid indexRelationId,\n\t\t\t Oid parentIndexRelid,\n\t\t\t Oid parentConstraintId,\n\t\t\t
      RelFileNumber relFileNumber,\n\t\t\t IndexInfo *indexInfo,\n\t\t\t const List
      *indexColNames,\n\t\t\t Oid accessMethodId,\n\t\t\t Oid tableSpaceId,\n\t\t\t
      const Oid *collationIds,\n\t\t\t const Oid *opclassIds,\n\t\t\t const Datum
      *opclassOptions,\n\t\t\t const int16 *coloptions,\n\t\t\t const NullableDatum
      *stattargets,\n\t\t\t Datum reloptions,\n\t\t\t uint16 flags,\n\t\t\t uint16
      constr_flags,\n\t\t\t bool allow_system_table_mods,\n\t\t\t bool is_internal,\n\t\t\t
      Oid *constraintId)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:1328,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:1331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:1338,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:1339,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:1340,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:1343,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1343,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1344,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1345,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/index.c:1346,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/index.c:1348,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/index.c:1350,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/index.c:1352,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:1355,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1355,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1356,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1357,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/index.c:1358,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/index.c:1371,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/index.c:1373,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/index.c:1374,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/index.c:1375,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/index.c:1382,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/index.c:1384,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/index.c:1385,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/catalog/index.c:1388,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/index.c:1389,1
    - Dst: makeIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:1395,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:1427,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/index.c:1428,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/index.c:1430,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:1430,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/index.c:1435,1
    - Dst: get_attoptions
      Src: /src/postgres/src/backend/catalog/index.c:1437,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/index.c:1440,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/index.c:1446,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1446,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1446,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1447,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1448,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/index.c:1450,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:1451,1
    - Dst: index_create
      Src: /src/postgres/src/backend/catalog/index.c:1463,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:1486,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:1487,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:1488,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 57
    argCount: 5
    argNames:
    - heapRelation
    - flags
    - oldIndexId
    - tablespaceOid
    - newName
    argTypes:
    - Relation
    - uint16
    - Oid
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1305
    functionDepth: 9
    functionLinenumber: 1305
    functionLinenumberEnd: 1491
    functionName: index_create_copy
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - errcode
    - SearchSysCache2
    - NameStr
    - make_ands_implicit
    - get_attoptions
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - pfree
    - BuildIndexInfo
    - makeIndexInfo
    - RelationGetDescr
    - ReleaseSysCache
    - index_close
    - errmsg
    - TextDatumGetCString
    - ObjectIdGetDatum
    - lappend
    - ereport
    - index_open
    - stringToNode
    - SysCacheGetAttrNotNull
    - TupleDescAttr
    - Int16GetDatum
    - palloc0_array
    - index_create
    - SysCacheGetAttr
    - DatumGetPointer
    linkageType: ''
    returnType: Oid
    signature: "Oid index_create_copy(Relation heapRelation, uint16 flags,\n\t\t\t\t
      \ Oid oldIndexId, Oid tablespaceOid, const char *newName)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1514,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/catalog/index.c:1514,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1517,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:1524,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:1525,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:1527,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/catalog/index.c:1528,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:1530,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:1537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1538,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/index.c:1543,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:1546,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:1549,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1552,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:1553,1
    - Dst: index_set_state_flags
      Src: /src/postgres/src/backend/catalog/index.c:1560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - heapRelationId
    - indexRelationId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1502
    functionDepth: 3
    functionLinenumber: 1502
    functionLinenumberEnd: 1561
    functionName: index_concurrently_build
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - SetUserIdAndSecContext
    - index_build
    - Assert
    - ActiveSnapshotSet
    - BuildIndexInfo
    - NewGUCNestLevel
    - index_open
    - table_open
    - RestrictSearchPath
    - index_close
    - index_set_state_flags
    - AtEOXact_GUC
    - GetUserIdAndSecContext
    - table_close
    linkageType: ''
    returnType: void
    signature: "void index_concurrently_build(Oid heapRelationId,\n\t\t\t\t\t\t Oid
      indexRelationId)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/index.c:1594,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/index.c:1595,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1598,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1600,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1601,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1602,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1603,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1604,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1605,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1606,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1607,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1609,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1610,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/index.c:1613,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:1613,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/index.c:1614,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1621,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1622,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1624,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1625,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1628,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1630,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1631,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1632,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1633,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1634,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1635,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1636,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1637,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1639,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1640,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1668,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1669,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1671,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1672,1
    - Dst: get_index_ref_constraints
      Src: /src/postgres/src/backend/catalog/index.c:1678,1
    - Dst: get_index_constraint
      Src: /src/postgres/src/backend/catalog/index.c:1680,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1682,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/index.c:1683,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1685,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1686,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:1695,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1698,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1699,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1700,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1701,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1703,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1709,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1712,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1715,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1718,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/index.c:1720,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1723,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/index.c:1723,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1725,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/index.c:1731,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1732,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1736,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1738,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/index.c:1741,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1756,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1759,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1762,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1763,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1766,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1767,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1770,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1772,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/index.c:1774,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/index.c:1777,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/index.c:1779,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:1779,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1781,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/index.c:1786,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1787,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/catalog/index.c:1793,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/catalog/index.c:1795,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/index.c:1796,1
    - Dst: DeleteInheritsTuple
      Src: /src/postgres/src/backend/catalog/index.c:1798,1
    - Dst: StoreSingleInheritance
      Src: /src/postgres/src/backend/catalog/index.c:1799,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/index.c:1801,1
    - Dst: changeDependenciesOf
      Src: /src/postgres/src/backend/catalog/index.c:1809,1
    - Dst: changeDependenciesOn
      Src: /src/postgres/src/backend/catalog/index.c:1810,1
    - Dst: changeDependenciesOf
      Src: /src/postgres/src/backend/catalog/index.c:1812,1
    - Dst: changeDependenciesOn
      Src: /src/postgres/src/backend/catalog/index.c:1813,1
    - Dst: pgstat_copy_relation_stats
      Src: /src/postgres/src/backend/catalog/index.c:1816,1
    - Dst: CopyStatistics
      Src: /src/postgres/src/backend/catalog/index.c:1819,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1822,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1823,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1824,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1825,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/index.c:1828,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/index.c:1829,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 106
    argCount: 3
    argNames:
    - newIndexId
    - oldIndexId
    - oldName
    argTypes:
    - Oid
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1569
    functionDepth: 7
    functionLinenumber: 1569
    functionLinenumberEnd: 1830
    functionName: index_concurrently_swap
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - NameStr
    - lappend_oid
    - lfirst_oid
    - table_close
    - elog
    - systable_endscan
    - heap_freetuple
    - HeapTupleIsValid
    - Int32GetDatum
    - RelationGetDescr
    - table_open
    - linitial_oid
    - get_index_ref_constraints
    - heap_copytuple
    - OidIsValid
    - relation_close
    - ObjectIdGetDatum
    - changeDependenciesOf
    - CopyStatistics
    - changeDependenciesOn
    - systable_beginscan
    - list_free
    - namestrcpy
    - SearchSysCacheCopy1
    - DeleteInheritsTuple
    - GETSTRUCT
    - StoreSingleInheritance
    - relation_open
    - get_partition_ancestors
    - heap_modify_tuple
    - ScanKeyInit
    - get_rel_relispartition
    - CatalogTupleUpdate
    - get_index_constraint
    - pgstat_copy_relation_stats
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void index_concurrently_swap(Oid newIndexId, Oid oldIndexId, const
      char *oldName)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:1695,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1698,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1699,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1700,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1701,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1703,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1709,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1712,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1715,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1718,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/index.c:1720,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1723,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/index.c:1723,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1725,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/index.c:1731,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1732,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1736,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1738,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/index.c:1741,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1688
    functionDepth: 4
    functionLinenumber: 1688
    functionLinenumberEnd: 1742
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 353
    functionsReached:
    - elog
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - heap_freetuple
    - HeapTupleIsValid
    - ObjectIdGetDatum
    - CatalogTupleUpdate
    - SearchSysCacheCopy1
    - heap_copytuple
    - GETSTRUCT
    - lfirst_oid
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void foreach(lc, constraintOids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1852,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:1853,1
    - Dst: TransferPredicateLocksToHeapRelation
      Src: /src/postgres/src/backend/catalog/index.c:1854,1
    - Dst: index_set_state_flags
      Src: /src/postgres/src/backend/catalog/index.c:1861,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:1868,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1873,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:1874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - heapId
    - indexId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1840
    functionDepth: 3
    functionLinenumber: 1840
    functionLinenumberEnd: 1875
    functionName: index_concurrently_set_dead
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - CacheInvalidateRelcache
    - index_open
    - table_open
    - index_set_state_flags
    - index_close
    - TransferPredicateLocksToHeapRelation
    - table_close
    linkageType: ''
    returnType: void
    signature: void index_concurrently_set_dead(Oid heapId, Oid indexId)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/index.c:1913,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1931,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1931,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/index.c:1935,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1936,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:1937,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:1938,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:1939,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1944,1
    - Dst: deleteDependencyRecordsForClass
      Src: /src/postgres/src/backend/catalog/index.c:1956,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1959,1
    - Dst: CreateConstraintEntry
      Src: /src/postgres/src/backend/catalog/index.c:1975,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:1983,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:2015,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:2016,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:2017,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2023,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:2027,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:2028,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:2029,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:2030,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:2031,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/catalog/index.c:2041,1
    - Dst: SystemFuncName
      Src: /src/postgres/src/backend/catalog/index.c:2049,1
    - Dst: CreateTrigger
      Src: /src/postgres/src/backend/catalog/index.c:2061,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:2061,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2083,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:2085,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:2086,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2087,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2088,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:2089,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:2106,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:2115,1
    - Dst: InvokeObjectPostAlterHookArg
      Src: /src/postgres/src/backend/catalog/index.c:2117,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:2121,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2122,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 74
    argCount: 9
    argNames:
    - heapRelation
    - indexRelationId
    - parentConstraintId
    - indexInfo
    - constraintName
    - constraintType
    - constr_flags
    - allow_system_table_mods
    - is_internal
    argTypes:
    - Relation
    - Oid
    - Oid
    - IndexInfo*
    - char*
    - char
    - uint16
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2126
      start: 1902
    functionDepth: 7
    functionLinenumber: 1902
    functionLinenumberEnd: 2126
    functionName: index_constraint_create
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - IsSystemRelation
    - errcode
    - CacheInvalidateRelcache
    - recordDependencyOn
    - RelationGetNamespace
    - table_close
    - elog
    - heap_freetuple
    - Assert
    - HeapTupleIsValid
    - deleteDependencyRecordsForClass
    - SystemFuncName
    - table_open
    - errmsg
    - OidIsValid
    - CreateTrigger
    - ObjectIdGetDatum
    - ereport
    - InvokeObjectPostAlterHookArg
    - SearchSysCacheCopy1
    - IsBootstrapProcessingMode
    - GETSTRUCT
    - CreateConstraintEntry
    - CatalogTupleUpdate
    - makeNode
    - ObjectAddressSet
    - IsNormalProcessingMode
    - RelationGetRelid
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress index_constraint_create(Relation heapRelation,\n\t\t\t\t\t\tOid
      indexRelationId,\n\t\t\t\t\t\tOid parentConstraintId,\n\t\t\t\t\t\tconst IndexInfo
      *indexInfo,\n\t\t\t\t\t\tconst char *constraintName,\n\t\t\t\t\t\tchar constraintType,\n\t\t\t\t\t\tuint16
      constr_flags,\n\t\t\t\t\t\tbool allow_system_table_mods,\n\t\t\t\t\t\tbool is_internal)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:2159,1
    - Dst: get_rel_persistence
      Src: /src/postgres/src/backend/catalog/index.c:2159,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/catalog/index.c:2180,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2182,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:2183,1
    - Dst: CheckTableNotInUse
      Src: /src/postgres/src/backend/catalog/index.c:2189,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/catalog/index.c:2237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:2238,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:2239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:2240,1
    - Dst: index_set_state_flags
      Src: /src/postgres/src/backend/catalog/index.c:2245,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:2252,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/catalog/index.c:2256,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2259,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:2260,1
    - Dst: LockRelationIdForSession
      Src: /src/postgres/src/backend/catalog/index.c:2273,1
    - Dst: LockRelationIdForSession
      Src: /src/postgres/src/backend/catalog/index.c:2274,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2276,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/catalog/index.c:2277,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/catalog/index.c:2278,1
    - Dst: WaitForLockers
      Src: /src/postgres/src/backend/catalog/index.c:2298,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2304,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2304,1
    - Dst: index_concurrently_set_dead
      Src: /src/postgres/src/backend/catalog/index.c:2307,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2309,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/catalog/index.c:2315,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/catalog/index.c:2316,1
    - Dst: WaitForLockers
      Src: /src/postgres/src/backend/catalog/index.c:2322,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2331,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:2332,1
    - Dst: TransferPredicateLocksToHeapRelation
      Src: /src/postgres/src/backend/catalog/index.c:2337,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/index.c:2343,1
    - Dst: RelationDropStorage
      Src: /src/postgres/src/backend/catalog/index.c:2344,1
    - Dst: pgstat_drop_relation
      Src: /src/postgres/src/backend/catalog/index.c:2347,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:2354,1
    - Dst: RelationForgetRelation
      Src: /src/postgres/src/backend/catalog/index.c:2356,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2362,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2362,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2367,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:2369,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:2369,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2370,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2371,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/catalog/index.c:2373,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:2374,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/index.c:2376,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:2378,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2379,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2381,1
    - Dst: RemoveStatistics
      Src: /src/postgres/src/backend/catalog/index.c:2388,1
    - Dst: DeleteAttributeTuples
      Src: /src/postgres/src/backend/catalog/index.c:2393,1
    - Dst: DeleteRelationTuple
      Src: /src/postgres/src/backend/catalog/index.c:2398,1
    - Dst: DeleteInheritsTuple
      Src: /src/postgres/src/backend/catalog/index.c:2403,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:2413,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2418,1
    - Dst: UnlockRelationIdForSession
      Src: /src/postgres/src/backend/catalog/index.c:2425,1
    - Dst: UnlockRelationIdForSession
      Src: /src/postgres/src/backend/catalog/index.c:2426,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 60
    argCount: 3
    argNames:
    - indexId
    - concurrent
    - concurrent_lock_mode
    argTypes:
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2428
      start: 2139
    functionDepth: 5
    functionLinenumber: 2139
    functionLinenumberEnd: 2428
    functionName: index_drop
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - CheckTableNotInUse
    - PopActiveSnapshot
    - errcode
    - CacheInvalidateRelcache
    - DeleteAttributeTuples
    - CommitTransactionCommand
    - index_concurrently_set_dead
    - table_close
    - UnlockRelationIdForSession
    - SearchSysCache1
    - elog
    - RELKIND_HAS_STORAGE
    - RelationForgetRelation
    - Assert
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - CatalogTupleDelete
    - index_set_state_flags
    - index_close
    - GetTopTransactionIdIfAny
    - errmsg
    - StartTransactionCommand
    - ReleaseSysCache
    - ObjectIdGetDatum
    - SET_LOCKTAG_RELATION
    - RelationDropStorage
    - RemoveStatistics
    - DeleteRelationTuple
    - ereport
    - index_open
    - IndexGetRelation
    - DeleteInheritsTuple
    - GetTransactionSnapshot
    - TransferPredicateLocksToHeapRelation
    - pgstat_drop_relation
    - LockRelationIdForSession
    - heap_attisnull
    - PushActiveSnapshot
    - WaitForLockers
    - get_rel_persistence
    linkageType: ''
    returnType: void
    signature: void index_drop(Oid indexId, bool concurrent, bool concurrent_lock_mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2456,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:2457,1
    - Dst: makeIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:2463,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/catalog/index.c:2466,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/catalog/index.c:2467,1
    - Dst: RelationGetExclusionInfo
      Src: /src/postgres/src/backend/catalog/index.c:2482,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2489
      start: 2445
    functionDepth: 2
    functionLinenumber: 2445
    functionLinenumberEnd: 2489
    functionName: BuildIndexInfo
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 6
    functionsReached:
    - elog
    - RelationGetIndexExpressions
    - RelationGetExclusionInfo
    - makeIndexInfo
    - RelationGetIndexPredicate
    - RelationGetRelid
    linkageType: ''
    returnType: IndexInfo
    signature: 'IndexInfo *

      BuildIndexInfo(Relation index)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2516,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:2517,1
    - Dst: makeIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:2523,1
    - Dst: RelationGetDummyIndexExpressions
      Src: /src/postgres/src/backend/catalog/index.c:2526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2542
      start: 2505
    functionDepth: 2
    functionLinenumber: 2505
    functionLinenumberEnd: 2542
    functionName: BuildDummyIndexInfo
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 2
    functionsReached:
    - elog
    - makeIndexInfo
    - RelationGetRelid
    - RelationGetDummyIndexExpressions
    linkageType: ''
    returnType: IndexInfo
    signature: 'IndexInfo *

      BuildDummyIndexInfo(Relation index)'
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2589,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/catalog/index.c:2627,1
    - Dst: equal
      Src: /src/postgres/src/backend/catalog/index.c:2639,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/catalog/index.c:2651,1
    - Dst: equal
      Src: /src/postgres/src/backend/catalog/index.c:2662,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 50
    argCount: 7
    argNames:
    - info1
    - info2
    - collations1
    - collations2
    - opfamilies1
    - opfamilies2
    - attmap
    argTypes:
    - IndexInfo*
    - IndexInfo*
    - Oid*
    - Oid*
    - Oid*
    - Oid*
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2671
      start: 2554
    functionDepth: 3
    functionLinenumber: 2554
    functionLinenumberEnd: 2671
    functionName: CompareIndexInfo
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - elog
    - equal
    - map_variable_attnos
    linkageType: ''
    returnType: bool
    signature: "bool CompareIndexInfo(const IndexInfo *info1, const IndexInfo *info2,\n\t\t\t\t
      const Oid *collations1, const Oid *collations2,\n\t\t\t\t const Oid *opfamilies1,
      const Oid *opfamilies2,\n\t\t\t\t const AttrMap *attmap)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/catalog/index.c:2692,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:2697,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/index.c:2699,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/index.c:2700,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/index.c:2701,1
    - Dst: IndexAmTranslateCompareType
      Src: /src/postgres/src/backend/catalog/index.c:2711,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/catalog/index.c:2716,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2720,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2721,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/catalog/index.c:2724,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - index
    - ii
    argTypes:
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2726
      start: 2686
    functionDepth: 4
    functionLinenumber: 2686
    functionLinenumberEnd: 2726
    functionName: BuildSpeculativeIndexInfo
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - elog
    - IndexAmTranslateCompareType
    - get_opfamily_member
    - Assert
    - palloc_array
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - get_opcode
    linkageType: ''
    returnType: void
    signature: void BuildSpeculativeIndexInfo(Relation index, IndexInfo *ii)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ExecPrepareExprList
      Src: /src/postgres/src/backend/catalog/index.c:2762,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:2764,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/catalog/index.c:2764,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/index.c:2766,1
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/catalog/index.c:2775,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/catalog/index.c:2782,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2790,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/catalog/index.c:2791,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/index.c:2791,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/catalog/index.c:2792,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/index.c:2794,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2801,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 5
    argNames:
    - indexInfo
    - slot
    - estate
    - values
    - isnull
    argTypes:
    - IndexInfo*
    - TupleTableSlot*
    - EState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2802
      start: 2747
    functionDepth: 2
    functionLinenumber: 2747
    functionLinenumberEnd: 2802
    functionName: FormIndexDatum
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 2
    functionsReached:
    - slot_getsysattr
    - elog
    - slot_getattr
    - Assert
    - GetPerTupleExprContext
    - lnext
    - list_head
    - lfirst
    - ExecEvalExprSwitchContext
    - ExecPrepareExprList
    linkageType: ''
    returnType: void
    signature: "void FormIndexDatum(IndexInfo *indexInfo,\n\t\t\t   TupleTableSlot
      *slot,\n\t\t\t   EState *estate,\n\t\t\t   Datum *values,\n\t\t\t   bool *isnull)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:2835,1
    - Dst: AutoVacuumingActive
      Src: /src/postgres/src/backend/catalog/index.c:2872,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/catalog/index.c:2892,1
    - Dst: visibilitymap_count
      Src: /src/postgres/src/backend/catalog/index.c:2895,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2926,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:2928,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:2931,1
    - Dst: systable_inplace_update_begin
      Src: /src/postgres/src/backend/catalog/index.c:2932,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2935,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2936,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:2937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:2940,1
    - Dst: systable_inplace_update_finish
      Src: /src/postgres/src/backend/catalog/index.c:2980,1
    - Dst: systable_inplace_update_cancel
      Src: /src/postgres/src/backend/catalog/index.c:2985,1
    - Dst: CacheInvalidateRelcacheByTuple
      Src: /src/postgres/src/backend/catalog/index.c:2994,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:2997,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2999,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 54
    argCount: 3
    argNames:
    - rel
    - hasindex
    - reltuples
    argTypes:
    - Relation
    - bool
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3000
      start: 2826
    functionDepth: 5
    functionLinenumber: 2826
    functionLinenumberEnd: 3000
    functionName: index_update_stats
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - AutoVacuumingActive
    - elog
    - visibilitymap_count
    - ScanKeyInit
    - heap_freetuple
    - HeapTupleIsValid
    - Assert
    - systable_inplace_update_finish
    - systable_inplace_update_cancel
    - table_open
    - systable_inplace_update_begin
    - GETSTRUCT
    - RelationGetNumberOfBlocks
    - CacheInvalidateRelcacheByTuple
    - ObjectIdGetDatum
    - table_close
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void index_update_stats(Relation rel,\n\t\t\t\t   bool hasindex,\n\t\t\t\t
      \  double reltuples)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3036,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3037,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3038,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3039,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:3047,1
    - Dst: plan_create_index_workers
      Src: /src/postgres/src/backend/catalog/index.c:3050,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:3050,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:3051,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3054,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/index.c:3055,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3056,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3057,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3059,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/index.c:3060,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3061,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3062,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3070,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3071,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:3073,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/catalog/index.c:3074,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/catalog/index.c:3093,1
    - Dst: Relation::rd_indam::ambuild
      Src: /src/postgres/src/backend/catalog/index.c:3099,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3101,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/catalog/index.c:3111,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/catalog/index.c:3111,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/catalog/index.c:3113,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/catalog/index.c:3113,1
    - Dst: log_smgrcreate
      Src: /src/postgres/src/backend/catalog/index.c:3114,1
    - Dst: Relation::rd_indam::ambuildempty
      Src: /src/postgres/src/backend/catalog/index.c:3115,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:3150,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3155,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:3157,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3158,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3159,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3160,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:3161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3164,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:3167,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:3169,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3170,1
    - Dst: index_update_stats
      Src: /src/postgres/src/backend/catalog/index.c:3176,1
    - Dst: index_update_stats
      Src: /src/postgres/src/backend/catalog/index.c:3180,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:3185,1
    - Dst: IndexCheckExclusion
      Src: /src/postgres/src/backend/catalog/index.c:3194,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:3197,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3200,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 6
    argNames:
    - heapRelation
    - indexRelation
    - indexInfo
    - isreindex
    - parallel
    - progress
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3201
      start: 3020
    functionDepth: 6
    functionLinenumber: 3020
    functionLinenumberEnd: 3201
    functionName: index_build
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 5
    functionsReached:
    - IsNormalProcessingMode
    - smgrcreate
    - RelationGetSmgr
    - RestrictSearchPath
    - smgrexists
    - plan_create_index_workers
    - RelationGetRelationName
    - table_close
    - elog
    - heap_freetuple
    - Assert
    - HeapTupleIsValid
    - CommandCounterIncrement
    - Relation::rd_indam::ambuildempty
    - table_open
    - IndexCheckExclusion
    - AtEOXact_GUC
    - ObjectIdGetDatum
    - errmsg_internal
    - ereport
    - Relation::rd_indam::ambuild
    - SearchSysCacheCopy1
    - GETSTRUCT
    - SetUserIdAndSecContext
    - pgstat_progress_update_multi_param
    - NewGUCNestLevel
    - CatalogTupleUpdate
    - RelationIsValid
    - index_update_stats
    - log_smgrcreate
    - GetUserIdAndSecContext
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void index_build(Relation heapRelation,\n\t\t\tRelation indexRelation,\n\t\t\tIndexInfo
      *indexInfo,\n\t\t\tbool isreindex,\n\t\t\tbool parallel,\n\t\t\tbool progress)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReindexIsCurrentlyProcessingIndex
      Src: /src/postgres/src/backend/catalog/index.c:3234,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:3234,1
    - Dst: ResetReindexProcessing
      Src: /src/postgres/src/backend/catalog/index.c:3235,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/catalog/index.c:3241,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/catalog/index.c:3242,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/catalog/index.c:3243,1
    - Dst: ExecPrepareQual
      Src: /src/postgres/src/backend/catalog/index.c:3249,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:3254,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:3254,1
    - Dst: table_beginscan_strat
      Src: /src/postgres/src/backend/catalog/index.c:3255,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/catalog/index.c:3262,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/catalog/index.c:3264,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/catalog/index.c:3271,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/catalog/index.c:3278,1
    - Dst: check_exclusion_constraint
      Src: /src/postgres/src/backend/catalog/index.c:3287,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/catalog/index.c:3292,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/index.c:3295,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:3296,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/index.c:3298,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/catalog/index.c:3300,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - heapRelation
    - indexRelation
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3305
      start: 3215
    functionDepth: 3
    functionLinenumber: 3215
    functionLinenumberEnd: 3305
    functionName: IndexCheckExclusion
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - FreeExecutorState
    - RegisterSnapshot
    - ExecPrepareQual
    - FormIndexDatum
    - MemoryContextReset
    - GetLatestSnapshot
    - table_beginscan_strat
    - ReindexIsCurrentlyProcessingIndex
    - ResetReindexProcessing
    - table_endscan
    - UnregisterSnapshot
    - ExecDropSingleTupleTableSlot
    - check_exclusion_constraint
    - table_slot_create
    - CHECK_FOR_INTERRUPTS
    - CreateExecutorState
    - table_scan_getnextslot
    - GetPerTupleExprContext
    - ExecQual
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void IndexCheckExclusion(Relation heapRelation,\n\t\t\t\t\tRelation
      indexRelation,\n\t\t\t\t\tIndexInfo *indexInfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/catalog/index.c:3395,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3399,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3406,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3407,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:3409,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/catalog/index.c:3410,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:3412,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:3419,1
    - Dst: tuplesort_begin_datum
      Src: /src/postgres/src/backend/catalog/index.c:3442,1
    - Dst: index_bulk_delete
      Src: /src/postgres/src/backend/catalog/index.c:3449,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/catalog/index.c:3464,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/catalog/index.c:3466,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/catalog/index.c:3471,1
    - Dst: table_index_validate_scan
      Src: /src/postgres/src/backend/catalog/index.c:3473,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/catalog/index.c:3480,1
    - Dst: index_insert_cleanup
      Src: /src/postgres/src/backend/catalog/index.c:3483,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3485,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:3490,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3493,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:3496,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 3
    argNames:
    - heapId
    - indexId
    - snapshot
    argTypes:
    - Oid
    - Oid
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3498
      start: 3370
    functionDepth: 3
    functionLinenumber: 3370
    functionLinenumberEnd: 3498
    functionName: validate_index
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - index_insert_cleanup
    - index_bulk_delete
    - RestrictSearchPath
    - table_close
    - elog
    - BuildIndexInfo
    - table_index_validate_scan
    - table_open
    - index_close
    - AtEOXact_GUC
    - tuplesort_end
    - tuplesort_performsort
    - index_open
    - tuplesort_begin_datum
    - SetUserIdAndSecContext
    - pgstat_progress_update_multi_param
    - NewGUCNestLevel
    - GetUserIdAndSecContext
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void validate_index(Oid heapId, Oid indexId, Snapshot snapshot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: itemptr_encode
      Src: /src/postgres/src/backend/catalog/index.c:3507,1
    - Dst: tuplesort_putdatum
      Src: /src/postgres/src/backend/catalog/index.c:3509,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - itemptr
    - opaque
    argTypes:
    - ItemPointer
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3512
      start: 3503
    functionDepth: 2
    functionLinenumber: 3503
    functionLinenumberEnd: 3512
    functionName: validate_index_callback
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - itemptr_encode
    - Int64GetDatum
    - tuplesort_putdatum
    linkageType: ''
    returnType: bool
    signature: bool validate_index_callback(ItemPointer itemptr, void *opaque)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3531,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:3533,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3534,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3535,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3536,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:3537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3553,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3584,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3585,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3586,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:3593,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3595,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 2
    argNames:
    - indexId
    - action
    argTypes:
    - Oid
    - IndexStateFlagsAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3596
      start: 3523
    functionDepth: 3
    functionLinenumber: 3523
    functionLinenumberEnd: 3596
    functionName: index_set_state_flags
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 3
    functionsReached:
    - elog
    - HeapTupleIsValid
    - Assert
    - CatalogTupleUpdate
    - table_open
    - SearchSysCacheCopy1
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: void index_set_state_flags(Oid indexId, IndexStateFlagsAction action)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:3610,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3610,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3611,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3615,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:3617,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3618,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:3621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - indexId
    - missing_ok
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3623
      start: 3603
    functionDepth: 1
    functionLinenumber: 3603
    functionLinenumberEnd: 3623
    functionName: IndexGetRelation
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 6
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - Assert
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid IndexGetRelation(Oid indexId, bool missing_ok)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: pg_rusage_init
      Src: /src/postgres/src/backend/catalog/index.c:3645,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/catalog/index.c:3651,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3654,1
    - Dst: try_table_open
      Src: /src/postgres/src/backend/catalog/index.c:3658,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3660,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3671,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3672,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:3674,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/catalog/index.c:3675,1
    - Dst: pgstat_progress_start_command
      Src: /src/postgres/src/backend/catalog/index.c:3688,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/catalog/index.c:3690,1
    - Dst: try_index_open
      Src: /src/postgres/src/backend/catalog/index.c:3698,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:3700,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:3706,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3709,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3712,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/catalog/index.c:3717,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:3728,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/catalog/index.c:3729,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3739,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/index.c:3740,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/index.c:3740,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3741,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/catalog/index.c:3747,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3748,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:3749,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:3750,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/index.c:3757,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/index.c:3757,1
    - Dst: get_index_isvalid
      Src: /src/postgres/src/backend/catalog/index.c:3758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3759,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:3760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:3761,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3773,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/index.c:3774,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3775,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:3776,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:3777,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3778,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3781,1
    - Dst: CheckRelationTableSpaceMove
      Src: /src/postgres/src/backend/catalog/index.c:3782,1
    - Dst: CheckTableNotInUse
      Src: /src/postgres/src/backend/catalog/index.c:3789,1
    - Dst: SetRelationTableSpace
      Src: /src/postgres/src/backend/catalog/index.c:3795,1
    - Dst: RelationDropStorage
      Src: /src/postgres/src/backend/catalog/index.c:3800,1
    - Dst: RelationAssumeNewRelfilelocator
      Src: /src/postgres/src/backend/catalog/index.c:3801,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:3804,1
    - Dst: TransferPredicateLocksToHeapRelation
      Src: /src/postgres/src/backend/catalog/index.c:3811,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:3814,1
    - Dst: SetReindexProcessing
      Src: /src/postgres/src/backend/catalog/index.c:3828,1
    - Dst: RelationSetNewRelfilenumber
      Src: /src/postgres/src/backend/catalog/index.c:3831,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/index.c:3835,1
    - Dst: ResetReindexProcessing
      Src: /src/postgres/src/backend/catalog/index.c:3838,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3875,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:3877,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3878,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3879,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3880,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:3881,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:3896,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:3905,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3908,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3913,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:3914,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/index.c:3915,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/index.c:3916,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/catalog/index.c:3917,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:3920,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3923,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:3926,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3927,1
    - Dst: pgstat_progress_end_command
      Src: /src/postgres/src/backend/catalog/index.c:3930,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 92
    argCount: 5
    argNames:
    - stmt
    - indexId
    - skip_constraint_checks
    - persistence
    - params
    argTypes:
    - ReindexStmt*
    - Oid
    - bool
    - char
    - ReindexParams*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3931
      start: 3628
    functionDepth: 7
    functionLinenumber: 3628
    functionLinenumberEnd: 3931
    functionName: reindex_index
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - CheckTableNotInUse
    - pg_rusage_show
    - try_table_open
    - index_build
    - IsSystemRelation
    - CheckRelationTableSpaceMove
    - errcode
    - SetRelationTableSpace
    - CacheInvalidateRelcache
    - pg_rusage_init
    - RestrictSearchPath
    - RelationGetNamespace
    - RelationGetRelationName
    - get_index_isvalid
    - table_close
    - elog
    - SetReindexProcessing
    - HeapTupleIsValid
    - BuildIndexInfo
    - CommandCounterIncrement
    - table_open
    - pgstat_progress_start_command
    - get_rel_name
    - index_close
    - errmsg
    - AtEOXact_GUC
    - OidIsValid
    - ResetReindexProcessing
    - ObjectIdGetDatum
    - RelationDropStorage
    - pgstat_progress_end_command
    - errdetail_internal
    - ereport
    - index_open
    - IndexGetRelation
    - RELATION_IS_OTHER_TEMP
    - SearchSysCacheCopy1
    - GETSTRUCT
    - TransferPredicateLocksToHeapRelation
    - IsToastNamespace
    - try_index_open
    - get_namespace_name
    - RelationSetNewRelfilenumber
    - SetUserIdAndSecContext
    - RelationAssumeNewRelfilelocator
    - pgstat_progress_update_multi_param
    - NewGUCNestLevel
    - CatalogTupleUpdate
    - EventTriggerCollectSimpleCommand
    - ObjectAddressSet
    - GetUserIdAndSecContext
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: "void reindex_index(const ReindexStmt *stmt, Oid indexId,\n\t\t\t  bool
      skip_constraint_checks, char persistence,\n\t\t\t  const ReindexParams *params)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: try_table_open
      Src: /src/postgres/src/backend/catalog/index.c:3986,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3988,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3999,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/index.c:4000,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/index.c:4000,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:4001,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/catalog/index.c:4009,1
    - Dst: SetReindexPending
      Src: /src/postgres/src/backend/catalog/index.c:4014,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:4020,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:4037,1
    - Dst: reindex_relation
      Src: /src/postgres/src/backend/catalog/index.c:4049,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:4067,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/index.c:4068,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/index.c:4075,1
    - Dst: get_index_isvalid
      Src: /src/postgres/src/backend/catalog/index.c:4076,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:4078,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:4079,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:4080,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/index.c:4081,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/index.c:4082,1
    - Dst: RemoveReindexPending
      Src: /src/postgres/src/backend/catalog/index.c:4090,1
    - Dst: reindex_index
      Src: /src/postgres/src/backend/catalog/index.c:4094,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:4097,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:4100,1
    - Dst: ReindexIsProcessingIndex
      Src: /src/postgres/src/backend/catalog/index.c:4100,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/catalog/index.c:4103,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:4111,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 4
    argNames:
    - stmt
    - relid
    - flags
    - params
    argTypes:
    - ReindexStmt*
    - Oid
    - int
    - ReindexParams*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4116
      start: 3968
    functionDepth: 8
    functionLinenumber: 3968
    functionLinenumberEnd: 4116
    functionName: reindex_relation
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - ReindexIsProcessingIndex
    - try_table_open
    - errcode
    - get_rel_namespace
    - reindex_relation
    - RelationGetNamespace
    - RelationGetRelationName
    - get_index_isvalid
    - lfirst_oid
    - table_close
    - elog
    - Assert
    - CommandCounterIncrement
    - table_open
    - get_rel_name
    - errmsg
    - OidIsValid
    - RemoveReindexPending
    - RelationGetIndexList
    - ereport
    - IsToastNamespace
    - get_namespace_name
    - SetReindexPending
    - reindex_index
    - pgstat_progress_update_param
    linkageType: ''
    returnType: bool
    signature: "bool reindex_relation(const ReindexStmt *stmt, Oid relid, int flags,\n\t\t\t\t
      const ReindexParams *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:4067,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/index.c:4068,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/index.c:4075,1
    - Dst: get_index_isvalid
      Src: /src/postgres/src/backend/catalog/index.c:4076,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:4078,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:4079,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:4080,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/index.c:4081,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/index.c:4082,1
    - Dst: RemoveReindexPending
      Src: /src/postgres/src/backend/catalog/index.c:4090,1
    - Dst: reindex_index
      Src: /src/postgres/src/backend/catalog/index.c:4094,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:4097,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:4100,1
    - Dst: ReindexIsProcessingIndex
      Src: /src/postgres/src/backend/catalog/index.c:4100,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/catalog/index.c:4103,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4106
      start: 4065
    functionDepth: 8
    functionLinenumber: 4065
    functionLinenumberEnd: 4106
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 353
    functionsReached:
    - get_namespace_name
    - ReindexIsProcessingIndex
    - errcode
    - Assert
    - ereport
    - CommandCounterIncrement
    - get_rel_namespace
    - reindex_index
    - IsToastNamespace
    - get_rel_name
    - errmsg
    - get_index_isvalid
    - lfirst_oid
    - RemoveReindexPending
    - pgstat_progress_update_param
    linkageType: ''
    returnType: void
    signature: void foreach(indexId, indexIds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - heapOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4143
      start: 4139
    functionDepth: 0
    functionLinenumber: 4139
    functionLinenumberEnd: 4143
    functionName: ReindexIsProcessingHeap
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ReindexIsProcessingHeap(Oid heapOid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - indexOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4153
      start: 4149
    functionDepth: 0
    functionLinenumber: 4149
    functionLinenumberEnd: 4153
    functionName: ReindexIsCurrentlyProcessingIndex
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ReindexIsCurrentlyProcessingIndex(Oid indexOid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/index.c:4164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - indexOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4165
      start: 4160
    functionDepth: 3
    functionLinenumber: 4160
    functionLinenumberEnd: 4165
    functionName: ReindexIsProcessingIndex
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 4
    functionsReached:
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: bool ReindexIsProcessingIndex(Oid indexOid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:4174,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:4174,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:4174,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:4176,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:4177,1
    - Dst: RemoveReindexPending
      Src: /src/postgres/src/backend/catalog/index.c:4181,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:4183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - heapOid
    - indexOid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4184
      start: 4171
    functionDepth: 1
    functionLinenumber: 4171
    functionLinenumberEnd: 4184
    functionName: SetReindexProcessing
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - elog
    - GetCurrentTransactionNestLevel
    - Assert
    - OidIsValid
    - RemoveReindexPending
    linkageType: ''
    returnType: void
    signature: void SetReindexProcessing(Oid heapOid, Oid indexOid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4196
      start: 4190
    functionDepth: 0
    functionLinenumber: 4190
    functionLinenumberEnd: 4196
    functionName: ResetReindexProcessing
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ResetReindexProcessing(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:4209,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/catalog/index.c:4210,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:4211,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/index.c:4212,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:4213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - indexes
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4214
      start: 4204
    functionDepth: 5
    functionLinenumber: 4204
    functionLinenumberEnd: 4214
    functionName: SetReindexPending
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - elog
    - list_copy
    - IsInParallelMode
    - GetCurrentTransactionNestLevel
    linkageType: ''
    returnType: void
    signature: void SetReindexPending(List *indexes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/catalog/index.c:4223,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:4224,1
    - Dst: list_delete_oid
      Src: /src/postgres/src/backend/catalog/index.c:4225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - indexOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4227
      start: 4220
    functionDepth: 5
    functionLinenumber: 4220
    functionLinenumberEnd: 4227
    functionName: RemoveReindexPending
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 3
    functionsReached:
    - elog
    - IsInParallelMode
    - list_delete_oid
    linkageType: ''
    returnType: void
    signature: void RemoveReindexPending(Oid indexOid)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - nestLevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4256
      start: 4233
    functionDepth: 0
    functionLinenumber: 4233
    functionLinenumberEnd: 4256
    functionName: ResetReindexState
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ResetReindexState(int nestLevel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mul_size
      Src: /src/postgres/src/backend/catalog/index.c:4266,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/index.c:4266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4267
      start: 4262
    functionDepth: 1
    functionLinenumber: 4262
    functionLinenumberEnd: 4267
    functionName: EstimateReindexStateSpace
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - list_length
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size EstimateReindexStateSpace(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/index.c:4282,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/index.c:4283,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:4284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - maxsize
    - start_address
    argTypes:
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4285
      start: 4273
    functionDepth: 1
    functionLinenumber: 4273
    functionLinenumberEnd: 4285
    functionName: SerializeReindexState
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - list_length
    - lfirst_oid
    - foreach
    linkageType: ''
    returnType: void
    signature: void SerializeReindexState(Size maxsize, char *start_address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:4301,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/index.c:4302,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/index.c:4305,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/index.c:4307,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:4310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - reindexstate
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4311
      start: 4291
    functionDepth: 6
    functionLinenumber: 4291
    functionLinenumberEnd: 4311
    functionName: RestoreReindexState
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - Assert
    - lappend_oid
    - GetCurrentTransactionNestLevel
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void RestoreReindexState(const void *reindexstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:200,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:209,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:210,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:211,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/catalog/aclchk.c:222,1
    - Dst: aclupdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:226,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:229,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 8
    argNames:
    - old_acl
    - is_grant
    - grant_option
    - behavior
    - grantees
    - privileges
    - grantorId
    - ownerId
    argTypes:
    - Acl*
    - bool
    - bool
    - DropBehavior
    - List*
    - AclMode
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 234
    functionName: merge_acl_with_grant
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - errcode
    - pfree
    - ereport
    - ACLITEM_SET_PRIVS_GOPTIONS
    - aclupdate
    - errmsg
    - lfirst_oid
    linkageType: ''
    returnType: Acl
    signature: "Acl *\nmerge_acl_with_grant(Acl *old_acl, bool is_grant,\n\t\t\t\t\t
      bool grant_option, DropBehavior behavior,\n\t\t\t\t\t List *grantees, AclMode
      privileges,\n\t\t\t\t\t Oid grantorId, Oid ownerId)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:200,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:209,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:210,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:211,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/catalog/aclchk.c:222,1
    - Dst: aclupdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:226,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:229,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 231
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 354
    functionsReached:
    - errcode
    - pfree
    - ereport
    - ACLITEM_SET_PRIVS_GOPTIONS
    - aclupdate
    - errmsg
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(j, grantees)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:285,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:298,1
    - Dst: pg_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:310,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/catalog/aclchk.c:311,1
    - Dst: aclcheck_error_col
      Src: /src/postgres/src/backend/catalog/aclchk.c:315,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/aclchk.c:317,1
    - Dst: ACL_OPTION_TO_PRIVS
      Src: /src/postgres/src/backend/catalog/aclchk.c:328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:334,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:335,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:336,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:339,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:340,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:341,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:347,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:349,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:352,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:353,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:363,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:364,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:368,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:369,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:370,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:376,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:377,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:378,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:381,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:382,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:383,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 83
    argCount: 10
    argNames:
    - is_grant
    - avail_goptions
    - all_privs
    - privileges
    - objectId
    - grantorId
    - objtype
    - objname
    - att_number
    - colname
    argTypes:
    - bool
    - AclMode
    - bool
    - AclMode
    - Oid
    - Oid
    - ObjectType
    - char*
    - AttrNumber
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 389
    functionName: restrict_and_check_grant
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - elog
    - ACL_GRANT_OPTION_FOR
    - errcode
    - ereport
    - errmsg
    - aclcheck_error
    - aclcheck_error_col
    - ACL_OPTION_TO_PRIVS
    - pg_aclmask
    linkageType: ''
    returnType: AclMode
    signature: "AclMode restrict_and_check_grant(bool is_grant, AclMode avail_goptions,
      bool all_privs,\n\t\t\t\t\t\t AclMode privileges, Oid objectId, Oid grantorId,\n\t\t\t\t\t\t
      ObjectType objtype, const char *objname,\n\t\t\t\t\t\t AttrNumber att_number,
      const char *colname)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: objectNamesToOids
      Src: /src/postgres/src/backend/catalog/aclchk.c:412,1
    - Dst: objectsInSchemaToOids
      Src: /src/postgres/src/backend/catalog/aclchk.c:416,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:420,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:437,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:439,1
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:448,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:451,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:468,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:472,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:476,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:480,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:484,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:488,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:492,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:496,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:500,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:504,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:508,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:512,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:516,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:520,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:524,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:528,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:531,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:553,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:555,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:567,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/aclchk.c:568,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:573,1
    - Dst: string_to_privilege
      Src: /src/postgres/src/backend/catalog/aclchk.c:574,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:577,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:578,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:579,1
    - Dst: privilege_to_string
      Src: /src/postgres/src/backend/catalog/aclchk.c:579,1
    - Dst: ExecGrantStmt_oids
      Src: /src/postgres/src/backend/catalog/aclchk.c:585,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 121
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - GrantStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 394
    functionDepth: 6
    functionLinenumber: 394
    functionLinenumberEnd: 586
    functionName: ExecuteGrantStmt
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - errcode
    - lappend
    - ereport
    - string_to_privilege
    - gettext_noop
    - objectNamesToOids
    - lfirst
    - errmsg
    - objectsInSchemaToOids
    - get_rolespec_oid
    - lappend_oid
    - privilege_to_string
    - ExecGrantStmt_oids
    linkageType: ''
    returnType: void
    signature: void ExecuteGrantStmt(GrantStmt *stmt)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ExecGrant_Relation
      Src: /src/postgres/src/backend/catalog/aclchk.c:601,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:604,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:608,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:611,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:614,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:619,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:622,1
    - Dst: ExecGrant_Largeobject
      Src: /src/postgres/src/backend/catalog/aclchk.c:625,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:628,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:631,1
    - Dst: ExecGrant_Parameter
      Src: /src/postgres/src/backend/catalog/aclchk.c:634,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:637,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/catalog/aclchk.c:647,1
    - Dst: EventTriggerCollectGrant
      Src: /src/postgres/src/backend/catalog/aclchk.c:648,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 1
    argNames:
    - istmt
    argTypes:
    - InternalGrant*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 649
    functionName: ExecGrantStmt_oids
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - elog
    - ExecGrant_Relation
    - EventTriggerCollectGrant
    - ExecGrant_Parameter
    - ExecGrant_common
    - EventTriggerSupportsObjectType
    - ExecGrant_Largeobject
    linkageType: ''
    returnType: void
    signature: void ExecGrantStmt_oids(InternalGrant *istmt)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:677,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:686,1
    - Dst: get_object_address
      Src: /src/postgres/src/backend/catalog/aclchk.c:690,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:690,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:691,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:704,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:706,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/catalog/aclchk.c:709,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:710,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:723,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:725,1
    - Dst: makeTypeNameFromNameList
      Src: /src/postgres/src/backend/catalog/aclchk.c:726,1
    - Dst: get_object_address
      Src: /src/postgres/src/backend/catalog/aclchk.c:730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:731,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:732,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:741,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:753,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:753,1
    - Dst: ParameterAclLookup
      Src: /src/postgres/src/backend/catalog/aclchk.c:754,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:756,1
    - Dst: ParameterAclCreate
      Src: /src/postgres/src/backend/catalog/aclchk.c:758,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:765,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:767,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:768,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 3
    argNames:
    - objtype
    - objnames
    - is_grant
    argTypes:
    - ObjectType
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 670
    functionDepth: 7
    functionLinenumber: 670
    functionLinenumberEnd: 774
    functionName: objectNamesToOids
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - foreach
    - Assert
    - get_object_address
    - makeTypeNameFromNameList
    - OidIsValid
    - CommandCounterIncrement
    - RangeVarGetRelid
    - lfirst
    - lappend_oid
    - strVal
    - ParameterAclLookup
    - ParameterAclCreate
    linkageType: ''
    returnType: List
    signature: 'List *

      objectNamesToOids(ObjectType objtype, List *objnames, bool is_grant)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:791,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:791,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:795,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:800,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:801,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:802,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:803,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:804,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:805,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:806,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:807,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:808,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:809,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:812,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:813,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:816,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:817,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:830,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:833,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:837,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:840,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:842,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:845,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:847,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/aclchk.c:848,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:850,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:852,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:854,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:857,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:858,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:863,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 2
    argNames:
    - objtype
    - nspnames
    argTypes:
    - ObjectType
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 783
    functionDepth: 7
    functionLinenumber: 783
    functionLinenumberEnd: 869
    functionName: objectsInSchemaToOids
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - elog
    - LookupExplicitNamespace
    - ScanKeyInit
    - table_close
    - getRelationsInNamespace
    - ObjectIdGetDatum
    - table_open
    - table_beginscan_catalog
    - lfirst
    - list_concat
    - heap_getnext
    - GETSTRUCT
    - CharGetDatum
    - strVal
    - table_endscan
    - lappend_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      objectsInSchemaToOids(ObjectType objtype, List *nspnames)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:791,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:791,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:795,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:800,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:801,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:802,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:803,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:804,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:805,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:806,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:807,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:808,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:809,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:812,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:813,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:816,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:817,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:830,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:833,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:837,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:840,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:842,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:845,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:847,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/aclchk.c:848,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:850,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:852,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:854,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:857,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:858,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:863,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 789
    functionDepth: 7
    functionLinenumber: 789
    functionLinenumberEnd: 866
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 356
    functionsReached:
    - elog
    - LookupExplicitNamespace
    - ScanKeyInit
    - table_close
    - getRelationsInNamespace
    - ObjectIdGetDatum
    - table_open
    - table_beginscan_catalog
    - lfirst
    - list_concat
    - heap_getnext
    - GETSTRUCT
    - CharGetDatum
    - strVal
    - table_endscan
    - lappend_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, nspnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:885,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:888,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:889,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:892,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:894,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/aclchk.c:895,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:897,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:899,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:901,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:904,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:905,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - namespaceId
    - relkind
    argTypes:
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 876
    functionDepth: 7
    functionLinenumber: 876
    functionLinenumberEnd: 908
    functionName: getRelationsInNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - ScanKeyInit
    - table_close
    - table_open
    - table_beginscan_catalog
    - heap_getnext
    - GETSTRUCT
    - CharGetDatum
    - ObjectIdGetDatum
    - table_endscan
    - lappend_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      getRelationsInNamespace(Oid namespaceId, char relkind)'
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:928,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:930,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:932,1
    - Dst: errorConflictingDefElem
      Src: /src/postgres/src/backend/catalog/aclchk.c:935,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:938,1
    - Dst: errorConflictingDefElem
      Src: /src/postgres/src/backend/catalog/aclchk.c:941,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:945,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:970,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:972,1
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:981,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:984,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:995,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:999,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1003,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1007,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1011,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1015,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1019,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1023,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1027,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1030,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:1052,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1054,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1058,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1059,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1060,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1063,1
    - Dst: string_to_privilege
      Src: /src/postgres/src/backend/catalog/aclchk.c:1064,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1067,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1068,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1069,1
    - Dst: privilege_to_string
      Src: /src/postgres/src/backend/catalog/aclchk.c:1069,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:1078,1
    - Dst: SetDefaultACLsInSchemas
      Src: /src/postgres/src/backend/catalog/aclchk.c:1080,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1089,1
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1091,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:1093,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:1093,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1094,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1095,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1096,1
    - Dst: SetDefaultACLsInSchemas
      Src: /src/postgres/src/backend/catalog/aclchk.c:1098,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 104
    argCount: 2
    argNames:
    - pstate
    - stmt
    argTypes:
    - ParseState*
    - AlterDefaultPrivilegesStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 914
    functionDepth: 6
    functionLinenumber: 914
    functionLinenumberEnd: 1101
    functionName: ExecAlterDefaultPrivilegesStmt
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - elog
    - errorConflictingDefElem
    - foreach
    - strcmp
    - errcode
    - GetUserId
    - has_privs_of_role
    - ereport
    - string_to_privilege
    - gettext_noop
    - lfirst
    - errmsg
    - privilege_to_string
    - get_rolespec_oid
    - lappend_oid
    - SetDefaultACLsInSchemas
    linkageType: ''
    returnType: void
    signature: void ExecAlterDefaultPrivilegesStmt(ParseState *pstate, AlterDefaultPrivilegesStmt
      *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1089,1
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1091,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:1093,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:1093,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1094,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1095,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1096,1
    - Dst: SetDefaultACLsInSchemas
      Src: /src/postgres/src/backend/catalog/aclchk.c:1098,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1087
    functionDepth: 1
    functionLinenumber: 1087
    functionLinenumberEnd: 1099
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 357
    functionsReached:
    - GetUserId
    - has_privs_of_role
    - errcode
    - ereport
    - lfirst
    - errmsg
    - get_rolespec_oid
    - SetDefaultACLsInSchemas
    linkageType: ''
    returnType: void
    signature: void foreach(rolecell, rolespecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SetDefaultACL
      Src: /src/postgres/src/backend/catalog/aclchk.c:1116,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:1125,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1125,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1127,1
    - Dst: SetDefaultACL
      Src: /src/postgres/src/backend/catalog/aclchk.c:1141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - iacls
    - nspnames
    argTypes:
    - InternalDefaultACL*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1108
    functionDepth: 3
    functionLinenumber: 1108
    functionLinenumberEnd: 1144
    functionName: SetDefaultACLsInSchemas
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - strVal
    - SetDefaultACL
    - lfirst
    - get_namespace_oid
    linkageType: ''
    returnType: void
    signature: void SetDefaultACLsInSchemas(InternalDefaultACL *iacls, List *nspnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:1125,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1125,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1127,1
    - Dst: SetDefaultACL
      Src: /src/postgres/src/backend/catalog/aclchk.c:1141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1123
    functionDepth: 3
    functionLinenumber: 1123
    functionLinenumberEnd: 1142
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 357
    functionsReached:
    - strVal
    - lfirst
    - SetDefaultACL
    - get_namespace_oid
    linkageType: ''
    returnType: void
    signature: void foreach(nspcell, nspnames)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:1167,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1175,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:1176,1
    - Dst: make_empty_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:1178,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1211,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1214,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1223,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1224,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1225,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1233,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/catalog/aclchk.c:1240,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1241,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1242,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1243,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1245,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1250,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1254,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1272,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1277,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:1287,1
    - Dst: aclitemsort
      Src: /src/postgres/src/backend/catalog/aclchk.c:1301,1
    - Dst: aclitemsort
      Src: /src/postgres/src/backend/catalog/aclchk.c:1302,1
    - Dst: aclequal
      Src: /src/postgres/src/backend/catalog/aclchk.c:1303,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1316,1
    - Dst: performDeletion
      Src: /src/postgres/src/backend/catalog/aclchk.c:1319,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/aclchk.c:1332,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1334,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1335,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1336,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1337,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1338,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:1340,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1340,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/aclchk.c:1341,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1345,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1348,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:1351,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1351,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:1353,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/aclchk.c:1360,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1364,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/aclchk.c:1377,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1384,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:1386,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/aclchk.c:1393,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/catalog/aclchk.c:1395,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1398,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:1399,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:1401,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:1404,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 112
    argCount: 1
    argNames:
    - iacls
    argTypes:
    - InternalDefaultACL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1150
    functionDepth: 7
    functionLinenumber: 1150
    functionLinenumberEnd: 1405
    functionName: SetDefaultACL
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - aclmembers
    - errcode
    - heap_form_tuple
    - recordDependencyOn
    - aclequal
    - performDeletion
    - table_close
    - aclitemsort
    - CatalogTupleInsert
    - elog
    - HeapTupleIsValid
    - RelationGetDescr
    - CommandCounterIncrement
    - recordDependencyOnOwner
    - table_open
    - ReleaseSysCache
    - errmsg
    - PointerGetDatum
    - CharGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - InvokeObjectPostCreateHook
    - GetNewOidWithIndex
    - acldefault
    - ereport
    - merge_acl_with_grant
    - GETSTRUCT
    - DatumGetAclPCopy
    - updateAclDependencies
    - heap_modify_tuple
    - InvokeObjectPostAlterHook
    - SearchSysCache3
    - aclcopy
    - CatalogTupleUpdate
    - make_empty_acl
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: void SetDefaultACL(InternalDefaultACL *iacls)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:1438,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:1440,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1443,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:1445,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:1448,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1450,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1451,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1453,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1480,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:1485,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:1486,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1491,1
    - Dst: SetDefaultACL
      Src: /src/postgres/src/backend/catalog/aclchk.c:1497,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1540,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1544,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1548,1
    - Dst: ExecGrantStmt_oids
      Src: /src/postgres/src/backend/catalog/aclchk.c:1553,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 94
    argCount: 3
    argNames:
    - roleid
    - classid
    - objid
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1425
    functionDepth: 8
    functionLinenumber: 1425
    functionLinenumberEnd: 1555
    functionName: RemoveRoleFromObjectACL
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - elog
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - SetDefaultACL
    - GETSTRUCT
    - list_make1_oid
    - ExecGrantStmt_oids
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void RemoveRoleFromObjectACL(Oid roleid, Oid classid, Oid objid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:1575,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1575,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1578,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1580,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1581,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1582,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/aclchk.c:1583,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1586,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - colnames
    - table_oid
    - this_privileges
    - col_privileges
    - num_col_privileges
    argTypes:
    - List*
    - Oid
    - AclMode
    - AclMode*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1589
      start: 1565
    functionDepth: 1
    functionLinenumber: 1565
    functionLinenumberEnd: 1589
    functionName: expand_col_privileges
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - elog
    - get_attnum
    - errcode
    - ereport
    - lfirst
    - get_rel_name
    - errmsg
    - strVal
    linkageType: ''
    returnType: void
    signature: "void expand_col_privileges(List *colnames, Oid table_oid,\n\t\t\t\t\t
      \ AclMode this_privileges,\n\t\t\t\t\t  AclMode *col_privileges,\n\t\t\t\t\t
      \ int num_col_privileges)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:1575,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1575,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1578,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1580,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1581,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1582,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/aclchk.c:1583,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1586,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1573
    functionDepth: 1
    functionLinenumber: 1573
    functionLinenumberEnd: 1588
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 357
    functionsReached:
    - elog
    - get_attnum
    - errcode
    - ereport
    - lfirst
    - get_rel_name
    - errmsg
    - strVal
    linkageType: ''
    returnType: void
    signature: void foreach(cell, colnames)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:1606,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:1621,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1622,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1623,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1624,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1625,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1628,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:1630,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 5
    argNames:
    - table_oid
    - classForm
    - this_privileges
    - col_privileges
    - num_col_privileges
    argTypes:
    - Oid
    - Form_pg_class
    - AclMode
    - AclMode*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1598
    functionDepth: 1
    functionLinenumber: 1598
    functionLinenumberEnd: 1638
    functionName: expand_all_col_privileges
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    - SearchSysCache2
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: "void expand_all_col_privileges(Oid table_oid, Form_pg_class classForm,\n\t\t\t\t\t\t
      \ AclMode this_privileges,\n\t\t\t\t\t\t  AclMode *col_privileges,\n\t\t\t\t\t\t
      \ int num_col_privileges)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:1668,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1669,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1670,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1671,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1672,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1674,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1680,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:1684,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1691,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1693,1
    - Dst: aclconcat
      Src: /src/postgres/src/backend/catalog/aclchk.c:1702,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:1705,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:1709,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:1720,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1725,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:1730,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1740,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:1751,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1753,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:1765,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1765,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:1768,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:1771,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:1772,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:1775,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:1781,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:1783,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 8
    argNames:
    - istmt
    - relOid
    - relname
    - attnum
    - ownerId
    - col_privileges
    - attRelation
    - old_rel_acl
    argTypes:
    - InternalGrant*
    - Oid
    - char*
    - AttrNumber
    - Oid
    - AclMode
    - Relation
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1644
    functionDepth: 7
    functionLinenumber: 1644
    functionLinenumberEnd: 1784
    functionName: ExecGrant_Attribute
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - aclmembers
    - ACL_NUM
    - SearchSysCache2
    - NameStr
    - elog
    - HeapTupleIsValid
    - pfree
    - RelationGetDescr
    - ReleaseSysCache
    - PointerGetDatum
    - ObjectIdGetDatum
    - aclconcat
    - acldefault
    - merge_acl_with_grant
    - GETSTRUCT
    - DatumGetAclPCopy
    - updateAclDependencies
    - recordExtensionInitPriv
    - heap_modify_tuple
    - Int16GetDatum
    - CatalogTupleUpdate
    - restrict_and_check_grant
    - select_best_grantor
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: "void ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char
      *relname,\n\t\t\t\t\tAttrNumber attnum, Oid ownerId, AclMode col_privileges,\n\t\t\t\t\tRelation
      attRelation, const Acl *old_rel_acl)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:1796,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:1797,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:1799,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1801,1
    - Dst: SearchSysCacheLocked1
      Src: /src/postgres/src/backend/catalog/aclchk.c:1817,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1817,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1818,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1819,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1820,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1825,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1826,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1827,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1828,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1832,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1833,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1834,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1835,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1840,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1841,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1842,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1843,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1847,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1848,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1849,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1850,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1887,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1888,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1889,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1890,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1904,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1906,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/catalog/aclchk.c:1918,1
    - Dst: expand_all_col_privileges
      Src: /src/postgres/src/backend/catalog/aclchk.c:1931,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1943,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:1950,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:1953,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:1956,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1965,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1967,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1971,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:1990,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2009,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2012,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2018,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2031,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2035,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2037,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2037,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:2040,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2041,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:2044,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:2047,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2052,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2055,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:2062,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:2064,1
    - Dst: string_to_privilege
      Src: /src/postgres/src/backend/catalog/aclchk.c:2069,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2072,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2073,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2074,1
    - Dst: privilege_to_string
      Src: /src/postgres/src/backend/catalog/aclchk.c:2075,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2085,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2086,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2087,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2088,1
    - Dst: expand_col_privileges
      Src: /src/postgres/src/backend/catalog/aclchk.c:2093,1
    - Dst: ExecGrant_Attribute
      Src: /src/postgres/src/backend/catalog/aclchk.c:2108,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2110,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2119,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2120,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:2122,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:2125,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2128,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2129,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 114
    argCount: 1
    argNames:
    - istmt
    argTypes:
    - InternalGrant*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 1789
    functionDepth: 8
    functionLinenumber: 1789
    functionLinenumberEnd: 2130
    functionName: ExecGrant_Relation
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - aclmembers
    - errcode
    - NameStr
    - lfirst_oid
    - table_close
    - elog
    - foreach
    - HeapTupleIsValid
    - RelationGetDescr
    - UnlockTuple
    - pfree
    - CommandCounterIncrement
    - table_open
    - ReleaseSysCache
    - errmsg
    - PointerGetDatum
    - ObjectIdGetDatum
    - SearchSysCacheLocked1
    - acldefault
    - ereport
    - merge_acl_with_grant
    - lfirst
    - GETSTRUCT
    - privilege_to_string
    - DatumGetAclPCopy
    - expand_col_privileges
    - updateAclDependencies
    - recordExtensionInitPriv
    - heap_modify_tuple
    - aclcopy
    - palloc0
    - CatalogTupleUpdate
    - string_to_privilege
    - ExecGrant_Attribute
    - restrict_and_check_grant
    - select_best_grantor
    - expand_all_col_privileges
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: void ExecGrant_Relation(InternalGrant *istmt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2143,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:2145,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:2147,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2149,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/aclchk.c:2161,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2161,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/aclchk.c:2162,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2162,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/aclchk.c:2163,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2163,1
    - Dst: SearchSysCacheLocked1
      Src: /src/postgres/src/backend/catalog/aclchk.c:2169,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2169,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2170,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2171,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2171,1
    - Dst: object_check
      Src: /src/postgres/src/backend/catalog/aclchk.c:2177,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:2183,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:2183,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:2185,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2186,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:2188,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:2192,1
    - Dst: get_object_type
      Src: /src/postgres/src/backend/catalog/aclchk.c:2192,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:2199,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2201,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:2205,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:2209,1
    - Dst: get_object_attnum_name
      Src: /src/postgres/src/backend/catalog/aclchk.c:2210,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2217,1
    - Dst: get_object_type
      Src: /src/postgres/src/backend/catalog/aclchk.c:2219,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2220,1
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/catalog/aclchk.c:2220,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2226,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2235,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:2238,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:2239,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2239,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2241,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2241,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:2244,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2245,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:2248,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:2251,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:2257,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2259,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:2262,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2265,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 3
    argNames:
    - istmt
    - classid
    - default_privs
    argTypes:
    - InternalGrant*
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2266
      start: 2132
    functionDepth: 7
    functionLinenumber: 2132
    functionLinenumberEnd: 2266
    functionName: ExecGrant_common
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - aclmembers
    - NameStr
    - get_object_class_descr
    - lfirst_oid
    - table_close
    - elog
    - foreach
    - HeapTupleIsValid
    - RelationGetDescr
    - DatumGetObjectId
    - get_object_attnum_name
    - UnlockTuple
    - pfree
    - CommandCounterIncrement
    - object_check
    - table_open
    - ReleaseSysCache
    - PointerGetDatum
    - get_object_catcache_oid
    - ObjectIdGetDatum
    - SearchSysCacheLocked1
    - get_object_attnum_acl
    - acldefault
    - merge_acl_with_grant
    - get_object_attnum_owner
    - DatumGetAclPCopy
    - SysCacheGetAttrNotNull
    - updateAclDependencies
    - recordExtensionInitPriv
    - DatumGetName
    - heap_modify_tuple
    - palloc0_array
    - CatalogTupleUpdate
    - restrict_and_check_grant
    - select_best_grantor
    - get_object_type
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: "void ExecGrant_common(InternalGrant *istmt, Oid classid, AclMode default_privs,\n\t\t\t\t
      void (*object_check) (InternalGrant *istmt, HeapTuple tuple))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:2273,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2276,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2277,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2278,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2279,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/aclchk.c:2280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - istmt
    - tuple
    argTypes:
    - InternalGrant*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2282
      start: 2268
    functionDepth: 1
    functionLinenumber: 2268
    functionLinenumberEnd: 2282
    functionName: ExecGrant_Language_check
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - errcode
    - errdetail
    - ereport
    - errmsg
    - GETSTRUCT
    - NameStr
    linkageType: ''
    returnType: void
    signature: void ExecGrant_Language_check(InternalGrant *istmt, HeapTuple tuple)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:2293,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:2296,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2298,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:2322,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2325,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:2327,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:2331,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2332,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2333,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:2335,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2342,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2344,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:2347,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:2354,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2356,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:2360,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/aclchk.c:2368,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2370,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2378,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2387,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2392,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2394,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2394,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:2397,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:2400,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:2403,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:2409,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2411,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:2414,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2417,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - istmt
    argTypes:
    - InternalGrant*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2418
      start: 2284
    functionDepth: 7
    functionLinenumber: 2284
    functionLinenumberEnd: 2418
    functionName: ExecGrant_Largeobject
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - aclmembers
    - lfirst_oid
    - table_close
    - elog
    - systable_endscan
    - foreach
    - HeapTupleIsValid
    - RelationGetDescr
    - pfree
    - CommandCounterIncrement
    - table_open
    - PointerGetDatum
    - ObjectIdGetDatum
    - heap_getattr
    - systable_beginscan
    - acldefault
    - merge_acl_with_grant
    - GETSTRUCT
    - DatumGetAclPCopy
    - updateAclDependencies
    - recordExtensionInitPriv
    - heap_modify_tuple
    - ScanKeyInit
    - CatalogTupleUpdate
    - restrict_and_check_grant
    - select_best_grantor
    - systable_getnext
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ExecGrant_Largeobject(InternalGrant *istmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:2425,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/backend/catalog/aclchk.c:2428,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2429,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2430,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2431,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/aclchk.c:2432,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2434,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2435,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2436,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/aclchk.c:2437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - istmt
    - tuple
    argTypes:
    - InternalGrant*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2438
      start: 2420
    functionDepth: 1
    functionLinenumber: 2420
    functionLinenumberEnd: 2438
    functionName: ExecGrant_Type_check
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - errhint
    - errmsg
    - GETSTRUCT
    - IsTrueArrayType
    linkageType: ''
    returnType: void
    signature: void ExecGrant_Type_check(InternalGrant *istmt, HeapTuple tuple)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:2449,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:2451,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2453,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:2470,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2470,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2471,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2472,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:2476,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/aclchk.c:2478,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2487,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:2493,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:2500,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2502,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:2506,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2515,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2525,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2534,1
    - Dst: aclequal
      Src: /src/postgres/src/backend/catalog/aclchk.c:2541,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:2541,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/aclchk.c:2543,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2554,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2556,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2556,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:2559,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:2563,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:2567,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:2572,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2573,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:2576,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2579,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 1
    argNames:
    - istmt
    argTypes:
    - InternalGrant*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2440
    functionDepth: 7
    functionLinenumber: 2440
    functionLinenumberEnd: 2580
    functionName: ExecGrant_Parameter
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - aclmembers
    - aclequal
    - lfirst_oid
    - table_close
    - SearchSysCache1
    - elog
    - foreach
    - HeapTupleIsValid
    - RelationGetDescr
    - pfree
    - CommandCounterIncrement
    - table_open
    - CatalogTupleDelete
    - ReleaseSysCache
    - PointerGetDatum
    - ObjectIdGetDatum
    - TextDatumGetCString
    - acldefault
    - merge_acl_with_grant
    - DatumGetAclPCopy
    - SysCacheGetAttrNotNull
    - updateAclDependencies
    - recordExtensionInitPriv
    - heap_modify_tuple
    - CatalogTupleUpdate
    - restrict_and_check_grant
    - select_best_grantor
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: void ExecGrant_Parameter(InternalGrant *istmt)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2586,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2588,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2590,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2592,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2594,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2596,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2598,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2600,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2602,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2604,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2606,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2608,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2610,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2612,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2614,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2616,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2618,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2619,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2620,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 35
    argCount: 1
    argNames:
    - privname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2622
      start: 2583
    functionDepth: 1
    functionLinenumber: 2583
    functionLinenumberEnd: 2622
    functionName: string_to_privilege
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 3
    functionsReached:
    - ereport
    - errmsg
    - strcmp
    - errcode
    linkageType: ''
    returnType: AclMode
    signature: AclMode string_to_privilege(const char *privname)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2660,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 1
    argNames:
    - privilege
    argTypes:
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2663
      start: 2624
    functionDepth: 1
    functionLinenumber: 2624
    functionLinenumberEnd: 2663
    functionName: privilege_to_string
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 3
    functionsReached:
    - elog
    linkageType: ''
    returnType: char
    signature: 'char *

      privilege_to_string(AclMode privilege)'
  - BBCount: 111
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2687,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2690,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2693,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2696,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2699,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2702,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2705,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2708,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2711,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2714,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2717,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2720,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2723,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2726,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2729,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2732,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2735,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2738,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2741,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2744,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2747,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2750,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2753,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2756,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2759,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2762,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2765,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2768,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2771,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2774,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2777,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2780,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2783,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2786,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2789,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2810,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2813,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2814,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2815,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2825,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2828,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2831,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2834,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2837,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2840,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2843,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2846,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2849,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2852,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2855,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2858,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2861,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2864,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2867,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2870,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2873,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2876,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2879,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2882,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2885,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2888,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2891,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2894,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2897,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2900,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2903,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2906,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2909,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2912,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2915,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2918,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2932,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2951,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2954,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2955,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2956,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2960,1
    CyclomaticComplexity: 75
    EdgeCount: 75
    ICount: 264
    argCount: 3
    argNames:
    - aclerr
    - objtype
    - objectname
    argTypes:
    - AclResult
    - ObjectType
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2963
      start: 2671
    functionDepth: 1
    functionLinenumber: 2671
    functionLinenumberEnd: 2963
    functionName: aclcheck_error
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 15
    functionsReached:
    - elog
    - errcode
    - ereport
    - gettext_noop
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void aclcheck_error(AclResult aclerr, ObjectType objtype,\n\t\t\t
      \  const char *objectname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2976,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2977,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2978,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/aclchk.c:2983,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2986,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - aclerr
    - objtype
    - objectname
    - colname
    argTypes:
    - AclResult
    - ObjectType
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2989
      start: 2966
    functionDepth: 2
    functionLinenumber: 2966
    functionLinenumberEnd: 2989
    functionName: aclcheck_error_col
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - elog
    - errcode
    - ereport
    - errmsg
    - aclcheck_error
    linkageType: ''
    returnType: void
    signature: "void aclcheck_error_col(AclResult aclerr, ObjectType objtype,\n\t\t\t\t
      \  const char *objectname, const char *colname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_element_type
      Src: /src/postgres/src/backend/catalog/aclchk.c:2999,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/aclchk.c:3001,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/aclchk.c:3001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aclerr
    - typeOid
    argTypes:
    - AclResult
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3002
      start: 2996
    functionDepth: 2
    functionLinenumber: 2996
    functionLinenumberEnd: 3002
    functionName: aclcheck_error_type
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - get_element_type
    - aclcheck_error
    - format_type_be
    linkageType: ''
    returnType: void
    signature: void aclcheck_error_type(AclResult aclerr, Oid typeOid)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pg_class_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3016,1
    - Dst: pg_attribute_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3017,1
    - Dst: pg_class_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3021,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3023,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3025,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3027,1
    - Dst: pg_largeobject_aclmask_snapshot
      Src: /src/postgres/src/backend/catalog/aclchk.c:3029,1
    - Dst: pg_parameter_acl_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3032,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3034,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:3036,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3040,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3042,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3044,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:3046,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3050,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:3052,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 6
    argNames:
    - objtype
    - object_oid
    - attnum
    - roleid
    - mask
    - how
    argTypes:
    - ObjectType
    - Oid
    - AttrNumber
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3057
      start: 3008
    functionDepth: 1
    functionLinenumber: 3008
    functionLinenumberEnd: 3057
    functionName: pg_aclmask
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - elog
    - pg_largeobject_aclmask_snapshot
    - pg_parameter_acl_aclmask
    - pg_attribute_aclmask
    - object_aclmask
    - pg_class_aclmask
    linkageType: ''
    returnType: AclMode
    signature: "AclMode pg_aclmask(ObjectType objtype, Oid object_oid, AttrNumber
      attnum, Oid roleid,\n\t\t   AclMode mask, AclMaskHow how)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object_aclmask_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - classid
    - objectid
    - roleid
    - mask
    - how
    argTypes:
    - Oid
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3076
      start: 3071
    functionDepth: 1
    functionLinenumber: 3071
    functionLinenumberEnd: 3076
    functionName: object_aclmask
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - object_aclmask_ext
    linkageType: ''
    returnType: AclMode
    signature: "AclMode object_aclmask(Oid classid, Oid objectid, Oid roleid,\n\t\t\t
      \  AclMode mask, AclMaskHow how)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_namespace_aclmask_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3099,1
    - Dst: pg_type_aclmask_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:3107,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:3108,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3112,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3119,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3121,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3121,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3122,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:3131,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3132,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:3135,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:3135,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:3137,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3139,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:3139,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3144,1
    - Dst: get_object_type
      Src: /src/postgres/src/backend/catalog/aclchk.c:3144,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3150,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3153,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3156,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3157,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3159,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 6
    argNames:
    - classid
    - objectid
    - roleid
    - mask
    - how
    - is_missing
    argTypes:
    - Oid
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3162
      start: 3082
    functionDepth: 2
    functionLinenumber: 3082
    functionLinenumberEnd: 3162
    functionName: object_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - get_object_class_descr
    - SearchSysCache1
    - elog
    - superuser_arg
    - Assert
    - HeapTupleIsValid
    - DatumGetObjectId
    - pfree
    - ReleaseSysCache
    - get_object_catcache_oid
    - ObjectIdGetDatum
    - get_object_attnum_acl
    - acldefault
    - pg_type_aclmask_ext
    - get_object_attnum_owner
    - pg_namespace_aclmask_ext
    - SysCacheGetAttrNotNull
    - DatumGetAclP
    - aclmask
    - get_object_type
    - SysCacheGetAttr
    - DatumGetPointer
    linkageType: ''
    returnType: AclMode
    signature: "AclMode object_aclmask_ext(Oid classid, Oid objectid, Oid roleid,\n\t\t\t\t
      \  AclMode mask, AclMaskHow how,\n\t\t\t\t   bool *is_missing)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_attribute_aclmask_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - table_oid
    - attnum
    - roleid
    - mask
    - how
    argTypes:
    - Oid
    - AttrNumber
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3178
      start: 3172
    functionDepth: 1
    functionLinenumber: 3172
    functionLinenumberEnd: 3178
    functionName: pg_attribute_aclmask
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - pg_attribute_aclmask_ext
    linkageType: ''
    returnType: AclMode
    signature: "AclMode pg_attribute_aclmask(Oid table_oid, AttrNumber attnum, Oid
      roleid,\n\t\t\t\t\t AclMode mask, AclMaskHow how)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:3200,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3201,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3202,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3214,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3218,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3231,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3232,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3233,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3237,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3247,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3258,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3258,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3259,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3261,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3269,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3270,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3271,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3274,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3278,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3281,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3283,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3286,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3287,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3289,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 6
    argNames:
    - table_oid
    - attnum
    - roleid
    - mask
    - how
    - is_missing
    argTypes:
    - Oid
    - AttrNumber
    - Oid
    - AclMode
    - AclMaskHow
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3292
      start: 3183
    functionDepth: 1
    functionLinenumber: 3183
    functionLinenumberEnd: 3292
    functionName: pg_attribute_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - errcode
    - HeapTupleIsValid
    - pfree
    - DatumGetAclP
    - ereport
    - DatumGetPointer
    - ReleaseSysCache
    - SysCacheGetAttr
    - errmsg
    - GETSTRUCT
    - aclmask
    - ObjectIdGetDatum
    - SearchSysCache2
    - Int16GetDatum
    linkageType: ''
    returnType: AclMode
    signature: "AclMode pg_attribute_aclmask_ext(Oid table_oid, AttrNumber attnum,
      Oid roleid,\n\t\t\t\t\t\t AclMode mask, AclMaskHow how, bool *is_missing)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_class_aclmask_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - table_oid
    - roleid
    - mask
    - how
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3302
      start: 3297
    functionDepth: 1
    functionLinenumber: 3297
    functionLinenumberEnd: 3302
    functionName: pg_class_aclmask
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - pg_class_aclmask_ext
    linkageType: ''
    returnType: AclMode
    signature: "AclMode pg_class_aclmask(Oid table_oid, Oid roleid,\n\t\t\t\t AclMode
      mask, AclMaskHow how)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3322,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3322,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3323,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3332,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3333,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3334,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3338,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3340,1
    - Dst: IsConflictLogTableClass
      Src: /src/postgres/src/backend/catalog/aclchk.c:3344,1
    - Dst: IsSystemClass
      Src: /src/postgres/src/backend/catalog/aclchk.c:3353,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3373,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3382,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3390,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3393,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3401,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3404,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3407,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3408,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3410,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3418,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3430,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3441,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 49
    argCount: 5
    argNames:
    - table_oid
    - roleid
    - mask
    - how
    - is_missing
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3445
      start: 3307
    functionDepth: 1
    functionLinenumber: 3307
    functionLinenumberEnd: 3445
    functionName: pg_class_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - superuser_arg
    - errcode
    - HeapTupleIsValid
    - pfree
    - acldefault
    - DatumGetAclP
    - ereport
    - has_privs_of_role
    - DatumGetPointer
    - IsConflictLogTableClass
    - ReleaseSysCache
    - errmsg
    - GETSTRUCT
    - aclmask
    - ObjectIdGetDatum
    - SysCacheGetAttr
    - IsSystemClass
    linkageType: ''
    returnType: AclMode
    signature: "AclMode pg_class_aclmask_ext(Oid table_oid, Oid roleid, AclMode mask,\n\t\t\t\t\t
      AclMaskHow how, bool *is_missing)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3460,1
    - Dst: convert_GUC_name_for_parameter_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:3464,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/catalog/aclchk.c:3465,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3468,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3468,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3470,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3481,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3487,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3493,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3496,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3499,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3500,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3502,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3505,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3506,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - name
    - roleid
    - mask
    - how
    argTypes:
    - char*
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3509
      start: 3451
    functionDepth: 1
    functionLinenumber: 3451
    functionLinenumberEnd: 3509
    functionName: pg_parameter_aclmask
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - superuser_arg
    - HeapTupleIsValid
    - cstring_to_text
    - acldefault
    - DatumGetAclP
    - pfree
    - ReleaseSysCache
    - PointerGetDatum
    - aclmask
    - convert_GUC_name_for_parameter_acl
    - SysCacheGetAttr
    - DatumGetPointer
    linkageType: ''
    returnType: AclMode
    signature: AclMode pg_parameter_aclmask(const char *name, Oid roleid, AclMode
      mask, AclMaskHow how)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3525,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3529,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3529,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3530,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3531,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3532,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3533,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3536,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3542,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3548,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3551,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3554,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3555,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3557,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - acl_oid
    - roleid
    - mask
    - how
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3560
      start: 3515
    functionDepth: 1
    functionLinenumber: 3515
    functionLinenumberEnd: 3560
    functionName: pg_parameter_acl_aclmask
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - superuser_arg
    - errcode
    - HeapTupleIsValid
    - pfree
    - acldefault
    - DatumGetAclP
    - ereport
    - ReleaseSysCache
    - errmsg
    - aclmask
    - ObjectIdGetDatum
    - SysCacheGetAttr
    - DatumGetPointer
    linkageType: ''
    returnType: AclMode
    signature: AclMode pg_parameter_acl_aclmask(Oid acl_oid, Oid roleid, AclMode mask,
      AclMaskHow how)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3590,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:3596,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:3599,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3602,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:3604,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3608,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3609,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3610,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3611,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3612,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3614,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3616,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3617,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3622,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3628,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3631,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3634,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3635,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:3637,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:3639,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3647,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3656,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 5
    argNames:
    - lobj_oid
    - roleid
    - mask
    - how
    - snapshot
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3660
      start: 3574
    functionDepth: 4
    functionLinenumber: 3574
    functionLinenumberEnd: 3660
    functionName: pg_largeobject_aclmask_snapshot
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - errcode
    - table_close
    - systable_endscan
    - superuser_arg
    - HeapTupleIsValid
    - RelationGetDescr
    - pfree
    - table_open
    - errmsg
    - ObjectIdGetDatum
    - heap_getattr
    - systable_beginscan
    - acldefault
    - ereport
    - GETSTRUCT
    - ScanKeyInit
    - has_privs_of_role
    - DatumGetAclP
    - aclmask
    - systable_getnext
    - DatumGetPointer
    linkageType: ''
    returnType: AclMode
    signature: "AclMode pg_largeobject_aclmask_snapshot(Oid lobj_oid, Oid roleid,\n\t\t\t\t\t\t\t\tAclMode
      mask, AclMaskHow how,\n\t\t\t\t\t\t\t\tSnapshot snapshot)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsConflictLogTableNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:3682,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3686,1
    - Dst: isTempNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:3708,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3710,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3720,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3720,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3721,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3730,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3731,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3732,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3735,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3737,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3742,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3748,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3751,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3754,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3755,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3757,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3766,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3767,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 5
    argNames:
    - nsp_oid
    - roleid
    - mask
    - how
    - is_missing
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3770
      start: 3665
    functionDepth: 2
    functionLinenumber: 3665
    functionLinenumberEnd: 3770
    functionName: pg_namespace_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - IsConflictLogTableNamespace
    - errcode
    - object_aclcheck_ext
    - SearchSysCache1
    - superuser_arg
    - HeapTupleIsValid
    - pfree
    - isTempNamespace
    - ReleaseSysCache
    - errmsg
    - ObjectIdGetDatum
    - acldefault
    - ereport
    - GETSTRUCT
    - has_privs_of_role
    - DatumGetAclP
    - aclmask
    - SysCacheGetAttr
    - DatumGetPointer
    linkageType: ''
    returnType: AclMode
    signature: "AclMode pg_namespace_aclmask_ext(Oid nsp_oid, Oid roleid,\n\t\t\t\t\t\t
      AclMode mask, AclMaskHow how,\n\t\t\t\t\t\t bool *is_missing)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3788,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3794,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3794,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3795,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3804,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3805,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3806,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3809,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/backend/catalog/aclchk.c:3815,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3819,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3821,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3821,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3822,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3831,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3832,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3833,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3836,1
    - Dst: get_multirange_range
      Src: /src/postgres/src/backend/catalog/aclchk.c:3846,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3848,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3850,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3850,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3851,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3860,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3861,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3862,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3865,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3873,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3878,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3884,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3887,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3890,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3891,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3893,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 5
    argNames:
    - type_oid
    - roleid
    - mask
    - how
    - is_missing
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3896
      start: 3775
    functionDepth: 1
    functionLinenumber: 3775
    functionLinenumberEnd: 3896
    functionName: pg_type_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - IsTrueArrayType
    - superuser_arg
    - errcode
    - HeapTupleIsValid
    - get_multirange_range
    - acldefault
    - DatumGetAclP
    - ereport
    - pfree
    - ReleaseSysCache
    - errmsg
    - GETSTRUCT
    - aclmask
    - ObjectIdGetDatum
    - SysCacheGetAttr
    - DatumGetPointer
    linkageType: ''
    returnType: AclMode
    signature: "AclMode pg_type_aclmask_ext(Oid type_oid, Oid roleid, AclMode mask,
      AclMaskHow how,\n\t\t\t\t\tbool *is_missing)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - classid
    - objectid
    - roleid
    - mode
    argTypes:
    - Oid
    - Oid
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3905
      start: 3901
    functionDepth: 1
    functionLinenumber: 3901
    functionLinenumberEnd: 3905
    functionName: object_aclcheck
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 12
    functionsReached:
    - object_aclcheck_ext
    linkageType: ''
    returnType: AclResult
    signature: AclResult object_aclcheck(Oid classid, Oid objectid, Oid roleid, AclMode
      mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: object_aclmask_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - classid
    - objectid
    - roleid
    - mode
    - is_missing
    argTypes:
    - Oid
    - Oid
    - Oid
    - AclMode
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3921
      start: 3911
    functionDepth: 3
    functionLinenumber: 3911
    functionLinenumberEnd: 3921
    functionName: object_aclcheck_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - object_aclmask_ext
    linkageType: ''
    returnType: AclResult
    signature: "AclResult object_aclcheck_ext(Oid classid, Oid objectid,\n\t\t\t\t\tOid
      roleid, AclMode mode,\n\t\t\t\t\tbool *is_missing)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_attribute_aclcheck_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - table_oid
    - attnum
    - roleid
    - mode
    argTypes:
    - Oid
    - AttrNumber
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3938
      start: 3933
    functionDepth: 1
    functionLinenumber: 3933
    functionLinenumberEnd: 3938
    functionName: pg_attribute_aclcheck
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - pg_attribute_aclcheck_ext
    linkageType: ''
    returnType: AclResult
    signature: "AclResult pg_attribute_aclcheck(Oid table_oid, AttrNumber attnum,\n\t\t\t\t\t
      \ Oid roleid, AclMode mode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_attribute_aclmask_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - table_oid
    - attnum
    - roleid
    - mode
    - is_missing
    argTypes:
    - Oid
    - AttrNumber
    - Oid
    - AclMode
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3954
      start: 3945
    functionDepth: 2
    functionLinenumber: 3945
    functionLinenumberEnd: 3954
    functionName: pg_attribute_aclcheck_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - pg_attribute_aclmask_ext
    linkageType: ''
    returnType: AclResult
    signature: "AclResult pg_attribute_aclcheck_ext(Oid table_oid, AttrNumber attnum,\n\t\t\t\t\t\t
      \ Oid roleid, AclMode mode, bool *is_missing)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_attribute_aclcheck_all_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - table_oid
    - roleid
    - mode
    - how
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3980
      start: 3975
    functionDepth: 1
    functionLinenumber: 3975
    functionLinenumberEnd: 3980
    functionName: pg_attribute_aclcheck_all
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - pg_attribute_aclcheck_all_ext
    linkageType: ''
    returnType: AclResult
    signature: "AclResult pg_attribute_aclcheck_all(Oid table_oid, Oid roleid, AclMode
      mode,\n\t\t\t\t\t\t  AclMaskHow how)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4001,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4001,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4002,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:4011,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:4012,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:4013,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4016,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4021,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:4037,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4038,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4039,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4046,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4050,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4052,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4056,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4069,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:4071,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:4074,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:4075,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4078,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 5
    argNames:
    - table_oid
    - roleid
    - mode
    - how
    - is_missing
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4095
      start: 3986
    functionDepth: 1
    functionLinenumber: 3986
    functionLinenumberEnd: 4095
    functionName: pg_attribute_aclcheck_all_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - errcode
    - HeapTupleIsValid
    - pfree
    - DatumGetAclP
    - ereport
    - DatumGetPointer
    - ReleaseSysCache
    - SysCacheGetAttr
    - errmsg
    - GETSTRUCT
    - aclmask
    - ObjectIdGetDatum
    - SearchSysCache2
    - Int16GetDatum
    linkageType: ''
    returnType: AclResult
    signature: "AclResult pg_attribute_aclcheck_all_ext(Oid table_oid, Oid roleid,\n\t\t\t\t\t\t\t
      \ AclMode mode, AclMaskHow how,\n\t\t\t\t\t\t\t  bool *is_missing)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - table_oid
    - roleid
    - mode
    argTypes:
    - Oid
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4108
      start: 4104
    functionDepth: 1
    functionLinenumber: 4104
    functionLinenumberEnd: 4108
    functionName: pg_class_aclcheck
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - pg_class_aclcheck_ext
    linkageType: ''
    returnType: AclResult
    signature: AclResult pg_class_aclcheck(Oid table_oid, Oid roleid, AclMode mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_class_aclmask_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - table_oid
    - roleid
    - mode
    - is_missing
    argTypes:
    - Oid
    - Oid
    - AclMode
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4123
      start: 4114
    functionDepth: 2
    functionLinenumber: 4114
    functionLinenumberEnd: 4123
    functionName: pg_class_aclcheck_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - pg_class_aclmask_ext
    linkageType: ''
    returnType: AclResult
    signature: "AclResult pg_class_aclcheck_ext(Oid table_oid, Oid roleid,\n\t\t\t\t\t
      \ AclMode mode, bool *is_missing)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_parameter_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:4132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - name
    - roleid
    - mode
    argTypes:
    - char*
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4136
      start: 4129
    functionDepth: 2
    functionLinenumber: 4129
    functionLinenumberEnd: 4136
    functionName: pg_parameter_aclcheck
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - pg_parameter_aclmask
    linkageType: ''
    returnType: AclResult
    signature: AclResult pg_parameter_aclcheck(const char *name, Oid roleid, AclMode
      mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_largeobject_aclmask_snapshot
      Src: /src/postgres/src/backend/catalog/aclchk.c:4145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - lobj_oid
    - roleid
    - mode
    - snapshot
    argTypes:
    - Oid
    - Oid
    - AclMode
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4150
      start: 4141
    functionDepth: 5
    functionLinenumber: 4141
    functionLinenumberEnd: 4150
    functionName: pg_largeobject_aclcheck_snapshot
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - pg_largeobject_aclmask_snapshot
    linkageType: ''
    returnType: AclResult
    signature: "AclResult pg_largeobject_aclcheck_snapshot(Oid lobj_oid, Oid roleid,
      AclMode mode,\n\t\t\t\t\t\t\t\t Snapshot snapshot)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:4162,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4169,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4175,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4175,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4176,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4177,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4178,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:4180,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:4180,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:4182,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4183,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:4194,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4196,1
    - Dst: get_object_attnum_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4197,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4199,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4201,1
    - Dst: get_object_oid_index
      Src: /src/postgres/src/backend/catalog/aclchk.c:4202,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4205,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4206,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4207,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4208,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:4210,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4210,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:4211,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4212,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4214,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4216,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4217,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:4220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - classid
    - objectid
    - roleid
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4221
      start: 4155
    functionDepth: 4
    functionLinenumber: 4155
    functionLinenumberEnd: 4221
    functionName: object_ownercheck
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 8
    functionsReached:
    - get_object_class_descr
    - table_close
    - SearchSysCache1
    - elog
    - systable_endscan
    - superuser_arg
    - get_object_attnum_oid
    - HeapTupleIsValid
    - DatumGetObjectId
    - RelationGetDescr
    - Assert
    - table_open
    - ReleaseSysCache
    - get_object_catcache_oid
    - ObjectIdGetDatum
    - heap_getattr
    - systable_beginscan
    - get_object_attnum_owner
    - SysCacheGetAttrNotNull
    - get_object_oid_index
    - ScanKeyInit
    - has_privs_of_role
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool object_ownercheck(Oid classid, Oid objectid, Oid roleid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:4241,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4244,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4244,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4245,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4247,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - roleid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4251
      start: 4234
    functionDepth: 1
    functionLinenumber: 4234
    functionLinenumberEnd: 4251
    functionName: has_createrole_privilege
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - superuser_arg
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool has_createrole_privilege(Oid roleid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:4260,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4263,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4263,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4264,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4266,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - roleid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4270
      start: 4253
    functionDepth: 1
    functionLinenumber: 4253
    functionLinenumberEnd: 4270
    functionName: has_bypassrls_privilege
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - superuser_arg
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool has_bypassrls_privilege(Oid roleid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/catalog/aclchk.c:4283,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4284,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4285,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4286,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4288,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4293,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:4297,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - roleId
    - nsp_oid
    - objtype
    argTypes:
    - Oid
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4302
      start: 4277
    functionDepth: 1
    functionLinenumber: 4277
    functionLinenumberEnd: 4302
    functionName: get_default_acl_internal
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - SearchSysCache3
    - HeapTupleIsValid
    - ReleaseSysCache
    - CharGetDatum
    - ObjectIdGetDatum
    - SysCacheGetAttr
    - DatumGetAclPCopy
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      get_default_acl_internal(Oid roleId, Oid nsp_oid, char objtype)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/aclchk.c:4325,1
    - Dst: get_default_acl_internal
      Src: /src/postgres/src/backend/catalog/aclchk.c:4360,1
    - Dst: get_default_acl_internal
      Src: /src/postgres/src/backend/catalog/aclchk.c:4361,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:4368,1
    - Dst: aclmerge
      Src: /src/postgres/src/backend/catalog/aclchk.c:4375,1
    - Dst: aclitemsort
      Src: /src/postgres/src/backend/catalog/aclchk.c:4381,1
    - Dst: aclitemsort
      Src: /src/postgres/src/backend/catalog/aclchk.c:4382,1
    - Dst: aclequal
      Src: /src/postgres/src/backend/catalog/aclchk.c:4383,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 3
    argNames:
    - objtype
    - ownerId
    - nsp_oid
    argTypes:
    - ObjectType
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4387
      start: 4312
    functionDepth: 2
    functionLinenumber: 4312
    functionLinenumberEnd: 4387
    functionName: get_user_default_acl
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 4
    functionsReached:
    - get_default_acl_internal
    - acldefault
    - IsBootstrapProcessingMode
    - aclmerge
    - aclequal
    - aclitemsort
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      get_user_default_acl(ObjectType objtype, Oid ownerId, Oid nsp_oid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4404,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:4407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - classId
    - objectId
    - objsubId
    - ownerId
    - acl
    argTypes:
    - Oid
    - Oid
    - int32
    - Oid
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4411
      start: 4392
    functionDepth: 1
    functionLinenumber: 4392
    functionLinenumberEnd: 4411
    functionName: recordDependencyOnNewAcl
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 4
    functionsReached:
    - aclmembers
    - updateAclDependencies
    linkageType: ''
    returnType: void
    signature: "void recordDependencyOnNewAcl(Oid classId, Oid objectId, int32 objsubId,\n\t\t\t\t\t\t
      Oid ownerId, Acl *acl)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4436,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4436,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4437,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4438,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4439,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4450,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:4468,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4469,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4470,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4472,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4476,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4478,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4482,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4489,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4493,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4494,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4496,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4500,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4505,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4506,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4508,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:4525,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4528,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4531,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4533,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4537,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4538,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4539,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4541,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4543,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4547,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4548,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4550,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:4553,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4560,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4561,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4561,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4562,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4563,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4564,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4566,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:4567,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4572,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4573,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4575,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 55
    argCount: 2
    argNames:
    - objoid
    - classoid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4577
      start: 4419
    functionDepth: 4
    functionLinenumber: 4419
    functionLinenumberEnd: 4577
    functionName: recordExtObjInitPriv
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - recordExtensionInitPrivWorker
    - SearchSysCache2
    - get_object_class_descr
    - SearchSysCache1
    - elog
    - systable_endscan
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - ReleaseSysCache
    - get_object_catcache_oid
    - ObjectIdGetDatum
    - get_object_attnum_acl
    - heap_getattr
    - systable_beginscan
    - GETSTRUCT
    - Int16GetDatum
    - ScanKeyInit
    - DatumGetAclP
    - systable_getnext
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: void recordExtObjInitPriv(Oid objoid, Oid classoid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4596,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4596,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4597,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4598,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4599,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4610,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:4627,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4628,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4629,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4631,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4636,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4638,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4642,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4646,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - objoid
    - classoid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4647
      start: 4583
    functionDepth: 1
    functionLinenumber: 4583
    functionLinenumberEnd: 4647
    functionName: removeExtObjInitPriv
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - recordExtensionInitPrivWorker
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    - SearchSysCache2
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: void removeExtObjInitPriv(Oid objoid, Oid classoid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4680,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 4
    argNames:
    - objoid
    - classoid
    - objsubid
    - new_acl
    argTypes:
    - Oid
    - Oid
    - int
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4681
      start: 4666
    functionDepth: 1
    functionLinenumber: 4666
    functionLinenumberEnd: 4681
    functionName: recordExtensionInitPriv
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 5
    functionsReached:
    - recordExtensionInitPrivWorker
    linkageType: ''
    returnType: void
    signature: void recordExtensionInitPriv(Oid objoid, Oid classoid, int objsubid,
      Acl *new_acl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4710,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:4713,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4715,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4718,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4719,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4722,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4723,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4726,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4728,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4732,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4735,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4745,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4747,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4748,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4749,1
    - Dst: updateInitAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:4751,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:4756,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4758,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:4761,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4761,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:4764,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/aclchk.c:4769,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:4783,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4786,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4787,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4788,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4792,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4794,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:4796,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4796,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4798,1
    - Dst: updateInitAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:4804,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4810,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:4813,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4815,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 4
    argNames:
    - objoid
    - classoid
    - objsubid
    - new_acl
    argTypes:
    - Oid
    - Oid
    - int
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4816
      start: 4695
    functionDepth: 7
    functionLinenumber: 4695
    functionLinenumberEnd: 4816
    functionName: recordExtensionInitPrivWorker
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 3
    functionsReached:
    - aclmembers
    - updateInitAclDependencies
    - ACL_NUM
    - heap_form_tuple
    - table_close
    - CatalogTupleInsert
    - systable_endscan
    - Int32GetDatum
    - HeapTupleIsValid
    - RelationGetDescr
    - Assert
    - CommandCounterIncrement
    - table_open
    - CatalogTupleDelete
    - PointerGetDatum
    - CharGetDatum
    - ObjectIdGetDatum
    - heap_getattr
    - systable_beginscan
    - heap_modify_tuple
    - ScanKeyInit
    - DatumGetAclP
    - CatalogTupleUpdate
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: "void recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid,\n\t\t\t\t\t\t\t
      \ Acl *new_acl)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:4842,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4844,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4847,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4848,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4851,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4852,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4855,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4857,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4861,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4863,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4869,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4870,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4875,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4876,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4877,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:4878,1
    - Dst: aclnewowner
      Src: /src/postgres/src/backend/catalog/aclchk.c:4884,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:4890,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/aclchk.c:4892,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4901,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:4904,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4904,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:4906,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4912,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4913,1
    - Dst: updateInitAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:4915,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4919,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:4922,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4924,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 5
    argNames:
    - oldroleid
    - newroleid
    - classid
    - objid
    - objsubid
    argTypes:
    - Oid
    - Oid
    - Oid
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4925
      start: 4823
    functionDepth: 7
    functionLinenumber: 4823
    functionLinenumberEnd: 4925
    functionName: ReplaceRoleInInitPriv
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - aclmembers
    - updateInitAclDependencies
    - ACL_NUM
    - table_close
    - systable_endscan
    - Int32GetDatum
    - HeapTupleIsValid
    - RelationGetDescr
    - Assert
    - CommandCounterIncrement
    - table_open
    - CatalogTupleDelete
    - PointerGetDatum
    - ObjectIdGetDatum
    - heap_getattr
    - systable_beginscan
    - DatumGetAclPCopy
    - aclnewowner
    - heap_modify_tuple
    - ScanKeyInit
    - CatalogTupleUpdate
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: "void ReplaceRoleInInitPriv(Oid oldroleid, Oid newroleid,\n\t\t\t\t\t
      \ Oid classid, Oid objid, int32 objsubid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:4953,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4955,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4958,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4959,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4962,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4963,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4966,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4968,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4972,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4974,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4980,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4981,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4986,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4987,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4988,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:4989,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4996,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4999,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:5000,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:5000,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:5001,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:5002,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:5003,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:5005,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:5005,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:5007,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:5008,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:5014,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:5018,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:5026,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/aclchk.c:5028,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:5037,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:5040,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:5040,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:5042,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:5048,1
    - Dst: updateInitAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:5050,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:5054,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:5057,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:5059,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 4
    argNames:
    - roleid
    - classid
    - objid
    - objsubid
    argTypes:
    - Oid
    - Oid
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5060
      start: 4932
    functionDepth: 7
    functionLinenumber: 4932
    functionLinenumberEnd: 5060
    functionName: RemoveRoleFromInitPriv
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - aclmembers
    - updateInitAclDependencies
    - ACL_NUM
    - get_object_class_descr
    - table_close
    - SearchSysCache1
    - elog
    - systable_endscan
    - Int32GetDatum
    - HeapTupleIsValid
    - RelationGetDescr
    - Assert
    - DatumGetObjectId
    - CommandCounterIncrement
    - table_open
    - ReleaseSysCache
    - CatalogTupleDelete
    - PointerGetDatum
    - get_object_catcache_oid
    - ObjectIdGetDatum
    - heap_getattr
    - systable_beginscan
    - merge_acl_with_grant
    - get_object_attnum_owner
    - list_make1_oid
    - DatumGetAclPCopy
    - SysCacheGetAttrNotNull
    - heap_modify_tuple
    - ScanKeyInit
    - CatalogTupleUpdate
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void RemoveRoleFromInitPriv(Oid roleid, Oid classid, Oid objid, int32
      objsubid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:135,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:141,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:144,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:147,1
    - Dst: shdepAddDependency
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:149,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - depender
    - referenced
    - deptype
    argTypes:
    - ObjectAddress*
    - ObjectAddress*
    - SharedDependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 156
    functionName: recordSharedDependencyOn
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - shdepAddDependency
    - Assert
    - table_open
    - IsBootstrapProcessingMode
    - table_close
    - IsPinnedObject
    linkageType: ''
    returnType: void
    signature: "void recordSharedDependencyOn(ObjectAddress *depender,\n\t\t\t\t\t\t
      ObjectAddress *referenced,\n\t\t\t\t\t\t SharedDependencyType deptype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: recordSharedDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - classId
    - objectId
    - owner
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 167
    functionDepth: 4
    functionLinenumber: 167
    functionLinenumberEnd: 182
    functionName: recordDependencyOnOwner
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 5
    functionsReached:
    - recordSharedDependencyOn
    linkageType: ''
    returnType: void
    signature: void recordDependencyOnOwner(Oid classId, Oid objectId, Oid owner)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: classIdGetDbId
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:211,1
    - Dst: shdepLockAndCheckObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:221,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:226,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:229,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:230,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:233,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:234,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:237,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:238,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:241,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:243,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:246,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:249,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:253,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:256,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:259,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:261,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:265,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:270,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:276,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:284,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:286,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:287,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:288,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:289,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:291,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:292,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:293,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:299,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:299,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:300,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:304,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 7
    argNames:
    - sdepRel
    - classid
    - objid
    - objsubid
    - refclassid
    - refobjid
    - deptype
    argTypes:
    - Relation
    - Oid
    - Oid
    - int32
    - Oid
    - Oid
    - SharedDependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 205
    functionDepth: 6
    functionLinenumber: 205
    functionLinenumberEnd: 305
    functionName: shdepChangeDep
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - CatalogTupleInsert
    - elog
    - systable_endscan
    - classIdGetDbId
    - heap_freetuple
    - Int32GetDatum
    - RelationGetDescr
    - CatalogTupleDelete
    - heap_copytuple
    - CharGetDatum
    - ObjectIdGetDatum
    - systable_beginscan
    - shdepLockAndCheckObject
    - memset
    - GETSTRUCT
    - IsPinnedObject
    - ScanKeyInit
    - CatalogTupleUpdate
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: "void shdepChangeDep(Relation sdepRel,\n\t\t\t   Oid classid, Oid objid,
      int32 objsubid,\n\t\t\t   Oid refclassid, Oid refobjid,\n\t\t\t   SharedDependencyType
      deptype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:320,1
    - Dst: shdepChangeDep
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:323,1
    - Dst: shdepDropDependency
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:347,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - classId
    - objectId
    - newOwnerId
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 315
    functionDepth: 7
    functionLinenumber: 315
    functionLinenumberEnd: 358
    functionName: changeDependencyOnOwner
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - table_open
    - table_close
    - shdepChangeDep
    - shdepDropDependency
    linkageType: ''
    returnType: void
    signature: void changeDependencyOnOwner(Oid classId, Oid objectId, Oid newOwnerId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:375,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:376,1
    - Dst: recordSharedDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - classId
    - objectId
    - tablespace
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 369
    functionDepth: 4
    functionLinenumber: 369
    functionLinenumberEnd: 380
    functionName: recordDependencyOnTablespace
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 1
    functionsReached:
    - recordSharedDependencyOn
    - ObjectAddressSet
    linkageType: ''
    returnType: void
    signature: void recordDependencyOnTablespace(Oid classId, Oid objectId, Oid tablespace)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:395,1
    - Dst: shdepChangeDep
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:399,1
    - Dst: shdepDropDependency
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:404,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - classId
    - objectId
    - newTablespaceId
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 390
    functionDepth: 7
    functionLinenumber: 390
    functionLinenumberEnd: 410
    functionName: changeDependencyOnTablespace
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - table_open
    - table_close
    - shdepChangeDep
    - shdepDropDependency
    linkageType: ''
    returnType: void
    signature: void changeDependencyOnTablespace(Oid classId, Oid objectId, Oid newTablespaceId)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - list1
    - nlist1
    - list2
    - nlist2
    argTypes:
    - Oid*
    - int*
    - Oid*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 463
    functionName: getOidListDiff
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void getOidListDiff(Oid *list1, int *nlist1, Oid *list2, int *nlist2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: updateAclDependenciesWorker
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - classId
    - objectId
    - objsubId
    - ownerId
    - noldmembers
    - oldmembers
    - nnewmembers
    - newmembers
    argTypes:
    - Oid
    - Oid
    - int32
    - Oid
    - int
    - Oid*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 500
    functionName: updateAclDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 7
    functionsReached:
    - updateAclDependenciesWorker
    linkageType: ''
    returnType: void
    signature: "void updateAclDependencies(Oid classId, Oid objectId, int32 objsubId,\n\t\t\t\t\t
      \ Oid ownerId,\n\t\t\t\t\t  int noldmembers, Oid *oldmembers,\n\t\t\t\t\t  int
      nnewmembers, Oid *newmembers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: updateAclDependenciesWorker
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - classId
    - objectId
    - objsubId
    - noldmembers
    - oldmembers
    - nnewmembers
    - newmembers
    argTypes:
    - Oid
    - Oid
    - int32
    - int
    - Oid*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 521
    functionName: updateInitAclDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 3
    functionsReached:
    - updateAclDependenciesWorker
    linkageType: ''
    returnType: void
    signature: "void updateInitAclDependencies(Oid classId, Oid objectId, int32 objsubId,\n\t\t\t\t\t\t
      \ int noldmembers, Oid *oldmembers,\n\t\t\t\t\t\t  int nnewmembers, Oid *newmembers)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getOidListDiff
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:539,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:543,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:561,1
    - Dst: shdepAddDependency
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:564,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:579,1
    - Dst: shdepDropDependency
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:582,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:588,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:592,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:594,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 24
    argCount: 9
    argNames:
    - classId
    - objectId
    - objsubId
    - ownerId
    - deptype
    - noldmembers
    - oldmembers
    - nnewmembers
    - newmembers
    argTypes:
    - Oid
    - Oid
    - int32
    - Oid
    - SharedDependencyType
    - int
    - Oid*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 524
    functionDepth: 3
    functionLinenumber: 524
    functionLinenumberEnd: 595
    functionName: updateAclDependenciesWorker
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 2
    functionsReached:
    - shdepAddDependency
    - pfree
    - shdepDropDependency
    - table_open
    - getOidListDiff
    - table_close
    - IsPinnedObject
    linkageType: ''
    returnType: void
    signature: "void updateAclDependenciesWorker(Oid classId, Oid objectId, int32
      objsubId,\n\t\t\t\t\t\t\tOid ownerId, SharedDependencyType deptype,\n\t\t\t\t\t\t\tint
      noldmembers, Oid *oldmembers,\n\t\t\t\t\t\t\tint nnewmembers, Oid *newmembers)"
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 609
    functionDepth: 0
    functionLinenumber: 609
    functionLinenumberEnd: 654
    functionName: shared_dependency_comparator
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int shared_dependency_comparator(const void *a, const void *b)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:696,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:701,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:702,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:703,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:704,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:720,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:722,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:723,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:725,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:727,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:730,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:731,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:734,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:736,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:739,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:739,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:741,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:761,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:784,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:794,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:797,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:802,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:804,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:810,1
    - Dst: storeObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:818,1
    - Dst: storeObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:826,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:838,1
    - Dst: storeObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:847,1
    - Dst: storeObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:852,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:856,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:857,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:861,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:862,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:868,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:868,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:875,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:875,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 82
    argCount: 4
    argNames:
    - classId
    - objectId
    - detail_msg
    - detail_log_msg
    argTypes:
    - Oid
    - Oid
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 675
    functionDepth: 6
    functionLinenumber: 675
    functionLinenumberEnd: 885
    functionName: checkSharedDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - errcode
    - repalloc
    - table_close
    - qsort
    - systable_endscan
    - HeapTupleIsValid
    - storeObjectDescription
    - pfree
    - table_open
    - errmsg
    - palloc_object
    - ObjectIdGetDatum
    - systable_beginscan
    - initStringInfo
    - ereport
    - lappend
    - list_free_deep
    - lfirst
    - GETSTRUCT
    - getObjectDescription
    - IsPinnedObject
    - ScanKeyInit
    - appendStringInfo
    - ngettext
    - palloc
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: "bool checkSharedDependencies(Oid classId, Oid objectId,\n\t\t\t\t\t\tchar
      **detail_msg, char **detail_log_msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:784,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 791
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 361
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, remDeps)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:838,1
    - Dst: storeObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:847,1
    - Dst: storeObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 854
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 361
    functionsReached:
    - storeObjectDescription
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, remDeps)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:908,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:909,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:916,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:918,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:921,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:924,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:926,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:941,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:941,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:947,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:951,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:953,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:956,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:958,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:959,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:960,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:961,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:962,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:963,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:964,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:966,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:972,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:979,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:981,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:983,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:984,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:988,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:989,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 2
    argNames:
    - templateDbId
    - newDbId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 894
    functionDepth: 4
    functionLinenumber: 894
    functionLinenumberEnd: 990
    functionName: copyTemplateDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - CatalogCloseIndexes
    - CatalogTuplesMultiInsertWithInfo
    - palloc_array
    - table_close
    - systable_endscan
    - HeapTupleIsValid
    - RelationGetDescr
    - Int32GetDatum
    - pfree
    - table_open
    - MakeSingleTupleTableSlot
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - CharGetDatum
    - ObjectIdGetDatum
    - CatalogOpenIndexes
    - ExecDropSingleTupleTableSlot
    - systable_beginscan
    - memset
    - GETSTRUCT
    - ScanKeyInit
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void copyTemplateDependencies(Oid templateDbId, Oid newDbId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1006,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1012,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1015,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1018,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1021,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1021,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1023,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1026,1
    - Dst: shdepDropDependency
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1029,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1033,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - databaseId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 998
    functionDepth: 4
    functionLinenumber: 998
    functionLinenumberEnd: 1034
    functionName: dropDatabaseDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - shdepDropDependency
    - table_open
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void dropDatabaseDependencies(Oid databaseId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1051,1
    - Dst: shdepDropDependency
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1053,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - classId
    - objectId
    - objectSubId
    argTypes:
    - Oid
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1046
    functionDepth: 3
    functionLinenumber: 1046
    functionLinenumberEnd: 1059
    functionName: deleteSharedDependencyRecordsFor
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 1
    functionsReached:
    - table_open
    - table_close
    - shdepDropDependency
    linkageType: ''
    returnType: void
    signature: void deleteSharedDependencyRecordsFor(Oid classId, Oid objectId, int32
      objectSubId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shdepLockAndCheckObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1083,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1085,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1090,1
    - Dst: classIdGetDbId
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1090,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1091,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1092,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1093,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1095,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1096,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1097,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1099,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1101,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 7
    argNames:
    - sdepRel
    - classId
    - objectId
    - objsubId
    - refclassId
    - refobjId
    - deptype
    argTypes:
    - Relation
    - Oid
    - Oid
    - int32
    - Oid
    - Oid
    - SharedDependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1068
    functionDepth: 6
    functionLinenumber: 1068
    functionLinenumberEnd: 1105
    functionName: shdepAddDependency
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 2
    functionsReached:
    - classIdGetDbId
    - heap_freetuple
    - Int32GetDatum
    - heap_form_tuple
    - shdepLockAndCheckObject
    - memset
    - CharGetDatum
    - ObjectIdGetDatum
    - CatalogTupleInsert
    linkageType: ''
    returnType: void
    signature: "void shdepAddDependency(Relation sdepRel,\n\t\t\t\t   Oid classId,
      Oid objectId, int32 objsubId,\n\t\t\t\t   Oid refclassId, Oid refobjId,\n\t\t\t\t
      \  SharedDependencyType deptype)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1136,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1139,1
    - Dst: classIdGetDbId
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1139,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1140,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1143,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1144,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1147,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1152,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1155,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1159,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1162,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1162,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1164,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1167,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1169,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1176,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1179,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 8
    argNames:
    - sdepRel
    - classId
    - objectId
    - objsubId
    - drop_subobjects
    - refclassId
    - refobjId
    - deptype
    argTypes:
    - Relation
    - Oid
    - Oid
    - int32
    - bool
    - Oid
    - Oid
    - SharedDependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1123
    functionDepth: 4
    functionLinenumber: 1123
    functionLinenumberEnd: 1180
    functionName: shdepDropDependency
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 5
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - classIdGetDbId
    - systable_beginscan
    - Int32GetDatum
    - HeapTupleIsValid
    - CatalogTupleDelete
    - GETSTRUCT
    - OidIsValid
    - ObjectIdGetDatum
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: "void shdepDropDependency(Relation sdepRel,\n\t\t\t\t\tOid classId,
      Oid objectId, int32 objsubId,\n\t\t\t\t\tbool drop_subobjects,\n\t\t\t\t\tOid
      refclassId, Oid refobjId,\n\t\t\t\t\tSharedDependencyType deptype)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - classId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1189
    functionDepth: 1
    functionLinenumber: 1189
    functionLinenumberEnd: 1200
    functionName: classIdGetDbId
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 3
    functionsReached:
    - IsSharedRelation
    linkageType: ''
    returnType: Oid
    signature: Oid classIdGetDbId(Oid classId)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1214,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1219,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1220,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1222,1
    - Dst: get_tablespace_name
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1229,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1232,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1233,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1234,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1236,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1248,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1250,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1256,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - classId
    - objectId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1258
    functionName: shdepLockAndCheckObject
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 2
    functionsReached:
    - elog
    - errcode
    - pfree
    - ereport
    - LockSharedObject
    - get_database_name
    - errmsg
    - get_tablespace_name
    - ObjectIdGetDatum
    - SearchSysCacheExists1
    linkageType: ''
    returnType: void
    signature: void shdepLockAndCheckObject(Oid classId, Oid objectId)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1282,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1292,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1299,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1299,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1301,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1301,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1303,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1303,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1305,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1305,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1307,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1307,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1309,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1315,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1315,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1322,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1325,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 5
    argNames:
    - descs
    - type
    - object
    - deptype
    - count
    argTypes:
    - StringInfo
    - SharedDependencyObjectType
    - ObjectAddress*
    - SharedDependencyType
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1275
    functionDepth: 5
    functionLinenumber: 1275
    functionLinenumberEnd: 1326
    functionName: storeObjectDescription
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 2
    functionsReached:
    - elog
    - _
    - pfree
    - appendStringInfo
    - ngettext
    - getObjectDescription
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void storeObjectDescription(StringInfo descs,\n\t\t\t\t\t   SharedDependencyObjectType
      type,\n\t\t\t\t\t   ObjectAddress *object,\n\t\t\t\t\t   SharedDependencyType
      deptype,\n\t\t\t\t\t   int count)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1348,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1355,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1363,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1377,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1378,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1379,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1381,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1384,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1387,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1388,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1391,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1393,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1396,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1398,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1413,1
    - Dst: RemoveRoleFromObjectPolicy
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1421,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1435,1
    - Dst: systable_recheck_tuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1436,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1438,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1441,1
    - Dst: RemoveRoleFromObjectACL
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1456,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1477,1
    - Dst: systable_recheck_tuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1478,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1480,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1495,1
    - Dst: RemoveRoleFromInitPriv
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1496,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1504,1
    - Dst: sort_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1513,1
    - Dst: performMultipleDeletions
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1516,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1518,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1520,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 63
    argCount: 2
    argNames:
    - roleids
    - behavior
    argTypes:
    - List*
    - DropBehavior
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1521
      start: 1341
    functionDepth: 9
    functionLinenumber: 1341
    functionLinenumberEnd: 1521
    functionName: shdepDropOwned
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - errcode
    - RemoveRoleFromInitPriv
    - AcquireDeletionLock
    - lfirst_oid
    - table_close
    - elog
    - systable_endscan
    - performMultipleDeletions
    - ReleaseDeletionLock
    - Assert
    - table_open
    - systable_recheck_tuple
    - new_object_addresses
    - errmsg
    - ObjectIdGetDatum
    - systable_beginscan
    - ereport
    - GETSTRUCT
    - free_object_addresses
    - getObjectDescription
    - IsPinnedObject
    - ScanKeyInit
    - RemoveRoleFromObjectACL
    - RemoveRoleFromObjectPolicy
    - sort_object_addresses
    - add_exact_object_address
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void shdepDropOwned(List *roleids, DropBehavior behavior)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1363,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1377,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1378,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1379,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1381,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1384,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1387,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1388,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1391,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1393,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1396,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1398,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1413,1
    - Dst: RemoveRoleFromObjectPolicy
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1421,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1435,1
    - Dst: systable_recheck_tuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1436,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1438,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1441,1
    - Dst: RemoveRoleFromObjectACL
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1456,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1477,1
    - Dst: systable_recheck_tuple
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1478,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1480,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1495,1
    - Dst: RemoveRoleFromInitPriv
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1496,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1504,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1505
      start: 1361
    functionDepth: 9
    functionLinenumber: 1361
    functionLinenumberEnd: 1505
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 361
    functionsReached:
    - errcode
    - RemoveRoleFromInitPriv
    - AcquireDeletionLock
    - lfirst_oid
    - elog
    - systable_endscan
    - ReleaseDeletionLock
    - Assert
    - systable_recheck_tuple
    - errmsg
    - ObjectIdGetDatum
    - systable_beginscan
    - ereport
    - GETSTRUCT
    - getObjectDescription
    - IsPinnedObject
    - ScanKeyInit
    - RemoveRoleFromObjectACL
    - RemoveRoleFromObjectPolicy
    - add_exact_object_address
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void foreach(cell, roleids)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1540,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1547,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1558,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1559,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1560,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1561,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1569,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1572,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1573,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1576,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1578,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1581,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1583,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1602,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1605,1
    - Dst: shdepReassignOwned_Owner
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1611,1
    - Dst: shdepReassignOwned_InitAcl
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1614,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1622,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1628,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1629,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1632,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1635,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1638,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - roleids
    - newrole
    argTypes:
    - List*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1529
    functionDepth: 5
    functionLinenumber: 1529
    functionLinenumberEnd: 1639
    functionName: shdepReassignOwned
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - errcode
    - lfirst_oid
    - shdepReassignOwned_Owner
    - table_close
    - elog
    - systable_endscan
    - CommandCounterIncrement
    - table_open
    - shdepReassignOwned_InitAcl
    - errmsg
    - ObjectIdGetDatum
    - systable_beginscan
    - ereport
    - GETSTRUCT
    - AllocSetContextCreate
    - getObjectDescription
    - IsPinnedObject
    - ScanKeyInit
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void shdepReassignOwned(List *roleids, Oid newrole)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1547,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1558,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1559,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1560,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1561,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1569,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1572,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1573,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1576,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1578,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1581,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1583,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1602,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1605,1
    - Dst: shdepReassignOwned_Owner
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1611,1
    - Dst: shdepReassignOwned_InitAcl
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1614,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1622,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1628,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1629,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1632,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1635,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1636
      start: 1542
    functionDepth: 5
    functionLinenumber: 1542
    functionLinenumberEnd: 1636
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 361
    functionsReached:
    - errcode
    - lfirst_oid
    - shdepReassignOwned_Owner
    - elog
    - systable_endscan
    - CommandCounterIncrement
    - shdepReassignOwned_InitAcl
    - errmsg
    - ObjectIdGetDatum
    - systable_beginscan
    - ereport
    - GETSTRUCT
    - AllocSetContextCreate
    - getObjectDescription
    - IsPinnedObject
    - ScanKeyInit
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void foreach(cell, roleids)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: AlterTypeOwner_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1653,1
    - Dst: AlterSchemaOwner_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1657,1
    - Dst: ATExecChangeOwner
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1667,1
    - Dst: AlterForeignServerOwner_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1683,1
    - Dst: AlterForeignDataWrapperOwner_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1687,1
    - Dst: AlterEventTriggerOwner_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1691,1
    - Dst: AlterPublicationOwner_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1695,1
    - Dst: AlterSubscriptionOwner_oid
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1699,1
    - Dst: AlterObjectOwner_internal
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1717,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1723,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 2
    argNames:
    - sdepForm
    - newrole
    argTypes:
    - Form_pg_shdepend
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1726
      start: 1646
    functionDepth: 1
    functionLinenumber: 1646
    functionLinenumberEnd: 1726
    functionName: shdepReassignOwned_Owner
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 2
    functionsReached:
    - elog
    - AlterForeignDataWrapperOwner_oid
    - AlterEventTriggerOwner_oid
    - AlterObjectOwner_internal
    - AlterTypeOwner_oid
    - AlterPublicationOwner_oid
    - AlterSubscriptionOwner_oid
    - AlterForeignServerOwner_oid
    - AlterSchemaOwner_oid
    - ATExecChangeOwner
    linkageType: ''
    returnType: void
    signature: void shdepReassignOwned_Owner(Form_pg_shdepend sdepForm, Oid newrole)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReplaceRoleInInitPriv
      Src: /src/postgres/src/backend/catalog/pg_shdepend.c:1755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sdepForm
    - oldrole
    - newrole
    argTypes:
    - Form_pg_shdepend
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1733
    functionDepth: 8
    functionLinenumber: 1733
    functionLinenumberEnd: 1759
    functionName: shdepReassignOwned_InitAcl
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 2
    functionsReached:
    - ReplaceRoleInInitPriv
    linkageType: ''
    returnType: void
    signature: void shdepReassignOwned_InitAcl(Form_pg_shdepend sdepForm, Oid oldrole,
      Oid newrole)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/catalog/indexing.c:47,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/catalog/indexing.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - heapRel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 55
    functionName: CatalogOpenIndexes
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 7
    functionsReached:
    - ExecOpenIndices
    - makeNode
    linkageType: ''
    returnType: CatalogIndexState
    signature: CatalogIndexState CatalogOpenIndexes(Relation heapRel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/catalog/indexing.c:63,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/indexing.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - indstate
    argTypes:
    - CatalogIndexState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: CatalogCloseIndexes
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 7
    functionsReached:
    - pfree
    - ExecCloseIndices
    linkageType: ''
    returnType: void
    signature: void CatalogCloseIndexes(CatalogIndexState indstate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/catalog/indexing.c:94,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/indexing.c:99,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/catalog/indexing.c:99,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/indexing.c:112,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/indexing.c:112,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/catalog/indexing.c:114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/indexing.c:135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/indexing.c:136,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/indexing.c:137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/indexing.c:138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/indexing.c:139,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/catalog/indexing.c:143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/indexing.c:145,1
    - Dst: ReindexIsProcessingIndex
      Src: /src/postgres/src/backend/catalog/indexing.c:145,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/indexing.c:145,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/catalog/indexing.c:161,1
    - Dst: index_insert
      Src: /src/postgres/src/backend/catalog/indexing.c:170,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/indexing.c:181,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 3
    argNames:
    - indstate
    - heapTuple
    - updateIndexes
    argTypes:
    - CatalogIndexState
    - HeapTuple
    - TU_UpdateIndexes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 74
    functionDepth: 4
    functionLinenumber: 74
    functionLinenumberEnd: 182
    functionName: CatalogIndexInsert
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 0
    functionsReached:
    - ExecStoreHeapTuple
    - ReindexIsProcessingIndex
    - index_insert
    - HeapTupleIsHeapOnly
    - ExecDropSingleTupleTableSlot
    - Assert
    - RelationGetDescr
    - MakeSingleTupleTableSlot
    - FormIndexDatum
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void CatalogIndexInsert(CatalogIndexState indstate, HeapTuple heapTuple,\n\t\t\t\t
      \  TU_UpdateIndexes updateIndexes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHasNulls
      Src: /src/postgres/src/backend/catalog/indexing.c:201,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/indexing.c:203,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/indexing.c:208,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/indexing.c:210,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/catalog/indexing.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - heapRel
    - tup
    argTypes:
    - Relation
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 213
    functionName: CatalogTupleCheckConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 0
    functionsReached:
    - Assert
    - RelationGetDescr
    - HeapTupleHasNulls
    - att_isnull
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void CatalogTupleCheckConstraints(Relation heapRel, HeapTuple tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - heapRel
    - ','
    - tup
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: CatalogTupleCheckConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CatalogTupleCheckConstraints(heapRel, tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CatalogTupleCheckConstraints
      Src: /src/postgres/src/backend/catalog/indexing.c:237,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/indexing.c:239,1
    - Dst: simple_heap_insert
      Src: /src/postgres/src/backend/catalog/indexing.c:241,1
    - Dst: CatalogIndexInsert
      Src: /src/postgres/src/backend/catalog/indexing.c:243,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/indexing.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - heapRel
    - tup
    argTypes:
    - Relation
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 232
    functionDepth: 6
    functionLinenumber: 232
    functionLinenumberEnd: 245
    functionName: CatalogTupleInsert
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 21
    functionsReached:
    - simple_heap_insert
    - CatalogCloseIndexes
    - CatalogTupleCheckConstraints
    - CatalogIndexInsert
    - CatalogOpenIndexes
    linkageType: ''
    returnType: void
    signature: void CatalogTupleInsert(Relation heapRel, HeapTuple tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CatalogTupleCheckConstraints
      Src: /src/postgres/src/backend/catalog/indexing.c:259,1
    - Dst: simple_heap_insert
      Src: /src/postgres/src/backend/catalog/indexing.c:261,1
    - Dst: CatalogIndexInsert
      Src: /src/postgres/src/backend/catalog/indexing.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - heapRel
    - tup
    - indstate
    argTypes:
    - Relation
    - HeapTuple
    - CatalogIndexState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 255
    functionDepth: 6
    functionLinenumber: 255
    functionLinenumberEnd: 264
    functionName: CatalogTupleInsertWithInfo
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 1
    functionsReached:
    - simple_heap_insert
    - CatalogIndexInsert
    - CatalogTupleCheckConstraints
    linkageType: ''
    returnType: void
    signature: "void CatalogTupleInsertWithInfo(Relation heapRel, HeapTuple tup,\n\t\t\t\t\t\t
      \  CatalogIndexState indstate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: heap_multi_insert
      Src: /src/postgres/src/backend/catalog/indexing.c:280,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/catalog/indexing.c:281,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/catalog/indexing.c:292,1
    - Dst: CatalogIndexInsert
      Src: /src/postgres/src/backend/catalog/indexing.c:294,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/indexing.c:297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - heapRel
    - slot
    - ntuples
    - indstate
    argTypes:
    - Relation
    - TupleTableSlot**
    - int
    - CatalogIndexState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 272
    functionDepth: 5
    functionLinenumber: 272
    functionLinenumberEnd: 299
    functionName: CatalogTuplesMultiInsertWithInfo
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 5
    functionsReached:
    - heap_freetuple
    - CatalogIndexInsert
    - GetCurrentCommandId
    - ExecFetchSlotHeapTuple
    - heap_multi_insert
    linkageType: ''
    returnType: void
    signature: "void CatalogTuplesMultiInsertWithInfo(Relation heapRel, TupleTableSlot
      **slot,\n\t\t\t\t\t\t\t\t int ntuples, CatalogIndexState indstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CatalogTupleCheckConstraints
      Src: /src/postgres/src/backend/catalog/indexing.c:318,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/indexing.c:320,1
    - Dst: simple_heap_update
      Src: /src/postgres/src/backend/catalog/indexing.c:322,1
    - Dst: CatalogIndexInsert
      Src: /src/postgres/src/backend/catalog/indexing.c:324,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/indexing.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - heapRel
    - otid
    - tup
    argTypes:
    - Relation
    - ItemPointerData*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 312
    functionDepth: 6
    functionLinenumber: 312
    functionLinenumberEnd: 326
    functionName: CatalogTupleUpdate
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 45
    functionsReached:
    - CatalogCloseIndexes
    - simple_heap_update
    - CatalogTupleCheckConstraints
    - CatalogIndexInsert
    - CatalogOpenIndexes
    linkageType: ''
    returnType: void
    signature: void CatalogTupleUpdate(Relation heapRel, const ItemPointerData *otid,
      HeapTuple tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CatalogTupleCheckConstraints
      Src: /src/postgres/src/backend/catalog/indexing.c:342,1
    - Dst: simple_heap_update
      Src: /src/postgres/src/backend/catalog/indexing.c:344,1
    - Dst: CatalogIndexInsert
      Src: /src/postgres/src/backend/catalog/indexing.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - heapRel
    - otid
    - tup
    - indstate
    argTypes:
    - Relation
    - ItemPointerData*
    - HeapTuple
    - CatalogIndexState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 336
    functionDepth: 6
    functionLinenumber: 336
    functionLinenumberEnd: 347
    functionName: CatalogTupleUpdateWithInfo
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 0
    functionsReached:
    - simple_heap_update
    - CatalogIndexInsert
    - CatalogTupleCheckConstraints
    linkageType: ''
    returnType: void
    signature: "void CatalogTupleUpdateWithInfo(Relation heapRel, const ItemPointerData
      *otid, HeapTuple tup,\n\t\t\t\t\t\t   CatalogIndexState indstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: simple_heap_delete
      Src: /src/postgres/src/backend/catalog/indexing.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - heapRel
    - tid
    argTypes:
    - Relation
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 364
    functionDepth: 6
    functionLinenumber: 364
    functionLinenumberEnd: 368
    functionName: CatalogTupleDelete
    functionSourceFile: /src/postgres/src/backend/catalog/indexing.c
    functionUses: 28
    functionsReached:
    - simple_heap_delete
    linkageType: ''
    returnType: void
    signature: void CatalogTupleDelete(Relation heapRel, const ItemPointerData *tid)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_collation.c:64,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_collation.c:65,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_collation.c:66,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_collation.c:67,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/pg_collation.c:79,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:81,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:82,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:83,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_collation.c:84,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_collation.c:94,1
    - Dst: checkMembershipInCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_collation.c:95,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_collation.c:98,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_collation.c:99,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_collation.c:101,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_collation.c:103,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/backend/catalog/pg_collation.c:104,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_collation.c:108,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_collation.c:109,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_collation.c:111,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_collation.c:113,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/backend/catalog/pg_collation.c:114,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_collation.c:118,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/pg_collation.c:128,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:130,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:131,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/catalog/pg_collation.c:131,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:132,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/pg_collation.c:134,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:136,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:137,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:138,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_collation.c:139,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_collation.c:143,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_collation.c:152,1
    - Dst: checkMembershipInCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_collation.c:153,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_collation.c:156,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_collation.c:157,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_collation.c:158,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_collation.c:159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_collation.c:164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_collation.c:165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_collation.c:166,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_collation.c:170,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_collation.c:173,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_collation.c:175,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_collation.c:176,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:178,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:179,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:180,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:181,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:182,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:183,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:184,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:186,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:190,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:194,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:198,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_collation.c:202,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_collation.c:206,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_collation.c:209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_collation.c:210,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_collation.c:210,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_collation.c:221,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/pg_collation.c:224,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_collation.c:227,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_collation.c:230,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_collation.c:232,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_collation.c:233,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 77
    argCount: 13
    argNames:
    - collname
    - collnamespace
    - collowner
    - collprovider
    - collisdeterministic
    - collencoding
    - collcollate
    - collctype
    - colllocale
    - collicurules
    - collversion
    - if_not_exists
    - quiet
    argTypes:
    - char*
    - Oid
    - Oid
    - char
    - bool
    - int32
    - char*
    - char*
    - char*
    - char*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 41
    functionDepth: 7
    functionLinenumber: 41
    functionLinenumberEnd: 236
    functionName: CollationCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_collation.c
    functionUses: 0
    functionsReached:
    - errcode
    - heap_form_tuple
    - recordDependencyOn
    - table_close
    - CatalogTupleInsert
    - recordDependencyOnCurrentExtension
    - heap_freetuple
    - Assert
    - Int32GetDatum
    - GetDatabaseEncoding
    - RelationGetDescr
    - recordDependencyOnOwner
    - table_open
    - pg_encoding_to_char
    - PointerGetDatum
    - errmsg
    - OidIsValid
    - CharGetDatum
    - ObjectIdGetDatum
    - InvokeObjectPostCreateHook
    - GetNewOidWithIndex
    - ereport
    - namestrcpy
    - memset
    - NameGetDatum
    - GetSysCacheOid3
    - checkMembershipInCurrentExtension
    - ObjectAddressSet
    - CStringGetTextDatum
    - BoolGetDatum
    linkageType: ''
    returnType: Oid
    signature: "Oid CollationCreate(const char *collname, Oid collnamespace,\n\t\t\t\tOid
      collowner,\n\t\t\t\tchar collprovider,\n\t\t\t\tbool collisdeterministic,\n\t\t\t\tint32
      collencoding,\n\t\t\t\tconst char *collcollate, const char *collctype,\n\t\t\t\tconst
      char *colllocale,\n\t\t\t\tconst char *collicurules,\n\t\t\t\tconst char *collversion,\n\t\t\t\tbool
      if_not_exists,\n\t\t\t\tbool quiet)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsSystemClass
      Src: /src/postgres/src/backend/catalog/catalog.c:76,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/catalog.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 77
    functionName: IsSystemRelation
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 7
    functionsReached:
    - RelationGetRelid
    - IsSystemClass
    linkageType: ''
    returnType: bool
    signature: bool IsSystemRelation(Relation relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsCatalogRelationOid
      Src: /src/postgres/src/backend/catalog/catalog.c:89,1
    - Dst: IsToastClass
      Src: /src/postgres/src/backend/catalog/catalog.c:90,1
    - Dst: IsConflictLogTableClass
      Src: /src/postgres/src/backend/catalog/catalog.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - relid
    - reltuple
    argTypes:
    - Oid
    - Form_pg_class
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 92
    functionName: IsSystemClass
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached:
    - IsCatalogRelationOid
    - IsToastClass
    - IsConflictLogTableClass
    linkageType: ''
    returnType: bool
    signature: bool IsSystemClass(Oid relid, Form_pg_class reltuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsCatalogRelationOid
      Src: /src/postgres/src/backend/catalog/catalog.c:108,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/catalog.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: IsCatalogRelation
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 4
    functionsReached:
    - IsCatalogRelationOid
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: bool IsCatalogRelation(Relation relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 139
    functionName: IsCatalogRelationOid
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsCatalogRelationOid(Oid relid)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 169
    functionName: IsCatalogTextUniqueIndexOid
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsCatalogTextUniqueIndexOid(Oid relid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsInplaceUpdateOid
      Src: /src/postgres/src/backend/catalog/catalog.c:187,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/catalog.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: IsInplaceUpdateRelation
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached:
    - RelationGetRelid
    - IsInplaceUpdateOid
    linkageType: ''
    returnType: bool
    signature: bool IsInplaceUpdateRelation(Relation relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 199
    functionName: IsInplaceUpdateOid
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsInplaceUpdateOid(Oid relid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/catalog.c:218,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/catalog.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 219
    functionName: IsToastRelation
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached:
    - RelationGetNamespace
    - IsToastNamespace
    linkageType: ''
    returnType: bool
    signature: bool IsToastRelation(Relation relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/catalog.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reltuple
    argTypes:
    - Form_pg_class
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: IsToastClass
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 1
    functionsReached:
    - IsToastNamespace
    linkageType: ''
    returnType: bool
    signature: bool IsToastClass(Form_pg_class reltuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsConflictLogTableNamespace
      Src: /src/postgres/src/backend/catalog/catalog.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reltuple
    argTypes:
    - Form_pg_class
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 247
    functionName: IsConflictLogTableClass
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached:
    - IsConflictLogTableNamespace
    linkageType: ''
    returnType: bool
    signature: bool IsConflictLogTableClass(Form_pg_class reltuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 262
    functionName: IsCatalogNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsCatalogNamespace(Oid namespaceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isTempToastNamespace
      Src: /src/postgres/src/backend/catalog/catalog.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 281
    functionName: IsToastNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 6
    functionsReached:
    - isTempToastNamespace
    linkageType: ''
    returnType: bool
    signature: bool IsToastNamespace(Oid namespaceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: IsConflictLogTableNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsConflictLogTableNamespace(Oid namespaceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 311
    functionName: IsReservedName
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsReservedName(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 8
    argCount: 1
    argNames:
    - relationId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 386
    functionName: IsSharedRelation
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsSharedRelation(Oid relationId)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - classId
    - objectId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 448
    functionName: IsPinnedObject
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsPinnedObject(Oid classId, Oid objectId)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/catalog.c:485,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/catalog.c:485,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/catalog.c:488,1
    - Dst: GetNewObjectId
      Src: /src/postgres/src/backend/catalog/catalog.c:489,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/catalog.c:497,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/catalog.c:497,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/catalog/catalog.c:502,1
    - Dst: GetNewObjectId
      Src: /src/postgres/src/backend/catalog/catalog.c:504,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/catalog.c:506,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/catalog.c:509,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/catalog.c:512,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/catalog.c:515,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/catalog.c:515,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/catalog.c:517,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:531,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:532,1
    - Dst: errdetail_plural
      Src: /src/postgres/src/backend/catalog/catalog.c:533,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:557,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/catalog/catalog.c:558,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:561,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - relation
    - indexId
    - oidcolumn
    argTypes:
    - Relation
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 474
    functionDepth: 4
    functionLinenumber: 474
    functionLinenumberEnd: 565
    functionName: GetNewOidWithIndex
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 12
    functionsReached:
    - GetNewObjectId
    - errmsg_plural
    - ScanKeyInit
    - systable_endscan
    - IsSystemRelation
    - systable_beginscan
    - Assert
    - HeapTupleIsValid
    - errdetail_plural
    - ereport
    - CHECK_FOR_INTERRUPTS
    - IsBootstrapProcessingMode
    - errmsg
    - RelationGetRelationName
    - ObjectIdGetDatum
    - systable_getnext
    - RelationGetRelid
    linkageType: ''
    returnType: Oid
    signature: Oid GetNewOidWithIndex(Relation relation, Oid indexId, AttrNumber oidcolumn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/catalog.c:596,1
    - Dst: ProcNumberForTempRelations
      Src: /src/postgres/src/backend/catalog/catalog.c:601,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/catalog.c:608,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/catalog/catalog.c:627,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/catalog.c:631,1
    - Dst: GetNewObjectId
      Src: /src/postgres/src/backend/catalog/catalog.c:634,1
    - Dst: relpath
      Src: /src/postgres/src/backend/catalog/catalog.c:637,1
    - Dst: access
      Src: /src/postgres/src/backend/catalog/catalog.c:639,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - reltablespace
    - pg_class
    - relpersistence
    argTypes:
    - Oid
    - Relation
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 583
    functionDepth: 5
    functionLinenumber: 583
    functionLinenumberEnd: 658
    functionName: GetNewRelFileNumber
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached:
    - elog
    - GetNewObjectId
    - GetNewOidWithIndex
    - Assert
    - access
    - CHECK_FOR_INTERRUPTS
    - ProcNumberForTempRelations
    - relpath
    linkageType: ''
    returnType: RelFileNumber
    signature: RelFileNumber GetNewRelFileNumber(Oid reltablespace, Relation pg_class,
      char relpersistence)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/catalog.c:670,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/catalog/catalog.c:671,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/catalog.c:672,1
    - Dst: superuser
      Src: /src/postgres/src/backend/catalog/catalog.c:686,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:687,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:689,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/catalog.c:692,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/catalog.c:693,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/catalog.c:695,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:696,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:697,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:698,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/catalog.c:700,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:701,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:702,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:703,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:704,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:705,1
    - Dst: SearchSysCacheAttName
      Src: /src/postgres/src/backend/catalog/catalog.c:707,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/catalog.c:707,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/catalog.c:708,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:709,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:710,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:711,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/catalog.c:712,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:712,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/catalog.c:714,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:718,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:719,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:720,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/catalog.c:721,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/catalog/catalog.c:723,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:725,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:726,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:727,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:728,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/catalog.c:729,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/catalog.c:731,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/catalog.c:733,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/catalog.c:734,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/catalog.c:735,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/catalog/catalog.c:737,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 667
    functionDepth: 5
    functionLinenumber: 667
    functionLinenumberEnd: 738
    functionName: pg_nextoid
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 0
    functionsReached:
    - IsSystemRelation
    - errcode
    - NameStr
    - RelationGetRelationName
    - table_close
    - PG_GETARG_NAME
    - HeapTupleIsValid
    - table_open
    - ReleaseSysCache
    - index_close
    - errmsg
    - IndexRelationGetNumberOfKeyAttributes
    - superuser
    - GetNewOidWithIndex
    - ereport
    - index_open
    - GETSTRUCT
    - SearchSysCacheAttName
    - PG_RETURN_OID
    - PG_GETARG_OID
    - RelationGetRelid
    linkageType: ''
    returnType: Datum
    signature: Datum pg_nextoid(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: superuser
      Src: /src/postgres/src/backend/catalog/catalog.c:753,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:754,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:755,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:756,1
    - Dst: StopGeneratingPinnedObjectIds
      Src: /src/postgres/src/backend/catalog/catalog.c:759,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/catalog.c:761,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 746
    functionDepth: 3
    functionLinenumber: 746
    functionLinenumberEnd: 762
    functionName: pg_stop_making_pinned_objects
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 0
    functionsReached:
    - superuser
    - PG_RETURN_VOID
    - errcode
    - ereport
    - errmsg
    - StopGeneratingPinnedObjectIds
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stop_making_pinned_objects(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_inheritance_children_extended
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parentrelId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: find_inheritance_children
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 0
    functionsReached:
    - find_inheritance_children_extended
    linkageType: ''
    returnType: List
    signature: 'List *

      find_inheritance_children(Oid parentrelId, LOCKMODE lockmode)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: has_subclass
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:102,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:109,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:112,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:114,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:117,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:119,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:122,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:139,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:144,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:149,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:150,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:152,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:167,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:169,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:182,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:186,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:191,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:193,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:202,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:214,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:221,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:221,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:224,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:230,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:233,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 53
    argCount: 5
    argNames:
    - parentrelId
    - omit_detached
    - lockmode
    - detached_exist
    - detached_xmin
    argTypes:
    - Oid
    - bool
    - LOCKMODE
    - bool*
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 82
    functionDepth: 6
    functionLinenumber: 82
    functionLinenumberEnd: 236
    functionName: find_inheritance_children_extended
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 1
    functionsReached:
    - repalloc
    - lappend_oid
    - table_close
    - has_subclass
    - elog
    - qsort
    - systable_endscan
    - pfree
    - table_open
    - ObjectIdGetDatum
    - UnlockRelationOid
    - XidInMVCCSnapshot
    - systable_beginscan
    - HeapTupleHeaderGetXmin
    - LockRelationOid
    - GETSTRUCT
    - SearchSysCacheExists1
    - ScanKeyInit
    - ActiveSnapshotSet
    - GetActiveSnapshot
    - TransactionIdFollows
    - palloc
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: "List *\nfind_inheritance_children_extended(Oid parentrelId, bool omit_detached,\n\t\t\t\t\t\t\t\t
      \  LOCKMODE lockmode, bool *detached_exist,\n\t\t\t\t\t\t\t\t   TransactionId
      *detached_xmin)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:269,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:283,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:284,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:288,1
    - Dst: find_inheritance_children
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:293,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:304,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:308,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:314,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:316,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:321,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:322,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:323,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:331,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - parentrelId
    - lockmode
    - numparents
    argTypes:
    - Oid
    - LOCKMODE
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 255
    functionDepth: 6
    functionLinenumber: 255
    functionLinenumberEnd: 336
    functionName: find_all_inheritors
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 2
    functionsReached:
    - lappend_int
    - hash_search
    - lfirst_int
    - list_free
    - hash_create
    - hash_destroy
    - list_nth_cell
    - list_make1_oid
    - list_length
    - lfirst_oid
    - lappend_oid
    - list_make1_int
    - find_inheritance_children
    linkageType: ''
    returnType: List
    signature: 'List *

      find_all_inheritors(Oid parentrelId, LOCKMODE lockmode, List **numparents)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:288,1
    - Dst: find_inheritance_children
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:293,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:304,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:308,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:314,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:316,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:321,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:322,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 286
    functionDepth: 6
    functionLinenumber: 286
    functionLinenumberEnd: 326
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 361
    functionsReached:
    - lappend_int
    - hash_search
    - lfirst_int
    - list_nth_cell
    - list_length
    - lfirst_oid
    - lappend_oid
    - find_inheritance_children
    linkageType: ''
    returnType: void
    signature: void foreach(l, rels_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:304,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:308,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:314,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:316,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:321,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:322,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 302
    functionDepth: 6
    functionLinenumber: 302
    functionLinenumberEnd: 325
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 361
    functionsReached:
    - lappend_int
    - hash_search
    - lfirst_int
    - list_nth_cell
    - list_length
    - lfirst_oid
    - lappend_oid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, currentchildren)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:361,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:361,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:362,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:363,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:365,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - relationId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 368
    functionName: has_subclass
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 2
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool has_subclass(Oid relationId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:385,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:386,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:387,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:388,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:390,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:390,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:391,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - relationId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 377
    functionDepth: 4
    functionLinenumber: 377
    functionLinenumberEnd: 395
    functionName: has_superclass
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool has_superclass(Oid relationId)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: typeOrDomainTypeRelid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:418,1
    - Dst: typeidTypeRelid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:421,1
    - Dst: has_subclass
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:426,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:432,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:435,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:445,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:456,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:464,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:466,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:469,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:471,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:474,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:476,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:487,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:490,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:497,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:499,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:500,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - subclassTypeId
    - superclassTypeId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 406
    functionDepth: 6
    functionLinenumber: 406
    functionLinenumberEnd: 503
    functionName: typeInheritsFrom
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 0
    functionsReached:
    - typeOrDomainTypeRelid
    - ScanKeyInit
    - systable_endscan
    - typeidTypeRelid
    - systable_beginscan
    - table_close
    - list_free
    - ObjectIdGetDatum
    - table_open
    - GETSTRUCT
    - list_make1_oid
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    - systable_getnext
    - has_subclass
    linkageType: ''
    returnType: bool
    signature: bool typeInheritsFrom(Oid subclassTypeId, Oid superclassTypeId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:445,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:456,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:464,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:466,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:469,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:471,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:474,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:476,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:487,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:490,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 443
    functionDepth: 6
    functionLinenumber: 443
    functionLinenumberEnd: 494
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 361
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - ObjectIdGetDatum
    - GETSTRUCT
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void foreach(queue_item, queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:516,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:521,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:522,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:523,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:524,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:526,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:528,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:528,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:530,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:532,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - relationId
    - parentOid
    - seqNumber
    argTypes:
    - Oid
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 508
    functionDepth: 7
    functionLinenumber: 508
    functionLinenumberEnd: 535
    functionName: StoreSingleInheritance
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 2
    functionsReached:
    - heap_freetuple
    - Int32GetDatum
    - RelationGetDescr
    - heap_form_tuple
    - table_close
    - table_open
    - memset
    - ObjectIdGetDatum
    - BoolGetDatum
    - CatalogTupleInsert
    linkageType: ''
    returnType: void
    signature: void StoreSingleInheritance(Oid relationId, Oid parentOid, int32 seqNumber)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:565,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:566,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:569,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:570,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:573,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:573,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:578,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:579,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:584,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:591,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:592,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:593,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:595,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:596,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:598,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:600,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:602,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:604,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:610,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:611,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 4
    argNames:
    - inhrelid
    - inhparent
    - expect_detach_pending
    - childname
    argTypes:
    - Oid
    - Oid
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 552
    functionDepth: 7
    functionLinenumber: 552
    functionLinenumberEnd: 614
    functionName: DeleteInheritsTuple
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 2
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - errcode
    - HeapTupleIsValid
    - ereport
    - table_open
    - CatalogTupleDelete
    - errhint
    - GETSTRUCT
    - errmsg
    - errdetail
    - OidIsValid
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: "bool DeleteInheritsTuple(Oid inhrelid, Oid inhparent, bool expect_detach_pending,\n\t\t\t\t\tconst
      char *childname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:633,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:634,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:637,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:638,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:641,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:641,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:646,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:649,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:650,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:655,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - partoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 620
    functionDepth: 4
    functionLinenumber: 620
    functionLinenumberEnd: 657
    functionName: PartitionHasPendingDetach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 0
    functionsReached:
    - elog
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool PartitionHasPendingDetach(Oid partoid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: trackDroppedObjectsNeeded
      Src: /src/postgres/src/backend/catalog/dependency.c:199,1
    - Dst: EventTriggerSupportsObject
      Src: /src/postgres/src/backend/catalog/dependency.c:215,1
    - Dst: EventTriggerSQLDropAddObject
      Src: /src/postgres/src/backend/catalog/dependency.c:217,1
    - Dst: deleteOneObject
      Src: /src/postgres/src/backend/catalog/dependency.c:235,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 3
    argNames:
    - targetObjects
    - depRel
    - flags
    argTypes:
    - ObjectAddresses*
    - Relation*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 237
    functionName: deleteObjectsInList
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 0
    functionsReached:
    - trackDroppedObjectsNeeded
    - deleteOneObject
    - EventTriggerSupportsObject
    - EventTriggerSQLDropAddObject
    linkageType: ''
    returnType: void
    signature: "void deleteObjectsInList(ObjectAddresses *targetObjects, Relation
      *depRel,\n\t\t\t\t\tint flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/dependency.c:289,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:295,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:301,1
    - Dst: findDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:303,1
    - Dst: reportDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:314,1
    - Dst: deleteObjectsInList
      Src: /src/postgres/src/backend/catalog/dependency.c:320,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:323,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - object
    - behavior
    - flags
    argTypes:
    - ObjectAddress*
    - DropBehavior
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 278
    functionDepth: 3
    functionLinenumber: 278
    functionLinenumberEnd: 326
    functionName: performDeletion
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 3
    functionsReached:
    - table_open
    - AcquireDeletionLock
    - findDependentObjects
    - new_object_addresses
    - reportDependentObjects
    - free_object_addresses
    - deleteObjectsInList
    - table_close
    linkageType: ''
    returnType: void
    signature: "void performDeletion(const ObjectAddress *object,\n\t\t\t\tDropBehavior
      behavior, int flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:344,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/dependency.c:346,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:348,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:354,1
    - Dst: findDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:356,1
    - Dst: reportDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:367,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:373,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - object
    - behavior
    - flags
    argTypes:
    - ObjectAddress*
    - DropBehavior
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 337
    functionDepth: 3
    functionLinenumber: 337
    functionLinenumberEnd: 376
    functionName: performDeletionCheck
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 0
    functionsReached:
    - Assert
    - table_open
    - AcquireDeletionLock
    - findDependentObjects
    - new_object_addresses
    - reportDependentObjects
    - free_object_addresses
    - table_close
    linkageType: ''
    returnType: void
    signature: "void performDeletionCheck(const ObjectAddress *object,\n\t\t\t\t\t
      DropBehavior behavior, int flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/dependency.c:403,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:413,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:423,1
    - Dst: findDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:425,1
    - Dst: reportDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:440,1
    - Dst: deleteObjectsInList
      Src: /src/postgres/src/backend/catalog/dependency.c:446,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:449,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - objects
    - behavior
    - flags
    argTypes:
    - ObjectAddresses*
    - DropBehavior
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 452
    functionName: performMultipleDeletions
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - table_open
    - AcquireDeletionLock
    - findDependentObjects
    - new_object_addresses
    - reportDependentObjects
    - free_object_addresses
    - deleteObjectsInList
    - table_close
    linkageType: ''
    returnType: void
    signature: "void performMultipleDeletions(const ObjectAddresses *objects,\n\t\t\t\t\t\t
      DropBehavior behavior, int flags)"
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: stack_address_present_add_flags
      Src: /src/postgres/src/backend/catalog/dependency.c:525,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/catalog/dependency.c:532,1
    - Dst: object_address_present_add_flags
      Src: /src/postgres/src/backend/catalog/dependency.c:543,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/dependency.c:550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:551,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:553,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:554,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:566,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:569,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:570,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:573,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:577,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:580,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:589,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/dependency.c:593,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/dependency.c:594,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:596,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:596,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/dependency.c:598,1
    - Dst: object_address_present
      Src: /src/postgres/src/backend/catalog/dependency.c:673,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:675,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:677,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:691,1
    - Dst: stack_address_present_add_flags
      Src: /src/postgres/src/backend/catalog/dependency.c:705,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:718,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:719,1
    - Dst: systable_recheck_tuple
      Src: /src/postgres/src/backend/catalog/dependency.c:727,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:729,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:730,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:739,1
    - Dst: findDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:752,1
    - Dst: object_address_present_add_flags
      Src: /src/postgres/src/backend/catalog/dependency.c:776,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:778,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:779,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:780,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:820,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:821,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:826,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:834,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:838,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:839,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:841,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:843,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:845,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:846,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/dependency.c:847,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/dependency.c:859,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:862,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:865,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:866,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:869,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:872,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:875,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:881,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:884,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:884,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/dependency.c:886,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/catalog/dependency.c:907,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:908,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:909,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:910,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:911,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:912,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:917,1
    - Dst: systable_recheck_tuple
      Src: /src/postgres/src/backend/catalog/dependency.c:926,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:929,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:958,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:959,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/dependency.c:970,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:979,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/dependency.c:987,1
    - Dst: findDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:1003,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:1012,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/dependency.c:1028,1
    - Dst: add_exact_object_address_extra
      Src: /src/postgres/src/backend/catalog/dependency.c:1029,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 154
    argCount: 7
    argNames:
    - object
    - objflags
    - flags
    - stack
    - targetObjects
    - pendingObjects
    - depRel
    argTypes:
    - ObjectAddress*
    - int
    - int
    - ObjectAddressStack*
    - ObjectAddresses*
    - ObjectAddresses*
    - Relation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 487
    functionDepth: 5
    functionLinenumber: 487
    functionLinenumberEnd: 1030
    functionName: findDependentObjects
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 4
    functionsReached:
    - errcode
    - check_stack_depth
    - palloc_array
    - repalloc
    - AcquireDeletionLock
    - errhint
    - object_address_present_add_flags
    - elog
    - qsort
    - systable_endscan
    - ReleaseDeletionLock
    - Int32GetDatum
    - HeapTupleIsValid
    - pfree
    - IsSharedRelation
    - systable_recheck_tuple
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - systable_beginscan
    - ereport
    - object_address_present
    - add_exact_object_address_extra
    - memset
    - GETSTRUCT
    - getObjectDescription
    - IsPinnedObject
    - ScanKeyInit
    - findDependentObjects
    - stack_address_present_add_flags
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: "void findDependentObjects(const ObjectAddress *object,\n\t\t\t\t\t
      int objflags,\n\t\t\t\t\t int flags,\n\t\t\t\t\t ObjectAddressStack *stack,\n\t\t\t\t\t
      ObjectAddresses *targetObjects,\n\t\t\t\t\t const ObjectAddresses *pendingObjects,\n\t\t\t\t\t
      Relation *depRel)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:1077,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1080,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1081,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1082,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:1083,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/dependency.c:1084,1
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/catalog/dependency.c:1094,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1104,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1105,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:1125,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1147,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1148,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:1153,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/dependency.c:1162,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1163,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/dependency.c:1163,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/dependency.c:1171,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1172,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/dependency.c:1172,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:1174,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/dependency.c:1186,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1187,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/dependency.c:1187,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/dependency.c:1195,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1196,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/dependency.c:1196,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:1200,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1204,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/catalog/dependency.c:1204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1214,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1216,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:1217,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1218,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/catalog/dependency.c:1219,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/dependency.c:1220,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1222,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1224,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1225,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/catalog/dependency.c:1226,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/dependency.c:1227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1231,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/catalog/dependency.c:1232,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1236,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/catalog/dependency.c:1237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1242,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1243,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:1246,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:1247,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 66
    argCount: 4
    argNames:
    - targetObjects
    - behavior
    - flags
    - origObject
    argTypes:
    - ObjectAddresses*
    - DropBehavior
    - int
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1045
    functionDepth: 5
    functionLinenumber: 1045
    functionLinenumberEnd: 1248
    functionName: reportDependentObjects
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 3
    functionsReached:
    - errmsg_plural
    - errdetail_log
    - errmsg_internal
    - _
    - errcode
    - pfree
    - appendStringInfo
    - initStringInfo
    - ereport
    - ngettext
    - errhint
    - message_level_is_interesting
    - errmsg
    - getObjectDescription
    - errdetail_internal
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void reportDependentObjects(const ObjectAddresses *targetObjects,\n\t\t\t\t\t
      \  DropBehavior behavior,\n\t\t\t\t\t   int flags,\n\t\t\t\t\t   const ObjectAddress
      *origObject)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:1261,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/dependency.c:1263,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/dependency.c:1270,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1270,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1271,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1272,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/dependency.c:1273,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/dependency.c:1275,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/dependency.c:1277,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:1284,1
    - Dst: get_object_attnum_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:1285,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1287,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:1289,1
    - Dst: get_object_oid_index
      Src: /src/postgres/src/backend/catalog/dependency.c:1289,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:1293,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1294,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1295,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/dependency.c:1296,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/dependency.c:1298,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:1300,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:1303,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1254
    functionDepth: 7
    functionLinenumber: 1254
    functionLinenumberEnd: 1304
    functionName: DropObjectById
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - ScanKeyInit
    - get_object_oid_index
    - systable_endscan
    - get_object_attnum_oid
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - get_object_class_descr
    - CatalogTupleDelete
    - ReleaseSysCache
    - get_object_catcache_oid
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void DropObjectById(const ObjectAddress *object)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InvokeObjectDropHookArg
      Src: /src/postgres/src/backend/catalog/dependency.c:1320,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:1329,1
    - Dst: doDeletion
      Src: /src/postgres/src/backend/catalog/dependency.c:1340,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/dependency.c:1346,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:1355,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1358,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:1359,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1362,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:1365,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1368,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:1374,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1377,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:1377,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/dependency.c:1379,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:1382,1
    - Dst: deleteSharedDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/dependency.c:1388,1
    - Dst: DeleteComments
      Src: /src/postgres/src/backend/catalog/dependency.c:1399,1
    - Dst: DeleteSecurityLabel
      Src: /src/postgres/src/backend/catalog/dependency.c:1400,1
    - Dst: DeleteInitPrivs
      Src: /src/postgres/src/backend/catalog/dependency.c:1401,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/dependency.c:1407,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - object
    - depRel
    - flags
    argTypes:
    - ObjectAddress*
    - Relation*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1311
    functionDepth: 7
    functionLinenumber: 1311
    functionLinenumberEnd: 1412
    functionName: deleteOneObject
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - DeleteComments
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - Int32GetDatum
    - HeapTupleIsValid
    - CommandCounterIncrement
    - table_open
    - CatalogTupleDelete
    - DeleteInitPrivs
    - doDeletion
    - InvokeObjectDropHookArg
    - ObjectIdGetDatum
    - table_close
    - DeleteSecurityLabel
    - systable_getnext
    - deleteSharedDependencyRecordsFor
    linkageType: ''
    returnType: void
    signature: void deleteOneObject(const ObjectAddress *object, Relation *depRel,
      int flags)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/dependency.c:1424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:1432,1
    - Dst: index_drop
      Src: /src/postgres/src/backend/catalog/dependency.c:1433,1
    - Dst: RemoveAttributeById
      Src: /src/postgres/src/backend/catalog/dependency.c:1438,1
    - Dst: heap_drop_with_catalog
      Src: /src/postgres/src/backend/catalog/dependency.c:1441,1
    - Dst: DeleteSequenceTuple
      Src: /src/postgres/src/backend/catalog/dependency.c:1449,1
    - Dst: RemoveFunctionById
      Src: /src/postgres/src/backend/catalog/dependency.c:1454,1
    - Dst: RemoveTypeById
      Src: /src/postgres/src/backend/catalog/dependency.c:1458,1
    - Dst: RemoveConstraintById
      Src: /src/postgres/src/backend/catalog/dependency.c:1462,1
    - Dst: RemoveAttrDefaultById
      Src: /src/postgres/src/backend/catalog/dependency.c:1466,1
    - Dst: LargeObjectDrop
      Src: /src/postgres/src/backend/catalog/dependency.c:1470,1
    - Dst: RemoveOperatorById
      Src: /src/postgres/src/backend/catalog/dependency.c:1474,1
    - Dst: RemoveRewriteRuleById
      Src: /src/postgres/src/backend/catalog/dependency.c:1478,1
    - Dst: RemoveTriggerById
      Src: /src/postgres/src/backend/catalog/dependency.c:1482,1
    - Dst: RemoveStatisticsById
      Src: /src/postgres/src/backend/catalog/dependency.c:1486,1
    - Dst: RemoveTSConfigurationById
      Src: /src/postgres/src/backend/catalog/dependency.c:1490,1
    - Dst: RemoveExtensionById
      Src: /src/postgres/src/backend/catalog/dependency.c:1494,1
    - Dst: RemovePolicyById
      Src: /src/postgres/src/backend/catalog/dependency.c:1498,1
    - Dst: RemovePublicationSchemaById
      Src: /src/postgres/src/backend/catalog/dependency.c:1502,1
    - Dst: RemovePublicationRelById
      Src: /src/postgres/src/backend/catalog/dependency.c:1506,1
    - Dst: RemovePublicationById
      Src: /src/postgres/src/backend/catalog/dependency.c:1510,1
    - Dst: DropObjectById
      Src: /src/postgres/src/backend/catalog/dependency.c:1538,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1549,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1553,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 97
    argCount: 2
    argNames:
    - object
    - flags
    argTypes:
    - ObjectAddress*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1417
    functionDepth: 8
    functionLinenumber: 1417
    functionLinenumberEnd: 1555
    functionName: doDeletion
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - RemoveConstraintById
    - RemoveTriggerById
    - index_drop
    - RemoveTSConfigurationById
    - RemovePublicationSchemaById
    - RemovePublicationById
    - elog
    - RemoveTypeById
    - Assert
    - RemoveExtensionById
    - get_rel_relkind
    - RemoveStatisticsById
    - RemoveRewriteRuleById
    - DeleteSequenceTuple
    - RemovePublicationRelById
    - RemoveAttrDefaultById
    - RemoveFunctionById
    - RemoveAttributeById
    - LargeObjectDrop
    - RemoveOperatorById
    - DropObjectById
    - heap_drop_with_catalog
    - RemovePolicyById
    linkageType: ''
    returnType: void
    signature: void doDeletion(const ObjectAddress *object, int flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/dependency.c:1578,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/dependency.c:1580,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/dependency.c:1583,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/dependency.c:1588,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - object
    - flags
    argTypes:
    - ObjectAddress*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1566
    functionDepth: 1
    functionLinenumber: 1566
    functionLinenumberEnd: 1591
    functionName: AcquireDeletionLock
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 6
    functionsReached:
    - LockDatabaseObject
    - LockRelationOid
    - LockSharedObject
    linkageType: ''
    returnType: void
    signature: void AcquireDeletionLock(const ObjectAddress *object, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/catalog/dependency.c:1602,1
    - Dst: UnlockDatabaseObject
      Src: /src/postgres/src/backend/catalog/dependency.c:1605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1598
    functionDepth: 1
    functionLinenumber: 1598
    functionLinenumberEnd: 1607
    functionName: ReleaseDeletionLock
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 3
    functionsReached:
    - UnlockDatabaseObject
    - UnlockRelationOid
    linkageType: ''
    returnType: void
    signature: void ReleaseDeletionLock(const ObjectAddress *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1630,1
    - Dst: collectDependenciesOfExpr
      Src: /src/postgres/src/backend/catalog/dependency.c:1633,1
    - Dst: eliminate_duplicate_dependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1636,1
    - Dst: recordMultipleDependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1639,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - depender
    - expr
    - rtable
    - behavior
    argTypes:
    - ObjectAddress*
    - Node*
    - List*
    - DependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1623
    functionDepth: 4
    functionLinenumber: 1623
    functionLinenumberEnd: 1644
    functionName: recordDependencyOnExpr
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - recordMultipleDependencies
    - new_object_addresses
    - free_object_addresses
    - eliminate_duplicate_dependencies
    - collectDependenciesOfExpr
    linkageType: ''
    returnType: void
    signature: "void recordDependencyOnExpr(const ObjectAddress *depender,\n\t\t\t\t\t
      \  Node *expr, List *rtable,\n\t\t\t\t\t   DependencyType behavior)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/dependency.c:1675,1
    - Dst: find_expr_references_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:1678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - addrs
    - expr
    - rtable
    argTypes:
    - ObjectAddresses*
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1666
    functionDepth: 1
    functionLinenumber: 1666
    functionLinenumberEnd: 1679
    functionName: collectDependenciesOfExpr
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 2
    functionsReached:
    - list_make1
    - find_expr_references_walker
    linkageType: ''
    returnType: void
    signature: "void collectDependenciesOfExpr(ObjectAddresses *addrs,\n\t\t\t\t\t\t
      \ Node *expr, List *rtable)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1708,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/dependency.c:1717,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/dependency.c:1717,1
    - Dst: find_expr_references_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:1720,1
    - Dst: eliminate_duplicate_dependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1723,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1734,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1746,1
    - Dst: recordMultipleDependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1760,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/dependency.c:1772,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1776,1
    - Dst: recordMultipleDependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1780,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1784,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 6
    argNames:
    - depender
    - expr
    - relId
    - behavior
    - self_behavior
    - reverse_self
    argTypes:
    - ObjectAddress*
    - Node*
    - Oid
    - DependencyType
    - DependencyType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1785
      start: 1698
    functionDepth: 4
    functionLinenumber: 1698
    functionLinenumberEnd: 1785
    functionName: recordDependencyOnSingleRelExpr
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 4
    functionsReached:
    - find_expr_references_walker
    - recordDependencyOn
    - add_exact_object_address
    - recordMultipleDependencies
    - new_object_addresses
    - free_object_addresses
    - list_make1
    - eliminate_duplicate_dependencies
    linkageType: ''
    returnType: void
    signature: "void recordDependencyOnSingleRelExpr(const ObjectAddress *depender,\n\t\t\t\t\t\t\t\tNode
      *expr, Oid relId,\n\t\t\t\t\t\t\t\tDependencyType behavior,\n\t\t\t\t\t\t\t\tDependencyType
      self_behavior,\n\t\t\t\t\t\t\t\tbool reverse_self)"
  - BBCount: 91
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1806,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/dependency.c:1813,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1814,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/dependency.c:1815,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/dependency.c:1816,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1817,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/catalog/dependency.c:1818,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1836,1
    - Dst: process_function_rte_ref
      Src: /src/postgres/src/backend/catalog/dependency.c:1843,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1856,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1862,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1871,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1873,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1888,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1889,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1890,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1891,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1896,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1897,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1898,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1899,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1903,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1904,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1905,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1906,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1910,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1911,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1912,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1913,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1917,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1918,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1919,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1920,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1924,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1925,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1926,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1927,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1931,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1932,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1933,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1934,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1939,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1940,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1941,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1942,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1951,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1952,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1953,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1962,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1963,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1964,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1971,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1976,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1979,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1981,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1984,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1988,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1992,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1996,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2000,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2004,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2008,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2012,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2016,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2020,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2024,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2028,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2032,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2036,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2040,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2052,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2056,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:2059,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2061,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/catalog/dependency.c:2064,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/dependency.c:2064,1
    - Dst: get_typ_typrelid
      Src: /src/postgres/src/backend/catalog/dependency.c:2065,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2076,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2077,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2080,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2083,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2085,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2088,1
    - Dst: get_typ_typrelid
      Src: /src/postgres/src/backend/catalog/dependency.c:2091,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2094,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2098,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2099,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/catalog/dependency.c:2099,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2103,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2106,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2111,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2114,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2116,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2119,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2124,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2127,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2129,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2132,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2137,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2140,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2142,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2146,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2151,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2154,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2158,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2161,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2165,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2168,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2173,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2176,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2184,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2187,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2192,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2194,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2194,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2197,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2199,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2199,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2204,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2208,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2211,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2215,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2218,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2222,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2223,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2227,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2231,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2233,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2234,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2238,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2242,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2243,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2245,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2246,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2248,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2250,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2254,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2258,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2259,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2261,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2262,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2264,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2265,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2269,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2292,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/dependency.c:2294,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2300,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/dependency.c:2318,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/dependency.c:2321,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2323,1
    - Dst: find_expr_references_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:2324,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/catalog/dependency.c:2326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:2337,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:2338,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:2339,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/dependency.c:2361,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:2362,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/catalog/dependency.c:2364,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2367,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/dependency.c:2369,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2373,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2382,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2384,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2384,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/dependency.c:2389,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:2390,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/catalog/dependency.c:2395,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2398,1
    - Dst: find_expr_references_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:2403,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2406,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2416,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2418,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2418,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2421,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2423,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2425,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2426,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2430,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2438,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2440,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2440,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2443,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2445,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2447,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2448,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2452,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2456,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:2461,1
    CyclomaticComplexity: 104
    EdgeCount: 104
    ICount: 262
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - find_expr_references_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2463
      start: 1800
    functionDepth: 6
    functionLinenumber: 1800
    functionLinenumberEnd: 2463
    functionName: find_expr_references_walker
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 3
    functionsReached:
    - find_expr_references_walker
    - errcode
    - exprType
    - lfirst_int
    - getBaseType
    - process_function_rte_ref
    - lfirst_oid
    - elog
    - foreach
    - DatumGetObjectId
    - errmsg
    - list_delete_first
    - OidIsValid
    - list_length
    - ObjectIdGetDatum
    - add_object_address
    - rt_fetch
    - ereport
    - query_tree_walker
    - lfirst
    - expression_tree_walker
    - SearchSysCacheExists1
    - get_typ_typrelid
    - list_nth
    - IsA
    - lcons
    linkageType: ''
    returnType: bool
    signature: "bool find_expr_references_walker(Node *node,\n\t\t\t\t\t\t\tfind_expr_references_context
      *context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2482,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/dependency.c:2484,1
    - Dst: get_expr_result_tupdesc
      Src: /src/postgres/src/backend/catalog/dependency.c:2495,1
    - Dst: get_typ_typrelid
      Src: /src/postgres/src/backend/catalog/dependency.c:2502,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:2504,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2505,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2506,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:2522,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:2523,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:2524,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - rte
    - attnum
    - context
    argTypes:
    - RangeTblEntry*
    - AttrNumber
    - find_expr_references_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2526
      start: 2469
    functionDepth: 1
    functionLinenumber: 2469
    functionLinenumberEnd: 2526
    functionName: process_function_rte_ref
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - get_typ_typrelid
    - add_object_address
    - foreach
    - errcode
    - Assert
    - ereport
    - lfirst
    - errmsg
    - OidIsValid
    - get_expr_result_tupdesc
    linkageType: ''
    returnType: void
    signature: "void process_function_rte_ref(RangeTblEntry *rte, AttrNumber attnum,\n\t\t\t\t\t\t
      find_expr_references_context *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_object_namespace
      Src: /src/postgres/src/backend/catalog/dependency.c:2556,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2562,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/dependency.c:2562,1
    - Dst: isTempNamespace
      Src: /src/postgres/src/backend/catalog/dependency.c:2563,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - addrs
    - local_temp_okay
    - foundobj
    argTypes:
    - ObjectAddresses*
    - bool
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2543
    functionDepth: 2
    functionLinenumber: 2543
    functionLinenumberEnd: 2570
    functionName: find_temp_object
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - OidIsValid
    - isAnyTempNamespace
    - get_object_namespace
    - isTempNamespace
    linkageType: ''
    returnType: bool
    signature: "bool find_temp_object(const ObjectAddresses *addrs, bool local_temp_okay,\n\t\t\t\t
      ObjectAddress *foundobj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:2584,1
    - Dst: collectDependenciesOfExpr
      Src: /src/postgres/src/backend/catalog/dependency.c:2587,1
    - Dst: find_temp_object
      Src: /src/postgres/src/backend/catalog/dependency.c:2590,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:2592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - query
    - temp_object
    argTypes:
    - Query*
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2595
      start: 2578
    functionDepth: 3
    functionLinenumber: 2578
    functionLinenumberEnd: 2595
    functionName: query_uses_temp_object
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 0
    functionsReached:
    - find_temp_object
    - new_object_addresses
    - free_object_addresses
    - collectDependenciesOfExpr
    linkageType: ''
    returnType: bool
    signature: bool query_uses_temp_object(Query *query, ObjectAddress *temp_object)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:2612,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/dependency.c:2618,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - addrs
    argTypes:
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2600
    functionDepth: 1
    functionLinenumber: 2600
    functionLinenumberEnd: 2655
    functionName: eliminate_duplicate_dependencies
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 2
    functionsReached:
    - Assert
    - qsort
    linkageType: ''
    returnType: void
    signature: void eliminate_duplicate_dependencies(ObjectAddresses *addrs)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2697
      start: 2660
    functionDepth: 0
    functionLinenumber: 2660
    functionLinenumberEnd: 2697
    functionName: object_address_comparator
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int object_address_comparator(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/dependency.c:2709,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/dependency.c:2713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2717
      start: 2704
    functionDepth: 0
    functionLinenumber: 2704
    functionLinenumberEnd: 2717
    functionName: new_object_addresses
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 15
    functionsReached:
    - palloc_array
    - palloc_object
    linkageType: ''
    returnType: ObjectAddresses
    signature: 'ObjectAddresses *

      new_object_addresses(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/dependency.c:2733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:2734,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - classId
    - objectId
    - subId
    - addrs
    argTypes:
    - Oid
    - Oid
    - int32
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2742
      start: 2722
    functionDepth: 1
    functionLinenumber: 2722
    functionLinenumberEnd: 2742
    functionName: add_object_address
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 2
    functionsReached:
    - Assert
    - repalloc
    linkageType: ''
    returnType: void
    signature: "void add_object_address(Oid classId, Oid objectId, int32 subId,\n\t\t\t\t
      \  ObjectAddresses *addrs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/dependency.c:2760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:2761,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - object
    - addrs
    argTypes:
    - ObjectAddress*
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2767
      start: 2749
    functionDepth: 1
    functionLinenumber: 2749
    functionLinenumberEnd: 2767
    functionName: add_exact_object_address
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 13
    functionsReached:
    - Assert
    - repalloc
    linkageType: ''
    returnType: void
    signature: "void add_exact_object_address(const ObjectAddress *object,\n\t\t\t\t\t\t
      ObjectAddresses *addrs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/dependency.c:2785,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/dependency.c:2792,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/dependency.c:2794,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - object
    - extra
    - addrs
    argTypes:
    - ObjectAddress*
    - ObjectAddressExtra*
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2802
      start: 2774
    functionDepth: 0
    functionLinenumber: 2774
    functionLinenumberEnd: 2802
    functionName: add_exact_object_address_extra
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - repalloc
    - palloc
    linkageType: ''
    returnType: void
    signature: "void add_exact_object_address_extra(const ObjectAddress *object,\n\t\t\t\t\t\t\t
      \  const ObjectAddressExtra *extra,\n\t\t\t\t\t\t\t   ObjectAddresses *addrs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - object
    - addrs
    argTypes:
    - ObjectAddress*
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2829
      start: 2809
    functionDepth: 0
    functionLinenumber: 2809
    functionLinenumberEnd: 2829
    functionName: object_address_present
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool object_address_present(const ObjectAddress *object,\n\t\t\t\t\t
      \  const ObjectAddresses *addrs)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - object
    - flags
    - addrs
    argTypes:
    - ObjectAddress*
    - int
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2903
      start: 2835
    functionDepth: 0
    functionLinenumber: 2835
    functionLinenumberEnd: 2903
    functionName: object_address_present_add_flags
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool object_address_present_add_flags(const ObjectAddress *object,\n\t\t\t\t\t\t\t\t
      int flags,\n\t\t\t\t\t\t\t\t ObjectAddresses *addrs)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - object
    - flags
    - stack
    argTypes:
    - ObjectAddress*
    - int
    - ObjectAddressStack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2952
      start: 2908
    functionDepth: 0
    functionLinenumber: 2908
    functionLinenumberEnd: 2952
    functionName: stack_address_present_add_flags
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool stack_address_present_add_flags(const ObjectAddress *object,\n\t\t\t\t\t\t\t\tint
      flags,\n\t\t\t\t\t\t\t\tObjectAddressStack *stack)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eliminate_duplicate_dependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:2963,1
    - Dst: recordMultipleDependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:2964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - depender
    - referenced
    - behavior
    argTypes:
    - ObjectAddress*
    - ObjectAddresses*
    - DependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2967
      start: 2958
    functionDepth: 4
    functionLinenumber: 2958
    functionLinenumberEnd: 2967
    functionName: record_object_address_dependencies
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 8
    functionsReached:
    - recordMultipleDependencies
    - eliminate_duplicate_dependencies
    linkageType: ''
    returnType: void
    signature: "void record_object_address_dependencies(const ObjectAddress *depender,\n\t\t\t\t\t\t\t\t
      \  ObjectAddresses *referenced,\n\t\t\t\t\t\t\t\t   DependencyType behavior)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/dependency.c:2981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - addrs
    argTypes:
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2984
      start: 2977
    functionDepth: 1
    functionLinenumber: 2977
    functionLinenumberEnd: 2984
    functionName: sort_object_addresses
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - qsort
    linkageType: ''
    returnType: void
    signature: void sort_object_addresses(ObjectAddresses *addrs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:2992,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:2994,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:2995,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - addrs
    argTypes:
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2996
      start: 2989
    functionDepth: 0
    functionLinenumber: 2989
    functionLinenumberEnd: 2996
    functionName: free_object_addresses
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 15
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void free_object_addresses(ObjectAddresses *addrs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/dependency.c:3010,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:3012,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:3015,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:3016,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:3019,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:3022,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:3025,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:3031,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:3034,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:3034,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/dependency.c:3035,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:3037,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:3039,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3040
      start: 3001
    functionDepth: 7
    functionLinenumber: 3001
    functionLinenumberEnd: 3040
    functionName: DeleteInitPrivs
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - Int32GetDatum
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void DeleteInitPrivs(const ObjectAddress *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:38,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/objectaccess.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - classId
    - objectId
    - subId
    - is_internal
    argTypes:
    - Oid
    - Oid
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 46
    functionName: RunObjectPostCreateHook
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: void
    signature: "void RunObjectPostCreateHook(Oid classId, Oid objectId, int subId,\n\t\t\t\t\t\tbool
      is_internal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:60,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/objectaccess.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - classId
    - objectId
    - subId
    - dropflags
    argTypes:
    - Oid
    - Oid
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 68
    functionName: RunObjectDropHook
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: void
    signature: "void RunObjectDropHook(Oid classId, Oid objectId, int subId,\n\t\t\t\t
      \ int dropflags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - objectId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 84
    functionName: RunObjectTruncateHook
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void RunObjectTruncateHook(Oid objectId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:98,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/objectaccess.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - classId
    - objectId
    - subId
    - auxiliaryId
    - is_internal
    argTypes:
    - Oid
    - Oid
    - int
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 107
    functionName: RunObjectPostAlterHook
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: void
    signature: "void RunObjectPostAlterHook(Oid classId, Oid objectId, int subId,\n\t\t\t\t\t
      \  Oid auxiliaryId, bool is_internal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:120,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/objectaccess.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - objectId
    - ereport_on_violation
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 131
    functionName: RunNamespaceSearchHook
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: bool
    signature: bool RunNamespaceSearchHook(Oid objectId, bool ereport_on_violation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - objectId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 147
    functionName: RunFunctionExecuteHook
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void RunFunctionExecuteHook(Oid objectId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:164,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/objectaccess.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - classId
    - objectName
    - subId
    - is_internal
    argTypes:
    - Oid
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 172
    functionName: RunObjectPostCreateHookStr
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: void
    signature: "void RunObjectPostCreateHookStr(Oid classId, const char *objectName,
      int subId,\n\t\t\t\t\t\t   bool is_internal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:186,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/objectaccess.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - classId
    - objectName
    - subId
    - dropflags
    argTypes:
    - Oid
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 194
    functionName: RunObjectDropHookStr
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: void
    signature: "void RunObjectDropHookStr(Oid classId, const char *objectName, int
      subId,\n\t\t\t\t\t int dropflags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - objectName
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 210
    functionName: RunObjectTruncateHookStr
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void RunObjectTruncateHookStr(const char *objectName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:224,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/objectaccess.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - classId
    - objectName
    - subId
    - auxiliaryId
    - is_internal
    argTypes:
    - Oid
    - char*
    - int
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: RunObjectPostAlterHookStr
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: void
    signature: "void RunObjectPostAlterHookStr(Oid classId, const char *objectName,
      int subId,\n\t\t\t\t\t\t  Oid auxiliaryId, bool is_internal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:246,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/objectaccess.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - objectName
    - ereport_on_violation
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 257
    functionName: RunNamespaceSearchHookStr
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    linkageType: ''
    returnType: bool
    signature: bool RunNamespaceSearchHookStr(const char *objectName, bool ereport_on_violation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaccess.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - objectName
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 273
    functionName: RunFunctionExecuteHookStr
    functionSourceFile: /src/postgres/src/backend/catalog/objectaccess.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void RunFunctionExecuteHookStr(const char *objectName)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:55,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:59,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:59,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:64,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:65,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:65,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:70,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:70,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:72,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:72,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - publications
    - dest
    - quote_literal
    argTypes:
    - List*
    - StringInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 77
    functionName: GetPublicationsStr
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - _
    - Assert
    - appendStringInfo
    - appendStringInfoString
    - lfirst
    - quote_literal_cstr
    - strVal
    linkageType: ''
    returnType: void
    signature: void GetPublicationsStr(List *publications, StringInfo dest, bool quote_literal)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:59,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:59,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:64,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:65,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:65,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:70,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:70,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:72,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:72,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 76
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 363
    functionsReached:
    - _
    - appendStringInfo
    - appendStringInfoString
    - lfirst
    - quote_literal_cstr
    - strVal
    linkageType: ''
    returnType: void
    signature: void foreach(lc, publications)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:99,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:101,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:101,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:103,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:108,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:111,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:113,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:115,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:117,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:122,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:122,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:139,1
    - Dst: GetForeignServer
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:144,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:154,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:155,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:156,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:157,1
    - Dst: ForeignServerConnectionString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:161,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:166,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:169,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:174,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:179,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:179,1
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:179,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:184,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:187,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:190,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:193,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:196,1
    - Dst: textarray_to_stringlist
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:199,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:199,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:202,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:205,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:208,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:211,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:214,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:216,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:218,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 62
    argCount: 4
    argNames:
    - subid
    - missing_ok
    - conninfo_needed
    - conninfo_aclcheck
    argTypes:
    - Oid
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 221
    functionName: GetSubscription
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - errcode
    - pstrdup
    - object_aclcheck
    - textarray_to_stringlist
    - GetUserNameFromId
    - NameStr
    - SearchSysCache1
    - elog
    - superuser_arg
    - Assert
    - HeapTupleIsValid
    - ReleaseSysCache
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - TextDatumGetCString
    - GetForeignServer
    - palloc0_object
    - ereport
    - GETSTRUCT
    - AllocSetContextCreate
    - SysCacheGetAttrNotNull
    - DatumGetArrayTypeP
    - ForeignServerConnectionString
    - MemoryContextSwitchTo
    - DatumGetName
    - SysCacheGetAttr
    linkageType: ''
    returnType: Subscription
    signature: "Subscription *\nGetSubscription(Oid subid, bool missing_ok, bool conninfo_needed,\n\t\t\t\tbool
      conninfo_aclcheck)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:236,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:238,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:241,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:243,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:246,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:246,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:249,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - dbid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 227
    functionDepth: 4
    functionLinenumber: 227
    functionLinenumberEnd: 254
    functionName: CountDBSubscriptions
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: int
    signature: int CountDBSubscriptions(Oid dbid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:269,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:270,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:270,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:272,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:273,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:275,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:278,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:279,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:280,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:283,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:287,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:287,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:289,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:290,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 259
    functionDepth: 7
    functionLinenumber: 259
    functionLinenumberEnd: 293
    functionName: DisableSubscription
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - elog
    - heap_freetuple
    - HeapTupleIsValid
    - RelationGetDescr
    - table_close
    - CatalogTupleUpdate
    - LockSharedObject
    - table_open
    - SearchSysCacheCopy1
    - memset
    - ObjectIdGetDatum
    - BoolGetDatum
    - heap_modify_tuple
    linkageType: ''
    returnType: void
    signature: void DisableSubscription(Oid subid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:308,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:314,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:314,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - textarray
    argTypes:
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 300
    functionDepth: 6
    functionLinenumber: 300
    functionLinenumberEnd: 317
    functionName: textarray_to_stringlist
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 1
    functionsReached:
    - deconstruct_array_builtin
    - makeString
    - TextDatumGetCString
    - lappend
    linkageType: ''
    returnType: List
    signature: 'List *

      textarray_to_stringlist(ArrayType *textarray)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:335,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:337,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:340,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:341,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:342,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:343,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:344,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:348,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:349,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:350,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:351,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:352,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:353,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:354,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:358,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:358,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:361,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:363,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:368,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:372,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 5
    argNames:
    - subid
    - relid
    - state
    - sublsn
    - retain_lock
    argTypes:
    - Oid
    - Oid
    - char
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 326
    functionDepth: 7
    functionLinenumber: 326
    functionLinenumberEnd: 375
    functionName: AddSubscriptionRelState
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - heap_freetuple
    - HeapTupleIsValid
    - RelationGetDescr
    - heap_form_tuple
    - LockSharedObject
    - table_open
    - memset
    - SearchSysCacheCopy2
    - LSNGetDatum
    - UnlockSharedObject
    - CharGetDatum
    - ObjectIdGetDatum
    - table_close
    - CatalogTupleInsert
    linkageType: ''
    returnType: void
    signature: "void AddSubscriptionRelState(Oid subid, Oid relid, char state,\n\t\t\t\t\t\tXLogRecPtr
      sublsn, bool retain_lock)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:395,1
    - Dst: CheckRelationOidLockedByMe
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:395,1
    - Dst: SET_LOCKTAG_OBJECT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:397,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:398,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:398,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:401,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:405,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:406,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:410,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:411,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:412,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:413,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:414,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:418,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:419,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:420,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:423,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:426,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:427,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:431,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:431,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:435,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 5
    argNames:
    - subid
    - relid
    - state
    - sublsn
    - already_locked
    argTypes:
    - Oid
    - Oid
    - char
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 380
    functionDepth: 7
    functionLinenumber: 380
    functionLinenumberEnd: 439
    functionName: UpdateSubscriptionRelState
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - Assert
    - HeapTupleIsValid
    - CheckRelationOidLockedByMe
    - RelationGetDescr
    - CatalogTupleUpdate
    - LockSharedObject
    - table_open
    - SET_LOCKTAG_OBJECT
    - SearchSysCacheCopy2
    - memset
    - LSNGetDatum
    - CharGetDatum
    - LockHeldByMe
    - ObjectIdGetDatum
    - table_close
    - heap_modify_tuple
    linkageType: ''
    returnType: void
    signature: "void UpdateSubscriptionRelState(Oid subid, Oid relid, char state,\n\t\t\t\t\t\t
      \  XLogRecPtr sublsn, bool already_locked)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:459,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:462,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:463,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:464,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:466,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:468,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:474,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:477,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:482,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:485,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - subid
    - relid
    - sublsn
    argTypes:
    - Oid
    - Oid
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 446
    functionDepth: 3
    functionLinenumber: 446
    functionLinenumberEnd: 490
    functionName: GetSubscriptionRelState
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - DatumGetLSN
    - table_open
    - ReleaseSysCache
    - SysCacheGetAttr
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - SearchSysCache2
    linkageType: ''
    returnType: char
    signature: char GetSubscriptionRelState(Oid subid, Oid relid, XLogRecPtr *sublsn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:505,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:507,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:509,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:513,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:516,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:518,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:522,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:526,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:527,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:527,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:531,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:542,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:544,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:546,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:547,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:548,1
    - Dst: get_subscription_name
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:549,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:550,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:551,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:557,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:562,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:564,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:566,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - subid
    - relid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 496
    functionDepth: 7
    functionLinenumber: 496
    functionLinenumberEnd: 567
    functionName: RemoveSubscriptionRel
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 1
    functionsReached:
    - errcode
    - errhint
    - table_close
    - HeapTupleIsValid
    - table_open
    - CatalogTupleDelete
    - get_rel_relkind
    - get_rel_name
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - table_endscan
    - ereport
    - heap_getnext
    - GETSTRUCT
    - ScanKeyInit
    - get_subscription_name
    - table_beginscan_catalog
    - errdetail
    linkageType: ''
    returnType: void
    signature: void RemoveSubscriptionRel(Oid subid, Oid relid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:584,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:586,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:589,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:591,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:594,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:594,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:599,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:600,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:611,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:612,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 575
    functionDepth: 4
    functionLinenumber: 575
    functionLinenumberEnd: 615
    functionName: HasSubscriptionTables
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - get_rel_relkind
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool HasSubscriptionTables(Oid subid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:636,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:638,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:640,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:643,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:646,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:649,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:651,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:654,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:654,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:662,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:666,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:678,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:681,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:686,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:688,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:692,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:693,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 4
    argNames:
    - subid
    - tables
    - sequences
    - not_ready
    argTypes:
    - Oid
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 624
    functionDepth: 6
    functionLinenumber: 624
    functionLinenumberEnd: 696
    functionName: GetSubscriptionRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - Assert
    - HeapTupleIsValid
    - DatumGetLSN
    - lappend
    - table_open
    - get_rel_relkind
    - GETSTRUCT
    - palloc_object
    - CharGetDatum
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    - SysCacheGetAttr
    linkageType: ''
    returnType: List
    signature: "List *\nGetSubscriptionRelations(Oid subid, bool tables, bool sequences,\n\t\t\t\t\t\t
      bool not_ready)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:711,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:712,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:712,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:714,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:715,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:717,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:720,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:721,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:722,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:725,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:729,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:729,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:731,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:732,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:734,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - subid
    - active
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 701
    functionDepth: 7
    functionLinenumber: 701
    functionLinenumberEnd: 735
    functionName: UpdateDeadTupleRetentionStatus
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - elog
    - heap_freetuple
    - HeapTupleIsValid
    - RelationGetDescr
    - table_close
    - CatalogTupleUpdate
    - LockSharedObject
    - table_open
    - SearchSysCacheCopy1
    - memset
    - ObjectIdGetDatum
    - BoolGetDatum
    - heap_modify_tuple
    linkageType: ''
    returnType: void
    signature: void UpdateDeadTupleRetentionStatus(Oid subid, bool active)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:56,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:59,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:60,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:61,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:62,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:63,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:64,1
    - Dst: FindDefaultConversion
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:72,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:75,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:76,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:77,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:78,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:79,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:83,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:94,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:95,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:97,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:98,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:99,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:100,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:101,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:102,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:103,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:104,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:106,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:109,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:119,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:125,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:128,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:131,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:134,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:136,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 44
    argCount: 7
    argNames:
    - conname
    - connamespace
    - conowner
    - conforencoding
    - contoencoding
    - conproc
    - def
    argTypes:
    - char*
    - Oid
    - Oid
    - int32
    - int32
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 37
    functionDepth: 7
    functionLinenumber: 37
    functionLinenumberEnd: 140
    functionName: ConversionCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_conversion.c
    functionUses: 0
    functionsReached:
    - FindDefaultConversion
    - errcode
    - heap_form_tuple
    - recordDependencyOn
    - table_close
    - CatalogTupleInsert
    - elog
    - recordDependencyOnCurrentExtension
    - heap_freetuple
    - SearchSysCacheExists2
    - Int32GetDatum
    - recordDependencyOnOwner
    - table_open
    - pg_encoding_to_char
    - PointerGetDatum
    - errmsg
    - ObjectIdGetDatum
    - InvokeObjectPostCreateHook
    - GetNewOidWithIndex
    - ereport
    - namestrcpy
    - NameGetDatum
    - BoolGetDatum
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress ConversionCreate(const char *conname, Oid connamespace,\n\t\t\t\t
      Oid conowner,\n\t\t\t\t int32 conforencoding, int32 contoencoding,\n\t\t\t\t
      Oid conproc, bool def)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCacheList3
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:160,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:161,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:162,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:163,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:168,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/pg_conversion.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - name_space
    - for_encoding
    - to_encoding
    argTypes:
    - Oid
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 177
    functionName: FindDefaultConversion
    functionSourceFile: /src/postgres/src/backend/catalog/pg_conversion.c
    functionUses: 3
    functionsReached:
    - Int32GetDatum
    - SearchSysCacheList3
    - GETSTRUCT
    - ReleaseSysCacheList
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid FindDefaultConversion(Oid name_space, int32 for_encoding, int32
      to_encoding)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:48,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:54,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:55,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:57,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:60,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:63,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:64,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:66,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:68,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:72,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:76,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:76,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:79,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:81,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:83,1
    - Dst: recordDependencyOnNewAcl
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - loid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 37
    functionDepth: 7
    functionLinenumber: 37
    functionLinenumberEnd: 90
    functionName: LargeObjectCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_largeobject.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - GetNewOidWithIndex
    - heap_freetuple
    - RelationGetDescr
    - heap_form_tuple
    - get_user_default_acl
    - recordDependencyOnNewAcl
    - table_open
    - memset
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - table_close
    - CatalogTupleInsert
    linkageType: ''
    returnType: Oid
    signature: Oid LargeObjectCreate(Oid loid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:105,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:108,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:114,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:117,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:119,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:123,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:127,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:129,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:131,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:136,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:139,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:141,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:144,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:144,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:146,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:149,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:151,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - loid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 96
    functionDepth: 7
    functionLinenumber: 96
    functionLinenumberEnd: 154
    functionName: LargeObjectDrop
    functionSourceFile: /src/postgres/src/backend/catalog/pg_largeobject.c
    functionUses: 1
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - errcode
    - HeapTupleIsValid
    - ereport
    - table_open
    - CatalogTupleDelete
    - errmsg
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void LargeObjectDrop(Oid loid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LargeObjectExistsWithSnapshot
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - loid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 172
    functionName: LargeObjectExists
    functionSourceFile: /src/postgres/src/backend/catalog/pg_largeobject.c
    functionUses: 4
    functionsReached:
    - LargeObjectExistsWithSnapshot
    linkageType: ''
    returnType: bool
    signature: bool LargeObjectExists(Oid loid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:186,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:189,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:191,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:194,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:198,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:199,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:202,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - loid
    - snapshot
    argTypes:
    - Oid
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 177
    functionDepth: 4
    functionLinenumber: 177
    functionLinenumberEnd: 207
    functionName: LargeObjectExistsWithSnapshot
    functionSourceFile: /src/postgres/src/backend/catalog/pg_largeobject.c
    functionUses: 1
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool LargeObjectExistsWithSnapshot(Oid loid, Snapshot snapshot)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_cast.c:62,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/pg_cast.c:69,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_cast.c:70,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_cast.c:71,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_cast.c:72,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_cast.c:73,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_cast.c:74,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_cast.c:75,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_cast.c:76,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_cast.c:77,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_cast.c:80,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_cast.c:81,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_cast.c:82,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_cast.c:83,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_cast.c:84,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_cast.c:85,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_cast.c:86,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_cast.c:88,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_cast.c:88,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_cast.c:90,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_cast.c:92,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_cast.c:95,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_cast.c:98,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_cast.c:99,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_cast.c:102,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_cast.c:103,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_cast.c:106,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_cast.c:108,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_cast.c:109,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_cast.c:113,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_cast.c:115,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_cast.c:116,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_cast.c:118,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_cast.c:120,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_cast.c:121,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_cast.c:124,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_cast.c:125,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_cast.c:128,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_cast.c:131,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_cast.c:133,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_cast.c:135,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 8
    argNames:
    - sourcetypeid
    - targettypeid
    - funcid
    - incastid
    - outcastid
    - castcontext
    - castmethod
    - behavior
    argTypes:
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    - char
    - char
    - DependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 48
    functionDepth: 7
    functionLinenumber: 48
    functionLinenumberEnd: 138
    functionName: CastCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_cast.c
    functionUses: 0
    functionsReached:
    - errcode
    - heap_form_tuple
    - table_close
    - CatalogTupleInsert
    - recordDependencyOnCurrentExtension
    - heap_freetuple
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - errmsg
    - new_object_addresses
    - OidIsValid
    - CharGetDatum
    - ObjectIdGetDatum
    - record_object_address_dependencies
    - InvokeObjectPostCreateHook
    - GetNewOidWithIndex
    - ereport
    - free_object_addresses
    - format_type_be
    - add_exact_object_address
    - ObjectAddressSet
    - SearchSysCache2
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress CastCreate(Oid sourcetypeid, Oid targettypeid,\n\t\t
      \  Oid funcid, Oid incastid, Oid outcastid,\n\t\t   char castcontext, char castmethod,
      DependencyType behavior)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_operator.c:70,1
    - Dst: strspn
      Src: /src/postgres/src/backend/catalog/pg_operator.c:78,1
    - Dst: strstr
      Src: /src/postgres/src/backend/catalog/pg_operator.c:82,1
    - Dst: strstr
      Src: /src/postgres/src/backend/catalog/pg_operator.c:82,1
    - Dst: strchr
      Src: /src/postgres/src/backend/catalog/pg_operator.c:100,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_operator.c:108,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 112
    functionName: validOperatorName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - strstr
    - strspn
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool validOperatorName(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/catalog/pg_operator.c:133,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:134,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:135,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:136,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:137,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:138,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_operator.c:140,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:143,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_operator.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - operatorName
    - operatorNamespace
    - leftObjectId
    - rightObjectId
    - defined
    argTypes:
    - char*
    - Oid
    - Oid
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 153
    functionName: OperatorGet
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 0
    functionsReached:
    - RegProcedureIsValid
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache4
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: "Oid OperatorGet(const char *operatorName,\n\t\t\tOid operatorNamespace,\n\t\t\tOid
      leftObjectId,\n\t\t\tOid rightObjectId,\n\t\t\tbool *defined)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LookupOperName
      Src: /src/postgres/src/backend/catalog/pg_operator.c:172,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:175,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:181,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - operatorName
    - leftObjectId
    - rightObjectId
    - defined
    argTypes:
    - List*
    - Oid
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 185
    functionName: OperatorLookup
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - RegProcedureIsValid
    - get_opcode
    - LookupOperName
    linkageType: ''
    returnType: Oid
    signature: "Oid OperatorLookup(List *operatorName,\n\t\t\t   Oid leftObjectId,\n\t\t\t
      \  Oid rightObjectId,\n\t\t\t   bool *defined)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: validOperatorName
      Src: /src/postgres/src/backend/catalog/pg_operator.c:210,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:211,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:213,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_operator.c:219,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_operator.c:235,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:237,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_operator.c:238,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:239,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:240,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:241,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_operator.c:241,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:242,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:243,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:244,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:245,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:246,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:247,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:248,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:249,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:250,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:251,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:252,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_operator.c:257,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_operator.c:262,1
    - Dst: makeOperatorDependencies
      Src: /src/postgres/src/backend/catalog/pg_operator.c:265,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_operator.c:267,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_operator.c:270,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_operator.c:275,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_operator.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 4
    argNames:
    - operatorName
    - operatorNamespace
    - leftTypeId
    - rightTypeId
    argTypes:
    - char*
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 192
    functionDepth: 7
    functionLinenumber: 192
    functionLinenumberEnd: 283
    functionName: OperatorShellMake
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - heap_form_tuple
    - makeOperatorDependencies
    - table_close
    - CatalogTupleInsert
    - heap_freetuple
    - CommandCounterIncrement
    - table_open
    - errmsg
    - CharGetDatum
    - ObjectIdGetDatum
    - InvokeObjectPostCreateHook
    - GetNewOidWithIndex
    - ereport
    - namestrcpy
    - validOperatorName
    - NameGetDatum
    - BoolGetDatum
    linkageType: ''
    returnType: Oid
    signature: "Oid OperatorShellMake(const char *operatorName,\n\t\t\t\t  Oid operatorNamespace,\n\t\t\t\t
      \ Oid leftTypeId,\n\t\t\t\t  Oid rightTypeId)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: validOperatorName
      Src: /src/postgres/src/backend/catalog/pg_operator.c:352,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:353,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:354,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:355,1
    - Dst: get_func_rettype
      Src: /src/postgres/src/backend/catalog/pg_operator.c:358,1
    - Dst: OperatorValidateParams
      Src: /src/postgres/src/backend/catalog/pg_operator.c:360,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:365,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:366,1
    - Dst: OperatorGet
      Src: /src/postgres/src/backend/catalog/pg_operator.c:370,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:377,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:378,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:379,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:387,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/pg_operator.c:388,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_operator.c:388,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_operator.c:389,1
    - Dst: get_other_operator
      Src: /src/postgres/src/backend/catalog/pg_operator.c:400,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:406,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/pg_operator.c:407,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_operator.c:407,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_operator.c:408,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/pg_operator.c:409,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:416,1
    - Dst: get_other_operator
      Src: /src/postgres/src/backend/catalog/pg_operator.c:425,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:431,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/pg_operator.c:432,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_operator.c:432,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_operator.c:433,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/pg_operator.c:434,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:442,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:443,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:444,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:445,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_operator.c:461,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:462,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:463,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:464,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_operator.c:464,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:465,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:466,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:467,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:468,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:469,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:470,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:471,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:472,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:473,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:474,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:475,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_operator.c:477,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_operator.c:486,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:487,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:488,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_operator.c:489,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_operator.c:493,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_operator.c:494,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_operator.c:499,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_operator.c:505,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:508,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_operator.c:510,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_operator.c:510,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_operator.c:513,1
    - Dst: makeOperatorDependencies
      Src: /src/postgres/src/backend/catalog/pg_operator.c:517,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:533,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:533,1
    - Dst: OperatorUpd
      Src: /src/postgres/src/backend/catalog/pg_operator.c:534,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_operator.c:537,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_operator.c:539,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 70
    argCount: 11
    argNames:
    - operatorName
    - operatorNamespace
    - leftTypeId
    - rightTypeId
    - procedureId
    - commutatorName
    - negatorName
    - restrictionId
    - joinId
    - canMerge
    - canHash
    argTypes:
    - char*
    - Oid
    - Oid
    - Oid
    - Oid
    - List*
    - List*
    - Oid
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 320
    functionDepth: 7
    functionLinenumber: 320
    functionLinenumberEnd: 542
    functionName: OperatorCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - heap_form_tuple
    - OperatorGet
    - makeOperatorDependencies
    - get_other_operator
    - table_close
    - CatalogTupleInsert
    - elog
    - object_ownercheck
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - OperatorUpd
    - errmsg
    - CharGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - InvokeObjectPostCreateHook
    - GetNewOidWithIndex
    - ereport
    - get_func_rettype
    - NameListToString
    - namestrcpy
    - SearchSysCacheCopy1
    - aclcheck_error
    - validOperatorName
    - heap_modify_tuple
    - NameGetDatum
    - CatalogTupleUpdate
    - OperatorValidateParams
    - BoolGetDatum
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress OperatorCreate(const char *operatorName,\n\t\t\t   Oid
      operatorNamespace,\n\t\t\t   Oid leftTypeId,\n\t\t\t   Oid rightTypeId,\n\t\t\t
      \  Oid procedureId,\n\t\t\t   List *commutatorName,\n\t\t\t   List *negatorName,\n\t\t\t
      \  Oid restrictionId,\n\t\t\t   Oid joinId,\n\t\t\t   bool canMerge,\n\t\t\t
      \  bool canHash)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:566,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:566,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:570,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:571,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:572,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:574,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:576,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:578,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:579,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:580,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:582,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:583,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:584,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:591,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:592,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:595,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:596,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:597,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:599,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:600,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:601,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:603,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:604,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:605,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:607,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:608,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:609,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 9
    argNames:
    - leftTypeId
    - rightTypeId
    - operResultType
    - hasCommutator
    - hasNegator
    - hasRestrictionSelectivity
    - hasJoinSelectivity
    - canMerge
    - canHash
    argTypes:
    - Oid
    - Oid
    - Oid
    - bool
    - bool
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 611
    functionName: OperatorValidateParams
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 1
    functionsReached:
    - OidIsValid
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: "void OperatorValidateParams(Oid leftTypeId,\n\t\t\t\t\t   Oid rightTypeId,\n\t\t\t\t\t
      \  Oid operResultType,\n\t\t\t\t\t   bool hasCommutator,\n\t\t\t\t\t   bool
      hasNegator,\n\t\t\t\t\t   bool hasRestrictionSelectivity,\n\t\t\t\t\t   bool
      hasJoinSelectivity,\n\t\t\t\t\t   bool canMerge,\n\t\t\t\t\t   bool canHash)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OperatorLookup
      Src: /src/postgres/src/backend/catalog/pg_operator.c:632,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:637,1
    - Dst: QualifiedNameGetCreationNamespace
      Src: /src/postgres/src/backend/catalog/pg_operator.c:643,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_operator.c:646,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/pg_operator.c:657,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_operator.c:657,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_operator.c:660,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/pg_operator.c:661,1
    - Dst: OperatorShellMake
      Src: /src/postgres/src/backend/catalog/pg_operator.c:663,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 7
    argNames:
    - otherOp
    - otherLeftTypeId
    - otherRightTypeId
    - operatorName
    - operatorNamespace
    - leftTypeId
    - rightTypeId
    argTypes:
    - List*
    - Oid
    - Oid
    - char*
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 621
    functionDepth: 8
    functionLinenumber: 621
    functionLinenumberEnd: 668
    functionName: get_other_operator
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 1
    functionsReached:
    - get_namespace_name
    - strcmp
    - GetUserId
    - OperatorShellMake
    - object_aclcheck
    - QualifiedNameGetCreationNamespace
    - aclcheck_error
    - OidIsValid
    - OperatorLookup
    linkageType: ''
    returnType: Oid
    signature: "Oid get_other_operator(List *otherOp, Oid otherLeftTypeId, Oid otherRightTypeId,\n\t\t\t\t
      \  const char *operatorName, Oid operatorNamespace,\n\t\t\t\t   Oid leftTypeId,
      Oid rightTypeId)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_operator.c:696,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_operator.c:699,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:702,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_operator.c:703,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:703,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:708,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_operator.c:710,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:718,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:732,1
    - Dst: get_opname
      Src: /src/postgres/src/backend/catalog/pg_operator.c:734,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:737,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:738,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:739,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_operator.c:740,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:742,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:743,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:744,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_operator.c:745,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_operator.c:755,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_operator.c:764,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:771,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_operator.c:772,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_operator.c:772,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:776,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_operator.c:778,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:786,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:800,1
    - Dst: get_opname
      Src: /src/postgres/src/backend/catalog/pg_operator.c:802,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:805,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:806,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:807,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_operator.c:808,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_operator.c:810,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_operator.c:811,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_operator.c:812,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_operator.c:813,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_operator.c:823,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_operator.c:832,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_operator.c:837,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 50
    argCount: 4
    argNames:
    - baseId
    - commId
    - negId
    - isDelete
    argTypes:
    - Oid
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 683
    functionDepth: 7
    functionLinenumber: 683
    functionLinenumberEnd: 838
    functionName: OperatorUpd
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 1
    functionsReached:
    - errcode
    - HeapTupleIsValid
    - CommandCounterIncrement
    - ereport
    - CatalogTupleUpdate
    - table_open
    - SearchSysCacheCopy1
    - GETSTRUCT
    - get_opname
    - errmsg
    - OidIsValid
    - NameStr
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_operator.c:857,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_operator.c:862,1
    - Dst: deleteDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/pg_operator.c:870,1
    - Dst: deleteSharedDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/pg_operator.c:871,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_operator.c:874,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:877,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_operator.c:879,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_operator.c:880,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:884,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_operator.c:886,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_operator.c:887,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:891,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_operator.c:893,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_operator.c:894,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:898,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_operator.c:900,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_operator.c:901,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:913,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_operator.c:915,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_operator.c:916,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:920,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_operator.c:922,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_operator.c:923,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_operator.c:927,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_operator.c:929,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_operator.c:930,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_operator.c:933,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_operator.c:934,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/pg_operator.c:937,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_operator.c:942,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 3
    argNames:
    - tuple
    - makeExtensionDep
    - isUpdate
    argTypes:
    - HeapTuple
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 852
    functionDepth: 6
    functionLinenumber: 852
    functionLinenumberEnd: 945
    functionName: makeOperatorDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 2
    functionsReached:
    - recordDependencyOnCurrentExtension
    - deleteDependencyRecordsFor
    - recordDependencyOnOwner
    - add_exact_object_address
    - ObjectAddressSet
    - new_object_addresses
    - GETSTRUCT
    - free_object_addresses
    - OidIsValid
    - record_object_address_dependencies
    - deleteSharedDependencyRecordsFor
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress makeOperatorDependencies(HeapTuple tuple,\n\t\t\t\t\t\t
      bool makeExtensionDep,\n\t\t\t\t\t\t bool isUpdate)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetQualifiedRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:64,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/pg_publication.c:65,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:69,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/pg_publication.c:70,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:75,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:76,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:77,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:78,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/pg_publication.c:81,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/pg_publication.c:82,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:83,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:84,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:85,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/catalog/pg_publication.c:86,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/pg_publication.c:86,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/catalog/pg_publication.c:89,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:90,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:91,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:92,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:93,1
    - Dst: IsConflictLogTableNamespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:96,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:96,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:97,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:98,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:99,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:100,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:104,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:106,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:107,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:109,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:111,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:112,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - pri
    argTypes:
    - PublicationRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 113
    functionName: check_publication_add_relation
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - errdetail_relkind_not_supported
    - IsConflictLogTableNamespace
    - errcode
    - ereport
    - gettext_noop
    - RelationGetForm
    - RelationGetNamespace
    - errmsg
    - RelationGetRelationName
    - errdetail
    - IsCatalogRelation
    - RelationGetQualifiedRelationName
    linkageType: ''
    returnType: void
    signature: void check_publication_add_relation(PublicationRelInfo *pri)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsCatalogNamespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:123,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:123,1
    - Dst: IsConflictLogTableNamespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:127,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/pg_publication.c:128,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:129,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:132,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:133,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:135,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/pg_publication.c:136,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - schemaid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 138
    functionName: check_publication_add_schema
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - get_namespace_name
    - IsConflictLogTableNamespace
    - errcode
    - IsCatalogNamespace
    - errdetail
    - isAnyTempNamespace
    - ereport
    - errmsg
    - IsToastNamespace
    linkageType: ''
    returnType: void
    signature: void check_publication_add_schema(Oid schemaid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsCatalogRelationOid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:168,1
    - Dst: IsConflictLogTableClass
      Src: /src/postgres/src/backend/catalog/pg_publication.c:169,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 2
    argNames:
    - relid
    - reltuple
    argTypes:
    - Oid
    - Form_pg_class
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 172
    functionName: is_publishable_class
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - IsCatalogRelationOid
    - IsConflictLogTableClass
    linkageType: ''
    returnType: bool
    signature: bool is_publishable_class(Oid relid, Form_pg_class reltuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:180,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: is_publishable_relation
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - is_publishable_class
    - RelationGetRelid
    linkageType: ''
    returnType: bool
    signature: bool is_publishable_relation(Relation rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_publication.c:193,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:193,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:194,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:197,1
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:204,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_publication.c:206,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_publication.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - tableoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 212
    functionName: is_publishable_table
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - HeapTupleIsValid
    - is_publishable_class
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool is_publishable_table(Oid tableoid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/pg_publication.c:224,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_publication.c:228,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:228,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:229,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/pg_publication.c:230,1
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:231,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:231,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_publication.c:232,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/pg_publication.c:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 234
    functionName: pg_relation_is_publishable
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - HeapTupleIsValid
    - is_publishable_class
    - ReleaseSysCache
    - PG_GETARG_OID
    - GETSTRUCT
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_relation_is_publishable(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_publication.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ancestor
    - table_infos
    argTypes:
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 254
    functionName: is_ancestor_member_tableinfos
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool is_ancestor_member_tableinfos(Oid ancestor, List *table_infos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_publication.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 251
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 363
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, table_infos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_publication.c:269,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/catalog/pg_publication.c:271,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/catalog/pg_publication.c:272,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:276,1
    - Dst: is_ancestor_member_tableinfos
      Src: /src/postgres/src/backend/catalog/pg_publication.c:278,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/catalog/pg_publication.c:286,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - table_infos
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 259
    functionDepth: 4
    functionLinenumber: 259
    functionLinenumberEnd: 288
    functionName: filter_partitions
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - foreach_delete_current
    - is_ancestor_member_tableinfos
    - get_rel_relispartition
    - lfirst
    - lfirst_oid
    - get_partition_ancestors
    linkageType: ''
    returnType: void
    signature: void filter_partitions(List *table_infos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_publication.c:269,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/catalog/pg_publication.c:271,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/catalog/pg_publication.c:272,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:276,1
    - Dst: is_ancestor_member_tableinfos
      Src: /src/postgres/src/backend/catalog/pg_publication.c:278,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/catalog/pg_publication.c:286,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 264
    functionDepth: 4
    functionLinenumber: 264
    functionLinenumberEnd: 287
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 363
    functionsReached:
    - foreach_delete_current
    - is_ancestor_member_tableinfos
    - get_rel_relispartition
    - lfirst
    - lfirst_oid
    - get_partition_ancestors
    linkageType: ''
    returnType: void
    signature: void foreach(lc, table_infos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:276,1
    - Dst: is_ancestor_member_tableinfos
      Src: /src/postgres/src/backend/catalog/pg_publication.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 283
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 363
    functionsReached:
    - is_ancestor_member_tableinfos
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, ancestors)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:303,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:304,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:307,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:309,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:312,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:313,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:315,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - pubid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 294
    functionDepth: 4
    functionLinenumber: 294
    functionLinenumberEnd: 319
    functionName: is_schema_publication
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool is_schema_publication(Oid pubid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:334,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:335,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:338,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:340,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:343,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:344,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:348,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:358,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - pubid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 325
    functionDepth: 4
    functionLinenumber: 325
    functionLinenumberEnd: 362
    functionName: is_table_publication
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool is_table_publication(Oid pubid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:382,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:383,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:384,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:385,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:391,1
    - Dst: pub_collist_to_bitmapset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:399,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_publication.c:404,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - pub
    - relid
    - mcxt
    - cols
    argTypes:
    - Publication*
    - Oid
    - MemoryContext
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 408
    functionName: check_and_fetch_column_list
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - ReleaseSysCache
    - SearchSysCache2
    - pub_collist_to_bitmapset
    - ObjectIdGetDatum
    - SysCacheGetAttr
    linkageType: ''
    returnType: bool
    signature: "bool check_and_fetch_column_list(Publication *pub, Oid relid, MemoryContext
      mcxt,\n\t\t\t\t\t\t\tBitmapset **cols)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_publication.c:418,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/catalog/pg_publication.c:421,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/pg_publication.c:425,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:432,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_publication.c:434,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:439,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:442,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - result
    - pub_partopt
    - relid
    argTypes:
    - List*
    - PublicationPartOpt
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 414
    functionDepth: 7
    functionLinenumber: 414
    functionLinenumberEnd: 445
    functionName: GetPubPartitionOptionRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - find_all_inheritors
    - Assert
    - get_rel_relkind
    - list_concat
    - lappend_oid
    - lfirst_oid
    linkageType: ''
    returnType: List
    signature: "List *\nGetPubPartitionOptionRelations(List *result, PublicationPartOpt
      pub_partopt,\n\t\t\t\t\t\t\t   Oid relid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:432,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_publication.c:434,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 430
    functionDepth: 6
    functionLinenumber: 430
    functionLinenumberEnd: 436
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 363
    functionsReached:
    - lappend_oid
    - lfirst_oid
    - get_rel_relkind
    linkageType: ''
    returnType: void
    signature: void foreach(lc, all_parts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:470,1
    - Dst: GetRelationIncludedPublications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:471,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:476,1
    - Dst: GetSchemaPublications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:485,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:485,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:486,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_publication.c:495,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_publication.c:496,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - puboid
    - ancestors
    - ancestor_level
    argTypes:
    - Oid
    - List*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 458
    functionDepth: 4
    functionLinenumber: 458
    functionLinenumberEnd: 500
    functionName: GetTopMostAncestorInPublication
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - list_free
    - GetSchemaPublications
    - get_rel_namespace
    - GetRelationIncludedPublications
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: Oid
    signature: Oid GetTopMostAncestorInPublication(Oid puboid, List *ancestors, int
      *ancestor_level)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:470,1
    - Dst: GetRelationIncludedPublications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:471,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:476,1
    - Dst: GetSchemaPublications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:485,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:485,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:486,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_publication.c:495,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_publication.c:496,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 468
    functionDepth: 4
    functionLinenumber: 468
    functionLinenumberEnd: 497
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 363
    functionsReached:
    - list_free
    - GetSchemaPublications
    - get_rel_namespace
    - GetRelationIncludedPublications
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, ancestors)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/catalog/pg_publication.c:513,1
    - Dst: buildint2vector
      Src: /src/postgres/src/backend/catalog/pg_publication.c:517,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - attrs
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 509
    functionDepth: 3
    functionLinenumber: 509
    functionLinenumberEnd: 527
    functionName: attnumstoint2vector
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - bms_next_member
    - bms_num_members
    - Assert
    - buildint2vector
    linkageType: ''
    returnType: int2vector
    signature: 'int2vector *

      attnumstoint2vector(Bitmapset *attrs)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:541,1
    - Dst: GetPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:544,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:551,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:558,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:558,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:559,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:561,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:566,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:567,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:568,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:569,1
    - Dst: check_publication_add_relation
      Src: /src/postgres/src/backend/catalog/pg_publication.c:572,1
    - Dst: pub_collist_validate
      Src: /src/postgres/src/backend/catalog/pg_publication.c:575,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:578,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:579,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_publication.c:581,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:583,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:585,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:587,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:589,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:593,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/pg_publication.c:593,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:599,1
    - Dst: attnumstoint2vector
      Src: /src/postgres/src/backend/catalog/pg_publication.c:599,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:603,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:603,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:606,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:607,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:610,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:613,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:614,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:617,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:618,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:622,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:628,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:630,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:631,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:635,1
    - Dst: GetPubPartitionOptionRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:665,1
    - Dst: InvalidatePublicationRels
      Src: /src/postgres/src/backend/catalog/pg_publication.c:668,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 4
    argNames:
    - pubid
    - pri
    - if_not_exists
    - alter_stmt
    argTypes:
    - Oid
    - PublicationRelInfo*
    - bool
    - AlterPublicationStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 532
    functionDepth: 8
    functionLinenumber: 532
    functionLinenumberEnd: 672
    functionName: publication_add_relation
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - check_publication_add_relation
    - ObjectAddressSubSet
    - errcode
    - attnumstoint2vector
    - heap_form_tuple
    - recordDependencyOn
    - GetPublication
    - RelationGetRelationName
    - table_close
    - CatalogTupleInsert
    - recordDependencyOnSingleRelExpr
    - heap_freetuple
    - SearchSysCacheExists2
    - RelationGetDescr
    - table_open
    - nodeToString
    - errmsg
    - PointerGetDatum
    - bms_next_member
    - ObjectIdGetDatum
    - GetNewOidWithIndex
    - GetPubPartitionOptionRelations
    - ereport
    - InvalidatePublicationRels
    - memset
    - pub_collist_validate
    - CStringGetTextDatum
    - ObjectAddressSet
    - BoolGetDatum
    - RelationGetRelid
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress publication_add_relation(Oid pubid, PublicationRelInfo
      *pri,\n\t\t\t\t\t\t bool if_not_exists, AlterPublicationStmt *alter_stmt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:689,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_publication.c:693,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_publication.c:693,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:694,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:694,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:697,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:699,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:700,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:702,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:703,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:705,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:708,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:709,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:710,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:711,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:714,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:715,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:717,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:720,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - targetrel
    - columns
    argTypes:
    - Relation
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 684
    functionDepth: 3
    functionLinenumber: 684
    functionLinenumberEnd: 724
    functionName: pub_collist_validate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - get_attnum
    - errcode
    - RelationGetDescr
    - AttrNumberIsForUserDefinedAttr
    - bms_is_member
    - ereport
    - lfirst
    - errmsg
    - RelationGetRelationName
    - TupleDescAttr
    - strVal
    - bms_add_member
    - RelationGetRelid
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      pub_collist_validate(Relation targetrel, List *columns)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_publication.c:693,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_publication.c:693,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:694,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:694,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:697,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:699,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:700,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:702,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:703,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:705,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:708,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:709,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:710,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:711,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:714,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:715,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:717,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:720,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 691
    functionDepth: 3
    functionLinenumber: 691
    functionLinenumberEnd: 721
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 363
    functionsReached:
    - get_attnum
    - errcode
    - AttrNumberIsForUserDefinedAttr
    - bms_is_member
    - ereport
    - lfirst
    - errmsg
    - RelationGetRelationName
    - TupleDescAttr
    - strVal
    - bms_add_member
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, columns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_publication.c:742,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_publication.c:743,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_publication.c:744,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:748,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:751,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:754,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - columns
    - pubcols
    - mcxt
    argTypes:
    - Bitmapset*
    - Datum
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 733
    functionDepth: 3
    functionLinenumber: 733
    functionLinenumberEnd: 757
    functionName: pub_collist_to_bitmapset
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - ARR_DATA_PTR
    - DatumGetArrayTypeP
    - bms_add_member
    - ARR_DIMS
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      pub_collist_to_bitmapset(Bitmapset *columns, Datum pubcols, MemoryContext mcxt)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:769,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:773,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:789,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - relation
    - include_gencols_type
    argTypes:
    - Relation
    - PublishGencolsType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 765
    functionDepth: 3
    functionLinenumber: 765
    functionLinenumberEnd: 793
    functionName: pub_form_cols_map
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - RelationGetDescr
    - TupleDescAttr
    - bms_add_member
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      pub_form_cols_map(Relation relation, PublishGencolsType include_gencols_type)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:806,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:811,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:818,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:819,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:820,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:822,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:827,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:828,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:829,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/pg_publication.c:830,1
    - Dst: check_publication_add_schema
      Src: /src/postgres/src/backend/catalog/pg_publication.c:833,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:836,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:837,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_publication.c:839,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:841,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:843,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:845,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:847,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:847,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:850,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:851,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:853,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:856,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:857,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:860,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:861,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:864,1
    - Dst: GetSchemaPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:871,1
    - Dst: InvalidatePublicationRels
      Src: /src/postgres/src/backend/catalog/pg_publication.c:873,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 3
    argNames:
    - pubid
    - schemaid
    - if_not_exists
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 798
    functionDepth: 7
    functionLinenumber: 798
    functionLinenumberEnd: 876
    functionName: publication_add_schema
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - errcode
    - heap_form_tuple
    - recordDependencyOn
    - GetPublication
    - table_close
    - CatalogTupleInsert
    - heap_freetuple
    - SearchSysCacheExists2
    - RelationGetDescr
    - table_open
    - errmsg
    - ObjectIdGetDatum
    - GetNewOidWithIndex
    - GetSchemaPublicationRelations
    - ereport
    - InvalidatePublicationRels
    - memset
    - check_publication_add_schema
    - get_namespace_name
    - ObjectAddressSet
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress publication_add_schema(Oid pubid, Oid schemaid, bool
      if_not_exists)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/pg_publication.c:892,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:893,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:897,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:901,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/pg_publication.c:904,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - relid
    - except_flag
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 885
    functionDepth: 6
    functionLinenumber: 885
    functionLinenumberEnd: 907
    functionName: get_relation_publications
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - SearchSysCacheList1
    - GETSTRUCT
    - lappend_oid
    - ReleaseSysCacheList
    - ObjectIdGetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      get_relation_publications(Oid relid, bool except_flag)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_relation_publications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 912
    functionDepth: 7
    functionLinenumber: 912
    functionLinenumberEnd: 916
    functionName: GetRelationIncludedPublications
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 2
    functionsReached:
    - get_relation_publications
    linkageType: ''
    returnType: List
    signature: 'List *

      GetRelationIncludedPublications(Oid relid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_relation_publications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 921
    functionDepth: 7
    functionLinenumber: 921
    functionLinenumberEnd: 925
    functionName: GetRelationExcludedPublications
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - get_relation_publications
    linkageType: ''
    returnType: List
    signature: 'List *

      GetRelationExcludedPublications(Oid relid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:945,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:947,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:950,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:952,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:956,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:956,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:960,1
    - Dst: GetPubPartitionOptionRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:963,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:967,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:968,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/catalog/pg_publication.c:971,1
    - Dst: list_deduplicate_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:972,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - pubid
    - pub_partopt
    - except_flag
    argTypes:
    - Oid
    - PublicationPartOpt
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 934
    functionDepth: 8
    functionLinenumber: 934
    functionLinenumberEnd: 975
    functionName: get_publication_relations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - list_sort
    - HeapTupleIsValid
    - GetPubPartitionOptionRelations
    - table_open
    - list_deduplicate_oid
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: "List *\nget_publication_relations(Oid pubid, PublicationPartOpt pub_partopt,\n\t\t\t\t\t\t
      \ bool except_flag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:986,1
    - Dst: GetPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:986,1
    - Dst: get_publication_relations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pubid
    - pub_partopt
    argTypes:
    - Oid
    - PublicationPartOpt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 983
    functionDepth: 9
    functionLinenumber: 983
    functionLinenumberEnd: 989
    functionName: GetIncludedPublicationRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - Assert
    - GetPublication
    - get_publication_relations
    linkageType: ''
    returnType: List
    signature: 'List *

      GetIncludedPublicationRelations(Oid pubid, PublicationPartOpt pub_partopt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1000,1
    - Dst: GetPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1000,1
    - Dst: get_publication_relations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pubid
    - pub_partopt
    argTypes:
    - Oid
    - PublicationPartOpt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 997
    functionDepth: 9
    functionLinenumber: 997
    functionLinenumberEnd: 1003
    functionName: GetExcludedPublicationTables
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - Assert
    - GetPublication
    - get_publication_relations
    linkageType: ''
    returnType: List
    signature: 'List *

      GetExcludedPublicationTables(Oid pubid, PublicationPartOpt pub_partopt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1018,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1020,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1023,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1025,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1029,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1029,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1031,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1033,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1036,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1037,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1008
    functionDepth: 6
    functionLinenumber: 1008
    functionLinenumberEnd: 1040
    functionName: GetAllTablesPublications
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_close
    - table_open
    - GETSTRUCT
    - lappend_oid
    - BoolGetDatum
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: 'List *

      GetAllTablesPublications(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1064,1
    - Dst: GetExcludedPublicationTables
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1068,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1072,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1074,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1077,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1079,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1081,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1083,1
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1086,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1088,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1089,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1092,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1096,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1099,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1101,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1103,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1105,1
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1108,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1110,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1111,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1114,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1117,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 3
    argNames:
    - pubid
    - relkind
    - pubviaroot
    argTypes:
    - Oid
    - char
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1054
    functionDepth: 10
    functionLinenumber: 1054
    functionLinenumberEnd: 1119
    functionName: GetAllPublicationRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - Assert
    - is_publishable_class
    - table_close
    - table_open
    - GetExcludedPublicationTables
    - table_beginscan_catalog
    - heap_getnext
    - GETSTRUCT
    - table_endscan
    - CharGetDatum
    - list_member_oid
    - lappend_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      GetAllPublicationRelations(Oid pubid, char relkind, bool pubviaroot)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1136,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1138,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1141,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1143,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1146,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1146,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1150,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1152,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1155,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - pubid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1126
    functionDepth: 6
    functionLinenumber: 1126
    functionLinenumberEnd: 1159
    functionName: GetPublicationSchemas
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - GETSTRUCT
    - lappend_oid
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: 'List *

      GetPublicationSchemas(Oid pubid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1172,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1173,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1177,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1179,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - schemaid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1164
    functionDepth: 6
    functionLinenumber: 1164
    functionLinenumberEnd: 1185
    functionName: GetSchemaPublications
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 2
    functionsReached:
    - SearchSysCacheList1
    - GETSTRUCT
    - lappend_oid
    - ReleaseSysCacheList
    - ObjectIdGetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      GetSchemaPublications(Oid schemaid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1199,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1199,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1201,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1203,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1206,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1209,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1210,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1212,1
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1216,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1219,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1221,1
    - Dst: GetPubPartitionOptionRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1231,1
    - Dst: list_concat_unique_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1234,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1238,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1239,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - schemaid
    - pub_partopt
    argTypes:
    - Oid
    - PublicationPartOpt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1190
    functionDepth: 8
    functionLinenumber: 1190
    functionLinenumberEnd: 1241
    functionName: GetSchemaPublicationRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - ScanKeyInit
    - Assert
    - is_publishable_class
    - table_close
    - GetPubPartitionOptionRelations
    - table_open
    - table_beginscan_catalog
    - heap_getnext
    - get_rel_relkind
    - GETSTRUCT
    - OidIsValid
    - ObjectIdGetDatum
    - table_endscan
    - lappend_oid
    - list_concat_unique_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      GetSchemaPublicationRelations(Oid schemaid, PublicationPartOpt pub_partopt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetPublicationSchemas
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1251,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1256,1
    - Dst: GetSchemaPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1259,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pubid
    - pub_partopt
    argTypes:
    - Oid
    - PublicationPartOpt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1247
    functionDepth: 9
    functionLinenumber: 1247
    functionLinenumberEnd: 1264
    functionName: GetAllSchemaPublicationRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - GetSchemaPublicationRelations
    - lfirst_oid
    - list_concat
    - GetPublicationSchemas
    linkageType: ''
    returnType: List
    signature: 'List *

      GetAllSchemaPublicationRelations(Oid pubid, PublicationPartOpt pub_partopt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1256,1
    - Dst: GetSchemaPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1259,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1261
      start: 1254
    functionDepth: 9
    functionLinenumber: 1254
    functionLinenumberEnd: 1261
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 363
    functionsReached:
    - GetSchemaPublicationRelations
    - lfirst_oid
    - list_concat
    linkageType: ''
    returnType: void
    signature: void foreach(cell, pubschemalist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1278,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1278,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1279,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1280,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1282,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1284,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1286,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1286,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - pubid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1271
    functionDepth: 1
    functionLinenumber: 1271
    functionLinenumberEnd: 1299
    functionName: GetPublication
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 4
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - pstrdup
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - palloc_object
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Publication
    signature: 'Publication *

      GetPublication(Oid pubid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_publication_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1309,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1311,1
    - Dst: GetPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pubname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1304
    functionDepth: 2
    functionLinenumber: 1304
    functionLinenumberEnd: 1312
    functionName: GetPublicationByName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 2
    functionsReached:
    - get_publication_oid
    - GetPublication
    - OidIsValid
    linkageType: ''
    returnType: Publication
    signature: 'Publication *

      GetPublicationByName(const char *pubname, bool missing_ok)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1342,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1345,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1348,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1370,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1371,1
    - Dst: llast_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1372,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1373,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1394,1
    - Dst: GetTopMostAncestorInPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1394,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1401,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1402,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1403,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1404,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1405,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1405,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1406,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 2
    argNames:
    - relid
    - pub
    argTypes:
    - Oid
    - Publication*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1332
    functionDepth: 5
    functionLinenumber: 1332
    functionLinenumberEnd: 1407
    functionName: is_table_publishable_in_publication
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - SearchSysCacheExists2
    - llast_oid
    - get_rel_relispartition
    - get_rel_namespace
    - get_rel_relkind
    - OidIsValid
    - ObjectIdGetDatum
    - get_partition_ancestors
    - GetTopMostAncestorInPublication
    linkageType: ''
    returnType: bool
    signature: bool is_table_publishable_in_publication(Oid relid, Publication *pub)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1431,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1441,1
    - Dst: is_publishable_table
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1448,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1449,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1452,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1458,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1467,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1467,1
    - Dst: is_table_publishable_in_publication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1476,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1478,1
    - Dst: GetAllPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1491,1
    - Dst: GetIncludedPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1499,1
    - Dst: GetAllSchemaPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1503,1
    - Dst: list_concat_unique_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1507,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1521,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1523,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1525,1
    - Dst: filter_partitions
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1542,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1545,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1546,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1548,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1550,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1552,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1555,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1556,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1559,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1563,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1566,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1571,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1573,1
    - Dst: GetPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1581,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1583,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1584,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1591,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1592,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1593,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1594,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1595,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1596,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1598,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1601,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1606,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1619,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1622,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1625,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1629,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1653,1
    - Dst: buildint2vector
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1653,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1657,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1660,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1662,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1662,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1665,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 80
    argCount: 5
    argNames:
    - fcinfo
    - pubnames
    - target_relid
    - filter_by_relid
    - pub_missing_ok
    argTypes:
    - FunctionCallInfo
    - ArrayType*
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1421
    functionDepth: 11
    functionLinenumber: 1421
    functionLinenumberEnd: 1666
    functionName: pg_get_publication_tables
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - heap_form_tuple
    - filter_partitions
    - palloc_array
    - get_rel_namespace
    - GetPublication
    - SRF_RETURN_DONE
    - lfirst_oid
    - table_close
    - SRF_RETURN_NEXT
    - GetAllSchemaPublicationRelations
    - SRF_FIRSTCALL_INIT
    - SearchSysCacheExists2
    - TupleDescFinalize
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - SysCacheGetAttr
    - PointerGetDatum
    - palloc_object
    - list_length
    - TextDatumGetCString
    - ObjectIdGetDatum
    - TupleDescInitEntry
    - is_table_publishable_in_publication
    - CreateTemplateTupleDesc
    - SRF_PERCALL_SETUP
    - GetIncludedPublicationRelations
    - lappend
    - list_make1_oid
    - BlessTupleDesc
    - GetAllPublicationRelations
    - TupleDescAttr
    - deconstruct_array_builtin
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - is_publishable_table
    - SearchSysCacheCopy2
    - list_nth
    - buildint2vector
    - GetPublicationByName
    - list_concat_unique_oid
    linkageType: ''
    returnType: Datum
    signature: "Datum pg_get_publication_tables(FunctionCallInfo fcinfo, ArrayType
      *pubnames,\n\t\t\t\t\t\t  Oid target_relid, bool filter_by_relid,\n\t\t\t\t\t\t
      \ bool pub_missing_ok)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1521,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1523,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1526
      start: 1519
    functionDepth: 6
    functionLinenumber: 1519
    functionLinenumberEnd: 1526
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 363
    functionsReached:
    - lfirst_oid
    - lappend
    - palloc_object
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pub_elem_tables)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_get_publication_tables
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1676,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1678
      start: 1668
    functionDepth: 12
    functionLinenumber: 1668
    functionLinenumberEnd: 1678
    functionName: pg_get_publication_tables_a
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_ARRAYTYPE_P
    - pg_get_publication_tables
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_publication_tables_a(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_get_publication_tables
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1688,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1688,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1690
      start: 1680
    functionDepth: 12
    functionLinenumber: 1680
    functionLinenumberEnd: 1690
    functionName: pg_get_publication_tables_b
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_GETARG_ARRAYTYPE_P
    - pg_get_publication_tables
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_publication_tables_b(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1702,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1704,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1704,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1709,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1712,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1714,1
    - Dst: GetAllPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1717,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1723,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1727,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1730,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1732,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1734,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1734,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1737,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1695
    functionDepth: 11
    functionLinenumber: 1695
    functionLinenumberEnd: 1738
    functionName: pg_get_publication_sequences
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - list_nth_oid
    - ObjectIdGetDatum
    - SRF_RETURN_DONE
    - MemoryContextSwitchTo
    - text_to_cstring
    - list_length
    - GetAllPublicationRelations
    - GetPublicationByName
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_publication_sequences(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/slot.c:208,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/replication/slot.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 215
    functionName: ReplicationSlotsShmemRequest
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - mul_size
    - add_size
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotsShmemRequest(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/slot.c:229,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/replication/slot.c:230,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/slot.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 234
    functionName: ReplicationSlotsShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ConditionVariableInit
    - LWLockInitialize
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotsShmemInit(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/slot.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 243
    functionName: ReplicationSlotInitialize
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - before_shmem_exit
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotInitialize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slot.c:253,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/slot.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 257
    functionName: ReplicationSlotShmemExit
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotRelease
    - ReplicationSlotCleanup
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotShmemExit(int code, Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReplicationSlotValidateNameInternal
      Src: /src/postgres/src/backend/replication/slot.c:272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:281,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:282,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/slot.c:283,1
    - Dst: errhint_internal
      Src: /src/postgres/src/backend/replication/slot.c:284,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:286,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - name
    - allow_reserved_name
    - elevel
    argTypes:
    - char*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 293
    functionName: ReplicationSlotValidateName
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - errcode
    - pfree
    - ereport
    - ReplicationSlotValidateNameInternal
    - errhint_internal
    linkageType: ''
    returnType: bool
    signature: "bool ReplicationSlotValidateName(const char *name, bool allow_reserved_name,\n\t\t\t\t\t\t\tint
      elevel)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:315,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/slot.c:318,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:318,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:323,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/slot.c:326,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:326,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/slot.c:338,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:338,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/slot.c:339,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:339,1
    - Dst: IsSlotForConflictCheck
      Src: /src/postgres/src/backend/replication/slot.c:344,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/slot.c:347,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:347,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/slot.c:348,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:348,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 5
    argNames:
    - name
    - allow_reserved_name
    - err_code
    - err_msg
    - err_hint
    argTypes:
    - char*
    - bool
    - int*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 354
    functionName: ReplicationSlotValidateNameInternal
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - psprintf
    - strlen
    - _
    - IsSlotForConflictCheck
    linkageType: ''
    returnType: bool
    signature: "bool ReplicationSlotValidateNameInternal(const char *name, bool allow_reserved_name,\n\t\t\t\t\t\t\t\t\tint
      *err_code, char **err_msg, char **err_hint)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 363
    functionName: IsSlotForConflictCheck
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool IsSlotForConflictCheck(const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:386,1
    - Dst: ReplicationSlotValidateName
      Src: /src/postgres/src/backend/replication/slot.c:392,1
    - Dst: IsLogicalLauncher
      Src: /src/postgres/src/backend/replication/slot.c:392,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:405,1
    - Dst: IsSyncingReplicationSlots
      Src: /src/postgres/src/backend/replication/slot.c:405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:406,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:407,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:408,1
    - Dst: IsSyncingReplicationSlots
      Src: /src/postgres/src/backend/replication/slot.c:417,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:418,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:419,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:420,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:430,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:439,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:446,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:446,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:447,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:448,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:449,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:455,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:459,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:460,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:461,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:462,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:471,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:472,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slot.c:475,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/slot.c:476,1
    - Dst: CreateSlotOnDisk
      Src: /src/postgres/src/backend/replication/slot.c:502,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:510,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:516,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:518,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:521,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:529,1
    - Dst: pgstat_create_replslot
      Src: /src/postgres/src/backend/replication/slot.c:530,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:536,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:539,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 57
    argCount: 7
    argNames:
    - name
    - db_specific
    - persistency
    - two_phase
    - repack
    - failover
    - synced
    argTypes:
    - char*
    - bool
    - ReplicationSlotPersistency
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 540
    functionName: ReplicationSlotCreate
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - strcmp
    - errcode
    - ReplicationSlotValidateName
    - errhint
    - IsSyncingReplicationSlots
    - NameStr
    - RecoveryInProgress
    - Assert
    - CreateSlotOnDisk
    - SlotIsLogical
    - ConditionVariableBroadcast
    - errmsg
    - SpinLockRelease
    - IsLogicalLauncher
    - ereport
    - namestrcpy
    - memset
    - pgstat_create_replslot
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: "void ReplicationSlotCreate(const char *name, bool db_specific,\n\t\t\t\t\t
      \ ReplicationSlotPersistency persistency,\n\t\t\t\t\t  bool two_phase, bool
      repack, bool failover, bool synced)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:554,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:560,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:560,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:568,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - name
    - need_lock
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 571
    functionName: SearchNamedReplicationSlot
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - NameStr
    - LWLockAcquire
    - strcmp
    - LWLockRelease
    linkageType: ''
    returnType: ReplicationSlot
    signature: 'ReplicationSlot *

      SearchNamedReplicationSlot(const char *name, bool need_lock)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - slot
    argTypes:
    - ReplicationSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 588
    functionName: ReplicationSlotIndex
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int ReplicationSlotIndex(ReplicationSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:609,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/slot.c:612,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:612,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - index
    - name
    argTypes:
    - int
    - Name
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 616
    functionName: ReplicationSlotName
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - namestrcpy
    - LWLockAcquire
    - NameStr
    - LWLockRelease
    linkageType: ''
    returnType: bool
    signature: bool ReplicationSlotName(int index, Name name)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:635,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:638,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:640,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/slot.c:643,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:646,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:648,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:649,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:650,1
    - Dst: IsLogicalLauncher
      Src: /src/postgres/src/backend/replication/slot.c:659,1
    - Dst: IsSlotForConflictCheck
      Src: /src/postgres/src/backend/replication/slot.c:659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:660,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:661,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:662,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:663,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/slot.c:677,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:684,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:688,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:689,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:694,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/replication/slot.c:696,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:697,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/replication/slot.c:709,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/slot.c:711,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:715,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:717,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:718,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/slot.c:721,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:732,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:733,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:734,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:735,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:736,1
    - Dst: GetSlotInvalidationCauseName
      Src: /src/postgres/src/backend/replication/slot.c:737,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:740,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:747,1
    - Dst: pgstat_acquire_replslot
      Src: /src/postgres/src/backend/replication/slot.c:748,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:753,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:754,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:755,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:756,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:757,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:758,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 3
    argNames:
    - name
    - nowait
    - error_if_invalid
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 760
    functionName: ReplicationSlotAcquire
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - errcode
    - NameStr
    - Assert
    - SlotIsLogical
    - ConditionVariableCancelSleep
    - SearchNamedReplicationSlot
    - ConditionVariableBroadcast
    - errmsg
    - SpinLockRelease
    - ConditionVariablePrepareToSleep
    - ReplicationSlotSetInactiveSince
    - IsLogicalLauncher
    - ereport
    - GetSlotInvalidationCauseName
    - GetPGProcByNumber
    - IsSlotForConflictCheck
    - ConditionVariableSleep
    - pgstat_acquire_replslot
    - LWLockRelease
    - errdetail
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotAcquire(const char *name, bool nowait, bool error_if_invalid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:776,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:778,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/slot.c:781,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:781,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/slot.c:789,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:799,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:800,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:802,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:804,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slot.c:805,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/slot.c:812,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:820,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:822,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:823,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:824,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:827,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:833,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:836,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:840,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:842,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:844,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:847,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 768
    functionDepth: 2
    functionLinenumber: 768
    functionLinenumberEnd: 849
    functionName: ReplicationSlotRelease
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - GetCurrentTimestamp
    - ReplicationSlotSetInactiveSince
    - LWLockAcquire
    - Assert
    - pfree
    - pstrdup
    - SlotIsLogical
    - ereport
    - ConditionVariableBroadcast
    - NameStr
    - SpinLockRelease
    - LWLockRelease
    - errmsg
    - SpinLockAcquire
    - ReplicationSlotsComputeRequiredXmin
    - TransactionIdIsValid
    - ReplicationSlotDropAcquired
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotRelease(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:867,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:871,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:879,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:882,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:887,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:888,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:889,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:891,1
    - Dst: ReplicationSlotDropPtr
      Src: /src/postgres/src/backend/replication/slot.c:894,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:896,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:900,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:903,1
    - Dst: RequestDisableLogicalDecoding
      Src: /src/postgres/src/backend/replication/slot.c:906,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - synced_only
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 860
    functionDepth: 2
    functionLinenumber: 860
    functionLinenumberEnd: 907
    functionName: ReplicationSlotCleanup
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - LWLockAcquire
    - Assert
    - SlotIsLogical
    - RequestDisableLogicalDecoding
    - ConditionVariableBroadcast
    - SpinLockRelease
    - LWLockRelease
    - SpinLockAcquire
    - ReplicationSlotDropPtr
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotCleanup(bool synced_only)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/slot.c:917,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:923,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:924,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:925,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:926,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:927,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/slot.c:929,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:929,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - name
    - nowait
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 914
    functionDepth: 3
    functionLinenumber: 914
    functionLinenumberEnd: 930
    functionName: ReplicationSlotDrop
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotAcquire
    - errcode
    - ereport
    - SlotIsLogical
    - errmsg
    - errdetail
    - RecoveryInProgress
    - ReplicationSlotDropAcquired
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotDrop(const char *name, bool nowait)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:952,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/slot.c:954,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/slot.c:956,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:957,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:958,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:959,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:962,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:969,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:970,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:971,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:972,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:979,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:980,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:981,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:992,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:993,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:994,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:998,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1000,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1008,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1010,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slot.c:1017,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slot.c:1018,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slot.c:1021,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 3
    argNames:
    - name
    - failover
    - two_phase
    argTypes:
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 945
    functionDepth: 3
    functionLinenumber: 945
    functionLinenumberEnd: 1022
    functionName: ReplicationSlotAlter
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotAcquire
    - SpinLockAcquire
    - ReplicationSlotMarkDirty
    - ReplicationSlotRelease
    - errcode
    - Assert
    - ereport
    - errmsg
    - SpinLockRelease
    - errdetail
    - ReplicationSlotSave
    - RecoveryInProgress
    - SlotIsPhysical
    linkageType: ''
    returnType: void
    signature: "void ReplicationSlotAlter(const char *name, const bool *failover,\n\t\t\t\t\t
      const bool *two_phase)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1035,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1039,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1039,1
    - Dst: ReplicationSlotDropPtr
      Src: /src/postgres/src/backend/replication/slot.c:1044,1
    - Dst: RequestDisableLogicalDecoding
      Src: /src/postgres/src/backend/replication/slot.c:1047,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - try_disable
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1048
    functionName: ReplicationSlotDropAcquired
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - Assert
    - SlotIsLogical
    - RequestDisableLogicalDecoding
    - ReplicationSlotDropPtr
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotDropAcquired(bool try_disable)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1065,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:1068,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1068,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:1069,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1069,1
    - Dst: rename
      Src: /src/postgres/src/backend/replication/slot.c:1078,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:1088,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:1089,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:1090,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:1091,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1097,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1099,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:1102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1104,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:1105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1106,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1119,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1122,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:1123,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slot.c:1129,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:1130,1
    - Dst: rmtree
      Src: /src/postgres/src/backend/replication/slot.c:1137,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1138,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1139,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1147,1
    - Dst: pgstat_drop_replslot
      Src: /src/postgres/src/backend/replication/slot.c:1148,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - slot
    argTypes:
    - ReplicationSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1054
    functionDepth: 4
    functionLinenumber: 1054
    functionLinenumberEnd: 1155
    functionName: ReplicationSlotDropPtr
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - LWLockAcquire
    - ReplicationSlotsComputeRequiredLSN
    - NameStr
    - pgstat_drop_replslot
    - rename
    - SlotIsLogical
    - ConditionVariableBroadcast
    - SpinLockRelease
    - errmsg
    - ReplicationSlotsComputeRequiredXmin
    - ereport
    - fsync_fname
    - errcode_for_file_access
    - START_CRIT_SECTION
    - LWLockRelease
    - sprintf
    - rmtree
    - SpinLockAcquire
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotDropPtr(ReplicationSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1166,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:1168,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1168,1
    - Dst: SaveSlotToPath
      Src: /src/postgres/src/backend/replication/slot.c:1169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1161
    functionDepth: 1
    functionLinenumber: 1161
    functionLinenumberEnd: 1170
    functionName: ReplicationSlotSave
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - Assert
    - SaveSlotToPath
    - NameStr
    - sprintf
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotSave(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1184,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1186,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1179
    functionDepth: 2
    functionLinenumber: 1179
    functionLinenumberEnd: 1190
    functionName: ReplicationSlotMarkDirty
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - Assert
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotMarkDirty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1202,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1204,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1206,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slot.c:1208,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slot.c:1209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1196
    functionDepth: 3
    functionLinenumber: 1196
    functionLinenumberEnd: 1210
    functionName: ReplicationSlotPersist
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotMarkDirty
    - Assert
    - SpinLockRelease
    - ReplicationSlotSave
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotPersist(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1229,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/slot.c:1230,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/slot.c:1231,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1255,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1267,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1271,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1278,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1279,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/slot.c:1280,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1284,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1285,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/slot.c:1286,1
    - Dst: ProcArraySetReplicationSlotXmin
      Src: /src/postgres/src/backend/replication/slot.c:1290,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1293,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 23
    argCount: 1
    argNames:
    - already_locked
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1221
    functionDepth: 2
    functionLinenumber: 1221
    functionLinenumberEnd: 1294
    functionName: ReplicationSlotsComputeRequiredXmin
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - TransactionIdPrecedes
    - LWLockAcquire
    - Assert
    - SpinLockRelease
    - LWLockHeldByMeInMode
    - LWLockRelease
    - SpinLockAcquire
    - TransactionIdIsValid
    - ProcArraySetReplicationSlotXmin
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotsComputeRequiredXmin(bool already_locked)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1309,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1311,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1323,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1328,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1344,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1351,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1352,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1356,1
    - Dst: XLogSetReplicationSlotMinimumLSN
      Src: /src/postgres/src/backend/replication/slot.c:1358,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1303
    functionDepth: 3
    functionLinenumber: 1303
    functionLinenumberEnd: 1359
    functionName: ReplicationSlotsComputeRequiredLSN
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - LWLockAcquire
    - Assert
    - XLogSetReplicationSlotMinimumLSN
    - SpinLockRelease
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotsComputeRequiredLSN(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1382,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1399,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1403,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1408,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1424,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1431,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1434,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1439,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1373
    functionDepth: 2
    functionLinenumber: 1373
    functionLinenumberEnd: 1442
    functionName: ReplicationSlotsComputeLogicalRestartLSN
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - LWLockAcquire
    - SlotIsLogical
    - SpinLockRelease
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr ReplicationSlotsComputeLogicalRestartLSN(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1462,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1474,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1484,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1488,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1490,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - dboid
    - nslots
    - nactive
    argTypes:
    - Oid
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1452
    functionDepth: 2
    functionLinenumber: 1452
    functionLinenumberEnd: 1495
    functionName: ReplicationSlotsCountDBSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - SlotIsLogical
    - SpinLockRelease
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool ReplicationSlotsCountDBSlots(Oid dboid, int *nslots, int *nactive)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1525,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1539,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1546,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1548,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1557,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1559,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1566,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1590,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:1591,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1592,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/replication/slot.c:1593,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1604,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/slot.c:1605,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1609,1
    - Dst: RequestDisableLogicalDecoding
      Src: /src/postgres/src/backend/replication/slot.c:1612,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 1
    argNames:
    - dboid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1513
    functionDepth: 2
    functionLinenumber: 1513
    functionLinenumberEnd: 1613
    functionName: ReplicationSlotsDropDBSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - errcode
    - SlotIsLogical
    - ereport
    - RequestDisableLogicalDecoding
    - SpinLockRelease
    - NameStr
    - errmsg
    - LWLockRelease
    - SpinLockAcquire
    - GetPGProcByNumber
    - ReplicationSlotDropAcquired
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotsDropDBSlots(Oid dboid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1626,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/slot.c:1638,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1641,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1643,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1651,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1618
    functionDepth: 2
    functionLinenumber: 1618
    functionLinenumberEnd: 1654
    functionName: CheckLogicalSlotExists
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - SpinLockRelease
    - LWLockRelease
    - SpinLockAcquire
    - SlotIsPhysical
    linkageType: ''
    returnType: bool
    signature: bool CheckLogicalSlotExists(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1669,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:1670,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1671,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1675,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:1676,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1681,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:1682,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1683,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - repack
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1660
    functionDepth: 1
    functionLinenumber: 1660
    functionLinenumberEnd: 1684
    functionName: CheckSlotRequirements
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void CheckSlotRequirements(bool repack)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: has_rolreplication
      Src: /src/postgres/src/backend/replication/slot.c:1692,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/slot.c:1692,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1693,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:1694,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1695,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:1696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1689
    functionDepth: 1
    functionLinenumber: 1689
    functionLinenumberEnd: 1698
    functionName: CheckSlotPermissions
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - has_rolreplication
    - ereport
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: void CheckSlotPermissions(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1714,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1715,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1715,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1732,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/slot.c:1748,1
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/replication/slot.c:1749,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:1750,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/slot.c:1751,1
    - Dst: GetXLogInsertRecPtr
      Src: /src/postgres/src/backend/replication/slot.c:1753,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1755,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1757,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:1760,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/slot.c:1763,1
    - Dst: XLogGetLastRemovedSegno
      Src: /src/postgres/src/backend/replication/slot.c:1764,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slot.c:1765,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1766,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1768,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:1770,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1770,1
    - Dst: LogStandbySnapshot
      Src: /src/postgres/src/backend/replication/slot.c:1775,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/slot.c:1778,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1706
    functionDepth: 5
    functionLinenumber: 1706
    functionLinenumberEnd: 1780
    functionName: ReplicationSlotReserveWal
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - GetRedoRecPtr
    - LWLockAcquire
    - ReplicationSlotsComputeRequiredLSN
    - GetXLogReplayRecPtr
    - NameStr
    - GetXLogInsertRecPtr
    - LogStandbySnapshot
    - RecoveryInProgress
    - XLByteToSeg
    - elog
    - XLogRecPtrIsValid
    - Assert
    - SlotIsLogical
    - XLogGetLastRemovedSegno
    - SpinLockRelease
    - SlotIsPhysical
    - XLogFlush
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotReserveWal(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1798,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1799,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1807,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/replication/slot.c:1808,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/slot.c:1811,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1814,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1814,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1819,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1819,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/slot.c:1824,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1824,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1830,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1830,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1834,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1834,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/replication/slot.c:1839,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1842,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1844,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1845,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1846,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1847,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/slot.c:1848,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:1849,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:1851,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:1852,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 8
    argNames:
    - cause
    - terminating
    - pid
    - slotname
    - restart_lsn
    - oldestLSN
    - snapshotConflictHorizon
    - slot_idle_seconds
    argTypes:
    - ReplicationSlotInvalidationCause
    - bool
    - int
    - NameData
    - XLogRecPtr
    - XLogRecPtr
    - TransactionId
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1785
    functionDepth: 3
    functionLinenumber: 1785
    functionLinenumberEnd: 1853
    functionName: ReportSlotInvalidation
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - _
    - pfree
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - ereport
    - ngettext
    - errhint
    - pg_unreachable
    - errmsg
    - NameStr
    - errdetail_internal
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: "void ReportSlotInvalidation(ReplicationSlotInvalidationCause cause,\n\t\t\t\t\t
      \  bool terminating,\n\t\t\t\t\t   int pid,\n\t\t\t\t\t   NameData slotname,\n\t\t\t\t\t
      \  XLogRecPtr restart_lsn,\n\t\t\t\t\t   XLogRecPtr oldestLSN,\n\t\t\t\t\t   TransactionId
      snapshotConflictHorizon,\n\t\t\t\t\t   long slot_idle_seconds)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1871,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:1873,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - ReplicationSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1867
    functionDepth: 1
    functionLinenumber: 1867
    functionLinenumberEnd: 1874
    functionName: CanInvalidateIdleSlot
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - RecoveryInProgress
    linkageType: ''
    returnType: bool
    signature: bool CanInvalidateIdleSlot(ReplicationSlot *s)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1889,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1895,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1903,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1909,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/slot.c:1910,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1913,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/slot.c:1914,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1922,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1928,1
    - Dst: CanInvalidateIdleSlot
      Src: /src/postgres/src/backend/replication/slot.c:1930,1
    - Dst: IS_INJECTION_POINT_ATTACHED
      Src: /src/postgres/src/backend/replication/slot.c:1938,1
    - Dst: TimestampDifferenceExceedsSeconds
      Src: /src/postgres/src/backend/replication/slot.c:1949,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 32
    argCount: 7
    argNames:
    - possible_causes
    - s
    - oldestLSN
    - dboid
    - snapshotConflictHorizon
    - inactive_since
    - now
    argTypes:
    - uint32
    - ReplicationSlot*
    - XLogRecPtr
    - Oid
    - TransactionId
    - TimestampTz*
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1883
    functionDepth: 2
    functionLinenumber: 1883
    functionLinenumberEnd: 1959
    functionName: DetermineSlotInvalidationCause
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - CanInvalidateIdleSlot
    - Assert
    - TimestampDifferenceExceedsSeconds
    - SlotIsLogical
    - IS_INJECTION_POINT_ATTACHED
    - TransactionIdPrecedesOrEquals
    - TransactionIdIsValid
    linkageType: ''
    returnType: ReplicationSlotInvalidationCause
    signature: "ReplicationSlotInvalidationCause DetermineSlotInvalidationCause(uint32
      possible_causes, ReplicationSlot *s,\n\t\t\t\t\t\t\t   XLogRecPtr oldestLSN,
      Oid dboid,\n\t\t\t\t\t\t\t   TransactionId snapshotConflictHorizon,\n\t\t\t\t\t\t\t
      \  TimestampTz *inactive_since, TimestampTz now)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1997,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/slot.c:1997,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2002,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/slot.c:2012,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2022,1
    - Dst: DetermineSlotInvalidationCause
      Src: /src/postgres/src/backend/replication/slot.c:2028,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2038,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2040,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/replication/slot.c:2078,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2079,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2082,1
    - Dst: TimestampDifference
      Src: /src/postgres/src/backend/replication/slot.c:2092,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/slot.c:2103,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2105,1
    - Dst: ReportSlotInvalidation
      Src: /src/postgres/src/backend/replication/slot.c:2122,1
    - Dst: SignalRecoveryConflict
      Src: /src/postgres/src/backend/replication/slot.c:2128,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/replication/slot.c:2128,1
    - Dst: kill
      Src: /src/postgres/src/backend/replication/slot.c:2132,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/replication/slot.c:2138,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2154,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2167,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slot.c:2171,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slot.c:2172,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slot.c:2173,1
    - Dst: ReportSlotInvalidation
      Src: /src/postgres/src/backend/replication/slot.c:2175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2185,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/slot.c:2185,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 67
    argCount: 6
    argNames:
    - possible_causes
    - s
    - oldestLSN
    - dboid
    - snapshotConflictHorizon
    - released_lock_out
    argTypes:
    - uint32
    - ReplicationSlot*
    - XLogRecPtr
    - Oid
    - TransactionId
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 1975
    functionDepth: 4
    functionLinenumber: 1975
    functionLinenumberEnd: 2189
    functionName: InvalidatePossiblyObsoleteSlot
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotMarkDirty
    - LWLockAcquire
    - LWLockHeldByMe
    - Assert
    - SpinLockRelease
    - ReplicationSlotSave
    - ConditionVariablePrepareToSleep
    - GetCurrentTimestamp
    - kill
    - SignalRecoveryConflict
    - ReportSlotInvalidation
    - ReplicationSlotRelease
    - GetPGProcByNumber
    - DetermineSlotInvalidationCause
    - ConditionVariableSleep
    - LWLockRelease
    - LWLockHeldByMeInMode
    - TimestampDifference
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: "bool InvalidatePossiblyObsoleteSlot(uint32 possible_causes,\n\t\t\t\t\t\t\t
      \  ReplicationSlot *s,\n\t\t\t\t\t\t\t   XLogRecPtr oldestLSN,\n\t\t\t\t\t\t\t
      \  Oid dboid, TransactionId snapshotConflictHorizon,\n\t\t\t\t\t\t\t   bool
      *released_lock_out)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2225,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:2225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2226,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2227,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/backend/replication/slot.c:2232,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2236,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:2246,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2248,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2250,1
    - Dst: InvalidatePossiblyObsoleteSlot
      Src: /src/postgres/src/backend/replication/slot.c:2255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2259,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:2268,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2278,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:2280,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2281,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2288,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slot.c:2295,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:2296,1
    - Dst: RequestDisableLogicalDecoding
      Src: /src/postgres/src/backend/replication/slot.c:2306,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 42
    argCount: 4
    argNames:
    - possible_causes
    - oldestSegno
    - dboid
    - snapshotConflictHorizon
    argTypes:
    - uint32
    - XLogSegNo
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2309
      start: 2215
    functionDepth: 5
    functionLinenumber: 2215
    functionLinenumberEnd: 2309
    functionName: InvalidateObsoleteReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 3
    functionsReached:
    - InvalidatePossiblyObsoleteSlot
    - LWLockAcquire
    - Assert
    - SlotIsLogical
    - XLogSegNoOffsetToRecPtr
    - RequestDisableLogicalDecoding
    - ReplicationSlotsComputeRequiredLSN
    - SpinLockRelease
    - LWLockRelease
    - SpinLockAcquire
    - ReplicationSlotsComputeRequiredXmin
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: "bool InvalidateObsoleteReplicationSlots(uint32 possible_causes,\n\t\t\t\t\t\t\t\t
      \  XLogSegNo oldestSegno, Oid dboid,\n\t\t\t\t\t\t\t\t   TransactionId snapshotConflictHorizon)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slot.c:2325,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2340,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2351,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2351,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:2361,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2363,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2371,1
    - Dst: SaveSlotToPath
      Src: /src/postgres/src/backend/replication/slot.c:2381,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2383,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:2390,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - is_shutdown
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2319
    functionDepth: 4
    functionLinenumber: 2319
    functionLinenumberEnd: 2391
    functionName: CheckPointReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - elog
    - LWLockAcquire
    - SlotIsLogical
    - ReplicationSlotsComputeRequiredLSN
    - NameStr
    - SpinLockRelease
    - sprintf
    - SaveSlotToPath
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void CheckPointReplicationSlots(bool is_shutdown)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slot.c:2403,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/replication/slot.c:2406,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/replication/slot.c:2407,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:2412,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:2413,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/slot.c:2416,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/replication/slot.c:2417,1
    - Dst: pg_str_endswith
      Src: /src/postgres/src/backend/replication/slot.c:2424,1
    - Dst: rmtree
      Src: /src/postgres/src/backend/replication/slot.c:2426,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2428,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2429,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2433,1
    - Dst: RestoreSlotFromDisk
      Src: /src/postgres/src/backend/replication/slot.c:2438,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/slot.c:2440,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slot.c:2447,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:2448,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2449
      start: 2397
    functionDepth: 4
    functionLinenumber: 2397
    functionLinenumberEnd: 2449
    functionName: StartupReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - elog
    - strcmp
    - RestoreSlotFromDisk
    - pg_str_endswith
    - AllocateDir
    - FreeDir
    - ereport
    - fsync_fname
    - get_dirent_type
    - ReplicationSlotsComputeRequiredLSN
    - errmsg
    - rmtree
    - ReadDir
    - ReplicationSlotsComputeRequiredXmin
    - snprintf
    linkageType: ''
    returnType: void
    signature: void StartupReplicationSlots(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2471,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2471,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2472,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2472,1
    - Dst: stat
      Src: /src/postgres/src/backend/replication/slot.c:2481,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/replication/slot.c:2481,1
    - Dst: rmtree
      Src: /src/postgres/src/backend/replication/slot.c:2482,1
    - Dst: MakePGDirectory
      Src: /src/postgres/src/backend/replication/slot.c:2485,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2486,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2487,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2488,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2490,1
    - Dst: SaveSlotToPath
      Src: /src/postgres/src/backend/replication/slot.c:2494,1
    - Dst: rename
      Src: /src/postgres/src/backend/replication/slot.c:2497,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2498,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2499,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2500,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2508,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2510,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2511,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2513,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - slot
    argTypes:
    - ReplicationSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2514
      start: 2458
    functionDepth: 4
    functionLinenumber: 2458
    functionLinenumberEnd: 2514
    functionName: CreateSlotOnDisk
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - MakePGDirectory
    - rename
    - stat
    - ereport
    - START_CRIT_SECTION
    - fsync_fname
    - NameStr
    - errmsg
    - sprintf
    - rmtree
    - SaveSlotToPath
    - END_CRIT_SECTION
    - errcode_for_file_access
    - S_ISDIR
    linkageType: ''
    returnType: void
    signature: void CreateSlotOnDisk(ReplicationSlot *slot)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2529,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2532,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2538,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slot.c:2541,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2543,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2544,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2546,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2557,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2559,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2560,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2561,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2567,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2571,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/slot.c:2573,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2575,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2577,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2580,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2583,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/slot.c:2584,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2588,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2589,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/slot.c:2590,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2591,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2595,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2596,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2597,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2601,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2604,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/replication/slot.c:2605,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2609,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2610,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/slot.c:2611,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2615,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2617,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2621,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2623,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/slot.c:2627,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2628,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2631,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2633,1
    - Dst: rename
      Src: /src/postgres/src/backend/replication/slot.c:2639,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/slot.c:2643,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2647,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2648,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2649,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2657,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2659,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2660,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2661,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2663,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2669,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2674,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2676,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 76
    argCount: 3
    argNames:
    - slot
    - dir
    - elevel
    argTypes:
    - ReplicationSlot*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2519
    functionDepth: 2
    functionLinenumber: 2519
    functionLinenumberEnd: 2677
    functionName: SaveSlotToPath
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 3
    functionsReached:
    - LWLockAcquire
    - FIN_CRC32C
    - COMP_CRC32C
    - pg_fsync
    - OpenTransientFile
    - rename
    - memcpy
    - write
    - pgstat_report_wait_end
    - SpinLockRelease
    - errmsg
    - CloseTransientFile
    - sprintf
    - ereport
    - fsync_fname
    - memset
    - errcode_for_file_access
    - unlink
    - START_CRIT_SECTION
    - INIT_CRC32C
    - LWLockRelease
    - pgstat_report_wait_start
    - SpinLockAcquire
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void SaveSlotToPath(ReplicationSlot *slot, const char *dir, int elevel)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2698,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2699,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/slot.c:2700,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2701,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2702,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2703,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2705,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slot.c:2707,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2710,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2717,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2719,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2725,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/replication/slot.c:2726,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2727,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2729,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2731,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2734,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2735,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2736,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2739,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/slot.c:2740,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2741,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2745,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2746,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2747,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2749,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2750,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2751,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2758,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2759,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2760,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2765,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2766,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2767,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2772,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2773,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2774,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2778,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/slot.c:2779,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2782,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2786,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2787,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2788,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2790,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2791,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2792,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2796,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2797,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2798,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2799,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2802,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2803,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2806,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2808,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2809,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2810,1
    - Dst: rmtree
      Src: /src/postgres/src/backend/replication/slot.c:2819,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2821,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2822,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2825,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2844,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2845,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2846,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2847,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2848,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2859,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2860,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2861,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2862,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2863,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2866,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2867,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2868,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2869,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2870,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/slot.c:2889,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/slot.c:2913,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:2915,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2922,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2923,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2924,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 84
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2925
      start: 2682
    functionDepth: 4
    functionLinenumber: 2682
    functionLinenumberEnd: 2925
    functionName: RestoreSlotFromDisk
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - errcode
    - FIN_CRC32C
    - COMP_CRC32C
    - errhint
    - NameStr
    - pg_fsync
    - read
    - elog
    - OpenTransientFile
    - memcpy
    - pgstat_report_wait_end
    - errmsg
    - CloseTransientFile
    - sprintf
    - GetCurrentTimestamp
    - ReplicationSlotSetInactiveSince
    - EQ_CRC32C
    - ereport
    - fsync_fname
    - errcode_for_file_access
    - unlink
    - START_CRIT_SECTION
    - INIT_CRC32C
    - pgstat_report_wait_start
    - rmtree
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void RestoreSlotFromDisk(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2934,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:2939,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2943,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - cause_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2945
      start: 2931
    functionDepth: 1
    functionLinenumber: 2931
    functionLinenumberEnd: 2945
    functionName: GetSlotInvalidationCause
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - Assert
    - strcmp
    linkageType: ''
    returnType: ReplicationSlotInvalidationCause
    signature: ReplicationSlotInvalidationCause GetSlotInvalidationCause(const char
      *cause_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cause
    argTypes:
    - ReplicationSlotInvalidationCause
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2963
      start: 2951
    functionDepth: 1
    functionLinenumber: 2951
    functionLinenumberEnd: 2963
    functionName: GetSlotInvalidationCauseName
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      GetSlotInvalidationCauseName(ReplicationSlotInvalidationCause cause)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/replication/slot.c:2974,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2976,1
    - Dst: ReplicationSlotValidateNameInternal
      Src: /src/postgres/src/backend/replication/slot.c:2987,1
    - Dst: GUC_check_errcode
      Src: /src/postgres/src/backend/replication/slot.c:2990,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2991,1
    - Dst: GUC_check_errhint
      Src: /src/postgres/src/backend/replication/slot.c:2993,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - rawname
    - elemlist
    argTypes:
    - char*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2999
      start: 2970
    functionDepth: 3
    functionLinenumber: 2970
    functionLinenumberEnd: 2999
    functionName: validate_sync_standby_slots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotValidateNameInternal
    - GUC_check_errhint
    - GUC_check_errcode
    - SplitIdentifierString
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool validate_sync_standby_slots(char *rawname, List **elemlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReplicationSlotValidateNameInternal
      Src: /src/postgres/src/backend/replication/slot.c:2987,1
    - Dst: GUC_check_errcode
      Src: /src/postgres/src/backend/replication/slot.c:2990,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2991,1
    - Dst: GUC_check_errhint
      Src: /src/postgres/src/backend/replication/slot.c:2993,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2996
      start: 2981
    functionDepth: 3
    functionLinenumber: 2981
    functionLinenumberEnd: 2996
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 9
    functionsReached:
    - GUC_check_errhint
    - GUC_check_errcode
    - GUC_check_errdetail
    - ReplicationSlotValidateNameInternal
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, name, *elemlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/slot.c:3018,1
    - Dst: validate_sync_standby_slots
      Src: /src/postgres/src/backend/replication/slot.c:3021,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:3025,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/slot.c:3026,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:3033,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/replication/slot.c:3036,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/slot.c:3041,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/replication/slot.c:3046,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:3047,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:3052,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/slot.c:3053,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3055
      start: 3004
    functionDepth: 4
    functionLinenumber: 3004
    functionLinenumberEnd: 3055
    functionName: check_synchronized_standby_slots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - list_free
    - pfree
    - validate_sync_standby_slots
    - pstrdup
    - guc_malloc
    - strlen
    - list_length
    - strcpy
    linkageType: ''
    returnType: bool
    signature: bool check_synchronized_standby_slots(char **newval, void **extra,
      GucSource source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcpy
      Src: /src/postgres/src/backend/replication/slot.c:3046,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:3047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3048
      start: 3044
    functionDepth: 0
    functionLinenumber: 3044
    functionLinenumberEnd: 3048
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 9
    functionsReached:
    - strlen
    - strcpy
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, slot_name, elemlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3070
      start: 3060
    functionDepth: 0
    functionLinenumber: 3060
    functionLinenumberEnd: 3070
    functionName: assign_synchronized_standby_slots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void assign_synchronized_standby_slots(const char *newval, void *extra)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:3092,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:3095,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - slot_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3099
      start: 3075
    functionDepth: 0
    functionLinenumber: 3075
    functionLinenumberEnd: 3099
    functionName: SlotExistsInSyncStandbySlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - strlen
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool SlotExistsInSyncStandbySlots(const char *slot_name)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:3126,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:3133,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:3141,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/slot.c:3151,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:3159,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:3160,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:3161,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:3163,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:3165,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:3171,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:3173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:3174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:3175,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:3177,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:3179,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:3184,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:3188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:3193,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:3194,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:3195,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:3197,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:3199,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:3204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:3208,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:3209,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:3210,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:3212,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:3214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:3221,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:3223,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:3229,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:3232,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:3242,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slot.c:3242,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 2
    argNames:
    - wait_for_lsn
    - elevel
    argTypes:
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3248
      start: 3108
    functionDepth: 2
    functionLinenumber: 3108
    functionLinenumberEnd: 3248
    functionName: StandbySlotsHaveCaughtup
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - SpinLockAcquire
    - LWLockAcquire
    - errcode
    - Assert
    - ereport
    - SlotIsLogical
    - SearchNamedReplicationSlot
    - errhint
    - strlen
    - errmsg
    - SpinLockRelease
    - errdetail
    - LWLockRelease
    - RecoveryInProgress
    linkageType: ''
    returnType: bool
    signature: bool StandbySlotsHaveCaughtup(XLogRecPtr wait_for_lsn, int elevel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/slot.c:3267,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/slot.c:3271,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/slot.c:3276,1
    - Dst: StandbySlotsHaveCaughtup
      Src: /src/postgres/src/backend/replication/slot.c:3280,1
    - Dst: ConditionVariableTimedSleep
      Src: /src/postgres/src/backend/replication/slot.c:3288,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/slot.c:3292,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - wait_for_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3293
      start: 3256
    functionDepth: 3
    functionLinenumber: 3256
    functionLinenumberEnd: 3293
    functionName: WaitForStandbyConfirmation
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ProcessConfigFile
    - CHECK_FOR_INTERRUPTS
    - ConditionVariableCancelSleep
    - StandbySlotsHaveCaughtup
    - ConditionVariableTimedSleep
    - ConditionVariablePrepareToSleep
    linkageType: ''
    returnType: void
    signature: void WaitForStandbyConfirmation(XLogRecPtr wait_for_lsn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:51,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/slotfuncs.c:54,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:61,1
    - Dst: ReplicationSlotReserveWal
      Src: /src/postgres/src/backend/replication/slotfuncs.c:62,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slotfuncs.c:67,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slotfuncs.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - name
    - immediately_reserve
    - temporary
    - restart_lsn
    argTypes:
    - char*
    - bool
    - bool
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 47
    functionDepth: 6
    functionLinenumber: 47
    functionLinenumberEnd: 70
    functionName: create_physical_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotReserveWal
    - XLogRecPtrIsValid
    - ReplicationSlotMarkDirty
    - ReplicationSlotCreate
    - Assert
    - ReplicationSlotSave
    linkageType: ''
    returnType: void
    signature: "void create_physical_replication_slot(char *name, bool immediately_reserve,\n\t\t\t\t\t\t\t\t
      bool temporary, XLogRecPtr restart_lsn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:79,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:80,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:81,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/slotfuncs.c:88,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slotfuncs.c:89,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:91,1
    - Dst: CheckSlotRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:93,1
    - Dst: create_physical_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:95,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:95,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:100,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:105,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/slotfuncs.c:111,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:112,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:114,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/slotfuncs.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 76
    functionDepth: 7
    functionLinenumber: 76
    functionLinenumberEnd: 117
    functionName: pg_create_physical_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - CheckSlotRequirements
    - CheckSlotPermissions
    - PG_GETARG_NAME
    - PG_GETARG_BOOL
    - create_physical_replication_slot
    - NameGetDatum
    - heap_form_tuple
    - PG_RETURN_DATUM
    - HeapTupleGetDatum
    - LSNGetDatum
    - NameStr
    - ReplicationSlotRelease
    - get_call_result_type
    linkageType: ''
    returnType: Datum
    signature: Datum pg_create_physical_replication_slot(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:137,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/slotfuncs.c:147,1
    - Dst: EnsureLogicalDecodingEnabled
      Src: /src/postgres/src/backend/replication/slotfuncs.c:155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:156,1
    - Dst: IsLogicalDecodingEnabled
      Src: /src/postgres/src/backend/replication/slotfuncs.c:156,1
    - Dst: CreateInitDecodingContext
      Src: /src/postgres/src/backend/replication/slotfuncs.c:165,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/slotfuncs.c:169,1
    - Dst: DecodingContextFindStartpoint
      Src: /src/postgres/src/backend/replication/slotfuncs.c:179,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/slotfuncs.c:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 7
    argNames:
    - name
    - plugin
    - temporary
    - two_phase
    - failover
    - restart_lsn
    - find_startpoint
    argTypes:
    - char*
    - char*
    - bool
    - bool
    - bool
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 128
    functionDepth: 3
    functionLinenumber: 128
    functionLinenumberEnd: 183
    functionName: create_logical_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 1
    functionsReached:
    - ReplicationSlotCreate
    - Assert
    - FreeDecodingContext
    - CreateInitDecodingContext
    - IsLogicalDecodingEnabled
    - EnsureLogicalDecodingEnabled
    - XL_ROUTINE
    - DecodingContextFindStartpoint
    linkageType: ''
    returnType: void
    signature: "void create_logical_replication_slot(char *name, char *plugin,\n\t\t\t\t\t\t\t\tbool
      temporary, bool two_phase,\n\t\t\t\t\t\t\t\tbool failover,\n\t\t\t\t\t\t\t\tXLogRecPtr
      restart_lsn,\n\t\t\t\t\t\t\t\tbool find_startpoint)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:191,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:192,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:193,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:194,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:195,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/slotfuncs.c:202,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slotfuncs.c:203,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:205,1
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:207,1
    - Dst: create_logical_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:209,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:209,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:210,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:217,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:218,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slotfuncs.c:220,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/slotfuncs.c:222,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:223,1
    - Dst: ReplicationSlotPersist
      Src: /src/postgres/src/backend/replication/slotfuncs.c:227,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:228,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/slotfuncs.c:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 188
    functionDepth: 6
    functionLinenumber: 188
    functionLinenumberEnd: 231
    functionName: pg_create_logical_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - CheckSlotPermissions
    - PG_GETARG_NAME
    - PG_GETARG_BOOL
    - NameGetDatum
    - ReplicationSlotRelease
    - heap_form_tuple
    - PG_RETURN_DATUM
    - ReplicationSlotPersist
    - create_logical_replication_slot
    - HeapTupleGetDatum
    - LSNGetDatum
    - NameStr
    - memset
    - CheckLogicalDecodingRequirements
    - get_call_result_type
    linkageType: ''
    returnType: Datum
    signature: Datum pg_create_logical_replication_slot(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:240,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:242,1
    - Dst: CheckSlotRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:244,1
    - Dst: ReplicationSlotDrop
      Src: /src/postgres/src/backend/replication/slotfuncs.c:246,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:246,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/slotfuncs.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 237
    functionDepth: 4
    functionLinenumber: 237
    functionLinenumberEnd: 249
    functionName: pg_drop_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - CheckSlotRequirements
    - PG_RETURN_VOID
    - CheckSlotPermissions
    - PG_GETARG_NAME
    - ReplicationSlotDrop
    - NameStr
    linkageType: ''
    returnType: Datum
    signature: Datum pg_drop_replication_slot(PG_FUNCTION_ARGS)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/replication/slotfuncs.c:269,1
    - Dst: GetXLogWriteRecPtr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:271,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:273,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:288,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:290,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slotfuncs.c:292,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slotfuncs.c:293,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:296,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:301,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:304,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:306,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:311,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:313,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:314,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:317,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/replication/slotfuncs.c:317,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:322,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:327,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:331,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:332,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:336,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:337,1
    - Dst: GetWALAvailability
      Src: /src/postgres/src/backend/replication/slotfuncs.c:348,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:357,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:361,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:365,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:380,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:384,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:387,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:390,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:395,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:413,1
    - Dst: XLogMBVarToSegs
      Src: /src/postgres/src/backend/replication/slotfuncs.c:416,1
    - Dst: XLogMBVarToSegs
      Src: /src/postgres/src/backend/replication/slotfuncs.c:418,1
    - Dst: Max
      Src: /src/postgres/src/backend/replication/slotfuncs.c:421,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:422,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:424,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:427,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:430,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:431,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:436,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/slotfuncs.c:442,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:452,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:454,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:460,1
    - Dst: GetSlotInvalidationCauseName
      Src: /src/postgres/src/backend/replication/slotfuncs.c:460,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:462,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:464,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:471,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/replication/slotfuncs.c:473,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:477,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 107
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 255
    functionDepth: 4
    functionLinenumber: 255
    functionLinenumberEnd: 480
    functionName: pg_get_replication_slots
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - tuplestore_putvalues
    - XLByteToSeg
    - GetWALAvailability
    - XLogRecPtrIsValid
    - Int32GetDatum
    - Assert
    - XLogSegNoOffsetToRecPtr
    - SpinLockRelease
    - ObjectIdGetDatum
    - XLogMBVarToSegs
    - memset
    - LSNGetDatum
    - GetSlotInvalidationCauseName
    - GetPGProcByNumber
    - TimestampTzGetDatum
    - Int64GetDatum
    - SlotIsPhysical
    - NameGetDatum
    - InitMaterializedSRF
    - TransactionIdGetDatum
    - GetXLogWriteRecPtr
    - CStringGetTextDatum
    - Max
    - LWLockRelease
    - SpinLockAcquire
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_replication_slots(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:495,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:495,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:499,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:501,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slotfuncs.c:509,1
    - Dst: PhysicalWakeupLogicalWalSnd
      Src: /src/postgres/src/backend/replication/slotfuncs.c:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - moveto
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 519
    functionName: pg_physical_replication_slot_advance
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - ReplicationSlotMarkDirty
    - Assert
    - PhysicalWakeupLogicalWalSnd
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr pg_physical_replication_slot_advance(XLogRecPtr moveto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LogicalSlotAdvanceAndCheckSnapState
      Src: /src/postgres/src/backend/replication/slotfuncs.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - moveto
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 529
    functionName: pg_logical_replication_slot_advance
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - LogicalSlotAdvanceAndCheckSnapState
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr pg_logical_replication_slot_advance(XLogRecPtr moveto)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:537,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/replication/slotfuncs.c:538,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:547,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:549,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:552,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:554,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/slotfuncs.c:557,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slotfuncs.c:558,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slotfuncs.c:564,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/slotfuncs.c:565,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:565,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/slotfuncs.c:567,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:567,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:570,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:570,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:573,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:574,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:576,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:577,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slotfuncs.c:578,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:586,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:592,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:593,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:594,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/slotfuncs.c:595,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/slotfuncs.c:595,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:598,1
    - Dst: pg_logical_replication_slot_advance
      Src: /src/postgres/src/backend/replication/slotfuncs.c:599,1
    - Dst: pg_physical_replication_slot_advance
      Src: /src/postgres/src/backend/replication/slotfuncs.c:601,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:603,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slotfuncs.c:610,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slotfuncs.c:611,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:613,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:616,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/slotfuncs.c:619,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:620,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/slotfuncs.c:622,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 534
    functionDepth: 6
    functionLinenumber: 534
    functionLinenumberEnd: 623
    functionName: pg_replication_slot_advance
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - GetFlushRecPtr
    - pg_logical_replication_slot_advance
    - errcode
    - heap_form_tuple
    - ReplicationSlotsComputeRequiredLSN
    - GetXLogReplayRecPtr
    - NameStr
    - RecoveryInProgress
    - LSN_FORMAT_ARGS
    - elog
    - ReplicationSlotAcquire
    - XLogRecPtrIsValid
    - PG_GETARG_NAME
    - Assert
    - PG_RETURN_DATUM
    - errmsg
    - OidIsValid
    - ReplicationSlotsComputeRequiredXmin
    - get_call_result_type
    - ereport
    - LSNGetDatum
    - PG_GETARG_LSN
    - ReplicationSlotRelease
    - CheckSlotPermissions
    - NameGetDatum
    - pg_physical_replication_slot_advance
    - HeapTupleGetDatum
    - errdetail
    - Min
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_slot_advance(PG_FUNCTION_ARGS)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:631,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:632,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/slotfuncs.c:646,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slotfuncs.c:647,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:649,1
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:652,1
    - Dst: CheckSlotRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:654,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:656,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slotfuncs.c:673,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:673,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:673,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:676,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:678,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:684,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:687,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:689,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:689,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slotfuncs.c:691,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:694,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:698,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:699,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:701,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:702,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:703,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:704,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:707,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:708,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:709,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:710,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:714,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:715,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:716,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:717,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/replication/slotfuncs.c:720,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:721,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/replication/slotfuncs.c:722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:724,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:725,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:725,1
    - Dst: create_logical_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:749,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:749,1
    - Dst: create_physical_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:758,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:758,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:778,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:780,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:791,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slotfuncs.c:792,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slotfuncs.c:806,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:806,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:807,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:808,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:809,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slotfuncs.c:810,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:813,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:814,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:815,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:816,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:817,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slotfuncs.c:818,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:829,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:830,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:831,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slotfuncs.c:832,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:835,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:843,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slotfuncs.c:845,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slotfuncs.c:846,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slotfuncs.c:847,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slotfuncs.c:848,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:855,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:856,1
    - Dst: XLogGetLastRemovedSegno
      Src: /src/postgres/src/backend/replication/slotfuncs.c:856,1
    - Dst: ReplicationSlotPersist
      Src: /src/postgres/src/backend/replication/slotfuncs.c:863,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:866,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:868,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:870,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/slotfuncs.c:876,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:877,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:879,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/slotfuncs.c:881,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 86
    argCount: 2
    argNames:
    - fcinfo
    - logical_slot
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 628
    functionDepth: 7
    functionLinenumber: 628
    functionLinenumberEnd: 882
    functionName: copy_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotMarkDirty
    - LWLockAcquire
    - strcmp
    - errcode
    - create_physical_replication_slot
    - heap_form_tuple
    - errhint
    - ReplicationSlotsComputeRequiredLSN
    - NameStr
    - XLByteToSeg
    - elog
    - CheckSlotRequirements
    - XLogRecPtrIsValid
    - PG_GETARG_NAME
    - Assert
    - PG_RETURN_DATUM
    - SlotIsLogical
    - ReplicationSlotPersist
    - XLogGetLastRemovedSegno
    - SpinLockRelease
    - errmsg
    - ReplicationSlotSave
    - CheckLogicalDecodingRequirements
    - ReplicationSlotsComputeRequiredXmin
    - get_call_result_type
    - ereport
    - LSNGetDatum
    - ReplicationSlotRelease
    - PG_NARGS
    - CheckSlotPermissions
    - PG_GETARG_BOOL
    - NameGetDatum
    - create_logical_replication_slot
    - HeapTupleGetDatum
    - LWLockRelease
    - errdetail
    - SpinLockAcquire
    linkageType: ''
    returnType: Datum
    signature: Datum copy_replication_slot(FunctionCallInfo fcinfo, bool logical_slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copy_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 885
    functionDepth: 8
    functionLinenumber: 885
    functionLinenumberEnd: 889
    functionName: pg_copy_logical_replication_slot_a
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - copy_replication_slot
    linkageType: ''
    returnType: Datum
    signature: Datum pg_copy_logical_replication_slot_a(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copy_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 891
    functionDepth: 8
    functionLinenumber: 891
    functionLinenumberEnd: 895
    functionName: pg_copy_logical_replication_slot_b
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - copy_replication_slot
    linkageType: ''
    returnType: Datum
    signature: Datum pg_copy_logical_replication_slot_b(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copy_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 897
    functionDepth: 8
    functionLinenumber: 897
    functionLinenumberEnd: 901
    functionName: pg_copy_logical_replication_slot_c
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - copy_replication_slot
    linkageType: ''
    returnType: Datum
    signature: Datum pg_copy_logical_replication_slot_c(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copy_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 903
    functionDepth: 8
    functionLinenumber: 903
    functionLinenumberEnd: 907
    functionName: pg_copy_physical_replication_slot_a
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - copy_replication_slot
    linkageType: ''
    returnType: Datum
    signature: Datum pg_copy_physical_replication_slot_a(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copy_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 909
    functionDepth: 8
    functionLinenumber: 909
    functionLinenumberEnd: 913
    functionName: pg_copy_physical_replication_slot_b
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - copy_replication_slot
    linkageType: ''
    returnType: Datum
    signature: Datum pg_copy_physical_replication_slot_b(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:926,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slotfuncs.c:928,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:929,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:930,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:931,1
    - Dst: ValidateSlotSyncParams
      Src: /src/postgres/src/backend/replication/slotfuncs.c:933,1
    - Dst: load_file
      Src: /src/postgres/src/backend/replication/slotfuncs.c:936,1
    - Dst: CheckAndGetDbnameFromConninfo
      Src: /src/postgres/src/backend/replication/slotfuncs.c:938,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/slotfuncs.c:940,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slotfuncs.c:942,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/slotfuncs.c:944,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/slotfuncs.c:947,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:951,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:952,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:953,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slotfuncs.c:956,1
    - Dst: SyncReplicationSlots
      Src: /src/postgres/src/backend/replication/slotfuncs.c:958,1
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/slotfuncs.c:960,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/slotfuncs.c:962,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 919
    functionDepth: 3
    functionLinenumber: 919
    functionLinenumberEnd: 963
    functionName: pg_sync_replication_slots
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - walrcv_connect
    - walrcv_disconnect
    - CheckSlotPermissions
    - CheckAndGetDbnameFromConninfo
    - errcode
    - pfree
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - ereport
    - PG_RETURN_VOID
    - load_file
    - errmsg
    - SyncReplicationSlots
    - RecoveryInProgress
    - ValidateSlotSyncParams
    linkageType: ''
    returnType: Datum
    signature: Datum pg_sync_replication_slots(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:66,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:68,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:69,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: WalRcvShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 0
    functionsReached:
    - pg_atomic_init_u64
    - MemSet
    - ConditionVariableInit
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void WalRcvShmemInit(void *arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:82,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:87,1
    - Dst: time
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:97,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:103,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:109,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:112,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 120
    functionName: WalRcvRunning
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 1
    functionsReached:
    - ConditionVariableBroadcast
    - SpinLockAcquire
    - time
    - SpinLockRelease
    linkageType: ''
    returnType: bool
    signature: bool WalRcvRunning(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:129,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 134
    functionName: WalRcvGetState
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 1
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: WalRcvState
    signature: WalRcvState WalRcvGetState(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:147,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:152,1
    - Dst: time
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:162,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:168,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:174,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:177,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 186
    functionName: WalRcvStreaming
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 2
    functionsReached:
    - ConditionVariableBroadcast
    - SpinLockAcquire
    - time
    - SpinLockRelease
    linkageType: ''
    returnType: bool
    signature: bool WalRcvStreaming(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:204,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:224,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:228,1
    - Dst: kill
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:234,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:240,1
    - Dst: WalRcvRunning
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:241,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:242,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:244,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 192
    functionDepth: 3
    functionLinenumber: 192
    functionLinenumberEnd: 245
    functionName: ShutdownWalRcv
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 3
    functionsReached:
    - WalRcvRunning
    - ConditionVariableSleep
    - kill
    - ConditionVariableCancelSleep
    - ConditionVariableBroadcast
    - SpinLockRelease
    - SpinLockAcquire
    - ConditionVariablePrepareToSleep
    linkageType: ''
    returnType: void
    signature: void ShutdownWalRcv(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:266,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:275,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:276,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:278,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:281,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:292,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:311,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:323,1
    - Dst: pg_atomic_write_membarrier_u64
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:333,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:340,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:343,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:345,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:345,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 5
    argNames:
    - tli
    - recptr
    - conninfo
    - slotname
    - create_temp_slot
    argTypes:
    - TimeLineID
    - XLogRecPtr
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 346
    functionName: RequestXLogStreaming
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - XLogSegmentOffset
    - XLogRecPtrIsValid
    - GetPGProcByNumber
    - Assert
    - pg_atomic_write_membarrier_u64
    - time
    - SpinLockRelease
    - SpinLockAcquire
    - SetLatch
    - SendPostmasterSignal
    linkageType: ''
    returnType: void
    signature: "void RequestXLogStreaming(TimeLineID tli, XLogRecPtr recptr, const
      char *conninfo,\n\t\t\t\t\t const char *slotname, bool create_temp_slot)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:362,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - latestChunkStart
    - receiveTLI
    argTypes:
    - XLogRecPtr*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 371
    functionName: GetWalRcvFlushRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 4
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetWalRcvFlushRecPtr(XLogRecPtr *latestChunkStart, TimeLineID
      *receiveTLI)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_read_membarrier_u64
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 380
    functionDepth: 2
    functionLinenumber: 380
    functionLinenumberEnd: 386
    functionName: GetWalRcvWriteRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 1
    functionsReached:
    - pg_atomic_read_membarrier_u64
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetWalRcvWriteRecPtr(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:400,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:402,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:404,1
    - Dst: GetCurrentChunkReplayStartTime
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:409,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:414,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 392
    functionDepth: 3
    functionLinenumber: 392
    functionLinenumberEnd: 416
    functionName: GetReplicationApplyDelay
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - TimestampDifferenceMilliseconds
    - GetXLogReplayRecPtr
    - SpinLockRelease
    - SpinLockAcquire
    - GetCurrentChunkReplayStartTime
    linkageType: ''
    returnType: int
    signature: int GetReplicationApplyDelay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:429,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:432,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 436
    functionName: GetReplicationTransferLatency
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - TimestampDifferenceMilliseconds
    - SpinLockRelease
    linkageType: ''
    returnType: int
    signature: int GetReplicationTransferLatency(void)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:171,1
    - Dst: AuxiliaryProcessMainCommon
      Src: /src/postgres/src/backend/replication/walreceiver.c:173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:180,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:189,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:190,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:199,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walreceiver.c:200,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walreceiver.c:201,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:214,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:215,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:223,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:233,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:236,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:243,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/replication/walreceiver.c:246,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:246,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walreceiver.c:249,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walreceiver.c:251,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walreceiver.c:252,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walreceiver.c:254,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walreceiver.c:255,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walreceiver.c:256,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walreceiver.c:257,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walreceiver.c:260,1
    - Dst: load_file
      Src: /src/postgres/src/backend/replication/walreceiver.c:263,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:265,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/replication/walreceiver.c:268,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:277,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/walreceiver.c:278,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/walreceiver.c:279,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:282,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/walreceiver.c:286,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:288,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:289,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:290,1
    - Dst: walrcv_get_conninfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:297,1
    - Dst: walrcv_get_senderinfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:298,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:299,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:301,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:303,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:305,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:308,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:311,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:314,1
    - Dst: walrcv_identify_system
      Src: /src/postgres/src/backend/replication/walreceiver.c:327,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walreceiver.c:329,1
    - Dst: GetSystemIdentifier
      Src: /src/postgres/src/backend/replication/walreceiver.c:330,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walreceiver.c:331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:335,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/walreceiver.c:336,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:339,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:346,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:347,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:348,1
    - Dst: WalRcvFetchTimeLineHistoryFiles
      Src: /src/postgres/src/backend/replication/walreceiver.c:361,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walreceiver.c:370,1
    - Dst: walrcv_get_backend_pid
      Src: /src/postgres/src/backend/replication/walreceiver.c:372,1
    - Dst: walrcv_create_slot
      Src: /src/postgres/src/backend/replication/walreceiver.c:374,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:376,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:377,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:378,1
    - Dst: walrcv_startstreaming
      Src: /src/postgres/src/backend/replication/walreceiver.c:397,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:401,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:402,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:404,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:405,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:406,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:415,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:418,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walreceiver.c:421,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:424,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:426,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:429,1
    - Dst: XLogWalRcvSendHSFeedback
      Src: /src/postgres/src/backend/replication/walreceiver.c:430,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walreceiver.c:447,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:448,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:449,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:450,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walreceiver.c:453,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/walreceiver.c:458,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:460,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:462,1
    - Dst: XLogWalRcvSendHSFeedback
      Src: /src/postgres/src/backend/replication/walreceiver.c:463,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/walreceiver.c:467,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:482,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:483,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:485,1
    - Dst: XLogWalRcvProcessMsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:486,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:493,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:494,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/walreceiver.c:495,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:497,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/walreceiver.c:501,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:505,1
    - Dst: XLogWalRcvFlush
      Src: /src/postgres/src/backend/replication/walreceiver.c:512,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/walreceiver.c:522,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:525,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/walreceiver.c:526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:539,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/replication/walreceiver.c:540,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walreceiver.c:548,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walreceiver.c:549,1
    - Dst: pg_memory_barrier
      Src: /src/postgres/src/backend/replication/walreceiver.c:560,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:561,1
    - Dst: pgstat_report_wal
      Src: /src/postgres/src/backend/replication/walreceiver.c:585,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:591,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:593,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:594,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:595,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:607,1
    - Dst: XLogWalRcvSendHSFeedback
      Src: /src/postgres/src/backend/replication/walreceiver.c:608,1
    - Dst: walrcv_endstreaming
      Src: /src/postgres/src/backend/replication/walreceiver.c:616,1
    - Dst: WalRcvFetchTimeLineHistoryFiles
      Src: /src/postgres/src/backend/replication/walreceiver.c:623,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:626,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:627,1
    - Dst: XLogWalRcvFlush
      Src: /src/postgres/src/backend/replication/walreceiver.c:638,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/replication/walreceiver.c:639,1
    - Dst: close
      Src: /src/postgres/src/backend/replication/walreceiver.c:640,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:641,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walreceiver.c:642,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:643,1
    - Dst: XLogArchiveForceDone
      Src: /src/postgres/src/backend/replication/walreceiver.c:651,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/replication/walreceiver.c:653,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:657,1
    - Dst: WalRcvWaitForStartPosition
      Src: /src/postgres/src/backend/replication/walreceiver.c:658,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 194
    argCount: 2
    argNames:
    - startup_data
    - startup_data_len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 661
    functionName: WalReceiverMain
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 0
    functionsReached:
    - XLogArchiveForceDone
    - strcmp
    - errcode
    - XLogWalRcvSendHSFeedback
    - WalRcvWaitForStartPosition
    - walrcv_create_slot
    - XLogWalRcvSendReply
    - ProcessConfigFile
    - WalRcvFetchTimeLineHistoryFiles
    - walrcv_endstreaming
    - sigprocmask
    - GetSystemIdentifier
    - GetXLogReplayRecPtr
    - RecoveryInProgress
    - walrcv_get_senderinfo
    - walrcv_identify_system
    - walrcv_receive
    - LSN_FORMAT_ARGS
    - WalRcvComputeNextWakeup
    - elog
    - strlcpy
    - walrcv_connect
    - walrcv_get_backend_pid
    - Assert
    - pfree
    - ResetLatch
    - ConditionVariableBroadcast
    - load_file
    - SpinLockRelease
    - PointerGetDatum
    - errmsg
    - walrcv_startstreaming
    - XLogWalRcvFlush
    - pg_memory_barrier
    - XLogFileName
    - GetCurrentTimestamp
    - AuxiliaryProcessMainCommon
    - initStringInfo
    - ereport
    - XLogArchiveNotify
    - CHECK_FOR_INTERRUPTS
    - XLogWalRcvProcessMsg
    - TimestampDifferenceMilliseconds
    - memset
    - walrcv_get_conninfo
    - proc_exit
    - errcode_for_file_access
    - WaitLatchOrSocket
    - pqsignal
    - pgstat_report_wal
    - close
    - errdetail
    - Min
    - SpinLockAcquire
    - on_shmem_exit
    - snprintf
    linkageType: ''
    returnType: void
    signature: void WalReceiverMain(const void *startup_data, size_t startup_data_len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:672,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:676,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walreceiver.c:678,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:680,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:685,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walreceiver.c:687,1
    - Dst: WakeupRecovery
      Src: /src/postgres/src/backend/replication/walreceiver.c:693,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walreceiver.c:696,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walreceiver.c:698,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:700,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:701,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:714,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:723,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walreceiver.c:724,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:726,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/walreceiver.c:728,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walreceiver.c:736,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:737,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walreceiver.c:738,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - startpoint
    - startpointTLI
    argTypes:
    - XLogRecPtr*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 666
    functionDepth: 2
    functionLinenumber: 666
    functionLinenumberEnd: 740
    functionName: WalRcvWaitForStartPosition
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - elog
    - WakeupRecovery
    - set_ps_display
    - Assert
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - SpinLockRelease
    - WaitLatch
    - SpinLockAcquire
    - proc_exit
    - LSN_FORMAT_ARGS
    - snprintf
    linkageType: ''
    returnType: void
    signature: void WalRcvWaitForStartPosition(XLogRecPtr *startpoint, TimeLineID
      *startpointTLI)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: existsTimeLineHistory
      Src: /src/postgres/src/backend/replication/walreceiver.c:754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:761,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:762,1
    - Dst: walrcv_readtimelinehistoryfile
      Src: /src/postgres/src/backend/replication/walreceiver.c:765,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/replication/walreceiver.c:772,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walreceiver.c:773,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:774,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:775,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walreceiver.c:776,1
    - Dst: writeTimeLineHistoryFile
      Src: /src/postgres/src/backend/replication/walreceiver.c:782,1
    - Dst: XLogArchiveForceDone
      Src: /src/postgres/src/backend/replication/walreceiver.c:789,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/replication/walreceiver.c:791,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:793,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:794,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - TimeLineID
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 797
    functionName: WalRcvFetchTimeLineHistoryFiles
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - walrcv_readtimelinehistoryfile
    - XLogArchiveForceDone
    - errmsg_internal
    - strcmp
    - TLHistoryFileName
    - errcode
    - pfree
    - ereport
    - XLogArchiveNotify
    - existsTimeLineHistory
    - errmsg
    - writeTimeLineHistoryFile
    linkageType: ''
    returnType: void
    signature: void WalRcvFetchTimeLineHistoryFiles(TimeLineID first, TimeLineID last)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/walreceiver.c:806,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:808,1
    - Dst: XLogWalRcvFlush
      Src: /src/postgres/src/backend/replication/walreceiver.c:811,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:814,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:815,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:821,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:826,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walreceiver.c:828,1
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/walreceiver.c:832,1
    - Dst: WakeupRecovery
      Src: /src/postgres/src/backend/replication/walreceiver.c:835,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 802
    functionDepth: 2
    functionLinenumber: 802
    functionLinenumberEnd: 836
    functionName: WalRcvDie
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 0
    functionsReached:
    - WakeupRecovery
    - walrcv_disconnect
    - Assert
    - ConditionVariableBroadcast
    - SpinLockRelease
    - XLogWalRcvFlush
    - SpinLockAcquire
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void WalRcvDie(int code, Datum arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:858,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:859,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walreceiver.c:860,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:863,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:866,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:867,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:868,1
    - Dst: ProcessWalSndrMessage
      Src: /src/postgres/src/backend/replication/walreceiver.c:869,1
    - Dst: XLogWalRcvWrite
      Src: /src/postgres/src/backend/replication/walreceiver.c:873,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:882,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:883,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walreceiver.c:884,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:887,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:890,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:891,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/walreceiver.c:892,1
    - Dst: ProcessWalSndrMessage
      Src: /src/postgres/src/backend/replication/walreceiver.c:894,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:898,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:902,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:903,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walreceiver.c:904,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 4
    argNames:
    - type
    - buf
    - len
    - tli
    argTypes:
    - unsigned char
    - char*
    - Size
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 841
    functionDepth: 2
    functionLinenumber: 841
    functionLinenumberEnd: 907
    functionName: XLogWalRcvProcessMsg
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - errmsg_internal
    - initReadOnlyStringInfo
    - errcode
    - ereport
    - ProcessWalSndrMessage
    - XLogWalRcvSendReply
    - pq_getmsgint64
    - pq_getmsgbyte
    - XLogWalRcvWrite
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvProcessMsg(unsigned char type, char *buf, Size len,
      TimeLineID tli)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:919,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/replication/walreceiver.c:926,1
    - Dst: XLogWalRcvClose
      Src: /src/postgres/src/backend/replication/walreceiver.c:927,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/walreceiver.c:932,1
    - Dst: XLogFileInit
      Src: /src/postgres/src/backend/replication/walreceiver.c:933,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/replication/walreceiver.c:938,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/replication/walreceiver.c:951,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/walreceiver.c:953,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/replication/walreceiver.c:954,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/walreceiver.c:955,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/replication/walreceiver.c:967,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:969,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walreceiver.c:970,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:971,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/replication/walreceiver.c:976,1
    - Dst: pg_atomic_write_membarrier_u64
      Src: /src/postgres/src/backend/replication/walreceiver.c:989,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:995,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/replication/walreceiver.c:1003,1
    - Dst: XLogWalRcvClose
      Src: /src/postgres/src/backend/replication/walreceiver.c:1004,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 4
    argNames:
    - buf
    - nbytes
    - recptr
    - tli
    argTypes:
    - char*
    - Size
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 912
    functionDepth: 8
    functionLinenumber: 912
    functionLinenumberEnd: 1005
    functionName: XLogWalRcvWrite
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - XLogWalRcvClose
    - XLogSegmentOffset
    - errcode_for_file_access
    - WaitLSNWakeup
    - Assert
    - XLByteInSeg
    - ereport
    - pg_pwrite
    - XLogFileName
    - pgstat_report_wait_end
    - pgstat_count_io_op_time
    - pg_atomic_write_membarrier_u64
    - pgstat_prepare_io_time
    - errmsg
    - pgstat_report_wait_start
    - XLogFileInit
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvWrite(char *buf, Size nbytes, XLogRecPtr recptr, TimeLineID
      tli)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:1016,1
    - Dst: issue_xlog_fsync
      Src: /src/postgres/src/backend/replication/walreceiver.c:1022,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:1027,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:1034,1
    - Dst: WaitLSNWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1040,1
    - Dst: WakeupRecovery
      Src: /src/postgres/src/backend/replication/walreceiver.c:1043,1
    - Dst: AllowCascadeReplication
      Src: /src/postgres/src/backend/replication/walreceiver.c:1044,1
    - Dst: WalSndWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1045,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walreceiver.c:1052,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:1053,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walreceiver.c:1054,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:1060,1
    - Dst: XLogWalRcvSendHSFeedback
      Src: /src/postgres/src/backend/replication/walreceiver.c:1061,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - dying
    - tli
    argTypes:
    - bool
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1013
    functionDepth: 5
    functionLinenumber: 1013
    functionLinenumberEnd: 1064
    functionName: XLogWalRcvFlush
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 2
    functionsReached:
    - WakeupRecovery
    - issue_xlog_fsync
    - AllowCascadeReplication
    - set_ps_display
    - WaitLSNWakeup
    - Assert
    - WalSndWakeup
    - XLogWalRcvSendHSFeedback
    - XLogWalRcvSendReply
    - SpinLockRelease
    - SpinLockAcquire
    - LSN_FORMAT_ARGS
    - snprintf
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvFlush(bool dying, TimeLineID tli)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:1079,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/replication/walreceiver.c:1079,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:1080,1
    - Dst: XLogWalRcvFlush
      Src: /src/postgres/src/backend/replication/walreceiver.c:1086,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/replication/walreceiver.c:1088,1
    - Dst: close
      Src: /src/postgres/src/backend/replication/walreceiver.c:1095,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:1096,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walreceiver.c:1097,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:1098,1
    - Dst: XLogArchiveForceDone
      Src: /src/postgres/src/backend/replication/walreceiver.c:1106,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/replication/walreceiver.c:1108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - recptr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1074
    functionDepth: 6
    functionLinenumber: 1074
    functionLinenumberEnd: 1111
    functionName: XLogWalRcvClose
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - XLogArchiveForceDone
    - Assert
    - XLByteInSeg
    - ereport
    - XLogArchiveNotify
    - errmsg
    - close
    - XLogFileName
    - XLogWalRcvFlush
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvClose(XLogRecPtr recptr, TimeLineID tli)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1153,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walreceiver.c:1164,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1173,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1178,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walreceiver.c:1179,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:1181,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walreceiver.c:1182,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1183,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1184,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1185,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1186,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1186,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walreceiver.c:1187,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1190,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:1191,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:1192,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:1193,1
    - Dst: walrcv_send
      Src: /src/postgres/src/backend/replication/walreceiver.c:1196,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - force
    - requestReply
    - checkApply
    argTypes:
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1136
    functionDepth: 3
    functionLinenumber: 1136
    functionLinenumberEnd: 1197
    functionName: XLogWalRcvSendReply
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 3
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - XLogRecPtrIsValid
    - resetStringInfo
    - LSN_FORMAT_ARGS
    - pq_sendint64
    - GetXLogReplayRecPtr
    - pq_sendbyte
    - walrcv_send
    - WalRcvComputeNextWakeup
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvSendReply(bool force, bool requestReply, bool checkApply)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1232,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1239,1
    - Dst: HotStandbyActive
      Src: /src/postgres/src/backend/replication/walreceiver.c:1251,1
    - Dst: GetReplicationHorizons
      Src: /src/postgres/src/backend/replication/walreceiver.c:1260,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/replication/walreceiver.c:1272,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/replication/walreceiver.c:1273,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/replication/walreceiver.c:1274,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1281,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:1285,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walreceiver.c:1286,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1287,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1287,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walreceiver.c:1288,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walreceiver.c:1289,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walreceiver.c:1290,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walreceiver.c:1291,1
    - Dst: walrcv_send
      Src: /src/postgres/src/backend/replication/walreceiver.c:1292,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1293,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1293,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - immed
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1209
    functionDepth: 3
    functionLinenumber: 1209
    functionLinenumberEnd: 1297
    functionName: XLogWalRcvSendHSFeedback
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 2
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - ReadNextFullTransactionId
    - resetStringInfo
    - pq_sendint32
    - GetReplicationHorizons
    - XidFromFullTransactionId
    - EpochFromFullTransactionId
    - HotStandbyActive
    - pq_sendint64
    - TransactionIdIsValid
    - pq_sendbyte
    - walrcv_send
    - WalRcvComputeNextWakeup
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvSendHSFeedback(bool immed)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1309,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:1312,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:1318,1
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/replication/walreceiver.c:1320,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1327,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/walreceiver.c:1327,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1328,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/walreceiver.c:1328,1
    - Dst: GetReplicationApplyDelay
      Src: /src/postgres/src/backend/replication/walreceiver.c:1329,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1333,1
    - Dst: GetReplicationTransferLatency
      Src: /src/postgres/src/backend/replication/walreceiver.c:1336,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1338,1
    - Dst: GetReplicationTransferLatency
      Src: /src/postgres/src/backend/replication/walreceiver.c:1342,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:1344,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:1345,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - walEnd
    - sendTime
    argTypes:
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1305
    functionDepth: 4
    functionLinenumber: 1305
    functionLinenumberEnd: 1347
    functionName: ProcessWalSndrMessage
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - pfree
    - pstrdup
    - GetReplicationApplyDelay
    - timestamptz_to_str
    - message_level_is_interesting
    - SpinLockRelease
    - GetReplicationTransferLatency
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ProcessWalSndrMessage(XLogRecPtr walEnd, TimestampTz sendTime)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walreceiver.c:1366,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walreceiver.c:1372,1
    - Dst: TimestampTzPlusSeconds
      Src: /src/postgres/src/backend/replication/walreceiver.c:1378,1
    - Dst: TimestampTzPlusSeconds
      Src: /src/postgres/src/backend/replication/walreceiver.c:1384,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - reason
    - now
    argTypes:
    - WalRcvWakeupReason
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1357
    functionDepth: 1
    functionLinenumber: 1357
    functionLinenumberEnd: 1388
    functionName: WalRcvComputeNextWakeup
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 3
    functionsReached:
    - TimestampTzPlusMilliseconds
    - TimestampTzPlusSeconds
    linkageType: ''
    returnType: void
    signature: void WalRcvComputeNextWakeup(WalRcvWakeupReason reason, TimestampTz
      now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:1405,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:1407,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/walreceiver.c:1409,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/replication/walreceiver.c:1409,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1398
    functionDepth: 2
    functionLinenumber: 1398
    functionLinenumberEnd: 1410
    functionName: WalRcvRequestApplyReply
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 2
    functionsReached:
    - SpinLockAcquire
    - SetLatch
    - GetPGProcByNumber
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void WalRcvRequestApplyReply(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - WalRcvState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1416
    functionDepth: 0
    functionLinenumber: 1416
    functionLinenumberEnd: 1437
    functionName: WalRcvGetStateString
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      WalRcvGetStateString(WalRcvState state)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:1467,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:1479,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:1480,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:1482,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:1483,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/replication/walreceiver.c:1490,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1498,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/walreceiver.c:1501,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1502,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/walreceiver.c:1504,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/walreceiver.c:1505,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1508,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/replication/walreceiver.c:1510,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/walreceiver.c:1510,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/walreceiver.c:1517,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1521,1
    - Dst: WalRcvGetStateString
      Src: /src/postgres/src/backend/replication/walreceiver.c:1521,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1523,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1526,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1527,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1528,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1531,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1532,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1535,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1536,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1540,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1544,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1545,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1548,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1552,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1556,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1560,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1564,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1568,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/walreceiver.c:1572,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1572,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/walreceiver.c:1572,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1443
    functionDepth: 6
    functionLinenumber: 1443
    functionLinenumberEnd: 1573
    functionName: pg_stat_get_wal_receiver
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - WalRcvGetStateString
    - heap_form_tuple
    - elog
    - strlcpy
    - XLogRecPtrIsValid
    - Int32GetDatum
    - PG_RETURN_DATUM
    - SpinLockRelease
    - get_call_result_type
    - memset
    - LSNGetDatum
    - pg_atomic_read_u64
    - TimestampTzGetDatum
    - palloc0_array
    - has_privs_of_role
    - HeapTupleGetDatum
    - CStringGetTextDatum
    - PG_RETURN_NULL
    - SpinLockAcquire
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stat_get_wal_receiver(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:332,1
    - Dst: InitWalSenderSlot
      Src: /src/postgres/src/backend/replication/walsender.c:335,1
    - Dst: CreateAuxProcessResourceOwner
      Src: /src/postgres/src/backend/replication/walsender.c:338,1
    - Dst: MarkPostmasterChildWalSender
      Src: /src/postgres/src/backend/replication/walsender.c:347,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/replication/walsender.c:348,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:358,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:359,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:362,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/walsender.c:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 367
    functionName: InitWalSender
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - CreateAuxProcessResourceOwner
    - MarkPostmasterChildWalSender
    - LWLockAcquire
    - Assert
    - InitWalSenderSlot
    - LWLockRelease
    - RecoveryInProgress
    - SendPostmasterSignal
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: void InitWalSender(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LWLockReleaseAll
      Src: /src/postgres/src/backend/replication/walsender.c:379,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/walsender.c:380,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/walsender.c:381,1
    - Dst: pgaio_error_cleanup
      Src: /src/postgres/src/backend/replication/walsender.c:382,1
    - Dst: wal_segment_close
      Src: /src/postgres/src/backend/replication/walsender.c:385,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/walsender.c:388,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/walsender.c:390,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:399,1
    - Dst: ReleaseAuxProcessResources
      Src: /src/postgres/src/backend/replication/walsender.c:400,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:403,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:406,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 407
    functionName: WalSndErrorCleanup
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - wal_segment_close
    - proc_exit
    - IsTransactionOrTransactionBlock
    - LWLockReleaseAll
    - pgstat_report_wait_end
    - ConditionVariableCancelSleep
    - WalSndSetState
    - pgaio_error_cleanup
    - ReplicationSlotRelease
    - ReleaseAuxProcessResources
    - ReplicationSlotCleanup
    linkageType: ''
    returnType: void
    signature: void WalSndErrorCleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 423
    functionName: WalSndShutdown
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void WalSndShutdown(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:448,1
    - Dst: GetSystemIdentifier
      Src: /src/postgres/src/backend/replication/walsender.c:449,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:451,1
    - Dst: GetStandbyFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:453,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:455,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:457,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:457,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/walsender.c:464,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/replication/walsender.c:465,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/replication/walsender.c:467,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/walsender.c:468,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:471,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/walsender.c:474,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:475,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:477,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:479,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:481,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/replication/walsender.c:483,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/replication/walsender.c:486,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:489,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:492,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:495,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:499,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:504,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:506,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 428
    functionDepth: 5
    functionLinenumber: 428
    functionLinenumberEnd: 507
    functionName: IdentifySystem
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 5
    functionsReached:
    - GetFlushRecPtr
    - CreateDestReceiver
    - GetStandbyFlushRecPtr
    - CommitTransactionCommand
    - GetSystemIdentifier
    - end_tup_output
    - RecoveryInProgress
    - LSN_FORMAT_ARGS
    - TupleDescFinalize
    - get_database_name
    - StartTransactionCommand
    - do_tup_output
    - CreateTemplateTupleDesc
    - begin_tup_output_tupdesc
    - Int64GetDatum
    - MemoryContextStrdup
    - CStringGetTextDatum
    - TupleDescInitBuiltinEntry
    - snprintf
    linkageType: ''
    returnType: void
    signature: void IdentifySystem(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/walsender.c:521,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:522,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:524,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:527,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/replication/walsender.c:529,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/walsender.c:531,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:533,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:534,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:537,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:545,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:547,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:548,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:551,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:553,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:557,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:562,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:566,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:567,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:568,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:574,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:584,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:585,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/replication/walsender.c:587,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/replication/walsender.c:589,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/replication/walsender.c:590,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:597,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:600,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/replication/walsender.c:601,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:602,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:603,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - ReadReplicationSlotCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 510
    functionDepth: 5
    functionLinenumber: 510
    functionLinenumberEnd: 604
    functionName: ReadReplicationSlot
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - CreateDestReceiver
    - errcode
    - GetXLogReplayRecPtr
    - end_tup_output
    - RecoveryInProgress
    - LSN_FORMAT_ARGS
    - XLogRecPtrIsValid
    - Assert
    - TupleDescFinalize
    - SearchNamedReplicationSlot
    - SpinLockRelease
    - errmsg
    - OidIsValid
    - do_tup_output
    - CreateTemplateTupleDesc
    - tliOfPointInHistory
    - ereport
    - GetWALInsertionTimeLine
    - begin_tup_output_tupdesc
    - memset
    - Int64GetDatum
    - readTimeLineHistory
    - CStringGetTextDatum
    - TupleDescInitBuiltinEntry
    - LWLockRelease
    - SpinLockAcquire
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ReadReplicationSlot(ReadReplicationSlotCmd *cmd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:623,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/walsender.c:629,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:630,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:631,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/replication/walsender.c:632,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/replication/walsender.c:634,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/replication/walsender.c:635,1
    - Dst: DestReceiver*::rStartup
      Src: /src/postgres/src/backend/replication/walsender.c:638,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/replication/walsender.c:641,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/walsender.c:642,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/walsender.c:643,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walsender.c:644,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/replication/walsender.c:645,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/walsender.c:647,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:649,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:650,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:651,1
    - Dst: lseek
      Src: /src/postgres/src/backend/replication/walsender.c:654,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:656,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:657,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:658,1
    - Dst: lseek
      Src: /src/postgres/src/backend/replication/walsender.c:659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:660,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:661,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:662,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:668,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walsender.c:670,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/walsender.c:678,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/walsender.c:679,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/walsender.c:680,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:682,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:683,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:684,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:687,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:689,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/replication/walsender.c:692,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/walsender.c:696,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:697,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:699,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/replication/walsender.c:701,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - TimeLineHistoryCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 610
    functionDepth: 5
    functionLinenumber: 610
    functionLinenumberEnd: 702
    functionName: SendTimeLineHistory
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - CreateDestReceiver
    - TLHistoryFileName
    - errcode
    - pq_sendint32
    - read
    - pq_beginmessage
    - elog
    - OpenTransientFile
    - TupleDescFinalize
    - pgstat_report_wait_end
    - errmsg
    - lseek
    - CloseTransientFile
    - TLHistoryFilePath
    - CreateTemplateTupleDesc
    - ereport
    - strlen
    - errcode_for_file_access
    - pq_sendbytes
    - pq_endmessage
    - DestReceiver*::rStartup
    - TupleDescInitBuiltinEntry
    - pgstat_report_wait_start
    - pq_sendint16
    linkageType: ''
    returnType: void
    signature: void SendTimeLineHistory(TimeLineHistoryCmd *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:719,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:720,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/walsender.c:725,1
    - Dst: CreateIncrementalBackupInfo
      Src: /src/postgres/src/backend/replication/walsender.c:728,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/replication/walsender.c:731,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:732,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/walsender.c:733,1
    - Dst: pq_endmessage_reuse
      Src: /src/postgres/src/backend/replication/walsender.c:734,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/replication/walsender.c:735,1
    - Dst: HandleUploadManifestPacket
      Src: /src/postgres/src/backend/replication/walsender.c:738,1
    - Dst: FinalizeIncrementalManifest
      Src: /src/postgres/src/backend/replication/walsender.c:742,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/walsender.c:753,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/replication/walsender.c:754,1
    - Dst: ReleaseAuxProcessResources
      Src: /src/postgres/src/backend/replication/walsender.c:759,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 707
    functionDepth: 5
    functionLinenumber: 707
    functionLinenumberEnd: 760
    functionName: UploadManifest
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - pq_beginmessage
    - MemoryContextSetParent
    - HandleUploadManifestPacket
    - FinalizeIncrementalManifest
    - Assert
    - pq_endmessage_reuse
    - pq_flush
    - CreateIncrementalBackupInfo
    - MemoryContextDelete
    - AllocSetContextCreate
    - pq_sendbyte
    - ReleaseAuxProcessResources
    - pq_sendint16
    linkageType: ''
    returnType: void
    signature: void UploadManifest(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_CANCEL_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:780,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/replication/walsender.c:782,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/replication/walsender.c:783,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:785,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:786,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:787,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:801,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:802,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:803,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/replication/walsender.c:810,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:811,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:812,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:813,1
    - Dst: RESUME_CANCEL_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:814,1
    - Dst: AppendIncrementalManifestData
      Src: /src/postgres/src/backend/replication/walsender.c:820,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:832,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:833,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:834,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/walsender.c:835,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:839,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 3
    argNames:
    - buf
    - offset
    - ib
    argTypes:
    - StringInfo
    - off_t*
    - IncrementalBackupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 773
    functionDepth: 5
    functionLinenumber: 773
    functionLinenumberEnd: 841
    functionName: HandleUploadManifestPacket
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - pq_getbyte
    - pq_getmsgstring
    - errcode
    - HOLD_CANCEL_INTERRUPTS
    - pq_getmessage
    - Assert
    - ereport
    - pq_startmsgread
    - RESUME_CANCEL_INTERRUPTS
    - errmsg
    - AppendIncrementalManifestData
    linkageType: ''
    returnType: bool
    signature: "bool HandleUploadManifestPacket(StringInfo buf, off_t *offset,\n\t\t\t\t\t\t
      \  IncrementalBackupInfo *ib)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/backend/replication/walsender.c:858,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/walsender.c:859,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:864,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:865,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:866,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/walsender.c:867,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:880,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/walsender.c:881,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:882,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:883,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:884,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:897,1
    - Dst: GetStandbyFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:899,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:901,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/replication/walsender.c:923,1
    - Dst: tliSwitchPoint
      Src: /src/postgres/src/backend/replication/walsender.c:924,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/walsender.c:926,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:946,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:949,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:950,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:951,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/walsender.c:953,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:955,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:981,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/replication/walsender.c:984,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:985,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/walsender.c:986,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/replication/walsender.c:987,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/replication/walsender.c:988,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:996,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:997,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:998,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:999,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:1006,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:1008,1
    - Dst: SyncRepInitConfig
      Src: /src/postgres/src/backend/replication/walsender.c:1010,1
    - Dst: WalSndLoop
      Src: /src/postgres/src/backend/replication/walsender.c:1015,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:1019,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:1020,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:1022,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/walsender.c:1026,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:1041,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:1042,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:1044,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/walsender.c:1051,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1052,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1054,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/replication/walsender.c:1056,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/replication/walsender.c:1059,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1061,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1062,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:1065,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:1067,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:1071,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 73
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - StartReplicationCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 849
    functionDepth: 5
    functionLinenumber: 849
    functionLinenumberEnd: 1072
    functionName: StartReplication
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - GetFlushRecPtr
    - CreateDestReceiver
    - errcode
    - EndReplicationCommand
    - GetStandbyFlushRecPtr
    - end_tup_output
    - RecoveryInProgress
    - LSN_FORMAT_ARGS
    - ReplicationSlotAcquire
    - pq_beginmessage
    - XLogRecPtrIsValid
    - Assert
    - TupleDescFinalize
    - pq_flush
    - SlotIsLogical
    - tliSwitchPoint
    - SyncRepInitConfig
    - errmsg
    - SpinLockRelease
    - do_tup_output
    - CreateTemplateTupleDesc
    - ereport
    - list_free_deep
    - begin_tup_output_tupdesc
    - XLogReaderAllocate
    - snprintf
    - XL_ROUTINE
    - pq_sendbyte
    - ReplicationSlotRelease
    - proc_exit
    - Int64GetDatum
    - readTimeLineHistory
    - pq_endmessage
    - CStringGetTextDatum
    - WalSndSetState
    - errdetail
    - TupleDescInitBuiltinEntry
    - SpinLockAcquire
    - pq_sendint16
    - WalSndLoop
    linkageType: ''
    returnType: void
    signature: void StartReplication(StartReplicationCmd *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: WalSndWaitForWal
      Src: /src/postgres/src/backend/replication/walsender.c:1096,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:1110,1
    - Dst: GetWALInsertionTimeLineIfSet
      Src: /src/postgres/src/backend/replication/walsender.c:1130,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:1134,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/replication/walsender.c:1137,1
    - Dst: XLogReadDetermineTimeline
      Src: /src/postgres/src/backend/replication/walsender.c:1139,1
    - Dst: WALRead
      Src: /src/postgres/src/backend/replication/walsender.c:1151,1
    - Dst: WALReadRaiseError
      Src: /src/postgres/src/backend/replication/walsender.c:1159,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/walsender.c:1168,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/replication/walsender.c:1169,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 5
    argNames:
    - state
    - targetPagePtr
    - reqLen
    - targetRecPtr
    - cur_page
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1082
    functionDepth: 4
    functionLinenumber: 1082
    functionLinenumberEnd: 1172
    functionName: logical_read_xlog_page
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - WALReadRaiseError
    - WalSndWaitForWal
    - GetWALInsertionTimeLine
    - CheckXLogRemoved
    - XLogReadDetermineTimeline
    - WALRead
    - GetXLogReplayRecPtr
    - GetWALInsertionTimeLineIfSet
    - RecoveryInProgress
    - XLByteToSeg
    linkageType: ''
    returnType: int
    signature: "int logical_read_xlog_page(XLogReaderState *state, XLogRecPtr targetPagePtr,
      int reqLen,\n\t\t\t\t\t   XLogRecPtr targetRecPtr, char *cur_page)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/replication/walsender.c:1190,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/walsender.c:1192,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1199,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1200,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1201,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/replication/walsender.c:1203,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1206,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1208,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1210,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1213,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1214,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1215,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1221,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1222,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1223,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1226,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1228,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1231,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1232,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1233,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1235,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1242,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1244,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:1247,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 5
    argNames:
    - cmd
    - reserve_wal
    - snapshot_action
    - two_phase
    - failover
    argTypes:
    - CreateReplicationSlotCmd*
    - bool*
    - CRSSnapshotAction*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1177
    functionDepth: 1
    functionLinenumber: 1177
    functionLinenumberEnd: 1249
    functionName: parseCreateReplSlotOptions
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - elog
    - foreach
    - strcmp
    - errcode
    - defGetBoolean
    - ereport
    - lfirst
    - errmsg
    - defGetString
    linkageType: ''
    returnType: void
    signature: "void parseCreateReplSlotOptions(CreateReplicationSlotCmd *cmd,\n\t\t\t\t\t\t
      \  bool *reserve_wal,\n\t\t\t\t\t\t   CRSSnapshotAction *snapshot_action,\n\t\t\t\t\t\t
      \  bool *two_phase, bool *failover)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:1270,1
    - Dst: parseCreateReplSlotOptions
      Src: /src/postgres/src/backend/replication/walsender.c:1272,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/walsender.c:1277,1
    - Dst: ReplicationSlotReserveWal
      Src: /src/postgres/src/backend/replication/walsender.c:1283,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/walsender.c:1285,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/walsender.c:1289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:1297,1
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/walsender.c:1299,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/walsender.c:1308,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:1318,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1321,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:1328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1329,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1335,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1337,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1340,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1346,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1348,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/replication/walsender.c:1351,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1352,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1354,1
    - Dst: EnsureLogicalDecodingEnabled
      Src: /src/postgres/src/backend/replication/walsender.c:1364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:1365,1
    - Dst: IsLogicalDecodingEnabled
      Src: /src/postgres/src/backend/replication/walsender.c:1365,1
    - Dst: CreateInitDecodingContext
      Src: /src/postgres/src/backend/replication/walsender.c:1367,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/walsender.c:1370,1
    - Dst: DecodingContextFindStartpoint
      Src: /src/postgres/src/backend/replication/walsender.c:1386,1
    - Dst: SnapBuildExportSnapshot
      Src: /src/postgres/src/backend/replication/walsender.c:1396,1
    - Dst: SnapBuildInitialSnapshot
      Src: /src/postgres/src/backend/replication/walsender.c:1402,1
    - Dst: RestoreTransactionSnapshot
      Src: /src/postgres/src/backend/replication/walsender.c:1403,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/walsender.c:1407,1
    - Dst: ReplicationSlotPersist
      Src: /src/postgres/src/backend/replication/walsender.c:1410,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:1413,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:1414,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:1416,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/walsender.c:1425,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1426,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1428,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1430,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1432,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/replication/walsender.c:1434,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/replication/walsender.c:1437,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/walsender.c:1440,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1441,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1444,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1448,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1454,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:1459,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:1460,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/walsender.c:1462,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 70
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - CreateReplicationSlotCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1254
    functionDepth: 6
    functionLinenumber: 1254
    functionLinenumberEnd: 1463
    functionName: CreateReplicationSlot
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 3
    functionsReached:
    - ReplicationSlotMarkDirty
    - CreateDestReceiver
    - CreateInitDecodingContext
    - IsSubTransaction
    - NameStr
    - end_tup_output
    - DecodingContextFindStartpoint
    - LSN_FORMAT_ARGS
    - ReplicationSlotReserveWal
    - ReplicationSlotCreate
    - Assert
    - TupleDescFinalize
    - FreeDecodingContext
    - ReplicationSlotPersist
    - SnapBuildInitialSnapshot
    - EnsureLogicalDecodingEnabled
    - errmsg
    - ReplicationSlotSave
    - CheckLogicalDecodingRequirements
    - do_tup_output
    - CreateTemplateTupleDesc
    - ereport
    - begin_tup_output_tupdesc
    - IsLogicalDecodingEnabled
    - XL_ROUTINE
    - ReplicationSlotRelease
    - parseCreateReplSlotOptions
    - IsTransactionBlock
    - RestoreTransactionSnapshot
    - SnapBuildExportSnapshot
    - CStringGetTextDatum
    - TupleDescInitBuiltinEntry
    - snprintf
    linkageType: ''
    returnType: void
    signature: void CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReplicationSlotDrop
      Src: /src/postgres/src/backend/replication/walsender.c:1471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - DropReplicationSlotCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1468
    functionDepth: 4
    functionLinenumber: 1468
    functionLinenumberEnd: 1472
    functionName: DropReplicationSlot
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached:
    - ReplicationSlotDrop
    linkageType: ''
    returnType: void
    signature: void DropReplicationSlot(DropReplicationSlotCmd *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/replication/walsender.c:1486,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1488,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1491,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1492,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1493,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1495,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1497,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1500,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1501,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1502,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1504,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:1507,1
    - Dst: ReplicationSlotAlter
      Src: /src/postgres/src/backend/replication/walsender.c:1510,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - AlterReplicationSlotCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1477
    functionDepth: 4
    functionLinenumber: 1477
    functionLinenumberEnd: 1513
    functionName: AlterReplicationSlot
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - elog
    - defGetBoolean
    - strcmp
    - errcode
    - ReplicationSlotAlter
    - ereport
    - errmsg
    - foreach_ptr
    linkageType: ''
    returnType: void
    signature: void AlterReplicationSlot(AlterReplicationSlotCmd *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/walsender.c:1526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:1528,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:1530,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:1537,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1539,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1540,1
    - Dst: CreateDecodingContext
      Src: /src/postgres/src/backend/replication/walsender.c:1552,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/walsender.c:1553,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:1560,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/replication/walsender.c:1563,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:1564,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/walsender.c:1565,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/replication/walsender.c:1566,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/replication/walsender.c:1567,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/replication/walsender.c:1570,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:1580,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:1582,1
    - Dst: SyncRepInitConfig
      Src: /src/postgres/src/backend/replication/walsender.c:1586,1
    - Dst: WalSndLoop
      Src: /src/postgres/src/backend/replication/walsender.c:1589,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/walsender.c:1591,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/walsender.c:1592,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:1596,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:1597,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/replication/walsender.c:1600,1
    - Dst: EndCommand
      Src: /src/postgres/src/backend/replication/walsender.c:1601,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - StartReplicationCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1519
    functionDepth: 4
    functionLinenumber: 1519
    functionLinenumberEnd: 1602
    functionName: StartLogicalReplication
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - CreateDecodingContext
    - RecoveryInProgress
    - ReplicationSlotAcquire
    - pq_beginmessage
    - Assert
    - pq_flush
    - FreeDecodingContext
    - SyncRepInitConfig
    - errmsg
    - SpinLockRelease
    - CheckLogicalDecodingRequirements
    - ereport
    - XLogBeginRead
    - XL_ROUTINE
    - EndCommand
    - pq_sendbyte
    - ReplicationSlotRelease
    - proc_exit
    - pq_endmessage
    - SetQueryCompletion
    - WalSndSetState
    - SpinLockAcquire
    - pq_sendint16
    - WalSndLoop
    linkageType: ''
    returnType: void
    signature: void StartLogicalReplication(StartReplicationCmd *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:1619,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:1621,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:1622,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:1623,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:1629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - lsn
    - xid
    - last_write
    argTypes:
    - LogicalDecodingContext*
    - XLogRecPtr
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1630
      start: 1612
    functionDepth: 3
    functionLinenumber: 1612
    functionLinenumberEnd: 1630
    functionName: WalSndPrepareWrite
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - pq_sendint64
    - pq_sendbyte
    - resetStringInfo
    linkageType: ''
    returnType: void
    signature: void WalSndPrepareWrite(LogicalDecodingContext *ctx, XLogRecPtr lsn,
      TransactionId xid, bool last_write)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:1650,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:1651,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:1652,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/walsender.c:1653,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:1657,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:1659,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:1662,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:1663,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:1666,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:1668,1
    - Dst: ProcessPendingWrites
      Src: /src/postgres/src/backend/replication/walsender.c:1674,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - lsn
    - xid
    - last_write
    argTypes:
    - LogicalDecodingContext*
    - XLogRecPtr
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1639
    functionDepth: 2
    functionLinenumber: 1639
    functionLinenumberEnd: 1675
    functionName: WalSndWriteData
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - TimestampTzPlusMilliseconds
    - memcpy
    - pq_putmessage_noblock
    - ProcessPendingWrites
    - WalSndShutdown
    - pq_is_send_pending
    - CHECK_FOR_INTERRUPTS
    - pq_sendint64
    - pq_flush_if_writable
    - resetStringInfo
    linkageType: ''
    returnType: void
    signature: "void WalSndWriteData(LogicalDecodingContext *ctx, XLogRecPtr lsn,
      TransactionId xid,\n\t\t\t\tbool last_write)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/walsender.c:1691,1
    - Dst: SyncRepInitConfig
      Src: /src/postgres/src/backend/replication/walsender.c:1692,1
    - Dst: SyncRepReleaseWaiters
      Src: /src/postgres/src/backend/replication/walsender.c:1700,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1684
    functionDepth: 1
    functionLinenumber: 1684
    functionLinenumberEnd: 1701
    functionName: WalSndHandleConfigReload
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - SyncRepInitConfig
    - ProcessConfigFile
    - SyncRepReleaseWaiters
    linkageType: ''
    returnType: void
    signature: void WalSndHandleConfigReload(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ProcessRepliesIfAny
      Src: /src/postgres/src/backend/replication/walsender.c:1715,1
    - Dst: WalSndCheckTimeOut
      Src: /src/postgres/src/backend/replication/walsender.c:1718,1
    - Dst: WalSndCheckShutdownTimeout
      Src: /src/postgres/src/backend/replication/walsender.c:1725,1
    - Dst: WalSndKeepaliveIfNecessary
      Src: /src/postgres/src/backend/replication/walsender.c:1728,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:1730,1
    - Dst: WalSndComputeSleeptime
      Src: /src/postgres/src/backend/replication/walsender.c:1733,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:1733,1
    - Dst: WalSndWait
      Src: /src/postgres/src/backend/replication/walsender.c:1736,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:1740,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:1742,1
    - Dst: WalSndHandleConfigReload
      Src: /src/postgres/src/backend/replication/walsender.c:1745,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:1748,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:1749,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:1753,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1707
    functionDepth: 2
    functionLinenumber: 1707
    functionLinenumberEnd: 1754
    functionName: ProcessPendingWrites
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - GetCurrentTimestamp
    - WalSndWait
    - WalSndShutdown
    - pq_is_send_pending
    - WalSndHandleConfigReload
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - ProcessRepliesIfAny
    - WalSndComputeSleeptime
    - WalSndCheckShutdownTimeout
    - WalSndCheckTimeOut
    - WalSndKeepaliveIfNecessary
    - pq_flush_if_writable
    - SetLatch
    linkageType: ''
    returnType: void
    signature: void ProcessPendingWrites(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:1768,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/walsender.c:1781,1
    - Dst: LagTrackerWrite
      Src: /src/postgres/src/backend/replication/walsender.c:1784,1
    - Dst: SyncRepRequested
      Src: /src/postgres/src/backend/replication/walsender.c:1797,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:1800,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:1803,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:1804,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:1807,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:1819,1
    - Dst: ProcessPendingWrites
      Src: /src/postgres/src/backend/replication/walsender.c:1821,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - lsn
    - xid
    - skipped_xact
    argTypes:
    - LogicalDecodingContext*
    - XLogRecPtr
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1763
    functionDepth: 3
    functionLinenumber: 1763
    functionLinenumberEnd: 1822
    functionName: WalSndUpdateProgress
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - TimestampDifferenceExceeds
    - GetCurrentTimestamp
    - TimestampTzPlusMilliseconds
    - ProcessPendingWrites
    - LagTrackerWrite
    - WalSndShutdown
    - pq_is_send_pending
    - SyncRepRequested
    - WalSndKeepalive
    - pq_flush_if_writable
    linkageType: ''
    returnType: void
    signature: "void WalSndUpdateProgress(LogicalDecodingContext *ctx, XLogRecPtr
      lsn, TransactionId xid,\n\t\t\t\t\t bool skipped_xact)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:1831,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/walsender.c:1831,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:1838,1
    - Dst: SlotExistsInSyncStandbySlots
      Src: /src/postgres/src/backend/replication/walsender.c:1841,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/walsender.c:1841,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walsender.c:1842,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1843
      start: 1828
    functionDepth: 1
    functionLinenumber: 1828
    functionLinenumberEnd: 1843
    functionName: PhysicalWakeupLogicalWalSnd
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - Assert
    - SlotExistsInSyncStandbySlots
    - ConditionVariableBroadcast
    - NameStr
    - RecoveryInProgress
    - SlotIsPhysical
    linkageType: ''
    returnType: void
    signature: void PhysicalWakeupLogicalWalSnd(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: StandbySlotsHaveCaughtup
      Src: /src/postgres/src/backend/replication/walsender.c:1866,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - flushed_lsn
    - wait_event
    argTypes:
    - XLogRecPtr
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1853
    functionDepth: 3
    functionLinenumber: 1853
    functionLinenumberEnd: 1874
    functionName: NeedToWaitForStandbys
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - StandbySlotsHaveCaughtup
    linkageType: ''
    returnType: bool
    signature: bool NeedToWaitForStandbys(XLogRecPtr flushed_lsn, uint32 *wait_event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NeedToWaitForStandbys
      Src: /src/postgres/src/backend/replication/walsender.c:1897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - target_lsn
    - flushed_lsn
    - wait_event
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1898
      start: 1885
    functionDepth: 4
    functionLinenumber: 1885
    functionLinenumberEnd: 1898
    functionName: NeedToWaitForWal
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - NeedToWaitForStandbys
    linkageType: ''
    returnType: bool
    signature: "bool NeedToWaitForWal(XLogRecPtr target_lsn, XLogRecPtr flushed_lsn,\n\t\t\t\t
      uint32 *wait_event)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:1927,1
    - Dst: NeedToWaitForWal
      Src: /src/postgres/src/backend/replication/walsender.c:1928,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:1943,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:1945,1
    - Dst: WalSndHandleConfigReload
      Src: /src/postgres/src/backend/replication/walsender.c:1948,1
    - Dst: ProcessRepliesIfAny
      Src: /src/postgres/src/backend/replication/walsender.c:1951,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:1964,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/walsender.c:1965,1
    - Dst: GetXLogInsertEndRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:1965,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:1975,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:1976,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:1978,1
    - Dst: NeedToWaitForStandbys
      Src: /src/postgres/src/backend/replication/walsender.c:1991,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:2008,1
    - Dst: NeedToWaitForWal
      Src: /src/postgres/src/backend/replication/walsender.c:2015,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:2027,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:2028,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:2036,1
    - Dst: WalSndCheckTimeOut
      Src: /src/postgres/src/backend/replication/walsender.c:2040,1
    - Dst: WalSndCheckShutdownTimeout
      Src: /src/postgres/src/backend/replication/walsender.c:2047,1
    - Dst: WalSndKeepaliveIfNecessary
      Src: /src/postgres/src/backend/replication/walsender.c:2050,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:2059,1
    - Dst: WalSndComputeSleeptime
      Src: /src/postgres/src/backend/replication/walsender.c:2060,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:2064,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2067,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/walsender.c:2070,1
    - Dst: pgstat_flush_io
      Src: /src/postgres/src/backend/replication/walsender.c:2073,1
    - Dst: pgstat_flush_backend
      Src: /src/postgres/src/backend/replication/walsender.c:2074,1
    - Dst: WalSndWait
      Src: /src/postgres/src/backend/replication/walsender.c:2078,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:2082,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 47
    argCount: 1
    argNames:
    - loc
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2084
      start: 1913
    functionDepth: 5
    functionLinenumber: 1913
    functionLinenumberEnd: 2084
    functionName: WalSndWaitForWal
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - GetFlushRecPtr
    - pgstat_flush_io
    - WalSndWait
    - WalSndShutdown
    - pq_is_send_pending
    - GetXLogReplayRecPtr
    - WalSndKeepaliveIfNecessary
    - RecoveryInProgress
    - NeedToWaitForWal
    - TimestampDifferenceExceeds
    - XLogRecPtrIsValid
    - NeedToWaitForStandbys
    - Assert
    - pgstat_flush_backend
    - ResetLatch
    - GetXLogInsertEndRecPtr
    - ProcessRepliesIfAny
    - WalSndCheckTimeOut
    - GetCurrentTimestamp
    - CHECK_FOR_INTERRUPTS
    - pq_flush_if_writable
    - SetLatch
    - WalSndHandleConfigReload
    - WalSndKeepalive
    - XLogFlush
    - WalSndComputeSleeptime
    - WalSndCheckShutdownTimeout
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr WalSndWaitForWal(XLogRecPtr loc)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:2109,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2117,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2118,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2119,1
    - Dst: SnapBuildClearExportedSnapshot
      Src: /src/postgres/src/backend/replication/walsender.c:2125,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:2127,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/walsender.c:2148,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/walsender.c:2152,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/walsender.c:2154,1
    - Dst: replication_scanner_init
      Src: /src/postgres/src/backend/replication/walsender.c:2156,1
    - Dst: replication_scanner_is_replication_command
      Src: /src/postgres/src/backend/replication/walsender.c:2161,1
    - Dst: replication_scanner_finish
      Src: /src/postgres/src/backend/replication/walsender.c:2164,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/walsender.c:2166,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/walsender.c:2167,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2173,1
    - Dst: replication_yyparse
      Src: /src/postgres/src/backend/replication/walsender.c:2182,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2184,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2185,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walsender.c:2186,1
    - Dst: replication_scanner_finish
      Src: /src/postgres/src/backend/replication/walsender.c:2188,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/walsender.c:2196,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2204,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/replication/walsender.c:2209,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2210,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2212,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:2215,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:2221,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:2222,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:2223,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2229,1
    - Dst: IdentifySystem
      Src: /src/postgres/src/backend/replication/walsender.c:2230,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2231,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2236,1
    - Dst: ReadReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:2237,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2238,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2243,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:2244,1
    - Dst: SendBaseBackup
      Src: /src/postgres/src/backend/replication/walsender.c:2245,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2246,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2251,1
    - Dst: CreateReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:2252,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2253,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2258,1
    - Dst: DropReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:2259,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2260,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2265,1
    - Dst: AlterReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:2266,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2267,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2275,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:2276,1
    - Dst: StartReplication
      Src: /src/postgres/src/backend/replication/walsender.c:2279,1
    - Dst: StartLogicalReplication
      Src: /src/postgres/src/backend/replication/walsender.c:2281,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2286,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2292,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:2293,1
    - Dst: SendTimeLineHistory
      Src: /src/postgres/src/backend/replication/walsender.c:2294,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2295,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:2300,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2304,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2307,1
    - Dst: GetPGVariable
      Src: /src/postgres/src/backend/replication/walsender.c:2308,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2309,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2310,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2316,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:2317,1
    - Dst: UploadManifest
      Src: /src/postgres/src/backend/replication/walsender.c:2318,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2319,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:2323,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/walsender.c:2331,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/walsender.c:2332,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 112
    argCount: 1
    argNames:
    - cmd_string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2342
      start: 2092
    functionDepth: 6
    functionLinenumber: 2092
    functionLinenumberEnd: 2342
    functionName: exec_replication_command
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - SnapBuildClearExportedSnapshot
    - set_ps_display
    - errcode
    - SendTimeLineHistory
    - EndReplicationCommand
    - CreateDestReceiver
    - CommitTransactionCommand
    - UploadManifest
    - replication_scanner_is_replication_command
    - elog
    - replication_yyparse
    - MemoryContextReset
    - StartLogicalReplication
    - Assert
    - SendBaseBackup
    - StartTransactionCommand
    - CreateReplicationSlot
    - errmsg
    - pgstat_report_activity
    - errmsg_internal
    - initStringInfo
    - ereport
    - CHECK_FOR_INTERRUPTS
    - PreventInTransactionBlock
    - IsAbortedTransactionBlockState
    - AllocSetContextCreate
    - replication_scanner_finish
    - ReadReplicationSlot
    - StartReplication
    - IdentifySystem
    - AlterReplicationSlot
    - MemoryContextSwitchTo
    - GetPGVariable
    - WalSndSetState
    - replication_scanner_init
    - DropReplicationSlot
    linkageType: ''
    returnType: bool
    signature: bool exec_replication_command(const char *cmd_string)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:2356,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/replication/walsender.c:2365,1
    - Dst: pq_getbyte_if_available
      Src: /src/postgres/src/backend/replication/walsender.c:2366,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2370,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2371,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2372,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:2373,1
    - Dst: pq_endmsgread
      Src: /src/postgres/src/backend/replication/walsender.c:2378,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2393,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2394,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2395,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:2402,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/replication/walsender.c:2403,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2405,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2406,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2407,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:2408,1
    - Dst: ProcessStandbyMessage
      Src: /src/postgres/src/backend/replication/walsender.c:2419,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:2431,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:2444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2447,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2459
      start: 2348
    functionDepth: 5
    functionLinenumber: 2348
    functionLinenumberEnd: 2459
    functionName: ProcessRepliesIfAny
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached:
    - GetCurrentTimestamp
    - ProcessStandbyMessage
    - pq_putmessage_noblock
    - errcode
    - Assert
    - pq_getmessage
    - ereport
    - pq_startmsgread
    - pq_getbyte_if_available
    - pq_endmsgread
    - errmsg
    - proc_exit
    - resetStringInfo
    linkageType: ''
    returnType: void
    signature: void ProcessRepliesIfAny(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/walsender.c:2472,1
    - Dst: ProcessStandbyReplyMessage
      Src: /src/postgres/src/backend/replication/walsender.c:2477,1
    - Dst: ProcessStandbyHSFeedbackMessage
      Src: /src/postgres/src/backend/replication/walsender.c:2481,1
    - Dst: ProcessStandbyPSRequestMessage
      Src: /src/postgres/src/backend/replication/walsender.c:2485,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2489,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2490,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2491,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:2492,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2464
    functionDepth: 2
    functionLinenumber: 2464
    functionLinenumberEnd: 2494
    functionName: ProcessStandbyMessage
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - errcode
    - proc_exit
    - ereport
    - ProcessStandbyReplyMessage
    - errmsg
    - ProcessStandbyHSFeedbackMessage
    - ProcessStandbyPSRequestMessage
    - pq_getmsgbyte
    linkageType: ''
    returnType: void
    signature: void ProcessStandbyMessage(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2505,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:2505,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2506,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2512,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/walsender.c:2516,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/walsender.c:2517,1
    - Dst: PhysicalWakeupLogicalWalSnd
      Src: /src/postgres/src/backend/replication/walsender.c:2518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2527
      start: 2499
    functionDepth: 4
    functionLinenumber: 2499
    functionLinenumberEnd: 2527
    functionName: PhysicalConfirmReceivedLocation
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - ReplicationSlotMarkDirty
    - Assert
    - PhysicalWakeupLogicalWalSnd
    - ReplicationSlotsComputeRequiredLSN
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void PhysicalConfirmReceivedLocation(XLogRecPtr lsn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2551,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2552,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2553,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2554,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/walsender.c:2555,1
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/replication/walsender.c:2557,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/walsender.c:2562,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/walsender.c:2562,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:2564,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:2565,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:2566,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:2567,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walsender.c:2571,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:2575,1
    - Dst: LagTrackerRead
      Src: /src/postgres/src/backend/replication/walsender.c:2576,1
    - Dst: LagTrackerRead
      Src: /src/postgres/src/backend/replication/walsender.c:2577,1
    - Dst: LagTrackerRead
      Src: /src/postgres/src/backend/replication/walsender.c:2578,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:2601,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2610,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2621,1
    - Dst: SyncRepReleaseWaiters
      Src: /src/postgres/src/backend/replication/walsender.c:2625,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:2630,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/walsender.c:2632,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/walsender.c:2633,1
    - Dst: PhysicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/walsender.c:2635,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2637
      start: 2532
    functionDepth: 5
    functionLinenumber: 2532
    functionLinenumberEnd: 2637
    functionName: ProcessStandbyReplyMessage
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - LagTrackerRead
    - XLogRecPtrIsValid
    - pfree
    - LogicalConfirmReceivedLocation
    - pstrdup
    - WalSndKeepalive
    - SlotIsLogical
    - timestamptz_to_str
    - message_level_is_interesting
    - SpinLockRelease
    - pq_getmsgint64
    - SyncRepReleaseWaiters
    - PhysicalConfirmReceivedLocation
    - SpinLockAcquire
    - pq_getmsgbyte
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void ProcessStandbyReplyMessage(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2646,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2654,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2655,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/walsender.c:2656,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2662,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2663,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/walsender.c:2664,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2670,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/walsender.c:2674,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/walsender.c:2675,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - feedbackXmin
    - feedbackCatalogXmin
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2640
    functionDepth: 3
    functionLinenumber: 2640
    functionLinenumberEnd: 2677
    functionName: PhysicalReplicationSlotNewXmin
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - TransactionIdPrecedes
    - ReplicationSlotMarkDirty
    - TransactionIdIsNormal
    - SpinLockRelease
    - SpinLockAcquire
    - ReplicationSlotsComputeRequiredXmin
    linkageType: ''
    returnType: void
    signature: void PhysicalReplicationSlotNewXmin(TransactionId feedbackXmin, TransactionId
      feedbackCatalogXmin)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2696,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2697,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2698,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/walsender.c:2711,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - xid
    - epoch
    argTypes:
    - TransactionId
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2715
      start: 2689
    functionDepth: 2
    functionLinenumber: 2689
    functionLinenumberEnd: 2715
    functionName: TransactionIdInRecentPast
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - EpochFromFullTransactionId
    - TransactionIdPrecedesOrEquals
    - ReadNextFullTransactionId
    - XidFromFullTransactionId
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdInRecentPast(TransactionId xid, uint32 epoch)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2734,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/walsender.c:2735,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/walsender.c:2736,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/walsender.c:2737,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/walsender.c:2738,1
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/replication/walsender.c:2740,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/walsender.c:2745,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/walsender.c:2745,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:2747,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walsender.c:2754,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2764,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2766,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2773,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2774,1
    - Dst: PhysicalReplicationSlotNewXmin
      Src: /src/postgres/src/backend/replication/walsender.c:2778,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2786,1
    - Dst: TransactionIdInRecentPast
      Src: /src/postgres/src/backend/replication/walsender.c:2787,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2790,1
    - Dst: TransactionIdInRecentPast
      Src: /src/postgres/src/backend/replication/walsender.c:2791,1
    - Dst: PhysicalReplicationSlotNewXmin
      Src: /src/postgres/src/backend/replication/walsender.c:2826,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2829,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/walsender.c:2830,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2835
      start: 2720
    functionDepth: 4
    functionLinenumber: 2720
    functionLinenumberEnd: 2835
    functionName: ProcessStandbyHSFeedbackMessage
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - elog
    - TransactionIdPrecedes
    - SpinLockAcquire
    - pfree
    - pstrdup
    - PhysicalReplicationSlotNewXmin
    - timestamptz_to_str
    - TransactionIdInRecentPast
    - TransactionIdIsNormal
    - message_level_is_interesting
    - SpinLockRelease
    - pq_getmsgint64
    - pq_getmsgint
    linkageType: ''
    returnType: void
    signature: void ProcessStandbyHSFeedbackMessage(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:2855,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:2856,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2858,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2864,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2866,1
    - Dst: GetOldestActiveTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2872,1
    - Dst: TwoPhaseGetOldestXidInCommit
      Src: /src/postgres/src/backend/replication/walsender.c:2873,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:2879,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/walsender.c:2880,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2883,1
    - Dst: FullTransactionIdFromAllowableAt
      Src: /src/postgres/src/backend/replication/walsender.c:2884,1
    - Dst: GetXLogWriteRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:2886,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:2888,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:2891,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:2892,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:2893,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:2894,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2894,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:2895,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2895,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:2896,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:2896,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:2899,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2900
      start: 2840
    functionDepth: 3
    functionLinenumber: 2840
    functionLinenumberEnd: 2900
    functionName: ProcessStandbyPSRequestMessage
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - elog
    - TransactionIdPrecedes
    - SpinLockAcquire
    - GetOldestActiveTransactionId
    - ReadNextFullTransactionId
    - FullTransactionIdFromAllowableAt
    - GetCurrentTimestamp
    - resetStringInfo
    - U64FromFullTransactionId
    - pq_putmessage_noblock
    - TwoPhaseGetOldestXidInCommit
    - pq_sendint64
    - GetXLogWriteRecPtr
    - SpinLockRelease
    - pq_getmsgint64
    - pq_sendbyte
    - RecoveryInProgress
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void ProcessStandbyPSRequestMessage(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:2924,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:2933,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:2937,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:2944,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:2947,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - now
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2955
      start: 2912
    functionDepth: 1
    functionLinenumber: 2912
    functionLinenumberEnd: 2955
    functionName: WalSndComputeSleeptime
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached:
    - TimestampTzPlusMilliseconds
    - TimestampDifferenceMilliseconds
    linkageType: ''
    returnType: long
    signature: long WalSndComputeSleeptime(TimestampTz now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:2978,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2988,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2989,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:2991,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2993
      start: 2969
    functionDepth: 2
    functionLinenumber: 2969
    functionLinenumberEnd: 2993
    functionName: WalSndCheckTimeOut
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached:
    - WalSndShutdown
    - TimestampTzPlusMilliseconds
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void WalSndCheckTimeOut(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: WalSndDoneImmediate
      Src: /src/postgres/src/backend/replication/walsender.c:3010,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:3019,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:3028,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/walsender.c:3029,1
    - Dst: WalSndDoneImmediate
      Src: /src/postgres/src/backend/replication/walsender.c:3031,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3032
      start: 2999
    functionDepth: 1
    functionLinenumber: 2999
    functionLinenumberEnd: 3032
    functionName: WalSndCheckShutdownTimeout
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached:
    - TimestampDifferenceExceeds
    - GetCurrentTimestamp
    - WalSndDoneImmediate
    linkageType: ''
    returnType: void
    signature: void WalSndCheckShutdownTimeout(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:3044,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:3054,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:3056,1
    - Dst: WalSndHandleConfigReload
      Src: /src/postgres/src/backend/replication/walsender.c:3059,1
    - Dst: ProcessRepliesIfAny
      Src: /src/postgres/src/backend/replication/walsender.c:3062,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:3070,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:3079,1
    - Dst: send_data
      Src: /src/postgres/src/backend/replication/walsender.c:3080,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:3085,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:3086,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:3089,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:3101,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walsender.c:3102,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:3104,1
    - Dst: WalSndDone
      Src: /src/postgres/src/backend/replication/walsender.c:3115,1
    - Dst: WalSndCheckTimeOut
      Src: /src/postgres/src/backend/replication/walsender.c:3119,1
    - Dst: WalSndCheckShutdownTimeout
      Src: /src/postgres/src/backend/replication/walsender.c:3126,1
    - Dst: WalSndKeepaliveIfNecessary
      Src: /src/postgres/src/backend/replication/walsender.c:3129,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:3142,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:3157,1
    - Dst: WalSndComputeSleeptime
      Src: /src/postgres/src/backend/replication/walsender.c:3158,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:3160,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/walsender.c:3164,1
    - Dst: pgstat_flush_io
      Src: /src/postgres/src/backend/replication/walsender.c:3167,1
    - Dst: pgstat_flush_backend
      Src: /src/postgres/src/backend/replication/walsender.c:3168,1
    - Dst: WalSndWait
      Src: /src/postgres/src/backend/replication/walsender.c:3173,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 42
    argCount: 1
    argNames:
    - send_data
    argTypes:
    - WalSndSendDataCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3176
      start: 3035
    functionDepth: 6
    functionLinenumber: 3035
    functionLinenumberEnd: 3176
    functionName: WalSndLoop
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached:
    - pgstat_flush_io
    - WalSndWait
    - WalSndShutdown
    - pq_is_send_pending
    - WalSndKeepaliveIfNecessary
    - send_data
    - TimestampDifferenceExceeds
    - WalSndDone
    - pgstat_flush_backend
    - ResetLatch
    - ProcessRepliesIfAny
    - WalSndCheckTimeOut
    - GetCurrentTimestamp
    - errmsg_internal
    - ereport
    - CHECK_FOR_INTERRUPTS
    - pq_flush_if_writable
    - WalSndHandleConfigReload
    - WalSndComputeSleeptime
    - WalSndCheckShutdownTimeout
    - WalSndSetState
    linkageType: ''
    returnType: void
    signature: void WalSndLoop(WalSndSendDataCallback send_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3189,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3199,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3203,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3240,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3248,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/replication/walsender.c:3251,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3252
      start: 3179
    functionDepth: 2
    functionLinenumber: 3179
    functionLinenumberEnd: 3252
    functionName: InitWalSenderSlot
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - Assert
    - SpinLockAcquire
    - on_shmem_exit
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void InitWalSenderSlot(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3260,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3264,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3268
      start: 3255
    functionDepth: 2
    functionLinenumber: 3255
    functionLinenumberEnd: 3268
    functionName: WalSndKill
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - Assert
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void WalSndKill(int code, Datum arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/walsender.c:3306,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/replication/walsender.c:3311,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/replication/walsender.c:3312,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/replication/walsender.c:3325,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:3327,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:3328,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:3329,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:3333,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:3334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:3335,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - state
    - nextSegNo
    - tli_p
    argTypes:
    - XLogReaderState*
    - XLogSegNo
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3337
      start: 3271
    functionDepth: 2
    functionLinenumber: 3271
    functionLinenumberEnd: 3337
    functionName: WalSndSegmentOpen
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - errcode_for_file_access
    - ereport
    - XLogFilePath
    - BasicOpenFile
    - errmsg
    - XLogFileName
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: "void WalSndSegmentOpen(XLogReaderState *state, XLogSegNo nextSegNo,\n\t\t\t\t
      \ TimeLineID *tli_p)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:3362,1
    - Dst: GetStandbyFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3403,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:3405,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/replication/walsender.c:3408,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/replication/walsender.c:3431,1
    - Dst: tliSwitchPoint
      Src: /src/postgres/src/backend/replication/walsender.c:3432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3434,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/walsender.c:3435,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3454,1
    - Dst: LagTrackerWrite
      Src: /src/postgres/src/backend/replication/walsender.c:3481,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:3481,1
    - Dst: wal_segment_close
      Src: /src/postgres/src/backend/replication/walsender.c:3501,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:3504,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:3509,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:3510,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:3511,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3555,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:3560,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:3561,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:3563,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:3564,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:3565,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:3571,1
    - Dst: WALReadFromBuffers
      Src: /src/postgres/src/backend/replication/walsender.c:3575,1
    - Dst: WALRead
      Src: /src/postgres/src/backend/replication/walsender.c:3583,1
    - Dst: WALReadRaiseError
      Src: /src/postgres/src/backend/replication/walsender.c:3591,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/walsender.c:3594,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/replication/walsender.c:3595,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3608,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3611,1
    - Dst: wal_segment_close
      Src: /src/postgres/src/backend/replication/walsender.c:3615,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:3627,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:3628,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:3628,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/walsender.c:3629,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:3632,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3640,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3642,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:3650,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:3651,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:3652,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 102
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3654
      start: 3349
    functionDepth: 4
    functionLinenumber: 3349
    functionLinenumberEnd: 3654
    functionName: XLogSendPhysical
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - GetFlushRecPtr
    - set_ps_display
    - LagTrackerWrite
    - GetStandbyFlushRecPtr
    - RecoveryInProgress
    - resetStringInfo
    - LSN_FORMAT_ARGS
    - elog
    - XLByteToSeg
    - wal_segment_close
    - WALReadRaiseError
    - memcpy
    - Assert
    - tliSwitchPoint
    - CheckXLogRemoved
    - SpinLockRelease
    - GetCurrentTimestamp
    - list_free_deep
    - GetWALInsertionTimeLine
    - pq_sendint64
    - WALRead
    - WALReadFromBuffers
    - pq_sendbyte
    - pq_putmessage_noblock
    - readTimeLineHistory
    - WalSndSetState
    - enlargeStringInfo
    - SpinLockAcquire
    - snprintf
    linkageType: ''
    returnType: void
    signature: void XLogSendPhysical(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/replication/walsender.c:3681,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:3685,1
    - Dst: LogicalDecodingProcessRecord
      Src: /src/postgres/src/backend/replication/walsender.c:3695,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:3704,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3716,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3718,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3737,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3739,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3741
      start: 3659
    functionDepth: 4
    functionLinenumber: 3659
    functionLinenumberEnd: 3741
    functionName: XLogSendLogical
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - elog
    - GetFlushRecPtr
    - XLogRecPtrIsValid
    - SpinLockAcquire
    - LogicalDecodingProcessRecord
    - GetXLogReplayRecPtr
    - SpinLockRelease
    - XLogReadRecord
    linkageType: ''
    returnType: void
    signature: void XLogSendLogical(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/replication/walsender.c:3759,1
    - Dst: EndCommandExtended
      Src: /src/postgres/src/backend/replication/walsender.c:3760,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:3770,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:3781,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:3782,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/walsender.c:3783,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:3785,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3786
      start: 3746
    functionDepth: 2
    functionLinenumber: 3746
    functionLinenumberEnd: 3786
    functionName: WalSndDoneImmediate
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - EndCommandExtended
    - SetQueryCompletion
    - ereport
    - errmsg
    - errdetail
    - pq_flush_if_writable
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void WalSndDoneImmediate(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: send_data
      Src: /src/postgres/src/backend/replication/walsender.c:3803,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:3810,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:3814,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3818,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/replication/walsender.c:3821,1
    - Dst: EndCommandExtended
      Src: /src/postgres/src/backend/replication/walsender.c:3822,1
    - Dst: WalSndCheckShutdownTimeout
      Src: /src/postgres/src/backend/replication/walsender.c:3847,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:3849,1
    - Dst: WalSndComputeSleeptime
      Src: /src/postgres/src/backend/replication/walsender.c:3852,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:3852,1
    - Dst: WalSndWait
      Src: /src/postgres/src/backend/replication/walsender.c:3855,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:3859,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:3861,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:3864,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:3865,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:3868,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:3871,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - send_data
    argTypes:
    - WalSndSendDataCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3872
      start: 3797
    functionDepth: 2
    functionLinenumber: 3797
    functionLinenumberEnd: 3872
    functionName: WalSndDone
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - EndCommandExtended
    - XLogRecPtrIsValid
    - GetCurrentTimestamp
    - WalSndWait
    - Assert
    - WalSndShutdown
    - pq_is_send_pending
    - SetQueryCompletion
    - ResetLatch
    - WalSndKeepalive
    - CHECK_FOR_INTERRUPTS
    - WalSndComputeSleeptime
    - pq_flush_if_writable
    - WalSndCheckShutdownTimeout
    - send_data
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void WalSndDone(WalSndSendDataCallback send_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3894,1
    - Dst: IsSyncingReplicationSlots
      Src: /src/postgres/src/backend/replication/walsender.c:3894,1
    - Dst: GetWalRcvFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3902,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3903,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - tli
    argTypes:
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3913
      start: 3885
    functionDepth: 3
    functionLinenumber: 3885
    functionLinenumberEnd: 3913
    functionName: GetStandbyFlushRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 3
    functionsReached:
    - Assert
    - GetXLogReplayRecPtr
    - IsSyncingReplicationSlots
    - GetWalRcvFlushRecPtr
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetStandbyFlushRecPtr(TimeLineID *tli)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3927,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3930,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3934,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3936
      start: 3918
    functionDepth: 2
    functionLinenumber: 3918
    functionLinenumberEnd: 3936
    functionName: WalSndRqstFileReload
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void WalSndRqstFileReload(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3944,1
    - Dst: kill
      Src: /src/postgres/src/backend/replication/walsender.c:3953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3958
      start: 3941
    functionDepth: 1
    functionLinenumber: 3941
    functionLinenumberEnd: 3958
    functionName: HandleWalSndInitStopping
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - Assert
    - kill
    linkageType: ''
    returnType: void
    signature: void HandleWalSndInitStopping(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:3969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3970
      start: 3965
    functionDepth: 1
    functionLinenumber: 3965
    functionLinenumberEnd: 3970
    functionName: WalSndLastCycleHandler
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - SetLatch
    linkageType: ''
    returnType: void
    signature: void WalSndLastCycleHandler(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3977,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3978,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3979,1
    - Dst: InitializeTimeouts
      Src: /src/postgres/src/backend/replication/walsender.c:3981,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3982,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3983,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3984,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3989
      start: 3973
    functionDepth: 1
    functionLinenumber: 3973
    functionLinenumberEnd: 3989
    functionName: WalSndSignals
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - InitializeTimeouts
    - pqsignal
    linkageType: ''
    returnType: void
    signature: void WalSndSignals(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/walsender.c:3998,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/replication/walsender.c:3998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4003
      start: 3992
    functionDepth: 0
    functionLinenumber: 3992
    functionLinenumberEnd: 4003
    functionName: WalSndShmemRequest
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - mul_size
    - add_size
    linkageType: ''
    returnType: void
    signature: void WalSndShmemRequest(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/walsender.c:4010,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/walsender.c:4016,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/walsender.c:4019,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/walsender.c:4020,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/walsender.c:4021,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4022
      start: 4006
    functionDepth: 2
    functionLinenumber: 4006
    functionLinenumberEnd: 4022
    functionName: WalSndShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - ConditionVariableInit
    - SpinLockInit
    - dlist_init
    linkageType: ''
    returnType: void
    signature: void WalSndShmemInit(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walsender.c:4049,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walsender.c:4052,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - physical
    - logical
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4053
      start: 4039
    functionDepth: 1
    functionLinenumber: 4039
    functionLinenumberEnd: 4053
    functionName: WalSndWakeup
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 5
    functionsReached:
    - ConditionVariableBroadcast
    linkageType: ''
    returnType: void
    signature: void WalSndWakeup(bool physical, bool logical)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ModifyWaitEvent
      Src: /src/postgres/src/backend/replication/walsender.c:4065,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/walsender.c:4096,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/walsender.c:4098,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/walsender.c:4100,1
    - Dst: WaitEventSetWait
      Src: /src/postgres/src/backend/replication/walsender.c:4102,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/walsender.c:4105,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:4106,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/walsender.c:4109,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - socket_events
    - timeout
    - wait_event
    argTypes:
    - uint32
    - long
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4110
      start: 4060
    functionDepth: 1
    functionLinenumber: 4060
    functionLinenumberEnd: 4110
    functionName: WalSndWait
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 4
    functionsReached:
    - WaitEventSetWait
    - ConditionVariableCancelSleep
    - ModifyWaitEvent
    - proc_exit
    - ConditionVariablePrepareToSleep
    linkageType: ''
    returnType: void
    signature: void WalSndWait(uint32 socket_events, long timeout, uint32 wait_event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:4128,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:4130,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/replication/walsender.c:4135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4137
      start: 4118
    functionDepth: 2
    functionLinenumber: 4118
    functionLinenumberEnd: 4137
    functionName: WalSndInitStopping
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - SendProcSignal
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void WalSndInitStopping(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:4156,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:4160,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:4167,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:4170,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/replication/walsender.c:4177,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4179
      start: 4144
    functionDepth: 2
    functionLinenumber: 4144
    functionLinenumberEnd: 4179
    functionName: WalSndWaitStopping
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - SpinLockAcquire
    - pg_usleep
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void WalSndWaitStopping(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:4187,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:4192,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:4194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - WalSndState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4195
      start: 4182
    functionDepth: 2
    functionLinenumber: 4182
    functionLinenumberEnd: 4195
    functionName: WalSndSetState
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 7
    functionsReached:
    - Assert
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void WalSndSetState(WalSndState state)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - WalSndState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4218
      start: 4201
    functionDepth: 0
    functionLinenumber: 4201
    functionLinenumberEnd: 4218
    functionName: WalSndGetStateString
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      WalSndGetStateString(WalSndState state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/replication/walsender.c:4223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - offset
    argTypes:
    - TimeOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4230
      start: 4220
    functionDepth: 0
    functionLinenumber: 4220
    functionLinenumberEnd: 4230
    functionName: offset_to_interval
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: Interval
    signature: 'Interval *

      offset_to_interval(TimeOffset offset)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/replication/walsender.c:4245,1
    - Dst: SyncRepGetCandidateStandbys
      Src: /src/postgres/src/backend/replication/walsender.c:4251,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:4273,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:4276,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:4290,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4308,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/replication/walsender.c:4310,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/walsender.c:4310,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/replication/walsender.c:4317,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4321,1
    - Dst: WalSndGetStateString
      Src: /src/postgres/src/backend/replication/walsender.c:4321,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:4323,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4325,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:4327,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4329,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:4331,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4333,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:4335,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4337,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:4344,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4349,1
    - Dst: offset_to_interval
      Src: /src/postgres/src/backend/replication/walsender.c:4349,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4354,1
    - Dst: offset_to_interval
      Src: /src/postgres/src/backend/replication/walsender.c:4354,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4359,1
    - Dst: offset_to_interval
      Src: /src/postgres/src/backend/replication/walsender.c:4359,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4361,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4375,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4378,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4378,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4380,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4385,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/replication/walsender.c:4388,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4393
      start: 4236
    functionDepth: 2
    functionLinenumber: 4236
    functionLinenumberEnd: 4393
    functionName: pg_stat_get_wal_senders
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - SyncRepGetCandidateStandbys
    - InitMaterializedSRF
    - Int32GetDatum
    - has_privs_of_role
    - GetUserId
    - tuplestore_putvalues
    - offset_to_interval
    - MemSet
    - IntervalPGetDatum
    - CStringGetTextDatum
    - SpinLockRelease
    - LSNGetDatum
    - SpinLockAcquire
    - TimestampTzGetDatum
    - WalSndGetStateString
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stat_get_wal_senders(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:4410,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:4413,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:4414,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:4415,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:4415,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:4416,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:4416,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:4417,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:4420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - requestReply
    - writePtr
    argTypes:
    - bool
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4425
      start: 4407
    functionDepth: 3
    functionLinenumber: 4407
    functionLinenumberEnd: 4425
    functionName: WalSndKeepalive
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 4
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - XLogRecPtrIsValid
    - pq_putmessage_noblock
    - pq_sendint64
    - pq_sendbyte
    - resetStringInfo
    linkageType: ''
    returnType: void
    signature: void WalSndKeepalive(bool requestReply, XLogRecPtr writePtr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:4450,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:4454,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:4457,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:4458,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4460
      start: 4430
    functionDepth: 4
    functionLinenumber: 4430
    functionLinenumberEnd: 4460
    functionName: WalSndKeepaliveIfNecessary
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 3
    functionsReached:
    - WalSndShutdown
    - pq_flush_if_writable
    - TimestampTzPlusMilliseconds
    - WalSndKeepalive
    linkageType: ''
    returnType: void
    signature: void WalSndKeepaliveIfNecessary(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - lsn
    - local_flush_time
    argTypes:
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4511
      start: 4468
    functionDepth: 0
    functionLinenumber: 4468
    functionLinenumberEnd: 4511
    functionName: LagTrackerWrite
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LagTrackerWrite(XLogRecPtr lsn, TimestampTz local_flush_time)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:4612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:4642,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - head
    - lsn
    - now
    argTypes:
    - int
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4644
      start: 4526
    functionDepth: 1
    functionLinenumber: 4526
    functionLinenumberEnd: 4644
    functionName: LagTrackerRead
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: TimeOffset
    signature: TimeOffset LagTrackerRead(int head, XLogRecPtr lsn, TimestampTz now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: SyncStandbysDefined
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SyncStandbysDefined()
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:158,1
    - Dst: SyncRepRequested
      Src: /src/postgres/src/backend/replication/syncrep.c:179,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/syncrep.c:188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:190,1
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:191,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:194,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:213,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:225,1
    - Dst: SyncStandbysDefined
      Src: /src/postgres/src/backend/replication/syncrep.c:228,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:243,1
    - Dst: SyncRepQueueInsert
      Src: /src/postgres/src/backend/replication/syncrep.c:253,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:254,1
    - Dst: SyncRepQueueIsOrderedByLSN
      Src: /src/postgres/src/backend/replication/syncrep.c:254,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:255,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/syncrep.c:262,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/syncrep.c:262,1
    - Dst: set_ps_display_suffix
      Src: /src/postgres/src/backend/replication/syncrep.c:263,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/syncrep.c:277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:304,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/syncrep.c:305,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:306,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/syncrep.c:307,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/replication/syncrep.c:308,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:312,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/syncrep.c:313,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:314,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/syncrep.c:315,1
    - Dst: SyncRepCancelWait
      Src: /src/postgres/src/backend/replication/syncrep.c:317,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:330,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:331,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/syncrep.c:332,1
    - Dst: SyncRepCancelWait
      Src: /src/postgres/src/backend/replication/syncrep.c:333,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/syncrep.c:341,1
    - Dst: SyncRepCancelWait
      Src: /src/postgres/src/backend/replication/syncrep.c:352,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/replication/syncrep.c:365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:366,1
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:366,1
    - Dst: set_ps_display_remove_suffix
      Src: /src/postgres/src/backend/replication/syncrep.c:372,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 66
    argCount: 2
    argNames:
    - lsn
    - commit
    argTypes:
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 373
    functionName: SyncRepWaitForLSN
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 4
    functionsReached:
    - SyncRepQueueInsert
    - LWLockAcquire
    - errcode
    - LSN_FORMAT_ARGS
    - Assert
    - SyncRepRequested
    - ResetLatch
    - SyncRepQueueIsOrderedByLSN
    - errmsg
    - SyncRepCancelWait
    - sprintf
    - dlist_node_is_detached
    - ereport
    - pg_read_barrier
    - set_ps_display_remove_suffix
    - SyncStandbysDefined
    - errdetail_log
    - WaitLatch
    - LWLockRelease
    - errdetail
    - Min
    - set_ps_display_suffix
    linkageType: ''
    returnType: void
    signature: void SyncRepWaitForLSN(XLogRecPtr lsn, bool commit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:387,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/syncrep.c:392,1
    - Dst: dlist_insert_after
      Src: /src/postgres/src/backend/replication/syncrep.c:400,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/backend/replication/syncrep.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - mode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 410
    functionName: SyncRepQueueInsert
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - Assert
    - dlist_container
    - dlist_push_head
    - dlist_insert_after
    linkageType: ''
    returnType: void
    signature: void SyncRepQueueInsert(int mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/syncrep.c:392,1
    - Dst: dlist_insert_after
      Src: /src/postgres/src/backend/replication/syncrep.c:400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 403
    functionName: dlist_reverse_foreach
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached:
    - dlist_container
    - dlist_insert_after
    linkageType: ''
    returnType: void
    signature: void dlist_reverse_foreach(iter, queue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:418,1
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:419,1
    - Dst: dlist_delete_thoroughly
      Src: /src/postgres/src/backend/replication/syncrep.c:420,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 423
    functionName: SyncRepCancelWait
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - dlist_delete_thoroughly
    - dlist_node_is_detached
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void SyncRepCancelWait(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:432,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:434,1
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:437,1
    - Dst: dlist_delete_thoroughly
      Src: /src/postgres/src/backend/replication/syncrep.c:438,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:440,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 425
    functionDepth: 2
    functionLinenumber: 425
    functionLinenumberEnd: 442
    functionName: SyncRepCleanupAtProcExit
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached:
    - dlist_delete_thoroughly
    - dlist_node_is_detached
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void SyncRepCleanupAtProcExit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SyncRepGetStandbyPriority
      Src: /src/postgres/src/backend/replication/syncrep.c:463,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:466,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:468,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:470,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/syncrep.c:471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 474
    functionName: SyncRepInitConfig
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 3
    functionsReached:
    - errmsg_internal
    - SyncRepGetStandbyPriority
    - ereport
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void SyncRepInitConfig(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/syncrep.c:505,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:515,1
    - Dst: SyncRepGetSyncRecPtr
      Src: /src/postgres/src/backend/replication/syncrep.c:525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:536,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:537,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:540,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:541,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:551,1
    - Dst: SyncRepWakeQueue
      Src: /src/postgres/src/backend/replication/syncrep.c:563,1
    - Dst: SyncRepWakeQueue
      Src: /src/postgres/src/backend/replication/syncrep.c:568,1
    - Dst: SyncRepWakeQueue
      Src: /src/postgres/src/backend/replication/syncrep.c:573,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:576,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/syncrep.c:578,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/syncrep.c:579,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/syncrep.c:580,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/syncrep.c:581,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 582
    functionName: SyncRepReleaseWaiters
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 2
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - SyncRepGetSyncRecPtr
    - LWLockAcquire
    - ereport
    - SyncRepWakeQueue
    - errmsg
    - LWLockRelease
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void SyncRepReleaseWaiters(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SyncRepGetCandidateStandbys
      Src: /src/postgres/src/backend/replication/syncrep.c:613,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:632,1
    - Dst: SyncRepGetOldestSyncRecPtr
      Src: /src/postgres/src/backend/replication/syncrep.c:651,1
    - Dst: SyncRepGetNthLatestSyncRecPtr
      Src: /src/postgres/src/backend/replication/syncrep.c:656,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:661,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 4
    argNames:
    - writePtr
    - flushPtr
    - applyPtr
    - am_sync
    argTypes:
    - XLogRecPtr*
    - XLogRecPtr*
    - XLogRecPtr*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 663
    functionName: SyncRepGetSyncRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - pfree
    - SyncRepGetNthLatestSyncRecPtr
    - SyncRepGetCandidateStandbys
    - SyncRepGetOldestSyncRecPtr
    linkageType: ''
    returnType: bool
    signature: "bool SyncRepGetSyncRecPtr(XLogRecPtr *writePtr, XLogRecPtr *flushPtr,\n\t\t\t\t\t
      XLogRecPtr *applyPtr, bool *am_sync)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/syncrep.c:688,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/syncrep.c:690,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/syncrep.c:692,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 5
    argNames:
    - writePtr
    - flushPtr
    - applyPtr
    - sync_standbys
    - num_standbys
    argTypes:
    - XLogRecPtr*
    - XLogRecPtr*
    - XLogRecPtr*
    - SyncRepStandbyData*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 695
    functionName: SyncRepGetOldestSyncRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    linkageType: ''
    returnType: void
    signature: "void SyncRepGetOldestSyncRecPtr(XLogRecPtr *writePtr,\n\t\t\t\t\t\t
      \  XLogRecPtr *flushPtr,\n\t\t\t\t\t\t   XLogRecPtr *applyPtr,\n\t\t\t\t\t\t
      \  SyncRepStandbyData *sync_standbys,\n\t\t\t\t\t\t   int num_standbys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:715,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/syncrep.c:717,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/syncrep.c:718,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/syncrep.c:719,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/syncrep.c:729,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/syncrep.c:730,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/syncrep.c:731,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:738,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:739,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:740,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 6
    argNames:
    - writePtr
    - flushPtr
    - applyPtr
    - sync_standbys
    - num_standbys
    - nth
    argTypes:
    - XLogRecPtr*
    - XLogRecPtr*
    - XLogRecPtr*
    - SyncRepStandbyData*
    - int
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 741
    functionName: SyncRepGetNthLatestSyncRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - Assert
    - qsort
    - palloc_array
    - pfree
    linkageType: ''
    returnType: void
    signature: "void SyncRepGetNthLatestSyncRecPtr(XLogRecPtr *writePtr,\n\t\t\t\t\t\t\t
      \ XLogRecPtr *flushPtr,\n\t\t\t\t\t\t\t  XLogRecPtr *applyPtr,\n\t\t\t\t\t\t\t
      \ SyncRepStandbyData *sync_standbys,\n\t\t\t\t\t\t\t  int num_standbys,\n\t\t\t\t\t\t\t
      \ uint8 nth)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u64
      Src: /src/postgres/src/backend/replication/syncrep.c:752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 753
    functionName: cmp_lsn
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u64
    linkageType: ''
    returnType: int
    signature: int cmp_lsn(const void *a, const void *b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/syncrep.c:769,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:786,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:793,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/syncrep.c:809,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/syncrep.c:827,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - standbys
    argTypes:
    - SyncRepStandbyData**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 762
    functionDepth: 2
    functionLinenumber: 762
    functionLinenumberEnd: 834
    functionName: SyncRepGetCandidateStandbys
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 2
    functionsReached:
    - qsort
    - XLogRecPtrIsValid
    - palloc_array
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: int
    signature: int SyncRepGetCandidateStandbys(SyncRepStandbyData **standbys)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 855
    functionName: standby_priority_comparator
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int standby_priority_comparator(const void *a, const void *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SyncStandbysDefined
      Src: /src/postgres/src/backend/replication/syncrep.c:880,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/syncrep.c:886,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/syncrep.c:887,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/syncrep.c:892,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 866
    functionDepth: 2
    functionLinenumber: 866
    functionLinenumberEnd: 903
    functionName: SyncRepGetStandbyPriority
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    - strlen
    - SyncStandbysDefined
    - strcmp
    linkageType: ''
    returnType: int
    signature: int SyncRepGetStandbyPriority(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:920,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/syncrep.c:920,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:921,1
    - Dst: SyncRepQueueIsOrderedByLSN
      Src: /src/postgres/src/backend/replication/syncrep.c:921,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/syncrep.c:923,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/syncrep.c:925,1
    - Dst: dlist_delete_thoroughly
      Src: /src/postgres/src/backend/replication/syncrep.c:936,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/replication/syncrep.c:943,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/syncrep.c:954,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - all
    - mode
    argTypes:
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 960
    functionName: SyncRepWakeQueue
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - Assert
    - dlist_container
    - pg_write_barrier
    - SyncRepQueueIsOrderedByLSN
    - SetLatch
    - dlist_foreach_modify
    - LWLockHeldByMeInMode
    - dlist_delete_thoroughly
    linkageType: ''
    returnType: int
    signature: int SyncRepWakeQueue(bool all, int mode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SyncStandbysDefined
      Src: /src/postgres/src/backend/replication/syncrep.c:972,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:977,1
    - Dst: SyncRepWakeQueue
      Src: /src/postgres/src/backend/replication/syncrep.c:989,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:1002,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:1006,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:1014,1
    - Dst: SyncStandbysDefined
      Src: /src/postgres/src/backend/replication/syncrep.c:1014,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:1024,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 969
    functionDepth: 2
    functionLinenumber: 969
    functionLinenumberEnd: 1026
    functionName: SyncRepUpdateSyncStandbysDefined
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - Assert
    - SyncRepWakeQueue
    - LWLockRelease
    - SyncStandbysDefined
    linkageType: ''
    returnType: void
    signature: void SyncRepUpdateSyncStandbysDefined(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:1035,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/syncrep.c:1039,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/syncrep.c:1041,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - mode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1029
    functionDepth: 1
    functionLinenumber: 1029
    functionLinenumberEnd: 1054
    functionName: SyncRepQueueIsOrderedByLSN
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 2
    functionsReached:
    - Assert
    - dlist_container
    - dlist_foreach
    linkageType: ''
    returnType: bool
    signature: bool SyncRepQueueIsOrderedByLSN(int mode)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: syncrep_scanner_init
      Src: /src/postgres/src/backend/replication/syncrep.c:1077,1
    - Dst: syncrep_yyparse
      Src: /src/postgres/src/backend/replication/syncrep.c:1078,1
    - Dst: syncrep_scanner_finish
      Src: /src/postgres/src/backend/replication/syncrep.c:1079,1
    - Dst: GUC_check_errcode
      Src: /src/postgres/src/backend/replication/syncrep.c:1083,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/syncrep.c:1085,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/syncrep.c:1088,1
    - Dst: GUC_check_errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:1095,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/replication/syncrep.c:1102,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/syncrep.c:1105,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1121
    functionName: check_synchronous_standby_names
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached:
    - memcpy
    - syncrep_scanner_init
    - syncrep_yyparse
    - guc_malloc
    - GUC_check_errcode
    - syncrep_scanner_finish
    - GUC_check_errmsg
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_synchronous_standby_names(char **newval, void **extra, GucSource
      source)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1123
    functionDepth: 0
    functionLinenumber: 1123
    functionLinenumberEnd: 1127
    functionName: assign_synchronous_standby_names
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void assign_synchronous_standby_names(const char *newval, void *extra)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1129
    functionDepth: 0
    functionLinenumber: 1129
    functionLinenumberEnd: 1147
    functionName: assign_synchronous_commit
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void assign_synchronous_commit(int newval, void *extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 130
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: libpqrcv_check_conninfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:174,1
    - Dst: GetDatabaseEncodingName
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:187,1
    - Dst: libpqrcv_get_option_from_conninfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:197,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:198,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:222,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:222,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:224,1
    - Dst: libpqsrv_connect_params_start
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:226,1
    - Dst: PQsetNoticeReceiver
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:228,1
    - Dst: libpqsrv_connect_complete
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:230,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:234,1
    - Dst: PQstatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:236,1
    - Dst: PQconnectionUsedPassword
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:239,1
    - Dst: libpqsrv_disconnect
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:241,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:242,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:244,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:245,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:246,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:247,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:248,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:259,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:262,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:264,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:265,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:265,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:266,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:266,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:269,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:278,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:278,1
    - Dst: libpqsrv_disconnect
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:282,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:283,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 61
    argCount: 6
    argNames:
    - conninfo
    - replication
    - logical
    - must_use_password
    - appname
    - err
    argTypes:
    - char*
    - bool
    - bool
    - bool
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 285
    functionName: libpqrcv_connect
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQclear
    - errcode
    - errhint
    - _
    - Assert
    - pfree
    - pchomp
    - errmsg
    - PQresultStatus
    - libpqsrv_connect_params_start
    - lengthof
    - PQstatus
    - PQsetNoticeReceiver
    - palloc0_object
    - libpqrcv_check_conninfo
    - psprintf
    - ereport
    - PQerrorMessage
    - GetDatabaseEncodingName
    - libpqsrv_connect_complete
    - libpqsrv_exec
    - PQconnectionUsedPassword
    - libpqsrv_disconnect
    - libpqrcv_get_option_from_conninfo
    - errdetail
    linkageType: ''
    returnType: WalReceiverConn
    signature: "WalReceiverConn *\nlibpqrcv_connect(const char *conninfo, bool replication,
      bool logical,\n\t\t\t\t bool must_use_password, const char *appname, char **err)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfoParse
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:302,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:306,1
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:308,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:309,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:310,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:311,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:324,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:334,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:336,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:337,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:338,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:339,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:343,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - conninfo
    - must_use_password
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 344
    functionName: libpqrcv_check_conninfo
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 1
    functionsReached:
    - PQconninfoFree
    - strcmp
    - errcode
    - pstrdup
    - ereport
    - errmsg
    - errdetail
    - PQfreemem
    - PQconninfoParse
    linkageType: ''
    returnType: void
    signature: void libpqrcv_check_conninfo(const char *conninfo, bool must_use_password)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:358,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:360,1
    - Dst: PQconninfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:361,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:364,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:365,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:366,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:367,1
    - Dst: strchr
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:375,1
    - Dst: strchr
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:381,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:383,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:389,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:391,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:391,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:392,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 350
    functionDepth: 4
    functionLinenumber: 350
    functionLinenumberEnd: 394
    functionName: libpqrcv_get_conninfo
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQconninfoFree
    - _
    - errcode
    - Assert
    - strchr
    - pstrdup
    - ereport
    - initPQExpBuffer
    - errmsg
    - PQconninfo
    - termPQExpBuffer
    - PQExpBufferDataBroken
    - appendPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqrcv_get_conninfo(WalReceiverConn *conn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:408,1
    - Dst: PQhost
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:410,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:411,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:412,1
    - Dst: PQport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:414,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:415,1
    - Dst: atoi
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:416,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - sender_host
    - sender_port
    argTypes:
    - WalReceiverConn*
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 417
    functionName: libpqrcv_get_senderinfo
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQhost
    - Assert
    - pstrdup
    - atoi
    - strlen
    - PQport
    linkageType: ''
    returnType: void
    signature: "void libpqrcv_get_senderinfo(WalReceiverConn *conn, char **sender_host,\n\t\t\t\t\t\tint
      *sender_port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:433,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:436,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:437,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:438,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:439,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:441,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:441,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:447,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:447,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:448,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:449,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:450,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:451,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:452,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:452,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:453,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:453,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:454,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:454,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:455,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - primary_tli
    argTypes:
    - WalReceiverConn*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 423
    functionDepth: 5
    functionLinenumber: 423
    functionLinenumberEnd: 458
    functionName: libpqrcv_identify_system
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQclear
    - errcode
    - pchomp
    - errdetail
    - libpqsrv_exec
    - pstrdup
    - ereport
    - PQgetvalue
    - PQntuples
    - errmsg
    - PQresultStatus
    - PQerrorMessage
    - pg_strtoint32
    - PQnfields
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqrcv_identify_system(WalReceiverConn *conn, TimeLineID *primary_tli)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQserverVersion
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 467
    functionName: libpqrcv_server_version
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQserverVersion
    linkageType: ''
    returnType: int
    signature: int libpqrcv_server_version(WalReceiverConn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpqrcv_get_option_from_conninfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - connInfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 478
    functionName: libpqrcv_get_dbname_from_conninfo
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - libpqrcv_get_option_from_conninfo
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqrcv_get_dbname_from_conninfo(const char *connInfo)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfoParse
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:493,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:497,1
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:499,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:500,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:501,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:502,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:511,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:515,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:517,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:521,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - connInfo
    - keyword
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 486
    functionDepth: 3
    functionLinenumber: 486
    functionLinenumberEnd: 523
    functionName: libpqrcv_get_option_from_conninfo
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 2
    functionsReached:
    - PQconninfoFree
    - strcmp
    - errcode
    - pfree
    - pstrdup
    - ereport
    - errmsg
    - PQfreemem
    - PQconninfoParse
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqrcv_get_option_from_conninfo(const char *connInfo, const char *keyword)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:536,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:542,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:543,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:545,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - buf
    - str
    - quote
    argTypes:
    - StringInfo
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 533
    functionDepth: 2
    functionLinenumber: 533
    functionLinenumberEnd: 546
    functionName: appendQuotedString
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void appendQuotedString(StringInfo buf, const char *str, char quote)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 548
    functionDepth: 0
    functionLinenumber: 548
    functionLinenumberEnd: 549
    functionName: appendQuotedIdentifier
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: appendQuotedIdentifier(b, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 550
    functionName: appendQuotedLiteral
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: appendQuotedLiteral(b, s)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:568,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:569,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:571,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:574,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:577,1
    - Dst: appendQuotedIdentifier
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:578,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:582,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:584,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:584,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:595,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:597,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:602,1
    - Dst: appendQuotedLiteral
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:603,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:607,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:608,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:611,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:613,1
    - Dst: appendQuotedLiteral
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:614,1
    - Dst: stringlist_to_identifierstr
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:618,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:619,1
    - Dst: appendQuotedLiteral
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:620,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:621,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:624,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:625,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:627,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:630,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:634,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:637,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:639,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:641,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:645,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:646,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:647,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:648,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:648,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:649,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 2
    argNames:
    - conn
    - options
    argTypes:
    - WalReceiverConn*
    - WalRcvStreamOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 561
    functionDepth: 3
    functionLinenumber: 561
    functionLinenumberEnd: 651
    functionName: libpqrcv_startstreaming
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQclear
    - errcode
    - LSN_FORMAT_ARGS
    - Assert
    - pfree
    - appendStringInfoString
    - pchomp
    - errmsg
    - PQresultStatus
    - appendStringInfoChar
    - initStringInfo
    - ereport
    - appendQuotedLiteral
    - PQserverVersion
    - PQerrorMessage
    - appendQuotedIdentifier
    - appendStringInfo
    - libpqsrv_exec
    - stringlist_to_identifierstr
    linkageType: ''
    returnType: bool
    signature: "bool libpqrcv_startstreaming(WalReceiverConn *conn,\n\t\t\t\t\t\tconst
      WalRcvStreamOptions *options)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:666,1
    - Dst: PQflush
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:667,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:668,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:669,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:670,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:671,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:671,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:683,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:685,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:691,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:691,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:692,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:693,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:694,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:695,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:695,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:696,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:699,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:702,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:704,1
    - Dst: PQendcopy
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:707,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:708,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:709,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:710,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:711,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:711,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:714,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:718,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:719,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:720,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:721,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:722,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:722,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:723,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:726,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:729,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:730,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:731,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:732,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:732,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - conn
    - next_tli
    argTypes:
    - WalReceiverConn*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 657
    functionDepth: 5
    functionLinenumber: 657
    functionLinenumberEnd: 733
    functionName: libpqrcv_endstreaming
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQclear
    - errcode
    - pchomp
    - PQendcopy
    - ereport
    - PQgetvalue
    - PQflush
    - PQntuples
    - errmsg
    - PQresultStatus
    - PQputCopyEnd
    - libpqsrv_get_result
    - PQerrorMessage
    - pg_strtoint32
    - PQnfields
    linkageType: ''
    returnType: void
    signature: void libpqrcv_endstreaming(WalReceiverConn *conn, TimeLineID *next_tli)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:746,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:751,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:752,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:756,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:757,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:758,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:760,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:760,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:761,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:761,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:762,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:763,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:764,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:765,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:766,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:766,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:767,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:767,1
    - Dst: PQgetlength
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:769,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:770,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:771,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:771,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:772,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - conn
    - tli
    - filename
    - content
    - len
    argTypes:
    - WalReceiverConn*
    - TimeLineID
    - char**
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 738
    functionDepth: 5
    functionLinenumber: 738
    functionLinenumberEnd: 773
    functionName: libpqrcv_readtimelinehistoryfile
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQgetlength
    - PQnfields
    - memcpy
    - PQclear
    - errcode
    - Assert
    - pchomp
    - libpqsrv_exec
    - errdetail
    - ereport
    - pstrdup
    - PQgetvalue
    - PQntuples
    - errmsg
    - PQresultStatus
    - PQerrorMessage
    - palloc
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void libpqrcv_readtimelinehistoryfile(WalReceiverConn *conn,\n\t\t\t\t\t\t\t\t
      TimeLineID tli, char **filename,\n\t\t\t\t\t\t\t\t char **content, int *len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpqsrv_disconnect
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:781,1
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:782,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 778
    functionDepth: 2
    functionLinenumber: 778
    functionLinenumberEnd: 784
    functionName: libpqrcv_disconnect
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - libpqsrv_disconnect
    - pfree
    - PQfreemem
    linkageType: ''
    returnType: void
    signature: void libpqrcv_disconnect(WalReceiverConn *conn)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:808,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:812,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:816,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:817,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:818,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:819,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:820,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:820,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:823,1
    - Dst: PQsocket
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:827,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:835,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:837,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:839,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:842,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:846,1
    - Dst: PQstatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:853,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:856,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:857,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:858,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:859,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:864,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:870,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:871,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:872,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:873,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:873,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:876,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:877,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:878,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:879,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:879,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 3
    argNames:
    - conn
    - buffer
    - wait_fd
    argTypes:
    - WalReceiverConn*
    - char**
    - pgsocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 802
    functionDepth: 2
    functionLinenumber: 802
    functionLinenumberEnd: 884
    functionName: libpqrcv_receive
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQclear
    - errcode
    - pchomp
    - PQconsumeInput
    - ereport
    - PQgetCopyData
    - PQsocket
    - errmsg
    - libpqsrv_get_result
    - PQresultStatus
    - PQfreemem
    - PQerrorMessage
    - PQstatus
    linkageType: ''
    returnType: int
    signature: "int libpqrcv_receive(WalReceiverConn *conn, char **buffer,\n\t\t\t\t
      pgsocket *wait_fd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQputCopyData
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:894,1
    - Dst: PQflush
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:895,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:896,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:897,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:898,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:899,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:899,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - conn
    - buffer
    - nbytes
    argTypes:
    - WalReceiverConn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 891
    functionDepth: 3
    functionLinenumber: 891
    functionLinenumberEnd: 900
    functionName: libpqrcv_send
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errcode
    - pchomp
    - ereport
    - PQflush
    - errmsg
    - PQerrorMessage
    - PQputCopyData
    linkageType: ''
    returnType: void
    signature: void libpqrcv_send(WalReceiverConn *conn, const char *buffer, int nbytes)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: PQserverVersion
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:917,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:919,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:921,1
    - Dst: appendQuotedIdentifier
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:922,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:925,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:929,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:931,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:934,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:936,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:938,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:943,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:945,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:947,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:955,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:958,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:961,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:970,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:973,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:976,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:982,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:987,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:989,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:992,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:995,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:997,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:998,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:999,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1000,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1001,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1001,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1004,1
    - Dst: DirectFunctionCall1Coll
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1004,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1005,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1005,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1007,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1008,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1008,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1012,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 66
    argCount: 7
    argNames:
    - conn
    - slotname
    - temporary
    - two_phase
    - failover
    - snapshot_action
    - lsn
    argTypes:
    - WalReceiverConn*
    - char*
    - bool
    - bool
    - bool
    - CRSSnapshotAction
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 907
    functionDepth: 5
    functionLinenumber: 907
    functionLinenumberEnd: 1015
    functionName: libpqrcv_create_slot
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQclear
    - errcode
    - pstrdup
    - PQgetvalue
    - pfree
    - pchomp
    - appendStringInfoString
    - DirectFunctionCall1Coll
    - errmsg
    - PQresultStatus
    - DatumGetLSN
    - appendStringInfoChar
    - CStringGetDatum
    - initStringInfo
    - ereport
    - PQserverVersion
    - PQgetisnull
    - PQerrorMessage
    - appendQuotedIdentifier
    - libpqsrv_exec
    linkageType: ''
    returnType: char
    signature: "char *\nlibpqrcv_create_slot(WalReceiverConn *conn, const char *slotname,\n\t\t\t\t\t
      bool temporary, bool two_phase, bool failover,\n\t\t\t\t\t CRSSnapshotAction
      snapshot_action, XLogRecPtr *lsn)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1027,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1028,1
    - Dst: appendQuotedIdentifier
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1029,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1030,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1033,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1037,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1040,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1043,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1045,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1047,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1049,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1050,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1051,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1052,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1053,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1053,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1055,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - conn
    - slotname
    - failover
    - two_phase
    argTypes:
    - WalReceiverConn*
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1020
    functionDepth: 3
    functionLinenumber: 1020
    functionLinenumberEnd: 1056
    functionName: libpqrcv_alter_slot
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQclear
    - errcode
    - pfree
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - libpqsrv_exec
    - ereport
    - pchomp
    - errmsg
    - PQresultStatus
    - PQerrorMessage
    - appendQuotedIdentifier
    linkageType: ''
    returnType: void
    signature: "void libpqrcv_alter_slot(WalReceiverConn *conn, const char *slotname,\n\t\t\t\t\tconst
      bool *failover, const bool *two_phase)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQbackendPID
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1065
    functionName: libpqrcv_get_backend_pid
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQbackendPID
    linkageType: ''
    returnType: pid_t
    signature: pid_t libpqrcv_get_backend_pid(WalReceiverConn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1076,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1084,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1085,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1086,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1087,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1090,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1093,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1095,1
    - Dst: PQfname
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1096,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1097,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1098,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1101,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1105,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1110,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1114,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1117,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1124,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1127,1
    - Dst: BuildTupleFromCStrings
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1131,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1132,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1135,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1136,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1139,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 4
    argNames:
    - pgres
    - walres
    - nRetTypes
    - retTypes
    argTypes:
    - PGresult*
    - WalRcvExecResult*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1070
    functionDepth: 5
    functionLinenumber: 1070
    functionLinenumberEnd: 1140
    functionName: libpqrcv_processTuples
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQfname
    - errcode
    - PQgetvalue
    - PQnfields
    - MemoryContextReset
    - errdetail
    - TupleDescFinalize
    - errmsg
    - PQntuples
    - TupleDescInitEntry
    - tuplestore_begin_heap
    - CreateTemplateTupleDesc
    - ereport
    - CHECK_FOR_INTERRUPTS
    - BuildTupleFromCStrings
    - AllocSetContextCreate
    - PQgetisnull
    - TupleDescGetAttInMetadata
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - tuplestore_puttuple
    linkageType: ''
    returnType: void
    signature: "void libpqrcv_processTuples(PGresult *pgres, WalRcvExecResult *walres,\n\t\t\t\t\t
      \  const int nRetTypes, const Oid *retTypes)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1158,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1160,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1164,1
    - Dst: libpqrcv_processTuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1170,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1192,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1198,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1205,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1205,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1206,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1208,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1216,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 4
    argNames:
    - conn
    - query
    - nRetTypes
    - retTypes
    argTypes:
    - WalReceiverConn*
    - char*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1147
    functionDepth: 6
    functionLinenumber: 1147
    functionLinenumberEnd: 1219
    functionName: libpqrcv_exec
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - PQclear
    - libpqrcv_processTuples
    - errcode
    - _
    - pchomp
    - libpqsrv_exec
    - PQresultErrorField
    - ereport
    - MAKE_SQLSTATE
    - errmsg
    - PQresultStatus
    - PQerrorMessage
    linkageType: ''
    returnType: WalRcvExecResult
    signature: "WalRcvExecResult *\nlibpqrcv_exec(WalReceiverConn *conn, const char
      *query,\n\t\t\t  const int nRetTypes, const Oid *retTypes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1236,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1240,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1240,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1245,1
    - Dst: appendQuotedIdentifier
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - strings
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1229
    functionDepth: 3
    functionLinenumber: 1229
    functionLinenumberEnd: 1250
    functionName: stringlist_to_identifierstr
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 1
    functionsReached:
    - initStringInfo
    - lfirst
    - appendQuotedIdentifier
    - strVal
    - appendStringInfoChar
    linkageType: ''
    returnType: char
    signature: 'char *

      stringlist_to_identifierstr(List *strings)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1240,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1240,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1245,1
    - Dst: appendQuotedIdentifier
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1238
    functionDepth: 2
    functionLinenumber: 1238
    functionLinenumberEnd: 1247
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 365
    functionsReached:
    - appendQuotedIdentifier
    - strVal
    - lfirst
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void foreach(lc, strings)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - cb
    argTypes:
    - OutputPluginCallbacks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 287
    functionName: _PG_output_plugin_init
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _PG_output_plugin_init(OutputPluginCallbacks *cb)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:312,1
    - Dst: IsA
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:312,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:315,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:321,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:323,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:327,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:329,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:330,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:334,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:335,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:336,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:337,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:341,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:344,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:345,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:346,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:353,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:353,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:355,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:357,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:359,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:362,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:363,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:364,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:367,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:372,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:374,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:377,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:379,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:382,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:384,1
    - Dst: defGetStreamingMode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:387,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:389,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:392,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:393,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:394,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:404,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:405,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:406,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:409,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:410,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:412,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:415,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:416,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:417,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:420,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:425,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:426,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:427,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:429,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:430,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:431,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 67
    argCount: 2
    argNames:
    - options
    - data
    argTypes:
    - List*
    - PGOutputData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 432
    functionName: parse_output_parameters
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - elog
    - strtoul
    - pg_strcasecmp
    - defGetBoolean
    - strcmp
    - errcode
    - Assert
    - pstrdup
    - ereport
    - lfirst
    - errmsg
    - SplitIdentifierString
    - strVal
    - IsA
    - defGetString
    - defGetStreamingMode
    linkageType: ''
    returnType: void
    signature: void parse_output_parameters(List *options, PGOutputData *data)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:312,1
    - Dst: IsA
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:312,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:315,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:321,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:323,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:327,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:329,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:330,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:334,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:335,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:336,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:337,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:341,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:344,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:345,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:346,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:353,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:353,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:355,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:357,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:359,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:362,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:363,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:364,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:367,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:372,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:374,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:377,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:379,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:382,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:384,1
    - Dst: defGetStreamingMode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:387,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:389,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:392,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:393,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:394,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:404,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:405,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:406,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:409,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:410,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:412,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:415,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:416,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:417,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:420,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 421
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 365
    functionsReached:
    - elog
    - strtoul
    - pg_strcasecmp
    - defGetBoolean
    - strcmp
    - errcode
    - Assert
    - pstrdup
    - ereport
    - lfirst
    - errmsg
    - SplitIdentifierString
    - strVal
    - IsA
    - defGetString
    - defGetStreamingMode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 445
    functionName: pgoutput_memory_context_reset
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - hash_destroy
    linkageType: ''
    returnType: void
    signature: void pgoutput_memory_context_reset(void *arg)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:454,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:459,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:463,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:467,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:475,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:477,1
    - Dst: parse_output_parameters
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:492,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:496,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:497,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:498,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:502,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:503,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:504,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:517,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:518,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:519,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:528,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:530,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:542,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:543,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:544,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:547,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:548,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:549,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:563,1
    - Dst: CacheRegisterRelSyncCallback
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:566,1
    - Dst: init_rel_sync_cache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:572,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 3
    argNames:
    - ctx
    - opt
    - is_init
    argTypes:
    - LogicalDecodingContext*
    - OutputPluginOptions*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 450
    functionDepth: 3
    functionLinenumber: 450
    functionLinenumberEnd: 583
    functionName: pgoutput_startup
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - errcode
    - ereport
    - init_rel_sync_cache
    - errmsg
    - AllocSetContextCreate
    - parse_output_parameters
    - CacheRegisterRelSyncCallback
    - MemoryContextRegisterResetCallback
    - CacheRegisterSyscacheCallback
    linkageType: ''
    returnType: void
    signature: "void pgoutput_startup(LogicalDecodingContext *ctx, OutputPluginOptions
      *opt,\n\t\t\t\t bool is_init)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 602
    functionName: pgoutput_begin_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: void pgoutput_begin_txn(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:616,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:618,1
    - Dst: logicalrep_write_begin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:619,1
    - Dst: send_repl_origin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:622,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 626
    functionName: pgoutput_send_begin
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - logicalrep_write_begin
    - Assert
    - OutputPluginWrite
    - send_repl_origin
    linkageType: ''
    returnType: void
    signature: void pgoutput_send_begin(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:638,1
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:645,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:646,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:651,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:655,1
    - Dst: logicalrep_write_commit
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:656,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - txn
    - commit_lsn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 658
    functionName: pgoutput_commit_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - elog
    - OutputPluginPrepareWrite
    - Assert
    - pfree
    - OutputPluginUpdateProgress
    - logicalrep_write_commit
    - OutputPluginWrite
    linkageType: ''
    returnType: void
    signature: "void pgoutput_commit_txn(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn,\n\t\t\t\t\tXLogRecPtr commit_lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:668,1
    - Dst: logicalrep_write_begin_prepare
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:669,1
    - Dst: send_repl_origin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:671,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 675
    functionName: pgoutput_begin_prepare_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - logicalrep_write_begin_prepare
    - OutputPluginWrite
    - send_repl_origin
    linkageType: ''
    returnType: void
    signature: void pgoutput_begin_prepare_txn(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:684,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:686,1
    - Dst: logicalrep_write_prepare
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:687,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - txn
    - prepare_lsn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 680
    functionDepth: 1
    functionLinenumber: 680
    functionLinenumberEnd: 689
    functionName: pgoutput_prepare_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - OutputPluginWrite
    - OutputPluginUpdateProgress
    - logicalrep_write_prepare
    linkageType: ''
    returnType: void
    signature: "void pgoutput_prepare_txn(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn,\n\t\t\t\t\t XLogRecPtr prepare_lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:698,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:700,1
    - Dst: logicalrep_write_commit_prepared
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:701,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - txn
    - commit_lsn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 703
    functionName: pgoutput_commit_prepared_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - logicalrep_write_commit_prepared
    - OutputPluginWrite
    - OutputPluginUpdateProgress
    linkageType: ''
    returnType: void
    signature: "void pgoutput_commit_prepared_txn(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t XLogRecPtr commit_lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:714,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:716,1
    - Dst: logicalrep_write_rollback_prepared
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:717,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - txn
    - prepare_end_lsn
    - prepare_time
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 720
    functionName: pgoutput_rollback_prepared_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - OutputPluginWrite
    - logicalrep_write_rollback_prepared
    - OutputPluginUpdateProgress
    linkageType: ''
    returnType: void
    signature: "void pgoutput_rollback_prepared_txn(LogicalDecodingContext *ctx,\n\t\t\t\t\t\t\t
      \  ReorderBufferTXN *txn,\n\t\t\t\t\t\t\t   XLogRecPtr prepare_end_lsn,\n\t\t\t\t\t\t\t
      \  TimestampTz prepare_time)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rbtxn_is_subtxn
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:747,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:748,1
    - Dst: get_schema_sent_in_streamed_txn
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:765,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:778,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:780,1
    - Dst: send_relation_and_attrs
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:782,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:783,1
    - Dst: send_relation_and_attrs
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:786,1
    - Dst: set_schema_sent_in_streamed_txn
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:789,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - change
    - relation
    - relentry
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferChange*
    - Relation
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 792
    functionName: maybe_send_schema
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - rbtxn_get_toptxn
    - get_schema_sent_in_streamed_txn
    - RelationIdGetRelation
    - send_relation_and_attrs
    - rbtxn_is_subtxn
    - set_schema_sent_in_streamed_txn
    - RelationClose
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void maybe_send_schema(LogicalDecodingContext *ctx,\n\t\t\t\t  ReorderBufferChange
      *change,\n\t\t\t\t  Relation relation, RelationSyncEntry *relentry)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:802,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:817,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:819,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:826,1
    - Dst: logicalrep_write_typ
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:827,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:828,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:831,1
    - Dst: logicalrep_write_rel
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:832,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:834,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - relation
    - xid
    - ctx
    - relentry
    argTypes:
    - Relation
    - TransactionId
    - LogicalDecodingContext*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 797
    functionDepth: 2
    functionLinenumber: 797
    functionLinenumberEnd: 835
    functionName: send_relation_and_attrs
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 1
    functionsReached:
    - OutputPluginPrepareWrite
    - RelationGetDescr
    - logicalrep_should_publish_column
    - logicalrep_write_typ
    - logicalrep_write_rel
    - OutputPluginWrite
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: "void send_relation_and_attrs(Relation relation, TransactionId xid,\n\t\t\t\t\t\tLogicalDecodingContext
      *ctx,\n\t\t\t\t\t\tRelationSyncEntry *relentry)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:848,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:850,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:852,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:856,1
    - Dst: ExecInitRangeTable
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:858,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:858,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:859,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 841
    functionDepth: 2
    functionLinenumber: 841
    functionLinenumberEnd: 864
    functionName: create_estate_for_relation
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - CreateExecutorState
    - ExecInitRangeTable
    - makeNode
    - addRTEPermissionInfo
    - list_make1
    - GetCurrentCommandId
    - RelationGetRelid
    - bms_make_singleton
    linkageType: ''
    returnType: EState
    signature: 'EState *

      create_estate_for_relation(Relation rel)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:878,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:880,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:882,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:883,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 872
    functionDepth: 2
    functionLinenumber: 872
    functionLinenumberEnd: 890
    functionName: pgoutput_row_filter_exec_expr
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - Assert
    - DatumGetBool
    - elog
    - ExecEvalExprSwitchContext
    linkageType: ''
    returnType: bool
    signature: bool pgoutput_row_filter_exec_expr(ExprState *state, ExprContext *econtext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:904,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:906,1
    - Dst: MemoryContextCopyAndSetIdentifier
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:910,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:911,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - entry
    argTypes:
    - PGOutputData*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 895
    functionDepth: 1
    functionLinenumber: 895
    functionLinenumberEnd: 912
    functionName: pgoutput_ensure_entry_cxt
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - MemoryContextCopyAndSetIdentifier
    - RelationIdGetRelation
    - RelationGetRelationName
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void pgoutput_ensure_entry_cxt(PGOutputData *data, RelationSyncEntry
      *entry)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:927,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:946,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:958,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:959,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:960,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:965,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:966,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:967,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:969,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:972,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:981,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1005,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1006,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1008,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1009,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1011,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1012,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1014,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1022,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1029,1
    - Dst: pgoutput_ensure_entry_cxt
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1031,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1037,1
    - Dst: create_estate_for_relation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1038,1
    - Dst: foreach
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1047,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1048,1
    - Dst: expand_generated_columns_in_expr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1048,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1048,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1048,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1051,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1052,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1054,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1056,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 47
    argCount: 3
    argNames:
    - data
    - publications
    - entry
    argTypes:
    - PGOutputData*
    - List*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 917
    functionDepth: 6
    functionLinenumber: 917
    functionLinenumberEnd: 1058
    functionName: pgoutput_row_filter_init
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - get_rel_namespace
    - create_estate_for_relation
    - SearchSysCache2
    - foreach
    - SearchSysCacheExists2
    - HeapTupleIsValid
    - ReleaseSysCache
    - TextDatumGetCString
    - ObjectIdGetDatum
    - expand_generated_columns_in_expr
    - lappend
    - list_free_deep
    - RelationIdGetRelation
    - stringToNode
    - lfirst
    - ExecPrepareExpr
    - make_orclause
    - pgoutput_ensure_entry_cxt
    - MemoryContextSwitchTo
    - RelationClose
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: "void pgoutput_row_filter_init(PGOutputData *data, List *publications,\n\t\t\t\t\t\t
      RelationSyncEntry *entry)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:946,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:958,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:959,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:960,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:965,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:966,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:967,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:969,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:972,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:981,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1005,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1006,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1008,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1009,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1011,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1012,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1014,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 944
    functionDepth: 6
    functionLinenumber: 944
    functionLinenumberEnd: 1015
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 366
    functionsReached:
    - SearchSysCacheExists2
    - HeapTupleIsValid
    - lappend
    - ReleaseSysCache
    - SysCacheGetAttr
    - lfirst
    - TextDatumGetCString
    - ObjectIdGetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: void
    signature: void foreach(lc, publications)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1068,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1069,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1076,1
    - Dst: check_and_fetch_column_list
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1103,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1114,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1115,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1115,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1116,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - data
    - publications
    - entry
    argTypes:
    - PGOutputData*
    - List*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1064
    functionDepth: 2
    functionLinenumber: 1064
    functionLinenumberEnd: 1118
    functionName: check_and_init_gencol
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - get_namespace_name
    - check_and_fetch_column_list
    - errcode
    - RelationGetDescr
    - ereport
    - RelationIdGetRelation
    - RelationGetNamespace
    - errmsg
    - RelationGetRelationName
    - TupleDescCompactAttr
    linkageType: ''
    returnType: void
    signature: "void check_and_init_gencol(PGOutputData *data, List *publications,\n\t\t\t\t\t
      \ RelationSyncEntry *entry)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_and_fetch_column_list
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1103,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1114,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1115,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1115,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1096
    functionDepth: 2
    functionLinenumber: 1096
    functionLinenumberEnd: 1117
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 10
    functionsReached:
    - get_namespace_name
    - check_and_fetch_column_list
    - errcode
    - ereport
    - RelationGetNamespace
    - errmsg
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(Publication, pub, publications)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1129,1
    - Dst: pgoutput_ensure_entry_cxt
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1133,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1150,1
    - Dst: check_and_fetch_column_list
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1154,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1171,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1173,1
    - Dst: pub_form_cols_map
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1175,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1177,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1189,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1190,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1191,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1192,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1192,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1193,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1203,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - data
    - publications
    - entry
    argTypes:
    - PGOutputData*
    - List*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1123
    functionDepth: 4
    functionLinenumber: 1123
    functionLinenumberEnd: 1204
    functionName: pgoutput_column_list_init
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - get_namespace_name
    - pub_form_cols_map
    - check_and_fetch_column_list
    - errcode
    - bms_equal
    - RelationIdGetRelation
    - ereport
    - pgoutput_ensure_entry_cxt
    - MemoryContextSwitchTo
    - lfirst
    - RelationGetNamespace
    - errmsg
    - RelationGetRelationName
    - list_length
    - RelationClose
    linkageType: ''
    returnType: void
    signature: "void pgoutput_column_list_init(PGOutputData *data, List *publications,\n\t\t\t\t\t\t
      \ RelationSyncEntry *entry)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1150,1
    - Dst: check_and_fetch_column_list
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1154,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1171,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1173,1
    - Dst: pub_form_cols_map
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1175,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1177,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1189,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1190,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1191,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1192,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1192,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1148
    functionDepth: 4
    functionLinenumber: 1148
    functionLinenumberEnd: 1194
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 366
    functionsReached:
    - get_namespace_name
    - pub_form_cols_map
    - check_and_fetch_column_list
    - errcode
    - bms_equal
    - ereport
    - MemoryContextSwitchTo
    - lfirst
    - RelationGetNamespace
    - errmsg
    - RelationGetRelationName
    - list_length
    linkageType: ''
    returnType: void
    signature: void foreach(lc, publications)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1218,1
    - Dst: CreateTupleDescCopyConstr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1224,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1224,1
    - Dst: CreateTupleDescCopyConstr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1225,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1225,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1227,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1228,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1230,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1236,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1238,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1239,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1240,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1243,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1245,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1247,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - data
    - relation
    - entry
    argTypes:
    - PGOutputData*
    - Relation
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1210
    functionDepth: 5
    functionLinenumber: 1210
    functionLinenumberEnd: 1250
    functionName: init_tuple_slot
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - RelationGetDescr
    - RelationIdGetRelation
    - MemoryContextSwitchTo
    - MakeSingleTupleTableSlot
    - CreateTupleDescCopyConstr
    - build_attrmap_by_name_if_req
    - RelationClose
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void init_tuple_slot(PGOutputData *data, Relation relation,\n\t\t\t\tRelationSyncEntry
      *entry)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1327,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1331,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1340,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1341,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1341,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1342,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1344,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1346,1
    - Dst: pgoutput_row_filter_exec_expr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1366,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1375,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1377,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1378,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1381,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1389,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1404,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1404,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1405,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1405,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1409,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1410,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1412,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1414,1
    - Dst: pgoutput_row_filter_exec_expr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1424,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1428,1
    - Dst: pgoutput_row_filter_exec_expr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1434,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 51
    argCount: 5
    argNames:
    - relation
    - old_slot
    - new_slot_ptr
    - entry
    - action
    argTypes:
    - Relation
    - TupleTableSlot*
    - TupleTableSlot**
    - RelationSyncEntry*
    - ReorderBufferChangeType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1302
    functionDepth: 3
    functionLinenumber: 1302
    functionLinenumberEnd: 1476
    functionName: pgoutput_row_filter
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - get_namespace_name
    - elog
    - memcpy
    - Assert
    - ResetPerTupleExprContext
    - RelationGetDescr
    - GetPerTupleExprContext
    - pgoutput_row_filter_exec_expr
    - MakeSingleTupleTableSlot
    - RelationGetNamespace
    - ExecStoreVirtualTuple
    - RelationGetRelationName
    - ExecClearTuple
    - TupleDescCompactAttr
    - slot_getallattrs
    - VARATT_IS_EXTERNAL_ONDISK
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: "bool pgoutput_row_filter(Relation relation, TupleTableSlot *old_slot,\n\t\t\t\t\tTupleTableSlot
      **new_slot_ptr, RelationSyncEntry *entry,\n\t\t\t\t\tReorderBufferChangeType
      *action)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: is_publishable_relation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1498,1
    - Dst: get_rel_sync_entry
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1510,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1539,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1543,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1548,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1549,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1556,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1561,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1561,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1564,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1571,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1576,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1576,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1579,1
    - Dst: pgoutput_row_filter
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1589,1
    - Dst: pgoutput_send_begin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1600,1
    - Dst: maybe_send_schema
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1606,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1608,1
    - Dst: logicalrep_write_insert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1614,1
    - Dst: logicalrep_write_update
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1619,1
    - Dst: logicalrep_write_delete
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1624,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1629,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1632,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1635,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1637,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1645,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1648,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1651,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1652,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 81
    argCount: 4
    argNames:
    - ctx
    - txn
    - relation
    - change
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1483
    functionDepth: 4
    functionLinenumber: 1483
    functionLinenumberEnd: 1653
    functionName: pgoutput_change
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - execute_attr_map_slot
    - pgoutput_row_filter
    - OutputPluginWrite
    - logicalrep_write_delete
    - elog
    - OutputPluginPrepareWrite
    - MemoryContextReset
    - Assert
    - RelationGetDescr
    - maybe_send_schema
    - ExecStoreHeapTuple
    - MakeTupleTableSlot
    - ExecDropSingleTupleTableSlot
    - RelationIdGetRelation
    - get_rel_sync_entry
    - pgoutput_send_begin
    - is_publishable_relation
    - logicalrep_write_insert
    - MemoryContextSwitchTo
    - logicalrep_write_update
    - RelationIsValid
    - RelationClose
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void pgoutput_change(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn,\n\t\t\t\tRelation relation, ReorderBufferChange *change)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1672,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1674,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1680,1
    - Dst: is_publishable_relation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1682,1
    - Dst: get_rel_sync_entry
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1685,1
    - Dst: pgoutput_send_begin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1702,1
    - Dst: maybe_send_schema
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1704,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1709,1
    - Dst: logicalrep_write_truncate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1710,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1716,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1719,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1720,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - txn
    - nrelations
    - relations
    - change
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - int
    - Relation[]
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1655
    functionDepth: 4
    functionLinenumber: 1655
    functionLinenumberEnd: 1721
    functionName: pgoutput_truncate
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - is_publishable_relation
    - MemoryContextReset
    - maybe_send_schema
    - palloc0
    - logicalrep_write_truncate
    - MemoryContextSwitchTo
    - OutputPluginWrite
    - get_rel_sync_entry
    - pgoutput_send_begin
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void pgoutput_truncate(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn,\n\t\t\t\t  int nrelations, Relation relations[], ReorderBufferChange *change)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pgoutput_send_begin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1750,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1753,1
    - Dst: logicalrep_write_message
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1754,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1761,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 7
    argNames:
    - ctx
    - txn
    - message_lsn
    - transactional
    - prefix
    - sz
    - message
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    - bool
    - char*
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1723
    functionDepth: 2
    functionLinenumber: 1723
    functionLinenumberEnd: 1762
    functionName: pgoutput_message
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - logicalrep_write_message
    - pgoutput_send_begin
    - OutputPluginWrite
    linkageType: ''
    returnType: void
    signature: "void pgoutput_message(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn,\n\t\t\t\t XLogRecPtr message_lsn, bool transactional, const char *prefix,
      Size sz,\n\t\t\t\t const char *message)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - origin_id
    argTypes:
    - LogicalDecodingContext*
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1768
    functionDepth: 0
    functionLinenumber: 1768
    functionLinenumberEnd: 1778
    functionName: pgoutput_origin_filter
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool pgoutput_origin_filter(LogicalDecodingContext *ctx,\n\t\t\t\t\t
      \  ReplOriginId origin_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgoutput_memory_context_reset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1787
    functionDepth: 2
    functionLinenumber: 1787
    functionLinenumberEnd: 1791
    functionName: pgoutput_shutdown
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - pgoutput_memory_context_reset
    linkageType: ''
    returnType: void
    signature: void pgoutput_shutdown(LogicalDecodingContext *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1809,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1810,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1813,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1815,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1816,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1817,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1818,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pubnames
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1823
      start: 1801
    functionDepth: 6
    functionLinenumber: 1801
    functionLinenumberEnd: 1823
    functionName: LoadPublications
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - errcode
    - lappend
    - ereport
    - errhint
    - lfirst
    - errmsg
    - errdetail
    - GetPublicationByName
    linkageType: ''
    returnType: List
    signature: 'List *

      LoadPublications(List *pubnames)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1809,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1810,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1813,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1815,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1816,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1817,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1818,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1807
    functionDepth: 6
    functionLinenumber: 1807
    functionLinenumberEnd: 1820
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 366
    functionsReached:
    - errcode
    - lappend
    - ereport
    - errhint
    - lfirst
    - errmsg
    - errdetail
    - GetPublicationByName
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pubnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - SysCacheIdentifier
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1835
      start: 1830
    functionDepth: 0
    functionLinenumber: 1830
    functionLinenumberEnd: 1835
    functionName: publication_invalidation_cb
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void publication_invalidation_cb(Datum arg, SysCacheIdentifier cacheid,\n\t\t\t\t\t\t\tuint32
      hashvalue)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1848,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1854,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1857,1
    - Dst: logicalrep_write_stream_start
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1858,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1858,1
    - Dst: send_repl_origin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1860,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1863,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - struct LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1840
    functionDepth: 1
    functionLinenumber: 1840
    functionLinenumberEnd: 1867
    functionName: pgoutput_stream_start
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - Assert
    - logicalrep_write_stream_start
    - rbtxn_is_streamed
    - OutputPluginWrite
    - send_repl_origin
    linkageType: ''
    returnType: void
    signature: "void pgoutput_stream_start(struct LogicalDecodingContext *ctx,\n\t\t\t\t\t
      \ ReorderBufferTXN *txn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1879,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1881,1
    - Dst: logicalrep_write_stream_stop
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1882,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - struct LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1872
    functionDepth: 1
    functionLinenumber: 1872
    functionLinenumberEnd: 1887
    functionName: pgoutput_stream_stop
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - Assert
    - OutputPluginPrepareWrite
    - logicalrep_write_stream_stop
    - OutputPluginWrite
    linkageType: ''
    returnType: void
    signature: "void pgoutput_stream_stop(struct LogicalDecodingContext *ctx,\n\t\t\t\t\t
      ReorderBufferTXN *txn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1906,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1909,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1911,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1911,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1913,1
    - Dst: logicalrep_write_stream_abort
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1914,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1917,1
    - Dst: cleanup_rel_sync_cache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - txn
    - abort_lsn
    argTypes:
    - struct LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1893
    functionDepth: 1
    functionLinenumber: 1893
    functionLinenumberEnd: 1920
    functionName: pgoutput_stream_abort
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - rbtxn_get_toptxn
    - Assert
    - rbtxn_is_streamed
    - logicalrep_write_stream_abort
    - OutputPluginWrite
    - cleanup_rel_sync_cache
    linkageType: ''
    returnType: void
    signature: "void pgoutput_stream_abort(struct LogicalDecodingContext *ctx,\n\t\t\t\t\t
      \ ReorderBufferTXN *txn,\n\t\t\t\t\t  XLogRecPtr abort_lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1938,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1938,1
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1940,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1942,1
    - Dst: logicalrep_write_stream_commit
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1943,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1944,1
    - Dst: cleanup_rel_sync_cache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - txn
    - commit_lsn
    argTypes:
    - struct LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1947
      start: 1926
    functionDepth: 1
    functionLinenumber: 1926
    functionLinenumberEnd: 1947
    functionName: pgoutput_stream_commit
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - Assert
    - OutputPluginUpdateProgress
    - logicalrep_write_stream_commit
    - rbtxn_is_streamed
    - OutputPluginWrite
    - cleanup_rel_sync_cache
    linkageType: ''
    returnType: void
    signature: "void pgoutput_stream_commit(struct LogicalDecodingContext *ctx,\n\t\t\t\t\t
      \  ReorderBufferTXN *txn,\n\t\t\t\t\t   XLogRecPtr commit_lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1959,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1959,1
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1961,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1962,1
    - Dst: logicalrep_write_stream_prepare
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1963,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - txn
    - prepare_lsn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1954
    functionDepth: 1
    functionLinenumber: 1954
    functionLinenumberEnd: 1965
    functionName: pgoutput_stream_prepare_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginPrepareWrite
    - Assert
    - OutputPluginUpdateProgress
    - rbtxn_is_streamed
    - logicalrep_write_stream_prepare
    - OutputPluginWrite
    linkageType: ''
    returnType: void
    signature: "void pgoutput_stream_prepare_txn(LogicalDecodingContext *ctx,\n\t\t\t\t\t\t\tReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\tXLogRecPtr prepare_lsn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1993,1
    - Dst: CacheRegisterRelcacheCallback
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2000,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2013,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - cachectx
    argTypes:
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2018
      start: 1974
    functionDepth: 1
    functionLinenumber: 1974
    functionLinenumberEnd: 2018
    functionName: init_rel_sync_cache
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 1
    functionsReached:
    - Assert
    - CacheRegisterSyscacheCallback
    - CacheRegisterRelcacheCallback
    - hash_create
    linkageType: ''
    returnType: void
    signature: void init_rel_sync_cache(MemoryContext cachectx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_member_xid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - entry
    - xid
    argTypes:
    - RelationSyncEntry*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2027
      start: 2023
    functionDepth: 3
    functionLinenumber: 2023
    functionLinenumberEnd: 2027
    functionName: get_schema_sent_in_streamed_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 1
    functionsReached:
    - list_member_xid
    linkageType: ''
    returnType: bool
    signature: bool get_schema_sent_in_streamed_txn(RelationSyncEntry *entry, TransactionId
      xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2038,1
    - Dst: lappend_xid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2040,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - entry
    - xid
    argTypes:
    - RelationSyncEntry*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2043
      start: 2033
    functionDepth: 6
    functionLinenumber: 2033
    functionLinenumberEnd: 2043
    functionName: set_schema_sent_in_streamed_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 1
    functionsReached:
    - lappend_xid
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void set_schema_sent_in_streamed_txn(RelationSyncEntry *entry, TransactionId
      xid)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2060,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2062,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2065,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2068,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2081,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2091,1
    - Dst: GetRelationIncludedPublications
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2092,1
    - Dst: GetSchemaPublications
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2099,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2103,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2104,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2110,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2112,1
    - Dst: LoadPublications
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2113,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2114,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2126,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2142,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2144,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2156,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2158,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2164,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2171,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2178,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2182,1
    - Dst: foreach
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2190,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2192,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2213,1
    - Dst: llast_oid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2214,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2224,1
    - Dst: GetRelationExcludedPublications
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2232,1
    - Dst: GetRelationExcludedPublications
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2240,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2243,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2246,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2266,1
    - Dst: GetTopMostAncestorInPublication
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2268,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2283,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2331,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2335,1
    - Dst: init_tuple_slot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2349,1
    - Dst: pgoutput_row_filter_init
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2352,1
    - Dst: check_and_init_gencol
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2355,1
    - Dst: pgoutput_column_list_init
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2358,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2361,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2362,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2363,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 117
    argCount: 2
    argNames:
    - data
    - relation
    argTypes:
    - PGOutputData*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2369
      start: 2054
    functionDepth: 8
    functionLinenumber: 2054
    functionLinenumberEnd: 2369
    functionName: get_rel_sync_entry
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 2
    functionsReached:
    - pgoutput_row_filter_init
    - bms_free
    - get_rel_namespace
    - GetRelationExcludedPublications
    - GetRelationIncludedPublications
    - GetTopMostAncestorInPublication
    - MemoryContextReset
    - foreach
    - Assert
    - free_attrmap
    - get_rel_relkind
    - list_length
    - list_member_oid
    - ExecDropSingleTupleTableSlot
    - list_free
    - lappend
    - FreeTupleDesc
    - memset
    - lfirst
    - pgoutput_column_list_init
    - get_partition_ancestors
    - hash_search
    - LoadPublications
    - llast_oid
    - GetSchemaPublications
    - get_rel_relispartition
    - MemoryContextSwitchTo
    - check_and_init_gencol
    - MemoryContextDelete
    - init_tuple_slot
    - RelationGetRelid
    linkageType: ''
    returnType: RelationSyncEntry
    signature: 'RelationSyncEntry *

      get_rel_sync_entry(PGOutputData *data, Relation relation)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2388,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2390,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2391,1
    - Dst: foreach_xid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2399,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2407,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - xid
    - is_commit
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2412
      start: 2382
    functionDepth: 1
    functionLinenumber: 2382
    functionLinenumberEnd: 2412
    functionName: cleanup_rel_sync_cache
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 2
    functionsReached:
    - foreach_xid
    - foreach_delete_current
    - Assert
    - hash_seq_search
    - hash_seq_init
    linkageType: ''
    returnType: void
    signature: void cleanup_rel_sync_cache(TransactionId xid, bool is_commit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2438,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2444,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2454,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - arg
    - relid
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2417
    functionDepth: 1
    functionLinenumber: 2417
    functionLinenumberEnd: 2460
    functionName: rel_sync_cache_relation_cb
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - hash_seq_search
    - hash_seq_init
    - hash_search
    linkageType: ''
    returnType: void
    signature: void rel_sync_cache_relation_cb(Datum arg, Oid relid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2486,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - SysCacheIdentifier
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2491
      start: 2467
    functionDepth: 1
    functionLinenumber: 2467
    functionLinenumberEnd: 2491
    functionName: rel_sync_cache_publication_cb
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - hash_seq_search
    - hash_seq_init
    linkageType: ''
    returnType: void
    signature: "void rel_sync_cache_publication_cb(Datum arg, SysCacheIdentifier cacheid,\n\t\t\t\t\t\t\t
      \ uint32 hashvalue)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2512,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2515,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2516,1
    - Dst: logicalrep_write_origin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - origin_id
    - origin_lsn
    - send_origin
    argTypes:
    - LogicalDecodingContext*
    - ReplOriginId
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2521
      start: 2494
    functionDepth: 1
    functionLinenumber: 2494
    functionLinenumberEnd: 2521
    functionName: send_repl_origin
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 3
    functionsReached:
    - OutputPluginWrite
    - logicalrep_write_origin
    - replorigin_by_oid
    - OutputPluginPrepareWrite
    linkageType: ''
    returnType: void
    signature: "void send_repl_origin(LogicalDecodingContext *ctx, ReplOriginId origin_id,\n\t\t\t\t
      XLogRecPtr origin_lsn, bool send_origin)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:77,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:80,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/replication/logical/relation.c:85,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:95,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:97,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - arg
    - reloid
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 100
    functionName: logicalrep_relmap_invalidate_cb
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - hash_seq_search
    - hash_seq_init
    - hash_seq_term
    linkageType: ''
    returnType: void
    signature: void logicalrep_relmap_invalidate_cb(Datum arg, Oid reloid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/relation.c:112,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/relation.c:121,1
    - Dst: CacheRegisterRelcacheCallback
      Src: /src/postgres/src/backend/replication/logical/relation.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 127
    functionName: logicalrep_relmap_init
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - hash_create
    - CacheRegisterRelcacheCallback
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void logicalrep_relmap_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/relation.c:139,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/relation.c:140,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/relation.c:147,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/relation.c:149,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/relation.c:150,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/replication/logical/relation.c:152,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - entry
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 156
    functionName: logicalrep_relmap_free_entry
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - pfree
    - bms_free
    - free_attrmap
    linkageType: ''
    returnType: void
    signature: void logicalrep_relmap_free_entry(LogicalRepRelMapEntry *entry)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_relmap_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:173,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:178,1
    - Dst: logicalrep_relmap_free_entry
      Src: /src/postgres/src/backend/replication/logical/relation.c:182,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/relation.c:184,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:187,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:189,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:190,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/relation.c:192,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/relation.c:193,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:196,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/replication/logical/relation.c:211,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - remoterel
    argTypes:
    - LogicalRepRelation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 213
    functionName: logicalrep_relmap_update
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - hash_search
    - pstrdup
    - palloc_array
    - bms_copy
    - MemoryContextSwitchTo
    - logicalrep_relmap_init
    - memset
    - logicalrep_relmap_free_entry
    linkageType: ''
    returnType: void
    signature: void logicalrep_relmap_update(LogicalRepRelation *remoterel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/relation.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - remoterel
    - attname
    argTypes:
    - LogicalRepRelation*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 232
    functionName: logicalrep_rel_att_by_name
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int logicalrep_rel_att_by_name(LogicalRepRelation *remoterel, const
      char *attname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/relation.c:245,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/replication/logical/relation.c:245,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/relation.c:247,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:249,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/relation.c:252,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/relation.c:252,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/relation.c:254,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/relation.c:254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - remoterel
    - atts
    argTypes:
    - LogicalRepRelation*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 238
    functionDepth: 3
    functionLinenumber: 238
    functionLinenumberEnd: 259
    functionName: logicalrep_get_attrs_str
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - _
    - Assert
    - appendStringInfo
    - initStringInfo
    - bms_next_member
    - bms_is_empty
    linkageType: ''
    returnType: char
    signature: 'char *

      logicalrep_get_attrs_str(LogicalRepRelation *remoterel, Bitmapset *atts)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/replication/logical/relation.c:271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/relation.c:272,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/relation.c:273,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/relation.c:274,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/replication/logical/relation.c:276,1
    - Dst: logicalrep_get_attrs_str
      Src: /src/postgres/src/backend/replication/logical/relation.c:279,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/replication/logical/relation.c:282,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/relation.c:283,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/relation.c:284,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/relation.c:285,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/replication/logical/relation.c:287,1
    - Dst: logicalrep_get_attrs_str
      Src: /src/postgres/src/backend/replication/logical/relation.c:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - remoterel
    - missingatts
    - generatedatts
    argTypes:
    - LogicalRepRelation*
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 266
    functionDepth: 4
    functionLinenumber: 266
    functionLinenumberEnd: 292
    functionName: logicalrep_report_missing_or_gen_attrs
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - errmsg_plural
    - errcode
    - logicalrep_get_attrs_str
    - bms_num_members
    - ereport
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: "void logicalrep_report_missing_or_gen_attrs(LogicalRepRelation *remoterel,\n\t\t\t\t\t\t\t\t\t
      \  Bitmapset *missingatts,\n\t\t\t\t\t\t\t\t\t   Bitmapset *generatedatts)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:316,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:321,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:333,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/replication/logical/relation.c:337,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/relation.c:338,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/relation.c:339,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/relation.c:340,1
    - Dst: AttrNumberGetAttrOffset
      Src: /src/postgres/src/backend/replication/logical/relation.c:344,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:347,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - entry
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 307
    functionDepth: 3
    functionLinenumber: 307
    functionLinenumberEnd: 353
    functionName: logicalrep_rel_mark_updatable
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - errcode
    - RelationGetIndexAttrBitmap
    - AttrNumberIsForUserDefinedAttr
    - bms_is_member
    - ereport
    - AttrNumberGetAttrOffset
    - errmsg
    - bms_next_member
    linkageType: ''
    returnType: void
    signature: void logicalrep_rel_mark_updatable(LogicalRepRelMapEntry *entry)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_relmap_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:368,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:371,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/relation.c:375,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/relation.c:382,1
    - Dst: try_table_open
      Src: /src/postgres/src/backend/replication/logical/relation.c:392,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/relation.c:401,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:422,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/replication/logical/relation.c:427,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/replication/logical/relation.c:427,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:430,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/relation.c:431,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/relation.c:432,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/relation.c:433,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/relation.c:435,1
    - Dst: CheckSubscriptionRelkind
      Src: /src/postgres/src/backend/replication/logical/relation.c:439,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/relation.c:448,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:449,1
    - Dst: make_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:450,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:451,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/replication/logical/relation.c:454,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/relation.c:458,1
    - Dst: logicalrep_rel_att_by_name
      Src: /src/postgres/src/backend/replication/logical/relation.c:466,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/relation.c:467,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:474,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:476,1
    - Dst: logicalrep_report_missing_or_gen_attrs
      Src: /src/postgres/src/backend/replication/logical/relation.c:480,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/replication/logical/relation.c:484,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/replication/logical/relation.c:485,1
    - Dst: logicalrep_rel_mark_updatable
      Src: /src/postgres/src/backend/replication/logical/relation.c:491,1
    - Dst: FindLogicalRepLocalIndex
      Src: /src/postgres/src/backend/replication/logical/relation.c:499,1
    - Dst: GetSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/relation.c:506,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 58
    argCount: 2
    argNames:
    - remoteid
    - lockmode
    argTypes:
    - LogicalRepRelId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 360
    functionDepth: 5
    functionLinenumber: 360
    functionLinenumberEnd: 511
    functionName: logicalrep_rel_open
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - bms_del_member
    - try_table_open
    - logicalrep_rel_att_by_name
    - errcode
    - bms_free
    - NameStr
    - makeRangeVar
    - table_close
    - bms_add_member
    - elog
    - CheckSubscriptionRelkind
    - RelationGetDescr
    - free_attrmap
    - table_open
    - errmsg
    - OidIsValid
    - FindLogicalRepLocalIndex
    - GetSubscriptionRelState
    - logicalrep_rel_mark_updatable
    - ereport
    - RangeVarGetRelid
    - make_attrmap
    - TupleDescAttr
    - logicalrep_report_missing_or_gen_attrs
    - hash_search
    - bms_add_range
    - MemoryContextSwitchTo
    - logicalrep_relmap_init
    linkageType: ''
    returnType: LogicalRepRelMapEntry
    signature: 'LogicalRepRelMapEntry *

      logicalrep_rel_open(LogicalRepRelId remoteid, LOCKMODE lockmode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/relation.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rel
    - lockmode
    argTypes:
    - LogicalRepRelMapEntry*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 516
    functionDepth: 3
    functionLinenumber: 516
    functionLinenumberEnd: 521
    functionName: logicalrep_rel_close
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - table_close
    linkageType: ''
    returnType: void
    signature: void logicalrep_rel_close(LogicalRepRelMapEntry *rel, LOCKMODE lockmode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:548,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:551,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/replication/logical/relation.c:556,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:566,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:568,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - arg
    - reloid
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 571
    functionName: logicalrep_partmap_invalidate_cb
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - hash_seq_search
    - hash_seq_init
    - hash_seq_term
    linkageType: ''
    returnType: void
    signature: void logicalrep_partmap_invalidate_cb(Datum arg, Oid reloid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:593,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:594,1
    - Dst: logicalrep_relmap_free_entry
      Src: /src/postgres/src/backend/replication/logical/relation.c:601,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/relation.c:603,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - remoterel
    argTypes:
    - LogicalRepRelation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 583
    functionDepth: 2
    functionLinenumber: 583
    functionLinenumberEnd: 605
    functionName: logicalrep_partmap_reset_relmap
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - hash_seq_search
    - hash_seq_init
    - memset
    - logicalrep_relmap_free_entry
    linkageType: ''
    returnType: void
    signature: void logicalrep_partmap_reset_relmap(LogicalRepRelation *remoterel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/relation.c:617,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/relation.c:626,1
    - Dst: CacheRegisterRelcacheCallback
      Src: /src/postgres/src/backend/replication/logical/relation.c:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 610
    functionDepth: 1
    functionLinenumber: 610
    functionLinenumberEnd: 632
    functionName: logicalrep_partmap_init
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - hash_create
    - CacheRegisterRelcacheCallback
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void logicalrep_partmap_init(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/relation.c:652,1
    - Dst: logicalrep_partmap_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:658,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:661,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:683,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/relation.c:687,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:694,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:704,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:705,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/relation.c:707,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/relation.c:708,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:711,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/replication/logical/relation.c:715,1
    - Dst: make_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:736,1
    - Dst: make_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:751,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/relation.c:752,1
    - Dst: logicalrep_rel_mark_updatable
      Src: /src/postgres/src/backend/replication/logical/relation.c:757,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:760,1
    - Dst: FindLogicalRepLocalIndex
      Src: /src/postgres/src/backend/replication/logical/relation.c:771,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 50
    argCount: 3
    argNames:
    - root
    - partrel
    - map
    argTypes:
    - LogicalRepRelMapEntry*
    - Relation
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 645
    functionDepth: 4
    functionLinenumber: 645
    functionLinenumberEnd: 777
    functionName: logicalrep_partition_open
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - logicalrep_rel_mark_updatable
    - hash_search
    - memcpy
    - pstrdup
    - free_attrmap
    - palloc_array
    - bms_copy
    - MemoryContextSwitchTo
    - make_attrmap
    - memset
    - FindLogicalRepLocalIndex
    - logicalrep_partmap_init
    - RelationGetRelid
    linkageType: ''
    returnType: LogicalRepRelMapEntry
    signature: "LogicalRepRelMapEntry *\nlogicalrep_partition_open(LogicalRepRelMapEntry
      *root,\n\t\t\t\t\t\t  Relation partrel, AttrMap *map)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/replication/logical/relation.c:791,1
    - Dst: index_open
      Src: /src/postgres/src/backend/replication/logical/relation.c:798,1
    - Dst: IsIndexUsableForReplicaIdentityFull
      Src: /src/postgres/src/backend/replication/logical/relation.c:799,1
    - Dst: index_close
      Src: /src/postgres/src/backend/replication/logical/relation.c:800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - localrel
    - attrmap
    argTypes:
    - Relation
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 788
    functionDepth: 2
    functionLinenumber: 788
    functionLinenumberEnd: 808
    functionName: FindUsableIndexForReplicaIdentityFull
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - index_close
    - RelationGetIndexList
    - index_open
    - IsIndexUsableForReplicaIdentityFull
    linkageType: ''
    returnType: Oid
    signature: Oid FindUsableIndexForReplicaIdentityFull(Relation localrel, AttrMap
      *attrmap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_open
      Src: /src/postgres/src/backend/replication/logical/relation.c:798,1
    - Dst: IsIndexUsableForReplicaIdentityFull
      Src: /src/postgres/src/backend/replication/logical/relation.c:799,1
    - Dst: index_close
      Src: /src/postgres/src/backend/replication/logical/relation.c:800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 793
    functionDepth: 2
    functionLinenumber: 793
    functionLinenumberEnd: 805
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 1
    functionsReached:
    - index_close
    - index_open
    - IsIndexUsableForReplicaIdentityFull
    linkageType: ''
    returnType: void
    signature: void foreach_oid(idxoid, idxlist)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/replication/logical/relation.c:840,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/relation.c:843,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/relation.c:845,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/replication/logical/relation.c:845,1
    - Dst: get_opclass_family
      Src: /src/postgres/src/backend/replication/logical/relation.c:854,1
    - Dst: IndexAmTranslateCompareType
      Src: /src/postgres/src/backend/replication/logical/relation.c:855,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/replication/logical/relation.c:869,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/relation.c:869,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:870,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:876,1
    - Dst: AttrNumberGetAttrOffset
      Src: /src/postgres/src/backend/replication/logical/relation.c:884,1
    - Dst: AttrNumberGetAttrOffset
      Src: /src/postgres/src/backend/replication/logical/relation.c:885,1
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/replication/logical/relation.c:892,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - idxrel
    - attrmap
    argTypes:
    - Relation
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 833
    functionDepth: 4
    functionLinenumber: 833
    functionLinenumberEnd: 896
    functionName: IsIndexUsableForReplicaIdentityFull
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 2
    functionsReached:
    - GetIndexAmRoutineByAmId
    - lookup_type_cache
    - AttributeNumberIsValid
    - IndexAmTranslateCompareType
    - Assert
    - TupleDescAttr
    - AttrNumberGetAttrOffset
    - heap_attisnull
    - OidIsValid
    - SysCacheGetAttrNotNull
    - get_opclass_family
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool IsIndexUsableForReplicaIdentityFull(Relation idxrel, AttrMap *attrmap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetReplicaIndex
      Src: /src/postgres/src/backend/replication/logical/relation.c:908,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:910,1
    - Dst: RelationGetPrimaryKeyIndex
      Src: /src/postgres/src/backend/replication/logical/relation.c:911,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 903
    functionDepth: 1
    functionLinenumber: 903
    functionLinenumberEnd: 914
    functionName: GetRelationIdentityOrPK
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - RelationGetReplicaIndex
    - RelationGetPrimaryKeyIndex
    linkageType: ''
    returnType: Oid
    signature: Oid GetRelationIdentityOrPK(Relation rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/replication/logical/relation.c:936,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:937,1
    - Dst: FindUsableIndexForReplicaIdentityFull
      Src: /src/postgres/src/backend/replication/logical/relation.c:957,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - localrel
    - remoterel
    - attrMap
    argTypes:
    - Relation
    - LogicalRepRelation*
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 920
    functionDepth: 3
    functionLinenumber: 920
    functionLinenumberEnd: 961
    functionName: FindLogicalRepLocalIndex
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 2
    functionsReached:
    - OidIsValid
    - GetRelationIdentityOrPK
    - FindUsableIndexForReplicaIdentityFull
    linkageType: ''
    returnType: Oid
    signature: "Oid FindLogicalRepLocalIndex(Relation localrel, LogicalRepRelation
      *remoterel,\n\t\t\t\t\t\t AttrMap *attrMap)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - last_status
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 158
    functionName: StartupLogicalDecodingStatus
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StartupLogicalDecodingStatus(bool last_status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsXLogLogicalInfoEnabled
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 167
    functionName: update_xlog_logical_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 0
    functionsReached:
    - IsXLogLogicalInfoEnabled
    linkageType: ''
    returnType: void
    signature: void update_xlog_logical_info(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: update_xlog_logical_info
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: InitializeProcessXLogLogicalInfo
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 0
    functionsReached:
    - update_xlog_logical_info
    linkageType: ''
    returnType: void
    signature: void InitializeProcessXLogLogicalInfo(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:186,1
    - Dst: update_xlog_logical_info
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 195
    functionName: ProcessBarrierUpdateXLogLogicalInfo
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 0
    functionsReached:
    - GetTopTransactionIdIfAny
    - update_xlog_logical_info
    linkageType: ''
    returnType: bool
    signature: bool ProcessBarrierUpdateXLogLogicalInfo(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:206,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 211
    functionName: IsLogicalDecodingEnabled
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 3
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: bool
    signature: bool IsLogicalDecodingEnabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:222,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 227
    functionName: IsXLogLogicalInfoEnabled
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 2
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: bool
    signature: bool IsXLogLogicalInfoEnabled(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: update_xlog_logical_info
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 241
    functionName: AtEOXact_LogicalCtl
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 3
    functionsReached:
    - update_xlog_logical_info
    linkageType: ''
    returnType: void
    signature: void AtEOXact_LogicalCtl(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:252,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:253,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:254,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - status
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 247
    functionDepth: 5
    functionLinenumber: 247
    functionLinenumberEnd: 256
    functionName: write_logical_decoding_status_update_record
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 0
    functionsReached:
    - XLogRegisterData
    - XLogInsert
    - XLogFlush
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void write_logical_decoding_status_update_record(bool status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:270,1
    - Dst: RequestDisableLogicalDecoding
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: abort_logical_decoding_activation
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 0
    functionsReached:
    - elog
    - RequestDisableLogicalDecoding
    linkageType: ''
    returnType: void
    signature: void abort_logical_decoding_activation(int code, Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:292,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:305,1
    - Dst: IsLogicalDecodingEnabled
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:305,1
    - Dst: PG_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:313,1
    - Dst: EnableLogicalDecoding
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:315,1
    - Dst: PG_END_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 318
    functionName: EnsureLogicalDecodingEnabled
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 2
    functionsReached:
    - Assert
    - PG_ENSURE_ERROR_CLEANUP
    - IsLogicalDecodingEnabled
    - EnableLogicalDecoding
    - PG_END_ENSURE_ERROR_CLEANUP
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void EnsureLogicalDecodingEnabled(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:328,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:334,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:345,1
    - Dst: WaitForProcSignalBarrier
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:352,1
    - Dst: EmitProcSignalBarrier
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:353,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:355,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:357,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:385,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:387,1
    - Dst: write_logical_decoding_status_update_record
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:397,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:401,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:403,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:412,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 323
    functionDepth: 6
    functionLinenumber: 323
    functionLinenumberEnd: 414
    functionName: EnableLogicalDecoding
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 2
    functionsReached:
    - INJECTION_POINT
    - WaitForProcSignalBarrier
    - LWLockAcquire
    - RecoveryInProgress
    - write_logical_decoding_status_update_record
    - ereport
    - START_CRIT_SECTION
    - errmsg
    - LWLockRelease
    - EmitProcSignalBarrier
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void EnableLogicalDecoding(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:434,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:436,1
    - Dst: WakeupCheckpointer
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:438,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 441
    functionName: RequestDisableLogicalDecoding
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 5
    functionsReached:
    - elog
    - WakeupCheckpointer
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void RequestDisableLogicalDecoding(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:461,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:463,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:466,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:468,1
    - Dst: DisableLogicalDecoding
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 475
    functionName: DisableLogicalDecodingIfNecessary
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - DisableLogicalDecoding
    - Assert
    - LWLockRelease
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void DisableLogicalDecodingIfNecessary(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:483,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:486,1
    - Dst: CheckLogicalSlotExists
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:497,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:500,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:511,1
    - Dst: write_logical_decoding_status_update_record
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:522,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:528,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:536,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:537,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:539,1
    - Dst: EmitProcSignalBarrier
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:549,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 480
    functionDepth: 6
    functionLinenumber: 480
    functionLinenumberEnd: 550
    functionName: DisableLogicalDecoding
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 7
    functionsReached:
    - LWLockAcquire
    - write_logical_decoding_status_update_record
    - ereport
    - START_CRIT_SECTION
    - errmsg
    - LWLockRelease
    - EmitProcSignalBarrier
    - CheckLogicalSlotExists
    - RecoveryInProgress
    - END_CRIT_SECTION
    linkageType: ''
    returnType: void
    signature: void DisableLogicalDecoding(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:562,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:571,1
    - Dst: IsXLogLogicalInfoEnabled
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:571,1
    - Dst: IsLogicalDecodingEnabled
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:571,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:575,1
    - Dst: CheckLogicalSlotExists
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:577,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:612,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:624,1
    - Dst: write_logical_decoding_status_update_record
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:626,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:629,1
    - Dst: WaitForProcSignalBarrier
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:640,1
    - Dst: EmitProcSignalBarrier
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:641,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/replication/logical/logicalctl.c:643,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 557
    functionDepth: 6
    functionLinenumber: 557
    functionLinenumberEnd: 644
    functionName: UpdateLogicalDecodingStatusEndOfRecovery
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalctl.c
    functionUses: 1
    functionsReached:
    - elog
    - INJECTION_POINT
    - EmitProcSignalBarrier
    - WaitForProcSignalBarrier
    - LWLockAcquire
    - Assert
    - write_logical_decoding_status_update_record
    - IsLogicalDecodingEnabled
    - LWLockRelease
    - IsXLogLogicalInfoEnabled
    - CheckLogicalSlotExists
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void UpdateLogicalDecodingStatusEndOfRecovery(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/launcher.c:141,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/launcher.c:143,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/replication/logical/launcher.c:144,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:146,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/replication/logical/launcher.c:146,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/launcher.c:148,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:158,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/logical/launcher.c:160,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:165,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/launcher.c:165,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/launcher.c:170,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:171,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/replication/logical/launcher.c:174,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/launcher.c:175,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/launcher.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 126
    functionDepth: 7
    functionLinenumber: 126
    functionLinenumberEnd: 180
    functionName: get_subscription_list
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - HeapTupleIsValid
    - table_close
    - pstrdup
    - lappend
    - CommitTransactionCommand
    - MemoryContextSwitchTo
    - table_open
    - heap_getnext
    - table_beginscan_catalog
    - StartTransactionCommand
    - GETSTRUCT
    - NameStr
    - table_endscan
    linkageType: ''
    returnType: List
    signature: 'List *

      get_subscription_list(void)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:204,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:206,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:212,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:216,1
    - Dst: GetBackgroundWorkerPid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:219,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:223,1
    - Dst: logicalrep_worker_cleanup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:226,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:227,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:235,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:241,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:242,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:252,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - worker
    - generation
    - handle
    argTypes:
    - LogicalRepWorker*
    - uint16
    - BackgroundWorkerHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 255
    functionName: WaitForReplicationWorkerAttach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - GetBackgroundWorkerPid
    - LWLockAcquire
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - logicalrep_worker_cleanup
    - WaitLatch
    - LWLockRelease
    - SetLatch
    linkageType: ''
    returnType: bool
    signature: "bool WaitForReplicationWorkerAttach(LogicalRepWorker *worker,\n\t\t\t\t\t\t\t
      \  uint16 generation,\n\t\t\t\t\t\t\t   BackgroundWorkerHandle *handle)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:275,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:276,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:276,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:284,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 12
    argCount: 4
    argNames:
    - wtype
    - subid
    - relid
    - only_running
    argTypes:
    - LogicalRepWorkerType
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 296
    functionName: logicalrep_worker_find
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - Assert
    - OidIsValid
    - LWLockHeldByMe
    - isParallelApplyWorker
    linkageType: ''
    returnType: LogicalRepWorker
    signature: "LogicalRepWorker *\nlogicalrep_worker_find(LogicalRepWorkerType wtype,
      Oid subid, Oid relid,\n\t\t\t\t\t   bool only_running)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:309,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:311,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:311,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/launcher.c:319,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:323,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - subid
    - only_running
    - acquire_lock
    argTypes:
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 302
    functionDepth: 6
    functionLinenumber: 302
    functionLinenumberEnd: 326
    functionName: logicalrep_workers_find
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - Assert
    - lappend
    - LWLockRelease
    - LWLockHeldByMe
    linkageType: ''
    returnType: List
    signature: 'List *

      logicalrep_workers_find(Oid subid, bool only_running, bool acquire_lock)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:360,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:361,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:361,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:365,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:366,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:371,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:373,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:379,1
    - Dst: logicalrep_sync_worker_count
      Src: /src/postgres/src/backend/replication/logical/launcher.c:395,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/launcher.c:397,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/launcher.c:417,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/launcher.c:420,1
    - Dst: logicalrep_worker_cleanup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:424,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:441,1
    - Dst: logicalrep_pa_worker_count
      Src: /src/postgres/src/backend/replication/logical/launcher.c:445,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:454,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:464,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:465,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:466,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:467,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/launcher.c:468,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/replication/logical/launcher.c:491,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/replication/logical/launcher.c:492,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/replication/logical/launcher.c:494,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:500,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/launcher.c:503,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:507,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:512,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:513,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:516,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:520,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:521,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:524,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/launcher.c:526,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:530,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:531,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:534,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:538,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:539,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:543,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/launcher.c:548,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:553,1
    - Dst: RegisterDynamicBackgroundWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:555,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:558,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:559,1
    - Dst: logicalrep_worker_cleanup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:560,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:561,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:563,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:564,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:565,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/launcher.c:566,1
    - Dst: WaitForReplicationWorkerAttach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:571,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 110
    argCount: 8
    argNames:
    - wtype
    - dbid
    - subid
    - subname
    - userid
    - relid
    - subworker_dsm
    - retain_dead_tuples
    argTypes:
    - LogicalRepWorkerType
    - Oid
    - Oid
    - char*
    - Oid
    - Oid
    - dsm_handle
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 572
    functionName: logicalrep_worker_launch
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - errcode
    - errhint
    - logicalrep_worker_cleanup
    - WaitForReplicationWorkerAttach
    - TimestampDifferenceExceeds
    - elog
    - memcpy
    - Assert
    - Int32GetDatum
    - errmsg
    - OidIsValid
    - GetCurrentTimestamp
    - errmsg_internal
    - ereport
    - memset
    - TIMESTAMP_NOBEGIN
    - logicalrep_pa_worker_count
    - logicalrep_sync_worker_count
    - RegisterDynamicBackgroundWorker
    - LWLockRelease
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool logicalrep_worker_launch(LogicalRepWorkerType wtype,\n\t\t\t\t\t\t
      Oid dbid, Oid subid, const char *subname, Oid userid,\n\t\t\t\t\t\t Oid relid,
      dsm_handle subworker_dsm,\n\t\t\t\t\t\t bool retain_dead_tuples)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:583,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:583,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:599,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:602,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:608,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:609,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:613,1
    - Dst: kill
      Src: /src/postgres/src/backend/replication/logical/launcher.c:629,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:640,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:643,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:649,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:650,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:653,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 2
    argNames:
    - worker
    - signo
    argTypes:
    - LogicalRepWorker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 655
    functionName: logicalrep_worker_stop_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - Assert
    - kill
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - WaitLatch
    - LWLockRelease
    - LWLockHeldByMeInMode
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_stop_internal(LogicalRepWorker *worker, int
      signo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:667,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:667,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:669,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:675,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:675,1
    - Dst: logicalrep_worker_stop_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:676,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:679,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - wtype
    - subid
    - relid
    argTypes:
    - LogicalRepWorkerType
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 661
    functionDepth: 2
    functionLinenumber: 661
    functionLinenumberEnd: 680
    functionName: logicalrep_worker_stop
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - logicalrep_worker_stop_internal
    - Assert
    - LWLockRelease
    - isParallelApplyWorker
    - OidIsValid
    - logicalrep_worker_find
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_stop(LogicalRepWorkerType wtype, Oid subid,
      Oid relid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:695,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:698,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:700,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:710,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:717,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:717,1
    - Dst: logicalrep_worker_stop_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:723,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:725,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 688
    functionDepth: 2
    functionLinenumber: 688
    functionLinenumberEnd: 726
    functionName: logicalrep_pa_worker_stop
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - shm_mq_detach
    - logicalrep_worker_stop_internal
    - Assert
    - SpinLockRelease
    - LWLockRelease
    - isParallelApplyWorker
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void logicalrep_pa_worker_stop(ParallelApplyWorkerInfo *winfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:738,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:738,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:740,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:742,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/launcher.c:745,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:747,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - wtype
    - subid
    - relid
    argTypes:
    - LogicalRepWorkerType
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 732
    functionDepth: 2
    functionLinenumber: 732
    functionLinenumberEnd: 748
    functionName: logicalrep_worker_wakeup
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - Assert
    - logicalrep_worker_wakeup_ptr
    - LWLockRelease
    - OidIsValid
    - logicalrep_worker_find
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_wakeup(LogicalRepWorkerType wtype, Oid subid,
      Oid relid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:758,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:758,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - worker
    argTypes:
    - LogicalRepWorker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 755
    functionDepth: 1
    functionLinenumber: 755
    functionLinenumberEnd: 761
    functionName: logicalrep_worker_wakeup_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 1
    functionsReached:
    - Assert
    - SetLatch
    - LWLockHeldByMe
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_wakeup_ptr(LogicalRepWorker *worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:770,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:772,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:777,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:778,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:779,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:780,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:786,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:787,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:788,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:789,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/launcher.c:794,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:796,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - slot
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 797
    functionName: logicalrep_worker_attach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - errcode
    - Assert
    - before_shmem_exit
    - ereport
    - errmsg
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_attach(int slot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:807,1
    - Dst: pa_detach_all_error_mq
      Src: /src/postgres/src/backend/replication/logical/launcher.c:818,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:820,1
    - Dst: logicalrep_workers_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:822,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/launcher.c:825,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:827,1
    - Dst: logicalrep_worker_stop_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:828,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:831,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/logical/launcher.c:833,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:837,1
    - Dst: logicalrep_worker_cleanup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:839,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:841,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 803
    functionDepth: 7
    functionLinenumber: 803
    functionLinenumberEnd: 842
    functionName: logicalrep_worker_detach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - logicalrep_worker_stop_internal
    - list_free
    - am_leader_apply_worker
    - pa_detach_all_error_mq
    - logicalrep_workers_find
    - lfirst
    - logicalrep_worker_cleanup
    - LWLockRelease
    - isParallelApplyWorker
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_detach(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/launcher.c:825,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:827,1
    - Dst: logicalrep_worker_stop_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 823
    functionDepth: 2
    functionLinenumber: 823
    functionLinenumberEnd: 829
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 367
    functionsReached:
    - lfirst
    - logicalrep_worker_stop_internal
    - isParallelApplyWorker
    linkageType: ''
    returnType: void
    signature: void foreach(lc, workers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:850,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - worker
    argTypes:
    - LogicalRepWorker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 861
    functionName: logicalrep_worker_cleanup
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 3
    functionsReached:
    - Assert
    - LWLockHeldByMeInMode
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_cleanup(LogicalRepWorker *worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 868
    functionDepth: 0
    functionLinenumber: 868
    functionLinenumberEnd: 872
    functionName: logicalrep_launcher_onexit
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void logicalrep_launcher_onexit(int code, Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:890,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:892,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:898,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 881
    functionDepth: 2
    functionLinenumber: 881
    functionLinenumberEnd: 899
    functionName: logicalrep_reset_seqsync_start_time
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - logicalrep_worker_find
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void logicalrep_reset_seqsync_start_time(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/logical/launcher.c:911,1
    - Dst: logicalrep_worker_detach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:913,1
    - Dst: FileSetDeleteAll
      Src: /src/postgres/src/backend/replication/logical/launcher.c:917,1
    - Dst: LockReleaseAll
      Src: /src/postgres/src/backend/replication/logical/launcher.c:927,1
    - Dst: ApplyLauncherWakeup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:929,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 906
    functionDepth: 8
    functionLinenumber: 906
    functionLinenumberEnd: 930
    functionName: logicalrep_worker_onexit
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - walrcv_disconnect
    - LockReleaseAll
    - FileSetDeleteAll
    - ApplyLauncherWakeup
    - logicalrep_worker_detach
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_onexit(int code, Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:942,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:942,1
    - Dst: isTableSyncWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:949,1
    - Dst: isSequenceSyncWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:949,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 954
    functionName: logicalrep_sync_worker_count
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 1
    functionsReached:
    - Assert
    - isTableSyncWorker
    - isSequenceSyncWorker
    - LWLockHeldByMe
    linkageType: ''
    returnType: int
    signature: int logicalrep_sync_worker_count(Oid subid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:966,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:966,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:976,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 960
    functionDepth: 1
    functionLinenumber: 960
    functionLinenumberEnd: 981
    functionName: logicalrep_pa_worker_count
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 1
    functionsReached:
    - Assert
    - LWLockHeldByMe
    - isParallelApplyWorker
    linkageType: ''
    returnType: int
    signature: int logicalrep_pa_worker_count(Oid subid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/replication/logical/launcher.c:996,1
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/logical/launcher.c:997,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/replication/logical/launcher.c:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1003
    functionName: ApplyLauncherShmemRequest
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    - mul_size
    - add_size
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherShmemRequest(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1024,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1028,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1029,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1030,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1032,1
    - Dst: RegisterBackgroundWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1038,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1009
    functionDepth: 1
    functionLinenumber: 1009
    functionLinenumberEnd: 1039
    functionName: ApplyLauncherRegister
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - RegisterBackgroundWorker
    - memset
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherRegister(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1058,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1059,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1045
    functionDepth: 2
    functionLinenumber: 1045
    functionLinenumberEnd: 1061
    functionName: ApplyLauncherShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - memset
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherShmemInit(void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1079,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1082,1
    - Dst: dsa_create
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1087,1
    - Dst: dsa_pin
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1088,1
    - Dst: dsa_pin_mapping
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1089,1
    - Dst: dshash_create
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1090,1
    - Dst: dsa_get_handle
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1093,1
    - Dst: dshash_get_hash_table_handle
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1094,1
    - Dst: dsa_attach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1099,1
    - Dst: dsa_pin_mapping
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1100,1
    - Dst: dshash_attach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1101,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1105,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1068
    functionDepth: 1
    functionLinenumber: 1068
    functionLinenumberEnd: 1107
    functionName: logicalrep_launcher_attach_dshmem
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - dsa_get_handle
    - LWLockAcquire
    - dsa_pin
    - dsa_create
    - MemoryContextSwitchTo
    - dshash_get_hash_table_handle
    - dsa_attach
    - LWLockRelease
    - dshash_attach
    - dshash_create
    - dsa_pin_mapping
    linkageType: ''
    returnType: void
    signature: void logicalrep_launcher_attach_dshmem(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_launcher_attach_dshmem
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1118,1
    - Dst: dshash_find_or_insert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1120,1
    - Dst: dshash_release_lock
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - subid
    - start_time
    argTypes:
    - Oid
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1112
    functionDepth: 2
    functionLinenumber: 1112
    functionLinenumberEnd: 1123
    functionName: ApplyLauncherSetWorkerStartTime
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - dshash_release_lock
    - dshash_find_or_insert
    - logicalrep_launcher_attach_dshmem
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherSetWorkerStartTime(Oid subid, TimestampTz start_time)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_launcher_attach_dshmem
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1134,1
    - Dst: dshash_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1136,1
    - Dst: dshash_release_lock
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1128
    functionDepth: 2
    functionLinenumber: 1128
    functionLinenumberEnd: 1144
    functionName: ApplyLauncherGetWorkerStartTime
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - dshash_release_lock
    - dshash_find
    - logicalrep_launcher_attach_dshmem
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz ApplyLauncherGetWorkerStartTime(Oid subid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_launcher_attach_dshmem
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1157,1
    - Dst: dshash_delete_key
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1154
    functionDepth: 2
    functionLinenumber: 1154
    functionLinenumberEnd: 1160
    functionName: ApplyLauncherForgetWorkerStartTime
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - dshash_delete_key
    - logicalrep_launcher_attach_dshmem
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherForgetWorkerStartTime(Oid subid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ApplyLauncherWakeup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1165
    functionDepth: 1
    functionLinenumber: 1165
    functionLinenumberEnd: 1175
    functionName: AtEOXact_ApplyLauncher
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 3
    functionsReached:
    - ApplyLauncherWakeup
    linkageType: ''
    returnType: void
    signature: void AtEOXact_ApplyLauncher(bool isCommit)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1184
    functionDepth: 0
    functionLinenumber: 1184
    functionLinenumberEnd: 1189
    functionName: ApplyLauncherWakeupAtCommit
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherWakeupAtCommit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kill
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1194
    functionDepth: 1
    functionLinenumber: 1194
    functionLinenumberEnd: 1199
    functionName: ApplyLauncherWakeup
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 2
    functionsReached:
    - kill
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherWakeup(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1207,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1208,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1210,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1212,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1216,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1217,1
    - Dst: BackgroundWorkerInitializeConnection
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1223,1
    - Dst: acquire_conflict_slot_if_exists
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1229,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1244,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1247,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1250,1
    - Dst: get_subscription_list
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1260,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1263,1
    - Dst: CreateConflictDetectionSlot
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1287,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1307,1
    - Dst: init_conflict_slot_xmin
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1308,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1315,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1316,1
    - Dst: compute_min_nonremovable_xid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1332,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1334,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1340,1
    - Dst: ApplyLauncherGetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1364,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1365,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1367,1
    - Dst: ApplyLauncherSetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1369,1
    - Dst: logicalrep_worker_launch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1370,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1384,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1390,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1410,1
    - Dst: update_conflict_slot_xmin
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1412,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1416,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1418,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1421,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1428,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1429,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1435,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 65
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1204
    functionDepth: 8
    functionLinenumber: 1204
    functionLinenumberEnd: 1440
    functionName: ApplyLauncherMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - logicalrep_worker_launch
    - Min
    - get_subscription_list
    - ReplicationSlotDropAcquired
    - compute_min_nonremovable_xid
    - Assert
    - init_conflict_slot_xmin
    - ResetLatch
    - BackgroundWorkerUnblockSignals
    - CreateConflictDetectionSlot
    - acquire_conflict_slot_if_exists
    - GetCurrentTimestamp
    - errmsg_internal
    - ApplyLauncherSetWorkerStartTime
    - before_shmem_exit
    - ereport
    - CHECK_FOR_INTERRUPTS
    - lfirst
    - TimestampDifferenceMilliseconds
    - BackgroundWorkerInitializeConnection
    - AllocSetContextCreate
    - update_conflict_slot_xmin
    - logicalrep_worker_find
    - pqsignal
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - WaitLatch
    - LWLockRelease
    - ApplyLauncherGetWorkerStartTime
    - ProcessConfigFile
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherMain(Datum main_arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1263,1
    - Dst: CreateConflictDetectionSlot
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1287,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1307,1
    - Dst: init_conflict_slot_xmin
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1308,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1315,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1316,1
    - Dst: compute_min_nonremovable_xid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1332,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1334,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1340,1
    - Dst: ApplyLauncherGetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1364,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1365,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1367,1
    - Dst: ApplyLauncherSetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1369,1
    - Dst: logicalrep_worker_launch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1370,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1384,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1390,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1261
    functionDepth: 3
    functionLinenumber: 1261
    functionLinenumberEnd: 1393
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 367
    functionsReached:
    - compute_min_nonremovable_xid
    - GetCurrentTimestamp
    - ApplyLauncherGetWorkerStartTime
    - LWLockAcquire
    - ApplyLauncherSetWorkerStartTime
    - init_conflict_slot_xmin
    - logicalrep_worker_launch
    - Min
    - lfirst
    - TimestampDifferenceMilliseconds
    - LWLockRelease
    - CreateConflictDetectionSlot
    - logicalrep_worker_find
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, sublist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1458,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1460,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1462,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1471,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1474,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1475,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - worker
    - xmin
    argTypes:
    - LogicalRepWorker*
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1447
    functionDepth: 2
    functionLinenumber: 1447
    functionLinenumberEnd: 1477
    functionName: compute_min_nonremovable_xid
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 2
    functionsReached:
    - TransactionIdPrecedes
    - Assert
    - SpinLockRelease
    - SpinLockAcquire
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void compute_min_nonremovable_xid(LogicalRepWorker *worker, TransactionId
      *xmin)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1488,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1493
      start: 1485
    functionDepth: 3
    functionLinenumber: 1485
    functionLinenumberEnd: 1493
    functionName: acquire_conflict_slot_if_exists
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 1
    functionsReached:
    - ReplicationSlotAcquire
    - SearchNamedReplicationSlot
    linkageType: ''
    returnType: bool
    signature: bool acquire_conflict_slot_if_exists(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1502,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1503,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1503,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1504,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1507,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1510,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1513,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1515,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1517,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - new_xmin
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1499
    functionDepth: 3
    functionLinenumber: 1499
    functionLinenumberEnd: 1530
    functionName: update_conflict_slot_xmin
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 1
    functionsReached:
    - elog
    - ReplicationSlotMarkDirty
    - Assert
    - TransactionIdEquals
    - TransactionIdPrecedesOrEquals
    - SpinLockRelease
    - SpinLockAcquire
    - ReplicationSlotsComputeRequiredXmin
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void update_conflict_slot_xmin(TransactionId new_xmin)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1541,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1542,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1544,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1545,1
    - Dst: GetOldestSafeDecodingTransactionId
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1547,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1549,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1552,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1554,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1556,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1557,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1560,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1562
      start: 1535
    functionDepth: 3
    functionLinenumber: 1535
    functionLinenumberEnd: 1562
    functionName: init_conflict_slot_xmin
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 2
    functionsReached:
    - ReplicationSlotMarkDirty
    - LWLockAcquire
    - Assert
    - GetOldestSafeDecodingTransactionId
    - SpinLockRelease
    - LWLockRelease
    - ReplicationSlotSave
    - SpinLockAcquire
    - ReplicationSlotsComputeRequiredXmin
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void init_conflict_slot_xmin(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1576,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1578,1
    - Dst: init_conflict_slot_xmin
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1568
    functionDepth: 4
    functionLinenumber: 1568
    functionLinenumberEnd: 1582
    functionName: CreateConflictDetectionSlot
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 2
    functionsReached:
    - init_conflict_slot_xmin
    - ReplicationSlotCreate
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void CreateConflictDetectionSlot(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1587
    functionDepth: 0
    functionLinenumber: 1587
    functionLinenumberEnd: 1591
    functionName: IsLogicalLauncher
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsLogicalLauncher(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1603,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1609,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1616,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1597
    functionDepth: 1
    functionLinenumber: 1597
    functionLinenumberEnd: 1619
    functionName: GetLeaderApplyWorkerPid
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    - isParallelApplyWorker
    linkageType: ''
    returnType: pid_t
    signature: pid_t GetLeaderApplyWorkerPid(pid_t pid)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1628,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1628,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1632,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1635,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1645,1
    - Dst: IsBackendPid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1647,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1650,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1655,1
    - Dst: isTableSyncWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1656,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1657,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1660,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1662,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1663,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1667,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1670,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1674,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1678,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1679,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1682,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1686,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1691,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1694,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1697,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1700,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1704,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1707,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1714,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1718,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1624
    functionDepth: 2
    functionLinenumber: 1624
    functionLinenumberEnd: 1721
    functionName: pg_stat_get_subscription
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - LWLockAcquire
    - memcpy
    - InitMaterializedSRF
    - Int32GetDatum
    - tuplestore_putvalues
    - TimestampTzGetDatum
    - isParallelApplyWorker
    - PG_GETARG_OID
    - isTableSyncWorker
    - LSNGetDatum
    - IsBackendPid
    - OidIsValid
    - CStringGetTextDatum
    - ObjectIdGetDatum
    - LWLockRelease
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stat_get_subscription(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/logical/conflict.c:122,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/replication/logical/conflict.c:125,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/replication/logical/conflict.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 117
    functionDepth: 5
    functionLinenumber: 117
    functionLinenumberEnd: 133
    functionName: create_conflict_log_table_tupdesc
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 0
    functionsReached:
    - TupleDescFinalize
    - CreateTemplateTupleDesc
    - TupleDescInitEntry
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc create_conflict_log_table_tupdesc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/conflict.c:153,1
    - Dst: create_conflict_log_table_tupdesc
      Src: /src/postgres/src/backend/replication/logical/conflict.c:156,1
    - Dst: heap_create_with_catalog
      Src: /src/postgres/src/backend/replication/logical/conflict.c:159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:180,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:180,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/replication/logical/conflict.c:183,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/conflict.c:189,1
    - Dst: NewRelationCreateToastTable
      Src: /src/postgres/src/backend/replication/logical/conflict.c:195,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/conflict.c:197,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/conflict.c:198,1
    - Dst: get_qualified_objname
      Src: /src/postgres/src/backend/replication/logical/conflict.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - subid
    - subname
    - subowner
    argTypes:
    - Oid
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 146
    functionDepth: 10
    functionLinenumber: 146
    functionLinenumberEnd: 203
    functionName: create_conflict_log_table
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 0
    functionsReached:
    - heap_create_with_catalog
    - Assert
    - CommandCounterIncrement
    - ereport
    - FreeTupleDesc
    - errmsg
    - create_conflict_log_table_tupdesc
    - OidIsValid
    - get_qualified_objname
    - NewRelationCreateToastTable
    - snprintf
    linkageType: ''
    returnType: Oid
    signature: Oid create_conflict_log_table(Oid subid, char *subname, Oid subowner)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/logical/conflict.c:213,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/logical/conflict.c:216,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/logical/conflict.c:219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/conflict.c:223,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/conflict.c:224,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/conflict.c:225,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/conflict.c:226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - dest
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 227
    functionName: GetConflictLogDest
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - errcode
    - ereport
    - errhint
    - errmsg
    linkageType: ''
    returnType: ConflictLogDest
    signature: ConflictLogDest GetConflictLogDest(const char *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/replication/logical/conflict.c:242,1
    - Dst: DatumGetTransactionId
      Src: /src/postgres/src/backend/replication/logical/conflict.c:244,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:245,1
    - Dst: TransactionIdGetCommitTsData
      Src: /src/postgres/src/backend/replication/logical/conflict.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - localslot
    - xmin
    - localorigin
    - localts
    argTypes:
    - TupleTableSlot*
    - TransactionId*
    - ReplOriginId*
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 235
    functionDepth: 5
    functionLinenumber: 235
    functionLinenumberEnd: 259
    functionName: GetTupleTransactionInfo
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 0
    functionsReached:
    - slot_getsysattr
    - DatumGetTransactionId
    - TransactionIdGetCommitTsData
    - Assert
    linkageType: ''
    returnType: bool
    signature: "bool GetTupleTransactionInfo(TupleTableSlot *localslot, TransactionId
      *xmin,\n\t\t\t\t\t\tReplOriginId *localorigin, TimestampTz *localts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:284,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/replication/logical/conflict.c:287,1
    - Dst: errdetail_apply_conflict
      Src: /src/postgres/src/backend/replication/logical/conflict.c:288,1
    - Dst: pgstat_report_subscription_conflict
      Src: /src/postgres/src/backend/replication/logical/conflict.c:296,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/conflict.c:298,1
    - Dst: errcode_apply_conflict
      Src: /src/postgres/src/backend/replication/logical/conflict.c:299,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/conflict.c:300,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:301,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/conflict.c:301,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/conflict.c:302,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/logical/conflict.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 7
    argNames:
    - estate
    - relinfo
    - elevel
    - type
    - searchslot
    - remoteslot
    - conflicttuples
    argTypes:
    - EState*
    - ResultRelInfo*
    - int
    - ConflictType
    - TupleTableSlot*
    - TupleTableSlot*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 276
    functionDepth: 3
    functionLinenumber: 276
    functionLinenumberEnd: 305
    functionName: ReportApplyConflict
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 0
    functionsReached:
    - pgstat_report_subscription_conflict
    - get_namespace_name
    - errdetail_apply_conflict
    - initStringInfo
    - ereport
    - RelationGetNamespace
    - errmsg
    - foreach_ptr
    - RelationGetRelationName
    - errcode_apply_conflict
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: "void ReportApplyConflict(EState *estate, ResultRelInfo *relinfo, int
      elevel,\n\t\t\t\t\tConflictType type, TupleTableSlot *searchslot,\n\t\t\t\t\tTupleTableSlot
      *remoteslot, List *conflicttuples)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:331,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:332,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 1
    argNames:
    - relInfo
    argTypes:
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 311
    functionDepth: 6
    functionLinenumber: 311
    functionLinenumberEnd: 336
    functionName: InitConflictIndexes
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 0
    functionsReached:
    - lappend_oid
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void InitConflictIndexes(ResultRelInfo *relInfo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/conflict.c:349,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/conflict.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - type
    argTypes:
    - ConflictType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 360
    functionName: errcode_apply_conflict
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 1
    functionsReached:
    - Assert
    - errcode
    linkageType: ''
    returnType: int
    signature: int errcode_apply_conflict(ConflictType type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:371,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:385,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:387,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - tuple_values
    argTypes:
    - StringInfo
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 390
    functionName: append_tuple_value_detail
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void append_tuple_value_detail(StringInfo buf, List *tuple_values)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:385,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:387,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 389
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 11
    functionsReached:
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, tuple_value, tuple_values)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: get_tuple_desc
      Src: /src/postgres/src/backend/replication/logical/conflict.c:419,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:425,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:426,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:434,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:434,1
    - Dst: CheckRelationOidLockedByMe
      Src: /src/postgres/src/backend/replication/logical/conflict.c:435,1
    - Dst: append_tuple_value_detail
      Src: /src/postgres/src/backend/replication/logical/conflict.c:439,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/replication/logical/conflict.c:440,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:443,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:443,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:446,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:446,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:449,1
    - Dst: append_tuple_value_detail
      Src: /src/postgres/src/backend/replication/logical/conflict.c:452,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/replication/logical/conflict.c:453,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:460,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:460,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:461,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:462,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:465,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:465,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:466,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:467,1
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:469,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:472,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:472,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:473,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:474,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:477,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:477,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:478,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:479,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:492,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:492,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:493,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:494,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:497,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:497,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:498,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:499,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:505,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:505,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:506,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:509,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:509,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:510,1
    - Dst: append_tuple_value_detail
      Src: /src/postgres/src/backend/replication/logical/conflict.c:516,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/replication/logical/conflict.c:517,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:523,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:523,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:524,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:527,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:527,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:528,1
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:530,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:533,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:533,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:535,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:538,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:538,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:540,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:547,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:547,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:548,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:551,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:551,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:552,1
    - Dst: append_tuple_value_detail
      Src: /src/postgres/src/backend/replication/logical/conflict.c:558,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/replication/logical/conflict.c:559,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:562,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:562,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:565,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:565,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:570,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:570,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:571,1
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:572,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:573,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:573,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:574,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:578,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:578,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:579,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:582,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:582,1
    - Dst: append_tuple_value_detail
      Src: /src/postgres/src/backend/replication/logical/conflict.c:587,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/replication/logical/conflict.c:588,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:591,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:591,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:594,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:594,1
    - Dst: append_tuple_value_detail
      Src: /src/postgres/src/backend/replication/logical/conflict.c:599,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/replication/logical/conflict.c:600,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:606,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:606,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:607,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:610,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:610,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:611,1
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:613,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:616,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:616,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:618,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:621,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:621,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:623,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:630,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:630,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:631,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:634,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:634,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:635,1
    - Dst: append_tuple_value_detail
      Src: /src/postgres/src/backend/replication/logical/conflict.c:641,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/conflict.c:642,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:645,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:645,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:648,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:653,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/logical/conflict.c:660,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:662,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 103
    argCount: 11
    argNames:
    - estate
    - relinfo
    - type
    - searchslot
    - localslot
    - remoteslot
    - indexoid
    - localxmin
    - localorigin
    - localts
    - err_msg
    argTypes:
    - EState*
    - ResultRelInfo*
    - ConflictType
    - TupleTableSlot*
    - TupleTableSlot*
    - TupleTableSlot*
    - Oid
    - TransactionId
    - ReplOriginId
    - TimestampTz
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 402
    functionDepth: 3
    functionLinenumber: 402
    functionLinenumberEnd: 663
    functionName: errdetail_apply_conflict
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 1
    functionsReached:
    - appendStringInfoChar
    - _
    - get_tuple_desc
    - Assert
    - appendStringInfo
    - CheckRelationOidLockedByMe
    - initStringInfo
    - replorigin_by_oid
    - appendStringInfoString
    - timestamptz_to_str
    - list_make2
    - get_rel_name
    - append_tuple_value_detail
    - OidIsValid
    - list_make1
    - list_make3
    - resetStringInfo
    linkageType: ''
    returnType: void
    signature: "void errdetail_apply_conflict(EState *estate, ResultRelInfo *relinfo,\n\t\t\t\t\t\t
      ConflictType type, TupleTableSlot *searchslot,\n\t\t\t\t\t\t TupleTableSlot
      *localslot, TupleTableSlot *remoteslot,\n\t\t\t\t\t\t Oid indexoid, TransactionId
      localxmin,\n\t\t\t\t\t\t ReplOriginId localorigin, TimestampTz localts,\n\t\t\t\t\t\t
      StringInfo err_msg)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:681,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/conflict.c:682,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:685,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:695,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:695,1
    - Dst: build_index_value_desc
      Src: /src/postgres/src/backend/replication/logical/conflict.c:697,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/logical/conflict.c:701,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:701,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/replication/logical/conflict.c:710,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/logical/conflict.c:714,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:714,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/replication/logical/conflict.c:728,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/replication/logical/conflict.c:728,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/replication/logical/conflict.c:729,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/replication/logical/conflict.c:730,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/logical/conflict.c:735,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:735,1
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/replication/logical/conflict.c:747,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:749,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:756,1
    - Dst: build_index_value_desc
      Src: /src/postgres/src/backend/replication/logical/conflict.c:757,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/replication/logical/conflict.c:759,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:763,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/logical/conflict.c:764,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:764,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/logical/conflict.c:766,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:766,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 30
    argCount: 11
    argNames:
    - estate
    - relinfo
    - type
    - key_desc
    - localslot
    - local_desc
    - remoteslot
    - remote_desc
    - searchslot
    - search_desc
    - indexoid
    argTypes:
    - EState*
    - ResultRelInfo*
    - ConflictType
    - char**
    - TupleTableSlot*
    - char**
    - TupleTableSlot*
    - char**
    - TupleTableSlot*
    - char**
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 672
    functionDepth: 4
    functionLinenumber: 672
    functionLinenumberEnd: 769
    functionName: get_tuple_desc
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 1
    functionsReached:
    - _
    - Assert
    - RelationGetDescr
    - build_index_value_desc
    - psprintf
    - GetRelationIdentityOrPK
    - ExecBuildSlotValueDescription
    - ExecGetUpdatedCols
    - bms_union
    - OidIsValid
    - RelationGetRelid
    - ExecGetInsertedCols
    linkageType: ''
    returnType: void
    signature: "void get_tuple_desc(EState *estate, ResultRelInfo *relinfo, ConflictType
      type,\n\t\t\t   char **key_desc,\n\t\t\t   TupleTableSlot *localslot, char **local_desc,\n\t\t\t
      \  TupleTableSlot *remoteslot, char **remote_desc,\n\t\t\t   TupleTableSlot
      *searchslot, char **search_desc,\n\t\t\t   Oid indexoid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:791,1
    - Dst: CheckRelationOidLockedByMe
      Src: /src/postgres/src/backend/replication/logical/conflict.c:791,1
    - Dst: index_open
      Src: /src/postgres/src/backend/replication/logical/conflict.c:793,1
    - Dst: TTS_IS_VIRTUAL
      Src: /src/postgres/src/backend/replication/logical/conflict.c:799,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/conflict.c:801,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/replication/logical/conflict.c:802,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/replication/logical/conflict.c:809,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/replication/logical/conflict.c:816,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:816,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/replication/logical/conflict.c:818,1
    - Dst: index_close
      Src: /src/postgres/src/backend/replication/logical/conflict.c:820,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - estate
    - localrel
    - slot
    - indexoid
    argTypes:
    - EState*
    - Relation
    - TupleTableSlot*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 778
    functionDepth: 4
    functionLinenumber: 778
    functionLinenumberEnd: 823
    functionName: build_index_value_desc
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 1
    functionsReached:
    - TTS_IS_VIRTUAL
    - Assert
    - CheckRelationOidLockedByMe
    - GetPerTupleExprContext
    - table_slot_create
    - index_open
    - BuildIndexInfo
    - index_close
    - FormIndexDatum
    - ExecCopySlot
    - BuildIndexValueDescription
    linkageType: ''
    returnType: char
    signature: "char *\nbuild_index_value_desc(EState *estate, Relation localrel,
      TupleTableSlot *slot,\n\t\t\t\t\t   Oid indexoid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:271,1
    - Dst: maybe_reread_subscription
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:283,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:305,1
    - Dst: AllTablesyncsReady
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:315,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 319
    functionName: pa_can_start
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - am_leader_apply_worker
    - XLogRecPtrIsValid
    - maybe_reread_subscription
    - AllTablesyncsReady
    linkageType: ''
    returnType: bool
    signature: bool pa_can_start(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_initialize_estimator
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:351,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:352,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:353,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:354,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:356,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:357,1
    - Dst: dsm_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:360,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:360,1
    - Dst: shm_toc_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:364,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:364,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:368,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:369,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:372,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:376,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:379,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:379,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:380,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:381,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:384,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:387,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:387,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:389,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:390,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:393,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 400
    functionName: pa_setup_dsm
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - shm_toc_create
    - pg_atomic_init_u32
    - shm_mq_attach
    - shm_toc_estimate_keys
    - SpinLockInit
    - dsm_segment_address
    - shm_toc_insert
    - shm_mq_set_sender
    - shm_toc_initialize_estimator
    - shm_toc_estimate_chunk
    - dsm_create
    - shm_mq_set_receiver
    - shm_toc_estimate
    - shm_mq_create
    - shm_toc_allocate
    linkageType: ''
    returnType: bool
    signature: bool pa_setup_dsm(ParallelApplyWorkerInfo *winfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:417,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:429,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:431,1
    - Dst: pa_setup_dsm
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:434,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:436,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:437,1
    - Dst: logicalrep_worker_launch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:441,1
    - Dst: dsm_segment_handle
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:447,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:452,1
    - Dst: pa_free_worker_info
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:456,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 406
    functionDepth: 6
    functionLinenumber: 406
    functionLinenumberEnd: 463
    functionName: pa_launch_parallel_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - pfree
    - logicalrep_worker_launch
    - lappend
    - dsm_segment_handle
    - MemoryContextSwitchTo
    - lfirst
    - pa_free_worker_info
    - pa_setup_dsm
    linkageType: ''
    returnType: ParallelApplyWorkerInfo
    signature: 'ParallelApplyWorkerInfo *

      pa_launch_parallel_worker(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 421
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 367
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, ParallelApplyWorkerPool)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pa_can_start
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:480,1
    - Dst: pa_launch_parallel_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:483,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:492,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:497,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:503,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:505,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:508,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:511,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 473
    functionDepth: 7
    functionLinenumber: 473
    functionLinenumberEnd: 516
    functionName: pa_allocate_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - elog
    - hash_search
    - pa_launch_parallel_worker
    - hash_create
    - MemSet
    - SpinLockRelease
    - SpinLockAcquire
    - pa_can_start
    linkageType: ''
    returnType: void
    signature: void pa_allocate_worker(TransactionId xid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:527,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:538,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:542,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 547
    functionName: pa_find_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_search
    - TransactionIdIsValid
    linkageType: ''
    returnType: ParallelApplyWorkerInfo
    signature: 'ParallelApplyWorkerInfo *

      pa_find_worker(TransactionId xid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:562,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:564,1
    - Dst: pa_get_xact_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:564,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:566,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:567,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:581,1
    - Dst: logicalrep_pa_worker_stop
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:584,1
    - Dst: pa_free_worker_info
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:585,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 559
    functionDepth: 3
    functionLinenumber: 559
    functionLinenumberEnd: 592
    functionName: pa_free_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - elog
    - pa_get_xact_state
    - hash_search
    - Assert
    - logicalrep_pa_worker_stop
    - pa_free_worker_info
    - list_length
    - am_parallel_apply_worker
    linkageType: ''
    returnType: void
    signature: void pa_free_worker(ParallelApplyWorkerInfo *winfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:601,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:604,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:607,1
    - Dst: stream_cleanup_files
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:611,1
    - Dst: dsm_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:614,1
    - Dst: list_delete_ptr
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:617,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:619,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 598
    functionDepth: 5
    functionLinenumber: 598
    functionLinenumberEnd: 620
    functionName: pa_free_worker_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 2
    functionsReached:
    - shm_mq_detach
    - Assert
    - pfree
    - list_delete_ptr
    - stream_cleanup_files
    - dsm_detach
    linkageType: ''
    returnType: void
    signature: void pa_free_worker_info(ParallelApplyWorkerInfo *winfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:632,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 640
    functionName: pa_detach_all_error_mq
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 1
    functionsReached:
    - lfirst
    - shm_mq_detach
    linkageType: ''
    returnType: void
    signature: void pa_detach_all_error_mq(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:632,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 639
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 367
    functionsReached:
    - lfirst
    - shm_mq_detach
    linkageType: ''
    returnType: void
    signature: void foreach(lc, ParallelApplyWorkerPool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pa_get_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 653
    functionName: pa_has_spooled_message_pending
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pa_get_fileset_state
    linkageType: ''
    returnType: bool
    signature: bool pa_has_spooled_message_pending(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pa_get_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:666,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:684,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:685,1
    - Dst: pa_get_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:687,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:699,1
    - Dst: apply_spooled_messages
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:703,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:706,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 710
    functionName: pa_process_spooled_messages_if_required
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pa_get_fileset_state
    - pa_set_fileset_state
    - pa_unlock_stream
    - pa_lock_stream
    - apply_spooled_messages
    linkageType: ''
    returnType: bool
    signature: bool pa_process_spooled_messages_if_required(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:718,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:722,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:723,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:726,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 734
    functionName: ProcessParallelApplyInterrupts
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - ereport
    - CHECK_FOR_INTERRUPTS
    - errmsg
    - proc_exit
    - ProcessConfigFile
    linkageType: ''
    returnType: void
    signature: void ProcessParallelApplyInterrupts(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:748,1
    - Dst: ProcessParallelApplyInterrupts
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:765,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:768,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:770,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:778,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:780,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:786,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:788,1
    - Dst: apply_dispatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:801,1
    - Dst: pa_process_spooled_messages_if_required
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:806,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:811,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:817,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:825,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:826,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:831,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:833,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:834,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:835,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:838,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:839,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:845,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - mqh
    argTypes:
    - shm_mq_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 737
    functionDepth: 2
    functionLinenumber: 737
    functionLinenumberEnd: 846
    functionName: LogicalParallelApplyLoop
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - elog
    - apply_dispatch
    - MemoryContextReset
    - initReadOnlyStringInfo
    - errcode
    - shm_mq_receive
    - IsTransactionState
    - Assert
    - ProcessParallelApplyInterrupts
    - ResetLatch
    - ereport
    - MemoryContextSwitchTo
    - pa_process_spooled_messages_if_required
    - WaitLatch
    - errmsg
    - AllocSetContextCreate
    - pq_getmsgbyte
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void LogicalParallelApplyLoop(shm_mq_handle *mqh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:859,1
    - Dst: dsm_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:863,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 864
    functionName: pa_shutdown
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - dsm_detach
    - SendProcSignal
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void pa_shutdown(int code, Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:880,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:893,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:894,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:895,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:904,1
    - Dst: dsm_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:905,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:907,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:908,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:909,1
    - Dst: shm_toc_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:911,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:911,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:913,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:914,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:915,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:918,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:924,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:925,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:926,1
    - Dst: logicalrep_worker_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:933,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:940,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:940,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:942,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:945,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:950,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:951,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:952,1
    - Dst: pq_redirect_to_shm_mq
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:954,1
    - Dst: pq_set_parallel_leader
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:955,1
    - Dst: InitializeLogRepWorker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:961,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:966,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:967,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:969,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:975,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:977,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:983,1
    - Dst: set_apply_error_context_origin
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:987,1
    - Dst: LogicalParallelApplyLoop
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:997,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 869
    functionDepth: 3
    functionLinenumber: 869
    functionLinenumberEnd: 998
    functionName: ParallelApplyWorkerMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - shm_toc_attach
    - errcode
    - replorigin_session_setup
    - CommitTransactionCommand
    - replorigin_by_name
    - dsm_attach
    - CacheRegisterSyscacheCallback
    - memcpy
    - shm_toc_lookup
    - Assert
    - shm_mq_set_sender
    - pq_set_parallel_leader
    - StartTransactionCommand
    - errmsg
    - PointerGetDatum
    - BackgroundWorkerUnblockSignals
    - SpinLockRelease
    - shm_mq_attach
    - InitializeLogRepWorker
    - before_shmem_exit
    - ereport
    - LogicalParallelApplyLoop
    - dsm_segment_address
    - shm_mq_set_receiver
    - set_apply_error_context_origin
    - ReplicationOriginNameForLogicalRep
    - pqsignal
    - pq_redirect_to_shm_mq
    - DatumGetInt32
    - SpinLockAcquire
    - logicalrep_worker_attach
    linkageType: ''
    returnType: void
    signature: void ParallelApplyWorkerMain(Datum main_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1007
    functionDepth: 0
    functionLinenumber: 1007
    functionLinenumberEnd: 1013
    functionName: HandleParallelApplyMessageInterrupt
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandleParallelApplyMessageInterrupt(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1024,1
    - Dst: pq_parse_errornotice
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1033,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1042,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1043,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1045,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1045,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1057,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1058,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1059,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1060,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1073,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1019
    functionDepth: 2
    functionLinenumber: 1019
    functionLinenumberEnd: 1076
    functionName: ProcessParallelApplyMessage
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - elog
    - _
    - errcode
    - errcontext
    - psprintf
    - pstrdup
    - ereport
    - pq_getmsgbyte
    - errmsg
    - pq_parse_errornotice
    linkageType: ''
    returnType: void
    signature: void ProcessParallelApplyMessage(StringInfo msg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1096,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1104,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1108,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1110,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1119,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1130,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1138,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1139,1
    - Dst: ProcessParallelApplyMessage
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1140,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1141,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1144,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1145,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1146,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1149,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1152,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1154,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1081
    functionDepth: 3
    functionLinenumber: 1081
    functionLinenumberEnd: 1155
    functionName: ProcessParallelApplyMessages
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 1
    functionsReached:
    - appendBinaryStringInfo
    - MemoryContextReset
    - RESUME_INTERRUPTS
    - errcode
    - shm_mq_receive
    - pfree
    - HOLD_INTERRUPTS
    - initStringInfo
    - ereport
    - MemoryContextSwitchTo
    - ProcessParallelApplyMessage
    - lfirst
    - errmsg
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void ProcessParallelApplyMessages(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1119,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1130,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1138,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1139,1
    - Dst: ProcessParallelApplyMessage
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1140,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1141,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1144,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1145,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1146,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1114
    functionDepth: 3
    functionLinenumber: 1114
    functionLinenumberEnd: 1147
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 367
    functionsReached:
    - appendBinaryStringInfo
    - errcode
    - shm_mq_receive
    - pfree
    - initStringInfo
    - ereport
    - ProcessParallelApplyMessage
    - lfirst
    - errmsg
    linkageType: ''
    returnType: void
    signature: void foreach(lc, ParallelApplyWorkerPool)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1171,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1171,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1172,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1178,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1192,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1197,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1199,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1201,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1204,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1211,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1212,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1216,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1217,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - winfo
    - nbytes
    - data
    argTypes:
    - ParallelApplyWorkerInfo*
    - Size
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1164
    functionDepth: 1
    functionLinenumber: 1164
    functionLinenumberEnd: 1221
    functionName: pa_send_data
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - TimestampDifferenceExceeds
    - GetCurrentTimestamp
    - errcode
    - Assert
    - IsTransactionState
    - shm_mq_send
    - ereport
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - unlikely
    - errmsg
    - WaitLatch
    linkageType: ''
    returnType: bool
    signature: bool pa_send_data(ParallelApplyWorkerInfo *winfo, Size nbytes, const
      void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1233,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1234,1
    - Dst: stream_start_internal
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1245,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1253,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - winfo
    - stream_locked
    argTypes:
    - ParallelApplyWorkerInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1229
    functionDepth: 1
    functionLinenumber: 1229
    functionLinenumberEnd: 1256
    functionName: pa_switch_to_partial_serialize
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pa_set_fileset_state
    - ereport
    - stream_start_internal
    - errmsg
    - pa_lock_stream
    linkageType: ''
    returnType: void
    signature: "void pa_switch_to_partial_serialize(ParallelApplyWorkerInfo *winfo,\n\t\t\t\t\t\t\t
      \  bool stream_locked)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pa_get_xact_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1272,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1276,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1282,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - winfo
    - xact_state
    argTypes:
    - ParallelApplyWorkerInfo*
    - ParallelTransState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1262
    functionDepth: 1
    functionLinenumber: 1262
    functionLinenumberEnd: 1287
    functionName: pa_wait_for_xact_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - pa_get_xact_state
    - WaitLatch
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: "void pa_wait_for_xact_state(ParallelApplyWorkerInfo *winfo,\n\t\t\t\t\t
      \  ParallelTransState xact_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pa_wait_for_xact_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1301,1
    - Dst: pa_lock_transaction
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1308,1
    - Dst: pa_unlock_transaction
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1309,1
    - Dst: pa_get_xact_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1316,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1317,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1318,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1292
    functionDepth: 2
    functionLinenumber: 1292
    functionLinenumberEnd: 1320
    functionName: pa_wait_for_xact_finish
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pa_lock_transaction
    - pa_get_xact_state
    - errcode
    - ereport
    - pa_wait_for_xact_state
    - pa_unlock_transaction
    - errmsg
    linkageType: ''
    returnType: void
    signature: void pa_wait_for_xact_finish(ParallelApplyWorkerInfo *winfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1329,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - wshared
    - xact_state
    argTypes:
    - ParallelApplyWorkerShared*
    - ParallelTransState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1325
    functionDepth: 2
    functionLinenumber: 1325
    functionLinenumberEnd: 1332
    functionName: pa_set_xact_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: "void pa_set_xact_state(ParallelApplyWorkerShared *wshared,\n\t\t\t\t
      \ ParallelTransState xact_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1342,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - wshared
    argTypes:
    - ParallelApplyWorkerShared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1337
    functionDepth: 2
    functionLinenumber: 1337
    functionLinenumberEnd: 1347
    functionName: pa_get_xact_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 3
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: ParallelTransState
    signature: ParallelTransState pa_get_xact_state(ParallelApplyWorkerShared *wshared)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1352
    functionDepth: 0
    functionLinenumber: 1352
    functionLinenumberEnd: 1356
    functionName: pa_set_stream_apply_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pa_set_stream_apply_worker(ParallelApplyWorkerInfo *winfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - suboid
    - xid
    - spname
    - szsp
    argTypes:
    - Oid
    - TransactionId
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1370
      start: 1366
    functionDepth: 0
    functionLinenumber: 1366
    functionLinenumberEnd: 1370
    functionName: pa_savepoint_name
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pa_savepoint_name(Oid suboid, TransactionId xid, char *spname,
      Size szsp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_member_xid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1384,1
    - Dst: pa_savepoint_name
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1389,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1392,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1395,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1397,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1398,1
    - Dst: BeginTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1400,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1401,1
    - Dst: DefineSavepoint
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1404,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1411,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1413,1
    - Dst: lappend_xid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1414,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1415,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - current_xid
    - top_xid
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1380
    functionDepth: 6
    functionLinenumber: 1380
    functionLinenumberEnd: 1417
    functionName: pa_start_subtrans
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - elog
    - IsTransactionBlock
    - lappend_xid
    - IsTransactionState
    - BeginTransactionBlock
    - CommitTransactionCommand
    - DefineSavepoint
    - MemoryContextSwitchTo
    - list_member_xid
    - StartTransactionCommand
    - pa_savepoint_name
    linkageType: ''
    returnType: void
    signature: void pa_start_subtrans(TransactionId current_xid, TransactionId top_xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1420
    functionDepth: 0
    functionLinenumber: 1420
    functionLinenumberEnd: 1428
    functionName: pa_reset_subtrans
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pa_reset_subtrans(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pa_set_xact_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1453,1
    - Dst: pa_unlock_transaction
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1465,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1467,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1469,1
    - Dst: EndTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1471,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1472,1
    - Dst: pa_reset_subtrans
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1475,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1477,1
    - Dst: pa_savepoint_name
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1485,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1487,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1496,1
    - Dst: lfirst_xid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1498,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1498,1
    - Dst: RollbackToSavepoint
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1502,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1503,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1504,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - abort_data
    argTypes:
    - LogicalRepStreamAbortData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1434
    functionDepth: 3
    functionLinenumber: 1434
    functionLinenumberEnd: 1509
    functionName: pa_stream_abort
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - elog
    - pa_set_xact_state
    - EndTransactionBlock
    - IsTransactionBlock
    - list_truncate
    - CommitTransactionCommand
    - pa_unlock_transaction
    - RollbackToSavepoint
    - pa_reset_subtrans
    - lfirst_xid
    - list_nth_cell
    - pgstat_report_activity
    - list_length
    - AbortCurrentTransaction
    - pa_savepoint_name
    linkageType: ''
    returnType: void
    signature: void pa_stream_abort(LogicalRepStreamAbortData *abort_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1520,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1525,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1526,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - wshared
    - fileset_state
    argTypes:
    - ParallelApplyWorkerShared*
    - PartialFileSetState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1516
    functionDepth: 2
    functionLinenumber: 1516
    functionLinenumberEnd: 1531
    functionName: pa_set_fileset_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 2
    functionsReached:
    - Assert
    - SpinLockAcquire
    - am_leader_apply_worker
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: "void pa_set_fileset_state(ParallelApplyWorkerShared *wshared,\n\t\t\t\t\t
      PartialFileSetState fileset_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1541,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1541,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1543,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1536
    functionDepth: 2
    functionLinenumber: 1536
    functionLinenumberEnd: 1548
    functionName: pa_get_fileset_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 2
    functionsReached:
    - Assert
    - SpinLockAcquire
    - am_parallel_apply_worker
    - SpinLockRelease
    linkageType: ''
    returnType: PartialFileSetState
    signature: PartialFileSetState pa_get_fileset_state(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockApplyTransactionForSession
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lockmode
    argTypes:
    - TransactionId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1558
    functionDepth: 1
    functionLinenumber: 1558
    functionLinenumberEnd: 1563
    functionName: pa_lock_stream
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 2
    functionsReached:
    - LockApplyTransactionForSession
    linkageType: ''
    returnType: void
    signature: void pa_lock_stream(TransactionId xid, LOCKMODE lockmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UnlockApplyTransactionForSession
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lockmode
    argTypes:
    - TransactionId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1565
    functionDepth: 1
    functionLinenumber: 1565
    functionLinenumberEnd: 1570
    functionName: pa_unlock_stream
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 1
    functionsReached:
    - UnlockApplyTransactionForSession
    linkageType: ''
    returnType: void
    signature: void pa_unlock_stream(TransactionId xid, LOCKMODE lockmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockApplyTransactionForSession
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lockmode
    argTypes:
    - TransactionId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1591
    functionDepth: 1
    functionLinenumber: 1591
    functionLinenumberEnd: 1596
    functionName: pa_lock_transaction
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 1
    functionsReached:
    - LockApplyTransactionForSession
    linkageType: ''
    returnType: void
    signature: void pa_lock_transaction(TransactionId xid, LOCKMODE lockmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UnlockApplyTransactionForSession
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lockmode
    argTypes:
    - TransactionId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1598
    functionDepth: 1
    functionLinenumber: 1598
    functionLinenumberEnd: 1603
    functionName: pa_unlock_transaction
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 2
    functionsReached:
    - UnlockApplyTransactionForSession
    linkageType: ''
    returnType: void
    signature: void pa_unlock_transaction(TransactionId xid, LOCKMODE lockmode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1612,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1612,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1618,1
    - Dst: pa_has_spooled_message_pending
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1620,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1623,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1626,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1628,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1629,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1609
    functionDepth: 2
    functionLinenumber: 1609
    functionLinenumberEnd: 1631
    functionName: pa_decr_and_wait_stream_block
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_atomic_sub_fetch_u32
    - pa_lock_stream
    - Assert
    - pa_has_spooled_message_pending
    - pa_unlock_stream
    - pg_atomic_read_u32
    - am_parallel_apply_worker
    linkageType: ''
    returnType: void
    signature: void pa_decr_and_wait_stream_block(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1639,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1639,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1645,1
    - Dst: pa_wait_for_xact_finish
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1652,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1654,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1655,1
    - Dst: pa_free_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - winfo
    - remote_lsn
    argTypes:
    - ParallelApplyWorkerInfo*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1658
      start: 1636
    functionDepth: 4
    functionLinenumber: 1636
    functionLinenumberEnd: 1658
    functionName: pa_xact_finish
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - store_flush_position
    - Assert
    - am_leader_apply_worker
    - pa_wait_for_xact_finish
    - pa_free_worker
    - pa_unlock_stream
    linkageType: ''
    returnType: void
    signature: void pa_xact_finish(ParallelApplyWorkerInfo *winfo, XLogRecPtr remote_lsn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetTopXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:99,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/decode.c:106,1
    - Dst: ReorderBufferAssignChild
      Src: /src/postgres/src/backend/replication/logical/decode.c:108,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:110,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/replication/logical/decode.c:114,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/replication/logical/decode.c:114,1
    - Dst: RmgrData::rm_decode
      Src: /src/postgres/src/backend/replication/logical/decode.c:117,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:121,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - record
    argTypes:
    - LogicalDecodingContext*
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 124
    functionName: LogicalDecodingProcessRecord
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - ReorderBufferAssignChild
    - XLogRecGetXid
    - GetRmgr
    - RmgrData::rm_decode
    - XLogRecGetRmid
    - ReorderBufferProcessXid
    - XLogRecGetTopXid
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void LogicalDecodingProcessRecord(LogicalDecodingContext *ctx, XLogReaderState
      *record)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:133,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:135,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:135,1
    - Dst: SnapBuildSerializationPoint
      Src: /src/postgres/src/backend/replication/logical/decode.c:143,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:157,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:157,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:171,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 191
    functionName: xlog_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - SnapBuildSerializationPoint
    - XLogRecGetXid
    - ReorderBufferProcessXid
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void xlog_decode(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:196,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:198,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:198,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 207
    functionName: xlog2_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - elog
    - ReorderBufferProcessXid
    - XLogRecGetInfo
    - XLogRecGetXid
    linkageType: ''
    returnType: void
    signature: void xlog2_decode(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:218,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:224,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:237,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/replication/logical/decode.c:238,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:238,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/decode.c:240,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:241,1
    - Dst: FilterPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:251,1
    - Dst: DecodeCommit
      Src: /src/postgres/src/backend/replication/logical/decode.c:254,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:265,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/replication/logical/decode.c:266,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:266,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/decode.c:268,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:269,1
    - Dst: FilterPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:279,1
    - Dst: DecodeAbort
      Src: /src/postgres/src/backend/replication/logical/decode.c:282,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:298,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:299,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/decode.c:306,1
    - Dst: ReorderBufferAddInvalidations
      Src: /src/postgres/src/backend/replication/logical/decode.c:309,1
    - Dst: ReorderBufferXidSetCatalogChanges
      Src: /src/postgres/src/backend/replication/logical/decode.c:313,1
    - Dst: ReorderBufferImmediateInvalidation
      Src: /src/postgres/src/backend/replication/logical/decode.c:317,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:329,1
    - Dst: ParsePrepareRecord
      Src: /src/postgres/src/backend/replication/logical/decode.c:330,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:330,1
    - Dst: FilterPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:338,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:341,1
    - Dst: DecodePrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:359,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:363,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 365
    functionName: xact_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - elog
    - SnapBuildCurrentState
    - ReorderBufferImmediateInvalidation
    - ParseAbortRecord
    - XLogRecGetXid
    - DecodeCommit
    - DecodeAbort
    - ReorderBufferXidSetCatalogChanges
    - DecodePrepare
    - FilterPrepare
    - XLogRecGetInfo
    - ReorderBufferProcessXid
    - ParsePrepareRecord
    - ReorderBufferAddInvalidations
    - ParseCommitRecord
    - TransactionIdIsValid
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void xact_decode(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:375,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:377,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:377,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:383,1
    - Dst: SnapBuildProcessRunningXacts
      Src: /src/postgres/src/backend/replication/logical/decode.c:390,1
    - Dst: ReorderBufferAbortOld
      Src: /src/postgres/src/backend/replication/logical/decode.c:401,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:414,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 416
    functionName: standby_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecGetXid
    - ReorderBufferProcessXid
    - XLogRecGetInfo
    - ReorderBufferAbortOld
    - SnapBuildProcessRunningXacts
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void standby_decode(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:424,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:425,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:428,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:438,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:444,1
    - Dst: change_useless_for_repack
      Src: /src/postgres/src/backend/replication/logical/decode.c:446,1
    - Dst: DecodeMultiInsert
      Src: /src/postgres/src/backend/replication/logical/decode.c:447,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:454,1
    - Dst: SnapBuildProcessNewCid
      Src: /src/postgres/src/backend/replication/logical/decode.c:455,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:477,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 479
    functionName: heap2_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - elog
    - SnapBuildCurrentState
    - XLogRecGetXid
    - SnapBuildProcessChange
    - ReorderBufferProcessXid
    - SnapBuildProcessNewCid
    - change_useless_for_repack
    - DecodeMultiInsert
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void heap2_decode(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:487,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:488,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:491,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:501,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:507,1
    - Dst: change_useless_for_repack
      Src: /src/postgres/src/backend/replication/logical/decode.c:509,1
    - Dst: DecodeInsert
      Src: /src/postgres/src/backend/replication/logical/decode.c:510,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:520,1
    - Dst: change_useless_for_repack
      Src: /src/postgres/src/backend/replication/logical/decode.c:522,1
    - Dst: DecodeUpdate
      Src: /src/postgres/src/backend/replication/logical/decode.c:523,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:527,1
    - Dst: change_useless_for_repack
      Src: /src/postgres/src/backend/replication/logical/decode.c:529,1
    - Dst: DecodeDelete
      Src: /src/postgres/src/backend/replication/logical/decode.c:530,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:534,1
    - Dst: change_useless_for_repack
      Src: /src/postgres/src/backend/replication/logical/decode.c:536,1
    - Dst: DecodeTruncate
      Src: /src/postgres/src/backend/replication/logical/decode.c:537,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:551,1
    - Dst: change_useless_for_repack
      Src: /src/postgres/src/backend/replication/logical/decode.c:553,1
    - Dst: DecodeSpecConfirm
      Src: /src/postgres/src/backend/replication/logical/decode.c:554,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:562,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 565
    functionName: heap_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - DecodeDelete
    - SnapBuildCurrentState
    - elog
    - DecodeSpecConfirm
    - XLogRecGetXid
    - DecodeInsert
    - DecodeTruncate
    - SnapBuildProcessChange
    - ReorderBufferProcessXid
    - change_useless_for_repack
    - DecodeUpdate
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void heap_decode(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: filter_prepare_cb_wrapper
      Src: /src/postgres/src/backend/replication/logical/decode.c:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - xid
    - gid
    argTypes:
    - LogicalDecodingContext*
    - TransactionId
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 592
    functionName: FilterPrepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - filter_prepare_cb_wrapper
    linkageType: ''
    returnType: bool
    signature: "bool FilterPrepare(LogicalDecodingContext *ctx, TransactionId xid,\n\t\t\t
      \ const char *gid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: filter_by_origin_cb_wrapper
      Src: /src/postgres/src/backend/replication/logical/decode.c:600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - origin_id
    argTypes:
    - LogicalDecodingContext*
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 601
    functionName: FilterByOrigin
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - filter_by_origin_cb_wrapper
    linkageType: ''
    returnType: bool
    signature: bool FilterByOrigin(LogicalDecodingContext *ctx, ReplOriginId origin_id)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:611,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:612,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:613,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:618,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:620,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:620,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:623,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:626,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:629,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:633,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:636,1
    - Dst: SnapBuildXactNeedsSkip
      Src: /src/postgres/src/backend/replication/logical/decode.c:637,1
    - Dst: SnapBuildGetOrBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/decode.c:669,1
    - Dst: ReorderBufferQueueMessage
      Src: /src/postgres/src/backend/replication/logical/decode.c:671,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 606
    functionDepth: 2
    functionLinenumber: 606
    functionLinenumberEnd: 677
    functionName: logicalmsg_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - elog
    - SnapBuildCurrentState
    - XLogRecGetXid
    - FilterByOrigin
    - SnapBuildGetOrBuildSnapshot
    - SnapBuildXactNeedsSkip
    - SnapBuildProcessChange
    - ReorderBufferProcessXid
    - ReorderBufferQueueMessage
    - XLogRecGetOrigin
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void logicalmsg_decode(LogicalDecodingContext *ctx, XLogRecordBuffer
      *buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:694,1
    - Dst: SnapBuildCommitTxn
      Src: /src/postgres/src/backend/replication/logical/decode.c:703,1
    - Dst: DecodeTXNNeedSkip
      Src: /src/postgres/src/backend/replication/logical/decode.c:724,1
    - Dst: ReorderBufferForget
      Src: /src/postgres/src/backend/replication/logical/decode.c:728,1
    - Dst: ReorderBufferForget
      Src: /src/postgres/src/backend/replication/logical/decode.c:730,1
    - Dst: ReorderBufferCommitChild
      Src: /src/postgres/src/backend/replication/logical/decode.c:738,1
    - Dst: ReorderBufferFinishPrepared
      Src: /src/postgres/src/backend/replication/logical/decode.c:748,1
    - Dst: SnapBuildGetTwoPhaseAt
      Src: /src/postgres/src/backend/replication/logical/decode.c:749,1
    - Dst: ReorderBufferCommit
      Src: /src/postgres/src/backend/replication/logical/decode.c:755,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/decode.c:765,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 5
    argNames:
    - ctx
    - buf
    - parsed
    - xid
    - two_phase
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    - xl_xact_parsed_commit*
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 766
    functionName: DecodeCommit
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - SnapBuildGetTwoPhaseAt
    - ReorderBufferForget
    - UpdateDecodingStats
    - ReorderBufferCommit
    - ReorderBufferFinishPrepared
    - DecodeTXNNeedSkip
    - SnapBuildCommitTxn
    - XLogRecGetOrigin
    - ReorderBufferCommitChild
    linkageType: ''
    returnType: void
    signature: "void DecodeCommit(LogicalDecodingContext *ctx, XLogRecordBuffer *buf,\n\t\t\t
      xl_xact_parsed_commit *parsed, TransactionId xid,\n\t\t\t bool two_phase)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:790,1
    - Dst: ReorderBufferRememberPrepareInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:801,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:807,1
    - Dst: ReorderBufferSkipPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:809,1
    - Dst: DecodeTXNNeedSkip
      Src: /src/postgres/src/backend/replication/logical/decode.c:825,1
    - Dst: ReorderBufferSkipPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:827,1
    - Dst: ReorderBufferInvalidate
      Src: /src/postgres/src/backend/replication/logical/decode.c:828,1
    - Dst: ReorderBufferCommitChild
      Src: /src/postgres/src/backend/replication/logical/decode.c:835,1
    - Dst: ReorderBufferPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:840,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/decode.c:848,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - buf
    - parsed
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    - xl_xact_parsed_prepare*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 783
    functionDepth: 1
    functionLinenumber: 783
    functionLinenumberEnd: 849
    functionName: DecodePrepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - ReorderBufferSkipPrepare
    - SnapBuildCurrentState
    - UpdateDecodingStats
    - ReorderBufferRememberPrepareInfo
    - DecodeTXNNeedSkip
    - ReorderBufferInvalidate
    - XLogRecGetOrigin
    - ReorderBufferPrepare
    - ReorderBufferCommitChild
    linkageType: ''
    returnType: void
    signature: "void DecodePrepare(LogicalDecodingContext *ctx, XLogRecordBuffer *buf,\n\t\t\t
      \ xl_xact_parsed_prepare *parsed)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:866,1
    - Dst: DecodeTXNNeedSkip
      Src: /src/postgres/src/backend/replication/logical/decode.c:880,1
    - Dst: ReorderBufferFinishPrepared
      Src: /src/postgres/src/backend/replication/logical/decode.c:888,1
    - Dst: ReorderBufferAbort
      Src: /src/postgres/src/backend/replication/logical/decode.c:897,1
    - Dst: ReorderBufferAbort
      Src: /src/postgres/src/backend/replication/logical/decode.c:901,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/decode.c:906,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - ctx
    - buf
    - parsed
    - xid
    - two_phase
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    - xl_xact_parsed_abort*
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 858
    functionDepth: 1
    functionLinenumber: 858
    functionLinenumberEnd: 907
    functionName: DecodeAbort
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - ReorderBufferAbort
    - UpdateDecodingStats
    - DecodeTXNNeedSkip
    - ReorderBufferFinishPrepared
    - XLogRecGetOrigin
    linkageType: ''
    returnType: void
    signature: "void DecodeAbort(LogicalDecodingContext *ctx, XLogRecordBuffer *buf,\n\t\t\txl_xact_parsed_abort
      *parsed, TransactionId xid,\n\t\t\tbool two_phase)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:925,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/replication/logical/decode.c:935,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:940,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:940,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:943,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:948,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:950,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/replication/logical/decode.c:952,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:956,1
    - Dst: DecodeXLogTuple
      Src: /src/postgres/src/backend/replication/logical/decode.c:958,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:962,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:962,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 914
    functionDepth: 2
    functionLinenumber: 914
    functionLinenumberEnd: 965
    functionName: DecodeInsert
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - XLogRecGetBlockData
    - memcpy
    - XLogRecGetXid
    - FilterByOrigin
    - DecodeXLogTuple
    - ReorderBufferQueueChange
    - ReorderBufferAllocTupleBuf
    - ReorderBufferAllocChange
    - XLogRecGetOrigin
    - XLogRecGetBlockTag
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void DecodeInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:982,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/replication/logical/decode.c:985,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:990,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:990,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:993,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:995,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:996,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/replication/logical/decode.c:1003,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:1008,1
    - Dst: DecodeXLogTuple
      Src: /src/postgres/src/backend/replication/logical/decode.c:1010,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:1019,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/replication/logical/decode.c:1020,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:1024,1
    - Dst: DecodeXLogTuple
      Src: /src/postgres/src/backend/replication/logical/decode.c:1026,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1031,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1031,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 973
    functionDepth: 2
    functionLinenumber: 973
    functionLinenumberEnd: 1033
    functionName: DecodeUpdate
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - XLogRecGetBlockData
    - memcpy
    - XLogRecGetDataLen
    - XLogRecGetXid
    - FilterByOrigin
    - DecodeXLogTuple
    - ReorderBufferQueueChange
    - ReorderBufferAllocTupleBuf
    - ReorderBufferAllocChange
    - XLogRecGetOrigin
    - XLogRecGetBlockTag
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:1048,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/replication/logical/decode.c:1060,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1065,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1065,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1068,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1075,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1077,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/replication/logical/decode.c:1082,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/decode.c:1085,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/replication/logical/decode.c:1085,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:1088,1
    - Dst: DecodeXLogTuple
      Src: /src/postgres/src/backend/replication/logical/decode.c:1090,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1096,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1096,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1040
    functionDepth: 2
    functionLinenumber: 1040
    functionLinenumberEnd: 1098
    functionName: DecodeDelete
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - XLogRecGetDataLen
    - memcpy
    - XLogRecGetXid
    - FilterByOrigin
    - Assert
    - DecodeXLogTuple
    - ReorderBufferQueueChange
    - ReorderBufferAllocTupleBuf
    - ReorderBufferAllocChange
    - XLogRecGetOrigin
    - XLogRecGetBlockTag
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void DecodeDelete(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:1110,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1117,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1117,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1120,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1122,1
    - Dst: ReorderBufferAllocRelids
      Src: /src/postgres/src/backend/replication/logical/decode.c:1128,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1130,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1132,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1132,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1103
    functionDepth: 2
    functionLinenumber: 1103
    functionLinenumberEnd: 1134
    functionName: DecodeTruncate
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - memcpy
    - XLogRecGetXid
    - FilterByOrigin
    - ReorderBufferQueueChange
    - ReorderBufferAllocChange
    - ReorderBufferAllocRelids
    - XLogRecGetOrigin
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void DecodeTruncate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:1152,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/replication/logical/decode.c:1162,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1167,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1167,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/replication/logical/decode.c:1174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/decode.c:1175,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1186,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1188,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1190,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/replication/logical/decode.c:1192,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:1197,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1203,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/decode.c:1212,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1214,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1230,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/decode.c:1236,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1141
    functionDepth: 2
    functionLinenumber: 1141
    functionLinenumberEnd: 1237
    functionName: DecodeMultiInsert
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - memcpy
    - XLogRecGetXid
    - FilterByOrigin
    - Assert
    - ReorderBufferQueueChange
    - ReorderBufferAllocTupleBuf
    - SHORTALIGN
    - XLogRecGetData
    - ReorderBufferAllocChange
    - memset
    - ItemPointerSetInvalid
    - XLogRecGetOrigin
    - XLogRecGetBlockTag
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void DecodeMultiInsert(LogicalDecodingContext *ctx, XLogRecordBuffer
      *buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/replication/logical/decode.c:1253,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1258,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1258,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1261,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1263,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1265,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1269,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1245
    functionDepth: 2
    functionLinenumber: 1245
    functionLinenumberEnd: 1271
    functionName: DecodeSpecConfirm
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - memcpy
    - XLogRecGetXid
    - FilterByOrigin
    - ReorderBufferQueueChange
    - ReorderBufferAllocChange
    - XLogRecGetOrigin
    - XLogRecGetBlockTag
    linkageType: ''
    returnType: void
    signature: void DecodeSpecConfirm(LogicalDecodingContext *ctx, XLogRecordBuffer
      *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/decode.c:1288,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1294,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1300,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/decode.c:1302,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - data
    - len
    - tuple
    argTypes:
    - char*
    - Size
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1281
    functionDepth: 2
    functionLinenumber: 1281
    functionLinenumberEnd: 1311
    functionName: DecodeXLogTuple
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 3
    functionsReached:
    - Assert
    - ItemPointerSetInvalid
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: void DecodeXLogTuple(char *data, Size len, HeapTuple tuple)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SnapBuildXactNeedsSkip
      Src: /src/postgres/src/backend/replication/logical/decode.c:1329,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1331,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - buf
    - txn_dbid
    - origin_id
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    - Oid
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1325
    functionDepth: 2
    functionLinenumber: 1325
    functionLinenumberEnd: 1346
    functionName: DecodeTXNNeedSkip
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 3
    functionsReached:
    - FilterByOrigin
    - SnapBuildXactNeedsSkip
    linkageType: ''
    returnType: bool
    signature: "bool DecodeTXNNeedSkip(LogicalDecodingContext *ctx, XLogRecordBuffer
      *buf,\n\t\t\t\t  Oid txn_dbid, ReplOriginId origin_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:210,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:212,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/origin.c:214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:215,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:216,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - check_origins
    - recoveryOK
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 218
    functionName: replorigin_check_prerequisites
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - RecoveryInProgress
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void replorigin_check_prerequisites(bool check_origins, bool recoveryOK)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/logical/origin.c:228,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/logical/origin.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 230
    functionName: IsReservedOriginName
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool IsReservedOriginName(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:250,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/origin.c:252,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:253,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/origin.c:255,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/origin.c:257,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - roname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 266
    functionName: replorigin_by_name
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - errcode
    - HeapTupleIsValid
    - ereport
    - ReleaseSysCache
    - CStringGetTextDatum
    - GETSTRUCT
    - errmsg
    linkageType: ''
    returnType: ReplOriginId
    signature: ReplOriginId replorigin_by_name(const char *roname, bool missing_ok)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/logical/origin.c:289,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:292,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/origin.c:293,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:296,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:298,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/origin.c:298,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/replication/logical/origin.c:315,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/origin.c:317,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:328,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:328,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/origin.c:336,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/replication/logical/origin.c:338,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:341,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/replication/logical/origin.c:343,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:348,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/replication/logical/origin.c:348,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/replication/logical/origin.c:350,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/origin.c:358,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:360,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/logical/origin.c:363,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/origin.c:363,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:364,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/origin.c:365,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/origin.c:371,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:374,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:375,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:376,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/replication/logical/origin.c:378,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 1
    argNames:
    - roname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 273
    functionDepth: 7
    functionLinenumber: 273
    functionLinenumberEnd: 380
    functionName: replorigin_create
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - errcode
    - heap_form_tuple
    - table_close
    - CatalogTupleInsert
    - systable_endscan
    - InitDirtySnapshot
    - heap_freetuple
    - Assert
    - HeapTupleIsValid
    - RelationGetDescr
    - CommandCounterIncrement
    - table_open
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - systable_beginscan
    - IsTransactionState
    - ereport
    - CHECK_FOR_INTERRUPTS
    - strlen
    - memset
    - ScanKeyInit
    - CStringGetTextDatum
    - errdetail
    - systable_getnext
    linkageType: ''
    returnType: ReplOriginId
    signature: ReplOriginId replorigin_create(const char *roname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:394,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:408,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:409,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:411,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:414,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:426,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/replication/logical/origin.c:428,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:437,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/replication/logical/origin.c:438,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:439,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:449,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/logical/origin.c:450,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - roident
    - nowait
    argTypes:
    - ReplOriginId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 385
    functionDepth: 3
    functionLinenumber: 385
    functionLinenumberEnd: 451
    functionName: replorigin_state_clear
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - LWLockAcquire
    - errcode
    - XLogBeginInsert
    - ConditionVariableSleep
    - ereport
    - XLogRegisterData
    - ConditionVariableCancelSleep
    - errmsg
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void replorigin_state_clear(ReplOriginId roident, bool nowait)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:465,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/origin.c:465,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/origin.c:467,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:469,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/origin.c:472,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/origin.c:475,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:475,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:476,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/origin.c:479,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/origin.c:485,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/origin.c:487,1
    - Dst: replorigin_state_clear
      Src: /src/postgres/src/backend/replication/logical/origin.c:491,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/replication/logical/origin.c:496,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/origin.c:497,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/origin.c:499,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/origin.c:502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - name
    - missing_ok
    - nowait
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 458
    functionDepth: 7
    functionLinenumber: 458
    functionLinenumberEnd: 503
    functionName: replorigin_drop_by_name
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - Assert
    - IsTransactionState
    - HeapTupleIsValid
    - CommandCounterIncrement
    - LockSharedObject
    - table_open
    - replorigin_state_clear
    - replorigin_by_name
    - CatalogTupleDelete
    - ReleaseSysCache
    - UnlockSharedObject
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: void replorigin_drop_by_name(const char *name, bool missing_ok, bool
      nowait)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:518,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:518,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:520,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/origin.c:522,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:523,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:525,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/origin.c:527,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:528,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/origin.c:529,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:538,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:539,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - roident
    - missing_ok
    - roname
    argTypes:
    - ReplOriginId
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 545
    functionName: replorigin_by_oid
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 2
    functionsReached:
    - SearchSysCache1
    - errcode
    - Assert
    - HeapTupleIsValid
    - ereport
    - ReleaseSysCache
    - GETSTRUCT
    - text_to_cstring
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool replorigin_by_oid(ReplOriginId roident, bool missing_ok, char
      **roname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/logical/origin.c:561,1
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/logical/origin.c:562,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/replication/logical/origin.c:563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 568
    functionName: ReplicationOriginShmemRequest
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - mul_size
    - add_size
    linkageType: ''
    returnType: void
    signature: void ReplicationOriginShmemRequest(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/replication/logical/origin.c:582,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/logical/origin.c:584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 586
    functionName: ReplicationOriginShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - ConditionVariableInit
    - LWLockInitialize
    linkageType: ''
    returnType: void
    signature: void ReplicationOriginShmemInit(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 595
    functionName: ReplicationOriginShmemAttach
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReplicationOriginShmemAttach(void *arg)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:626,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/origin.c:629,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:630,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:631,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:632,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/origin.c:639,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:642,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:643,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:644,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/origin.c:649,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:654,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:655,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:656,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:659,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:662,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/origin.c:675,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:677,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:684,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/origin.c:687,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/origin.c:690,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:696,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:697,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:698,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:702,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:705,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:708,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/origin.c:710,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:715,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:717,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/origin.c:721,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:722,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:723,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:724,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/replication/logical/origin.c:728,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 613
    functionDepth: 5
    functionLinenumber: 613
    functionLinenumberEnd: 729
    functionName: CheckPointReplicationOrigin
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 1
    functionsReached:
    - OpenTransientFile
    - LWLockAcquire
    - unlink
    - FIN_CRC32C
    - COMP_CRC32C
    - ereport
    - write
    - XLogFlush
    - INIT_CRC32C
    - memset
    - errmsg
    - LWLockRelease
    - durable_rename
    - CloseTransientFile
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void CheckPointReplicationOrigin(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:754,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:761,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/origin.c:763,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/origin.c:765,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:774,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:775,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:776,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/logical/origin.c:780,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:784,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:785,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:786,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:789,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:790,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:791,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:794,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:797,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:798,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/logical/origin.c:808,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:812,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:813,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:814,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/origin.c:821,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:827,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:828,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:829,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:833,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:836,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:837,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:838,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:845,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:846,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/origin.c:848,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:852,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:854,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:855,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:856,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/origin.c:859,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:860,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:861,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:862,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 864
    functionName: StartupReplicationOrigin
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 1
    functionsReached:
    - elog
    - OpenTransientFile
    - memcpy
    - errcode
    - Assert
    - FIN_CRC32C
    - COMP_CRC32C
    - ereport
    - LSN_FORMAT_ARGS
    - INIT_CRC32C
    - errmsg
    - CloseTransientFile
    - errcode_for_file_access
    - read
    linkageType: ''
    returnType: void
    signature: void StartupReplicationOrigin(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/origin.c:869,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/origin.c:876,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/replication/logical/origin.c:878,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/origin.c:889,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/origin.c:908,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 910
    functionName: replorigin_redo
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - elog
    - replorigin_advance
    - XLogRecGetInfo
    - XLogRecGetData
    linkageType: ''
    returnType: void
    signature: void replorigin_redo(XLogReaderState *record)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:936,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:950,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:977,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:982,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:983,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:985,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:988,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:996,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:997,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:998,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/origin.c:1000,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1005,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1007,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1007,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1008,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1012,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1027,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/replication/logical/origin.c:1028,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1030,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1043,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1046,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1052,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 5
    argNames:
    - node
    - remote_commit
    - local_commit
    - go_backward
    - wal_log
    argTypes:
    - ReplOriginId
    - XLogRecPtr
    - XLogRecPtr
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 927
    functionDepth: 3
    functionLinenumber: 927
    functionLinenumberEnd: 1053
    functionName: replorigin_advance
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 4
    functionsReached:
    - XLogRecPtrIsValid
    - XLogInsert
    - LWLockAcquire
    - errcode
    - Assert
    - XLogBeginInsert
    - ereport
    - XLogRegisterData
    - errhint
    - errmsg
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: "void replorigin_advance(ReplOriginId node,\n\t\t\t\t   XLogRecPtr
      remote_commit, XLogRecPtr local_commit,\n\t\t\t\t   bool go_backward, bool wal_log)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1064,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1074,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1079,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1085,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1087,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/origin.c:1088,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - node
    - flush
    argTypes:
    - ReplOriginId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1056
    functionDepth: 5
    functionLinenumber: 1056
    functionLinenumberEnd: 1091
    functionName: replorigin_get_progress
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - XLogFlush
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr replorigin_get_progress(ReplOriginId node, bool flush)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1099,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1104,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1119,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/logical/origin.c:1121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1122
    functionName: replorigin_session_reset_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - Assert
    - ConditionVariableBroadcast
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void replorigin_session_reset_internal(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_session_reset_internal
      Src: /src/postgres/src/backend/replication/logical/origin.c:1134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1128
    functionDepth: 2
    functionLinenumber: 1128
    functionLinenumberEnd: 1135
    functionName: ReplicationOriginExitCleanup
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - replorigin_session_reset_internal
    linkageType: ''
    returnType: void
    signature: void ReplicationOriginExitCleanup(int code, Datum arg)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/origin.c:1164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1173,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1176,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1203,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1204,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1205,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1217,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1218,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1251,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1256,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1257,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1258,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/origin.c:1260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1263,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1263,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1264,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1283,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1288,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/logical/origin.c:1291,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 51
    argCount: 2
    argNames:
    - node
    - acquired_by
    argTypes:
    - ReplOriginId
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1155
    functionDepth: 1
    functionLinenumber: 1155
    functionLinenumberEnd: 1292
    functionName: replorigin_session_setup
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - LWLockAcquire
    - errcode
    - Assert
    - ereport
    - errhint
    - ConditionVariableBroadcast
    - errmsg
    - LWLockRelease
    - on_shmem_exit
    linkageType: ''
    returnType: void
    signature: void replorigin_session_setup(ReplOriginId node, int acquired_by)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1303,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1306,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1307,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1308,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1318,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1320,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/origin.c:1322,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/origin.c:1323,1
    - Dst: replorigin_session_reset_internal
      Src: /src/postgres/src/backend/replication/logical/origin.c:1325,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1300
    functionDepth: 2
    functionLinenumber: 1300
    functionLinenumberEnd: 1326
    functionName: replorigin_session_reset
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - replorigin_session_reset_internal
    - errhint
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: void replorigin_session_reset(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1338,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1340,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - remote_commit
    - local_commit
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1334
    functionDepth: 1
    functionLinenumber: 1334
    functionLinenumberEnd: 1346
    functionName: replorigin_session_advance
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 5
    functionsReached:
    - Assert
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void replorigin_session_advance(XLogRecPtr remote_commit, XLogRecPtr
      local_commit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1358,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1360,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1363,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1365,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/origin.c:1366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - flush
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1352
    functionDepth: 5
    functionLinenumber: 1352
    functionLinenumberEnd: 1369
    functionName: replorigin_session_get_progress
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - LWLockAcquire
    - Assert
    - XLogFlush
    - LWLockRelease
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr replorigin_session_get_progress(bool flush)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - clear_origin
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1376
    functionDepth: 0
    functionLinenumber: 1376
    functionLinenumberEnd: 1383
    functionName: replorigin_xact_clear
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void replorigin_xact_clear(bool clear_origin)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1403,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1405,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1405,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1405,1
    - Dst: IsReservedName
      Src: /src/postgres/src/backend/replication/logical/origin.c:1411,1
    - Dst: IsReservedOriginName
      Src: /src/postgres/src/backend/replication/logical/origin.c:1411,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1414,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/origin.c:1416,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/replication/logical/origin.c:1424,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/origin.c:1425,1
    - Dst: replorigin_create
      Src: /src/postgres/src/backend/replication/logical/origin.c:1428,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/origin.c:1430,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1432,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1397
    functionDepth: 8
    functionLinenumber: 1397
    functionLinenumberEnd: 1433
    functionName: pg_replication_origin_create
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_DATUM
    - errcode
    - IsReservedName
    - pfree
    - ereport
    - replorigin_check_prerequisites
    - replorigin_create
    - IsReservedOriginName
    - PG_RETURN_OID
    - strncmp
    - text_to_cstring
    - errmsg
    - errdetail
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_create(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1443,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1445,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1445,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1445,1
    - Dst: replorigin_drop_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1447,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/origin.c:1449,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1438
    functionDepth: 8
    functionLinenumber: 1438
    functionLinenumberEnd: 1452
    functionName: pg_replication_origin_drop
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_RETURN_VOID
    - pfree
    - replorigin_check_prerequisites
    - replorigin_drop_by_name
    - text_to_cstring
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_drop(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1463,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1465,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1465,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1465,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1466,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/origin.c:1468,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1470,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1471,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1457
    functionDepth: 2
    functionLinenumber: 1457
    functionLinenumberEnd: 1473
    functionName: pg_replication_origin_oid
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - pfree
    - replorigin_check_prerequisites
    - PG_RETURN_OID
    - PG_RETURN_NULL
    - replorigin_by_name
    - text_to_cstring
    - OidIsValid
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_oid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1485,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1487,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1487,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1487,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1488,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/replication/logical/origin.c:1489,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/origin.c:1490,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/origin.c:1494,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1478
    functionDepth: 2
    functionLinenumber: 1478
    functionLinenumberEnd: 1497
    functionName: pg_replication_origin_session_setup
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_RETURN_VOID
    - pfree
    - replorigin_session_setup
    - replorigin_check_prerequisites
    - replorigin_by_name
    - text_to_cstring
    - PG_GETARG_INT32
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_session_setup(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1505,1
    - Dst: replorigin_session_reset
      Src: /src/postgres/src/backend/replication/logical/origin.c:1507,1
    - Dst: replorigin_xact_clear
      Src: /src/postgres/src/backend/replication/logical/origin.c:1509,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1502
    functionDepth: 3
    functionLinenumber: 1502
    functionLinenumberEnd: 1512
    functionName: pg_replication_origin_session_reset
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - replorigin_session_reset
    - replorigin_check_prerequisites
    - replorigin_xact_clear
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_session_reset(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1520,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1517
    functionDepth: 2
    functionLinenumber: 1517
    functionLinenumberEnd: 1523
    functionName: pg_replication_origin_session_is_setup
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - replorigin_check_prerequisites
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_session_is_setup(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1537,1
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1539,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1542,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1543,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1544,1
    - Dst: replorigin_session_get_progress
      Src: /src/postgres/src/backend/replication/logical/origin.c:1546,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1548,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1549,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/replication/logical/origin.c:1551,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1533
    functionDepth: 6
    functionLinenumber: 1533
    functionLinenumberEnd: 1552
    functionName: pg_replication_origin_session_progress
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - PG_GETARG_BOOL
    - errcode
    - PG_RETURN_LSN
    - ereport
    - replorigin_check_prerequisites
    - errmsg
    - PG_RETURN_NULL
    - replorigin_session_get_progress
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_session_progress(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/replication/logical/origin.c:1557,1
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1559,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1562,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1563,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1564,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/replication/logical/origin.c:1567,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1569,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1554
    functionDepth: 2
    functionLinenumber: 1554
    functionLinenumberEnd: 1570
    functionName: pg_replication_origin_xact_setup
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - errcode
    - PG_GETARG_TIMESTAMPTZ
    - ereport
    - replorigin_check_prerequisites
    - errmsg
    - PG_GETARG_LSN
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_xact_setup(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1575,1
    - Dst: replorigin_xact_clear
      Src: /src/postgres/src/backend/replication/logical/origin.c:1578,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1581
      start: 1572
    functionDepth: 2
    functionLinenumber: 1572
    functionLinenumberEnd: 1581
    functionName: pg_replication_origin_xact_reset
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - replorigin_check_prerequisites
    - replorigin_xact_clear
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_xact_reset(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/replication/logical/origin.c:1587,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/replication/logical/origin.c:1588,1
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1591,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1594,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1596,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1596,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/replication/logical/origin.c:1603,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1606,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1609
      start: 1584
    functionDepth: 4
    functionLinenumber: 1584
    functionLinenumberEnd: 1609
    functionName: pg_replication_origin_advance
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - replorigin_advance
    - replorigin_check_prerequisites
    - replorigin_by_name
    - LockRelationOid
    - text_to_cstring
    - PG_GETARG_LSN
    - UnlockRelationOid
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_advance(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1627,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1629,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1629,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1629,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1630,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1633,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1633,1
    - Dst: replorigin_get_progress
      Src: /src/postgres/src/backend/replication/logical/origin.c:1635,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1637,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1638,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/replication/logical/origin.c:1640,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1641
      start: 1619
    functionDepth: 6
    functionLinenumber: 1619
    functionLinenumberEnd: 1641
    functionName: pg_replication_origin_progress
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - XLogRecPtrIsValid
    - PG_GETARG_BOOL
    - Assert
    - PG_RETURN_LSN
    - replorigin_check_prerequisites
    - replorigin_get_progress
    - PG_RETURN_NULL
    - replorigin_by_name
    - text_to_cstring
    - OidIsValid
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum pg_replication_origin_progress(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1652,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/replication/logical/origin.c:1654,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1657,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/origin.c:1677,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/origin.c:1678,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:1680,1
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1687,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:1690,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1694,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:1696,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:1699,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1702,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/replication/logical/origin.c:1704,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1708,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1644
    functionDepth: 2
    functionLinenumber: 1644
    functionLinenumberEnd: 1713
    functionName: pg_show_replication_origin_status
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - InitMaterializedSRF
    - tuplestore_putvalues
    - replorigin_by_oid
    - replorigin_check_prerequisites
    - memset
    - CStringGetTextDatum
    - LSNGetDatum
    - LWLockRelease
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_show_replication_origin_status(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:201,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:204,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:206,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:216,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 6
    argNames:
    - reorder
    - xmin_horizon
    - start_lsn
    - need_full_snapshot
    - in_slot_creation
    - two_phase_at
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - bool
    - bool
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 231
    functionName: AllocateSnapshotBuilder
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - MemoryContextSwitchTo
    - palloc0_array
    - AllocSetContextCreate
    linkageType: ''
    returnType: SnapBuild
    signature: "SnapBuild *\nAllocateSnapshotBuilder(ReorderBuffer *reorder,\n\t\t\t\t\t\tTransactionId
      xmin_horizon,\n\t\t\t\t\t\tXLogRecPtr start_lsn,\n\t\t\t\t\t\tbool need_full_snapshot,\n\t\t\t\t\t\tbool
      in_slot_creation,\n\t\t\t\t\t\tXLogRecPtr two_phase_at)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:244,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 250
    functionName: FreeSnapshotBuilder
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    - SnapBuildSnapDecRefcount
    linkageType: ''
    returnType: void
    signature: void FreeSnapshotBuilder(SnapBuild *builder)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:259,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:262,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:263,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:265,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:269,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:272,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - snap
    argTypes:
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 275
    functionName: SnapBuildFreeSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - Assert
    - pfree
    - elog
    linkageType: ''
    returnType: void
    signature: void SnapBuildFreeSnapshot(Snapshot snap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 284
    functionName: SnapBuildCurrentState
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: SnapBuildState
    signature: SnapBuildState SnapBuildCurrentState(SnapBuild *builder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: SnapBuildGetTwoPhaseAt
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr SnapBuildGetTwoPhaseAt(SnapBuild *builder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - builder
    - ptr
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 302
    functionName: SnapBuildSetTwoPhaseAt
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SnapBuildSetTwoPhaseAt(SnapBuild *builder, XLogRecPtr ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - builder
    - ptr
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 311
    functionName: SnapBuildXactNeedsSkip
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SnapBuildXactNeedsSkip(SnapBuild *builder, XLogRecPtr ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - snap
    argTypes:
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 323
    functionName: SnapBuildSnapIncRefcount
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SnapBuildSnapIncRefcount(Snapshot snap)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:338,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:339,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:344,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:348,1
    - Dst: SnapBuildFreeSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - snap
    argTypes:
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 331
    functionDepth: 2
    functionLinenumber: 331
    functionLinenumberEnd: 353
    functionName: SnapBuildSnapDecRefcount
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - Assert
    - SnapBuildFreeSnapshot
    - elog
    linkageType: ''
    returnType: void
    signature: void SnapBuildSnapDecRefcount(Snapshot snap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:369,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:400,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:400,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:401,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:401,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:410,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 434
    functionName: SnapBuildBuildSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - qsort
    - memcpy
    - Assert
    - TransactionIdIsNormal
    - MemoryContextAllocZero
    linkageType: ''
    returnType: Snapshot
    signature: Snapshot SnapBuildBuildSnapshot(SnapBuild *builder)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:453,1
    - Dst: InvalidateCatalogSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:456,1
    - Dst: HaveRegisteredOrActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:457,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:459,1
    - Dst: HistoricSnapshotActive
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:459,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:462,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:465,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:468,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:469,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:471,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:482,1
    - Dst: GetOldestSafeDecodingTransactionId
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:483,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:484,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:486,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:487,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:493,1
    - Dst: GetMaxSnapshotXidCount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:493,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:501,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:509,1
    - Dst: GetMaxSnapshotXidCount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:514,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:515,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:516,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:517,1
    - Dst: TransactionIdAdvance
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:522,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 443
    functionDepth: 2
    functionLinenumber: 443
    functionLinenumberEnd: 531
    functionName: SnapBuildInitialSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - errcode
    - palloc_array
    - GetMaxSnapshotXidCount
    - NormalTransactionIdPrecedes
    - elog
    - Assert
    - errmsg
    - HaveRegisteredOrActiveSnapshot
    - bsearch
    - ereport
    - HistoricSnapshotActive
    - GetOldestSafeDecodingTransactionId
    - InvalidateCatalogSnapshot
    - TransactionIdAdvance
    - TransactionIdFollows
    - LWLockRelease
    - SnapBuildBuildSnapshot
    - TransactionIdIsValid
    linkageType: ''
    returnType: Snapshot
    signature: Snapshot SnapBuildInitialSnapshot(SnapBuild *builder)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:547,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:548,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:551,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:556,1
    - Dst: SnapBuildInitialSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:562,1
    - Dst: ExportSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:568,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:570,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:571,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 541
    functionDepth: 3
    functionLinenumber: 541
    functionLinenumberEnd: 576
    functionName: SnapBuildExportSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - elog
    - errmsg_plural
    - ExportSnapshot
    - IsTransactionOrTransactionBlock
    - ereport
    - SnapBuildInitialSnapshot
    - StartTransactionCommand
    linkageType: ''
    returnType: char
    signature: 'char *

      SnapBuildExportSnapshot(SnapBuild *builder)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:584,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:589,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 581
    functionDepth: 2
    functionLinenumber: 581
    functionLinenumberEnd: 595
    functionName: SnapBuildGetOrBuildSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - Assert
    - SnapBuildSnapIncRefcount
    - SnapBuildBuildSnapshot
    linkageType: ''
    returnType: Snapshot
    signature: Snapshot SnapBuildGetOrBuildSnapshot(SnapBuild *builder)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:611,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:612,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 602
    functionDepth: 2
    functionLinenumber: 602
    functionLinenumberEnd: 624
    functionName: SnapBuildClearExportedSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - elog
    - IsTransactionState
    - AbortCurrentTransaction
    linkageType: ''
    returnType: void
    signature: void SnapBuildClearExportedSnapshot(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 634
    functionName: SnapBuildResetExportedSnapshotState
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SnapBuildResetExportedSnapshotState(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:657,1
    - Dst: ReorderBufferXidHasBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:664,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:669,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:671,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:678,1
    - Dst: ReorderBufferSetBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:679,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - builder
    - xid
    - lsn
    argTypes:
    - SnapBuild*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 641
    functionDepth: 2
    functionLinenumber: 641
    functionLinenumberEnd: 684
    functionName: SnapBuildProcessChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 3
    functionsReached:
    - TransactionIdPrecedes
    - ReorderBufferXidHasBaseSnapshot
    - SnapBuildSnapIncRefcount
    - SnapBuildBuildSnapshot
    - ReorderBufferSetBaseSnapshot
    linkageType: ''
    returnType: bool
    signature: bool SnapBuildProcessChange(SnapBuild *builder, TransactionId xid,
      XLogRecPtr lsn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferXidSetCatalogChanges
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:701,1
    - Dst: ReorderBufferAddNewTupleCids
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:703,1
    - Dst: Max
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:711,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:719,1
    - Dst: ReorderBufferAddNewCommandId
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:722,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - builder
    - xid
    - lsn
    - xlrec
    argTypes:
    - SnapBuild*
    - TransactionId
    - XLogRecPtr
    - xl_heap_new_cid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 723
    functionName: SnapBuildProcessNewCid
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - elog
    - ReorderBufferAddNewTupleCids
    - ReorderBufferAddNewCommandId
    - Max
    - ReorderBufferXidSetCatalogChanges
    linkageType: ''
    returnType: void
    signature: "void SnapBuildProcessNewCid(SnapBuild *builder, TransactionId xid,\n\t\t\t\t\t
      \  XLogRecPtr lsn, xl_heap_new_cid *xlrec)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:745,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:747,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:749,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:749,1
    - Dst: ReorderBufferXidHasBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:770,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:777,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:780,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:781,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:787,1
    - Dst: ReorderBufferAddSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:788,1
    - Dst: ReorderBufferGetInvalidations
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:813,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:818,1
    - Dst: ReorderBufferAddDistributedInvalidations
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:820,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - builder
    - lsn
    - xid
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 826
    functionName: SnapBuildDistributeSnapshotAndInval
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - elog
    - ReorderBufferAddDistributedInvalidations
    - Assert
    - dlist_container
    - LSN_FORMAT_ARGS
    - rbtxn_is_prepared
    - ReorderBufferXidHasBaseSnapshot
    - SnapBuildSnapIncRefcount
    - ReorderBufferGetInvalidations
    - ReorderBufferAddSnapshot
    - TransactionIdIsValid
    - dlist_foreach
    linkageType: ''
    returnType: void
    signature: void SnapBuildDistributeSnapshotAndInval(SnapBuild *builder, XLogRecPtr
      lsn, TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:834,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:834,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:840,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - builder
    - xid
    argTypes:
    - SnapBuild*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 854
    functionName: SnapBuildAddCommittedTxn
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - Assert
    - elog
    - TransactionIdIsValid
    - repalloc_array
    linkageType: ''
    returnType: void
    signature: void SnapBuildAddCommittedTxn(SnapBuild *builder, TransactionId xid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:874,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:879,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:885,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:893,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:896,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:901,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:915,1
    - Dst: memmove
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:924,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:929,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:933,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 866
    functionDepth: 2
    functionLinenumber: 866
    functionLinenumberEnd: 938
    functionName: SnapBuildPurgeOlderTxn
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - elog
    - memcpy
    - MemoryContextAlloc
    - pfree
    - memmove
    - TransactionIdIsNormal
    - TransactionIdFollowsOrEquals
    - NormalTransactionIdPrecedes
    linkageType: ''
    returnType: void
    signature: void SnapBuildPurgeOlderTxn(SnapBuild *builder)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:961,1
    - Dst: SnapBuildXidHasCatalogChanges
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:993,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:998,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1001,1
    - Dst: NormalTransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1003,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1015,1
    - Dst: NormalTransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1016,1
    - Dst: SnapBuildXidHasCatalogChanges
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1022,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1024,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1028,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1033,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1036,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1040,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1042,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1051,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1059,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1060,1
    - Dst: TransactionIdAdvance
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1063,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1082,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1084,1
    - Dst: ReorderBufferXidHasBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1087,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1089,1
    - Dst: ReorderBufferSetBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1090,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1095,1
    - Dst: SnapBuildDistributeSnapshotAndInval
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1101,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 64
    argCount: 6
    argNames:
    - builder
    - lsn
    - xid
    - nsubxacts
    - subxacts
    - xinfo
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    - TransactionId
    - int
    - TransactionId*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 943
    functionDepth: 3
    functionLinenumber: 943
    functionLinenumberEnd: 1103
    functionName: SnapBuildCommitTxn
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - elog
    - TransactionIdPrecedes
    - SnapBuildSnapDecRefcount
    - Assert
    - NormalTransactionIdFollows
    - TransactionIdAdvance
    - ReorderBufferXidHasBaseSnapshot
    - SnapBuildSnapIncRefcount
    - SnapBuildDistributeSnapshotAndInval
    - SnapBuildAddCommittedTxn
    - ReorderBufferSetBaseSnapshot
    - SnapBuildXidHasCatalogChanges
    - TransactionIdFollowsOrEquals
    - TransactionIdIsValid
    - SnapBuildBuildSnapshot
    linkageType: ''
    returnType: void
    signature: "void SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId
      xid,\n\t\t\t\t   int nsubxacts, TransactionId *subxacts, uint32 xinfo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferXidHasCatalogChanges
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1113,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - builder
    - xid
    - xinfo
    argTypes:
    - SnapBuild*
    - TransactionId
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1109
    functionDepth: 1
    functionLinenumber: 1109
    functionLinenumberEnd: 1127
    functionName: SnapBuildXidHasCatalogChanges
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - ReorderBufferXidHasCatalogChanges
    - bsearch
    linkageType: ''
    returnType: bool
    signature: "bool SnapBuildXidHasCatalogChanges(SnapBuild *builder, TransactionId
      xid,\n\t\t\t\t\t\t\t  uint32 xinfo)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SnapBuildFindSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1153,1
    - Dst: SnapBuildSerialize
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1157,1
    - Dst: SnapBuildPurgeOlderTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1174,1
    - Dst: ReorderBufferGetOldestXmin
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1185,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1188,1
    - Dst: LogicalIncreaseXminForSlot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1190,1
    - Dst: ReorderBufferGetOldestTXN
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1211,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1217,1
    - Dst: LogicalIncreaseRestartDecodingForSlot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1218,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1225,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1226,1
    - Dst: LogicalIncreaseRestartDecodingForSlot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1227,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - builder
    - lsn
    - running
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    - xl_running_xacts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1139
    functionDepth: 3
    functionLinenumber: 1139
    functionLinenumberEnd: 1229
    functionName: SnapBuildProcessRunningXacts
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - elog
    - SnapBuildSerialize
    - XLogRecPtrIsValid
    - SnapBuildPurgeOlderTxn
    - LogicalIncreaseRestartDecodingForSlot
    - SnapBuildFindSnapshot
    - ReorderBufferGetOldestTXN
    - ReorderBufferGetOldestXmin
    - LogicalIncreaseXminForSlot
    linkageType: ''
    returnType: void
    signature: void SnapBuildProcessRunningXacts(SnapBuild *builder, XLogRecPtr lsn,
      xl_running_xacts *running)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1273,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1274,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1277,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1278,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1279,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1280,1
    - Dst: SnapBuildWaitSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1284,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1310,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1311,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1311,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1316,1
    - Dst: LogicalDecodingLogLevel
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1316,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1317,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1318,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1319,1
    - Dst: SnapBuildRestore
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1362,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1363,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1365,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1366,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1367,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1368,1
    - Dst: SnapBuildWaitSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1371,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1383,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1390,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1391,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1392,1
    - Dst: SnapBuildWaitSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1395,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1407,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1413,1
    - Dst: LogicalDecodingLogLevel
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1414,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1415,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1416,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 3
    argNames:
    - builder
    - lsn
    - running
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    - xl_running_xacts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1241
    functionDepth: 2
    functionLinenumber: 1241
    functionLinenumberEnd: 1425
    functionName: SnapBuildFindSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - errmsg_internal
    - Assert
    - SnapBuildRestore
    - ereport
    - LogicalDecodingLogLevel
    - SnapBuildWaitSnapshot
    - TransactionIdIsNormal
    - TransactionIdPrecedesOrEquals
    - errmsg
    - errdetail
    - errdetail_internal
    - LSN_FORMAT_ARGS
    - NormalTransactionIdPrecedes
    linkageType: ''
    returnType: bool
    signature: bool SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts
      *running)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1452,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1453,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1455,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1458,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1467,1
    - Dst: LogStandbySnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1469,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - running
    - cutoff
    argTypes:
    - xl_running_xacts*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1438
    functionDepth: 3
    functionLinenumber: 1438
    functionLinenumberEnd: 1471
    functionName: SnapBuildWaitSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - elog
    - TransactionIdIsCurrentTransactionId
    - XactLockTableWait
    - TransactionIdFollows
    - LogStandbySnapshot
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void SnapBuildWaitSnapshot(xl_running_xacts *running, TransactionId
      cutoff)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SnapBuildRestore
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1491,1
    - Dst: SnapBuildSerialize
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - builder
    - lsn
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1487
    functionDepth: 1
    functionLinenumber: 1487
    functionLinenumberEnd: 1494
    functionName: SnapBuildSerializationPoint
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - SnapBuildSerialize
    - SnapBuildRestore
    linkageType: ''
    returnType: void
    signature: void SnapBuildSerializationPoint(SnapBuild *builder, XLogRecPtr lsn)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1516,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1517,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1528,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1536,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1538,1
    - Dst: stat
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1545,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1548,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1549,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1550,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1563,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1564,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1577,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1580,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1582,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1590,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1591,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1592,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1593,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1595,1
    - Dst: ReorderBufferGetCatalogChangesXacts
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1598,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1599,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1604,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1609,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1610,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1615,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1625,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1633,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1634,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1642,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1643,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1647,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1650,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1653,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1654,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1655,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1658,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1659,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1663,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1667,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1668,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1669,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1671,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1684,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1685,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1689,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1691,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1692,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1693,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1695,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1697,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1698,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1699,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1700,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1702,1
    - Dst: rename
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1708,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1710,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1711,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1712,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1717,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1718,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1726,1
    - Dst: ReorderBufferSetRestartPoint
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1729,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1733,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1735,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 89
    argCount: 2
    argNames:
    - builder
    - lsn
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1736
      start: 1500
    functionDepth: 2
    functionLinenumber: 1500
    functionLinenumberEnd: 1736
    functionName: SnapBuildSerialize
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 2
    functionsReached:
    - FIN_CRC32C
    - COMP_CRC32C
    - pg_fsync
    - LSN_FORMAT_ARGS
    - elog
    - XLogRecPtrIsValid
    - OpenTransientFile
    - rename
    - memcpy
    - Assert
    - pfree
    - write
    - pgstat_report_wait_end
    - errmsg
    - CloseTransientFile
    - ReorderBufferGetCatalogChangesXacts
    - dclist_count
    - ereport
    - pgstat_report_wait_start
    - fsync_fname
    - ReorderBufferSetRestartPoint
    - errcode_for_file_access
    - unlink
    - palloc0
    - stat
    - MemoryContextSwitchTo
    - INIT_CRC32C
    - sprintf
    linkageType: ''
    returnType: void
    signature: void SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1754,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1756,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1765,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1766,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1767,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1778,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1779,1
    - Dst: SnapBuildRestoreContents
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1782,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1785,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1786,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1787,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1791,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1792,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1793,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1796,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1797,1
    - Dst: SnapBuildRestoreContents
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1802,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1803,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1809,1
    - Dst: SnapBuildRestoreContents
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1810,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1811,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1818,1
    - Dst: SnapBuildRestoreContents
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1819,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1820,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1823,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1824,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1825,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1826,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1828,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1831,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1832,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1833,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1834,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 4
    argNames:
    - ondisk
    - lsn
    - context
    - missing_ok
    argTypes:
    - SnapBuildOnDisk*
    - XLogRecPtr
    - MemoryContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1838
      start: 1745
    functionDepth: 1
    functionLinenumber: 1745
    functionLinenumberEnd: 1838
    functionName: SnapBuildRestoreSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - OpenTransientFile
    - errcode
    - FIN_CRC32C
    - EQ_CRC32C
    - LSN_FORMAT_ARGS
    - ereport
    - COMP_CRC32C
    - INIT_CRC32C
    - fsync_fname
    - errmsg
    - SnapBuildRestoreContents
    - sprintf
    - CloseTransientFile
    - errcode_for_file_access
    - MemoryContextAllocZero
    linkageType: ''
    returnType: bool
    signature: "bool SnapBuildRestoreSnapshot(SnapBuildOnDisk *ondisk, XLogRecPtr
      lsn,\n\t\t\t\t\t\t MemoryContext context, bool missing_ok)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SnapBuildRestoreSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1854,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1874,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1881,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1894,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1902,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1910,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1912,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1913,1
    - Dst: ReorderBufferSetRestartPoint
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1915,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1917,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1919,1
    - Dst: LogicalDecodingLogLevel
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1919,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1920,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1921,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1922,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1927,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1929,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 2
    argNames:
    - builder
    - lsn
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1844
    functionDepth: 3
    functionLinenumber: 1844
    functionLinenumberEnd: 1931
    functionName: SnapBuildRestore
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 2
    functionsReached:
    - TransactionIdPrecedes
    - SnapBuildRestoreSnapshot
    - SnapBuildSnapDecRefcount
    - Assert
    - pfree
    - errdetail
    - ereport
    - LogicalDecodingLogLevel
    - SnapBuildSnapIncRefcount
    - ReorderBufferSetRestartPoint
    - errmsg
    - SnapBuildBuildSnapshot
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: bool
    signature: bool SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1941,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1942,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1943,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1948,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1953,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1954,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1955,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1958,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1959,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1960,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - fd
    - dest
    - size
    - path
    argTypes:
    - int
    - void*
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1936
    functionDepth: 1
    functionLinenumber: 1936
    functionLinenumberEnd: 1963
    functionName: SnapBuildRestoreContents
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - errcode
    - ereport
    - pgstat_report_wait_end
    - errmsg
    - pgstat_report_wait_start
    - CloseTransientFile
    - errcode_for_file_access
    - read
    linkageType: ''
    returnType: void
    signature: void SnapBuildRestoreContents(int fd, void *dest, Size size, const
      char *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1987,1
    - Dst: ReplicationSlotsComputeLogicalRestartLSN
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1990,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1996,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1997,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2004,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2005,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2008,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2009,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2013,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2026,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2028,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2029,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2036,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2038,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2045,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2047,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2048,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2049,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2055,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 1973
    functionDepth: 3
    functionLinenumber: 1973
    functionLinenumberEnd: 2056
    functionName: CheckPointSnapBuild
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - GetRedoRecPtr
    - strcmp
    - unlink
    - sscanf
    - AllocateDir
    - FreeDir
    - ereport
    - get_dirent_type
    - errmsg
    - ReadDir
    - ReplicationSlotsComputeLogicalRestartLSN
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: void
    signature: void CheckPointSnapBuild(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2068,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2070,1
    - Dst: stat
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2072,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2075,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2076,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2077,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2080
      start: 2061
    functionDepth: 1
    functionLinenumber: 2061
    functionLinenumberEnd: 2080
    functionName: SnapBuildSnapshotExists
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - ereport
    - stat
    - errmsg
    - sprintf
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: bool SnapBuildSnapshotExists(XLogRecPtr lsn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:151,1
    - Dst: InvalidateCatalogSnapshot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:153,1
    - Dst: GetSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:154,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:164,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:165,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:168,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:172,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:176,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - relid
    - expected_state
    argTypes:
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 180
    functionName: wait_for_table_state_change
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - InvalidateCatalogSnapshot
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - WaitLatch
    - LWLockRelease
    - logicalrep_worker_find
    - GetSubscriptionRelState
    linkageType: ''
    returnType: bool
    signature: bool wait_for_table_state_change(Oid relid, char expected_state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:199,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:212,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:213,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:217,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:218,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:226,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:231,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - expected_state
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 235
    functionName: wait_for_worker_state_change
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - WaitLatch
    - LWLockRelease
    - logicalrep_worker_wakeup_ptr
    - logicalrep_worker_find
    linkageType: ''
    returnType: bool
    signature: bool wait_for_worker_state_change(char expected_state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:248,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:260,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:265,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:266,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:268,1
    - Dst: walrcv_endstreaming
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:278,1
    - Dst: ReplicationSlotNameForTablesync
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:287,1
    - Dst: ReplicationSlotDropAtPubNode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:297,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:299,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:300,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:316,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:318,1
    - Dst: replorigin_session_reset
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:327,1
    - Dst: replorigin_xact_clear
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:328,1
    - Dst: replorigin_drop_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:338,1
    - Dst: FinishSyncWorker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:340,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:343,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - current_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 245
    functionDepth: 8
    functionLinenumber: 245
    functionLinenumberEnd: 344
    functionName: ProcessSyncingTablesForSync
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - UpdateSubscriptionRelState
    - ReplicationOriginNameForLogicalRep
    - FinishSyncWorker
    - IsTransactionState
    - ReplicationSlotDropAtPubNode
    - CommitTransactionCommand
    - walrcv_endstreaming
    - replorigin_session_reset
    - replorigin_drop_by_name
    - StartTransactionCommand
    - SpinLockRelease
    - ReplicationSlotNameForTablesync
    - replorigin_xact_clear
    - SpinLockAcquire
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void ProcessSyncingTablesForSync(XLogRecPtr current_lsn)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:381,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:381,1
    - Dst: FetchRelationStates
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:384,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:397,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:407,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:416,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:424,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:424,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:455,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:459,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:461,1
    - Dst: replorigin_drop_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:465,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:470,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:482,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:484,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:491,1
    - Dst: Max
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:502,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:504,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:511,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:514,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:529,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:532,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:533,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:540,1
    - Dst: wait_for_table_state_change
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:543,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:547,1
    - Dst: logicalrep_sync_worker_count
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:557,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:562,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:564,1
    - Dst: launch_sync_worker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:569,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:577,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:596,1
    - Dst: AllTablesyncsReady
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:597,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:600,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:606,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:607,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:616,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:618,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 83
    argCount: 1
    argNames:
    - current_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 367
    functionDepth: 8
    functionLinenumber: 367
    functionLinenumberEnd: 620
    functionName: ProcessSyncingTablesForApply
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - CommitTransactionCommand
    - AllTablesyncsReady
    - table_close
    - wait_for_table_state_change
    - Assert
    - CommandCounterIncrement
    - hash_destroy
    - table_open
    - StartTransactionCommand
    - get_rel_relkind
    - SpinLockRelease
    - errmsg
    - UpdateSubscriptionRelState
    - IsTransactionState
    - ereport
    - ApplyLauncherForgetWorkerStartTime
    - hash_create
    - replorigin_drop_by_name
    - lfirst
    - logicalrep_worker_find
    - proc_exit
    - FetchRelationStates
    - ReplicationOriginNameForLogicalRep
    - launch_sync_worker
    - hash_search
    - LockSharedObject
    - logicalrep_sync_worker_count
    - Max
    - LWLockRelease
    - logicalrep_worker_wakeup_ptr
    - SpinLockAcquire
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void ProcessSyncingTablesForApply(XLogRecPtr current_lsn)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:416,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:424,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:424,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:455,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:459,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:461,1
    - Dst: replorigin_drop_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:465,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:470,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:482,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:484,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:491,1
    - Dst: Max
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:502,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:504,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:511,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:514,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:529,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:532,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:533,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:540,1
    - Dst: wait_for_table_state_change
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:543,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:547,1
    - Dst: logicalrep_sync_worker_count
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:557,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:562,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:564,1
    - Dst: launch_sync_worker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:569,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 414
    functionDepth: 8
    functionLinenumber: 414
    functionLinenumberEnd: 573
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 368
    functionsReached:
    - LWLockAcquire
    - CommitTransactionCommand
    - table_close
    - wait_for_table_state_change
    - Assert
    - table_open
    - StartTransactionCommand
    - get_rel_relkind
    - SpinLockRelease
    - UpdateSubscriptionRelState
    - replorigin_drop_by_name
    - lfirst
    - logicalrep_worker_find
    - ReplicationOriginNameForLogicalRep
    - launch_sync_worker
    - hash_search
    - LockSharedObject
    - logicalrep_sync_worker_count
    - Max
    - LWLockRelease
    - logicalrep_worker_wakeup_ptr
    - SpinLockAcquire
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void foreach(lc, table_states_not_ready)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:633,1
    - Dst: makeString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rel
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 625
    functionDepth: 6
    functionLinenumber: 625
    functionLinenumberEnd: 639
    functionName: make_copy_attnamelist
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - makeString
    - lappend
    linkageType: ''
    returnType: List
    signature: 'List *

      make_copy_attnamelist(LogicalRepRelMapEntry *rel)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:657,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:672,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:674,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:690,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:704,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:709,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 3
    argNames:
    - outbuf
    - minread
    - maxread
    argTypes:
    - void*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 713
    functionName: copy_read_data
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - WaitLatchOrSocket
    - memcpy
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - walrcv_receive
    linkageType: ''
    returnType: int
    signature: int copy_read_data(void *outbuf, int minread, int maxread)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: walrcv_server_version
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:738,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:744,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:745,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:751,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:752,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:753,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:757,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:759,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:762,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:763,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:764,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:765,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:766,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:769,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:770,1
    - Dst: DatumGetChar
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:771,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:771,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:772,1
    - Dst: DatumGetChar
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:773,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:773,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:774,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:776,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:777,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:793,1
    - Dst: GetPublicationsStr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:794,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:800,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:808,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:819,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:831,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:832,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:835,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:836,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:837,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:848,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:849,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:850,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:851,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:860,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:861,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:863,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:871,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:872,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:873,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:876,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:879,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:881,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:883,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:889,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:890,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:898,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:900,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:912,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:913,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:913,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:916,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:917,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:918,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:922,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:923,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:931,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:932,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:937,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:938,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:941,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:943,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:947,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:947,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:948,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:951,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:952,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:954,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:954,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:955,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:960,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:960,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:961,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:966,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:969,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:971,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:975,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:999,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1002,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1010,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1017,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1026,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1029,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1030,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1040,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1041,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1043,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1046,1
    - Dst: makeString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1046,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1046,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1052,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1058,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1060,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1062,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1063,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1066,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 111
    argCount: 5
    argNames:
    - nspname
    - relname
    - lrel
    - qual
    - gencol_published
    argTypes:
    - char*
    - char*
    - LogicalRepRelation*
    - List**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 724
    functionDepth: 6
    functionLinenumber: 724
    functionLinenumberEnd: 1067
    functionName: fetch_remote_table_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - errcode
    - DatumGetInt16
    - bms_add_member
    - resetStringInfo
    - DatumGetBool
    - elog
    - tuplestore_tuple_count
    - slot_getattr
    - DatumGetObjectId
    - Assert
    - appendStringInfoString
    - bms_is_member
    - pfree
    - MakeSingleTupleTableSlot
    - quote_literal_cstr
    - errmsg
    - ExecClearTuple
    - tuplestore_gettupleslot
    - TextDatumGetCString
    - destroyStringInfo
    - lengthof
    - ARR_DIMS
    - walrcv_exec
    - ExecDropSingleTupleTableSlot
    - makeString
    - initStringInfo
    - ereport
    - lappend
    - list_free_deep
    - walrcv_server_version
    - GetPublicationsStr
    - ARR_DATA_PTR
    - DatumGetArrayTypeP
    - DatumGetChar
    - palloc0_array
    - appendStringInfo
    - walrcv_clear_result
    - makeStringInfo
    linkageType: ''
    returnType: void
    signature: "void fetch_remote_table_info(char *nspname, char *relname, LogicalRepRelation
      *lrel,\n\t\t\t\t\t\tList **qual, bool *gencol_published)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fetch_remote_table_info
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1089,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1089,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1089,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1090,1
    - Dst: logicalrep_relmap_update
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1094,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1097,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1098,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1101,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1107,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1108,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1113,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1122,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1124,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1124,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1127,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1130,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1145,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1148,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1148,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1150,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1153,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1160,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1162,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1162,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1167,1
    - Dst: linitial
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1167,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1169,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1170,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1172,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1172,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1173,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1175,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1178,1
    - Dst: walrcv_server_version
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1185,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1188,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1189,1
    - Dst: makeDefElem
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1189,1
    - Dst: makeString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1190,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1193,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1196,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1197,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1198,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1200,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1202,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1204,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1205,1
    - Dst: make_copy_attnamelist
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1208,1
    - Dst: BeginCopyFrom
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1209,1
    - Dst: CopyFrom
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1212,1
    - Dst: EndCopyFrom
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1213,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1215,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 56
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1074
    functionDepth: 7
    functionLinenumber: 1074
    functionLinenumberEnd: 1216
    functionName: copy_table
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - errcode
    - for_each_from
    - addRangeTableEntryForRelation
    - RelationGetNamespace
    - RelationGetRelationName
    - strVal
    - make_parsestate
    - fetch_remote_table_info
    - Assert
    - linitial
    - appendStringInfoString
    - pfree
    - CopyFrom
    - logicalrep_rel_open
    - logicalrep_relmap_update
    - errmsg
    - appendStringInfoChar
    - walrcv_exec
    - makeString
    - quote_qualified_identifier
    - initStringInfo
    - list_free_deep
    - ereport
    - BeginCopyFrom
    - walrcv_server_version
    - lfirst
    - list_make1
    - quote_identifier
    - get_namespace_name
    - make_copy_attnamelist
    - appendStringInfo
    - makeDefElem
    - walrcv_clear_result
    - EndCopyFrom
    - makeStringInfo
    - logicalrep_rel_close
    linkageType: ''
    returnType: void
    signature: void copy_table(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1239,1
    - Dst: GetSystemIdentifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - suboid
    - relid
    - syncslotname
    - szslot
    argTypes:
    - Oid
    - Oid
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1235
    functionDepth: 2
    functionLinenumber: 1235
    functionLinenumberEnd: 1241
    functionName: ReplicationSlotNameForTablesync
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 1
    functionsReached:
    - GetSystemIdentifier
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void ReplicationSlotNameForTablesync(Oid suboid, Oid relid,\n\t\t\t\t\t\t\t\tchar
      *syncslotname, Size szslot)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1268,1
    - Dst: GetSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1269,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1272,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1278,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1281,1
    - Dst: FinishSyncWorker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1292,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1296,1
    - Dst: ReplicationSlotNameForTablesync
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1297,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1308,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1312,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1313,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1314,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1317,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1322,1
    - Dst: ReplicationSlotDropAtPubNode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1340,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1348,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1354,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1355,1
    - Dst: replorigin_session_get_progress
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1357,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1359,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1364,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1367,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1373,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1374,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1386,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1387,1
    - Dst: replorigin_create
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1388,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1390,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1391,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1393,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1401,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1408,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1414,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1416,1
    - Dst: walrcv_create_slot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1423,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1437,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1438,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1440,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1442,1
    - Dst: SwitchToUntrustedUser
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1451,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1457,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1457,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1457,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1460,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1461,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1462,1
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1471,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1471,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1472,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1473,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1474,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1475,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1475,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1476,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1479,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1479,1
    - Dst: copy_table
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1480,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1481,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1483,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1485,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1486,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1487,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1489,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1492,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1494,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1497,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1503,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1509,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1513,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1515,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1520,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1523,1
    - Dst: wait_for_worker_state_change
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1529,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 88
    argCount: 1
    argNames:
    - origin_startpos
    argTypes:
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1251
    functionDepth: 8
    functionLinenumber: 1251
    functionLinenumberEnd: 1531
    functionName: LogicalRepSyncTableStart
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - replorigin_advance
    - errcode
    - GetUserId
    - replorigin_session_setup
    - walrcv_create_slot
    - CommitTransactionCommand
    - replorigin_create
    - RestoreUserContext
    - replorigin_by_name
    - GetUserNameFromId
    - RelationGetRelationName
    - table_close
    - LSN_FORMAT_ARGS
    - elog
    - walrcv_connect
    - FinishSyncWorker
    - Assert
    - ReplicationSlotDropAtPubNode
    - SwitchToUntrustedUser
    - CommandCounterIncrement
    - get_relkind_objtype
    - pg_class_aclcheck
    - table_open
    - StartTransactionCommand
    - SpinLockRelease
    - ReplicationSlotNameForTablesync
    - errmsg
    - OidIsValid
    - UnlockRelationOid
    - GetSubscriptionRelState
    - walrcv_exec
    - UpdateSubscriptionRelState
    - ereport
    - GetTransactionSnapshot
    - LockRelationOid
    - aclcheck_error
    - replorigin_session_get_progress
    - check_enable_rls
    - ReplicationOriginNameForLogicalRep
    - wait_for_worker_state_change
    - walrcv_clear_result
    - palloc
    - PushActiveSnapshot
    - SpinLockAcquire
    - copy_table
    - RelationGetRelid
    - pgstat_report_stat
    linkageType: ''
    returnType: char
    signature: 'char *

      LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1546,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1546,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1548,1
    - Dst: LogicalRepSyncTableStart
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1551,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1553,1
    - Dst: DisableSubscriptionAndExit
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1556,1
    - Dst: AbortOutOfAnyTransaction
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1564,1
    - Dst: pgstat_report_subscription_error
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1565,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1567,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1570,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1573,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1574,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - origin_startpos
    - slotname
    argTypes:
    - XLogRecPtr*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1541
    functionDepth: 9
    functionLinenumber: 1541
    functionLinenumberEnd: 1575
    functionName: start_table_sync
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - LogicalRepSyncTableStart
    - pgstat_report_subscription_error
    - PG_CATCH
    - PG_TRY
    - Assert
    - pfree
    - am_tablesync_worker
    - MemoryContextStrdup
    - DisableSubscriptionAndExit
    - PG_RE_THROW
    - AbortOutOfAnyTransaction
    - PG_END_TRY
    linkageType: ''
    returnType: void
    signature: void start_table_sync(XLogRecPtr *origin_startpos, char **slotname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: start_table_sync
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1591,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1593,1
    - Dst: set_apply_error_context_origin
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1598,1
    - Dst: set_stream_options
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1600,1
    - Dst: walrcv_startstreaming
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1602,1
    - Dst: start_apply
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1583
    functionDepth: 10
    functionLinenumber: 1583
    functionLinenumberEnd: 1606
    functionName: run_tablesync_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - set_apply_error_context_origin
    - ReplicationOriginNameForLogicalRep
    - start_table_sync
    - start_apply
    - set_stream_options
    - walrcv_startstreaming
    linkageType: ''
    returnType: void
    signature: void run_tablesync_worker(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1612,1
    - Dst: SetupApplyOrSyncWorker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1614,1
    - Dst: run_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1616,1
    - Dst: FinishSyncWorker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1609
    functionDepth: 11
    functionLinenumber: 1609
    functionLinenumberEnd: 1619
    functionName: TableSyncWorkerMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - run_tablesync_worker
    - SetupApplyOrSyncWorker
    - FinishSyncWorker
    linkageType: ''
    returnType: void
    signature: void TableSyncWorkerMain(Datum main_arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FetchRelationStates
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1636,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1640,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1641,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1629
    functionDepth: 2
    functionLinenumber: 1629
    functionLinenumberEnd: 1649
    functionName: AllTablesyncsReady
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 2
    functionsReached:
    - FetchRelationStates
    - CommitTransactionCommand
    - pgstat_report_stat
    linkageType: ''
    returnType: bool
    signature: bool AllTablesyncsReady(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FetchRelationStates
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1666,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1670,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1659
    functionDepth: 2
    functionLinenumber: 1659
    functionLinenumberEnd: 1675
    functionName: HasSubscriptionTablesCached
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - FetchRelationStates
    - CommitTransactionCommand
    - pgstat_report_stat
    linkageType: ''
    returnType: bool
    signature: bool HasSubscriptionTablesCached(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1689,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1693,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1694,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1694,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1695,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1696,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1701,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1702,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1703,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1706,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1709,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1709,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1711,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1713,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1714,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - suboid
    - new_state
    argTypes:
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1680
    functionDepth: 7
    functionLinenumber: 1680
    functionLinenumberEnd: 1715
    functionName: UpdateTwoPhaseState
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - elog
    - heap_freetuple
    - Assert
    - HeapTupleIsValid
    - RelationGetDescr
    - CatalogTupleUpdate
    - table_open
    - SearchSysCacheCopy1
    - memset
    - CharGetDatum
    - ObjectIdGetDatum
    - table_close
    - heap_modify_tuple
    linkageType: ''
    returnType: void
    signature: void UpdateTwoPhaseState(Oid suboid, char new_state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/message.c:54,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/message.c:54,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/replication/logical/message.c:55,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/logical/message.c:61,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/replication/logical/message.c:64,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/replication/logical/message.c:65,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/replication/logical/message.c:66,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/replication/logical/message.c:67,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/replication/logical/message.c:70,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/replication/logical/message.c:72,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/message.c:79,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 5
    argNames:
    - prefix
    - message
    - size
    - transactional
    - flush
    argTypes:
    - char*
    - char*
    - size_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 81
    functionName: LogLogicalMessage
    functionSourceFile: /src/postgres/src/backend/replication/logical/message.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - XLogBeginInsert
    - Assert
    - IsTransactionState
    - XLogFlush
    - XLogRegisterData
    - XLogSetRecordFlags
    - strlen
    - GetCurrentTransactionId
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr LogLogicalMessage(const char *prefix, const char *message,
      size_t size,\n\t\t\t\t  bool transactional, bool flush)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/message.c:89,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/message.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 95
    functionName: logicalmsg_redo
    functionSourceFile: /src/postgres/src/backend/replication/logical/message.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecGetInfo
    linkageType: ''
    returnType: void
    signature: void logicalmsg_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - action
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: IsSpecInsert
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsSpecInsert(action)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - action
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 207
    functionName: IsSpecConfirmOrAbort
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsSpecConfirmOrAbort(action)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - action
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 213
    functionName: IsInsertOrUpdate
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsInsertOrUpdate(action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:331,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:334,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:339,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:341,1
    - Dst: SlabContextCreate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:345,1
    - Dst: SlabContextCreate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:350,1
    - Dst: GenerationContextCreate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:365,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:375,1
    - Dst: pairingheap_allocate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:386,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:400,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:401,1
    - Dst: dclist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:402,1
    - Dst: ReorderBufferCleanupSerializedTXNs
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:409,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 412
    functionName: ReorderBufferAllocate
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    - Assert
    - dlist_init
    - hash_create
    - GenerationContextCreate
    - ReorderBufferCleanupSerializedTXNs
    - memset
    - SlabContextCreate
    - pairingheap_allocate
    - AllocSetContextCreate
    - NameStr
    - dclist_init
    linkageType: ''
    returnType: ReorderBuffer
    signature: 'ReorderBuffer *

      ReorderBufferAllocate(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:426,1
    - Dst: ReorderBufferCleanupSerializedTXNs
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:429,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 430
    functionName: ReorderBufferFree
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    - ReorderBufferCleanupSerializedTXNs
    - NameStr
    linkageType: ''
    returnType: void
    signature: void ReorderBufferFree(ReorderBuffer *rb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:441,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:443,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:445,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:446,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 454
    functionName: ReorderBufferAllocTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - memset
    - dlist_init
    - MemoryContextAlloc
    linkageType: ''
    returnType: ReorderBufferTXN
    signature: 'ReorderBufferTXN *

      ReorderBufferAllocTXN(ReorderBuffer *rb)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:473,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:479,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:485,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:491,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:496,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:499,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:501,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 502
    functionName: ReorderBufferFreeTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - ReorderBufferToastReset
    - hash_destroy
    linkageType: ''
    returnType: void
    signature: void ReorderBufferFreeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:513,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 517
    functionName: ReorderBufferAllocChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 6
    functionsReached:
    - memset
    - MemoryContextAlloc
    linkageType: ''
    returnType: ReorderBufferChange
    signature: 'ReorderBufferChange *

      ReorderBufferAllocChange(ReorderBuffer *rb)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:528,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:529,1
    - Dst: ReorderBufferFreeTupleBuf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:540,1
    - Dst: ReorderBufferFreeTupleBuf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:546,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:552,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:555,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:560,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:566,1
    - Dst: ReorderBufferFreeRelids
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:574,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:585,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 3
    argNames:
    - rb
    - change
    - upd_mem
    argTypes:
    - ReorderBuffer*
    - ReorderBufferChange*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 586
    functionName: ReorderBufferFreeChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferFreeTupleBuf
    - ReorderBufferFreeSnap
    - pfree
    - ReorderBufferChangeSize
    - ReorderBufferFreeRelids
    - ReorderBufferChangeMemoryUpdate
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferFreeChange(ReorderBuffer *rb, ReorderBufferChange
      *change,\n\t\t\t\t\t\tbool upd_mem)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - rb
    - tuple_len
    argTypes:
    - ReorderBuffer*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 605
    functionName: ReorderBufferAllocTupleBuf
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 4
    functionsReached:
    - MemoryContextAlloc
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple ReorderBufferAllocTupleBuf(ReorderBuffer *rb, Size tuple_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 610
    functionDepth: 0
    functionLinenumber: 610
    functionLinenumberEnd: 614
    functionName: ReorderBufferFreeTupleBuf
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void ReorderBufferFreeTupleBuf(HeapTuple tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rb
    - nrelids
    argTypes:
    - ReorderBuffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 636
    functionName: ReorderBufferAllocRelids
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - MemoryContextAlloc
    linkageType: ''
    returnType: Oid
    signature: 'Oid *

      ReorderBufferAllocRelids(ReorderBuffer *rb, int nrelids)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rb
    - relids
    argTypes:
    - ReorderBuffer*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 645
    functionName: ReorderBufferFreeRelids
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void ReorderBufferFreeRelids(ReorderBuffer *rb, Oid *relids)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:661,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:661,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:666,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:695,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:705,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:705,1
    - Dst: ReorderBufferAllocTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:707,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:715,1
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:729,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 6
    argNames:
    - rb
    - xid
    - create
    - is_new
    - lsn
    - create_as_top
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - bool
    - bool*
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 731
    functionName: ReorderBufferTXNByXid
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - hash_search
    - Assert
    - ReorderBufferAllocTXN
    - AssertTXNLsnOrder
    - dlist_push_tail
    - TransactionIdIsValid
    linkageType: ''
    returnType: ReorderBufferTXN
    signature: "ReorderBufferTXN *\nReorderBufferTXNByXid(ReorderBuffer *rb, TransactionId
      xid, bool create,\n\t\t\t\t\t  bool *is_new, XLogRecPtr lsn, bool create_as_top)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferCanStream
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:752,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:756,1
    - Dst: rbtxn_has_partial_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:774,1
    - Dst: IsInsertOrUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:775,1
    - Dst: IsSpecInsert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:784,1
    - Dst: rbtxn_has_partial_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:786,1
    - Dst: IsSpecConfirmOrAbort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:787,1
    - Dst: ReorderBufferCanStartStreaming
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:799,1
    - Dst: rbtxn_has_partial_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:800,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:801,1
    - Dst: rbtxn_has_streamable_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:802,1
    - Dst: ReorderBufferStreamTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:803,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 14
    argCount: 4
    argNames:
    - rb
    - txn
    - change
    - toast_insert
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - ReorderBufferChange*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 804
    functionName: ReorderBufferProcessPartialChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferCanStartStreaming
    - ReorderBufferStreamTXN
    - rbtxn_get_toptxn
    - rbtxn_has_partial_change
    - IsSpecConfirmOrAbort
    - ReorderBufferCanStream
    - rbtxn_is_serialized
    - rbtxn_has_streamable_change
    - IsSpecInsert
    - IsInsertOrUpdate
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferProcessPartialChange(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t\t  ReorderBufferChange *change,\n\t\t\t\t\t\t\t\t  bool
      toast_insert)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:816,1
    - Dst: rbtxn_is_aborted
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:823,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:829,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:853,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:853,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:854,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:859,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:860,1
    - Dst: ReorderBufferProcessPartialChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:863,1
    - Dst: ReorderBufferCheckMemoryLimit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:866,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 5
    argNames:
    - rb
    - xid
    - lsn
    - change
    - toast_insert
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - ReorderBufferChange*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 810
    functionDepth: 3
    functionLinenumber: 810
    functionLinenumberEnd: 867
    functionName: ReorderBufferQueueChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 6
    functionsReached:
    - ReorderBufferChangeMemoryUpdate
    - XLogRecPtrIsValid
    - rbtxn_get_toptxn
    - Assert
    - ReorderBufferChangeSize
    - ReorderBufferTXNByXid
    - ReorderBufferProcessPartialChange
    - dlist_push_tail
    - ReorderBufferFreeChange
    - rbtxn_is_aborted
    - ReorderBufferCheckMemoryLimit
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferQueueChange(ReorderBuffer *rb, TransactionId xid,
      XLogRecPtr lsn,\n\t\t\t\t\t\t ReorderBufferChange *change, bool toast_insert)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:884,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:891,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:893,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:895,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:897,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:899,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:900,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:902,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:904,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:912,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:915,1
    - Dst: SetupHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:918,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:919,1
    - Dst: ReorderBuffer*::message
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:921,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:923,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:925,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:927,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:928,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:930,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 8
    argNames:
    - rb
    - xid
    - snap
    - lsn
    - transactional
    - prefix
    - message_size
    - message
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - Snapshot
    - XLogRecPtr
    - bool
    - char*
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 873
    functionDepth: 4
    functionLinenumber: 873
    functionLinenumberEnd: 932
    functionName: ReorderBufferQueueMessage
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - memcpy
    - Assert
    - ReorderBufferQueueChange
    - pstrdup
    - ReorderBuffer*::message
    - ReorderBufferTXNByXid
    - MemoryContextSwitchTo
    - PG_RE_THROW
    - SetupHistoricSnapshot
    - ReorderBufferAllocChange
    - palloc
    - PG_END_TRY
    - TeardownHistoricSnapshot
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferQueueMessage(ReorderBuffer *rb, TransactionId xid,\n\t\t\t\t\t\t
      \ Snapshot snap, XLogRecPtr lsn,\n\t\t\t\t\t\t  bool transactional, const char
      *prefix,\n\t\t\t\t\t\t  Size message_size, const char *message)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SnapBuildXactNeedsSkip
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:961,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:964,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:966,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:970,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:970,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:974,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:977,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:978,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:981,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:981,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:986,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:988,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:993,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:994,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:994,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:997,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1001,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1001,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 942
    functionDepth: 1
    functionLinenumber: 942
    functionLinenumberEnd: 1006
    functionName: AssertTXNLsnOrder
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - Assert
    - SnapBuildXactNeedsSkip
    - dlist_container
    - rbtxn_is_known_subxact
    - dlist_foreach
    linkageType: ''
    returnType: void
    signature: void AssertTXNLsnOrder(ReorderBuffer *rb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1020,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1024,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1026,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1026,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1027,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1027,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1028,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1030,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1031,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1033,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - txn
    argTypes:
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1013
    functionDepth: 1
    functionLinenumber: 1013
    functionLinenumberEnd: 1038
    functionName: AssertChangeLsnOrder
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - Assert
    - XLogRecPtrIsValid
    - dlist_container
    - dlist_foreach
    linkageType: ''
    returnType: void
    signature: void AssertChangeLsnOrder(ReorderBufferTXN *txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1049,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1051,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1054,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1056,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1057,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1057,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1044
    functionDepth: 2
    functionLinenumber: 1044
    functionLinenumberEnd: 1059
    functionName: ReorderBufferGetOldestTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - dlist_is_empty
    - Assert
    - dlist_head_element
    - AssertTXNLsnOrder
    - rbtxn_is_known_subxact
    linkageType: ''
    returnType: ReorderBufferTXN
    signature: 'ReorderBufferTXN *

      ReorderBufferGetOldestTXN(ReorderBuffer *rb)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1077,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1079,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1082,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1072
    functionDepth: 2
    functionLinenumber: 1072
    functionLinenumberEnd: 1085
    functionName: ReorderBufferGetOldestXmin
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - AssertTXNLsnOrder
    - dlist_is_empty
    - dlist_head_element
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId ReorderBufferGetOldestXmin(ReorderBuffer *rb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rb
    - ptr
    argTypes:
    - ReorderBuffer*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1087
    functionDepth: 0
    functionLinenumber: 1087
    functionLinenumberEnd: 1091
    functionName: ReorderBufferSetRestartPoint
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReorderBufferSetRestartPoint(ReorderBuffer *rb, XLogRecPtr ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1108,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1109,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1113,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1125,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1131,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1137,1
    - Dst: ReorderBufferTransferSnapToParent
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1141,1
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - rb
    - xid
    - subxid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1099
    functionDepth: 3
    functionLinenumber: 1099
    functionLinenumberEnd: 1145
    functionName: ReorderBufferAssignChild
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - ReorderBufferTransferSnapToParent
    - ReorderBufferTXNByXid
    - AssertTXNLsnOrder
    - dlist_delete
    - dlist_push_tail
    - rbtxn_is_known_subxact
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferAssignChild(ReorderBuffer *rb, TransactionId xid,\n\t\t\t\t\t\t
      TransactionId subxid, XLogRecPtr lsn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1169,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1182,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1183,1
    - Dst: dlist_insert_before
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1193,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1202,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1207,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1208,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - txn
    - subtxn
    argTypes:
    - ReorderBufferTXN*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1165
    functionDepth: 3
    functionLinenumber: 1165
    functionLinenumberEnd: 1213
    functionName: ReorderBufferTransferSnapToParent
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - dlist_insert_before
    - dlist_delete
    - SnapBuildSnapDecRefcount
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferTransferSnapToParent(ReorderBufferTXN *txn,\n\t\t\t\t\t\t\t\t
      \ ReorderBufferTXN *subtxn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1226,1
    - Dst: ReorderBufferAssignChild
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - rb
    - xid
    - subxid
    - commit_lsn
    - end_lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - TransactionId
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1219
    functionDepth: 4
    functionLinenumber: 1219
    functionLinenumberEnd: 1243
    functionName: ReorderBufferCommitChild
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - ReorderBufferAssignChild
    - ReorderBufferTXNByXid
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferCommitChild(ReorderBuffer *rb, TransactionId xid,\n\t\t\t\t\t\t
      TransactionId subxid, XLogRecPtr commit_lsn,\n\t\t\t\t\t\t XLogRecPtr end_lsn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1265,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - Datum
    - Datum
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1261
    functionDepth: 1
    functionLinenumber: 1261
    functionLinenumberEnd: 1273
    functionName: ReorderBufferIterCompare
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    linkageType: ''
    returnType: int
    signature: int ReorderBufferIterCompare(Datum a, Datum b, void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: AssertChangeLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1296,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1306,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1310,1
    - Dst: AssertChangeLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1313,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1321,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1326,1
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1335,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1354,1
    - Dst: ReorderBufferSerializeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1357,1
    - Dst: ReorderBufferRestoreChanges
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1358,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1362,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1369,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1369,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1373,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1377,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1383,1
    - Dst: ReorderBufferSerializeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1386,1
    - Dst: ReorderBufferRestoreChanges
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1387,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1391,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1398,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1398,1
    - Dst: binaryheap_build
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1403,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 47
    argCount: 3
    argNames:
    - rb
    - txn
    - iter_state
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - ReorderBufferIterTXNState**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1404
      start: 1284
    functionDepth: 2
    functionLinenumber: 1284
    functionLinenumberEnd: 1404
    functionName: ReorderBufferIterTXNInit
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - binaryheap_allocate
    - AssertChangeLsnOrder
    - Int32GetDatum
    - dlist_container
    - dlist_foreach
    - dlist_init
    - rbtxn_is_serialized
    - ReorderBufferRestoreChanges
    - dlist_head_element
    - binaryheap_add_unordered
    - ReorderBufferSerializeTXN
    - binaryheap_build
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferIterTXNInit(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t ReorderBufferIterTXNState *volatile *iter_state)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: binaryheap_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1420,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1423,1
    - Dst: binaryheap_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1423,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1427,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1429,1
    - Dst: dlist_pop_head_node
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1430,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1432,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1432,1
    - Dst: dlist_has_next
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1443,1
    - Dst: dlist_next_node
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1445,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1447,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1453,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1453,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1464,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1465,1
    - Dst: ReorderBufferRestoreChanges
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1473,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1478,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1481,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1485,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1489,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1489,1
    - Dst: binaryheap_remove_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1496,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - rb
    - state
    argTypes:
    - ReorderBuffer*
    - ReorderBufferIterTXNState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1412
    functionDepth: 2
    functionLinenumber: 1412
    functionLinenumberEnd: 1499
    functionName: ReorderBufferIterTXNNext
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - elog
    - dlist_has_next
    - dlist_is_empty
    - Assert
    - Int32GetDatum
    - dlist_container
    - binaryheap_replace_first
    - binaryheap_empty
    - binaryheap_first
    - ReorderBufferRestoreChanges
    - DatumGetInt32
    - dlist_head_element
    - binaryheap_remove_first
    - dlist_delete
    - dlist_push_tail
    - ReorderBufferFreeChange
    - dlist_pop_head_node
    - dlist_next_node
    linkageType: ''
    returnType: ReorderBufferChange
    signature: 'ReorderBufferChange *

      ReorderBufferIterTXNNext(ReorderBuffer *rb, ReorderBufferIterTXNState *state)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FileClose
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1513,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1517,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1521,1
    - Dst: dlist_pop_head_node
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1522,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1524,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1524,1
    - Dst: binaryheap_free
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1527,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1528,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - rb
    - state
    argTypes:
    - ReorderBuffer*
    - ReorderBufferIterTXNState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1529
      start: 1504
    functionDepth: 2
    functionLinenumber: 1504
    functionLinenumberEnd: 1529
    functionName: ReorderBufferIterTXNFinish
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - dlist_is_empty
    - Assert
    - pfree
    - dlist_container
    - binaryheap_free
    - FileClose
    - ReorderBufferFreeChange
    - dlist_pop_head_node
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferIterTXNFinish(ReorderBuffer *rb,\n\t\t\t\t\t\t   ReorderBufferIterTXNState
      *state)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1543,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1547,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1554,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1555,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1557,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1561,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1568,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1576,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1578,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1582,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1588,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1596,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1598,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1606,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1607,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1615,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1615,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1616,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1628,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1629,1
    - Dst: dclist_delete_from
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1630,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1633,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1634,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1637,1
    - Dst: ReorderBufferRestoreCleanup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1638,1
    - Dst: ReorderBufferFreeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1641,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1642
      start: 1535
    functionDepth: 3
    functionLinenumber: 1535
    functionLinenumberEnd: 1642
    functionName: ReorderBufferCleanupTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - hash_search
    - ReorderBufferFreeSnap
    - SnapBuildSnapDecRefcount
    - Assert
    - ReorderBufferChangeSize
    - rbtxn_has_catalog_changes
    - ReorderBufferCleanupTXN
    - dlist_container
    - dclist_delete_from
    - rbtxn_is_serialized
    - rbtxn_is_streamed
    - ReorderBufferFreeTXN
    - dlist_foreach_modify
    - dlist_delete
    - ReorderBufferFreeChange
    - ReorderBufferChangeMemoryUpdate
    - rbtxn_is_known_subxact
    - ReorderBufferRestoreCleanup
    linkageType: ''
    returnType: void
    signature: void ReorderBufferCleanupTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1663,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1667,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1674,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1674,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1675,1
    - Dst: ReorderBufferMaybeMarkTXNStreamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1677,1
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1678,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1682,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1689,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1692,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1700,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1702,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1706,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1715,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1719,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1723,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1726,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1728,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1739,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1744,1
    - Dst: ReorderBufferRestoreCleanup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1746,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 3
    argNames:
    - rb
    - txn
    - txn_prepared
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1656
    functionDepth: 2
    functionLinenumber: 1656
    functionLinenumberEnd: 1760
    functionName: ReorderBufferTruncateTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferChangeMemoryUpdate
    - ReorderBufferRestoreCleanup
    - Assert
    - ReorderBufferChangeSize
    - dlist_container
    - rbtxn_is_serialized
    - hash_destroy
    - dlist_foreach_modify
    - dlist_delete
    - ReorderBufferFreeChange
    - ReorderBufferMaybeMarkTXNStreamed
    - rbtxn_is_known_subxact
    - ReorderBufferTruncateTXN
    linkageType: ''
    returnType: void
    signature: void ReorderBufferTruncateTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,
      bool txn_prepared)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1778,1
    - Dst: rbtxn_is_committed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1785,1
    - Dst: rbtxn_is_aborted
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1787,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1790,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1797,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1806,1
    - Dst: rbtxn_is_aborted
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1806,1
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1816,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1816,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1820,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1826,1
    - Dst: rbtxn_is_committed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1826,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1774
    functionDepth: 3
    functionLinenumber: 1774
    functionLinenumberEnd: 1830
    functionName: ReorderBufferCheckAndTruncateAbortedTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsInProgress
    - Assert
    - TransactionIdDidCommit
    - rbtxn_is_committed
    - rbtxn_is_prepared
    - ReorderBufferToastReset
    - unlikely
    - rbtxn_is_aborted
    - ReorderBufferTruncateTXN
    linkageType: ''
    returnType: bool
    signature: bool ReorderBufferCheckAndTruncateAbortedTXN(ReorderBuffer *rb, ReorderBufferTXN
      *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1842,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1842,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1854,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1857,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1866,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1869,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1873,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1890,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1896,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1836
    functionDepth: 2
    functionLinenumber: 1836
    functionLinenumberEnd: 1902
    functionName: ReorderBufferBuildTupleCidHash
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - dlist_is_empty
    - hash_search
    - rbtxn_has_catalog_changes
    - ItemPointerCopy
    - Assert
    - dlist_container
    - hash_create
    - memset
    - dlist_foreach
    linkageType: ''
    returnType: void
    signature: void ReorderBufferBuildTupleCidHash(ReorderBuffer *rb, ReorderBufferTXN
      *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1922,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1923,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1930,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1947,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1951,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 4
    argNames:
    - rb
    - orig_snap
    - txn
    - cid
    argTypes:
    - ReorderBuffer*
    - Snapshot
    - ReorderBufferTXN*
    - CommandId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1909
    functionDepth: 1
    functionLinenumber: 1909
    functionLinenumberEnd: 1963
    functionName: ReorderBufferCopySnap
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - qsort
    - memcpy
    - MemoryContextAllocZero
    - dlist_container
    - dlist_foreach
    linkageType: ''
    returnType: Snapshot
    signature: "Snapshot ReorderBufferCopySnap(ReorderBuffer *rb, Snapshot orig_snap,\n\t\t\t\t\t
      \ ReorderBufferTXN *txn, CommandId cid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1972,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1974,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rb
    - snap
    argTypes:
    - ReorderBuffer*
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1968
    functionDepth: 3
    functionLinenumber: 1968
    functionLinenumberEnd: 1975
    functionName: ReorderBufferFreeSnap
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - pfree
    - SnapBuildSnapDecRefcount
    linkageType: ''
    returnType: void
    signature: void ReorderBufferFreeSnap(ReorderBuffer *rb, Snapshot snap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1987,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1987,1
    - Dst: ReorderBufferStreamTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1989,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1991,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1997,1
    - Dst: rbtxn_sent_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1997,1
    - Dst: ReorderBuffer*::stream_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1998,1
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2006,1
    - Dst: ReorderBuffer*::stream_commit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2012,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2013,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 1983
    functionDepth: 4
    functionLinenumber: 1983
    functionLinenumberEnd: 2015
    functionName: ReorderBufferStreamCommit
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferStreamTXN
    - ReorderBuffer*::stream_commit
    - Assert
    - ReorderBufferCleanupTXN
    - rbtxn_sent_prepare
    - ReorderBuffer*::stream_prepare
    - rbtxn_is_prepared
    - rbtxn_is_streamed
    - ReorderBufferTruncateTXN
    linkageType: ''
    returnType: void
    signature: void ReorderBufferStreamCommit(ReorderBuffer *rb, ReorderBufferTXN
      *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2056,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2063,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2049
    functionDepth: 3
    functionLinenumber: 2049
    functionLinenumberEnd: 2067
    functionName: SetupCheckXidLive
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - TransactionIdDidCommit
    - TransactionIdEquals
    linkageType: ''
    returnType: void
    signature: void SetupCheckXidLive(TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBuffer*::stream_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2078,1
    - Dst: ReorderBuffer*::apply_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - rb
    - txn
    - relation
    - change
    - streaming
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2072
    functionDepth: 0
    functionLinenumber: 2072
    functionLinenumberEnd: 2081
    functionName: ReorderBufferApplyChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBuffer*::apply_change
    - ReorderBuffer*::stream_change
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferApplyChange(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t Relation relation, ReorderBufferChange *change,\n\t\t\t\t\t\t
      bool streaming)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBuffer*::stream_truncate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2092,1
    - Dst: ReorderBuffer*::apply_truncate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2094,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - rb
    - txn
    - nrelations
    - relations
    - change
    - streaming
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - int
    - Relation*
    - ReorderBufferChange*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2095
      start: 2086
    functionDepth: 0
    functionLinenumber: 2086
    functionLinenumberEnd: 2095
    functionName: ReorderBufferApplyTruncate
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBuffer*::stream_truncate
    - ReorderBuffer*::apply_truncate
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferApplyTruncate(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t   int nrelations, Relation *relations,\n\t\t\t\t\t\t   ReorderBufferChange
      *change, bool streaming)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBuffer*::stream_message
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2105,1
    - Dst: ReorderBuffer*::message
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - rb
    - txn
    - change
    - streaming
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - ReorderBufferChange*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2100
    functionDepth: 0
    functionLinenumber: 2100
    functionLinenumberEnd: 2114
    functionName: ReorderBufferApplyMessage
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBuffer*::stream_message
    - ReorderBuffer*::message
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferApplyMessage(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t  ReorderBufferChange *change, bool streaming)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - rb
    - txn
    - snapshot_now
    - command_id
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Snapshot
    - CommandId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2132
      start: 2120
    functionDepth: 2
    functionLinenumber: 2120
    functionLinenumberEnd: 2132
    functionName: ReorderBufferSaveTXNSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferCopySnap
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferSaveTXNSnapshot(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t Snapshot snapshot_now, CommandId command_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtxn_is_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2156
      start: 2138
    functionDepth: 1
    functionLinenumber: 2138
    functionLinenumberEnd: 2156
    functionName: ReorderBufferMaybeMarkTXNStreamed
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - rbtxn_is_toptxn
    linkageType: ''
    returnType: void
    signature: void ReorderBufferMaybeMarkTXNStreamed(ReorderBuffer *rb, ReorderBufferTXN
      *txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2172,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2172,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2175,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2181,1
    - Dst: ReorderBuffer*::stream_stop
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2183,1
    - Dst: ReorderBufferSaveTXNSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - rb
    - txn
    - snapshot_now
    - command_id
    - last_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Snapshot
    - CommandId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2165
    functionDepth: 3
    functionLinenumber: 2165
    functionLinenumberEnd: 2189
    functionName: ReorderBufferResetTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferSaveTXNSnapshot
    - Assert
    - ReorderBufferToastReset
    - rbtxn_is_prepared
    - rbtxn_is_streamed
    - ReorderBufferTruncateTXN
    - ReorderBuffer*::stream_stop
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferResetTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,\n\t\t\t\t\t
      \ Snapshot snapshot_now,\n\t\t\t\t\t  CommandId command_id,\n\t\t\t\t\t  XLogRecPtr
      last_lsn)"
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferBuildTupleCidHash
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2220,1
    - Dst: SetupHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2223,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2235,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2237,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2244,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2246,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2254,1
    - Dst: ReorderBuffer*::begin_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2255,1
    - Dst: ReorderBuffer*::begin
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2257,1
    - Dst: ReorderBufferIterTXNInit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2260,1
    - Dst: ReorderBufferIterTXNNext
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2261,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2266,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2272,1
    - Dst: ReorderBuffer*::stream_start
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2277,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2287,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2287,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2296,1
    - Dst: SetupCheckXidLive
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2299,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2322,1
    - Dst: RelidByRelfilenumber
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2324,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2344,1
    - Dst: relpathperm
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2345,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2348,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2350,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2351,1
    - Dst: relpathperm
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2353,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2356,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2376,1
    - Dst: ReorderBufferToastReplace
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2378,1
    - Dst: ReorderBufferApplyChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2379,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2388,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2401,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2403,1
    - Dst: ReorderBufferToastAppendChunk
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2404,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2416,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2420,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2443,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2467,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2468,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2471,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2483,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2489,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2491,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2492,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2494,1
    - Dst: ReorderBufferApplyTruncate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2501,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2506,1
    - Dst: ReorderBufferApplyMessage
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2512,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2517,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2523,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2527,1
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2529,1
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2541,1
    - Dst: SetupHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2550,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2554,1
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2563,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2569,1
    - Dst: SetupHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2570,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2576,1
    - Dst: ReorderBuffer*::update_progress_txn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2594,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2600,1
    - Dst: ReorderBufferIterTXNFinish
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2603,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2615,1
    - Dst: ReorderBuffer*::stream_stop
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2628,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2638,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2640,1
    - Dst: rbtxn_sent_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2640,1
    - Dst: ReorderBuffer*::prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2641,1
    - Dst: ReorderBuffer*::commit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2645,1
    - Dst: GetCurrentTransactionIdIfAny
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2649,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2650,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2651,1
    - Dst: ReorderBufferSaveTXNSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2658,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2660,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2663,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2671,1
    - Dst: rbtxn_distr_inval_overflowed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2674,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2676,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2677,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2681,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2682,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2688,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2689,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2707,1
    - Dst: ReorderBufferMaybeMarkTXNStreamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2710,1
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2712,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2712,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2717,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2719,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2721,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2722,1
    - Dst: ReorderBufferIterTXNFinish
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2726,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2728,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2734,1
    - Dst: rbtxn_distr_inval_overflowed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2739,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2740,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2744,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2745,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2751,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2752,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2759,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2779,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2782,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2787,1
    - Dst: rbtxn_is_committed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2787,1
    - Dst: ReorderBufferMaybeMarkTXNStreamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2792,1
    - Dst: ReorderBufferResetTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2795,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2800,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2801,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2802,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2805,1
    CyclomaticComplexity: 69
    EdgeCount: 69
    ICount: 234
    argCount: 6
    argNames:
    - rb
    - txn
    - commit_lsn
    - snapshot_now
    - command_id
    - streaming
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    - Snapshot
    - CommandId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2806
      start: 2203
    functionDepth: 4
    functionLinenumber: 2203
    functionLinenumberEnd: 2806
    functionName: ReorderBufferProcessTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferIterTXNFinish
    - PG_TRY
    - BeginInternalSubTransaction
    - CopyErrorData
    - relpathperm
    - IsTransactionOrTransactionBlock
    - ReorderBufferApplyChange
    - ReorderBufferApplyTruncate
    - ReorderBuffer*::update_progress_txn
    - SetupHistoricSnapshot
    - ReorderBufferApplyMessage
    - ReorderBuffer*::begin
    - ReorderBufferTruncateTXN
    - elog
    - XLogRecPtrIsValid
    - ReorderBufferFreeSnap
    - Assert
    - ReorderBufferCleanupTXN
    - ReorderBufferIterTXNNext
    - PG_RE_THROW
    - ReorderBufferBuildTupleCidHash
    - StartTransactionCommand
    - ReorderBufferToastReplace
    - ReorderBufferExecuteInvalidations
    - dlist_delete
    - ReorderBuffer*::begin_prepare
    - PG_END_TRY
    - ReorderBufferCopySnap
    - ReorderBuffer*::stream_stop
    - ReorderBufferSaveTXNSnapshot
    - InvalidateSystemCaches
    - RelidByRelfilenumber
    - ReorderBuffer*::stream_start
    - RelationIdGetRelation
    - CHECK_FOR_INTERRUPTS
    - ReorderBufferToastReset
    - rbtxn_is_streamed
    - rbtxn_sent_prepare
    - ReorderBuffer*::prepare
    - ReorderBufferIterTXNInit
    - RollbackAndReleaseCurrentSubTransaction
    - ReorderBufferFreeChange
    - GetCurrentTransactionId
    - ReorderBufferMaybeMarkTXNStreamed
    - AbortCurrentTransaction
    - ReorderBufferResetTXN
    - TeardownHistoricSnapshot
    - PG_CATCH
    - GetCurrentTransactionIdIfAny
    - palloc0_array
    - rbtxn_distr_inval_overflowed
    - ReorderBuffer*::commit
    - RelationIsLogicallyLogged
    - rbtxn_is_committed
    - rbtxn_is_prepared
    - RelationIsValid
    - MemoryContextSwitchTo
    - FreeErrorData
    - FlushErrorState
    - SetupCheckXidLive
    - RelationClose
    - ReorderBufferToastAppendChunk
    - IsToastRelation
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferProcessTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,\n\t\t\t\t\t\tXLogRecPtr
      commit_lsn,\n\t\t\t\t\t\tvolatile Snapshot snapshot_now,\n\t\t\t\t\t\tvolatile
      CommandId command_id,\n\t\t\t\t\t\tbool streaming)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2842,1
    - Dst: ReorderBufferStreamCommit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2856,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2862,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2863,1
    - Dst: ReorderBufferProcessTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2870,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 8
    argNames:
    - txn
    - rb
    - xid
    - commit_lsn
    - end_lsn
    - commit_time
    - origin_id
    - origin_lsn
    argTypes:
    - ReorderBufferTXN*
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - XLogRecPtr
    - TimestampTz
    - ReplOriginId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2872
      start: 2818
    functionDepth: 5
    functionLinenumber: 2818
    functionLinenumberEnd: 2872
    functionName: ReorderBufferReplay
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReorderBufferCleanupTXN
    - ReorderBufferStreamCommit
    - rbtxn_is_prepared
    - ReorderBufferProcessTXN
    - rbtxn_is_streamed
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferReplay(ReorderBufferTXN *txn,\n\t\t\t\t\tReorderBuffer
      *rb, TransactionId xid,\n\t\t\t\t\tXLogRecPtr commit_lsn, XLogRecPtr end_lsn,\n\t\t\t\t\tTimestampTz
      commit_time,\n\t\t\t\t\tReplOriginId origin_id, XLogRecPtr origin_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2887,1
    - Dst: ReorderBufferReplay
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 7
    argNames:
    - rb
    - xid
    - commit_lsn
    - end_lsn
    - commit_time
    - origin_id
    - origin_lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - XLogRecPtr
    - TimestampTz
    - ReplOriginId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2896
      start: 2879
    functionDepth: 6
    functionLinenumber: 2879
    functionLinenumberEnd: 2896
    functionName: ReorderBufferCommit
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferReplay
    - ReorderBufferTXNByXid
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,\n\t\t\t\t\tXLogRecPtr
      commit_lsn, XLogRecPtr end_lsn,\n\t\t\t\t\tTimestampTz commit_time,\n\t\t\t\t\tReplOriginId
      origin_id, XLogRecPtr origin_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2910,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 7
    argNames:
    - rb
    - xid
    - prepare_lsn
    - end_lsn
    - prepare_time
    - origin_id
    - origin_lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - XLogRecPtr
    - TimestampTz
    - ReplOriginId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2931
      start: 2902
    functionDepth: 3
    functionLinenumber: 2902
    functionLinenumberEnd: 2931
    functionName: ReorderBufferRememberPrepareInfo
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - ReorderBufferTXNByXid
    linkageType: ''
    returnType: bool
    signature: "bool ReorderBufferRememberPrepareInfo(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\t\t XLogRecPtr prepare_lsn, XLogRecPtr end_lsn,\n\t\t\t\t\t\t\t\t
      TimestampTz prepare_time,\n\t\t\t\t\t\t\t\t ReplOriginId origin_id, XLogRecPtr
      origin_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2939,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2946,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rb
    - xid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2948
      start: 2934
    functionDepth: 3
    functionLinenumber: 2934
    functionLinenumberEnd: 2948
    functionName: ReorderBufferSkipPrepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - ReorderBufferTXNByXid
    linkageType: ''
    returnType: void
    signature: void ReorderBufferSkipPrepare(ReorderBuffer *rb, TransactionId xid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2961,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2974,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2974,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2976,1
    - Dst: ReorderBufferReplay
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2978,1
    - Dst: rbtxn_sent_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2986,1
    - Dst: ReorderBuffer*::prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2988,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - rb
    - xid
    - gid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2991
      start: 2955
    functionDepth: 6
    functionLinenumber: 2955
    functionLinenumberEnd: 2991
    functionName: ReorderBufferPrepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsValid
    - Assert
    - pstrdup
    - rbtxn_sent_prepare
    - ReorderBufferTXNByXid
    - ReorderBuffer*::prepare
    - ReorderBufferReplay
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferPrepare(ReorderBuffer *rb, TransactionId xid,\n\t\t\t\t\t
      char *gid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3007,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3021,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3038,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3040,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3040,1
    - Dst: ReorderBufferReplay
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3049,1
    - Dst: ReorderBuffer*::commit_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3060,1
    - Dst: ReorderBuffer*::rollback_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3062,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3065,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3067,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 10
    argNames:
    - rb
    - xid
    - commit_lsn
    - end_lsn
    - two_phase_at
    - commit_time
    - origin_id
    - origin_lsn
    - gid
    - is_commit
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - XLogRecPtr
    - XLogRecPtr
    - TimestampTz
    - ReplOriginId
    - XLogRecPtr
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3068
      start: 2996
    functionDepth: 6
    functionLinenumber: 2996
    functionLinenumberEnd: 3068
    functionName: ReorderBufferFinishPrepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - XLogRecPtrIsValid
    - ReorderBuffer*::rollback_prepared
    - Assert
    - pstrdup
    - ReorderBufferCleanupTXN
    - ReorderBufferTXNByXid
    - ReorderBufferExecuteInvalidations
    - ReorderBufferReplay
    - ReorderBuffer*::commit_prepared
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferFinishPrepared(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\tXLogRecPtr commit_lsn, XLogRecPtr end_lsn,\n\t\t\t\t\t\t\tXLogRecPtr
      two_phase_at,\n\t\t\t\t\t\t\tTimestampTz commit_time, ReplOriginId origin_id,\n\t\t\t\t\t\t\tXLogRecPtr
      origin_lsn, char *gid, bool is_commit)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3088,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3098,1
    - Dst: ReorderBuffer*::stream_abort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3100,1
    - Dst: ReorderBufferImmediateInvalidation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3110,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - rb
    - xid
    - lsn
    - abort_time
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3119
      start: 3082
    functionDepth: 4
    functionLinenumber: 3082
    functionLinenumberEnd: 3119
    functionName: ReorderBufferAbort
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferImmediateInvalidation
    - ReorderBufferCleanupTXN
    - ReorderBuffer*::stream_abort
    - ReorderBufferTXNByXid
    - rbtxn_is_streamed
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferAbort(ReorderBuffer *rb, TransactionId xid, XLogRecPtr
      lsn,\n\t\t\t\t   TimestampTz abort_time)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3140,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3144,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3146,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3148,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3151,1
    - Dst: ReorderBuffer*::stream_abort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3152,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - rb
    - oldestRunningXid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3160
      start: 3128
    functionDepth: 4
    functionLinenumber: 3128
    functionLinenumberEnd: 3160
    functionName: ReorderBufferAbortOld
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - elog
    - TransactionIdPrecedes
    - dlist_container
    - ReorderBufferCleanupTXN
    - ReorderBuffer*::stream_abort
    - rbtxn_is_streamed
    - dlist_foreach_modify
    linkageType: ''
    returnType: void
    signature: void ReorderBufferAbortOld(ReorderBuffer *rb, TransactionId oldestRunningXid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3188,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3188,1
    - Dst: ReorderBufferImmediateInvalidation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3200,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3203,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - rb
    - xid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3207
      start: 3175
    functionDepth: 4
    functionLinenumber: 3175
    functionLinenumberEnd: 3207
    functionName: ReorderBufferForget
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferImmediateInvalidation
    - Assert
    - ReorderBufferCleanupTXN
    - ReorderBufferTXNByXid
    - rbtxn_is_streamed
    linkageType: ''
    returnType: void
    signature: void ReorderBufferForget(ReorderBuffer *rb, TransactionId xid, XLogRecPtr
      lsn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3222,1
    - Dst: ReorderBufferImmediateInvalidation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3238,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - rb
    - xid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3239
      start: 3217
    functionDepth: 3
    functionLinenumber: 3217
    functionLinenumberEnd: 3239
    functionName: ReorderBufferInvalidate
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - ReorderBufferImmediateInvalidation
    - ReorderBufferTXNByXid
    linkageType: ''
    returnType: void
    signature: void ReorderBufferInvalidate(ReorderBuffer *rb, TransactionId xid,
      XLogRecPtr lsn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3252,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3258,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3267,1
    - Dst: LocalExecuteInvalidationMessage
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3270,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3274,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - rb
    - ninvalidations
    - invalidations
    argTypes:
    - ReorderBuffer*
    - uint32
    - SharedInvalidationMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3278
      start: 3248
    functionDepth: 3
    functionLinenumber: 3248
    functionLinenumberEnd: 3278
    functionName: ReorderBufferImmediateInvalidation
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 4
    functionsReached:
    - LocalExecuteInvalidationMessage
    - BeginInternalSubTransaction
    - IsTransactionOrTransactionBlock
    - MemoryContextSwitchTo
    - RollbackAndReleaseCurrentSubTransaction
    - AbortCurrentTransaction
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferImmediateInvalidation(ReorderBuffer *rb, uint32
      ninvalidations,\n\t\t\t\t\t\t\t\t   SharedInvalidationMessage *invalidations)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - rb
    - xid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3296
      start: 3290
    functionDepth: 3
    functionLinenumber: 3290
    functionLinenumberEnd: 3296
    functionName: ReorderBufferProcessXid
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 8
    functionsReached:
    - ReorderBufferTXNByXid
    linkageType: ''
    returnType: void
    signature: void ReorderBufferProcessXid(ReorderBuffer *rb, TransactionId xid,
      XLogRecPtr lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3307,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rb
    - xid
    - lsn
    - snap
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3313
      start: 3303
    functionDepth: 4
    functionLinenumber: 3303
    functionLinenumberEnd: 3313
    functionName: ReorderBufferAddSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferQueueChange
    - ReorderBufferAllocChange
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferAddSnapshot(ReorderBuffer *rb, TransactionId xid,\n\t\t\t\t\t\t
      XLogRecPtr lsn, Snapshot snap)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3328,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3334,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3335,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3336,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3338,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3342,1
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - rb
    - xid
    - lsn
    - snap
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3345
      start: 3321
    functionDepth: 3
    functionLinenumber: 3321
    functionLinenumberEnd: 3345
    functionName: ReorderBufferSetBaseSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - Assert
    - ReorderBufferTXNByXid
    - AssertTXNLsnOrder
    - dlist_push_tail
    - rbtxn_is_known_subxact
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferSetBaseSnapshot(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\t XLogRecPtr lsn, Snapshot snap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3356,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rb
    - xid
    - lsn
    - cid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - CommandId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3362
      start: 3352
    functionDepth: 4
    functionLinenumber: 3352
    functionLinenumberEnd: 3362
    functionName: ReorderBufferAddNewCommandId
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferQueueChange
    - ReorderBufferAllocChange
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferAddNewCommandId(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\t XLogRecPtr lsn, CommandId cid)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3388,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3403,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3409,1
    - Dst: pairingheap_remove
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3423,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3428,1
    - Dst: pairingheap_remove
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3436,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3438,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3441,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 5
    argNames:
    - rb
    - change
    - txn
    - addition
    - sz
    argTypes:
    - ReorderBuffer*
    - ReorderBufferChange*
    - ReorderBufferTXN*
    - bool
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3442
      start: 3380
    functionDepth: 1
    functionLinenumber: 3380
    functionLinenumberEnd: 3442
    functionName: ReorderBufferChangeMemoryUpdate
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 4
    functionsReached:
    - Assert
    - pairingheap_add
    - rbtxn_get_toptxn
    - pairingheap_remove
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferChangeMemoryUpdate(ReorderBuffer *rb,\n\t\t\t\t\t\t\t\tReorderBufferChange
      *change,\n\t\t\t\t\t\t\t\tReorderBufferTXN *txn,\n\t\t\t\t\t\t\t\tbool addition,
      Size sz)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3457,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3460,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 8
    argNames:
    - rb
    - xid
    - lsn
    - locator
    - tid
    - cmin
    - cmax
    - combocid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - RelFileLocator
    - ItemPointerData
    - CommandId
    - CommandId
    - CommandId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3473
      start: 3451
    functionDepth: 3
    functionLinenumber: 3451
    functionLinenumberEnd: 3473
    functionName: ReorderBufferAddNewTupleCids
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - dlist_push_tail
    - ReorderBufferAllocChange
    - ReorderBufferTXNByXid
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferAddNewTupleCids(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\t XLogRecPtr lsn, RelFileLocator locator,\n\t\t\t\t\t\t\t
      ItemPointerData tid, CommandId cmin,\n\t\t\t\t\t\t\t CommandId cmax, CommandId
      combocid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3485,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3488,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3489,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - rb
    - xid
    - lsn
    - nmsgs
    - msgs
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - Size
    - SharedInvalidationMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3493
      start: 3478
    functionDepth: 4
    functionLinenumber: 3478
    functionLinenumberEnd: 3493
    functionName: ReorderBufferQueueInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferQueueChange
    - ReorderBufferAllocChange
    - palloc_array
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferQueueInvalidations(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\t\tXLogRecPtr lsn, Size nmsgs,\n\t\t\t\t\t\t\t\tSharedInvalidationMessage
      *msgs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3509,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3510,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3516,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - invals_out
    - ninvals_out
    - msgs_new
    - nmsgs_new
    argTypes:
    - SharedInvalidationMessage**
    - uint32*
    - SharedInvalidationMessage*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3522
      start: 3500
    functionDepth: 0
    functionLinenumber: 3500
    functionLinenumberEnd: 3522
    functionName: ReorderBufferAccumulateInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - palloc_array
    - repalloc_array
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferAccumulateInvalidations(SharedInvalidationMessage
      **invals_out,\n\t\t\t\t\t\t\t\t\t uint32 *ninvals_out,\n\t\t\t\t\t\t\t\t\t SharedInvalidationMessage
      *msgs_new,\n\t\t\t\t\t\t\t\t\t Size nmsgs_new)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3545,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3547,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3556,1
    - Dst: ReorderBufferAccumulateInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3558,1
    - Dst: ReorderBufferQueueInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3562,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - rb
    - xid
    - lsn
    - nmsgs
    - msgs
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - Size
    - SharedInvalidationMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3565
      start: 3537
    functionDepth: 5
    functionLinenumber: 3537
    functionLinenumberEnd: 3565
    functionName: ReorderBufferAddInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - rbtxn_get_toptxn
    - Assert
    - ReorderBufferTXNByXid
    - MemoryContextSwitchTo
    - ReorderBufferAccumulateInvalidations
    - ReorderBufferQueueInvalidations
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferAddInvalidations(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\t  XLogRecPtr lsn, Size nmsgs,\n\t\t\t\t\t\t\t  SharedInvalidationMessage
      *msgs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3586,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3588,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3597,1
    - Dst: rbtxn_distr_inval_overflowed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3599,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3615,1
    - Dst: ReorderBufferAccumulateInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3621,1
    - Dst: ReorderBufferQueueInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3627,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3629,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 5
    argNames:
    - rb
    - xid
    - lsn
    - nmsgs
    - msgs
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - Size
    - SharedInvalidationMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3630
      start: 3578
    functionDepth: 5
    functionLinenumber: 3578
    functionLinenumberEnd: 3630
    functionName: ReorderBufferAddDistributedInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - rbtxn_distr_inval_overflowed
    - rbtxn_get_toptxn
    - Assert
    - pfree
    - ReorderBufferTXNByXid
    - MemoryContextSwitchTo
    - ReorderBufferAccumulateInvalidations
    - ReorderBufferQueueInvalidations
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferAddDistributedInvalidations(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\t\t\t\t XLogRecPtr lsn, Size nmsgs,\n\t\t\t\t\t\t\t\t\t\t
      SharedInvalidationMessage *msgs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LocalExecuteInvalidationMessage
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3642,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - nmsgs
    - msgs
    argTypes:
    - uint32
    - SharedInvalidationMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3643
      start: 3636
    functionDepth: 1
    functionLinenumber: 3636
    functionLinenumberEnd: 3643
    functionName: ReorderBufferExecuteInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - LocalExecuteInvalidationMessage
    linkageType: ''
    returnType: void
    signature: void ReorderBufferExecuteInvalidations(uint32 nmsgs, SharedInvalidationMessage
      *msgs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3654,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3656,1
    - Dst: dclist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3659,1
    - Dst: rbtxn_is_subtxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3668,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3670,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3672,1
    - Dst: dclist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3675,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - rb
    - xid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3678
      start: 3648
    functionDepth: 3
    functionLinenumber: 3648
    functionLinenumberEnd: 3678
    functionName: ReorderBufferXidSetCatalogChanges
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - rbtxn_get_toptxn
    - rbtxn_has_catalog_changes
    - ReorderBufferTXNByXid
    - dclist_push_tail
    - rbtxn_is_subtxn
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferXidSetCatalogChanges(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\t\t  XLogRecPtr lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dclist_count
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3694,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3698,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3698,1
    - Dst: dclist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3699,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3705,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3705,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3712,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3714
      start: 3686
    functionDepth: 2
    functionLinenumber: 3686
    functionLinenumberEnd: 3714
    functionName: ReorderBufferGetCatalogChangesXacts
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - qsort
    - dclist_count
    - rbtxn_has_catalog_changes
    - Assert
    - palloc_array
    - dclist_foreach
    - dclist_container
    linkageType: ''
    returnType: TransactionId
    signature: 'TransactionId *

      ReorderBufferGetCatalogChangesXacts(ReorderBuffer *rb)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3725,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3730,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rb
    - xid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3731
      start: 3720
    functionDepth: 3
    functionLinenumber: 3720
    functionLinenumberEnd: 3731
    functionName: ReorderBufferXidHasCatalogChanges
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferTXNByXid
    - rbtxn_has_catalog_changes
    linkageType: ''
    returnType: bool
    signature: bool ReorderBufferXidHasCatalogChanges(ReorderBuffer *rb, TransactionId
      xid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3742,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3750,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3751,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rb
    - xid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3755
      start: 3737
    functionDepth: 3
    functionLinenumber: 3737
    functionLinenumberEnd: 3755
    functionName: ReorderBufferXidHasBaseSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 3
    functionsReached:
    - rbtxn_is_known_subxact
    - ReorderBufferTXNByXid
    linkageType: ''
    returnType: bool
    signature: bool ReorderBufferXidHasBaseSnapshot(ReorderBuffer *rb, TransactionId
      xid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3772,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3777,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - rb
    - sz
    argTypes:
    - ReorderBuffer*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3780
      start: 3767
    functionDepth: 1
    functionLinenumber: 3767
    functionLinenumberEnd: 3780
    functionName: ReorderBufferSerializeReserve
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - repalloc
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: void ReorderBufferSerializeReserve(ReorderBuffer *rb, Size sz)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap_const_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3787,1
    - Dst: pairingheap_const_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3788,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - pairingheap_node*
    - pairingheap_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3795
      start: 3784
    functionDepth: 1
    functionLinenumber: 3784
    functionLinenumberEnd: 3795
    functionName: ReorderBufferTXNSizeCompare
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - pairingheap_const_container
    linkageType: ''
    returnType: int
    signature: int ReorderBufferTXNSizeCompare(const pairingheap_node *a, const pairingheap_node
      *b, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3806,1
    - Dst: pairingheap_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3809,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3814
      start: 3800
    functionDepth: 1
    functionLinenumber: 3800
    functionLinenumberEnd: 3814
    functionName: ReorderBufferLargestTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - pairingheap_container
    - Assert
    - pairingheap_first
    linkageType: ''
    returnType: ReorderBufferTXN
    signature: 'ReorderBufferTXN *

      ReorderBufferLargestTXN(ReorderBuffer *rb)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3849,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3853,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3856,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3858,1
    - Dst: rbtxn_has_partial_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3861,1
    - Dst: rbtxn_has_streamable_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3862,1
    - Dst: rbtxn_is_aborted
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3863,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3876
      start: 3841
    functionDepth: 1
    functionLinenumber: 3841
    functionLinenumberEnd: 3876
    functionName: ReorderBufferLargestStreamableTopTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_container
    - dlist_foreach
    - rbtxn_has_streamable_change
    - rbtxn_is_known_subxact
    - rbtxn_is_aborted
    - rbtxn_has_partial_change
    linkageType: ''
    returnType: ReorderBufferTXN
    signature: 'ReorderBufferTXN *

      ReorderBufferLargestStreamableTopTXN(ReorderBuffer *rb)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferCanStartStreaming
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3934,1
    - Dst: ReorderBufferLargestStreamableTopTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3935,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3938,1
    - Dst: rbtxn_is_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3938,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3939,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3940,1
    - Dst: ReorderBufferCheckAndTruncateAbortedTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3943,1
    - Dst: ReorderBufferStreamTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3946,1
    - Dst: ReorderBufferLargestTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3957,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3959,1
    - Dst: ReorderBufferCheckAndTruncateAbortedTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3962,1
    - Dst: ReorderBufferSerializeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3965,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3972,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3973,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3983,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3986,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3987
      start: 3891
    functionDepth: 4
    functionLinenumber: 3891
    functionLinenumberEnd: 3987
    functionName: ReorderBufferCheckMemoryLimit
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferCanStartStreaming
    - ReorderBufferStreamTXN
    - ReorderBufferLargestStreamableTopTXN
    - Assert
    - ReorderBufferCheckAndTruncateAbortedTXN
    - ReorderBufferLargestTXN
    - rbtxn_is_toptxn
    - UpdateDecodingStats
    - ReorderBufferSerializeTXN
    linkageType: ''
    returnType: void
    signature: void ReorderBufferCheckMemoryLimit(ReorderBuffer *rb)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4002,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4006,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4010,1
    - Dst: ReorderBufferSerializeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4011,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4015,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4019,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4026,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4031,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4033,1
    - Dst: ReorderBufferSerializedPath
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4039,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4043,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4047,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4048,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4049,1
    - Dst: ReorderBufferSerializeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4052,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4053,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4054,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4060,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4069,1
    - Dst: rbtxn_is_serialized_clear
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4069,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4072,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4075,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4076,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4076,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4081,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4082
      start: 3992
    functionDepth: 2
    functionLinenumber: 3992
    functionLinenumberEnd: 4082
    functionName: ReorderBufferSerializeTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 3
    functionsReached:
    - XLByteInSeg
    - rbtxn_is_serialized
    - ReorderBufferSerializeChange
    - ReorderBufferChangeMemoryUpdate
    - XLByteToSeg
    - elog
    - rbtxn_is_serialized_clear
    - OpenTransientFile
    - Assert
    - ReorderBufferSerializedPath
    - errmsg
    - dlist_delete
    - UpdateDecodingStats
    - CloseTransientFile
    - dlist_foreach
    - dlist_container
    - ereport
    - dlist_foreach_modify
    - ReorderBufferFreeChange
    - errcode_for_file_access
    - dlist_is_empty
    - ReorderBufferSerializeTXN
    linkageType: ''
    returnType: void
    signature: void ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN
      *txn)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4094,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4097,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4131,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4139,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4142,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4148,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4151,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4159,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4163,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4171,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4173,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4178,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4180,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4194,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4199,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4216,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4221,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4226,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4233,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4249,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4255,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4271,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4272,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4276,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4280,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4281,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4282,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4298,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 108
    argCount: 4
    argNames:
    - rb
    - txn
    - fd
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - int
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4299
      start: 4087
    functionDepth: 2
    functionLinenumber: 4087
    functionLinenumberEnd: 4299
    functionName: ReorderBufferSerializeChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - memcpy
    - Assert
    - ereport
    - write
    - ReorderBufferSerializeReserve
    - pgstat_report_wait_end
    - strlen
    - errmsg
    - pgstat_report_wait_start
    - CloseTransientFile
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferSerializeChange(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t int fd, ReorderBufferChange *change)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4308
      start: 4302
    functionDepth: 0
    functionLinenumber: 4302
    functionLinenumberEnd: 4308
    functionName: ReorderBufferCanStream
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ReorderBufferCanStream(ReorderBuffer *rb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4318,1
    - Dst: ReorderBufferCanStream
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4326,1
    - Dst: SnapBuildXactNeedsSkip
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4331
      start: 4311
    functionDepth: 1
    functionLinenumber: 4311
    functionLinenumberEnd: 4331
    functionName: ReorderBufferCanStartStreaming
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - SnapBuildCurrentState
    - ReorderBufferCanStream
    - SnapBuildXactNeedsSkip
    linkageType: ''
    returnType: bool
    signature: bool ReorderBufferCanStartStreaming(ReorderBuffer *rb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4346,1
    - Dst: rbtxn_is_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4346,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4369,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4372,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4374,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4378,1
    - Dst: ReorderBufferTransferSnapToParent
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4388,1
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4393,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4399,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4399,1
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4415,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4419,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4420,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4430,1
    - Dst: ReorderBufferProcessTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4434,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4446,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4447,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4448,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4449
      start: 4337
    functionDepth: 5
    functionLinenumber: 4337
    functionLinenumberEnd: 4449
    functionName: ReorderBufferStreamTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 3
    functionsReached:
    - dlist_is_empty
    - ReorderBufferFreeSnap
    - Assert
    - dlist_container
    - ReorderBufferTransferSnapToParent
    - ReorderBufferProcessTXN
    - rbtxn_is_streamed
    - rbtxn_is_toptxn
    - UpdateDecodingStats
    - ReorderBufferCopySnap
    - dlist_foreach
    linkageType: ''
    returnType: void
    signature: void ReorderBufferStreamTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4493,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 1
    argNames:
    - change
    argTypes:
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4533
      start: 4454
    functionDepth: 0
    functionLinenumber: 4454
    functionLinenumberEnd: 4533
    functionName: ReorderBufferChangeSize
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 4
    functionsReached:
    - strlen
    linkageType: ''
    returnType: Size
    signature: Size ReorderBufferChangeSize(ReorderBufferChange *change)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4548,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4549,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4549,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4552,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4555,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4557,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4558,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4561,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4561,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4563,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4570,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4580,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4580,1
    - Dst: ReorderBufferSerializedPath
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4586,1
    - Dst: PathNameOpenFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4589,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4601,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4602,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4603,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4612,1
    - Dst: FileRead
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4613,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4620,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4626,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4627,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4628,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4630,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4631,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4632,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4640,1
    - Dst: FileRead
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4651,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4652,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4653,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4655,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4656,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4657,1
    - Dst: ReorderBufferRestoreChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4667,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 4
    argNames:
    - rb
    - txn
    - file
    - segno
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - TXNEntryFile*
    - XLogSegNo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4672
      start: 4539
    functionDepth: 2
    functionLinenumber: 4539
    functionLinenumberEnd: 4672
    functionName: ReorderBufferRestoreChanges
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - PathNameOpenFile
    - errcode_for_file_access
    - XLogRecPtrIsValid
    - dlist_is_empty
    - Assert
    - dlist_container
    - ereport
    - CHECK_FOR_INTERRUPTS
    - ReorderBufferSerializeReserve
    - ReorderBufferSerializedPath
    - FileClose
    - FileRead
    - ReorderBufferRestoreChange
    - errmsg
    - dlist_foreach_modify
    - dlist_delete
    - ReorderBufferFreeChange
    - XLByteToSeg
    linkageType: ''
    returnType: Size
    signature: "Size ReorderBufferRestoreChanges(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\tTXNEntryFile *file, XLogSegNo *segno)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4691,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4694,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4711,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4714,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4723,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4732,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4736,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4739,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4748,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4758,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4760,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4762,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4763,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4767,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4769,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4771,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4783,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4786,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4802,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4806,1
    - Dst: ReorderBufferAllocRelids
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4818,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4819,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4831,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4842,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4843,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 73
    argCount: 3
    argNames:
    - rb
    - txn
    - data
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4844
      start: 4682
    functionDepth: 2
    functionLinenumber: 4682
    functionLinenumberEnd: 4844
    functionName: ReorderBufferRestoreChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - memcpy
    - MemoryContextAlloc
    - Assert
    - ReorderBufferChangeSize
    - ReorderBufferAllocTupleBuf
    - ReorderBufferAllocChange
    - ReorderBufferAllocRelids
    - dlist_push_tail
    - ReorderBufferChangeMemoryUpdate
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferRestoreChange(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t   char *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4856,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4857,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4857,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4859,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4860,1
    - Dst: ReorderBufferSerializedPath
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4867,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4868,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4869,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4870,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4871,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4873
      start: 4849
    functionDepth: 1
    functionLinenumber: 4849
    functionLinenumberEnd: 4873
    functionName: ReorderBufferRestoreCleanup
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - errcode_for_file_access
    - XLogRecPtrIsValid
    - unlink
    - Assert
    - ereport
    - ReorderBufferSerializedPath
    - errmsg
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: void ReorderBufferRestoreCleanup(ReorderBuffer *rb, ReorderBufferTXN
      *txn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4887,1
    - Dst: lstat
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4890,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4890,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4893,1
    - Dst: ReadDirExtended
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4894,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4897,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4899,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4903,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4904,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4906,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4910,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - slotname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4911
      start: 4879
    functionDepth: 1
    functionLinenumber: 4879
    functionLinenumberEnd: 4911
    functionName: ReorderBufferCleanupSerializedTXNs
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - errcode_for_file_access
    - ReadDirExtended
    - unlink
    - AllocateDir
    - FreeDir
    - ereport
    - snprintf
    - strncmp
    - errmsg
    - sprintf
    - lstat
    - S_ISDIR
    linkageType: ''
    returnType: void
    signature: void ReorderBufferCleanupSerializedTXNs(const char *slotname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4924,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4926,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4928,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - path
    - slot
    - xid
    - segno
    argTypes:
    - char*
    - ReplicationSlot*
    - TransactionId
    - XLogSegNo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4930
      start: 4918
    functionDepth: 1
    functionLinenumber: 4918
    functionLinenumberEnd: 4930
    functionName: ReorderBufferSerializedPath
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 3
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLogSegNoOffsetToRecPtr
    - NameStr
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferSerializedPath(char *path, ReplicationSlot *slot,
      TransactionId xid,\n\t\t\t\t\t\t\tXLogSegNo segno)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4942,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4943,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4945,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4946,1
    - Dst: ReplicationSlotValidateName
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4950,1
    - Dst: ReorderBufferCleanupSerializedTXNs
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4957,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4959,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4960
      start: 4936
    functionDepth: 2
    functionLinenumber: 4936
    functionLinenumberEnd: 4960
    functionName: StartupReorderBuffer
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - strcmp
    - AllocateDir
    - FreeDir
    - ReplicationSlotValidateName
    - ReorderBufferCleanupSerializedTXNs
    - ReadDir
    linkageType: ''
    returnType: void
    signature: void StartupReorderBuffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4975,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4982
      start: 4970
    functionDepth: 1
    functionLinenumber: 4970
    functionLinenumberEnd: 4982
    functionName: ReorderBufferToastInitHash
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_create
    linkageType: ''
    returnType: void
    signature: void ReorderBufferToastInitHash(ReorderBuffer *rb, ReorderBufferTXN
      *txn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5000,1
    - Dst: ReorderBufferToastInitHash
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5005,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5007,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5007,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5010,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5010,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5011,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5012,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5012,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5013,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5016,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5020,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5025,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5028,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5032,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5035,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5035,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5036,1
    - Dst: VARATT_IS_EXTENDED
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5039,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5040,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5041,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5043,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5045,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5050,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 4
    argNames:
    - rb
    - txn
    - relation
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5051
      start: 4990
    functionDepth: 3
    functionLinenumber: 4990
    functionLinenumberEnd: 5051
    functionName: ReorderBufferToastAppendChunk
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferToastInitHash
    - elog
    - VARATT_IS_SHORT
    - VARSIZE
    - hash_search
    - DatumGetObjectId
    - RelationGetDescr
    - Assert
    - fastgetattr
    - VARATT_IS_EXTENDED
    - dlist_init
    - VARSIZE_SHORT
    - DatumGetInt32
    - DatumGetPointer
    - dlist_push_tail
    - IsToastRelation
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferToastAppendChunk(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t  Relation relation, ReorderBufferChange *change)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5103,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5105,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5108,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5110,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5112,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5113,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5114,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5115,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5117,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5120,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5121,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5122,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5126,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5130,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5154,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5157,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5160,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5166,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5174,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5178,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5183,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5190,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5192,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5195,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5195,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5196,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5196,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5198,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5198,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5199,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5200,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5203,1
    - Dst: VARATT_EXTERNAL_GET_EXTSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5203,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5206,1
    - Dst: SET_VARSIZE_COMPRESSED
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5207,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5209,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5211,1
    - Dst: SET_VARTAG_EXTERNAL
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5214,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5215,1
    - Dst: VARDATA_EXTERNAL
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5215,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5218,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5226,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5228,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5230,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5237,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5238,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5242,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5242,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5244,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5245,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5246,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5248,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5251,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5253,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5254,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 71
    argCount: 4
    argNames:
    - rb
    - txn
    - relation
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5255
      start: 5073
    functionDepth: 6
    functionLinenumber: 5073
    functionLinenumberEnd: 5255
    functionName: ReorderBufferToastReplace
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - VARATT_EXTERNAL_IS_COMPRESSED
    - SET_VARSIZE_COMPRESSED
    - heap_form_tuple
    - VARATT_EXTERNAL_GET_POINTER
    - RelationGetRelationName
    - VARDATA
    - SET_VARSIZE
    - ReorderBufferChangeMemoryUpdate
    - elog
    - memcpy
    - Assert
    - RelationGetDescr
    - VARDATA_EXTERNAL
    - pfree
    - VARATT_EXTERNAL_GET_EXTSIZE
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - dlist_foreach
    - VARATT_IS_SHORT
    - VARSIZE
    - heap_deform_tuple
    - fastgetattr
    - dlist_container
    - RelationIdGetRelation
    - memset
    - SET_VARTAG_EXTERNAL
    - TupleDescCompactAttr
    - palloc0_array
    - hash_search
    - ReorderBufferChangeSize
    - palloc0
    - MemoryContextSwitchTo
    - RelationIsValid
    - RelationClose
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferToastReplace(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t  Relation relation, ReorderBufferChange *change)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5270,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5271,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5276,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5278,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5281,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5283,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5284,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5288,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5290
      start: 5260
    functionDepth: 2
    functionLinenumber: 5260
    functionLinenumberEnd: 5290
    functionName: ReorderBufferToastReset
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 4
    functionsReached:
    - pfree
    - dlist_container
    - hash_destroy
    - hash_seq_search
    - hash_seq_init
    - dlist_foreach_modify
    - dlist_delete
    - ReorderBufferFreeChange
    linkageType: ''
    returnType: void
    signature: void ReorderBufferToastReset(ReorderBuffer *rb, ReorderBufferTXN *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5337,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5338,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5340,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5344,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tuplecid_data
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5350
      start: 5331
    functionDepth: 3
    functionLinenumber: 5331
    functionLinenumberEnd: 5350
    functionName: DisplayMapping
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - elog
    - hash_seq_search
    - hash_seq_init
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: void DisplayMapping(HTAB *tuplecid_data)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5367,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5368,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5370,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5371,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5372,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5382,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5385,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5386,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5387,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5390,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5391,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5392,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5397,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5398,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5399,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5404,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5409,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5416,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5430,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5441,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5442,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5443,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5444,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 2
    argNames:
    - tuplecid_data
    - fname
    argTypes:
    - HTAB*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5445
      start: 5359
    functionDepth: 2
    functionLinenumber: 5359
    functionLinenumberEnd: 5445
    functionName: ApplyLogicalMappingFile
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - OpenTransientFile
    - hash_search
    - ItemPointerCopy
    - Assert
    - ereport
    - pgstat_report_wait_start
    - pgstat_report_wait_end
    - memset
    - errmsg
    - sprintf
    - CloseTransientFile
    - errcode_for_file_access
    - read
    linkageType: ''
    returnType: void
    signature: void ApplyLogicalMappingFile(HTAB *tuplecid_data, const char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - xid
    - xip
    - num
    argTypes:
    - TransactionId
    - TransactionId*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5456
      start: 5451
    functionDepth: 0
    functionLinenumber: 5451
    functionLinenumberEnd: 5456
    functionName: TransactionIdInArray
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - bsearch
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdInArray(TransactionId xid, TransactionId *xip, Size
      num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5464,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5465,1
    - Dst: pg_cmp_u64
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a_p
    - b_p
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5468
      start: 5461
    functionDepth: 1
    functionLinenumber: 5461
    functionLinenumberEnd: 5468
    functionName: file_sort_by_lsn
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - lfirst
    - pg_cmp_u64
    linkageType: ''
    returnType: int
    signature: int file_sort_by_lsn(const ListCell *a_p, const ListCell *b_p)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5481,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5483,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5484,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5495,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5496,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5500,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5503,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5506,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5519,1
    - Dst: TransactionIdInArray
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5523,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5527,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5529,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5530,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5532,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5535,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5539,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5541,1
    - Dst: ApplyLogicalMappingFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5543,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5544,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 29
    argCount: 3
    argNames:
    - tuplecid_data
    - relid
    - snapshot
    argTypes:
    - HTAB*
    - Oid
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5546
      start: 5474
    functionDepth: 6
    functionLinenumber: 5474
    functionLinenumberEnd: 5546
    functionName: UpdateLogicalMappings
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - elog
    - TransactionIdInArray
    - strcmp
    - list_sort
    - pfree
    - sscanf
    - AllocateDir
    - TransactionIdDidCommit
    - lappend
    - FreeDir
    - ApplyLogicalMappingFile
    - IsSharedRelation
    - lfirst
    - strncmp
    - palloc_object
    - ReadDir
    - strcpy
    linkageType: ''
    returnType: void
    signature: void UpdateLogicalMappings(HTAB *tuplecid_data, Oid relid, Snapshot
      snapshot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5539,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5541,1
    - Dst: ApplyLogicalMappingFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5543,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5545
      start: 5537
    functionDepth: 3
    functionLinenumber: 5537
    functionLinenumberEnd: 5545
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 378
    functionsReached:
    - elog
    - pfree
    - lfirst
    - ApplyLogicalMappingFile
    linkageType: ''
    returnType: void
    signature: void foreach(file, files)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5576,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5578,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5578,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5584,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5588,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5588,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5590,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5595,1
    - Dst: UpdateLogicalMappings
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5605,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 6
    argNames:
    - tuplecid_data
    - snapshot
    - htup
    - buffer
    - cmin
    - cmax
    argTypes:
    - HTAB*
    - Snapshot
    - HeapTuple
    - Buffer
    - CommandId*
    - CommandId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5618
      start: 5552
    functionDepth: 7
    functionLinenumber: 5552
    functionLinenumberEnd: 5618
    functionName: ResolveCminCmaxDuringDecoding
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - BufferIsLocal
    - hash_search
    - ItemPointerCopy
    - Assert
    - BufferGetTag
    - memset
    - UpdateLogicalMappings
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: bool
    signature: "bool ResolveCminCmaxDuringDecoding(HTAB *tuplecid_data,\n\t\t\t\t\t\t\t
      \ Snapshot snapshot,\n\t\t\t\t\t\t\t  HeapTuple htup, Buffer buffer,\n\t\t\t\t\t\t\t
      \ CommandId *cmin, CommandId *cmax)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rb
    - xid
    - msgs
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - SharedInvalidationMessage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5641
      start: 5626
    functionDepth: 3
    functionLinenumber: 5626
    functionLinenumberEnd: 5641
    functionName: ReorderBufferGetInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferTXNByXid
    linkageType: ''
    returnType: uint32
    signature: "uint32 ReorderBufferGetInvalidations(ReorderBuffer *rb, TransactionId
      xid,\n\t\t\t\t\t\t\t  SharedInvalidationMessage **msgs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ctx
    - lsn
    - xid
    - last_write
    argTypes:
    - LogicalDecodingContext*
    - XLogRecPtr
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: LogicalOutputPrepareWrite
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - resetStringInfo
    linkageType: ''
    returnType: void
    signature: "void LogicalOutputPrepareWrite(LogicalDecodingContext *ctx, XLogRecPtr
      lsn, TransactionId xid,\n\t\t\t\t\t\t  bool last_write)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:71,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:75,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:76,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:77,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:84,1
    - Dst: pg_verify_mbstr
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:84,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:84,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:89,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:89,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - lsn
    - xid
    - last_write
    argTypes:
    - LogicalDecodingContext*
    - XLogRecPtr
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 93
    functionName: LogicalOutputWrite
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - GetDatabaseEncoding
    - tuplestore_putvalues
    - TransactionIdGetDatum
    - pg_verify_mbstr
    - cstring_to_text_with_len
    - LSNGetDatum
    - memset
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: "void LogicalOutputWrite(LogicalDecodingContext *ctx, XLogRecPtr lsn,
      TransactionId xid,\n\t\t\t\t   bool last_write)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:116,1
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:118,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:120,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:121,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:123,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:124,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:126,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:129,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:131,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:134,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:136,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:137,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:138,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:139,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:140,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:143,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:148,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:151,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:154,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:155,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:156,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:170,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:170,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:172,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:175,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:176,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:177,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:181,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:182,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:184,1
    - Dst: makeDefElem
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:184,1
    - Dst: makeString
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:184,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:188,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:195,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:196,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:198,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:200,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:200,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:202,1
    - Dst: CreateDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:205,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:208,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:222,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:224,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:225,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:226,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:232,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:235,1
    - Dst: WaitForStandbyConfirmation
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:237,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:246,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:249,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:257,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:259,1
    - Dst: LogicalDecodingProcessRecord
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:275,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:279,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:285,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:292,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:294,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:309,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:313,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:315,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:316,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:318,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:321,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:323,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:325,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 82
    argCount: 3
    argNames:
    - fcinfo
    - confirm
    - binary
    argTypes:
    - FunctionCallInfo
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 98
    functionDepth: 6
    functionLinenumber: 98
    functionLinenumberEnd: 328
    functionName: pg_logical_slot_get_changes_guts
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - GetFlushRecPtr
    - PG_TRY
    - ReplicationSlotMarkDirty
    - errcode
    - CreateDecodingContext
    - GetXLogReplayRecPtr
    - format_procedure
    - ARR_NDIM
    - PG_GETARG_ARRAYTYPE_P
    - NameStr
    - RecoveryInProgress
    - ReplicationSlotAcquire
    - elog
    - XLogRecPtrIsValid
    - PG_GETARG_NAME
    - Assert
    - FreeDecodingContext
    - PG_RE_THROW
    - errmsg
    - array_contains_nulls
    - TextDatumGetCString
    - CheckLogicalDecodingRequirements
    - PG_END_TRY
    - InvalidateSystemCaches
    - WaitForStandbyConfirmation
    - palloc0_object
    - LogicalDecodingProcessRecord
    - makeString
    - lappend
    - ereport
    - CHECK_FOR_INTERRUPTS
    - XLogBeginRead
    - XL_ROUTINE
    - PG_GETARG_LSN
    - XLogReadRecord
    - ReplicationSlotRelease
    - PG_GETARG_INT32
    - deconstruct_array_builtin
    - PG_CATCH
    - CheckSlotPermissions
    - InitMaterializedSRF
    - LogicalConfirmReceivedLocation
    - makeDefElem
    - MemoryContextSwitchTo
    - ARR_ELEMTYPE
    - Min
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool
      confirm, bool binary)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_logical_slot_get_changes_guts
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 7
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: pg_logical_slot_get_changes
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - pg_logical_slot_get_changes_guts
    linkageType: ''
    returnType: Datum
    signature: Datum pg_logical_slot_get_changes(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_logical_slot_get_changes_guts
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 342
    functionDepth: 7
    functionLinenumber: 342
    functionLinenumberEnd: 346
    functionName: pg_logical_slot_peek_changes
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - pg_logical_slot_get_changes_guts
    linkageType: ''
    returnType: Datum
    signature: Datum pg_logical_slot_peek_changes(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_logical_slot_get_changes_guts
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 351
    functionDepth: 7
    functionLinenumber: 351
    functionLinenumberEnd: 355
    functionName: pg_logical_slot_get_binary_changes
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - pg_logical_slot_get_changes_guts
    linkageType: ''
    returnType: Datum
    signature: Datum pg_logical_slot_get_binary_changes(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_logical_slot_get_changes_guts
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 7
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pg_logical_slot_peek_binary_changes
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - pg_logical_slot_get_changes_guts
    linkageType: ''
    returnType: Datum
    signature: Datum pg_logical_slot_peek_binary_changes(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:373,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:374,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:374,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:375,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:376,1
    - Dst: LogLogicalMessage
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:379,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:379,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:379,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 370
    functionDepth: 6
    functionLinenumber: 370
    functionLinenumberEnd: 382
    functionName: pg_logical_emit_message_bytea
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_GETARG_BOOL
    - PG_RETURN_LSN
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - text_to_cstring
    - LogLogicalMessage
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_logical_emit_message_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_logical_emit_message_bytea
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 384
    functionDepth: 7
    functionLinenumber: 384
    functionLinenumberEnd: 389
    functionName: pg_logical_emit_message_text
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - pg_logical_emit_message_bytea
    linkageType: ''
    returnType: Datum
    signature: Datum pg_logical_emit_message_text(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FetchRelationStates
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:104,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:108,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:109,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:115,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:118,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:123,1
    - Dst: logicalrep_sync_worker_count
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:131,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:132,1
    - Dst: launch_sync_worker
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:138,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 140
    functionName: ProcessSequencesForSync
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - FetchRelationStates
    - launch_sync_worker
    - LWLockAcquire
    - CommitTransactionCommand
    - logicalrep_sync_worker_count
    - LWLockRelease
    - logicalrep_worker_find
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void ProcessSequencesForSync(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:151,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:155,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:158,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - seqindexes
    - buf
    argTypes:
    - List*
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 162
    functionName: get_sequences_string
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - list_nth
    - appendStringInfoString
    - appendStringInfo
    - resetStringInfo
    linkageType: ''
    returnType: void
    signature: void get_sequences_string(List *seqindexes, StringInfo buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_nth
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:155,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:158,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 3
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: foreach_int
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - list_nth
    - appendStringInfoString
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void foreach_int(seqidx, seqindexes)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:188,1
    - Dst: get_sequences_string
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:192,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:193,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:194,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:195,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:197,1
    - Dst: get_sequences_string
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:213,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:214,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:216,1
    - Dst: errhint_plural
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:219,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:223,1
    - Dst: get_sequences_string
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:228,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:229,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:230,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:231,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:233,1
    - Dst: errhint_plural
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:235,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:239,1
    - Dst: get_sequences_string
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:246,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:247,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:249,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:253,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:254,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:255,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - mismatched_seqs_idx
    - sub_insuffperm_seqs_idx
    - pub_insuffperm_seqs_idx
    - missing_seqs_idx
    argTypes:
    - List*
    - List*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 175
    functionDepth: 4
    functionLinenumber: 175
    functionLinenumberEnd: 257
    functionName: report_sequence_errors
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - errmsg_plural
    - get_sequences_string
    - errcode
    - initStringInfo
    - ereport
    - errmsg
    - errhint_plural
    - list_length
    linkageType: ''
    returnType: void
    signature: "void report_sequence_errors(List *mismatched_seqs_idx,\n\t\t\t\t\t
      \  List *sub_insuffperm_seqs_idx,\n\t\t\t\t\t   List *pub_insuffperm_seqs_idx,\n\t\t\t\t\t
      \  List *missing_seqs_idx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:285,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:286,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:290,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:297,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:297,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:298,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:300,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:305,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:307,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:308,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:310,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:311,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:313,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:314,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:316,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:316,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:317,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:319,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:320,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:322,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:323,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:325,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:326,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:328,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:329,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:332,1
    - Dst: try_table_open
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:336,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:342,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:342,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:345,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:346,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:349,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:361,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:362,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:362,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:363,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:363,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:366,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 4
    argNames:
    - slot
    - sequence_rel
    - seqinfo
    - seqidx
    argTypes:
    - TupleTableSlot*
    - Relation*
    - LogicalRepSequenceInfo**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 368
    functionName: get_and_validate_seq_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - try_table_open
    - strcmp
    - RelationGetNamespace
    - RelationGetRelationName
    - DatumGetBool
    - SearchSysCache1
    - elog
    - slot_getattr
    - Assert
    - DatumGetObjectId
    - HeapTupleIsValid
    - ReleaseSysCache
    - ObjectIdGetDatum
    - DatumGetLSN
    - GETSTRUCT
    - get_namespace_name
    - DatumGetInt64
    - DatumGetInt32
    - list_nth
    linkageType: ''
    returnType: CopySeqResult
    signature: "CopySeqResult get_and_validate_seq_info(TupleTableSlot *slot, Relation
      *sequence_rel,\n\t\t\t\t\t\t  LogicalRepSequenceInfo **seqinfo, int *seqidx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SwitchToUntrustedUser
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:387,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:389,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:389,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:394,1
    - Dst: SetSequence
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:407,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:410,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:416,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - seqinfo
    - seqowner
    argTypes:
    - LogicalRepSequenceInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 374
    functionDepth: 8
    functionLinenumber: 374
    functionLinenumberEnd: 420
    functionName: copy_sequence
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - UpdateSubscriptionRelState
    - GetUserId
    - SwitchToUntrustedUser
    - pg_class_aclcheck
    - RestoreUserContext
    - SetSequence
    linkageType: ''
    returnType: CopySeqResult
    signature: CopySeqResult copy_sequence(LogicalRepSequenceInfo *seqinfo, Oid seqowner)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:429,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:438,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:439,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:443,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:462,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:470,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:473,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:475,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:476,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:478,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:517,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:529,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:529,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:531,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:532,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:533,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:536,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:537,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:544,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:549,1
    - Dst: get_and_validate_seq_info
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:552,1
    - Dst: copy_sequence
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:555,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:561,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:574,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:575,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:577,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:587,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:588,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:590,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:599,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:600,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:602,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:616,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:625,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:628,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:629,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:630,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:631,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:639,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:647,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:654,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:658,1
    - Dst: report_sequence_errors
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:671,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 78
    argCount: 1
    argNames:
    - conn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 425
    functionDepth: 9
    functionLinenumber: 425
    functionLinenumberEnd: 673
    functionName: copy_sequences
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - lappend_int
    - errcode
    - ProcessConfigFile
    - CommitTransactionCommand
    - table_close
    - resetStringInfo
    - elog
    - appendStringInfoString
    - get_and_validate_seq_info
    - MakeSingleTupleTableSlot
    - StartTransactionCommand
    - quote_literal_cstr
    - errmsg
    - list_length
    - tuplestore_gettupleslot
    - lengthof
    - walrcv_exec
    - ExecDropSingleTupleTableSlot
    - report_sequence_errors
    - initStringInfo
    - ereport
    - CHECK_FOR_INTERRUPTS
    - appendStringInfo
    - walrcv_clear_result
    - MemoryContextSwitchTo
    - list_nth
    - copy_sequence
    linkageType: ''
    returnType: void
    signature: void copy_sequences(WalReceiverConn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:691,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:693,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:695,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:698,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:700,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:703,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:705,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:707,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:707,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:714,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:716,1
    - Dst: try_table_open
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:718,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:727,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:735,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:737,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:739,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:739,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:740,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:740,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:741,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:743,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:745,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:749,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:750,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:752,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:764,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:765,1
    - Dst: GetSystemIdentifier
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:766,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:772,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:776,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:777,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:778,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:781,1
    - Dst: copy_sequences
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:783,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 679
    functionDepth: 10
    functionLinenumber: 679
    functionLinenumberEnd: 784
    functionName: LogicalRepSyncSequences
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - try_table_open
    - errcode
    - pstrdup
    - CommitTransactionCommand
    - GetSystemIdentifier
    - RelationGetNamespace
    - RelationGetRelationName
    - table_close
    - systable_endscan
    - walrcv_connect
    - HeapTupleIsValid
    - pfree
    - table_open
    - copy_sequences
    - StartTransactionCommand
    - errmsg
    - CharGetDatum
    - ObjectIdGetDatum
    - palloc0_object
    - systable_beginscan
    - lappend
    - initStringInfo
    - ereport
    - CHECK_FOR_INTERRUPTS
    - GETSTRUCT
    - get_namespace_name
    - ScanKeyInit
    - appendStringInfo
    - MemoryContextSwitchTo
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void LogicalRepSyncSequences(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:796,1
    - Dst: am_sequencesync_worker
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:796,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:798,1
    - Dst: LogicalRepSyncSequences
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:801,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:803,1
    - Dst: DisableSubscriptionAndExit
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:806,1
    - Dst: AbortOutOfAnyTransaction
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:814,1
    - Dst: pgstat_report_subscription_error
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:815,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:817,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 793
    functionDepth: 11
    functionLinenumber: 793
    functionLinenumberEnd: 821
    functionName: start_sequence_sync
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - am_sequencesync_worker
    - pgstat_report_subscription_error
    - PG_CATCH
    - PG_TRY
    - Assert
    - DisableSubscriptionAndExit
    - LogicalRepSyncSequences
    - PG_RE_THROW
    - AbortOutOfAnyTransaction
    - PG_END_TRY
    linkageType: ''
    returnType: void
    signature: void start_sequence_sync(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:827,1
    - Dst: SetupApplyOrSyncWorker
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:829,1
    - Dst: start_sequence_sync
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:831,1
    - Dst: FinishSyncWorker
      Src: /src/postgres/src/backend/replication/logical/sequencesync.c:833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 824
    functionDepth: 12
    functionLinenumber: 824
    functionLinenumberEnd: 834
    functionName: SequenceSyncWorkerMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/sequencesync.c
    functionUses: 0
    functionsReached:
    - start_sequence_sync
    - DatumGetInt32
    - SetupApplyOrSyncWorker
    - FinishSyncWorker
    linkageType: ''
    returnType: void
    signature: void SequenceSyncWorkerMain(Datum main_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 523
    functionName: is_skipping_changes
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_skipping_changes()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:651,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/worker.c:654,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/worker.c:659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - suboid
    - relid
    - originname
    - szoriginname
    argTypes:
    - Oid
    - Oid
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 647
    functionDepth: 1
    functionLinenumber: 647
    functionLinenumberEnd: 661
    functionName: ReplicationOriginNameForLogicalRep
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 6
    functionsReached:
    - OidIsValid
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void ReplicationOriginNameForLogicalRep(Oid suboid, Oid relid,\n\t\t\t\t\t\t\t\t
      \  char *originname, Size szoriginname)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:699,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:700,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:701,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/worker.c:703,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:714,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:719,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - rel
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 723
    functionName: should_apply_changes_for_rel
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - ereport
    - errmsg
    - errdetail
    linkageType: ''
    returnType: bool
    signature: bool should_apply_changes_for_rel(LogicalRepRelMapEntry *rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:735,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:737,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:739,1
    - Dst: maybe_reread_subscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:740,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:743,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:743,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 732
    functionDepth: 2
    functionLinenumber: 732
    functionLinenumberEnd: 746
    functionName: begin_replication_step
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - IsTransactionState
    - SetCurrentStatementStartTimestamp
    - MemoryContextSwitchTo
    - StartTransactionCommand
    - GetTransactionSnapshot
    - maybe_reread_subscription
    - PushActiveSnapshot
    linkageType: ''
    returnType: void
    signature: void begin_replication_step(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:758,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/worker.c:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 755
    functionDepth: 2
    functionLinenumber: 755
    functionLinenumberEnd: 761
    functionName: end_replication_step
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - CommandCounterIncrement
    linkageType: ''
    returnType: void
    signature: void end_replication_step(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:791,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:797,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:797,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/worker.c:811,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:813,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:814,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:815,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:816,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:821,1
    - Dst: subxact_info_add
      Src: /src/postgres/src/backend/replication/logical/worker.c:824,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:827,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:831,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:839,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:847,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:851,1
    - Dst: pa_start_subtrans
      Src: /src/postgres/src/backend/replication/logical/worker.c:861,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:865,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 2
    argNames:
    - action
    - s
    argTypes:
    - LogicalRepMsgType
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 783
    functionDepth: 7
    functionLinenumber: 783
    functionLinenumberEnd: 868
    functionName: handle_streamed_transaction
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - elog
    - errmsg_internal
    - errcode
    - Assert
    - subxact_info_add
    - pa_start_subtrans
    - ereport
    - pa_send_data
    - get_transaction_apply_action
    - pa_switch_to_partial_serialize
    - stream_write_change
    - pq_getmsgint
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: bool handle_streamed_transaction(LogicalRepMsgType action, StringInfo
      s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/logical/worker.c:885,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/replication/logical/worker.c:888,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/replication/logical/worker.c:890,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/worker.c:892,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:896,1
    - Dst: ExecInitRangeTable
      Src: /src/postgres/src/backend/replication/logical/worker.c:898,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:898,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/replication/logical/worker.c:899,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/replication/logical/worker.c:901,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:907,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:918,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/replication/logical/worker.c:920,1
    - Dst: AfterTriggerBeginQuery
      Src: /src/postgres/src/backend/replication/logical/worker.c:923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - rel
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 876
    functionDepth: 6
    functionLinenumber: 876
    functionLinenumberEnd: 928
    functionName: create_edata_for_relation
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - CreateExecutorState
    - ExecInitRangeTable
    - InitResultRelInfo
    - lappend
    - makeNode
    - AfterTriggerBeginQuery
    - addRTEPermissionInfo
    - list_make1
    - GetCurrentCommandId
    - RelationGetRelid
    - bms_make_singleton
    linkageType: ''
    returnType: ApplyExecutionData
    signature: 'ApplyExecutionData *

      create_edata_for_relation(LogicalRepRelMapEntry *rel)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AfterTriggerEndQuery
      Src: /src/postgres/src/backend/replication/logical/worker.c:940,1
    - Dst: ExecCleanupTupleRouting
      Src: /src/postgres/src/backend/replication/logical/worker.c:944,1
    - Dst: ExecResetTupleTable
      Src: /src/postgres/src/backend/replication/logical/worker.c:953,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/replication/logical/worker.c:954,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/worker.c:955,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ApplyExecutionData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 934
    functionDepth: 1
    functionLinenumber: 934
    functionLinenumberEnd: 956
    functionName: finish_edata
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - pfree
    - ExecResetTupleTable
    - FreeExecutorState
    - AfterTriggerEndQuery
    - ExecCleanupTupleRouting
    linkageType: ''
    returnType: void
    signature: void finish_edata(ApplyExecutionData *edata)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:969,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:978,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/worker.c:984,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/worker.c:985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:987,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/replication/logical/worker.c:990,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/replication/logical/worker.c:999,1
    - Dst: expression_planner
      Src: /src/postgres/src/backend/replication/logical/worker.c:1004,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/replication/logical/worker.c:1007,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/replication/logical/worker.c:1015,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - rel
    - estate
    - slot
    argTypes:
    - LogicalRepRelMapEntry*
    - EState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 965
    functionDepth: 2
    functionLinenumber: 965
    functionLinenumberEnd: 1016
    functionName: slot_fill_defaults
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - expression_planner
    - Assert
    - RelationGetDescr
    - build_column_default
    - GetPerTupleExprContext
    - palloc_array
    - ExecEvalExpr
    - ExecInitExpr
    - TupleDescCompactAttr
    linkageType: ''
    returnType: void
    signature: "void slot_fill_defaults(LogicalRepRelMapEntry *rel, EState *estate,\n\t\t\t\t
      \  TupleTableSlot *slot)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:1030,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1033,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/worker.c:1036,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1044,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1045,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:1046,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:1059,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/replication/logical/worker.c:1061,1
    - Dst: getTypeBinaryInputInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:1076,1
    - Dst: OidReceiveFunctionCall
      Src: /src/postgres/src/backend/replication/logical/worker.c:1078,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1083,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1084,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:1085,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:1115,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 3
    argNames:
    - slot
    - rel
    - tupleData
    argTypes:
    - TupleTableSlot*
    - LogicalRepRelMapEntry*
    - LogicalRepTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1023
    functionDepth: 2
    functionLinenumber: 1023
    functionLinenumberEnd: 1116
    functionName: slot_store_data
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - getTypeInputInfo
    - errcode
    - Assert
    - OidReceiveFunctionCall
    - getTypeBinaryInputInfo
    - ereport
    - ExecStoreVirtualTuple
    - errmsg
    - ExecClearTuple
    - TupleDescAttr
    - OidInputFunctionCall
    linkageType: ''
    returnType: void
    signature: "void slot_store_data(TupleTableSlot *slot, LogicalRepRelMapEntry *rel,\n\t\t\t\tLogicalRepTupleData
      *tupleData)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:1139,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1145,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/worker.c:1146,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/worker.c:1147,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/worker.c:1148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1151,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/worker.c:1154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1161,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1162,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:1163,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:1178,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/replication/logical/worker.c:1180,1
    - Dst: getTypeBinaryInputInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:1195,1
    - Dst: OidReceiveFunctionCall
      Src: /src/postgres/src/backend/replication/logical/worker.c:1197,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:1204,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:1221,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 4
    argNames:
    - slot
    - srcslot
    - rel
    - tupleData
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    - LogicalRepRelMapEntry*
    - LogicalRepTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1130
    functionDepth: 2
    functionLinenumber: 1130
    functionLinenumberEnd: 1222
    functionName: slot_modify_data
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - getTypeInputInfo
    - memcpy
    - OidInputFunctionCall
    - errcode
    - Assert
    - OidReceiveFunctionCall
    - getTypeBinaryInputInfo
    - ereport
    - ExecStoreVirtualTuple
    - errmsg
    - ExecClearTuple
    - TupleDescAttr
    - slot_getallattrs
    linkageType: ''
    returnType: void
    signature: "void slot_modify_data(TupleTableSlot *slot, TupleTableSlot *srcslot,\n\t\t\t\t
      LogicalRepRelMapEntry *rel,\n\t\t\t\t LogicalRepTupleData *tupleData)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1233,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1233,1
    - Dst: logicalrep_read_begin
      Src: /src/postgres/src/backend/replication/logical/worker.c:1235,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1236,1
    - Dst: maybe_start_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:1240,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1227
    functionDepth: 1
    functionLinenumber: 1227
    functionLinenumberEnd: 1245
    functionName: apply_handle_begin
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - logicalrep_read_begin
    - Assert
    - set_apply_error_context_xact
    - maybe_start_skipping_changes
    - pgstat_report_activity
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void apply_handle_begin(StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_read_commit
      Src: /src/postgres/src/backend/replication/logical/worker.c:1257,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1261,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1262,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:1263,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:1264,1
    - Dst: apply_handle_commit_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1266,1
    - Dst: ProcessSyncingRelations
      Src: /src/postgres/src/backend/replication/logical/worker.c:1272,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1274,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1276
    functionName: apply_handle_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - errcode
    - apply_handle_commit_internal
    - ereport
    - ProcessSyncingRelations
    - reset_apply_error_context_info
    - pgstat_report_activity
    - logicalrep_read_commit
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void apply_handle_commit(StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1288,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1289,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1293,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1293,1
    - Dst: logicalrep_read_begin_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:1295,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1296,1
    - Dst: maybe_start_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:1300,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1281
    functionDepth: 2
    functionLinenumber: 1281
    functionLinenumberEnd: 1305
    functionName: apply_handle_begin_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - errcode
    - Assert
    - am_tablesync_worker
    - ereport
    - logicalrep_read_begin_prepare
    - set_apply_error_context_xact
    - maybe_start_skipping_changes
    - pgstat_report_activity
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void apply_handle_begin_prepare(StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseTransactionGid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1321,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:1328,1
    - Dst: BeginTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:1330,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1331,1
    - Dst: PrepareTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:1341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - prepare_data
    argTypes:
    - LogicalRepPreparedTxnData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1310
    functionDepth: 2
    functionLinenumber: 1310
    functionLinenumberEnd: 1342
    functionName: apply_handle_prepare_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - PrepareTransactionBlock
    - IsTransactionBlock
    - TwoPhaseTransactionGid
    - BeginTransactionBlock
    - CommitTransactionCommand
    linkageType: ''
    returnType: void
    signature: void apply_handle_prepare_internal(LogicalRepPreparedTxnData *prepare_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_read_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:1352,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1355,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1356,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1357,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:1358,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:1359,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1371,1
    - Dst: apply_handle_prepare_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1373,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1375,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1376,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:1377,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:1389,1
    - Dst: ProcessSyncingRelations
      Src: /src/postgres/src/backend/replication/logical/worker.c:1397,1
    - Dst: stop_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:1405,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:1406,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1408,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1409,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1347
    functionDepth: 3
    functionLinenumber: 1347
    functionLinenumberEnd: 1410
    functionName: apply_handle_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - begin_replication_step
    - logicalrep_read_prepare
    - end_replication_step
    - apply_handle_prepare_internal
    - errmsg_internal
    - store_flush_position
    - errcode
    - ereport
    - CommitTransactionCommand
    - ProcessSyncingRelations
    - stop_skipping_changes
    - reset_apply_error_context_info
    - pgstat_report_activity
    - clear_subscription_skip_lsn
    - LSN_FORMAT_ARGS
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void apply_handle_prepare(StringInfo s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_read_commit_prepared
      Src: /src/postgres/src/backend/replication/logical/worker.c:1427,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1428,1
    - Dst: TwoPhaseTransactionGid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1431,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1435,1
    - Dst: FinishPreparedTransaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:1444,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1445,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1446,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:1447,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:1449,1
    - Dst: ProcessSyncingRelations
      Src: /src/postgres/src/backend/replication/logical/worker.c:1456,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:1458,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1460,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1421
    functionDepth: 4
    functionLinenumber: 1421
    functionLinenumberEnd: 1462
    functionName: apply_handle_commit_prepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - end_replication_step
    - store_flush_position
    - logicalrep_read_commit_prepared
    - TwoPhaseTransactionGid
    - set_apply_error_context_xact
    - CommitTransactionCommand
    - FinishPreparedTransaction
    - ProcessSyncingRelations
    - reset_apply_error_context_info
    - pgstat_report_activity
    - clear_subscription_skip_lsn
    - begin_replication_step
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void apply_handle_commit_prepared(StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_read_rollback_prepared
      Src: /src/postgres/src/backend/replication/logical/worker.c:1479,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1480,1
    - Dst: TwoPhaseTransactionGid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1483,1
    - Dst: LookupGXact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1492,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1503,1
    - Dst: FinishPreparedTransaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:1504,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1505,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1506,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:1508,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:1511,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:1518,1
    - Dst: ProcessSyncingRelations
      Src: /src/postgres/src/backend/replication/logical/worker.c:1525,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1527,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1529
      start: 1473
    functionDepth: 4
    functionLinenumber: 1473
    functionLinenumberEnd: 1529
    functionName: apply_handle_rollback_prepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - end_replication_step
    - store_flush_position
    - pgstat_report_stat
    - TwoPhaseTransactionGid
    - set_apply_error_context_xact
    - CommitTransactionCommand
    - FinishPreparedTransaction
    - LookupGXact
    - ProcessSyncingRelations
    - reset_apply_error_context_info
    - pgstat_report_activity
    - clear_subscription_skip_lsn
    - begin_replication_step
    - logicalrep_read_rollback_prepared
    linkageType: ''
    returnType: void
    signature: void apply_handle_rollback_prepared(StringInfo s)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1545,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1546,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1547,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1551,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1552,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1553,1
    - Dst: logicalrep_read_stream_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:1555,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1556,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:1558,1
    - Dst: apply_spooled_messages
      Src: /src/postgres/src/backend/replication/logical/worker.c:1568,1
    - Dst: apply_handle_prepare_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1572,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1574,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:1580,1
    - Dst: stream_cleanup_files
      Src: /src/postgres/src/backend/replication/logical/worker.c:1585,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1591,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:1593,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:1596,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:1604,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1608,1
    - Dst: stream_open_and_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:1610,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:1614,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:1617,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:1627,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1629,1
    - Dst: apply_handle_prepare_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1632,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1634,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1636,1
    - Dst: pa_set_xact_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:1644,1
    - Dst: pa_unlock_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:1645,1
    - Dst: pa_reset_subtrans
      Src: /src/postgres/src/backend/replication/logical/worker.c:1647,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1649,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1653,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:1657,1
    - Dst: ProcessSyncingRelations
      Src: /src/postgres/src/backend/replication/logical/worker.c:1663,1
    - Dst: stop_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:1669,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:1670,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1672,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1674,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 55
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1534
    functionDepth: 5
    functionLinenumber: 1534
    functionLinenumberEnd: 1675
    functionName: apply_handle_stream_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errcode
    - CommitTransactionCommand
    - stream_close_file
    - ProcessSyncingRelations
    - pa_send_data
    - pa_reset_subtrans
    - stop_skipping_changes
    - reset_apply_error_context_info
    - stream_cleanup_files
    - elog
    - apply_handle_prepare_internal
    - pa_set_fileset_state
    - Assert
    - set_apply_error_context_xact
    - get_transaction_apply_action
    - pgstat_report_activity
    - pa_xact_finish
    - apply_spooled_messages
    - store_flush_position
    - pa_set_xact_state
    - errmsg_internal
    - am_tablesync_worker
    - ereport
    - pa_unlock_transaction
    - stream_open_and_write_change
    - clear_subscription_skip_lsn
    - begin_replication_step
    - end_replication_step
    - logicalrep_read_stream_prepare
    - pa_switch_to_partial_serialize
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void apply_handle_stream_prepare(StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:1691,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1691,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1692,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1693,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1694,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1682
    functionDepth: 2
    functionLinenumber: 1682
    functionLinenumberEnd: 1695
    functionName: apply_handle_origin
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - errcode
    - IsTransactionState
    - am_tablesync_worker
    - ereport
    linkageType: ''
    returnType: void
    signature: void apply_handle_origin(StringInfo s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1706,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:1720,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/replication/logical/worker.c:1722,1
    - Dst: FileSetInit
      Src: /src/postgres/src/backend/replication/logical/worker.c:1723,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:1725,1
    - Dst: stream_open_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:1729,1
    - Dst: subxact_info_read
      Src: /src/postgres/src/backend/replication/logical/worker.c:1733,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1735,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - xid
    - first_segment
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1736
      start: 1703
    functionDepth: 3
    functionLinenumber: 1703
    functionLinenumberEnd: 1736
    functionName: stream_start_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - FileSetInit
    - end_replication_step
    - subxact_info_read
    - MemoryContextSwitchTo
    - palloc_object
    - stream_open_file
    - begin_replication_step
    linkageType: ''
    returnType: void
    signature: void stream_start_internal(TransactionId xid, bool first_segment)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1752,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1753,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1754,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1757,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1757,1
    - Dst: logicalrep_read_stream_start
      Src: /src/postgres/src/backend/replication/logical/worker.c:1763,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1765,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1766,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1767,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1768,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1770,1
    - Dst: pa_allocate_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1774,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:1776,1
    - Dst: stream_start_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1794,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:1802,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/worker.c:1809,1
    - Dst: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/backend/replication/logical/worker.c:1815,1
    - Dst: pa_set_stream_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1818,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:1826,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1830,1
    - Dst: stream_start_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1838,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:1840,1
    - Dst: pa_set_stream_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1843,1
    - Dst: pa_lock_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:1850,1
    - Dst: pa_set_xact_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:1851,1
    - Dst: logicalrep_worker_wakeup
      Src: /src/postgres/src/backend/replication/logical/worker.c:1857,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1865,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1869,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1741
    functionDepth: 8
    functionLinenumber: 1741
    functionLinenumberEnd: 1870
    functionName: apply_handle_stream_start
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - pa_set_stream_apply_worker
    - errcode
    - pa_send_data
    - pa_unlock_stream
    - elog
    - pa_lock_transaction
    - Assert
    - stream_start_internal
    - set_apply_error_context_xact
    - get_transaction_apply_action
    - pgstat_report_activity
    - pa_set_xact_state
    - logicalrep_read_stream_start
    - errmsg_internal
    - logicalrep_worker_wakeup
    - ereport
    - pa_allocate_worker
    - TransactionIdIsValid
    - stream_write_change
    - pa_switch_to_partial_serialize
    - pg_atomic_add_fetch_u32
    linkageType: ''
    returnType: void
    signature: void apply_handle_stream_start(StringInfo s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: subxact_info_write
      Src: /src/postgres/src/backend/replication/logical/worker.c:1885,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:1886,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1889,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:1889,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1892,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/worker.c:1895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1896
      start: 1878
    functionDepth: 2
    functionLinenumber: 1878
    functionLinenumberEnd: 1896
    functionName: stream_stop_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - Assert
    - IsTransactionState
    - CommitTransactionCommand
    - stream_close_file
    - subxact_info_write
    linkageType: ''
    returnType: void
    signature: void stream_stop_internal(TransactionId xid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1908,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1909,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1910,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:1912,1
    - Dst: stream_stop_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1921,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/worker.c:1929,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:1931,1
    - Dst: pa_set_stream_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1933,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:1941,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:1945,1
    - Dst: stream_stop_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1946,1
    - Dst: pa_set_stream_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1947,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1951,1
    - Dst: pa_decr_and_wait_stream_block
      Src: /src/postgres/src/backend/replication/logical/worker.c:1977,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1981,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:1992,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1993,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1995,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1997,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1901
    functionDepth: 3
    functionLinenumber: 1901
    functionLinenumberEnd: 1998
    functionName: apply_handle_stream_stop
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - elog
    - pa_set_stream_apply_worker
    - errmsg_internal
    - errcode
    - Assert
    - ereport
    - IsTransactionOrTransactionBlock
    - stream_stop_internal
    - pa_send_data
    - get_transaction_apply_action
    - reset_apply_error_context_info
    - pgstat_report_activity
    - stream_write_change
    - pa_lock_stream
    - pa_switch_to_partial_serialize
    - pa_decr_and_wait_stream_block
    linkageType: ''
    returnType: void
    signature: void apply_handle_stream_stop(StringInfo s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_cleanup_files
      Src: /src/postgres/src/backend/replication/logical/worker.c:2012,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2037,1
    - Dst: subxact_info_read
      Src: /src/postgres/src/backend/replication/logical/worker.c:2038,1
    - Dst: cleanup_subxact_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:2057,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2058,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:2059,1
    - Dst: changes_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:2064,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:2065,1
    - Dst: BufFileTruncateFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:2069,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:2071,1
    - Dst: subxact_info_write
      Src: /src/postgres/src/backend/replication/logical/worker.c:2077,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2079,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:2080,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - xid
    - subxid
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2004
    functionDepth: 3
    functionLinenumber: 2004
    functionLinenumberEnd: 2082
    functionName: stream_abort_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - end_replication_step
    - BufFileClose
    - subxact_info_write
    - BufFileTruncateFileSet
    - CommitTransactionCommand
    - changes_filename
    - BufFileOpenFileSet
    - stream_cleanup_files
    - subxact_info_read
    - begin_replication_step
    - cleanup_subxact_info
    linkageType: ''
    returnType: void
    signature: void stream_abort_internal(TransactionId xid, TransactionId subxid)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:2101,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2102,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2103,1
    - Dst: logicalrep_read_stream_abort
      Src: /src/postgres/src/backend/replication/logical/worker.c:2106,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:2113,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:2115,1
    - Dst: stream_abort_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2125,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2127,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2131,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/worker.c:2150,1
    - Dst: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/backend/replication/logical/worker.c:2151,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/worker.c:2152,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2155,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:2178,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:2187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2191,1
    - Dst: stream_open_and_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:2198,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:2203,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:2204,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:2215,1
    - Dst: pa_stream_abort
      Src: /src/postgres/src/backend/replication/logical/worker.c:2217,1
    - Dst: pa_decr_and_wait_stream_block
      Src: /src/postgres/src/backend/replication/logical/worker.c:2228,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2230,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2234,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:2238,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2239
      start: 2087
    functionDepth: 5
    functionLinenumber: 2087
    functionLinenumberEnd: 2239
    functionName: apply_handle_stream_abort
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - stream_abort_internal
    - errcode
    - stream_close_file
    - pa_unlock_stream
    - pa_send_data
    - reset_apply_error_context_info
    - pa_decr_and_wait_stream_block
    - elog
    - pa_set_fileset_state
    - Assert
    - set_apply_error_context_xact
    - get_transaction_apply_action
    - pa_xact_finish
    - errmsg_internal
    - ereport
    - pa_stream_abort
    - stream_open_and_write_change
    - pa_lock_stream
    - logicalrep_read_stream_abort
    - pa_switch_to_partial_serialize
    - pg_atomic_add_fetch_u32
    linkageType: ''
    returnType: void
    signature: void apply_handle_stream_abort(StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2253,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:2253,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2255,1
    - Dst: changes_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:2257,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:2259,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/replication/logical/worker.c:2261,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/replication/logical/worker.c:2262,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:2264,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2266,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - stream_fileset
    - xid
    - fileno
    - offset
    argTypes:
    - FileSet*
    - TransactionId
    - int
    - pgoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2271
      start: 2244
    functionDepth: 3
    functionLinenumber: 2244
    functionLinenumberEnd: 2271
    functionName: ensure_last_message
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - elog
    - end_replication_step
    - BufFileSeek
    - BufFileClose
    - BufFileTell
    - Assert
    - IsTransactionState
    - BufFileOpenFileSet
    - changes_filename
    - begin_replication_step
    linkageType: ''
    returnType: void
    signature: "void ensure_last_message(FileSet *stream_fileset, TransactionId xid,
      int fileno,\n\t\t\t\t\tpgoff_t offset)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:2288,1
    - Dst: maybe_start_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2289,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2292,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2299,1
    - Dst: changes_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:2302,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2303,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:2312,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:2316,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2318,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:2327,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2329,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:2342,1
    - Dst: BufFileReadMaybeEOF
      Src: /src/postgres/src/backend/replication/logical/worker.c:2345,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2353,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:2357,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/replication/logical/worker.c:2360,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/replication/logical/worker.c:2362,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2365,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2368,1
    - Dst: apply_dispatch
      Src: /src/postgres/src/backend/replication/logical/worker.c:2370,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/worker.c:2372,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2374,1
    - Dst: ensure_last_message
      Src: /src/postgres/src/backend/replication/logical/worker.c:2385,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2390,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:2395,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2397,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 3
    argNames:
    - stream_fileset
    - xid
    - lsn
    argTypes:
    - FileSet*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2401
      start: 2276
    functionDepth: 4
    functionLinenumber: 2276
    functionLinenumberEnd: 2401
    functionName: apply_spooled_messages
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - repalloc
    - stream_close_file
    - am_parallel_apply_worker
    - ensure_last_message
    - elog
    - BufFileTell
    - MemoryContextReset
    - BufFileReadExact
    - BufFileOpenFileSet
    - pgstat_report_activity
    - changes_filename
    - apply_dispatch
    - BufFileReadMaybeEOF
    - CHECK_FOR_INTERRUPTS
    - begin_replication_step
    - end_replication_step
    - initReadOnlyStringInfo
    - MemoryContextSwitchTo
    - maybe_start_skipping_changes
    - palloc
    linkageType: ''
    returnType: void
    signature: "void apply_spooled_messages(FileSet *stream_fileset, TransactionId
      xid,\n\t\t\t\t\t   XLogRecPtr lsn)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:2418,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2419,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2420,1
    - Dst: logicalrep_read_stream_commit
      Src: /src/postgres/src/backend/replication/logical/worker.c:2422,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:2423,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:2425,1
    - Dst: apply_spooled_messages
      Src: /src/postgres/src/backend/replication/logical/worker.c:2435,1
    - Dst: apply_handle_commit_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2438,1
    - Dst: stream_cleanup_files
      Src: /src/postgres/src/backend/replication/logical/worker.c:2441,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2443,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2447,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2449,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:2452,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:2460,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2464,1
    - Dst: stream_open_and_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:2466,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:2469,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:2472,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:2482,1
    - Dst: apply_handle_commit_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2484,1
    - Dst: pa_set_xact_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:2492,1
    - Dst: pa_unlock_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:2493,1
    - Dst: pa_reset_subtrans
      Src: /src/postgres/src/backend/replication/logical/worker.c:2495,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2497,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2501,1
    - Dst: ProcessSyncingRelations
      Src: /src/postgres/src/backend/replication/logical/worker.c:2509,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:2511,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:2513,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2514
      start: 2406
    functionDepth: 5
    functionLinenumber: 2406
    functionLinenumberEnd: 2514
    functionName: apply_handle_stream_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errcode
    - stream_close_file
    - ProcessSyncingRelations
    - pa_send_data
    - pa_reset_subtrans
    - reset_apply_error_context_info
    - stream_cleanup_files
    - elog
    - pa_set_fileset_state
    - Assert
    - set_apply_error_context_xact
    - get_transaction_apply_action
    - pgstat_report_activity
    - pa_xact_finish
    - apply_spooled_messages
    - pa_set_xact_state
    - errmsg_internal
    - apply_handle_commit_internal
    - ereport
    - pa_unlock_transaction
    - stream_open_and_write_change
    - logicalrep_read_stream_commit
    - pa_switch_to_partial_serialize
    linkageType: ''
    returnType: void
    signature: void apply_handle_stream_commit(StringInfo s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2522,1
    - Dst: stop_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2524,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:2530,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:2531,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:2534,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:2540,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:2549,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:2551,1
    - Dst: EndTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:2553,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:2554,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:2557,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:2559,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/replication/logical/worker.c:2564,1
    - Dst: maybe_reread_subscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:2565,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - commit_data
    argTypes:
    - LogicalRepCommitData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2519
    functionDepth: 2
    functionLinenumber: 2519
    functionLinenumberEnd: 2569
    functionName: apply_handle_commit_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - store_flush_position
    - EndTransactionBlock
    - IsTransactionBlock
    - IsTransactionState
    - CommitTransactionCommand
    - AcceptInvalidationMessages
    - StartTransactionCommand
    - stop_skipping_changes
    - maybe_reread_subscription
    - clear_subscription_skip_lsn
    - is_skipping_changes
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void apply_handle_commit_internal(LogicalRepCommitData *commit_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:2584,1
    - Dst: logicalrep_read_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2587,1
    - Dst: logicalrep_relmap_update
      Src: /src/postgres/src/backend/replication/logical/worker.c:2588,1
    - Dst: logicalrep_partmap_reset_relmap
      Src: /src/postgres/src/backend/replication/logical/worker.c:2591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2592
      start: 2579
    functionDepth: 8
    functionLinenumber: 2579
    functionLinenumberEnd: 2592
    functionName: apply_handle_relation
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - logicalrep_read_rel
    - handle_streamed_transaction
    - logicalrep_partmap_reset_relmap
    - logicalrep_relmap_update
    linkageType: ''
    returnType: void
    signature: void apply_handle_relation(StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:2607,1
    - Dst: logicalrep_read_typ
      Src: /src/postgres/src/backend/replication/logical/worker.c:2610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2611
      start: 2602
    functionDepth: 8
    functionLinenumber: 2602
    functionLinenumberEnd: 2611
    functionName: apply_handle_type
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - logicalrep_read_typ
    - handle_streamed_transaction
    linkageType: ''
    returnType: void
    signature: void apply_handle_type(StringInfo s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/worker.c:2623,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:2624,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/logical/worker.c:2624,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/replication/logical/worker.c:2626,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/replication/logical/worker.c:2627,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:2628,1
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/replication/logical/worker.c:2637,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:2638,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2639,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:2640,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/replication/logical/worker.c:2641,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/logical/worker.c:2641,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/worker.c:2642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rel
    - mode
    argTypes:
    - Relation
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2643
      start: 2617
    functionDepth: 2
    functionLinenumber: 2617
    functionLinenumberEnd: 2643
    functionName: TargetPrivilegesCheck
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - ereport
    - get_relkind_objtype
    - pg_class_aclcheck
    - GetUserNameFromId
    - get_rel_name
    - errmsg
    - aclcheck_error
    - RelationGetRelationName
    - check_enable_rls
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void TargetPrivilegesCheck(Relation rel, AclMode mode)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2666,1
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:2667,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2670,1
    - Dst: logicalrep_read_insert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2672,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:2673,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2674,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2680,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2681,1
    - Dst: SwitchToUntrustedUser
      Src: /src/postgres/src/backend/replication/logical/worker.c:2691,1
    - Dst: create_edata_for_relation
      Src: /src/postgres/src/backend/replication/logical/worker.c:2697,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:2699,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:2700,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2704,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2704,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2705,1
    - Dst: slot_fill_defaults
      Src: /src/postgres/src/backend/replication/logical/worker.c:2706,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2707,1
    - Dst: apply_handle_tuple_routing
      Src: /src/postgres/src/backend/replication/logical/worker.c:2711,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:2717,1
    - Dst: apply_handle_insert_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2718,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:2719,1
    - Dst: finish_edata
      Src: /src/postgres/src/backend/replication/logical/worker.c:2722,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2728,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2730,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2732,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2733
      start: 2649
    functionDepth: 8
    functionLinenumber: 2649
    functionLinenumberEnd: 2733
    functionName: apply_handle_insert
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - ExecOpenIndices
    - RestoreUserContext
    - handle_streamed_transaction
    - ExecCloseIndices
    - create_edata_for_relation
    - RelationGetDescr
    - SwitchToUntrustedUser
    - logicalrep_rel_open
    - apply_handle_insert_internal
    - slot_store_data
    - begin_replication_step
    - ExecInitExtraTupleSlot
    - end_replication_step
    - should_apply_changes_for_rel
    - finish_edata
    - MemoryContextSwitchTo
    - apply_handle_tuple_routing
    - slot_fill_defaults
    - logicalrep_read_insert
    - is_skipping_changes
    - GetPerTupleMemoryContext
    - logicalrep_rel_close
    linkageType: ''
    returnType: void
    signature: void apply_handle_insert(StringInfo s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2748,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/replication/logical/worker.c:2750,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2753,1
    - Dst: InitConflictIndexes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2754,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:2757,1
    - Dst: ExecSimpleRelationInsert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2758,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - edata
    - relinfo
    - remoteslot
    argTypes:
    - ApplyExecutionData*
    - ResultRelInfo*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2759
      start: 2740
    functionDepth: 7
    functionLinenumber: 2740
    functionLinenumberEnd: 2759
    functionName: apply_handle_insert_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - InitConflictIndexes
    - Assert
    - TargetPrivilegesCheck
    - ExecSimpleRelationInsert
    - RelationGetIndexList
    linkageType: ''
    returnType: void
    signature: "void apply_handle_insert_internal(ApplyExecutionData *edata,\n\t\t\t\t\t\t\t
      ResultRelInfo *relinfo,\n\t\t\t\t\t\t\t TupleTableSlot *remoteslot)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:2783,1
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/replication/logical/worker.c:2783,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:2785,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2786,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:2787,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:2792,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2793,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:2794,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - rel
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2799
      start: 2765
    functionDepth: 2
    functionLinenumber: 2765
    functionLinenumberEnd: 2799
    functionName: check_relation_updatable
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - GetRelationIdentityOrPK
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void check_relation_updatable(LogicalRepRelMapEntry *rel)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: is_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2826,1
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:2827,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2830,1
    - Dst: logicalrep_read_update
      Src: /src/postgres/src/backend/replication/logical/worker.c:2832,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:2834,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2835,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2841,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2842,1
    - Dst: check_relation_updatable
      Src: /src/postgres/src/backend/replication/logical/worker.c:2850,1
    - Dst: SwitchToUntrustedUser
      Src: /src/postgres/src/backend/replication/logical/worker.c:2858,1
    - Dst: create_edata_for_relation
      Src: /src/postgres/src/backend/replication/logical/worker.c:2861,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:2863,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:2864,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/replication/logical/worker.c:2875,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/replication/logical/worker.c:2878,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:2884,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2885,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:2886,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/worker.c:2891,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2897,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2897,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2898,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2900,1
    - Dst: apply_handle_tuple_routing
      Src: /src/postgres/src/backend/replication/logical/worker.c:2904,1
    - Dst: apply_handle_update_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2907,1
    - Dst: finish_edata
      Src: /src/postgres/src/backend/replication/logical/worker.c:2910,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2916,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2918,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2920,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2921
      start: 2806
    functionDepth: 8
    functionLinenumber: 2806
    functionLinenumberEnd: 2921
    functionName: apply_handle_update
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errcode
    - RestoreUserContext
    - bms_add_member
    - handle_streamed_transaction
    - create_edata_for_relation
    - RelationGetDescr
    - SwitchToUntrustedUser
    - logicalrep_rel_open
    - check_relation_updatable
    - errmsg
    - logicalrep_read_update
    - slot_store_data
    - ereport
    - TupleDescCompactAttr
    - begin_replication_step
    - ExecInitExtraTupleSlot
    - end_replication_step
    - apply_handle_update_internal
    - should_apply_changes_for_rel
    - finish_edata
    - MemoryContextSwitchTo
    - apply_handle_tuple_routing
    - is_skipping_changes
    - list_nth
    - GetPerTupleMemoryContext
    - logicalrep_rel_close
    linkageType: ''
    returnType: void
    signature: void apply_handle_update(StringInfo s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EvalPlanQualInit
      Src: /src/postgres/src/backend/replication/logical/worker.c:2944,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:2945,1
    - Dst: FindReplTupleInLocalRel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2947,1
    - Dst: GetTupleTransactionInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2963,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:2970,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2971,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:2975,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:2977,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2981,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2981,1
    - Dst: slot_modify_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2982,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2983,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:2985,1
    - Dst: InitConflictIndexes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2987,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:2990,1
    - Dst: ExecSimpleRelationUpdate
      Src: /src/postgres/src/backend/replication/logical/worker.c:2991,1
    - Dst: FindDeletedTupleInLocalRel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3003,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:3013,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:3019,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:3020,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:3024,1
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/replication/logical/worker.c:3025,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 5
    argNames:
    - edata
    - relinfo
    - remoteslot
    - newtup
    - localindexoid
    argTypes:
    - ApplyExecutionData*
    - ResultRelInfo*
    - TupleTableSlot*
    - LogicalRepTupleData*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3026
      start: 2928
    functionDepth: 7
    functionLinenumber: 2928
    functionLinenumberEnd: 3026
    functionName: apply_handle_update_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - ExecOpenIndices
    - InitConflictIndexes
    - ExecCloseIndices
    - FindDeletedTupleInLocalRel
    - slot_store_data
    - ReportApplyConflict
    - EvalPlanQualInit
    - table_slot_create
    - EvalPlanQualSetSlot
    - TargetPrivilegesCheck
    - MemoryContextSwitchTo
    - slot_modify_data
    - EvalPlanQualEnd
    - list_make1
    - FindReplTupleInLocalRel
    - GetTupleTransactionInfo
    - ExecSimpleRelationUpdate
    - GetPerTupleMemoryContext
    linkageType: ''
    returnType: void
    signature: "void apply_handle_update_internal(ApplyExecutionData *edata,\n\t\t\t\t\t\t\t
      ResultRelInfo *relinfo,\n\t\t\t\t\t\t\t TupleTableSlot *remoteslot,\n\t\t\t\t\t\t\t
      LogicalRepTupleData *newtup,\n\t\t\t\t\t\t\t Oid localindexoid)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:3050,1
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:3051,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:3054,1
    - Dst: logicalrep_read_delete
      Src: /src/postgres/src/backend/replication/logical/worker.c:3056,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3057,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3058,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3064,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:3065,1
    - Dst: check_relation_updatable
      Src: /src/postgres/src/backend/replication/logical/worker.c:3073,1
    - Dst: SwitchToUntrustedUser
      Src: /src/postgres/src/backend/replication/logical/worker.c:3081,1
    - Dst: create_edata_for_relation
      Src: /src/postgres/src/backend/replication/logical/worker.c:3084,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3086,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:3087,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3091,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:3091,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:3092,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3093,1
    - Dst: apply_handle_tuple_routing
      Src: /src/postgres/src/backend/replication/logical/worker.c:3097,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:3103,1
    - Dst: apply_handle_delete_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:3104,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:3106,1
    - Dst: finish_edata
      Src: /src/postgres/src/backend/replication/logical/worker.c:3109,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:3115,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3117,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:3119,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3120
      start: 3033
    functionDepth: 8
    functionLinenumber: 3033
    functionLinenumberEnd: 3120
    functionName: apply_handle_delete
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - ExecOpenIndices
    - apply_handle_delete_internal
    - RestoreUserContext
    - handle_streamed_transaction
    - ExecCloseIndices
    - create_edata_for_relation
    - RelationGetDescr
    - SwitchToUntrustedUser
    - logicalrep_rel_open
    - check_relation_updatable
    - slot_store_data
    - begin_replication_step
    - ExecInitExtraTupleSlot
    - end_replication_step
    - should_apply_changes_for_rel
    - finish_edata
    - MemoryContextSwitchTo
    - logicalrep_read_delete
    - apply_handle_tuple_routing
    - is_skipping_changes
    - GetPerTupleMemoryContext
    - logicalrep_rel_close
    linkageType: ''
    returnType: void
    signature: void apply_handle_delete(StringInfo s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EvalPlanQualInit
      Src: /src/postgres/src/backend/replication/logical/worker.c:3141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:3144,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/replication/logical/worker.c:3146,1
    - Dst: FindReplTupleInLocalRel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3148,1
    - Dst: GetTupleTransactionInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3158,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:3163,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:3165,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3168,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3171,1
    - Dst: ExecSimpleRelationDelete
      Src: /src/postgres/src/backend/replication/logical/worker.c:3172,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:3180,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:3181,1
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/replication/logical/worker.c:3185,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - edata
    - relinfo
    - remoteslot
    - localindexoid
    argTypes:
    - ApplyExecutionData*
    - ResultRelInfo*
    - TupleTableSlot*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3186
      start: 3127
    functionDepth: 6
    functionLinenumber: 3127
    functionLinenumberEnd: 3186
    functionName: apply_handle_delete_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - GetTupleTransactionInfo
    - Assert
    - ReportApplyConflict
    - EvalPlanQualInit
    - EvalPlanQualSetSlot
    - TargetPrivilegesCheck
    - EvalPlanQualEnd
    - ExecSimpleRelationDelete
    - list_make1
    - FindReplTupleInLocalRel
    - RelationGetIndexList
    linkageType: ''
    returnType: void
    signature: "void apply_handle_delete_internal(ApplyExecutionData *edata,\n\t\t\t\t\t\t\t
      ResultRelInfo *relinfo,\n\t\t\t\t\t\t\t TupleTableSlot *remoteslot,\n\t\t\t\t\t\t\t
      Oid localindexoid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3209,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:3211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:3213,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3213,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3216,1
    - Dst: index_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:3222,1
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/replication/logical/worker.c:3222,1
    - Dst: IsIndexUsableForReplicaIdentityFull
      Src: /src/postgres/src/backend/replication/logical/worker.c:3224,1
    - Dst: index_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3226,1
    - Dst: RelationFindReplTupleByIndex
      Src: /src/postgres/src/backend/replication/logical/worker.c:3229,1
    - Dst: RelationFindReplTupleSeq
      Src: /src/postgres/src/backend/replication/logical/worker.c:3234,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 6
    argNames:
    - edata
    - localrel
    - remoterel
    - localidxoid
    - remoteslot
    - localslot
    argTypes:
    - ApplyExecutionData*
    - Relation
    - LogicalRepRelation*
    - Oid
    - TupleTableSlot*
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3238
      start: 3195
    functionDepth: 5
    functionLinenumber: 3195
    functionLinenumberEnd: 3238
    functionName: FindReplTupleInLocalRel
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - Assert
    - table_slot_create
    - index_open
    - TargetPrivilegesCheck
    - GetRelationIdentityOrPK
    - RelationFindReplTupleByIndex
    - RelationFindReplTupleSeq
    - index_close
    - IsIndexUsableForReplicaIdentityFull
    - OidIsValid
    linkageType: ''
    returnType: bool
    signature: "bool FindReplTupleInLocalRel(ApplyExecutionData *edata, Relation localrel,\n\t\t\t\t\t\tLogicalRepRelation
      *remoterel,\n\t\t\t\t\t\tOid localidxoid,\n\t\t\t\t\t\tTupleTableSlot *remoteslot,\n\t\t\t\t\t\tTupleTableSlot
      **localslot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/worker.c:3263,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/worker.c:3263,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3265,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:3266,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/replication/logical/worker.c:3273,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/worker.c:3275,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/worker.c:3277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - localindexoid
    - conflict_detection_xmin
    argTypes:
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3278
      start: 3256
    functionDepth: 2
    functionLinenumber: 3256
    functionLinenumberEnd: 3278
    functionName: IsIndexUsableForFindingDeletedTuple
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - TransactionIdPrecedes
    - HeapTupleIsValid
    - HeapTupleHeaderGetXmin
    - ReleaseSysCache
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: "bool IsIndexUsableForFindingDeletedTuple(Oid localindexoid,\n\t\t\t\t\t\t\t\t\tTransactionId
      conflict_detection_xmin)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:3319,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/worker.c:3332,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/worker.c:3333,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:3338,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:3339,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:3340,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/worker.c:3343,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/worker.c:3345,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/worker.c:3346,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3354,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3357,1
    - Dst: IsIndexUsableForFindingDeletedTuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:3358,1
    - Dst: RelationFindDeletedTupleInfoByIndex
      Src: /src/postgres/src/backend/replication/logical/worker.c:3359,1
    - Dst: RelationFindDeletedTupleInfoSeq
      Src: /src/postgres/src/backend/replication/logical/worker.c:3364,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 6
    argNames:
    - localrel
    - localidxoid
    - remoteslot
    - delete_xid
    - delete_origin
    - delete_time
    argTypes:
    - Relation
    - Oid
    - TupleTableSlot*
    - TransactionId*
    - ReplOriginId*
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3367
      start: 3290
    functionDepth: 3
    functionLinenumber: 3290
    functionLinenumberEnd: 3367
    functionName: FindDeletedTupleInLocalRel
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - RelationFindDeletedTupleInfoSeq
    - LWLockAcquire
    - IsIndexUsableForFindingDeletedTuple
    - errcode
    - am_leader_apply_worker
    - ereport
    - RelationFindDeletedTupleInfoByIndex
    - errmsg
    - SpinLockRelease
    - LWLockRelease
    - OidIsValid
    - SpinLockAcquire
    - logicalrep_worker_find
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: "bool FindDeletedTupleInLocalRel(Relation localrel, Oid localidxoid,\n\t\t\t\t\t\t
      \  TupleTableSlot *remoteslot,\n\t\t\t\t\t\t   TransactionId *delete_xid, ReplOriginId
      *delete_origin,\n\t\t\t\t\t\t   TimestampTz *delete_time)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/replication/logical/worker.c:3393,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/replication/logical/worker.c:3400,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:3405,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3406,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:3406,1
    - Dst: ExecFindPartition
      Src: /src/postgres/src/backend/replication/logical/worker.c:3407,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:3409,1
    - Dst: CheckSubscriptionRelkind
      Src: /src/postgres/src/backend/replication/logical/worker.c:3417,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:3419,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/worker.c:3419,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/worker.c:3420,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:3429,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/replication/logical/worker.c:3430,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3434,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3439,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/worker.c:3440,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3442,1
    - Dst: logicalrep_partition_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3447,1
    - Dst: check_relation_updatable
      Src: /src/postgres/src/backend/replication/logical/worker.c:3449,1
    - Dst: apply_handle_insert_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:3455,1
    - Dst: apply_handle_delete_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:3460,1
    - Dst: FindReplTupleInLocalRel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3482,1
    - Dst: FindDeletedTupleInLocalRel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3496,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:3508,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:3514,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:3516,1
    - Dst: GetTupleTransactionInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3525,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:3533,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:3534,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:3538,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:3540,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3547,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:3547,1
    - Dst: slot_modify_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:3548,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3550,1
    - Dst: EvalPlanQualInit
      Src: /src/postgres/src/backend/replication/logical/worker.c:3552,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3559,1
    - Dst: InitConflictIndexes
      Src: /src/postgres/src/backend/replication/logical/worker.c:3569,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3571,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3572,1
    - Dst: ExecSimpleRelationUpdate
      Src: /src/postgres/src/backend/replication/logical/worker.c:3574,1
    - Dst: convert_tuples_by_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:3591,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:3591,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:3592,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3595,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3600,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/worker.c:3601,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3605,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:3605,1
    - Dst: ExecFindPartition
      Src: /src/postgres/src/backend/replication/logical/worker.c:3606,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:3610,1
    - Dst: CheckSubscriptionRelkind
      Src: /src/postgres/src/backend/replication/logical/worker.c:3614,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:3616,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/worker.c:3616,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/worker.c:3617,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3620,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3621,1
    - Dst: ExecSimpleRelationDelete
      Src: /src/postgres/src/backend/replication/logical/worker.c:3622,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3630,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:3630,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:3633,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/replication/logical/worker.c:3635,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3638,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3644,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/worker.c:3646,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3648,1
    - Dst: apply_handle_insert_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:3649,1
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/replication/logical/worker.c:3653,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:3658,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 98
    argCount: 4
    argNames:
    - edata
    - remoteslot
    - newtup
    - operation
    argTypes:
    - ApplyExecutionData*
    - TupleTableSlot*
    - LogicalRepTupleData*
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3661
      start: 3372
    functionDepth: 8
    functionLinenumber: 3372
    functionLinenumberEnd: 3661
    functionName: apply_handle_tuple_routing
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - apply_handle_delete_internal
    - execute_attr_map_slot
    - convert_tuples_by_name
    - RelationGetNamespace
    - RelationGetRelationName
    - FindReplTupleInLocalRel
    - FindDeletedTupleInLocalRel
    - elog
    - CheckSubscriptionRelkind
    - Assert
    - RelationGetDescr
    - EvalPlanQualInit
    - EvalPlanQualSetSlot
    - TargetPrivilegesCheck
    - check_relation_updatable
    - slot_modify_data
    - ExecSetupPartitionTupleRouting
    - ReportApplyConflict
    - apply_handle_insert_internal
    - InitConflictIndexes
    - ExecPartitionCheck
    - slot_store_data
    - table_slot_create
    - ExecSimpleRelationDelete
    - logicalrep_partition_open
    - ExecCopySlot
    - list_make1
    - slot_getallattrs
    - ExecFindPartition
    - get_namespace_name
    - GetTupleTransactionInfo
    - makeNode
    - EvalPlanQualEnd
    - MemoryContextSwitchTo
    - ExecGetRootToChildMap
    - GetPerTupleMemoryContext
    - ExecSimpleRelationUpdate
    linkageType: ''
    returnType: void
    signature: "void apply_handle_tuple_routing(ApplyExecutionData *edata,\n\t\t\t\t\t\t
      \  TupleTableSlot *remoteslot,\n\t\t\t\t\t\t   LogicalRepTupleData *newtup,\n\t\t\t\t\t\t
      \  CmdType operation)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:3686,1
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:3687,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:3690,1
    - Dst: logicalrep_read_truncate
      Src: /src/postgres/src/backend/replication/logical/worker.c:3692,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3696,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3699,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3700,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3706,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3710,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3711,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3712,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3713,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3714,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3715,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/replication/logical/worker.c:3724,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3730,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3733,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3737,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/replication/logical/worker.c:3743,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3745,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3749,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3750,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3751,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3752,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3754,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3755,1
    - Dst: ExecuteTruncateGuts
      Src: /src/postgres/src/backend/replication/logical/worker.c:3770,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:3778,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3780,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:3784,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3786,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:3789,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3790
      start: 3668
    functionDepth: 8
    functionLinenumber: 3668
    functionLinenumberEnd: 3790
    functionName: apply_handle_truncate
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - lappend_oid
    - lfirst_oid
    - table_close
    - handle_streamed_transaction
    - ExecuteTruncateGuts
    - TargetPrivilegesCheck
    - logicalrep_rel_open
    - table_open
    - list_member_oid
    - lappend
    - RELATION_IS_OTHER_TEMP
    - lfirst
    - begin_replication_step
    - logicalrep_read_truncate
    - end_replication_step
    - find_all_inheritors
    - should_apply_changes_for_rel
    - RelationIsLogicallyLogged
    - is_skipping_changes
    - logicalrep_rel_close
    linkageType: ''
    returnType: void
    signature: void apply_handle_truncate(StringInfo s)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3696,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3699,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3700,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3706,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3710,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3711,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3712,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3713,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3714,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3715,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/replication/logical/worker.c:3724,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3730,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3733,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3737,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/replication/logical/worker.c:3743,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3745,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3749,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3750,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3751,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3752,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3754,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3755,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3758
      start: 3694
    functionDepth: 7
    functionLinenumber: 3694
    functionLinenumberEnd: 3758
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 378
    functionsReached:
    - find_all_inheritors
    - should_apply_changes_for_rel
    - RelationIsLogicallyLogged
    - table_close
    - lappend
    - TargetPrivilegesCheck
    - logicalrep_rel_open
    - table_open
    - RELATION_IS_OTHER_TEMP
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    - logicalrep_rel_close
    linkageType: ''
    returnType: void
    signature: void foreach(lc, remote_relids)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3730,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3733,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3737,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/replication/logical/worker.c:3743,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3745,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3749,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3750,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3751,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3752,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3754,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3755,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3756
      start: 3728
    functionDepth: 6
    functionLinenumber: 3728
    functionLinenumberEnd: 3756
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 378
    functionsReached:
    - table_close
    - RelationIsLogicallyLogged
    - lappend
    - TargetPrivilegesCheck
    - table_open
    - RELATION_IS_OTHER_TEMP
    - lappend_oid
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: void
    signature: void foreach(child, children)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:3778,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3781
      start: 3776
    functionDepth: 4
    functionLinenumber: 3776
    functionLinenumberEnd: 3781
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 378
    functionsReached:
    - lfirst
    - logicalrep_rel_close
    linkageType: ''
    returnType: void
    signature: void foreach(lc, remote_rels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:3784,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3787
      start: 3782
    functionDepth: 3
    functionLinenumber: 3782
    functionLinenumberEnd: 3787
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 378
    functionsReached:
    - table_close
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, part_rels)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:3799,1
    - Dst: apply_handle_begin
      Src: /src/postgres/src/backend/replication/logical/worker.c:3813,1
    - Dst: apply_handle_commit
      Src: /src/postgres/src/backend/replication/logical/worker.c:3817,1
    - Dst: apply_handle_insert
      Src: /src/postgres/src/backend/replication/logical/worker.c:3821,1
    - Dst: apply_handle_update
      Src: /src/postgres/src/backend/replication/logical/worker.c:3825,1
    - Dst: apply_handle_delete
      Src: /src/postgres/src/backend/replication/logical/worker.c:3829,1
    - Dst: apply_handle_truncate
      Src: /src/postgres/src/backend/replication/logical/worker.c:3833,1
    - Dst: apply_handle_relation
      Src: /src/postgres/src/backend/replication/logical/worker.c:3837,1
    - Dst: apply_handle_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:3841,1
    - Dst: apply_handle_origin
      Src: /src/postgres/src/backend/replication/logical/worker.c:3845,1
    - Dst: apply_handle_stream_start
      Src: /src/postgres/src/backend/replication/logical/worker.c:3858,1
    - Dst: apply_handle_stream_stop
      Src: /src/postgres/src/backend/replication/logical/worker.c:3862,1
    - Dst: apply_handle_stream_abort
      Src: /src/postgres/src/backend/replication/logical/worker.c:3866,1
    - Dst: apply_handle_stream_commit
      Src: /src/postgres/src/backend/replication/logical/worker.c:3870,1
    - Dst: apply_handle_begin_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:3874,1
    - Dst: apply_handle_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:3878,1
    - Dst: apply_handle_commit_prepared
      Src: /src/postgres/src/backend/replication/logical/worker.c:3882,1
    - Dst: apply_handle_rollback_prepared
      Src: /src/postgres/src/backend/replication/logical/worker.c:3886,1
    - Dst: apply_handle_stream_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:3890,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:3894,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:3895,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:3896,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3901
      start: 3796
    functionDepth: 9
    functionLinenumber: 3796
    functionLinenumberEnd: 3901
    functionName: apply_dispatch
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - apply_handle_truncate
    - errcode
    - apply_handle_stream_stop
    - apply_handle_begin
    - apply_handle_relation
    - apply_handle_begin_prepare
    - apply_handle_stream_abort
    - errmsg
    - apply_handle_delete
    - apply_handle_commit
    - apply_handle_stream_commit
    - apply_handle_update
    - apply_handle_origin
    - apply_handle_stream_prepare
    - ereport
    - apply_handle_insert
    - apply_handle_commit_prepared
    - apply_handle_rollback_prepared
    - apply_handle_prepare
    - apply_handle_type
    - apply_handle_stream_start
    - pq_getmsgbyte
    linkageType: ''
    returnType: void
    signature: void apply_dispatch(StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/logical/worker.c:3921,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/worker.c:3926,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/worker.c:3929,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/worker.c:3936,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/worker.c:3937,1
    - Dst: dlist_tail_element
      Src: /src/postgres/src/backend/replication/logical/worker.c:3946,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/worker.c:3954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - write
    - flush
    - have_pending_txes
    argTypes:
    - XLogRecPtr*
    - XLogRecPtr*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3955
      start: 3916
    functionDepth: 2
    functionLinenumber: 3916
    functionLinenumberEnd: 3955
    functionName: get_flush_position
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - GetFlushRecPtr
    - dlist_is_empty
    - pfree
    - dlist_container
    - dlist_delete
    - dlist_foreach_modify
    - dlist_tail_element
    linkageType: ''
    returnType: void
    signature: "void get_flush_position(XLogRecPtr *write, XLogRecPtr *flush,\n\t\t\t\t
      \  bool *have_pending_txes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:3969,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3973,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/replication/logical/worker.c:3976,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/worker.c:3980,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - remote_lsn
    - local_lsn
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3982
      start: 3960
    functionDepth: 2
    functionLinenumber: 3960
    functionLinenumberEnd: 3982
    functionName: store_flush_position
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 6
    functionsReached:
    - dlist_push_tail
    - am_parallel_apply_worker
    - palloc_object
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void store_flush_position(XLogRecPtr remote_lsn, XLogRecPtr local_lsn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:3991,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - last_lsn
    - send_time
    - reply
    argTypes:
    - XLogRecPtr
    - TimestampTz
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3997
      start: 3986
    functionDepth: 1
    functionLinenumber: 3986
    functionLinenumberEnd: 3997
    functionName: UpdateWorkerStats
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    linkageType: ''
    returnType: void
    signature: void UpdateWorkerStats(XLogRecPtr last_lsn, TimestampTz send_time,
      bool reply)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4005,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/worker.c:4015,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/worker.c:4023,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:4028,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4049,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4051,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/logical/worker.c:4053,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4060,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4068,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4069,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/worker.c:4081,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4085,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4091,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4093,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:4095,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4103,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4104,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4105,1
    - Dst: UpdateWorkerStats
      Src: /src/postgres/src/backend/replication/logical/worker.c:4113,1
    - Dst: apply_dispatch
      Src: /src/postgres/src/backend/replication/logical/worker.c:4115,1
    - Dst: maybe_advance_nonremovable_xid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4117,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4125,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4126,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:4127,1
    - Dst: send_feedback
      Src: /src/postgres/src/backend/replication/logical/worker.c:4132,1
    - Dst: maybe_advance_nonremovable_xid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4134,1
    - Dst: UpdateWorkerStats
      Src: /src/postgres/src/backend/replication/logical/worker.c:4136,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4140,1
    - Dst: FullTransactionIdFromU64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4141,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4141,1
    - Dst: FullTransactionIdFromU64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4142,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4142,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4143,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4151,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:4152,1
    - Dst: maybe_advance_nonremovable_xid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4154,1
    - Dst: UpdateWorkerStats
      Src: /src/postgres/src/backend/replication/logical/worker.c:4156,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/worker.c:4160,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/logical/worker.c:4163,1
    - Dst: send_feedback
      Src: /src/postgres/src/backend/replication/logical/worker.c:4168,1
    - Dst: maybe_advance_nonremovable_xid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4173,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/replication/logical/worker.c:4182,1
    - Dst: maybe_reread_subscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:4183,1
    - Dst: ProcessSyncingRelations
      Src: /src/postgres/src/backend/replication/logical/worker.c:4189,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/worker.c:4193,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4194,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/worker.c:4207,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/worker.c:4221,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/worker.c:4223,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/replication/logical/worker.c:4226,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/worker.c:4234,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4235,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/worker.c:4241,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4262,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/logical/worker.c:4266,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:4271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4272,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/logical/worker.c:4277,1
    - Dst: send_feedback
      Src: /src/postgres/src/backend/replication/logical/worker.c:4287,1
    - Dst: maybe_advance_nonremovable_xid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4289,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:4299,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:4300,1
    - Dst: walrcv_endstreaming
      Src: /src/postgres/src/backend/replication/logical/worker.c:4309,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 122
    argCount: 1
    argNames:
    - last_received
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4310
      start: 4002
    functionDepth: 10
    functionLinenumber: 4002
    functionLinenumberEnd: 4310
    functionName: LogicalRepApplyLoop
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errcode
    - ProcessSyncingRelations
    - walrcv_endstreaming
    - walrcv_receive
    - elog
    - XLogRecPtrIsValid
    - TimestampTzPlusMilliseconds
    - MemoryContextReset
    - ResetLatch
    - errmsg
    - pgstat_report_activity
    - send_feedback
    - GetCurrentTimestamp
    - apply_dispatch
    - IsTransactionState
    - ereport
    - CHECK_FOR_INTERRUPTS
    - FullTransactionIdFromU64
    - maybe_reread_subscription
    - AllocSetContextCreate
    - WaitLatchOrSocket
    - dlist_is_empty
    - initReadOnlyStringInfo
    - AcceptInvalidationMessages
    - MemoryContextSwitchTo
    - UpdateWorkerStats
    - pq_getmsgint64
    - Min
    - maybe_advance_nonremovable_xid
    - ProcessConfigFile
    - pq_getmsgbyte
    - pgstat_report_stat
    linkageType: ''
    returnType: void
    signature: void LogicalRepApplyLoop(XLogRecPtr last_received)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: get_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:4343,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4358,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/worker.c:4364,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4371,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4373,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4374,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4377,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:4379,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4380,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4381,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4382,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4383,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:4384,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:4386,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4388,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4389,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4390,1
    - Dst: walrcv_send
      Src: /src/postgres/src/backend/replication/logical/worker.c:4392,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 3
    argNames:
    - recvpos
    - force
    - requestReply
    argTypes:
    - XLogRecPtr
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4401
      start: 4318
    functionDepth: 4
    functionLinenumber: 4318
    functionLinenumberEnd: 4401
    functionName: send_feedback
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - TimestampDifferenceExceeds
    - GetCurrentTimestamp
    - elog
    - resetStringInfo
    - LSN_FORMAT_ARGS
    - MemoryContextSwitchTo
    - pq_sendint64
    - pq_sendbyte
    - makeStringInfo
    - walrcv_send
    - get_flush_position
    linkageType: ''
    returnType: void
    signature: void send_feedback(XLogRecPtr recvpos, bool force, bool requestReply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: can_advance_nonremovable_xid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4412,1
    - Dst: process_rdt_phase_transition
      Src: /src/postgres/src/backend/replication/logical/worker.c:4415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rdt_data
    - status_received
    argTypes:
    - RetainDeadTuplesData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4416
      start: 4408
    functionDepth: 1
    functionLinenumber: 4408
    functionLinenumberEnd: 4416
    functionName: maybe_advance_nonremovable_xid
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - process_rdt_phase_transition
    - can_advance_nonremovable_xid
    linkageType: ''
    returnType: void
    signature: "void maybe_advance_nonremovable_xid(RetainDeadTuplesData *rdt_data,\n\t\t\t\t\t\t\t
      \  bool status_received)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rdt_data
    argTypes:
    - RetainDeadTuplesData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4438
      start: 4422
    functionDepth: 2
    functionLinenumber: 4422
    functionLinenumberEnd: 4438
    functionName: can_advance_nonremovable_xid
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - am_leader_apply_worker
    linkageType: ''
    returnType: bool
    signature: bool can_advance_nonremovable_xid(RetainDeadTuplesData *rdt_data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_candidate_xid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4451,1
    - Dst: request_publisher_status
      Src: /src/postgres/src/backend/replication/logical/worker.c:4454,1
    - Dst: wait_for_publisher_status
      Src: /src/postgres/src/backend/replication/logical/worker.c:4457,1
    - Dst: wait_for_local_flush
      Src: /src/postgres/src/backend/replication/logical/worker.c:4460,1
    - Dst: stop_conflict_info_retention
      Src: /src/postgres/src/backend/replication/logical/worker.c:4463,1
    - Dst: resume_conflict_info_retention
      Src: /src/postgres/src/backend/replication/logical/worker.c:4466,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - rdt_data
    - status_received
    argTypes:
    - RetainDeadTuplesData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4469
      start: 4444
    functionDepth: 1
    functionLinenumber: 4444
    functionLinenumberEnd: 4469
    functionName: process_rdt_phase_transition
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - wait_for_publisher_status
    - stop_conflict_info_retention
    - wait_for_local_flush
    - resume_conflict_info_retention
    - request_publisher_status
    - get_candidate_xid
    linkageType: ''
    returnType: void
    signature: "void process_rdt_phase_transition(RetainDeadTuplesData *rdt_data,\n\t\t\t\t\t\t\t
      bool status_received)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4485,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/worker.c:4493,1
    - Dst: GetOldestActiveTransactionId
      Src: /src/postgres/src/backend/replication/logical/worker.c:4508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4514,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/logical/worker.c:4514,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/replication/logical/worker.c:4518,1
    - Dst: adjust_xid_advance_interval
      Src: /src/postgres/src/backend/replication/logical/worker.c:4521,1
    - Dst: adjust_xid_advance_interval
      Src: /src/postgres/src/backend/replication/logical/worker.c:4525,1
    - Dst: process_rdt_phase_transition
      Src: /src/postgres/src/backend/replication/logical/worker.c:4531,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - rdt_data
    argTypes:
    - RetainDeadTuplesData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4532
      start: 4474
    functionDepth: 2
    functionLinenumber: 4474
    functionLinenumberEnd: 4532
    functionName: get_candidate_xid
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - TimestampDifferenceExceeds
    - GetCurrentTimestamp
    - GetOldestActiveTransactionId
    - adjust_xid_advance_interval
    - process_rdt_phase_transition
    - Assert
    - TransactionIdEquals
    - TransactionIdPrecedesOrEquals
    linkageType: ''
    returnType: void
    signature: void get_candidate_xid(RetainDeadTuplesData *rdt_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4544,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4546,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4547,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4550,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:4556,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:4557,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4557,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:4559,1
    - Dst: walrcv_send
      Src: /src/postgres/src/backend/replication/logical/worker.c:4562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - rdt_data
    argTypes:
    - RetainDeadTuplesData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4571
      start: 4537
    functionDepth: 4
    functionLinenumber: 4537
    functionLinenumberEnd: 4571
    functionName: request_publisher_status
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - elog
    - GetCurrentTimestamp
    - MemoryContextSwitchTo
    - pq_sendint64
    - pq_sendbyte
    - makeStringInfo
    - walrcv_send
    - resetStringInfo
    linkageType: ''
    returnType: void
    signature: void request_publisher_status(RetainDeadTuplesData *rdt_data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: should_stop_conflict_info_retention
      Src: /src/postgres/src/backend/replication/logical/worker.c:4590,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4596,1
    - Dst: FullTransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/logical/worker.c:4622,1
    - Dst: process_rdt_phase_transition
      Src: /src/postgres/src/backend/replication/logical/worker.c:4629,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - rdt_data
    - status_received
    argTypes:
    - RetainDeadTuplesData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4630
      start: 4576
    functionDepth: 2
    functionLinenumber: 4576
    functionLinenumberEnd: 4630
    functionName: wait_for_publisher_status
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - FullTransactionIdPrecedesOrEquals
    - process_rdt_phase_transition
    - should_stop_conflict_info_retention
    - FullTransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void wait_for_publisher_status(RetainDeadTuplesData *rdt_data,\n\t\t\t\t\t\t
      \ bool status_received)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4638,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4638,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4639,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/worker.c:4654,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4656,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:4657,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:4658,1
    - Dst: HasSubscriptionTablesCached
      Src: /src/postgres/src/backend/replication/logical/worker.c:4693,1
    - Dst: AllTablesyncsReady
      Src: /src/postgres/src/backend/replication/logical/worker.c:4693,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4698,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/logical/worker.c:4705,1
    - Dst: should_stop_conflict_info_retention
      Src: /src/postgres/src/backend/replication/logical/worker.c:4714,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/worker.c:4727,1
    - Dst: get_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:4735,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/worker.c:4767,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/worker.c:4769,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:4771,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4772,1
    - Dst: ApplyLauncherWakeup
      Src: /src/postgres/src/backend/replication/logical/worker.c:4776,1
    - Dst: reset_retention_data_fields
      Src: /src/postgres/src/backend/replication/logical/worker.c:4778,1
    - Dst: process_rdt_phase_transition
      Src: /src/postgres/src/backend/replication/logical/worker.c:4781,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - rdt_data
    argTypes:
    - RetainDeadTuplesData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4782
      start: 4635
    functionDepth: 3
    functionLinenumber: 4635
    functionLinenumberEnd: 4782
    functionName: wait_for_local_flush
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - AllTablesyncsReady
    - ApplyLauncherWakeup
    - LSN_FORMAT_ARGS
    - get_flush_position
    - TimestampDifferenceExceeds
    - elog
    - XLogRecPtrIsValid
    - process_rdt_phase_transition
    - Assert
    - SpinLockRelease
    - errdetail_internal
    - GetCurrentTimestamp
    - errmsg_internal
    - ereport
    - TimestampDifferenceMilliseconds
    - should_stop_conflict_info_retention
    - reset_retention_data_fields
    - HasSubscriptionTablesCached
    - SpinLockAcquire
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void wait_for_local_flush(RetainDeadTuplesData *rdt_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4795,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4796,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4807,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/worker.c:4814,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - rdt_data
    argTypes:
    - RetainDeadTuplesData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4820
      start: 4790
    functionDepth: 1
    functionLinenumber: 4790
    functionLinenumberEnd: 4820
    functionName: should_stop_conflict_info_retention
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - Assert
    - GetCurrentTimestamp
    - TimestampDifferenceExceeds
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: bool should_stop_conflict_info_retention(RetainDeadTuplesData *rdt_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: update_retention_status
      Src: /src/postgres/src/backend/replication/logical/worker.c:4836,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/worker.c:4839,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/worker.c:4841,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4843,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4844,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/worker.c:4846,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4849,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4849,1
    - Dst: reset_retention_data_fields
      Src: /src/postgres/src/backend/replication/logical/worker.c:4857,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - rdt_data
    argTypes:
    - RetainDeadTuplesData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4858
      start: 4825
    functionDepth: 2
    functionLinenumber: 4825
    functionLinenumberEnd: 4858
    functionName: stop_conflict_info_retention
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - reset_retention_data_fields
    - update_retention_status
    - Assert
    - ereport
    - errmsg
    - SpinLockRelease
    - errdetail
    - SpinLockAcquire
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void stop_conflict_info_retention(RetainDeadTuplesData *rdt_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: update_retention_status
      Src: /src/postgres/src/backend/replication/logical/worker.c:4867,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4870,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4871,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/worker.c:4874,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/worker.c:4875,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4891,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rdt_data
    argTypes:
    - RetainDeadTuplesData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4892
      start: 4863
    functionDepth: 1
    functionLinenumber: 4863
    functionLinenumberEnd: 4892
    functionName: resume_conflict_info_retention
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - update_retention_status
    - ereport
    - errmsg
    - apply_worker_exit
    - errdetail
    linkageType: ''
    returnType: void
    signature: void resume_conflict_info_retention(RetainDeadTuplesData *rdt_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:4911,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4914,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4920,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4920,1
    - Dst: UpdateDeadTupleRetentionStatus
      Src: /src/postgres/src/backend/replication/logical/worker.c:4923,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4925,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4926,1
    - Dst: ApplyLauncherWakeup
      Src: /src/postgres/src/backend/replication/logical/worker.c:4929,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - active
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4934
      start: 4903
    functionDepth: 8
    functionLinenumber: 4903
    functionLinenumberEnd: 4934
    functionName: update_retention_status
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - PopActiveSnapshot
    - IsTransactionState
    - CommitTransactionCommand
    - GetTransactionSnapshot
    - StartTransactionCommand
    - ApplyLauncherWakeup
    - PushActiveSnapshot
    - UpdateDeadTupleRetentionStatus
    linkageType: ''
    returnType: bool
    signature: bool update_retention_status(bool active)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rdt_data
    argTypes:
    - RetainDeadTuplesData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4953
      start: 4942
    functionDepth: 0
    functionLinenumber: 4942
    functionLinenumberEnd: 4953
    functionName: reset_retention_data_fields
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reset_retention_data_fields(RetainDeadTuplesData *rdt_data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/worker.c:4989,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/worker.c:5001,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/worker.c:5019,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - rdt_data
    - new_xid_found
    argTypes:
    - RetainDeadTuplesData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5021
      start: 4976
    functionDepth: 0
    functionLinenumber: 4976
    functionLinenumberEnd: 5021
    functionName: adjust_xid_advance_interval
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - Min
    linkageType: ''
    returnType: void
    signature: void adjust_xid_advance_interval(RetainDeadTuplesData *rdt_data, bool
      new_xid_found)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5029,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5048,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/worker.c:5049,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5051,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5052
      start: 5026
    functionDepth: 3
    functionLinenumber: 5026
    functionLinenumberEnd: 5052
    functionName: apply_worker_exit
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - am_leader_apply_worker
    - proc_exit
    - ApplyLauncherForgetWorkerStartTime
    - am_parallel_apply_worker
    linkageType: ''
    returnType: void
    signature: void apply_worker_exit(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:5071,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:5073,1
    - Dst: GetSubscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:5077,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/replication/logical/worker.c:5081,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5089,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5090,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5094,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/worker.c:5095,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5097,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5103,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5104,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5107,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5114,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/worker.c:5123,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/worker.c:5124,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/worker.c:5125,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/worker.c:5129,1
    - Dst: equal
      Src: /src/postgres/src/backend/replication/logical/worker.c:5131,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5133,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5135,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5138,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5139,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5142,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5151,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5152,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5153,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5156,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5157,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5160,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:5166,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/worker.c:5171,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:5175,1
    - Dst: set_wal_receiver_timeout
      Src: /src/postgres/src/backend/replication/logical/worker.c:5179,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:5182,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5185
      start: 5060
    functionDepth: 4
    functionLinenumber: 5060
    functionLinenumberEnd: 5185
    functionName: maybe_reread_subscription
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 4
    functionsReached:
    - strcmp
    - CommitTransactionCommand
    - am_parallel_apply_worker
    - elog
    - Assert
    - StartTransactionCommand
    - errmsg
    - MemoryContextSetParent
    - GetSubscription
    - IsTransactionState
    - ereport
    - ApplyLauncherForgetWorkerStartTime
    - apply_worker_exit
    - proc_exit
    - SetConfigOption
    - am_leader_apply_worker
    - set_wal_receiver_timeout
    - MemoryContextDelete
    - equal
    linkageType: ''
    returnType: void
    signature: void maybe_reread_subscription(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_int
      Src: /src/postgres/src/backend/replication/logical/worker.c:5203,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:5205,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:5208,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:5216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5218
      start: 5190
    functionDepth: 1
    functionLinenumber: 5190
    functionLinenumberEnd: 5218
    functionName: set_wal_receiver_timeout
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - elog
    - parse_int
    - SetConfigOption
    linkageType: ''
    returnType: void
    signature: void set_wal_receiver_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - SysCacheIdentifier
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5229
      start: 5225
    functionDepth: 0
    functionLinenumber: 5225
    functionLinenumberEnd: 5229
    functionName: subscription_change_cb
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void subscription_change_cb(Datum arg, SysCacheIdentifier cacheid,
      uint32 hashvalue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5247,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5247,1
    - Dst: subxact_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:5250,1
    - Dst: cleanup_subxact_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:5255,1
    - Dst: BufFileDeleteFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:5256,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:5265,1
    - Dst: BufFileCreateFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:5268,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:5273,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:5274,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:5276,1
    - Dst: cleanup_subxact_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:5279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - subid
    - xid
    argTypes:
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5280
      start: 5240
    functionDepth: 1
    functionLinenumber: 5240
    functionLinenumberEnd: 5280
    functionName: subxact_info_write
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - BufFileWrite
    - BufFileClose
    - Assert
    - subxact_filename
    - BufFileCreateFileSet
    - BufFileDeleteFileSet
    - BufFileOpenFileSet
    - TransactionIdIsValid
    - cleanup_subxact_info
    linkageType: ''
    returnType: void
    signature: void subxact_info_write(Oid subid, TransactionId xid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5297,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5299,1
    - Dst: subxact_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:5305,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:5306,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/replication/logical/worker.c:5312,1
    - Dst: pg_ceil_log2_32
      Src: /src/postgres/src/backend/replication/logical/worker.c:5317,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:5325,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/worker.c:5326,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:5328,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/replication/logical/worker.c:5331,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:5333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - subid
    - xid
    argTypes:
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5334
      start: 5289
    functionDepth: 3
    functionLinenumber: 5289
    functionLinenumberEnd: 5334
    functionName: subxact_info_read
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - BufFileClose
    - Assert
    - subxact_filename
    - BufFileReadExact
    - palloc_array
    - MemoryContextSwitchTo
    - BufFileOpenFileSet
    - pg_ceil_log2_32
    linkageType: ''
    returnType: void
    signature: void subxact_info_read(Oid subid, TransactionId xid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5347,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5347,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5348,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:5392,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/worker.c:5393,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:5394,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/replication/logical/worker.c:5399,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/replication/logical/worker.c:5409,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5415
      start: 5340
    functionDepth: 1
    functionLinenumber: 5340
    functionLinenumberEnd: 5415
    functionName: subxact_info_add
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - BufFileTell
    - Assert
    - palloc_array
    - MemoryContextSwitchTo
    - repalloc_array
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void subxact_info_add(TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/worker.c:5421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - path
    - subid
    - xid
    argTypes:
    - char*
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5422
      start: 5418
    functionDepth: 0
    functionLinenumber: 5418
    functionLinenumberEnd: 5422
    functionName: subxact_filename
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void subxact_filename(char *path, Oid subid, TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/worker.c:5428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - path
    - subid
    - xid
    argTypes:
    - char*
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5429
      start: 5425
    functionDepth: 0
    functionLinenumber: 5425
    functionLinenumberEnd: 5429
    functionName: changes_filename
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void changes_filename(char *path, Oid subid, TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: changes_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:5445,1
    - Dst: BufFileDeleteFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:5446,1
    - Dst: subxact_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:5449,1
    - Dst: BufFileDeleteFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:5450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - subid
    - xid
    argTypes:
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5451
      start: 5439
    functionDepth: 1
    functionLinenumber: 5439
    functionLinenumberEnd: 5451
    functionName: stream_cleanup_files
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 4
    functionsReached:
    - changes_filename
    - subxact_filename
    - BufFileDeleteFileSet
    linkageType: ''
    returnType: void
    signature: void stream_cleanup_files(Oid subid, TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5469,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5470,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5470,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5471,1
    - Dst: changes_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:5474,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:5475,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:5481,1
    - Dst: BufFileCreateFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:5488,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:5496,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/replication/logical/worker.c:5498,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:5501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - subid
    - xid
    - first_segment
    argTypes:
    - Oid
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5502
      start: 5463
    functionDepth: 1
    functionLinenumber: 5463
    functionLinenumberEnd: 5502
    functionName: stream_open_file
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - elog
    - BufFileSeek
    - Assert
    - changes_filename
    - MemoryContextSwitchTo
    - BufFileCreateFileSet
    - BufFileOpenFileSet
    - OidIsValid
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void stream_open_file(Oid subid, TransactionId xid, bool first_segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5511,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:5513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5516
      start: 5508
    functionDepth: 1
    functionLinenumber: 5508
    functionLinenumberEnd: 5516
    functionName: stream_close_file
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 5
    functionsReached:
    - Assert
    - BufFileClose
    linkageType: ''
    returnType: void
    signature: void stream_close_file(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5531,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:5537,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:5540,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:5545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - action
    - s
    argTypes:
    - char
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5546
      start: 5526
    functionDepth: 1
    functionLinenumber: 5526
    functionLinenumberEnd: 5546
    functionName: stream_write_change
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - Assert
    - BufFileWrite
    linkageType: ''
    returnType: void
    signature: void stream_write_change(char action, StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5559,1
    - Dst: stream_start_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:5562,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:5564,1
    - Dst: stream_stop_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:5565,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - xid
    - action
    - s
    argTypes:
    - TransactionId
    - char
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5566
      start: 5556
    functionDepth: 4
    functionLinenumber: 5556
    functionLinenumberEnd: 5566
    functionName: stream_open_and_write_change
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - Assert
    - stream_stop_internal
    - stream_start_internal
    - stream_write_change
    linkageType: ''
    returnType: void
    signature: void stream_open_and_write_change(TransactionId xid, char action, StringInfo
      s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: walrcv_server_version
      Src: /src/postgres/src/backend/replication/logical/worker.c:5583,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/worker.c:5616,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - options
    - slotname
    - origin_startpos
    argTypes:
    - WalRcvStreamOptions*
    - char*
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5617
      start: 5572
    functionDepth: 1
    functionLinenumber: 5572
    functionLinenumberEnd: 5617
    functionName: set_stream_options
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - walrcv_server_version
    - pstrdup
    linkageType: ''
    returnType: void
    signature: "void set_stream_options(WalRcvStreamOptions *options,\n\t\t\t\t   char
      *slotname,\n\t\t\t\t   XLogRecPtr *origin_startpos)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/worker.c:5626,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5632
      start: 5622
    functionDepth: 0
    functionLinenumber: 5622
    functionLinenumberEnd: 5632
    functionName: cleanup_subxact_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void cleanup_subxact_info(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/worker.c:5644,1
    - Dst: LogicalRepApplyLoop
      Src: /src/postgres/src/backend/replication/logical/worker.c:5646,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/worker.c:5648,1
    - Dst: replorigin_xact_clear
      Src: /src/postgres/src/backend/replication/logical/worker.c:5656,1
    - Dst: DisableSubscriptionAndExit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5659,1
    - Dst: AbortOutOfAnyTransaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:5667,1
    - Dst: pgstat_report_subscription_error
      Src: /src/postgres/src/backend/replication/logical/worker.c:5668,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/worker.c:5670,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/worker.c:5673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - origin_startpos
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5674
      start: 5641
    functionDepth: 11
    functionLinenumber: 5641
    functionLinenumberEnd: 5674
    functionName: start_apply
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - pgstat_report_subscription_error
    - PG_CATCH
    - PG_TRY
    - DisableSubscriptionAndExit
    - PG_RE_THROW
    - replorigin_xact_clear
    - AbortOutOfAnyTransaction
    - LogicalRepApplyLoop
    - PG_END_TRY
    linkageType: ''
    returnType: void
    signature: void start_apply(XLogRecPtr origin_startpos)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5701,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:5702,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5703,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/worker.c:5706,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:5708,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:5709,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5710,1
    - Dst: replorigin_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:5711,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/worker.c:5712,1
    - Dst: replorigin_session_get_progress
      Src: /src/postgres/src/backend/replication/logical/worker.c:5714,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:5715,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/logical/worker.c:5721,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5726,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:5727,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5728,1
    - Dst: walrcv_identify_system
      Src: /src/postgres/src/backend/replication/logical/worker.c:5735,1
    - Dst: set_apply_error_context_origin
      Src: /src/postgres/src/backend/replication/logical/worker.c:5737,1
    - Dst: set_stream_options
      Src: /src/postgres/src/backend/replication/logical/worker.c:5739,1
    - Dst: AllTablesyncsReady
      Src: /src/postgres/src/backend/replication/logical/worker.c:5751,1
    - Dst: walrcv_startstreaming
      Src: /src/postgres/src/backend/replication/logical/worker.c:5755,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:5757,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:5763,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:5763,1
    - Dst: UpdateTwoPhaseState
      Src: /src/postgres/src/backend/replication/logical/worker.c:5765,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:5767,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:5768,1
    - Dst: walrcv_startstreaming
      Src: /src/postgres/src/backend/replication/logical/worker.c:5772,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5775,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:5776,1
    - Dst: start_apply
      Src: /src/postgres/src/backend/replication/logical/worker.c:5784,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5785
      start: 5681
    functionDepth: 12
    functionLinenumber: 5681
    functionLinenumberEnd: 5785
    functionName: run_apply_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - errcode
    - replorigin_session_setup
    - CommitTransactionCommand
    - replorigin_create
    - AllTablesyncsReady
    - replorigin_by_name
    - walrcv_identify_system
    - walrcv_connect
    - start_apply
    - StartTransactionCommand
    - walrcv_startstreaming
    - errmsg
    - OidIsValid
    - errmsg_internal
    - ereport
    - GetTransactionSnapshot
    - replorigin_session_get_progress
    - UpdateTwoPhaseState
    - set_apply_error_context_origin
    - ReplicationOriginNameForLogicalRep
    - set_stream_options
    - PushActiveSnapshot
    linkageType: ''
    returnType: void
    signature: void run_apply_worker(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:5798,1
    - Dst: BackgroundWorkerInitializeConnectionByOid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5802,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:5810,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/worker.c:5812,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:5816,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/worker.c:5823,1
    - Dst: GetSubscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:5826,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/replication/logical/worker.c:5830,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5834,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5835,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5839,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/worker.c:5840,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5842,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5849,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5850,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5853,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5869,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5872,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5874,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5875,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5878,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:5882,1
    - Dst: set_wal_receiver_timeout
      Src: /src/postgres/src/backend/replication/logical/worker.c:5886,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/worker.c:5892,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/worker.c:5896,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/worker.c:5900,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/worker.c:5908,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/worker.c:5912,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5916,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5917,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5918,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:5920,1
    - Dst: am_sequencesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5921,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5922,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5923,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5926,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5927,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:5930,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:5947,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5948
      start: 5794
    functionDepth: 4
    functionLinenumber: 5794
    functionLinenumberEnd: 5948
    functionName: InitializeLogRepWorker
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - CommitTransactionCommand
    - CacheRegisterSyscacheCallback
    - am_sequencesync_worker
    - BackgroundWorkerInitializeConnectionByOid
    - StartTransactionCommand
    - get_rel_name
    - errmsg
    - MemoryContextSetParent
    - GetSubscription
    - am_tablesync_worker
    - ereport
    - ApplyLauncherForgetWorkerStartTime
    - before_shmem_exit
    - apply_worker_exit
    - AllocSetContextCreate
    - proc_exit
    - SetConfigOption
    - am_leader_apply_worker
    - LockSharedObject
    - set_wal_receiver_timeout
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void InitializeLogRepWorker(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_xact_clear
      Src: /src/postgres/src/backend/replication/logical/worker.c:5956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5957
      start: 5953
    functionDepth: 1
    functionLinenumber: 5953
    functionLinenumberEnd: 5957
    functionName: on_exit_clear_xact_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - replorigin_xact_clear
    linkageType: ''
    returnType: void
    signature: void on_exit_clear_xact_state(int code, Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_worker_attach
      Src: /src/postgres/src/backend/replication/logical/worker.c:5966,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:5968,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5968,1
    - Dst: am_sequencesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5968,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5968,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/worker.c:5971,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/backend/replication/logical/worker.c:5972,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:5981,1
    - Dst: load_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:5984,1
    - Dst: InitializeLogRepWorker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5986,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:5989,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/worker.c:5996,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - worker_slot
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5999
      start: 5962
    functionDepth: 5
    functionLinenumber: 5962
    functionLinenumberEnd: 5999
    functionName: SetupApplyOrSyncWorker
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - am_sequencesync_worker
    - GetCurrentTimestamp
    - InitializeLogRepWorker
    - elog
    - pqsignal
    - Assert
    - am_leader_apply_worker
    - am_tablesync_worker
    - load_file
    - BackgroundWorkerUnblockSignals
    - logicalrep_worker_attach
    - CacheRegisterSyscacheCallback
    linkageType: ''
    returnType: void
    signature: void SetupApplyOrSyncWorker(int worker_slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/worker.c:6005,1
    - Dst: SetupApplyOrSyncWorker
      Src: /src/postgres/src/backend/replication/logical/worker.c:6009,1
    - Dst: run_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:6013,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:6015,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6016
      start: 6002
    functionDepth: 13
    functionLinenumber: 6002
    functionLinenumberEnd: 6016
    functionName: ApplyWorkerMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - proc_exit
    - SetupApplyOrSyncWorker
    - run_apply_worker
    linkageType: ''
    returnType: void
    signature: void ApplyWorkerMain(Datum main_arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:6029,1
    - Dst: EmitErrorReport
      Src: /src/postgres/src/backend/replication/logical/worker.c:6031,1
    - Dst: AbortOutOfAnyTransaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:6032,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/replication/logical/worker.c:6033,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:6035,1
    - Dst: pgstat_report_subscription_error
      Src: /src/postgres/src/backend/replication/logical/worker.c:6041,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:6044,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:6050,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:6050,1
    - Dst: DisableSubscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:6052,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:6053,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:6054,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:6057,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/worker.c:6058,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:6061,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:6062,1
    - Dst: CheckSubDeadTupleRetention
      Src: /src/postgres/src/backend/replication/logical/worker.c:6070,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:6074,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6075
      start: 6022
    functionDepth: 8
    functionLinenumber: 6022
    functionLinenumberEnd: 6075
    functionName: DisableSubscriptionAndExit
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - pgstat_report_subscription_error
    - PopActiveSnapshot
    - RESUME_INTERRUPTS
    - am_leader_apply_worker
    - proc_exit
    - HOLD_INTERRUPTS
    - ApplyLauncherForgetWorkerStartTime
    - CommitTransactionCommand
    - ereport
    - EmitErrorReport
    - StartTransactionCommand
    - GetTransactionSnapshot
    - errmsg
    - FlushErrorState
    - PushActiveSnapshot
    - AbortOutOfAnyTransaction
    - CheckSubDeadTupleRetention
    - DisableSubscription
    linkageType: ''
    returnType: void
    signature: void DisableSubscriptionAndExit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6084
      start: 6080
    functionDepth: 0
    functionLinenumber: 6080
    functionLinenumberEnd: 6084
    functionName: IsLogicalWorker
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsLogicalWorker(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsLogicalWorker
      Src: /src/postgres/src/backend/replication/logical/worker.c:6092,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:6092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6093
      start: 6089
    functionDepth: 2
    functionLinenumber: 6089
    functionLinenumberEnd: 6093
    functionName: IsLogicalParallelApplyWorker
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - IsLogicalWorker
    - am_parallel_apply_worker
    linkageType: ''
    returnType: bool
    signature: bool IsLogicalParallelApplyWorker(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:6102,1
    - Dst: is_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:6102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:6103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:6104,1
    - Dst: likely
      Src: /src/postgres/src/backend/replication/logical/worker.c:6111,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6111,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:6118,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:6119,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:6120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - finish_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6121
      start: 6099
    functionDepth: 1
    functionLinenumber: 6099
    functionLinenumberEnd: 6121
    functionName: maybe_start_skipping_changes
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - XLogRecPtrIsValid
    - Assert
    - ereport
    - likely
    - errmsg
    - is_skipping_changes
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void maybe_start_skipping_changes(XLogRecPtr finish_lsn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:6129,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:6132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:6133,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:6134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6138
      start: 6126
    functionDepth: 1
    functionLinenumber: 6126
    functionLinenumberEnd: 6138
    functionName: stop_skipping_changes
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - is_skipping_changes
    - ereport
    - errmsg
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void stop_skipping_changes(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/backend/replication/logical/worker.c:6157,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6157,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:6157,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:6160,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:6162,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:6170,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:6170,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/worker.c:6176,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:6179,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/replication/logical/worker.c:6182,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/worker.c:6183,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6185,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:6186,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/worker.c:6188,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/worker.c:6207,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/worker.c:6208,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/worker.c:6209,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/worker.c:6212,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:6215,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:6215,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/replication/logical/worker.c:6217,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:6220,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:6221,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/worker.c:6222,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:6223,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:6224,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:6227,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:6228,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:6230,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:6233,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - finish_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6234
      start: 6148
    functionDepth: 7
    functionLinenumber: 6148
    functionLinenumberEnd: 6234
    functionName: clear_subscription_skip_lsn
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 5
    functionsReached:
    - PopActiveSnapshot
    - CommitTransactionCommand
    - table_close
    - am_parallel_apply_worker
    - LSN_FORMAT_ARGS
    - elog
    - XLogRecPtrIsValid
    - heap_freetuple
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - StartTransactionCommand
    - errmsg
    - ObjectIdGetDatum
    - IsTransactionState
    - ereport
    - GetTransactionSnapshot
    - SearchSysCacheCopy1
    - GETSTRUCT
    - memset
    - LSNGetDatum
    - heap_modify_tuple
    - CatalogTupleUpdate
    - LockSharedObject
    - likely
    - errdetail
    - PushActiveSnapshot
    linkageType: ''
    returnType: void
    signature: void clear_subscription_skip_lsn(XLogRecPtr finish_lsn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:6245,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6249,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:6250,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:6252,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6253,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:6254,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:6256,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:6259,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:6261,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:6263,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6269,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:6270,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:6272,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:6277,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:6279,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:6283,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6287,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:6288,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:6290,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:6296,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:6298,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:6303,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6306
      start: 6237
    functionDepth: 1
    functionLinenumber: 6237
    functionLinenumberEnd: 6306
    functionName: apply_error_callback
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsValid
    - Assert
    - errcontext
    - LSN_FORMAT_ARGS
    - logicalrep_message_type
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void apply_error_callback(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xid
    - lsn
    argTypes:
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6314
      start: 6309
    functionDepth: 0
    functionLinenumber: 6309
    functionLinenumberEnd: 6314
    functionName: set_apply_error_context_xact
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_apply_error_context_xact(TransactionId xid, XLogRecPtr lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:6323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6324
      start: 6317
    functionDepth: 1
    functionLinenumber: 6317
    functionLinenumberEnd: 6324
    functionName: reset_apply_error_context_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 8
    functionsReached:
    - set_apply_error_context_xact
    linkageType: ''
    returnType: void
    signature: void reset_apply_error_context_info(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:6338,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6340,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:6341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6342
      start: 6333
    functionDepth: 7
    functionLinenumber: 6333
    functionLinenumberEnd: 6342
    functionName: LogicalRepWorkersWakeupAtCommit
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - list_append_unique_oid
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void LogicalRepWorkersWakeupAtCommit(Oid subid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/worker.c:6354,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6357,1
    - Dst: logicalrep_workers_find
      Src: /src/postgres/src/backend/replication/logical/worker.c:6361,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:6364,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/worker.c:6366,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/worker.c:6369,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6374
      start: 6347
    functionDepth: 7
    functionLinenumber: 6347
    functionLinenumberEnd: 6374
    functionName: AtEOXact_LogicalRepWorkers
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - LWLockAcquire
    - logicalrep_workers_find
    - lfirst
    - LWLockRelease
    - logicalrep_worker_wakeup_ptr
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void AtEOXact_LogicalRepWorkers(bool isCommit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:6357,1
    - Dst: logicalrep_workers_find
      Src: /src/postgres/src/backend/replication/logical/worker.c:6361,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:6364,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/worker.c:6366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6368
      start: 6355
    functionDepth: 7
    functionLinenumber: 6355
    functionLinenumberEnd: 6368
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 378
    functionsReached:
    - logicalrep_worker_wakeup_ptr
    - lfirst_oid
    - logicalrep_workers_find
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, on_commit_wakeup_workers_subids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:6364,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/worker.c:6366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6367
      start: 6362
    functionDepth: 2
    functionLinenumber: 6362
    functionLinenumberEnd: 6367
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 378
    functionsReached:
    - logicalrep_worker_wakeup_ptr
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, workers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/replication/logical/worker.c:6382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - originname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6384
      start: 6379
    functionDepth: 1
    functionLinenumber: 6379
    functionLinenumberEnd: 6384
    functionName: set_apply_error_context_origin
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - MemoryContextStrdup
    linkageType: ''
    returnType: void
    signature: void set_apply_error_context_origin(char *originname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:6399,1
    - Dst: pa_find_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:6410,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - xid
    - winfo
    argTypes:
    - TransactionId
    - ParallelApplyWorkerInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6435
      start: 6394
    functionDepth: 2
    functionLinenumber: 6394
    functionLinenumberEnd: 6435
    functionName: get_transaction_apply_action
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 6
    functionsReached:
    - am_parallel_apply_worker
    - pa_find_worker
    linkageType: ''
    returnType: TransApplyAction
    signature: TransApplyAction get_transaction_apply_action(TransactionId xid, ParallelApplyWorkerInfo
      **winfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:51,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:54,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:55,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - out
    - txn
    argTypes:
    - StringInfo
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 57
    functionName: logicalrep_write_begin
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendint64
    - pq_sendbyte
    - pq_sendint32
    linkageType: ''
    returnType: void
    signature: void logicalrep_write_begin(StringInfo out, ReorderBufferTXN *txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:66,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:67,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:68,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:69,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - in
    - begin_data
    argTypes:
    - StringInfo
    - LogicalRepBeginData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 71
    functionName: logicalrep_read_begin
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - pq_getmsgint
    - pq_getmsgint64
    linkageType: ''
    returnType: void
    signature: void logicalrep_read_begin(StringInfo in, LogicalRepBeginData *begin_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:83,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:86,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:89,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:90,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - out
    - txn
    - commit_lsn
    argTypes:
    - StringInfo
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 92
    functionName: logicalrep_write_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendint64
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_commit(StringInfo out, ReorderBufferTXN *txn,\n\t\t\t\t\t\tXLogRecPtr
      commit_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:101,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:104,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:107,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:108,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - in
    - commit_data
    argTypes:
    - StringInfo
    - LogicalRepCommitData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 110
    functionName: logicalrep_read_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - elog
    - pq_getmsgbyte
    - pq_getmsgint64
    linkageType: ''
    returnType: void
    signature: void logicalrep_read_commit(StringInfo in, LogicalRepCommitData *commit_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:118,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:121,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:122,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:123,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:124,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - out
    - txn
    argTypes:
    - StringInfo
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 128
    functionName: logicalrep_write_begin_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendint64
    - pq_sendbyte
    - pq_sendint32
    - pq_sendstring
    linkageType: ''
    returnType: void
    signature: void logicalrep_write_begin_prepare(StringInfo out, ReorderBufferTXN
      *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:137,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:138,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:139,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:140,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:141,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:142,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:143,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:144,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/logical/proto.c:147,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - in
    - begin_data
    argTypes:
    - StringInfo
    - LogicalRepPreparedTxnData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 148
    functionName: logicalrep_read_begin_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - elog
    - pq_getmsgstring
    - strlcpy
    - XLogRecPtrIsValid
    - pq_getmsgint64
    - pq_getmsgint
    linkageType: ''
    returnType: void
    signature: void logicalrep_read_begin_prepare(StringInfo in, LogicalRepPreparedTxnData
      *begin_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:167,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/proto.c:167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:168,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:168,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:171,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:174,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:175,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:176,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:177,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - out
    - type
    - txn
    - prepare_lsn
    argTypes:
    - StringInfo
    - LogicalRepMsgType
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 154
    functionDepth: 3
    functionLinenumber: 154
    functionLinenumberEnd: 181
    functionName: logicalrep_write_prepare_common
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 0
    functionsReached:
    - pq_sendstring
    - Assert
    - pq_sendint32
    - rbtxn_is_prepared
    - pq_sendint64
    - pq_sendbyte
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_prepare_common(StringInfo out, LogicalRepMsgType
      type,\n\t\t\t\t\t\t\t\tReorderBufferTXN *txn, XLogRecPtr prepare_lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_write_prepare_common
      Src: /src/postgres/src/backend/replication/logical/proto.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - out
    - txn
    - prepare_lsn
    argTypes:
    - StringInfo
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 186
    functionDepth: 4
    functionLinenumber: 186
    functionLinenumberEnd: 192
    functionName: logicalrep_write_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - logicalrep_write_prepare_common
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_prepare(StringInfo out, ReorderBufferTXN *txn,\n\t\t\t\t\t\t
      XLogRecPtr prepare_lsn)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:203,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:206,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:209,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:210,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:211,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:212,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:213,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:214,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:215,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:216,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:218,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/logical/proto.c:221,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:221,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - in
    - msgtype
    - prepare_data
    argTypes:
    - StringInfo
    - char*
    - LogicalRepPreparedTxnData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 222
    functionName: logicalrep_read_prepare_common
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 0
    functionsReached:
    - elog
    - pq_getmsgstring
    - XLogRecPtrIsValid
    - strlcpy
    - pq_getmsgint64
    - pq_getmsgint
    - pq_getmsgbyte
    linkageType: ''
    returnType: void
    signature: "void logicalrep_read_prepare_common(StringInfo in, char *msgtype,\n\t\t\t\t\t\t\t
      \  LogicalRepPreparedTxnData *prepare_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_read_prepare_common
      Src: /src/postgres/src/backend/replication/logical/proto.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - in
    - prepare_data
    argTypes:
    - StringInfo
    - LogicalRepPreparedTxnData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 231
    functionName: logicalrep_read_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - logicalrep_read_prepare_common
    linkageType: ''
    returnType: void
    signature: void logicalrep_read_prepare(StringInfo in, LogicalRepPreparedTxnData
      *prepare_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:242,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:248,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:251,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:254,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:255,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:256,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:257,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - out
    - txn
    - commit_lsn
    argTypes:
    - StringInfo
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 236
    functionDepth: 3
    functionLinenumber: 236
    functionLinenumberEnd: 261
    functionName: logicalrep_write_commit_prepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendstring
    - Assert
    - pq_sendint32
    - pq_sendint64
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_commit_prepared(StringInfo out, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t\t XLogRecPtr commit_lsn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:270,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:273,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:276,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:277,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:278,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:279,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:280,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:281,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:282,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:283,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/logical/proto.c:286,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - in
    - prepare_data
    argTypes:
    - StringInfo
    - LogicalRepCommitPreparedTxnData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 287
    functionName: logicalrep_read_commit_prepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - elog
    - pq_getmsgstring
    - XLogRecPtrIsValid
    - strlcpy
    - pq_getmsgint64
    - pq_getmsgint
    - pq_getmsgbyte
    linkageType: ''
    returnType: void
    signature: void logicalrep_read_commit_prepared(StringInfo in, LogicalRepCommitPreparedTxnData
      *prepare_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:305,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:308,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:311,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:312,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:313,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:314,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:315,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - out
    - txn
    - prepare_end_lsn
    - prepare_time
    argTypes:
    - StringInfo
    - ReorderBufferTXN*
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 292
    functionDepth: 3
    functionLinenumber: 292
    functionLinenumberEnd: 319
    functionName: logicalrep_write_rollback_prepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendstring
    - Assert
    - pq_sendint32
    - pq_sendint64
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_rollback_prepared(StringInfo out, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t\t   XLogRecPtr prepare_end_lsn,\n\t\t\t\t\t\t\t\t   TimestampTz
      prepare_time)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:329,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:332,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:335,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:336,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:337,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:338,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:339,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:340,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:341,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:342,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:343,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/logical/proto.c:346,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:346,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - in
    - rollback_data
    argTypes:
    - StringInfo
    - LogicalRepRollbackPreparedTxnData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 347
    functionName: logicalrep_read_rollback_prepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - elog
    - pq_getmsgstring
    - XLogRecPtrIsValid
    - strlcpy
    - pq_getmsgint64
    - pq_getmsgint
    - pq_getmsgbyte
    linkageType: ''
    returnType: void
    signature: "void logicalrep_read_rollback_prepared(StringInfo in,\n\t\t\t\t\t\t\t\t
      \ LogicalRepRollbackPreparedTxnData *rollback_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_write_prepare_common
      Src: /src/postgres/src/backend/replication/logical/proto.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - out
    - txn
    - prepare_lsn
    argTypes:
    - StringInfo
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 352
    functionDepth: 4
    functionLinenumber: 352
    functionLinenumberEnd: 359
    functionName: logicalrep_write_stream_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - logicalrep_write_prepare_common
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_stream_prepare(StringInfo out,\n\t\t\t\t\t\t\t\tReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t\tXLogRecPtr prepare_lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_read_prepare_common
      Src: /src/postgres/src/backend/replication/logical/proto.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - in
    - prepare_data
    argTypes:
    - StringInfo
    - LogicalRepPreparedTxnData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 364
    functionDepth: 3
    functionLinenumber: 364
    functionLinenumberEnd: 368
    functionName: logicalrep_read_stream_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - logicalrep_read_prepare_common
    linkageType: ''
    returnType: void
    signature: void logicalrep_read_stream_prepare(StringInfo in, LogicalRepPreparedTxnData
      *prepare_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:377,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:380,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - out
    - origin
    - origin_lsn
    argTypes:
    - StringInfo
    - char*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 373
    functionDepth: 3
    functionLinenumber: 373
    functionLinenumberEnd: 384
    functionName: logicalrep_write_origin
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendint64
    - pq_sendbyte
    - pq_sendstring
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_origin(StringInfo out, const char *origin,\n\t\t\t\t\t\tXLogRecPtr
      origin_lsn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:393,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/proto.c:396,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - in
    - origin_lsn
    argTypes:
    - StringInfo
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 389
    functionDepth: 2
    functionLinenumber: 389
    functionLinenumberEnd: 397
    functionName: logicalrep_read_origin
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 0
    functionsReached:
    - pq_getmsgstring
    - pstrdup
    - pq_getmsgint64
    linkageType: ''
    returnType: char
    signature: 'char *

      logicalrep_read_origin(StringInfo in, XLogRecPtr *origin_lsn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:408,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:411,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:412,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:415,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/proto.c:415,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:417,1
    - Dst: logicalrep_write_tuple
      Src: /src/postgres/src/backend/replication/logical/proto.c:418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 7
    argNames:
    - out
    - xid
    - rel
    - newslot
    - binary
    - columns
    - include_gencols_type
    argTypes:
    - StringInfo
    - TransactionId
    - Relation
    - TupleTableSlot*
    - bool
    - Bitmapset*
    - PublishGencolsType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 402
    functionDepth: 3
    functionLinenumber: 402
    functionLinenumberEnd: 420
    functionName: logicalrep_write_insert
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - logicalrep_write_tuple
    - pq_sendint32
    - TransactionIdIsValid
    - pq_sendbyte
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_insert(StringInfo out, TransactionId xid, Relation
      rel,\n\t\t\t\t\t\tTupleTableSlot *newslot, bool binary,\n\t\t\t\t\t\tBitmapset
      *columns,\n\t\t\t\t\t\tPublishGencolsType include_gencols_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:434,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:436,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:438,1
    - Dst: logicalrep_read_tuple
      Src: /src/postgres/src/backend/replication/logical/proto.c:441,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - in
    - newtup
    argTypes:
    - StringInfo
    - LogicalRepTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 427
    functionDepth: 2
    functionLinenumber: 427
    functionLinenumberEnd: 444
    functionName: logicalrep_read_insert
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - elog
    - logicalrep_read_tuple
    - pq_getmsgint
    - pq_getmsgbyte
    linkageType: ''
    returnType: LogicalRepRelId
    signature: LogicalRepRelId logicalrep_read_insert(StringInfo in, LogicalRepTupleData
      *newtup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:457,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:462,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:463,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:466,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/proto.c:466,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:471,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:473,1
    - Dst: logicalrep_write_tuple
      Src: /src/postgres/src/backend/replication/logical/proto.c:474,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:478,1
    - Dst: logicalrep_write_tuple
      Src: /src/postgres/src/backend/replication/logical/proto.c:479,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 8
    argNames:
    - out
    - xid
    - rel
    - oldslot
    - newslot
    - binary
    - columns
    - include_gencols_type
    argTypes:
    - StringInfo
    - TransactionId
    - Relation
    - TupleTableSlot*
    - TupleTableSlot*
    - bool
    - Bitmapset*
    - PublishGencolsType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 449
    functionDepth: 3
    functionLinenumber: 449
    functionLinenumberEnd: 481
    functionName: logicalrep_write_update
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - logicalrep_write_tuple
    - Assert
    - pq_sendint32
    - TransactionIdIsValid
    - pq_sendbyte
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_update(StringInfo out, TransactionId xid, Relation
      rel,\n\t\t\t\t\t\tTupleTableSlot *oldslot, TupleTableSlot *newslot,\n\t\t\t\t\t\tbool
      binary, Bitmapset *columns,\n\t\t\t\t\t\tPublishGencolsType include_gencols_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:495,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:498,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:500,1
    - Dst: logicalrep_read_tuple
      Src: /src/postgres/src/backend/replication/logical/proto.c:506,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:509,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:516,1
    - Dst: logicalrep_read_tuple
      Src: /src/postgres/src/backend/replication/logical/proto.c:519,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - in
    - has_oldtuple
    - oldtup
    - newtup
    argTypes:
    - StringInfo
    - bool*
    - LogicalRepTupleData*
    - LogicalRepTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 486
    functionDepth: 2
    functionLinenumber: 486
    functionLinenumberEnd: 522
    functionName: logicalrep_read_update
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - elog
    - logicalrep_read_tuple
    - pq_getmsgint
    - pq_getmsgbyte
    linkageType: ''
    returnType: LogicalRepRelId
    signature: "LogicalRepRelId logicalrep_read_update(StringInfo in, bool *has_oldtuple,\n\t\t\t\t\t
      \  LogicalRepTupleData *oldtup,\n\t\t\t\t\t   LogicalRepTupleData *newtup)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:533,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:537,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:540,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:541,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:544,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/proto.c:544,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:547,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:549,1
    - Dst: logicalrep_write_tuple
      Src: /src/postgres/src/backend/replication/logical/proto.c:551,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 7
    argNames:
    - out
    - xid
    - rel
    - oldslot
    - binary
    - columns
    - include_gencols_type
    argTypes:
    - StringInfo
    - TransactionId
    - Relation
    - TupleTableSlot*
    - bool
    - Bitmapset*
    - PublishGencolsType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 527
    functionDepth: 3
    functionLinenumber: 527
    functionLinenumberEnd: 553
    functionName: logicalrep_write_delete
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - logicalrep_write_tuple
    - Assert
    - pq_sendint32
    - TransactionIdIsValid
    - pq_sendbyte
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_delete(StringInfo out, TransactionId xid, Relation
      rel,\n\t\t\t\t\t\tTupleTableSlot *oldslot, bool binary,\n\t\t\t\t\t\tBitmapset
      *columns,\n\t\t\t\t\t\tPublishGencolsType include_gencols_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:567,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:570,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:572,1
    - Dst: logicalrep_read_tuple
      Src: /src/postgres/src/backend/replication/logical/proto.c:574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - in
    - oldtup
    argTypes:
    - StringInfo
    - LogicalRepTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 560
    functionDepth: 2
    functionLinenumber: 560
    functionLinenumberEnd: 577
    functionName: logicalrep_read_delete
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - elog
    - logicalrep_read_tuple
    - pq_getmsgint
    - pq_getmsgbyte
    linkageType: ''
    returnType: LogicalRepRelId
    signature: LogicalRepRelId logicalrep_read_delete(StringInfo in, LogicalRepTupleData
      *oldtup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:592,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:595,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:596,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:598,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/replication/logical/proto.c:605,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:608,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 6
    argNames:
    - out
    - xid
    - nrelids
    - relids
    - cascade
    - restart_seqs
    argTypes:
    - StringInfo
    - TransactionId
    - int
    - Oid[]
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 609
    functionName: logicalrep_write_truncate
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendbyte
    - pq_sendint32
    - pq_sendint8
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_truncate(StringInfo out,\n\t\t\t\t\t\t  TransactionId
      xid,\n\t\t\t\t\t\t  int nrelids,\n\t\t\t\t\t\t  Oid relids[],\n\t\t\t\t\t\t
      \ bool cascade, bool restart_seqs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:623,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:626,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/proto.c:631,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:631,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - in
    - cascade
    - restart_seqs
    argTypes:
    - StringInfo
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 614
    functionDepth: 6
    functionLinenumber: 614
    functionLinenumberEnd: 634
    functionName: logicalrep_read_truncate
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - lappend_oid
    - pq_getmsgint
    linkageType: ''
    returnType: List
    signature: "List *\nlogicalrep_read_truncate(StringInfo in,\n\t\t\t\t\t\t bool
      *cascade, bool *restart_seqs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:646,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:653,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:654,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/replication/logical/proto.c:656,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:657,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:658,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:659,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/replication/logical/proto.c:660,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 7
    argNames:
    - out
    - xid
    - lsn
    - transactional
    - prefix
    - sz
    - message
    argTypes:
    - StringInfo
    - TransactionId
    - XLogRecPtr
    - bool
    - char*
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 639
    functionDepth: 3
    functionLinenumber: 639
    functionLinenumberEnd: 661
    functionName: logicalrep_write_message
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendint8
    - pq_sendstring
    - pq_sendint32
    - pq_sendint64
    - pq_sendbytes
    - pq_sendbyte
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_message(StringInfo out, TransactionId xid, XLogRecPtr
      lsn,\n\t\t\t\t\t\t bool transactional, const char *prefix, Size sz,\n\t\t\t\t\t\t
      const char *message)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:673,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:676,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:677,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:680,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/proto.c:680,1
    - Dst: logicalrep_write_namespace
      Src: /src/postgres/src/backend/replication/logical/proto.c:683,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/proto.c:683,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/proto.c:684,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:685,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:688,1
    - Dst: logicalrep_write_attrs
      Src: /src/postgres/src/backend/replication/logical/proto.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - out
    - xid
    - rel
    - columns
    - include_gencols_type
    argTypes:
    - StringInfo
    - TransactionId
    - Relation
    - Bitmapset*
    - PublishGencolsType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 666
    functionDepth: 3
    functionLinenumber: 666
    functionLinenumberEnd: 692
    functionName: logicalrep_write_rel
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendstring
    - logicalrep_write_namespace
    - pq_sendint32
    - TransactionIdIsValid
    - RelationGetNamespace
    - RelationGetRelationName
    - pq_sendbyte
    - logicalrep_write_attrs
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_rel(StringInfo out, TransactionId xid, Relation
      rel,\n\t\t\t\t\t Bitmapset *columns,\n\t\t\t\t\t PublishGencolsType include_gencols_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/replication/logical/proto.c:700,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:702,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/proto.c:705,1
    - Dst: logicalrep_read_namespace
      Src: /src/postgres/src/backend/replication/logical/proto.c:705,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/proto.c:706,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:706,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:709,1
    - Dst: logicalrep_read_attrs
      Src: /src/postgres/src/backend/replication/logical/proto.c:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - in
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 718
    functionName: logicalrep_read_rel
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_getmsgstring
    - logicalrep_read_namespace
    - pstrdup
    - logicalrep_read_attrs
    - palloc_object
    - pq_getmsgint
    - pq_getmsgbyte
    linkageType: ''
    returnType: LogicalRepRelation
    signature: 'LogicalRepRelation *

      logicalrep_read_rel(StringInfo in)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getBaseType
      Src: /src/postgres/src/backend/replication/logical/proto.c:728,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:732,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:735,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:736,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/proto.c:738,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/proto.c:738,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:739,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:740,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/proto.c:741,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:744,1
    - Dst: logicalrep_write_namespace
      Src: /src/postgres/src/backend/replication/logical/proto.c:747,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:748,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/proto.c:748,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/proto.c:750,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - out
    - xid
    - typoid
    argTypes:
    - StringInfo
    - TransactionId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 725
    functionDepth: 3
    functionLinenumber: 725
    functionLinenumberEnd: 751
    functionName: logicalrep_write_typ
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - pq_sendstring
    - HeapTupleIsValid
    - logicalrep_write_namespace
    - pq_sendint32
    - getBaseType
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - pq_sendbyte
    - ObjectIdGetDatum
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void logicalrep_write_typ(StringInfo out, TransactionId xid, Oid typoid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:759,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/proto.c:762,1
    - Dst: logicalrep_read_namespace
      Src: /src/postgres/src/backend/replication/logical/proto.c:762,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/proto.c:763,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - in
    - ltyp
    argTypes:
    - StringInfo
    - LogicalRepTyp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 756
    functionDepth: 2
    functionLinenumber: 756
    functionLinenumberEnd: 764
    functionName: logicalrep_read_typ
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_getmsgstring
    - pq_getmsgint
    - pstrdup
    - logicalrep_read_namespace
    linkageType: ''
    returnType: void
    signature: void logicalrep_read_typ(StringInfo in, LogicalRepTyp *ltyp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/proto.c:780,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/proto.c:784,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/logical/proto.c:786,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/logical/proto.c:792,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/proto.c:794,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/proto.c:803,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/logical/proto.c:805,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:811,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/replication/logical/proto.c:815,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/proto.c:815,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:822,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/proto.c:826,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/proto.c:826,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:827,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:828,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/proto.c:829,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:834,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:839,1
    - Dst: OidSendFunctionCall
      Src: /src/postgres/src/backend/replication/logical/proto.c:840,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/replication/logical/proto.c:841,1
    - Dst: pq_sendint
      Src: /src/postgres/src/backend/replication/logical/proto.c:842,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/replication/logical/proto.c:843,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/replication/logical/proto.c:843,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/proto.c:844,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:850,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/replication/logical/proto.c:851,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/replication/logical/proto.c:852,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/logical/proto.c:852,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/proto.c:853,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/proto.c:856,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 6
    argNames:
    - out
    - rel
    - slot
    - binary
    - columns
    - include_gencols_type
    argTypes:
    - StringInfo
    - Relation
    - TupleTableSlot*
    - bool
    - Bitmapset*
    - PublishGencolsType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 769
    functionDepth: 3
    functionLinenumber: 769
    functionLinenumberEnd: 858
    functionName: logicalrep_write_tuple
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 3
    functionsReached:
    - logicalrep_should_publish_column
    - VARDATA
    - VARATT_IS_EXTERNAL_ONDISK
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - RelationGetDescr
    - pfree
    - ReleaseSysCache
    - OidOutputFunctionCall
    - OidIsValid
    - ObjectIdGetDatum
    - VARSIZE
    - pq_sendint
    - strlen
    - GETSTRUCT
    - pq_sendbyte
    - TupleDescAttr
    - slot_getallattrs
    - OidSendFunctionCall
    - pq_sendbytes
    - pq_sendint16
    - pq_sendcountedtext
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_tuple(StringInfo out, Relation rel, TupleTableSlot
      *slot,\n\t\t\t\t\t   bool binary, Bitmapset *columns,\n\t\t\t\t\t   PublishGencolsType
      include_gencols_type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:870,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/replication/logical/proto.c:873,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/proto.c:874,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:885,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:898,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/proto.c:901,1
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/replication/logical/proto.c:902,1
    - Dst: initStringInfoFromString
      Src: /src/postgres/src/backend/replication/logical/proto.c:912,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:915,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - in
    - tuple
    argTypes:
    - StringInfo
    - LogicalRepTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 863
    functionDepth: 2
    functionLinenumber: 863
    functionLinenumberEnd: 918
    functionName: logicalrep_read_tuple
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 3
    functionsReached:
    - elog
    - initStringInfoFromString
    - palloc0_array
    - palloc_array
    - pq_copymsgbytes
    - palloc
    - pq_getmsgint
    - pq_getmsgbyte
    linkageType: ''
    returnType: void
    signature: void logicalrep_read_tuple(StringInfo in, LogicalRepTupleData *tuple)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/proto.c:933,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/proto.c:938,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/logical/proto.c:940,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/logical/proto.c:946,1
    - Dst: RelationGetIdentityKeyBitmap
      Src: /src/postgres/src/backend/replication/logical/proto.c:951,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/proto.c:956,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/logical/proto.c:959,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/replication/logical/proto.c:965,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:969,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:972,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/proto.c:972,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:975,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:978,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/replication/logical/proto.c:981,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 4
    argNames:
    - out
    - rel
    - columns
    - include_gencols_type
    argTypes:
    - StringInfo
    - Relation
    - Bitmapset*
    - PublishGencolsType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 923
    functionDepth: 3
    functionLinenumber: 923
    functionLinenumberEnd: 982
    functionName: logicalrep_write_attrs
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendstring
    - RelationGetDescr
    - bms_is_member
    - pq_sendint32
    - RelationGetIdentityKeyBitmap
    - bms_free
    - logicalrep_should_publish_column
    - NameStr
    - pq_sendbyte
    - TupleDescAttr
    - pq_sendint16
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_attrs(StringInfo out, Relation rel, Bitmapset
      *columns,\n\t\t\t\t\t   PublishGencolsType include_gencols_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:996,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/proto.c:997,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/replication/logical/proto.c:998,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1006,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/proto.c:1008,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/proto.c:1011,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:1011,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:1014,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:1017,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - in
    - rel
    argTypes:
    - StringInfo
    - LogicalRepRelation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 987
    functionDepth: 3
    functionLinenumber: 987
    functionLinenumberEnd: 1024
    functionName: logicalrep_read_attrs
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_getmsgstring
    - pstrdup
    - palloc_array
    - pq_getmsgint
    - bms_add_member
    - pq_getmsgbyte
    linkageType: ''
    returnType: void
    signature: void logicalrep_read_attrs(StringInfo in, LogicalRepRelation *rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1033,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/proto.c:1036,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:1039,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:1042,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - out
    - nspid
    argTypes:
    - StringInfo
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1029
    functionDepth: 3
    functionLinenumber: 1029
    functionLinenumberEnd: 1044
    functionName: logicalrep_write_namespace
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 2
    functionsReached:
    - get_namespace_name
    - pq_sendbyte
    - pq_sendstring
    - elog
    linkageType: ''
    returnType: void
    signature: void logicalrep_write_namespace(StringInfo out, Oid nspid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:1052,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - in
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1049
    functionDepth: 2
    functionLinenumber: 1049
    functionLinenumberEnd: 1058
    functionName: logicalrep_read_namespace
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 2
    functionsReached:
    - pq_getmsgstring
    linkageType: ''
    returnType: char
    signature: 'char *

      logicalrep_read_namespace(StringInfo in)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1067,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:1069,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:1069,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:1072,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - out
    - xid
    - first_segment
    argTypes:
    - StringInfo
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1063
    functionDepth: 3
    functionLinenumber: 1063
    functionLinenumberEnd: 1076
    functionName: logicalrep_write_stream_start
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - Assert
    - pq_sendbyte
    - pq_sendint32
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_stream_start(StringInfo out,\n\t\t\t\t\t\t\t
      \ TransactionId xid, bool first_segment)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:1086,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:1088,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - in
    - first_segment
    argTypes:
    - StringInfo
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1081
    functionDepth: 2
    functionLinenumber: 1081
    functionLinenumberEnd: 1092
    functionName: logicalrep_read_stream_start
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - Assert
    - pq_getmsgint
    - pq_getmsgbyte
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId logicalrep_read_stream_start(StringInfo in, bool *first_segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1097
    functionDepth: 3
    functionLinenumber: 1097
    functionLinenumberEnd: 1101
    functionName: logicalrep_write_stream_stop
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void logicalrep_write_stream_stop(StringInfo out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:1114,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:1114,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:1117,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1120,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1123,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1124,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - out
    - txn
    - commit_lsn
    argTypes:
    - StringInfo
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1106
    functionDepth: 3
    functionLinenumber: 1106
    functionLinenumberEnd: 1126
    functionName: logicalrep_write_stream_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - Assert
    - pq_sendint32
    - pq_sendint64
    - pq_sendbyte
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_stream_commit(StringInfo out, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t   XLogRecPtr commit_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:1137,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1140,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:1143,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1146,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1147,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - in
    - commit_data
    argTypes:
    - StringInfo
    - LogicalRepCommitData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1131
    functionDepth: 2
    functionLinenumber: 1131
    functionLinenumberEnd: 1151
    functionName: logicalrep_read_stream_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - elog
    - pq_getmsgint
    - pq_getmsgbyte
    - pq_getmsgint64
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId logicalrep_read_stream_commit(StringInfo in, LogicalRepCommitData
      *commit_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:1167,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:1167,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:1167,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:1170,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:1171,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1175,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - out
    - xid
    - subxid
    - abort_lsn
    - abort_time
    - write_abort_info
    argTypes:
    - StringInfo
    - TransactionId
    - TransactionId
    - XLogRecPtr
    - TimestampTz
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1160
    functionDepth: 3
    functionLinenumber: 1160
    functionLinenumberEnd: 1178
    functionName: logicalrep_write_stream_abort
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - Assert
    - pq_sendint32
    - pq_sendint64
    - pq_sendbyte
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void logicalrep_write_stream_abort(StringInfo out, TransactionId xid,\n\t\t\t\t\t\t\t
      \ TransactionId subxid, XLogRecPtr abort_lsn,\n\t\t\t\t\t\t\t  TimestampTz abort_time,
      bool write_abort_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:1191,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:1193,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:1194,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1198,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - in
    - abort_data
    - read_abort_info
    argTypes:
    - StringInfo
    - LogicalRepStreamAbortData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1186
    functionDepth: 2
    functionLinenumber: 1186
    functionLinenumberEnd: 1206
    functionName: logicalrep_read_stream_abort
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - Assert
    - pq_getmsgint
    - pq_getmsgint64
    linkageType: ''
    returnType: void
    signature: "void logicalrep_read_stream_abort(StringInfo in,\n\t\t\t\t\t\t\t LogicalRepStreamAbortData
      *abort_data,\n\t\t\t\t\t\t\t bool read_abort_info)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/proto.c:1263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 43
    argCount: 1
    argNames:
    - action
    argTypes:
    - LogicalRepMsgType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1266
    functionName: logicalrep_message_type
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      logicalrep_message_type(LogicalRepMsgType action)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/replication/logical/proto.c:1290,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - att
    - columns
    - include_gencols_type
    argTypes:
    - Form_pg_attribute
    - Bitmapset*
    - PublishGencolsType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1281
    functionDepth: 3
    functionLinenumber: 1281
    functionLinenumberEnd: 1304
    functionName: logicalrep_should_publish_column
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 3
    functionsReached:
    - bms_is_member
    linkageType: ''
    returnType: bool
    signature: "bool logicalrep_should_publish_column(Form_pg_attribute att, Bitmapset
      *columns,\n\t\t\t\t\t\t\t\t PublishGencolsType include_gencols_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:52,1
    - Dst: am_sequencesync_worker
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:52,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:52,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:58,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:60,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:61,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:65,1
    - Dst: GetXLogWriteRecPtr
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:65,1
    - Dst: am_sequencesync_worker
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:67,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:69,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:70,1
    - Dst: logicalrep_reset_seqsync_start_time
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:77,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:81,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:82,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:83,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:85,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:86,1
    - Dst: logicalrep_worker_wakeup
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:89,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:94,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 95
    functionName: FinishSyncWorker
    functionSourceFile: /src/postgres/src/backend/replication/logical/syncutils.c
    functionUses: 4
    functionsReached:
    - am_sequencesync_worker
    - Assert
    - IsTransactionState
    - logicalrep_worker_wakeup
    - am_tablesync_worker
    - ereport
    - CommitTransactionCommand
    - XLogFlush
    - logicalrep_reset_seqsync_start_time
    - GetXLogWriteRecPtr
    - StartTransactionCommand
    - get_rel_name
    - errmsg
    - proc_exit
    - pgstat_report_stat
    linkageType: ''
    returnType: pg_noreturn
    signature: pg_noreturn FinishSyncWorker(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - SysCacheIdentifier
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: InvalidateSyncingRelStates
    functionSourceFile: /src/postgres/src/backend/replication/logical/syncutils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void InvalidateSyncingRelStates(Datum arg, SysCacheIdentifier cacheid,\n\t\t\t\t\t\t
      \  uint32 hashvalue)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:123,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:123,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:124,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:130,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:133,1
    - Dst: logicalrep_worker_launch
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:141,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 4
    argNames:
    - wtype
    - nsyncworkers
    - relid
    - last_start_time
    argTypes:
    - LogicalRepWorkerType
    - int
    - Oid
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 148
    functionName: launch_sync_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/syncutils.c
    functionUses: 3
    functionsReached:
    - TimestampDifferenceExceeds
    - GetCurrentTimestamp
    - Assert
    - logicalrep_worker_launch
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: "void launch_sync_worker(LogicalRepWorkerType wtype, int nsyncworkers,
      Oid relid,\n\t\t\t\t   TimestampTz *last_start_time)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ProcessSyncingTablesForSync
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:170,1
    - Dst: ProcessSyncingTablesForApply
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:174,1
    - Dst: ProcessSequencesForSync
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:175,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:180,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:185,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - current_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 155
    functionDepth: 9
    functionLinenumber: 155
    functionLinenumberEnd: 187
    functionName: ProcessSyncingRelations
    functionSourceFile: /src/postgres/src/backend/replication/logical/syncutils.c
    functionUses: 7
    functionsReached:
    - ProcessSyncingTablesForSync
    - ProcessSequencesForSync
    - elog
    - ProcessSyncingTablesForApply
    linkageType: ''
    returnType: void
    signature: void ProcessSyncingRelations(XLogRecPtr current_lsn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:226,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:229,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:231,1
    - Dst: GetSubscriptionRelations
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:236,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:240,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:243,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:247,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:248,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:249,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:253,1
    - Dst: HasSubscriptionTables
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:263,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - has_pending_subtables
    - has_pending_subsequences
    - started_tx
    argTypes:
    - bool*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 202
    functionDepth: 7
    functionLinenumber: 202
    functionLinenumberEnd: 281
    functionName: FetchRelationStates
    functionSourceFile: /src/postgres/src/backend/replication/logical/syncutils.c
    functionUses: 4
    functionsReached:
    - memcpy
    - IsTransactionState
    - lappend
    - list_free_deep
    - MemoryContextSwitchTo
    - GetSubscriptionRelations
    - StartTransactionCommand
    - get_rel_relkind
    - palloc_object
    - HasSubscriptionTables
    linkageType: ''
    returnType: void
    signature: "void FetchRelationStates(bool *has_pending_subtables,\n\t\t\t\t\tbool
      *has_pending_subsequences,\n\t\t\t\t\tbool *started_tx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:243,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:247,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:248,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/syncutils.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 241
    functionDepth: 6
    functionLinenumber: 241
    functionLinenumberEnd: 252
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/syncutils.c
    functionUses: 11
    functionsReached:
    - get_rel_relkind
    - memcpy
    - lappend
    - palloc_object
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(SubscriptionRelState, subrel, rstates)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CheckSlotRequirements
      Src: /src/postgres/src/backend/replication/logical/logical.c:113,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:121,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:126,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logical.c:129,1
    - Dst: IsLogicalDecodingEnabled
      Src: /src/postgres/src/backend/replication/logical/logical.c:129,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:130,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:131,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:132,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/logical.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - repack
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 134
    functionName: CheckLogicalDecodingRequirements
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 5
    functionsReached:
    - CheckSlotRequirements
    - errcode
    - Assert
    - ereport
    - IsLogicalDecodingEnabled
    - errhint
    - errmsg
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void CheckLogicalDecodingRequirements(bool repack)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/logical.c:160,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:163,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/logical/logical.c:164,1
    - Dst: LoadOutputPlugin
      Src: /src/postgres/src/backend/replication/logical/logical.c:173,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:173,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/logical.c:187,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:189,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:192,1
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/backend/replication/logical/logical.c:197,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:199,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:200,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:201,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/logical.c:202,1
    - Dst: ReorderBufferAllocate
      Src: /src/postgres/src/backend/replication/logical/logical.c:204,1
    - Dst: AllocateSnapshotBuilder
      Src: /src/postgres/src/backend/replication/logical/logical.c:206,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/replication/logical/logical.c:283,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:292,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 10
    argNames:
    - output_plugin_options
    - start_lsn
    - xmin_horizon
    - need_full_snapshot
    - fast_forward
    - in_create
    - xl_routine
    - prepare_write
    - do_write
    - update_progress
    argTypes:
    - List*
    - XLogRecPtr
    - TransactionId
    - bool
    - bool
    - bool
    - XLogReaderRoutine*
    - LogicalOutputPluginWriterPrepareWrite
    - LogicalOutputPluginWriterWrite
    - LogicalOutputPluginWriterUpdateProgress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 140
    functionDepth: 4
    functionLinenumber: 140
    functionLinenumberEnd: 295
    functionName: StartupDecodingContext
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - palloc0_object
    - LoadOutputPlugin
    - LWLockAcquire
    - errcode
    - errdetail
    - IsTransactionOrTransactionBlock
    - ereport
    - AllocateSnapshotBuilder
    - MemoryContextSwitchTo
    - XLogReaderAllocate
    - NameStr
    - LWLockRelease
    - AllocSetContextCreate
    - errmsg
    - ReorderBufferAllocate
    linkageType: ''
    returnType: LogicalDecodingContext
    signature: "LogicalDecodingContext *\nStartupDecodingContext(List *output_plugin_options,\n\t\t\t\t\t
      \  XLogRecPtr start_lsn,\n\t\t\t\t\t   TransactionId xmin_horizon,\n\t\t\t\t\t
      \  bool need_full_snapshot,\n\t\t\t\t\t   bool fast_forward,\n\t\t\t\t\t   bool
      in_create,\n\t\t\t\t\t   XLogReaderRoutine *xl_routine,\n\t\t\t\t\t   LogicalOutputPluginWriterPrepareWrite
      prepare_write,\n\t\t\t\t\t   LogicalOutputPluginWriterWrite do_write,\n\t\t\t\t\t
      \  LogicalOutputPluginWriterUpdateProgress update_progress)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/logical/logical.c:342,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:349,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:352,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/logical/logical.c:355,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:356,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:357,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:358,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:361,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:362,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:363,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:364,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/logical.c:366,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/replication/logical/logical.c:367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:368,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:369,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:370,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/logical/logical.c:377,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:378,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:380,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:382,1
    - Dst: ReplicationSlotReserveWal
      Src: /src/postgres/src/backend/replication/logical/logical.c:383,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:386,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:388,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:416,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:417,1
    - Dst: GetOldestSafeDecodingTransactionId
      Src: /src/postgres/src/backend/replication/logical/logical.c:419,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:421,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:426,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/logical.c:428,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:430,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:431,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logical.c:433,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/logical.c:434,1
    - Dst: StartupDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:436,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:442,1
    - Dst: startup_cb_wrapper
      Src: /src/postgres/src/backend/replication/logical/logical.c:444,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:445,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 9
    argNames:
    - plugin
    - output_plugin_options
    - need_full_snapshot
    - for_repack
    - restart_lsn
    - xl_routine
    - prepare_write
    - do_write
    - update_progress
    argTypes:
    - char*
    - List*
    - bool
    - bool
    - XLogRecPtr
    - XLogReaderRoutine*
    - LogicalOutputPluginWriterPrepareWrite
    - LogicalOutputPluginWriterWrite
    - LogicalOutputPluginWriterUpdateProgress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 321
    functionDepth: 6
    functionLinenumber: 321
    functionLinenumberEnd: 458
    functionName: CreateInitDecodingContext
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 2
    functionsReached:
    - ReplicationSlotMarkDirty
    - LWLockAcquire
    - errcode
    - StartupDecodingContext
    - NameStr
    - elog
    - ReplicationSlotReserveWal
    - XLogRecPtrIsValid
    - GetTopTransactionIdIfAny
    - errmsg
    - SpinLockRelease
    - ReplicationSlotSave
    - CheckLogicalDecodingRequirements
    - ReplicationSlotsComputeRequiredXmin
    - IsTransactionState
    - ereport
    - namestrcpy
    - SlotIsPhysical
    - GetOldestSafeDecodingTransactionId
    - startup_cb_wrapper
    - MemoryContextSwitchTo
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: LogicalDecodingContext
    signature: "LogicalDecodingContext *\nCreateInitDecodingContext(const char *plugin,\n\t\t\t\t\t\t
      \ List *output_plugin_options,\n\t\t\t\t\t\t  bool need_full_snapshot,\n\t\t\t\t\t\t
      \ bool for_repack,\n\t\t\t\t\t\t  XLogRecPtr restart_lsn,\n\t\t\t\t\t\t  XLogReaderRoutine
      *xl_routine,\n\t\t\t\t\t\t  LogicalOutputPluginWriterPrepareWrite prepare_write,\n\t\t\t\t\t\t
      \ LogicalOutputPluginWriterWrite do_write,\n\t\t\t\t\t\t  LogicalOutputPluginWriterUpdateProgress
      update_progress)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:508,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/logical/logical.c:511,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:512,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:513,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:514,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:522,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:523,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:524,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:525,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logical.c:532,1
    - Dst: IsSyncingReplicationSlots
      Src: /src/postgres/src/backend/replication/logical/logical.c:532,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:533,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:534,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:535,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:536,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/logical.c:537,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/logical.c:538,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:541,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:542,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:542,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:544,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:563,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:564,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:565,1
    - Dst: StartupDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:570,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:576,1
    - Dst: startup_cb_wrapper
      Src: /src/postgres/src/backend/replication/logical/logical.c:578,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:579,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:592,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:595,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logical.c:596,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/logical.c:597,1
    - Dst: SnapBuildSetTwoPhaseAt
      Src: /src/postgres/src/backend/replication/logical/logical.c:598,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:603,1
    - Dst: LogicalDecodingLogLevel
      Src: /src/postgres/src/backend/replication/logical/logical.c:603,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:604,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:605,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/logical.c:606,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:607,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:608,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 7
    argNames:
    - start_lsn
    - output_plugin_options
    - fast_forward
    - xl_routine
    - prepare_write
    - do_write
    - update_progress
    argTypes:
    - XLogRecPtr
    - List*
    - bool
    - XLogReaderRoutine*
    - LogicalOutputPluginWriterPrepareWrite
    - LogicalOutputPluginWriterWrite
    - LogicalOutputPluginWriterUpdateProgress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 490
    functionDepth: 5
    functionLinenumber: 490
    functionLinenumberEnd: 611
    functionName: CreateDecodingContext
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 2
    functionsReached:
    - ReplicationSlotMarkDirty
    - SnapBuildSetTwoPhaseAt
    - errcode
    - LogicalDecodingLogLevel
    - StartupDecodingContext
    - errhint
    - NameStr
    - IsSyncingReplicationSlots
    - RecoveryInProgress
    - LSN_FORMAT_ARGS
    - elog
    - XLogRecPtrIsValid
    - Assert
    - errmsg
    - SpinLockRelease
    - ReplicationSlotSave
    - ereport
    - SlotIsPhysical
    - startup_cb_wrapper
    - MemoryContextSwitchTo
    - errdetail
    - SpinLockAcquire
    linkageType: ''
    returnType: LogicalDecodingContext
    signature: "LogicalDecodingContext *\nCreateDecodingContext(XLogRecPtr start_lsn,\n\t\t\t\t\t
      \ List *output_plugin_options,\n\t\t\t\t\t  bool fast_forward,\n\t\t\t\t\t  XLogReaderRoutine
      *xl_routine,\n\t\t\t\t\t  LogicalOutputPluginWriterPrepareWrite prepare_write,\n\t\t\t\t\t
      \ LogicalOutputPluginWriterWrite do_write,\n\t\t\t\t\t  LogicalOutputPluginWriterUpdateProgress
      update_progress)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/logical.c:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 620
    functionName: DecodingContextReady
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - SnapBuildCurrentState
    linkageType: ''
    returnType: bool
    signature: bool DecodingContextReady(LogicalDecodingContext *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/replication/logical/logical.c:631,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:633,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:634,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:643,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:645,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:647,1
    - Dst: LogicalDecodingProcessRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:649,1
    - Dst: DecodingContextReady
      Src: /src/postgres/src/backend/replication/logical/logical.c:652,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/logical.c:655,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:658,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:662,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 625
    functionDepth: 4
    functionLinenumber: 625
    functionLinenumberEnd: 663
    functionName: DecodingContextFindStartpoint
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 2
    functionsReached:
    - elog
    - SpinLockAcquire
    - LogicalDecodingProcessRecord
    - CHECK_FOR_INTERRUPTS
    - XLogBeginRead
    - SpinLockRelease
    - DecodingContextReady
    - XLogReadRecord
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void DecodingContextFindStartpoint(LogicalDecodingContext *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shutdown_cb_wrapper
      Src: /src/postgres/src/backend/replication/logical/logical.c:673,1
    - Dst: ReorderBufferFree
      Src: /src/postgres/src/backend/replication/logical/logical.c:675,1
    - Dst: FreeSnapshotBuilder
      Src: /src/postgres/src/backend/replication/logical/logical.c:676,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/backend/replication/logical/logical.c:677,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/logical.c:678,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 669
    functionDepth: 2
    functionLinenumber: 669
    functionLinenumberEnd: 679
    functionName: FreeDecodingContext
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 4
    functionsReached:
    - shutdown_cb_wrapper
    - ReorderBufferFree
    - MemoryContextDelete
    - XLogReaderFree
    - FreeSnapshotBuilder
    linkageType: ''
    returnType: void
    signature: void FreeDecodingContext(LogicalDecodingContext *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:688,1
    - Dst: struct LogicalDecodingContext*::prepare_write
      Src: /src/postgres/src/backend/replication/logical/logical.c:690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - last_write
    argTypes:
    - struct LogicalDecodingContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 684
    functionDepth: 1
    functionLinenumber: 684
    functionLinenumberEnd: 692
    functionName: OutputPluginPrepareWrite
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 16
    functionsReached:
    - elog
    - struct LogicalDecodingContext*::prepare_write
    linkageType: ''
    returnType: void
    signature: void OutputPluginPrepareWrite(struct LogicalDecodingContext *ctx, bool
      last_write)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:701,1
    - Dst: struct LogicalDecodingContext*::write
      Src: /src/postgres/src/backend/replication/logical/logical.c:703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - last_write
    argTypes:
    - struct LogicalDecodingContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 705
    functionName: OutputPluginWrite
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 16
    functionsReached:
    - elog
    - struct LogicalDecodingContext*::write
    linkageType: ''
    returnType: void
    signature: void OutputPluginWrite(struct LogicalDecodingContext *ctx, bool last_write)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct LogicalDecodingContext*::update_progress
      Src: /src/postgres/src/backend/replication/logical/logical.c:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - skipped_xact
    argTypes:
    - struct LogicalDecodingContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 719
    functionName: OutputPluginUpdateProgress
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 6
    functionsReached:
    - struct LogicalDecodingContext*::update_progress
    linkageType: ''
    returnType: void
    signature: "void OutputPluginUpdateProgress(struct LogicalDecodingContext *ctx,\n\t\t\t\t\t\t
      \  bool skipped_xact)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: load_external_function
      Src: /src/postgres/src/backend/replication/logical/logical.c:731,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:734,1
    - Dst: plugin_init
      Src: /src/postgres/src/backend/replication/logical/logical.c:737,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:740,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:742,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:744,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - callbacks
    - plugin
    argTypes:
    - OutputPluginCallbacks*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 725
    functionDepth: 1
    functionLinenumber: 725
    functionLinenumberEnd: 745
    functionName: LoadOutputPlugin
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - elog
    - load_external_function
    - plugin_init
    linkageType: ''
    returnType: void
    signature: void LoadOutputPlugin(OutputPluginCallbacks *callbacks, const char
      *plugin)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:753,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/logical.c:754,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:755,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:756,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:758,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/logical.c:760,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:761,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 747
    functionDepth: 1
    functionLinenumber: 747
    functionLinenumberEnd: 764
    functionName: output_plugin_error_callback
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errcontext
    - XLogRecPtrIsValid
    - NameStr
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void output_plugin_error_callback(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:772,1
    - Dst: LogicalDecodingContext*::callbacks::startup_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - opt
    - is_init
    argTypes:
    - LogicalDecodingContext*
    - OutputPluginOptions*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 792
    functionName: startup_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 2
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::startup_cb
    linkageType: ''
    returnType: void
    signature: void startup_cb_wrapper(LogicalDecodingContext *ctx, OutputPluginOptions
      *opt, bool is_init)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:800,1
    - Dst: LogicalDecodingContext*::callbacks::shutdown_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 820
    functionName: shutdown_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::shutdown_cb
    linkageType: ''
    returnType: void
    signature: void shutdown_cb_wrapper(LogicalDecodingContext *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:834,1
    - Dst: LogicalDecodingContext*::callbacks::begin_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - cache
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 827
    functionDepth: 1
    functionLinenumber: 827
    functionLinenumberEnd: 856
    functionName: begin_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::begin_cb
    linkageType: ''
    returnType: void
    signature: void begin_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:866,1
    - Dst: LogicalDecodingContext*::callbacks::commit_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - cache
    - txn
    - commit_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 858
    functionDepth: 1
    functionLinenumber: 858
    functionLinenumberEnd: 888
    functionName: commit_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::commit_cb
    linkageType: ''
    returnType: void
    signature: "void commit_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN *txn,\n\t\t\t\t
      \ XLogRecPtr commit_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:904,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:907,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:929,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:930,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:931,1
    - Dst: LogicalDecodingContext*::callbacks::begin_prepare_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:935,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - cache
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 939
    functionName: begin_prepare_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - LogicalDecodingContext*::callbacks::begin_prepare_cb
    - errcode
    - Assert
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: void begin_prepare_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:949,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:952,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:974,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:975,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:976,1
    - Dst: LogicalDecodingContext*::callbacks::prepare_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:980,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - prepare_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 941
    functionDepth: 1
    functionLinenumber: 941
    functionLinenumberEnd: 984
    functionName: prepare_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - errcode
    - Assert
    - ereport
    - errmsg
    - LogicalDecodingContext*::callbacks::prepare_cb
    linkageType: ''
    returnType: void
    signature: "void prepare_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN *txn,\n\t\t\t\t
      \  XLogRecPtr prepare_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:994,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:997,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1019,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1020,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1021,1
    - Dst: LogicalDecodingContext*::callbacks::commit_prepared_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1025,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - commit_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 1029
    functionName: commit_prepared_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - LogicalDecodingContext*::callbacks::commit_prepared_cb
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void commit_prepared_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t   XLogRecPtr commit_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1040,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1043,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1065,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1066,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1067,1
    - Dst: LogicalDecodingContext*::callbacks::rollback_prepared_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - cache
    - txn
    - prepare_end_lsn
    - prepare_time
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1031
    functionDepth: 1
    functionLinenumber: 1031
    functionLinenumberEnd: 1076
    functionName: rollback_prepared_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - LogicalDecodingContext*::callbacks::rollback_prepared_cb
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void rollback_prepared_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t XLogRecPtr prepare_end_lsn,\n\t\t\t\t\t\t\t TimestampTz
      prepare_time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1086,1
    - Dst: LogicalDecodingContext*::callbacks::change_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - cache
    - txn
    - relation
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1078
    functionDepth: 1
    functionLinenumber: 1078
    functionLinenumberEnd: 1115
    functionName: change_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::change_cb
    linkageType: ''
    returnType: void
    signature: "void change_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN *txn,\n\t\t\t\t
      \ Relation relation, ReorderBufferChange *change)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1125,1
    - Dst: LogicalDecodingContext*::callbacks::truncate_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 5
    argNames:
    - cache
    - txn
    - nrelations
    - relations
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - int
    - Relation[]
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1117
    functionDepth: 1
    functionLinenumber: 1117
    functionLinenumberEnd: 1157
    functionName: truncate_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::truncate_cb
    linkageType: ''
    returnType: void
    signature: "void truncate_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN *txn,\n\t\t\t\t\tint
      nrelations, Relation relations[], ReorderBufferChange *change)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1167,1
    - Dst: LogicalDecodingContext*::callbacks::filter_prepare_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - xid
    - gid
    argTypes:
    - LogicalDecodingContext*
    - TransactionId
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1159
    functionDepth: 1
    functionLinenumber: 1159
    functionLinenumberEnd: 1189
    functionName: filter_prepare_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::filter_prepare_cb
    linkageType: ''
    returnType: bool
    signature: "bool filter_prepare_cb_wrapper(LogicalDecodingContext *ctx, TransactionId
      xid,\n\t\t\t\t\t\t  const char *gid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1198,1
    - Dst: LogicalDecodingContext*::callbacks::filter_by_origin_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - origin_id
    argTypes:
    - LogicalDecodingContext*
    - ReplOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1191
    functionDepth: 1
    functionLinenumber: 1191
    functionLinenumberEnd: 1220
    functionName: filter_by_origin_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::filter_by_origin_cb
    linkageType: ''
    returnType: bool
    signature: bool filter_by_origin_cb_wrapper(LogicalDecodingContext *ctx, ReplOriginId
      origin_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1231,1
    - Dst: LogicalDecodingContext*::callbacks::message_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 7
    argNames:
    - cache
    - txn
    - message_lsn
    - transactional
    - prefix
    - message_size
    - message
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    - bool
    - char*
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1222
    functionDepth: 1
    functionLinenumber: 1222
    functionLinenumberEnd: 1257
    functionName: message_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::message_cb
    linkageType: ''
    returnType: void
    signature: "void message_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN *txn,\n\t\t\t\t
      \  XLogRecPtr message_lsn, bool transactional,\n\t\t\t\t   const char *prefix,
      Size message_size, const char *message)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1297,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1298,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1299,1
    - Dst: LogicalDecodingContext*::callbacks::stream_start_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - first_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1259
    functionDepth: 1
    functionLinenumber: 1259
    functionLinenumberEnd: 1306
    functionName: stream_start_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - LogicalDecodingContext*::callbacks::stream_start_cb
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void stream_start_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\tXLogRecPtr first_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1316,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1319,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1346,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1347,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1348,1
    - Dst: LogicalDecodingContext*::callbacks::stream_stop_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - last_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1308
    functionDepth: 1
    functionLinenumber: 1308
    functionLinenumberEnd: 1355
    functionName: stream_stop_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - errmsg
    - LogicalDecodingContext*::callbacks::stream_stop_cb
    linkageType: ''
    returnType: void
    signature: "void stream_stop_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t   XLogRecPtr last_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1368,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1387,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1389,1
    - Dst: LogicalDecodingContext*::callbacks::stream_abort_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - abort_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1357
    functionDepth: 1
    functionLinenumber: 1357
    functionLinenumberEnd: 1396
    functionName: stream_abort_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - LogicalDecodingContext*::callbacks::stream_abort_cb
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void stream_abort_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\tXLogRecPtr abort_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1406,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1413,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1432,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1433,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1434,1
    - Dst: LogicalDecodingContext*::callbacks::stream_prepare_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - cache
    - txn
    - prepare_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1398
    functionDepth: 1
    functionLinenumber: 1398
    functionLinenumberEnd: 1441
    functionName: stream_prepare_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - LogicalDecodingContext*::callbacks::stream_prepare_cb
    - errcode
    - Assert
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void stream_prepare_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t  XLogRecPtr prepare_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1454,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1473,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1475,1
    - Dst: LogicalDecodingContext*::callbacks::stream_commit_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - commit_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1443
    functionDepth: 1
    functionLinenumber: 1443
    functionLinenumberEnd: 1482
    functionName: stream_commit_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - LogicalDecodingContext*::callbacks::stream_commit_cb
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void stream_commit_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t XLogRecPtr commit_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1492,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1495,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1522,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1523,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1524,1
    - Dst: LogicalDecodingContext*::callbacks::stream_change_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - cache
    - txn
    - relation
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1484
    functionDepth: 1
    functionLinenumber: 1484
    functionLinenumberEnd: 1531
    functionName: stream_change_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - LogicalDecodingContext*::callbacks::stream_change_cb
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void stream_change_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t Relation relation, ReorderBufferChange *change)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1545,1
    - Dst: LogicalDecodingContext*::callbacks::stream_message_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 7
    argNames:
    - cache
    - txn
    - message_lsn
    - transactional
    - prefix
    - message_size
    - message
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    - bool
    - char*
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1533
    functionDepth: 1
    functionLinenumber: 1533
    functionLinenumberEnd: 1572
    functionName: stream_message_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::stream_message_cb
    linkageType: ''
    returnType: void
    signature: "void stream_message_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t  XLogRecPtr message_lsn, bool transactional,\n\t\t\t\t\t\t
      \ const char *prefix, Size message_size, const char *message)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1583,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1586,1
    - Dst: LogicalDecodingContext*::callbacks::stream_truncate_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 5
    argNames:
    - cache
    - txn
    - nrelations
    - relations
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - int
    - Relation[]
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1574
    functionDepth: 1
    functionLinenumber: 1574
    functionLinenumberEnd: 1619
    functionName: stream_truncate_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - Assert
    - LogicalDecodingContext*::callbacks::stream_truncate_cb
    linkageType: ''
    returnType: void
    signature: "void stream_truncate_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t   int nrelations, Relation relations[],\n\t\t\t\t\t\t   ReorderBufferChange
      *change)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1629,1
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/logical/logical.c:1654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - cache
    - txn
    - lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1658
      start: 1621
    functionDepth: 1
    functionLinenumber: 1621
    functionLinenumberEnd: 1658
    functionName: update_progress_txn_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - Assert
    - OutputPluginUpdateProgress
    linkageType: ''
    returnType: void
    signature: "void update_progress_txn_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t   XLogRecPtr lsn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1677,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:1679,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/logical/logical.c:1685,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1707,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1718,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:1721,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1722,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/logical/logical.c:1726,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - current_lsn
    - xmin
    argTypes:
    - XLogRecPtr
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1668
    functionDepth: 2
    functionLinenumber: 1668
    functionLinenumberEnd: 1727
    functionName: LogicalIncreaseXminForSlot
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - Assert
    - LogicalConfirmReceivedLocation
    - TransactionIdPrecedesOrEquals
    - SpinLockRelease
    - SpinLockAcquire
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void LogicalIncreaseXminForSlot(XLogRecPtr current_lsn, TransactionId
      xmin)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1744,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1745,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1745,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1746,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1746,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:1748,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1753,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1764,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1775,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1779,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:1781,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1782,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1783,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1794,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:1796,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1797,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1798,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1799,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1800,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1801,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/logical/logical.c:1806,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 2
    argNames:
    - current_lsn
    - restart_lsn
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1807
      start: 1736
    functionDepth: 2
    functionLinenumber: 1736
    functionLinenumberEnd: 1807
    functionName: LogicalIncreaseRestartDecodingForSlot
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - Assert
    - LogicalConfirmReceivedLocation
    - SpinLockRelease
    - SpinLockAcquire
    - LSN_FORMAT_ARGS
    linkageType: ''
    returnType: void
    signature: void LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn,
      XLogRecPtr restart_lsn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1815,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1815,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1818,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1819,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:1825,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1845,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1857,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1870,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1870,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1878,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1887,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1888,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/replication/logical/logical.c:1892,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logical.c:1895,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/logical.c:1896,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:1897,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:1908,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1910,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/logical.c:1912,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/logical/logical.c:1920,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:1924,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1933,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 1
    argNames:
    - lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1812
    functionDepth: 4
    functionLinenumber: 1812
    functionLinenumberEnd: 1935
    functionName: LogicalConfirmReceivedLocation
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 4
    functionsReached:
    - elog
    - INJECTION_POINT
    - XLogRecPtrIsValid
    - ReplicationSlotMarkDirty
    - Assert
    - XLByteToSeg
    - ReplicationSlotsComputeRequiredLSN
    - SpinLockRelease
    - ReplicationSlotSave
    - SpinLockAcquire
    - ReplicationSlotsComputeRequiredXmin
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: void LogicalConfirmReceivedLocation(XLogRecPtr lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1940
    functionDepth: 0
    functionLinenumber: 1940
    functionLinenumberEnd: 1945
    functionName: ResetLogicalStreamingState
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ResetLogicalStreamingState(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:1961,1
    - Dst: pgstat_report_replslot
      Src: /src/postgres/src/backend/replication/logical/logical.c:1983,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1950
    functionDepth: 1
    functionLinenumber: 1950
    functionLinenumberEnd: 1994
    functionName: UpdateDecodingStats
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 6
    functionsReached:
    - elog
    - pgstat_report_replslot
    linkageType: ''
    returnType: void
    signature: void UpdateDecodingStats(LogicalDecodingContext *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:2011,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:2012,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/logical.c:2014,1
    - Dst: CreateDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:2023,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/logical/logical.c:2026,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/replication/logical/logical.c:2035,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2038,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:2045,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:2048,1
    - Dst: LogicalDecodingProcessRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:2051,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/logical.c:2068,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:2072,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2073,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/logical.c:2075,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2078,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/logical.c:2080,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/logical.c:2082,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - end_of_wal
    - scan_cutoff_lsn
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 2005
    functionDepth: 6
    functionLinenumber: 2005
    functionLinenumberEnd: 2085
    functionName: LogicalReplicationSlotCheckPendingWal
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_CATCH
    - PG_TRY
    - LogicalDecodingProcessRecord
    - Assert
    - CreateDecodingContext
    - FreeDecodingContext
    - CHECK_FOR_INTERRUPTS
    - PG_RE_THROW
    - XLogBeginRead
    - XL_ROUTINE
    - XLogReadRecord
    - PG_END_TRY
    - InvalidateSystemCaches
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr LogicalReplicationSlotCheckPendingWal(XLogRecPtr end_of_wal,\n\t\t\t\t\t\t\t\t\t
      \ XLogRecPtr scan_cutoff_lsn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:2109,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:2109,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/logical.c:2114,1
    - Dst: CreateDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:2121,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/logical/logical.c:2124,1
    - Dst: WaitForStandbyConfirmation
      Src: /src/postgres/src/backend/replication/logical/logical.c:2133,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/replication/logical/logical.c:2139,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2142,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:2154,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:2156,1
    - Dst: LogicalDecodingProcessRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:2166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:2174,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/logical.c:2177,1
    - Dst: DecodingContextReady
      Src: /src/postgres/src/backend/replication/logical/logical.c:2180,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:2183,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/logical/logical.c:2185,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logical.c:2200,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:2206,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2208,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/logical.c:2210,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2213,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/logical.c:2215,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/logical.c:2217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - moveto
    - found_consistent_snapshot
    argTypes:
    - XLogRecPtr
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2220
      start: 2101
    functionDepth: 6
    functionLinenumber: 2101
    functionLinenumberEnd: 2220
    functionName: LogicalSlotAdvanceAndCheckSnapState
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - ReplicationSlotMarkDirty
    - CreateDecodingContext
    - DecodingContextReady
    - elog
    - XLogRecPtrIsValid
    - Assert
    - FreeDecodingContext
    - PG_RE_THROW
    - PG_END_TRY
    - InvalidateSystemCaches
    - WaitForStandbyConfirmation
    - LogicalDecodingProcessRecord
    - CHECK_FOR_INTERRUPTS
    - XLogBeginRead
    - XL_ROUTINE
    - XLogReadRecord
    - PG_CATCH
    - LogicalConfirmReceivedLocation
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr LogicalSlotAdvanceAndCheckSnapState(XLogRecPtr moveto,\n\t\t\t\t\t\t\t\t\tbool
      *found_consistent_snapshot)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:193,1
    - Dst: pgstat_report_replslotsync
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:202,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:207,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - skip_reason
    argTypes:
    - SlotSyncSkipReason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 211
    functionName: update_slotsync_skip_stats
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - Assert
    - SpinLockAcquire
    - pgstat_report_replslotsync
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void update_slotsync_skip_stats(SlotSyncSkipReason skip_reason)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: GetStandbyFlushRecPtr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:229,1
    - Dst: update_slotsync_skip_stats
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:245,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:247,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:249,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:259,1
    - Dst: update_slotsync_skip_stats
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:287,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:288,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:290,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:291,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:293,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:312,1
    - Dst: SnapBuildSnapshotExists
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:323,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:330,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:334,1
    - Dst: LogicalSlotAdvanceAndCheckSnapState
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:345,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:350,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:351,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:353,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:354,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:365,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:366,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:368,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:369,1
    - Dst: update_slotsync_skip_stats
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:386,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:391,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:391,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:397,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:399,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:405,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:413,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:423,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:424,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:435,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:437,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:439,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:440,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 2
    argNames:
    - remote_slot
    - remote_dbid
    argTypes:
    - RemoteSlot*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 220
    functionDepth: 7
    functionLinenumber: 220
    functionLinenumberEnd: 444
    functionName: update_local_synced_slot
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotMarkDirty
    - strcmp
    - errcode
    - SnapBuildSnapshotExists
    - GetStandbyFlushRecPtr
    - ReplicationSlotsComputeRequiredLSN
    - NameStr
    - update_slotsync_skip_stats
    - LSN_FORMAT_ARGS
    - Assert
    - LogicalSlotAdvanceAndCheckSnapState
    - errmsg
    - SpinLockRelease
    - ReplicationSlotSave
    - ReplicationSlotsComputeRequiredXmin
    - errdetail_internal
    - errmsg_internal
    - ereport
    - namestrcpy
    - TransactionIdPrecedes
    - TransactionIdFollows
    - errdetail
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool update_local_synced_slot(RemoteSlot *remote_slot, Oid remote_dbid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:464,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:464,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:465,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:469,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 450
    functionDepth: 6
    functionLinenumber: 450
    functionLinenumberEnd: 472
    functionName: get_local_synced_slots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - Assert
    - lappend
    - SlotIsLogical
    - LWLockRelease
    linkageType: ''
    returnType: List
    signature: 'List *

      get_local_synced_slots(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:489,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:489,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:497,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:501,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - local_slot
    - remote_slots
    argTypes:
    - ReplicationSlot*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 508
    functionName: local_sync_slot_required
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    - NameStr
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool local_sync_slot_required(ReplicationSlot *local_slot, List *remote_slots)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:489,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:489,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:497,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:501,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 505
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 11
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    - NameStr
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(RemoteSlot, remote_slot, remote_slots)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_local_synced_slots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:537,1
    - Dst: local_sync_slot_required
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:542,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:552,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:573,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:575,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:587,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:587,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:588,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:590,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:591,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:592,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:596,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - remote_slot_list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 534
    functionDepth: 7
    functionLinenumber: 534
    functionLinenumberEnd: 600
    functionName: drop_local_obsolete_slots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotAcquire
    - local_sync_slot_required
    - UnlockSharedObject
    - ereport
    - LockSharedObject
    - SpinLockRelease
    - NameStr
    - errmsg
    - ReplicationSlotDropAcquired
    - SpinLockAcquire
    - get_local_synced_slots
    linkageType: ''
    returnType: void
    signature: void drop_local_obsolete_slots(List *remote_slot_list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: local_sync_slot_required
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:542,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:552,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:573,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:575,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:587,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:587,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:588,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:590,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:591,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:592,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:596,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 539
    functionDepth: 3
    functionLinenumber: 539
    functionLinenumberEnd: 599
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 11
    functionsReached:
    - ReplicationSlotAcquire
    - local_sync_slot_required
    - UnlockSharedObject
    - ereport
    - LockSharedObject
    - SpinLockRelease
    - NameStr
    - errmsg
    - SpinLockAcquire
    - ReplicationSlotDropAcquired
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(ReplicationSlot, local_slot, local_slots)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:617,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:618,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:618,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:636,1
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:648,1
    - Dst: XLogGetReplicationSlotMinimumLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:649,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:651,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:659,1
    - Dst: Max
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:660,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:661,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:663,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:665,1
    - Dst: XLogGetLastRemovedSegno
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:666,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:667,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:668,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:670,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - restart_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 609
    functionDepth: 4
    functionLinenumber: 609
    functionLinenumberEnd: 671
    functionName: reserve_wal_for_local_slot
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecPtrIsValid
    - GetRedoRecPtr
    - LWLockAcquire
    - Assert
    - ReplicationSlotsComputeRequiredLSN
    - Max
    - XLogGetReplicationSlotMinimumLSN
    - SpinLockRelease
    - XLogGetLastRemovedSegno
    - NameStr
    - LWLockRelease
    - SpinLockAcquire
    - XLByteToSeg
    linkageType: ''
    returnType: void
    signature: void reserve_wal_for_local_slot(XLogRecPtr restart_lsn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: update_local_synced_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:691,1
    - Dst: ReplicationSlotPersist
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:720,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:722,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - remote_slot
    - remote_dbid
    - slot_persistence_pending
    argTypes:
    - RemoteSlot*
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 684
    functionDepth: 8
    functionLinenumber: 684
    functionLinenumberEnd: 727
    functionName: update_and_persist_local_synced_slot
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - ereport
    - update_local_synced_slot
    - ReplicationSlotPersist
    - errmsg
    linkageType: ''
    returnType: bool
    signature: "bool update_and_persist_local_synced_slot(RemoteSlot *remote_slot,
      Oid remote_dbid,\n\t\t\t\t\t\t\t\t\t bool *slot_persistence_pending)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:753,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:757,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:759,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:763,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:765,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:785,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:787,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:796,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:798,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:801,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:802,1
    - Dst: update_slotsync_skip_stats
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:810,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:812,1
    - Dst: update_and_persist_local_synced_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:819,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:835,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:836,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:838,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:839,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:840,1
    - Dst: update_local_synced_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:842,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:862,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:872,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:874,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:877,1
    - Dst: reserve_wal_for_local_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:879,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:881,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:882,1
    - Dst: GetOldestSafeDecodingTransactionId
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:883,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:884,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:887,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:888,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:889,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:890,1
    - Dst: update_and_persist_local_synced_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:892,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:898,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 55
    argCount: 3
    argNames:
    - remote_slot
    - remote_dbid
    - slot_persistence_pending
    argTypes:
    - RemoteSlot*
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 745
    functionDepth: 9
    functionLinenumber: 745
    functionLinenumberEnd: 901
    functionName: synchronize_one_slot
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotMarkDirty
    - LWLockAcquire
    - errcode
    - update_and_persist_local_synced_slot
    - update_slotsync_skip_stats
    - LSN_FORMAT_ARGS
    - ReplicationSlotAcquire
    - ReplicationSlotCreate
    - Assert
    - SearchNamedReplicationSlot
    - SpinLockRelease
    - errmsg
    - ReplicationSlotSave
    - ReplicationSlotsComputeRequiredXmin
    - errdetail_internal
    - errmsg_internal
    - ereport
    - namestrcpy
    - reserve_wal_for_local_slot
    - ReplicationSlotRelease
    - GetOldestSafeDecodingTransactionId
    - update_local_synced_slot
    - LWLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: "bool synchronize_one_slot(RemoteSlot *remote_slot, Oid remote_dbid,\n\t\t\t\t\t
      bool *slot_persistence_pending)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:924,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:925,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:940,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:945,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:947,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:947,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:950,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:954,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:955,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:957,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:958,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:961,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:962,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:965,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:969,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:971,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:973,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:975,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:981,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:983,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:985,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:986,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:988,1
    - Dst: DatumGetTransactionId
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:990,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:992,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:994,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:996,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:997,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:999,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:999,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1001,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1003,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1003,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1005,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1007,1
    - Dst: GetSlotInvalidationCause
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1009,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1009,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1012,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1025,1
    - Dst: XLogRecPtrIsValid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1026,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1027,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1029,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1032,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1034,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1037,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1038,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 47
    argCount: 2
    argNames:
    - wrconn
    - slot_names
    argTypes:
    - WalReceiverConn*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 912
    functionDepth: 6
    functionLinenumber: 912
    functionLinenumberEnd: 1041
    functionName: fetch_remote_slots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - GetSlotInvalidationCause
    - DatumGetBool
    - XLogRecPtrIsValid
    - slot_getattr
    - pfree
    - Assert
    - appendStringInfoString
    - MakeSingleTupleTableSlot
    - quote_literal_cstr
    - errmsg
    - ExecClearTuple
    - tuplestore_gettupleslot
    - TextDatumGetCString
    - DatumGetLSN
    - appendStringInfoChar
    - walrcv_exec
    - palloc0_object
    - ExecDropSingleTupleTableSlot
    - initStringInfo
    - ereport
    - DatumGetTransactionId
    - lappend
    - walrcv_clear_result
    - TransactionIdIsValid
    linkageType: ''
    returnType: List
    signature: 'List *

      fetch_remote_slots(WalReceiverConn *wrconn, List *slot_names)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:945,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:947,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:947,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 949
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 11
    functionsReached:
    - appendStringInfoString
    - quote_literal_cstr
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, slot_name, slot_names)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: drop_local_obsolete_slots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1062,1
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1067,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1074,1
    - Dst: synchronize_one_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1076,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - wrconn
    - remote_slot_list
    - slot_persistence_pending
    argTypes:
    - WalReceiverConn*
    - List*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1055
    functionDepth: 10
    functionLinenumber: 1055
    functionLinenumberEnd: 1083
    functionName: synchronize_slots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - get_database_oid
    - synchronize_one_slot
    - drop_local_obsolete_slots
    - LockSharedObject
    - UnlockSharedObject
    linkageType: ''
    returnType: bool
    signature: "bool synchronize_slots(WalReceiverConn *wrconn, List *remote_slot_list,\n\t\t\t\t
      \ bool *slot_persistence_pending)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1067,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1074,1
    - Dst: synchronize_one_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1076,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1065
    functionDepth: 10
    functionLinenumber: 1065
    functionLinenumberEnd: 1080
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 11
    functionsReached:
    - UnlockSharedObject
    - synchronize_one_slot
    - get_database_oid
    - LockSharedObject
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(RemoteSlot, remote_slot, remote_slot_list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1104,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1105,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1109,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1112,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1114,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1118,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1123,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1125,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1127,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1128,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1129,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1132,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1133,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1143,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1144,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1145,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1147,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1147,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1148,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1151,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1152,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1154,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1157,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1158,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1161,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - wrconn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1162
    functionName: validate_remote_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - errcode
    - CommitTransactionCommand
    - errhint
    - DatumGetBool
    - elog
    - slot_getattr
    - pfree
    - Assert
    - MakeSingleTupleTableSlot
    - StartTransactionCommand
    - quote_literal_cstr
    - errmsg
    - tuplestore_gettupleslot
    - walrcv_exec
    - ExecDropSingleTupleTableSlot
    - IsTransactionState
    - initStringInfo
    - ereport
    - appendStringInfo
    - walrcv_clear_result
    linkageType: ''
    returnType: void
    signature: void validate_remote_info(WalReceiverConn *wrconn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: walrcv_get_dbname_from_conninfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1178,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1180,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1181,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1190
    functionName: CheckAndGetDbnameFromConninfo
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 1
    functionsReached:
    - walrcv_get_dbname_from_conninfo
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: char
    signature: 'char *

      CheckAndGetDbnameFromConninfo(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsLogicalDecodingEnabled
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1202,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1204,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1205,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1206,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1207,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1220,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1223,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1234,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1235,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1248,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1249,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1251,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1196
    functionDepth: 2
    functionLinenumber: 1196
    functionLinenumberEnd: 1257
    functionName: ValidateSlotSyncParams
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 1
    functionsReached:
    - errcode
    - ereport
    - IsLogicalDecodingEnabled
    - errhint
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool ValidateSlotSyncParams(int elevel)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1268,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1269,1
    - Dst: AmLogicalSlotSyncWorkerProcess
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1278,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1281,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1283,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1284,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1285,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1286,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1294,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1297,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1311,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1312,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1321,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1334,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1335,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1336,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1337,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1265
    functionDepth: 1
    functionLinenumber: 1265
    functionLinenumberEnd: 1340
    functionName: slotsync_reread_config
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - Assert
    - pfree
    - pstrdup
    - AmLogicalSlotSyncWorkerProcess
    - ereport
    - errmsg
    - proc_exit
    - ProcessConfigFile
    linkageType: ''
    returnType: void
    signature: void slotsync_reread_config(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1349
    functionDepth: 0
    functionLinenumber: 1349
    functionLinenumberEnd: 1355
    functionName: HandleSlotSyncMessageInterrupt
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandleSlotSyncMessageInterrupt(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AmLogicalSlotSyncWorkerProcess
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1370,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1373,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1374,1
    - Dst: IsSyncingReplicationSlots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1382,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1387,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1389
      start: 1365
    functionDepth: 1
    functionLinenumber: 1365
    functionLinenumberEnd: 1389
    functionName: ProcessSlotSyncMessage
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 1
    functionsReached:
    - errcode
    - ereport
    - AmLogicalSlotSyncWorkerProcess
    - errmsg
    - IsSyncingReplicationSlots
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void ProcessSlotSyncMessage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1399,1
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1396
    functionDepth: 1
    functionLinenumber: 1396
    functionLinenumberEnd: 1402
    functionName: slotsync_worker_disconnect
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - walrcv_disconnect
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void slotsync_worker_disconnect(int code, Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1424,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1427,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1429,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1444,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1409
    functionDepth: 3
    functionLinenumber: 1409
    functionLinenumberEnd: 1445
    functionName: slotsync_worker_onexit
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - ReplicationSlotRelease
    - SpinLockRelease
    - ReplicationSlotCleanup
    linkageType: ''
    returnType: void
    signature: void slotsync_worker_onexit(int code, Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1466,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1477,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1483,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - some_slot_updated
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1455
    functionDepth: 1
    functionLinenumber: 1455
    functionLinenumberEnd: 1484
    functionName: wait_for_slot_activity
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - Min
    - ResetLatch
    - WaitLatch
    linkageType: ''
    returnType: void
    signature: void wait_for_slot_activity(bool some_slot_updated)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1493,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1502,1
    - Dst: AmLogicalSlotSyncWorkerProcess
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1504,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1506,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1507,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1517,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1518,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1519,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1526,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1527,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1528,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1532,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1542,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - sync_process_pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1490
    functionDepth: 2
    functionLinenumber: 1490
    functionLinenumberEnd: 1545
    functionName: check_and_set_sync_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - AmLogicalSlotSyncWorkerProcess
    - SpinLockRelease
    - errmsg
    - SpinLockAcquire
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void check_and_set_sync_info(pid_t sync_process_pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1553,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1550
    functionDepth: 2
    functionLinenumber: 1550
    functionLinenumberEnd: 1559
    functionName: reset_syncing_flag
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void reset_syncing_flag(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1579,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1584,1
    - Dst: init_ps_display
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1588,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1590,1
    - Dst: GetProcessingMode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1590,1
    - Dst: InitProcess
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1596,1
    - Dst: BaseInit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1601,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1603,1
    - Dst: sigsetjmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1614,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1620,1
    - Dst: EmitErrorReport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1623,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1630,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1637,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1638,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1639,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1640,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1641,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1642,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1643,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1644,1
    - Dst: check_and_set_sync_info
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1646,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1648,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1648,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1651,1
    - Dst: InitializeTimeouts
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1657,1
    - Dst: load_file
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1660,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1665,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1675,1
    - Dst: CheckAndGetDbnameFromConninfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1677,1
    - Dst: InitPostgres
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1690,1
    - Dst: SetProcessingMode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1692,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1694,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1696,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1698,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1704,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1708,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1709,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1710,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1713,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1722,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1722,1
    - Dst: validate_remote_info
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1729,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1738,1
    - Dst: slotsync_reread_config
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1741,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1747,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1749,1
    - Dst: fetch_remote_slots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1753,1
    - Dst: synchronize_slots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1754,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1755,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1758,1
    - Dst: wait_for_slot_activity
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1768,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 62
    argCount: 2
    argNames:
    - startup_data
    - startup_data_len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1570
    functionDepth: 11
    functionLinenumber: 1570
    functionLinenumberEnd: 1769
    functionName: ReplSlotSyncWorkerMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - wait_for_slot_activity
    - errcode
    - synchronize_slots
    - HOLD_INTERRUPTS
    - CommitTransactionCommand
    - sigprocmask
    - sigsetjmp
    - BaseInit
    - validate_remote_info
    - walrcv_connect
    - Assert
    - InitPostgres
    - appendStringInfoString
    - pfree
    - SetProcessingMode
    - check_and_set_sync_info
    - StartTransactionCommand
    - load_file
    - errmsg
    - PointerGetDatum
    - fetch_remote_slots
    - IsTransactionState
    - before_shmem_exit
    - ereport
    - initStringInfo
    - CHECK_FOR_INTERRUPTS
    - slotsync_reread_config
    - InitializeTimeouts
    - init_ps_display
    - list_free_deep
    - InitProcess
    - proc_exit
    - SetConfigOption
    - CheckAndGetDbnameFromConninfo
    - pqsignal
    - appendStringInfo
    - MemoryContextDelete
    - EmitErrorReport
    - GetProcessingMode
    linkageType: ''
    returnType: void
    signature: void ReplSlotSyncWorkerMain(const void *startup_data, size_t startup_data_len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1793,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1804,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1804,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1807,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1811,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1813,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1817,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1818
      start: 1777
    functionDepth: 2
    functionLinenumber: 1777
    functionLinenumberEnd: 1818
    functionName: update_synced_slots_inactive_since
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - ReplicationSlotSetInactiveSince
    - LWLockAcquire
    - Assert
    - SlotIsLogical
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void update_synced_slots_inactive_since(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1834,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1844,1
    - Dst: update_synced_slots_inactive_since
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1845,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1851,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1857,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1866,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1872,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1873,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1876,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1882,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1885,1
    - Dst: update_synced_slots_inactive_since
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1887,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1888
      start: 1829
    functionDepth: 3
    functionLinenumber: 1829
    functionLinenumberEnd: 1888
    functionName: ShutDownSlotSync
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 1
    functionsReached:
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - WaitLatch
    - SendProcSignal
    - SpinLockRelease
    - SpinLockAcquire
    - update_synced_slots_inactive_since
    linkageType: ''
    returnType: void
    signature: void ShutDownSlotSync(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1905,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1902
    functionDepth: 0
    functionLinenumber: 1902
    functionLinenumberEnd: 1920
    functionName: SlotSyncWorkerCanRestart
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - time
    linkageType: ''
    returnType: bool
    signature: bool SlotSyncWorkerCanRestart(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1927
    functionDepth: 0
    functionLinenumber: 1927
    functionLinenumberEnd: 1931
    functionName: IsSyncingReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsSyncingReplicationSlots(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1951,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1953,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1954
      start: 1948
    functionDepth: 2
    functionLinenumber: 1948
    functionLinenumberEnd: 1954
    functionName: SlotSyncShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - memset
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void SlotSyncShmemInit(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1962,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1976,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1979,1
    - Dst: reset_syncing_flag
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1987,1
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1989,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1959
    functionDepth: 3
    functionLinenumber: 1959
    functionLinenumberEnd: 1990
    functionName: slotsync_failure_callback
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - walrcv_disconnect
    - reset_syncing_flag
    - ReplicationSlotRelease
    - ReplicationSlotCleanup
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void slotsync_failure_callback(int code, Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2004,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - remote_slots
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1995
    functionDepth: 6
    functionLinenumber: 1995
    functionLinenumberEnd: 2009
    functionName: extract_slot_names
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - lappend
    linkageType: ''
    returnType: List
    signature: 'List *

      extract_slot_names(List *remote_slots)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2004,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2006
      start: 2000
    functionDepth: 6
    functionLinenumber: 2000
    functionLinenumberEnd: 2006
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 11
    functionsReached:
    - pstrdup
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(RemoteSlot, remote_slot, remote_slots)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2024,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2024,1
    - Dst: check_and_set_sync_info
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2030,1
    - Dst: validate_remote_info
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2032,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2039,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2051,1
    - Dst: slotsync_reread_config
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2054,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2057,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2057,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2059,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2060,1
    - Dst: fetch_remote_slots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2072,1
    - Dst: synchronize_slots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2075,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2082,1
    - Dst: extract_slot_names
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2089,1
    - Dst: wait_for_slot_activity
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2096,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2099,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2102,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2105,1
    - Dst: reset_syncing_flag
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2108,1
    - Dst: PG_END_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2110,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:2110,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - wrconn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2021
    functionDepth: 11
    functionLinenumber: 2021
    functionLinenumberEnd: 2111
    functionName: SyncReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 1
    functionsReached:
    - wait_for_slot_activity
    - synchronize_slots
    - reset_syncing_flag
    - PG_ENSURE_ERROR_CLEANUP
    - extract_slot_names
    - ReplicationSlotCleanup
    - validate_remote_info
    - MemoryContextReset
    - Assert
    - check_and_set_sync_info
    - PointerGetDatum
    - fetch_remote_slots
    - IsTransactionState
    - list_free_deep
    - CHECK_FOR_INTERRUPTS
    - slotsync_reread_config
    - AllocSetContextCreate
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - PG_END_ENSURE_ERROR_CLEANUP
    linkageType: ''
    returnType: void
    signature: void SyncReplicationSlots(WalReceiverConn *wrconn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - cb
    argTypes:
    - OutputPluginCallbacks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 46
    functionName: _PG_output_plugin_init
    functionSourceFile: /src/postgres/src/backend/replication/pgrepack/pgrepack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _PG_output_plugin_init(OutputPluginCallbacks *cb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AmRepackWorker
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:56,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:57,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:58,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:59,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:61,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:65,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:66,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:67,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:78,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:79,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - opt
    - is_init
    argTypes:
    - LogicalDecodingContext*
    - OutputPluginOptions*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 82
    functionName: repack_startup
    functionSourceFile: /src/postgres/src/backend/replication/pgrepack/pgrepack.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - errcode
    - Assert
    - AmRepackWorker
    - ereport
    - AllocSetContextCreate
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: "void repack_startup(LogicalDecodingContext *ctx, OutputPluginOptions
      *opt,\n\t\t\t   bool is_init)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: repack_shutdown
    functionSourceFile: /src/postgres/src/backend/replication/pgrepack/pgrepack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void repack_shutdown(LogicalDecodingContext *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: repack_begin_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgrepack/pgrepack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void repack_begin_txn(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ctx
    - txn
    - commit_lsn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: repack_commit_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgrepack/pgrepack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void repack_commit_txn(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn,\n\t\t\t\t  XLogRecPtr commit_lsn)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:121,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:121,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:137,1
    - Dst: repack_store_change
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:139,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:151,1
    - Dst: repack_store_change
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:154,1
    - Dst: repack_store_change
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:156,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:166,1
    - Dst: repack_store_change
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:179,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - ctx
    - txn
    - relation
    - change
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 182
    functionName: repack_process_change
    functionSourceFile: /src/postgres/src/backend/replication/pgrepack/pgrepack.c
    functionUses: 0
    functionsReached:
    - Assert
    - elog
    - repack_store_change
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void repack_process_change(LogicalDecodingContext *ctx, ReorderBufferTXN
      *txn,\n\t\t\t\t\t  Relation relation, ReorderBufferChange *change)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:207,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:210,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:216,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:218,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:226,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:229,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:230,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:235,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:244,1
    - Dst: slot_attisnull
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:248,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:251,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:257,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:258,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:265,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:277,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:277,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:281,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:289,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:290,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:293,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:294,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:299,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:300,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:300,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:302,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:306,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:307,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 4
    argNames:
    - ctx
    - relation
    - kind
    - tuple
    argTypes:
    - LogicalDecodingContext*
    - Relation
    - ConcurrentChangeKind
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 193
    functionDepth: 6
    functionLinenumber: 193
    functionLinenumberEnd: 308
    functionName: repack_store_change
    functionSourceFile: /src/postgres/src/backend/replication/pgrepack/pgrepack.c
    functionUses: 1
    functionsReached:
    - detoast_external_attr
    - VARATT_IS_EXTERNAL_ONDISK
    - MemoryContextReset
    - Assert
    - RelationGetDescr
    - pfree
    - VARSIZE_ANY
    - slot_attisnull
    - MakeSingleTupleTableSlot
    - VARATT_IS_EXTERNAL
    - ExecClearTuple
    - list_length
    - slot_getsomeattrs
    - ExecStoreHeapTuple
    - HeapTupleHasExternal
    - lappend
    - TupleDescCompactAttr
    - VARATT_IS_EXTERNAL_INDIRECT
    - MemoryContextSwitchTo
    - BufFileWrite
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void repack_store_change(LogicalDecodingContext *ctx, Relation relation,\n\t\t\t\t\tConcurrentChangeKind
      kind, HeapTuple tuple)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:299,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:300,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:300,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/pgrepack/pgrepack.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 297
    functionDepth: 5
    functionLinenumber: 297
    functionLinenumberEnd: 303
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/pgrepack/pgrepack.c
    functionUses: 11
    functionsReached:
    - detoast_external_attr
    - pfree
    - VARSIZE_ANY
    - BufFileWrite
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(varlena, attr_val, attrs_ext)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionCombine
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:80,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:93,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:99,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:114,1
    - Dst: index_getnext_tid
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:124,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:128,1
    - Dst: VM_ALL_VISIBLE
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:164,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:165,1
    - Dst: InstrCountTuples2
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:171,1
    - Dst: index_fetch_heap
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:172,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:175,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:209,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:211,1
    - Dst: StoreIndexTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:214,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:216,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:224,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:243,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:250,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:251,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:261,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 61
    functionDepth: 4
    functionLinenumber: 61
    functionLinenumberEnd: 262
    functionName: IndexOnlyNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - errcode
    - StoreIndexTuple
    - ExecQualAndReset
    - InstrCountFiltered2
    - elog
    - Assert
    - InstrCountTuples2
    - errmsg
    - ExecClearTuple
    - ItemPointerGetBlockNumber
    - ExecForceStoreHeapTuple
    - ScanDirectionCombine
    - index_getnext_tid
    - ScanRelIsReadOnly
    - ereport
    - CHECK_FOR_INTERRUPTS
    - VM_ALL_VISIBLE
    - index_fetch_heap
    - index_rescan
    - PredicateLockPage
    - index_beginscan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      IndexOnlyNext(IndexOnlyScanState *node)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:282,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:284,1
    - Dst: index_deform_tuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:285,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:294,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:308,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:312,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:312,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:313,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:317,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - node
    - slot
    - itup
    - itupdesc
    argTypes:
    - IndexOnlyScanState*
    - TupleTableSlot*
    - IndexTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 318
    functionName: StoreIndexTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 1
    functionsReached:
    - NameGetDatum
    - MemoryContextAlloc
    - Assert
    - namestrcpy
    - unlikely
    - index_deform_tuple
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - DatumGetCString
    linkageType: ''
    returnType: void
    signature: "void StoreIndexTuple(IndexOnlyScanState *node, TupleTableSlot *slot,\n\t\t\t\tIndexTuple
      itup, TupleDesc itupdesc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - IndexOnlyScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 333
    functionName: IndexOnlyRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: bool
    signature: bool IndexOnlyRecheck(IndexOnlyScanState *node, TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:342,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:348,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 353
    functionName: ExecIndexOnlyScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    - ExecReScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecIndexOnlyScan(PlanState *pstate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:380,1
    - Dst: ExecIndexEvalRuntimeKeys
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:381,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:389,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 394
    functionName: ExecReScanIndexOnlyScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - index_rescan
    - ExecScanReScan
    - ResetExprContext
    - ExecIndexEvalRuntimeKeys
    linkageType: ''
    returnType: void
    signature: void ExecReScanIndexOnlyScan(IndexOnlyScanState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:416,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:425,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:429,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:445,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:447,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 401
    functionDepth: 2
    functionLinenumber: 401
    functionLinenumberEnd: 448
    functionName: ExecEndIndexOnlyScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - Assert
    - index_endscan
    - index_close
    - IsParallelWorker
    linkageType: ''
    returnType: void
    signature: void ExecEndIndexOnlyScan(IndexOnlyScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:476,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:482,1
    - Dst: index_markpos
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:487,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 488
    functionName: ExecIndexOnlyMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - index_markpos
    - elog
    linkageType: ''
    returnType: void
    signature: void ExecIndexOnlyMarkPos(IndexOnlyScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:505,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:511,1
    - Dst: index_restrpos
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:516,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 517
    functionName: ExecIndexOnlyRestrPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - index_restrpos
    - elog
    linkageType: ''
    returnType: void
    signature: void ExecIndexOnlyRestrPos(IndexOnlyScanState *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:544,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:554,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:559,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:571,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:572,1
    - Dst: ExecAllocTableSlot
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:581,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:582,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:583,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:589,1
    - Dst: ExecAssignScanProjectionInfoWithVarno
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:590,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:599,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:601,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:613,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:616,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:617,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:630,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:644,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:665,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:691,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:704,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:708,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 51
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - IndexOnlyScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 530
    functionDepth: 4
    functionLinenumber: 530
    functionLinenumberEnd: 720
    functionName: ExecInitIndexOnlyScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - ExecTypeFromTL
    - palloc0_object
    - ExecAllocTableSlot
    - table_slot_callbacks
    - ExecAssignExprContext
    - ExecInitResultTypeTL
    - RelationGetDescr
    - ExecAssignScanProjectionInfoWithVarno
    - ExecInitScanTupleSlot
    - makeNode
    - index_open
    - palloc_array
    - exec_rt_fetch
    - ExecIndexBuildScanKeys
    - TupleDescAttr
    - ExecInitQual
    - ExecOpenScanRelation
    linkageType: ''
    returnType: IndexOnlyScanState
    signature: 'IndexOnlyScanState *

      ExecInitIndexOnlyScan(IndexOnlyScan *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_parallelscan_estimate
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:740,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:744,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 734
    functionDepth: 2
    functionLinenumber: 734
    functionLinenumberEnd: 746
    functionName: ExecIndexOnlyScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - index_parallelscan_estimate
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanEstimate(IndexOnlyScanState *node,\n\t\t\t\t\t\t
      \ ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:761,1
    - Dst: index_parallelscan_initialize
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:762,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:766,1
    - Dst: index_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:769,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:775,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:785,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 754
    functionDepth: 3
    functionLinenumber: 754
    functionLinenumberEnd: 788
    functionName: ExecIndexOnlyScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - ScanRelIsReadOnly
    - index_rescan
    - shm_toc_insert
    - index_parallelscan_initialize
    - index_beginscan_parallel
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanInitializeDSM(IndexOnlyScanState *node,\n\t\t\t\t\t\t\t
      \  ParallelContext *pcxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:800,1
    - Dst: index_parallelrescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 796
    functionDepth: 2
    functionLinenumber: 796
    functionLinenumberEnd: 802
    functionName: ExecIndexOnlyScanReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - index_parallelrescan
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanReInitializeDSM(IndexOnlyScanState *node,\n\t\t\t\t\t\t\t\t
      ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:816,1
    - Dst: index_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:819,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:825,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:834,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 810
    functionDepth: 3
    functionLinenumber: 810
    functionLinenumberEnd: 837
    functionName: ExecIndexOnlyScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - index_rescan
    - index_beginscan_parallel
    - shm_toc_lookup
    - ScanRelIsReadOnly
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanInitializeWorker(IndexOnlyScanState *node,\n\t\t\t\t\t\t\t\t
      \ ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:857,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:858,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:859,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:860,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 861
    functionName: ExecIndexOnlyScanInstrumentEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanInstrumentEstimate(IndexOnlyScanState *node,\n\t\t\t\t\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:875,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:876,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:878,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:881,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:883,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 887
    functionName: ExecIndexOnlyScanInstrumentInitDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanInstrumentInitDSM(IndexOnlyScanState *node,\n\t\t\t\t\t\t\t\t
      \  ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:900,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 904
    functionName: ExecIndexOnlyScanInstrumentInitWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanInstrumentInitWorker(IndexOnlyScanState *node,\n\t\t\t\t\t\t\t\t\t
      \ ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:924,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:925,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 912
    functionDepth: 0
    functionLinenumber: 912
    functionLinenumberEnd: 926
    functionName: ExecIndexOnlyScanRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecIndexOnlyScanRetrieveInstrumentation(IndexOnlyScanState *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/execAsync.c:30,1
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execAsync.c:34,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:36,1
    - Dst: ExecAsyncForeignScanRequest
      Src: /src/postgres/src/backend/executor/execAsync.c:39,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAsync.c:43,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:44,1
    - Dst: ExecAsyncResponse
      Src: /src/postgres/src/backend/executor/execAsync.c:47,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execAsync.c:51,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execAsync.c:52,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 53
    functionName: ExecAsyncRequest
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 0
    functionsReached:
    - elog
    - ExecAsyncForeignScanRequest
    - ExecAsyncResponse
    - InstrStopNode
    - nodeTag
    - ExecReScan
    - TupIsNull
    - InstrStartNode
    linkageType: ''
    returnType: void
    signature: void ExecAsyncRequest(AsyncRequest *areq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execAsync.c:67,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:69,1
    - Dst: ExecAsyncForeignScanConfigureWait
      Src: /src/postgres/src/backend/executor/execAsync.c:72,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAsync.c:76,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:77,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execAsync.c:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 83
    functionName: ExecAsyncConfigureWait
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 0
    functionsReached:
    - elog
    - InstrStopNode
    - ExecAsyncForeignScanConfigureWait
    - nodeTag
    - InstrStartNode
    linkageType: ''
    returnType: void
    signature: void ExecAsyncConfigureWait(AsyncRequest *areq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execAsync.c:93,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:95,1
    - Dst: ExecAsyncForeignScanNotify
      Src: /src/postgres/src/backend/executor/execAsync.c:98,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAsync.c:102,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:103,1
    - Dst: ExecAsyncResponse
      Src: /src/postgres/src/backend/executor/execAsync.c:106,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execAsync.c:110,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execAsync.c:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 112
    functionName: ExecAsyncNotify
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 0
    functionsReached:
    - elog
    - ExecAsyncResponse
    - InstrStopNode
    - ExecAsyncForeignScanNotify
    - nodeTag
    - TupIsNull
    - InstrStartNode
    linkageType: ''
    returnType: void
    signature: void ExecAsyncNotify(AsyncRequest *areq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:120,1
    - Dst: ExecAsyncAppendResponse
      Src: /src/postgres/src/backend/executor/execAsync.c:123,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAsync.c:127,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 130
    functionName: ExecAsyncResponse
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 2
    functionsReached:
    - elog
    - ExecAsyncAppendResponse
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void ExecAsyncResponse(AsyncRequest *areq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - areq
    - result
    argTypes:
    - AsyncRequest*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: ExecAsyncRequestDone
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ExecAsyncRequestDone(AsyncRequest *areq, TupleTableSlot *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 155
    functionName: ExecAsyncRequestPending
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ExecAsyncRequestPending(AsyncRequest *areq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - node
    - ','
    - groupName
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 116
    functionName: INSTRUMENT_SORT_GROUP
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTRUMENT_SORT_GROUP(node, groupName)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_get_stats
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:134,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - groupInfo
    - sortState
    argTypes:
    - IncrementalSortGroupInfo*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 155
    functionName: instrumentSortedGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - tuplesort_get_stats
    linkageType: ''
    returnType: void
    signature: "void instrumentSortedGroup(IncrementalSortGroupInfo *groupInfo,\n\t\t\t\t\t
      \ Tuplesortstate *sortState)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:166,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:169,1
    - Dst: get_equality_op_for_ordering_op
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:182,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:184,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:185,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:188,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:189,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:190,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:193,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:196,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:196,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - node
    argTypes:
    - IncrementalSortState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 202
    functionName: preparePresortedCols
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - elog
    - InitFunctionCallInfoData
    - castNode
    - palloc0
    - SizeForFunctionCallInfo
    - palloc
    - OidIsValid
    - get_equality_op_for_ordering_op
    - get_opcode
    - fmgr_info_cxt
    linkageType: ''
    returnType: void
    signature: void preparePresortedCols(IncrementalSortState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:216,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:234,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:235,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:254,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:258,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:260,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - node
    - pivot
    - tuple
    argTypes:
    - IncrementalSortState*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 264
    functionName: isCurrentGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - elog
    - slot_getattr
    - FunctionCallInvoke
    - castNode
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool isCurrentGroup(IncrementalSortState *node, TupleTableSlot *pivot,
      TupleTableSlot *tuple)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:288,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:293,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:296,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:297,1
    - Dst: tuplesort_begin_heap
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:309,1
    - Dst: tuplesort_reset
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:323,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:333,1
    - Dst: tuplesort_set_bound
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:335,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:350,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:352,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:354,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:358,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:359,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:366,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:367,1
    - Dst: isCurrentGroup
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:369,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:371,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:388,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:402,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:404,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:416,1
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:417,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:425,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:435,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:436,1
    - Dst: INSTRUMENT_SORT_GROUP
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:438,1
    - Dst: SO2_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:448,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:449,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:450,1
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:453,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 456
    functionName: switchToPresortedPrefixMode
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - tuplesort_gettupleslot
    - SO_printf
    - tuplesort_puttupleslot
    - tuplesort_set_bound
    - outerPlanState
    - ScanDirectionIsForward
    - ExecClearTuple
    - INSTRUMENT_SORT_GROUP
    - SO1_printf
    - tuplesort_performsort
    - isCurrentGroup
    - ExecCopySlot
    - SO2_printf
    - tuplesort_begin_heap
    - TupIsNull
    - ExecGetResultType
    - castNode
    - tuplesort_reset
    - Min
    linkageType: ''
    returnType: void
    signature: void switchToPresortedPrefixMode(PlanState *pstate)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:497,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:509,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:538,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:538,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:560,1
    - Dst: switchToPresortedPrefixMode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:562,1
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:572,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:583,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:584,1
    - Dst: preparePresortedCols
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:601,1
    - Dst: tuplesort_begin_heap
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:610,1
    - Dst: tuplesort_reset
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:626,1
    - Dst: tuplesort_set_bound
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:644,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:646,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:657,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:659,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:670,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:680,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:686,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:695,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:696,1
    - Dst: INSTRUMENT_SORT_GROUP
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:698,1
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:700,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:715,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:723,1
    - Dst: isCurrentGroup
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:735,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:741,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:753,1
    - Dst: SO2_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:764,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:766,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:767,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:775,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:777,1
    - Dst: INSTRUMENT_SORT_GROUP
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:779,1
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:781,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:807,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:816,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:817,1
    - Dst: INSTRUMENT_SORT_GROUP
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:819,1
    - Dst: tuplesort_used_bound
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:831,1
    - Dst: SO2_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:835,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:836,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:837,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:840,1
    - Dst: switchToPresortedPrefixMode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:852,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:880,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:880,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:890,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:896,1
    - Dst: isCurrentGroup
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:914,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:916,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:921,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:930,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:931,1
    - Dst: INSTRUMENT_SORT_GROUP
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:933,1
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:935,1
    - Dst: SO2_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:946,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:948,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:949,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:963,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:963,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 122
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 494
    functionDepth: 4
    functionLinenumber: 494
    functionLinenumberEnd: 966
    functionName: ExecIncrementalSort
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - tuplesort_gettupleslot
    - tuplesort_used_bound
    - SO_printf
    - tuplesort_puttupleslot
    - tuplesort_set_bound
    - Assert
    - ExecProcNode
    - outerPlanState
    - ScanDirectionIsForward
    - ExecClearTuple
    - INSTRUMENT_SORT_GROUP
    - SO1_printf
    - preparePresortedCols
    - tuplesort_performsort
    - CHECK_FOR_INTERRUPTS
    - isCurrentGroup
    - ExecCopySlot
    - SO2_printf
    - tuplesort_begin_heap
    - TupIsNull
    - ExecGetResultType
    - castNode
    - tuplesort_reset
    - Min
    - switchToPresortedPrefixMode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecIncrementalSort(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:980,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:987,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:990,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1042,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1042,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1042,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1047,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1053,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1061,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1061,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1061,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1064,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1064,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1064,1
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1067,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 39
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - IncrementalSort*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 1070
    functionName: ExecInitIncrementalSort
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - ExecGetResultType
    - Assert
    - makeNode
    - ExecInitResultTupleSlotTL
    - SO_printf
    - outerPlanState
    - MakeSingleTupleTableSlot
    - ExecCreateScanSlotFromOuterPlan
    - outerPlan
    linkageType: ''
    returnType: IncrementalSortState
    signature: 'IncrementalSortState *

      ExecInitIncrementalSort(IncrementalSort *node, EState *estate, int eflags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1079,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1081,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1082,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1089,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1094,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1101,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1101,1
    - Dst: SO_printf
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - node
    argTypes:
    - IncrementalSortState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1076
    functionDepth: 1
    functionLinenumber: 1076
    functionLinenumberEnd: 1104
    functionName: ExecEndIncrementalSort
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - ExecDropSingleTupleTableSlot
    - SO_printf
    - outerPlanState
    - ExecEndNode
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: void ExecEndIncrementalSort(IncrementalSortState *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1109,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1127,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1130,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1132,1
    - Dst: tuplesort_reset
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1149,1
    - Dst: tuplesort_reset
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1151,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - IncrementalSortState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1106
    functionDepth: 1
    functionLinenumber: 1106
    functionLinenumberEnd: 1159
    functionName: ExecReScanIncrementalSort
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - tuplesort_reset
    - ExecReScan
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanIncrementalSort(IncrementalSortState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1181,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1182,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1183,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IncrementalSortState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1185
    functionName: ExecIncrementalSortEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecIncrementalSortEstimate(IncrementalSortState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1204,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1206,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IncrementalSortState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1193
    functionDepth: 1
    functionLinenumber: 1193
    functionLinenumberEnd: 1210
    functionName: ExecIncrementalSortInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: void ExecIncrementalSortInitializeDSM(IncrementalSortState *node, ParallelContext
      *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - IncrementalSortState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1218
    functionDepth: 1
    functionLinenumber: 1218
    functionLinenumberEnd: 1224
    functionName: ExecIncrementalSortInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: void ExecIncrementalSortInitializeWorker(IncrementalSortState *node,
      ParallelWorkerContext *pwcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1243,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeIncrementalSort.c:1244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - IncrementalSortState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1232
    functionDepth: 0
    functionLinenumber: 1232
    functionLinenumberEnd: 1246
    functionName: ExecIncrementalSortRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecIncrementalSortRetrieveInstrumentation(IncrementalSortState
      *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:44,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:50,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:59,1
    - Dst: ExecProjectSRF
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:68,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:88,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:93,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:94,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:96,1
    - Dst: ExecProjectSRF
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:106,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:120,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 124
    functionName: ExecProjectSet
    functionSourceFile: /src/postgres/src/backend/executor/nodeProjectSet.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - MemoryContextReset
    - castNode
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - ExecProjectSRF
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecProjectSet(PlanState *pstate)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:148,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:151,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:177,1
    - Dst: ExecMakeFunctionResultSet
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:182,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:195,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:200,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:203,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:211,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 2
    argNames:
    - node
    - continuing
    argTypes:
    - ProjectSetState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 216
    functionName: ExecProjectSRF
    functionSourceFile: /src/postgres/src/backend/executor/nodeProjectSet.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecMakeFunctionResultSet
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - IsA
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecProjectSRF(ProjectSetState *node, bool continuing)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:234,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:239,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:251,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:256,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:256,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:256,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:261,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:261,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:266,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:269,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:270,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:271,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:280,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:282,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:285,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:286,1
    - Dst: ExecInitFunctionResultSet
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:294,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:294,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:302,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:312,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - ProjectSet*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 317
    functionName: ExecInitProjectSet
    functionSourceFile: /src/postgres/src/backend/executor/nodeProjectSet.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - foreach
    - ExecAssignExprContext
    - Assert
    - ExecInitFunctionResultSet
    - makeNode
    - ExecInitResultTupleSlotTL
    - palloc_array
    - outerPlanState
    - lfirst
    - ExecInitExpr
    - AllocSetContextCreate
    - list_length
    - expression_returns_set
    - IsA
    - outerPlan
    - innerPlan
    linkageType: ''
    returnType: ProjectSetState
    signature: 'ProjectSetState *

      ExecInitProjectSet(ProjectSet *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:331,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - ProjectSetState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 332
    functionName: ExecEndProjectSet
    functionSourceFile: /src/postgres/src/backend/executor/nodeProjectSet.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndProjectSet(ProjectSetState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:337,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - ProjectSetState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 348
    functionName: ExecReScanProjectSet
    functionSourceFile: /src/postgres/src/backend/executor/nodeProjectSet.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanProjectSet(ProjectSetState *node)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:40,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:47,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:53,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:59,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:61,1
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:64,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:75,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:77,1
    - Dst: EvalPlanQualSlot
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:89,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:90,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:97,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:102,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:105,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:105,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:110,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:117,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:122,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:130,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:133,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:135,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:136,1
    - Dst: FdwRoutine*::RefetchForeignRow
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:138,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:143,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:160,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:176,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:182,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:185,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:225,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:226,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:227,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:228,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:229,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:234,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:235,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:236,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:237,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:242,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:246,1
    - Dst: EvalPlanQualBegin
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:260,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:266,1
    - Dst: EvalPlanQualNext
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:271,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:272,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 106
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 37
    functionDepth: 5
    functionLinenumber: 37
    functionLinenumberEnd: 281
    functionName: ExecLockRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeLockRows.c
    functionUses: 0
    functionsReached:
    - errcode
    - RelationGetRelationName
    - elog
    - foreach
    - ExecGetJunkAttribute
    - DatumGetObjectId
    - Assert
    - ExecProcNode
    - EvalPlanQualBegin
    - FdwRoutine*::RefetchForeignRow
    - EvalPlanQualSetSlot
    - outerPlanState
    - errmsg
    - ExecClearTuple
    - OidIsValid
    - ereport
    - CHECK_FOR_INTERRUPTS
    - table_tuple_lock
    - lfirst
    - TupIsNull
    - EvalPlanQualNext
    - castNode
    - EvalPlanQualEnd
    - EvalPlanQualSlot
    - ItemPointerSetInvalid
    - IsolationUsesXactSnapshot
    - GetFdwRoutineForRelation
    - DatumGetPointer
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\t\t\t/* return: a tuple or NULL */\nExecLockRows(PlanState
      *pstate)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:299,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:304,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:319,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:324,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:324,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:328,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:328,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:344,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:346,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:347,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:360,1
    - Dst: ExecFindRowMark
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:364,1
    - Dst: ExecBuildAuxRowMark
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:365,1
    - Dst: RowMarkRequiresRowShareLock
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:373,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:374,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:376,1
    - Dst: EvalPlanQualInit
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:380,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - LockRows*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 290
    functionDepth: 6
    functionLinenumber: 290
    functionLinenumberEnd: 384
    functionName: ExecInitLockRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeLockRows.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - foreach
    - ExecInitResultTypeTL
    - Assert
    - bms_is_member
    - lappend
    - makeNode
    - EvalPlanQualInit
    - outerPlanState
    - exec_rt_fetch
    - ExecGetResultSlotOps
    - RowMarkRequiresRowShareLock
    - ExecFindRowMark
    - ExecBuildAuxRowMark
    - outerPlan
    - lfirst_node
    linkageType: ''
    returnType: LockRowsState
    signature: 'LockRowsState *

      ExecInitLockRows(LockRows *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:397,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:398,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - LockRowsState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 399
    functionName: ExecEndLockRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeLockRows.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecEndNode
    - EvalPlanQualEnd
    linkageType: ''
    returnType: void
    signature: void ExecEndLockRows(LockRowsState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:405,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - LockRowsState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 413
    functionName: ExecReScanLockRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeLockRows.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanLockRows(LockRowsState *node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:63,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:74,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:79,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:84,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:85,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:92,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:98,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:108,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:109,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:114,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:116,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:120,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:129,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:131,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:137,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:139,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:140,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:144,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:151,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:152,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:158,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:160,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:163,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:165,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:181,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:183,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:190,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:192,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:195,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:212,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:214,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:233,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:239,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:241,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:244,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:247,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:252,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:254,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 70
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 256
    functionName: ExecNestLoop
    functionSourceFile: /src/postgres/src/backend/executor/nodeNestloop.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - ENL1_printf
    - ExecReScan
    - InstrCountFiltered2
    - bms_add_member
    - innerPlanState
    - foreach
    - slot_getattr
    - Assert
    - ExecProcNode
    - outerPlanState
    - ExecProject
    - InstrCountFiltered1
    - CHECK_FOR_INTERRUPTS
    - lfirst
    - TupIsNull
    - castNode
    - ExecQual
    - IsA
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecNestLoop(PlanState *pstate)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:268,1
    - Dst: NL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:270,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:276,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:286,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:297,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:297,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:297,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:302,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:302,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:302,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:307,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:308,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:314,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:317,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:334,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:335,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:335,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:339,1
    - Dst: NL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:349,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - NestLoop*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 353
    functionName: ExecInitNestLoop
    functionSourceFile: /src/postgres/src/backend/executor/nodeNestloop.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - ExecAssignProjectionInfo
    - elog
    - innerPlanState
    - ExecGetResultType
    - ExecAssignExprContext
    - Assert
    - outerPlan
    - makeNode
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - ExecInitNullTupleSlot
    - ExecInitQual
    - NL1_printf
    - innerPlan
    linkageType: ''
    returnType: NestLoopState
    signature: 'NestLoopState *

      ExecInitNestLoop(NestLoop *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:364,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:370,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:370,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:371,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:371,1
    - Dst: NL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - NestLoopState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 375
    functionName: ExecEndNestLoop
    functionSourceFile: /src/postgres/src/backend/executor/nodeNestloop.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecEndNode
    - NL1_printf
    - innerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndNestLoop(NestLoopState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:384,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - NestLoopState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 401
    functionName: ExecReScanNestLoop
    functionSourceFile: /src/postgres/src/backend/executor/nodeNestloop.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanNestLoop(NestLoopState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execSRF.c:60,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execSRF.c:75,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/execSRF.c:80,1
    - Dst: init_sexpr
      Src: /src/postgres/src/backend/executor/execSRF.c:82,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execSRF.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - expr
    - econtext
    - parent
    argTypes:
    - Expr*
    - ExprContext*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 91
    functionName: ExecInitTableFunctionResult
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 0
    functionsReached:
    - init_sexpr
    - ExecInitExprList
    - makeNode
    - ExecInitExpr
    - IsA
    linkageType: ''
    returnType: SetExprState
    signature: "SetExprState *\nExecInitTableFunctionResult(Expr *expr,\n\t\t\t\t\t\t\tExprContext
      *econtext, PlanState *parent)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/execSRF.c:133,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:134,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execSRF.c:136,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/executor/execSRF.c:138,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execSRF.c:158,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execSRF.c:158,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execSRF.c:158,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execSRF.c:176,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execSRF.c:177,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:181,1
    - Dst: ExecEvalFuncArgs
      Src: /src/postgres/src/backend/executor/execSRF.c:182,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execSRF.c:203,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:209,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/execSRF.c:219,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/execSRF.c:226,1
    - Dst: pgstat_init_function_usage
      Src: /src/postgres/src/backend/executor/execSRF.c:231,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execSRF.c:235,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/backend/executor/execSRF.c:237,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execSRF.c:243,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:263,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/execSRF.c:265,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/execSRF.c:269,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execSRF.c:270,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/executor/execSRF.c:276,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:279,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execSRF.c:289,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:294,1
    - Dst: lookup_rowtype_tupdesc_copy
      Src: /src/postgres/src/backend/executor/execSRF.c:302,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execSRF.c:302,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execSRF.c:303,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:305,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execSRF.c:313,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execSRF.c:314,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:315,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:316,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:317,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execSRF.c:324,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/executor/execSRF.c:327,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execSRF.c:342,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execSRF.c:343,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/execSRF.c:344,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/execSRF.c:350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:365,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:373,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:374,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:375,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:380,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:381,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:382,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:399,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/execSRF.c:401,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:403,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execSRF.c:410,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execSRF.c:411,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/execSRF.c:412,1
    - Dst: tupledesc_match
      Src: /src/postgres/src/backend/executor/execSRF.c:422,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/executor/execSRF.c:430,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:433,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 111
    argCount: 5
    argNames:
    - setexpr
    - econtext
    - argContext
    - expectedDesc
    - randomAccess
    argTypes:
    - SetExprState*
    - ExprContext*
    - MemoryContext
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 101
    functionDepth: 5
    functionLinenumber: 101
    functionLinenumberEnd: 437
    functionName: ExecMakeTableFunctionResult
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ResetExprContext
    - errcode
    - exprType
    - tuplestore_putvalues
    - SizeForFunctionCallInfo
    - MemoryContextReset
    - lookup_rowtype_tupdesc_copy
    - Assert
    - TupleDescFinalize
    - HeapTupleHeaderGetTypMod
    - errmsg
    - list_length
    - DatumGetHeapTupleHeader
    - TupleDescInitEntry
    - tuplestore_begin_heap
    - CreateTemplateTupleDesc
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - ereport
    - CHECK_FOR_INTERRUPTS
    - HeapTupleHeaderGetTypeId
    - tupledesc_match
    - FreeTupleDesc
    - memset
    - type_is_rowtype
    - tuplestore_puttuple
    - ExecEvalFuncArgs
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - palloc
    - pgstat_init_function_usage
    - pgstat_end_function_usage
    linkageType: ''
    returnType: Tuplestorestate
    signature: "Tuplestorestate *\nExecMakeTableFunctionResult(SetExprState *setexpr,\n\t\t\t\t\t\t\tExprContext
      *econtext,\n\t\t\t\t\t\t\tMemoryContext argContext,\n\t\t\t\t\t\t\tTupleDesc
      expectedDesc,\n\t\t\t\t\t\t\tbool randomAccess)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execSRF.c:449,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execSRF.c:459,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/execSRF.c:463,1
    - Dst: init_sexpr
      Src: /src/postgres/src/backend/executor/execSRF.c:464,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execSRF.c:467,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/execSRF.c:471,1
    - Dst: init_sexpr
      Src: /src/postgres/src/backend/executor/execSRF.c:472,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execSRF.c:476,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execSRF.c:477,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - expr
    - econtext
    - parent
    argTypes:
    - Expr*
    - ExprContext*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 483
    functionName: ExecInitFunctionResultSet
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 1
    functionsReached:
    - elog
    - init_sexpr
    - Assert
    - ExecInitExprList
    - makeNode
    - IsA
    - nodeTag
    linkageType: ''
    returnType: SetExprState
    signature: "SetExprState *\nExecInitFunctionResultSet(Expr *expr,\n\t\t\t\t\t\t
      \ ExprContext *econtext, PlanState *parent)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execSRF.c:516,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:534,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/execSRF.c:535,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:537,1
    - Dst: ExecFetchSlotHeapTupleDatum
      Src: /src/postgres/src/backend/executor/execSRF.c:546,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/execSRF.c:551,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/execSRF.c:555,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:576,1
    - Dst: ExecEvalFuncArgs
      Src: /src/postgres/src/backend/executor/execSRF.c:578,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:579,1
    - Dst: pgstat_init_function_usage
      Src: /src/postgres/src/backend/executor/execSRF.c:622,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execSRF.c:626,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/backend/executor/execSRF.c:630,1
    - Dst: RegisterExprContextCallback
      Src: /src/postgres/src/backend/executor/execSRF.c:655,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execSRF.c:657,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:667,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:668,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:669,1
    - Dst: ExecPrepareTuplestoreResult
      Src: /src/postgres/src/backend/executor/execSRF.c:673,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:685,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:686,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:687,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 86
    argCount: 5
    argNames:
    - fcache
    - econtext
    - argContext
    - isNull
    - isDone
    argTypes:
    - SetExprState*
    - ExprContext*
    - MemoryContext
    - bool*
    - ExprDoneCond*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 691
    functionName: ExecMakeFunctionResultSet
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 1
    functionsReached:
    - slot_getattr
    - ExecFetchSlotHeapTupleDatum
    - FunctionCallInvoke
    - ExecEvalFuncArgs
    - tuplestore_end
    - errcode
    - check_stack_depth
    - ereport
    - MemoryContextSwitchTo
    - PointerGetDatum
    - errmsg
    - ExecPrepareTuplestoreResult
    - pgstat_init_function_usage
    - tuplestore_gettupleslot
    - RegisterExprContextCallback
    - pgstat_end_function_usage
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecMakeFunctionResultSet(SetExprState *fcache,\n\t\t\t\t\t\t
      \ ExprContext *econtext,\n\t\t\t\t\t\t  MemoryContext argContext,\n\t\t\t\t\t\t
      \ bool *isNull,\n\t\t\t\t\t\t  ExprDoneCond *isDone)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execSRF.c:703,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execSRF.c:706,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execSRF.c:706,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execSRF.c:708,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execSRF.c:708,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execSRF.c:709,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execSRF.c:717,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:718,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:719,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/executor/execSRF.c:720,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/executor/execSRF.c:726,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execSRF.c:727,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execSRF.c:731,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execSRF.c:731,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execSRF.c:732,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:738,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:739,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:740,1
    - Dst: executor_errposition
      Src: /src/postgres/src/backend/executor/execSRF.c:741,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/executor/execSRF.c:742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:745,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/executor/execSRF.c:755,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:766,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execSRF.c:768,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/execSRF.c:774,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execSRF.c:775,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/executor/execSRF.c:781,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:797,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 8
    argNames:
    - foid
    - input_collation
    - node
    - sexpr
    - parent
    - sexprCxt
    - allowSRF
    - needDescForSRF
    argTypes:
    - Oid
    - Oid
    - Expr*
    - SetExprState*
    - PlanState*
    - MemoryContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 697
    functionDepth: 5
    functionLinenumber: 697
    functionLinenumberEnd: 806
    functionName: init_sexpr
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 2
    functionsReached:
    - InvokeFunctionExecuteHook
    - fmgr_info_set_expr
    - get_func_name
    - GetUserId
    - errcode
    - object_aclcheck
    - exprLocation
    - SizeForFunctionCallInfo
    - Assert
    - TupleDescFinalize
    - CreateTupleDescCopy
    - executor_errposition
    - errmsg
    - list_length
    - TupleDescInitEntry
    - errmsg_plural
    - CreateTemplateTupleDesc
    - InitFunctionCallInfoData
    - ereport
    - get_expr_result_type
    - aclcheck_error
    - fmgr_info_cxt
    - MemoryContextSwitchTo
    - palloc
    linkageType: ''
    returnType: void
    signature: "void init_sexpr(Oid foid, Oid input_collation, Expr *node,\n\t\t   SetExprState
      *sexpr, PlanState *parent,\n\t\t   MemoryContext sexprCxt, bool allowSRF, bool
      needDescForSRF)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execSRF.c:815,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execSRF.c:815,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execSRF.c:819,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/execSRF.c:823,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 812
    functionDepth: 1
    functionLinenumber: 812
    functionLinenumberEnd: 831
    functionName: ShutdownSetExpr
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 0
    functionsReached:
    - tuplestore_end
    - castNode
    - ExecClearTuple
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ShutdownSetExpr(Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execSRF.c:847,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execSRF.c:849,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:855,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - fcinfo
    - argList
    - econtext
    argTypes:
    - FunctionCallInfo
    - List*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 856
    functionName: ExecEvalFuncArgs
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 2
    functionsReached:
    - Assert
    - lfirst
    - ExecEvalExpr
    linkageType: ''
    returnType: void
    signature: "void ExecEvalFuncArgs(FunctionCallInfo fcinfo,\n\t\t\t\t List *argList,\n\t\t\t\t
      ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execSRF.c:847,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execSRF.c:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 853
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 382
    functionsReached:
    - lfirst
    - ExecEvalExpr
    linkageType: ''
    returnType: void
    signature: void foreach(arg, argList)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:880,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execSRF.c:891,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:895,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:896,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:897,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execSRF.c:902,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:904,1
    - Dst: tupledesc_match
      Src: /src/postgres/src/backend/executor/execSRF.c:914,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/executor/execSRF.c:922,1
    - Dst: RegisterExprContextCallback
      Src: /src/postgres/src/backend/executor/execSRF.c:928,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execSRF.c:930,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 4
    argNames:
    - sexpr
    - econtext
    - resultStore
    - resultDesc
    argTypes:
    - SetExprState*
    - ExprContext*
    - Tuplestorestate*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 866
    functionDepth: 5
    functionLinenumber: 866
    functionLinenumberEnd: 933
    functionName: ExecPrepareTuplestoreResult
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 1
    functionsReached:
    - errcode
    - CreateTupleDescCopy
    - ereport
    - MemoryContextSwitchTo
    - MakeSingleTupleTableSlot
    - tupledesc_match
    - FreeTupleDesc
    - errmsg
    - PointerGetDatum
    - RegisterExprContextCallback
    linkageType: ''
    returnType: void
    signature: "void ExecPrepareTuplestoreResult(SetExprState *sexpr,\n\t\t\t\t\t\t\tExprContext
      *econtext,\n\t\t\t\t\t\t\tTuplestorestate *resultStore,\n\t\t\t\t\t\t\tTupleDesc
      resultDesc)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:951,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:952,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:953,1
    - Dst: errdetail_plural
      Src: /src/postgres/src/backend/executor/execSRF.c:954,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execSRF.c:961,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execSRF.c:962,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/executor/execSRF.c:964,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:967,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:968,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:969,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execSRF.c:970,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execSRF.c:971,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execSRF.c:973,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:977,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:978,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:979,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execSRF.c:980,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - dst_tupdesc
    - src_tupdesc
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 945
    functionDepth: 2
    functionLinenumber: 945
    functionLinenumberEnd: 983
    functionName: tupledesc_match
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 2
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - errmsg
    - errdetail
    - TupleDescAttr
    - IsBinaryCoercible
    - errdetail_plural
    linkageType: ''
    returnType: void
    signature: void tupledesc_match(TupleDesc dst_tupdesc, TupleDesc src_tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: IsCTIDVar
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsCTIDVar(node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:78,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:80,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:81,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:83,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:88,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:89,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:90,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:91,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:93,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:94,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:97,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:104,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:104,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:104,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:105,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:105,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:109,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:117,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:119,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:123,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:123,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - tidstate
    argTypes:
    - TidScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 69
    functionDepth: 6
    functionLinenumber: 69
    functionLinenumberEnd: 125
    functionName: TidExprListCreate
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - elog
    - palloc0_object
    - get_leftop
    - foreach
    - get_rightop
    - Assert
    - linitial
    - lappend
    - is_opclause
    - lsecond
    - lfirst
    - IsCTIDVar
    - ExecInitExpr
    - list_length
    - IsA
    linkageType: ''
    returnType: void
    signature: void TidExprListCreate(TidScanState *tidstate)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: table_beginscan_tid
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:150,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:159,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:161,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:164,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:166,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:173,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:173,1
    - Dst: table_tuple_tid_valid
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:186,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:193,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:207,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:212,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:213,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:218,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:226,1
    - Dst: table_tuple_tid_valid
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:228,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:233,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:234,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:240,1
    - Dst: execCurrentOf
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:241,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:242,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:266,1
    - Dst: qsort
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:268,1
    - Dst: qunique
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:270,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 59
    argCount: 1
    argNames:
    - tidstate
    argTypes:
    - TidScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 277
    functionName: TidListEval
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - qsort
    - foreach
    - table_tuple_tid_valid
    - qunique
    - pfree
    - Assert
    - repalloc
    - execCurrentOf
    - lfirst
    - palloc
    - list_length
    - DatumGetArrayTypeP
    - ExecEvalExprSwitchContext
    - table_beginscan_tid
    - RelationGetRelid
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void TidListEval(TidScanState *tidstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:287,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:288,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:289,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:290,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 282
    functionDepth: 3
    functionLinenumber: 282
    functionLinenumberEnd: 301
    functionName: itemptr_comparator
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumber
    - ItemPointerGetOffsetNumber
    linkageType: ''
    returnType: int
    signature: int itemptr_comparator(const void *a, const void *b)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TidListEval
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:337,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:346,1
    - Dst: table_tuple_get_latest_tid
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:378,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:380,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:389,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:396,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 311
    functionDepth: 4
    functionLinenumber: 311
    functionLinenumberEnd: 397
    functionName: TidNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - ScanDirectionIsBackward
    - table_tuple_fetch_row_version
    - CHECK_FOR_INTERRUPTS
    - table_tuple_get_latest_tid
    - ExecClearTuple
    - TidListEval
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      TidNext(TidScanState *node)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TidListEval
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:412,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - TidScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 402
    functionDepth: 4
    functionLinenumber: 402
    functionLinenumberEnd: 422
    functionName: TidRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - TidListEval
    - bsearch
    linkageType: ''
    returnType: bool
    signature: bool TidRecheck(TidScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:446,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 451
    functionName: ExecTidScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecTidScan(PlanState *pstate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:461,1
    - Dst: table_rescan
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:468,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:470,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 471
    functionName: ExecReScanTidScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - pfree
    - ExecScanReScan
    - table_rescan
    linkageType: ''
    returnType: void
    signature: void ExecReScanTidScan(TidScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 485
    functionName: ExecEndTidScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void ExecEndTidScan(TidScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:507,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:517,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:529,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:537,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:538,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:539,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:545,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:546,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:552,1
    - Dst: TidExprListCreate
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - TidScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 560
    functionName: ExecInitTidScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - TidExprListCreate
    - table_slot_callbacks
    - ExecAssignExprContext
    - ExecInitResultTypeTL
    - RelationGetDescr
    - ExecInitScanTupleSlot
    - makeNode
    - ExecAssignScanProjectionInfo
    - ExecInitQual
    - ExecOpenScanRelation
    linkageType: ''
    returnType: TidScanState
    signature: 'TidScanState *

      ExecInitTidScan(TidScan *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:36,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:36,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:38,1
    - Dst: BuildTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:45,1
    - Dst: ExecGetCommonChildSlotOps
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rustate
    argTypes:
    - RecursiveUnionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 59
    functionName: build_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeRecursiveunion.c
    functionUses: 0
    functionsReached:
    - ExecGetResultType
    - Assert
    - outerPlanState
    - BuildTupleHashTable
    - ExecGetCommonChildSlotOps
    linkageType: ''
    returnType: void
    signature: void build_hash_table(RecursiveUnionState *rustate)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:83,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:84,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:85,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:90,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:97,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:98,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:103,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:105,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:111,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:121,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:122,1
    - Dst: tuplestore_clear
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:137,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:147,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:157,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:159,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:167,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 173
    functionName: ExecRecursiveUnion
    functionSourceFile: /src/postgres/src/backend/executor/nodeRecursiveunion.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - innerPlanState
    - LookupTupleHashEntry
    - castNode
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - tuplestore_clear
    - TupIsNull
    - bms_add_member
    - tuplestore_puttupleslot
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecRecursiveUnion(PlanState *pstate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:186,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:191,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:205,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:206,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:218,1
    - Dst: BumpContextCreate
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:232,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:242,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:248,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:260,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:260,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:260,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:261,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:261,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:261,1
    - Dst: execTuplesHashPrepare
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:269,1
    - Dst: build_hash_table
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - RecursiveUnion*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 277
    functionName: ExecInitRecursiveUnion
    functionSourceFile: /src/postgres/src/backend/executor/nodeRecursiveunion.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - tuplestore_begin_heap
    - BumpContextCreate
    - innerPlanState
    - ExecInitResultTypeTL
    - Assert
    - execTuplesHashPrepare
    - build_hash_table
    - makeNode
    - outerPlanState
    - PointerGetDatum
    - AllocSetContextCreate
    - outerPlan
    - innerPlan
    linkageType: ''
    returnType: RecursiveUnionState
    signature: 'RecursiveUnionState *

      ExecInitRecursiveUnion(RecursiveUnion *node, EState *estate, int eflags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:289,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:290,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:294,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:296,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:301,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:301,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:302,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - RecursiveUnionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 303
    functionName: ExecEndRecursiveUnion
    functionSourceFile: /src/postgres/src/backend/executor/nodeRecursiveunion.c
    functionUses: 0
    functionsReached:
    - innerPlanState
    - tuplestore_end
    - outerPlanState
    - ExecEndNode
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void ExecEndRecursiveUnion(RecursiveUnionState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:314,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:315,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:322,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:330,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:334,1
    - Dst: tuplestore_clear
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:339,1
    - Dst: tuplestore_clear
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:340,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - RecursiveUnionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 341
    functionName: ExecReScanRecursiveUnion
    functionSourceFile: /src/postgres/src/backend/executor/nodeRecursiveunion.c
    functionUses: 0
    functionsReached:
    - ResetTupleHashTable
    - innerPlanState
    - outerPlanState
    - tuplestore_clear
    - ExecReScan
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void ExecReScanRecursiveUnion(RecursiveUnionState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: ExecBitmapOr
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapOr.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecBitmapOr(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:61,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:69,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:74,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:76,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:92,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:94,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - BitmapOr*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 107
    functionName: ExecInitBitmapOr
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapOr.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - foreach
    - Assert
    - palloc0
    - makeNode
    - lfirst
    - list_length
    linkageType: ''
    returnType: BitmapOrState
    signature: 'BitmapOrState *

      ExecInitBitmapOr(BitmapOr *node, EState *estate, int eflags)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:123,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:144,1
    - Dst: tbm_create
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:149,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:156,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:159,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:164,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:166,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:167,1
    - Dst: tbm_union
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:173,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:174,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:181,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:185,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapOrState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 188
    functionName: MultiExecBitmapOr
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapOr.c
    functionUses: 0
    functionsReached:
    - elog
    - tbm_create
    - InstrStopNode
    - tbm_free
    - MultiExecProcNode
    - IsA
    - InstrStartNode
    - tbm_union
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecBitmapOr(BitmapOrState *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapOrState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 219
    functionName: ExecEndBitmapOr
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapOr.c
    functionUses: 0
    functionsReached:
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndBitmapOr(BitmapOrState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:235,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:242,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapOrState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 244
    functionName: ExecReScanBitmapOr
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapOr.c
    functionUses: 0
    functionsReached:
    - UpdateChangedParamSet
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanBitmapOr(BitmapOrState *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:69,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:83,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:92,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:96,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:98,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:106,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 116
    functionName: tstoreStartupReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    - Assert
    - convert_tuples_by_position
    - MakeSingleTupleTableSlot
    - TupleDescCompactAttr
    linkageType: ''
    returnType: void
    signature: void tstoreStartupReceiver(DestReceiver *self, int operation, TupleDesc
      typeinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 130
    functionName: tstoreReceiveSlot_notoast
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 0
    functionsReached:
    - tuplestore_puttupleslot
    linkageType: ''
    returnType: bool
    signature: bool tstoreReceiveSlot_notoast(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:147,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:158,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:162,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:162,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:164,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:164,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:165,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:176,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:177,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:179,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:183,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:183,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 136
    functionDepth: 5
    functionLinenumber: 136
    functionLinenumberEnd: 186
    functionName: tstoreReceiveSlot_detoast
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 0
    functionsReached:
    - detoast_external_attr
    - pfree
    - tuplestore_putvalues
    - MemoryContextSwitchTo
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - TupleDescCompactAttr
    - slot_getallattrs
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool tstoreReceiveSlot_detoast(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:197,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 192
    functionDepth: 3
    functionLinenumber: 192
    functionLinenumberEnd: 201
    functionName: tstoreReceiveSlot_tupmap
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 0
    functionsReached:
    - execute_attr_map_slot
    - tuplestore_puttupleslot
    linkageType: ''
    returnType: bool
    signature: bool tstoreReceiveSlot_tupmap(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:213,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:216,1
    - Dst: free_conversion_map
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:219,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 224
    functionName: tstoreShutdownReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 0
    functionsReached:
    - pfree
    - free_conversion_map
    - ExecDropSingleTupleTableSlot
    linkageType: ''
    returnType: void
    signature: void tstoreShutdownReceiver(DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: tstoreDestroyReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void tstoreDestroyReceiver(DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 252
    functionName: CreateTuplestoreDestReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: DestReceiver
    signature: 'DestReceiver *

      CreateTuplestoreDestReceiver(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:276,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - self
    - tStore
    - tContext
    - detoast
    - target_tupdesc
    - map_failure_msg
    argTypes:
    - DestReceiver*
    - Tuplestorestate*
    - MemoryContext
    - bool
    - TupleDesc
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 284
    functionName: SetTuplestoreDestReceiverParams
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void SetTuplestoreDestReceiverParams(DestReceiver *self,\n\t\t\t\t\t\t\t\tTuplestorestate
      *tStore,\n\t\t\t\t\t\t\t\tMemoryContext tContext,\n\t\t\t\t\t\t\t\tbool detoast,\n\t\t\t\t\t\t\t\tTupleDesc
      target_tupdesc,\n\t\t\t\t\t\t\t\tconst char *map_failure_msg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeUnique.c:48,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeUnique.c:54,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeUnique.c:59,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeUnique.c:72,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeUnique.c:73,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeUnique.c:76,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeUnique.c:83,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeUnique.c:93,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeUnique.c:103,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 45
    functionDepth: 4
    functionLinenumber: 45
    functionLinenumberEnd: 104
    functionName: ExecUnique
    functionSourceFile: /src/postgres/src/backend/executor/nodeUnique.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - ExecQualAndReset
    - ExecCopySlot
    - ExecClearTuple
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\t\t\t/* return: a tuple or NULL */\nExecUnique(PlanState
      *pstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeUnique.c:119,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeUnique.c:124,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeUnique.c:132,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeUnique.c:137,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeUnique.c:137,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeUnique.c:137,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeUnique.c:143,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeUnique.c:150,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeUnique.c:150,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeUnique.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Unique*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 158
    functionName: ExecInitUnique
    functionSourceFile: /src/postgres/src/backend/executor/nodeUnique.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - ExecGetResultType
    - ExecAssignExprContext
    - Assert
    - makeNode
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - execTuplesMatchPrepare
    - outerPlan
    linkageType: ''
    returnType: UniqueState
    signature: 'UniqueState *

      ExecInitUnique(Unique *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeUnique.c:170,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeUnique.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - UniqueState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: ExecEndUnique
    functionSourceFile: /src/postgres/src/backend/executor/nodeUnique.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndUnique(UniqueState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeUnique.c:177,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeUnique.c:180,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeUnique.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - UniqueState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 188
    functionName: ExecReScanUnique
    functionSourceFile: /src/postgres/src/backend/executor/nodeUnique.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecReScan
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanUnique(UniqueState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tablesample_init
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:48,1
    - Dst: tablesample_getnext
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 54
    functionName: SampleNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 0
    functionsReached:
    - tablesample_init
    - tablesample_getnext
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      SampleNext(SampleScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - SampleScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: SampleRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SampleRecheck(SampleScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:81,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: ExecSampleScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSampleScan(PlanState *pstate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:99,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:99,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:100,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:100,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:105,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:115,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:121,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:129,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:130,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:131,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:137,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:138,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:144,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:146,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:148,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:155,1
    - Dst: GetTsmRoutine
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:160,1
    - Dst: TsmRoutine*::InitSampleScan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - SampleScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 171
    functionName: ExecInitSampleScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 0
    functionsReached:
    - table_slot_callbacks
    - GetTsmRoutine
    - ExecAssignExprContext
    - Assert
    - RelationGetDescr
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - ExecInitExprList
    - makeNode
    - ExecAssignScanProjectionInfo
    - pg_prng_uint32
    - ExecInitExpr
    - ExecInitQual
    - TsmRoutine*::InitSampleScan
    - outerPlan
    - ExecOpenScanRelation
    - innerPlan
    linkageType: ''
    returnType: SampleScanState
    signature: 'SampleScanState *

      ExecInitSampleScan(SampleScan *node, EState *estate, int eflags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SampleScanState*::tsmroutine::EndSampleScan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:186,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 193
    functionName: ExecEndSampleScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 0
    functionsReached:
    - table_endscan
    - SampleScanState*::tsmroutine::EndSampleScan
    linkageType: ''
    returnType: void
    signature: void ExecEndSampleScan(SampleScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 212
    functionName: ExecReScanSampleScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 0
    functionsReached:
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanSampleScan(SampleScanState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:232,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:232,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:235,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:237,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:245,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:251,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:257,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:271,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:271,1
    - Dst: TsmRoutine*::BeginSampleScan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:284,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:286,1
    - Dst: table_beginscan_sampling
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:296,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:302,1
    - Dst: table_rescan_set_params
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:307,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:313,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - scanstate
    argTypes:
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 317
    functionName: tablesample_init
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 1
    functionsReached:
    - foreach
    - table_beginscan_sampling
    - errcode
    - ScanRelIsReadOnly
    - pfree
    - ereport
    - palloc_array
    - DirectFunctionCall1
    - TsmRoutine*::BeginSampleScan
    - lfirst
    - errmsg
    - ExecEvalExprSwitchContext
    - list_length
    - table_rescan_set_params
    - DatumGetUInt32
    linkageType: ''
    returnType: void
    signature: void tablesample_init(SampleScanState *scanstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:328,1
    - Dst: table_scan_sample_next_block
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:337,1
    - Dst: table_scan_sample_next_tuple
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:349,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - scanstate
    argTypes:
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 366
    functionName: tablesample_getnext
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 1
    functionsReached:
    - table_scan_sample_next_block
    - table_scan_sample_next_tuple
    - ExecClearTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      tablesample_getnext(SampleScanState *scanstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execIndexing.c:175,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/executor/execIndexing.c:181,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execIndexing.c:182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execIndexing.c:187,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execIndexing.c:192,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execIndexing.c:193,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execIndexing.c:209,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/execIndexing.c:213,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/executor/execIndexing.c:216,1
    - Dst: BuildSpeculativeIndexInfo
      Src: /src/postgres/src/backend/executor/execIndexing.c:223,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execIndexing.c:230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - resultRelInfo
    - speculative
    argTypes:
    - ResultRelInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 161
    functionDepth: 5
    functionLinenumber: 161
    functionLinenumberEnd: 231
    functionName: ExecOpenIndices
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 4
    functionsReached:
    - list_free
    - Assert
    - BuildIndexInfo
    - palloc_array
    - index_open
    - RelationGetForm
    - BuildSpeculativeIndexInfo
    - list_length
    - lfirst_oid
    - RelationGetIndexList
    linkageType: ''
    returnType: void
    signature: void ExecOpenIndices(ResultRelInfo *resultRelInfo, bool speculative)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execIndexing.c:209,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/execIndexing.c:213,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/executor/execIndexing.c:216,1
    - Dst: BuildSpeculativeIndexInfo
      Src: /src/postgres/src/backend/executor/execIndexing.c:223,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 207
    functionDepth: 5
    functionLinenumber: 207
    functionLinenumberEnd: 228
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 386
    functionsReached:
    - BuildIndexInfo
    - lfirst_oid
    - BuildSpeculativeIndexInfo
    - index_open
    linkageType: ''
    returnType: void
    signature: void foreach(l, indexoidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execIndexing.c:254,1
    - Dst: index_insert_cleanup
      Src: /src/postgres/src/backend/executor/execIndexing.c:257,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/execIndexing.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - resultRelInfo
    argTypes:
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 271
    functionName: ExecCloseIndices
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 4
    functionsReached:
    - Assert
    - index_close
    - index_insert_cleanup
    linkageType: ''
    returnType: void
    signature: void ExecCloseIndices(ResultRelInfo *resultRelInfo)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execIndexing.c:329,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/execIndexing.c:329,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execIndexing.c:340,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execIndexing.c:340,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execIndexing.c:346,1
    - Dst: ExecPrepareQual
      Src: /src/postgres/src/backend/executor/execIndexing.c:391,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/execIndexing.c:396,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/executor/execIndexing.c:404,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execIndexing.c:413,1
    - Dst: index_unchanged_by_update
      Src: /src/postgres/src/backend/executor/execIndexing.c:444,1
    - Dst: index_insert
      Src: /src/postgres/src/backend/executor/execIndexing.c:450,1
    - Dst: check_exclusion_or_unique_constraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:495,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/executor/execIndexing.c:512,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execIndexing.c:512,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 58
    argCount: 6
    argNames:
    - resultRelInfo
    - estate
    - flags
    - slot
    - arbiterIndexes
    - specConflict
    argTypes:
    - ResultRelInfo*
    - EState*
    - uint32
    - TupleTableSlot*
    - List*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 310
    functionDepth: 6
    functionLinenumber: 310
    functionLinenumberEnd: 519
    functionName: ExecInsertIndexTuples
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 0
    functionsReached:
    - index_insert
    - index_unchanged_by_update
    - Assert
    - GetPerTupleExprContext
    - ExecPrepareQual
    - ExecQual
    - FormIndexDatum
    - lappend_oid
    - check_exclusion_or_unique_constraint
    - list_member_oid
    - ItemPointerIsValid
    - RelationGetRelid
    linkageType: ''
    returnType: List
    signature: "List *\nExecInsertIndexTuples(ResultRelInfo *resultRelInfo,\n\t\t\t\t\t
      \ EState *estate,\n\t\t\t\t\t  uint32 flags,\n\t\t\t\t\t  TupleTableSlot *slot,\n\t\t\t\t\t
      \ List *arbiterIndexes,\n\t\t\t\t\t  bool *specConflict)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execIndexing.c:558,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execIndexing.c:559,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execIndexing.c:573,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execIndexing.c:602,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execIndexing.c:607,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execIndexing.c:608,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execIndexing.c:609,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:610,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:611,1
    - Dst: ExecPrepareQual
      Src: /src/postgres/src/backend/executor/execIndexing.c:627,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/execIndexing.c:632,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/executor/execIndexing.c:640,1
    - Dst: check_exclusion_or_unique_constraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:647,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execIndexing.c:657,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 39
    argCount: 6
    argNames:
    - resultRelInfo
    - slot
    - estate
    - conflictTid
    - tupleid
    - arbiterIndexes
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    - ItemPointer
    - ItemPointerData*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 542
    functionDepth: 3
    functionLinenumber: 542
    functionLinenumberEnd: 660
    functionName: ExecCheckIndexConstraints
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 0
    functionsReached:
    - errtableconstraint
    - elog
    - errcode
    - GetPerTupleExprContext
    - ereport
    - ExecPrepareQual
    - errmsg
    - RelationGetRelationName
    - ExecQual
    - ItemPointerSetInvalid
    - FormIndexDatum
    - check_exclusion_or_unique_constraint
    - list_member_oid
    linkageType: ''
    returnType: bool
    signature: "bool ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo, TupleTableSlot
      *slot,\n\t\t\t\t\t\t  EState *estate, ItemPointer conflictTid,\n\t\t\t\t\t\t
      \ const ItemPointerData *tupleid, List *arbiterIndexes)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/executor/execIndexing.c:717,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execIndexing.c:755,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execIndexing.c:756,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/executor/execIndexing.c:757,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execIndexing.c:761,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/executor/execIndexing.c:762,1
    - Dst: ExecWithoutOverlapsNotEmpty
      Src: /src/postgres/src/backend/executor/execIndexing.c:766,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/executor/execIndexing.c:792,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/execIndexing.c:796,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execIndexing.c:813,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execIndexing.c:815,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/execIndexing.c:826,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/execIndexing.c:829,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/executor/execIndexing.c:831,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/execIndexing.c:843,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/executor/execIndexing.c:844,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execIndexing.c:847,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:848,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/executor/execIndexing.c:857,1
    - Dst: index_recheck_constraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:863,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execIndexing.c:882,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execIndexing.c:885,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/executor/execIndexing.c:889,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/executor/execIndexing.c:889,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/execIndexing.c:893,1
    - Dst: SpeculativeInsertionWait
      Src: /src/postgres/src/backend/executor/execIndexing.c:895,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/executor/execIndexing.c:898,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/executor/execIndexing.c:915,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/executor/execIndexing.c:916,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execIndexing.c:919,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execIndexing.c:920,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execIndexing.c:921,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:922,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execIndexing.c:924,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execIndexing.c:926,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:927,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:928,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execIndexing.c:930,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execIndexing.c:931,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execIndexing.c:932,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:933,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execIndexing.c:935,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execIndexing.c:937,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:938,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:939,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/execIndexing.c:942,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execIndexing.c:954,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/executor/execIndexing.c:958,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 76
    argCount: 11
    argNames:
    - heap
    - index
    - indexInfo
    - tupleid
    - values
    - isnull
    - estate
    - newIndex
    - waitMode
    - violationOK
    - conflictTid
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - ItemPointerData*
    - Datum*
    - bool*
    - EState*
    - bool
    - CEOUC_WAIT_MODE
    - bool
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 704
    functionDepth: 4
    functionLinenumber: 704
    functionLinenumberEnd: 962
    functionName: check_exclusion_or_unique_constraint
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 2
    functionsReached:
    - SpeculativeInsertionWait
    - get_typtype
    - errcode
    - FormIndexDatum
    - RelationGetRelationName
    - elog
    - errtableconstraint
    - InitDirtySnapshot
    - index_recheck_constraint
    - RelationGetDescr
    - ItemPointerEquals
    - errmsg
    - ScanKeyEntryInitialize
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - BuildIndexValueDescription
    - lookup_type_cache
    - ExecWithoutOverlapsNotEmpty
    - ExecDropSingleTupleTableSlot
    - index_endscan
    - table_slot_create
    - ereport
    - XactLockTableWait
    - GetCurrentTransactionId
    - TupleDescAttr
    - ItemPointerIsValid
    - TransactionIdPrecedes
    - INJECTION_POINT
    - index_rescan
    - GetPerTupleExprContext
    - index_getnext_slot
    - errdetail
    - TransactionIdIsValid
    - index_beginscan
    linkageType: ''
    returnType: bool
    signature: "bool check_exclusion_or_unique_constraint(Relation heap, Relation
      index,\n\t\t\t\t\t\t\t\t\t IndexInfo *indexInfo,\n\t\t\t\t\t\t\t\t\t const ItemPointerData
      *tupleid,\n\t\t\t\t\t\t\t\t\t const Datum *values, const bool *isnull,\n\t\t\t\t\t\t\t\t\t
      EState *estate, bool newIndex,\n\t\t\t\t\t\t\t\t\t CEOUC_WAIT_MODE waitMode,\n\t\t\t\t\t\t\t\t\t
      bool violationOK,\n\t\t\t\t\t\t\t\t\t ItemPointer conflictTid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_exclusion_or_unique_constraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:977,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - heap
    - index
    - indexInfo
    - tupleid
    - values
    - isnull
    - estate
    - newIndex
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - ItemPointerData*
    - Datum*
    - bool*
    - EState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 970
    functionDepth: 5
    functionLinenumber: 970
    functionLinenumberEnd: 981
    functionName: check_exclusion_constraint
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 1
    functionsReached:
    - check_exclusion_or_unique_constraint
    linkageType: ''
    returnType: void
    signature: "void check_exclusion_constraint(Relation heap, Relation index,\n\t\t\t\t\t\t
      \  IndexInfo *indexInfo,\n\t\t\t\t\t\t   const ItemPointerData *tupleid,\n\t\t\t\t\t\t
      \  const Datum *values, const bool *isnull,\n\t\t\t\t\t\t   EState *estate,
      bool newIndex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/executor/execIndexing.c:992,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execIndexing.c:1001,1
    - Dst: OidFunctionCall2Coll
      Src: /src/postgres/src/backend/executor/execIndexing.c:1001,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - index
    - constr_procs
    - existing_values
    - existing_isnull
    - new_values
    argTypes:
    - Relation
    - Oid*
    - Datum*
    - bool*
    - Datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1009
    functionName: index_recheck_constraint
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - DatumGetBool
    - OidFunctionCall2Coll
    linkageType: ''
    returnType: bool
    signature: "bool index_recheck_constraint(Relation index, const Oid *constr_procs,\n\t\t\t\t\t\t
      const Datum *existing_values, const bool *existing_isnull,\n\t\t\t\t\t\t const
      Datum *new_values)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execIndexing.c:1046,1
    - Dst: ExecGetExtraUpdatedCols
      Src: /src/postgres/src/backend/executor/execIndexing.c:1047,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execIndexing.c:1062,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execIndexing.c:1064,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execIndexing.c:1094,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/executor/execIndexing.c:1104,1
    - Dst: index_expression_changed_walker
      Src: /src/postgres/src/backend/executor/execIndexing.c:1105,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execIndexing.c:1107,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execIndexing.c:1109,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 4
    argNames:
    - resultRelInfo
    - estate
    - indexInfo
    - indexRelation
    argTypes:
    - ResultRelInfo*
    - EState*
    - IndexInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1018
    functionDepth: 4
    functionLinenumber: 1018
    functionLinenumberEnd: 1125
    functionName: index_unchanged_by_update
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 1
    functionsReached:
    - RelationGetIndexExpressions
    - list_free
    - ExecGetExtraUpdatedCols
    - bms_is_member
    - bms_free
    - index_expression_changed_walker
    - ExecGetUpdatedCols
    - bms_union
    linkageType: ''
    returnType: bool
    signature: "bool index_unchanged_by_update(ResultRelInfo *resultRelInfo, EState
      *estate,\n\t\t\t\t\t\t  IndexInfo *indexInfo, Relation indexRelation)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execIndexing.c:1138,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execIndexing.c:1142,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/executor/execIndexing.c:1153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - node
    - allUpdatedCols
    argTypes:
    - Node*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1132
    functionDepth: 3
    functionLinenumber: 1132
    functionLinenumberEnd: 1155
    functionName: index_expression_changed_walker
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - bms_is_member
    linkageType: ''
    returnType: bool
    signature: bool index_expression_changed_walker(Node *node, Bitmapset *allUpdatedCols)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetRangeTypeP
      Src: /src/postgres/src/backend/executor/execIndexing.c:1171,1
    - Dst: RangeIsEmpty
      Src: /src/postgres/src/backend/executor/execIndexing.c:1172,1
    - Dst: DatumGetMultirangeTypeP
      Src: /src/postgres/src/backend/executor/execIndexing.c:1175,1
    - Dst: MultirangeIsEmpty
      Src: /src/postgres/src/backend/executor/execIndexing.c:1176,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execIndexing.c:1179,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/execIndexing.c:1180,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execIndexing.c:1185,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execIndexing.c:1186,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execIndexing.c:1187,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/execIndexing.c:1188,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:1188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - rel
    - attname
    - attval
    - typtype
    - atttypid
    argTypes:
    - Relation
    - NameData
    - Datum
    - char
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1161
    functionDepth: 2
    functionLinenumber: 1161
    functionLinenumberEnd: 1189
    functionName: ExecWithoutOverlapsNotEmpty
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 1
    functionsReached:
    - elog
    - errcode
    - RangeIsEmpty
    - ereport
    - DatumGetMultirangeTypeP
    - MultirangeIsEmpty
    - NameStr
    - errmsg
    - RelationGetRelationName
    - DatumGetRangeTypeP
    linkageType: ''
    returnType: void
    signature: void ExecWithoutOverlapsNotEmpty(Relation rel, NameData attname, Datum
      attval, char typtype, Oid atttypid)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/functions.c:257,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/functions.c:260,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/executor/functions.c:263,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/functions.c:263,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/functions.c:278,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/functions.c:279,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/executor/functions.c:287,1
    - Dst: get_call_expr_argtype
      Src: /src/postgres/src/backend/executor/functions.c:289,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:291,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:293,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:294,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/functions.c:312,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:316,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/functions.c:318,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:322,1
    - Dst: get_func_input_arg_names
      Src: /src/postgres/src/backend/executor/functions.c:324,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - procedureTuple
    - call_expr
    - inputCollation
    argTypes:
    - HeapTuple
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 335
    functionName: prepare_sql_fn_parse_info
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 4
    functionsReached:
    - palloc0_object
    - IsPolymorphicType
    - format_type_be
    - memcpy
    - errcode
    - get_call_expr_argtype
    - pstrdup
    - ereport
    - get_func_input_arg_names
    - GETSTRUCT
    - NameStr
    - palloc
    - errmsg
    - PointerGetDatum
    - SysCacheGetAttr
    linkageType: ''
    returnType: SQLFunctionParseInfoPtr
    signature: "SQLFunctionParseInfoPtr prepare_sql_fn_parse_info(HeapTuple procedureTuple,\n\t\t\t\t\t\t
      \ Node *call_expr,\n\t\t\t\t\t\t  Oid inputCollation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pstate
    - pinfo
    argTypes:
    - struct ParseState*
    - SQLFunctionParseInfoPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 348
    functionName: sql_fn_parser_setup
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sql_fn_parser_setup(struct ParseState *pstate, SQLFunctionParseInfoPtr
      pinfo)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:388,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:393,1
    - Dst: llast
      Src: /src/postgres/src/backend/executor/functions.c:393,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/functions.c:396,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/functions.c:397,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/functions.c:400,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/functions.c:401,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/executor/functions.c:411,1
    - Dst: sql_fn_resolve_param_name
      Src: /src/postgres/src/backend/executor/functions.c:414,1
    - Dst: lthird
      Src: /src/postgres/src/backend/executor/functions.c:416,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:417,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:417,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/executor/functions.c:419,1
    - Dst: sql_fn_resolve_param_name
      Src: /src/postgres/src/backend/executor/functions.c:425,1
    - Dst: sql_fn_resolve_param_name
      Src: /src/postgres/src/backend/executor/functions.c:435,1
    - Dst: sql_fn_resolve_param_name
      Src: /src/postgres/src/backend/executor/functions.c:441,1
    - Dst: ParseFuncOrColumn
      Src: /src/postgres/src/backend/executor/functions.c:454,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:455,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:456,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 3
    argNames:
    - pstate
    - cref
    - var
    argTypes:
    - ParseState*
    - ColumnRef*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 464
    functionName: sql_fn_post_column_ref
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lthird
    - linitial
    - Assert
    - list_make1
    - lsecond
    - llast
    - list_length
    - sql_fn_resolve_param_name
    - strVal
    - IsA
    - ParseFuncOrColumn
    linkageType: ''
    returnType: Node
    signature: 'Node *

      sql_fn_post_column_ref(ParseState *pstate, ColumnRef *cref, Node *var)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sql_fn_make_param
      Src: /src/postgres/src/backend/executor/functions.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - pstate
    - pref
    argTypes:
    - ParseState*
    - ParamRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 480
    functionName: sql_fn_param_ref
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - sql_fn_make_param
    linkageType: ''
    returnType: Node
    signature: 'Node *

      sql_fn_param_ref(ParseState *pstate, ParamRef *pref)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/functions.c:491,1
    - Dst: get_typcollation
      Src: /src/postgres/src/backend/executor/functions.c:496,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/functions.c:504,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/functions.c:504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - pinfo
    - paramno
    - location
    argTypes:
    - SQLFunctionParseInfoPtr
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 508
    functionName: sql_fn_make_param
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - OidIsValid
    - get_typcollation
    - makeNode
    linkageType: ''
    returnType: Node
    signature: "Node *\nsql_fn_make_param(SQLFunctionParseInfoPtr pinfo,\n\t\t\t\t
      \ int paramno, int location)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/executor/functions.c:526,1
    - Dst: sql_fn_make_param
      Src: /src/postgres/src/backend/executor/functions.c:527,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - pinfo
    - paramname
    - location
    argTypes:
    - SQLFunctionParseInfoPtr
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 515
    functionDepth: 2
    functionLinenumber: 515
    functionLinenumberEnd: 531
    functionName: sql_fn_resolve_param_name
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - sql_fn_make_param
    - strcmp
    linkageType: ''
    returnType: Node
    signature: "Node *\nsql_fn_resolve_param_name(SQLFunctionParseInfoPtr pinfo,\n\t\t\t\t\t\t
      \ const char *paramname, int location)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/executor/functions.c:553,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/executor/functions.c:557,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:591,1
    - Dst: cached_function_compile
      Src: /src/postgres/src/backend/executor/functions.c:602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:620,1
    - Dst: postquel_sub_params
      Src: /src/postgres/src/backend/executor/functions.c:633,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 2
    argNames:
    - fcinfo
    - lazyEvalOK
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 645
    functionName: init_sql_fcache
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - postquel_sub_params
    - Assert
    - cached_function_compile
    - MemoryContextRegisterResetCallback
    - MemoryContextAllocZero
    linkageType: ''
    returnType: SQLFunctionCache
    signature: 'SQLFunctionCache *

      init_sql_fcache(FunctionCallInfo fcinfo, bool lazyEvalOK)'
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:667,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:678,1
    - Dst: prepare_next_query
      Src: /src/postgres/src/backend/executor/functions.c:683,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/functions.c:688,1
    - Dst: GetCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:699,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:707,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/functions.c:712,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/executor/functions.c:715,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/functions.c:723,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:725,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:734,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:736,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:737,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:738,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:740,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:741,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:742,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:744,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/functions.c:745,1
    - Dst: CommandIsReadOnly
      Src: /src/postgres/src/backend/executor/functions.c:748,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:749,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:750,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:752,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/functions.c:753,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/functions.c:756,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:805,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/functions.c:809,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:810,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/functions.c:812,1
    - Dst: get_sql_fn_result_tlist
      Src: /src/postgres/src/backend/executor/functions.c:819,1
    - Dst: ExecInitJunkFilterConversion
      Src: /src/postgres/src/backend/executor/functions.c:830,1
    - Dst: ExecInitJunkFilter
      Src: /src/postgres/src/backend/executor/functions.c:834,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/functions.c:849,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:854,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/executor/functions.c:859,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 74
    argCount: 1
    argNames:
    - fcache
    argTypes:
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 653
    functionDepth: 3
    functionLinenumber: 653
    functionLinenumberEnd: 893
    functionName: init_execution_state
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - errcode
    - ExecInitJunkFilterConversion
    - CommandIsReadOnly
    - MemoryContextReset
    - foreach
    - MakeSingleTupleTableSlot
    - errmsg
    - list_length
    - prepare_next_query
    - ExecInitJunkFilter
    - GetCachedPlan
    - IsA
    - ereport
    - BlessTupleDesc
    - AllocSetContextCreate
    - repalloc_array
    - get_sql_fn_result_tlist
    - lfirst_node
    - ReleaseCachedPlan
    - type_is_rowtype
    - MemoryContextAlloc
    - MemoryContextSwitchTo
    - list_nth
    - foreach_current_index
    - CreateCommandName
    linkageType: ''
    returnType: bool
    signature: bool init_execution_state(SQLFunctionCachePtr fcache)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:910,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:911,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/functions.c:926,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/functions.c:928,1
    - Dst: CreateCachedPlanForQuery
      Src: /src/postgres/src/backend/executor/functions.c:929,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/executor/functions.c:931,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/executor/functions.c:932,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/executor/functions.c:933,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/functions.c:938,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/functions.c:940,1
    - Dst: CreateCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:941,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/executor/functions.c:943,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/executor/functions.c:944,1
    - Dst: check_sql_fn_statement
      Src: /src/postgres/src/backend/executor/functions.c:954,1
    - Dst: check_sql_stmt_retval
      Src: /src/postgres/src/backend/executor/functions.c:975,1
    - Dst: CompleteCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:985,1
    - Dst: SetPostRewriteHook
      Src: /src/postgres/src/backend/executor/functions.c:999,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1007,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:1008,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1009,1
    - Dst: SaveCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:1015,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/functions.c:1025,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - func
    argTypes:
    - SQLFunctionHashEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 900
    functionDepth: 6
    functionLinenumber: 900
    functionLinenumberEnd: 1028
    functionName: prepare_next_query
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - CreateCachedPlanForQuery
    - copyObject
    - check_sql_fn_statement
    - Assert
    - pg_analyze_and_rewrite_withcb
    - SaveCachedPlan
    - pg_rewrite_query
    - lappend
    - MemoryContextSwitchTo
    - list_nth_node
    - SetPostRewriteHook
    - MemoryContextDelete
    - AcquireRewriteLocks
    - check_sql_stmt_retval
    - list_length
    - CompleteCachedPlan
    - CreateCachedPlan
    - CreateCommandTag
    linkageType: ''
    returnType: void
    signature: void prepare_next_query(SQLFunctionHashEntry *func)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/functions.c:1048,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:1072,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:1080,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/executor/functions.c:1089,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/functions.c:1090,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/backend/executor/functions.c:1091,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/executor/functions.c:1097,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1102,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/functions.c:1103,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1104,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/functions.c:1108,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1125,1
    - Dst: prepare_sql_fn_parse_info
      Src: /src/postgres/src/backend/executor/functions.c:1126,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/executor/functions.c:1128,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1129,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/functions.c:1136,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/executor/functions.c:1138,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/executor/functions.c:1143,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/executor/functions.c:1144,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/functions.c:1145,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/functions.c:1148,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/executor/functions.c:1157,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/functions.c:1157,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:1158,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/functions.c:1159,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/functions.c:1159,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:1161,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/executor/functions.c:1167,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:1175,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:1184,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:1185,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:1186,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:1187,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:1188,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1191,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/functions.c:1192,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1193,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/executor/functions.c:1201,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 5
    argNames:
    - fcinfo
    - procedureTuple
    - hashkey
    - cfunc
    - forValidator
    argTypes:
    - FunctionCallInfo
    - HeapTuple
    - CachedFunctionHashKey*
    - CachedFunction*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1040
    functionDepth: 5
    functionLinenumber: 1040
    functionLinenumberEnd: 1205
    functionName: sql_compile_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - copyObject
    - get_typlenbyval
    - errcode
    - NameStr
    - MemoryContextSetIdentifier
    - linitial_node
    - CreateTupleDescCopy
    - errmsg
    - list_length
    - TextDatumGetCString
    - get_call_result_type
    - MemoryContextSetParent
    - prepare_sql_fn_parse_info
    - get_typlen
    - ereport
    - stringToNode
    - GETSTRUCT
    - AllocSetContextCreate
    - list_make1
    - SysCacheGetAttrNotNull
    - pg_parse_query
    - format_type_be
    - MemoryContextAlloc
    - castNode
    - MemoryContextStrdup
    - MemoryContextSwitchTo
    - errdetail
    - PG_GET_COLLATION
    - IsA
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: "void sql_compile_callback(FunctionCallInfo fcinfo,\n\t\t\t\t\t HeapTuple
      procedureTuple,\n\t\t\t\t\t const CachedFunctionHashKey *hashkey,\n\t\t\t\t\t
      CachedFunction *cfunc,\n\t\t\t\t\t bool forValidator)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/functions.c:1220,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/functions.c:1222,1
    - Dst: DropCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:1224,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/functions.c:1233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - cfunc
    argTypes:
    - CachedFunction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1213
    functionDepth: 1
    functionLinenumber: 1213
    functionLinenumberEnd: 1235
    functionName: sql_delete_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    - lfirst
    - DropCachedPlan
    - foreach
    linkageType: ''
    returnType: void
    signature: void sql_delete_callback(CachedFunction *cfunc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_sql_fn_statement
      Src: /src/postgres/src/backend/executor/functions.c:1251,1
    - Dst: check_sql_stmt_retval
      Src: /src/postgres/src/backend/executor/functions.c:1263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:1269,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:1270,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:1271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - querytree_list
    - arg
    argTypes:
    - List*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1243
    functionDepth: 1
    functionLinenumber: 1243
    functionLinenumberEnd: 1273
    functionName: sql_postrewrite_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - check_sql_fn_statement
    - errcode
    - ereport
    - errmsg
    - check_sql_stmt_retval
    linkageType: ''
    returnType: void
    signature: void sql_postrewrite_callback(List *querytree_list, void *arg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1285,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/executor/functions.c:1285,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:1300,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:1315,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1332,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1335,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/functions.c:1336,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1342,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/functions.c:1352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1355,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/functions.c:1360,1
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/executor/functions.c:1365,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1367,1
    - Dst: ExecutorStart
      Src: /src/postgres/src/backend/executor/functions.c:1390,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1395,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - es
    - fcache
    argTypes:
    - execution_state*
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1276
    functionDepth: 2
    functionLinenumber: 1276
    functionLinenumberEnd: 1396
    functionName: postquel_start
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - tuplestore_begin_heap
    - CreateDestReceiver
    - ExecutorStart
    - Assert
    - ActiveSnapshotSet
    - MemoryContextSwitchTo
    - GetActiveSnapshot
    - AllocSetContextCreate
    - CreateQueryDesc
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void postquel_start(execution_state *es, SQLFunctionCachePtr fcache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1407,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/executor/functions.c:1411,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/executor/functions.c:1426,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - es
    - fcache
    argTypes:
    - execution_state*
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1400
    functionDepth: 2
    functionLinenumber: 1400
    functionLinenumberEnd: 1438
    functionName: postquel_getnext
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - ExecutorRun
    - ProcessUtility
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: bool
    signature: bool postquel_getnext(execution_state *es, SQLFunctionCachePtr fcache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1447,1
    - Dst: ExecutorFinish
      Src: /src/postgres/src/backend/executor/functions.c:1455,1
    - Dst: ExecutorEnd
      Src: /src/postgres/src/backend/executor/functions.c:1456,1
    - Dst: execution_state*::qd::dest::rDestroy
      Src: /src/postgres/src/backend/executor/functions.c:1459,1
    - Dst: FreeQueryDesc
      Src: /src/postgres/src/backend/executor/functions.c:1461,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1464,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/functions.c:1468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - es
    - fcache
    argTypes:
    - execution_state*
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1441
    functionDepth: 2
    functionLinenumber: 1441
    functionLinenumberEnd: 1470
    functionName: postquel_end
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - ExecutorFinish
    - FreeQueryDesc
    - ExecutorEnd
    - MemoryContextSwitchTo
    - execution_state*::qd::dest::rDestroy
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void postquel_end(execution_state *es, SQLFunctionCachePtr fcache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1490,1
    - Dst: makeParamList
      Src: /src/postgres/src/backend/executor/functions.c:1491,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1493,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1498,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/functions.c:1518,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - fcache
    - fcinfo
    argTypes:
    - SQLFunctionCachePtr
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1473
    functionDepth: 1
    functionLinenumber: 1473
    functionLinenumberEnd: 1528
    functionName: postquel_sub_params
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - Assert
    - makeParamList
    - MakeExpandedObjectReadOnly
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void postquel_sub_params(SQLFunctionCachePtr fcache,\n\t\t\t\t\tFunctionCallInfo
      fcinfo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotHeapTupleDatum
      Src: /src/postgres/src/backend/executor/functions.c:1553,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/functions.c:1561,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/functions.c:1564,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/functions.c:1568,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - slot
    - fcinfo
    - fcache
    argTypes:
    - TupleTableSlot*
    - FunctionCallInfo
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1536
    functionDepth: 2
    functionLinenumber: 1536
    functionLinenumberEnd: 1571
    functionName: postquel_get_single_result
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - datumCopy
    - ExecClearTuple
    - slot_getattr
    - ExecFetchSlotHeapTupleDatum
    linkageType: ''
    returnType: Datum
    signature: "Datum postquel_get_single_result(TupleTableSlot *slot,\n\t\t\t\t\t\t
      \  FunctionCallInfo fcinfo,\n\t\t\t\t\t\t   SQLFunctionCachePtr fcache)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:1600,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:1603,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:1604,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:1605,1
    - Dst: init_sql_fcache
      Src: /src/postgres/src/backend/executor/functions.c:1622,1
    - Dst: init_execution_state
      Src: /src/postgres/src/backend/executor/functions.c:1650,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/executor/functions.c:1685,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1688,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1688,1
    - Dst: UpdateActiveSnapshotCommandId
      Src: /src/postgres/src/backend/executor/functions.c:1692,1
    - Dst: postquel_start
      Src: /src/postgres/src/backend/executor/functions.c:1695,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1700,1
    - Dst: postquel_getnext
      Src: /src/postgres/src/backend/executor/functions.c:1704,1
    - Dst: postquel_end
      Src: /src/postgres/src/backend/executor/functions.c:1716,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1744,1
    - Dst: init_execution_state
      Src: /src/postgres/src/backend/executor/functions.c:1748,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1771,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1773,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/functions.c:1773,1
    - Dst: postquel_get_single_result
      Src: /src/postgres/src/backend/executor/functions.c:1775,1
    - Dst: RegisterExprContextCallback
      Src: /src/postgres/src/backend/executor/functions.c:1788,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:1790,1
    - Dst: UnregisterExprContextCallback
      Src: /src/postgres/src/backend/executor/functions.c:1808,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:1810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1825,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/functions.c:1831,1
    - Dst: UnregisterExprContextCallback
      Src: /src/postgres/src/backend/executor/functions.c:1839,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:1841,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/functions.c:1855,1
    - Dst: postquel_get_single_result
      Src: /src/postgres/src/backend/executor/functions.c:1856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1866,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1874,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 116
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1576
    functionDepth: 5
    functionLinenumber: 1576
    functionLinenumberEnd: 1889
    functionName: fmgr_sql
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - errcode
    - TTS_EMPTY
    - postquel_get_single_result
    - postquel_end
    - Assert
    - CreateTupleDescCopy
    - CommandCounterIncrement
    - errmsg
    - PointerGetDatum
    - RegisterExprContextCallback
    - postquel_start
    - ereport
    - GetTransactionSnapshot
    - UnregisterExprContextCallback
    - init_sql_fcache
    - UpdateActiveSnapshotCommandId
    - init_execution_state
    - PushActiveSnapshot
    - IsA
    - postquel_getnext
    linkageType: ''
    returnType: Datum
    signature: Datum fmgr_sql(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geterrposition
      Src: /src/postgres/src/backend/executor/functions.c:1911,1
    - Dst: errposition
      Src: /src/postgres/src/backend/executor/functions.c:1914,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/executor/functions.c:1915,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/executor/functions.c:1916,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/executor/functions.c:1923,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1895
    functionDepth: 1
    functionLinenumber: 1895
    functionLinenumberEnd: 1924
    functionName: sql_compile_error_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - internalerrposition
    - errcontext
    - geterrposition
    - errposition
    - internalerrquery
    linkageType: ''
    returnType: void
    signature: void sql_compile_error_callback(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geterrposition
      Src: /src/postgres/src/backend/executor/functions.c:1938,1
    - Dst: errposition
      Src: /src/postgres/src/backend/executor/functions.c:1941,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/executor/functions.c:1942,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/executor/functions.c:1943,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/executor/functions.c:1951,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/executor/functions.c:1954,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1955
      start: 1929
    functionDepth: 1
    functionLinenumber: 1929
    functionLinenumberEnd: 1955
    functionName: sql_exec_error_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - internalerrposition
    - errcontext
    - geterrposition
    - errposition
    - internalerrquery
    linkageType: ''
    returnType: void
    signature: void sql_exec_error_callback(void *arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/functions.c:1970,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1981,1
    - Dst: postquel_end
      Src: /src/postgres/src/backend/executor/functions.c:1983,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1986,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/functions.c:1994,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:1999,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2004
      start: 1967
    functionDepth: 3
    functionLinenumber: 1967
    functionLinenumberEnd: 2004
    functionName: ShutdownSQLFunction
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - postquel_end
    - tuplestore_end
    - PushActiveSnapshot
    - ReleaseCachedPlan
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ShutdownSQLFunction(Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:2022,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2027
      start: 2014
    functionDepth: 1
    functionLinenumber: 2014
    functionLinenumberEnd: 2027
    functionName: RemoveSQLFunctionCache
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void RemoveSQLFunctionCache(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:2043,1
    - Dst: check_sql_fn_statement
      Src: /src/postgres/src/backend/executor/functions.c:2045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - queryTreeLists
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 2035
    functionDepth: 1
    functionLinenumber: 2035
    functionLinenumberEnd: 2047
    functionName: check_sql_fn_statements
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - check_sql_fn_statement
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void check_sql_fn_statements(List *queryTreeLists)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:2043,1
    - Dst: check_sql_fn_statement
      Src: /src/postgres/src/backend/executor/functions.c:2045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 2041
    functionDepth: 1
    functionLinenumber: 2041
    functionLinenumberEnd: 2046
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 388
    functionsReached:
    - check_sql_fn_statement
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, queryTreeLists)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:2059,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:2069,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2074,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2075,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2076,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - queryTreeList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2079
      start: 2052
    functionDepth: 1
    functionLinenumber: 2052
    functionLinenumberEnd: 2079
    functionName: check_sql_fn_statement
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 4
    functionsReached:
    - errcode
    - ereport
    - errmsg
    - IsA
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void check_sql_fn_statement(List *queryTreeList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:2059,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:2069,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2074,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2075,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2076,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 2057
    functionDepth: 1
    functionLinenumber: 2057
    functionLinenumberEnd: 2078
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 388
    functionsReached:
    - errcode
    - ereport
    - errmsg
    - IsA
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, queryTreeList)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: llast_node
      Src: /src/postgres/src/backend/executor/functions.c:2137,1
    - Dst: check_sql_stmt_retval
      Src: /src/postgres/src/backend/executor/functions.c:2141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - queryTreeLists
    - rettype
    - rettupdesc
    - prokind
    - insertDroppedCols
    argTypes:
    - List*
    - Oid
    - TupleDesc
    - char
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2116
    functionDepth: 1
    functionLinenumber: 2116
    functionLinenumberEnd: 2144
    functionName: check_sql_fn_retval
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 3
    functionsReached:
    - llast_node
    - check_sql_stmt_retval
    linkageType: ''
    returnType: bool
    signature: "bool check_sql_fn_retval(List *queryTreeLists,\n\t\t\t\t\tOid rettype,
      TupleDesc rettupdesc,\n\t\t\t\t\tchar prokind,\n\t\t\t\t\tbool insertDroppedCols)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:2182,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2223,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2224,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2225,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2226,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2227,1
    - Dst: ExecCleanTargetListLength
      Src: /src/postgres/src/backend/executor/functions.c:2244,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/executor/functions.c:2246,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2261,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2262,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2263,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2264,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2265,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/functions.c:2268,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:2269,1
    - Dst: coerce_fn_result_column
      Src: /src/postgres/src/backend/executor/functions.c:2271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2277,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2278,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2279,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2280,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/functions.c:2280,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/functions.c:2322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:2324,1
    - Dst: coerce_fn_result_column
      Src: /src/postgres/src/backend/executor/functions.c:2325,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/functions.c:2354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2365,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2367,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2368,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2369,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/functions.c:2370,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/executor/functions.c:2376,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2383,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2384,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:2385,1
    - Dst: coerce_fn_result_column
      Src: /src/postgres/src/backend/executor/functions.c:2393,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2398,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2400,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2401,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2402,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2403,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/functions.c:2403,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2404,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/functions.c:2411,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2414,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2415,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2416,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/executor/functions.c:2422,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2429,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2430,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:2431,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2442,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2443,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2444,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:2462,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/functions.c:2465,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/functions.c:2473,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/functions.c:2475,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2479,1
    - Dst: makeString
      Src: /src/postgres/src/backend/executor/functions.c:2480,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/functions.c:2484,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/executor/functions.c:2487,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:2491,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/functions.c:2493,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/executor/functions.c:2495,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:2495,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/functions.c:2504,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 103
    argCount: 5
    argNames:
    - queryTreeList
    - rettype
    - rettupdesc
    - prokind
    - insertDroppedCols
    argTypes:
    - List*
    - Oid
    - TupleDesc
    - char
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2508
      start: 2150
    functionDepth: 6
    functionLinenumber: 2150
    functionLinenumberEnd: 2508
    functionName: check_sql_stmt_retval
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 3
    functionsReached:
    - get_typtype
    - errcode
    - exprType
    - makeAlias
    - makeConst
    - foreach
    - Assert
    - linitial
    - coerce_fn_result_column
    - errmsg
    - list_length
    - ExecCleanTargetListLength
    - makeTargetEntry
    - makeString
    - lappend
    - ereport
    - lfirst
    - list_make1
    - TupleDescCompactAttr
    - TupleDescAttr
    - lfirst_node
    - format_type_be
    - makeNode
    - errdetail
    - makeFromExpr
    linkageType: ''
    returnType: bool
    signature: "bool check_sql_stmt_retval(List *queryTreeList,\n\t\t\t\t\t  Oid rettype,
      TupleDesc rettupdesc,\n\t\t\t\t\t  char prokind, bool insertDroppedCols)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:2182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2180
    functionDepth: 1
    functionLinenumber: 2180
    functionLinenumberEnd: 2189
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 389
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, queryTreeList)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/functions.c:2354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2365,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2367,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2368,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2369,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/functions.c:2370,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/executor/functions.c:2376,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2383,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2384,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:2385,1
    - Dst: coerce_fn_result_column
      Src: /src/postgres/src/backend/executor/functions.c:2393,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2398,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2400,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2401,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2402,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2403,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/functions.c:2403,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2404,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2406
      start: 2352
    functionDepth: 6
    functionLinenumber: 2352
    functionLinenumberEnd: 2406
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 389
    functionsReached:
    - format_type_be
    - errcode
    - exprType
    - makeTargetEntry
    - coerce_fn_result_column
    - lappend
    - ereport
    - lfirst
    - errmsg
    - errdetail
    - list_length
    - makeConst
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tlist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/executor/functions.c:2541,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/functions.c:2543,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/backend/executor/functions.c:2550,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2553,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2558,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/executor/functions.c:2560,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/backend/executor/functions.c:2569,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2575,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:2576,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2578,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 6
    argNames:
    - src_tle
    - res_type
    - res_typmod
    - tlist_is_modifiable
    - upper_tlist
    - upper_tlist_nontrivial
    argTypes:
    - TargetEntry*
    - Oid
    - int32
    - bool
    - List**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2520
    functionDepth: 6
    functionLinenumber: 2520
    functionLinenumberEnd: 2580
    functionName: coerce_fn_result_column
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 2
    functionsReached:
    - coerce_to_target_type
    - exprType
    - makeVarFromTargetEntry
    - makeTargetEntry
    - lappend
    - assign_expr_collations
    - list_length
    linkageType: ''
    returnType: bool
    signature: "bool coerce_fn_result_column(TargetEntry *src_tle,\n\t\t\t\t\t\tOid
      res_type,\n\t\t\t\t\t\tint32 res_typmod,\n\t\t\t\t\t\tbool tlist_is_modifiable,\n\t\t\t\t\t\tList
      **upper_tlist,\n\t\t\t\t\t\tbool *upper_tlist_nontrivial)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:2594,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 9
    argCount: 1
    argNames:
    - queryTreeList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2611
      start: 2586
    functionDepth: 1
    functionLinenumber: 2586
    functionLinenumberEnd: 2611
    functionName: get_sql_fn_result_tlist
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: List
    signature: 'List *

      get_sql_fn_result_tlist(List *queryTreeList)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:2594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2598
      start: 2592
    functionDepth: 1
    functionLinenumber: 2592
    functionLinenumberEnd: 2598
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 389
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, queryTreeList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/functions.c:2620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2631
      start: 2617
    functionDepth: 0
    functionLinenumber: 2617
    functionLinenumberEnd: 2631
    functionName: CreateSQLFunctionDestReceiver
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: DestReceiver
    signature: 'DestReceiver *

      CreateSQLFunctionDestReceiver(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2640
      start: 2636
    functionDepth: 0
    functionLinenumber: 2636
    functionLinenumberEnd: 2640
    functionName: sqlfunction_startup
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sqlfunction_startup(DestReceiver *self, int operation, TupleDesc
      typeinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecFilterJunk
      Src: /src/postgres/src/backend/executor/functions.c:2655,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/functions.c:2658,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/functions.c:2666,1
    - Dst: ExecFilterJunk
      Src: /src/postgres/src/backend/executor/functions.c:2669,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:2670,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/functions.c:2673,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2678
      start: 2645
    functionDepth: 1
    functionLinenumber: 2645
    functionLinenumberEnd: 2678
    functionName: sqlfunction_receive
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecFilterJunk
    - TTS_EMPTY
    - ExecMaterializeSlot
    - tuplestore_puttupleslot
    linkageType: ''
    returnType: bool
    signature: bool sqlfunction_receive(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2687
      start: 2683
    functionDepth: 0
    functionLinenumber: 2683
    functionLinenumberEnd: 2687
    functionName: sqlfunction_shutdown
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sqlfunction_shutdown(DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/functions.c:2695,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2696
      start: 2692
    functionDepth: 0
    functionLinenumber: 2692
    functionLinenumberEnd: 2696
    functionName: sqlfunction_destroy
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void sqlfunction_destroy(DestReceiver *self)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:110,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:110,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:112,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:113,1
    - Dst: BitmapShouldInitializeSharedState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:115,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:121,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:121,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:122,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:123,1
    - Dst: tbm_prepare_shared_iterate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:130,1
    - Dst: BitmapDoneInitializingSharedState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:133,1
    - Dst: tbm_begin_iterate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:136,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:149,1
    - Dst: table_beginscan_bm
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:156,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 165
    functionName: BitmapTableScanSetup
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - elog
    - ScanRelIsReadOnly
    - BitmapShouldInitializeSharedState
    - outerPlanState
    - MultiExecProcNode
    - table_beginscan_bm
    - tbm_begin_iterate
    - IsA
    - tbm_prepare_shared_iterate
    - BitmapDoneInitializingSharedState
    linkageType: ''
    returnType: void
    signature: void BitmapTableScanSetup(BitmapHeapScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BitmapTableScanSetup
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:184,1
    - Dst: table_scan_bitmap_next_tuple
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:186,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:194,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:203,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:206,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:207,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:219,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 173
    functionDepth: 4
    functionLinenumber: 173
    functionLinenumberEnd: 220
    functionName: BitmapHeapNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - BitmapTableScanSetup
    - CHECK_FOR_INTERRUPTS
    - table_scan_bitmap_next_tuple
    - ExecQualAndReset
    - ExecClearTuple
    - InstrCountFiltered2
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      BitmapHeapNext(BitmapHeapScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:231,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:233,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelBitmapHeapState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 235
    functionName: BitmapDoneInitializingSharedState
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 1
    functionsReached:
    - SpinLockAcquire
    - ConditionVariableBroadcast
    - SpinLockRelease
    linkageType: ''
    returnType: void
    signature: void BitmapDoneInitializingSharedState(ParallelBitmapHeapState *pstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - BitmapHeapScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 240
    functionDepth: 4
    functionLinenumber: 240
    functionLinenumberEnd: 253
    functionName: BitmapHeapRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - ExecQualAndReset
    linkageType: ''
    returnType: bool
    signature: bool BitmapHeapRecheck(BitmapHeapScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:262,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 267
    functionName: ExecBitmapHeapScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecBitmapHeapScan(PlanState *pstate)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:276,1
    - Dst: tbm_exhausted
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:286,1
    - Dst: tbm_end_iterate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:287,1
    - Dst: table_rescan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:290,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:295,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:300,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:307,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 308
    functionName: ExecReScanBitmapHeapScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - table_rescan
    - tbm_exhausted
    - tbm_end_iterate
    - tbm_free
    - outerPlanState
    - ExecReScan
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanBitmapHeapScan(BitmapHeapScanState *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:328,1
    - Dst: AccumulateIOStats
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:345,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:358,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:358,1
    - Dst: tbm_exhausted
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:366,1
    - Dst: tbm_end_iterate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:367,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:372,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:379,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 380
    functionName: ExecEndBitmapHeapScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - tbm_exhausted
    - tbm_end_iterate
    - tbm_free
    - outerPlanState
    - ExecEndNode
    - AccumulateIOStats
    - IsParallelWorker
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void ExecEndBitmapHeapScan(BitmapHeapScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:395,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:401,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:401,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:406,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:414,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:425,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:430,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:435,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:435,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:435,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:440,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:441,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:442,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:448,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:449,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:455,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - BitmapHeapScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 388
    functionDepth: 2
    functionLinenumber: 388
    functionLinenumberEnd: 465
    functionName: ExecInitBitmapHeapScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - table_slot_callbacks
    - ExecAssignExprContext
    - Assert
    - RelationGetDescr
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - makeNode
    - ExecAssignScanProjectionInfo
    - outerPlanState
    - memset
    - IsMVCCSnapshot
    - ExecInitQual
    - outerPlan
    - ExecOpenScanRelation
    linkageType: ''
    returnType: BitmapHeapScanState
    signature: 'BitmapHeapScanState *

      ExecInitBitmapHeapScan(BitmapHeapScan *node, EState *estate, int eflags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:483,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:487,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:494,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:497,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelBitmapHeapState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 476
    functionDepth: 2
    functionLinenumber: 476
    functionLinenumberEnd: 500
    functionName: BitmapShouldInitializeSharedState
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 1
    functionsReached:
    - ConditionVariableSleep
    - SpinLockAcquire
    - ConditionVariableCancelSleep
    - SpinLockRelease
    linkageType: ''
    returnType: bool
    signature: bool BitmapShouldInitializeSharedState(ParallelBitmapHeapState *pstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:513,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:514,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 516
    functionName: ExecBitmapHeapEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapEstimate(BitmapHeapScanState *node,\n\t\t\t\t\t
      \  ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:536,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:537,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:542,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:545,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 524
    functionDepth: 2
    functionLinenumber: 524
    functionLinenumberEnd: 549
    functionName: ExecBitmapHeapInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - SpinLockInit
    - shm_toc_insert
    - MAXALIGN
    - ConditionVariableInit
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapInitializeDSM(BitmapHeapScanState *node,\n\t\t\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:570,1
    - Dst: tbm_free_shared_area
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:571,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 557
    functionDepth: 3
    functionLinenumber: 557
    functionLinenumberEnd: 574
    functionName: ExecBitmapHeapReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - tbm_free_shared_area
    - DsaPointerIsValid
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapReInitializeDSM(BitmapHeapScanState *node,\n\t\t\t\t\t\t\t
      \ ParallelContext *pcxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:586,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 590
    functionName: ExecBitmapHeapInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapInitializeWorker(BitmapHeapScanState *node,\n\t\t\t\t\t\t\t
      \  ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:605,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:606,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:607,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 609
    functionName: ExecBitmapHeapInstrumentEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapInstrumentEstimate(BitmapHeapScanState *node,\n\t\t\t\t\t\t\t\t
      ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:623,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:624,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:626,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:629,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 614
    functionDepth: 1
    functionLinenumber: 614
    functionLinenumberEnd: 635
    functionName: ExecBitmapHeapInstrumentInitDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapInstrumentInitDSM(BitmapHeapScanState *node,\n\t\t\t\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 652
    functionName: ExecBitmapHeapInstrumentInitWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapInstrumentInitWorker(BitmapHeapScanState *node,\n\t\t\t\t\t\t\t\t
      \  ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:672,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 660
    functionDepth: 0
    functionLinenumber: 660
    functionLinenumberEnd: 674
    functionName: ExecBitmapHeapRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecBitmapHeapRetrieveInstrumentation(BitmapHeapScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:51,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:51,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - WorkTableScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 61
    functionName: WorkTableScanNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeWorktablescan.c
    functionUses: 0
    functionsReached:
    - Assert
    - tuplestore_gettupleslot
    - ScanDirectionIsForward
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      WorkTableScanNext(WorkTableScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - WorkTableScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: WorkTableScanRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeWorktablescan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool WorkTableScanRecheck(WorkTableScanState *node, TupleTableSlot
      *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:84,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:99,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:100,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:101,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:102,1
    - Dst: ExecAssignScanType
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:110,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:111,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:117,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 123
    functionName: ExecWorkTableScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeWorktablescan.c
    functionUses: 0
    functionsReached:
    - ExecGetResultType
    - ExecAssignScanType
    - Assert
    - castNode
    - ExecAssignScanProjectionInfo
    - ExecScan
    - DatumGetPointer
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecWorkTableScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:136,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:141,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:142,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:142,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:147,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:158,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:163,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:169,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - WorkTableScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 183
    functionName: ExecInitWorkTableScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeWorktablescan.c
    functionUses: 0
    functionsReached:
    - ExecAssignExprContext
    - Assert
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - makeNode
    - ExecInitQual
    - outerPlan
    - innerPlan
    linkageType: ''
    returnType: WorkTableScanState
    signature: 'WorkTableScanState *

      ExecInitWorkTableScan(WorkTableScan *node, EState *estate, int eflags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:195,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:197,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - WorkTableScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 202
    functionName: ExecReScanWorkTableScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeWorktablescan.c
    functionUses: 0
    functionsReached:
    - ExecScanReScan
    - tuplestore_rescan
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanWorkTableScan(WorkTableScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/executor/execMain.c:134,1
    - Dst: standard_ExecutorStart
      Src: /src/postgres/src/backend/executor/execMain.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - queryDesc
    - eflags
    argTypes:
    - QueryDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 140
    functionName: ExecutorStart
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 4
    functionsReached:
    - standard_ExecutorStart
    - pgstat_report_query_id
    linkageType: ''
    returnType: void
    signature: void ExecutorStart(QueryDesc *queryDesc, int eflags)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:153,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:153,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/executor/execMain.c:170,1
    - Dst: ExecCheckXactReadOnly
      Src: /src/postgres/src/backend/executor/execMain.c:172,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/executor/execMain.c:177,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:180,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:192,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:198,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execMain.c:219,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execMain.c:235,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:239,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:247,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:258,1
    - Dst: InstrAlloc
      Src: /src/postgres/src/backend/executor/execMain.c:260,1
    - Dst: AfterTriggerBeginQuery
      Src: /src/postgres/src/backend/executor/execMain.c:267,1
    - Dst: InitPlan
      Src: /src/postgres/src/backend/executor/execMain.c:272,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:274,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 2
    argNames:
    - queryDesc
    - eflags
    argTypes:
    - QueryDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 275
    functionName: standard_ExecutorStart
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_array
    - CreateExecutorState
    - Assert
    - InitPlan
    - MemoryContextSwitchTo
    - AfterTriggerBeginQuery
    - RegisterSnapshot
    - ExecCheckXactReadOnly
    - IsInParallelMode
    - GetActiveSnapshot
    - InstrAlloc
    - list_length
    - GetCurrentCommandId
    linkageType: ''
    returnType: void
    signature: void standard_ExecutorStart(QueryDesc *queryDesc, int eflags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: standard_ExecutorRun
      Src: /src/postgres/src/backend/executor/execMain.c:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - queryDesc
    - direction
    - count
    argTypes:
    - QueryDesc*
    - ScanDirection
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 315
    functionName: ExecutorRun
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 4
    functionsReached:
    - standard_ExecutorRun
    linkageType: ''
    returnType: void
    signature: "void ExecutorRun(QueryDesc *queryDesc,\n\t\t\tScanDirection direction,
      uint64 count)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:336,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:336,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:341,1
    - Dst: InstrStart
      Src: /src/postgres/src/backend/executor/execMain.c:345,1
    - Dst: DestReceiver*::rStartup
      Src: /src/postgres/src/backend/executor/execMain.c:362,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/executor/execMain.c:376,1
    - Dst: ExecutePlan
      Src: /src/postgres/src/backend/executor/execMain.c:377,1
    - Dst: DestReceiver*::rShutdown
      Src: /src/postgres/src/backend/executor/execMain.c:394,1
    - Dst: InstrStop
      Src: /src/postgres/src/backend/executor/execMain.c:397,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:399,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - queryDesc
    - direction
    - count
    argTypes:
    - QueryDesc*
    - ScanDirection
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 400
    functionName: standard_ExecutorRun
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - ScanDirectionIsNoMovement
    - InstrStart
    - DestReceiver*::rShutdown
    - Assert
    - DestReceiver*::rStartup
    - ExecutePlan
    - MemoryContextSwitchTo
    - InstrStop
    - GetActiveSnapshot
    linkageType: ''
    returnType: void
    signature: "void standard_ExecutorRun(QueryDesc *queryDesc,\n\t\t\t\t\t ScanDirection
      direction, uint64 count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: standard_ExecutorFinish
      Src: /src/postgres/src/backend/executor/execMain.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 423
    functionName: ExecutorFinish
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 3
    functionsReached:
    - standard_ExecutorFinish
    linkageType: ''
    returnType: void
    signature: void ExecutorFinish(QueryDesc *queryDesc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:436,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:440,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:443,1
    - Dst: InstrStart
      Src: /src/postgres/src/backend/executor/execMain.c:447,1
    - Dst: ExecPostprocessPlan
      Src: /src/postgres/src/backend/executor/execMain.c:450,1
    - Dst: AfterTriggerEndQuery
      Src: /src/postgres/src/backend/executor/execMain.c:454,1
    - Dst: InstrStop
      Src: /src/postgres/src/backend/executor/execMain.c:457,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 462
    functionName: standard_ExecutorFinish
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - InstrStart
    - Assert
    - MemoryContextSwitchTo
    - InstrStop
    - AfterTriggerEndQuery
    - ExecPostprocessPlan
    linkageType: ''
    returnType: void
    signature: void standard_ExecutorFinish(QueryDesc *queryDesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: standard_ExecutorEnd
      Src: /src/postgres/src/backend/executor/execMain.c:482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 483
    functionName: ExecutorEnd
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 3
    functionsReached:
    - standard_ExecutorEnd
    linkageType: ''
    returnType: void
    signature: void ExecutorEnd(QueryDesc *queryDesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:492,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:496,1
    - Dst: pgstat_update_parallel_workers_stats
      Src: /src/postgres/src/backend/executor/execMain.c:499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:507,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:513,1
    - Dst: ExecEndPlan
      Src: /src/postgres/src/backend/executor/execMain.c:515,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:518,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:519,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:524,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/executor/execMain.c:530,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 537
    functionName: standard_ExecutorEnd
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - Assert
    - pgstat_update_parallel_workers_stats
    - MemoryContextSwitchTo
    - ExecEndPlan
    - FreeExecutorState
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void standard_ExecutorEnd(QueryDesc *queryDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:553,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:557,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:560,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:565,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/execMain.c:570,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 573
    functionName: ExecutorRewind
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecReScan
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void ExecutorRewind(QueryDesc *queryDesc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execMain.c:605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:615,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execMain.c:619,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:621,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:621,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execMain.c:622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:627,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/execMain.c:627,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:627,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execMain.c:632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:634,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:634,1
    - Dst: ExecCheckOneRelPerms
      Src: /src/postgres/src/backend/executor/execMain.c:635,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execMain.c:639,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/executor/execMain.c:640,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/executor/execMain.c:640,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/executor/execMain.c:641,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - rangeTable
    - rteperminfos
    - ereport_on_violation
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 650
    functionName: ExecCheckPermissions
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecCheckOneRelPerms
    - OidIsValid
    - bms_is_member
    - bms_num_members
    - get_relkind_objtype
    - getRTEPermissionInfo
    - get_rel_relkind
    - get_rel_name
    - aclcheck_error
    - list_length
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: bool
    signature: "bool ExecCheckPermissions(List *rangeTable, List *rteperminfos,\n\t\t\t\t\t
      bool ereport_on_violation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execMain.c:605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:615,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execMain.c:619,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:621,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:621,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execMain.c:622,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 603
    functionDepth: 3
    functionLinenumber: 603
    functionLinenumberEnd: 624
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 389
    functionsReached:
    - Assert
    - bms_is_member
    - getRTEPermissionInfo
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, rangeTable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execMain.c:632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:634,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:634,1
    - Dst: ExecCheckOneRelPerms
      Src: /src/postgres/src/backend/executor/execMain.c:635,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execMain.c:639,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/executor/execMain.c:640,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/executor/execMain.c:640,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/executor/execMain.c:641,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 644
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 389
    functionsReached:
    - Assert
    - ExecCheckOneRelPerms
    - get_relkind_objtype
    - get_rel_relkind
    - get_rel_name
    - aclcheck_error
    - OidIsValid
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, rteperminfos)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:666,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:676,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execMain.c:677,1
    - Dst: pg_class_aclmask
      Src: /src/postgres/src/backend/executor/execMain.c:684,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execMain.c:711,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/executor/execMain.c:713,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execMain.c:718,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/executor/execMain.c:726,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/executor/execMain.c:732,1
    - Dst: ExecCheckPermissionsModified
      Src: /src/postgres/src/backend/executor/execMain.c:744,1
    - Dst: ExecCheckPermissionsModified
      Src: /src/postgres/src/backend/executor/execMain.c:751,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 1
    argNames:
    - perminfo
    argTypes:
    - RTEPermissionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 656
    functionDepth: 3
    functionLinenumber: 656
    functionLinenumberEnd: 758
    functionName: ExecCheckOneRelPerms
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 3
    functionsReached:
    - GetUserId
    - pg_attribute_aclcheck
    - Assert
    - bms_next_member
    - pg_attribute_aclcheck_all
    - OidIsValid
    - ExecCheckPermissionsModified
    - bms_is_empty
    - pg_class_aclmask
    linkageType: ''
    returnType: bool
    signature: bool ExecCheckOneRelPerms(RTEPermissionInfo *perminfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execMain.c:776,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/executor/execMain.c:778,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execMain.c:783,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:791,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/executor/execMain.c:795,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - relOid
    - userid
    - modifiedCols
    - requiredPerms
    argTypes:
    - Oid
    - Oid
    - Bitmapset*
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 765
    functionDepth: 3
    functionLinenumber: 765
    functionLinenumberEnd: 801
    functionName: ExecCheckPermissionsModified
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - elog
    - pg_attribute_aclcheck
    - pg_attribute_aclcheck_all
    - bms_next_member
    - bms_is_empty
    linkageType: ''
    returnType: bool
    signature: "bool ExecCheckPermissionsModified(Oid relOid, Oid userid, Bitmapset
      *modifiedCols,\n\t\t\t\t\t\t\t AclMode requiredPerms)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:821,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execMain.c:823,1
    - Dst: isTempNamespace
      Src: /src/postgres/src/backend/executor/execMain.c:828,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/executor/execMain.c:828,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/executor/execMain.c:831,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/execMain.c:831,1
    - Dst: PreventCommandIfParallelMode
      Src: /src/postgres/src/backend/executor/execMain.c:835,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/execMain.c:835,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - plannedstmt
    argTypes:
    - PlannedStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 836
    functionName: ExecCheckXactReadOnly
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - foreach
    - get_rel_namespace
    - isTempNamespace
    - PreventCommandIfReadOnly
    - PreventCommandIfParallelMode
    - CreateCommandName
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void ExecCheckXactReadOnly(PlannedStmt *plannedstmt)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ExecCheckPermissions
      Src: /src/postgres/src/backend/executor/execMain.c:862,1
    - Dst: ExecInitRangeTable
      Src: /src/postgres/src/backend/executor/execMain.c:867,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execMain.c:868,1
    - Dst: ExecDoInitialPruning
      Src: /src/postgres/src/backend/executor/execMain.c:882,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:890,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:891,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:893,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/execMain.c:894,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:908,1
    - Dst: ExecGetRangeTableRelation
      Src: /src/postgres/src/backend/executor/execMain.c:922,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:929,1
    - Dst: CheckValidRowMarkRel
      Src: /src/postgres/src/backend/executor/execMain.c:936,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execMain.c:938,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execMain.c:948,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:971,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:973,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:975,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:986,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/execMain.c:989,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:991,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/execMain.c:1002,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execMain.c:1007,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1018,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1020,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execMain.c:1034,1
    - Dst: ExecInitJunkFilter
      Src: /src/postgres/src/backend/executor/execMain.c:1035,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 78
    argCount: 2
    argNames:
    - queryDesc
    - eflags
    argTypes:
    - QueryDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 846
    functionDepth: 6
    functionLinenumber: 846
    functionLinenumberEnd: 1046
    functionName: InitPlan
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - ExecCheckPermissions
    - ExecInitRangeTable
    - bms_copy
    - elog
    - ExecInitNode
    - foreach
    - ExecGetRangeTableRelation
    - Assert
    - bms_is_member
    - palloc_object
    - ExecDoInitialPruning
    - lappend
    - CheckValidRowMarkRel
    - lfirst
    - ExecInitExtraTupleSlot
    - palloc0_array
    - ExecGetResultType
    - exec_rt_fetch
    - ItemPointerSetInvalid
    - ExecInitJunkFilter
    linkageType: ''
    returnType: void
    signature: void InitPlan(QueryDesc *queryDesc, int eflags)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1073,1
    - Dst: IsInplaceUpdateRelation
      Src: /src/postgres/src/backend/executor/execMain.c:1074,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/executor/execMain.c:1086,1
    - Dst: CheckCmdReplicaIdentity
      Src: /src/postgres/src/backend/executor/execMain.c:1087,1
    - Dst: CheckCmdReplicaIdentity
      Src: /src/postgres/src/backend/executor/execMain.c:1096,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1099,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1101,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1105,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1106,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1107,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1108,1
    - Dst: view_has_instead_trigger
      Src: /src/postgres/src/backend/executor/execMain.c:1118,1
    - Dst: error_view_not_updatable
      Src: /src/postgres/src/backend/executor/execMain.c:1119,1
    - Dst: MatViewIncrementalMaintenanceIsEnabled
      Src: /src/postgres/src/backend/executor/execMain.c:1123,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1124,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1125,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1126,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1127,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1132,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1133,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1134,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:1135,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1136,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1144,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1145,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1146,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1147,1
    - Dst: FdwRoutine*::IsForeignRelUpdatable
      Src: /src/postgres/src/backend/executor/execMain.c:1149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1150,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1151,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1152,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1153,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1157,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1158,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1159,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1160,1
    - Dst: FdwRoutine*::IsForeignRelUpdatable
      Src: /src/postgres/src/backend/executor/execMain.c:1162,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1163,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1164,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1165,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1166,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1170,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1171,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1172,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1173,1
    - Dst: FdwRoutine*::IsForeignRelUpdatable
      Src: /src/postgres/src/backend/executor/execMain.c:1175,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1176,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1177,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1178,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1179,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:1182,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1187,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1188,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1189,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1190,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1193,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1194,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1195,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1196,1
    - Dst: IsConflictLogTableNamespace
      Src: /src/postgres/src/backend/executor/execMain.c:1210,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/executor/execMain.c:1210,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1214,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1215,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:1216,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 62
    argCount: 5
    argNames:
    - resultRelInfo
    - operation
    - onConflictAction
    - mergeActions
    - mtnode
    argTypes:
    - ResultRelInfo*
    - CmdType
    - OnConflictAction
    - List*
    - ModifyTable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1064
    functionDepth: 2
    functionLinenumber: 1064
    functionLinenumberEnd: 1217
    functionName: CheckValidResultRel
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - elog
    - error_view_not_updatable
    - IsInplaceUpdateRelation
    - errcode
    - Assert
    - IsConflictLogTableNamespace
    - ereport
    - CheckCmdReplicaIdentity
    - foreach_node
    - view_has_instead_trigger
    - MatViewIncrementalMaintenanceIsEnabled
    - RelationGetNamespace
    - errmsg
    - RelationGetRelationName
    - errdetail
    - FdwRoutine*::IsForeignRelUpdatable
    linkageType: ''
    returnType: void
    signature: "void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation,\n\t\t\t\t\tOnConflictAction
      onConflictAction, List *mergeActions,\n\t\t\t\t\tModifyTable *mtnode)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1238,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1240,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1247,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1252,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1253,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1254,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1255,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1262,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1263,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/executor/execMain.c:1267,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1269,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1270,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1271,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1276,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1277,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/executor/execMain.c:1278,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1279,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1282,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1283,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1284,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1285,1
    - Dst: IsConflictLogTableNamespace
      Src: /src/postgres/src/backend/executor/execMain.c:1293,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/executor/execMain.c:1293,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1296,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1297,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 2
    argNames:
    - rel
    - markType
    argTypes:
    - Relation
    - RowMarkType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1225
    functionDepth: 5
    functionLinenumber: 1225
    functionLinenumberEnd: 1298
    functionName: CheckValidRowMarkRel
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - errmsg_internal
    - IsConflictLogTableNamespace
    - errcode
    - ereport
    - RelationGetNamespace
    - errmsg
    - RelationGetRelationName
    - GetFdwRoutineForRelation
    linkageType: ''
    returnType: void
    signature: void CheckValidRowMarkRel(Relation rel, RowMarkType markType)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/execMain.c:1314,1
    - Dst: IsInplaceUpdateRelation
      Src: /src/postgres/src/backend/executor/execMain.c:1322,1
    - Dst: CopyTriggerDesc
      Src: /src/postgres/src/backend/executor/execMain.c:1324,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:1330,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:1332,1
    - Dst: InstrAllocTrigger
      Src: /src/postgres/src/backend/executor/execMain.c:1334,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/executor/execMain.c:1343,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 54
    argCount: 5
    argNames:
    - resultRelInfo
    - resultRelationDesc
    - resultRelationIndex
    - partition_root_rri
    - instrument_options
    argTypes:
    - ResultRelInfo*
    - Relation
    - Index
    - ResultRelInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1307
    functionDepth: 5
    functionLinenumber: 1307
    functionLinenumberEnd: 1388
    functionName: InitResultRelInfo
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - palloc0_array
    - IsInplaceUpdateRelation
    - CopyTriggerDesc
    - MemSet
    - InstrAllocTrigger
    - GetFdwRoutineForRelation
    linkageType: ''
    returnType: void
    signature: "void InitResultRelInfo(ResultRelInfo *resultRelInfo,\n\t\t\t\t  Relation
      resultRelationDesc,\n\t\t\t\t  Index resultRelationIndex,\n\t\t\t\t  ResultRelInfo
      *partition_root_rri,\n\t\t\t\t  int instrument_options)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1426,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1428,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1429,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1438,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1440,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1441,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1447,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1449,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1450,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execMain.c:1462,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1467,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:1468,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execMain.c:1469,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:1475,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1476,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - estate
    - relid
    - rootRelInfo
    argTypes:
    - EState*
    - Oid
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1408
    functionDepth: 6
    functionLinenumber: 1408
    functionLinenumberEnd: 1484
    functionName: ExecGetTriggerResultRel
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - foreach
    - lappend
    - makeNode
    - MemoryContextSwitchTo
    - table_open
    - lfirst
    - InitResultRelInfo
    - RelationGetRelid
    linkageType: ''
    returnType: ResultRelInfo
    signature: "ResultRelInfo *\nExecGetTriggerResultRel(EState *estate, Oid relid,\n\t\t\t\t\t\tResultRelInfo
      *rootRelInfo)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:1503,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1504,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1505,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/executor/execMain.c:1509,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1509,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execMain.c:1514,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execMain.c:1531,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:1532,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execMain.c:1535,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:1537,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:1539,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1544,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - estate
    - resultRelInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1495
    functionDepth: 6
    functionLinenumber: 1495
    functionLinenumberEnd: 1547
    functionName: ExecGetAncestorResultRels
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - lappend
    - makeNode
    - table_open
    - InitResultRelInfo
    - lfirst_oid
    - get_partition_ancestors
    - RelationGetRelid
    linkageType: ''
    returnType: List
    signature: 'List *

      ExecGetAncestorResultRels(EState *estate, ResultRelInfo *resultRelInfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execMain.c:1514,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execMain.c:1531,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:1532,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execMain.c:1535,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:1537,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1512
    functionDepth: 6
    functionLinenumber: 1512
    functionLinenumberEnd: 1538
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 392
    functionsReached:
    - lappend
    - makeNode
    - table_open
    - InitResultRelInfo
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, oids)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1570,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1572,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:1579,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/execMain.c:1581,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execMain.c:1583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1555
    functionDepth: 2
    functionLinenumber: 1555
    functionLinenumberEnd: 1587
    functionName: ExecPostprocessPlan
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - foreach
    - ResetPerTupleExprContext
    - ExecProcNode
    - lfirst
    - TupIsNull
    linkageType: ''
    returnType: void
    signature: void ExecPostprocessPlan(EState *estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/execMain.c:1609,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1614,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1616,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/execMain.c:1618,1
    - Dst: ExecResetTupleTable
      Src: /src/postgres/src/backend/executor/execMain.c:1627,1
    - Dst: ExecCloseResultRelations
      Src: /src/postgres/src/backend/executor/execMain.c:1633,1
    - Dst: ExecCloseRangeTableRelations
      Src: /src/postgres/src/backend/executor/execMain.c:1634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - planstate
    - estate
    argTypes:
    - PlanState*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1635
    functionName: ExecEndPlan
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - foreach
    - ExecCloseResultRelations
    - ExecCloseRangeTableRelations
    - ExecEndNode
    - ExecResetTupleTable
    - lfirst
    linkageType: ''
    returnType: void
    signature: void ExecEndPlan(PlanState *planstate, EState *estate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1652,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1654,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/executor/execMain.c:1657,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1658,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1660,1
    - Dst: table_close
      Src: /src/postgres/src/backend/executor/execMain.c:1669,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1674,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1683,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1689,1
    - Dst: table_close
      Src: /src/postgres/src/backend/executor/execMain.c:1691,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1640
    functionDepth: 3
    functionLinenumber: 1640
    functionLinenumberEnd: 1693
    functionName: ExecCloseResultRelations
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - ExecCloseIndices
    - foreach
    - Assert
    - lfirst
    - table_close
    linkageType: ''
    returnType: void
    signature: void ExecCloseResultRelations(EState *estate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_close
      Src: /src/postgres/src/backend/executor/execMain.c:1708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1700
    functionDepth: 3
    functionLinenumber: 1700
    functionLinenumberEnd: 1710
    functionName: ExecCloseRangeTableRelations
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - table_close
    linkageType: ''
    returnType: void
    signature: void ExecCloseRangeTableRelations(EState *estate)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/executor/execMain.c:1760,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:1768,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/execMain.c:1773,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execMain.c:1779,1
    - Dst: ExecFilterJunk
      Src: /src/postgres/src/backend/executor/execMain.c:1791,1
    - Dst: DestReceiver*::receiveSlot
      Src: /src/postgres/src/backend/executor/execMain.c:1804,1
    - Dst: ExecShutdownNode
      Src: /src/postgres/src/backend/executor/execMain.c:1831,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/executor/execMain.c:1834,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 31
    argCount: 6
    argNames:
    - queryDesc
    - operation
    - sendTuples
    - numberTuples
    - direction
    - dest
    argTypes:
    - QueryDesc*
    - CmdType
    - bool
    - uint64
    - ScanDirection
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1835
      start: 1721
    functionDepth: 3
    functionLinenumber: 1721
    functionLinenumberEnd: 1835
    functionName: ExecutePlan
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - ResetPerTupleExprContext
    - ExecProcNode
    - ExecShutdownNode
    - ExecFilterJunk
    - DestReceiver*::receiveSlot
    - EnterParallelMode
    - ExitParallelMode
    - TupIsNull
    linkageType: ''
    returnType: void
    signature: "void ExecutePlan(QueryDesc *queryDesc,\n\t\t\tCmdType operation,\n\t\t\tbool
      sendTuples,\n\t\t\tuint64 numberTuples,\n\t\t\tScanDirection direction,\n\t\t\tDestReceiver
      *dest)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:1859,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1860,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1869,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:1870,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/executor/execMain.c:1879,1
    - Dst: expand_generated_columns_in_expr
      Src: /src/postgres/src/backend/executor/execMain.c:1880,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/execMain.c:1882,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1884,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:1891,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/executor/execMain.c:1906,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 3
    argNames:
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1843
    functionDepth: 3
    functionLinenumber: 1843
    functionLinenumberEnd: 1912
    functionName: ExecRelCheck
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - elog
    - ExecPrepareExpr
    - palloc0_array
    - expand_generated_columns_in_expr
    - GetPerTupleExprContext
    - MemoryContextSwitchTo
    - ExecCheck
    - stringToNode
    - RelationGetRelationName
    linkageType: ''
    returnType: char
    signature: "char *\nExecRelCheck(ResultRelInfo *resultRelInfo,\n\t\t\t TupleTableSlot
      *slot, EState *estate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1941,1
    - Dst: RelationGetPartitionQual
      Src: /src/postgres/src/backend/executor/execMain.c:1942,1
    - Dst: ExecPrepareCheck
      Src: /src/postgres/src/backend/executor/execMain.c:1944,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1945,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:1952,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/executor/execMain.c:1961,1
    - Dst: ExecPartitionCheckEmitError
      Src: /src/postgres/src/backend/executor/execMain.c:1965,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - resultRelInfo
    - slot
    - estate
    - emitError
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1921
    functionDepth: 1
    functionLinenumber: 1921
    functionLinenumberEnd: 1968
    functionName: ExecPartitionCheck
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - RelationGetPartitionQual
    - GetPerTupleExprContext
    - ExecCheck
    - MemoryContextSwitchTo
    - ExecPartitionCheckEmitError
    - ExecPrepareCheck
    linkageType: ''
    returnType: bool
    signature: "bool ExecPartitionCheck(ResultRelInfo *resultRelInfo, TupleTableSlot
      *slot,\n\t\t\t\t   EState *estate, bool emitError)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1996,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:1997,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:1999,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execMain.c:2001,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execMain.c:2008,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2009,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2010,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2010,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2011,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:2015,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2016,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2017,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2017,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2018,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/executor/execMain.c:2021,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2026,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2027,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2028,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:2029,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:2030,1
    - Dst: errtable
      Src: /src/postgres/src/backend/executor/execMain.c:2031,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 1974
    functionDepth: 4
    functionLinenumber: 1974
    functionLinenumberEnd: 2032
    functionName: ExecPartitionCheckEmitError
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - MakeTupleTableSlot
    - execute_attr_map_slot
    - errcode
    - errdetail
    - RelationGetDescr
    - ereport
    - errtable
    - ExecBuildSlotValueDescription
    - errmsg
    - ExecGetUpdatedCols
    - bms_union
    - RelationGetRelationName
    - build_attrmap_by_name_if_req
    - RelationGetRelid
    - ExecGetInsertedCols
    linkageType: ''
    returnType: void
    signature: "void ExecPartitionCheckEmitError(ResultRelInfo *resultRelInfo,\n\t\t\t\t\t\t\tTupleTableSlot
      *slot,\n\t\t\t\t\t\t\tEState *estate)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2050,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2055,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execMain.c:2067,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execMain.c:2070,1
    - Dst: slot_attisnull
      Src: /src/postgres/src/backend/executor/execMain.c:2071,1
    - Dst: ReportNotNullViolationError
      Src: /src/postgres/src/backend/executor/execMain.c:2072,1
    - Dst: ExecRelGenVirtualNotNull
      Src: /src/postgres/src/backend/executor/execMain.c:2083,1
    - Dst: ReportNotNullViolationError
      Src: /src/postgres/src/backend/executor/execMain.c:2086,1
    - Dst: ExecRelCheck
      Src: /src/postgres/src/backend/executor/execMain.c:2096,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2110,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2113,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execMain.c:2115,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execMain.c:2124,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2125,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2126,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2126,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2127,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2131,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2131,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2132,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/executor/execMain.c:2133,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:2133,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2138,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2139,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2140,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:2141,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:2142,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/executor/execMain.c:2143,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 3
    argNames:
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2146
      start: 2045
    functionDepth: 6
    functionLinenumber: 2045
    functionLinenumberEnd: 2146
    functionName: ExecConstraints
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - lappend_int
    - execute_attr_map_slot
    - errcode
    - ReportNotNullViolationError
    - RelationGetRelationName
    - ExecRelCheck
    - build_attrmap_by_name_if_req
    - bms_union
    - ExecGetInsertedCols
    - errtableconstraint
    - Assert
    - RelationGetDescr
    - slot_attisnull
    - errmsg
    - ExecRelGenVirtualNotNull
    - MakeTupleTableSlot
    - ereport
    - TupleDescAttr
    - ExecBuildSlotValueDescription
    - ExecGetUpdatedCols
    - errdetail
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void ExecConstraints(ResultRelInfo *resultRelInfo,\n\t\t\t\tTupleTableSlot
      *slot, EState *estate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2174,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:2176,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:2176,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execMain.c:2180,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:2184,1
    - Dst: build_generation_expression
      Src: /src/postgres/src/backend/executor/execMain.c:2185,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/execMain.c:2191,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2193,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:2201,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execMain.c:2209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2212,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/executor/execMain.c:2213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - resultRelInfo
    - slot
    - estate
    - notnull_virtual_attrs
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2219
      start: 2159
    functionDepth: 1
    functionLinenumber: 2159
    functionLinenumberEnd: 2219
    functionName: ExecRelGenVirtualNotNull
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - ExecPrepareExpr
    - palloc0_array
    - Assert
    - GetPerTupleExprContext
    - makeNode
    - build_generation_expression
    - MemoryContextSwitchTo
    - ExecCheck
    - list_length
    - foreach_current_index
    linkageType: ''
    returnType: AttrNumber
    signature: "AttrNumber ExecRelGenVirtualNotNull(ResultRelInfo *resultRelInfo,
      TupleTableSlot *slot,\n\t\t\t\t\t\t EState *estate, List *notnull_virtual_attrs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execMain.c:2180,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:2184,1
    - Dst: build_generation_expression
      Src: /src/postgres/src/backend/executor/execMain.c:2185,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/execMain.c:2191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2192
      start: 2178
    functionDepth: 1
    functionLinenumber: 2178
    functionLinenumberEnd: 2192
    functionName: foreach_int
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - ExecPrepareExpr
    - foreach_current_index
    - makeNode
    - build_generation_expression
    linkageType: ''
    returnType: void
    signature: void foreach_int(attnum, notnull_virtual_attrs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execMain.c:2209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2212,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/executor/execMain.c:2213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2215
      start: 2207
    functionDepth: 1
    functionLinenumber: 2207
    functionLinenumberEnd: 2215
    functionName: foreach_int
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - Assert
    - foreach_current_index
    - ExecCheck
    linkageType: ''
    returnType: void
    signature: void foreach_int(attnum, notnull_virtual_attrs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2232,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2233,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execMain.c:2234,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2236,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2249,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execMain.c:2251,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execMain.c:2260,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2261,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2262,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2262,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2263,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2267,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2267,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2268,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/executor/execMain.c:2270,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:2270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2277,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/execMain.c:2278,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:2279,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:2280,1
    - Dst: errtablecol
      Src: /src/postgres/src/backend/executor/execMain.c:2281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - resultRelInfo
    - slot
    - estate
    - attnum
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2282
      start: 2224
    functionDepth: 4
    functionLinenumber: 2224
    functionLinenumberEnd: 2282
    functionName: ReportNotNullViolationError
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - MakeTupleTableSlot
    - execute_attr_map_slot
    - errcode
    - Assert
    - RelationGetDescr
    - errdetail
    - ereport
    - errtablecol
    - ExecBuildSlotValueDescription
    - errmsg
    - ExecGetUpdatedCols
    - NameStr
    - RelationGetRelationName
    - build_attrmap_by_name_if_req
    - TupleDescAttr
    - RelationGetRelid
    - bms_union
    - ExecGetInsertedCols
    linkageType: ''
    returnType: void
    signature: "void ReportNotNullViolationError(ResultRelInfo *resultRelInfo, TupleTableSlot
      *slot,\n\t\t\t\t\t\t\tEState *estate, int attnum)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2298,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:2307,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/execMain.c:2313,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:2316,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:2317,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/execMain.c:2333,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2354,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2357,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execMain.c:2359,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execMain.c:2368,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2369,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2371,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2371,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2372,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2376,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2376,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2377,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/executor/execMain.c:2378,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:2378,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2384,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2385,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2386,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:2388,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2394,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2395,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2396,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2399,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2401,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2407,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2408,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2409,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2414,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2419,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2420,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2421,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2424,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2425,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2426,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2430,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 4
    argNames:
    - kind
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - WCOKind
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2435
      start: 2293
    functionDepth: 4
    functionLinenumber: 2293
    functionLinenumberEnd: 2435
    functionName: ExecWithCheckOptions
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - elog
    - MakeTupleTableSlot
    - ExecGetInsertedCols
    - execute_attr_map_slot
    - errcode
    - errdetail
    - RelationGetDescr
    - GetPerTupleExprContext
    - ereport
    - ExecBuildSlotValueDescription
    - lfirst
    - ExecQual
    - ExecGetUpdatedCols
    - errmsg
    - build_attrmap_by_name_if_req
    - RelationGetRelid
    - bms_union
    - forboth
    linkageType: ''
    returnType: void
    signature: "void ExecWithCheckOptions(WCOKind kind, ResultRelInfo *resultRelInfo,\n\t\t\t\t\t
      TupleTableSlot *slot, EState *estate)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/executor/execMain.c:2477,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2480,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/executor/execMain.c:2482,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/executor/execMain.c:2491,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execMain.c:2491,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2495,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/executor/execMain.c:2496,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execMain.c:2502,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execMain.c:2509,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/executor/execMain.c:2523,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execMain.c:2524,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:2525,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2531,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2535,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/execMain.c:2535,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2550,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/executor/execMain.c:2552,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2556,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execMain.c:2561,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2563,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/executor/execMain.c:2566,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2567,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2568,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/executor/execMain.c:2577,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2581,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2582,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 5
    argNames:
    - reloid
    - slot
    - tupdesc
    - modifiedCols
    - maxfieldlen
    argTypes:
    - Oid
    - TupleTableSlot*
    - TupleDesc
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2588
      start: 2456
    functionDepth: 3
    functionLinenumber: 2456
    functionLinenumberEnd: 2588
    functionName: ExecBuildSlotValueDescription
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 5
    functionsReached:
    - appendBinaryStringInfo
    - slot_getallattrs
    - GetUserId
    - pg_attribute_aclcheck
    - appendStringInfoString
    - initStringInfo
    - bms_is_member
    - pg_mbcliplen
    - pg_class_aclcheck
    - getTypeOutputInfo
    - OidOutputFunctionCall
    - NameStr
    - strlen
    - TupleDescAttr
    - check_enable_rls
    - appendStringInfoChar
    linkageType: ''
    returnType: char
    signature: "char *\nExecBuildSlotValueDescription(Oid reloid,\n\t\t\t\t\t\t\t
      \ TupleTableSlot *slot,\n\t\t\t\t\t\t\t  TupleDesc tupdesc,\n\t\t\t\t\t\t\t
      \ Bitmapset *modifiedCols,\n\t\t\t\t\t\t\t  int maxfieldlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetAllUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2606,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/executor/execMain.c:2607,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/execMain.c:2610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - relinfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2614
      start: 2595
    functionDepth: 3
    functionLinenumber: 2595
    functionLinenumberEnd: 2614
    functionName: ExecUpdateLockMode
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexAttrBitmap
    - ExecGetAllUpdatedCols
    - bms_overlap
    linkageType: ''
    returnType: LockTupleMode
    signature: LockTupleMode ExecUpdateLockMode(EState *estate, ResultRelInfo *relinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2633,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - estate
    - rti
    - missing_ok
    argTypes:
    - EState*
    - Index
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2635
      start: 2621
    functionDepth: 1
    functionLinenumber: 2621
    functionLinenumberEnd: 2635
    functionName: ExecFindRowMark
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - elog
    linkageType: ''
    returnType: ExecRowMark
    signature: 'ExecRowMark *

      ExecFindRowMark(EState *estate, Index rti, bool missing_ok)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execMain.c:2647,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/execMain.c:2656,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/execMain.c:2657,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:2659,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2660,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/execMain.c:2665,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/execMain.c:2666,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:2668,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2669,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/execMain.c:2675,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/execMain.c:2676,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:2678,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2679,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - erm
    - targetlist
    argTypes:
    - ExecRowMark*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2683
      start: 2644
    functionDepth: 1
    functionLinenumber: 2644
    functionLinenumberEnd: 2683
    functionName: ExecBuildAuxRowMark
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_object
    - AttributeNumberIsValid
    - ExecFindJunkAttributeInTlist
    - snprintf
    linkageType: ''
    returnType: ExecAuxRowMark
    signature: 'ExecAuxRowMark *

      ExecBuildAuxRowMark(ExecRowMark *erm, List *targetlist)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2721,1
    - Dst: EvalPlanQualBegin
      Src: /src/postgres/src/backend/executor/execMain.c:2726,1
    - Dst: EvalPlanQualSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2732,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/execMain.c:2734,1
    - Dst: EvalPlanQualNext
      Src: /src/postgres/src/backend/executor/execMain.c:2747,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execMain.c:2756,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2757,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execMain.c:2764,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - epqstate
    - relation
    - rti
    - inputslot
    argTypes:
    - EPQState*
    - Relation
    - Index
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2768
      start: 2714
    functionDepth: 2
    functionLinenumber: 2714
    functionLinenumberEnd: 2768
    functionName: EvalPlanQual
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - EvalPlanQualNext
    - Assert
    - EvalPlanQualBegin
    - EvalPlanQualSlot
    - ExecCopySlot
    - ExecClearTuple
    - TupIsNull
    - ExecMaterializeSlot
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nEvalPlanQual(EPQState *epqstate, Relation relation,\n\t\t\t
      Index rti, TupleTableSlot *inputslot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:2803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 6
    argNames:
    - epqstate
    - parentestate
    - subplan
    - auxrowmarks
    - epqParam
    - resultRelations
    argTypes:
    - EPQState*
    - EState*
    - Plan*
    - List*
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2816
      start: 2783
    functionDepth: 0
    functionLinenumber: 2783
    functionLinenumberEnd: 2816
    functionName: EvalPlanQualInit
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 4
    functionsReached:
    - palloc0_array
    linkageType: ''
    returnType: void
    signature: "void EvalPlanQualInit(EPQState *epqstate, EState *parentestate,\n\t\t\t\t
      Plan *subplan, List *auxrowmarks,\n\t\t\t\t int epqParam, List *resultRelations)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/executor/execMain.c:2828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - epqstate
    - subplan
    - auxrowmarks
    argTypes:
    - EPQState*
    - Plan*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2833
      start: 2824
    functionDepth: 1
    functionLinenumber: 2824
    functionLinenumberEnd: 2833
    functionName: EvalPlanQualSetPlan
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - EvalPlanQualEnd
    linkageType: ''
    returnType: void
    signature: void EvalPlanQualSetPlan(EPQState *epqstate, Plan *subplan, List *auxrowmarks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2847,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2848,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2855,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execMain.c:2856,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2857,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - epqstate
    - relation
    - rti
    argTypes:
    - EPQState*
    - Relation
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2861
      start: 2841
    functionDepth: 3
    functionLinenumber: 2841
    functionLinenumberEnd: 2861
    functionName: EvalPlanQualSlot
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 2
    functionsReached:
    - Assert
    - table_slot_create
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nEvalPlanQualSlot(EPQState *epqstate,\n\t\t\t\t Relation
      relation, Index rti)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2878,1
    - Dst: RowMarkRequiresRowShareLock
      Src: /src/postgres/src/backend/executor/execMain.c:2882,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2883,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/execMain.c:2890,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/executor/execMain.c:2897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2899,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:2899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2909,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/execMain.c:2912,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/executor/execMain.c:2925,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2928,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2929,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2930,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:2931,1
    - Dst: FdwRoutine*::RefetchForeignRow
      Src: /src/postgres/src/backend/executor/execMain.c:2933,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execMain.c:2938,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2939,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/execMain.c:2951,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execMain.c:2952,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2960,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/execMain.c:2963,1
    - Dst: ExecStoreHeapTupleDatum
      Src: /src/postgres/src/backend/executor/execMain.c:2970,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - epqstate
    - rti
    - slot
    argTypes:
    - EPQState*
    - Index
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2973
      start: 2869
    functionDepth: 5
    functionLinenumber: 2869
    functionLinenumberEnd: 2973
    functionName: EvalPlanQualFetchRowMark
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - elog
    - ExecGetJunkAttribute
    - errcode
    - Assert
    - DatumGetObjectId
    - table_tuple_fetch_row_version
    - ereport
    - FdwRoutine*::RefetchForeignRow
    - ExecStoreHeapTupleDatum
    - RowMarkRequiresRowShareLock
    - errmsg
    - RelationGetRelationName
    - OidIsValid
    - TupIsNull
    - GetFdwRoutineForRelation
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool EvalPlanQualFetchRowMark(EPQState *epqstate, Index rti, TupleTableSlot
      *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2986,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/execMain.c:2987,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - epqstate
    argTypes:
    - EPQState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2991
      start: 2980
    functionDepth: 2
    functionLinenumber: 2980
    functionLinenumberEnd: 2991
    functionName: EvalPlanQualNext
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 2
    functionsReached:
    - ExecProcNode
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      EvalPlanQualNext(EPQState *epqstate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EvalPlanQualStart
      Src: /src/postgres/src/backend/executor/execMain.c:3005,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execMain.c:3020,1
    - Dst: ExecSetParamPlanMulti
      Src: /src/postgres/src/backend/executor/execMain.c:3033,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:3034,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:3036,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execMain.c:3052,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - epqstate
    argTypes:
    - EPQState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3055
      start: 2996
    functionDepth: 3
    functionLinenumber: 2996
    functionLinenumberEnd: 3055
    functionName: EvalPlanQualBegin
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 2
    functionsReached:
    - EvalPlanQualStart
    - memcpy
    - GetPerTupleExprContext
    - list_length
    - ExecSetParamPlanMulti
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void EvalPlanQualBegin(EPQState *epqstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/executor/execMain.c:3072,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:3074,1
    - Dst: ExecSetParamPlanMulti
      Src: /src/postgres/src/backend/executor/execMain.c:3137,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:3138,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:3141,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:3142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:3181,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:3182,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:3184,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/execMain.c:3187,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:3188,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:3197,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:3198,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:3200,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execMain.c:3209,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:3210,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:3212,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execMain.c:3214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:3216,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execMain.c:3220,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/execMain.c:3228,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:3230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 52
    argCount: 2
    argNames:
    - epqstate
    - planTree
    argTypes:
    - EPQState*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3231
      start: 3063
    functionDepth: 6
    functionLinenumber: 3063
    functionLinenumberEnd: 3231
    functionName: EvalPlanQualStart
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - palloc0_array
    - CreateExecutorState
    - foreach
    - lfirst_int
    - Assert
    - memcpy
    - GetPerTupleExprContext
    - lappend
    - palloc_array
    - MemoryContextSwitchTo
    - lfirst
    - list_length
    - ExecSetParamPlanMulti
    linkageType: ''
    returnType: void
    signature: void EvalPlanQualStart(EPQState *epqstate, Plan *planTree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execMain.c:3260,1
    - Dst: ExecResetTupleTable
      Src: /src/postgres/src/backend/executor/execMain.c:3262,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:3270,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/execMain.c:3272,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:3274,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:3276,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/execMain.c:3278,1
    - Dst: ExecResetTupleTable
      Src: /src/postgres/src/backend/executor/execMain.c:3282,1
    - Dst: ExecCloseResultRelations
      Src: /src/postgres/src/backend/executor/execMain.c:3285,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:3287,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/executor/execMain.c:3296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - epqstate
    argTypes:
    - EPQState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3305
      start: 3244
    functionDepth: 4
    functionLinenumber: 3244
    functionLinenumberEnd: 3305
    functionName: EvalPlanQualEnd
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 6
    functionsReached:
    - foreach
    - ExecCloseResultRelations
    - MemoryContextSwitchTo
    - ExecEndNode
    - ExecResetTupleTable
    - lfirst
    - memset
    - FreeExecutorState
    linkageType: ''
    returnType: void
    signature: void EvalPlanQualEnd(EPQState *epqstate)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: fetch_cursor_param_value
      Src: /src/postgres/src/backend/executor/execCurrent.c:58,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/executor/execCurrent.c:61,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execCurrent.c:63,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/executor/execCurrent.c:66,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/executor/execCurrent.c:67,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:68,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:69,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:70,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:77,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:78,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:79,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:83,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:84,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:85,1
    - Dst: RowMarkRequiresRowShareLock
      Src: /src/postgres/src/backend/executor/execCurrent.c:110,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:116,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:117,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:118,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:127,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:137,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/execCurrent.c:141,1
    - Dst: search_plan_tree
      Src: /src/postgres/src/backend/executor/execCurrent.c:164,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:167,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:168,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:169,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:180,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:181,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:182,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execCurrent.c:190,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execCurrent.c:198,1
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/executor/execCurrent.c:222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:226,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:227,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execCurrent.c:230,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/executor/execCurrent.c:230,1
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/executor/execCurrent.c:233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:239,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execCurrent.c:241,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execCurrent.c:246,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/execCurrent.c:246,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 59
    argCount: 4
    argNames:
    - cexpr
    - econtext
    - table_oid
    - current_tid
    argTypes:
    - CurrentOfExpr*
    - ExprContext*
    - Oid
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 250
    functionName: execCurrentOf
    functionSourceFile: /src/postgres/src/backend/executor/execCurrent.c
    functionUses: 1
    functionsReached:
    - elog
    - fetch_cursor_param_value
    - slot_getsysattr
    - PortalIsValid
    - errcode
    - search_plan_tree
    - IsA
    - Assert
    - DatumGetObjectId
    - ereport
    - get_rel_name
    - RowMarkRequiresRowShareLock
    - errmsg
    - TupIsNull
    - ItemPointerIsValid
    - GetPortalByName
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: "bool execCurrentOf(CurrentOfExpr *cexpr,\n\t\t\t  ExprContext *econtext,\n\t\t\t
      \ Oid table_oid,\n\t\t\t  ItemPointer current_tid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/executor/execCurrent.c:270,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execCurrent.c:274,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:278,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:279,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:280,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execCurrent.c:282,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execCurrent.c:283,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/execCurrent.c:286,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execCurrent.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execCurrent.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execCurrent.c:292,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - econtext
    - paramId
    argTypes:
    - ExprContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 294
    functionName: fetch_cursor_param_value
    functionSourceFile: /src/postgres/src/backend/executor/execCurrent.c
    functionUses: 1
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - ParamListInfo::paramFetch
    - errmsg
    - OidIsValid
    - TextDatumGetCString
    linkageType: ''
    returnType: char
    signature: 'char *

      fetch_cursor_param_value(ExprContext *econtext, int paramId)'
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execCurrent.c:321,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execCurrent.c:346,1
    - Dst: search_plan_tree
      Src: /src/postgres/src/backend/executor/execCurrent.c:380,1
    - Dst: search_plan_tree
      Src: /src/postgres/src/backend/executor/execCurrent.c:399,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execCurrent.c:399,1
    - Dst: search_plan_tree
      Src: /src/postgres/src/backend/executor/execCurrent.c:408,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 3
    argNames:
    - node
    - table_oid
    - pending_rescan
    argTypes:
    - PlanState*
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 426
    functionName: search_plan_tree
    functionSourceFile: /src/postgres/src/backend/executor/execCurrent.c
    functionUses: 2
    functionsReached:
    - outerPlanState
    - nodeTag
    - RelationGetRelid
    - search_plan_tree
    linkageType: ''
    returnType: ScanState
    signature: "ScanState *\nsearch_plan_tree(PlanState *node, Oid table_oid,\n\t\t\t\t
      bool *pending_rescan)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: IsCTIDVar
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsCTIDVar(node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_leftop
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:61,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:62,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:67,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:68,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:69,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:71,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:75,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:77,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:95,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - expr
    - tidstate
    argTypes:
    - OpExpr*
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 101
    functionName: MakeTidOpExpr
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - elog
    - get_leftop
    - get_rightop
    - IsCTIDVar
    - ExecInitExpr
    - palloc_object
    linkageType: ''
    returnType: TidOpExpr
    signature: 'TidOpExpr *

      MakeTidOpExpr(OpExpr *expr, TidRangeScanState *tidstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:114,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:116,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:119,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:120,1
    - Dst: MakeTidOpExpr
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:122,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - tidrangestate
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 107
    functionDepth: 6
    functionLinenumber: 107
    functionLinenumberEnd: 127
    functionName: TidExprListCreate
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - lappend
    - lfirst
    - MakeTidOpExpr
    - IsA
    linkageType: ''
    returnType: void
    signature: void TidExprListCreate(TidRangeScanState *tidrangestate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:153,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:154,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:156,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:158,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:164,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:164,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:176,1
    - Dst: ItemPointerInc
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:183,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:186,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:187,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:194,1
    - Dst: ItemPointerDec
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:201,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:204,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:205,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:209,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:210,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 213
    functionName: TidRangeEval
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - ItemPointerDec
    - foreach
    - ItemPointerCopy
    - ItemPointerCompare
    - lfirst
    - ExecEvalExprSwitchContext
    - ItemPointerInc
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool TidRangeEval(TidRangeScanState *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TidRangeEval
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:242,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:249,1
    - Dst: table_beginscan_tidrange
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:255,1
    - Dst: table_rescan_tidrange
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:265,1
    - Dst: table_scan_getnextslot_tidrange
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:273,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:276,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 223
    functionDepth: 3
    functionLinenumber: 223
    functionLinenumberEnd: 280
    functionName: TidRangeNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - ScanRelIsReadOnly
    - TidRangeEval
    - table_scan_getnextslot_tidrange
    - table_beginscan_tidrange
    - ExecClearTuple
    - table_rescan_tidrange
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      TidRangeNext(TidRangeScanState *node)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TidRangeEval
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:291,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:291,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:294,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:295,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - TidRangeScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 299
    functionName: TidRangeRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - TidRangeEval
    - ItemPointerIsValid
    - Assert
    - ItemPointerCompare
    linkageType: ''
    returnType: bool
    signature: bool TidRangeRecheck(TidRangeScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:319,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 324
    functionName: ExecTidRangeScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecTidRangeScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 340
    functionName: ExecReScanTidRangeScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanTidRangeScan(TidRangeScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:359,1
    - Dst: AccumulateIOStats
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:364,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:369,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 370
    functionName: ExecEndTidRangeScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsParallelWorker
    - table_endscan
    - AccumulateIOStats
    linkageType: ''
    returnType: void
    signature: void ExecEndTidRangeScan(TidRangeScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:392,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:402,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:412,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:420,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:421,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:422,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:428,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:429,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:435,1
    - Dst: TidExprListCreate
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - TidRangeScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 443
    functionName: ExecInitTidRangeScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - TidExprListCreate
    - table_slot_callbacks
    - ExecAssignExprContext
    - ExecInitResultTypeTL
    - RelationGetDescr
    - ExecInitScanTupleSlot
    - makeNode
    - ExecAssignScanProjectionInfo
    - ExecInitQual
    - ExecOpenScanRelation
    linkageType: ''
    returnType: TidRangeScanState
    signature: 'TidRangeScanState *

      ExecInitTidRangeScan(TidRangeScan *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_parallelscan_estimate
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:463,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:465,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - TidRangeScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 467
    functionName: ExecTidRangeScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - table_parallelscan_estimate
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecTidRangeScanEstimate(TidRangeScanState *node, ParallelContext
      *pcxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:482,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:488,1
    - Dst: table_parallelscan_initialize
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:489,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:492,1
    - Dst: table_beginscan_parallel_tidrange
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - TidRangeScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 475
    functionDepth: 3
    functionLinenumber: 475
    functionLinenumberEnd: 496
    functionName: ExecTidRangeScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - ScanRelIsReadOnly
    - shm_toc_insert
    - table_beginscan_parallel_tidrange
    - shm_toc_allocate
    - table_parallelscan_initialize
    linkageType: ''
    returnType: void
    signature: void ExecTidRangeScanInitializeDSM(TidRangeScanState *node, ParallelContext
      *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_parallelscan_reinitialize
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - TidRangeScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 512
    functionName: ExecTidRangeScanReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - table_parallelscan_reinitialize
    linkageType: ''
    returnType: void
    signature: "void ExecTidRangeScanReInitializeDSM(TidRangeScanState *node,\n\t\t\t\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:527,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:533,1
    - Dst: table_beginscan_parallel_tidrange
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:535,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - TidRangeScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 520
    functionDepth: 3
    functionLinenumber: 520
    functionLinenumberEnd: 537
    functionName: ExecTidRangeScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - table_beginscan_parallel_tidrange
    - shm_toc_lookup
    - ScanRelIsReadOnly
    linkageType: ''
    returnType: void
    signature: "void ExecTidRangeScanInitializeWorker(TidRangeScanState *node,\n\t\t\t\t\t\t\t\t
      ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:553,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:554,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:556,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - TidRangeScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 558
    functionName: ExecTidRangeScanInstrumentEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecTidRangeScanInstrumentEstimate(TidRangeScanState *node,\n\t\t\t\t\t\t\t\t
      \  ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:574,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:575,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:576,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:577,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:579,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - TidRangeScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 584
    functionName: ExecTidRangeScanInstrumentInitDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: "void ExecTidRangeScanInstrumentInitDSM(TidRangeScanState *node,\n\t\t\t\t\t\t\t\t
      \ ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - TidRangeScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 589
    functionDepth: 1
    functionLinenumber: 589
    functionLinenumberEnd: 602
    functionName: ExecTidRangeScanInstrumentInitWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecTidRangeScanInstrumentInitWorker(TidRangeScanState *node,\n\t\t\t\t\t\t\t\t\t
      ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:619,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:620,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 607
    functionDepth: 0
    functionLinenumber: 607
    functionLinenumberEnd: 621
    functionName: ExecTidRangeScanRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecTidRangeScanRetrieveInstrumentation(TidRangeScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHash.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: ExecHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecHash(PlanState *pstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:110,1
    - Dst: MultiExecParallelHash
      Src: /src/postgres/src/backend/executor/nodeHash.c:113,1
    - Dst: MultiExecPrivateHash
      Src: /src/postgres/src/backend/executor/nodeHash.c:115,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 129
    functionName: MultiExecHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - MultiExecParallelHash
    - InstrStartNode
    - MultiExecPrivateHash
    - InstrStopNode
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecHash(HashState *node)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHash.c:150,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:170,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHash.c:171,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:176,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:178,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHash.c:184,1
    - Dst: ExecHashGetSkewBucket
      Src: /src/postgres/src/backend/executor/nodeHash.c:187,1
    - Dst: ExecHashSkewTableInsert
      Src: /src/postgres/src/backend/executor/nodeHash.c:191,1
    - Dst: ExecHashTableInsert
      Src: /src/postgres/src/backend/executor/nodeHash.c:197,1
    - Dst: ExecHashBuildNullTupleStore
      Src: /src/postgres/src/backend/executor/nodeHash.c:205,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeHash.c:206,1
    - Dst: ExecHashIncreaseNumBuckets
      Src: /src/postgres/src/backend/executor/nodeHash.c:214,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 223
    functionName: MultiExecPrivateHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - ExecHashSkewTableInsert
    - ExecHashGetSkewBucket
    - ExecHashBuildNullTupleStore
    - ResetExprContext
    - ExecHashIncreaseNumBuckets
    - ExecProcNode
    - outerPlanState
    - ExecHashTableInsert
    - ExecEvalExprSwitchContext
    - TupIsNull
    - tuplestore_puttupleslot
    - DatumGetUInt32
    linkageType: ''
    returnType: void
    signature: void MultiExecPrivateHash(HashState *node)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHash.c:247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:265,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:265,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:266,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:275,1
    - Dst: PHJ_GROW_BATCHES_PHASE
      Src: /src/postgres/src/backend/executor/nodeHash.c:289,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHash.c:289,1
    - Dst: ExecParallelHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:291,1
    - Dst: PHJ_GROW_BUCKETS_PHASE
      Src: /src/postgres/src/backend/executor/nodeHash.c:292,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHash.c:292,1
    - Dst: ExecParallelHashIncreaseNumBuckets
      Src: /src/postgres/src/backend/executor/nodeHash.c:294,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:295,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:296,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:302,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHash.c:303,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:307,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHash.c:309,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:309,1
    - Dst: ExecParallelHashTableInsert
      Src: /src/postgres/src/backend/executor/nodeHash.c:316,1
    - Dst: ExecHashBuildNullTupleStore
      Src: /src/postgres/src/backend/executor/nodeHash.c:323,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeHash.c:324,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:335,1
    - Dst: ExecParallelHashMergeCounters
      Src: /src/postgres/src/backend/executor/nodeHash.c:341,1
    - Dst: BarrierDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:343,1
    - Dst: BarrierDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:344,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:350,1
    - Dst: pg_ceil_log2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:372,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:379,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:387,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:387,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:388,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:389,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 390
    functionName: MultiExecParallelHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - ExecParallelHashTableSetCurrentBatch
    - ExecEvalExprSwitchContext
    - BarrierDetach
    - DatumGetUInt32
    - ExecHashBuildNullTupleStore
    - PHJ_GROW_BUCKETS_PHASE
    - Assert
    - ExecProcNode
    - outerPlanState
    - pg_ceil_log2_32
    - ExecParallelHashTableInsert
    - ExecParallelHashEnsureBatchAccessors
    - ExecParallelHashMergeCounters
    - PHJ_GROW_BATCHES_PHASE
    - BarrierAttach
    - TupIsNull
    - tuplestore_puttupleslot
    - sts_end_write
    - BarrierPhase
    - BarrierArriveAndWait
    - ExecParallelHashIncreaseNumBatches
    - ExecParallelHashIncreaseNumBuckets
    linkageType: ''
    returnType: void
    signature: void MultiExecParallelHash(HashState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:404,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:409,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:421,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHash.c:426,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:426,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeHash.c:426,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeHash.c:432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Hash*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 443
    functionName: ExecInitHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - ExecAssignExprContext
    - Assert
    - makeNode
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - outerPlan
    linkageType: ''
    returnType: HashState
    signature: 'HashState *

      ExecInitHash(Hash *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHash.c:459,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 461
    functionName: ExecEndHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndHash(HashState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeHash.c:490,1
    - Dst: ExecChooseHashTableSize
      Src: /src/postgres/src/backend/executor/nodeHash.c:499,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:500,1
    - Dst: pg_ceil_log2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:509,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/nodeHash.c:518,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:553,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeHash.c:561,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeHash.c:565,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeHash.c:569,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:575,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:585,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:587,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:588,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:590,1
    - Dst: PrepareTempTablespaces
      Src: /src/postgres/src/backend/executor/nodeHash.c:594,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:597,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHash.c:613,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:622,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:623,1
    - Dst: ExecParallelHashJoinSetUpBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:630,1
    - Dst: ExecParallelHashTableAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:637,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:653,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:655,1
    - Dst: ExecHashBuildSkewHash
      Src: /src/postgres/src/backend/executor/nodeHash.c:663,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:665,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 71
    argCount: 1
    argNames:
    - state
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 669
    functionName: ExecHashTableCreate
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ExecParallelHashJoinSetUpBatches
    - ExecHashBuildSkewHash
    - palloc0_array
    - BarrierPhase
    - Assert
    - outerPlan
    - PrepareTempTablespaces
    - BarrierArriveAndWait
    - AllocSetContextCreate
    - MemoryContextSwitchTo
    - ExecParallelHashTableAlloc
    - palloc_object
    - printf
    - pg_ceil_log2_32
    - OidIsValid
    - BarrierAttach
    - ExecChooseHashTableSize
    linkageType: ''
    returnType: HashJoinTable
    signature: HashJoinTable ExecHashTableCreate(HashState *state)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:710,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:711,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/nodeHash.c:717,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:730,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:778,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:799,1
    - Dst: pg_prevpower2_size_t
      Src: /src/postgres/src/backend/executor/nodeHash.c:801,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:805,1
    - Dst: ceil
      Src: /src/postgres/src/backend/executor/nodeHash.c:807,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:808,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:811,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:813,1
    - Dst: ExecChooseHashTableSize
      Src: /src/postgres/src/backend/executor/nodeHash.c:834,1
    - Dst: pg_nextpower2_size_t
      Src: /src/postgres/src/backend/executor/nodeHash.c:853,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:854,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:867,1
    - Dst: ceil
      Src: /src/postgres/src/backend/executor/nodeHash.c:870,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:871,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:873,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:930,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:966,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:967,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 68
    argCount: 9
    argNames:
    - ntuples
    - tupwidth
    - useskew
    - try_combined_hash_mem
    - parallel_workers
    - space_allowed
    - numbuckets
    - numbatches
    - num_skew_mcvs
    argTypes:
    - double
    - int
    - bool
    - bool
    - int
    - size_t*
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 682
    functionDepth: 3
    functionLinenumber: 682
    functionLinenumberEnd: 971
    functionName: ExecChooseHashTableSize
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - pg_prevpower2_size_t
    - Assert
    - ceil
    - Max
    - pg_nextpower2_size_t
    - get_hash_memory_limit
    - Min
    - MAXALIGN
    - ExecChooseHashTableSize
    - pg_nextpower2_32
    linkageType: ''
    returnType: void
    signature: "void ExecChooseHashTableSize(double ntuples, int tupwidth, bool useskew,\n\t\t\t\t\t\tbool
      try_combined_hash_mem,\n\t\t\t\t\t\tint parallel_workers,\n\t\t\t\t\t\tsize_t
      *space_allowed,\n\t\t\t\t\t\tint *numbuckets,\n\t\t\t\t\t\tint *numbatches,\n\t\t\t\t\t\tint
      *num_skew_mcvs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHash.c:995,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHash.c:997,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeHash.c:1002,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:1005,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 1006
    functionName: ExecHashTableDestroy
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextDelete
    - BufFileClose
    linkageType: ''
    returnType: void
    signature: void ExecHashTableDestroy(HashJoinTable hashtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1022
    functionDepth: 0
    functionLinenumber: 1022
    functionLinenumberEnd: 1047
    functionName: ExecHashIncreaseBatchSize
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ExecHashIncreaseBatchSize(HashJoinTable hashtable)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:1069,1
    - Dst: ExecHashIncreaseBatchSize
      Src: /src/postgres/src/backend/executor/nodeHash.c:1073,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1077,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:1080,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:1086,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1089,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1090,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:1092,1
    - Dst: PrepareTempTablespaces
      Src: /src/postgres/src/backend/executor/nodeHash.c:1095,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1100,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1116,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1122,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeHash.c:1131,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:1147,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1148,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1154,1
    - Dst: dense_alloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1162,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1163,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1172,1
    - Dst: ExecHashJoinSaveTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1173,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1173,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1183,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1186,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:1190,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:1195,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:1211,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1054
    functionDepth: 1
    functionLinenumber: 1054
    functionLinenumberEnd: 1215
    functionName: ExecHashIncreaseNumBatches
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - PrepareTempTablespaces
    - printf
    - HASH_CHUNK_DATA
    - ExecHashGetBucketAndBatch
    - memcpy
    - Assert
    - repalloc0_array
    - pfree
    - HJTUPLE_MINTUPLE
    - ExecHashJoinSaveTuple
    - MAXALIGN
    - CHECK_FOR_INTERRUPTS
    - dense_alloc
    - memset
    - repalloc_array
    - ExecHashIncreaseBatchSize
    - palloc0_array
    - MemoryContextSwitchTo
    - Min
    linkageType: ''
    returnType: void
    signature: void ExecHashIncreaseNumBatches(HashJoinTable hashtable)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1227,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1227,1
    - Dst: PHJ_GROW_BATCHES_PHASE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1234,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1234,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1244,1
    - Dst: ExecParallelHashCloseBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1259,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/nodeHash.c:1269,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:1278,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1290,1
    - Dst: ExecParallelHashJoinSetUpBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:1291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1292,1
    - Dst: pg_prevpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:1320,1
    - Dst: ceil
      Src: /src/postgres/src/backend/executor/nodeHash.c:1322,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:1323,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:1325,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:1326,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:1327,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/nodeHash.c:1329,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1332,1
    - Dst: dsa_pointer_atomic_init
      Src: /src/postgres/src/backend/executor/nodeHash.c:1335,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1343,1
    - Dst: dsa_pointer_atomic_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:1345,1
    - Dst: ExecParallelHashCloseBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1357,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1363,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1369,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1370,1
    - Dst: ExecParallelHashRepartitionFirst
      Src: /src/postgres/src/backend/executor/nodeHash.c:1372,1
    - Dst: ExecParallelHashRepartitionRest
      Src: /src/postgres/src/backend/executor/nodeHash.c:1373,1
    - Dst: ExecParallelHashMergeCounters
      Src: /src/postgres/src/backend/executor/nodeHash.c:1374,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1376,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1387,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1395,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1396,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1398,1
    - Dst: NthParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1413,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:1437,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1444,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 84
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1222
    functionDepth: 3
    functionLinenumber: 1222
    functionLinenumberEnd: 1447
    functionName: ExecParallelHashIncreaseNumBatches
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - pg_prevpower2_32
    - ceil
    - ExecParallelHashTableSetCurrentBatch
    - dsa_get_address
    - NthParallelHashJoinBatch
    - get_hash_memory_limit
    - Assert
    - dsa_pointer_atomic_init
    - dsa_pointer_atomic_write
    - ExecParallelHashEnsureBatchAccessors
    - dsa_free
    - ExecParallelHashMergeCounters
    - PHJ_GROW_BATCHES_PHASE
    - ExecParallelHashRepartitionRest
    - ExecParallelHashCloseBatchAccessors
    - pg_nextpower2_32
    - ExecParallelHashJoinSetUpBatches
    - BarrierPhase
    - BarrierArriveAndWait
    - ExecParallelHashRepartitionFirst
    - Max
    - dsa_allocate
    - Min
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1460,1
    - Dst: ExecParallelHashPopChunkQueue
      Src: /src/postgres/src/backend/executor/nodeHash.c:1462,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:1469,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1470,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1476,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1479,1
    - Dst: ExecParallelHashTupleAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1484,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1488,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1488,1
    - Dst: ExecParallelHashPushTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1489,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1495,1
    - Dst: sts_puttuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1499,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1507,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1508,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:1512,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1514,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1516
      start: 1454
    functionDepth: 1
    functionLinenumber: 1454
    functionLinenumberEnd: 1516
    functionName: ExecParallelHashRepartitionFirst
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - ExecParallelHashPopChunkQueue
    - memcpy
    - ExecParallelHashPushTuple
    - dsa_free
    - Assert
    - CHECK_FOR_INTERRUPTS
    - HJTUPLE_MINTUPLE
    - sts_puttuple
    - HASH_CHUNK_DATA
    - MAXALIGN
    - ExecParallelHashTupleAlloc
    - ExecHashGetBucketAndBatch
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashRepartitionFirst(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1532,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1533,1
    - Dst: NthParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1537,1
    - Dst: sts_attach
      Src: /src/postgres/src/backend/executor/nodeHash.c:1539,1
    - Dst: ParallelHashJoinBatchInner
      Src: /src/postgres/src/backend/executor/nodeHash.c:1539,1
    - Dst: sts_begin_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:1551,1
    - Dst: sts_parallel_scan_next
      Src: /src/postgres/src/backend/executor/nodeHash.c:1552,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1554,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1559,1
    - Dst: sts_puttuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1567,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1570,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:1572,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:1575,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1521
    functionDepth: 1
    functionLinenumber: 1521
    functionLinenumberEnd: 1576
    functionName: ExecParallelHashRepartitionRest
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - ParallelHashJoinBatchInner
    - sts_end_parallel_scan
    - palloc0_array
    - sts_begin_parallel_scan
    - pfree
    - CHECK_FOR_INTERRUPTS
    - sts_puttuple
    - dsa_get_address
    - NthParallelHashJoinBatch
    - sts_attach
    - MAXALIGN
    - sts_parallel_scan_next
    - ExecHashGetBucketAndBatch
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashRepartitionRest(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeHash.c:1587,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:1603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1581
    functionDepth: 1
    functionLinenumber: 1581
    functionLinenumberEnd: 1604
    functionName: ExecParallelHashMergeCounters
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 2
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashMergeCounters(HashJoinTable hashtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:1621,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1628,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1629,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1630,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1639,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeHash.c:1642,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:1653,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1657,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1665,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1666,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1670,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1672
      start: 1611
    functionDepth: 1
    functionLinenumber: 1611
    functionLinenumberEnd: 1672
    functionName: ExecHashIncreaseNumBuckets
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - Assert
    - CHECK_FOR_INTERRUPTS
    - HJTUPLE_MINTUPLE
    - memset
    - printf
    - repalloc_array
    - HASH_CHUNK_DATA
    - MAXALIGN
    - ExecHashGetBucketAndBatch
    linkageType: ''
    returnType: void
    signature: void ExecHashIncreaseNumBuckets(HashJoinTable hashtable)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1682,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1682,1
    - Dst: PHJ_GROW_BUCKETS_PHASE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1689,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1689,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1693,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:1703,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/nodeHash.c:1705,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1707,1
    - Dst: dsa_pointer_atomic_init
      Src: /src/postgres/src/backend/executor/nodeHash.c:1710,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1722,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1728,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1729,1
    - Dst: ExecParallelHashPopChunkQueue
      Src: /src/postgres/src/backend/executor/nodeHash.c:1730,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:1736,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1741,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1743,1
    - Dst: ExecParallelHashPushTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1746,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1750,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1751,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1755,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1757,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1674
    functionDepth: 1
    functionLinenumber: 1674
    functionLinenumberEnd: 1760
    functionName: ExecParallelHashIncreaseNumBuckets
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - ExecParallelHashEnsureBatchAccessors
    - ExecParallelHashPopChunkQueue
    - PHJ_GROW_BUCKETS_PHASE
    - BarrierPhase
    - dsa_free
    - Assert
    - ExecParallelHashPushTuple
    - BarrierArriveAndWait
    - dsa_pointer_atomic_init
    - HJTUPLE_MINTUPLE
    - CHECK_FOR_INTERRUPTS
    - ExecParallelHashTableSetCurrentBatch
    - dsa_get_address
    - dsa_allocate
    - HASH_CHUNK_DATA
    - MAXALIGN
    - ExecHashGetBucketAndBatch
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashIncreaseNumBuckets(HashJoinTable hashtable)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1779,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1783,1
    - Dst: dense_alloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1799,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1802,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1802,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1810,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1810,1
    - Dst: ExecHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:1842,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1849,1
    - Dst: ExecHashJoinSaveTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1850,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1857,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - hashtable
    - slot
    - hashvalue
    argTypes:
    - HashJoinTable
    - TupleTableSlot*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1858
      start: 1773
    functionDepth: 2
    functionLinenumber: 1773
    functionLinenumberEnd: 1858
    functionName: ExecHashTableInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - memcpy
    - Assert
    - ExecHashIncreaseNumBatches
    - heap_free_minimal_tuple
    - HJTUPLE_MINTUPLE
    - ExecHashJoinSaveTuple
    - dense_alloc
    - HeapTupleHeaderClearMatch
    - ExecFetchSlotMinimalTuple
    - ExecHashGetBucketAndBatch
    linkageType: ''
    returnType: void
    signature: "void ExecHashTableInsert(HashJoinTable hashtable,\n\t\t\t\t\tTupleTableSlot
      *slot,\n\t\t\t\t\tuint32 hashvalue)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1870,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1876,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1883,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1883,1
    - Dst: ExecParallelHashTupleAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1885,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1893,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1893,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1894,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1894,1
    - Dst: ExecParallelHashPushTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1897,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1902,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1904,1
    - Dst: ExecParallelHashTuplePrealloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1909,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1913,1
    - Dst: sts_puttuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1915,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1921,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - hashtable
    - slot
    - hashvalue
    argTypes:
    - HashJoinTable
    - TupleTableSlot*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1922
      start: 1864
    functionDepth: 1
    functionLinenumber: 1864
    functionLinenumberEnd: 1922
    functionName: ExecParallelHashTableInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - memcpy
    - BarrierPhase
    - ExecParallelHashPushTuple
    - Assert
    - heap_free_minimal_tuple
    - HJTUPLE_MINTUPLE
    - sts_puttuple
    - HeapTupleHeaderClearMatch
    - ExecFetchSlotMinimalTuple
    - ExecParallelHashTuplePrealloc
    - MAXALIGN
    - ExecParallelHashTupleAlloc
    - ExecHashGetBucketAndBatch
    linkageType: ''
    returnType: void
    signature: "void ExecParallelHashTableInsert(HashJoinTable hashtable,\n\t\t\t\t\t\t\tTupleTableSlot
      *slot,\n\t\t\t\t\t\t\tuint32 hashvalue)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1936,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1942,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1943,1
    - Dst: ExecParallelHashTupleAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1944,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1948,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1948,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1949,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1949,1
    - Dst: ExecParallelHashPushTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1950,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - hashtable
    - slot
    - hashvalue
    argTypes:
    - HashJoinTable
    - TupleTableSlot*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1955
      start: 1930
    functionDepth: 1
    functionLinenumber: 1930
    functionLinenumberEnd: 1955
    functionName: ExecParallelHashTableInsertCurrentBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ExecParallelHashPushTuple
    - Assert
    - heap_free_minimal_tuple
    - HJTUPLE_MINTUPLE
    - HeapTupleHeaderClearMatch
    - ExecFetchSlotMinimalTuple
    - ExecParallelHashTupleAlloc
    - ExecHashGetBucketAndBatch
    linkageType: ''
    returnType: void
    signature: "void ExecParallelHashTableInsertCurrentBatch(HashJoinTable hashtable,\n\t\t\t\t\t\t\t\t\t\tTupleTableSlot
      *slot,\n\t\t\t\t\t\t\t\t\t\tuint32 hashvalue)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_rotate_right32
      Src: /src/postgres/src/backend/executor/nodeHash.c:1997,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - hashtable
    - hashvalue
    - bucketno
    - batchno
    argTypes:
    - HashJoinTable
    - uint32
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1985
    functionDepth: 1
    functionLinenumber: 1985
    functionLinenumberEnd: 2005
    functionName: ExecHashGetBucketAndBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 8
    functionsReached:
    - pg_rotate_right32
    linkageType: ''
    returnType: void
    signature: "void ExecHashGetBucketAndBatch(HashJoinTable hashtable,\n\t\t\t\t\t\t
      \ uint32 hashvalue,\n\t\t\t\t\t\t  int *bucketno,\n\t\t\t\t\t\t  int *batchno)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2047,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2047,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeHash.c:2052,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - hjstate
    - econtext
    argTypes:
    - HashJoinState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2066
      start: 2017
    functionDepth: 4
    functionLinenumber: 2017
    functionLinenumberEnd: 2066
    functionName: ExecScanHashBucket
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ExecStoreMinimalTuple
    - ExecQualAndReset
    - HJTUPLE_MINTUPLE
    linkageType: ''
    returnType: bool
    signature: "bool ExecScanHashBucket(HashJoinState *hjstate,\n\t\t\t\t   ExprContext
      *econtext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelHashNextTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2092,1
    - Dst: ExecParallelHashFirstTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2094,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2104,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2104,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeHash.c:2109,1
    - Dst: ExecParallelHashNextTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - hjstate
    - econtext
    argTypes:
    - HashJoinState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2123
      start: 2078
    functionDepth: 4
    functionLinenumber: 2078
    functionLinenumberEnd: 2123
    functionName: ExecParallelScanHashBucket
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ExecParallelHashNextTuple
    - HJTUPLE_MINTUPLE
    - ExecParallelHashFirstTuple
    - ExecQualAndReset
    - ExecStoreMinimalTuple
    linkageType: ''
    returnType: bool
    signature: "bool ExecParallelScanHashBucket(HashJoinState *hjstate,\n\t\t\t\t\t\t
      \  ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hjstate
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2143
      start: 2129
    functionDepth: 0
    functionLinenumber: 2129
    functionLinenumberEnd: 2143
    functionName: ExecPrepHashTableForUnmatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ExecPrepHashTableForUnmatched(HashJoinState *hjstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2157,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:2157,1
    - Dst: BarrierArriveAndDetachExceptLast
      Src: /src/postgres/src/backend/executor/nodeHash.c:2167,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:2173,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:2174,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2188,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:2188,1
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2197,1
    - Dst: ExecPrepHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHash.c:2202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - hjstate
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2150
    functionDepth: 1
    functionLinenumber: 2150
    functionLinenumberEnd: 2205
    functionName: ExecParallelPrepHashTableForUnmatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - sts_end_parallel_scan
    - BarrierPhase
    - BarrierArriveAndDetachExceptLast
    - Assert
    - Max
    - ExecHashTableDetachBatch
    - ExecPrepHashTableForUnmatched
    linkageType: ''
    returnType: bool
    signature: bool ExecParallelPrepHashTableForUnmatched(HashJoinState *hjstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderHasMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2247,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2247,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2252,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2252,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:2262,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:2272,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - hjstate
    - econtext
    argTypes:
    - HashJoinState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2279
      start: 2215
    functionDepth: 1
    functionLinenumber: 2215
    functionLinenumberEnd: 2279
    functionName: ExecScanHashTableForUnmatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - HeapTupleHeaderHasMatch
    - CHECK_FOR_INTERRUPTS
    - HJTUPLE_MINTUPLE
    - ExecStoreMinimalTuple
    linkageType: ''
    returnType: bool
    signature: bool ExecScanHashTableForUnmatched(HashJoinState *hjstate, ExprContext
      *econtext)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelHashNextTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2304,1
    - Dst: ExecParallelHashFirstTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2306,1
    - Dst: HeapTupleHeaderHasMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2313,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2313,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2318,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2318,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:2328,1
    - Dst: ExecParallelHashNextTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2334,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:2338,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - hjstate
    - econtext
    argTypes:
    - HashJoinState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2345
      start: 2289
    functionDepth: 1
    functionLinenumber: 2289
    functionLinenumberEnd: 2345
    functionName: ExecParallelScanHashTableForUnmatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - ExecParallelHashNextTuple
    - HeapTupleHeaderHasMatch
    - CHECK_FOR_INTERRUPTS
    - HJTUPLE_MINTUPLE
    - ExecParallelHashFirstTuple
    - ExecStoreMinimalTuple
    linkageType: ''
    returnType: bool
    signature: "bool ExecParallelScanHashTableForUnmatched(HashJoinState *hjstate,\n\t\t\t\t\t\t\t\t\t
      \ ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeHash.c:2362,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:2363,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:2366,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:2370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2374
      start: 2352
    functionDepth: 1
    functionLinenumber: 2352
    functionLinenumberEnd: 2374
    functionName: ExecHashTableReset
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - palloc0_array
    - MemoryContextReset
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void ExecHashTableReset(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2391,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2391,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2401,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2401,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2403
      start: 2380
    functionDepth: 1
    functionLinenumber: 2380
    functionLinenumberEnd: 2403
    functionName: ExecHashTableResetMatchFlags
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderClearMatch
    - HJTUPLE_MINTUPLE
    linkageType: ''
    returnType: void
    signature: void ExecHashTableResetMatchFlags(HashJoinTable hashtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHash.c:2409,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeHash.c:2416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2417
      start: 2406
    functionDepth: 1
    functionLinenumber: 2406
    functionLinenumberEnd: 2417
    functionName: ExecReScanHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanHash(HashState *node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:2436,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/executor/nodeHash.c:2445,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeHash.c:2446,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/executor/nodeHash.c:2447,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeHash.c:2448,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:2449,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/executor/nodeHash.c:2452,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/executor/nodeHash.c:2473,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeHash.c:2474,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:2490,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/executor/nodeHash.c:2503,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/executor/nodeHash.c:2506,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHash.c:2531,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/executor/nodeHash.c:2531,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2555,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/executor/nodeHash.c:2567,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeHash.c:2570,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 4
    argNames:
    - hashstate
    - hashtable
    - node
    - mcvsToUse
    argTypes:
    - HashState*
    - HashJoinTable
    - Hash*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2571
      start: 2428
    functionDepth: 3
    functionLinenumber: 2428
    functionLinenumberEnd: 2571
    functionName: ExecHashBuildSkewHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - SearchSysCache3
    - MemoryContextAllocZero
    - MemoryContextAlloc
    - HeapTupleIsValid
    - free_attstatsslot
    - ReleaseSysCache
    - DatumGetUInt32
    - FunctionCall1Coll
    - get_attstatsslot
    - OidIsValid
    - ObjectIdGetDatum
    - BoolGetDatum
    - pg_nextpower2_32
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: "void ExecHashBuildSkewHash(HashState *hashstate, HashJoinTable hashtable,\n\t\t\t\t\t
      \ Hash *node, int mcvsToUse)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - hashtable
    - hashvalue
    argTypes:
    - HashJoinTable
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2616
      start: 2580
    functionDepth: 0
    functionLinenumber: 2580
    functionLinenumberEnd: 2616
    functionName: ExecHashGetSkewBucket
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ExecHashGetSkewBucket(HashJoinTable hashtable, uint32 hashvalue)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2633,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2639,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:2642,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2642,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2643,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2648,1
    - Dst: ExecHashRemoveNextSkewBucket
      Src: /src/postgres/src/backend/executor/nodeHash.c:2657,1
    - Dst: ExecHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:2661,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2664,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - hashtable
    - slot
    - hashvalue
    - bucketNumber
    argTypes:
    - HashJoinTable
    - TupleTableSlot*
    - uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2665
      start: 2626
    functionDepth: 2
    functionLinenumber: 2626
    functionLinenumberEnd: 2665
    functionName: ExecHashSkewTableInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - memcpy
    - MemoryContextAlloc
    - Assert
    - ExecHashIncreaseNumBatches
    - heap_free_minimal_tuple
    - HJTUPLE_MINTUPLE
    - HeapTupleHeaderClearMatch
    - ExecFetchSlotMinimalTuple
    - ExecHashRemoveNextSkewBucket
    linkageType: ''
    returnType: void
    signature: "void ExecHashSkewTableInsert(HashJoinTable hashtable,\n\t\t\t\t\t\tTupleTableSlot
      *slot,\n\t\t\t\t\t\tuint32 hashvalue,\n\t\t\t\t\t\tint bucketNumber)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2694,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2709,1
    - Dst: dense_alloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2722,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:2723,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2724,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2735,1
    - Dst: ExecHashJoinSaveTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2736,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2739,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:2753,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2770,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2781,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2782,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2673
    functionDepth: 2
    functionLinenumber: 2673
    functionLinenumberEnd: 2788
    functionName: ExecHashRemoveNextSkewBucket
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - memcpy
    - pfree
    - Assert
    - CHECK_FOR_INTERRUPTS
    - HJTUPLE_MINTUPLE
    - ExecHashJoinSaveTuple
    - dense_alloc
    - ExecHashGetBucketAndBatch
    linkageType: ''
    returnType: void
    signature: void ExecHashRemoveNextSkewBucket(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:2809,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeHash.c:2810,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:2811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2813
      start: 2798
    functionDepth: 1
    functionLinenumber: 2798
    functionLinenumberEnd: 2813
    functionName: ExecHashBuildNullTupleStore
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 2
    functionsReached:
    - tuplestore_begin_heap
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: Tuplestorestate
    signature: 'Tuplestorestate *

      ExecHashBuildNullTupleStore(HashJoinTable hashtable)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeHash.c:2827,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeHash.c:2828,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeHash.c:2829,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeHash.c:2830,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - HashState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2831
      start: 2818
    functionDepth: 1
    functionLinenumber: 2818
    functionLinenumberEnd: 2831
    functionName: ExecHashEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecHashEstimate(HashState *node, ParallelContext *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeHash.c:2848,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeHash.c:2851,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2854,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - HashState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2856
      start: 2837
    functionDepth: 1
    functionLinenumber: 2837
    functionLinenumberEnd: 2856
    functionName: ExecHashInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: void ExecHashInitializeDSM(HashState *node, ParallelContext *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeHash.c:2877,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - HashState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2879
      start: 2862
    functionDepth: 1
    functionLinenumber: 2862
    functionLinenumberEnd: 2879
    functionName: ExecHashInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: void ExecHashInitializeWorker(HashState *node, ParallelWorkerContext
      *pwcxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/nodeHash.c:2893,1
    - Dst: ExecHashAccumInstrumentation
      Src: /src/postgres/src/backend/executor/nodeHash.c:2896,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2897
      start: 2888
    functionDepth: 1
    functionLinenumber: 2888
    functionLinenumberEnd: 2897
    functionName: ExecShutdownHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - ExecHashAccumInstrumentation
    linkageType: ''
    returnType: void
    signature: void ExecShutdownHash(HashState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2915,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:2916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2917
      start: 2903
    functionDepth: 0
    functionLinenumber: 2903
    functionLinenumberEnd: 2917
    functionName: ExecHashRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecHashRetrieveInstrumentation(HashState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2938,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2940,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2942,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2944,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - instrument
    - hashtable
    argTypes:
    - HashInstrumentation*
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2948
      start: 2934
    functionDepth: 0
    functionLinenumber: 2934
    functionLinenumberEnd: 2948
    functionName: ExecHashAccumInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - Max
    linkageType: ''
    returnType: void
    signature: "void ExecHashAccumInstrumentation(HashInstrumentation *instrument,\n\t\t\t\t\t\t\t
      HashJoinTable hashtable)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:2960,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2968,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:2989,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:3000,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:3010,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:3014,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 2
    argNames:
    - hashtable
    - size
    argTypes:
    - HashJoinTable
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 2953
    functionDepth: 1
    functionLinenumber: 2953
    functionLinenumberEnd: 3020
    functionName: dense_alloc
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - HASH_CHUNK_DATA
    - MAXALIGN
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: 'void *

      dense_alloc(HashJoinTable hashtable, Size size)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:3044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3057,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3057,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:3059,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3062,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3063,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3063,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeHash.c:3069,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3080,1
    - Dst: ExecParallelHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:3084,1
    - Dst: ExecParallelHashIncreaseNumBuckets
      Src: /src/postgres/src/backend/executor/nodeHash.c:3086,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3102,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3102,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3115,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3133,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/nodeHash.c:3141,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3146,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3170,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:3170,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3170,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:3171,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 3
    argNames:
    - hashtable
    - size
    - shared
    argTypes:
    - HashJoinTable
    - size_t
    - dsa_pointer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3174
      start: 3033
    functionDepth: 4
    functionLinenumber: 3033
    functionLinenumberEnd: 3174
    functionName: ExecParallelHashTupleAlloc
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - LWLockAcquire
    - BarrierPhase
    - Assert
    - ExecParallelHashIncreaseNumBatches
    - dsa_get_address
    - ExecParallelHashIncreaseNumBuckets
    - LWLockRelease
    - dsa_allocate
    - HASH_CHUNK_DATA
    - MAXALIGN
    linkageType: ''
    returnType: HashJoinTuple
    signature: "HashJoinTuple ExecParallelHashTupleAlloc(HashJoinTable hashtable,
      size_t size,\n\t\t\t\t\t\t   dsa_pointer *shared)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3189,1
    - Dst: dsa_allocate0
      Src: /src/postgres/src/backend/executor/nodeHash.c:3193,1
    - Dst: EstimateParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:3194,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3196,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:3202,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:3207,1
    - Dst: NthParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:3213,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHash.c:3220,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3224,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3225,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:3226,1
    - Dst: BarrierDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3227,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/nodeHash.c:3234,1
    - Dst: sts_initialize
      Src: /src/postgres/src/backend/executor/nodeHash.c:3236,1
    - Dst: ParallelHashJoinBatchInner
      Src: /src/postgres/src/backend/executor/nodeHash.c:3236,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/nodeHash.c:3243,1
    - Dst: sts_initialize
      Src: /src/postgres/src/backend/executor/nodeHash.c:3245,1
    - Dst: ParallelHashJoinBatchOuter
      Src: /src/postgres/src/backend/executor/nodeHash.c:3245,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:3255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - hashtable
    - nbatch
    argTypes:
    - HashJoinTable
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3256
      start: 3181
    functionDepth: 1
    functionLinenumber: 3181
    functionLinenumberEnd: 3256
    functionName: ExecParallelHashJoinSetUpBatches
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 2
    functionsReached:
    - ParallelHashJoinBatchInner
    - palloc0_array
    - BarrierPhase
    - Assert
    - sts_initialize
    - ParallelHashJoinBatchOuter
    - BarrierArriveAndWait
    - MemoryContextSwitchTo
    - EstimateParallelHashJoinBatch
    - dsa_allocate0
    - dsa_get_address
    - BarrierInit
    - NthParallelHashJoinBatch
    - BarrierAttach
    - BarrierDetach
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashJoinSetUpBatches(HashJoinTable hashtable, int
      nbatch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:3269,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:3270,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3271,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3272,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:3274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3276
      start: 3261
    functionDepth: 1
    functionLinenumber: 3261
    functionLinenumberEnd: 3276
    functionName: ExecParallelHashCloseBatchAccessors
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - pfree
    - sts_end_parallel_scan
    - sts_end_write
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashCloseBatchAccessors(HashJoinTable hashtable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelHashCloseBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:3294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3302,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3302,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:3308,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:3313,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3317,1
    - Dst: NthParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:3323,1
    - Dst: sts_attach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3330,1
    - Dst: ParallelHashJoinBatchInner
      Src: /src/postgres/src/backend/executor/nodeHash.c:3330,1
    - Dst: sts_attach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3334,1
    - Dst: ParallelHashJoinBatchOuter
      Src: /src/postgres/src/backend/executor/nodeHash.c:3334,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:3340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3341
      start: 3282
    functionDepth: 2
    functionLinenumber: 3282
    functionLinenumberEnd: 3341
    functionName: ExecParallelHashEnsureBatchAccessors
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - ParallelHashJoinBatchInner
    - palloc0_array
    - DsaPointerIsValid
    - Assert
    - ParallelHashJoinBatchOuter
    - MemoryContextSwitchTo
    - dsa_get_address
    - NthParallelHashJoinBatch
    - sts_attach
    - ExecParallelHashCloseBatchAccessors
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashEnsureBatchAccessors(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/nodeHash.c:3355,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3357,1
    - Dst: dsa_pointer_atomic_init
      Src: /src/postgres/src/backend/executor/nodeHash.c:3359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - hashtable
    - batchno
    argTypes:
    - HashJoinTable
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3360
      start: 3346
    functionDepth: 1
    functionLinenumber: 3346
    functionLinenumberEnd: 3360
    functionName: ExecParallelHashTableAlloc
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - dsa_get_address
    - dsa_pointer_atomic_init
    - dsa_allocate
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashTableAlloc(HashJoinTable hashtable, int batchno)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3377,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3378,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3381,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3381,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3382,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3395,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3411,1
    - Dst: BarrierArriveAndDetachExceptLast
      Src: /src/postgres/src/backend/executor/nodeHash.c:3412,1
    - Dst: BarrierArriveAndDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3422,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3422,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3425,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3428,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:3431,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3434,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:3436,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:3447,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3453
      start: 3366
    functionDepth: 1
    functionLinenumber: 3366
    functionLinenumberEnd: 3453
    functionName: ExecHashTableDetachBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - sts_end_parallel_scan
    - BarrierArriveAndDetach
    - BarrierPhase
    - BarrierArriveAndDetachExceptLast
    - Assert
    - DsaPointerIsValid
    - dsa_free
    - dsa_get_address
    - Max
    linkageType: ''
    returnType: void
    signature: void ExecHashTableDetachBatch(HashJoinTable hashtable)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3467,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3468,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3470,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:3479,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:3480,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3481,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3482,1
    - Dst: BarrierArriveAndDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3487,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3493,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3493,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3495,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:3497,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3503
      start: 3458
    functionDepth: 1
    functionLinenumber: 3458
    functionLinenumberEnd: 3503
    functionName: ExecHashTableDetach
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - sts_end_parallel_scan
    - BarrierArriveAndDetach
    - BarrierPhase
    - DsaPointerIsValid
    - Assert
    - dsa_free
    - sts_end_write
    linkageType: ''
    returnType: void
    signature: void ExecHashTableDetach(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3514,1
    - Dst: dsa_pointer_atomic_read
      Src: /src/postgres/src/backend/executor/nodeHash.c:3515,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - hashtable
    - bucketno
    argTypes:
    - HashJoinTable
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3519
      start: 3508
    functionDepth: 1
    functionLinenumber: 3508
    functionLinenumberEnd: 3519
    functionName: ExecParallelHashFirstTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 2
    functionsReached:
    - Assert
    - dsa_get_address
    - dsa_pointer_atomic_read
    linkageType: ''
    returnType: HashJoinTuple
    signature: HashJoinTuple ExecParallelHashFirstTuple(HashJoinTable hashtable, int
      bucketno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3529,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hashtable
    - tuple
    argTypes:
    - HashJoinTable
    - HashJoinTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3533
      start: 3524
    functionDepth: 1
    functionLinenumber: 3524
    functionLinenumberEnd: 3533
    functionName: ExecParallelHashNextTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 2
    functionsReached:
    - Assert
    - dsa_get_address
    linkageType: ''
    returnType: HashJoinTuple
    signature: HashJoinTuple ExecParallelHashNextTuple(HashJoinTable hashtable, HashJoinTuple
      tuple)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsa_pointer_atomic_read
      Src: /src/postgres/src/backend/executor/nodeHash.c:3545,1
    - Dst: dsa_pointer_atomic_compare_exchange
      Src: /src/postgres/src/backend/executor/nodeHash.c:3546,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - head
    - tuple
    - tuple_shared
    argTypes:
    - dsa_pointer_atomic*
    - HashJoinTuple
    - dsa_pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3551
      start: 3538
    functionDepth: 0
    functionLinenumber: 3538
    functionLinenumberEnd: 3551
    functionName: ExecParallelHashPushTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 4
    functionsReached:
    - dsa_pointer_atomic_read
    - dsa_pointer_atomic_compare_exchange
    linkageType: ''
    returnType: void
    signature: "void ExecParallelHashPushTuple(dsa_pointer_atomic *head,\n\t\t\t\t\t\t
      \ HashJoinTuple tuple,\n\t\t\t\t\t\t  dsa_pointer tuple_shared)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3559,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3563,1
    - Dst: pg_ceil_log2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:3566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - hashtable
    - batchno
    argTypes:
    - HashJoinTable
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3570
      start: 3556
    functionDepth: 3
    functionLinenumber: 3556
    functionLinenumberEnd: 3570
    functionName: ExecParallelHashTableSetCurrentBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - Assert
    - dsa_get_address
    - pg_ceil_log2_32
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashTableSetCurrentBatch(HashJoinTable hashtable,
      int batchno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeHash.c:3583,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3584,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3588,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3593,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - hashtable
    - shared
    argTypes:
    - HashJoinTable
    - dsa_pointer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3596
      start: 3577
    functionDepth: 1
    functionLinenumber: 3577
    functionLinenumberEnd: 3596
    functionName: ExecParallelHashPopChunkQueue
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 2
    functionsReached:
    - DsaPointerIsValid
    - dsa_get_address
    - LWLockAcquire
    - LWLockRelease
    linkageType: ''
    returnType: HashMemoryChunk
    signature: HashMemoryChunk ExecParallelHashPopChunkQueue(HashJoinTable hashtable,
      dsa_pointer *shared)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:3623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3625,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3626,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3627,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:3627,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeHash.c:3629,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3637,1
    - Dst: ExecParallelHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:3639,1
    - Dst: ExecParallelHashIncreaseNumBuckets
      Src: /src/postgres/src/backend/executor/nodeHash.c:3641,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3657,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3665,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - hashtable
    - batchno
    - size
    argTypes:
    - HashJoinTable
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3668
      start: 3618
    functionDepth: 4
    functionLinenumber: 3618
    functionLinenumberEnd: 3668
    functionName: ExecParallelHashTuplePrealloc
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - LWLockAcquire
    - Assert
    - ExecParallelHashIncreaseNumBatches
    - Max
    - ExecParallelHashIncreaseNumBuckets
    - LWLockRelease
    - MAXALIGN
    linkageType: ''
    returnType: bool
    signature: bool ExecParallelHashTuplePrealloc(HashJoinTable hashtable, int batchno,
      size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:3688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3691
      start: 3679
    functionDepth: 0
    functionLinenumber: 3679
    functionLinenumberEnd: 3691
    functionName: get_hash_memory_limit
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 8
    functionsReached:
    - Min
    linkageType: ''
    returnType: size_t
    signature: size_t get_hash_memory_limit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:153,1
    - Dst: ExecCreateExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:159,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:162,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:166,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - node
    - parent
    argTypes:
    - Expr*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 171
    functionName: ExecInitExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 9
    functionsReached:
    - ExprEvalPushStep
    - ExecInitExprRec
    - makeNode
    - ExecCreateExprSetupSteps
    - ExecReadyExpr
    linkageType: ''
    returnType: ExprState
    signature: 'ExprState *

      ExecInitExpr(Expr *node, PlanState *parent)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:190,1
    - Dst: ExecCreateExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:196,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:199,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:203,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - node
    - ext_params
    argTypes:
    - Expr*
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 208
    functionName: ExecInitExprWithParams
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - ExprEvalPushStep
    - ExecInitExprRec
    - makeNode
    - ExecCreateExprSetupSteps
    - ExecReadyExpr
    linkageType: ''
    returnType: ExprState
    signature: 'ExprState *

      ExecInitExprWithParams(Expr *node, ParamListInfo ext_params)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:239,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:239,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:241,1
    - Dst: ExecCreateExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:250,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:270,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:274,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:285,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:295,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 2
    argNames:
    - qual
    - parent
    argTypes:
    - List*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 228
    functionDepth: 6
    functionLinenumber: 228
    functionLinenumberEnd: 300
    functionName: ExecInitQual
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 7
    functionsReached:
    - lappend_int
    - ExprEvalPushStep
    - Assert
    - ExecInitExprRec
    - makeNode
    - ExecCreateExprSetupSteps
    - ExecReadyExpr
    - IsA
    linkageType: ''
    returnType: ExprState
    signature: 'ExprState *

      ExecInitQual(List *qual, PlanState *parent)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:270,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:274,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 267
    functionDepth: 6
    functionLinenumber: 267
    functionLinenumberEnd: 277
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 11
    functionsReached:
    - lappend_int
    - ExecInitExprRec
    - ExprEvalPushStep
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(Expr, node, qual)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 287
    functionName: foreach_int
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void foreach_int(jump, adjust_jumps)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:321,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:321,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:328,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/executor/execExpr.c:328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - qual
    - parent
    argTypes:
    - List*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 314
    functionDepth: 4
    functionLinenumber: 314
    functionLinenumberEnd: 329
    functionName: ExecInitCheck
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - Assert
    - make_ands_explicit
    - IsA
    - ExecInitExpr
    linkageType: ''
    returnType: ExprState
    signature: 'ExprState *

      ExecInitCheck(List *qual, PlanState *parent)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:342,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:344,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - nodes
    - parent
    argTypes:
    - List*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 334
    functionDepth: 6
    functionLinenumber: 334
    functionLinenumberEnd: 348
    functionName: ExecInitExprList
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 3
    functionsReached:
    - lfirst
    - lappend
    - ExecInitExpr
    linkageType: ''
    returnType: List
    signature: 'List *

      ExecInitExprList(List *nodes, PlanState *parent)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:342,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:344,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 6
    functionLinenumber: 340
    functionLinenumberEnd: 345
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 399
    functionsReached:
    - lfirst
    - lappend
    - ExecInitExpr
    linkageType: ''
    returnType: void
    signature: void foreach(lc, nodes)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:376,1
    - Dst: ExecCreateExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:392,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execExpr.c:397,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:411,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:422,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:478,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:490,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/executor/execExpr.c:497,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:497,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:502,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:507,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:509,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 60
    argCount: 5
    argNames:
    - targetList
    - econtext
    - slot
    - parent
    - inputDesc
    argTypes:
    - List*
    - ExprContext*
    - TupleTableSlot*
    - PlanState*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 369
    functionDepth: 2
    functionLinenumber: 369
    functionLinenumberEnd: 512
    functionName: ExecBuildProjectionInfo
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - ExprEvalPushStep
    - exprType
    - ExecInitExprRec
    - makeNode
    - get_typlen
    - ExecCreateExprSetupSteps
    - ExecReadyExpr
    - TupleDescAttr
    - IsA
    - lfirst_node
    linkageType: ''
    returnType: ProjectionInfo
    signature: "ProjectionInfo *\nExecBuildProjectionInfo(List *targetList,\n\t\t\t\t\t\tExprContext
      *econtext,\n\t\t\t\t\t\tTupleTableSlot *slot,\n\t\t\t\t\t\tPlanState *parent,\n\t\t\t\t\t\tTupleDesc
      inputDesc)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execExpr.c:397,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:411,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:422,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:478,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:490,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/executor/execExpr.c:497,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:497,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:502,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 395
    functionDepth: 2
    functionLinenumber: 395
    functionLinenumberEnd: 504
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 399
    functionsReached:
    - ExprEvalPushStep
    - exprType
    - ExecInitExprRec
    - get_typlen
    - TupleDescAttr
    - IsA
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, targetList)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:555,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execExpr.c:587,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:594,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:600,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:601,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:611,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execExpr.c:613,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:623,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execExpr.c:627,1
    - Dst: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:639,1
    - Dst: ExecPushExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:643,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execExpr.c:655,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:656,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:665,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:666,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:667,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExpr.c:668,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:669,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:672,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:673,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:674,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExpr.c:675,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:678,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:680,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExpr.c:681,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:682,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:684,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:684,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:695,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:700,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:708,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:719,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:729,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:733,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execExpr.c:735,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:741,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:746,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:748,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 81
    argCount: 7
    argNames:
    - targetList
    - evalTargetList
    - targetColnos
    - relDesc
    - econtext
    - slot
    - parent
    argTypes:
    - List*
    - bool
    - List*
    - TupleDesc
    - ExprContext*
    - TupleTableSlot*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 546
    functionDepth: 3
    functionLinenumber: 546
    functionLinenumberEnd: 751
    functionName: ExecBuildUpdateProjection
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - lfirst_int
    - errcode
    - exprType
    - bms_add_member
    - elog
    - Assert
    - bms_is_member
    - errmsg
    - list_length
    - ExecReadyExpr
    - ExecPushExprSetupSteps
    - ExprEvalPushStep
    - ereport
    - ExecInitExprRec
    - TupleDescCompactAttr
    - TupleDescAttr
    - lfirst_node
    - format_type_be
    - makeNode
    - expr_setup_walker
    - errdetail
    linkageType: ''
    returnType: ProjectionInfo
    signature: "ProjectionInfo *\nExecBuildUpdateProjection(List *targetList,\n\t\t\t\t\t\t
      \ bool evalTargetList,\n\t\t\t\t\t\t  List *targetColnos,\n\t\t\t\t\t\t  TupleDesc
      relDesc,\n\t\t\t\t\t\t  ExprContext *econtext,\n\t\t\t\t\t\t  TupleTableSlot
      *slot,\n\t\t\t\t\t\t  PlanState *parent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execExpr.c:587,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 597
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 399
    functionsReached:
    - elog
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, targetList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:611,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execExpr.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 609
    functionDepth: 3
    functionLinenumber: 609
    functionLinenumberEnd: 614
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 399
    functionsReached:
    - bms_add_member
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, targetColnos)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execExpr.c:655,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:656,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:665,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:666,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:667,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExpr.c:668,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:669,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:672,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:673,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:674,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExpr.c:675,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:678,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:680,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExpr.c:681,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:682,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:684,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:684,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:695,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:700,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:708,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 711
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 17
    functionsReached:
    - format_type_be
    - ExprEvalPushStep
    - lfirst_int
    - Assert
    - errcode
    - exprType
    - ereport
    - ExecInitExprRec
    - errmsg
    - errdetail
    - TupleDescAttr
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void forboth(lc, targetList, lc2, targetColnos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExpr.c:770,1
    - Dst: expression_planner
      Src: /src/postgres/src/backend/executor/execExpr.c:772,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:774,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExpr.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - node
    - estate
    argTypes:
    - Expr*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 764
    functionDepth: 2
    functionLinenumber: 764
    functionLinenumberEnd: 779
    functionName: ExecPrepareExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 5
    functionsReached:
    - ExecInitExpr
    - expression_planner
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: ExprState
    signature: 'ExprState *

      ExecPrepareExpr(Expr *node, EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExpr.c:798,1
    - Dst: expression_planner
      Src: /src/postgres/src/backend/executor/execExpr.c:800,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execExpr.c:802,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExpr.c:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - qual
    - estate
    argTypes:
    - List*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 792
    functionDepth: 7
    functionLinenumber: 792
    functionLinenumberEnd: 807
    functionName: ExecPrepareQual
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 5
    functionsReached:
    - ExecInitQual
    - expression_planner
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: ExprState
    signature: 'ExprState *

      ExecPrepareQual(List *qual, EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExpr.c:821,1
    - Dst: expression_planner
      Src: /src/postgres/src/backend/executor/execExpr.c:823,1
    - Dst: ExecInitCheck
      Src: /src/postgres/src/backend/executor/execExpr.c:825,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExpr.c:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - qual
    - estate
    argTypes:
    - List*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 815
    functionDepth: 5
    functionLinenumber: 815
    functionLinenumberEnd: 830
    functionName: ExecPrepareCheck
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - expression_planner
    - ExecInitCheck
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: ExprState
    signature: 'ExprState *

      ExecPrepareCheck(List *qual, EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExpr.c:846,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:850,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:852,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:852,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExpr.c:855,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - nodes
    - estate
    argTypes:
    - List*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 838
    functionDepth: 6
    functionLinenumber: 838
    functionLinenumberEnd: 858
    functionName: ExecPrepareExprList
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 2
    functionsReached:
    - ExecPrepareExpr
    - lfirst
    - lappend
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: List
    signature: 'List *

      ExecPrepareExprList(List *nodes, EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:850,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:852,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 848
    functionDepth: 6
    functionLinenumber: 848
    functionLinenumberEnd: 853
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 399
    functionsReached:
    - ExecPrepareExpr
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, nodes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:882,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/execExpr.c:884,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExpr.c:889,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 871
    functionDepth: 2
    functionLinenumber: 871
    functionLinenumberEnd: 890
    functionName: ExecCheck
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 4
    functionsReached:
    - Assert
    - DatumGetBool
    - ExecEvalExprSwitchContext
    linkageType: ''
    returnType: bool
    signature: bool ExecCheck(ExprState *state, ExprContext *econtext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: jit_compile_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:904,1
    - Dst: ExecReadyInterpretedExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:907,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 901
    functionDepth: 3
    functionLinenumber: 901
    functionLinenumberEnd: 908
    functionName: ExecReadyExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 5
    functionsReached:
    - jit_compile_expr
    - ExecReadyInterpretedExpr
    linkageType: ''
    returnType: void
    signature: void ExecReadyExpr(ExprState *state)
  - BBCount: 120
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execExpr.c:925,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:928,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execExpr.c:933,1
    - Dst: ExecInitWholeRowVar
      Src: /src/postgres/src/backend/executor/execExpr.c:942,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1015,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1027,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1042,1
    - Dst: ParamListInfo::paramCompile
      Src: /src/postgres/src/backend/executor/execExpr.c:1061,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1069,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:1073,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:1087,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:1091,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:1096,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1099,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:1108,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:1109,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:1110,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1121,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:1128,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:1132,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:1137,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/execExpr.c:1143,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:1145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:1155,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:1156,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:1157,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:1162,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1167,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:1175,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:1177,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1180,1
    - Dst: ExecInitSubscriptingRef
      Src: /src/postgres/src/backend/executor/execExpr.c:1188,1
    - Dst: ExecInitFunc
      Src: /src/postgres/src/backend/executor/execExpr.c:1196,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1199,1
    - Dst: ExecInitFunc
      Src: /src/postgres/src/backend/executor/execExpr.c:1207,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1210,1
    - Dst: ExecInitFunc
      Src: /src/postgres/src/backend/executor/execExpr.c:1218,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1232,1
    - Dst: ExecInitFunc
      Src: /src/postgres/src/backend/executor/execExpr.c:1240,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/executor/execExpr.c:1250,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:1250,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execExpr.c:1250,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1262,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:1282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1284,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:1284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1290,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:1290,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execExpr.c:1291,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/execExpr.c:1292,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execExpr.c:1295,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execExpr.c:1296,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execExpr.c:1299,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execExpr.c:1300,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execExpr.c:1301,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:1303,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execExpr.c:1305,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execExpr.c:1306,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execExpr.c:1309,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execExpr.c:1310,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execExpr.c:1311,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1315,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:1316,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:1316,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:1317,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:1318,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:1319,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:1329,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1332,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1342,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1352,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1357,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1367,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1376,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:1384,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1391,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:1407,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:1409,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1438,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:1443,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1449,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:1450,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:1458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1460,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1482,1
    - Dst: ExecInitSubPlanExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:1486,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1495,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1503,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/executor/execExpr.c:1519,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execExpr.c:1521,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:1524,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:1525,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1528,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1532,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1541,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/execExpr.c:1544,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:1546,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:1547,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:1552,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1584,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1599,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1608,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1621,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1637,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:1638,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:1638,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:1640,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:1640,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:1642,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:1643,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:1644,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1649,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:1650,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:1650,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:1652,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:1654,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:1655,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:1656,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:1665,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:1667,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1672,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1683,1
    - Dst: get_element_type
      Src: /src/postgres/src/backend/executor/execExpr.c:1685,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:1686,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:1687,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:1688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:1689,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:1697,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1702,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1703,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1705,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1718,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:1720,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1730,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1738,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:1748,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1753,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:1758,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1764,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1785,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:1786,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1788,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/executor/execExpr.c:1795,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:1795,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1803,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:1816,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:1818,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1839,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1847,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1854,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1859,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:1865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1876,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1879,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:1885,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1888,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1914,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:1921,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:1932,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:1934,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/executor/execExpr.c:1942,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:1949,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:1951,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1953,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1960,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:1967,1
    - Dst: ExecTypeFromExprList
      Src: /src/postgres/src/backend/executor/execExpr.c:1976,1
    - Dst: ExecTypeSetColNames
      Src: /src/postgres/src/backend/executor/execExpr.c:1978,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/execExpr.c:1980,1
    - Dst: lookup_rowtype_tupdesc_copy
      Src: /src/postgres/src/backend/executor/execExpr.c:1985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1996,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:1997,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2008,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2010,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execExpr.c:2012,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2016,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:2018,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2019,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2029,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:2030,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:2031,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:2032,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:2033,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2033,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:2034,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/executor/execExpr.c:2043,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2047,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2054,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2061,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2075,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2075,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2076,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2076,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2077,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2077,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2078,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2078,1
    - Dst: forfive
      Src: /src/postgres/src/backend/executor/execExpr.c:2080,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2086,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2087,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execExpr.c:2088,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execExpr.c:2089,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execExpr.c:2090,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/execExpr.c:2098,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/execExpr.c:2102,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:2106,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2107,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:2111,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2112,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2112,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:2113,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:2114,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:2115,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2126,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2128,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2139,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2140,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:2151,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2153,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2159,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2186,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2192,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2194,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2197,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2202,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2204,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2220,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2230,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/executor/execExpr.c:2238,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:2240,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:2241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:2242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:2243,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:2244,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:2254,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2255,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2255,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:2256,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:2257,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:2258,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2263,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2264,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2273,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2275,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2277,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2284,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2295,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2302,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2303,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2313,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2314,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2324,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2325,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2335,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2337,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2339,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2346,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2348,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2350,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2365,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2366,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2367,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2368,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2377,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2382,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2388,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execExpr.c:2388,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:2394,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2400,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2401,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2402,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2407,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2409,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2411,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2421,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2435,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/executor/execExpr.c:2443,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2451,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2462,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2474,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2479,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExpr.c:2485,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2493,1
    - Dst: ExecInitJsonExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:2496,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2520,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2527,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2531,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2545,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2570,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2574,1
    - Dst: ExecInitCoerceToDomain
      Src: /src/postgres/src/backend/executor/execExpr.c:2582,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2606,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2613,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2625,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2639,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2643,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2658,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execExpr.c:2659,1
    CyclomaticComplexity: 141
    EdgeCount: 141
    ICount: 763
    argCount: 4
    argNames:
    - node
    - state
    - resv
    - resnull
    argTypes:
    - Expr*
    - ExprState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2662
      start: 918
    functionDepth: 7
    functionLinenumber: 918
    functionLinenumberEnd: 2662
    functionName: ExecInitExprRec
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 9
    functionsReached:
    - InvokeFunctionExecuteHook
    - fmgr_info_set_expr
    - lappend_int
    - ReleaseTupleDesc
    - GetUserId
    - errcode
    - exprType
    - get_func_name
    - ExecInitExprList
    - lfirst_int
    - check_stack_depth
    - palloc_array
    - object_aclcheck
    - ExecInitWholeRowVar
    - lfirst_oid
    - SizeForFunctionCallInfo
    - nodeTag
    - ExecInitJsonExpr
    - elog
    - get_typlenbyvalalign
    - get_element_type
    - foreach
    - ExecTypeSetColNames
    - lookup_rowtype_tupdesc_copy
    - Assert
    - linitial
    - Int32GetDatum
    - ParamListInfo::paramCompile
    - errmsg
    - palloc_object
    - OidIsValid
    - list_length
    - ObjectIdGetDatum
    - ExecReadyExpr
    - get_opfamily_proc
    - ExecInitSubPlanExpr
    - fmgr_info
    - lookup_type_cache
    - forboth
    - palloc0_object
    - ExprEvalPushStep
    - InitFunctionCallInfoData
    - lappend
    - ereport
    - get_typlen
    - ExecInitExprRec
    - ExecTypeFromExprList
    - json_categorize_type
    - lfirst
    - memset
    - aclcheck_error
    - BlessTupleDesc
    - TupleDescAttr
    - getTypeInputInfo
    - format_type_be
    - forfive
    - castNode
    - palloc0
    - makeNode
    - ExecInitSubscriptingRef
    - lookup_rowtype_tupdesc
    - ExecInitCoerceToDomain
    - lsecond
    - ExecInitExpr
    - Max
    - makeNullConst
    - palloc
    - get_op_opfamily_properties
    - IsA
    - getTypeOutputInfo
    - ExecInitFunc
    linkageType: ''
    returnType: void
    signature: "void ExecInitExprRec(Expr *node, ExprState *state,\n\t\t\t\tDatum
      *resv, bool *resnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:1458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1456
    functionDepth: 1
    functionLinenumber: 1456
    functionLinenumberEnd: 1462
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 400
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, adjust_jumps)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:1885,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1883
    functionDepth: 1
    functionLinenumber: 1883
    functionLinenumberEnd: 1890
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 400
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, adjust_jumps)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2162
    functionDepth: 1
    functionLinenumber: 2162
    functionLinenumberEnd: 2174
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 400
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, adjust_jumps)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2222
      start: 2215
    functionDepth: 1
    functionLinenumber: 2215
    functionLinenumberEnd: 2222
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 400
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, adjust_jumps)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2407,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2409,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2411,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2426
      start: 2405
    functionDepth: 8
    functionLinenumber: 2405
    functionLinenumberEnd: 2426
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 400
    functionsReached:
    - exprType
    - lfirst
    - ExecInitExprRec
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execExpr.c:2676,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2681,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExpr.c:2685,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - es
    - s
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2686
      start: 2670
    functionDepth: 0
    functionLinenumber: 2670
    functionLinenumberEnd: 2686
    functionName: ExprEvalPushStep
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 10
    functionsReached:
    - repalloc
    - palloc_array
    - memcpy
    linkageType: ''
    returnType: void
    signature: void ExprEvalPushStep(ExprState *es, const ExprEvalStep *s)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2700,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execExpr.c:2708,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execExpr.c:2708,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execExpr.c:2710,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execExpr.c:2710,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execExpr.c:2711,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:2720,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:2721,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/executor/execExpr.c:2722,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:2728,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2729,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2729,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:2734,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:2735,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:2738,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:2747,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:2748,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:2749,1
    - Dst: executor_errposition
      Src: /src/postgres/src/backend/executor/execExpr.c:2751,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/executor/execExpr.c:2752,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2758,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2760,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2773,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 6
    argNames:
    - scratch
    - node
    - args
    - funcid
    - inputcollid
    - state
    argTypes:
    - ExprEvalStep*
    - Expr*
    - List*
    - Oid
    - Oid
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2803
      start: 2696
    functionDepth: 8
    functionLinenumber: 2696
    functionLinenumberEnd: 2803
    functionName: ExecInitFunc
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - InvokeFunctionExecuteHook
    - fmgr_info_set_expr
    - get_func_name
    - GetUserId
    - errcode
    - object_aclcheck
    - exprLocation
    - SizeForFunctionCallInfo
    - executor_errposition
    - errmsg
    - list_length
    - fmgr_info
    - errmsg_plural
    - palloc0_object
    - InitFunctionCallInfoData
    - ereport
    - ExecInitExprRec
    - lfirst
    - aclcheck_error
    - palloc0
    - IsA
    linkageType: ''
    returnType: void
    signature: "void ExecInitFunc(ExprEvalStep *scratch, Expr *node, List *args, Oid
      funcid,\n\t\t\t Oid inputcollid, ExprState *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2758,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2760,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2773,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2778
      start: 2756
    functionDepth: 8
    functionLinenumber: 2756
    functionLinenumberEnd: 2778
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 400
    functionsReached:
    - lfirst
    - ExecInitExprRec
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2824,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2840,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2840,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2840,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/execExpr.c:2841,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2843,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2844,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2846,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2853,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2854,1
    - Dst: ExecInitSubPlan
      Src: /src/postgres/src/backend/executor/execExpr.c:2857,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:2860,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2868,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 4
    argNames:
    - subplan
    - state
    - resv
    - resnull
    argTypes:
    - SubPlan*
    - ExprState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2869
      start: 2813
    functionDepth: 8
    functionLinenumber: 2813
    functionLinenumberEnd: 2869
    functionName: ExecInitSubPlanExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - elog
    - ExprEvalPushStep
    - lfirst_int
    - Assert
    - exprType
    - ExecInitSubPlan
    - lappend
    - ExecInitExprRec
    - lfirst
    - list_length
    - forboth
    linkageType: ''
    returnType: void
    signature: "void ExecInitSubPlanExpr(SubPlan *subplan,\n\t\t\t\t\tExprState *state,\n\t\t\t\t\tDatum
      *resv, bool *resnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:2881,1
    - Dst: ExecPushExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:2884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - node
    argTypes:
    - ExprState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2885
      start: 2875
    functionDepth: 1
    functionLinenumber: 2875
    functionLinenumberEnd: 2885
    functionName: ExecCreateExprSetupSteps
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 4
    functionsReached:
    - expr_setup_walker
    - ExecPushExprSetupSteps
    linkageType: ''
    returnType: void
    signature: void ExecCreateExprSetupSteps(ExprState *state, Node *node)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2911,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2912,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2921,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2922,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2931,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2932,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2941,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2942,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2951,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2952,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2962,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2964,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2966,1
    - Dst: ExecInitSubPlanExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:2969,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 52
    argCount: 2
    argNames:
    - state
    - info
    argTypes:
    - ExprState*
    - ExprSetupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2972
      start: 2891
    functionDepth: 9
    functionLinenumber: 2891
    functionLinenumberEnd: 2972
    functionName: ExecPushExprSetupSteps
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 2
    functionsReached:
    - foreach
    - ExprEvalPushStep
    - Assert
    - ExecComputeSlotInfo
    - lfirst
    - ExecInitSubPlanExpr
    linkageType: ''
    returnType: void
    signature: void ExecPushExprSetupSteps(ExprState *state, ExprSetupInfo *info)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2982,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:2990,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:2994,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:3003,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:3006,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:3009,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3018,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:3023,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3033,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3035,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3037,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3039,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 2
    argNames:
    - node
    - info
    argTypes:
    - Node*
    - ExprSetupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3040
      start: 2977
    functionDepth: 6
    functionLinenumber: 2977
    functionLinenumberEnd: 3040
    functionName: expr_setup_walker
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 2
    functionsReached:
    - expression_tree_walker
    - IsA
    - Max
    - lappend
    linkageType: ''
    returnType: bool
    signature: bool expr_setup_walker(Node *node, ExprSetupInfo *info)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3065,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/execExpr.c:3083,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execExpr.c:3093,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/execExpr.c:3097,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execExpr.c:3098,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execExpr.c:3103,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execExpr.c:3113,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/execExpr.c:3117,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execExpr.c:3118,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 57
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3152
      start: 3056
    functionDepth: 1
    functionLinenumber: 3056
    functionLinenumberEnd: 3152
    functionName: ExecComputeSlotInfo
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - innerPlanState
    - ExecGetResultType
    - Assert
    - outerPlanState
    - ExecGetResultSlotOps
    linkageType: ''
    returnType: bool
    signature: bool ExecComputeSlotInfo(ExprState *state, ExprEvalStep *op)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execExpr.c:3193,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3211,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3213,1
    - Dst: ExecInitJunkFilter
      Src: /src/postgres/src/backend/executor/execExpr.c:3226,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execExpr.c:3227,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - scratch
    - variable
    - state
    argTypes:
    - ExprEvalStep*
    - Var*
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3232
      start: 3158
    functionDepth: 1
    functionLinenumber: 3158
    functionLinenumberEnd: 3232
    functionName: ExecInitWholeRowVar
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - ExecInitExtraTupleSlot
    - foreach
    - lfirst
    - nodeTag
    - ExecInitJunkFilter
    linkageType: ''
    returnType: void
    signature: void ExecInitWholeRowVar(ExprEvalStep *scratch, Var *variable, ExprState
      *state)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:3242,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:3243,1
    - Dst: getSubscriptingRoutines
      Src: /src/postgres/src/backend/executor/execExpr.c:3253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:3255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:3256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:3257,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:3258,1
    - Dst: executor_errposition
      Src: /src/postgres/src/backend/executor/execExpr.c:3260,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/executor/execExpr.c:3261,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:3264,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execExpr.c:3264,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execExpr.c:3273,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execExpr.c:3293,1
    - Dst: SubscriptRoutines*::exec_setup
      Src: /src/postgres/src/backend/executor/execExpr.c:3294,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3302,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3313,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3314,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3320,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3322,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3334,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3343,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3345,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3357,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3371,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3372,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:3383,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:3384,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:3385,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:3386,1
    - Dst: isAssignmentIndirectionExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:3402,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:3405,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:3406,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:3407,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:3408,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3412,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3422,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3432,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3440,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3456,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 96
    argCount: 5
    argNames:
    - scratch
    - sbsref
    - state
    - resv
    - resnull
    argTypes:
    - ExprEvalStep*
    - SubscriptingRef*
    - ExprState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3460
      start: 3237
    functionDepth: 8
    functionLinenumber: 3237
    functionLinenumberEnd: 3460
    functionName: ExecInitSubscriptingRef
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - errcode
    - lfirst_int
    - exprLocation
    - foreach
    - Assert
    - executor_errposition
    - errmsg
    - list_length
    - MAXALIGN
    - ExprEvalPushStep
    - SubscriptRoutines*::exec_setup
    - ereport
    - ExecInitExprRec
    - lfirst
    - memset
    - getSubscriptingRoutines
    - format_type_be
    - palloc0
    - isAssignmentIndirectionExpr
    linkageType: ''
    returnType: void
    signature: "void ExecInitSubscriptingRef(ExprEvalStep *scratch, SubscriptingRef
      *sbsref,\n\t\t\t\t\t\tExprState *state, Datum *resv, bool *resnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3459
      start: 3444
    functionDepth: 1
    functionLinenumber: 3444
    functionLinenumberEnd: 3459
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 403
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, adjust_jumps)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3484,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3488,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3491,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3495,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3498,1
    - Dst: isAssignmentIndirectionExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:3502,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3504,1
    - Dst: isAssignmentIndirectionExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:3508,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3511
      start: 3479
    functionDepth: 1
    functionLinenumber: 3479
    functionLinenumberEnd: 3511
    functionName: isAssignmentIndirectionExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 2
    functionsReached:
    - IsA
    - isAssignmentIndirectionExpr
    linkageType: ''
    returnType: bool
    signature: bool isAssignmentIndirectionExpr(Expr *expr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3536,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:3555,1
    - Dst: InitDomainConstraintRef
      Src: /src/postgres/src/backend/executor/execExpr.c:3556,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3566,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3568,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3578,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:3585,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:3587,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/executor/execExpr.c:3600,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:3605,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:3606,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3614,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3636,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3645,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:3649,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 5
    argNames:
    - scratch
    - ctest
    - state
    - resv
    - resnull
    argTypes:
    - ExprEvalStep*
    - CoerceToDomain*
    - ExprState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3654
      start: 3516
    functionDepth: 8
    functionLinenumber: 3516
    functionLinenumberEnd: 3654
    functionName: ExecInitCoerceToDomain
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - ExprEvalPushStep
    - ExecInitExprRec
    - get_typlen
    - lfirst
    - palloc_object
    - InitDomainConstraintRef
    linkageType: ''
    returnType: void
    signature: "void ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain
      *ctest,\n\t\t\t\t\t   ExprState *state, Datum *resv, bool *resnull)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:3674,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/execExpr.c:3677,1
    - Dst: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3694,1
    - Dst: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3696,1
    - Dst: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3698,1
    - Dst: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3700,1
    - Dst: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3702,1
    - Dst: ExecPushExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:3705,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3729,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3734,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3735,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3752,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3753,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:3753,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execExpr.c:3756,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:3762,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3768,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3777,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:3782,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3799,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3802,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3811,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3824,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3826,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3844,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execExpr.c:3853,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3855,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:3855,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3857,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3863,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3877,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3879,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3881,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3885,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3905,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3906,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3920,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3921,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:3932,1
    - Dst: ExecBuildAggTransCall
      Src: /src/postgres/src/backend/executor/execExpr.c:3937,1
    - Dst: ExecBuildAggTransCall
      Src: /src/postgres/src/backend/executor/execExpr.c:3957,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3967,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3971,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3978,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3983,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3993,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4000,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4002,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 135
    argCount: 5
    argNames:
    - aggstate
    - phase
    - doSort
    - doHash
    - nullcheck
    argTypes:
    - AggState*
    - AggStatePerPhase
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4005
      start: 3670
    functionDepth: 10
    functionLinenumber: 3670
    functionLinenumberEnd: 4005
    functionName: ExecBuildAggTrans
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - lappend_int
    - DO_AGGSPLIT_COMBINE
    - ExprEvalPushStep
    - foreach
    - Assert
    - linitial
    - OidIsValid
    - ExecBuildAggTransCall
    - ExecInitExprRec
    - makeNode
    - lfirst_int
    - expr_setup_walker
    - lfirst
    - Max
    - PointerGetDatum
    - list_length
    - ExecReadyExpr
    - ExecPushExprSetupSteps
    linkageType: ''
    returnType: ExprState
    signature: "ExprState *\nExecBuildAggTrans(AggState *aggstate, AggStatePerPhase
      phase,\n\t\t\t\t  bool doSort, bool doHash, bool nullcheck)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3967,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3971,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3978,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3983,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3993,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3994
      start: 3965
    functionDepth: 1
    functionLinenumber: 3965
    functionLinenumberEnd: 3994
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 405
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(bail, adjust_bailout)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4034,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4105,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4113,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 10
    argNames:
    - state
    - aggstate
    - scratch
    - fcinfo
    - pertrans
    - transno
    - setno
    - setoff
    - ishash
    - nullcheck
    argTypes:
    - ExprState*
    - AggState*
    - ExprEvalStep*
    - FunctionCallInfo
    - AggStatePerTrans
    - int
    - int
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4116
      start: 4012
    functionDepth: 1
    functionLinenumber: 4012
    functionLinenumberEnd: 4116
    functionName: ExecBuildAggTransCall
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExprEvalPushStep
    linkageType: ''
    returnType: void
    signature: "void ExecBuildAggTransCall(ExprState *state, AggState *aggstate,\n\t\t\t\t\t
      \ ExprEvalStep *scratch,\n\t\t\t\t\t  FunctionCallInfo fcinfo, AggStatePerTrans
      pertrans,\n\t\t\t\t\t  int transno, int setno, int setoff, bool ishash,\n\t\t\t\t\t
      \ bool nullcheck)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:4140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4146,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:4156,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:4160,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4167,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4168,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:4187,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4191,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4208,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4208,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4211,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:4221,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4240,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4258,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4267,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4269,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 58
    argCount: 8
    argNames:
    - desc
    - ops
    - hashfunctions
    - collations
    - numCols
    - keyColIdx
    - parent
    - init_value
    argTypes:
    - TupleDesc
    - TupleTableSlotOps*
    - FmgrInfo*
    - Oid*
    - int
    - AttrNumber*
    - PlanState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4272
      start: 4134
    functionDepth: 4
    functionLinenumber: 4134
    functionLinenumberEnd: 4272
    functionName: ExecBuildHash32FromAttrs
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - ExprEvalPushStep
    - InitFunctionCallInfoData
    - Assert
    - UInt32GetDatum
    - palloc0
    - makeNode
    - ExecComputeSlotInfo
    - Max
    - palloc_object
    - ExecReadyExpr
    - TupleDescAttr
    - SizeForFunctionCallInfo
    linkageType: ''
    returnType: ExprState
    signature: "ExprState *\nExecBuildHash32FromAttrs(TupleDesc desc, const TupleTableSlotOps
      *ops,\n\t\t\t\t\t\t FmgrInfo *hashfunctions, Oid *collations,\n\t\t\t\t\t\t
      int numCols, AttrNumber *keyColIdx,\n\t\t\t\t\t\t PlanState *parent, uint32
      init_value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:4301,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:4309,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4311,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:4311,1
    - Dst: ExecCreateExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:4316,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:4324,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:4344,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4348,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:4360,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execExpr.c:4363,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execExpr.c:4365,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:4370,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4371,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4371,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4373,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4392,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4406,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4415,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4416,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4435,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4442,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4444,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 53
    argCount: 8
    argNames:
    - desc
    - ops
    - hashfunc_oids
    - collations
    - hash_exprs
    - opstrict
    - parent
    - init_value
    argTypes:
    - TupleDesc
    - TupleTableSlotOps*
    - Oid*
    - List*
    - List*
    - bool*
    - PlanState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4447
      start: 4295
    functionDepth: 8
    functionLinenumber: 4295
    functionLinenumberEnd: 4447
    functionName: ExecBuildHash32Expr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - lappend_int
    - lfirst_int
    - lfirst_oid
    - SizeForFunctionCallInfo
    - Assert
    - UInt32GetDatum
    - ExecCreateExprSetupSteps
    - palloc_object
    - list_length
    - ExecReadyExpr
    - fmgr_info
    - palloc0_object
    - ExprEvalPushStep
    - InitFunctionCallInfoData
    - ExecInitExprRec
    - lfirst
    - palloc0
    - makeNode
    - foreach_current_index
    linkageType: ''
    returnType: ExprState
    signature: "ExprState *\nExecBuildHash32Expr(TupleDesc desc, const TupleTableSlotOps
      *ops,\n\t\t\t\t\tconst Oid *hashfunc_oids, const List *collations,\n\t\t\t\t\tconst
      List *hash_exprs, const bool *opstrict,\n\t\t\t\t\tPlanState *parent, uint32
      init_value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:4360,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execExpr.c:4363,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execExpr.c:4365,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:4370,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4371,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4371,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4373,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4392,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4406,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4415,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4424
      start: 4358
    functionDepth: 8
    functionLinenumber: 4358
    functionLinenumberEnd: 4424
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 19
    functionsReached:
    - palloc0_object
    - lappend_int
    - ExprEvalPushStep
    - InitFunctionCallInfoData
    - Assert
    - palloc0
    - ExecInitExprRec
    - lfirst
    - lfirst_oid
    - foreach_current_index
    - SizeForFunctionCallInfo
    - fmgr_info
    linkageType: ''
    returnType: void
    signature: void forboth(lc, hash_exprs, lc2, collations)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4435,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4437
      start: 4427
    functionDepth: 1
    functionLinenumber: 4427
    functionLinenumberEnd: 4437
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 405
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, adjust_jumps)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:4469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4497,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4505,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4506,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4513,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4514,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:4523,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:4524,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execExpr.c:4532,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execExpr.c:4532,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execExpr.c:4534,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execExpr.c:4534,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execExpr.c:4536,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:4539,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4540,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4540,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4541,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:4542,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4543,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4553,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4562,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4572,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4579,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4580,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4590,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4597,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4599,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 76
    argCount: 9
    argNames:
    - ldesc
    - rdesc
    - lops
    - rops
    - numCols
    - keyColIdx
    - eqfunctions
    - collations
    - parent
    argTypes:
    - TupleDesc
    - TupleDesc
    - TupleTableSlotOps*
    - TupleTableSlotOps*
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4602
      start: 4460
    functionDepth: 6
    functionLinenumber: 4460
    functionLinenumberEnd: 4602
    functionName: ExecBuildGroupingEqual
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - InvokeFunctionExecuteHook
    - fmgr_info_set_expr
    - lappend_int
    - GetUserId
    - get_func_name
    - lfirst_int
    - object_aclcheck
    - ExecComputeSlotInfo
    - SizeForFunctionCallInfo
    - Assert
    - ExecReadyExpr
    - fmgr_info
    - palloc0_object
    - ExprEvalPushStep
    - InitFunctionCallInfoData
    - aclcheck_error
    - TupleDescAttr
    - palloc0
    - makeNode
    linkageType: ''
    returnType: ExprState
    signature: "ExprState *\nExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc,\n\t\t\t\t\t
      \  const TupleTableSlotOps *lops, const TupleTableSlotOps *rops,\n\t\t\t\t\t
      \  int numCols,\n\t\t\t\t\t   const AttrNumber *keyColIdx,\n\t\t\t\t\t   const
      Oid *eqfunctions,\n\t\t\t\t\t   const Oid *collations,\n\t\t\t\t\t   PlanState
      *parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4592
      start: 4585
    functionDepth: 1
    functionLinenumber: 4585
    functionLinenumberEnd: 4592
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 405
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, adjust_jumps)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execExpr.c:4628,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:4630,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4647,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4648,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4655,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4656,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:4660,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execExpr.c:4668,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execExpr.c:4668,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execExpr.c:4670,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execExpr.c:4670,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execExpr.c:4672,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:4675,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4676,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4676,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4677,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:4678,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4679,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4689,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4698,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4708,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4715,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4716,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4723,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4726,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4733,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4735,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 69
    argCount: 7
    argNames:
    - desc
    - lops
    - rops
    - eqfunctions
    - collations
    - param_exprs
    - parent
    argTypes:
    - TupleDesc
    - TupleTableSlotOps*
    - TupleTableSlotOps*
    - Oid*
    - Oid*
    - List*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4738
      start: 4619
    functionDepth: 6
    functionLinenumber: 4619
    functionLinenumberEnd: 4738
    functionName: ExecBuildParamSetEqual
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - InvokeFunctionExecuteHook
    - fmgr_info_set_expr
    - lappend_int
    - GetUserId
    - get_func_name
    - lfirst_int
    - object_aclcheck
    - ExecComputeSlotInfo
    - SizeForFunctionCallInfo
    - Assert
    - list_length
    - ExecReadyExpr
    - fmgr_info
    - palloc0_object
    - ExprEvalPushStep
    - InitFunctionCallInfoData
    - aclcheck_error
    - TupleDescAttr
    - palloc0
    - makeNode
    linkageType: ''
    returnType: ExprState
    signature: "ExprState *\nExecBuildParamSetEqual(TupleDesc desc,\n\t\t\t\t\t   const
      TupleTableSlotOps *lops,\n\t\t\t\t\t   const TupleTableSlotOps *rops,\n\t\t\t\t\t
      \  const Oid *eqfunctions,\n\t\t\t\t\t   const Oid *collations,\n\t\t\t\t\t
      \  const List *param_exprs,\n\t\t\t\t\t   PlanState *parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4723,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4728
      start: 4721
    functionDepth: 1
    functionLinenumber: 4721
    functionLinenumberEnd: 4728
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 405
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, adjust_jumps)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:4748,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/executor/execExpr.c:4756,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4758,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4766,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4771,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4775,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4781,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4786,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4790,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/execExpr.c:4794,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:4797,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execExpr.c:4798,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execExpr.c:4799,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execExpr.c:4802,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:4803,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execExpr.c:4804,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4806,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:4808,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4816,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4825,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4834,1
    - Dst: ExecInitJsonCoercion
      Src: /src/postgres/src/backend/executor/execExpr.c:4855,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4872,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execExpr.c:4873,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4874,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4874,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4875,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:4876,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4877,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:4883,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:4885,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4901,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:4919,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4928,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4933,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4941,1
    - Dst: ExecInitJsonCoercion
      Src: /src/postgres/src/backend/executor/execExpr.c:4947,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:4956,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:4957,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4963,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4967,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4970,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:4982,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4991,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4996,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:5004,1
    - Dst: ExecInitJsonCoercion
      Src: /src/postgres/src/backend/executor/execExpr.c:5010,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:5019,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:5020,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:5027,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:5033,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 115
    argCount: 5
    argNames:
    - jsexpr
    - state
    - resv
    - resnull
    - scratch
    argTypes:
    - JsonExpr*
    - ExprState*
    - Datum*
    - bool*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5039
      start: 4743
    functionDepth: 8
    functionLinenumber: 4743
    functionLinenumberEnd: 5039
    functionName: ExecInitJsonExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - fmgr_info_set_expr
    - get_typtype
    - lfirst_int
    - exprType
    - SizeForFunctionCallInfo
    - Assert
    - Int32GetDatum
    - palloc_object
    - ObjectIdGetDatum
    - fmgr_info
    - palloc0_object
    - exprTypmod
    - ExprEvalPushStep
    - InitFunctionCallInfoData
    - lappend
    - ExecInitExprRec
    - ExecInitJsonCoercion
    - lfirst
    - strlen
    - lfirst_node
    - getTypeInputInfo
    - palloc0
    - IsA
    - forboth
    linkageType: ''
    returnType: void
    signature: "void ExecInitJsonExpr(JsonExpr *jsexpr, ExprState *state,\n\t\t\t\t
      Datum *resv, bool *resnull,\n\t\t\t\t ExprEvalStep *scratch)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4828
      start: 4823
    functionDepth: 1
    functionLinenumber: 4823
    functionLinenumberEnd: 4828
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 405
    functionsReached:
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, jumps_return_null)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:5033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5036
      start: 5031
    functionDepth: 1
    functionLinenumber: 5031
    functionLinenumberEnd: 5036
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 405
    functionsReached:
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, jumps_to_end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBaseType
      Src: /src/postgres/src/backend/executor/execExpr.c:5064,1
    - Dst: DomainHasConstraints
      Src: /src/postgres/src/backend/executor/execExpr.c:5066,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:5067,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 7
    argNames:
    - state
    - returning
    - escontext
    - omit_quotes
    - exists_coerce
    - resv
    - resnull
    argTypes:
    - ExprState*
    - JsonReturning*
    - ErrorSaveContext*
    - bool
    - bool
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5068
      start: 5045
    functionDepth: 1
    functionLinenumber: 5045
    functionLinenumberEnd: 5068
    functionName: ExecInitJsonCoercion
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - getBaseType
    - DomainHasConstraints
    - ExprEvalPushStep
    linkageType: ''
    returnType: void
    signature: "void ExecInitJsonCoercion(ExprState *state, JsonReturning *returning,\n\t\t\t\t\t
      ErrorSaveContext *escontext, bool omit_quotes,\n\t\t\t\t\t bool exists_coerce,\n\t\t\t\t\t
      Datum *resv, bool *resnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecScanExtended
      Src: /src/postgres/src/backend/executor/execScan.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - node
    - accessMtd
    - recheckMtd
    argTypes:
    - ScanState*
    - ExecScanAccessMtd
    - ExecScanRecheckMtd
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 65
    functionName: ExecScan
    functionSourceFile: /src/postgres/src/backend/executor/execScan.c
    functionUses: 6
    functionsReached:
    - ExecScanExtended
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecScan(ScanState *node,\n\t\t ExecScanAccessMtd
      accessMtd,\t/* function returning a tuple */\n\t\t ExecScanRecheckMtd recheckMtd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecConditionalAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/execScan.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - ScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 87
    functionName: ExecAssignScanProjectionInfo
    functionSourceFile: /src/postgres/src/backend/executor/execScan.c
    functionUses: 5
    functionsReached:
    - ExecConditionalAssignProjectionInfo
    linkageType: ''
    returnType: void
    signature: void ExecAssignScanProjectionInfo(ScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecConditionalAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/execScan.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - varno
    argTypes:
    - ScanState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 99
    functionName: ExecAssignScanProjectionInfoWithVarno
    functionSourceFile: /src/postgres/src/backend/executor/execScan.c
    functionUses: 1
    functionsReached:
    - ExecConditionalAssignProjectionInfo
    linkageType: ''
    returnType: void
    signature: void ExecAssignScanProjectionInfoWithVarno(ScanState *node, int varno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execScan.c:116,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execScan.c:140,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execScan.c:142,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execScan.c:145,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execScan.c:146,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execScan.c:148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execScan.c:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - ScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 107
    functionDepth: 3
    functionLinenumber: 107
    functionLinenumberEnd: 156
    functionName: ExecScanReScan
    functionSourceFile: /src/postgres/src/backend/executor/execScan.c
    functionUses: 6
    functionsReached:
    - elog
    - Assert
    - ExecClearTuple
    - bms_next_member
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void ExecScanReScan(ScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:69,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:78,1
    - Dst: ExecInitPartitionExecPruning
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:97,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:98,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:103,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:111,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:115,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:121,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:123,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:127,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:131,1
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:132,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:141,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:143,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:145,1
    - Dst: ExecGetCommonSlotOps
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:157,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:160,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:164,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:179,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:199,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 48
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - MergeAppend*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 208
    functionName: ExecInitMergeAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergeAppend.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - ExecInitPartitionExecPruning
    - palloc0_array
    - bms_add_range
    - Assert
    - binaryheap_allocate
    - bms_num_members
    - makeNode
    - palloc_array
    - ExecInitResultTupleSlotTL
    - ExecGetCommonSlotOps
    - bms_next_member
    - list_length
    - list_nth
    - PrepareSortSupportFromOrderingOp
    linkageType: ''
    returnType: MergeAppendState
    signature: 'MergeAppendState *

      ExecInitMergeAppend(MergeAppend *node, EState *estate, int eflags)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:219,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:223,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:229,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:238,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:245,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:247,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:248,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:249,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:249,1
    - Dst: binaryheap_build
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:251,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:264,1
    - Dst: binaryheap_first
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:264,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:265,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:266,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:267,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:267,1
    - Dst: binaryheap_remove_first
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:269,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:272,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:275,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:279,1
    - Dst: binaryheap_first
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:279,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 216
    functionDepth: 3
    functionLinenumber: 216
    functionLinenumberEnd: 284
    functionName: ExecMergeAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergeAppend.c
    functionUses: 0
    functionsReached:
    - ExecFindMatchingSubPlans
    - Int32GetDatum
    - castNode
    - ExecProcNode
    - binaryheap_replace_first
    - binaryheap_empty
    - CHECK_FOR_INTERRUPTS
    - binaryheap_add_unordered
    - binaryheap_first
    - DatumGetInt32
    - binaryheap_remove_first
    - ExecClearTuple
    - bms_next_member
    - TupIsNull
    - binaryheap_build
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecMergeAppend(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:293,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:300,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:301,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:301,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:313,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:314,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:316,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - Datum
    - Datum
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 326
    functionName: heap_compare_slots
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergeAppend.c
    functionUses: 0
    functionsReached:
    - INVERT_COMPARE_RESULT
    - slot_getattr
    - Assert
    - ApplySortComparator
    - DatumGetInt32
    - TupIsNull
    linkageType: ''
    returnType: int32
    signature: int32 heap_compare_slots(Datum a, Datum b, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeAppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 354
    functionName: ExecEndMergeAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergeAppend.c
    functionUses: 0
    functionsReached:
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndMergeAppend(MergeAppendState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:367,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:370,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:383,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:390,1
    - Dst: binaryheap_reset
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:392,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeAppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 394
    functionName: ExecReScanMergeAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergeAppend.c
    functionUses: 0
    functionsReached:
    - binaryheap_reset
    - bms_free
    - ExecReScan
    - UpdateChangedParamSet
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: void ExecReScanMergeAppend(MergeAppendState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: ExecBitmapIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecBitmapIndexScan(PlanState *pstate)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:60,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:76,1
    - Dst: tbm_create
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:96,1
    - Dst: index_getbitmap
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:106,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:108,1
    - Dst: ExecIndexAdvanceArrayKeys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:110,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:113,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:120,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapIndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 123
    functionName: MultiExecBitmapIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - ExecIndexAdvanceArrayKeys
    - tbm_create
    - index_rescan
    - InstrStopNode
    - index_getbitmap
    - CHECK_FOR_INTERRUPTS
    - ExecReScan
    - InstrStartNode
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecBitmapIndexScan(BitmapIndexScanState *node)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:143,1
    - Dst: ExecIndexEvalRuntimeKeys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:154,1
    - Dst: ExecIndexEvalArrayKeys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:159,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:167,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapIndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 170
    functionName: ExecReScanBitmapIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - index_rescan
    - ExecIndexEvalArrayKeys
    - ResetExprContext
    - ExecIndexEvalRuntimeKeys
    linkageType: ''
    returnType: void
    signature: void ExecReScanBitmapIndexScan(BitmapIndexScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:197,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:213,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapIndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 216
    functionName: ExecEndBitmapIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsParallelWorker
    - index_endscan
    - index_close
    linkageType: ''
    returnType: void
    signature: void ExecEndBitmapIndexScan(BitmapIndexScanState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:231,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:236,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:279,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:282,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:283,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:295,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:317,1
    - Dst: index_beginscan_bitmap
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:330,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:341,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - BitmapIndexScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 224
    functionDepth: 4
    functionLinenumber: 224
    functionLinenumberEnd: 349
    functionName: ExecInitBitmapIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - index_beginscan_bitmap
    - ExecAssignExprContext
    - Assert
    - index_rescan
    - index_open
    - makeNode
    - exec_rt_fetch
    - ExecIndexBuildScanKeys
    linkageType: ''
    returnType: BitmapIndexScanState
    signature: 'BitmapIndexScanState *

      ExecInitBitmapIndexScan(BitmapIndexScan *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:372,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:373,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapIndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 374
    functionName: ExecBitmapIndexScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecBitmapIndexScanEstimate(BitmapIndexScanState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:395,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:397,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:403,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapIndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 405
    functionName: ExecBitmapIndexScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapIndexScanInitializeDSM(BitmapIndexScanState *node,\n\t\t\t\t\t\t\t\t
      ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - BitmapIndexScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 426
    functionName: ExecBitmapIndexScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapIndexScanInitializeWorker(BitmapIndexScanState *node,\n\t\t\t\t\t\t\t\t\tParallelWorkerContext
      *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:446,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapIndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 448
    functionName: ExecBitmapIndexScanRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecBitmapIndexScanRetrieveInstrumentation(BitmapIndexScanState
      *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:71,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:81,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:90,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 93
    functionName: 'TupleTableSlot *

      SeqNext(SeqScanState *node)'
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_scan_getnextslot
    - table_beginscan
    - ScanRelIsReadOnly
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: 'pg_attribute_always_inline TupleTableSlot *

      SeqNext(SeqScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - SeqScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 106
    functionName: SeqRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline SeqRecheck(SeqScanState *node, TupleTableSlot
      *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:121,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:125,1
    - Dst: ExecScanExtended
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 133
    functionName: ExecSeqScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - castNode
    - ExecScanExtended
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:147,1
    - Dst: pg_assume
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:149,1
    - Dst: ExecScanExtended
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 157
    functionName: ExecSeqScanWithQual
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - castNode
    - ExecScanExtended
    - pg_assume
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScanWithQual(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:168,1
    - Dst: pg_assume
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:169,1
    - Dst: ExecScanExtended
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 177
    functionName: ExecSeqScanWithProject
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - castNode
    - ExecScanExtended
    - pg_assume
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScanWithProject(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:188,1
    - Dst: pg_assume
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:189,1
    - Dst: pg_assume
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:190,1
    - Dst: ExecScanExtended
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 198
    functionName: ExecSeqScanWithQualProject
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - castNode
    - ExecScanExtended
    - pg_assume
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScanWithQualProject(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:208,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 213
    functionName: ExecSeqScanEPQ
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScanEPQ(PlanState *pstate)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:228,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:229,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:229,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:234,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:243,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:249,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:254,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:255,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:256,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:262,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:263,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:269,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - SeqScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 219
    functionDepth: 7
    functionLinenumber: 219
    functionLinenumberEnd: 294
    functionName: ExecInitSeqScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_slot_callbacks
    - ExecAssignExprContext
    - Assert
    - RelationGetDescr
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - makeNode
    - ExecAssignScanProjectionInfo
    - ExecInitQual
    - outerPlan
    - ExecOpenScanRelation
    - innerPlan
    linkageType: ''
    returnType: SeqScanState
    signature: 'SeqScanState *

      ExecInitSeqScan(SeqScan *node, EState *estate, int eflags)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:315,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:319,1
    - Dst: AccumulateIOStats
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:324,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:332,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - SeqScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 333
    functionName: ExecEndSeqScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsParallelWorker
    - table_endscan
    - AccumulateIOStats
    linkageType: ''
    returnType: void
    signature: void ExecEndSeqScan(SeqScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_rescan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:354,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - SeqScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 346
    functionDepth: 4
    functionLinenumber: 346
    functionLinenumberEnd: 358
    functionName: ExecReScanSeqScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - ExecScanReScan
    - table_rescan
    linkageType: ''
    returnType: void
    signature: void ExecReScanSeqScan(SeqScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_parallelscan_estimate
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:378,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:380,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SeqScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 382
    functionName: ExecSeqScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - table_parallelscan_estimate
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecSeqScanEstimate(SeqScanState *node,\n\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:398,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:404,1
    - Dst: table_parallelscan_initialize
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:405,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:408,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SeqScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 390
    functionDepth: 3
    functionLinenumber: 390
    functionLinenumberEnd: 412
    functionName: ExecSeqScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_beginscan_parallel
    - ScanRelIsReadOnly
    - shm_toc_insert
    - shm_toc_allocate
    - table_parallelscan_initialize
    linkageType: ''
    returnType: void
    signature: "void ExecSeqScanInitializeDSM(SeqScanState *node,\n\t\t\t\t\t\t ParallelContext
      *pcxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_parallelscan_reinitialize
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SeqScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 428
    functionName: ExecSeqScanReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_parallelscan_reinitialize
    linkageType: ''
    returnType: void
    signature: "void ExecSeqScanReInitializeDSM(SeqScanState *node,\n\t\t\t\t\t\t
      \  ParallelContext *pcxt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:443,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:449,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - SeqScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 436
    functionDepth: 3
    functionLinenumber: 436
    functionLinenumberEnd: 452
    functionName: ExecSeqScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_beginscan_parallel
    - shm_toc_lookup
    - ScanRelIsReadOnly
    linkageType: ''
    returnType: void
    signature: "void ExecSeqScanInitializeWorker(SeqScanState *node,\n\t\t\t\t\t\t\tParallelWorkerContext
      *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:467,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:468,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:470,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SeqScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 472
    functionName: ExecSeqScanInstrumentEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecSeqScanInstrumentEstimate(SeqScanState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:487,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:488,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:489,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:490,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:492,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SeqScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 497
    functionName: ExecSeqScanInstrumentInitDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: void ExecSeqScanInstrumentInitDSM(SeqScanState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - SeqScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 515
    functionName: ExecSeqScanInstrumentInitWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecSeqScanInstrumentInitWorker(SeqScanState *node,\n\t\t\t\t\t\t\t\tParallelWorkerContext
      *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:532,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - SeqScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 534
    functionName: ExecSeqScanRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecSeqScanRetrieveInstrumentation(SeqScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - innerTupleSlot
    - ','
    - mergestate
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: MarkInnerTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MarkInnerTuple(innerTupleSlot, mergestate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:185,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:189,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:194,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:205,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:206,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:211,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:211,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:212,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:212,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:221,1
    - Dst: IndexAmTranslateStrategy
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:225,1
    - Dst: get_opfamily_method
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:225,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:226,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:238,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:239,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:243,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:246,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:246,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:251,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:255,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:256,1
    - Dst: PrepareSortSupportComparisonShim
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:259,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 6
    argNames:
    - mergeclauses
    - mergefamilies
    - mergecollations
    - mergereversals
    - mergenullsfirst
    - parent
    argTypes:
    - List*
    - Oid*
    - Oid*
    - bool*
    - bool*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 176
    functionDepth: 4
    functionLinenumber: 176
    functionLinenumberEnd: 266
    functionName: MJExamineQuals
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - elog
    - get_op_opfamily_properties
    - linitial
    - get_opfamily_method
    - palloc0
    - Assert
    - OidIsValid
    - PrepareSortSupportComparisonShim
    - lsecond
    - lfirst
    - ExecInitExpr
    - OidFunctionCall1
    - PointerGetDatum
    - list_length
    - get_opfamily_proc
    - IsA
    - IndexAmTranslateStrategy
    linkageType: ''
    returnType: MergeJoinClause
    signature: "MergeJoinClause MJExamineQuals(List *mergeclauses,\n\t\t\t   Oid *mergefamilies,\n\t\t\t
      \  Oid *mergecollations,\n\t\t\t   bool *mergereversals,\n\t\t\t   bool *mergenullsfirst,\n\t\t\t
      \  PlanState *parent)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:194,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:205,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:206,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:211,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:211,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:212,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:212,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:221,1
    - Dst: IndexAmTranslateStrategy
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:225,1
    - Dst: get_opfamily_method
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:225,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:226,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:238,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:239,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:243,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:246,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:246,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:251,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:255,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:256,1
    - Dst: PrepareSortSupportComparisonShim
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:259,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 192
    functionDepth: 4
    functionLinenumber: 192
    functionLinenumberEnd: 263
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 405
    functionsReached:
    - elog
    - get_opfamily_method
    - linitial
    - Assert
    - OidIsValid
    - PrepareSortSupportComparisonShim
    - lsecond
    - ExecInitExpr
    - lfirst
    - OidFunctionCall1
    - PointerGetDatum
    - get_op_opfamily_properties
    - get_opfamily_proc
    - IsA
    - IndexAmTranslateStrategy
    linkageType: ''
    returnType: void
    signature: void foreach(cl, mergeclauses)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:299,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:302,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:304,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:312,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:325,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 328
    functionName: MJEvalOuterValues
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - TupIsNull
    - ResetExprContext
    - ExecEvalExpr
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: MJEvalResult
    signature: MJEvalResult MJEvalOuterValues(MergeJoinState *mergestate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:346,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:349,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:351,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:359,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:372,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - mergestate
    - innerslot
    argTypes:
    - MergeJoinState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 375
    functionName: MJEvalInnerValues
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - TupIsNull
    - ResetExprContext
    - ExecEvalExpr
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: MJEvalResult
    signature: MJEvalResult MJEvalInnerValues(MergeJoinState *mergestate, TupleTableSlot
      *innerslot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:400,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:402,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:417,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:438,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 441
    functionName: MJCompare
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ApplySortComparator
    - ResetExprContext
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: int
    signature: int MJCompare(MergeJoinState *mergestate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:454,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:459,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:465,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:467,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 448
    functionDepth: 4
    functionLinenumber: 448
    functionLinenumberEnd: 473
    functionName: MJFillOuter
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - MJ_printf
    - ExecQual
    - ExecProject
    - InstrCountFiltered2
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      MJFillOuter(MergeJoinState *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:485,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:490,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:496,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:498,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 479
    functionDepth: 4
    functionLinenumber: 479
    functionLinenumberEnd: 504
    functionName: MJFillInner
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - MJ_printf
    - ExecQual
    - ExecProject
    - InstrCountFiltered2
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      MJFillInner(MergeJoinState *node)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:522,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:524,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - qual
    - is_const_false
    argTypes:
    - List*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 530
    functionName: check_constant_qual
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - lfirst
    - DatumGetBool
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool check_constant_qual(List *qual, bool *is_const_false)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:522,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:524,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 528
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 405
    functionsReached:
    - lfirst
    - DatumGetBool
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, qual)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:547,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:548,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:549,1
    - Dst: MJ_debugtup
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:551,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 552
    functionName: ExecMergeTupleDumpOuter
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - TupIsNull
    - printf
    - MJ_debugtup
    linkageType: ''
    returnType: void
    signature: void ExecMergeTupleDumpOuter(MergeJoinState *mergestate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:559,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:560,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:561,1
    - Dst: MJ_debugtup
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 564
    functionName: ExecMergeTupleDumpInner
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - TupIsNull
    - printf
    - MJ_debugtup
    linkageType: ''
    returnType: void
    signature: void ExecMergeTupleDumpInner(MergeJoinState *mergestate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:571,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:572,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:573,1
    - Dst: MJ_debugtup
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 576
    functionName: ExecMergeTupleDumpMarked
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - TupIsNull
    - printf
    - MJ_debugtup
    linkageType: ''
    returnType: void
    signature: void ExecMergeTupleDumpMarked(MergeJoinState *mergestate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:581,1
    - Dst: ExecMergeTupleDumpOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:583,1
    - Dst: ExecMergeTupleDumpInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:584,1
    - Dst: ExecMergeTupleDumpMarked
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:585,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 588
    functionName: ExecMergeTupleDump
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ExecMergeTupleDumpOuter
    - printf
    - ExecMergeTupleDumpInner
    - ExecMergeTupleDumpMarked
    linkageType: ''
    returnType: void
    signature: void ExecMergeTupleDump(MergeJoinState *mergestate)
  - BBCount: 74
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:598,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:611,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:616,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:617,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:628,1
    - Dst: MJ_dump
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:635,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:650,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:652,1
    - Dst: MJEvalOuterValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:656,1
    - Dst: MJFillOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:673,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:680,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:698,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:700,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:704,1
    - Dst: ExecMarkPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:717,1
    - Dst: MJFillInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:728,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:735,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:760,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:789,1
    - Dst: MJ_DEBUG_QUAL
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:790,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:822,1
    - Dst: MJ_DEBUG_QUAL
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:823,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:831,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:833,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:836,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:839,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:851,1
    - Dst: MJFillInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:863,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:876,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:878,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:882,1
    - Dst: MJCompare
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:896,1
    - Dst: MJ_DEBUG_COMPARE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:897,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:904,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:952,1
    - Dst: MJFillOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:964,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:972,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:974,1
    - Dst: MJEvalOuterValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:978,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:990,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:992,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1042,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1050,1
    - Dst: MJCompare
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1052,1
    - Dst: MJ_DEBUG_COMPARE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1053,1
    - Dst: ExecRestrPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1080,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1116,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1147,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1180,1
    - Dst: MJCompare
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1187,1
    - Dst: MJ_DEBUG_COMPARE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1188,1
    - Dst: ExecMarkPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1193,1
    - Dst: MarkInnerTuple
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1195,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1214,1
    - Dst: MJFillOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1226,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1234,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1236,1
    - Dst: MJEvalOuterValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1240,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1252,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1254,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1276,1
    - Dst: MJFillInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1288,1
    - Dst: ExecMarkPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1295,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1300,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1302,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1306,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1322,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1324,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1346,1
    - Dst: MJFillInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1358,1
    - Dst: ExecMarkPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1365,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1370,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1372,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1375,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1377,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1390,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1392,1
    - Dst: MJFillOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1404,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1412,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1414,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1417,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1419,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1430,1
    CyclomaticComplexity: 92
    EdgeCount: 92
    ICount: 303
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 595
    functionDepth: 5
    functionLinenumber: 595
    functionLinenumberEnd: 1434
    functionName: ExecMergeJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - MJFillInner
    - ResetExprContext
    - ExecRestrPos
    - MJEvalInnerValues
    - InstrCountFiltered2
    - elog
    - innerPlanState
    - MJCompare
    - Assert
    - ExecProcNode
    - outerPlanState
    - MJ_DEBUG_COMPARE
    - ExecProject
    - InstrCountFiltered1
    - MJ_DEBUG_QUAL
    - MJ_dump
    - MJEvalOuterValues
    - CHECK_FOR_INTERRUPTS
    - MarkInnerTuple
    - TupIsNull
    - ExecMarkPos
    - MJ_printf
    - castNode
    - MJ_DEBUG_PROC_NODE
    - MJFillOuter
    - ExecQual
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecMergeJoin(PlanState *pstate)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1449,1
    - Dst: MJ1_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1451,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1457,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1469,1
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1476,1
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1477,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1486,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1489,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1489,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1489,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1490,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1490,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1491,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1491,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1491,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1495,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1495,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1511,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1511,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1521,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1522,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1527,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1527,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1528,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1535,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1537,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1559,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1566,1
    - Dst: check_constant_qual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1572,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1574,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1576,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1582,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1584,1
    - Dst: check_constant_qual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1590,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1592,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1593,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1594,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1597,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1604,1
    - Dst: MJExamineQuals
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1605,1
    - Dst: MJ1_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1624,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 68
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - MergeJoin*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1440
    functionDepth: 7
    functionLinenumber: 1440
    functionLinenumberEnd: 1628
    functionName: ExecInitMergeJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ExecAssignProjectionInfo
    - errcode
    - check_constant_qual
    - ExecGetResultSlotOps
    - MJ1_printf
    - ExecInitNode
    - elog
    - innerPlanState
    - Assert
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - errmsg
    - list_length
    - ExecInitNullTupleSlot
    - outerPlan
    - ereport
    - ExecInitQual
    - ExecInitExtraTupleSlot
    - CreateExprContext
    - ExecGetResultType
    - ExecAssignExprContext
    - makeNode
    - MJExamineQuals
    - IsA
    - innerPlan
    linkageType: ''
    returnType: MergeJoinState
    signature: 'MergeJoinState *

      ExecInitMergeJoin(MergeJoin *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MJ1_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1640,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1646,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1646,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1647,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1647,1
    - Dst: MJ1_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1637
    functionDepth: 1
    functionLinenumber: 1637
    functionLinenumberEnd: 1651
    functionName: ExecEndMergeJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecEndNode
    - MJ1_printf
    - innerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndMergeJoin(MergeJoinState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1656,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1657,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1659,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1672,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1674,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1653
    functionDepth: 1
    functionLinenumber: 1653
    functionLinenumberEnd: 1675
    functionName: ExecReScanMergeJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecReScan
    - innerPlanState
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanMergeJoin(MergeJoinState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/tqueue.c:62,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/backend/executor/tqueue.c:63,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tqueue.c:66,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/tqueue.c:72,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/tqueue.c:73,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/tqueue.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 77
    functionName: tqueueReceiveSlot
    functionSourceFile: /src/postgres/src/backend/executor/tqueue.c
    functionUses: 0
    functionsReached:
    - errcode
    - pfree
    - shm_mq_send
    - ereport
    - ExecFetchSlotMinimalTuple
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool tqueueReceiveSlot(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: tqueueStartupReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tqueue.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tqueueStartupReceiver(DestReceiver *self, int operation, TupleDesc
      typeinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/executor/tqueue.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: tqueueShutdownReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tqueue.c
    functionUses: 0
    functionsReached:
    - shm_mq_detach
    linkageType: ''
    returnType: void
    signature: void tqueueShutdownReceiver(DestReceiver *self)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/executor/tqueue.c:111,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tqueue.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 113
    functionName: tqueueDestroyReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tqueue.c
    functionUses: 0
    functionsReached:
    - pfree
    - shm_mq_detach
    linkageType: ''
    returnType: void
    signature: void tqueueDestroyReceiver(DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/tqueue.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - handle
    argTypes:
    - shm_mq_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 133
    functionName: CreateTupleQueueDestReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tqueue.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: DestReceiver
    signature: 'DestReceiver *

      CreateTupleQueueDestReceiver(shm_mq_handle *handle)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/tqueue.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - handle
    argTypes:
    - shm_mq_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: CreateTupleQueueReader
    functionSourceFile: /src/postgres/src/backend/executor/tqueue.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: TupleQueueReader
    signature: 'TupleQueueReader *

      CreateTupleQueueReader(shm_mq_handle *handle)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tqueue.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reader
    argTypes:
    - TupleQueueReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 158
    functionName: DestroyTupleQueueReader
    functionSourceFile: /src/postgres/src/backend/executor/tqueue.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void DestroyTupleQueueReader(TupleQueueReader *reader)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: shm_mq_receive
      Src: /src/postgres/src/backend/executor/tqueue.c:187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/tqueue.c:200,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/tqueue.c:207,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - reader
    - nowait
    - done
    argTypes:
    - TupleQueueReader*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 210
    functionName: TupleQueueReaderNext
    functionSourceFile: /src/postgres/src/backend/executor/tqueue.c
    functionUses: 0
    functionsReached:
    - shm_mq_receive
    - Assert
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple TupleQueueReaderNext(TupleQueueReader *reader, bool nowait,
      bool *done)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: tts_virtual_init
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tts_virtual_init(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: tts_virtual_release
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tts_virtual_release(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:110,1
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:110,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:114,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execTuples.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 123
    functionName: tts_virtual_clear
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - pfree
    - unlikely
    - ItemPointerSetInvalid
    - TTS_SHOULDFREE
    linkageType: ''
    returnType: void
    signature: void tts_virtual_clear(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slot
    - natts
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: tts_virtual_getsomeattrs
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void tts_virtual_getsomeattrs(TupleTableSlot *slot, int natts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:143,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:143,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execTuples.c:145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execTuples.c:146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execTuples.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - slot
    - attnum
    - isnull
    argTypes:
    - TupleTableSlot*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 150
    functionName: tts_virtual_getsysattr
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - TTS_EMPTY
    - errmsg
    linkageType: ''
    returnType: Datum
    signature: Datum tts_virtual_getsysattr(TupleTableSlot *slot, int attnum, bool
      *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:159,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execTuples.c:161,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execTuples.c:162,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execTuples.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 166
    functionName: tts_virtual_is_current_xact_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - TTS_EMPTY
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool tts_virtual_is_current_xact_tuple(TupleTableSlot *slot)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:184,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:190,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/executor/execTuples.c:199,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execTuples.c:199,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/executor/execTuples.c:205,1
    - Dst: EOH_get_flat_size
      Src: /src/postgres/src/backend/executor/execTuples.c:206,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/execTuples.c:206,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/executor/execTuples.c:210,1
    - Dst: att_addlength_datum
      Src: /src/postgres/src/backend/executor/execTuples.c:211,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/execTuples.c:220,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:226,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/executor/execTuples.c:235,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execTuples.c:235,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/execTuples.c:243,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/executor/execTuples.c:245,1
    - Dst: EOH_get_flat_size
      Src: /src/postgres/src/backend/executor/execTuples.c:247,1
    - Dst: EOH_flatten_into
      Src: /src/postgres/src/backend/executor/execTuples.c:248,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execTuples.c:250,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/executor/execTuples.c:257,1
    - Dst: att_addlength_datum
      Src: /src/postgres/src/backend/executor/execTuples.c:258,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:260,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execTuples.c:260,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execTuples.c:262,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 266
    functionName: tts_virtual_materialize
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - VARATT_IS_EXTERNAL_EXPANDED
    - EOH_flatten_into
    - memcpy
    - MemoryContextAlloc
    - TTS_SHOULDFREE
    - att_nominal_alignby
    - att_addlength_datum
    - EOH_get_flat_size
    - DatumGetEOHP
    - PointerGetDatum
    - TupleDescCompactAttr
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void tts_virtual_materialize(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tts_virtual_clear
      Src: /src/postgres/src/backend/executor/execTuples.c:273,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execTuples.c:275,1
    - Dst: tts_virtual_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - dstslot
    - srcslot
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 268
    functionDepth: 4
    functionLinenumber: 268
    functionLinenumberEnd: 288
    functionName: tts_virtual_copyslot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - tts_virtual_materialize
    - slot_getallattrs
    - tts_virtual_clear
    linkageType: ''
    returnType: void
    signature: void tts_virtual_copyslot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:293,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:293,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 6
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: tts_virtual_copy_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - heap_form_tuple
    - TTS_EMPTY
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple tts_virtual_copy_heap_tuple(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:303,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:303,1
    - Dst: heap_form_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - slot
    - extra
    argTypes:
    - TupleTableSlot*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 300
    functionDepth: 6
    functionLinenumber: 300
    functionLinenumberEnd: 309
    functionName: tts_virtual_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - heap_form_minimal_tuple
    - TTS_EMPTY
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple tts_virtual_copy_minimal_tuple(TupleTableSlot *slot, Size
      extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: tts_heap_init
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tts_heap_init(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: tts_heap_release
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tts_heap_release(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:332,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/execTuples.c:334,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execTuples.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 343
    functionName: tts_heap_clear
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetInvalid
    - TTS_SHOULDFREE
    - heap_freetuple
    linkageType: ''
    returnType: void
    signature: void tts_heap_clear(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:350,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:350,1
    - Dst: slot_deform_heap_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - slot
    - natts
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 353
    functionName: tts_heap_getsomeattrs
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - slot_deform_heap_tuple
    linkageType: ''
    returnType: void
    signature: void tts_heap_getsomeattrs(TupleTableSlot *slot, int natts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:360,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:360,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execTuples.c:367,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execTuples.c:368,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execTuples.c:369,1
    - Dst: heap_getsysattr
      Src: /src/postgres/src/backend/executor/execTuples.c:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - slot
    - attnum
    - isnull
    argTypes:
    - TupleTableSlot*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 373
    functionName: tts_heap_getsysattr
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - heap_getsysattr
    - ereport
    - TTS_EMPTY
    - errmsg
    linkageType: ''
    returnType: Datum
    signature: Datum tts_heap_getsysattr(TupleTableSlot *slot, int attnum, bool *isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:381,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:381,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execTuples.c:389,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execTuples.c:390,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execTuples.c:391,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/executor/execTuples.c:393,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/execTuples.c:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 375
    functionDepth: 3
    functionLinenumber: 375
    functionLinenumberEnd: 396
    functionName: tts_heap_is_current_xact_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - errcode
    - Assert
    - HeapTupleHeaderGetRawXmin
    - ereport
    - TTS_EMPTY
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool tts_heap_is_current_xact_tuple(TupleTableSlot *slot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:404,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:404,1
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:407,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:410,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:420,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/executor/execTuples.c:430,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 398
    functionDepth: 6
    functionLinenumber: 398
    functionLinenumberEnd: 436
    functionName: tts_heap_materialize
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - heap_form_tuple
    - TTS_SHOULDFREE
    - MemoryContextSwitchTo
    - TTS_EMPTY
    - heap_copytuple
    linkageType: ''
    returnType: void
    signature: void tts_heap_materialize(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:444,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:445,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:446,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dstslot
    - srcslot
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 449
    functionName: tts_heap_copyslot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - ExecStoreHeapTuple
    - ExecCopySlotHeapTuple
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void tts_heap_copyslot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:456,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:456,1
    - Dst: tts_heap_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 451
    functionDepth: 7
    functionLinenumber: 451
    functionLinenumberEnd: 461
    functionName: tts_heap_get_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - tts_heap_materialize
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple tts_heap_get_heap_tuple(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:468,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:468,1
    - Dst: tts_heap_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:470,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/executor/execTuples.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 463
    functionDepth: 7
    functionLinenumber: 463
    functionLinenumberEnd: 473
    functionName: tts_heap_copy_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - tts_heap_materialize
    - heap_copytuple
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple tts_heap_copy_heap_tuple(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tts_heap_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:481,1
    - Dst: minimal_tuple_from_heap_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - slot
    - extra
    argTypes:
    - TupleTableSlot*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 475
    functionDepth: 7
    functionLinenumber: 475
    functionLinenumberEnd: 484
    functionName: tts_heap_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - tts_heap_materialize
    - minimal_tuple_from_heap_tuple
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple tts_heap_copy_minimal_tuple(TupleTableSlot *slot, Size
      extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tts_heap_clear
      Src: /src/postgres/src/backend/executor/execTuples.c:491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - slot
    - tuple
    - shouldFree
    argTypes:
    - TupleTableSlot*
    - HeapTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 486
    functionDepth: 3
    functionLinenumber: 486
    functionLinenumberEnd: 501
    functionName: tts_heap_store_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - tts_heap_clear
    linkageType: ''
    returnType: void
    signature: void tts_heap_store_tuple(TupleTableSlot *slot, HeapTuple tuple, bool
      shouldFree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 518
    functionName: tts_minimal_init
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tts_minimal_init(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 523
    functionName: tts_minimal_release
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tts_minimal_release(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:530,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:532,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execTuples.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 541
    functionName: tts_minimal_clear
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetInvalid
    - heap_free_minimal_tuple
    - TTS_SHOULDFREE
    linkageType: ''
    returnType: void
    signature: void tts_minimal_clear(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:548,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:548,1
    - Dst: slot_deform_heap_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - slot
    - natts
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 551
    functionName: tts_minimal_getsomeattrs
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - slot_deform_heap_tuple
    linkageType: ''
    returnType: void
    signature: void tts_minimal_getsomeattrs(TupleTableSlot *slot, int natts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:560,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:560,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execTuples.c:562,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execTuples.c:563,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execTuples.c:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - slot
    - attnum
    - isnull
    argTypes:
    - TupleTableSlot*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 567
    functionName: tts_minimal_getsysattr
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - TTS_EMPTY
    - errmsg
    linkageType: ''
    returnType: Datum
    signature: Datum tts_minimal_getsysattr(TupleTableSlot *slot, int attnum, bool
      *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:577,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:577,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execTuples.c:579,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execTuples.c:580,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execTuples.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 584
    functionName: tts_minimal_is_current_xact_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - TTS_EMPTY
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool tts_minimal_is_current_xact_tuple(TupleTableSlot *slot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:592,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:592,1
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:595,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:598,1
    - Dst: heap_form_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:609,1
    - Dst: heap_copy_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:627,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:632,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 586
    functionDepth: 6
    functionLinenumber: 586
    functionLinenumberEnd: 633
    functionName: tts_minimal_materialize
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - heap_copy_minimal_tuple
    - heap_form_minimal_tuple
    - TTS_SHOULDFREE
    - MemoryContextSwitchTo
    - TTS_EMPTY
    linkageType: ''
    returnType: void
    signature: void tts_minimal_materialize(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:641,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:642,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:643,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dstslot
    - srcslot
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 646
    functionName: tts_minimal_copyslot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - ExecStoreMinimalTuple
    - ExecCopySlotMinimalTuple
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void tts_minimal_copyslot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tts_minimal_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:654,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 648
    functionDepth: 7
    functionLinenumber: 648
    functionLinenumberEnd: 657
    functionName: tts_minimal_get_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - tts_minimal_materialize
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple tts_minimal_get_minimal_tuple(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tts_minimal_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:665,1
    - Dst: heap_tuple_from_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 659
    functionDepth: 7
    functionLinenumber: 659
    functionLinenumberEnd: 668
    functionName: tts_minimal_copy_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - tts_minimal_materialize
    - heap_tuple_from_minimal_tuple
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple tts_minimal_copy_heap_tuple(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tts_minimal_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:676,1
    - Dst: heap_copy_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:678,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - slot
    - extra
    argTypes:
    - TupleTableSlot*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 670
    functionDepth: 7
    functionLinenumber: 670
    functionLinenumberEnd: 679
    functionName: tts_minimal_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - heap_copy_minimal_tuple
    - tts_minimal_materialize
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple tts_minimal_copy_minimal_tuple(TupleTableSlot *slot, Size
      extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tts_minimal_clear
      Src: /src/postgres/src/backend/executor/execTuples.c:686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:688,1
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:688,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:689,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:689,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - slot
    - mtup
    - shouldFree
    argTypes:
    - TupleTableSlot*
    - MinimalTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 681
    functionDepth: 3
    functionLinenumber: 681
    functionLinenumberEnd: 703
    functionName: tts_minimal_store_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - tts_minimal_clear
    - TTS_EMPTY
    - TTS_SHOULDFREE
    linkageType: ''
    returnType: void
    signature: void tts_minimal_store_tuple(TupleTableSlot *slot, MinimalTuple mtup,
      bool shouldFree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 713
    functionName: tts_buffer_heap_init
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tts_buffer_heap_init(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 718
    functionName: tts_buffer_heap_release
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tts_buffer_heap_release(TupleTableSlot *slot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:733,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:733,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/execTuples.c:735,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:739,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/executor/execTuples.c:740,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execTuples.c:744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 720
    functionDepth: 2
    functionLinenumber: 720
    functionLinenumberEnd: 748
    functionName: tts_buffer_heap_clear
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - heap_freetuple
    - Assert
    - TTS_SHOULDFREE
    - BufferIsValid
    - ItemPointerSetInvalid
    linkageType: ''
    returnType: void
    signature: void tts_buffer_heap_clear(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:755,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:755,1
    - Dst: slot_deform_heap_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - slot
    - natts
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 758
    functionName: tts_buffer_heap_getsomeattrs
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - slot_deform_heap_tuple
    linkageType: ''
    returnType: void
    signature: void tts_buffer_heap_getsomeattrs(TupleTableSlot *slot, int natts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:765,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:765,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execTuples.c:772,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execTuples.c:773,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execTuples.c:774,1
    - Dst: heap_getsysattr
      Src: /src/postgres/src/backend/executor/execTuples.c:776,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - slot
    - attnum
    - isnull
    argTypes:
    - TupleTableSlot*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 778
    functionName: tts_buffer_heap_getsysattr
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - heap_getsysattr
    - ereport
    - TTS_EMPTY
    - errmsg
    linkageType: ''
    returnType: Datum
    signature: Datum tts_buffer_heap_getsysattr(TupleTableSlot *slot, int attnum,
      bool *isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:786,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:786,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execTuples.c:794,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execTuples.c:795,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execTuples.c:796,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/executor/execTuples.c:798,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/execTuples.c:800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 780
    functionDepth: 3
    functionLinenumber: 780
    functionLinenumberEnd: 801
    functionName: tts_buffer_is_current_xact_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsCurrentTransactionId
    - errcode
    - Assert
    - HeapTupleHeaderGetRawXmin
    - ereport
    - TTS_EMPTY
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool tts_buffer_is_current_xact_tuple(TupleTableSlot *slot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:809,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:809,1
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:812,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:815,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:833,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/executor/execTuples.c:839,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execTuples.c:845,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:845,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/executor/execTuples.c:846,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:859,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 803
    functionDepth: 6
    functionLinenumber: 803
    functionLinenumberEnd: 860
    functionName: tts_buffer_heap_materialize
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    - Assert
    - heap_form_tuple
    - TTS_SHOULDFREE
    - MemoryContextSwitchTo
    - likely
    - TTS_EMPTY
    - heap_copytuple
    - BufferIsValid
    linkageType: ''
    returnType: void
    signature: void tts_buffer_heap_materialize(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:874,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:879,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:881,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:882,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:884,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:888,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:888,1
    - Dst: tts_buffer_heap_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:890,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:899,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - dstslot
    - srcslot
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 862
    functionDepth: 2
    functionLinenumber: 862
    functionLinenumberEnd: 902
    functionName: tts_buffer_heap_copyslot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - TTS_SHOULDFREE
    - MemoryContextSwitchTo
    - ExecCopySlotHeapTuple
    - BufferIsValid
    - ExecClearTuple
    - tts_buffer_heap_store_tuple
    linkageType: ''
    returnType: void
    signature: void tts_buffer_heap_copyslot(TupleTableSlot *dstslot, TupleTableSlot
      *srcslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:909,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:909,1
    - Dst: tts_buffer_heap_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:912,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 904
    functionDepth: 7
    functionLinenumber: 904
    functionLinenumberEnd: 915
    functionName: tts_buffer_heap_get_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - tts_buffer_heap_materialize
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple tts_buffer_heap_get_heap_tuple(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:922,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:922,1
    - Dst: tts_buffer_heap_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:925,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/executor/execTuples.c:927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 917
    functionDepth: 7
    functionLinenumber: 917
    functionLinenumberEnd: 928
    functionName: tts_buffer_heap_copy_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - heap_copytuple
    - tts_buffer_heap_materialize
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple tts_buffer_heap_copy_heap_tuple(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:935,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:935,1
    - Dst: tts_buffer_heap_materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:938,1
    - Dst: minimal_tuple_from_heap_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - slot
    - extra
    argTypes:
    - TupleTableSlot*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 930
    functionDepth: 7
    functionLinenumber: 930
    functionLinenumberEnd: 941
    functionName: tts_buffer_heap_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - minimal_tuple_from_heap_tuple
    - tts_buffer_heap_materialize
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple tts_buffer_heap_copy_minimal_tuple(TupleTableSlot *slot,
      Size extra)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TTS_SHOULDFREE
      Src: /src/postgres/src/backend/executor/execTuples.c:949,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:952,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:952,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/execTuples.c:954,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:977,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/executor/execTuples.c:978,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:982,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/executor/execTuples.c:983,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:985,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/executor/execTuples.c:991,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - slot
    - tuple
    - buffer
    - transfer_pin
    argTypes:
    - TupleTableSlot*
    - HeapTuple
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 943
    functionDepth: 2
    functionLinenumber: 943
    functionLinenumberEnd: 993
    functionName: tts_buffer_heap_store_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - ReleaseBuffer
    - heap_freetuple
    - Assert
    - TTS_SHOULDFREE
    - IncrBufferRefCount
    - BufferIsValid
    linkageType: ''
    returnType: void
    signature: "void tts_buffer_heap_store_tuple(TupleTableSlot *slot, HeapTuple tuple,\n\t\t\t\t\t\t\tBuffer
      buffer, bool transfer_pin)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1035,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/execTuples.c:1049,1
    - Dst: HeapTupleHasNulls
      Src: /src/postgres/src/backend/executor/execTuples.c:1053,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/executor/execTuples.c:1055,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1056,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/executor/execTuples.c:1057,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/execTuples.c:1059,1
    - Dst: first_null_attr
      Src: /src/postgres/src/backend/executor/execTuples.c:1065,1
    - Dst: populate_isnull_array
      Src: /src/postgres/src/backend/executor/execTuples.c:1071,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1083,1
    - Dst: first_null_attr
      Src: /src/postgres/src/backend/executor/execTuples.c:1083,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1088,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/execTuples.c:1095,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/executor/execTuples.c:1095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1118,1
    - Dst: pg_assume
      Src: /src/postgres/src/backend/executor/execTuples.c:1131,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1132,1
    - Dst: fetch_att_noerr
      Src: /src/postgres/src/backend/executor/execTuples.c:1135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1154,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/execTuples.c:1158,1
    - Dst: fetch_att_noerr
      Src: /src/postgres/src/backend/executor/execTuples.c:1175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1186,1
    - Dst: pg_assume
      Src: /src/postgres/src/backend/executor/execTuples.c:1209,1
    - Dst: align_fetch_then_add
      Src: /src/postgres/src/backend/executor/execTuples.c:1212,1
    - Dst: pg_assume
      Src: /src/postgres/src/backend/executor/execTuples.c:1239,1
    - Dst: align_fetch_then_add
      Src: /src/postgres/src/backend/executor/execTuples.c:1242,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:1250,1
    - Dst: slot_getmissingattrs
      Src: /src/postgres/src/backend/executor/execTuples.c:1257,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 88
    argCount: 5
    argNames:
    - slot
    - tuple
    - offp
    - reqnatts
    - support_cstring
    argTypes:
    - TupleTableSlot*
    - HeapTuple
    - uint32*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1016
    functionDepth: 5
    functionLinenumber: 1016
    functionLinenumberEnd: 1264
    functionName: slot_deform_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 3
    functionsReached:
    - pg_assume
    - Assert
    - slot_getmissingattrs
    - HeapTupleHasNulls
    - align_fetch_then_add
    - HeapTupleHeaderGetNatts
    - unlikely
    - first_null_attr
    - Min
    - MAXALIGN
    - BITMAPLEN
    - populate_isnull_array
    - fetch_att_noerr
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline slot_deform_heap_tuple(TupleTableSlot *slot,
      HeapTuple tuple, uint32 *offp,\n\t\t\t\t\t   int reqnatts, bool support_cstring)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1379,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1380,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1381,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execTuples.c:1385,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1400,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1404,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1405,1
    - Dst: PinTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1407,1
    - Dst: TupleTableSlot*::tts_ops::init
      Src: /src/postgres/src/backend/executor/execTuples.c:1425,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - tupleDesc
    - tts_ops
    - flags
    argTypes:
    - TupleDesc
    - TupleTableSlotOps*
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1357
    functionDepth: 1
    functionLinenumber: 1357
    functionLinenumberEnd: 1428
    functionName: MakeTupleTableSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 5
    functionsReached:
    - PinTupleDesc
    - palloc0
    - TYPEALIGN
    - TupleTableSlot*::tts_ops::init
    - MAXALIGN
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nMakeTupleTableSlot(TupleDesc tupleDesc,\n\t\t\t\t
      \  const TupleTableSlotOps *tts_ops, uint16 flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:1440,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execTuples.c:1442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - tupleTable
    - desc
    - tts_ops
    - flags
    argTypes:
    - List**
    - TupleDesc
    - TupleTableSlotOps*
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1436
    functionDepth: 6
    functionLinenumber: 1436
    functionLinenumberEnd: 1445
    functionName: ExecAllocTableSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - MakeTupleTableSlot
    - lappend
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecAllocTableSlot(List **tupleTable, TupleDesc
      desc,\n\t\t\t\t   const TupleTableSlotOps *tts_ops, uint16 flags)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execTuples.c:1464,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1467,1
    - Dst: TupleTableSlot*::tts_ops::release
      Src: /src/postgres/src/backend/executor/execTuples.c:1468,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1471,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execTuples.c:1478,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1481,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1483,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1485,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execTuples.c:1491,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - tupleTable
    - shouldFree
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1456
    functionDepth: 4
    functionLinenumber: 1456
    functionLinenumberEnd: 1492
    functionName: ExecResetTupleTable
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 3
    functionsReached:
    - ReleaseTupleDesc
    - list_free
    - pfree
    - TupleTableSlot*::tts_ops::release
    - ExecClearTuple
    - TTS_FIXED
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void ExecResetTupleTable(List *tupleTable,\t/* tuple table */\n\t\t\t\t\tbool
      shouldFree)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execTuples.c:1464,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1467,1
    - Dst: TupleTableSlot*::tts_ops::release
      Src: /src/postgres/src/backend/executor/execTuples.c:1468,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1471,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execTuples.c:1478,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1481,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1483,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1485,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1487
      start: 1462
    functionDepth: 1
    functionLinenumber: 1462
    functionLinenumberEnd: 1487
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 405
    functionsReached:
    - ReleaseTupleDesc
    - pfree
    - TupleTableSlot*::tts_ops::release
    - ExecClearTuple
    - TTS_FIXED
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tupleTable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:1507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tupdesc
    - tts_ops
    argTypes:
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1503
    functionDepth: 2
    functionLinenumber: 1503
    functionLinenumberEnd: 1510
    functionName: MakeSingleTupleTableSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 21
    functionsReached:
    - MakeTupleTableSlot
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nMakeSingleTupleTableSlot(TupleDesc tupdesc,\n\t\t\t\t\t\t
      const TupleTableSlotOps *tts_ops)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1523,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execTuples.c:1523,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1524,1
    - Dst: TupleTableSlot*::tts_ops::release
      Src: /src/postgres/src/backend/executor/execTuples.c:1525,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1527,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execTuples.c:1528,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1531,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1533,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1535,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1536
      start: 1519
    functionDepth: 1
    functionLinenumber: 1519
    functionLinenumberEnd: 1536
    functionName: ExecDropSingleTupleTableSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 24
    functionsReached:
    - ReleaseTupleDesc
    - Assert
    - pfree
    - TupleTableSlot*::tts_ops::release
    - ExecClearTuple
    - IsA
    - TTS_FIXED
    linkageType: ''
    returnType: void
    signature: void ExecDropSingleTupleTableSlot(TupleTableSlot *slot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1558,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execTuples.c:1558,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1561,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1568,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1571,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1573,1
    - Dst: PinTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1579,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/execTuples.c:1586,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/execTuples.c:1594,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1594,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - slot
    - tupdesc
    argTypes:
    - TupleTableSlot*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1554
    functionDepth: 1
    functionLinenumber: 1554
    functionLinenumberEnd: 1595
    functionName: ExecSetSlotDescriptor
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - PinTupleDesc
    - ReleaseTupleDesc
    - MemoryContextAlloc
    - Assert
    - pfree
    - TYPEALIGN
    - ExecClearTuple
    - TTS_FIXED
    linkageType: ''
    returnType: void
    signature: "void ExecSetSlotDescriptor(TupleTableSlot *slot, /* slot to change
      */\n\t\t\t\t\t  TupleDesc tupdesc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1631,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1633,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:1635,1
    - Dst: TTS_IS_HEAPTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1635,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:1636,1
    - Dst: tts_heap_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - tuple
    - slot
    - shouldFree
    argTypes:
    - HeapTuple
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1642
      start: 1623
    functionDepth: 4
    functionLinenumber: 1623
    functionLinenumberEnd: 1642
    functionName: ExecStoreHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 7
    functionsReached:
    - elog
    - TTS_IS_HEAPTUPLE
    - Assert
    - unlikely
    - tts_heap_store_tuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecStoreHeapTuple(HeapTuple tuple,\n\t\t\t\t   TupleTableSlot
      *slot,\n\t\t\t\t   bool shouldFree)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1673,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1674,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:1674,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:1676,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1676,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:1677,1
    - Dst: tts_buffer_heap_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1678,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - tuple
    - slot
    - buffer
    argTypes:
    - HeapTuple
    - TupleTableSlot*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1663
    functionDepth: 3
    functionLinenumber: 1663
    functionLinenumberEnd: 1683
    functionName: ExecStoreBufferHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 7
    functionsReached:
    - elog
    - TTS_IS_BUFFERTUPLE
    - Assert
    - unlikely
    - BufferIsValid
    - tts_buffer_heap_store_tuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecStoreBufferHeapTuple(HeapTuple tuple,\n\t\t\t\t\t\t
      TupleTableSlot *slot,\n\t\t\t\t\t\t Buffer buffer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1698,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1699,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1700,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:1700,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:1702,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1702,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:1703,1
    - Dst: tts_buffer_heap_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - tuple
    - slot
    - buffer
    argTypes:
    - HeapTuple
    - TupleTableSlot*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1709
      start: 1689
    functionDepth: 3
    functionLinenumber: 1689
    functionLinenumberEnd: 1709
    functionName: ExecStorePinnedBufferHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 2
    functionsReached:
    - elog
    - TTS_IS_BUFFERTUPLE
    - Assert
    - unlikely
    - BufferIsValid
    - tts_buffer_heap_store_tuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecStorePinnedBufferHeapTuple(HeapTuple tuple,\n\t\t\t\t\t\t\t
      \  TupleTableSlot *slot,\n\t\t\t\t\t\t\t   Buffer buffer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1726,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1727,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:1729,1
    - Dst: TTS_IS_MINIMALTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1729,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:1730,1
    - Dst: tts_minimal_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1731,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - mtup
    - slot
    - shouldFree
    argTypes:
    - MinimalTuple
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1717
    functionDepth: 4
    functionLinenumber: 1717
    functionLinenumberEnd: 1734
    functionName: ExecStoreMinimalTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 5
    functionsReached:
    - elog
    - Assert
    - tts_minimal_store_tuple
    - unlikely
    - TTS_IS_MINIMALTUPLE
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecStoreMinimalTuple(MinimalTuple mtup,\n\t\t\t\t\t
      \ TupleTableSlot *slot,\n\t\t\t\t\t  bool shouldFree)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TTS_IS_HEAPTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1745,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1747,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1749,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1754,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:1756,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1757,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:1759,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1762,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1766,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1767,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1769,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:1773,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1774,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - tuple
    - slot
    - shouldFree
    argTypes:
    - HeapTuple
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1740
    functionDepth: 6
    functionLinenumber: 1740
    functionLinenumberEnd: 1777
    functionName: ExecForceStoreHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - ExecStoreHeapTuple
    - TTS_IS_HEAPTUPLE
    - heap_deform_tuple
    - TTS_IS_BUFFERTUPLE
    - pfree
    - MemoryContextSwitchTo
    - heap_copytuple
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - ExecMaterializeSlot
    linkageType: ''
    returnType: void
    signature: "void ExecForceStoreHeapTuple(HeapTuple tuple,\n\t\t\t\t\t\tTupleTableSlot
      *slot,\n\t\t\t\t\t\tbool shouldFree)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TTS_IS_MINIMALTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1788,1
    - Dst: tts_minimal_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1790,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1796,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1800,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1802,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:1806,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1807,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - mtup
    - slot
    - shouldFree
    argTypes:
    - MinimalTuple
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1783
    functionDepth: 6
    functionLinenumber: 1783
    functionLinenumberEnd: 1810
    functionName: ExecForceStoreMinimalTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - pfree
    - tts_minimal_store_tuple
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - ExecMaterializeSlot
    - TTS_IS_MINIMALTUPLE
    linkageType: ''
    returnType: void
    signature: "void ExecForceStoreMinimalTuple(MinimalTuple mtup,\n\t\t\t\t\t\t   TupleTableSlot
      *slot,\n\t\t\t\t\t\t   bool shouldFree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1830,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1831,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:1831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1823
    functionDepth: 1
    functionLinenumber: 1823
    functionLinenumberEnd: 1837
    functionName: ExecStoreVirtualTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 13
    functionsReached:
    - Assert
    - TTS_EMPTY
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecStoreVirtualTuple(TupleTableSlot *slot)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1853,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1854,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1857,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/execTuples.c:1862,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execTuples.c:1864,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1868
      start: 1847
    functionDepth: 2
    functionLinenumber: 1847
    functionLinenumberEnd: 1868
    functionName: ExecStoreAllNullTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemSet
    - ExecStoreVirtualTuple
    - memset
    - ExecClearTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecStoreAllNullTuple(TupleTableSlot *slot)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execTuples.c:1883,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execTuples.c:1885,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1889,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1891,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - data
    - slot
    argTypes:
    - Datum
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1877
    functionDepth: 6
    functionLinenumber: 1877
    functionLinenumberEnd: 1894
    functionName: ExecStoreHeapTupleDatum
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - heap_deform_tuple
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - DatumGetHeapTupleHeader
    linkageType: ''
    returnType: void
    signature: void ExecStoreHeapTupleDatum(Datum data, TupleTableSlot *slot)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1921,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1922,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:1922,1
    - Dst: TupleTableSlot*::tts_ops::materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:1926,1
    - Dst: TupleTableSlot*::tts_ops::copy_heap_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1932,1
    - Dst: TupleTableSlot*::tts_ops::get_heap_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1938,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - slot
    - materialize
    - shouldFree
    argTypes:
    - TupleTableSlot*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1940
      start: 1915
    functionDepth: 1
    functionLinenumber: 1915
    functionLinenumberEnd: 1940
    functionName: ExecFetchSlotHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 9
    functionsReached:
    - Assert
    - TupleTableSlot*::tts_ops::materialize
    - TupleTableSlot*::tts_ops::get_heap_tuple
    - TupleTableSlot*::tts_ops::copy_heap_tuple
    - TTS_EMPTY
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple ExecFetchSlotHeapTuple(TupleTableSlot *slot, bool materialize,
      bool *shouldFree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1970,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1971,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:1971,1
    - Dst: TupleTableSlot*::tts_ops::get_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1977,1
    - Dst: TupleTableSlot*::tts_ops::copy_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1983,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - slot
    - shouldFree
    argTypes:
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1963
    functionDepth: 1
    functionLinenumber: 1963
    functionLinenumberEnd: 1985
    functionName: ExecFetchSlotMinimalTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 5
    functionsReached:
    - Assert
    - TupleTableSlot*::tts_ops::copy_minimal_tuple
    - TTS_EMPTY
    - TupleTableSlot*::tts_ops::get_minimal_tuple
    linkageType: ''
    returnType: MinimalTuple
    signature: "MinimalTuple ExecFetchSlotMinimalTuple(TupleTableSlot *slot,\n\t\t\t\t\t\t
      \ bool *shouldFree)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2003,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/backend/executor/execTuples.c:2007,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:2010,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2013
      start: 1994
    functionDepth: 5
    functionLinenumber: 1994
    functionLinenumberEnd: 2013
    functionName: ExecFetchSlotHeapTupleDatum
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 2
    functionsReached:
    - pfree
    - ExecFetchSlotHeapTuple
    - heap_copy_tuple_as_datum
    linkageType: ''
    returnType: Datum
    signature: Datum ExecFetchSlotHeapTupleDatum(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/execTuples.c:2029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - planstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2026
    functionDepth: 1
    functionLinenumber: 2026
    functionLinenumberEnd: 2032
    functionName: ExecInitResultTypeTL
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 9
    functionsReached:
    - ExecTypeFromTL
    linkageType: ''
    returnType: void
    signature: void ExecInitResultTypeTL(PlanState *planstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecAllocTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - planstate
    - tts_ops
    argTypes:
    - PlanState*
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2062
      start: 2050
    functionDepth: 7
    functionLinenumber: 2050
    functionLinenumberEnd: 2062
    functionName: ExecInitResultSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - ExecAllocTableSlot
    linkageType: ''
    returnType: void
    signature: void ExecInitResultSlot(PlanState *planstate, const TupleTableSlotOps
      *tts_ops)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/execTuples.c:2074,1
    - Dst: ExecInitResultSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - planstate
    - tts_ops
    argTypes:
    - PlanState*
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2076
      start: 2070
    functionDepth: 8
    functionLinenumber: 2070
    functionLinenumberEnd: 2076
    functionName: ExecInitResultTupleSlotTL
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 7
    functionsReached:
    - ExecInitResultSlot
    - ExecInitResultTypeTL
    linkageType: ''
    returnType: void
    signature: "void ExecInitResultTupleSlotTL(PlanState *planstate,\n\t\t\t\t\t\t
      \ const TupleTableSlotOps *tts_ops)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecAllocTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - estate
    - scanstate
    - tupledesc
    - tts_ops
    - flags
    argTypes:
    - EState*
    - ScanState*
    - TupleDesc
    - TupleTableSlotOps*
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2093
      start: 2082
    functionDepth: 7
    functionLinenumber: 2082
    functionLinenumberEnd: 2093
    functionName: ExecInitScanTupleSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 7
    functionsReached:
    - ExecAllocTableSlot
    linkageType: ''
    returnType: void
    signature: "void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate,\n\t\t\t\t\t
      \ TupleDesc tupledesc, const TupleTableSlotOps *tts_ops,\n\t\t\t\t\t  uint16
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecAllocTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - estate
    - tupledesc
    - tts_ops
    argTypes:
    - EState*
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2103
    functionDepth: 7
    functionLinenumber: 2103
    functionLinenumberEnd: 2109
    functionName: ExecInitExtraTupleSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 6
    functionsReached:
    - ExecAllocTableSlot
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecInitExtraTupleSlot(EState *estate,\n\t\t\t\t\t
      \  TupleDesc tupledesc,\n\t\t\t\t\t   const TupleTableSlotOps *tts_ops)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2123,1
    - Dst: ExecStoreAllNullTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - estate
    - tupType
    - tts_ops
    argTypes:
    - EState*
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2126
      start: 2119
    functionDepth: 8
    functionLinenumber: 2119
    functionLinenumberEnd: 2126
    functionName: ExecInitNullTupleSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 2
    functionsReached:
    - ExecInitExtraTupleSlot
    - ExecStoreAllNullTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecInitNullTupleSlot(EState *estate, TupleDesc
      tupType,\n\t\t\t\t\t  const TupleTableSlotOps *tts_ops)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:2146,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:2147,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - slot
    - startAttNum
    - lastAttNum
    argTypes:
    - TupleTableSlot*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2170
      start: 2140
    functionDepth: 1
    functionLinenumber: 2140
    functionLinenumberEnd: 2170
    functionName: slot_getmissingattrs
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - elog
    - unlikely
    linkageType: ''
    returnType: void
    signature: void slot_getmissingattrs(TupleTableSlot *slot, int startAttNum, int
      lastAttNum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:2180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:2181,1
    - Dst: TupleTableSlot*::tts_ops::getsomeattrs
      Src: /src/postgres/src/backend/executor/execTuples.c:2184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slot
    - attnum
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2190
      start: 2176
    functionDepth: 1
    functionLinenumber: 2176
    functionLinenumberEnd: 2190
    functionName: slot_getsomeattrs_int
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - TupleTableSlot*::tts_ops::getsomeattrs
    linkageType: ''
    returnType: void
    signature: void slot_getsomeattrs_int(TupleTableSlot *slot, int attnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecTypeFromTLInternal
      Src: /src/postgres/src/backend/executor/execTuples.c:2207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - targetList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2204
    functionDepth: 1
    functionLinenumber: 2204
    functionLinenumberEnd: 2208
    functionName: ExecTypeFromTL
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 2
    functionsReached:
    - ExecTypeFromTLInternal
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc ExecTypeFromTL(List *targetList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecTypeFromTLInternal
      Src: /src/postgres/src/backend/executor/execTuples.c:2219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - targetList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2220
      start: 2216
    functionDepth: 1
    functionLinenumber: 2216
    functionLinenumberEnd: 2220
    functionName: ExecCleanTypeFromTL
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - ExecTypeFromTLInternal
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc ExecCleanTypeFromTL(List *targetList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecCleanTargetListLength
      Src: /src/postgres/src/backend/executor/execTuples.c:2231,1
    - Dst: ExecTargetListLength
      Src: /src/postgres/src/backend/executor/execTuples.c:2233,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2234,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2238,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execTuples.c:2242,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execTuples.c:2245,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2246,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2248,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2250,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/executor/execTuples.c:2254,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - targetList
    - skipjunk
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2257
      start: 2222
    functionDepth: 5
    functionLinenumber: 2222
    functionLinenumberEnd: 2257
    functionName: ExecTypeFromTLInternal
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 2
    functionsReached:
    - ExecTargetListLength
    - ExecCleanTargetListLength
    - exprTypmod
    - CreateTemplateTupleDesc
    - exprType
    - TupleDescFinalize
    - exprCollation
    - lfirst
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc ExecTypeFromTLInternal(List *targetList, bool skipjunk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2238,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execTuples.c:2242,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execTuples.c:2245,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2246,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2248,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2236
    functionDepth: 5
    functionLinenumber: 2236
    functionLinenumberEnd: 2252
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 405
    functionsReached:
    - exprTypmod
    - exprType
    - exprCollation
    - TupleDescInitEntryCollation
    - lfirst
    - TupleDescInitEntry
    linkageType: ''
    returnType: void
    signature: void foreach(l, targetList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2272,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execTuples.c:2272,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2276,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execTuples.c:2278,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execTuples.c:2281,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2282,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2284,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2286,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/executor/execTuples.c:2290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - exprList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2265
    functionDepth: 5
    functionLinenumber: 2265
    functionLinenumberEnd: 2293
    functionName: ExecTypeFromExprList
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - exprTypmod
    - CreateTemplateTupleDesc
    - exprType
    - TupleDescFinalize
    - exprCollation
    - lfirst
    - TupleDescInitEntryCollation
    - list_length
    - TupleDescInitEntry
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc ExecTypeFromExprList(List *exprList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2276,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execTuples.c:2278,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execTuples.c:2281,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2282,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2284,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2274
    functionDepth: 5
    functionLinenumber: 2274
    functionLinenumberEnd: 2288
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 405
    functionsReached:
    - exprTypmod
    - exprType
    - exprCollation
    - TupleDescInitEntryCollation
    - lfirst
    - TupleDescInitEntry
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:2307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:2308,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/execTuples.c:2312,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2312,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:2318,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:2329,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - typeInfo
    - namesList
    argTypes:
    - TupleDesc
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2331
      start: 2300
    functionDepth: 2
    functionLinenumber: 2300
    functionLinenumberEnd: 2331
    functionName: ExecTypeSetColNames
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - strVal
    - Assert
    - namestrcpy
    - lfirst
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void ExecTypeSetColNames(TupleDesc typeInfo, List *namesList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/execTuples.c:2312,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2312,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:2318,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:2329,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2330
      start: 2310
    functionDepth: 2
    functionLinenumber: 2310
    functionLinenumberEnd: 2330
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 405
    functionsReached:
    - TupleDescAttr
    - strVal
    - lfirst
    - namestrcpy
    linkageType: ''
    returnType: void
    signature: void foreach(lc, namesList)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:2348,1
    - Dst: assign_record_type_typmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2355
      start: 2344
    functionDepth: 1
    functionLinenumber: 2344
    functionLinenumberEnd: 2355
    functionName: BlessTupleDesc
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 12
    functionsReached:
    - Assert
    - assign_record_type_typmod
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc BlessTupleDesc(TupleDesc tupdesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execTuples.c:2374,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2377,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execTuples.c:2382,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execTuples.c:2383,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execTuples.c:2384,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:2388,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/execTuples.c:2394,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execTuples.c:2395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2404
      start: 2362
    functionDepth: 2
    functionLinenumber: 2362
    functionLinenumberEnd: 2404
    functionName: TupleDescGetAttInMetadata
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 7
    functionsReached:
    - getTypeInputInfo
    - palloc0
    - BlessTupleDesc
    - palloc_object
    - TupleDescAttr
    - fmgr_info
    linkageType: ''
    returnType: AttInMetadata
    signature: 'AttInMetadata *

      TupleDescGetAttInMetadata(TupleDesc tupdesc)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execTuples.c:2421,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execTuples.c:2422,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:2430,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/backend/executor/execTuples.c:2433,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2453,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:2459,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:2460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - attinmeta
    - values
    argTypes:
    - AttInMetadata*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2463
      start: 2411
    functionDepth: 6
    functionLinenumber: 2411
    functionLinenumberEnd: 2463
    functionName: BuildTupleFromCStrings
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 4
    functionsReached:
    - pfree
    - heap_form_tuple
    - palloc
    - TupleDescCompactAttr
    - InputFunctionCall
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderHasExternal
      Src: /src/postgres/src/backend/executor/execTuples.c:2507,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execTuples.c:2508,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2511,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execTuples.c:2511,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execTuples.c:2512,1
    - Dst: toast_flatten_tuple_to_datum
      Src: /src/postgres/src/backend/executor/execTuples.c:2515,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execTuples.c:2516,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleHeader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2522
      start: 2500
    functionDepth: 4
    functionLinenumber: 2500
    functionLinenumberEnd: 2522
    functionName: HeapTupleHeaderGetDatum
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderHasExternal
    - HeapTupleHeaderGetTypeId
    - lookup_rowtype_tupdesc
    - PointerGetDatum
    - toast_flatten_tuple_to_datum
    linkageType: ''
    returnType: Datum
    signature: Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execTuples.c:2538,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2540,1
    - Dst: TupOutputState*::dest::rStartup
      Src: /src/postgres/src/backend/executor/execTuples.c:2543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - dest
    - tupdesc
    - tts_ops
    argTypes:
    - DestReceiver*
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2546
      start: 2531
    functionDepth: 3
    functionLinenumber: 2531
    functionLinenumberEnd: 2546
    functionName: begin_tup_output_tupdesc
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 6
    functionsReached:
    - MakeSingleTupleTableSlot
    - TupOutputState*::dest::rStartup
    - palloc_object
    linkageType: ''
    returnType: TupOutputState
    signature: "TupOutputState *\nbegin_tup_output_tupdesc(DestReceiver *dest,\n\t\t\t\t\t\t
      TupleDesc tupdesc,\n\t\t\t\t\t\t const TupleTableSlotOps *tts_ops)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2558,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:2561,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:2562,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2565,1
    - Dst: TupOutputState*::dest::receiveSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2568,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2571,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - tstate
    - values
    - isnull
    argTypes:
    - TupOutputState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2572
      start: 2551
    functionDepth: 2
    functionLinenumber: 2551
    functionLinenumberEnd: 2572
    functionName: do_tup_output
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 7
    functionsReached:
    - ExecStoreVirtualTuple
    - memcpy
    - TupOutputState*::dest::receiveSlot
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void do_tup_output(TupOutputState *tstate, const Datum *values, const
      bool *isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/backend/executor/execTuples.c:2590,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execTuples.c:2598,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execTuples.c:2602,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execTuples.c:2602,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/executor/execTuples.c:2603,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:2604,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execTuples.c:2604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - tstate
    - txt
    argTypes:
    - TupOutputState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2607
      start: 2579
    functionDepth: 3
    functionLinenumber: 2579
    functionLinenumberEnd: 2607
    functionName: do_text_output_multiline
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - do_tup_output
    - strchr
    - pfree
    - cstring_to_text_with_len
    - strlen
    - PointerGetDatum
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void do_text_output_multiline(TupOutputState *tstate, const char *txt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TupOutputState*::dest::rShutdown
      Src: /src/postgres/src/backend/executor/execTuples.c:2612,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2614,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:2615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tstate
    argTypes:
    - TupOutputState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2616
      start: 2609
    functionDepth: 2
    functionLinenumber: 2609
    functionLinenumberEnd: 2616
    functionName: end_tup_output
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 6
    functionsReached:
    - pfree
    - ExecDropSingleTupleTableSlot
    - TupOutputState*::dest::rShutdown
    linkageType: ''
    returnType: void
    signature: void end_tup_output(TupOutputState *tstate)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSort.c:52,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeSort.c:58,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeSort.c:63,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeSort.c:82,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeSort.c:94,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSort.c:97,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeSort.c:98,1
    - Dst: tuplesort_begin_datum
      Src: /src/postgres/src/backend/executor/nodeSort.c:106,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeSort.c:106,1
    - Dst: tuplesort_begin_heap
      Src: /src/postgres/src/backend/executor/nodeSort.c:114,1
    - Dst: tuplesort_set_bound
      Src: /src/postgres/src/backend/executor/nodeSort.c:124,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSort.c:135,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSort.c:137,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/nodeSort.c:139,1
    - Dst: tuplesort_putdatum
      Src: /src/postgres/src/backend/executor/nodeSort.c:140,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSort.c:149,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSort.c:151,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeSort.c:153,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeSort.c:160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSort.c:177,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeSort.c:177,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSort.c:178,1
    - Dst: tuplesort_get_stats
      Src: /src/postgres/src/backend/executor/nodeSort.c:180,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeSort.c:182,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeSort.c:185,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSort.c:199,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/executor/nodeSort.c:200,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeSort.c:200,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeSort.c:203,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeSort.c:206,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeSort.c:207,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 60
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 211
    functionName: ExecSort
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - tuplesort_gettupleslot
    - tuplesort_get_stats
    - tuplesort_puttupleslot
    - tuplesort_set_bound
    - Assert
    - ExecProcNode
    - outerPlanState
    - ScanDirectionIsForward
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - IsParallelWorker
    - slot_getsomeattrs
    - SO1_printf
    - tuplesort_performsort
    - CHECK_FOR_INTERRUPTS
    - tuplesort_begin_heap
    - TupleDescAttr
    - TupIsNull
    - tuplesort_begin_datum
    - tuplesort_getdatum
    - ExecGetResultType
    - castNode
    - tuplesort_putdatum
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSort(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeSort.c:226,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeSort.c:232,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSort.c:265,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeSort.c:265,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeSort.c:265,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeSort.c:270,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeSort.c:276,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeSort.c:279,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSort.c:279,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeSort.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Sort*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 220
    functionDepth: 9
    functionLinenumber: 220
    functionLinenumberEnd: 294
    functionName: ExecInitSort
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - SO1_printf
    - ExecGetResultType
    - makeNode
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - ExecCreateScanSlotFromOuterPlan
    - outerPlan
    linkageType: ''
    returnType: SortState
    signature: 'SortState *

      ExecInitSort(Sort *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeSort.c:303,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeSort.c:310,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeSort.c:316,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSort.c:316,1
    - Dst: SO1_printf
      Src: /src/postgres/src/backend/executor/nodeSort.c:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - SortState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 320
    functionName: ExecEndSort
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - ExecEndNode
    - SO1_printf
    - tuplesort_end
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndSort(SortState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_markpos
      Src: /src/postgres/src/backend/executor/nodeSort.c:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - SortState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 338
    functionName: ExecSortMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - tuplesort_markpos
    linkageType: ''
    returnType: void
    signature: void ExecSortMarkPos(SortState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_restorepos
      Src: /src/postgres/src/backend/executor/nodeSort.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - SortState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 359
    functionName: ExecSortRestrPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - tuplesort_restorepos
    linkageType: ''
    returnType: void
    signature: void ExecSortRestrPos(SortState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSort.c:364,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSort.c:375,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeSort.c:390,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSort.c:398,1
    - Dst: tuplesort_rescan
      Src: /src/postgres/src/backend/executor/nodeSort.c:401,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - SortState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 402
    functionName: ExecReScanSort
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - ExecClearTuple
    - outerPlanState
    - tuplesort_rescan
    - ExecReScan
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: void ExecReScanSort(SortState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeSort.c:424,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeSort.c:425,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeSort.c:426,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeSort.c:427,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SortState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 428
    functionName: ExecSortEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecSortEstimate(SortState *node, ParallelContext *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeSort.c:447,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeSort.c:449,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeSort.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SortState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 453
    functionName: ExecSortInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: void ExecSortInitializeDSM(SortState *node, ParallelContext *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeSort.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - SortState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 467
    functionName: ExecSortInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: void ExecSortInitializeWorker(SortState *node, ParallelWorkerContext
      *pwcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSort.c:486,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeSort.c:487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - SortState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 489
    functionName: ExecSortRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeSort.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecSortRetrieveInstrumentation(SortState *node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ExecMakeTableFunctionResult
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:95,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:106,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:112,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:113,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:126,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:138,1
    - Dst: ExecMakeTableFunctionResult
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:154,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:165,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:176,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:178,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:179,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:183,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:192,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:210,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:232,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:241,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 1
    argNames:
    - node
    argTypes:
    - FunctionScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 59
    functionDepth: 6
    functionLinenumber: 59
    functionLinenumberEnd: 244
    functionName: FunctionNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached:
    - tuplestore_rescan
    - ExecMakeTableFunctionResult
    - Int64GetDatumFast
    - ScanDirectionIsForward
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - tuplestore_gettupleslot
    - TupIsNull
    - slot_getallattrs
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      FunctionNext(FunctionScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - FunctionScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 254
    functionName: FunctionRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool FunctionRecheck(FunctionScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:268,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 273
    functionName: ExecFunctionScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecFunctionScan(PlanState *pstate)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:295,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:296,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:296,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:301,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:335,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:337,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:341,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:343,1
    - Dst: ExecInitTableFunctionResult
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:350,1
    - Dst: BuildDescFromLists
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:376,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:386,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:393,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:401,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:403,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:408,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:409,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:415,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:417,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:418,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:423,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:437,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:456,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:467,1
    - Dst: TupleDescCopyEntry
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:476,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:482,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:490,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:491,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:497,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:503,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:504,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:510,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:519,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 74
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - FunctionScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 279
    functionDepth: 8
    functionLinenumber: 279
    functionLinenumberEnd: 524
    functionName: ExecInitFunctionScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached:
    - palloc_array
    - elog
    - foreach
    - Assert
    - TupleDescFinalize
    - CreateTupleDescCopy
    - TupleDescInitEntryCollation
    - list_length
    - outerPlan
    - TupleDescInitEntry
    - ExecInitTableFunctionResult
    - CreateTemplateTupleDesc
    - BuildDescFromLists
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - exprCollation
    - TupleDescCopyEntry
    - lfirst
    - get_expr_result_type
    - BlessTupleDesc
    - AllocSetContextCreate
    - ExecInitQual
    - ExecInitExtraTupleSlot
    - ExecAssignExprContext
    - makeNode
    - ExecAssignScanProjectionInfo
    - innerPlan
    linkageType: ''
    returnType: FunctionScanState
    signature: 'FunctionScanState *

      ExecInitFunctionScan(FunctionScan *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:546,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - FunctionScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 550
    functionName: ExecEndFunctionScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached:
    - tuplestore_end
    linkageType: ''
    returnType: void
    signature: void ExecEndFunctionScan(FunctionScanState *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:566,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:572,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:575,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:590,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:592,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:594,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:598,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:614,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - node
    argTypes:
    - FunctionScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 558
    functionDepth: 4
    functionLinenumber: 558
    functionLinenumberEnd: 616
    functionName: ExecReScanFunctionScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached:
    - foreach
    - tuplestore_end
    - tuplestore_rescan
    - lfirst
    - bms_overlap
    - ExecScanReScan
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanFunctionScan(FunctionScanState *node)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:42,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:50,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:57,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:65,1
    - Dst: tuplestore_set_eflags
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:66,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:75,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:77,1
    - Dst: tuplestore_ateof
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:87,1
    - Dst: tuplestore_advance
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:99,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:111,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:134,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:135,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:136,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:148,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:150,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:157,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 158
    functionName: ExecMaterial
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - tuplestore_ateof
    - tuplestore_begin_heap
    - tuplestore_set_eflags
    - tuplestore_alloc_read_pointer
    - Assert
    - castNode
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - tuplestore_advance
    - outerPlanState
    - ScanDirectionIsForward
    - ExecCopySlot
    - ExecClearTuple
    - tuplestore_gettupleslot
    - TupIsNull
    - tuplestore_puttupleslot
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\t\t\t/* result tuple from subplan */\nExecMaterial(PlanState
      *pstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:173,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:216,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:217,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:217,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:225,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Material*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 164
    functionDepth: 9
    functionLinenumber: 164
    functionLinenumberEnd: 234
    functionName: ExecInitMaterial
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - ExecInitNode
    - makeNode
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - ExecCreateScanSlotFromOuterPlan
    - outerPlan
    linkageType: ''
    returnType: MaterialState
    signature: 'MaterialState *

      ExecInitMaterial(Material *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:247,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:253,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:253,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - MaterialState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 254
    functionName: ExecEndMaterial
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecEndNode
    - tuplestore_end
    linkageType: ''
    returnType: void
    signature: void ExecEndMaterial(MaterialState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:265,1
    - Dst: tuplestore_copy_read_pointer
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:276,1
    - Dst: tuplestore_trim
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - MaterialState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 282
    functionName: ExecMaterialMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - Assert
    - tuplestore_trim
    - tuplestore_copy_read_pointer
    linkageType: ''
    returnType: void
    signature: void ExecMaterialMarkPos(MaterialState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:293,1
    - Dst: tuplestore_copy_read_pointer
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - MaterialState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 305
    functionName: ExecMaterialRestrPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - Assert
    - tuplestore_copy_read_pointer
    linkageType: ''
    returnType: void
    signature: void ExecMaterialRestrPos(MaterialState *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:316,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:318,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:343,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:346,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:350,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:361,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - node
    argTypes:
    - MaterialState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 364
    functionName: ExecReScanMaterial
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - tuplestore_end
    - tuplestore_rescan
    - outerPlanState
    - ExecReScan
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanMaterial(MaterialState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeCustom.c:41,1
    - Dst: CustomScan*::methods::CreateCustomScanState
      Src: /src/postgres/src/backend/executor/nodeCustom.c:42,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeCustom.c:53,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeCustom.c:60,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeCustom.c:81,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeCustom.c:82,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeCustom.c:88,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeCustom.c:88,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeCustom.c:97,1
    - Dst: ExecAssignScanProjectionInfoWithVarno
      Src: /src/postgres/src/backend/executor/nodeCustom.c:98,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeCustom.c:102,1
    - Dst: CustomScanState*::methods::BeginCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - cscan
    - estate
    - eflags
    argTypes:
    - CustomScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 25
    functionDepth: 9
    functionLinenumber: 25
    functionLinenumberEnd: 111
    functionName: ExecInitCustomScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - ExecTypeFromTL
    - ExecAssignExprContext
    - CustomScan*::methods::CreateCustomScanState
    - RelationGetDescr
    - castNode
    - ExecInitScanTupleSlot
    - ExecAssignScanProjectionInfoWithVarno
    - ExecInitResultTupleSlotTL
    - ExecInitQual
    - CustomScanState*::methods::BeginCustomScan
    - ExecOpenScanRelation
    linkageType: ''
    returnType: CustomScanState
    signature: 'CustomScanState *

      ExecInitCustomScan(CustomScan *cscan, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeCustom.c:116,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeCustom.c:118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCustom.c:120,1
    - Dst: CustomScanState*::methods::ExecCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 122
    functionName: ExecCustomScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 1
    functionsReached:
    - Assert
    - castNode
    - CustomScanState*::methods::ExecCustomScan
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecCustomScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCustom.c:127,1
    - Dst: CustomScanState*::methods::EndCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - CustomScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: ExecEndCustomScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - Assert
    - CustomScanState*::methods::EndCustomScan
    linkageType: ''
    returnType: void
    signature: void ExecEndCustomScan(CustomScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCustom.c:134,1
    - Dst: CustomScanState*::methods::ReScanCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - CustomScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 136
    functionName: ExecReScanCustomScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - Assert
    - CustomScanState*::methods::ReScanCustomScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanCustomScan(CustomScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeCustom.c:142,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeCustom.c:143,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeCustom.c:144,1
    - Dst: CustomScanState*::methods::MarkPosCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - CustomScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 147
    functionName: ExecCustomMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - CustomScanState*::methods::MarkPosCustomScan
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void ExecCustomMarkPos(CustomScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeCustom.c:153,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeCustom.c:154,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeCustom.c:155,1
    - Dst: CustomScanState*::methods::RestrPosCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - CustomScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 158
    functionName: ExecCustomRestrPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - CustomScanState*::methods::RestrPosCustomScan
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void ExecCustomRestrPos(CustomScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CustomExecMethods*::EstimateDSMCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:167,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeCustom.c:168,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeCustom.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - CustomScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 171
    functionName: ExecCustomScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    - CustomExecMethods*::EstimateDSMCustomScan
    linkageType: ''
    returnType: void
    signature: void ExecCustomScanEstimate(CustomScanState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeCustom.c:183,1
    - Dst: CustomExecMethods*::InitializeDSMCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:184,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeCustom.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - CustomScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 187
    functionName: ExecCustomScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - shm_toc_insert
    - CustomExecMethods*::InitializeDSMCustomScan
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: void ExecCustomScanInitializeDSM(CustomScanState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeCustom.c:199,1
    - Dst: CustomExecMethods*::ReInitializeDSMCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - CustomScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 202
    functionName: ExecCustomScanReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - CustomExecMethods*::ReInitializeDSMCustomScan
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: void ExecCustomScanReInitializeDSM(CustomScanState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeCustom.c:215,1
    - Dst: CustomExecMethods*::InitializeWorkerCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - CustomScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 218
    functionName: ExecCustomScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - CustomExecMethods*::InitializeWorkerCustomScan
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecCustomScanInitializeWorker(CustomScanState *node,\n\t\t\t\t\t\t\t
      \  ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CustomExecMethods*::ShutdownCustomScan
      Src: /src/postgres/src/backend/executor/nodeCustom.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - CustomScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 227
    functionName: ExecShutdownCustomScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCustom.c
    functionUses: 0
    functionsReached:
    - CustomExecMethods*::ShutdownCustomScan
    linkageType: ''
    returnType: void
    signature: void ExecShutdownCustomScan(CustomScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/execUtils.c:99,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:107,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execUtils.c:109,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 179
    functionName: CreateExecutorState
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 13
    functionsReached:
    - MemoryContextSwitchTo
    - makeNode
    - AllocSetContextCreate
    linkageType: ''
    returnType: EState
    signature: 'EState *

      CreateExecutorState(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FreeExprContext
      Src: /src/postgres/src/backend/executor/execUtils.c:211,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execUtils.c:211,1
    - Dst: jit_release_context
      Src: /src/postgres/src/backend/executor/execUtils.c:219,1
    - Dst: DestroyPartitionDirectory
      Src: /src/postgres/src/backend/executor/execUtils.c:226,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/execUtils.c:234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 235
    functionName: FreeExecutorState
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 12
    functionsReached:
    - jit_release_context
    - FreeExprContext
    - DestroyPartitionDirectory
    - linitial
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void FreeExecutorState(EState *estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:249,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execUtils.c:251,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/execUtils.c:264,1
    - Dst: lcons
      Src: /src/postgres/src/backend/executor/execUtils.c:291,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 4
    argNames:
    - estate
    - minContextSize
    - initBlockSize
    - maxBlockSize
    argTypes:
    - EState*
    - Size
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 241
    functionDepth: 6
    functionLinenumber: 241
    functionLinenumberEnd: 296
    functionName: CreateExprContextInternal
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - lcons
    - makeNode
    - AllocSetContextCreate
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: ExprContext
    signature: "ExprContext *\nCreateExprContextInternal(EState *estate, Size minContextSize,\n\t\t\t\t\t\t
      \ Size initBlockSize, Size maxBlockSize)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateExprContextInternal
      Src: /src/postgres/src/backend/executor/execUtils.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 311
    functionDepth: 7
    functionLinenumber: 311
    functionLinenumberEnd: 315
    functionName: CreateExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - CreateExprContextInternal
    linkageType: ''
    returnType: ExprContext
    signature: 'ExprContext *

      CreateExprContext(EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_prevpower2_size_t
      Src: /src/postgres/src/backend/executor/execUtils.c:331,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/execUtils.c:334,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execUtils.c:337,1
    - Dst: CreateExprContextInternal
      Src: /src/postgres/src/backend/executor/execUtils.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 326
    functionDepth: 7
    functionLinenumber: 326
    functionLinenumberEnd: 341
    functionName: CreateWorkExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - Min
    - pg_prevpower2_size_t
    - Max
    - CreateExprContextInternal
    linkageType: ''
    returnType: ExprContext
    signature: 'ExprContext *

      CreateWorkExprContext(EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execUtils.c:367,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/execUtils.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 401
    functionName: CreateStandaloneExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - makeNode
    - AllocSetContextCreate
    linkageType: ''
    returnType: ExprContext
    signature: 'ExprContext *

      CreateStandaloneExprContext(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShutdownExprContext
      Src: /src/postgres/src/backend/executor/execUtils.c:426,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/execUtils.c:428,1
    - Dst: list_delete_ptr
      Src: /src/postgres/src/backend/executor/execUtils.c:432,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execUtils.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - econtext
    - isCommit
    argTypes:
    - ExprContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 420
    functionDepth: 5
    functionLinenumber: 420
    functionLinenumberEnd: 436
    functionName: FreeExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 3
    functionsReached:
    - pfree
    - MemoryContextDelete
    - ShutdownExprContext
    - list_delete_ptr
    linkageType: ''
    returnType: void
    signature: void FreeExprContext(ExprContext *econtext, bool isCommit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ShutdownExprContext
      Src: /src/postgres/src/backend/executor/execUtils.c:451,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/execUtils.c:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - econtext
    argTypes:
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 454
    functionName: ReScanExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - ShutdownExprContext
    - MemoryContextReset
    linkageType: ''
    returnType: void
    signature: void ReScanExprContext(ExprContext *econtext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/execUtils.c:466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 462
    functionDepth: 8
    functionLinenumber: 462
    functionLinenumberEnd: 469
    functionName: MakePerTupleExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - CreateExprContext
    linkageType: ''
    returnType: ExprContext
    signature: 'ExprContext *

      MakePerTupleExprContext(EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/execUtils.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - estate
    - planstate
    argTypes:
    - EState*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 489
    functionDepth: 8
    functionLinenumber: 489
    functionLinenumberEnd: 493
    functionName: ExecAssignExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 15
    functionsReached:
    - CreateExprContext
    linkageType: ''
    returnType: void
    signature: void ExecAssignExprContext(EState *estate, PlanState *planstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - planstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 503
    functionName: ExecGetResultType
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc ExecGetResultType(PlanState *planstate)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execUtils.c:523,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - planstate
    - isfixed
    argTypes:
    - PlanState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 532
    functionName: ExecGetResultSlotOps
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 3
    functionsReached:
    - TTS_FIXED
    linkageType: ''
    returnType: TupleTableSlotOps
    signature: 'TupleTableSlotOps *

      ExecGetResultSlotOps(PlanState *planstate, bool *isfixed)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/execUtils.c:548,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/execUtils.c:555,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - planstates
    - nplans
    argTypes:
    - PlanState**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 540
    functionDepth: 2
    functionLinenumber: 540
    functionLinenumberEnd: 562
    functionName: ExecGetCommonSlotOps
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - ExecGetResultSlotOps
    linkageType: ''
    returnType: TupleTableSlotOps
    signature: 'TupleTableSlotOps *

      ExecGetCommonSlotOps(PlanState **planstates, int nplans)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execUtils.c:572,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/execUtils.c:573,1
    - Dst: ExecGetCommonSlotOps
      Src: /src/postgres/src/backend/executor/execUtils.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ps
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 567
    functionDepth: 3
    functionLinenumber: 567
    functionLinenumberEnd: 575
    functionName: ExecGetCommonChildSlotOps
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - innerPlanState
    - ExecGetCommonSlotOps
    linkageType: ''
    returnType: TupleTableSlotOps
    signature: 'TupleTableSlotOps *

      ExecGetCommonChildSlotOps(PlanState *ps)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - planstate
    - inputDesc
    argTypes:
    - PlanState*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 587
    functionDepth: 3
    functionLinenumber: 587
    functionLinenumberEnd: 597
    functionName: ExecAssignProjectionInfo
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - ExecBuildProjectionInfo
    linkageType: ''
    returnType: void
    signature: "void ExecAssignProjectionInfo(PlanState *planstate,\n\t\t\t\t\t\t
      TupleDesc inputDesc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tlist_matches_tupdesc
      Src: /src/postgres/src/backend/executor/execUtils.c:611,1
    - Dst: ExecInitResultSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:625,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - planstate
    - inputDesc
    - varno
    argTypes:
    - PlanState*
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 607
    functionDepth: 8
    functionLinenumber: 607
    functionLinenumberEnd: 632
    functionName: ExecConditionalAssignProjectionInfo
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - ExecAssignProjectionInfo
    - ExecInitResultSlot
    - tlist_matches_tupdesc
    linkageType: ''
    returnType: void
    signature: "void ExecConditionalAssignProjectionInfo(PlanState *planstate, TupleDesc
      inputDesc,\n\t\t\t\t\t\t\t\t\tint varno)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/execUtils.c:639,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execUtils.c:644,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execUtils.c:649,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execUtils.c:650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:653,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:654,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/execUtils.c:677,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 4
    argNames:
    - ps
    - tlist
    - varno
    - tupdesc
    argTypes:
    - PlanState*
    - List*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 634
    functionDepth: 2
    functionLinenumber: 634
    functionLinenumberEnd: 684
    functionName: tlist_matches_tupdesc
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - Assert
    - lnext
    - list_head
    - lfirst
    - TupleDescAttr
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool tlist_matches_tupdesc(PlanState *ps, List *tlist, int varno, TupleDesc
      tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecSetSlotDescriptor
      Src: /src/postgres/src/backend/executor/execUtils.c:701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scanstate
    - tupDesc
    argTypes:
    - ScanState*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 696
    functionDepth: 2
    functionLinenumber: 696
    functionLinenumberEnd: 702
    functionName: ExecAssignScanType
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - ExecSetSlotDescriptor
    linkageType: ''
    returnType: void
    signature: void ExecAssignScanType(ScanState *scanstate, TupleDesc tupDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execUtils.c:716,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execUtils.c:717,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - estate
    - scanstate
    - tts_ops
    argTypes:
    - EState*
    - ScanState*
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 708
    functionDepth: 8
    functionLinenumber: 708
    functionLinenumberEnd: 720
    functionName: ExecCreateScanSlotFromOuterPlan
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 3
    functionsReached:
    - outerPlanState
    - ExecInitScanTupleSlot
    - ExecGetResultType
    linkageType: ''
    returnType: void
    signature: "void ExecCreateScanSlotFromOuterPlan(EState *estate,\n\t\t\t\t\t\t\t\tScanState
      *scanstate,\n\t\t\t\t\t\t\t\tconst TupleTableSlotOps *tts_ops)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execUtils.c:736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - estate
    - scanrelid
    argTypes:
    - EState*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 733
    functionDepth: 3
    functionLinenumber: 733
    functionLinenumberEnd: 737
    functionName: ExecRelationIsTargetRelation
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - bms_is_member
    linkageType: ''
    returnType: bool
    signature: bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execUtils.c:756,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execUtils.c:757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ss
    argTypes:
    - ScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 750
    functionDepth: 3
    functionLinenumber: 750
    functionLinenumberEnd: 758
    functionName: ScanRelIsReadOnly
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 11
    functionsReached:
    - bms_is_member
    linkageType: ''
    returnType: bool
    signature: bool ScanRelIsReadOnly(ScanState *ss)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetRangeTableRelation
      Src: /src/postgres/src/backend/executor/execUtils.c:773,1
    - Dst: RelationIsScannable
      Src: /src/postgres/src/backend/executor/execUtils.c:781,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execUtils.c:782,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execUtils.c:783,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execUtils.c:784,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execUtils.c:785,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/execUtils.c:786,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - estate
    - scanrelid
    - eflags
    argTypes:
    - EState*
    - Index
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 789
    functionName: ExecOpenScanRelation
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 7
    functionsReached:
    - RelationIsScannable
    - errcode
    - ExecGetRangeTableRelation
    - ereport
    - errhint
    - errmsg
    - RelationGetRelationName
    linkageType: ''
    returnType: Relation
    signature: Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int
      eflags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execUtils.c:809,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execUtils.c:826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - estate
    - rangeTable
    - permInfos
    - unpruned_relids
    argTypes:
    - EState*
    - List*
    - List*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 834
    functionName: ExecInitRangeTable
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 3
    functionsReached:
    - list_length
    - palloc0
    linkageType: ''
    returnType: void
    signature: "void ExecInitRangeTable(EState *estate, List *rangeTable, List *permInfos,\n\t\t\t\t
      \  Bitmapset *unpruned_relids)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:855,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execUtils.c:857,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:858,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/execUtils.c:864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:866,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/execUtils.c:868,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execUtils.c:877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:878,1
    - Dst: CheckRelationLockedByMe
      Src: /src/postgres/src/backend/executor/execUtils.c:879,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execUtils.c:888,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - estate
    - rti
    - isResultRel
    argTypes:
    - EState*
    - Index
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 850
    functionDepth: 4
    functionLinenumber: 850
    functionLinenumberEnd: 895
    functionName: ExecGetRangeTableRelation
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - elog
    - CheckRelationLockedByMe
    - Assert
    - bms_is_member
    - table_open
    - exec_rt_fetch
    - IsParallelWorker
    linkageType: ''
    returnType: Relation
    signature: Relation ExecGetRangeTableRelation(EState *estate, Index rti, bool
      isResultRel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetRangeTableRelation
      Src: /src/postgres/src/backend/executor/execUtils.c:911,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:912,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execUtils.c:920,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execUtils.c:928,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - estate
    - resultRelInfo
    - rti
    argTypes:
    - EState*
    - ResultRelInfo*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 905
    functionDepth: 6
    functionLinenumber: 905
    functionLinenumberEnd: 929
    functionName: ExecInitResultRelation
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - InitResultRelInfo
    - palloc0
    - lappend
    - ExecGetRangeTableRelation
    linkageType: ''
    returnType: void
    signature: "void ExecInitResultRelation(EState *estate, ResultRelInfo *resultRelInfo,\n\t\t\t\t\t
      \  Index rti)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/executor/execUtils.c:944,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/executor/execUtils.c:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - newchg
    argTypes:
    - PlanState*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 935
    functionDepth: 4
    functionLinenumber: 935
    functionLinenumberEnd: 946
    functionName: UpdateChangedParamSet
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - bms_intersect
    - bms_join
    linkageType: ''
    returnType: void
    signature: void UpdateChangedParamSet(PlanState *node, Bitmapset *newchg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/executor/execUtils.c:973,1
    - Dst: errposition
      Src: /src/postgres/src/backend/executor/execUtils.c:975,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - estate
    - location
    argTypes:
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 961
    functionDepth: 1
    functionLinenumber: 961
    functionLinenumberEnd: 976
    functionName: executor_errposition
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 3
    functionsReached:
    - pg_mbstrlen_with_len
    - errposition
    linkageType: ''
    returnType: int
    signature: int executor_errposition(EState *estate, int location)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/execUtils.c:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - econtext
    - function
    - arg
    argTypes:
    - ExprContext*
    - ExprContextCallbackFunction
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 1006
    functionName: RegisterExprContextCallback
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 4
    functionsReached:
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: "void RegisterExprContextCallback(ExprContext *econtext,\n\t\t\t\t\t\t\tExprContextCallbackFunction
      function,\n\t\t\t\t\t\t\tDatum arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execUtils.c:1029,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - econtext
    - function
    - arg
    argTypes:
    - ExprContext*
    - ExprContextCallbackFunction
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1014
    functionDepth: 0
    functionLinenumber: 1014
    functionLinenumberEnd: 1034
    functionName: UnregisterExprContextCallback
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: "void UnregisterExprContextCallback(ExprContext *econtext,\n\t\t\t\t\t\t\t
      \ ExprContextCallbackFunction function,\n\t\t\t\t\t\t\t  Datum arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1059,1
    - Dst: ExprContext_CB*::function
      Src: /src/postgres/src/backend/executor/execUtils.c:1068,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execUtils.c:1069,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1072,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - econtext
    - isCommit
    argTypes:
    - ExprContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1045
    functionDepth: 1
    functionLinenumber: 1045
    functionLinenumberEnd: 1073
    functionName: ShutdownExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - pfree
    - ExprContext_CB*::function
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void ShutdownExprContext(ExprContext *econtext, bool isCommit)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1098,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1101,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execUtils.c:1110,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execUtils.c:1111,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/executor/execUtils.c:1112,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execUtils.c:1117,1
    - Dst: namestrcmp
      Src: /src/postgres/src/backend/executor/execUtils.c:1119,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1127,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execUtils.c:1134,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execUtils.c:1135,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/execUtils.c:1139,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execUtils.c:1144,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - tuple
    - attname
    - isNull
    argTypes:
    - HeapTupleHeader
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1086
    functionDepth: 4
    functionLinenumber: 1086
    functionLinenumberEnd: 1147
    functionName: GetAttributeByName
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - elog
    - HeapTupleHeaderGetDatumLength
    - heap_getattr
    - ReleaseTupleDesc
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetTypeId
    - namestrcmp
    - lookup_rowtype_tupdesc
    - ItemPointerSetInvalid
    - TupleDescAttr
    linkageType: ''
    returnType: Datum
    signature: Datum GetAttributeByName(HeapTupleHeader tuple, const char *attname,
      bool *isNull)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/execUtils.c:1160,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1161,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1164,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execUtils.c:1173,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execUtils.c:1174,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/executor/execUtils.c:1175,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execUtils.c:1182,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execUtils.c:1183,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/execUtils.c:1187,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execUtils.c:1192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - tuple
    - attrno
    - isNull
    argTypes:
    - HeapTupleHeader
    - AttrNumber
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1149
    functionDepth: 4
    functionLinenumber: 1149
    functionLinenumberEnd: 1195
    functionName: GetAttributeByNum
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - elog
    - AttributeNumberIsValid
    - HeapTupleHeaderGetDatumLength
    - heap_getattr
    - ReleaseTupleDesc
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetTypeId
    - lookup_rowtype_tupdesc
    - ItemPointerSetInvalid
    linkageType: ''
    returnType: Datum
    signature: "Datum GetAttributeByNum(HeapTupleHeader tuple,\n\t\t\t\t  AttrNumber
      attrno,\n\t\t\t\t  bool *isNull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execUtils.c:1204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - targetlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1205
    functionName: ExecTargetListLength
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - list_length
    linkageType: ''
    returnType: int
    signature: int ExecTargetListLength(List *targetlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execUtils.c:1218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - targetlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1224
    functionName: ExecCleanTargetListLength
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: int
    signature: int ExecCleanTargetListLength(List *targetlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execUtils.c:1218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1216
    functionDepth: 1
    functionLinenumber: 1216
    functionLinenumberEnd: 1222
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 407
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(tl, targetlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1235,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:1238,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1239,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/execUtils.c:1240,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - relInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1229
    functionDepth: 8
    functionLinenumber: 1229
    functionLinenumberEnd: 1246
    functionName: ExecGetTriggerOldSlot
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - ExecInitExtraTupleSlot
    - RelationGetDescr
    - table_slot_callbacks
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGetTriggerOldSlot(EState *estate, ResultRelInfo *relInfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1257,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:1260,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1261,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/execUtils.c:1262,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - relInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1251
    functionDepth: 8
    functionLinenumber: 1251
    functionLinenumberEnd: 1268
    functionName: ExecGetTriggerNewSlot
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - ExecInitExtraTupleSlot
    - RelationGetDescr
    - table_slot_callbacks
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGetTriggerNewSlot(EState *estate, ResultRelInfo *relInfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1279,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:1282,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1283,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/execUtils.c:1284,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - relInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1273
    functionDepth: 8
    functionLinenumber: 1273
    functionLinenumberEnd: 1290
    functionName: ExecGetReturningSlot
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - ExecInitExtraTupleSlot
    - RelationGetDescr
    - table_slot_callbacks
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGetReturningSlot(EState *estate, ResultRelInfo *relInfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1304,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:1307,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1308,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/execUtils.c:1309,1
    - Dst: ExecStoreAllNullTuple
      Src: /src/postgres/src/backend/executor/execUtils.c:1310,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - estate
    - relInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1298
    functionDepth: 8
    functionLinenumber: 1298
    functionLinenumberEnd: 1318
    functionName: ExecGetAllNullSlot
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - ExecInitExtraTupleSlot
    - table_slot_callbacks
    - RelationGetDescr
    - MemoryContextSwitchTo
    - ExecStoreAllNullTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGetAllNullSlot(EState *estate, ResultRelInfo *relInfo)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: convert_tuples_by_name
      Src: /src/postgres/src/backend/executor/execUtils.c:1335,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1335,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - resultRelInfo
    argTypes:
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1325
    functionDepth: 5
    functionLinenumber: 1325
    functionLinenumberEnd: 1344
    functionName: ExecGetChildToRootMap
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - RelationGetDescr
    - convert_tuples_by_name
    linkageType: ''
    returnType: TupleConversionMap
    signature: 'TupleConversionMap *

      ExecGetChildToRootMap(ResultRelInfo *resultRelInfo)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:1355,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1361,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1362,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1372,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execUtils.c:1373,1
    - Dst: convert_tuples_by_name_attrmap
      Src: /src/postgres/src/backend/executor/execUtils.c:1377,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - resultRelInfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1351
    functionDepth: 4
    functionLinenumber: 1351
    functionLinenumberEnd: 1383
    functionName: ExecGetRootToChildMap
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - Assert
    - RelationGetDescr
    - convert_tuples_by_name_attrmap
    - MemoryContextSwitchTo
    - build_attrmap_by_name_if_req
    linkageType: ''
    returnType: TupleConversionMap
    signature: 'TupleConversionMap *

      ExecGetRootToChildMap(ResultRelInfo *resultRelInfo, EState *estate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetResultRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:1389,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execUtils.c:1397,1
    - Dst: execute_attr_map_cols
      Src: /src/postgres/src/backend/executor/execUtils.c:1400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1404
      start: 1386
    functionDepth: 5
    functionLinenumber: 1386
    functionLinenumberEnd: 1404
    functionName: ExecGetInsertedCols
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 5
    functionsReached:
    - ExecGetRootToChildMap
    - execute_attr_map_cols
    - GetResultRTEPermissionInfo
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      ExecGetInsertedCols(ResultRelInfo *relinfo, EState *estate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetResultRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:1410,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execUtils.c:1418,1
    - Dst: execute_attr_map_cols
      Src: /src/postgres/src/backend/executor/execUtils.c:1421,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1407
    functionDepth: 5
    functionLinenumber: 1407
    functionLinenumberEnd: 1425
    functionName: ExecGetUpdatedCols
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 6
    functionsReached:
    - ExecGetRootToChildMap
    - execute_attr_map_cols
    - GetResultRTEPermissionInfo
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      ExecGetUpdatedCols(ResultRelInfo *relinfo, EState *estate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecInitGenerated
      Src: /src/postgres/src/backend/executor/execUtils.c:1433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1428
    functionDepth: 1
    functionLinenumber: 1428
    functionLinenumberEnd: 1435
    functionName: ExecGetExtraUpdatedCols
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - ExecInitGenerated
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      ExecGetExtraUpdatedCols(ResultRelInfo *relinfo, EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1449,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/executor/execUtils.c:1449,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execUtils.c:1451,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execUtils.c:1451,1
    - Dst: ExecGetExtraUpdatedCols
      Src: /src/postgres/src/backend/executor/execUtils.c:1452,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1443
    functionDepth: 6
    functionLinenumber: 1443
    functionLinenumberEnd: 1457
    functionName: ExecGetAllUpdatedCols
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - ExecGetExtraUpdatedCols
    - MemoryContextSwitchTo
    - ExecGetUpdatedCols
    - GetPerTupleMemoryContext
    - bms_union
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      ExecGetAllUpdatedCols(ResultRelInfo *relinfo, EState *estate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/execUtils.c:1500,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:1501,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1505
      start: 1463
    functionDepth: 4
    functionLinenumber: 1463
    functionLinenumberEnd: 1505
    functionName: GetResultRTEPermissionInfo
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - getRTEPermissionInfo
    - exec_rt_fetch
    linkageType: ''
    returnType: RTEPermissionInfo
    signature: 'RTEPermissionInfo *

      GetResultRTEPermissionInfo(ResultRelInfo *relinfo, EState *estate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetResultRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:1517,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1521,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execUtils.c:1522,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execUtils.c:1524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - relInfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1514
    functionDepth: 5
    functionLinenumber: 1514
    functionLinenumberEnd: 1525
    functionName: ExecGetResultRelCheckAsUser
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - elog
    - RelationGetRelid
    - GetResultRTEPermissionInfo
    - GetUserId
    linkageType: ''
    returnType: Oid
    signature: Oid ExecGetResultRelCheckAsUser(ResultRelInfo *relInfo, EState *estate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecCleanTypeFromTL
      Src: /src/postgres/src/backend/executor/execJunk.c:70,1
    - Dst: ExecSetSlotDescriptor
      Src: /src/postgres/src/backend/executor/execJunk.c:76,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execJunk.c:78,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execJunk.c:96,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execJunk.c:100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execJunk.c:108,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execJunk.c:116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - targetList
    - slot
    argTypes:
    - List*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 59
    functionDepth: 3
    functionLinenumber: 59
    functionLinenumberEnd: 124
    functionName: ExecInitJunkFilter
    functionSourceFile: /src/postgres/src/backend/executor/execJunk.c
    functionUses: 3
    functionsReached:
    - ExecSetSlotDescriptor
    - Assert
    - makeNode
    - MakeSingleTupleTableSlot
    - lfirst
    - palloc
    - ExecCleanTypeFromTL
    linkageType: ''
    returnType: JunkFilter
    signature: 'JunkFilter *

      ExecInitJunkFilter(List *targetList, TupleTableSlot *slot)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execJunk.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 107
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execJunk.c
    functionUses: 407
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(t, targetList)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecSetSlotDescriptor
      Src: /src/postgres/src/backend/executor/execJunk.c:151,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execJunk.c:153,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execJunk.c:168,1
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/execJunk.c:169,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execJunk.c:172,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execJunk.c:176,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/execJunk.c:178,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execJunk.c:193,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - targetList
    - cleanTupType
    - slot
    argTypes:
    - List*
    - TupleDesc
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 136
    functionDepth: 3
    functionLinenumber: 136
    functionLinenumberEnd: 201
    functionName: ExecInitJunkFilterConversion
    functionSourceFile: /src/postgres/src/backend/executor/execJunk.c
    functionUses: 1
    functionsReached:
    - ExecSetSlotDescriptor
    - palloc0
    - lnext
    - makeNode
    - MakeSingleTupleTableSlot
    - list_head
    - lfirst
    - TupleDescCompactAttr
    linkageType: ''
    returnType: JunkFilter
    signature: "JunkFilter *\nExecInitJunkFilterConversion(List *targetList,\n\t\t\t\t\t\t\t
      TupleDesc cleanTupType,\n\t\t\t\t\t\t\t TupleTableSlot *slot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/execJunk.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - junkfilter
    - attrName
    argTypes:
    - JunkFilter*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: ExecFindJunkAttribute
    functionSourceFile: /src/postgres/src/backend/executor/execJunk.c
    functionUses: 0
    functionsReached:
    - ExecFindJunkAttributeInTlist
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber ExecFindJunkAttribute(JunkFilter *junkfilter, const char
      *attrName)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execJunk.c:228,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/executor/execJunk.c:231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - targetlist
    - attrName
    argTypes:
    - List*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 239
    functionName: ExecFindJunkAttributeInTlist
    functionSourceFile: /src/postgres/src/backend/executor/execJunk.c
    functionUses: 2
    functionsReached:
    - lfirst
    - strcmp
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber ExecFindJunkAttributeInTlist(List *targetlist, const char
      *attrName)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execJunk.c:228,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/executor/execJunk.c:231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 236
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execJunk.c
    functionUses: 407
    functionsReached:
    - lfirst
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach(t, targetlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execJunk.c:262,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execJunk.c:277,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execJunk.c:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - junkfilter
    - slot
    argTypes:
    - JunkFilter*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 304
    functionName: ExecFilterJunk
    functionSourceFile: /src/postgres/src/backend/executor/execJunk.c
    functionUses: 2
    functionsReached:
    - ExecStoreVirtualTuple
    - slot_getallattrs
    - ExecClearTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecFilterJunk(JunkFilter *junkfilter, TupleTableSlot *slot)'
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execProcnode.c:159,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:161,1
    - Dst: ExecInitResult
      Src: /src/postgres/src/backend/executor/execProcnode.c:167,1
    - Dst: ExecInitProjectSet
      Src: /src/postgres/src/backend/executor/execProcnode.c:172,1
    - Dst: ExecInitModifyTable
      Src: /src/postgres/src/backend/executor/execProcnode.c:177,1
    - Dst: ExecInitAppend
      Src: /src/postgres/src/backend/executor/execProcnode.c:182,1
    - Dst: ExecInitMergeAppend
      Src: /src/postgres/src/backend/executor/execProcnode.c:187,1
    - Dst: ExecInitRecursiveUnion
      Src: /src/postgres/src/backend/executor/execProcnode.c:192,1
    - Dst: ExecInitBitmapAnd
      Src: /src/postgres/src/backend/executor/execProcnode.c:197,1
    - Dst: ExecInitBitmapOr
      Src: /src/postgres/src/backend/executor/execProcnode.c:202,1
    - Dst: ExecInitSeqScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:210,1
    - Dst: ExecInitSampleScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:215,1
    - Dst: ExecInitIndexScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:220,1
    - Dst: ExecInitIndexOnlyScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:225,1
    - Dst: ExecInitBitmapIndexScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:230,1
    - Dst: ExecInitBitmapHeapScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:235,1
    - Dst: ExecInitTidScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:240,1
    - Dst: ExecInitTidRangeScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:245,1
    - Dst: ExecInitSubqueryScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:250,1
    - Dst: ExecInitFunctionScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:255,1
    - Dst: ExecInitTableFuncScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:260,1
    - Dst: ExecInitValuesScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:265,1
    - Dst: ExecInitCteScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:270,1
    - Dst: ExecInitNamedTuplestoreScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:275,1
    - Dst: ExecInitWorkTableScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:280,1
    - Dst: ExecInitForeignScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:285,1
    - Dst: ExecInitCustomScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:290,1
    - Dst: ExecInitNestLoop
      Src: /src/postgres/src/backend/executor/execProcnode.c:298,1
    - Dst: ExecInitMergeJoin
      Src: /src/postgres/src/backend/executor/execProcnode.c:303,1
    - Dst: ExecInitHashJoin
      Src: /src/postgres/src/backend/executor/execProcnode.c:308,1
    - Dst: ExecInitMaterial
      Src: /src/postgres/src/backend/executor/execProcnode.c:316,1
    - Dst: ExecInitSort
      Src: /src/postgres/src/backend/executor/execProcnode.c:321,1
    - Dst: ExecInitIncrementalSort
      Src: /src/postgres/src/backend/executor/execProcnode.c:326,1
    - Dst: ExecInitMemoize
      Src: /src/postgres/src/backend/executor/execProcnode.c:331,1
    - Dst: ExecInitGroup
      Src: /src/postgres/src/backend/executor/execProcnode.c:336,1
    - Dst: ExecInitAgg
      Src: /src/postgres/src/backend/executor/execProcnode.c:341,1
    - Dst: ExecInitWindowAgg
      Src: /src/postgres/src/backend/executor/execProcnode.c:346,1
    - Dst: ExecInitUnique
      Src: /src/postgres/src/backend/executor/execProcnode.c:351,1
    - Dst: ExecInitGather
      Src: /src/postgres/src/backend/executor/execProcnode.c:356,1
    - Dst: ExecInitGatherMerge
      Src: /src/postgres/src/backend/executor/execProcnode.c:361,1
    - Dst: ExecInitHash
      Src: /src/postgres/src/backend/executor/execProcnode.c:366,1
    - Dst: ExecInitSetOp
      Src: /src/postgres/src/backend/executor/execProcnode.c:371,1
    - Dst: ExecInitLockRows
      Src: /src/postgres/src/backend/executor/execProcnode.c:376,1
    - Dst: ExecInitLimit
      Src: /src/postgres/src/backend/executor/execProcnode.c:381,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execProcnode.c:386,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:386,1
    - Dst: ExecSetExecProcNode
      Src: /src/postgres/src/backend/executor/execProcnode.c:391,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execProcnode.c:402,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execProcnode.c:404,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execProcnode.c:407,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:407,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execProcnode.c:408,1
    - Dst: ExecInitSubPlan
      Src: /src/postgres/src/backend/executor/execProcnode.c:409,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execProcnode.c:410,1
    - Dst: InstrAllocNode
      Src: /src/postgres/src/backend/executor/execProcnode.c:416,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 148
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Plan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 141
    functionDepth: 10
    functionLinenumber: 141
    functionLinenumberEnd: 420
    functionName: ExecInitNode
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 15
    functionsReached:
    - ExecInitBitmapOr
    - ExecInitHash
    - check_stack_depth
    - ExecInitValuesScan
    - ExecInitGroup
    - ExecInitHashJoin
    - ExecInitIndexOnlyScan
    - nodeTag
    - ExecInitFunctionScan
    - elog
    - ExecInitWindowAgg
    - ExecInitProjectSet
    - ExecInitCustomScan
    - InstrAllocNode
    - foreach
    - Assert
    - ExecInitSetOp
    - ExecInitAppend
    - ExecInitCteScan
    - ExecInitUnique
    - ExecInitBitmapHeapScan
    - ExecInitAgg
    - ExecInitSampleScan
    - ExecInitTidRangeScan
    - ExecSetExecProcNode
    - ExecInitRecursiveUnion
    - ExecInitResult
    - ExecInitTableFuncScan
    - ExecInitNamedTuplestoreScan
    - ExecInitGather
    - ExecInitIndexScan
    - ExecInitMaterial
    - ExecInitSubPlan
    - ExecInitLimit
    - lappend
    - lfirst
    - ExecInitSubqueryScan
    - ExecInitMemoize
    - ExecInitLockRows
    - ExecInitMergeAppend
    - ExecInitWorkTableScan
    - ExecInitTidScan
    - ExecInitBitmapAnd
    - ExecInitForeignScan
    - ExecInitMergeJoin
    - ExecInitSort
    - ExecInitGatherMerge
    - ExecInitModifyTable
    - ExecInitNestLoop
    - ExecInitSeqScan
    - ExecInitIncrementalSort
    - IsA
    - ExecInitBitmapIndexScan
    linkageType: ''
    returnType: PlanState
    signature: 'PlanState *

      ExecInitNode(Plan *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - function
    argTypes:
    - PlanState*
    - ExecProcNodeMtd
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 440
    functionName: ExecSetExecProcNode
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ExecSetExecProcNode(PlanState *node, ExecProcNodeMtd function)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execProcnode.c:457,1
    - Dst: PlanState*::ExecProcNode
      Src: /src/postgres/src/backend/executor/execProcnode.c:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 447
    functionDepth: 2
    functionLinenumber: 447
    functionLinenumberEnd: 470
    functionName: ExecProcNodeFirst
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 0
    functionsReached:
    - check_stack_depth
    - PlanState*::ExecProcNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecProcNodeFirst(PlanState *node)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execProcnode.c:492,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/execProcnode.c:494,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:497,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:499,1
    - Dst: MultiExecHash
      Src: /src/postgres/src/backend/executor/execProcnode.c:506,1
    - Dst: MultiExecBitmapIndexScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:510,1
    - Dst: MultiExecBitmapAnd
      Src: /src/postgres/src/backend/executor/execProcnode.c:514,1
    - Dst: MultiExecBitmapOr
      Src: /src/postgres/src/backend/executor/execProcnode.c:518,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execProcnode.c:522,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:522,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 487
    functionDepth: 3
    functionLinenumber: 487
    functionLinenumberEnd: 528
    functionName: MultiExecProcNode
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 2
    functionsReached:
    - elog
    - MultiExecBitmapIndexScan
    - MultiExecHash
    - check_stack_depth
    - MultiExecBitmapOr
    - CHECK_FOR_INTERRUPTS
    - MultiExecBitmapAnd
    - ExecReScan
    - nodeTag
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecProcNode(PlanState *node)'
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execProcnode.c:556,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execProcnode.c:560,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:564,1
    - Dst: ExecEndResult
      Src: /src/postgres/src/backend/executor/execProcnode.c:570,1
    - Dst: ExecEndProjectSet
      Src: /src/postgres/src/backend/executor/execProcnode.c:574,1
    - Dst: ExecEndModifyTable
      Src: /src/postgres/src/backend/executor/execProcnode.c:578,1
    - Dst: ExecEndAppend
      Src: /src/postgres/src/backend/executor/execProcnode.c:582,1
    - Dst: ExecEndMergeAppend
      Src: /src/postgres/src/backend/executor/execProcnode.c:586,1
    - Dst: ExecEndRecursiveUnion
      Src: /src/postgres/src/backend/executor/execProcnode.c:590,1
    - Dst: ExecEndBitmapAnd
      Src: /src/postgres/src/backend/executor/execProcnode.c:594,1
    - Dst: ExecEndBitmapOr
      Src: /src/postgres/src/backend/executor/execProcnode.c:598,1
    - Dst: ExecEndSeqScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:605,1
    - Dst: ExecEndSampleScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:609,1
    - Dst: ExecEndGather
      Src: /src/postgres/src/backend/executor/execProcnode.c:613,1
    - Dst: ExecEndGatherMerge
      Src: /src/postgres/src/backend/executor/execProcnode.c:617,1
    - Dst: ExecEndIndexScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:621,1
    - Dst: ExecEndIndexOnlyScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:625,1
    - Dst: ExecEndBitmapIndexScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:629,1
    - Dst: ExecEndBitmapHeapScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:633,1
    - Dst: ExecEndTidScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:637,1
    - Dst: ExecEndTidRangeScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:641,1
    - Dst: ExecEndSubqueryScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:645,1
    - Dst: ExecEndFunctionScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:649,1
    - Dst: ExecEndTableFuncScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:653,1
    - Dst: ExecEndCteScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:657,1
    - Dst: ExecEndForeignScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:661,1
    - Dst: ExecEndCustomScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:665,1
    - Dst: ExecEndNestLoop
      Src: /src/postgres/src/backend/executor/execProcnode.c:672,1
    - Dst: ExecEndMergeJoin
      Src: /src/postgres/src/backend/executor/execProcnode.c:676,1
    - Dst: ExecEndHashJoin
      Src: /src/postgres/src/backend/executor/execProcnode.c:680,1
    - Dst: ExecEndMaterial
      Src: /src/postgres/src/backend/executor/execProcnode.c:687,1
    - Dst: ExecEndSort
      Src: /src/postgres/src/backend/executor/execProcnode.c:691,1
    - Dst: ExecEndIncrementalSort
      Src: /src/postgres/src/backend/executor/execProcnode.c:695,1
    - Dst: ExecEndMemoize
      Src: /src/postgres/src/backend/executor/execProcnode.c:699,1
    - Dst: ExecEndGroup
      Src: /src/postgres/src/backend/executor/execProcnode.c:703,1
    - Dst: ExecEndAgg
      Src: /src/postgres/src/backend/executor/execProcnode.c:707,1
    - Dst: ExecEndWindowAgg
      Src: /src/postgres/src/backend/executor/execProcnode.c:711,1
    - Dst: ExecEndUnique
      Src: /src/postgres/src/backend/executor/execProcnode.c:715,1
    - Dst: ExecEndHash
      Src: /src/postgres/src/backend/executor/execProcnode.c:719,1
    - Dst: ExecEndSetOp
      Src: /src/postgres/src/backend/executor/execProcnode.c:723,1
    - Dst: ExecEndLockRows
      Src: /src/postgres/src/backend/executor/execProcnode.c:727,1
    - Dst: ExecEndLimit
      Src: /src/postgres/src/backend/executor/execProcnode.c:731,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execProcnode.c:741,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:741,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 134
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 542
    functionDepth: 3
    functionLinenumber: 542
    functionLinenumberEnd: 744
    functionName: ExecEndNode
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 15
    functionsReached:
    - ExecEndSort
    - ExecEndIndexOnlyScan
    - ExecEndSampleScan
    - bms_free
    - check_stack_depth
    - ExecEndLimit
    - ExecEndGather
    - ExecEndTidRangeScan
    - ExecEndFunctionScan
    - ExecEndBitmapIndexScan
    - ExecEndMergeAppend
    - ExecEndSubqueryScan
    - ExecEndAgg
    - nodeTag
    - elog
    - ExecEndSeqScan
    - ExecEndHash
    - ExecEndUnique
    - ExecEndResult
    - ExecEndMemoize
    - ExecEndSetOp
    - ExecEndGatherMerge
    - ExecEndHashJoin
    - ExecEndAppend
    - ExecEndIncrementalSort
    - ExecEndProjectSet
    - ExecEndLockRows
    - ExecEndCustomScan
    - ExecEndNestLoop
    - ExecEndTableFuncScan
    - ExecEndWindowAgg
    - ExecEndBitmapAnd
    - ExecEndCteScan
    - ExecEndBitmapHeapScan
    - ExecEndGroup
    - ExecEndMergeJoin
    - ExecEndTidScan
    - ExecEndRecursiveUnion
    - ExecEndIndexScan
    - ExecEndMaterial
    - ExecEndForeignScan
    - ExecEndBitmapOr
    - ExecEndModifyTable
    linkageType: ''
    returnType: void
    signature: void ExecEndNode(PlanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecShutdownNode_walker
      Src: /src/postgres/src/backend/executor/execProcnode.c:755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 756
    functionName: ExecShutdownNode
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 1
    functionsReached:
    - ExecShutdownNode_walker
    linkageType: ''
    returnType: void
    signature: void ExecShutdownNode(PlanState *node)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execProcnode.c:764,1
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execProcnode.c:777,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execProcnode.c:779,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:781,1
    - Dst: ExecShutdownGather
      Src: /src/postgres/src/backend/executor/execProcnode.c:784,1
    - Dst: ExecShutdownForeignScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:787,1
    - Dst: ExecShutdownCustomScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:790,1
    - Dst: ExecShutdownGatherMerge
      Src: /src/postgres/src/backend/executor/execProcnode.c:793,1
    - Dst: ExecShutdownHash
      Src: /src/postgres/src/backend/executor/execProcnode.c:796,1
    - Dst: ExecShutdownHashJoin
      Src: /src/postgres/src/backend/executor/execProcnode.c:799,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execProcnode.c:807,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - PlanState*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 758
    functionDepth: 2
    functionLinenumber: 758
    functionLinenumberEnd: 810
    functionName: ExecShutdownNode_walker
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 1
    functionsReached:
    - InstrStopNode
    - check_stack_depth
    - ExecShutdownHashJoin
    - ExecShutdownHash
    - ExecShutdownGather
    - planstate_tree_walker
    - nodeTag
    - ExecShutdownForeignScan
    - ExecShutdownCustomScan
    - ExecShutdownGatherMerge
    - InstrStartNode
    linkageType: ''
    returnType: bool
    signature: bool ExecShutdownNode_walker(PlanState *node, void *context)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:837,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:860,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:884,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:895,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:897,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:908,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:910,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execProcnode.c:921,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:922,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execProcnode.c:922,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:924,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:933,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:935,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:950,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execProcnode.c:950,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:952,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:959,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execProcnode.c:959,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 2
    argNames:
    - tuples_needed
    - child_node
    argTypes:
    - int64
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 968
    functionName: ExecSetTupleBound
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - IsA
    - ExecSetTupleBound
    linkageType: ''
    returnType: void
    signature: void ExecSetTupleBound(int64 tuples_needed, PlanState *child_node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:224,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:236,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:237,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:238,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:239,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:240,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:257,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:258,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:272,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:273,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:274,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:275,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:281,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:282,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:283,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:284,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:285,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:286,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:288,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:292,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:293,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:294,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:295,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - resultRel
    - targetList
    argTypes:
    - Relation
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 296
    functionName: ExecCheckPlanOutput
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - Assert
    - RelationGetDescr
    - exprType
    - ereport
    - lfirst
    - errmsg
    - errdetail
    - TupleDescAttr
    - IsA
    linkageType: ''
    returnType: void
    signature: void ExecCheckPlanOutput(Relation resultRel, List *targetList)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:236,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:237,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:238,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:239,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:240,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:257,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:258,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:272,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:273,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:274,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:275,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:281,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:282,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:283,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:284,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:285,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:286,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:288,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:288,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 290
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 408
    functionsReached:
    - format_type_be
    - errcode
    - Assert
    - exprType
    - ereport
    - lfirst
    - errmsg
    - errdetail
    - TupleDescAttr
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, targetList)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetAllNullSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:348,1
    - Dst: ExecGetAllNullSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:355,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:375,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - isDelete
    - oldSlot
    - newSlot
    - planSlot
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - bool
    - TupleTableSlot*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 317
    functionDepth: 9
    functionLinenumber: 317
    functionLinenumberEnd: 376
    functionName: ExecProcessReturning
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecProject
    - ExecGetAllNullSlot
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecProcessReturning(ModifyTableContext *context,\n\t\t\t\t\t
      ResultRelInfo *resultRelInfo,\n\t\t\t\t\t bool isDelete,\n\t\t\t\t\t TupleTableSlot
      *oldSlot,\n\t\t\t\t\t TupleTableSlot *newSlot,\n\t\t\t\t\t TupleTableSlot *planSlot)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:391,1
    - Dst: table_tuple_satisfies_snapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:394,1
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:400,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:401,1
    - Dst: DatumGetTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:402,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:410,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:411,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:412,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - estate
    - rel
    - slot
    argTypes:
    - EState*
    - Relation
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 386
    functionDepth: 3
    functionLinenumber: 386
    functionLinenumberEnd: 415
    functionName: ExecCheckTupleVisible
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - slot_getsysattr
    - TransactionIdIsCurrentTransactionId
    - errcode
    - Assert
    - DatumGetTransactionId
    - table_tuple_satisfies_snapshot
    - ereport
    - errmsg
    - IsolationUsesXactSnapshot
    linkageType: ''
    returnType: void
    signature: "void ExecCheckTupleVisible(EState *estate,\n\t\t\t\t\t  Relation rel,\n\t\t\t\t\t
      \ TupleTableSlot *slot)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:429,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:432,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:433,1
    - Dst: ExecCheckTupleVisible
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:434,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - estate
    - relinfo
    - tid
    - tempSlot
    argTypes:
    - EState*
    - ResultRelInfo*
    - ItemPointer
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 420
    functionDepth: 4
    functionLinenumber: 420
    functionLinenumberEnd: 436
    functionName: ExecCheckTIDVisible
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - elog
    - table_tuple_fetch_row_version
    - ExecCheckTupleVisible
    - ExecClearTuple
    - IsolationUsesXactSnapshot
    linkageType: ''
    returnType: void
    signature: "void ExecCheckTIDVisible(EState *estate,\n\t\t\t\t\tResultRelInfo
      *relinfo,\n\t\t\t\t\tItemPointer tid,\n\t\t\t\t\tTupleTableSlot *tempSlot)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:459,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:478,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:486,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:488,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:493,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:500,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:502,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:503,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:513,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:515,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:522,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:529,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:555,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:561,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 3
    argNames:
    - resultRelInfo
    - estate
    - cmdtype
    argTypes:
    - ResultRelInfo*
    - EState*
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 453
    functionDepth: 6
    functionLinenumber: 453
    functionLinenumberEnd: 562
    functionName: ExecInitGenerated
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - elog
    - ExecPrepareExpr
    - pfree
    - RelationGetDescr
    - build_column_default
    - palloc0
    - Assert
    - pull_varattnos
    - MemoryContextSwitchTo
    - ExecGetUpdatedCols
    - RelationGetRelationName
    - TupleDescAttr
    - bms_add_member
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: "void ExecInitGenerated(ResultRelInfo *resultRelInfo,\n\t\t\t\t  EState
      *estate,\n\t\t\t\t  CmdType cmdtype)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:573,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:575,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:582,1
    - Dst: ExecInitGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:591,1
    - Dst: ExecInitGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:599,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:601,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:605,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:605,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:607,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:608,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:610,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:611,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:622,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:622,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:626,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:633,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:641,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:645,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:646,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:647,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:648,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:649,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:651,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 4
    argNames:
    - resultRelInfo
    - estate
    - slot
    - cmdtype
    argTypes:
    - ResultRelInfo*
    - EState*
    - TupleTableSlot*
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 567
    functionDepth: 7
    functionLinenumber: 567
    functionLinenumberEnd: 652
    functionName: ExecComputeStoredGenerated
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - slot_getallattrs
    - memcpy
    - Assert
    - RelationGetDescr
    - GetPerTupleExprContext
    - datumCopy
    - palloc_array
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - ExecInitGenerated
    - ExecStoreVirtualTuple
    - ExecMaterializeSlot
    - ExecClearTuple
    - TupleDescCompactAttr
    - TupleDescAttr
    - GetPerTupleMemoryContext
    linkageType: ''
    returnType: void
    signature: "void ExecComputeStoredGenerated(ResultRelInfo *resultRelInfo,\n\t\t\t\t\t\t
      \  EState *estate, TupleTableSlot *slot,\n\t\t\t\t\t\t   CmdType cmdtype)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:668,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:675,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:677,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:680,1
    - Dst: ExecCheckPlanOutput
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:689,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:693,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:699,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:703,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:706,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - mtstate
    - resultRelInfo
    argTypes:
    - ModifyTableState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 663
    functionDepth: 9
    functionLinenumber: 663
    functionLinenumberEnd: 714
    functionName: ExecInitInsertProjection
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - foreach
    - ExecAssignExprContext
    - RelationGetDescr
    - lappend
    - table_slot_create
    - ExecCheckPlanOutput
    - ExecBuildProjectionInfo
    - lfirst
    - outerPlan
    linkageType: ''
    returnType: void
    signature: "void ExecInitInsertProjection(ModifyTableState *mtstate,\n\t\t\t\t\t\t
      ResultRelInfo *resultRelInfo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:738,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:740,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:752,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:755,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:763,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:766,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:771,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:774,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - mtstate
    - resultRelInfo
    argTypes:
    - ModifyTableState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 733
    functionDepth: 9
    functionLinenumber: 733
    functionLinenumberEnd: 783
    functionName: ExecInitUpdateProjection
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecAssignExprContext
    - Assert
    - RelationGetDescr
    - ExecBuildUpdateProjection
    - table_slot_create
    - list_nth
    - outerPlan
    linkageType: ''
    returnType: void
    signature: "void ExecInitUpdateProjection(ModifyTableState *mtstate,\n\t\t\t\t\t\t
      ResultRelInfo *resultRelInfo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:807,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:823,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - relinfo
    - planSlot
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 791
    functionDepth: 4
    functionLinenumber: 791
    functionLinenumberEnd: 824
    functionName: ExecGetInsertNewTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecProject
    - ExecCopySlot
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecGetInsertNewTuple(ResultRelInfo *relinfo,\n\t\t\t\t\t
      \ TupleTableSlot *planSlot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:845,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:846,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:846,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - relinfo
    - planSlot
    - oldSlot
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 835
    functionDepth: 4
    functionLinenumber: 835
    functionLinenumberEnd: 852
    functionName: ExecGetUpdateNewTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecProject
    - TTS_EMPTY
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecGetUpdateNewTuple(ResultRelInfo *relinfo,\n\t\t\t\t\t
      \ TupleTableSlot *planSlot,\n\t\t\t\t\t  TupleTableSlot *oldSlot)"
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: ExecPrepareTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:901,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:907,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:917,1
    - Dst: ExecPendingInserts
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:933,1
    - Dst: ExecBRInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:935,1
    - Dst: ExecIRInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:943,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:952,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:959,1
    - Dst: ExecBatchInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:976,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:984,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:988,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:989,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1002,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1004,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1007,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1010,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1016,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1019,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1033,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1033,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1036,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1039,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1041,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1041,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1046,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::ExecForeignInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1054,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1067,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1077,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1084,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1112,1
    - Dst: ExecConstraints
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1118,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1129,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1140,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1157,1
    - Dst: ExecCheckIndexConstraints
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1159,1
    - Dst: ExecOnConflictUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1174,1
    - Dst: InstrCountTuples2
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1178,1
    - Dst: ExecOnConflictSelect
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1194,1
    - Dst: InstrCountTuples2
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1198,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1217,1
    - Dst: ExecCheckTIDVisible
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1218,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1219,1
    - Dst: InstrCountTuples2
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1220,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1231,1
    - Dst: SpeculativeInsertionLockAcquire
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1232,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1232,1
    - Dst: table_tuple_insert_speculative
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1235,1
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1242,1
    - Dst: table_tuple_complete_speculative
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1248,1
    - Dst: SpeculativeInsertionLockRelease
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1258,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1258,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1267,1
    - Dst: table_tuple_insert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1276,1
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1282,1
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1301,1
    - Dst: ExecARInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1318,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1321,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1336,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1360,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1363,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1365,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1369,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1373,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1383,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1384,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1386,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 151
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - slot
    - canSetTag
    - inserted_tuple
    - insert_destrel
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - TupleTableSlot*
    - bool
    - TupleTableSlot**
    - ResultRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 873
    functionDepth: 10
    functionLinenumber: 873
    functionLinenumberEnd: 1397
    functionName: ExecInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecPrepareTupleRouting
    - ExecOpenIndices
    - execute_attr_map_slot
    - SpeculativeInsertionLockRelease
    - table_tuple_insert_speculative
    - palloc_array
    - ExecCheckIndexConstraints
    - ExecProcessReturning
    - SpeculativeInsertionLockAcquire
    - ExecBatchInsert
    - ExecOnConflictSelect
    - ExecPendingInserts
    - table_tuple_complete_speculative
    - ExecARInsertTriggers
    - Assert
    - CreateTupleDescCopy
    - InstrCountTuples2
    - MakeSingleTupleTableSlot
    - ExecClearTuple
    - ExecCheckTIDVisible
    - ExecPartitionCheck
    - list_free
    - ExecWithCheckOptions
    - ItemPointerCopy
    - lappend
    - list_member_ptr
    - table_tuple_insert
    - ExecConstraints
    - CHECK_FOR_INTERRUPTS
    - ExecOnConflictUpdate
    - ResultRelInfo*::ri_FdwRoutine::ExecForeignInsert
    - ExecCopySlot
    - ExecComputeStoredGenerated
    - GetCurrentTransactionId
    - ExecBRInsertTriggers
    - INJECTION_POINT
    - MemoryContextSwitchTo
    - ExecARUpdateTriggers
    - ExecGetRootToChildMap
    - ExecGetReturningSlot
    - ItemPointerSetInvalid
    - ExecInsertIndexTuples
    - ExecMaterializeSlot
    - ExecIRInsertTriggers
    - RelationGetRelid
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecInsert(ModifyTableContext *context,\n\t\t   ResultRelInfo
      *resultRelInfo,\n\t\t   TupleTableSlot *slot,\n\t\t   bool canSetTag,\n\t\t
      \  TupleTableSlot **inserted_tuple,\n\t\t   ResultRelInfo **insert_destrel)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1434,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1453,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1454,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1456,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1460,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1471,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1482,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1492,1
    - Dst: ExecGetChildToRootMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1509,1
    - Dst: pgstat_init_function_usage
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1522,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1526,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1528,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1532,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1539,1
    - Dst: domain_check
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1547,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1559,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1565,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1566,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1587,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1589,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1594,1
    - Dst: AfterTriggerBeginQuery
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1606,1
    - Dst: ExecSetupTransitionCaptureState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1607,1
    - Dst: fireBSTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1608,1
    - Dst: ExecInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1609,1
    - Dst: fireASTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1610,1
    - Dst: AfterTriggerEndQuery
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1611,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1620,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 79
    argCount: 4
    argNames:
    - context
    - estate
    - resultRelInfo
    - tupleid
    argTypes:
    - ModifyTableContext*
    - EState*
    - ResultRelInfo*
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1406
    functionDepth: 11
    functionLinenumber: 1406
    functionLinenumberEnd: 1622
    functionName: ExecForPortionOfLeftovers
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecSetupTransitionCaptureState
    - fireBSTriggers
    - execute_attr_map_slot
    - fireASTriggers
    - ExecInsert
    - ExecGetChildToRootMap
    - elog
    - heap_freetuple
    - AfterTriggerEndQuery
    - AfterTriggerBeginQuery
    - fmgr_info
    - ExecForceStoreHeapTuple
    - lookup_type_cache
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - table_tuple_fetch_row_version
    - domain_check
    - slot_getallattrs
    - LOCAL_FCINFO
    - pgstat_init_function_usage
    - ExecFetchSlotHeapTuple
    - ExecMaterializeSlot
    - pgstat_end_function_usage
    linkageType: ''
    returnType: void
    signature: "void ExecForPortionOfLeftovers(ModifyTableContext *context,\n\t\t\t\t\t\t
      \ EState *estate,\n\t\t\t\t\t\t  ResultRelInfo *resultRelInfo,\n\t\t\t\t\t\t
      \ ItemPointer tupleid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ResultRelInfo*::ri_FdwRoutine::ExecForeignBatchInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1649,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1663,1
    - Dst: ExecARInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1666,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1674,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1683,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1684,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 7
    argNames:
    - mtstate
    - resultRelInfo
    - slots
    - planSlots
    - numSlots
    - estate
    - canSetTag
    argTypes:
    - ModifyTableState*
    - ResultRelInfo*
    - TupleTableSlot**
    - TupleTableSlot**
    - int
    - EState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1632
    functionDepth: 5
    functionLinenumber: 1632
    functionLinenumberEnd: 1687
    functionName: ExecBatchInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecARInsertTriggers
    - ExecWithCheckOptions
    - ExecClearTuple
    - RelationGetRelid
    - ResultRelInfo*::ri_FdwRoutine::ExecForeignBatchInsert
    linkageType: ''
    returnType: void
    signature: "void ExecBatchInsert(ModifyTableState *mtstate,\n\t\t\t\tResultRelInfo
      *resultRelInfo,\n\t\t\t\tTupleTableSlot **slots,\n\t\t\t\tTupleTableSlot **planSlots,\n\t\t\t\tint
      numSlots,\n\t\t\t\tEState *estate,\n\t\t\t\tbool canSetTag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1698,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1701,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1702,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1704,1
    - Dst: ExecBatchInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1705,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1712,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1692
    functionDepth: 6
    functionLinenumber: 1692
    functionLinenumberEnd: 1716
    functionName: ExecPendingInserts
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - list_free
    - Assert
    - lfirst
    - ExecBatchInsert
    - forboth
    linkageType: ''
    returnType: void
    signature: void ExecPendingInserts(EState *estate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecPendingInserts
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1739,1
    - Dst: ExecBRDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1741,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - epqreturnslot
    - result
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - TupleTableSlot**
    - TM_Result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1725
    functionDepth: 7
    functionLinenumber: 1725
    functionLinenumberEnd: 1748
    functionName: ExecDeletePrologue
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecBRDeleteTriggers
    - ExecPendingInserts
    linkageType: ''
    returnType: bool
    signature: "bool ExecDeletePrologue(ModifyTableContext *context, ResultRelInfo
      *resultRelInfo,\n\t\t\t\t   ItemPointer tupleid, HeapTuple oldtuple,\n\t\t\t\t
      \  TupleTableSlot **epqreturnslot, TM_Result *result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_tuple_delete
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1767,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - changingPart
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1774
      start: 1757
    functionDepth: 1
    functionLinenumber: 1757
    functionLinenumberEnd: 1774
    functionName: ExecDeleteAct
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - table_tuple_delete
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result ExecDeleteAct(ModifyTableContext *context, ResultRelInfo
      *resultRelInfo,\n\t\t\t  ItemPointer tupleid, bool changingPart)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1802,1
    - Dst: ExecForPortionOfLeftovers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1817,1
    - Dst: ExecARDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1820,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 5
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - changingPart
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1784
    functionDepth: 12
    functionLinenumber: 1784
    functionLinenumberEnd: 1822
    functionName: ExecDeleteEpilogue
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecARUpdateTriggers
    - ExecForPortionOfLeftovers
    - ExecARDeleteTriggers
    linkageType: ''
    returnType: void
    signature: "void ExecDeleteEpilogue(ModifyTableContext *context, ResultRelInfo
      *resultRelInfo,\n\t\t\t\t   ItemPointer tupleid, HeapTuple oldtuple, bool changingPart)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: ExecDeletePrologue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1871,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1881,1
    - Dst: ExecIRDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1882,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1895,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::ExecForeignDelete
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1896,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1908,1
    - Dst: ExecStoreAllNullTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1909,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1911,1
    - Dst: ExecDeleteAct
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1925,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1959,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1960,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1961,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1962,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1975,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1976,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1977,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1978,1
    - Dst: EvalPlanQualBegin
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1984,1
    - Dst: EvalPlanQualSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1985,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1988,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1998,1
    - Dst: EvalPlanQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1999,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2003,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2033,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2034,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2035,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2036,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2055,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2060,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2065,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2066,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2067,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2068,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2073,1
    - Dst: ExecDeleteEpilogue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2118,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2118,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2122,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2125,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2129,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2131,1
    - Dst: ExecGetChildToRootMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2148,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2154,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2156,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2160,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2168,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2175,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2177,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 106
    argCount: 10
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - processReturning
    - changingPart
    - canSetTag
    - tmresult
    - tupleDeleted
    - epqreturnslot
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - bool
    - bool
    - bool
    - TM_Result*
    - bool*
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 1846
    functionDepth: 13
    functionLinenumber: 1846
    functionLinenumberEnd: 2183
    functionName: ExecDelete
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - execute_attr_map_slot
    - errcode
    - ExecProcessReturning
    - errhint
    - TTS_EMPTY
    - ExecIRDeleteTriggers
    - ExecGetChildToRootMap
    - elog
    - Assert
    - EvalPlanQualBegin
    - errmsg
    - ExecClearTuple
    - ExecStoreAllNullTuple
    - ExecForceStoreHeapTuple
    - ItemPointerCopy
    - table_tuple_fetch_row_version
    - ereport
    - ExecDeleteAct
    - table_tuple_lock
    - ResultRelInfo*::ri_FdwRoutine::ExecForeignDelete
    - TupIsNull
    - EvalPlanQual
    - ExecDeletePrologue
    - EvalPlanQualSlot
    - ExecGetReturningSlot
    - IsolationUsesXactSnapshot
    - ExecMaterializeSlot
    - ExecDeleteEpilogue
    - RelationGetRelid
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecDelete(ModifyTableContext *context,\n\t\t   ResultRelInfo
      *resultRelInfo,\n\t\t   ItemPointer tupleid,\n\t\t   HeapTuple oldtuple,\n\t\t
      \  bool processReturning,\n\t\t   bool changingPart,\n\t\t   bool canSetTag,\n\t\t
      \  TM_Result *tmresult,\n\t\t   bool *tupleDeleted,\n\t\t   TupleTableSlot **epqreturnslot)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2232,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2233,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2234,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2235,1
    - Dst: ExecPartitionCheckEmitError
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2242,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2254,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2264,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2265,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2267,1
    - Dst: ExecDelete
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2274,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2312,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2320,1
    - Dst: ExecInitUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2321,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2323,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2327,1
    - Dst: ExecGetUpdateNewTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2329,1
    - Dst: ExecGetChildToRootMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2340,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2342,1
    - Dst: ExecInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2348,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 11
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - slot
    - canSetTag
    - updateCxt
    - tmresult
    - retry_slot
    - inserted_tuple
    - insert_destrel
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - TupleTableSlot*
    - bool
    - UpdateContext*
    - TM_Result*
    - TupleTableSlot**
    - TupleTableSlot**
    - ResultRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2360
      start: 2204
    functionDepth: 14
    functionLinenumber: 2204
    functionLinenumberEnd: 2360
    functionName: ExecCrossPartitionUpdate
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - execute_attr_map_slot
    - errcode
    - ExecDelete
    - ExecInsert
    - ExecInitUpdateProjection
    - ExecGetChildToRootMap
    - elog
    - Assert
    - ExecSetupPartitionTupleRouting
    - errmsg
    - table_tuple_fetch_row_version
    - ereport
    - table_slot_create
    - unlikely
    - TupIsNull
    - MemoryContextSwitchTo
    - ExecPartitionCheckEmitError
    - errdetail
    - ExecGetUpdateNewTuple
    linkageType: ''
    returnType: bool
    signature: "bool ExecCrossPartitionUpdate(ModifyTableContext *context,\n\t\t\t\t\t\t
      ResultRelInfo *resultRelInfo,\n\t\t\t\t\t\t ItemPointer tupleid, HeapTuple oldtuple,\n\t\t\t\t\t\t
      TupleTableSlot *slot,\n\t\t\t\t\t\t bool canSetTag,\n\t\t\t\t\t\t UpdateContext
      *updateCxt,\n\t\t\t\t\t\t TM_Result *tmresult,\n\t\t\t\t\t\t TupleTableSlot
      **retry_slot,\n\t\t\t\t\t\t TupleTableSlot **inserted_tuple,\n\t\t\t\t\t\t ResultRelInfo
      **insert_destrel)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2379,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2387,1
    - Dst: ExecPendingInserts
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2395,1
    - Dst: ExecBRUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2397,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - slot
    - result
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - TupleTableSlot*
    - TM_Result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2404
      start: 2369
    functionDepth: 7
    functionLinenumber: 2369
    functionLinenumberEnd: 2404
    functionName: ExecUpdatePrologue
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecOpenIndices
    - ExecMaterializeSlot
    - ExecPendingInserts
    - ExecBRUpdateTriggers
    linkageType: ''
    returnType: bool
    signature: "bool ExecUpdatePrologue(ModifyTableContext *context, ResultRelInfo
      *resultRelInfo,\n\t\t\t\t   ItemPointer tupleid, HeapTuple oldtuple, TupleTableSlot
      *slot,\n\t\t\t\t   TM_Result *result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2423,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2412
    functionDepth: 8
    functionLinenumber: 2412
    functionLinenumberEnd: 2432
    functionName: ExecUpdatePrepareSlot
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecComputeStoredGenerated
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void ExecUpdatePrepareSlot(ResultRelInfo *resultRelInfo,\n\t\t\t\t\t
      \ TupleTableSlot *slot,\n\t\t\t\t\t  EState *estate)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecUpdatePrepareSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2467,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2470,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2481,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2491,1
    - Dst: ExecCrossPartitionUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2511,1
    - Dst: ExecCrossPartitionUpdateForeignKey
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2539,1
    - Dst: ExecConstraints
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2570,1
    - Dst: table_tuple_update
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2581,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 7
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - slot
    - canSetTag
    - updateCxt
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - TupleTableSlot*
    - bool
    - UpdateContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2591
      start: 2447
    functionDepth: 15
    functionLinenumber: 2447
    functionLinenumberEnd: 2591
    functionName: ExecUpdateAct
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecPartitionCheck
    - table_tuple_update
    - ExecWithCheckOptions
    - ExecConstraints
    - ExecCrossPartitionUpdate
    - ExecCrossPartitionUpdateForeignKey
    - ExecUpdatePrepareSlot
    - ExecMaterializeSlot
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result ExecUpdateAct(ModifyTableContext *context, ResultRelInfo
      *resultRelInfo,\n\t\t\t  ItemPointer tupleid, HeapTuple oldtuple, TupleTableSlot
      *slot,\n\t\t\t  bool canSetTag, UpdateContext *updateCxt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2615,1
    - Dst: ExecForPortionOfLeftovers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2622,1
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2625,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2634,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2646,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 6
    argNames:
    - context
    - updateCxt
    - resultRelInfo
    - tupleid
    - oldtuple
    - slot
    argTypes:
    - ModifyTableContext*
    - UpdateContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2648
      start: 2600
    functionDepth: 12
    functionLinenumber: 2600
    functionLinenumberEnd: 2648
    functionName: ExecUpdateEpilogue
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - list_free
    - ExecWithCheckOptions
    - ExecForPortionOfLeftovers
    - ExecARUpdateTriggers
    - ExecInsertIndexTuples
    linkageType: ''
    returnType: void
    signature: "void ExecUpdateEpilogue(ModifyTableContext *context, UpdateContext
      *updateCxt,\n\t\t\t\t   ResultRelInfo *resultRelInfo, ItemPointer tupleid,\n\t\t\t\t
      \  HeapTuple oldtuple, TupleTableSlot *slot)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetAncestorResultRels
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2668,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2679,1
    - Dst: RI_FKey_trigger_type
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2694,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2703,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2705,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2706,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2707,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2708,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2709,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2710,1
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2714,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 6
    argNames:
    - context
    - sourcePartInfo
    - destPartInfo
    - tupleid
    - oldslot
    - newslot
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ResultRelInfo*
    - ItemPointer
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2717
      start: 2655
    functionDepth: 7
    functionLinenumber: 2655
    functionLinenumberEnd: 2717
    functionName: ExecCrossPartitionUpdateForeignKey
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - errcode
    - ereport
    - RI_FKey_trigger_type
    - ExecARUpdateTriggers
    - errhint
    - lfirst
    - errmsg
    - RelationGetRelationName
    - errdetail
    - ExecGetAncestorResultRels
    linkageType: ''
    returnType: void
    signature: "void ExecCrossPartitionUpdateForeignKey(ModifyTableContext *context,\n\t\t\t\t\t\t\t\t
      \  ResultRelInfo *sourcePartInfo,\n\t\t\t\t\t\t\t\t   ResultRelInfo *destPartInfo,\n\t\t\t\t\t\t\t\t
      \  ItemPointer tupleid,\n\t\t\t\t\t\t\t\t   TupleTableSlot *oldslot,\n\t\t\t\t\t\t\t\t
      \  TupleTableSlot *newslot)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2679,1
    - Dst: RI_FKey_trigger_type
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2694,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2703,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2705,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2706,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2707,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2708,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2709,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2710,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2677
    functionDepth: 1
    functionLinenumber: 2677
    functionLinenumberEnd: 2711
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 409
    functionsReached:
    - errcode
    - ereport
    - RI_FKey_trigger_type
    - errhint
    - lfirst
    - errmsg
    - RelationGetRelationName
    - errdetail
    linkageType: ''
    returnType: void
    signature: void foreach(lc, ancestorRels)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2761,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2762,1
    - Dst: ExecUpdatePrologue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2769,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2783,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2787,1
    - Dst: ExecIRUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2794,1
    - Dst: ExecUpdatePrepareSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2801,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::ExecForeignUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2806,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2819,1
    - Dst: ExecUpdateAct
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2834,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2873,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2874,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2875,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2876,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2889,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2890,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2891,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2892,1
    - Dst: EvalPlanQualSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2898,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2901,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2911,1
    - Dst: EvalPlanQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2913,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2917,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2922,1
    - Dst: ExecInitUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2923,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2928,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2930,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2936,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2940,1
    - Dst: ExecGetUpdateNewTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2941,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2963,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2964,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2965,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2966,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2971,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2980,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2981,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2982,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2983,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2988,1
    - Dst: ExecUpdateEpilogue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2997,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3002,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 84
    argCount: 7
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - oldSlot
    - slot
    - canSetTag
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - TupleTableSlot*
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3006
      start: 2748
    functionDepth: 16
    functionLinenumber: 2748
    functionLinenumberEnd: 3006
    functionName: ExecUpdate
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecUpdatePrologue
    - errcode
    - ExecProcessReturning
    - errhint
    - ExecInitUpdateProjection
    - elog
    - LockTuple
    - Assert
    - UnlockTuple
    - errmsg
    - ExecUpdateEpilogue
    - ExecUpdatePrepareSlot
    - table_tuple_fetch_row_version
    - ExecUpdateAct
    - ereport
    - ExecIRUpdateTriggers
    - table_tuple_lock
    - unlikely
    - IsBootstrapProcessingMode
    - TupIsNull
    - EvalPlanQual
    - EvalPlanQualSlot
    - ResultRelInfo*::ri_FdwRoutine::ExecForeignUpdate
    - ExecGetUpdateNewTuple
    - IsolationUsesXactSnapshot
    - RelationGetRelid
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecUpdate(ModifyTableContext *context, ResultRelInfo
      *resultRelInfo,\n\t\t   ItemPointer tupleid, HeapTuple oldtuple, TupleTableSlot
      *oldSlot,\n\t\t   TupleTableSlot *slot, bool canSetTag)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3037,1
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3066,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3069,1
    - Dst: DatumGetTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3070,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3072,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3073,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3074,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3076,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3078,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3081,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3091,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3095,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3096,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3097,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3098,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3107,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3111,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3114,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3117,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3121,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 6
    argNames:
    - context
    - existing
    - conflictTid
    - relation
    - lockmode
    - isUpdate
    argTypes:
    - ModifyTableContext*
    - TupleTableSlot*
    - ItemPointer
    - Relation
    - LockTupleMode
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3126
      start: 3017
    functionDepth: 3
    functionLinenumber: 3017
    functionLinenumberEnd: 3126
    functionName: ExecOnConflictLockRow
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - slot_getsysattr
    - TransactionIdIsCurrentTransactionId
    - elog
    - errcode
    - Assert
    - DatumGetTransactionId
    - ereport
    - table_tuple_lock
    - errhint
    - errmsg
    - ExecClearTuple
    - IsolationUsesXactSnapshot
    linkageType: ''
    returnType: bool
    signature: "bool ExecOnConflictLockRow(ModifyTableContext *context,\n\t\t\t\t\t
      \ TupleTableSlot *existing,\n\t\t\t\t\t  ItemPointer conflictTid,\n\t\t\t\t\t
      \ Relation relation,\n\t\t\t\t\t  LockTupleMode lockmode,\n\t\t\t\t\t  bool
      isUpdate)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3160,1
    - Dst: ExecUpdateLockMode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3163,1
    - Dst: ExecOnConflictLockRow
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3166,1
    - Dst: ExecCheckTupleVisible
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3183,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3196,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3198,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3199,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3222,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3228,1
    - Dst: ExecUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3240,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3254,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3256,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - conflictTid
    - excludedSlot
    - canSetTag
    - returning
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - TupleTableSlot*
    - bool
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3259
      start: 3139
    functionDepth: 17
    functionLinenumber: 3139
    functionLinenumberEnd: 3259
    functionName: ExecOnConflictUpdate
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecWithCheckOptions
    - ExecProject
    - ExecCheckTupleVisible
    - ExecUpdateLockMode
    - ExecQual
    - ExecClearTuple
    - ExecUpdate
    - ExecOnConflictLockRow
    - ExecMaterializeSlot
    - InstrCountFiltered1
    linkageType: ''
    returnType: bool
    signature: "bool ExecOnConflictUpdate(ModifyTableContext *context,\n\t\t\t\t\t
      ResultRelInfo *resultRelInfo,\n\t\t\t\t\t ItemPointer conflictTid,\n\t\t\t\t\t
      TupleTableSlot *excludedSlot,\n\t\t\t\t\t bool canSetTag,\n\t\t\t\t\t TupleTableSlot
      **returning)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3292,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3297,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3301,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3322,1
    - Dst: ExecOnConflictLockRow
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3325,1
    - Dst: ExecCheckTupleVisible
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3334,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3346,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3348,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3349,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3366,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3372,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3374,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3384,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3391,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - conflictTid
    - excludedSlot
    - canSetTag
    - returning
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - TupleTableSlot*
    - bool
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3394
      start: 3272
    functionDepth: 10
    functionLinenumber: 3272
    functionLinenumberEnd: 3394
    functionName: ExecOnConflictSelect
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - ExecWithCheckOptions
    - table_tuple_fetch_row_version
    - ExecCheckTupleVisible
    - ExecProcessReturning
    - ExecQual
    - ExecClearTuple
    - ExecOnConflictLockRow
    - ExecMaterializeSlot
    - InstrCountFiltered1
    linkageType: ''
    returnType: bool
    signature: "bool ExecOnConflictSelect(ModifyTableContext *context,\n\t\t\t\t\t
      ResultRelInfo *resultRelInfo,\n\t\t\t\t\t ItemPointer conflictTid,\n\t\t\t\t\t
      TupleTableSlot *excludedSlot,\n\t\t\t\t\t bool canSetTag,\n\t\t\t\t\t TupleTableSlot
      **returning)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecMergeMatched
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3469,1
    - Dst: ExecMergeNotMatched
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3490,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 5
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - canSetTag
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3496
      start: 3399
    functionDepth: 1
    functionLinenumber: 3399
    functionLinenumberEnd: 3496
    functionName: ExecMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecMergeMatched
    - ExecMergeNotMatched
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecMerge(ModifyTableContext *context, ResultRelInfo
      *resultRelInfo,\n\t\t  ItemPointer tupleid, HeapTuple oldtuple, bool canSetTag)"
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3568,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3572,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3573,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3585,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3589,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3593,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3604,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3611,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3613,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3625,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3642,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3659,1
    - Dst: ExecUpdatePrologue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3662,1
    - Dst: ExecIRUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3675,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3682,1
    - Dst: ExecUpdateAct
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3684,1
    - Dst: ExecUpdateEpilogue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3707,1
    - Dst: ExecDeletePrologue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3715,1
    - Dst: ExecIRDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3728,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3735,1
    - Dst: ExecDeleteAct
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3737,1
    - Dst: ExecDeleteEpilogue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3743,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3788,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3789,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3790,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3791,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3793,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3794,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3795,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3797,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3799,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3802,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3806,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3807,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3808,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3809,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3826,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3827,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3828,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3829,1
    - Dst: ExecUpdateLockMode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3843,1
    - Dst: EvalPlanQualSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3846,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3851,1
    - Dst: ItemPointerIndicatesMovedPartitions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3870,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3871,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3872,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3873,1
    - Dst: EvalPlanQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3881,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3894,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3902,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3915,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3916,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3918,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3923,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3927,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3930,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3952,1
    - Dst: InstrUpdateTupleCount
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3955,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3955,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3985,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3986,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3987,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3988,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3990,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3991,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3992,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3994,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3996,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3999,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4004,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4014,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4024,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4033,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4045,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4061,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4062,1
    CyclomaticComplexity: 74
    EdgeCount: 74
    ICount: 190
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - canSetTag
    - matched
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4065
      start: 3525
    functionDepth: 16
    functionLinenumber: 3525
    functionLinenumberEnd: 4065
    functionName: ExecMergeMatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecUpdatePrologue
    - TransactionIdIsCurrentTransactionId
    - errcode
    - ExecProcessReturning
    - errhint
    - ExecIRDeleteTriggers
    - ItemPointerIndicatesMovedPartitions
    - elog
    - LockTuple
    - foreach
    - ExecGetJunkAttribute
    - Assert
    - UnlockTuple
    - ExecUpdateLockMode
    - outerPlanState
    - ExecUpdateEpilogue
    - errmsg
    - ExecProject
    - ExecForceStoreHeapTuple
    - ExecWithCheckOptions
    - table_tuple_fetch_row_version
    - ExecUpdateAct
    - ereport
    - ExecIRUpdateTriggers
    - ExecDeleteAct
    - table_tuple_lock
    - lfirst
    - TupIsNull
    - ItemPointerIsValid
    - EvalPlanQual
    - InstrUpdateTupleCount
    - ExecDeletePrologue
    - EvalPlanQualSlot
    - ExecQual
    - ItemPointerSetInvalid
    - IsolationUsesXactSnapshot
    - ExecDeleteEpilogue
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecMergeMatched(ModifyTableContext *context, ResultRelInfo
      *resultRelInfo,\n\t\t\t\t ItemPointer tupleid, HeapTuple oldtuple, bool canSetTag,\n\t\t\t\t
      bool *matched)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4102,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4113,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4126,1
    - Dst: ExecInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4129,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - context
    - resultRelInfo
    - canSetTag
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4148
      start: 4070
    functionDepth: 11
    functionLinenumber: 4070
    functionLinenumberEnd: 4148
    functionName: ExecMergeNotMatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - elog
    - lfirst
    - ExecInsert
    - ExecQual
    - ExecProject
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecMergeNotMatched(ModifyTableContext *context,
      ResultRelInfo *resultRelInfo,\n\t\t\t\t\tbool canSetTag)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4102,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4113,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4126,1
    - Dst: ExecInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4129,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4145
      start: 4100
    functionDepth: 11
    functionLinenumber: 4100
    functionLinenumberEnd: 4145
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 410
    functionsReached:
    - elog
    - lfirst
    - ExecInsert
    - ExecQual
    - ExecProject
    linkageType: ''
    returnType: void
    signature: void foreach(l, actionStates)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4170,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4183,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4188,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4191,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4194,1
    - Dst: ExecInitMergeTupleSlots
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4195,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4199,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4203,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4212,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4214,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4222,1
    - Dst: ExecCheckPlanOutput
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4229,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4257,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4260,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4264,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4280,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4284,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4288,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4297,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4347,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4347,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4348,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4355,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4360,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4360,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4361,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4365,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4368,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4374,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4375,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4375,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4378,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4390,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4390,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4391,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4398,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4404,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4404,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4405,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4409,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4412,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4419,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4422,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 78
    argCount: 2
    argNames:
    - mtstate
    - estate
    argTypes:
    - ModifyTableState*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4425
      start: 4153
    functionDepth: 9
    functionLinenumber: 4153
    functionLinenumberEnd: 4425
    functionName: ExecInitMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecBuildUpdateProjection
    - elog
    - Assert
    - RelationGetDescr
    - linitial
    - ExecCheckPlanOutput
    - ExecSetupPartitionTupleRouting
    - ExecBuildProjectionInfo
    - list_length
    - lappend
    - table_slot_create
    - build_attrmap_by_name
    - RelationGetForm
    - unlikely
    - lfirst
    - ExecInitQual
    - ExecInitMergeTupleSlots
    - lfirst_node
    - ExecAssignExprContext
    - castNode
    - makeNode
    - map_variable_attnos
    - list_nth
    linkageType: ''
    returnType: void
    signature: void ExecInitMerge(ModifyTableState *mtstate, EState *estate)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4183,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4188,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4191,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4194,1
    - Dst: ExecInitMergeTupleSlots
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4195,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4199,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4203,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4212,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4214,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4222,1
    - Dst: ExecCheckPlanOutput
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4229,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4257,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4260,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4264,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4280,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4284,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4288,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4297,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4312,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4316
      start: 4181
    functionDepth: 7
    functionLinenumber: 4181
    functionLinenumberEnd: 4316
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 410
    functionsReached:
    - elog
    - RelationGetDescr
    - ExecBuildUpdateProjection
    - lappend
    - table_slot_create
    - makeNode
    - ExecCheckPlanOutput
    - ExecSetupPartitionTupleRouting
    - unlikely
    - lfirst
    - ExecBuildProjectionInfo
    - list_nth
    - ExecInitQual
    - ExecInitMergeTupleSlots
    linkageType: ''
    returnType: void
    signature: void foreach(lc, mergeActionLists)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4203,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4212,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4214,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4222,1
    - Dst: ExecCheckPlanOutput
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4229,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4257,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4260,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4264,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4280,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4284,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4288,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4297,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4312,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4315
      start: 4201
    functionDepth: 7
    functionLinenumber: 4201
    functionLinenumberEnd: 4315
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 410
    functionsReached:
    - elog
    - RelationGetDescr
    - ExecBuildUpdateProjection
    - lappend
    - table_slot_create
    - makeNode
    - ExecCheckPlanOutput
    - ExecSetupPartitionTupleRouting
    - lfirst
    - ExecBuildProjectionInfo
    - ExecInitQual
    linkageType: ''
    returnType: void
    signature: void foreach(l, mergeActionList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4374,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4375,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4375,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4379
      start: 4372
    functionDepth: 7
    functionLinenumber: 4372
    functionLinenumberEnd: 4379
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 410
    functionsReached:
    - ExecInitQual
    - lappend
    - castNode
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, wcoList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4439,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4442,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - mtstate
    - resultRelInfo
    argTypes:
    - ModifyTableState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4448
      start: 4433
    functionDepth: 3
    functionLinenumber: 4433
    functionLinenumberEnd: 4448
    functionName: ExecInitMergeTupleSlots
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 2
    functionsReached:
    - Assert
    - table_slot_create
    linkageType: ''
    returnType: void
    signature: "void ExecInitMergeTupleSlots(ModifyTableState *mtstate,\n\t\t\t\t\t\tResultRelInfo
      *resultRelInfo)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ExecBSInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4462,1
    - Dst: ExecBSUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4464,1
    - Dst: ExecBSUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4468,1
    - Dst: ExecBSDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4471,1
    - Dst: ExecBSInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4475,1
    - Dst: ExecBSUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4477,1
    - Dst: ExecBSDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4479,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4482,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - ModifyTableState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4485
      start: 4453
    functionDepth: 1
    functionLinenumber: 4453
    functionLinenumberEnd: 4485
    functionName: fireBSTriggers
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecBSDeleteTriggers
    - ExecBSInsertTriggers
    - ExecBSUpdateTriggers
    - elog
    linkageType: ''
    returnType: void
    signature: void fireBSTriggers(ModifyTableState *node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ExecASUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4500,1
    - Dst: ExecASInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4503,1
    - Dst: ExecASUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4507,1
    - Dst: ExecASDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4511,1
    - Dst: ExecASDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4516,1
    - Dst: ExecASUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4519,1
    - Dst: ExecASInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4522,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4526,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - ModifyTableState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4529
      start: 4490
    functionDepth: 1
    functionLinenumber: 4490
    functionLinenumberEnd: 4529
    functionName: fireASTriggers
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - elog
    - ExecASDeleteTriggers
    - ExecASUpdateTriggers
    - ExecASInsertTriggers
    linkageType: ''
    returnType: void
    signature: void fireASTriggers(ModifyTableState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MakeTransitionCaptureState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4543,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4544,1
    - Dst: MakeTransitionCaptureState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4549,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - mtstate
    - estate
    argTypes:
    - ModifyTableState*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4552
      start: 4535
    functionDepth: 1
    functionLinenumber: 4535
    functionLinenumberEnd: 4552
    functionName: ExecSetupTransitionCaptureState
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - MakeTransitionCaptureState
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void ExecSetupTransitionCaptureState(ModifyTableState *mtstate, EState
      *estate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecFindPartition
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4582,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4605,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4610,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 6
    argNames:
    - mtstate
    - estate
    - proute
    - targetRelInfo
    - slot
    - partRelInfo
    argTypes:
    - ModifyTableState*
    - EState*
    - PartitionTupleRouting*
    - ResultRelInfo*
    - TupleTableSlot*
    - ResultRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4615
      start: 4564
    functionDepth: 5
    functionLinenumber: 4564
    functionLinenumberEnd: 4615
    functionName: ExecPrepareTupleRouting
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecGetRootToChildMap
    - execute_attr_map_slot
    - ExecFindPartition
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecPrepareTupleRouting(ModifyTableState *mtstate,\n\t\t\t\t\t\tEState
      *estate,\n\t\t\t\t\t\tPartitionTupleRouting *proute,\n\t\t\t\t\t\tResultRelInfo
      *targetRelInfo,\n\t\t\t\t\t\tTupleTableSlot *slot,\n\t\t\t\t\t\tResultRelInfo
      **partRelInfo)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4627,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4641,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4653,1
    - Dst: fireBSTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4669,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4675,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4694,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4702,1
    - Dst: ExecMergeNotMatched
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4713,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4730,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4734,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4742,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4748,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4762,1
    - Dst: ExecMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4764,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4777,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4779,1
    - Dst: ExecLookupResultRelByOid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4783,1
    - Dst: ExecInitForPortionOf
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4813,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4816,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4823,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4852,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4852,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4854,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4870,1
    - Dst: ExecMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4872,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4885,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4888,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4909,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4911,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4927,1
    - Dst: ExecMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4929,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4942,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4945,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4947,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4948,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4952,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4959,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4967,1
    - Dst: ExecInitInsertProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4968,1
    - Dst: ExecGetInsertNewTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4969,1
    - Dst: ExecInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4970,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4978,1
    - Dst: ExecInitUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4979,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4988,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4990,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4999,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5002,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5005,1
    - Dst: ExecGetUpdateNewTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5007,1
    - Dst: ExecUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5011,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5014,1
    - Dst: ExecDelete
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5019,1
    - Dst: ExecMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5024,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5029,1
    - Dst: ExecPendingInserts
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5045,1
    - Dst: fireASTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5050,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 146
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5055
      start: 4624
    functionDepth: 17
    functionLinenumber: 4624
    functionLinenumberEnd: 5055
    functionName: ExecModifyTable
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - fireBSTriggers
    - HeapTupleHeaderGetDatumLength
    - ResetExprContext
    - fireASTriggers
    - ResetPerTupleExprContext
    - ExecDelete
    - ExecProcessReturning
    - ExecInsert
    - ExecInitUpdateProjection
    - elog
    - AttributeNumberIsValid
    - LockTuple
    - ExecPendingInserts
    - ExecGetJunkAttribute
    - DatumGetObjectId
    - Assert
    - ExecProcNode
    - UnlockTuple
    - EvalPlanQualSetSlot
    - ExecInitInsertProjection
    - outerPlanState
    - ExecGetInsertNewTuple
    - ExecInitForPortionOf
    - DatumGetHeapTupleHeader
    - ExecForceStoreHeapTuple
    - ExecLookupResultRelByOid
    - table_tuple_fetch_row_version
    - CHECK_FOR_INTERRUPTS
    - unlikely
    - ExecMerge
    - TupIsNull
    - castNode
    - ExecMergeNotMatched
    - ExecUpdate
    - ItemPointerSetInvalid
    - ExecGetUpdateNewTuple
    - RelationGetRelid
    - DatumGetPointer
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecModifyTable(PlanState *pstate)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5077,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5095,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5108,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - node
    - resultoid
    - missing_ok
    - update_cache
    argTypes:
    - ModifyTableState*
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5110
      start: 5067
    functionDepth: 1
    functionLinenumber: 5067
    functionLinenumberEnd: 5110
    functionName: ExecLookupResultRelByOid
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - elog
    - hash_search
    - RelationGetRelid
    linkageType: ''
    returnType: ResultRelInfo
    signature: "ResultRelInfo *\nExecLookupResultRelByOid(ModifyTableState *node,
      Oid resultoid,\n\t\t\t\t\t\t bool missing_ok, bool update_cache)"
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5120,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5122,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5139,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5158,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5160,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5163,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5168,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5174,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5176,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5179,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5183,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5187,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5191,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5195,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5197,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5201,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5203,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5207,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5209,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5216,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5217,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5219,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5221,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5228,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5233,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5243,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5271,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5271,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5272,1
    - Dst: ExecInitResultRelation
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5273,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5278,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5278,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5279,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5279,1
    - Dst: ExecInitResultRelation
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5281,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5282,1
    - Dst: EvalPlanQualInit
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5286,1
    - Dst: ExecSetupTransitionCaptureState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5295,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5307,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5311,1
    - Dst: ExecInitResultRelation
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5315,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5328,1
    - Dst: CheckValidResultRel
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5333,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5343,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5343,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5357,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::BeginForeignModify
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5359,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5392,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5393,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5394,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5402,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5411,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5414,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5415,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5421,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5423,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5424,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5436,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5437,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5437,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5453,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5461,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5467,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5468,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5471,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5493,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5498,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5507,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5511,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5522,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5532,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5543,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5547,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5557,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5578,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5583,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5597,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5626,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5629,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5630,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5637,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5638,1
    - Dst: executor_errposition
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5639,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5643,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5652,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5658,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5683,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5693,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5694,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5696,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5712,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5714,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5715,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5728,1
    - Dst: ExecFindRowMark
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5732,1
    - Dst: ExecBuildAuxRowMark
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5733,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5734,1
    - Dst: ExecInitMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5739,1
    - Dst: EvalPlanQualSetPlan
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5741,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5764,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5774,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5778,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5796,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::GetForeignModifyBatchSize
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5804,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5805,1
    - Dst: lcons
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5821,1
    CyclomaticComplexity: 63
    EdgeCount: 63
    ICount: 228
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - ModifyTable*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5825
      start: 5116
    functionDepth: 11
    functionLinenumber: 5116
    functionLinenumberEnd: 5825
    functionName: ExecInitModifyTable
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecSetupTransitionCaptureState
    - lappend_int
    - lfirst_int
    - ExecBuildUpdateProjection
    - palloc_array
    - linitial_int
    - bms_add_member
    - ExecInitNode
    - AttributeNumberIsValid
    - elog
    - foreach
    - Assert
    - bms_is_member
    - EvalPlanQualInit
    - ResultRelInfo*::ri_FdwRoutine::GetForeignModifyBatchSize
    - ExecInitResultTupleSlotTL
    - list_nth_node
    - outerPlanState
    - ExecSetupPartitionTupleRouting
    - ExecBuildProjectionInfo
    - executor_errposition
    - errmsg
    - ExecFindRowMark
    - list_length
    - ExecBuildAuxRowMark
    - outerPlan
    - ExecFindJunkAttributeInTlist
    - ExecInitMerge
    - lcons
    - ExecInitResultTypeTL
    - lappend
    - table_slot_create
    - ereport
    - hash_create
    - lfirst
    - ExecInitQual
    - lfirst_node
    - ExecInitResultRelation
    - ExecPrepareExpr
    - ExecInitExtraTupleSlot
    - ResultRelInfo*::ri_FdwRoutine::BeginForeignModify
    - hash_search
    - ExecAssignExprContext
    - CheckValidResultRel
    - makeNode
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - exec_rt_fetch
    - list_nth
    - RelationGetRelid
    - EvalPlanQualSetPlan
    linkageType: ''
    returnType: ModifyTableState
    signature: 'ModifyTableState *

      ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5307,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5311,1
    - Dst: ExecInitResultRelation
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5315,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5328,1
    - Dst: CheckValidResultRel
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5338
      start: 5305
    functionDepth: 7
    functionLinenumber: 5305
    functionLinenumberEnd: 5338
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 411
    functionsReached:
    - ExecInitResultRelation
    - lfirst_int
    - CheckValidResultRel
    - bms_is_member
    - list_nth
    linkageType: ''
    returnType: void
    signature: void foreach(l, resultRelations)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5461,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5467,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5468,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5477
      start: 5459
    functionDepth: 7
    functionLinenumber: 5459
    functionLinenumberEnd: 5477
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 411
    functionsReached:
    - ExecInitQual
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(l, withCheckOptionLists)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5467,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5468,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5472
      start: 5465
    functionDepth: 7
    functionLinenumber: 5465
    functionLinenumberEnd: 5472
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 411
    functionsReached:
    - ExecInitQual
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(ll, wcoList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5507,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5514
      start: 5505
    functionDepth: 3
    functionLinenumber: 5505
    functionLinenumberEnd: 5514
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 411
    functionsReached:
    - ExecBuildProjectionInfo
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, returningLists)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ResultRelInfo*::ri_FdwRoutine::EndForeignModify
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5851,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5861,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5862,1
    - Dst: ExecCleanupTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5872,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5875,1
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5881,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5886,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5886,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - ModifyTableState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5887
      start: 5835
    functionDepth: 5
    functionLinenumber: 5835
    functionLinenumberEnd: 5887
    functionName: ExecEndModifyTable
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecDropSingleTupleTableSlot
    - EvalPlanQualEnd
    - outerPlanState
    - ExecEndNode
    - ResultRelInfo*::ri_FdwRoutine::EndForeignModify
    - ExecCleanupTupleRouting
    linkageType: ''
    returnType: void
    signature: void ExecEndModifyTable(ModifyTableState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - ModifyTableState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5897
      start: 5889
    functionDepth: 1
    functionLinenumber: 5889
    functionLinenumberEnd: 5897
    functionName: ExecReScanModifyTable
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void ExecReScanModifyTable(ModifyTableState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5921,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5924,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5927,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5929,1
    - Dst: ExecGetChildToRootMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5934,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5958,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5959,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5964,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5969,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - mtstate
    - estate
    - resultRelInfo
    argTypes:
    - ModifyTableState*
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5970
      start: 5910
    functionDepth: 8
    functionLinenumber: 5910
    functionLinenumberEnd: 5970
    functionName: ExecInitForPortionOf
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - elog
    - ExecInitExtraTupleSlot
    - Assert
    - RelationGetDescr
    - table_slot_create
    - makeNode
    - MemoryContextSwitchTo
    - ExecGetChildToRootMap
    linkageType: ''
    returnType: void
    signature: "void ExecInitForPortionOf(ModifyTableState *mtstate, EState *estate,\n\t\t\t\t\t
      ResultRelInfo *resultRelInfo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:49,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:56,1
    - Dst: ForeignScanState*::fdwroutine::IterateDirectModify
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:58,1
    - Dst: ForeignScanState*::fdwroutine::IterateForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:61,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:62,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:68,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - ForeignScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 72
    functionName: ForeignNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ForeignScanState*::fdwroutine::IterateDirectModify
    - MemoryContextSwitchTo
    - TupIsNull
    - ForeignScanState*::fdwroutine::IterateForeignScan
    - RelationGetRelid
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ForeignNext(ForeignScanState *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:91,1
    - Dst: FdwRoutine*::RecheckForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:102,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - ForeignScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 106
    functionName: ForeignRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 0
    functionsReached:
    - FdwRoutine*::RecheckForeignScan
    - ResetExprContext
    - ExecQual
    linkageType: ''
    returnType: bool
    signature: bool ForeignRecheck(ForeignScanState *node, TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:120,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 134
    functionName: ExecForeignScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecForeignScan(PlanState *pstate)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:151,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:156,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:166,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:174,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:176,1
    - Dst: GetFdwRoutineByServerId
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:181,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:192,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:193,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:203,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:203,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:204,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:217,1
    - Dst: ExecAssignScanProjectionInfoWithVarno
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:218,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:224,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:226,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:257,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:263,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:264,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:265,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:265,1
    - Dst: FdwRoutine*::BeginDirectModify
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:282,1
    - Dst: FdwRoutine*::BeginForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:285,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - ForeignScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 141
    functionDepth: 11
    functionLinenumber: 141
    functionLinenumberEnd: 288
    functionName: ExecInitForeignScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 1
    functionsReached:
    - ExecAssignScanProjectionInfoWithVarno
    - ExecTypeFromTL
    - elog
    - ExecInitNode
    - Assert
    - RelationGetDescr
    - CreateTupleDescCopy
    - outerPlanState
    - FdwRoutine*::BeginForeignScan
    - outerPlan
    - GetFdwRoutineByServerId
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - FdwRoutine*::BeginDirectModify
    - ExecInitQual
    - ExecOpenScanRelation
    - ExecAssignExprContext
    - makeNode
    - GetFdwRoutineForRelation
    linkageType: ''
    returnType: ForeignScanState
    signature: 'ForeignScanState *

      ExecInitForeignScan(ForeignScan *node, EState *estate, int eflags)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ForeignScanState*::fdwroutine::EndDirectModify
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:306,1
    - Dst: ForeignScanState*::fdwroutine::EndForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:309,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:312,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:313,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:313,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - node
    argTypes:
    - ForeignScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 296
    functionDepth: 4
    functionLinenumber: 296
    functionLinenumberEnd: 314
    functionName: ExecEndForeignScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 1
    functionsReached:
    - ForeignScanState*::fdwroutine::EndDirectModify
    - ExecEndNode
    - ForeignScanState*::fdwroutine::EndForeignScan
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndForeignScan(ForeignScanState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:327,1
    - Dst: ForeignScanState*::fdwroutine::ReScanForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:336,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:344,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:346,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - ForeignScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 322
    functionDepth: 4
    functionLinenumber: 322
    functionLinenumberEnd: 347
    functionName: ExecReScanForeignScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - ExecScanReScan
    - ForeignScanState*::fdwroutine::ReScanForeignScan
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanForeignScan(ForeignScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FdwRoutine*::EstimateDSMForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:362,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:363,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - ForeignScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 366
    functionName: ExecForeignScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - FdwRoutine*::EstimateDSMForeignScan
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecForeignScanEstimate(ForeignScanState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:384,1
    - Dst: FdwRoutine*::InitializeDSMForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:385,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:386,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - ForeignScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 388
    functionName: ExecForeignScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 0
    functionsReached:
    - FdwRoutine*::InitializeDSMForeignScan
    - shm_toc_insert
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: void ExecForeignScanInitializeDSM(ForeignScanState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:406,1
    - Dst: FdwRoutine*::ReInitializeDSMForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - ForeignScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 409
    functionName: ExecForeignScanReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 0
    functionsReached:
    - FdwRoutine*::ReInitializeDSMForeignScan
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: void ExecForeignScanReInitializeDSM(ForeignScanState *node, ParallelContext
      *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:428,1
    - Dst: FdwRoutine*::InitializeWorkerForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - ForeignScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 431
    functionName: ExecForeignScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 0
    functionsReached:
    - FdwRoutine*::InitializeWorkerForeignScan
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecForeignScanInitializeWorker(ForeignScanState *node,\n\t\t\t\t\t\t\t\tParallelWorkerContext
      *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FdwRoutine*::ShutdownForeignScan
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - ForeignScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 447
    functionName: ExecShutdownForeignScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 1
    functionsReached:
    - FdwRoutine*::ShutdownForeignScan
    linkageType: ''
    returnType: void
    signature: void ExecShutdownForeignScan(ForeignScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:461,1
    - Dst: FdwRoutine*::ForeignAsyncRequest
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 463
    functionName: ExecAsyncForeignScanRequest
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - FdwRoutine*::ForeignAsyncRequest
    linkageType: ''
    returnType: void
    signature: void ExecAsyncForeignScanRequest(AsyncRequest *areq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:477,1
    - Dst: FdwRoutine*::ForeignAsyncConfigureWait
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 479
    functionName: ExecAsyncForeignScanConfigureWait
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - FdwRoutine*::ForeignAsyncConfigureWait
    linkageType: ''
    returnType: void
    signature: void ExecAsyncForeignScanConfigureWait(AsyncRequest *areq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:493,1
    - Dst: FdwRoutine*::ForeignAsyncNotify
      Src: /src/postgres/src/backend/executor/nodeForeignscan.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 495
    functionName: ExecAsyncForeignScanNotify
    functionSourceFile: /src/postgres/src/backend/executor/nodeForeignscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - FdwRoutine*::ForeignAsyncNotify
    linkageType: ''
    returnType: void
    signature: void ExecAsyncForeignScanNotify(AsyncRequest *areq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:76,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:76,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:81,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:95,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:101,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:106,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:107,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:107,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:122,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:122,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:128,1
    - Dst: ExecConditionalAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:129,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:149,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:166,1
    - Dst: gather_merge_setup
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - GatherMerge*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 68
    functionDepth: 11
    functionLinenumber: 68
    functionLinenumberEnd: 174
    functionName: ExecInitGatherMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - palloc0_array
    - PrepareSortSupportFromOrderingOp
    - ExecGetResultType
    - ExecAssignExprContext
    - Assert
    - ExecInitResultTypeTL
    - ExecConditionalAssignProjectionInfo
    - makeNode
    - outerPlanState
    - outerPlan
    - innerPlan
    - gather_merge_setup
    linkageType: ''
    returnType: GatherMergeState
    signature: 'GatherMergeState *

      ExecInitGatherMerge(GatherMerge *node, EState *estate, int eflags)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:186,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:190,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:199,1
    - Dst: ExecInitParallelPlan
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:211,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:211,1
    - Dst: ExecParallelReinitialize
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:217,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:217,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:223,1
    - Dst: ExecParallelCreateReaders
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:237,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:241,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:242,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:264,1
    - Dst: gather_merge_getnext
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:270,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:271,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:282,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 183
    functionDepth: 4
    functionLinenumber: 183
    functionLinenumberEnd: 283
    functionName: ExecGatherMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 0
    functionsReached:
    - ExecParallelCreateReaders
    - ResetExprContext
    - memcpy
    - LaunchParallelWorkers
    - castNode
    - CHECK_FOR_INTERRUPTS
    - gather_merge_getnext
    - outerPlanState
    - ExecInitParallelPlan
    - ExecParallelReinitialize
    - palloc
    - ExecProject
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGatherMerge(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:294,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:294,1
    - Dst: ExecShutdownGatherMerge
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 291
    functionDepth: 4
    functionLinenumber: 291
    functionLinenumberEnd: 296
    functionName: ExecEndGatherMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - ExecEndNode
    - ExecShutdownGatherMerge
    linkageType: ''
    returnType: void
    signature: void ExecEndGatherMerge(GatherMergeState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecShutdownGatherMergeWorkers
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:307,1
    - Dst: ExecParallelCleanup
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 315
    functionName: ExecShutdownGatherMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 2
    functionsReached:
    - ExecShutdownGatherMergeWorkers
    - ExecParallelCleanup
    linkageType: ''
    returnType: void
    signature: void ExecShutdownGatherMerge(GatherMergeState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelFinish
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:327,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 333
    functionName: ExecShutdownGatherMergeWorkers
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - pfree
    - ExecParallelFinish
    linkageType: ''
    returnType: void
    signature: void ExecShutdownGatherMergeWorkers(GatherMergeState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:345,1
    - Dst: ExecShutdownGatherMergeWorkers
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:348,1
    - Dst: gather_merge_clear_tuples
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:351,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:365,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:379,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 341
    functionDepth: 3
    functionLinenumber: 341
    functionLinenumberEnd: 380
    functionName: ExecReScanGatherMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 0
    functionsReached:
    - gather_merge_clear_tuples
    - ExecShutdownGatherMergeWorkers
    - outerPlanState
    - ExecReScan
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void ExecReScanGatherMerge(GatherMergeState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:398,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:412,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:416,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:421,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:425,1
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - gm_state
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 395
    functionDepth: 8
    functionLinenumber: 395
    functionLinenumberEnd: 433
    functionName: gather_merge_setup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - ExecInitExtraTupleSlot
    - palloc0_array
    - binaryheap_allocate
    - castNode
    - palloc0
    linkageType: ''
    returnType: void
    signature: void gather_merge_setup(GatherMergeState *gm_state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:450,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:450,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:464,1
    - Dst: binaryheap_reset
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:468,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:480,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:486,1
    - Dst: gather_merge_readnext
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:489,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:490,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:491,1
    - Dst: load_tuple_array
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:499,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:508,1
    - Dst: binaryheap_build
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:516,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - gm_state
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 519
    functionName: gather_merge_init
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 0
    functionsReached:
    - gather_merge_readnext
    - load_tuple_array
    - Assert
    - Int32GetDatum
    - binaryheap_reset
    - castNode
    - CHECK_FOR_INTERRUPTS
    - binaryheap_add_unordered
    - ExecClearTuple
    - TupIsNull
    - binaryheap_build
    linkageType: ''
    returnType: void
    signature: void gather_merge_init(GatherMergeState *gm_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:535,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:537,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - gm_state
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 539
    functionName: gather_merge_clear_tuples
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - pfree
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void gather_merge_clear_tuples(GatherMergeState *gm_state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gather_merge_init
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:557,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:567,1
    - Dst: binaryheap_first
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:567,1
    - Dst: gather_merge_readnext
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:569,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:570,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:570,1
    - Dst: binaryheap_remove_first
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:574,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:578,1
    - Dst: gather_merge_clear_tuples
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:581,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:587,1
    - Dst: binaryheap_first
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - gm_state
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 546
    functionDepth: 3
    functionLinenumber: 546
    functionLinenumberEnd: 590
    functionName: gather_merge_getnext
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - gather_merge_clear_tuples
    - gather_merge_readnext
    - Int32GetDatum
    - binaryheap_replace_first
    - binaryheap_empty
    - binaryheap_first
    - gather_merge_init
    - DatumGetInt32
    - binaryheap_remove_first
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      gather_merge_getnext(GatherMergeState *gm_state)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gm_readnext_tuple
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:617,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - gm_state
    - reader
    argTypes:
    - GatherMergeState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 626
    functionName: load_tuple_array
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - gm_readnext_tuple
    linkageType: ''
    returnType: void
    signature: void load_tuple_array(GatherMergeState *gm_state, int reader)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:649,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:655,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:658,1
    - Dst: gm_readnext_tuple
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:685,1
    - Dst: load_tuple_array
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:696,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:699,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:702,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - gm_state
    - reader
    - nowait
    argTypes:
    - GatherMergeState*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 635
    functionDepth: 5
    functionLinenumber: 635
    functionLinenumberEnd: 708
    functionName: gather_merge_readnext
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 2
    functionsReached:
    - load_tuple_array
    - Assert
    - ExecProcNode
    - outerPlanState
    - ExecStoreMinimalTuple
    - TupIsNull
    - gm_readnext_tuple
    linkageType: ''
    returnType: bool
    signature: bool gather_merge_readnext(GatherMergeState *gm_state, int reader,
      bool nowait)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:721,1
    - Dst: TupleQueueReaderNext
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:732,1
    - Dst: heap_copy_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - gm_state
    - nreader
    - nowait
    - done
    argTypes:
    - GatherMergeState*
    - int
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 713
    functionDepth: 2
    functionLinenumber: 713
    functionLinenumberEnd: 739
    functionName: gm_readnext_tuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 2
    functionsReached:
    - heap_copy_minimal_tuple
    - TupleQueueReaderNext
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: MinimalTuple
    signature: "MinimalTuple gm_readnext_tuple(GatherMergeState *gm_state, int nreader,
      bool nowait,\n\t\t\t\t  bool *done)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:755,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:756,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:762,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:762,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:763,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:763,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:775,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:776,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:778,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:783,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - Datum
    - Datum
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 751
    functionDepth: 2
    functionLinenumber: 751
    functionLinenumberEnd: 788
    functionName: heap_compare_slots
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 0
    functionsReached:
    - INVERT_COMPARE_RESULT
    - slot_getattr
    - Assert
    - ApplySortComparator
    - DatumGetInt32
    - TupIsNull
    linkageType: ''
    returnType: int32
    signature: int32 heap_compare_slots(Datum a, Datum b, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: EMPTY_ENTRY_MEMORY_BYTES
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EMPTY_ENTRY_MEMORY_BYTES(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: CACHE_TUPLE_BYTES
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CACHE_TUPLE_BYTES(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 149
    functionName: SH_GET_HASH
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_GET_HASH(tb, a)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:168,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:175,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:182,1
    - Dst: datum_image_hash
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:184,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:198,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:204,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:204,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:211,1
    - Dst: murmurhash32
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:212,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - tb
    - key
    argTypes:
    - struct memoize_hash*
    - MemoizeKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 213
    functionName: MemoizeHash_hash
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - TupleDescCompactAttr
    - murmurhash32
    - MemoryContextSwitchTo
    - pg_rotate_left32
    - datum_image_hash
    - FunctionCall1Coll
    - DatumGetUInt32
    linkageType: ''
    returnType: uint32
    signature: uint32 MemoizeHash_hash(struct memoize_hash *tb, const MemoizeKey *key)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:231,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:239,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:241,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:242,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:259,1
    - Dst: datum_image_eq
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:260,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:268,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:275,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - tb
    - key1
    - key2
    argTypes:
    - struct memoize_hash*
    - MemoizeKey*
    - MemoizeKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 221
    functionDepth: 5
    functionLinenumber: 221
    functionLinenumberEnd: 277
    functionName: MemoizeHash_equal
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - ExecStoreMinimalTuple
    - datum_image_eq
    - ExecQual
    - TupleDescCompactAttr
    - slot_getallattrs
    linkageType: ''
    returnType: bool
    signature: "bool MemoizeHash_equal(struct memoize_hash *tb, const MemoizeKey *key1,\n\t\t\t\t
      \ const MemoizeKey *key2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:286,1
    - Dst: memoize_create
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mstate
    - size
    argTypes:
    - MemoizeState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 294
    functionName: build_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 1
    functionsReached:
    - Assert
    - memoize_create
    linkageType: ''
    returnType: void
    signature: void build_hash_table(MemoizeState *mstate, uint32 size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:309,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:316,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:320,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:324,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:329,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:330,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:331,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:332,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - mstate
    - key
    argTypes:
    - MemoizeState*
    - MemoizeKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 302
    functionDepth: 5
    functionLinenumber: 302
    functionLinenumberEnd: 336
    functionName: prepare_probe_slot
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - ExecStoreMinimalTuple
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - slot_getallattrs
    linkageType: ''
    returnType: void
    signature: void prepare_probe_slot(MemoizeState *mstate, MemoizeKey *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CACHE_TUPLE_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:354,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:357,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - mstate
    - entry
    argTypes:
    - MemoizeState*
    - MemoizeEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 368
    functionName: entry_purge_tuples
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - pfree
    - CACHE_TUPLE_BYTES
    linkageType: ''
    returnType: void
    signature: void entry_purge_tuples(MemoizeState *mstate, MemoizeEntry *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:379,1
    - Dst: entry_purge_tuples
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:382,1
    - Dst: EMPTY_ENTRY_MEMORY_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:389,1
    - Dst: memoize_delete_item
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:392,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:394,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - mstate
    - entry
    argTypes:
    - MemoizeState*
    - MemoizeEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 396
    functionName: remove_cache_entry
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - entry_purge_tuples
    - pfree
    - memoize_delete_item
    - dlist_delete
    - EMPTY_ENTRY_MEMORY_BYTES
    linkageType: ''
    returnType: void
    signature: void remove_cache_entry(MemoizeState *mstate, MemoizeEntry *entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:415,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - mstate
    argTypes:
    - MemoizeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 429
    functionName: cache_purge_all
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - dlist_init
    linkageType: ''
    returnType: void
    signature: void cache_purge_all(MemoizeState *mstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:452,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:455,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:457,1
    - Dst: prepare_probe_slot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:464,1
    - Dst: memoize_lookup
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:477,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:484,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:485,1
    - Dst: remove_cache_entry
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:502,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - mstate
    - specialkey
    argTypes:
    - MemoizeState*
    - MemoizeKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 440
    functionDepth: 6
    functionLinenumber: 440
    functionLinenumberEnd: 514
    functionName: cache_reduce_memory
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - memoize_lookup
    - dlist_container
    - unlikely
    - dlist_foreach_modify
    - remove_cache_entry
    - prepare_probe_slot
    linkageType: ''
    returnType: bool
    signature: bool cache_reduce_memory(MemoizeState *mstate, MemoizeKey *specialkey)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prepare_probe_slot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:536,1
    - Dst: memoize_insert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:542,1
    - Dst: dlist_move_tail
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:550,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:555,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:558,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:559,1
    - Dst: EMPTY_ENTRY_MEMORY_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:562,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:572,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:576,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:590,1
    - Dst: cache_reduce_memory
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:590,1
    - Dst: prepare_probe_slot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:607,1
    - Dst: memoize_lookup
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:610,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:611,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - mstate
    - found
    argTypes:
    - MemoizeState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 528
    functionDepth: 7
    functionLinenumber: 528
    functionLinenumberEnd: 616
    functionName: cache_lookup
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 1
    functionsReached:
    - memoize_insert
    - dlist_move_tail
    - memoize_lookup
    - Assert
    - cache_reduce_memory
    - MemoryContextSwitchTo
    - ExecCopySlotMinimalTuple
    - unlikely
    - palloc_object
    - dlist_push_tail
    - prepare_probe_slot
    - EMPTY_ENTRY_MEMORY_BYTES
    linkageType: ''
    returnType: MemoizeEntry
    signature: 'MemoizeEntry *

      cache_lookup(MemoizeState *mstate, bool *found)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:633,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:635,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:637,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:638,1
    - Dst: CACHE_TUPLE_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:642,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:659,1
    - Dst: cache_reduce_memory
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:669,1
    - Dst: prepare_probe_slot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:686,1
    - Dst: memoize_lookup
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:689,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:690,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - mstate
    - slot
    argTypes:
    - MemoizeState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 625
    functionDepth: 7
    functionLinenumber: 625
    functionLinenumberEnd: 695
    functionName: cache_store_tuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - Assert
    - memoize_lookup
    - MemoryContextSwitchTo
    - CACHE_TUPLE_BYTES
    - ExecCopySlotMinimalTuple
    - palloc_object
    - cache_reduce_memory
    - prepare_probe_slot
    linkageType: ''
    returnType: bool
    signature: bool cache_store_tuple(MemoizeState *mstate, TupleTableSlot *slot)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:700,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:705,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:711,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:721,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:724,1
    - Dst: build_hash_table
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:725,1
    - Dst: cache_lookup
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:741,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:761,1
    - Dst: entry_purge_tuples
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:785,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:789,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:790,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:791,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:800,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:813,1
    - Dst: cache_store_tuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:814,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:846,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:859,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:871,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:878,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:879,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:880,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:893,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:894,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:897,1
    - Dst: cache_store_tuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:897,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:911,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:924,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:925,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:926,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:933,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:946,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 94
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 697
    functionDepth: 8
    functionLinenumber: 697
    functionLinenumberEnd: 950
    functionName: ExecMemoize
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - elog
    - entry_purge_tuples
    - ResetExprContext
    - Assert
    - castNode
    - build_hash_table
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - ExecStoreMinimalTuple
    - outerPlanState
    - unlikely
    - cache_lookup
    - likely
    - cache_store_tuple
    - ExecCopySlot
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecMemoize(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:955,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:962,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:973,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:975,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:976,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:976,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:982,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:988,1
    - Dst: ExecTypeFromExprList
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:998,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:999,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1001,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1004,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1007,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1009,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1016,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1018,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1019,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1022,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1024,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1025,1
    - Dst: ExecBuildParamSetEqual
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1028,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1036,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1040,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1043,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1047,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1069,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Memoize*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 952
    functionDepth: 11
    functionLinenumber: 952
    functionLinenumberEnd: 1078
    functionName: ExecInitMemoize
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 1
    functionsReached:
    - get_hash_memory_limit
    - ExecInitNode
    - elog
    - ExecBuildParamSetEqual
    - Assert
    - pfree
    - ExecInitResultTupleSlotTL
    - dlist_init
    - outerPlanState
    - MakeSingleTupleTableSlot
    - outerPlan
    - fmgr_info
    - ExecTypeFromExprList
    - get_op_hash_functions
    - ExecCreateScanSlotFromOuterPlan
    - memset
    - AllocSetContextCreate
    - get_opcode
    - ExecAssignExprContext
    - makeNode
    - ExecInitExpr
    - palloc
    - list_nth
    linkageType: ''
    returnType: MemoizeState
    signature: 'MemoizeState *

      ExecInitMemoize(Memoize *node, EState *estate, int eflags)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memoize_start_iterate
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1092,1
    - Dst: memoize_iterate
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1095,1
    - Dst: EMPTY_ENTRY_MEMORY_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1099,1
    - Dst: CACHE_TUPLE_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1108,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1109,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1126,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1128,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1132,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1137,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - node
    argTypes:
    - MemoizeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1080
    functionDepth: 4
    functionLinenumber: 1080
    functionLinenumberEnd: 1138
    functionName: ExecEndMemoize
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 1
    functionsReached:
    - memcpy
    - Assert
    - memoize_start_iterate
    - memoize_iterate
    - CACHE_TUPLE_BYTES
    - MemoryContextDelete
    - ExecEndNode
    - outerPlanState
    - IsParallelWorker
    - EMPTY_ENTRY_MEMORY_BYTES
    linkageType: ''
    returnType: void
    signature: void ExecEndMemoize(MemoizeState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1143,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1157,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1163,1
    - Dst: cache_purge_all
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - node
    argTypes:
    - MemoizeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1140
    functionDepth: 3
    functionLinenumber: 1140
    functionLinenumberEnd: 1165
    functionName: ExecReScanMemoize
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - outerPlanState
    - bms_nonempty_difference
    - cache_purge_all
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanMemoize(MemoizeState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ntuples
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1172
    functionDepth: 0
    functionLinenumber: 1172
    functionLinenumberEnd: 1177
    functionName: ExecEstimateCacheEntryOverheadBytes
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double ExecEstimateCacheEntryOverheadBytes(double ntuples)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1199,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1200,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1201,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - MemoizeState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1190
    functionDepth: 1
    functionLinenumber: 1190
    functionLinenumberEnd: 1203
    functionName: ExecMemoizeEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecMemoizeEstimate(MemoizeState *node, ParallelContext *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1222,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1224,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - MemoizeState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1228
    functionName: ExecMemoizeInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: void ExecMemoizeInitializeDSM(MemoizeState *node, ParallelContext *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - MemoizeState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1236
    functionDepth: 1
    functionLinenumber: 1236
    functionLinenumberEnd: 1241
    functionName: ExecMemoizeInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: void ExecMemoizeInitializeWorker(MemoizeState *node, ParallelWorkerContext
      *pwcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1260,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - MemoizeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1249
    functionDepth: 0
    functionLinenumber: 1249
    functionLinenumberEnd: 1263
    functionName: ExecMemoizeRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecMemoizeRetrieveInstrumentation(MemoizeState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execPartition.c:232,1
    - Dst: ExecInitPartitionDispatchInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:242,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execPartition.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - rel
    argTypes:
    - EState*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 246
    functionName: ExecSetupPartitionTupleRouting
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 6
    functionsReached:
    - palloc0_object
    - ExecInitPartitionDispatchInfo
    - RelationGetRelid
    linkageType: ''
    returnType: PartitionTupleRouting
    signature: 'PartitionTupleRouting *

      ExecSetupPartitionTupleRouting(EState *estate, Relation rel)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execPartition.c:279,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:287,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/executor/execPartition.c:287,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/execPartition.c:294,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/execPartition.c:303,1
    - Dst: FormPartitionKeyDatum
      Src: /src/postgres/src/backend/executor/execPartition.c:317,1
    - Dst: get_partition_for_tuple
      Src: /src/postgres/src/backend/executor/execPartition.c:324,1
    - Dst: ExecBuildSlotPartitionKeyDescription
      Src: /src/postgres/src/backend/executor/execPartition.c:328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:330,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execPartition.c:330,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execPartition.c:330,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execPartition.c:331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execPartition.c:332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execPartition.c:333,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execPartition.c:334,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execPartition.c:336,1
    - Dst: errtable
      Src: /src/postgres/src/backend/executor/execPartition.c:338,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execPartition.c:348,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:351,1
    - Dst: ExecLookupResultRelByOid
      Src: /src/postgres/src/backend/executor/execPartition.c:361,1
    - Dst: CheckValidResultRel
      Src: /src/postgres/src/backend/executor/execPartition.c:369,1
    - Dst: ExecInitRoutingInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:377,1
    - Dst: ExecInitPartitionInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:388,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execPartition.c:398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:401,1
    - Dst: ExecInitPartitionDispatchInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:425,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execPartition.c:442,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execPartition.c:445,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execPartition.c:473,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execPartition.c:476,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/execPartition.c:482,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execPartition.c:488,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:491,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 64
    argCount: 5
    argNames:
    - mtstate
    - rootResultRelInfo
    - proute
    - slot
    - estate
    argTypes:
    - ModifyTableState*
    - ResultRelInfo*
    - PartitionTupleRouting*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 267
    functionDepth: 5
    functionLinenumber: 267
    functionLinenumberEnd: 494
    functionName: ExecFindPartition
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - execute_attr_map_slot
    - errcode
    - RelationGetRelationName
    - Assert
    - ExecInitPartitionDispatchInfo
    - errtable
    - ExecInitPartitionInfo
    - errmsg
    - ExecClearTuple
    - OidIsValid
    - get_partition_for_tuple
    - ExecPartitionCheck
    - ExecLookupResultRelByOid
    - ereport
    - CHECK_FOR_INTERRUPTS
    - ExecInitRoutingInfo
    - ExecBuildSlotPartitionKeyDescription
    - GetPerTupleExprContext
    - FormPartitionKeyDatum
    - CheckValidResultRel
    - MemoryContextSwitchTo
    - ExecGetRootToChildMap
    - likely
    - errdetail
    - GetPerTupleMemoryContext
    - RelationGetRelid
    linkageType: ''
    returnType: ResultRelInfo
    signature: "ResultRelInfo *\nExecFindPartition(ModifyTableState *mtstate,\n\t\t\t\t
      \ ResultRelInfo *rootResultRelInfo,\n\t\t\t\t  PartitionTupleRouting *proute,\n\t\t\t\t
      \ TupleTableSlot *slot, EState *estate)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:509,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/executor/execPartition.c:545,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/executor/execPartition.c:545,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/executor/execPartition.c:546,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/executor/execPartition.c:549,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/executor/execPartition.c:549,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/executor/execPartition.c:550,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 4
    argNames:
    - arbiterIndexRelation
    - arbiterIndexInfo
    - indexRelation
    - indexInfo
    argTypes:
    - Relation
    - IndexInfo*
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 503
    functionDepth: 7
    functionLinenumber: 503
    functionLinenumberEnd: 553
    functionName: IsIndexCompatibleAsArbiter
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 0
    functionsReached:
    - Assert
    - list_difference
    - RelationGetIndexPredicate
    - RelationGetIndexExpressions
    linkageType: ''
    returnType: bool
    signature: "bool IsIndexCompatibleAsArbiter(Relation arbiterIndexRelation,\n\t\t\t\t\t\t
      \  IndexInfo *arbiterIndexInfo,\n\t\t\t\t\t\t   Relation indexRelation,\n\t\t\t\t\t\t
      \  IndexInfo *indexInfo)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:580,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execPartition.c:582,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:584,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:585,1
    - Dst: CheckValidResultRel
      Src: /src/postgres/src/backend/executor/execPartition.c:596,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/executor/execPartition.c:607,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:629,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:630,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:631,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:633,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:634,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:636,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:637,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execPartition.c:648,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/execPartition.c:654,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:654,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:655,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:658,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:661,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:667,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:668,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execPartition.c:668,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:692,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:693,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:694,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:696,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:697,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:699,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:700,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execPartition.c:708,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/execPartition.c:715,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:715,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:716,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:719,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:734,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:736,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:739,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:740,1
    - Dst: ExecInitRoutingInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:744,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:752,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execPartition.c:795,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/executor/execPartition.c:796,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/executor/execPartition.c:797,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:800,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:800,1
    - Dst: foreach_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:802,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:804,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:806,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:806,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:807,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execPartition.c:808,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execPartition.c:814,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execPartition.c:816,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:839,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:839,1
    - Dst: IsIndexCompatibleAsArbiter
      Src: /src/postgres/src/backend/executor/execPartition.c:858,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:863,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execPartition.c:871,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execPartition.c:872,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execPartition.c:873,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:881,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:882,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:883,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:893,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execPartition.c:896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:898,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:900,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execPartition.c:914,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/execPartition.c:954,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/execPartition.c:957,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:957,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:958,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:961,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:964,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:968,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:971,1
    - Dst: adjust_partition_colnos
      Src: /src/postgres/src/backend/executor/execPartition.c:979,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execPartition.c:984,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/execPartition.c:989,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/execPartition.c:1013,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1013,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1014,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/execPartition.c:1017,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:1019,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:1022,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:1026,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:1029,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:1033,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1047,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:1049,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execPartition.c:1063,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/execPartition.c:1070,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1070,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1071,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execPartition.c:1074,1
    - Dst: ExecInitMergeTupleSlots
      Src: /src/postgres/src/backend/executor/execPartition.c:1075,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:1079,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execPartition.c:1079,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:1082,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:1086,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/execPartition.c:1091,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:1091,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:1095,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:1100,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1113,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1116,1
    - Dst: adjust_partition_colnos_using_map
      Src: /src/postgres/src/backend/executor/execPartition.c:1126,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/execPartition.c:1129,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1132,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1143,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:1148,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:1151,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:1154,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1157,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 140
    argCount: 6
    argNames:
    - mtstate
    - estate
    - proute
    - dispatch
    - rootResultRelInfo
    - partidx
    argTypes:
    - ModifyTableState*
    - EState*
    - PartitionTupleRouting*
    - PartitionDispatch
    - ResultRelInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 563
    functionDepth: 8
    functionLinenumber: 563
    functionLinenumberEnd: 1160
    functionName: ExecInitPartitionInfo
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - ExecOpenIndices
    - lappend_int
    - copyObject
    - adjust_partition_colnos_using_map
    - ExecBuildUpdateProjection
    - adjust_partition_colnos
    - foreach_oid
    - IsIndexCompatibleAsArbiter
    - lappend_oid
    - elog
    - Assert
    - linitial
    - RelationGetDescr
    - table_open
    - linitial_oid
    - ExecBuildProjectionInfo
    - list_length
    - list_member_oid
    - list_free
    - build_attrmap_by_name
    - lappend
    - table_slot_create
    - RelationGetForm
    - unlikely
    - lfirst
    - ExecInitRoutingInfo
    - InitResultRelInfo
    - ExecInitQual
    - get_partition_ancestors
    - lfirst_node
    - ExecInitMergeTupleSlots
    - INJECTION_POINT
    - castNode
    - CheckValidResultRel
    - makeNode
    - MemoryContextSwitchTo
    - ExecGetRootToChildMap
    - map_variable_attnos
    - RelationGetRelid
    linkageType: ''
    returnType: ResultRelInfo
    signature: "ResultRelInfo *\nExecInitPartitionInfo(ModifyTableState *mtstate,
      EState *estate,\n\t\t\t\t\t  PartitionTupleRouting *proute,\n\t\t\t\t\t  PartitionDispatch
      dispatch,\n\t\t\t\t\t  ResultRelInfo *rootResultRelInfo,\n\t\t\t\t\t  int partidx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:667,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:668,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execPartition.c:668,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 665
    functionDepth: 7
    functionLinenumber: 665
    functionLinenumberEnd: 672
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 411
    functionsReached:
    - ExecInitQual
    - lappend
    - castNode
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(ll, wcoList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:839,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:839,1
    - Dst: IsIndexCompatibleAsArbiter
      Src: /src/postgres/src/backend/executor/execPartition.c:858,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:863,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 831
    functionDepth: 8
    functionLinenumber: 831
    functionLinenumberEnd: 869
    functionName: foreach_int
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 0
    functionsReached:
    - Assert
    - lappend_oid
    - list_member_oid
    - IsIndexCompatibleAsArbiter
    linkageType: ''
    returnType: void
    signature: void foreach_int(unparented_i, unparented_idxs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsIndexCompatibleAsArbiter
      Src: /src/postgres/src/backend/executor/execPartition.c:858,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:863,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 846
    functionDepth: 8
    functionLinenumber: 846
    functionLinenumberEnd: 868
    functionName: foreach_int
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 0
    functionsReached:
    - lappend_oid
    - IsIndexCompatibleAsArbiter
    linkageType: ''
    returnType: void
    signature: void foreach_int(arbiter_i, arbiters_listidxs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/execPartition.c:1091,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:1091,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:1095,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:1100,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1113,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1116,1
    - Dst: adjust_partition_colnos_using_map
      Src: /src/postgres/src/backend/executor/execPartition.c:1126,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/execPartition.c:1129,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1132,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1143,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:1148,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:1151,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:1154,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1088
    functionDepth: 7
    functionLinenumber: 1088
    functionLinenumberEnd: 1155
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 411
    functionsReached:
    - elog
    - copyObject
    - adjust_partition_colnos_using_map
    - RelationGetDescr
    - ExecBuildUpdateProjection
    - lappend
    - makeNode
    - ExecBuildProjectionInfo
    - lfirst
    - RelationGetForm
    - map_variable_attnos
    - ExecInitQual
    linkageType: ''
    returnType: void
    signature: void foreach(lc, firstMergeActionList)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1180,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execPartition.c:1189,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execPartition.c:1198,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::BeginForeignInsert
      Src: /src/postgres/src/backend/executor/execPartition.c:1209,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::GetForeignModifyBatchSize
      Src: /src/postgres/src/backend/executor/execPartition.c:1222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1226,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1233,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:1243,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:1244,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1250,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1253,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1262,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 7
    argNames:
    - mtstate
    - estate
    - proute
    - dispatch
    - partRelInfo
    - partidx
    - is_borrowed_rel
    argTypes:
    - ModifyTableState*
    - EState*
    - PartitionTupleRouting*
    - PartitionDispatch
    - ResultRelInfo*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1168
    functionDepth: 5
    functionLinenumber: 1168
    functionLinenumberEnd: 1263
    functionName: ExecInitRoutingInfo
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - ResultRelInfo*::ri_FdwRoutine::BeginForeignInsert
    - Assert
    - ResultRelInfo*::ri_FdwRoutine::GetForeignModifyBatchSize
    - table_slot_create
    - palloc_array
    - repalloc
    - MemoryContextSwitchTo
    - ExecGetRootToChildMap
    linkageType: ''
    returnType: void
    signature: "void ExecInitRoutingInfo(ModifyTableState *mtstate,\n\t\t\t\t\tEState
      *estate,\n\t\t\t\t\tPartitionTupleRouting *proute,\n\t\t\t\t\tPartitionDispatch
      dispatch,\n\t\t\t\t\tResultRelInfo *partRelInfo,\n\t\t\t\t\tint partidx,\n\t\t\t\t\tbool
      is_borrowed_rel)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CreatePartitionDirectory
      Src: /src/postgres/src/backend/executor/execPartition.c:1296,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/execPartition.c:1297,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1299,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execPartition.c:1306,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execPartition.c:1307,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/executor/execPartition.c:1310,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1312,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:1315,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1320,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execPartition.c:1331,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1331,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execPartition.c:1335,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execPartition.c:1348,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:1359,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:1360,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1366,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1369,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:1382,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1384,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1396,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1400,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 45
    argCount: 6
    argNames:
    - estate
    - proute
    - partoid
    - parent_pd
    - partidx
    - rootResultRelInfo
    argTypes:
    - EState*
    - PartitionTupleRouting*
    - Oid
    - PartitionDispatch
    - int
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1274
    functionDepth: 6
    functionLinenumber: 1274
    functionLinenumberEnd: 1403
    functionName: ExecInitPartitionDispatchInfo
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - IsolationUsesXactSnapshot
    - Assert
    - RelationGetDescr
    - PartitionDirectoryLookup
    - palloc_array
    - MemoryContextSwitchTo
    - table_open
    - MakeSingleTupleTableSlot
    - repalloc
    - makeNode
    - memset
    - RelationGetPartitionKey
    - palloc
    - InitResultRelInfo
    - build_attrmap_by_name_if_req
    - CreatePartitionDirectory
    - RelationGetRelid
    linkageType: ''
    returnType: PartitionDispatch
    signature: "PartitionDispatch ExecInitPartitionDispatchInfo(EState *estate,\n\t\t\t\t\t\t\t
      \ PartitionTupleRouting *proute, Oid partoid,\n\t\t\t\t\t\t\t  PartitionDispatch
      parent_pd, int partidx,\n\t\t\t\t\t\t\t  ResultRelInfo *rootResultRelInfo)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_close
      Src: /src/postgres/src/backend/executor/execPartition.c:1428,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execPartition.c:1431,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::EndForeignInsert
      Src: /src/postgres/src/backend/executor/execPartition.c:1441,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/executor/execPartition.c:1451,1
    - Dst: table_close
      Src: /src/postgres/src/backend/executor/execPartition.c:1452,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - mtstate
    - proute
    argTypes:
    - ModifyTableState*
    - PartitionTupleRouting*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1411
    functionDepth: 3
    functionLinenumber: 1411
    functionLinenumberEnd: 1454
    functionName: ExecCleanupTupleRouting
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - ResultRelInfo*::ri_FdwRoutine::EndForeignInsert
    - ExecCloseIndices
    - table_close
    - ExecDropSingleTupleTableSlot
    linkageType: ''
    returnType: void
    signature: "void ExecCleanupTupleRouting(ModifyTableState *mtstate,\n\t\t\t\t\t\tPartitionTupleRouting
      *proute)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1485,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execPartition.c:1486,1
    - Dst: ExecPrepareExprList
      Src: /src/postgres/src/backend/executor/execPartition.c:1489,1
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/execPartition.c:1492,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/execPartition.c:1502,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1508,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/execPartition.c:1509,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:1509,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execPartition.c:1510,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/execPartition.c:1512,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1519,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 5
    argNames:
    - pd
    - slot
    - estate
    - values
    - isnull
    argTypes:
    - PartitionDispatch
    - TupleTableSlot*
    - EState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1472
    functionDepth: 7
    functionLinenumber: 1472
    functionLinenumberEnd: 1520
    functionName: FormPartitionKeyDatum
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - elog
    - slot_getattr
    - Assert
    - GetPerTupleExprContext
    - lnext
    - list_head
    - lfirst
    - ExecEvalExprSwitchContext
    - ExecPrepareExprList
    linkageType: ''
    returnType: void
    signature: "void FormPartitionKeyDatum(PartitionDispatch pd,\n\t\t\t\t\t  TupleTableSlot
      *slot,\n\t\t\t\t\t  EState *estate,\n\t\t\t\t\t  Datum *values,\n\t\t\t\t\t
      \ bool *isnull)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: compute_partition_hash_value
      Src: /src/postgres/src/backend/executor/execPartition.c:1598,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/executor/execPartition.c:1614,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execPartition.c:1640,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/execPartition.c:1640,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/executor/execPartition.c:1651,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/executor/execPartition.c:1691,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/executor/execPartition.c:1710,1
    - Dst: partition_range_datum_bsearch
      Src: /src/postgres/src/backend/executor/execPartition.c:1723,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1741,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1760,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 61
    argCount: 3
    argNames:
    - pd
    - values
    - isnull
    argTypes:
    - PartitionDispatch
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1569
    functionDepth: 1
    functionLinenumber: 1569
    functionLinenumberEnd: 1780
    functionName: get_partition_for_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - elog
    - partition_rbound_datum_cmp
    - Assert
    - partition_range_datum_bsearch
    - partition_list_bsearch
    - DatumGetInt32
    - FunctionCall2Coll
    - compute_partition_hash_value
    - partition_bound_accepts_nulls
    linkageType: ''
    returnType: int
    signature: int get_partition_for_tuple(PartitionDispatch pd, const Datum *values,
      const bool *isnull)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:1796,1
    - Dst: get_partition_natts
      Src: /src/postgres/src/backend/executor/execPartition.c:1797,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execPartition.c:1799,1
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/executor/execPartition.c:1802,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/executor/execPartition.c:1806,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execPartition.c:1806,1
    - Dst: get_partition_col_attnum
      Src: /src/postgres/src/backend/executor/execPartition.c:1815,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/executor/execPartition.c:1823,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execPartition.c:1823,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1829,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1830,1
    - Dst: pg_get_partkeydef_columns
      Src: /src/postgres/src/backend/executor/execPartition.c:1831,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1845,1
    - Dst: get_partition_col_typid
      Src: /src/postgres/src/backend/executor/execPartition.c:1845,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/executor/execPartition.c:1847,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execPartition.c:1851,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execPartition.c:1854,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1856,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/executor/execPartition.c:1859,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1860,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execPartition.c:1861,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/executor/execPartition.c:1865,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - rel
    - values
    - isnull
    - maxfieldlen
    argTypes:
    - Relation
    - Datum*
    - bool*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1868
      start: 1789
    functionDepth: 3
    functionLinenumber: 1789
    functionLinenumberEnd: 1868
    functionName: ExecBuildSlotPartitionKeyDescription
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - GetUserId
    - pg_attribute_aclcheck
    - appendBinaryStringInfo
    - get_partition_col_typid
    - appendStringInfoString
    - pg_class_aclcheck
    - OidOutputFunctionCall
    - get_partition_natts
    - appendStringInfoChar
    - initStringInfo
    - strlen
    - pg_get_partkeydef_columns
    - check_enable_rls
    - appendStringInfo
    - get_partition_col_attnum
    - pg_mbcliplen
    - RelationGetPartitionKey
    - getTypeOutputInfo
    - RelationGetRelid
    linkageType: ''
    returnType: char
    signature: "char *\nExecBuildSlotPartitionKeyDescription(Relation rel,\n\t\t\t\t\t\t\t\t\t
      const Datum *values,\n\t\t\t\t\t\t\t\t\t const bool *isnull,\n\t\t\t\t\t\t\t\t\t
      int maxfieldlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetChildToRootMap
      Src: /src/postgres/src/backend/executor/execPartition.c:1880,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1882,1
    - Dst: adjust_partition_colnos_using_map
      Src: /src/postgres/src/backend/executor/execPartition.c:1884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - colnos
    - leaf_part_rri
    argTypes:
    - List*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1885
      start: 1877
    functionDepth: 6
    functionLinenumber: 1877
    functionLinenumberEnd: 1885
    functionName: adjust_partition_colnos
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - Assert
    - adjust_partition_colnos_using_map
    - ExecGetChildToRootMap
    linkageType: ''
    returnType: List
    signature: 'List *

      adjust_partition_colnos(List *colnos, ResultRelInfo *leaf_part_rri)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1900,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execPartition.c:1904,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1909,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execPartition.c:1911,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - colnos
    - attrMap
    argTypes:
    - List*
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1894
    functionDepth: 6
    functionLinenumber: 1894
    functionLinenumberEnd: 1916
    functionName: adjust_partition_colnos_using_map
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 3
    functionsReached:
    - Assert
    - lappend_int
    - elog
    - lfirst_int
    linkageType: ''
    returnType: List
    signature: 'List *

      adjust_partition_colnos_using_map(List *colnos, AttrMap *attrMap)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execPartition.c:1904,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1909,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execPartition.c:1911,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1902
    functionDepth: 6
    functionLinenumber: 1902
    functionLinenumberEnd: 1913
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 411
    functionsReached:
    - elog
    - lappend_int
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, colnos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execPartition.c:1999,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:2001,1
    - Dst: CreatePartitionPruneState
      Src: /src/postgres/src/backend/executor/execPartition.c:2008,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:2010,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/execPartition.c:2018,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/execPartition.c:2023,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:2025,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1994
    functionDepth: 6
    functionLinenumber: 1994
    functionLinenumberEnd: 2028
    functionName: ExecDoInitialPruning
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - ExecFindMatchingSubPlans
    - foreach
    - lappend
    - CreatePartitionPruneState
    - bms_add_members
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void ExecDoInitialPruning(EState *estate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/execPartition.c:2062,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/executor/execPartition.c:2066,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:2067,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/executor/execPartition.c:2068,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/executor/execPartition.c:2069,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/execPartition.c:2076,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2077,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/execPartition.c:2081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2087,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/execPartition.c:2088,1
    - Dst: InitExecPartitionPruneContexts
      Src: /src/postgres/src/backend/executor/execPartition.c:2105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - planstate
    - n_total_subplans
    - part_prune_index
    - relids
    - initially_valid_subplans
    argTypes:
    - PlanState*
    - int
    - int
    - Bitmapset*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2110
      start: 2050
    functionDepth: 4
    functionLinenumber: 2050
    functionLinenumberEnd: 2110
    functionName: ExecInitPartitionExecPruning
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - elog
    - bms_add_range
    - Assert
    - bmsToString
    - InitExecPartitionPruneContexts
    - list_nth_node
    - bms_equal
    - list_nth
    linkageType: ''
    returnType: PartitionPruneState
    signature: "PartitionPruneState *\nExecInitPartitionExecPruning(PlanState *planstate,\n\t\t\t\t\t\t\t
      int n_total_subplans,\n\t\t\t\t\t\t\t int part_prune_index,\n\t\t\t\t\t\t\t
      Bitmapset *relids,\n\t\t\t\t\t\t\t Bitmapset **initially_valid_subplans)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/execPartition.c:2157,1
    - Dst: CreatePartitionDirectory
      Src: /src/postgres/src/backend/executor/execPartition.c:2162,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:2164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2165,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:2171,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2178,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/execPartition.c:2190,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execPartition.c:2195,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:2197,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:2198,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:2204,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:2212,1
    - Dst: ExecGetRangeTableRelation
      Src: /src/postgres/src/backend/executor/execPartition.c:2224,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:2229,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/executor/execPartition.c:2230,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:2252,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/executor/execPartition.c:2255,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execPartition.c:2260,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:2279,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:2280,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execPartition.c:2286,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2342,1
    - Dst: InitPartitionPruneContext
      Src: /src/postgres/src/backend/executor/execPartition.c:2357,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/execPartition.c:2376,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2387,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2393,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 80
    argCount: 3
    argNames:
    - estate
    - pruneinfo
    - all_leafpart_rtis
    argTypes:
    - EState*
    - PartitionPruneInfo*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2404
      start: 2144
    functionDepth: 8
    functionLinenumber: 2144
    functionLinenumberEnd: 2404
    functionName: CreatePartitionPruneState
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - bms_copy
    - palloc_array
    - bms_add_members
    - bms_add_member
    - foreach
    - memcpy
    - ExecGetRangeTableRelation
    - Assert
    - PartitionDirectoryLookup
    - OidIsValid
    - list_length
    - bms_next_member
    - memcmp
    - InitPartitionPruneContext
    - AllocSetContextCreate
    - lfirst_node
    - CreateExprContext
    - RelationGetPartitionKey
    - palloc
    - CreatePartitionDirectory
    linkageType: ''
    returnType: PartitionPruneState
    signature: "PartitionPruneState *\nCreatePartitionPruneState(EState *estate, PartitionPruneInfo
      *pruneinfo,\n\t\t\t\t\t\t  Bitmapset **all_leafpart_rtis)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:2212,1
    - Dst: ExecGetRangeTableRelation
      Src: /src/postgres/src/backend/executor/execPartition.c:2224,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:2229,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/executor/execPartition.c:2230,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:2252,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/executor/execPartition.c:2255,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execPartition.c:2260,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:2279,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execPartition.c:2280,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execPartition.c:2286,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2342,1
    - Dst: InitPartitionPruneContext
      Src: /src/postgres/src/backend/executor/execPartition.c:2357,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/execPartition.c:2376,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2387,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2393,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2399
      start: 2210
    functionDepth: 5
    functionLinenumber: 2210
    functionLinenumberEnd: 2399
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 413
    functionsReached:
    - memcpy
    - ExecGetRangeTableRelation
    - palloc_array
    - PartitionDirectoryLookup
    - bms_copy
    - bms_add_members
    - RelationGetPartitionKey
    - bms_next_member
    - OidIsValid
    - memcmp
    - InitPartitionPruneContext
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, partrelpruneinfos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:2421,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execPartition.c:2431,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execPartition.c:2438,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:2441,1
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/execPartition.c:2442,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execPartition.c:2446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2449,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:2449,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2453,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:2458,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execPartition.c:2461,1
    - Dst: PruneCxtStateIdx
      Src: /src/postgres/src/backend/executor/execPartition.c:2463,1
    - Dst: ExecInitExprWithParams
      Src: /src/postgres/src/backend/executor/execPartition.c:2476,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execPartition.c:2480,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/execPartition.c:2482,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 6
    argNames:
    - context
    - pruning_steps
    - partdesc
    - partkey
    - planstate
    - econtext
    argTypes:
    - PartitionPruneContext*
    - List*
    - PartitionDesc
    - PartitionKey
    - PlanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2486
      start: 2409
    functionDepth: 3
    functionLinenumber: 2409
    functionLinenumberEnd: 2486
    functionName: InitPartitionPruneContext
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - palloc0_array
    - Assert
    - bms_is_member
    - lnext
    - lfirst
    - list_head
    - ExecInitExpr
    - list_length
    - ExecInitExprWithParams
    - IsA
    - PruneCxtStateIdx
    linkageType: ''
    returnType: void
    signature: "void InitPartitionPruneContext(PartitionPruneContext *context,\n\t\t\t\t\t\t
      \ List *pruning_steps,\n\t\t\t\t\t\t  PartitionDesc partdesc,\n\t\t\t\t\t\t
      \ PartitionKey partkey,\n\t\t\t\t\t\t  PlanState *planstate,\n\t\t\t\t\t\t  ExprContext
      *econtext)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:2441,1
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/execPartition.c:2442,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execPartition.c:2446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2449,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:2449,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2453,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:2458,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execPartition.c:2461,1
    - Dst: PruneCxtStateIdx
      Src: /src/postgres/src/backend/executor/execPartition.c:2463,1
    - Dst: ExecInitExprWithParams
      Src: /src/postgres/src/backend/executor/execPartition.c:2476,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execPartition.c:2480,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/execPartition.c:2482,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2485
      start: 2439
    functionDepth: 3
    functionLinenumber: 2439
    functionLinenumberEnd: 2485
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 413
    functionsReached:
    - Assert
    - bms_is_member
    - lnext
    - lfirst
    - list_head
    - ExecInitExpr
    - list_length
    - ExecInitExprWithParams
    - IsA
    - PruneCxtStateIdx
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pruning_steps)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2522,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2523,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/execPartition.c:2530,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execPartition.c:2539,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2544,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:2581,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/executor/execPartition.c:2582,1
    - Dst: InitPartitionPruneContext
      Src: /src/postgres/src/backend/executor/execPartition.c:2585,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execPartition.c:2595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2613,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2618,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execPartition.c:2626,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2628,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2642,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2643,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execPartition.c:2646,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execPartition.c:2649,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 4
    argNames:
    - prunestate
    - parent_plan
    - initially_valid_subplans
    - n_total_subplans
    argTypes:
    - PartitionPruneState*
    - PlanState*
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2651
      start: 2509
    functionDepth: 4
    functionLinenumber: 2509
    functionLinenumberEnd: 2651
    functionName: InitExecPartitionPruneContexts
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - palloc0_array
    - Assert
    - pfree
    - bms_num_members
    - bms_free
    - PartitionDirectoryLookup
    - RelationGetPartitionKey
    - bms_next_member
    - bms_is_empty
    - InitPartitionPruneContext
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: "void InitExecPartitionPruneContexts(PartitionPruneState *prunestate,\n\t\t\t\t\t\t\t
      \  PlanState *parent_plan,\n\t\t\t\t\t\t\t   Bitmapset *initially_valid_subplans,\n\t\t\t\t\t\t\t
      \  int n_total_subplans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2680,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2681,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:2687,1
    - Dst: find_matching_subplans_recurse
      Src: /src/postgres/src/backend/executor/execPartition.c:2704,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/execPartition.c:2713,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/execPartition.c:2717,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:2719,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2722,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2724,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/execPartition.c:2726,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - prunestate
    - initial_prune
    - validsubplan_rtis
    argTypes:
    - PartitionPruneState*
    - bool
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2729
      start: 2666
    functionDepth: 4
    functionLinenumber: 2666
    functionLinenumberEnd: 2729
    functionName: ExecFindMatchingSubPlans
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - ResetExprContext
    - MemoryContextReset
    - Assert
    - bms_copy
    - MemoryContextSwitchTo
    - bms_add_members
    - find_matching_subplans_recurse
    linkageType: ''
    returnType: Bitmapset
    signature: "Bitmapset *\nExecFindMatchingSubPlans(PartitionPruneState *prunestate,\n\t\t\t\t\t\t
      bool initial_prune,\n\t\t\t\t\t\t Bitmapset **validsubplan_rtis)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execPartition.c:2750,1
    - Dst: get_matching_partitions
      Src: /src/postgres/src/backend/executor/execPartition.c:2758,1
    - Dst: get_matching_partitions
      Src: /src/postgres/src/backend/executor/execPartition.c:2761,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2768,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2772,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2780,1
    - Dst: find_matching_subplans_recurse
      Src: /src/postgres/src/backend/executor/execPartition.c:2788,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 5
    argNames:
    - prunedata
    - pprune
    - initial_prune
    - validsubplans
    - validsubplan_rtis
    argTypes:
    - PartitionPruningData*
    - PartitionedRelPruningData*
    - bool
    - Bitmapset**
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2804
      start: 2739
    functionDepth: 3
    functionLinenumber: 2739
    functionLinenumberEnd: 2804
    functionName: find_matching_subplans_recurse
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - get_matching_partitions
    - bms_next_member
    - bms_add_member
    - find_matching_subplans_recurse
    linkageType: ''
    returnType: void
    signature: "void find_matching_subplans_recurse(PartitionPruningData *prunedata,\n\t\t\t\t\t\t\t
      \  PartitionedRelPruningData *pprune,\n\t\t\t\t\t\t\t   bool initial_prune,\n\t\t\t\t\t\t\t
      \  Bitmapset **validsubplans,\n\t\t\t\t\t\t\t   Bitmapset **validsubplan_rtis)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 244
    functionName: NN_POS_TO_BYTES
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NN_POS_TO_BYTES(pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 246
    functionName: NN_BYTES_TO_POS
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NN_BYTES_TO_POS(bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pos
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 248
    functionName: NN_SHIFT
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NN_SHIFT(pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:266,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:272,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:273,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - winstate
    - perfuncstate
    - peraggstate
    argTypes:
    - WindowAggState*
    - WindowStatePerFunc
    - WindowStatePerAgg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 282
    functionName: initialize_windowaggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - datumCopy
    - MemoryContextReset
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void initialize_windowaggregate(WindowAggState *winstate,\n\t\t\t\t\t\t
      \  WindowStatePerFunc perfuncstate,\n\t\t\t\t\t\t   WindowStatePerAgg peraggstate)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:293,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:303,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:309,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:311,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:313,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:320,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:322,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:324,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:340,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:356,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:357,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:362,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:376,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:377,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:377,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:386,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:393,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:400,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:401,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:402,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:403,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:422,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:422,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:426,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:427,1
    - Dst: MemoryContextGetParent
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:430,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:430,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:433,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:439,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:442,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:444,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:444,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:448,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 3
    argNames:
    - winstate
    - perfuncstate
    - peraggstate
    argTypes:
    - WindowAggState*
    - WindowStatePerFunc
    - WindowStatePerAgg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 451
    functionName: advance_windowaggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - errcode
    - MemoryContextGetParent
    - DatumGetBool
    - foreach
    - Assert
    - pfree
    - DatumIsReadWriteExpandedObject
    - errmsg
    - OidIsValid
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - ereport
    - lfirst
    - DatumGetEOHP
    - datumCopy
    - DeleteExpandedObject
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - LOCAL_FCINFO
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void advance_windowaggregate(WindowAggState *winstate,\n\t\t\t\t\t\tWindowStatePerFunc
      perfuncstate,\n\t\t\t\t\t\tWindowStatePerAgg peraggstate)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:470,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:480,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:486,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:488,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:490,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:497,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:499,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:501,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:524,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:535,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:545,1
    - Dst: initialize_windowaggregate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:546,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:557,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:564,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:572,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:591,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:591,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:595,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:596,1
    - Dst: MemoryContextGetParent
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:599,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:599,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:602,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:608,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:611,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:613,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:613,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:617,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 3
    argNames:
    - winstate
    - perfuncstate
    - peraggstate
    argTypes:
    - WindowAggState*
    - WindowStatePerFunc
    - WindowStatePerAgg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 622
    functionName: advance_windowaggregate_base
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - elog
    - foreach
    - InitFunctionCallInfoData
    - Assert
    - FunctionCallInvoke
    - pfree
    - datumCopy
    - DeleteExpandedObject
    - ExecEvalExpr
    - DatumIsReadWriteExpandedObject
    - MemoryContextSwitchTo
    - LOCAL_FCINFO
    - initialize_windowaggregate
    - lfirst
    - DatumGetEOHP
    - MemoryContextGetParent
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: "bool advance_windowaggregate_base(WindowAggState *winstate,\n\t\t\t\t\t\t\t
      WindowStatePerFunc perfuncstate,\n\t\t\t\t\t\t\t WindowStatePerAgg peraggstate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:636,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:641,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:643,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:648,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:653,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:678,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:681,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:689,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:695,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 5
    argNames:
    - winstate
    - perfuncstate
    - peraggstate
    - result
    - isnull
    argTypes:
    - WindowAggState*
    - WindowStatePerFunc
    - WindowStatePerAgg
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 696
    functionName: finalize_windowaggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - LOCAL_FCINFO
    - MemoryContextSwitchTo
    - MakeExpandedObjectReadOnly
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: "void finalize_windowaggregate(WindowAggState *winstate,\n\t\t\t\t\t\t
      WindowStatePerFunc perfuncstate,\n\t\t\t\t\t\t WindowStatePerAgg peraggstate,\n\t\t\t\t\t\t
      Datum *result, bool *isnull)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:783,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:785,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:836,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:861,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:863,1
    - Dst: advance_windowaggregate_base
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:881,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:893,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:897,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:912,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:925,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:931,1
    - Dst: initialize_windowaggregate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:938,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:945,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:945,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:966,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:981,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:983,1
    - Dst: row_is_in_frame
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:992,1
    - Dst: advance_windowaggregate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1013,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1020,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1024,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1028,1
    - Dst: finalize_windowaggregate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1042,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1056,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1058,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1061,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 113
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 709
    functionDepth: 3
    functionLinenumber: 709
    functionLinenumberEnd: 1069
    functionName: eval_windowaggregates
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - advance_windowaggregate
    - ResetExprContext
    - elog
    - WinSetMarkPosition
    - MemoryContextReset
    - Assert
    - pfree
    - row_is_in_frame
    - initialize_windowaggregate
    - window_gettupleslot
    - OidIsValid
    - ExecClearTuple
    - advance_windowaggregate_base
    - update_frameheadpos
    - TupIsNull
    - finalize_windowaggregate
    - datumCopy
    - MemoryContextSwitchTo
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void eval_windowaggregates(WindowAggState *winstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1084,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1087,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1095,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1105,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1117,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - winstate
    - perfuncstate
    - result
    - isnull
    argTypes:
    - WindowAggState*
    - WindowStatePerFunc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1080
    functionDepth: 1
    functionLinenumber: 1080
    functionLinenumberEnd: 1122
    functionName: eval_windowfunction
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - datumCopy
    - MemoryContextSwitchTo
    - LOCAL_FCINFO
    linkageType: ''
    returnType: void
    signature: "void eval_windowfunction(WindowAggState *winstate, WindowStatePerFunc
      perfuncstate,\n\t\t\t\t\tDatum *result, bool *isnull)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1140,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1143,1
    - Dst: tuplestore_set_eflags
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1153,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1169,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1174,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1187,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1189,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1210,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1215,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1232,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1132
    functionDepth: 1
    functionLinenumber: 1132
    functionLinenumberEnd: 1234
    functionName: prepare_tuplestore
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - tuplestore_alloc_read_pointer
    - tuplestore_begin_heap
    - tuplestore_set_eflags
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline prepare_tuplestore(WindowAggState *winstate)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1243,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1259,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1261,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1263,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1269,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1271,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1273,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1274,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1285,1
    - Dst: prepare_tuplestore
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1286,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1326,1
    - Dst: NN_POS_TO_BYTES
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1327,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1337,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1240
    functionDepth: 2
    functionLinenumber: 1240
    functionLinenumberEnd: 1339
    functionName: begin_partition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - prepare_tuplestore
    - ExecProcNode
    - NN_POS_TO_BYTES
    - outerPlanState
    - unlikely
    - memset
    - ExecCopySlot
    - ExecClearTuple
    - TupIsNull
    - tuplestore_puttupleslot
    linkageType: ''
    returnType: void
    signature: void begin_partition(WindowAggState *winstate)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1366,1
    - Dst: tuplestore_in_memory
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1380,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1383,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1386,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1390,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1391,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1407,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1412,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1426,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1431,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 2
    argNames:
    - winstate
    - pos
    argTypes:
    - WindowAggState*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1345
    functionDepth: 4
    functionLinenumber: 1345
    functionLinenumberEnd: 1432
    functionName: spool_tuples
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - tuplestore_in_memory
    - ExecProcNode
    - MemoryContextSwitchTo
    - outerPlanState
    - ExecQualAndReset
    - ExecCopySlot
    - TupIsNull
    - tuplestore_puttupleslot
    linkageType: ''
    returnType: void
    signature: void spool_tuples(WindowAggState *winstate, int64 pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1459,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1460,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1464,1
    - Dst: tuplestore_clear
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1468,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1439
    functionDepth: 1
    functionLinenumber: 1439
    functionLinenumberEnd: 1471
    functionName: release_partition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - tuplestore_clear
    - MemoryContextReset
    linkageType: ''
    returnType: void
    signature: void release_partition(WindowAggState *winstate)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1496,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1502,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1525,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1532,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1538,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1551,1
    - Dst: update_frametailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1559,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1564,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1585,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 49
    argCount: 4
    argNames:
    - winobj
    - pos
    - slot
    - fetch_tuple
    argTypes:
    - WindowObject
    - int64
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1489
    functionDepth: 1
    functionLinenumber: 1489
    functionLinenumberEnd: 1593
    functionName: row_is_in_frame
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - update_frametailpos
    - update_grouptailpos
    - DatumGetInt64
    - Assert
    - pg_add_s64_overflow
    - window_gettupleslot
    - are_peers
    - update_frameheadpos
    linkageType: ''
    returnType: int
    signature: "int row_is_in_frame(WindowObject winobj, int64 pos, TupleTableSlot
      *slot,\n\t\t\t\tbool fetch_tuple)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1616,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1639,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1650,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1653,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1656,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1658,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1661,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1663,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1668,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1669,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1676,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1683,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1694,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1725,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1740,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1743,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1746,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1748,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1751,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1758,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1760,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1780,1
    - Dst: FunctionCall5Coll
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1780,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1785,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1786,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1791,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1792,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1808,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1820,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1825,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1828,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1831,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1833,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1836,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1840,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1843,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1844,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1847,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1851,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1855,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1858,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1860,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 118
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1605
    functionDepth: 5
    functionLinenumber: 1605
    functionLinenumberEnd: 1861
    functionName: update_frameheadpos
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 2
    functionsReached:
    - elog
    - FunctionCall5Coll
    - are_peers
    - slot_getattr
    - DatumGetInt64
    - Assert
    - tuplestore_select_read_pointer
    - MemoryContextSwitchTo
    - spool_tuples
    - pg_add_s64_overflow
    - ExecCopySlot
    - BoolGetDatum
    - tuplestore_gettupleslot
    - TupIsNull
    - ExecClearTuple
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void update_frameheadpos(WindowAggState *winstate)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1884,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1889,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1906,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1909,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1921,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1924,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1927,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1929,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1932,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1935,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1940,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1941,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1948,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1955,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1966,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1968,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1978,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1999,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2014,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2017,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2020,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2022,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2025,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2032,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2034,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2054,1
    - Dst: FunctionCall5Coll
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2054,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2059,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2060,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2065,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2066,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2082,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2094,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2099,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2102,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2105,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2107,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2110,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2114,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2117,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2118,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2121,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2125,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2129,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2132,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2134,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 120
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 1873
    functionDepth: 5
    functionLinenumber: 1873
    functionLinenumberEnd: 2135
    functionName: update_frametailpos
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - elog
    - FunctionCall5Coll
    - are_peers
    - slot_getattr
    - DatumGetInt64
    - Assert
    - tuplestore_select_read_pointer
    - MemoryContextSwitchTo
    - spool_tuples
    - pg_add_s64_overflow
    - ExecCopySlot
    - BoolGetDatum
    - tuplestore_gettupleslot
    - TupIsNull
    - ExecClearTuple
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void update_frametailpos(WindowAggState *winstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2153,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2158,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2172,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2173,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2179,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2180,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2184,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2188,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2191,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2192
      start: 2143
    functionDepth: 5
    functionLinenumber: 2143
    functionLinenumberEnd: 2192
    functionName: update_grouptailpos
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - tuplestore_select_read_pointer
    - MemoryContextSwitchTo
    - spool_tuples
    - ExecClearTuple
    - tuplestore_gettupleslot
    - are_peers
    linkageType: ''
    returnType: void
    signature: void update_grouptailpos(WindowAggState *winstate)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2202,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2217,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2222,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2224,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2226,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2226,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2229,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2236,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2237,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2244,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2251,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2253,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2253,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2256,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2260,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2263,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2264,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2265,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2269
      start: 2199
    functionDepth: 2
    functionLinenumber: 2199
    functionLinenumberEnd: 2269
    functionName: calculate_frame_offsets
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - get_typlenbyval
    - castNode
    - exprType
    - ereport
    - datumCopy
    - DatumGetInt64
    - errmsg
    - ExecEvalExprSwitchContext
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline calculate_frame_offsets(PlanState *pstate)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2283,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2289,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2299,1
    - Dst: calculate_frame_offsets
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2300,1
    - Dst: begin_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2308,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2325,1
    - Dst: release_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2331,1
    - Dst: begin_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2336,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2353,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2370,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2376,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2377,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2379,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2380,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2387,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2391,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2393,1
    - Dst: eval_windowfunction
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2409,1
    - Dst: eval_windowaggregates
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2418,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2432,1
    - Dst: update_frametailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2434,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2436,1
    - Dst: tuplestore_trim
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2441,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2450,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2460,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2521,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2523,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 92
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2539
      start: 2280
    functionDepth: 6
    functionLinenumber: 2280
    functionLinenumberEnd: 2539
    functionName: ExecWindowAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - release_partition
    - elog
    - tuplestore_trim
    - Assert
    - begin_partition
    - ExecClearTuple
    - tuplestore_gettupleslot
    - ExecProject
    - are_peers
    - update_frameheadpos
    - InstrCountFiltered1
    - eval_windowaggregates
    - calculate_frame_offsets
    - CHECK_FOR_INTERRUPTS
    - spool_tuples
    - unlikely
    - ExecCopySlot
    - update_grouptailpos
    - update_frametailpos
    - castNode
    - tuplestore_select_read_pointer
    - eval_windowfunction
    - ExecQual
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecWindowAgg(PlanState *pstate)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2566,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2571,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2584,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2587,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2591,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2607,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2610,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2620,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2636,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2637,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2637,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2643,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2654,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2656,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2658,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2660,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2675,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2680,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2687,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2688,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2693,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2702,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2715,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2716,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2721,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2722,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2728,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2730,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2737,1
    - Dst: equal
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2746,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2747,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2764,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2764,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2767,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2768,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2769,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2774,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2777,1
    - Dst: initialize_peragg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2792,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2797,1
    - Dst: init_notnull_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2804,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2807,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2809,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2820,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2835,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2837,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2841,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2842,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2843,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2844,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 117
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - WindowAgg*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2855
      start: 2548
    functionDepth: 11
    functionLinenumber: 2548
    functionLinenumberEnd: 2855
    functionName: ExecInitWindowAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - ExecAssignProjectionInfo
    - InvokeFunctionExecuteHook
    - fmgr_info_set_expr
    - GetUserId
    - get_func_name
    - get_typlenbyval
    - object_aclcheck
    - ExecInitNode
    - elog
    - foreach
    - Assert
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - initialize_peragg
    - list_length
    - OidIsValid
    - outerPlan
    - fmgr_info
    - init_notnull_info
    - ExecCreateScanSlotFromOuterPlan
    - lfirst
    - aclcheck_error
    - AllocSetContextCreate
    - execTuplesMatchPrepare
    - ExecInitQual
    - fmgr_info_cxt
    - ExecInitExtraTupleSlot
    - palloc0_array
    - ExecAssignExprContext
    - makeNode
    - ExecInitExpr
    - contain_volatile_functions
    - equal
    linkageType: ''
    returnType: WindowAggState
    signature: 'WindowAggState *

      ExecInitWindowAgg(WindowAgg *node, EState *estate, int eflags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2869,1
    - Dst: release_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2875,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2880,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2882,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2883,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2885,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2886,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2888,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2889,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2890
      start: 2861
    functionDepth: 4
    functionLinenumber: 2861
    functionLinenumberEnd: 2890
    functionName: ExecEndWindowAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - pfree
    - tuplestore_end
    - release_partition
    - outerPlanState
    - MemoryContextDelete
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndWindowAgg(WindowAggState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2899,1
    - Dst: release_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2906,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2909,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2910,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2911,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2912,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2913,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2915,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2917,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2920,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2921,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2928,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - node
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2929
      start: 2896
    functionDepth: 2
    functionLinenumber: 2896
    functionLinenumberEnd: 2929
    functionName: ExecReScanWindowAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - release_partition
    - outerPlanState
    - MemSet
    - ExecReScan
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanWindowAgg(WindowAggState *node)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2960,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2963,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2965,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2965,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2968,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2968,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2969,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2970,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2972,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2992,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2999,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3001,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3036,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3037,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3038,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3039,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3041,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3042,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3044,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3047,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3048,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3049,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3051,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3053,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3056,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3057,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3058,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3061,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3063,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3066,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3067,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3068,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3078,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3079,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3080,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3081,1
    - Dst: resolve_aggregate_transtype
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3090,1
    - Dst: build_aggregate_transfn_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3096,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3108,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3109,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3111,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3113,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3114,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3117,1
    - Dst: build_aggregate_finalfn_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3119,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3126,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3127,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3131,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3134,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3142,1
    - Dst: GetAggInitVal
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3148,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3161,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3162,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3163,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3164,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3176,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3178,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3180,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3196,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3198,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3204,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 95
    argCount: 3
    argNames:
    - winstate
    - wfunc
    - peraggstate
    argTypes:
    - WindowAggState*
    - WindowFunc*
    - WindowStatePerAgg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3207
      start: 2936
    functionDepth: 2
    functionLinenumber: 2936
    functionLinenumberEnd: 3207
    functionName: initialize_peragg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - InvokeFunctionExecuteHook
    - fmgr_info_set_expr
    - get_func_name
    - errcode
    - exprType
    - get_typlenbyval
    - object_aclcheck
    - format_procedure
    - IsBinaryCoercible
    - SearchSysCache1
    - elog
    - contain_subplans
    - foreach
    - HeapTupleIsValid
    - ReleaseSysCache
    - errmsg
    - OidIsValid
    - list_length
    - ObjectIdGetDatum
    - fmgr_info
    - build_aggregate_finalfn_expr
    - GetAggInitVal
    - ereport
    - lfirst
    - GETSTRUCT
    - aclcheck_error
    - AllocSetContextCreate
    - build_aggregate_transfn_expr
    - contain_volatile_functions
    - resolve_aggregate_transtype
    - SysCacheGetAttr
    linkageType: ''
    returnType: WindowStatePerAggData
    signature: "WindowStatePerAggData *\ninitialize_peragg(WindowAggState *winstate,
      WindowFunc *wfunc,\n\t\t\t\t  WindowStatePerAgg peraggstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3217,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3218,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3219,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - textInitVal
    - transtype
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3223
      start: 3209
    functionDepth: 1
    functionLinenumber: 3209
    functionLinenumberEnd: 3223
    functionName: GetAggInitVal
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 2
    functionsReached:
    - pfree
    - getTypeInputInfo
    - TextDatumGetCString
    - OidInputFunctionCall
    linkageType: ''
    returnType: Datum
    signature: Datum GetAggInitVal(Datum textInitVal, Oid transtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - winstate
    - slot1
    - slot2
    argTypes:
    - WindowAggState*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3245
      start: 3231
    functionDepth: 4
    functionLinenumber: 3231
    functionLinenumberEnd: 3245
    functionName: are_peers
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 5
    functionsReached:
    - ExecQualAndReset
    linkageType: ''
    returnType: bool
    signature: "bool are_peers(WindowAggState *winstate, TupleTableSlot *slot1,\n\t\t
      \ TupleTableSlot *slot2)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3261,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3268,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3274,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3276,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3278,1
    - Dst: tuplestore_skiptuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3285,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3288,1
    - Dst: tuplestore_skiptuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3293,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3296,1
    - Dst: tuplestore_advance
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3308,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3322,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3323,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3328,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3329,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3333,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3335,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 3
    argNames:
    - winobj
    - pos
    - slot
    argTypes:
    - WindowObject
    - int64
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3338
      start: 3254
    functionDepth: 5
    functionLinenumber: 3254
    functionLinenumberEnd: 3338
    functionName: window_gettupleslot
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 2
    functionsReached:
    - elog
    - Assert
    - tuplestore_select_read_pointer
    - CHECK_FOR_INTERRUPTS
    - MemoryContextSwitchTo
    - tuplestore_advance
    - spool_tuples
    - tuplestore_gettupleslot
    - tuplestore_skiptuples
    linkageType: ''
    returnType: bool
    signature: bool window_gettupleslot(WindowObject winobj, int64 pos, TupleTableSlot
      *slot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3355,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3368,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3368,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - winobj
    - argno
    - abs_pos
    - isnull
    - isout
    argTypes:
    - WindowObject
    - int
    - int64
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3371
      start: 3345
    functionDepth: 6
    functionLinenumber: 3345
    functionLinenumberEnd: 3371
    functionName: gettuple_eval_partition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - list_nth
    - ExecEvalExpr
    - window_gettupleslot
    linkageType: ''
    returnType: Datum
    signature: "Datum gettuple_eval_partition(WindowObject winobj, int argno,\n\t\t\t\t\t\tint64
      abs_pos, bool *isnull, bool *isout)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3393,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3393,1
    - Dst: abs
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3399,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3404,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3411,1
    - Dst: update_frametailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3420,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3426,1
    - Dst: row_is_in_frame
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3449,1
    - Dst: get_notnull_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3458,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3464,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3468,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3469,1
    - Dst: put_notnull_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3476,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3484,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3488,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3489,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3499,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 85
    argCount: 7
    argNames:
    - winobj
    - argno
    - relpos
    - seektype
    - set_mark
    - isnull
    - isout
    argTypes:
    - WindowObject
    - int
    - int
    - int
    - bool
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3508
      start: 3378
    functionDepth: 6
    functionLinenumber: 3378
    functionLinenumberEnd: 3508
    functionName: ignorenulls_getfuncarginframe
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - elog
    - WinSetMarkPosition
    - update_frametailpos
    - put_notnull_info
    - WindowObjectIsValid
    - Assert
    - row_is_in_frame
    - get_notnull_info
    - abs
    - ExecEvalExpr
    - window_gettupleslot
    - list_nth
    - update_frameheadpos
    linkageType: ''
    returnType: Datum
    signature: "Datum ignorenulls_getfuncarginframe(WindowObject winobj, int argno,\n\t\t\t\t\t\t\t
      \ int relpos, int seektype, bool set_mark,\n\t\t\t\t\t\t\t  bool *isnull, bool
      *isout)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3525,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3526,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3527,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3529,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3531,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3534,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3535,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - winobj
    - perfuncstate
    argTypes:
    - WindowObject
    - WindowStatePerFunc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3540
      start: 3515
    functionDepth: 2
    functionLinenumber: 3515
    functionLinenumberEnd: 3540
    functionName: init_notnull_info
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - palloc0_array
    - foreach
    - contain_subplans
    - palloc_array
    - lfirst
    - contain_volatile_functions
    linkageType: ''
    returnType: void
    signature: void init_notnull_info(WindowObject winobj, WindowStatePerFunc perfuncstate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3557,1
    - Dst: NN_POS_TO_BYTES
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3562,1
    - Dst: NN_POS_TO_BYTES
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3569,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3570,1
    - Dst: repalloc0
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3576,1
    - Dst: NN_BYTES_TO_POS
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3578,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3582,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - winobj
    - pos
    - argno
    argTypes:
    - WindowObject
    - int64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3584
      start: 3548
    functionDepth: 1
    functionLinenumber: 3548
    functionLinenumberEnd: 3584
    functionName: grow_notnull_info
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - NN_BYTES_TO_POS
    - palloc0
    - NN_POS_TO_BYTES
    - MemoryContextSwitchTo
    - repalloc0
    linkageType: ''
    returnType: void
    signature: void grow_notnull_info(WindowObject winobj, int64 pos, int argno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grow_notnull_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3602,1
    - Dst: NN_POS_TO_BYTES
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3603,1
    - Dst: NN_SHIFT
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - winobj
    - pos
    - argno
    argTypes:
    - WindowObject
    - int64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3607
      start: 3592
    functionDepth: 2
    functionLinenumber: 3592
    functionLinenumberEnd: 3607
    functionName: get_notnull_info
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - NN_SHIFT
    - NN_POS_TO_BYTES
    - grow_notnull_info
    linkageType: ''
    returnType: uint8
    signature: uint8 get_notnull_info(WindowObject winobj, int64 pos, int argno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grow_notnull_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3628,1
    - Dst: NN_POS_TO_BYTES
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3629,1
    - Dst: NN_SHIFT
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - winobj
    - pos
    - argno
    - isnull
    argTypes:
    - WindowObject
    - int64
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3636
      start: 3616
    functionDepth: 2
    functionLinenumber: 3616
    functionLinenumberEnd: 3636
    functionName: put_notnull_info
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - NN_SHIFT
    - NN_POS_TO_BYTES
    - grow_notnull_info
    linkageType: ''
    returnType: void
    signature: void put_notnull_info(WindowObject winobj, int64 pos, int argno, bool
      isnull)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3655,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3655,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3658,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3661,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3662,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3664,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - winobj
    - allowNullTreatment
    - fcinfo
    argTypes:
    - WindowObject
    - bool
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3669
      start: 3650
    functionDepth: 1
    functionLinenumber: 3650
    functionLinenumberEnd: 3669
    functionName: WinCheckAndInitializeNullTreatment
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - elog
    - get_func_name
    - WindowObjectIsValid
    - Assert
    - errcode
    - ereport
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void WinCheckAndInitializeNullTreatment(WindowObject winobj,\n\t\t\t\t\t\t\t\t
      \  bool allowNullTreatment,\n\t\t\t\t\t\t\t\t   FunctionCallInfo fcinfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3686,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3686,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3689,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - winobj
    - sz
    argTypes:
    - WindowObject
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3691
      start: 3683
    functionDepth: 1
    functionLinenumber: 3683
    functionLinenumberEnd: 3691
    functionName: WinGetPartitionLocalMemory
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextAllocZero
    - WindowObjectIsValid
    linkageType: ''
    returnType: void
    signature: 'void *

      WinGetPartitionLocalMemory(WindowObject winobj, Size sz)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3701,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - winobj
    argTypes:
    - WindowObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3703
      start: 3698
    functionDepth: 1
    functionLinenumber: 3698
    functionLinenumberEnd: 3703
    functionName: WinGetCurrentPosition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - WindowObjectIsValid
    linkageType: ''
    returnType: int64
    signature: int64 WinGetCurrentPosition(WindowObject winobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3716,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3716,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3717,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - winobj
    argTypes:
    - WindowObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3719
      start: 3713
    functionDepth: 5
    functionLinenumber: 3713
    functionLinenumberEnd: 3719
    functionName: WinGetPartitionRowCount
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - spool_tuples
    - WindowObjectIsValid
    linkageType: ''
    returnType: int64
    signature: int64 WinGetPartitionRowCount(WindowObject winobj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3736,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3736,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3740,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3741,1
    - Dst: tuplestore_skiptuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3744,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3749,1
    - Dst: tuplestore_skiptuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3752,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - winobj
    - markpos
    argTypes:
    - WindowObject
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3757
      start: 3731
    functionDepth: 1
    functionLinenumber: 3731
    functionLinenumberEnd: 3757
    functionName: WinSetMarkPosition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 2
    functionsReached:
    - elog
    - WindowObjectIsValid
    - Assert
    - tuplestore_select_read_pointer
    - tuplestore_skiptuples
    linkageType: ''
    returnType: void
    signature: void WinSetMarkPosition(WindowObject winobj, int64 markpos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3775,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3775,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3790,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3791,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3793,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3794,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3797,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3799,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3800,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - winobj
    - pos1
    - pos2
    argTypes:
    - WindowObject
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3803
      start: 3766
    functionDepth: 6
    functionLinenumber: 3766
    functionLinenumberEnd: 3803
    functionName: WinRowsArePeers
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - elog
    - WindowObjectIsValid
    - Assert
    - window_gettupleslot
    - are_peers
    - ExecClearTuple
    linkageType: ''
    returnType: bool
    signature: bool WinRowsArePeers(WindowObject winobj, int64 pos1, int64 pos2)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3839,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3839,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3859,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3863,1
    - Dst: gettuple_eval_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3872,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3875,1
    - Dst: abs
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3883,1
    - Dst: get_notnull_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3923,1
    - Dst: gettuple_eval_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3936,1
    - Dst: put_notnull_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3947,1
    - Dst: gettuple_eval_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3953,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3956,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 69
    argCount: 7
    argNames:
    - winobj
    - argno
    - relpos
    - seektype
    - set_mark
    - isnull
    - isout
    argTypes:
    - WindowObject
    - int
    - int
    - int
    - bool
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3961
      start: 3823
    functionDepth: 7
    functionLinenumber: 3823
    functionLinenumberEnd: 3961
    functionName: WinGetFuncArgInPartition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - elog
    - WinSetMarkPosition
    - put_notnull_info
    - WindowObjectIsValid
    - Assert
    - get_notnull_info
    - abs
    - gettuple_eval_partition
    - spool_tuples
    linkageType: ''
    returnType: Datum
    signature: "Datum WinGetFuncArgInPartition(WindowObject winobj, int argno,\n\t\t\t\t\t\t
      int relpos, int seektype, bool set_mark,\n\t\t\t\t\t\t bool *isnull, bool *isout)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4007,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4007,1
    - Dst: ignorenulls_getfuncarginframe
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4013,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4019,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4026,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4053,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4057,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4064,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4068,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4078,1
    - Dst: update_frametailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4087,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4109,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4115,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4119,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4124,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4130,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4134,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4142,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4148,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4155,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4160,1
    - Dst: row_is_in_frame
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4164,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4170,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4172,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4172,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 117
    argCount: 7
    argNames:
    - winobj
    - argno
    - relpos
    - seektype
    - set_mark
    - isnull
    - isout
    argTypes:
    - WindowObject
    - int
    - int
    - int
    - bool
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4180
      start: 3996
    functionDepth: 7
    functionLinenumber: 3996
    functionLinenumberEnd: 4180
    functionName: WinGetFuncArgInFrame
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - elog
    - WinSetMarkPosition
    - update_frametailpos
    - ignorenulls_getfuncarginframe
    - Assert
    - WindowObjectIsValid
    - row_is_in_frame
    - ExecEvalExpr
    - Max
    - list_nth
    - window_gettupleslot
    - Min
    - update_grouptailpos
    - update_frameheadpos
    linkageType: ''
    returnType: Datum
    signature: "Datum WinGetFuncArgInFrame(WindowObject winobj, int argno,\n\t\t\t\t\t
      int relpos, int seektype, bool set_mark,\n\t\t\t\t\t bool *isnull, bool *isout)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4201,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4201,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4207,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:4207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - winobj
    - argno
    - isnull
    argTypes:
    - WindowObject
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4209
      start: 4195
    functionDepth: 3
    functionLinenumber: 4195
    functionLinenumberEnd: 4209
    functionName: WinGetFuncArgCurrent
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - list_nth
    - ExecEvalExpr
    - WindowObjectIsValid
    linkageType: ''
    returnType: Datum
    signature: Datum WinGetFuncArgCurrent(WindowObject winobj, int argno, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sei
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: GetInstrumentationArray
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetInstrumentationArray(sei)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/execParallel.c:158,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execParallel.c:169,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execParallel.c:171,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execParallel.c:181,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/executor/execParallel.c:183,1
    - Dst: pgstat_get_my_plan_id
      Src: /src/postgres/src/backend/executor/execParallel.c:184,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execParallel.c:207,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execParallel.c:209,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execParallel.c:213,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/executor/execParallel.c:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 2
    argNames:
    - plan
    - estate
    argTypes:
    - Plan*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 151
    functionDepth: 7
    functionLinenumber: 151
    functionLinenumberEnd: 234
    functionName: ExecSerializePlan
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - copyObject
    - foreach
    - lappend
    - makeNode
    - nodeToString
    - pgstat_get_my_query_id
    - lfirst
    - pgstat_get_my_plan_id
    - lfirst_node
    linkageType: ''
    returnType: char
    signature: 'char *

      ExecSerializePlan(Plan *plan, EState *estate)'
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:254,1
    - Dst: ExecSeqScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:258,1
    - Dst: ExecSeqScanInstrumentEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:261,1
    - Dst: ExecIndexScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:266,1
    - Dst: ExecIndexScanInstrumentEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:269,1
    - Dst: ExecIndexOnlyScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:274,1
    - Dst: ExecIndexOnlyScanInstrumentEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:277,1
    - Dst: ExecBitmapIndexScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:282,1
    - Dst: ExecForeignScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:287,1
    - Dst: ExecTidRangeScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:292,1
    - Dst: ExecTidRangeScanInstrumentEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:295,1
    - Dst: ExecAppendEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:300,1
    - Dst: ExecCustomScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:305,1
    - Dst: ExecBitmapHeapEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:310,1
    - Dst: ExecBitmapHeapInstrumentEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:313,1
    - Dst: ExecHashJoinEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:318,1
    - Dst: ExecHashEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:323,1
    - Dst: ExecSortEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:327,1
    - Dst: ExecIncrementalSortEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:331,1
    - Dst: ExecAggEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:335,1
    - Dst: ExecMemoizeEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:339,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:345,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 68
    argCount: 2
    argNames:
    - planstate
    - e
    argTypes:
    - PlanState*
    - ExecParallelEstimateContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 245
    functionDepth: 3
    functionLinenumber: 245
    functionLinenumberEnd: 346
    functionName: ExecParallelEstimate
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - ExecIndexOnlyScanEstimate
    - ExecBitmapIndexScanEstimate
    - ExecBitmapHeapInstrumentEstimate
    - ExecIndexScanEstimate
    - nodeTag
    - ExecIndexOnlyScanInstrumentEstimate
    - ExecAggEstimate
    - ExecTidRangeScanEstimate
    - ExecCustomScanEstimate
    - ExecHashJoinEstimate
    - ExecMemoizeEstimate
    - ExecSeqScanInstrumentEstimate
    - ExecSeqScanEstimate
    - ExecBitmapHeapEstimate
    - ExecIndexScanInstrumentEstimate
    - ExecIncrementalSortEstimate
    - ExecSortEstimate
    - ExecHashEstimate
    - ExecTidRangeScanInstrumentEstimate
    - planstate_tree_walker
    - ExecAppendEstimate
    - ExecForeignScanEstimate
    linkageType: ''
    returnType: bool
    signature: bool ExecParallelEstimate(PlanState *planstate, ExecParallelEstimateContext
      *e)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execParallel.c:358,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/executor/execParallel.c:366,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/execParallel.c:369,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:372,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/execParallel.c:373,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/execParallel.c:380,1
    - Dst: datumEstimateSpace
      Src: /src/postgres/src/backend/executor/execParallel.c:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - estate
    - params
    argTypes:
    - EState*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 351
    functionDepth: 3
    functionLinenumber: 351
    functionLinenumberEnd: 385
    functionName: EstimateParamExecSpace
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - add_size
    - get_typlenbyval
    - datumEstimateSpace
    - OidIsValid
    - bms_next_member
    - list_nth_oid
    linkageType: ''
    returnType: Size
    signature: Size EstimateParamExecSpace(EState *estate, Bitmapset *params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EstimateParamExecSpace
      Src: /src/postgres/src/backend/executor/execParallel.c:406,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:407,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/execParallel.c:408,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/execParallel.c:411,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:412,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execParallel.c:417,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/executor/execParallel.c:424,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:428,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:432,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/execParallel.c:433,1
    - Dst: datumSerialize
      Src: /src/postgres/src/backend/executor/execParallel.c:440,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - estate
    - params
    - area
    argTypes:
    - EState*
    - Bitmapset*
    - dsa_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 395
    functionDepth: 4
    functionLinenumber: 395
    functionLinenumberEnd: 445
    functionName: SerializeParamExecParams
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - memcpy
    - get_typlenbyval
    - OidIsValid
    - bms_num_members
    - EstimateParamExecSpace
    - datumSerialize
    - dsa_get_address
    - dsa_allocate
    - bms_next_member
    - list_nth_oid
    linkageType: ''
    returnType: dsa_pointer
    signature: dsa_pointer SerializeParamExecParams(EState *estate, Bitmapset *params,
      dsa_area *area)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:457,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:465,1
    - Dst: datumRestore
      Src: /src/postgres/src/backend/executor/execParallel.c:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - start_address
    - estate
    argTypes:
    - char*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 473
    functionName: RestoreParamExecParams
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - memcpy
    - datumRestore
    linkageType: ''
    returnType: void
    signature: void RestoreParamExecParams(char *start_address, EState *estate)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:503,1
    - Dst: ExecSeqScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:507,1
    - Dst: ExecSeqScanInstrumentInitDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:510,1
    - Dst: ExecIndexScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:515,1
    - Dst: ExecIndexScanInstrumentInitDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:518,1
    - Dst: ExecIndexOnlyScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:523,1
    - Dst: ExecIndexOnlyScanInstrumentInitDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:526,1
    - Dst: ExecBitmapIndexScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:531,1
    - Dst: ExecForeignScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:535,1
    - Dst: ExecTidRangeScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:540,1
    - Dst: ExecTidRangeScanInstrumentInitDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:543,1
    - Dst: ExecAppendInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:548,1
    - Dst: ExecCustomScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:553,1
    - Dst: ExecBitmapHeapInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:558,1
    - Dst: ExecBitmapHeapInstrumentInitDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:561,1
    - Dst: ExecHashJoinInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:566,1
    - Dst: ExecHashInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:571,1
    - Dst: ExecSortInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:575,1
    - Dst: ExecIncrementalSortInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:579,1
    - Dst: ExecAggInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:583,1
    - Dst: ExecMemoizeInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:587,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:593,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 70
    argCount: 2
    argNames:
    - planstate
    - d
    argTypes:
    - PlanState*
    - ExecParallelInitializeDSMContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 479
    functionDepth: 4
    functionLinenumber: 479
    functionLinenumberEnd: 594
    functionName: ExecParallelInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - ExecTidRangeScanInstrumentInitDSM
    - ExecForeignScanInitializeDSM
    - ExecCustomScanInitializeDSM
    - ExecBitmapIndexScanInitializeDSM
    - ExecIndexOnlyScanInitializeDSM
    - nodeTag
    - ExecIncrementalSortInitializeDSM
    - ExecTidRangeScanInitializeDSM
    - ExecSeqScanInitializeDSM
    - ExecSortInitializeDSM
    - ExecAggInitializeDSM
    - ExecMemoizeInitializeDSM
    - ExecIndexOnlyScanInstrumentInitDSM
    - ExecHashInitializeDSM
    - ExecIndexScanInitializeDSM
    - ExecHashJoinInitializeDSM
    - ExecSeqScanInstrumentInitDSM
    - ExecBitmapHeapInstrumentInitDSM
    - ExecIndexScanInstrumentInitDSM
    - planstate_tree_walker
    - ExecAppendInitializeDSM
    - ExecBitmapHeapInitializeDSM
    linkageType: ''
    returnType: bool
    signature: "bool ExecParallelInitializeDSM(PlanState *planstate,\n\t\t\t\t\t\t
      \ ExecParallelInitializeDSMContext *d)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execParallel.c:613,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:621,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:622,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:625,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/executor/execParallel.c:632,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/executor/execParallel.c:636,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/executor/execParallel.c:637,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:642,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 646
    functionName: ExecParallelSetupTupleQueues
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    - mul_size
    - shm_mq_set_receiver
    - shm_toc_insert
    - palloc
    - shm_mq_attach
    - shm_mq_create
    - shm_toc_allocate
    linkageType: ''
    returnType: shm_mq_handle
    signature: 'shm_mq_handle **

      ExecParallelSetupTupleQueues(ParallelContext *pcxt, bool reinitialize)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dsa_minimum_size
      Src: /src/postgres/src/backend/executor/execParallel.c:674,1
    - Dst: ExecSetParamPlanMulti
      Src: /src/postgres/src/backend/executor/execParallel.c:689,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execParallel.c:689,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execParallel.c:692,1
    - Dst: ExecSerializePlan
      Src: /src/postgres/src/backend/executor/execParallel.c:697,1
    - Dst: CreateParallelContext
      Src: /src/postgres/src/backend/executor/execParallel.c:700,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:710,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:712,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execParallel.c:715,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:716,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:717,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execParallel.c:720,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:721,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:722,1
    - Dst: EstimateParamListSpace
      Src: /src/postgres/src/backend/executor/execParallel.c:725,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:726,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:727,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:736,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:737,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:738,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:743,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:744,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:745,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:748,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:749,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:750,1
    - Dst: ExecParallelEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:758,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execParallel.c:766,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:769,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:770,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:771,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:772,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:780,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:781,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:786,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:787,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:794,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execParallel.c:794,1
    - Dst: InitializeParallelDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:797,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:808,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:813,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:816,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:817,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:818,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:821,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:822,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:823,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:826,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:827,1
    - Dst: SerializeParamList
      Src: /src/postgres/src/backend/executor/execParallel.c:828,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:831,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:832,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:833,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:837,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:838,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:839,1
    - Dst: ExecParallelSetupTupleQueues
      Src: /src/postgres/src/backend/executor/execParallel.c:843,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:858,1
    - Dst: GetInstrumentationArray
      Src: /src/postgres/src/backend/executor/execParallel.c:863,1
    - Dst: InstrInitNode
      Src: /src/postgres/src/backend/executor/execParallel.c:865,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:866,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:872,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execParallel.c:875,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:877,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:892,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:893,1
    - Dst: dsa_create_in_place
      Src: /src/postgres/src/backend/executor/execParallel.c:894,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execParallel.c:904,1
    - Dst: SerializeParamExecParams
      Src: /src/postgres/src/backend/executor/execParallel.c:906,1
    - Dst: ExecParallelInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:923,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execParallel.c:931,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 105
    argCount: 5
    argNames:
    - planstate
    - estate
    - sendParams
    - nworkers
    - tuples_needed
    argTypes:
    - PlanState*
    - EState*
    - Bitmapset*
    - int
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 652
    functionDepth: 8
    functionLinenumber: 652
    functionLinenumberEnd: 935
    functionName: ExecInitParallelPlan
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - ExecSerializePlan
    - shm_toc_estimate_chunk
    - ExecParallelEstimate
    - elog
    - memcpy
    - CreateParallelContext
    - Assert
    - GetInstrumentationArray
    - ExecParallelInitializeDSM
    - dsa_minimum_size
    - ExecParallelSetupTupleQueues
    - MAXALIGN
    - SerializeParamExecParams
    - EstimateParamListSpace
    - palloc0_object
    - SerializeParamList
    - shm_toc_estimate_keys
    - InstrInitNode
    - mul_size
    - strlen
    - memset
    - dsa_create_in_place
    - ExecSetParamPlanMulti
    - GetPerTupleExprContext
    - InitializeParallelDSM
    - shm_toc_insert
    - GetActiveSnapshot
    - bms_is_empty
    - shm_toc_allocate
    linkageType: ''
    returnType: ParallelExecutorInfo
    signature: "ParallelExecutorInfo *\nExecInitParallelPlan(PlanState *planstate,
      EState *estate,\n\t\t\t\t\t Bitmapset *sendParams, int nworkers,\n\t\t\t\t\t
      int64 tuples_needed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:949,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execParallel.c:954,1
    - Dst: shm_mq_set_handle
      Src: /src/postgres/src/backend/executor/execParallel.c:958,1
    - Dst: CreateTupleQueueReader
      Src: /src/postgres/src/backend/executor/execParallel.c:960,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pei
    argTypes:
    - ParallelExecutorInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 963
    functionName: ExecParallelCreateReaders
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - Assert
    - shm_mq_set_handle
    - CreateTupleQueueReader
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecParallelCreateReaders(ParallelExecutorInfo *pei)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:978,1
    - Dst: ExecSetParamPlanMulti
      Src: /src/postgres/src/backend/executor/execParallel.c:985,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execParallel.c:985,1
    - Dst: ReinitializeParallelDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:987,1
    - Dst: ExecParallelSetupTupleQueues
      Src: /src/postgres/src/backend/executor/execParallel.c:988,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:992,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:995,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/execParallel.c:997,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execParallel.c:1002,1
    - Dst: SerializeParamExecParams
      Src: /src/postgres/src/backend/executor/execParallel.c:1004,1
    - Dst: ExecParallelReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1011,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - planstate
    - pei
    - sendParams
    argTypes:
    - PlanState*
    - ParallelExecutorInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 969
    functionDepth: 5
    functionLinenumber: 969
    functionLinenumberEnd: 1013
    functionName: ExecParallelReinitialize
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - DsaPointerIsValid
    - shm_toc_lookup
    - dsa_free
    - Assert
    - GetPerTupleExprContext
    - ReinitializeParallelDSM
    - ExecParallelSetupTupleQueues
    - SerializeParamExecParams
    - ExecParallelReInitializeDSM
    - ExecSetParamPlanMulti
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: "void ExecParallelReinitialize(PlanState *planstate,\n\t\t\t\t\t\t
      ParallelExecutorInfo *pei,\n\t\t\t\t\t\t Bitmapset *sendParams)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:1028,1
    - Dst: ExecSeqScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1032,1
    - Dst: ExecIndexScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1037,1
    - Dst: ExecIndexOnlyScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1042,1
    - Dst: ExecForeignScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1047,1
    - Dst: ExecTidRangeScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1052,1
    - Dst: ExecAppendReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1057,1
    - Dst: ExecCustomScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1061,1
    - Dst: ExecBitmapHeapReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1066,1
    - Dst: ExecHashJoinReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1071,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:1086,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 50
    argCount: 2
    argNames:
    - planstate
    - pcxt
    argTypes:
    - PlanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1018
    functionDepth: 4
    functionLinenumber: 1018
    functionLinenumberEnd: 1087
    functionName: ExecParallelReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - ExecIndexScanReInitializeDSM
    - ExecTidRangeScanReInitializeDSM
    - ExecIndexOnlyScanReInitializeDSM
    - ExecBitmapHeapReInitializeDSM
    - planstate_tree_walker
    - nodeTag
    - ExecHashJoinReInitializeDSM
    - ExecCustomScanReInitializeDSM
    - ExecAppendReInitializeDSM
    - ExecSeqScanReInitializeDSM
    - ExecForeignScanReInitializeDSM
    linkageType: ''
    returnType: bool
    signature: "bool ExecParallelReInitializeDSM(PlanState *planstate,\n\t\t\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execParallel.c:1109,1
    - Dst: GetInstrumentationArray
      Src: /src/postgres/src/backend/executor/execParallel.c:1112,1
    - Dst: InstrAggNode
      Src: /src/postgres/src/backend/executor/execParallel.c:1115,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execParallel.c:1124,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:1125,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execParallel.c:1127,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execParallel.c:1128,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:1131,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:1134,1
    - Dst: ExecIndexScanRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1137,1
    - Dst: ExecIndexOnlyScanRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1140,1
    - Dst: ExecBitmapIndexScanRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1143,1
    - Dst: ExecSortRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1146,1
    - Dst: ExecIncrementalSortRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1149,1
    - Dst: ExecHashRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1152,1
    - Dst: ExecAggRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1155,1
    - Dst: ExecMemoizeRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1158,1
    - Dst: ExecBitmapHeapRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1161,1
    - Dst: ExecSeqScanRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1164,1
    - Dst: ExecTidRangeScanRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1167,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:1173,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 2
    argNames:
    - planstate
    - instrumentation
    argTypes:
    - PlanState*
    - SharedExecutorInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1175
    functionName: ExecParallelRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - InstrAggNode
    - ExecTidRangeScanRetrieveInstrumentation
    - ExecSortRetrieveInstrumentation
    - ExecBitmapIndexScanRetrieveInstrumentation
    - ExecBitmapHeapRetrieveInstrumentation
    - nodeTag
    - elog
    - ExecSeqScanRetrieveInstrumentation
    - memcpy
    - GetInstrumentationArray
    - ExecIncrementalSortRetrieveInstrumentation
    - ExecAggRetrieveInstrumentation
    - ExecHashRetrieveInstrumentation
    - ExecMemoizeRetrieveInstrumentation
    - mul_size
    - ExecIndexOnlyScanRetrieveInstrumentation
    - ExecIndexScanRetrieveInstrumentation
    - MemoryContextSwitchTo
    - planstate_tree_walker
    - palloc
    linkageType: ''
    returnType: bool
    signature: "bool ExecParallelRetrieveInstrumentation(PlanState *planstate,\n\t\t\t\t\t\t\t\t\tSharedExecutorInstrumentation
      *instrumentation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/executor/execParallel.c:1195,1
    - Dst: InstrJitAgg
      Src: /src/postgres/src/backend/executor/execParallel.c:1200,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:1209,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/execParallel.c:1211,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:1213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - planstate
    - shared_jit
    argTypes:
    - PlanState*
    - SharedJitInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1180
    functionDepth: 2
    functionLinenumber: 1180
    functionLinenumberEnd: 1214
    functionName: ExecParallelRetrieveJitInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - memcpy
    - MemoryContextAlloc
    - mul_size
    - InstrJitAgg
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: "void ExecParallelRetrieveJitInstrumentation(PlanState *planstate,\n\t\t\t\t\t\t\t\t\t
      \  SharedJitInstrumentation *shared_jit)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/executor/execParallel.c:1237,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execParallel.c:1238,1
    - Dst: DestroyTupleQueueReader
      Src: /src/postgres/src/backend/executor/execParallel.c:1249,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execParallel.c:1250,1
    - Dst: WaitForParallelWorkersToFinish
      Src: /src/postgres/src/backend/executor/execParallel.c:1255,1
    - Dst: InstrAccumParallelQuery
      Src: /src/postgres/src/backend/executor/execParallel.c:1262,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - pei
    argTypes:
    - ParallelExecutorInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1220
    functionDepth: 2
    functionLinenumber: 1220
    functionLinenumberEnd: 1265
    functionName: ExecParallelFinish
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - InstrAccumParallelQuery
    - shm_mq_detach
    - DestroyTupleQueueReader
    - pfree
    - WaitForParallelWorkersToFinish
    linkageType: ''
    returnType: void
    signature: void ExecParallelFinish(ParallelExecutorInfo *pei)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1278,1
    - Dst: ExecParallelRetrieveJitInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1283,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:1287,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/execParallel.c:1289,1
    - Dst: dsa_detach
      Src: /src/postgres/src/backend/executor/execParallel.c:1294,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/executor/execParallel.c:1299,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execParallel.c:1302,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - pei
    argTypes:
    - ParallelExecutorInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1273
    functionDepth: 3
    functionLinenumber: 1273
    functionLinenumberEnd: 1303
    functionName: ExecParallelCleanup
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - DestroyParallelContext
    - DsaPointerIsValid
    - dsa_free
    - ExecParallelRetrieveJitInstrumentation
    - pfree
    - dsa_detach
    - ExecParallelRetrieveInstrumentation
    linkageType: ''
    returnType: void
    signature: void ExecParallelCleanup(ParallelExecutorInfo *pei)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1315,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/backend/executor/execParallel.c:1318,1
    - Dst: CreateTupleQueueDestReceiver
      Src: /src/postgres/src/backend/executor/execParallel.c:1319,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/executor/execParallel.c:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1309
    functionDepth: 1
    functionLinenumber: 1309
    functionLinenumberEnd: 1320
    functionName: ExecParallelGetReceiver
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - shm_mq_set_sender
    - shm_mq_attach
    - shm_toc_lookup
    - CreateTupleQueueDestReceiver
    linkageType: ''
    returnType: DestReceiver
    signature: 'DestReceiver *

      ExecParallelGetReceiver(dsm_segment *seg, shm_toc *toc)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1336,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1339,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/executor/execParallel.c:1340,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1343,1
    - Dst: RestoreParamList
      Src: /src/postgres/src/backend/executor/execParallel.c:1344,1
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/executor/execParallel.c:1347,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execParallel.c:1349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - toc
    - receiver
    - instrument_options
    argTypes:
    - shm_toc*
    - DestReceiver*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1325
    functionDepth: 3
    functionLinenumber: 1325
    functionLinenumberEnd: 1351
    functionName: ExecParallelGetQueryDesc
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - shm_toc_lookup
    - RestoreParamList
    - stringToNode
    - GetActiveSnapshot
    - CreateQueryDesc
    linkageType: ''
    returnType: QueryDesc
    signature: "QueryDesc *\nExecParallelGetQueryDesc(shm_toc *toc, DestReceiver *receiver,\n\t\t\t\t\t\t
      int instrument_options)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: InstrEndLoop
      Src: /src/postgres/src/backend/executor/execParallel.c:1365,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execParallel.c:1377,1
    - Dst: GetInstrumentationArray
      Src: /src/postgres/src/backend/executor/execParallel.c:1383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:1385,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:1386,1
    - Dst: InstrAggNode
      Src: /src/postgres/src/backend/executor/execParallel.c:1387,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:1389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - planstate
    - instrumentation
    argTypes:
    - PlanState*
    - SharedExecutorInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1357
    functionDepth: 1
    functionLinenumber: 1357
    functionLinenumberEnd: 1391
    functionName: ExecParallelReportInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - elog
    - InstrAggNode
    - Assert
    - GetInstrumentationArray
    - InstrEndLoop
    - planstate_tree_walker
    - IsParallelWorker
    linkageType: ''
    returnType: bool
    signature: "bool ExecParallelReportInstrumentation(PlanState *planstate,\n\t\t\t\t\t\t\t\t
      \ SharedExecutorInstrumentation *instrumentation)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:1404,1
    - Dst: ExecSeqScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1408,1
    - Dst: ExecSeqScanInstrumentInitWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1410,1
    - Dst: ExecIndexScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1414,1
    - Dst: ExecIndexScanInstrumentInitWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1417,1
    - Dst: ExecIndexOnlyScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1422,1
    - Dst: ExecIndexOnlyScanInstrumentInitWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1425,1
    - Dst: ExecBitmapIndexScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1430,1
    - Dst: ExecForeignScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1435,1
    - Dst: ExecTidRangeScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1440,1
    - Dst: ExecTidRangeScanInstrumentInitWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1443,1
    - Dst: ExecAppendInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1448,1
    - Dst: ExecCustomScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1452,1
    - Dst: ExecBitmapHeapInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1457,1
    - Dst: ExecBitmapHeapInstrumentInitWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1460,1
    - Dst: ExecHashJoinInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1465,1
    - Dst: ExecHashInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1470,1
    - Dst: ExecSortInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1474,1
    - Dst: ExecIncrementalSortInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1478,1
    - Dst: ExecAggInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1483,1
    - Dst: ExecMemoizeInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1487,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:1493,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 67
    argCount: 2
    argNames:
    - planstate
    - pwcxt
    argTypes:
    - PlanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1398
    functionDepth: 4
    functionLinenumber: 1398
    functionLinenumberEnd: 1495
    functionName: ExecParallelInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - ExecIndexScanInstrumentInitWorker
    - ExecBitmapHeapInitializeWorker
    - ExecHashInitializeWorker
    - ExecIndexOnlyScanInitializeWorker
    - ExecAppendInitializeWorker
    - nodeTag
    - ExecAggInitializeWorker
    - ExecTidRangeScanInstrumentInitWorker
    - ExecTidRangeScanInitializeWorker
    - ExecMemoizeInitializeWorker
    - ExecForeignScanInitializeWorker
    - ExecHashJoinInitializeWorker
    - ExecBitmapHeapInstrumentInitWorker
    - ExecBitmapIndexScanInitializeWorker
    - ExecIndexOnlyScanInstrumentInitWorker
    - ExecIncrementalSortInitializeWorker
    - ExecSeqScanInstrumentInitWorker
    - ExecSeqScanInitializeWorker
    - ExecSortInitializeWorker
    - ExecCustomScanInitializeWorker
    - planstate_tree_walker
    - ExecIndexScanInitializeWorker
    linkageType: ''
    returnType: bool
    signature: bool ExecParallelInitializeWorker(PlanState *planstate, ParallelWorkerContext
      *pwcxt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1529,1
    - Dst: ExecParallelGetReceiver
      Src: /src/postgres/src/backend/executor/execParallel.c:1532,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1533,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1536,1
    - Dst: ExecParallelGetQueryDesc
      Src: /src/postgres/src/backend/executor/execParallel.c:1538,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/executor/execParallel.c:1544,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1547,1
    - Dst: dsa_attach_in_place
      Src: /src/postgres/src/backend/executor/execParallel.c:1548,1
    - Dst: ExecutorStart
      Src: /src/postgres/src/backend/executor/execParallel.c:1552,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:1556,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/execParallel.c:1560,1
    - Dst: RestoreParamExecParams
      Src: /src/postgres/src/backend/executor/execParallel.c:1561,1
    - Dst: ExecParallelInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1565,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execParallel.c:1568,1
    - Dst: InstrStartParallelQuery
      Src: /src/postgres/src/backend/executor/execParallel.c:1577,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/executor/execParallel.c:1583,1
    - Dst: ExecutorFinish
      Src: /src/postgres/src/backend/executor/execParallel.c:1588,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1591,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1592,1
    - Dst: InstrEndParallelQuery
      Src: /src/postgres/src/backend/executor/execParallel.c:1593,1
    - Dst: ExecParallelReportInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:1604,1
    - Dst: ExecutorEnd
      Src: /src/postgres/src/backend/executor/execParallel.c:1610,1
    - Dst: dsa_detach
      Src: /src/postgres/src/backend/executor/execParallel.c:1613,1
    - Dst: FreeQueryDesc
      Src: /src/postgres/src/backend/executor/execParallel.c:1614,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/executor/execParallel.c:1615,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1513
    functionDepth: 5
    functionLinenumber: 1513
    functionLinenumberEnd: 1616
    functionName: ParallelQueryMain
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - DestReceiver*::rDestroy
    - ExecParallelInitializeWorker
    - dsa_get_address
    - shm_toc_lookup
    - ExecParallelReportInstrumentation
    - Assert
    - ExecutorRun
    - FreeQueryDesc
    - pgstat_report_activity
    - ExecutorFinish
    - DsaPointerIsValid
    - ExecParallelGetQueryDesc
    - dsa_detach
    - ExecutorEnd
    - InstrEndParallelQuery
    - InstrStartParallelQuery
    - ExecutorStart
    - ExecSetTupleBound
    - dsa_attach_in_place
    - ExecParallelGetReceiver
    - RestoreParamExecParams
    linkageType: ''
    returnType: void
    signature: void ParallelQueryMain(dsm_segment *seg, shm_toc *toc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: SH_GET_HASH
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_GET_HASH(tb, a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execGrouping.c:75,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/execGrouping.c:79,1
    - Dst: ExecBuildGroupingEqual
      Src: /src/postgres/src/backend/executor/execGrouping.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 6
    argNames:
    - desc
    - numCols
    - keyColIdx
    - eqOperators
    - collations
    - parent
    argTypes:
    - TupleDesc
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 60
    functionDepth: 7
    functionLinenumber: 60
    functionLinenumberEnd: 87
    functionName: execTuplesMatchPrepare
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 2
    functionsReached:
    - ExecBuildGroupingEqual
    - get_opcode
    - palloc
    linkageType: ''
    returnType: ExprState
    signature: "ExprState *\nexecTuplesMatchPrepare(TupleDesc desc,\n\t\t\t\t\t   int
      numCols,\n\t\t\t\t\t   const AttrNumber *keyColIdx,\n\t\t\t\t\t   const Oid
      *eqOperators,\n\t\t\t\t\t   const Oid *collations,\n\t\t\t\t\t   PlanState *parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execGrouping.c:107,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execGrouping.c:108,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/execGrouping.c:117,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/execGrouping.c:118,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execGrouping.c:120,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:123,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execGrouping.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - numCols
    - eqOperators
    - eqFuncOids
    - hashFunctions
    argTypes:
    - int
    - Oid*
    - Oid**
    - FmgrInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 127
    functionName: execTuplesHashPrepare
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - get_op_hash_functions
    - palloc
    - get_opcode
    - fmgr_info
    linkageType: ''
    returnType: void
    signature: "void execTuplesHashPrepare(int numCols,\n\t\t\t\t\t  const Oid *eqOperators,\n\t\t\t\t\t
      \ Oid **eqFuncOids,\n\t\t\t\t\t  FmgrInfo **hashFunctions)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/backend/executor/execGrouping.c:212,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:220,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execGrouping.c:223,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:225,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/execGrouping.c:227,1
    - Dst: murmurhash32
      Src: /src/postgres/src/backend/executor/execGrouping.c:249,1
    - Dst: tuplehash_create
      Src: /src/postgres/src/backend/executor/execGrouping.c:251,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execGrouping.c:257,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execGrouping.c:257,1
    - Dst: ExecBuildHash32FromAttrs
      Src: /src/postgres/src/backend/executor/execGrouping.c:261,1
    - Dst: ExecBuildGroupingEqual
      Src: /src/postgres/src/backend/executor/execGrouping.c:271,1
    - Dst: CreateStandaloneExprContext
      Src: /src/postgres/src/backend/executor/execGrouping.c:284,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:286,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 14
    argNames:
    - parent
    - inputDesc
    - inputOps
    - numCols
    - keyColIdx
    - eqfuncoids
    - hashfunctions
    - collations
    - nelements
    - additionalsize
    - metacxt
    - tuplescxt
    - tempcxt
    - use_variable_hash_iv
    argTypes:
    - PlanState*
    - TupleDesc
    - TupleTableSlotOps*
    - int
    - AttrNumber*
    - Oid*
    - FmgrInfo*
    - Oid*
    - double
    - Size
    - MemoryContext
    - MemoryContext
    - MemoryContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 183
    functionDepth: 7
    functionLinenumber: 183
    functionLinenumberEnd: 289
    functionName: BuildTupleHashTable
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 1
    functionsReached:
    - CreateStandaloneExprContext
    - ExecBuildGroupingEqual
    - isnan
    - Assert
    - CreateTupleDescCopy
    - murmurhash32
    - MemoryContextSwitchTo
    - MakeSingleTupleTableSlot
    - palloc_object
    - tuplehash_create
    - MAXALIGN
    - ExecBuildHash32FromAttrs
    linkageType: ''
    returnType: TupleHashTable
    signature: "TupleHashTable BuildTupleHashTable(PlanState *parent,\n\t\t\t\t\tTupleDesc
      inputDesc,\n\t\t\t\t\tconst TupleTableSlotOps *inputOps,\n\t\t\t\t\tint numCols,\n\t\t\t\t\tAttrNumber
      *keyColIdx,\n\t\t\t\t\tconst Oid *eqfuncoids,\n\t\t\t\t\tFmgrInfo *hashfunctions,\n\t\t\t\t\tOid
      *collations,\n\t\t\t\t\tdouble nelements,\n\t\t\t\t\tSize additionalsize,\n\t\t\t\t\tMemoryContext
      metacxt,\n\t\t\t\t\tMemoryContext tuplescxt,\n\t\t\t\t\tMemoryContext tempcxt,\n\t\t\t\t\tbool
      use_variable_hash_iv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplehash_reset
      Src: /src/postgres/src/backend/executor/execGrouping.c:304,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/execGrouping.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - TupleHashTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 306
    functionName: ResetTupleHashTable
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 1
    functionsReached:
    - MemoryContextReset
    - tuplehash_reset
    linkageType: ''
    returnType: void
    signature: void ResetTupleHashTable(TupleHashTable hashtable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplehash_estimate_space
      Src: /src/postgres/src/backend/executor/execGrouping.c:329,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execGrouping.c:347,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execGrouping.c:348,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execGrouping.c:349,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - nentries
    - tupleWidth
    - additionalsize
    argTypes:
    - double
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 364
    functionName: EstimateTupleHashTableSpace
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    - tuplehash_estimate_space
    linkageType: ''
    returnType: Size
    signature: "Size EstimateTupleHashTableSpace(double nentries,\n\t\t\t\t\t\t\tSize
      tupleWidth,\n\t\t\t\t\t\t\tSize additionalsize)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:390,1
    - Dst: TupleHashTableHash_internal
      Src: /src/postgres/src/backend/executor/execGrouping.c:397,1
    - Dst: LookupTupleHashEntry_internal
      Src: /src/postgres/src/backend/executor/execGrouping.c:398,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:403,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - hashtable
    - slot
    - isnew
    - hash
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - bool*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 408
    functionName: LookupTupleHashEntry
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 1
    functionsReached:
    - LookupTupleHashEntry_internal
    - TupleHashTableHash_internal
    - Assert
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleHashEntry
    signature: "TupleHashEntry LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot
      *slot,\n\t\t\t\t\t bool *isnew, uint32 *hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:423,1
    - Dst: TupleHashTableHash_internal
      Src: /src/postgres/src/backend/executor/execGrouping.c:425,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - hashtable
    - slot
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 430
    functionName: TupleHashTableHash
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 0
    functionsReached:
    - TupleHashTableHash_internal
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: uint32
    signature: uint32 TupleHashTableHash(TupleHashTable hashtable, TupleTableSlot
      *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:444,1
    - Dst: LookupTupleHashEntry_internal
      Src: /src/postgres/src/backend/executor/execGrouping.c:451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:452,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - hashtable
    - slot
    - isnew
    - hash
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - bool*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 457
    functionName: LookupTupleHashEntryHash
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 0
    functionsReached:
    - LookupTupleHashEntry_internal
    - Assert
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleHashEntry
    signature: "TupleHashEntry LookupTupleHashEntryHash(TupleHashTable hashtable,
      TupleTableSlot *slot,\n\t\t\t\t\t\t bool *isnew, uint32 hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:478,1
    - Dst: tuplehash_lookup
      Src: /src/postgres/src/backend/executor/execGrouping.c:487,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - hashtable
    - slot
    - eqcomp
    - hashexpr
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - ExprState*
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 491
    functionName: FindTupleHashEntry
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 0
    functionsReached:
    - tuplehash_lookup
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleHashEntry
    signature: "TupleHashEntry FindTupleHashEntry(TupleHashTable hashtable, TupleTableSlot
      *slot,\n\t\t\t\t   ExprState *eqcomp,\n\t\t\t\t   ExprState *hashexpr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execGrouping.c:514,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execGrouping.c:514,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/execGrouping.c:527,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execGrouping.c:528,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execGrouping.c:528,1
    - Dst: murmurhash32
      Src: /src/postgres/src/backend/executor/execGrouping.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - tb
    - tuple
    argTypes:
    - struct tuplehash_hash*
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 501
    functionDepth: 5
    functionLinenumber: 501
    functionLinenumberEnd: 539
    functionName: TupleHashTableHash_internal
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 2
    functionsReached:
    - ExecStoreMinimalTuple
    - murmurhash32
    - ExecEvalExpr
    - DatumGetUInt32
    linkageType: ''
    returnType: uint32
    signature: "uint32 TupleHashTableHash_internal(struct tuplehash_hash *tb,\n\t\t\t\t\t\t\tMinimalTuple
      tuple)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplehash_insert_hash
      Src: /src/postgres/src/backend/executor/execGrouping.c:561,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:573,1
    - Dst: ExecCopySlotMinimalTupleExtra
      Src: /src/postgres/src/backend/executor/execGrouping.c:585,1
    - Dst: tuplehash_lookup_hash
      Src: /src/postgres/src/backend/executor/execGrouping.c:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - hashtable
    - slot
    - isnew
    - hash
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - bool*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 595
    functionName: LookupTupleHashEntry_internal
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 2
    functionsReached:
    - ExecCopySlotMinimalTupleExtra
    - tuplehash_insert_hash
    - tuplehash_lookup_hash
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: TupleHashEntry
    signature: "TupleHashEntry LookupTupleHashEntry_internal(TupleHashTable hashtable,
      TupleTableSlot *slot,\n\t\t\t\t\t\t\t  bool *isnew, uint32 hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:614,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/execGrouping.c:616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:617,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/execGrouping.c:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - tb
    - tuple1
    - tuple2
    argTypes:
    - struct tuplehash_hash*
    - MinimalTuple
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 600
    functionDepth: 5
    functionLinenumber: 600
    functionLinenumberEnd: 624
    functionName: TupleHashTableMatch
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecQualAndReset
    - ExecStoreMinimalTuple
    linkageType: ''
    returnType: int
    signature: int TupleHashTableMatch(struct tuplehash_hash *tb, MinimalTuple tuple1,
      MinimalTuple tuple2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: ExecBitmapAnd
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapAnd.c
    functionUses: 1
    functionsReached:
    - elog
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecBitmapAnd(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:60,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:68,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:73,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:75,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:91,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:93,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - BitmapAnd*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 57
    functionDepth: 11
    functionLinenumber: 57
    functionLinenumberEnd: 106
    functionName: ExecInitBitmapAnd
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapAnd.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - foreach
    - Assert
    - palloc0
    - makeNode
    - lfirst
    - list_length
    linkageType: ''
    returnType: BitmapAndState
    signature: 'BitmapAndState *

      ExecInitBitmapAnd(BitmapAnd *node, EState *estate, int eflags)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:122,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:138,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:140,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:141,1
    - Dst: tbm_intersect
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:147,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:148,1
    - Dst: tbm_is_empty
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:158,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:163,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:167,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapAndState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 170
    functionName: MultiExecBitmapAnd
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapAnd.c
    functionUses: 1
    functionsReached:
    - elog
    - tbm_is_empty
    - InstrStopNode
    - tbm_intersect
    - tbm_free
    - MultiExecProcNode
    - IsA
    - InstrStartNode
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecBitmapAnd(BitmapAndState *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapAndState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 180
    functionDepth: 4
    functionLinenumber: 180
    functionLinenumberEnd: 201
    functionName: ExecEndBitmapAnd
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapAnd.c
    functionUses: 1
    functionsReached:
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndBitmapAnd(BitmapAndState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:217,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapAndState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 203
    functionDepth: 5
    functionLinenumber: 203
    functionLinenumberEnd: 226
    functionName: ExecReScanBitmapAnd
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapAnd.c
    functionUses: 0
    functionsReached:
    - UpdateChangedParamSet
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanBitmapAnd(BitmapAndState *node)
  - BBCount: 53
    BranchProfiles: []
    Callsites:
    - Dst: InstrEndLoop
      Src: /src/postgres/src/backend/executor/execAmi.c:82,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execAmi.c:101,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execAmi.c:103,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/execAmi.c:108,1
    - Dst: ExecReScanSetParamPlan
      Src: /src/postgres/src/backend/executor/execAmi.c:110,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execAmi.c:112,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execAmi.c:114,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/execAmi.c:118,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execAmi.c:121,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/execAmi.c:122,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execAmi.c:122,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/execAmi.c:123,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/execAmi.c:124,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/execAmi.c:124,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/execAmi.c:129,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:132,1
    - Dst: ExecReScanResult
      Src: /src/postgres/src/backend/executor/execAmi.c:135,1
    - Dst: ExecReScanProjectSet
      Src: /src/postgres/src/backend/executor/execAmi.c:139,1
    - Dst: ExecReScanModifyTable
      Src: /src/postgres/src/backend/executor/execAmi.c:143,1
    - Dst: ExecReScanAppend
      Src: /src/postgres/src/backend/executor/execAmi.c:147,1
    - Dst: ExecReScanMergeAppend
      Src: /src/postgres/src/backend/executor/execAmi.c:151,1
    - Dst: ExecReScanRecursiveUnion
      Src: /src/postgres/src/backend/executor/execAmi.c:155,1
    - Dst: ExecReScanBitmapAnd
      Src: /src/postgres/src/backend/executor/execAmi.c:159,1
    - Dst: ExecReScanBitmapOr
      Src: /src/postgres/src/backend/executor/execAmi.c:163,1
    - Dst: ExecReScanSeqScan
      Src: /src/postgres/src/backend/executor/execAmi.c:167,1
    - Dst: ExecReScanSampleScan
      Src: /src/postgres/src/backend/executor/execAmi.c:171,1
    - Dst: ExecReScanGather
      Src: /src/postgres/src/backend/executor/execAmi.c:175,1
    - Dst: ExecReScanGatherMerge
      Src: /src/postgres/src/backend/executor/execAmi.c:179,1
    - Dst: ExecReScanIndexScan
      Src: /src/postgres/src/backend/executor/execAmi.c:183,1
    - Dst: ExecReScanIndexOnlyScan
      Src: /src/postgres/src/backend/executor/execAmi.c:187,1
    - Dst: ExecReScanBitmapIndexScan
      Src: /src/postgres/src/backend/executor/execAmi.c:191,1
    - Dst: ExecReScanBitmapHeapScan
      Src: /src/postgres/src/backend/executor/execAmi.c:195,1
    - Dst: ExecReScanTidScan
      Src: /src/postgres/src/backend/executor/execAmi.c:199,1
    - Dst: ExecReScanTidRangeScan
      Src: /src/postgres/src/backend/executor/execAmi.c:203,1
    - Dst: ExecReScanSubqueryScan
      Src: /src/postgres/src/backend/executor/execAmi.c:207,1
    - Dst: ExecReScanFunctionScan
      Src: /src/postgres/src/backend/executor/execAmi.c:211,1
    - Dst: ExecReScanTableFuncScan
      Src: /src/postgres/src/backend/executor/execAmi.c:215,1
    - Dst: ExecReScanValuesScan
      Src: /src/postgres/src/backend/executor/execAmi.c:219,1
    - Dst: ExecReScanCteScan
      Src: /src/postgres/src/backend/executor/execAmi.c:223,1
    - Dst: ExecReScanNamedTuplestoreScan
      Src: /src/postgres/src/backend/executor/execAmi.c:227,1
    - Dst: ExecReScanWorkTableScan
      Src: /src/postgres/src/backend/executor/execAmi.c:231,1
    - Dst: ExecReScanForeignScan
      Src: /src/postgres/src/backend/executor/execAmi.c:235,1
    - Dst: ExecReScanCustomScan
      Src: /src/postgres/src/backend/executor/execAmi.c:239,1
    - Dst: ExecReScanNestLoop
      Src: /src/postgres/src/backend/executor/execAmi.c:243,1
    - Dst: ExecReScanMergeJoin
      Src: /src/postgres/src/backend/executor/execAmi.c:247,1
    - Dst: ExecReScanHashJoin
      Src: /src/postgres/src/backend/executor/execAmi.c:251,1
    - Dst: ExecReScanMaterial
      Src: /src/postgres/src/backend/executor/execAmi.c:255,1
    - Dst: ExecReScanMemoize
      Src: /src/postgres/src/backend/executor/execAmi.c:259,1
    - Dst: ExecReScanSort
      Src: /src/postgres/src/backend/executor/execAmi.c:263,1
    - Dst: ExecReScanIncrementalSort
      Src: /src/postgres/src/backend/executor/execAmi.c:267,1
    - Dst: ExecReScanGroup
      Src: /src/postgres/src/backend/executor/execAmi.c:271,1
    - Dst: ExecReScanAgg
      Src: /src/postgres/src/backend/executor/execAmi.c:275,1
    - Dst: ExecReScanWindowAgg
      Src: /src/postgres/src/backend/executor/execAmi.c:279,1
    - Dst: ExecReScanUnique
      Src: /src/postgres/src/backend/executor/execAmi.c:283,1
    - Dst: ExecReScanHash
      Src: /src/postgres/src/backend/executor/execAmi.c:287,1
    - Dst: ExecReScanSetOp
      Src: /src/postgres/src/backend/executor/execAmi.c:291,1
    - Dst: ExecReScanLockRows
      Src: /src/postgres/src/backend/executor/execAmi.c:295,1
    - Dst: ExecReScanLimit
      Src: /src/postgres/src/backend/executor/execAmi.c:299,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAmi.c:303,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:303,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execAmi.c:309,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 156
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 77
    functionDepth: 6
    functionLinenumber: 77
    functionLinenumberEnd: 312
    functionName: ExecReScan
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 25
    functionsReached:
    - ExecReScanAgg
    - ExecReScanCustomScan
    - bms_free
    - ExecReScanGroup
    - ExecReScanIncrementalSort
    - ExecReScanWindowAgg
    - ExecReScanMaterial
    - nodeTag
    - ExecReScanSetOp
    - elog
    - ExecReScanBitmapIndexScan
    - foreach
    - innerPlanState
    - ExecReScanTableFuncScan
    - ExecReScanNamedTuplestoreScan
    - ExecReScanIndexScan
    - ExecReScanProjectSet
    - ExecReScanSort
    - outerPlanState
    - ExecReScanHashJoin
    - ExecReScanForeignScan
    - ExecReScanWorkTableScan
    - ExecReScanSampleScan
    - ExecReScanBitmapAnd
    - ExecReScanLimit
    - InstrEndLoop
    - ExecReScanTidRangeScan
    - ExecReScanTidScan
    - lfirst
    - ExecReScanRecursiveUnion
    - UpdateChangedParamSet
    - ExecReScanSetParamPlan
    - ExecReScanNestLoop
    - ExecReScanBitmapHeapScan
    - ExecReScanMergeJoin
    - ReScanExprContext
    - ExecReScanValuesScan
    - ExecReScanFunctionScan
    - ExecReScanGather
    - ExecReScanMemoize
    - ExecReScanCteScan
    - ExecReScanGatherMerge
    - ExecReScanResult
    - ExecReScanModifyTable
    - ExecReScanMergeAppend
    - ExecReScanSubqueryScan
    - ExecReScanUnique
    - ExecReScanHash
    - ExecReScanAppend
    - ExecReScanIndexOnlyScan
    - ExecReScanSeqScan
    - ExecReScanLockRows
    - ExecReScanBitmapOr
    linkageType: ''
    returnType: void
    signature: void ExecReScan(PlanState *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:330,1
    - Dst: ExecIndexMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:333,1
    - Dst: ExecIndexOnlyMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:337,1
    - Dst: ExecCustomMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:341,1
    - Dst: ExecMaterialMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:345,1
    - Dst: ExecSortMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:349,1
    - Dst: ExecResultMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:353,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAmi.c:358,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:358,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 327
    functionDepth: 3
    functionLinenumber: 327
    functionLinenumberEnd: 361
    functionName: ExecMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 1
    functionsReached:
    - elog
    - ExecIndexMarkPos
    - ExecMaterialMarkPos
    - ExecCustomMarkPos
    - ExecResultMarkPos
    - ExecSortMarkPos
    - nodeTag
    - ExecIndexOnlyMarkPos
    linkageType: ''
    returnType: void
    signature: void ExecMarkPos(PlanState *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:379,1
    - Dst: ExecIndexRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:382,1
    - Dst: ExecIndexOnlyRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:386,1
    - Dst: ExecCustomRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:390,1
    - Dst: ExecMaterialRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:394,1
    - Dst: ExecSortRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:398,1
    - Dst: ExecResultRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:402,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAmi.c:406,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:406,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 409
    functionName: ExecRestrPos
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 1
    functionsReached:
    - elog
    - ExecResultRestrPos
    - ExecMaterialRestrPos
    - ExecCustomRestrPos
    - ExecIndexOnlyRestrPos
    - ExecIndexRestrPos
    - nodeTag
    - ExecSortRestrPos
    linkageType: ''
    returnType: void
    signature: void ExecRestrPos(PlanState *node)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execAmi.c:434,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execAmi.c:441,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execAmi.c:453,1
    - Dst: ExecSupportsMarkRestore
      Src: /src/postgres/src/backend/executor/execAmi.c:454,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execAmi.c:455,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execAmi.c:457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execAmi.c:462,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execAmi.c:462,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execAmi.c:468,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execAmi.c:475,1
    - Dst: ExecSupportsMarkRestore
      Src: /src/postgres/src/backend/executor/execAmi.c:476,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execAmi.c:476,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execAmi.c:483,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execAmi.c:490,1
    - Dst: ExecSupportsMarkRestore
      Src: /src/postgres/src/backend/executor/execAmi.c:491,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execAmi.c:491,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - pathnode
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 501
    functionName: ExecSupportsMarkRestore
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 2
    functionsReached:
    - Assert
    - linitial
    - castNode
    - ExecSupportsMarkRestore
    - list_length
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool ExecSupportsMarkRestore(Path *pathnode)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:525,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/execAmi.c:528,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:529,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/execAmi.c:529,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execAmi.c:541,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:543,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execAmi.c:543,1
    - Dst: IndexSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:558,1
    - Dst: IndexSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:561,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:564,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:592,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/execAmi.c:592,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 1
    argNames:
    - node
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 597
    functionName: ExecSupportsBackwardScan
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 2
    functionsReached:
    - foreach
    - IndexSupportsBackwardScan
    - ExecSupportsBackwardScan
    - lfirst
    - outerPlan
    - nodeTag
    linkageType: ''
    returnType: bool
    signature: bool ExecSupportsBackwardScan(Plan *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/execAmi.c:612,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/execAmi.c:612,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/execAmi.c:613,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAmi.c:614,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/execAmi.c:615,1
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/executor/execAmi.c:618,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/execAmi.c:622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - indexid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 603
    functionDepth: 3
    functionLinenumber: 603
    functionLinenumberEnd: 625
    functionName: IndexSupportsBackwardScan
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - GetIndexAmRoutineByAmId
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool IndexSupportsBackwardScan(Oid indexid)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - plantype
    argTypes:
    - NodeTag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 635
    functionDepth: 0
    functionLinenumber: 635
    functionLinenumberEnd: 654
    functionName: ExecMaterializesOutput
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ExecMaterializesOutput(NodeTag plantype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tfuncFetchRows
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:66,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 76
    functionName: TableFuncNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 0
    functionsReached:
    - tuplestore_gettupleslot
    - tfuncFetchRows
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      TableFuncNext(TableFuncScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - TableFuncScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: TableFuncRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool TableFuncRecheck(TableFuncScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:100,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 105
    functionName: ExecTableFuncScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecTableFuncScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:120,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:125,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:125,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:126,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:126,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:131,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:141,1
    - Dst: BuildDescFromLists
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:146,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:151,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:157,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:158,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:164,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:171,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:179,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:181,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:183,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:185,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:187,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:189,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:191,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:196,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:197,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:206,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:206,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - TableFuncScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 111
    functionDepth: 9
    functionLinenumber: 111
    functionLinenumberEnd: 212
    functionName: ExecInitTableFuncScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - getTypeInputInfo
    - fmgr_info
    - ExecAssignExprContext
    - Assert
    - BuildDescFromLists
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - ExecInitExprList
    - makeNode
    - ExecAssignScanProjectionInfo
    - palloc_array
    - ExecInitExpr
    - AllocSetContextCreate
    - TupleDescAttr
    - ExecInitQual
    - outerPlan
    - innerPlan
    linkageType: ''
    returnType: TableFuncScanState
    signature: 'TableFuncScanState *

      ExecInitTableFuncScan(TableFuncScan *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 229
    functionName: ExecEndTableFuncScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - tuplestore_end
    linkageType: ''
    returnType: void
    signature: void ExecEndTableFuncScan(TableFuncScanState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:243,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:244,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:253,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:259,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 237
    functionDepth: 4
    functionLinenumber: 237
    functionLinenumberEnd: 260
    functionName: ExecReScanTableFuncScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - tuplestore_end
    - ExecScanReScan
    - tuplestore_rescan
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanTableFuncScan(TableFuncScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:276,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:279,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:280,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:291,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:293,1
    - Dst: TableFuncRoutine*::InitOpaque
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:295,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:302,1
    - Dst: tfuncInitialize
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:307,1
    - Dst: tfuncLoadRows
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:313,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:316,1
    - Dst: TableFuncRoutine*::DestroyOpaque
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:319,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:320,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:322,1
    - Dst: TableFuncRoutine*::DestroyOpaque
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:328,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:332,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - tstate
    - econtext
    argTypes:
    - TableFuncScanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 334
    functionName: tfuncFetchRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - tuplestore_begin_heap
    - PG_TRY
    - PG_CATCH
    - MemoryContextReset
    - Assert
    - tfuncInitialize
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - PG_RE_THROW
    - TableFuncRoutine*::DestroyOpaque
    - tfuncLoadRows
    - TableFuncRoutine*::InitOpaque
    - PG_END_TRY
    linkageType: ''
    returnType: void
    signature: void tfuncFetchRows(TableFuncScanState *tstate, ExprContext *econtext)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TableFuncRoutine*::SetDocument
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:357,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:360,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:362,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:363,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:369,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:370,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:371,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:372,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:375,1
    - Dst: TableFuncRoutine*::SetNamespace
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:377,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:388,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:390,1
    - Dst: TableFuncRoutine*::SetRowFilter
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:392,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:392,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:402,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:405,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:409,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:413,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:415,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:416,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:417,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:418,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:419,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:420,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:423,1
    - Dst: TableFuncRoutine*::SetColumnFilter
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:425,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 3
    argNames:
    - tstate
    - econtext
    - doc
    argTypes:
    - TableFuncScanState*
    - ExprContext*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 430
    functionName: tfuncInitialize
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - forboth
    - TableFuncRoutine*::SetDocument
    - strVal
    - foreach
    - errcode
    - TableFuncRoutine*::SetRowFilter
    - errdetail
    - ereport
    - ExecEvalExpr
    - TableFuncRoutine*::SetColumnFilter
    - lfirst
    - errmsg
    - NameStr
    - TableFuncRoutine*::SetNamespace
    - TupleDescAttr
    - TextDatumGetCString
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void tfuncInitialize(TableFuncScanState *tstate, ExprContext *econtext,
      Datum doc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:456,1
    - Dst: TableFuncRoutine*::FetchRow
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:461,1
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:463,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:466,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:468,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:476,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:481,1
    - Dst: TableFuncRoutine*::GetValue
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:488,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:497,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:500,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:505,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:506,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:507,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:508,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:509,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:516,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:519,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:521,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:524,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - tstate
    - econtext
    argTypes:
    - TableFuncScanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 435
    functionDepth: 3
    functionLinenumber: 435
    functionLinenumberEnd: 525
    functionName: tfuncLoadRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - MemoryContextReset
    - errcode
    - Int32GetDatum
    - tuplestore_putvalues
    - bms_is_member
    - ereport
    - ExecEvalExpr
    - CHECK_FOR_INTERRUPTS
    - MemoryContextSwitchTo
    - lnext
    - list_head
    - lfirst
    - TableFuncRoutine*::FetchRow
    - errmsg
    - ExecClearTuple
    - TableFuncRoutine*::GetValue
    - NameStr
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void tfuncLoadRows(TableFuncScanState *tstate, ExprContext *econtext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGather.c:61,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeGather.c:61,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeGather.c:66,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeGather.c:81,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeGather.c:86,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:87,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeGather.c:87,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeGather.c:88,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:88,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeGather.c:102,1
    - Dst: ExecConditionalAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeGather.c:103,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeGather.c:118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGather.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Gather*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 53
    functionDepth: 11
    functionLinenumber: 53
    functionLinenumberEnd: 128
    functionName: ExecInitGather
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - ExecInitExtraTupleSlot
    - ExecGetResultType
    - ExecAssignExprContext
    - Assert
    - ExecInitResultTypeTL
    - ExecConditionalAssignProjectionInfo
    - makeNode
    - outerPlanState
    - outerPlan
    - innerPlan
    linkageType: ''
    returnType: GatherState
    signature: 'GatherState *

      ExecInitGather(Gather *node, EState *estate, int eflags)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeGather.c:140,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGather.c:144,1
    - Dst: ExecInitParallelPlan
      Src: /src/postgres/src/backend/executor/nodeGather.c:167,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:167,1
    - Dst: ExecParallelReinitialize
      Src: /src/postgres/src/backend/executor/nodeGather.c:173,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:173,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/executor/nodeGather.c:182,1
    - Dst: ExecParallelCreateReaders
      Src: /src/postgres/src/backend/executor/nodeGather.c:196,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeGather.c:200,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeGather.c:201,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeGather.c:224,1
    - Dst: gather_getnext
      Src: /src/postgres/src/backend/executor/nodeGather.c:230,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGather.c:231,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeGather.c:242,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 137
    functionDepth: 9
    functionLinenumber: 137
    functionLinenumberEnd: 243
    functionName: ExecGather
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 0
    functionsReached:
    - gather_getnext
    - ExecParallelCreateReaders
    - ResetExprContext
    - memcpy
    - LaunchParallelWorkers
    - castNode
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - ExecInitParallelPlan
    - ExecParallelReinitialize
    - palloc
    - ExecProject
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGather(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeGather.c:254,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:254,1
    - Dst: ExecShutdownGather
      Src: /src/postgres/src/backend/executor/nodeGather.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 251
    functionDepth: 4
    functionLinenumber: 251
    functionLinenumberEnd: 256
    functionName: ExecEndGather
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - ExecEndNode
    - ExecShutdownGather
    linkageType: ''
    returnType: void
    signature: void ExecEndGather(GatherState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:266,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGather.c:273,1
    - Dst: gather_readnext
      Src: /src/postgres/src/backend/executor/nodeGather.c:277,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeGather.c:279,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeGather.c:281,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeGather.c:295,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGather.c:298,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeGather.c:305,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - gatherstate
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 263
    functionDepth: 5
    functionLinenumber: 263
    functionLinenumberEnd: 306
    functionName: gather_getnext
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - gather_readnext
    - HeapTupleIsValid
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - ExecStoreMinimalTuple
    - ExecClearTuple
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      gather_getnext(GatherState *gatherstate)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGather.c:323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGather.c:333,1
    - Dst: TupleQueueReaderNext
      Src: /src/postgres/src/backend/executor/nodeGather.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGather.c:343,1
    - Dst: ExecShutdownGatherWorkers
      Src: /src/postgres/src/backend/executor/nodeGather.c:347,1
    - Dst: memmove
      Src: /src/postgres/src/backend/executor/nodeGather.c:350,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/executor/nodeGather.c:386,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/executor/nodeGather.c:388,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - gatherstate
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 392
    functionName: gather_readnext
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - Assert
    - memmove
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - ExecShutdownGatherWorkers
    - WaitLatch
    - TupleQueueReaderNext
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple gather_readnext(GatherState *gatherstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelFinish
      Src: /src/postgres/src/backend/executor/nodeGather.c:404,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeGather.c:408,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 400
    functionDepth: 3
    functionLinenumber: 400
    functionLinenumberEnd: 410
    functionName: ExecShutdownGatherWorkers
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - pfree
    - ExecParallelFinish
    linkageType: ''
    returnType: void
    signature: void ExecShutdownGatherWorkers(GatherState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecShutdownGatherWorkers
      Src: /src/postgres/src/backend/executor/nodeGather.c:421,1
    - Dst: ExecParallelCleanup
      Src: /src/postgres/src/backend/executor/nodeGather.c:426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 418
    functionDepth: 4
    functionLinenumber: 418
    functionLinenumberEnd: 429
    functionName: ExecShutdownGather
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 2
    functionsReached:
    - ExecShutdownGatherWorkers
    - ExecParallelCleanup
    linkageType: ''
    returnType: void
    signature: void ExecShutdownGather(GatherState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:446,1
    - Dst: ExecShutdownGatherWorkers
      Src: /src/postgres/src/backend/executor/nodeGather.c:449,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeGather.c:462,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeGather.c:476,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 442
    functionDepth: 7
    functionLinenumber: 442
    functionLinenumberEnd: 477
    functionName: ExecReScanGather
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - bms_add_member
    - ExecReScan
    - ExecShutdownGatherWorkers
    linkageType: ''
    returnType: void
    signature: void ExecReScanGather(GatherState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionCombine
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:99,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:111,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:117,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:127,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:135,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:137,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:146,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:149,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:162,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 163
    functionName: IndexNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 0
    functionsReached:
    - ScanRelIsReadOnly
    - index_rescan
    - CHECK_FOR_INTERRUPTS
    - index_getnext_slot
    - ExecQualAndReset
    - ScanDirectionCombine
    - ExecClearTuple
    - InstrCountFiltered2
    - index_beginscan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      IndexNext(IndexScanState *node)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:196,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:197,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:197,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:209,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:215,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:225,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:232,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:239,1
    - Dst: pairingheap_first
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:241,1
    - Dst: cmp_orderbyvals
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:244,1
    - Dst: reorderqueue_pop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:252,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:255,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:262,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:269,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:286,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:289,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:291,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:299,1
    - Dst: EvalOrderByExpressions
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:300,1
    - Dst: cmp_orderbyvals
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:311,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:317,1
    - Dst: cmp_orderbyvals
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:340,1
    - Dst: reorderqueue_push
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:347,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:361,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 66
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 172
    functionDepth: 7
    functionLinenumber: 172
    functionLinenumberEnd: 362
    functionName: IndexNextWithReorder
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - ScanDirectionIsBackward
    - pairingheap_first
    - ExecQualAndReset
    - InstrCountFiltered2
    - pairingheap_is_empty
    - elog
    - Assert
    - ScanDirectionIsForward
    - ExecClearTuple
    - EvalOrderByExpressions
    - reorderqueue_pop
    - ExecForceStoreHeapTuple
    - ScanRelIsReadOnly
    - CHECK_FOR_INTERRUPTS
    - cmp_orderbyvals
    - index_rescan
    - index_getnext_slot
    - reorderqueue_push
    - index_beginscan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      IndexNextWithReorder(IndexScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:374,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:377,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:379,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:381,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - node
    - econtext
    argTypes:
    - IndexScanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 388
    functionName: EvalOrderByExpressions
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - lfirst
    - foreach
    - ExecEvalExpr
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void EvalOrderByExpressions(IndexScanState *node, ExprContext *econtext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - IndexScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 393
    functionDepth: 4
    functionLinenumber: 393
    functionLinenumberEnd: 406
    functionName: IndexRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 0
    functionsReached:
    - ExecQualAndReset
    linkageType: ''
    returnType: bool
    signature: bool IndexRecheck(IndexScanState *node, TupleTableSlot *slot)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SortSupport::comparator
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:436,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 5
    argNames:
    - adist
    - anulls
    - bdist
    - bnulls
    - node
    argTypes:
    - Datum*
    - bool*
    - Datum*
    - bool*
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 442
    functionName: cmp_orderbyvals
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - SortSupport::comparator
    linkageType: ''
    returnType: int
    signature: "int cmp_orderbyvals(const Datum *adist, const bool *anulls,\n\t\t\t\tconst
      Datum *bdist, const bool *bnulls,\n\t\t\t\tIndexScanState *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmp_orderbyvals
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - pairingheap_node*
    - pairingheap_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 460
    functionName: reorderqueue_cmp
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 0
    functionsReached:
    - cmp_orderbyvals
    linkageType: ''
    returnType: int
    signature: "int reorderqueue_cmp(const pairingheap_node *a, const pairingheap_node
      *b,\n\t\t\t\t void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:471,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:475,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:476,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:477,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:478,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:482,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:489,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - node
    - slot
    - orderbyvals
    - orderbynulls
    argTypes:
    - IndexScanState*
    - TupleTableSlot*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 492
    functionName: reorderqueue_push
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - pairingheap_add
    - datumCopy
    - palloc_array
    - MemoryContextSwitchTo
    - ExecCopySlotHeapTuple
    - palloc_object
    linkageType: ''
    returnType: void
    signature: "void reorderqueue_push(IndexScanState *node, TupleTableSlot *slot,\n\t\t\t\t
      \ const Datum *orderbyvals, const bool *orderbynulls)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap_remove_first
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:504,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:510,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:510,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:512,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:513,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:514,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 517
    functionName: reorderqueue_pop
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - pfree
    - DatumGetPointer
    - pairingheap_remove_first
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple reorderqueue_pop(IndexScanState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:527,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:533,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:536,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:540,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 524
    functionDepth: 7
    functionLinenumber: 524
    functionLinenumberEnd: 543
    functionName: ExecIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    - ExecReScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecIndexScan(PlanState *pstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:570,1
    - Dst: ExecIndexEvalRuntimeKeys
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:571,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:582,1
    - Dst: reorderqueue_pop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:584,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:585,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:591,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:596,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 556
    functionDepth: 4
    functionLinenumber: 556
    functionLinenumberEnd: 597
    functionName: ExecReScanIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - heap_freetuple
    - index_rescan
    - ExecIndexEvalRuntimeKeys
    - reorderqueue_pop
    - ExecScanReScan
    - pairingheap_is_empty
    linkageType: ''
    returnType: void
    signature: void ExecReScanIndexScan(IndexScanState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:612,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:638,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:649,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:649,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:655,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - econtext
    - runtimeKeys
    - numRuntimeKeys
    argTypes:
    - ExprContext*
    - IndexRuntimeKeyInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 656
    functionName: ExecIndexEvalRuntimeKeys
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 3
    functionsReached:
    - PointerGetDatum
    - ExecEvalExpr
    - PG_DETOAST_DATUM
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void ExecIndexEvalRuntimeKeys(ExprContext *econtext,\n\t\t\t\t\t\t
      IndexRuntimeKeyInfo *runtimeKeys, int numRuntimeKeys)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:675,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:695,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:703,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:705,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:705,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:707,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:708,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:733,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - econtext
    - arrayKeys
    - numArrayKeys
    argTypes:
    - ExprContext*
    - IndexArrayKeyInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 736
    functionName: ExecIndexEvalArrayKeys
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - get_typlenbyvalalign
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - ARR_ELEMTYPE
    - DatumGetArrayTypeP
    - deconstruct_array
    linkageType: ''
    returnType: bool
    signature: "bool ExecIndexEvalArrayKeys(ExprContext *econtext,\n\t\t\t\t\t   IndexArrayKeyInfo
      *arrayKeys, int numArrayKeys)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - arrayKeys
    - numArrayKeys
    argTypes:
    - IndexArrayKeyInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 745
    functionDepth: 0
    functionLinenumber: 745
    functionLinenumberEnd: 783
    functionName: ExecIndexAdvanceArrayKeys
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ExecIndexAdvanceArrayKeys(IndexArrayKeyInfo *arrayKeys, int numArrayKeys)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:811,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:827,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:829,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 790
    functionDepth: 2
    functionLinenumber: 790
    functionLinenumberEnd: 830
    functionName: ExecEndIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsParallelWorker
    - index_endscan
    - index_close
    linkageType: ''
    returnType: void
    signature: void ExecEndIndexScan(IndexScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:858,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:864,1
    - Dst: index_markpos
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:869,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 839
    functionDepth: 2
    functionLinenumber: 839
    functionLinenumberEnd: 870
    functionName: ExecIndexMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - index_markpos
    - elog
    linkageType: ''
    returnType: void
    signature: void ExecIndexMarkPos(IndexScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:887,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:893,1
    - Dst: index_restrpos
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:898,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 876
    functionDepth: 2
    functionLinenumber: 876
    functionLinenumberEnd: 899
    functionName: ExecIndexRestrPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - index_restrpos
    - elog
    linkageType: ''
    returnType: void
    signature: void ExecIndexRestrPos(IndexScanState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:922,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:932,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:937,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:945,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:946,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:947,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:953,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:954,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:967,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:969,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:971,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:983,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:986,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:987,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:999,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1036,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1037,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1037,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1039,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1041,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1043,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1045,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1047,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1048,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1049,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1050,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1062,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1064,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1072,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1074,1
    - Dst: pairingheap_allocate
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1077,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1091,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 55
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - IndexScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 912
    functionDepth: 9
    functionLinenumber: 912
    functionLinenumberEnd: 1104
    functionName: ExecInitIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - get_typlenbyval
    - exprType
    - ExecInitExprList
    - lfirst_oid
    - palloc
    - Assert
    - RelationGetDescr
    - list_length
    - palloc0_object
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - index_open
    - exprCollation
    - lfirst
    - ExecInitQual
    - ExecOpenScanRelation
    - PrepareSortSupportFromOrderingOp
    - table_slot_callbacks
    - ExecAssignExprContext
    - palloc0
    - makeNode
    - ExecAssignScanProjectionInfo
    - exec_rt_fetch
    - pairingheap_allocate
    - ExecIndexBuildScanKeys
    - forboth
    linkageType: ''
    returnType: IndexScanState
    signature: 'IndexScanState *

      ExecInitIndexScan(IndexScan *node, EState *estate, int eflags)'
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1184,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1185,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1199,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1209,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1222,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1223,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1235,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1237,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1240,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1242,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1244,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1248,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1256,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1267,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1272,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1274,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1290,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1296,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1301,1
    - Dst: TypeIsToastable
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1303,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1311,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1331,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1334,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1334,1
    - Dst: forfour
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1338,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1346,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1347,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1348,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1349,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1357,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1359,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1361,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1371,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1374,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1380,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1382,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1386,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1387,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1393,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1396,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1398,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1414,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1420,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1425,1
    - Dst: TypeIsToastable
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1427,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1435,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1453,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1458,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1460,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1467,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1469,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1476,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1478,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1481,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1483,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1485,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1489,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1497,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1505,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1510,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1516,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1532,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1538,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1543,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1561,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1570,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1585,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1595,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1597,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1599,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1615,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1621,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1631,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1635,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1640,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1657,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 198
    argCount: 10
    argNames:
    - planstate
    - index
    - quals
    - isorderby
    - scanKeys
    - numScanKeys
    - runtimeKeys
    - numRuntimeKeys
    - arrayKeys
    - numArrayKeys
    argTypes:
    - PlanState*
    - Relation
    - List*
    - bool
    - ScanKey*
    - int*
    - IndexRuntimeKeyInfo**
    - int*
    - IndexArrayKeyInfo**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1658
      start: 1166
    functionDepth: 2
    functionLinenumber: 1166
    functionLinenumberEnd: 1658
    functionName: ExecIndexBuildScanKeys
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 3
    functionsReached:
    - get_leftop
    - get_rightop
    - repalloc
    - lfirst_oid
    - nodeTag
    - elog
    - TypeIsToastable
    - Assert
    - linitial
    - pfree
    - PointerGetDatum
    - ScanKeyEntryInitialize
    - list_length
    - get_opfamily_proc
    - IndexRelationGetNumberOfKeyAttributes
    - forfour
    - RegProcedureIsValid
    - MemSet
    - lfirst
    - palloc0
    - lsecond
    - ExecInitExpr
    - palloc
    - get_op_opfamily_properties
    - IsA
    linkageType: ''
    returnType: void
    signature: "void ExecIndexBuildScanKeys(PlanState *planstate, Relation index,\n\t\t\t\t\t
      \  List *quals, bool isorderby,\n\t\t\t\t\t   ScanKey *scanKeys, int *numScanKeys,\n\t\t\t\t\t
      \  IndexRuntimeKeyInfo **runtimeKeys, int *numRuntimeKeys,\n\t\t\t\t\t   IndexArrayKeyInfo
      **arrayKeys, int *numArrayKeys)"
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1209,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1222,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1223,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1235,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1237,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1240,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1242,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1244,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1248,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1256,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1267,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1272,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1274,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1290,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1296,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1301,1
    - Dst: TypeIsToastable
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1303,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1311,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1331,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1334,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1334,1
    - Dst: forfour
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1338,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1346,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1347,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1348,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1349,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1357,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1359,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1361,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1371,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1374,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1380,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1382,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1386,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1387,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1393,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1396,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1398,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1414,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1420,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1425,1
    - Dst: TypeIsToastable
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1427,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1435,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1453,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1458,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1460,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1467,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1469,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1476,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1478,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1481,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1483,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1485,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1489,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1497,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1505,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1510,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1516,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1532,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1538,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1543,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1561,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1570,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1585,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1595,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1597,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1599,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1615,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1621,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1631,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1632,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 175
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1207
    functionDepth: 2
    functionLinenumber: 1207
    functionLinenumberEnd: 1633
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 424
    functionsReached:
    - get_leftop
    - get_rightop
    - repalloc
    - lfirst_oid
    - nodeTag
    - elog
    - TypeIsToastable
    - Assert
    - linitial
    - PointerGetDatum
    - ScanKeyEntryInitialize
    - list_length
    - get_opfamily_proc
    - IndexRelationGetNumberOfKeyAttributes
    - forfour
    - RegProcedureIsValid
    - MemSet
    - lfirst
    - lsecond
    - ExecInitExpr
    - palloc
    - get_op_opfamily_properties
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(qual_cell, quals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_parallelscan_estimate
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1678,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1682,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1672
    functionDepth: 2
    functionLinenumber: 1672
    functionLinenumberEnd: 1684
    functionName: ExecIndexScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - shm_toc_estimate_chunk
    - index_parallelscan_estimate
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanEstimate(IndexScanState *node,\n\t\t\t\t\t  ParallelContext
      *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1699,1
    - Dst: index_parallelscan_initialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1700,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1704,1
    - Dst: index_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1707,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1713,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1721,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1692
    functionDepth: 4
    functionLinenumber: 1692
    functionLinenumberEnd: 1724
    functionName: ExecIndexScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - ScanRelIsReadOnly
    - index_rescan
    - shm_toc_insert
    - index_parallelscan_initialize
    - index_beginscan_parallel
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanInitializeDSM(IndexScanState *node,\n\t\t\t\t\t\t
      \  ParallelContext *pcxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1736,1
    - Dst: index_parallelrescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1732
    functionDepth: 2
    functionLinenumber: 1732
    functionLinenumberEnd: 1738
    functionName: ExecIndexScanReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - index_parallelrescan
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanReInitializeDSM(IndexScanState *node,\n\t\t\t\t\t\t\t
      ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1752,1
    - Dst: index_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1755,1
    - Dst: ScanRelIsReadOnly
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1761,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1769,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - IndexScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1772
      start: 1746
    functionDepth: 4
    functionLinenumber: 1746
    functionLinenumberEnd: 1772
    functionName: ExecIndexScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - index_rescan
    - index_beginscan_parallel
    - shm_toc_lookup
    - ScanRelIsReadOnly
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanInitializeWorker(IndexScanState *node,\n\t\t\t\t\t\t\t
      \ ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1792,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1793,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1794,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1795,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1778
    functionDepth: 1
    functionLinenumber: 1778
    functionLinenumberEnd: 1796
    functionName: ExecIndexScanInstrumentEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanInstrumentEstimate(IndexScanState *node,\n\t\t\t\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1810,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1811,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1813,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1816,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1818,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1801
    functionDepth: 1
    functionLinenumber: 1801
    functionLinenumberEnd: 1822
    functionName: ExecIndexScanInstrumentInitDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - add_size
    - mul_size
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanInstrumentInitDSM(IndexScanState *node,\n\t\t\t\t\t\t\t
      \  ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - IndexScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1839
      start: 1827
    functionDepth: 1
    functionLinenumber: 1827
    functionLinenumberEnd: 1839
    functionName: ExecIndexScanInstrumentInitWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanInstrumentInitWorker(IndexScanState *node,\n\t\t\t\t\t\t\t\t
      \ ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1859,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1860,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1847
    functionDepth: 0
    functionLinenumber: 1847
    functionLinenumberEnd: 1861
    functionName: ExecIndexScanRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecIndexScanRetrieveInstrumentation(IndexScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - aggstate
    - setno
    - is_hash
    argTypes:
    - AggState*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 470
    functionName: select_current_set
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void select_current_set(AggState *aggstate, int setno, bool is_hash)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:482,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:490,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:501,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:513,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeAgg.c:514,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:524,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeAgg.c:525,1
    - Dst: tuplesort_begin_heap
      Src: /src/postgres/src/backend/executor/nodeAgg.c:527,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - aggstate
    - newphase
    argTypes:
    - AggState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 539
    functionName: initialize_phase
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - ExecGetResultType
    - Assert
    - tuplesort_performsort
    - outerPlanState
    - tuplesort_begin_heap
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: void initialize_phase(AggState *aggstate, int newphase)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAgg.c:557,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:558,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:564,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:564,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:566,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:567,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 549
    functionDepth: 2
    functionLinenumber: 549
    functionLinenumberEnd: 570
    functionName: fetch_input_tuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - tuplesort_gettupleslot
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - tuplesort_puttupleslot
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      fetch_input_tuple(AggState *aggstate)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:594,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:604,1
    - Dst: tuplesort_begin_datum
      Src: /src/postgres/src/backend/executor/nodeAgg.c:607,1
    - Dst: tuplesort_begin_heap
      Src: /src/postgres/src/backend/executor/nodeAgg.c:615,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:636,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:637,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:640,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - aggstate
    - pertrans
    - pergroupstate
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 580
    functionDepth: 2
    functionLinenumber: 580
    functionLinenumberEnd: 652
    functionName: initialize_aggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - datumCopy
    - MemoryContextSwitchTo
    - TupleDescAttr
    - tuplesort_begin_heap
    - tuplesort_begin_datum
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: "void initialize_aggregate(AggState *aggstate, AggStatePerTrans pertrans,\n\t\t\t\t\t
      AggStatePerGroup pergroupstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:673,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:685,1
    - Dst: initialize_aggregate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:692,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - aggstate
    - pergroups
    - numReset
    argTypes:
    - AggState*
    - AggStatePerGroup*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 667
    functionDepth: 3
    functionLinenumber: 667
    functionLinenumberEnd: 695
    functionName: initialize_aggregates
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - Max
    - initialize_aggregate
    - select_current_set
    linkageType: ''
    returnType: void
    signature: "void initialize_aggregates(AggState *aggstate,\n\t\t\t\t\t  AggStatePerGroup
      *pergroups,\n\t\t\t\t\t  int numReset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:742,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:743,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:748,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:764,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeAgg.c:776,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:795,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:795,1
    - Dst: ExecAggCopyTransValue
      Src: /src/postgres/src/backend/executor/nodeAgg.c:796,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:804,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - aggstate
    - pertrans
    - pergroupstate
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 805
    functionName: advance_transition_function
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - FunctionCallInvoke
    - ExecAggCopyTransValue
    - datumCopy
    - MemoryContextSwitchTo
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void advance_transition_function(AggState *aggstate,\n\t\t\t\t\t\t\tAggStatePerTrans
      pertrans,\n\t\t\t\t\t\t\tAggStatePerGroup pergroupstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalExprNoReturnSwitchContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 818
    functionDepth: 3
    functionLinenumber: 818
    functionLinenumberEnd: 823
    functionName: advance_aggregates
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - ExecEvalExprNoReturnSwitchContext
    linkageType: ''
    returnType: void
    signature: void advance_aggregates(AggState *aggstate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:864,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeAgg.c:866,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/executor/nodeAgg.c:878,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:885,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:886,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeAgg.c:896,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/nodeAgg.c:896,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:900,1
    - Dst: advance_transition_function
      Src: /src/postgres/src/backend/executor/nodeAgg.c:905,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:907,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:916,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:916,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:918,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:930,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:930,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:932,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 3
    argNames:
    - aggstate
    - pertrans
    - pergroupstate
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 847
    functionDepth: 2
    functionLinenumber: 847
    functionLinenumberEnd: 934
    functionName: process_ordered_aggregate_single
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - advance_transition_function
    - MemoryContextReset
    - Assert
    - pfree
    - tuplesort_performsort
    - datumCopy
    - MemoryContextSwitchTo
    - FunctionCall2Coll
    - DatumGetPointer
    - tuplesort_end
    - DatumGetBool
    - tuplesort_getdatum
    linkageType: ''
    returnType: void
    signature: "void process_ordered_aggregate_single(AggState *aggstate,\n\t\t\t\t\t\t\t\t
      AggStatePerTrans pertrans,\n\t\t\t\t\t\t\t\t AggStatePerGroup pergroupstate)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeAgg.c:965,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:967,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:969,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:971,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAgg.c:974,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeAgg.c:982,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/nodeAgg.c:988,1
    - Dst: advance_transition_function
      Src: /src/postgres/src/backend/executor/nodeAgg.c:998,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1014,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1016,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1020,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1022,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 3
    argNames:
    - aggstate
    - pertrans
    - pergroupstate
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 948
    functionDepth: 3
    functionLinenumber: 948
    functionLinenumberEnd: 1027
    functionName: process_ordered_aggregate_multi
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - advance_transition_function
    - ResetExprContext
    - tuplesort_gettupleslot
    - tuplesort_performsort
    - CHECK_FOR_INTERRUPTS
    - ExecQual
    - ExecClearTuple
    - slot_getsomeattrs
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: "void process_ordered_aggregate_multi(AggState *aggstate,\n\t\t\t\t\t\t\t\tAggStatePerTrans
      pertrans,\n\t\t\t\t\t\t\t\tAggStatePerGroup pergroupstate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1051,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1058,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1067,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1069,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1071,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1081,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1088,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1095,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1119,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1121,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1130,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1136,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 5
    argNames:
    - aggstate
    - peragg
    - pergroupstate
    - resultVal
    - resultIsNull
    argTypes:
    - AggState*
    - AggStatePerAgg
    - AggStatePerGroup
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1045
    functionDepth: 1
    functionLinenumber: 1045
    functionLinenumberEnd: 1137
    functionName: finalize_aggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - foreach
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - LOCAL_FCINFO
    - lfirst
    - MakeExpandedObjectReadOnly
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: "void finalize_aggregate(AggState *aggstate,\n\t\t\t\t   AggStatePerAgg
      peragg,\n\t\t\t\t   AggStatePerGroup pergroupstate,\n\t\t\t\t   Datum *resultVal,
      bool *resultIsNull)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1154,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1160,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1174,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1180,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1182,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1190,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 5
    argNames:
    - aggstate
    - peragg
    - pergroupstate
    - resultVal
    - resultIsNull
    argTypes:
    - AggState*
    - AggStatePerAgg
    - AggStatePerGroup
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1197
    functionName: finalize_partialaggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - FunctionCallInvoke
    - MakeExpandedObjectReadOnly
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void finalize_partialaggregate(AggState *aggstate,\n\t\t\t\t\t\t  AggStatePerAgg
      peragg,\n\t\t\t\t\t\t  AggStatePerGroup pergroupstate,\n\t\t\t\t\t\t  Datum
      *resultVal, bool *resultIsNull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1211,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1212,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - perhash
    - inputslot
    - hashslot
    argTypes:
    - AggStatePerHash
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1203
    functionDepth: 2
    functionLinenumber: 1203
    functionLinenumberEnd: 1222
    functionName: prepare_hash_slot
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - ExecStoreVirtualTuple
    - slot_getsomeattrs
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: "void prepare_hash_slot(AggStatePerHash perhash,\n\t\t\t\t  TupleTableSlot
      *inputslot,\n\t\t\t\t  TupleTableSlot *hashslot)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1257,1
    - Dst: ExecStoreAllNullTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1264,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1271,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1271,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1273,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1275,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1277,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - aggstate
    - slot
    - currentSet
    argTypes:
    - AggState*
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1248
    functionDepth: 3
    functionLinenumber: 1248
    functionLinenumberEnd: 1282
    functionName: prepare_projection_slot
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - foreach
    - lfirst_int
    - bms_is_member
    - ExecStoreAllNullTuple
    - linitial_int
    - TTS_EMPTY
    - slot_getsomeattrs
    linkageType: ''
    returnType: void
    signature: void prepare_projection_slot(AggState *aggstate, TupleTableSlot *slot,
      int currentSet)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1316,1
    - Dst: process_ordered_aggregate_single
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1320,1
    - Dst: process_ordered_aggregate_multi
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1324,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1335,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1335,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1341,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1356,1
    - Dst: finalize_partialaggregate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1357,1
    - Dst: finalize_aggregate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1360,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 3
    argNames:
    - aggstate
    - peraggs
    - pergroup
    argTypes:
    - AggState*
    - AggStatePerAgg
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1293
    functionDepth: 4
    functionLinenumber: 1293
    functionLinenumberEnd: 1363
    functionName: finalize_aggregates
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - process_ordered_aggregate_single
    - process_ordered_aggregate_multi
    - finalize_partialaggregate
    - Assert
    - pfree
    - DO_AGGSPLIT_SKIPFINAL
    - ExecClearTuple
    - finalize_aggregate
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void finalize_aggregates(AggState *aggstate,\n\t\t\t\t\tAggStatePerAgg
      peraggs,\n\t\t\t\t\tAggStatePerGroup pergroup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1378,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1384,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1370
    functionDepth: 4
    functionLinenumber: 1370
    functionLinenumberEnd: 1390
    functionName: project_aggregates
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - ExecProject
    - ExecQual
    - InstrCountFiltered1
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      project_aggregates(AggState *aggstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_cols_walker
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1407,1
    - Dst: find_cols_walker
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1408,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - aggstate
    - aggregated
    - unaggregated
    argTypes:
    - AggState*
    - Bitmapset**
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1396
    functionDepth: 3
    functionLinenumber: 1396
    functionLinenumberEnd: 1417
    functionName: find_cols
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - bms_add_member
    - find_cols_walker
    linkageType: ''
    returnType: void
    signature: void find_cols(AggState *aggstate, Bitmapset **aggregated, Bitmapset
      **unaggregated)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1430,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1432,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1435,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1441,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1443,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1447,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - FindColsContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1419
    functionDepth: 3
    functionLinenumber: 1419
    functionLinenumberEnd: 1448
    functionName: find_cols_walker
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - expression_tree_walker
    - IsA
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: bool find_cols_walker(Node *node, FindColsContext *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1479,1
    - Dst: hash_choose_num_buckets
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1486,1
    - Dst: IS_INJECTION_POINT_ATTACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1491,1
    - Dst: TupleHashEntrySize
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1493,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1494,1
    - Dst: build_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1498,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1466
    functionDepth: 2
    functionLinenumber: 1466
    functionLinenumberEnd: 1502
    functionName: build_hash_tables
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - ResetTupleHashTable
    - hash_choose_num_buckets
    - build_hash_table
    - IS_INJECTION_POINT_ATTACHED
    - TupleHashEntrySize
    - INJECTION_POINT_CACHED
    linkageType: ''
    returnType: void
    signature: void build_hash_tables(AggState *aggstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1516,1
    - Dst: BuildTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1527,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - aggstate
    - setno
    - nbuckets
    argTypes:
    - AggState*
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1507
    functionDepth: 8
    functionLinenumber: 1507
    functionLinenumberEnd: 1541
    functionName: build_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 3
    functionsReached:
    - Assert
    - BuildTupleHashTable
    - DO_AGGSPLIT_SKIPFINAL
    linkageType: ''
    returnType: void
    signature: void build_hash_table(AggState *aggstate, int setno, double nbuckets)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1574,1
    - Dst: find_cols
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1580,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1581,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1589,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1598,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1619,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1621,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1623,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1624,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1634,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1637,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1639,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1643,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1658,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1663,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1674,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1674,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1676,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1679,1
    - Dst: execTuplesHashPrepare
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1681,1
    - Dst: ExecAllocTableSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1686,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1689,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1690,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1693,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1568
    functionDepth: 7
    functionLinenumber: 1568
    functionLinenumberEnd: 1694
    functionName: find_hash_columns
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - bms_del_member
    - lfirst_int
    - bms_free
    - bms_copy
    - bms_add_member
    - find_cols
    - bms_union
    - ExecTypeFromTL
    - foreach
    - bms_is_member
    - execTuplesHashPrepare
    - outerPlanState
    - bms_next_member
    - ExecAllocTableSlot
    - list_free
    - bms_num_members
    - lappend
    - Max
    - palloc
    - list_nth
    linkageType: ''
    returnType: void
    signature: void find_hash_columns(AggState *aggstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1705,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1713,1
    - Dst: pg_nextpower2_size_t
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1721,1
    - Dst: TupleHashEntrySize
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1726,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - numTrans
    - tupleWidth
    - transitionSpace
    argTypes:
    - int
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1699
    functionDepth: 1
    functionLinenumber: 1699
    functionLinenumberEnd: 1730
    functionName: hash_agg_entry_size
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - MAXALIGN
    - TupleHashEntrySize
    - pg_nextpower2_size_t
    linkageType: ''
    returnType: Size
    signature: Size hash_agg_entry_size(int numTrans, Size tupleWidth, Size transitionSpace)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1757,1
    - Dst: ExecBuildAggTrans
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1787,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - aggstate
    - minslot
    - nullcheck
    argTypes:
    - AggState*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1750
    functionDepth: 11
    functionLinenumber: 1750
    functionLinenumberEnd: 1797
    functionName: hashagg_recompile_expressions
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecBuildAggTrans
    linkageType: ''
    returnType: void
    signature: void hashagg_recompile_expressions(AggState *aggstate, bool minslot,
      bool nullcheck)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1814,1
    - Dst: hash_choose_num_partitions
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1831,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 6
    argNames:
    - hashentrysize
    - input_groups
    - used_bits
    - mem_limit
    - ngroups_limit
    - num_partitions
    argTypes:
    - double
    - double
    - int
    - Size*
    - uint64*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1807
    functionDepth: 1
    functionLinenumber: 1807
    functionLinenumberEnd: 1856
    functionName: hash_agg_set_limits
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - hash_choose_num_partitions
    - get_hash_memory_limit
    linkageType: ''
    returnType: void
    signature: "void hash_agg_set_limits(double hashentrysize, double input_groups,
      int used_bits,\n\t\t\t\t\tSize *mem_limit, uint64 *ngroups_limit,\n\t\t\t\t\tint
      *num_partitions)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1869,1
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1871,1
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1873,1
    - Dst: IS_INJECTION_POINT_ATTACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1881,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1884,1
    - Dst: hash_agg_enter_spill_mode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1901,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1865
    functionDepth: 1
    functionLinenumber: 1865
    functionLinenumberEnd: 1902
    functionName: hash_agg_check_limits
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - IS_INJECTION_POINT_ATTACHED
    - hash_agg_enter_spill_mode
    - MemoryContextMemAllocated
    - INJECTION_POINT_CACHED
    linkageType: ''
    returnType: void
    signature: void hash_agg_check_limits(AggState *aggstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1912,1
    - Dst: hashagg_recompile_expressions
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1914,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1919,1
    - Dst: LogicalTapeSetCreate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1923,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1925,1
    - Dst: hashagg_spill_init
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1932,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1909
    functionDepth: 12
    functionLinenumber: 1909
    functionLinenumberEnd: 1937
    functionName: hash_agg_enter_spill_mode
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - INJECTION_POINT
    - Assert
    - palloc_array
    - hashagg_recompile_expressions
    - LogicalTapeSetCreate
    - hashagg_spill_init
    linkageType: ''
    returnType: void
    signature: void hash_agg_enter_spill_mode(AggState *aggstate)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1959,1
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1962,1
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1965,1
    - Dst: LogicalTapeSetBlocks
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1980,1
    - Dst: TupleHashEntrySize
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1990,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - aggstate
    - from_tape
    - npartitions
    argTypes:
    - AggState*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1993
      start: 1945
    functionDepth: 1
    functionLinenumber: 1945
    functionLinenumberEnd: 1993
    functionName: hash_agg_update_metrics
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - TupleHashEntrySize
    - LogicalTapeSetBlocks
    - MemoryContextMemAllocated
    linkageType: ''
    returnType: void
    signature: void hash_agg_update_metrics(AggState *aggstate, bool from_tape, int
      npartitions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateWorkExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2007,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2017,1
    - Dst: pg_prevpower2_size_t
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2037,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2040,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2043,1
    - Dst: BumpContextCreate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2051
      start: 1998
    functionDepth: 8
    functionLinenumber: 1998
    functionLinenumberEnd: 2051
    functionName: hash_create_memory
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - pg_prevpower2_size_t
    - BumpContextCreate
    - CreateWorkExprContext
    - Max
    - AllocSetContextCreate
    - Min
    linkageType: ''
    returnType: void
    signature: void hash_create_memory(AggState *aggstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - hashentrysize
    - ngroups
    - memory
    argTypes:
    - double
    - double
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 2056
    functionDepth: 0
    functionLinenumber: 2056
    functionLinenumberEnd: 2078
    functionName: hash_choose_num_buckets
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double hash_choose_num_buckets(double hashentrysize, double ngroups,
      Size memory)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2089,1
    - Dst: pg_ceil_log2_32
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2121,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - input_groups
    - hashentrysize
    - used_bits
    - log2_npartitions
    argTypes:
    - double
    - double
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2134
      start: 2085
    functionDepth: 3
    functionLinenumber: 2085
    functionLinenumberEnd: 2134
    functionName: hash_choose_num_partitions
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - pg_ceil_log2_32
    - get_hash_memory_limit
    linkageType: ''
    returnType: int
    signature: "int hash_choose_num_partitions(double input_groups, double hashentrysize,\n\t\t\t\t\t\t
      \  int used_bits, int *log2_npartitions)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_agg_check_limits
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2147,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2153,1
    - Dst: initialize_aggregate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - aggstate
    - hashtable
    - entry
    argTypes:
    - AggState*
    - TupleHashTable
    - TupleHashEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2139
    functionDepth: 3
    functionLinenumber: 2139
    functionLinenumberEnd: 2166
    functionName: initialize_hash_entry
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - TupleHashEntryGetAdditional
    - hash_agg_check_limits
    - initialize_aggregate
    linkageType: ''
    returnType: void
    signature: "void initialize_hash_entry(AggState *aggstate, TupleHashTable hashtable,\n\t\t\t\t\t
      \ TupleHashEntry entry)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2203,1
    - Dst: prepare_hash_slot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2204,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2208,1
    - Dst: initialize_hash_entry
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2214,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2215,1
    - Dst: hashagg_spill_init
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2223,1
    - Dst: hashagg_spill_tuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2227,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2183
    functionDepth: 4
    functionLinenumber: 2183
    functionLinenumberEnd: 2231
    functionName: lookup_hash_entries
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - prepare_hash_slot
    - select_current_set
    - LookupTupleHashEntry
    - initialize_hash_entry
    - hashagg_spill_tuple
    - TupleHashEntryGetAdditional
    - hashagg_spill_init
    linkageType: ''
    returnType: void
    signature: void lookup_hash_entries(AggState *aggstate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2249,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2252,1
    - Dst: agg_fill_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2261,1
    - Dst: agg_retrieve_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2264,1
    - Dst: agg_retrieve_direct
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2268,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2272,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2277
      start: 2246
    functionDepth: 1
    functionLinenumber: 2246
    functionLinenumberEnd: 2277
    functionName: ExecAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - agg_fill_hash_table
    - TupIsNull
    - agg_retrieve_direct
    - castNode
    - CHECK_FOR_INTERRUPTS
    - agg_retrieve_hash_table
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecAgg(PlanState *pstate)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2294,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2337,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2357,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2369,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2372,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2382,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2384,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2386,1
    - Dst: agg_retrieve_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2387,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2430,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2436,1
    - Dst: fetch_input_tuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2453,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2454,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2460,1
    - Dst: initialize_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2510,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2519,1
    - Dst: lookup_hash_entries
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2539,1
    - Dst: advance_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2543,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2546,1
    - Dst: fetch_input_tuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2548,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2549,1
    - Dst: hashagg_finish_initial_spills
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2556,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2579,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2600,1
    - Dst: prepare_projection_slot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2604,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2606,1
    - Dst: finalize_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2608,1
    - Dst: project_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2616,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 111
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2623
      start: 2282
    functionDepth: 7
    functionLinenumber: 2282
    functionLinenumberEnd: 2623
    functionName: agg_retrieve_direct
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - ExecQualAndReset
    - hashagg_finish_initial_spills
    - advance_aggregates
    - Assert
    - fetch_input_tuple
    - finalize_aggregates
    - ExecForceStoreHeapTuple
    - select_current_set
    - initialize_phase
    - initialize_aggregates
    - prepare_projection_slot
    - project_aggregates
    - TupIsNull
    - lookup_hash_entries
    - ReScanExprContext
    - ExecCopySlotHeapTuple
    - Max
    - ExecQual
    - agg_retrieve_hash_table
    - ResetTupleHashIterator
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      agg_retrieve_direct(AggState *aggstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fetch_input_tuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2640,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2641,1
    - Dst: lookup_hash_entries
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2648,1
    - Dst: advance_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2651,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2657,1
    - Dst: hashagg_finish_initial_spills
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2661,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2665,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2666,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2628
    functionDepth: 5
    functionLinenumber: 2628
    functionLinenumberEnd: 2668
    functionName: agg_fill_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - advance_aggregates
    - ResetExprContext
    - select_current_set
    - fetch_input_tuple
    - hashagg_finish_initial_spills
    - TupIsNull
    - ResetTupleHashIterator
    - lookup_hash_entries
    linkageType: ''
    returnType: void
    signature: void agg_fill_hash_table(AggState *aggstate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: llast
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2695,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2696,1
    - Dst: hash_agg_set_limits
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2698,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2709,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2713,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2715,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2724,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2731,1
    - Dst: hashagg_recompile_expressions
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2742,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2744,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2756,1
    - Dst: hashagg_batch_read
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2758,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2762,1
    - Dst: prepare_hash_slot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2765,1
    - Dst: LookupTupleHashEntryHash
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2768,1
    - Dst: initialize_hash_entry
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2774,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2775,1
    - Dst: advance_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2776,1
    - Dst: hashagg_spill_init
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2787,1
    - Dst: hashagg_spill_tuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2791,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2800,1
    - Dst: LogicalTapeClose
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2803,1
    - Dst: hashagg_spill_finish
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2811,1
    - Dst: hash_agg_update_metrics
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2812,1
    - Dst: hash_agg_update_metrics
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2815,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2820,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2821,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2824,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 57
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2827
      start: 2682
    functionDepth: 12
    functionLinenumber: 2682
    functionLinenumberEnd: 2827
    functionName: agg_refill_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - ExecStoreMinimalTuple
    - hashagg_spill_tuple
    - llast
    - advance_aggregates
    - LogicalTapeClose
    - Assert
    - pfree
    - hashagg_recompile_expressions
    - hashagg_spill_init
    - hashagg_batch_read
    - hash_agg_set_limits
    - ResetTupleHashTable
    - select_current_set
    - CHECK_FOR_INTERRUPTS
    - MemSet
    - INJECTION_POINT
    - ReScanExprContext
    - prepare_hash_slot
    - list_delete_last
    - LookupTupleHashEntryHash
    - hashagg_spill_finish
    - initialize_hash_entry
    - hash_agg_update_metrics
    - TupleHashEntryGetAdditional
    - ResetTupleHashIterator
    linkageType: ''
    returnType: bool
    signature: bool agg_refill_hash_table(AggState *aggstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: agg_retrieve_hash_table_in_memory
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2843,1
    - Dst: agg_refill_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2846,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2855
      start: 2836
    functionDepth: 13
    functionLinenumber: 2836
    functionLinenumberEnd: 2855
    functionName: agg_retrieve_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 2
    functionsReached:
    - agg_refill_hash_table
    - agg_retrieve_hash_table_in_memory
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      agg_retrieve_hash_table(AggState *aggstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2897,1
    - Dst: ScanTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2902,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2913,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2917,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2934,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2940,1
    - Dst: TupleHashEntryGetTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2940,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2941,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2943,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2944,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2954,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2956,1
    - Dst: prepare_projection_slot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2964,1
    - Dst: finalize_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2968,1
    - Dst: project_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2970,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2977
      start: 2861
    functionDepth: 5
    functionLinenumber: 2861
    functionLinenumberEnd: 2977
    functionName: agg_retrieve_hash_table_in_memory
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - slot_getallattrs
    - select_current_set
    - ResetExprContext
    - CHECK_FOR_INTERRUPTS
    - ExecStoreMinimalTuple
    - ScanTupleHashTable
    - prepare_projection_slot
    - TupleHashEntryGetAdditional
    - memset
    - ExecStoreVirtualTuple
    - project_aggregates
    - ExecClearTuple
    - finalize_aggregates
    - TupleHashEntryGetTuple
    - ResetTupleHashIterator
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      agg_retrieve_hash_table_in_memory(AggState *aggstate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_choose_num_partitions
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2992,1
    - Dst: IS_INJECTION_POINT_ATTACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2996,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3000,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3004,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3005,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3006,1
    - Dst: LogicalTapeCreate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3009,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3019,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - spill
    - tapeset
    - used_bits
    - input_groups
    - hashentrysize
    argTypes:
    - HashAggSpill*
    - LogicalTapeSet*
    - int
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 2985
    functionDepth: 4
    functionLinenumber: 2985
    functionLinenumberEnd: 3020
    functionName: hashagg_spill_init
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 3
    functionsReached:
    - palloc0_array
    - initHyperLogLog
    - IS_INJECTION_POINT_ATTACHED
    - hash_choose_num_partitions
    - INJECTION_POINT_CACHED
    - LogicalTapeCreate
    linkageType: ''
    returnType: void
    signature: "void hashagg_spill_init(HashAggSpill *spill, LogicalTapeSet *tapeset,
      int used_bits,\n\t\t\t\t   double input_groups, double hashentrysize)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3039,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3045,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3046,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3049,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3057,1
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3062,1
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3076,1
    - Dst: hash_bytes_uint32
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3076,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3080,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3083,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3087,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - aggstate
    - spill
    - inputslot
    - hash
    argTypes:
    - AggState*
    - HashAggSpill*
    - TupleTableSlot*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3090
      start: 3028
    functionDepth: 3
    functionLinenumber: 3028
    functionLinenumberEnd: 3090
    functionName: hashagg_spill_tuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 2
    functionsReached:
    - Assert
    - pfree
    - bms_is_member
    - ExecStoreVirtualTuple
    - ExecFetchSlotMinimalTuple
    - ExecClearTuple
    - addHyperLogLog
    - slot_getsomeattrs
    - hash_bytes_uint32
    - LogicalTapeWrite
    linkageType: ''
    returnType: Size
    signature: "Size hashagg_spill_tuple(AggState *aggstate, HashAggSpill *spill,\n\t\t\t\t\tTupleTableSlot
      *inputslot, uint32 hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - input_tape
    - setno
    - input_tuples
    - input_card
    - used_bits
    argTypes:
    - LogicalTape*
    - int
    - int64
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3111
      start: 3098
    functionDepth: 0
    functionLinenumber: 3098
    functionLinenumberEnd: 3111
    functionName: hashagg_batch_new
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: HashAggBatch
    signature: "HashAggBatch *\nhashagg_batch_new(LogicalTape *input_tape, int setno,\n\t\t\t\t
      \ int64 input_tuples, double input_card, int used_bits)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LogicalTapeRead
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3126,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3130,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3131,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3132,1
    - Dst: LogicalTapeRead
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3137,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3139,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3140,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3141,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3144,1
    - Dst: LogicalTapeRead
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3147,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3151,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3152,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3153,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - batch
    - hashp
    argTypes:
    - HashAggBatch*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3157
      start: 3117
    functionDepth: 1
    functionLinenumber: 3117
    functionLinenumberEnd: 3157
    functionName: hashagg_batch_read
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - LogicalTapeRead
    - errmsg_internal
    - ereport
    - palloc
    - errcode_for_file_access
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple hashagg_batch_read(HashAggBatch *batch, uint32 *hashp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hashagg_spill_finish
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3179,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3187,1
    - Dst: hash_agg_update_metrics
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3193
      start: 3166
    functionDepth: 2
    functionLinenumber: 3166
    functionLinenumberEnd: 3193
    functionName: hashagg_finish_initial_spills
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 2
    functionsReached:
    - pfree
    - hash_agg_update_metrics
    - hashagg_spill_finish
    linkageType: ''
    returnType: void
    signature: void hashagg_finish_initial_spills(AggState *aggstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: estimateHyperLogLog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3219,1
    - Dst: freeHyperLogLog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3220,1
    - Dst: LogicalTapeRewindForRead
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3223,1
    - Dst: hashagg_batch_new
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3225,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3228,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3232,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3233,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3234,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - aggstate
    - spill
    - setno
    argTypes:
    - AggState*
    - HashAggSpill*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3235
      start: 3200
    functionDepth: 6
    functionLinenumber: 3200
    functionLinenumberEnd: 3235
    functionName: hashagg_spill_finish
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 2
    functionsReached:
    - pfree
    - lappend
    - estimateHyperLogLog
    - hashagg_batch_new
    - freeHyperLogLog
    - LogicalTapeRewindForRead
    linkageType: ''
    returnType: void
    signature: void hashagg_spill_finish(AggState *aggstate, HashAggSpill *spill,
      int setno)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3252,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3253,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3255,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3260,1
    - Dst: LogicalTapeSetClose
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3266,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3269
      start: 3240
    functionDepth: 4
    functionLinenumber: 3240
    functionLinenumberEnd: 3269
    functionName: hashagg_reset_spill_state
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - pfree
    - LogicalTapeSetClose
    - list_free_deep
    linkageType: ''
    returnType: void
    signature: void hashagg_reset_spill_state(AggState *aggstate)
  - BBCount: 53
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3308,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3313,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3350,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3352,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3354,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3356,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3357,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3373,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3389,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3394,1
    - Dst: hash_create_memory
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3399,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3401,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3411,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3412,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3412,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3418,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3418,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3422,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3432,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3457,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3458,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3474,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3479,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3482,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3484,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3486,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3487,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3496,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3501,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3503,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3504,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3508,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3515,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3516,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3533,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3547,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3551,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3559,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3563,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3564,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3567,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3569,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3569,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3574,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3587,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3602,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3618,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3631,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3650,1
    - Dst: lcons_int
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3651,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3658,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3659,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3661,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3662,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3668,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3675,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3687,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3690,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3692,1
    - Dst: hash_agg_entry_size
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3698,1
    - Dst: hash_agg_set_limits
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3711,1
    - Dst: find_hash_columns
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3715,1
    - Dst: build_hash_tables
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3719,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3736,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3737,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3742,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3743,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3750,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3752,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3771,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3783,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3784,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3785,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3786,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3788,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3791,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3791,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3794,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3795,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3796,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3800,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3800,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3803,1
    - Dst: DO_AGGSPLIT_SERIALIZE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3825,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3825,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3827,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3828,1
    - Dst: DO_AGGSPLIT_DESERIALIZE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3833,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3836,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3836,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3838,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3839,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3848,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3849,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3850,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3851,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3853,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3854,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3856,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3858,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3861,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3862,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3863,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3865,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3867,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3870,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3871,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3872,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3874,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3876,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3879,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3880,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3881,1
    - Dst: get_aggregate_argtypes
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3890,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3894,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3903,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3910,1
    - Dst: build_aggregate_finalfn_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3912,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3919,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3920,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3924,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3945,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3950,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3951,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3956,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3958,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3959,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3960,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3966,1
    - Dst: GetAggInitVal
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3972,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3974,1
    - Dst: build_pertrans_for_aggref
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3987,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4000,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4001,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4002,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4003,1
    - Dst: AGGKIND_IS_ORDERED_SET
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4008,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4009,1
    - Dst: build_pertrans_for_aggref
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4013,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4032,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4034,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4035,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4036,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4043,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4056,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4057,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4058,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4059,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4108,1
    - Dst: ExecBuildAggTrans
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4110,1
    CyclomaticComplexity: 78
    EdgeCount: 78
    ICount: 315
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Agg*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4118
      start: 3280
    functionDepth: 11
    functionLinenumber: 3280
    functionLinenumberEnd: 4118
    functionName: ExecInitAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - ExecAssignProjectionInfo
    - InvokeFunctionExecuteHook
    - fmgr_info_set_expr
    - GetUserId
    - get_func_name
    - get_typlenbyval
    - errcode
    - ExecInitExprList
    - palloc_array
    - object_aclcheck
    - ExecGetResultSlotOps
    - bms_add_members
    - hash_agg_entry_size
    - bms_add_member
    - IsBinaryCoercible
    - get_aggregate_argtypes
    - ExecInitNode
    - SearchSysCache1
    - elog
    - foreach
    - DO_AGGSPLIT_COMBINE
    - build_pertrans_for_aggref
    - Assert
    - HeapTupleIsValid
    - find_hash_columns
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - list_nth_node
    - ReleaseSysCache
    - errmsg
    - list_length
    - bms_next_member
    - ObjectIdGetDatum
    - OidIsValid
    - outerPlan
    - DO_AGGSPLIT_SERIALIZE
    - fmgr_info
    - build_aggregate_finalfn_expr
    - hash_agg_set_limits
    - ExecBuildAggTrans
    - select_current_set
    - GetAggInitVal
    - ereport
    - initialize_phase
    - DO_AGGSPLIT_SKIPFINAL
    - ExecCreateScanSlotFromOuterPlan
    - lfirst
    - GETSTRUCT
    - aclcheck_error
    - build_hash_tables
    - execTuplesMatchPrepare
    - ExecInitQual
    - AGGKIND_IS_ORDERED_SET
    - lcons_int
    - ExecInitExtraTupleSlot
    - format_type_be
    - palloc0_array
    - ExecAssignExprContext
    - hash_create_memory
    - castNode
    - DO_AGGSPLIT_DESERIALIZE
    - makeNode
    - Max
    - palloc
    - SysCacheGetAttr
    linkageType: ''
    returnType: AggState
    signature: 'AggState *

      ExecInitAgg(Agg *node, EState *estate, int eflags)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4139,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4163,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4166,1
    - Dst: build_aggregate_transfn_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4177,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4188,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4189,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4192,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4192,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4193,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4200,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4204,1
    - Dst: build_aggregate_serialfn_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4206,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4208,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4209,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4212,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4212,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4213,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4220,1
    - Dst: build_aggregate_deserialfn_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4222,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4224,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4225,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4228,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4228,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4229,1
    - Dst: AGGKIND_IS_ORDERED_SET
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4251,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4267,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4267,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4273,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4288,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4303,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4303,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4308,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4316,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4322,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4324,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4326,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4328,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4333,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4337,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4337,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4341,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4353,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4353,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4355,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4358,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4359,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4363,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4363,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4366,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4372,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4375,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 95
    argCount: 12
    argNames:
    - pertrans
    - aggstate
    - estate
    - aggref
    - transfn_oid
    - aggtranstype
    - aggserialfn
    - aggdeserialfn
    - initValue
    - initValueIsNull
    - inputTypes
    - numArguments
    argTypes:
    - AggStatePerTrans
    - AggState*
    - EState*
    - Aggref*
    - Oid
    - Oid
    - Oid
    - Oid
    - Datum
    - bool
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4376
      start: 4130
    functionDepth: 8
    functionLinenumber: 4130
    functionLinenumberEnd: 4376
    functionName: build_pertrans_for_aggref
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - fmgr_info_set_expr
    - get_typlenbyval
    - get_sortgroupclause_tle
    - build_aggregate_serialfn_expr
    - SizeForFunctionCallInfo
    - ExecTypeFromTL
    - DO_AGGSPLIT_COMBINE
    - foreach
    - Assert
    - pfree
    - OidIsValid
    - list_length
    - fmgr_info
    - build_aggregate_deserialfn_expr
    - InitFunctionCallInfoData
    - exprCollation
    - lfirst
    - execTuplesMatchPrepare
    - AGGKIND_IS_ORDERED_SET
    - build_aggregate_transfn_expr
    - get_opcode
    - ExecInitExtraTupleSlot
    - palloc0_array
    - Max
    - palloc
    linkageType: ''
    returnType: void
    signature: "void build_pertrans_for_aggref(AggStatePerTrans pertrans,\n\t\t\t\t\t\t
      \ AggState *aggstate, EState *estate,\n\t\t\t\t\t\t  Aggref *aggref,\n\t\t\t\t\t\t
      \ Oid transfn_oid, Oid aggtranstype,\n\t\t\t\t\t\t  Oid aggserialfn, Oid aggdeserialfn,\n\t\t\t\t\t\t
      \ Datum initValue, bool initValueIsNull,\n\t\t\t\t\t\t  Oid *inputTypes, int
      numArguments)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4333,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4337,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4337,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4344
      start: 4331
    functionDepth: 3
    functionLinenumber: 4331
    functionLinenumberEnd: 4344
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 429
    functionsReached:
    - Assert
    - get_sortgroupclause_tle
    - exprCollation
    - lfirst
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, sortlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4387,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4388,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4389,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - textInitVal
    - transtype
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4393
      start: 4379
    functionDepth: 1
    functionLinenumber: 4379
    functionLinenumberEnd: 4393
    functionName: GetAggInitVal
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 3
    functionsReached:
    - pfree
    - getTypeInputInfo
    - TextDatumGetCString
    - OidInputFunctionCall
    linkageType: ''
    returnType: Datum
    signature: Datum GetAggInitVal(Datum textInitVal, Oid transtype)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4400,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4412,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4422,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4424,1
    - Dst: hashagg_reset_spill_state
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4426,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4431,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4436,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4447,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4453,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4455,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4457,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4458,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 1
    argNames:
    - node
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4459
      start: 4395
    functionDepth: 5
    functionLinenumber: 4395
    functionLinenumberEnd: 4459
    functionName: ExecEndAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - ReScanExprContext
    - Assert
    - outerPlanState
    - MemoryContextDelete
    - ExecEndNode
    - Max
    - hashagg_reset_spill_state
    - IsParallelWorker
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: void ExecEndAgg(AggState *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4465,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4468,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4492,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4494,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4496,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4510,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4526,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4532,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4535,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4538,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4539,1
    - Dst: hashagg_reset_spill_state
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4548,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4554,1
    - Dst: build_hash_tables
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4556,1
    - Dst: hashagg_recompile_expressions
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4560,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4570,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4575,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4582,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 1
    argNames:
    - node
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4583
      start: 4461
    functionDepth: 12
    functionLinenumber: 4461
    functionLinenumberEnd: 4583
    functionName: ExecReScanAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - ReScanExprContext
    - select_current_set
    - heap_freetuple
    - ExecClearTuple
    - initialize_phase
    - build_hash_tables
    - ExecReScan
    - outerPlanState
    - MemSet
    - hashagg_recompile_expressions
    - Max
    - hashagg_reset_spill_state
    - bms_overlap
    - ResetTupleHashIterator
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: void ExecReScanAgg(AggState *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4611,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4622,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - fcinfo
    - aggcontext
    argTypes:
    - FunctionCallInfo
    - MemoryContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4633
      start: 4608
    functionDepth: 1
    functionLinenumber: 4608
    functionLinenumberEnd: 4633
    functionName: AggCheckCallContext
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: int
    signature: int AggCheckCallContext(FunctionCallInfo fcinfo, MemoryContext *aggcontext)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4655,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4674
      start: 4652
    functionDepth: 1
    functionLinenumber: 4652
    functionLinenumberEnd: 4674
    functionName: AggGetAggref
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: Aggref
    signature: 'Aggref *

      AggGetAggref(FunctionCallInfo fcinfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4696
      start: 4686
    functionDepth: 1
    functionLinenumber: 4686
    functionLinenumberEnd: 4696
    functionName: AggGetTempMemoryContext
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: MemoryContext
    signature: MemoryContext AggGetTempMemoryContext(FunctionCallInfo fcinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4715,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4734
      start: 4712
    functionDepth: 1
    functionLinenumber: 4712
    functionLinenumberEnd: 4734
    functionName: AggStateIsShared
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool AggStateIsShared(FunctionCallInfo fcinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4756,1
    - Dst: RegisterExprContextCallback
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4761,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4765,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - fcinfo
    - func
    - arg
    argTypes:
    - FunctionCallInfo
    - ExprContextCallbackFunction
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4766
      start: 4751
    functionDepth: 2
    functionLinenumber: 4751
    functionLinenumberEnd: 4766
    functionName: AggRegisterCallback
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - elog
    - RegisterExprContextCallback
    - IsA
    linkageType: ''
    returnType: void
    signature: "void AggRegisterCallback(FunctionCallInfo fcinfo,\n\t\t\t\t\tExprContextCallbackFunction
      func,\n\t\t\t\t\tDatum arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4789,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4790,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4791,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4792,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AggState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4793
      start: 4780
    functionDepth: 1
    functionLinenumber: 4780
    functionLinenumberEnd: 4793
    functionName: ExecAggEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - shm_toc_estimate_chunk
    - mul_size
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecAggEstimate(AggState *node, ParallelContext *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4812,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4814,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4816,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AggState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4818
      start: 4801
    functionDepth: 1
    functionLinenumber: 4801
    functionLinenumberEnd: 4818
    functionName: ExecAggInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: void ExecAggInitializeDSM(AggState *node, ParallelContext *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - AggState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4831
      start: 4826
    functionDepth: 1
    functionLinenumber: 4826
    functionLinenumberEnd: 4831
    functionName: ExecAggInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: void ExecAggInitializeWorker(AggState *node, ParallelWorkerContext
      *pwcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4850,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4851,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4853
      start: 4839
    functionDepth: 0
    functionLinenumber: 4839
    functionLinenumberEnd: 4853
    functionName: ExecAggRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecAggRetrieveInstrumentation(AggState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/executor/execReplication.c:67,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execReplication.c:69,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/executor/execReplication.c:72,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:82,1
    - Dst: get_opclass_input_type
      Src: /src/postgres/src/backend/executor/execReplication.c:95,1
    - Dst: get_opclass_family
      Src: /src/postgres/src/backend/executor/execReplication.c:96,1
    - Dst: IndexAmTranslateCompareType
      Src: /src/postgres/src/backend/executor/execReplication.c:97,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/executor/execReplication.c:98,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:102,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execReplication.c:103,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/execReplication.c:106,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/executor/execReplication.c:109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:125,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - skey
    - rel
    - idxrel
    - searchslot
    argTypes:
    - ScanKey
    - Relation
    - Relation
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 128
    functionName: build_replindex_scan_key
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - get_opclass_input_type
    - AttributeNumberIsValid
    - elog
    - IndexAmTranslateCompareType
    - ScanKeyInit
    - get_opfamily_member
    - Assert
    - IndexRelationGetNumberOfKeyAttributes
    - OidIsValid
    - SysCacheGetAttrNotNull
    - get_opclass_family
    - get_opcode
    - DatumGetPointer
    linkageType: ''
    returnType: int
    signature: "int build_replindex_scan_key(ScanKey skey, Relation rel, Relation
      idxrel,\n\t\t\t\t\t\t TupleTableSlot *searchslot)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerIndicatesMovedPartitions
      Src: /src/postgres/src/backend/executor/execReplication.c:147,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:148,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:150,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:152,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:153,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:159,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:160,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:161,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execReplication.c:165,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execReplication.c:168,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - res
    - tmfd
    argTypes:
    - TM_Result
    - TM_FailureData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 136
    functionDepth: 3
    functionLinenumber: 136
    functionLinenumberEnd: 173
    functionName: should_refetch_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - ereport
    - errmsg
    - ItemPointerIndicatesMovedPartitions
    linkageType: ''
    returnType: bool
    signature: bool should_refetch_tuple(TM_Result res, TM_FailureData *tmfd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/execReplication.c:198,1
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/executor/execReplication.c:200,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:202,1
    - Dst: build_replindex_scan_key
      Src: /src/postgres/src/backend/executor/execReplication.c:205,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/execReplication.c:208,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/execReplication.c:214,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/executor/execReplication.c:217,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execReplication.c:226,1
    - Dst: tuples_equal
      Src: /src/postgres/src/backend/executor/execReplication.c:228,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/execReplication.c:232,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:234,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:241,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/executor/execReplication.c:243,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:258,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:258,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/execReplication.c:260,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:260,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execReplication.c:262,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:268,1
    - Dst: should_refetch_tuple
      Src: /src/postgres/src/backend/executor/execReplication.c:270,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/execReplication.c:274,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/execReplication.c:277,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 5
    argNames:
    - rel
    - idxoid
    - lockmode
    - searchslot
    - outslot
    argTypes:
    - Relation
    - Oid
    - LockTupleMode
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 181
    functionDepth: 5
    functionLinenumber: 181
    functionLinenumberEnd: 280
    functionName: RelationFindReplTupleByIndex
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 1
    functionsReached:
    - PopActiveSnapshot
    - GetRelationIdentityOrPK
    - InitDirtySnapshot
    - GetLatestSnapshot
    - index_close
    - build_replindex_scan_key
    - tuples_equal
    - index_endscan
    - index_open
    - table_tuple_lock
    - XactLockTableWait
    - palloc0_array
    - index_rescan
    - index_getnext_slot
    - GetActiveSnapshot
    - PushActiveSnapshot
    - GetCurrentCommandId
    - should_refetch_tuple
    - ExecMaterializeSlot
    - TransactionIdIsValid
    - index_beginscan
    linkageType: ''
    returnType: bool
    signature: "bool RelationFindReplTupleByIndex(Relation rel, Oid idxoid,\n\t\t\t\t\t\t\t
      LockTupleMode lockmode,\n\t\t\t\t\t\t\t TupleTableSlot *searchslot,\n\t\t\t\t\t\t\t
      TupleTableSlot *outslot)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:294,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execReplication.c:297,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execReplication.c:298,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execReplication.c:306,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execReplication.c:319,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/executor/execReplication.c:339,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:341,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:342,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:343,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:344,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execReplication.c:345,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execReplication.c:349,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/execReplication.c:349,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 4
    argNames:
    - slot1
    - slot2
    - eq
    - columns
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    - TypeCacheEntry**
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 288
    functionDepth: 3
    functionLinenumber: 288
    functionLinenumberEnd: 357
    functionName: tuples_equal
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 2
    functionsReached:
    - format_type_be
    - errcode
    - Assert
    - bms_is_member
    - ereport
    - FunctionCall2Coll
    - errmsg
    - OidIsValid
    - TupleDescAttr
    - slot_getallattrs
    - DatumGetBool
    - lookup_type_cache
    linkageType: ''
    returnType: bool
    signature: "bool tuples_equal(TupleTableSlot *slot1, TupleTableSlot *slot2,\n\t\t\t
      TypeCacheEntry **eq, Bitmapset *columns)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execReplication.c:379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:381,1
    - Dst: equalTupleDescs
      Src: /src/postgres/src/backend/executor/execReplication.c:381,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execReplication.c:383,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:386,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/executor/execReplication.c:387,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execReplication.c:389,1
    - Dst: table_rescan
      Src: /src/postgres/src/backend/executor/execReplication.c:394,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/executor/execReplication.c:397,1
    - Dst: tuples_equal
      Src: /src/postgres/src/backend/executor/execReplication.c:399,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/execReplication.c:403,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:405,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:412,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/executor/execReplication.c:414,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:428,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:428,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/execReplication.c:430,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:430,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execReplication.c:432,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:438,1
    - Dst: should_refetch_tuple
      Src: /src/postgres/src/backend/executor/execReplication.c:440,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/execReplication.c:444,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execReplication.c:445,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 4
    argNames:
    - rel
    - lockmode
    - searchslot
    - outslot
    argTypes:
    - Relation
    - LockTupleMode
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 369
    functionDepth: 4
    functionLinenumber: 369
    functionLinenumberEnd: 448
    functionName: RelationFindReplTupleSeq
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 1
    functionsReached:
    - PopActiveSnapshot
    - equalTupleDescs
    - table_rescan
    - InitDirtySnapshot
    - Assert
    - RelationGetDescr
    - GetLatestSnapshot
    - table_beginscan
    - table_endscan
    - tuples_equal
    - ExecDropSingleTupleTableSlot
    - table_slot_create
    - table_tuple_lock
    - XactLockTableWait
    - ExecCopySlot
    - palloc0_array
    - table_scan_getnextslot
    - GetActiveSnapshot
    - PushActiveSnapshot
    - GetCurrentCommandId
    - should_refetch_tuple
    - TransactionIdIsValid
    linkageType: ''
    returnType: bool
    signature: "bool RelationFindReplTupleSeq(Relation rel, LockTupleMode lockmode,\n\t\t\t\t\t\t
      TupleTableSlot *searchslot, TupleTableSlot *outslot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execReplication.c:461,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:468,1
    - Dst: BuildSpeculativeIndexInfo
      Src: /src/postgres/src/backend/executor/execReplication.c:470,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - resultRelInfo
    - conflictindex
    argTypes:
    - ResultRelInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 453
    functionDepth: 5
    functionLinenumber: 453
    functionLinenumberEnd: 472
    functionName: BuildConflictIndexInfo
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - Assert
    - BuildSpeculativeIndexInfo
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void BuildConflictIndexInfo(ResultRelInfo *resultRelInfo, Oid conflictindex)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/executor/execReplication.c:497,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/executor/execReplication.c:500,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/executor/execReplication.c:509,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/executor/execReplication.c:512,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/executor/execReplication.c:517,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:518,1
    - Dst: TransactionIdGetCommitTsData
      Src: /src/postgres/src/backend/executor/execReplication.c:522,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/executor/execReplication.c:523,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 5
    argNames:
    - scanslot
    - oldestxmin
    - delete_xid
    - delete_time
    - delete_origin
    argTypes:
    - TupleTableSlot*
    - TransactionId
    - TransactionId*
    - TimestampTz*
    - ReplOriginId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 480
    functionDepth: 5
    functionLinenumber: 480
    functionLinenumberEnd: 529
    functionName: update_most_recent_deletion_info
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - TimestampDifferenceExceeds
    - TransactionIdGetCommitTsData
    - LockBuffer
    - HeapTupleSatisfiesVacuum
    - ExecFetchSlotHeapTuple
    - HeapTupleHeaderGetUpdateXid
    - TransactionIdIsValid
    linkageType: ''
    returnType: void
    signature: "void update_most_recent_deletion_info(TupleTableSlot *scanslot,\n\t\t\t\t\t\t\t\t
      TransactionId oldestxmin,\n\t\t\t\t\t\t\t\t TransactionId *delete_xid,\n\t\t\t\t\t\t\t\t
      TimestampTz *delete_time,\n\t\t\t\t\t\t\t\t ReplOriginId *delete_origin)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execReplication.c:574,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:576,1
    - Dst: equalTupleDescs
      Src: /src/postgres/src/backend/executor/execReplication.c:576,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/executor/execReplication.c:591,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/executor/execReplication.c:596,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execReplication.c:599,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/executor/execReplication.c:607,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execReplication.c:609,1
    - Dst: table_rescan
      Src: /src/postgres/src/backend/executor/execReplication.c:611,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/executor/execReplication.c:614,1
    - Dst: tuples_equal
      Src: /src/postgres/src/backend/executor/execReplication.c:616,1
    - Dst: update_most_recent_deletion_info
      Src: /src/postgres/src/backend/executor/execReplication.c:619,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/execReplication.c:623,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execReplication.c:624,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 6
    argNames:
    - rel
    - searchslot
    - oldestxmin
    - delete_xid
    - delete_origin
    - delete_time
    argTypes:
    - Relation
    - TupleTableSlot*
    - TransactionId
    - TransactionId*
    - ReplOriginId*
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 563
    functionDepth: 6
    functionLinenumber: 563
    functionLinenumberEnd: 627
    functionName: RelationFindDeletedTupleInfoSeq
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 1
    functionsReached:
    - tuples_equal
    - palloc0_array
    - equalTupleDescs
    - ExecDropSingleTupleTableSlot
    - table_rescan
    - Assert
    - RelationGetDescr
    - RelationGetIndexAttrBitmap
    - table_scan_getnextslot
    - table_slot_create
    - table_beginscan
    - update_most_recent_deletion_info
    - table_endscan
    linkageType: ''
    returnType: bool
    signature: "bool RelationFindDeletedTupleInfoSeq(Relation rel, TupleTableSlot
      *searchslot,\n\t\t\t\t\t\t\t\tTransactionId oldestxmin,\n\t\t\t\t\t\t\t\tTransactionId
      *delete_xid,\n\t\t\t\t\t\t\t\tReplOriginId *delete_origin,\n\t\t\t\t\t\t\t\tTimestampTz
      *delete_time)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execReplication.c:648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:650,1
    - Dst: equalTupleDescs
      Src: /src/postgres/src/backend/executor/execReplication.c:650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:651,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:651,1
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/executor/execReplication.c:657,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execReplication.c:659,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/execReplication.c:661,1
    - Dst: build_replindex_scan_key
      Src: /src/postgres/src/backend/executor/execReplication.c:664,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/execReplication.c:672,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/execReplication.c:675,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/executor/execReplication.c:678,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execReplication.c:687,1
    - Dst: tuples_equal
      Src: /src/postgres/src/backend/executor/execReplication.c:689,1
    - Dst: update_most_recent_deletion_info
      Src: /src/postgres/src/backend/executor/execReplication.c:693,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/execReplication.c:697,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/execReplication.c:699,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execReplication.c:701,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 7
    argNames:
    - rel
    - idxoid
    - searchslot
    - oldestxmin
    - delete_xid
    - delete_origin
    - delete_time
    argTypes:
    - Relation
    - Oid
    - TupleTableSlot*
    - TransactionId
    - TransactionId*
    - ReplOriginId*
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 633
    functionDepth: 6
    functionLinenumber: 633
    functionLinenumberEnd: 704
    functionName: RelationFindDeletedTupleInfoByIndex
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 1
    functionsReached:
    - tuples_equal
    - palloc0_array
    - equalTupleDescs
    - ExecDropSingleTupleTableSlot
    - Assert
    - RelationGetDescr
    - index_rescan
    - index_endscan
    - table_slot_create
    - GetRelationIdentityOrPK
    - index_open
    - index_getnext_slot
    - update_most_recent_deletion_info
    - index_close
    - build_replindex_scan_key
    - OidIsValid
    - index_beginscan
    linkageType: ''
    returnType: bool
    signature: "bool RelationFindDeletedTupleInfoByIndex(Relation rel, Oid idxoid,\n\t\t\t\t\t\t\t\t\tTupleTableSlot
      *searchslot,\n\t\t\t\t\t\t\t\t\tTransactionId oldestxmin,\n\t\t\t\t\t\t\t\t\tTransactionId
      *delete_xid,\n\t\t\t\t\t\t\t\t\tReplOriginId *delete_origin,\n\t\t\t\t\t\t\t\t\tTimestampTz
      *delete_time)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BuildConflictIndexInfo
      Src: /src/postgres/src/backend/executor/execReplication.c:731,1
    - Dst: ExecCheckIndexConstraints
      Src: /src/postgres/src/backend/executor/execReplication.c:734,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/executor/execReplication.c:736,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execReplication.c:739,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execReplication.c:745,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:747,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:747,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/execReplication.c:749,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:749,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execReplication.c:751,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:757,1
    - Dst: should_refetch_tuple
      Src: /src/postgres/src/backend/executor/execReplication.c:759,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - resultRelInfo
    - estate
    - conflictindex
    - slot
    - conflictslot
    argTypes:
    - ResultRelInfo*
    - EState*
    - Oid
    - TupleTableSlot*
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 715
    functionDepth: 6
    functionLinenumber: 715
    functionLinenumberEnd: 763
    functionName: FindConflictTuple
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - ExecDropSingleTupleTableSlot
    - GetLatestSnapshot
    - table_slot_create
    - ExecCheckIndexConstraints
    - BuildConflictIndexInfo
    - table_tuple_lock
    - GetActiveSnapshot
    - list_make1_oid
    - PushActiveSnapshot
    - GetCurrentCommandId
    - should_refetch_tuple
    linkageType: ''
    returnType: bool
    signature: "bool FindConflictTuple(ResultRelInfo *resultRelInfo, EState *estate,\n\t\t\t\t
      \ Oid conflictindex, TupleTableSlot *slot,\n\t\t\t\t  TupleTableSlot **conflictslot)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach_oid
      Src: /src/postgres/src/backend/executor/execReplication.c:778,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execReplication.c:780,1
    - Dst: FindConflictTuple
      Src: /src/postgres/src/backend/executor/execReplication.c:781,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execReplication.c:784,1
    - Dst: GetTupleTransactionInfo
      Src: /src/postgres/src/backend/executor/execReplication.c:789,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execReplication.c:792,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/executor/execReplication.c:798,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execReplication.c:799,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 6
    argNames:
    - resultRelInfo
    - estate
    - type
    - recheckIndexes
    - searchslot
    - remoteslot
    argTypes:
    - ResultRelInfo*
    - EState*
    - ConflictType
    - List*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 769
    functionDepth: 7
    functionLinenumber: 769
    functionLinenumberEnd: 801
    functionName: CheckAndReportConflict
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - ReportApplyConflict
    - lappend
    - FindConflictTuple
    - foreach_oid
    - list_length
    - list_member_oid
    - GetTupleTransactionInfo
    linkageType: ''
    returnType: void
    signature: "void CheckAndReportConflict(ResultRelInfo *resultRelInfo, EState *estate,\n\t\t\t\t\t
      \  ConflictType type, List *recheckIndexes,\n\t\t\t\t\t   TupleTableSlot *searchslot,
      TupleTableSlot *remoteslot)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:817,1
    - Dst: CheckCmdReplicaIdentity
      Src: /src/postgres/src/backend/executor/execReplication.c:819,1
    - Dst: ExecBRInsertTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:825,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/execReplication.c:838,1
    - Dst: ExecConstraints
      Src: /src/postgres/src/backend/executor/execReplication.c:843,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/execReplication.c:845,1
    - Dst: simple_table_tuple_insert
      Src: /src/postgres/src/backend/executor/execReplication.c:848,1
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/execReplication.c:860,1
    - Dst: CheckAndReportConflict
      Src: /src/postgres/src/backend/executor/execReplication.c:882,1
    - Dst: ExecARInsertTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:886,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execReplication.c:895,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - resultRelInfo
    - estate
    - slot
    argTypes:
    - ResultRelInfo*
    - EState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 809
    functionDepth: 8
    functionLinenumber: 809
    functionLinenumberEnd: 897
    functionName: ExecSimpleRelationInsert
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 1
    functionsReached:
    - ExecBRInsertTriggers
    - ExecPartitionCheck
    - ExecARInsertTriggers
    - list_free
    - Assert
    - CheckAndReportConflict
    - CheckCmdReplicaIdentity
    - ExecConstraints
    - simple_table_tuple_insert
    - ExecComputeStoredGenerated
    - ExecInsertIndexTuples
    linkageType: ''
    returnType: void
    signature: "void ExecSimpleRelationInsert(ResultRelInfo *resultRelInfo,\n\t\t\t\t\t\t
      EState *estate, TupleTableSlot *slot)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:919,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/executor/execReplication.c:919,1
    - Dst: CheckCmdReplicaIdentity
      Src: /src/postgres/src/backend/executor/execReplication.c:921,1
    - Dst: ExecBRUpdateTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:927,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/execReplication.c:942,1
    - Dst: ExecConstraints
      Src: /src/postgres/src/backend/executor/execReplication.c:947,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/execReplication.c:949,1
    - Dst: simple_table_tuple_update
      Src: /src/postgres/src/backend/executor/execReplication.c:951,1
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/execReplication.c:964,1
    - Dst: CheckAndReportConflict
      Src: /src/postgres/src/backend/executor/execReplication.c:976,1
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:980,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execReplication.c:985,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 5
    argNames:
    - resultRelInfo
    - estate
    - epqstate
    - searchslot
    - slot
    argTypes:
    - ResultRelInfo*
    - EState*
    - EPQState*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 905
    functionDepth: 8
    functionLinenumber: 905
    functionLinenumberEnd: 987
    functionName: ExecSimpleRelationUpdate
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 2
    functionsReached:
    - ExecPartitionCheck
    - simple_table_tuple_update
    - Assert
    - CheckAndReportConflict
    - list_free
    - CheckCmdReplicaIdentity
    - ExecBRUpdateTriggers
    - ExecConstraints
    - ExecARUpdateTriggers
    - ExecComputeStoredGenerated
    - IsCatalogRelation
    - ExecInsertIndexTuples
    linkageType: ''
    returnType: void
    signature: "void ExecSimpleRelationUpdate(ResultRelInfo *resultRelInfo,\n\t\t\t\t\t\t
      EState *estate, EPQState *epqstate,\n\t\t\t\t\t\t TupleTableSlot *searchslot,
      TupleTableSlot *slot)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CheckCmdReplicaIdentity
      Src: /src/postgres/src/backend/executor/execReplication.c:1004,1
    - Dst: ExecBRDeleteTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:1010,1
    - Dst: simple_table_tuple_delete
      Src: /src/postgres/src/backend/executor/execReplication.c:1017,1
    - Dst: ExecARDeleteTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:1020,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - resultRelInfo
    - estate
    - epqstate
    - searchslot
    argTypes:
    - ResultRelInfo*
    - EState*
    - EPQState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 995
    functionDepth: 3
    functionLinenumber: 995
    functionLinenumberEnd: 1023
    functionName: ExecSimpleRelationDelete
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 2
    functionsReached:
    - ExecBRDeleteTriggers
    - simple_table_tuple_delete
    - CheckCmdReplicaIdentity
    - ExecARDeleteTriggers
    linkageType: ''
    returnType: void
    signature: "void ExecSimpleRelationDelete(ResultRelInfo *resultRelInfo,\n\t\t\t\t\t\t
      EState *estate, EPQState *epqstate,\n\t\t\t\t\t\t TupleTableSlot *searchslot)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: RelationBuildPublicationDesc
      Src: /src/postgres/src/backend/executor/execReplication.c:1067,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1069,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1070,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1071,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:1072,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:1073,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1075,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1076,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1077,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:1078,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:1079,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1081,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1082,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1083,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:1084,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:1085,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1087,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1088,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1089,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:1090,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:1091,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1093,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1094,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1095,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:1096,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:1097,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1099,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1101,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:1102,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:1103,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:1106,1
    - Dst: RelationGetReplicaIndex
      Src: /src/postgres/src/backend/executor/execReplication.c:1106,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1119,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1120,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1121,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:1122,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/execReplication.c:1123,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1127,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:1128,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/execReplication.c:1129,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 26
    argCount: 2
    argNames:
    - rel
    - cmd
    argTypes:
    - Relation
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1028
    functionDepth: 1
    functionLinenumber: 1028
    functionLinenumberEnd: 1130
    functionName: CheckCmdReplicaIdentity
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 4
    functionsReached:
    - RelationGetReplicaIndex
    - errcode
    - RelationBuildPublicationDesc
    - ereport
    - errhint
    - errmsg
    - RelationGetRelationName
    - errdetail
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void CheckCmdReplicaIdentity(Relation rel, CmdType cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1146,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1147,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1148,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/executor/execReplication.c:1150,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:1159,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:1160,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:1162,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 5
    argCount: 4
    argNames:
    - localrelkind
    - remoterelkind
    - nspname
    - relname
    argTypes:
    - char
    - char
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1139
    functionDepth: 2
    functionLinenumber: 1139
    functionLinenumberEnd: 1166
    functionName: CheckSubscriptionRelkind
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 2
    functionsReached:
    - errdetail_relkind_not_supported
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: "void CheckSubscriptionRelkind(char localrelkind, char remoterelkind,\n\t\t\t\t\t\t
      const char *nspname, const char *relname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:89,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:91,1
    - Dst: BuildTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:98,1
    - Dst: ExecGetCommonChildSlotOps
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - setopstate
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 84
    functionDepth: 8
    functionLinenumber: 84
    functionLinenumberEnd: 112
    functionName: build_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 3
    functionsReached:
    - ExecGetResultType
    - Assert
    - outerPlanState
    - BuildTupleHashTable
    - ExecGetCommonChildSlotOps
    linkageType: ''
    returnType: void
    signature: void build_hash_table(SetOpState *setopstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EstimateTupleHashTableSpace
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nentries
    - tupleWidth
    argTypes:
    - double
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: EstimateSetOpHashTableSpace
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - EstimateTupleHashTableSpace
    linkageType: ''
    returnType: Size
    signature: Size EstimateSetOpHashTableSpace(double nentries, Size tupleWidth)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:158,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - setopstate
    - pergroup
    argTypes:
    - SetOpState*
    - SetOpStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 161
    functionName: set_output_count
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void set_output_count(SetOpState *setopstate, SetOpStatePerGroup pergroup)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:171,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:175,1
    - Dst: setop_fill_hash_table
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:195,1
    - Dst: setop_retrieve_hash_table
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:196,1
    - Dst: setop_retrieve_sorted
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:199,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 200
    functionName: ExecSetOp
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 0
    functionsReached:
    - setop_retrieve_sorted
    - castNode
    - CHECK_FOR_INTERRUPTS
    - setop_retrieve_hash_table
    - setop_fill_hash_table
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\t\t\t/* return: a tuple or NULL */\nExecSetOp(PlanState
      *pstate)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:215,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:216,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:228,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:234,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:240,1
    - Dst: setop_load_group
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:259,1
    - Dst: setop_load_group
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:275,1
    - Dst: setop_compare_slots
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:284,1
    - Dst: set_output_count
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:318,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:328,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 1
    argNames:
    - setopstate
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 330
    functionName: setop_retrieve_sorted
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - innerPlanState
    - ExecProcNode
    - set_output_count
    - setop_load_group
    - outerPlanState
    - setop_compare_slots
    - ExecClearTuple
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      setop_retrieve_sorted(SetOpState *setopstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:346,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:348,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:354,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:354,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:366,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:367,1
    - Dst: setop_compare_slots
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:374,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - input
    - inputPlan
    - setopstate
    argTypes:
    - SetOpStatePerInput*
    - PlanState*
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 339
    functionDepth: 5
    functionLinenumber: 339
    functionLinenumberEnd: 381
    functionName: setop_load_group
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecProcNode
    - ExecStoreMinimalTuple
    - ExecCopySlotMinimalTuple
    - setop_compare_slots
    - ExecClearTuple
    - TupIsNull
    linkageType: ''
    returnType: void
    signature: "void setop_load_group(SetOpStatePerInput *input, PlanState *inputPlan,\n\t\t\t\t
      SetOpState *setopstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:391,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:392,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:403,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - s1
    - s2
    - setopstate
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 386
    functionDepth: 2
    functionLinenumber: 386
    functionLinenumberEnd: 410
    functionName: setop_compare_slots
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 2
    functionsReached:
    - ApplySortComparator
    - slot_getallattrs
    linkageType: ''
    returnType: int
    signature: "int setop_compare_slots(TupleTableSlot *s1, TupleTableSlot *s2,\n\t\t\t\t\tSetOpState
      *setopstate)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:426,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:427,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:441,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:442,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:447,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:451,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:463,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:482,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:483,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:487,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:494,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:500,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:506,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - setopstate
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 507
    functionName: setop_fill_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - LookupTupleHashEntry
    - innerPlanState
    - ExecProcNode
    - outerPlanState
    - TupleHashEntryGetAdditional
    - TupIsNull
    - ResetTupleHashIterator
    linkageType: ''
    returnType: void
    signature: void setop_fill_hash_table(SetOpState *setopstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:531,1
    - Dst: ScanTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:536,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:548,1
    - Dst: set_output_count
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:549,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:554,1
    - Dst: TupleHashEntryGetTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:554,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:561,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - setopstate
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 512
    functionDepth: 5
    functionLinenumber: 512
    functionLinenumberEnd: 563
    functionName: setop_retrieve_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - set_output_count
    - CHECK_FOR_INTERRUPTS
    - ExecStoreMinimalTuple
    - ScanTupleHashTable
    - TupleHashEntryGetAdditional
    - ExecClearTuple
    - TupleHashEntryGetTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      setop_retrieve_hash_table(SetOpState *setopstate)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:578,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:583,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:596,1
    - Dst: BumpContextCreate
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:607,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:619,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:619,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:619,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:620,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:620,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:620,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:629,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:635,1
    - Dst: execTuplesHashPrepare
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:649,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:658,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:670,1
    - Dst: build_hash_table
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:677,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - SetOp*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 572
    functionDepth: 11
    functionLinenumber: 572
    functionLinenumberEnd: 682
    functionName: ExecInitSetOp
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - ExecInitExtraTupleSlot
    - BumpContextCreate
    - innerPlanState
    - PrepareSortSupportFromOrderingOp
    - ExecAssignExprContext
    - Assert
    - execTuplesHashPrepare
    - palloc0
    - makeNode
    - ExecInitResultTupleSlotTL
    - build_hash_table
    - outerPlanState
    - outerPlan
    - innerPlan
    linkageType: ''
    returnType: SetOpState
    signature: 'SetOpState *

      ExecInitSetOp(SetOp *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:696,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:698,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:698,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:699,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:699,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 691
    functionDepth: 4
    functionLinenumber: 691
    functionLinenumberEnd: 700
    functionName: ExecEndSetOp
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - ExecEndNode
    - MemoryContextDelete
    - innerPlanState
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndSetOp(SetOpState *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:706,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:707,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:709,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:731,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:736,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:750,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:752,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - node
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 703
    functionDepth: 7
    functionLinenumber: 703
    functionLinenumberEnd: 753
    functionName: ExecReScanSetOp
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - ResetTupleHashTable
    - innerPlanState
    - ExecReScan
    - outerPlanState
    - ExecClearTuple
    - ResetTupleHashIterator
    linkageType: ''
    returnType: void
    signature: void ExecReScanSetOp(SetOpState *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:46,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:48,1
    - Dst: tuplestore_ateof
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:55,1
    - Dst: tuplestore_advance
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:67,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:82,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:104,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:105,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:116,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:125,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:133,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:139,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - node
    argTypes:
    - CteScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 140
    functionName: CteScanNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 0
    functionsReached:
    - tuplestore_ateof
    - ExecProcNode
    - tuplestore_advance
    - tuplestore_select_read_pointer
    - ScanDirectionIsForward
    - ExecCopySlot
    - ExecClearTuple
    - tuplestore_gettupleslot
    - TupIsNull
    - tuplestore_puttupleslot
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      CteScanNext(CteScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - CteScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 150
    functionName: CteScanRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool CteScanRecheck(CteScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:163,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 168
    functionName: ExecCteScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecCteScan(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:201,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:202,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:202,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:207,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:229,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:230,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:230,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:234,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:236,1
    - Dst: tuplestore_set_eflags
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:237,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:245,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:247,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:249,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:257,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:263,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:264,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:270,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:271,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 34
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - CteScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 175
    functionDepth: 9
    functionLinenumber: 175
    functionLinenumberEnd: 280
    functionName: ExecInitCteScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 1
    functionsReached:
    - tuplestore_set_eflags
    - Assert
    - PointerGetDatum
    - outerPlan
    - tuplestore_begin_heap
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - ExecInitQual
    - tuplestore_alloc_read_pointer
    - ExecGetResultType
    - ExecAssignExprContext
    - castNode
    - tuplestore_rescan
    - makeNode
    - tuplestore_select_read_pointer
    - ExecAssignScanProjectionInfo
    - list_nth
    - innerPlan
    - DatumGetPointer
    linkageType: ''
    returnType: CteScanState
    signature: 'CteScanState *

      ExecInitCteScan(CteScan *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - CteScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 299
    functionName: ExecEndCteScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 1
    functionsReached:
    - tuplestore_end
    linkageType: ''
    returnType: void
    signature: void ExecEndCteScan(CteScanState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:313,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:315,1
    - Dst: tuplestore_clear
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:327,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:337,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - CteScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 307
    functionDepth: 4
    functionLinenumber: 307
    functionLinenumberEnd: 340
    functionName: ExecReScanCteScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 1
    functionsReached:
    - tuplestore_rescan
    - tuplestore_select_read_pointer
    - tuplestore_clear
    - ExecClearTuple
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanCteScan(CteScanState *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeAppend.c:114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:126,1
    - Dst: ExecInitPartitionExecPruning
      Src: /src/postgres/src/backend/executor/nodeAppend.c:150,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAppend.c:151,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeAppend.c:156,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/nodeAppend.c:165,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAppend.c:171,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:177,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/nodeAppend.c:179,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAppend.c:184,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:198,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeAppend.c:200,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:209,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeAppend.c:219,1
    - Dst: ExecGetCommonSlotOps
      Src: /src/postgres/src/backend/executor/nodeAppend.c:235,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeAppend.c:238,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeAppend.c:242,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAppend.c:262,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:265,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/nodeAppend.c:269,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAppend.c:281,1
    - Dst: classify_matching_subplans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:284,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 78
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Append*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 111
    functionDepth: 11
    functionLinenumber: 111
    functionLinenumberEnd: 297
    functionName: ExecInitAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - ExecInitPartitionExecPruning
    - bms_add_range
    - Assert
    - bms_num_members
    - palloc0
    - makeNode
    - ExecInitResultTupleSlotTL
    - classify_matching_subplans
    - ExecGetCommonSlotOps
    - palloc_object
    - bms_next_member
    - palloc
    - list_length
    - list_nth
    - bms_add_member
    linkageType: ''
    returnType: AppendState
    signature: 'AppendState *

      ExecInitAppend(Append *node, EState *estate, int eflags)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeAppend.c:308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:317,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:318,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAppend.c:322,1
    - Dst: ExecAppendAsyncBegin
      Src: /src/postgres/src/backend/executor/nodeAppend.c:326,1
    - Dst: AppendState*::choose_next_subplan
      Src: /src/postgres/src/backend/executor/nodeAppend.c:332,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAppend.c:333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:335,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAppend.c:347,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeAppend.c:352,1
    - Dst: ExecAppendAsyncGetNext
      Src: /src/postgres/src/backend/executor/nodeAppend.c:354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:356,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:357,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeAppend.c:357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:363,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeAppend.c:369,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAppend.c:371,1
    - Dst: ExecAppendAsyncEventWait
      Src: /src/postgres/src/backend/executor/nodeAppend.c:387,1
    - Dst: AppendState*::choose_next_subplan
      Src: /src/postgres/src/backend/executor/nodeAppend.c:390,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAppend.c:391,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 393
    functionName: ExecAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 0
    functionsReached:
    - TupIsNull
    - Assert
    - castNode
    - ExecProcNode
    - ExecAppendAsyncEventWait
    - CHECK_FOR_INTERRUPTS
    - AppendState*::choose_next_subplan
    - ExecClearTuple
    - bms_is_empty
    - ExecAppendAsyncBegin
    - ExecAppendAsyncGetNext
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecAppend(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeAppend.c:420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 403
    functionDepth: 4
    functionLinenumber: 403
    functionLinenumberEnd: 421
    functionName: ExecEndAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndAppend(AppendState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeAppend.c:435,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAppend.c:439,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAppend.c:441,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:454,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeAppend.c:461,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:468,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAppend.c:479,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 423
    functionDepth: 7
    functionLinenumber: 423
    functionLinenumberEnd: 487
    functionName: ExecReScanAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - bms_free
    - ExecReScan
    - bms_next_member
    - UpdateChangedParamSet
    - bms_overlap
    linkageType: ''
    returnType: void
    signature: void ExecReScanAppend(AppendState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeAppend.c:506,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeAppend.c:509,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeAppend.c:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AppendState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 511
    functionName: ExecAppendEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - shm_toc_estimate_chunk
    - add_size
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecAppendEstimate(AppendState *node,\n\t\t\t\t   ParallelContext
      *pcxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeAppend.c:526,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeAppend.c:527,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/executor/nodeAppend.c:528,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AppendState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 533
    functionName: ExecAppendInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - shm_toc_insert
    - memset
    - shm_toc_allocate
    - LWLockInitialize
    linkageType: ''
    returnType: void
    signature: "void ExecAppendInitializeDSM(AppendState *node,\n\t\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeAppend.c:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AppendState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 548
    functionName: ExecAppendReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void ExecAppendReInitializeDSM(AppendState *node, ParallelContext *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeAppend.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - AppendState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 562
    functionName: ExecAppendInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: void ExecAppendInitializeWorker(AppendState *node, ParallelWorkerContext
      *pwcxt)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:596,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:601,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:609,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeAppend.c:611,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:612,1
    - Dst: bms_prev_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:614,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 571
    functionDepth: 5
    functionLinenumber: 571
    functionLinenumberEnd: 627
    functionName: choose_next_subplan_locally
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 0
    functionsReached:
    - ExecFindMatchingSubPlans
    - Assert
    - bms_prev_member
    - ScanDirectionIsForward
    - bms_next_member
    linkageType: ''
    returnType: bool
    signature: bool choose_next_subplan_locally(AppendState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:643,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeAppend.c:643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:646,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeAppend.c:648,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:668,1
    - Dst: mark_invalid_subplans_as_finished
      Src: /src/postgres/src/backend/executor/nodeAppend.c:675,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:686,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:701,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 637
    functionDepth: 5
    functionLinenumber: 637
    functionLinenumberEnd: 704
    functionName: choose_next_subplan_for_leader
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 0
    functionsReached:
    - ExecFindMatchingSubPlans
    - mark_invalid_subplans_as_finished
    - LWLockAcquire
    - Assert
    - ScanDirectionIsForward
    - LWLockRelease
    linkageType: ''
    returnType: bool
    signature: bool choose_next_subplan_for_leader(AppendState *node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:725,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeAppend.c:725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:728,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeAppend.c:730,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:744,1
    - Dst: mark_invalid_subplans_as_finished
      Src: /src/postgres/src/backend/executor/nodeAppend.c:747,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:753,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:765,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:778,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:796,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:803,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:812,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:832,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 719
    functionDepth: 5
    functionLinenumber: 719
    functionLinenumberEnd: 835
    functionName: choose_next_subplan_for_worker
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 0
    functionsReached:
    - ExecFindMatchingSubPlans
    - mark_invalid_subplans_as_finished
    - LWLockAcquire
    - Assert
    - ScanDirectionIsForward
    - LWLockRelease
    - bms_next_member
    linkageType: ''
    returnType: bool
    signature: bool choose_next_subplan_for_worker(AppendState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:851,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:854,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeAppend.c:857,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:863,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 845
    functionDepth: 3
    functionLinenumber: 845
    functionLinenumberEnd: 866
    functionName: mark_invalid_subplans_as_finished
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 2
    functionsReached:
    - Assert
    - bms_num_members
    - bms_is_member
    linkageType: ''
    returnType: void
    signature: void mark_invalid_subplans_as_finished(AppendState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:885,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeAppend.c:885,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:891,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:897,1
    - Dst: classify_matching_subplans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:900,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeAppend.c:904,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeAppend.c:905,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:913,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:918,1
    - Dst: ExecAsyncRequest
      Src: /src/postgres/src/backend/executor/nodeAppend.c:921,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 879
    functionDepth: 5
    functionLinenumber: 879
    functionLinenumberEnd: 923
    functionName: ExecAppendAsyncBegin
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - ExecFindMatchingSubPlans
    - Assert
    - bms_num_members
    - ScanDirectionIsForward
    - classify_matching_subplans
    - bms_next_member
    - bms_is_empty
    - ExecAsyncRequest
    linkageType: ''
    returnType: void
    signature: void ExecAppendAsyncBegin(AppendState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:937,1
    - Dst: ExecAppendAsyncRequest
      Src: /src/postgres/src/backend/executor/nodeAppend.c:940,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAppend.c:945,1
    - Dst: ExecAppendAsyncEventWait
      Src: /src/postgres/src/backend/executor/nodeAppend.c:948,1
    - Dst: ExecAppendAsyncRequest
      Src: /src/postgres/src/backend/executor/nodeAppend.c:951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:966,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAppend.c:967,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - node
    - result
    argTypes:
    - AppendState*
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 931
    functionDepth: 1
    functionLinenumber: 931
    functionLinenumberEnd: 972
    functionName: ExecAppendAsyncGetNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecAppendAsyncEventWait
    - CHECK_FOR_INTERRUPTS
    - ExecClearTuple
    - ExecAppendAsyncRequest
    linkageType: ''
    returnType: bool
    signature: bool ExecAppendAsyncGetNext(AppendState *node, TupleTableSlot **result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeAppend.c:987,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:989,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1008,1
    - Dst: ExecAsyncRequest
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1013,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1015,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - node
    - result
    argTypes:
    - AppendState*
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 980
    functionDepth: 3
    functionLinenumber: 980
    functionLinenumberEnd: 1026
    functionName: ExecAppendAsyncRequest
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_free
    - bms_next_member
    - bms_is_empty
    - ExecAsyncRequest
    linkageType: ''
    returnType: bool
    signature: bool ExecAppendAsyncRequest(AppendState *node, TupleTableSlot **result)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1046,1
    - Dst: CreateWaitEventSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1047,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1048,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1053,1
    - Dst: ExecAsyncConfigureWait
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1058,1
    - Dst: GetNumRegisteredWaitEvents
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1065,1
    - Dst: FreeWaitEventSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1067,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1084,1
    - Dst: WaitEventSetWait
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1095,1
    - Dst: FreeWaitEventSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1097,1
    - Dst: ExecAsyncNotify
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1125,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1132,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1133,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1034
    functionDepth: 3
    functionLinenumber: 1034
    functionLinenumberEnd: 1136
    functionName: ExecAppendAsyncEventWait
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 2
    functionsReached:
    - WaitEventSetWait
    - ExecAsyncNotify
    - Assert
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - GetNumRegisteredWaitEvents
    - CreateWaitEventSet
    - bms_next_member
    - AddWaitEventToSet
    - ExecAsyncConfigureWait
    - FreeWaitEventSet
    linkageType: ''
    returnType: void
    signature: void ExecAppendAsyncEventWait(AppendState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1151,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1157,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1171,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1144
    functionDepth: 3
    functionLinenumber: 1144
    functionLinenumberEnd: 1180
    functionName: ExecAsyncAppendResponse
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - bms_add_member
    - TupIsNull
    linkageType: ''
    returnType: void
    signature: void ExecAsyncAppendResponse(AsyncRequest *areq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1195,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1196,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1199,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1207,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1214,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1190
    functionDepth: 4
    functionLinenumber: 1190
    functionLinenumberEnd: 1223
    functionName: classify_matching_subplans
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 2
    functionsReached:
    - bms_del_members
    - Assert
    - bms_overlap
    - bms_intersect
    - bms_is_empty
    linkageType: ''
    returnType: void
    signature: void classify_matching_subplans(AppendState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - SubqueryScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 61
    functionName: SubqueryNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubqueryscan.c
    functionUses: 0
    functionsReached:
    - ExecProcNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      SubqueryNext(SubqueryScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - SubqueryScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: SubqueryRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubqueryscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SubqueryRecheck(SubqueryScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:85,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: ExecSubqueryScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubqueryscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSubqueryScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:105,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:105,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:106,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:106,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:111,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:121,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:126,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:131,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:132,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:133,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:141,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:150,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:151,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - SubqueryScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 96
    functionDepth: 11
    functionLinenumber: 96
    functionLinenumberEnd: 160
    functionName: ExecInitSubqueryScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubqueryscan.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - ExecGetResultType
    - ExecAssignExprContext
    - Assert
    - ExecInitResultTypeTL
    - ExecInitScanTupleSlot
    - makeNode
    - ExecAssignScanProjectionInfo
    - ExecGetResultSlotOps
    - ExecInitQual
    - outerPlan
    - innerPlan
    linkageType: ''
    returnType: SubqueryScanState
    signature: 'SubqueryScanState *

      ExecInitSubqueryScan(SubqueryScan *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - SubqueryScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 168
    functionDepth: 4
    functionLinenumber: 168
    functionLinenumberEnd: 175
    functionName: ExecEndSubqueryScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubqueryscan.c
    functionUses: 1
    functionsReached:
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndSubqueryScan(SubqueryScanState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:186,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:194,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - SubqueryScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 183
    functionDepth: 7
    functionLinenumber: 183
    functionLinenumberEnd: 202
    functionName: ExecReScanSubqueryScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubqueryscan.c
    functionUses: 1
    functionsReached:
    - ExecScanReScan
    - UpdateChangedParamSet
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanSubqueryScan(SubqueryScanState *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeResult.c:69,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeResult.c:74,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeResult.c:83,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeResult.c:97,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeResult.c:107,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeResult.c:114,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeResult.c:116,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeResult.c:135,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 139
    functionName: ExecResult
    functionSourceFile: /src/postgres/src/backend/executor/nodeResult.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - castNode
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - ExecQual
    - ExecProject
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecResult(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeResult.c:148,1
    - Dst: ExecMarkPos
      Src: /src/postgres/src/backend/executor/nodeResult.c:151,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeResult.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - ResultState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 145
    functionDepth: 4
    functionLinenumber: 145
    functionLinenumberEnd: 154
    functionName: ExecResultMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeResult.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - elog
    - ExecMarkPos
    linkageType: ''
    returnType: void
    signature: void ExecResultMarkPos(ResultState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeResult.c:163,1
    - Dst: ExecRestrPos
      Src: /src/postgres/src/backend/executor/nodeResult.c:166,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeResult.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - ResultState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 169
    functionName: ExecResultRestrPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeResult.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - ExecRestrPos
    - elog
    linkageType: ''
    returnType: void
    signature: void ExecResultRestrPos(ResultState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeResult.c:185,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeResult.c:186,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeResult.c:191,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeResult.c:204,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeResult.c:209,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeResult.c:209,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeResult.c:209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeResult.c:214,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeResult.c:214,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeResult.c:219,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeResult.c:220,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeResult.c:226,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeResult.c:228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Result*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 179
    functionDepth: 11
    functionLinenumber: 179
    functionLinenumberEnd: 231
    functionName: ExecInitResult
    functionSourceFile: /src/postgres/src/backend/executor/nodeResult.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - ExecAssignProjectionInfo
    - ExecAssignExprContext
    - Assert
    - makeNode
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - ExecInitQual
    - outerPlan
    - innerPlan
    linkageType: ''
    returnType: ResultState
    signature: 'ResultState *

      ExecInitResult(Result *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeResult.c:245,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeResult.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - ResultState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 239
    functionDepth: 4
    functionLinenumber: 239
    functionLinenumberEnd: 246
    functionName: ExecEndResult
    functionSourceFile: /src/postgres/src/backend/executor/nodeResult.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndResult(ResultState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeResult.c:251,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeResult.c:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - ResultState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 248
    functionDepth: 7
    functionLinenumber: 248
    functionLinenumberEnd: 262
    functionName: ExecReScanResult
    functionSourceFile: /src/postgres/src/backend/executor/nodeResult.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanResult(ResultState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:68,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:75,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:77,1
    - Dst: ExecHashSubPlan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:84,1
    - Dst: ExecScanSubPlan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:86,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - node
    - econtext
    - isNull
    argTypes:
    - SubPlanState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 92
    functionName: ExecSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 0
    functionsReached:
    - elog
    - ExecScanSubPlan
    - ExecHashSubPlan
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecSubPlan(SubPlanState *node,\n\t\t\tExprContext *econtext,\n\t\t\tbool
      *isNull)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:109,1
    - Dst: buildSubPlanHash
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:116,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:124,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:131,1
    - Dst: slotNoNulls
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:147,1
    - Dst: FindTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:150,1
    - Dst: findPartialMatch
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:156,1
    - Dst: slotAllNulls
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:172,1
    - Dst: findPartialMatch
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:176,1
    - Dst: findPartialMatch
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:179,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:189,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:192,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:194,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 27
    argCount: 3
    argNames:
    - node
    - econtext
    - isNull
    argTypes:
    - SubPlanState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 195
    functionName: ExecHashSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - elog
    - slotNoNulls
    - findPartialMatch
    - ResetExprContext
    - slotAllNulls
    - buildSubPlanHash
    - ExecClearTuple
    - ExecProject
    - BoolGetDatum
    - FindTupleHashEntry
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecHashSubPlan(SubPlanState *node,\n\t\t\t\tExprContext *econtext,\n\t\t\t\tbool
      *isNull)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: initArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:217,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:225,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:233,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:235,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:237,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:241,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:269,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:272,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:273,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:274,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:285,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:293,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:294,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:295,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:307,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:308,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:310,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:319,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:320,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:321,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:333,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:334,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:340,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:346,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:347,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:363,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:363,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:364,1
    - Dst: accumArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:373,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:374,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:375,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:385,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:387,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:391,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:392,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:396,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:404,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:406,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:416,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:418,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:431,1
    - Dst: makeArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:436,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:454,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:456,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:460,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 101
    argCount: 3
    argNames:
    - node
    - econtext
    - isNull
    argTypes:
    - SubPlanState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 200
    functionDepth: 7
    functionLinenumber: 200
    functionLinenumberEnd: 468
    functionName: ExecScanSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - lfirst_int
    - errcode
    - ExecReScan
    - ExecEvalExprSwitchContext
    - bms_add_member
    - DatumGetBool
    - foreach
    - slot_getattr
    - heap_freetuple
    - Assert
    - ExecProcNode
    - errmsg
    - heap_getattr
    - ereport
    - makeArrayResultAny
    - TupleDescAttr
    - TupIsNull
    - accumArrayResultAny
    - MemoryContextSwitchTo
    - ExecCopySlotHeapTuple
    - initArrayResultAny
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecScanSubPlan(SubPlanState *node,\n\t\t\t\tExprContext *econtext,\n\t\t\t\tbool
      *isNull)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:484,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:512,1
    - Dst: BuildTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:514,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:541,1
    - Dst: BuildTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:543,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:565,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:570,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:576,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:577,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:578,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:588,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:594,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:595,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:599,1
    - Dst: slotNoNulls
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:604,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:606,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:611,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:619,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:629,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:631,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 2
    argNames:
    - node
    - econtext
    argTypes:
    - SubPlanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 473
    functionDepth: 8
    functionLinenumber: 473
    functionLinenumberEnd: 632
    functionName: buildSubPlanHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - ResetTupleHashTable
    - slotNoNulls
    - ResetExprContext
    - foreach
    - slot_getattr
    - lfirst_int
    - Assert
    - LookupTupleHashEntry
    - ExecProcNode
    - MemoryContextSwitchTo
    - BuildTupleHashTable
    - ExecReScan
    - ExecProject
    - TupIsNull
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void buildSubPlanHash(SubPlanState *node, ExprContext *econtext)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EstimateTupleHashTableSpace
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:644,1
    - Dst: EstimateTupleHashTableSpace
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:672,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - nentries
    - tupleWidth
    - unknownEqFalse
    argTypes:
    - double
    - Size
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 635
    functionDepth: 2
    functionLinenumber: 635
    functionLinenumberEnd: 681
    functionName: EstimateSubplanHashTableSpace
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 2
    functionsReached:
    - EstimateTupleHashTableSpace
    linkageType: ''
    returnType: Size
    signature: "Size EstimateSubplanHashTableSpace(double nentries,\n\t\t\t\t\t\t\t
      \ Size tupleWidth,\n\t\t\t\t\t\t\t  bool unknownEqFalse)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:711,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:712,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:730,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:735,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:741,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:741,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:750,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 7
    argNames:
    - slot1
    - slot2
    - numCols
    - matchColIdx
    - eqfunctions
    - collations
    - evalContext
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    - int
    - AttrNumber*
    - FmgrInfo*
    - Oid*
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 753
    functionName: execTuplesUnequal
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - slot_getattr
    - MemoryContextSwitchTo
    - FunctionCall2Coll
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool execTuplesUnequal(TupleTableSlot *slot1,\n\t\t\t\t  TupleTableSlot
      *slot2,\n\t\t\t\t  int numCols,\n\t\t\t\t  AttrNumber *matchColIdx,\n\t\t\t\t
      \ FmgrInfo *eqfunctions,\n\t\t\t\t  const Oid *collations,\n\t\t\t\t  MemoryContext
      evalContext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: InitTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:775,1
    - Dst: ScanTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:776,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:778,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:780,1
    - Dst: TupleHashEntryGetTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:780,1
    - Dst: execTuplesUnequal
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:781,1
    - Dst: TermTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:787,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - hashtable
    - slot
    - eqfunctions
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - FmgrInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 766
    functionDepth: 5
    functionLinenumber: 766
    functionLinenumberEnd: 793
    functionName: findPartialMatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - ExecStoreMinimalTuple
    - ScanTupleHashTable
    - execTuplesUnequal
    - TermTupleHashIterator
    - InitTupleHashIterator
    - TupleHashEntryGetTuple
    linkageType: ''
    returnType: bool
    signature: "bool findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot,\n\t\t\t\t
      FmgrInfo *eqfunctions)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slot_attisnull
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:809,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 801
    functionDepth: 2
    functionLinenumber: 801
    functionLinenumberEnd: 813
    functionName: slotAllNulls
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - slot_attisnull
    linkageType: ''
    returnType: bool
    signature: bool slotAllNulls(TupleTableSlot *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slot_attisnull
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:829,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 821
    functionDepth: 2
    functionLinenumber: 821
    functionLinenumberEnd: 833
    functionName: slotNoNulls
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 2
    functionsReached:
    - slot_attisnull
    linkageType: ''
    returnType: bool
    signature: bool slotNoNulls(TupleTableSlot *slot)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:852,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:858,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:866,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:873,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:879,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:908,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:910,1
    - Dst: BumpContextCreate
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:937,1
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:941,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:956,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:959,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:961,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:964,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:969,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:970,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:973,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:977,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:978,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:979,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:980,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:981,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:982,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:984,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:996,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:996,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:999,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1000,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1004,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1007,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1008,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1012,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1016,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1017,1
    - Dst: get_compatible_hash_operators
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1020,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1022,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1024,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1027,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1029,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1031,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1032,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1051,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1052,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1053,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1059,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1060,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1061,1
    - Dst: ExecBuildHash32FromAttrs
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1068,1
    - Dst: ExecBuildGroupingEqual
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1081,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 79
    argCount: 2
    argNames:
    - subplan
    - parent
    argTypes:
    - SubPlan*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 849
    functionDepth: 8
    functionLinenumber: 849
    functionLinenumberEnd: 1091
    functionName: ExecInitSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 2
    functionsReached:
    - BumpContextCreate
    - fmgr_info_set_expr
    - lfirst_int
    - nodeTag
    - elog
    - ExecTypeFromTL
    - foreach
    - get_compatible_hash_operators
    - Assert
    - linitial
    - ExecBuildProjectionInfo
    - PointerGetDatum
    - list_length
    - fmgr_info
    - ExecBuildGroupingEqual
    - makeTargetEntry
    - lappend
    - get_op_hash_functions
    - is_andclause
    - list_make1
    - get_opcode
    - lfirst_node
    - ExecInitExtraTupleSlot
    - CreateExprContext
    - castNode
    - makeNode
    - lsecond
    - ExecInitExpr
    - palloc
    - list_nth
    - IsA
    - ExecBuildHash32FromAttrs
    linkageType: ''
    returnType: SubPlanState
    signature: 'SubPlanState *

      ExecInitSubPlan(SubPlan *subplan, PlanState *parent)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:996,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:996,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:999,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1000,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1004,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1007,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1008,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1012,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1016,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1017,1
    - Dst: get_compatible_hash_operators
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1020,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1022,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1024,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1027,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1029,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1031,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1032,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 987
    functionDepth: 6
    functionLinenumber: 987
    functionLinenumberEnd: 1041
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 432
    functionsReached:
    - elog
    - fmgr_info_set_expr
    - get_compatible_hash_operators
    - Assert
    - linitial
    - makeTargetEntry
    - lappend
    - get_op_hash_functions
    - lsecond
    - list_length
    - get_opcode
    - fmgr_info
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, oplist)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1133,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1135,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1137,1
    - Dst: initArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1147,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1153,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1159,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1160,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1161,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1169,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1186,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1186,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1187,1
    - Dst: accumArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1198,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1199,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1200,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1211,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1212,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1217,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1219,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1223,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1232,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1240,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1241,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1241,1
    - Dst: makeArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1242,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1254,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1258,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1264,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1266,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1276,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 2
    argNames:
    - node
    - econtext
    argTypes:
    - SubPlanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1117
    functionDepth: 4
    functionLinenumber: 1117
    functionLinenumberEnd: 1280
    functionName: ExecSetParamPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 0
    functionsReached:
    - errcode
    - lfirst_int
    - linitial_int
    - elog
    - foreach
    - slot_getattr
    - heap_freetuple
    - Assert
    - pfree
    - ExecProcNode
    - errmsg
    - PointerGetDatum
    - heap_getattr
    - ereport
    - makeArrayResultAny
    - TupleDescAttr
    - TupIsNull
    - accumArrayResultAny
    - MemoryContextSwitchTo
    - ExecCopySlotHeapTuple
    - initArrayResultAny
    - BoolGetDatum
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1299,1
    - Dst: ExecSetParamPlan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1306,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - params
    - econtext
    argTypes:
    - Bitmapset*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1293
    functionDepth: 5
    functionLinenumber: 1293
    functionLinenumberEnd: 1311
    functionName: ExecSetParamPlanMulti
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 4
    functionsReached:
    - bms_next_member
    - ExecSetParamPlan
    - Assert
    linkageType: ''
    returnType: void
    signature: void ExecSetParamPlanMulti(const Bitmapset *params, ExprContext *econtext)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1326,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1328,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1329,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1330,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1344,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1346,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1352,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - node
    - parent
    argTypes:
    - SubPlanState*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1316
    functionDepth: 3
    functionLinenumber: 1316
    functionLinenumberEnd: 1354
    functionName: ExecReScanSetParamPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - lfirst_int
    - bms_is_empty
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void ExecReScanSetParamPlan(SubPlanState *node, PlanState *parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/instrument.c:38,1
    - Dst: InstrInitOptions
      Src: /src/postgres/src/backend/executor/instrument.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - instrument_options
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 42
    functionName: InstrAlloc
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 1
    functionsReached:
    - InstrInitOptions
    - palloc0_object
    linkageType: ''
    returnType: Instrumentation
    signature: 'Instrumentation *

      InstrAlloc(int instrument_options)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - instr
    - instrument_options
    argTypes:
    - Instrumentation*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: InstrInitOptions
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InstrInitOptions(Instrumentation *instr, int instrument_options)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_IS_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:57,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/instrument.c:58,1
    - Dst: INSTR_TIME_SET_CURRENT_FAST
      Src: /src/postgres/src/backend/executor/instrument.c:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - instr
    argTypes:
    - Instrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 69
    functionName: InstrStart
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached:
    - elog
    - INSTR_TIME_SET_CURRENT_FAST
    - INSTR_TIME_IS_ZERO
    linkageType: ''
    returnType: void
    signature: void InstrStart(Instrumentation *instr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_IS_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:83,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/instrument.c:84,1
    - Dst: INSTR_TIME_SET_CURRENT_FAST
      Src: /src/postgres/src/backend/executor/instrument.c:86,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:87,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:89,1
    - Dst: BufferUsageAccumDiff
      Src: /src/postgres/src/backend/executor/instrument.c:94,1
    - Dst: WalUsageAccumDiff
      Src: /src/postgres/src/backend/executor/instrument.c:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - instr
    - accum_time
    argTypes:
    - Instrumentation*
    - instr_time*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 100
    functionName: InstrStopCommon
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 0
    functionsReached:
    - elog
    - INSTR_TIME_ACCUM_DIFF
    - INSTR_TIME_SET_CURRENT_FAST
    - BufferUsageAccumDiff
    - WalUsageAccumDiff
    - INSTR_TIME_SET_ZERO
    - INSTR_TIME_IS_ZERO
    linkageType: ''
    returnType: void
    signature: void InstrStopCommon(Instrumentation *instr, instr_time *accum_time)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InstrStopCommon
      Src: /src/postgres/src/backend/executor/instrument.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - instr
    argTypes:
    - Instrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: InstrStop
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached:
    - InstrStopCommon
    linkageType: ''
    returnType: void
    signature: void InstrStop(Instrumentation *instr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/instrument.c:114,1
    - Dst: InstrInitNode
      Src: /src/postgres/src/backend/executor/instrument.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - instrument_options
    - async_mode
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 119
    functionName: InstrAllocNode
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 1
    functionsReached:
    - InstrInitNode
    - palloc_object
    linkageType: ''
    returnType: NodeInstrumentation
    signature: 'NodeInstrumentation *

      InstrAllocNode(int instrument_options, bool async_mode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/executor/instrument.c:125,1
    - Dst: InstrInitOptions
      Src: /src/postgres/src/backend/executor/instrument.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - instr
    - instrument_options
    - async_mode
    argTypes:
    - NodeInstrumentation*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: InstrInitNode
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached:
    - InstrInitOptions
    - memset
    linkageType: ''
    returnType: void
    signature: void InstrInitNode(NodeInstrumentation *instr, int instrument_options,
      bool async_mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InstrStart
      Src: /src/postgres/src/backend/executor/instrument.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - instr
    argTypes:
    - NodeInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: InstrStartNode
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 8
    functionsReached:
    - InstrStart
    linkageType: ''
    returnType: void
    signature: void InstrStartNode(NodeInstrumentation *instr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: InstrStopCommon
      Src: /src/postgres/src/backend/executor/instrument.c:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - instr
    - nTuples
    argTypes:
    - NodeInstrumentation*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 170
    functionName: InstrStopNode
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 8
    functionsReached:
    - InstrStopCommon
    linkageType: ''
    returnType: void
    signature: void InstrStopNode(NodeInstrumentation *instr, double nTuples)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/instrument.c:185,1
    - Dst: PlanState*::ExecProcNodeReal
      Src: /src/postgres/src/backend/executor/instrument.c:187,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/instrument.c:189,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/instrument.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 192
    functionName: ExecProcNodeInstr
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 0
    functionsReached:
    - InstrStopNode
    - TupIsNull
    - InstrStartNode
    - PlanState*::ExecProcNodeReal
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecProcNodeInstr(PlanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - instr
    - nTuples
    argTypes:
    - NodeInstrumentation*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 200
    functionName: InstrUpdateTupleCount
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InstrUpdateTupleCount(NodeInstrumentation *instr, double nTuples)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_IS_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:210,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/instrument.c:211,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:214,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:215,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:221,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:222,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - instr
    argTypes:
    - NodeInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 225
    functionName: InstrEndLoop
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached:
    - elog
    - INSTR_TIME_SET_ZERO
    - INSTR_TIME_ADD
    - INSTR_TIME_IS_ZERO
    linkageType: ''
    returnType: void
    signature: void InstrEndLoop(NodeInstrumentation *instr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/instrument.c:234,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:236,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:237,1
    - Dst: BufferUsageAdd
      Src: /src/postgres/src/backend/executor/instrument.c:245,1
    - Dst: WalUsageAdd
      Src: /src/postgres/src/backend/executor/instrument.c:248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - dst
    - add
    argTypes:
    - NodeInstrumentation*
    - NodeInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 249
    functionName: InstrAggNode
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached:
    - Assert
    - INSTR_TIME_ADD
    - BufferUsageAdd
    - WalUsageAdd
    linkageType: ''
    returnType: void
    signature: void InstrAggNode(NodeInstrumentation *dst, NodeInstrumentation *add)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/instrument.c:255,1
    - Dst: InstrInitOptions
      Src: /src/postgres/src/backend/executor/instrument.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - n
    - instrument_options
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 262
    functionName: InstrAllocTrigger
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 1
    functionsReached:
    - InstrInitOptions
    - palloc0_array
    linkageType: ''
    returnType: TriggerInstrumentation
    signature: 'TriggerInstrumentation *

      InstrAllocTrigger(int n, int instrument_options)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InstrStart
      Src: /src/postgres/src/backend/executor/instrument.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tginstr
    argTypes:
    - TriggerInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 268
    functionName: InstrStartTrigger
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 0
    functionsReached:
    - InstrStart
    linkageType: ''
    returnType: void
    signature: void InstrStartTrigger(TriggerInstrumentation *tginstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InstrStop
      Src: /src/postgres/src/backend/executor/instrument.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tginstr
    - firings
    argTypes:
    - TriggerInstrumentation*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 275
    functionName: InstrStopTrigger
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 0
    functionsReached:
    - InstrStop
    linkageType: ''
    returnType: void
    signature: void InstrStopTrigger(TriggerInstrumentation *tginstr, int64 firings)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 283
    functionName: InstrStartParallelQuery
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InstrStartParallelQuery(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/executor/instrument.c:289,1
    - Dst: BufferUsageAccumDiff
      Src: /src/postgres/src/backend/executor/instrument.c:290,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/instrument.c:291,1
    - Dst: WalUsageAccumDiff
      Src: /src/postgres/src/backend/executor/instrument.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bufusage
    - walusage
    argTypes:
    - BufferUsage*
    - WalUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 293
    functionName: InstrEndParallelQuery
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 4
    functionsReached:
    - memset
    - BufferUsageAccumDiff
    - WalUsageAccumDiff
    linkageType: ''
    returnType: void
    signature: void InstrEndParallelQuery(BufferUsage *bufusage, WalUsage *walusage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufferUsageAdd
      Src: /src/postgres/src/backend/executor/instrument.c:299,1
    - Dst: WalUsageAdd
      Src: /src/postgres/src/backend/executor/instrument.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bufusage
    - walusage
    argTypes:
    - BufferUsage*
    - WalUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 301
    functionName: InstrAccumParallelQuery
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 4
    functionsReached:
    - WalUsageAdd
    - BufferUsageAdd
    linkageType: ''
    returnType: void
    signature: void InstrAccumParallelQuery(BufferUsage *bufusage, WalUsage *walusage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:317,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:318,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:319,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:320,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:321,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 2
    argNames:
    - dst
    - add
    argTypes:
    - BufferUsage*
    - BufferUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 323
    functionName: BufferUsageAdd
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached:
    - INSTR_TIME_ADD
    linkageType: ''
    returnType: void
    signature: void BufferUsageAdd(BufferUsage *dst, const BufferUsage *add)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:341,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:343,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:345,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:347,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:349,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - dst
    - add
    - sub
    argTypes:
    - BufferUsage*
    - BufferUsage*
    - BufferUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 353
    functionName: BufferUsageAccumDiff
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 3
    functionsReached:
    - INSTR_TIME_ACCUM_DIFF
    linkageType: ''
    returnType: void
    signature: "void BufferUsageAccumDiff(BufferUsage *dst,\n\t\t\t\t\t const BufferUsage
      *add,\n\t\t\t\t\t const BufferUsage *sub)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - dst
    - add
    argTypes:
    - WalUsage*
    - WalUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 364
    functionName: WalUsageAdd
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WalUsageAdd(WalUsage *dst, WalUsage *add)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - dst
    - add
    - sub
    argTypes:
    - WalUsage*
    - WalUsage*
    - WalUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 374
    functionName: WalUsageAccumDiff
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WalUsageAccumDiff(WalUsage *dst, const WalUsage *add, const WalUsage
      *sub)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/instrument.c:392,1
    - Dst: pg_initialize_timing_tsc
      Src: /src/postgres/src/backend/executor/instrument.c:396,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/executor/instrument.c:400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 406
    functionName: check_timing_clock_source
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_initialize_timing_tsc
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_timing_clock_source(int *newval, void **extra, GucSource
      source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/instrument.c:415,1
    - Dst: pg_set_timing_clock_source
      Src: /src/postgres/src/backend/executor/instrument.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 408
    functionDepth: 2
    functionLinenumber: 408
    functionLinenumberEnd: 423
    functionName: assign_timing_clock_source
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_set_timing_clock_source
    linkageType: ''
    returnType: void
    signature: void assign_timing_clock_source(int newval, void *extra)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_current_timing_clock_source
      Src: /src/postgres/src/backend/executor/instrument.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 446
    functionName: show_timing_clock_source
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 0
    functionsReached:
    - pg_current_timing_clock_source
    linkageType: ''
    returnType: char
    signature: 'char *

      show_timing_clock_source(void)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:39,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGroup.c:44,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGroup.c:67,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:69,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:69,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGroup.c:70,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeGroup.c:77,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeGroup.c:89,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeGroup.c:94,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeGroup.c:97,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:112,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:112,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGroup.c:113,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeGroup.c:126,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeGroup.c:135,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeGroup.c:142,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeGroup.c:147,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeGroup.c:150,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 36
    functionDepth: 4
    functionLinenumber: 36
    functionLinenumberEnd: 152
    functionName: ExecGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGroup.c
    functionUses: 0
    functionsReached:
    - ExecProcNode
    - castNode
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - ExecQualAndReset
    - ExecCopySlot
    - ExecQual
    - ExecProject
    - TupIsNull
    - InstrCountFiltered1
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGroup(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGroup.c:168,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:173,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeGroup.c:182,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:187,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:187,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeGroup.c:187,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeGroup.c:192,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:192,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeGroup.c:193,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeGroup.c:198,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeGroup.c:199,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeGroup.c:205,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeGroup.c:211,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeGroup.c:211,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Group*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 161
    functionDepth: 11
    functionLinenumber: 161
    functionLinenumberEnd: 219
    functionName: ExecInitGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGroup.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - ExecAssignProjectionInfo
    - ExecGetResultType
    - ExecAssignExprContext
    - Assert
    - makeNode
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - ExecCreateScanSlotFromOuterPlan
    - ExecGetResultSlotOps
    - execTuplesMatchPrepare
    - ExecInitQual
    - outerPlan
    linkageType: ''
    returnType: GroupState
    signature: 'GroupState *

      ExecInitGroup(Group *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:231,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - GroupState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 233
    functionName: ExecEndGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGroup.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndGroup(GroupState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:238,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeGroup.c:242,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeGroup.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - GroupState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 235
    functionDepth: 7
    functionLinenumber: 235
    functionLinenumberEnd: 250
    functionName: ExecReScanGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGroup.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - ExecReScan
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanGroup(GroupState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/backend/executor/spi.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: SPI_connect
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 9
    functionsReached:
    - SPI_connect_ext
    linkageType: ''
    returnType: int
    signature: int SPI_connect(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:109,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/spi.c:112,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:119,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/spi.c:124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:132,1
    - Dst: slist_init
      Src: /src/postgres/src/backend/executor/spi.c:138,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/backend/executor/spi.c:141,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/spi.c:162,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/spi.c:165,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:169,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 1
    argNames:
    - options
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 180
    functionName: SPI_connect_ext
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 8
    functionsReached:
    - elog
    - slist_init
    - MemoryContextAlloc
    - Assert
    - repalloc
    - MemoryContextSwitchTo
    - AllocSetContextCreate
    - GetCurrentSubTransactionId
    linkageType: ''
    returnType: int
    signature: int SPI_connect_ext(int options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:187,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:192,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:195,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 216
    functionName: SPI_finish
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 17
    functionsReached:
    - MemoryContextDelete
    - MemoryContextSwitchTo
    - _SPI_begin_call
    linkageType: ''
    returnType: int
    signature: int SPI_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 225
    functionName: SPI_start_transaction
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SPI_start_transaction(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:242,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/executor/spi.c:254,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:257,1
    - Dst: SaveTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:260,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/executor/spi.c:263,1
    - Dst: HoldPinnedPortals
      Src: /src/postgres/src/backend/executor/spi.c:273,1
    - Dst: ForgetPortalSnapshots
      Src: /src/postgres/src/backend/executor/spi.c:276,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:279,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:282,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:284,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:286,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/executor/spi.c:290,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:295,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/backend/executor/spi.c:296,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/executor/spi.c:297,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/executor/spi.c:303,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:306,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:308,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:310,1
    - Dst: ReThrowError
      Src: /src/postgres/src/backend/executor/spi.c:315,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/executor/spi.c:317,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - chain
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 318
    functionName: _SPI_commit
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - HoldPinnedPortals
    - RestoreTransactionCharacteristics
    - PG_TRY
    - PG_CATCH
    - errcode
    - ForgetPortalSnapshots
    - CopyErrorData
    - ereport
    - CommitTransactionCommand
    - MemoryContextSwitchTo
    - SaveTransactionCharacteristics
    - StartTransactionCommand
    - IsSubTransaction
    - errmsg
    - FlushErrorState
    - PG_END_TRY
    - AbortCurrentTransaction
    - ReThrowError
    linkageType: ''
    returnType: void
    signature: void _SPI_commit(bool chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_commit
      Src: /src/postgres/src/backend/executor/spi.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 320
    functionDepth: 3
    functionLinenumber: 320
    functionLinenumberEnd: 324
    functionName: SPI_commit
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 5
    functionsReached:
    - _SPI_commit
    linkageType: ''
    returnType: void
    signature: void SPI_commit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_commit
      Src: /src/postgres/src/backend/executor/spi.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 3
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: SPI_commit_and_chain
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - _SPI_commit
    linkageType: ''
    returnType: void
    signature: void SPI_commit_and_chain(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:340,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:341,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:342,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/executor/spi.c:345,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:346,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:347,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:348,1
    - Dst: SaveTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:351,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/executor/spi.c:354,1
    - Dst: HoldPinnedPortals
      Src: /src/postgres/src/backend/executor/spi.c:365,1
    - Dst: ForgetPortalSnapshots
      Src: /src/postgres/src/backend/executor/spi.c:368,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/executor/spi.c:371,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:374,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:376,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:378,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/executor/spi.c:382,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:387,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/backend/executor/spi.c:388,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/executor/spi.c:389,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/executor/spi.c:396,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:399,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:401,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:403,1
    - Dst: ReThrowError
      Src: /src/postgres/src/backend/executor/spi.c:408,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/executor/spi.c:410,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - chain
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 411
    functionName: _SPI_rollback
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - HoldPinnedPortals
    - RestoreTransactionCharacteristics
    - PG_TRY
    - PG_CATCH
    - errcode
    - ForgetPortalSnapshots
    - CopyErrorData
    - ereport
    - MemoryContextSwitchTo
    - SaveTransactionCharacteristics
    - StartTransactionCommand
    - IsSubTransaction
    - errmsg
    - FlushErrorState
    - PG_END_TRY
    - AbortCurrentTransaction
    - ReThrowError
    linkageType: ''
    returnType: void
    signature: void _SPI_rollback(bool chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_rollback
      Src: /src/postgres/src/backend/executor/spi.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 413
    functionDepth: 3
    functionLinenumber: 413
    functionLinenumberEnd: 417
    functionName: SPI_rollback
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 5
    functionsReached:
    - _SPI_rollback
    linkageType: ''
    returnType: void
    signature: void SPI_rollback(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_rollback
      Src: /src/postgres/src/backend/executor/spi.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 419
    functionDepth: 3
    functionLinenumber: 419
    functionLinenumberEnd: 423
    functionName: SPI_rollback_and_chain
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - _SPI_rollback
    linkageType: ''
    returnType: void
    signature: void SPI_rollback_and_chain(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:470,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:471,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:472,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/spi.c:473,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 474
    functionName: AtEOXact_SPI
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 3
    functionsReached:
    - errhint
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void AtEOXact_SPI(bool isCommit)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:504,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:530,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:532,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/spi.c:533,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/spi.c:550,1
    - Dst: slist_foreach_modify
      Src: /src/postgres/src/backend/executor/spi.c:554,1
    - Dst: slist_container
      Src: /src/postgres/src/backend/executor/spi.c:558,1
    - Dst: slist_delete_current
      Src: /src/postgres/src/backend/executor/spi.c:567,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:572,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 2
    argNames:
    - isCommit
    - mySubid
    argTypes:
    - bool
    - SubTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 576
    functionName: AtEOSubXact_SPI
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - MemoryContextReset
    - slist_container
    - errcode
    - ereport
    - MemoryContextDelete
    - errhint
    - errmsg
    - slist_foreach_modify
    - slist_delete_current
    linkageType: ''
    returnType: void
    signature: void AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/executor/spi.c:589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 592
    functionName: SPI_inside_nonatomic_context
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - IsSubTransaction
    linkageType: ''
    returnType: bool
    signature: bool SPI_inside_nonatomic_context(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:606,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:610,1
    - Dst: _SPI_prepare_oneshot_plan
      Src: /src/postgres/src/backend/executor/spi.c:615,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:617,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:621,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:625,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - src
    - read_only
    - tcount
    argTypes:
    - char*
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 627
    functionName: SPI_execute
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 5
    functionsReached:
    - _SPI_end_call
    - _SPI_execute_plan
    - _SPI_begin_call
    - memset
    - _SPI_prepare_oneshot_plan
    linkageType: ''
    returnType: int
    signature: int SPI_execute(const char *src, bool read_only, long tcount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPI_execute
      Src: /src/postgres/src/backend/executor/spi.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - tcount
    argTypes:
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 634
    functionName: SPI_exec
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - SPI_execute
    linkageType: ''
    returnType: int
    signature: int SPI_exec(const char *src, long tcount)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:647,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:651,1
    - Dst: _SPI_prepare_oneshot_plan
      Src: /src/postgres/src/backend/executor/spi.c:661,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:663,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:667,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - src
    - options
    argTypes:
    - char*
    - SPIExecuteOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 637
    functionDepth: 1
    functionLinenumber: 637
    functionLinenumberEnd: 669
    functionName: SPI_execute_extended
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - _SPI_end_call
    - _SPI_execute_plan
    - _SPI_begin_call
    - memset
    - _SPI_prepare_oneshot_plan
    linkageType: ''
    returnType: int
    signature: "int SPI_execute_extended(const char *src,\n\t\t\t\t\t const SPIExecuteOptions
      *options)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:685,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:689,1
    - Dst: _SPI_convert_params
      Src: /src/postgres/src/backend/executor/spi.c:690,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:695,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:699,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 5
    argNames:
    - plan
    - Values
    - Nulls
    - read_only
    - tcount
    argTypes:
    - SPIPlanPtr
    - Datum*
    - char*
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 672
    functionDepth: 1
    functionLinenumber: 672
    functionLinenumberEnd: 701
    functionName: SPI_execute_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 7
    functionsReached:
    - _SPI_end_call
    - _SPI_execute_plan
    - _SPI_convert_params
    - _SPI_begin_call
    - memset
    linkageType: ''
    returnType: int
    signature: "int SPI_execute_plan(SPIPlanPtr plan, const Datum *Values, const char
      *Nulls,\n\t\t\t\t bool read_only, long tcount)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:707,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - plan
    - Values
    - Nulls
    - tcount
    argTypes:
    - SPIPlanPtr
    - Datum*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 704
    functionDepth: 2
    functionLinenumber: 704
    functionLinenumberEnd: 708
    functionName: SPI_execp
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - SPI_execute_plan
    linkageType: ''
    returnType: int
    signature: int SPI_execp(SPIPlanPtr plan, const Datum *Values, const char *Nulls,
      long tcount)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:720,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:724,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:728,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - plan
    - options
    argTypes:
    - SPIPlanPtr
    - SPIExecuteOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 730
    functionName: SPI_execute_plan_extended
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - _SPI_execute_plan
    - _SPI_end_call
    - _SPI_begin_call
    linkageType: ''
    returnType: int
    signature: "int SPI_execute_plan_extended(SPIPlanPtr plan,\n\t\t\t\t\t\t  const
      SPIExecuteOptions *options)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:743,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:747,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:752,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:756,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - plan
    - params
    - read_only
    - tcount
    argTypes:
    - SPIPlanPtr
    - ParamListInfo
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 758
    functionName: SPI_execute_plan_with_paramlist
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - _SPI_execute_plan
    - memset
    - _SPI_end_call
    - _SPI_begin_call
    linkageType: ''
    returnType: int
    signature: "int SPI_execute_plan_with_paramlist(SPIPlanPtr plan, ParamListInfo
      params,\n\t\t\t\t\t\t\t\tbool read_only, long tcount)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:788,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:792,1
    - Dst: _SPI_convert_params
      Src: /src/postgres/src/backend/executor/spi.c:793,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:798,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:802,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 8
    argNames:
    - plan
    - Values
    - Nulls
    - snapshot
    - crosscheck_snapshot
    - read_only
    - fire_triggers
    - tcount
    argTypes:
    - SPIPlanPtr
    - Datum*
    - char*
    - Snapshot
    - Snapshot
    - bool
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 804
    functionName: SPI_execute_snapshot
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_end_call
    - _SPI_execute_plan
    - _SPI_convert_params
    - _SPI_begin_call
    - memset
    linkageType: ''
    returnType: int
    signature: "int SPI_execute_snapshot(SPIPlanPtr plan,\n\t\t\t\t\t const Datum
      *Values, const char *Nulls,\n\t\t\t\t\t Snapshot snapshot, Snapshot crosscheck_snapshot,\n\t\t\t\t\t
      bool read_only, bool fire_triggers, long tcount)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:829,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:833,1
    - Dst: _SPI_convert_params
      Src: /src/postgres/src/backend/executor/spi.c:842,1
    - Dst: _SPI_prepare_oneshot_plan
      Src: /src/postgres/src/backend/executor/spi.c:845,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:847,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:852,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:856,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 7
    argNames:
    - src
    - nargs
    - argtypes
    - Values
    - Nulls
    - read_only
    - tcount
    argTypes:
    - char*
    - int
    - Oid*
    - Datum*
    - char*
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 812
    functionDepth: 1
    functionLinenumber: 812
    functionLinenumberEnd: 858
    functionName: SPI_execute_with_args
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_end_call
    - _SPI_execute_plan
    - _SPI_convert_params
    - _SPI_begin_call
    - memset
    - _SPI_prepare_oneshot_plan
    linkageType: ''
    returnType: int
    signature: "int SPI_execute_with_args(const char *src,\n\t\t\t\t\t  int nargs,
      const Oid *argtypes,\n\t\t\t\t\t  const Datum *Values, const char *Nulls,\n\t\t\t\t\t
      \ bool read_only, long tcount)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPI_prepare_cursor
      Src: /src/postgres/src/backend/executor/spi.c:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - src
    - nargs
    - argtypes
    argTypes:
    - char*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 864
    functionName: SPI_prepare
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 6
    functionsReached:
    - SPI_prepare_cursor
    linkageType: ''
    returnType: SPIPlanPtr
    signature: SPIPlanPtr SPI_prepare(const char *src, int nargs, const Oid *argtypes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:879,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:883,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:892,1
    - Dst: _SPI_make_plan_non_temp
      Src: /src/postgres/src/backend/executor/spi.c:895,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:897,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - src
    - nargs
    - argtypes
    - cursorOptions
    argTypes:
    - char*
    - int
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 900
    functionName: SPI_prepare_cursor
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - _SPI_end_call
    - _SPI_begin_call
    - memset
    - _SPI_make_plan_non_temp
    - _SPI_prepare_plan
    linkageType: ''
    returnType: SPIPlanPtr
    signature: "SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, const Oid
      *argtypes,\n\t\t\t\t   int cursorOptions)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:915,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:919,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:928,1
    - Dst: _SPI_make_plan_non_temp
      Src: /src/postgres/src/backend/executor/spi.c:931,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:933,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - src
    - options
    argTypes:
    - char*
    - SPIPrepareOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 902
    functionDepth: 1
    functionLinenumber: 902
    functionLinenumberEnd: 936
    functionName: SPI_prepare_extended
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - _SPI_end_call
    - _SPI_begin_call
    - memset
    - _SPI_make_plan_non_temp
    - _SPI_prepare_plan
    linkageType: ''
    returnType: SPIPlanPtr
    signature: "SPIPlanPtr SPI_prepare_extended(const char *src,\n\t\t\t\t\t const
      SPIPrepareOptions *options)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:953,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:957,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:966,1
    - Dst: _SPI_make_plan_non_temp
      Src: /src/postgres/src/backend/executor/spi.c:969,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:971,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - src
    - parserSetup
    - parserSetupArg
    - cursorOptions
    argTypes:
    - char*
    - ParserSetupHook
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 974
    functionName: SPI_prepare_params
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_end_call
    - _SPI_begin_call
    - memset
    - _SPI_make_plan_non_temp
    - _SPI_prepare_plan
    linkageType: ''
    returnType: SPIPlanPtr
    signature: "SPIPlanPtr SPI_prepare_params(const char *src,\n\t\t\t\t   ParserSetupHook
      parserSetup,\n\t\t\t\t   void *parserSetupArg,\n\t\t\t\t   int cursorOptions)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/executor/spi.c:991,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:993,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:995,1
    - Dst: SaveCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:997,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 1001
    functionName: SPI_keepplan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - MemoryContextSetParent
    - SaveCachedPlan
    - lfirst
    - foreach
    linkageType: ''
    returnType: int
    signature: int SPI_keepplan(SPIPlanPtr plan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:1014,1
    - Dst: _SPI_save_plan
      Src: /src/postgres/src/backend/executor/spi.c:1018,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:1020,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1003
    functionDepth: 1
    functionLinenumber: 1003
    functionLinenumberEnd: 1023
    functionName: SPI_saveplan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_end_call
    - _SPI_save_plan
    - _SPI_begin_call
    linkageType: ''
    returnType: SPIPlanPtr
    signature: SPIPlanPtr SPI_saveplan(SPIPlanPtr plan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:1034,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:1036,1
    - Dst: DropCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:1038,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:1042,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1025
    functionDepth: 1
    functionLinenumber: 1025
    functionLinenumberEnd: 1045
    functionName: SPI_freeplan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 6
    functionsReached:
    - MemoryContextDelete
    - lfirst
    - DropCachedPlan
    - foreach
    linkageType: ''
    returnType: int
    signature: int SPI_freeplan(SPIPlanPtr plan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1065,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/executor/spi.c:1067,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1069,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1047
    functionDepth: 2
    functionLinenumber: 1047
    functionLinenumberEnd: 1072
    functionName: SPI_copytuple
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - heap_copytuple
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple SPI_copytuple(HeapTuple tuple)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assign_record_type_typmod
      Src: /src/postgres/src/backend/executor/spi.c:1095,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1097,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/spi.c:1099,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/backend/executor/spi.c:1099,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - tuple
    - tupdesc
    argTypes:
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1074
    functionDepth: 5
    functionLinenumber: 1074
    functionLinenumberEnd: 1104
    functionName: SPI_returntuple
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - assign_record_type_typmod
    - heap_copy_tuple_as_datum
    - DatumGetHeapTupleHeader
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: HeapTupleHeader
    signature: HeapTupleHeader SPI_returntuple(HeapTuple tuple, TupleDesc tupdesc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1129,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/spi.c:1134,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/spi.c:1135,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/spi.c:1138,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/spi.c:1151,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/spi.c:1167,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/spi.c:1168,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1170,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 6
    argNames:
    - rel
    - tuple
    - natts
    - attnum
    - Values
    - Nulls
    argTypes:
    - Relation
    - HeapTuple
    - int
    - int*
    - Datum*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1106
    functionDepth: 6
    functionLinenumber: 1106
    functionLinenumberEnd: 1173
    functionName: SPI_modifytuple
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - pfree
    - heap_form_tuple
    - palloc_array
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple SPI_modifytuple(Relation rel, HeapTuple tuple, int natts,
      const int *attnum,\n\t\t\t\tconst Datum *Values, const char *Nulls)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/spi.c:1183,1
    - Dst: namestrcmp
      Src: /src/postgres/src/backend/executor/spi.c:1185,1
    - Dst: SystemAttributeByName
      Src: /src/postgres/src/backend/executor/spi.c:1190,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - tupdesc
    - fname
    argTypes:
    - TupleDesc
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1175
    functionDepth: 2
    functionLinenumber: 1175
    functionLinenumberEnd: 1196
    functionName: SPI_fnumber
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - TupleDescAttr
    - SystemAttributeByName
    - namestrcmp
    linkageType: ''
    returnType: int
    signature: int SPI_fnumber(TupleDesc tupdesc, const char *fname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/spi.c:1213,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/executor/spi.c:1215,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/executor/spi.c:1217,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/spi.c:1217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - tupdesc
    - fnumber
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1198
    functionDepth: 2
    functionLinenumber: 1198
    functionLinenumberEnd: 1218
    functionName: SPI_fname
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - SystemAttributeDefinition
    - TupleDescAttr
    - pstrdup
    - NameStr
    linkageType: ''
    returnType: char
    signature: 'char *

      SPI_fname(TupleDesc tupdesc, int fnumber)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/spi.c:1238,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/spi.c:1243,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/executor/spi.c:1245,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/executor/spi.c:1247,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/executor/spi.c:1249,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - tuple
    - tupdesc
    - fnumber
    argTypes:
    - HeapTuple
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1220
    functionDepth: 4
    functionLinenumber: 1220
    functionLinenumberEnd: 1250
    functionName: SPI_getvalue
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - heap_getattr
    - OidOutputFunctionCall
    - SystemAttributeDefinition
    - TupleDescAttr
    - getTypeOutputInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/spi.c:1265,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - tuple
    - tupdesc
    - fnumber
    - isnull
    argTypes:
    - HeapTuple
    - TupleDesc
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1252
    functionDepth: 4
    functionLinenumber: 1252
    functionLinenumberEnd: 1266
    functionName: SPI_getbinval
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - heap_getattr
    linkageType: ''
    returnType: Datum
    signature: Datum SPI_getbinval(HeapTuple tuple, TupleDesc tupdesc, int fnumber,
      bool *isnull)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/spi.c:1285,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/executor/spi.c:1287,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/spi.c:1289,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/spi.c:1289,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/spi.c:1291,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/executor/spi.c:1297,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/spi.c:1297,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/spi.c:1297,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/spi.c:1298,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - tupdesc
    - fnumber
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1268
    functionDepth: 2
    functionLinenumber: 1268
    functionLinenumberEnd: 1300
    functionName: SPI_gettype
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - HeapTupleIsValid
    - pstrdup
    - ObjectIdGetDatum
    - ReleaseSysCache
    - NameStr
    - GETSTRUCT
    - SystemAttributeDefinition
    - TupleDescAttr
    linkageType: ''
    returnType: char
    signature: 'char *

      SPI_gettype(TupleDesc tupdesc, int fnumber)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/spi.c:1321,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/executor/spi.c:1323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - tupdesc
    - fnumber
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1308
    functionDepth: 2
    functionLinenumber: 1308
    functionLinenumberEnd: 1324
    functionName: SPI_gettypeid
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - SystemAttributeDefinition
    - TupleDescAttr
    linkageType: ''
    returnType: Oid
    signature: Oid SPI_gettypeid(TupleDesc tupdesc, int fnumber)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/executor/spi.c:1329,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/spi.c:1329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1330
      start: 1326
    functionDepth: 1
    functionLinenumber: 1326
    functionLinenumberEnd: 1330
    functionName: SPI_getrelname
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - pstrdup
    - RelationGetRelationName
    linkageType: ''
    returnType: char
    signature: 'char *

      SPI_getrelname(Relation rel)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/executor/spi.c:1335,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/executor/spi.c:1335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1332
    functionDepth: 1
    functionLinenumber: 1332
    functionLinenumberEnd: 1336
    functionName: SPI_getnspname
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - get_namespace_name
    - RelationGetNamespace
    linkageType: ''
    returnType: char
    signature: 'char *

      SPI_getnspname(Relation rel)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1342,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/spi.c:1344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1338
    functionDepth: 1
    functionLinenumber: 1338
    functionLinenumberEnd: 1345
    functionName: SPI_palloc
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - elog
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: 'void *

      SPI_palloc(Size size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/spi.c:1351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pointer
    - size
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1347
    functionDepth: 0
    functionLinenumber: 1347
    functionLinenumberEnd: 1352
    functionName: SPI_repalloc
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - repalloc
    linkageType: ''
    returnType: void
    signature: 'void *

      SPI_repalloc(void *pointer, Size size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/spi.c:1358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1354
    functionDepth: 0
    functionLinenumber: 1354
    functionLinenumberEnd: 1359
    functionName: SPI_pfree
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void SPI_pfree(void *pointer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1368,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1370,1
    - Dst: datumTransfer
      Src: /src/postgres/src/backend/executor/spi.c:1372,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - value
    - typByVal
    - typLen
    argTypes:
    - Datum
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1361
    functionDepth: 1
    functionLinenumber: 1361
    functionLinenumberEnd: 1377
    functionName: SPI_datumTransfer
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - elog
    - datumTransfer
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: Datum
    signature: Datum SPI_datumTransfer(Datum value, bool typByVal, int typLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/spi.c:1383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1379
    functionDepth: 1
    functionLinenumber: 1379
    functionLinenumberEnd: 1384
    functionName: SPI_freetuple
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - heap_freetuple
    linkageType: ''
    returnType: void
    signature: void SPI_freetuple(HeapTuple tuple)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: slist_foreach_modify
      Src: /src/postgres/src/backend/executor/spi.c:1403,1
    - Dst: slist_container
      Src: /src/postgres/src/backend/executor/spi.c:1407,1
    - Dst: slist_delete_current
      Src: /src/postgres/src/backend/executor/spi.c:1410,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1425,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:1436,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - tuptable
    argTypes:
    - SPITupleTable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1386
    functionDepth: 1
    functionLinenumber: 1386
    functionLinenumberEnd: 1437
    functionName: SPI_freetuptable
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 12
    functionsReached:
    - elog
    - slist_container
    - MemoryContextDelete
    - slist_foreach_modify
    - slist_delete_current
    linkageType: ''
    returnType: void
    signature: void SPI_freetuptable(SPITupleTable *tuptable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_convert_params
      Src: /src/postgres/src/backend/executor/spi.c:1454,1
    - Dst: SPI_cursor_open_internal
      Src: /src/postgres/src/backend/executor/spi.c:1457,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/spi.c:1461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - name
    - plan
    - Values
    - Nulls
    - read_only
    argTypes:
    - char*
    - SPIPlanPtr
    - Datum*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1445
    functionDepth: 1
    functionLinenumber: 1445
    functionLinenumberEnd: 1464
    functionName: SPI_cursor_open
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - pfree
    - SPI_cursor_open_internal
    - _SPI_convert_params
    linkageType: ''
    returnType: Portal
    signature: "Portal SPI_cursor_open(const char *name, SPIPlanPtr plan,\n\t\t\t\tconst
      Datum *Values, const char *Nulls,\n\t\t\t\tbool read_only)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1484,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1487,1
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:1489,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1491,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:1493,1
    - Dst: _SPI_convert_params
      Src: /src/postgres/src/backend/executor/spi.c:1503,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:1506,1
    - Dst: SPI_cursor_open_internal
      Src: /src/postgres/src/backend/executor/spi.c:1510,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:1513,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 8
    argNames:
    - name
    - src
    - nargs
    - argtypes
    - Values
    - Nulls
    - read_only
    - cursorOptions
    argTypes:
    - char*
    - char*
    - int
    - Oid*
    - Datum*
    - char*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1516
      start: 1472
    functionDepth: 1
    functionLinenumber: 1472
    functionLinenumberEnd: 1516
    functionName: SPI_cursor_open_with_args
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - elog
    - _SPI_end_call
    - _SPI_convert_params
    - _SPI_begin_call
    - memset
    - SPI_cursor_open_internal
    - _SPI_prepare_plan
    linkageType: ''
    returnType: Portal
    signature: "Portal SPI_cursor_open_with_args(const char *name,\n\t\t\t\t\t\t  const
      char *src,\n\t\t\t\t\t\t  int nargs, const Oid *argtypes,\n\t\t\t\t\t\t  const
      Datum *Values, const char *Nulls,\n\t\t\t\t\t\t  bool read_only, int cursorOptions)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPI_cursor_open_internal
      Src: /src/postgres/src/backend/executor/spi.c:1529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - name
    - plan
    - params
    - read_only
    argTypes:
    - char*
    - SPIPlanPtr
    - ParamListInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1525
    functionDepth: 1
    functionLinenumber: 1525
    functionLinenumberEnd: 1530
    functionName: SPI_cursor_open_with_paramlist
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 3
    functionsReached:
    - SPI_cursor_open_internal
    linkageType: ''
    returnType: Portal
    signature: "Portal SPI_cursor_open_with_paramlist(const char *name, SPIPlanPtr
      plan,\n\t\t\t\t\t\t\t   ParamListInfo params, bool read_only)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1542,1
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:1544,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1546,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:1548,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:1558,1
    - Dst: SPI_cursor_open_internal
      Src: /src/postgres/src/backend/executor/spi.c:1562,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:1566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - name
    - src
    - options
    argTypes:
    - char*
    - char*
    - SPIParseOpenOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1533
    functionDepth: 1
    functionLinenumber: 1533
    functionLinenumberEnd: 1569
    functionName: SPI_cursor_parse_open
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - elog
    - _SPI_end_call
    - _SPI_begin_call
    - memset
    - SPI_cursor_open_internal
    - _SPI_prepare_plan
    linkageType: ''
    returnType: Portal
    signature: "Portal SPI_cursor_parse_open(const char *name,\n\t\t\t\t\t  const
      char *src,\n\t\t\t\t\t  const SPIParseOpenOptions *options)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: SPI_is_cursor_plan
      Src: /src/postgres/src/backend/executor/spi.c:1595,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:1600,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1601,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1602,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1603,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/spi.c:1604,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/backend/executor/spi.c:1609,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1610,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1611,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1613,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:1616,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:1616,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/spi.c:1617,1
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:1620,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1621,1
    - Dst: CreateNewPortal
      Src: /src/postgres/src/backend/executor/spi.c:1633,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/executor/spi.c:1638,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/executor/spi.c:1642,1
    - Dst: GetCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:1663,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1674,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/spi.c:1675,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1676,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:1677,1
    - Dst: PortalDefineQuery
      Src: /src/postgres/src/backend/executor/spi.c:1684,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:1698,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1699,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1700,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/spi.c:1701,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1701,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:1714,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1715,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1716,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1717,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1719,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/spi.c:1720,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/spi.c:1739,1
    - Dst: CommandIsReadOnly
      Src: /src/postgres/src/backend/executor/spi.c:1741,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1742,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1743,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1745,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/spi.c:1746,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:1752,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/executor/spi.c:1755,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:1756,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1766,1
    - Dst: copyParamList
      Src: /src/postgres/src/backend/executor/spi.c:1767,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1768,1
    - Dst: PortalStart
      Src: /src/postgres/src/backend/executor/spi.c:1774,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:1776,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:1782,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 71
    argCount: 4
    argNames:
    - name
    - plan
    - paramLI
    - read_only
    argTypes:
    - char*
    - SPIPlanPtr
    - ParamListInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1786
      start: 1577
    functionDepth: 7
    functionLinenumber: 1577
    functionLinenumberEnd: 1786
    functionName: SPI_cursor_open_internal
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - copyObject
    - _SPI_end_call
    - CreateNewPortal
    - errcode
    - CreatePortal
    - GetCommandTagName
    - elog
    - CommandIsReadOnly
    - linitial_node
    - Assert
    - linitial
    - CommandCounterIncrement
    - ExecSupportsBackwardScan
    - SPI_is_cursor_plan
    - errmsg
    - list_length
    - GetCachedPlan
    - copyParamList
    - ereport
    - GetTransactionSnapshot
    - ReleaseCachedPlan
    - lfirst_node
    - PortalDefineQuery
    - MemoryContextStrdup
    - _SPI_begin_call
    - MemoryContextSwitchTo
    - PortalStart
    - GetActiveSnapshot
    - errdetail
    - CreateCommandName
    linkageType: ''
    returnType: Portal
    signature: "Portal SPI_cursor_open_internal(const char *name, SPIPlanPtr plan,\n\t\t\t\t\t\t
      ParamListInfo paramLI, bool read_only)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/spi.c:1739,1
    - Dst: CommandIsReadOnly
      Src: /src/postgres/src/backend/executor/spi.c:1741,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1742,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1743,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1745,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/spi.c:1746,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1737
    functionDepth: 2
    functionLinenumber: 1737
    functionLinenumberEnd: 1747
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 436
    functionsReached:
    - CommandIsReadOnly
    - errcode
    - ereport
    - errmsg
    - CreateCommandName
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, stmt_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/executor/spi.c:1797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1794
    functionDepth: 1
    functionLinenumber: 1794
    functionLinenumberEnd: 1798
    functionName: SPI_cursor_find
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 6
    functionsReached:
    - GetPortalByName
    linkageType: ''
    returnType: Portal
    signature: Portal SPI_cursor_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_cursor_operation
      Src: /src/postgres/src/backend/executor/spi.c:1809,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/spi.c:1811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - portal
    - forward
    - count
    argTypes:
    - Portal
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1806
    functionDepth: 2
    functionLinenumber: 1806
    functionLinenumberEnd: 1813
    functionName: SPI_cursor_fetch
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - _SPI_cursor_operation
    - CreateDestReceiver
    linkageType: ''
    returnType: void
    signature: void SPI_cursor_fetch(Portal portal, bool forward, long count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_cursor_operation
      Src: /src/postgres/src/backend/executor/spi.c:1824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - portal
    - forward
    - count
    argTypes:
    - Portal
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1821
    functionDepth: 1
    functionLinenumber: 1821
    functionLinenumberEnd: 1827
    functionName: SPI_cursor_move
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_cursor_operation
    linkageType: ''
    returnType: void
    signature: void SPI_cursor_move(Portal portal, bool forward, long count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_cursor_operation
      Src: /src/postgres/src/backend/executor/spi.c:1838,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/spi.c:1840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - portal
    - direction
    - count
    argTypes:
    - Portal
    - FetchDirection
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1842
      start: 1835
    functionDepth: 2
    functionLinenumber: 1835
    functionLinenumberEnd: 1842
    functionName: SPI_scroll_cursor_fetch
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - _SPI_cursor_operation
    - CreateDestReceiver
    linkageType: ''
    returnType: void
    signature: void SPI_scroll_cursor_fetch(Portal portal, FetchDirection direction,
      long count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_cursor_operation
      Src: /src/postgres/src/backend/executor/spi.c:1853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - portal
    - direction
    - count
    argTypes:
    - Portal
    - FetchDirection
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1850
    functionDepth: 1
    functionLinenumber: 1850
    functionLinenumberEnd: 1854
    functionName: SPI_scroll_cursor_move
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - _SPI_cursor_operation
    linkageType: ''
    returnType: void
    signature: void SPI_scroll_cursor_move(Portal portal, FetchDirection direction,
      long count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/executor/spi.c:1865,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1866,1
    - Dst: PortalDrop
      Src: /src/postgres/src/backend/executor/spi.c:1868,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - portal
    argTypes:
    - Portal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1862
    functionDepth: 1
    functionLinenumber: 1862
    functionLinenumberEnd: 1869
    functionName: SPI_cursor_close
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 8
    functionsReached:
    - elog
    - PortalDrop
    - PortalIsValid
    linkageType: ''
    returnType: void
    signature: void SPI_cursor_close(Portal portal)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - plan
    - argIndex
    argTypes:
    - SPIPlanPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1885
      start: 1875
    functionDepth: 0
    functionLinenumber: 1875
    functionLinenumberEnd: 1885
    functionName: SPI_getargtypeid
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Oid
    signature: Oid SPI_getargtypeid(SPIPlanPtr plan, int argIndex)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1899
      start: 1890
    functionDepth: 0
    functionLinenumber: 1890
    functionLinenumberEnd: 1899
    functionName: SPI_getargcount
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int SPI_getargcount(SPIPlanPtr plan)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:1921,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/spi.c:1926,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1940
      start: 1910
    functionDepth: 1
    functionLinenumber: 1910
    functionLinenumberEnd: 1940
    functionName: SPI_is_cursor_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - list_length
    - linitial
    linkageType: ''
    returnType: bool
    signature: bool SPI_is_cursor_plan(SPIPlanPtr plan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:1953,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:1955,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:1957,1
    - Dst: CachedPlanIsValid
      Src: /src/postgres/src/backend/executor/spi.c:1959,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1948
    functionDepth: 1
    functionLinenumber: 1948
    functionLinenumberEnd: 1963
    functionName: SPI_plan_is_valid
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - Assert
    - lfirst
    - CachedPlanIsValid
    - foreach
    linkageType: ''
    returnType: bool
    signature: bool SPI_plan_is_valid(SPIPlanPtr plan)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/executor/spi.c:2043,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 67
    argCount: 1
    argNames:
    - code
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2045
      start: 1972
    functionDepth: 0
    functionLinenumber: 1972
    functionLinenumberEnd: 2045
    functionName: SPI_result_code_string
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 22
    functionsReached:
    - sprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      SPI_result_code_string(int code)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2062
      start: 2057
    functionDepth: 1
    functionLinenumber: 2057
    functionLinenumberEnd: 2062
    functionName: SPI_plan_get_plan_sources
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 3
    functionsReached:
    - Assert
    linkageType: ''
    returnType: List
    signature: 'List *

      SPI_plan_get_plan_sources(SPIPlanPtr plan)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2084,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:2091,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/spi.c:2093,1
    - Dst: GetCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2104,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2113
      start: 2076
    functionDepth: 1
    functionLinenumber: 2076
    functionLinenumberEnd: 2113
    functionName: SPI_plan_get_cached_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - Assert
    - linitial
    - list_length
    - GetCachedPlan
    linkageType: ''
    returnType: CachedPlan
    signature: 'CachedPlan *

      SPI_plan_get_cached_plan(SPIPlanPtr plan)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:2131,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:2134,1
    - Dst: _SPI_procmem
      Src: /src/postgres/src/backend/executor/spi.c:2138,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/spi.c:2140,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:2143,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/spi.c:2145,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/backend/executor/spi.c:2147,1
    - Dst: slist_push_head
      Src: /src/postgres/src/backend/executor/spi.c:2154,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/spi.c:2158,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/spi.c:2160,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:2162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2123
    functionDepth: 5
    functionLinenumber: 2123
    functionLinenumberEnd: 2163
    functionName: spi_dest_startup
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - elog
    - palloc0_object
    - CreateTupleDescCopy
    - palloc_array
    - MemoryContextSwitchTo
    - _SPI_procmem
    - slist_push_head
    - AllocSetContextCreate
    - GetCurrentSubTransactionId
    linkageType: ''
    returnType: void
    signature: void spi_dest_startup(DestReceiver *self, int operation, TupleDesc
      typeinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:2177,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:2181,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:2183,1
    - Dst: repalloc_huge
      Src: /src/postgres/src/backend/executor/spi.c:2190,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/spi.c:2195,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:2198,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2201
      start: 2170
    functionDepth: 2
    functionLinenumber: 2170
    functionLinenumberEnd: 2201
    functionName: spi_printtup
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - elog
    - ExecCopySlotHeapTuple
    - repalloc_huge
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: bool
    signature: bool spi_printtup(TupleTableSlot *slot, DestReceiver *self)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: raw_parser
      Src: /src/postgres/src/backend/executor/spi.c:2242,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/spi.c:2252,1
    - Dst: CreateCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2260,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/executor/spi.c:2262,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2270,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/executor/spi.c:2271,1
    - Dst: pg_analyze_and_rewrite_fixedparams
      Src: /src/postgres/src/backend/executor/spi.c:2279,1
    - Dst: CompleteCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2287,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/spi.c:2297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 2
    argNames:
    - src
    - plan
    argTypes:
    - char*
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2307
      start: 2220
    functionDepth: 6
    functionLinenumber: 2220
    functionLinenumberEnd: 2307
    functionName: _SPI_prepare_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 5
    functionsReached:
    - raw_parser
    - Assert
    - pg_analyze_and_rewrite_withcb
    - lappend
    - pg_analyze_and_rewrite_fixedparams
    - CompleteCachedPlan
    - CreateCachedPlan
    - CreateCommandTag
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void _SPI_prepare_plan(const char *src, SPIPlanPtr plan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/spi.c:2252,1
    - Dst: CreateCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2260,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/executor/spi.c:2262,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2270,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/executor/spi.c:2271,1
    - Dst: pg_analyze_and_rewrite_fixedparams
      Src: /src/postgres/src/backend/executor/spi.c:2279,1
    - Dst: CompleteCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2287,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/spi.c:2297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2298
      start: 2250
    functionDepth: 6
    functionLinenumber: 2250
    functionLinenumberEnd: 2298
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 437
    functionsReached:
    - Assert
    - pg_analyze_and_rewrite_withcb
    - lappend
    - pg_analyze_and_rewrite_fixedparams
    - CompleteCachedPlan
    - CreateCachedPlan
    - CreateCommandTag
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(list_item, raw_parsetree_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: raw_parser
      Src: /src/postgres/src/backend/executor/spi.c:2350,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/spi.c:2359,1
    - Dst: CreateOneShotCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2362,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/executor/spi.c:2364,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/spi.c:2366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - src
    - plan
    argTypes:
    - char*
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2328
    functionDepth: 6
    functionLinenumber: 2328
    functionLinenumberEnd: 2376
    functionName: _SPI_prepare_oneshot_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 3
    functionsReached:
    - raw_parser
    - lappend
    - CreateOneShotCachedPlan
    - CreateCommandTag
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void _SPI_prepare_oneshot_plan(const char *src, SPIPlanPtr plan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/spi.c:2359,1
    - Dst: CreateOneShotCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2362,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/executor/spi.c:2364,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/spi.c:2366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2367
      start: 2357
    functionDepth: 6
    functionLinenumber: 2357
    functionLinenumberEnd: 2367
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 437
    functionsReached:
    - CreateOneShotCachedPlan
    - CreateCommandTag
    - lappend
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(list_item, raw_parsetree_list)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/executor/spi.c:2422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2464,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:2467,1
    - Dst: PushCopiedSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:2473,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:2494,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:2495,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:2496,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:2498,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:2500,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2523,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/executor/spi.c:2524,1
    - Dst: pg_analyze_and_rewrite_fixedparams
      Src: /src/postgres/src/backend/executor/spi.c:2532,1
    - Dst: CompleteCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2540,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/backend/executor/spi.c:2566,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:2567,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:2568,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:2570,1
    - Dst: GetCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2577,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:2587,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:2588,1
    - Dst: PlannedStmtRequiresSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:2589,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:2589,1
    - Dst: EnsurePortalSnapshotExists
      Src: /src/postgres/src/backend/executor/spi.c:2601,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:2612,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:2613,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:2613,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/spi.c:2620,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/spi.c:2636,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/spi.c:2646,1
    - Dst: CommandIsReadOnly
      Src: /src/postgres/src/backend/executor/spi.c:2653,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:2654,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:2655,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:2657,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/spi.c:2658,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/executor/spi.c:2667,1
    - Dst: UpdateActiveSnapshotCommandId
      Src: /src/postgres/src/backend/executor/spi.c:2668,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/spi.c:2676,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/spi.c:2680,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/executor/spi.c:2687,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:2688,1
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/executor/spi.c:2692,1
    - Dst: _SPI_pquery
      Src: /src/postgres/src/backend/executor/spi.c:2699,1
    - Dst: FreeQueryDesc
      Src: /src/postgres/src/backend/executor/spi.c:2701,1
    - Dst: InitializeQueryCompletion
      Src: /src/postgres/src/backend/executor/spi.c:2717,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/executor/spi.c:2718,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/spi.c:2737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2749,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/spi.c:2761,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2763,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/backend/executor/spi.c:2776,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/backend/executor/spi.c:2782,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2800,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/executor/spi.c:2809,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:2816,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2820,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 144
    argCount: 5
    argNames:
    - plan
    - options
    - snapshot
    - crosscheck_snapshot
    - fire_triggers
    argTypes:
    - SPIPlanPtr
    - SPIExecuteOptions*
    - Snapshot
    - Snapshot
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2843
      start: 2398
    functionDepth: 2
    functionLinenumber: 2398
    functionLinenumberEnd: 2843
    functionName: _SPI_execute_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 7
    functionsReached:
    - PopActiveSnapshot
    - CreateDestReceiver
    - errcode
    - pg_analyze_and_rewrite_withcb
    - InitializeQueryCompletion
    - IsSubTransaction
    - GetCommandTagName
    - CommandIsReadOnly
    - foreach
    - linitial_node
    - Assert
    - CommandCounterIncrement
    - _SPI_pquery
    - PushCopiedSnapshot
    - FreeQueryDesc
    - errmsg
    - list_length
    - GetCachedPlan
    - ereport
    - ProcessUtility
    - lfirst
    - GetTransactionSnapshot
    - pg_analyze_and_rewrite_fixedparams
    - SPI_freetuptable
    - CreateQueryDesc
    - EnsurePortalSnapshotExists
    - lfirst_node
    - ReleaseCachedPlan
    - PlannedStmtRequiresSnapshot
    - ActiveSnapshotSet
    - UpdateActiveSnapshotCommandId
    - GetActiveSnapshot
    - PushActiveSnapshot
    - CompleteCachedPlan
    - IsA
    - CreateCommandName
    linkageType: ''
    returnType: int
    signature: "int _SPI_execute_plan(SPIPlanPtr plan, const SPIExecuteOptions *options,\n\t\t\t\t
      \ Snapshot snapshot, Snapshot crosscheck_snapshot,\n\t\t\t\t  bool fire_triggers)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/spi.c:2620,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/spi.c:2636,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/spi.c:2646,1
    - Dst: CommandIsReadOnly
      Src: /src/postgres/src/backend/executor/spi.c:2653,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:2654,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:2655,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:2657,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/spi.c:2658,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/executor/spi.c:2667,1
    - Dst: UpdateActiveSnapshotCommandId
      Src: /src/postgres/src/backend/executor/spi.c:2668,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/spi.c:2676,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/spi.c:2680,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/executor/spi.c:2687,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:2688,1
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/executor/spi.c:2692,1
    - Dst: _SPI_pquery
      Src: /src/postgres/src/backend/executor/spi.c:2699,1
    - Dst: FreeQueryDesc
      Src: /src/postgres/src/backend/executor/spi.c:2701,1
    - Dst: InitializeQueryCompletion
      Src: /src/postgres/src/backend/executor/spi.c:2717,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/executor/spi.c:2718,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/spi.c:2737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2749,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/spi.c:2761,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2763,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/backend/executor/spi.c:2776,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/backend/executor/spi.c:2782,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2797
      start: 2618
    functionDepth: 2
    functionLinenumber: 2618
    functionLinenumberEnd: 2797
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 438
    functionsReached:
    - CreateDestReceiver
    - errcode
    - InitializeQueryCompletion
    - CommandIsReadOnly
    - Assert
    - CommandCounterIncrement
    - _SPI_pquery
    - FreeQueryDesc
    - errmsg
    - ereport
    - ProcessUtility
    - SPI_freetuptable
    - CreateQueryDesc
    - lfirst_node
    - ActiveSnapshotSet
    - UpdateActiveSnapshotCommandId
    - GetActiveSnapshot
    - IsA
    - CreateCommandName
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, stmt_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeParamList
      Src: /src/postgres/src/backend/executor/spi.c:2856,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - nargs
    - argtypes
    - Values
    - Nulls
    argTypes:
    - int
    - Oid*
    - Datum*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2871
      start: 2848
    functionDepth: 1
    functionLinenumber: 2848
    functionLinenumberEnd: 2871
    functionName: _SPI_convert_params
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 5
    functionsReached:
    - makeParamList
    linkageType: ''
    returnType: ParamListInfo
    signature: "ParamListInfo _SPI_convert_params(int nargs, const Oid *argtypes,\n\t\t\t\t\tconst
      Datum *Values, const char *Nulls)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/executor/spi.c:2921,1
    - Dst: ExecutorStart
      Src: /src/postgres/src/backend/executor/spi.c:2930,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/executor/spi.c:2932,1
    - Dst: _SPI_checktuples
      Src: /src/postgres/src/backend/executor/spi.c:2939,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:2940,1
    - Dst: ExecutorFinish
      Src: /src/postgres/src/backend/executor/spi.c:2943,1
    - Dst: ExecutorEnd
      Src: /src/postgres/src/backend/executor/spi.c:2944,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/executor/spi.c:2949,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 3
    argNames:
    - queryDesc
    - fire_triggers
    - tcount
    argTypes:
    - QueryDesc*
    - bool
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2953
      start: 2873
    functionDepth: 4
    functionLinenumber: 2873
    functionLinenumberEnd: 2953
    functionName: _SPI_pquery
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - elog
    - ExecutorFinish
    - ExecutorStart
    - ExecutorRun
    - ExecutorEnd
    - ResetUsage
    - _SPI_checktuples
    - ShowUsage
    linkageType: ''
    returnType: int
    signature: int _SPI_pquery(QueryDesc *queryDesc, bool fire_triggers, uint64 tcount)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: geterrposition
      Src: /src/postgres/src/backend/executor/spi.c:2974,1
    - Dst: errposition
      Src: /src/postgres/src/backend/executor/spi.c:2977,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/executor/spi.c:2978,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/executor/spi.c:2979,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/executor/spi.c:2987,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/executor/spi.c:2992,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/executor/spi.c:2995,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2999
      start: 2960
    functionDepth: 1
    functionLinenumber: 2960
    functionLinenumberEnd: 2999
    functionName: _SPI_error_callback
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - internalerrposition
    - errcontext
    - geterrposition
    - errposition
    - internalerrquery
    linkageType: ''
    returnType: void
    signature: void _SPI_error_callback(void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/executor/spi.c:3013,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:3014,1
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:3017,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:3018,1
    - Dst: PortalRunFetch
      Src: /src/postgres/src/backend/executor/spi.c:3027,1
    - Dst: _SPI_checktuples
      Src: /src/postgres/src/backend/executor/spi.c:3042,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:3043,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:3053,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - portal
    - direction
    - count
    - dest
    argTypes:
    - Portal
    - FetchDirection
    - long
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3054
      start: 3006
    functionDepth: 4
    functionLinenumber: 3006
    functionLinenumberEnd: 3054
    functionName: _SPI_cursor_operation
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - elog
    - _SPI_end_call
    - PortalIsValid
    - PortalRunFetch
    - _SPI_begin_call
    - _SPI_checktuples
    linkageType: ''
    returnType: void
    signature: "void _SPI_cursor_operation(Portal portal, FetchDirection direction,
      long count,\n\t\t\t\t\t  DestReceiver *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:3060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3061
      start: 3057
    functionDepth: 1
    functionLinenumber: 3057
    functionLinenumberEnd: 3061
    functionName: _SPI_execmem
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: MemoryContext
    signature: MemoryContext _SPI_execmem(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:3066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3067
      start: 3063
    functionDepth: 1
    functionLinenumber: 3063
    functionLinenumberEnd: 3067
    functionName: _SPI_procmem
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: MemoryContext
    signature: MemoryContext _SPI_procmem(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/backend/executor/spi.c:3085,1
    - Dst: _SPI_execmem
      Src: /src/postgres/src/backend/executor/spi.c:3087,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - use_exec
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3091
      start: 3076
    functionDepth: 2
    functionLinenumber: 3076
    functionLinenumberEnd: 3091
    functionName: _SPI_begin_call
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 16
    functionsReached:
    - GetCurrentSubTransactionId
    - _SPI_execmem
    linkageType: ''
    returnType: int
    signature: int _SPI_begin_call(bool use_exec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_procmem
      Src: /src/postgres/src/backend/executor/spi.c:3106,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/spi.c:3110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - use_exec
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3114
      start: 3100
    functionDepth: 2
    functionLinenumber: 3100
    functionLinenumberEnd: 3114
    functionName: _SPI_end_call
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 15
    functionsReached:
    - MemoryContextReset
    - _SPI_procmem
    linkageType: ''
    returnType: int
    signature: int _SPI_end_call(bool use_exec)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3129
      start: 3116
    functionDepth: 0
    functionLinenumber: 3116
    functionLinenumberEnd: 3129
    functionName: _SPI_checktuples
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool _SPI_checktuples(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:3150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:3151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:3153,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/spi.c:3159,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:3162,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/spi.c:3165,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/spi.c:3175,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/spi.c:3176,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:3190,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:3192,1
    - Dst: CachedPlanSetParentContext
      Src: /src/postgres/src/backend/executor/spi.c:3194,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/spi.c:3197,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:3200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3206
      start: 3140
    functionDepth: 6
    functionLinenumber: 3140
    functionLinenumberEnd: 3206
    functionName: _SPI_make_plan_non_temp
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 3
    functionsReached:
    - palloc0_object
    - memcpy
    - foreach
    - Assert
    - lappend
    - CachedPlanSetParentContext
    - palloc_array
    - MemoryContextSwitchTo
    - lfirst
    - AllocSetContextCreate
    linkageType: ''
    returnType: SPIPlanPtr
    signature: SPIPlanPtr _SPI_make_plan_non_temp(SPIPlanPtr plan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:3220,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/spi.c:3227,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:3230,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/spi.c:3233,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/spi.c:3243,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/spi.c:3244,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:3253,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:3255,1
    - Dst: CopyCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:3258,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/spi.c:3259,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:3262,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/executor/spi.c:3270,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:3272,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:3274,1
    - Dst: SaveCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:3276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3280
      start: 3211
    functionDepth: 6
    functionLinenumber: 3211
    functionLinenumberEnd: 3280
    functionName: _SPI_save_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - MemoryContextSetParent
    - palloc0_object
    - memcpy
    - foreach
    - Assert
    - SaveCachedPlan
    - lappend
    - palloc_array
    - MemoryContextSwitchTo
    - CopyCachedPlan
    - lfirst
    - AllocSetContextCreate
    linkageType: ''
    returnType: SPIPlanPtr
    signature: SPIPlanPtr _SPI_save_plan(SPIPlanPtr plan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:3289,1
    - Dst: get_ENR
      Src: /src/postgres/src/backend/executor/spi.c:3295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3296
      start: 3285
    functionDepth: 1
    functionLinenumber: 3285
    functionLinenumberEnd: 3296
    functionName: _SPI_find_ENR_by_name
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - Assert
    - get_ENR
    linkageType: ''
    returnType: EphemeralNamedRelation
    signature: EphemeralNamedRelation _SPI_find_ENR_by_name(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:3311,1
    - Dst: _SPI_find_ENR_by_name
      Src: /src/postgres/src/backend/executor/spi.c:3315,1
    - Dst: create_queryEnv
      Src: /src/postgres/src/backend/executor/spi.c:3321,1
    - Dst: register_ENR
      Src: /src/postgres/src/backend/executor/spi.c:3323,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:3327,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - enr
    argTypes:
    - EphemeralNamedRelation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3330
      start: 3302
    functionDepth: 3
    functionLinenumber: 3302
    functionLinenumberEnd: 3330
    functionName: SPI_register_relation
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_end_call
    - register_ENR
    - _SPI_find_ENR_by_name
    - create_queryEnv
    - _SPI_begin_call
    linkageType: ''
    returnType: int
    signature: int SPI_register_relation(EphemeralNamedRelation enr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:3345,1
    - Dst: _SPI_find_ENR_by_name
      Src: /src/postgres/src/backend/executor/spi.c:3349,1
    - Dst: unregister_ENR
      Src: /src/postgres/src/backend/executor/spi.c:3352,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:3358,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3361
      start: 3336
    functionDepth: 3
    functionLinenumber: 3336
    functionLinenumberEnd: 3361
    functionName: SPI_unregister_relation
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_end_call
    - unregister_ENR
    - _SPI_find_ENR_by_name
    - _SPI_begin_call
    linkageType: ''
    returnType: int
    signature: int SPI_unregister_relation(const char *name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/spi.c:3378,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/backend/executor/spi.c:3385,1
    - Dst: SPI_register_relation
      Src: /src/postgres/src/backend/executor/spi.c:3387,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/spi.c:3395,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/backend/executor/spi.c:3402,1
    - Dst: SPI_register_relation
      Src: /src/postgres/src/backend/executor/spi.c:3404,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - tdata
    argTypes:
    - TriggerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3410
      start: 3369
    functionDepth: 4
    functionLinenumber: 3369
    functionLinenumberEnd: 3410
    functionName: SPI_register_trigger_data
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 5
    functionsReached:
    - SPI_register_relation
    - tuplestore_tuple_count
    - palloc_object
    linkageType: ''
    returnType: int
    signature: int SPI_register_trigger_data(TriggerData *tdata)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:66,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:83,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:101,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:106,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:132,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:132,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:144,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:145,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:148,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:158,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:165,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:170,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 1
    argNames:
    - node
    argTypes:
    - ValuesScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 46
    functionDepth: 7
    functionLinenumber: 46
    functionLinenumberEnd: 174
    functionName: ValuesNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeValuesscan.c
    functionUses: 0
    functionsReached:
    - ReScanExprContext
    - Assert
    - ExecInitExprList
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - ScanDirectionIsForward
    - lfirst
    - ExecStoreVirtualTuple
    - MakeExpandedObjectReadOnly
    - ExecClearTuple
    - list_length
    - TupleDescCompactAttr
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ValuesNext(ValuesScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:144,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:145,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:148,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 163
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeValuesscan.c
    functionUses: 440
    functionsReached:
    - TupleDescCompactAttr
    - lfirst
    - ExecEvalExpr
    - MakeExpandedObjectReadOnly
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprstatelist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - ValuesScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 184
    functionName: ValuesRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeValuesscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ValuesRecheck(ValuesScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:198,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 203
    functionName: ExecValuesScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeValuesscan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecValuesScan(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:221,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:221,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:222,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:222,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:227,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:242,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:244,1
    - Dst: ExecTypeFromExprList
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:249,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:249,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:250,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:255,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:256,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:262,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:268,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:281,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:283,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:285,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:287,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:296,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:310,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 32
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - ValuesScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 209
    functionDepth: 9
    functionLinenumber: 209
    functionLinenumberEnd: 319
    functionName: ExecInitValuesScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeValuesscan.c
    functionUses: 1
    functionsReached:
    - contain_subplans
    - foreach
    - ExecAssignExprContext
    - Assert
    - linitial
    - ExecInitResultTypeTL
    - ExecTypeFromExprList
    - ExecInitScanTupleSlot
    - makeNode
    - ExecAssignScanProjectionInfo
    - palloc0
    - ExecInitExprList
    - palloc
    - list_length
    - ExecInitQual
    - outerPlan
    - innerPlan
    - lfirst_node
    linkageType: ''
    returnType: ValuesScanState
    signature: 'ValuesScanState *

      ExecInitValuesScan(ValuesScan *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:331,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeValuesscan.c:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - ValuesScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 327
    functionDepth: 4
    functionLinenumber: 327
    functionLinenumberEnd: 336
    functionName: ExecReScanValuesScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeValuesscan.c
    functionUses: 1
    functionsReached:
    - ExecScanReScan
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanValuesScan(ValuesScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hjstate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 193
    functionName: HJ_FILL_OUTER
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HJ_FILL_OUTER(hjstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hjstate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 195
    functionName: HJ_FILL_INNER
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HJ_FILL_INNER(hjstate)
  - BBCount: 53
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:227,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:244,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:245,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:254,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:276,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:301,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:318,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:322,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:323,1
    - Dst: ExecHashTableCreate
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:339,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:348,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:362,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:372,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:396,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:396,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:397,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:398,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:399,1
    - Dst: ExecParallelHashJoinPartitionOuter
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:406,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:407,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:409,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:409,1
    - Dst: ExecParallelHashJoinOuterGetTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:442,1
    - Dst: ExecHashJoinOuterGetTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:446,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:448,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:451,1
    - Dst: ExecParallelPrepHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:462,1
    - Dst: ExecPrepHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:473,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:480,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:497,1
    - Dst: ExecHashGetSkewBucket
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:499,1
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:511,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:518,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:519,1
    - Dst: ExecHashJoinSaveTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:520,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:525,1
    - Dst: ExecParallelScanHashBucket
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:543,1
    - Dst: ExecScanHashBucket
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:552,1
    - Dst: HeapTupleHeaderHasMatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:565,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:565,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:580,1
    - Dst: HeapTupleHeaderHasMatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:589,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:589,1
    - Dst: HeapTupleHeaderSetMatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:590,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:590,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:616,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:617,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:619,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:622,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:635,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:643,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:644,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:646,1
    - Dst: ExecParallelScanHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:658,1
    - Dst: ExecScanHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:659,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:677,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:678,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:680,1
    - Dst: tuplestore_gettupleslot_force
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:696,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:707,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:708,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:710,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:712,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:715,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:719,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:739,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:750,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:751,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:753,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:755,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:758,1
    - Dst: ExecParallelHashJoinNewBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:777,1
    - Dst: ExecHashJoinNewBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:782,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:789,1
    CyclomaticComplexity: 78
    EdgeCount: 78
    ICount: 200
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 224
    functionDepth: 5
    functionLinenumber: 224
    functionLinenumberEnd: 793
    functionName: 'TupleTableSlot *

      ExecHashJoinImpl(PlanState *pstate, bool parallel)'
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 0
    functionsReached:
    - ExecParallelHashJoinPartitionOuter
    - ResetExprContext
    - ExecScanHashTableForUnmatched
    - ExecHashJoinNewBatch
    - ExecPrepHashTableForUnmatched
    - ExecParallelPrepHashTableForUnmatched
    - InstrCountFiltered2
    - ExecHashGetBucketAndBatch
    - elog
    - ExecHashGetSkewBucket
    - innerPlanState
    - Assert
    - ExecProcNode
    - heap_free_minimal_tuple
    - HJTUPLE_MINTUPLE
    - outerPlanState
    - ExecHashTableCreate
    - ExecHashJoinSaveTuple
    - tuplestore_gettupleslot_force
    - tuplestore_gettupleslot
    - ExecProject
    - ExecScanHashBucket
    - InstrCountFiltered1
    - HeapTupleHeaderSetMatch
    - tuplestore_end
    - CHECK_FOR_INTERRUPTS
    - MultiExecProcNode
    - ExecFetchSlotMinimalTuple
    - ExecParallelScanHashTableForUnmatched
    - TupIsNull
    - ExecParallelHashJoinOuterGetTuple
    - ExecParallelScanHashBucket
    - HeapTupleHeaderHasMatch
    - BarrierPhase
    - castNode
    - BarrierArriveAndWait
    - ExecParallelHashJoinNewBatch
    - ExecQual
    - HJ_FILL_INNER
    - HJ_FILL_OUTER
    - ExecHashJoinOuterGetTuple
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: 'pg_attribute_always_inline TupleTableSlot *

      ExecHashJoinImpl(PlanState *pstate, bool parallel)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecHashJoinImpl
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 801
    functionDepth: 0
    functionLinenumber: 801
    functionLinenumberEnd: 809
    functionName: ExecHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 0
    functionsReached:
    - ExecHashJoinImpl
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\t\t\t/* return: a tuple or NULL */\nExecHashJoin(PlanState
      *pstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecHashJoinImpl
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 817
    functionDepth: 0
    functionLinenumber: 817
    functionLinenumberEnd: 825
    functionName: ExecParallelHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 0
    functionsReached:
    - ExecHashJoinImpl
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\t\t\t/* return: a tuple or NULL */\nExecParallelHashJoin(PlanState
      *pstate)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:844,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:849,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:866,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:875,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:876,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:878,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:878,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:879,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:879,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:880,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:880,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:881,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:881,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:886,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:887,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:892,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:892,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:893,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:912,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:917,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:921,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:923,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:926,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:938,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:956,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:958,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:959,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:960,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:966,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:968,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:969,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:971,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:974,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:977,1
    - Dst: ExecBuildHash32Expr
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:985,1
    - Dst: ExecBuildHash32Expr
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:996,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1006,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1007,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1013,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1015,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1016,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1017,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1021,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1022,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1023,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1030,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1032,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1034,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 76
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - HashJoin*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 833
    functionDepth: 11
    functionLinenumber: 833
    functionLinenumberEnd: 1053
    functionName: ExecInitHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ExecAssignProjectionInfo
    - palloc_array
    - ExecGetResultSlotOps
    - lfirst_oid
    - ExecInitNode
    - elog
    - innerPlanState
    - foreach
    - Assert
    - pfree
    - ExecInitResultTupleSlotTL
    - outerPlanState
    - linitial_oid
    - list_length
    - OidIsValid
    - ExecInitNullTupleSlot
    - outerPlan
    - ExecBuildHash32Expr
    - fmgr_info
    - palloc0_object
    - get_op_hash_functions
    - ExecInitQual
    - ExecInitExtraTupleSlot
    - op_strict
    - ExecGetResultType
    - ExecAssignExprContext
    - makeNode
    - HJ_FILL_INNER
    - HJ_FILL_OUTER
    - foreach_current_index
    - innerPlan
    linkageType: ''
    returnType: HashJoinState
    signature: 'HashJoinState *

      ExecInitHashJoin(HashJoin *node, EState *estate, int eflags)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1064,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1064,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1072,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1077,1
    - Dst: ExecHashTableDestroy
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1086,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1093,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1093,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1094,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1094,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1061
    functionDepth: 4
    functionLinenumber: 1061
    functionLinenumberEnd: 1095
    functionName: ExecEndHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - innerPlanState
    - tuplestore_end
    - castNode
    - outerPlanState
    - ExecEndNode
    - ExecHashTableDestroy
    linkageType: ''
    returnType: void
    signature: void ExecEndHashJoin(HashJoinState *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1125,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1128,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1130,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1141,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1143,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1143,1
    - Dst: ExecHashBuildNullTupleStore
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1159,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1160,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1167,1
    - Dst: ExecHashJoinGetSavedTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1181,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1185,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 3
    argNames:
    - outerNode
    - hjstate
    - hashvalue
    argTypes:
    - PlanState*
    - HashJoinState*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1109
    functionDepth: 2
    functionLinenumber: 1109
    functionLinenumberEnd: 1191
    functionName: ExecHashJoinOuterGetTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ExecHashBuildNullTupleStore
    - ResetExprContext
    - ExecProcNode
    - ExecHashJoinGetSavedTuple
    - ExecEvalExprSwitchContext
    - TupIsNull
    - tuplestore_puttupleslot
    - DatumGetUInt32
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecHashJoinOuterGetTuple(PlanState *outerNode,\n\t\t\t\t\t\t
      \ HashJoinState *hjstate,\n\t\t\t\t\t\t  uint32 *hashvalue)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1212,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1214,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1222,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1224,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1224,1
    - Dst: ExecHashBuildNullTupleStore
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1237,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1238,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1245,1
    - Dst: sts_parallel_scan_next
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1252,1
    - Dst: ExecForceStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1256,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1263,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - outerNode
    - hjstate
    - hashvalue
    argTypes:
    - PlanState*
    - HashJoinState*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1196
    functionDepth: 7
    functionLinenumber: 1196
    functionLinenumberEnd: 1270
    functionName: ExecParallelHashJoinOuterGetTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ExecHashBuildNullTupleStore
    - ResetExprContext
    - ExecForceStoreMinimalTuple
    - ExecProcNode
    - ExecEvalExprSwitchContext
    - sts_parallel_scan_next
    - TupIsNull
    - ExecClearTuple
    - tuplestore_puttupleslot
    - DatumGetUInt32
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecParallelHashJoinOuterGetTuple(PlanState *outerNode,\n\t\t\t\t\t\t\t\t
      \ HashJoinState *hjstate,\n\t\t\t\t\t\t\t\t  uint32 *hashvalue)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1298,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1340,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1343,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1354,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1357,1
    - Dst: ExecHashTableReset
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1370,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1377,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1378,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1379,1
    - Dst: ExecHashJoinGetSavedTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1381,1
    - Dst: ExecHashTableInsert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1390,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1397,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1406,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1407,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1408,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1409,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 51
    argCount: 1
    argNames:
    - hjstate
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1278
    functionDepth: 3
    functionLinenumber: 1278
    functionLinenumberEnd: 1413
    functionName: ExecHashJoinNewBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - BufFileClose
    - ExecHashTableReset
    - BufFileSeek
    - ExecHashJoinGetSavedTuple
    - ereport
    - ExecHashTableInsert
    - errmsg
    - HJ_FILL_INNER
    - HJ_FILL_OUTER
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: bool ExecHashJoinNewBatch(HashJoinState *hjstate)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1442,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1451,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1465,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1470,1
    - Dst: ExecParallelHashTableAlloc
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1472,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1477,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1483,1
    - Dst: sts_begin_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1485,1
    - Dst: sts_parallel_scan_next
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1486,1
    - Dst: ExecForceStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1489,1
    - Dst: ExecParallelHashTableInsertCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1493,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1496,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1497,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1513,1
    - Dst: sts_begin_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1514,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1531,1
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1533,1
    - Dst: BarrierDetach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1542,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1548,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1549,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 51
    argCount: 1
    argNames:
    - hjstate
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1419
    functionDepth: 7
    functionLinenumber: 1419
    functionLinenumberEnd: 1556
    functionName: ExecParallelHashJoinNewBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - elog
    - sts_end_parallel_scan
    - ExecForceStoreMinimalTuple
    - sts_begin_parallel_scan
    - BarrierPhase
    - BarrierArriveAndWait
    - ExecParallelHashTableInsertCurrentBatch
    - ExecParallelHashTableSetCurrentBatch
    - ExecHashTableDetachBatch
    - sts_parallel_scan_next
    - BarrierAttach
    - BarrierDetach
    - ExecParallelHashTableAlloc
    - pg_atomic_fetch_add_u32
    linkageType: ''
    returnType: bool
    signature: bool ExecParallelHashJoinNewBatch(HashJoinState *hjstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1592,1
    - Dst: BufFileCreateTemp
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1594,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1597,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1600,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - tuple
    - hashvalue
    - fileptr
    - hashtable
    argTypes:
    - MinimalTuple
    - uint32
    - BufFile**
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 1602
    functionName: ExecHashJoinSaveTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 4
    functionsReached:
    - BufFileCreateTemp
    - BufFileWrite
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void ExecHashJoinSaveTuple(MinimalTuple tuple, uint32 hashvalue,\n\t\t\t\t\t
      \ BufFile **fileptr, HashJoinTable hashtable)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1626,1
    - Dst: BufFileReadMaybeEOF
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1633,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1636,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1640,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1642,1
    - Dst: ExecForceStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - hjstate
    - file
    - hashvalue
    - tupleSlot
    argTypes:
    - HashJoinState*
    - BufFile*
    - uint32*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1611
    functionDepth: 7
    functionLinenumber: 1611
    functionLinenumberEnd: 1647
    functionName: ExecHashJoinGetSavedTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 2
    functionsReached:
    - ExecForceStoreMinimalTuple
    - BufFileReadMaybeEOF
    - BufFileReadExact
    - CHECK_FOR_INTERRUPTS
    - palloc
    - ExecClearTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecHashJoinGetSavedTuple(HashJoinState *hjstate,\n\t\t\t\t\t\t
      \ BufFile *file,\n\t\t\t\t\t\t  uint32 *hashvalue,\n\t\t\t\t\t\t  TupleTableSlot
      *tupleSlot)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1653,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1654,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1663,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1678,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1690,1
    - Dst: ExecHashTableResetMatchFlags
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1691,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1709,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1721,1
    - Dst: ExecHashAccumInstrumentation
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1723,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1729,1
    - Dst: ExecHashTableDestroy
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1736,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1745,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1763,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1650
    functionDepth: 7
    functionLinenumber: 1650
    functionLinenumberEnd: 1764
    functionName: ExecReScanHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - palloc0_object
    - ExecHashTableResetMatchFlags
    - innerPlanState
    - Assert
    - tuplestore_end
    - castNode
    - tuplestore_rescan
    - ExecHashAccumInstrumentation
    - ExecReScan
    - outerPlanState
    - ExecHashTableDestroy
    - HJ_FILL_INNER
    linkageType: ''
    returnType: void
    signature: void ExecReScanHashJoin(HashJoinState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1776,1
    - Dst: ExecHashTableDetach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1779
      start: 1766
    functionDepth: 2
    functionLinenumber: 1766
    functionLinenumberEnd: 1779
    functionName: ExecShutdownHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ExecHashTableDetach
    - ExecHashTableDetachBatch
    linkageType: ''
    returnType: void
    signature: void ExecShutdownHashJoin(HashJoinState *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1790,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1798,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1799,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1803,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1805,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1805,1
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1815,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1817,1
    - Dst: sts_puttuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1819,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1823,1
    - Dst: ExecHashBuildNullTupleStore
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1829,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1830,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1834,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1839,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - hjstate
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1840
      start: 1781
    functionDepth: 2
    functionLinenumber: 1781
    functionLinenumberEnd: 1840
    functionName: ExecParallelHashJoinPartitionOuter
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ExecHashBuildNullTupleStore
    - ResetExprContext
    - ExecHashGetBucketAndBatch
    - Assert
    - ExecProcNode
    - heap_free_minimal_tuple
    - sts_end_write
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - sts_puttuple
    - ExecFetchSlotMinimalTuple
    - ExecEvalExprSwitchContext
    - TupIsNull
    - tuplestore_puttupleslot
    - DatumGetUInt32
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashJoinPartitionOuter(HashJoinState *hjstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1845,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - pcxt
    argTypes:
    - HashJoinState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1847
      start: 1842
    functionDepth: 1
    functionLinenumber: 1842
    functionLinenumberEnd: 1847
    functionName: ExecHashJoinEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: void ExecHashJoinEstimate(HashJoinState *state, ParallelContext *pcxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecSetExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1863,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1869,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1870,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1884,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1887,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1889,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1890,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1891,1
    - Dst: SharedFileSetInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1894,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 2
    argNames:
    - state
    - pcxt
    argTypes:
    - HashJoinState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1899
      start: 1849
    functionDepth: 2
    functionLinenumber: 1849
    functionLinenumberEnd: 1899
    functionName: ExecHashJoinInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - pg_atomic_init_u32
    - innerPlanState
    - shm_toc_insert
    - SharedFileSetInit
    - BarrierInit
    - ExecSetExecProcNode
    - shm_toc_allocate
    - LWLockInitialize
    linkageType: ''
    returnType: void
    signature: void ExecHashJoinInitializeDSM(HashJoinState *state, ParallelContext
      *pcxt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1918,1
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1935,1
    - Dst: ExecHashTableDetach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1936,1
    - Dst: SharedFileSetDeleteAll
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1940,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1945,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1948,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1951,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1957,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - state
    - pcxt
    argTypes:
    - HashJoinState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1907
    functionDepth: 2
    functionLinenumber: 1907
    functionLinenumberEnd: 1958
    functionName: ExecHashJoinReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - innerPlanState
    - shm_toc_lookup
    - tuplestore_end
    - ExecHashTableDetach
    - BarrierInit
    - ExecHashTableDetachBatch
    - SharedFileSetDeleteAll
    linkageType: ''
    returnType: void
    signature: void ExecHashJoinReInitializeDSM(HashJoinState *state, ParallelContext
      *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1967,1
    - Dst: SharedFileSetAttach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1970,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1973,1
    - Dst: ExecSetExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - state
    - pwcxt
    argTypes:
    - HashJoinState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1977
      start: 1960
    functionDepth: 1
    functionLinenumber: 1960
    functionLinenumberEnd: 1977
    functionName: ExecHashJoinInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ExecSetExecProcNode
    - SharedFileSetAttach
    - shm_toc_lookup
    - innerPlanState
    linkageType: ''
    returnType: void
    signature: "void ExecHashJoinInitializeWorker(HashJoinState *state,\n\t\t\t\t\t\t\t
      ParallelWorkerContext *pwcxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:37,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:37,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:43,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - NamedTuplestoreScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 46
    functionName: NamedTuplestoreScanNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c
    functionUses: 0
    functionsReached:
    - Assert
    - tuplestore_gettupleslot
    - ScanDirectionIsForward
    - tuplestore_select_read_pointer
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      NamedTuplestoreScanNext(NamedTuplestoreScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - NamedTuplestoreScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: NamedTuplestoreScanRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool NamedTuplestoreScanRecheck(NamedTuplestoreScanState *node, TupleTableSlot
      *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:70,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: ExecNamedTuplestoreScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c
    functionUses: 0
    functionsReached:
    - castNode
    - ExecScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecNamedTuplestoreScan(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:94,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:94,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:95,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:95,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:100,1
    - Dst: get_ENR
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:105,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:107,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:110,1
    - Dst: ENRMetadataGetTupDesc
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:112,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:114,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:120,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:121,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:135,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:140,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:146,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:147,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - NamedTuplestoreScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 82
    functionDepth: 9
    functionLinenumber: 82
    functionLinenumberEnd: 156
    functionName: ExecInitNamedTuplestoreScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c
    functionUses: 1
    functionsReached:
    - elog
    - tuplestore_alloc_read_pointer
    - ExecAssignExprContext
    - Assert
    - ENRMetadataGetTupDesc
    - tuplestore_rescan
    - ExecInitScanTupleSlot
    - ExecInitResultTypeTL
    - makeNode
    - tuplestore_select_read_pointer
    - ExecAssignScanProjectionInfo
    - get_ENR
    - ExecInitQual
    - outerPlan
    - innerPlan
    linkageType: ''
    returnType: NamedTuplestoreScanState
    signature: 'NamedTuplestoreScanState *

      ExecInitNamedTuplestoreScan(NamedTuplestoreScan *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:170,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:172,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:177,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - NamedTuplestoreScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 164
    functionDepth: 4
    functionLinenumber: 164
    functionLinenumberEnd: 179
    functionName: ExecReScanNamedTuplestoreScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c
    functionUses: 1
    functionsReached:
    - ExecScanReScan
    - tuplestore_rescan
    - tuplestore_select_read_pointer
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecReScanNamedTuplestoreScan(NamedTuplestoreScanState *node)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:42,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeLimit.c:48,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLimit.c:54,1
    - Dst: recompute_limits
      Src: /src/postgres/src/backend/executor/nodeLimit.c:69,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeLimit.c:78,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:95,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLimit.c:96,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeLimit.c:113,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeLimit.c:135,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:172,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLimit.c:173,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeLimit.c:187,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:209,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLimit.c:210,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLimit.c:211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeLimit.c:217,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeLimit.c:221,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:227,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLimit.c:228,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeLimit.c:240,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:267,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLimit.c:268,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLimit.c:269,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeLimit.c:277,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:284,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLimit.c:285,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLimit.c:286,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeLimit.c:293,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:303,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLimit.c:304,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLimit.c:305,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeLimit.c:322,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeLimit.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeLimit.c:342,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeLimit.c:342,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 133
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 39
    functionDepth: 4
    functionLinenumber: 39
    functionLinenumberEnd: 345
    functionName: ExecLimit
    functionSourceFile: /src/postgres/src/backend/executor/nodeLimit.c
    functionUses: 0
    functionsReached:
    - elog
    - recompute_limits
    - Assert
    - castNode
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - outerPlanState
    - ExecQualAndReset
    - ScanDirectionIsForward
    - ExecCopySlot
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\t\t\t/* return: a tuple or NULL */\nExecLimit(PlanState
      *pstate)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeLimit.c:361,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeLimit.c:369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeLimit.c:371,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeLimit.c:373,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeLimit.c:384,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeLimit.c:395,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeLimit.c:397,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:398,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeLimit.c:399,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/nodeLimit.c:423,1
    - Dst: compute_tuples_needed
      Src: /src/postgres/src/backend/executor/nodeLimit.c:423,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLimit.c:423,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 1
    argNames:
    - node
    argTypes:
    - LimitState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 424
    functionName: recompute_limits
    functionSourceFile: /src/postgres/src/backend/executor/nodeLimit.c
    functionUses: 1
    functionsReached:
    - DatumGetInt64
    - errcode
    - compute_tuples_needed
    - ereport
    - ExecSetTupleBound
    - outerPlanState
    - errmsg
    - ExecEvalExprSwitchContext
    linkageType: ''
    returnType: void
    signature: void recompute_limits(LimitState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - LimitState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 437
    functionName: compute_tuples_needed
    functionSourceFile: /src/postgres/src/backend/executor/nodeLimit.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 compute_tuples_needed(LimitState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeLimit.c:453,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:458,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeLimit.c:471,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeLimit.c:476,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLimit.c:477,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:477,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeLimit.c:482,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeLimit.c:484,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeLimit.c:491,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeLimit.c:494,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLimit.c:494,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeLimit.c:511,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLimit.c:511,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeLimit.c:512,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLimit.c:512,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeLimit.c:514,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeLimit.c:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Limit*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 446
    functionDepth: 11
    functionLinenumber: 446
    functionLinenumberEnd: 524
    functionName: ExecInitLimit
    functionSourceFile: /src/postgres/src/backend/executor/nodeLimit.c
    functionUses: 1
    functionsReached:
    - ExecInitNode
    - ExecInitExtraTupleSlot
    - ExecGetResultType
    - ExecAssignExprContext
    - Assert
    - ExecInitResultTypeTL
    - makeNode
    - outerPlanState
    - ExecInitExpr
    - ExecGetResultSlotOps
    - execTuplesMatchPrepare
    - outerPlan
    linkageType: ''
    returnType: LimitState
    signature: 'LimitState *

      ExecInitLimit(Limit *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeLimit.c:536,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLimit.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - LimitState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 533
    functionDepth: 4
    functionLinenumber: 533
    functionLinenumberEnd: 537
    functionName: ExecEndLimit
    functionSourceFile: /src/postgres/src/backend/executor/nodeLimit.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - ExecEndNode
    linkageType: ''
    returnType: void
    signature: void ExecEndLimit(LimitState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLimit.c:543,1
    - Dst: recompute_limits
      Src: /src/postgres/src/backend/executor/nodeLimit.c:550,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeLimit.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - LimitState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 540
    functionDepth: 7
    functionLinenumber: 540
    functionLinenumberEnd: 558
    functionName: ExecReScanLimit
    functionSourceFile: /src/postgres/src/backend/executor/nodeLimit.c
    functionUses: 1
    functionsReached:
    - outerPlanState
    - ExecReScan
    - recompute_limits
    linkageType: ''
    returnType: void
    signature: void ExecReScanLimit(LimitState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EEO_CASE(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: EEO_DISPATCH
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EEO_DISPATCH()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opcode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: EEO_OPCODE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EEO_OPCODE(opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: EEO_SWITCH
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EEO_SWITCH()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EEO_CASE(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    functionName: EEO_DISPATCH
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EEO_DISPATCH()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opcode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: EEO_OPCODE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EEO_OPCODE(opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 138
    functionName: EEO_NEXT
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EEO_NEXT()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - stepno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 144
    functionName: EEO_JUMP
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EEO_JUMP(stepno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 241
    functionName: SH_HASH_KEY
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_HASH_KEY(tb, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 242
    functionName: SH_EQUAL
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_EQUAL(tb, a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tb
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 245
    functionName: SH_GET_HASH
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SH_GET_HASH(tb, a)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ExecInitInterpreter
      Src: /src/postgres/src/backend/executor/execExprInterp.c:255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:259,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:279,1
    - Dst: EEO_OPCODE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:450,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 102
    argCount: 1
    argNames:
    - state
    argTypes:
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 457
    functionName: ExecReadyInterpretedExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - Assert
    - EEO_OPCODE
    - ExecInitInterpreter
    linkageType: ''
    returnType: void
    signature: void ExecReadyInterpretedExpr(ExprState *state)
  - BBCount: 62
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:608,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/executor/execExprInterp.c:608,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:611,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:614,1
    - Dst: EEO_DISPATCH
      Src: /src/postgres/src/backend/executor/execExprInterp.c:627,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:640,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:646,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:648,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:650,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:655,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:657,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:659,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:664,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:666,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:668,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:673,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:675,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:677,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:682,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:684,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:699,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:703,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:712,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:725,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:729,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:738,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:751,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:755,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:760,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:761,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:766,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:767,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:772,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:773,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:778,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:779,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:784,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:785,1
    - Dst: ExecEvalWholeRowVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:791,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:793,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:806,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:823,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:827,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:840,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:857,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:874,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:878,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:885,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:889,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:896,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:900,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:904,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:912,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:936,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:951,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:963,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:968,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:977,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:987,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1001,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1011,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1016,1
    - Dst: ExecEvalFuncExprFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1022,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1024,1
    - Dst: ExecEvalFuncExprStrictFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1030,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1032,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1063,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1067,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1070,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1079,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1099,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1130,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1134,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1137,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1146,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1166,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1177,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1177,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1179,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1188,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1192,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1193,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1201,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1207,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1214,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1216,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1223,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1225,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1231,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1232,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1234,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1239,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1242,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1247,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1250,1
    - Dst: ExecEvalRowNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1256,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1258,1
    - Dst: ExecEvalRowNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1264,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1266,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1275,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1280,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1287,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1291,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1291,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1293,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1300,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1304,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1304,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1306,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1313,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1318,1
    - Dst: ExecEvalParamExec
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1324,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1326,1
    - Dst: ExecEvalParamExtern
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1332,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1333,1
    - Dst: ExprEvalStep*::d::cparam::paramfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1339,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1340,1
    - Dst: ExecEvalParamSet
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1346,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1347,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1355,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1363,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1373,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1376,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1406,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1406,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1409,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1419,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1430,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1436,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1440,1
    - Dst: ExecEvalCoerceViaIOSafe
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1445,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1446,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1466,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1472,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1481,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1483,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1483,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1487,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1497,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1502,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1510,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1515,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1540,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1543,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1546,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1551,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1559,1
    - Dst: ExecEvalSQLValueFunction
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1568,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1570,1
    - Dst: ExecEvalCurrentOfExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1576,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1578,1
    - Dst: ExecEvalNextValueExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1587,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1589,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1603,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1606,1
    - Dst: ExecEvalArrayExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1612,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1614,1
    - Dst: ExecEvalArrayCoerce
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1620,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1622,1
    - Dst: ExecEvalRow
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1628,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1630,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1643,1
    - Dst: ExprEvalStep*::d::rowcompare_step::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1648,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1655,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1660,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1662,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1665,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1670,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1678,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1681,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1684,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1687,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1690,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1694,1
    - Dst: ExecEvalMinMax
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1700,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1702,1
    - Dst: ExecEvalFieldSelect
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1708,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1710,1
    - Dst: ExecEvalFieldStoreDeForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1716,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1718,1
    - Dst: ExecEvalFieldStoreForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1724,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1726,1
    - Dst: ExprEvalStep*::d::sbsref_subscript::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1732,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1734,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1739,1
    - Dst: EEO_CASE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1743,1
    - Dst: EEO_CASE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1744,1
    - Dst: ExprEvalStep*::d::sbsref::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1748,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1750,1
    - Dst: ExecEvalConvertRowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1756,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1758,1
    - Dst: ExecEvalScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1764,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1766,1
    - Dst: ExecEvalHashedScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1772,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1774,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1782,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1790,1
    - Dst: ExecEvalConstraintNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1796,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1798,1
    - Dst: ExecEvalConstraintCheck
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1804,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1806,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1814,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1826,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1832,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1848,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1852,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1855,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1863,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1865,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1873,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1873,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1877,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1880,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1896,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1903,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1905,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1908,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1908,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1909,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1913,1
    - Dst: ExecEvalXmlExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1919,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1921,1
    - Dst: ExecEvalJsonConstructor
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1927,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1928,1
    - Dst: ExecEvalJsonIsPredicate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1934,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1936,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1942,1
    - Dst: ExecEvalJsonExprPath
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1942,1
    - Dst: ExecEvalJsonCoercion
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1948,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1950,1
    - Dst: ExecEvalJsonCoercionFinish
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1956,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1969,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1974,1
    - Dst: ExecEvalGroupingFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1980,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1982,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1992,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1997,1
    - Dst: ExecEvalMergeSupportFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2003,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2005,1
    - Dst: ExecEvalSubPlan
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2011,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2013,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2021,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2030,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2037,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2039,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2041,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2057,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2062,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2064,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2073,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2076,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2077,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2088,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2090,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2099,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2104,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2106,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2128,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2133,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2137,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2140,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2145,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2156,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2158,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2159,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2163,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2174,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2176,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2180,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2191,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2194,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2196,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2197,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2201,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2212,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2214,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2215,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2218,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2229,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2231,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2235,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2241,1
    - Dst: ExecEvalPreOrderedDistinctSingle
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2243,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2244,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2246,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2251,1
    - Dst: ExecEvalPreOrderedDistinctMulti
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2254,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2255,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2257,1
    - Dst: ExecEvalAggOrderedTransDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2264,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2266,1
    - Dst: ExecEvalAggOrderedTransTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2273,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2281,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2287,1
    CyclomaticComplexity: 96
    EdgeCount: 96
    ICount: 657
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 469
    functionDepth: 2
    functionLinenumber: 469
    functionLinenumberEnd: 2289
    functionName: ExecInterpExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - CheckOpSlotCompatibility
    - MakeExpandedObjectReadOnlyInternal
    - ExecEvalCoerceViaIOSafe
    - ExecEvalNextValueExpr
    - ExecEvalAggOrderedTransDatum
    - ExecEvalPreOrderedDistinctMulti
    - ExecAggPlainTransByVal
    - ExecEvalConvertRowtype
    - EEO_JUMP
    - ExecEvalArrayCoerce
    - ExprEvalStep*::d::func::fn_addr
    - ExecEvalJsonCoercion
    - ExprEvalStep*::d::hashdatum::fn_addr
    - ExecEvalMergeSupportFunc
    - ExecEvalSQLValueFunction
    - ExecEvalFieldStoreDeForm
    - ExecAggInitGroup
    - DatumGetBool
    - ExecEvalRowNotNull
    - DatumGetUInt32
    - ExecEvalXmlExpr
    - ExecEvalRow
    - ExecEvalConstraintNotNull
    - Assert
    - ExecEvalFuncExprFusage
    - ExecEvalParamExec
    - ExecEvalHashedScalarArrayOp
    - UInt32GetDatum
    - ExecEvalAggOrderedTransTuple
    - ExecEvalCurrentOfExpr
    - ExecEvalSubPlan
    - PointerGetDatum
    - ExecEvalJsonExprPath
    - ExecEvalConstraintCheck
    - slot_getsomeattrs
    - StaticAssertDecl
    - lengthof
    - ExecEvalFuncExprStrictFusage
    - DatumGetCString
    - ExprEvalStep*::d::sbsref::subscriptfunc
    - ExecEvalJsonConstructor
    - ExecEvalRowNull
    - FunctionCallInvoke
    - ExecEvalGroupingFunc
    - ExecEvalArrayExpr
    - ExprEvalStep*::d::cparam::paramfunc
    - ExecEvalMinMax
    - ExecEvalFieldStoreForm
    - unlikely
    - ExecEvalParamSet
    - ExprEvalStep*::d::rowcompare_step::fn_addr
    - pg_rotate_left32
    - ExecEvalParamExtern
    - ExecEvalJsonIsPredicate
    - EEO_DISPATCH
    - EEO_CASE
    - castNode
    - ExecEvalWholeRowVar
    - ExecAggPlainTransByRef
    - ExecEvalJsonCoercionFinish
    - MemoryContextSwitchTo
    - DatumGetInt32
    - ExecEvalPreOrderedDistinctSingle
    - ExecEvalScalarArrayOp
    - likely
    - ExprEvalStep*::d::sbsref_subscript::subscriptfunc
    - ExecEvalFieldSelect
    - ExecEvalSysVar
    - pg_unreachable
    - BoolGetDatum
    - EEO_NEXT
    linkageType: ''
    returnType: Datum
    signature: Datum ExecInterpExpr(ExprState *state, ExprContext *econtext, bool
      *isnull)
  - BBCount: 61
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:640,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:646,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:648,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:650,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:655,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:657,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:659,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:664,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:666,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:668,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:673,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:675,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:677,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:682,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:684,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:699,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:703,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:712,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:725,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:729,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:738,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:751,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:755,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:760,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:761,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:766,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:767,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:772,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:773,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:778,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:779,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:784,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:785,1
    - Dst: ExecEvalWholeRowVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:791,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:793,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:806,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:823,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:827,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:840,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:857,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:874,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:878,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:885,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:889,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:896,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:900,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:904,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:912,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:936,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:951,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:963,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:968,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:977,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:987,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1001,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1011,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1016,1
    - Dst: ExecEvalFuncExprFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1022,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1024,1
    - Dst: ExecEvalFuncExprStrictFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1030,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1032,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1063,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1067,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1070,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1079,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1099,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1130,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1134,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1137,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1146,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1166,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1177,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1177,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1179,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1188,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1192,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1193,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1201,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1207,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1214,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1216,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1223,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1225,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1231,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1232,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1234,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1239,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1242,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1247,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1250,1
    - Dst: ExecEvalRowNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1256,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1258,1
    - Dst: ExecEvalRowNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1264,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1266,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1275,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1280,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1287,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1291,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1291,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1293,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1300,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1304,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1304,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1306,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1313,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1318,1
    - Dst: ExecEvalParamExec
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1324,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1326,1
    - Dst: ExecEvalParamExtern
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1332,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1333,1
    - Dst: d::cparam::paramfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1339,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1340,1
    - Dst: ExecEvalParamSet
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1346,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1347,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1355,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1363,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1373,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1376,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1406,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1406,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1409,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1419,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1430,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1436,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1440,1
    - Dst: ExecEvalCoerceViaIOSafe
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1445,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1446,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1466,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1472,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1481,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1483,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1483,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1487,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1497,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1502,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1510,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1515,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1540,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1543,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1546,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1551,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1559,1
    - Dst: ExecEvalSQLValueFunction
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1568,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1570,1
    - Dst: ExecEvalCurrentOfExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1576,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1578,1
    - Dst: ExecEvalNextValueExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1587,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1589,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1603,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1606,1
    - Dst: ExecEvalArrayExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1612,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1614,1
    - Dst: ExecEvalArrayCoerce
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1620,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1622,1
    - Dst: ExecEvalRow
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1628,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1630,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1643,1
    - Dst: d::rowcompare_step::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1648,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1655,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1660,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1662,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1665,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1670,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1678,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1681,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1684,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1687,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1690,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1694,1
    - Dst: ExecEvalMinMax
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1700,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1702,1
    - Dst: ExecEvalFieldSelect
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1708,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1710,1
    - Dst: ExecEvalFieldStoreDeForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1716,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1718,1
    - Dst: ExecEvalFieldStoreForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1724,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1726,1
    - Dst: d::sbsref_subscript::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1732,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1734,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1739,1
    - Dst: EEO_CASE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1743,1
    - Dst: EEO_CASE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1744,1
    - Dst: d::sbsref::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1748,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1750,1
    - Dst: ExecEvalConvertRowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1756,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1758,1
    - Dst: ExecEvalScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1764,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1766,1
    - Dst: ExecEvalHashedScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1772,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1774,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1782,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1790,1
    - Dst: ExecEvalConstraintNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1796,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1798,1
    - Dst: ExecEvalConstraintCheck
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1804,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1806,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1814,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1826,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1832,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1848,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1852,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1855,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1863,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1865,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1873,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1873,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1877,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1880,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1896,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1903,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1905,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1908,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1908,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1909,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1913,1
    - Dst: ExecEvalXmlExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1919,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1921,1
    - Dst: ExecEvalJsonConstructor
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1927,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1928,1
    - Dst: ExecEvalJsonIsPredicate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1934,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1936,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1942,1
    - Dst: ExecEvalJsonExprPath
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1942,1
    - Dst: ExecEvalJsonCoercion
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1948,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1950,1
    - Dst: ExecEvalJsonCoercionFinish
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1956,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1969,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1974,1
    - Dst: ExecEvalGroupingFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1980,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1982,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1992,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1997,1
    - Dst: ExecEvalMergeSupportFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2003,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2005,1
    - Dst: ExecEvalSubPlan
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2011,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2013,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2021,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2030,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2037,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2039,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2041,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2057,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2062,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2064,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2073,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2076,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2077,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2088,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2090,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2099,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2104,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2106,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2128,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2133,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2137,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2140,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2145,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2156,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2158,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2159,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2163,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2174,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2176,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2180,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2191,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2194,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2196,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2197,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2201,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2212,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2214,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2215,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2218,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2229,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2231,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2235,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2241,1
    - Dst: ExecEvalPreOrderedDistinctSingle
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2243,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2244,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2246,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2251,1
    - Dst: ExecEvalPreOrderedDistinctMulti
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2254,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2255,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2257,1
    - Dst: ExecEvalAggOrderedTransDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2264,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2266,1
    - Dst: ExecEvalAggOrderedTransTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2273,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2281,1
    CyclomaticComplexity: 95
    EdgeCount: 95
    ICount: 640
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2284
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 2284
    functionName: EEO_SWITCH
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - CheckOpSlotCompatibility
    - MakeExpandedObjectReadOnlyInternal
    - ExecEvalCoerceViaIOSafe
    - ExecEvalNextValueExpr
    - ExecEvalAggOrderedTransDatum
    - ExecEvalPreOrderedDistinctMulti
    - ExecAggPlainTransByVal
    - ExecEvalConvertRowtype
    - EEO_JUMP
    - ExecEvalArrayCoerce
    - d::sbsref::subscriptfunc
    - d::rowcompare_step::fn_addr
    - ExecEvalJsonCoercion
    - ExecEvalMergeSupportFunc
    - ExecEvalSQLValueFunction
    - ExecEvalFieldStoreDeForm
    - ExecAggInitGroup
    - DatumGetBool
    - ExecEvalRowNotNull
    - DatumGetUInt32
    - ExecEvalXmlExpr
    - ExecEvalRow
    - ExecEvalConstraintNotNull
    - Assert
    - ExecEvalFuncExprFusage
    - ExecEvalParamExec
    - ExecEvalHashedScalarArrayOp
    - UInt32GetDatum
    - d::hashdatum::fn_addr
    - ExecEvalCurrentOfExpr
    - ExecEvalAggOrderedTransTuple
    - ExecEvalSubPlan
    - PointerGetDatum
    - ExecEvalJsonExprPath
    - ExecEvalConstraintCheck
    - slot_getsomeattrs
    - DatumGetCString
    - ExecEvalFuncExprStrictFusage
    - ExecEvalJsonConstructor
    - ExecEvalRowNull
    - FunctionCallInvoke
    - ExecEvalGroupingFunc
    - ExecEvalArrayExpr
    - ExecEvalMinMax
    - ExecEvalFieldStoreForm
    - ExecEvalParamSet
    - pg_rotate_left32
    - ExecEvalParamExtern
    - d::cparam::paramfunc
    - ExecEvalJsonIsPredicate
    - EEO_CASE
    - castNode
    - ExecEvalWholeRowVar
    - ExecAggPlainTransByRef
    - d::func::fn_addr
    - ExecEvalJsonCoercionFinish
    - d::sbsref_subscript::subscriptfunc
    - MemoryContextSwitchTo
    - DatumGetInt32
    - ExecEvalPreOrderedDistinctSingle
    - ExecEvalScalarArrayOp
    - likely
    - ExecEvalFieldSelect
    - ExecEvalSysVar
    - BoolGetDatum
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_SWITCH()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 636
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_DONE_RETURN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 638
    functionDepth: 1
    functionLinenumber: 638
    functionLinenumberEnd: 642
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_DONE_NO_RETURN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:646,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:648,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 651
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - CheckOpSlotCompatibility
    - slot_getsomeattrs
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_INNER_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:655,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:657,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 660
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - CheckOpSlotCompatibility
    - slot_getsomeattrs
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OUTER_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:664,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:666,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 669
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - CheckOpSlotCompatibility
    - slot_getsomeattrs
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SCAN_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:673,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:675,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:677,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 678
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - CheckOpSlotCompatibility
    - slot_getsomeattrs
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OLD_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:682,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:684,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 680
    functionDepth: 1
    functionLinenumber: 680
    functionLinenumberEnd: 687
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - CheckOpSlotCompatibility
    - slot_getsomeattrs
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NEW_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:699,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 704
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_INNER_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:712,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 717
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OUTER_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:725,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 730
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SCAN_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:738,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 743
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OLD_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:751,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:755,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 756
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NEW_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:760,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:761,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 762
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalSysVar
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_INNER_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:766,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 768
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalSysVar
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OUTER_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:772,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 774
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalSysVar
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SCAN_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:778,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 776
    functionDepth: 1
    functionLinenumber: 776
    functionLinenumberEnd: 780
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalSysVar
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OLD_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:784,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 786
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalSysVar
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NEW_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalWholeRowVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:791,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 794
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalWholeRowVar
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_WHOLEROW)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:806,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:810,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 796
    functionDepth: 1
    functionLinenumber: 796
    functionLinenumberEnd: 811
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ASSIGN_INNER_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:823,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:827,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 813
    functionDepth: 1
    functionLinenumber: 813
    functionLinenumberEnd: 828
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ASSIGN_OUTER_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:840,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:844,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 845
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ASSIGN_SCAN_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:857,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:861,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 862
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ASSIGN_OLD_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:874,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:878,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 864
    functionDepth: 1
    functionLinenumber: 864
    functionLinenumberEnd: 879
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ASSIGN_NEW_VAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:885,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 881
    functionDepth: 1
    functionLinenumber: 881
    functionLinenumberEnd: 890
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ASSIGN_TMP)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:896,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:900,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:904,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 905
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - MakeExpandedObjectReadOnlyInternal
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ASSIGN_TMP_MAKE_RO)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 907
    functionDepth: 1
    functionLinenumber: 907
    functionLinenumberEnd: 913
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_CONST)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:936,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 941
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - d::func::fn_addr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FUNCEXPR)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:951,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:963,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:968,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 944
    functionDepth: 1
    functionLinenumber: 944
    functionLinenumberEnd: 969
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    - d::func::fn_addr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FUNCEXPR_STRICT)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:977,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:987,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:992,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 993
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    - d::func::fn_addr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FUNCEXPR_STRICT_1)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1001,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1011,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1016,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 996
    functionDepth: 1
    functionLinenumber: 996
    functionLinenumberEnd: 1017
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    - d::func::fn_addr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FUNCEXPR_STRICT_2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalFuncExprFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1022,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1024,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1019
    functionDepth: 1
    functionLinenumber: 1019
    functionLinenumberEnd: 1025
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalFuncExprFusage
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FUNCEXPR_FUSAGE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalFuncExprStrictFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1030,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1033
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalFuncExprStrictFusage
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FUNCEXPR_STRICT_FUSAGE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1055
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOL_AND_STEP_FIRST)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1063,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1067,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1070,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1057
    functionDepth: 1
    functionLinenumber: 1057
    functionLinenumberEnd: 1071
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOL_AND_STEP)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1079,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1099,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1073
    functionDepth: 1
    functionLinenumber: 1073
    functionLinenumberEnd: 1100
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOL_AND_STEP_LAST)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1112
    functionDepth: 0
    functionLinenumber: 1112
    functionLinenumberEnd: 1122
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOL_OR_STEP_FIRST)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1130,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1134,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1124
    functionDepth: 1
    functionLinenumber: 1124
    functionLinenumberEnd: 1138
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOL_OR_STEP)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1146,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1140
    functionDepth: 1
    functionLinenumber: 1140
    functionLinenumberEnd: 1167
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOL_OR_STEP_LAST)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1177,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1177,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1180
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOL_NOT_STEP)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1188,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1192,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1193,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1182
    functionDepth: 1
    functionLinenumber: 1182
    functionLinenumberEnd: 1202
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - BoolGetDatum
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_QUAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1208
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_JUMP)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1214,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1217
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_JUMP_IF_NULL)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1223,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1219
    functionDepth: 1
    functionLinenumber: 1219
    functionLinenumberEnd: 1226
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_JUMP_IF_NOT_NULL)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1231,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1232,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1235
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_JUMP_IF_NOT_TRUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1239,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1237
    functionDepth: 1
    functionLinenumber: 1237
    functionLinenumberEnd: 1243
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NULLTEST_ISNULL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1247,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1245
    functionDepth: 1
    functionLinenumber: 1245
    functionLinenumberEnd: 1251
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NULLTEST_ISNOTNULL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalRowNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1256,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1259
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalRowNull
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NULLTEST_ROWISNULL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalRowNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1264,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1261
    functionDepth: 1
    functionLinenumber: 1261
    functionLinenumberEnd: 1267
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalRowNotNull
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NULLTEST_ROWISNOTNULL)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1275,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1271
    functionDepth: 1
    functionLinenumber: 1271
    functionLinenumberEnd: 1281
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOLTEST_IS_TRUE)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1287,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1291,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1291,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1283
    functionDepth: 1
    functionLinenumber: 1283
    functionLinenumberEnd: 1294
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOLTEST_IS_NOT_TRUE)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1300,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1304,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1304,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1296
    functionDepth: 1
    functionLinenumber: 1296
    functionLinenumberEnd: 1307
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOLTEST_IS_FALSE)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1313,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1319
      start: 1309
    functionDepth: 1
    functionLinenumber: 1309
    functionLinenumberEnd: 1319
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_BOOLTEST_IS_NOT_FALSE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalParamExec
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1324,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1321
    functionDepth: 1
    functionLinenumber: 1321
    functionLinenumberEnd: 1327
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalParamExec
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_PARAM_EXEC)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalParamExtern
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1332,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1329
    functionDepth: 1
    functionLinenumber: 1329
    functionLinenumberEnd: 1334
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalParamExtern
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_PARAM_EXTERN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d::cparam::paramfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1339,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1336
    functionDepth: 1
    functionLinenumber: 1336
    functionLinenumberEnd: 1341
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - d::cparam::paramfunc
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_PARAM_CALLBACK)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalParamSet
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1346,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1343
    functionDepth: 1
    functionLinenumber: 1343
    functionLinenumberEnd: 1348
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalParamSet
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_PARAM_SET)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1350
    functionDepth: 1
    functionLinenumber: 1350
    functionLinenumberEnd: 1356
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_CASE_TESTVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1358
    functionDepth: 1
    functionLinenumber: 1358
    functionLinenumberEnd: 1364
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_CASE_TESTVAL_EXT)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1373,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1366
    functionDepth: 1
    functionLinenumber: 1366
    functionLinenumberEnd: 1377
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - MakeExpandedObjectReadOnlyInternal
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_MAKE_READONLY)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1406,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1406,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1409,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1419,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1430,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1436,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1440,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1379
    functionDepth: 2
    functionLinenumber: 1379
    functionLinenumberEnd: 1441
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - FunctionCallInvoke
    - Assert
    - PointerGetDatum
    - EEO_NEXT
    - DatumGetCString
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_IOCOERCE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalCoerceViaIOSafe
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1445,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1443
    functionDepth: 1
    functionLinenumber: 1443
    functionLinenumberEnd: 1447
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalCoerceViaIOSafe
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_IOCOERCE_SAFE)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1466,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1472,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1481,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1483,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1483,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1487,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1449
    functionDepth: 1
    functionLinenumber: 1449
    functionLinenumberEnd: 1488
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - EEO_NEXT
    - d::func::fn_addr
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_DISTINCT)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1497,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1502,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1510,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1515,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1516
      start: 1491
    functionDepth: 1
    functionLinenumber: 1491
    functionLinenumberEnd: 1516
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - EEO_NEXT
    - d::func::fn_addr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NOT_DISTINCT)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1540,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1543,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1546,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1551,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1559,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1518
    functionDepth: 1
    functionLinenumber: 1518
    functionLinenumberEnd: 1560
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - MakeExpandedObjectReadOnlyInternal
    - EEO_NEXT
    - d::func::fn_addr
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NULLIF)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSQLValueFunction
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1568,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1562
    functionDepth: 1
    functionLinenumber: 1562
    functionLinenumberEnd: 1571
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalSQLValueFunction
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SQLVALUEFUNCTION)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalCurrentOfExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1576,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1573
    functionDepth: 1
    functionLinenumber: 1573
    functionLinenumberEnd: 1579
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalCurrentOfExpr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_CURRENTOFEXPR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalNextValueExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1587,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1581
    functionDepth: 1
    functionLinenumber: 1581
    functionLinenumberEnd: 1590
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalNextValueExpr
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NEXTVALUEEXPR)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1603,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1592
    functionDepth: 1
    functionLinenumber: 1592
    functionLinenumberEnd: 1607
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_RETURNINGEXPR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalArrayExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1612,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1609
    functionDepth: 1
    functionLinenumber: 1609
    functionLinenumberEnd: 1615
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalArrayExpr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ARRAYEXPR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalArrayCoerce
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1620,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1617
    functionDepth: 1
    functionLinenumber: 1617
    functionLinenumberEnd: 1623
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalArrayCoerce
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ARRAYCOERCE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalRow
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1628,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1625
    functionDepth: 1
    functionLinenumber: 1625
    functionLinenumberEnd: 1631
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalRow
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ROW)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1643,1
    - Dst: d::rowcompare_step::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1648,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1655,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1660,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1662,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1665,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1633
    functionDepth: 1
    functionLinenumber: 1633
    functionLinenumberEnd: 1666
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - DatumGetInt32
    - d::rowcompare_step::fn_addr
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ROWCOMPARE_STEP)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1670,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1678,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1681,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1684,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1687,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1690,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1694,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1668
    functionDepth: 1
    functionLinenumber: 1668
    functionLinenumberEnd: 1695
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - DatumGetInt32
    - BoolGetDatum
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ROWCOMPARE_FINAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalMinMax
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1700,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1703
      start: 1697
    functionDepth: 1
    functionLinenumber: 1697
    functionLinenumberEnd: 1703
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalMinMax
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_MINMAX)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalFieldSelect
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1708,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1711
      start: 1705
    functionDepth: 1
    functionLinenumber: 1705
    functionLinenumberEnd: 1711
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalFieldSelect
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FIELDSELECT)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalFieldStoreDeForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1716,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1713
    functionDepth: 1
    functionLinenumber: 1713
    functionLinenumberEnd: 1719
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalFieldStoreDeForm
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FIELDSTORE_DEFORM)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalFieldStoreForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1724,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1721
    functionDepth: 1
    functionLinenumber: 1721
    functionLinenumberEnd: 1727
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalFieldStoreForm
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FIELDSTORE_FORM)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d::sbsref_subscript::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1732,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1734,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1739,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1729
    functionDepth: 1
    functionLinenumber: 1729
    functionLinenumberEnd: 1741
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - EEO_NEXT
    - d::sbsref_subscript::subscriptfunc
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SBSREF_SUBSCRIPTS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d::sbsref::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1748,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1751
      start: 1745
    functionDepth: 1
    functionLinenumber: 1745
    functionLinenumberEnd: 1751
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - d::sbsref::subscriptfunc
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SBSREF_FETCH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalConvertRowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1756,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1753
    functionDepth: 1
    functionLinenumber: 1753
    functionLinenumberEnd: 1759
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalConvertRowtype
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_CONVERT_ROWTYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1764,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1761
    functionDepth: 1
    functionLinenumber: 1761
    functionLinenumberEnd: 1767
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalScalarArrayOp
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SCALARARRAYOP)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalHashedScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1772,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1769
    functionDepth: 1
    functionLinenumber: 1769
    functionLinenumberEnd: 1775
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalHashedScalarArrayOp
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_HASHED_SCALARARRAYOP)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1777
    functionDepth: 1
    functionLinenumber: 1777
    functionLinenumberEnd: 1783
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_DOMAIN_TESTVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1785
    functionDepth: 1
    functionLinenumber: 1785
    functionLinenumberEnd: 1791
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_DOMAIN_TESTVAL_EXT)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalConstraintNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1796,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1793
    functionDepth: 1
    functionLinenumber: 1793
    functionLinenumberEnd: 1799
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalConstraintNotNull
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_DOMAIN_NOTNULL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalConstraintCheck
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1804,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1807
      start: 1801
    functionDepth: 1
    functionLinenumber: 1801
    functionLinenumberEnd: 1807
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalConstraintCheck
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_DOMAIN_CHECK)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1809
    functionDepth: 1
    functionLinenumber: 1809
    functionLinenumberEnd: 1815
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_HASHDATUM_SET_INITVAL)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1826,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1817
    functionDepth: 1
    functionLinenumber: 1817
    functionLinenumberEnd: 1833
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - d::hashdatum::fn_addr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_HASHDATUM_FIRST)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1848,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1852,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1855,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1835
    functionDepth: 1
    functionLinenumber: 1835
    functionLinenumberEnd: 1856
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - EEO_NEXT
    - d::hashdatum::fn_addr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_HASHDATUM_FIRST_STRICT)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1863,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1865,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1873,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1873,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1877,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1880,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1858
    functionDepth: 1
    functionLinenumber: 1858
    functionLinenumberEnd: 1881
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - UInt32GetDatum
    - d::hashdatum::fn_addr
    - pg_rotate_left32
    - EEO_NEXT
    - DatumGetUInt32
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_HASHDATUM_NEXT32)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1896,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1903,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1905,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1908,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1908,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1909,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1913,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1914
      start: 1883
    functionDepth: 1
    functionLinenumber: 1883
    functionLinenumberEnd: 1914
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - UInt32GetDatum
    - d::hashdatum::fn_addr
    - EEO_JUMP
    - pg_rotate_left32
    - EEO_NEXT
    - DatumGetUInt32
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_HASHDATUM_NEXT32_STRICT)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalXmlExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1919,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1922
      start: 1916
    functionDepth: 1
    functionLinenumber: 1916
    functionLinenumberEnd: 1922
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalXmlExpr
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_XMLEXPR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalJsonConstructor
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1927,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1929
      start: 1924
    functionDepth: 1
    functionLinenumber: 1924
    functionLinenumberEnd: 1929
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalJsonConstructor
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_JSON_CONSTRUCTOR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalJsonIsPredicate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1934,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1931
    functionDepth: 1
    functionLinenumber: 1931
    functionLinenumberEnd: 1937
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalJsonIsPredicate
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_IS_JSON)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1942,1
    - Dst: ExecEvalJsonExprPath
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1939
    functionDepth: 1
    functionLinenumber: 1939
    functionLinenumberEnd: 1943
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - ExecEvalJsonExprPath
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_JSONEXPR_PATH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalJsonCoercion
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1948,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1951
      start: 1945
    functionDepth: 1
    functionLinenumber: 1945
    functionLinenumberEnd: 1951
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalJsonCoercion
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_JSONEXPR_COERCION)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalJsonCoercionFinish
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1956,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1953
    functionDepth: 1
    functionLinenumber: 1953
    functionLinenumberEnd: 1959
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalJsonCoercionFinish
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_JSONEXPR_COERCION_FINISH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1969,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1961
    functionDepth: 1
    functionLinenumber: 1961
    functionLinenumberEnd: 1975
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGGREF)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalGroupingFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1980,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1977
    functionDepth: 1
    functionLinenumber: 1977
    functionLinenumberEnd: 1983
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalGroupingFunc
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_GROUPING_FUNC)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1992,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1985
    functionDepth: 1
    functionLinenumber: 1985
    functionLinenumberEnd: 1998
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_WINDOW_FUNC)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalMergeSupportFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2003,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2006
      start: 2000
    functionDepth: 1
    functionLinenumber: 2000
    functionLinenumberEnd: 2006
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalMergeSupportFunc
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_MERGE_SUPPORT_FUNC)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSubPlan
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2011,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 2008
    functionDepth: 1
    functionLinenumber: 2008
    functionLinenumberEnd: 2014
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalSubPlan
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SUBPLAN)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2021,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2017
    functionDepth: 1
    functionLinenumber: 2017
    functionLinenumberEnd: 2024
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_STRICT_DESERIALIZE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2030,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2037,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2039,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2041,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 2027
    functionDepth: 1
    functionLinenumber: 2027
    functionLinenumberEnd: 2044
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - FunctionCallInvoke
    - castNode
    - EEO_NEXT
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_DESERIALIZE)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2057,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2062,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2065
      start: 2052
    functionDepth: 1
    functionLinenumber: 2052
    functionLinenumberEnd: 2065
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_JUMP
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_STRICT_INPUT_CHECK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2073,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2076,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2077,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 2068
    functionDepth: 1
    functionLinenumber: 2068
    functionLinenumberEnd: 2078
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_JUMP
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_STRICT_INPUT_CHECK_ARGS_1)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2088,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2090,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2091
      start: 2080
    functionDepth: 1
    functionLinenumber: 2080
    functionLinenumberEnd: 2091
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_STRICT_INPUT_CHECK_NULLS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2099,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2104,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2107
      start: 2097
    functionDepth: 1
    functionLinenumber: 2097
    functionLinenumberEnd: 2107
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - castNode
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_PLAIN_PERGROUP_NULLCHECK)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2128,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2133,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2137,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2140,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2146
      start: 2121
    functionDepth: 1
    functionLinenumber: 2121
    functionLinenumberEnd: 2146
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - castNode
    - ExecAggPlainTransByVal
    - likely
    - EEO_NEXT
    - ExecAggInitGroup
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_PLAIN_TRANS_INIT_STRICT_BYVAL)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2156,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2158,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2159,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2149
    functionDepth: 1
    functionLinenumber: 2149
    functionLinenumberEnd: 2164
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - castNode
    - ExecAggPlainTransByVal
    - likely
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_PLAIN_TRANS_STRICT_BYVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2174,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2176,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2181
      start: 2167
    functionDepth: 1
    functionLinenumber: 2167
    functionLinenumberEnd: 2181
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - castNode
    - EEO_NEXT
    - ExecAggPlainTransByVal
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_PLAIN_TRANS_BYVAL)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2191,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2194,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2196,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2197,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2202
      start: 2184
    functionDepth: 1
    functionLinenumber: 2184
    functionLinenumberEnd: 2202
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - castNode
    - ExecAggPlainTransByRef
    - likely
    - EEO_NEXT
    - ExecAggInitGroup
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_PLAIN_TRANS_INIT_STRICT_BYREF)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2212,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2214,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2215,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2219
      start: 2205
    functionDepth: 1
    functionLinenumber: 2205
    functionLinenumberEnd: 2219
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - castNode
    - ExecAggPlainTransByRef
    - likely
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_PLAIN_TRANS_STRICT_BYREF)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2229,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2231,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2236
      start: 2222
    functionDepth: 1
    functionLinenumber: 2222
    functionLinenumberEnd: 2236
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - castNode
    - ExecAggPlainTransByRef
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_PLAIN_TRANS_BYREF)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2241,1
    - Dst: ExecEvalPreOrderedDistinctSingle
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2243,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2244,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2238
    functionDepth: 1
    functionLinenumber: 2238
    functionLinenumberEnd: 2247
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_JUMP
    - ExecEvalPreOrderedDistinctSingle
    - castNode
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_PRESORTED_DISTINCT_SINGLE)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2251,1
    - Dst: ExecEvalPreOrderedDistinctMulti
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2254,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2255,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2258
      start: 2249
    functionDepth: 1
    functionLinenumber: 2249
    functionLinenumberEnd: 2258
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalPreOrderedDistinctMulti
    - EEO_JUMP
    - castNode
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_PRESORTED_DISTINCT_MULTI)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalAggOrderedTransDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2264,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2261
    functionDepth: 1
    functionLinenumber: 2261
    functionLinenumberEnd: 2267
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalAggOrderedTransDatum
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_ORDERED_TRANS_DATUM)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalAggOrderedTransTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2273,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2276
      start: 2270
    functionDepth: 1
    functionLinenumber: 2270
    functionLinenumberEnd: 2276
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalAggOrderedTransTuple
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_ORDERED_TRANS_TUPLE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2283
      start: 2278
    functionDepth: 1
    functionLinenumber: 2278
    functionLinenumberEnd: 2283
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_LAST)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckExprStillValid
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2303,1
    - Dst: ExprState*::evalfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - state
    - econtext
    - isNull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2310
      start: 2296
    functionDepth: 1
    functionLinenumber: 2296
    functionLinenumberEnd: 2310
    functionName: ExecInterpExprStillValid
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - CheckExprStillValid
    - ExprState*::evalfunc
    linkageType: ''
    returnType: Datum
    signature: Datum ExecInterpExprStillValid(ExprState *state, ExprContext *econtext,
      bool *isNull)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalStepOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2335,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2341,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2349,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2357,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2365,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2373,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2380
      start: 2316
    functionDepth: 1
    functionLinenumber: 2316
    functionLinenumberEnd: 2380
    functionName: CheckExprStillValid
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - CheckVarSlotCompatibility
    - ExecEvalStepOp
    linkageType: ''
    returnType: void
    signature: void CheckExprStillValid(ExprState *state, ExprContext *econtext)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2413,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2416,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2420,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2423,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2424,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2425,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2426,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2429,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2430,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2431,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2432,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2433,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2434,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2435,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - slot
    - attnum
    - vartype
    argTypes:
    - TupleTableSlot*
    - int
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2387
    functionDepth: 2
    functionLinenumber: 2387
    functionLinenumberEnd: 2437
    functionName: CheckVarSlotCompatibility
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - elog
    - format_type_be
    - errcode
    - ereport
    - errmsg
    - errdetail
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void CheckVarSlotCompatibility(TupleTableSlot *slot, int attnum, Oid
      vartype)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2468,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - op
    - slot
    argTypes:
    - ExprEvalStep*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2470
      start: 2442
    functionDepth: 1
    functionLinenumber: 2442
    functionLinenumberEnd: 2470
    functionName: CheckOpSlotCompatibility
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 7
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void CheckOpSlotCompatibility(ExprEvalStep *op, TupleTableSlot *slot)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2505,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2511,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2512,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2513,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2514,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2532,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2537,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2539,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 4
    argNames:
    - type_id
    - typmod
    - rowcache
    - changed
    argTypes:
    - Oid
    - int32
    - ExprEvalRowtypeCache*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2547
      start: 2489
    functionDepth: 1
    functionLinenumber: 2489
    functionLinenumberEnd: 2547
    functionName: get_cached_rowtype
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - ReleaseTupleDesc
    - errcode
    - ereport
    - lookup_rowtype_tupdesc
    - unlikely
    - errmsg
    - lookup_type_cache
    linkageType: ''
    returnType: TupleDesc
    signature: "TupleDesc get_cached_rowtype(Oid type_id, int32 typmod,\n\t\t\t\t
      \  ExprEvalRowtypeCache *rowcache,\n\t\t\t\t   bool *changed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2561,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - slot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2555
    functionDepth: 2
    functionLinenumber: 2555
    functionLinenumberEnd: 2569
    functionName: ExecJustVarImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - CheckOpSlotCompatibility
    - slot_getattr
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline ExecJustVarImpl(ExprState *state, TupleTableSlot
      *slot, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustVarImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2572
    functionDepth: 3
    functionLinenumber: 2572
    functionLinenumberEnd: 2576
    functionName: ExecJustInnerVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustVarImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustInnerVar(ExprState *state, ExprContext *econtext, bool
      *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustVarImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2583
      start: 2579
    functionDepth: 3
    functionLinenumber: 2579
    functionLinenumberEnd: 2583
    functionName: ExecJustOuterVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustVarImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustOuterVar(ExprState *state, ExprContext *econtext, bool
      *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustVarImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2590
      start: 2586
    functionDepth: 3
    functionLinenumber: 2586
    functionLinenumberEnd: 2590
    functionName: ExecJustScanVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustVarImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustScanVar(ExprState *state, ExprContext *econtext, bool
      *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2601,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2612,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2614,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - inslot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2616
      start: 2593
    functionDepth: 2
    functionLinenumber: 2593
    functionLinenumberEnd: 2616
    functionName: ExecJustAssignVarImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - CheckOpSlotCompatibility
    - slot_getattr
    - Assert
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline ExecJustAssignVarImpl(ExprState *state,
      TupleTableSlot *inslot, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustAssignVarImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2623
      start: 2619
    functionDepth: 3
    functionLinenumber: 2619
    functionLinenumberEnd: 2623
    functionName: ExecJustAssignInnerVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustAssignVarImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustAssignInnerVar(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustAssignVarImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2630
      start: 2626
    functionDepth: 3
    functionLinenumber: 2626
    functionLinenumberEnd: 2630
    functionName: ExecJustAssignOuterVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustAssignVarImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustAssignOuterVar(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustAssignVarImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2637
      start: 2633
    functionDepth: 3
    functionLinenumber: 2633
    functionLinenumberEnd: 2637
    functionName: ExecJustAssignScanVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustAssignVarImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustAssignScanVar(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2675
      start: 2640
    functionDepth: 0
    functionLinenumber: 2640
    functionLinenumberEnd: 2675
    functionName: ExecJustApplyFuncToCase
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExprEvalStep*::d::func::fn_addr
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustApplyFuncToCase(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2685
      start: 2678
    functionDepth: 0
    functionLinenumber: 2678
    functionLinenumberEnd: 2685
    functionName: ExecJustConst
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustConst(ExprState *state, ExprContext *econtext, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2700,1
    - Dst: TTS_IS_VIRTUAL
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2700,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2701,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - slot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2688
    functionDepth: 1
    functionLinenumber: 2688
    functionLinenumberEnd: 2707
    functionName: ExecJustVarVirtImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_FIXED
    - TTS_IS_VIRTUAL
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline ExecJustVarVirtImpl(ExprState *state, TupleTableSlot
      *slot, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustVarVirtImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2714
      start: 2710
    functionDepth: 2
    functionLinenumber: 2710
    functionLinenumberEnd: 2714
    functionName: ExecJustInnerVarVirt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustVarVirtImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustInnerVarVirt(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustVarVirtImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2721
      start: 2717
    functionDepth: 2
    functionLinenumber: 2717
    functionLinenumberEnd: 2721
    functionName: ExecJustOuterVarVirt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustVarVirtImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustOuterVarVirt(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustVarVirtImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2724
    functionDepth: 2
    functionLinenumber: 2724
    functionLinenumberEnd: 2728
    functionName: ExecJustScanVarVirt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustVarVirtImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustScanVarVirt(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2741,1
    - Dst: TTS_IS_VIRTUAL
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2741,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2742,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - state
    - inslot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2750
      start: 2731
    functionDepth: 1
    functionLinenumber: 2731
    functionLinenumberEnd: 2750
    functionName: ExecJustAssignVarVirtImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_FIXED
    - TTS_IS_VIRTUAL
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline ExecJustAssignVarVirtImpl(ExprState *state,
      TupleTableSlot *inslot, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustAssignVarVirtImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2757
      start: 2753
    functionDepth: 2
    functionLinenumber: 2753
    functionLinenumberEnd: 2757
    functionName: ExecJustAssignInnerVarVirt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustAssignVarVirtImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustAssignInnerVarVirt(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustAssignVarVirtImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2764
      start: 2760
    functionDepth: 2
    functionLinenumber: 2760
    functionLinenumberEnd: 2764
    functionName: ExecJustAssignOuterVarVirt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustAssignVarVirtImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustAssignOuterVarVirt(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustAssignVarVirtImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2771
      start: 2767
    functionDepth: 2
    functionLinenumber: 2767
    functionLinenumberEnd: 2771
    functionName: ExecJustAssignScanVarVirt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustAssignVarVirtImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustAssignScanVarVirt(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2788,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2789,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2794,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2795,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2801,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2801,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2776
    functionDepth: 2
    functionLinenumber: 2776
    functionLinenumberEnd: 2807
    functionName: ExecJustHashInnerVarWithIV
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - CheckOpSlotCompatibility
    - UInt32GetDatum
    - ExprEvalStep*::d::hashdatum::fn_addr
    - pg_rotate_left32
    - slot_getsomeattrs
    - DatumGetUInt32
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecJustHashInnerVarWithIV(ExprState *state, ExprContext *econtext,\n\t\t\t\t\t\t
      \  bool *isnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2819,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2820,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - state
    - slot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2831
      start: 2810
    functionDepth: 2
    functionLinenumber: 2810
    functionLinenumberEnd: 2831
    functionName: ExecJustHashVarImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - CheckOpSlotCompatibility
    - slot_getsomeattrs
    - ExprEvalStep*::d::hashdatum::fn_addr
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline ExecJustHashVarImpl(ExprState *state, TupleTableSlot
      *slot, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustHashVarImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2838
      start: 2834
    functionDepth: 3
    functionLinenumber: 2834
    functionLinenumberEnd: 2838
    functionName: ExecJustHashOuterVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustHashVarImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustHashOuterVar(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustHashVarImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2845
      start: 2841
    functionDepth: 3
    functionLinenumber: 2841
    functionLinenumberEnd: 2845
    functionName: ExecJustHashInnerVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustHashVarImpl
    linkageType: ''
    returnType: Datum
    signature: Datum ExecJustHashInnerVar(ExprState *state, ExprContext *econtext,
      bool *isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2862,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - state
    - slot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2865
      start: 2848
    functionDepth: 0
    functionLinenumber: 2848
    functionLinenumberEnd: 2865
    functionName: ExecJustHashVarVirtImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExprEvalStep*::d::hashdatum::fn_addr
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline ExecJustHashVarVirtImpl(ExprState *state,
      TupleTableSlot *slot, bool *isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustHashVarVirtImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2873
      start: 2868
    functionDepth: 1
    functionLinenumber: 2868
    functionLinenumberEnd: 2873
    functionName: ExecJustHashInnerVarVirt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustHashVarVirtImpl
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecJustHashInnerVarVirt(ExprState *state, ExprContext *econtext,\n\t\t\t\t\t\t
      bool *isnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecJustHashVarVirtImpl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2881
      start: 2876
    functionDepth: 1
    functionLinenumber: 2876
    functionLinenumberEnd: 2881
    functionName: ExecJustHashOuterVarVirt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExecJustHashVarVirtImpl
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecJustHashOuterVarVirt(ExprState *state, ExprContext *econtext,\n\t\t\t\t\t\t
      bool *isnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2896,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2897,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2905,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2913
      start: 2886
    functionDepth: 2
    functionLinenumber: 2886
    functionLinenumberEnd: 2913
    functionName: ExecJustHashOuterVarStrict
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - CheckOpSlotCompatibility
    - slot_getsomeattrs
    - ExprEvalStep*::d::hashdatum::fn_addr
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecJustHashOuterVarStrict(ExprState *state, ExprContext *econtext,\n\t\t\t\t\t\t
      \  bool *isnull)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2931
      start: 2920
    functionDepth: 0
    functionLinenumber: 2920
    functionLinenumberEnd: 2931
    functionName: dispatch_compare_ptr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dispatch_compare_ptr(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2945,1
    - Dst: ExecInterpExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2945,1
    - Dst: qsort
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2961
      start: 2937
    functionDepth: 3
    functionLinenumber: 2937
    functionLinenumberEnd: 2961
    functionName: ExecInitInterpreter
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - qsort
    - ExecInterpExpr
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ExecInitInterpreter(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2979,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2984,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2989
      start: 2969
    functionDepth: 1
    functionLinenumber: 2969
    functionLinenumberEnd: 2989
    functionName: ExecEvalStepOp
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - bsearch
    linkageType: ''
    returnType: ExprEvalOp
    signature: ExprEvalOp ExecEvalStepOp(ExprState *state, ExprEvalStep *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_init_function_usage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3007,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3010,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3015
      start: 2999
    functionDepth: 1
    functionLinenumber: 2999
    functionLinenumberEnd: 3015
    functionName: ExecEvalFuncExprFusage
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - pgstat_init_function_usage
    - ExprEvalStep*::d::func::fn_addr
    - pgstat_end_function_usage
    linkageType: ''
    returnType: void
    signature: "void ExecEvalFuncExprFusage(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t
      \  ExprContext *econtext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_init_function_usage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3041,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3044,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3048,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3049
      start: 3020
    functionDepth: 1
    functionLinenumber: 3020
    functionLinenumberEnd: 3049
    functionName: ExecEvalFuncExprStrictFusage
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - pgstat_init_function_usage
    - ExprEvalStep*::d::func::fn_addr
    - pgstat_end_function_usage
    linkageType: ''
    returnType: void
    signature: "void ExecEvalFuncExprStrictFusage(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t\t\t
      ExprContext *econtext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3063,1
    - Dst: ExecSetParamPlan
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3066,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3068,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3072
      start: 3057
    functionDepth: 5
    functionLinenumber: 3057
    functionLinenumberEnd: 3072
    functionName: ExecEvalParamExec
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - Assert
    - ExecSetParamPlan
    - unlikely
    linkageType: ''
    returnType: void
    signature: void ExecEvalParamExec(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3085,1
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3093,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3097,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3097,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3100,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3101,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3102,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3103,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3105,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3106,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3113,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3115,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3116
      start: 3079
    functionDepth: 1
    functionLinenumber: 3079
    functionLinenumberEnd: 3116
    functionName: ExecEvalParamExtern
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - ParamListInfo::paramFetch
    - likely
    - unlikely
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void ExecEvalParamExtern(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3134
      start: 3122
    functionDepth: 1
    functionLinenumber: 3122
    functionLinenumberEnd: 3134
    functionName: ExecEvalParamSet
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void ExecEvalParamSet(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3164,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3167,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3181,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3181,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3184,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3195,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3197,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3199
      start: 3144
    functionDepth: 2
    functionLinenumber: 3144
    functionLinenumberEnd: 3199
    functionName: ExecEvalCoerceViaIOSafe
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - FunctionCallInvoke
    - Assert
    - PointerGetDatum
    - IsA
    - DatumGetCString
    linkageType: ''
    returnType: void
    signature: void ExecEvalCoerceViaIOSafe(ExprState *state, ExprEvalStep *op)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3207,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3219,1
    - Dst: GetSQLCurrentDate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3219,1
    - Dst: TimeTzADTPGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3223,1
    - Dst: GetSQLCurrentTime
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3223,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3227,1
    - Dst: GetSQLCurrentTimestamp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3227,1
    - Dst: TimeADTGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3231,1
    - Dst: GetSQLLocalTime
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3231,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3235,1
    - Dst: GetSQLLocalTimestamp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3235,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3240,1
    - Dst: current_user
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3241,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3245,1
    - Dst: session_user
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3246,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3250,1
    - Dst: current_database
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3251,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3255,1
    - Dst: current_schema
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3256,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3260
      start: 3204
    functionDepth: 2
    functionLinenumber: 3204
    functionLinenumberEnd: 3260
    functionName: ExecEvalSQLValueFunction
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - current_user
    - GetSQLLocalTimestamp
    - current_schema
    - InitFunctionCallInfoData
    - GetSQLCurrentDate
    - current_database
    - GetSQLCurrentTime
    - GetSQLCurrentTimestamp
    - LOCAL_FCINFO
    - GetSQLLocalTime
    - TimestampGetDatum
    - DateADTGetDatum
    - TimeTzADTPGetDatum
    - TimestampTzGetDatum
    - session_user
    - TimeADTGetDatum
    linkageType: ''
    returnType: void
    signature: void ExecEvalSQLValueFunction(ExprState *state, ExprEvalStep *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3277
      start: 3271
    functionDepth: 1
    functionLinenumber: 3271
    functionLinenumberEnd: 3277
    functionName: ExecEvalCurrentOfExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void ExecEvalCurrentOfExpr(ExprState *state, ExprEvalStep *op)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nextval_internal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3285,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3290,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3293,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3296,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3303
      start: 3282
    functionDepth: 1
    functionLinenumber: 3282
    functionLinenumberEnd: 3303
    functionName: ExecEvalNextValueExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - elog
    - Int32GetDatum
    - nextval_internal
    - Int64GetDatum
    - Int16GetDatum
    linkageType: ''
    returnType: void
    signature: void ExecEvalNextValueExpr(ExprState *state, ExprEvalStep *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalRowNullInt
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3312
      start: 3308
    functionDepth: 1
    functionLinenumber: 3308
    functionLinenumberEnd: 3312
    functionName: ExecEvalRowNull
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ExecEvalRowNullInt
    linkageType: ''
    returnType: void
    signature: void ExecEvalRowNull(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalRowNullInt
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3321
      start: 3317
    functionDepth: 1
    functionLinenumber: 3317
    functionLinenumberEnd: 3321
    functionName: ExecEvalRowNotNull
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ExecEvalRowNullInt
    linkageType: ''
    returnType: void
    signature: void ExecEvalRowNotNull(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3341,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3361,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3363,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3364,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3367,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3373,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3379,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3381,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3386,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3395,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3401,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 4
    argNames:
    - state
    - op
    - econtext
    - checkisnull
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3402
      start: 3324
    functionDepth: 3
    functionLinenumber: 3324
    functionLinenumberEnd: 3402
    functionName: ExecEvalRowNullInt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - HeapTupleHeaderGetTypMod
    - TupleDescCompactAttr
    - HeapTupleHeaderGetTypeId
    - heap_attisnull
    - get_cached_rowtype
    - BoolGetDatum
    - DatumGetHeapTupleHeader
    linkageType: ''
    returnType: void
    signature: "void ExecEvalRowNullInt(ExprState *state, ExprEvalStep *op,\n\t\t\t\t
      \  ExprContext *econtext, bool checkisnull)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: construct_md_array
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3434,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3460,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3461,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3462,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3463,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3483,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3486,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3487,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3488,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3489,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3490,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3492,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3492,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3493,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3495,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3509,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3510,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3511,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3514,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3515,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3515,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3516,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3517,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3517,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3525,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3525,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3527,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3527,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3529,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3531,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3535,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3536,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3537,1
    - Dst: ARR_DATA_OFFSET
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3537,1
    - Dst: AllocSizeIsValid
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3540,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3541,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3542,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3543,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3545,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3546,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3547,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3561,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3561,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3564,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3565,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3566,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3580,1
    - Dst: ArrayCheckBounds
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3581,1
    - Dst: ARR_OVERHEAD_WITHNULLS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3585,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3591,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3594,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3595,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3599,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3599,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3600,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3600,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3602,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3606,1
    - Dst: array_bitmap_copy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3609,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3609,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3616,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 91
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3617
      start: 3410
    functionDepth: 2
    functionLinenumber: 3410
    functionLinenumberEnd: 3617
    functionName: ExecEvalArrayExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ARR_NULLBITMAP
    - errcode
    - ARR_OVERHEAD_WITHNULLS
    - ARR_LBOUND
    - AllocSizeIsValid
    - ARR_NDIM
    - SET_VARSIZE
    - palloc
    - construct_md_array
    - memcpy
    - errmsg
    - PointerGetDatum
    - ARR_SIZE
    - memcmp
    - ARR_DIMS
    - ArrayCheckBounds
    - ARR_OVERHEAD_NONULLS
    - ereport
    - ARR_HASNULL
    - ARR_DATA_PTR
    - DatumGetArrayTypeP
    - ArrayGetNItems
    - ARR_DATA_OFFSET
    - format_type_be
    - construct_empty_array
    - array_bitmap_copy
    - palloc0
    - ARR_ELEMTYPE
    - errdetail
    linkageType: ''
    returnType: void
    signature: void ExecEvalArrayExpr(ExprState *state, ExprEvalStep *op)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypePCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3642,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3644,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3645,1
    - Dst: array_map
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3652,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3657
      start: 3624
    functionDepth: 1
    functionLinenumber: 3624
    functionLinenumberEnd: 3657
    functionName: ExecEvalArrayCoerce
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ARR_ELEMTYPE
    - array_map
    - DatumGetArrayTypePCopy
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void ExecEvalArrayCoerce(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3671,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3677
      start: 3665
    functionDepth: 6
    functionLinenumber: 3665
    functionLinenumberEnd: 3677
    functionName: ExecEvalRow
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - heap_form_tuple
    - HeapTupleGetDatum
    linkageType: ''
    returnType: void
    signature: void ExecEvalRow(ExprState *state, ExprEvalStep *op)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3694,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3695,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3721,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3721,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3731
      start: 3685
    functionDepth: 1
    functionLinenumber: 3685
    functionLinenumberEnd: 3731
    functionName: ExecEvalMinMax
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - Assert
    - DatumGetInt32
    - FunctionCallInvoke
    linkageType: ''
    returnType: void
    signature: void ExecEvalMinMax(ExprState *state, ExprEvalStep *op)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3757,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3757,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3759,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3761,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3764,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3772,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3775,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3777,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3789,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3790,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3791,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3792,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3793,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3794,1
    - Dst: expanded_record_get_field
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3797,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3803,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3805,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3806,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3809,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3818,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3821,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3823,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3835,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3836,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3837,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3838,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3839,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3840,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3843,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3847,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3852
      start: 3738
    functionDepth: 4
    functionLinenumber: 3738
    functionLinenumberEnd: 3852
    functionName: ExecEvalFieldSelect
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - expanded_record_get_tupdesc
    - errcode
    - elog
    - Assert
    - HeapTupleHeaderGetTypMod
    - errmsg
    - get_cached_rowtype
    - DatumGetHeapTupleHeader
    - VARATT_IS_EXTERNAL_EXPANDED
    - heap_getattr
    - ereport
    - expanded_record_get_field
    - HeapTupleHeaderGetTypeId
    - DatumGetEOHP
    - TupleDescAttr
    - format_type_be
    - errdetail
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ExecEvalFieldSelect(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3869,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3883,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3884,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3885,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3895,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3899,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3900,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3903,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3907
      start: 3863
    functionDepth: 6
    functionLinenumber: 3863
    functionLinenumberEnd: 3907
    functionName: ExecEvalFieldStoreDeForm
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - elog
    - HeapTupleHeaderGetDatumLength
    - heap_deform_tuple
    - unlikely
    - memset
    - ItemPointerSetInvalid
    - get_cached_rowtype
    - DatumGetHeapTupleHeader
    linkageType: ''
    returnType: void
    signature: void ExecEvalFieldStoreDeForm(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3920,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3923,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3929
      start: 3913
    functionDepth: 6
    functionLinenumber: 3913
    functionLinenumberEnd: 3929
    functionName: ExecEvalFieldStoreForm
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - get_cached_rowtype
    - heap_form_tuple
    - HeapTupleGetDatum
    linkageType: ''
    returnType: void
    signature: void ExecEvalFieldStoreForm(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3953,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3960,1
    - Dst: IncrTupleDescRefCount
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3963,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3964,1
    - Dst: IncrTupleDescRefCount
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3967,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3975,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3975,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3976,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3984,1
    - Dst: convert_tuples_by_name
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3987,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3989,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3993,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3999,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4001,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4015,1
    - Dst: DecrTupleDescRefCount
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4018,1
    - Dst: DecrTupleDescRefCount
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4019,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4020
      start: 3937
    functionDepth: 7
    functionLinenumber: 3937
    functionLinenumberEnd: 4020
    functionName: ExecEvalConvertRowtype
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - IncrTupleDescRefCount
    - HeapTupleHeaderGetDatumLength
    - convert_tuples_by_name
    - Assert
    - HeapTupleHeaderGetTypeId
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - heap_copy_tuple_as_datum
    - execute_attr_map_tuple
    - get_cached_rowtype
    - DatumGetHeapTupleHeader
    - DecrTupleDescRefCount
    linkageType: ''
    returnType: void
    signature: void ExecEvalConvertRowtype(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4051,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4059,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4059,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4059,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4062,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4081,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4083,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4083,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4087,1
    - Dst: ExecEvalArrayCompareInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4090,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4101
      start: 4032
    functionDepth: 1
    functionLinenumber: 4032
    functionLinenumberEnd: 4101
    functionName: ExecEvalScalarArrayOp
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - get_typlenbyvalalign
    - ARR_ELEMTYPE
    - ExecEvalArrayCompareInternal
    - ARR_NDIM
    - DatumGetArrayTypeP
    - BoolGetDatum
    - ArrayGetNItems
    - ARR_DIMS
    linkageType: ''
    returnType: void
    signature: void ExecEvalScalarArrayOp(ExprState *state, ExprEvalStep *op)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: typalign_to_alignby
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4115,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4122,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4122,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4122,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4125,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4129,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4130,1
    - Dst: fetch_att
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4146,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4147,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4148,1
    - Dst: FunctionCallInfo::flinfo::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4162,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4170,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4172,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4179,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4181,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 8
    argNames:
    - fcinfo
    - arr
    - typlen
    - typbyval
    - typalign
    - useOr
    - result
    - resultnull
    argTypes:
    - FunctionCallInfo
    - ArrayType*
    - int16
    - bool
    - char
    - bool
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4198
      start: 4110
    functionDepth: 2
    functionLinenumber: 4110
    functionLinenumberEnd: 4198
    functionName: ExecEvalArrayCompareInternal
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - att_addlength_pointer
    - ARR_NULLBITMAP
    - FunctionCallInfo::flinfo::fn_addr
    - typalign_to_alignby
    - ARR_DATA_PTR
    - att_nominal_alignby
    - ARR_NDIM
    - fetch_att
    - BoolGetDatum
    - ArrayGetNItems
    - ARR_DIMS
    - DatumGetBool
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline ExecEvalArrayCompareInternal(FunctionCallInfo
      fcinfo, ArrayType *arr,\n\t\t\t\t\t\t\t int16 typlen, bool typbyval, char typalign,\n\t\t\t\t\t\t\t
      bool useOr, Datum *result, bool *resultnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ScalarArrayOpExprHashTable*::hash_finfo::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4216,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tb
    - key
    argTypes:
    - struct saophash_hash*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4219
      start: 4206
    functionDepth: 1
    functionLinenumber: 4206
    functionLinenumberEnd: 4219
    functionName: saop_element_hash
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ScalarArrayOpExprHashTable*::hash_finfo::fn_addr
    - DatumGetUInt32
    linkageType: ''
    returnType: uint32
    signature: uint32 saop_element_hash(struct saophash_hash *tb, Datum key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ScalarArrayOpExprHashTable*::op::d::hashedscalararrayop::finfo::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4238,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - tb
    - key1
    - key2
    argTypes:
    - struct saophash_hash*
    - Datum
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4241
      start: 4225
    functionDepth: 1
    functionLinenumber: 4225
    functionLinenumberEnd: 4241
    functionName: saop_hash_element_match
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ScalarArrayOpExprHashTable*::op::d::hashedscalararrayop::finfo::fn_addr
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool saop_hash_element_match(struct saophash_hash *tb, Datum key1,
      Datum key2)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4270,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4300,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4301,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4301,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4301,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4303,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4303,1
    - Dst: typalign_to_alignby
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4307,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4309,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4312,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4313,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4317,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4318,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4320,1
    - Dst: saophash_create
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4333,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4336,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4338,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4339,1
    - Dst: fetch_att
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4352,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4353,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4354,1
    - Dst: saophash_insert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4356,1
    - Dst: ExecEvalArrayCompareInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4392,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4413,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4416,1
    - Dst: saophash_lookup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4422,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4426,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4428,1
    - Dst: ExprEvalStep*::d::hashedscalararrayop::finfo::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4464,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4472,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4472,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 81
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4478
      start: 4256
    functionDepth: 3
    functionLinenumber: 4256
    functionLinenumberEnd: 4478
    functionName: ExecEvalHashedScalarArrayOp
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ExprEvalStep*::d::hashedscalararrayop::finfo::fn_addr
    - fmgr_info_set_expr
    - ARR_NULLBITMAP
    - ExecEvalArrayCompareInternal
    - ARR_NDIM
    - fetch_att
    - saophash_insert
    - SizeForFunctionCallInfo
    - DatumGetBool
    - get_typlenbyvalalign
    - Assert
    - att_nominal_alignby
    - fmgr_info
    - ARR_DIMS
    - att_addlength_pointer
    - InitFunctionCallInfoData
    - typalign_to_alignby
    - ARR_DATA_PTR
    - DatumGetArrayTypeP
    - ArrayGetNItems
    - saophash_create
    - palloc0
    - saophash_lookup
    - MemoryContextSwitchTo
    - ARR_ELEMTYPE
    - BoolGetDatum
    linkageType: ''
    returnType: void
    signature: void ExecEvalHashedScalarArrayOp(ExprState *state, ExprEvalStep *op,
      ExprContext *econtext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: errsave
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4487,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4488,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4489,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4490,1
    - Dst: errdatatype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4492
      start: 4483
    functionDepth: 1
    functionLinenumber: 4483
    functionLinenumberEnd: 4492
    functionName: ExecEvalConstraintNotNull
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - errdatatype
    - format_type_be
    - errcode
    - errsave
    - errmsg
    linkageType: ''
    returnType: void
    signature: void ExecEvalConstraintNotNull(ExprState *state, ExprEvalStep *op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4501,1
    - Dst: errsave
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4502,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4503,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4504,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4505,1
    - Dst: errdomainconstraint
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4509
      start: 4497
    functionDepth: 1
    functionLinenumber: 4497
    functionLinenumberEnd: 4509
    functionName: ExecEvalConstraintCheck
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - format_type_be
    - errcode
    - errsave
    - errdomainconstraint
    - errmsg
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void ExecEvalConstraintCheck(ExprState *state, ExprEvalStep *op)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4534,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4537,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4537,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4542,1
    - Dst: xmlconcat
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4542,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4557,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4560,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4562,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4563,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4563,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4568,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4570,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4571,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4582,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4583,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4586,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4591,1
    - Dst: xmlelement
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4607,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4607,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4612,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4617,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4619,1
    - Dst: xmlparse
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4619,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4632,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4632,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4640,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4648,1
    - Dst: xmlpi
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4664,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4664,1
    - Dst: DatumGetXmlP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4668,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4673,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4675,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4676,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4678,1
    - Dst: xmlroot
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4691,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4691,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4698,1
    - Dst: xmltotext_with_options
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4698,1
    - Dst: DatumGetXmlP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4698,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4711,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4711,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4718,1
    - Dst: xml_is_document
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4718,1
    - Dst: DatumGetXmlP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4718,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4724,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 101
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4727
      start: 4517
    functionDepth: 6
    functionLinenumber: 4517
    functionLinenumberEnd: 4727
    functionName: ExecEvalXmlExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - exprType
    - map_sql_value_to_xml_value
    - cstring_to_text_with_len
    - strVal
    - DatumGetBool
    - elog
    - pfree
    - Assert
    - xmlparse
    - xmlelement
    - PointerGetDatum
    - list_length
    - DatumGetXmlP
    - xmltotext_with_options
    - xmlpi
    - DatumGetTextPP
    - lappend
    - initStringInfo
    - lfirst
    - xml_is_document
    - DatumGetPointer
    - appendStringInfo
    - DatumGetInt32
    - xmlconcat
    - BoolGetDatum
    - xmlroot
    - forboth
    linkageType: ''
    returnType: void
    signature: void ExecEvalXmlExpr(ExprState *state, ExprEvalStep *op)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: datum_to_jsonb
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4774,1
    - Dst: datum_to_json
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4776,1
    - Dst: DatumGetTextP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4789,1
    - Dst: jsonb_from_text
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4792,1
    - Dst: json_validate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4795,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4801,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4805
      start: 4732
    functionDepth: 1
    functionLinenumber: 4732
    functionLinenumberEnd: 4805
    functionName: ExecEvalJsonConstructor
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - elog
    - jsonb_from_text
    - DatumGetTextP
    - datum_to_json
    - datum_to_jsonb
    - json_validate
    linkageType: ''
    returnType: void
    signature: "void ExecEvalJsonConstructor(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t\tExprContext
      *econtext)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4820,1
    - Dst: DatumGetTextP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4826,1
    - Dst: json_get_first_token
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4832,1
    - Dst: json_validate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4858,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4866,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4871,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4874,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4874,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4877,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4877,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4890,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 51
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4891
      start: 4810
    functionDepth: 2
    functionLinenumber: 4810
    functionLinenumberEnd: 4891
    functionName: ExecEvalJsonIsPredicate
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - json_get_first_token
    - DatumGetJsonbP
    - JB_ROOT_IS_ARRAY
    - DatumGetTextP
    - JB_ROOT_IS_OBJECT
    - json_validate
    - BoolGetDatum
    - JB_ROOT_IS_SCALAR
    linkageType: ''
    returnType: void
    signature: void ExecEvalJsonIsPredicate(ExprState *state, ExprEvalStep *op)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetJsonPathP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4923,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4926,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4927,1
    - Dst: JsonPathExists
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4941,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4948,1
    - Dst: JsonPathQuery
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4954,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4959,1
    - Dst: JsonPathValue
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4964,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4980,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4980,1
    - Dst: JsonbPGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4981,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4981,1
    - Dst: JsonbPGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4985,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4985,1
    - Dst: ExecGetJsonValueItemString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4990,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4997,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4998,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5007,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5020,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5022,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5023,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5024,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5033,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5034,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5055,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5065,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5069,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5075,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5076,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5077,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5080,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5081,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5082,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5091,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5094,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 90
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5103
      start: 4908
    functionDepth: 2
    functionLinenumber: 4908
    functionLinenumberEnd: 5103
    functionName: ExecEvalJsonExprPath
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - errcode
    - elog
    - Assert
    - PointerGetDatum
    - errmsg
    - JsonPathQuery
    - JsonbPGetDatum
    - DatumGetCString
    - ExecGetJsonValueItemString
    - FunctionCallInvoke
    - CStringGetDatum
    - JsonPathExists
    - ereport
    - memset
    - JsonPathValue
    - JsonbValueToJsonb
    - DatumGetJsonPathP
    - DirectFunctionCall1
    - BoolGetDatum
    - DatumGetPointer
    linkageType: ''
    returnType: int
    signature: "int ExecEvalJsonExprPath(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t
      ExprContext *econtext)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5124,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5126,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5132,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5132,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5133,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5136,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5136,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5137,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5143,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5143,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5146,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5146,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5149,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5149,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5152,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5152,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5155,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5155,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5158,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5166,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5166,1
    - Dst: JsonbPGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5167,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5167,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5170,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 2
    argNames:
    - item
    - resnull
    argTypes:
    - JsonbValue*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5176
      start: 5110
    functionDepth: 2
    functionLinenumber: 5110
    functionLinenumberEnd: 5176
    functionName: ExecGetJsonValueItemString
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - elog
    - NumericGetDatum
    - memcpy
    - JsonbValueToJsonb
    - Assert
    - DirectFunctionCall1
    - palloc
    - BoolGetDatum
    - JsonbPGetDatum
    - DatumGetCString
    linkageType: ''
    returnType: char
    signature: 'char *

      ExecGetJsonValueItemString(JsonbValue *item, bool *resnull)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: domain_check_safe
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5207,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5217,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5221,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5222,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5223,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5224,1
    - Dst: json_populate_type
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5227,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5235
      start: 5185
    functionDepth: 2
    functionLinenumber: 5185
    functionLinenumberEnd: 5235
    functionName: ExecEvalJsonCoercion
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - domain_check_safe
    - CStringGetDatum
    - DirectFunctionCall1
    - json_populate_type
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: "void ExecEvalJsonCoercion(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t
      ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - behavior
    argTypes:
    - JsonBehavior*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5258
      start: 5237
    functionDepth: 0
    functionLinenumber: 5237
    functionLinenumberEnd: 5258
    functionName: GetJsonBehaviorValueString
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      GetJsonBehaviorValueString(JsonBehavior *behavior)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5270,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5279,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5280,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5282,1
    - Dst: GetJsonBehaviorValueString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5284,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5285,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5286,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5287,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5288,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5290,1
    - Dst: GetJsonBehaviorValueString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5292,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5293,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5298,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5307
      start: 5265
    functionDepth: 1
    functionLinenumber: 5265
    functionLinenumberEnd: 5307
    functionName: ExecEvalJsonCoercionFinish
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - errcode
    - ereport
    - GetJsonBehaviorValueString
    - errmsg
    - errdetail
    - BoolGetDatum
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void ExecEvalJsonCoercionFinish(ExprState *state, ExprEvalStep *op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5321,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5326,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5328,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5332,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5338
      start: 5318
    functionDepth: 3
    functionLinenumber: 5318
    functionLinenumberEnd: 5338
    functionName: ExecEvalGroupingFunc
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - foreach
    - lfirst_int
    - Int32GetDatum
    - castNode
    - bms_is_member
    linkageType: ''
    returnType: void
    signature: void ExecEvalGroupingFunc(ExprState *state, ExprEvalStep *op)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5349,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5353,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5359,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5359,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5363,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5363,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5367,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5367,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5371,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5374,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5377
      start: 5345
    functionDepth: 1
    functionLinenumber: 5345
    functionLinenumberEnd: 5377
    functionName: ExecEvalMergeSupportFunc
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - elog
    - castNode
    - cstring_to_text_with_len
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: "void ExecEvalMergeSupportFunc(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t\t
      ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5388,1
    - Dst: ExecSubPlan
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5391
      start: 5382
    functionDepth: 2
    functionLinenumber: 5382
    functionLinenumberEnd: 5391
    functionName: ExecEvalSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ExecSubPlan
    - check_stack_depth
    linkageType: ''
    returnType: void
    signature: void ExecEvalSubPlan(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5410,1
    - Dst: ExecFilterJunk
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5467,1
    - Dst: lookup_rowtype_tupdesc_domain
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5505,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5511,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5512,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5513,1
    - Dst: errdetail_plural
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5514,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5522,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5523,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5528,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5530,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5531,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5532,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5534,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5546,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5547,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5548,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5550,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5559,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5560,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5561,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5588,1
    - Dst: ExecTypeSetColNames
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5592,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5597,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5614,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5618,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5619,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5627,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5628,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5629,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5630,1
    - Dst: toast_build_flattened_tuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5640,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5651,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5652,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5654,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 86
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5656
      start: 5399
    functionDepth: 5
    functionLinenumber: 5399
    functionLinenumberEnd: 5656
    functionName: ExecEvalWholeRowVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ReleaseTupleDesc
    - errcode
    - toast_build_flattened_tuple
    - errdetail_plural
    - ExecTypeSetColNames
    - Assert
    - CreateTupleDescCopy
    - HeapTupleHeaderSetTypMod
    - errmsg
    - PointerGetDatum
    - lookup_rowtype_tupdesc_domain
    - ereport
    - ExecFilterJunk
    - BlessTupleDesc
    - TupleDescCompactAttr
    - TupleDescAttr
    - slot_getallattrs
    - format_type_be
    - MemoryContextSwitchTo
    - exec_rt_fetch
    - errdetail
    - HeapTupleHeaderSetTypeId
    linkageType: ''
    returnType: void
    signature: void ExecEvalWholeRowVar(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5676,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5681,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5682,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 4
    argNames:
    - state
    - op
    - econtext
    - slot
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5683
      start: 5658
    functionDepth: 2
    functionLinenumber: 5658
    functionLinenumberEnd: 5683
    functionName: ExecEvalSysVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 7
    functionsReached:
    - slot_getsysattr
    - unlikely
    - elog
    linkageType: ''
    returnType: void
    signature: "void ExecEvalSysVar(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext,\n\t\t\t   TupleTableSlot *slot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5702,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5703,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - aggstate
    - pertrans
    - pergroup
    - aggcontext
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5709
      start: 5689
    functionDepth: 1
    functionLinenumber: 5689
    functionLinenumberEnd: 5709
    functionName: ExecAggInitGroup
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 4
    functionsReached:
    - datumCopy
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: "void ExecAggInitGroup(AggState *aggstate, AggStatePerTrans pertrans,
      AggStatePerGroup pergroup,\n\t\t\t\t ExprContext *aggcontext)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5747,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5751,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5752,1
    - Dst: MemoryContextGetParent
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5755,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5755,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5758,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5774,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5777,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5779,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5779,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 6
    argNames:
    - aggstate
    - pertrans
    - newValue
    - newValueIsNull
    - oldValue
    - oldValueIsNull
    argTypes:
    - AggState*
    - AggStatePerTrans
    - Datum
    - bool
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5783
      start: 5742
    functionDepth: 1
    functionLinenumber: 5742
    functionLinenumberEnd: 5783
    functionName: ExecAggCopyTransValue
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - Assert
    - pfree
    - datumCopy
    - DeleteExpandedObject
    - DatumIsReadWriteExpandedObject
    - MemoryContextSwitchTo
    - DatumGetEOHP
    - MemoryContextGetParent
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecAggCopyTransValue(AggState *aggstate, AggStatePerTrans pertrans,\n\t\t\t\t\t
      \ Datum newValue, bool newValueIsNull,\n\t\t\t\t\t  Datum oldValue, bool oldValueIsNull)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5799,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5799,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5805,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5805,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5812,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5814,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5817,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - aggstate
    - pertrans
    argTypes:
    - AggState*
    - AggStatePerTrans
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5826
      start: 5791
    functionDepth: 1
    functionLinenumber: 5791
    functionLinenumberEnd: 5826
    functionName: ExecEvalPreOrderedDistinctSingle
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - pfree
    - datumCopy
    - MemoryContextSwitchTo
    - FunctionCall2Coll
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool ExecEvalPreOrderedDistinctSingle(AggState *aggstate, AggStatePerTrans
      pertrans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5848,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5850,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5860,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5863,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5866,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - aggstate
    - pertrans
    argTypes:
    - AggState*
    - AggStatePerTrans
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5876
      start: 5834
    functionDepth: 3
    functionLinenumber: 5834
    functionLinenumberEnd: 5876
    functionName: ExecEvalPreOrderedDistinctMulti
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ExecCopySlot
    - ExecStoreVirtualTuple
    - ExecQual
    - ExecClearTuple
    linkageType: ''
    returnType: bool
    signature: bool ExecEvalPreOrderedDistinctMulti(AggState *aggstate, AggStatePerTrans
      pertrans)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_putdatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5890
      start: 5881
    functionDepth: 1
    functionLinenumber: 5881
    functionLinenumberEnd: 5890
    functionName: ExecEvalAggOrderedTransDatum
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - tuplesort_putdatum
    linkageType: ''
    returnType: void
    signature: "void ExecEvalAggOrderedTransDatum(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t\t\t
      ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5902,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5904,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5906
      start: 5895
    functionDepth: 2
    functionLinenumber: 5895
    functionLinenumberEnd: 5906
    functionName: ExecEvalAggOrderedTransTuple
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - tuplesort_puttupleslot
    - ExecStoreVirtualTuple
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: "void ExecEvalAggOrderedTransTuple(ExprState *state, ExprEvalStep *op,\n\t\t\t\t\t\t\t
      ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5926,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5932,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 5
    argNames:
    - aggstate
    - pertrans
    - pergroup
    - aggcontext
    - setno
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    - ExprContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5938
      start: 5909
    functionDepth: 1
    functionLinenumber: 5909
    functionLinenumberEnd: 5938
    functionName: ExecAggPlainTransByVal
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 5
    functionsReached:
    - FunctionCallInvoke
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline ExecAggPlainTransByVal(AggState *aggstate,
      AggStatePerTrans pertrans,\n\t\t\t\t\t   AggStatePerGroup pergroup,\n\t\t\t\t\t
      \  ExprContext *aggcontext, int setno)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5958,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5964,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5980,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5980,1
    - Dst: ExecAggCopyTransValue
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5981,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5989,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 5
    argNames:
    - aggstate
    - pertrans
    - pergroup
    - aggcontext
    - setno
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    - ExprContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5990
      start: 5941
    functionDepth: 2
    functionLinenumber: 5941
    functionLinenumberEnd: 5990
    functionName: ExecAggPlainTransByRef
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 5
    functionsReached:
    - FunctionCallInvoke
    - ExecAggCopyTransValue
    - DatumGetPointer
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline ExecAggPlainTransByRef(AggState *aggstate,
      AggStatePerTrans pertrans,\n\t\t\t\t\t   AggStatePerGroup pergroup,\n\t\t\t\t\t
      \  ExprContext *aggcontext, int setno)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partprune.c:250,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:277,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:279,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/partitioning/partprune.c:280,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:283,1
    - Dst: add_part_relids
      Src: /src/postgres/src/backend/partitioning/partprune.c:295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:298,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:312,1
    - Dst: make_partitionedrel_pruneinfo
      Src: /src/postgres/src/backend/partitioning/partprune.c:316,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:325,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/partitioning/partprune.c:326,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partprune.c:331,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:341,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:342,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:352,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:352,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:357,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:357,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:358,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:365,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:367,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 4
    argNames:
    - root
    - parentrel
    - subpaths
    - prunequal
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 224
    functionDepth: 6
    functionLinenumber: 224
    functionLinenumberEnd: 368
    functionName: make_partition_pruneinfo
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - bms_del_members
    - palloc0_array
    - make_partitionedrel_pruneinfo
    - add_part_relids
    - Assert
    - pfree
    - bms_add_range
    - IS_PARTITIONED_REL
    - lappend
    - makeNode
    - bms_copy
    - bms_num_members
    - lfirst
    - find_base_rel
    - list_length
    - bms_join
    - bms_add_member
    linkageType: ''
    returnType: int
    signature: "int make_partition_pruneinfo(PlannerInfo *root, RelOptInfo *parentrel,\n\t\t\t\t\t\t
      List *subpaths,\n\t\t\t\t\t\t List *prunequal)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:277,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:279,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/partitioning/partprune.c:280,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:283,1
    - Dst: add_part_relids
      Src: /src/postgres/src/backend/partitioning/partprune.c:295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:298,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 253
    functionDepth: 3
    functionLinenumber: 253
    functionLinenumberEnd: 303
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 443
    functionsReached:
    - add_part_relids
    - Assert
    - IS_PARTITIONED_REL
    - lfirst
    - find_base_rel
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc, subpaths)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:312,1
    - Dst: make_partitionedrel_pruneinfo
      Src: /src/postgres/src/backend/partitioning/partprune.c:316,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:325,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/partitioning/partprune.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 310
    functionDepth: 6
    functionLinenumber: 310
    functionLinenumberEnd: 329
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 443
    functionsReached:
    - lappend
    - lfirst
    - bms_join
    - make_partitionedrel_pruneinfo
    linkageType: ''
    returnType: void
    signature: void foreach(lc, allpartrelids)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:406,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:407,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:412,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:413,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:418,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:419,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - allpartrelids
    - partrelids
    argTypes:
    - List*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 399
    functionDepth: 6
    functionLinenumber: 399
    functionLinenumberEnd: 425
    functionName: add_part_relids
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - Assert
    - lappend
    - bms_add_members
    - lfirst
    - bms_next_member
    linkageType: ''
    returnType: List
    signature: 'List *

      add_part_relids(List *allpartrelids, Bitmapset *partrelids)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:412,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:413,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:418,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 410
    functionDepth: 4
    functionLinenumber: 410
    functionLinenumberEnd: 422
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 443
    functionsReached:
    - bms_next_member
    - bms_add_members
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, allpartrelids)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partprune.c:469,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:473,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:491,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:511,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/partitioning/partprune.c:514,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/partitioning/partprune.c:518,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partprune.c:523,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/partitioning/partprune.c:536,1
    - Dst: gen_partprune_steps
      Src: /src/postgres/src/backend/partitioning/partprune.c:549,1
    - Dst: gen_partprune_steps
      Src: /src/postgres/src/backend/partitioning/partprune.c:583,1
    - Dst: get_partkey_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:599,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:601,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:615,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:622,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partprune.c:628,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:642,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:643,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:657,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:658,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:659,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:660,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:661,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:662,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:666,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:672,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/partitioning/partprune.c:676,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:690,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:701,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:712,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:712,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partprune.c:723,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 83
    argCount: 6
    argNames:
    - root
    - parentrel
    - prunequal
    - partrelids
    - relid_subplan_map
    - matchedsubplans
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - Bitmapset*
    - int*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 445
    functionDepth: 6
    functionLinenumber: 445
    functionLinenumberEnd: 728
    functionName: make_partitionedrel_pruneinfo
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - planner_rt_fetch
    - gen_partprune_steps
    - find_appinfos_by_relids
    - bms_add_member
    - Assert
    - pfree
    - find_base_rel
    - bms_equal
    - bms_next_member
    - lappend
    - lfirst
    - memset
    - adjust_appendrel_attrs
    - adjust_appendrel_attrs_multilevel
    - palloc0_array
    - palloc0
    - get_partkey_exec_paramids
    - makeNode
    - palloc
    - bms_is_empty
    linkageType: ''
    returnType: List
    signature: "List *\nmake_partitionedrel_pruneinfo(PlannerInfo *root, RelOptInfo
      *parentrel,\n\t\t\t\t\t\t\t  List *prunequal,\n\t\t\t\t\t\t\t  Bitmapset *partrelids,\n\t\t\t\t\t\t\t
      \ int *relid_subplan_map,\n\t\t\t\t\t\t\t  Bitmapset **matchedsubplans)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:642,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:643,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:657,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:658,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:659,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:660,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:661,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:662,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:666,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:672,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/partitioning/partprune.c:676,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:690,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:701,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:712,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:712,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 640
    functionDepth: 3
    functionLinenumber: 640
    functionLinenumberEnd: 721
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 443
    functionsReached:
    - planner_rt_fetch
    - Assert
    - palloc0
    - lfirst
    - memset
    - find_base_rel
    - palloc
    - bms_next_member
    - bms_is_empty
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pinfolist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:748,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:759,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:762,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:766,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - rel
    - clauses
    - target
    - context
    argTypes:
    - RelOptInfo*
    - List*
    - PartClauseTarget
    - GeneratePruningStepsContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 743
    functionDepth: 5
    functionLinenumber: 743
    functionLinenumberEnd: 767
    functionName: gen_partprune_steps
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - list_concat_copy
    - memset
    - partition_bound_has_default
    - gen_partprune_steps_internal
    linkageType: ''
    returnType: void
    signature: "void gen_partprune_steps(RelOptInfo *rel, List *clauses, PartClauseTarget
      target,\n\t\t\t\t\tGeneratePruningStepsContext *context)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:787,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:798,1
    - Dst: gen_partprune_steps
      Src: /src/postgres/src/backend/partitioning/partprune.c:805,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:813,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partprune.c:822,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:823,1
    - Dst: get_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partprune.c:832,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - rel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 779
    functionDepth: 6
    functionLinenumber: 779
    functionLinenumberEnd: 833
    functionName: prune_append_rel_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - palloc0_array
    - bms_add_range
    - Assert
    - gen_partprune_steps
    - get_matching_partitions
    - list_length
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      prune_append_rel_partitions(RelOptInfo *rel)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:849,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:859,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:860,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:871,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:874,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/partitioning/partprune.c:876,1
    - Dst: perform_pruning_base_step
      Src: /src/postgres/src/backend/partitioning/partprune.c:880,1
    - Dst: perform_pruning_combine_step
      Src: /src/postgres/src/backend/partitioning/partprune.c:886,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:892,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/partitioning/partprune.c:893,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:903,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:907,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:911,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:927,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:931,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:938,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partprune.c:938,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:939,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:943,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:945,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:945,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:946,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 2
    argNames:
    - context
    - pruning_steps
    argTypes:
    - PartitionPruneContext*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 845
    functionDepth: 3
    functionLinenumber: 845
    functionLinenumberEnd: 950
    functionName: get_matching_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - elog
    - partition_bound_has_default
    - bms_add_range
    - Assert
    - palloc0
    - perform_pruning_base_step
    - perform_pruning_combine_step
    - lfirst
    - bms_next_member
    - list_length
    - bms_add_member
    - nodeTag
    - partition_bound_accepts_nulls
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      get_matching_partitions(PartitionPruneContext *context, List *pruning_steps)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:874,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/partitioning/partprune.c:876,1
    - Dst: perform_pruning_base_step
      Src: /src/postgres/src/backend/partitioning/partprune.c:880,1
    - Dst: perform_pruning_combine_step
      Src: /src/postgres/src/backend/partitioning/partprune.c:886,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:892,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/partitioning/partprune.c:893,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 872
    functionDepth: 1
    functionLinenumber: 872
    functionLinenumberEnd: 895
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 443
    functionsReached:
    - elog
    - perform_pruning_base_step
    - perform_pruning_combine_step
    - lfirst
    - nodeTag
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pruning_steps)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:1013,1
    - Dst: predicate_refuted_by
      Src: /src/postgres/src/backend/partitioning/partprune.c:1014,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:1020,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1023,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1027,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1031,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/partitioning/partprune.c:1033,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1040,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/partitioning/partprune.c:1050,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1060,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:1066,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1068,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1072,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:1073,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partprune.c:1095,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:1097,1
    - Dst: gen_prune_step_combine
      Src: /src/postgres/src/backend/partitioning/partprune.c:1110,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:1112,1
    - Dst: gen_prune_step_combine
      Src: /src/postgres/src/backend/partitioning/partprune.c:1127,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1129,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/partitioning/partprune.c:1133,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1143,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1157,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partprune.c:1157,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partprune.c:1175,1
    - Dst: match_clause_to_partition_key
      Src: /src/postgres/src/backend/partitioning/partprune.c:1180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1186,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1192,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1198,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1208,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1214,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1219,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1229,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:1230,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:1278,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:1282,1
    - Dst: gen_prune_step_op
      Src: /src/postgres/src/backend/partitioning/partprune.c:1287,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1289,1
    - Dst: gen_prune_steps_from_opexps
      Src: /src/postgres/src/backend/partitioning/partprune.c:1296,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:1297,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:1299,1
    - Dst: gen_prune_step_op
      Src: /src/postgres/src/backend/partitioning/partprune.c:1304,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1306,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:1314,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1321,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:1323,1
    - Dst: gen_prune_step_combine
      Src: /src/postgres/src/backend/partitioning/partprune.c:1326,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1328,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 109
    argCount: 2
    argNames:
    - context
    - clauses
    argTypes:
    - GeneratePruningStepsContext*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 989
    functionDepth: 6
    functionLinenumber: 989
    functionLinenumberEnd: 1332
    functionName: gen_partprune_steps_internal
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - lappend_int
    - predicate_refuted_by
    - gen_prune_step_op
    - llast
    - list_concat
    - bms_add_member
    - DatumGetBool
    - foreach
    - Assert
    - linitial
    - bms_is_member
    - gen_prune_steps_from_opexps
    - gen_prune_step_combine
    - match_clause_to_partition_key
    - list_length
    - lappend
    - bms_is_empty
    - bms_num_members
    - gen_partprune_steps_internal
    - lfirst
    - memset
    - is_andclause
    - is_orclause
    - list_make1
    - partition_bound_has_default
    - IsA
    linkageType: ''
    returnType: List
    signature: "List *\ngen_partprune_steps_internal(GeneratePruningStepsContext *context,\n\t\t\t\t\t\t\t
      List *clauses)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1023,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1027,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1031,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/partitioning/partprune.c:1033,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1040,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/partitioning/partprune.c:1050,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1060,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:1066,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1068,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1072,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:1073,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partprune.c:1095,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:1097,1
    - Dst: gen_prune_step_combine
      Src: /src/postgres/src/backend/partitioning/partprune.c:1110,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:1112,1
    - Dst: gen_prune_step_combine
      Src: /src/postgres/src/backend/partitioning/partprune.c:1127,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1129,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/partitioning/partprune.c:1133,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1143,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1157,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partprune.c:1157,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partprune.c:1175,1
    - Dst: match_clause_to_partition_key
      Src: /src/postgres/src/backend/partitioning/partprune.c:1180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1186,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1192,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1198,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1208,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1214,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1219,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1229,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:1230,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 84
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1021
    functionDepth: 7
    functionLinenumber: 1021
    functionLinenumberEnd: 1254
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 445
    functionsReached:
    - lappend_int
    - foreach
    - Assert
    - linitial
    - lappend
    - bms_is_member
    - gen_partprune_steps_internal
    - gen_prune_step_combine
    - lfirst
    - llast
    - is_andclause
    - list_concat
    - is_orclause
    - list_make1
    - match_clause_to_partition_key
    - IsA
    - bms_add_member
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1321,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:1323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1319
    functionDepth: 6
    functionLinenumber: 1319
    functionLinenumberEnd: 1324
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 445
    functionsReached:
    - lappend_int
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:1347,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1357,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:1357,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:1357,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 6
    argNames:
    - context
    - opstrategy
    - op_is_ne
    - exprs
    - cmpfns
    - nullkeys
    argTypes:
    - GeneratePruningStepsContext*
    - StrategyNumber
    - bool
    - List*
    - List*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1365
      start: 1341
    functionDepth: 6
    functionLinenumber: 1341
    functionLinenumberEnd: 1365
    functionName: gen_prune_step_op
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - Assert
    - lappend
    - makeNode
    - list_length
    linkageType: ''
    returnType: PartitionPruneStep
    signature: "PartitionPruneStep *\ngen_prune_step_op(GeneratePruningStepsContext
      *context,\n\t\t\t\t  StrategyNumber opstrategy, bool op_is_ne,\n\t\t\t\t  List
      *exprs, List *cmpfns,\n\t\t\t\t  Bitmapset *nullkeys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:1379,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - context
    - source_stepids
    - combineOp
    argTypes:
    - GeneratePruningStepsContext*
    - List*
    - PartitionPruneCombineOp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1374
    functionDepth: 6
    functionLinenumber: 1374
    functionLinenumberEnd: 1388
    functionName: gen_prune_step_combine
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - lappend
    - makeNode
    linkageType: ''
    returnType: PartitionPruneStep
    signature: "PartitionPruneStep *\ngen_prune_step_combine(GeneratePruningStepsContext
      *context,\n\t\t\t\t\t   List *source_stepids,\n\t\t\t\t\t   PartitionPruneCombineOp
      combineOp)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:1422,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:1423,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:1443,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1448,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/partitioning/partprune.c:1454,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1466,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:1480,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1482,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:1486,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1533,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1555,1
    - Dst: get_steps_using_prefix
      Src: /src/postgres/src/backend/partitioning/partprune.c:1556,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:1562,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:1566,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:1567,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:1568,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1584,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1588,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1593,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1609,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1613,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1618,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1635,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1644,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1680,1
    - Dst: get_steps_using_prefix
      Src: /src/postgres/src/backend/partitioning/partprune.c:1681,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:1687,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partprune.c:1715,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1725,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1728,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1751,1
    - Dst: get_steps_using_prefix
      Src: /src/postgres/src/backend/partitioning/partprune.c:1753,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:1760,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:1767,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 113
    argCount: 3
    argNames:
    - context
    - keyclauses
    - nullkeys
    argTypes:
    - GeneratePruningStepsContext*
    - List**
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1411
    functionDepth: 6
    functionLinenumber: 1411
    functionLinenumberEnd: 1773
    functionName: gen_prune_steps_from_opexps
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - elog
    - get_steps_using_prefix
    - Assert
    - bms_is_member
    - lappend
    - lfirst
    - memset
    - list_concat
    - list_head
    - llast
    - get_op_opfamily_properties
    linkageType: ''
    returnType: List
    signature: "List *\ngen_prune_steps_from_opexps(GeneratePruningStepsContext *context,\n\t\t\t\t\t\t\tList
      **keyclauses, Bitmapset *nullkeys)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1448,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/partitioning/partprune.c:1454,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1466,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:1480,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1482,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:1486,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1446
    functionDepth: 6
    functionLinenumber: 1446
    functionLinenumberEnd: 1490
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 445
    functionsReached:
    - get_op_opfamily_properties
    - lfirst
    - elog
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauselist)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1533,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1555,1
    - Dst: get_steps_using_prefix
      Src: /src/postgres/src/backend/partitioning/partprune.c:1556,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:1562,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:1566,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:1567,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:1568,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1584,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1588,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1593,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1609,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1613,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1618,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1635,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1644,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1680,1
    - Dst: get_steps_using_prefix
      Src: /src/postgres/src/backend/partitioning/partprune.c:1681,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:1687,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1691
      start: 1531
    functionDepth: 6
    functionLinenumber: 1531
    functionLinenumberEnd: 1691
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 445
    functionsReached:
    - get_steps_using_prefix
    - Assert
    - lappend
    - lfirst
    - list_concat
    - list_head
    linkageType: ''
    returnType: void
    signature: void foreach(lc, btree_clauses[strat])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1584,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1588,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1593,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1582
    functionDepth: 6
    functionLinenumber: 1582
    functionLinenumberEnd: 1596
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - Assert
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void for_each_cell(lc1, eq_clauses, eq_start)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1609,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1613,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1618,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1607
    functionDepth: 6
    functionLinenumber: 1607
    functionLinenumberEnd: 1621
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - Assert
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void for_each_cell(lc1, le_clauses, le_start)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1635,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1644,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1633
    functionDepth: 6
    functionLinenumber: 1633
    functionLinenumberEnd: 1647
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - Assert
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void for_each_cell(lc1, ge_clauses, ge_start)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1725,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:1728,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1729
      start: 1723
    functionDepth: 6
    functionLinenumber: 1723
    functionLinenumberEnd: 1729
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 445
    functionsReached:
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, eq_clauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:1743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1751,1
    - Dst: get_steps_using_prefix
      Src: /src/postgres/src/backend/partitioning/partprune.c:1753,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:1760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1741
    functionDepth: 5
    functionLinenumber: 1741
    functionLinenumberEnd: 1761
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - Assert
    - lfirst
    - get_steps_using_prefix
    - list_concat
    linkageType: ''
    returnType: void
    signature: void for_each_cell(lc1, eq_clauses, lc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - partcoll
    - ','
    - exprcoll
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1786
      start: 1784
    functionDepth: 0
    functionLinenumber: 1784
    functionLinenumberEnd: 1786
    functionName: PartCollMatchesExprColl
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PartCollMatchesExprColl(partcoll, exprcoll)
  - BBCount: 60
    BranchProfiles: []
    Callsites:
    - Dst: match_boolean_partition_clause
      Src: /src/postgres/src/backend/partitioning/partprune.c:1843,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partprune.c:1863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1867,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1880,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:1883,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partprune.c:1884,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/partitioning/partprune.c:1889,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:1890,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partprune.c:1890,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1893,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/partitioning/partprune.c:1902,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1925,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:1926,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/partitioning/partprune.c:1940,1
    - Dst: strip_noop_phvs
      Src: /src/postgres/src/backend/partitioning/partprune.c:1941,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1942,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/partitioning/partprune.c:1944,1
    - Dst: strip_noop_phvs
      Src: /src/postgres/src/backend/partitioning/partprune.c:1945,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1946,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1951,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1953,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/partitioning/partprune.c:1961,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:1962,1
    - Dst: PartCollMatchesExprColl
      Src: /src/postgres/src/backend/partitioning/partprune.c:1975,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:1993,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/partitioning/partprune.c:1995,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/partitioning/partprune.c:2006,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2007,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:2007,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/partitioning/partprune.c:2009,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/partitioning/partprune.c:2026,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2049,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/partitioning/partprune.c:2065,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/partitioning/partprune.c:2072,1
    - Dst: pull_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:2079,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:2080,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/partitioning/partprune.c:2098,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/partitioning/partprune.c:2131,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/partitioning/partprune.c:2142,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:2148,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2154,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/partitioning/partprune.c:2161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2165,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2165,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2183,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partprune.c:2188,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/partitioning/partprune.c:2189,1
    - Dst: strip_noop_phvs
      Src: /src/postgres/src/backend/partitioning/partprune.c:2194,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2195,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:2199,1
    - Dst: PartCollMatchesExprColl
      Src: /src/postgres/src/backend/partitioning/partprune.c:2200,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:2211,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/partitioning/partprune.c:2218,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2219,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:2219,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/partitioning/partprune.c:2225,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/partitioning/partprune.c:2240,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2248,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/partitioning/partprune.c:2264,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/partitioning/partprune.c:2271,1
    - Dst: pull_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:2278,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:2279,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/partitioning/partprune.c:2297,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2313,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/partitioning/partprune.c:2333,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/partitioning/partprune.c:2334,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/partitioning/partprune.c:2334,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/partitioning/partprune.c:2336,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/partitioning/partprune.c:2337,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2357,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/partitioning/partprune.c:2357,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2360,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2363,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:2365,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/partitioning/partprune.c:2395,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2396,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2398,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:2405,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:2406,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partprune.c:2406,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:2409,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2416,1
    - Dst: strip_noop_phvs
      Src: /src/postgres/src/backend/partitioning/partprune.c:2421,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2422,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:2426,1
    CyclomaticComplexity: 70
    EdgeCount: 70
    ICount: 219
    argCount: 7
    argNames:
    - context
    - clause
    - partkey
    - partkeyidx
    - clause_is_not_null
    - pc
    - clause_steps
    argTypes:
    - GeneratePruningStepsContext*
    - Expr*
    - Expr*
    - int
    - bool*
    - PartClauseInfo**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2449
      start: 1827
    functionDepth: 7
    functionLinenumber: 1827
    functionLinenumberEnd: 2449
    functionName: match_clause_to_partition_key
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - copyObject
    - get_leftop
    - get_rightop
    - makeConst
    - elog
    - get_typlenbyvalalign
    - op_in_opfamily
    - Assert
    - linitial
    - get_negator
    - op_volatile
    - palloc_object
    - list_length
    - OidIsValid
    - get_opfamily_proc
    - contain_var_clause
    - pull_exec_paramids
    - strip_noop_phvs
    - bms_is_empty
    - lappend
    - gen_partprune_steps_internal
    - lfirst
    - get_commutator
    - list_make1
    - DatumGetArrayTypeP
    - deconstruct_array
    - makeBoolExpr
    - match_boolean_partition_clause
    - op_strict
    - get_op_opfamily_properties
    - castNode
    - PartCollMatchesExprColl
    - makeNode
    - ARR_ELEMTYPE
    - list_make2
    - lsecond
    - contain_volatile_functions
    - make_opclause
    - equal
    - IsA
    linkageType: ''
    returnType: PartClauseMatchStatus
    signature: "PartClauseMatchStatus match_clause_to_partition_key(GeneratePruningStepsContext
      *context,\n\t\t\t\t\t\t\t  Expr *clause, const Expr *partkey, int partkeyidx,\n\t\t\t\t\t\t\t
      \ bool *clause_is_not_null, PartClauseInfo **pc,\n\t\t\t\t\t\t\t  List **clause_steps)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_opclause
      Src: /src/postgres/src/backend/partitioning/partprune.c:2395,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2396,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2399
      start: 2391
    functionDepth: 6
    functionLinenumber: 2391
    functionLinenumberEnd: 2399
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 445
    functionsReached:
    - lfirst
    - make_opclause
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, elem_exprs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2489,1
    - Dst: gen_prune_step_op
      Src: /src/postgres/src/backend/partitioning/partprune.c:2500,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:2503,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2504,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:2506,1
    - Dst: get_steps_using_prefix_recurse
      Src: /src/postgres/src/backend/partitioning/partprune.c:2510,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:2517,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 7
    argNames:
    - context
    - step_opstrategy
    - step_op_is_ne
    - step_lastexpr
    - step_lastcmpfn
    - step_nullkeys
    - prefix
    argTypes:
    - GeneratePruningStepsContext*
    - StrategyNumber
    - bool
    - Expr*
    - Oid
    - Bitmapset*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2519
      start: 2479
    functionDepth: 7
    functionLinenumber: 2479
    functionLinenumberEnd: 2519
    functionName: get_steps_using_prefix
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 3
    functionsReached:
    - gen_prune_step_op
    - Assert
    - get_steps_using_prefix_recurse
    - list_head
    - list_make1_oid
    - list_make1
    linkageType: ''
    returnType: List
    signature: "List *\nget_steps_using_prefix(GeneratePruningStepsContext *context,\n\t\t\t\t\t
      \  StrategyNumber step_opstrategy,\n\t\t\t\t\t   bool step_op_is_ne,\n\t\t\t\t\t
      \  Expr *step_lastexpr,\n\t\t\t\t\t   Oid step_lastcmpfn,\n\t\t\t\t\t   Bitmapset
      *step_nullkeys,\n\t\t\t\t\t   List *prefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/partitioning/partprune.c:2555,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2557,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2558,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partprune.c:2559,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2574,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2594,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2598,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2599,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2602,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2608,1
    - Dst: get_steps_using_prefix_recurse
      Src: /src/postgres/src/backend/partitioning/partprune.c:2612,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:2622,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partprune.c:2624,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partprune.c:2625,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2638,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:2638,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:2639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2647,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:2649,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:2649,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2653,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2658,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2661,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2662,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2663,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2666,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2667,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2668,1
    - Dst: gen_prune_step_op
      Src: /src/postgres/src/backend/partitioning/partprune.c:2670,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2674,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 10
    argNames:
    - context
    - step_opstrategy
    - step_op_is_ne
    - step_lastexpr
    - step_lastcmpfn
    - step_nullkeys
    - prefix
    - start
    - step_exprs
    - step_cmpfns
    argTypes:
    - GeneratePruningStepsContext*
    - StrategyNumber
    - bool
    - Expr*
    - Oid
    - Bitmapset*
    - List*
    - ListCell*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2679
      start: 2537
    functionDepth: 7
    functionLinenumber: 2537
    functionLinenumberEnd: 2679
    functionName: get_steps_using_prefix_recurse
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - list_length
    - list_free
    - Assert
    - gen_prune_step_op
    - get_steps_using_prefix_recurse
    - lappend
    - check_stack_depth
    - bms_num_members
    - lfirst
    - llast
    - list_copy
    - list_concat
    - lappend_oid
    - bms_is_empty
    linkageType: ''
    returnType: List
    signature: "List *\nget_steps_using_prefix_recurse(GeneratePruningStepsContext
      *context,\n\t\t\t\t\t\t\t   StrategyNumber step_opstrategy,\n\t\t\t\t\t\t\t
      \  bool step_op_is_ne,\n\t\t\t\t\t\t\t   Expr *step_lastexpr,\n\t\t\t\t\t\t\t
      \  Oid step_lastcmpfn,\n\t\t\t\t\t\t\t   Bitmapset *step_nullkeys,\n\t\t\t\t\t\t\t
      \  List *prefix,\n\t\t\t\t\t\t\t   ListCell *start,\n\t\t\t\t\t\t\t   List *step_exprs,\n\t\t\t\t\t\t\t
      \  List *step_cmpfns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2578
      start: 2572
    functionDepth: 1
    functionLinenumber: 2572
    functionLinenumberEnd: 2578
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void for_each_cell(lc, prefix, start)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2594,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2598,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2599,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2602,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2608,1
    - Dst: get_steps_using_prefix_recurse
      Src: /src/postgres/src/backend/partitioning/partprune.c:2612,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:2622,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partprune.c:2624,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partprune.c:2625,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2588
    functionDepth: 8
    functionLinenumber: 2588
    functionLinenumberEnd: 2626
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - list_free
    - Assert
    - get_steps_using_prefix_recurse
    - lappend
    - lfirst
    - list_concat
    - list_copy
    - lappend_oid
    linkageType: ''
    returnType: void
    signature: void for_each_cell(lc, prefix, start)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2653,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2658,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2661,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2662,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2663,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2666,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2667,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2668,1
    - Dst: gen_prune_step_op
      Src: /src/postgres/src/backend/partitioning/partprune.c:2670,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2675
      start: 2651
    functionDepth: 7
    functionLinenumber: 2651
    functionLinenumberEnd: 2675
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - gen_prune_step_op
    - Assert
    - lappend
    - lfirst
    - list_copy
    - lappend_oid
    linkageType: ''
    returnType: void
    signature: void for_each_cell(lc, prefix, start)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/partitioning/partprune.c:2709,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2719,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:2726,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2732,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:2735,1
    - Dst: compute_partition_hash_value
      Src: /src/postgres/src/backend/partitioning/partprune.c:2737,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/partitioning/partprune.c:2743,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:2748,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - context
    - opstrategy
    - values
    - nvalues
    - partsupfunc
    - nullkeys
    argTypes:
    - PartitionPruneContext*
    - StrategyNumber
    - Datum*
    - int
    - FmgrInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2759
      start: 2704
    functionDepth: 3
    functionLinenumber: 2704
    functionLinenumberEnd: 2759
    functionName: get_matching_hash_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - bms_add_range
    - Assert
    - bms_num_members
    - bms_is_member
    - compute_partition_hash_value
    - bms_make_singleton
    linkageType: ''
    returnType: PruneStepResult
    signature: "PruneStepResult *\nget_matching_hash_bounds(PartitionPruneContext
      *context,\n\t\t\t\t\t\t StrategyNumber opstrategy, const Datum *values, int
      nvalues,\n\t\t\t\t\t\t FmgrInfo *partsupfunc, Bitmapset *nullkeys)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/partitioning/partprune.c:2786,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2796,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:2800,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partprune.c:2807,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2810,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2820,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2834,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:2835,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2837,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2847,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:2848,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:2851,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2857,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:2858,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2863,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2877,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:2882,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2888,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/partitioning/partprune.c:2889,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2892,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:2899,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:2934,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:2954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2958,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:2959,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 77
    argCount: 6
    argNames:
    - context
    - opstrategy
    - value
    - nvalues
    - partsupfunc
    - nullkeys
    argTypes:
    - PartitionPruneContext*
    - StrategyNumber
    - Datum
    - int
    - FmgrInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2961
      start: 2781
    functionDepth: 3
    functionLinenumber: 2781
    functionLinenumberEnd: 2961
    functionName: get_matching_list_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 0
    functionsReached:
    - elog
    - palloc0_object
    - bms_del_member
    - partition_bound_has_default
    - bms_add_range
    - Assert
    - partition_list_bsearch
    - bms_is_empty
    - partition_bound_accepts_nulls
    - bms_make_singleton
    linkageType: ''
    returnType: PruneStepResult
    signature: "PruneStepResult *\nget_matching_list_bounds(PartitionPruneContext
      *context,\n\t\t\t\t\t\t StrategyNumber opstrategy, Datum value, int nvalues,\n\t\t\t\t\t\t
      FmgrInfo *partsupfunc, Bitmapset *nullkeys)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/partitioning/partprune.c:2997,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3009,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:3017,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:3019,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:3040,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3041,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:3043,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:3053,1
    - Dst: partition_range_datum_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:3059,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/partitioning/partprune.c:3070,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3094,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3104,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3105,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3144,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3145,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3158,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:3159,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/partitioning/partprune.c:3172,1
    - Dst: partition_range_datum_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:3186,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3234,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3235,1
    - Dst: partition_range_datum_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:3267,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3296,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3297,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:3331,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3336,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3375,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:3377,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 125
    argCount: 6
    argNames:
    - context
    - opstrategy
    - values
    - nvalues
    - partsupfunc
    - nullkeys
    argTypes:
    - PartitionPruneContext*
    - StrategyNumber
    - Datum*
    - int
    - FmgrInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3380
      start: 2992
    functionDepth: 3
    functionLinenumber: 2992
    functionLinenumberEnd: 3380
    functionName: get_matching_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 0
    functionsReached:
    - elog
    - palloc0_object
    - partition_rbound_datum_cmp
    - partition_bound_has_default
    - bms_add_range
    - Assert
    - partition_range_datum_bsearch
    - bms_is_empty
    - bms_make_singleton
    linkageType: ''
    returnType: PruneStepResult
    signature: "PruneStepResult *\nget_matching_range_bounds(PartitionPruneContext
      *context,\n\t\t\t\t\t\t  StrategyNumber opstrategy, const Datum *values, int
      nvalues,\n\t\t\t\t\t\t  FmgrInfo *partsupfunc, Bitmapset *nullkeys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pull_exec_paramids_walker
      Src: /src/postgres/src/backend/partitioning/partprune.c:3392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3395
      start: 3387
    functionDepth: 1
    functionLinenumber: 3387
    functionLinenumberEnd: 3395
    functionName: pull_exec_paramids
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - pull_exec_paramids_walker
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      pull_exec_paramids(Expr *expr)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3402,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:3407,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/partitioning/partprune.c:3410,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3411
      start: 3397
    functionDepth: 3
    functionLinenumber: 3397
    functionLinenumberEnd: 3411
    functionName: pull_exec_paramids_walker
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: bool pull_exec_paramids_walker(Node *node, Bitmapset **context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3428,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3431,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:3434,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3436,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3439,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/partitioning/partprune.c:3440,1
    - Dst: pull_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:3441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - steps
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3446
      start: 3420
    functionDepth: 3
    functionLinenumber: 3420
    functionLinenumberEnd: 3446
    functionName: get_partkey_exec_paramids
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - pull_exec_paramids
    - foreach
    - IsA
    - lfirst
    - bms_join
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      get_partkey_exec_paramids(List *steps)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3428,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3431,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:3434,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3436,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3439,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/partitioning/partprune.c:3440,1
    - Dst: pull_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:3441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3443
      start: 3426
    functionDepth: 3
    functionLinenumber: 3426
    functionLinenumberEnd: 3443
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 447
    functionsReached:
    - pull_exec_paramids
    - foreach
    - IsA
    - lfirst
    - bms_join
    linkageType: ''
    returnType: void
    signature: void foreach(lc, steps)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3471,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:3471,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:3471,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:3474,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:3475,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:3488,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3505,1
    - Dst: PruneCxtStateIdx
      Src: /src/postgres/src/backend/partitioning/partprune.c:3506,1
    - Dst: partkey_datum_from_expr
      Src: /src/postgres/src/backend/partitioning/partprune.c:3508,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/partitioning/partprune.c:3520,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:3529,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3530,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:3530,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:3540,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/partitioning/partprune.c:3544,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partprune.c:3551,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partprune.c:3552,1
    - Dst: PruneCxtStateIdx
      Src: /src/postgres/src/backend/partitioning/partprune.c:3560,1
    - Dst: get_matching_hash_bounds
      Src: /src/postgres/src/backend/partitioning/partprune.c:3566,1
    - Dst: get_matching_list_bounds
      Src: /src/postgres/src/backend/partitioning/partprune.c:3573,1
    - Dst: get_matching_range_bounds
      Src: /src/postgres/src/backend/partitioning/partprune.c:3580,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:3587,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 2
    argNames:
    - context
    - opstep
    argTypes:
    - PartitionPruneContext*
    - PartitionPruneStepOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3593
      start: 3456
    functionDepth: 4
    functionLinenumber: 3456
    functionLinenumberEnd: 3593
    functionName: perform_pruning_base_step
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - fmgr_info_copy
    - get_matching_list_bounds
    - partkey_datum_from_expr
    - elog
    - get_matching_hash_bounds
    - Assert
    - OidIsValid
    - bms_is_member
    - lnext
    - list_head
    - lfirst
    - palloc_object
    - list_length
    - lfirst_oid
    - get_matching_range_bounds
    - PruneCxtStateIdx
    - fmgr_info_cxt
    linkageType: ''
    returnType: PruneStepResult
    signature: "PruneStepResult *\nperform_pruning_base_step(PartitionPruneContext
      *context,\n\t\t\t\t\t\t  PartitionPruneStepOp *opstep)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/partitioning/partprune.c:3609,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:3622,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:3623,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partprune.c:3624,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:3631,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:3633,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:3643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3645,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:3648,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:3661,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:3663,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:3667,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3669,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:3675,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:3684,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 3
    argNames:
    - context
    - cstep
    - step_results
    argTypes:
    - PartitionPruneContext*
    - PartitionPruneStepCombine*
    - PruneStepResult**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3698
      start: 3604
    functionDepth: 4
    functionLinenumber: 3604
    functionLinenumberEnd: 3698
    functionName: perform_pruning_combine_step
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - elog
    - palloc0_object
    - partition_bound_has_default
    - bms_add_range
    - foreach
    - lfirst_int
    - Assert
    - bms_copy
    - bms_int_members
    - bms_add_members
    - partition_bound_accepts_nulls
    linkageType: ''
    returnType: PruneStepResult
    signature: "PruneStepResult *\nperform_pruning_combine_step(PartitionPruneContext
      *context,\n\t\t\t\t\t\t\t PartitionPruneStepCombine *cstep,\n\t\t\t\t\t\t\t
      PruneStepResult **step_results)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IsBuiltinBooleanOpfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:3726,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3729,1
    - Dst: strip_noop_phvs
      Src: /src/postgres/src/backend/partitioning/partprune.c:3734,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3735,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:3738,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3746,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3752,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/partitioning/partprune.c:3768,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/partitioning/partprune.c:3770,1
    - Dst: strip_noop_phvs
      Src: /src/postgres/src/backend/partitioning/partprune.c:3772,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3773,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:3777,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3778,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:3779,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/partitioning/partprune.c:3779,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3780,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 5
    argNames:
    - partopfamily
    - clause
    - partkey
    - outconst
    - notclause
    argTypes:
    - Oid
    - Expr*
    - Expr*
    - Expr**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3786
      start: 3713
    functionDepth: 3
    functionLinenumber: 3713
    functionLinenumberEnd: 3786
    functionName: match_boolean_partition_clause
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - strip_noop_phvs
    - makeBoolConst
    - is_notclause
    - negate_clause
    - IsBuiltinBooleanOpfamily
    - equal
    - IsA
    - get_notclausearg
    linkageType: ''
    returnType: PartClauseMatchStatus
    signature: "PartClauseMatchStatus match_boolean_partition_clause(Oid partopfamily,
      Expr *clause, const Expr *partkey,\n\t\t\t\t\t\t\t   Expr **outconst, bool *notclause)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3824,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/partitioning/partprune.c:3828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - context
    - expr
    - stateidx
    - value
    - isnull
    argTypes:
    - PartitionPruneContext*
    - Expr*
    - int
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3830
      start: 3802
    functionDepth: 2
    functionLinenumber: 3802
    functionLinenumberEnd: 3830
    functionName: partkey_datum_from_expr
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - ExecEvalExprSwitchContext
    linkageType: ''
    returnType: void
    signature: "void partkey_datum_from_expr(PartitionPruneContext *context,\n\t\t\t\t\t\tExpr
      *expr, int stateidx,\n\t\t\t\t\t\tDatum *value, bool *isnull)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - partnatts
    - ','
    - partsupfunc
    - ','
    - partcollations
    - ','
    - bound1
    - ','
    - bound2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: compare_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "compare_range_bounds(partnatts, partsupfunc, partcollations, \\\n\t\t\t\t\t\t\t
      bound1, bound2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:260,1
    - Dst: get_qual_for_hash
      Src: /src/postgres/src/backend/partitioning/partbounds.c:261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:265,1
    - Dst: get_qual_for_list
      Src: /src/postgres/src/backend/partitioning/partbounds.c:266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:270,1
    - Dst: get_qual_for_range
      Src: /src/postgres/src/backend/partitioning/partbounds.c:271,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - parent
    - spec
    argTypes:
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 276
    functionName: get_qual_from_partbound
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - get_qual_for_range
    - Assert
    - get_qual_for_hash
    - RelationGetPartitionKey
    - get_qual_for_list
    linkageType: ''
    returnType: List
    signature: 'List *

      get_qual_from_partbound(Relation parent, PartitionBoundSpec *spec)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:305,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:323,1
    - Dst: create_hash_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:330,1
    - Dst: create_list_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:333,1
    - Dst: create_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:336,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - boundspecs
    - nparts
    - key
    - mapping
    argTypes:
    - PartitionBoundSpec**
    - int
    - PartitionKey
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 341
    functionName: partition_bounds_create
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - Assert
    - create_range_bounds
    - palloc_array
    - create_list_bounds
    - create_hash_bounds
    linkageType: ''
    returnType: PartitionBoundInfo
    signature: "PartitionBoundInfo partition_bounds_create(PartitionBoundSpec **boundspecs,
      int nparts,\n\t\t\t\t\t\tPartitionKey key, int **mapping)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/partitioning/partbounds.c:357,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:363,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:371,1
    - Dst: qsort
      Src: /src/postgres/src/backend/partitioning/partbounds.c:379,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:386,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:390,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:399,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:412,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:418,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:425,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 4
    argNames:
    - boundspecs
    - nparts
    - key
    - mapping
    argTypes:
    - PartitionBoundSpec**
    - int
    - PartitionKey
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 428
    functionName: create_hash_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_object
    - qsort
    - palloc0_array
    - Int32GetDatum
    - Assert
    - pfree
    - palloc_array
    - palloc
    linkageType: ''
    returnType: PartitionBoundInfo
    signature: "PartitionBoundInfo create_hash_bounds(PartitionBoundSpec **boundspecs,
      int nparts,\n\t\t\t\t   PartitionKey key, int **mapping)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:444,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - boundspecs
    - nparts
    argTypes:
    - PartitionBoundSpec**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 454
    functionName: get_non_null_list_datum_count
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - foreach
    - lfirst_node
    linkageType: ''
    returnType: int
    signature: int get_non_null_list_datum_count(PartitionBoundSpec **boundspecs,
      int nparts)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/partitioning/partbounds.c:474,1
    - Dst: get_non_null_list_datum_count
      Src: /src/postgres/src/backend/partitioning/partbounds.c:480,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:482,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:491,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:504,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:506,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:521,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:528,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:530,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:534,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:538,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:545,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:558,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:581,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:596,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:620,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:621,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partbounds.c:636,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:644,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partbounds.c:646,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:659,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partbounds.c:660,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:666,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 70
    argCount: 4
    argNames:
    - boundspecs
    - nparts
    - key
    - mapping
    argTypes:
    - PartitionBoundSpec**
    - int
    - PartitionKey
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 460
    functionDepth: 3
    functionLinenumber: 460
    functionLinenumberEnd: 668
    functionName: create_list_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_object
    - palloc0_array
    - foreach
    - partition_bound_has_default
    - Assert
    - pfree
    - datumCopy
    - get_non_null_list_datum_count
    - qsort_arg
    - palloc
    - partition_bound_accepts_nulls
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: PartitionBoundInfo
    signature: "PartitionBoundInfo create_list_bounds(PartitionBoundSpec **boundspecs,
      int nparts,\n\t\t\t\t   PartitionKey key, int **mapping)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/partitioning/partbounds.c:691,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:698,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:709,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:722,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:723,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:728,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:732,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:739,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:767,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:771,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:788,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:802,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:803,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:811,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:820,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:821,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:833,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:866,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:872,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:876,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 78
    argCount: 4
    argNames:
    - boundspecs
    - nparts
    - key
    - mapping
    argTypes:
    - PartitionBoundSpec**
    - int
    - PartitionKey
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 878
    functionName: create_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_object
    - palloc0_array
    - Assert
    - pfree
    - datumCopy
    - palloc_array
    - FunctionCall2Coll
    - DatumGetInt32
    - qsort_arg
    - palloc
    - make_one_partition_rbound
    linkageType: ''
    returnType: PartitionBoundInfo
    signature: "PartitionBoundInfo create_range_bounds(PartitionBoundSpec **boundspecs,
      int nparts,\n\t\t\t\t\tPartitionKey key, int **mapping)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:936,1
    - Dst: datumIsEqual
      Src: /src/postgres/src/backend/partitioning/partbounds.c:976,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 33
    argCount: 5
    argNames:
    - partnatts
    - parttyplen
    - parttypbyval
    - b1
    - b2
    argTypes:
    - int
    - int16*
    - bool*
    - PartitionBoundInfo
    - PartitionBoundInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 888
    functionDepth: 1
    functionLinenumber: 888
    functionLinenumberEnd: 983
    functionName: partition_bounds_equal
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    - datumIsEqual
    linkageType: ''
    returnType: bool
    signature: "bool partition_bounds_equal(int partnatts, int16 *parttyplen, bool
      *parttypbyval,\n\t\t\t\t\t   PartitionBoundInfo b1, PartitionBoundInfo b2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1004,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1012,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1014,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1021,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1023,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1031,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1037,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1045,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1055,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1081,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1088,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1089,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 2
    argNames:
    - src
    - key
    argTypes:
    - PartitionBoundInfo
    - PartitionKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 994
    functionDepth: 3
    functionLinenumber: 994
    functionLinenumberEnd: 1095
    functionName: partition_bounds_copy
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - datumCopy
    - palloc_array
    - bms_copy
    - palloc_object
    - palloc
    linkageType: ''
    returnType: PartitionBoundInfo
    signature: "PartitionBoundInfo partition_bounds_copy(PartitionBoundInfo src,\n\t\t\t\t\t
      \ PartitionKey key)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1122,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1127,1
    - Dst: merge_list_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1151,1
    - Dst: merge_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 8
    argNames:
    - partnatts
    - partsupfunc
    - partcollation
    - outer_rel
    - inner_rel
    - jointype
    - outer_parts
    - inner_parts
    argTypes:
    - int
    - FmgrInfo*
    - Oid*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1111
    functionDepth: 1
    functionLinenumber: 1111
    functionLinenumberEnd: 1171
    functionName: partition_bounds_merge
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    - merge_list_bounds
    - merge_range_bounds
    linkageType: ''
    returnType: PartitionBoundInfo
    signature: "PartitionBoundInfo partition_bounds_merge(int partnatts,\n\t\t\t\t\t
      \  FmgrInfo *partsupfunc, Oid *partcollation,\n\t\t\t\t\t   RelOptInfo *outer_rel,
      RelOptInfo *inner_rel,\n\t\t\t\t\t   JoinType jointype,\n\t\t\t\t\t   List **outer_parts,
      List **inner_parts)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1200,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1201,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1204,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1216,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1221,1
    - Dst: init_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1223,1
    - Dst: init_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1224,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1230,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1232,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1260,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1273,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1301,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1302,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1302,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1311,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1314,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1335,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1347,1
    - Dst: process_outer_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1348,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1368,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1381,1
    - Dst: process_inner_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1382,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1406,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1407,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1416,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1419,1
    - Dst: merge_null_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1429,1
    - Dst: merge_default_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1433,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1438,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1446,1
    - Dst: fix_merged_indexes
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1447,1
    - Dst: generate_matching_part_pairs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1456,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1458,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1458,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1459,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1459,1
    - Dst: build_merged_partition_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1462,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1468,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1473,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1474,1
    - Dst: free_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1475,1
    - Dst: free_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1476,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 110
    argCount: 7
    argNames:
    - partsupfunc
    - partcollation
    - outer_rel
    - inner_rel
    - jointype
    - outer_parts
    - inner_parts
    argTypes:
    - FmgrInfo*
    - Oid*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1191
    functionDepth: 6
    functionLinenumber: 1191
    functionLinenumberEnd: 1479
    functionName: merge_list_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - build_merged_partition_bounds
    - merge_null_partitions
    - free_partition_map
    - Assert
    - init_partition_map
    - list_length
    - fix_merged_indexes
    - IS_OUTER_JOIN
    - process_inner_partition
    - list_free
    - generate_matching_part_pairs
    - lappend
    - FunctionCall2Coll
    - merge_matching_partitions
    - merge_default_partitions
    - partition_bound_accepts_nulls
    - process_outer_partition
    - is_dummy_partition
    - partition_bound_has_default
    - DatumGetInt32
    linkageType: ''
    returnType: PartitionBoundInfo
    signature: "PartitionBoundInfo merge_list_bounds(FmgrInfo *partsupfunc, Oid *partcollation,\n\t\t\t\t
      \ RelOptInfo *outer_rel, RelOptInfo *inner_rel,\n\t\t\t\t  JoinType jointype,\n\t\t\t\t
      \ List **outer_parts, List **inner_parts)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1509,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1510,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1529,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1530,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1531,1
    - Dst: init_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1534,1
    - Dst: init_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1535,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1541,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1543,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1556,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1558,1
    - Dst: compare_range_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1609,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1619,1
    - Dst: get_merged_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1622,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1634,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1636,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1647,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1651,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1670,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1671,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1680,1
    - Dst: process_outer_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1682,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1698,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1707,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1708,1
    - Dst: process_inner_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1719,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1735,1
    - Dst: add_merged_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1744,1
    - Dst: merge_default_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1752,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1757,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1767,1
    - Dst: generate_matching_part_pairs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1770,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1774,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1775,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1776,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1776,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1777,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1777,1
    - Dst: build_merged_partition_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1786,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1791,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1792,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1793,1
    - Dst: free_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1794,1
    - Dst: free_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1795,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 98
    argCount: 8
    argNames:
    - partnatts
    - partsupfuncs
    - partcollations
    - outer_rel
    - inner_rel
    - jointype
    - outer_parts
    - inner_parts
    argTypes:
    - int
    - FmgrInfo*
    - Oid*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1499
    functionDepth: 4
    functionLinenumber: 1499
    functionLinenumberEnd: 1798
    functionName: merge_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - build_merged_partition_bounds
    - free_partition_map
    - Assert
    - init_partition_map
    - get_merged_range_bounds
    - list_length
    - IS_OUTER_JOIN
    - process_inner_partition
    - get_range_partition
    - list_free
    - generate_matching_part_pairs
    - compare_range_partitions
    - add_merged_range_bounds
    - merge_matching_partitions
    - merge_default_partitions
    - process_outer_partition
    - is_dummy_partition
    - compare_range_bounds
    - partition_bound_has_default
    linkageType: ''
    returnType: PartitionBoundInfo
    signature: "PartitionBoundInfo merge_range_bounds(int partnatts, FmgrInfo *partsupfuncs,\n\t\t\t\t
      \  Oid *partcollations,\n\t\t\t\t   RelOptInfo *outer_rel, RelOptInfo *inner_rel,\n\t\t\t\t
      \  JoinType jointype,\n\t\t\t\t   List **outer_parts, List **inner_parts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1811,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1812,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - rel
    - map
    argTypes:
    - RelOptInfo*
    - PartitionMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1804
    functionDepth: 0
    functionLinenumber: 1804
    functionLinenumberEnd: 1820
    functionName: init_partition_map
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - palloc_array
    linkageType: ''
    returnType: void
    signature: void init_partition_map(RelOptInfo *rel, PartitionMap *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1828,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1829,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - map
    argTypes:
    - PartitionMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1825
    functionDepth: 0
    functionLinenumber: 1825
    functionLinenumberEnd: 1831
    functionName: free_partition_map
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void free_partition_map(PartitionMap *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1841,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - part_index
    argTypes:
    - RelOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1836
    functionDepth: 1
    functionLinenumber: 1836
    functionLinenumberEnd: 1846
    functionName: is_dummy_partition
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    - IS_DUMMY_REL
    linkageType: ''
    returnType: bool
    signature: bool is_dummy_partition(RelOptInfo *rel, int part_index)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1886,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1922,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1934,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1935,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1945,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1946,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1955,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 60
    argCount: 5
    argNames:
    - outer_map
    - inner_map
    - outer_index
    - inner_index
    - next_index
    argTypes:
    - PartitionMap*
    - PartitionMap*
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1962
      start: 1855
    functionDepth: 1
    functionLinenumber: 1855
    functionLinenumberEnd: 1962
    functionName: merge_matching_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: "int merge_matching_partitions(PartitionMap *outer_map, PartitionMap
      *inner_map,\n\t\t\t\t\t\t  int outer_index, int inner_index, int *next_index)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1986,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1998,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2010,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2029,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2034,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2034,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2035,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2040,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 9
    argNames:
    - outer_map
    - inner_map
    - outer_has_default
    - inner_has_default
    - outer_index
    - inner_default
    - jointype
    - next_index
    - default_index
    argTypes:
    - PartitionMap*
    - PartitionMap*
    - bool
    - bool
    - int
    - int
    - JoinType
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 1973
    functionDepth: 2
    functionLinenumber: 1973
    functionLinenumberEnd: 2044
    functionName: process_outer_partition
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    - IS_OUTER_JOIN
    - merge_matching_partitions
    - merge_partition_with_dummy
    linkageType: ''
    returnType: int
    signature: "int process_outer_partition(PartitionMap *outer_map,\n\t\t\t\t\t\tPartitionMap
      *inner_map,\n\t\t\t\t\t\tbool outer_has_default,\n\t\t\t\t\t\tbool inner_has_default,\n\t\t\t\t\t\tint
      outer_index,\n\t\t\t\t\t\tint inner_default,\n\t\t\t\t\t\tJoinType jointype,\n\t\t\t\t\t\tint
      *next_index,\n\t\t\t\t\t\tint *default_index)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2068,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2080,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2092,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2108,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2117,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2122,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 9
    argNames:
    - outer_map
    - inner_map
    - outer_has_default
    - inner_has_default
    - inner_index
    - outer_default
    - jointype
    - next_index
    - default_index
    argTypes:
    - PartitionMap*
    - PartitionMap*
    - bool
    - bool
    - int
    - int
    - JoinType
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2126
      start: 2055
    functionDepth: 2
    functionLinenumber: 2055
    functionLinenumberEnd: 2126
    functionName: process_inner_partition
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    - IS_OUTER_JOIN
    - merge_matching_partitions
    - merge_partition_with_dummy
    linkageType: ''
    returnType: int
    signature: "int process_inner_partition(PartitionMap *outer_map,\n\t\t\t\t\t\tPartitionMap
      *inner_map,\n\t\t\t\t\t\tbool outer_has_default,\n\t\t\t\t\t\tbool inner_has_default,\n\t\t\t\t\t\tint
      inner_index,\n\t\t\t\t\t\tint outer_default,\n\t\t\t\t\t\tJoinType jointype,\n\t\t\t\t\t\tint
      *next_index,\n\t\t\t\t\t\tint *default_index)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2163,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2180,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2192,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2199,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2210,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2215,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2216,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2217,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2232,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2234,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2238,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 36
    argCount: 9
    argNames:
    - outer_map
    - inner_map
    - outer_has_null
    - inner_has_null
    - outer_null
    - inner_null
    - jointype
    - next_index
    - null_index
    argTypes:
    - PartitionMap*
    - PartitionMap*
    - bool
    - bool
    - int
    - int
    - JoinType
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2241
      start: 2140
    functionDepth: 2
    functionLinenumber: 2140
    functionLinenumberEnd: 2241
    functionName: merge_null_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    - merge_matching_partitions
    - IS_OUTER_JOIN
    - merge_partition_with_dummy
    linkageType: ''
    returnType: void
    signature: "void merge_null_partitions(PartitionMap *outer_map,\n\t\t\t\t\t  PartitionMap
      *inner_map,\n\t\t\t\t\t  bool outer_has_null,\n\t\t\t\t\t  bool inner_has_null,\n\t\t\t\t\t
      \ int outer_null,\n\t\t\t\t\t  int inner_null,\n\t\t\t\t\t  JoinType jointype,\n\t\t\t\t\t
      \ int *next_index,\n\t\t\t\t\t  int *null_index)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2274,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2293,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2302,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2318,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2327,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2331,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2341,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2342,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2348,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 9
    argNames:
    - outer_map
    - inner_map
    - outer_has_default
    - inner_has_default
    - outer_default
    - inner_default
    - jointype
    - next_index
    - default_index
    argTypes:
    - PartitionMap*
    - PartitionMap*
    - bool
    - bool
    - int
    - int
    - JoinType
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2250
    functionDepth: 2
    functionLinenumber: 2250
    functionLinenumberEnd: 2350
    functionName: merge_default_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    - merge_matching_partitions
    - IS_OUTER_JOIN
    - merge_partition_with_dummy
    linkageType: ''
    returnType: void
    signature: "void merge_default_partitions(PartitionMap *outer_map,\n\t\t\t\t\t\t
      PartitionMap *inner_map,\n\t\t\t\t\t\t bool outer_has_default,\n\t\t\t\t\t\t
      bool inner_has_default,\n\t\t\t\t\t\t int outer_default,\n\t\t\t\t\t\t int inner_default,\n\t\t\t\t\t\t
      JoinType jointype,\n\t\t\t\t\t\t int *next_index,\n\t\t\t\t\t\t int *default_index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2366,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - map
    - index
    - next_index
    argTypes:
    - PartitionMap*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2360
    functionDepth: 1
    functionLinenumber: 2360
    functionLinenumberEnd: 2372
    functionName: merge_partition_with_dummy
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 4
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int merge_partition_with_dummy(PartitionMap *map, int index, int *next_index)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2387,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2389,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2416,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2417,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2419,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2422,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 4
    argNames:
    - outer_map
    - inner_map
    - nmerged
    - merged_indexes
    argTypes:
    - PartitionMap*
    - PartitionMap*
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2378
    functionDepth: 1
    functionLinenumber: 2378
    functionLinenumberEnd: 2423
    functionName: fix_merged_indexes
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    - pfree
    - palloc_array
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: "void fix_merged_indexes(PartitionMap *outer_map, PartitionMap *inner_map,\n\t\t\t\t
      \  int nmerged, List *merged_indexes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2416,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2417,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2420
      start: 2414
    functionDepth: 1
    functionLinenumber: 2414
    functionLinenumberEnd: 2420
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 450
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, merged_indexes)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2447,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2449,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2456,1
    - Dst: Max
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2466,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2476,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2497,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2499,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2503,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2504,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 7
    argNames:
    - outer_rel
    - inner_rel
    - outer_map
    - inner_map
    - nmerged
    - outer_parts
    - inner_parts
    argTypes:
    - RelOptInfo*
    - RelOptInfo*
    - PartitionMap*
    - PartitionMap*
    - int
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2505
      start: 2432
    functionDepth: 6
    functionLinenumber: 2432
    functionLinenumberEnd: 2505
    functionName: generate_matching_part_pairs
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    - pfree
    - lappend
    - palloc_array
    - Max
    linkageType: ''
    returnType: void
    signature: "void generate_matching_part_pairs(RelOptInfo *outer_rel, RelOptInfo
      *inner_rel,\n\t\t\t\t\t\t\t PartitionMap *outer_map, PartitionMap *inner_map,\n\t\t\t\t\t\t\t
      int nmerged,\n\t\t\t\t\t\t\t List **outer_parts, List **inner_parts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2517,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2521,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2525,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2527,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2528,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2532,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2532,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2533,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2535,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2536,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2539,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2552,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2552,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2554,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2556,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 6
    argNames:
    - strategy
    - merged_datums
    - merged_kinds
    - merged_indexes
    - null_index
    - default_index
    argTypes:
    - char
    - List*
    - List*
    - List*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2563
      start: 2511
    functionDepth: 6
    functionLinenumber: 2511
    functionLinenumberEnd: 2563
    functionName: build_merged_partition_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - lappend_int
    - foreach
    - lfirst_int
    - Assert
    - palloc_array
    - lfirst
    - palloc_object
    - list_length
    linkageType: ''
    returnType: PartitionBoundInfo
    signature: "PartitionBoundInfo build_merged_partition_bounds(char strategy, List
      *merged_datums,\n\t\t\t\t\t\t\t  List *merged_kinds, List *merged_indexes,\n\t\t\t\t\t\t\t
      \ int null_index, int default_index)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2582,1
    - Dst: get_range_partition_internal
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2586,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2589,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - rel
    - bi
    - lb_pos
    - lb
    - ub
    argTypes:
    - RelOptInfo*
    - PartitionBoundInfo
    - int*
    - PartitionRangeBound*
    - PartitionRangeBound*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2592
      start: 2573
    functionDepth: 2
    functionLinenumber: 2573
    functionLinenumberEnd: 2592
    functionName: get_range_partition
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_range_partition_internal
    - is_dummy_partition
    linkageType: ''
    returnType: int
    signature: "int get_range_partition(RelOptInfo *rel,\n\t\t\t\t\tPartitionBoundInfo
      bi,\n\t\t\t\t\tint *lb_pos,\n\t\t\t\t\tPartitionRangeBound *lb,\n\t\t\t\t\tPartitionRangeBound
      *ub)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - bi
    - lb_pos
    - lb
    - ub
    argTypes:
    - PartitionBoundInfo
    - int*
    - PartitionRangeBound*
    - PartitionRangeBound*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2641
      start: 2594
    functionDepth: 1
    functionLinenumber: 2594
    functionLinenumberEnd: 2641
    functionName: get_range_partition_internal
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: "int get_range_partition_internal(PartitionBoundInfo bi,\n\t\t\t\t\t\t\t
      int *lb_pos,\n\t\t\t\t\t\t\t PartitionRangeBound *lb,\n\t\t\t\t\t\t\t PartitionRangeBound
      *ub)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2667,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2679,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2688,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 9
    argNames:
    - partnatts
    - partsupfuncs
    - partcollations
    - outer_lb
    - outer_ub
    - inner_lb
    - inner_ub
    - lb_cmpval
    - ub_cmpval
    argTypes:
    - int
    - FmgrInfo*
    - Oid*
    - PartitionRangeBound*
    - PartitionRangeBound*
    - PartitionRangeBound*
    - PartitionRangeBound*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2654
    functionDepth: 1
    functionLinenumber: 2654
    functionLinenumberEnd: 2693
    functionName: compare_range_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - compare_range_bounds
    linkageType: ''
    returnType: bool
    signature: "bool compare_range_partitions(int partnatts, FmgrInfo *partsupfuncs,\n\t\t\t\t\t\t
      Oid *partcollations,\n\t\t\t\t\t\t PartitionRangeBound *outer_lb,\n\t\t\t\t\t\t
      PartitionRangeBound *outer_ub,\n\t\t\t\t\t\t PartitionRangeBound *inner_lb,\n\t\t\t\t\t\t
      PartitionRangeBound *inner_ub,\n\t\t\t\t\t\t int *lb_cmpval, int *ub_cmpval)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2714,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2716,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2716,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2759,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 12
    argNames:
    - partnatts
    - partsupfuncs
    - partcollations
    - jointype
    - outer_lb
    - outer_ub
    - inner_lb
    - inner_ub
    - lb_cmpval
    - ub_cmpval
    - merged_lb
    - merged_ub
    argTypes:
    - int
    - FmgrInfo*
    - Oid*
    - JoinType
    - PartitionRangeBound*
    - PartitionRangeBound*
    - PartitionRangeBound*
    - PartitionRangeBound*
    - int
    - int
    - PartitionRangeBound*
    - PartitionRangeBound*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2761
      start: 2703
    functionDepth: 1
    functionLinenumber: 2703
    functionLinenumberEnd: 2761
    functionName: get_merged_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    - compare_range_bounds
    - elog
    linkageType: ''
    returnType: void
    signature: "void get_merged_range_bounds(int partnatts, FmgrInfo *partsupfuncs,\n\t\t\t\t\t\tOid
      *partcollations, JoinType jointype,\n\t\t\t\t\t\tPartitionRangeBound *outer_lb,\n\t\t\t\t\t\tPartitionRangeBound
      *outer_ub,\n\t\t\t\t\t\tPartitionRangeBound *inner_lb,\n\t\t\t\t\t\tPartitionRangeBound
      *inner_ub,\n\t\t\t\t\t\tint lb_cmpval, int ub_cmpval,\n\t\t\t\t\t\tPartitionRangeBound
      *merged_lb,\n\t\t\t\t\t\tPartitionRangeBound *merged_ub)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2782,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2791,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2792,1
    - Dst: llast_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2795,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2796,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2797,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2806,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2809,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2820,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2821,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2822,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2826,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2827,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2828,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 9
    argNames:
    - partnatts
    - partsupfuncs
    - partcollations
    - merged_lb
    - merged_ub
    - merged_index
    - merged_datums
    - merged_kinds
    - merged_indexes
    argTypes:
    - int
    - FmgrInfo*
    - Oid*
    - PartitionRangeBound*
    - PartitionRangeBound*
    - int
    - List**
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2829
      start: 2767
    functionDepth: 6
    functionLinenumber: 2767
    functionLinenumberEnd: 2829
    functionName: add_merged_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - Assert
    - lappend
    - llast
    - partition_rbound_cmp
    - llast_int
    linkageType: ''
    returnType: void
    signature: "void add_merged_range_bounds(int partnatts, FmgrInfo *partsupfuncs,\n\t\t\t\t\t\tOid
      *partcollations,\n\t\t\t\t\t\tPartitionRangeBound *merged_lb,\n\t\t\t\t\t\tPartitionRangeBound
      *merged_ub,\n\t\t\t\t\t\tint merged_index,\n\t\t\t\t\t\tList **merged_datums,\n\t\t\t\t\t\tList
      **merged_kinds,\n\t\t\t\t\t\tList **merged_indexes)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2847,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2860,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2861,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2871,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - boundinfo
    - live_parts
    argTypes:
    - PartitionBoundInfo
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2880
      start: 2844
    functionDepth: 3
    functionLinenumber: 2844
    functionLinenumberEnd: 2880
    functionName: partitions_are_ordered
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    - bms_is_member
    - partition_bound_has_default
    - bms_overlap
    linkageType: ''
    returnType: bool
    signature: bool partitions_are_ordered(PartitionBoundInfo boundinfo, Bitmapset
      *live_parts)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2892,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2893,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2907,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2911,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2912,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2913,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2914,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2915,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2922,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2923,1
    - Dst: partition_hash_bsearch
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2949,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2961,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2963,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2964,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2965,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2966,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2968,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2979,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2982,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2983,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2984,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2985,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2988,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3001,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3004,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3005,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3006,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3007,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3009,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3050,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3053,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3054,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3056,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3058,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3066,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3078,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3096,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3097,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3098,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3111,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3118,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3120,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3122,1
    - Dst: get_range_partbound_string
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3123,1
    - Dst: get_range_partbound_string
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3124,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3125,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3132,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3135,1
    - Dst: partition_range_bsearch
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3152,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3176,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3188,1
    - Dst: abs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3188,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3213,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3214,1
    - Dst: abs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3230,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3231,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3232,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 103
    argCount: 4
    argNames:
    - relname
    - parent
    - spec
    - pstate
    argTypes:
    - char*
    - Relation
    - PartitionBoundSpec*
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3234
      start: 2888
    functionDepth: 3
    functionLinenumber: 2888
    functionLinenumberEnd: 3234
    functionName: check_new_partition_bound
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - errcode
    - partition_hash_bsearch
    - foreach
    - Assert
    - linitial
    - get_rel_name
    - errmsg
    - get_range_partbound_string
    - ereport
    - partition_rbound_cmp
    - partition_bound_accepts_nulls
    - lfirst_node
    - parser_errposition
    - RelationGetPartitionDesc
    - partition_bound_has_default
    - abs
    - partition_list_bsearch
    - DatumGetInt32
    - RelationGetPartitionKey
    - errdetail
    - list_nth
    - partition_range_bsearch
    - make_one_partition_rbound
    linkageType: ''
    returnType: void
    signature: "void check_new_partition_bound(char *relname, Relation parent,\n\t\t\t\t\t\t
      \ PartitionBoundSpec *spec, ParseState *pstate)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: get_qual_for_list
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3253,1
    - Dst: get_qual_for_range
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3254,1
    - Dst: get_proposed_default_constraint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3256,1
    - Dst: map_partition_varattnos
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3263,1
    - Dst: PartConstraintImpliedByRelConstraint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3273,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3274,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3275,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3284,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3284,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3287,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3287,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3291,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3303,1
    - Dst: table_open
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3305,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3311,1
    - Dst: map_partition_varattnos
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3313,1
    - Dst: PartConstraintImpliedByRelConstraint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3324,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3325,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3326,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3328,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3335,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3345,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3346,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3347,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3348,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3349,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3351,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3351,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3352,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3357,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3360,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3362,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3363,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3363,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3364,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3365,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3372,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3372,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3374,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3378,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3379,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3380,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3381,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3382,1
    - Dst: errtable
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3383,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3385,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3386,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3389,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3390,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3391,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3392,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3393,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3395,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3395,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3396,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 3
    argNames:
    - parent
    - default_rel
    - new_spec
    argTypes:
    - Relation
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3398
      start: 3243
    functionDepth: 7
    functionLinenumber: 3243
    functionLinenumberEnd: 3398
    functionName: check_default_partition_contents
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - errcode
    - FreeExecutorState
    - RegisterSnapshot
    - RelationGetRelationName
    - map_partition_varattnos
    - lfirst_oid
    - table_close
    - get_qual_for_list
    - make_ands_explicit
    - get_qual_for_range
    - GetLatestSnapshot
    - table_beginscan
    - errtable
    - table_open
    - errmsg
    - table_endscan
    - UnregisterSnapshot
    - ExecDropSingleTupleTableSlot
    - errmsg_internal
    - ereport
    - table_slot_create
    - CHECK_FOR_INTERRUPTS
    - list_make1_oid
    - ExecPrepareExpr
    - CreateExecutorState
    - find_all_inheritors
    - PartConstraintImpliedByRelConstraint
    - table_scan_getnextslot
    - GetPerTupleExprContext
    - MemoryContextSwitchTo
    - ExecCheck
    - get_proposed_default_constraint
    - GetPerTupleMemoryContext
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void check_default_partition_contents(Relation parent, Relation default_rel,\n\t\t\t\t\t\t\t\t
      PartitionBoundSpec *new_spec)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3291,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3303,1
    - Dst: table_open
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3305,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3311,1
    - Dst: map_partition_varattnos
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3313,1
    - Dst: PartConstraintImpliedByRelConstraint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3324,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3325,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3326,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3328,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3335,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3345,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3346,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3347,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3348,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3349,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3351,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3351,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3352,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3357,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3360,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3362,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3363,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3363,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3364,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3365,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3372,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3372,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3374,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3378,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3379,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3380,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3381,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3382,1
    - Dst: errtable
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3383,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3385,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3386,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3389,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3390,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3391,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3392,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3393,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3395,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3395,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3396,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3397
      start: 3289
    functionDepth: 4
    functionLinenumber: 3289
    functionLinenumberEnd: 3397
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 452
    functionsReached:
    - ResetExprContext
    - errcode
    - FreeExecutorState
    - RegisterSnapshot
    - RelationGetRelationName
    - map_partition_varattnos
    - lfirst_oid
    - table_close
    - make_ands_explicit
    - GetLatestSnapshot
    - table_beginscan
    - errtable
    - table_open
    - errmsg
    - table_endscan
    - UnregisterSnapshot
    - ExecDropSingleTupleTableSlot
    - errmsg_internal
    - ereport
    - table_slot_create
    - CHECK_FOR_INTERRUPTS
    - ExecPrepareExpr
    - CreateExecutorState
    - PartConstraintImpliedByRelConstraint
    - table_scan_getnextslot
    - GetPerTupleExprContext
    - MemoryContextSwitchTo
    - ExecCheck
    - GetPerTupleMemoryContext
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, all_parts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - bound
    argTypes:
    - PartitionBoundInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3412
      start: 3407
    functionDepth: 1
    functionLinenumber: 3407
    functionLinenumberEnd: 3412
    functionName: get_hash_partition_greatest_modulus
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: int get_hash_partition_greatest_modulus(PartitionBoundInfo bound)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3428,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3430,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3432,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3433,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3439,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3446,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - key
    - index
    - datums
    - lower
    argTypes:
    - PartitionKey
    - int
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3457
      start: 3421
    functionDepth: 1
    functionLinenumber: 3421
    functionLinenumberEnd: 3457
    functionName: make_one_partition_rbound
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - elog
    - palloc0_object
    - palloc0_array
    - Assert
    - castNode
    - lfirst_node
    linkageType: ''
    returnType: PartitionRangeBound
    signature: 'PartitionRangeBound *

      make_one_partition_rbound(PartitionKey key, int index, List *datums, bool lower)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3439,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3446,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3454
      start: 3437
    functionDepth: 1
    functionLinenumber: 3437
    functionLinenumberEnd: 3454
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 452
    functionsReached:
    - elog
    - castNode
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, datums)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3518,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3518,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 7
    argNames:
    - partnatts
    - partsupfunc
    - partcollation
    - datums1
    - kind1
    - lower1
    - b2
    argTypes:
    - int
    - FmgrInfo*
    - Oid*
    - Datum*
    - PartitionRangeDatumKind*
    - bool
    - PartitionRangeBound*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3536
      start: 3480
    functionDepth: 1
    functionLinenumber: 3480
    functionLinenumberEnd: 3536
    functionName: partition_rbound_cmp
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    linkageType: ''
    returnType: int32
    signature: "int32 partition_rbound_cmp(int partnatts, FmgrInfo *partsupfunc,\n\t\t\t\t\t
      Oid *partcollation,\n\t\t\t\t\t Datum *datums1, PartitionRangeDatumKind *kind1,\n\t\t\t\t\t
      bool lower1, PartitionRangeBound *b2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3563,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3563,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 6
    argNames:
    - partsupfunc
    - partcollation
    - rb_datums
    - rb_kind
    - tuple_datums
    - n_tuple_datums
    argTypes:
    - FmgrInfo*
    - Oid*
    - Datum*
    - PartitionRangeDatumKind*
    - Datum*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3572
      start: 3548
    functionDepth: 1
    functionLinenumber: 3548
    functionLinenumberEnd: 3572
    functionName: partition_rbound_datum_cmp
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    linkageType: ''
    returnType: int32
    signature: "int32 partition_rbound_datum_cmp(FmgrInfo *partsupfunc, Oid *partcollation,\n\t\t\t\t\t\t
      \  const Datum *rb_datums, PartitionRangeDatumKind *rb_kind,\n\t\t\t\t\t\t   const
      Datum *tuple_datums, int n_tuple_datums)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - modulus1
    - remainder1
    - modulus2
    - remainder2
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3589
      start: 3579
    functionDepth: 0
    functionLinenumber: 3579
    functionLinenumberEnd: 3589
    functionName: partition_hbound_cmp
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int32
    signature: int32 partition_hbound_cmp(int modulus1, int remainder1, int modulus2,
      int remainder2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3615,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3615,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - partsupfunc
    - partcollation
    - boundinfo
    - value
    - is_equal
    argTypes:
    - FmgrInfo*
    - Oid*
    - PartitionBoundInfo
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3631
      start: 3599
    functionDepth: 1
    functionLinenumber: 3599
    functionLinenumberEnd: 3631
    functionName: partition_list_bsearch
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 3
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    linkageType: ''
    returnType: int
    signature: "int partition_list_bsearch(FmgrInfo *partsupfunc, Oid *partcollation,\n\t\t\t\t\t
      \  PartitionBoundInfo boundinfo,\n\t\t\t\t\t   Datum value, bool *is_equal)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3660,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 6
    argNames:
    - partnatts
    - partsupfunc
    - partcollation
    - boundinfo
    - probe
    - cmpval
    argTypes:
    - int
    - FmgrInfo*
    - Oid*
    - PartitionBoundInfo
    - PartitionRangeBound*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3677
      start: 3645
    functionDepth: 2
    functionLinenumber: 3645
    functionLinenumberEnd: 3677
    functionName: partition_range_bsearch
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - partition_rbound_cmp
    linkageType: ''
    returnType: int
    signature: "int partition_range_bsearch(int partnatts, FmgrInfo *partsupfunc,\n\t\t\t\t\t\tOid
      *partcollation,\n\t\t\t\t\t\tPartitionBoundInfo boundinfo,\n\t\t\t\t\t\tPartitionRangeBound
      *probe, int32 *cmpval)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3703,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - partsupfunc
    - partcollation
    - boundinfo
    - nvalues
    - values
    - is_equal
    argTypes:
    - FmgrInfo*
    - Oid*
    - PartitionBoundInfo
    - int
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3722
      start: 3687
    functionDepth: 2
    functionLinenumber: 3687
    functionLinenumberEnd: 3722
    functionName: partition_range_datum_bsearch
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - partition_rbound_datum_cmp
    linkageType: ''
    returnType: int
    signature: "int partition_range_datum_bsearch(FmgrInfo *partsupfunc, Oid *partcollation,\n\t\t\t\t\t\t\t
      \ PartitionBoundInfo boundinfo,\n\t\t\t\t\t\t\t  int nvalues, const Datum *values,
      bool *is_equal)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3747,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3748,1
    - Dst: partition_hbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3749,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - boundinfo
    - modulus
    - remainder
    argTypes:
    - PartitionBoundInfo
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3763
      start: 3730
    functionDepth: 1
    functionLinenumber: 3730
    functionLinenumberEnd: 3763
    functionName: partition_hash_bsearch
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - DatumGetInt32
    - partition_hbound_cmp
    linkageType: ''
    returnType: int
    signature: "int partition_hash_bsearch(PartitionBoundInfo boundinfo,\n\t\t\t\t\t
      \  int modulus, int remainder)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: partition_hbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3778
      start: 3770
    functionDepth: 1
    functionLinenumber: 3770
    functionLinenumberEnd: 3778
    functionName: qsort_partition_hbound_cmp
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - partition_hbound_cmp
    linkageType: ''
    returnType: int32
    signature: int32 qsort_partition_hbound_cmp(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3792,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3795
      start: 3785
    functionDepth: 1
    functionLinenumber: 3785
    functionLinenumberEnd: 3795
    functionName: qsort_partition_list_value_cmp
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    linkageType: ''
    returnType: int32
    signature: int32 qsort_partition_list_value_cmp(const void *a, const void *b,
      void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3812
      start: 3802
    functionDepth: 1
    functionLinenumber: 3802
    functionLinenumberEnd: 3812
    functionName: qsort_partition_rbound_cmp
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - compare_range_bounds
    linkageType: ''
    returnType: int32
    signature: int32 qsort_partition_rbound_cmp(const void *a, const void *b, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3834,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3838,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3839,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3850,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - key
    - col
    - strategy
    - need_relabel
    argTypes:
    - PartitionKey
    - int
    - StrategyNumber
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3853
      start: 3824
    functionDepth: 1
    functionLinenumber: 3824
    functionLinenumberEnd: 3853
    functionName: get_partition_operator
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - IsPolymorphicType
    - elog
    - get_opfamily_member
    linkageType: ''
    returnType: Oid
    signature: "Oid get_partition_operator(PartitionKey key, int col, StrategyNumber
      strategy,\n\t\t\t\t\t   bool *need_relabel)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_partition_operator
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3869,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3876,1
    - Dst: makeRelabelType
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3879,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3891,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3893,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3894,1
    - Dst: type_is_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3897,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3903,1
    - Dst: get_array_type
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3905,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3913,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3915,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3920,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3932,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3935,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3941,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3944,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3944,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3950,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3959,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 5
    argNames:
    - key
    - keynum
    - strategy
    - arg1
    - arg2
    argTypes:
    - PartitionKey
    - int
    - uint16
    - Expr*
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3964
      start: 3860
    functionDepth: 6
    functionLinenumber: 3860
    functionLinenumberEnd: 3964
    functionName: make_partition_op_expr
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - type_is_array
    - get_array_type
    - makeRelabelType
    - get_partition_operator
    - Assert
    - linitial
    - lappend
    - makeNode
    - list_make2
    - lfirst
    - make_opclause
    - list_length
    - IsA
    - get_opcode
    - makeBoolExpr
    linkageType: ''
    returnType: Expr
    signature: "Expr *\nmake_partition_op_expr(PartitionKey key, int keynum,\n\t\t\t\t\t
      \  uint16 strategy, Expr *arg1, Expr *arg2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3932,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3935,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3942
      start: 3930
    functionDepth: 6
    functionLinenumber: 3930
    functionLinenumberEnd: 3942
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 452
    functionsReached:
    - lfirst
    - make_opclause
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, elems)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3978,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3988,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3992,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3992,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3996,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4000,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4004,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4008,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4012,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4013,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4023,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4032,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4032,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4033,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4036,1
    - Dst: makeFuncExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4039,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4046,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - parent
    - spec
    argTypes:
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4047
      start: 3975
    functionDepth: 6
    functionLinenumber: 3975
    functionLinenumberEnd: 4047
    functionName: get_qual_for_hash
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - copyObject
    - makeFuncExpr
    - Int32GetDatum
    - lappend
    - lnext
    - list_head
    - lfirst
    - RelationGetPartitionKey
    - list_make1
    - makeConst
    - ObjectIdGetDatum
    - list_make3
    - RelationGetRelid
    - makeVar
    linkageType: ''
    returnType: List
    signature: 'List *

      get_qual_for_hash(Relation parent, PartitionBoundSpec *spec)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4061,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4074,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4078,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4085,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4085,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4096,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4103,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4123,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4127,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4133,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4141,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4143,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4148,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4148,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4158,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4177,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4183,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4183,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4191,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4201,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4201,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4202,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4205,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4216,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4216,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4217,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4217,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 2
    argNames:
    - parent
    - spec
    argTypes:
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4221
      start: 4058
    functionDepth: 7
    functionLinenumber: 4058
    functionLinenumberEnd: 4221
    functionName: get_qual_for_list
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - RelationGetPartitionDesc
    - make_ands_explicit
    - copyObject
    - foreach
    - Assert
    - linitial
    - make_partition_op_expr
    - datumCopy
    - lappend
    - makeNode
    - lfirst_node
    - list_make2
    - makeBoolExpr
    - RelationGetPartitionKey
    - list_make1
    - makeConst
    - partition_bound_accepts_nulls
    - makeVar
    linkageType: ''
    returnType: List
    signature: 'List *

      get_qual_for_list(Relation parent, PartitionBoundSpec *spec)'
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4280,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4296,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4308,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4308,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4309,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4310,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4312,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4315,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4315,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4316,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4317,1
    - Dst: get_qual_for_range
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4323,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4329,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4329,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4330,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4331,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4333,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4347,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4348,1
    - Dst: get_range_nulltest
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4348,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4349,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4350,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4352,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4359,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4359,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4360,1
    - Dst: get_range_nulltest
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4371,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4382,1
    - Dst: forboth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4384,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4393,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4394,1
    - Dst: get_range_key_properties
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4403,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4418,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4419,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4420,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4423,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4424,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4425,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4426,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4428,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4429,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4432,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4441,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4444,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4445,1
    - Dst: for_both_cell
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4469,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4475,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4476,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4477,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4478,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4478,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4479,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4480,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4481,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4482,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4482,1
    - Dst: get_range_key_properties
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4483,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4507,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4508,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4531,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4532,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4561,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4562,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4563,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4564,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4567,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4568,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4569,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4570,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4585,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4586,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4587,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4588,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4590,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4591,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4592,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4593,1
    - Dst: get_range_nulltest
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4603,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4604,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4604,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 106
    argCount: 3
    argNames:
    - parent
    - spec
    - for_default
    argTypes:
    - Relation
    - PartitionBoundSpec*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4607
      start: 4267
    functionDepth: 7
    functionLinenumber: 4267
    functionLinenumberEnd: 4607
    functionName: get_qual_for_range
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 3
    functionsReached:
    - for_both_cell
    - FreeExecutorState
    - list_head
    - ExecEvalExprSwitchContext
    - DatumGetBool
    - SearchSysCache1
    - elog
    - fix_opfuncids
    - get_qual_for_range
    - HeapTupleIsValid
    - linitial
    - get_range_key_properties
    - make_partition_op_expr
    - makeBoolConst
    - lnext
    - ReleaseSysCache
    - list_length
    - get_range_nulltest
    - TextDatumGetCString
    - ObjectIdGetDatum
    - lappend
    - stringToNode
    - lfirst
    - list_make1
    - SysCacheGetAttrNotNull
    - makeBoolExpr
    - lfirst_node
    - RelationGetPartitionDesc
    - CreateExecutorState
    - castNode
    - GetPerTupleExprContext
    - MemoryContextSwitchTo
    - ExecInitExpr
    - RelationGetPartitionKey
    - IsA
    - forboth
    linkageType: ''
    returnType: List
    signature: "List *\nget_qual_for_range(Relation parent, PartitionBoundSpec *spec,\n\t\t\t\t
      \  bool for_default)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeVar
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4635,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4645,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4646,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4646,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4647,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4652,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4652,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4657,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4657,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 8
    argNames:
    - key
    - keynum
    - ldatum
    - udatum
    - partexprs_item
    - keyCol
    - lower_val
    - upper_val
    argTypes:
    - PartitionKey
    - int
    - PartitionRangeDatum*
    - PartitionRangeDatum*
    - ListCell**
    - Expr**
    - Const**
    - Const**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4660
      start: 4624
    functionDepth: 2
    functionLinenumber: 4624
    functionLinenumberEnd: 4660
    functionName: get_range_key_properties
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - elog
    - copyObject
    - castNode
    - lnext
    - lfirst
    - makeVar
    linkageType: ''
    returnType: void
    signature: "void get_range_key_properties(PartitionKey key, int keynum,\n\t\t\t\t\t\t
      PartitionRangeDatum *ldatum,\n\t\t\t\t\t\t PartitionRangeDatum *udatum,\n\t\t\t\t\t\t
      ListCell **partexprs_item,\n\t\t\t\t\t\t Expr **keyCol,\n\t\t\t\t\t\t Const
      **lower_val, Const **upper_val)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4676,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4683,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4693,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4694,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4694,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4695,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4698,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4703,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - key
    argTypes:
    - PartitionKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4707
      start: 4668
    functionDepth: 6
    functionLinenumber: 4668
    functionLinenumberEnd: 4707
    functionName: get_range_nulltest
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - elog
    - copyObject
    - lappend
    - lnext
    - makeNode
    - list_head
    - lfirst
    - makeVar
    linkageType: ''
    returnType: List
    signature: 'List *

      get_range_nulltest(PartitionKey key)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4729,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4729,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4736,1
    - Dst: hash_combine64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4740,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4740,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - partnatts
    - partsupfunc
    - partcollation
    - values
    - isnull
    argTypes:
    - int
    - FmgrInfo*
    - Oid*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4745
      start: 4714
    functionDepth: 2
    functionLinenumber: 4714
    functionLinenumberEnd: 4745
    functionName: compute_partition_hash_value
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - hash_combine64
    - Assert
    - FunctionCall2Coll
    - DatumGetUInt64
    - UInt64GetDatum
    - OidIsValid
    linkageType: ''
    returnType: uint64
    signature: "uint64 compute_partition_hash_value(int partnatts, FmgrInfo *partsupfunc,
      const Oid *partcollation,\n\t\t\t\t\t\t\t const Datum *values, const bool *isnull)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4780,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4785,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4785,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4785,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4786,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4787,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4788,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4789,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4793,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4794,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4795,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4797,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4798,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4799,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4801,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4802,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4803,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4816,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4817,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4821,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4822,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4823,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4824,1
    - Dst: get_fn_expr_variadic
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4826,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4828,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4832,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4833,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4834,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4839,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4845,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4851,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4853,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4854,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4855,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4856,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4857,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4857,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4859,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4864,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4867,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4868,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4872,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4876,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4882,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4883,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4892,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4893,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4894,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4896,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4897,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4899,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4905,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4908,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4926,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4929,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4931,1
    - Dst: hash_combine64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4935,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4935,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4947,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4948,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4950,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4952,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4961,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4962,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4963,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4973,1
    - Dst: hash_combine64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4979,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4979,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4983,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4984
      start: 4763
    functionDepth: 2
    functionLinenumber: 4763
    functionLinenumberEnd: 4984
    functionName: satisfies_hash_partition
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - errcode
    - PG_RETURN_BOOL
    - PG_GETARG_ARRAYTYPE_P
    - IsBinaryCoercible
    - get_typlenbyvalalign
    - memcpy
    - UInt64GetDatum
    - get_rel_name
    - errmsg
    - OidIsValid
    - relation_close
    - MemoryContextAllocZero
    - fmgr_info_copy
    - get_fn_expr_variadic
    - ereport
    - FunctionCall2Coll
    - get_fn_expr_argtype
    - relation_open
    - PG_GETARG_INT32
    - deconstruct_array
    - PG_NARGS
    - hash_combine64
    - format_type_be
    - ARR_ELEMTYPE
    - DatumGetUInt64
    - PG_GETARG_OID
    - RelationGetPartitionKey
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum satisfies_hash_partition(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5019,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5024,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5026,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5027,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5033,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5040,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5043,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5044,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5045,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5047,1
    - Dst: errhint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5049,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5050,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5052,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5053,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5054,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5056,1
    - Dst: errhint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5058,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5059,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 8
    argNames:
    - parent
    - first_name
    - first_bound
    - second_name
    - second_bound
    - defaultPart
    - is_merge
    - pstate
    argTypes:
    - Relation
    - RangeVar*
    - PartitionBoundSpec*
    - RangeVar*
    - PartitionBoundSpec*
    - bool
    - bool
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5061
      start: 5009
    functionDepth: 2
    functionLinenumber: 5009
    functionLinenumberEnd: 5061
    functionName: check_two_partitions_bounds_range
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - linitial
    - errdetail
    - ereport
    - errhint
    - partition_rbound_cmp
    - RelationGetPartitionKey
    - errmsg
    - make_one_partition_rbound
    - parser_errposition
    linkageType: ''
    returnType: void
    signature: "void check_two_partitions_bounds_range(Relation parent,\n\t\t\t\t\t\t\t\t
      \ RangeVar *first_name,\n\t\t\t\t\t\t\t\t  PartitionBoundSpec *first_bound,\n\t\t\t\t\t\t\t\t
      \ RangeVar *second_name,\n\t\t\t\t\t\t\t\t  PartitionBoundSpec *second_bound,\n\t\t\t\t\t\t\t\t
      \ bool defaultPart,\n\t\t\t\t\t\t\t\t  bool is_merge,\n\t\t\t\t\t\t\t\t  ParseState
      *pstate)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5077,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5077,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5078,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5079,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5081,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5085,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5088,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5088,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5090,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5091,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5094,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - partOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5096
      start: 5068
    functionDepth: 3
    functionLinenumber: 5068
    functionLinenumberEnd: 5096
    functionName: get_partition_bound_spec
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - ReleaseSysCache
    - stringToNode
    - TextDatumGetCString
    - ObjectIdGetDatum
    - IsA
    - SysCacheGetAttr
    linkageType: ''
    returnType: PartitionBoundSpec
    signature: 'PartitionBoundSpec *

      get_partition_bound_spec(Oid partOid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5120,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5128,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5131,1
    - Dst: get_partition_bound_spec
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5139,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5140,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5142,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5143,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5147,1
    - Dst: check_two_partitions_bounds_range
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5156,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5157,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5158,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5159,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5160,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5171,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5178,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5180,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5181,1
    - Dst: get_partition_bound_spec
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5190,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5191,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 5
    argNames:
    - parent
    - partNames
    - partOids
    - spec
    - pstate
    argTypes:
    - Relation
    - List*
    - List*
    - PartitionBoundSpec*
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5200
      start: 5110
    functionDepth: 6
    functionLinenumber: 5110
    functionLinenumberEnd: 5200
    functionName: calculate_partition_bound_for_merge
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - elog
    - palloc0_array
    - list_free
    - Assert
    - check_two_partitions_bounds_range
    - pfree
    - lappend
    - qsort_arg
    - list_concat
    - RelationGetPartitionKey
    - get_partition_bound_spec
    - list_length
    - list_nth
    - foreach_current_index
    - make_one_partition_rbound
    linkageType: ''
    returnType: void
    signature: "void calculate_partition_bound_for_merge(Relation parent,\n\t\t\t\t\t\t\t\t\tList
      *partNames,\n\t\t\t\t\t\t\t\t\tList *partOids,\n\t\t\t\t\t\t\t\t\tPartitionBoundSpec
      *spec,\n\t\t\t\t\t\t\t\t\tParseState *pstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_partition_bound_spec
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5139,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5140,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5142,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5144
      start: 5137
    functionDepth: 6
    functionLinenumber: 5137
    functionLinenumberEnd: 5144
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 3
    functionsReached:
    - lappend
    - foreach_current_index
    - make_one_partition_rbound
    - get_partition_bound_spec
    linkageType: ''
    returnType: void
    signature: void foreach_oid(partoid, partOids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_partition_bound_spec
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5190,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5192
      start: 5188
    functionDepth: 5
    functionLinenumber: 5188
    functionLinenumberEnd: 5192
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 3
    functionsReached:
    - list_concat
    - get_partition_bound_spec
    linkageType: ''
    returnType: void
    signature: void foreach_oid(partoid, partOids)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5235,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5244,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5244,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5249,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 4
    argNames:
    - partsupfunc
    - partcollation
    - list1
    - list2
    argTypes:
    - FmgrInfo*
    - Oid*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5256
      start: 5216
    functionDepth: 6
    functionLinenumber: 5216
    functionLinenumberEnd: 5256
    functionName: partitions_listdatum_intersection
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    - lappend
    linkageType: ''
    returnType: List
    signature: "List *\npartitions_listdatum_intersection(FmgrInfo *partsupfunc, Oid
      *partcollation,\n\t\t\t\t\t\t\t\t  const List *list1, const List *list2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5235,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5244,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5244,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5249,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5253
      start: 5225
    functionDepth: 6
    functionLinenumber: 5225
    functionLinenumberEnd: 5253
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 22
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach_node(Const, val1, list1)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5235,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5244,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5244,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5249,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5252
      start: 5229
    functionDepth: 6
    functionLinenumber: 5229
    functionLinenumberEnd: 5252
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 22
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach_node(Const, val2, list2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5276,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5283,1
    - Dst: partitions_listdatum_intersection
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5293,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5297,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5299,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5301,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5302,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5303,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5305,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - parent
    - parts
    - nparts
    - pstate
    argTypes:
    - Relation
    - SinglePartitionSpec**
    - int
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5309
      start: 5270
    functionDepth: 7
    functionLinenumber: 5270
    functionLinenumberEnd: 5309
    functionName: check_partitions_not_overlap_list
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - linitial_node
    - Assert
    - errcode
    - partitions_listdatum_intersection
    - ereport
    - errmsg
    - RelationGetPartitionKey
    - exprLocation
    - list_length
    - parser_errposition
    linkageType: ''
    returnType: void
    signature: "void check_partitions_not_overlap_list(Relation parent,\n\t\t\t\t\t\t\t\t
      \ SinglePartitionSpec **parts,\n\t\t\t\t\t\t\t\t  int nparts,\n\t\t\t\t\t\t\t\t
      \ ParseState *pstate)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5346,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5352,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5354,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5355,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5367,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5371,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5373,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5374,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5375,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5377,1
    - Dst: get_range_partbound_string
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5378,1
    - Dst: get_range_partbound_string
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5379,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5380,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5380,1
    - Dst: get_partition_bound_spec
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5389,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5396,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5398,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5404,1
    - Dst: abs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5404,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5415,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5416,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5417,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5419,1
    - Dst: errhint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5420,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5422,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5422,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5425,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5426,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5427,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5429,1
    - Dst: errhint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5430,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5431,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5431,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5438,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5440,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5446,1
    - Dst: abs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5446,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5457,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5458,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5459,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5461,1
    - Dst: errhint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5462,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5464,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5464,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5467,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5468,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5469,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5471,1
    - Dst: errhint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5472,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5473,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5473,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 8
    argNames:
    - parent
    - relname
    - spec
    - splitPartOid
    - first
    - last
    - defaultPart
    - pstate
    argTypes:
    - Relation
    - char*
    - PartitionBoundSpec*
    - Oid
    - bool
    - bool
    - bool
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5476
      start: 5336
    functionDepth: 4
    functionLinenumber: 5336
    functionLinenumberEnd: 5476
    functionName: check_partition_bounds_for_split_range
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - errdetail
    - get_range_partbound_string
    - get_partition_bound_spec
    - ereport
    - abs
    - errhint
    - get_rel_name
    - partition_rbound_cmp
    - RelationGetPartitionKey
    - errmsg
    - exprLocation
    - list_nth
    - make_one_partition_rbound
    - parser_errposition
    linkageType: ''
    returnType: void
    signature: "void check_partition_bounds_for_split_range(Relation parent,\n\t\t\t\t\t\t\t\t\t
      \  char *relname,\n\t\t\t\t\t\t\t\t\t   PartitionBoundSpec *spec,\n\t\t\t\t\t\t\t\t\t
      \  Oid splitPartOid,\n\t\t\t\t\t\t\t\t\t   bool first,\n\t\t\t\t\t\t\t\t\t   bool
      last,\n\t\t\t\t\t\t\t\t\t   bool defaultPart,\n\t\t\t\t\t\t\t\t\t   ParseState
      *pstate)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5498,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5505,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5506,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5507,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5514,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5516,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5537,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5538,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5539,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5541,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5542,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5544,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5554,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5555,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5556,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5558,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5559,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5564,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5567,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5568,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5569,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 5
    argNames:
    - parent
    - relname
    - spec
    - splitPartOid
    - pstate
    argTypes:
    - Relation
    - char*
    - PartitionBoundSpec*
    - Oid
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5571
      start: 5492
    functionDepth: 2
    functionLinenumber: 5492
    functionLinenumberEnd: 5571
    functionName: check_partition_bounds_for_split_list
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - RelationGetPartitionDesc
    - errcode
    - Assert
    - ereport
    - foreach_node
    - partition_list_bsearch
    - get_rel_name
    - errmsg
    - RelationGetPartitionKey
    - exprLocation
    - partition_bound_accepts_nulls
    - parser_errposition
    linkageType: ''
    returnType: void
    signature: "void check_partition_bounds_for_split_list(Relation parent, char *relname,\n\t\t\t\t\t\t\t\t\t
      \ PartitionBoundSpec *spec,\n\t\t\t\t\t\t\t\t\t  Oid splitPartOid,\n\t\t\t\t\t\t\t\t\t
      \ ParseState *pstate)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: foreach_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5601,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5608,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5608,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 6
    argNames:
    - partsupfunc
    - partcollation
    - parts
    - nparts
    - value
    - isnull
    argTypes:
    - FmgrInfo*
    - Oid*
    - SinglePartitionSpec**
    - int
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5617
      start: 5589
    functionDepth: 1
    functionLinenumber: 5589
    functionLinenumberEnd: 5617
    functionName: find_value_in_new_partitions_list
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    - foreach_node
    linkageType: ''
    returnType: bool
    signature: "bool find_value_in_new_partitions_list(FmgrInfo *partsupfunc,\n\t\t\t\t\t\t\t\t
      \ Oid *partcollation,\n\t\t\t\t\t\t\t\t  SinglePartitionSpec **parts,\n\t\t\t\t\t\t\t\t
      \ int nparts,\n\t\t\t\t\t\t\t\t  Datum value,\n\t\t\t\t\t\t\t\t  bool isnull)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5640,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5641,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5645,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5647,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5653,1
    - Dst: find_value_in_new_partitions_list
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5656,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5662,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5664,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5666,1
    - Dst: errhint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5667,1
    - Dst: find_value_in_new_partitions_list
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5680,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5697,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5705,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5706,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5707,1
    - Dst: deparse_expression
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5708,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5709,1
    - Dst: errhint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5710,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 5
    argNames:
    - parent
    - partOid
    - parts
    - nparts
    - pstate
    argTypes:
    - Relation
    - Oid
    - SinglePartitionSpec**
    - int
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5713
      start: 5633
    functionDepth: 2
    functionLinenumber: 5633
    functionLinenumberEnd: 5713
    functionName: check_parent_values_in_new_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - RelationGetPartitionDesc
    - find_value_in_new_partitions_list
    - errcode
    - Assert
    - ereport
    - errhint
    - get_rel_name
    - deparse_expression
    - PointerGetDatum
    - RelationGetPartitionKey
    - errmsg
    - makeConst
    - partition_bound_accepts_nulls
    linkageType: ''
    returnType: void
    signature: "void check_parent_values_in_new_partitions(Relation parent,\n\t\t\t\t\t\t\t\t\t
      \ Oid partOid,\n\t\t\t\t\t\t\t\t\t  SinglePartitionSpec **parts,\n\t\t\t\t\t\t\t\t\t
      \ int nparts,\n\t\t\t\t\t\t\t\t\t  ParseState *pstate)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5731,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5732,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5735,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5737,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5745,1
    - Dst: find_value_in_new_partitions_list
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5748,1
    - Dst: find_value_in_new_partitions_list
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5764,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - parent
    - splitPartOid
    - part
    argTypes:
    - Relation
    - Oid
    - SinglePartitionSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5772
      start: 5726
    functionDepth: 2
    functionLinenumber: 5726
    functionLinenumberEnd: 5772
    functionName: split_partition_values_contained_in_new_part
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - RelationGetPartitionDesc
    - find_value_in_new_partitions_list
    - Assert
    - PointerGetDatum
    - RelationGetPartitionKey
    - partition_bound_accepts_nulls
    linkageType: ''
    returnType: bool
    signature: "bool split_partition_values_contained_in_new_part(Relation parent,\n\t\t\t\t\t\t\t\t\t\t\t
      Oid splitPartOid,\n\t\t\t\t\t\t\t\t\t\t\t SinglePartitionSpec *part)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5802,1
    - Dst: get_partition_bound_spec
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5812,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5821,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5822,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5823,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5824,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5826,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5831,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5839,1
    - Dst: split_partition_values_contained_in_new_part
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5841,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5846,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5847,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5848,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5849,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5850,1
    - Dst: errhint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5851,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5852,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 5
    argNames:
    - parent
    - splitPartOid
    - parts
    - nparts
    - pstate
    argTypes:
    - Relation
    - Oid
    - SinglePartitionSpec**
    - int
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5853
      start: 5795
    functionDepth: 4
    functionLinenumber: 5795
    functionLinenumberEnd: 5853
    functionName: check_split_partition_not_same_bound
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - errdetail
    - ereport
    - split_partition_values_contained_in_new_part
    - errhint
    - get_rel_name
    - partition_rbound_cmp
    - RelationGetPartitionKey
    - get_partition_bound_spec
    - errmsg
    - make_one_partition_rbound
    - parser_errposition
    linkageType: ''
    returnType: void
    signature: "void check_split_partition_not_same_bound(Relation parent,\n\t\t\t\t\t\t\t\t\t
      Oid splitPartOid,\n\t\t\t\t\t\t\t\t\t SinglePartitionSpec **parts,\n\t\t\t\t\t\t\t\t\t
      int nparts,\n\t\t\t\t\t\t\t\t\t ParseState *pstate)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5896,1
    - Dst: get_partition_strategy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5897,1
    - Dst: get_default_oid_from_partdesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5900,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5900,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5902,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5909,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5909,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5926,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5926,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5939,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5944,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5949,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5954,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5958,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5959,1
    - Dst: check_new_partition_bound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5972,1
    - Dst: check_partition_bounds_for_split_range
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5990,1
    - Dst: check_partition_bounds_for_split_list
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5995,1
    - Dst: check_two_partitions_bounds_range
      Src: /src/postgres/src/backend/partitioning/partbounds.c:6001,1
    - Dst: check_partitions_not_overlap_list
      Src: /src/postgres/src/backend/partitioning/partbounds.c:6013,1
    - Dst: check_parent_values_in_new_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:6022,1
    - Dst: check_split_partition_not_same_bound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:6033,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:6036,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 4
    argNames:
    - parent
    - splitPartOid
    - partlist
    - pstate
    argTypes:
    - Relation
    - Oid
    - List*
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6037
      start: 5874
    functionDepth: 8
    functionLinenumber: 5874
    functionLinenumberEnd: 6037
    functionName: check_partitions_for_split
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - check_new_partition_bound
    - RelationGetPartitionDesc
    - palloc0_array
    - check_parent_values_in_new_partitions
    - get_partition_strategy
    - Assert
    - pfree
    - check_two_partitions_bounds_range
    - get_default_oid_from_partdesc
    - qsort_arg
    - check_partition_bounds_for_split_range
    - RelationGetPartitionKey
    - check_partitions_not_overlap_list
    - list_length
    - check_split_partition_not_same_bound
    - foreach_current_index
    - check_partition_bounds_for_split_list
    - make_one_partition_rbound
    linkageType: ''
    returnType: void
    signature: "void check_partitions_for_split(Relation parent,\n\t\t\t\t\t\t   Oid
      splitPartOid,\n\t\t\t\t\t\t   List *partlist,\n\t\t\t\t\t\t   ParseState *pstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/partitioning/partbounds.c:5917,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5920
      start: 5914
    functionDepth: 1
    functionLinenumber: 5914
    functionLinenumberEnd: 5920
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 24
    functionsReached:
    - foreach_current_index
    linkageType: ''
    returnType: void
    signature: void foreach_node(SinglePartitionSpec, sps, partlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partdesc.c:73,1
    - Dst: likely
      Src: /src/postgres/src/backend/partitioning/partdesc.c:83,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/partitioning/partdesc.c:85,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/partitioning/partdesc.c:98,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partdesc.c:102,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:102,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/partitioning/partdesc.c:103,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/partitioning/partdesc.c:105,1
    - Dst: RelationBuildPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partdesc.c:109,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 2
    argNames:
    - rel
    - omit_detached
    argTypes:
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 110
    functionName: RelationGetPartitionDesc
    functionSourceFile: /src/postgres/src/backend/partitioning/partdesc.c
    functionUses: 8
    functionsReached:
    - XidInMVCCSnapshot
    - Assert
    - ActiveSnapshotSet
    - RelationBuildPartitionDesc
    - likely
    - GetActiveSnapshot
    - TransactionIdIsValid
    linkageType: ''
    returnType: PartitionDesc
    signature: PartitionDesc RelationGetPartitionDesc(Relation rel, bool omit_detached)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partdesc.c:149,1
    - Dst: find_inheritance_children_extended
      Src: /src/postgres/src/backend/partitioning/partdesc.c:164,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:164,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partdesc.c:169,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partdesc.c:174,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partdesc.c:175,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partdesc.c:176,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:183,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/partitioning/partdesc.c:188,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/partitioning/partdesc.c:188,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:189,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/partitioning/partdesc.c:194,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/partitioning/partdesc.c:198,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/partitioning/partdesc.c:198,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/partitioning/partdesc.c:199,1
    - Dst: table_open
      Src: /src/postgres/src/backend/partitioning/partdesc.c:231,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/partitioning/partdesc.c:232,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/partitioning/partdesc.c:235,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/partitioning/partdesc.c:236,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/partitioning/partdesc.c:243,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:244,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/partitioning/partdesc.c:249,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/partitioning/partdesc.c:250,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/partitioning/partdesc.c:252,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/partitioning/partdesc.c:252,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/partitioning/partdesc.c:254,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partdesc.c:255,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/partitioning/partdesc.c:272,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partdesc.c:280,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partdesc.c:281,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partdesc.c:282,1
    - Dst: get_default_partition_oid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:293,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:293,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partdesc.c:295,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/partitioning/partdesc.c:301,1
    - Dst: partition_bounds_create
      Src: /src/postgres/src/backend/partitioning/partdesc.c:311,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/partitioning/partdesc.c:318,1
    - Dst: MemoryContextCopyAndSetIdentifier
      Src: /src/postgres/src/backend/partitioning/partdesc.c:321,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partdesc.c:322,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/partitioning/partdesc.c:325,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partdesc.c:331,1
    - Dst: partition_bounds_copy
      Src: /src/postgres/src/backend/partitioning/partdesc.c:332,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partdesc.c:339,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partdesc.c:340,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partdesc.c:356,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/partitioning/partdesc.c:369,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:370,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/partitioning/partdesc.c:376,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/partitioning/partdesc.c:392,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partdesc.c:404,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:404,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/partitioning/partdesc.c:410,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 90
    argCount: 2
    argNames:
    - rel
    - omit_detached
    argTypes:
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 133
    functionDepth: 7
    functionLinenumber: 133
    functionLinenumberEnd: 416
    functionName: RelationBuildPartitionDesc
    functionSourceFile: /src/postgres/src/backend/partitioning/partdesc.c
    functionUses: 1
    functionsReached:
    - partition_bounds_create
    - RelationGetRelationName
    - lfirst_oid
    - table_close
    - SearchSysCache1
    - elog
    - systable_endscan
    - HeapTupleIsValid
    - RelationGetDescr
    - Assert
    - table_open
    - ReleaseSysCache
    - get_rel_relkind
    - list_length
    - get_default_partition_oid
    - ObjectIdGetDatum
    - TextDatumGetCString
    - RelationGetRelid
    - MemoryContextAllocZero
    - MemoryContextSetParent
    - heap_getattr
    - systable_beginscan
    - find_inheritance_children_extended
    - stringToNode
    - AllocSetContextCreate
    - MemoryContextCopyAndSetIdentifier
    - partition_bounds_copy
    - ScanKeyInit
    - ActiveSnapshotSet
    - AcceptInvalidationMessages
    - MemoryContextSwitchTo
    - TransactionIdIsValid
    - RelationGetPartitionKey
    - palloc
    - IsA
    - systable_getnext
    - SysCacheGetAttr
    linkageType: ''
    returnType: PartitionDesc
    signature: PartitionDesc RelationBuildPartitionDesc(Relation rel, bool omit_detached)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:183,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/partitioning/partdesc.c:188,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/partitioning/partdesc.c:188,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:189,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/partitioning/partdesc.c:194,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/partitioning/partdesc.c:198,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/partitioning/partdesc.c:198,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/partitioning/partdesc.c:199,1
    - Dst: table_open
      Src: /src/postgres/src/backend/partitioning/partdesc.c:231,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/partitioning/partdesc.c:232,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/partitioning/partdesc.c:235,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/partitioning/partdesc.c:236,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/partitioning/partdesc.c:243,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:244,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/partitioning/partdesc.c:249,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/partitioning/partdesc.c:250,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/partitioning/partdesc.c:252,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/partitioning/partdesc.c:252,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/partitioning/partdesc.c:254,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partdesc.c:255,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/partitioning/partdesc.c:272,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partdesc.c:280,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partdesc.c:281,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partdesc.c:282,1
    - Dst: get_default_partition_oid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:293,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:293,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partdesc.c:295,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/partitioning/partdesc.c:301,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 181
    functionDepth: 4
    functionLinenumber: 181
    functionLinenumberEnd: 304
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partdesc.c
    functionUses: 453
    functionsReached:
    - lfirst_oid
    - table_close
    - SearchSysCache1
    - elog
    - systable_endscan
    - HeapTupleIsValid
    - RelationGetDescr
    - table_open
    - ReleaseSysCache
    - get_rel_relkind
    - get_default_partition_oid
    - ObjectIdGetDatum
    - TextDatumGetCString
    - RelationGetRelid
    - heap_getattr
    - systable_beginscan
    - stringToNode
    - ScanKeyInit
    - AcceptInvalidationMessages
    - IsA
    - systable_getnext
    - SysCacheGetAttr
    linkageType: ''
    returnType: void
    signature: void foreach(cell, inhoids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partdesc.c:425,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/partitioning/partdesc.c:429,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/partitioning/partdesc.c:436,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partdesc.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - mcxt
    - omit_detached
    argTypes:
    - MemoryContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 442
    functionName: CreatePartitionDirectory
    functionSourceFile: /src/postgres/src/backend/partitioning/partdesc.c
    functionUses: 3
    functionsReached:
    - hash_create
    - palloc_object
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: PartitionDirectory
    signature: PartitionDirectory CreatePartitionDirectory(MemoryContext mcxt, bool
      omit_detached)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partdesc.c:459,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/partitioning/partdesc.c:462,1
    - Dst: RelationIncrementReferenceCount
      Src: /src/postgres/src/backend/partitioning/partdesc.c:469,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partdesc.c:471,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partdesc.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pdir
    - rel
    argTypes:
    - PartitionDirectory
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 475
    functionName: PartitionDirectoryLookup
    functionSourceFile: /src/postgres/src/backend/partitioning/partdesc.c
    functionUses: 6
    functionsReached:
    - RelationGetPartitionDesc
    - hash_search
    - Assert
    - RelationIncrementReferenceCount
    - RelationGetRelid
    linkageType: ''
    returnType: PartitionDesc
    signature: PartitionDesc PartitionDirectoryLookup(PartitionDirectory pdir, Relation
      rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/partitioning/partdesc.c:489,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/partitioning/partdesc.c:490,1
    - Dst: RelationDecrementReferenceCount
      Src: /src/postgres/src/backend/partitioning/partdesc.c:491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pdir
    argTypes:
    - PartitionDirectory
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 492
    functionName: DestroyPartitionDirectory
    functionSourceFile: /src/postgres/src/backend/partitioning/partdesc.c
    functionUses: 2
    functionsReached:
    - hash_seq_search
    - hash_seq_init
    - RelationDecrementReferenceCount
    linkageType: ''
    returnType: void
    signature: void DestroyPartitionDirectory(PartitionDirectory pdir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partdesc.c:504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - partdesc
    argTypes:
    - PartitionDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 508
    functionName: get_default_oid_from_partdesc
    functionSourceFile: /src/postgres/src/backend/partitioning/partdesc.c
    functionUses: 2
    functionsReached:
    - partition_bound_has_default
    linkageType: ''
    returnType: Oid
    signature: Oid get_default_oid_from_partdesc(PartitionDesc partdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - levelsup
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 99
    functionName: contain_aggs_of_level
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 1
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_aggs_of_level(Node *node, int levelsup)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:107,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:113,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:119,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:125,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:131,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - contain_aggs_of_level_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 133
    functionName: contain_aggs_of_level_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: "bool contain_aggs_of_level_walker(Node *node,\n\t\t\t\t\t\t\t contain_aggs_of_level_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - node
    - levelsup
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 166
    functionName: locate_agg_of_level
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: int
    signature: int locate_agg_of_level(Node *node, int levelsup)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:174,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:184,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:193,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:199,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:205,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - locate_agg_of_level_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 206
    functionName: locate_agg_of_level_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: "bool locate_agg_of_level_walker(Node *node,\n\t\t\t\t\t\t   locate_agg_of_level_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 224
    functionName: contain_windowfuncs
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 1
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool contain_windowfuncs(Node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:231,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 235
    functionName: contain_windowfuncs_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contain_windowfuncs_walker(Node *node, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 267
    functionName: locate_windowfunc
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: int
    signature: int locate_windowfunc(Node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:274,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:284,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - locate_windowfunc_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 285
    functionName: locate_windowfunc_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool locate_windowfunc_walker(Node *node, locate_windowfunc_context
      *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 302
    functionName: checkExprHasSubLink
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 2
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool checkExprHasSubLink(Node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:309,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 312
    functionName: checkExprHasSubLink_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool checkExprHasSubLink_walker(Node *node, void *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:325,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 332
    functionName: contains_multiexpr_param
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool contains_multiexpr_param(Node *node, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:351,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:357,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:364,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:365,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - dst_rtable
    - dst_perminfos
    - src_rtable
    - src_perminfos
    argTypes:
    - List**
    - List**
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 346
    functionDepth: 5
    functionLinenumber: 346
    functionLinenumberEnd: 366
    functionName: CombineRangeTables
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 3
    functionsReached:
    - list_length
    - list_concat
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void CombineRangeTables(List **dst_rtable, List **dst_perminfos,\n\t\t\t\t
      \  List *src_rtable, List *src_perminfos)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 361
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 453
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, src_rtable)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:392,1
    - Dst: bms_offset_members
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:399,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:406,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:414,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:423,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:431,1
    - Dst: bms_offset_members
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:437,1
    - Dst: bms_offset_members
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:439,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:456,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:456,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:457,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:458,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:459,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:459,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:461,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:467,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:472,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - OffsetVarNodes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 473
    functionName: OffsetVarNodes_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - bms_offset_members
    - Assert
    - query_tree_walker
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool OffsetVarNodes_walker(Node *node, OffsetVarNodes_context *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:488,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:513,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:515,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:520,1
    - Dst: OffsetVarNodes_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:523,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - node
    - offset
    - sublevels_up
    argTypes:
    - Node*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 524
    functionName: OffsetVarNodes
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 2
    functionsReached:
    - foreach
    - query_tree_walker
    - OffsetVarNodes_walker
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void OffsetVarNodes(Node *node, int offset, int sublevels_up)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ChangeVarNodes_context*::callback
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:545,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:548,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:556,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:564,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:573,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:583,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:592,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:598,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:601,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:607,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:620,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:634,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:634,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:635,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:635,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:636,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:636,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:638,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:644,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:649,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 62
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - ChangeVarNodes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 539
    functionDepth: 2
    functionLinenumber: 539
    functionLinenumberEnd: 650
    functionName: ChangeVarNodes_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - Assert
    - query_tree_walker
    - ChangeVarNodes_context*::callback
    - expression_tree_walker
    - IsA
    - adjust_relid_set
    linkageType: ''
    returnType: bool
    signature: bool ChangeVarNodes_walker(Node *node, ChangeVarNodes_context *context)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:680,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:706,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:708,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:714,1
    - Dst: ChangeVarNodes_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:717,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 5
    argNames:
    - node
    - rt_index
    - new_index
    - sublevels_up
    - callback
    argTypes:
    - Node*
    - int
    - int
    - int
    - ChangeVarNodes_callback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 664
    functionDepth: 3
    functionLinenumber: 664
    functionLinenumberEnd: 718
    functionName: ChangeVarNodesExtended
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 8
    functionsReached:
    - foreach
    - ChangeVarNodes_walker
    - query_tree_walker
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: "void ChangeVarNodesExtended(Node *node, int rt_index, int new_index,\n\t\t\t\t\t
      \  int sublevels_up, ChangeVarNodes_callback callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - node
    - rt_index
    - new_index
    - sublevels_up
    argTypes:
    - Node*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 720
    functionDepth: 4
    functionLinenumber: 720
    functionLinenumberEnd: 724
    functionName: ChangeVarNodes
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 10
    functionsReached:
    - ChangeVarNodesExtended
    linkageType: ''
    returnType: void
    signature: void ChangeVarNodes(Node *node, int rt_index, int new_index, int sublevels_up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ChangeVarNodes_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - ChangeVarNodes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 744
    functionDepth: 3
    functionLinenumber: 744
    functionLinenumberEnd: 748
    functionName: ChangeVarNodesWalkExpression
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 1
    functionsReached:
    - ChangeVarNodes_walker
    linkageType: ''
    returnType: bool
    signature: bool ChangeVarNodesWalkExpression(Node *node, ChangeVarNodes_context
      *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:762,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:762,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:765,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:767,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:768,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:769,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - relids
    - oldrelid
    - newrelid
    argTypes:
    - Relids
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 759
    functionDepth: 3
    functionLinenumber: 759
    functionLinenumberEnd: 772
    functionName: adjust_relid_set
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 5
    functionsReached:
    - bms_del_member
    - IS_SPECIAL_VARNO
    - bms_is_member
    - bms_copy
    - bms_add_member
    linkageType: ''
    returnType: Relids
    signature: Relids adjust_relid_set(Relids relids, int oldrelid, int newrelid)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:805,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:813,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:817,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:820,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:828,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:836,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:844,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:852,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:863,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:869,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:876,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 43
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - IncrementVarSublevelsUp_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 877
    functionName: IncrementVarSublevelsUp_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - elog
    - expression_tree_walker
    - IsA
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: "bool IncrementVarSublevelsUp_walker(Node *node,\n\t\t\t\t\t\t\t   IncrementVarSublevelsUp_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - node
    - delta_sublevels_up
    - min_sublevels_up
    argTypes:
    - Node*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 879
    functionDepth: 1
    functionLinenumber: 879
    functionLinenumberEnd: 896
    functionName: IncrementVarSublevelsUp
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 15
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: void
    signature: "void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up,\n\t\t\t\t\t\tint
      min_sublevels_up)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: range_table_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - rtable
    - delta_sublevels_up
    - min_sublevels_up
    argTypes:
    - List*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 902
    functionDepth: 1
    functionLinenumber: 902
    functionLinenumberEnd: 915
    functionName: IncrementVarSublevelsUp_rtable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 1
    functionsReached:
    - range_table_walker
    linkageType: ''
    returnType: void
    signature: "void IncrementVarSublevelsUp_rtable(List *rtable, int delta_sublevels_up,\n\t\t\t\t\t\t\t
      \  int min_sublevels_up)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:940,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:951,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:957,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:962,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - SetVarReturningType_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 963
    functionName: SetVarReturningType_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool SetVarReturningType_walker(Node *node, SetVarReturningType_context
      *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetVarReturningType_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - node
    - result_relation
    - sublevels_up
    - returning_type
    argTypes:
    - Node*
    - int
    - int
    - VarReturningType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 965
    functionDepth: 2
    functionLinenumber: 965
    functionLinenumberEnd: 977
    functionName: SetVarReturningType
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - SetVarReturningType_walker
    linkageType: ''
    returnType: void
    signature: "void SetVarReturningType(Node *node, int result_relation, int sublevels_up,\n\t\t\t\t\tVarReturningType
      returning_type)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:996,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1002,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1006,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1015,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1025,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1035,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1035,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1036,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1037,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1037,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1038,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1038,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1039,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1039,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1040,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1040,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1042,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1048,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1053,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - rangeTableEntry_used_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 990
    functionDepth: 3
    functionLinenumber: 990
    functionLinenumberEnd: 1054
    functionName: rangeTableEntry_used_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_is_member
    - query_tree_walker
    - expression_tree_walker
    - IsA
    linkageType: ''
    returnType: bool
    signature: "bool rangeTableEntry_used_walker(Node *node,\n\t\t\t\t\t\t\trangeTableEntry_used_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - node
    - rt_index
    - sublevels_up
    argTypes:
    - Node*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1056
    functionDepth: 1
    functionLinenumber: 1056
    functionLinenumberEnd: 1072
    functionName: rangeTableEntry_used
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - query_or_expression_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool rangeTableEntry_used(Node *node, int rt_index, int sublevels_up)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1109,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1110,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1110,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1112,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1115,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1115,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1116,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1117,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1118,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1119,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1120,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1121,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1124,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1126,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1128,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1129,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1129,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1131,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1131,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1138,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 2
    argNames:
    - parsetree
    - subquery_ptr
    argTypes:
    - Query*
    - Query***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1140
    functionName: getInsertSelectQuery
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - elog
    - strcmp
    - Assert
    - linitial
    - rt_fetch
    - list_length
    - IsA
    linkageType: ''
    returnType: Query
    signature: 'Query *

      getInsertSelectQuery(Query *parsetree, Query ***subquery_ptr)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1169,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1172,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1184,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1185,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1186,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1190,1
    - Dst: make_and_qual
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1198,1
    - Dst: contain_aggs_of_level
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1198,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1205,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - parsetree
    - qual
    argTypes:
    - Query*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1146
    functionDepth: 3
    functionLinenumber: 1146
    functionLinenumberEnd: 1206
    functionName: AddQual
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - copyObject
    - errcode
    - Assert
    - ereport
    - contain_aggs_of_level
    - checkExprHasSubLink
    - errmsg
    - make_and_qual
    - IsA
    linkageType: ''
    returnType: void
    signature: void AddQual(Query *parsetree, Node *qual)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1223,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - parsetree
    - qual
    argTypes:
    - Query*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1214
    functionDepth: 4
    functionLinenumber: 1214
    functionLinenumberEnd: 1229
    functionName: AddInvertedQual
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - AddQual
    - makeNode
    linkageType: ''
    returnType: void
    signature: void AddInvertedQual(Query *parsetree, Node *qual)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - node
    - target_relids
    - added_relids
    argTypes:
    - Node*
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1238
    functionDepth: 1
    functionLinenumber: 1238
    functionLinenumberEnd: 1252
    functionName: add_nulling_relids
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 5
    functionsReached:
    - query_or_expression_tree_mutator
    linkageType: ''
    returnType: Node
    signature: "Node *\nadd_nulling_relids(Node *node,\n\t\t\t\t   const Bitmapset
      *target_relids,\n\t\t\t\t   const Bitmapset *added_relids)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1260,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1266,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1268,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1272,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1279,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1285,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1287,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1296,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1297,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1304,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1310,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1317,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - add_nulling_relids_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1254
    functionDepth: 4
    functionLinenumber: 1254
    functionLinenumberEnd: 1318
    functionName: add_nulling_relids_mutator
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - copyObject
    - memcpy
    - query_tree_mutator
    - bms_is_member
    - makeNode
    - expression_tree_mutator
    - bms_overlap
    - IsA
    - bms_union
    linkageType: ''
    returnType: Node
    signature: "Node *\nadd_nulling_relids_mutator(Node *node,\n\t\t\t\t\t\t   add_nulling_relids_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - node
    - removable_relids
    - except_relids
    argTypes:
    - Node*
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1326
    functionDepth: 1
    functionLinenumber: 1326
    functionLinenumberEnd: 1340
    functionName: remove_nulling_relids
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 10
    functionsReached:
    - query_or_expression_tree_mutator
    linkageType: ''
    returnType: Node
    signature: "Node *\nremove_nulling_relids(Node *node,\n\t\t\t\t\t  const Bitmapset
      *removable_relids,\n\t\t\t\t\t  const Bitmapset *except_relids)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1348,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1353,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1354,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1357,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1359,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1365,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1370,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1380,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1384,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1387,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1389,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1389,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1394,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1400,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1407,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - remove_nulling_relids_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1342
    functionDepth: 4
    functionLinenumber: 1342
    functionLinenumberEnd: 1408
    functionName: remove_nulling_relids_mutator
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - copyObject
    - Assert
    - query_tree_mutator
    - bms_is_member
    - bms_is_empty
    - expression_tree_mutator
    - bms_difference
    - IsA
    - bms_overlap
    linkageType: ''
    returnType: Node
    signature: "Node *\nremove_nulling_relids_mutator(Node *node,\n\t\t\t\t\t\t\t
      \ remove_nulling_relids_context *context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1451,1
    - Dst: query_or_expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1462,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1469,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1474,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 6
    argNames:
    - node
    - target_varno
    - sublevels_up
    - callback
    - callback_arg
    - outer_hasSubLinks
    argTypes:
    - Node*
    - int
    - int
    - replace_rte_variables_callback
    - void*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1433
    functionDepth: 1
    functionLinenumber: 1433
    functionLinenumberEnd: 1478
    functionName: replace_rte_variables
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 2
    functionsReached:
    - query_or_expression_tree_mutator
    - IsA
    - elog
    linkageType: ''
    returnType: Node
    signature: "Node *\nreplace_rte_variables(Node *node, int target_varno, int sublevels_up,\n\t\t\t\t\t
      \ replace_rte_variables_callback callback,\n\t\t\t\t\t  void *callback_arg,\n\t\t\t\t\t
      \ bool *outer_hasSubLinks)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1486,1
    - Dst: replace_rte_variables_context*::callback
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1496,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1499,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1504,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1513,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1522,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - replace_rte_variables_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1480
    functionDepth: 2
    functionLinenumber: 1480
    functionLinenumberEnd: 1523
    functionName: replace_rte_variables_mutator
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - query_tree_mutator
    - expression_tree_mutator
    - checkExprHasSubLink
    - replace_rte_variables_context*::callback
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\nreplace_rte_variables_mutator(Node *node,\n\t\t\t\t\t\t\t
      \ replace_rte_variables_context *context)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1565,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1573,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1583,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1596,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1602,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1611,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1624,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1636,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1640,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1644,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1652,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1657,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1665,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1671,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1678,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - map_variable_attnos_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1559
    functionDepth: 1
    functionLinenumber: 1559
    functionLinenumberEnd: 1679
    functionName: map_variable_attnos_mutator
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - query_tree_mutator
    - makeNode
    - expression_tree_mutator
    - palloc_object
    - OidIsValid
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\nmap_variable_attnos_mutator(Node *node,\n\t\t\t\t\t\t\tmap_variable_attnos_context
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_or_expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - node
    - target_varno
    - sublevels_up
    - attno_map
    - to_rowtype
    - found_whole_row
    argTypes:
    - Node*
    - int
    - int
    - AttrMap*
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1681
    functionDepth: 1
    functionLinenumber: 1681
    functionLinenumberEnd: 1705
    functionName: map_variable_attnos
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 5
    functionsReached:
    - query_or_expression_tree_mutator
    linkageType: ''
    returnType: Node
    signature: "Node *\nmap_variable_attnos(Node *node,\n\t\t\t\t\tint target_varno,
      int sublevels_up,\n\t\t\t\t\tconst AttrMap *attno_map,\n\t\t\t\t\tOid to_rowtype,
      bool *found_whole_row)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReplaceVarFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1757,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1766,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - var
    - context
    argTypes:
    - Var*
    - replace_rte_variables_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1750
    functionDepth: 2
    functionLinenumber: 1750
    functionLinenumberEnd: 1769
    functionName: ReplaceVarsFromTargetList_callback
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - IncrementVarSublevelsUp
    - ReplaceVarFromTargetList
    linkageType: ''
    returnType: Node
    signature: "Node *\nReplaceVarsFromTargetList_callback(const Var *var,\n\t\t\t\t\t\t\t\t
      \  replace_rte_variables_context *context)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: expandRTE
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1803,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1808,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1818,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1820,1
    - Dst: ReplaceVarFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1821,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1827,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1833,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1846,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1859,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1876,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1877,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1884,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1891,1
    - Dst: contains_multiexpr_param
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1903,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1904,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1906,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1916,1
    - Dst: SetVarReturningType
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1918,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1922,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1926,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 6
    argNames:
    - var
    - target_rte
    - targetlist
    - result_relation
    - nomatch_option
    - nomatch_varno
    argTypes:
    - Var*
    - RangeTblEntry*
    - List*
    - int
    - ReplaceVarsNoMatchOption
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1771
    functionDepth: 6
    functionLinenumber: 1771
    functionLinenumberEnd: 1938
    functionName: ReplaceVarFromTargetList
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 3
    functionsReached:
    - elog
    - get_tle_by_resno
    - expandRTE
    - copyObject
    - SetVarReturningType
    - ReplaceVarFromTargetList
    - get_typlenbyval
    - errcode
    - lappend
    - coerce_null_to_domain
    - makeNode
    - ereport
    - lfirst
    - errmsg
    - contains_multiexpr_param
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\nReplaceVarFromTargetList(const Var *var,\n\t\t\t\t\t\t RangeTblEntry
      *target_rte,\n\t\t\t\t\t\t List *targetlist,\n\t\t\t\t\t\t int result_relation,\n\t\t\t\t\t\t
      ReplaceVarsNoMatchOption nomatch_option,\n\t\t\t\t\t\t int nomatch_varno)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1818,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1820,1
    - Dst: ReplaceVarFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1821,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1827,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1828
      start: 1816
    functionDepth: 7
    functionLinenumber: 1816
    functionLinenumberEnd: 1828
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 455
    functionsReached:
    - lappend
    - lfirst
    - ReplaceVarFromTargetList
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc, fields)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replace_rte_variables
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 9
    argNames:
    - node
    - target_varno
    - sublevels_up
    - target_rte
    - targetlist
    - result_relation
    - nomatch_option
    - nomatch_varno
    - outer_hasSubLinks
    argTypes:
    - Node*
    - int
    - int
    - RangeTblEntry*
    - List*
    - int
    - ReplaceVarsNoMatchOption
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1962
      start: 1940
    functionDepth: 2
    functionLinenumber: 1940
    functionLinenumberEnd: 1962
    functionName: ReplaceVarsFromTargetList
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 1
    functionsReached:
    - replace_rte_variables
    linkageType: ''
    returnType: Node
    signature: "Node *\nReplaceVarsFromTargetList(Node *node,\n\t\t\t\t\t\t  int target_varno,
      int sublevels_up,\n\t\t\t\t\t\t  RangeTblEntry *target_rte,\n\t\t\t\t\t\t  List
      *targetlist,\n\t\t\t\t\t\t  int result_relation,\n\t\t\t\t\t\t  ReplaceVarsNoMatchOption
      nomatch_option,\n\t\t\t\t\t\t  int nomatch_varno,\n\t\t\t\t\t\t  bool *outer_hasSubLinks)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:116,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:123,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:126,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:127,1
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:130,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:162,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:200,1
    - Dst: add_security_quals
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:204,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:218,1
    - Dst: add_security_quals
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:224,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:247,1
    - Dst: add_security_quals
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:267,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:269,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:290,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:293,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:323,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:333,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:351,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:354,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:370,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:385,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:434,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:442,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:451,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:466,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:469,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:482,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:490,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:503,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:507,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:522,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:531,1
    - Dst: setRuleCheckAsUser
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:537,1
    - Dst: setRuleCheckAsUser
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:538,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 72
    argCount: 7
    argNames:
    - root
    - rte
    - rt_index
    - securityQuals
    - withCheckOptions
    - hasRowSecurity
    - hasSubLinks
    argTypes:
    - Query*
    - RangeTblEntry*
    - int
    - List**
    - List**
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 545
    functionName: get_row_security_policies
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - Assert
    - add_security_quals
    - add_with_check_options
    - table_open
    - getRTEPermissionInfo
    - setRuleCheckAsUser
    - OidIsValid
    - table_close
    - check_enable_rls
    - get_policies_for_relation
    linkageType: ''
    returnType: void
    signature: "void get_row_security_policies(Query *root, RangeTblEntry *rte, int
      rt_index,\n\t\t\t\t\t\t  List **securityQuals, List **withCheckOptions,\n\t\t\t\t\t\t
      \ bool *hasRowSecurity, bool *hasSubLinks)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:566,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:569,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:604,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:614,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:617,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:619,1
    - Dst: sort_policies_by_name
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:627,1
    - Dst: sort_policies_by_name
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:645,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:649,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:651,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:652,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:663,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:665,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:666,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 5
    argNames:
    - relation
    - cmd
    - user_id
    - permissive_policies
    - restrictive_policies
    argTypes:
    - Relation
    - CmdType
    - Oid
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 555
    functionDepth: 6
    functionLinenumber: 555
    functionLinenumberEnd: 669
    functionName: get_policies_for_relation
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 1
    functionsReached:
    - elog
    - foreach
    - lappend
    - lfirst
    - check_role_for_policy
    - sort_policies_by_name
    linkageType: ''
    returnType: void
    signature: "void get_policies_for_relation(Relation relation, CmdType cmd, Oid
      user_id,\n\t\t\t\t\t\t  List **permissive_policies,\n\t\t\t\t\t\t  List **restrictive_policies)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:649,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:651,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:652,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 647
    functionDepth: 6
    functionLinenumber: 647
    functionLinenumberEnd: 653
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 456
    functionsReached:
    - check_role_for_policy
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(item, hook_policies)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:663,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:665,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:666,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 661
    functionDepth: 6
    functionLinenumber: 661
    functionLinenumberEnd: 667
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 456
    functionsReached:
    - check_role_for_policy
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(item, hook_policies)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_sort
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - policies
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 679
    functionDepth: 3
    functionLinenumber: 679
    functionLinenumberEnd: 683
    functionName: sort_policies_by_name
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 1
    functionsReached:
    - list_sort
    linkageType: ''
    returnType: void
    signature: void sort_policies_by_name(List *policies)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:691,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:692,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:700,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 701
    functionName: row_security_policy_cmp
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 0
    functionsReached:
    - lfirst
    - strcmp
    linkageType: ''
    returnType: int
    signature: int row_security_policy_cmp(const ListCell *a, const ListCell *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:731,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:735,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:736,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:757,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:762,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:763,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:765,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:774,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:775,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:777,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:779,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:780,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:789,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:790,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:791,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - rt_index
    - permissive_policies
    - restrictive_policies
    - securityQuals
    - hasSubLinks
    argTypes:
    - int
    - List*
    - List*
    - List**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 714
    functionDepth: 7
    functionLinenumber: 714
    functionLinenumberEnd: 793
    functionName: add_security_quals
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 1
    functionsReached:
    - ChangeVarNodes
    - copyObject
    - list_append_unique
    - linitial
    - lappend
    - lfirst
    - list_length
    - makeConst
    - BoolGetDatum
    - makeBoolExpr
    linkageType: ''
    returnType: void
    signature: "void add_security_quals(int rt_index,\n\t\t\t\t   List *permissive_policies,\n\t\t\t\t
      \  List *restrictive_policies,\n\t\t\t\t   List **securityQuals,\n\t\t\t\t   bool
      *hasSubLinks)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:731,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:735,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:736,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 729
    functionDepth: 6
    functionLinenumber: 729
    functionLinenumberEnd: 739
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 456
    functionsReached:
    - lfirst
    - copyObject
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(item, permissive_policies)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:757,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:762,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:763,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:765,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 755
    functionDepth: 7
    functionLinenumber: 755
    functionLinenumberEnd: 768
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 456
    functionsReached:
    - ChangeVarNodes
    - lfirst
    - copyObject
    - list_append_unique
    linkageType: ''
    returnType: void
    signature: void foreach(item, restrictive_policies)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:834,1
    - Dst: QUAL_FOR_WCO
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:835,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:839,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:839,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:862,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:864,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:864,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:868,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:869,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:871,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:873,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:875,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:885,1
    - Dst: QUAL_FOR_WCO
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:886,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:890,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:891,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:893,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:895,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:895,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:896,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:900,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:913,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:915,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:915,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:917,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:918,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:922,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 8
    argNames:
    - rel
    - rt_index
    - kind
    - permissive_policies
    - restrictive_policies
    - withCheckOptions
    - hasSubLinks
    - force_using
    argTypes:
    - Relation
    - int
    - WCOKind
    - List*
    - List*
    - List**
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 810
    functionDepth: 7
    functionLinenumber: 810
    functionLinenumberEnd: 924
    functionName: add_with_check_options
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 1
    functionsReached:
    - ChangeVarNodes
    - copyObject
    - linitial
    - list_append_unique
    - lappend
    - pstrdup
    - makeNode
    - QUAL_FOR_WCO
    - lfirst
    - RelationGetRelationName
    - list_length
    - makeConst
    - BoolGetDatum
    - makeBoolExpr
    linkageType: ''
    returnType: void
    signature: "void add_with_check_options(Relation rel,\n\t\t\t\t\t   int rt_index,\n\t\t\t\t\t
      \  WCOKind kind,\n\t\t\t\t\t   List *permissive_policies,\n\t\t\t\t\t   List
      *restrictive_policies,\n\t\t\t\t\t   List **withCheckOptions,\n\t\t\t\t\t   bool
      *hasSubLinks,\n\t\t\t\t\t   bool force_using)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - policy
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 827
    functionName: QUAL_FOR_WCO
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUAL_FOR_WCO(policy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:834,1
    - Dst: QUAL_FOR_WCO
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:835,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:839,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:839,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 832
    functionDepth: 6
    functionLinenumber: 832
    functionLinenumberEnd: 842
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 456
    functionsReached:
    - QUAL_FOR_WCO
    - lfirst
    - copyObject
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(item, permissive_policies)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:885,1
    - Dst: QUAL_FOR_WCO
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:886,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:890,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:891,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:893,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:895,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:895,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:896,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:900,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 883
    functionDepth: 7
    functionLinenumber: 883
    functionLinenumberEnd: 903
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 456
    functionsReached:
    - ChangeVarNodes
    - copyObject
    - list_append_unique
    - pstrdup
    - makeNode
    - QUAL_FOR_WCO
    - lfirst
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: void foreach(item, restrictive_policies)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:934,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:940,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:942,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - policy_roles
    - user_id
    argTypes:
    - ArrayType*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 947
    functionName: check_role_for_policy
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 3
    functionsReached:
    - ARR_DATA_PTR
    - ARR_DIMS
    - has_privs_of_role
    linkageType: ''
    returnType: bool
    signature: bool check_role_for_policy(ArrayType *policy_roles, Oid user_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nodeToString
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:60,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:61,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:76,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:77,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:78,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:79,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:80,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:81,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:82,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:83,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:88,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:93,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:94,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:95,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:97,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:102,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:103,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:104,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:105,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:115,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:115,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:118,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:120,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:122,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:127,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:130,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:132,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:134,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:138,1
    - Dst: deleteDependencyRecordsFor
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:142,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:158,1
    - Dst: recordDependencyOnExpr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:164,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:170,1
    - Dst: getInsertSelectQuery
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:172,1
    - Dst: recordDependencyOnExpr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:173,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:178,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 47
    argCount: 7
    argNames:
    - rulname
    - evtype
    - eventrel_oid
    - evinstead
    - event_qual
    - action
    - replace
    argTypes:
    - char*
    - int
    - Oid
    - bool
    - Node*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 51
    functionDepth: 7
    functionLinenumber: 51
    functionLinenumberEnd: 183
    functionName: InsertRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 0
    functionsReached:
    - errcode
    - deleteDependencyRecordsFor
    - heap_form_tuple
    - recordDependencyOn
    - table_close
    - CatalogTupleInsert
    - heap_freetuple
    - HeapTupleIsValid
    - RelationGetDescr
    - linitial_node
    - table_open
    - ReleaseSysCache
    - nodeToString
    - get_rel_name
    - PointerGetDatum
    - errmsg
    - CharGetDatum
    - ObjectIdGetDatum
    - InvokeObjectPostCreateHook
    - recordDependencyOnExpr
    - GetNewOidWithIndex
    - ereport
    - namestrcpy
    - GETSTRUCT
    - heap_modify_tuple
    - NameGetDatum
    - CatalogTupleUpdate
    - CStringGetTextDatum
    - BoolGetDatum
    - SearchSysCache2
    - getInsertSelectQuery
    linkageType: ''
    returnType: Oid
    signature: "Oid InsertRule(const char *rulname,\n\t\t   int evtype,\n\t\t   Oid
      eventrel_oid,\n\t\t   bool evinstead,\n\t\t   Node *event_qual,\n\t\t   List
      *action,\n\t\t   bool replace)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: transformRuleStmt
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:197,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:203,1
    - Dst: DefineQueryRewrite
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - stmt
    - queryString
    argTypes:
    - RuleStmt*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 213
    functionName: DefineRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 1
    functionsReached:
    - transformRuleStmt
    - RangeVarGetRelid
    - DefineQueryRewrite
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress DefineRule(RuleStmt *stmt, const char *queryString)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:259,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:260,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:261,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:262,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:263,1
    - Dst: IsConflictLogTableClass
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:271,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:272,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:273,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:274,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:275,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:278,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:279,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:280,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:281,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:286,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:286,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:287,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:287,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:288,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:295,1
    - Dst: getInsertSelectQuery
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:299,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:302,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:303,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:304,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:305,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:307,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:309,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:310,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:322,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:323,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:324,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:325,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:332,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:333,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:334,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:335,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:340,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:343,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:348,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:351,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:352,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:359,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:361,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:367,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:368,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:369,1
    - Dst: checkRuleResultList
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:375,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:394,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:395,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:396,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:404,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:405,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:406,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:407,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:408,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:430,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:432,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:435,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:436,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:437,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:441,1
    - Dst: checkRuleResultList
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:442,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:443,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:452,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:453,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:454,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:455,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:456,1
    - Dst: InsertRule
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:467,1
    - Dst: SetRelationRuleStatus
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:482,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:485,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:488,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 67
    argCount: 7
    argNames:
    - rulename
    - event_relid
    - event_qual
    - event_type
    - is_instead
    - replace
    - action
    argTypes:
    - char*
    - Oid
    - Node*
    - CmdType
    - bool
    - bool
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 223
    functionDepth: 8
    functionLinenumber: 223
    functionLinenumberEnd: 491
    functionName: DefineQueryRewrite
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 1
    functionsReached:
    - IsSystemRelation
    - errdetail_relkind_not_supported
    - GetUserId
    - errcode
    - strcmp
    - errhint
    - RelationGetRelationName
    - table_close
    - InsertRule
    - linitial_node
    - object_ownercheck
    - checkRuleResultList
    - RelationGetDescr
    - get_relkind_objtype
    - IsConflictLogTableClass
    - table_open
    - SetRelationRuleStatus
    - errmsg
    - list_length
    - ereport
    - aclcheck_error
    - lfirst_node
    - ObjectAddressSet
    - errdetail
    - getInsertSelectQuery
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress DefineQueryRewrite(const char *rulename,\n\t\t\t\t   Oid
      event_relid,\n\t\t\t\t   Node *event_qual,\n\t\t\t\t   CmdType event_type,\n\t\t\t\t
      \  bool is_instead,\n\t\t\t\t   bool replace,\n\t\t\t\t   List *action)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:295,1
    - Dst: getInsertSelectQuery
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:299,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:302,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:303,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:304,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:305,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:307,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:309,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:310,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 311
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 456
    functionsReached:
    - errcode
    - ereport
    - lfirst_node
    - errhint
    - errmsg
    - getInsertSelectQuery
    linkageType: ''
    returnType: void
    signature: void foreach(l, action)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:430,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:432,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:435,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:436,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:437,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:441,1
    - Dst: checkRuleResultList
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:442,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:443,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 445
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 456
    functionsReached:
    - errcode
    - checkRuleResultList
    - RelationGetDescr
    - ereport
    - errmsg
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(l, action)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:510,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:515,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:526,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:527,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:530,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:532,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:533,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:554,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:555,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:557,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:558,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:561,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:562,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:563,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:564,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:566,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:570,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:572,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:573,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:577,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:580,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:581,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:582,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:583,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:584,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:585,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:596,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:597,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:601,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:604,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:605,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:606,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:608,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:609,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:610,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:615,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:618,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:619,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 4
    argNames:
    - targetList
    - resultDesc
    - isSelect
    - requireColumnNameMatch
    argTypes:
    - List*
    - TupleDesc
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 502
    functionDepth: 3
    functionLinenumber: 502
    functionLinenumberEnd: 620
    functionName: checkRuleResultList
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 2
    functionsReached:
    - exprTypmod
    - format_type_be
    - strcmp
    - errcode
    - Assert
    - exprType
    - ereport
    - format_type_with_typemod
    - lfirst
    - errmsg
    - NameStr
    - errdetail
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: "void checkRuleResultList(List *targetList, TupleDesc resultDesc, bool
      isSelect,\n\t\t\t\t\tbool requireColumnNameMatch)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:515,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:526,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:527,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:530,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:532,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:533,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:554,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:555,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:557,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:558,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:561,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:562,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:563,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:564,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:566,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:570,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:572,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:573,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:577,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:580,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:581,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:582,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:583,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:584,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:585,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:596,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:597,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:601,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:604,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:605,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:606,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:608,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:609,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:610,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 513
    functionDepth: 3
    functionLinenumber: 513
    functionLinenumberEnd: 612
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 456
    functionsReached:
    - exprTypmod
    - format_type_be
    - strcmp
    - errcode
    - exprType
    - ereport
    - format_type_with_typemod
    - lfirst
    - errmsg
    - NameStr
    - errdetail
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void foreach(tllist, targetList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setRuleCheckAsUser_walker
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - userid
    argTypes:
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 631
    functionName: setRuleCheckAsUser
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 1
    functionsReached:
    - setRuleCheckAsUser_walker
    linkageType: ''
    returnType: void
    signature: void setRuleCheckAsUser(Node *node, Oid userid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:638,1
    - Dst: setRuleCheckAsUser_Query
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:640,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:643,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 645
    functionName: setRuleCheckAsUser_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - setRuleCheckAsUser_Query
    linkageType: ''
    returnType: bool
    signature: bool setRuleCheckAsUser_walker(Node *node, Oid *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:653,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:655,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:661,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:663,1
    - Dst: setRuleCheckAsUser_Query
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:666,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:670,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:672,1
    - Dst: setRuleCheckAsUser_Query
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:674,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:674,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:679,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - qry
    - userid
    argTypes:
    - Query*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 647
    functionDepth: 1
    functionLinenumber: 647
    functionLinenumberEnd: 681
    functionName: setRuleCheckAsUser_Query
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 2
    functionsReached:
    - foreach
    - castNode
    - query_tree_walker
    - lfirst
    - setRuleCheckAsUser_Query
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void setRuleCheckAsUser_Query(Query *qry, Oid userid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:692,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:701,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:702,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:703,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:704,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:705,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:706,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:707,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:708,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:709,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:711,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:717,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:718,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:718,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:719,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:719,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:719,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:720,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:728,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:733,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:735,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:736,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:744,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - rel
    - rulename
    - fires_when
    argTypes:
    - Relation
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 687
    functionDepth: 7
    functionLinenumber: 687
    functionLinenumberEnd: 745
    functionName: EnableDisableRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - CacheInvalidateRelcache
    - table_close
    - heap_freetuple
    - HeapTupleIsValid
    - Assert
    - object_ownercheck
    - get_relkind_objtype
    - table_open
    - get_rel_name
    - get_rel_relkind
    - PointerGetDatum
    - errmsg
    - ObjectIdGetDatum
    - ereport
    - GETSTRUCT
    - aclcheck_error
    - InvokeObjectPostAlterHook
    - CatalogTupleUpdate
    - SearchSysCacheCopy2
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: "void EnableDisableRule(Relation rel, const char *rulename,\n\t\t\t\t
      \ char fires_when)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:758,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:758,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:759,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:761,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:767,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:768,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:769,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:770,1
    - Dst: IsConflictLogTableClass
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:777,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:778,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:779,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:780,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:782,1
    - Dst: IsSystemClass
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:784,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:785,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:786,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:787,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:791,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:791,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:792,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:792,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:792,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:794,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 4
    argNames:
    - rv
    - relid
    - oldrelid
    - arg
    argTypes:
    - RangeVar*
    - Oid
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 751
    functionDepth: 5
    functionLinenumber: 751
    functionLinenumberEnd: 795
    functionName: RangeVarCallbackForRenameRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - errdetail_relkind_not_supported
    - GetUserId
    - errcode
    - HeapTupleIsValid
    - object_ownercheck
    - ereport
    - get_relkind_objtype
    - IsConflictLogTableClass
    - ReleaseSysCache
    - get_rel_relkind
    - GETSTRUCT
    - errmsg
    - errdetail
    - aclcheck_error
    - ObjectIdGetDatum
    - IsSystemClass
    linkageType: ''
    returnType: void
    signature: "void RangeVarCallbackForRenameRule(const RangeVar *rv, Oid relid,
      Oid oldrelid,\n\t\t\t\t\t\t\t  void *arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RangeVarGetRelidExtended
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:816,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:822,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:825,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:828,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:829,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:830,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:831,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:832,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:833,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:834,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:835,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:836,1
    - Dst: IsDefinedRewriteRule
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:840,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:841,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:842,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:843,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:844,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:851,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:852,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:853,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:859,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:860,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:861,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:862,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:863,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:867,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:869,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:871,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:873,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:874,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:881,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:883,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:888,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - relation
    - oldName
    - newName
    argTypes:
    - RangeVar*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 800
    functionDepth: 7
    functionLinenumber: 800
    functionLinenumberEnd: 891
    functionName: RenameRewriteRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - CacheInvalidateRelcache
    - RelationGetRelationName
    - table_close
    - RangeVarGetRelidExtended
    - HeapTupleIsValid
    - heap_freetuple
    - table_open
    - PointerGetDatum
    - errmsg
    - relation_close
    - ObjectIdGetDatum
    - ereport
    - namestrcpy
    - GETSTRUCT
    - relation_open
    - InvokeObjectPostAlterHook
    - IsDefinedRewriteRule
    - CatalogTupleUpdate
    - ObjectAddressSet
    - SearchSysCacheCopy2
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress RenameRewriteRule(RangeVar *relation, const char *oldName,\n\t\t\t\t
      \ const char *newName)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:34,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:35,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owningRel
    - ruleName
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: IsDefinedRewriteRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteSupport.c
    functionUses: 1
    functionsReached:
    - SearchSysCacheExists2
    - ObjectIdGetDatum
    - PointerGetDatum
    linkageType: ''
    returnType: bool
    signature: bool IsDefinedRewriteRule(Oid owningRel, const char *ruleName)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:62,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:63,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:63,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:64,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:65,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:66,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:73,1
    - Dst: CacheInvalidateRelcacheByTuple
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:78,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:81,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - relationId
    - relHasRules
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 52
    functionDepth: 7
    functionLinenumber: 52
    functionLinenumberEnd: 83
    functionName: SetRelationRuleStatus
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteSupport.c
    functionUses: 1
    functionsReached:
    - elog
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - table_open
    - SearchSysCacheCopy1
    - GETSTRUCT
    - CacheInvalidateRelcacheByTuple
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: void
    signature: void SetRelationRuleStatus(Oid relationId, bool relHasRules)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:99,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:100,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:101,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:106,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:107,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:108,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:109,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:112,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/rewrite/rewriteSupport.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - relid
    - rulename
    - missing_ok
    argTypes:
    - Oid
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 116
    functionName: get_rewrite_oid
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteSupport.c
    functionUses: 1
    functionsReached:
    - errcode
    - HeapTupleIsValid
    - Assert
    - ereport
    - ReleaseSysCache
    - get_rel_name
    - PointerGetDatum
    - errmsg
    - GETSTRUCT
    - ObjectIdGetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: Oid
    signature: Oid get_rewrite_oid(Oid relid, const char *rulename, bool missing_ok)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:162,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:164,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:199,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:207,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:224,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:226,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:230,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:239,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:250,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:255,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:257,1
    - Dst: get_rte_attribute_is_dropped
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:260,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:267,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:278,1
    - Dst: get_parse_rowmark
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:281,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:291,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:293,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:295,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:303,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 3
    argNames:
    - parsetree
    - forExecute
    - forUpdatePushedDown
    argTypes:
    - Query*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 147
    functionDepth: 6
    functionLinenumber: 147
    functionLinenumberEnd: 305
    functionName: AcquireRewriteLocks
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 5
    functionsReached:
    - elog
    - foreach
    - get_rte_attribute_is_dropped
    - Assert
    - rt_fetch
    - lappend
    - query_tree_walker
    - lfirst
    - AcquireRewriteLocks
    - get_parse_rowmark
    - relation_close
    - relation_open
    - IsA
    - strip_implicit_coercions
    linkageType: ''
    returnType: void
    signature: "void AcquireRewriteLocks(Query *parsetree,\n\t\t\t\t\tbool forExecute,\n\t\t\t\t\tbool
      forUpdatePushedDown)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:315,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:320,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - acquireLocksOnSubLinks_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 310
    functionDepth: 7
    functionLinenumber: 310
    functionLinenumberEnd: 331
    functionName: acquireLocksOnSubLinks
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    - AcquireRewriteLocks
    linkageType: ''
    returnType: bool
    signature: bool acquireLocksOnSubLinks(Node *node, acquireLocksOnSubLinks_context
      *context)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:373,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:374,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:379,1
    - Dst: acquireLocksOnSubLinks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:380,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:383,1
    - Dst: getInsertSelectQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:394,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:396,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:397,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:399,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:401,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:412,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:414,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:417,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:457,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:458,1
    - Dst: CombineRangeTables
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:459,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:469,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:471,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:477,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:481,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:485,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:489,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:496,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:530,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:531,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:533,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:534,1
    - Dst: adjustJoinTreeList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:535,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:545,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:546,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:547,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:550,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:558,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:579,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:581,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:584,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:586,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:588,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:589,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:590,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:591,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:600,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:601,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:619,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:620,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:621,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:629,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:631,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:644,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:653,1
    - Dst: get_generated_columns
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:654,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:655,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:662,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:679,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:683,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:704,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:705,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:706,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:707,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:720,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:721,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:722,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:725,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:728,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:746,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 98
    argCount: 6
    argNames:
    - parsetree
    - rule_action
    - rule_qual
    - rt_index
    - event
    - returning_flag
    argTypes:
    - Query*
    - Query*
    - Node*
    - int
    - CmdType
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 351
    functionDepth: 8
    functionLinenumber: 351
    functionLinenumberEnd: 750
    functionName: rewriteRuleAction
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - AddQual
    - copyObject
    - strcmp
    - errcode
    - adjustJoinTreeList
    - list_concat
    - rangeTableEntry_used
    - CombineRangeTables
    - foreach
    - Assert
    - AcquireRewriteLocks
    - errmsg
    - contain_vars_of_level
    - list_length
    - acquireLocksOnSubLinks
    - relation_close
    - ReplaceVarsFromTargetList
    - ChangeVarNodes
    - OffsetVarNodes
    - rt_fetch
    - ereport
    - lfirst
    - get_generated_columns
    - relation_open
    - errdetail
    - checkExprHasSubLink
    - getInsertSelectQuery
    linkageType: ''
    returnType: Query
    signature: "Query *\nrewriteRuleAction(Query *parsetree,\n\t\t\t\t  Query *rule_action,\n\t\t\t\t
      \ Node *rule_qual,\n\t\t\t\t  int rt_index,\n\t\t\t\t  CmdType event,\n\t\t\t\t
      \ bool *returning_flag)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:763,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:770,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:772,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:775,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - parsetree
    - removert
    - rt_index
    argTypes:
    - Query*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 781
    functionName: adjustJoinTreeList
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - foreach_delete_current
    - lfirst
    - copyObject
    - IsA
    linkageType: ''
    returnType: List
    signature: 'List *

      adjustJoinTreeList(Query *parsetree, bool removert, int rt_index)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:770,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:772,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:775,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 778
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 459
    functionsReached:
    - lfirst
    - foreach_delete_current
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(l, newjointree)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:850,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:851,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:856,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:863,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:864,1
    - Dst: process_matched_tle
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:872,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:874,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:890,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:893,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:903,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:915,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:922,1
    - Dst: findDefaultOnlyColumns
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:950,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:952,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:957,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:958,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:959,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:960,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:961,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:962,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:963,1
    - Dst: findDefaultOnlyColumns
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:990,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:992,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:997,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:998,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:999,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1000,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1001,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1002,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1011,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1024,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1025,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1026,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1027,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1028,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1029,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1032,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1033,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1034,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1035,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1036,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1037,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1052,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1066,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1074,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1076,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1076,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1081,1
    - Dst: pfree
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1084,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1086,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 84
    argCount: 7
    argNames:
    - targetList
    - commandType
    - override
    - target_relation
    - values_rte
    - values_rte_index
    - unused_values_attrnos
    argTypes:
    - List*
    - CmdType
    - OverridingKind
    - Relation
    - RangeTblEntry*
    - int
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 822
    functionDepth: 6
    functionLinenumber: 822
    functionLinenumberEnd: 1087
    functionName: rewriteTargetListIU
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - errcode
    - pstrdup
    - errhint
    - list_concat
    - NameStr
    - bms_add_member
    - elog
    - pfree
    - bms_is_member
    - process_matched_tle
    - errmsg
    - flatCopyTargetEntry
    - makeTargetEntry
    - lappend
    - ereport
    - coerce_null_to_domain
    - lfirst
    - TupleDescAttr
    - RelationGetNumberOfAttributes
    - findDefaultOnlyColumns
    - build_column_default
    - palloc0
    - errdetail
    - IsA
    linkageType: ''
    returnType: List
    signature: "List *\nrewriteTargetListIU(List *targetList,\n\t\t\t\t\tCmdType commandType,\n\t\t\t\t\tOverridingKind
      override,\n\t\t\t\t\tRelation target_relation,\n\t\t\t\t\tRangeTblEntry *values_rte,\n\t\t\t\t\tint
      values_rte_index,\n\t\t\t\t\tBitmapset **unused_values_attrnos)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:856,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:863,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:864,1
    - Dst: process_matched_tle
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:872,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:874,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:890,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:893,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 854
    functionDepth: 6
    functionLinenumber: 854
    functionLinenumberEnd: 896
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 459
    functionsReached:
    - elog
    - flatCopyTargetEntry
    - lappend
    - process_matched_tle
    - lfirst
    - NameStr
    - TupleDescAttr
    linkageType: ''
    returnType: void
    signature: void foreach(temp, targetList)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1152,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1153,1
    - Dst: get_assignment_input
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1163,1
    - Dst: get_assignment_input
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1164,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1167,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1167,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1168,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1169,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1170,1
    - Dst: get_assignment_input
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1179,1
    - Dst: equal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1185,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1186,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1187,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1188,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1194,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1196,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1198,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1201,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1203,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1206,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1212,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1217,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1219,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1221,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1227,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1234,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1236,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1241,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 3
    argNames:
    - src_tle
    - prior_tle
    - attrName
    argTypes:
    - TargetEntry*
    - TargetEntry*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1096
    functionDepth: 5
    functionLinenumber: 1096
    functionLinenumberEnd: 1244
    functionName: process_matched_tle
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 2
    functionsReached:
    - elog
    - memcpy
    - flatCopyTargetEntry
    - errcode
    - exprType
    - list_concat_copy
    - ereport
    - makeNode
    - get_assignment_input
    - errmsg
    - equal
    - IsA
    linkageType: ''
    returnType: TargetEntry
    signature: "TargetEntry *\nprocess_matched_tle(TargetEntry *src_tle,\n\t\t\t\t\tTargetEntry
      *prior_tle,\n\t\t\t\t\tconst char *attrName)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1254,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1260,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1249
    functionDepth: 1
    functionLinenumber: 1249
    functionLinenumberEnd: 1271
    functionName: get_assignment_input
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - IsA
    linkageType: ''
    returnType: Node
    signature: 'Node *

      get_assignment_input(Node *node)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1282,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1290,1
    - Dst: getIdentitySequence
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1292,1
    - Dst: TupleDescGetDefault
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1303,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1305,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1306,1
    - Dst: get_typdefault
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1314,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1326,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1335,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1336,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1337,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1339,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1340,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1341,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1342,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - rel
    - attrno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1278
    functionDepth: 8
    functionLinenumber: 1278
    functionLinenumberEnd: 1345
    functionName: build_column_default
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 3
    functionsReached:
    - elog
    - getIdentitySequence
    - format_type_be
    - coerce_to_target_type
    - TupleDescGetDefault
    - exprType
    - errcode
    - ereport
    - makeNode
    - errhint
    - errmsg
    - RelationGetRelationName
    - NameStr
    - TupleDescAttr
    - get_typdefault
    linkageType: ''
    returnType: Node
    signature: 'Node *

      build_column_default(Relation rel, int attrno)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1354,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1356,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1361,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rte
    argTypes:
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1368
      start: 1349
    functionDepth: 1
    functionLinenumber: 1349
    functionLinenumberEnd: 1368
    functionName: searchForDefault
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - lfirst
    - foreach
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool searchForDefault(RangeTblEntry *rte)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1361,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1365
      start: 1359
    functionDepth: 1
    functionLinenumber: 1359
    functionLinenumberEnd: 1365
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 460
    functionsReached:
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1381,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1393,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1396,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1397,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1406,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1409,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1410,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1418,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - rte
    argTypes:
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1423
      start: 1375
    functionDepth: 3
    functionLinenumber: 1375
    functionLinenumberEnd: 1423
    functionName: findDefaultOnlyColumns
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - foreach
    - bms_is_empty
    - lfirst
    - IsA
    - bms_add_member
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      findDefaultOnlyColumns(RangeTblEntry *rte)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1393,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1396,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1391
    functionDepth: 3
    functionLinenumber: 1391
    functionLinenumberEnd: 1398
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 461
    functionsReached:
    - lfirst
    - bms_add_member
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1406,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1409,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1404
    functionDepth: 3
    functionLinenumber: 1404
    functionLinenumberEnd: 1411
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 461
    functionsReached:
    - bms_del_member
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1476,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1477,1
    - Dst: searchForDefault
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1484,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1494,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1494,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1495,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1497,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1499,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1501,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1509,1
    - Dst: view_has_instead_trigger
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1522,1
    - Dst: matchLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1530,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1536,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1557,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1559,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1564,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1564,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1569,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1572,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1582,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1586,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1587,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1594,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1595,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1596,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1599,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1613,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1618,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1624,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1627,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1629,1
    - Dst: pfree
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1633,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 61
    argCount: 5
    argNames:
    - parsetree
    - rte
    - rti
    - target_relation
    - unused_cols
    argTypes:
    - Query*
    - RangeTblEntry*
    - int
    - Relation
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1636
      start: 1463
    functionDepth: 9
    functionLinenumber: 1463
    functionLinenumberEnd: 1636
    functionName: rewriteValuesRTE
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - elog
    - foreach
    - Assert
    - linitial
    - matchLocks
    - palloc0
    - bms_is_member
    - lappend
    - build_column_default
    - coerce_null_to_domain
    - pfree
    - view_has_instead_trigger
    - makeNullConst
    - lfirst
    - searchForDefault
    - list_length
    - TupleDescAttr
    - IsA
    linkageType: ''
    returnType: bool
    signature: "bool rewriteValuesRTE(Query *parsetree, RangeTblEntry *rte, int rti,\n\t\t\t\t
      Relation target_relation,\n\t\t\t\t Bitmapset *unused_cols)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1536,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1534
    functionDepth: 1
    functionLinenumber: 1534
    functionLinenumberEnd: 1544
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 462
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, locks)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1569,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1572,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1582,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1586,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1587,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1594,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1595,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1596,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1599,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1613,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1618,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1624,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1627,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1567
    functionDepth: 9
    functionLinenumber: 1567
    functionLinenumberEnd: 1628
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 462
    functionsReached:
    - elog
    - Assert
    - build_column_default
    - bms_is_member
    - lappend
    - coerce_null_to_domain
    - makeNullConst
    - lfirst
    - TupleDescAttr
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1655,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1657,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1663,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1665,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1669,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1669,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1674,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - parsetree
    - rte
    argTypes:
    - Query*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1648
    functionDepth: 6
    functionLinenumber: 1648
    functionLinenumberEnd: 1679
    functionName: rewriteValuesRTEToNulls
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - foreach
    - lappend
    - makeNullConst
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void rewriteValuesRTEToNulls(Query *parsetree, RangeTblEntry *rte)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1663,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1665,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1669,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1669,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1674,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1661
    functionDepth: 6
    functionLinenumber: 1661
    functionLinenumberEnd: 1675
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 463
    functionsReached:
    - makeNullConst
    - lfirst
    - lappend
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1739,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1740,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1741,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1742,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1743,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1749,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1750,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 28
    argCount: 5
    argNames:
    - event
    - relation
    - varno
    - parsetree
    - hasUpdate
    argTypes:
    - CmdType
    - Relation
    - int
    - Query*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1755
      start: 1686
    functionDepth: 6
    functionLinenumber: 1686
    functionLinenumberEnd: 1755
    functionName: matchLocks
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - errcode
    - lappend
    - ereport
    - errmsg
    - RelationGetRelationName
    - errdetail
    - rangeTableEntry_used
    linkageType: ''
    returnType: List
    signature: "List *\nmatchLocks(CmdType event,\n\t\t   Relation relation,\n\t\t
      \  int varno,\n\t\t   Query *parsetree,\n\t\t   bool *hasUpdate)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1773,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1774,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1776,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1779,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1780,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1781,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1782,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1783,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1784,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1815,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1816,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1817,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1818,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1830,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1831,1
    - Dst: makeWholeRowVar
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1840,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1841,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1842,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1843,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1846,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1851,1
    - Dst: get_parse_rowmark
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1862,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1869,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1869,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1871,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1879,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1885,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1897,1
    - Dst: RelationIsSecurityView
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1901,1
    - Dst: ExecCleanTargetListLength
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1919,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1920,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1922,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1923,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1923,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 5
    argNames:
    - parsetree
    - rule
    - rt_index
    - relation
    - activeRIRs
    argTypes:
    - Query*
    - RewriteRule*
    - int
    - Relation
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1927
      start: 1761
    functionDepth: 7
    functionLinenumber: 1761
    functionLinenumberEnd: 1927
    functionName: ApplyRetrieveRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - copyObject
    - errcode
    - RelationIsSecurityView
    - pstrdup
    - RelationGetRelationName
    - elog
    - linitial
    - AcquireRewriteLocks
    - errmsg
    - fireRIRrules
    - makeWholeRowVar
    - list_length
    - markQueryForLocking
    - ChangeVarNodes
    - ExecCleanTargetListLength
    - makeTargetEntry
    - makeString
    - rt_fetch
    - ereport
    - lappend
    - unlikely
    - get_parse_rowmark
    - RelationGetRelid
    linkageType: ''
    returnType: Query
    signature: "Query *\nApplyRetrieveRule(Query *parsetree,\n\t\t\t\t  RewriteRule
      *rule,\n\t\t\t\t  int rt_index,\n\t\t\t\t  Relation relation,\n\t\t\t\t  List
      *activeRIRs)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1948,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1951,1
    - Dst: applyLockingClause
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1957,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1959,1
    - Dst: applyLockingClause
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1964,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1966,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1971,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1976,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1977,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1977,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1979,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1983,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1984,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1987,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1988,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 5
    argNames:
    - qry
    - jtnode
    - strength
    - waitPolicy
    - pushedDown
    argTypes:
    - Query*
    - Node*
    - LockClauseStrength
    - LockWaitPolicy
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1941
    functionDepth: 1
    functionLinenumber: 1941
    functionLinenumberEnd: 1989
    functionName: markQueryForLocking
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach
    - rt_fetch
    - getRTEPermissionInfo
    - applyLockingClause
    - lfirst
    - markQueryForLocking
    - IsA
    - nodeTag
    linkageType: ''
    returnType: void
    signature: "void markQueryForLocking(Query *qry, Node *jtnode,\n\t\t\t\t\tLockClauseStrength
      strength, LockWaitPolicy waitPolicy,\n\t\t\t\t\tbool pushedDown)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2010,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2015,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2030,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fireRIRonSubLink_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2031
      start: 2005
    functionDepth: 1
    functionLinenumber: 2005
    functionLinenumberEnd: 2031
    functionName: fireRIRonSubLink
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    - fireRIRrules
    linkageType: ''
    returnType: bool
    signature: bool fireRIRonSubLink(Node *node, fireRIRonSubLink_context *context)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2054,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2056,1
    - Dst: rewriteSearchAndCycle
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2060,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2061,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2070,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2081,1
    - Dst: rewriteGraphTable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2090,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2100,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2149,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2164,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2179,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2189,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2189,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2190,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2191,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2192,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2193,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2194,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2194,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2198,1
    - Dst: ApplyRetrieveRule
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2200,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2207,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2211,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2215,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2217,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2220,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2240,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2257,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2259,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2274,1
    - Dst: get_row_security_policies
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2279,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2294,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2294,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2295,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2296,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2297,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2298,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2300,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2300,1
    - Dst: acquireLocksOnSubLinks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2311,1
    - Dst: acquireLocksOnSubLinks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2312,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2322,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2333,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2335,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2344,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2347,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2360,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 93
    argCount: 2
    argNames:
    - parsetree
    - activeRIRs
    argTypes:
    - Query*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2364
      start: 2041
    functionDepth: 8
    functionLinenumber: 2041
    functionLinenumberEnd: 2364
    functionName: fireRIRrules
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 3
    functionsReached:
    - errcode
    - list_concat
    - rangeTableEntry_used
    - RelationGetRelationName
    - lappend_oid
    - table_close
    - rewriteGraphTable
    - foreach
    - Assert
    - errmsg
    - fireRIRrules
    - list_length
    - acquireLocksOnSubLinks
    - list_member_oid
    - rt_fetch
    - lappend
    - ereport
    - query_tree_walker
    - lfirst
    - ApplyRetrieveRule
    - relation_open
    - rewriteSearchAndCycle
    - expression_tree_walker
    - lfirst_node
    - get_row_security_policies
    - list_delete_last
    - RelationGetRelid
    linkageType: ''
    returnType: Query
    signature: 'Query *

      fireRIRrules(Query *parsetree, List *activeRIRs)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2198,1
    - Dst: ApplyRetrieveRule
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2196
    functionDepth: 8
    functionLinenumber: 2196
    functionLinenumberEnd: 2205
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 465
    functionsReached:
    - ApplyRetrieveRule
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, locks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2387,1
    - Dst: acquireLocksOnSubLinks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2398,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2401,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2405,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2414,1
    - Dst: get_generated_columns
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2415,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2416,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2423,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2435,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2439,1
    - Dst: AddInvertedQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - parsetree
    - rule_qual
    - rt_index
    - event
    argTypes:
    - Query*
    - Node*
    - int
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2452
      start: 2380
    functionDepth: 8
    functionLinenumber: 2380
    functionLinenumberEnd: 2452
    functionName: CopyAndAddInvertedQual
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - AddInvertedQual
    - ChangeVarNodes
    - copyObject
    - rt_fetch
    - ReplaceVarsFromTargetList
    - get_generated_columns
    - list_concat
    - relation_close
    - relation_open
    - acquireLocksOnSubLinks
    linkageType: ''
    returnType: Query
    signature: "Query *\nCopyAndAddInvertedQual(Query *parsetree,\n\t\t\t\t\t   Node
      *rule_qual,\n\t\t\t\t\t   int rt_index,\n\t\t\t\t\t   CmdType event)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2497,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2534,1
    - Dst: CopyAndAddInvertedQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2535,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2545,1
    - Dst: rewriteRuleAction
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2550,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2557,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 7
    argNames:
    - parsetree
    - rt_index
    - event
    - locks
    - instead_flag
    - returning_flag
    - qual_product
    argTypes:
    - Query*
    - int
    - CmdType
    - List*
    - bool*
    - bool*
    - Query**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2562
      start: 2483
    functionDepth: 9
    functionLinenumber: 2483
    functionLinenumberEnd: 2562
    functionName: fireRules
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - copyObject
    - lappend
    - CopyAndAddInvertedQual
    - lfirst
    - rewriteRuleAction
    linkageType: ''
    returnType: List
    signature: "List *\nfireRules(Query *parsetree,\n\t\t  int rt_index,\n\t\t  CmdType
      event,\n\t\t  List *locks,\n\t\t  bool *instead_flag,\n\t\t  bool *returning_flag,\n\t\t
      \ Query **qual_product)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2497,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2534,1
    - Dst: CopyAndAddInvertedQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2535,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2545,1
    - Dst: rewriteRuleAction
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2550,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2557,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2495
    functionDepth: 9
    functionLinenumber: 2495
    functionLinenumberEnd: 2559
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 465
    functionsReached:
    - copyObject
    - lappend
    - CopyAndAddInvertedQual
    - lfirst
    - rewriteRuleAction
    linkageType: ''
    returnType: void
    signature: void foreach(l, locks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2545,1
    - Dst: rewriteRuleAction
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2550,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2558
      start: 2543
    functionDepth: 9
    functionLinenumber: 2543
    functionLinenumberEnd: 2558
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 465
    functionsReached:
    - lfirst
    - rewriteRuleAction
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(r, actions)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2579,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2588,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2589,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2591,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2595,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - view
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2597
      start: 2574
    functionDepth: 1
    functionLinenumber: 2574
    functionLinenumberEnd: 2597
    functionName: get_view_query
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - Assert
    - linitial
    - elog
    - list_length
    linkageType: ''
    returnType: Query
    signature: 'Query *

      get_view_query(Relation view)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2633,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2653,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2659,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 3
    argNames:
    - view
    - event
    - mergeActionList
    argTypes:
    - Relation
    - CmdType
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2663
      start: 2613
    functionDepth: 1
    functionLinenumber: 2613
    functionLinenumberEnd: 2663
    functionName: view_has_instead_trigger
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 2
    functionsReached:
    - elog
    - foreach_node
    linkageType: ''
    returnType: bool
    signature: bool view_has_instead_trigger(Relation view, CmdType event, List *mergeActionList)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2692,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2694,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2697,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2700,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2703,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - rtr
    - tle
    argTypes:
    - RangeTblRef*
    - TargetEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2706
      start: 2677
    functionDepth: 1
    functionLinenumber: 2677
    functionLinenumberEnd: 2706
    functionName: view_col_is_auto_updatable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - gettext_noop
    - IsA
    linkageType: ''
    returnType: char
    signature: 'char *

      view_col_is_auto_updatable(RangeTblRef *rtr, TargetEntry *tle)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2764,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2767,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2770,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2773,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2776,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2779,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2791,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2794,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2797,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2803,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2804,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2806,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2807,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2808,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2810,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2816,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2819,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2831,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2833,1
    - Dst: view_col_is_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2835,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2843,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 41
    argCount: 2
    argNames:
    - viewquery
    - check_cols
    argTypes:
    - Query*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2847
      start: 2725
    functionDepth: 2
    functionLinenumber: 2725
    functionLinenumberEnd: 2847
    functionName: view_query_is_auto_updatable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - foreach
    - view_col_is_auto_updatable
    - linitial
    - rt_fetch
    - gettext_noop
    - lfirst
    - list_length
    - IsA
    linkageType: ''
    returnType: char
    signature: 'char *

      view_query_is_auto_updatable(Query *viewquery, bool check_cols)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2887,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2887,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2888,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2898,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2900,1
    - Dst: view_col_is_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2904,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2910,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2912,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - viewquery
    - required_cols
    - updatable_cols
    - non_updatable_col
    argTypes:
    - Query*
    - Bitmapset*
    - Bitmapset**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2922
      start: 2873
    functionDepth: 3
    functionLinenumber: 2873
    functionLinenumberEnd: 2922
    functionName: view_cols_are_auto_updatable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - foreach
    - linitial_node
    - Assert
    - view_col_is_auto_updatable
    - bms_is_member
    - lfirst
    - list_length
    - bms_add_member
    linkageType: ''
    returnType: char
    signature: "char *\nview_cols_are_auto_updatable(Query *viewquery,\n\t\t\t\t\t\t\t
      Bitmapset *required_cols,\n\t\t\t\t\t\t\t Bitmapset **updatable_cols,\n\t\t\t\t\t\t\t
      char **non_updatable_col)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2969,1
    - Dst: try_relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2971,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2983,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2983,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2985,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2993,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3015,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3037,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3046,1
    - Dst: FdwRoutine*::IsForeignRelUpdatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3049,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3061,1
    - Dst: get_view_query
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3068,1
    - Dst: view_query_is_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3070,1
    - Dst: view_cols_are_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3084,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3088,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3090,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3101,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3103,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3109,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3110,1
    - Dst: adjust_view_column_set
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3111,1
    - Dst: relation_is_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3113,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3117,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3124,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 75
    argCount: 4
    argNames:
    - reloid
    - outer_reloids
    - include_triggers
    - include_cols
    argTypes:
    - Oid
    - List*
    - bool
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3126
      start: 2956
    functionDepth: 6
    functionLinenumber: 2956
    functionLinenumberEnd: 3126
    functionName: relation_is_updatable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - relation_is_updatable
    - lappend_oid
    - view_cols_are_auto_updatable
    - try_relation_open
    - view_query_is_auto_updatable
    - Assert
    - linitial
    - relation_close
    - FdwRoutine*::IsForeignRelUpdatable
    - list_member_oid
    - rt_fetch
    - adjust_view_column_set
    - bms_int_members
    - list_delete_last
    - get_view_query
    - bms_is_empty
    - GetFdwRoutineForRelation
    - RelationGetRelid
    linkageType: ''
    returnType: int
    signature: "int relation_is_updatable(Oid reloid,\n\t\t\t\t\t  List *outer_reloids,\n\t\t\t\t\t
      \ bool include_triggers,\n\t\t\t\t\t  Bitmapset *include_cols)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3144,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3162,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3167,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3168,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3179,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3181,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3185,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3189,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - cols
    - targetlist
    argTypes:
    - Bitmapset*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3195
      start: 3137
    functionDepth: 3
    functionLinenumber: 3137
    functionLinenumberEnd: 3195
    functionName: adjust_view_column_set
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - elog
    - IsA
    - castNode
    - bms_next_member
    - get_tle_by_resno
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      adjust_view_column_set(Bitmapset *cols, List *targetlist)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3162,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3167,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3170
      start: 3160
    functionDepth: 3
    functionLinenumber: 3160
    functionLinenumberEnd: 3170
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 467
    functionsReached:
    - castNode
    - bms_add_member
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, targetlist)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3222,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3224,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3225,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3226,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3226,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3232,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3233,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3234,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3234,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3238,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3240,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3241,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3242,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3242,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3243,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3251,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3257,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3258,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3259,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3260,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3261,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3261,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3262,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3266,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3267,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3268,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3269,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3270,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3270,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3277,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3278,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3279,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3279,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3280,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3285,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3291,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 4
    argNames:
    - view
    - command
    - mergeActionList
    - detail
    argTypes:
    - Relation
    - CmdType
    - List*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3294
      start: 3211
    functionDepth: 1
    functionLinenumber: 3211
    functionLinenumberEnd: 3294
    functionName: error_view_not_updatable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - elog
    - _
    - errcode
    - ereport
    - foreach_node
    - errhint
    - errmsg
    - RelationGetRelationName
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: "void error_view_not_updatable(Relation view,\n\t\t\t\t\t\t CmdType
      command,\n\t\t\t\t\t\t List *mergeActionList,\n\t\t\t\t\t\t const char *detail)"
  - BBCount: 47
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3332,1
    - Dst: get_view_query
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3332,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3335,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3336,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3349,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3361,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3362,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3363,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3364,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3365,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3366,1
    - Dst: view_query_is_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3375,1
    - Dst: error_view_not_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3378,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3402,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3405,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3407,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3410,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3416,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3418,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3421,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3426,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3431,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3434,1
    - Dst: view_cols_are_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3453,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3454,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3455,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3457,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3458,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3458,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3461,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3462,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3463,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3465,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3466,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3466,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3471,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3473,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3474,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3474,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3477,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3497,1
    - Dst: view_cols_are_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3499,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3508,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3509,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3510,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3512,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3513,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3513,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3516,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3517,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3518,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3519,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3521,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3521,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3524,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3540,1
    - Dst: view_has_instead_trigger
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3543,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3544,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3545,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3546,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3547,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3548,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3549,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3557,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3557,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3558,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3561,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3562,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3563,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3572,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3591,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3609,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3610,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3629,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3654,1
    - Dst: RelationHasSecurityInvoker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3655,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3685,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3685,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3686,1
    - Dst: adjust_view_column_set
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3691,1
    - Dst: adjust_view_column_set
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3694,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3709,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3729,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3743,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3745,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3751,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3752,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3755,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3759,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3764,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3771,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3772,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3775,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3800,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3802,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3808,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3809,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3812,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3826,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3826,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3829,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3836,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3838,1
    - Dst: BuildOnConflictExcludedTargetlist
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3845,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3855,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3857,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3861,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3879,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3881,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3887,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3888,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3891,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3918,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3920,1
    - Dst: RelationIsSecurityView
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3922,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3932,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3933,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3945,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3948,1
    - Dst: RelationHasCheckOption
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3959,1
    - Dst: RelationHasCascadedCheckOption
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3960,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3973,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3995,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3997,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3997,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4002,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4008,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4018,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4023,1
    CyclomaticComplexity: 75
    EdgeCount: 75
    ICount: 204
    argCount: 2
    argNames:
    - parsetree
    - view
    argTypes:
    - Query*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4026
      start: 3306
    functionDepth: 6
    functionLinenumber: 3306
    functionLinenumberEnd: 4026
    functionName: rewriteTargetView
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - AddQual
    - copyObject
    - errcode
    - RelationIsSecurityView
    - pstrdup
    - addRangeTableEntryForRelation
    - errhint
    - RelationGetRelationName
    - makeAlias
    - RelationHasCheckOption
    - table_close
    - bms_add_member
    - make_parsestate
    - bms_union
    - RelationHasSecurityInvoker
    - elog
    - view_cols_are_auto_updatable
    - RelationHasCascadedCheckOption
    - error_view_not_updatable
    - foreach
    - view_query_is_auto_updatable
    - _
    - Assert
    - linitial_node
    - linitial
    - foreach_node
    - view_has_instead_trigger
    - getRTEPermissionInfo
    - errmsg
    - list_length
    - ReplaceVarsFromTargetList
    - get_tle_by_resno
    - errdetail_internal
    - ChangeVarNodes
    - lcons
    - IsA
    - rt_fetch
    - ereport
    - query_tree_walker
    - lappend
    - adjust_view_column_set
    - unlikely
    - lfirst
    - addRTEPermissionInfo
    - relation_open
    - bms_make_singleton
    - makeNode
    - get_view_query
    - BuildOnConflictExcludedTargetlist
    - errdetail
    - checkExprHasSubLink
    - bms_is_empty
    - RelationGetRelid
    linkageType: ''
    returnType: Query
    signature: 'Query *

      rewriteTargetView(Query *parsetree, Relation view)'
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4067,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4069,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4070,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4071,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4075,1
    - Dst: RewriteQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4081,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4088,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4091,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4102,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4103,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4104,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4107,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4113,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4115,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4127,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4128,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4129,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4131,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4133,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4136,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4137,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4138,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4164,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4166,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4172,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4188,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4190,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4192,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4194,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4201,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4214,1
    - Dst: rewriteValuesRTE
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4222,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4231,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4242,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4251,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4271,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4274,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4276,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4278,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4292,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4297,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4299,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4314,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4321,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4344,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4349,1
    - Dst: matchLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4354,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4357,1
    - Dst: fireRules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4358,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4389,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4393,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4394,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4396,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4398,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4401,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4405,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4411,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4413,1
    - Dst: rewriteValuesRTEToNulls
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4415,1
    - Dst: view_has_instead_trigger
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4436,1
    - Dst: error_view_not_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4445,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4448,1
    - Dst: rewriteTargetView
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4455,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4464,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4466,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4491,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4492,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4494,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4495,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4496,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4497,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4500,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4501,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4503,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4507,1
    - Dst: RewriteQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4519,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4524,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4527,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4544,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4545,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4546,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4547,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4548,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4551,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4553,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4554,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4555,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4558,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4559,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4560,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4561,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4562,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4565,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4578,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4579,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4580,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4582,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4602,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4604,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4609,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4611,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4629,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4635,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4636,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4637,1
    CyclomaticComplexity: 75
    EdgeCount: 75
    ICount: 172
    argCount: 4
    argNames:
    - parsetree
    - rewrite_events
    - orig_rt_length
    - num_ctes_processed
    argTypes:
    - Query*
    - List*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4641
      start: 4043
    functionDepth: 10
    functionLinenumber: 4043
    functionLinenumberEnd: 4641
    functionName: RewriteQuery
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - AddQual
    - foreach_current_index
    - errcode
    - gettext_noop
    - errhint
    - list_concat
    - RelationGetRelationName
    - table_close
    - fireRules
    - elog
    - foreach
    - error_view_not_updatable
    - linitial_node
    - Assert
    - linitial
    - rewriteValuesRTE
    - view_has_instead_trigger
    - errmsg
    - palloc_object
    - list_length
    - RelationGetRelid
    - rewriteValuesRTEToNulls
    - rt_fetch
    - ereport
    - lappend
    - RewriteQuery
    - lfirst
    - relation_open
    - rewriteTargetListIU
    - lfirst_node
    - rewriteTargetView
    - list_delete_last
    - matchLocks
    - castNode
    - IsA
    - lcons
    linkageType: ''
    returnType: List
    signature: "List *\nRewriteQuery(Query *parsetree, List *rewrite_events, int orig_rt_length,\n\t\t\t
      int num_ctes_processed)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4127,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4128,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4129,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4131,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4134
      start: 4122
    functionDepth: 1
    functionLinenumber: 4122
    functionLinenumberEnd: 4134
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 469
    functionsReached:
    - lfirst
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, newstuff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4389,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4393,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4394,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4396,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4398,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4401,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4405,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4411,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4413,1
    - Dst: rewriteValuesRTEToNulls
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4415,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4416
      start: 4387
    functionDepth: 7
    functionLinenumber: 4387
    functionLinenumberEnd: 4416
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 469
    functionsReached:
    - elog
    - rewriteValuesRTEToNulls
    - linitial
    - rt_fetch
    - lfirst
    - list_length
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(n, product_queries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4491,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4492,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4494,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4495,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4496,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4498
      start: 4489
    functionDepth: 1
    functionLinenumber: 4489
    functionLinenumberEnd: 4498
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 469
    functionsReached:
    - errcode
    - ereport
    - lfirst
    - errmsg
    - RelationGetRelationName
    - RelationGetRelid
    linkageType: ''
    returnType: void
    signature: void foreach(n, rewrite_events)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4507,1
    - Dst: RewriteQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4519,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4525
      start: 4505
    functionDepth: 11
    functionLinenumber: 4505
    functionLinenumberEnd: 4525
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 469
    functionsReached:
    - lfirst
    - list_concat
    - RewriteQuery
    linkageType: ''
    returnType: void
    signature: void foreach(n, product_queries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4633
      start: 4627
    functionDepth: 1
    functionLinenumber: 4627
    functionLinenumberEnd: 4633
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 469
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, rewritten)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4659,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4666,1
    - Dst: build_generation_expression
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4674,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4675,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4677,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4678,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 3
    argNames:
    - rel
    - rt_index
    - include_stored
    argTypes:
    - Relation
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4684
      start: 4653
    functionDepth: 6
    functionLinenumber: 4653
    functionLinenumberEnd: 4684
    functionName: get_generated_columns
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 2
    functionsReached:
    - ChangeVarNodes
    - makeTargetEntry
    - RelationGetDescr
    - lappend
    - build_generation_expression
    - TupleDescAttr
    linkageType: ''
    returnType: List
    signature: 'List *

      get_generated_columns(Relation rel, int rt_index, bool include_stored)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4695,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4702,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4704,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4704,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4706,1
    - Dst: get_generated_columns
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4708,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4717,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - node
    - rel
    - rt_index
    argTypes:
    - Node*
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4724
      start: 4692
    functionDepth: 7
    functionLinenumber: 4692
    functionLinenumberEnd: 4724
    functionName: expand_generated_columns_in_expr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 6
    functionsReached:
    - RelationGetDescr
    - makeNode
    - get_generated_columns
    - RelationGetRelationName
    - makeAlias
    - ReplaceVarsFromTargetList
    - RelationGetRelid
    linkageType: ''
    returnType: Node
    signature: 'Node *

      expand_generated_columns_in_expr(Node *node, Relation rel, int rt_index)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4734,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4735,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4739,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4742,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4745,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4747,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4748,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4756,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4758,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - rel
    - attrno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4768
      start: 4731
    functionDepth: 9
    functionLinenumber: 4731
    functionLinenumberEnd: 4768
    functionName: build_generation_expression
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 4
    functionsReached:
    - elog
    - Assert
    - RelationGetDescr
    - build_column_default
    - makeNode
    - exprCollation
    - RelationGetRelationName
    - TupleDescAttr
    linkageType: ''
    returnType: Node
    signature: 'Node *

      build_generation_expression(Relation rel, int attrno)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4794,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4795,1
    - Dst: RewriteQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4802,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4814,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4816,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4820,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4849,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4850,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4858,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4870
      start: 4780
    functionDepth: 11
    functionLinenumber: 4780
    functionLinenumberEnd: 4870
    functionName: QueryRewrite
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 2
    functionsReached:
    - Assert
    - lappend
    - RewriteQuery
    - lfirst
    - fireRIRrules
    linkageType: ''
    returnType: List
    signature: 'List *

      QueryRewrite(Query *parsetree)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4814,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4816,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4821
      start: 4812
    functionDepth: 9
    functionLinenumber: 4812
    functionLinenumberEnd: 4821
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 469
    functionsReached:
    - lappend
    - lfirst
    - fireRIRrules
    linkageType: ''
    returnType: void
    signature: void foreach(l, querylist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4849,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4850,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4858,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4864
      start: 4843
    functionDepth: 1
    functionLinenumber: 4843
    functionLinenumberEnd: 4864
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 469
    functionsReached:
    - Assert
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, results)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:119,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:119,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:121,1
    - Dst: generate_queries_for_path_pattern
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:122,1
    - Dst: generate_union_from_pathqueries
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:123,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - parsetree
    - rt_index
    argTypes:
    - Query*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 109
    functionDepth: 7
    functionLinenumber: 109
    functionLinenumberEnd: 139
    functionName: rewriteGraphTable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 1
    functionsReached:
    - Assert
    - linitial
    - generate_queries_for_path_pattern
    - rt_fetch
    - generate_union_from_pathqueries
    - AcquireRewriteLocks
    - list_length
    linkageType: ''
    returnType: Query
    signature: 'Query *

      rewriteGraphTable(Query *parsetree, int rt_index)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:183,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:201,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:202,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:207,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:210,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:212,1
    - Dst: equal
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:227,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:229,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:240,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:241,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:250,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:288,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:297,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:297,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:299,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:300,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:306,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:307,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:312,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:312,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:314,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:315,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:316,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:321,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:331,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:331,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:343,1
    - Dst: get_path_elements_for_path_factor
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:344,1
    - Dst: generate_queries_for_path_pattern_recurse
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:346,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:349,1
    - Dst: generate_query_for_empty_path_pattern
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:349,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 67
    argCount: 2
    argNames:
    - rte
    - path_pattern
    argTypes:
    - RangeTblEntry*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 174
    functionDepth: 6
    functionLinenumber: 174
    functionLinenumberEnd: 352
    functionName: generate_queries_for_path_pattern
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 1
    functionsReached:
    - equal
    - palloc0_object
    - strcmp
    - errcode
    - Assert
    - lappend
    - ereport
    - generate_queries_for_path_pattern_recurse
    - get_path_elements_for_path_factor
    - IS_EDGE_PATTERN
    - list_make2
    - errmsg
    - generate_query_for_empty_path_pattern
    - list_length
    - list_make1
    - makeBoolExpr
    linkageType: ''
    returnType: List
    signature: 'List *

      generate_queries_for_path_pattern(RangeTblEntry *rte, List *path_pattern)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:201,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:202,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:207,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:210,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:212,1
    - Dst: equal
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:227,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:229,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:240,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:241,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:250,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:288,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:297,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:297,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:299,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:300,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:306,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:307,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:312,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:312,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:314,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:315,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:316,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:321,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:331,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:331,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 192
    functionDepth: 6
    functionLinenumber: 192
    functionLinenumberEnd: 336
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 27
    functionsReached:
    - palloc0_object
    - strcmp
    - errcode
    - Assert
    - lappend
    - ereport
    - IS_EDGE_PATTERN
    - list_make2
    - errmsg
    - equal
    - makeBoolExpr
    linkageType: ''
    returnType: void
    signature: void foreach_node(GraphElementPattern, gep, path_pattern)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:207,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:210,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:212,1
    - Dst: equal
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:227,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:229,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:240,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:241,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 204
    functionDepth: 3
    functionLinenumber: 204
    functionLinenumberEnd: 246
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 11
    functionsReached:
    - strcmp
    - errcode
    - ereport
    - list_make2
    - errmsg
    - equal
    - makeBoolExpr
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(struct path_factor, other, path_factors)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:363,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:366,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:371,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:377,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:377,1
    - Dst: generate_query_for_graph_path
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:381,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:381,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:383,1
    - Dst: generate_queries_for_path_pattern_recurse
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:386,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - rte
    - pathqueries
    - cur_path
    - path_elem_lists
    - elempos
    argTypes:
    - RangeTblEntry*
    - List*
    - List*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 360
    functionDepth: 6
    functionLinenumber: 360
    functionLinenumberEnd: 395
    functionName: generate_queries_for_path_pattern_recurse
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 2
    functionsReached:
    - list_delete_last
    - Assert
    - lappend
    - check_stack_depth
    - generate_queries_for_path_pattern_recurse
    - list_nth_node
    - list_length
    - generate_query_for_graph_path
    linkageType: ''
    returnType: List
    signature: 'List *

      generate_queries_for_path_pattern_recurse(RangeTblEntry *rte, List *pathqueries,
      List *cur_path, List *path_elem_lists, int elempos)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:371,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:377,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:377,1
    - Dst: generate_query_for_graph_path
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:381,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:381,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:383,1
    - Dst: generate_queries_for_path_pattern_recurse
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:386,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 368
    functionDepth: 7
    functionLinenumber: 368
    functionLinenumberEnd: 392
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 11
    functionsReached:
    - list_delete_last
    - Assert
    - lappend
    - generate_queries_for_path_pattern_recurse
    - list_length
    - generate_query_for_graph_path
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(struct path_element, pe, path_elems)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:435,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:435,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:438,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:444,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:445,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:449,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:454,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:455,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:455,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:456,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:470,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:471,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:475,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:477,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:480,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:480,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:482,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:482,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:495,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:498,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:510,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:511,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:511,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:513,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:514,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:515,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:516,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:517,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:518,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:527,1
    - Dst: replace_property_refs
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:533,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:533,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:535,1
    - Dst: replace_property_refs
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:541,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:545,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:548,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:549,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:552,1
    - Dst: replace_property_refs
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:553,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:562,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:562,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:565,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:566,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:569,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 2
    argNames:
    - rte
    - graph_path
    argTypes:
    - RangeTblEntry*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 418
    functionDepth: 6
    functionLinenumber: 418
    functionLinenumberEnd: 574
    functionName: generate_query_for_graph_path
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 2
    functionsReached:
    - copyObject
    - addRangeTableEntryForRelation
    - pull_vars_of_level
    - list_concat
    - table_close
    - bms_add_member
    - make_parsestate
    - replace_property_refs
    - Assert
    - table_open
    - getRTEPermissionInfo
    - list_length
    - ChangeVarNodes
    - lappend
    - rt_fetch
    - IS_EDGE_PATTERN
    - list_make1
    - makeBoolExpr
    - castNode
    - makeNode
    - list_make2
    - list_nth
    - makeFromExpr
    linkageType: ''
    returnType: Query
    signature: 'Query *

      generate_query_for_graph_path(RangeTblEntry *rte, List *graph_path)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:435,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:435,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:438,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:444,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:445,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:449,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:454,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:455,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:455,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:456,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:470,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:471,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:475,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:477,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:480,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:480,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:482,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:482,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:495,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:498,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:510,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:511,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:511,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:513,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:514,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:515,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:516,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:517,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:518,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:527,1
    - Dst: replace_property_refs
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:533,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:533,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:535,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 428
    functionDepth: 6
    functionLinenumber: 428
    functionLinenumberEnd: 537
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 11
    functionsReached:
    - ChangeVarNodes
    - copyObject
    - Assert
    - lappend
    - addRangeTableEntryForRelation
    - makeNode
    - list_make1
    - table_open
    - IS_EDGE_PATTERN
    - list_make2
    - list_concat
    - list_length
    - list_nth
    - table_close
    - make_parsestate
    - replace_property_refs
    - makeBoolExpr
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(struct path_element, pe, graph_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:565,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:566,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 563
    functionDepth: 3
    functionLinenumber: 563
    functionLinenumberEnd: 571
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 27
    functionsReached:
    - getRTEPermissionInfo
    - rt_fetch
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach_node(Var, var, vars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:584,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:589,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:589,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:596,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:600,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:600,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:600,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:600,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - rte
    argTypes:
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 581
    functionDepth: 6
    functionLinenumber: 581
    functionLinenumberEnd: 605
    functionName: generate_query_for_empty_path_pattern
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 1
    functionsReached:
    - exprTypmod
    - exprType
    - makeBoolConst
    - lappend
    - makeNode
    - foreach_node
    - exprCollation
    - makeNullConst
    - makeFromExpr
    linkageType: ''
    returnType: Query
    signature: 'Query *

      generate_query_for_empty_path_pattern(RangeTblEntry *rte)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:632,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:632,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:635,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:641,1
    - Dst: generate_setop_from_pathqueries
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:642,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:645,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:661,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:661,1
    - Dst: forfour
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:664,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:669,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:670,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:671,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:677,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:678,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:679,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:680,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:681,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - pathqueries
    argTypes:
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 619
    functionDepth: 6
    functionLinenumber: 619
    functionLinenumberEnd: 687
    functionName: generate_union_from_pathqueries
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 1
    functionsReached:
    - linitial_node
    - Assert
    - lfirst_oid
    - castNode
    - rt_fetch
    - generate_setop_from_pathqueries
    - makeNode
    - lfirst_int
    - pstrdup
    - makeTargetEntry
    - lappend
    - lfirst
    - exprLocation
    - list_length
    - makeFromExpr
    - forfour
    - makeVar
    linkageType: ''
    returnType: Query
    signature: 'Query *

      generate_union_from_pathqueries(List **pathqueries)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:701,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:706,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:709,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:715,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:722,1
    - Dst: addRangeTableEntryForSubquery
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:724,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:724,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:726,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:727,1
    - Dst: generate_setop_from_pathqueries
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:728,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:728,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:739,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:742,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:748,1
    - Dst: constructSetOpTargetlist
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:753,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 3
    argNames:
    - pathqueries
    - rtable
    - targetlist
    argTypes:
    - List*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 695
    functionDepth: 6
    functionLinenumber: 695
    functionLinenumberEnd: 756
    functionName: generate_setop_from_pathqueries
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 2
    functionsReached:
    - linitial_node
    - addRangeTableEntryForSubquery
    - lappend
    - check_stack_depth
    - makeNode
    - generate_setop_from_pathqueries
    - foreach_node
    - list_delete_first
    - IncrementVarSublevelsUp
    - list_length
    - make_parsestate
    - constructSetOpTargetlist
    linkageType: ''
    returnType: Node
    signature: 'Node *

      generate_setop_from_pathqueries(List *pathqueries, List **rtable, List **targetlist)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:768,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:768,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:773,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:774,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:777,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:779,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:783,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:805,1
    - Dst: build_edge_vertex_link_quals
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:807,1
    - Dst: build_edge_vertex_link_quals
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:812,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:819,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - pf
    - elemoid
    argTypes:
    - struct path_factor*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 822
    functionName: create_pe_for_element
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - palloc0_object
    - Assert
    - build_edge_vertex_link_quals
    - ReleaseSysCache
    - IS_EDGE_PATTERN
    - GETSTRUCT
    - ObjectIdGetDatum
    linkageType: ''
    returnType: struct path_element
    signature: 'struct path_element *

      create_pe_for_element(struct path_factor *pf, Oid elemoid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:847,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:848,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:851,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:852,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:854,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:854,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:856,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:858,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:860,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:861,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:863,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:865,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:867,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:869,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:871,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:875,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:876,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:884,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:884,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - propgraphid
    - labelexpr
    argTypes:
    - Oid
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 828
    functionDepth: 6
    functionLinenumber: 828
    functionLinenumberEnd: 888
    functionName: get_labels_for_expr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 0
    functionsReached:
    - elog
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - IsA
    - HeapTupleIsValid
    - castNode
    - foreach_node
    - table_open
    - GETSTRUCT
    - list_make1_oid
    - nodeTag
    - lappend_oid
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: 'List *

      get_labels_for_expr(Oid propgraphid, Node *labelexpr)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_labels_for_expr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:909,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:924,1
    - Dst: IS_EDGE_PATTERN
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:924,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:926,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:931,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:934,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:935,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:937,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:937,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:939,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:942,1
    - Dst: create_pe_for_element
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:948,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:952,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:955,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:963,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:965,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:986,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:988,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:989,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:990,1
    - Dst: get_propgraph_label_name
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:992,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:993,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:996,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:998,1
    - Dst: list_difference_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1006,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - propgraphid
    - pf
    argTypes:
    - Oid
    - struct path_factor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 906
    functionDepth: 7
    functionLinenumber: 906
    functionLinenumberEnd: 1009
    functionName: get_path_elements_for_path_factor
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 1
    functionsReached:
    - errcode
    - lappend_oid
    - table_close
    - systable_endscan
    - Assert
    - HeapTupleIsValid
    - get_propgraph_label_name
    - table_open
    - get_rel_name
    - errmsg
    - ObjectIdGetDatum
    - list_member_oid
    - list_difference_oid
    - systable_beginscan
    - lappend
    - ereport
    - IS_EDGE_PATTERN
    - get_labels_for_expr
    - GETSTRUCT
    - create_pe_for_element
    - ScanKeyInit
    - systable_getnext
    linkageType: ''
    returnType: List
    signature: 'List *

      get_path_elements_for_path_factor(Oid propgraphid, struct path_factor *pf)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:931,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:934,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:935,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:937,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:937,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:939,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:942,1
    - Dst: create_pe_for_element
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:948,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:952,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:955,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:963,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:965,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:986,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:988,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:989,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:990,1
    - Dst: get_propgraph_label_name
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:992,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:993,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:996,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 927
    functionDepth: 6
    functionLinenumber: 927
    functionLinenumberEnd: 997
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 3
    functionsReached:
    - create_pe_for_element
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - errcode
    - HeapTupleIsValid
    - get_propgraph_label_name
    - lappend
    - ereport
    - get_rel_name
    - GETSTRUCT
    - errmsg
    - lappend_oid
    - ObjectIdGetDatum
    - list_member_oid
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void foreach_oid(labeloid, label_oids)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1026,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1029,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1040,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1050,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1062,1
    - Dst: foreach_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1070,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1072,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1074,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1075,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1077,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1079,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1079,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1080,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1092,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1092,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1092,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1094,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1096,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1105,1
    - Dst: is_property_associated_with_label
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1116,1
    - Dst: get_element_property_expr
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1133,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1137,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1143,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1144,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1145,1
    - Dst: get_propgraph_property_name
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1146,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1151,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - struct replace_property_refs_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1021
    functionDepth: 6
    functionLinenumber: 1021
    functionLinenumberEnd: 1152
    functionName: replace_property_refs_mutator
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 0
    functionsReached:
    - copyObject
    - strcmp
    - errcode
    - foreach_oid
    - get_propgraph_property_name
    - lappend_oid
    - is_property_associated_with_label
    - Assert
    - ReleaseSysCache
    - errmsg
    - OidIsValid
    - TextDatumGetCString
    - ObjectIdGetDatum
    - ChangeVarNodes
    - get_element_property_expr
    - ereport
    - expression_tree_mutator
    - stringToNode
    - SysCacheGetAttrNotNull
    - GetSysCacheOid2
    - makeNullConst
    - IsA
    - SearchSysCache2
    linkageType: ''
    returnType: Node
    signature: 'Node *

      replace_property_refs_mutator(Node *node, struct replace_property_refs_context
      *context)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1050,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - mappings
    argTypes:
    - context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1055
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 11
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(struct path_element, m, context->mappings)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_property_associated_with_label
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1121
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 4
    functionsReached:
    - is_property_associated_with_label
    linkageType: ''
    returnType: void
    signature: void foreach_oid(loid, unrelated_labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replace_property_refs_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - propgraphid
    - node
    - mappings
    argTypes:
    - Oid
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1154
    functionDepth: 7
    functionLinenumber: 1154
    functionLinenumberEnd: 1163
    functionName: replace_property_refs
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 2
    functionsReached:
    - replace_property_refs_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      replace_property_refs(Oid propgraphid, Node *node, const List *mappings)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1180,1
    - Dst: GetSysCacheOid1
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1181,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1181,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1183,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1185,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1186,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1186,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1188,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1189,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1189,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1191,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1192,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1192,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1195,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1197,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1201,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1202,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1203,1
    - Dst: get_atttypetypmodcoll
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1216,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1217,1
    - Dst: get_atttypetypmodcoll
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1218,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1219,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1221,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1221,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1222,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1223,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1226,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1227,1
    - Dst: get_func_retset
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1229,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1237,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1238,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1239,1
    - Dst: make_fn_arguments
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1242,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1244,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1253,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1254,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1257,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 7
    argNames:
    - edgetup
    - edgerti
    - refrti
    - refid
    - catalog_key_attnum
    - catalog_ref_attnum
    - catalog_eqop_attnum
    argTypes:
    - HeapTuple
    - int
    - int
    - Oid
    - AttrNumber
    - AttrNumber
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1168
    functionDepth: 6
    functionLinenumber: 1168
    functionLinenumberEnd: 1260
    functionName: build_edge_vertex_link_quals
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 1
    functionsReached:
    - exprType
    - DatumGetInt16
    - make_parsestate
    - make_fn_arguments
    - elog
    - SearchSysCache1
    - DatumGetObjectId
    - HeapTupleIsValid
    - Assert
    - ReleaseSysCache
    - assign_expr_collations
    - get_atttypetypmodcoll
    - ObjectIdGetDatum
    - RegProcedureIsValid
    - lappend
    - get_func_retset
    - GETSTRUCT
    - SysCacheGetAttrNotNull
    - DatumGetArrayTypeP
    - deconstruct_array_builtin
    - makeNode
    - GetSysCacheOid1
    - list_make2
    - makeVar
    linkageType: ''
    returnType: List
    signature: 'List *

      build_edge_vertex_link_quals(HeapTuple edgetup, int edgerti, int refrti, Oid
      refid, AttrNumber catalog_key_attnum, AttrNumber catalog_ref_attnum, AttrNumber
      catalog_eqop_attnum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1278,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1279,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1282,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1283,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1286,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1286,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1288,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1290,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1291,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1291,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1293,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - labeloid
    - propoid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1269
    functionDepth: 4
    functionLinenumber: 1269
    functionLinenumberEnd: 1297
    functionName: is_property_associated_with_label
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 2
    functionsReached:
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - SearchSysCacheExists2
    - table_open
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: bool
    signature: bool is_property_associated_with_label(Oid labeloid, Oid propoid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1313,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1314,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1317,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1318,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1321,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1321,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1323,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1325,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1326,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1326,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1330,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1330,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1330,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1332,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1334,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1337,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteGraphTable.c:1338,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - elemoid
    - propoid
    - rtindex
    argTypes:
    - Oid
    - Oid
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1304
    functionDepth: 5
    functionLinenumber: 1304
    functionLinenumberEnd: 1341
    functionName: get_element_property_expr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteGraphTable.c
    functionUses: 1
    functionsReached:
    - ChangeVarNodes
    - ScanKeyInit
    - systable_endscan
    - systable_beginscan
    - HeapTupleIsValid
    - table_open
    - ReleaseSysCache
    - stringToNode
    - TextDatumGetCString
    - GETSTRUCT
    - SysCacheGetAttrNotNull
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    - SearchSysCache2
    linkageType: ''
    returnType: Node
    signature: 'Node *

      get_element_property_expr(Oid elemoid, Oid propoid, int rtindex)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:45,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:50,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:53,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:55,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:58,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:60,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:61,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:68,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:69,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:71,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:72,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:73,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:74,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:75,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:80,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:82,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:84,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:90,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteRemove.c:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ruleOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 32
    functionDepth: 7
    functionLinenumber: 32
    functionLinenumberEnd: 94
    functionName: RemoveRewriteRuleById
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteRemove.c
    functionUses: 1
    functionsReached:
    - elog
    - ScanKeyInit
    - systable_endscan
    - IsSystemRelation
    - systable_beginscan
    - errcode
    - HeapTupleIsValid
    - CacheInvalidateRelcache
    - ereport
    - table_open
    - CatalogTupleDelete
    - GETSTRUCT
    - errmsg
    - RelationGetRelationName
    - ObjectIdGetDatum
    - table_close
    - systable_getnext
    linkageType: ''
    returnType: void
    signature: void RemoveRewriteRuleById(Oid ruleOid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:122,1
    - Dst: strVal
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:129,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:129,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:131,1
    - Dst: strVal
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:133,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:133,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:135,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:139,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:140,1
    - Dst: list_nth_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:141,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:142,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:144,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:145,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - cte
    - col_list
    argTypes:
    - CommonTableExpr*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 116
    functionDepth: 6
    functionLinenumber: 116
    functionLinenumberEnd: 152
    functionName: make_path_rowexpr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c
    functionUses: 0
    functionsReached:
    - strcmp
    - list_nth_int
    - makeString
    - list_nth_oid
    - lappend
    - makeNode
    - lfirst
    - list_length
    - list_nth
    - strVal
    - makeVar
    linkageType: ''
    returnType: RowExpr
    signature: 'RowExpr *

      make_path_rowexpr(const CommonTableExpr *cte, const List *col_list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:129,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:129,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:131,1
    - Dst: strVal
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:133,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:133,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:135,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:139,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:140,1
    - Dst: list_nth_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:141,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:142,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:144,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:145,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 127
    functionDepth: 6
    functionLinenumber: 127
    functionLinenumberEnd: 149
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c
    functionUses: 469
    functionsReached:
    - strcmp
    - list_nth_int
    - makeString
    - list_nth_oid
    - lappend
    - lfirst
    - list_length
    - list_nth
    - strVal
    - makeVar
    linkageType: ''
    returnType: void
    signature: void foreach(lc, col_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:163,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - rowexpr
    argTypes:
    - RowExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 170
    functionName: make_path_initial_array
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c
    functionUses: 0
    functionsReached:
    - list_make1
    - makeNode
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      make_path_initial_array(RowExpr *rowexpr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:185,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:189,1
    - Dst: makeFuncExpr
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:191,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:192,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - rowexpr
    - path_varattno
    argTypes:
    - RowExpr*
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 197
    functionName: make_path_cat_expr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c
    functionUses: 0
    functionsReached:
    - makeFuncExpr
    - makeNode
    - list_make2
    - list_make1
    - makeVar
    linkageType: ''
    returnType: Expr
    signature: 'Expr *

      make_path_cat_expr(RowExpr *rowexpr, AttrNumber path_varattno)'
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:226,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:228,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:236,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:237,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:238,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:240,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:241,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:243,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:244,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:246,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:247,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:264,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:267,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:268,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:279,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:283,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:286,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:287,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:288,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:291,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:293,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:295,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:295,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:300,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:304,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:305,1
    - Dst: list_nth_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:306,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:307,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:309,1
    - Dst: strVal
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:309,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:309,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:310,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:311,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:312,1
    - Dst: make_path_rowexpr
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:319,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:322,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:322,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:323,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:325,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:325,1
    - Dst: make_path_initial_array
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:329,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:330,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:331,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:334,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:338,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:339,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:342,1
    - Dst: make_path_rowexpr
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:343,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:344,1
    - Dst: make_path_initial_array
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:344,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:345,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:348,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:355,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:355,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:359,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:359,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:360,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:360,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:366,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:370,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:372,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:375,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:375,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:379,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:379,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:380,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:380,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:383,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:395,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:400,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:408,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:409,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:410,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:413,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:414,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:424,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:426,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:427,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:430,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:437,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:441,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:442,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:445,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:448,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:450,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:451,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:454,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:459,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:461,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:471,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:472,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:480,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:480,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:483,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:483,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:488,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:492,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:493,1
    - Dst: list_nth_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:494,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:495,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:497,1
    - Dst: strVal
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:497,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:497,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:498,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:499,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:500,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:516,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:518,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:519,1
    - Dst: makeFuncExpr
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:524,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:524,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:526,1
    - Dst: make_path_cat_expr
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:535,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:537,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:538,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:541,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:554,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:558,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:559,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:561,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:565,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:569,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:572,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:573,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:576,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:581,1
    - Dst: make_path_cat_expr
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:581,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:582,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:585,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:592,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:592,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:596,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:596,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:597,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:597,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:605,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:606,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:607,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:609,1
    - Dst: makeSortGroupClauseForSetOp
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:610,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:614,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:615,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:616,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:618,1
    - Dst: makeSortGroupClauseForSetOp
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:619,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:621,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:622,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:623,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:625,1
    - Dst: makeSortGroupClauseForSetOp
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:626,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:634,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:635,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:635,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:637,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:643,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:644,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:644,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:648,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:651,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:652,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:652,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:654,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:665,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:666,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:667,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:671,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:672,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:673,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:675,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:676,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c:677,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 218
    argCount: 1
    argNames:
    - cte
    argTypes:
    - CommonTableExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 202
    functionDepth: 7
    functionLinenumber: 202
    functionLinenumberEnd: 681
    functionName: rewriteSearchAndCycle
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteSearchCycle.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - copyObject
    - make_path_rowexpr
    - strcmp
    - errcode
    - list_nth_int
    - makeAlias
    - lappend_oid
    - makeConst
    - strVal
    - make_path_initial_array
    - Assert
    - linitial
    - list_nth_node
    - errmsg
    - IncrementVarSublevelsUp
    - list_length
    - makeFuncExpr
    - makeTargetEntry
    - makeString
    - rt_fetch
    - lappend
    - ereport
    - list_make1
    - Int64GetDatum
    - make_path_cat_expr
    - castNode
    - makeNode
    - list_make2
    - makeVar
    - make_opclause
    - makeSortGroupClauseForSetOp
    - list_nth
    - makeFromExpr
    - lcons
    - list_nth_oid
    linkageType: ''
    returnType: CommonTableExpr
    signature: 'CommonTableExpr *

      rewriteSearchAndCycle(CommonTableExpr *cte)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/lib/rbtree.c:109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/rbtree.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 6
    argNames:
    - node_size
    - comparator
    - combiner
    - allocfunc
    - freefunc
    - arg
    argTypes:
    - Size
    - rbt_comparator
    - rbt_combiner
    - rbt_allocfunc
    - rbt_freefunc
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 123
    functionName: rbt_create
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 2
    functionsReached:
    - Assert
    - palloc_object
    linkageType: ''
    returnType: RBTree
    signature: "RBTree *\nrbt_create(Size node_size,\n\t\t   rbt_comparator comparator,\n\t\t
      \  rbt_combiner combiner,\n\t\t   rbt_allocfunc allocfunc,\n\t\t   rbt_freefunc
      freefunc,\n\t\t   void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/lib/rbtree.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rbt
    - dest
    - src
    argTypes:
    - RBTree*
    - RBTNode*
    - RBTNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: rbt_copy_data
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void rbt_copy_data(RBTree *rbt, RBTNode *dest, const RBTNode *src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RBTree*::comparator
      Src: /src/postgres/src/backend/lib/rbtree.c:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - rbt
    - data
    argTypes:
    - RBTree*
    - RBTNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 162
    functionName: rbt_find
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 2
    functionsReached:
    - RBTree*::comparator
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      rbt_find(RBTree *rbt, const RBTNode *data)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RBTree*::comparator
      Src: /src/postgres/src/backend/lib/rbtree.c:179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - rbt
    - data
    - equal_match
    argTypes:
    - RBTree*
    - RBTNode*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 193
    functionName: rbt_find_great
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 1
    functionsReached:
    - RBTree*::comparator
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      rbt_find_great(RBTree *rbt, const RBTNode *data, bool equal_match)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RBTree*::comparator
      Src: /src/postgres/src/backend/lib/rbtree.c:210,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - rbt
    - data
    - equal_match
    argTypes:
    - RBTree*
    - RBTNode*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 224
    functionName: rbt_find_less
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 1
    functionsReached:
    - RBTree*::comparator
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      rbt_find_less(RBTree *rbt, const RBTNode *data, bool equal_match)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - rbt
    argTypes:
    - RBTree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 250
    functionName: rbt_leftmost
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      rbt_leftmost(RBTree *rbt)'
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - rbt
    - x
    argTypes:
    - RBTree*
    - RBTNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 291
    functionName: rbt_rotate_left
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rbt_rotate_left(RBTree *rbt, RBTNode *x)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - rbt
    - x
    argTypes:
    - RBTree*
    - RBTNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 328
    functionName: rbt_rotate_right
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rbt_rotate_right(RBTree *rbt, RBTNode *x)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rbt_rotate_left
      Src: /src/postgres/src/backend/lib/rbtree.c:388,1
    - Dst: rbt_rotate_right
      Src: /src/postgres/src/backend/lib/rbtree.c:395,1
    - Dst: rbt_rotate_right
      Src: /src/postgres/src/backend/lib/rbtree.c:418,1
    - Dst: rbt_rotate_left
      Src: /src/postgres/src/backend/lib/rbtree.c:423,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - rbt
    - x
    argTypes:
    - RBTree*
    - RBTNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 433
    functionName: rbt_insert_fixup
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 0
    functionsReached:
    - rbt_rotate_right
    - rbt_rotate_left
    linkageType: ''
    returnType: void
    signature: void rbt_insert_fixup(RBTree *rbt, RBTNode *x)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RBTree*::comparator
      Src: /src/postgres/src/backend/lib/rbtree.c:467,1
    - Dst: RBTree*::combiner
      Src: /src/postgres/src/backend/lib/rbtree.c:473,1
    - Dst: RBTree*::allocfunc
      Src: /src/postgres/src/backend/lib/rbtree.c:486,1
    - Dst: rbt_copy_data
      Src: /src/postgres/src/backend/lib/rbtree.c:493,1
    - Dst: rbt_insert_fixup
      Src: /src/postgres/src/backend/lib/rbtree.c:508,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - rbt
    - data
    - isNew
    argTypes:
    - RBTree*
    - RBTNode*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 452
    functionDepth: 2
    functionLinenumber: 452
    functionLinenumberEnd: 511
    functionName: rbt_insert
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 2
    functionsReached:
    - RBTree*::combiner
    - RBTree*::allocfunc
    - RBTree*::comparator
    - rbt_insert_fixup
    - rbt_copy_data
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      rbt_insert(RBTree *rbt, const RBTNode *data, bool *isNew)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rbt_rotate_left
      Src: /src/postgres/src/backend/lib/rbtree.c:546,1
    - Dst: rbt_rotate_right
      Src: /src/postgres/src/backend/lib/rbtree.c:563,1
    - Dst: rbt_rotate_left
      Src: /src/postgres/src/backend/lib/rbtree.c:570,1
    - Dst: rbt_rotate_right
      Src: /src/postgres/src/backend/lib/rbtree.c:583,1
    - Dst: rbt_rotate_left
      Src: /src/postgres/src/backend/lib/rbtree.c:600,1
    - Dst: rbt_rotate_right
      Src: /src/postgres/src/backend/lib/rbtree.c:607,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 2
    argNames:
    - rbt
    - x
    argTypes:
    - RBTree*
    - RBTNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 613
    functionName: rbt_delete_fixup
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 0
    functionsReached:
    - rbt_rotate_right
    - rbt_rotate_left
    linkageType: ''
    returnType: void
    signature: void rbt_delete_fixup(RBTree *rbt, RBTNode *x)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: rbt_copy_data
      Src: /src/postgres/src/backend/lib/rbtree.c:671,1
    - Dst: rbt_delete_fixup
      Src: /src/postgres/src/backend/lib/rbtree.c:678,1
    - Dst: RBTree*::freefunc
      Src: /src/postgres/src/backend/lib/rbtree.c:682,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - rbt
    - z
    argTypes:
    - RBTree*
    - RBTNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 683
    functionName: rbt_delete_node
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 0
    functionsReached:
    - RBTree*::freefunc
    - rbt_delete_fixup
    - rbt_copy_data
    linkageType: ''
    returnType: void
    signature: void rbt_delete_node(RBTree *rbt, RBTNode *z)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbt_delete_node
      Src: /src/postgres/src/backend/lib/rbtree.c:697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rbt
    - node
    argTypes:
    - RBTree*
    - RBTNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 694
    functionDepth: 3
    functionLinenumber: 694
    functionLinenumberEnd: 698
    functionName: rbt_delete
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 2
    functionsReached:
    - rbt_delete_node
    linkageType: ''
    returnType: void
    signature: void rbt_delete(RBTree *rbt, RBTNode *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 1
    argNames:
    - iter
    argTypes:
    - RBTreeIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 744
    functionName: rbt_left_right_iterator
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      rbt_left_right_iterator(RBTreeIterator *iter)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 1
    argNames:
    - iter
    argTypes:
    - RBTreeIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 746
    functionDepth: 0
    functionLinenumber: 746
    functionLinenumberEnd: 786
    functionName: rbt_right_left_iterator
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      rbt_right_left_iterator(RBTreeIterator *iter)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/lib/rbtree.c:818,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - rbt
    - ctrl
    - iter
    argTypes:
    - RBTree*
    - RBTOrderControl
    - RBTreeIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 820
    functionName: rbt_begin_iterate
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 3
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void rbt_begin_iterate(RBTree *rbt, RBTOrderControl ctrl, RBTreeIterator
      *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RBTreeIterator*::iterate
      Src: /src/postgres/src/backend/lib/rbtree.c:831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - iter
    argTypes:
    - RBTreeIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 832
    functionName: rbt_iterate
    functionSourceFile: /src/postgres/src/backend/lib/rbtree.c
    functionUses: 3
    functionsReached:
    - RBTreeIterator*::iterate
    linkageType: ''
    returnType: RBTNode
    signature: 'RBTNode *

      rbt_iterate(RBTreeIterator *iter)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/lib/bloomfilter.c:101,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/lib/bloomfilter.c:101,1
    - Dst: Max
      Src: /src/postgres/src/backend/lib/bloomfilter.c:102,1
    - Dst: my_bloom_power
      Src: /src/postgres/src/backend/lib/bloomfilter.c:108,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/lib/bloomfilter.c:109,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/lib/bloomfilter.c:113,1
    - Dst: optimal_k
      Src: /src/postgres/src/backend/lib/bloomfilter.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - total_elems
    - bloom_work_mem
    - seed
    argTypes:
    - int64
    - int
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 120
    functionName: bloom_create
    functionSourceFile: /src/postgres/src/backend/lib/bloomfilter.c
    functionUses: 1
    functionsReached:
    - my_bloom_power
    - palloc0
    - optimal_k
    - Max
    - Min
    - UINT64CONST
    linkageType: ''
    returnType: bloom_filter
    signature: 'bloom_filter *

      bloom_create(int64 total_elems, int bloom_work_mem, uint64 seed)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/bloomfilter.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - bloom_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 129
    functionName: bloom_free
    functionSourceFile: /src/postgres/src/backend/lib/bloomfilter.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void bloom_free(bloom_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: k_hashes
      Src: /src/postgres/src/backend/lib/bloomfilter.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - filter
    - elem
    - len
    argTypes:
    - bloom_filter*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 147
    functionName: bloom_add_element
    functionSourceFile: /src/postgres/src/backend/lib/bloomfilter.c
    functionUses: 1
    functionsReached:
    - k_hashes
    linkageType: ''
    returnType: void
    signature: void bloom_add_element(bloom_filter *filter, unsigned char *elem, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: k_hashes
      Src: /src/postgres/src/backend/lib/bloomfilter.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - filter
    - elem
    - len
    argTypes:
    - bloom_filter*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 172
    functionName: bloom_lacks_element
    functionSourceFile: /src/postgres/src/backend/lib/bloomfilter.c
    functionUses: 1
    functionsReached:
    - k_hashes
    linkageType: ''
    returnType: bool
    signature: bool bloom_lacks_element(bloom_filter *filter, unsigned char *elem,
      size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount
      Src: /src/postgres/src/backend/lib/bloomfilter.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - bloom_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 193
    functionName: bloom_prop_bits_set
    functionSourceFile: /src/postgres/src/backend/lib/bloomfilter.c
    functionUses: 1
    functionsReached:
    - pg_popcount
    linkageType: ''
    returnType: double
    signature: double bloom_prop_bits_set(bloom_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - target_bitset_bits
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 221
    functionName: my_bloom_power
    functionSourceFile: /src/postgres/src/backend/lib/bloomfilter.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int my_bloom_power(uint64 target_bitset_bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rint
      Src: /src/postgres/src/backend/lib/bloomfilter.c:231,1
    - Dst: log
      Src: /src/postgres/src/backend/lib/bloomfilter.c:231,1
    - Dst: Max
      Src: /src/postgres/src/backend/lib/bloomfilter.c:233,1
    - Dst: Min
      Src: /src/postgres/src/backend/lib/bloomfilter.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bitset_bits
    - total_elems
    argTypes:
    - uint64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: optimal_k
    functionSourceFile: /src/postgres/src/backend/lib/bloomfilter.c
    functionUses: 1
    functionsReached:
    - log
    - Max
    - Min
    - rint
    linkageType: ''
    returnType: int
    signature: int optimal_k(uint64 bitset_bits, int64 total_elems)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/lib/bloomfilter.c:259,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/lib/bloomfilter.c:259,1
    - Dst: mod_m
      Src: /src/postgres/src/backend/lib/bloomfilter.c:264,1
    - Dst: mod_m
      Src: /src/postgres/src/backend/lib/bloomfilter.c:265,1
    - Dst: mod_m
      Src: /src/postgres/src/backend/lib/bloomfilter.c:271,1
    - Dst: mod_m
      Src: /src/postgres/src/backend/lib/bloomfilter.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - filter
    - hashes
    - elem
    - len
    argTypes:
    - bloom_filter*
    - uint32*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 276
    functionName: k_hashes
    functionSourceFile: /src/postgres/src/backend/lib/bloomfilter.c
    functionUses: 2
    functionsReached:
    - hash_any_extended
    - DatumGetUInt64
    - mod_m
    linkageType: ''
    returnType: void
    signature: void k_hashes(bloom_filter *filter, uint32 *hashes, unsigned char *elem,
      size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/bloomfilter.c:290,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/lib/bloomfilter.c:290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/bloomfilter.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - val
    - m
    argTypes:
    - uint32
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 294
    functionName: mod_m
    functionSourceFile: /src/postgres/src/backend/lib/bloomfilter.c
    functionUses: 1
    functionsReached:
    - Assert
    - UINT64CONST
    linkageType: ''
    returnType: uint32
    signature: uint32 mod_m(uint32 val, uint64 m)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/lib/hyperloglog.c:71,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/lib/hyperloglog.c:81,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - cState
    - bwidth
    argTypes:
    - hyperLogLogState*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 109
    functionName: initHyperLogLog
    functionSourceFile: /src/postgres/src/backend/lib/hyperloglog.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0
    linkageType: ''
    returnType: void
    signature: void initHyperLogLog(hyperLogLogState *cState, uint8 bwidth)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqrt
      Src: /src/postgres/src/backend/lib/hyperloglog.c:136,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/lib/hyperloglog.c:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - cState
    - error
    argTypes:
    - hyperLogLogState*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 142
    functionName: initHyperLogLogError
    functionSourceFile: /src/postgres/src/backend/lib/hyperloglog.c
    functionUses: 0
    functionsReached:
    - initHyperLogLog
    - sqrt
    linkageType: ''
    returnType: void
    signature: void initHyperLogLogError(hyperLogLogState *cState, double error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/hyperloglog.c:153,1
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/hyperloglog.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cState
    argTypes:
    - hyperLogLogState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 155
    functionName: freeHyperLogLog
    functionSourceFile: /src/postgres/src/backend/lib/hyperloglog.c
    functionUses: 1
    functionsReached:
    - Assert
    - pfree
    linkageType: ''
    returnType: void
    signature: void freeHyperLogLog(hyperLogLogState *cState)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rho
      Src: /src/postgres/src/backend/lib/hyperloglog.c:176,1
    - Dst: Max
      Src: /src/postgres/src/backend/lib/hyperloglog.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cState
    - hash
    argTypes:
    - hyperLogLogState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 180
    functionName: addHyperLogLog
    functionSourceFile: /src/postgres/src/backend/lib/hyperloglog.c
    functionUses: 1
    functionsReached:
    - Max
    - rho
    linkageType: ''
    returnType: void
    signature: void addHyperLogLog(hyperLogLogState *cState, uint32 hash)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pow
      Src: /src/postgres/src/backend/lib/hyperloglog.c:194,1
    - Dst: log
      Src: /src/postgres/src/backend/lib/hyperloglog.c:212,1
    - Dst: log
      Src: /src/postgres/src/backend/lib/hyperloglog.c:218,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - cState
    argTypes:
    - hyperLogLogState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 222
    functionName: estimateHyperLogLog
    functionSourceFile: /src/postgres/src/backend/lib/hyperloglog.c
    functionUses: 1
    functionsReached:
    - pow
    - log
    linkageType: ''
    returnType: double
    signature: double estimateHyperLogLog(hyperLogLogState *cState)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/backend/lib/hyperloglog.c:249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - x
    - b
    argTypes:
    - uint32
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 255
    functionName: rho
    functionSourceFile: /src/postgres/src/backend/lib/hyperloglog.c
    functionUses: 1
    functionsReached:
    - pg_leftmost_one_pos32
    linkageType: ''
    returnType: uint8
    signature: uint8 rho(uint32 x, uint8 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/lib/integerset.c:287,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/lib/integerset.c:289,1
    - Dst: memset
      Src: /src/postgres/src/backend/lib/integerset.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 309
    functionName: intset_create
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 6
    functionsReached:
    - GetMemoryChunkSpace
    - memset
    - palloc_object
    linkageType: ''
    returnType: IntegerSet
    signature: 'IntegerSet *

      intset_create(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/lib/integerset.c:319,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/lib/integerset.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - intset
    argTypes:
    - IntegerSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 327
    functionName: intset_new_internal_node
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkSpace
    - MemoryContextAlloc
    linkageType: ''
    returnType: intset_internal_node
    signature: 'intset_internal_node *

      intset_new_internal_node(IntegerSet *intset)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/lib/integerset.c:334,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/lib/integerset.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - intset
    argTypes:
    - IntegerSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 343
    functionName: intset_new_leaf_node
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkSpace
    - MemoryContextAlloc
    linkageType: ''
    returnType: intset_leaf_node
    signature: 'intset_leaf_node *

      intset_new_leaf_node(IntegerSet *intset)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - intset
    argTypes:
    - IntegerSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 352
    functionName: intset_num_entries
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 intset_num_entries(IntegerSet *intset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - intset
    argTypes:
    - IntegerSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: intset_memory_usage
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 intset_memory_usage(IntegerSet *intset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/lib/integerset.c:372,1
    - Dst: elog
      Src: /src/postgres/src/backend/lib/integerset.c:375,1
    - Dst: intset_flush_buffered_values
      Src: /src/postgres/src/backend/lib/integerset.c:380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/integerset.c:381,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - intset
    - x
    argTypes:
    - IntegerSet*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 389
    functionName: intset_add_member
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 5
    functionsReached:
    - elog
    - intset_flush_buffered_values
    - Assert
    linkageType: ''
    returnType: void
    signature: void intset_add_member(IntegerSet *intset, uint64 x)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: intset_new_leaf_node
      Src: /src/postgres/src/backend/lib/integerset.c:415,1
    - Dst: simple8b_encode
      Src: /src/postgres/src/backend/lib/integerset.c:439,1
    - Dst: intset_new_leaf_node
      Src: /src/postgres/src/backend/lib/integerset.c:452,1
    - Dst: intset_update_upper
      Src: /src/postgres/src/backend/lib/integerset.c:455,1
    - Dst: memmove
      Src: /src/postgres/src/backend/lib/integerset.c:467,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - intset
    argTypes:
    - IntegerSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 472
    functionName: intset_flush_buffered_values
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 1
    functionsReached:
    - simple8b_encode
    - intset_new_leaf_node
    - intset_update_upper
    - memmove
    linkageType: ''
    returnType: void
    signature: void intset_flush_buffered_values(IntegerSet *intset)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/integerset.c:485,1
    - Dst: elog
      Src: /src/postgres/src/backend/lib/integerset.c:497,1
    - Dst: intset_new_internal_node
      Src: /src/postgres/src/backend/lib/integerset.c:509,1
    - Dst: intset_new_internal_node
      Src: /src/postgres/src/backend/lib/integerset.c:537,1
    - Dst: intset_update_upper
      Src: /src/postgres/src/backend/lib/integerset.c:545,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 4
    argNames:
    - intset
    - level
    - child
    - child_key
    argTypes:
    - IntegerSet*
    - int
    - intset_node*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 479
    functionDepth: 2
    functionLinenumber: 479
    functionLinenumberEnd: 547
    functionName: intset_update_upper
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 2
    functionsReached:
    - Assert
    - intset_update_upper
    - elog
    - intset_new_internal_node
    linkageType: ''
    returnType: void
    signature: "void intset_update_upper(IntegerSet *intset, int level, intset_node
      *child,\n\t\t\t\t\tuint64 child_key)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: intset_binsrch_uint64
      Src: /src/postgres/src/backend/lib/integerset.c:566,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/integerset.c:587,1
    - Dst: intset_binsrch_uint64
      Src: /src/postgres/src/backend/lib/integerset.c:589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/integerset.c:594,1
    - Dst: intset_binsrch_leaf
      Src: /src/postgres/src/backend/lib/integerset.c:600,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/integerset.c:608,1
    - Dst: simple8b_contains
      Src: /src/postgres/src/backend/lib/integerset.c:611,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - intset
    - x
    argTypes:
    - IntegerSet*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 615
    functionName: intset_is_member
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 6
    functionsReached:
    - intset_binsrch_uint64
    - simple8b_contains
    - intset_binsrch_leaf
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool intset_is_member(IntegerSet *intset, uint64 x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - intset
    argTypes:
    - IntegerSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 632
    functionName: intset_begin_iterate
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void intset_begin_iterate(IntegerSet *intset)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/integerset.c:644,1
    - Dst: simple8b_decode
      Src: /src/postgres/src/backend/lib/integerset.c:664,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - intset
    - next
    argTypes:
    - IntegerSet*
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 699
    functionName: intset_iterate_next
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 6
    functionsReached:
    - Assert
    - simple8b_decode
    linkageType: ''
    returnType: bool
    signature: bool intset_iterate_next(IntegerSet *intset, uint64 *next)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - item
    - arr
    - arr_elems
    - nextkey
    argTypes:
    - uint64
    - uint64*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 742
    functionName: intset_binsrch_uint64
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int intset_binsrch_uint64(uint64 item, uint64 *arr, int arr_elems,
      bool nextkey)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - item
    - arr
    - arr_elems
    - nextkey
    argTypes:
    - uint64
    - leaf_item*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 745
    functionDepth: 0
    functionLinenumber: 745
    functionLinenumberEnd: 775
    functionName: intset_binsrch_leaf
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int intset_binsrch_leaf(uint64 item, leaf_item *arr, int arr_elems,
      bool nextkey)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/integerset.c:882,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/lib/integerset.c:907,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/integerset.c:924,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/integerset.c:939,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 3
    argNames:
    - ints
    - num_encoded
    - base
    argTypes:
    - uint64*
    - int*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 871
    functionDepth: 1
    functionLinenumber: 871
    functionLinenumberEnd: 967
    functionName: simple8b_encode
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 1
    functionsReached:
    - Assert
    - UINT64CONST
    linkageType: ''
    returnType: uint64
    signature: uint64 simple8b_encode(const uint64 *ints, int *num_encoded, uint64
      base)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/lib/integerset.c:979,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - codeword
    - decoded
    - base
    argTypes:
    - uint64
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 995
    functionName: simple8b_decode
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 1
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: int
    signature: int simple8b_decode(uint64 codeword, uint64 *decoded, uint64 base)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/lib/integerset.c:1019,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - codeword
    - key
    - base
    argTypes:
    - uint64
    - uint64
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1002
    functionDepth: 1
    functionLinenumber: 1002
    functionLinenumberEnd: 1041
    functionName: simple8b_contains
    functionSourceFile: /src/postgres/src/backend/lib/integerset.c
    functionUses: 1
    functionsReached:
    - UINT64CONST
    linkageType: ''
    returnType: bool
    signature: bool simple8b_contains(uint64 codeword, uint64 key, uint64 base)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/lib/knapsack.c:54,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/lib/knapsack.c:57,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/knapsack.c:64,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/knapsack.c:65,1
    - Dst: palloc
      Src: /src/postgres/src/backend/lib/knapsack.c:67,1
    - Dst: palloc
      Src: /src/postgres/src/backend/lib/knapsack.c:68,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/lib/knapsack.c:73,1
    - Dst: bms_replace_members
      Src: /src/postgres/src/backend/lib/knapsack.c:89,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/lib/knapsack.c:91,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/lib/knapsack.c:98,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/lib/knapsack.c:100,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/lib/knapsack.c:100,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/lib/knapsack.c:102,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - max_weight
    - num_items
    - item_weights
    - item_values
    argTypes:
    - int
    - int
    - int*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 50
    functionDepth: 4
    functionLinenumber: 50
    functionLinenumberEnd: 105
    functionName: DiscreteKnapsack
    functionSourceFile: /src/postgres/src/backend/lib/knapsack.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - Assert
    - bms_copy
    - AllocSetContextCreate
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - palloc
    - bms_replace_members
    - bms_add_member
    - bms_make_singleton
    linkageType: ''
    returnType: Bitmapset
    signature: "Bitmapset *\nDiscreteKnapsack(int max_weight, int num_items,\n\t\t\t\t
      int *item_weights, double *item_values)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: ENTRY_FROM_ITEM
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENTRY_FROM_ITEM(item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - entry
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: ITEM_FROM_ENTRY
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ITEM_FROM_ENTRY(entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size_log2
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: NUM_SPLITS
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUM_SPLITS(size_log2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size_log2
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: NUM_BUCKETS
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUM_BUCKETS(size_log2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size_log2
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 135
    functionName: BUCKETS_PER_PARTITION
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUCKETS_PER_PARTITION(size_log2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hash_table
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: MAX_COUNT_PER_PARTITION
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX_COUNT_PER_PARTITION(hash_table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hash
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: PARTITION_FOR_HASH
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARTITION_FOR_HASH(hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hash
    - ','
    - size_log2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: BUCKET_INDEX_FOR_HASH_AND_SIZE
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUCKET_INDEX_FOR_HASH_AND_SIZE(hash, size_log2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - partition
    - ','
    - size_log2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: BUCKET_INDEX_FOR_PARTITION
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUCKET_INDEX_FOR_PARTITION(partition, size_log2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - bucket_idx
    - ','
    - size_log2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: PARTITION_FOR_BUCKET_INDEX
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARTITION_FOR_BUCKET_INDEX(bucket_idx, size_log2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hash_table
    - ','
    - hash
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 167
    functionName: BUCKET_FOR_HASH
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUCKET_FOR_HASH(hash_table, hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hash_table
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 198
    functionName: PARTITION_LOCK
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARTITION_LOCK(hash_table, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hash_table
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME(hash_table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/lib/dshash.c:216,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/lib/dshash.c:219,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:225,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/lib/dshash.c:238,1
    - Dst: dsa_allocate_extended
      Src: /src/postgres/src/backend/lib/dshash.c:249,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:252,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:254,1
    - Dst: ereport
      Src: /src/postgres/src/backend/lib/dshash.c:255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/lib/dshash.c:256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/lib/dshash.c:257,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/lib/dshash.c:258,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - area
    - params
    - arg
    argTypes:
    - dsa_area*
    - dshash_parameters*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 266
    functionName: dshash_create
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - DsaPointerIsValid
    - dsa_free
    - errcode
    - errdetail
    - ereport
    - dsa_get_address
    - palloc_object
    - errmsg
    - dsa_allocate
    - dsa_allocate_extended
    - LWLockInitialize
    linkageType: ''
    returnType: dshash_table
    signature: 'dshash_table *

      dshash_create(dsa_area *area, const dshash_parameters *params, void *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/lib/dshash.c:281,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - area
    - params
    - handle
    - arg
    argTypes:
    - dsa_area*
    - dshash_parameters*
    - dshash_table_handle
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 302
    functionName: dshash_attach
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - Assert
    - dsa_get_address
    - palloc_object
    linkageType: ''
    returnType: dshash_table
    signature: "dshash_table *\ndshash_attach(dsa_area *area, const dshash_parameters
      *params,\n\t\t\t  dshash_table_handle handle, void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:313,1
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/dshash.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 317
    functionName: dshash_detach
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - pfree
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    linkageType: ''
    returnType: void
    signature: void dshash_detach(dshash_table *hash_table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:332,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:333,1
    - Dst: NUM_BUCKETS
      Src: /src/postgres/src/backend/lib/dshash.c:336,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:341,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:346,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:348,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:360,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:361,1
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/dshash.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 364
    functionName: dshash_destroy
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - DsaPointerIsValid
    - dsa_free
    - Assert
    - pfree
    - NUM_BUCKETS
    - dsa_get_address
    - ensure_valid_bucket_pointers
    linkageType: ''
    returnType: void
    signature: void dshash_destroy(dshash_table *hash_table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 376
    functionName: dshash_get_hash_table_handle
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: dshash_table_handle
    signature: dshash_table_handle dshash_get_hash_table_handle(dshash_table *hash_table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_key
      Src: /src/postgres/src/backend/lib/dshash.c:400,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:401,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:403,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:404,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:406,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:406,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:408,1
    - Dst: find_in_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:411,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:411,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:416,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:416,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - hash_table
    - key
    - exclusive
    argTypes:
    - dshash_table*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 424
    functionName: dshash_find
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 2
    functionsReached:
    - PARTITION_FOR_HASH
    - BUCKET_FOR_HASH
    - LWLockAcquire
    - PARTITION_LOCK
    - Assert
    - ENTRY_FROM_ITEM
    - hash_key
    - ensure_valid_bucket_pointers
    - LWLockRelease
    - find_in_bucket
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    linkageType: ''
    returnType: void
    signature: 'void *

      dshash_find(dshash_table *hash_table, const void *key, bool exclusive)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_key
      Src: /src/postgres/src/backend/lib/dshash.c:452,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:456,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:457,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:460,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:460,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:462,1
    - Dst: find_in_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:465,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:465,1
    - Dst: MAX_COUNT_PER_PARTITION
      Src: /src/postgres/src/backend/lib/dshash.c:474,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:487,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:487,1
    - Dst: resize
      Src: /src/postgres/src/backend/lib/dshash.c:488,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:490,1
    - Dst: insert_into_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:498,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:503,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:504,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:504,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:513,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 4
    argNames:
    - hash_table
    - key
    - found
    - flags
    argTypes:
    - dshash_table*
    - void*
    - bool*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 514
    functionName: dshash_find_or_insert_extended
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - insert_into_bucket
    - PARTITION_FOR_HASH
    - BUCKET_FOR_HASH
    - LWLockAcquire
    - PARTITION_LOCK
    - Assert
    - MAX_COUNT_PER_PARTITION
    - resize
    - hash_key
    - ENTRY_FROM_ITEM
    - ensure_valid_bucket_pointers
    - LWLockRelease
    - find_in_bucket
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    linkageType: ''
    returnType: void
    signature: "void *\ndshash_find_or_insert_extended(dshash_table *hash_table,\n\t\t\t\t\t\t\t
      \  const void *key,\n\t\t\t\t\t\t\t   bool *found,\n\t\t\t\t\t\t\t   int flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:530,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:531,1
    - Dst: hash_key
      Src: /src/postgres/src/backend/lib/dshash.c:533,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:534,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:536,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:536,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:537,1
    - Dst: delete_key_from_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:539,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:540,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:542,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:549,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - hash_table
    - key
    argTypes:
    - dshash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 552
    functionName: dshash_delete_key
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - PARTITION_FOR_HASH
    - BUCKET_FOR_HASH
    - LWLockAcquire
    - PARTITION_LOCK
    - Assert
    - hash_key
    - ensure_valid_bucket_pointers
    - LWLockRelease
    - delete_key_from_bucket
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    linkageType: ''
    returnType: bool
    signature: bool dshash_delete_key(dshash_table *hash_table, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ITEM_FROM_ENTRY
      Src: /src/postgres/src/backend/lib/dshash.c:564,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:567,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:568,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/lib/dshash.c:568,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:568,1
    - Dst: delete_item
      Src: /src/postgres/src/backend/lib/dshash.c:571,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:572,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - hash_table
    - entry
    argTypes:
    - dshash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 573
    functionName: dshash_delete_entry
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - Assert
    - delete_item
    - LWLockHeldByMeInMode
    - LWLockRelease
    - ITEM_FROM_ENTRY
    linkageType: ''
    returnType: void
    signature: void dshash_delete_entry(dshash_table *hash_table, void *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ITEM_FROM_ENTRY
      Src: /src/postgres/src/backend/lib/dshash.c:581,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:584,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:586,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - hash_table
    - entry
    argTypes:
    - dshash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 587
    functionName: dshash_release_lock
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 4
    functionsReached:
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - Assert
    - LWLockRelease
    - ITEM_FROM_ENTRY
    linkageType: ''
    returnType: void
    signature: void dshash_release_lock(dshash_table *hash_table, void *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/postgres/src/backend/lib/dshash.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - a
    - b
    - size
    - arg
    argTypes:
    - void*
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 596
    functionName: dshash_memcmp
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int dshash_memcmp(const void *a, const void *b, size_t size, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tag_hash
      Src: /src/postgres/src/backend/lib/dshash.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - v
    - size
    - arg
    argTypes:
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 601
    functionDepth: 3
    functionLinenumber: 601
    functionLinenumberEnd: 605
    functionName: dshash_memhash
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - tag_hash
    linkageType: ''
    returnType: dshash_hash
    signature: dshash_hash dshash_memhash(const void *v, size_t size, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/lib/dshash.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dest
    - src
    - size
    - arg
    argTypes:
    - void*
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 610
    functionDepth: 0
    functionLinenumber: 610
    functionLinenumberEnd: 614
    functionName: dshash_memcpy
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void dshash_memcpy(void *dest, const void *src, size_t size, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:622,1
    - Dst: strlen
      Src: /src/postgres/src/backend/lib/dshash.c:622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:623,1
    - Dst: strlen
      Src: /src/postgres/src/backend/lib/dshash.c:623,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/lib/dshash.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - a
    - b
    - size
    - arg
    argTypes:
    - void*
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 626
    functionName: dshash_strcmp
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - Assert
    - strlen
    - strcmp
    linkageType: ''
    returnType: int
    signature: int dshash_strcmp(const void *a, const void *b, size_t size, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:634,1
    - Dst: strlen
      Src: /src/postgres/src/backend/lib/dshash.c:634,1
    - Dst: string_hash
      Src: /src/postgres/src/backend/lib/dshash.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - v
    - size
    - arg
    argTypes:
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 631
    functionDepth: 3
    functionLinenumber: 631
    functionLinenumberEnd: 637
    functionName: dshash_strhash
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - Assert
    - string_hash
    - strlen
    linkageType: ''
    returnType: dshash_hash
    signature: dshash_hash dshash_strhash(const void *v, size_t size, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:645,1
    - Dst: strlen
      Src: /src/postgres/src/backend/lib/dshash.c:645,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/lib/dshash.c:647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - dest
    - src
    - size
    - arg
    argTypes:
    - void*
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 648
    functionName: dshash_strcpy
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - Assert
    - strcpy
    - strlen
    linkageType: ''
    returnType: void
    signature: void dshash_strcpy(void *dest, const void *src, size_t size, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - status
    - hash_table
    - exclusive
    argTypes:
    - dshash_seq_status*
    - dshash_table*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 669
    functionName: dshash_seq_init
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dshash_seq_init(dshash_seq_status *status, dshash_table *hash_table,\n\t\t\t\tbool
      exclusive)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:693,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:694,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:698,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:698,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:702,1
    - Dst: NUM_BUCKETS
      Src: /src/postgres/src/backend/lib/dshash.c:705,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:711,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/lib/dshash.c:711,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:711,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:716,1
    - Dst: PARTITION_FOR_BUCKET_INDEX
      Src: /src/postgres/src/backend/lib/dshash.c:728,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:739,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:739,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:742,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:742,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:751,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:759,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - status
    argTypes:
    - dshash_seq_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 760
    functionName: dshash_seq_next
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - PARTITION_LOCK
    - LWLockAcquire
    - DsaPointerIsValid
    - Assert
    - ENTRY_FROM_ITEM
    - NUM_BUCKETS
    - dsa_get_address
    - ensure_valid_bucket_pointers
    - LWLockHeldByMeInMode
    - PARTITION_FOR_BUCKET_INDEX
    - LWLockRelease
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    linkageType: ''
    returnType: void
    signature: 'void *

      dshash_seq_next(dshash_seq_status *status)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:771,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - dshash_seq_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 772
    functionName: dshash_seq_term
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - PARTITION_LOCK
    - LWLockRelease
    linkageType: ''
    returnType: void
    signature: void dshash_seq_term(dshash_seq_status *status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:786,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:787,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:788,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/lib/dshash.c:788,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:788,1
    - Dst: delete_item
      Src: /src/postgres/src/backend/lib/dshash.c:791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - status
    argTypes:
    - dshash_seq_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 777
    functionDepth: 1
    functionLinenumber: 777
    functionLinenumberEnd: 792
    functionName: dshash_delete_current
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - Assert
    - delete_item
    - LWLockHeldByMeInMode
    linkageType: ''
    returnType: void
    signature: void dshash_delete_current(dshash_seq_status *status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:804,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:809,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/lib/dshash.c:809,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:809,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:810,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:810,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:813,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/lib/dshash.c:815,1
    - Dst: BUCKET_INDEX_FOR_PARTITION
      Src: /src/postgres/src/backend/lib/dshash.c:820,1
    - Dst: BUCKET_INDEX_FOR_PARTITION
      Src: /src/postgres/src/backend/lib/dshash.c:821,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/lib/dshash.c:823,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/lib/dshash.c:824,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:832,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:836,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/lib/dshash.c:841,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:846,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:846,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 847
    functionName: dshash_dump
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - PARTITION_LOCK
    - LWLockAcquire
    - DsaPointerIsValid
    - Assert
    - dsa_get_address
    - LWLockHeldByMe
    - ensure_valid_bucket_pointers
    - LWLockRelease
    - BUCKET_INDEX_FOR_PARTITION
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    - fprintf
    linkageType: ''
    returnType: void
    signature: void dshash_dump(dshash_table *hash_table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:858,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/lib/dshash.c:858,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:858,1
    - Dst: delete_item_from_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:860,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:868,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - hash_table
    - item
    argTypes:
    - dshash_table*
    - dshash_table_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 852
    functionDepth: 1
    functionLinenumber: 852
    functionLinenumberEnd: 870
    functionName: delete_item
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 4
    functionsReached:
    - PARTITION_FOR_HASH
    - BUCKET_FOR_HASH
    - delete_item_from_bucket
    - PARTITION_LOCK
    - Assert
    - LWLockHeldByMe
    linkageType: ''
    returnType: void
    signature: void delete_item(dshash_table *hash_table, dshash_table_item *item)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:899,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/lib/dshash.c:899,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:899,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:901,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:901,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:908,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:908,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:913,1
    - Dst: dsa_allocate_extended
      Src: /src/postgres/src/backend/lib/dshash.c:919,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:924,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:928,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:928,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:936,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:942,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:947,1
    - Dst: insert_item_into_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:949,1
    - Dst: BUCKET_INDEX_FOR_HASH_AND_SIZE
      Src: /src/postgres/src/backend/lib/dshash.c:950,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:961,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:965,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:965,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 3
    argNames:
    - hash_table
    - new_size_log2
    - flags
    argTypes:
    - dshash_table*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 882
    functionDepth: 1
    functionLinenumber: 882
    functionLinenumberEnd: 968
    functionName: resize
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - BUCKET_INDEX_FOR_HASH_AND_SIZE
    - LWLockAcquire
    - PARTITION_LOCK
    - DsaPointerIsValid
    - Assert
    - dsa_free
    - dsa_get_address
    - LWLockRelease
    - LWLockHeldByMe
    - insert_item_into_bucket
    - dsa_allocate_extended
    linkageType: ''
    returnType: bool
    signature: bool resize(dshash_table *hash_table, size_t new_size_log2, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:980,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 984
    functionName: ensure_valid_bucket_pointers
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 6
    functionsReached:
    - dsa_get_address
    linkageType: ''
    returnType: void
    signature: void ensure_valid_bucket_pointers(dshash_table *hash_table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:993,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:997,1
    - Dst: equal_keys
      Src: /src/postgres/src/backend/lib/dshash.c:998,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:998,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - hash_table
    - key
    - item_pointer
    argTypes:
    - dshash_table*
    - void*
    - dsa_pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 989
    functionDepth: 1
    functionLinenumber: 989
    functionLinenumberEnd: 1003
    functionName: find_in_bucket
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 2
    functionsReached:
    - dsa_get_address
    - ENTRY_FROM_ITEM
    - DsaPointerIsValid
    - equal_keys
    linkageType: ''
    returnType: dshash_table_item
    signature: "dshash_table_item *\nfind_in_bucket(dshash_table *hash_table, const
      void *key,\n\t\t\t   dsa_pointer item_pointer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:1014,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:1014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - hash_table
    - item_pointer
    - item
    - bucket
    argTypes:
    - dshash_table*
    - dsa_pointer
    - dshash_table_item*
    - dsa_pointer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1018
    functionName: insert_item_into_bucket
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - Assert
    - dsa_get_address
    linkageType: ''
    returnType: void
    signature: "void insert_item_into_bucket(dshash_table *hash_table,\n\t\t\t\t\t\tdsa_pointer
      item_pointer,\n\t\t\t\t\t\tdshash_table_item *item,\n\t\t\t\t\t\tdsa_pointer
      *bucket)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsa_allocate_extended
      Src: /src/postgres/src/backend/lib/dshash.c:1036,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/lib/dshash.c:1038,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:1040,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:1042,1
    - Dst: copy_key
      Src: /src/postgres/src/backend/lib/dshash.c:1043,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:1043,1
    - Dst: insert_item_into_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:1044,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - hash_table
    - key
    - bucket
    - flags
    argTypes:
    - dshash_table*
    - void*
    - dsa_pointer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1025
    functionDepth: 2
    functionLinenumber: 1025
    functionLinenumberEnd: 1046
    functionName: insert_into_bucket
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - DsaPointerIsValid
    - ENTRY_FROM_ITEM
    - copy_key
    - dsa_get_address
    - insert_item_into_bucket
    - MAXALIGN
    - dsa_allocate_extended
    linkageType: ''
    returnType: dshash_table_item
    signature: "dshash_table_item *\ninsert_into_bucket(dshash_table *hash_table,\n\t\t\t\t
      \  const void *key,\n\t\t\t\t   dsa_pointer *bucket,\n\t\t\t\t   int flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:1056,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:1060,1
    - Dst: equal_keys
      Src: /src/postgres/src/backend/lib/dshash.c:1062,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:1062,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:1067,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - hash_table
    - key
    - bucket_head
    argTypes:
    - dshash_table*
    - void*
    - dsa_pointer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1051
    functionDepth: 1
    functionLinenumber: 1051
    functionLinenumberEnd: 1075
    functionName: delete_key_from_bucket
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - DsaPointerIsValid
    - dsa_free
    - ENTRY_FROM_ITEM
    - equal_keys
    - dsa_get_address
    linkageType: ''
    returnType: bool
    signature: "bool delete_key_from_bucket(dshash_table *hash_table,\n\t\t\t\t\t
      \  const void *key,\n\t\t\t\t\t   dsa_pointer *bucket_head)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:1085,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:1089,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:1096,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - hash_table
    - item
    - bucket_head
    argTypes:
    - dshash_table*
    - dshash_table_item*
    - dsa_pointer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1080
    functionDepth: 1
    functionLinenumber: 1080
    functionLinenumberEnd: 1103
    functionName: delete_item_from_bucket
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - dsa_get_address
    - DsaPointerIsValid
    - dsa_free
    linkageType: ''
    returnType: bool
    signature: "bool delete_item_from_bucket(dshash_table *hash_table,\n\t\t\t\t\t\tdshash_table_item
      *item,\n\t\t\t\t\t\tdsa_pointer *bucket_head)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dshash_table*::params::hash_function
      Src: /src/postgres/src/backend/lib/dshash.c:1111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hash_table
    - key
    argTypes:
    - dshash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1114
    functionName: hash_key
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 3
    functionsReached:
    - dshash_table*::params::hash_function
    linkageType: ''
    returnType: dshash_hash
    signature: dshash_hash hash_key(dshash_table *hash_table, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dshash_table*::params::compare_function
      Src: /src/postgres/src/backend/lib/dshash.c:1122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hash_table
    - a
    - b
    argTypes:
    - dshash_table*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1119
    functionDepth: 0
    functionLinenumber: 1119
    functionLinenumberEnd: 1125
    functionName: equal_keys
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 2
    functionsReached:
    - dshash_table*::params::compare_function
    linkageType: ''
    returnType: bool
    signature: bool equal_keys(dshash_table *hash_table, const void *a, const void
      *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dshash_table*::params::copy_function
      Src: /src/postgres/src/backend/lib/dshash.c:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hash_table
    - dest
    - src
    argTypes:
    - dshash_table*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1130
    functionDepth: 0
    functionLinenumber: 1130
    functionLinenumberEnd: 1136
    functionName: copy_key
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - dshash_table*::params::copy_function
    linkageType: ''
    returnType: void
    signature: void copy_key(dshash_table *hash_table, void *dest, const void *src)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/lib/bipartite_match.c:41,1
    - Dst: elog
      Src: /src/postgres/src/backend/lib/bipartite_match.c:45,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/lib/bipartite_match.c:51,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/lib/bipartite_match.c:52,1
    - Dst: palloc
      Src: /src/postgres/src/backend/lib/bipartite_match.c:53,1
    - Dst: palloc
      Src: /src/postgres/src/backend/lib/bipartite_match.c:54,1
    - Dst: hk_breadth_search
      Src: /src/postgres/src/backend/lib/bipartite_match.c:56,1
    - Dst: hk_depth_search
      Src: /src/postgres/src/backend/lib/bipartite_match.c:63,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/lib/bipartite_match.c:67,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - u_size
    - v_size
    - adjacency
    argTypes:
    - int
    - int
    - short**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 71
    functionName: BipartiteMatch
    functionSourceFile: /src/postgres/src/backend/lib/bipartite_match.c
    functionUses: 1
    functionsReached:
    - elog
    - hk_depth_search
    - palloc0
    - CHECK_FOR_INTERRUPTS
    - palloc_object
    - palloc
    - hk_breadth_search
    linkageType: ''
    returnType: BipartiteMatchState
    signature: 'BipartiteMatchState *

      BipartiteMatch(int u_size, int v_size, short **adjacency)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/bipartite_match.c:81,1
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/bipartite_match.c:82,1
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/bipartite_match.c:83,1
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/bipartite_match.c:84,1
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/bipartite_match.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - BipartiteMatchState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 86
    functionName: BipartiteMatchFree
    functionSourceFile: /src/postgres/src/backend/lib/bipartite_match.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void BipartiteMatchFree(BipartiteMatchState *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/bipartite_match.c:131,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - BipartiteMatchState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 139
    functionName: hk_breadth_search
    functionSourceFile: /src/postgres/src/backend/lib/bipartite_match.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool hk_breadth_search(BipartiteMatchState *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/lib/bipartite_match.c:161,1
    - Dst: hk_depth_search
      Src: /src/postgres/src/backend/lib/bipartite_match.c:169,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - u
    argTypes:
    - BipartiteMatchState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 180
    functionName: hk_depth_search
    functionSourceFile: /src/postgres/src/backend/lib/bipartite_match.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - hk_depth_search
    linkageType: ''
    returnType: bool
    signature: bool hk_depth_search(BipartiteMatchState *state, int u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/lib/pairingheap.c:46,1
    - Dst: pairingheap_initialize
      Src: /src/postgres/src/backend/lib/pairingheap.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - compare
    - arg
    argTypes:
    - pairingheap_comparator
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 50
    functionName: pairingheap_allocate
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 4
    functionsReached:
    - pairingheap_initialize
    - palloc_object
    linkageType: ''
    returnType: pairingheap
    signature: 'pairingheap *

      pairingheap_allocate(pairingheap_comparator compare, void *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - heap
    - compare
    - arg
    argTypes:
    - pairingheap*
    - pairingheap_comparator
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: pairingheap_initialize
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pairingheap_initialize(pairingheap *heap, pairingheap_comparator
      compare,\n\t\t\t\t\t   void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/pairingheap.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - heap
    argTypes:
    - pairingheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: pairingheap_free
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void pairingheap_free(pairingheap *heap)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap*::ph_compare
      Src: /src/postgres/src/backend/lib/pairingheap.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - heap
    - a
    - b
    argTypes:
    - pairingheap*
    - pairingheap_node*
    - pairingheap_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 118
    functionName: merge
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 8
    functionsReached:
    - pairingheap*::ph_compare
    linkageType: ''
    returnType: pairingheap_node
    signature: 'pairingheap_node *

      merge(pairingheap *heap, pairingheap_node *a, pairingheap_node *b)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: merge
      Src: /src/postgres/src/backend/lib/pairingheap.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - heap
    - node
    argTypes:
    - pairingheap*
    - pairingheap_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 134
    functionName: pairingheap_add
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 5
    functionsReached:
    - merge
    linkageType: ''
    returnType: void
    signature: void pairingheap_add(pairingheap *heap, pairingheap_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/pairingheap.c:146,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/lib/pairingheap.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - heap
    argTypes:
    - pairingheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 149
    functionName: pairingheap_first
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 4
    functionsReached:
    - Assert
    - pairingheap_is_empty
    linkageType: ''
    returnType: pairingheap_node
    signature: 'pairingheap_node *

      pairingheap_first(pairingheap *heap)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/pairingheap.c:164,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/lib/pairingheap.c:164,1
    - Dst: merge_children
      Src: /src/postgres/src/backend/lib/pairingheap.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - heap
    argTypes:
    - pairingheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 178
    functionName: pairingheap_remove_first
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 4
    functionsReached:
    - Assert
    - merge_children
    - pairingheap_is_empty
    linkageType: ''
    returnType: pairingheap_node
    signature: 'pairingheap_node *

      pairingheap_remove_first(pairingheap *heap)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap_remove_first
      Src: /src/postgres/src/backend/lib/pairingheap.c:197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/pairingheap.c:216,1
    - Dst: merge_children
      Src: /src/postgres/src/backend/lib/pairingheap.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - heap
    - node
    argTypes:
    - pairingheap*
    - pairingheap_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 239
    functionName: pairingheap_remove
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 2
    functionsReached:
    - Assert
    - merge_children
    - pairingheap_remove_first
    linkageType: ''
    returnType: void
    signature: void pairingheap_remove(pairingheap *heap, pairingheap_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: merge
      Src: /src/postgres/src/backend/lib/pairingheap.c:280,1
    - Dst: merge
      Src: /src/postgres/src/backend/lib/pairingheap.c:295,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - heap
    - children
    argTypes:
    - pairingheap*
    - pairingheap_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 299
    functionName: merge_children
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 2
    functionsReached:
    - merge
    linkageType: ''
    returnType: pairingheap_node
    signature: 'pairingheap_node *

      merge_children(pairingheap *heap, pairingheap_node *children)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/pairingheap.c:319,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/lib/pairingheap.c:321,1
    - Dst: dumpfunc
      Src: /src/postgres/src/backend/lib/pairingheap.c:322,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/lib/pairingheap.c:323,1
    - Dst: pairingheap_dump_recurse
      Src: /src/postgres/src/backend/lib/pairingheap.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - buf
    - node
    - opaque
    - depth
    - prev_or_parent
    argTypes:
    - StringInfo
    - pairingheap_node*
    - void*
    - int
    - pairingheap_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 329
    functionName: pairingheap_dump_recurse
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 1
    functionsReached:
    - pairingheap_dump_recurse
    - Assert
    - dumpfunc
    - appendStringInfoSpaces
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void pairingheap_dump_recurse(StringInfo buf,\n\t\t\t\t\t\t pairingheap_node
      *node,\n\t\t\t\t\t\t void (*dumpfunc) (pairingheap_node *node, StringInfo buf,
      void *opaque),\n\t\t\t\t\t\t void *opaque,\n\t\t\t\t\t\t int depth,\n\t\t\t\t\t\t
      pairingheap_node *prev_or_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/lib/pairingheap.c:339,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/lib/pairingheap.c:341,1
    - Dst: pairingheap_dump_recurse
      Src: /src/postgres/src/backend/lib/pairingheap.c:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - heap
    - opaque
    argTypes:
    - pairingheap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 346
    functionName: pairingheap_dump
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - pairingheap_dump_recurse
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: "char *\npairingheap_dump(pairingheap *heap,\n\t\t\t\t void (*dumpfunc)
      (pairingheap_node *node, StringInfo buf, void *opaque),\n\t\t\t\t void *opaque)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/ilist.c:49,1
    - Dst: slist_check
      Src: /src/postgres/src/backend/lib/ilist.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - slist_head*
    - slist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 52
    functionName: slist_delete
    functionSourceFile: /src/postgres/src/backend/lib/ilist.c
    functionUses: 0
    functionsReached:
    - Assert
    - slist_check
    linkageType: ''
    returnType: void
    signature: void slist_delete(slist_head *head, const slist_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/lib/ilist.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - head
    - node
    argTypes:
    - dlist_head*
    - dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 71
    functionName: dlist_member_check
    functionSourceFile: /src/postgres/src/backend/lib/ilist.c
    functionUses: 8
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void dlist_member_check(const dlist_head *head, const dlist_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/lib/ilist.c:82,1
    - Dst: elog
      Src: /src/postgres/src/backend/lib/ilist.c:95,1
    - Dst: elog
      Src: /src/postgres/src/backend/lib/ilist.c:106,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 13
    argCount: 1
    argNames:
    - head
    argTypes:
    - dlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 108
    functionName: dlist_check
    functionSourceFile: /src/postgres/src/backend/lib/ilist.c
    functionUses: 5
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void dlist_check(const dlist_head *head)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/lib/ilist.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - head
    argTypes:
    - slist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 127
    functionName: slist_check
    functionSourceFile: /src/postgres/src/backend/lib/ilist.c
    functionUses: 5
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void slist_check(const slist_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: TapeBlockGetTrailer
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TapeBlockGetTrailer(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: TapeBlockIsLast
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TapeBlockIsLast(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: TapeBlockGetNBytes
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TapeBlockGetNBytes(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - buf
    - ','
    - nbytes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: TapeBlockSetNBytes
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TapeBlockSetNBytes(buf, nbytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/sort/logtape.c:257,1
    - Dst: ltsWriteBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:259,1
    - Dst: BufFileSeekBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/logtape.c:264,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/logtape.c:265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/logtape.c:266,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/utils/sort/logtape.c:268,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - lts
    - blocknum
    - buffer
    argTypes:
    - LogicalTapeSet*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 273
    functionName: ltsWriteBlock
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - BufFileWrite
    - ereport
    - ltsWriteBlock
    - MemSet
    - errmsg
    - BufFileSeekBlock
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void ltsWriteBlock(LogicalTapeSet *lts, int64 blocknum, const void
      *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufFileSeekBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:284,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/logtape.c:285,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/logtape.c:286,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/logtape.c:287,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/logtape.c:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - lts
    - blocknum
    - buffer
    argTypes:
    - LogicalTapeSet*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 290
    functionName: ltsReadBlock
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached:
    - BufFileReadExact
    - ereport
    - errmsg
    - BufFileSeekBlock
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void ltsReadBlock(LogicalTapeSet *lts, int64 blocknum, void *buffer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ltsReadBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:315,1
    - Dst: ltsReleaseBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:317,1
    - Dst: TapeBlockGetNBytes
      Src: /src/postgres/src/backend/utils/sort/logtape.c:320,1
    - Dst: TapeBlockIsLast
      Src: /src/postgres/src/backend/utils/sort/logtape.c:321,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:328,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - lt
    argTypes:
    - LogicalTape*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 297
    functionDepth: 2
    functionLinenumber: 297
    functionLinenumberEnd: 334
    functionName: ltsReadFillBuffer
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached:
    - TapeBlockGetTrailer
    - ltsReadBlock
    - TapeBlockIsLast
    - ltsReleaseBlock
    - TapeBlockGetNBytes
    linkageType: ''
    returnType: bool
    signature: bool ltsReadFillBuffer(LogicalTape *lt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 340
    functionName: left_offset
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 left_offset(uint64 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 346
    functionName: right_offset
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 right_offset(uint64 i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 352
    functionName: parent_offset
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 parent_offset(uint64 i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ltsGetPreallocBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:361,1
    - Dst: ltsGetFreeBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - lts
    - lt
    argTypes:
    - LogicalTapeSet*
    - LogicalTape*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 364
    functionName: ltsGetBlock
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached:
    - ltsGetFreeBlock
    - ltsGetPreallocBlock
    linkageType: ''
    returnType: int64
    signature: int64 ltsGetBlock(LogicalTapeSet *lts, LogicalTape *lt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: left_offset
      Src: /src/postgres/src/backend/utils/sort/logtape.c:401,1
    - Dst: right_offset
      Src: /src/postgres/src/backend/utils/sort/logtape.c:402,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - lts
    argTypes:
    - LogicalTapeSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 423
    functionName: ltsGetFreeBlock
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - left_offset
    - right_offset
    linkageType: ''
    returnType: int64
    signature: int64 ltsGetFreeBlock(LogicalTapeSet *lts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/sort/logtape.c:440,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/sort/logtape.c:448,1
    - Dst: ltsGetFreeBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:456,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:459,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - lts
    - lt
    argTypes:
    - LogicalTapeSet*
    - LogicalTape*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 463
    functionName: ltsGetPreallocBlock
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - ltsGetFreeBlock
    - repalloc
    - palloc_array
    - Assert
    linkageType: ''
    returnType: int64
    signature: int64 ltsGetPreallocBlock(LogicalTapeSet *lts, LogicalTape *lt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/sort/logtape.c:493,1
    - Dst: parent_offset
      Src: /src/postgres/src/backend/utils/sort/logtape.c:505,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - lts
    - blocknum
    argTypes:
    - LogicalTapeSet*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 514
    functionName: ltsReleaseBlock
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - parent_offset
    - repalloc
    linkageType: ''
    returnType: void
    signature: void ltsReleaseBlock(LogicalTapeSet *lts, int64 blocknum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:524,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/logtape.c:525,1
    - Dst: ltsReadFillBuffer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - lt
    argTypes:
    - LogicalTape*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 521
    functionDepth: 3
    functionLinenumber: 521
    functionLinenumberEnd: 532
    functionName: ltsInitReadBuffer
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached:
    - Assert
    - ltsReadFillBuffer
    - palloc
    linkageType: ''
    returnType: void
    signature: void ltsInitReadBuffer(LogicalTape *lt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/sort/logtape.c:563,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/logtape.c:569,1
    - Dst: pg_itoa
      Src: /src/postgres/src/backend/utils/sort/logtape.c:591,1
    - Dst: BufFileCreateFileSet
      Src: /src/postgres/src/backend/utils/sort/logtape.c:592,1
    - Dst: BufFileCreateTemp
      Src: /src/postgres/src/backend/utils/sort/logtape.c:595,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - preallocate
    - fileset
    - worker
    argTypes:
    - bool
    - SharedFileSet*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 598
    functionName: LogicalTapeSetCreate
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - pg_itoa
    - BufFileCreateTemp
    - BufFileCreateFileSet
    - palloc_object
    - palloc
    linkageType: ''
    returnType: LogicalTapeSet
    signature: 'LogicalTapeSet *

      LogicalTapeSetCreate(bool preallocate, SharedFileSet *fileset, int worker)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ltsCreateTape
      Src: /src/postgres/src/backend/utils/sort/logtape.c:617,1
    - Dst: pg_itoa
      Src: /src/postgres/src/backend/utils/sort/logtape.c:623,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/utils/sort/logtape.c:624,1
    - Dst: BufFileSize
      Src: /src/postgres/src/backend/utils/sort/logtape.c:625,1
    - Dst: BufFileAppend
      Src: /src/postgres/src/backend/utils/sort/logtape.c:639,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/logtape.c:642,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - lts
    - worker
    - shared
    argTypes:
    - LogicalTapeSet*
    - int
    - TapeShare*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 658
    functionName: LogicalTapeImport
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached:
    - ltsCreateTape
    - pg_itoa
    - BufFileAppend
    - BufFileSize
    - BufFileOpenFileSet
    - Min
    linkageType: ''
    returnType: LogicalTape
    signature: 'LogicalTape *

      LogicalTapeImport(LogicalTapeSet *lts, int worker, TapeShare *shared)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/utils/sort/logtape.c:669,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/logtape.c:670,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/logtape.c:671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lts
    argTypes:
    - LogicalTapeSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 672
    functionName: LogicalTapeSetClose
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - pfree
    - BufFileClose
    linkageType: ''
    returnType: void
    signature: void LogicalTapeSetClose(LogicalTapeSet *lts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/logtape.c:690,1
    - Dst: ltsCreateTape
      Src: /src/postgres/src/backend/utils/sort/logtape.c:692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - lts
    argTypes:
    - LogicalTapeSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 693
    functionName: LogicalTapeCreate
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - elog
    - ltsCreateTape
    linkageType: ''
    returnType: LogicalTape
    signature: 'LogicalTape *

      LogicalTapeCreate(LogicalTapeSet *lts)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/sort/logtape.c:703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - lts
    argTypes:
    - LogicalTapeSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 695
    functionDepth: 0
    functionLinenumber: 695
    functionLinenumberEnd: 723
    functionName: ltsCreateTape
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 2
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: LogicalTape
    signature: 'LogicalTape *

      ltsCreateTape(LogicalTapeSet *lts)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/logtape.c:736,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/logtape.c:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - lt
    argTypes:
    - LogicalTape*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 738
    functionName: LogicalTapeClose
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void LogicalTapeClose(LogicalTape *lt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lts
    argTypes:
    - LogicalTapeSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 753
    functionName: LogicalTapeSetForgetFreeSpace
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LogicalTapeSetForgetFreeSpace(LogicalTapeSet *lts)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:767,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/logtape.c:772,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:777,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:778,1
    - Dst: ltsGetBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:780,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:786,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/logtape.c:797,1
    - Dst: ltsGetBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:804,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:807,1
    - Dst: ltsWriteBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:808,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:811,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:820,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/logtape.c:822,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 3
    argNames:
    - lt
    - ptr
    - size
    argTypes:
    - LogicalTape*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 831
    functionName: LogicalTapeWrite
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - elog
    - memcpy
    - TapeBlockGetTrailer
    - Assert
    - ltsWriteBlock
    - ltsGetBlock
    - palloc
    linkageType: ''
    returnType: void
    signature: void LogicalTapeWrite(LogicalTape *lt, const void *ptr, size_t size)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/backend/utils/sort/logtape.c:886,1
    - Dst: TapeBlockSetNBytes
      Src: /src/postgres/src/backend/utils/sort/logtape.c:889,1
    - Dst: ltsWriteBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:890,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:900,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/logtape.c:904,1
    - Dst: ltsReleaseBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:914,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/logtape.c:915,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - lt
    - buffer_size
    argTypes:
    - LogicalTape*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 845
    functionDepth: 2
    functionLinenumber: 845
    functionLinenumberEnd: 920
    functionName: LogicalTapeRewindForRead
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - ltsReleaseBlock
    - TapeBlockSetNBytes
    - VALGRIND_MAKE_MEM_DEFINED
    - ltsWriteBlock
    linkageType: ''
    returnType: void
    signature: void LogicalTapeRewindForRead(LogicalTape *lt, size_t buffer_size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:933,1
    - Dst: ltsInitReadBuffer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:936,1
    - Dst: ltsReadFillBuffer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:943,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:950,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/logtape.c:952,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - lt
    - ptr
    - size
    argTypes:
    - LogicalTape*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 927
    functionDepth: 4
    functionLinenumber: 927
    functionLinenumberEnd: 961
    functionName: LogicalTapeRead
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached:
    - Assert
    - ltsInitReadBuffer
    - ltsReadFillBuffer
    - memcpy
    linkageType: ''
    returnType: size_t
    signature: size_t LogicalTapeRead(LogicalTape *lt, void *ptr, size_t size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:986,1
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1002,1
    - Dst: TapeBlockSetNBytes
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1005,1
    - Dst: ltsWriteBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1006,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1021,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1022,1
    - Dst: ltsReadBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1033,1
    - Dst: TapeBlockIsLast
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1034,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1037,1
    - Dst: TapeBlockGetNBytes
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1038,1
    - Dst: BufFileExportFileSet
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1043,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 2
    argNames:
    - lt
    - share
    argTypes:
    - LogicalTape*
    - TapeShare*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 980
    functionDepth: 2
    functionLinenumber: 980
    functionLinenumberEnd: 1046
    functionName: LogicalTapeFreeze
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached:
    - ltsReadBlock
    - Assert
    - pfree
    - TapeBlockIsLast
    - TapeBlockGetTrailer
    - TapeBlockSetNBytes
    - VALGRIND_MAKE_MEM_DEFINED
    - ltsWriteBlock
    - palloc
    - BufFileExportFileSet
    - TapeBlockGetNBytes
    linkageType: ''
    returnType: void
    signature: void LogicalTapeFreeze(LogicalTape *lt, TapeShare *share)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1066,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1067,1
    - Dst: ltsInitReadBuffer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1070,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1089,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1095,1
    - Dst: ltsReadBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1100,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1102,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1103,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1105,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1110,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - lt
    - size
    argTypes:
    - LogicalTape*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1061
    functionDepth: 4
    functionLinenumber: 1061
    functionLinenumberEnd: 1122
    functionName: LogicalTapeBackspace
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached:
    - elog
    - ltsInitReadBuffer
    - ltsReadBlock
    - Assert
    - TapeBlockGetTrailer
    linkageType: ''
    returnType: size_t
    signature: size_t LogicalTapeBackspace(LogicalTape *lt, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1136,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1137,1
    - Dst: ltsInitReadBuffer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1140,1
    - Dst: ltsReadBlock
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1144,1
    - Dst: TapeBlockGetTrailer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1147,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1151,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - lt
    - blocknum
    - offset
    argTypes:
    - LogicalTape*
    - int64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1132
    functionDepth: 4
    functionLinenumber: 1132
    functionLinenumberEnd: 1153
    functionName: LogicalTapeSeek
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached:
    - elog
    - ltsInitReadBuffer
    - TapeBlockGetTrailer
    - Assert
    - ltsReadBlock
    linkageType: ''
    returnType: void
    signature: void LogicalTapeSeek(LogicalTape *lt, int64 blocknum, int offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ltsInitReadBuffer
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/logtape.c:1170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - lt
    - blocknum
    - offset
    argTypes:
    - LogicalTape*
    - int64*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1161
    functionDepth: 4
    functionLinenumber: 1161
    functionLinenumberEnd: 1174
    functionName: LogicalTapeTell
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 0
    functionsReached:
    - Assert
    - ltsInitReadBuffer
    linkageType: ''
    returnType: void
    signature: void LogicalTapeTell(LogicalTape *lt, int64 *blocknum, int *offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lts
    argTypes:
    - LogicalTapeSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1180
    functionDepth: 0
    functionLinenumber: 1180
    functionLinenumberEnd: 1184
    functionName: LogicalTapeSetBlocks
    functionSourceFile: /src/postgres/src/backend/utils/sort/logtape.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 LogicalTapeSetBlocks(LogicalTapeSet *lts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 178
    functionName: BRINSORTTUPLE_SIZE
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BRINSORTTUPLE_SIZE(len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:187,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:189,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:195,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:198,1
    - Dst: TRACE_POSTGRESQL_SORT_START
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:204,1
    - Dst: PARALLEL_SORT
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:209,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:220,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:226,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:227,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:236,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:248,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 9
    argNames:
    - tupDesc
    - nkeys
    - attNums
    - sortOperators
    - sortCollations
    - nullsFirstFlags
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - TupleDesc
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - bool*
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 251
    functionName: tuplesort_begin_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 5
    functionsReached:
    - elog
    - Assert
    - palloc0
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - PARALLEL_SORT
    - TRACE_POSTGRESQL_SORT_START
    - tuplesort_begin_common
    - PrepareSortSupportFromOrderingOp
    linkageType: ''
    returnType: Tuplesortstate
    signature: "Tuplesortstate *\ntuplesort_begin_heap(TupleDesc tupDesc,\n\t\t\t\t\t
      int nkeys, AttrNumber *attNums,\n\t\t\t\t\t Oid *sortOperators, Oid *sortCollations,\n\t\t\t\t\t
      bool *nullsFirstFlags,\n\t\t\t\t\t int workMem, SortCoordinate coordinate, int
      sortopt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:259,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:267,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:269,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:270,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:273,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:275,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:278,1
    - Dst: TRACE_POSTGRESQL_SORT_START
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:280,1
    - Dst: PARALLEL_SORT
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:285,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:295,1
    - Dst: _bt_mkscankey
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:308,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:321,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:322,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:323,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:345,1
    - Dst: PrepareSortSupportFromIndexRel
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:349,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:352,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:354,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 5
    argNames:
    - tupDesc
    - indexRel
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - TupleDesc
    - Relation
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 253
    functionDepth: 7
    functionLinenumber: 253
    functionLinenumberEnd: 357
    functionName: tuplesort_begin_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_object
    - RelationGetNumberOfAttributes
    - CreateExecutorState
    - Assert
    - pfree
    - BuildIndexInfo
    - GetPerTupleExprContext
    - palloc0
    - TuplesortstateGetPublic
    - PrepareSortSupportFromIndexRel
    - MemoryContextSwitchTo
    - MakeSingleTupleTableSlot
    - PARALLEL_SORT
    - TRACE_POSTGRESQL_SORT_START
    - _bt_mkscankey
    - tuplesort_begin_common
    - IndexRelationGetNumberOfKeyAttributes
    linkageType: ''
    returnType: Tuplesortstate
    signature: "Tuplesortstate *\ntuplesort_begin_cluster(TupleDesc tupDesc,\n\t\t\t\t\t\tRelation
      indexRel,\n\t\t\t\t\t\tint workMem,\n\t\t\t\t\t\tSortCoordinate coordinate,
      int sortopt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:368,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:370,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:376,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:377,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:380,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:385,1
    - Dst: TRACE_POSTGRESQL_SORT_START
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:387,1
    - Dst: PARALLEL_SORT
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:392,1
    - Dst: _bt_mkscankey
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:407,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:410,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:427,1
    - Dst: PrepareSortSupportFromIndexRel
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:431,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:434,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:436,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 7
    argNames:
    - heapRel
    - indexRel
    - enforceUnique
    - uniqueNullsNotDistinct
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - Relation
    - Relation
    - bool
    - bool
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 359
    functionDepth: 7
    functionLinenumber: 359
    functionLinenumberEnd: 439
    functionName: tuplesort_begin_index_btree
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 2
    functionsReached:
    - elog
    - Assert
    - pfree
    - palloc0
    - PrepareSortSupportFromIndexRel
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - PARALLEL_SORT
    - TRACE_POSTGRESQL_SORT_START
    - _bt_mkscankey
    - palloc_object
    - IndexRelationGetNumberOfKeyAttributes
    - tuplesort_begin_common
    linkageType: ''
    returnType: Tuplesortstate
    signature: "Tuplesortstate *\ntuplesort_begin_index_btree(Relation heapRel,\n\t\t\t\t\t\t\tRelation
      indexRel,\n\t\t\t\t\t\t\tbool enforceUnique,\n\t\t\t\t\t\t\tbool uniqueNullsNotDistinct,\n\t\t\t\t\t\t\tint
      workMem,\n\t\t\t\t\t\t\tSortCoordinate coordinate,\n\t\t\t\t\t\t\tint sortopt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:451,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:453,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:457,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:458,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:461,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 8
    argNames:
    - heapRel
    - indexRel
    - high_mask
    - low_mask
    - max_buckets
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - Relation
    - Relation
    - uint32
    - uint32
    - uint32
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 490
    functionName: tuplesort_begin_index_hash
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - elog
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - palloc_object
    - tuplesort_begin_common
    linkageType: ''
    returnType: Tuplesortstate
    signature: "Tuplesortstate *\ntuplesort_begin_index_hash(Relation heapRel,\n\t\t\t\t\t\t
      \  Relation indexRel,\n\t\t\t\t\t\t   uint32 high_mask,\n\t\t\t\t\t\t   uint32
      low_mask,\n\t\t\t\t\t\t   uint32 max_buckets,\n\t\t\t\t\t\t   int workMem,\n\t\t\t\t\t\t
      \  SortCoordinate coordinate,\n\t\t\t\t\t\t   int sortopt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:499,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:501,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:506,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:507,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:510,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:514,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:530,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:544,1
    - Dst: PrepareSortSupportFromGistIndexRel
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:547,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:550,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 5
    argNames:
    - heapRel
    - indexRel
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - Relation
    - Relation
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 553
    functionName: tuplesort_begin_index_gist
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - PrepareSortSupportFromGistIndexRel
    - palloc0
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - palloc_object
    - IndexRelationGetNumberOfKeyAttributes
    - tuplesort_begin_common
    linkageType: ''
    returnType: Tuplesortstate
    signature: "Tuplesortstate *\ntuplesort_begin_index_gist(Relation heapRel,\n\t\t\t\t\t\t
      \  Relation indexRel,\n\t\t\t\t\t\t   int workMem,\n\t\t\t\t\t\t   SortCoordinate
      coordinate,\n\t\t\t\t\t\t   int sortopt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:560,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:562,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:565,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 580
    functionName: tuplesort_begin_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 2
    functionsReached:
    - elog
    - TuplesortstateGetPublic
    - tuplesort_begin_common
    linkageType: ''
    returnType: Tuplesortstate
    signature: "Tuplesortstate *\ntuplesort_begin_index_brin(int workMem,\n\t\t\t\t\t\t
      \  SortCoordinate coordinate,\n\t\t\t\t\t\t   int sortopt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:588,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:590,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:593,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:595,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:599,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:610,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:613,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:619,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:628,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:630,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:637,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:642,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:645,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:646,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:647,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:648,1
    - Dst: PrepareSortSupportComparisonShim
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:653,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:663,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 5
    argNames:
    - heapRel
    - indexRel
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - Relation
    - Relation
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 582
    functionDepth: 2
    functionLinenumber: 582
    functionLinenumberEnd: 666
    functionName: tuplesort_begin_index_gin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 2
    functionsReached:
    - elog
    - format_type_be
    - errcode
    - Assert
    - RelationGetDescr
    - PrepareSortSupportComparisonShim
    - palloc0
    - ereport
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - index_getprocid
    - errmsg
    - tuplesort_begin_common
    - OidIsValid
    - IndexRelationGetNumberOfKeyAttributes
    - TupleDescAttr
    - lookup_type_cache
    linkageType: ''
    returnType: Tuplesortstate
    signature: "Tuplesortstate *\ntuplesort_begin_index_gin(Relation heapRel,\n\t\t\t\t\t\t
      \ Relation indexRel,\n\t\t\t\t\t\t  int workMem, SortCoordinate coordinate,\n\t\t\t\t\t\t
      \ int sortopt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:673,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:675,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:681,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:682,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:685,1
    - Dst: TRACE_POSTGRESQL_SORT_START
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:691,1
    - Dst: PARALLEL_SORT
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:696,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:709,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:714,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:730,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:741,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 7
    argNames:
    - datumType
    - sortOperator
    - sortCollation
    - nullsFirstFlag
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - Oid
    - Oid
    - Oid
    - bool
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 744
    functionName: tuplesort_begin_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 3
    functionsReached:
    - elog
    - palloc0_object
    - get_typlenbyval
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - PARALLEL_SORT
    - TRACE_POSTGRESQL_SORT_START
    - palloc_object
    - tuplesort_begin_common
    - PrepareSortSupportFromOrderingOp
    linkageType: ''
    returnType: Tuplesortstate
    signature: "Tuplesortstate *\ntuplesort_begin_datum(Oid datumType, Oid sortOperator,
      Oid sortCollation,\n\t\t\t\t\t  bool nullsFirstFlag, int workMem,\n\t\t\t\t\t
      \ SortCoordinate coordinate, int sortopt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:754,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:755,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:763,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:768,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:774,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:775,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:777,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:779,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:783,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - state
    - slot
    argTypes:
    - Tuplesortstate*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 751
    functionDepth: 4
    functionLinenumber: 751
    functionLinenumberEnd: 784
    functionName: tuplesort_puttupleslot
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 5
    functionsReached:
    - heap_getattr
    - GetMemoryChunkSpace
    - tuplesort_puttuple_common
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - MAXALIGN
    - ExecCopySlotMinimalTuple
    - TupleSortUseBumpTupleCxt
    linkageType: ''
    returnType: void
    signature: void tuplesort_puttupleslot(Tuplesortstate *state, TupleTableSlot *slot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:795,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:796,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:801,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:810,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:817,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:818,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:820,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:822,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:827,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - state
    - tup
    argTypes:
    - Tuplesortstate*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 791
    functionDepth: 4
    functionLinenumber: 791
    functionLinenumberEnd: 828
    functionName: tuplesort_putheaptuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - heap_getattr
    - GetMemoryChunkSpace
    - tuplesort_puttuple_common
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - MAXALIGN
    - heap_copytuple
    - TupleSortUseBumpTupleCxt
    linkageType: ''
    returnType: void
    signature: void tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:841,1
    - Dst: index_form_tuple_context
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:845,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:845,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:850,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:852,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:856,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:857,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:859,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - state
    - rel
    - self
    - values
    - isnull
    argTypes:
    - Tuplesortstate*
    - Relation
    - ItemPointerData*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 834
    functionDepth: 6
    functionLinenumber: 834
    functionLinenumberEnd: 865
    functionName: tuplesort_putindextuplevalues
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 3
    functionsReached:
    - RelationGetDescr
    - index_getattr
    - GetMemoryChunkSpace
    - tuplesort_puttuple_common
    - TuplesortstateGetPublic
    - MAXALIGN
    - index_form_tuple_context
    - TupleSortUseBumpTupleCxt
    linkageType: ''
    returnType: void
    signature: "void tuplesort_putindextuplevalues(Tuplesortstate *state, Relation
      rel,\n\t\t\t\t\t\t\t  const ItemPointerData *self, const Datum *values,\n\t\t\t\t\t\t\t
      \ const bool *isnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:875,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:876,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:880,1
    - Dst: BRINSORTTUPLE_SIZE
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:880,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:883,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:886,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:890,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:891,1
    - Dst: BRINSORTTUPLE_SIZE
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:891,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:893,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:895,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:900,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - state
    - tuple
    - size
    argTypes:
    - Tuplesortstate*
    - BrinTuple*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 901
    functionName: tuplesort_putbrintuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - BRINSORTTUPLE_SIZE
    - memcpy
    - GetMemoryChunkSpace
    - UInt32GetDatum
    - tuplesort_puttuple_common
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - MAXALIGN
    - palloc
    - TupleSortUseBumpTupleCxt
    linkageType: ''
    returnType: void
    signature: void tuplesort_putbrintuple(Tuplesortstate *state, BrinTuple *tuple,
      Size size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:908,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:909,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:913,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:914,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:921,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:922,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:924,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:926,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:931,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - state
    - tuple
    - size
    argTypes:
    - Tuplesortstate*
    - GinTuple*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 903
    functionDepth: 1
    functionLinenumber: 903
    functionLinenumberEnd: 932
    functionName: tuplesort_putgintuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 2
    functionsReached:
    - memcpy
    - GetMemoryChunkSpace
    - tuplesort_puttuple_common
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - MAXALIGN
    - palloc
    - TupleSortUseBumpTupleCxt
    linkageType: ''
    returnType: void
    signature: void tuplesort_putgintuple(Tuplesortstate *state, GinTuple *tuple,
      Size size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:942,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:943,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:972,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:973,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:976,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:980,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - state
    - val
    - isNull
    argTypes:
    - Tuplesortstate*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 939
    functionDepth: 1
    functionLinenumber: 939
    functionLinenumberEnd: 981
    functionName: tuplesort_putdatum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 3
    functionsReached:
    - datumCopy
    - tuplesort_puttuple_common
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void tuplesort_putdatum(Tuplesortstate *state, Datum val, bool isNull)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1007,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1008,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1011,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1014,1
    - Dst: heap_copy_minimal_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1023,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1025,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1030,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 5
    argNames:
    - state
    - forward
    - copy
    - slot
    - abbrev
    argTypes:
    - Tuplesortstate*
    - bool
    - bool
    - TupleTableSlot*
    - Datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1003
    functionDepth: 5
    functionLinenumber: 1003
    functionLinenumberEnd: 1033
    functionName: tuplesort_gettupleslot
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 5
    functionsReached:
    - heap_copy_minimal_tuple
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - ExecStoreMinimalTuple
    - ExecClearTuple
    - tuplesort_gettuple_common
    linkageType: ''
    returnType: bool
    signature: "bool tuplesort_gettupleslot(Tuplesortstate *state, bool forward, bool
      copy,\n\t\t\t\t\t   TupleTableSlot *slot, Datum *abbrev)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1044,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1045,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1048,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - forward
    argTypes:
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1041
    functionDepth: 1
    functionLinenumber: 1041
    functionLinenumberEnd: 1054
    functionName: tuplesort_getheaptuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - tuplesort_gettuple_common
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple tuplesort_getheaptuple(Tuplesortstate *state, bool forward)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1065,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1066,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1069,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1072,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - forward
    argTypes:
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1062
    functionDepth: 1
    functionLinenumber: 1062
    functionLinenumberEnd: 1075
    functionName: tuplesort_getindextuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 3
    functionsReached:
    - tuplesort_gettuple_common
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple tuplesort_getindextuple(Tuplesortstate *state, bool forward)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1086,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1087,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1091,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1094,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - state
    - len
    - forward
    argTypes:
    - Tuplesortstate*
    - Size*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1083
    functionDepth: 1
    functionLinenumber: 1083
    functionLinenumberEnd: 1104
    functionName: tuplesort_getbrintuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - tuplesort_gettuple_common
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: BrinTuple
    signature: 'BrinTuple *

      tuplesort_getbrintuple(Tuplesortstate *state, Size *len, bool forward)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1109,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1110,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1114,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - state
    - len
    - forward
    argTypes:
    - Tuplesortstate*
    - Size*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1106
    functionDepth: 1
    functionLinenumber: 1106
    functionLinenumberEnd: 1127
    functionName: tuplesort_getgintuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 2
    functionsReached:
    - tuplesort_gettuple_common
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: GinTuple
    signature: 'GinTuple *

      tuplesort_getgintuple(Tuplesortstate *state, Size *len, bool forward)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1157,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1158,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1162,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1164,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1169,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1184,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1184,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1187,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 6
    argNames:
    - state
    - forward
    - copy
    - val
    - isNull
    - abbrev
    argTypes:
    - Tuplesortstate*
    - bool
    - bool
    - Datum*
    - bool*
    - Datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1153
    functionDepth: 1
    functionLinenumber: 1153
    functionLinenumberEnd: 1192
    functionName: tuplesort_getdatum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 3
    functionsReached:
    - datumCopy
    - TuplesortstateGetPublic
    - MemoryContextSwitchTo
    - PointerGetDatum
    - tuplesort_gettuple_common
    linkageType: ''
    returnType: bool
    signature: "bool tuplesort_getdatum(Tuplesortstate *state, bool forward, bool
      copy,\n\t\t\t\t   Datum *val, bool *isNull, Datum *abbrev)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1203,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1199
    functionDepth: 4
    functionLinenumber: 1199
    functionLinenumberEnd: 1218
    functionName: removeabbrev_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - heap_getattr
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: void
    signature: void removeabbrev_heap(Tuplesortstate *state, SortTuple *stups, int
      count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1223,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1229,1
    - Dst: comparetup_heap_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1220
    functionDepth: 2
    functionLinenumber: 1220
    functionLinenumberEnd: 1237
    functionName: comparetup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - ApplySortComparator
    - TuplesortstateGetPublic
    - comparetup_heap_tiebreak
    linkageType: ''
    returnType: int
    signature: int comparetup_heap(const SortTuple *a, const SortTuple *b, Tuplesortstate
      *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1242,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1265,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1266,1
    - Dst: ApplySortAbbrevFullComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1268,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1280,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1281,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1283,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1239
    functionDepth: 4
    functionLinenumber: 1239
    functionLinenumberEnd: 1291
    functionName: comparetup_heap_tiebreak
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - ApplySortComparator
    - heap_getattr
    - ApplySortAbbrevFullComparator
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: int
    signature: int comparetup_heap_tiebreak(const SortTuple *a, const SortTuple *b,
      Tuplesortstate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1296,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1306,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1307,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1293
    functionDepth: 3
    functionLinenumber: 1293
    functionLinenumberEnd: 1310
    functionName: writetup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - LogicalTapeWrite
    linkageType: ''
    returnType: void
    signature: void writetup_heap(Tuplesortstate *state, LogicalTape *tape, SortTuple
      *stup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1318,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1320,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1325,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1327,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - state
    - stup
    - tape
    - len
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - LogicalTape*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1312
    functionDepth: 4
    functionLinenumber: 1312
    functionLinenumberEnd: 1336
    functionName: readtup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - heap_getattr
    - LogicalTapeReadExact
    - tuplesort_readtup_alloc
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: void
    signature: "void readtup_heap(Tuplesortstate *state, SortTuple *stup,\n\t\t\t
      LogicalTape *tape, unsigned int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1347,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1343
    functionDepth: 4
    functionLinenumber: 1343
    functionLinenumberEnd: 1360
    functionName: removeabbrev_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - heap_getattr
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: void
    signature: void removeabbrev_cluster(Tuplesortstate *state, SortTuple *stups,
      int count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1366,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1373,1
    - Dst: comparetup_cluster_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1362
    functionDepth: 2
    functionLinenumber: 1362
    functionLinenumberEnd: 1381
    functionName: comparetup_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - ApplySortComparator
    - TuplesortstateGetPublic
    - comparetup_cluster_tiebreak
    linkageType: ''
    returnType: int
    signature: "int comparetup_cluster(const SortTuple *a, const SortTuple *b,\n\t\t\t\t
      \  Tuplesortstate *state)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1387,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1411,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1412,1
    - Dst: ApplySortAbbrevFullComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1414,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1438,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1439,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1441,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1463,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1465,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1467,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1468,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1471,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1472,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1477,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1383
    functionDepth: 5
    functionLinenumber: 1383
    functionLinenumberEnd: 1488
    functionName: comparetup_cluster_tiebreak
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - ExecStoreHeapTuple
    - heap_getattr
    - ResetPerTupleExprContext
    - GetPerTupleExprContext
    - ApplySortComparator
    - ApplySortAbbrevFullComparator
    - TuplesortstateGetPublic
    - FormIndexDatum
    linkageType: ''
    returnType: int
    signature: "int comparetup_cluster_tiebreak(const SortTuple *a, const SortTuple
      *b,\n\t\t\t\t\t\t\tTuplesortstate *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1493,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1498,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1499,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1500,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1490
    functionDepth: 3
    functionLinenumber: 1490
    functionLinenumberEnd: 1503
    functionName: writetup_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - LogicalTapeWrite
    linkageType: ''
    returnType: void
    signature: void writetup_cluster(Tuplesortstate *state, LogicalTape *tape, SortTuple
      *stup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1509,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1512,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1518,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1522,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1524,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1528,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - state
    - stup
    - tape
    - tuplen
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - LogicalTape*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1505
    functionDepth: 4
    functionLinenumber: 1505
    functionLinenumberEnd: 1532
    functionName: readtup_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - tuplesort_readtup_alloc
    - heap_getattr
    - LogicalTapeReadExact
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: void
    signature: "void readtup_cluster(Tuplesortstate *state, SortTuple *stup,\n\t\t\t\tLogicalTape
      *tape, unsigned int tuplen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1537,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1543,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1545,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1534
    functionDepth: 2
    functionLinenumber: 1534
    functionLinenumberEnd: 1548
    functionName: freestate_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - FreeExecutorState
    - GetPerTupleExprContext
    - ExecDropSingleTupleTableSlot
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: void
    signature: void freestate_cluster(Tuplesortstate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1561,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1570,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1558
    functionDepth: 3
    functionLinenumber: 1558
    functionLinenumberEnd: 1575
    functionName: removeabbrev_index
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - index_getattr
    - RelationGetDescr
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: void
    signature: void removeabbrev_index(Tuplesortstate *state, SortTuple *stups, int
      count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1586,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1591,1
    - Dst: comparetup_index_btree_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1577
    functionDepth: 2
    functionLinenumber: 1577
    functionLinenumberEnd: 1599
    functionName: comparetup_index_btree
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - ApplySortComparator
    - TuplesortstateGetPublic
    - comparetup_index_btree_tiebreak
    linkageType: ''
    returnType: int
    signature: "int comparetup_index_btree(const SortTuple *a, const SortTuple *b,\n\t\t\t\t\t
      \  Tuplesortstate *state)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1605,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1623,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1627,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1628,1
    - Dst: ApplySortAbbrevFullComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1630,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1644,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1645,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1680,1
    - Dst: index_deform_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1682,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1684,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1686,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1687,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1688,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1689,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1690,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1691,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1692,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1693,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1703,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1704,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1710,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1711,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1718,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1601
    functionDepth: 4
    functionLinenumber: 1601
    functionLinenumberEnd: 1721
    functionName: comparetup_index_btree_tiebreak
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - errtableconstraint
    - errcode
    - Assert
    - RelationGetDescr
    - index_getattr
    - ApplySortComparator
    - ApplySortAbbrevFullComparator
    - TuplesortstateGetPublic
    - ereport
    - ItemPointerGetBlockNumber
    - index_deform_tuple
    - errmsg
    - RelationGetRelationName
    - errdetail
    - ItemPointerGetOffsetNumber
    - BuildIndexValueDescription
    linkageType: ''
    returnType: int
    signature: "int comparetup_index_btree_tiebreak(const SortTuple *a, const SortTuple
      *b,\n\t\t\t\t\t\t\t\tTuplesortstate *state)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1741,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1742,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1745,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1746,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1746,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1759,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1760,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1775,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1776,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1782,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1790,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1793
      start: 1723
    functionDepth: 3
    functionLinenumber: 1723
    functionLinenumberEnd: 1793
    functionName: comparetup_index_hash
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    - _hash_hashkey2bucket
    - TuplesortstateGetPublic
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    - DatumGetUInt32
    linkageType: ''
    returnType: int
    signature: "int comparetup_index_hash(const SortTuple *a, const SortTuple *b,\n\t\t\t\t\t
      \ Tuplesortstate *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1799
    functionDepth: 1
    functionLinenumber: 1799
    functionLinenumberEnd: 1806
    functionName: comparetup_index_hash_tiebreak
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: int
    signature: "int comparetup_index_hash_tiebreak(const SortTuple *a, const SortTuple
      *b,\n\t\t\t\t\t\t\t   Tuplesortstate *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1811,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1815,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1816,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1817,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1817,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1808
    functionDepth: 3
    functionLinenumber: 1808
    functionLinenumberEnd: 1820
    functionName: writetup_index
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - LogicalTapeWrite
    - IndexTupleSize
    linkageType: ''
    returnType: void
    signature: void writetup_index(Tuplesortstate *state, LogicalTape *tape, SortTuple
      *stup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1826,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1829,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1831,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1833,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1836,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - state
    - stup
    - tape
    - len
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - LogicalTape*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1840
      start: 1822
    functionDepth: 3
    functionLinenumber: 1822
    functionLinenumberEnd: 1840
    functionName: readtup_index
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - index_getattr
    - RelationGetDescr
    - LogicalTapeReadExact
    - TuplesortstateGetPublic
    - tuplesort_readtup_alloc
    linkageType: ''
    returnType: void
    signature: "void readtup_index(Tuplesortstate *state, SortTuple *stup,\n\t\t\t
      \ LogicalTape *tape, unsigned int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1856,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1858
      start: 1846
    functionDepth: 1
    functionLinenumber: 1846
    functionLinenumberEnd: 1858
    functionName: removeabbrev_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - UInt32GetDatum
    linkageType: ''
    returnType: void
    signature: void removeabbrev_index_brin(Tuplesortstate *state, SortTuple *stups,
      int count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1864,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1864,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1866,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1866,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1869,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1869,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1860
    functionDepth: 1
    functionLinenumber: 1860
    functionLinenumberEnd: 1874
    functionName: comparetup_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    - TuplesortstateGetPublic
    - DatumGetUInt32
    linkageType: ''
    returnType: int
    signature: "int comparetup_index_brin(const SortTuple *a, const SortTuple *b,\n\t\t\t\t\t
      \ Tuplesortstate *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1879,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1884,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1885,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1887,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1888
      start: 1876
    functionDepth: 3
    functionLinenumber: 1876
    functionLinenumberEnd: 1888
    functionName: writetup_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - LogicalTapeWrite
    linkageType: ''
    returnType: void
    signature: void writetup_index_brin(Tuplesortstate *state, LogicalTape *tape,
      SortTuple *stup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1895,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1902,1
    - Dst: BRINSORTTUPLE_SIZE
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1903,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1907,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1909,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1913,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - state
    - stup
    - tape
    - len
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - LogicalTape*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1914
      start: 1890
    functionDepth: 1
    functionLinenumber: 1890
    functionLinenumberEnd: 1914
    functionName: readtup_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - BRINSORTTUPLE_SIZE
    - UInt32GetDatum
    - LogicalTapeReadExact
    - TuplesortstateGetPublic
    - tuplesort_readtup_alloc
    linkageType: ''
    returnType: void
    signature: "void readtup_index_brin(Tuplesortstate *state, SortTuple *stup,\n\t\t\t\t
      \  LogicalTape *tape, unsigned int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1923,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1925
      start: 1920
    functionDepth: 1
    functionLinenumber: 1920
    functionLinenumberEnd: 1925
    functionName: removeabbrev_index_gin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    - elog
    linkageType: ''
    returnType: void
    signature: void removeabbrev_index_gin(Tuplesortstate *state, SortTuple *stups,
      int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1931,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1933,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1933,1
    - Dst: _gin_compare_tuples
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1935,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1927
    functionDepth: 3
    functionLinenumber: 1927
    functionLinenumberEnd: 1938
    functionName: comparetup_index_gin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    - _gin_compare_tuples
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: int
    signature: "int comparetup_index_gin(const SortTuple *a, const SortTuple *b,\n\t\t\t\t\t
      Tuplesortstate *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1943,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1948,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1949,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1951,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1940
    functionDepth: 3
    functionLinenumber: 1940
    functionLinenumberEnd: 1952
    functionName: writetup_index_gin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - LogicalTapeWrite
    linkageType: ''
    returnType: void
    signature: void writetup_index_gin(Tuplesortstate *state, LogicalTape *tape, SortTuple
      *stup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1959,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1966,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1970,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1972,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - state
    - stup
    - tape
    - len
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - LogicalTape*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1977
      start: 1954
    functionDepth: 1
    functionLinenumber: 1954
    functionLinenumberEnd: 1977
    functionName: readtup_index_gin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - tuplesort_readtup_alloc
    - LogicalTapeReadExact
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: void
    signature: "void readtup_index_gin(Tuplesortstate *state, SortTuple *stup,\n\t\t\t\t
      \ LogicalTape *tape, unsigned int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1989,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1983
    functionDepth: 1
    functionLinenumber: 1983
    functionLinenumberEnd: 1990
    functionName: removeabbrev_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void removeabbrev_datum(Tuplesortstate *state, SortTuple *stups, int
      count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1995,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1998,1
    - Dst: comparetup_datum_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2004,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1992
    functionDepth: 2
    functionLinenumber: 1992
    functionLinenumberEnd: 2005
    functionName: comparetup_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - ApplySortComparator
    - TuplesortstateGetPublic
    - comparetup_datum_tiebreak
    linkageType: ''
    returnType: int
    signature: int comparetup_datum(const SortTuple *a, const SortTuple *b, Tuplesortstate
      *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2010,1
    - Dst: ApplySortAbbrevFullComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2015,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2015,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2016,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2020
      start: 2007
    functionDepth: 2
    functionLinenumber: 2007
    functionLinenumberEnd: 2020
    functionName: comparetup_datum_tiebreak
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - PointerGetDatum
    - ApplySortAbbrevFullComparator
    - TuplesortstateGetPublic
    linkageType: ''
    returnType: int
    signature: int comparetup_datum_tiebreak(const SortTuple *a, const SortTuple *b,
      Tuplesortstate *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2025,1
    - Dst: datumGetSize
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2044,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2045,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2050,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2051,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2053,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2054
      start: 2022
    functionDepth: 3
    functionLinenumber: 2022
    functionLinenumberEnd: 2054
    functionName: writetup_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    - TuplesortstateGetPublic
    - PointerGetDatum
    - datumGetSize
    - LogicalTapeWrite
    linkageType: ''
    returnType: void
    signature: void writetup_datum(Tuplesortstate *state, LogicalTape *tape, SortTuple
      *stup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2060,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2072,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2073,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2079,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2081,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2082,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2088,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - state
    - stup
    - tape
    - len
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - LogicalTape*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2089
      start: 2056
    functionDepth: 1
    functionLinenumber: 2056
    functionLinenumberEnd: 2089
    functionName: readtup_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    - LogicalTapeReadExact
    - TuplesortstateGetPublic
    - PointerGetDatum
    - tuplesort_readtup_alloc
    linkageType: ''
    returnType: void
    signature: "void readtup_datum(Tuplesortstate *state, SortTuple *stup,\n\t\t\t
      \ LogicalTape *tape, unsigned int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - participants
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: sts_estimate
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sts_estimate(int participants)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:135,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:141,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:142,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:143,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:152,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:156,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 7
    argNames:
    - sts
    - participants
    - my_participant_number
    - meta_data_size
    - flags
    - fileset
    - name
    argTypes:
    - SharedTuplestore*
    - int
    - int
    - size_t
    - int
    - SharedFileSet*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 170
    functionName: sts_initialize
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 1
    functionsReached:
    - elog
    - palloc0_object
    - Assert
    - strlen
    - strcpy
    - LWLockInitialize
    linkageType: ''
    returnType: SharedTuplestoreAccessor
    signature: "SharedTuplestoreAccessor *\nsts_initialize(SharedTuplestore *sts,
      int participants,\n\t\t\t   int my_participant_number,\n\t\t\t   size_t meta_data_size,\n\t\t\t
      \  int flags,\n\t\t\t   SharedFileSet *fileset,\n\t\t\t   const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:183,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - sts
    - my_participant_number
    - fileset
    argTypes:
    - SharedTuplestore*
    - int
    - SharedFileSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 192
    functionName: sts_attach
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 2
    functionsReached:
    - Assert
    - palloc0_object
    linkageType: ''
    returnType: SharedTuplestoreAccessor
    signature: "SharedTuplestoreAccessor *\nsts_attach(SharedTuplestore *sts,\n\t\t
      \  int my_participant_number,\n\t\t   SharedFileSet *fileset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:200,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - accessor
    argTypes:
    - SharedTuplestoreAccessor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 205
    functionName: sts_flush_chunk
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 0
    functionsReached:
    - memset
    - BufFileWrite
    linkageType: ''
    returnType: void
    signature: void sts_flush_chunk(SharedTuplestoreAccessor *accessor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sts_flush_chunk
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:216,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:217,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - accessor
    argTypes:
    - SharedTuplestoreAccessor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 223
    functionName: sts_end_write
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 4
    functionsReached:
    - pfree
    - BufFileClose
    - sts_flush_chunk
    linkageType: ''
    returnType: void
    signature: void sts_end_write(SharedTuplestoreAccessor *accessor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - accessor
    argTypes:
    - SharedTuplestoreAccessor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 246
    functionName: sts_reinitialize
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sts_reinitialize(SharedTuplestoreAccessor *accessor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - accessor
    argTypes:
    - SharedTuplestoreAccessor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 274
    functionName: sts_begin_parallel_scan
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 2
    functionsReached:
    - Assert
    - sts_end_parallel_scan
    linkageType: ''
    returnType: void
    signature: void sts_begin_parallel_scan(SharedTuplestoreAccessor *accessor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - accessor
    argTypes:
    - SharedTuplestoreAccessor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 292
    functionName: sts_end_parallel_scan
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 7
    functionsReached:
    - BufFileClose
    linkageType: ''
    returnType: void
    signature: void sts_end_parallel_scan(SharedTuplestoreAccessor *accessor)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sts_filename
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:312,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:314,1
    - Dst: BufFileCreateFileSet
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:316,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:317,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:333,1
    - Dst: sts_flush_chunk
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:360,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:365,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:374,1
    - Dst: sts_flush_chunk
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:384,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:393,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:394,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:406,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:408,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 45
    argCount: 3
    argNames:
    - accessor
    - meta_data
    - tuple
    argTypes:
    - SharedTuplestoreAccessor*
    - void*
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 412
    functionName: sts_puttuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 4
    functionsReached:
    - sts_filename
    - MemoryContextAllocZero
    - memcpy
    - Assert
    - MemoryContextSwitchTo
    - BufFileCreateFileSet
    - Min
    - sts_flush_chunk
    linkageType: ''
    returnType: void
    signature: "void sts_puttuple(SharedTuplestoreAccessor *accessor, void *meta_data,\n\t\t\t
      MinimalTuple tuple)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:429,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:432,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:439,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:440,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:442,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:446,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:449,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:464,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:465,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:466,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:467,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:469,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:472,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - accessor
    - meta_data
    argTypes:
    - SharedTuplestoreAccessor*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 489
    functionName: sts_read_tuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    - BufFileReadExact
    - pfree
    - ereport
    - Max
    - errmsg
    - Min
    - errdetail_internal
    - errcode_for_file_access
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple sts_read_tuple(SharedTuplestoreAccessor *accessor, void
      *meta_data)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sts_read_tuple
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:505,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:510,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:523,1
    - Dst: sts_filename
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:535,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:537,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:539,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:541,1
    - Dst: BufFileSeekBlock
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:545,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:546,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:547,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:548,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:550,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:573,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 2
    argNames:
    - accessor
    - meta_data
    argTypes:
    - SharedTuplestoreAccessor*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 592
    functionName: sts_parallel_scan_next
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 3
    functionsReached:
    - BufFileClose
    - sts_filename
    - LWLockAcquire
    - BufFileReadExact
    - sts_read_tuple
    - ereport
    - MemoryContextSwitchTo
    - BufFileOpenFileSet
    - LWLockRelease
    - errmsg
    - BufFileSeekBlock
    - errcode_for_file_access
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple sts_parallel_scan_next(SharedTuplestoreAccessor *accessor,
      void *meta_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - name
    - accessor
    - participant
    argTypes:
    - char*
    - SharedTuplestoreAccessor*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 601
    functionName: sts_filename
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 2
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void sts_filename(char *name, SharedTuplestoreAccessor *accessor, int
      participant)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nargs
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: SizeForSortShimExtra
    functionSourceFile: /src/postgres/src/backend/utils/sort/sortsupport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeForSortShimExtra(nargs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:54,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:58,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 61
    functionName: comparison_shim
    functionSourceFile: /src/postgres/src/backend/utils/sort/sortsupport.c
    functionUses: 0
    functionsReached:
    - FunctionCallInvoke
    - DatumGetInt32
    - elog
    linkageType: ''
    returnType: int
    signature: int comparison_shim(Datum x, Datum y, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:72,1
    - Dst: SizeForSortShimExtra
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:73,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:76,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - cmpFunc
    - ssup
    argTypes:
    - Oid
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 86
    functionName: PrepareSortSupportComparisonShim
    functionSourceFile: /src/postgres/src/backend/utils/sort/sortsupport.c
    functionUses: 4
    functionsReached:
    - SizeForSortShimExtra
    - InitFunctionCallInfoData
    - fmgr_info_cxt
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: void PrepareSortSupportComparisonShim(Oid cmpFunc, SortSupport ssup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:99,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:101,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:107,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:107,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:114,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:117,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:118,1
    - Dst: PrepareSortSupportComparisonShim
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - opfamily
    - opcintype
    - ssup
    argTypes:
    - Oid
    - Oid
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 124
    functionName: FinishSortSupportFunction
    functionSourceFile: /src/postgres/src/backend/utils/sort/sortsupport.c
    functionUses: 0
    functionsReached:
    - elog
    - PrepareSortSupportComparisonShim
    - OidFunctionCall1
    - PointerGetDatum
    - OidIsValid
    - get_opfamily_proc
    linkageType: ''
    returnType: void
    signature: void FinishSortSupportFunction(Oid opfamily, Oid opcintype, SortSupport
      ssup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:140,1
    - Dst: get_ordering_op_properties
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:143,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:145,1
    - Dst: FinishSortSupportFunction
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - orderingOp
    - ssup
    argTypes:
    - Oid
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 150
    functionName: PrepareSortSupportFromOrderingOp
    functionSourceFile: /src/postgres/src/backend/utils/sort/sortsupport.c
    functionUses: 8
    functionsReached:
    - Assert
    - get_ordering_op_properties
    - FinishSortSupportFunction
    - elog
    linkageType: ''
    returnType: void
    signature: void PrepareSortSupportFromOrderingOp(Oid orderingOp, SortSupport ssup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:167,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:170,1
    - Dst: FinishSortSupportFunction
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - indexRel
    - reverse
    - ssup
    argTypes:
    - Relation
    - bool
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 174
    functionName: PrepareSortSupportFromIndexRel
    functionSourceFile: /src/postgres/src/backend/utils/sort/sortsupport.c
    functionUses: 3
    functionsReached:
    - Assert
    - FinishSortSupportFunction
    - elog
    linkageType: ''
    returnType: void
    signature: "void PrepareSortSupportFromIndexRel(Relation indexRel, bool reverse,\n\t\t\t\t\t\t\t
      \  SortSupport ssup)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:191,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:194,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:201,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:203,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:204,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:206,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/sortsupport.c:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - indexRel
    - ssup
    argTypes:
    - Relation
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 207
    functionName: PrepareSortSupportFromGistIndexRel
    functionSourceFile: /src/postgres/src/backend/utils/sort/sortsupport.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - OidFunctionCall1
    - PointerGetDatum
    - OidIsValid
    - get_opfamily_proc
    linkageType: ''
    returnType: void
    signature: void PrepareSortSupportFromGistIndexRel(Relation indexRel, SortSupport
      ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - state
    - ','
    - tup
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    functionName: COPYTUP
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPYTUP(state,tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - state
    - ','
    - tup
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    functionName: WRITETUP
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITETUP(state,tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - state
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    functionName: READTUP
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READTUP(state,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    functionName: LACKMEM
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LACKMEM(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - state
    - ','
    - amt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: USEMEM
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: USEMEM(state,amt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - state
    - ','
    - amt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: FREEMEM
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREEMEM(state,amt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:261,1
    - Dst: GenerationContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:277,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:290,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:294,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:296,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:296,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 3
    argNames:
    - eflags
    - interXact
    - maxKBytes
    argTypes:
    - int
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 309
    functionName: tuplestore_begin_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - GetMemoryChunkSpace
    - GenerationContextCreate
    - Max
    - palloc
    - USEMEM
    linkageType: ''
    returnType: Tuplestorestate
    signature: 'Tuplestorestate *

      tuplestore_begin_common(int eflags, bool interXact, int maxKBytes)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - randomAccess
    - interXact
    - maxKBytes
    argTypes:
    - bool
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 351
    functionName: tuplestore_begin_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 12
    functionsReached:
    - tuplestore_begin_common
    linkageType: ''
    returnType: Tuplestorestate
    signature: 'Tuplestorestate *

      tuplestore_begin_heap(bool randomAccess, bool interXact, int maxKBytes)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:377,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - state
    - eflags
    argTypes:
    - Tuplestorestate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 383
    functionName: tuplestore_set_eflags
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 3
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void tuplestore_set_eflags(Tuplestorestate *state, int eflags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:402,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:411,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - state
    - eflags
    argTypes:
    - Tuplestorestate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 422
    functionName: tuplestore_alloc_read_pointer
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 4
    functionsReached:
    - elog
    - repalloc
    linkageType: ''
    returnType: int
    signature: int tuplestore_alloc_read_pointer(Tuplestorestate *state, int eflags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_updatemax
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:437,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:440,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:456,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:460,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:465,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:472,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 485
    functionName: tuplestore_clear
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 4
    functionsReached:
    - BufFileClose
    - MemoryContextReset
    - Assert
    - GetMemoryChunkSpace
    - tuplestore_updatemax
    - USEMEM
    linkageType: ''
    returnType: void
    signature: void tuplestore_clear(Tuplestorestate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:496,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:498,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:499,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:500,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 502
    functionName: tuplestore_end
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 17
    functionsReached:
    - pfree
    - MemoryContextDelete
    - BufFileClose
    linkageType: ''
    returnType: void
    signature: void tuplestore_end(Tuplestorestate *state)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:513,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:535,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:547,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:551,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:553,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:557,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:561,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:562,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:563,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:567,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - Tuplestorestate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 572
    functionName: tuplestore_select_read_pointer
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 12
    functionsReached:
    - elog
    - BufFileSeek
    - BufFileTell
    - Assert
    - ereport
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void tuplestore_select_read_pointer(Tuplestorestate *state, int ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 584
    functionName: tuplestore_tuple_count
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 tuplestore_tuple_count(Tuplestorestate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 591
    functionDepth: 0
    functionLinenumber: 591
    functionLinenumberEnd: 595
    functionName: tuplestore_ateof
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool tuplestore_ateof(Tuplestorestate *state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:710,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:710,1
    - Dst: repalloc_huge
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:712,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:715,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:715,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:716,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:717,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 724
    functionName: grow_memtuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - elog
    - USEMEM
    - GetMemoryChunkSpace
    - repalloc_huge
    - FREEMEM
    - LACKMEM
    linkageType: ''
    returnType: bool
    signature: bool grow_memtuples(Tuplestorestate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:747,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:752,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:753,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:753,1
    - Dst: tuplestore_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:755,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - state
    - slot
    argTypes:
    - Tuplestorestate*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 758
    functionName: tuplestore_puttupleslot
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 13
    functionsReached:
    - GetMemoryChunkSpace
    - MemoryContextSwitchTo
    - ExecCopySlotMinimalTuple
    - tuplestore_puttuple_common
    - USEMEM
    linkageType: ''
    returnType: void
    signature: "void tuplestore_puttupleslot(Tuplestorestate *state,\n\t\t\t\t\t\tTupleTableSlot
      *slot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:767,1
    - Dst: COPYTUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:773,1
    - Dst: tuplestore_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:775,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:777,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - Tuplestorestate*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 778
    functionName: tuplestore_puttuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 8
    functionsReached:
    - COPYTUP
    - tuplestore_puttuple_common
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:789,1
    - Dst: heap_form_minimal_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:791,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:792,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:792,1
    - Dst: tuplestore_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:794,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - state
    - tdesc
    - values
    - isnull
    argTypes:
    - Tuplestorestate*
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 784
    functionDepth: 6
    functionLinenumber: 784
    functionLinenumberEnd: 797
    functionName: tuplestore_putvalues
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 20
    functionsReached:
    - GetMemoryChunkSpace
    - heap_form_minimal_tuple
    - MemoryContextSwitchTo
    - tuplestore_puttuple_common
    - USEMEM
    linkageType: ''
    returnType: void
    signature: "void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc,\n\t\t\t\t\t
      const Datum *values, const bool *isnull)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: grow_memtuples
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:835,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:844,1
    - Dst: PrepareTempTablespaces
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:851,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:862,1
    - Dst: BufFileCreateTemp
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:864,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:866,1
    - Dst: tuplestore_updatemax
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:882,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:885,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:900,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:906,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:914,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:917,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:920,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:921,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:922,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:939,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:942,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - Tuplestorestate*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 945
    functionName: tuplestore_puttuple_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 3
    functionsReached:
    - elog
    - BufFileSeek
    - BufFileTell
    - Assert
    - PrepareTempTablespaces
    - ereport
    - MemoryContextSwitchTo
    - BufFileCreateTemp
    - WRITETUP
    - errmsg
    - LACKMEM
    - tuplestore_updatemax
    - grow_memtuples
    - errcode_for_file_access
    - dumptuples
    linkageType: ''
    returnType: void
    signature: void tuplestore_puttuple_common(Tuplestorestate *state, void *tuple)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:963,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:996,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1003,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1018,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1021,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1024,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1025,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1026,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1034,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1036,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1055,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1060,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1063,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1075,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1085,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1088,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1089,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1090,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1091,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1094,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1105,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1106,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1107,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1108,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1112,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 76
    argCount: 3
    argNames:
    - state
    - forward
    - should_free
    argTypes:
    - Tuplestorestate*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 1115
    functionName: tuplestore_gettuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - elog
    - BufFileSeek
    - BufFileTell
    - getlen
    - READTUP
    - Assert
    - ereport
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: "void *\ntuplestore_gettuple(Tuplestorestate *state, bool forward,\n\t\t\t\t\tbool
      *should_free)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_gettuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1137,1
    - Dst: heap_copy_minimal_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1143,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1146,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - state
    - forward
    - copy
    - slot
    argTypes:
    - Tuplestorestate*
    - bool
    - bool
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1130
    functionDepth: 5
    functionLinenumber: 1130
    functionLinenumberEnd: 1154
    functionName: tuplestore_gettupleslot
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 18
    functionsReached:
    - ExecStoreMinimalTuple
    - tuplestore_gettuple
    - heap_copy_minimal_tuple
    - ExecClearTuple
    linkageType: ''
    returnType: bool
    signature: "bool tuplestore_gettupleslot(Tuplestorestate *state, bool forward,\n\t\t\t\t\t\tbool
      copy, TupleTableSlot *slot)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_gettuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1169,1
    - Dst: heap_copy_minimal_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1175,1
    - Dst: ExecForceStoreMinimalTuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1178,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - state
    - forward
    - copy
    - slot
    argTypes:
    - Tuplestorestate*
    - bool
    - bool
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1162
    functionDepth: 7
    functionLinenumber: 1162
    functionLinenumberEnd: 1186
    functionName: tuplestore_gettupleslot_force
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 1
    functionsReached:
    - tuplestore_gettuple
    - heap_copy_minimal_tuple
    - ExecForceStoreMinimalTuple
    - ExecClearTuple
    linkageType: ''
    returnType: bool
    signature: "bool tuplestore_gettupleslot_force(Tuplestorestate *state, bool forward,\n\t\t\t\t\t\t\t
      \ bool copy, TupleTableSlot *slot)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_gettuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1200,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - state
    - forward
    argTypes:
    - Tuplestorestate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1194
    functionDepth: 2
    functionLinenumber: 1194
    functionLinenumberEnd: 1212
    functionName: tuplestore_advance
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 3
    functionsReached:
    - pfree
    - tuplestore_gettuple
    linkageType: ''
    returnType: bool
    signature: bool tuplestore_advance(Tuplestorestate *state, bool forward)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1258,1
    - Dst: tuplestore_gettuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1271,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1276,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1277,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 3
    argNames:
    - state
    - ntuples
    - forward
    argTypes:
    - Tuplestorestate*
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1219
    functionDepth: 2
    functionLinenumber: 1219
    functionLinenumberEnd: 1281
    functionName: tuplestore_skiptuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 2
    functionsReached:
    - Assert
    - tuplestore_gettuple
    - CHECK_FOR_INTERRUPTS
    - pfree
    linkageType: ''
    returnType: bool
    signature: bool tuplestore_skiptuples(Tuplestorestate *state, int64 ntuples, bool
      forward)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1303,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1308,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1290
    functionDepth: 1
    functionLinenumber: 1290
    functionLinenumberEnd: 1324
    functionName: dumptuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 1
    functionsReached:
    - WRITETUP
    - BufFileTell
    linkageType: ''
    returnType: void
    signature: void dumptuples(Tuplestorestate *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1335,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1351,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1352,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1353,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1356,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1329
    functionDepth: 1
    functionLinenumber: 1329
    functionLinenumberEnd: 1359
    functionName: tuplestore_rescan
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 11
    functionsReached:
    - elog
    - BufFileSeek
    - Assert
    - ereport
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void tuplestore_rescan(Tuplestorestate *state)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1372,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1412,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1416,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1417,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1418,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1422,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1425,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1426,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1427,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1433,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1439,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 36
    argCount: 3
    argNames:
    - state
    - srcptr
    - destptr
    argTypes:
    - Tuplestorestate*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1364
    functionDepth: 1
    functionLinenumber: 1364
    functionLinenumberEnd: 1442
    functionName: tuplestore_copy_read_pointer
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 2
    functionsReached:
    - elog
    - BufFileSeek
    - BufFileTell
    - Assert
    - ereport
    - errmsg
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: "void tuplestore_copy_read_pointer(Tuplestorestate *state,\n\t\t\t\t\t\t\t
      int srcptr, int destptr)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1500,1
    - Dst: tuplestore_updatemax
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1503,1
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1508,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1508,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1514,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1537,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1456
    functionDepth: 1
    functionLinenumber: 1456
    functionLinenumberEnd: 1547
    functionName: tuplestore_trim
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 2
    functionsReached:
    - Assert
    - GetMemoryChunkSpace
    - pfree
    - memmove
    - FREEMEM
    - tuplestore_updatemax
    - Min
    linkageType: ''
    returnType: void
    signature: void tuplestore_trim(Tuplestorestate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1558,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1562,1
    - Dst: BufFileSize
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1554
    functionDepth: 1
    functionLinenumber: 1554
    functionLinenumberEnd: 1571
    functionName: tuplestore_updatemax
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 3
    functionsReached:
    - BufFileSize
    - Max
    linkageType: ''
    returnType: void
    signature: void tuplestore_updatemax(Tuplestorestate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplestore_updatemax
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - max_storage_type
    - max_space
    argTypes:
    - Tuplestorestate*
    - char**
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1579
    functionDepth: 2
    functionLinenumber: 1579
    functionLinenumberEnd: 1591
    functionName: tuplestore_get_stats
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - tuplestore_updatemax
    linkageType: ''
    returnType: void
    signature: "void tuplestore_get_stats(Tuplestorestate *state, char **max_storage_type,\n\t\t\t\t\t
      int64 *max_space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1600
    functionDepth: 0
    functionLinenumber: 1600
    functionLinenumberEnd: 1604
    functionName: tuplestore_in_memory
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool tuplestore_in_memory(Tuplestorestate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufFileReadMaybeEOF
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - eofOK
    argTypes:
    - Tuplestorestate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1611
    functionDepth: 1
    functionLinenumber: 1611
    functionLinenumberEnd: 1622
    functionName: getlen
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 1
    functionsReached:
    - BufFileReadMaybeEOF
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getlen(Tuplestorestate *state, bool eofOK)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: minimal_tuple_from_heap_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1640,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1641,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - state
    - tup
    argTypes:
    - Tuplestorestate*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1643
      start: 1635
    functionDepth: 2
    functionLinenumber: 1635
    functionLinenumberEnd: 1643
    functionName: copytup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkSpace
    - USEMEM
    - minimal_tuple_from_heap_tuple
    linkageType: ''
    returnType: void
    signature: 'void *

      copytup_heap(Tuplestorestate *state, void *tup)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1657,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1658,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1660,1
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1662,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1662,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1663,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - tup
    argTypes:
    - Tuplestorestate*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1645
    functionDepth: 1
    functionLinenumber: 1645
    functionLinenumberEnd: 1664
    functionName: writetup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkSpace
    - FREEMEM
    - heap_free_minimal_tuple
    - BufFileWrite
    linkageType: ''
    returnType: void
    signature: void writetup_heap(Tuplestorestate *state, void *tup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1671,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1676,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1678,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - state
    - len
    argTypes:
    - Tuplestorestate*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1666
    functionDepth: 1
    functionLinenumber: 1666
    functionLinenumberEnd: 1680
    functionName: readtup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - BufFileReadExact
    - palloc
    linkageType: ''
    returnType: void
    signature: 'void *

      readtup_heap(Tuplestorestate *state, unsigned int len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - state
    - ','
    - tuple
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 376
    functionName: IS_SLAB_SLOT
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SLAB_SLOT(state, tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - state
    - ','
    - tuple
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 392
    functionName: RELEASE_SLAB_SLOT
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RELEASE_SLAB_SLOT(state, tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - state
    - ','
    - stup
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 394
    functionName: REMOVEABBREV
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REMOVEABBREV(state,stup,count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - state
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 395
    functionName: COMPARETUP
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARETUP(state,a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - state
    - ','
    - tape
    - ','
    - stup
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 396
    functionName: WRITETUP
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRITETUP(state,tape,stup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - state
    - ','
    - stup
    - ','
    - tape
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 397
    functionName: READTUP
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READTUP(state,stup,tape,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 398
    functionName: FREESTATE
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREESTATE(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 399
    functionName: LACKMEM
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LACKMEM(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - state
    - ','
    - amt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 400
    functionName: USEMEM
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: USEMEM(state,amt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - state
    - ','
    - amt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 401
    functionName: FREEMEM
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREEMEM(state,amt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 402
    functionName: SERIAL
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SERIAL(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 403
    functionName: WORKER
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WORKER(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 404
    functionName: LEADER
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEADER(state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - ssup
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 504
    functionName: ST_COMPARE
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_COMPARE(a, b, ssup)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:556,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:562,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:570,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:583,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:585,1
    - Dst: pg_rusage_init
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:588,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:600,1
    - Dst: tuplesort_begin_batch
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:611,1
    - Dst: worker_get_identifier
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:628,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:637,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:640,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 3
    argNames:
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 643
    functionName: tuplesort_begin_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 8
    functionsReached:
    - elog
    - palloc0_object
    - Assert
    - pg_rusage_init
    - MemoryContextSwitchTo
    - worker_get_identifier
    - Max
    - AllocSetContextCreate
    - tuplesort_begin_batch
    linkageType: ''
    returnType: Tuplesortstate
    signature: 'Tuplesortstate *

      tuplesort_begin_common(int workMem, SortCoordinate coordinate, int sortopt)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:657,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:672,1
    - Dst: BumpContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:673,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:677,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:696,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:702,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:703,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:703,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:707,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:708,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:719,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 720
    functionName: tuplesort_begin_batch
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - elog
    - BumpContextCreate
    - USEMEM
    - pfree
    - GetMemoryChunkSpace
    - MemoryContextSwitchTo
    - LACKMEM
    - AllocSetContextCreate
    - TupleSortUseBumpTupleCxt
    - palloc
    linkageType: ''
    returnType: void
    signature: void tuplesort_begin_batch(Tuplesortstate *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:738,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:740,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:744,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:744,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:747,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - bound
    argTypes:
    - Tuplesortstate*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 775
    functionName: tuplesort_set_bound
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - Assert
    - WORKER
    - LEADER
    linkageType: ''
    returnType: void
    signature: void tuplesort_set_bound(Tuplesortstate *state, int64 bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 782
    functionDepth: 0
    functionLinenumber: 782
    functionLinenumberEnd: 786
    functionName: tuplesort_used_bound
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool tuplesort_used_bound(Tuplesortstate *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:797,1
    - Dst: LogicalTapeSetBlocks
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:801,1
    - Dst: LogicalTapeSetClose
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:813,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:818,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:819,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:820,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:822,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:823,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:824,1
    - Dst: TRACE_POSTGRESQL_SORT_DONE
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:827,1
    - Dst: FREESTATE
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:829,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:830,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:835,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 793
    functionDepth: 2
    functionLinenumber: 793
    functionLinenumberEnd: 836
    functionName: tuplesort_free
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - elog
    - pg_rusage_show
    - LogicalTapeSetClose
    - MemoryContextReset
    - TRACE_POSTGRESQL_SORT_DONE
    - LogicalTapeSetBlocks
    - MemoryContextSwitchTo
    - FREESTATE
    - SERIAL
    linkageType: ''
    returnType: void
    signature: void tuplesort_free(Tuplesortstate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_free
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:850,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 847
    functionDepth: 3
    functionLinenumber: 847
    functionLinenumberEnd: 857
    functionName: tuplesort_end
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 20
    functionsReached:
    - tuplesort_free
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void tuplesort_end(Tuplesortstate *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LogicalTapeSetBlocks
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:882,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 864
    functionDepth: 1
    functionLinenumber: 864
    functionLinenumberEnd: 905
    functionName: tuplesort_updatemax
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - LogicalTapeSetBlocks
    linkageType: ''
    returnType: void
    signature: void tuplesort_updatemax(Tuplesortstate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_updatemax
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:918,1
    - Dst: tuplesort_free
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:919,1
    - Dst: tuplesort_begin_batch
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 915
    functionDepth: 3
    functionLinenumber: 915
    functionLinenumberEnd: 931
    functionName: tuplesort_reset
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - tuplesort_free
    - tuplesort_begin_batch
    - tuplesort_updatemax
    linkageType: ''
    returnType: void
    signature: void tuplesort_reset(Tuplesortstate *state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1046,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1046,1
    - Dst: repalloc_huge
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1049,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1051,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1051,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1052,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1053,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 1060
    functionName: grow_memtuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - elog
    - USEMEM
    - GetMemoryChunkSpace
    - repalloc_huge
    - FREEMEM
    - LACKMEM
    linkageType: ''
    returnType: bool
    signature: bool grow_memtuples(Tuplesortstate *state)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1069,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1071,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1071,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1074,1
    - Dst: consider_abort_common
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1088,1
    - Dst: Tuplesortstate*::base::sortKeys::abbrev_converter
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1091,1
    - Dst: REMOVEABBREV
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1105,1
    - Dst: grow_memtuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1121,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1122,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1140,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1143,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1145,1
    - Dst: make_bounded_heap
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1146,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1147,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1154,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1156,1
    - Dst: inittapes
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1163,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1168,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1181,1
    - Dst: free_sort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1184,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1185,1
    - Dst: free_sort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1190,1
    - Dst: tuplesort_heap_replace_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1191,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1205,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1209,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1212,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 4
    argNames:
    - state
    - tuple
    - useAbbrev
    - tuplen
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - bool
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1065
    functionDepth: 1
    functionLinenumber: 1065
    functionLinenumberEnd: 1213
    functionName: tuplesort_puttuple_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 6
    functionsReached:
    - elog
    - pg_rusage_show
    - tuplesort_heap_replace_top
    - Assert
    - COMPARETUP
    - consider_abort_common
    - free_sort_tuple
    - grow_memtuples
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - REMOVEABBREV
    - Tuplesortstate*::base::sortKeys::abbrev_converter
    - LACKMEM
    - LEADER
    - dumptuples
    - USEMEM
    - inittapes
    - make_bounded_heap
    linkageType: ''
    returnType: void
    signature: "void tuplesort_puttuple_common(Tuplesortstate *state, SortTuple *tuple,\n\t\t\t\t\t\t
      \ bool useAbbrev, Size tuplen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1220,1
    - Dst: Tuplesortstate*::base::sortKeys::abbrev_abort
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1215
    functionDepth: 1
    functionLinenumber: 1215
    functionLinenumberEnd: 1254
    functionName: consider_abort_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - Tuplesortstate*::base::sortKeys::abbrev_abort
    linkageType: ''
    returnType: bool
    signature: bool consider_abort_common(Tuplesortstate *state)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1262,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1265,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1266,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1276,1
    - Dst: tuplesort_sort_memtuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1279,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1282,1
    - Dst: inittapes
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1288,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1289,1
    - Dst: worker_nomergeruns
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1290,1
    - Dst: leader_takeover_tapes
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1299,1
    - Dst: mergeruns
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1300,1
    - Dst: sort_bounded_heap
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1317,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1332,1
    - Dst: mergeruns
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1333,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1341,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1348,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1350,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1352,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1353,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1356,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1259
    functionDepth: 1
    functionLinenumber: 1259
    functionLinenumberEnd: 1357
    functionName: tuplesort_performsort
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 17
    functionsReached:
    - elog
    - pg_rusage_show
    - inittapes
    - worker_nomergeruns
    - WORKER
    - sort_bounded_heap
    - leader_takeover_tapes
    - mergeruns
    - MemoryContextSwitchTo
    - tuplesort_sort_memtuples
    - SERIAL
    - dumptuples
    linkageType: ''
    returnType: void
    signature: void tuplesort_performsort(Tuplesortstate *state)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1373,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1378,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1379,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1395,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1423,1
    - Dst: RELEASE_SLAB_SLOT
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1431,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1440,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1442,1
    - Dst: LogicalTapeBackspace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1473,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1478,1
    - Dst: LogicalTapeBackspace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1487,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1492,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1493,1
    - Dst: LogicalTapeBackspace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1498,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1512,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1515,1
    - Dst: LogicalTapeBackspace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1522,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1525,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1539,1
    - Dst: RELEASE_SLAB_SLOT
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1547,1
    - Dst: mergereadnext
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1572,1
    - Dst: tuplesort_heap_delete_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1578,1
    - Dst: LogicalTapeClose
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1585,1
    - Dst: tuplesort_heap_replace_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1589,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1595,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 100
    argCount: 3
    argNames:
    - state
    - forward
    - stup
    argTypes:
    - Tuplesortstate*
    - bool
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1366
    functionDepth: 5
    functionLinenumber: 1366
    functionLinenumberEnd: 1598
    functionName: tuplesort_gettuple_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 6
    functionsReached:
    - elog
    - RELEASE_SLAB_SLOT
    - tuplesort_heap_replace_top
    - getlen
    - READTUP
    - tuplesort_heap_delete_top
    - LogicalTapeClose
    - Assert
    - WORKER
    - mergereadnext
    - LogicalTapeBackspace
    linkageType: ''
    returnType: bool
    signature: "bool tuplesort_gettuple_common(Tuplesortstate *state, bool forward,\n\t\t\t\t\t\t
      \ SortTuple *stup)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1617,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1617,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1636,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1647,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1652,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1654,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1657,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1659,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1663,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 3
    argNames:
    - state
    - ntuples
    - forward
    argTypes:
    - Tuplesortstate*
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1606
    functionDepth: 6
    functionLinenumber: 1606
    functionLinenumberEnd: 1666
    functionName: tuplesort_skiptuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - WORKER
    - CHECK_FOR_INTERRUPTS
    - MemoryContextSwitchTo
    - tuplesort_gettuple_common
    linkageType: ''
    returnType: bool
    signature: bool tuplesort_skiptuples(Tuplesortstate *state, int64 ntuples, bool
      forward)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1714,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - allowedMem
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1674
    functionDepth: 0
    functionLinenumber: 1674
    functionLinenumberEnd: 1718
    functionName: tuplesort_merge_order
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Min
    - Max
    linkageType: ''
    returnType: int
    signature: int tuplesort_merge_order(int64 allowedMem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1743,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - avail_mem
    - nInputTapes
    - nInputRuns
    - maxOutputTapes
    argTypes:
    - int64
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1729
    functionDepth: 0
    functionLinenumber: 1729
    functionLinenumberEnd: 1754
    functionName: merge_read_buffer_size
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - Min
    - Max
    linkageType: ''
    returnType: int64
    signature: "int64 merge_read_buffer_size(int64 avail_mem, int nInputTapes, int
      nInputRuns,\n\t\t\t\t\t   int maxOutputTapes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1764,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1764,1
    - Dst: tuplesort_merge_order
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1774,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1774,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1779,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1780,1
    - Dst: inittapestate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1783,1
    - Dst: LogicalTapeSetCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1785,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1798,1
    - Dst: selectnewtape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - state
    - mergeruns
    argTypes:
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1761
    functionDepth: 2
    functionLinenumber: 1761
    functionLinenumberEnd: 1805
    functionName: inittapes
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - elog
    - pg_rusage_show
    - Assert
    - WORKER
    - palloc0
    - LogicalTapeSetCreate
    - inittapestate
    - LEADER
    - selectnewtape
    - tuplesort_merge_order
    linkageType: ''
    returnType: void
    signature: void inittapes(Tuplesortstate *state, bool mergeruns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1826,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1827,1
    - Dst: PrepareTempTablespaces
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1834,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - maxTapes
    argTypes:
    - Tuplesortstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1835
      start: 1810
    functionDepth: 1
    functionLinenumber: 1810
    functionLinenumberEnd: 1835
    functionName: inittapestate
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - GetMemoryChunkSpace
    - USEMEM
    - PrepareTempTablespaces
    linkageType: ''
    returnType: void
    signature: void inittapestate(Tuplesortstate *state, int maxTapes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1857,1
    - Dst: LogicalTapeCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1858,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1844
    functionDepth: 2
    functionLinenumber: 1844
    functionLinenumberEnd: 1872
    functionName: selectnewtape
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - LogicalTapeCreate
    linkageType: ''
    returnType: void
    signature: void selectnewtape(Tuplesortstate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1885,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1889,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - state
    - numSlots
    argTypes:
    - Tuplesortstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1877
    functionDepth: 0
    functionLinenumber: 1877
    functionLinenumberEnd: 1905
    functionName: init_slab_allocator
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - USEMEM
    - palloc
    linkageType: ''
    returnType: void
    signature: void init_slab_allocator(Tuplesortstate *state, int numSlots)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1919,1
    - Dst: MemoryContextResetOnly
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1941,1
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1947,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1947,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1948,1
    - Dst: init_slab_allocator
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1965,1
    - Dst: init_slab_allocator
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1967,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1978,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1980,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1980,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1988,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1990,1
    - Dst: LogicalTapeClose
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2009,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2010,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2023,1
    - Dst: merge_read_buffer_size
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2031,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2037,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2039,1
    - Dst: LogicalTapeRewindForRead
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2043,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2053,1
    - Dst: LogicalTapeSetForgetFreeSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2056,1
    - Dst: beginmerge
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2058,1
    - Dst: selectnewtape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2065,1
    - Dst: mergeonerun
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2068,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2082,1
    - Dst: LogicalTapeFreeze
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2083,1
    - Dst: worker_freeze_result_tape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2085,1
    - Dst: LogicalTapeClose
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2090,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2091
      start: 1913
    functionDepth: 3
    functionLinenumber: 1913
    functionLinenumberEnd: 2091
    functionName: mergeruns
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - pg_rusage_show
    - selectnewtape
    - mergeonerun
    - elog
    - LogicalTapeClose
    - Assert
    - pfree
    - MemoryContextResetOnly
    - LogicalTapeSetForgetFreeSpace
    - init_slab_allocator
    - LogicalTapeRewindForRead
    - LogicalTapeFreeze
    - GetMemoryChunkSpace
    - WORKER
    - worker_freeze_result_tape
    - FREEMEM
    - merge_read_buffer_size
    - MemoryContextAlloc
    - palloc0
    - beginmerge
    - USEMEM
    linkageType: ''
    returnType: void
    signature: void mergeruns(Tuplesortstate *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: beginmerge
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2108,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2122,1
    - Dst: RELEASE_SLAB_SLOT
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2126,1
    - Dst: mergereadnext
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2132,1
    - Dst: tuplesort_heap_replace_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2135,1
    - Dst: tuplesort_heap_delete_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2139,1
    - Dst: markrunend
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2149
      start: 2096
    functionDepth: 1
    functionLinenumber: 2096
    functionLinenumberEnd: 2149
    functionName: mergeonerun
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - RELEASE_SLAB_SLOT
    - tuplesort_heap_replace_top
    - tuplesort_heap_delete_top
    - Assert
    - mergereadnext
    - WRITETUP
    - beginmerge
    - markrunend
    linkageType: ''
    returnType: void
    signature: void mergeonerun(Tuplesortstate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2163,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2165,1
    - Dst: mergereadnext
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2171,1
    - Dst: tuplesort_heap_insert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2156
    functionDepth: 1
    functionLinenumber: 2156
    functionLinenumberEnd: 2177
    functionName: beginmerge
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - Assert
    - Min
    - mergereadnext
    - tuplesort_heap_insert
    linkageType: ''
    returnType: void
    signature: void beginmerge(Tuplesortstate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2190,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - srcTape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2184
    functionDepth: 0
    functionLinenumber: 2184
    functionLinenumberEnd: 2195
    functionName: mergereadnext
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - getlen
    - READTUP
    linkageType: ''
    returnType: bool
    signature: bool mergereadnext(Tuplesortstate *state, LogicalTape *srcTape, SortTuple
      *stup)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2228,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2235,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2236,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2237,1
    - Dst: selectnewtape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2241,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2246,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2248,1
    - Dst: tuplesort_sort_memtuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2254,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2257,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2259,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2266,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2278,1
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2284,1
    - Dst: markrunend
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2287,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2290,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2292,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - state
    - alltuples
    argTypes:
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2203
    functionDepth: 3
    functionLinenumber: 2203
    functionLinenumberEnd: 2293
    functionName: dumptuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - elog
    - pg_rusage_show
    - MemoryContextReset
    - errcode
    - Assert
    - ereport
    - selectnewtape
    - tuplesort_sort_memtuples
    - FREEMEM
    - WRITETUP
    - errmsg
    - markrunend
    - LACKMEM
    linkageType: ''
    returnType: void
    signature: void dumptuples(Tuplesortstate *state, bool alltuples)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2303,1
    - Dst: LogicalTapeRewindForRead
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2314,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2321,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2325,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2326
      start: 2298
    functionDepth: 3
    functionLinenumber: 2298
    functionLinenumberEnd: 2326
    functionName: tuplesort_rescan
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - LogicalTapeRewindForRead
    - elog
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void tuplesort_rescan(Tuplesortstate *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2336,1
    - Dst: LogicalTapeTell
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2345,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2351,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2355,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2331
    functionDepth: 5
    functionLinenumber: 2331
    functionLinenumberEnd: 2356
    functionName: tuplesort_markpos
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - LogicalTapeTell
    - elog
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void tuplesort_markpos(Tuplesortstate *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2367,1
    - Dst: LogicalTapeSeek
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2376,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2382,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2386,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2387
      start: 2362
    functionDepth: 5
    functionLinenumber: 2362
    functionLinenumberEnd: 2387
    functionName: tuplesort_restorepos
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - LogicalTapeSeek
    - elog
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void tuplesort_restorepos(Tuplesortstate *state)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_updatemax
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2408,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - state
    - stats
    argTypes:
    - Tuplesortstate*
    - TuplesortInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2434
      start: 2395
    functionDepth: 2
    functionLinenumber: 2395
    functionLinenumberEnd: 2434
    functionName: tuplesort_get_stats
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - tuplesort_updatemax
    linkageType: ''
    returnType: void
    signature: "void tuplesort_get_stats(Tuplesortstate *state,\n\t\t\t\t\tTuplesortInstrumentation
      *stats)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - m
    argTypes:
    - TuplesortMethod
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2457
      start: 2439
    functionDepth: 0
    functionLinenumber: 2439
    functionLinenumberEnd: 2457
    functionName: tuplesort_method_name
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      tuplesort_method_name(TuplesortMethod m)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - TuplesortSpaceType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2467
      start: 2462
    functionDepth: 1
    functionLinenumber: 2462
    functionLinenumberEnd: 2467
    functionName: tuplesort_space_type_name
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      tuplesort_space_type_name(TuplesortSpaceType t)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2489,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2490,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2491,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2492,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2492,1
    - Dst: reversedirection
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2495,1
    - Dst: tuplesort_heap_insert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2506,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2515,1
    - Dst: free_sort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2517,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2518,1
    - Dst: tuplesort_heap_replace_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2521,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2525,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2527
      start: 2483
    functionDepth: 1
    functionLinenumber: 2483
    functionLinenumberEnd: 2527
    functionName: make_bounded_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - tuplesort_heap_replace_top
    - reversedirection
    - Assert
    - COMPARETUP
    - free_sort_tuple
    - CHECK_FOR_INTERRUPTS
    - tuplesort_heap_insert
    - SERIAL
    linkageType: ''
    returnType: void
    signature: void make_bounded_heap(Tuplesortstate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2538,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2539,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2540,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2540,1
    - Dst: tuplesort_heap_delete_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2552,1
    - Dst: reversedirection
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2532
    functionDepth: 1
    functionLinenumber: 2532
    functionLinenumberEnd: 2565
    functionName: sort_bounded_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - tuplesort_heap_delete_top
    - SERIAL
    - reversedirection
    linkageType: ''
    returnType: void
    signature: void sort_bounded_heap(Tuplesortstate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - level
    argTypes:
    - Datum
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2579
      start: 2573
    functionDepth: 0
    functionLinenumber: 2573
    functionLinenumberEnd: 2579
    functionName: current_byte
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8
    signature: uint8 current_byte(Datum key, int level)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2592,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2601,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - orig
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2615
      start: 2585
    functionDepth: 1
    functionLinenumber: 2585
    functionLinenumberEnd: 2615
    functionName: normalize_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - Assert
    - UInt32GetDatum
    - Int64GetDatum
    - DatumGetUInt32
    linkageType: ''
    returnType: Datum
    signature: Datum normalize_datum(Datum orig, SortSupport ssup)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: normalize_datum
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2670,1
    - Dst: normalize_datum
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2676,1
    - Dst: current_byte
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2681,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2688,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2744,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2749,1
    - Dst: pg_leftmost_one_pos64
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2779,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2779,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2786,1
    - Dst: qsort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2802,1
    - Dst: radix_sort_recursive
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2809,1
    - Dst: qsort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2822,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 60
    argCount: 4
    argNames:
    - begin
    - n_elems
    - level
    - state
    argTypes:
    - SortTuple*
    - size_t
    - int
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2832
      start: 2654
    functionDepth: 2
    functionLinenumber: 2654
    functionLinenumberEnd: 2832
    functionName: radix_sort_recursive
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - radix_sort_recursive
    - qsort_tuple
    - CHECK_FOR_INTERRUPTS
    - DatumGetUInt64
    - current_byte
    - normalize_datum
    - pg_leftmost_one_pos64
    linkageType: ''
    returnType: void
    signature: void radix_sort_recursive(SortTuple *begin, size_t n_elems, int level,
      Tuplesortstate *state)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2860,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2868,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2886,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2921,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2925,1
    - Dst: qsort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2932,1
    - Dst: qsort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2944,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2957,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2963,1
    - Dst: radix_sort_recursive
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2970,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 3
    argNames:
    - data
    - n
    - state
    argTypes:
    - SortTuple*
    - size_t
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2976
      start: 2840
    functionDepth: 3
    functionLinenumber: 2840
    functionLinenumberEnd: 2976
    functionName: radix_sort_tuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - Assert
    - radix_sort_recursive
    - COMPARETUP
    - qsort_tuple
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void radix_sort_tuple(SortTuple *data, size_t n, Tuplesortstate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2986,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2986,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2988
      start: 2979
    functionDepth: 1
    functionLinenumber: 2979
    functionLinenumberEnd: 2988
    functionName: verify_memtuples_sorted
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - Assert
    - COMPARETUP
    linkageType: ''
    returnType: void
    signature: void verify_memtuples_sorted(Tuplesortstate *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2999,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2999,1
    - Dst: radix_sort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3016,1
    - Dst: verify_memtuples_sorted
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3019,1
    - Dst: qsort_ssup
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3027,1
    - Dst: qsort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3032,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3038
      start: 2996
    functionDepth: 4
    functionLinenumber: 2996
    functionLinenumberEnd: 3038
    functionName: tuplesort_sort_memtuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - radix_sort_tuple
    - verify_memtuples_sorted
    - Assert
    - qsort_tuple
    - qsort_ssup
    - LEADER
    linkageType: ''
    returnType: void
    signature: void tuplesort_sort_memtuples(Tuplesortstate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3056,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3058,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3069,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3075
      start: 3049
    functionDepth: 1
    functionLinenumber: 3049
    functionLinenumberEnd: 3075
    functionName: tuplesort_heap_insert
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - Assert
    - COMPARETUP
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void tuplesort_heap_insert(Tuplesortstate *state, SortTuple *tuple)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_heap_replace_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3098,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3099
      start: 3084
    functionDepth: 1
    functionLinenumber: 3084
    functionLinenumberEnd: 3099
    functionName: tuplesort_heap_delete_top
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - tuplesort_heap_replace_top
    linkageType: ''
    returnType: void
    signature: void tuplesort_heap_delete_top(Tuplesortstate *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3115,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3117,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3133,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3135,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3141
      start: 3108
    functionDepth: 1
    functionLinenumber: 3108
    functionLinenumberEnd: 3141
    functionName: tuplesort_heap_replace_top
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 5
    functionsReached:
    - Assert
    - COMPARETUP
    - CHECK_FOR_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void tuplesort_heap_replace_top(Tuplesortstate *state, SortTuple *tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3159
      start: 3148
    functionDepth: 0
    functionLinenumber: 3148
    functionLinenumberEnd: 3159
    functionName: reversedirection
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reversedirection(Tuplesortstate *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LogicalTapeRead
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3171,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3173,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - tape
    - eofOK
    argTypes:
    - LogicalTape*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3177
      start: 3166
    functionDepth: 5
    functionLinenumber: 3166
    functionLinenumberEnd: 3177
    functionName: getlen
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - elog
    - LogicalTapeRead
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getlen(LogicalTape *tape, bool eofOK)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tape
    argTypes:
    - LogicalTape*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3185
      start: 3179
    functionDepth: 3
    functionLinenumber: 3179
    functionLinenumberEnd: 3185
    functionName: markrunend
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - LogicalTapeWrite
    linkageType: ''
    returnType: void
    signature: void markrunend(LogicalTape *tape)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3202,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - state
    - tuplen
    argTypes:
    - Tuplesortstate*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3214
      start: 3193
    functionDepth: 1
    functionLinenumber: 3193
    functionLinenumberEnd: 3214
    functionName: tuplesort_readtup_alloc
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 6
    functionsReached:
    - Assert
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: 'void *

      tuplesort_readtup_alloc(Tuplesortstate *state, Size tuplen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3232,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3235,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3236,1
    - Dst: add_size
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - nWorkers
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3239
      start: 3227
    functionDepth: 1
    functionLinenumber: 3227
    functionLinenumberEnd: 3239
    functionName: tuplesort_estimate_shared
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - Assert
    - MAXALIGN
    - mul_size
    - add_size
    linkageType: ''
    returnType: Size
    signature: Size tuplesort_estimate_shared(int nWorkers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3253,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3255,1
    - Dst: SharedFileSetInit
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - shared
    - nWorkers
    - seg
    argTypes:
    - Sharedsort*
    - int
    - dsm_segment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3264
      start: 3248
    functionDepth: 2
    functionLinenumber: 3248
    functionLinenumberEnd: 3264
    functionName: tuplesort_initialize_shared
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - Assert
    - SharedFileSetInit
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void tuplesort_initialize_shared(Sharedsort *shared, int nWorkers,
      dsm_segment *seg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedFileSetAttach
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - shared
    - seg
    argTypes:
    - Sharedsort*
    - dsm_segment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3276
      start: 3271
    functionDepth: 1
    functionLinenumber: 3271
    functionLinenumberEnd: 3276
    functionName: tuplesort_attach_shared
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - SharedFileSetAttach
    linkageType: ''
    returnType: void
    signature: void tuplesort_attach_shared(Sharedsort *shared, dsm_segment *seg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3297,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3297,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3299,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3304
      start: 3291
    functionDepth: 2
    functionLinenumber: 3291
    functionLinenumberEnd: 3304
    functionName: worker_get_identifier
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - WORKER
    - SpinLockAcquire
    - SpinLockRelease
    linkageType: ''
    returnType: int
    signature: int worker_get_identifier(Tuplesortstate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3325,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3326,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3327,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3333,1
    - Dst: LogicalTapeFreeze
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3342,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3345,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3349
      start: 3319
    functionDepth: 3
    functionLinenumber: 3319
    functionLinenumberEnd: 3349
    functionName: worker_freeze_result_tape
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - LogicalTapeFreeze
    - Assert
    - WORKER
    - pfree
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void worker_freeze_result_tape(Tuplesortstate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3360,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3360,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3361,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3362,1
    - Dst: worker_freeze_result_tape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3366
      start: 3357
    functionDepth: 4
    functionLinenumber: 3357
    functionLinenumberEnd: 3366
    functionName: worker_nomergeruns
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - WORKER
    - worker_freeze_result_tape
    linkageType: ''
    returnType: void
    signature: void worker_nomergeruns(Tuplesortstate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3387,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3387,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3388,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3390,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3392,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3395,1
    - Dst: inittapestate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3402,1
    - Dst: LogicalTapeSetCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3403,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3423,1
    - Dst: LogicalTapeImport
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3433
      start: 3379
    functionDepth: 2
    functionLinenumber: 3379
    functionLinenumberEnd: 3433
    functionName: leader_takeover_tapes
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - palloc0
    - LogicalTapeImport
    - SpinLockRelease
    - inittapestate
    - LogicalTapeSetCreate
    - LEADER
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void leader_takeover_tapes(Tuplesortstate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3443,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3443,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - state
    - stup
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3447
      start: 3438
    functionDepth: 1
    functionLinenumber: 3438
    functionLinenumberEnd: 3447
    functionName: free_sort_tuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - pfree
    - GetMemoryChunkSpace
    - FREEMEM
    linkageType: ''
    returnType: void
    signature: void free_sort_tuple(Tuplesortstate *state, SortTuple *stup)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3458
      start: 3449
    functionDepth: 0
    functionLinenumber: 3449
    functionLinenumberEnd: 3458
    functionName: ssup_datum_unsigned_cmp
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ssup_datum_unsigned_cmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3463,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3472
      start: 3460
    functionDepth: 1
    functionLinenumber: 3460
    functionLinenumberEnd: 3472
    functionName: ssup_datum_signed_cmp
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    linkageType: ''
    returnType: int
    signature: int ssup_datum_signed_cmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3477,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3486
      start: 3474
    functionDepth: 1
    functionLinenumber: 3474
    functionLinenumberEnd: 3486
    functionName: ssup_datum_int32_cmp
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    linkageType: ''
    returnType: int
    signature: int ssup_datum_int32_cmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:109,1
    - Dst: INIT_TRADITIONAL_CRC32
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:112,1
    - Dst: COMP_TRADITIONAL_CRC32
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:113,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:113,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:113,1
    - Dst: FIN_TRADITIONAL_CRC32
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:114,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 106
    functionDepth: 4
    functionLinenumber: 106
    functionLinenumberEnd: 117
    functionName: crc32_bytea
    functionSourceFile: /src/postgres/src/backend/utils/hash/pg_crc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - INIT_TRADITIONAL_CRC32
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - COMP_TRADITIONAL_CRC32
    - PG_RETURN_INT64
    - FIN_TRADITIONAL_CRC32
    linkageType: ''
    returnType: Datum
    signature: Datum crc32_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:122,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:125,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:126,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:126,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:126,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:127,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/hash/pg_crc.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 119
    functionDepth: 4
    functionLinenumber: 119
    functionLinenumberEnd: 130
    functionName: crc32c_bytea
    functionSourceFile: /src/postgres/src/backend/utils/hash/pg_crc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - FIN_CRC32C
    - COMP_CRC32C
    - INIT_CRC32C
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum crc32c_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hctl
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 216
    functionName: IS_PARTITIONED
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PARTITIONED(hctl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hctl
    - ','
    - hashcode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 219
    functionName: FREELIST_IDX
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREELIST_IDX(hctl, hashcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - helem
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 258
    functionName: ELEMENTKEY
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ELEMENTKEY(helem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 264
    functionName: ELEMENT_FROM_KEY
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ELEMENT_FROM_KEY(key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 269
    functionName: MOD
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MOD(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:301,1
    - Dst: MemoryContextIsValid
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:301,1
    - Dst: MemoryContextAllocExtended
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - size
    - alloc_arg
    argTypes:
    - Size
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 303
    functionName: DynaHashAlloc
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextAllocExtended
    - MemoryContextIsValid
    linkageType: ''
    returnType: void
    signature: 'void *

      DynaHashAlloc(Size size, void *alloc_arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - char*
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 317
    functionName: string_compare
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int string_compare(const char *key1, const char *key2, Size keysize)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:372,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:398,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:403,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:404,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:405,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:408,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:419,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:441,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:442,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:503,1
    - Dst: HTAB*::alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:531,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:533,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:534,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:535,1
    - Dst: hdefault
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:539,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:553,1
    - Dst: next_pow2_int
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:553,1
    - Dst: init_htab
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:566,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:567,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:589,1
    - Dst: element_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:613,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:614,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:615,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 100
    argCount: 4
    argNames:
    - tabname
    - nelem
    - info
    - flags
    argTypes:
    - char*
    - int64
    - HASHCTL*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 624
    functionName: hash_create
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 49
    functionsReached:
    - elog
    - init_htab
    - MemoryContextAlloc
    - Assert
    - errcode
    - hdefault
    - ereport
    - HTAB*::alloc
    - next_pow2_int
    - IS_PARTITIONED
    - MemSet
    - strlen
    - errmsg
    - AllocSetContextCreate
    - element_alloc
    - MemoryContextSetIdentifier
    - strcpy
    linkageType: ''
    returnType: HTAB
    signature: 'HTAB *

      hash_create(const char *tabname, int64 nelem, const HASHCTL *info, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 646
    functionName: hdefault
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - MemSet
    linkageType: ''
    returnType: void
    signature: void hdefault(HTAB *hashp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:661,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:661,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - entrysize
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 679
    functionName: choose_nelem_alloc
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - MAXALIGN
    linkageType: ''
    returnType: int
    signature: int choose_nelem_alloc(Size entrysize)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:697,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:699,1
    - Dst: next_pow2_int
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:705,1
    - Dst: next_pow2_int
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:723,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:728,1
    - Dst: HTAB*::alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:736,1
    - Dst: seg_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:744,1
    - Dst: choose_nelem_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:750,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - hashp
    - nelem
    argTypes:
    - HTAB*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 685
    functionDepth: 2
    functionLinenumber: 685
    functionLinenumberEnd: 753
    functionName: init_htab
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - seg_alloc
    - next_pow2_int
    - HTAB*::alloc
    - SpinLockInit
    - IS_PARTITIONED
    - Max
    - choose_nelem_alloc
    linkageType: ''
    returnType: bool
    signature: bool init_htab(HTAB *hashp, int64 nelem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: next_pow2_int64
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:774,1
    - Dst: next_pow2_int64
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:776,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:778,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:781,1
    - Dst: add_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:783,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:783,1
    - Dst: add_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:785,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:785,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:786,1
    - Dst: choose_nelem_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:788,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:790,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:790,1
    - Dst: add_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:791,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:792,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - num_entries
    - entrysize
    argTypes:
    - int64
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 762
    functionDepth: 2
    functionLinenumber: 762
    functionLinenumberEnd: 796
    functionName: hash_estimate_size
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    - Max
    - choose_nelem_alloc
    - next_pow2_int64
    - MAXALIGN
    linkageType: ''
    returnType: Size
    signature: Size hash_estimate_size(int64 num_entries, Size entrysize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:809,1
    - Dst: hash_stats
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:811,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 818
    functionName: hash_destroy
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 10
    functionsReached:
    - Assert
    - MemoryContextDelete
    - hash_stats
    linkageType: ''
    returnType: void
    signature: void hash_destroy(HTAB *hashp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:826,1
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - caller
    - hashp
    argTypes:
    - char*
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 832
    functionName: hash_stats
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - elog
    - hash_get_num_entries
    linkageType: ''
    returnType: void
    signature: void hash_stats(const char *caller, HTAB *hashp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTAB*::hash
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:847,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hashp
    - keyPtr
    argTypes:
    - HTAB*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 848
    functionName: get_hash_value
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - HTAB*::hash
    linkageType: ''
    returnType: uint32
    signature: uint32 get_hash_value(HTAB *hashp, const void *keyPtr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - hctl
    - hash_val
    argTypes:
    - HASHHDR*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 851
    functionDepth: 0
    functionLinenumber: 851
    functionLinenumberEnd: 861
    functionName: calc_bucket
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32
    signature: uint32 calc_bucket(HASHHDR *hctl, uint32 hash_val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_search_with_hash_value
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:894,1
    - Dst: HTAB*::hash
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - hashp
    - keyPtr
    - action
    - foundPtr
    argTypes:
    - HTAB*
    - void*
    - HASHACTION
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 888
    functionDepth: 1
    functionLinenumber: 888
    functionLinenumberEnd: 899
    functionName: hash_search
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 73
    functionsReached:
    - HTAB*::hash
    - hash_search_with_hash_value
    linkageType: ''
    returnType: void
    signature: "void *\nhash_search(HTAB *hashp,\n\t\t\tconst void *keyPtr,\n\t\t\tHASHACTION
      action,\n\t\t\tbool *foundPtr)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: FREELIST_IDX
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:909,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:934,1
    - Dst: has_seq_scans
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:935,1
    - Dst: expand_table
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:936,1
    - Dst: hash_initial_lookup
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:942,1
    - Dst: match
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:954,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:954,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:973,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:980,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:981,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:984,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:994,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:995,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1002,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1010,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1014,1
    - Dst: get_hash_entry
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1017,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1025,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1026,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1027,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1029,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1030,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1031,1
    - Dst: HTAB*::keycopy
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1040,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1040,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1049,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1052,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 60
    argCount: 5
    argNames:
    - hashp
    - keyPtr
    - hashvalue
    - action
    - foundPtr
    argTypes:
    - HTAB*
    - void*
    - uint32
    - HASHACTION
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 901
    functionDepth: 2
    functionLinenumber: 901
    functionLinenumberEnd: 1055
    functionName: hash_search_with_hash_value
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - elog
    - errcode
    - Assert
    - ereport
    - IS_PARTITIONED
    - FREELIST_IDX
    - hash_initial_lookup
    - expand_table
    - has_seq_scans
    - match
    - ELEMENTKEY
    - SpinLockRelease
    - get_hash_entry
    - SpinLockAcquire
    - errmsg
    - HTAB*::keycopy
    linkageType: ''
    returnType: void
    signature: "void *\nhash_search_with_hash_value(HTAB *hashp,\n\t\t\t\t\t\t\tconst
      void *keyPtr,\n\t\t\t\t\t\t\tuint32 hashvalue,\n\t\t\t\t\t\t\tHASHACTION action,\n\t\t\t\t\t\t\tbool
      *foundPtr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ELEMENT_FROM_KEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1081,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1099,1
    - Dst: hash_initial_lookup
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1107,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1120,1
    - Dst: HTAB*::hash
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1129,1
    - Dst: hash_initial_lookup
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1130,1
    - Dst: match
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1142,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1142,1
    - Dst: HTAB*::keycopy
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1175,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1175,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - hashp
    - existingEntry
    - newKeyPtr
    argTypes:
    - HTAB*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1076
    functionDepth: 1
    functionLinenumber: 1076
    functionLinenumberEnd: 1180
    functionName: hash_update_hash_key
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - elog
    - HTAB*::hash
    - hash_initial_lookup
    - match
    - ELEMENTKEY
    - ELEMENT_FROM_KEY
    - HTAB*::keycopy
    linkageType: ''
    returnType: bool
    signature: "bool hash_update_hash_key(HTAB *hashp,\n\t\t\t\t\t void *existingEntry,\n\t\t\t\t\t
      const void *newKeyPtr)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1196,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1197,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1205,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1206,1
    - Dst: element_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1220,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1224,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1235,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1241,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1244,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1246,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1251,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1263,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1264,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 2
    argNames:
    - hashp
    - freelist_idx
    argTypes:
    - HTAB*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1187
    functionDepth: 2
    functionLinenumber: 1187
    functionLinenumberEnd: 1267
    functionName: get_hash_entry
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - IS_PARTITIONED
    - SpinLockAcquire
    - element_alloc
    - SpinLockRelease
    linkageType: ''
    returnType: HASHBUCKET
    signature: HASHBUCKET get_hash_entry(HTAB *hashp, int freelist_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1272
    functionDepth: 1
    functionLinenumber: 1272
    functionLinenumberEnd: 1290
    functionName: hash_get_num_entries
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 6
    functionsReached:
    - IS_PARTITIONED
    linkageType: ''
    returnType: int64
    signature: int64 hash_get_num_entries(HTAB *hashp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: register_seq_scan
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - status
    - hashp
    argTypes:
    - HASH_SEQ_STATUS*
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1316
    functionDepth: 1
    functionLinenumber: 1316
    functionLinenumberEnd: 1325
    functionName: hash_seq_init
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 22
    functionsReached:
    - register_seq_scan
    linkageType: ''
    returnType: void
    signature: void hash_seq_init(HASH_SEQ_STATUS *status, HTAB *hashp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1342,1
    - Dst: hash_initial_lookup
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - status
    - hashp
    - hashvalue
    argTypes:
    - HASH_SEQ_STATUS*
    - HTAB*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1336
    functionDepth: 2
    functionLinenumber: 1336
    functionLinenumberEnd: 1349
    functionName: hash_seq_init_with_hash_value
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - hash_seq_init
    - hash_initial_lookup
    linkageType: ''
    returnType: void
    signature: "void hash_seq_init_with_hash_value(HASH_SEQ_STATUS *status, HTAB *hashp,\n\t\t\t\t\t\t\t
      \ uint32 hashvalue)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1374,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1377,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1387,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1400,1
    - Dst: MOD
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1408,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1424,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1440,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 1
    argNames:
    - status
    argTypes:
    - HASH_SEQ_STATUS*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1351
    functionDepth: 1
    functionLinenumber: 1351
    functionLinenumberEnd: 1441
    functionName: hash_seq_search
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 22
    functionsReached:
    - hash_seq_term
    - MOD
    - ELEMENTKEY
    linkageType: ''
    returnType: void
    signature: 'void *

      hash_seq_search(HASH_SEQ_STATUS *status)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: deregister_seq_scan
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - HASH_SEQ_STATUS*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1443
    functionDepth: 1
    functionLinenumber: 1443
    functionLinenumberEnd: 1448
    functionName: hash_seq_term
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 3
    functionsReached:
    - deregister_seq_scan
    linkageType: ''
    returnType: void
    signature: void hash_seq_term(HASH_SEQ_STATUS *status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1467,1
    - Dst: has_seq_scans
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1468,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1469,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1472
    functionName: hash_freeze
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - elog
    - has_seq_scans
    linkageType: ''
    returnType: void
    signature: void hash_freeze(HTAB *hashp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1497,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1497,1
    - Dst: MOD
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1505,1
    - Dst: dir_realloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1511,1
    - Dst: seg_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1513,1
    - Dst: MOD
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1545,1
    - Dst: calc_bucket
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1558,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1480
    functionDepth: 1
    functionLinenumber: 1480
    functionLinenumberEnd: 1574
    functionName: expand_table
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - seg_alloc
    - Assert
    - calc_bucket
    - IS_PARTITIONED
    - dir_realloc
    - MOD
    linkageType: ''
    returnType: bool
    signature: bool expand_table(HTAB *hashp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HTAB*::alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1595,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1599,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1600,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1606,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1577
    functionDepth: 1
    functionLinenumber: 1577
    functionLinenumberEnd: 1613
    functionName: dir_realloc
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - memcpy
    - Assert
    - pfree
    - HTAB*::alloc
    - MemSet
    linkageType: ''
    returnType: bool
    signature: bool dir_realloc(HTAB *hashp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HTAB*::alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1621,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1626,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1616
    functionDepth: 1
    functionLinenumber: 1616
    functionLinenumberEnd: 1629
    functionName: seg_alloc
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 2
    functionsReached:
    - MemSet
    - HTAB*::alloc
    linkageType: ''
    returnType: HASHSEGMENT
    signature: HASHSEGMENT seg_alloc(HTAB *hashp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1650,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1650,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1657,1
    - Dst: HTAB*::alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1661,1
    - Dst: slist_push_head
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1676,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1677,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1694,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1695,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1701,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1702,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - hashp
    - nelem
    - freelist_idx
    argTypes:
    - HTAB*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1634
    functionDepth: 2
    functionLinenumber: 1634
    functionLinenumberEnd: 1705
    functionName: element_alloc
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 2
    functionsReached:
    - SpinLockAcquire
    - HTAB*::alloc
    - IS_PARTITIONED
    - slist_push_head
    - SpinLockRelease
    - MAXALIGN
    linkageType: ''
    returnType: bool
    signature: bool element_alloc(HTAB *hashp, int nelem, int freelist_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calc_bucket
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1720,1
    - Dst: MOD
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1723,1
    - Dst: hash_corrupted
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - hashp
    - hashvalue
    - bucketptr
    argTypes:
    - HTAB*
    - uint32
    - HASHBUCKET**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1711
    functionDepth: 1
    functionLinenumber: 1711
    functionLinenumberEnd: 1732
    functionName: hash_initial_lookup
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 3
    functionsReached:
    - calc_bucket
    - MOD
    - hash_corrupted
    linkageType: ''
    returnType: uint32
    signature: uint32 hash_initial_lookup(HTAB *hashp, uint32 hashvalue, HASHBUCKET
      **bucketptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1743,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1735
    functionDepth: 1
    functionLinenumber: 1735
    functionLinenumberEnd: 1746
    functionName: hash_corrupted
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void hash_corrupted(HTAB *hashp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_ceil_log2_64
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1759,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1749
    functionDepth: 3
    functionLinenumber: 1749
    functionLinenumberEnd: 1760
    functionName: my_log2
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - pg_ceil_log2_64
    linkageType: ''
    returnType: int
    signature: int my_log2(int64 num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1767,1
    - Dst: my_log2
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1763
    functionDepth: 4
    functionLinenumber: 1763
    functionLinenumberEnd: 1768
    functionName: next_pow2_int64
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - my_log2
    - INT64CONST
    linkageType: ''
    returnType: int64
    signature: int64 next_pow2_int64(int64 num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: my_log2
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1776,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1771
    functionDepth: 4
    functionLinenumber: 1771
    functionLinenumberEnd: 1777
    functionName: next_pow2_int
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 2
    functionsReached:
    - my_log2
    linkageType: ''
    returnType: int
    signature: int next_pow2_int(int64 num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1820,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1823,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1825
      start: 1816
    functionDepth: 1
    functionLinenumber: 1816
    functionLinenumberEnd: 1825
    functionName: register_seq_scan
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 2
    functionsReached:
    - elog
    - GetCurrentTransactionNestLevel
    linkageType: ''
    returnType: void
    signature: void register_seq_scan(HTAB *hashp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1844,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1828
    functionDepth: 1
    functionLinenumber: 1828
    functionLinenumberEnd: 1846
    functionName: deregister_seq_scan
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void deregister_seq_scan(HTAB *hashp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1860
      start: 1849
    functionDepth: 0
    functionLinenumber: 1849
    functionLinenumberEnd: 1860
    functionName: has_seq_scans
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool has_seq_scans(HTAB *hashp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1881,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1886
      start: 1863
    functionDepth: 1
    functionLinenumber: 1863
    functionLinenumberEnd: 1886
    functionName: AtEOXact_HashTables
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 3
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void AtEOXact_HashTables(bool isCommit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1904,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - isCommit
    - nestDepth
    argTypes:
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1911
      start: 1889
    functionDepth: 1
    functionLinenumber: 1889
    functionLinenumberEnd: 1911
    functionName: AtEOSubXact_HashTables
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 2
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void AtEOSubXact_HashTables(bool isCommit, int nestDepth)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/error/csvlog.c:46,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/error/csvlog.c:50,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/error/csvlog.c:51,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/error/csvlog.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - buf
    - data
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 54
    functionName: appendCSVLiteral
    functionSourceFile: /src/postgres/src/backend/utils/error/csvlog.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: void
    signature: void appendCSVLiteral(StringInfo buf, const char *data)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: reset_formatted_start_time
      Src: /src/postgres/src/backend/utils/error/csvlog.c:83,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:87,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/csvlog.c:90,1
    - Dst: get_formatted_log_time
      Src: /src/postgres/src/backend/utils/error/csvlog.c:90,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:91,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:95,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:96,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:100,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:101,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:105,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:106,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:111,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/csvlog.c:112,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:115,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/csvlog.c:116,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:118,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:120,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:123,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:124,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:127,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:128,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:137,1
    - Dst: get_ps_display
      Src: /src/postgres/src/backend/utils/error/csvlog.c:139,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:140,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:141,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/csvlog.c:143,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:145,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/csvlog.c:148,1
    - Dst: get_formatted_start_time
      Src: /src/postgres/src/backend/utils/error/csvlog.c:148,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:149,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:154,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:155,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:158,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/utils/error/csvlog.c:158,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:159,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/csvlog.c:162,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/csvlog.c:162,1
    - Dst: error_severity
      Src: /src/postgres/src/backend/utils/error/csvlog.c:162,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:163,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/csvlog.c:166,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/csvlog.c:166,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:167,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:170,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:171,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:175,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:177,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:178,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:181,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:182,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:185,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:186,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:190,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:191,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:195,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:196,1
    - Dst: check_log_of_query
      Src: /src/postgres/src/backend/utils/error/csvlog.c:199,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:201,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:202,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:204,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:205,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:212,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:215,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:219,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:221,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/csvlog.c:222,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:224,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:228,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:230,1
    - Dst: appendCSVLiteral
      Src: /src/postgres/src/backend/utils/error/csvlog.c:233,1
    - Dst: get_backend_type_for_log
      Src: /src/postgres/src/backend/utils/error/csvlog.c:233,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:234,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:246,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:248,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/csvlog.c:251,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/utils/error/csvlog.c:251,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/csvlog.c:253,1
    - Dst: write_syslogger_file
      Src: /src/postgres/src/backend/utils/error/csvlog.c:257,1
    - Dst: write_pipe_chunks
      Src: /src/postgres/src/backend/utils/error/csvlog.c:259,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/csvlog.c:261,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 101
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 262
    functionName: write_csvlog
    functionSourceFile: /src/postgres/src/backend/utils/error/csvlog.c
    functionUses: 0
    functionsReached:
    - get_ps_display
    - write_syslogger_file
    - appendBinaryStringInfo
    - _
    - get_backend_type_for_log
    - pfree
    - appendStringInfoString
    - check_log_of_query
    - pgstat_get_my_query_id
    - GetTopTransactionIdIfAny
    - error_severity
    - appendStringInfoChar
    - appendCSVLiteral
    - initStringInfo
    - appendStringInfo
    - get_formatted_start_time
    - get_formatted_log_time
    - unpack_sql_state
    - write_pipe_chunks
    - reset_formatted_start_time
    linkageType: ''
    returnType: void
    signature: void write_csvlog(ErrorData *edata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:46,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:51,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:52,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:53,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:56,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - buf
    - key
    - value
    - escape_value
    argTypes:
    - StringInfo
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 59
    functionName: appendJSONKeyValue
    functionSourceFile: /src/postgres/src/backend/utils/error/jsonlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - escape_json
    - appendStringInfoString
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void appendJSONKeyValue(StringInfo buf, const char *key, const char
      *value,\n\t\t\t\t   bool escape_value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:83,1
    - Dst: va_start
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:87,1
    - Dst: pvsnprintf
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:88,1
    - Dst: va_end
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:89,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:95,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:99,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - buf
    - key
    - escape_key
    - fmt
    argTypes:
    - StringInfo
    - char*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 69
    functionDepth: 3
    functionLinenumber: 69
    functionLinenumberEnd: 103
    functionName: appendJSONKeyValueFmt
    functionSourceFile: /src/postgres/src/backend/utils/error/jsonlog.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - pvsnprintf
    - pfree
    - appendJSONKeyValue
    - palloc
    linkageType: ''
    returnType: void
    signature: "void appendJSONKeyValueFmt(StringInfo buf, const char *key,\n\t\t\t\t\t
      \ bool escape_key, const char *fmt, ...)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: reset_formatted_start_time
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:130,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:134,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:137,1
    - Dst: get_formatted_log_time
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:140,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:146,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:147,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:148,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:152,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:156,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:160,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:165,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:167,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:171,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:175,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:184,1
    - Dst: get_ps_display
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:185,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:186,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:187,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:189,1
    - Dst: get_formatted_start_time
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:193,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:194,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:199,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:203,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:204,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:208,1
    - Dst: error_severity
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:209,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:213,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:214,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:217,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:221,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:223,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:227,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:231,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:236,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:241,1
    - Dst: check_log_of_query
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:244,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:246,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:248,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:256,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:259,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:260,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:267,1
    - Dst: appendJSONKeyValue
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:270,1
    - Dst: get_backend_type_for_log
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:270,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:282,1
    - Dst: appendJSONKeyValueFmt
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:287,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:288,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:291,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:292,1
    - Dst: write_syslogger_file
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:296,1
    - Dst: write_pipe_chunks
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:298,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/jsonlog.c:300,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 81
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 301
    functionName: write_jsonlog
    functionSourceFile: /src/postgres/src/backend/utils/error/jsonlog.c
    functionUses: 0
    functionsReached:
    - get_ps_display
    - write_syslogger_file
    - appendBinaryStringInfo
    - get_backend_type_for_log
    - pfree
    - escape_json
    - appendJSONKeyValue
    - check_log_of_query
    - pgstat_get_my_query_id
    - GetTopTransactionIdIfAny
    - error_severity
    - appendStringInfoChar
    - initStringInfo
    - get_formatted_start_time
    - get_formatted_log_time
    - unpack_sql_state
    - write_pipe_chunks
    - reset_formatted_start_time
    - appendJSONKeyValueFmt
    linkageType: ''
    returnType: void
    signature: void write_jsonlog(ErrorData *edata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_stderr
      Src: /src/postgres/src/backend/utils/error/assert.c:36,1
    - Dst: getpid
      Src: /src/postgres/src/backend/utils/error/assert.c:37,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/utils/error/assert.c:39,1
    - Dst: getpid
      Src: /src/postgres/src/backend/utils/error/assert.c:40,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/assert.c:43,1
    - Dst: backtrace
      Src: /src/postgres/src/backend/utils/error/assert.c:51,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/error/assert.c:51,1
    - Dst: backtrace_symbols_fd
      Src: /src/postgres/src/backend/utils/error/assert.c:52,1
    - Dst: fileno
      Src: /src/postgres/src/backend/utils/error/assert.c:52,1
    - Dst: sleep
      Src: /src/postgres/src/backend/utils/error/assert.c:62,1
    - Dst: abort
      Src: /src/postgres/src/backend/utils/error/assert.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - conditionName
    - fileName
    - lineNumber
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 66
    functionName: ExceptionalCondition
    functionSourceFile: /src/postgres/src/backend/utils/error/assert.c
    functionUses: 0
    functionsReached:
    - getpid
    - abort
    - backtrace
    - write_stderr
    - fileno
    - fflush
    - sleep
    - lengthof
    - backtrace_symbols_fd
    linkageType: ''
    returnType: void
    signature: "void ExceptionalCondition(const char *conditionName,\n\t\t\t\t\t const
      char *fileName,\n\t\t\t\t\t int lineNumber)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: _
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 363
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 183
    functionName: CHECK_STACK_DEPTH
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_STACK_DEPTH()
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - elevel
    - log_min_level
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 237
    functionName: is_log_level_output
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_log_level_output(int elevel, int log_min_level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_log_level_output
      Src: /src/postgres/src/backend/utils/error/elog.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 251
    functionName: should_output_to_server
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - is_log_level_output
    linkageType: ''
    returnType: bool
    signature: bool should_output_to_server(int elevel)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 273
    functionName: should_output_to_client
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool should_output_to_client(int elevel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: should_output_to_server
      Src: /src/postgres/src/backend/utils/error/elog.c:291,1
    - Dst: should_output_to_client
      Src: /src/postgres/src/backend/utils/error/elog.c:292,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 295
    functionName: message_level_is_interesting
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 6
    functionsReached:
    - should_output_to_client
    - should_output_to_server
    linkageType: ''
    returnType: bool
    signature: bool message_level_is_interesting(int elevel)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 310
    functionName: in_error_recursion_trouble
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool in_error_recursion_trouble(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: in_error_recursion_trouble
      Src: /src/postgres/src/backend/utils/error/elog.c:321,1
    - Dst: gettext
      Src: /src/postgres/src/backend/utils/error/elog.c:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 328
    functionName: err_gettext
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - in_error_recursion_trouble
    - gettext
    linkageType: ''
    returnType: char
    signature: 'char *

      err_gettext(const char *str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errstart
      Src: /src/postgres/src/backend/utils/error/elog.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - elevel
    - domain
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 342
    functionName: errstart_cold
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - errstart
    linkageType: ''
    returnType: pg_attribute_cold
    signature: pg_attribute_cold errstart_cold(int elevel, const char *domain)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/error/elog.c:404,1
    - Dst: should_output_to_server
      Src: /src/postgres/src/backend/utils/error/elog.c:412,1
    - Dst: should_output_to_client
      Src: /src/postgres/src/backend/utils/error/elog.c:413,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/utils/error/elog.c:424,1
    - Dst: exit
      Src: /src/postgres/src/backend/utils/error/elog.c:425,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/error/elog.c:439,1
    - Dst: in_error_recursion_trouble
      Src: /src/postgres/src/backend/utils/error/elog.c:447,1
    - Dst: get_error_stack_entry
      Src: /src/postgres/src/backend/utils/error/elog.c:455,1
    - Dst: set_stack_entry_domain
      Src: /src/postgres/src/backend/utils/error/elog.c:459,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 2
    argNames:
    - elevel
    - domain
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 475
    functionName: errstart
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - MemoryContextReset
    - get_error_stack_entry
    - set_stack_entry_domain
    - should_output_to_client
    - write_stderr
    - Max
    - exit
    - in_error_recursion_trouble
    - should_output_to_server
    linkageType: ''
    returnType: bool
    signature: bool errstart(int elevel, const char *domain)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:494,1
    - Dst: set_stack_entry_location
      Src: /src/postgres/src/backend/utils/error/elog.c:497,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:505,1
    - Dst: matches_backtrace_functions
      Src: /src/postgres/src/backend/utils/error/elog.c:511,1
    - Dst: set_backtrace
      Src: /src/postgres/src/backend/utils/error/elog.c:512,1
    - Dst: ErrorContextCallback*::callback
      Src: /src/postgres/src/backend/utils/error/elog.c:522,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/error/elog.c:551,1
    - Dst: EmitErrorReport
      Src: /src/postgres/src/backend/utils/error/elog.c:555,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/error/elog.c:565,1
    - Dst: FreeErrorDataContents
      Src: /src/postgres/src/backend/utils/error/elog.c:567,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:571,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/elog.c:594,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/utils/error/elog.c:608,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/elog.c:620,1
    - Dst: abort
      Src: /src/postgres/src/backend/utils/error/elog.c:621,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/error/elog.c:629,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 3
    argNames:
    - filename
    - lineno
    - funcname
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 630
    functionName: errfinish
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - abort
    - set_backtrace
    - MemoryContextReset
    - CHECK_FOR_INTERRUPTS
    - matches_backtrace_functions
    - MemoryContextSwitchTo
    - CHECK_STACK_DEPTH
    - ErrorContextCallback*::callback
    - PG_RE_THROW
    - EmitErrorReport
    - fflush
    - FreeErrorDataContents
    - set_stack_entry_location
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void errfinish(const char *filename, int lineno, const char *funcname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/error/elog.c:660,1
    - Dst: errstart
      Src: /src/postgres/src/backend/utils/error/elog.c:661,1
    - Dst: get_error_stack_entry
      Src: /src/postgres/src/backend/utils/error/elog.c:678,1
    - Dst: set_stack_entry_domain
      Src: /src/postgres/src/backend/utils/error/elog.c:680,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - context
    - domain
    argTypes:
    - struct Node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 650
    functionDepth: 3
    functionLinenumber: 650
    functionLinenumberEnd: 693
    functionName: errsave_start
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - errstart
    - IsA
    - set_stack_entry_domain
    - get_error_stack_entry
    linkageType: ''
    returnType: bool
    signature: bool errsave_start(struct Node *context, const char *domain)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:710,1
    - Dst: errfinish
      Src: /src/postgres/src/backend/utils/error/elog.c:718,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/utils/error/elog.c:719,1
    - Dst: set_stack_entry_location
      Src: /src/postgres/src/backend/utils/error/elog.c:729,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/error/elog.c:745,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:746,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - context
    - filename
    - lineno
    - funcname
    argTypes:
    - struct Node*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 702
    functionDepth: 3
    functionLinenumber: 702
    functionLinenumberEnd: 751
    functionName: errsave_finish
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - errfinish
    - memcpy
    - CHECK_STACK_DEPTH
    - pg_unreachable
    - palloc_object
    - set_stack_entry_location
    linkageType: ''
    returnType: void
    signature: "void errsave_finish(struct Node *context, const char *filename, int
      lineno,\n\t\t\t   const char *funcname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/error/elog.c:779,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/error/elog.c:783,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/error/elog.c:783,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/error/elog.c:788,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 794
    functionName: get_error_stack_entry
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - unlikely
    - ereport
    - errmsg_internal
    - memset
    linkageType: ''
    returnType: ErrorData
    signature: 'ErrorData *

      get_error_stack_entry(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/backend/utils/error/elog.c:803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - edata
    - domain
    argTypes:
    - ErrorData*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 806
    functionName: set_stack_entry_domain
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - PG_TEXTDOMAIN
    linkageType: ''
    returnType: void
    signature: void set_stack_entry_domain(ErrorData *edata, const char *domain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/postgres/src/backend/utils/error/elog.c:826,1
    - Dst: strrchr
      Src: /src/postgres/src/backend/utils/error/elog.c:830,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - edata
    - filename
    - lineno
    - funcname
    argTypes:
    - ErrorData*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 816
    functionDepth: 0
    functionLinenumber: 816
    functionLinenumberEnd: 838
    functionName: set_stack_entry_location
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - strrchr
    linkageType: ''
    returnType: void
    signature: "void set_stack_entry_location(ErrorData *edata,\n\t\t\t\t\t\t const
      char *filename, int lineno,\n\t\t\t\t\t\t const char *funcname)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/error/elog.c:860,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:862,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - funcname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 846
    functionDepth: 0
    functionLinenumber: 846
    functionLinenumberEnd: 866
    functionName: matches_backtrace_functions
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - strlen
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool matches_backtrace_functions(const char *funcname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - sqlerrcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 885
    functionName: errcode
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 955
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errcode(int sqlerrcode)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:903,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 965
    functionName: errcode_for_file_access
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 121
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errcode_for_file_access(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:982,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 998
    functionName: errcode_for_socket_access
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 9
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errcode_for_socket_access(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - domain
    - ','
    - targetfield
    - ','
    - appendval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1049
    functionDepth: 0
    functionLinenumber: 1049
    functionLinenumberEnd: 1053
    functionName: EVALUATE_MESSAGE_PLURAL
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EVALUATE_MESSAGE_PLURAL(domain, targetfield, appendval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1100,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1101,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1104,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1109
    functionName: errmsg
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1126
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errmsg(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1122,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1123,1
    - Dst: set_backtrace
      Src: /src/postgres/src/backend/utils/error/elog.c:1125,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1115
    functionDepth: 1
    functionLinenumber: 1115
    functionLinenumberEnd: 1131
    functionName: errbacktrace
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - set_backtrace
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errbacktrace(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1151,1
    - Dst: backtrace
      Src: /src/postgres/src/backend/utils/error/elog.c:1159,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/error/elog.c:1159,1
    - Dst: backtrace_symbols
      Src: /src/postgres/src/backend/utils/error/elog.c:1160,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1164,1
    - Dst: free
      Src: /src/postgres/src/backend/utils/error/elog.c:1165,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:1168,1
    - Dst: DuplicateHandle
      Src: /src/postgres/src/backend/utils/error/elog.c:1186,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/backend/utils/error/elog.c:1186,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/backend/utils/error/elog.c:1187,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/backend/utils/error/elog.c:1188,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1194,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/utils/error/elog.c:1196,1
    - Dst: SymSetOptions
      Src: /src/postgres/src/backend/utils/error/elog.c:1201,1
    - Dst: SymInitialize
      Src: /src/postgres/src/backend/utils/error/elog.c:1206,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/utils/error/elog.c:1208,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1210,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/utils/error/elog.c:1212,1
    - Dst: on_proc_exit
      Src: /src/postgres/src/backend/utils/error/elog.c:1217,1
    - Dst: CaptureStackBackTrace
      Src: /src/postgres/src/backend/utils/error/elog.c:1223,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/error/elog.c:1223,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:1227,1
    - Dst: SymFromAddrW
      Src: /src/postgres/src/backend/utils/error/elog.c:1242,1
    - Dst: wchar2char
      Src: /src/postgres/src/backend/utils/error/elog.c:1256,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1262,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1275,1
    - Dst: SymGetLineFromAddrW64
      Src: /src/postgres/src/backend/utils/error/elog.c:1282,1
    - Dst: wchar2char
      Src: /src/postgres/src/backend/utils/error/elog.c:1287,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1292,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1302,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/utils/error/elog.c:1305,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:1310,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 62
    argCount: 2
    argNames:
    - edata
    - num_skip
    argTypes:
    - ErrorData*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1146
    functionDepth: 3
    functionLinenumber: 1146
    functionLinenumberEnd: 1315
    functionName: set_backtrace
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - CloseHandle
    - wchar2char
    - backtrace
    - appendStringInfo
    - initStringInfo
    - appendStringInfoString
    - CaptureStackBackTrace
    - SymGetLineFromAddrW64
    - GetLastError
    - SymSetOptions
    - SymFromAddrW
    - free
    - GetCurrentProcess
    - SymInitialize
    - backtrace_symbols
    - DuplicateHandle
    - lengthof
    - on_proc_exit
    linkageType: ''
    returnType: void
    signature: void set_backtrace(ErrorData *edata, int num_skip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SymCleanup
      Src: /src/postgres/src/backend/utils/error/elog.c:1331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1321
    functionDepth: 0
    functionLinenumber: 1321
    functionLinenumberEnd: 1335
    functionName: backtrace_cleanup
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - SymCleanup
    linkageType: ''
    returnType: void
    signature: void backtrace_cleanup(int code, Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1355,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1356,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1359,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1348
    functionDepth: 1
    functionLinenumber: 1348
    functionLinenumberEnd: 1364
    functionName: errmsg_internal
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 127
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errmsg_internal(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1379,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1380,1
    - Dst: EVALUATE_MESSAGE_PLURAL
      Src: /src/postgres/src/backend/utils/error/elog.c:1383,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - fmt_singular
    - fmt_plural
    - n
    argTypes:
    - char*
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1371
    functionDepth: 1
    functionLinenumber: 1371
    functionLinenumberEnd: 1388
    functionName: errmsg_plural
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 18
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE_PLURAL
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: "int errmsg_plural(const char *fmt_singular, const char *fmt_plural,\n\t\t\t
      \ unsigned long n, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1401,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1402,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1404,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1394
    functionDepth: 1
    functionLinenumber: 1394
    functionLinenumberEnd: 1409
    functionName: errdetail
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 224
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errdetail(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1428,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1429,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1431,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1421
    functionDepth: 1
    functionLinenumber: 1421
    functionLinenumberEnd: 1436
    functionName: errdetail_internal
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 32
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errdetail_internal(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1449,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1450,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1452,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1442
    functionDepth: 1
    functionLinenumber: 1442
    functionLinenumberEnd: 1457
    functionName: errdetail_log
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 7
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errdetail_log(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1471,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1472,1
    - Dst: EVALUATE_MESSAGE_PLURAL
      Src: /src/postgres/src/backend/utils/error/elog.c:1474,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - fmt_singular
    - fmt_plural
    - n
    argTypes:
    - char*
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1479
    functionName: errdetail_log_plural
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE_PLURAL
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: "int errdetail_log_plural(const char *fmt_singular, const char *fmt_plural,\n\t\t\t\t\t
      unsigned long n, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1494,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1495,1
    - Dst: EVALUATE_MESSAGE_PLURAL
      Src: /src/postgres/src/backend/utils/error/elog.c:1497,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - fmt_singular
    - fmt_plural
    - n
    argTypes:
    - char*
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1486
    functionDepth: 1
    functionLinenumber: 1486
    functionLinenumberEnd: 1502
    functionName: errdetail_plural
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 4
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE_PLURAL
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: "int errdetail_plural(const char *fmt_singular, const char *fmt_plural,\n\t\t\t\t
      unsigned long n, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1515,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1516,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1518,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1508
    functionDepth: 1
    functionLinenumber: 1508
    functionLinenumberEnd: 1523
    functionName: errhint
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 173
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errhint(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1537,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1538,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1540,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1530
    functionDepth: 1
    functionLinenumber: 1530
    functionLinenumberEnd: 1545
    functionName: errhint_internal
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errhint_internal(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1559,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1560,1
    - Dst: EVALUATE_MESSAGE_PLURAL
      Src: /src/postgres/src/backend/utils/error/elog.c:1562,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - fmt_singular
    - fmt_plural
    - n
    argTypes:
    - char*
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1551
    functionDepth: 1
    functionLinenumber: 1551
    functionLinenumberEnd: 1567
    functionName: errhint_plural
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE_PLURAL
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: "int errhint_plural(const char *fmt_singular, const char *fmt_plural,\n\t\t\t
      \  unsigned long n, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1584,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1585,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1587,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1577
    functionDepth: 1
    functionLinenumber: 1577
    functionLinenumberEnd: 1592
    functionName: errcontext_msg
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errcontext_msg(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1609,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/backend/utils/error/elog.c:1612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - domain
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1603
    functionDepth: 1
    functionLinenumber: 1603
    functionLinenumberEnd: 1615
    functionName: set_errcontext_domain
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int set_errcontext_domain(const char *domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hide_stmt
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1623
    functionDepth: 1
    functionLinenumber: 1623
    functionLinenumberEnd: 1634
    functionName: errhidestmt
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 9
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errhidestmt(bool hide_stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hide_ctx
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1642
    functionDepth: 1
    functionLinenumber: 1642
    functionLinenumberEnd: 1653
    functionName: errhidecontext
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 5
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errhidecontext(bool hide_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cursorpos
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1669
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1669
    functionName: errposition
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 24
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int errposition(int cursorpos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cursorpos
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1674
    functionDepth: 1
    functionLinenumber: 1674
    functionLinenumberEnd: 1685
    functionName: internalerrposition
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 8
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int internalerrposition(int cursorpos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1700,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1704,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1694
    functionDepth: 1
    functionLinenumber: 1694
    functionLinenumberEnd: 1712
    functionName: internalerrquery
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 8
    functionsReached:
    - pfree
    - MemoryContextStrdup
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int internalerrquery(const char *query)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1730,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1735,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1738,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1741,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1744,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1747,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/error/elog.c:1750,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - field
    - str
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1755
      start: 1724
    functionDepth: 1
    functionLinenumber: 1724
    functionLinenumberEnd: 1755
    functionName: err_generic_string
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 3
    functionsReached:
    - elog
    - set_errdata_field
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int err_generic_string(int field, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:1763,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - cxt
    - ptr
    - str
    argTypes:
    - MemoryContextData*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1760
    functionDepth: 1
    functionLinenumber: 1760
    functionLinenumberEnd: 1765
    functionName: set_errdata_field
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextStrdup
    linkageType: ''
    returnType: void
    signature: void set_errdata_field(MemoryContextData *cxt, char **ptr, const char
      *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1782
      start: 1773
    functionDepth: 1
    functionLinenumber: 1773
    functionLinenumberEnd: 1782
    functionName: geterrcode
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int geterrcode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1790
    functionDepth: 1
    functionLinenumber: 1790
    functionLinenumberEnd: 1799
    functionName: geterrposition
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 6
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int geterrposition(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1807
    functionDepth: 1
    functionLinenumber: 1807
    functionLinenumberEnd: 1816
    functionName: getinternalerrposition
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: int
    signature: int getinternalerrposition(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - errnumber
    - domain
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1847
      start: 1840
    functionDepth: 0
    functionLinenumber: 1840
    functionLinenumberEnd: 1847
    functionName: pre_format_elog_string
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pre_format_elog_string(int errnumber, const char *domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/error/elog.c:1858,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/backend/utils/error/elog.c:1860,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1864,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1867,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1849
    functionDepth: 1
    functionLinenumber: 1849
    functionLinenumberEnd: 1872
    functionName: format_elog_string
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - MemSet
    - EVALUATE_MESSAGE
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: char
    signature: 'char *

      format_elog_string(const char *fmt, ...)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1889,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1890,1
    - Dst: send_message_to_server_log
      Src: /src/postgres/src/backend/utils/error/elog.c:1924,1
    - Dst: send_message_to_frontend
      Src: /src/postgres/src/backend/utils/error/elog.c:1928,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1930,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1932
      start: 1882
    functionDepth: 1
    functionLinenumber: 1882
    functionLinenumberEnd: 1932
    functionName: EmitErrorReport
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 5
    functionsReached:
    - MemoryContextSwitchTo
    - send_message_to_frontend
    - send_message_to_server_log
    - CHECK_STACK_DEPTH
    linkageType: ''
    returnType: void
    signature: void EmitErrorReport(void)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:1953,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/error/elog.c:1956,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:1957,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1967,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1969,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1971,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1973,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1975,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1977,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1979,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1981,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1983,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1985,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1987,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1989,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1991,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1993,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1995,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1997,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1999,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1941
    functionDepth: 1
    functionLinenumber: 1941
    functionLinenumberEnd: 2005
    functionName: CopyErrorData
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 22
    functionsReached:
    - memcpy
    - Assert
    - pstrdup
    - CHECK_STACK_DEPTH
    - palloc_object
    linkageType: ''
    returnType: ErrorData
    signature: 'ErrorData *

      CopyErrorData(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FreeErrorDataContents
      Src: /src/postgres/src/backend/utils/error/elog.c:2016,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2018
      start: 2013
    functionDepth: 1
    functionLinenumber: 2013
    functionLinenumberEnd: 2018
    functionName: FreeErrorData
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 9
    functionsReached:
    - FreeErrorDataContents
    - pfree
    linkageType: ''
    returnType: void
    signature: void FreeErrorData(ErrorData *edata)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2029,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2031,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2033,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2035,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2037,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2039,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2041,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2043,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2045,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2047,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2049,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2051,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2025
    functionDepth: 0
    functionLinenumber: 2025
    functionLinenumberEnd: 2052
    functionName: FreeErrorDataContents
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void FreeErrorDataContents(ErrorData *edata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/error/elog.c:2074,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2075
      start: 2062
    functionDepth: 1
    functionLinenumber: 2062
    functionLinenumberEnd: 2075
    functionName: FlushErrorState
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 26
    functionsReached:
    - MemoryContextReset
    linkageType: ''
    returnType: void
    signature: void FlushErrorState(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: errstart
      Src: /src/postgres/src/backend/utils/error/elog.c:2096,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:2101,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2107,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2109,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2111,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2113,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2115,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2117,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2120,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2122,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2124,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2126,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2128,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2132,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:2134,1
    - Dst: errfinish
      Src: /src/postgres/src/backend/utils/error/elog.c:2138,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2139
      start: 2090
    functionDepth: 3
    functionLinenumber: 2090
    functionLinenumberEnd: 2139
    functionName: ThrowErrorData
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 4
    functionsReached:
    - errfinish
    - errstart
    - pstrdup
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void ThrowErrorData(ErrorData *edata)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:2154,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:2158,1
    - Dst: get_error_stack_entry
      Src: /src/postgres/src/backend/utils/error/elog.c:2160,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:2161,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2165,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2167,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2169,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2171,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2173,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2175,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2177,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2179,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2181,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2183,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2185,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2187,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/error/elog.c:2193,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2194
      start: 2149
    functionDepth: 2
    functionLinenumber: 2149
    functionLinenumberEnd: 2194
    functionName: ReThrowError
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 4
    functionsReached:
    - memcpy
    - Assert
    - get_error_stack_entry
    - pstrdup
    - MemoryContextSwitchTo
    - PG_RE_THROW
    linkageType: ''
    returnType: void
    signature: void ReThrowError(ErrorData *edata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: siglongjmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:2217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:2218,1
    - Dst: should_output_to_server
      Src: /src/postgres/src/backend/utils/error/elog.c:2225,1
    - Dst: should_output_to_client
      Src: /src/postgres/src/backend/utils/error/elog.c:2226,1
    - Dst: errfinish
      Src: /src/postgres/src/backend/utils/error/elog.c:2235,1
    - Dst: ExceptionalCondition
      Src: /src/postgres/src/backend/utils/error/elog.c:2239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2199
    functionDepth: 3
    functionLinenumber: 2199
    functionLinenumberEnd: 2240
    functionName: pg_re_throw
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - errfinish
    - Assert
    - should_output_to_client
    - ExceptionalCondition
    - siglongjmp
    - should_output_to_server
    linkageType: ''
    returnType: void
    signature: void pg_re_throw(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_error_stack_entry
      Src: /src/postgres/src/backend/utils/error/elog.c:2265,1
    - Dst: ErrorContextCallback*::callback
      Src: /src/postgres/src/backend/utils/error/elog.c:2284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2300
      start: 2254
    functionDepth: 2
    functionLinenumber: 2254
    functionLinenumberEnd: 2300
    functionName: GetErrorContextStack
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - get_error_stack_entry
    - ErrorContextCallback*::callback
    linkageType: ''
    returnType: char
    signature: 'char *

      GetErrorContextStack(void)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/backend/utils/error/elog.c:2319,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/error/elog.c:2321,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/error/elog.c:2322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/error/elog.c:2323,1
    - Dst: isatty
      Src: /src/postgres/src/backend/utils/error/elog.c:2324,1
    - Dst: close
      Src: /src/postgres/src/backend/utils/error/elog.c:2325,1
    - Dst: freopen
      Src: /src/postgres/src/backend/utils/error/elog.c:2330,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/error/elog.c:2331,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/error/elog.c:2332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/error/elog.c:2333,1
    - Dst: freopen
      Src: /src/postgres/src/backend/utils/error/elog.c:2343,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/error/elog.c:2344,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/error/elog.c:2345,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/error/elog.c:2346,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2349
      start: 2306
    functionDepth: 2
    functionLinenumber: 2306
    functionLinenumberEnd: 2349
    functionName: DebugFileOpen
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - freopen
    - ereport
    - isatty
    - errmsg
    - close
    - open
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void DebugFileOpen(void)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: PG_PROCTYPE
      Src: /src/postgres/src/backend/utils/error/elog.c:2374,1
    - Dst: guc_strdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2381,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/backend/utils/error/elog.c:2386,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2389,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2390,1
    - Dst: guc_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2391,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/error/elog.c:2398,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2412,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2420,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2430,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2452,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2462,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2471,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2476,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2494,1
    - Dst: guc_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2506,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2507,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2516,1
    - Dst: guc_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2517,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2518,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/utils/error/elog.c:2533,1
    - Dst: initStringInfoExt
      Src: /src/postgres/src/backend/utils/error/elog.c:2535,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:2535,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/utils/error/elog.c:2538,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:2539,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2541,1
    - Dst: guc_strdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2544,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2547,1
    - Dst: guc_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2551,1
    - Dst: guc_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2554,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2555,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2556,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/utils/error/elog.c:2561,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:2564,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 102
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2567
      start: 2362
    functionDepth: 4
    functionLinenumber: 2362
    functionLinenumberEnd: 2567
    functionName: check_log_min_messages
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - memcpy
    - list_free
    - PG_PROCTYPE
    - strchr
    - list_sort
    - appendStringInfoString
    - appendStringInfo
    - pfree
    - guc_strdup
    - guc_malloc
    - initStringInfoExt
    - guc_free
    - strlen
    - foreach_current_index
    - SplitGUCList
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_log_min_messages(char **newval, void **extra, GucSource
      source)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/error/elog.c:2398,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2412,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2420,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2430,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2452,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2462,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2471,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2476,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2494,1
    - Dst: guc_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2506,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2507,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2509
      start: 2396
    functionDepth: 4
    functionLinenumber: 2396
    functionLinenumberEnd: 2509
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 11
    functionsReached:
    - pg_strcasecmp
    - list_free
    - strchr
    - guc_free
    - GUC_check_errdetail
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, elem, elemlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/utils/error/elog.c:2538,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:2539,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2541,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2542
      start: 2536
    functionDepth: 2
    functionLinenumber: 2536
    functionLinenumberEnd: 2542
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 11
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - foreach_current_index
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, elem, elemlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/error/elog.c:2576,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/error/elog.c:2577,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/error/elog.c:2579,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/error/elog.c:2581,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2585
      start: 2573
    functionDepth: 1
    functionLinenumber: 2573
    functionLinenumberEnd: 2585
    functionName: log_min_messages_cmp
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - lfirst
    - strcmp
    - strchr
    linkageType: ''
    returnType: int
    signature: int log_min_messages_cmp(const ListCell *a, const ListCell *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2595
      start: 2590
    functionDepth: 0
    functionLinenumber: 2590
    functionLinenumberEnd: 2595
    functionName: assign_log_min_messages
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void assign_log_min_messages(const char *newval, void *extra)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:2610,1
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/error/elog.c:2620,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2627,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/utils/error/elog.c:2642,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2663
      start: 2607
    functionDepth: 1
    functionLinenumber: 2607
    functionLinenumberEnd: 2663
    functionName: check_backtrace_functions
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - strspn
    - strlen
    - GUC_check_errdetail
    - guc_malloc
    linkageType: ''
    returnType: bool
    signature: bool check_backtrace_functions(char **newval, void **extra, GucSource
      source)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2668
    functionDepth: 0
    functionLinenumber: 2668
    functionLinenumberEnd: 2672
    functionName: assign_backtrace_functions
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void assign_backtrace_functions(const char *newval, void *extra)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2687,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/utils/error/elog.c:2690,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2693,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2694,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2695,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/error/elog.c:2701,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2703,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2705,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2707,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2710,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2714,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2719,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2720,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2721,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2724
      start: 2677
    functionDepth: 4
    functionLinenumber: 2677
    functionLinenumberEnd: 2724
    functionName: check_log_destination
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - pg_strcasecmp
    - list_free
    - pfree
    - pstrdup
    - lfirst
    - SplitIdentifierString
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_log_destination(char **newval, void **extra, GucSource source)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/error/elog.c:2701,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2703,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2705,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2707,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2710,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2714,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2719,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2720,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2721,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2723
      start: 2699
    functionDepth: 4
    functionLinenumber: 2699
    functionLinenumberEnd: 2723
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 469
    functionsReached:
    - pg_strcasecmp
    - list_free
    - pfree
    - lfirst
    - GUC_check_errdetail
    linkageType: ''
    returnType: void
    signature: void foreach(l, elemlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2741
    functionDepth: 0
    functionLinenumber: 2741
    functionLinenumberEnd: 2745
    functionName: assign_log_destination
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void assign_log_destination(const char *newval, void *extra)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2764,1
    - Dst: closelog
      Src: /src/postgres/src/backend/utils/error/elog.c:2768,1
    - Dst: free
      Src: /src/postgres/src/backend/utils/error/elog.c:2771,1
    - Dst: strdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2772,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2777
      start: 2750
    functionDepth: 1
    functionLinenumber: 2750
    functionLinenumberEnd: 2777
    functionName: assign_syslog_ident
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - closelog
    - free
    - strdup
    - strcmp
    linkageType: ''
    returnType: void
    signature: void assign_syslog_ident(const char *newval, void *extra)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: closelog
      Src: /src/postgres/src/backend/utils/error/elog.c:2793,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2800
      start: 2782
    functionDepth: 0
    functionLinenumber: 2782
    functionLinenumberEnd: 2800
    functionName: assign_syslog_facility
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - closelog
    linkageType: ''
    returnType: void
    signature: void assign_syslog_facility(int newval, void *extra)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: openlog
      Src: /src/postgres/src/backend/utils/error/elog.c:2818,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:2838,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/error/elog.c:2839,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/error/elog.c:2856,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/error/elog.c:2865,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:2866,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/error/elog.c:2870,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/error/elog.c:2877,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/error/elog.c:2881,1
    - Dst: syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:2894,1
    - Dst: syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:2896,1
    - Dst: syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:2906,1
    - Dst: syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:2908,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 2
    argNames:
    - level
    - line
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2910
      start: 2807
    functionDepth: 1
    functionLinenumber: 2807
    functionLinenumberEnd: 2910
    functionName: write_syslog
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strchr
    - isspace
    - pg_mbcliplen
    - syslog
    - strlen
    - openlog
    - Min
    linkageType: ''
    returnType: void
    signature: void write_syslog(int level, const char *line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_codepage_to_encoding
      Src: /src/postgres/src/backend/utils/error/elog.c:2925,1
    - Dst: GetACP
      Src: /src/postgres/src/backend/utils/error/elog.c:2925,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2928
      start: 2919
    functionDepth: 2
    functionLinenumber: 2919
    functionLinenumberEnd: 2928
    functionName: GetACPEncoding
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - GetACP
    - pg_codepage_to_encoding
    linkageType: ''
    returnType: int
    signature: int GetACPEncoding(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: RegisterEventSource
      Src: /src/postgres/src/backend/utils/error/elog.c:2941,1
    - Dst: in_error_recursion_trouble
      Src: /src/postgres/src/backend/utils/error/elog.c:2989,1
    - Dst: GetMessageEncoding
      Src: /src/postgres/src/backend/utils/error/elog.c:2991,1
    - Dst: GetACPEncoding
      Src: /src/postgres/src/backend/utils/error/elog.c:2991,1
    - Dst: pgwin32_message_to_UTF16
      Src: /src/postgres/src/backend/utils/error/elog.c:2995,1
    - Dst: ReportEventW
      Src: /src/postgres/src/backend/utils/error/elog.c:3000,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:3011,1
    - Dst: ReportEventA
      Src: /src/postgres/src/backend/utils/error/elog.c:3015,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 3
    argNames:
    - level
    - line
    - len
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3024
      start: 2933
    functionDepth: 3
    functionLinenumber: 2933
    functionLinenumberEnd: 3024
    functionName: write_eventlog
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - RegisterEventSource
    - pfree
    - GetMessageEncoding
    - ReportEventW
    - ReportEventA
    - pgwin32_message_to_UTF16
    - GetACPEncoding
    - in_error_recursion_trouble
    linkageType: ''
    returnType: void
    signature: void write_eventlog(int level, const char *line, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: in_error_recursion_trouble
      Src: /src/postgres/src/backend/utils/error/elog.c:3051,1
    - Dst: pgwin32_message_to_UTF16
      Src: /src/postgres/src/backend/utils/error/elog.c:3058,1
    - Dst: GetStdHandle
      Src: /src/postgres/src/backend/utils/error/elog.c:3064,1
    - Dst: WriteConsoleW
      Src: /src/postgres/src/backend/utils/error/elog.c:3065,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:3067,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:3075,1
    - Dst: write
      Src: /src/postgres/src/backend/utils/error/elog.c:3093,1
    - Dst: fileno
      Src: /src/postgres/src/backend/utils/error/elog.c:3093,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - line
    - len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3095
      start: 3027
    functionDepth: 1
    functionLinenumber: 3027
    functionLinenumberEnd: 3095
    functionName: write_console
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - pfree
    - WriteConsoleW
    - write
    - pgwin32_message_to_UTF16
    - in_error_recursion_trouble
    - GetStdHandle
    - fileno
    linkageType: ''
    returnType: void
    signature: void write_console(const char *line, int len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/utils/error/elog.c:3117,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/utils/error/elog.c:3128,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/error/elog.c:3131,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3134,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:3135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3138
      start: 3105
    functionDepth: 3
    functionLinenumber: 3105
    functionLinenumberEnd: 3138
    functionName: get_formatted_log_time
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - gettimeofday
    - memcpy
    - pg_strftime
    - sprintf
    - pg_localtime
    linkageType: ''
    returnType: char
    signature: 'char *

      get_formatted_log_time(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3147
      start: 3143
    functionDepth: 0
    functionLinenumber: 3143
    functionLinenumberEnd: 3147
    functionName: reset_formatted_start_time
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reset_formatted_start_time(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/utils/error/elog.c:3169,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/error/elog.c:3171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3174
      start: 3155
    functionDepth: 3
    functionLinenumber: 3155
    functionLinenumberEnd: 3174
    functionName: get_formatted_start_time
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - pg_localtime
    - pg_strftime
    linkageType: ''
    returnType: char
    signature: 'char *

      get_formatted_start_time(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_log_level_output
      Src: /src/postgres/src/backend/utils/error/elog.c:3183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3195
      start: 3179
    functionDepth: 1
    functionLinenumber: 3179
    functionLinenumberEnd: 3195
    functionName: check_log_of_query
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - is_log_level_output
    linkageType: ''
    returnType: bool
    signature: bool check_log_of_query(ErrorData *edata)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetBackendTypeDesc
      Src: /src/postgres/src/backend/utils/error/elog.c:3217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3220
      start: 3202
    functionDepth: 1
    functionLinenumber: 3202
    functionLinenumberEnd: 3220
    functionName: get_backend_type_for_log
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - GetBackendTypeDesc
    linkageType: ''
    returnType: char
    signature: 'char *

      get_backend_type_for_log(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - p
    - ppadding
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3255
      start: 3229
    functionDepth: 0
    functionLinenumber: 3229
    functionLinenumberEnd: 3255
    functionName: process_log_prefix_padding
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      process_log_prefix_padding(const char *p, int *ppadding)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_status_format
      Src: /src/postgres/src/backend/utils/error/elog.c:3263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - edata
    argTypes:
    - StringInfo
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3264
      start: 3260
    functionDepth: 1
    functionLinenumber: 3260
    functionLinenumberEnd: 3264
    functionName: log_line_prefix
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - log_status_format
    linkageType: ''
    returnType: void
    signature: void log_line_prefix(StringInfo buf, ErrorData *edata)
  - BBCount: 76
    BranchProfiles: []
    Callsites:
    - Dst: reset_formatted_start_time
      Src: /src/postgres/src/backend/utils/error/elog.c:3290,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3302,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3313,1
    - Dst: process_log_prefix_padding
      Src: /src/postgres/src/backend/utils/error/elog.c:3334,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3346,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3348,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3350,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3353,1
    - Dst: get_backend_type_for_log
      Src: /src/postgres/src/backend/utils/error/elog.c:3359,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3362,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3364,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3373,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3375,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3377,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3380,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3389,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3391,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3393,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3396,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3404,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3406,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3409,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3413,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3415,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3428,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3431,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3433,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3436,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3442,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3444,1
    - Dst: get_formatted_log_time
      Src: /src/postgres/src/backend/utils/error/elog.c:3449,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3452,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3454,1
    - Dst: time
      Src: /src/postgres/src/backend/utils/error/elog.c:3458,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/utils/error/elog.c:3461,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/error/elog.c:3463,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3465,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3467,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/utils/error/elog.c:3476,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3480,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3485,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3487,1
    - Dst: get_formatted_start_time
      Src: /src/postgres/src/backend/utils/error/elog.c:3492,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3495,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3497,1
    - Dst: get_ps_display
      Src: /src/postgres/src/backend/utils/error/elog.c:3506,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3508,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3510,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3513,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/utils/error/elog.c:3528,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3543,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3545,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3565,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3566,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:3567,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3570,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3575,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3578,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3583,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3590,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3592,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3595,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3612,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3614,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3617,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3620,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3625,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/utils/error/elog.c:3625,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3627,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/utils/error/elog.c:3627,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3631,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/elog.c:3631,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3633,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/elog.c:3633,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3637,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/utils/error/elog.c:3638,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3640,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/utils/error/elog.c:3641,1
    CyclomaticComplexity: 90
    EdgeCount: 90
    ICount: 209
    argCount: 3
    argNames:
    - buf
    - format
    - edata
    argTypes:
    - StringInfo
    - char*
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3648
      start: 3269
    functionDepth: 4
    functionLinenumber: 3269
    functionLinenumberEnd: 3648
    functionName: log_status_format
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - gettimeofday
    - get_ps_display
    - appendBinaryStringInfo
    - pg_getnameinfo_all
    - _
    - get_backend_type_for_log
    - pfree
    - appendStringInfoString
    - pgstat_get_my_query_id
    - time
    - GetTopTransactionIdIfAny
    - appendStringInfoChar
    - psprintf
    - appendStringInfo
    - get_formatted_start_time
    - get_formatted_log_time
    - unpack_sql_state
    - reset_formatted_start_time
    - pg_strftime
    - appendStringInfoSpaces
    - process_log_prefix_padding
    - pg_localtime
    - snprintf
    linkageType: ''
    returnType: void
    signature: void log_status_format(StringInfo buf, const char *format, ErrorData
      *edata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGUNSIXBIT
      Src: /src/postgres/src/backend/utils/error/elog.c:3662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sql_state
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3668
      start: 3654
    functionDepth: 1
    functionLinenumber: 3654
    functionLinenumberEnd: 3668
    functionName: unpack_sql_state
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 9
    functionsReached:
    - PGUNSIXBIT
    linkageType: ''
    returnType: char
    signature: 'char *

      unpack_sql_state(int sql_state)'
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3680,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3682,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3683,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3683,1
    - Dst: error_severity
      Src: /src/postgres/src/backend/utils/error/elog.c:3683,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3686,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/elog.c:3686,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3689,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3691,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3691,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3694,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3694,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3697,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3697,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3700,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3706,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3707,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3707,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3708,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3709,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3713,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3714,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3714,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3715,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3716,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3720,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3721,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3721,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3722,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3723,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3727,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3728,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3728,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3729,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3730,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3734,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3735,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3735,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3736,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3737,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3744,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3745,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3745,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3751,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3752,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3752,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3758,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3759,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3759,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3760,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3761,1
    - Dst: check_log_of_query
      Src: /src/postgres/src/backend/utils/error/elog.c:3768,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3770,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3771,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3771,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3772,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3773,1
    - Dst: write_syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:3814,1
    - Dst: write_eventlog
      Src: /src/postgres/src/backend/utils/error/elog.c:3822,1
    - Dst: write_csvlog
      Src: /src/postgres/src/backend/utils/error/elog.c:3835,1
    - Dst: write_jsonlog
      Src: /src/postgres/src/backend/utils/error/elog.c:3850,1
    - Dst: write_pipe_chunks
      Src: /src/postgres/src/backend/utils/error/elog.c:3870,1
    - Dst: pgwin32_is_service
      Src: /src/postgres/src/backend/utils/error/elog.c:3880,1
    - Dst: write_eventlog
      Src: /src/postgres/src/backend/utils/error/elog.c:3881,1
    - Dst: write_syslogger_file
      Src: /src/postgres/src/backend/utils/error/elog.c:3889,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:3892,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 123
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3893
      start: 3674
    functionDepth: 5
    functionLinenumber: 3674
    functionLinenumberEnd: 3893
    functionName: send_message_to_server_log
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - write_jsonlog
    - _
    - pfree
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - write_syslogger_file
    - log_line_prefix
    - unpack_sql_state
    - append_with_tabs
    - check_log_of_query
    - write_csvlog
    - write_pipe_chunks
    - write_syslog
    - error_severity
    - pgwin32_is_service
    - appendStringInfoChar
    - write_eventlog
    linkageType: ''
    returnType: void
    signature: void send_message_to_server_log(ErrorData *edata)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fileno
      Src: /src/postgres/src/backend/utils/error/elog.c:3919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:3922,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:3939,1
    - Dst: write
      Src: /src/postgres/src/backend/utils/error/elog.c:3940,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:3949,1
    - Dst: write
      Src: /src/postgres/src/backend/utils/error/elog.c:3950,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - data
    - len
    - dest
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3952
      start: 3915
    functionDepth: 1
    functionLinenumber: 3915
    functionLinenumberEnd: 3952
    functionName: write_pipe_chunks
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 3
    functionsReached:
    - Assert
    - write
    - memcpy
    - fileno
    linkageType: ''
    returnType: void
    signature: void write_pipe_chunks(char *data, int len, int dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: in_error_recursion_trouble
      Src: /src/postgres/src/backend/utils/error/elog.c:3969,1
    - Dst: pq_send_ascii_string
      Src: /src/postgres/src/backend/utils/error/elog.c:3970,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3972,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3973
      start: 3966
    functionDepth: 3
    functionLinenumber: 3966
    functionLinenumberEnd: 3973
    functionName: err_sendstring
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - in_error_recursion_trouble
    - pq_send_ascii_string
    - pq_sendstring
    linkageType: ''
    returnType: void
    signature: void err_sendstring(StringInfo buf, const char *str)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/utils/error/elog.c:3990,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/utils/error/elog.c:3998,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/utils/error/elog.c:4000,1
    - Dst: error_severity
      Src: /src/postgres/src/backend/utils/error/elog.c:4002,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4003,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4004,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:4004,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4005,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4006,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4008,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4009,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/elog.c:4009,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4012,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4014,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4016,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:4016,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4020,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4021,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4028,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4029,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4034,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4035,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4040,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4041,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4046,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4047,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4052,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4053,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4058,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4059,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4064,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4065,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:4070,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4071,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4072,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:4077,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4078,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4079,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4084,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4085,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4090,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4091,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:4096,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4097,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4098,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4103,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:4104,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:4107,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/utils/error/elog.c:4109,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:4116,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:4118,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:4118,1
    - Dst: error_severity
      Src: /src/postgres/src/backend/utils/error/elog.c:4118,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:4121,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:4123,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:4123,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:4125,1
    - Dst: pq_putmessage_v2
      Src: /src/postgres/src/backend/utils/error/elog.c:4128,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:4130,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/utils/error/elog.c:4141,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 88
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4142
      start: 3978
    functionDepth: 4
    functionLinenumber: 3978
    functionLinenumberEnd: 4142
    functionName: send_message_to_frontend
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - pq_beginmessage
    - _
    - pq_endmessage
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - pq_putmessage_v2
    - pfree
    - unpack_sql_state
    - pq_flush
    - pq_sendbyte
    - err_sendstring
    - error_severity
    - PG_PROTOCOL_MAJOR
    - appendStringInfoChar
    - snprintf
    linkageType: ''
    returnType: void
    signature: void send_message_to_frontend(ErrorData *edata)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:4168,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:4172,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:4175,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:4178,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:4182,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:4185,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:4189,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:4192,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4200
      start: 4156
    functionDepth: 1
    functionLinenumber: 4156
    functionLinenumberEnd: 4200
    functionName: error_severity
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 4
    functionsReached:
    - gettext_noop
    linkageType: ''
    returnType: char
    signature: 'char *

      error_severity(int elevel)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/error/elog.c:4216,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/error/elog.c:4218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4220
      start: 4209
    functionDepth: 1
    functionLinenumber: 4209
    functionLinenumberEnd: 4220
    functionName: append_with_tabs
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: void
    signature: void append_with_tabs(StringInfo buf, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/backend/utils/error/elog.c:4233,1
    - Dst: vwrite_stderr
      Src: /src/postgres/src/backend/utils/error/elog.c:4234,1
    - Dst: va_end
      Src: /src/postgres/src/backend/utils/error/elog.c:4235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4236
      start: 4228
    functionDepth: 1
    functionLinenumber: 4228
    functionLinenumberEnd: 4236
    functionName: write_stderr
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 38
    functionsReached:
    - va_start
    - va_end
    - vwrite_stderr
    linkageType: ''
    returnType: void
    signature: void write_stderr(const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:4250,1
    - Dst: vfprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:4253,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/elog.c:4254,1
    - Dst: vsnprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:4256,1
    - Dst: pgwin32_is_service
      Src: /src/postgres/src/backend/utils/error/elog.c:4262,1
    - Dst: write_eventlog
      Src: /src/postgres/src/backend/utils/error/elog.c:4264,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:4264,1
    - Dst: write_console
      Src: /src/postgres/src/backend/utils/error/elog.c:4269,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:4269,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/elog.c:4270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - fmt
    - ap
    argTypes:
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4273
      start: 4243
    functionDepth: 2
    functionLinenumber: 4243
    functionLinenumberEnd: 4273
    functionName: vwrite_stderr
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - vfprintf
    - _
    - strlen
    - fflush
    - vsnprintf
    - pgwin32_is_service
    - write_console
    - write_eventlog
    linkageType: ''
    returnType: void
    signature: void vwrite_stderr(const char *fmt, va_list ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - capacity
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: RESOWNER_HASH_MAX_ITEMS
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESOWNER_HASH_MAX_ITEMS(capacity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_combine64
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:234,1
    - Dst: murmurhash64
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - kind
    argTypes:
    - Datum
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 236
    functionName: hash_resource_elem
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - hash_combine64
    - murmurhash64
    linkageType: ''
    returnType: uint32
    signature: uint32 hash_resource_elem(Datum value, const ResourceOwnerDesc *kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:247,1
    - Dst: hash_resource_elem
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - owner
    - value
    - kind
    argTypes:
    - ResourceOwner
    - Datum
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 260
    functionName: ResourceOwnerAddToHash
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_resource_elem
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerAddToHash(ResourceOwner owner, Datum value, const
      ResourceOwnerDesc *kind)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 278
    functionName: resource_priority_cmp
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int resource_priority_cmp(const void *a, const void *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:330,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:338,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - owner
    argTypes:
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 339
    functionName: ResourceOwnerSort
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - Assert
    - qsort
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerSort(ResourceOwner owner)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:356,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:366,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:386,1
    - Dst: ResourceOwnerDesc*::DebugPrint
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:393,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:394,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:394,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:395,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:396,1
    - Dst: ResourceOwnerDesc*::ReleaseResource
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:410,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - owner
    - phase
    - printLeakWarnings
    argTypes:
    - ResourceOwner
    - ResourceReleasePhase
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 412
    functionName: ResourceOwnerReleaseAll
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - pfree
    - psprintf
    - ResourceOwnerDesc*::DebugPrint
    - ResourceOwnerDesc*::ReleaseResource
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void ResourceOwnerReleaseAll(ResourceOwner owner, ResourceReleasePhase
      phase,\n\t\t\t\t\t\tbool printLeakWarnings)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:432,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - parent
    - name
    argTypes:
    - ResourceOwner
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 446
    functionName: ResourceOwnerCreate
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 11
    functionsReached:
    - dlist_init
    - MemoryContextAllocZero
    linkageType: ''
    returnType: ResourceOwner
    signature: ResourceOwner ResourceOwnerCreate(ResourceOwner parent, const char
      *name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:466,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:487,1
    - Dst: RESOWNER_HASH_MAX_ITEMS
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:496,1
    - Dst: ResourceOwnerAddToHash
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:509,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:513,1
    - Dst: ResourceOwnerAddToHash
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:522,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - owner
    argTypes:
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 458
    functionDepth: 4
    functionLinenumber: 458
    functionLinenumberEnd: 523
    functionName: ResourceOwnerEnlarge
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 9
    functionsReached:
    - elog
    - pfree
    - Assert
    - ResourceOwnerAddToHash
    - RESOWNER_HASH_MAX_ITEMS
    - MemoryContextAllocZero
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerEnlarge(ResourceOwner owner)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:536,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:544,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - owner
    - value
    - kind
    argTypes:
    - ResourceOwner
    - Datum
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 557
    functionName: ResourceOwnerRemember
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 11
    functionsReached:
    - Assert
    - elog
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerRemember(ResourceOwner owner, Datum value, const
      ResourceOwnerDesc *kind)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:580,1
    - Dst: hash_resource_elem
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:604,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:628,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:629,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - owner
    - value
    - kind
    argTypes:
    - ResourceOwner
    - Datum
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 570
    functionDepth: 3
    functionLinenumber: 570
    functionLinenumberEnd: 630
    functionName: ResourceOwnerForget
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 8
    functionsReached:
    - elog
    - hash_resource_elem
    - Assert
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerForget(ResourceOwner owner, Datum value, const ResourceOwnerDesc
      *kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerReleaseInternal
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:671,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - owner
    - phase
    - isCommit
    - isTopLevel
    argTypes:
    - ResourceOwner
    - ResourceReleasePhase
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 664
    functionDepth: 1
    functionLinenumber: 664
    functionLinenumberEnd: 682
    functionName: ResourceOwnerRelease
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 11
    functionsReached:
    - elog
    - ResourceOwnerReleaseInternal
    linkageType: ''
    returnType: void
    signature: "void ResourceOwnerRelease(ResourceOwner owner,\n\t\t\t\t\t ResourceReleasePhase
      phase,\n\t\t\t\t\t bool isCommit,\n\t\t\t\t\t bool isTopLevel)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerReleaseInternal
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:709,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:710,1
    - Dst: ResourceOwnerSort
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:724,1
    - Dst: ResourceOwnerReleaseAll
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:744,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:746,1
    - Dst: dlist_head_node
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:748,1
    - Dst: pgaio_io_release_resowner
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:750,1
    - Dst: ProcReleaseLocks
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:764,1
    - Dst: ReleasePredicateLocks
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:765,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:778,1
    - Dst: LockReassignCurrentOwner
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:796,1
    - Dst: LockReleaseCurrentOwner
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:798,1
    - Dst: ResourceOwnerReleaseAll
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:806,1
    - Dst: ResourceReleaseCallbackItem*::callback
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:814,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 4
    argNames:
    - owner
    - phase
    - isCommit
    - isTopLevel
    argTypes:
    - ResourceOwner
    - ResourceReleasePhase
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 684
    functionDepth: 3
    functionLinenumber: 684
    functionLinenumberEnd: 818
    functionName: ResourceOwnerReleaseInternal
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 2
    functionsReached:
    - ReleasePredicateLocks
    - dlist_is_empty
    - ProcReleaseLocks
    - LockReleaseCurrentOwner
    - ResourceReleaseCallbackItem*::callback
    - Assert
    - ResourceOwnerReleaseAll
    - LockReassignCurrentOwner
    - dlist_head_node
    - pgaio_io_release_resowner
    - ResourceOwnerSort
    - ResourceOwnerReleaseInternal
    linkageType: ''
    returnType: void
    signature: "void ResourceOwnerReleaseInternal(ResourceOwner owner,\n\t\t\t\t\t\t\t
      ResourceReleasePhase phase,\n\t\t\t\t\t\t\t bool isCommit,\n\t\t\t\t\t\t\t bool
      isTopLevel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:830,1
    - Dst: ResourceOwnerDesc*::ReleaseResource
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:850,1
    - Dst: ResourceOwnerDesc*::ReleaseResource
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:865,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - owner
    - kind
    argTypes:
    - ResourceOwner
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 869
    functionName: ResourceOwnerReleaseAllOfKind
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - ResourceOwnerDesc*::ReleaseResource
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerReleaseAllOfKind(ResourceOwner owner, const ResourceOwnerDesc
      *kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:881,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:884,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:885,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:886,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:893,1
    - Dst: ResourceOwnerNewParent
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:900,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:904,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:905,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - owner
    argTypes:
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 877
    functionDepth: 1
    functionLinenumber: 877
    functionLinenumberEnd: 906
    functionName: ResourceOwnerDelete
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 12
    functionsReached:
    - Assert
    - pfree
    - ResourceOwnerNewParent
    - ResourceOwnerDelete
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerDelete(ResourceOwner owner)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - owner
    argTypes:
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 915
    functionName: ResourceOwnerGetParent
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ResourceOwner
    signature: ResourceOwner ResourceOwnerGetParent(ResourceOwner owner)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:947,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - owner
    - newparent
    argTypes:
    - ResourceOwner
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 957
    functionName: ResourceOwnerNewParent
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: "void ResourceOwnerNewParent(ResourceOwner owner,\n\t\t\t\t\t   ResourceOwner
      newparent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - ResourceReleaseCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 979
    functionName: RegisterResourceReleaseCallback
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: void RegisterResourceReleaseCallback(ResourceReleaseCallback callback,
      void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:996,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - ResourceReleaseCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 981
    functionDepth: 0
    functionLinenumber: 981
    functionLinenumberEnd: 1000
    functionName: UnregisterResourceReleaseCallback
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void UnregisterResourceReleaseCallback(ResourceReleaseCallback callback,
      void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1009,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1010,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1005
    functionDepth: 2
    functionLinenumber: 1005
    functionLinenumberEnd: 1018
    functionName: CreateAuxProcessResourceOwner
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 1
    functionsReached:
    - Assert
    - on_shmem_exit
    - ResourceOwnerCreate
    linkageType: ''
    returnType: void
    signature: void CreateAuxProcessResourceOwner(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1032,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1035,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1025
    functionDepth: 2
    functionLinenumber: 1025
    functionLinenumberEnd: 1044
    functionName: ReleaseAuxProcessResources
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 3
    functionsReached:
    - ResourceOwnerRelease
    linkageType: ''
    returnType: void
    signature: void ReleaseAuxProcessResources(bool isCommit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseAuxProcessResources
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1050
    functionDepth: 3
    functionLinenumber: 1050
    functionLinenumberEnd: 1056
    functionName: ReleaseAuxProcessResourcesCallback
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - ReleaseAuxProcessResources
    linkageType: ''
    returnType: void
    signature: void ReleaseAuxProcessResourcesCallback(int code, Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1071,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - owner
    - locallock
    argTypes:
    - ResourceOwner
    - LOCALLOCK*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1068
    functionDepth: 1
    functionLinenumber: 1068
    functionLinenumberEnd: 1083
    functionName: ResourceOwnerRememberLock
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerRememberLock(ResourceOwner owner, LOCALLOCK *locallock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1096,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - owner
    - locallock
    argTypes:
    - ResourceOwner
    - LOCALLOCK*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1108
    functionName: ResourceOwnerForgetLock
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - Assert
    - elog
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerForgetLock(ResourceOwner owner, LOCALLOCK *locallock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - ioh_node
    argTypes:
    - ResourceOwner
    - struct dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1110
    functionDepth: 2
    functionLinenumber: 1110
    functionLinenumberEnd: 1114
    functionName: ResourceOwnerRememberAioHandle
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - dlist_push_tail
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerRememberAioHandle(ResourceOwner owner, struct dlist_node
      *ioh_node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlist_delete_from
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - ioh_node
    argTypes:
    - ResourceOwner
    - struct dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1116
    functionDepth: 2
    functionLinenumber: 1116
    functionLinenumberEnd: 1120
    functionName: ResourceOwnerForgetAioHandle
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - dlist_delete_from
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerForgetAioHandle(ResourceOwner owner, struct dlist_node
      *ioh_node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_net_pton_ipv4
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:67,1
    - Dst: inet_cidr_pton_ipv4
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:68,1
    - Dst: inet_net_pton_ipv6
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:71,1
    - Dst: inet_cidr_pton_ipv6
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - af
    - src
    - dst
    - size
    argTypes:
    - int
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: pg_inet_net_pton
    functionSourceFile: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    functionUses: 0
    functionsReached:
    - inet_cidr_pton_ipv4
    - inet_cidr_pton_ipv6
    - inet_net_pton_ipv6
    - inet_net_pton_ipv4
    linkageType: ''
    returnType: int
    signature: int pg_inet_net_pton(int af, const char *src, void *dst, size_t size)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:109,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:116,1
    - Dst: pg_ascii_tolower
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:118,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:119,1
    - Dst: assert
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:120,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:140,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:148,1
    - Dst: assert
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:149,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:155,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:164,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:172,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:179,1
    - Dst: assert
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:180,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:183,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 112
    argCount: 3
    argNames:
    - src
    - dst
    - size
    argTypes:
    - char*
    - u_char*
    - size_t
    assertStmts:
    - condition: (n >= 0 && n <= 15)
      pos:
        line_end: 119
        line_start: 119
        source_file: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    - condition: (n >= 0 && n <= 9)
      pos:
        line_end: 148
        line_start: 148
        source_file: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    - condition: (n >= 0 && n <= 9)
      pos:
        line_end: 179
        line_start: 179
        source_file: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    constantsTouched: []
    func_position:
      end: 238
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 238
    functionName: inet_cidr_pton_ipv4
    functionSourceFile: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    functionUses: 1
    functionsReached:
    - isdigit
    - strchr
    - assert
    - pg_ascii_tolower
    - isxdigit
    linkageType: ''
    returnType: int
    signature: int inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:269,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:274,1
    - Dst: assert
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:275,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:280,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:292,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:299,1
    - Dst: assert
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:300,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:303,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 65
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - char*
    - u_char*
    assertStmts:
    - condition: (n >= 0 && n <= 9)
      pos:
        line_end: 274
        line_start: 274
        source_file: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    - condition: (n >= 0 && n <= 9)
      pos:
        line_end: 299
        line_start: 299
        source_file: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    constantsTouched: []
    func_position:
      end: 344
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 344
    functionName: inet_net_pton_ipv4
    functionSourceFile: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    functionUses: 1
    functionsReached:
    - assert
    - isdigit
    - strchr
    linkageType: ''
    returnType: int
    signature: int inet_net_pton_ipv4(const char *src, u_char *dst)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:360,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - src
    - bitsp
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 377
    functionName: getbits
    functionSourceFile: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: int
    signature: int getbits(const char *src, int *bitsp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:394,1
    - Dst: getbits
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:411,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 3
    argNames:
    - src
    - dst
    - bitsp
    argTypes:
    - char*
    - u_char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 424
    functionName: getv4
    functionSourceFile: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    functionUses: 0
    functionsReached:
    - getbits
    - strchr
    linkageType: ''
    returnType: int
    signature: int getv4(const char *src, u_char *dst, int *bitsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_cidr_pton_ipv6
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - char*
    - u_char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 430
    functionName: inet_net_pton_ipv6
    functionSourceFile: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    functionUses: 1
    functionsReached:
    - inet_cidr_pton_ipv6
    linkageType: ''
    returnType: int
    signature: int inet_net_pton_ipv6(const char *src, u_char *dst)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:456,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:472,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:473,1
    - Dst: getv4
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:505,1
    - Dst: getbits
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:511,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/inet_net_pton.c:551,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 93
    argCount: 3
    argNames:
    - src
    - dst
    - size
    argTypes:
    - char*
    - u_char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 436
    functionDepth: 2
    functionLinenumber: 436
    functionLinenumberEnd: 562
    functionName: inet_cidr_pton_ipv6
    functionSourceFile: /src/postgres/src/backend/utils/adt/inet_net_pton.c
    functionUses: 2
    functionsReached:
    - memcpy
    - strchr
    - getbits
    - getv4
    - memset
    linkageType: ''
    returnType: int
    signature: int inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/format_type.c:68,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/format_type.c:69,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/format_type.c:71,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/format_type.c:73,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/format_type.c:77,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/utils/adt/format_type.c:81,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/format_type.c:83,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/format_type.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 84
    functionName: format_type
    functionSourceFile: /src/postgres/src/backend/utils/adt/format_type.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - format_type_extended
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum format_type(PG_FUNCTION_ARGS)
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:126,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/format_type.c:129,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/format_type.c:129,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/format_type.c:130,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:135,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/format_type.c:137,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/format_type.c:139,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/backend/utils/adt/format_type.c:149,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/format_type.c:153,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/format_type.c:154,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/format_type.c:154,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/format_type.c:155,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:160,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/format_type.c:162,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/format_type.c:164,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:190,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:200,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:204,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:209,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:219,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:223,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:227,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:231,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:235,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:239,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:244,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:246,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:251,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:253,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:258,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:260,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:265,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:267,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:272,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:274,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:279,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:281,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:286,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:288,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:293,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:295,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/format_type.c:299,1
    - Dst: TypeIsVisible
      Src: /src/postgres/src/backend/utils/adt/format_type.c:315,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/utils/adt/format_type.c:318,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/format_type.c:320,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/utils/adt/format_type.c:322,1
    - Dst: printTypmod
      Src: /src/postgres/src/backend/utils/adt/format_type.c:325,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/format_type.c:329,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/format_type.c:331,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 124
    argCount: 3
    argNames:
    - type_oid
    - typemod
    - flags
    argTypes:
    - Oid
    - int32
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 334
    functionName: format_type_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/format_type.c
    functionUses: 3
    functionsReached:
    - SearchSysCache1
    - elog
    - IsTrueArrayType
    - printTypmod
    - get_namespace_name_or_temp
    - HeapTupleIsValid
    - quote_qualified_identifier
    - pstrdup
    - psprintf
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - TypeIsVisible
    - ObjectIdGetDatum
    linkageType: ''
    returnType: char
    signature: 'char *

      format_type_extended(Oid type_oid, int32 typemod, uint16 flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/utils/adt/format_type.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type_oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 342
    functionDepth: 3
    functionLinenumber: 342
    functionLinenumberEnd: 346
    functionName: format_type_be
    functionSourceFile: /src/postgres/src/backend/utils/adt/format_type.c
    functionUses: 68
    functionsReached:
    - format_type_extended
    linkageType: ''
    returnType: char
    signature: 'char *

      format_type_be(Oid type_oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/utils/adt/format_type.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type_oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 352
    functionDepth: 3
    functionLinenumber: 352
    functionLinenumberEnd: 356
    functionName: format_type_be_qualified
    functionSourceFile: /src/postgres/src/backend/utils/adt/format_type.c
    functionUses: 1
    functionsReached:
    - format_type_extended
    linkageType: ''
    returnType: char
    signature: 'char *

      format_type_be_qualified(Oid type_oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/utils/adt/format_type.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - type_oid
    - typemod
    argTypes:
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 361
    functionDepth: 3
    functionLinenumber: 361
    functionLinenumberEnd: 365
    functionName: format_type_with_typemod
    functionSourceFile: /src/postgres/src/backend/utils/adt/format_type.c
    functionUses: 3
    functionsReached:
    - format_type_extended
    linkageType: ''
    returnType: char
    signature: 'char *

      format_type_with_typemod(Oid type_oid, int32 typemod)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/format_type.c:376,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/format_type.c:381,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/format_type.c:388,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/format_type.c:388,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/format_type.c:389,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/format_type.c:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - typname
    - typmod
    - typmodout
    argTypes:
    - char*
    - int32
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 394
    functionName: printTypmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/format_type.c
    functionUses: 1
    functionsReached:
    - Assert
    - Int32GetDatum
    - psprintf
    - OidFunctionCall1
    - DatumGetCString
    linkageType: ''
    returnType: char
    signature: 'char *

      printTypmod(const char *typname, int32 typmod, Oid typmodout)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/format_type.c:425,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/format_type.c:425,1
    - Dst: numeric_maximum_size
      Src: /src/postgres/src/backend/utils/adt/format_type.c:429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - type_oid
    - typemod
    argTypes:
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 440
    functionName: type_maximum_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/format_type.c
    functionUses: 1
    functionsReached:
    - GetDatabaseEncoding
    - numeric_maximum_size
    - pg_encoding_max_length
    linkageType: ''
    returnType: int32
    signature: int32 type_maximum_size(Oid type_oid, int32 typemod)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/format_type.c:449,1
    - Dst: check_valid_oidvector
      Src: /src/postgres/src/backend/utils/adt/format_type.c:457,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/format_type.c:461,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/utils/adt/format_type.c:467,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/format_type.c:469,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/format_type.c:474,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/format_type.c:480,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/format_type.c:483,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/format_type.c:487,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/format_type.c:487,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 446
    functionDepth: 3
    functionLinenumber: 446
    functionLinenumberEnd: 488
    functionName: oidvectortypes
    functionSourceFile: /src/postgres/src/backend/utils/adt/format_type.c
    functionUses: 0
    functionsReached:
    - strcat
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - repalloc
    - format_type_extended
    - strlen
    - check_valid_oidvector
    - palloc
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectortypes(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArrayGetIntegerTypmods
      Src: /src/postgres/src/backend/utils/adt/date.c:49,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:56,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:57,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:58,1
    - Dst: anytime_typmod_check
      Src: /src/postgres/src/backend/utils/adt/date.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - istz
    - ta
    argTypes:
    - bool
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 61
    functionName: anytime_typmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - ArrayGetIntegerTypmods
    - anytime_typmod_check
    - errmsg
    linkageType: ''
    returnType: int32
    signature: int32 anytime_typmodin(bool istz, ArrayType *ta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:68,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:69,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:70,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:74,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:75,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - istz
    - typmod
    argTypes:
    - bool
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 83
    functionName: anytime_typmod_check
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: int32
    signature: int32 anytime_typmod_check(bool istz, int32 typmod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/date.c:92,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/date.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - istz
    - typmod
    argTypes:
    - bool
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 95
    functionName: anytime_typmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - psprintf
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      anytime_typmodout(bool istz, int32 typmod)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:110,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:125,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:128,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/date.c:132,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:133,1
    - Dst: GetEpochTime
      Src: /src/postgres/src/backend/utils/adt/date.c:142,1
    - Dst: DATE_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:146,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:147,1
    - Dst: DATE_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:150,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:151,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/date.c:154,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:155,1
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/date.c:159,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:162,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:164,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:167,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:168,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:169,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:170,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:172,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 173
    functionName: date_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - IS_VALID_JULIAN
    - ParseDateTime
    - ereturn
    - DATE_NOBEGIN
    - errcode
    - PG_GETARG_CSTRING
    - DATE_NOEND
    - DateTimeParseError
    - date2j
    - errmsg
    - IS_VALID_DATE
    - PG_RETURN_NULL
    - DecodeDateTime
    - PG_RETURN_DATEADT
    - GetEpochTime
    linkageType: ''
    returnType: Datum
    signature: Datum date_in(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:182,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:188,1
    - Dst: EncodeSpecialDate
      Src: /src/postgres/src/backend/utils/adt/date.c:189,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/date.c:192,1
    - Dst: EncodeDateOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:194,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/date.c:197,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 199
    functionName: date_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - EncodeSpecialDate
    - DATE_NOT_FINITE
    - pstrdup
    - PG_RETURN_CSTRING
    - PG_GETARG_DATEADT
    - EncodeDateOnly
    - j2date
    linkageType: ''
    returnType: Datum
    signature: Datum date_out(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/date.c:207,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/date.c:210,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:213,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:215,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:216,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:217,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:218,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:220,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 221
    functionName: date_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errcode
    - pq_getmsgint
    - DATE_NOT_FINITE
    - ereport
    - errmsg
    - IS_VALID_DATE
    - PG_GETARG_POINTER
    - PG_RETURN_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:229,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:232,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/date.c:233,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/date.c:234,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 235
    functionName: date_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_send(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:248,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:249,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:250,1
    - Dst: pg_neg_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:258,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:259,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:260,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:261,1
    - Dst: ValidateDate
      Src: /src/postgres/src/backend/utils/adt/date.c:266,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:269,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:270,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:271,1
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/date.c:275,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:276,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:277,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:278,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:281,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:284,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:285,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:286,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:287,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:290,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 291
    functionName: make_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - IS_VALID_JULIAN
    - pg_neg_s32_overflow
    - errcode
    - ereport
    - date2j
    - errmsg
    - ValidateDate
    - IS_VALID_DATE
    - PG_RETURN_DATEADT
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum make_date(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:299,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/date.c:300,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:301,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/date.c:302,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/date.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dt
    - str
    argTypes:
    - DateADT
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 305
    functionName: EncodeSpecialDate
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - elog
    - strcpy
    - DATE_IS_NOEND
    - DATE_IS_NOBEGIN
    linkageType: ''
    returnType: void
    signature: void EncodeSpecialDate(DateADT dt, char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:321,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:332,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 339
    functionName: GetSQLCurrentDate
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - GetCurrentDateTime
    - date2j
    linkageType: ''
    returnType: DateADT
    signature: DateADT GetSQLCurrentDate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimeUsec
      Src: /src/postgres/src/backend/utils/adt/date.c:353,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:355,1
    - Dst: tm2timetz
      Src: /src/postgres/src/backend/utils/adt/date.c:356,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 359
    functionName: GetSQLCurrentTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - AdjustTimeForTypmod
    - GetCurrentTimeUsec
    - tm2timetz
    - palloc_object
    linkageType: ''
    returnType: TimeTzADT
    signature: 'TimeTzADT *

      GetSQLCurrentTime(int32 typmod)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimeUsec
      Src: /src/postgres/src/backend/utils/adt/date.c:373,1
    - Dst: tm2time
      Src: /src/postgres/src/backend/utils/adt/date.c:375,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 378
    functionName: GetSQLLocalTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - AdjustTimeForTypmod
    - GetCurrentTimeUsec
    - tm2time
    linkageType: ''
    returnType: TimeADT
    signature: TimeADT GetSQLLocalTime(int32 typmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:388,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:389,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 392
    functionName: date_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:397,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:398,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 401
    functionName: date_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:406,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:407,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 410
    functionName: date_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:415,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:416,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 419
    functionName: date_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:424,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:425,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 428
    functionName: date_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:433,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:434,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 437
    functionName: date_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_ge(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:442,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:443,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:446,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:448,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 450
    functionName: date_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum date_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/date.c:455,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/date.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 459
    functionName: date_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum date_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetDateADT
      Src: /src/postgres/src/backend/utils/adt/date.c:464,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 461
    functionDepth: 2
    functionLinenumber: 461
    functionLinenumberEnd: 475
    functionName: date_decrement
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DatumGetDateADT
    - DateADTGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum date_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetDateADT
      Src: /src/postgres/src/backend/utils/adt/date.c:480,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 477
    functionDepth: 2
    functionLinenumber: 477
    functionLinenumberEnd: 491
    functionName: date_increment
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DatumGetDateADT
    - DateADTGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum date_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/date.c:496,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:500,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:501,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/date.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 493
    functionDepth: 2
    functionLinenumber: 493
    functionLinenumberEnd: 504
    functionName: date_skipsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - DateADTGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum date_skipsupport(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/date.c:509,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 506
    functionDepth: 2
    functionLinenumber: 506
    functionLinenumberEnd: 510
    functionName: hashdate
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - hash_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hashdate(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/utils/adt/date.c:515,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:515,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/date.c:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 512
    functionDepth: 2
    functionLinenumber: 512
    functionLinenumberEnd: 516
    functionName: hashdateextended
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - hash_uint32_extended
    - PG_GETARG_DATEADT
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hashdateextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:521,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:523,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 524
    functionName: date_finite
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DATE_NOT_FINITE
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_finite(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:529,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:530,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 533
    functionName: date_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATEADT
    - PG_GETARG_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:538,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:539,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 542
    functionName: date_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATEADT
    - PG_GETARG_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_smaller(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:550,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:551,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:553,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:553,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:554,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:555,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:556,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:558,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 547
    functionDepth: 2
    functionLinenumber: 547
    functionLinenumberEnd: 559
    functionName: date_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - DATE_NOT_FINITE
    - ereport
    - errmsg
    - PG_GETARG_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_mi(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:568,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:569,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:572,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:573,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:579,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:580,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:581,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:582,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:584,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 565
    functionDepth: 2
    functionLinenumber: 565
    functionLinenumberEnd: 585
    functionName: date_pli
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errcode
    - DATE_NOT_FINITE
    - ereport
    - PG_GETARG_DATEADT
    - errmsg
    - IS_VALID_DATE
    - PG_GETARG_INT32
    - PG_RETURN_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_pli(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:593,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:594,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:597,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:598,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:604,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:605,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:606,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:607,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:609,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 590
    functionDepth: 2
    functionLinenumber: 590
    functionLinenumberEnd: 610
    functionName: date_mii
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errcode
    - DATE_NOT_FINITE
    - ereport
    - PG_GETARG_DATEADT
    - errmsg
    - IS_VALID_DATE
    - PG_GETARG_INT32
    - PG_RETURN_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_mii(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:631,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:632,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:633,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:634,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:643,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:644,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:645,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:646,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - dateVal
    - escontext
    argTypes:
    - DateADT
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 626
    functionDepth: 2
    functionLinenumber: 626
    functionLinenumberEnd: 654
    functionName: date2timestamp_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errcode
    - TIMESTAMP_NOEND
    - DATE_IS_NOBEGIN
    - DATE_IS_NOEND
    - errmsg
    - ereturn
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp date2timestamp_safe(DateADT dateVal, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: date2timestamp_safe
      Src: /src/postgres/src/backend/utils/adt/date.c:662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dateVal
    argTypes:
    - DateADT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 659
    functionDepth: 3
    functionLinenumber: 659
    functionLinenumberEnd: 663
    functionName: date2timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp_safe
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz date2timestamp(DateADT dateVal)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:683,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:684,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:685,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:686,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:695,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:696,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:697,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:698,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/date.c:701,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/date.c:706,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:714,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:717,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:719,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:721,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:722,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:723,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - dateVal
    - escontext
    argTypes:
    - DateADT
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 675
    functionDepth: 2
    functionLinenumber: 675
    functionLinenumberEnd: 728
    functionName: date2timestamptz_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errcode
    - TIMESTAMP_NOEND
    - IS_VALID_TIMESTAMP
    - DATE_IS_NOBEGIN
    - DATE_IS_NOEND
    - errmsg
    - DetermineTimeZoneOffset
    - ereturn
    - j2date
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz date2timestamptz_safe(DateADT dateVal, Node *escontext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:745,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:747,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - dateVal
    argTypes:
    - DateADT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 740
    functionDepth: 1
    functionLinenumber: 740
    functionLinenumberEnd: 756
    functionName: date2timestamp_no_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DATE_IS_NOEND
    - DATE_IS_NOBEGIN
    linkageType: ''
    returnType: double
    signature: double date2timestamp_no_overflow(DateADT dateVal)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: date2timestamp_safe
      Src: /src/postgres/src/backend/utils/adt/date.c:769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/date.c:772,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:772,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:775,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dateVal
    - dt2
    argTypes:
    - DateADT
    - Timestamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 763
    functionDepth: 3
    functionLinenumber: 763
    functionLinenumberEnd: 779
    functionName: date_cmp_timestamp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - Assert
    - date2timestamp_safe
    - TIMESTAMP_IS_NOEND
    - timestamp_cmp_internal
    linkageType: ''
    returnType: int32
    signature: int32 date_cmp_timestamp_internal(DateADT dateVal, Timestamp dt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:784,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:785,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:787,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 781
    functionDepth: 4
    functionLinenumber: 781
    functionLinenumberEnd: 788
    functionName: date_eq_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum date_eq_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:793,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:794,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:796,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 790
    functionDepth: 4
    functionLinenumber: 790
    functionLinenumberEnd: 797
    functionName: date_ne_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum date_ne_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:802,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:803,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:805,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 799
    functionDepth: 4
    functionLinenumber: 799
    functionLinenumberEnd: 806
    functionName: date_lt_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum date_lt_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:811,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:812,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:814,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 808
    functionDepth: 4
    functionLinenumber: 808
    functionLinenumberEnd: 815
    functionName: date_gt_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum date_gt_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:820,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:821,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:823,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 817
    functionDepth: 4
    functionLinenumber: 817
    functionLinenumberEnd: 824
    functionName: date_le_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum date_le_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:829,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:830,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:832,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 826
    functionDepth: 4
    functionLinenumber: 826
    functionLinenumberEnd: 833
    functionName: date_ge_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum date_ge_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:838,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:839,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:841,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 835
    functionDepth: 4
    functionLinenumber: 835
    functionLinenumberEnd: 842
    functionName: date_cmp_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_INT32
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum date_cmp_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: date2timestamptz_safe
      Src: /src/postgres/src/backend/utils/adt/date.c:850,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:854,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:857,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:859,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:862,1
    - Dst: timestamptz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:866,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - dateVal
    - dt2
    argTypes:
    - DateADT
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 844
    functionDepth: 3
    functionLinenumber: 844
    functionLinenumberEnd: 867
    functionName: date_cmp_timestamptz_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timestamptz_cmp_internal
    - date2timestamptz_safe
    - TIMESTAMP_IS_NOEND
    - TIMESTAMP_IS_NOBEGIN
    linkageType: ''
    returnType: int32
    signature: int32 date_cmp_timestamptz_internal(DateADT dateVal, TimestampTz dt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:872,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:873,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:875,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 869
    functionDepth: 4
    functionLinenumber: 869
    functionLinenumberEnd: 876
    functionName: date_eq_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_eq_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:881,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:882,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:884,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 878
    functionDepth: 4
    functionLinenumber: 878
    functionLinenumberEnd: 885
    functionName: date_ne_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_ne_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:890,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:891,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:893,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 887
    functionDepth: 4
    functionLinenumber: 887
    functionLinenumberEnd: 894
    functionName: date_lt_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_lt_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:899,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:900,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:902,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 896
    functionDepth: 4
    functionLinenumber: 896
    functionLinenumberEnd: 903
    functionName: date_gt_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_gt_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:908,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:909,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:911,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 905
    functionDepth: 4
    functionLinenumber: 905
    functionLinenumberEnd: 912
    functionName: date_le_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_le_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:917,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:918,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:920,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 914
    functionDepth: 4
    functionLinenumber: 914
    functionLinenumberEnd: 921
    functionName: date_ge_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum date_ge_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:926,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:927,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:929,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 923
    functionDepth: 4
    functionLinenumber: 923
    functionLinenumberEnd: 930
    functionName: date_cmp_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum date_cmp_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:935,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:936,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:938,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 932
    functionDepth: 4
    functionLinenumber: 932
    functionLinenumberEnd: 939
    functionName: timestamp_eq_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_eq_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:944,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:945,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:947,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 941
    functionDepth: 4
    functionLinenumber: 941
    functionLinenumberEnd: 948
    functionName: timestamp_ne_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_ne_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:953,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:954,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:956,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 950
    functionDepth: 4
    functionLinenumber: 950
    functionLinenumberEnd: 957
    functionName: timestamp_lt_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_lt_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:962,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:963,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:965,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:965,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 959
    functionDepth: 4
    functionLinenumber: 959
    functionLinenumberEnd: 966
    functionName: timestamp_gt_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_gt_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:971,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:972,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:974,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 968
    functionDepth: 4
    functionLinenumber: 968
    functionLinenumberEnd: 975
    functionName: timestamp_le_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_le_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:980,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:981,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:983,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 977
    functionDepth: 4
    functionLinenumber: 977
    functionLinenumberEnd: 984
    functionName: timestamp_ge_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_ge_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:989,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:990,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:992,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 986
    functionDepth: 4
    functionLinenumber: 986
    functionLinenumberEnd: 993
    functionName: timestamp_cmp_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_INT32
    - date_cmp_timestamp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_cmp_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:998,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:999,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1001,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 995
    functionDepth: 4
    functionLinenumber: 995
    functionLinenumberEnd: 1002
    functionName: timestamptz_eq_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_eq_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:1007,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1008,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1010,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1004
    functionDepth: 4
    functionLinenumber: 1004
    functionLinenumberEnd: 1011
    functionName: timestamptz_ne_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_ne_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:1016,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1017,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1019,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1019,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 1013
    functionDepth: 4
    functionLinenumber: 1013
    functionLinenumberEnd: 1020
    functionName: timestamptz_lt_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_lt_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:1025,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1026,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1028,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1022
    functionDepth: 4
    functionLinenumber: 1022
    functionLinenumberEnd: 1029
    functionName: timestamptz_gt_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_gt_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:1034,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1035,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1037,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1031
    functionDepth: 4
    functionLinenumber: 1031
    functionLinenumberEnd: 1038
    functionName: timestamptz_le_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_le_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:1043,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1044,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1046,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1040
    functionDepth: 4
    functionLinenumber: 1040
    functionLinenumberEnd: 1047
    functionName: timestamptz_ge_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_ge_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:1052,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1053,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1055,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1049
    functionDepth: 4
    functionLinenumber: 1049
    functionLinenumberEnd: 1056
    functionName: timestamptz_cmp_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - date_cmp_timestamptz_internal
    - PG_GETARG_DATEADT
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_cmp_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1067,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1068,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:1069,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1070,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1071,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:1076,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:1077,1
    - Dst: DirectFunctionCall5
      Src: /src/postgres/src/backend/utils/adt/date.c:1079,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1080,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1081,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1082,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1083,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1064
    functionDepth: 4
    functionLinenumber: 1064
    functionLinenumberEnd: 1085
    functionName: in_range_date_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp
    - PG_GETARG_BOOL
    - DirectFunctionCall5
    - IntervalPGetDatum
    - TimestampGetDatum
    - PG_GETARG_DATEADT
    - PG_GETARG_INTERVAL_P
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_date_interval(PG_FUNCTION_ARGS)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/date.c:1095,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1096,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/date.c:1105,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/date.c:1105,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/date.c:1106,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/date.c:1109,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/date.c:1111,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:1113,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1125,1
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1136,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:1137,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/date.c:1137,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/date.c:1137,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1138,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1139,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1140,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:1142,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/date.c:1142,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/date.c:1142,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1143,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1144,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1147,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1149,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:1150,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/date.c:1155,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/date.c:1172,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/date.c:1212,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/date.c:1220,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:1226,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:1226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1232,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:1233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1248,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:1249,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1257,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:1258,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:1262,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:1262,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 101
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1092
    functionDepth: 4
    functionLinenumber: 1092
    functionLinenumberEnd: 1263
    functionName: extract_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errcode
    - VARDATA_ANY
    - date2isoyear
    - j2day
    - j2date
    - DATE_IS_NOBEGIN
    - Int32GetDatum
    - DATE_NOT_FINITE
    - VARSIZE_ANY_EXHDR
    - errmsg
    - DirectFunctionCall3
    - PG_RETURN_NUMERIC
    - int64_to_numeric
    - ObjectIdGetDatum
    - DecodeUnits
    - date2isoweek
    - DatumGetNumeric
    - CStringGetDatum
    - ereport
    - PG_GETARG_DATEADT
    - format_type_be
    - DecodeSpecial
    - date2j
    - PG_RETURN_NULL
    - downcase_truncate_identifier
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum extract_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1276,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:1277,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:1280,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/date.c:1282,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1283,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1273
    functionDepth: 4
    functionLinenumber: 1273
    functionLinenumberEnd: 1285
    functionName: date_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp
    - TimestampGetDatum
    - PG_GETARG_DATEADT
    - PointerGetDatum
    - PG_GETARG_INTERVAL_P
    - DirectFunctionCall2
    linkageType: ''
    returnType: Datum
    signature: Datum date_pl_interval(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1297,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:1298,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:1301,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/date.c:1303,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1304,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1294
    functionDepth: 4
    functionLinenumber: 1294
    functionLinenumberEnd: 1306
    functionName: date_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp
    - TimestampGetDatum
    - PG_GETARG_DATEADT
    - PointerGetDatum
    - PG_GETARG_INTERVAL_P
    - DirectFunctionCall2
    linkageType: ''
    returnType: Datum
    signature: Datum date_mi_interval(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1315,1
    - Dst: date2timestamp_safe
      Src: /src/postgres/src/backend/utils/adt/date.c:1318,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/date.c:1319,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1320,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:1322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1312
    functionDepth: 3
    functionLinenumber: 1312
    functionLinenumberEnd: 1323
    functionName: date_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_NULL
    - date2timestamp_safe
    linkageType: ''
    returnType: Datum
    signature: Datum date_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:1332,1
    - Dst: timestamp2date_safe
      Src: /src/postgres/src/backend/utils/adt/date.c:1335,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/date.c:1336,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1337,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1329
    functionDepth: 1
    functionLinenumber: 1329
    functionLinenumberEnd: 1340
    functionName: timestamp_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_GETARG_TIMESTAMP
    - timestamp2date_safe
    - PG_RETURN_NULL
    - PG_RETURN_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_date(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1363,1
    - Dst: DATE_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1364,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1365,1
    - Dst: DATE_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1366,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:1369,1
    - Dst: DATE_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1372,1
    - Dst: DATE_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1374,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:1376,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1377,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1378,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:1381,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - timestamp
    - escontext
    argTypes:
    - Timestamp
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1355
    functionDepth: 2
    functionLinenumber: 1355
    functionLinenumberEnd: 1385
    functionName: timestamp2date_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - TIMESTAMP_IS_NOEND
    - DATE_NOBEGIN
    - errcode
    - DATE_NOEND
    - timestamp2tm
    - date2j
    - TIMESTAMP_IS_NOBEGIN
    - errmsg
    - ereturn
    linkageType: ''
    returnType: DateADT
    signature: DateADT timestamp2date_safe(Timestamp timestamp, Node *escontext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1395,1
    - Dst: date2timestamptz_safe
      Src: /src/postgres/src/backend/utils/adt/date.c:1398,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/date.c:1399,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1400,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:1402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1392
    functionDepth: 3
    functionLinenumber: 1392
    functionLinenumberEnd: 1403
    functionName: date_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_DATEADT
    - PG_RETURN_NULL
    - date2timestamptz_safe
    linkageType: ''
    returnType: Datum
    signature: Datum date_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:1413,1
    - Dst: timestamptz2date_safe
      Src: /src/postgres/src/backend/utils/adt/date.c:1416,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/date.c:1417,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1418,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1410
    functionDepth: 1
    functionLinenumber: 1410
    functionLinenumberEnd: 1421
    functionName: timestamptz_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_GETARG_TIMESTAMP
    - timestamptz2date_safe
    - PG_RETURN_NULL
    - PG_RETURN_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_date(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1445,1
    - Dst: DATE_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1446,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1447,1
    - Dst: DATE_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1448,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:1451,1
    - Dst: DATE_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1454,1
    - Dst: DATE_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1456,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:1458,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1459,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1460,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:1463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - timestamp
    - escontext
    argTypes:
    - TimestampTz
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1436
    functionDepth: 2
    functionLinenumber: 1436
    functionLinenumberEnd: 1467
    functionName: timestamptz2date_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - TIMESTAMP_IS_NOEND
    - DATE_NOBEGIN
    - errcode
    - DATE_NOEND
    - timestamp2tm
    - date2j
    - TIMESTAMP_IS_NOBEGIN
    - errmsg
    - ereturn
    linkageType: ''
    returnType: DateADT
    signature: DateADT timestamptz2date_safe(TimestampTz timestamp, Node *escontext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:1477,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/date.c:1479,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1481,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:1496,1
    - Dst: DecodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:1499,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/date.c:1503,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1504,1
    - Dst: tm2time
      Src: /src/postgres/src/backend/utils/adt/date.c:1507,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:1508,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1474
    functionDepth: 1
    functionLinenumber: 1474
    functionLinenumberEnd: 1511
    functionName: time_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - ParseDateTime
    - PG_RETURN_TIMEADT
    - AdjustTimeForTypmod
    - PG_GETARG_CSTRING
    - tm2time
    - DateTimeParseError
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - DecodeTimeOnly
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum time_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tm
    - fsec
    - result
    argTypes:
    - struct pg_tm*
    - fsec_t
    - TimeADT*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1517
    functionDepth: 0
    functionLinenumber: 1517
    functionLinenumberEnd: 1523
    functionName: tm2time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tm2time(struct pg_tm *tm, fsec_t fsec, TimeADT *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 6
    argCount: 4
    argNames:
    - hour
    - min
    - sec
    - fsec
    argTypes:
    - int
    - int
    - int
    - fsec_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1529
    functionDepth: 0
    functionLinenumber: 1529
    functionLinenumberEnd: 1548
    functionName: time_overflows
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool time_overflows(int hour, int min, int sec, fsec_t fsec)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/date.c:1567,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/date.c:1569,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 3
    argNames:
    - hour
    - min
    - sec
    argTypes:
    - int
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1554
    functionDepth: 1
    functionLinenumber: 1554
    functionLinenumberEnd: 1583
    functionName: float_time_overflows
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - isnan
    - rint
    linkageType: ''
    returnType: bool
    signature: bool float_time_overflows(int hour, int min, double sec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - time
    - tm
    - fsec
    argTypes:
    - TimeADT
    - struct pg_tm*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1592
    functionDepth: 0
    functionLinenumber: 1592
    functionLinenumberEnd: 1603
    functionName: time2tm
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1608,1
    - Dst: time2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:1615,1
    - Dst: EncodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:1616,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/date.c:1618,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:1619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1620
      start: 1605
    functionDepth: 1
    functionLinenumber: 1605
    functionLinenumberEnd: 1620
    functionName: time_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - EncodeTimeOnly
    - pstrdup
    - PG_RETURN_CSTRING
    - time2tm
    - PG_GETARG_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum time_out(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/date.c:1628,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/date.c:1631,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1633,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/date.c:1636,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1638,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1639,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1640,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1641,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:1643,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1645,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1625
    functionDepth: 2
    functionLinenumber: 1625
    functionLinenumberEnd: 1646
    functionName: time_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMEADT
    - INT64CONST
    - errcode
    - AdjustTimeForTypmod
    - ereport
    - PG_GETARG_OID
    - errmsg
    - pq_getmsgint64
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum time_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1654,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:1657,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/date.c:1658,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/date.c:1659,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:1659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1651
    functionDepth: 4
    functionLinenumber: 1651
    functionLinenumberEnd: 1660
    functionName: time_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - PG_GETARG_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum time_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/date.c:1665,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1667,1
    - Dst: anytime_typmodin
      Src: /src/postgres/src/backend/utils/adt/date.c:1667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1662
    functionDepth: 3
    functionLinenumber: 1662
    functionLinenumberEnd: 1668
    functionName: timetypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - anytime_typmodin
    - PG_RETURN_INT32
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum timetypmodin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1673,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:1675,1
    - Dst: anytime_typmodout
      Src: /src/postgres/src/backend/utils/adt/date.c:1675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1676
      start: 1670
    functionDepth: 3
    functionLinenumber: 1670
    functionLinenumberEnd: 1676
    functionName: timetypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - anytime_typmodout
    - PG_GETARG_INT32
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum timetypmodout(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1684,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1685,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:1686,1
    - Dst: float_time_overflows
      Src: /src/postgres/src/backend/utils/adt/date.c:1690,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1691,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1692,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1693,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/date.c:1698,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1681
    functionDepth: 2
    functionLinenumber: 1681
    functionLinenumberEnd: 1701
    functionName: make_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - float_time_overflows
    - PG_GETARG_FLOAT8
    - errcode
    - PG_RETURN_TIMEADT
    - ereport
    - errmsg
    - rint
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum make_time(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/date.c:1713,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/date.c:1716,1
    - Dst: TemporalSimplify
      Src: /src/postgres/src/backend/utils/adt/date.c:1720,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/date.c:1723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1710
    functionDepth: 1
    functionLinenumber: 1710
    functionLinenumberEnd: 1724
    functionName: time_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - IsA
    - TemporalSimplify
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum time_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1734,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1735,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:1739,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1731
    functionDepth: 1
    functionLinenumber: 1731
    functionLinenumberEnd: 1742
    functionName: time_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - AdjustTimeForTypmod
    - PG_GETARG_INT32
    - PG_GETARG_TIMEADT
    - PG_RETURN_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum time_scale(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1756,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1757,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1758,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1759,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1760,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1761,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1762,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1766,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1767,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1768,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1769,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1770,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1771,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1772,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1777,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - time
    - typmod
    argTypes:
    - TimeADT*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1752
    functionDepth: 1
    functionLinenumber: 1752
    functionLinenumberEnd: 1784
    functionName: AdjustTimeForTypmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 5
    functionsReached:
    - INT64CONST
    linkageType: ''
    returnType: void
    signature: void AdjustTimeForTypmod(TimeADT *time, int32 typmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1790,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1791,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1794
      start: 1787
    functionDepth: 1
    functionLinenumber: 1787
    functionLinenumberEnd: 1794
    functionName: time_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum time_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1799,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1800,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1796
    functionDepth: 1
    functionLinenumber: 1796
    functionLinenumberEnd: 1803
    functionName: time_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum time_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1808,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1809,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1805
    functionDepth: 1
    functionLinenumber: 1805
    functionLinenumberEnd: 1812
    functionName: time_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum time_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1817,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1818,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1814
    functionDepth: 1
    functionLinenumber: 1814
    functionLinenumberEnd: 1821
    functionName: time_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum time_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1826,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1827,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1823
    functionDepth: 1
    functionLinenumber: 1823
    functionLinenumberEnd: 1830
    functionName: time_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum time_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1835,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1836,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1839
      start: 1832
    functionDepth: 1
    functionLinenumber: 1832
    functionLinenumberEnd: 1839
    functionName: time_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum time_ge(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1844,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1845,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1848,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1850,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1852
      start: 1841
    functionDepth: 1
    functionLinenumber: 1841
    functionLinenumberEnd: 1852
    functionName: time_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum time_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8
      Src: /src/postgres/src/backend/utils/adt/date.c:1857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1858
      start: 1854
    functionDepth: 3
    functionLinenumber: 1854
    functionLinenumberEnd: 1858
    functionName: time_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - hashint8
    linkageType: ''
    returnType: Datum
    signature: Datum time_hash(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8extended
      Src: /src/postgres/src/backend/utils/adt/date.c:1863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1860
    functionDepth: 3
    functionLinenumber: 1860
    functionLinenumberEnd: 1864
    functionName: time_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - hashint8extended
    linkageType: ''
    returnType: Datum
    signature: Datum time_hash_extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1869,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1870,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1873
      start: 1866
    functionDepth: 1
    functionLinenumber: 1866
    functionLinenumberEnd: 1873
    functionName: time_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - PG_RETURN_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum time_larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1878,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1879,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1881,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1882
      start: 1875
    functionDepth: 1
    functionLinenumber: 1875
    functionLinenumberEnd: 1882
    functionName: time_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - PG_RETURN_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum time_smaller(PG_FUNCTION_ARGS)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:1898,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:1899,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:1900,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:1901,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1902,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1903,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1904,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1905,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1920,1
    - Dst: TIMEADT_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:1927,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1940,1
    - Dst: TIMEADT_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:1947,1
    - Dst: TIMEADT_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:1960,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1967,1
    - Dst: TIMEADT_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:1968,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1969,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1971,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1977,1
    - Dst: TIMEADT_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:1979,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1983,1
    - Dst: TIMEADT_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:1984,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1985,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1987,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1993,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2002,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2003,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2008
      start: 1891
    functionDepth: 1
    functionLinenumber: 1891
    functionLinenumberEnd: 2008
    functionName: overlaps_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - TIMEADT_LT
    - PG_GETARG_DATUM
    - TIMEADT_GT
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum overlaps_time(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t1
    - ','
    - t2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1907
    functionDepth: 0
    functionLinenumber: 1907
    functionLinenumberEnd: 1909
    functionName: TIMEADT_GT
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMEADT_GT(t1,t2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t1
    - ','
    - t2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1911
      start: 1909
    functionDepth: 0
    functionLinenumber: 1909
    functionLinenumberEnd: 1911
    functionName: TIMEADT_LT
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMEADT_LT(t1,t2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:2017,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2023,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2024,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2026,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:2027,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2028,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2029,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2038,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 2014
    functionDepth: 2
    functionLinenumber: 2014
    functionLinenumberEnd: 2039
    functionName: timestamp_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_TIMEADT
    - errcode
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - errmsg
    - PG_RETURN_NULL
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_time(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:2048,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2055,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2056,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2058,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:2059,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2060,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2061,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2070,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2071
      start: 2045
    functionDepth: 2
    functionLinenumber: 2045
    functionLinenumberEnd: 2071
    functionName: timestamptz_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_TIMEADT
    - errcode
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - errmsg
    - PG_RETURN_NULL
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_time(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2080,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2081,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:2084,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2085,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:2088,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2089,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2090,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2091,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:2094,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2095
      start: 2077
    functionDepth: 4
    functionLinenumber: 2077
    functionLinenumberEnd: 2095
    functionName: datetime_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp
    - errcode
    - PG_RETURN_TIMESTAMP
    - TIMESTAMP_NOT_FINITE
    - ereport
    - IS_VALID_TIMESTAMP
    - PG_GETARG_DATEADT
    - errmsg
    - PG_GETARG_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum datetime_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2104,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:2107,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2101
    functionDepth: 1
    functionLinenumber: 2101
    functionLinenumberEnd: 2114
    functionName: time_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_TIMEADT
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum time_interval(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2128,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2131,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:2132,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2133,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2134,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2141
      start: 2125
    functionDepth: 2
    functionLinenumber: 2125
    functionLinenumberEnd: 2141
    functionName: interval_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMEADT
    - errcode
    - INTERVAL_NOT_FINITE
    - errmsg
    - PG_GETARG_INTERVAL_P
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum interval_time(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2150,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2151,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:2154,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2161
      start: 2147
    functionDepth: 1
    functionLinenumber: 2147
    functionLinenumberEnd: 2161
    functionName: time_mi_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_TIMEADT
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum time_mi_time(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2170,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2171,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2175,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2176,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2177,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2181,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2185
      start: 2167
    functionDepth: 2
    functionLinenumber: 2167
    functionLinenumberEnd: 2185
    functionName: time_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMEADT
    - errcode
    - INT64CONST
    - ereport
    - INTERVAL_NOT_FINITE
    - errmsg
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum time_pl_interval(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2194,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2195,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2198,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2199,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2200,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2201,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2205,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2209
      start: 2191
    functionDepth: 2
    functionLinenumber: 2191
    functionLinenumberEnd: 2209
    functionName: time_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMEADT
    - errcode
    - INT64CONST
    - ereport
    - INTERVAL_NOT_FINITE
    - errmsg
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum time_mi_interval(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2217,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2218,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2219,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2220,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2221,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2232,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:2243,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2244,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2247,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2250
      start: 2214
    functionDepth: 2
    functionLinenumber: 2214
    functionLinenumberEnd: 2250
    functionName: in_range_time_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - errcode
    - ereport
    - pg_add_s64_overflow
    - errmsg
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_time_interval(PG_FUNCTION_ARGS)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/date.c:2260,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2261,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/date.c:2267,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/date.c:2267,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/date.c:2268,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/date.c:2271,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/date.c:2273,1
    - Dst: time2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2281,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2286,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:2295,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:2295,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2295,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:2297,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:2306,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:2306,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2306,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:2308,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2333,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:2334,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:2341,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:2341,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:2343,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2347,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2349,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:2350,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:2355,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:2355,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:2357,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2257
    functionDepth: 4
    functionLinenumber: 2257
    functionLinenumberEnd: 2358
    functionName: time_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - time2tm
    - format_type_be
    - DecodeSpecial
    - int64_div_fast_to_numeric
    - INT64CONST
    - errcode
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - DecodeUnits
    - int64_to_numeric
    - errmsg
    - PG_RETURN_NUMERIC
    - PG_RETURN_FLOAT8
    - downcase_truncate_identifier
    - PG_GETARG_TIMEADT
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum time_part_common(PG_FUNCTION_ARGS, bool retnumeric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time_part_common
      Src: /src/postgres/src/backend/utils/adt/date.c:2363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2364
      start: 2360
    functionDepth: 5
    functionLinenumber: 2360
    functionLinenumberEnd: 2364
    functionName: time_part
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - time_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum time_part(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time_part_common
      Src: /src/postgres/src/backend/utils/adt/date.c:2369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2370
      start: 2366
    functionDepth: 5
    functionLinenumber: 2366
    functionLinenumberEnd: 2370
    functionName: extract_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - time_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum extract_time(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - tm
    - fsec
    - tz
    - result
    argTypes:
    - struct pg_tm*
    - fsec_t
    - int
    - TimeTzADT*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2389
      start: 2381
    functionDepth: 0
    functionLinenumber: 2381
    functionLinenumberEnd: 2389
    functionName: tm2timetz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tm2timetz(struct pg_tm *tm, fsec_t fsec, int tz, TimeTzADT *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:2394,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/date.c:2396,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2398,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:2413,1
    - Dst: DecodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:2416,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/date.c:2420,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2422,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:2425,1
    - Dst: tm2timetz
      Src: /src/postgres/src/backend/utils/adt/date.c:2426,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:2427,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2430
      start: 2391
    functionDepth: 2
    functionLinenumber: 2391
    functionLinenumberEnd: 2430
    functionName: timetz_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - ParseDateTime
    - AdjustTimeForTypmod
    - PG_GETARG_CSTRING
    - PG_RETURN_TIMETZADT_P
    - tm2timetz
    - DateTimeParseError
    - PG_GETARG_OID
    - palloc_object
    - PG_RETURN_NULL
    - DecodeTimeOnly
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2435,1
    - Dst: timetz2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2443,1
    - Dst: EncodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:2444,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/date.c:2446,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:2447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2448
      start: 2432
    functionDepth: 1
    functionLinenumber: 2432
    functionLinenumberEnd: 2448
    functionName: timetz_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - EncodeTimeOnly
    - PG_GETARG_TIMETZADT_P
    - timetz2tm
    - pstrdup
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_out(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/date.c:2456,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/date.c:2459,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2461,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:2464,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/date.c:2466,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2468,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2471,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/date.c:2473,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2477,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2478,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2479,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:2481,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2484
      start: 2453
    functionDepth: 2
    functionLinenumber: 2453
    functionLinenumberEnd: 2484
    functionName: timetz_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - INT64CONST
    - errcode
    - AdjustTimeForTypmod
    - pq_getmsgint
    - PG_RETURN_TIMETZADT_P
    - ereport
    - PG_GETARG_OID
    - errmsg
    - pq_getmsgint64
    - palloc_object
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2492,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:2495,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/date.c:2496,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/date.c:2497,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2498,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:2498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2499
      start: 2489
    functionDepth: 4
    functionLinenumber: 2489
    functionLinenumberEnd: 2499
    functionName: timetz_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - pq_endtypsend
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2504,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2506,1
    - Dst: anytime_typmodin
      Src: /src/postgres/src/backend/utils/adt/date.c:2506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2507
      start: 2501
    functionDepth: 3
    functionLinenumber: 2501
    functionLinenumberEnd: 2507
    functionName: timetztypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - anytime_typmodin
    - PG_RETURN_INT32
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum timetztypmodin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2512,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:2514,1
    - Dst: anytime_typmodout
      Src: /src/postgres/src/backend/utils/adt/date.c:2514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2509
    functionDepth: 3
    functionLinenumber: 2509
    functionLinenumberEnd: 2515
    functionName: timetztypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - anytime_typmodout
    - PG_GETARG_INT32
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum timetztypmodout(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - time
    - tm
    - fsec
    - tzp
    argTypes:
    - TimeTzADT*
    - struct pg_tm*
    - fsec_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2538
      start: 2522
    functionDepth: 0
    functionLinenumber: 2522
    functionLinenumberEnd: 2538
    functionName: timetz2tm
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int
      *tzp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2548,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2549,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:2552,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:2557,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2560
      start: 2545
    functionDepth: 2
    functionLinenumber: 2545
    functionLinenumberEnd: 2560
    functionName: timetz_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - AdjustTimeForTypmod
    - PG_RETURN_TIMETZADT_P
    - palloc_object
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_scale(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - time1
    - time2
    argTypes:
    - TimeTzADT*
    - TimeTzADT*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2588
      start: 2563
    functionDepth: 0
    functionLinenumber: 2563
    functionLinenumberEnd: 2588
    functionName: timetz_cmp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timetz_cmp_internal(TimeTzADT *time1, TimeTzADT *time2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2593,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2594,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2596,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2597
      start: 2590
    functionDepth: 1
    functionLinenumber: 2590
    functionLinenumberEnd: 2597
    functionName: timetz_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timetz_cmp_internal
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2602,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2603,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2605,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2606
      start: 2599
    functionDepth: 1
    functionLinenumber: 2599
    functionLinenumberEnd: 2606
    functionName: timetz_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timetz_cmp_internal
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2611,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2612,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2614,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2615
      start: 2608
    functionDepth: 1
    functionLinenumber: 2608
    functionLinenumberEnd: 2615
    functionName: timetz_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timetz_cmp_internal
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2620,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2621,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2623,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2624
      start: 2617
    functionDepth: 1
    functionLinenumber: 2617
    functionLinenumberEnd: 2624
    functionName: timetz_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timetz_cmp_internal
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2629,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2630,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2632,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2633
      start: 2626
    functionDepth: 1
    functionLinenumber: 2626
    functionLinenumberEnd: 2633
    functionName: timetz_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timetz_cmp_internal
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2638,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2639,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2641,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2642
      start: 2635
    functionDepth: 1
    functionLinenumber: 2635
    functionLinenumberEnd: 2642
    functionName: timetz_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timetz_cmp_internal
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2647,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2648,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2650,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2651
      start: 2644
    functionDepth: 1
    functionLinenumber: 2644
    functionLinenumberEnd: 2651
    functionName: timetz_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timetz_cmp_internal
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2656,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/date.c:2663,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/date.c:2663,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/date.c:2664,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/date.c:2665,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/date.c:2665,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2667
      start: 2653
    functionDepth: 2
    functionLinenumber: 2653
    functionLinenumberEnd: 2667
    functionName: timetz_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - DirectFunctionCall1
    - Int64GetDatumFast
    - hash_uint32
    - PG_RETURN_UINT32
    - DatumGetUInt32
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_hash(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2672,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:2673,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/adt/date.c:2677,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/date.c:2677,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/date.c:2678,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/adt/date.c:2680,1
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/utils/adt/date.c:2680,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/date.c:2681,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/utils/adt/date.c:2682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2683
      start: 2669
    functionDepth: 2
    functionLinenumber: 2669
    functionLinenumberEnd: 2683
    functionName: timetz_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_TIMETZADT_P
    - hash_uint32_extended
    - DatumGetInt64
    - Int64GetDatumFast
    - DatumGetUInt64
    - DirectFunctionCall2
    - PG_RETURN_UINT64
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_hash_extended(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2688,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2689,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2692,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2697
      start: 2685
    functionDepth: 1
    functionLinenumber: 2685
    functionLinenumberEnd: 2697
    functionName: timetz_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMETZADT_P
    - PG_GETARG_TIMETZADT_P
    - timetz_cmp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_larger(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2702,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2703,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2706,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2710,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2699
    functionDepth: 1
    functionLinenumber: 2699
    functionLinenumberEnd: 2711
    functionName: timetz_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMETZADT_P
    - PG_GETARG_TIMETZADT_P
    - timetz_cmp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_smaller(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2720,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2721,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2724,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2725,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2726,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2727,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:2729,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2733,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2738,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2739
      start: 2717
    functionDepth: 2
    functionLinenumber: 2717
    functionLinenumberEnd: 2739
    functionName: timetz_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errcode
    - INT64CONST
    - PG_RETURN_TIMETZADT_P
    - ereport
    - INTERVAL_NOT_FINITE
    - errmsg
    - palloc_object
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_pl_interval(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2748,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2749,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2752,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2753,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2754,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2755,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:2757,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2761,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2766,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2767
      start: 2745
    functionDepth: 2
    functionLinenumber: 2745
    functionLinenumberEnd: 2767
    functionName: timetz_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errcode
    - INT64CONST
    - PG_RETURN_TIMETZADT_P
    - ereport
    - INTERVAL_NOT_FINITE
    - errmsg
    - palloc_object
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_mi_interval(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2775,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2776,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2777,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2778,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2779,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2788,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2789,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2790,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:2801,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2802,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2806,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2806,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2808,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2809
      start: 2772
    functionDepth: 2
    functionLinenumber: 2772
    functionLinenumberEnd: 2809
    functionName: in_range_timetz_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_GETARG_BOOL
    - errcode
    - ereport
    - timetz_cmp_internal
    - pg_add_s64_overflow
    - errmsg
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_timetz_interval(PG_FUNCTION_ARGS)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:2825,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:2826,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:2827,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:2828,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2829,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2830,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2831,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2832,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2847,1
    - Dst: TIMETZ_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:2854,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2867,1
    - Dst: TIMETZ_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:2874,1
    - Dst: TIMETZ_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:2887,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2894,1
    - Dst: TIMETZ_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:2895,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2896,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2898,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2904,1
    - Dst: TIMETZ_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:2906,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2910,1
    - Dst: TIMETZ_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:2911,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2912,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2914,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2920,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2929,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2930,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2935
      start: 2818
    functionDepth: 1
    functionLinenumber: 2818
    functionLinenumberEnd: 2935
    functionName: overlaps_timetz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - TIMETZ_GT
    - TIMETZ_LT
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum overlaps_timetz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t1
    - ','
    - t2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2836
      start: 2834
    functionDepth: 0
    functionLinenumber: 2834
    functionLinenumberEnd: 2836
    functionName: TIMETZ_GT
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMETZ_GT(t1,t2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t1
    - ','
    - t2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2838
      start: 2836
    functionDepth: 0
    functionLinenumber: 2836
    functionLinenumberEnd: 2838
    functionName: TIMETZ_LT
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMETZ_LT(t1,t2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2941,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2948
      start: 2938
    functionDepth: 1
    functionLinenumber: 2938
    functionLinenumberEnd: 2948
    functionName: timetz_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_time(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2954,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:2961,1
    - Dst: time2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2962,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/date.c:2963,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:2965,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2971
      start: 2951
    functionDepth: 1
    functionLinenumber: 2951
    functionLinenumberEnd: 2971
    functionName: time_timetz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMETZADT_P
    - DetermineTimeZoneOffset
    - palloc_object
    - GetCurrentDateTime
    - time2tm
    - PG_GETARG_TIMEADT
    linkageType: ''
    returnType: Datum
    signature: Datum time_timetz(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:2981,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2988,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2989,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2991,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:2992,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2993,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2994,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:2996,1
    - Dst: tm2timetz
      Src: /src/postgres/src/backend/utils/adt/date.c:2998,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3000,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3001
      start: 2978
    functionDepth: 2
    functionLinenumber: 2978
    functionLinenumberEnd: 3001
    functionName: timestamptz_timetz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - errcode
    - PG_RETURN_TIMETZADT_P
    - TIMESTAMP_NOT_FINITE
    - tm2timetz
    - timestamp2tm
    - errmsg
    - palloc_object
    - PG_RETURN_NULL
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_timetz(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:3014,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3015,1
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:3018,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:3019,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:3020,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:3021,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3030,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3031,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3032,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:3039,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3040,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3041,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3042,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:3045,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3046
      start: 3011
    functionDepth: 2
    functionLinenumber: 3011
    functionLinenumberEnd: 3046
    functionName: datetimetz_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errcode
    - PG_RETURN_TIMESTAMP
    - ereport
    - TIMESTAMP_NOEND
    - IS_VALID_TIMESTAMP
    - DATE_IS_NOBEGIN
    - DATE_IS_NOEND
    - PG_GETARG_DATEADT
    - errmsg
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum datetimetz_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/date.c:3056,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3057,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/date.c:3063,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/date.c:3063,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/date.c:3064,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/date.c:3067,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/date.c:3069,1
    - Dst: timetz2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:3078,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3095,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:3104,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:3104,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3104,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:3106,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:3115,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:3115,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3115,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:3117,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3136,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3137,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3138,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:3139,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:3150,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:3150,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3150,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:3152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3158,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:3159,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:3164,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:3164,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:3166,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 59
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3167
      start: 3053
    functionDepth: 4
    functionLinenumber: 3053
    functionLinenumberEnd: 3167
    functionName: timetz_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - PG_GETARG_TIMETZADT_P
    - DecodeSpecial
    - int64_div_fast_to_numeric
    - INT64CONST
    - errcode
    - timetz2tm
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - int64_to_numeric
    - errmsg
    - PG_RETURN_NUMERIC
    - PG_RETURN_FLOAT8
    - downcase_truncate_identifier
    - DecodeUnits
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_part_common(PG_FUNCTION_ARGS, bool retnumeric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timetz_part_common
      Src: /src/postgres/src/backend/utils/adt/date.c:3173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3174
      start: 3170
    functionDepth: 5
    functionLinenumber: 3170
    functionLinenumberEnd: 3174
    functionName: timetz_part
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timetz_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_part(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timetz_part_common
      Src: /src/postgres/src/backend/utils/adt/date.c:3179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3180
      start: 3176
    functionDepth: 5
    functionLinenumber: 3176
    functionLinenumberEnd: 3180
    functionName: extract_timetz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - timetz_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum extract_timetz(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/date.c:3190,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3191,1
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/utils/adt/date.c:3202,1
    - Dst: DecodeTimezoneName
      Src: /src/postgres/src/backend/utils/adt/date.c:3204,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:3214,1
    - Dst: DetermineTimeZoneAbbrevOffsetTS
      Src: /src/postgres/src/backend/utils/adt/date.c:3217,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:3222,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:3226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3227,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3229,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:3232,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3236,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3243,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3244
      start: 3187
    functionDepth: 2
    functionLinenumber: 3187
    functionLinenumberEnd: 3244
    functionName: timetz_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errcode
    - INT64CONST
    - DetermineTimeZoneAbbrevOffsetTS
    - PG_RETURN_TIMETZADT_P
    - ereport
    - GetCurrentTransactionStartTimestamp
    - text_to_cstring_buffer
    - timestamp2tm
    - errmsg
    - palloc_object
    - DecodeTimezoneName
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_zone(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3253,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3254,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:3258,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3259,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3260,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3261,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/date.c:3262,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/date.c:3262,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:3263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3266,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3267,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3268,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/date.c:3269,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/date.c:3269,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:3270,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/date.c:3274,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3278,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3285,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3286
      start: 3250
    functionDepth: 2
    functionLinenumber: 3250
    functionLinenumberEnd: 3286
    functionName: timetz_izone
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errcode
    - INT64CONST
    - PG_RETURN_TIMETZADT_P
    - ereport
    - INTERVAL_NOT_FINITE
    - DirectFunctionCall1
    - errmsg
    - PointerGetDatum
    - PG_GETARG_INTERVAL_P
    - palloc_object
    - DatumGetCString
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_izone(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:3297,1
    - Dst: pg_get_timezone_name
      Src: /src/postgres/src/backend/utils/adt/date.c:3298,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:3299,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/date.c:3299,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/date.c:3301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3302
      start: 3294
    functionDepth: 1
    functionLinenumber: 3294
    functionLinenumberEnd: 3302
    functionName: timetz_at_local
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - cstring_to_text
    - PointerGetDatum
    - DirectFunctionCall2
    - pg_get_timezone_name
    linkageType: ''
    returnType: Datum
    signature: Datum timetz_at_local(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:38,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:39,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:40,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:41,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:44,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:45,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:46,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:47,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:50,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:51,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:52,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:53,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:56,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:57,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:58,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:59,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:71,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:72,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:75,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/trigfuncs.c:83,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 84
    functionName: suppress_redundant_updates_trigger
    functionSourceFile: /src/postgres/src/backend/utils/adt/trigfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - TRIGGER_FIRED_BEFORE
    - ereport
    - TRIGGER_FIRED_BY_UPDATE
    - TRIGGER_FIRED_FOR_ROW
    - errmsg
    - HeapTupleHeaderGetNatts
    - PointerGetDatum
    - memcmp
    - CALLED_AS_TRIGGER
    linkageType: ''
    returnType: Datum
    signature: Datum suppress_redundant_updates_trigger(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:119,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:123,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - buf
    - weight
    - prefix
    argTypes:
    - char*
    - int16*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 153
    functionName: get_modifiers
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - t_iseq
    - pg_mblen_cstr
    linkageType: ''
    returnType: char
    signature: 'char *

      get_modifiers(char *buf, int16 *weight, bool *prefix)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:183,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:193,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:200,1
    - Dst: strtol
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:204,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:208,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:209,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:210,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:220,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 2
    argNames:
    - pstate
    - distance
    argTypes:
    - TSQueryParserState
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 237
    functionName: parse_phrase_operator
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - isdigit
    - errcode
    - strtol
    - errmsg
    - t_iseq
    - ereturn
    linkageType: ''
    returnType: bool
    signature: bool parse_phrase_operator(TSQueryParserState pstate, int16 *distance)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:249,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:262,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:262,1
    - Dst: t_isalnum_cstr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:262,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:267,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:277,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - TSQueryParserState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 283
    functionName: parse_or_operator
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - isspace
    - pg_strncasecmp
    - t_iseq
    - pg_mblen_cstr
    - t_isalnum_cstr
    linkageType: ''
    returnType: bool
    signature: bool parse_or_operator(TSQueryParserState pstate)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:299,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:306,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:313,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:318,1
    - Dst: reset_tsvector_parser
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:324,1
    - Dst: gettoken_tsvector
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:325,1
    - Dst: get_modifiers
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:328,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:332,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:342,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:343,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:344,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:350,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:357,1
    - Dst: parse_phrase_operator
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:364,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:371,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:376,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:386,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:393,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 74
    argCount: 5
    argNames:
    - state
    - lenval
    - strval
    - weight
    - prefix
    argTypes:
    - TSQueryParserState
    - int8**
    - char**
    - int16*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 395
    functionName: gettoken_query_standard
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - errcode
    - isspace
    - get_modifiers
    - pg_mblen_cstr
    - reset_tsvector_parser
    - errmsg
    - t_iseq
    - ereturn
    - gettoken_tsvector
    - parse_phrase_operator
    linkageType: ''
    returnType: ts_tokentype
    signature: "ts_tokentype gettoken_query_standard(TSQueryParserState state, int8
      *operator,\n\t\t\t\t\t\tint *lenval, char **strval,\n\t\t\t\t\t\tint16 *weight,
      bool *prefix)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:411,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:419,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:428,1
    - Dst: ISOPERATOR
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:440,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:447,1
    - Dst: reset_tsvector_parser
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:453,1
    - Dst: gettoken_tsvector
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:454,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:460,1
    - Dst: pushStop
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:472,1
    - Dst: parse_or_operator
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:483,1
    - Dst: ISOPERATOR
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:489,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:495,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:505,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 69
    argCount: 5
    argNames:
    - state
    - lenval
    - strval
    - weight
    - prefix
    argTypes:
    - TSQueryParserState
    - int8**
    - char**
    - int16*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 397
    functionDepth: 3
    functionLinenumber: 397
    functionLinenumberEnd: 507
    functionName: gettoken_query_websearch
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - pushStop
    - ISOPERATOR
    - parse_or_operator
    - isspace
    - reset_tsvector_parser
    - t_iseq
    - pg_mblen_cstr
    - gettoken_tsvector
    linkageType: ''
    returnType: ts_tokentype
    signature: "ts_tokentype gettoken_query_websearch(TSQueryParserState state, int8
      *operator,\n\t\t\t\t\t\t int *lenval, char **strval,\n\t\t\t\t\t\t int16 *weight,
      bool *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - state
    - lenval
    - strval
    - weight
    - prefix
    argTypes:
    - TSQueryParserState
    - int8**
    - char**
    - int16*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 525
    functionName: gettoken_query_plain
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: ts_tokentype
    signature: "ts_tokentype gettoken_query_plain(TSQueryParserState state, int8 *operator,\n\t\t\t\t\t
      int *lenval, char **strval,\n\t\t\t\t\t int16 *weight, bool *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:535,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:537,1
    - Dst: lcons
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:543,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - state
    - oper
    - distance
    argTypes:
    - TSQueryParserState
    - int8
    - int16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 530
    functionDepth: 6
    functionLinenumber: 530
    functionLinenumberEnd: 544
    functionName: pushOperator
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc0_object
    - lcons
    linkageType: ''
    returnType: void
    signature: void pushOperator(TSQueryParserState state, int8 oper, int16 distance)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:552,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:554,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:557,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:558,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:559,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:562,1
    - Dst: lcons
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:570,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - state
    - valcrc
    - distance
    - lenval
    - weight
    - prefix
    argTypes:
    - TSQueryParserState
    - pg_crc32
    - int
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 546
    functionDepth: 6
    functionLinenumber: 546
    functionLinenumberEnd: 571
    functionName: pushValue_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - errcode
    - errmsg
    - ereturn
    - lcons
    linkageType: ''
    returnType: void
    signature: void pushValue_internal(TSQueryParserState state, pg_crc32 valcrc,
      int distance, int lenval, int weight, bool prefix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:585,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:587,1
    - Dst: INIT_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:590,1
    - Dst: COMP_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:591,1
    - Dst: FIN_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:592,1
    - Dst: pushValue_internal
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:593,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:601,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - state
    - strval
    - lenval
    - weight
    - prefix
    argTypes:
    - TSQueryParserState
    - char*
    - int
    - int16
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 579
    functionDepth: 7
    functionLinenumber: 579
    functionLinenumberEnd: 609
    functionName: pushValue
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 1
    functionsReached:
    - pushValue_internal
    - memcpy
    - errcode
    - INIT_LEGACY_CRC32
    - repalloc
    - FIN_LEGACY_CRC32
    - COMP_LEGACY_CRC32
    - errmsg
    - ereturn
    linkageType: ''
    returnType: void
    signature: void pushValue(TSQueryParserState state, char *strval, int lenval,
      int16 weight, bool prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:620,1
    - Dst: lcons
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - TSQueryParserState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 615
    functionDepth: 6
    functionLinenumber: 615
    functionLinenumberEnd: 624
    functionName: pushStop
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - lcons
    linkageType: ''
    returnType: void
    signature: void pushStop(TSQueryParserState state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - stack
    - lenstack
    - op
    - distance
    argTypes:
    - OperatorElement*
    - int*
    - int8
    - int16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 645
    functionName: pushOpStack
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void pushOpStack(OperatorElement *stack, int *lenstack, int8 op, int16
      distance)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OP_PRIORITY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:651,1
    - Dst: OP_PRIORITY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:656,1
    - Dst: OP_PRIORITY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:657,1
    - Dst: pushOperator
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:661,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 4
    argNames:
    - state
    - stack
    - lenstack
    - op
    argTypes:
    - TSQueryParserState
    - OperatorElement*
    - int*
    - int8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 647
    functionDepth: 7
    functionLinenumber: 647
    functionLinenumberEnd: 664
    functionName: cleanOpStack
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - OP_PRIORITY
    - pushOperator
    linkageType: ''
    returnType: void
    signature: "void cleanOpStack(TSQueryParserState state,\n\t\t\t OperatorElement
      *stack, int *lenstack, int8 op)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:686,1
    - Dst: TSQueryParserState::gettoken
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:688,1
    - Dst: pushval
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:695,1
    - Dst: cleanOpStack
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:698,1
    - Dst: pushOpStack
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:699,1
    - Dst: makepol
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:702,1
    - Dst: cleanOpStack
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:705,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:710,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:711,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:712,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:713,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:718,1
    - Dst: cleanOpStack
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:722,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - state
    - pushval
    - opaque
    argTypes:
    - TSQueryParserState
    - PushFunction
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 671
    functionDepth: 8
    functionLinenumber: 671
    functionLinenumberEnd: 723
    functionName: makepol
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 1
    functionsReached:
    - makepol
    - SOFT_ERROR_OCCURRED
    - cleanOpStack
    - errsave
    - errcode
    - check_stack_depth
    - pushOpStack
    - TSQueryParserState::gettoken
    - pushval
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void makepol(TSQueryParserState state,\n\t\tPushFunction pushval,\n\t\tvoid
      *opaque)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:729,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:745,1
    - Dst: findoprnd_recurse
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:753,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:760,1
    - Dst: findoprnd_recurse
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:767,1
    - Dst: findoprnd_recurse
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:772,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - ptr
    - pos
    - nnodes
    - needcleanup
    argTypes:
    - QueryItem*
    - uint32*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 725
    functionDepth: 1
    functionLinenumber: 725
    functionLinenumberEnd: 775
    functionName: findoprnd_recurse
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 1
    functionsReached:
    - elog
    - check_stack_depth
    - findoprnd_recurse
    - Assert
    linkageType: ''
    returnType: void
    signature: void findoprnd_recurse(QueryItem *ptr, uint32 *pos, int nnodes, bool
      *needcleanup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: findoprnd_recurse
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:790,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:793,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ptr
    - size
    - needcleanup
    argTypes:
    - QueryItem*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 783
    functionDepth: 2
    functionLinenumber: 783
    functionLinenumberEnd: 794
    functionName: findoprnd
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - elog
    - findoprnd_recurse
    linkageType: ''
    returnType: void
    signature: void findoprnd(QueryItem *ptr, int size, bool *needcleanup)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:834,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:848,1
    - Dst: init_tsvector_parser
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:859,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:864,1
    - Dst: makepol
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:868,1
    - Dst: close_tsvector_parser
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:870,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:872,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:878,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:879,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:881,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:882,1
    - Dst: TSQUERY_TOO_BIG
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:887,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:887,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:888,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:889,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:890,1
    - Dst: COMPUTESIZE
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:891,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:891,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:894,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:895,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:896,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:897,1
    - Dst: foreach
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:901,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:903,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:908,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:914,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:917,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:923,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:923,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:924,1
    - Dst: findoprnd
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:930,1
    - Dst: cleanup_tsquery_stopwords
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:936,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 63
    argCount: 5
    argNames:
    - buf
    - pushval
    - opaque
    - flags
    - escontext
    argTypes:
    - char*
    - PushFunction
    - void*
    - int
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 816
    functionDepth: 2
    functionLinenumber: 816
    functionLinenumberEnd: 939
    functionName: parse_tsquery
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 4
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - errcode
    - init_tsvector_parser
    - SET_VARSIZE
    - elog
    - COMPUTESIZE
    - foreach
    - memcpy
    - Assert
    - pfree
    - TSQUERY_TOO_BIG
    - errmsg
    - list_length
    - GETOPERAND
    - makepol
    - cleanup_tsquery_stopwords
    - ereport
    - lfirst
    - findoprnd
    - close_tsvector_parser
    - GETQUERY
    - palloc0
    - palloc
    - ereturn
    - IsA
    linkageType: ''
    returnType: TSQuery
    signature: "TSQuery parse_tsquery(char *buf,\n\t\t\t  PushFunction pushval,\n\t\t\t
      \ void *opaque,\n\t\t\t  int flags,\n\t\t\t  Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pushValue
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - opaque
    - state
    - strval
    - lenval
    - weight
    - prefix
    argTypes:
    - void*
    - TSQueryParserState
    - char*
    - int
    - int16
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 941
    functionDepth: 8
    functionLinenumber: 941
    functionLinenumberEnd: 946
    functionName: pushval_asis
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - pushValue
    linkageType: ''
    returnType: void
    signature: "void pushval_asis(void *opaque, TSQueryParserState state, char *strval,
      int lenval,\n\t\t\t int16 weight, bool prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:954,1
    - Dst: PG_RETURN_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:957,1
    - Dst: parse_tsquery
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 951
    functionDepth: 3
    functionLinenumber: 951
    functionLinenumberEnd: 962
    functionName: tsqueryin
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - parse_tsquery
    - PG_GETARG_CSTRING
    - PG_RETURN_TSQUERY
    linkageType: ''
    returnType: Datum
    signature: Datum tsqueryin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - inf
    - ','
    - addsize
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 985
    functionName: RESIZEBUF
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESIZEBUF(inf, addsize)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:994,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1002,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1002,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1007,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1012,1
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1018,1
    - Dst: QO_PRIORITY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1059,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1063,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1064,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1065,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1067,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1073,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1076,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1077,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1078,1
    - Dst: QO_PRIORITY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1084,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1095,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1096,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1097,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1103,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1106,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1110,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1113,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1117,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1120,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1124,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1126,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1130,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1132,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1133,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1137,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1138,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1139,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 104
    argCount: 3
    argNames:
    - in
    - parentPriority
    - rightPhraseOp
    argTypes:
    - INFIX*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 990
    functionDepth: 2
    functionLinenumber: 990
    functionLinenumberEnd: 1142
    functionName: infix
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 1
    functionsReached:
    - elog
    - RESIZEBUF
    - QO_PRIORITY
    - strchr
    - pfree
    - check_stack_depth
    - palloc_array
    - pg_database_encoding_max_length
    - sprintf
    - t_iseq
    - infix
    - ts_copychar_cstr
    linkageType: ''
    returnType: void
    signature: void infix(INFIX *in, int parentPriority, bool rightPhraseOp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1147,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1152,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1155,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1157,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1159,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1161,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1162,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1164,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1144
    functionDepth: 1
    functionLinenumber: 1144
    functionLinenumberEnd: 1166
    functionName: tsqueryout
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TSQUERY
    - GETQUERY
    - PG_FREE_IF_COPY
    - palloc_array
    - PG_RETURN_CSTRING
    - palloc
    - GETOPERAND
    - PG_RETURN_POINTER
    - infix
    linkageType: ''
    returnType: Datum
    signature: Datum tsqueryout(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1190,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1193,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1195,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1197,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1200,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1205,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1206,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1207,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1207,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1210,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1212,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1215,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1220,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1222,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1187
    functionDepth: 4
    functionLinenumber: 1187
    functionLinenumberEnd: 1223
    functionName: tsquerysend
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - elog
    - pq_sendint8
    - pq_sendstring
    - pq_endtypsend
    - PG_GETARG_TSQUERY
    - GETQUERY
    - pq_sendint32
    - PG_FREE_IF_COPY
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - GETOPERAND
    - pq_sendint16
    linkageType: ''
    returnType: Datum
    signature: Datum tsquerysend(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1228,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1239,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1241,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1244,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1248,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1250,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1255,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1266,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1267,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1268,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1269,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1274,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1277,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1280,1
    - Dst: INIT_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1284,1
    - Dst: COMP_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1285,1
    - Dst: FIN_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1286,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1306,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1308,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1311,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1315,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1318,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1324,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1325,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1326,1
    - Dst: findoprnd
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1335,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1342,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1348,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1350,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1350,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1352,1
    - Dst: PG_RETURN_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1354,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1225
    functionDepth: 2
    functionLinenumber: 1225
    functionLinenumberEnd: 1355
    functionName: tsqueryrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - repalloc
    - SET_VARSIZE
    - elog
    - memcpy
    - Assert
    - pfree
    - INIT_LEGACY_CRC32
    - GETOPERAND
    - PG_GETARG_POINTER
    - PG_RETURN_TSQUERY
    - pq_getmsgstring
    - COMP_LEGACY_CRC32
    - strlen
    - findoprnd
    - GETQUERY
    - palloc0
    - FIN_LEGACY_CRC32
    - palloc
    - pq_getmsgint
    linkageType: ''
    returnType: Datum
    signature: Datum tsqueryrecv(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1364,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1372,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1373,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1374,1
    - Dst: clean_NOT
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1377,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1377,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1381,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1387,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1389,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1390,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1391,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1392,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1395,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1361
    functionDepth: 2
    functionLinenumber: 1361
    functionLinenumberEnd: 1398
    functionName: tsquerytree
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - clean_NOT
    - pfree
    - PG_GETARG_TSQUERY
    - GETQUERY
    - cstring_to_text
    - PG_FREE_IF_COPY
    - palloc_array
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    - SET_VARSIZE
    - palloc
    - GETOPERAND
    - PG_RETURN_POINTER
    - infix
    linkageType: ''
    returnType: Datum
    signature: Datum tsquerytree(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 239
    functionName: NO_XML_SUPPORT
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NO_XML_SUPPORT()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:252,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - encoding_name
    argTypes:
    - xmlChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 260
    functionName: xmlChar_to_encoding
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - pg_char_to_encoding
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: int
    signature: int xmlChar_to_encoding(const xmlChar *encoding_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/xml.c:275,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/xml.c:280,1
    - Dst: xml_parse
      Src: /src/postgres/src/backend/utils/adt/xml.c:287,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:287,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:290,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:292,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 297
    functionName: xml_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_XML_P
    - GetDatabaseEncoding
    - PG_GETARG_CSTRING
    - cstring_to_text
    - xml_parse
    - xmlFreeDoc
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: Datum
    signature: Datum xml_in(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:313,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:316,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:321,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:326,1
    - Dst: print_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:328,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:338,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:340,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:345,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:346,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:347,1
    - Dst: errdetail_for_xml_code
      Src: /src/postgres/src/backend/utils/adt/xml.c:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - x
    - target_encoding
    argTypes:
    - xmltype*
    - pg_enc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 310
    functionDepth: 3
    functionLinenumber: 310
    functionLinenumberEnd: 351
    functionName: xml_out_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - parse_xml_decl
    - pfree
    - print_xml_decl
    - appendStringInfoString
    - initStringInfo
    - ereport
    - errcode
    - errdetail_for_xml_code
    - strlen
    - text_to_cstring
    linkageType: ''
    returnType: char
    signature: 'char *

      xml_out_internal(xmltype *x, pg_enc target_encoding)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:357,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/xml.c:365,1
    - Dst: xml_out_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 354
    functionDepth: 4
    functionLinenumber: 354
    functionLinenumberEnd: 366
    functionName: xml_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CSTRING
    - PG_GETARG_XML_P
    - xml_out_internal
    linkageType: ''
    returnType: Datum
    signature: Datum xml_out(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/xml.c:373,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/utils/adt/xml.c:389,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/xml.c:396,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/xml.c:397,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/xml.c:398,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/xml.c:398,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/xml.c:399,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:402,1
    - Dst: xmlChar_to_encoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:410,1
    - Dst: xml_parse
      Src: /src/postgres/src/backend/utils/adt/xml.c:416,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:417,1
    - Dst: pg_any_to_server
      Src: /src/postgres/src/backend/utils/adt/xml.c:420,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:424,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/xml.c:425,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:426,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:429,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 369
    functionDepth: 3
    functionLinenumber: 369
    functionLinenumberEnd: 434
    functionName: xml_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - pg_any_to_server
    - memcpy
    - PG_RETURN_XML_P
    - parse_xml_decl
    - pfree
    - cstring_to_text
    - xmlChar_to_encoding
    - xml_parse
    - SET_VARSIZE
    - palloc
    - VARDATA
    - xmlFreeDoc
    - PG_GETARG_POINTER
    - pq_getmsgbytes
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: Datum
    signature: Datum xml_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:440,1
    - Dst: xml_out_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:448,1
    - Dst: pg_get_client_encoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:448,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/xml.c:450,1
    - Dst: pq_sendtext
      Src: /src/postgres/src/backend/utils/adt/xml.c:451,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:451,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:452,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:453,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/xml.c:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 437
    functionDepth: 4
    functionLinenumber: 437
    functionLinenumberEnd: 454
    functionName: xml_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - pq_sendtext
    - PG_GETARG_XML_P
    - pq_endtypsend
    - pfree
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - strlen
    - xml_out_internal
    - pg_get_client_encoding
    linkageType: ''
    returnType: Datum
    signature: Datum xml_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:461,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/xml.c:461,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/xml.c:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - t
    argTypes:
    - StringInfo
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 458
    functionDepth: 4
    functionLinenumber: 458
    functionLinenumberEnd: 462
    functionName: appendStringInfoText
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendBinaryStringInfo
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: void
    signature: void appendStringInfoText(StringInfo str, const text *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/xml.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 470
    functionName: stringinfo_to_xmltype
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - cstring_to_text_with_len
    linkageType: ''
    returnType: xmltype
    signature: 'xmltype *

      stringinfo_to_xmltype(StringInfo buf)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/xml.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 477
    functionName: cstring_to_xmltype
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    linkageType: ''
    returnType: xmltype
    signature: 'xmltype *

      cstring_to_xmltype(const char *string)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/xml.c:484,1
    - Dst: xmlBufferContent
      Src: /src/postgres/src/backend/utils/adt/xml.c:484,1
    - Dst: xmlBufferLength
      Src: /src/postgres/src/backend/utils/adt/xml.c:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - xmlBufferPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 486
    functionName: xmlBuffer_to_xmltype
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - cstring_to_text_with_len
    - xmlBufferContent
    - xmlBufferLength
    linkageType: ''
    returnType: xmltype
    signature: 'xmltype *

      xmlBuffer_to_xmltype(xmlBufferPtr buf)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:494,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/xml.c:495,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/xml.c:496,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:504,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:505,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:506,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:509,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:510,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:511,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:513,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:514,1
    - Dst: appendStringInfoText
      Src: /src/postgres/src/backend/utils/adt/xml.c:515,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:516,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:518,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:518,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:520,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 490
    functionDepth: 4
    functionLinenumber: 490
    functionLinenumberEnd: 523
    functionName: xmlcomment
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendStringInfoText
    - PG_RETURN_XML_P
    - errcode
    - appendStringInfoString
    - initStringInfo
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - stringinfo_to_xmltype
    - errmsg
    - NO_XML_SUPPORT
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum xmlcomment(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:530,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:536,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:538,1
    - Dst: xmlEncodeSpecialChars
      Src: /src/postgres/src/backend/utils/adt/xml.c:540,1
    - Dst: xml_text2xmlChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:540,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:543,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/xml.c:546,1
    - Dst: xmlStrlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:547,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:549,1
    - Dst: xmlFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:552,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:554,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:555,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:557,1
    - Dst: xmlFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:559,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:560,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:562,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:564,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 567
    functionName: xmltext
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - xmlEncodeSpecialChars
    - PG_TRY
    - xmlFree
    - PG_RETURN_XML_P
    - xml_text2xmlChar
    - xmlStrlen
    - xml_ereport
    - pg_xml_done
    - PG_RE_THROW
    - cstring_to_text_with_len
    - NO_XML_SUPPORT
    - pg_xml_init
    - PG_END_TRY
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum xmltext(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:584,1
    - Dst: DatumGetXmlP
      Src: /src/postgres/src/backend/utils/adt/xml.c:587,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:587,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:587,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/xml.c:593,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:594,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:596,1
    - Dst: xmlStrcmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:607,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:610,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:611,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:618,1
    - Dst: print_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:620,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:625,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:629,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:631,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - args
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 574
    functionDepth: 3
    functionLinenumber: 574
    functionLinenumberEnd: 634
    functionName: xmlconcat
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - appendBinaryStringInfo
    - VARSIZE
    - xmlStrcmp
    - parse_xml_decl
    - pfree
    - print_xml_decl
    - appendStringInfoString
    - initStringInfo
    - stringinfo_to_xmltype
    - lfirst
    - PointerGetDatum
    - text_to_cstring
    - DatumGetXmlP
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: xmltype
    signature: 'xmltype *

      xmlconcat(List *args)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetXmlP
      Src: /src/postgres/src/backend/utils/adt/xml.c:587,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:587,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:587,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/xml.c:593,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:594,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:596,1
    - Dst: xmlStrcmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:607,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:610,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:611,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 585
    functionDepth: 2
    functionLinenumber: 585
    functionLinenumberEnd: 612
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 470
    functionsReached:
    - VARSIZE
    - xmlStrcmp
    - parse_xml_decl
    - pfree
    - appendStringInfoString
    - lfirst
    - PointerGetDatum
    - text_to_cstring
    - DatumGetXmlP
    linkageType: ''
    returnType: void
    signature: void foreach(v, args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/xml.c:643,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/xml.c:645,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/xml.c:646,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:648,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:648,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/xml.c:650,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:651,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:651,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:653,1
    - Dst: xmlconcat
      Src: /src/postgres/src/backend/utils/adt/xml.c:653,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/utils/adt/xml.c:653,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:653,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:654,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 640
    functionDepth: 4
    functionLinenumber: 640
    functionLinenumberEnd: 655
    functionName: xmlconcat2
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_XML_P
    - PG_GETARG_XML_P
    - list_make2
    - xmlconcat
    - PG_RETURN_NULL
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum xmlconcat2(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:661,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:663,1
    - Dst: xmlparse
      Src: /src/postgres/src/backend/utils/adt/xml.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 664
    functionName: texttoxml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlparse
    - PG_RETURN_XML_P
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum texttoxml(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:670,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 674
    functionName: xmltotext
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TEXT_P
    - PG_GETARG_XML_P
    linkageType: ''
    returnType: Datum
    signature: Datum xmltotext(PG_FUNCTION_ARGS)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: xml_parse
      Src: /src/postgres/src/backend/utils/adt/xml.c:709,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:709,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:715,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:717,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:719,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:725,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:735,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:739,1
    - Dst: xmlBufferCreate
      Src: /src/postgres/src/backend/utils/adt/xml.c:742,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:745,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:749,1
    - Dst: xml_text2xmlChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:749,1
    - Dst: xmlSaveToBuffer
      Src: /src/postgres/src/backend/utils/adt/xml.c:758,1
    - Dst: xmlSaveToBuffer
      Src: /src/postgres/src/backend/utils/adt/xml.c:761,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:765,1
    - Dst: xmlSaveDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:771,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:772,1
    - Dst: xmlNewNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:787,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:789,1
    - Dst: xmlDocSetRootElement
      Src: /src/postgres/src/backend/utils/adt/xml.c:796,1
    - Dst: xmlFreeNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:798,1
    - Dst: xmlAddChildList
      Src: /src/postgres/src/backend/utils/adt/xml.c:800,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:802,1
    - Dst: xmlNewDocText
      Src: /src/postgres/src/backend/utils/adt/xml.c:812,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:814,1
    - Dst: xmlSaveTree
      Src: /src/postgres/src/backend/utils/adt/xml.c:822,1
    - Dst: xmlFreeNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:824,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:825,1
    - Dst: xmlSaveTree
      Src: /src/postgres/src/backend/utils/adt/xml.c:830,1
    - Dst: xmlFreeNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:832,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:833,1
    - Dst: xmlFreeNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:838,1
    - Dst: xmlSaveClose
      Src: /src/postgres/src/backend/utils/adt/xml.c:841,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:844,1
    - Dst: xmlBufferContent
      Src: /src/postgres/src/backend/utils/adt/xml.c:853,1
    - Dst: xmlBufferLength
      Src: /src/postgres/src/backend/utils/adt/xml.c:854,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/xml.c:860,1
    - Dst: xmlBuffer_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:863,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:865,1
    - Dst: xmlSaveClose
      Src: /src/postgres/src/backend/utils/adt/xml.c:868,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:870,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:871,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:874,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:876,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:878,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:880,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:881,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:883,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:887,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 83
    argCount: 3
    argNames:
    - data
    - xmloption_arg
    - indent
    argTypes:
    - xmltype*
    - XmlOptionType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 677
    functionDepth: 2
    functionLinenumber: 677
    functionLinenumberEnd: 890
    functionName: xmltotext_with_options
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - PG_TRY
    - xmlBuffer_to_xmltype
    - errcode
    - xml_text2xmlChar
    - xmlDocSetRootElement
    - cstring_to_text_with_len
    - xmlSaveDoc
    - pg_xml_init
    - xmlBufferLength
    - xmlBufferCreate
    - parse_xml_decl
    - GetDatabaseEncoding
    - xml_ereport
    - xmlSaveTree
    - xmlBufferFree
    - PG_RE_THROW
    - errmsg
    - PG_END_TRY
    - ereport
    - pg_xml_done
    - xmlNewDocText
    - xmlSaveClose
    - xmlNewNode
    - xmlFreeDoc
    - xmlSaveToBuffer
    - PG_CATCH
    - xml_parse
    - xmlFreeNode
    - xmlBufferContent
    - NO_XML_SUPPORT
    - xmlAddChildList
    linkageType: ''
    returnType: text
    signature: 'text *

      xmltotext_with_options(xmltype *data, XmlOptionType xmloption_arg, bool indent)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/utils/adt/xml.c:918,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:920,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:926,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/xml.c:927,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:929,1
    - Dst: foreach
      Src: /src/postgres/src/backend/utils/adt/xml.c:935,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:937,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:943,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/xml.c:944,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:946,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:951,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:953,1
    - Dst: xmlBufferCreate
      Src: /src/postgres/src/backend/utils/adt/xml.c:955,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:957,1
    - Dst: xmlNewTextWriterMemory
      Src: /src/postgres/src/backend/utils/adt/xml.c:959,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:961,1
    - Dst: xmlTextWriterStartElement
      Src: /src/postgres/src/backend/utils/adt/xml.c:964,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:966,1
    - Dst: forboth
      Src: /src/postgres/src/backend/utils/adt/xml.c:969,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:971,1
    - Dst: strVal
      Src: /src/postgres/src/backend/utils/adt/xml.c:972,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:972,1
    - Dst: xmlTextWriterWriteAttribute
      Src: /src/postgres/src/backend/utils/adt/xml.c:976,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:980,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:987,1
    - Dst: xmlTextWriterWriteRaw
      Src: /src/postgres/src/backend/utils/adt/xml.c:989,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:991,1
    - Dst: xmlTextWriterEndElement
      Src: /src/postgres/src/backend/utils/adt/xml.c:995,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:997,1
    - Dst: xmlFreeTextWriter
      Src: /src/postgres/src/backend/utils/adt/xml.c:1001,1
    - Dst: xmlBuffer_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:1004,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:1006,1
    - Dst: xmlFreeTextWriter
      Src: /src/postgres/src/backend/utils/adt/xml.c:1009,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1011,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:1013,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:1015,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1017,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1019,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:1021,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1025,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 5
    argNames:
    - xexpr
    - named_argvalue
    - named_argnull
    - argvalue
    - argnull
    argTypes:
    - XmlExpr*
    - Datum*
    - bool*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 893
    functionDepth: 6
    functionLinenumber: 893
    functionLinenumberEnd: 1028
    functionName: xmlelement
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - xmlTextWriterEndElement
    - PG_TRY
    - xmlBuffer_to_xmltype
    - exprType
    - map_sql_value_to_xml_value
    - pg_xml_init
    - strVal
    - xmlNewTextWriterMemory
    - foreach
    - xmlBufferCreate
    - xml_ereport
    - xmlBufferFree
    - PG_RE_THROW
    - xmlFreeTextWriter
    - PG_END_TRY
    - lappend
    - pg_xml_done
    - lfirst
    - xmlTextWriterWriteAttribute
    - PG_CATCH
    - xmlTextWriterStartElement
    - xmlTextWriterWriteRaw
    - NO_XML_SUPPORT
    - forboth
    linkageType: ''
    returnType: xmltype
    signature: "xmltype *\nxmlelement(XmlExpr *xexpr,\n\t\t   const Datum *named_argvalue,
      const bool *named_argnull,\n\t\t   const Datum *argvalue, const bool *argnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:987,1
    - Dst: xmlTextWriterWriteRaw
      Src: /src/postgres/src/backend/utils/adt/xml.c:989,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:991,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 993
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - xmlTextWriterWriteRaw
    - lfirst
    - xml_ereport
    linkageType: ''
    returnType: void
    signature: void foreach(arg, arg_strings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xml_parse
      Src: /src/postgres/src/backend/utils/adt/xml.c:1037,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:1038,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1040,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/xml.c:1042,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1047,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - data
    - xmloption_arg
    - preserve_whitespace
    - escontext
    argTypes:
    - text*
    - XmlOptionType
    - bool
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1031
    functionDepth: 1
    functionLinenumber: 1031
    functionLinenumberEnd: 1050
    functionName: xmlparse
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - GetDatabaseEncoding
    - xml_parse
    - xmlFreeDoc
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: xmltype
    signature: 'xmltype *

      xmlparse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace,
      Node *escontext)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1060,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1061,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1062,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1063,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:1064,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1074,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1076,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:1082,1
    - Dst: strstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1083,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1084,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1085,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1086,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:1087,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:1089,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1090,1
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/xml.c:1090,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1091,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1093,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:1095,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1096,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1099,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - target
    - arg
    - arg_is_null
    - result_is_null
    argTypes:
    - char*
    - text*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1053
    functionDepth: 3
    functionLinenumber: 1053
    functionLinenumberEnd: 1102
    functionName: xmlpi
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    - errcode
    - pfree
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - ereport
    - strstr
    - stringinfo_to_xmltype
    - strspn
    - errmsg
    - text_to_cstring
    - errdetail
    - NO_XML_SUPPORT
    - appendStringInfoChar
    linkageType: ''
    returnType: xmltype
    signature: 'xmltype *

      xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1115,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:1116,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:1118,1
    - Dst: xml_text2xmlChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:1121,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1141,1
    - Dst: print_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:1142,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1143,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:1145,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1147,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - data
    - version
    - standalone
    argTypes:
    - xmltype*
    - text*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1105
    functionDepth: 3
    functionLinenumber: 1105
    functionLinenumberEnd: 1150
    functionName: xmlroot
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - VARSIZE
    - parse_xml_decl
    - print_xml_decl
    - xml_text2xmlChar
    - initStringInfo
    - appendStringInfoString
    - stringinfo_to_xmltype
    - text_to_cstring
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: xmltype
    signature: 'xmltype *

      xmlroot(xmltype *data, text *version, int standalone)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1161
    functionDepth: 2
    functionLinenumber: 1161
    functionLinenumberEnd: 1168
    functionName: xmlvalidate
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum xmlvalidate(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: xml_parse
      Src: /src/postgres/src/backend/utils/adt/xml.c:1181,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:1182,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1184,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - xmltype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1171
    functionDepth: 1
    functionLinenumber: 1171
    functionLinenumberEnd: 1191
    functionName: xml_is_document
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - GetDatabaseEncoding
    - xmlFreeDoc
    - xml_parse
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: bool
    signature: bool xml_is_document(xmltype *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1222,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:1223,1
    - Dst: xml_memory_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:1228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1207
    functionDepth: 2
    functionLinenumber: 1207
    functionLinenumberEnd: 1236
    functionName: pg_xml_init_library
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xml_memory_init
    - ereport
    - errmsg
    - errdetail
    linkageType: ''
    returnType: void
    signature: void pg_xml_init_library(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_xml_init_library
      Src: /src/postgres/src/backend/utils/adt/xml.c:1260,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/xml.c:1263,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1267,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1284,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1307,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1309,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/xml.c:1310,1
    - Dst: xmlGetExternalEntityLoader
      Src: /src/postgres/src/backend/utils/adt/xml.c:1318,1
    - Dst: xmlSetExternalEntityLoader
      Src: /src/postgres/src/backend/utils/adt/xml.c:1319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - strictness
    argTypes:
    - PgXmlStrictness
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1253
    functionDepth: 3
    functionLinenumber: 1253
    functionLinenumberEnd: 1322
    functionName: pg_xml_init
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - xmlSetExternalEntityLoader
    - errcode
    - initStringInfo
    - ereport
    - pg_xml_init_library
    - xmlGetExternalEntityLoader
    - errhint
    - xmlSetStructuredErrorFunc
    - errmsg
    - palloc_object
    linkageType: ''
    returnType: PgXmlErrorContext
    signature: 'PgXmlErrorContext *

      pg_xml_init(PgXmlStrictness strictness)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:1340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:1347,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:1361,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1364,1
    - Dst: xmlSetExternalEntityLoader
      Src: /src/postgres/src/backend/utils/adt/xml.c:1365,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1374,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - errcxt
    - isError
    argTypes:
    - PgXmlErrorContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1334
    functionDepth: 1
    functionLinenumber: 1334
    functionLinenumberEnd: 1376
    functionName: pg_xml_done
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - elog
    - xmlSetExternalEntityLoader
    - Assert
    - pfree
    - xmlSetStructuredErrorFunc
    linkageType: ''
    returnType: void
    signature: void pg_xml_done(PgXmlErrorContext *errcxt, bool isError)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - errcxt
    argTypes:
    - PgXmlErrorContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1382
    functionDepth: 0
    functionLinenumber: 1382
    functionLinenumberEnd: 1386
    functionName: pg_xml_error_occurred
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pg_xml_error_occurred(PgXmlErrorContext *errcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1398
    functionDepth: 0
    functionLinenumber: 1398
    functionLinenumberEnd: 1403
    functionName: CHECK_XML_SPACE
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_XML_SPACE(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1404
    functionDepth: 0
    functionLinenumber: 1404
    functionLinenumberEnd: 1406
    functionName: SKIP_XML_SPACE
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SKIP_XML_SPACE(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1409
    functionDepth: 0
    functionLinenumber: 1409
    functionLinenumberEnd: 1415
    functionName: PG_XMLISNAMECHAR
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_XMLISNAMECHAR(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1422,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/xml.c:1423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - xmlChar*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1417
    functionDepth: 0
    functionLinenumber: 1417
    functionLinenumberEnd: 1426
    functionName: xml_pnstrdup
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: xmlChar
    signature: 'xmlChar *

      xml_pnstrdup(const xmlChar *str, size_t len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1434,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/xml.c:1435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1429
    functionDepth: 0
    functionLinenumber: 1429
    functionLinenumberEnd: 1439
    functionName: pg_xmlCharStrndup
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: xmlChar
    signature: 'xmlChar *

      pg_xmlCharStrndup(const char *str, size_t len)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1453,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:1455,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1457,1
    - Dst: xmlFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1459,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - str
    argTypes:
    - xmlChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1446
    functionDepth: 1
    functionLinenumber: 1446
    functionLinenumberEnd: 1467
    functionName: xml_pstrdup_and_free
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlFree
    - PG_TRY
    - pstrdup
    - PG_FINALLY
    - PG_END_TRY
    linkageType: ''
    returnType: char
    signature: 'char *

      xml_pstrdup_and_free(xmlChar *str)'
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: pg_xml_init_library
      Src: /src/postgres/src/backend/utils/adt/xml.c:1491,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1503,1
    - Dst: strnlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:1514,1
    - Dst: xmlGetUTF8Char
      Src: /src/postgres/src/backend/utils/adt/xml.c:1515,1
    - Dst: PG_XMLISNAMECHAR
      Src: /src/postgres/src/backend/utils/adt/xml.c:1516,1
    - Dst: CHECK_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1522,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1523,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1524,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1527,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1531,1
    - Dst: xmlStrchr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1537,1
    - Dst: xml_pnstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:1542,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1550,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1551,1
    - Dst: CHECK_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1553,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1555,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1559,1
    - Dst: xmlStrchr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1565,1
    - Dst: xml_pnstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:1570,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1583,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1584,1
    - Dst: CHECK_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1586,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1588,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1592,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1593,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1594,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1600,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1601,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1615,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1616,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 96
    argCount: 5
    argNames:
    - str
    - lenp
    - version
    - encoding
    - standalone
    argTypes:
    - xmlChar*
    - size_t*
    - xmlChar**
    - xmlChar**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1475
    functionDepth: 3
    functionLinenumber: 1475
    functionLinenumberEnd: 1631
    functionName: parse_xml_decl
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 6
    functionsReached:
    - strnlen
    - SKIP_XML_SPACE
    - CHECK_XML_SPACE
    - xmlStrchr
    - pg_xml_init_library
    - xmlGetUTF8Char
    - xml_pnstrdup
    - xmlStrncmp
    - PG_XMLISNAMECHAR
    linkageType: ''
    returnType: int
    signature: "int parse_xml_decl(const xmlChar *str, size_t *lenp,\n\t\t\t   xmlChar
      **version, xmlChar **encoding, int *standalone)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1652,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1656,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1659,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1661,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1669,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/backend/utils/adt/xml.c:1670,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1674,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1676,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1677,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 4
    argNames:
    - buf
    - version
    - encoding
    - standalone
    argTypes:
    - StringInfo
    - xmlChar*
    - pg_enc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1648
    functionDepth: 2
    functionLinenumber: 1648
    functionLinenumberEnd: 1683
    functionName: print_xml_decl
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - pg_encoding_to_char
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool print_xml_decl(StringInfo buf, const xmlChar *version,\n\t\t\t
      \  pg_enc encoding, int standalone)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1723,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1733,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1737,1
    - Dst: xmlStrstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1740,1
    - Dst: xmlStrstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1754,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - str
    argTypes:
    - xmlChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1714
    functionDepth: 1
    functionLinenumber: 1714
    functionLinenumberEnd: 1761
    functionName: xml_doctype_in_content
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlStrncmp
    - xmlStrstr
    - SKIP_XML_SPACE
    linkageType: ''
    returnType: bool
    signature: bool xml_doctype_in_content(const xmlChar *str)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/xml.c:1808,1
    - Dst: xml_text2xmlChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:1809,1
    - Dst: pg_do_encoding_conversion
      Src: /src/postgres/src/backend/utils/adt/xml.c:1818,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:1824,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1827,1
    - Dst: xmlInitParser
      Src: /src/postgres/src/backend/utils/adt/xml.c:1836,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:1844,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:1848,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1849,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:1850,1
    - Dst: errdetail_for_xml_code
      Src: /src/postgres/src/backend/utils/adt/xml.c:1851,1
    - Dst: xml_doctype_in_content
      Src: /src/postgres/src/backend/utils/adt/xml.c:1856,1
    - Dst: xmlNewParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:1872,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1874,1
    - Dst: xmlCtxtReadDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1889,1
    - Dst: xml_errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:1898,1
    - Dst: xml_errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:1902,1
    - Dst: xmlNewDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1911,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1913,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:1916,1
    - Dst: xmlStrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:1917,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1919,1
    - Dst: xmlKeepBlanksDefault
      Src: /src/postgres/src/backend/utils/adt/xml.c:1924,1
    - Dst: xmlParseBalancedChunkMemory
      Src: /src/postgres/src/backend/utils/adt/xml.c:1929,1
    - Dst: xml_errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:1934,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:1945,1
    - Dst: xmlKeepBlanksDefault
      Src: /src/postgres/src/backend/utils/adt/xml.c:1948,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1950,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:1952,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:1954,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:1956,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1958,1
    - Dst: xmlKeepBlanksDefault
      Src: /src/postgres/src/backend/utils/adt/xml.c:1961,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:1964,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:1966,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 75
    argCount: 7
    argNames:
    - data
    - xmloption_arg
    - preserve_whitespace
    - encoding
    - parsed_xmloptiontype
    - parsed_nodes
    - escontext
    argTypes:
    - text*
    - XmlOptionType
    - bool
    - int
    - XmlOptionType*
    - xmlNodePtr*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1969
      start: 1790
    functionDepth: 4
    functionLinenumber: 1790
    functionLinenumberEnd: 1969
    functionName: xml_parse
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 5
    functionsReached:
    - PG_TRY
    - errcode
    - xml_text2xmlChar
    - xmlCtxtReadDoc
    - xmlStrdup
    - pg_xml_init
    - xmlInitParser
    - xml_doctype_in_content
    - parse_xml_decl
    - Assert
    - xml_ereport
    - PG_RE_THROW
    - VARSIZE_ANY_EXHDR
    - xml_errsave
    - xmlNewParserCtxt
    - PG_END_TRY
    - xmlFreeParserCtxt
    - errmsg_internal
    - errsave
    - xmlParseBalancedChunkMemory
    - pg_xml_done
    - xmlKeepBlanksDefault
    - xmlFreeDoc
    - PG_CATCH
    - errdetail_for_xml_code
    - xmlNewDoc
    - pg_do_encoding_conversion
    linkageType: ''
    returnType: xmlDocPtr
    signature: "xmlDocPtr xml_parse(text *data, XmlOptionType xmloption_arg,\n\t\t
      \ bool preserve_whitespace, int encoding,\n\t\t  XmlOptionType *parsed_xmloptiontype,
      xmlNodePtr *parsed_nodes,\n\t\t  Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:1978,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1979
      start: 1975
    functionDepth: 1
    functionLinenumber: 1975
    functionLinenumberEnd: 1979
    functionName: xml_text2xmlChar
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 4
    functionsReached:
    - text_to_cstring
    linkageType: ''
    returnType: xmlChar
    signature: 'xmlChar *

      xml_text2xmlChar(text *in)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/xml.c:1993,1
    - Dst: xmlMemSetup
      Src: /src/postgres/src/backend/utils/adt/xml.c:1998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1999
      start: 1988
    functionDepth: 1
    functionLinenumber: 1988
    functionLinenumberEnd: 1999
    functionName: xml_memory_init
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - xmlMemSetup
    - AllocSetContextCreate
    linkageType: ''
    returnType: void
    signature: void xml_memory_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/xml.c:2007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2008
      start: 2004
    functionDepth: 1
    functionLinenumber: 2004
    functionLinenumberEnd: 2008
    functionName: xml_palloc
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: 'void *

      xml_palloc(size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/xml.c:2014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 2011
    functionDepth: 0
    functionLinenumber: 2011
    functionLinenumberEnd: 2015
    functionName: xml_repalloc
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - repalloc
    linkageType: ''
    returnType: void
    signature: 'void *

      xml_repalloc(void *ptr, size_t size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2018
    functionDepth: 0
    functionLinenumber: 2018
    functionLinenumberEnd: 2024
    functionName: xml_pfree
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void xml_pfree(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2031
      start: 2027
    functionDepth: 1
    functionLinenumber: 2027
    functionLinenumberEnd: 2031
    functionName: xml_pstrdup
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - MemoryContextStrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      xml_pstrdup(const char *string)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xmlNewStringInputStream
      Src: /src/postgres/src/backend/utils/adt/xml.c:2050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - URL
    - ID
    - ctxt
    argTypes:
    - char*
    - char*
    - xmlParserCtxtPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2051
      start: 2046
    functionDepth: 0
    functionLinenumber: 2046
    functionLinenumberEnd: 2051
    functionName: xmlPgEntityLoader
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlNewStringInputStream
    linkageType: ''
    returnType: xmlParserInputPtr
    signature: "xmlParserInputPtr xmlPgEntityLoader(const char *URL, const char *ID,\n\t\t\t\t
      \ xmlParserCtxtPtr ctxt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:2071,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2082,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2083,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2084,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2085,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - errcxt
    - level
    - sqlcode
    - msg
    argTypes:
    - PgXmlErrorContext*
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2086
      start: 2064
    functionDepth: 2
    functionLinenumber: 2064
    functionLinenumberEnd: 2086
    functionName: xml_ereport
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 5
    functionsReached:
    - elog
    - errmsg_internal
    - errcode
    - ereport
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: void xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode,
      const char *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:2109,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:2120,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2121,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2122,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - escontext
    - errcxt
    - sqlcode
    - msg
    argTypes:
    - Node*
    - PgXmlErrorContext*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2124
      start: 2101
    functionDepth: 2
    functionLinenumber: 2101
    functionLinenumberEnd: 2124
    functionName: xml_errsave
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - elog
    - errmsg_internal
    - errcode
    - errsave
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: "void xml_errsave(Node *escontext, PgXmlErrorContext *errcxt,\n\t\t\tint
      sqlcode, const char *msg)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:2150,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2218,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2221,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2223,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2225,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2227,1
    - Dst: xmlSetGenericErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:2245,1
    - Dst: appendStringInfoLineSeparator
      Src: /src/postgres/src/backend/utils/adt/xml.c:2249,1
    - Dst: xmlParserPrintFileContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:2251,1
    - Dst: xmlSetGenericErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:2254,1
    - Dst: chopStringInfoNewlines
      Src: /src/postgres/src/backend/utils/adt/xml.c:2258,1
    - Dst: appendStringInfoLineSeparator
      Src: /src/postgres/src/backend/utils/adt/xml.c:2270,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2271,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2274,1
    - Dst: appendStringInfoLineSeparator
      Src: /src/postgres/src/backend/utils/adt/xml.c:2288,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2289,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2296,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2297,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2301,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2302,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2305,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 67
    argCount: 2
    argNames:
    - data
    - error
    argTypes:
    - void*
    - PgXmlErrorPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2306
      start: 2130
    functionDepth: 3
    functionLinenumber: 2130
    functionLinenumberEnd: 2306
    functionName: xml_errorHandler
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - elog
    - appendStringInfoLineSeparator
    - appendBinaryStringInfo
    - errmsg_internal
    - pfree
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - ereport
    - xmlSetGenericErrorFunc
    - chopStringInfoNewlines
    - xmlParserPrintFileContext
    linkageType: ''
    returnType: void
    signature: void xml_errorHandler(void *data, PgXmlErrorPtr error)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2326,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2329,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2332,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2335,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2338,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2341,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2344,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:2348,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - code
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2349
      start: 2318
    functionDepth: 2
    functionLinenumber: 2318
    functionLinenumberEnd: 2349
    functionName: errdetail_for_xml_code
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - gettext_noop
    - errdetail
    linkageType: ''
    returnType: int
    signature: int errdetail_for_xml_code(int code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2360
      start: 2355
    functionDepth: 0
    functionLinenumber: 2355
    functionLinenumberEnd: 2360
    functionName: chopStringInfoNewlines
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void chopStringInfoNewlines(StringInfo str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: chopStringInfoNewlines
      Src: /src/postgres/src/backend/utils/adt/xml.c:2369,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:2371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2366
    functionDepth: 2
    functionLinenumber: 2366
    functionLinenumberEnd: 2372
    functionName: appendStringInfoLineSeparator
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - appendStringInfoChar
    - chopStringInfoNewlines
    linkageType: ''
    returnType: void
    signature: void appendStringInfoLineSeparator(StringInfo str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_server_to_any
      Src: /src/postgres/src/backend/utils/adt/xml.c:2384,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:2384,1
    - Dst: pg_encoding_mb2wchar_with_len
      Src: /src/postgres/src/backend/utils/adt/xml.c:2386,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/backend/utils/adt/xml.c:2387,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2393
      start: 2378
    functionDepth: 2
    functionLinenumber: 2378
    functionLinenumberEnd: 2393
    functionName: sqlchar_to_unicode
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - pg_encoding_mblen
    - pfree
    - pg_server_to_any
    - pg_encoding_mb2wchar_with_len
    - pg_mblen_cstr
    linkageType: ''
    returnType: pg_wchar
    signature: pg_wchar sqlchar_to_unicode(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xmlIsBaseCharQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2400,1
    - Dst: xmlIsIdeographicQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2402
      start: 2396
    functionDepth: 0
    functionLinenumber: 2396
    functionLinenumberEnd: 2402
    functionName: is_valid_xml_namefirst
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlIsBaseCharQ
    - xmlIsIdeographicQ
    linkageType: ''
    returnType: bool
    signature: bool is_valid_xml_namefirst(pg_wchar c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xmlIsBaseCharQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2409,1
    - Dst: xmlIsIdeographicQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2409,1
    - Dst: xmlIsDigitQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2410,1
    - Dst: xmlIsCombiningQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2412,1
    - Dst: xmlIsExtenderQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2413,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2414
      start: 2405
    functionDepth: 0
    functionLinenumber: 2405
    functionLinenumberEnd: 2414
    functionName: is_valid_xml_namechar
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlIsCombiningQ
    - xmlIsBaseCharQ
    - xmlIsIdeographicQ
    - xmlIsExtenderQ
    - xmlIsDigitQ
    linkageType: ''
    returnType: bool
    signature: bool is_valid_xml_namechar(pg_wchar c)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:2433,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2435,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:2437,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2440,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2442,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:2444,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2447,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2449,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2452,1
    - Dst: sqlchar_to_unicode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2455,1
    - Dst: is_valid_xml_namefirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:2458,1
    - Dst: is_valid_xml_namechar
      Src: /src/postgres/src/backend/utils/adt/xml.c:2459,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2460,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2462,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:2462,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:2468,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 23
    argCount: 3
    argNames:
    - ident
    - fully_escaped
    - escape_period
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2471
      start: 2421
    functionDepth: 3
    functionLinenumber: 2421
    functionLinenumberEnd: 2471
    functionName: map_sql_identifier_to_xml_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendBinaryStringInfo
    - Assert
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - sqlchar_to_unicode
    - pg_strncasecmp
    - pg_mblen_cstr
    - is_valid_xml_namefirst
    - NO_XML_SUPPORT
    - is_valid_xml_namechar
    linkageType: ''
    returnType: char
    signature: "char *\nmap_sql_identifier_to_xml_name(const char *ident, bool fully_escaped,\n\t\t\t\t\t\t\t
      \  bool escape_period)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2483,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:2485,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/xml.c:2488,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/xml.c:2489,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/xml.c:2490,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/xml.c:2491,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/xml.c:2497,1
    - Dst: pg_unicode_to_server
      Src: /src/postgres/src/backend/utils/adt/xml.c:2498,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2499,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2503,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:2503,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2507
      start: 2477
    functionDepth: 3
    functionLinenumber: 2477
    functionLinenumberEnd: 2507
    functionName: map_xml_name_to_sql_identifier
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendBinaryStringInfo
    - sscanf
    - appendStringInfoString
    - initStringInfo
    - isxdigit
    - pg_unicode_to_server
    - pg_mblen_cstr
    linkageType: ''
    returnType: char
    signature: 'char *

      map_xml_name_to_sql_identifier(const char *name)'
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: type_is_array_domain
      Src: /src/postgres/src/backend/utils/adt/xml.c:2522,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2535,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/xml.c:2536,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/utils/adt/xml.c:2537,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/utils/adt/xml.c:2539,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2544,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2550,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2551,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:2552,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2554,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2557,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2558,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/utils/adt/xml.c:2572,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/xml.c:2580,1
    - Dst: DatumGetDateADT
      Src: /src/postgres/src/backend/utils/adt/xml.c:2591,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/xml.c:2593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2594,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2595,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2596,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:2597,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/xml.c:2598,1
    - Dst: EncodeDateOnly
      Src: /src/postgres/src/backend/utils/adt/xml.c:2600,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2602,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/xml.c:2612,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/xml.c:2615,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2616,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2617,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2618,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:2619,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/xml.c:2620,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/xml.c:2621,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2623,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2624,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2625,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2627,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/xml.c:2639,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/xml.c:2642,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2643,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2644,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2645,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:2646,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/xml.c:2647,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/xml.c:2648,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2650,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2651,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2652,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2654,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2660,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:2666,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:2668,1
    - Dst: xmlBufferCreate
      Src: /src/postgres/src/backend/utils/adt/xml.c:2670,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2672,1
    - Dst: xmlNewTextWriterMemory
      Src: /src/postgres/src/backend/utils/adt/xml.c:2674,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2676,1
    - Dst: xmlTextWriterWriteBase64
      Src: /src/postgres/src/backend/utils/adt/xml.c:2680,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/xml.c:2680,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/xml.c:2681,1
    - Dst: xmlTextWriterWriteBinHex
      Src: /src/postgres/src/backend/utils/adt/xml.c:2683,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/xml.c:2683,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/xml.c:2684,1
    - Dst: xmlFreeTextWriter
      Src: /src/postgres/src/backend/utils/adt/xml.c:2687,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2690,1
    - Dst: xmlBufferContent
      Src: /src/postgres/src/backend/utils/adt/xml.c:2690,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:2692,1
    - Dst: xmlFreeTextWriter
      Src: /src/postgres/src/backend/utils/adt/xml.c:2695,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2697,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:2699,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:2701,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:2703,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2705,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:2707,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2718,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/xml.c:2719,1
    - Dst: escape_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:2726,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 86
    argCount: 3
    argNames:
    - value
    - type
    - xml_escape_strings
    argTypes:
    - Datum
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2519
    functionDepth: 4
    functionLinenumber: 2519
    functionLinenumberEnd: 2728
    functionName: map_sql_value_to_xml_value
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - PG_TRY
    - errcode
    - pstrdup
    - TIMESTAMP_NOT_FINITE
    - map_sql_value_to_xml_value
    - xmlTextWriterWriteBinHex
    - timestamp2tm
    - getBaseType
    - VARDATA_ANY
    - pg_xml_init
    - EncodeDateOnly
    - xmlTextWriterWriteBase64
    - xmlNewTextWriterMemory
    - j2date
    - DatumGetBool
    - get_typlenbyvalalign
    - xmlBufferCreate
    - pfree
    - appendStringInfoString
    - DATE_NOT_FINITE
    - xml_ereport
    - xmlBufferFree
    - VARSIZE_ANY_EXHDR
    - PG_RE_THROW
    - xmlFreeTextWriter
    - OidOutputFunctionCall
    - errmsg
    - PG_END_TRY
    - initStringInfo
    - ereport
    - pg_xml_done
    - DatumGetByteaPP
    - DatumGetArrayTypeP
    - DatumGetTimestamp
    - deconstruct_array
    - escape_xml
    - PG_CATCH
    - type_is_array_domain
    - DatumGetDateADT
    - getTypeOutputInfo
    - ARR_ELEMTYPE
    - errdetail
    - EncodeDateTime
    - xmlBufferContent
    linkageType: ''
    returnType: char
    signature: 'char *

      map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2744,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2750,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2753,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2756,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2759,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/xml.c:2762,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2767
      start: 2738
    functionDepth: 3
    functionLinenumber: 2738
    functionLinenumberEnd: 2767
    functionName: escape_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - appendStringInfoString
    - initStringInfo
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: char
    signature: 'char *

      escape_xml(const char *str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:2773,1
    - Dst: SPI_palloc
      Src: /src/postgres/src/backend/utils/adt/xml.c:2774,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/xml.c:2776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2778
      start: 2770
    functionDepth: 2
    functionLinenumber: 2770
    functionLinenumberEnd: 2778
    functionName: _SPI_strdup
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - SPI_palloc
    - strlen
    - memcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      _SPI_strdup(const char *s)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SPI_execute
      Src: /src/postgres/src/backend/utils/adt/xml.c:2834,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:2836,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/backend/utils/adt/xml.c:2837,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/backend/utils/adt/xml.c:2844,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:2849,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/utils/adt/xml.c:2849,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2853
      start: 2827
    functionDepth: 6
    functionLinenumber: 2827
    functionLinenumberEnd: 2853
    functionName: query_to_oid_list
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - elog
    - SPI_result_code_string
    - DatumGetObjectId
    - SPI_execute
    - lappend_oid
    - SPI_getbinval
    linkageType: ''
    returnType: List
    signature: 'List *

      query_to_oid_list(const char *query)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2861,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2862,1
    - Dst: CppAsString2
      Src: /src/postgres/src/backend/utils/adt/xml.c:2865,1
    - Dst: CppAsString2
      Src: /src/postgres/src/backend/utils/adt/xml.c:2866,1
    - Dst: query_to_oid_list
      Src: /src/postgres/src/backend/utils/adt/xml.c:2870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nspid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2871
      start: 2856
    functionDepth: 7
    functionLinenumber: 2856
    functionLinenumberEnd: 2871
    functionName: schema_get_xml_visible_tables
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - query_to_oid_list
    - initStringInfo
    - CppAsString2
    linkageType: ''
    returnType: List
    signature: 'List *

      schema_get_xml_visible_tables(Oid nspid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_to_oid_list
      Src: /src/postgres/src/backend/utils/adt/xml.c:2886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2887
      start: 2883
    functionDepth: 7
    functionLinenumber: 2883
    functionLinenumberEnd: 2887
    functionName: database_get_xml_visible_schemas
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - query_to_oid_list
    linkageType: ''
    returnType: List
    signature: 'List *

      database_get_xml_visible_schemas(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_to_oid_list
      Src: /src/postgres/src/backend/utils/adt/xml.c:2894,1
    - Dst: CppAsString2
      Src: /src/postgres/src/backend/utils/adt/xml.c:2897,1
    - Dst: CppAsString2
      Src: /src/postgres/src/backend/utils/adt/xml.c:2898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2901
      start: 2890
    functionDepth: 7
    functionLinenumber: 2890
    functionLinenumberEnd: 2901
    functionName: database_get_xml_visible_tables
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - query_to_oid_list
    - CppAsString2
    linkageType: ''
    returnType: List
    signature: 'List *

      database_get_xml_visible_tables(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2916,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2917,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2918,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/xml.c:2918,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:2919,1
    - Dst: query_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2920,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:2920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - relid
    - xmlschema
    - nulls
    - tableforest
    - targetns
    - top_level
    argTypes:
    - Oid
    - char*
    - bool
    - bool
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2923
      start: 2909
    functionDepth: 3
    functionLinenumber: 2909
    functionLinenumberEnd: 2923
    functionName: table_to_xml_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - initStringInfo
    - DirectFunctionCall1
    - query_to_xml_internal
    - get_rel_name
    - ObjectIdGetDatum
    - DatumGetCString
    linkageType: ''
    returnType: StringInfo
    signature: "StringInfo table_to_xml_internal(Oid relid,\n\t\t\t\t\t  const char
      *xmlschema, bool nulls, bool tableforest,\n\t\t\t\t\t  const char *targetns,
      bool top_level)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/xml.c:2929,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2930,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2931,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:2932,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2932,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:2934,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:2934,1
    - Dst: table_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2937
      start: 2926
    functionDepth: 4
    functionLinenumber: 2926
    functionLinenumberEnd: 2937
    functionName: table_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_XML_P
    - PG_GETARG_BOOL
    - table_to_xml_internal
    - stringinfo_to_xmltype
    - PG_GETARG_OID
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum table_to_xml(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:2943,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2943,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2944,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2945,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:2946,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2946,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:2948,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:2948,1
    - Dst: query_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2951
      start: 2940
    functionDepth: 2
    functionLinenumber: 2940
    functionLinenumberEnd: 2951
    functionName: query_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_XML_P
    - PG_GETARG_BOOL
    - query_to_xml_internal
    - stringinfo_to_xmltype
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum query_to_xml(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:2957,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2957,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/xml.c:2958,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2959,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2960,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:2961,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2961,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2967,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:2971,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:2972,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:2975,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/backend/utils/adt/xml.c:2976,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2978,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2979,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2980,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/backend/utils/adt/xml.c:2982,1
    - Dst: SPI_sql_row_to_xmlelement
      Src: /src/postgres/src/backend/utils/adt/xml.c:2984,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:2987,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:2990,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:2992,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:2992,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2993
      start: 2954
    functionDepth: 3
    functionLinenumber: 2954
    functionLinenumberEnd: 2993
    functionName: cursor_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - SPI_finish
    - xmldata_root_element_end
    - PG_GETARG_BOOL
    - errcode
    - PG_RETURN_XML_P
    - SPI_cursor_fetch
    - initStringInfo
    - ereport
    - SPI_cursor_find
    - SPI_sql_row_to_xmlelement
    - stringinfo_to_xmltype
    - text_to_cstring
    - xmldata_root_element_start
    - errmsg
    - PG_GETARG_INT32
    - SPI_connect
    - appendStringInfoChar
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum cursor_to_xml(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:3014,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3016,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3019,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:3020,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3021,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:3026,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3027,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3029,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3031,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - result
    - eltname
    - xmlschema
    - targetns
    - top_level
    argTypes:
    - StringInfo
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3032
      start: 3008
    functionDepth: 2
    functionLinenumber: 3008
    functionLinenumberEnd: 3032
    functionName: xmldata_root_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - Assert
    - appendStringInfo
    - appendStringInfoString
    - strlen
    linkageType: ''
    returnType: void
    signature: "void xmldata_root_element_start(StringInfo result, const char *eltname,\n\t\t\t\t\t\t
      \  const char *xmlschema, const char *targetns,\n\t\t\t\t\t\t   bool top_level)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - eltname
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3039
      start: 3035
    functionDepth: 2
    functionLinenumber: 3035
    functionLinenumberEnd: 3039
    functionName: xmldata_root_element_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void xmldata_root_element_end(StringInfo result, const char *eltname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3052,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3056,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3058,1
    - Dst: SPI_execute
      Src: /src/postgres/src/backend/utils/adt/xml.c:3059,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:3060,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:3061,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:3062,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3066,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3068,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3072,1
    - Dst: SPI_sql_row_to_xmlelement
      Src: /src/postgres/src/backend/utils/adt/xml.c:3075,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3079,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3081,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 7
    argNames:
    - query
    - tablename
    - xmlschema
    - nulls
    - tableforest
    - targetns
    - top_level
    argTypes:
    - char*
    - char*
    - char*
    - bool
    - bool
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3084
      start: 3042
    functionDepth: 4
    functionLinenumber: 3042
    functionLinenumberEnd: 3084
    functionName: query_to_xml_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - SPI_finish
    - xmldata_root_element_end
    - errcode
    - appendStringInfo
    - ereport
    - SPI_sql_row_to_xmlelement
    - SPI_execute
    - map_sql_identifier_to_xml_name
    - errmsg
    - xmldata_root_element_start
    - makeStringInfo
    - SPI_connect
    - appendStringInfoChar
    linkageType: ''
    returnType: StringInfo
    signature: "StringInfo query_to_xml_internal(const char *query, char *tablename,\n\t\t\t\t\t
      \ const char *xmlschema, bool nulls, bool tableforest,\n\t\t\t\t\t  const char
      *targetns, bool top_level)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/xml.c:3090,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3091,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3092,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3093,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3093,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3097,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3098,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3100,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3102,1
    - Dst: cstring_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3103
      start: 3087
    functionDepth: 3
    functionLinenumber: 3087
    functionLinenumberEnd: 3103
    functionName: table_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - PG_RETURN_XML_P
    - PG_GETARG_BOOL
    - table_open
    - PG_GETARG_OID
    - text_to_cstring
    - cstring_to_xmltype
    - table_close
    - map_sql_table_to_xmlschema
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum table_to_xmlschema(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3109,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3109,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3110,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3111,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3112,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3112,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3117,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/backend/utils/adt/xml.c:3119,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3120,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3122,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3123,1
    - Dst: _SPI_strdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:3125,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3125,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3128,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3129,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3131,1
    - Dst: cstring_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3132
      start: 3106
    functionDepth: 3
    functionLinenumber: 3106
    functionLinenumberEnd: 3132
    functionName: query_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - elog
    - SPI_finish
    - PG_RETURN_XML_P
    - PG_GETARG_BOOL
    - _SPI_strdup
    - cstring_to_xmltype
    - SPI_cursor_close
    - SPI_prepare
    - text_to_cstring
    - SPI_cursor_open
    - SPI_connect
    - map_sql_table_to_xmlschema
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum query_to_xmlschema(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3138,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3138,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3139,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3140,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3141,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3141,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3145,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/backend/utils/adt/xml.c:3146,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:3148,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:3149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:3150,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:3152,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:3153,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:3154,1
    - Dst: _SPI_strdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:3156,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3156,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3159,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3161,1
    - Dst: cstring_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3162
      start: 3135
    functionDepth: 3
    functionLinenumber: 3135
    functionLinenumberEnd: 3162
    functionName: cursor_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - SPI_finish
    - PG_RETURN_XML_P
    - PG_GETARG_BOOL
    - errcode
    - ereport
    - SPI_cursor_find
    - _SPI_strdup
    - text_to_cstring
    - errmsg
    - cstring_to_xmltype
    - SPI_connect
    - map_sql_table_to_xmlschema
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum cursor_to_xmlschema(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/xml.c:3168,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3169,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3170,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3171,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3171,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3175,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3176,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3178,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3180,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3180,1
    - Dst: table_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3183
      start: 3165
    functionDepth: 4
    functionLinenumber: 3165
    functionLinenumberEnd: 3183
    functionName: table_to_xml_and_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_XML_P
    - PG_GETARG_BOOL
    - table_to_xml_internal
    - table_open
    - stringinfo_to_xmltype
    - PG_GETARG_OID
    - text_to_cstring
    - table_close
    - map_sql_table_to_xmlschema
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum table_to_xml_and_xmlschema(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3189,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3189,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3190,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3191,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3192,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3192,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3198,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/backend/utils/adt/xml.c:3200,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3201,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3203,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3204,1
    - Dst: _SPI_strdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:3206,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3206,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3208,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3209,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3211,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3211,1
    - Dst: query_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3214
      start: 3186
    functionDepth: 5
    functionLinenumber: 3186
    functionLinenumberEnd: 3214
    functionName: query_to_xml_and_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - elog
    - SPI_finish
    - PG_RETURN_XML_P
    - PG_GETARG_BOOL
    - _SPI_strdup
    - SPI_cursor_close
    - query_to_xml_internal
    - stringinfo_to_xmltype
    - SPI_prepare
    - text_to_cstring
    - SPI_cursor_open
    - SPI_connect
    - map_sql_table_to_xmlschema
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum query_to_xml_and_xmlschema(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3231,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3231,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3233,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3235,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3236,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3239,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3241,1
    - Dst: schema_get_xml_visible_tables
      Src: /src/postgres/src/backend/utils/adt/xml.c:3243,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3247,1
    - Dst: table_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3250,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3253,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3254,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3257,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 6
    argNames:
    - nspid
    - xmlschema
    - nulls
    - tableforest
    - targetns
    - top_level
    argTypes:
    - Oid
    - char*
    - bool
    - bool
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3262
      start: 3222
    functionDepth: 8
    functionLinenumber: 3222
    functionLinenumberEnd: 3262
    functionName: schema_to_xml_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - get_namespace_name
    - appendBinaryStringInfo
    - SPI_finish
    - xmldata_root_element_end
    - appendStringInfo
    - schema_get_xml_visible_tables
    - table_to_xml_internal
    - map_sql_identifier_to_xml_name
    - xmldata_root_element_start
    - lfirst_oid
    - makeStringInfo
    - SPI_connect
    - appendStringInfoChar
    linkageType: ''
    returnType: StringInfo
    signature: "StringInfo schema_to_xml_internal(Oid nspid, const char *xmlschema,
      bool nulls,\n\t\t\t\t\t   bool tableforest, const char *targetns, bool top_level)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3247,1
    - Dst: table_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3250,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3253,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3255
      start: 3245
    functionDepth: 4
    functionLinenumber: 3245
    functionLinenumberEnd: 3255
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - appendBinaryStringInfo
    - lfirst_oid
    - table_to_xml_internal
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void foreach(cell, relid_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/xml.c:3268,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3269,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3270,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3271,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3271,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3276,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/utils/adt/xml.c:3277,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3279,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3279,1
    - Dst: schema_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3281
      start: 3265
    functionDepth: 9
    functionLinenumber: 3265
    functionLinenumberEnd: 3281
    functionName: schema_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - LookupExplicitNamespace
    - PG_GETARG_NAME
    - PG_GETARG_BOOL
    - PG_RETURN_XML_P
    - schema_to_xml_internal
    - stringinfo_to_xmltype
    - NameStr
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum schema_to_xml(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3290,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:3293,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3294,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - result
    - targetns
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3301
      start: 3287
    functionDepth: 2
    functionLinenumber: 3287
    functionLinenumberEnd: 3301
    functionName: xsd_schema_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - strlen
    linkageType: ''
    returnType: void
    signature: void xsd_schema_element_start(StringInfo result, const char *targetns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3308
      start: 3304
    functionDepth: 2
    functionLinenumber: 3304
    functionLinenumberEnd: 3308
    functionName: xsd_schema_element_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void xsd_schema_element_end(StringInfo result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3321,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/utils/adt/xml.c:3323,1
    - Dst: xsd_schema_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3325,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3327,1
    - Dst: schema_get_xml_visible_tables
      Src: /src/postgres/src/backend/utils/adt/xml.c:3329,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3336,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3336,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:3337,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/xml.c:3337,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3338,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3341,1
    - Dst: map_sql_typecoll_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3342,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3344,1
    - Dst: map_sql_schema_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3345,1
    - Dst: xsd_schema_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3348,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 4
    argNames:
    - schemaname
    - nulls
    - tableforest
    - targetns
    argTypes:
    - char*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3353
      start: 3311
    functionDepth: 8
    functionLinenumber: 3311
    functionLinenumberEnd: 3353
    functionName: schema_to_xmlschema_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - LookupExplicitNamespace
    - xsd_schema_element_end
    - SPI_finish
    - lfirst_oid
    - CreateTupleDescCopy
    - lappend
    - appendStringInfoString
    - table_open
    - map_sql_schema_to_xmlschema_types
    - map_sql_typecoll_to_xmlschema_types
    - xsd_schema_element_start
    - table_close
    - schema_get_xml_visible_tables
    - SPI_connect
    linkageType: ''
    returnType: StringInfo
    signature: "StringInfo schema_to_xmlschema_internal(const char *schemaname, bool
      nulls,\n\t\t\t\t\t\t\t bool tableforest, const char *targetns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3336,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3336,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:3337,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/xml.c:3337,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3339
      start: 3332
    functionDepth: 6
    functionLinenumber: 3332
    functionLinenumberEnd: 3339
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - CreateTupleDescCopy
    - lappend
    - table_open
    - lfirst_oid
    - table_close
    linkageType: ''
    returnType: void
    signature: void foreach(cell, relid_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/xml.c:3359,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3360,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3361,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3362,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3362,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3364,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3364,1
    - Dst: schema_to_xmlschema_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3364,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3366
      start: 3356
    functionDepth: 9
    functionLinenumber: 3356
    functionLinenumberEnd: 3366
    functionName: schema_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_XML_P
    - PG_GETARG_NAME
    - PG_GETARG_BOOL
    - stringinfo_to_xmltype
    - text_to_cstring
    - NameStr
    - schema_to_xmlschema_internal
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum schema_to_xmlschema(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/xml.c:3372,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3373,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3374,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3375,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3375,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3380,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/utils/adt/xml.c:3381,1
    - Dst: schema_to_xmlschema_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3383,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3386,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3386,1
    - Dst: schema_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3389
      start: 3369
    functionDepth: 9
    functionLinenumber: 3369
    functionLinenumberEnd: 3389
    functionName: schema_to_xml_and_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - LookupExplicitNamespace
    - PG_GETARG_NAME
    - PG_GETARG_BOOL
    - PG_RETURN_XML_P
    - schema_to_xml_internal
    - stringinfo_to_xmltype
    - NameStr
    - text_to_cstring
    - schema_to_xmlschema_internal
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum schema_to_xml_and_xmlschema(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3406,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3406,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3408,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3410,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3411,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3414,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3416,1
    - Dst: database_get_xml_visible_schemas
      Src: /src/postgres/src/backend/utils/adt/xml.c:3418,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3422,1
    - Dst: schema_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3425,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3428,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3429,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3432,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - xmlschema
    - nulls
    - tableforest
    - targetns
    argTypes:
    - char*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3437
      start: 3397
    functionDepth: 9
    functionLinenumber: 3397
    functionLinenumberEnd: 3437
    functionName: database_to_xml_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendBinaryStringInfo
    - SPI_finish
    - xmldata_root_element_end
    - appendStringInfo
    - database_get_xml_visible_schemas
    - schema_to_xml_internal
    - get_database_name
    - map_sql_identifier_to_xml_name
    - xmldata_root_element_start
    - lfirst_oid
    - makeStringInfo
    - SPI_connect
    - appendStringInfoChar
    linkageType: ''
    returnType: StringInfo
    signature: "StringInfo database_to_xml_internal(const char *xmlschema, bool nulls,\n\t\t\t\t\t\t
      bool tableforest, const char *targetns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3422,1
    - Dst: schema_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3425,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3428,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3430
      start: 3420
    functionDepth: 9
    functionLinenumber: 3420
    functionLinenumberEnd: 3430
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - appendBinaryStringInfo
    - lfirst_oid
    - schema_to_xml_internal
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: void foreach(cell, nspid_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3443,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3444,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3445,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3445,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3447,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3447,1
    - Dst: database_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3449
      start: 3440
    functionDepth: 10
    functionLinenumber: 3440
    functionLinenumberEnd: 3449
    functionName: database_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_XML_P
    - PG_GETARG_BOOL
    - database_to_xml_internal
    - stringinfo_to_xmltype
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum database_to_xml(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3462,1
    - Dst: xsd_schema_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3464,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3466,1
    - Dst: database_get_xml_visible_tables
      Src: /src/postgres/src/backend/utils/adt/xml.c:3468,1
    - Dst: database_get_xml_visible_schemas
      Src: /src/postgres/src/backend/utils/adt/xml.c:3469,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3476,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3476,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:3477,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/xml.c:3477,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3478,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3481,1
    - Dst: map_sql_typecoll_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3482,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3484,1
    - Dst: map_sql_catalog_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3485,1
    - Dst: xsd_schema_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3487,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - nulls
    - tableforest
    - targetns
    argTypes:
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3492
      start: 3452
    functionDepth: 8
    functionLinenumber: 3452
    functionLinenumberEnd: 3492
    functionName: database_to_xmlschema_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xsd_schema_element_end
    - SPI_finish
    - lfirst_oid
    - CreateTupleDescCopy
    - lappend
    - database_get_xml_visible_schemas
    - appendStringInfoString
    - map_sql_catalog_to_xmlschema_types
    - table_open
    - database_get_xml_visible_tables
    - map_sql_typecoll_to_xmlschema_types
    - xsd_schema_element_start
    - table_close
    - makeStringInfo
    - SPI_connect
    linkageType: ''
    returnType: StringInfo
    signature: "StringInfo database_to_xmlschema_internal(bool nulls, bool tableforest,\n\t\t\t\t\t\t\t
      \  const char *targetns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3476,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3476,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:3477,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/xml.c:3477,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3479
      start: 3472
    functionDepth: 6
    functionLinenumber: 3472
    functionLinenumberEnd: 3479
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - CreateTupleDescCopy
    - lappend
    - table_open
    - lfirst_oid
    - table_close
    linkageType: ''
    returnType: void
    signature: void foreach(cell, relid_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3498,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3499,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3500,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3500,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3502,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3502,1
    - Dst: database_to_xmlschema_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3504
      start: 3495
    functionDepth: 9
    functionLinenumber: 3495
    functionLinenumberEnd: 3504
    functionName: database_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_XML_P
    - PG_GETARG_BOOL
    - database_to_xmlschema_internal
    - stringinfo_to_xmltype
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum database_to_xmlschema(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3510,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3511,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3512,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3512,1
    - Dst: database_to_xmlschema_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3515,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3517,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3517,1
    - Dst: database_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3519
      start: 3507
    functionDepth: 10
    functionLinenumber: 3507
    functionLinenumberEnd: 3519
    functionName: database_to_xml_and_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_XML_P
    - database_to_xmlschema_internal
    - PG_GETARG_BOOL
    - database_to_xml_internal
    - stringinfo_to_xmltype
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum database_to_xml_and_xmlschema(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3531,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3534,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3535,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3537,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3538,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3540,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3541,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3543,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3544,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - a
    - b
    - c
    - d
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3547
      start: 3526
    functionDepth: 4
    functionLinenumber: 3526
    functionLinenumberEnd: 3547
    functionName: map_multipart_sql_identifier_to_xml_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - map_sql_identifier_to_xml_name
    linkageType: ''
    returnType: char
    signature: 'char *

      map_multipart_sql_identifier_to_xml_name(const char *a, const char *b, const
      char *c, const char *d)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3567,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3569,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/xml.c:3574,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:3574,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3575,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3576,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/xml.c:3577,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3579,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3579,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3582,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3583,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3584,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3585,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3587,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3588,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3589,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3590,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/xml.c:3592,1
    - Dst: xsd_schema_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3605,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3607,1
    - Dst: map_sql_typecoll_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3608,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/xml.c:3608,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3610,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3617,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3621,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3623,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3623,1
    - Dst: map_sql_type_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3625,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3629,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3635,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3643,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3648,1
    - Dst: xsd_schema_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3652,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 5
    argNames:
    - tupdesc
    - relid
    - nulls
    - tableforest
    - targetns
    argTypes:
    - TupleDesc
    - Oid
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3655
      start: 3557
    functionDepth: 5
    functionLinenumber: 3557
    functionLinenumberEnd: 3655
    functionName: map_sql_table_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 5
    functionsReached:
    - map_sql_type_to_xml_name
    - NameStr
    - map_sql_typecoll_to_xmlschema_types
    - xsd_schema_element_start
    - SearchSysCache1
    - elog
    - HeapTupleIsValid
    - appendStringInfoString
    - ReleaseSysCache
    - get_database_name
    - OidIsValid
    - ObjectIdGetDatum
    - map_multipart_sql_identifier_to_xml_name
    - initStringInfo
    - GETSTRUCT
    - list_make1
    - TupleDescAttr
    - get_namespace_name
    - xsd_schema_element_end
    - appendStringInfo
    - map_sql_identifier_to_xml_name
    linkageType: ''
    returnType: char
    signature: "char *\nmap_sql_table_to_xmlschema(TupleDesc tupdesc, Oid relid, bool
      nulls,\n\t\t\t\t\t\t   bool tableforest, const char *targetns)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3673,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3674,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3676,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3678,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3680,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3685,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3688,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3691,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3696,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3697,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3698,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3699,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3705,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3709,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3715,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3718,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3720,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3723,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 5
    argNames:
    - nspid
    - relid_list
    - nulls
    - tableforest
    - targetns
    argTypes:
    - Oid
    - List*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3728
      start: 3662
    functionDepth: 5
    functionLinenumber: 3662
    functionLinenumberEnd: 3728
    functionName: map_sql_schema_to_xmlschema_types
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - get_namespace_name
    - map_multipart_sql_identifier_to_xml_name
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - get_database_name
    - get_rel_name
    - map_sql_identifier_to_xml_name
    - lfirst_oid
    linkageType: ''
    returnType: char
    signature: "char *\nmap_sql_schema_to_xmlschema_types(Oid nspid, List *relid_list,
      bool nulls,\n\t\t\t\t\t\t\t\t  bool tableforest, const char *targetns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3696,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3697,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3698,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3699,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3705,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3709,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3712
      start: 3694
    functionDepth: 5
    functionLinenumber: 3694
    functionLinenumberEnd: 3712
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - map_multipart_sql_identifier_to_xml_name
    - appendStringInfo
    - get_rel_name
    - map_sql_identifier_to_xml_name
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, relid_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3745,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3747,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3749,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3751,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3756,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3758,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3763,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3764,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3765,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3766,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3771,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3776,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3778,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - nspid_list
    - nulls
    - tableforest
    - targetns
    argTypes:
    - List*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3786
      start: 3735
    functionDepth: 5
    functionLinenumber: 3735
    functionLinenumberEnd: 3786
    functionName: map_sql_catalog_to_xmlschema_types
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - get_namespace_name
    - map_multipart_sql_identifier_to_xml_name
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - get_database_name
    - map_sql_identifier_to_xml_name
    - lfirst_oid
    linkageType: ''
    returnType: char
    signature: "char *\nmap_sql_catalog_to_xmlschema_types(List *nspid_list, bool
      nulls,\n\t\t\t\t\t\t\t\t   bool tableforest, const char *targetns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3763,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3764,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3765,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3766,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3774
      start: 3761
    functionDepth: 5
    functionLinenumber: 3761
    functionLinenumberEnd: 3774
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - get_namespace_name
    - map_multipart_sql_identifier_to_xml_name
    - appendStringInfo
    - map_sql_identifier_to_xml_name
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell, nspid_list)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3797,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3803,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3805,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3809,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3811,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3815,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3817,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3822,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3825,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3828,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3831,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3834,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3837,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3841,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3843,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3847,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3849,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3853,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3855,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3859,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3861,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3864,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3867,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/xml.c:3874,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:3874,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3875,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3876,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/xml.c:3877,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3879,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3880,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3881,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3882,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3883,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/xml.c:3885,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 72
    argCount: 2
    argNames:
    - typeoid
    - typmod
    argTypes:
    - Oid
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3890
      start: 3792
    functionDepth: 5
    functionLinenumber: 3792
    functionLinenumberEnd: 3890
    functionName: map_sql_type_to_xml_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - SearchSysCache1
    - elog
    - get_namespace_name
    - map_multipart_sql_identifier_to_xml_name
    - HeapTupleIsValid
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - ReleaseSysCache
    - get_database_name
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    linkageType: ''
    returnType: char
    signature: 'char *

      map_sql_type_to_xml_name(Oid typeoid, int typmod)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:3908,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3912,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3916,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3923,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/utils/adt/xml.c:3924,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3927,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3931,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3935,1
    - Dst: map_sql_type_to_xmlschema_type
      Src: /src/postgres/src/backend/utils/adt/xml.c:3936,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3936,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - tupdesc_list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3941
      start: 3897
    functionDepth: 7
    functionLinenumber: 3897
    functionLinenumberEnd: 3941
    functionName: map_sql_typecoll_to_xmlschema_types
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - list_append_unique_oid
    - appendStringInfo
    - initStringInfo
    - getBaseType
    - lfirst
    - map_sql_type_to_xmlschema_type
    - TupleDescAttr
    - lfirst_oid
    linkageType: ''
    returnType: char
    signature: 'char *

      map_sql_typecoll_to_xmlschema_types(List *tupdesc_list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:3908,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3912,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3916,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3918
      start: 3906
    functionDepth: 7
    functionLinenumber: 3906
    functionLinenumberEnd: 3918
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - TupleDescAttr
    - lfirst
    - list_append_unique_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell0, tupdesc_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3923,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/utils/adt/xml.c:3924,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3928
      start: 3921
    functionDepth: 7
    functionLinenumber: 3921
    functionLinenumberEnd: 3928
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - getBaseType
    - lfirst_oid
    - list_append_unique_oid
    linkageType: ''
    returnType: void
    signature: void foreach(cell0, uniquetypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3935,1
    - Dst: map_sql_type_to_xmlschema_type
      Src: /src/postgres/src/backend/utils/adt/xml.c:3936,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3938
      start: 3933
    functionDepth: 2
    functionLinenumber: 3933
    functionLinenumberEnd: 3938
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 471
    functionsReached:
    - appendStringInfo
    - lfirst_oid
    - map_sql_type_to_xmlschema_type
    linkageType: ''
    returnType: void
    signature: void foreach(cell0, uniquetypes)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: map_sql_type_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3956,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3958,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3962,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3971,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3979,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3982,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3985,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3989,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3997,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4007,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4016,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4025,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4035,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4040,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4045,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4055,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4060,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4065,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4078,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4083,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4088,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4096,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/utils/adt/xml.c:4103,1
    - Dst: getBaseTypeAndTypmod
      Src: /src/postgres/src/backend/utils/adt/xml.c:4108,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4110,1
    - Dst: map_sql_type_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:4112,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4116,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 71
    argCount: 2
    argNames:
    - typeoid
    - typmod
    argTypes:
    - Oid
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4120
      start: 3952
    functionDepth: 6
    functionLinenumber: 3952
    functionLinenumberEnd: 4120
    functionName: map_sql_type_to_xmlschema_type
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - get_typtype
    - appendStringInfo
    - map_sql_type_to_xml_name
    - initStringInfo
    - appendStringInfoString
    - getBaseTypeAndTypmod
    linkageType: ''
    returnType: char
    signature: 'char *

      map_sql_type_to_xmlschema_type(Oid typeoid, int typmod)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:4136,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:4146,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4148,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:4156,1
    - Dst: SPI_fname
      Src: /src/postgres/src/backend/utils/adt/xml.c:4156,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/backend/utils/adt/xml.c:4158,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4165,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4168,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:4170,1
    - Dst: SPI_gettypeid
      Src: /src/postgres/src/backend/utils/adt/xml.c:4171,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:4177,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:4178,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4181,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 7
    argNames:
    - rownum
    - result
    - tablename
    - nulls
    - tableforest
    - targetns
    - top_level
    argTypes:
    - uint64
    - StringInfo
    - char*
    - bool
    - bool
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4182
      start: 4127
    functionDepth: 5
    functionLinenumber: 4127
    functionLinenumberEnd: 4182
    functionName: SPI_sql_row_to_xmlelement
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - xmldata_root_element_end
    - appendStringInfo
    - appendStringInfoString
    - map_sql_value_to_xml_value
    - map_sql_identifier_to_xml_name
    - xmldata_root_element_start
    - SPI_gettypeid
    - SPI_fname
    - appendStringInfoChar
    - SPI_getbinval
    linkageType: ''
    returnType: void
    signature: "void SPI_sql_row_to_xmlelement(uint64 rownum, StringInfo result, char
      *tablename,\n\t\t\t\t\t\t  bool nulls, bool tableforest,\n\t\t\t\t\t\t  const
      char *targetns, bool top_level)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4210,1
    - Dst: xmlBufferCreate
      Src: /src/postgres/src/backend/utils/adt/xml.c:4214,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4216,1
    - Dst: xmlCopyNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4231,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4233,1
    - Dst: xmlNodeDump
      Src: /src/postgres/src/backend/utils/adt/xml.c:4238,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4240,1
    - Dst: xmlBuffer_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:4243,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4245,1
    - Dst: nodefree
      Src: /src/postgres/src/backend/utils/adt/xml.c:4248,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:4250,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4252,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4258,1
    - Dst: xmlXPathCastNodeToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4262,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4264,1
    - Dst: escape_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:4268,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/xml.c:4270,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:4271,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4273,1
    - Dst: xmlFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:4276,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4278,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 2
    argNames:
    - cur
    - xmlerrcxt
    argTypes:
    - xmlNodePtr
    - PgXmlErrorContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4282
      start: 4197
    functionDepth: 4
    functionLinenumber: 4197
    functionLinenumberEnd: 4282
    functionName: xml_xmlnodetoxmltype
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - nodefree
    - PG_TRY
    - xmlBuffer_to_xmltype
    - xmlFree
    - xmlBufferCreate
    - pfree
    - cstring_to_text
    - xmlCopyNode
    - xml_ereport
    - xmlXPathCastNodeToString
    - escape_xml
    - xmlBufferFree
    - PG_FINALLY
    - PG_END_TRY
    - xmlNodeDump
    linkageType: ''
    returnType: text
    signature: 'text *

      xml_xmlnodetoxmltype(xmlNodePtr cur, PgXmlErrorContext *xmlerrcxt)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:4318,1
    - Dst: xml_xmlnodetoxmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:4318,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/xml.c:4320,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:4330,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:4337,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:4344,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:4349,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:4355,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:4356,1
    - Dst: cstring_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:4356,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/xml.c:4357,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 3
    argNames:
    - xpathobj
    - astate
    - xmlerrcxt
    argTypes:
    - xmlXPathObjectPtr
    - ArrayBuildState*
    - PgXmlErrorContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4360
      start: 4296
    functionDepth: 5
    functionLinenumber: 4296
    functionLinenumberEnd: 4360
    functionName: xml_xpathobjtoxmlarray
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - elog
    - xml_xmlnodetoxmltype
    - CStringGetDatum
    - map_sql_value_to_xml_value
    - Float8GetDatum
    - PointerGetDatum
    - cstring_to_xmltype
    - BoolGetDatum
    - accumArrayResult
    linkageType: ''
    returnType: int
    signature: "int xml_xpathobjtoxmlarray(xmlXPathObjectPtr xpathobj,\n\t\t\t\t\t
      \  ArrayBuildState *astate,\n\t\t\t\t\t   PgXmlErrorContext *xmlerrcxt)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/xml.c:4405,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/xml.c:4410,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4413,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4414,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4415,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:4416,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4418,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/xml.c:4418,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/xml.c:4420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4424,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/xml.c:4434,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/xml.c:4435,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/xml.c:4436,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4438,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4439,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4440,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4442,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4443,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4443,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:4452,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:4453,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:4455,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4457,1
    - Dst: xmlInitParser
      Src: /src/postgres/src/backend/utils/adt/xml.c:4459,1
    - Dst: xmlNewParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4465,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4467,1
    - Dst: xmlCtxtReadMemory
      Src: /src/postgres/src/backend/utils/adt/xml.c:4469,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4472,1
    - Dst: xmlXPathNewContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4474,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4476,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4490,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4491,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4492,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4493,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4494,1
    - Dst: xmlXPathRegisterNs
      Src: /src/postgres/src/backend/utils/adt/xml.c:4495,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4498,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4499,1
    - Dst: xmlXPathCtxtCompile
      Src: /src/postgres/src/backend/utils/adt/xml.c:4510,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4512,1
    - Dst: xmlXPathCompiledEval
      Src: /src/postgres/src/backend/utils/adt/xml.c:4522,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4524,1
    - Dst: xml_xpathobjtoxmlarray
      Src: /src/postgres/src/backend/utils/adt/xml.c:4531,1
    - Dst: xml_xpathobjtoxmlarray
      Src: /src/postgres/src/backend/utils/adt/xml.c:4533,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:4535,1
    - Dst: xmlXPathFreeObject
      Src: /src/postgres/src/backend/utils/adt/xml.c:4538,1
    - Dst: xmlXPathFreeCompExpr
      Src: /src/postgres/src/backend/utils/adt/xml.c:4540,1
    - Dst: xmlXPathFreeContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4542,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4544,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4546,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:4548,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:4550,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4552,1
    - Dst: xmlXPathFreeObject
      Src: /src/postgres/src/backend/utils/adt/xml.c:4554,1
    - Dst: xmlXPathFreeCompExpr
      Src: /src/postgres/src/backend/utils/adt/xml.c:4555,1
    - Dst: xmlXPathFreeContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4556,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4557,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4558,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:4560,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 78
    argCount: 5
    argNames:
    - xpath_expr_text
    - data
    - namespaces
    - res_nitems
    - astate
    argTypes:
    - text*
    - xmltype*
    - ArrayType*
    - int*
    - ArrayBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4561
      start: 4374
    functionDepth: 6
    functionLinenumber: 4374
    functionLinenumberEnd: 4561
    functionName: xpath_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - errcode
    - xmlXPathFreeCompExpr
    - xml_xpathobjtoxmlarray
    - VARDATA_ANY
    - xmlXPathRegisterNs
    - ARR_NDIM
    - VARDATA
    - pg_xml_init
    - xmlXPathFreeContext
    - xmlInitParser
    - parse_xml_decl
    - Assert
    - GetDatabaseEncoding
    - xml_ereport
    - PG_RE_THROW
    - VARSIZE_ANY_EXHDR
    - xmlXPathFreeObject
    - errmsg
    - xmlNewParserCtxt
    - TextDatumGetCString
    - pg_xmlCharStrndup
    - PG_END_TRY
    - ARR_DIMS
    - xmlFreeParserCtxt
    - VARSIZE
    - xmlCtxtReadMemory
    - ereport
    - pg_xml_done
    - xmlFreeDoc
    - deconstruct_array_builtin
    - PG_CATCH
    - ARR_ELEMTYPE
    - xmlXPathCtxtCompile
    - xmlXPathNewContext
    - errdetail
    - xmlXPathCompiledEval
    linkageType: ''
    returnType: void
    signature: "void xpath_internal(text *xpath_expr_text, xmltype *data, ArrayType
      *namespaces,\n\t\t\t   int *res_nitems, ArrayBuildState *astate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:4575,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4576,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4577,1
    - Dst: initArrayResult
      Src: /src/postgres/src/backend/utils/adt/xml.c:4580,1
    - Dst: xpath_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:4581,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/xml.c:4583,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/utils/adt/xml.c:4583,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4588
      start: 4571
    functionDepth: 7
    functionLinenumber: 4571
    functionLinenumberEnd: 4588
    functionName: xpath
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xpath_internal
    - PG_GETARG_XML_P
    - PG_RETURN_DATUM
    - NO_XML_SUPPORT
    - PG_GETARG_ARRAYTYPE_P
    - initArrayResult
    - makeArrayResult
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum xpath(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:4598,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4599,1
    - Dst: xpath_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:4602,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4605,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4610
      start: 4594
    functionDepth: 7
    functionLinenumber: 4594
    functionLinenumberEnd: 4610
    functionName: xmlexists
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xpath_internal
    - PG_GETARG_XML_P
    - PG_RETURN_BOOL
    - NO_XML_SUPPORT
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum xmlexists(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:4621,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4622,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4623,1
    - Dst: xpath_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:4626,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4629,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4634
      start: 4617
    functionDepth: 7
    functionLinenumber: 4617
    functionLinenumberEnd: 4634
    functionName: xpath_exists
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xpath_internal
    - PG_GETARG_XML_P
    - PG_RETURN_BOOL
    - PG_GETARG_ARRAYTYPE_P
    - NO_XML_SUPPORT
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum xpath_exists(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: xml_parse
      Src: /src/postgres/src/backend/utils/adt/xml.c:4650,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:4651,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - data
    - xmloption_arg
    argTypes:
    - text*
    - XmlOptionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4656
      start: 4641
    functionDepth: 5
    functionLinenumber: 4641
    functionLinenumberEnd: 4656
    functionName: wellformed_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - xmlFreeDoc
    - xml_parse
    linkageType: ''
    returnType: bool
    signature: bool wellformed_xml(text *data, XmlOptionType xmloption_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:4663,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4665,1
    - Dst: wellformed_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:4665,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4670
      start: 4659
    functionDepth: 6
    functionLinenumber: 4659
    functionLinenumberEnd: 4670
    functionName: xml_is_well_formed
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - NO_XML_SUPPORT
    - wellformed_xml
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum xml_is_well_formed(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:4676,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4678,1
    - Dst: wellformed_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:4678,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4683
      start: 4672
    functionDepth: 6
    functionLinenumber: 4672
    functionLinenumberEnd: 4683
    functionName: xml_is_well_formed_document
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - NO_XML_SUPPORT
    - wellformed_xml
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum xml_is_well_formed_document(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:4689,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4691,1
    - Dst: wellformed_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:4691,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4696
      start: 4685
    functionDepth: 6
    functionLinenumber: 4685
    functionLinenumberEnd: 4696
    functionName: xml_is_well_formed_content
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - NO_XML_SUPPORT
    - wellformed_xml
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum xml_is_well_formed_content(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/xml.c:4713,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:4714,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:4717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - state
    - fname
    argTypes:
    - TableFuncScanState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4720
      start: 4708
    functionDepth: 1
    functionLinenumber: 4708
    functionLinenumberEnd: 4720
    functionName: GetXmlTableBuilderPrivateData
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - elog
    - IsA
    linkageType: ''
    returnType: XmlTableBuilderData
    signature: 'XmlTableBuilderData *

      GetXmlTableBuilderPrivateData(TableFuncScanState *state, const char *fname)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/xml.c:4742,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/utils/adt/xml.c:4745,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:4747,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4749,1
    - Dst: xmlInitParser
      Src: /src/postgres/src/backend/utils/adt/xml.c:4751,1
    - Dst: xmlNewParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4753,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4755,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:4758,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4761,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:4763,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:4765,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4767,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4774,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - state
    - natts
    argTypes:
    - TableFuncScanState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4776
      start: 4734
    functionDepth: 4
    functionLinenumber: 4734
    functionLinenumberEnd: 4776
    functionName: XmlTableInitOpaque
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlInitParser
    - palloc0_object
    - PG_CATCH
    - PG_TRY
    - palloc0_array
    - xmlFreeParserCtxt
    - xml_ereport
    - pg_xml_done
    - PG_RE_THROW
    - NO_XML_SUPPORT
    - pg_xml_init
    - xmlNewParserCtxt
    - PG_END_TRY
    linkageType: ''
    returnType: void
    signature: void XmlTableInitOpaque(TableFuncScanState *state, int natts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetXmlP
      Src: /src/postgres/src/backend/utils/adt/xml.c:4787,1
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4794,1
    - Dst: xml_out_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:4800,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4802,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4803,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4805,1
    - Dst: xmlCtxtReadMemory
      Src: /src/postgres/src/backend/utils/adt/xml.c:4807,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4809,1
    - Dst: xmlXPathNewContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4811,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4813,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:4817,1
    - Dst: xmlXPathFreeContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4820,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4822,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:4824,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4826,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4831,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - TableFuncScanState*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4833
      start: 4782
    functionDepth: 4
    functionLinenumber: 4782
    functionLinenumberEnd: 4833
    functionName: XmlTableSetDocument
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_CATCH
    - PG_TRY
    - GetXmlTableBuilderPrivateData
    - xmlCtxtReadMemory
    - xml_ereport
    - xmlFreeDoc
    - PG_RE_THROW
    - strlen
    - xmlXPathNewContext
    - NO_XML_SUPPORT
    - xml_out_internal
    - DatumGetXmlP
    - pg_xmlCharStrndup
    - PG_END_TRY
    - xmlXPathFreeContext
    linkageType: ''
    returnType: void
    signature: void XmlTableSetDocument(TableFuncScanState *state, Datum value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4846,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4847,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4848,1
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4849,1
    - Dst: xmlXPathRegisterNs
      Src: /src/postgres/src/backend/utils/adt/xml.c:4851,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4852,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4852,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4853,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4853,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4854,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4857,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - state
    - name
    - uri
    argTypes:
    - TableFuncScanState*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4859
      start: 4839
    functionDepth: 3
    functionLinenumber: 4839
    functionLinenumberEnd: 4859
    functionName: XmlTableSetNamespace
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - xml_ereport
    - xmlXPathRegisterNs
    - strlen
    - errmsg
    - GetXmlTableBuilderPrivateData
    - pg_xmlCharStrndup
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: void
    signature: void XmlTableSetNamespace(TableFuncScanState *state, const char *name,
      const char *uri)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4872,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4875,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4876,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4877,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4879,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4882,1
    - Dst: xmlXPathCtxtCompile
      Src: /src/postgres/src/backend/utils/adt/xml.c:4884,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4886,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4889,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - state
    - path
    argTypes:
    - TableFuncScanState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4891
      start: 4865
    functionDepth: 3
    functionLinenumber: 4865
    functionLinenumberEnd: 4891
    functionName: XmlTableSetRowFilter
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - xml_ereport
    - xmlXPathCtxtCompile
    - strlen
    - errmsg
    - GetXmlTableBuilderPrivateData
    - pg_xmlCharStrndup
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: void
    signature: void XmlTableSetRowFilter(TableFuncScanState *state, const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4904,1
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4906,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4909,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4910,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4911,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4913,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4913,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4916,1
    - Dst: xmlXPathCtxtCompile
      Src: /src/postgres/src/backend/utils/adt/xml.c:4918,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4920,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4923,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - state
    - path
    - colnum
    argTypes:
    - TableFuncScanState*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4925
      start: 4897
    functionDepth: 3
    functionLinenumber: 4897
    functionLinenumberEnd: 4925
    functionName: XmlTableSetColumnFilter
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - xml_ereport
    - xmlXPathCtxtCompile
    - strlen
    - errmsg
    - GetXmlTableBuilderPrivateData
    - pg_xmlCharStrndup
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: void
    signature: void XmlTableSetColumnFilter(TableFuncScanState *state, const char
      *path, int colnum)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4938,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4941,1
    - Dst: xmlXPathCompiledEval
      Src: /src/postgres/src/backend/utils/adt/xml.c:4945,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4947,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4964,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4967
      start: 4932
    functionDepth: 3
    functionLinenumber: 4932
    functionLinenumberEnd: 4967
    functionName: XmlTableFetchRow
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xml_ereport
    - xmlSetStructuredErrorFunc
    - GetXmlTableBuilderPrivateData
    - xmlXPathCompiledEval
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: bool
    signature: bool XmlTableFetchRow(TableFuncScanState *state)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4986,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4988,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4993,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4997,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4999,1
    - Dst: xmlXPathCompiledEval
      Src: /src/postgres/src/backend/utils/adt/xml.c:5009,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:5011,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:5040,1
    - Dst: xml_xmlnodetoxmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:5044,1
    - Dst: appendStringInfoText
      Src: /src/postgres/src/backend/utils/adt/xml.c:5047,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:5056,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:5057,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:5058,1
    - Dst: xmlXPathCastNodeSetToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:5060,1
    - Dst: xml_pstrdup_and_free
      Src: /src/postgres/src/backend/utils/adt/xml.c:5061,1
    - Dst: escape_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:5069,1
    - Dst: get_type_category_preferred
      Src: /src/postgres/src/backend/utils/adt/xml.c:5080,1
    - Dst: xmlXPathCastBooleanToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:5083,1
    - Dst: xmlXPathCastNumberToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:5085,1
    - Dst: xmlXPathCastBooleanToNumber
      Src: /src/postgres/src/backend/utils/adt/xml.c:5085,1
    - Dst: xml_pstrdup_and_free
      Src: /src/postgres/src/backend/utils/adt/xml.c:5087,1
    - Dst: xmlXPathCastNumberToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:5093,1
    - Dst: xml_pstrdup_and_free
      Src: /src/postgres/src/backend/utils/adt/xml.c:5094,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:5097,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:5103,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/xml.c:5106,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/utils/adt/xml.c:5111,1
    - Dst: xmlXPathFreeObject
      Src: /src/postgres/src/backend/utils/adt/xml.c:5114,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:5116,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:5120,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 62
    argCount: 5
    argNames:
    - state
    - colnum
    - typid
    - typmod
    - isnull
    argTypes:
    - TableFuncScanState*
    - int
    - Oid
    - int32
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5123
      start: 4977
    functionDepth: 5
    functionLinenumber: 4977
    functionLinenumberEnd: 5123
    functionName: XmlTableGetValue
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_TRY
    - errcode
    - xmlXPathCastNumberToString
    - get_type_category_preferred
    - xmlXPathCastNodeSetToString
    - elog
    - xml_xmlnodetoxmltype
    - Assert
    - xml_ereport
    - xmlXPathCastBooleanToString
    - PG_FINALLY
    - xmlXPathFreeObject
    - errmsg
    - xml_pstrdup_and_free
    - PG_END_TRY
    - initStringInfo
    - ereport
    - xmlSetStructuredErrorFunc
    - GetXmlTableBuilderPrivateData
    - escape_xml
    - InputFunctionCall
    - xmlXPathCastBooleanToNumber
    - appendStringInfoText
    - xmlXPathCompiledEval
    - NO_XML_SUPPORT
    linkageType: ''
    returnType: Datum
    signature: "Datum XmlTableGetValue(TableFuncScanState *state, int colnum,\n\t\t\t\t
      Oid typid, int32 typmod, bool *isnull)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:5135,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:5138,1
    - Dst: xmlXPathFreeCompExpr
      Src: /src/postgres/src/backend/utils/adt/xml.c:5146,1
    - Dst: xmlXPathFreeObject
      Src: /src/postgres/src/backend/utils/adt/xml.c:5150,1
    - Dst: xmlXPathFreeCompExpr
      Src: /src/postgres/src/backend/utils/adt/xml.c:5152,1
    - Dst: xmlXPathFreeContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:5154,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:5156,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:5158,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:5160,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:5167,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5169
      start: 5129
    functionDepth: 2
    functionLinenumber: 5129
    functionLinenumberEnd: 5169
    functionName: XmlTableDestroyOpaque
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlFreeParserCtxt
    - xmlXPathFreeCompExpr
    - pg_xml_done
    - xmlXPathFreeObject
    - xmlSetStructuredErrorFunc
    - GetXmlTableBuilderPrivateData
    - xmlFreeDoc
    - NO_XML_SUPPORT
    - xmlXPathFreeContext
    linkageType: ''
    returnType: void
    signature: void XmlTableDestroyOpaque(TableFuncScanState *state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:77,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:84,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:86,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:87,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:93,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:94,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:95,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:96,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:96,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:101,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:105,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:117,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:121,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:123,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:130,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:131,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:132,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:133,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:133,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:138,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:141,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:150,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:151,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:152,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:153,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 5
    argNames:
    - sbsref
    - indirection
    - pstate
    - isSlice
    - isAssignment
    argTypes:
    - SubscriptingRef*
    - List*
    - ParseState*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 56
    functionDepth: 6
    functionLinenumber: 56
    functionLinenumberEnd: 166
    functionName: array_subscript_transform
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - coerce_to_target_type
    - exprType
    - errcode
    - Int32GetDatum
    - lappend
    - ereport
    - Assert
    - transformExpr
    - errmsg
    - parser_errposition
    - exprLocation
    - list_length
    - makeConst
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: "void array_subscript_transform(SubscriptingRef *sbsref,\n\t\t\t\t\t\t
      \ List *indirection,\n\t\t\t\t\t\t  ParseState *pstate,\n\t\t\t\t\t\t  bool
      isSlice,\n\t\t\t\t\t\t  bool isAssignment)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:77,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:84,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:86,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:87,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:93,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:94,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:95,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:96,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:96,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:101,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:105,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:117,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:121,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:123,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:130,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:131,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:132,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:133,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:133,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:138,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:141,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 75
    functionDepth: 6
    functionLinenumber: 75
    functionLinenumberEnd: 142
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 471
    functionsReached:
    - coerce_to_target_type
    - exprType
    - errcode
    - Int32GetDatum
    - lappend
    - ereport
    - Assert
    - transformExpr
    - errmsg
    - parser_errposition
    - exprLocation
    - makeConst
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(idx, indirection)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:198,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:199,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:200,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:217,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:218,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:219,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:223,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 228
    functionName: array_subscript_check_subscripts
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool array_subscript_check_subscripts(ExprState *state,\n\t\t\t\t\t\t\t\t
      ExprEvalStep *op,\n\t\t\t\t\t\t\t\t ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:246,1
    - Dst: array_get_element
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 256
    functionName: array_subscript_fetch
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - Assert
    - array_get_element
    linkageType: ''
    returnType: void
    signature: "void array_subscript_fetch(ExprState *state,\n\t\t\t\t\t  ExprEvalStep
      *op,\n\t\t\t\t\t  ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:274,1
    - Dst: array_get_slice
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 287
    functionName: array_subscript_fetch_slice
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - Assert
    - array_get_slice
    linkageType: ''
    returnType: void
    signature: "void array_subscript_fetch_slice(ExprState *state,\n\t\t\t\t\t\t\tExprEvalStep
      *op,\n\t\t\t\t\t\t\tExprContext *econtext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:323,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:323,1
    - Dst: array_set_element
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:327,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 337
    functionName: array_subscript_assign
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - construct_empty_array
    - PointerGetDatum
    - array_set_element
    linkageType: ''
    returnType: void
    signature: "void array_subscript_assign(ExprState *state,\n\t\t\t\t\t   ExprEvalStep
      *op,\n\t\t\t\t\t   ExprContext *econtext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:373,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:373,1
    - Dst: array_set_slice
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:377,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 390
    functionName: array_subscript_assign_slice
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - construct_empty_array
    - PointerGetDatum
    - array_set_slice
    linkageType: ''
    returnType: void
    signature: "void array_subscript_assign_slice(ExprState *state,\n\t\t\t\t\t\t\t
      ExprEvalStep *op,\n\t\t\t\t\t\t\t ExprContext *econtext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_element
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 423
    functionName: array_subscript_fetch_old
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - array_get_element
    linkageType: ''
    returnType: void
    signature: "void array_subscript_fetch_old(ExprState *state,\n\t\t\t\t\t\t  ExprEvalStep
      *op,\n\t\t\t\t\t\t  ExprContext *econtext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_slice
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 469
    functionName: array_subscript_fetch_old_slice
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - array_get_slice
    linkageType: ''
    returnType: void
    signature: "void array_subscript_fetch_old_slice(ExprState *state,\n\t\t\t\t\t\t\t\tExprEvalStep
      *op,\n\t\t\t\t\t\t\t\tExprContext *econtext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:488,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:489,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:490,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:496,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:501,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:508,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:509,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - sbsref
    - sbsrefstate
    - methods
    argTypes:
    - SubscriptingRef*
    - SubscriptingRefState*
    - SubscriptExecSteps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 474
    functionDepth: 2
    functionLinenumber: 474
    functionLinenumberEnd: 530
    functionName: array_exec_setup
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - elog
    - get_typlenbyvalalign
    - errcode
    - ereport
    - get_typlen
    - errmsg
    - palloc_object
    linkageType: ''
    returnType: void
    signature: "void array_exec_setup(const SubscriptingRef *sbsref,\n\t\t\t\t SubscriptingRefState
      *sbsrefstate,\n\t\t\t\t SubscriptExecSteps *methods)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 552
    functionName: array_subscript_handler
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum array_subscript_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 579
    functionName: raw_array_subscript_handler
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum raw_array_subscript_handler(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:589,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:592,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:602,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:604,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:607,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:611,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 612
    functionName: array_subscript_handler_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - linitial
    - lsecond
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum array_subscript_handler_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parse_bool_with_len
      Src: /src/postgres/src/backend/utils/adt/bool.c:33,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/bool.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - result
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: parse_bool
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 5
    functionsReached:
    - strlen
    - parse_bool_with_len
    linkageType: ''
    returnType: bool
    signature: bool parse_bool(const char *value, bool *result)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/bool.c:44,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/bool.c:53,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/bool.c:62,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/bool.c:71,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/bool.c:81,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/bool.c:87,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 67
    argCount: 3
    argNames:
    - value
    - len
    - result
    argTypes:
    - char*
    - size_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 117
    functionName: parse_bool_with_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 1
    functionsReached:
    - pg_strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool parse_bool_with_len(const char *value, size_t len, bool *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/bool.c:129,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/bool.c:138,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/bool.c:141,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/bool.c:142,1
    - Dst: parse_bool_with_len
      Src: /src/postgres/src/backend/utils/adt/bool.c:145,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:146,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/bool.c:148,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bool.c:149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bool.c:150,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 152
    functionName: boolin
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_GETARG_CSTRING
    - isspace
    - strlen
    - parse_bool_with_len
    - PG_RETURN_BOOL
    - errmsg
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum boolin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:160,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bool.c:161,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/bool.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 166
    functionName: boolout
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CSTRING
    - PG_GETARG_BOOL
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum boolout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bool.c:177,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/utils/adt/bool.c:180,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 182
    functionName: boolrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - pq_getmsgbyte
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum boolrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:190,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/bool.c:193,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/bool.c:194,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bool.c:195,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/bool.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 187
    functionDepth: 4
    functionLinenumber: 187
    functionLinenumberEnd: 196
    functionName: boolsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_BOOL
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendbyte
    linkageType: ''
    returnType: Datum
    signature: Datum boolsend(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:207,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/bool.c:215,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/bool.c:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 216
    functionName: booltext
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - PG_GETARG_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum booltext(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:226,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:227,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 230
    functionName: booleq
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum booleq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:235,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:236,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 239
    functionName: boolne
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum boolne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:244,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:245,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 248
    functionName: boollt
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum boollt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:253,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:254,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 257
    functionName: boolgt
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum boolgt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:262,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:263,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: boolle
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum boolle(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:271,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:272,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 275
    functionName: boolge
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum boolge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/bool.c:280,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 281
    functionName: hashbool
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - hash_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hashbool(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/utils/adt/bool.c:286,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:286,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/bool.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 287
    functionName: hashboolextended
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - hash_uint32_extended
    - PG_GETARG_INT64
    - PG_GETARG_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum hashboolextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:302,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:302,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 303
    functionName: booland_statefunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum booland_statefunc(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:314,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:314,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 315
    functionName: boolor_statefunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum boolor_statefunc(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/bool.c:329,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/bool.c:330,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/bool.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 338
    functionName: makeBoolAggState
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - AggCheckCallContext
    - elog
    - MemoryContextAlloc
    linkageType: ''
    returnType: BoolAggState
    signature: 'BoolAggState *

      makeBoolAggState(FunctionCallInfo fcinfo)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bool.c:345,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bool.c:345,1
    - Dst: makeBoolAggState
      Src: /src/postgres/src/backend/utils/adt/bool.c:349,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bool.c:351,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:354,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/bool.c:358,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 340
    functionDepth: 3
    functionLinenumber: 340
    functionLinenumberEnd: 359
    functionName: bool_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - makeBoolAggState
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum bool_accum(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bool.c:366,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bool.c:366,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/bool.c:370,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bool.c:372,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:375,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/bool.c:379,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 380
    functionName: bool_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BOOL
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum bool_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bool.c:387,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bool.c:387,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/bool.c:391,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 395
    functionName: bool_alltrue
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum bool_alltrue(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bool.c:402,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bool.c:402,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/bool.c:406,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bool.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 410
    functionName: bool_anytrue
    functionSourceFile: /src/postgres/src/backend/utils/adt/bool.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum bool_anytrue(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: Int2VectorSize
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Int2VectorSize(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int.c:65,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:67,1
    - Dst: pg_strtoint16_safe
      Src: /src/postgres/src/backend/utils/adt/int.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: int2in
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - pg_strtoint16_safe
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:76,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/int.c:77,1
    - Dst: pg_itoa
      Src: /src/postgres/src/backend/utils/adt/int.c:79,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 81
    functionName: int2out
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - pg_itoa
    - PG_GETARG_INT16
    - PG_RETURN_CSTRING
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum int2out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:89,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:91,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/int.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: int2recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - pq_getmsgint
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:100,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/int.c:103,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/int.c:104,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/int.c:105,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/int.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 106
    functionName: int2send
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_INT16
    - pq_sendint16
    linkageType: ''
    returnType: Datum
    signature: Datum int2send(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/int.c:118,1
    - Dst: Int2VectorSize
      Src: /src/postgres/src/backend/utils/adt/int.c:118,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/int.c:121,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/int.c:127,1
    - Dst: Int2VectorSize
      Src: /src/postgres/src/backend/utils/adt/int.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - int2s
    - n
    argTypes:
    - int16*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 135
    functionName: buildint2vector
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 4
    functionsReached:
    - Int2VectorSize
    - palloc0
    - memcpy
    - SET_VARSIZE
    linkageType: ''
    returnType: int2vector
    signature: 'int2vector *

      buildint2vector(const int16 *int2s, int n)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - int2Array
    argTypes:
    - int2vector*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 159
    functionName: check_valid_int2vector
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: void
    signature: void check_valid_int2vector(const int2vector *int2Array)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int.c:167,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/int.c:174,1
    - Dst: Int2VectorSize
      Src: /src/postgres/src/backend/utils/adt/int.c:174,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/int.c:181,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/int.c:189,1
    - Dst: Int2VectorSize
      Src: /src/postgres/src/backend/utils/adt/int.c:189,1
    - Dst: strtol
      Src: /src/postgres/src/backend/utils/adt/int.c:193,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int.c:196,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:197,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:198,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int.c:202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:204,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int.c:208,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:209,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:210,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/int.c:217,1
    - Dst: Int2VectorSize
      Src: /src/postgres/src/backend/utils/adt/int.c:217,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:224,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 225
    functionName: int2vectorin
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_GETARG_CSTRING
    - Int2VectorSize
    - palloc0
    - isspace
    - repalloc
    - strtol
    - errmsg
    - SET_VARSIZE
    - ereturn
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int2vectorin(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:233,1
    - Dst: check_valid_int2vector
      Src: /src/postgres/src/backend/utils/adt/int.c:240,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/int.c:244,1
    - Dst: pg_itoa
      Src: /src/postgres/src/backend/utils/adt/int.c:249,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int.c:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 230
    functionDepth: 3
    functionLinenumber: 230
    functionLinenumberEnd: 253
    functionName: int2vectorout
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - pg_itoa
    - PG_RETURN_CSTRING
    - check_valid_int2vector
    - palloc
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int2vectorout(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/int.c:261,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:262,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/int.c:271,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:274,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:276,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:278,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/int.c:281,1
    - Dst: array_recv
      Src: /src/postgres/src/backend/utils/adt/int.c:281,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/int.c:283,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/int.c:286,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/int.c:287,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/int.c:288,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/int.c:289,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:292,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:294,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 295
    functionName: int2vectorrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - InitFunctionCallInfoData
    - Int32GetDatum
    - Assert
    - errcode
    - ObjectIdGetDatum
    - ARR_LBOUND
    - ereport
    - LOCAL_FCINFO
    - ARR_HASNULL
    - ARR_ELEMTYPE
    - PointerGetDatum
    - ARR_NDIM
    - array_recv
    - errmsg
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum int2vectorrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_send
      Src: /src/postgres/src/backend/utils/adt/int.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 305
    functionName: int2vectorsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - array_send
    linkageType: ''
    returnType: Datum
    signature: Datum int2vectorsend(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int.c:318,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:320,1
    - Dst: pg_strtoint32_safe
      Src: /src/postgres/src/backend/utils/adt/int.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 321
    functionName: int4in
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - pg_strtoint32_safe
    - PG_GETARG_CSTRING
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:329,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/int.c:330,1
    - Dst: pg_ltoa
      Src: /src/postgres/src/backend/utils/adt/int.c:332,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 334
    functionName: int4out
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_CSTRING
    - pg_ltoa
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum int4out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:342,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:344,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/int.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 339
    functionDepth: 2
    functionLinenumber: 339
    functionLinenumberEnd: 345
    functionName: int4recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - pq_getmsgint
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:353,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/int.c:356,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/int.c:357,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/int.c:358,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/int.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 350
    functionDepth: 4
    functionLinenumber: 350
    functionLinenumberEnd: 359
    functionName: int4send
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:371,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 374
    functionName: i2toi4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum i2toi4(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:379,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:381,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:381,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int.c:382,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:384,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:386,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 376
    functionDepth: 2
    functionLinenumber: 376
    functionLinenumberEnd: 387
    functionName: i4toi2
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errcode
    - unlikely
    - errmsg
    - PG_RETURN_INT16
    - ereturn
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum i4toi2(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:393,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:394,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 397
    functionName: int4_bool
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int4_bool(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:403,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:404,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 407
    functionName: bool_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum bool_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:427,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:428,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 431
    functionName: int4eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int4eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:436,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:437,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 440
    functionName: int4ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int4ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:445,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:446,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 449
    functionName: int4lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int4lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:454,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:455,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 458
    functionName: int4le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int4le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:463,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:464,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 467
    functionName: int4gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int4gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:472,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:473,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 476
    functionName: int4ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int4ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:481,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:482,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 485
    functionName: int2eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int2eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:490,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:491,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 494
    functionName: int2ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int2ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:499,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:500,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 503
    functionName: int2lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int2lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:508,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:509,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 512
    functionName: int2le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int2le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:517,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:518,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 521
    functionName: int2gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int2gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:526,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:527,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 530
    functionName: int2ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int2ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:535,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:536,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 539
    functionName: int24eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int24eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:544,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:545,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 548
    functionName: int24ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int24ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:553,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:554,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 557
    functionName: int24lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int24lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:562,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:563,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 566
    functionName: int24le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int24le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:571,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:572,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 568
    functionDepth: 1
    functionLinenumber: 568
    functionLinenumberEnd: 575
    functionName: int24gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int24gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:580,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:581,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 584
    functionName: int24ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int24ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:589,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:590,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 593
    functionName: int42eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int42eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:598,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:599,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 602
    functionName: int42ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int42ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:607,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:608,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 611
    functionName: int42lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int42lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:616,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:617,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 620
    functionName: int42le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int42le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:625,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:626,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 629
    functionName: int42gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int42gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:634,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:635,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 638
    functionName: int42ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int42ge(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:654,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:655,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:656,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:657,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:658,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:662,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:664,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:669,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:669,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:676,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:680,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:682,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 683
    functionName: in_range_int4_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - errcode
    - ereport
    - unlikely
    - errmsg
    - PG_RETURN_BOOL
    - pg_add_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_int4_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DirectFunctionCall5
      Src: /src/postgres/src/backend/utils/adt/int.c:689,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:690,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:691,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:692,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:692,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:693,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 695
    functionName: in_range_int4_int2
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - PG_GETARG_DATUM
    - DirectFunctionCall5
    - PG_GETARG_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_int4_int2(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:701,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:702,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int.c:703,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:704,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:705,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:709,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:710,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:711,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:716,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:716,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:723,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:727,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:729,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 730
    functionName: in_range_int4_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - errcode
    - ereport
    - pg_add_s64_overflow
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_int4_int8(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:736,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:737,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:738,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:739,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:740,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:744,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:745,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:746,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:751,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:751,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:758,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:762,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:764,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 732
    functionDepth: 2
    functionLinenumber: 732
    functionLinenumberEnd: 765
    functionName: in_range_int2_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_BOOL
    - pg_add_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_int2_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DirectFunctionCall5
      Src: /src/postgres/src/backend/utils/adt/int.c:771,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:772,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:773,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:774,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:774,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:775,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 777
    functionName: in_range_int2_int2
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - PG_GETARG_DATUM
    - DirectFunctionCall5
    - PG_GETARG_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_int2_int2(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DirectFunctionCall5
      Src: /src/postgres/src/backend/utils/adt/int.c:783,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:784,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:784,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:785,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:785,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:786,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:787,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 789
    functionName: in_range_int2_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - PG_GETARG_INT16
    - DirectFunctionCall5
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_int2_int8(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:802,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:804,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:805,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:806,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:807,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 799
    functionDepth: 2
    functionLinenumber: 799
    functionLinenumberEnd: 809
    functionName: int4um
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - unlikely
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4um(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:814,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 817
    functionName: int4up
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4up(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:822,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:823,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:826,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:826,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:827,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:828,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:829,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:830,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 819
    functionDepth: 2
    functionLinenumber: 819
    functionLinenumberEnd: 831
    functionName: int4pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - unlikely
    - errmsg
    - pg_add_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:836,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:837,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:840,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:840,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:841,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:842,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:843,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:844,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 833
    functionDepth: 2
    functionLinenumber: 833
    functionLinenumberEnd: 845
    functionName: int4mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - unlikely
    - errmsg
    - pg_sub_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:850,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:851,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:854,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:854,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:855,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:856,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:857,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:858,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 847
    functionDepth: 2
    functionLinenumber: 847
    functionLinenumberEnd: 859
    functionName: int4mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - pg_mul_s32_overflow
    - ereport
    - unlikely
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4mul(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:864,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:865,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:870,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:871,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:872,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:874,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:885,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:886,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:887,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:888,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:890,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 861
    functionDepth: 2
    functionLinenumber: 861
    functionLinenumberEnd: 898
    functionName: int4div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - unlikely
    - errmsg
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4div(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:903,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:906,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:906,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:907,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:908,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:909,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:911,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 900
    functionDepth: 2
    functionLinenumber: 900
    functionLinenumberEnd: 912
    functionName: int4inc
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - unlikely
    - errmsg
    - pg_add_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4inc(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:917,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:919,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:920,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:921,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:922,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:923,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 914
    functionDepth: 2
    functionLinenumber: 914
    functionLinenumberEnd: 924
    functionName: int2um
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2um(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:929,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 932
    functionName: int2up
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2up(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:937,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:938,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:941,1
    - Dst: pg_add_s16_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:941,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:942,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:943,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:944,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 934
    functionDepth: 2
    functionLinenumber: 934
    functionLinenumberEnd: 946
    functionName: int2pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_INT16
    - pg_add_s16_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum int2pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:951,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:952,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:955,1
    - Dst: pg_sub_s16_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:955,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:956,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:957,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:958,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:959,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 948
    functionDepth: 2
    functionLinenumber: 948
    functionLinenumberEnd: 960
    functionName: int2mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - pg_sub_s16_overflow
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:965,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:966,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:969,1
    - Dst: pg_mul_s16_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:969,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:970,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:971,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:972,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:974,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 962
    functionDepth: 2
    functionLinenumber: 962
    functionLinenumberEnd: 975
    functionName: int2mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errcode
    - pg_mul_s16_overflow
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2mul(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:980,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:981,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:986,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:988,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:990,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1001,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1002,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1003,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1004,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1006,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1013,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 977
    functionDepth: 2
    functionLinenumber: 977
    functionLinenumberEnd: 1014
    functionName: int2div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_INT16
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum int2div(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1019,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1020,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1023,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1023,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1024,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1025,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1026,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1027,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1016
    functionDepth: 2
    functionLinenumber: 1016
    functionLinenumberEnd: 1028
    functionName: int24pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - pg_add_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int24pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1033,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1034,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1037,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1037,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1038,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1039,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1040,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1041,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1030
    functionDepth: 2
    functionLinenumber: 1030
    functionLinenumberEnd: 1042
    functionName: int24mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - pg_sub_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int24mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1047,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1048,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1051,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1051,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1052,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1053,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1054,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1044
    functionDepth: 2
    functionLinenumber: 1044
    functionLinenumberEnd: 1056
    functionName: int24mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - pg_mul_s32_overflow
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int24mul(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1061,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1062,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1064,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1066,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1067,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1068,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:1070,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1074,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1058
    functionDepth: 2
    functionLinenumber: 1058
    functionLinenumberEnd: 1075
    functionName: int24div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int24div(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1080,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1081,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1084,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1084,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1085,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1086,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1087,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1088,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1077
    functionDepth: 2
    functionLinenumber: 1077
    functionLinenumberEnd: 1089
    functionName: int42pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - pg_add_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int42pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1094,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1095,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1098,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1098,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1099,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1101,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1091
    functionDepth: 2
    functionLinenumber: 1091
    functionLinenumberEnd: 1103
    functionName: int42mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - pg_sub_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int42mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1108,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1109,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1112,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1112,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1113,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1115,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1105
    functionDepth: 2
    functionLinenumber: 1105
    functionLinenumberEnd: 1117
    functionName: int42mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - pg_mul_s32_overflow
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int42mul(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1122,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1123,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1126,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1128,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1129,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1130,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:1132,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1143,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1144,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1145,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1146,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1148,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1119
    functionDepth: 2
    functionLinenumber: 1119
    functionLinenumberEnd: 1156
    functionName: int42div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int42div(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1161,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1162,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1164,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1166,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1167,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1168,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:1170,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1179,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1158
    functionDepth: 2
    functionLinenumber: 1158
    functionLinenumberEnd: 1184
    functionName: int4mod
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - unlikely
    - errmsg
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4mod(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1189,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1190,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1192,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1194,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1195,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1196,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:1198,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1208,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1186
    functionDepth: 2
    functionLinenumber: 1186
    functionLinenumberEnd: 1213
    functionName: int2mod
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_INT16
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum int2mod(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1223,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1227,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1229,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1220
    functionDepth: 2
    functionLinenumber: 1220
    functionLinenumberEnd: 1232
    functionName: int4abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - unlikely
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4abs(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1237,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1240,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1243,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1234
    functionDepth: 2
    functionLinenumber: 1234
    functionLinenumberEnd: 1246
    functionName: int2abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - errmsg
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2abs(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1291,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1293,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1262
    functionDepth: 2
    functionLinenumber: 1262
    functionLinenumberEnd: 1321
    functionName: int4gcd_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: int32
    signature: int32 int4gcd_internal(int32 arg1, int32 arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1326,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1327,1
    - Dst: int4gcd_internal
      Src: /src/postgres/src/backend/utils/adt/int.c:1330,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1323
    functionDepth: 3
    functionLinenumber: 1323
    functionLinenumberEnd: 1333
    functionName: int4gcd
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - int4gcd_internal
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4gcd(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1341,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1342,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1352,1
    - Dst: int4gcd_internal
      Src: /src/postgres/src/backend/utils/adt/int.c:1355,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1358,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1358,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1359,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1361,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1364,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1365,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1367,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1372,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1338
    functionDepth: 3
    functionLinenumber: 1338
    functionLinenumberEnd: 1373
    functionName: int4lcm
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - int4gcd_internal
    - PG_RETURN_INT32
    - errcode
    - pg_mul_s32_overflow
    - ereport
    - unlikely
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4lcm(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1378,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1379,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1375
    functionDepth: 1
    functionLinenumber: 1375
    functionLinenumberEnd: 1382
    functionName: int2larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1387,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1388,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1384
    functionDepth: 1
    functionLinenumber: 1384
    functionLinenumberEnd: 1391
    functionName: int2smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2smaller(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1396,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1397,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1393
    functionDepth: 1
    functionLinenumber: 1393
    functionLinenumberEnd: 1400
    functionName: int4larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1405,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1406,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1402
    functionDepth: 1
    functionLinenumber: 1402
    functionLinenumberEnd: 1409
    functionName: int4smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4smaller(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1425,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1426,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1422
    functionDepth: 1
    functionLinenumber: 1422
    functionLinenumberEnd: 1429
    functionName: int4and
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4and(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1434,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1435,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1431
    functionDepth: 1
    functionLinenumber: 1431
    functionLinenumberEnd: 1438
    functionName: int4or
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4or(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1443,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1444,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1440
    functionDepth: 1
    functionLinenumber: 1440
    functionLinenumberEnd: 1447
    functionName: int4xor
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4xor(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1452,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1453,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1449
    functionDepth: 1
    functionLinenumber: 1449
    functionLinenumberEnd: 1456
    functionName: int4shl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4shl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1461,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1462,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1458
    functionDepth: 1
    functionLinenumber: 1458
    functionLinenumberEnd: 1465
    functionName: int4shr
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4shr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1470,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1467
    functionDepth: 1
    functionLinenumber: 1467
    functionLinenumberEnd: 1473
    functionName: int4not
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4not(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1478,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1479,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1475
    functionDepth: 1
    functionLinenumber: 1475
    functionLinenumberEnd: 1482
    functionName: int2and
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2and(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1487,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1488,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1484
    functionDepth: 1
    functionLinenumber: 1484
    functionLinenumberEnd: 1491
    functionName: int2or
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2or(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1496,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1497,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1493
    functionDepth: 1
    functionLinenumber: 1493
    functionLinenumberEnd: 1500
    functionName: int2xor
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2xor(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1505,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1508
      start: 1502
    functionDepth: 1
    functionLinenumber: 1502
    functionLinenumberEnd: 1508
    functionName: int2not
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2not(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1514,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1515,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1511
    functionDepth: 1
    functionLinenumber: 1511
    functionLinenumberEnd: 1518
    functionName: int2shl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2shl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1523,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1524,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1520
    functionDepth: 1
    functionLinenumber: 1520
    functionLinenumberEnd: 1527
    functionName: int2shr
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - PG_RETURN_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2shr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generate_series_step_int4
      Src: /src/postgres/src/backend/utils/adt/int.c:1535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1536
      start: 1532
    functionDepth: 1
    functionLinenumber: 1532
    functionLinenumberEnd: 1536
    functionName: generate_series_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - generate_series_step_int4
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_int4(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/int.c:1547,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1549,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1550,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/int.c:1554,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1555,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1557,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1558,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1559,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/int.c:1562,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/int.c:1567,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/int.c:1570,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/int.c:1581,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/int.c:1585,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1600,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/int.c:1604,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:1604,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/int.c:1608,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1609
      start: 1538
    functionDepth: 2
    functionLinenumber: 1538
    functionLinenumberEnd: 1609
    functionName: generate_series_step_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 1
    functionsReached:
    - SRF_IS_FIRSTCALL
    - PG_NARGS
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - errcode
    - Int32GetDatum
    - ereport
    - MemoryContextSwitchTo
    - errmsg
    - palloc_object
    - SRF_RETURN_DONE
    - pg_add_s32_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_step_int4(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:1617,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1620,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/int.c:1625,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int.c:1633,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/int.c:1633,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int.c:1634,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/int.c:1634,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/int.c:1635,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int.c:1636,1
    - Dst: lthird
      Src: /src/postgres/src/backend/utils/adt/int.c:1636,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1646,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1648,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1650,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1656,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1657,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1658,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/int.c:1664,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/int.c:1665,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/int.c:1666,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/int.c:1671,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:1678,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1614
    functionDepth: 2
    functionLinenumber: 1614
    functionLinenumberEnd: 1679
    functionName: generate_series_int4_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - list_length
    - lthird
    - linitial
    - floor
    - DatumGetInt32
    - lsecond
    - estimate_expression_value
    - is_funcclause
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_int4_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - n
    - dim
    - lb
    - indx
    argTypes:
    - int
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 44
    functionName: ArrayGetOffset
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ArrayGetOffset(int n, const int *dim, const int *lb, const int
      *indx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArrayGetNItemsSafe
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ndim
    - dims
    argTypes:
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: ArrayGetNItems
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 9
    functionsReached:
    - ArrayGetNItemsSafe
    linkageType: ''
    returnType: int
    signature: int ArrayGetNItems(int ndim, const int *dims)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:81,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:82,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:83,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:90,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:91,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:92,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:95,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:97,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:98,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:99,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - ndim
    - dims
    - escontext
    argTypes:
    - int
    - int*
    - struct Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 102
    functionName: ArrayGetNItemsSafe
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 1
    functionsReached:
    - Assert
    - ereturn
    - errmsg
    - errcode
    linkageType: ''
    returnType: int
    signature: int ArrayGetNItemsSafe(int ndim, const int *dims, struct Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArrayCheckBoundsSafe
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ndim
    - dims
    - lb
    argTypes:
    - int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: ArrayCheckBounds
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 1
    functionsReached:
    - ArrayCheckBoundsSafe
    linkageType: ''
    returnType: void
    signature: void ArrayCheckBounds(int ndim, const int *dims, const int *lb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:137,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:138,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:139,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - ndim
    - dims
    - lb
    - escontext
    argTypes:
    - int
    - int*
    - int*
    - struct Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 145
    functionName: ArrayCheckBoundsSafe
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 1
    functionsReached:
    - ereturn
    - pg_add_s32_overflow
    - errmsg
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool ArrayCheckBoundsSafe(int ndim, const int *dims, const int *lb,\n\t\t\t\t\t
      struct Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - n
    - span
    - st
    - endp
    argTypes:
    - int
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 159
    functionName: mda_get_range
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mda_get_range(int n, int *span, const int *st, const int *endp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - n
    - range
    - prod
    argTypes:
    - int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 174
    functionName: mda_get_prod
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mda_get_prod(int n, const int *range, int *prod)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - n
    - dist
    - prod
    - span
    argTypes:
    - int
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 195
    functionName: mda_get_offset_values
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mda_get_offset_values(int n, int *dist, const int *prod, const
      int *span)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - n
    - curr
    - span
    argTypes:
    - int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 225
    functionName: mda_next_tuple
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mda_next_tuple(int n, int *curr, const int *span)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:242,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:247,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:249,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:250,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:252,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:254,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:256,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:259,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:259,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/arrayutils.c:261,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - arr
    - n
    argTypes:
    - ArrayType*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 264
    functionName: ArrayGetIntegerTypmods
    functionSourceFile: /src/postgres/src/backend/utils/adt/arrayutils.c
    functionUses: 1
    functionsReached:
    - deconstruct_array_builtin
    - errcode
    - pfree
    - ereport
    - ARR_ELEMTYPE
    - ARR_NDIM
    - errmsg
    - array_contains_nulls
    - palloc
    - pg_strtoint32
    - DatumGetCString
    linkageType: ''
    returnType: int32
    signature: 'int32 *

      ArrayGetIntegerTypmods(ArrayType *arr, int *n)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 175
    functionName: NUMERIC_FLAGBITS
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_FLAGBITS(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: NUMERIC_IS_SHORT
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_IS_SHORT(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 177
    functionName: NUMERIC_IS_SPECIAL
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_IS_SPECIAL(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    functionName: NUMERIC_HEADER_IS_SHORT
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_HEADER_IS_SHORT(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: NUMERIC_HEADER_SIZE
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_HEADER_SIZE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    functionName: NUMERIC_EXT_FLAGBITS
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_EXT_FLAGBITS(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    functionName: NUMERIC_IS_NAN
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_IS_NAN(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    functionName: NUMERIC_IS_PINF
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_IS_PINF(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 210
    functionName: NUMERIC_IS_NINF
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_IS_NINF(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 212
    functionName: NUMERIC_IS_INF
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_IS_INF(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 246
    functionName: NUMERIC_SIGN
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_SIGN(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 250
    functionName: NUMERIC_DSCALE
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_DSCALE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 255
    functionName: NUMERIC_WEIGHT
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_WEIGHT(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 406
    functionName: NumericAbbrevGetDatum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NumericAbbrevGetDatum(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 407
    functionName: DatumGetNumericAbbrev
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetNumericAbbrev(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ndigits
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 480
    functionName: digitbuf_alloc
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: digitbuf_alloc(ndigits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 485
    functionName: digitbuf_free
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: digitbuf_free(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 487
    functionName: init_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: init_var(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 490
    functionName: NUMERIC_DIGITS
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_DIGITS(num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 492
    functionName: NUMERIC_NDIGITS
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_NDIGITS(num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - scale
    - ','
    - weight
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 496
    functionName: NUMERIC_CAN_BE_SHORT
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUMERIC_CAN_BE_SHORT(scale,weight)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:628,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/numeric.c:630,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:632,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/numeric.c:643,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:671,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/numeric.c:677,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:679,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/numeric.c:682,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:684,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/numeric.c:687,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:689,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/numeric.c:704,1
    - Dst: apply_typmod_special
      Src: /src/postgres/src/backend/utils/adt/numeric.c:709,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:710,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:721,1
    - Dst: set_var_from_str
      Src: /src/postgres/src/backend/utils/adt/numeric.c:753,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:754,1
    - Dst: set_var_from_non_decimal_integer_str
      Src: /src/postgres/src/backend/utils/adt/numeric.c:759,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:761,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/numeric.c:770,1
    - Dst: apply_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:775,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:776,1
    - Dst: make_result_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:778,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:780,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:783,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:786,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:787,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:788,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 82
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 625
    functionDepth: 2
    functionLinenumber: 625
    functionLinenumberEnd: 790
    functionName: numeric_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - apply_typmod_special
    - errcode
    - apply_typmod
    - isdigit
    - free_var
    - errmsg
    - PG_RETURN_NUMERIC
    - make_result
    - PG_GETARG_CSTRING
    - isspace
    - set_var_from_str
    - PG_GETARG_INT32
    - make_result_safe
    - init_var
    - pg_strncasecmp
    - set_var_from_non_decimal_integer_str
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_in(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:801,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:808,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:810,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:811,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:811,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:812,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:813,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:813,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:815,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:815,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:821,1
    - Dst: get_str_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:823,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:825,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 826
    functionName: numeric_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - pstrdup
    - PG_RETURN_CSTRING
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    - get_str_from_var
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 833
    functionDepth: 1
    functionLinenumber: 833
    functionLinenumberEnd: 837
    functionName: numeric_is_nan
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_NAN
    linkageType: ''
    returnType: bool
    signature: bool numeric_is_nan(Numeric num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_INF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:847,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 848
    functionName: numeric_is_inf
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_INF
    linkageType: ''
    returnType: bool
    signature: bool numeric_is_inf(Numeric num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:861,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:863,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:869,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 855
    functionDepth: 1
    functionLinenumber: 855
    functionLinenumberEnd: 872
    functionName: numeric_is_integral
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_NAN
    - init_var_from_num
    - NUMERIC_IS_SPECIAL
    linkageType: ''
    returnType: bool
    signature: bool numeric_is_integral(Numeric num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - precision
    - scale
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 889
    functionDepth: 0
    functionLinenumber: 889
    functionLinenumberEnd: 893
    functionName: make_numeric_typmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int32
    signature: int32 make_numeric_typmod(int precision, int scale)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 898
    functionDepth: 0
    functionLinenumber: 898
    functionLinenumberEnd: 902
    functionName: is_valid_numeric_typmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_valid_numeric_typmod(int32 typmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 909
    functionDepth: 0
    functionLinenumber: 909
    functionLinenumberEnd: 913
    functionName: numeric_typmod_precision
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int numeric_typmod_precision(int32 typmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 924
    functionDepth: 0
    functionLinenumber: 924
    functionLinenumberEnd: 928
    functionName: numeric_typmod_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int numeric_typmod_scale(int32 typmod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:941,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 967
    functionName: numeric_maximum_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - is_valid_numeric_typmod
    - numeric_typmod_precision
    linkageType: ''
    returnType: int32
    signature: int32 numeric_maximum_size(int32 typmod)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:983,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:985,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:986,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:987,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:988,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:990,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:993,1
    - Dst: get_str_from_var_sci
      Src: /src/postgres/src/backend/utils/adt/numeric.c:995,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - num
    - scale
    argTypes:
    - Numeric
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 974
    functionDepth: 1
    functionLinenumber: 974
    functionLinenumberEnd: 998
    functionName: numeric_out_sci
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - pstrdup
    - get_str_from_var_sci
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    linkageType: ''
    returnType: char
    signature: 'char *

      numeric_out_sci(Numeric num, int scale)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1018,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1020,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1021,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1022,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1023,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1025,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1028,1
    - Dst: get_str_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1030,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1033,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1039,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1052
    functionName: numeric_normalize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_SPECIAL
    - strchr
    - init_var_from_num
    - pstrdup
    - strlen
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    - get_str_from_var
    linkageType: ''
    returnType: char
    signature: 'char *

      numeric_normalize(Numeric num)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1063,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1066,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1068,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1074,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1076,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1078,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1080,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1083,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1089,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1090,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1091,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1093,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1095,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1096,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1097,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1101,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1104,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1106,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1123,1
    - Dst: apply_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1125,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1127,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1132,1
    - Dst: apply_typmod_special
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1134,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1137,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1139,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1060
    functionDepth: 2
    functionLinenumber: 1060
    functionLinenumberEnd: 1140
    functionName: numeric_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - alloc_var
    - make_result
    - apply_typmod_special
    - errcode
    - apply_typmod
    - init_var
    - ereport
    - trunc_var
    - free_var
    - PG_GETARG_OID
    - errmsg
    - PG_RETURN_NUMERIC
    - pq_getmsgint
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1148,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1153,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1155,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1157,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1158,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1159,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1160,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1162,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1164,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1145
    functionDepth: 4
    functionLinenumber: 1145
    functionLinenumberEnd: 1165
    functionName: numeric_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - init_var_from_num
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint16
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_send(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1181,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1190,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1190,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1192,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1194,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1196,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1197,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1198,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1199,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1200,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1201,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1202,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1211,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1212,1
    - Dst: relabel_to_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1214,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1218,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1178
    functionDepth: 5
    functionLinenumber: 1178
    functionLinenumberEnd: 1219
    functionName: numeric_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numeric_typmod_scale
    - exprTypmod
    - is_valid_numeric_typmod
    - Assert
    - linitial
    - DatumGetInt32
    - lsecond
    - relabel_to_typmod
    - list_length
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    - numeric_typmod_precision
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_support(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1231,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1232,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1245,1
    - Dst: apply_typmod_special
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1247,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1248,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1249,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1249,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1256,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1257,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1257,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1262,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1263,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1267,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1276,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1277,1
    - Dst: NUMERIC_CAN_BE_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1278,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1278,1
    - Dst: NUMERIC_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1279,1
    - Dst: duplicate_numeric::duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1281,1
    - Dst: NUMERIC_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1282,1
    - Dst: choice::choice
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1283,1
    - Dst: choice::choice
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1287,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1287,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1296,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1298,1
    - Dst: apply_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1299,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1300,1
    - Dst: make_result_safe::make_result_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1301,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1303,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1306
    functionName: numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - is_valid_numeric_typmod
    - apply_typmod_special
    - apply_typmod
    - NUMERIC_SIGN
    - choice::choice
    - duplicate_numeric::duplicate_numeric
    - NUMERIC_DSCALE
    - make_result_safe::make_result_safe
    - numeric_typmod_precision
    - NUMERIC_CAN_BE_SHORT
    - free_var
    - PG_RETURN_NUMERIC
    - NUMERIC_IS_SHORT
    - PG_GETARG_INT32
    - NUMERIC_WEIGHT
    - numeric_typmod_scale
    - NUMERIC_IS_SPECIAL
    - set_var_from_num
    - init_var
    - Max
    - PG_RETURN_NULL
    - duplicate_numeric
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: "Datum numeric\t\t(PG_FUNCTION_ARGS)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1318,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1320,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1325,1
    - Dst: make_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1328,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - precision
    - scale
    - escontext
    argTypes:
    - int32
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1314
    functionDepth: 2
    functionLinenumber: 1314
    functionLinenumberEnd: 1329
    functionName: make_numeric_typmod_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - ereturn
    - make_numeric_typmod
    - errmsg
    - errcode
    linkageType: ''
    returnType: int32
    signature: int32 make_numeric_typmod_safe(int32 precision, int32 scale, Node *escontext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1334,1
    - Dst: ArrayGetIntegerTypmods
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1339,1
    - Dst: make_numeric_typmod_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1342,1
    - Dst: make_numeric_typmod_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1346,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1350,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1351,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1352,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1331
    functionDepth: 3
    functionLinenumber: 1331
    functionLinenumberEnd: 1357
    functionName: numerictypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - ereport
    - ArrayGetIntegerTypmods
    - make_numeric_typmod_safe
    - PG_GETARG_ARRAYTYPE_P
    - errmsg
    linkageType: ''
    returnType: Datum
    signature: Datum numerictypmodin(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1362,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1363,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1365,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1366,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1367,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1368,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1372,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1359
    functionDepth: 1
    functionLinenumber: 1359
    functionLinenumberEnd: 1373
    functionName: numerictypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numeric_typmod_scale
    - is_valid_numeric_typmod
    - PG_RETURN_CSTRING
    - snprintf
    - palloc
    - PG_GETARG_INT32
    - numeric_typmod_precision
    linkageType: ''
    returnType: Datum
    signature: Datum numerictypmodout(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1386,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1392,1
    - Dst: NUMERIC_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1394,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1397,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1404,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1383
    functionDepth: 1
    functionLinenumber: 1383
    functionLinenumberEnd: 1407
    functionName: numeric_abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_SPECIAL
    - NUMERIC_DSCALE
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - NUMERIC_IS_SHORT
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_abs(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1413,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1419,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1421,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1424,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1434,1
    - Dst: NUMERIC_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1437,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1440,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1442,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1445,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1448,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1410
    functionDepth: 1
    functionLinenumber: 1410
    functionLinenumberEnd: 1449
    functionName: numeric_uminus
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_SPECIAL
    - NUMERIC_IS_NAN
    - NUMERIC_SIGN
    - NUMERIC_NDIGITS
    - NUMERIC_DSCALE
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - NUMERIC_IS_SHORT
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_uminus(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1455,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1457,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1452
    functionDepth: 1
    functionLinenumber: 1452
    functionLinenumberEnd: 1458
    functionName: numeric_uplus
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_uplus(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1471,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1473,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1473,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1475,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1486,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1488,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1468
    functionDepth: 1
    functionLinenumber: 1468
    functionLinenumberEnd: 1492
    functionName: numeric_sign_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_SPECIAL
    - Assert
    - NUMERIC_IS_NAN
    - NUMERIC_SIGN
    - NUMERIC_NDIGITS
    - NUMERIC_IS_PINF
    linkageType: ''
    returnType: int
    signature: int numeric_sign_internal(Numeric num)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1503,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1508,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1509,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1509,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1511,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1514,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1514,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1516,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1516,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1518,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1518,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1521,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1500
    functionDepth: 2
    functionLinenumber: 1500
    functionLinenumberEnd: 1523
    functionName: numeric_sign
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - Assert
    - NUMERIC_IS_NAN
    - numeric_sign_internal
    - PG_RETURN_NUMERIC
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_sign(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1536,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1537,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1544,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1545,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1545,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1555,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1556,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1561,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1562,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1564,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1573,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1575,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1533
    functionDepth: 1
    functionLinenumber: 1533
    functionLinenumberEnd: 1577
    functionName: numeric_round
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - round_var
    - make_result
    - NUMERIC_IS_SPECIAL
    - set_var_from_num
    - init_var
    - Min
    - free_var
    - Max
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - PG_GETARG_INT32
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_round(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1590,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1591,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1598,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1599,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1599,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1607,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1608,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1613,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1614,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1616,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1625,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1627,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1628,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1587
    functionDepth: 1
    functionLinenumber: 1587
    functionLinenumberEnd: 1629
    functionName: numeric_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - NUMERIC_IS_SPECIAL
    - set_var_from_num
    - init_var
    - Min
    - trunc_var
    - free_var
    - Max
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - PG_GETARG_INT32
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_trunc(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1640,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1647,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1648,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1648,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1650,1
    - Dst: ceil_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1651,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1653,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1654,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1637
    functionDepth: 1
    functionLinenumber: 1637
    functionLinenumberEnd: 1657
    functionName: numeric_ceil
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - ceil_var
    - free_var
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_ceil(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1668,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1675,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1676,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1676,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1678,1
    - Dst: floor_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1679,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1681,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1682,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1665
    functionDepth: 1
    functionLinenumber: 1665
    functionLinenumberEnd: 1685
    functionName: numeric_floor
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - free_var
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - floor_var
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_floor(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generate_series_step_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1697
      start: 1693
    functionDepth: 1
    functionLinenumber: 1693
    functionLinenumberEnd: 1697
    functionName: generate_series_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - generate_series_step_numeric
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_numeric(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1706,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1708,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1709,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1713,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1715,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1716,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1717,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1718,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1720,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1721,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1722,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1724,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1726,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1727,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1729,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1731,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1732,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1733,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1737,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1739,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1741,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1743,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1744,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1745,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1746,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1748,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1749,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1750,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1753,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1756,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1757,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1758,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1762,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1767,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1770,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1778,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1779,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1780,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1782,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1783,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1784,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1787,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1791,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1800,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1802,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1804,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1807,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1810,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1811,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1814,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1814,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1818,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1819
      start: 1699
    functionDepth: 2
    functionLinenumber: 1699
    functionLinenumberEnd: 1819
    functionName: generate_series_step_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - SRF_IS_FIRSTCALL
    - NumericGetDatum
    - errcode
    - cmp_var
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - init_var_from_num
    - add_var
    - set_var_from_var
    - errmsg
    - palloc_object
    - SRF_PERCALL_SETUP
    - make_result
    - NUMERIC_IS_NAN
    - ereport
    - PG_NARGS
    - NUMERIC_IS_SPECIAL
    - set_var_from_num
    - init_var
    - MemoryContextSwitchTo
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_step_numeric(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1827,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1830,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1835,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1843,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1843,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1844,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1844,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1845,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1846,1
    - Dst: lthird
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1846,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1856,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1858,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1860,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1866,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1867,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1868,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1878,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1879,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1881,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1882,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1883,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1889,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1891,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1892,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1894,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1903,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1909,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1910,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1912,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1913,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1924,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1926,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1928,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1932,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1938,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1824
    functionDepth: 2
    functionLinenumber: 1824
    functionLinenumberEnd: 1939
    functionName: generate_series_numeric_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_var
    - lthird
    - trunc_var
    - PG_RETURN_POINTER
    - linitial
    - init_var_from_num
    - free_var
    - list_length
    - div_var
    - PG_GETARG_POINTER
    - DatumGetNumeric
    - numericvar_to_double_no_overflow
    - estimate_expression_value
    - NUMERIC_IS_SPECIAL
    - init_var
    - sub_var
    - lsecond
    - is_funcclause
    - IsA
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_numeric_support(PG_FUNCTION_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1960,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1961,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1962,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1963,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1969,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1970,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1971,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1973,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1973,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1975,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1975,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1976,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1977,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1978,1
    - Dst: NUMERIC_IS_INF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1980,1
    - Dst: NUMERIC_IS_INF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1980,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1981,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1982,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1983,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1986,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1987,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1990,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1992,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1995,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1996,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1997,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2002,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2003,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2004,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2005,1
    - Dst: compute_bucket
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2007,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2013,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2014,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2015,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2016,1
    - Dst: compute_bucket
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2018,1
    - Dst: numericvar_to_int32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2024,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2025,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2026,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2027,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2029,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2030,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2032,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 1957
    functionDepth: 2
    functionLinenumber: 1957
    functionLinenumberEnd: 2033
    functionName: width_bucket_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numericvar_to_int32
    - PG_RETURN_INT32
    - errcode
    - NUMERIC_IS_SPECIAL
    - NUMERIC_IS_NAN
    - init_var
    - ereport
    - NUMERIC_IS_INF
    - add_var
    - free_var
    - compute_bucket
    - set_var_from_var
    - errmsg
    - int64_to_numericvar
    - cmp_numerics
    - PG_GETARG_INT32
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum width_bucket_numeric(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2049,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2050,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2051,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2062,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2063,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2065,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2067,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2068,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2070,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2071,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 5
    argNames:
    - operand
    - bound1
    - bound2
    - count_var
    - result_var
    argTypes:
    - Numeric
    - Numeric
    - Numeric
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2073
      start: 2041
    functionDepth: 1
    functionLinenumber: 2041
    functionLinenumberEnd: 2073
    functionName: compute_bucket
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - mul_var
    - init_var_from_num
    - sub_var
    - add_var
    - free_var
    - div_var
    linkageType: ''
    returnType: void
    signature: "void compute_bucket(Numeric operand, Numeric bound1, Numeric bound2,\n\t\t\t
      \  const NumericVar *count_var, NumericVar *result_var)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2118,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2125,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2127,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2133,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2137,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2146,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2150
      start: 2115
    functionDepth: 2
    functionLinenumber: 2115
    functionLinenumberEnd: 2150
    functionName: numeric_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - initHyperLogLog
    - MemoryContextSwitchTo
    - palloc_object
    - palloc
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM_PACKED
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2160,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2170,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2175,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2177,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2178,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2178,1
    - Dst: VARDATA_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2178,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2185,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2187,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2189,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2198,1
    - Dst: numeric_abbrev_convert_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2200,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2204,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2205,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - original_datum
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2156
    functionDepth: 2
    functionLinenumber: 2156
    functionLinenumberEnd: 2208
    functionName: numeric_abbrev_convert
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - VARATT_IS_SHORT
    - memcpy
    - NUMERIC_IS_SPECIAL
    - Assert
    - pfree
    - init_var_from_num
    - VARSIZE_SHORT
    - SET_VARSIZE
    - VARDATA
    - PG_DETOAST_DATUM_PACKED
    - NUMERIC_IS_PINF
    - NUMERIC_IS_NINF
    - VARDATA_SHORT
    - numeric_abbrev_convert_var
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_abbrev_convert(Datum original_datum, SortSupport ssup)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: estimateHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2227,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2238,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2258,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2267,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - memtupcount
    - ssup
    argTypes:
    - int
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2273
      start: 2218
    functionDepth: 1
    functionLinenumber: 2218
    functionLinenumberEnd: 2273
    functionName: numeric_abbrev_abort
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - estimateHyperLogLog
    linkageType: ''
    returnType: bool
    signature: bool numeric_abbrev_abort(int memtupcount, SortSupport ssup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2288,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2289,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2292,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2294,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2295,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2296,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2300
      start: 2285
    functionDepth: 2
    functionLinenumber: 2285
    functionLinenumberEnd: 2300
    functionName: numeric_fast_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_numerics
    - DatumGetNumeric
    - pfree
    - DatumGetPointer
    linkageType: ''
    returnType: int
    signature: int numeric_fast_cmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetNumericAbbrev
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2314,1
    - Dst: DatumGetNumericAbbrev
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2314,1
    - Dst: DatumGetNumericAbbrev
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2316,1
    - Dst: DatumGetNumericAbbrev
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2319
      start: 2307
    functionDepth: 1
    functionLinenumber: 2307
    functionLinenumberEnd: 2319
    functionName: numeric_cmp_abbrev
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - DatumGetNumericAbbrev
    linkageType: ''
    returnType: int
    signature: int numeric_cmp_abbrev(Datum x, Datum y, SortSupport ssup)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2411,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2411,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2411,1
    - Dst: NumericAbbrevGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2414,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - var
    - nss
    argTypes:
    - NumericVar*
    - NumericSortSupport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2415
      start: 2366
    functionDepth: 2
    functionLinenumber: 2366
    functionLinenumberEnd: 2415
    functionName: numeric_abbrev_convert_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - addHyperLogLog
    - NumericAbbrevGetDatum
    - hash_uint32
    - DatumGetUInt32
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_abbrev_convert_var(const NumericVar *var, NumericSortSupport
      *nss)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2425,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2426,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2429,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2431,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2432,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2435
      start: 2422
    functionDepth: 1
    functionLinenumber: 2422
    functionLinenumberEnd: 2435
    functionName: numeric_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - cmp_numerics
    - PG_FREE_IF_COPY
    - PG_RETURN_INT32
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2441,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2442,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2445,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2447,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2448,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2451
      start: 2438
    functionDepth: 1
    functionLinenumber: 2438
    functionLinenumberEnd: 2451
    functionName: numeric_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_numerics
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2456,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2457,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2460,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2462,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2463,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2466
      start: 2453
    functionDepth: 1
    functionLinenumber: 2453
    functionLinenumberEnd: 2466
    functionName: numeric_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_numerics
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2471,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2472,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2475,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2477,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2478,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2481
      start: 2468
    functionDepth: 1
    functionLinenumber: 2468
    functionLinenumberEnd: 2481
    functionName: numeric_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_numerics
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2486,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2487,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2490,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2492,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2493,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2496
      start: 2483
    functionDepth: 1
    functionLinenumber: 2483
    functionLinenumberEnd: 2496
    functionName: numeric_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_numerics
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2501,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2502,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2505,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2507,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2508,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2511
      start: 2498
    functionDepth: 1
    functionLinenumber: 2498
    functionLinenumberEnd: 2511
    functionName: numeric_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_numerics
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2516,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2517,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2520,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2522,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2523,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2526
      start: 2513
    functionDepth: 1
    functionLinenumber: 2513
    functionLinenumberEnd: 2526
    functionName: numeric_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_numerics
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_le(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2538,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2540,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2542,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2547,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2549,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2551,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2558,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2564,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2566,1
    - Dst: cmp_var_common
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2573,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2573,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2573,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2574,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2574,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2575,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2575,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2576,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2576,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - num1
    - num2
    argTypes:
    - Numeric
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2528
    functionDepth: 1
    functionLinenumber: 2528
    functionLinenumberEnd: 2580
    functionName: cmp_numerics
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 9
    functionsReached:
    - cmp_var_common
    - NUMERIC_IS_SPECIAL
    - NUMERIC_IS_NAN
    - NUMERIC_SIGN
    - NUMERIC_NDIGITS
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    - NUMERIC_DIGITS
    - NUMERIC_WEIGHT
    linkageType: ''
    returnType: int
    signature: int cmp_numerics(Numeric num1, Numeric num2)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2588,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2589,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2590,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2591,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2592,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2599,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2600,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2601,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2602,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2603,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2604,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2611,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2613,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2618,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2626,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2628,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2628,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2629,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2629,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2641,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2651,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2659,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2661,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2663,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2670,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2676,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2678,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2695,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2696,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2697,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2698,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2701,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2703,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2706,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2708,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2710,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2713,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2714,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2715,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2717,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2718
      start: 2585
    functionDepth: 2
    functionLinenumber: 2585
    functionLinenumberEnd: 2718
    functionName: in_range_numeric_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_var
    - errcode
    - PG_FREE_IF_COPY
    - NUMERIC_SIGN
    - PG_RETURN_BOOL
    - Assert
    - init_var_from_num
    - add_var
    - free_var
    - errmsg
    - NUMERIC_IS_NAN
    - ereport
    - NUMERIC_IS_NINF
    - PG_GETARG_BOOL
    - NUMERIC_IS_SPECIAL
    - init_var
    - sub_var
    - NUMERIC_IS_PINF
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_numeric_numeric(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2723,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2734,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2735,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2737,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2747,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2748,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2766,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2767,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2778,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2778,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2786,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2787,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2787,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2793,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2794
      start: 2720
    functionDepth: 2
    functionLinenumber: 2720
    functionLinenumberEnd: 2794
    functionName: hash_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_SPECIAL
    - PG_RETURN_UINT32
    - Assert
    - PG_RETURN_DATUM
    - NUMERIC_NDIGITS
    - hash_any
    - NUMERIC_DIGITS
    - NUMERIC_WEIGHT
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum hash_numeric(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2803,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2804,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2815,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2816,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2818,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2822,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2823,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2833,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2834,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2836,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2844,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2844,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2846,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2847,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2847,1
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2852,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2852,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2854,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2855
      start: 2800
    functionDepth: 2
    functionLinenumber: 2800
    functionLinenumberEnd: 2855
    functionName: hash_numeric_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_SPECIAL
    - Assert
    - PG_RETURN_DATUM
    - hash_any_extended
    - DatumGetUInt64
    - UInt64GetDatum
    - PG_GETARG_INT64
    - NUMERIC_NDIGITS
    - NUMERIC_DIGITS
    - PG_RETURN_UINT64
    - NUMERIC_WEIGHT
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum hash_numeric_extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2874,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2875,1
    - Dst: numeric_add_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2878,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2881
      start: 2871
    functionDepth: 1
    functionLinenumber: 2871
    functionLinenumberEnd: 2881
    functionName: numeric_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - PG_RETURN_NUMERIC
    - numeric_add_safe
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_add(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2899,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2899,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2901,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2901,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2902,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2903,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2905,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2906,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2908,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2910,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2912,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2913,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2915,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2918,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2920,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2920,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2921,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2927,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2928,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2930,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2931,1
    - Dst: make_result_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2933,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2935,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - num1
    - num2
    - escontext
    argTypes:
    - Numeric
    - Numeric
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2938
      start: 2888
    functionDepth: 1
    functionLinenumber: 2888
    functionLinenumberEnd: 2938
    functionName: numeric_add_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - make_result_safe
    - make_result
    - NUMERIC_IS_SPECIAL
    - Assert
    - NUMERIC_IS_NAN
    - init_var_from_num
    - init_var
    - add_var
    - free_var
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_add_safe(Numeric num1, Numeric num2, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2949,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2950,1
    - Dst: numeric_sub_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2953,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2956
      start: 2946
    functionDepth: 1
    functionLinenumber: 2946
    functionLinenumberEnd: 2956
    functionName: numeric_sub
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - PG_RETURN_NUMERIC
    - numeric_sub_safe
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_sub(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2975,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2975,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2977,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2977,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2978,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2979,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2981,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2982,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2984,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2986,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2988,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2989,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2991,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2994,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2996,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2996,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2997,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3003,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3004,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3006,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3007,1
    - Dst: make_result_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3009,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3011,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - num1
    - num2
    - escontext
    argTypes:
    - Numeric
    - Numeric
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 2964
    functionDepth: 1
    functionLinenumber: 2964
    functionLinenumberEnd: 3014
    functionName: numeric_sub_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - make_result_safe
    - make_result
    - NUMERIC_IS_SPECIAL
    - Assert
    - NUMERIC_IS_NAN
    - init_var_from_num
    - init_var
    - sub_var
    - free_var
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_sub_safe(Numeric num1, Numeric num2, Node *escontext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3025,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3026,1
    - Dst: numeric_mul_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3029,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3031,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3031,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3032,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3034,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3035
      start: 3022
    functionDepth: 1
    functionLinenumber: 3022
    functionLinenumberEnd: 3035
    functionName: numeric_mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - numeric_mul_safe
    - PG_RETURN_NUMERIC
    - unlikely
    - PG_RETURN_NULL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_mul(PG_FUNCTION_ARGS)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3054,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3054,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3056,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3056,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3057,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3058,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3060,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3063,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3065,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3067,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3069,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3071,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3073,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3076,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3078,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3080,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3082,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3085,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3087,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3090,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3092,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3094,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3096,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3098,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3098,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3099,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3102,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3104,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3108,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3122,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3123,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3125,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3126,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3129,1
    - Dst: make_result_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3131,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3133,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 57
    argCount: 3
    argNames:
    - num1
    - num2
    - escontext
    argTypes:
    - Numeric
    - Numeric
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3136
      start: 3043
    functionDepth: 2
    functionLinenumber: 3043
    functionLinenumberEnd: 3136
    functionName: numeric_mul_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - make_result_safe
    - mul_var
    - make_result
    - round_var
    - NUMERIC_IS_SPECIAL
    - Assert
    - NUMERIC_IS_NAN
    - numeric_sign_internal
    - init_var_from_num
    - init_var
    - free_var
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_mul_safe(Numeric num1, Numeric num2, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3147,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3148,1
    - Dst: numeric_div_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3151,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3154
      start: 3144
    functionDepth: 1
    functionLinenumber: 3144
    functionLinenumberEnd: 3154
    functionName: numeric_div
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - PG_RETURN_NUMERIC
    - numeric_div_safe
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_div(PG_FUNCTION_ARGS)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3174,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3174,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3176,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3176,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3177,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3178,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3180,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3181,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3182,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3187,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3189,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3191,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3193,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3195,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3196,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3197,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3202,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3206,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3215,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3221,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3222,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3224,1
    - Dst: select_div_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3229,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3238,1
    - Dst: make_result_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3240,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3242,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3247,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3248,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3249,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 3
    argNames:
    - num1
    - num2
    - escontext
    argTypes:
    - Numeric
    - Numeric
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3250
      start: 3162
    functionDepth: 2
    functionLinenumber: 3162
    functionLinenumberEnd: 3250
    functionName: numeric_div_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - make_result_safe
    - ereturn
    - select_div_scale
    - make_result
    - NUMERIC_IS_SPECIAL
    - Assert
    - NUMERIC_IS_NAN
    - numeric_sign_internal
    - init_var_from_num
    - init_var
    - errcode
    - free_var
    - errmsg
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    - div_var
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_div_safe(Numeric num1, Numeric num2, Node *escontext)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3261,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3262,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3271,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3271,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3273,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3273,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3274,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3274,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3275,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3277,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3278,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3278,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3279,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3282,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3283,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3284,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3287,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3287,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3289,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3291,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3293,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3295,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3296,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3296,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3297,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3300,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3301,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3302,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3305,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3305,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3307,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3309,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3318,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3318,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3324,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3325,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3327,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3332,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3334,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3336,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3338,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3339
      start: 3258
    functionDepth: 2
    functionLinenumber: 3258
    functionLinenumberEnd: 3339
    functionName: numeric_div_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - NUMERIC_IS_SPECIAL
    - errcode
    - NUMERIC_IS_NAN
    - numeric_sign_internal
    - Assert
    - ereport
    - init_var_from_num
    - init_var
    - free_var
    - errmsg
    - NUMERIC_IS_NINF
    - PG_RETURN_NUMERIC
    - NUMERIC_IS_PINF
    - div_var
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_div_trunc(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3350,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3351,1
    - Dst: numeric_mod_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3354,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3357
      start: 3347
    functionDepth: 1
    functionLinenumber: 3347
    functionLinenumberEnd: 3357
    functionName: numeric_mod
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - numeric_mod_safe
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_mod(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3378,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3378,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3380,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3380,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3381,1
    - Dst: NUMERIC_IS_INF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3382,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3384,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3388,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3391,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3394,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3395,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3397,1
    - Dst: mod_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3403,1
    - Dst: make_result_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3405,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3407,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3414,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 3
    argNames:
    - num1
    - num2
    - escontext
    argTypes:
    - Numeric
    - Numeric
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3415
      start: 3365
    functionDepth: 2
    functionLinenumber: 3365
    functionLinenumberEnd: 3415
    functionName: numeric_mod_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - make_result_safe
    - ereturn
    - mod_var
    - make_result
    - NUMERIC_IS_SPECIAL
    - errcode
    - NUMERIC_IS_NAN
    - numeric_sign_internal
    - init_var_from_num
    - NUMERIC_IS_INF
    - init_var
    - free_var
    - errmsg
    - duplicate_numeric
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_mod_safe(Numeric num1, Numeric num2, Node *escontext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3426,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3433,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3434,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3434,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3439,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3441,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3443,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3445,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3448
      start: 3423
    functionDepth: 1
    functionLinenumber: 3423
    functionLinenumberEnd: 3448
    functionName: numeric_inc
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - add_var
    - free_var
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_inc(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3459,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3460,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3466,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3467,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3470
      start: 3456
    functionDepth: 2
    functionLinenumber: 3456
    functionLinenumberEnd: 3470
    functionName: numeric_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - cmp_numerics
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_smaller(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3481,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3482,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3488,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3489,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3492
      start: 3478
    functionDepth: 2
    functionLinenumber: 3478
    functionLinenumberEnd: 3492
    functionName: numeric_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - cmp_numerics
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_larger(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3510,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3511,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3521,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3521,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3522,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3522,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3527,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3528,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3530,1
    - Dst: gcd_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3535,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3537,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3539,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3542
      start: 3507
    functionDepth: 1
    functionLinenumber: 3507
    functionLinenumberEnd: 3542
    functionName: numeric_gcd
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - init_var
    - free_var
    - PG_RETURN_NUMERIC
    - gcd_var
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_gcd(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3553,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3554,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3564,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3564,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3565,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3565,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3570,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3571,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3573,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3586,1
    - Dst: gcd_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3589,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3590,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3591,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3595,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3597,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3599,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3601,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3602
      start: 3550
    functionDepth: 1
    functionLinenumber: 3550
    functionLinenumberEnd: 3602
    functionName: numeric_lcm
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - div_var
    - make_result
    - mul_var
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - init_var
    - free_var
    - set_var_from_var
    - Max
    - PG_RETURN_NUMERIC
    - gcd_var
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_lcm(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3613,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3619,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3620,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3621,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3624,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3625,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3629,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3630,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3631,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3633,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3634,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3636,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3641,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3643,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3645,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3648,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3650,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3651,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3654
      start: 3610
    functionDepth: 2
    functionLinenumber: 3610
    functionLinenumberEnd: 3654
    functionName: numeric_fac
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - mul_var
    - make_result
    - errcode
    - init_var
    - ereport
    - CHECK_FOR_INTERRUPTS
    - free_var
    - errmsg
    - PG_GETARG_INT64
    - int64_to_numericvar
    - PG_RETURN_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_fac(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3665,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3675,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3678,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3679,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3680,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3681,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3683,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3683,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3691,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3693,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3712,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3713,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3714,1
    - Dst: sqrt_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3719,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3721,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3723,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3725,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3726
      start: 3662
    functionDepth: 2
    functionLinenumber: 3662
    functionLinenumberEnd: 3726
    functionName: numeric_sqrt
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - sqrt_var
    - make_result
    - errcode
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - init_var
    - ereport
    - Min
    - free_var
    - Max
    - errmsg
    - NUMERIC_IS_NINF
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_sqrt(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3737,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3747,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3750,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3751,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3751,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3753,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3753,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3761,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3763,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3766,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3775,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3776,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3779,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3780,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3781,1
    - Dst: exp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3786,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3788,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3790,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3792,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3793
      start: 3734
    functionDepth: 1
    functionLinenumber: 3734
    functionLinenumberEnd: 3793
    functionName: numeric_exp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - init_var
    - Min
    - exp_var
    - free_var
    - numericvar_to_double_no_overflow
    - Max
    - NUMERIC_IS_NINF
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_exp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3804,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3814,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3816,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3817,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3818,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3819,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3821,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3821,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3824,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3825,1
    - Dst: estimate_ln_dweight
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3828,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3831,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3832,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3833,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3835,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3837,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3839,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3841,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3842
      start: 3801
    functionDepth: 2
    functionLinenumber: 3801
    functionLinenumberEnd: 3842
    functionName: numeric_ln
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - errcode
    - NUMERIC_IS_SPECIAL
    - ln_var
    - init_var_from_num
    - init_var
    - ereport
    - estimate_ln_dweight
    - Min
    - free_var
    - Max
    - errmsg
    - NUMERIC_IS_NINF
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_ln(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3853,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3854,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3863,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3863,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3868,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3868,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3869,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3869,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3871,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3872,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3874,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3875,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3876,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3879,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3880,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3881,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3882,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3885,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3886,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3886,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3888,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3890,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3890,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3892,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3892,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3898,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3899,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3900,1
    - Dst: log_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3906,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3908,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3910,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3912,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3913
      start: 3850
    functionDepth: 2
    functionLinenumber: 3850
    functionLinenumberEnd: 3913
    functionName: numeric_log
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - NUMERIC_IS_SPECIAL
    - errcode
    - NUMERIC_IS_NAN
    - numeric_sign_internal
    - Assert
    - ereport
    - init_var_from_num
    - init_var
    - free_var
    - errmsg
    - PG_RETURN_NUMERIC
    - NUMERIC_IS_PINF
    - log_var
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_log(PG_FUNCTION_ARGS)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3924,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3925,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3936,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3936,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3943,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3945,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3947,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3948,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3949,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3949,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3951,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3951,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3953,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3955,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3957,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3958,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3959,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3959,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3961,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3961,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3964,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3965,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3967,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3968,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3969,1
    - Dst: numeric_is_integral
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3970,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3971,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3972,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3973,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3980,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3982,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3983,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3984,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3984,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3991,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3991,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4000,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4000,1
    - Dst: NUMERIC_IS_INF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4013,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4017,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4021,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4022,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4023,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4023,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4025,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4028,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4028,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4030,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4030,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4038,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4041,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4041,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4043,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4046,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4046,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4054,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4054,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4060,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4063,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4063,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4065,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4065,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4075,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4076,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4079,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4080,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4081,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4086,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4087,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4088,1
    - Dst: power_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4094,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4096,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4098,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4100,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4101
      start: 3921
    functionDepth: 2
    functionLinenumber: 3921
    functionLinenumberEnd: 4101
    functionName: numeric_power
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - cmp_var
    - errcode
    - Assert
    - init_var_from_num
    - free_var
    - errmsg
    - PG_RETURN_NUMERIC
    - numeric_is_integral
    - make_result
    - NUMERIC_IS_NAN
    - ereport
    - NUMERIC_IS_INF
    - NUMERIC_IS_NINF
    - NUMERIC_IS_SPECIAL
    - numeric_sign_internal
    - init_var
    - power_var
    - NUMERIC_IS_PINF
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_power(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4111,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4113,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4114,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4116,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4117
      start: 4108
    functionDepth: 1
    functionLinenumber: 4108
    functionLinenumberEnd: 4117
    functionName: numeric_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - NUMERIC_IS_SPECIAL
    - NUMERIC_DSCALE
    - PG_RETURN_NULL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_scale(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4168
      start: 4122
    functionDepth: 0
    functionLinenumber: 4122
    functionLinenumberEnd: 4168
    functionName: get_min_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_min_scale(NumericVar *var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4176,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4180,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4181,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4183,1
    - Dst: get_min_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4184,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4185,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4188
      start: 4173
    functionDepth: 1
    functionLinenumber: 4173
    functionLinenumberEnd: 4188
    functionName: numeric_min_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - free_var
    - PG_RETURN_NULL
    - get_min_scale
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_min_scale(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4196,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4200,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4201,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4201,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4203,1
    - Dst: get_min_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4204,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4205,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4206,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4209
      start: 4193
    functionDepth: 1
    functionLinenumber: 4193
    functionLinenumberEnd: 4209
    functionName: numeric_trim_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - free_var
    - PG_RETURN_NUMERIC
    - duplicate_numeric
    - get_min_scale
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_trim_scale(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4223,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4225,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4226,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4227,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4228,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4232,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4234,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4236,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4243,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4247,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4248,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4250,1
    - Dst: random_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4252,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4254,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4256,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - state
    - rmin
    - rmax
    argTypes:
    - pg_prng_state*
    - Numeric
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4259
      start: 4214
    functionDepth: 2
    functionLinenumber: 4214
    functionLinenumberEnd: 4259
    functionName: random_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - errcode
    - NUMERIC_IS_SPECIAL
    - NUMERIC_IS_NAN
    - init_var_from_num
    - init_var
    - ereport
    - free_var
    - random_var
    - errmsg
    linkageType: ''
    returnType: Numeric
    signature: Numeric random_numeric(pg_prng_state *state, Numeric rmin, Numeric
      rmax)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4275,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4277,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4279,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4284
      start: 4269
    functionDepth: 1
    functionLinenumber: 4269
    functionLinenumberEnd: 4284
    functionName: int64_to_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - free_var
    - init_var
    - make_result
    - int64_to_numericvar
    linkageType: ''
    returnType: Numeric
    signature: Numeric int64_to_numeric(int64 val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4299,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4333,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4333,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4335,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4335,1
    - Dst: int64_to_int128
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4340,1
    - Dst: int128_add_int64_mul_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4341,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4343,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4346,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4351,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4356,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4358,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - val1
    - log10val2
    argTypes:
    - int64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4361
      start: 4290
    functionDepth: 2
    functionLinenumber: 4290
    functionLinenumberEnd: 4361
    functionName: int64_div_fast_to_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - int64_to_int128
    - make_result
    - init_var
    - int128_to_numericvar
    - free_var
    - unlikely
    - int64_to_numericvar
    - pg_mul_s64_overflow
    - StaticAssertDecl
    - lengthof
    - int128_add_int64_mul_int64
    linkageType: ''
    returnType: Numeric
    signature: Numeric int64_div_fast_to_numeric(int64 val1, int log10val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4366,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4368,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4369
      start: 4363
    functionDepth: 2
    functionLinenumber: 4363
    functionLinenumberEnd: 4369
    functionName: int4_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - int64_to_numeric
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4_numeric(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4380,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4382,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4383,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4384,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4385,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4387,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4389,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4393,1
    - Dst: numericvar_to_int32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4395,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4396,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4397,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4398,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - num
    - escontext
    argTypes:
    - Numeric
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4401
      start: 4374
    functionDepth: 2
    functionLinenumber: 4374
    functionLinenumberEnd: 4401
    functionName: numeric_int4_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numericvar_to_int32
    - errcode
    - NUMERIC_IS_SPECIAL
    - NUMERIC_IS_NAN
    - init_var_from_num
    - errmsg
    - ereturn
    linkageType: ''
    returnType: int32
    signature: int32 numeric_int4_safe(Numeric num, Node *escontext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4406,1
    - Dst: numeric_int4_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4409,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4411,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4411,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4412,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4415
      start: 4403
    functionDepth: 3
    functionLinenumber: 4403
    functionLinenumberEnd: 4415
    functionName: numeric_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_RETURN_INT32
    - numeric_int4_safe
    - unlikely
    - PG_RETURN_NULL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_int4(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: numericvar_to_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4427,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4430,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4437
      start: 4422
    functionDepth: 1
    functionLinenumber: 4422
    functionLinenumberEnd: 4437
    functionName: numericvar_to_int32
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - numericvar_to_int64
    - unlikely
    linkageType: ''
    returnType: bool
    signature: bool numericvar_to_int32(const NumericVar *var, int32 *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4442,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4444,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4445
      start: 4439
    functionDepth: 2
    functionLinenumber: 4439
    functionLinenumberEnd: 4445
    functionName: int8_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - int64_to_numeric
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8_numeric(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4456,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4458,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4459,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4460,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4461,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4463,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4464,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4465,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4469,1
    - Dst: numericvar_to_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4471,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4472,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4473,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - num
    - escontext
    argTypes:
    - Numeric
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4477
      start: 4450
    functionDepth: 2
    functionLinenumber: 4450
    functionLinenumberEnd: 4477
    functionName: numeric_int8_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numericvar_to_int64
    - errcode
    - NUMERIC_IS_SPECIAL
    - NUMERIC_IS_NAN
    - init_var_from_num
    - errmsg
    - ereturn
    linkageType: ''
    returnType: int64
    signature: int64 numeric_int8_safe(Numeric num, Node *escontext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4482,1
    - Dst: numeric_int8_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4485,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4487,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4487,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4488,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4491
      start: 4479
    functionDepth: 3
    functionLinenumber: 4479
    functionLinenumberEnd: 4491
    functionName: numeric_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_RETURN_INT64
    - numeric_int8_safe
    - unlikely
    - PG_RETURN_NULL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4497,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4499,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4500
      start: 4494
    functionDepth: 2
    functionLinenumber: 4494
    functionLinenumberEnd: 4500
    functionName: int2_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - int64_to_numeric
    - PG_GETARG_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int2_numeric(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4506,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4511,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4513,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4514,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4515,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4516,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4518,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4520,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4524,1
    - Dst: numericvar_to_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4526,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4527,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4528,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4529,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4531,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4531,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4532,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4533,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4534,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4539,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4540
      start: 4503
    functionDepth: 2
    functionLinenumber: 4503
    functionLinenumberEnd: 4540
    functionName: numeric_int2
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numericvar_to_int64
    - NUMERIC_IS_SPECIAL
    - errcode
    - NUMERIC_IS_NAN
    - init_var_from_num
    - unlikely
    - errmsg
    - PG_RETURN_INT16
    - ereturn
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_int2(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4546,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4552,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4553,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4553,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4555,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4558,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4558,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4560,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4560,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4563,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4565,1
    - Dst: set_var_from_str
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4568,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4569,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4571,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4573,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4575,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4576
      start: 4543
    functionDepth: 1
    functionLinenumber: 4543
    functionLinenumberEnd: 4576
    functionName: float8_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - PG_GETARG_FLOAT8
    - isinf
    - init_var
    - PG_RETURN_NULL
    - free_var
    - set_var_from_str
    - PG_RETURN_NUMERIC
    - isnan
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum float8_numeric(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4582,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4586,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4588,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4589,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4589,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4590,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4591,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4591,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4593,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4593,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4596,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4596,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4597,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4598,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4603,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4604,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4607,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4608
      start: 4579
    functionDepth: 2
    functionLinenumber: 4579
    functionLinenumberEnd: 4608
    functionName: numeric_float8
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NumericGetDatum
    - DirectInputFunctionCallSafe
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - pfree
    - get_float8_nan
    - PG_RETURN_DATUM
    - DirectFunctionCall1
    - PG_RETURN_NULL
    - NUMERIC_IS_NINF
    - PG_RETURN_FLOAT8
    - NUMERIC_IS_PINF
    - DatumGetCString
    - get_float8_infinity
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_float8(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4619,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4622,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4624,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4626,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4629,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4635,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4636,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4639,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4640
      start: 4616
    functionDepth: 1
    functionLinenumber: 4616
    functionLinenumberEnd: 4640
    functionName: numeric_float8_no_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - numericvar_to_double_no_overflow
    - NUMERIC_IS_NINF
    - PG_RETURN_FLOAT8
    - NUMERIC_IS_PINF
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_float8_no_overflow(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4645,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4651,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4652,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4652,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4654,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4657,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4657,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4659,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4659,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4662,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4664,1
    - Dst: set_var_from_str
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4667,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4668,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4670,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4672,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4674,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4675
      start: 4642
    functionDepth: 1
    functionLinenumber: 4642
    functionLinenumberEnd: 4675
    functionName: float4_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - PG_GETARG_FLOAT4
    - isinf
    - init_var
    - PG_RETURN_NULL
    - free_var
    - set_var_from_str
    - PG_RETURN_NUMERIC
    - isnan
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum float4_numeric(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4681,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4685,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4687,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4688,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4688,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4689,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4690,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4690,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4692,1
    - Dst: get_float4_nan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4692,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4695,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4695,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4696,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4698,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4703,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4704,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4707,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4709,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4710
      start: 4678
    functionDepth: 2
    functionLinenumber: 4678
    functionLinenumberEnd: 4710
    functionName: numeric_float4
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NumericGetDatum
    - get_float4_infinity
    - DirectInputFunctionCallSafe
    - NUMERIC_IS_SPECIAL
    - pfree
    - PG_RETURN_DATUM
    - DirectFunctionCall1
    - get_float4_nan
    - PG_RETURN_FLOAT4
    - NUMERIC_IS_NINF
    - PG_RETURN_NULL
    - NUMERIC_IS_PINF
    - DatumGetCString
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_float4(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4716,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4720,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4722,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4723,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4724,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4725,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4727,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4729,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4733,1
    - Dst: numericvar_to_uint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4735,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4736,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4737,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4738,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4740,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4741
      start: 4713
    functionDepth: 2
    functionLinenumber: 4713
    functionLinenumberEnd: 4741
    functionName: numeric_pg_lsn
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errcode
    - NUMERIC_IS_SPECIAL
    - NUMERIC_IS_NAN
    - init_var_from_num
    - PG_RETURN_LSN
    - ereport
    - errmsg
    - numericvar_to_uint64
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_pg_lsn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - na
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4775
      start: 4773
    functionDepth: 0
    functionLinenumber: 4773
    functionLinenumberEnd: 4775
    functionName: NA_TOTAL_COUNT
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NA_TOTAL_COUNT(na)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4787,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4788,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4790,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4792,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4796,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - fcinfo
    - calcSumX2
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4799
      start: 4780
    functionDepth: 2
    functionLinenumber: 4780
    functionLinenumberEnd: 4799
    functionName: makeNumericAggState
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - AggCheckCallContext
    - palloc0_object
    - elog
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: NumericAggState
    signature: 'NumericAggState *

      makeNumericAggState(FunctionCallInfo fcinfo, bool calcSumX2)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - calcSumX2
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4815
      start: 4805
    functionDepth: 0
    functionLinenumber: 4805
    functionLinenumberEnd: 4815
    functionName: makeNumericAggStateCurrentContext
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: NumericAggState
    signature: 'NumericAggState *

      makeNumericAggStateCurrentContext(bool calcSumX2)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4828,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4830,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4832,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4840,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4857,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4858,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4862,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4867,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4870,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4872,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - NumericAggState*
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4873
      start: 4820
    functionDepth: 1
    functionLinenumber: 4820
    functionLinenumberEnd: 4873
    functionName: do_numeric_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - mul_var
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - init_var
    - MemoryContextSwitchTo
    - accum_sum_add
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    linkageType: ''
    returnType: void
    signature: void do_numeric_accum(NumericAggState *state, Numeric newval)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4898,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4900,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4902,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4910,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4945,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4946,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4950,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4956,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4962,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4968,1
    - Dst: accum_sum_reset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4970,1
    - Dst: accum_sum_reset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4972,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4975,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - NumericAggState*
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4978
      start: 4890
    functionDepth: 1
    functionLinenumber: 4890
    functionLinenumberEnd: 4978
    functionName: do_numeric_discard
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - mul_var
    - NUMERIC_IS_SPECIAL
    - Assert
    - init_var_from_num
    - init_var
    - MemoryContextSwitchTo
    - accum_sum_add
    - NUMERIC_IS_NINF
    - NUMERIC_IS_PINF
    - accum_sum_reset
    linkageType: ''
    returnType: bool
    signature: bool do_numeric_discard(NumericAggState *state, Numeric newval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4988,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4988,1
    - Dst: makeNumericAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4992,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4994,1
    - Dst: do_numeric_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4995,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4995,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4997,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4998
      start: 4983
    functionDepth: 3
    functionLinenumber: 4983
    functionLinenumberEnd: 4998
    functionName: numeric_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - do_numeric_accum
    - makeNumericAggState
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_accum(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5011,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5012,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5014,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5014,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5015,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5015,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5018,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5023,1
    - Dst: makeNumericAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5025,1
    - Dst: accum_sum_copy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5033,1
    - Dst: accum_sum_copy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5034,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5036,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5038,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5061,1
    - Dst: accum_sum_combine
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5064,1
    - Dst: accum_sum_combine
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5065,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5067,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5069,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5070
      start: 5003
    functionDepth: 2
    functionLinenumber: 5003
    functionLinenumberEnd: 5070
    functionName: numeric_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - accum_sum_copy
    - AggCheckCallContext
    - makeNumericAggStateCurrentContext
    - accum_sum_combine
    - MemoryContextSwitchTo
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_combine(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5080,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5080,1
    - Dst: makeNumericAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5084,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5086,1
    - Dst: do_numeric_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5087,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5087,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5089,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5090
      start: 5075
    functionDepth: 3
    functionLinenumber: 5075
    functionLinenumberEnd: 5090
    functionName: numeric_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - do_numeric_accum
    - makeNumericAggState
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_avg_accum(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5103,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5104,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5106,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5106,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5107,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5107,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5110,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5115,1
    - Dst: makeNumericAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5117,1
    - Dst: accum_sum_copy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5125,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5127,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5129,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5152,1
    - Dst: accum_sum_combine
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5155,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5157,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5159,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5160
      start: 5095
    functionDepth: 2
    functionLinenumber: 5095
    functionLinenumberEnd: 5160
    functionName: numeric_avg_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - accum_sum_copy
    - AggCheckCallContext
    - makeNumericAggStateCurrentContext
    - accum_sum_combine
    - MemoryContextSwitchTo
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_avg_combine(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5176,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5177,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5179,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5181,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5183,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5186,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5189,1
    - Dst: numericvar_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5190,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5193,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5196,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5199,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5202,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5205,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5207,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5209,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5212
      start: 5167
    functionDepth: 4
    functionLinenumber: 5167
    functionLinenumberEnd: 5212
    functionName: numeric_avg_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - pq_endtypsend
    - AggCheckCallContext
    - init_var
    - pq_sendint32
    - pq_begintypsend
    - accum_sum_final
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - free_var
    - PG_GETARG_POINTER
    - numericvar_serialize
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_avg_serialize(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5227,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5228,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5230,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5232,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5238,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5238,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5239,1
    - Dst: makeNumericAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5241,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5244,1
    - Dst: numericvar_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5247,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5248,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5251,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5254,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5257,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5260,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5263,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5265,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5267,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5270
      start: 5219
    functionDepth: 4
    functionLinenumber: 5219
    functionLinenumberEnd: 5270
    functionName: numeric_avg_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - numericvar_deserialize
    - initReadOnlyStringInfo
    - AggCheckCallContext
    - makeNumericAggStateCurrentContext
    - init_var
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - free_var
    - pq_getmsgend
    - accum_sum_add
    - pq_getmsgint64
    - pq_getmsgint
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_avg_deserialize(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5286,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5287,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5289,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5291,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5293,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5296,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5299,1
    - Dst: numericvar_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5300,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5303,1
    - Dst: numericvar_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5304,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5307,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5310,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5313,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5316,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5319,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5321,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5323,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5326
      start: 5277
    functionDepth: 4
    functionLinenumber: 5277
    functionLinenumberEnd: 5326
    functionName: numeric_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - pq_endtypsend
    - AggCheckCallContext
    - init_var
    - pq_sendint32
    - pq_begintypsend
    - accum_sum_final
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - free_var
    - PG_GETARG_POINTER
    - numericvar_serialize
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_serialize(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5341,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5342,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5344,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5346,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5352,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5352,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5353,1
    - Dst: makeNumericAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5355,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5358,1
    - Dst: numericvar_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5361,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5362,1
    - Dst: numericvar_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5365,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5366,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5369,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5372,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5375,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5378,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5381,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5383,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5385,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5388
      start: 5333
    functionDepth: 4
    functionLinenumber: 5333
    functionLinenumberEnd: 5388
    functionName: numeric_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - numericvar_deserialize
    - initReadOnlyStringInfo
    - AggCheckCallContext
    - makeNumericAggStateCurrentContext
    - init_var
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - free_var
    - pq_getmsgend
    - accum_sum_add
    - pq_getmsgint64
    - pq_getmsgint
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_deserialize(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5399,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5399,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5403,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5405,1
    - Dst: do_numeric_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5408,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5408,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5409,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5412,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5413
      start: 5394
    functionDepth: 2
    functionLinenumber: 5394
    functionLinenumberEnd: 5413
    functionName: numeric_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - do_numeric_discard
    - PG_RETURN_POINTER
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5451,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5452,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5454,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5456,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - fcinfo
    - calcSumX2
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5462
      start: 5444
    functionDepth: 2
    functionLinenumber: 5444
    functionLinenumberEnd: 5462
    functionName: makeInt128AggState
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - AggCheckCallContext
    - palloc0_object
    - elog
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: Int128AggState
    signature: 'Int128AggState *

      makeInt128AggState(FunctionCallInfo fcinfo, bool calcSumX2)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - calcSumX2
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5477
      start: 5468
    functionDepth: 0
    functionLinenumber: 5468
    functionLinenumberEnd: 5477
    functionName: makeInt128AggStateCurrentContext
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    linkageType: ''
    returnType: Int128AggState
    signature: 'Int128AggState *

      makeInt128AggStateCurrentContext(bool calcSumX2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: int128_add_int64_mul_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5486,1
    - Dst: int128_add_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - Int128AggState*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5490
      start: 5482
    functionDepth: 2
    functionLinenumber: 5482
    functionLinenumberEnd: 5490
    functionName: do_int128_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - int128_add_int64
    - int128_add_int64_mul_int64
    linkageType: ''
    returnType: void
    signature: void do_int128_accum(Int128AggState *state, int64 newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: int128_sub_int64_mul_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5499,1
    - Dst: int128_sub_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - Int128AggState*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5503
      start: 5495
    functionDepth: 2
    functionLinenumber: 5495
    functionLinenumberEnd: 5503
    functionName: do_int128_discard
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - int128_sub_int64_mul_int64
    - int128_sub_int64
    linkageType: ''
    returnType: void
    signature: void do_int128_discard(Int128AggState *state, int64 newval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5510,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5510,1
    - Dst: makeInt128AggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5514,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5516,1
    - Dst: do_int128_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5517,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5517,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5519,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5520
      start: 5505
    functionDepth: 3
    functionLinenumber: 5505
    functionLinenumberEnd: 5520
    functionName: int2_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - do_int128_accum
    - makeInt128AggState
    linkageType: ''
    returnType: Datum
    signature: Datum int2_accum(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5527,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5527,1
    - Dst: makeInt128AggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5531,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5533,1
    - Dst: do_int128_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5534,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5534,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5536,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5537
      start: 5522
    functionDepth: 3
    functionLinenumber: 5522
    functionLinenumberEnd: 5537
    functionName: int4_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_ARGISNULL
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    - do_int128_accum
    - makeInt128AggState
    linkageType: ''
    returnType: Datum
    signature: Datum int4_accum(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5544,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5544,1
    - Dst: makeNumericAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5548,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5550,1
    - Dst: do_numeric_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5551,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5551,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5551,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5553,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5554
      start: 5539
    functionDepth: 3
    functionLinenumber: 5539
    functionLinenumberEnd: 5554
    functionName: int8_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - do_numeric_accum
    - makeNumericAggState
    - PG_GETARG_INT64
    - PG_RETURN_POINTER
    - int64_to_numeric
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum int8_accum(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5567,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5568,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5570,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5570,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5571,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5571,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5574,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5579,1
    - Dst: makeInt128AggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5581,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5586,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5588,1
    - Dst: int128_add_int128
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5594,1
    - Dst: int128_add_int128
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5595,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5597,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5598
      start: 5559
    functionDepth: 3
    functionLinenumber: 5559
    functionLinenumberEnd: 5598
    functionName: numeric_poly_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - int128_add_int128
    - AggCheckCallContext
    - MemoryContextSwitchTo
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - makeInt128AggState
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_combine(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5606,1
    - Dst: PG_INT128_HI_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5606,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5607,1
    - Dst: PG_INT128_LO_UINT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - val
    argTypes:
    - StringInfo
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5608
      start: 5603
    functionDepth: 2
    functionLinenumber: 5603
    functionLinenumberEnd: 5608
    functionName: int128_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - pq_sendint64
    - PG_INT128_LO_UINT64
    - PG_INT128_HI_INT64
    linkageType: ''
    returnType: void
    signature: void int128_serialize(StringInfo buf, INT128 val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5616,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5617,1
    - Dst: make_int128
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5620
      start: 5613
    functionDepth: 2
    functionLinenumber: 5613
    functionLinenumberEnd: 5620
    functionName: int128_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_int128
    - pq_getmsgint64
    linkageType: ''
    returnType: INT128
    signature: INT128 int128_deserialize(StringInfo buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5635,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5636,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5638,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5640,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5643,1
    - Dst: int128_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5646,1
    - Dst: int128_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5649,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5651,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5654
      start: 5627
    functionDepth: 4
    functionLinenumber: 5627
    functionLinenumberEnd: 5654
    functionName: numeric_poly_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - pq_endtypsend
    - AggCheckCallContext
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - int128_serialize
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_serialize(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5668,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5669,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5671,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5677,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5677,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5678,1
    - Dst: makeInt128AggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5680,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5683,1
    - Dst: int128_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5686,1
    - Dst: int128_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5689,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5691,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5694
      start: 5661
    functionDepth: 4
    functionLinenumber: 5661
    functionLinenumberEnd: 5694
    functionName: numeric_poly_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - initReadOnlyStringInfo
    - AggCheckCallContext
    - int128_deserialize
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - makeInt128AggStateCurrentContext
    - pq_getmsgend
    - pq_getmsgint64
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_deserialize(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5704,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5704,1
    - Dst: makeInt128AggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5708,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5710,1
    - Dst: do_int128_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5711,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5711,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5713,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5714
      start: 5699
    functionDepth: 3
    functionLinenumber: 5699
    functionLinenumberEnd: 5714
    functionName: int8_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - do_int128_accum
    - makeInt128AggState
    linkageType: ''
    returnType: Datum
    signature: Datum int8_avg_accum(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5728,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5729,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5731,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5731,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5732,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5732,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5735,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5740,1
    - Dst: makeInt128AggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5742,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5746,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5748,1
    - Dst: int128_add_int128
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5754,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5756,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5757
      start: 5720
    functionDepth: 3
    functionLinenumber: 5720
    functionLinenumberEnd: 5757
    functionName: int8_avg_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - int128_add_int128
    - AggCheckCallContext
    - MemoryContextSwitchTo
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - makeInt128AggState
    linkageType: ''
    returnType: Datum
    signature: Datum int8_avg_combine(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5772,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5773,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5775,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5777,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5780,1
    - Dst: int128_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5783,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5785,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5788
      start: 5764
    functionDepth: 4
    functionLinenumber: 5764
    functionLinenumberEnd: 5788
    functionName: int8_avg_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - pq_endtypsend
    - AggCheckCallContext
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - int128_serialize
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int8_avg_serialize(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5802,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5803,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5805,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5811,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5811,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5812,1
    - Dst: makeInt128AggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5814,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5817,1
    - Dst: int128_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5820,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5822,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5824,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5825
      start: 5795
    functionDepth: 4
    functionLinenumber: 5795
    functionLinenumberEnd: 5825
    functionName: int8_avg_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - initReadOnlyStringInfo
    - AggCheckCallContext
    - int128_deserialize
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - makeInt128AggStateCurrentContext
    - pq_getmsgend
    - pq_getmsgint64
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int8_avg_deserialize(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5836,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5836,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5840,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5842,1
    - Dst: do_int128_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5843,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5843,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5845,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5846
      start: 5831
    functionDepth: 3
    functionLinenumber: 5831
    functionLinenumberEnd: 5846
    functionName: int2_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - do_int128_discard
    - PG_GETARG_INT16
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum int2_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5853,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5853,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5857,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5859,1
    - Dst: do_int128_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5860,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5860,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5862,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5863
      start: 5848
    functionDepth: 3
    functionLinenumber: 5848
    functionLinenumberEnd: 5863
    functionName: int4_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - do_int128_discard
    - PG_ARGISNULL
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5870,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5870,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5874,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5876,1
    - Dst: do_numeric_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5879,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5879,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5879,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5880,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5883,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5884
      start: 5865
    functionDepth: 2
    functionLinenumber: 5865
    functionLinenumberEnd: 5884
    functionName: int8_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - do_numeric_discard
    - PG_GETARG_INT64
    - PG_RETURN_POINTER
    - int64_to_numeric
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum int8_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5891,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5891,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5895,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5897,1
    - Dst: do_int128_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5898,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5898,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5900,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5901
      start: 5886
    functionDepth: 3
    functionLinenumber: 5886
    functionLinenumberEnd: 5901
    functionName: int8_avg_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - do_int128_discard
    - PG_GETARG_INT64
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum int8_avg_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5910,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5910,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5914,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5916,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5918,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5920,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5922,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5924,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5925
      start: 5903
    functionDepth: 1
    functionLinenumber: 5903
    functionLinenumberEnd: 5925
    functionName: numeric_poly_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - init_var
    - int128_to_numericvar
    - free_var
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_sum(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5935,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5935,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5939,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5941,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5943,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5945,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5945,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5946,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5946,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5948,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5950,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5950,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5951
      start: 5927
    functionDepth: 2
    functionLinenumber: 5927
    functionLinenumberEnd: 5951
    functionName: numeric_poly_avg
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NumericGetDatum
    - DirectFunctionCall2
    - make_result
    - PG_RETURN_DATUM
    - init_var
    - int128_to_numericvar
    - free_var
    - PG_RETURN_NULL
    - int64_to_numeric
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_avg(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5961,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5961,1
    - Dst: NA_TOTAL_COUNT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5964,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5965,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5968,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5968,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5972,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5972,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5974,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5974,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5976,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5976,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5978,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5978,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5980,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5981,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5982,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5982,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5983,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5985,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5985,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5986
      start: 5953
    functionDepth: 2
    functionLinenumber: 5953
    functionLinenumberEnd: 5986
    functionName: numeric_avg
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NumericGetDatum
    - DirectFunctionCall2
    - make_result
    - PG_RETURN_DATUM
    - init_var
    - NA_TOTAL_COUNT
    - accum_sum_final
    - free_var
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - int64_to_numeric
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_avg(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5995,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5995,1
    - Dst: NA_TOTAL_COUNT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5998,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5999,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6002,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6002,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6006,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6006,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6008,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6008,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6010,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6010,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6012,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6013,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6014,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6015,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6017,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6018
      start: 5988
    functionDepth: 1
    functionLinenumber: 5988
    functionLinenumberEnd: 6018
    functionName: numeric_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - make_result
    - init_var
    - NA_TOTAL_COUNT
    - accum_sum_final
    - free_var
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_sum(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: NA_TOTAL_COUNT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6049,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6068,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6071,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6072,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6073,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6075,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6076,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6077,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6079,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6080,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6085,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6086,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6087,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6089,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6092,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6097,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6099,1
    - Dst: select_div_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6100,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6101,1
    - Dst: sqrt_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6103,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6105,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6108,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6109,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6110,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 4
    argNames:
    - state
    - variance
    - sample
    - is_null
    argTypes:
    - NumericAggState*
    - bool
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6113
      start: 6031
    functionDepth: 1
    functionLinenumber: 6031
    functionLinenumberEnd: 6113
    functionName: numeric_stddev_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - sqrt_var
    - mul_var
    - make_result
    - select_div_scale
    - cmp_var
    - init_var
    - sub_var
    - accum_sum_final
    - NA_TOTAL_COUNT
    - free_var
    - int64_to_numericvar
    - div_var
    linkageType: ''
    returnType: Numeric
    signature: "Numeric numeric_stddev_internal(NumericAggState *state,\n\t\t\t\t\t\tbool
      variance, bool sample,\n\t\t\t\t\t\tbool *is_null)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6122,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6122,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6124,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6127,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6130
      start: 6115
    functionDepth: 2
    functionLinenumber: 6115
    functionLinenumberEnd: 6130
    functionName: numeric_var_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - numeric_stddev_internal
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_var_samp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6139,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6139,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6141,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6144,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6147
      start: 6132
    functionDepth: 2
    functionLinenumber: 6132
    functionLinenumberEnd: 6147
    functionName: numeric_stddev_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - numeric_stddev_internal
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_stddev_samp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6156,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6156,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6158,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6161,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6164
      start: 6149
    functionDepth: 2
    functionLinenumber: 6149
    functionLinenumberEnd: 6164
    functionName: numeric_var_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - numeric_stddev_internal
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_var_pop(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6173,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6173,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6175,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6178,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6181
      start: 6166
    functionDepth: 2
    functionLinenumber: 6166
    functionLinenumberEnd: 6181
    functionName: numeric_stddev_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - numeric_stddev_internal
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_stddev_pop(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6192,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6200,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6202,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6203,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6205,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6206,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6208,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6211,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6215,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6216,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6220,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - state
    - variance
    - sample
    - is_null
    argTypes:
    - Int128AggState*
    - bool
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6225
      start: 6183
    functionDepth: 2
    functionLinenumber: 6183
    functionLinenumberEnd: 6225
    functionName: numeric_poly_stddev_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - pfree
    - init_var
    - int128_to_numericvar
    - free_var
    - memset
    - accum_sum_add
    - numeric_stddev_internal
    linkageType: ''
    returnType: Numeric
    signature: "Numeric numeric_poly_stddev_internal(Int128AggState *state,\n\t\t\t\t\t\t\t
      bool variance, bool sample,\n\t\t\t\t\t\t\t bool *is_null)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6234,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6234,1
    - Dst: numeric_poly_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6236,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6239,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6242
      start: 6227
    functionDepth: 3
    functionLinenumber: 6227
    functionLinenumberEnd: 6242
    functionName: numeric_poly_var_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numeric_poly_stddev_internal
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_var_samp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6251,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6251,1
    - Dst: numeric_poly_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6253,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6256,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6259
      start: 6244
    functionDepth: 3
    functionLinenumber: 6244
    functionLinenumberEnd: 6259
    functionName: numeric_poly_stddev_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numeric_poly_stddev_internal
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_stddev_samp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6268,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6268,1
    - Dst: numeric_poly_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6270,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6273,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6276
      start: 6261
    functionDepth: 3
    functionLinenumber: 6261
    functionLinenumberEnd: 6276
    functionName: numeric_poly_var_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numeric_poly_stddev_internal
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_var_pop(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6285,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6285,1
    - Dst: numeric_poly_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6287,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6290,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6293
      start: 6278
    functionDepth: 3
    functionLinenumber: 6278
    functionLinenumberEnd: 6293
    functionName: numeric_poly_stddev_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numeric_poly_stddev_internal
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_stddev_pop(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6321,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6324,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6325,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6327,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6328,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6331,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6334,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6335,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6338,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6341
      start: 6315
    functionDepth: 1
    functionLinenumber: 6315
    functionLinenumberEnd: 6341
    functionName: int2_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum int2_sum(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6349,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6352,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6353,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6355,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6356,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6359,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6362,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6363,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6366,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6368,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6369
      start: 6343
    functionDepth: 1
    functionLinenumber: 6343
    functionLinenumberEnd: 6369
    functionName: int4_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_ARGISNULL
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4_sum(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6379,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6382,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6383,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6385,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6385,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6385,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6394,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6397,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6398,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6401,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6401,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6402,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6403,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6403,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6403,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6404
      start: 6374
    functionDepth: 2
    functionLinenumber: 6374
    functionLinenumberEnd: 6404
    functionName: int8_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NumericGetDatum
    - DirectFunctionCall2
    - PG_RETURN_DATUM
    - PG_RETURN_NUMERIC
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - int64_to_numeric
    - PG_ARGISNULL
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum int8_sum(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6426,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6434,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6435,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6437,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6439,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6440,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6440,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6441,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6443,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6447,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6448
      start: 6422
    functionDepth: 2
    functionLinenumber: 6422
    functionLinenumberEnd: 6448
    functionName: int2_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - AggCheckCallContext
    - ARR_OVERHEAD_NONULLS
    - ARR_HASNULL
    - PG_GETARG_INT16
    - ARR_DATA_PTR
    - PG_RETURN_ARRAYTYPE_P
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_GETARG_ARRAYTYPE_P
    - ARR_SIZE
    linkageType: ''
    returnType: Datum
    signature: Datum int2_avg_accum(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6454,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6462,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6463,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6465,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6467,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6468,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6468,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6469,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6471,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6475,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6476
      start: 6450
    functionDepth: 2
    functionLinenumber: 6450
    functionLinenumberEnd: 6476
    functionName: int4_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - AggCheckCallContext
    - ARR_OVERHEAD_NONULLS
    - ARR_HASNULL
    - ARR_DATA_PTR
    - PG_RETURN_ARRAYTYPE_P
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_GETARG_ARRAYTYPE_P
    - ARR_SIZE
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4_avg_accum(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6486,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6487,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6489,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6490,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6492,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6493,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6493,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6494,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6496,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6497,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6497,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6498,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6500,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6501,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6506,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6507
      start: 6478
    functionDepth: 2
    functionLinenumber: 6478
    functionLinenumberEnd: 6507
    functionName: int4_avg_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - AggCheckCallContext
    - ARR_OVERHEAD_NONULLS
    - ARR_HASNULL
    - ARR_DATA_PTR
    - PG_RETURN_ARRAYTYPE_P
    - PG_GETARG_ARRAYTYPE_P
    - ARR_SIZE
    linkageType: ''
    returnType: Datum
    signature: Datum int4_avg_combine(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6513,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6521,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6522,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6524,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6526,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6527,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6527,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6528,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6530,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6534,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6535
      start: 6509
    functionDepth: 2
    functionLinenumber: 6509
    functionLinenumberEnd: 6535
    functionName: int2_avg_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - AggCheckCallContext
    - ARR_OVERHEAD_NONULLS
    - ARR_HASNULL
    - PG_GETARG_INT16
    - ARR_DATA_PTR
    - PG_RETURN_ARRAYTYPE_P
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_GETARG_ARRAYTYPE_P
    - ARR_SIZE
    linkageType: ''
    returnType: Datum
    signature: Datum int2_avg_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6541,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6549,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6550,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6552,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6554,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6555,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6555,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6556,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6558,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6562,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6563
      start: 6537
    functionDepth: 2
    functionLinenumber: 6537
    functionLinenumberEnd: 6563
    functionName: int4_avg_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - AggCheckCallContext
    - ARR_OVERHEAD_NONULLS
    - ARR_HASNULL
    - ARR_DATA_PTR
    - PG_RETURN_ARRAYTYPE_P
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_GETARG_ARRAYTYPE_P
    - ARR_SIZE
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4_avg_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6568,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6573,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6574,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6574,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6575,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6576,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6580,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6582,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6582,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6583,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6583,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6585,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6585,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6586
      start: 6565
    functionDepth: 2
    functionLinenumber: 6565
    functionLinenumberEnd: 6586
    functionName: int8_avg
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - NumericGetDatum
    - DirectFunctionCall2
    - ARR_OVERHEAD_NONULLS
    - PG_RETURN_DATUM
    - ARR_HASNULL
    - PG_RETURN_NULL
    - ARR_DATA_PTR
    - PG_GETARG_ARRAYTYPE_P
    - ARR_SIZE
    - int64_to_numeric
    linkageType: ''
    returnType: Datum
    signature: Datum int8_avg(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6595,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6598,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6599,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6599,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6600,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6601,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6605,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6607,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6608
      start: 6592
    functionDepth: 1
    functionLinenumber: 6592
    functionLinenumberEnd: 6608
    functionName: int2int4_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - elog
    - ARR_OVERHEAD_NONULLS
    - PG_RETURN_DATUM
    - ARR_HASNULL
    - PG_RETURN_NULL
    - Int64GetDatumFast
    - ARR_DATA_PTR
    - PG_GETARG_ARRAYTYPE_P
    - ARR_SIZE
    linkageType: ''
    returnType: Datum
    signature: Datum int2int4_sum(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6626,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6630,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6632,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6633,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6633,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6634,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6637,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6640,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6643,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6646,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6649,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6652,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6652,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6657,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6658,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - str
    - num
    argTypes:
    - char*
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6659
      start: 6623
    functionDepth: 1
    functionLinenumber: 6623
    functionLinenumberEnd: 6659
    functionName: dump_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_SIGN
    - NUMERIC_NDIGITS
    - printf
    - NUMERIC_DSCALE
    - NUMERIC_DIGITS
    - NUMERIC_WEIGHT
    linkageType: ''
    returnType: void
    signature: void dump_numeric(const char *str, Numeric num)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6670,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6674,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6677,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6680,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6683,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6686,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6689,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6694,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6696,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - str
    - var
    argTypes:
    - char*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6697
      start: 6665
    functionDepth: 0
    functionLinenumber: 6665
    functionLinenumberEnd: 6697
    functionName: dump_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_var(const char *str, NumericVar *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6721,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6722,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - var
    - ndigits
    argTypes:
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6726
      start: 6718
    functionDepth: 0
    functionLinenumber: 6718
    functionLinenumberEnd: 6726
    functionName: alloc_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 6
    functionsReached:
    - digitbuf_free
    - digitbuf_alloc
    linkageType: ''
    returnType: void
    signature: void alloc_var(NumericVar *var, int ndigits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6741
      start: 6734
    functionDepth: 0
    functionLinenumber: 6734
    functionLinenumberEnd: 6741
    functionName: free_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 43
    functionsReached:
    - digitbuf_free
    linkageType: ''
    returnType: void
    signature: void free_var(NumericVar *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6759
      start: 6750
    functionDepth: 0
    functionLinenumber: 6750
    functionLinenumberEnd: 6759
    functionName: zero_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - digitbuf_free
    linkageType: ''
    returnType: void
    signature: void zero_var(NumericVar *var)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6817,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6820,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6820,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6823,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6828,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6850,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6859,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6887,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6892,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6902,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6931,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6954,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6957,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6965,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6966,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6967,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6970,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6971,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6972,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 108
    argCount: 5
    argNames:
    - str
    - cp
    - dest
    - endptr
    - escontext
    argTypes:
    - char*
    - char*
    - NumericVar*
    - char**
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6974
      start: 6777
    functionDepth: 2
    functionLinenumber: 6777
    functionLinenumberEnd: 6974
    functionName: set_var_from_str
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    functionsReached:
    - alloc_var
    - isdigit
    - errcode
    - pfree
    - strip_var
    - strlen
    - memset
    - errmsg
    - palloc
    - ereturn
    linkageType: ''
    returnType: bool
    signature: "bool set_var_from_str(const char *str, const char *cp,\n\t\t\t\t NumericVar
      *dest, const char **endptr,\n\t\t\t\t Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - dig
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6986
      start: 6980
    functionDepth: 0
    functionLinenumber: 6980
    functionLinenumberEnd: 6986
    functionName: xdigit_value
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int xdigit_value(char dig)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7017,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7019,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7034,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7039,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7040,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7041,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7042,1
    - Dst: xdigit_value
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7053,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7060,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7076,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7077,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7078,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7079,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7113,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7114,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7115,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7116,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7146,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7150,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7151,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7152,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7153,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7160,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7168,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7169,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7170,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7175,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 105
    argCount: 7
    argNames:
    - str
    - cp
    - sign
    - base
    - dest
    - endptr
    - escontext
    argTypes:
    - char*
    - char*
    - int
    - int
    - NumericVar*
    - char**
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7177
      start: 7007
    functionDepth: 2
    functionLinenumber: 7007
    functionLinenumberEnd: 7177
    functionName: set_var_from_non_decimal_integer_str
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - mul_var
    - xdigit_value
    - errcode
    - zero_var
    - init_var
    - isxdigit
    - add_var
    - free_var
    - unlikely
    - errmsg
    - int64_to_numericvar
    - ereturn
    linkageType: ''
    returnType: bool
    signature: "bool set_var_from_non_decimal_integer_str(const char *str, const char
      *cp, int sign,\n\t\t\t\t\t\t\t\t\t int base, NumericVar *dest,\n\t\t\t\t\t\t\t\t\t
      const char **endptr, Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7190,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7192,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7194,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7195,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7196,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7198,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - num
    - dest
    argTypes:
    - Numeric
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7199
      start: 7185
    functionDepth: 1
    functionLinenumber: 7185
    functionLinenumberEnd: 7199
    functionName: set_var_from_num
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    functionsReached:
    - alloc_var
    - memcpy
    - NUMERIC_SIGN
    - NUMERIC_NDIGITS
    - NUMERIC_DSCALE
    - NUMERIC_DIGITS
    - NUMERIC_WEIGHT
    linkageType: ''
    returnType: void
    signature: void set_var_from_num(Numeric num, NumericVar *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7219,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7220,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7221,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7222,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - num
    - dest
    argTypes:
    - Numeric
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7225
      start: 7216
    functionDepth: 1
    functionLinenumber: 7216
    functionLinenumberEnd: 7225
    functionName: init_var_from_num
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 36
    functionsReached:
    - NUMERIC_SIGN
    - NUMERIC_NDIGITS
    - NUMERIC_DSCALE
    - NUMERIC_DIGITS
    - NUMERIC_WEIGHT
    linkageType: ''
    returnType: void
    signature: void init_var_from_num(Numeric num, NumericVar *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7238,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7241,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7244,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - value
    - dest
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7249
      start: 7233
    functionDepth: 0
    functionLinenumber: 7233
    functionLinenumberEnd: 7249
    functionName: set_var_from_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - digitbuf_free
    - memmove
    - memcpy
    - digitbuf_alloc
    linkageType: ''
    returnType: void
    signature: void set_var_from_var(const NumericVar *value, NumericVar *dest)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7288,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 65
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7388
      start: 7259
    functionDepth: 0
    functionLinenumber: 7259
    functionLinenumberEnd: 7388
    functionName: get_str_from_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    functionsReached:
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      get_str_from_var(const NumericVar *var)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log10
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7438,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7456,1
    - Dst: power_ten_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7458,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7459,1
    - Dst: get_str_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7460,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7462,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7471,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7472,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7473,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - var
    - rscale
    argTypes:
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7478
      start: 7412
    functionDepth: 1
    functionLinenumber: 7412
    functionLinenumberEnd: 7478
    functionName: get_str_from_var_sci
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - log10
    - pfree
    - init_var
    - get_str_from_var
    - power_ten_int
    - free_var
    - strlen
    - palloc
    - div_var
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      get_str_from_var_sci(const NumericVar *var, int rscale)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7494,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7495,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7496,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7497,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - var
    argTypes:
    - StringInfo
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7500
      start: 7489
    functionDepth: 2
    functionLinenumber: 7489
    functionLinenumberEnd: 7500
    functionName: numericvar_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - pq_sendint32
    - pq_sendint16
    linkageType: ''
    returnType: void
    signature: void numericvar_serialize(StringInfo buf, const NumericVar *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7511,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7513,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7515,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7516,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7517,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - buf
    - var
    argTypes:
    - StringInfo
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7520
      start: 7505
    functionDepth: 2
    functionLinenumber: 7505
    functionLinenumberEnd: 7520
    functionName: numericvar_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - pq_getmsgint
    - alloc_var
    linkageType: ''
    returnType: void
    signature: void numericvar_deserialize(StringInfo buf, NumericVar *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7533,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7533,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7534,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7536
      start: 7528
    functionDepth: 2
    functionLinenumber: 7528
    functionLinenumberEnd: 7536
    functionName: duplicate_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 14
    functionsReached:
    - VARSIZE
    - memcpy
    - palloc
    linkageType: ''
    returnType: Numeric
    signature: Numeric duplicate_numeric(Numeric num)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7564,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7566,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7568,1
    - Dst: dump_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7572,1
    - Dst: NUMERIC_CAN_BE_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7597,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7600,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7601,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7612,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7613,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7619,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7619,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7621,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7621,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7624,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7625,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7626,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7627,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7628,1
    - Dst: dump_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7630,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 2
    argNames:
    - var
    - escontext
    argTypes:
    - NumericVar*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7632
      start: 7544
    functionDepth: 2
    functionLinenumber: 7544
    functionLinenumberEnd: 7632
    functionName: make_result_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 7
    functionsReached:
    - elog
    - dump_numeric
    - NUMERIC_DSCALE
    - memcpy
    - errcode
    - Assert
    - NUMERIC_NDIGITS
    - SET_VARSIZE
    - palloc
    - errmsg
    - ereturn
    - NUMERIC_DIGITS
    - NUMERIC_WEIGHT
    - NUMERIC_CAN_BE_SHORT
    linkageType: ''
    returnType: Numeric
    signature: Numeric make_result_safe(const NumericVar *var, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_result_safe
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7644
      start: 7640
    functionDepth: 3
    functionLinenumber: 7640
    functionLinenumberEnd: 7644
    functionName: make_result
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 34
    functionsReached:
    - make_result_safe
    linkageType: ''
    returnType: Numeric
    signature: Numeric make_result(const NumericVar *var)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7666,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7669,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7670,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7674,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7714,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7715,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7716,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7717,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 3
    argNames:
    - var
    - typmod
    - escontext
    argTypes:
    - NumericVar*
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7730
      start: 7656
    functionDepth: 2
    functionLinenumber: 7656
    functionLinenumberEnd: 7730
    functionName: apply_typmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - numeric_typmod_scale
    - is_valid_numeric_typmod
    - round_var
    - errcode
    - errmsg
    - errdetail
    - ereturn
    - numeric_typmod_precision
    linkageType: ''
    returnType: bool
    signature: bool apply_typmod(NumericVar *var, int32 typmod, Node *escontext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7747,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7747,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7755,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7759,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7762,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7763,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7765,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7766,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7767,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - num
    - typmod
    - escontext
    argTypes:
    - Numeric
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7770
      start: 7741
    functionDepth: 2
    functionLinenumber: 7741
    functionLinenumberEnd: 7770
    functionName: apply_typmod_special
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - numeric_typmod_scale
    - is_valid_numeric_typmod
    - NUMERIC_IS_SPECIAL
    - Assert
    - NUMERIC_IS_NAN
    - errcode
    - errmsg
    - errdetail
    - ereturn
    - numeric_typmod_precision
    linkageType: ''
    returnType: bool
    signature: bool apply_typmod_special(Numeric num, int32 typmod, Node *escontext)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7790,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7791,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7792,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7795,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7809,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7821,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7821,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7823,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7829,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7829,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7831,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7837,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7841,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7848
      start: 7778
    functionDepth: 1
    functionLinenumber: 7778
    functionLinenumberEnd: 7848
    functionName: numericvar_to_int64
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - pg_sub_s64_overflow
    - round_var
    - Assert
    - init_var
    - free_var
    - strip_var
    - set_var_from_var
    - unlikely
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: bool
    signature: bool numericvar_to_int64(const NumericVar *var, int64 *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7862,1
    - Dst: pg_abs_s64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7866,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 2
    argNames:
    - val
    - var
    argTypes:
    - int64
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7893
      start: 7853
    functionDepth: 2
    functionLinenumber: 7853
    functionLinenumberEnd: 7893
    functionName: int64_to_numericvar
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 6
    functionsReached:
    - pg_abs_s64
    - alloc_var
    linkageType: ''
    returnType: void
    signature: void int64_to_numericvar(int64 val, NumericVar *var)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7911,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7912,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7913,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7916,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7921,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7928,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7937,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7944,1
    - Dst: pg_mul_u64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7944,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7946,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7952,1
    - Dst: pg_add_u64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7952,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7954,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7960,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7965
      start: 7900
    functionDepth: 1
    functionLinenumber: 7900
    functionLinenumberEnd: 7965
    functionName: numericvar_to_uint64
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - round_var
    - Assert
    - init_var
    - free_var
    - strip_var
    - set_var_from_var
    - unlikely
    - pg_mul_u64_overflow
    - pg_add_u64_overflow
    linkageType: ''
    returnType: bool
    signature: bool numericvar_to_uint64(const NumericVar *var, uint64 *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7979,1
    - Dst: int128_sign
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7980,1
    - Dst: int128_div_mod_int32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7995,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7996,1
    - Dst: int128_is_zero
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7997,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - val
    - var
    argTypes:
    - INT128
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8001
      start: 7970
    functionDepth: 1
    functionLinenumber: 7970
    functionLinenumberEnd: 8001
    functionName: int128_to_numericvar
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    functionsReached:
    - alloc_var
    - int128_is_zero
    - abs
    - int128_sign
    - int128_div_mod_int32
    linkageType: ''
    returnType: void
    signature: void int128_to_numericvar(INT128 val, NumericVar *var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_str_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8013,1
    - Dst: strtod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8016,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8020,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8021,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8022,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8026,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8029
      start: 8006
    functionDepth: 2
    functionLinenumber: 8006
    functionLinenumberEnd: 8029
    functionName: numericvar_to_double_no_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - errcode
    - pfree
    - ereport
    - errmsg
    - get_str_from_var
    - strtod
    linkageType: ''
    returnType: double
    signature: double numericvar_to_double_no_overflow(const NumericVar *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmp_var_common
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - var1
    - var2
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8045
      start: 8038
    functionDepth: 1
    functionLinenumber: 8038
    functionLinenumberEnd: 8045
    functionName: cmp_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - cmp_var_common
    linkageType: ''
    returnType: int
    signature: int cmp_var(const NumericVar *var1, const NumericVar *var2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: cmp_abs_common
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8078,1
    - Dst: cmp_abs_common
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8085,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 8
    argNames:
    - var1digits
    - var1ndigits
    - var1weight
    - var1sign
    - var2digits
    - var2ndigits
    - var2weight
    - var2sign
    argTypes:
    - NumericDigit*
    - int
    - int
    - int
    - NumericDigit*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8087
      start: 8053
    functionDepth: 1
    functionLinenumber: 8053
    functionLinenumberEnd: 8087
    functionName: cmp_var_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - cmp_abs_common
    linkageType: ''
    returnType: int
    signature: "int cmp_var_common(const NumericDigit *var1digits, int var1ndigits,\n\t\t\t
      \  int var1weight, int var1sign,\n\t\t\t   const NumericDigit *var2digits, int
      var2ndigits,\n\t\t\t   int var2weight, int var2sign)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: add_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8109,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8117,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8125,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8126,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8135,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8145,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8160,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8168,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8169,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8178,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8188,1
    - Dst: add_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8200,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8204
      start: 8096
    functionDepth: 0
    functionLinenumber: 8096
    functionLinenumberEnd: 8204
    functionName: add_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 7
    functionsReached:
    - zero_var
    - add_abs
    - Max
    - cmp_abs
    - sub_abs
    linkageType: ''
    returnType: void
    signature: void add_var(const NumericVar *var1, const NumericVar *var2, NumericVar
      *result)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: add_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8228,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8238,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8246,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8247,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8256,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8266,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8281,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8289,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8290,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8299,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8309,1
    - Dst: add_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8321,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8325
      start: 8213
    functionDepth: 0
    functionLinenumber: 8213
    functionLinenumberEnd: 8325
    functionName: sub_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - zero_var
    - add_abs
    - Max
    - cmp_abs
    - sub_abs
    linkageType: ''
    returnType: void
    signature: void sub_var(const NumericVar *var1, const NumericVar *var2, NumericVar
      *result)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8388,1
    - Dst: mul_var_short
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8399,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8454,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8466,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8470,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8471,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8496,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8530,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8533,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8566,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8572,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8584,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8600,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8602,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8611,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8614,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 98
    argCount: 4
    argNames:
    - var1
    - var2
    - result
    - rscale
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8615
      start: 8334
    functionDepth: 1
    functionLinenumber: 8334
    functionLinenumberEnd: 8615
    functionName: mul_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 8
    functionsReached:
    - alloc_var
    - round_var
    - Assert
    - zero_var
    - pfree
    - strip_var
    - memset
    - palloc
    - Min
    - mul_var_short
    linkageType: ''
    returnType: void
    signature: "void mul_var(const NumericVar *var1, const NumericVar *var2, NumericVar
      *result,\n\t\tint rscale)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8642,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8644,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8661,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8689,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8705,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8712,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8727,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8731,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8738,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8753,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8757,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8761,1
    - Dst: PRODSUM4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8768,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8783,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8787,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8791,1
    - Dst: PRODSUM4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8795,1
    - Dst: PRODSUM5
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8802,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8817,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8821,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8825,1
    - Dst: PRODSUM4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8829,1
    - Dst: PRODSUM5
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8833,1
    - Dst: PRODSUM6
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8840,1
    - Dst: PRODSUM5
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8854,1
    - Dst: PRODSUM4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8859,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8864,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8869,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8874,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8881,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8890,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 137
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8891
      start: 8625
    functionDepth: 1
    functionLinenumber: 8625
    functionLinenumberEnd: 8891
    functionName: mul_var_short
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - PRODSUM3
    - PRODSUM4
    - PRODSUM6
    - Assert
    - strip_var
    - digitbuf_alloc
    - PRODSUM1
    - PRODSUM5
    - digitbuf_free
    - PRODSUM2
    linkageType: ''
    returnType: void
    signature: "void mul_var_short(const NumericVar *var1, const NumericVar *var2,\n\t\t\t
      \ NumericVar *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - v1
    - ','
    - i1
    - ','
    - v2
    - ','
    - i2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8671
      start: 8670
    functionDepth: 0
    functionLinenumber: 8670
    functionLinenumberEnd: 8671
    functionName: PRODSUM1
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRODSUM1(v1,i1,v2,i2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - v1
    - ','
    - i1
    - ','
    - v2
    - ','
    - i2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8672
      start: 8671
    functionDepth: 0
    functionLinenumber: 8671
    functionLinenumberEnd: 8672
    functionName: PRODSUM2
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRODSUM2(v1,i1,v2,i2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - v1
    - ','
    - i1
    - ','
    - v2
    - ','
    - i2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8673
      start: 8672
    functionDepth: 0
    functionLinenumber: 8672
    functionLinenumberEnd: 8673
    functionName: PRODSUM3
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRODSUM3(v1,i1,v2,i2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - v1
    - ','
    - i1
    - ','
    - v2
    - ','
    - i2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8674
      start: 8673
    functionDepth: 0
    functionLinenumber: 8673
    functionLinenumberEnd: 8674
    functionName: PRODSUM4
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRODSUM4(v1,i1,v2,i2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - v1
    - ','
    - i1
    - ','
    - v2
    - ','
    - i2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8675
      start: 8674
    functionDepth: 0
    functionLinenumber: 8674
    functionLinenumberEnd: 8675
    functionName: PRODSUM5
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRODSUM5(v1,i1,v2,i2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - v1
    - ','
    - i1
    - ','
    - v2
    - ','
    - i2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8676
      start: 8675
    functionDepth: 0
    functionLinenumber: 8675
    functionLinenumberEnd: 8676
    functionName: PRODSUM6
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRODSUM6(v1,i1,v2,i2)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8945,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8946,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8947,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8971,1
    - Dst: div_var_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8990,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9002,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9036,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9072,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9077,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9078,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9089,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9102,1
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9170,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9181,1
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9218,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9238,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9405,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9426,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9428,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9438,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9440,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9443,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 198
    argCount: 6
    argNames:
    - var1
    - var2
    - result
    - rscale
    - round
    - exact
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9444
      start: 8912
    functionDepth: 2
    functionLinenumber: 8912
    functionLinenumberEnd: 9444
    functionName: div_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 7
    functionsReached:
    - alloc_var
    - round_var
    - div_var_int
    - errcode
    - Assert
    - zero_var
    - pfree
    - ereport
    - i64abs
    - trunc_var
    - strip_var
    - Max
    - errmsg
    - memset
    - palloc
    - Min
    - div_var_int64
    linkageType: ''
    returnType: void
    signature: "void div_var(const NumericVar *var1, const NumericVar *var2, NumericVar
      *result,\n\t\tint rscale, bool round, bool exact)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9471,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9476,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9494,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9499,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9513,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9541,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9550,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9552,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9555,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 6
    argNames:
    - var
    - ival
    - ival_weight
    - result
    - rscale
    - round
    argTypes:
    - NumericVar*
    - int
    - int
    - NumericVar*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9556
      start: 9453
    functionDepth: 2
    functionLinenumber: 9453
    functionLinenumberEnd: 9556
    functionName: div_var_int
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - round_var
    - errcode
    - zero_var
    - ereport
    - abs
    - trunc_var
    - strip_var
    - Max
    - errmsg
    - digitbuf_alloc
    - digitbuf_free
    linkageType: ''
    returnType: void
    signature: "void div_var_int(const NumericVar *var, int ival, int ival_weight,\n\t\t\tNumericVar
      *result, int rscale, bool round)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9585,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9587,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9592,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9610,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9615,1
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9629,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9657,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9666,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9668,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9671,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 6
    argNames:
    - var
    - ival
    - ival_weight
    - result
    - rscale
    - round
    argTypes:
    - NumericVar*
    - int64
    - int
    - NumericVar*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9672
      start: 9569
    functionDepth: 2
    functionLinenumber: 9569
    functionLinenumberEnd: 9672
    functionName: div_var_int64
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - round_var
    - errcode
    - zero_var
    - ereport
    - i64abs
    - trunc_var
    - strip_var
    - Max
    - errmsg
    - digitbuf_alloc
    - digitbuf_free
    linkageType: ''
    returnType: void
    signature: "void div_var_int64(const NumericVar *var, int64 ival, int ival_weight,\n\t\t\t
      \ NumericVar *result, int rscale, bool round)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9736,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9737,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9738,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9739,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - var1
    - var2
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9742
      start: 9681
    functionDepth: 0
    functionLinenumber: 9681
    functionLinenumberEnd: 9742
    functionName: select_div_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - Min
    - Max
    linkageType: ''
    returnType: int
    signature: int select_div_scale(const NumericVar *var1, const NumericVar *var2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9755,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9763,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9765,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9767,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9770
      start: 9750
    functionDepth: 3
    functionLinenumber: 9750
    functionLinenumberEnd: 9770
    functionName: mod_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - mul_var
    - init_var
    - sub_var
    - free_var
    - div_var
    linkageType: ''
    returnType: void
    signature: void mod_var(const NumericVar *var1, const NumericVar *var2, NumericVar
      *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9786,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9787,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9794,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9797,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9798,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9810,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9811,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9815,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9816,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9820,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9825,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9826,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9830,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9831,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9835,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9836,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9838,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9839,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - var1
    - var2
    - quot
    - rem
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9840
      start: 9779
    functionDepth: 3
    functionLinenumber: 9779
    functionLinenumberEnd: 9840
    functionName: div_mod_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - mul_var
    - init_var
    - sub_var
    - add_var
    - free_var
    - set_var_from_var
    - cmp_abs
    - div_var
    linkageType: ''
    returnType: void
    signature: "void div_mod_var(const NumericVar *var1, const NumericVar *var2,\n\t\t\tNumericVar
      *quot, NumericVar *rem)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9854,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9855,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9857,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9859,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9860,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9862,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9863,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9864
      start: 9849
    functionDepth: 2
    functionLinenumber: 9849
    functionLinenumberEnd: 9864
    functionName: ceil_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - cmp_var
    - init_var
    - add_var
    - trunc_var
    - free_var
    - set_var_from_var
    linkageType: ''
    returnType: void
    signature: void ceil_var(const NumericVar *var, NumericVar *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9878,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9879,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9881,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9883,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9884,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9886,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9887,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9888
      start: 9873
    functionDepth: 2
    functionLinenumber: 9873
    functionLinenumberEnd: 9888
    functionName: floor_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - cmp_var
    - init_var
    - sub_var
    - trunc_var
    - free_var
    - set_var_from_var
    linkageType: ''
    returnType: void
    signature: void floor_var(const NumericVar *var, NumericVar *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9904,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9912,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9927,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9933,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9934,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9937,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9938,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9943,1
    - Dst: mod_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9945,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9948,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9949,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9954,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9955,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9956
      start: 9896
    functionDepth: 4
    functionLinenumber: 9896
    functionLinenumberEnd: 9956
    functionName: gcd_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - mod_var
    - init_var
    - CHECK_FOR_INTERRUPTS
    - free_var
    - set_var_from_var
    - Max
    - cmp_abs
    linkageType: ''
    returnType: void
    signature: void gcd_var(const NumericVar *var1, const NumericVar *var2, NumericVar
      *result)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9987,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9990,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10000,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10001,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10002,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10004,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10005,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10006,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10007,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10008,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10009,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10030,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10039,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10301,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10311,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10313,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10317,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10321,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10323,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10340,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10341,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10342,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10347,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10351,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10358,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10359,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10360,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10365,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10369,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10375,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10377,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10378,1
    - Dst: div_mod_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10379,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10383,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10393,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10394,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10399,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10403,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10404,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10405,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10411,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10415,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10422,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10427,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10430,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10432,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10433,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10434,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10435,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10436,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10437,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 181
    argCount: 3
    argNames:
    - arg
    - result
    - rscale
    argTypes:
    - NumericVar*
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10438
      start: 9966
    functionDepth: 4
    functionLinenumber: 9966
    functionLinenumberEnd: 10438
    functionName: sqrt_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - errcode
    - cmp_var
    - zero_var
    - div_mod_var
    - int64_to_numericvar
    - alloc_var
    - memcpy
    - Assert
    - add_var
    - free_var
    - set_var_from_var
    - errmsg
    - mul_var
    - round_var
    - ereport
    - sqrt
    - init_var
    - int128_to_numericvar
    - sub_var
    - strip_var
    - Max
    - Min
    linkageType: ''
    returnType: void
    signature: void sqrt_var(const NumericVar *arg, NumericVar *result, int rscale)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10458,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10459,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10461,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10467,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10471,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10474,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10475,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10476,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10477,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10492,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10497,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10504,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10517,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10529,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10531,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10533,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10537,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10539,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10541,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10552,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10553,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10557,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10559,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10560,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 3
    argNames:
    - arg
    - result
    - rscale
    argTypes:
    - NumericVar*
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10561
      start: 10446
    functionDepth: 3
    functionLinenumber: 10446
    functionLinenumberEnd: 10561
    functionName: exp_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - mul_var
    - round_var
    - div_var_int
    - errcode
    - zero_var
    - init_var
    - ereport
    - add_var
    - fabs
    - free_var
    - set_var_from_var
    - numericvar_to_double_no_overflow
    - errmsg
    - Max
    linkageType: ''
    returnType: void
    signature: void exp_var(const NumericVar *arg, NumericVar *result, int rscale)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10584,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10585,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10595,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10596,1
    - Dst: log10
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10601,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10609,1
    - Dst: log
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10638,1
    - Dst: log10
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10639,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10639,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10649
      start: 10575
    functionDepth: 2
    functionLinenumber: 10575
    functionLinenumberEnd: 10649
    functionName: estimate_ln_dweight
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - log10
    - cmp_var
    - init_var
    - sub_var
    - fabs
    - free_var
    - log
    linkageType: ''
    returnType: int
    signature: int estimate_ln_dweight(const NumericVar *var)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10669,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10671,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10672,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10673,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10675,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10676,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10677,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10679,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10680,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10681,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10682,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10684,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10685,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10703,1
    - Dst: sqrt_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10706,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10707,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10710,1
    - Dst: sqrt_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10713,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10714,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10735,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10736,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10737,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10738,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10739,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10746,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10747,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10752,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10759,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10761,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10762,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10763,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10764,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 47
    argCount: 3
    argNames:
    - arg
    - result
    - rscale
    argTypes:
    - NumericVar*
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10765
      start: 10657
    functionDepth: 5
    functionLinenumber: 10657
    functionLinenumberEnd: 10765
    functionName: ln_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - sqrt_var
    - mul_var
    - div_var_int
    - errcode
    - cmp_var
    - init_var
    - ereport
    - sub_var
    - add_var
    - free_var
    - set_var_from_var
    - errmsg
    - div_var
    linkageType: ''
    returnType: void
    signature: void ln_var(const NumericVar *arg, NumericVar *result, int rscale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10787,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10788,1
    - Dst: estimate_ln_dweight
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10791,1
    - Dst: estimate_ln_dweight
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10792,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10801,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10802,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10803,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10804,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10811,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10814,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10817,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10818,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10821,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10823,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 3
    argNames:
    - base
    - num
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10825
      start: 10775
    functionDepth: 6
    functionLinenumber: 10775
    functionLinenumberEnd: 10825
    functionName: log_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - ln_var
    - init_var
    - estimate_ln_dweight
    - free_var
    - Max
    - Min
    - div_var
    linkageType: ''
    returnType: void
    signature: void log_var(const NumericVar *base, const NumericVar *num, NumericVar
      *result)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: numericvar_to_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10854,1
    - Dst: power_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10859,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10869,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10871,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10876,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10877,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10878,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10891,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10892,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10893,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10903,1
    - Dst: estimate_ln_dweight
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10928,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10937,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10939,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10941,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10943,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10946,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10949,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10950,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10951,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10952,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10961,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10962,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10963,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10964,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10968,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10972,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10976,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10978,1
    - Dst: exp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10980,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10985,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10986,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10987,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 59
    argCount: 3
    argNames:
    - base
    - exp
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10988
      start: 10835
    functionDepth: 6
    functionLinenumber: 10835
    functionLinenumberEnd: 10988
    functionName: power_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - numericvar_to_int64
    - mul_var
    - cmp_var
    - errcode
    - ln_var
    - zero_var
    - init_var
    - ereport
    - estimate_ln_dweight
    - fabs
    - exp_var
    - free_var
    - set_var_from_var
    - Max
    - errmsg
    - numericvar_to_double_no_overflow
    - power_var_int
    - Min
    linkageType: ''
    returnType: void
    signature: void power_var(const NumericVar *base, const NumericVar *exp, NumericVar
      *result)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: log10
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11036,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11043,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11044,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11045,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11048,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11059,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11060,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11061,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11062,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11075,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11079,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11080,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11083,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11086,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11096,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11097,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11098,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11099,1
    - Dst: log
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11125,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11125,1
    - Dst: pg_abs_s32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11131,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11133,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11134,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11137,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11139,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11149,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11150,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11152,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11158,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11160,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11162,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11178,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11180,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11181,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11187,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11191,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11193,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 80
    argCount: 4
    argNames:
    - base
    - exp
    - exp_dscale
    - result
    argTypes:
    - NumericVar*
    - int
    - int
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11194
      start: 10997
    functionDepth: 3
    functionLinenumber: 10997
    functionLinenumberEnd: 11194
    functionName: power_var_int
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - round_var
    - log10
    - mul_var
    - errcode
    - zero_var
    - init_var
    - ereport
    - fabs
    - free_var
    - pg_abs_s32
    - set_var_from_var
    - Max
    - errmsg
    - Min
    - div_var
    - log
    linkageType: ''
    returnType: void
    signature: "void power_var_int(const NumericVar *base, int exp, int exp_dscale,\n\t\t\t
      \ NumericVar *result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - exp
    - result
    argTypes:
    - int
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11222
      start: 11202
    functionDepth: 1
    functionLinenumber: 11202
    functionLinenumberEnd: 11222
    functionName: power_ten_int
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - set_var_from_var
    linkageType: ''
    returnType: void
    signature: void power_ten_int(int exp, NumericVar *result)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11240,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11243,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11247,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11248,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11249,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11254,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11256,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11317,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11331,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11333,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11353,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11367,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11374,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11379,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11383,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11386,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11388,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 64
    argCount: 4
    argNames:
    - state
    - rmin
    - rmax
    - result
    argTypes:
    - pg_prng_state*
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11389
      start: 11227
    functionDepth: 3
    functionLinenumber: 11227
    functionLinenumberEnd: 11389
    functionName: random_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - alloc_var
    - errcode
    - cmp_var
    - init_var
    - ereport
    - sub_var
    - pg_prng_uint64_range
    - add_var
    - free_var
    - strip_var
    - set_var_from_var
    - Max
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void random_var(pg_prng_state *state, const NumericVar *rmin,\n\t\t
      \  const NumericVar *rmax, NumericVar *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmp_abs_common
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - var1
    - var2
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11415
      start: 11410
    functionDepth: 1
    functionLinenumber: 11410
    functionLinenumberEnd: 11415
    functionName: cmp_abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 8
    functionsReached:
    - cmp_abs_common
    linkageType: ''
    returnType: int
    signature: int cmp_abs(const NumericVar *var1, const NumericVar *var2)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 29
    argCount: 6
    argNames:
    - var1digits
    - var1ndigits
    - var1weight
    - var2digits
    - var2ndigits
    - var2weight
    argTypes:
    - NumericDigit*
    - int
    - int
    - NumericDigit*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11479
      start: 11424
    functionDepth: 0
    functionLinenumber: 11424
    functionLinenumberEnd: 11479
    functionName: cmp_abs_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int cmp_abs_common(const NumericDigit *var1digits, int var1ndigits,
      int var1weight,\n\t\t\t   const NumericDigit *var2digits, int var2ndigits, int
      var2weight)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11510,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11512,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11517,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11550,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11552,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11560,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11561
      start: 11488
    functionDepth: 1
    functionLinenumber: 11488
    functionLinenumberEnd: 11561
    functionName: add_abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    functionsReached:
    - Assert
    - strip_var
    - Max
    - digitbuf_alloc
    - digitbuf_free
    linkageType: ''
    returnType: void
    signature: void add_abs(const NumericVar *var1, const NumericVar *var2, NumericVar
      *result)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11597,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11602,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11635,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11637,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11645,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11646
      start: 11573
    functionDepth: 1
    functionLinenumber: 11573
    functionLinenumberEnd: 11646
    functionName: sub_abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - Assert
    - strip_var
    - Max
    - digitbuf_alloc
    - digitbuf_free
    linkageType: ''
    returnType: void
    signature: void sub_abs(const NumericVar *var1, const NumericVar *var2, NumericVar
      *result)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11744,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11745,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 2
    argNames:
    - var
    - rscale
    argTypes:
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11752
      start: 11655
    functionDepth: 1
    functionLinenumber: 11655
    functionLinenumberEnd: 11752
    functionName: round_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 12
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void round_var(NumericVar *var, int rscale)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - var
    - rscale
    argTypes:
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11816
      start: 11761
    functionDepth: 0
    functionLinenumber: 11761
    functionLinenumberEnd: 11816
    functionName: trunc_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void trunc_var(NumericVar *var, int rscale)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11850
      start: 11823
    functionDepth: 0
    functionLinenumber: 11823
    functionLinenumberEnd: 11850
    functionName: strip_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void strip_var(NumericVar *var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - accum
    argTypes:
    - NumericSumAccum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11875
      start: 11864
    functionDepth: 0
    functionLinenumber: 11864
    functionLinenumberEnd: 11875
    functionName: accum_sum_reset
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void accum_sum_reset(NumericSumAccum *accum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: accum_sum_carry
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11897,1
    - Dst: accum_sum_rescale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11903,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - accum
    - val
    argTypes:
    - NumericSumAccum*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11923
      start: 11880
    functionDepth: 1
    functionLinenumber: 11880
    functionLinenumberEnd: 11923
    functionName: accum_sum_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - accum_sum_rescale
    - accum_sum_carry
    linkageType: ''
    returnType: void
    signature: void accum_sum_add(NumericSumAccum *accum, const NumericVar *val)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11951,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - accum
    argTypes:
    - NumericSumAccum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11993
      start: 11928
    functionDepth: 1
    functionLinenumber: 11928
    functionLinenumberEnd: 11993
    functionName: accum_sum_carry
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void accum_sum_carry(NumericSumAccum *accum)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12055,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12056,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12060,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12062,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12064,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12066,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12075,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - accum
    - val
    argTypes:
    - NumericSumAccum*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12081
      start: 12001
    functionDepth: 1
    functionLinenumber: 12001
    functionLinenumberEnd: 12081
    functionName: accum_sum_rescale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - pfree
    - palloc0
    - memcpy
    - Assert
    linkageType: ''
    returnType: void
    signature: void accum_sum_rescale(NumericSumAccum *accum, const NumericVar *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12099,1
    - Dst: accum_sum_carry
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12104,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12107,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12108,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12116,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12121,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12124,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12129,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - accum
    - result
    argTypes:
    - NumericSumAccum*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12133
      start: 12090
    functionDepth: 2
    functionLinenumber: 12090
    functionLinenumberEnd: 12133
    functionName: accum_sum_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - accum_sum_carry
    - Assert
    - init_var
    - add_var
    - strip_var
    - set_var_from_var
    - digitbuf_alloc
    linkageType: ''
    returnType: void
    signature: void accum_sum_final(NumericSumAccum *accum, NumericVar *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12144,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12145,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12147,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - NumericSumAccum*
    - NumericSumAccum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12153
      start: 12141
    functionDepth: 0
    functionLinenumber: 12141
    functionLinenumberEnd: 12153
    functionName: accum_sum_copy
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void accum_sum_copy(NumericSumAccum *dst, NumericSumAccum *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12163,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12165,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12166,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - accum
    - accum2
    argTypes:
    - NumericSumAccum*
    - NumericSumAccum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12169
      start: 12158
    functionDepth: 3
    functionLinenumber: 12158
    functionLinenumberEnd: 12169
    functionName: accum_sum_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - free_var
    - init_var
    - accum_sum_add
    - accum_sum_final
    linkageType: ''
    returnType: void
    signature: void accum_sum_combine(NumericSumAccum *accum, NumericSumAccum *accum2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:38,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:39,1
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 42
    functionName: compareWordEntryPos
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - WEP_GETPOS
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int compareWordEntryPos(const void *a, const void *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:60,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:66,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:66,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:71,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:74,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:74,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:75,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:75,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - a
    - l
    argTypes:
    - WordEntryPos*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 80
    functionName: uniquePos
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - qsort
    - WEP_GETWEIGHT
    - WEP_SETWEIGHT
    - WEP_GETPOS
    linkageType: ''
    returnType: int
    signature: int uniquePos(WordEntryPos *a, int l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tsCompareString
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - va
    - vb
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 96
    functionName: compareentry
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - tsCompareString
    linkageType: ''
    returnType: int
    signature: int compareentry(const void *va, const void *vb, void *arg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:109,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:112,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:120,1
    - Dst: uniquePos
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:127,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:128,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:133,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:143,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:144,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:147,1
    - Dst: uniquePos
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:164,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:165,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 4
    argNames:
    - a
    - l
    - buf
    - outbuflen
    argTypes:
    - WordEntryIN*
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 171
    functionName: uniqueentry
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - pfree
    - SHORTALIGN
    - repalloc
    - strncmp
    - qsort_arg
    - uniquePos
    linkageType: ''
    returnType: int
    signature: int uniqueentry(WordEntryIN *a, int l, char *buf, int *outbuflen)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:177,1
    - Dst: init_tsvector_parser
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:202,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:205,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:206,1
    - Dst: gettoken_tsvector
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:208,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:211,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:213,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:218,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:219,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:220,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:230,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:237,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:242,1
    - Dst: close_tsvector_parser
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:260,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:263,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:264,1
    - Dst: uniqueentry
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:267,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:272,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:273,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:274,1
    - Dst: CALCDATASIZE
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:276,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:277,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:278,1
    - Dst: ARRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:280,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:281,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:285,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:292,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:295,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:300,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:308,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:310,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 174
    functionDepth: 3
    functionLinenumber: 174
    functionLinenumberEnd: 311
    functionName: tsvectorin
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - errcode
    - init_tsvector_parser
    - palloc_array
    - repalloc
    - SET_VARSIZE
    - STRPTR
    - gettoken_tsvector
    - elog
    - memcpy
    - pfree
    - Assert
    - SHORTALIGN
    - errmsg
    - ARRPTR
    - uniqueentry
    - PG_GETARG_CSTRING
    - CALCDATASIZE
    - PG_RETURN_TSVECTOR
    - close_tsvector_parser
    - palloc0
    - PG_RETURN_NULL
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum tsvectorin(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TSVECTOR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:316,1
    - Dst: ARRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:321,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:329,1
    - Dst: POSDATALEN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:331,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:334,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:337,1
    - Dst: pg_mblen_range
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:344,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:346,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:348,1
    - Dst: POSDATALEN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:356,1
    - Dst: POSDATAPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:361,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:364,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:364,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:365,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:391,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:392,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 393
    functionName: tsvectorout
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - POSDATALEN
    - PG_GETARG_TSVECTOR
    - pg_mblen_range
    - POSDATAPTR
    - WEP_GETPOS
    - PG_FREE_IF_COPY
    - PG_RETURN_CSTRING
    - WEP_GETWEIGHT
    - pg_database_encoding_max_length
    - STRPTR
    - palloc
    - t_iseq
    - ARRPTR
    - sprintf
    linkageType: ''
    returnType: Datum
    signature: Datum tsvectorout(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TSVECTOR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:410,1
    - Dst: ARRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:414,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:416,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:418,1
    - Dst: pq_sendtext
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:427,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:427,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:428,1
    - Dst: POSDATALEN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:430,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:431,1
    - Dst: POSDATAPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:435,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:438,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:443,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 407
    functionDepth: 4
    functionLinenumber: 407
    functionLinenumberEnd: 444
    functionName: tsvectorsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - POSDATALEN
    - PG_GETARG_TSVECTOR
    - pq_sendtext
    - pq_endtypsend
    - POSDATAPTR
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - STRPTR
    - pq_sendbyte
    - ARRPTR
    - pq_sendint16
    linkageType: ''
    returnType: Datum
    signature: Datum tsvectorsend(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:449,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:460,1
    - Dst: nentries < 0 || nentries >
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:461,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:462,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:467,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:477,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:478,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:482,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:484,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:487,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:490,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:497,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:501,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:508,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:508,1
    - Dst: compareentry
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:512,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:514,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:528,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:530,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:531,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:534,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:534,1
    - Dst: POSDATAPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:536,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:539,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:540,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:540,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:541,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:548,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:551,1
    - Dst: ARRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:551,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:552,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:554,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 555
    functionName: tsvectorrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - elog
    - pq_getmsgstring
    - memcpy
    - nentries < 0 || nentries >
    - POSDATAPTR
    - WEP_GETPOS
    - pq_getmsgint
    - palloc0
    - ARRPTR
    - SHORTALIGN
    - repalloc
    - strlen
    - qsort_arg
    - STRPTR
    - SET_VARSIZE
    - PG_GETARG_POINTER
    - compareentry
    - PG_RETURN_TSVECTOR
    linkageType: ''
    returnType: Datum
    signature: Datum tsvectorrecv(PG_FUNCTION_ARGS)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: QTNEq
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:58,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:61,1
    - Dst: QTNCopy
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:64,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:91,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:95,1
    - Dst: QTNodeCompare
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:100,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:128,1
    - Dst: QTNCopy
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:136,1
    - Dst: QTNSort
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:158,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:163,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:168,1
    - Dst: QTNEq
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:172,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:174,1
    - Dst: QTNCopy
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:177,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 70
    argCount: 4
    argNames:
    - node
    - ex
    - subs
    - isfind
    argTypes:
    - QTNode*
    - QTNode*
    - QTNode*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 189
    functionName: findeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c
    functionUses: 0
    functionsReached:
    - QTNSort
    - Assert
    - pfree
    - QTNFree
    - palloc0
    - QTNCopy
    - QTNodeCompare
    - QTNEq
    linkageType: ''
    returnType: QTNode
    signature: 'QTNode *

      findeq(QTNode *node, QTNode *ex, QTNode *subs, bool *isfind)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:209,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:212,1
    - Dst: findeq
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:215,1
    - Dst: dofindsubquery
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:230,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:243,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:250,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - root
    - ex
    - subs
    - isfind
    argTypes:
    - QTNode*
    - QTNode*
    - QTNode*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 256
    functionName: dofindsubquery
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c
    functionUses: 1
    functionsReached:
    - dofindsubquery
    - pfree
    - QTNFree
    - check_stack_depth
    - CHECK_FOR_INTERRUPTS
    - findeq
    linkageType: ''
    returnType: QTNode
    signature: 'QTNode *

      dofindsubquery(QTNode *root, QTNode *ex, QTNode *subs, bool *isfind)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dofindsubquery
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - root
    - ex
    - subs
    - isfind
    argTypes:
    - QTNode*
    - QTNode*
    - QTNode*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 277
    functionName: findsubquery
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c
    functionUses: 2
    functionsReached:
    - dofindsubquery
    linkageType: ''
    returnType: QTNode
    signature: 'QTNode *

      findsubquery(QTNode *root, QTNode *ex, QTNode *subs, bool *isfind)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TSQUERY_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:282,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:283,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:295,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:296,1
    - Dst: QT2QTN
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:299,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:299,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:299,1
    - Dst: QTNTernary
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:300,1
    - Dst: QTNSort
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:301,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:303,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:305,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:307,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:308,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:310,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:311,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:313,1
    - Dst: SPI_gettypeid
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:317,1
    - Dst: SPI_gettypeid
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:318,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:319,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:320,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:321,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:329,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:335,1
    - Dst: DatumGetTSQuery
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:339,1
    - Dst: DatumGetTSQuery
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:340,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:346,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:347,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:348,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:349,1
    - Dst: QT2QTN
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:353,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:353,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:353,1
    - Dst: QTNTernary
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:355,1
    - Dst: QTNSort
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:356,1
    - Dst: QT2QTN
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:359,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:359,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:359,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:361,1
    - Dst: findsubquery
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:362,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:363,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:365,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:366,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:367,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:368,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:369,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:370,1
    - Dst: QTNClearFlags
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:375,1
    - Dst: QTNTernary
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:376,1
    - Dst: QTNSort
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:377,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:382,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:383,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:386,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:387,1
    - Dst: SPI_freeplan
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:388,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:389,1
    - Dst: QTNBinary
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:393,1
    - Dst: QTN2QT
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:394,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:395,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:396,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:400,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:404,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:405,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:406,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 279
    functionDepth: 5
    functionLinenumber: 279
    functionLinenumberEnd: 407
    functionName: tsquery_rewrite_query
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c
    functionUses: 0
    functionsReached:
    - DatumGetTSQuery
    - errcode
    - PG_FREE_IF_COPY
    - QTNTernary
    - text_to_cstring
    - SET_VARSIZE
    - PG_RETURN_POINTER
    - elog
    - SPI_freeplan
    - findsubquery
    - pfree
    - QT2QTN
    - SPI_cursor_close
    - QTNBinary
    - errmsg
    - SPI_gettypeid
    - QTNClearFlags
    - GETOPERAND
    - QTNSort
    - SPI_cursor_fetch
    - ereport
    - SPI_prepare
    - DatumGetPointer
    - SPI_cursor_open
    - SPI_freetuptable
    - SPI_getbinval
    - PG_GETARG_TSQUERY_COPY
    - SPI_finish
    - QTN2QT
    - GETQUERY
    - QTNFree
    - MemoryContextSwitchTo
    - SPI_connect
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum tsquery_rewrite_query(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TSQUERY_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:412,1
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:413,1
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:414,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:422,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:423,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:424,1
    - Dst: QT2QTN
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:427,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:427,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:427,1
    - Dst: QTNTernary
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:428,1
    - Dst: QTNSort
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:429,1
    - Dst: QT2QTN
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:431,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:431,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:431,1
    - Dst: QTNTernary
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:432,1
    - Dst: QTNSort
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:433,1
    - Dst: QT2QTN
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:436,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:436,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:436,1
    - Dst: findsubquery
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:438,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:440,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:441,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:445,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:447,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:448,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:449,1
    - Dst: QTNBinary
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:453,1
    - Dst: QTN2QT
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:454,1
    - Dst: QTNFree
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:455,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:458,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:459,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:460,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c:461,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 409
    functionDepth: 4
    functionLinenumber: 409
    functionLinenumberEnd: 462
    functionName: tsquery_rewrite
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_rewrite.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TSQUERY_COPY
    - QTNSort
    - findsubquery
    - QT2QTN
    - PG_FREE_IF_COPY
    - PG_GETARG_TSQUERY
    - GETQUERY
    - QTNFree
    - QTN2QT
    - QTNBinary
    - QTNTernary
    - SET_VARSIZE
    - GETOPERAND
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum tsquery_rewrite(PG_FUNCTION_ARGS)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:76,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:77,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:78,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:92,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:103,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:104,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:105,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:112,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:124,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:135,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:143,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:144,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:152,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:158,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:159,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:163,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:167,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:188,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:190,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:191,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:207,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:214,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:216,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:218,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:225,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:226,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:227,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:229,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:232,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:241,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:247,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:259,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:262,1
    - Dst: InputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:267,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:283,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:284,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:285,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:286,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:290,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:296,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:297,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:301,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:308,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:309,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:311,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:312,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:313,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:314,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:315,1
    - Dst: PG_RETURN_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:317,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:321,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:322,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 111
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 73
    functionDepth: 6
    functionLinenumber: 73
    functionLinenumberEnd: 323
    functionName: record_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - ReleaseTupleDesc
    - errcode
    - heap_form_tuple
    - check_stack_depth
    - palloc_array
    - InputFunctionCallSafe
    - palloc
    - resetStringInfo
    - memcpy
    - heap_freetuple
    - pfree
    - errmsg
    - appendStringInfoChar
    - PG_RETURN_HEAPTUPLEHEADER
    - errsave
    - PG_GETARG_CSTRING
    - initStringInfo
    - isspace
    - MemSet
    - TupleDescAttr
    - PG_GETARG_INT32
    - fmgr_info_cxt
    - getTypeInputInfo
    - MemoryContextAlloc
    - lookup_rowtype_tupdesc
    - PG_GETARG_OID
    - errdetail
    - PG_RETURN_NULL
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum record_in(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:331,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:344,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:347,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:348,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:349,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:353,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:354,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:367,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:378,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:386,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:387,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:390,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:393,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:395,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:399,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:412,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:426,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:429,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:435,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:445,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:454,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:460,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:461,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:464,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:467,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:469,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:470,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:471,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:473,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 328
    functionDepth: 6
    functionLinenumber: 328
    functionLinenumberEnd: 474
    functionName: record_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - check_stack_depth
    - palloc_array
    - pfree
    - HeapTupleHeaderGetTypMod
    - appendStringInfoChar
    - heap_deform_tuple
    - PG_GETARG_HEAPTUPLEHEADER
    - initStringInfo
    - isspace
    - HeapTupleHeaderGetTypeId
    - PG_RETURN_CSTRING
    - OutputFunctionCall
    - MemSet
    - TupleDescAttr
    - fmgr_info_cxt
    - MemoryContextAlloc
    - lookup_rowtype_tupdesc
    - ItemPointerSetInvalid
    - getTypeOutputInfo
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: Datum
    signature: Datum record_out(PG_FUNCTION_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:482,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:483,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:484,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:496,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:507,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:508,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:509,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:511,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:523,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:534,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:542,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:543,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:546,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:552,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:556,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:557,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:558,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:564,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:597,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:598,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:599,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:601,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:604,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:609,1
    - Dst: itemlen < -1 || itemlen >
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:610,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:611,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:612,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:613,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:632,1
    - Dst: getTypeBinaryInputInfo
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:641,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:644,1
    - Dst: ReceiveFunctionCall
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:649,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:658,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:659,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:660,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:665,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:672,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:673,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:675,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:676,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:677,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:678,1
    - Dst: PG_RETURN_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:680,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 479
    functionDepth: 6
    functionLinenumber: 479
    functionLinenumberEnd: 681
    functionName: record_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - ReleaseTupleDesc
    - errcode
    - heap_form_tuple
    - check_stack_depth
    - palloc_array
    - memcpy
    - heap_freetuple
    - pfree
    - ReceiveFunctionCall
    - errmsg
    - PG_GETARG_POINTER
    - PG_RETURN_HEAPTUPLEHEADER
    - getTypeBinaryInputInfo
    - ereport
    - MemSet
    - TupleDescAttr
    - PG_GETARG_INT32
    - fmgr_info_cxt
    - initReadOnlyStringInfo
    - MemoryContextAlloc
    - itemlen < -1 || itemlen >
    - lookup_rowtype_tupdesc
    - format_type_extended
    - PG_GETARG_OID
    - palloc
    - pq_getmsgint
    linkageType: ''
    returnType: Datum
    signature: Datum record_recv(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:689,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:702,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:705,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:706,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:707,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:711,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:712,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:725,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:736,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:744,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:745,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:748,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:751,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:757,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:760,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:764,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:774,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:779,1
    - Dst: getTypeBinaryOutputInfo
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:788,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:791,1
    - Dst: SendFunctionCall
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:797,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:798,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:798,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:799,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:799,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:800,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:803,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:804,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:805,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:807,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:807,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 686
    functionDepth: 6
    functionLinenumber: 686
    functionLinenumberEnd: 808
    functionName: record_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - pq_sendint32
    - check_stack_depth
    - palloc_array
    - VARDATA
    - pfree
    - HeapTupleHeaderGetTypMod
    - SendFunctionCall
    - VARSIZE
    - heap_deform_tuple
    - PG_GETARG_HEAPTUPLEHEADER
    - HeapTupleHeaderGetTypeId
    - PG_RETURN_BYTEA_P
    - MemSet
    - TupleDescAttr
    - fmgr_info_cxt
    - getTypeBinaryOutputInfo
    - pq_endtypsend
    - MemoryContextAlloc
    - pq_begintypsend
    - lookup_rowtype_tupdesc
    - pq_sendbytes
    - ItemPointerSetInvalid
    linkageType: ''
    returnType: Datum
    signature: Datum record_send(PG_FUNCTION_ARGS)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:825,1
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:826,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:848,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:851,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:852,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:853,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:855,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:856,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:857,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:861,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:862,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:865,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:866,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:874,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:880,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:896,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:904,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:905,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:906,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:907,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:908,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:909,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:927,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:932,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:940,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:941,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:947,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:948,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:949,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:950,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:951,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:969,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:971,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:972,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:973,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:974,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:975,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:984,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1001,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1007,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1007,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1010,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1038,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1039,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1040,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1043,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1044,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1045,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1046,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1047,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1048,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1051,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1052,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 109
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 822
    functionDepth: 6
    functionLinenumber: 822
    functionLinenumberEnd: 1055
    functionName: record_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - errcode
    - PG_FREE_IF_COPY
    - check_stack_depth
    - Assert
    - HeapTupleHeaderGetTypMod
    - pfree
    - errmsg
    - OidIsValid
    - lookup_type_cache
    - heap_deform_tuple
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - PG_GETARG_HEAPTUPLEHEADER
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemSet
    - TupleDescAttr
    - format_type_be
    - MemoryContextAlloc
    - LOCAL_FCINFO
    - lookup_rowtype_tupdesc
    - DatumGetInt32
    - Max
    - palloc
    - ItemPointerSetInvalid
    linkageType: ''
    returnType: int
    signature: int record_cmp(FunctionCallInfo fcinfo)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1069,1
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1070,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1092,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1095,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1096,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1097,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1099,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1100,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1101,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1105,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1106,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1109,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1110,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1118,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1124,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1140,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1148,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1149,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1150,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1151,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1152,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1153,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1163,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1173,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1178,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1186,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1187,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1193,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1194,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1195,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1196,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1197,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1215,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1217,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1218,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1219,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1220,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1221,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1237,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1243,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1263,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1264,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1265,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1268,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1269,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1270,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1271,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1272,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1273,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1276,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1277,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1279,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 100
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1066
    functionDepth: 6
    functionLinenumber: 1066
    functionLinenumberEnd: 1280
    functionName: record_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - errcode
    - PG_FREE_IF_COPY
    - check_stack_depth
    - PG_RETURN_BOOL
    - DatumGetBool
    - pfree
    - HeapTupleHeaderGetTypMod
    - errmsg
    - OidIsValid
    - lookup_type_cache
    - heap_deform_tuple
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - PG_GETARG_HEAPTUPLEHEADER
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemSet
    - TupleDescAttr
    - format_type_be
    - MemoryContextAlloc
    - LOCAL_FCINFO
    - lookup_rowtype_tupdesc
    - Max
    - palloc
    - ItemPointerSetInvalid
    linkageType: ''
    returnType: Datum
    signature: Datum record_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1285,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1285,1
    - Dst: record_eq
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1282
    functionDepth: 7
    functionLinenumber: 1282
    functionLinenumberEnd: 1286
    functionName: record_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_eq
    - PG_RETURN_BOOL
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum record_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1291,1
    - Dst: record_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1288
    functionDepth: 7
    functionLinenumber: 1288
    functionLinenumberEnd: 1292
    functionName: record_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_cmp
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum record_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1297,1
    - Dst: record_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1294
    functionDepth: 7
    functionLinenumber: 1294
    functionLinenumberEnd: 1298
    functionName: record_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_cmp
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum record_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1303,1
    - Dst: record_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1300
    functionDepth: 7
    functionLinenumber: 1300
    functionLinenumberEnd: 1304
    functionName: record_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_cmp
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum record_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1309,1
    - Dst: record_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1306
    functionDepth: 7
    functionLinenumber: 1306
    functionLinenumberEnd: 1310
    functionName: record_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_cmp
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum record_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1315,1
    - Dst: record_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1312
    functionDepth: 7
    functionLinenumber: 1312
    functionLinenumberEnd: 1316
    functionName: btrecordcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_cmp
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btrecordcmp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: record_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1321,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1322,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1322,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1324,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1318
    functionDepth: 7
    functionLinenumber: 1318
    functionLinenumberEnd: 1325
    functionName: record_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - record_cmp
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum record_larger(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: record_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1330,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1331,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1331,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1333,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1327
    functionDepth: 7
    functionLinenumber: 1327
    functionLinenumberEnd: 1334
    functionName: record_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - record_cmp
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum record_smaller(PG_FUNCTION_ARGS)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1351,1
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1352,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1375,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1376,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1377,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1379,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1380,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1381,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1385,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1386,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1389,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1390,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1398,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1404,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1420,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1428,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1429,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1430,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1431,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1432,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1433,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1449,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1454,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1462,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1463,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1471,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1472,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1473,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1480,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1510,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1510,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1511,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1521,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1522,1
    - Dst: PG_DETOAST_DATUM_PACKED
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1523,1
    - Dst: PG_DETOAST_DATUM_PACKED
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1524,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1526,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1526,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1527,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1528,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1532,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1533,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1534,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1535,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1538,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1566,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1567,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1568,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1571,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1572,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1573,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1574,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1575,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1576,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1579,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1580,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 112
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1348
    functionDepth: 6
    functionLinenumber: 1348
    functionLinenumberEnd: 1583
    functionName: record_image_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - errcode
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - elog
    - Assert
    - HeapTupleHeaderGetTypMod
    - pfree
    - errmsg
    - PG_DETOAST_DATUM_PACKED
    - memcmp
    - heap_deform_tuple
    - PG_GETARG_HEAPTUPLEHEADER
    - ereport
    - HeapTupleHeaderGetTypeId
    - toast_raw_datum_size
    - MemSet
    - TupleDescAttr
    - format_type_be
    - MemoryContextAlloc
    - lookup_rowtype_tupdesc
    - Max
    - palloc
    - ItemPointerSetInvalid
    - Min
    - DatumGetPointer
    linkageType: ''
    returnType: int
    signature: int record_image_cmp(FunctionCallInfo fcinfo)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1597,1
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1598,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1621,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1622,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1623,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1625,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1626,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1627,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1631,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1632,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1635,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1636,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1644,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1650,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1666,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1674,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1675,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1676,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1677,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1678,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1679,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1695,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1700,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1708,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1709,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1715,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1717,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1718,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1719,1
    - Dst: datum_image_eq
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1734,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1751,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1752,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1753,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1756,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1757,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1758,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1759,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1760,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1761,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1764,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1765,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1767,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 81
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1594
    functionDepth: 6
    functionLinenumber: 1594
    functionLinenumberEnd: 1768
    functionName: record_image_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - errcode
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - pfree
    - HeapTupleHeaderGetTypMod
    - errmsg
    - heap_deform_tuple
    - PG_GETARG_HEAPTUPLEHEADER
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemSet
    - TupleDescAttr
    - format_type_be
    - MemoryContextAlloc
    - lookup_rowtype_tupdesc
    - Max
    - datum_image_eq
    - palloc
    - ItemPointerSetInvalid
    linkageType: ''
    returnType: Datum
    signature: Datum record_image_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1773,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1773,1
    - Dst: record_image_eq
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1774
      start: 1770
    functionDepth: 7
    functionLinenumber: 1770
    functionLinenumberEnd: 1774
    functionName: record_image_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_image_eq
    - PG_RETURN_BOOL
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum record_image_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1779,1
    - Dst: record_image_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1776
    functionDepth: 7
    functionLinenumber: 1776
    functionLinenumberEnd: 1780
    functionName: record_image_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_image_cmp
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum record_image_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1785,1
    - Dst: record_image_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1786
      start: 1782
    functionDepth: 7
    functionLinenumber: 1782
    functionLinenumberEnd: 1786
    functionName: record_image_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_image_cmp
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum record_image_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1791,1
    - Dst: record_image_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1792
      start: 1788
    functionDepth: 7
    functionLinenumber: 1788
    functionLinenumberEnd: 1792
    functionName: record_image_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_image_cmp
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum record_image_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1797,1
    - Dst: record_image_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1794
    functionDepth: 7
    functionLinenumber: 1794
    functionLinenumberEnd: 1798
    functionName: record_image_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_image_cmp
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum record_image_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1803,1
    - Dst: record_image_cmp
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1804
      start: 1800
    functionDepth: 7
    functionLinenumber: 1800
    functionLinenumberEnd: 1804
    functionName: btrecordimagecmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - record_image_cmp
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum btrecordimagecmp(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1814,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1825,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1828,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1829,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1830,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1834,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1835,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1848,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1860,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1866,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1867,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1868,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1876,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1888,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1890,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1891,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1892,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1893,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1894,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1905,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1907,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1911,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1914,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1921,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1922,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1923,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1926,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1928,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1929
      start: 1811
    functionDepth: 6
    functionLinenumber: 1811
    functionLinenumberEnd: 1929
    functionName: hash_record
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - errcode
    - PG_FREE_IF_COPY
    - check_stack_depth
    - palloc_array
    - DatumGetUInt32
    - Assert
    - HeapTupleHeaderGetTypMod
    - pfree
    - errmsg
    - OidIsValid
    - PG_RETURN_UINT32
    - lookup_type_cache
    - heap_deform_tuple
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - PG_GETARG_HEAPTUPLEHEADER
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemSet
    - TupleDescAttr
    - format_type_be
    - MemoryContextAlloc
    - LOCAL_FCINFO
    - lookup_rowtype_tupdesc
    - ItemPointerSetInvalid
    linkageType: ''
    returnType: Datum
    signature: Datum hash_record(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1934,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1935,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1946,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1949,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1950,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1951,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1955,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1956,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1969,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1981,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1987,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1988,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1989,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1997,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2009,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2011,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2012,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2013,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2014,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2015,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2026,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2028,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2032,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2034,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2034,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2037,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2044,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2045,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2046,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2049,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:2051,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 1931
    functionDepth: 6
    functionLinenumber: 1931
    functionLinenumberEnd: 2052
    functionName: hash_record_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - errcode
    - PG_FREE_IF_COPY
    - check_stack_depth
    - palloc_array
    - PG_RETURN_UINT64
    - Assert
    - HeapTupleHeaderGetTypMod
    - pfree
    - PG_GETARG_INT64
    - errmsg
    - OidIsValid
    - lookup_type_cache
    - heap_deform_tuple
    - InitFunctionCallInfoData
    - FunctionCallInvoke
    - PG_GETARG_HEAPTUPLEHEADER
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemSet
    - TupleDescAttr
    - Int64GetDatum
    - format_type_be
    - MemoryContextAlloc
    - LOCAL_FCINFO
    - lookup_rowtype_tupdesc
    - DatumGetUInt64
    - ItemPointerSetInvalid
    linkageType: ''
    returnType: Datum
    signature: Datum hash_record_extended(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:64,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:70,1
    - Dst: EOH_init_header
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:72,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:76,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:76,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:78,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:80,1
    - Dst: copy_byval_expanded_array
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:104,1
    - Dst: EOHPGetRWDatum
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:106,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:130,1
    - Dst: DatumGetArrayTypePCopy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:131,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:132,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:134,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:136,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:137,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:140,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:151,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:174,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:175,1
    - Dst: EOHPGetRWDatum
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:178,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 47
    argCount: 3
    argNames:
    - arraydatum
    - parentcontext
    - metacache
    argTypes:
    - Datum
    - MemoryContext
    - ArrayMetaState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 179
    functionName: expand_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 2
    functionsReached:
    - VARATT_IS_EXTERNAL_EXPANDED
    - get_typlenbyvalalign
    - MemoryContextAlloc
    - Assert
    - ARR_LBOUND
    - MemoryContextSwitchTo
    - ARR_ELEMTYPE
    - EOH_init_header
    - DatumGetEOHP
    - DatumGetArrayTypePCopy
    - ARR_NDIM
    - ARR_DATA_PTR
    - AllocSetContextCreate
    - ARR_SIZE
    - copy_byval_expanded_array
    - EOHPGetRWDatum
    - ARR_DIMS
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: "Datum expand_array(Datum arraydatum, MemoryContext parentcontext,\n\t\t\t
      ArrayMetaState *metacache)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:195,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:198,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:199,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:208,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:210,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:213,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 2
    argNames:
    - eah
    - oldeah
    argTypes:
    - ExpandedArrayHeader*
    - ExpandedArrayHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 227
    functionName: copy_byval_expanded_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 1
    functionsReached:
    - memcpy
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: "void copy_byval_expanded_array(ExpandedArrayHeader *eah,\n\t\t\t\t\t\t
      \ ExpandedArrayHeader *oldeah)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:244,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:261,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:261,1
    - Dst: typalign_to_alignby
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:265,1
    - Dst: att_addlength_datum
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:270,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:271,1
    - Dst: AllocSizeIsValid
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:273,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:276,1
    - Dst: ARR_OVERHEAD_WITHNULLS
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:281,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:283,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - eohptr
    argTypes:
    - ExpandedObjectHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 289
    functionName: EA_get_flat_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ARR_OVERHEAD_WITHNULLS
    - ARR_OVERHEAD_NONULLS
    - ereport
    - AllocSizeIsValid
    - typalign_to_alignby
    - att_nominal_alignby
    - att_addlength_datum
    - errmsg
    - ARR_SIZE
    - ArrayGetNItems
    linkageType: ''
    returnType: Size
    signature: Size EA_get_flat_size(ExpandedObjectHeader *eohptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:304,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:309,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:309,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:315,1
    - Dst: ARR_OVERHEAD_WITHNULLS
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:322,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:327,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:329,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:333,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:333,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:334,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:334,1
    - Dst: CopyArrayEls
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - eohptr
    - result
    - allocated_size
    argTypes:
    - ExpandedObjectHeader*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 340
    functionName: EA_flatten_into
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ARR_OVERHEAD_WITHNULLS
    - Assert
    - ARR_LBOUND
    - CopyArrayEls
    - memset
    - SET_VARSIZE
    - ARR_SIZE
    - ARR_DIMS
    linkageType: ''
    returnType: void
    signature: "void EA_flatten_into(ExpandedObjectHeader *eohptr,\n\t\t\t\tvoid *result,
      Size allocated_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:357,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:357,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:359,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:361,1
    - Dst: expand_array
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:366,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 353
    functionDepth: 4
    functionLinenumber: 353
    functionLinenumberEnd: 368
    functionName: DatumGetExpandedArray
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 1
    functionsReached:
    - Assert
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - expand_array
    - DatumGetEOHP
    - DatumGetPointer
    linkageType: ''
    returnType: ExpandedArrayHeader
    signature: 'ExpandedArrayHeader *

      DatumGetExpandedArray(Datum d)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:377,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:377,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:381,1
    - Dst: expand_array
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:394,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - d
    - metacache
    argTypes:
    - Datum
    - ArrayMetaState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 373
    functionDepth: 4
    functionLinenumber: 373
    functionLinenumberEnd: 396
    functionName: DatumGetExpandedArrayX
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 0
    functionsReached:
    - Assert
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - expand_array
    - DatumGetEOHP
    - DatumGetPointer
    linkageType: ''
    returnType: ExpandedArrayHeader
    signature: 'ExpandedArrayHeader *

      DatumGetExpandedArrayX(Datum d, ArrayMetaState *metacache)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:410,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:410,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:413,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 402
    functionDepth: 3
    functionLinenumber: 402
    functionLinenumberEnd: 419
    functionName: DatumGetAnyArrayP
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 0
    functionsReached:
    - VARATT_IS_EXTERNAL_EXPANDED
    - PG_DETOAST_DATUM
    - Assert
    - DatumGetEOHP
    - DatumGetPointer
    linkageType: ''
    returnType: AnyArrayType
    signature: 'AnyArrayType *

      DatumGetAnyArrayP(Datum d)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:430,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:436,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:440,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - eah
    argTypes:
    - ExpandedArrayHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 455
    functionName: deconstruct_expanded_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 1
    functionsReached:
    - ARR_HASNULL
    - deconstruct_array
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void deconstruct_expanded_array(ExpandedArrayHeader *eah)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rmin
    - ','
    - rmax
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: CHECK_RANGE_BOUNDS
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_RANGE_BOUNDS(rmin, rmax)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:49,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:56,1
    - Dst: pg_prng_strong_seed
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:56,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:58,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 46
    functionDepth: 3
    functionLinenumber: 46
    functionLinenumberEnd: 67
    functionName: initialize_prng
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - pg_prng_strong_seed
    - GetCurrentTimestamp
    - unlikely
    - pg_prng_seed
    linkageType: ''
    returnType: void
    signature: void initialize_prng(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:77,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:79,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:80,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:81,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:82,1
    - Dst: pg_prng_fseed
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:85,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 74
    functionDepth: 4
    functionLinenumber: 74
    functionLinenumberEnd: 89
    functionName: setseed
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - PG_GETARG_FLOAT8
    - errcode
    - ereport
    - errmsg
    - pg_prng_fseed
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum setseed(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:101,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:104,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 107
    functionName: drandom
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - initialize_prng
    - PG_RETURN_FLOAT8
    - pg_prng_double
    linkageType: ''
    returnType: Datum
    signature: Datum drandom(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:117,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:118,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:122,1
    - Dst: pg_prng_double_normal
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:125,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 114
    functionDepth: 4
    functionLinenumber: 114
    functionLinenumberEnd: 131
    functionName: drandom_normal
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - initialize_prng
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - pg_prng_double_normal
    linkageType: ''
    returnType: Datum
    signature: Datum drandom_normal(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:141,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:142,1
    - Dst: CHECK_RANGE_BOUNDS
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:145,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:147,1
    - Dst: pg_prng_int64_range
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:149,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 138
    functionDepth: 4
    functionLinenumber: 138
    functionLinenumberEnd: 152
    functionName: int4random
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - CHECK_RANGE_BOUNDS
    - initialize_prng
    - pg_prng_int64_range
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int4random(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:162,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:163,1
    - Dst: CHECK_RANGE_BOUNDS
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:166,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:168,1
    - Dst: pg_prng_int64_range
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:170,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 159
    functionDepth: 4
    functionLinenumber: 159
    functionLinenumberEnd: 173
    functionName: int8random
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - CHECK_RANGE_BOUNDS
    - initialize_prng
    - PG_GETARG_INT64
    - PG_RETURN_INT64
    - pg_prng_int64_range
    linkageType: ''
    returnType: Datum
    signature: Datum int8random(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:183,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:184,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:189,1
    - Dst: random_numeric
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:191,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 180
    functionDepth: 4
    functionLinenumber: 180
    functionLinenumberEnd: 194
    functionName: numeric_random
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - initialize_prng
    - PG_RETURN_NUMERIC
    - random_numeric
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_random(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:205,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:206,1
    - Dst: CHECK_RANGE_BOUNDS
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:209,1
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:211,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:211,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:214,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:216,1
    - Dst: pg_prng_int64_range
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:218,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:220,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 202
    functionDepth: 4
    functionLinenumber: 202
    functionLinenumberEnd: 221
    functionName: date_random
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - errcode
    - CHECK_RANGE_BOUNDS
    - initialize_prng
    - ereport
    - DATE_IS_NOEND
    - PG_GETARG_DATEADT
    - errmsg
    - pg_prng_int64_range
    - PG_RETURN_DATEADT
    - DATE_IS_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum date_random(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:231,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:232,1
    - Dst: CHECK_RANGE_BOUNDS
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:235,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:237,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:238,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:240,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:242,1
    - Dst: pg_prng_int64_range
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:244,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 228
    functionDepth: 4
    functionLinenumber: 228
    functionLinenumberEnd: 247
    functionName: timestamp_random
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - TIMESTAMP_IS_NOEND
    - errcode
    - CHECK_RANGE_BOUNDS
    - initialize_prng
    - PG_RETURN_TIMESTAMP
    - ereport
    - TIMESTAMP_IS_NOBEGIN
    - errmsg
    - pg_prng_int64_range
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_random(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:257,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:258,1
    - Dst: CHECK_RANGE_BOUNDS
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:261,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:263,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:264,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:266,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:268,1
    - Dst: pg_prng_int64_range
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:270,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 254
    functionDepth: 4
    functionLinenumber: 254
    functionLinenumberEnd: 273
    functionName: timestamptz_random
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - TIMESTAMP_IS_NOEND
    - errcode
    - CHECK_RANGE_BOUNDS
    - initialize_prng
    - PG_GETARG_TIMESTAMPTZ
    - ereport
    - TIMESTAMP_IS_NOBEGIN
    - errmsg
    - pg_prng_int64_range
    - PG_RETURN_TIMESTAMPTZ
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_random(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:59,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:66,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:67,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:68,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:69,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:69,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:77,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:78,1
    - Dst: can_coerce_type
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:92,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:99,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:101,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:101,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:102,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:103,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:103,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:113,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:115,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:115,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:116,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:117,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:117,1
    - Dst: coerce_type
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:137,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:138,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:146,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:147,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:149,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:150,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:150,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:153,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 5
    argNames:
    - sbsref
    - indirection
    - pstate
    - isSlice
    - isAssignment
    argTypes:
    - SubscriptingRef*
    - List*
    - ParseState*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 43
    functionDepth: 6
    functionLinenumber: 43
    functionLinenumberEnd: 163
    functionName: jsonb_subscript_transform
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - exprType
    - Assert
    - lappend
    - ereport
    - lfirst_node
    - transformExpr
    - can_coerce_type
    - errhint
    - errmsg
    - exprLocation
    - coerce_type
    - parser_errposition
    linkageType: ''
    returnType: void
    signature: "void jsonb_subscript_transform(SubscriptingRef *sbsref,\n\t\t\t\t\t\t
      \ List *indirection,\n\t\t\t\t\t\t  ParseState *pstate,\n\t\t\t\t\t\t  bool
      isSlice,\n\t\t\t\t\t\t  bool isAssignment)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:59,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:66,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:67,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:68,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:69,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:69,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:77,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:78,1
    - Dst: can_coerce_type
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:92,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:99,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:101,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:101,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:102,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:103,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:103,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:113,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:115,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:115,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:116,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:117,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:117,1
    - Dst: coerce_type
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:137,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:138,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:146,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:147,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:149,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:150,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:150,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:153,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 57
    functionDepth: 6
    functionLinenumber: 57
    functionLinenumberEnd: 154
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 471
    functionsReached:
    - format_type_be
    - errcode
    - exprType
    - Assert
    - lappend
    - ereport
    - lfirst_node
    - transformExpr
    - can_coerce_type
    - errhint
    - errmsg
    - exprLocation
    - coerce_type
    - parser_errposition
    linkageType: ''
    returnType: void
    signature: void foreach(idx, indirection)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:203,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:204,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:205,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:217,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:217,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:219,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 227
    functionName: jsonb_subscript_check_subscripts
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - DirectFunctionCall1
    - CStringGetTextDatum
    - errmsg
    - DatumGetCString
    linkageType: ''
    returnType: bool
    signature: "bool jsonb_subscript_check_subscripts(ExprState *state,\n\t\t\t\t\t\t\t\t
      ExprEvalStep *op,\n\t\t\t\t\t\t\t\t ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:245,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:247,1
    - Dst: jsonb_get_element
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 253
    functionName: jsonb_subscript_fetch
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - Assert
    - DatumGetJsonbP
    - jsonb_get_element
    linkageType: ''
    returnType: void
    signature: "void jsonb_subscript_fetch(ExprState *state,\n\t\t\t\t\t  ExprEvalStep
      *op,\n\t\t\t\t\t  ExprContext *econtext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: JsonbToJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:274,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:274,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:302,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:306,1
    - Dst: jsonb_set_element
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:308,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 313
    functionName: jsonb_subscript_assign
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - jsonb_set_element
    - JsonbToJsonbValue
    - DatumGetJsonbP
    - JsonbValueToJsonb
    linkageType: ''
    returnType: void
    signature: "void jsonb_subscript_assign(ExprState *state,\n\t\t\t\t\t   ExprEvalStep
      *op,\n\t\t\t\t\t   ExprContext *econtext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:338,1
    - Dst: jsonb_get_element
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 346
    functionName: jsonb_subscript_fetch_old
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - DatumGetJsonbP
    - jsonb_get_element
    linkageType: ''
    returnType: void
    signature: "void jsonb_subscript_fetch_old(ExprState *state,\n\t\t\t\t\t\t  ExprEvalStep
      *op,\n\t\t\t\t\t\t  ExprContext *econtext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:364,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:364,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:367,1
    - Dst: foreach
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:380,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:382,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:383,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - sbsref
    - sbsrefstate
    - methods
    argTypes:
    - SubscriptingRef*
    - SubscriptingRefState*
    - SubscriptExecSteps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 395
    functionName: jsonb_exec_setup
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - foreach
    - exprType
    - palloc0
    - lfirst
    - MAXALIGN
    - foreach_current_index
    linkageType: ''
    returnType: void
    signature: "void jsonb_exec_setup(const SubscriptingRef *sbsref,\n\t\t\t\t SubscriptingRefState
      *sbsrefstate,\n\t\t\t\t SubscriptExecSteps *methods)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 414
    functionName: jsonb_subscript_handler
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_subscript_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: PG_GETARG_COMMANDID
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_COMMANDID(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: PG_RETURN_COMMANDID
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_RETURN_COMMANDID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/xid.c:35,1
    - Dst: uint32in_subr
      Src: /src/postgres/src/backend/utils/adt/xid.c:38,1
    - Dst: PG_RETURN_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 40
    functionName: xidin
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TRANSACTIONID
    - PG_GETARG_CSTRING
    - uint32in_subr
    linkageType: ''
    returnType: Datum
    signature: Datum xidin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:45,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/xid.c:46,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/xid.c:48,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/xid.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: xidout
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - snprintf
    - palloc
    - PG_RETURN_CSTRING
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum xidout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/xid.c:58,1
    - Dst: PG_RETURN_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:60,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/xid.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: xidrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TRANSACTIONID
    - PG_GETARG_POINTER
    - pq_getmsgint
    linkageType: ''
    returnType: Datum
    signature: Datum xidrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:69,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/xid.c:72,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/xid.c:73,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/xid.c:74,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/xid.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: xidsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum xidsend(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:83,1
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:84,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xid.c:86,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/utils/adt/xid.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 87
    functionName: xideq
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - TransactionIdEquals
    - PG_RETURN_BOOL
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum xideq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:95,1
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:96,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xid.c:98,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/utils/adt/xid.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 99
    functionName: xidneq
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - TransactionIdEquals
    - PG_RETURN_BOOL
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum xidneq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/xid.c:104,1
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 105
    functionName: hashxid
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - hash_uint32
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum hashxid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/utils/adt/xid.c:110,1
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:110,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/xid.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: hashxidextended
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - hash_uint32_extended
    - PG_GETARG_INT64
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum hashxidextended(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:119,1
    - Dst: GetStableLatestTransactionId
      Src: /src/postgres/src/backend/utils/adt/xid.c:120,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/utils/adt/xid.c:123,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/xid.c:124,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/xid.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 127
    functionName: xid_age
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - GetStableLatestTransactionId
    - TransactionIdIsNormal
    - PG_RETURN_INT32
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum xid_age(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:135,1
    - Dst: ReadNextMultiXactId
      Src: /src/postgres/src/backend/utils/adt/xid.c:136,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/utils/adt/xid.c:138,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/xid.c:139,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/xid.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 142
    functionName: mxid_age
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - MultiXactIdIsValid
    - ReadNextMultiXactId
    - PG_RETURN_INT32
    - PG_GETARG_TRANSACTIONID
    linkageType: ''
    returnType: Datum
    signature: Datum mxid_age(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/backend/utils/adt/xid.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 158
    functionName: xidComparator
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int xidComparator(const void *arg1, const void *arg2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xid.c:174,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/utils/adt/xid.c:174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xid.c:175,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/utils/adt/xid.c:175,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/utils/adt/xid.c:177,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/utils/adt/xid.c:180,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 184
    functionName: xidLogicalComparator
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - Assert
    - TransactionIdPrecedes
    - TransactionIdIsNormal
    linkageType: ''
    returnType: int
    signature: int xidLogicalComparator(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:189,1
    - Dst: PG_RETURN_TRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:191,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/utils/adt/xid.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 192
    functionName: xid8toxid
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - PG_RETURN_TRANSACTIONID
    - XidFromFullTransactionId
    linkageType: ''
    returnType: Datum
    signature: Datum xid8toxid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/xid.c:197,1
    - Dst: uint64in_subr
      Src: /src/postgres/src/backend/utils/adt/xid.c:200,1
    - Dst: PG_RETURN_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:201,1
    - Dst: FullTransactionIdFromU64
      Src: /src/postgres/src/backend/utils/adt/xid.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 202
    functionName: xid8in
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_FULLTRANSACTIONID
    - uint64in_subr
    - FullTransactionIdFromU64
    linkageType: ''
    returnType: Datum
    signature: Datum xid8in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:207,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/xid.c:208,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/xid.c:210,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/backend/utils/adt/xid.c:210,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/xid.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 212
    functionName: xid8out
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - U64FromFullTransactionId
    - PG_RETURN_CSTRING
    - palloc
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum xid8out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/xid.c:217,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/xid.c:220,1
    - Dst: PG_RETURN_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:221,1
    - Dst: FullTransactionIdFromU64
      Src: /src/postgres/src/backend/utils/adt/xid.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 222
    functionName: xid8recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FULLTRANSACTIONID
    - PG_GETARG_POINTER
    - FullTransactionIdFromU64
    - pq_getmsgint64
    linkageType: ''
    returnType: Datum
    signature: Datum xid8recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:227,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/xid.c:230,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/xid.c:231,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/backend/utils/adt/xid.c:231,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/xid.c:232,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/xid.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 224
    functionDepth: 4
    functionLinenumber: 224
    functionLinenumberEnd: 233
    functionName: xid8send
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - pq_endtypsend
    - U64FromFullTransactionId
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    linkageType: ''
    returnType: Datum
    signature: Datum xid8send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:238,1
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:239,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xid.c:241,1
    - Dst: FullTransactionIdEquals
      Src: /src/postgres/src/backend/utils/adt/xid.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: xid8eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - FullTransactionIdEquals
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum xid8eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:247,1
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:248,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xid.c:250,1
    - Dst: FullTransactionIdEquals
      Src: /src/postgres/src/backend/utils/adt/xid.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 251
    functionName: xid8ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - FullTransactionIdEquals
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum xid8ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:256,1
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:257,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xid.c:259,1
    - Dst: FullTransactionIdPrecedes
      Src: /src/postgres/src/backend/utils/adt/xid.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 260
    functionName: xid8lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - FullTransactionIdPrecedes
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum xid8lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:265,1
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:266,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xid.c:268,1
    - Dst: FullTransactionIdFollows
      Src: /src/postgres/src/backend/utils/adt/xid.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 269
    functionName: xid8gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - PG_RETURN_BOOL
    - FullTransactionIdFollows
    linkageType: ''
    returnType: Datum
    signature: Datum xid8gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:274,1
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:275,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xid.c:277,1
    - Dst: FullTransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/utils/adt/xid.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 278
    functionName: xid8le
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - FullTransactionIdPrecedesOrEquals
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum xid8le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:283,1
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:284,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xid.c:286,1
    - Dst: FullTransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/utils/adt/xid.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 287
    functionName: xid8ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - FullTransactionIdFollowsOrEquals
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum xid8ge(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:292,1
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:293,1
    - Dst: FullTransactionIdFollows
      Src: /src/postgres/src/backend/utils/adt/xid.c:295,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/xid.c:296,1
    - Dst: FullTransactionIdEquals
      Src: /src/postgres/src/backend/utils/adt/xid.c:297,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/xid.c:298,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/xid.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 301
    functionName: xid8cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - PG_RETURN_INT32
    - FullTransactionIdEquals
    - FullTransactionIdFollows
    linkageType: ''
    returnType: Datum
    signature: Datum xid8cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8
      Src: /src/postgres/src/backend/utils/adt/xid.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 307
    functionName: hashxid8
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - hashint8
    linkageType: ''
    returnType: Datum
    signature: Datum hashxid8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8extended
      Src: /src/postgres/src/backend/utils/adt/xid.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 309
    functionDepth: 3
    functionLinenumber: 309
    functionLinenumberEnd: 313
    functionName: hashxid8extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - hashint8extended
    linkageType: ''
    returnType: Datum
    signature: Datum hashxid8extended(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:318,1
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:319,1
    - Dst: FullTransactionIdFollows
      Src: /src/postgres/src/backend/utils/adt/xid.c:321,1
    - Dst: PG_RETURN_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:322,1
    - Dst: PG_RETURN_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 325
    functionName: xid8_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - PG_RETURN_FULLTRANSACTIONID
    - FullTransactionIdFollows
    linkageType: ''
    returnType: Datum
    signature: Datum xid8_larger(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:330,1
    - Dst: PG_GETARG_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:331,1
    - Dst: FullTransactionIdPrecedes
      Src: /src/postgres/src/backend/utils/adt/xid.c:333,1
    - Dst: PG_RETURN_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:334,1
    - Dst: PG_RETURN_FULLTRANSACTIONID
      Src: /src/postgres/src/backend/utils/adt/xid.c:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 337
    functionName: xid8_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FULLTRANSACTIONID
    - PG_RETURN_FULLTRANSACTIONID
    - FullTransactionIdPrecedes
    linkageType: ''
    returnType: Datum
    signature: Datum xid8_smaller(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/xid.c:349,1
    - Dst: uint32in_subr
      Src: /src/postgres/src/backend/utils/adt/xid.c:352,1
    - Dst: PG_RETURN_COMMANDID
      Src: /src/postgres/src/backend/utils/adt/xid.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 354
    functionName: cidin
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_COMMANDID
    - uint32in_subr
    linkageType: ''
    returnType: Datum
    signature: Datum cidin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_COMMANDID
      Src: /src/postgres/src/backend/utils/adt/xid.c:362,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/xid.c:363,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/xid.c:365,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/xid.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 367
    functionName: cidout
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_COMMANDID
    - snprintf
    - PG_RETURN_CSTRING
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum cidout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/xid.c:375,1
    - Dst: PG_RETURN_COMMANDID
      Src: /src/postgres/src/backend/utils/adt/xid.c:377,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/xid.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 378
    functionName: cidrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_COMMANDID
    - pq_getmsgint
    linkageType: ''
    returnType: Datum
    signature: Datum cidrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_COMMANDID
      Src: /src/postgres/src/backend/utils/adt/xid.c:386,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/xid.c:389,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/xid.c:390,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/xid.c:391,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/xid.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 383
    functionDepth: 4
    functionLinenumber: 383
    functionLinenumberEnd: 392
    functionName: cidsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_COMMANDID
    linkageType: ''
    returnType: Datum
    signature: Datum cidsend(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_COMMANDID
      Src: /src/postgres/src/backend/utils/adt/xid.c:397,1
    - Dst: PG_GETARG_COMMANDID
      Src: /src/postgres/src/backend/utils/adt/xid.c:398,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xid.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 401
    functionName: cideq
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_COMMANDID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum cideq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/xid.c:406,1
    - Dst: PG_GETARG_COMMANDID
      Src: /src/postgres/src/backend/utils/adt/xid.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 403
    functionDepth: 2
    functionLinenumber: 403
    functionLinenumberEnd: 407
    functionName: hashcid
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_COMMANDID
    - hash_uint32
    linkageType: ''
    returnType: Datum
    signature: Datum hashcid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/utils/adt/xid.c:412,1
    - Dst: PG_GETARG_COMMANDID
      Src: /src/postgres/src/backend/utils/adt/xid.c:412,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/xid.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 413
    functionName: hashcidextended
    functionSourceFile: /src/postgres/src/backend/utils/adt/xid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_COMMANDID
    - hash_uint32_extended
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hashcidextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: PG_GETARG_TEXT_PP_IF_EXISTS
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_GETARG_TEXT_PP_IF_EXISTS(_n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:143,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:144,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/regexp.c:163,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/regexp.c:171,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/regexp.c:180,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/regexp.c:182,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:192,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:193,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/regexp.c:204,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:207,1
    - Dst: pg_regcomp
      Src: /src/postgres/src/backend/utils/adt/regexp.c:209,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regexp.c:215,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/utils/adt/regexp.c:220,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:221,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:222,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:223,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:227,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/regexp.c:228,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/backend/utils/adt/regexp.c:235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regexp.c:248,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/adt/regexp.c:250,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/utils/adt/regexp.c:254,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/regexp.c:257,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:262,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 3
    argNames:
    - text_re
    - cflags
    - collation
    argTypes:
    - text*
    - int
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 140
    functionDepth: 4
    functionLinenumber: 140
    functionLinenumberEnd: 265
    functionName: RE_compile_and_cache
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - pg_regcomp
    - errcode
    - palloc_array
    - VARDATA_ANY
    - MemoryContextSetIdentifier
    - memcpy
    - pg_regerror
    - pfree
    - Assert
    - VARSIZE_ANY_EXHDR
    - errmsg
    - memcmp
    - MemoryContextSetParent
    - memmove
    - ereport
    - unlikely
    - AllocSetContextCreate
    - pg_mb2wchar_with_len
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - palloc
    linkageType: ''
    returnType: regex_t
    signature: 'regex_t *

      RE_compile_and_cache(text *text_re, int cflags, Oid collation)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_regexec
      Src: /src/postgres/src/backend/utils/adt/regexp.c:289,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/utils/adt/regexp.c:301,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:302,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:303,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 6
    argNames:
    - re
    - data
    - data_len
    - start_search
    - nmatch
    - pmatch
    argTypes:
    - regex_t*
    - pg_wchar*
    - int
    - int
    - int
    - regmatch_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 308
    functionName: RE_wchar_execute
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - pg_regexec
    - errcode
    - pg_regerror
    - ereport
    - errmsg
    linkageType: ''
    returnType: bool
    signature: "bool RE_wchar_execute(regex_t *re, pg_wchar *data, int data_len,\n\t\t\t\t
      int start_search, int nmatch, regmatch_t *pmatch)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:332,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:333,1
    - Dst: RE_wchar_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:336,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regexp.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - re
    - dat
    - dat_len
    - nmatch
    - pmatch
    argTypes:
    - regex_t*
    - char*
    - int
    - int
    - regmatch_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 323
    functionDepth: 3
    functionLinenumber: 323
    functionLinenumberEnd: 340
    functionName: RE_execute
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - pfree
    - pg_mb2wchar_with_len
    - palloc_array
    - RE_wchar_execute
    linkageType: ''
    returnType: bool
    signature: "bool RE_execute(regex_t *re, char *dat, int dat_len,\n\t\t   int nmatch,
      regmatch_t *pmatch)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RE_compile_and_cache
      Src: /src/postgres/src/backend/utils/adt/regexp.c:369,1
    - Dst: RE_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 7
    argNames:
    - text_re
    - dat
    - dat_len
    - cflags
    - collation
    - nmatch
    - pmatch
    argTypes:
    - text*
    - char*
    - int
    - int
    - Oid
    - int
    - regmatch_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 357
    functionDepth: 5
    functionLinenumber: 357
    functionLinenumberEnd: 372
    functionName: RE_compile_and_execute
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_cache
    - RE_execute
    linkageType: ''
    returnType: bool
    signature: "bool RE_compile_and_execute(text *text_re, char *dat, int dat_len,\n\t\t\t\t\t
      \  int cflags, Oid collation,\n\t\t\t\t\t   int nmatch, regmatch_t *pmatch)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:393,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:394,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:443,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:444,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:445,1
    - Dst: pg_mblen_range
      Src: /src/postgres/src/backend/utils/adt/regexp.c:446,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 2
    argNames:
    - flags
    - opts
    argTypes:
    - pg_re_flags*
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 384
    functionDepth: 4
    functionLinenumber: 384
    functionLinenumberEnd: 451
    functionName: parse_re_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - pg_mblen_range
    - errcode
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errmsg
    linkageType: ''
    returnType: void
    signature: void parse_re_flags(pg_re_flags *flags, text *opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/regexp.c:461,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:462,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:464,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:464,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:465,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/regexp.c:466,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:466,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 458
    functionDepth: 6
    functionLinenumber: 458
    functionLinenumberEnd: 470
    functionName: nameregexeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - RE_compile_and_execute
    - strlen
    - NameStr
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum nameregexeq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/regexp.c:475,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:476,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:478,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:478,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:479,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/regexp.c:480,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:480,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 472
    functionDepth: 6
    functionLinenumber: 472
    functionLinenumberEnd: 484
    functionName: nameregexne
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - RE_compile_and_execute
    - strlen
    - NameStr
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum nameregexne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:489,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:490,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:492,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:492,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:493,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:494,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 486
    functionDepth: 6
    functionLinenumber: 486
    functionLinenumberEnd: 498
    functionName: textregexeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum textregexeq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:503,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:504,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:506,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:506,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:507,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:508,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 500
    functionDepth: 6
    functionLinenumber: 500
    functionLinenumberEnd: 512
    functionName: textregexne
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum textregexne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/regexp.c:524,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:525,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:527,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:527,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:528,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/regexp.c:529,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:529,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 521
    functionDepth: 6
    functionLinenumber: 521
    functionLinenumberEnd: 533
    functionName: nameicregexeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - RE_compile_and_execute
    - strlen
    - NameStr
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum nameicregexeq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/regexp.c:538,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:539,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:541,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:541,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:542,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/regexp.c:543,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:543,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 535
    functionDepth: 6
    functionLinenumber: 535
    functionLinenumberEnd: 547
    functionName: nameicregexne
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - RE_compile_and_execute
    - strlen
    - NameStr
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum nameicregexne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:552,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:553,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:555,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:555,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:556,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:557,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 549
    functionDepth: 6
    functionLinenumber: 549
    functionLinenumberEnd: 561
    functionName: texticregexeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum texticregexeq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:566,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:567,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:569,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:569,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:570,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:571,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 563
    functionDepth: 6
    functionLinenumber: 563
    functionLinenumberEnd: 575
    functionName: texticregexne
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum texticregexne(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:585,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:586,1
    - Dst: RE_compile_and_cache
      Src: /src/postgres/src/backend/utils/adt/regexp.c:593,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:593,1
    - Dst: RE_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:601,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:602,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:602,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:604,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:626,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/regexp.c:628,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:629,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:630,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:631,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 582
    functionDepth: 5
    functionLinenumber: 582
    functionLinenumberEnd: 632
    functionName: textregexsubstr
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_cache
    - RE_execute
    - Int32GetDatum
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PointerGetDatum
    - DirectFunctionCall3
    - PG_RETURN_NULL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum textregexsubstr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:644,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:645,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:646,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:648,1
    - Dst: replace_text_regexp
      Src: /src/postgres/src/backend/utils/adt/regexp.c:648,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 651
    functionName: textregexreplace_noopt
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - replace_text_regexp
    - PG_RETURN_TEXT_P
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum textregexreplace_noopt(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:660,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:661,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:662,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:663,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:673,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:675,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:676,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:679,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:680,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:681,1
    - Dst: pg_mblen_range
      Src: /src/postgres/src/backend/utils/adt/regexp.c:682,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/regexp.c:683,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:686,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:688,1
    - Dst: replace_text_regexp
      Src: /src/postgres/src/backend/utils/adt/regexp.c:688,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:689,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 657
    functionDepth: 5
    functionLinenumber: 657
    functionLinenumberEnd: 691
    functionName: textregexreplace
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - pg_mblen_range
    - errcode
    - PG_RETURN_TEXT_P
    - ereport
    - replace_text_regexp
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errhint
    - parse_re_flags
    - errmsg
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum textregexreplace(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:702,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:703,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:704,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:707,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:711,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:713,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:715,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:717,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:720,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:722,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:724,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:725,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:726,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:731,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:734,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:738,1
    - Dst: replace_text_regexp
      Src: /src/postgres/src/backend/utils/adt/regexp.c:738,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:739,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 699
    functionDepth: 5
    functionLinenumber: 699
    functionLinenumberEnd: 741
    functionName: textregexreplace_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - PG_GETARG_TEXT_PP
    - errcode
    - PG_RETURN_TEXT_P
    - ereport
    - replace_text_regexp
    - parse_re_flags
    - errmsg
    - PG_GET_COLLATION
    - PG_GETARG_INT32
    - PG_GETARG_TEXT_PP_IF_EXISTS
    linkageType: ''
    returnType: Datum
    signature: Datum textregexreplace_extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: textregexreplace_extended
      Src: /src/postgres/src/backend/utils/adt/regexp.c:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 744
    functionDepth: 6
    functionLinenumber: 744
    functionLinenumberEnd: 748
    functionName: textregexreplace_extended_no_n
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - textregexreplace_extended
    linkageType: ''
    returnType: Datum
    signature: Datum textregexreplace_extended_no_n(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: textregexreplace_extended
      Src: /src/postgres/src/backend/utils/adt/regexp.c:754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 751
    functionDepth: 6
    functionLinenumber: 751
    functionLinenumberEnd: 755
    functionName: textregexreplace_extended_no_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - textregexreplace_extended
    linkageType: ''
    returnType: Datum
    signature: Datum textregexreplace_extended_no_flags(PG_FUNCTION_ARGS)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:782,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:783,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:793,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:794,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:799,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:802,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:803,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:804,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/regexp.c:805,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:859,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/regexp.c:860,1
    - Dst: pg_mblen_range
      Src: /src/postgres/src/backend/utils/adt/regexp.c:884,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/regexp.c:892,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/regexp.c:896,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/regexp.c:908,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:949,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:950,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:951,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1069,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 123
    argCount: 2
    argNames:
    - pat_text
    - esc_text
    argTypes:
    - text*
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 767
    functionDepth: 4
    functionLinenumber: 767
    functionLinenumberEnd: 1072
    functionName: similar_escape_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - pg_mblen_range
    - memcpy
    - errcode
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errhint
    - errmsg
    - VARDATA
    - palloc
    - SET_VARSIZE
    - pg_mbstrlen_with_len
    - memcmp
    linkageType: ''
    returnType: text
    signature: 'text *

      similar_escape_internal(text *pat_text, text *esc_text)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1080,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1081,1
    - Dst: similar_escape_internal
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1084,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1077
    functionDepth: 5
    functionLinenumber: 1077
    functionLinenumberEnd: 1087
    functionName: similar_to_escape_2
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - similar_escape_internal
    - PG_RETURN_TEXT_P
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum similar_to_escape_2(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1096,1
    - Dst: similar_escape_internal
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1099,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1093
    functionDepth: 5
    functionLinenumber: 1093
    functionLinenumberEnd: 1102
    functionName: similar_to_escape_1
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - similar_escape_internal
    - PG_RETURN_TEXT_P
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum similar_to_escape_1(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1119,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1120,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1121,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1123,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1126,1
    - Dst: similar_escape_internal
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1128,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1111
    functionDepth: 5
    functionLinenumber: 1111
    functionLinenumberEnd: 1131
    functionName: similar_escape
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - similar_escape_internal
    - PG_RETURN_TEXT_P
    - PG_RETURN_NULL
    - PG_ARGISNULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum similar_escape(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1140,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1141,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1143,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1148,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1150,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1152,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1153,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1154,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1162,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1163,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1165,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1171,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1172,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1137
    functionDepth: 5
    functionLinenumber: 1137
    functionLinenumberEnd: 1177
    functionName: regexp_count
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - PG_RETURN_INT32
    - PG_GETARG_TEXT_PP
    - errcode
    - setup_regexp_matches
    - ereport
    - parse_re_flags
    - errmsg
    - PG_GET_COLLATION
    - PG_GETARG_INT32
    - PG_GETARG_TEXT_PP_IF_EXISTS
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_count(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_count
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1180
    functionDepth: 6
    functionLinenumber: 1180
    functionLinenumberEnd: 1184
    functionName: regexp_count_no_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_count
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_count_no_start(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_count
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1187
    functionDepth: 6
    functionLinenumber: 1187
    functionLinenumberEnd: 1191
    functionName: regexp_count_no_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_count
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_count_no_flags(PG_FUNCTION_ARGS)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1200,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1201,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1205,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1212,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1216,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1217,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1218,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1221,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1223,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1225,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1226,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1227,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1230,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1234,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1235,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1236,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1239,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1245,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1250,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1253,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1254,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1256,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1262,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1263,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1269,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1273,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1284,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1286,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1197
    functionDepth: 5
    functionLinenumber: 1197
    functionLinenumberEnd: 1287
    functionName: regexp_instr
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - PG_RETURN_INT32
    - PG_GETARG_TEXT_PP
    - errcode
    - setup_regexp_matches
    - ereport
    - parse_re_flags
    - errmsg
    - PG_GET_COLLATION
    - PG_GETARG_INT32
    - PG_GETARG_TEXT_PP_IF_EXISTS
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_instr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_instr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1290
    functionDepth: 6
    functionLinenumber: 1290
    functionLinenumberEnd: 1294
    functionName: regexp_instr_no_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_instr
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_instr_no_start(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_instr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1297
    functionDepth: 6
    functionLinenumber: 1297
    functionLinenumberEnd: 1301
    functionName: regexp_instr_no_n
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_instr
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_instr_no_n(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_instr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1304
    functionDepth: 6
    functionLinenumber: 1304
    functionLinenumberEnd: 1308
    functionName: regexp_instr_no_endoption
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_instr
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_instr_no_endoption(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_instr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1311
    functionDepth: 6
    functionLinenumber: 1311
    functionLinenumberEnd: 1315
    functionName: regexp_instr_no_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_instr
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_instr_no_flags(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_instr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1318
    functionDepth: 6
    functionLinenumber: 1318
    functionLinenumberEnd: 1322
    functionName: regexp_instr_no_subexpr
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_instr
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_instr_no_subexpr(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1331,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1332,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1333,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1337,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1340,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1341,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1343,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1347,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1347,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1348,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1349,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1328
    functionDepth: 6
    functionLinenumber: 1328
    functionLinenumberEnd: 1353
    functionName: regexp_like
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_GETARG_TEXT_PP
    - ereport
    - RE_compile_and_execute
    - parse_re_flags
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errmsg
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_like(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_like
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1356
    functionDepth: 7
    functionLinenumber: 1356
    functionLinenumberEnd: 1360
    functionName: regexp_like_no_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_like
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_like_no_flags(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1369,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1370,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1371,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1379,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1380,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1382,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1384,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1386,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1387,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1390,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1392,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1395,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1396,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1398,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1398,1
    - Dst: build_regexp_match_result
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1366
    functionDepth: 5
    functionLinenumber: 1366
    functionLinenumberEnd: 1399
    functionName: regexp_match
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - build_regexp_match_result
    - errcode
    - PG_GETARG_TEXT_PP
    - Assert
    - setup_regexp_matches
    - PG_RETURN_DATUM
    - ereport
    - palloc_array
    - parse_re_flags
    - errhint
    - errmsg
    - PointerGetDatum
    - PG_RETURN_NULL
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_match(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_match
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1402
    functionDepth: 6
    functionLinenumber: 1402
    functionLinenumberEnd: 1406
    functionName: regexp_match_no_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_match
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_match_no_flags(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1418,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1420,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1421,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1425,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1426,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1429,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1432,1
    - Dst: PG_GETARG_TEXT_P_COPY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1432,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1434,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1438,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1439,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1441,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1445,1
    - Dst: build_regexp_match_result
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1452,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1454,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1454,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1412
    functionDepth: 5
    functionLinenumber: 1412
    functionLinenumberEnd: 1458
    functionName: regexp_matches
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 4
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - build_regexp_match_result
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - PG_GETARG_TEXT_PP
    - setup_regexp_matches
    - palloc_array
    - MemoryContextSwitchTo
    - parse_re_flags
    - PG_GETARG_TEXT_P_COPY
    - PointerGetDatum
    - SRF_RETURN_DONE
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_matches(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1461
    functionDepth: 6
    functionLinenumber: 1461
    functionLinenumberEnd: 1465
    functionName: regexp_matches_no_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_matches
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_matches_no_flags(PG_FUNCTION_ARGS)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1495,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1496,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1514,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1515,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1516,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1516,1
    - Dst: RE_compile_and_cache
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1522,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1538,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1547,1
    - Dst: RE_wchar_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1553,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1570,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1571,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1572,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1573,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1669,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1676,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1683,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 76
    argCount: 8
    argNames:
    - orig_str
    - pattern
    - re_flags
    - start_search
    - collation
    - use_subpatterns
    - ignore_degenerate
    - fetching_unmatched
    argTypes:
    - text*
    - text*
    - pg_re_flags*
    - int
    - Oid
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1686
      start: 1487
    functionDepth: 5
    functionLinenumber: 1487
    functionLinenumberEnd: 1686
    functionName: setup_regexp_matches
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 4
    functionsReached:
    - RE_compile_and_cache
    - palloc0_object
    - pg_mb2wchar_with_len
    - errcode
    - pfree
    - ereport
    - palloc_array
    - repalloc
    - pg_database_encoding_max_length
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errmsg
    - RE_wchar_execute
    - palloc
    linkageType: ''
    returnType: regexp_matches_ctx
    signature: "regexp_matches_ctx *\nsetup_regexp_matches(text *orig_str, text *pattern,
      pg_re_flags *re_flags,\n\t\t\t\t\t int start_search,\n\t\t\t\t\t Oid collation,\n\t\t\t\t\t
      bool use_subpatterns,\n\t\t\t\t\t bool ignore_degenerate,\n\t\t\t\t\t bool fetching_unmatched)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_wchar2mb_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1720,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1721,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1721,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1726,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1727,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1728,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1729,1
    - Dst: construct_md_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1738,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - matchctx
    argTypes:
    - regexp_matches_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1740
      start: 1691
    functionDepth: 1
    functionLinenumber: 1691
    functionLinenumberEnd: 1740
    functionName: build_regexp_match_result
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 2
    functionsReached:
    - construct_md_array
    - Assert
    - pg_wchar2mb_with_len
    - Int32GetDatum
    - cstring_to_text_with_len
    - PointerGetDatum
    - DirectFunctionCall3
    linkageType: ''
    returnType: ArrayType
    signature: 'ArrayType *

      build_regexp_match_result(regexp_matches_ctx *matchctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1753,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1755,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1756,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1760,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1761,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1767,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1768,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1770,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1776,1
    - Dst: PG_GETARG_TEXT_P_COPY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1776,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1778,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1781,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1785,1
    - Dst: build_regexp_split_result
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1790,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1793,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1796,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1747
    functionDepth: 6
    functionLinenumber: 1747
    functionLinenumberEnd: 1797
    functionName: regexp_split_to_table
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - build_regexp_split_result
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - PG_GETARG_TEXT_PP
    - errcode
    - setup_regexp_matches
    - ereport
    - MemoryContextSwitchTo
    - parse_re_flags
    - PG_GETARG_TEXT_P_COPY
    - errmsg
    - SRF_RETURN_DONE
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_split_to_table(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_split_to_table
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1804
      start: 1800
    functionDepth: 7
    functionLinenumber: 1800
    functionLinenumberEnd: 1804
    functionName: regexp_split_to_table_no_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_split_to_table
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_split_to_table_no_flags(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1819,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1819,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1822,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1823,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1825,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1830,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1830,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1831,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1833,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1838,1
    - Dst: build_regexp_split_result
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1839,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1846,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1846,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1847
      start: 1811
    functionDepth: 6
    functionLinenumber: 1811
    functionLinenumberEnd: 1847
    functionName: regexp_split_to_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - build_regexp_split_result
    - errcode
    - PG_GETARG_TEXT_PP
    - setup_regexp_matches
    - PG_RETURN_DATUM
    - ereport
    - parse_re_flags
    - accumArrayResult
    - errmsg
    - PG_GET_COLLATION
    - makeArrayResult
    - PG_GETARG_TEXT_PP_IF_EXISTS
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_split_to_array(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_split_to_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1850
    functionDepth: 7
    functionLinenumber: 1850
    functionLinenumberEnd: 1854
    functionName: regexp_split_to_array_no_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_split_to_array
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_split_to_array_no_flags(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1874,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1878,1
    - Dst: pg_wchar2mb_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1884,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1887,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1888,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1888,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1892,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1893,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1894,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1895,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - splitctx
    argTypes:
    - regexp_matches_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1862
    functionDepth: 1
    functionLinenumber: 1862
    functionLinenumberEnd: 1897
    functionName: build_regexp_split_result
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 2
    functionsReached:
    - elog
    - Assert
    - pg_wchar2mb_with_len
    - Int32GetDatum
    - cstring_to_text_with_len
    - PointerGetDatum
    - DirectFunctionCall3
    linkageType: ''
    returnType: Datum
    signature: Datum build_regexp_split_result(regexp_matches_ctx *splitctx)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1906,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1907,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1910,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1919,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1921,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1923,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1924,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1925,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1928,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1930,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1932,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1933,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1934,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1937,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1939,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1941,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1942,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1943,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1948,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1951,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1952,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1954,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1960,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1961,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1967,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1971,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1982,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1984,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1984,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1985,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1986,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1987,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1988
      start: 1903
    functionDepth: 6
    functionLinenumber: 1903
    functionLinenumberEnd: 1988
    functionName: regexp_substr
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - PG_GETARG_TEXT_PP
    - errcode
    - Int32GetDatum
    - setup_regexp_matches
    - PG_RETURN_DATUM
    - ereport
    - parse_re_flags
    - errmsg
    - PointerGetDatum
    - DirectFunctionCall3
    - PG_RETURN_NULL
    - PG_GET_COLLATION
    - PG_GETARG_INT32
    - PG_GETARG_TEXT_PP_IF_EXISTS
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_substr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_substr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1991
    functionDepth: 7
    functionLinenumber: 1991
    functionLinenumberEnd: 1995
    functionName: regexp_substr_no_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_substr
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_substr_no_start(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_substr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1998
    functionDepth: 7
    functionLinenumber: 1998
    functionLinenumberEnd: 2002
    functionName: regexp_substr_no_n
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_substr
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_substr_no_n(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_substr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2008,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 2005
    functionDepth: 7
    functionLinenumber: 2005
    functionLinenumberEnd: 2009
    functionName: regexp_substr_no_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_substr
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_substr_no_flags(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexp_substr
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2015,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 2012
    functionDepth: 7
    functionLinenumber: 2012
    functionLinenumberEnd: 2016
    functionName: regexp_substr_no_subexpr
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - regexp_substr
    linkageType: ''
    returnType: Datum
    signature: Datum regexp_substr_no_subexpr(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RE_compile_and_cache
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2044,1
    - Dst: pg_regprefix
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2047,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2065,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2066,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2067,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2068,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2073,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2074,1
    - Dst: pg_wchar2mb_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2075,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2076,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2078,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 4
    argNames:
    - text_re
    - case_insensitive
    - collation
    - exact
    argTypes:
    - text*
    - bool
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2024
    functionDepth: 5
    functionLinenumber: 2024
    functionLinenumberEnd: 2081
    functionName: regexp_fixed_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_cache
    - errcode
    - pg_regerror
    - pg_wchar2mb_with_len
    - Assert
    - pfree
    - ereport
    - pg_database_encoding_max_length
    - pg_regprefix
    - errmsg
    - palloc
    linkageType: ''
    returnType: char
    signature: "char *\nregexp_fixed_prefix(text *text_re, bool case_insensitive,
      Oid collation,\n\t\t\t\t\tbool *exact)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: UINT32_ACCESS_ONCE
    functionSourceFile: /src/postgres/src/backend/utils/adt/waitfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UINT32_ACCESS_ONCE(var)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:41,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:42,1
    - Dst: BackendPidGetProc
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:55,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:57,1
    - Dst: pgstat_get_wait_event_type
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:59,1
    - Dst: UINT32_ACCESS_ONCE
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:59,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:60,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:61,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:64,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:64,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:65,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:66,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:67,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:68,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:68,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:69,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:76,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:76,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:76,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:78,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:78,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:79,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:79,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:80,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:81,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:81,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:82,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:97,1
    - Dst: GetSafeSnapshotBlockingPids
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:109,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:110,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/waitfuncs.c:112,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 113
    functionName: pg_isolation_test_session_is_blocked
    functionSourceFile: /src/postgres/src/backend/utils/adt/waitfuncs.c
    functionUses: 0
    functionsReached:
    - UINT32_ACCESS_ONCE
    - strcmp
    - GetSafeSnapshotBlockingPids
    - ARR_NDIM
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_BOOL
    - pgstat_get_wait_event_type
    - elog
    - Assert
    - Int32GetDatum
    - array_contains_nulls
    - ARR_DIMS
    - BackendPidGetProc
    - ARR_DATA_PTR
    - DatumGetArrayTypeP
    - ArrayGetNItems
    - PG_GETARG_INT32
    - DirectFunctionCall1
    - ARR_ELEMTYPE
    linkageType: ''
    returnType: Datum
    signature: Datum pg_isolation_test_session_is_blocked(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/genfile.c:58,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/backend/utils/adt/genfile.c:59,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/genfile.c:66,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/genfile.c:66,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/backend/utils/adt/genfile.c:73,1
    - Dst: path_is_prefix_of_path
      Src: /src/postgres/src/backend/utils/adt/genfile.c:79,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/backend/utils/adt/genfile.c:80,1
    - Dst: path_is_prefix_of_path
      Src: /src/postgres/src/backend/utils/adt/genfile.c:81,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:82,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:83,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:84,1
    - Dst: path_is_relative_and_below_cwd
      Src: /src/postgres/src/backend/utils/adt/genfile.c:86,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:87,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:88,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:89,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - arg
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 53
    functionDepth: 4
    functionLinenumber: 53
    functionLinenumberEnd: 92
    functionName: convert_and_check_filename
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - path_is_prefix_of_path
    - is_absolute_path
    - GetUserId
    - has_privs_of_role
    - errcode
    - path_is_relative_and_below_cwd
    - ereport
    - canonicalize_path
    - text_to_cstring
    - errmsg
    linkageType: ''
    returnType: char
    signature: 'char *

      convert_and_check_filename(text *arg)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:114,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/utils/adt/genfile.c:116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:121,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/genfile.c:122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:123,1
    - Dst: fseeko
      Src: /src/postgres/src/backend/utils/adt/genfile.c:127,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:129,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/genfile.c:130,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:131,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/genfile.c:136,1
    - Dst: fread
      Src: /src/postgres/src/backend/utils/adt/genfile.c:138,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/genfile.c:138,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/genfile.c:145,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/genfile.c:148,1
    - Dst: feof
      Src: /src/postgres/src/backend/utils/adt/genfile.c:150,1
    - Dst: ferror
      Src: /src/postgres/src/backend/utils/adt/genfile.c:150,1
    - Dst: fread
      Src: /src/postgres/src/backend/utils/adt/genfile.c:168,1
    - Dst: feof
      Src: /src/postgres/src/backend/utils/adt/genfile.c:168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:169,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:171,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/utils/adt/genfile.c:177,1
    - Dst: fread
      Src: /src/postgres/src/backend/utils/adt/genfile.c:184,1
    - Dst: ferror
      Src: /src/postgres/src/backend/utils/adt/genfile.c:194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:195,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/genfile.c:196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:197,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/genfile.c:199,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/utils/adt/genfile.c:201,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 4
    argNames:
    - filename
    - seek_offset
    - bytes_to_read
    - missing_ok
    argTypes:
    - char*
    - int64
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 204
    functionName: read_binary_file
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - ferror
    - AllocateFile
    - fseeko
    - errcode
    - Assert
    - feof
    - initStringInfo
    - ereport
    - fread
    - errmsg
    - VARDATA
    - palloc
    - enlargeStringInfo
    - SET_VARSIZE
    - FreeFile
    - errcode_for_file_access
    linkageType: ''
    returnType: bytea
    signature: "bytea *\nread_binary_file(const char *filename, int64 seek_offset,
      int64 bytes_to_read,\n\t\t\t\t bool missing_ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_binary_file
      Src: /src/postgres/src/backend/utils/adt/genfile.c:216,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/backend/utils/adt/genfile.c:221,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/genfile.c:221,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/genfile.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - filename
    - seek_offset
    - bytes_to_read
    - missing_ok
    argTypes:
    - char*
    - int64
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 210
    functionDepth: 4
    functionLinenumber: 210
    functionLinenumberEnd: 228
    functionName: read_text_file
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_verifymbstr
    - VARSIZE
    - read_binary_file
    - VARDATA
    linkageType: ''
    returnType: text
    signature: "text *\nread_text_file(const char *filename, int64 seek_offset, int64
      bytes_to_read,\n\t\t\t   bool missing_ok)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/genfile.c:244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:248,1
    - Dst: read_text_file
      Src: /src/postgres/src/backend/utils/adt/genfile.c:250,1
    - Dst: convert_and_check_filename
      Src: /src/postgres/src/backend/utils/adt/genfile.c:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - filename_t
    - seek_offset
    - bytes_to_read
    - read_to_eof
    - missing_ok
    argTypes:
    - text*
    - int64
    - int64
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 239
    functionDepth: 5
    functionLinenumber: 239
    functionLinenumberEnd: 252
    functionName: pg_read_file_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - read_text_file
    - ereport
    - convert_and_check_filename
    - errmsg
    linkageType: ''
    returnType: text
    signature: "text *\npg_read_file_common(text *filename_t, int64 seek_offset, int64
      bytes_to_read,\n\t\t\t\t\tbool read_to_eof, bool missing_ok)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/genfile.c:265,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:267,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:269,1
    - Dst: read_binary_file
      Src: /src/postgres/src/backend/utils/adt/genfile.c:271,1
    - Dst: convert_and_check_filename
      Src: /src/postgres/src/backend/utils/adt/genfile.c:271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - filename_t
    - seek_offset
    - bytes_to_read
    - read_to_eof
    - missing_ok
    argTypes:
    - text*
    - int64
    - int64
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 259
    functionDepth: 5
    functionLinenumber: 259
    functionLinenumberEnd: 273
    functionName: pg_read_binary_file_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - convert_and_check_filename
    - read_binary_file
    - errmsg
    linkageType: ''
    returnType: bytea
    signature: "bytea *\npg_read_binary_file_common(text *filename_t,\n\t\t\t\t\t\t
      \  int64 seek_offset, int64 bytes_to_read,\n\t\t\t\t\t\t   bool read_to_eof,
      bool missing_ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:287,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/genfile.c:288,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/genfile.c:289,1
    - Dst: pg_read_file_common
      Src: /src/postgres/src/backend/utils/adt/genfile.c:292,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:295,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/genfile.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 284
    functionDepth: 6
    functionLinenumber: 284
    functionLinenumberEnd: 298
    functionName: pg_read_file_off_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_read_file_common
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_read_file_off_len(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:303,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/genfile.c:304,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/genfile.c:305,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:306,1
    - Dst: pg_read_file_common
      Src: /src/postgres/src/backend/utils/adt/genfile.c:309,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:313,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/genfile.c:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 300
    functionDepth: 6
    functionLinenumber: 300
    functionLinenumberEnd: 316
    functionName: pg_read_file_off_len_missing
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - pg_read_file_common
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_read_file_off_len_missing(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:321,1
    - Dst: pg_read_file_common
      Src: /src/postgres/src/backend/utils/adt/genfile.c:324,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:327,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/genfile.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 318
    functionDepth: 6
    functionLinenumber: 318
    functionLinenumberEnd: 330
    functionName: pg_read_file_all
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - pg_read_file_common
    - PG_RETURN_TEXT_P
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_read_file_all(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:335,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:336,1
    - Dst: pg_read_file_common
      Src: /src/postgres/src/backend/utils/adt/genfile.c:339,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:342,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/genfile.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 332
    functionDepth: 6
    functionLinenumber: 332
    functionLinenumberEnd: 345
    functionName: pg_read_file_all_missing
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_RETURN_TEXT_P
    - pg_read_file_common
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_read_file_all_missing(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:350,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/genfile.c:351,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/genfile.c:352,1
    - Dst: pg_read_binary_file_common
      Src: /src/postgres/src/backend/utils/adt/genfile.c:355,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:358,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/genfile.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 347
    functionDepth: 6
    functionLinenumber: 347
    functionLinenumberEnd: 361
    functionName: pg_read_binary_file_off_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_read_binary_file_common
    - PG_RETURN_BYTEA_P
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_read_binary_file_off_len(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:366,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/genfile.c:367,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/genfile.c:368,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:369,1
    - Dst: pg_read_binary_file_common
      Src: /src/postgres/src/backend/utils/adt/genfile.c:372,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:375,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/genfile.c:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 363
    functionDepth: 6
    functionLinenumber: 363
    functionLinenumberEnd: 378
    functionName: pg_read_binary_file_off_len_missing
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_read_binary_file_common
    - PG_GETARG_BOOL
    - PG_RETURN_BYTEA_P
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_read_binary_file_off_len_missing(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:383,1
    - Dst: pg_read_binary_file_common
      Src: /src/postgres/src/backend/utils/adt/genfile.c:386,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:389,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/genfile.c:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 380
    functionDepth: 6
    functionLinenumber: 380
    functionLinenumberEnd: 392
    functionName: pg_read_binary_file_all
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - pg_read_binary_file_common
    - PG_RETURN_BYTEA_P
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_read_binary_file_all(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:397,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:398,1
    - Dst: pg_read_binary_file_common
      Src: /src/postgres/src/backend/utils/adt/genfile.c:401,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:404,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/genfile.c:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 394
    functionDepth: 6
    functionLinenumber: 394
    functionLinenumberEnd: 407
    functionName: pg_read_binary_file_all_missing
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_read_binary_file_common
    - PG_GETARG_BOOL
    - PG_RETURN_BYTEA_P
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_read_binary_file_all_missing(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:415,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/genfile.c:425,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:426,1
    - Dst: convert_and_check_filename
      Src: /src/postgres/src/backend/utils/adt/genfile.c:428,1
    - Dst: stat
      Src: /src/postgres/src/backend/utils/adt/genfile.c:430,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:433,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:435,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/genfile.c:436,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:437,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/utils/adt/genfile.c:444,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/genfile.c:445,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/genfile.c:447,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/genfile.c:449,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/genfile.c:451,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/genfile.c:453,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/genfile.c:455,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/utils/adt/genfile.c:457,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/utils/adt/genfile.c:458,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/genfile.c:460,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:462,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:463,1
    - Dst: time_t_to_timestamptz
      Src: /src/postgres/src/backend/utils/adt/genfile.c:463,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:464,1
    - Dst: time_t_to_timestamptz
      Src: /src/postgres/src/backend/utils/adt/genfile.c:464,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:467,1
    - Dst: time_t_to_timestamptz
      Src: /src/postgres/src/backend/utils/adt/genfile.c:467,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:471,1
    - Dst: time_t_to_timestamptz
      Src: /src/postgres/src/backend/utils/adt/genfile.c:471,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:473,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/utils/adt/genfile.c:473,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/genfile.c:475,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/genfile.c:477,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/genfile.c:479,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:479,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 412
    functionDepth: 6
    functionLinenumber: 412
    functionLinenumberEnd: 480
    functionName: pg_stat_file
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - convert_and_check_filename
    - time_t_to_timestamptz
    - pfree
    - TupleDescFinalize
    - PG_RETURN_DATUM
    - errmsg
    - S_ISDIR
    - TupleDescInitEntry
    - CreateTemplateTupleDesc
    - ereport
    - memset
    - BlessTupleDesc
    - TimestampTzGetDatum
    - Int64GetDatum
    - errcode_for_file_access
    - PG_NARGS
    - PG_GETARG_BOOL
    - stat
    - HeapTupleGetDatum
    - PG_RETURN_NULL
    - BoolGetDatum
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stat_file(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_stat_file
      Src: /src/postgres/src/backend/utils/adt/genfile.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 489
    functionDepth: 7
    functionLinenumber: 489
    functionLinenumberEnd: 493
    functionName: pg_stat_file_1arg
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_stat_file
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stat_file_1arg(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: convert_and_check_filename
      Src: /src/postgres/src/backend/utils/adt/genfile.c:508,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:508,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/genfile.c:511,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:513,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:514,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:515,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:516,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/genfile.c:519,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:521,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:530,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/genfile.c:536,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/genfile.c:537,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:540,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/genfile.c:543,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:547,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 498
    functionDepth: 7
    functionLinenumber: 498
    functionLinenumberEnd: 549
    functionName: pg_ls_dir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - PG_GETARG_BOOL
    - InitMaterializedSRF
    - strcmp
    - AllocateDir
    - tuplestore_putvalues
    - FreeDir
    - convert_and_check_filename
    - CStringGetTextDatum
    - ReadDir
    - PG_ARGISNULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_dir(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ls_dir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 558
    functionDepth: 8
    functionLinenumber: 558
    functionLinenumberEnd: 562
    functionName: pg_ls_dir_1arg
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_ls_dir
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_dir_1arg(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/genfile.c:577,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:584,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:593,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/genfile.c:605,1
    - Dst: stat
      Src: /src/postgres/src/backend/utils/adt/genfile.c:606,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:611,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/genfile.c:612,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:613,1
    - Dst: S_ISREG
      Src: /src/postgres/src/backend/utils/adt/genfile.c:617,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:620,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:621,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:622,1
    - Dst: time_t_to_timestamptz
      Src: /src/postgres/src/backend/utils/adt/genfile.c:622,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/genfile.c:623,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/genfile.c:625,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:628,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 3
    argNames:
    - fcinfo
    - dir
    - missing_ok
    argTypes:
    - FunctionCallInfo
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 570
    functionDepth: 7
    functionLinenumber: 570
    functionLinenumberEnd: 630
    functionName: pg_ls_dir_files
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - S_ISREG
    - time_t_to_timestamptz
    - InitMaterializedSRF
    - AllocateDir
    - tuplestore_putvalues
    - stat
    - ereport
    - FreeDir
    - CStringGetTextDatum
    - errmsg
    - memset
    - ReadDir
    - TimestampTzGetDatum
    - Int64GetDatum
    - errcode_for_file_access
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_dir_files(FunctionCallInfo fcinfo, const char *dir, bool
      missing_ok)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 633
    functionDepth: 8
    functionLinenumber: 633
    functionLinenumberEnd: 637
    functionName: pg_ls_logdir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_ls_dir_files
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_logdir(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 640
    functionDepth: 8
    functionLinenumber: 640
    functionLinenumberEnd: 644
    functionName: pg_ls_waldir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_ls_dir_files
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_waldir(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/utils/adt/genfile.c:654,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:654,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:655,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:656,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:657,1
    - Dst: TempTablespacePath
      Src: /src/postgres/src/backend/utils/adt/genfile.c:660,1
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:661,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - fcinfo
    - tblspc
    argTypes:
    - FunctionCallInfo
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 649
    functionDepth: 8
    functionLinenumber: 649
    functionLinenumberEnd: 662
    functionName: pg_ls_tmpdir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - errcode
    - pg_ls_dir_files
    - ereport
    - errmsg
    - ObjectIdGetDatum
    - TempTablespacePath
    - SearchSysCacheExists1
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_tmpdir(FunctionCallInfo fcinfo, Oid tblspc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ls_tmpdir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 668
    functionDepth: 9
    functionLinenumber: 668
    functionLinenumberEnd: 672
    functionName: pg_ls_tmpdir_noargs
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_ls_tmpdir
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_tmpdir_noargs(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ls_tmpdir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:681,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/genfile.c:681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 678
    functionDepth: 9
    functionLinenumber: 678
    functionLinenumberEnd: 682
    functionName: pg_ls_tmpdir_1arg
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_ls_tmpdir
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_tmpdir_1arg(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 687
    functionDepth: 8
    functionLinenumber: 687
    functionLinenumberEnd: 691
    functionName: pg_ls_archive_statusdir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_ls_dir_files
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_archive_statusdir(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 696
    functionDepth: 8
    functionLinenumber: 696
    functionLinenumberEnd: 700
    functionName: pg_ls_summariesdir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_ls_dir_files
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_summariesdir(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 706
    functionDepth: 8
    functionLinenumber: 706
    functionLinenumberEnd: 710
    functionName: pg_ls_logicalsnapdir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_ls_dir_files
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_logicalsnapdir(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 716
    functionDepth: 8
    functionLinenumber: 716
    functionLinenumberEnd: 720
    functionName: pg_ls_logicalmapdir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - pg_ls_dir_files
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_logicalmapdir(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:733,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/genfile.c:735,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/utils/adt/genfile.c:737,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:738,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:739,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:740,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/genfile.c:743,1
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 726
    functionDepth: 8
    functionLinenumber: 726
    functionLinenumberEnd: 746
    functionName: pg_ls_replslotdir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - errcode
    - pg_ls_dir_files
    - ereport
    - SearchNamedReplicationSlot
    - snprintf
    - text_to_cstring
    - errmsg
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ls_replslotdir(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:40,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:40,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:43,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:44,1
    - Dst: RELKIND_HAS_PARTITIONS
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 51
    functionName: check_rel_can_be_partition
    functionSourceFile: /src/postgres/src/backend/utils/adt/partitionfuncs.c
    functionUses: 0
    functionsReached:
    - get_rel_relispartition
    - RELKIND_HAS_PARTITIONS
    - get_rel_relkind
    - ObjectIdGetDatum
    - SearchSysCacheExists1
    linkageType: ''
    returnType: bool
    signature: bool check_rel_can_be_partition(Oid relid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:65,1
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:70,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:76,1
    - Dst: check_rel_can_be_partition
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:78,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:79,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:82,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:88,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:90,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:91,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:97,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:101,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:104,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:111,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:112,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:114,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:122,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:126,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:127,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:128,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:133,1
    - Dst: RELKIND_HAS_PARTITIONS
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:133,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:141,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:145,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:147,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:148,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:149,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:153,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 61
    functionDepth: 7
    functionLinenumber: 61
    functionLinenumberEnd: 154
    functionName: pg_partition_tree
    functionSourceFile: /src/postgres/src/backend/utils/adt/partitionfuncs.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - heap_form_tuple
    - SRF_RETURN_DONE
    - lfirst_oid
    - elog
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - Int32GetDatum
    - linitial_oid
    - get_rel_relkind
    - RELKIND_HAS_PARTITIONS
    - list_length
    - OidIsValid
    - ObjectIdGetDatum
    - get_call_result_type
    - SRF_PERCALL_SETUP
    - get_partition_ancestors
    - find_all_inheritors
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - PG_GETARG_OID
    - check_rel_can_be_partition
    - BoolGetDatum
    - list_nth_oid
    linkageType: ''
    returnType: Datum
    signature: Datum pg_partition_tree(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/partitionfuncs.c
    functionUses: 472
    functionsReached:
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, ancestors)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:166,1
    - Dst: check_rel_can_be_partition
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:170,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:171,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:174,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:181,1
    - Dst: llast_oid
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:183,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:190,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:190,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 163
    functionDepth: 4
    functionLinenumber: 163
    functionLinenumberEnd: 192
    functionName: pg_partition_root
    functionSourceFile: /src/postgres/src/backend/utils/adt/partitionfuncs.c
    functionUses: 0
    functionsReached:
    - list_free
    - llast_oid
    - Assert
    - OidIsValid
    - PG_RETURN_OID
    - PG_GETARG_OID
    - check_rel_can_be_partition
    - PG_RETURN_NULL
    - get_partition_ancestors
    linkageType: ''
    returnType: Datum
    signature: Datum pg_partition_root(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:203,1
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:207,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:211,1
    - Dst: check_rel_can_be_partition
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:213,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:214,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:216,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:218,1
    - Dst: lcons_oid
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:219,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:224,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:227,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:230,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:232,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:234,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:234,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/partitionfuncs.c:237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 200
    functionDepth: 6
    functionLinenumber: 200
    functionLinenumberEnd: 238
    functionName: pg_partition_ancestors
    functionSourceFile: /src/postgres/src/backend/utils/adt/partitionfuncs.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - lcons_oid
    - list_length
    - MemoryContextSwitchTo
    - PG_GETARG_OID
    - check_rel_can_be_partition
    - SRF_RETURN_DONE
    - ObjectIdGetDatum
    - get_partition_ancestors
    - list_nth_oid
    linkageType: ''
    returnType: Datum
    signature: Datum pg_partition_ancestors(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/backend/utils/adt/acl.c:150,1
    - Dst: isalnum
      Src: /src/postgres/src/backend/utils/adt/acl.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - c
    - is_getid
    argTypes:
    - unsigned char
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 153
    functionName: is_safe_acl_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - isalnum
    linkageType: ''
    returnType: bool
    signature: bool is_safe_acl_char(unsigned char c, bool is_getid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:176,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:178,1
    - Dst: is_safe_acl_char
      Src: /src/postgres/src/backend/utils/adt/acl.c:182,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:204,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:205,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:206,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/acl.c:207,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:213,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 3
    argNames:
    - s
    - n
    - escontext
    argTypes:
    - char*
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 216
    functionName: getid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - is_safe_acl_char
    - errcode
    - Assert
    - isspace
    - errmsg
    - errdetail
    - ereturn
    linkageType: ''
    returnType: char
    signature: 'char *

      getid(const char *s, char *n, Node *escontext)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_safe_acl_char
      Src: /src/postgres/src/backend/utils/adt/acl.c:232,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - p
    - s
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 250
    functionName: putid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - is_safe_acl_char
    linkageType: ''
    returnType: void
    signature: void putid(char *p, const char *s)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:287,1
    - Dst: getid
      Src: /src/postgres/src/backend/utils/adt/acl.c:289,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/acl.c:295,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/acl.c:295,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:296,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:297,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:298,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/acl.c:299,1
    - Dst: getid
      Src: /src/postgres/src/backend/utils/adt/acl.c:301,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:305,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:306,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:307,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/acl.c:308,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:312,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:313,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:314,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/acl.c:318,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:371,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:373,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/acl.c:384,1
    - Dst: boot_get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:385,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:387,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:388,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:389,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:390,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:391,1
    - Dst: getid
      Src: /src/postgres/src/backend/utils/adt/acl.c:401,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:405,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:406,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:407,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/acl.c:408,1
    - Dst: boot_get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:409,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:411,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:412,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:413,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:414,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:415,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/acl.c:420,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:421,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:422,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:423,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:427,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 98
    argCount: 3
    argNames:
    - s
    - aip
    - escontext
    argTypes:
    - char*
    - AclItem*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 278
    functionDepth: 3
    functionLinenumber: 278
    functionLinenumberEnd: 430
    functionName: aclparse
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - get_role_oid
    - isalpha
    - strcmp
    - errcode
    - Assert
    - getid
    - ereport
    - ACLITEM_SET_PRIVS_GOPTIONS
    - boot_get_role_oid
    - errhint
    - IsBootstrapProcessingMode
    - errmsg
    - OidIsValid
    - ereturn
    linkageType: ''
    returnType: char
    signature: 'char *

      aclparse(const char *s, AclItem *aip, Node *escontext)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:446,1
    - Dst: ACL_N_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:447,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/acl.c:448,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:449,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/acl.c:453,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/acl.c:454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - n
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 456
    functionName: allocacl
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - elog
    - palloc0
    - ARR_LBOUND
    - SET_VARSIZE
    - ACL_N_SIZE
    - ARR_DIMS
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      allocacl(int n)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 465
    functionName: make_empty_acl
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - allocacl
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      make_empty_acl(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:475,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:475,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:477,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:477,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:478,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - orig_acl
    argTypes:
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 482
    functionName: aclcopy
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 2
    functionsReached:
    - allocacl
    - ACL_NUM
    - ACL_DAT
    - memcpy
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      aclcopy(const Acl *orig_acl)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:495,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:495,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:495,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:497,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:497,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:498,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:499,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:501,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:501,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:501,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:502,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - left_acl
    - right_acl
    argTypes:
    - Acl*
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 490
    functionDepth: 3
    functionLinenumber: 490
    functionLinenumberEnd: 506
    functionName: aclconcat
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - allocacl
    - ACL_NUM
    - ACL_DAT
    - memcpy
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      aclconcat(const Acl *left_acl, const Acl *right_acl)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:523,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:525,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/utils/adt/acl.c:528,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:532,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/utils/adt/acl.c:533,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/utils/adt/acl.c:537,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:539,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:540,1
    - Dst: aclupdate
      Src: /src/postgres/src/backend/utils/adt/acl.c:546,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:548,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - left_acl
    - right_acl
    - ownerId
    argTypes:
    - Acl*
    - Acl*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 514
    functionDepth: 4
    functionLinenumber: 514
    functionLinenumberEnd: 553
    functionName: aclmerge
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - aclcopy
    - pfree
    - ACL_NUM
    - ACL_DAT
    - aclupdate
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      aclmerge(const Acl *left_acl, const Acl *right_acl, Oid ownerId)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:561,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/acl.c:562,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:562,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - acl
    argTypes:
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 563
    functionName: aclitemsort
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 2
    functionsReached:
    - qsort
    - ACL_NUM
    - ACL_DAT
    linkageType: ''
    returnType: void
    signature: void aclitemsort(Acl *acl)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:576,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:578,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:585,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:589,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:589,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/acl.c:592,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:592,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:593,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:594,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - left_acl
    - right_acl
    argTypes:
    - Acl*
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 598
    functionName: aclequal
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - ACL_NUM
    - memcmp
    - ACL_DAT
    linkageType: ''
    returnType: bool
    signature: bool aclequal(const Acl *left_acl, const Acl *right_acl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/acl.c:606,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:607,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:608,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:609,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/acl.c:610,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:611,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:612,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:613,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:614,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:615,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:617,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - acl
    argTypes:
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 618
    functionName: check_acl
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - ARR_HASNULL
    - ARR_ELEMTYPE
    - ARR_NDIM
    - errmsg
    linkageType: ''
    returnType: void
    signature: void check_acl(const Acl *acl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/acl.c:631,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/acl.c:635,1
    - Dst: aclparse
      Src: /src/postgres/src/backend/utils/adt/acl.c:637,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:639,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:641,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:644,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:645,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:646,1
    - Dst: PG_RETURN_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:648,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 628
    functionDepth: 4
    functionLinenumber: 628
    functionLinenumberEnd: 649
    functionName: aclitemin
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errcode
    - aclparse
    - PG_GETARG_CSTRING
    - isspace
    - errmsg
    - palloc_object
    - PG_RETURN_NULL
    - ereturn
    - PG_RETURN_ACLITEM_P
    linkageType: ''
    returnType: Datum
    signature: Datum aclitemin(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:666,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/acl.c:672,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/acl.c:672,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/acl.c:682,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:683,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:683,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:686,1
    - Dst: putid
      Src: /src/postgres/src/backend/utils/adt/acl.c:688,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:688,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:688,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:689,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/acl.c:694,1
    - Dst: ACLITEM_GET_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:704,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/utils/adt/acl.c:704,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:706,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/utils/adt/acl.c:706,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/acl.c:713,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:714,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:714,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:717,1
    - Dst: putid
      Src: /src/postgres/src/backend/utils/adt/acl.c:719,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:719,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:719,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:720,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/acl.c:725,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/acl.c:728,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 663
    functionDepth: 3
    functionLinenumber: 663
    functionLinenumberEnd: 729
    functionName: aclitemout
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - ACLITEM_GET_GOPTIONS
    - HeapTupleIsValid
    - PG_RETURN_CSTRING
    - ReleaseSysCache
    - PG_GETARG_ACLITEM_P
    - IsBootstrapProcessingMode
    - strlen
    - NameStr
    - palloc
    - putid
    - GETSTRUCT
    - ObjectIdGetDatum
    - ACLITEM_GET_PRIVS
    - UINT64CONST
    - sprintf
    linkageType: ''
    returnType: Datum
    signature: Datum aclitemout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - a1
    - a2
    argTypes:
    - AclItem*
    - AclItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 736
    functionDepth: 0
    functionLinenumber: 736
    functionLinenumberEnd: 741
    functionName: aclitem_match
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool aclitem_match(const AclItem *a1, const AclItem *a2)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 747
    functionDepth: 0
    functionLinenumber: 747
    functionLinenumberEnd: 766
    functionName: aclitemComparator
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int aclitemComparator(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:774,1
    - Dst: PG_GETARG_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:775,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:781,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 782
    functionName: aclitem_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_ACLITEM_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum aclitem_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:794,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/utils/adt/acl.c:797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 791
    functionDepth: 1
    functionLinenumber: 791
    functionLinenumberEnd: 798
    functionName: hash_aclitem
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_UINT32
    - PG_GETARG_ACLITEM_P
    linkageType: ''
    returnType: Datum
    signature: Datum hash_aclitem(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:808,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/acl.c:809,1
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:812,1
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/utils/adt/acl.c:812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 805
    functionDepth: 2
    functionLinenumber: 805
    functionLinenumberEnd: 813
    functionName: hash_aclitem_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - UInt64GetDatum
    - PG_GETARG_ACLITEM_P
    - hash_uint32_extended
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hash_aclitem_extended(PG_FUNCTION_ARGS)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:899,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:911,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:912,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:918,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:936,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 84
    argCount: 2
    argNames:
    - objtype
    - ownerId
    argTypes:
    - ObjectType
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 826
    functionDepth: 3
    functionLinenumber: 826
    functionLinenumberEnd: 940
    functionName: acldefault
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 14
    functionsReached:
    - elog
    - allocacl
    - ACL_DAT
    - ACLITEM_SET_PRIVS_GOPTIONS
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      acldefault(ObjectType objtype, Oid ownerId)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/utils/adt/acl.c:950,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:951,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:999,1
    - Dst: PG_RETURN_ACL_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:1002,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/utils/adt/acl.c:1002,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 947
    functionDepth: 4
    functionLinenumber: 947
    functionLinenumberEnd: 1003
    functionName: acldefault_sql
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_ACL_P
    - acldefault
    - PG_GETARG_CHAR
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum acldefault_sql(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1037,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1041,1
    - Dst: check_circularity
      Src: /src/postgres/src/backend/utils/adt/acl.c:1042,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1044,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1045,1
    - Dst: aclitem_match
      Src: /src/postgres/src/backend/utils/adt/acl.c:1056,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1059,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1060,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:1061,1
    - Dst: ACL_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1061,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1069,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1070,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:1071,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1076,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1081,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1082,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1088,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1089,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1092,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1093,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1096,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1097,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1101,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1102,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/acl.c:1109,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1113,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1114,1
    - Dst: ACL_N_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:1123,1
    - Dst: recursive_revoke
      Src: /src/postgres/src/backend/utils/adt/acl.c:1124,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 5
    argNames:
    - old_acl
    - mod_aip
    - modechg
    - ownerId
    - behavior
    argTypes:
    - Acl*
    - AclItem*
    - int
    - Oid
    - DropBehavior
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1022
    functionDepth: 3
    functionLinenumber: 1022
    functionLinenumberEnd: 1130
    functionName: aclupdate
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - ACLITEM_GET_GOPTIONS
    - ACL_N_SIZE
    - memcpy
    - check_circularity
    - ACL_NUM
    - allocacl
    - Assert
    - memmove
    - ACL_SIZE
    - ACLITEM_SET_PRIVS_GOPTIONS
    - ACL_DAT
    - recursive_revoke
    - SET_VARSIZE
    - ACLITEM_GET_RIGHTS
    - check_acl
    - ACLITEM_SET_RIGHTS
    - aclitem_match
    - ARR_DIMS
    linkageType: ''
    returnType: Acl
    signature: "Acl *\naclupdate(const Acl *old_acl, const AclItem *mod_aip,\n\t\t
      \ int modechg, Oid ownerId, DropBehavior behavior)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1164,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1171,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1172,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1173,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1174,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:1175,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1210,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1216,1
    - Dst: aclitem_match
      Src: /src/postgres/src/backend/utils/adt/acl.c:1218,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1220,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1221,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1222,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1224,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1232,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1233,1
    - Dst: ACL_N_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1233,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 3
    argNames:
    - old_acl
    - oldOwnerId
    - newOwnerId
    argTypes:
    - Acl*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1149
    functionDepth: 3
    functionLinenumber: 1149
    functionLinenumberEnd: 1237
    functionName: aclnewowner
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - ACL_N_SIZE
    - memcpy
    - ACL_NUM
    - allocacl
    - ACL_DAT
    - SET_VARSIZE
    - ACLITEM_GET_RIGHTS
    - check_acl
    - ACLITEM_SET_RIGHTS
    - aclitem_match
    - ARR_DIMS
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      aclnewowner(const Acl *old_acl, Oid oldOwnerId, Oid newOwnerId)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1262,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:1268,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1275,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1275,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:1276,1
    - Dst: ACL_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1276,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1280,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1281,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1285,1
    - Dst: aclupdate
      Src: /src/postgres/src/backend/utils/adt/acl.c:1290,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:1293,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/utils/adt/acl.c:1301,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:1304,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1304,1
    - Dst: ACL_OPTION_TO_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1306,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1308,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:1309,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1310,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1311,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:1313,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - old_acl
    - mod_aip
    - ownerId
    argTypes:
    - Acl*
    - AclItem*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1252
    functionDepth: 4
    functionLinenumber: 1252
    functionLinenumberEnd: 1314
    functionName: check_circularity
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - ACLITEM_GET_GOPTIONS
    - ACL_GRANT_OPTION_FOR
    - memcpy
    - errcode
    - Assert
    - allocacl
    - ACL_NUM
    - pfree
    - ereport
    - ACL_SIZE
    - ACL_DAT
    - aclupdate
    - errmsg
    - aclmask
    - check_acl
    - ACL_OPTION_TO_PRIVS
    linkageType: ''
    returnType: void
    signature: "void check_circularity(const Acl *old_acl, const AclItem *mod_aip,\n\t\t\t\t
      \ Oid ownerId)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1344,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/utils/adt/acl.c:1351,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:1352,1
    - Dst: ACL_OPTION_TO_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1354,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1359,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1360,1
    - Dst: ACLITEM_GET_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1364,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:1370,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1371,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1372,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/acl.c:1373,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1377,1
    - Dst: aclupdate
      Src: /src/postgres/src/backend/utils/adt/acl.c:1381,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:1384,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 5
    argNames:
    - acl
    - grantee
    - revoke_privs
    - ownerId
    - behavior
    argTypes:
    - Acl*
    - Oid
    - AclMode
    - Oid
    - DropBehavior
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1332
    functionDepth: 4
    functionLinenumber: 1332
    functionLinenumberEnd: 1392
    functionName: recursive_revoke
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - errcode
    - pfree
    - ACL_NUM
    - ereport
    - ACLITEM_SET_PRIVS_GOPTIONS
    - ACL_DAT
    - errhint
    - ACLITEM_GET_PRIVS
    - errmsg
    - aclmask
    - aclupdate
    - check_acl
    - ACL_OPTION_TO_PRIVS
    linkageType: ''
    returnType: Acl
    signature: "Acl *\nrecursive_revoke(Acl *acl,\n\t\t\t\t Oid grantee,\n\t\t\t\t
      AclMode revoke_privs,\n\t\t\t\t Oid ownerId,\n\t\t\t\t DropBehavior behavior)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:1433,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1435,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:1445,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1452,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1453,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:1488,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 33
    argCount: 5
    argNames:
    - acl
    - roleid
    - ownerId
    - mask
    - how
    argTypes:
    - Acl*
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1418
    functionDepth: 3
    functionLinenumber: 1418
    functionLinenumberEnd: 1498
    functionName: aclmask
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 15
    functionsReached:
    - elog
    - has_privs_of_role
    - ACL_NUM
    - ACL_DAT
    - check_acl
    linkageType: ''
    returnType: AclMode
    signature: "AclMode aclmask(const Acl *acl, Oid roleid, Oid ownerId,\n\t\tAclMode
      mask, AclMaskHow how)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:1521,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1523,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1540,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1541,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 5
    argNames:
    - acl
    - roleid
    - ownerId
    - mask
    - how
    argTypes:
    - Acl*
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1507
    functionDepth: 3
    functionLinenumber: 1507
    functionLinenumberEnd: 1559
    functionName: aclmask_direct
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - elog
    - ACL_NUM
    - ACL_DAT
    - check_acl
    linkageType: ''
    returnType: AclMode
    signature: "AclMode aclmask_direct(const Acl *acl, Oid roleid, Oid ownerId,\n\t\t\t
      \  AclMode mask, AclMaskHow how)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1578,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1584,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/acl.c:1587,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1587,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1588,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1594,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/acl.c:1606,1
    - Dst: qunique
      Src: /src/postgres/src/backend/utils/adt/acl.c:1615,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - acl
    - roleids
    argTypes:
    - Acl*
    - Oid**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1570
    functionDepth: 3
    functionLinenumber: 1570
    functionLinenumberEnd: 1616
    functionName: aclmembers
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 10
    functionsReached:
    - qsort
    - qunique
    - ACL_NUM
    - ACL_DAT
    - palloc
    - check_acl
    linkageType: ''
    returnType: int
    signature: int aclmembers(const Acl *acl, Oid **roleids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:1625,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1626,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1627,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1630
      start: 1622
    functionDepth: 2
    functionLinenumber: 1622
    functionLinenumberEnd: 1630
    functionName: aclinsert
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum aclinsert(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:1635,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1636,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1637,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1632
    functionDepth: 2
    functionLinenumber: 1632
    functionLinenumberEnd: 1640
    functionName: aclremove
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum aclremove(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ACL_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:1645,1
    - Dst: PG_GETARG_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:1646,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1651,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1652,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1653,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1658,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1658,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1658,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1659,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1661,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1662
      start: 1642
    functionDepth: 3
    functionLinenumber: 1642
    functionLinenumberEnd: 1662
    functionName: aclcontains
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - ACL_NUM
    - PG_GETARG_ACL_P
    - ACL_DAT
    - PG_GETARG_ACLITEM_P
    - PG_RETURN_BOOL
    - ACLITEM_GET_RIGHTS
    - check_acl
    linkageType: ''
    returnType: Datum
    signature: Datum aclcontains(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:1667,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:1668,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1669,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1670,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1693,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/acl.c:1695,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1700,1
    - Dst: PG_RETURN_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:1703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1664
    functionDepth: 1
    functionLinenumber: 1664
    functionLinenumberEnd: 1704
    functionName: makeaclitem
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - ACLITEM_SET_PRIVS_GOPTIONS
    - convert_any_priv_string
    - PG_GETARG_OID
    - palloc_object
    - PG_RETURN_ACLITEM_P
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum makeaclitem(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:1721,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/acl.c:1732,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:1737,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/acl.c:1739,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:1740,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/acl.c:1747,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:1754,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1755,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1756,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:1759,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - priv_type_text
    - privileges
    argTypes:
    - text*
    - priv_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1716
    functionDepth: 2
    functionLinenumber: 1716
    functionLinenumberEnd: 1761
    functionName: convert_any_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    - strchr
    - errcode
    - pfree
    - isspace
    - ereport
    - strlen
    - text_to_cstring
    - errmsg
    linkageType: ''
    returnType: AclMode
    signature: "AclMode convert_any_priv_string(text *priv_type_text,\n\t\t\t\t\t\tconst
      priv_map *privileges)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:1800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 1
    argNames:
    - aclright
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1764
    functionDepth: 1
    functionLinenumber: 1764
    functionLinenumberEnd: 1803
    functionName: convert_aclright_to_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: char
    signature: 'char *

      convert_aclright_to_string(int aclright)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ACL_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:1823,1
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1828,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1833,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1835,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/acl.c:1836,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/utils/adt/acl.c:1842,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/acl.c:1843,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/acl.c:1845,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/acl.c:1847,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/acl.c:1849,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/utils/adt/acl.c:1852,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/utils/adt/acl.c:1853,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/acl.c:1856,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/acl.c:1861,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1864,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1866,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1869,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1879,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/utils/adt/acl.c:1883,1
    - Dst: ACLITEM_GET_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1885,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1892,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1893,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1894,1
    - Dst: convert_aclright_to_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1894,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1895,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1895,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/acl.c:1897,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1898,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1900,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1904,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1820
    functionDepth: 6
    functionLinenumber: 1820
    functionLinenumberEnd: 1905
    functionName: aclexplode
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - ACLITEM_GET_GOPTIONS
    - ACL_NUM
    - heap_form_tuple
    - palloc_array
    - ACL_DAT
    - ACLITEM_GET_PRIVS
    - SRF_RETURN_DONE
    - UINT64CONST
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - TupleDescFinalize
    - PG_GETARG_ACL_P
    - ObjectIdGetDatum
    - TupleDescInitEntry
    - CreateTemplateTupleDesc
    - SRF_PERCALL_SETUP
    - BlessTupleDesc
    - check_acl
    - convert_aclright_to_string
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - CStringGetTextDatum
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum aclexplode(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:1928,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1929,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1930,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:1936,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:1936,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:1937,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1938,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:1940,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1925
    functionDepth: 2
    functionLinenumber: 1925
    functionLinenumberEnd: 1943
    functionName: has_table_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_priv_string
    - PG_GETARG_NAME
    - convert_table_name
    - pg_class_aclcheck
    - NameStr
    - PG_RETURN_BOOL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_table_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1954,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1955,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:1961,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:1962,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1963,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:1965,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1951
    functionDepth: 2
    functionLinenumber: 1951
    functionLinenumberEnd: 1968
    functionName: has_table_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_priv_string
    - GetUserId
    - pg_class_aclcheck
    - convert_table_name
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_table_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:1978,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:1979,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1980,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:1986,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:1986,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1987,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:1989,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1992,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1994,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1975
    functionDepth: 3
    functionLinenumber: 1975
    functionLinenumberEnd: 1995
    functionName: has_table_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_priv_string
    - PG_GETARG_NAME
    - pg_class_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_table_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2006,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2007,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2013,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2014,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2016,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2019,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2021,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 2003
    functionDepth: 3
    functionLinenumber: 2003
    functionLinenumberEnd: 2022
    functionName: has_table_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_priv_string
    - GetUserId
    - pg_class_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_table_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2032,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2033,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2034,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2039,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2040,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2042,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2045
      start: 2029
    functionDepth: 2
    functionLinenumber: 2029
    functionLinenumberEnd: 2045
    functionName: has_table_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_priv_string
    - pg_class_aclcheck
    - convert_table_name
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_table_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2055,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2056,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2057,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2062,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2064,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2067,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2069,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2052
    functionDepth: 3
    functionLinenumber: 2052
    functionLinenumberEnd: 2070
    functionName: has_table_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_priv_string
    - pg_class_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_table_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/utils/adt/acl.c:2084,1
    - Dst: textToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/acl.c:2084,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/utils/adt/acl.c:2087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tablename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 2079
    functionDepth: 3
    functionLinenumber: 2079
    functionLinenumberEnd: 2088
    functionName: convert_table_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - textToQualifiedNameList
    - makeRangeVarFromNameList
    - RangeVarGetRelid
    linkageType: ''
    returnType: Oid
    signature: Oid convert_table_name(text *tablename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2099,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2101,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2103,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2105,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2107,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2109,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2111,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2113,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2118
      start: 2094
    functionDepth: 3
    functionLinenumber: 2094
    functionLinenumberEnd: 2118
    functionName: convert_table_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_table_priv_string(text *priv_type_text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:2139,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2140,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2141,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2147,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2147,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2148,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2149,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2150,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2151,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2152,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2153,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:2154,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2156,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 2136
    functionDepth: 4
    functionLinenumber: 2136
    functionLinenumberEnd: 2159
    functionName: has_sequence_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - errcode
    - ereport
    - convert_table_name
    - convert_sequence_priv_string
    - pg_class_aclcheck
    - get_rel_relkind
    - NameStr
    - errmsg
    - text_to_cstring
    - PG_RETURN_BOOL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_sequence_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2170,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2171,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2177,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2178,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2179,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2180,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2181,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2182,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2183,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:2184,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2186,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2167
    functionDepth: 4
    functionLinenumber: 2167
    functionLinenumberEnd: 2189
    functionName: has_sequence_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - ereport
    - convert_table_name
    - convert_sequence_priv_string
    - pg_class_aclcheck
    - get_rel_relkind
    - errmsg
    - text_to_cstring
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_sequence_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:2199,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2200,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2201,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2208,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2208,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2209,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2210,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2212,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2214,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2216,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2217,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2219,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2222,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2196
    functionDepth: 3
    functionLinenumber: 2196
    functionLinenumberEnd: 2225
    functionName: has_sequence_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - errcode
    - pg_class_aclcheck_ext
    - ereport
    - convert_sequence_priv_string
    - get_rel_relkind
    - PG_GETARG_OID
    - NameStr
    - errmsg
    - get_rel_name
    - PG_RETURN_NULL
    - PG_RETURN_BOOL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_sequence_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2236,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2237,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2244,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2245,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2246,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2250,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2252,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2253,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2255,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2258,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2261
      start: 2233
    functionDepth: 3
    functionLinenumber: 2233
    functionLinenumberEnd: 2261
    functionName: has_sequence_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - pg_class_aclcheck_ext
    - ereport
    - convert_sequence_priv_string
    - get_rel_relkind
    - PG_GETARG_OID
    - errmsg
    - get_rel_name
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_sequence_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2271,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2272,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2273,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2278,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2279,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2280,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2281,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2282,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2283,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:2284,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2286,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 2268
    functionDepth: 4
    functionLinenumber: 2268
    functionLinenumberEnd: 2289
    functionName: has_sequence_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - convert_table_name
    - convert_sequence_priv_string
    - pg_class_aclcheck
    - get_rel_relkind
    - PG_GETARG_OID
    - errmsg
    - text_to_cstring
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_sequence_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2299,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2300,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2301,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2307,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2308,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2310,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2312,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2313,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2314,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2315,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2317,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2320,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2296
    functionDepth: 3
    functionLinenumber: 2296
    functionLinenumberEnd: 2323
    functionName: has_sequence_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errcode
    - pg_class_aclcheck_ext
    - ereport
    - convert_sequence_priv_string
    - get_rel_relkind
    - PG_GETARG_OID
    - errmsg
    - get_rel_name
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_sequence_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2334,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2336,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2338,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2343
      start: 2329
    functionDepth: 3
    functionLinenumber: 2329
    functionLinenumberEnd: 2343
    functionName: convert_sequence_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_sequence_priv_string(text *priv_type_text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:2365,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2366,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2367,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2373,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2373,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2374,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2375,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2378,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/utils/adt/acl.c:2380,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2362
    functionDepth: 4
    functionLinenumber: 2362
    functionLinenumberEnd: 2384
    functionName: has_any_column_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - PG_GETARG_NAME
    - convert_table_name
    - pg_class_aclcheck
    - NameStr
    - PG_RETURN_BOOL
    - pg_attribute_aclcheck_all
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_any_column_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2395,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2396,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2402,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2403,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2404,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2407,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/utils/adt/acl.c:2409,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2413
      start: 2392
    functionDepth: 4
    functionLinenumber: 2392
    functionLinenumberEnd: 2413
    functionName: has_any_column_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - GetUserId
    - pg_class_aclcheck
    - convert_table_name
    - PG_RETURN_BOOL
    - pg_attribute_aclcheck_all
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_any_column_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:2423,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2424,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2425,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2431,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2431,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2432,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2435,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2439,1
    - Dst: pg_attribute_aclcheck_all_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2440,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2443,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2446,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2447
      start: 2420
    functionDepth: 3
    functionLinenumber: 2420
    functionLinenumberEnd: 2447
    functionName: has_any_column_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - PG_GETARG_NAME
    - pg_class_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - pg_attribute_aclcheck_all_ext
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_any_column_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2458,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2459,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2465,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2466,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2469,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2473,1
    - Dst: pg_attribute_aclcheck_all_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2474,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2477,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2480,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2481
      start: 2455
    functionDepth: 3
    functionLinenumber: 2455
    functionLinenumberEnd: 2481
    functionName: has_any_column_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - GetUserId
    - pg_class_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - pg_attribute_aclcheck_all_ext
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_any_column_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2491,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2492,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2493,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2498,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2499,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2502,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/utils/adt/acl.c:2504,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2508
      start: 2488
    functionDepth: 4
    functionLinenumber: 2488
    functionLinenumberEnd: 2508
    functionName: has_any_column_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - convert_table_name
    - pg_class_aclcheck
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - pg_attribute_aclcheck_all
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_any_column_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2518,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2519,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2520,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2525,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2528,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2532,1
    - Dst: pg_attribute_aclcheck_all_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2533,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2536,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2539,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2540
      start: 2515
    functionDepth: 3
    functionLinenumber: 2515
    functionLinenumberEnd: 2540
    functionName: has_any_column_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - pg_class_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - pg_attribute_aclcheck_all_ext
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_any_column_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_attribute_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2584,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2592,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - tableoid
    - attnum
    - roleid
    - mode
    argTypes:
    - Oid
    - AttrNumber
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2599
      start: 2566
    functionDepth: 3
    functionLinenumber: 2566
    functionLinenumberEnd: 2599
    functionName: column_privilege_check
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - pg_class_aclcheck_ext
    - pg_attribute_aclcheck_ext
    linkageType: ''
    returnType: int
    signature: "int column_privilege_check(Oid tableoid, AttrNumber attnum,\n\t\t\t\t\t
      \  Oid roleid, AclMode mode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:2609,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2610,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2611,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2612,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2619,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2619,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2620,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2621,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2622,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2624,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2626,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2628
      start: 2606
    functionDepth: 4
    functionLinenumber: 2606
    functionLinenumberEnd: 2628
    functionName: has_column_privilege_name_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - PG_GETARG_NAME
    - column_privilege_check
    - convert_table_name
    - convert_column_name
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_name_name_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:2638,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2639,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2640,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2641,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2647,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2647,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2648,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2649,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2651,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2653,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2654,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2635
    functionDepth: 4
    functionLinenumber: 2635
    functionLinenumberEnd: 2655
    functionName: has_column_privilege_name_name_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - PG_GETARG_NAME
    - column_privilege_check
    - convert_table_name
    - PG_GETARG_INT16
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_name_name_attnum(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:2665,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2666,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2667,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2668,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2674,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2674,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2675,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2676,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2678,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2680,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2681,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2682
      start: 2662
    functionDepth: 4
    functionLinenumber: 2662
    functionLinenumberEnd: 2682
    functionName: has_column_privilege_name_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - PG_GETARG_NAME
    - column_privilege_check
    - convert_column_name
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_name_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:2692,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2693,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2694,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2695,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2700,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2700,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2701,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2703,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2705,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2689
    functionDepth: 4
    functionLinenumber: 2689
    functionLinenumberEnd: 2707
    functionName: has_column_privilege_name_id_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - PG_GETARG_NAME
    - column_privilege_check
    - PG_GETARG_INT16
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_name_id_attnum(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2717,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2718,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2719,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2720,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2726,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2727,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2728,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2730,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2732,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2734
      start: 2714
    functionDepth: 4
    functionLinenumber: 2714
    functionLinenumberEnd: 2734
    functionName: has_column_privilege_id_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - column_privilege_check
    - convert_table_name
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_column_name
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_id_name_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2744,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2745,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2746,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2747,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2752,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2753,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2755,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2757,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2758,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2759
      start: 2741
    functionDepth: 4
    functionLinenumber: 2741
    functionLinenumberEnd: 2759
    functionName: has_column_privilege_id_name_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - column_privilege_check
    - convert_table_name
    - PG_GETARG_INT16
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_id_name_attnum(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2769,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2770,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2771,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2772,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2777,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2778,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2780,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2782,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2783,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2784
      start: 2766
    functionDepth: 4
    functionLinenumber: 2766
    functionLinenumberEnd: 2784
    functionName: has_column_privilege_id_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_column_name
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_id_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2794,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2795,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2796,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2797,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2801,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2803,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2805,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2791
    functionDepth: 4
    functionLinenumber: 2791
    functionLinenumberEnd: 2807
    functionName: has_column_privilege_id_id_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_INT16
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_id_id_attnum(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2818,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2819,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2820,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2827,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2828,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2829,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2830,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2832,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2834,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2836
      start: 2815
    functionDepth: 4
    functionLinenumber: 2815
    functionLinenumberEnd: 2836
    functionName: has_column_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - GetUserId
    - column_privilege_check
    - convert_table_name
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_column_name
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2847,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2848,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2849,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2855,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2856,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2857,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2859,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2861,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2862,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2863
      start: 2844
    functionDepth: 4
    functionLinenumber: 2844
    functionLinenumberEnd: 2863
    functionName: has_column_privilege_name_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - GetUserId
    - column_privilege_check
    - convert_table_name
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_name_attnum(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2874,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2875,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2876,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2882,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2883,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2884,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2886,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2888,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2890
      start: 2871
    functionDepth: 4
    functionLinenumber: 2871
    functionLinenumberEnd: 2890
    functionName: has_column_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - GetUserId
    - column_privilege_check
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_column_name
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2901,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2902,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2903,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2908,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2909,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2911,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2913,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2915
      start: 2898
    functionDepth: 4
    functionLinenumber: 2898
    functionLinenumberEnd: 2915
    functionName: has_column_privilege_id_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - GetUserId
    - column_privilege_check
    - PG_GETARG_INT16
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_column_privilege_id_attnum(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:2933,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/utils/adt/acl.c:2940,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:2941,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:2942,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:2943,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:2947,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:2953,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2957,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2967,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2968,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2969,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:2976,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - tableoid
    - column
    argTypes:
    - Oid
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2978
      start: 2926
    functionDepth: 2
    functionLinenumber: 2926
    functionLinenumberEnd: 2978
    functionName: convert_column_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - errcode
    - HeapTupleIsValid
    - CStringGetDatum
    - pfree
    - ereport
    - ReleaseSysCache
    - get_rel_name
    - text_to_cstring
    - GETSTRUCT
    - errmsg
    - ObjectIdGetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber convert_column_name(Oid tableoid, text *column)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2989,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2991,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2993,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2995,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2999,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3000
      start: 2984
    functionDepth: 3
    functionLinenumber: 2984
    functionLinenumberEnd: 3000
    functionName: convert_column_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 18
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_column_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3021,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3022,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3023,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3029,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3029,1
    - Dst: convert_database_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3030,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3031,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3033,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3036
      start: 3018
    functionDepth: 2
    functionLinenumber: 3018
    functionLinenumberEnd: 3036
    functionName: has_database_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - object_aclcheck
    - NameStr
    - PG_RETURN_BOOL
    - convert_database_name
    - convert_database_priv_string
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_database_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3047,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3048,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3054,1
    - Dst: convert_database_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3055,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3056,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3058,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3061
      start: 3044
    functionDepth: 2
    functionLinenumber: 3044
    functionLinenumberEnd: 3061
    functionName: has_database_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - object_aclcheck
    - PG_RETURN_BOOL
    - convert_database_name
    - convert_database_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_database_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3071,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3072,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3073,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3079,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3079,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3080,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3082,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3087,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3089,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3090
      start: 3068
    functionDepth: 4
    functionLinenumber: 3068
    functionLinenumberEnd: 3090
    functionName: has_database_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - object_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_database_priv_string
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_database_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3101,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3102,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3108,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3109,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3111,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3116,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3119
      start: 3098
    functionDepth: 4
    functionLinenumber: 3098
    functionLinenumberEnd: 3119
    functionName: has_database_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_database_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_database_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3129,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3130,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3131,1
    - Dst: convert_database_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3136,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3137,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3139,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3142
      start: 3126
    functionDepth: 2
    functionLinenumber: 3126
    functionLinenumberEnd: 3142
    functionName: has_database_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - convert_database_name
    - convert_database_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_database_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3152,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3153,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3154,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3159,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3161,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3166,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3169
      start: 3149
    functionDepth: 4
    functionLinenumber: 3149
    functionLinenumberEnd: 3169
    functionName: has_database_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_database_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_database_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:3181,1
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - databasename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3184
      start: 3178
    functionDepth: 1
    functionLinenumber: 3178
    functionLinenumberEnd: 3184
    functionName: convert_database_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - get_database_oid
    - text_to_cstring
    linkageType: ''
    returnType: Oid
    signature: Oid convert_database_name(text *databasename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3195,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3197,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3199,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3201,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3206
      start: 3190
    functionDepth: 3
    functionLinenumber: 3190
    functionLinenumberEnd: 3206
    functionName: convert_database_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_database_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3227,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3228,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3229,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3235,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3235,1
    - Dst: convert_foreign_data_wrapper_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3236,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3237,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3239,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3242
      start: 3224
    functionDepth: 2
    functionLinenumber: 3224
    functionLinenumberEnd: 3242
    functionName: has_foreign_data_wrapper_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - convert_foreign_data_wrapper_name
    - object_aclcheck
    - NameStr
    - PG_RETURN_BOOL
    - convert_foreign_data_wrapper_priv_string
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_foreign_data_wrapper_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3253,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3254,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3260,1
    - Dst: convert_foreign_data_wrapper_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3261,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3262,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3264,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3267
      start: 3250
    functionDepth: 2
    functionLinenumber: 3250
    functionLinenumberEnd: 3267
    functionName: has_foreign_data_wrapper_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - convert_foreign_data_wrapper_name
    - object_aclcheck
    - PG_RETURN_BOOL
    - convert_foreign_data_wrapper_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_foreign_data_wrapper_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3277,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3278,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3279,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3285,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3285,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3286,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3288,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3293,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3296
      start: 3274
    functionDepth: 4
    functionLinenumber: 3274
    functionLinenumberEnd: 3296
    functionName: has_foreign_data_wrapper_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - object_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_foreign_data_wrapper_priv_string
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_foreign_data_wrapper_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3307,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3308,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3314,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3315,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3317,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3322,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3325
      start: 3304
    functionDepth: 4
    functionLinenumber: 3304
    functionLinenumberEnd: 3325
    functionName: has_foreign_data_wrapper_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_foreign_data_wrapper_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_foreign_data_wrapper_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3335,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3336,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3337,1
    - Dst: convert_foreign_data_wrapper_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3342,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3343,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3345,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3348
      start: 3332
    functionDepth: 2
    functionLinenumber: 3332
    functionLinenumberEnd: 3348
    functionName: has_foreign_data_wrapper_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_foreign_data_wrapper_name
    - object_aclcheck
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - convert_foreign_data_wrapper_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_foreign_data_wrapper_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3358,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3359,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3360,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3365,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3367,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3372,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3375
      start: 3355
    functionDepth: 4
    functionLinenumber: 3355
    functionLinenumberEnd: 3375
    functionName: has_foreign_data_wrapper_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_foreign_data_wrapper_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_foreign_data_wrapper_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:3387,1
    - Dst: get_foreign_data_wrapper_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fdwname
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3390
      start: 3384
    functionDepth: 3
    functionLinenumber: 3384
    functionLinenumberEnd: 3390
    functionName: convert_foreign_data_wrapper_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - get_foreign_data_wrapper_oid
    - text_to_cstring
    linkageType: ''
    returnType: Oid
    signature: Oid convert_foreign_data_wrapper_name(text *fdwname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3401,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3406
      start: 3396
    functionDepth: 3
    functionLinenumber: 3396
    functionLinenumberEnd: 3406
    functionName: convert_foreign_data_wrapper_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_foreign_data_wrapper_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3427,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3428,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3429,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3435,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3435,1
    - Dst: convert_function_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3436,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3437,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3439,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3442
      start: 3424
    functionDepth: 2
    functionLinenumber: 3424
    functionLinenumberEnd: 3442
    functionName: has_function_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_function_name
    - PG_GETARG_NAME
    - object_aclcheck
    - convert_function_priv_string
    - NameStr
    - PG_RETURN_BOOL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_function_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3453,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3454,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3460,1
    - Dst: convert_function_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3461,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3462,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3464,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3467
      start: 3450
    functionDepth: 2
    functionLinenumber: 3450
    functionLinenumberEnd: 3467
    functionName: has_function_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_function_name
    - GetUserId
    - object_aclcheck
    - convert_function_priv_string
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_function_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3477,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3478,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3479,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3485,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3485,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3486,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3488,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3493,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3496
      start: 3474
    functionDepth: 4
    functionLinenumber: 3474
    functionLinenumberEnd: 3496
    functionName: has_function_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - convert_function_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_function_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3507,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3508,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3514,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3515,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3517,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3522,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3525
      start: 3504
    functionDepth: 4
    functionLinenumber: 3504
    functionLinenumberEnd: 3525
    functionName: has_function_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - convert_function_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_function_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3535,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3536,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3537,1
    - Dst: convert_function_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3542,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3543,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3545,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3548
      start: 3532
    functionDepth: 2
    functionLinenumber: 3532
    functionLinenumberEnd: 3548
    functionName: has_function_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_function_name
    - object_aclcheck
    - convert_function_priv_string
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_function_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3558,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3559,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3560,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3565,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3567,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3572,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3574,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3575
      start: 3555
    functionDepth: 4
    functionLinenumber: 3555
    functionLinenumberEnd: 3575
    functionName: has_function_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_function_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_function_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:3587,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3590,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/acl.c:3590,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:3591,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:3594,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:3595,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:3596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - functionname
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3599
      start: 3584
    functionDepth: 2
    functionLinenumber: 3584
    functionLinenumberEnd: 3599
    functionName: convert_function_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - errcode
    - DatumGetObjectId
    - CStringGetDatum
    - ereport
    - DirectFunctionCall1
    - text_to_cstring
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid convert_function_name(text *functionname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3610,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3615
      start: 3605
    functionDepth: 3
    functionLinenumber: 3605
    functionLinenumberEnd: 3615
    functionName: convert_function_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_function_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3636,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3637,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3638,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3644,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3644,1
    - Dst: convert_language_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3645,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3646,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3648,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3651
      start: 3633
    functionDepth: 2
    functionLinenumber: 3633
    functionLinenumberEnd: 3651
    functionName: has_language_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_language_priv_string
    - PG_GETARG_NAME
    - object_aclcheck
    - convert_language_name
    - NameStr
    - PG_RETURN_BOOL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_language_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3662,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3663,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3669,1
    - Dst: convert_language_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3670,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3671,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3673,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3676
      start: 3659
    functionDepth: 2
    functionLinenumber: 3659
    functionLinenumberEnd: 3676
    functionName: has_language_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_language_priv_string
    - GetUserId
    - object_aclcheck
    - convert_language_name
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_language_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3686,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3687,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3688,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3694,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3694,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3695,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3697,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3702,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3705
      start: 3683
    functionDepth: 4
    functionLinenumber: 3683
    functionLinenumberEnd: 3705
    functionName: has_language_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_language_priv_string
    - PG_GETARG_NAME
    - object_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_language_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3716,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3717,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3723,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3724,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3726,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3731,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3734
      start: 3713
    functionDepth: 4
    functionLinenumber: 3713
    functionLinenumberEnd: 3734
    functionName: has_language_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_language_priv_string
    - GetUserId
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_language_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3744,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3745,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3746,1
    - Dst: convert_language_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3751,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3752,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3754,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3757
      start: 3741
    functionDepth: 2
    functionLinenumber: 3741
    functionLinenumberEnd: 3757
    functionName: has_language_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_language_priv_string
    - object_aclcheck
    - convert_language_name
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_language_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3767,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3768,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3769,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3774,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3776,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3781,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3783,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3784
      start: 3764
    functionDepth: 4
    functionLinenumber: 3764
    functionLinenumberEnd: 3784
    functionName: has_language_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_language_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_language_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:3796,1
    - Dst: get_language_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - languagename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3799
      start: 3793
    functionDepth: 1
    functionLinenumber: 3793
    functionLinenumberEnd: 3799
    functionName: convert_language_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - get_language_oid
    - text_to_cstring
    linkageType: ''
    returnType: Oid
    signature: Oid convert_language_name(text *languagename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3810,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3815
      start: 3805
    functionDepth: 3
    functionLinenumber: 3805
    functionLinenumberEnd: 3815
    functionName: convert_language_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_language_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3836,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3837,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3838,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3844,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3844,1
    - Dst: convert_schema_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3845,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3846,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3848,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3851
      start: 3833
    functionDepth: 2
    functionLinenumber: 3833
    functionLinenumberEnd: 3851
    functionName: has_schema_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - object_aclcheck
    - convert_schema_name
    - NameStr
    - PG_RETURN_BOOL
    - convert_schema_priv_string
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_schema_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3862,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3863,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3869,1
    - Dst: convert_schema_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3870,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3871,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3873,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3876
      start: 3859
    functionDepth: 2
    functionLinenumber: 3859
    functionLinenumberEnd: 3876
    functionName: has_schema_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - object_aclcheck
    - convert_schema_name
    - PG_RETURN_BOOL
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_schema_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:3886,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3887,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3888,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3894,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3894,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3895,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3897,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3902,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3904,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3905
      start: 3883
    functionDepth: 4
    functionLinenumber: 3883
    functionLinenumberEnd: 3905
    functionName: has_schema_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - object_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_schema_priv_string
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_schema_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3916,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3917,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3923,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3924,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3926,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3931,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3934
      start: 3913
    functionDepth: 4
    functionLinenumber: 3913
    functionLinenumberEnd: 3934
    functionName: has_schema_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_schema_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3944,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3945,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3946,1
    - Dst: convert_schema_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3951,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3952,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3954,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3957
      start: 3941
    functionDepth: 2
    functionLinenumber: 3941
    functionLinenumberEnd: 3957
    functionName: has_schema_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck
    - convert_schema_name
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_schema_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3967,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3968,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3969,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3974,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3976,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3981,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3983,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3984
      start: 3964
    functionDepth: 4
    functionLinenumber: 3964
    functionLinenumberEnd: 3984
    functionName: has_schema_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_schema_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:3996,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - schemaname
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3999
      start: 3993
    functionDepth: 3
    functionLinenumber: 3993
    functionLinenumberEnd: 3999
    functionName: convert_schema_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - text_to_cstring
    - get_namespace_oid
    linkageType: ''
    returnType: Oid
    signature: Oid convert_schema_name(text *schemaname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4010,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4012,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4017
      start: 4005
    functionDepth: 3
    functionLinenumber: 4005
    functionLinenumberEnd: 4017
    functionName: convert_schema_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_schema_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4038,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4039,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4040,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4046,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4046,1
    - Dst: convert_server_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4047,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4048,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4050,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4052,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4053
      start: 4035
    functionDepth: 2
    functionLinenumber: 4035
    functionLinenumberEnd: 4053
    functionName: has_server_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - convert_server_name
    - convert_server_priv_string
    - object_aclcheck
    - NameStr
    - PG_RETURN_BOOL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_server_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4064,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4065,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4071,1
    - Dst: convert_server_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4072,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4073,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4075,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4077,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4078
      start: 4061
    functionDepth: 2
    functionLinenumber: 4061
    functionLinenumberEnd: 4078
    functionName: has_server_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - convert_server_name
    - convert_server_priv_string
    - object_aclcheck
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_server_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4088,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4089,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4090,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4096,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4096,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4097,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4099,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4104,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4107
      start: 4085
    functionDepth: 4
    functionLinenumber: 4085
    functionLinenumberEnd: 4107
    functionName: has_server_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - convert_server_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_server_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4118,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4119,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4125,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4126,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4128,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4133,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4136
      start: 4115
    functionDepth: 4
    functionLinenumber: 4115
    functionLinenumberEnd: 4136
    functionName: has_server_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - convert_server_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_server_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4146,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4147,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4148,1
    - Dst: convert_server_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4153,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4154,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4156,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4159
      start: 4143
    functionDepth: 2
    functionLinenumber: 4143
    functionLinenumberEnd: 4159
    functionName: has_server_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_server_name
    - convert_server_priv_string
    - object_aclcheck
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_server_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4169,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4170,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4171,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4176,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4178,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4183,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4186
      start: 4166
    functionDepth: 4
    functionLinenumber: 4166
    functionLinenumberEnd: 4186
    functionName: has_server_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_server_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_server_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:4198,1
    - Dst: get_foreign_server_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - servername
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4201
      start: 4195
    functionDepth: 3
    functionLinenumber: 4195
    functionLinenumberEnd: 4201
    functionName: convert_server_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - text_to_cstring
    - get_foreign_server_oid
    linkageType: ''
    returnType: Oid
    signature: Oid convert_server_name(text *servername)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4212,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4217
      start: 4207
    functionDepth: 3
    functionLinenumber: 4207
    functionLinenumberEnd: 4217
    functionName: convert_server_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_server_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4238,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4239,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4240,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4246,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4246,1
    - Dst: convert_tablespace_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4247,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4248,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4250,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4253
      start: 4235
    functionDepth: 2
    functionLinenumber: 4235
    functionLinenumberEnd: 4253
    functionName: has_tablespace_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_tablespace_name
    - convert_tablespace_priv_string
    - PG_GETARG_NAME
    - object_aclcheck
    - NameStr
    - PG_RETURN_BOOL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_tablespace_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4264,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4265,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4271,1
    - Dst: convert_tablespace_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4272,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4273,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4275,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4278
      start: 4261
    functionDepth: 2
    functionLinenumber: 4261
    functionLinenumberEnd: 4278
    functionName: has_tablespace_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_tablespace_name
    - convert_tablespace_priv_string
    - GetUserId
    - object_aclcheck
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_tablespace_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4288,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4289,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4290,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4296,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4296,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4297,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4299,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4304,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4307
      start: 4285
    functionDepth: 4
    functionLinenumber: 4285
    functionLinenumberEnd: 4307
    functionName: has_tablespace_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_tablespace_priv_string
    - PG_GETARG_NAME
    - object_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_tablespace_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4318,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4319,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4325,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4326,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4328,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4333,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4336
      start: 4315
    functionDepth: 4
    functionLinenumber: 4315
    functionLinenumberEnd: 4336
    functionName: has_tablespace_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_tablespace_priv_string
    - GetUserId
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_tablespace_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4346,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4347,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4348,1
    - Dst: convert_tablespace_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4353,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4354,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4356,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4359
      start: 4343
    functionDepth: 2
    functionLinenumber: 4343
    functionLinenumberEnd: 4359
    functionName: has_tablespace_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_tablespace_name
    - convert_tablespace_priv_string
    - object_aclcheck
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_tablespace_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4369,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4370,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4371,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4376,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4378,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4383,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4386
      start: 4366
    functionDepth: 4
    functionLinenumber: 4366
    functionLinenumberEnd: 4386
    functionName: has_tablespace_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_tablespace_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_tablespace_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:4398,1
    - Dst: get_tablespace_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tablespacename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4401
      start: 4395
    functionDepth: 1
    functionLinenumber: 4395
    functionLinenumberEnd: 4401
    functionName: convert_tablespace_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - text_to_cstring
    - get_tablespace_oid
    linkageType: ''
    returnType: Oid
    signature: Oid convert_tablespace_name(text *tablespacename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4412,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4417
      start: 4407
    functionDepth: 3
    functionLinenumber: 4407
    functionLinenumberEnd: 4417
    functionName: convert_tablespace_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_tablespace_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4437,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4438,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4439,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4445,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4445,1
    - Dst: convert_type_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4446,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4447,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4449,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4452
      start: 4434
    functionDepth: 2
    functionLinenumber: 4434
    functionLinenumberEnd: 4452
    functionName: has_type_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - convert_type_name
    - object_aclcheck
    - convert_type_priv_string
    - NameStr
    - PG_RETURN_BOOL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_type_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4463,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4464,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4470,1
    - Dst: convert_type_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4471,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4472,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4474,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4477
      start: 4460
    functionDepth: 2
    functionLinenumber: 4460
    functionLinenumberEnd: 4477
    functionName: has_type_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - convert_type_name
    - object_aclcheck
    - convert_type_priv_string
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_type_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4487,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4488,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4489,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4495,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4495,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4496,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4498,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4503,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4506
      start: 4484
    functionDepth: 4
    functionLinenumber: 4484
    functionLinenumberEnd: 4506
    functionName: has_type_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - convert_type_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_type_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4517,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4518,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4524,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4525,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4527,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4532,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4535
      start: 4514
    functionDepth: 4
    functionLinenumber: 4514
    functionLinenumberEnd: 4535
    functionName: has_type_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - convert_type_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_type_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4545,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4546,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4547,1
    - Dst: convert_type_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4552,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4553,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4555,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4558
      start: 4542
    functionDepth: 2
    functionLinenumber: 4542
    functionLinenumberEnd: 4558
    functionName: has_type_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_type_name
    - object_aclcheck
    - convert_type_priv_string
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_type_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4568,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4569,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4570,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4575,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4577,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4582,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4585
      start: 4565
    functionDepth: 4
    functionLinenumber: 4565
    functionLinenumberEnd: 4585
    functionName: has_type_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_type_priv_string
    - object_aclcheck_ext
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_type_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:4597,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4600,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/acl.c:4600,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:4601,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4603,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:4604,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:4605,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:4606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - typename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4609
      start: 4594
    functionDepth: 2
    functionLinenumber: 4594
    functionLinenumberEnd: 4609
    functionName: convert_type_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - errcode
    - DatumGetObjectId
    - CStringGetDatum
    - ereport
    - DirectFunctionCall1
    - text_to_cstring
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid convert_type_name(text *typename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4620,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4625
      start: 4615
    functionDepth: 3
    functionLinenumber: 4615
    functionLinenumberEnd: 4625
    functionName: convert_type_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_type_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:4646,1
    - Dst: pg_parameter_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - roleid
    - parameter
    - priv
    argTypes:
    - Oid
    - text*
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4649
      start: 4643
    functionDepth: 3
    functionLinenumber: 4643
    functionLinenumberEnd: 4649
    functionName: has_param_priv_byname
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - pg_parameter_aclcheck
    - text_to_cstring
    linkageType: ''
    returnType: bool
    signature: bool has_param_priv_byname(Oid roleid, const text *parameter, AclMode
      priv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4659,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4660,1
    - Dst: convert_parameter_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4661,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4661,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4662,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4662,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4664,1
    - Dst: has_param_priv_byname
      Src: /src/postgres/src/backend/utils/adt/acl.c:4664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4665
      start: 4656
    functionDepth: 4
    functionLinenumber: 4656
    functionLinenumberEnd: 4665
    functionName: has_parameter_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - convert_parameter_priv_string
    - NameStr
    - PG_RETURN_BOOL
    - has_param_priv_byname
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_parameter_privilege_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4675,1
    - Dst: convert_parameter_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4676,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4676,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4678,1
    - Dst: has_param_priv_byname
      Src: /src/postgres/src/backend/utils/adt/acl.c:4678,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4679
      start: 4672
    functionDepth: 4
    functionLinenumber: 4672
    functionLinenumberEnd: 4679
    functionName: has_parameter_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - convert_parameter_priv_string
    - PG_RETURN_BOOL
    - has_param_priv_byname
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_parameter_privilege_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4689,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4690,1
    - Dst: convert_parameter_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4691,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4691,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4693,1
    - Dst: has_param_priv_byname
      Src: /src/postgres/src/backend/utils/adt/acl.c:4693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4694
      start: 4686
    functionDepth: 4
    functionLinenumber: 4686
    functionLinenumberEnd: 4694
    functionName: has_parameter_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_parameter_priv_string
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - has_param_priv_byname
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_parameter_privilege_id_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4709,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4711,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4716
      start: 4704
    functionDepth: 3
    functionLinenumber: 4704
    functionLinenumberEnd: 4716
    functionName: convert_parameter_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_parameter_priv_string(text *priv_text)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/utils/adt/acl.c:4743,1
    - Dst: LargeObjectExistsWithSnapshot
      Src: /src/postgres/src/backend/utils/adt/acl.c:4745,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:4747,1
    - Dst: pg_largeobject_aclcheck_snapshot
      Src: /src/postgres/src/backend/utils/adt/acl.c:4755,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - roleid
    - lobjId
    - priv
    - is_missing
    argTypes:
    - Oid
    - Oid
    - AclMode
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4760
      start: 4734
    functionDepth: 6
    functionLinenumber: 4734
    functionLinenumberEnd: 4760
    functionName: has_lo_priv_byid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - Assert
    - LargeObjectExistsWithSnapshot
    - pg_largeobject_aclcheck_snapshot
    - GetActiveSnapshot
    linkageType: ''
    returnType: bool
    signature: bool has_lo_priv_byid(Oid roleid, Oid lobjId, AclMode priv, bool *is_missing)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4770,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4771,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4771,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4772,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4773,1
    - Dst: convert_largeobject_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4778,1
    - Dst: has_lo_priv_byid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4779,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4782,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4784,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4785
      start: 4767
    functionDepth: 7
    functionLinenumber: 4767
    functionLinenumberEnd: 4785
    functionName: has_largeobject_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_largeobject_priv_string
    - PG_GETARG_NAME
    - has_lo_priv_byid
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_largeobject_privilege_name_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4796,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4797,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4798,1
    - Dst: convert_largeobject_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4803,1
    - Dst: has_lo_priv_byid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4804,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4807,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4809,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4810
      start: 4793
    functionDepth: 7
    functionLinenumber: 4793
    functionLinenumberEnd: 4810
    functionName: has_largeobject_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_largeobject_priv_string
    - GetUserId
    - has_lo_priv_byid
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_largeobject_privilege_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4820,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4821,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4822,1
    - Dst: convert_largeobject_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4827,1
    - Dst: has_lo_priv_byid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4828,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4831,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4833,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4834
      start: 4817
    functionDepth: 7
    functionLinenumber: 4817
    functionLinenumberEnd: 4834
    functionName: has_largeobject_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_largeobject_priv_string
    - has_lo_priv_byid
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum has_largeobject_privilege_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4845,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4847,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4852
      start: 4840
    functionDepth: 3
    functionLinenumber: 4840
    functionLinenumberEnd: 4852
    functionName: convert_largeobject_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_largeobject_priv_string(text *priv_type_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4872,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4873,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4874,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4880,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4880,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4881,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4881,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4882,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4884,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4887
      start: 4869
    functionDepth: 1
    functionLinenumber: 4869
    functionLinenumberEnd: 4887
    functionName: pg_has_role_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - get_role_oid
    - PG_GETARG_NAME
    - NameStr
    - PG_RETURN_BOOL
    - pg_role_aclcheck
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_has_role_name_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4898,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4899,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4905,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4906,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4906,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4907,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4909,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4912
      start: 4895
    functionDepth: 1
    functionLinenumber: 4895
    functionLinenumberEnd: 4912
    functionName: pg_has_role_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - get_role_oid
    - PG_GETARG_NAME
    - GetUserId
    - NameStr
    - PG_RETURN_BOOL
    - pg_role_aclcheck
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_has_role_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4922,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4923,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4924,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4929,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4929,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4930,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4932,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4935
      start: 4919
    functionDepth: 1
    functionLinenumber: 4919
    functionLinenumberEnd: 4935
    functionName: pg_has_role_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - get_role_oid
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - pg_role_aclcheck
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_has_role_name_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4946,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4947,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4952,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4953,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4955,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4958
      start: 4943
    functionDepth: 1
    functionLinenumber: 4943
    functionLinenumberEnd: 4958
    functionName: pg_has_role_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - pg_role_aclcheck
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_has_role_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4968,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4969,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4970,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4975,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4975,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4976,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4978,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4981
      start: 4965
    functionDepth: 1
    functionLinenumber: 4965
    functionLinenumberEnd: 4981
    functionName: pg_has_role_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - get_role_oid
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - NameStr
    - PG_RETURN_BOOL
    - pg_role_aclcheck
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_has_role_id_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4991,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4992,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4993,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4997,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4999,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:5001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5002
      start: 4988
    functionDepth: 1
    functionLinenumber: 4988
    functionLinenumberEnd: 5002
    functionName: pg_has_role_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - pg_role_aclcheck
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_has_role_id_id(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:5025,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:5026,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:5027,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:5028,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:5029,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:5030,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:5034,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5035
      start: 5018
    functionDepth: 3
    functionLinenumber: 5018
    functionLinenumberEnd: 5035
    functionName: convert_role_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - convert_any_priv_string
    linkageType: ''
    returnType: AclMode
    signature: AclMode convert_role_priv_string(text *priv_type_text)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:5044,1
    - Dst: is_admin_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:5046,1
    - Dst: is_member_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:5051,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:5056,1
    - Dst: member_can_set_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:5061,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 3
    argNames:
    - role_oid
    - roleid
    - mode
    argTypes:
    - Oid
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5065
      start: 5041
    functionDepth: 1
    functionLinenumber: 5041
    functionLinenumberEnd: 5065
    functionName: pg_role_aclcheck
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - has_privs_of_role
    - is_admin_of_role
    - is_member_of_role
    - member_can_set_role
    linkageType: ''
    returnType: AclResult
    signature: AclResult pg_role_aclcheck(Oid role_oid, Oid roleid, AclMode mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5074,1
    - Dst: GetSysCacheHashValue1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5077,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5078,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/utils/adt/acl.c:5085,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/utils/adt/acl.c:5088,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/utils/adt/acl.c:5091,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5095
      start: 5071
    functionDepth: 1
    functionLinenumber: 5071
    functionLinenumberEnd: 5095
    functionName: initialize_acl
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - ObjectIdGetDatum
    - IsBootstrapProcessingMode
    - GetSysCacheHashValue1
    - CacheRegisterSyscacheCallback
    linkageType: ''
    returnType: void
    signature: void initialize_acl(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - SysCacheIdentifier
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5116
      start: 5101
    functionDepth: 0
    functionLinenumber: 5101
    functionLinenumberEnd: 5116
    functionName: RoleMembershipCacheCallback
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void RoleMembershipCacheCallback(Datum arg, SysCacheIdentifier cacheid,\n\t\t\t\t\t\t\tuint32
      hashvalue)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bloom_lacks_element
      Src: /src/postgres/src/backend/utils/adt/acl.c:5137,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5138,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/acl.c:5146,1
    - Dst: bloom_create
      Src: /src/postgres/src/backend/utils/adt/acl.c:5148,1
    - Dst: foreach_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5149,1
    - Dst: bloom_add_element
      Src: /src/postgres/src/backend/utils/adt/acl.c:5150,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5157,1
    - Dst: bloom_add_element
      Src: /src/postgres/src/backend/utils/adt/acl.c:5159,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - roles_list
    - bf
    - role
    argTypes:
    - List*
    - bloom_filter**
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5163
      start: 5124
    functionDepth: 6
    functionLinenumber: 5124
    functionLinenumberEnd: 5163
    functionName: roles_list_append
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - bloom_lacks_element
    - foreach_oid
    - bloom_create
    - list_length
    - list_member_oid
    - lappend_oid
    - bloom_add_element
    linkageType: ''
    returnType: List
    signature: 'List *

      roles_list_append(List *roles_list, bloom_filter **bf, Oid role)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:5195,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5195,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5200,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5201,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5209,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5215,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5215,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5216,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5217,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:5218,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:5219,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5233,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5237,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5242,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5243,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:5247,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5255,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5255,1
    - Dst: roles_list_append
      Src: /src/postgres/src/backend/utils/adt/acl.c:5271,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/utils/adt/acl.c:5273,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5276,1
    - Dst: roles_list_append
      Src: /src/postgres/src/backend/utils/adt/acl.c:5277,1
    - Dst: bloom_free
      Src: /src/postgres/src/backend/utils/adt/acl.c:5285,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/acl.c:5290,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/utils/adt/acl.c:5291,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/acl.c:5292,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/acl.c:5293,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/acl.c:5299,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 40
    argCount: 4
    argNames:
    - roleid
    - type
    - admin_of
    - admin_role
    argTypes:
    - Oid
    - enum RoleRecurseType
    - Oid
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5305
      start: 5184
    functionDepth: 7
    functionLinenumber: 5184
    functionLinenumberEnd: 5305
    functionName: roles_is_member_of
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - SearchSysCacheList1
    - lfirst_oid
    - Assert
    - HeapTupleIsValid
    - bloom_free
    - list_free
    - MemoryContextSwitchTo
    - ReleaseSysCache
    - GETSTRUCT
    - list_make1_oid
    - roles_list_append
    - OidIsValid
    - ReleaseSysCacheList
    - ObjectIdGetDatum
    - list_copy
    linkageType: ''
    returnType: List
    signature: "List *\nroles_is_member_of(Oid roleid, enum RoleRecurseType type,\n\t\t\t\t
      \  Oid admin_of, Oid *admin_role)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5237,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5242,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5243,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:5247,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5255,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5255,1
    - Dst: roles_list_append
      Src: /src/postgres/src/backend/utils/adt/acl.c:5271,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/utils/adt/acl.c:5273,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5276,1
    - Dst: roles_list_append
      Src: /src/postgres/src/backend/utils/adt/acl.c:5277,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5279
      start: 5235
    functionDepth: 7
    functionLinenumber: 5235
    functionLinenumberEnd: 5279
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 472
    functionsReached:
    - SearchSysCacheList1
    - ObjectIdGetDatum
    - GETSTRUCT
    - roles_list_append
    - OidIsValid
    - ReleaseSysCacheList
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, roles_list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5324,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5331,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5334
      start: 5316
    functionDepth: 8
    functionLinenumber: 5316
    functionLinenumberEnd: 5334
    functionName: has_privs_of_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 14
    functionsReached:
    - list_member_oid
    - superuser_arg
    - roles_is_member_of
    linkageType: ''
    returnType: bool
    signature: bool has_privs_of_role(Oid member, Oid role)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5358,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5365,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5365,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5368
      start: 5350
    functionDepth: 8
    functionLinenumber: 5350
    functionLinenumberEnd: 5368
    functionName: member_can_set_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - list_member_oid
    - superuser_arg
    - roles_is_member_of
    linkageType: ''
    returnType: bool
    signature: bool member_can_set_role(Oid member, Oid role)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: member_can_set_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:5376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5377,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5378,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5379,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5381
      start: 5373
    functionDepth: 9
    functionLinenumber: 5373
    functionLinenumberEnd: 5381
    functionName: check_can_set_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - GetUserNameFromId
    - errmsg
    - member_can_set_role
    linkageType: ''
    returnType: void
    signature: void check_can_set_role(Oid member, Oid role)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5404,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5411,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5414
      start: 5396
    functionDepth: 8
    functionLinenumber: 5396
    functionLinenumberEnd: 5414
    functionName: is_member_of_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - list_member_oid
    - superuser_arg
    - roles_is_member_of
    linkageType: ''
    returnType: bool
    signature: bool is_member_of_role(Oid member, Oid role)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5435,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5438
      start: 5424
    functionDepth: 8
    functionLinenumber: 5424
    functionLinenumberEnd: 5438
    functionName: is_member_of_role_nosuper
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - list_member_oid
    - roles_is_member_of
    linkageType: ''
    returnType: bool
    signature: bool is_member_of_role_nosuper(Oid member, Oid role)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5451,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5458,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5459,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5460
      start: 5446
    functionDepth: 8
    functionLinenumber: 5446
    functionLinenumberEnd: 5460
    functionName: is_admin_of_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 2
    functionsReached:
    - OidIsValid
    - superuser_arg
    - roles_is_member_of
    linkageType: ''
    returnType: bool
    signature: bool is_admin_of_role(Oid member, Oid role)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5482
      start: 5471
    functionDepth: 8
    functionLinenumber: 5471
    functionLinenumberEnd: 5482
    functionName: select_best_admin
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - roles_is_member_of
    linkageType: ''
    returnType: Oid
    signature: Oid select_best_admin(Oid member, Oid role)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5515,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:5516,1
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5527,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:5529,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5530,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5532,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5533,1
    - Dst: aclmask_direct
      Src: /src/postgres/src/backend/utils/adt/acl.c:5536,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5547,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5560,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5570,1
    - Dst: aclmask_direct
      Src: /src/postgres/src/backend/utils/adt/acl.c:5573,1
    - Dst: pg_popcount64
      Src: /src/postgres/src/backend/utils/adt/acl.c:5589,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 6
    argNames:
    - grantedBy
    - privileges
    - acl
    - ownerId
    - grantorId
    - grantOptions
    argTypes:
    - RoleSpec*
    - AclMode
    - Acl*
    - Oid
    - Oid*
    - AclMode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5599
      start: 5510
    functionDepth: 9
    functionLinenumber: 5510
    functionLinenumberEnd: 5599
    functionName: select_best_grantor
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 5
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - superuser_arg
    - GetUserId
    - has_privs_of_role
    - errcode
    - aclmask_direct
    - roles_is_member_of
    - ereport
    - GetUserNameFromId
    - errmsg
    - get_rolespec_oid
    - lfirst_oid
    - pg_popcount64
    linkageType: ''
    returnType: void
    signature: "void select_best_grantor(const RoleSpec *grantedBy, AclMode privileges,\n\t\t\t\t\tconst
      Acl *acl, Oid ownerId,\n\t\t\t\t\tOid *grantorId, AclMode *grantOptions)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5570,1
    - Dst: aclmask_direct
      Src: /src/postgres/src/backend/utils/adt/acl.c:5573,1
    - Dst: pg_popcount64
      Src: /src/postgres/src/backend/utils/adt/acl.c:5589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5598
      start: 5568
    functionDepth: 4
    functionLinenumber: 5568
    functionLinenumberEnd: 5598
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 472
    functionsReached:
    - aclmask_direct
    - lfirst_oid
    - pg_popcount64
    linkageType: ''
    returnType: void
    signature: void foreach(l, roles_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetSysCacheOid1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5612,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5613,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5614,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5615,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5617,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rolname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5619
      start: 5607
    functionDepth: 2
    functionLinenumber: 5607
    functionLinenumberEnd: 5619
    functionName: get_role_oid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 10
    functionsReached:
    - errcode
    - CStringGetDatum
    - ereport
    - GetSysCacheOid1
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid get_role_oid(const char *rolname, bool missing_ok)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/acl.c:5628,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5631,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rolname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5632
      start: 5625
    functionDepth: 3
    functionLinenumber: 5625
    functionLinenumberEnd: 5632
    functionName: get_role_oid_or_public
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 28
    functionsReached:
    - get_role_oid
    - strcmp
    linkageType: ''
    returnType: Oid
    signature: Oid get_role_oid_or_public(const char *rolname)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:5649,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5650,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5655,1
    - Dst: GetSessionUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5663,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5664,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5665,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5670,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - role
    - missing_ok
    argTypes:
    - RoleSpec*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5674
      start: 5641
    functionDepth: 3
    functionLinenumber: 5641
    functionLinenumberEnd: 5674
    functionName: get_rolespec_oid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 4
    functionsReached:
    - elog
    - get_role_oid
    - GetSessionUserId
    - GetUserId
    - errcode
    - Assert
    - ereport
    - errmsg
    linkageType: ''
    returnType: Oid
    signature: Oid get_rolespec_oid(const RoleSpec *role, bool missing_ok)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:5688,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5689,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5689,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5690,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5691,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5692,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5693,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5698,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5698,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5698,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5699,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5700,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5700,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5704,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5704,1
    - Dst: GetSessionUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5704,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5705,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5706,1
    - Dst: GetSessionUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5706,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5710,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5711,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5712,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5717,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - role
    argTypes:
    - RoleSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5721
      start: 5680
    functionDepth: 2
    functionLinenumber: 5680
    functionLinenumberEnd: 5721
    functionName: get_rolespec_tuple
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - GetSessionUserId
    - GetUserId
    - errcode
    - Assert
    - CStringGetDatum
    - HeapTupleIsValid
    - ereport
    - errmsg
    - ObjectIdGetDatum
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple get_rolespec_tuple(const RoleSpec *role)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_rolespec_tuple
      Src: /src/postgres/src/backend/utils/adt/acl.c:5733,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:5734,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/acl.c:5735,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:5735,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:5736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - role
    argTypes:
    - RoleSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5739
      start: 5726
    functionDepth: 3
    functionLinenumber: 5726
    functionLinenumberEnd: 5739
    functionName: get_rolespec_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - ReleaseSysCache
    - GETSTRUCT
    - NameStr
    - get_rolespec_tuple
    linkageType: ''
    returnType: char
    signature: 'char *

      get_rolespec_name(const RoleSpec *role)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsReservedName
      Src: /src/postgres/src/backend/utils/adt/acl.c:5757,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5760,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5761,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5762,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/utils/adt/acl.c:5764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5766,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5767,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5768,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - role
    - detail_msg
    argTypes:
    - RoleSpec*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5771
      start: 5748
    functionDepth: 2
    functionLinenumber: 5748
    functionLinenumberEnd: 5771
    functionName: check_rolespec_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errcode
    - IsReservedName
    - ereport
    - errmsg
    - errdetail_internal
    linkageType: ''
    returnType: void
    signature: void check_rolespec_name(const RoleSpec *role, const char *detail_msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:23,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:24,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:35,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:36,1
    - Dst: findJsonbValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:38,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 20
    functionDepth: 4
    functionLinenumber: 20
    functionLinenumberEnd: 43
    functionName: jsonb_exists
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    - findJsonbValueFromContainer
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_exists(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:48,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:49,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:55,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:66,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:66,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:67,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:67,1
    - Dst: findJsonbValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:69,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:72,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 45
    functionDepth: 4
    functionLinenumber: 45
    functionLinenumberEnd: 76
    functionName: jsonb_exists_any
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    - findJsonbValueFromContainer
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_exists_any(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:81,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:82,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:88,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:99,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:99,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:100,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:100,1
    - Dst: findJsonbValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:102,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:105,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 78
    functionDepth: 4
    functionLinenumber: 78
    functionLinenumberEnd: 109
    functionName: jsonb_exists_all
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    - findJsonbValueFromContainer
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_exists_all(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:114,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:115,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:120,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:120,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:121,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:123,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:124,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:126,1
    - Dst: JsonbDeepContains
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 127
    functionName: jsonb_contains
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - JsonbIteratorInit
    - JsonbDeepContains
    - JB_ROOT_IS_OBJECT
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_contains(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:133,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:134,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:139,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:139,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:140,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:142,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:143,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:145,1
    - Dst: JsonbDeepContains
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 146
    functionName: jsonb_contained
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - JsonbIteratorInit
    - JsonbDeepContains
    - JB_ROOT_IS_OBJECT
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_contained(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:151,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:152,1
    - Dst: compareJsonbContainers
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:155,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:157,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:158,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 160
    functionName: jsonb_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - compareJsonbContainers
    - PG_FREE_IF_COPY
    - PG_GETARG_JSONB_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:168,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:169,1
    - Dst: compareJsonbContainers
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:172,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:174,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:175,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 177
    functionName: jsonb_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - compareJsonbContainers
    - PG_FREE_IF_COPY
    - PG_GETARG_JSONB_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:182,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:183,1
    - Dst: compareJsonbContainers
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:186,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:188,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:189,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 191
    functionName: jsonb_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - compareJsonbContainers
    - PG_FREE_IF_COPY
    - PG_GETARG_JSONB_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:196,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:197,1
    - Dst: compareJsonbContainers
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:200,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:202,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:203,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 205
    functionName: jsonb_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - compareJsonbContainers
    - PG_FREE_IF_COPY
    - PG_GETARG_JSONB_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:210,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:211,1
    - Dst: compareJsonbContainers
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:214,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:216,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:217,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 219
    functionName: jsonb_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - compareJsonbContainers
    - PG_FREE_IF_COPY
    - PG_GETARG_JSONB_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:224,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:225,1
    - Dst: compareJsonbContainers
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:228,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:230,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:231,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 233
    functionName: jsonb_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - compareJsonbContainers
    - PG_FREE_IF_COPY
    - PG_GETARG_JSONB_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:238,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:239,1
    - Dst: compareJsonbContainers
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:242,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:244,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:245,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 247
    functionName: jsonb_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - compareJsonbContainers
    - PG_FREE_IF_COPY
    - PG_GETARG_JSONB_P
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_cmp(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:255,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:261,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:262,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:264,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:266,1
    - Dst: JsonbHashScalarValue
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:280,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:286,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:290,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:291,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 292
    functionName: jsonb_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - elog
    - JsonbIteratorInit
    - PG_RETURN_INT32
    - JsonbIteratorNext
    - PG_FREE_IF_COPY
    - JsonbHashScalarValue
    - PG_GETARG_JSONB_P
    - JB_ROOT_COUNT
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_hash(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:297,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:298,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:304,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:305,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:307,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:309,1
    - Dst: JsonbHashScalarValueExtended
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:323,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:329,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:333,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/utils/adt/jsonb_op.c:334,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 335
    functionName: jsonb_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - elog
    - JsonbIteratorInit
    - JsonbHashScalarValueExtended
    - JsonbIteratorNext
    - PG_FREE_IF_COPY
    - PG_GETARG_INT64
    - PG_GETARG_JSONB_P
    - JB_ROOT_COUNT
    - PG_RETURN_UINT64
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_hash_extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - operator
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: DEFAULT_SEL
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFAULT_SEL(operator)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: examine_variable
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:95,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:98,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:105,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:107,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:113,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:119,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:120,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:122,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:134,1
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:135,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:141,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:144,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:150,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:153,1
    - Dst: mcelem_array_contain_overlap_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:161,1
    - Dst: mcelem_array_contained_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:169,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:179,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:180,1
    - Dst: mcelem_array_contain_overlap_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:186,1
    - Dst: mcelem_array_contained_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:192,1
    - Dst: mcelem_array_contain_overlap_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:209,1
    - Dst: mcelem_array_contained_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:215,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:224,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:232,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 7
    argNames:
    - root
    - leftop
    - rightop
    - elemtype
    - isEquality
    - useOr
    - varRelid
    argTypes:
    - PlannerInfo*
    - Node*
    - Node*
    - Oid
    - bool
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 235
    functionName: scalararraysel_containment
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 0
    functionsReached:
    - statistic_proc_security_check
    - examine_variable
    - ReleaseVariableStats
    - HeapTupleIsValid
    - free_attstatsslot
    - memset
    - GETSTRUCT
    - CLAMP_PROBABILITY
    - get_attstatsslot
    - OidIsValid
    - IsA
    - mcelem_array_contain_overlap_selec
    - mcelem_array_contained_selec
    - lookup_type_cache
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity scalararraysel_containment(PlannerInfo *root,\n\t\t\t\t\t\t
      \  Node *leftop, Node *rightop,\n\t\t\t\t\t\t   Oid elemtype, bool isEquality,
      bool useOr,\n\t\t\t\t\t\t   int varRelid)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:243,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:244,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:245,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:246,1
    - Dst: get_restriction_variable
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:257,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:259,1
    - Dst: DEFAULT_SEL
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:259,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:264,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:266,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:267,1
    - Dst: DEFAULT_SEL
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:267,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:276,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:277,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:298,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:300,1
    - Dst: calc_arraycontsel
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:302,1
    - Dst: DEFAULT_SEL
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:307,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:310,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:312,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:314,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 315
    functionName: arraycontsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 1
    functionsReached:
    - ReleaseVariableStats
    - get_base_element_type
    - DEFAULT_SEL
    - get_restriction_variable
    - PG_GETARG_OID
    - CLAMP_PROBABILITY
    - PG_RETURN_FLOAT8
    - PG_GETARG_POINTER
    - IsA
    - PG_GETARG_INT32
    - calc_arraycontsel
    linkageType: ''
    returnType: Datum
    signature: Datum arraycontsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:326,1
    - Dst: DEFAULT_SEL
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 327
    functionName: arraycontjoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - DEFAULT_SEL
    linkageType: ''
    returnType: Datum
    signature: Datum arraycontjoinsel(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:346,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:347,1
    - Dst: DEFAULT_SEL
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:348,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:355,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:357,1
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:358,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:364,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:367,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:376,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:379,1
    - Dst: mcelem_array_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:382,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:388,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:389,1
    - Dst: mcelem_array_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:394,1
    - Dst: mcelem_array_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:407,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:414,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:415,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - vardata
    - constval
    - elemtype
    argTypes:
    - VariableStatData*
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 418
    functionName: calc_arraycontsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 1
    functionsReached:
    - statistic_proc_security_check
    - mcelem_array_selec
    - HeapTupleIsValid
    - pfree
    - DEFAULT_SEL
    - free_attstatsslot
    - memset
    - GETSTRUCT
    - PointerGetDatum
    - get_attstatsslot
    - OidIsValid
    - DatumGetArrayTypeP
    - lookup_type_cache
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity calc_arraycontsel(VariableStatData *vardata, Datum constval,\n\t\t\t\t
      \ Oid elemtype, Oid operator)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:446,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:470,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:471,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:476,1
    - Dst: mcelem_array_contain_overlap_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:481,1
    - Dst: mcelem_array_contained_selec
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:486,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:493,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:498,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:499,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 8
    argNames:
    - array
    - typentry
    - mcelem
    - nmcelem
    - numbers
    - nnumbers
    - hist
    - nhist
    argTypes:
    - ArrayType*
    - TypeCacheEntry*
    - Datum*
    - int
    - float4*
    - int
    - float4*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 501
    functionName: mcelem_array_selec
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 1
    functionsReached:
    - elog
    - pfree
    - qsort_arg
    - mcelem_array_contain_overlap_selec
    - deconstruct_array
    - mcelem_array_contained_selec
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcelem_array_selec(const ArrayType *array, TypeCacheEntry
      *typentry,\n\t\t\t\t   const Datum *mcelem, int nmcelem,\n\t\t\t\t   const float4
      *numbers, int nnumbers,\n\t\t\t\t   const float4 *hist, int nhist,\n\t\t\t\t
      \  Oid operator)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: floor_log2
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:560,1
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:590,1
    - Dst: find_next_mcelem
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:596,1
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:603,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:633,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:646,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 7
    argNames:
    - mcelem
    - nmcelem
    - numbers
    - nnumbers
    - array_data
    - nitems
    - typentry
    argTypes:
    - Datum*
    - int
    - float4*
    - int
    - Datum*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 650
    functionName: mcelem_array_contain_overlap_selec
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 2
    functionsReached:
    - element_compare
    - Min
    - floor_log2
    - CLAMP_PROBABILITY
    - find_next_mcelem
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcelem_array_contain_overlap_selec(const Datum *mcelem,
      int nmcelem,\n\t\t\t\t\t\t\t\t   const float4 *numbers, int nnumbers,\n\t\t\t\t\t\t\t\t
      \  const Datum *array_data, int nitems,\n\t\t\t\t\t\t\t\t   Oid operator, TypeCacheEntry
      *typentry)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:762,1
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:772,1
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:782,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:817,1
    - Dst: exp
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:841,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:874,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:877,1
    - Dst: calc_distr
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:887,1
    - Dst: calc_distr
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:888,1
    - Dst: calc_hist
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:891,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:905,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:906,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:907,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:908,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:913,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 61
    argCount: 9
    argNames:
    - mcelem
    - nmcelem
    - numbers
    - nnumbers
    - array_data
    - nitems
    - hist
    - nhist
    - typentry
    argTypes:
    - Datum*
    - int
    - float4*
    - int
    - Datum*
    - int
    - float4*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 916
    functionName: mcelem_array_contained_selec
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 2
    functionsReached:
    - qsort
    - calc_hist
    - element_compare
    - pfree
    - palloc_array
    - calc_distr
    - exp
    - CLAMP_PROBABILITY
    - Min
    - sqrt
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcelem_array_contained_selec(const Datum *mcelem, int
      nmcelem,\n\t\t\t\t\t\t\t const float4 *numbers, int nnumbers,\n\t\t\t\t\t\t\t
      const Datum *array_data, int nitems,\n\t\t\t\t\t\t\t const float4 *hist, int
      nhist,\n\t\t\t\t\t\t\t Oid operator, TypeCacheEntry *typentry)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:939,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - hist
    - nhist
    - n
    argTypes:
    - float4*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 1000
    functionName: calc_hist
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 1
    functionsReached:
    - palloc_array
    linkageType: ''
    returnType: float
    signature: 'float *

      calc_hist(const float4 *hist, int nhist, int n)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1031,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1032,1
    - Dst: exp
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1076,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1092,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 4
    argNames:
    - p
    - n
    - m
    - rest
    argTypes:
    - float*
    - int
    - int
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1018
    functionDepth: 0
    functionLinenumber: 1018
    functionLinenumberEnd: 1094
    functionName: calc_distr
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 1
    functionsReached:
    - pfree
    - exp
    - palloc_array
    linkageType: ''
    returnType: float
    signature: 'float *

      calc_distr(const float *p, int n, int m, float rest)'
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - n
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1097
    functionDepth: 0
    functionLinenumber: 1097
    functionLinenumberEnd: 1129
    functionName: floor_log2
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int floor_log2(uint32 n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - mcelem
    - nmcelem
    - value
    - index
    - typentry
    argTypes:
    - Datum*
    - int
    - Datum
    - int*
    - TypeCacheEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1138
    functionDepth: 0
    functionLinenumber: 1138
    functionLinenumberEnd: 1163
    functionName: find_next_mcelem
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 1
    functionsReached:
    - element_compare
    linkageType: ''
    returnType: bool
    signature: "bool find_next_mcelem(const Datum *mcelem, int nmcelem, Datum value,
      int *index,\n\t\t\t\t TypeCacheEntry *typentry)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1182,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - key1
    - key2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1184
    functionName: element_compare
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 3
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    linkageType: ''
    returnType: int
    signature: int element_compare(const void *key1, const void *key2, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1189
    functionDepth: 0
    functionLinenumber: 1189
    functionLinenumberEnd: 1201
    functionName: float_compare_desc
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int float_compare_desc(const void *key1, const void *key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:43,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - wc
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: to_char32
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - Assert
    - GetDatabaseEncoding
    linkageType: ''
    returnType: char32_t
    signature: char32_t to_char32(pg_wchar wc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:50,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - c32
    argTypes:
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: to_pg_wchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - Assert
    - GetDatabaseEncoding
    linkageType: ''
    returnType: pg_wchar
    signature: pg_wchar to_pg_wchar(char32_t c32)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:65,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:79,1
    - Dst: pg_u_isalnum
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 95
    functionName: initcap_wbnext
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - pg_utf_mblen
    - pg_u_isalnum
    - utf8_to_unicode
    linkageType: ''
    returnType: size_t
    signature: size_t initcap_wbnext(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strlower
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:104,1
    - Dst: report_invalid_encoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:107,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - dest
    - destsize
    - src
    - srclen
    - locale
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 111
    functionName: strlower_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - unicode_strlower
    - report_invalid_encoding
    linkageType: ''
    returnType: size_t
    signature: "size_t strlower_builtin(char *dest, size_t destsize, const char *src,
      size_t srclen,\n\t\t\t\t pg_locale_t locale)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strtitle
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:128,1
    - Dst: report_invalid_encoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:133,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - dest
    - destsize
    - src
    - srclen
    - locale
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 137
    functionName: strtitle_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - unicode_strtitle
    - report_invalid_encoding
    linkageType: ''
    returnType: size_t
    signature: "size_t strtitle_builtin(char *dest, size_t destsize, const char *src,
      size_t srclen,\n\t\t\t\t pg_locale_t locale)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strupper
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:146,1
    - Dst: report_invalid_encoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:149,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - dest
    - destsize
    - src
    - srclen
    - locale
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 153
    functionName: strupper_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - report_invalid_encoding
    - unicode_strupper
    linkageType: ''
    returnType: size_t
    signature: "size_t strupper_builtin(char *dest, size_t destsize, const char *src,
      size_t srclen,\n\t\t\t\t pg_locale_t locale)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strfold
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:162,1
    - Dst: report_invalid_encoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:165,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - dest
    - destsize
    - src
    - srclen
    - locale
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 169
    functionName: strfold_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - unicode_strfold
    - report_invalid_encoding
    linkageType: ''
    returnType: size_t
    signature: "size_t strfold_builtin(char *dest, size_t destsize, const char *src,
      size_t srclen,\n\t\t\t\tpg_locale_t locale)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isdigit
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:174,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: wc_isdigit_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_isdigit
    linkageType: ''
    returnType: bool
    signature: bool wc_isdigit_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isalpha
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:180,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: wc_isalpha_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_isalpha
    linkageType: ''
    returnType: bool
    signature: bool wc_isalpha_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isalnum
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:186,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 183
    functionDepth: 4
    functionLinenumber: 183
    functionLinenumberEnd: 187
    functionName: wc_isalnum_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_isalnum
    linkageType: ''
    returnType: bool
    signature: bool wc_isalnum_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isupper
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:192,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 3
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: wc_isupper_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_isupper
    linkageType: ''
    returnType: bool
    signature: bool wc_isupper_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_islower
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:198,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 195
    functionDepth: 3
    functionLinenumber: 195
    functionLinenumberEnd: 199
    functionName: wc_islower_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_islower
    linkageType: ''
    returnType: bool
    signature: bool wc_islower_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isgraph
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:204,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 201
    functionDepth: 3
    functionLinenumber: 201
    functionLinenumberEnd: 205
    functionName: wc_isgraph_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_isgraph
    linkageType: ''
    returnType: bool
    signature: bool wc_isgraph_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isprint
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:210,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 4
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: wc_isprint_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_isprint
    linkageType: ''
    returnType: bool
    signature: bool wc_isprint_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_ispunct
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:216,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 213
    functionDepth: 4
    functionLinenumber: 213
    functionLinenumberEnd: 217
    functionName: wc_ispunct_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_ispunct
    linkageType: ''
    returnType: bool
    signature: bool wc_ispunct_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isspace
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:222,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 223
    functionName: wc_isspace_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_isspace
    linkageType: ''
    returnType: bool
    signature: bool wc_isspace_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_isxdigit
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:228,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 229
    functionName: wc_isxdigit_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_isxdigit
    linkageType: ''
    returnType: bool
    signature: bool wc_isxdigit_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_u_prop_cased
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:234,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: wc_iscased_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - pg_u_prop_cased
    linkageType: ''
    returnType: bool
    signature: bool wc_iscased_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_pg_wchar
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:240,1
    - Dst: unicode_uppercase_simple
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:240,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: wc_toupper_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - unicode_uppercase_simple
    - to_pg_wchar
    linkageType: ''
    returnType: pg_wchar
    signature: pg_wchar wc_toupper_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_pg_wchar
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:246,1
    - Dst: unicode_lowercase_simple
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:246,1
    - Dst: to_char32
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: wc_tolower_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - to_char32
    - unicode_lowercase_simple
    - to_pg_wchar
    linkageType: ''
    returnType: pg_wchar
    signature: pg_wchar wc_tolower_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:282,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:282,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:283,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:284,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:285,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:287,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:288,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:295,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:295,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:296,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:297,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:298,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:300,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:301,1
    - Dst: builtin_validate_locale
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:304,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:304,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:306,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:308,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:309,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:312,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - collid
    - context
    argTypes:
    - Oid
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 317
    functionName: create_pg_locale_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - elog
    - strcmp
    - HeapTupleIsValid
    - builtin_validate_locale
    - GetDatabaseEncoding
    - MemoryContextStrdup
    - ReleaseSysCache
    - TextDatumGetCString
    - SysCacheGetAttrNotNull
    - ObjectIdGetDatum
    - MemoryContextAllocZero
    linkageType: ''
    returnType: pg_locale_t
    signature: pg_locale_t create_pg_locale_builtin(Oid collid, MemoryContext context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:329,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:331,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:333,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:336,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:337,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - collcollate
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 342
    functionName: get_collation_actual_version_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - strcmp
    - errcode
    linkageType: ''
    returnType: char
    signature: 'char *

      get_collation_actual_version_builtin(const char *collcollate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int8.c:53,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:55,1
    - Dst: pg_strtoint64_safe
      Src: /src/postgres/src/backend/utils/adt/int8.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: int8in
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_CSTRING
    - pg_strtoint64_safe
    linkageType: ''
    returnType: Datum
    signature: Datum int8in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:65,1
    - Dst: pg_lltoa
      Src: /src/postgres/src/backend/utils/adt/int8.c:70,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/int8.c:76,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/int8.c:77,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int8.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 79
    functionName: int8out
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - memcpy
    - PG_RETURN_CSTRING
    - PG_GETARG_INT64
    - palloc
    - pg_lltoa
    linkageType: ''
    returnType: Datum
    signature: Datum int8out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:87,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:89,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/int8.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: int8recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_POINTER
    - pq_getmsgint64
    linkageType: ''
    returnType: Datum
    signature: Datum int8recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:98,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/int8.c:101,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/int8.c:102,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/int8.c:103,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/int8.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 4
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: int8send
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:118,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:119,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 122
    functionName: int8eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int8eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:127,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:128,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 131
    functionName: int8ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int8ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:136,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:137,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: int8lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int8lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:145,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:146,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 149
    functionName: int8gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int8gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:154,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:155,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 158
    functionName: int8le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int8le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:163,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:164,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 167
    functionName: int8ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int8ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:176,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:177,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 180
    functionName: int84eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int84eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:185,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:186,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: int84ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int84ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:194,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:195,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 198
    functionName: int84lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int84lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:203,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:204,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: int84gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int84gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:212,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:213,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 216
    functionName: int84le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int84le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:221,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:222,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 225
    functionName: int84ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int84ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:234,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:235,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 238
    functionName: int48eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int48eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:243,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:244,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 247
    functionName: int48ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int48ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:252,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:253,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 256
    functionName: int48lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int48lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:261,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:262,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 265
    functionName: int48gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int48gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:270,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:271,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 274
    functionName: int48le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int48le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:279,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:280,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 283
    functionName: int48ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int48ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:292,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:293,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 296
    functionName: int82eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int82eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:301,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:302,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 305
    functionName: int82ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int82ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:310,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:311,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 314
    functionName: int82lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int82lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:319,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:320,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 323
    functionName: int82gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int82gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:328,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:329,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 332
    functionName: int82le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int82le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:337,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:338,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 341
    functionName: int82ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int82ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:350,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:351,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 354
    functionName: int28eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int28eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:359,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:360,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 363
    functionName: int28ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int28ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:368,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:369,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 372
    functionName: int28lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int28lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:377,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:378,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 381
    functionName: int28gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int28gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:386,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:387,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 390
    functionName: int28le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int28le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:395,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:396,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 399
    functionName: int28ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum int28ge(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:410,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:411,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:412,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:413,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:414,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:418,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:419,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:420,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:425,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:425,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:432,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:436,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:438,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 407
    functionDepth: 2
    functionLinenumber: 407
    functionLinenumberEnd: 439
    functionName: in_range_int8_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - errcode
    - ereport
    - pg_add_s64_overflow
    - unlikely
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_int8_int8(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:449,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:452,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:453,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:454,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:455,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 458
    functionName: int8um
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - unlikely
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8um(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:463,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 466
    functionName: int8up
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8up(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:471,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:472,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:475,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:475,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:476,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:478,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 480
    functionName: int8pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - pg_add_s64_overflow
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:485,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:486,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:489,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:489,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:490,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:491,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:492,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 494
    functionName: int8mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - pg_sub_s64_overflow
    - errcode
    - ereport
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:499,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:500,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:503,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:503,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:504,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:505,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:506,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 496
    functionDepth: 2
    functionLinenumber: 496
    functionLinenumberEnd: 508
    functionName: int8mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum int8mul(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:513,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:514,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:519,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:520,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:521,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:523,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:534,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:535,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:536,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:537,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:539,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:546,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 547
    functionName: int8div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_INT64
    - ereport
    - unlikely
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum int8div(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:556,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:559,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:560,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:561,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:562,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 553
    functionDepth: 2
    functionLinenumber: 553
    functionLinenumberEnd: 565
    functionName: int8abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - unlikely
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8abs(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:574,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:575,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:577,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:579,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:580,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:581,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:583,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:592,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 571
    functionDepth: 2
    functionLinenumber: 571
    functionLinenumberEnd: 597
    functionName: int8mod
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_INT64
    - ereport
    - unlikely
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum int8mod(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:643,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:644,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:645,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 614
    functionDepth: 2
    functionLinenumber: 614
    functionLinenumberEnd: 673
    functionName: int8gcd_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: int64
    signature: int64 int8gcd_internal(int64 arg1, int64 arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:678,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:679,1
    - Dst: int8gcd_internal
      Src: /src/postgres/src/backend/utils/adt/int8.c:682,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 675
    functionDepth: 3
    functionLinenumber: 675
    functionLinenumberEnd: 685
    functionName: int8gcd
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - int8gcd_internal
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8gcd(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:693,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:694,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:704,1
    - Dst: int8gcd_internal
      Src: /src/postgres/src/backend/utils/adt/int8.c:707,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:710,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:710,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:711,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:712,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:713,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:716,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:717,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:719,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:724,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 690
    functionDepth: 3
    functionLinenumber: 690
    functionLinenumberEnd: 725
    functionName: int8lcm
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - int8gcd_internal
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum int8lcm(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:730,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:733,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:733,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:734,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:735,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:736,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 739
    functionName: int8inc
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - pg_add_s64_overflow
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8inc(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:744,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:747,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:747,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:748,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:749,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:750,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:752,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 741
    functionDepth: 2
    functionLinenumber: 741
    functionLinenumberEnd: 753
    functionName: int8dec
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - pg_sub_s64_overflow
    - errcode
    - ereport
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8dec(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int8inc
      Src: /src/postgres/src/backend/utils/adt/int8.c:768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 765
    functionDepth: 3
    functionLinenumber: 765
    functionLinenumberEnd: 769
    functionName: int8inc_any
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - int8inc
    linkageType: ''
    returnType: Datum
    signature: Datum int8inc_any(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int8inc
      Src: /src/postgres/src/backend/utils/adt/int8.c:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 771
    functionDepth: 3
    functionLinenumber: 771
    functionLinenumberEnd: 775
    functionName: int8inc_float8_float8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - int8inc
    linkageType: ''
    returnType: Datum
    signature: Datum int8inc_float8_float8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int8dec
      Src: /src/postgres/src/backend/utils/adt/int8.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 777
    functionDepth: 3
    functionLinenumber: 777
    functionLinenumberEnd: 781
    functionName: int8dec_any
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - int8dec
    linkageType: ''
    returnType: Datum
    signature: Datum int8dec_any(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:790,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:792,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:823,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:850,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:853,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/int8.c:865,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/int8.c:867,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:873,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/utils/adt/int8.c:876,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/int8.c:881,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/int8.c:882,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/utils/adt/int8.c:885,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/int8.c:886,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:895,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:900,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 787
    functionDepth: 5
    functionLinenumber: 787
    functionLinenumberEnd: 901
    functionName: int8inc_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - linitial
    - makeNode
    - expr_is_nonnullable
    - list_length
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int8inc_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:907,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:908,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 904
    functionDepth: 1
    functionLinenumber: 904
    functionLinenumberEnd: 914
    functionName: int8larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:919,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:920,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 916
    functionDepth: 1
    functionLinenumber: 916
    functionLinenumberEnd: 926
    functionName: int8smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8smaller(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:931,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:932,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:935,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:935,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:936,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:937,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:938,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:939,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 928
    functionDepth: 2
    functionLinenumber: 928
    functionLinenumberEnd: 940
    functionName: int84pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - pg_add_s64_overflow
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int84pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:945,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:946,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:949,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:949,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:950,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:951,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:952,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 954
    functionName: int84mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - pg_sub_s64_overflow
    - errcode
    - ereport
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int84mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:959,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:960,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:963,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:963,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:964,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:965,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:966,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 956
    functionDepth: 2
    functionLinenumber: 956
    functionLinenumberEnd: 968
    functionName: int84mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - pg_mul_s64_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int84mul(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:973,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:974,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:979,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:980,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:981,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:983,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:994,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:995,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:996,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:997,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:999,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1006,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 970
    functionDepth: 2
    functionLinenumber: 970
    functionLinenumberEnd: 1007
    functionName: int84div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_INT64
    - ereport
    - unlikely
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int84div(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1012,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1013,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1016,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1016,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1017,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1018,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1019,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1020,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1009
    functionDepth: 2
    functionLinenumber: 1009
    functionLinenumberEnd: 1021
    functionName: int48pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - pg_add_s64_overflow
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int48pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1026,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1027,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1030,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1030,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1031,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1032,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1033,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1034,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1023
    functionDepth: 2
    functionLinenumber: 1023
    functionLinenumberEnd: 1035
    functionName: int48mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - pg_sub_s64_overflow
    - errcode
    - ereport
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int48mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1040,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1041,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1044,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1044,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1045,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1046,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1047,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1048,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1037
    functionDepth: 2
    functionLinenumber: 1037
    functionLinenumberEnd: 1049
    functionName: int48mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - pg_mul_s64_overflow
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int48mul(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1054,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1055,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1057,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1059,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1060,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1061,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:1063,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1067,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1051
    functionDepth: 2
    functionLinenumber: 1051
    functionLinenumberEnd: 1068
    functionName: int48div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_INT64
    - ereport
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int48div(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1073,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1074,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1077,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1077,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1078,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1079,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1080,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1070
    functionDepth: 2
    functionLinenumber: 1070
    functionLinenumberEnd: 1082
    functionName: int82pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - pg_add_s64_overflow
    - PG_GETARG_INT16
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int82pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1087,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1088,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1091,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1091,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1092,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1093,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1094,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1095,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1084
    functionDepth: 2
    functionLinenumber: 1084
    functionLinenumberEnd: 1096
    functionName: int82mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - pg_sub_s64_overflow
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int82mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1101,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1102,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1105,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1105,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1106,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1107,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1108,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1098
    functionDepth: 2
    functionLinenumber: 1098
    functionLinenumberEnd: 1110
    functionName: int82mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum int82mul(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1115,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1116,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1121,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1123,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:1125,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1136,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1137,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1138,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1139,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1141,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1112
    functionDepth: 2
    functionLinenumber: 1112
    functionLinenumberEnd: 1149
    functionName: int82div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_INT64
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum int82div(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1154,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1155,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1158,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1159,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1160,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1161,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1151
    functionDepth: 2
    functionLinenumber: 1151
    functionLinenumberEnd: 1163
    functionName: int28pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - pg_add_s64_overflow
    - PG_GETARG_INT16
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int28pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1168,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1169,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1172,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1172,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1175,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1165
    functionDepth: 2
    functionLinenumber: 1165
    functionLinenumberEnd: 1177
    functionName: int28mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - pg_sub_s64_overflow
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int28mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1182,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1183,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1186,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1186,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1187,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1188,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1189,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1179
    functionDepth: 2
    functionLinenumber: 1179
    functionLinenumberEnd: 1191
    functionName: int28mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_INT64
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum int28mul(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1196,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1197,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1199,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1201,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1202,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1203,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:1205,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1193
    functionDepth: 2
    functionLinenumber: 1193
    functionLinenumberEnd: 1210
    functionName: int28div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_INT64
    - ereport
    - PG_GETARG_INT16
    - unlikely
    - PG_GETARG_INT64
    - errmsg
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum int28div(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1226,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1227,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1223
    functionDepth: 1
    functionLinenumber: 1223
    functionLinenumberEnd: 1230
    functionName: int8and
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8and(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1235,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1236,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1232
    functionDepth: 1
    functionLinenumber: 1232
    functionLinenumberEnd: 1239
    functionName: int8or
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8or(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1244,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1245,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1241
    functionDepth: 1
    functionLinenumber: 1241
    functionLinenumberEnd: 1248
    functionName: int8xor
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8xor(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1253,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1250
    functionDepth: 1
    functionLinenumber: 1250
    functionLinenumberEnd: 1256
    functionName: int8not
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8not(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1261,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1262,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1258
    functionDepth: 1
    functionLinenumber: 1258
    functionLinenumberEnd: 1265
    functionName: int8shl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8shl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1270,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1271,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1267
    functionDepth: 1
    functionLinenumber: 1267
    functionLinenumberEnd: 1274
    functionName: int8shr
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT32
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum int8shr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1283,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1280
    functionDepth: 1
    functionLinenumber: 1280
    functionLinenumberEnd: 1286
    functionName: int48
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum int48(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1291,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1293,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1293,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int8.c:1294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1296,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1288
    functionDepth: 2
    functionLinenumber: 1288
    functionLinenumberEnd: 1299
    functionName: int84
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - unlikely
    - errmsg
    - PG_GETARG_INT64
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum int84(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1304,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1301
    functionDepth: 1
    functionLinenumber: 1301
    functionLinenumberEnd: 1307
    functionName: int28
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum int28(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1312,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1314,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1314,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int8.c:1315,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1316,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1317,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1309
    functionDepth: 2
    functionLinenumber: 1309
    functionLinenumberEnd: 1320
    functionName: int82
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - unlikely
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_INT16
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum int82(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1325,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/int8.c:1330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1322
    functionDepth: 1
    functionLinenumber: 1322
    functionLinenumberEnd: 1331
    functionName: i8tod
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum i8tod(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/int8.c:1340,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/int8.c:1347,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1350,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/int8.c:1350,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1350,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int8.c:1351,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1352,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1353,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1337
    functionDepth: 2
    functionLinenumber: 1337
    functionLinenumberEnd: 1356
    functionName: dtoi8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - FLOAT8_FITS_IN_INT64
    - PG_GETARG_FLOAT8
    - errcode
    - unlikely
    - errmsg
    - rint
    - PG_RETURN_INT64
    - ereturn
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum dtoi8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1361,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/int8.c:1366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1358
    functionDepth: 1
    functionLinenumber: 1358
    functionLinenumberEnd: 1367
    functionName: i8tof
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_FLOAT4
    linkageType: ''
    returnType: Datum
    signature: Datum i8tof(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/int8.c:1376,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/int8.c:1383,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1386,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/int8.c:1386,1
    - Dst: FLOAT4_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1386,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int8.c:1387,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1389,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1373
    functionDepth: 2
    functionLinenumber: 1373
    functionLinenumberEnd: 1392
    functionName: ftoi8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - FLOAT4_FITS_IN_INT64
    - errcode
    - PG_GETARG_FLOAT4
    - unlikely
    - errmsg
    - rint
    - PG_RETURN_INT64
    - ereturn
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum ftoi8(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1397,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1399,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1399,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int8.c:1400,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1401,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1402,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/int8.c:1404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1394
    functionDepth: 2
    functionLinenumber: 1394
    functionLinenumberEnd: 1405
    functionName: i8tooid
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_OID
    - unlikely
    - errmsg
    - PG_GETARG_INT64
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum i8tooid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/int8.c:1410,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1407
    functionDepth: 1
    functionLinenumber: 1407
    functionLinenumberEnd: 1413
    functionName: oidtoi8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum oidtoi8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/int8.c:1418,1
    - Dst: PG_RETURN_OID8
      Src: /src/postgres/src/backend/utils/adt/int8.c:1420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1415
    functionDepth: 1
    functionLinenumber: 1415
    functionLinenumberEnd: 1421
    functionName: oidtooid8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID8
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum oidtooid8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generate_series_step_int8
      Src: /src/postgres/src/backend/utils/adt/int8.c:1429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1426
    functionDepth: 1
    functionLinenumber: 1426
    functionLinenumberEnd: 1430
    functionName: generate_series_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - generate_series_step_int8
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_int8(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/int8.c:1441,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1443,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1444,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/int8.c:1448,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1449,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1451,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1452,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1453,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/int8.c:1456,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/int8.c:1461,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/int8.c:1464,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/int8.c:1475,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/int8.c:1479,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1494,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/int8.c:1498,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/int8.c:1498,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/int8.c:1502,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1432
    functionDepth: 2
    functionLinenumber: 1432
    functionLinenumberEnd: 1503
    functionName: generate_series_step_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 1
    functionsReached:
    - SRF_IS_FIRSTCALL
    - PG_NARGS
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - SRF_FIRSTCALL_INIT
    - errcode
    - ereport
    - MemoryContextSwitchTo
    - pg_add_s64_overflow
    - PG_GETARG_INT64
    - errmsg
    - palloc_object
    - SRF_RETURN_DONE
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_step_int8(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:1511,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1514,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/int8.c:1519,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int8.c:1527,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/int8.c:1527,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int8.c:1528,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/int8.c:1528,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/int8.c:1529,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int8.c:1530,1
    - Dst: lthird
      Src: /src/postgres/src/backend/utils/adt/int8.c:1530,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1540,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1542,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1544,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1550,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1551,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1552,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1558,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1559,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1560,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/int8.c:1565,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:1572,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1508
    functionDepth: 2
    functionLinenumber: 1508
    functionLinenumberEnd: 1573
    functionName: generate_series_int8_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - list_length
    - DatumGetInt64
    - lthird
    - linitial
    - floor
    - lsecond
    - estimate_expression_value
    - is_funcclause
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_int8_support(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_fn_expr_variadic
      Src: /src/postgres/src/backend/utils/adt/misc.c:85,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:93,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/misc.c:93,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:110,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/misc.c:110,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/utils/adt/misc.c:110,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/misc.c:110,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:113,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/misc.c:116,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/misc.c:117,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/utils/adt/misc.c:118,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/utils/adt/misc.c:121,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/misc.c:146,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:148,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/misc.c:152,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - fcinfo
    - nargs
    - nulls
    argTypes:
    - FunctionCallInfo
    - int32*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 157
    functionName: count_nulls
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_NARGS
    - get_fn_expr_variadic
    - ARR_NULLBITMAP
    - ArrayGetNItems
    - Assert
    - get_base_element_type
    - ARR_NDIM
    - PG_GETARG_ARRAYTYPE_P
    - get_fn_expr_argtype
    - OidIsValid
    - PG_ARGISNULL
    - ARR_DIMS
    linkageType: ''
    returnType: bool
    signature: "bool count_nulls(FunctionCallInfo fcinfo,\n\t\t\tint32 *nargs, int32
      *nulls)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count_nulls
      Src: /src/postgres/src/backend/utils/adt/misc.c:169,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:170,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/misc.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 163
    functionDepth: 3
    functionLinenumber: 163
    functionLinenumberEnd: 173
    functionName: pg_num_nulls
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_RETURN_INT32
    - count_nulls
    linkageType: ''
    returnType: Datum
    signature: Datum pg_num_nulls(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count_nulls
      Src: /src/postgres/src/backend/utils/adt/misc.c:185,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:186,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/misc.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 189
    functionName: pg_num_nonnulls
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_RETURN_INT32
    - count_nulls
    linkageType: ''
    returnType: Datum
    signature: Datum pg_num_nonnulls(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:198,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:199,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:200,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:201,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/misc.c:203,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/misc.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 204
    functionName: pg_error_on_null
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - errcode
    - PG_RETURN_DATUM
    - ereport
    - errmsg
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_error_on_null(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/misc.c:215,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/utils/adt/misc.c:217,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/misc.c:217,1
    - Dst: PG_RETURN_NAME
      Src: /src/postgres/src/backend/utils/adt/misc.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 219
    functionName: current_database
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 1
    functionsReached:
    - get_database_name
    - namestrcpy
    - PG_RETURN_NAME
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum current_database(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:232,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:232,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 235
    functionName: current_query
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - cstring_to_text
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum current_query(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:242,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/misc.c:248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:252,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:253,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/misc.c:261,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/utils/adt/misc.c:264,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:270,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/misc.c:271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:275,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/utils/adt/misc.c:280,1
    - Dst: atooid
      Src: /src/postgres/src/backend/utils/adt/misc.c:282,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/misc.c:294,1
    - Dst: directory_is_empty
      Src: /src/postgres/src/backend/utils/adt/misc.c:295,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/misc.c:296,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:301,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/misc.c:304,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/utils/adt/misc.c:308,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 239
    functionDepth: 7
    functionLinenumber: 239
    functionLinenumberEnd: 310
    functionName: pg_tablespace_databases
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - atooid
    - InitMaterializedSRF
    - pfree
    - psprintf
    - AllocateDir
    - ereport
    - ObjectIdGetDatum
    - tuplestore_putvalues
    - FreeDir
    - PG_GETARG_OID
    - errmsg
    - directory_is_empty
    - ReadDir
    - errcode_for_file_access
    linkageType: ''
    returnType: Datum
    signature: Datum pg_tablespace_databases(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:319,1
    - Dst: get_tablespace_location
      Src: /src/postgres/src/backend/utils/adt/misc.c:323,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:325,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 326
    functionName: pg_tablespace_location
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - get_tablespace_location
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum pg_tablespace_location(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/misc.c:334,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/misc.c:344,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/misc.c:345,1
    - Dst: ceil
      Src: /src/postgres/src/backend/utils/adt/misc.c:347,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/misc.c:348,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/utils/adt/misc.c:362,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/misc.c:369,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/utils/adt/misc.c:371,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/utils/adt/misc.c:379,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/utils/adt/misc.c:383,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/misc.c:386,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 387
    functionName: pg_sleep
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - PG_RETURN_VOID
    - PG_GETARG_FLOAT8
    - ResetLatch
    - ceil
    - CHECK_FOR_INTERRUPTS
    - WaitLatch
    - Min
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum pg_sleep(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/misc.c:395,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/misc.c:400,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/misc.c:401,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/misc.c:403,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:404,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/backend/utils/adt/misc.c:406,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/misc.c:408,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/misc.c:411,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/utils/adt/misc.c:419,1
    - Dst: GetScanKeyword
      Src: /src/postgres/src/backend/utils/adt/misc.c:420,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:427,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:431,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:435,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:439,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:450,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:455,1
    - Dst: BuildTupleFromCStrings
      Src: /src/postgres/src/backend/utils/adt/misc.c:458,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/misc.c:460,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:460,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/misc.c:463,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 390
    functionDepth: 7
    functionLinenumber: 390
    functionLinenumberEnd: 464
    functionName: pg_get_keywords
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - elog
    - SRF_RETURN_NEXT
    - TupleDescGetAttInMetadata
    - SRF_FIRSTCALL_INIT
    - SRF_PERCALL_SETUP
    - GetScanKeyword
    - _
    - unconstify
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - BuildTupleFromCStrings
    - SRF_RETURN_DONE
    - get_call_result_type
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_keywords(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/misc.c:474,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/misc.c:479,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/misc.c:480,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/misc.c:482,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:483,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/utils/adt/misc.c:484,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/misc.c:492,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/misc.c:493,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/misc.c:496,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/misc.c:499,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/adt/misc.c:502,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/misc.c:509,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:511,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/utils/adt/misc.c:512,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:513,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:514,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:515,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:516,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/utils/adt/misc.c:517,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:518,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:519,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:520,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:521,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:522,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/misc.c:524,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/misc.c:526,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:526,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/misc.c:529,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 468
    functionDepth: 6
    functionLinenumber: 468
    functionLinenumberEnd: 530
    functionName: pg_get_catalog_foreign_keys
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - heap_form_tuple
    - SRF_RETURN_DONE
    - elog
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - Int32GetDatum
    - palloc_object
    - ObjectIdGetDatum
    - get_call_result_type
    - lengthof
    - fmgr_info
    - SRF_PERCALL_SETUP
    - CStringGetDatum
    - memset
    - BlessTupleDesc
    - FunctionCall3
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_catalog_foreign_keys(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:539,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/misc.c:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 540
    functionName: pg_typeof
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - get_fn_expr_argtype
    linkageType: ''
    returnType: Datum
    signature: Datum pg_typeof(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:558,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/misc.c:568,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:568,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/misc.c:569,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:570,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/misc.c:571,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/misc.c:575,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/misc.c:580,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:583,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 584
    functionName: pg_basetype
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - HeapTupleIsValid
    - PG_RETURN_OID
    - ReleaseSysCache
    - PG_GETARG_OID
    - GETSTRUCT
    - PG_RETURN_NULL
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_basetype(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/misc.c:597,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:599,1
    - Dst: type_is_collatable
      Src: /src/postgres/src/backend/utils/adt/misc.c:600,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:601,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:602,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:603,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/misc.c:604,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/misc.c:606,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:608,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:609,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:609,1
    - Dst: generate_collation_name
      Src: /src/postgres/src/backend/utils/adt/misc.c:609,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 591
    functionDepth: 4
    functionLinenumber: 591
    functionLinenumberEnd: 610
    functionName: pg_collation_for
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - generate_collation_name
    - format_type_be
    - errcode
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - ereport
    - type_is_collatable
    - errmsg
    - get_fn_expr_argtype
    - PG_RETURN_NULL
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum pg_collation_for(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:623,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:624,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/misc.c:626,1
    - Dst: relation_is_updatable
      Src: /src/postgres/src/backend/utils/adt/misc.c:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 620
    functionDepth: 7
    functionLinenumber: 620
    functionLinenumberEnd: 627
    functionName: pg_relation_is_updatable
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - relation_is_updatable
    - PG_GETARG_OID
    - PG_GETARG_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_relation_is_updatable(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:640,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/misc.c:641,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:643,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:648,1
    - Dst: relation_is_updatable
      Src: /src/postgres/src/backend/utils/adt/misc.c:650,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/utils/adt/misc.c:651,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 637
    functionDepth: 7
    functionLinenumber: 637
    functionLinenumberEnd: 657
    functionName: pg_column_is_updatable
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOOL
    - PG_GETARG_INT16
    - PG_GETARG_OID
    - relation_is_updatable
    - PG_RETURN_BOOL
    - bms_make_singleton
    linkageType: ''
    returnType: Datum
    signature: Datum pg_column_is_updatable(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/misc.c:671,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/misc.c:672,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:675,1
    - Dst: pg_input_is_valid_common
      Src: /src/postgres/src/backend/utils/adt/misc.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 677
    functionName: pg_input_is_valid
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - pg_input_is_valid_common
    - PG_RETURN_BOOL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_input_is_valid(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/misc.c:691,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/misc.c:692,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/misc.c:698,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:699,1
    - Dst: pg_input_is_valid_common
      Src: /src/postgres/src/backend/utils/adt/misc.c:704,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/misc.c:706,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:711,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:713,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/misc.c:715,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:717,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:720,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:725,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/adt/misc.c:729,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:730,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:733,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/misc.c:733,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 688
    functionDepth: 6
    functionLinenumber: 688
    functionLinenumberEnd: 734
    functionName: pg_input_error_info
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - heap_form_tuple
    - pg_input_is_valid_common
    - unpack_sql_state
    - HeapTupleGetDatum
    - memset
    - CStringGetTextDatum
    - get_call_result_type
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_input_error_info(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:742,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/misc.c:754,1
    - Dst: get_fn_expr_arg_stable
      Src: /src/postgres/src/backend/utils/adt/misc.c:759,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:768,1
    - Dst: parseTypeString
      Src: /src/postgres/src/backend/utils/adt/misc.c:772,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/utils/adt/misc.c:777,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/misc.c:780,1
    - Dst: InputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/misc.c:787,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - fcinfo
    - txt
    - typname
    - escontext
    argTypes:
    - FunctionCallInfo
    - text*
    - text*
    - ErrorSaveContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 793
    functionName: pg_input_is_valid_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 2
    functionsReached:
    - getTypeInputInfo
    - MemoryContextAlloc
    - InputFunctionCallSafe
    - text_to_cstring
    - get_fn_expr_arg_stable
    - parseTypeString
    - fmgr_info_cxt
    linkageType: ''
    returnType: bool
    signature: "bool pg_input_is_valid_common(FunctionCallInfo fcinfo,\n\t\t\t\t\t\t
      text *txt, text *typname,\n\t\t\t\t\t\t ErrorSaveContext *escontext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/backend/utils/adt/misc.c:809,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 812
    functionName: is_ident_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: bool
    signature: bool is_ident_start(unsigned char c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_ident_start
      Src: /src/postgres/src/backend/utils/adt/misc.c:825,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 818
    functionDepth: 2
    functionLinenumber: 818
    functionLinenumberEnd: 826
    functionName: is_ident_cont
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - is_ident_start
    linkageType: ''
    returnType: bool
    signature: bool is_ident_cont(unsigned char c)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/misc.c:836,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:837,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:838,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/misc.c:851,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/misc.c:866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:868,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:869,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:870,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:871,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/misc.c:872,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/misc.c:875,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/misc.c:875,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:882,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:883,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:884,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:885,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/misc.c:886,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/misc.c:888,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:888,1
    - Dst: is_ident_start
      Src: /src/postgres/src/backend/utils/adt/misc.c:892,1
    - Dst: is_ident_cont
      Src: /src/postgres/src/backend/utils/adt/misc.c:899,1
    - Dst: downcase_identifier
      Src: /src/postgres/src/backend/utils/adt/misc.c:910,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/misc.c:911,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/misc.c:912,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:912,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:921,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:922,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:923,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:924,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/misc.c:925,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:927,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:928,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:929,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:930,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/misc.c:931,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:933,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:934,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:935,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:936,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/misc.c:939,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/misc.c:946,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:956,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:957,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:958,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:959,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/misc.c:964,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/utils/adt/misc.c:964,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 833
    functionDepth: 3
    functionLinenumber: 833
    functionLinenumberEnd: 965
    functionName: parse_ident
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - strchr
    - errcode
    - cstring_to_text_with_len
    - text_to_cstring
    - makeArrayResult
    - PG_GETARG_TEXT_PP
    - PG_RETURN_DATUM
    - errmsg
    - PointerGetDatum
    - ereport
    - memmove
    - strlen
    - is_ident_start
    - PG_GETARG_BOOL
    - is_ident_cont
    - CStringGetTextDatum
    - errdetail
    - downcase_identifier
    - scanner_isspace
    - accumArrayResult
    linkageType: ''
    returnType: Datum
    signature: Datum parse_ident(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/misc.c:980,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:980,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:984,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/misc.c:984,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/misc.c:986,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/misc.c:987,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/misc.c:988,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:989,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:990,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:991,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/misc.c:992,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/utils/adt/misc.c:995,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:999,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/misc.c:1000,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:1001,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:1003,1
    - Dst: _setmode
      Src: /src/postgres/src/backend/utils/adt/misc.c:1008,1
    - Dst: _fileno
      Src: /src/postgres/src/backend/utils/adt/misc.c:1008,1
    - Dst: fgets
      Src: /src/postgres/src/backend/utils/adt/misc.c:1015,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/misc.c:1023,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:1027,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/misc.c:1034,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:1038,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/misc.c:1044,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/utils/adt/misc.c:1046,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:1047,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:1047,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/utils/adt/misc.c:1052,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:1054,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 972
    functionDepth: 2
    functionLinenumber: 972
    functionLinenumberEnd: 1055
    functionName: pg_current_logfile
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - AllocateFile
    - strcmp
    - errcode
    - strchr
    - errhint
    - text_to_cstring
    - FreeFile
    - elog
    - cstring_to_text
    - errmsg
    - _setmode
    - _fileno
    - PG_RETURN_TEXT_P
    - ereport
    - fgets
    - errcode_for_file_access
    - PG_NARGS
    - PG_RETURN_NULL
    - PG_ARGISNULL
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum pg_current_logfile(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_current_logfile
      Src: /src/postgres/src/backend/utils/adt/misc.c:1067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1064
    functionDepth: 3
    functionLinenumber: 1064
    functionLinenumberEnd: 1068
    functionName: pg_current_logfile_1arg
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - pg_current_logfile
    linkageType: ''
    returnType: Datum
    signature: Datum pg_current_logfile_1arg(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:1076,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/misc.c:1080,1
    - Dst: RelationGetReplicaIndex
      Src: /src/postgres/src/backend/utils/adt/misc.c:1081,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/misc.c:1082,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/misc.c:1084,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:1085,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:1087,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1073
    functionDepth: 3
    functionLinenumber: 1073
    functionLinenumberEnd: 1088
    functionName: pg_get_replica_identity_index
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - RelationGetReplicaIndex
    - table_open
    - PG_RETURN_OID
    - PG_RETURN_NULL
    - PG_GETARG_OID
    - OidIsValid
    - table_close
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_replica_identity_index(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/misc.c:1096,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/misc.c:1096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1097
    functionName: any_value_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum any_value_transfn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:57,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:58,1
    - Dst: foreach_int
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:60,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:61,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:61,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:63,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 66
    functionName: int_list_to_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - foreach_int
    - palloc_array
    - PointerGetDatum
    - list_length
    - foreach_current_index
    - construct_array_builtin
    linkageType: ''
    returnType: Datum
    signature: Datum int_list_to_array(const List *list)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:87,1
    - Dst: MemoryContextIsValid
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:87,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:98,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:101,1
    - Dst: lcons_int
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:102,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:106,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:109,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:110,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:119,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:126,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:132,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:140,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:142,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:144,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:168,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:169,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:169,1
    - Dst: int_list_to_array
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:170,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:171,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:172,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:173,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:174,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:175,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:177,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:178,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 4
    argNames:
    - tupstore
    - tupdesc
    - context
    - context_id_lookup
    argTypes:
    - Tuplestorestate*
    - TupleDesc
    - MemoryContext
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 72
    functionDepth: 7
    functionLinenumber: 72
    functionLinenumberEnd: 179
    functionName: PutMemoryContextsStatsTupleStore
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 0
    functionsReached:
    - elog
    - MemoryContextIsValid
    - hash_search
    - strcmp
    - memcpy
    - Assert
    - Int32GetDatum
    - tuplestore_putvalues
    - list_free
    - pg_mbcliplen
    - int_list_to_array
    - memset
    - CStringGetTextDatum
    - strlen
    - list_length
    - Int64GetDatum
    - lcons_int
    linkageType: ''
    returnType: void
    signature: "void PutMemoryContextsStatsTupleStore(Tuplestorestate *tupstore,\n\t\t\t\t\t\t\t\t
      TupleDesc tupdesc, MemoryContext context,\n\t\t\t\t\t\t\t\t HTAB *context_id_lookup)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:198,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:203,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:215,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:233,1
    - Dst: PutMemoryContextsStatsTupleStore
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:235,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:245,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 185
    functionDepth: 8
    functionLinenumber: 185
    functionLinenumberEnd: 251
    functionName: pg_get_backend_memory_contexts
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 0
    functionsReached:
    - PutMemoryContextsStatsTupleStore
    - hash_search
    - InitMaterializedSRF
    - Assert
    - lappend
    - hash_create
    - hash_destroy
    - list_make1
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_backend_memory_contexts(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:233,1
    - Dst: PutMemoryContextsStatsTupleStore
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:235,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 220
    functionDepth: 8
    functionLinenumber: 220
    functionLinenumberEnd: 246
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 11
    functionsReached:
    - Assert
    - lappend
    - PutMemoryContextsStatsTupleStore
    - hash_search
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(MemoryContextData, cur, contexts)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:269,1
    - Dst: BackendPidGetProc
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:276,1
    - Dst: AuxiliaryPidGetProc
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:296,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:297,1
    - Dst: GetNumberFromPGProc
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:300,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:301,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:304,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:305,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:306,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 310
    functionName: pg_log_backend_memory_contexts
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 0
    functionsReached:
    - BackendPidGetProc
    - AuxiliaryPidGetProc
    - ereport
    - errmsg
    - PG_RETURN_BOOL
    - SendProcSignal
    - PG_GETARG_INT32
    - GetNumberFromPGProc
    linkageType: ''
    returnType: Datum
    signature: Datum pg_log_backend_memory_contexts(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/uuid.c:80,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/uuid.c:83,1
    - Dst: string_to_uuid
      Src: /src/postgres/src/backend/utils/adt/uuid.c:84,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 86
    functionName: uuid_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_UUID_P
    - string_to_uuid
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_in(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:91,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:98,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/uuid.c:121,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 122
    functionName: uuid_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_CSTRING
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_out(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/uuid.c:149,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/uuid.c:150,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/uuid.c:151,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/utils/adt/uuid.c:155,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/uuid.c:174,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/uuid.c:175,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/uuid.c:176,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 3
    argNames:
    - source
    - uuid
    - escontext
    argTypes:
    - char*
    - pg_uuid_t*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 178
    functionName: string_to_uuid
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 1
    functionsReached:
    - strtoul
    - memcpy
    - errcode
    - isxdigit
    - errmsg
    - ereturn
    linkageType: ''
    returnType: void
    signature: void string_to_uuid(const char *source, pg_uuid_t *uuid, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/uuid.c:183,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:186,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/uuid.c:187,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/utils/adt/uuid.c:187,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/uuid.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 189
    functionName: uuid_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    - PG_GETARG_POINTER
    - pq_getmsgbytes
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:194,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/uuid.c:197,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/utils/adt/uuid.c:198,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:199,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/uuid.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 191
    functionDepth: 4
    functionLinenumber: 191
    functionLinenumberEnd: 200
    functionName: uuid_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_UUID_P
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendbytes
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - pg_uuid_t*
    - pg_uuid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 207
    functionName: uuid_internal_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int uuid_internal_cmp(const pg_uuid_t *arg1, const pg_uuid_t *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:212,1
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:213,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:215,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 216
    functionName: uuid_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:221,1
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:222,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:224,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 225
    functionName: uuid_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:230,1
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:231,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:233,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 234
    functionName: uuid_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:239,1
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:240,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:242,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: uuid_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:248,1
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:249,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:251,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 252
    functionName: uuid_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:257,1
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:258,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:260,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 261
    functionName: uuid_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:267,1
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:268,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/uuid.c:270,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 271
    functionName: uuid_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_INT32
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:276,1
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:277,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:279,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 280
    functionName: uuid_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_UUID_P
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:285,1
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:286,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:288,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 289
    functionName: uuid_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_UUID_P
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_smaller(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/uuid.c:297,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/uuid.c:307,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/uuid.c:309,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:312,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/uuid.c:321,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/uuid.c:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 325
    functionName: uuid_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - initHyperLogLog
    - MemoryContextSwitchTo
    - palloc_object
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/utils/adt/uuid.c:333,1
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/utils/adt/uuid.c:334,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 337
    functionName: uuid_fast_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - DatumGetUUIDP
    - uuid_internal_cmp
    linkageType: ''
    returnType: int
    signature: int uuid_fast_cmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: estimateHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:354,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:365,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:382,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:391,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - memtupcount
    - ssup
    argTypes:
    - int
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 396
    functionName: uuid_abbrev_abort
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - elog
    - estimateHyperLogLog
    linkageType: ''
    returnType: bool
    signature: bool uuid_abbrev_abort(int memtupcount, SortSupport ssup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/utils/adt/uuid.c:409,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/uuid.c:412,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/uuid.c:419,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/adt/uuid.c:419,1
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:421,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/uuid.c:421,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/uuid.c:421,1
    - Dst: DatumBigEndianToNative
      Src: /src/postgres/src/backend/utils/adt/uuid.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - original
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 405
    functionDepth: 2
    functionLinenumber: 405
    functionLinenumberEnd: 435
    functionName: uuid_abbrev_convert
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - memcpy
    - addHyperLogLog
    - DatumBigEndianToNative
    - DatumGetUInt64
    - hash_uint32
    - DatumGetUUIDP
    - DatumGetUInt32
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_abbrev_convert(Datum original, SortSupport ssup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:442,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/uuid.c:443,1
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/utils/adt/uuid.c:443,1
    - Dst: UUIDPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:450,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/uuid.c:455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 460
    functionName: uuid_decrement
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pfree
    - palloc
    - DatumGetUUIDP
    - UUIDPGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:467,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/uuid.c:468,1
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/utils/adt/uuid.c:468,1
    - Dst: UUIDPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:475,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/uuid.c:480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 485
    functionName: uuid_increment
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pfree
    - palloc
    - DatumGetUUIDP
    - UUIDPGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/uuid.c:490,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:491,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:492,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/uuid.c:494,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/uuid.c:495,1
    - Dst: UUIDPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:499,1
    - Dst: UUIDPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:500,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/uuid.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 503
    functionName: uuid_skipsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - memset
    - palloc
    - PG_GETARG_POINTER
    - UUIDPGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_skipsupport(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:509,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/uuid.c:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 506
    functionDepth: 2
    functionLinenumber: 506
    functionLinenumberEnd: 512
    functionName: uuid_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - hash_any
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_hash(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:517,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/utils/adt/uuid.c:519,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/uuid.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 514
    functionDepth: 2
    functionLinenumber: 514
    functionLinenumberEnd: 520
    functionName: uuid_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - hash_any_extended
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_hash_extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - uuid
    - version
    argTypes:
    - pg_uuid_t*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 533
    functionName: uuid_set_version
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void uuid_set_version(pg_uuid_t *uuid, unsigned char version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:544,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/utils/adt/uuid.c:546,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/uuid.c:547,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/uuid.c:548,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/uuid.c:549,1
    - Dst: uuid_set_version
      Src: /src/postgres/src/backend/utils/adt/uuid.c:555,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 558
    functionName: gen_random_uuid
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - errcode
    - uuid_set_version
    - ereport
    - errmsg
    - pg_strong_random
    - palloc
    - PG_RETURN_UUID_P
    linkageType: ''
    returnType: Datum
    signature: Datum gen_random_uuid(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/utils/adt/uuid.c:576,1
    - Dst: clock_gettime
      Src: /src/postgres/src/backend/utils/adt/uuid.c:590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 565
    functionDepth: 2
    functionLinenumber: 565
    functionLinenumberEnd: 600
    functionName: get_real_time_ns_ascending
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - gettimeofday
    - clock_gettime
    linkageType: ''
    returnType: int64
    signature: int64 get_real_time_ns_ascending(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:621,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/utils/adt/uuid.c:643,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/uuid.c:644,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/uuid.c:645,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/uuid.c:646,1
    - Dst: uuid_set_version
      Src: /src/postgres/src/backend/utils/adt/uuid.c:664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - unix_ts_ms
    - sub_ms
    argTypes:
    - uint64
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 667
    functionName: generate_uuidv7
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - errcode
    - uuid_set_version
    - ereport
    - errmsg
    - pg_strong_random
    - palloc
    linkageType: ''
    returnType: pg_uuid_t
    signature: 'pg_uuid_t *

      generate_uuidv7(uint64 unix_ts_ms, uint32 sub_ms)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_real_time_ns_ascending
      Src: /src/postgres/src/backend/utils/adt/uuid.c:675,1
    - Dst: generate_uuidv7
      Src: /src/postgres/src/backend/utils/adt/uuid.c:676,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 672
    functionDepth: 3
    functionLinenumber: 672
    functionLinenumberEnd: 679
    functionName: uuidv7
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 1
    functionsReached:
    - PG_RETURN_UUID_P
    - generate_uuidv7
    - get_real_time_ns_ascending
    linkageType: ''
    returnType: Datum
    signature: Datum uuidv7(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:687,1
    - Dst: get_real_time_ns_ascending
      Src: /src/postgres/src/backend/utils/adt/uuid.c:690,1
    - Dst: DatumGetTimestampTz
      Src: /src/postgres/src/backend/utils/adt/uuid.c:704,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/uuid.c:704,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:705,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:706,1
    - Dst: generate_uuidv7
      Src: /src/postgres/src/backend/utils/adt/uuid.c:712,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 684
    functionDepth: 3
    functionLinenumber: 684
    functionLinenumberEnd: 715
    functionName: uuidv7_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - get_real_time_ns_ascending
    - DatumGetTimestampTz
    - IntervalPGetDatum
    - PG_RETURN_UUID_P
    - PG_GETARG_INTERVAL_P
    - DirectFunctionCall2
    - TimestampTzGetDatum
    - generate_uuidv7
    linkageType: ''
    returnType: Datum
    signature: Datum uuidv7_interval(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:731,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:738,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/uuid.c:756,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/uuid.c:772,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:776,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 777
    functionName: uuid_extract_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_NULL
    - PG_RETURN_TIMESTAMPTZ
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_extract_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:787,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:792,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/utils/adt/uuid.c:796,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 797
    functionName: uuid_extract_version
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_RETURN_NULL
    - PG_RETURN_UINT16
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_extract_version(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/enum.c:66,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/utils/adt/enum.c:72,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/utils/adt/enum.c:79,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/utils/adt/enum.c:80,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/utils/adt/enum.c:81,1
    - Dst: EnumUncommitted
      Src: /src/postgres/src/backend/utils/adt/enum.c:90,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:97,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:98,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:99,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/enum.c:100,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/enum.c:101,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/enum.c:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - enumval_tup
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 62
    functionDepth: 4
    functionLinenumber: 62
    functionLinenumberEnd: 103
    functionName: check_safe_enum_use
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - EnumUncommitted
    - TransactionIdIsInProgress
    - errcode
    - TransactionIdDidCommit
    - HeapTupleHeaderGetXmin
    - ereport
    - HeapTupleHeaderXminCommitted
    - errhint
    - GETSTRUCT
    - errmsg
    - NameStr
    linkageType: ''
    returnType: void
    signature: void check_safe_enum_use(HeapTuple enumval_tup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/enum.c:111,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:112,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/enum.c:118,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/enum.c:119,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:120,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:121,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/enum.c:122,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/utils/adt/enum.c:125,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:126,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:127,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:128,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/enum.c:129,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:130,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:131,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/enum.c:132,1
    - Dst: check_safe_enum_use
      Src: /src/postgres/src/backend/utils/adt/enum.c:141,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/enum.c:147,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/enum.c:149,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 108
    functionDepth: 5
    functionLinenumber: 108
    functionLinenumberEnd: 152
    functionName: enum_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - check_safe_enum_use
    - errcode
    - HeapTupleIsValid
    - PG_GETARG_CSTRING
    - CStringGetDatum
    - PG_RETURN_OID
    - ReleaseSysCache
    - strlen
    - PG_GETARG_OID
    - errmsg
    - GETSTRUCT
    - ereturn
    - ObjectIdGetDatum
    - SearchSysCache2
    linkageType: ''
    returnType: Datum
    signature: Datum enum_in(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:157,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/enum.c:162,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:162,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:163,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:166,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/enum.c:168,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/enum.c:170,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/enum.c:170,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/enum.c:172,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/enum.c:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 175
    functionName: enum_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - errcode
    - HeapTupleIsValid
    - pstrdup
    - ereport
    - PG_RETURN_CSTRING
    - ReleaseSysCache
    - PG_GETARG_OID
    - errmsg
    - GETSTRUCT
    - NameStr
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum enum_out(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/enum.c:181,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:182,1
    - Dst: pq_getmsgtext
      Src: /src/postgres/src/backend/utils/adt/enum.c:188,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/enum.c:191,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:192,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:193,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:194,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/enum.c:195,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/utils/adt/enum.c:198,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:199,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:200,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:201,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:204,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/enum.c:205,1
    - Dst: check_safe_enum_use
      Src: /src/postgres/src/backend/utils/adt/enum.c:209,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/enum.c:211,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/enum.c:213,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/enum.c:215,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 178
    functionDepth: 5
    functionLinenumber: 178
    functionLinenumberEnd: 218
    functionName: enum_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - check_safe_enum_use
    - errcode
    - HeapTupleIsValid
    - CStringGetDatum
    - pfree
    - ereport
    - ObjectIdGetDatum
    - PG_RETURN_OID
    - ReleaseSysCache
    - strlen
    - PG_GETARG_OID
    - errmsg
    - GETSTRUCT
    - pq_getmsgtext
    - PG_GETARG_POINTER
    - SearchSysCache2
    linkageType: ''
    returnType: Datum
    signature: Datum enum_recv(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:223,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/enum.c:228,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:228,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:229,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:232,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/enum.c:234,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/enum.c:236,1
    - Dst: pq_sendtext
      Src: /src/postgres/src/backend/utils/adt/enum.c:237,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/enum.c:237,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/enum.c:237,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/enum.c:237,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/enum.c:239,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/enum.c:241,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/enum.c:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 220
    functionDepth: 4
    functionLinenumber: 220
    functionLinenumberEnd: 242
    functionName: enum_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - pq_sendtext
    - pq_endtypsend
    - errcode
    - HeapTupleIsValid
    - ereport
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - ReleaseSysCache
    - PG_GETARG_OID
    - errmsg
    - GETSTRUCT
    - NameStr
    - strlen
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum enum_send(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/enum.c:263,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/enum.c:287,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:287,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:289,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:291,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/enum.c:293,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/enum.c:295,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/enum.c:297,1
    - Dst: compare_values_of_enum
      Src: /src/postgres/src/backend/utils/adt/enum.c:302,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - arg1
    - arg2
    - fcinfo
    argTypes:
    - Oid
    - Oid
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 303
    functionName: enum_cmp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - SearchSysCache1
    - compare_values_of_enum
    - errcode
    - Assert
    - HeapTupleIsValid
    - ereport
    - ReleaseSysCache
    - errmsg
    - GETSTRUCT
    - ObjectIdGetDatum
    - lookup_type_cache
    linkageType: ''
    returnType: int
    signature: int enum_cmp_internal(Oid arg1, Oid arg2, FunctionCallInfo fcinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:308,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:309,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/enum.c:311,1
    - Dst: enum_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/enum.c:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 305
    functionDepth: 3
    functionLinenumber: 305
    functionLinenumberEnd: 312
    functionName: enum_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - enum_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum enum_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:317,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:318,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/enum.c:320,1
    - Dst: enum_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/enum.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 321
    functionName: enum_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - enum_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum enum_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:326,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:327,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/enum.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 330
    functionName: enum_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum enum_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:335,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:336,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/enum.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 339
    functionName: enum_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum enum_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:344,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:345,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/enum.c:347,1
    - Dst: enum_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/enum.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 341
    functionDepth: 3
    functionLinenumber: 341
    functionLinenumberEnd: 348
    functionName: enum_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - enum_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum enum_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:353,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:354,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/enum.c:356,1
    - Dst: enum_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/enum.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 350
    functionDepth: 3
    functionLinenumber: 350
    functionLinenumberEnd: 357
    functionName: enum_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - enum_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum enum_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:362,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:363,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:365,1
    - Dst: enum_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/enum.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 359
    functionDepth: 3
    functionLinenumber: 359
    functionLinenumberEnd: 366
    functionName: enum_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - PG_GETARG_OID
    - enum_cmp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum enum_smaller(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:371,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:372,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:374,1
    - Dst: enum_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/enum.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 368
    functionDepth: 3
    functionLinenumber: 368
    functionLinenumberEnd: 375
    functionName: enum_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - PG_GETARG_OID
    - enum_cmp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum enum_larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:380,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:381,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/enum.c:383,1
    - Dst: enum_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/enum.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 384
    functionName: enum_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - enum_cmp_internal
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum enum_cmp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/utils/adt/enum.c:406,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:409,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/enum.c:411,1
    - Dst: index_open
      Src: /src/postgres/src/backend/utils/adt/enum.c:412,1
    - Dst: systable_beginscan_ordered
      Src: /src/postgres/src/backend/utils/adt/enum.c:413,1
    - Dst: systable_getnext_ordered
      Src: /src/postgres/src/backend/utils/adt/enum.c:416,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:417,1
    - Dst: check_safe_enum_use
      Src: /src/postgres/src/backend/utils/adt/enum.c:420,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/enum.c:421,1
    - Dst: systable_endscan_ordered
      Src: /src/postgres/src/backend/utils/adt/enum.c:429,1
    - Dst: index_close
      Src: /src/postgres/src/backend/utils/adt/enum.c:430,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/enum.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - enumtypoid
    - direction
    argTypes:
    - Oid
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 391
    functionDepth: 5
    functionLinenumber: 391
    functionLinenumberEnd: 434
    functionName: enum_endpoint
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - ScanKeyInit
    - systable_getnext_ordered
    - check_safe_enum_use
    - HeapTupleIsValid
    - systable_endscan_ordered
    - index_open
    - table_open
    - systable_beginscan_ordered
    - index_close
    - GETSTRUCT
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: Oid
    signature: Oid enum_endpoint(Oid enumtypoid, ScanDirection direction)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/enum.c:447,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:449,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:450,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:451,1
    - Dst: enum_endpoint
      Src: /src/postgres/src/backend/utils/adt/enum.c:454,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:456,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:457,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:458,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:459,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/enum.c:460,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:462,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 436
    functionDepth: 6
    functionLinenumber: 436
    functionLinenumberEnd: 463
    functionName: enum_first
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - get_fn_expr_argtype
    - PG_RETURN_OID
    - errmsg
    - enum_endpoint
    - OidIsValid
    linkageType: ''
    returnType: Datum
    signature: Datum enum_first(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/enum.c:476,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:478,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:479,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:480,1
    - Dst: enum_endpoint
      Src: /src/postgres/src/backend/utils/adt/enum.c:483,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:485,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:486,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:487,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:488,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/enum.c:489,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 465
    functionDepth: 6
    functionLinenumber: 465
    functionLinenumberEnd: 492
    functionName: enum_last
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - get_fn_expr_argtype
    - PG_RETURN_OID
    - errmsg
    - enum_endpoint
    - OidIsValid
    linkageType: ''
    returnType: Datum
    signature: Datum enum_last(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/enum.c:502,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:505,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/enum.c:506,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/enum.c:509,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/enum.c:516,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:518,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:520,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/enum.c:522,1
    - Dst: enum_range_internal
      Src: /src/postgres/src/backend/utils/adt/enum.c:522,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 495
    functionDepth: 2
    functionLinenumber: 495
    functionLinenumberEnd: 523
    functionName: enum_range_bounds
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - enum_range_internal
    - errcode
    - ereport
    - PG_GETARG_OID
    - errmsg
    - PG_RETURN_ARRAYTYPE_P
    - get_fn_expr_argtype
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum enum_range_bounds(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/enum.c:536,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/enum.c:538,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/enum.c:539,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/enum.c:540,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/enum.c:542,1
    - Dst: enum_range_internal
      Src: /src/postgres/src/backend/utils/adt/enum.c:542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 544
    functionName: enum_range_all
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 0
    functionsReached:
    - enum_range_internal
    - errcode
    - ereport
    - PG_RETURN_ARRAYTYPE_P
    - errmsg
    - get_fn_expr_argtype
    linkageType: ''
    returnType: Datum
    signature: Datum enum_range_all(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/utils/adt/enum.c:565,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:568,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/enum.c:570,1
    - Dst: index_open
      Src: /src/postgres/src/backend/utils/adt/enum.c:571,1
    - Dst: systable_beginscan_ordered
      Src: /src/postgres/src/backend/utils/adt/enum.c:572,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/enum.c:575,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:577,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:579,1
    - Dst: systable_getnext_ordered
      Src: /src/postgres/src/backend/utils/adt/enum.c:579,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/enum.c:581,1
    - Dst: check_safe_enum_use
      Src: /src/postgres/src/backend/utils/adt/enum.c:589,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/enum.c:594,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/enum.c:597,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/enum.c:600,1
    - Dst: systable_endscan_ordered
      Src: /src/postgres/src/backend/utils/adt/enum.c:604,1
    - Dst: index_close
      Src: /src/postgres/src/backend/utils/adt/enum.c:605,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/enum.c:606,1
    - Dst: construct_array
      Src: /src/postgres/src/backend/utils/adt/enum.c:610,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/enum.c:613,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - enumtypoid
    - lower
    - upper
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 546
    functionDepth: 5
    functionLinenumber: 546
    functionLinenumberEnd: 616
    functionName: enum_range_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/enum.c
    functionUses: 2
    functionsReached:
    - ScanKeyInit
    - systable_getnext_ordered
    - check_safe_enum_use
    - HeapTupleIsValid
    - systable_endscan_ordered
    - pfree
    - index_open
    - repalloc
    - table_open
    - systable_beginscan_ordered
    - index_close
    - construct_array
    - GETSTRUCT
    - palloc
    - OidIsValid
    - ObjectIdGetDatum
    - table_close
    linkageType: ''
    returnType: ArrayType
    signature: 'ArrayType *

      enum_range_internal(Oid enumtypoid, Oid lower, Oid upper)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:70,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:71,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:74,1
    - Dst: va_start
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:81,1
    - Dst: appendStringInfoVA
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:82,1
    - Dst: va_end
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:83,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:86,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - buf
    - pretty
    - indent
    - fmt
    argTypes:
    - StringInfo
    - bool
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 88
    functionName: append_ddl_option
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - appendStringInfoVA
    - enlargeStringInfo
    - appendStringInfoSpaces
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void append_ddl_option(StringInfo buf, bool pretty, int indent,\n\t\t\t\t
      \ const char *fmt, ...)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:106,1
    - Dst: GetConfigOptionFlags
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:108,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:114,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:117,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:121,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:127,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:128,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:128,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:130,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:133,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:133,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:135,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - buf
    - name
    - value
    argTypes:
    - StringInfo
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 136
    functionName: append_guc_value
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - elog
    - list_free
    - pfree
    - GetConfigOptionFlags
    - pstrdup
    - appendStringInfoString
    - quote_literal_cstr
    - SplitGUCList
    linkageType: ''
    returnType: void
    signature: void append_guc_value(StringInfo buf, const char *name, const char
      *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:127,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:128,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 129
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 11
    functionsReached:
    - appendStringInfoString
    - quote_literal_cstr
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, curname, namelist)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:162,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:162,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:163,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:166,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:168,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:169,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:169,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:172,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:172,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:175,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:176,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:177,1
    - Dst: IsReservedName
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:184,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:185,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:186,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:187,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:188,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:190,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:191,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:191,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:198,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:201,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:204,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:207,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:210,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:213,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:216,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:224,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:227,1
    - Dst: DatumGetTimestampTz
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:239,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:240,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:241,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:242,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:247,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:249,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:250,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:253,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:262,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:264,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:264,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:273,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:274,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:277,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:278,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:281,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:281,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:283,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:297,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:299,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:309,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:310,1
    - Dst: DatumGetArrayTypePCopy
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:314,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:316,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:326,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:327,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:330,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:336,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:337,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:337,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:340,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:341,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:343,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:344,1
    - Dst: append_guc_value
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:346,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:348,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:350,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:350,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:352,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:355,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:356,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:357,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:360,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:363,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:364,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:373,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:374,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:377,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:378,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:381,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:381,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:383,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:387,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:388,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:390,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:391,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:392,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:393,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:394,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:398,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:399,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:401,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:401,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:403,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:404,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:407,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:408,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:411,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:412,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 99
    argCount: 3
    argNames:
    - roleid
    - pretty
    - memberships
    argTypes:
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 148
    functionDepth: 6
    functionLinenumber: 148
    functionLinenumberEnd: 415
    functionName: pg_get_role_ddl_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - IsReservedName
    - strchr
    - pstrdup
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - DatumGetTimestampTz
    - GetUserNameFromId
    - NameStr
    - table_close
    - resetStringInfo
    - EncodeSpecialTimestamp
    - SearchSysCache1
    - systable_endscan
    - HeapTupleIsValid
    - RelationGetDescr
    - pfree
    - pg_class_aclcheck
    - table_open
    - ReleaseSysCache
    - get_database_name
    - quote_literal_cstr
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - TextDatumGetCString
    - appendStringInfoChar
    - heap_getattr
    - systable_beginscan
    - append_ddl_option
    - initStringInfo
    - ereport
    - lappend
    - GETSTRUCT
    - quote_identifier
    - append_guc_value
    - deconstruct_array_builtin
    - ScanKeyInit
    - appendStringInfo
    - DatumGetArrayTypePCopy
    - errdetail
    - EncodeDateTime
    - systable_getnext
    - SysCacheGetAttr
    linkageType: ''
    returnType: List
    signature: 'List *

      pg_get_role_ddl_internal(Oid roleid, bool pretty, bool memberships)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:431,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:438,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:439,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:441,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:442,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:443,1
    - Dst: pg_get_role_ddl_internal
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:445,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:447,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:449,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:452,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:459,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:461,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:461,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:465,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:466,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 425
    functionDepth: 7
    functionLinenumber: 425
    functionLinenumberEnd: 468
    functionName: pg_get_role_ddl
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - PG_GETARG_BOOL
    - SRF_FIRSTCALL_INIT
    - pg_get_role_ddl_internal
    - list_free_deep
    - SRF_RETURN_DONE
    - MemoryContextSwitchTo
    - PG_GETARG_OID
    - CStringGetTextDatum
    - list_length
    - list_nth
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_role_ddl(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:491,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:491,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:492,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:493,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:494,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:495,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:498,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:499,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:499,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:502,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:502,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:504,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:505,1
    - Dst: IsReservedName
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:512,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:513,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:514,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:515,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:516,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:518,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:521,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:521,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:526,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:527,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:528,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:529,1
    - Dst: get_tablespace_location
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:533,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:544,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:544,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:545,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:547,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:548,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:550,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:552,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:553,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:553,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:556,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:560,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:561,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:562,1
    - Dst: get_reloptions
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:563,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:564,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:565,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:565,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:568,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:569,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:570,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 3
    argNames:
    - tsid
    - pretty
    - no_owner
    argTypes:
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 478
    functionDepth: 6
    functionLinenumber: 478
    functionLinenumberEnd: 573
    functionName: pg_get_tablespace_ddl_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - IsReservedName
    - pstrdup
    - GetUserNameFromId
    - NameStr
    - resetStringInfo
    - SearchSysCache1
    - HeapTupleIsValid
    - pfree
    - appendStringInfoString
    - pg_class_aclcheck
    - ReleaseSysCache
    - quote_literal_cstr
    - errmsg
    - ObjectIdGetDatum
    - appendStringInfoChar
    - append_ddl_option
    - initStringInfo
    - ereport
    - lappend
    - get_reloptions
    - strlen
    - GETSTRUCT
    - aclcheck_error
    - quote_identifier
    - appendStringInfo
    - strncmp
    - errdetail
    - get_tablespace_location
    - SysCacheGetAttr
    linkageType: ''
    returnType: List
    signature: 'List *

      pg_get_tablespace_ddl_internal(Oid tsid, bool pretty, bool no_owner)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:584,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:590,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:591,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:593,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:594,1
    - Dst: pg_get_tablespace_ddl_internal
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:596,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:598,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:600,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:603,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:610,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:612,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:612,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:616,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:617,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - fcinfo
    - tsid
    argTypes:
    - FunctionCallInfo
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 578
    functionDepth: 7
    functionLinenumber: 578
    functionLinenumberEnd: 619
    functionName: pg_get_tablespace_ddl_srf
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - PG_GETARG_BOOL
    - SRF_FIRSTCALL_INIT
    - list_free_deep
    - SRF_RETURN_DONE
    - MemoryContextSwitchTo
    - CStringGetTextDatum
    - list_length
    - list_nth
    - pg_get_tablespace_ddl_internal
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_tablespace_ddl_srf(FunctionCallInfo fcinfo, Oid tsid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:628,1
    - Dst: pg_get_tablespace_ddl_srf
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 625
    functionDepth: 8
    functionLinenumber: 625
    functionLinenumberEnd: 631
    functionName: pg_get_tablespace_ddl_oid
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - pg_get_tablespace_ddl_srf
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_tablespace_ddl_oid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:640,1
    - Dst: get_tablespace_oid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:641,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:641,1
    - Dst: pg_get_tablespace_ddl_srf
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 637
    functionDepth: 8
    functionLinenumber: 637
    functionLinenumberEnd: 644
    functionName: pg_get_tablespace_ddl_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - pg_get_tablespace_ddl_srf
    - PG_GETARG_NAME
    - NameStr
    - get_tablespace_oid
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_tablespace_ddl_name(PG_FUNCTION_ARGS)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:673,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:673,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:674,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:675,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:676,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:677,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:680,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:680,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:682,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:683,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:685,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:686,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:686,1
    - Dst: database_is_invalid_form
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:692,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:693,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:694,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:695,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:702,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:702,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:703,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:705,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:706,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:708,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:711,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:711,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:718,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:721,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:722,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:723,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:724,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:730,1
    - Dst: collprovider_name
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:731,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:733,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:735,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:739,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:741,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:742,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:744,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:745,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:747,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:748,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:753,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:754,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:756,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:757,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:761,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:765,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:768,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:769,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:771,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:772,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:776,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:779,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:780,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:780,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:783,1
    - Dst: get_tablespace_name
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:785,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:788,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:789,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:790,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:792,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:794,1
    - Dst: append_ddl_option
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:795,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:796,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:799,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:800,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:800,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:803,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:805,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:807,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:808,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:809,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:809,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:810,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:811,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:811,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:817,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:818,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:819,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:820,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:820,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:826,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:827,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:828,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:829,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:829,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:835,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:836,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:837,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:838,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:838,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:841,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:849,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:850,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:853,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:854,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:857,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:859,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:862,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:862,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:873,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:874,1
    - Dst: DatumGetArrayTypePCopy
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:878,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:880,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:890,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:891,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:894,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:899,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:900,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:901,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:902,1
    - Dst: append_guc_value
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:904,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:906,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:908,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:908,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:910,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:913,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:914,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:915,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:918,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:919,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:921,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:922,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 110
    argCount: 4
    argNames:
    - dbid
    - pretty
    - no_owner
    - no_tablespace
    argTypes:
    - Oid
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 654
    functionDepth: 6
    functionLinenumber: 654
    functionLinenumberEnd: 925
    functionName: pg_get_database_ddl_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - errcode
    - strcmp
    - strchr
    - pstrdup
    - object_aclcheck
    - GetUserNameFromId
    - NameStr
    - table_close
    - resetStringInfo
    - SearchSysCache1
    - systable_endscan
    - HeapTupleIsValid
    - database_is_invalid_form
    - pfree
    - RelationGetDescr
    - table_open
    - pg_encoding_to_char
    - get_database_name
    - ReleaseSysCache
    - quote_literal_cstr
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - TextDatumGetCString
    - appendStringInfoChar
    - heap_getattr
    - systable_beginscan
    - append_ddl_option
    - initStringInfo
    - ereport
    - lappend
    - strlen
    - GETSTRUCT
    - aclcheck_error
    - get_tablespace_name
    - quote_identifier
    - append_guc_value
    - deconstruct_array_builtin
    - ScanKeyInit
    - pg_strcasecmp
    - appendStringInfo
    - DatumGetArrayTypePCopy
    - errdetail
    - collprovider_name
    - systable_getnext
    - SysCacheGetAttr
    linkageType: ''
    returnType: List
    signature: "List *\npg_get_database_ddl_internal(Oid dbid, bool pretty,\n\t\t\t\t\t\t\t
      bool no_owner, bool no_tablespace)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:937,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:945,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:946,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:948,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:949,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:950,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:951,1
    - Dst: pg_get_database_ddl_internal
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:953,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:956,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:958,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:961,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:968,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:970,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:970,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:974,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/ddlutils.c:975,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 931
    functionDepth: 7
    functionLinenumber: 931
    functionLinenumberEnd: 977
    functionName: pg_get_database_ddl
    functionSourceFile: /src/postgres/src/backend/utils/adt/ddlutils.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - SRF_PERCALL_SETUP
    - PG_GETARG_BOOL
    - SRF_FIRSTCALL_INIT
    - pg_get_database_ddl_internal
    - list_free_deep
    - SRF_RETURN_DONE
    - MemoryContextSwitchTo
    - PG_GETARG_OID
    - CStringGetTextDatum
    - list_length
    - list_nth
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_database_ddl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ia
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: IA_TOTAL_COUNT
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IA_TOTAL_COUNT(ia)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArrayGetIntegerTypmods
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:100,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:107,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:108,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:109,1
    - Dst: anytimestamp_typmod_check
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - istz
    - ta
    argTypes:
    - bool
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 112
    functionName: anytimestamp_typmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - ArrayGetIntegerTypmods
    - errmsg
    - anytimestamp_typmod_check
    linkageType: ''
    returnType: int32
    signature: int32 anytimestamp_typmodin(bool istz, ArrayType *ta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:119,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:120,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:121,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - istz
    - typmod
    argTypes:
    - bool
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 134
    functionName: anytimestamp_typmod_check
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: int32
    signature: int32 anytimestamp_typmod_check(bool istz, int32 typmod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:143,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - istz
    - typmod
    argTypes:
    - bool
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 146
    functionName: anytimestamp_typmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - psprintf
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      anytimestamp_typmodout(bool istz, int32 typmod)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:160,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:162,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:164,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:179,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:182,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:186,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:187,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:193,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:194,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:195,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:196,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:200,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:204,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:208,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:212,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:214,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:217,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:219,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 220
    functionName: timestamp_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - elog
    - ereturn
    - ParseDateTime
    - AdjustTimestampForTypmod
    - errcode
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_CSTRING
    - SetEpochTimestamp
    - DateTimeParseError
    - tm2timestamp
    - TIMESTAMP_NOEND
    - PG_GETARG_OID
    - errmsg
    - PG_RETURN_NULL
    - DecodeDateTime
    - PG_GETARG_INT32
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_in(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:229,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:236,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:237,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:238,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:243,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:245,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 247
    functionName: timestamp_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - errcode
    - pstrdup
    - TIMESTAMP_NOT_FINITE
    - ereport
    - PG_RETURN_CSTRING
    - timestamp2tm
    - errmsg
    - EncodeDateTime
    - EncodeSpecialTimestamp
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_out(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:255,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:258,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:260,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:266,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:269,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:271,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:273,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:275,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:277,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:279,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 280
    functionName: timestamp_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AdjustTimestampForTypmod
    - errcode
    - PG_RETURN_TIMESTAMP
    - TIMESTAMP_NOT_FINITE
    - ereport
    - timestamp2tm
    - IS_VALID_TIMESTAMP
    - PG_GETARG_OID
    - errmsg
    - pq_getmsgint64
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:288,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:291,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:292,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:293,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 285
    functionDepth: 4
    functionLinenumber: 285
    functionLinenumberEnd: 294
    functionName: timestamp_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:299,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:301,1
    - Dst: anytimestamp_typmodin
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 296
    functionDepth: 4
    functionLinenumber: 296
    functionLinenumberEnd: 302
    functionName: timestamptypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - anytimestamp_typmodin
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptypmodin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:307,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:309,1
    - Dst: anytimestamp_typmodout
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 304
    functionDepth: 3
    functionLinenumber: 304
    functionLinenumberEnd: 310
    functionName: timestamptypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - anytimestamp_typmodout
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptypmodout(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:322,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:325,1
    - Dst: TemporalSimplify
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:329,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 333
    functionName: timestamp_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - IsA
    - TemporalSimplify
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_support(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:343,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:344,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:349,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:350,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 353
    functionName: timestamp_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AdjustTimestampForTypmod
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_TIMESTAMP
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_scale(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:366,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:367,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:368,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:369,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:370,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:371,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:372,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:376,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:377,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:378,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:379,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:380,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:381,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:382,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:385,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:389,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:390,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:391,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:394,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - time
    - typmod
    - escontext
    argTypes:
    - Timestamp*
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 407
    functionName: AdjustTimestampForTypmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 3
    functionsReached:
    - errcode
    - INT64CONST
    - TIMESTAMP_NOT_FINITE
    - errmsg
    - ereturn
    linkageType: ''
    returnType: bool
    signature: bool AdjustTimestampForTypmod(Timestamp *time, int32 typmod, Node *escontext)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:416,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:418,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:420,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:435,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:438,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:442,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:444,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:450,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:451,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:452,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:453,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:457,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:461,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:465,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:469,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:471,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:474,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:476,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 413
    functionDepth: 3
    functionLinenumber: 413
    functionLinenumberEnd: 477
    functionName: timestamptz_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - elog
    - ereturn
    - ParseDateTime
    - AdjustTimestampForTypmod
    - errcode
    - PG_RETURN_TIMESTAMPTZ
    - PG_GETARG_CSTRING
    - SetEpochTimestamp
    - DateTimeParseError
    - tm2timestamp
    - TIMESTAMP_NOEND
    - PG_GETARG_OID
    - errmsg
    - PG_RETURN_NULL
    - DecodeDateTime
    - PG_GETARG_INT32
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_in(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:493,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:505,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:506,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:507,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:508,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:510,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:512,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:520,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:521,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:524,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:525,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:526,1
    - Dst: DecodeTimezoneName
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:528,1
    - Dst: DetermineTimeZoneAbbrevOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:538,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:543,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - tm
    - zone
    argTypes:
    - struct pg_tm*
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 486
    functionDepth: 2
    functionLinenumber: 486
    functionLinenumberEnd: 548
    functionName: parse_sane_timezone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DetermineTimeZoneAbbrevOffset
    - isdigit
    - errcode
    - DecodeTimezone
    - ereport
    - text_to_cstring_buffer
    - errhint
    - DetermineTimeZoneOffset
    - errmsg
    - DecodeTimezoneName
    linkageType: ''
    returnType: int
    signature: int parse_sane_timezone(struct pg_tm *tm, text *zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:560,1
    - Dst: DecodeTimezoneNameToTz
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zone
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 563
    functionName: lookup_timezone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - text_to_cstring_buffer
    - DecodeTimezoneNameToTz
    linkageType: ''
    returnType: pg_tz
    signature: 'pg_tz *

      lookup_timezone(text *zone)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ValidateDate
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:591,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:594,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:595,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:596,1
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:599,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:600,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:601,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:602,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:605,1
    - Dst: float_time_overflows
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:608,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:609,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:610,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:611,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:616,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:618,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:618,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:619,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:620,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:621,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:622,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:627,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:628,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:629,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:630,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 6
    argNames:
    - year
    - month
    - day
    - hour
    - min
    - sec
    argTypes:
    - int
    - int
    - int
    - int
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 569
    functionDepth: 2
    functionLinenumber: 569
    functionLinenumberEnd: 635
    functionName: make_timestamp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - IS_VALID_JULIAN
    - float_time_overflows
    - errcode
    - ereport
    - IS_VALID_TIMESTAMP
    - pg_add_s64_overflow
    - date2j
    - unlikely
    - errmsg
    - ValidateDate
    - rint
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: Timestamp
    signature: "Timestamp make_timestamp_internal(int year, int month, int day,\n\t\t\t\t\t\tint
      hour, int min, double sec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:643,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:644,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:645,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:646,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:647,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:648,1
    - Dst: make_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:651,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 640
    functionDepth: 3
    functionLinenumber: 640
    functionLinenumberEnd: 655
    functionName: make_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - make_timestamp_internal
    - PG_GETARG_FLOAT8
    - PG_RETURN_TIMESTAMP
    linkageType: ''
    returnType: Datum
    signature: Datum make_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:663,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:664,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:665,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:666,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:667,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:668,1
    - Dst: make_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:671,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:674,1
    - Dst: timestamp2timestamptz
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 660
    functionDepth: 3
    functionLinenumber: 660
    functionLinenumberEnd: 675
    functionName: make_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - make_timestamp_internal
    - PG_GETARG_FLOAT8
    - PG_GETARG_INT32
    - timestamp2timestamptz
    - PG_RETURN_TIMESTAMPTZ
    linkageType: ''
    returnType: Datum
    signature: Datum make_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:684,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:685,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:686,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:687,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:688,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:689,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:690,1
    - Dst: make_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:697,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:700,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:701,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:702,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:703,1
    - Dst: parse_sane_timezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:705,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:707,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:709,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:710,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:711,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:712,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 681
    functionDepth: 3
    functionLinenumber: 681
    functionLinenumberEnd: 715
    functionName: make_timestamptz_at_timezone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - make_timestamp_internal
    - PG_GETARG_FLOAT8
    - errcode
    - PG_RETURN_TIMESTAMPTZ
    - ereport
    - timestamp2tm
    - dt2local
    - IS_VALID_TIMESTAMP
    - errmsg
    - parse_sane_timezone
    - PG_GETARG_INT32
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum make_timestamptz_at_timezone(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:724,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:728,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:729,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:730,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:731,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:733,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:736,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:738,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:747,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:748,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:749,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:754,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:759,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:761,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:762,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:765,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 721
    functionDepth: 2
    functionLinenumber: 721
    functionLinenumberEnd: 766
    functionName: float8_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT8
    - errcode
    - PG_RETURN_TIMESTAMP
    - isinf
    - ereport
    - TIMESTAMP_NOEND
    - IS_VALID_TIMESTAMP
    - errmsg
    - rint
    - isnan
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum float8_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:775,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:784,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:785,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:786,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:787,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:789,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:790,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:791,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:793,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:794,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 772
    functionDepth: 2
    functionLinenumber: 772
    functionLinenumberEnd: 795
    functionName: timestamptz_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_GETARG_TIMESTAMPTZ
    - pstrdup
    - TIMESTAMP_NOT_FINITE
    - ereport
    - PG_RETURN_CSTRING
    - timestamp2tm
    - errmsg
    - EncodeDateTime
    - EncodeSpecialTimestamp
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_out(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:803,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:806,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:808,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:815,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:818,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:820,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:821,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:822,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:823,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:824,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:826,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:828,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 800
    functionDepth: 3
    functionLinenumber: 800
    functionLinenumberEnd: 829
    functionName: timestamptz_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AdjustTimestampForTypmod
    - errcode
    - PG_RETURN_TIMESTAMPTZ
    - TIMESTAMP_NOT_FINITE
    - ereport
    - timestamp2tm
    - IS_VALID_TIMESTAMP
    - PG_GETARG_OID
    - errmsg
    - pq_getmsgint64
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:837,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:840,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:841,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:842,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 834
    functionDepth: 4
    functionLinenumber: 834
    functionLinenumberEnd: 843
    functionName: timestamptz_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_TIMESTAMPTZ
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:848,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:850,1
    - Dst: anytimestamp_typmodin
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 845
    functionDepth: 4
    functionLinenumber: 845
    functionLinenumberEnd: 851
    functionName: timestamptztypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - anytimestamp_typmodin
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptztypmodin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:856,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:858,1
    - Dst: anytimestamp_typmodout
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 853
    functionDepth: 3
    functionLinenumber: 853
    functionLinenumberEnd: 859
    functionName: timestamptztypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT32
    - anytimestamp_typmodout
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptztypmodout(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:870,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:871,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:876,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:877,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:879,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 867
    functionDepth: 3
    functionLinenumber: 867
    functionLinenumberEnd: 880
    functionName: timestamptz_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AdjustTimestampForTypmod
    - PG_RETURN_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMPTZ
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_scale(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:893,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:895,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:897,1
    - Dst: INTERVAL_RANGE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:917,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:921,1
    - Dst: DecodeInterval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:924,1
    - Dst: DecodeISO8601Interval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:929,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:936,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:937,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:940,1
    - Dst: itmin2interval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:945,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:946,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:947,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:948,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:952,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:956,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:960,1
    - Dst: AdjustIntervalForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:964,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:966,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 890
    functionDepth: 2
    functionLinenumber: 890
    functionLinenumberEnd: 967
    functionName: interval_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errcode
    - itmin2interval
    - PG_RETURN_INTERVAL_P
    - elog
    - ParseDateTime
    - AdjustIntervalForTypmod
    - INTERVAL_NOEND
    - INTERVAL_RANGE
    - DecodeISO8601Interval
    - DecodeInterval
    - errmsg
    - palloc_object
    - INTERVAL_NOBEGIN
    - PG_GETARG_CSTRING
    - PG_GETARG_INT32
    - DateTimeParseError
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum interval_in(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:976,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:982,1
    - Dst: EncodeSpecialInterval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:983,1
    - Dst: interval2itm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:986,1
    - Dst: EncodeInterval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:987,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:990,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:991,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 992
    functionName: interval_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval2itm
    - EncodeSpecialInterval
    - pstrdup
    - INTERVAL_NOT_FINITE
    - PG_RETURN_CSTRING
    - EncodeInterval
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1000,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1003,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1005,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1008,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1010,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1011,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1012,1
    - Dst: AdjustIntervalForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1014,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 997
    functionDepth: 2
    functionLinenumber: 997
    functionLinenumberEnd: 1017
    functionName: interval_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AdjustIntervalForTypmod
    - pq_getmsgint
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_OID
    - pq_getmsgint64
    - palloc_object
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum interval_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1025,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1028,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1029,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1030,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1031,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1032,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1022
    functionDepth: 4
    functionLinenumber: 1022
    functionLinenumberEnd: 1033
    functionName: interval_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_send(PG_FUNCTION_ARGS)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1050,1
    - Dst: ArrayGetIntegerTypmods
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1055,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1067,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1068,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1069,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1070,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1071,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1072,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1073,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1073,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1074,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1074,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1075,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1075,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1075,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1076,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1076,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1076,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1076,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1077,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1077,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1078,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1078,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1078,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1079,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1079,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1084,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1085,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1086,1
    - Dst: INTERVAL_TYPMOD
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1093,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1100,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1101,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1106,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1107,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1108,1
    - Dst: INTERVAL_TYPMOD
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1110,1
    - Dst: INTERVAL_TYPMOD
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1113,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1117,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1118,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1119,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1123,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1047
    functionDepth: 3
    functionLinenumber: 1047
    functionLinenumberEnd: 1124
    functionName: intervaltypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - INTERVAL_MASK
    - ereport
    - ArrayGetIntegerTypmods
    - errmsg
    - PG_GETARG_ARRAYTYPE_P
    - INTERVAL_TYPMOD
    linkageType: ''
    returnType: Datum
    signature: Datum intervaltypmodin(PG_FUNCTION_ARGS)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1129,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1130,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1138,1
    - Dst: INTERVAL_RANGE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1141,1
    - Dst: INTERVAL_PRECISION
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1142,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1146,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1149,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1152,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1155,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1158,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1161,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1164,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1164,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1167,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1167,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1170,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1170,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1170,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1173,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1173,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1173,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1173,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1176,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1176,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1179,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1179,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1179,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1182,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1182,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1189,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1195,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1197,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1199,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1126
    functionDepth: 1
    functionLinenumber: 1126
    functionLinenumberEnd: 1200
    functionName: intervaltypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - elog
    - INTERVAL_MASK
    - PG_RETURN_CSTRING
    - INTERVAL_RANGE
    - palloc
    - PG_GETARG_INT32
    - INTERVAL_PRECISION
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum intervaltypmodout(PG_FUNCTION_ARGS)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: INTERVAL_RANGE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1218,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1220,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1222,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1224,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1226,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1228,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1230,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1232,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1232,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1234,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1234,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1236,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1236,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1236,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1238,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1238,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1238,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1238,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1240,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1240,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1242,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1242,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1242,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1244,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1244,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1249,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1212
    functionDepth: 1
    functionLinenumber: 1212
    functionLinenumberEnd: 1253
    functionName: intervaltypmodleastfield
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - elog
    - INTERVAL_MASK
    - INTERVAL_RANGE
    linkageType: ''
    returnType: int
    signature: int intervaltypmodleastfield(int32 typmod)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1268,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1271,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1277,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1277,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1279,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1281,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1283,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1284,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1291,1
    - Dst: intervaltypmodleastfield
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1297,1
    - Dst: intervaltypmodleastfield
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1298,1
    - Dst: INTERVAL_PRECISION
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1302,1
    - Dst: INTERVAL_PRECISION
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1303,1
    - Dst: relabel_to_typmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1317,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1321,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1265
    functionDepth: 5
    functionLinenumber: 1265
    functionLinenumberEnd: 1322
    functionName: interval_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - exprTypmod
    - Assert
    - linitial
    - DatumGetInt32
    - lsecond
    - intervaltypmodleastfield
    - PG_RETURN_POINTER
    - relabel_to_typmod
    - list_length
    - PG_GETARG_POINTER
    - IsA
    - INTERVAL_PRECISION
    linkageType: ''
    returnType: Datum
    signature: Datum interval_support(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1332,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1333,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1336,1
    - Dst: AdjustIntervalForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1339,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1340,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1329
    functionDepth: 1
    functionLinenumber: 1329
    functionLinenumberEnd: 1343
    functionName: interval_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AdjustIntervalForTypmod
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_INTERVAL_P
    - palloc_object
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum interval_scale(PG_FUNCTION_ARGS)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1357,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1358,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1359,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1360,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1361,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1362,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1363,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1367,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1368,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1369,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1370,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1371,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1372,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1373,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1377,1
    - Dst: INTERVAL_RANGE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1386,1
    - Dst: INTERVAL_PRECISION
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1387,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1413,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1419,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1425,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1425,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1430,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1434,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1439,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1444,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1449,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1450,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1456,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1457,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1458,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1464,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1465,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1466,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1467,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1472,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1473,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1479,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1480,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1481,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1486,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1487,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1492,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1498,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1499,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1500,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1503,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1505,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1508,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1509,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1510,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1515,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1518,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1520,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 61
    argCount: 3
    argNames:
    - interval
    - typmod
    - escontext
    argTypes:
    - Interval*
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1352
    functionDepth: 2
    functionLinenumber: 1352
    functionLinenumberEnd: 1527
    functionName: AdjustIntervalForTypmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 3
    functionsReached:
    - elog
    - pg_sub_s64_overflow
    - INT64CONST
    - errcode
    - INTERVAL_MASK
    - INTERVAL_NOT_FINITE
    - INTERVAL_RANGE
    - pg_add_s64_overflow
    - errmsg
    - ereturn
    - INTERVAL_PRECISION
    linkageType: ''
    returnType: bool
    signature: "bool AdjustIntervalForTypmod(Interval *interval, int32 typmod,\n\t\t\t\t\t\tNode
      *escontext)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1535,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1536,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1537,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1538,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1539,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1540,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1541,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1548,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1548,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1551,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1554,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1555,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1559,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1560,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1567,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1567,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1568,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1569,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1573,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1576,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1579,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1580,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1581,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1583,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1584
      start: 1532
    functionDepth: 3
    functionLinenumber: 1532
    functionLinenumberEnd: 1584
    functionName: make_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - rint
    - FLOAT8_FITS_IN_INT64
    - PG_GETARG_FLOAT8
    - errcode
    - isinf
    - pg_mul_s32_overflow
    - float8_mul
    - INTERVAL_NOT_FINITE
    - ereport
    - pg_add_s64_overflow
    - PG_RETURN_INTERVAL_P
    - errmsg
    - palloc_object
    - PG_RETURN_NULL
    - pg_add_s32_overflow
    - isnan
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum make_interval(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1593,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1594,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1595,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1596,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1598,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dt
    - str
    argTypes:
    - Timestamp
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1590
    functionDepth: 1
    functionLinenumber: 1590
    functionLinenumberEnd: 1599
    functionName: EncodeSpecialTimestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 4
    functionsReached:
    - TIMESTAMP_IS_NOEND
    - strcpy
    - TIMESTAMP_IS_NOBEGIN
    - elog
    linkageType: ''
    returnType: void
    signature: void EncodeSpecialTimestamp(Timestamp dt, char *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1604,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1605,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1606,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1607,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1609,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - interval
    - str
    argTypes:
    - Interval*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1610
    functionName: EncodeSpecialInterval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - INTERVAL_IS_NOBEGIN
    - INTERVAL_IS_NOEND
    - strcpy
    - elog
    linkageType: ''
    returnType: void
    signature: void EncodeSpecialInterval(const Interval *interval, char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1615,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1612
    functionDepth: 1
    functionLinenumber: 1612
    functionLinenumberEnd: 1616
    functionName: now
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 8
    functionsReached:
    - PG_RETURN_TIMESTAMPTZ
    - GetCurrentTransactionStartTimestamp
    linkageType: ''
    returnType: Datum
    signature: Datum now(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1621,1
    - Dst: GetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1618
    functionDepth: 1
    functionLinenumber: 1618
    functionLinenumberEnd: 1622
    functionName: statement_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - GetCurrentStatementStartTimestamp
    - PG_RETURN_TIMESTAMPTZ
    linkageType: ''
    returnType: Datum
    signature: Datum statement_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1627,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1624
    functionDepth: 1
    functionLinenumber: 1624
    functionLinenumberEnd: 1628
    functionName: clock_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - PG_RETURN_TIMESTAMPTZ
    linkageType: ''
    returnType: Datum
    signature: Datum clock_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1630
    functionDepth: 1
    functionLinenumber: 1630
    functionLinenumberEnd: 1634
    functionName: pg_postmaster_start_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMPTZ
    linkageType: ''
    returnType: Datum
    signature: Datum pg_postmaster_start_time(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1636
    functionDepth: 1
    functionLinenumber: 1636
    functionLinenumberEnd: 1640
    functionName: pg_conf_load_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMPTZ
    linkageType: ''
    returnType: Datum
    signature: Datum pg_conf_load_time(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1648
    functionDepth: 2
    functionLinenumber: 1648
    functionLinenumberEnd: 1661
    functionName: GetCurrentTimestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 83
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetCurrentTimestamp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1671,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1666
    functionDepth: 3
    functionLinenumber: 1666
    functionLinenumberEnd: 1675
    functionName: GetSQLCurrentTimestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - AdjustTimestampForTypmod
    - GetCurrentTransactionStartTimestamp
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetSQLCurrentTimestamp(int32 typmod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timestamptz2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1685,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1685,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1687,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1680
    functionDepth: 3
    functionLinenumber: 1680
    functionLinenumberEnd: 1689
    functionName: GetSQLLocalTimestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - AdjustTimestampForTypmod
    - timestamptz2timestamp
    - GetCurrentTransactionStartTimestamp
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp GetSQLLocalTimestamp(int32 typmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1704,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1706,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1708,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1709,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1710,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1712,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1694
    functionDepth: 3
    functionLinenumber: 1694
    functionLinenumberEnd: 1713
    functionName: timeofday
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 19
    functionsReached:
    - gettimeofday
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - pg_strftime
    - pg_localtime
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum timeofday(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - start_time
    - stop_time
    - secs
    - microsecs
    argTypes:
    - TimestampTz
    - TimestampTz
    - long*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1744
      start: 1728
    functionDepth: 0
    functionLinenumber: 1728
    functionLinenumberEnd: 1744
    functionName: TimestampDifference
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void TimestampDifference(TimestampTz start_time, TimestampTz stop_time,\n\t\t\t\t\tlong
      *secs, int *microsecs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1773,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1775,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - start_time
    - stop_time
    argTypes:
    - TimestampTz
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1779
      start: 1764
    functionDepth: 1
    functionLinenumber: 1764
    functionLinenumberEnd: 1779
    functionName: TimestampDifferenceMilliseconds
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 13
    functionsReached:
    - pg_sub_s64_overflow
    - INT64CONST
    linkageType: ''
    returnType: long
    signature: long TimestampDifferenceMilliseconds(TimestampTz start_time, TimestampTz
      stop_time)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - start_time
    - stop_time
    - msec
    argTypes:
    - TimestampTz
    - TimestampTz
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1788
    functionDepth: 1
    functionLinenumber: 1788
    functionLinenumberEnd: 1796
    functionName: TimestampDifferenceExceeds
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 17
    functionsReached:
    - INT64CONST
    linkageType: ''
    returnType: bool
    signature: "bool TimestampDifferenceExceeds(TimestampTz start_time,\n\t\t\t\t\t\t
      \  TimestampTz stop_time,\n\t\t\t\t\t\t   int msec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TimestampDifference
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - start_time
    - stop_time
    - threshold_sec
    argTypes:
    - TimestampTz
    - TimestampTz
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1814
      start: 1802
    functionDepth: 1
    functionLinenumber: 1802
    functionLinenumberEnd: 1814
    functionName: TimestampDifferenceExceedsSeconds
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - TimestampDifference
    linkageType: ''
    returnType: bool
    signature: "bool TimestampDifferenceExceedsSeconds(TimestampTz start_time,\n\t\t\t\t\t\t\t\t
      \ TimestampTz stop_time,\n\t\t\t\t\t\t\t\t  int threshold_sec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tm
    argTypes:
    - pg_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1827
    functionDepth: 0
    functionLinenumber: 1827
    functionLinenumberEnd: 1837
    functionName: time_t_to_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz time_t_to_timestamptz(pg_time_t tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1858
      start: 1849
    functionDepth: 0
    functionLinenumber: 1849
    functionLinenumberEnd: 1858
    functionName: timestamptz_to_time_t
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: pg_time_t
    signature: pg_time_t timestamptz_to_time_t(TimestampTz t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1879,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1880,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1881,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1882,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1884,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1869
    functionDepth: 1
    functionLinenumber: 1869
    functionLinenumberEnd: 1887
    functionName: timestamptz_to_str
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 15
    functionsReached:
    - strlcpy
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - EncodeDateTime
    - EncodeSpecialTimestamp
    linkageType: ''
    returnType: char
    signature: 'char *

      timestamptz_to_str(TimestampTz t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - jd
    - hour
    - min
    - sec
    - fsec
    argTypes:
    - Timestamp
    - int*
    - int*
    - int*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1890
    functionDepth: 0
    functionLinenumber: 1890
    functionLinenumberEnd: 1903
    functionName: dt2time
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dt2time(Timestamp jd, int *hour, int *min, int *sec, fsec_t *fsec)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: TMODULO
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1929,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1931,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1944,1
    - Dst: dt2time
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1945,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1973,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 6
    argNames:
    - dt
    - tzp
    - tm
    - fsec
    - tzn
    - attimezone
    argTypes:
    - Timestamp
    - int*
    - struct pg_tm*
    - fsec_t*
    - char**
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1917
    functionDepth: 3
    functionLinenumber: 1917
    functionLinenumberEnd: 2003
    functionName: timestamp2tm
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 17
    functionsReached:
    - dt2time
    - j2date
    - INT64CONST
    - TMODULO
    - pg_localtime
    linkageType: ''
    returnType: int
    signature: int timestamp2tm(Timestamp dt, int *tzp, struct pg_tm *tm, fsec_t *fsec,
      const char **tzn, pg_tz *attimezone)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2021,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2027,1
    - Dst: time2t
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2028,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2030,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2030,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2031,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2037,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2040,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - tm
    - fsec
    - tzp
    - result
    argTypes:
    - struct pg_tm*
    - fsec_t
    - int*
    - Timestamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 2014
    functionDepth: 1
    functionLinenumber: 2014
    functionLinenumberEnd: 2047
    functionName: tm2timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 8
    functionsReached:
    - IS_VALID_JULIAN
    - dt2local
    - IS_VALID_TIMESTAMP
    - pg_add_s64_overflow
    - unlikely
    - date2j
    - time2t
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: int
    signature: int tm2timestamp(struct pg_tm *tm, fsec_t fsec, int *tzp, Timestamp
      *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - span
    - itm
    argTypes:
    - Interval
    - struct pg_itm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2056
    functionDepth: 0
    functionLinenumber: 2056
    functionLinenumberEnd: 2077
    functionName: interval2itm
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void interval2itm(Interval span, struct pg_itm *itm)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2096,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2100,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2103,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2106,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2109,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - itm
    - span
    argTypes:
    - struct pg_itm*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2087
    functionDepth: 1
    functionLinenumber: 2087
    functionLinenumberEnd: 2112
    functionName: itm2interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pg_add_s64_overflow
    - pg_mul_s64_overflow
    - INTERVAL_NOT_FINITE
    linkageType: ''
    returnType: int
    signature: int itm2interval(struct pg_itm *itm, Interval *span)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - itm_in
    - span
    argTypes:
    - struct pg_itm_in*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2137
      start: 2126
    functionDepth: 0
    functionLinenumber: 2126
    functionLinenumberEnd: 2137
    functionName: itmin2interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int itmin2interval(struct pg_itm_in *itm_in, Interval *span)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - hour
    - min
    - sec
    - fsec
    argTypes:
    - int
    - int
    - int
    - fsec_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2143
      start: 2139
    functionDepth: 0
    functionLinenumber: 2139
    functionLinenumberEnd: 2143
    functionName: time2t
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: TimeOffset
    signature: TimeOffset time2t(const int hour, const int min, const int sec, const
      fsec_t fsec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dt
    - timezone
    argTypes:
    - Timestamp
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2150
      start: 2145
    functionDepth: 0
    functionLinenumber: 2145
    functionLinenumberEnd: 2150
    functionName: dt2local
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp dt2local(Timestamp dt, int timezone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2161,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2163,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2158
    functionDepth: 1
    functionLinenumber: 2158
    functionLinenumberEnd: 2164
    functionName: timestamp_finite
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - TIMESTAMP_NOT_FINITE
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_finite(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2169,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2171,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2172
      start: 2166
    functionDepth: 1
    functionLinenumber: 2166
    functionLinenumberEnd: 2172
    functionName: interval_finite
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - INTERVAL_NOT_FINITE
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_finite(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_gmtime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2185,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2199
      start: 2179
    functionDepth: 8
    functionLinenumber: 2179
    functionLinenumberEnd: 2199
    functionName: GetEpochTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 3
    functionsReached:
    - elog
    - pg_gmtime
    linkageType: ''
    returnType: void
    signature: void GetEpochTime(struct pg_tm *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetEpochTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2208,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2201
    functionDepth: 0
    functionLinenumber: 2201
    functionLinenumberEnd: 2213
    functionName: SetEpochTimestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 4
    functionsReached:
    - tm2timestamp
    - GetEpochTime
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp SetEpochTimestamp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dt1
    - dt2
    argTypes:
    - Timestamp
    - Timestamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2221
    functionDepth: 0
    functionLinenumber: 2221
    functionLinenumberEnd: 2225
    functionName: timestamp_cmp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timestamp_cmp_internal(Timestamp dt1, Timestamp dt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2230,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2231,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2233,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2234
      start: 2227
    functionDepth: 1
    functionLinenumber: 2227
    functionLinenumberEnd: 2234
    functionName: timestamp_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2239,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2240,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2242,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2243
      start: 2236
    functionDepth: 1
    functionLinenumber: 2236
    functionLinenumberEnd: 2243
    functionName: timestamp_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2248,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2249,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2251,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2245
    functionDepth: 1
    functionLinenumber: 2245
    functionLinenumberEnd: 2252
    functionName: timestamp_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2257,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2258,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2260,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2261
      start: 2254
    functionDepth: 1
    functionLinenumber: 2254
    functionLinenumberEnd: 2261
    functionName: timestamp_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2266,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2267,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2269,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2270
      start: 2263
    functionDepth: 1
    functionLinenumber: 2263
    functionLinenumberEnd: 2270
    functionName: timestamp_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2275,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2276,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2278,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2279
      start: 2272
    functionDepth: 1
    functionLinenumber: 2272
    functionLinenumberEnd: 2279
    functionName: timestamp_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2284,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2285,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2287,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2281
    functionDepth: 1
    functionLinenumber: 2281
    functionLinenumberEnd: 2288
    functionName: timestamp_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2293,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2297
      start: 2290
    functionDepth: 1
    functionLinenumber: 2290
    functionLinenumberEnd: 2297
    functionName: timestamp_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2303,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2314
      start: 2300
    functionDepth: 2
    functionLinenumber: 2300
    functionLinenumberEnd: 2314
    functionName: timestamp_decrement
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DatumGetTimestamp
    - TimestampGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2320,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2331
      start: 2317
    functionDepth: 2
    functionLinenumber: 2317
    functionLinenumberEnd: 2331
    functionName: timestamp_increment
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DatumGetTimestamp
    - TimestampGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_increment(Relation rel, Datum existing, bool *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2336,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2340,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2341,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2344
      start: 2333
    functionDepth: 2
    functionLinenumber: 2333
    functionLinenumberEnd: 2344
    functionName: timestamp_skipsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - TimestampGetDatum
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_skipsupport(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2346
    functionDepth: 3
    functionLinenumber: 2346
    functionLinenumberEnd: 2350
    functionName: timestamp_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - hashint8
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_hash(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8extended
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2352
    functionDepth: 3
    functionLinenumber: 2352
    functionLinenumberEnd: 2356
    functionName: timestamp_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - hashint8extended
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_hash_extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2362
      start: 2358
    functionDepth: 3
    functionLinenumber: 2358
    functionLinenumberEnd: 2362
    functionName: timestamptz_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - hashint8
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_hash(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8extended
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2364
    functionDepth: 3
    functionLinenumber: 2364
    functionLinenumberEnd: 2368
    functionName: timestamptz_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - hashint8extended
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_hash_extended(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timestamp2timestamptz_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2380,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2383,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2386,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2388,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2391,1
    - Dst: timestamptz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2395,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - timestampVal
    - dt2
    argTypes:
    - Timestamp
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2396
      start: 2374
    functionDepth: 1
    functionLinenumber: 2374
    functionLinenumberEnd: 2396
    functionName: timestamp_cmp_timestamptz_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - TIMESTAMP_IS_NOEND
    - timestamp2timestamptz_safe
    - timestamptz_cmp_internal
    - TIMESTAMP_IS_NOBEGIN
    linkageType: ''
    returnType: int32
    signature: int32 timestamp_cmp_timestamptz_internal(Timestamp timestampVal, TimestampTz
      dt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2401,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2402,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2404,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2398
    functionDepth: 2
    functionLinenumber: 2398
    functionLinenumberEnd: 2405
    functionName: timestamp_eq_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_eq_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2410,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2411,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2413,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2414
      start: 2407
    functionDepth: 2
    functionLinenumber: 2407
    functionLinenumberEnd: 2414
    functionName: timestamp_ne_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_ne_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2419,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2420,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2422,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2416
    functionDepth: 2
    functionLinenumber: 2416
    functionLinenumberEnd: 2423
    functionName: timestamp_lt_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_lt_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2428,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2429,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2431,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2425
    functionDepth: 2
    functionLinenumber: 2425
    functionLinenumberEnd: 2432
    functionName: timestamp_gt_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_gt_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2437,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2438,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2440,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2441
      start: 2434
    functionDepth: 2
    functionLinenumber: 2434
    functionLinenumberEnd: 2441
    functionName: timestamp_le_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_le_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2446,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2447,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2449,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2443
    functionDepth: 2
    functionLinenumber: 2443
    functionLinenumberEnd: 2450
    functionName: timestamp_ge_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_ge_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2455,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2456,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2458,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2459
      start: 2452
    functionDepth: 2
    functionLinenumber: 2452
    functionLinenumberEnd: 2459
    functionName: timestamp_cmp_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_cmp_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2464,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2465,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2467,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2461
    functionDepth: 2
    functionLinenumber: 2461
    functionLinenumberEnd: 2468
    functionName: timestamptz_eq_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_eq_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2473,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2474,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2476,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2477
      start: 2470
    functionDepth: 2
    functionLinenumber: 2470
    functionLinenumberEnd: 2477
    functionName: timestamptz_ne_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_ne_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2482,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2483,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2485,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2486
      start: 2479
    functionDepth: 2
    functionLinenumber: 2479
    functionLinenumberEnd: 2486
    functionName: timestamptz_lt_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_lt_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2491,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2492,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2494,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2495
      start: 2488
    functionDepth: 2
    functionLinenumber: 2488
    functionLinenumberEnd: 2495
    functionName: timestamptz_gt_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_gt_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2500,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2501,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2503,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2497
    functionDepth: 2
    functionLinenumber: 2497
    functionLinenumberEnd: 2504
    functionName: timestamptz_le_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_le_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2509,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2510,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2512,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2513
      start: 2506
    functionDepth: 2
    functionLinenumber: 2506
    functionLinenumberEnd: 2513
    functionName: timestamptz_ge_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_ge_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2518,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2519,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2521,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2522
      start: 2515
    functionDepth: 2
    functionLinenumber: 2515
    functionLinenumberEnd: 2522
    functionName: timestamptz_cmp_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_cmp_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2545,1
    - Dst: int64_to_int128
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2549,1
    - Dst: int128_add_int64_mul_int64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - interval
    argTypes:
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2555
      start: 2535
    functionDepth: 2
    functionLinenumber: 2535
    functionLinenumberEnd: 2555
    functionName: interval_cmp_value
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - int64_to_int128
    - int128_add_int64_mul_int64
    - INT64CONST
    linkageType: ''
    returnType: INT128
    signature: INT128 interval_cmp_value(const Interval *interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: interval_cmp_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2560,1
    - Dst: interval_cmp_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2561,1
    - Dst: int128_compare
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - interval1
    - interval2
    argTypes:
    - Interval*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2564
      start: 2557
    functionDepth: 3
    functionLinenumber: 2557
    functionLinenumberEnd: 2564
    functionName: interval_cmp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - int128_compare
    - interval_cmp_value
    linkageType: ''
    returnType: int
    signature: int interval_cmp_internal(const Interval *interval1, const Interval
      *interval2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: interval_cmp_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2569,1
    - Dst: int64_to_int128
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2570,1
    - Dst: int128_compare
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - interval
    argTypes:
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2573
      start: 2566
    functionDepth: 3
    functionLinenumber: 2566
    functionLinenumberEnd: 2573
    functionName: interval_sign
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - int128_compare
    - int64_to_int128
    - interval_cmp_value
    linkageType: ''
    returnType: int
    signature: int interval_sign(const Interval *interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2578,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2579,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2581,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2582
      start: 2575
    functionDepth: 4
    functionLinenumber: 2575
    functionLinenumberEnd: 2582
    functionName: interval_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2587,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2588,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2590,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2591
      start: 2584
    functionDepth: 4
    functionLinenumber: 2584
    functionLinenumberEnd: 2591
    functionName: interval_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2596,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2597,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2599,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2600
      start: 2593
    functionDepth: 4
    functionLinenumber: 2593
    functionLinenumberEnd: 2600
    functionName: interval_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2605,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2606,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2608,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2609
      start: 2602
    functionDepth: 4
    functionLinenumber: 2602
    functionLinenumberEnd: 2609
    functionName: interval_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2614,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2615,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2617,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2618
      start: 2611
    functionDepth: 4
    functionLinenumber: 2611
    functionLinenumberEnd: 2618
    functionName: interval_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2623,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2624,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2626,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2620
    functionDepth: 4
    functionLinenumber: 2620
    functionLinenumberEnd: 2627
    functionName: interval_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2632,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2633,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2635,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2629
    functionDepth: 4
    functionLinenumber: 2629
    functionLinenumberEnd: 2636
    functionName: interval_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_internal
    - PG_RETURN_INT32
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2648,1
    - Dst: interval_cmp_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2649,1
    - Dst: int128_to_int64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2658,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2660,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2661
      start: 2645
    functionDepth: 3
    functionLinenumber: 2645
    functionLinenumberEnd: 2661
    functionName: interval_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall1
    - Int64GetDatumFast
    - int128_to_int64
    - PG_GETARG_INTERVAL_P
    - interval_cmp_value
    linkageType: ''
    returnType: Datum
    signature: Datum interval_hash(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2666,1
    - Dst: interval_cmp_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2667,1
    - Dst: int128_to_int64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2671,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2673,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2673,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2675
      start: 2663
    functionDepth: 3
    functionLinenumber: 2663
    functionLinenumberEnd: 2675
    functionName: interval_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - Int64GetDatumFast
    - int128_to_int64
    - PG_GETARG_INTERVAL_P
    - DirectFunctionCall2
    - interval_cmp_value
    linkageType: ''
    returnType: Datum
    signature: Datum interval_hash_extended(PG_FUNCTION_ARGS)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2692,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2693,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2694,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2695,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2696,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2697,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2698,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2699,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2714,1
    - Dst: TIMESTAMP_GT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2721,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2734,1
    - Dst: TIMESTAMP_GT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2741,1
    - Dst: TIMESTAMP_GT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2754,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2761,1
    - Dst: TIMESTAMP_LT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2762,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2763,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2765,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2771,1
    - Dst: TIMESTAMP_LT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2773,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2777,1
    - Dst: TIMESTAMP_LT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2778,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2779,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2781,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2787,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2796,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2797,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2802
      start: 2684
    functionDepth: 1
    functionLinenumber: 2684
    functionLinenumberEnd: 2802
    functionName: overlaps_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - TIMESTAMP_GT
    - PG_RETURN_BOOL
    - TIMESTAMP_LT
    - PG_RETURN_NULL
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum overlaps_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t1
    - ','
    - t2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2703
      start: 2701
    functionDepth: 0
    functionLinenumber: 2701
    functionLinenumberEnd: 2703
    functionName: TIMESTAMP_GT
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_GT(t1,t2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t1
    - ','
    - t2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2705
      start: 2703
    functionDepth: 0
    functionLinenumber: 2703
    functionLinenumberEnd: 2705
    functionName: TIMESTAMP_LT
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESTAMP_LT(t1,t2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2812,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2813,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2817,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2821,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2822
      start: 2809
    functionDepth: 1
    functionLinenumber: 2809
    functionLinenumberEnd: 2822
    functionName: timestamp_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    - PG_RETURN_TIMESTAMP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_smaller(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2827,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2828,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2831,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2836
      start: 2824
    functionDepth: 1
    functionLinenumber: 2824
    functionLinenumberEnd: 2836
    functionName: timestamp_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    - PG_RETURN_TIMESTAMP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_larger(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2842,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2843,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2846,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2854,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2854,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2856,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2858,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2859,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2860,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2861,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2863,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2865,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2867,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2868,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2869,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2870,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2872,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2874,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2875,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2877,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2879,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2882,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2882,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2883,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2884,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2885,1
    - Dst: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2915,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2915,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2916,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2918,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2919
      start: 2839
    functionDepth: 2
    functionLinenumber: 2839
    functionLinenumberEnd: 2919
    functionName: timestamp_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DatumGetIntervalP
    - pg_sub_s64_overflow
    - PG_GETARG_TIMESTAMP
    - TIMESTAMP_IS_NOEND
    - INTERVAL_NOEND
    - errcode
    - ereport
    - TIMESTAMP_NOT_FINITE
    - DirectFunctionCall1
    - IntervalPGetDatum
    - PG_RETURN_INTERVAL_P
    - unlikely
    - TIMESTAMP_IS_NOBEGIN
    - errmsg
    - palloc_object
    - INTERVAL_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_mi(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2936,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2941,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2947,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2948,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2956,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2957,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2958,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2959,1
    - Dst: TMODULO
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2968,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2973,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2974,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2975,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2976,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3002,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3003
      start: 2933
    functionDepth: 2
    functionLinenumber: 2933
    functionLinenumberEnd: 3003
    functionName: interval_justify_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INTERVAL_P
    - errcode
    - TMODULO
    - ereport
    - INTERVAL_NOT_FINITE
    - PG_RETURN_INTERVAL_P
    - errmsg
    - palloc_object
    - pg_add_s32_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum interval_justify_interval(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3016,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3020,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3026,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3027,1
    - Dst: TMODULO
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3029,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3030,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3031,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3032,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3033,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3046,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3047
      start: 3013
    functionDepth: 2
    functionLinenumber: 3013
    functionLinenumberEnd: 3047
    functionName: interval_justify_hours
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INTERVAL_P
    - errcode
    - TMODULO
    - ereport
    - INTERVAL_NOT_FINITE
    - PG_RETURN_INTERVAL_P
    - errmsg
    - palloc_object
    - pg_add_s32_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum interval_justify_hours(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3058,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3062,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3068,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3069,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3073,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3074,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3075,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3076,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3089,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3090
      start: 3055
    functionDepth: 2
    functionLinenumber: 3055
    functionLinenumberEnd: 3090
    functionName: interval_justify_days
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INTERVAL_P
    - errcode
    - ereport
    - INTERVAL_NOT_FINITE
    - PG_RETURN_INTERVAL_P
    - errmsg
    - palloc_object
    - pg_add_s32_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum interval_justify_days(PG_FUNCTION_ARGS)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3106,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3107,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3116,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3118,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3119,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3120,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3121,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3123,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3125,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3127,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3128,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3129,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3130,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3132,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3134,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3144,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3147,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3150,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3151,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3152,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3165,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3166,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3169,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3171,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3181,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3182,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3183,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3184,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3190,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3191,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3193,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3194,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3195,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3196,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3198,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3199,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3200,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3201,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3205,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3206,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3207,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3209,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3210,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3212,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3217,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3218
      start: 3103
    functionDepth: 2
    functionLinenumber: 3103
    functionLinenumberEnd: 3218
    functionName: timestamp_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - errcode
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - tm2timestamp
    - j2date
    - INTERVAL_IS_NOEND
    - TIMESTAMP_NOEND
    - errmsg
    - isleap
    - TIMESTAMP_IS_NOEND
    - ereport
    - pg_add_s64_overflow
    - PG_GETARG_INTERVAL_P
    - INTERVAL_IS_NOBEGIN
    - pg_add_s32_overflow
    - TIMESTAMP_NOBEGIN
    - PG_RETURN_TIMESTAMP
    - IS_VALID_TIMESTAMP
    - date2j
    - TIMESTAMP_IS_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_pl_interval(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3223,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3224,1
    - Dst: interval_um_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3227,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3229,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3230,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3232
      start: 3220
    functionDepth: 2
    functionLinenumber: 3220
    functionLinenumberEnd: 3232
    functionName: timestamp_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - interval_um_internal
    - TimestampGetDatum
    - PointerGetDatum
    - PG_GETARG_INTERVAL_P
    - DirectFunctionCall2
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_mi_interval(PG_FUNCTION_ARGS)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3261,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3264,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3266,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3268,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3270,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3273,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3275,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3277,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3279,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3293,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3296,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3298,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3299,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3300,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3301,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3314,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3315,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3317,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3319,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3320,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3321,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3322,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3332,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3335,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3344,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3345,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3347,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3349,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3350,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3352,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3355,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3357,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3360,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3361,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3362,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3363,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3366,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3368,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 3
    argNames:
    - timestamp
    - span
    - attimezone
    argTypes:
    - TimestampTz
    - Interval*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3374
      start: 3247
    functionDepth: 2
    functionLinenumber: 3247
    functionLinenumberEnd: 3374
    functionName: timestamptz_pl_interval_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errcode
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - tm2timestamp
    - j2date
    - INTERVAL_IS_NOEND
    - TIMESTAMP_NOEND
    - errmsg
    - isleap
    - TIMESTAMP_IS_NOEND
    - ereport
    - pg_add_s64_overflow
    - DetermineTimeZoneOffset
    - INTERVAL_IS_NOBEGIN
    - pg_add_s32_overflow
    - TIMESTAMP_NOBEGIN
    - IS_VALID_TIMESTAMP
    - date2j
    - TIMESTAMP_IS_NOBEGIN
    linkageType: ''
    returnType: TimestampTz
    signature: "TimestampTz timestamptz_pl_interval_internal(TimestampTz timestamp,\n\t\t\t\t\t\t\t\t
      Interval *span,\n\t\t\t\t\t\t\t\t pg_tz *attimezone)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: interval_um_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3387,1
    - Dst: timestamptz_pl_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - timestamp
    - span
    - attimezone
    argTypes:
    - TimestampTz
    - Interval*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3390
      start: 3380
    functionDepth: 3
    functionLinenumber: 3380
    functionLinenumberEnd: 3390
    functionName: timestamptz_mi_interval_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_um_internal
    - timestamptz_pl_interval_internal
    linkageType: ''
    returnType: TimestampTz
    signature: "TimestampTz timestamptz_mi_interval_internal(TimestampTz timestamp,\n\t\t\t\t\t\t\t\t
      Interval *span,\n\t\t\t\t\t\t\t\t pg_tz *attimezone)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3399,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3400,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3402,1
    - Dst: timestamptz_pl_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3403
      start: 3396
    functionDepth: 3
    functionLinenumber: 3396
    functionLinenumberEnd: 3403
    functionName: timestamptz_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - PG_RETURN_TIMESTAMP
    - timestamptz_pl_interval_internal
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_pl_interval(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3408,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3409,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3411,1
    - Dst: timestamptz_mi_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3412
      start: 3405
    functionDepth: 4
    functionLinenumber: 3405
    functionLinenumberEnd: 3412
    functionName: timestamptz_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamptz_mi_interval_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_mi_interval(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3421,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3422,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3423,1
    - Dst: lookup_timezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3424,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3426,1
    - Dst: timestamptz_pl_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3427
      start: 3418
    functionDepth: 3
    functionLinenumber: 3418
    functionLinenumberEnd: 3427
    functionName: timestamptz_pl_interval_at_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - lookup_timezone
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_TIMESTAMPTZ
    - timestamptz_pl_interval_internal
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_pl_interval_at_zone(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3432,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3433,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3434,1
    - Dst: lookup_timezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3435,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3437,1
    - Dst: timestamptz_mi_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3438
      start: 3429
    functionDepth: 4
    functionLinenumber: 3429
    functionLinenumberEnd: 3438
    functionName: timestamptz_mi_interval_at_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - lookup_timezone
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_TIMESTAMPTZ
    - timestamptz_mi_interval_internal
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_mi_interval_at_zone(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3447,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3448,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3449,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3450,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3454,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3454,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3455,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3456,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3457,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3458,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3459,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3460,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - interval
    - result
    argTypes:
    - Interval*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3462
      start: 3444
    functionDepth: 2
    functionLinenumber: 3444
    functionLinenumberEnd: 3462
    functionName: interval_um_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached:
    - pg_sub_s64_overflow
    - INTERVAL_IS_NOEND
    - INTERVAL_NOEND
    - INT64CONST
    - errcode
    - ereport
    - INTERVAL_NOT_FINITE
    - errmsg
    - pg_sub_s32_overflow
    - INTERVAL_IS_NOBEGIN
    - INTERVAL_NOBEGIN
    linkageType: ''
    returnType: void
    signature: void interval_um_internal(const Interval *interval, Interval *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3467,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3470,1
    - Dst: interval_um_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3471,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3474
      start: 3464
    functionDepth: 3
    functionLinenumber: 3464
    functionLinenumberEnd: 3474
    functionName: interval_um
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INTERVAL_P
    - interval_um_internal
    - palloc_object
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_um(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3480,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3481,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3485,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3490
      start: 3477
    functionDepth: 4
    functionLinenumber: 3477
    functionLinenumberEnd: 3490
    functionName: interval_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_internal
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_smaller(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3495,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3496,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3499,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3504
      start: 3492
    functionDepth: 4
    functionLinenumber: 3492
    functionLinenumberEnd: 3504
    functionName: interval_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_internal
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_INTERVAL_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_larger(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3509,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3510,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3510,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3512,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3513,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3514,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3515,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3516,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3517,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3518,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - span1
    - span2
    - result
    argTypes:
    - Interval*
    - Interval*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3519
      start: 3506
    functionDepth: 2
    functionLinenumber: 3506
    functionLinenumberEnd: 3519
    functionName: finite_interval_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - ereport
    - INTERVAL_NOT_FINITE
    - pg_add_s64_overflow
    - errmsg
    - pg_add_s32_overflow
    linkageType: ''
    returnType: void
    signature: void finite_interval_pl(const Interval *span1, const Interval *span2,
      Interval *result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3524,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3525,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3528,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3536,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3538,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3539,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3540,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3541,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3543,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3545,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3547,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3548,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3549,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3550,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3552,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3554,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3555,1
    - Dst: finite_interval_pl
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3557,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3559,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3560
      start: 3521
    functionDepth: 3
    functionLinenumber: 3521
    functionLinenumberEnd: 3560
    functionName: interval_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - INTERVAL_IS_NOEND
    - memcpy
    - PG_GETARG_INTERVAL_P
    - errcode
    - INTERVAL_NOEND
    - finite_interval_pl
    - ereport
    - INTERVAL_NOT_FINITE
    - PG_RETURN_INTERVAL_P
    - errmsg
    - palloc_object
    - INTERVAL_IS_NOBEGIN
    - INTERVAL_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum interval_pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3565,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3566,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3566,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3568,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3569,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3570,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3571,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3572,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3573,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3574,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - span1
    - span2
    - result
    argTypes:
    - Interval*
    - Interval*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3575
      start: 3562
    functionDepth: 2
    functionLinenumber: 3562
    functionLinenumberEnd: 3575
    functionName: finite_interval_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pg_sub_s64_overflow
    - errcode
    - Assert
    - ereport
    - INTERVAL_NOT_FINITE
    - errmsg
    - pg_sub_s32_overflow
    linkageType: ''
    returnType: void
    signature: void finite_interval_mi(const Interval *span1, const Interval *span2,
      Interval *result)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3580,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3581,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3584,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3592,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3594,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3595,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3596,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3597,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3599,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3601,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3603,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3604,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3605,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3606,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3608,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3610,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3611,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3612,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3613,1
    - Dst: finite_interval_mi
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3615,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3617,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3618
      start: 3577
    functionDepth: 3
    functionLinenumber: 3577
    functionLinenumberEnd: 3618
    functionName: interval_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - finite_interval_mi
    - INTERVAL_IS_NOEND
    - PG_GETARG_INTERVAL_P
    - errcode
    - INTERVAL_NOEND
    - ereport
    - PG_RETURN_INTERVAL_P
    - errmsg
    - palloc_object
    - INTERVAL_IS_NOBEGIN
    - INTERVAL_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum interval_mi(PG_FUNCTION_ARGS)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3629,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3630,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3638,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3646,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3649,1
    - Dst: interval_um_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3655,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3657,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3659,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3661,1
    - Dst: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3663,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3669,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3671,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3673,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3677,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3677,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3682,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3682,1
    - Dst: TSROUND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3705,1
    - Dst: TSROUND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3708,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3715,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3717,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3725,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3728,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3729,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3729,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3733,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3739,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3740,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3741,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3743,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3744
      start: 3626
    functionDepth: 4
    functionLinenumber: 3626
    functionLinenumberEnd: 3744
    functionName: interval_mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - FLOAT8_FITS_IN_INT64
    - errcode
    - isinf
    - PG_RETURN_INTERVAL_P
    - rint
    - memcpy
    - INTERVAL_NOEND
    - INTERVAL_NOT_FINITE
    - errmsg
    - palloc_object
    - INTERVAL_NOBEGIN
    - interval_um_internal
    - TSROUND
    - ereport
    - PG_GETARG_INTERVAL_P
    - interval_sign
    - pg_add_s32_overflow
    - PG_GETARG_FLOAT8
    - fabs
    - FLOAT8_FITS_IN_INT32
    - PG_RETURN_NULL
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum interval_mul(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3750,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3751,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3754
      start: 3746
    functionDepth: 1
    functionLinenumber: 3746
    functionLinenumberEnd: 3754
    functionName: mul_d_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum mul_d_interval(PG_FUNCTION_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3759,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3760,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3768,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3771,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3772,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3773,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3782,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3785,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3787,1
    - Dst: interval_um_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3791,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3793,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3795,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3799,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3799,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3804,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3804,1
    - Dst: TSROUND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3812,1
    - Dst: TSROUND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3815,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3816,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3818,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3826,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3829,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3830,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3830,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3834,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3837,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3840,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3841,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3842,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3844,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3845
      start: 3756
    functionDepth: 3
    functionLinenumber: 3756
    functionLinenumberEnd: 3845
    functionName: interval_div
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - FLOAT8_FITS_IN_INT64
    - errcode
    - isinf
    - PG_RETURN_INTERVAL_P
    - rint
    - memcpy
    - INTERVAL_NOT_FINITE
    - errmsg
    - palloc_object
    - interval_um_internal
    - TSROUND
    - ereport
    - PG_GETARG_INTERVAL_P
    - pg_add_s32_overflow
    - PG_GETARG_FLOAT8
    - fabs
    - FLOAT8_FITS_IN_INT32
    - PG_RETURN_NULL
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum interval_div(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3860,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3861,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3862,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3863,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3864,1
    - Dst: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3867,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3868,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3869,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3870,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3878,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3879,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3879,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3880,1
    - Dst: timestamptz_mi_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3884,1
    - Dst: timestamptz_pl_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3886,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3889,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3891,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3892
      start: 3857
    functionDepth: 4
    functionLinenumber: 3857
    functionLinenumberEnd: 3892
    functionName: in_range_timestamptz_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - INTERVAL_IS_NOEND
    - TIMESTAMP_IS_NOEND
    - PG_GETARG_BOOL
    - errcode
    - PG_GETARG_TIMESTAMPTZ
    - ereport
    - timestamptz_pl_interval_internal
    - timestamptz_mi_interval_internal
    - errmsg
    - TIMESTAMP_IS_NOBEGIN
    - PG_GETARG_INTERVAL_P
    - interval_sign
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_timestamptz_interval(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3897,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3898,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3899,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3900,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3901,1
    - Dst: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3904,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3905,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3906,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3907,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3915,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3916,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3916,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3917,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3921,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3921,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3922,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3923,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3925,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3925,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3926,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3927,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3930,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3932,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3933
      start: 3894
    functionDepth: 4
    functionLinenumber: 3894
    functionLinenumberEnd: 3933
    functionName: in_range_timestamp_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - INTERVAL_IS_NOEND
    - PG_GETARG_TIMESTAMP
    - DirectFunctionCall2
    - TIMESTAMP_IS_NOEND
    - PG_GETARG_BOOL
    - errcode
    - ereport
    - IntervalPGetDatum
    - TimestampGetDatum
    - errmsg
    - TIMESTAMP_IS_NOBEGIN
    - PG_GETARG_INTERVAL_P
    - interval_sign
    - PG_RETURN_BOOL
    - DatumGetTimestamp
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_timestamp_interval(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3938,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3939,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3940,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3941,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3942,1
    - Dst: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3945,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3946,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3947,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3948,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3956,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3957,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3957,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3958,1
    - Dst: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3962,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3962,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3963,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3964,1
    - Dst: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3966,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3966,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3967,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3968,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3971,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3971,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3973,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3973,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3974
      start: 3935
    functionDepth: 4
    functionLinenumber: 3935
    functionLinenumberEnd: 3974
    functionName: in_range_interval_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DatumGetIntervalP
    - INTERVAL_IS_NOEND
    - interval_cmp_internal
    - PG_GETARG_BOOL
    - errcode
    - INTERVAL_IS_NOBEGIN
    - ereport
    - IntervalPGetDatum
    - errmsg
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    - interval_sign
    - DirectFunctionCall2
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_interval_interval(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3992,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3993,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3995,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3997,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3999,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4002
      start: 3985
    functionDepth: 2
    functionLinenumber: 3985
    functionLinenumberEnd: 4002
    functionName: makeIntervalAggState
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AggCheckCallContext
    - palloc0_object
    - elog
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: IntervalAggState
    signature: 'IntervalAggState *

      makeIntervalAggState(FunctionCallInfo fcinfo)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4011,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4017,1
    - Dst: finite_interval_pl
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4023,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - IntervalAggState*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4025
      start: 4007
    functionDepth: 3
    functionLinenumber: 4007
    functionLinenumberEnd: 4025
    functionName: do_interval_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - INTERVAL_IS_NOBEGIN
    - finite_interval_pl
    - INTERVAL_IS_NOEND
    linkageType: ''
    returnType: void
    signature: void do_interval_accum(IntervalAggState *state, Interval *newval)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4034,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4040,1
    - Dst: finite_interval_mi
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4053,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - IntervalAggState*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4056
      start: 4030
    functionDepth: 3
    functionLinenumber: 4030
    functionLinenumberEnd: 4056
    functionName: do_interval_discard
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - finite_interval_mi
    - INTERVAL_IS_NOEND
    - Assert
    - memset
    - INTERVAL_IS_NOBEGIN
    linkageType: ''
    returnType: void
    signature: void do_interval_discard(IntervalAggState *state, Interval *newval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4066,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4066,1
    - Dst: makeIntervalAggState
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4070,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4072,1
    - Dst: do_interval_accum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4073,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4073,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4075,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4076
      start: 4061
    functionDepth: 4
    functionLinenumber: 4061
    functionLinenumberEnd: 4076
    functionName: interval_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - do_interval_accum
    - makeIntervalAggState
    - PG_RETURN_POINTER
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum interval_avg_accum(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4090,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4090,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4091,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4091,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4094,1
    - Dst: makeIntervalAggState
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4099,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4109,1
    - Dst: finite_interval_pl
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4118,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4121
      start: 4084
    functionDepth: 3
    functionLinenumber: 4084
    functionLinenumberEnd: 4121
    functionName: interval_avg_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - makeIntervalAggState
    - PG_RETURN_POINTER
    - finite_interval_pl
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum interval_avg_combine(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4135,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4136,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4138,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4140,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4143,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4146,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4147,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4148,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4151,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4154,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4156,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4159
      start: 4127
    functionDepth: 4
    functionLinenumber: 4127
    functionLinenumberEnd: 4159
    functionName: interval_avg_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - elog
    - pq_endtypsend
    - AggCheckCallContext
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum interval_avg_serialize(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4172,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4173,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4175,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4181,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4181,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4182,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4184,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4187,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4190,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4191,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4192,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4195,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4198,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4200,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4203
      start: 4165
    functionDepth: 4
    functionLinenumber: 4165
    functionLinenumberEnd: 4203
    functionName: interval_avg_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - palloc0_object
    - initReadOnlyStringInfo
    - AggCheckCallContext
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - pq_getmsgend
    - pq_getmsgint64
    - pq_getmsgint
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum interval_avg_deserialize(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4213,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4213,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4217,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4219,1
    - Dst: do_interval_discard
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4220,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4220,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4223
      start: 4208
    functionDepth: 4
    functionLinenumber: 4208
    functionLinenumberEnd: 4223
    functionName: interval_avg_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_RETURN_POINTER
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_POINTER
    - do_interval_discard
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum interval_avg_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4231,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4231,1
    - Dst: IA_TOTAL_COUNT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4234,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4247,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4248,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4249,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4251,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4253,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4255,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4257,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4260,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4261,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4262,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4263
      start: 4226
    functionDepth: 2
    functionLinenumber: 4226
    functionLinenumberEnd: 4263
    functionName: interval_avg
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - INTERVAL_NOBEGIN
    - INTERVAL_NOEND
    - IA_TOTAL_COUNT
    - errcode
    - ereport
    - Float8GetDatum
    - IntervalPGetDatum
    - PG_RETURN_INTERVAL_P
    - errmsg
    - palloc_object
    - PG_RETURN_NULL
    - DirectFunctionCall2
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum interval_avg(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4272,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4272,1
    - Dst: IA_TOTAL_COUNT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4275,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4276,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4284,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4285,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4286,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4288,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4291,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4293,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4295,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4297,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4298
      start: 4266
    functionDepth: 2
    functionLinenumber: 4266
    functionLinenumberEnd: 4298
    functionName: interval_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - INTERVAL_NOBEGIN
    - memcpy
    - INTERVAL_NOEND
    - IA_TOTAL_COUNT
    - errcode
    - ereport
    - PG_RETURN_INTERVAL_P
    - errmsg
    - palloc_object
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum interval_sum(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4310,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4311,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4322,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4330,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4332,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4335,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4337,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4339,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4341,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4342,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4343,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4344,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4346,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4348,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4349,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4350,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4351,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4352,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4353,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4405,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4410,1
    - Dst: itm2interval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4433,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4434,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4435,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4436,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4441,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4443,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4444
      start: 4307
    functionDepth: 2
    functionLinenumber: 4307
    functionLinenumberEnd: 4444
    functionName: timestamp_age
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - TIMESTAMP_IS_NOEND
    - INTERVAL_NOEND
    - errcode
    - itm2interval
    - ereport
    - timestamp2tm
    - PG_RETURN_INTERVAL_P
    - TIMESTAMP_IS_NOBEGIN
    - errmsg
    - palloc_object
    - isleap
    - INTERVAL_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_age(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4457,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4458,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4471,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4479,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4481,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4482,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4483,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4484,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4486,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4488,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4490,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4491,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4492,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4493,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4495,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4497,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4498,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4499,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4500,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4501,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4502,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4554,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4559,1
    - Dst: itm2interval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4586,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4587,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4588,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4589,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4592,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4593,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4594,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4596,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4597
      start: 4454
    functionDepth: 2
    functionLinenumber: 4454
    functionLinenumberEnd: 4597
    functionName: timestamptz_age
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - TIMESTAMP_IS_NOEND
    - INTERVAL_NOEND
    - errcode
    - itm2interval
    - PG_GETARG_TIMESTAMPTZ
    - ereport
    - timestamp2tm
    - PG_RETURN_INTERVAL_P
    - TIMESTAMP_IS_NOBEGIN
    - errmsg
    - palloc_object
    - isleap
    - INTERVAL_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_age(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4612,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4613,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4614,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4621,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4622,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4624,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4625,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4626,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4627,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4629,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4630,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4631,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4635,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4636,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4637,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4639,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4639,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4640,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4640,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4641,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4642,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4643,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4646,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4647,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4648,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4650,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4650,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4651,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4652,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4653,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4667,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4667,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4668,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4669,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4670,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4671,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4674,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4675
      start: 4609
    functionDepth: 2
    functionLinenumber: 4609
    functionLinenumberEnd: 4675
    functionName: timestamp_bin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pg_sub_s64_overflow
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_TIMESTAMP
    - errcode
    - ereport
    - TIMESTAMP_NOT_FINITE
    - INTERVAL_NOT_FINITE
    - IS_VALID_TIMESTAMP
    - pg_add_s64_overflow
    - unlikely
    - errmsg
    - PG_GETARG_INTERVAL_P
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_bin(PG_FUNCTION_ARGS)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4684,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4685,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4694,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4694,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4695,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4698,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4702,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4724,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4727,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4729,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4730,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4735,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4736,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4737,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4738,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4746,1
    - Dst: isoweek2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4757,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4818,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4819,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4820,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4821,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4825,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4826,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4827,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4828,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4832,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4833,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4834,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4835,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4839,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 96
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4840
      start: 4681
    functionDepth: 4
    functionLinenumber: 4681
    functionLinenumberEnd: 4840
    functionName: timestamp_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - format_type_be
    - PG_RETURN_TIMESTAMP
    - errcode
    - date2isoweek
    - isoweek2date
    - TIMESTAMP_NOT_FINITE
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - timestamp2tm
    - tm2timestamp
    - errmsg
    - downcase_truncate_identifier
    - DecodeUnits
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_trunc(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4849,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4850,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4851,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4858,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4859,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4861,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4862,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4863,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4864,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4867,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4868,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4869,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4872,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4873,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4874,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4876,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4876,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4877,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4877,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4878,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4879,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4880,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4883,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4884,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4885,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4887,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4887,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4888,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4889,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4890,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4904,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4904,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4905,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4906,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4907,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4908,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4911,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4912
      start: 4846
    functionDepth: 2
    functionLinenumber: 4846
    functionLinenumberEnd: 4912
    functionName: timestamptz_bin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pg_sub_s64_overflow
    - errcode
    - PG_GETARG_TIMESTAMPTZ
    - ereport
    - TIMESTAMP_NOT_FINITE
    - INTERVAL_NOT_FINITE
    - IS_VALID_TIMESTAMP
    - pg_add_s64_overflow
    - unlikely
    - errmsg
    - PG_GETARG_INTERVAL_P
    - pg_mul_s64_overflow
    - PG_RETURN_TIMESTAMPTZ
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_bin(PG_FUNCTION_ARGS)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4933,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4933,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4934,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4937,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4941,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4967,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4968,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4969,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4970,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4975,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4976,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4977,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4978,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4986,1
    - Dst: isoweek2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4997,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5068,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5069,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5070,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5071,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5076,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5078,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5079,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5080,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5081,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5085,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5086,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5087,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5088,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 100
    argCount: 3
    argNames:
    - units
    - timestamp
    - tzp
    argTypes:
    - text*
    - TimestampTz
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5093
      start: 4920
    functionDepth: 4
    functionLinenumber: 4920
    functionLinenumberEnd: 5093
    functionName: timestamptz_trunc_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - date2isoweek
    - isoweek2date
    - TIMESTAMP_NOT_FINITE
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - timestamp2tm
    - tm2timestamp
    - DetermineTimeZoneOffset
    - errmsg
    - downcase_truncate_identifier
    - DecodeUnits
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz timestamptz_trunc_internal(text *units, TimestampTz timestamp,
      pg_tz *tzp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5102,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5103,1
    - Dst: timestamptz_trunc_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5106,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5109
      start: 5099
    functionDepth: 5
    functionLinenumber: 5099
    functionLinenumberEnd: 5109
    functionName: timestamptz_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - PG_RETURN_TIMESTAMPTZ
    - timestamptz_trunc_internal
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_trunc(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5118,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5119,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5120,1
    - Dst: lookup_timezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5127,1
    - Dst: timestamptz_trunc_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5129,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5132
      start: 5115
    functionDepth: 5
    functionLinenumber: 5115
    functionLinenumberEnd: 5132
    functionName: timestamptz_trunc_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - lookup_timezone
    - PG_GETARG_TIMESTAMPTZ
    - timestamptz_trunc_internal
    - PG_RETURN_TIMESTAMPTZ
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_trunc_zone(PG_FUNCTION_ARGS)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5141,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5142,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5150,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5152,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5152,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5153,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5156,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5160,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5181,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5182,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5186,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5187,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5188,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5189,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5190,1
    - Dst: interval2itm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5195,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5238,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5240,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5241,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5242,1
    - Dst: itm2interval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5252,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5253,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5254,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5255,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5258,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5259
      start: 5138
    functionDepth: 4
    functionLinenumber: 5138
    functionLinenumberEnd: 5259
    functionName: interval_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - interval2itm
    - memcpy
    - PG_GETARG_INTERVAL_P
    - errcode
    - errdetail
    - itm2interval
    - ereport
    - INTERVAL_NOT_FINITE
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_INTERVAL_P
    - errmsg
    - palloc_object
    - downcase_truncate_identifier
    - DecodeUnits
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum interval_trunc(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5278,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - year
    - week
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5284
      start: 5271
    functionDepth: 1
    functionLinenumber: 5271
    functionLinenumberEnd: 5284
    functionName: isoweek2j
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - j2day
    - date2j
    linkageType: ''
    returnType: int
    signature: int isoweek2j(int year, int week)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5295,1
    - Dst: isoweek2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - woy
    - year
    - mon
    - mday
    argTypes:
    - int
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5296
      start: 5292
    functionDepth: 2
    functionLinenumber: 5292
    functionLinenumberEnd: 5296
    functionName: isoweek2date
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached:
    - isoweek2j
    - j2date
    linkageType: ''
    returnType: void
    signature: void isoweek2date(int woy, int *year, int *mon, int *mday)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isoweek2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5311,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - isoweek
    - wday
    - year
    - mon
    - mday
    argTypes:
    - int
    - int
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5318
      start: 5306
    functionDepth: 2
    functionLinenumber: 5306
    functionLinenumberEnd: 5318
    functionName: isoweekdate2date
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - isoweek2j
    - j2date
    linkageType: ''
    returnType: void
    signature: void isoweekdate2date(int isoweek, int wday, int *year, int *mon, int
      *mday)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5334,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5337,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5340,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5348,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5351,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5362,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5365,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - year
    - mon
    - mday
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5372
      start: 5325
    functionDepth: 1
    functionLinenumber: 5325
    functionLinenumberEnd: 5372
    functionName: date2isoweek
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 3
    functionsReached:
    - j2day
    - date2j
    linkageType: ''
    returnType: int
    signature: int date2isoweek(int year, int mon, int mday)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5390,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5393,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5396,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5404,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5407,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5420,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - year
    - mon
    - mday
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5430
      start: 5381
    functionDepth: 1
    functionLinenumber: 5381
    functionLinenumberEnd: 5430
    functionName: date2isoyear
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - j2day
    - date2j
    linkageType: ''
    returnType: int
    signature: int date2isoyear(int year, int mon, int mday)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5442,1
    - Dst: isoweek2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5442,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - year
    - mon
    - mday
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5443
      start: 5439
    functionDepth: 2
    functionLinenumber: 5439
    functionLinenumberEnd: 5443
    functionName: date2isoyearday
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - isoweek2j
    - date2j
    - date2isoyear
    linkageType: ''
    returnType: int
    signature: int date2isoyearday(int year, int mon, int mday)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5461,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5462,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5463,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5465,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5496,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5498,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5501,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5502,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5503,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5505,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 5
    argNames:
    - type
    - unit
    - lowunits
    - isNegative
    - isTz
    argTypes:
    - int
    - int
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5508
      start: 5456
    functionDepth: 4
    functionLinenumber: 5456
    functionLinenumberEnd: 5508
    functionName: NonFiniteTimestampTzPart
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - errmsg
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: "float8 NonFiniteTimestampTzPart(int type, int unit, char *lowunits,\n\t\t\t\t\t\t
      bool isNegative, bool isTz)"
  - BBCount: 47
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5517,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5518,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5528,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5528,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5529,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5532,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5534,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5536,1
    - Dst: NonFiniteTimestampTzPart
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5538,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5539,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5547,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5548,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5549,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5550,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5552,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5553,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5554,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5555,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5558,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5561,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5566,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5567,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5568,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5569,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5574,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5583,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5583,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5583,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5585,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5594,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5594,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5594,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5596,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5620,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5669,1
    - Dst: numeric_add_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5669,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5669,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5669,1
    - Dst: numeric_div_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5670,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5670,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5670,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5671,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5671,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5675,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5675,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5681,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5689,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5689,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5695,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5696,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5703,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5705,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5706,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5715,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5722,1
    - Dst: numeric_div_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5725,1
    - Dst: numeric_sub_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5725,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5725,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5726,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5728,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5730,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5730,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5731,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5732,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5734,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5745,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5750,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5751,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5752,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5753,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5759,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5761,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5762,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5767,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5767,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5769,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 128
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5770
      start: 5514
    functionDepth: 5
    functionLinenumber: 5514
    functionLinenumberEnd: 5770
    functionName: timestamp_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - NumericGetDatum
    - PG_GETARG_TIMESTAMP
    - errcode
    - TIMESTAMP_NOT_FINITE
    - VARDATA_ANY
    - timestamp2tm
    - PG_RETURN_FLOAT8
    - DirectFunctionCall2
    - date2isoyear
    - j2day
    - numeric_div_safe
    - Int32GetDatum
    - VARSIZE_ANY_EXHDR
    - errmsg
    - DirectFunctionCall3
    - PG_RETURN_NUMERIC
    - numeric_add_safe
    - ObjectIdGetDatum
    - int64_to_numeric
    - DecodeUnits
    - date2isoweek
    - CStringGetDatum
    - DatumGetNumeric
    - ereport
    - numeric_sub_safe
    - format_type_be
    - DecodeSpecial
    - int64_div_fast_to_numeric
    - INT64CONST
    - SetEpochTimestamp
    - NonFiniteTimestampTzPart
    - date2j
    - TIMESTAMP_IS_NOBEGIN
    - PG_RETURN_NULL
    - downcase_truncate_identifier
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_part_common(PG_FUNCTION_ARGS, bool retnumeric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamp_part_common
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5776
      start: 5772
    functionDepth: 6
    functionLinenumber: 5772
    functionLinenumberEnd: 5776
    functionName: timestamp_part
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_part(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamp_part_common
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5782
      start: 5778
    functionDepth: 6
    functionLinenumber: 5778
    functionLinenumberEnd: 5782
    functionName: extract_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum extract_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 47
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5791,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5792,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5803,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5803,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5804,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5807,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5809,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5811,1
    - Dst: NonFiniteTimestampTzPart
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5813,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5814,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5822,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5823,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5824,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5825,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5827,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5828,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5829,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5830,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5833,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5836,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5841,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5842,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5843,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5844,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5861,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5870,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5870,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5870,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5872,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5881,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5881,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5881,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5883,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5907,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5944,1
    - Dst: numeric_add_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5944,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5944,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5944,1
    - Dst: numeric_div_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5945,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5945,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5945,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5946,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5946,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5950,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5950,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5956,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5964,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5964,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5970,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5971,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5975,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5976,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5977,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5978,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5987,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5994,1
    - Dst: numeric_div_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5997,1
    - Dst: numeric_sub_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5997,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5997,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5998,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6000,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6002,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6002,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6003,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6004,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6006,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6017,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6022,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6023,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6024,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6025,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6031,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6032,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6033,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6034,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6040,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6040,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6042,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 134
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6043
      start: 5788
    functionDepth: 5
    functionLinenumber: 5788
    functionLinenumberEnd: 6043
    functionName: timestamptz_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - NumericGetDatum
    - errcode
    - PG_GETARG_TIMESTAMPTZ
    - TIMESTAMP_NOT_FINITE
    - VARDATA_ANY
    - timestamp2tm
    - PG_RETURN_FLOAT8
    - DirectFunctionCall2
    - date2isoyear
    - j2day
    - numeric_div_safe
    - Int32GetDatum
    - VARSIZE_ANY_EXHDR
    - errmsg
    - DirectFunctionCall3
    - PG_RETURN_NUMERIC
    - numeric_add_safe
    - ObjectIdGetDatum
    - int64_to_numeric
    - DecodeUnits
    - date2isoweek
    - CStringGetDatum
    - DatumGetNumeric
    - ereport
    - numeric_sub_safe
    - format_type_be
    - DecodeSpecial
    - int64_div_fast_to_numeric
    - INT64CONST
    - SetEpochTimestamp
    - NonFiniteTimestampTzPart
    - date2j
    - TIMESTAMP_IS_NOBEGIN
    - PG_RETURN_NULL
    - downcase_truncate_identifier
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_part_common(PG_FUNCTION_ARGS, bool retnumeric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamptz_part_common
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6049
      start: 6045
    functionDepth: 6
    functionLinenumber: 6045
    functionLinenumberEnd: 6049
    functionName: timestamptz_part
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamptz_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_part(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamptz_part_common
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6054,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6055
      start: 6051
    functionDepth: 6
    functionLinenumber: 6051
    functionLinenumberEnd: 6055
    functionName: extract_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamptz_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum extract_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6072,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6073,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6074,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6075,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6098,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6100,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6103,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6104,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6105,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 4
    argNames:
    - type
    - unit
    - lowunits
    - isNegative
    argTypes:
    - int
    - int
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6109
      start: 6068
    functionDepth: 4
    functionLinenumber: 6068
    functionLinenumberEnd: 6109
    functionName: NonFiniteIntervalPart
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - format_type_be
    - errcode
    - ereport
    - errmsg
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: float8 NonFiniteIntervalPart(int type, int unit, char *lowunits, bool
      isNegative)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6118,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6119,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6127,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6127,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6128,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6131,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6133,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6135,1
    - Dst: NonFiniteIntervalPart
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6137,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6138,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6145,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6146,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6147,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6148,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6150,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6151,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6152,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6153,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6156,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6159,1
    - Dst: interval2itm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6164,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6168,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6177,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6177,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6177,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6179,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6188,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6188,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6188,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6190,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6248,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6249,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6250,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6251,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6284,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6285,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6286,1
    - Dst: numeric_add_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6289,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6289,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6290,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6293,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6304,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6309,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6310,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6311,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6312,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6317,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6317,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6319,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 91
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6320
      start: 6115
    functionDepth: 5
    functionLinenumber: 6115
    functionLinenumberEnd: 6320
    functionName: interval_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errcode
    - VARDATA_ANY
    - PG_RETURN_FLOAT8
    - NonFiniteIntervalPart
    - interval2itm
    - Int32GetDatum
    - INTERVAL_NOT_FINITE
    - VARSIZE_ANY_EXHDR
    - errmsg
    - DirectFunctionCall3
    - PG_RETURN_NUMERIC
    - numeric_add_safe
    - ObjectIdGetDatum
    - int64_to_numeric
    - DecodeUnits
    - CStringGetDatum
    - ereport
    - pg_add_s64_overflow
    - PG_GETARG_INTERVAL_P
    - INTERVAL_IS_NOBEGIN
    - pg_mul_s64_overflow
    - format_type_be
    - DecodeSpecial
    - int64_div_fast_to_numeric
    - INT64CONST
    - PG_RETURN_NULL
    - downcase_truncate_identifier
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum interval_part_common(PG_FUNCTION_ARGS, bool retnumeric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: interval_part_common
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6326
      start: 6322
    functionDepth: 6
    functionLinenumber: 6322
    functionLinenumberEnd: 6326
    functionName: interval_part
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum interval_part(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: interval_part_common
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6332
      start: 6328
    functionDepth: 6
    functionLinenumber: 6328
    functionLinenumberEnd: 6332
    functionName: extract_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_part_common
    linkageType: ''
    returnType: Datum
    signature: Datum extract_interval(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6347,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6348,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6358,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6359,1
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6364,1
    - Dst: DecodeTimezoneName
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6366,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6372,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6377,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6378,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6379,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6380,1
    - Dst: DetermineTimeZoneAbbrevOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6381,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6382,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6387,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6388,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6390,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6391,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6392,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6393,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6394,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6395,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6398,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6399,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6401,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6403,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6404
      start: 6344
    functionDepth: 2
    functionLinenumber: 6344
    functionLinenumberEnd: 6404
    functionName: timestamp_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DetermineTimeZoneAbbrevOffset
    - PG_GETARG_TIMESTAMP
    - errcode
    - TIMESTAMP_NOT_FINITE
    - ereport
    - text_to_cstring_buffer
    - dt2local
    - timestamp2tm
    - tm2timestamp
    - DetermineTimeZoneOffset
    - errmsg
    - IS_VALID_TIMESTAMP
    - DecodeTimezoneName
    - PG_RETURN_TIMESTAMPTZ
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_zone(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6413,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6414,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6418,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6419,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6421,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6422,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6423,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6424,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6425,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6425,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6426,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6429,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6430,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6431,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6432,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6432,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6433,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6437,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6439,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6440,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6441,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6442,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6444,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6445
      start: 6410
    functionDepth: 2
    functionLinenumber: 6410
    functionLinenumberEnd: 6445
    functionName: timestamp_izone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - errcode
    - TIMESTAMP_NOT_FINITE
    - ereport
    - INTERVAL_NOT_FINITE
    - DirectFunctionCall1
    - dt2local
    - IS_VALID_TIMESTAMP
    - errmsg
    - PointerGetDatum
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_TIMESTAMPTZ
    - DatumGetCString
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_izone(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_get_timezone_offset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6460,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6463
      start: 6455
    functionDepth: 1
    functionLinenumber: 6455
    functionLinenumberEnd: 6463
    functionName: TimestampTimestampTzRequiresRewrite
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pg_get_timezone_offset
    linkageType: ''
    returnType: bool
    signature: bool TimestampTimestampTzRequiresRewrite(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6472,1
    - Dst: timestamp2timestamptz_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6475,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6476,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6477,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6480
      start: 6469
    functionDepth: 1
    functionLinenumber: 6469
    functionLinenumberEnd: 6480
    functionName: timestamp_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_NULL
    - PG_RETURN_TIMESTAMPTZ
    - timestamp2timestamptz_safe
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6501,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6505,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6507,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6509,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6511,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6516,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6518,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6520,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6521,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6522,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - timestamp
    - escontext
    argTypes:
    - Timestamp
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6523
      start: 6492
    functionDepth: 2
    functionLinenumber: 6492
    functionLinenumberEnd: 6523
    functionName: timestamp2timestamptz_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached:
    - errcode
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - dt2local
    - IS_VALID_TIMESTAMP
    - TIMESTAMP_NOEND
    - DetermineTimeZoneOffset
    - errmsg
    - ereturn
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz timestamp2timestamptz_safe(Timestamp timestamp, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamp2timestamptz_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timestamp
    argTypes:
    - Timestamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6532
      start: 6528
    functionDepth: 3
    functionLinenumber: 6528
    functionLinenumberEnd: 6532
    functionName: timestamp2timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - timestamp2timestamptz_safe
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz timestamp2timestamptz(Timestamp timestamp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6541,1
    - Dst: timestamptz2timestamp_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6544,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6545,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6545,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6546,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6549
      start: 6538
    functionDepth: 1
    functionLinenumber: 6538
    functionLinenumberEnd: 6549
    functionName: timestamptz_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_TIMESTAMPTZ
    - unlikely
    - PG_RETURN_NULL
    - timestamptz2timestamp_safe
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamptz2timestamp_safe
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timestamp
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6558
      start: 6554
    functionDepth: 1
    functionLinenumber: 6554
    functionLinenumberEnd: 6558
    functionName: timestamptz2timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - timestamptz2timestamp_safe
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp timestamptz2timestamp(TimestampTz timestamp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6579,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6583,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6586,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6588,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6590,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6591,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6592,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6594,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6597,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6599,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6601,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6602,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6603,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - timestamp
    - escontext
    argTypes:
    - TimestampTz
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6607
      start: 6570
    functionDepth: 2
    functionLinenumber: 6570
    functionLinenumberEnd: 6607
    functionName: timestamptz2timestamp_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached:
    - errcode
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - TIMESTAMP_NOEND
    - tm2timestamp
    - errmsg
    - ereturn
    - TIMESTAMP_NOBEGIN
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp timestamptz2timestamp_safe(TimestampTz timestamp, Node *escontext)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6617,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6618,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6626,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6627,1
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6632,1
    - Dst: DecodeTimezoneName
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6634,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6640,1
    - Dst: DetermineTimeZoneAbbrevOffsetTS
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6647,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6648,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6656,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6657,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6658,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6659,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6660,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6661,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6662,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6663,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6666,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6667,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6668,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6669,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6671,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6672
      start: 6614
    functionDepth: 2
    functionLinenumber: 6614
    functionLinenumberEnd: 6672
    functionName: timestamptz_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMP
    - errcode
    - PG_GETARG_TIMESTAMPTZ
    - DetermineTimeZoneAbbrevOffsetTS
    - TIMESTAMP_NOT_FINITE
    - ereport
    - text_to_cstring_buffer
    - dt2local
    - timestamp2tm
    - tm2timestamp
    - IS_VALID_TIMESTAMP
    - errmsg
    - DecodeTimezoneName
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_zone(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6682,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6683,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6687,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6688,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6690,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6691,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6692,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6693,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6694,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6694,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6695,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6698,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6699,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6700,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6701,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6701,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6702,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6706,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6708,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6709,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6710,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6711,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6713,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6714
      start: 6679
    functionDepth: 2
    functionLinenumber: 6679
    functionLinenumberEnd: 6714
    functionName: timestamptz_izone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMP
    - errcode
    - PG_GETARG_TIMESTAMPTZ
    - TIMESTAMP_NOT_FINITE
    - ereport
    - INTERVAL_NOT_FINITE
    - DirectFunctionCall1
    - dt2local
    - IS_VALID_TIMESTAMP
    - errmsg
    - PointerGetDatum
    - PG_GETARG_INTERVAL_P
    - DatumGetCString
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_izone(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6728,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6730,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6731,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6732,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6736,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6741,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6744,1
    - Dst: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6758,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6759,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6760,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6762,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6763,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6765,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6768,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6772,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6781,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6782,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6785,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6785,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6786,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6787,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6790,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6790,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6795,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6797
      start: 6720
    functionDepth: 4
    functionLinenumber: 6720
    functionLinenumberEnd: 6797
    functionName: generate_series_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - PG_GETARG_TIMESTAMP
    - errcode
    - SRF_RETURN_DONE
    - DirectFunctionCall2
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - timestamp_cmp_internal
    - INTERVAL_NOT_FINITE
    - errmsg
    - PointerGetDatum
    - palloc_object
    - SRF_PERCALL_SETUP
    - ereport
    - TimestampGetDatum
    - PG_GETARG_INTERVAL_P
    - interval_sign
    - DatumGetTimestamp
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6812,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6814,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6815,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6816,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6817,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6817,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6821,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6826,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6829,1
    - Dst: lookup_timezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6838,1
    - Dst: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6841,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6844,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6845,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6846,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6848,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6849,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6850,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6851,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6854,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6858,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6867,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6868,1
    - Dst: timestamptz_pl_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6871,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6876,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6876,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6881,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6883
      start: 6804
    functionDepth: 4
    functionLinenumber: 6804
    functionLinenumberEnd: 6883
    functionName: generate_series_timestamptz_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - errcode
    - PG_GETARG_TIMESTAMPTZ
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - timestamp_cmp_internal
    - timestamptz_pl_interval_internal
    - INTERVAL_NOT_FINITE
    - errmsg
    - palloc_object
    - SRF_PERCALL_SETUP
    - ereport
    - PG_GETARG_INTERVAL_P
    - interval_sign
    - TimestampTzGetDatum
    - PG_NARGS
    - lookup_timezone
    - MemoryContextSwitchTo
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_timestamptz_internal(FunctionCallInfo fcinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generate_series_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6889
      start: 6885
    functionDepth: 5
    functionLinenumber: 6885
    functionLinenumberEnd: 6889
    functionName: generate_series_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - generate_series_timestamptz_internal
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generate_series_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6895
      start: 6891
    functionDepth: 5
    functionLinenumber: 6891
    functionLinenumberEnd: 6895
    functionName: generate_series_timestamptz_at_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - generate_series_timestamptz_internal
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_timestamptz_at_zone(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6903,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6906,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6911,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6919,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6919,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6920,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6920,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6921,1
    - Dst: lthird
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6921,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6929,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6930,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6931,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6936,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6936,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6936,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6945,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6946,1
    - Dst: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6947,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6954,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6954,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6955,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6957,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6958,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6959,1
    - Dst: INTERVAL_TO_MICROSECONDS
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6963,1
    - Dst: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6968,1
    - Dst: INTERVAL_TO_MICROSECONDS
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6969,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6971,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6980,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6981
      start: 6900
    functionDepth: 2
    functionLinenumber: 6900
    functionLinenumberEnd: 6981
    functionName: generate_series_timestamp_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DatumGetIntervalP
    - pg_sub_s64_overflow
    - DatumGetTimestamp
    - lthird
    - linitial
    - floor
    - TIMESTAMP_NOT_FINITE
    - lsecond
    - TimestampGetDatum
    - estimate_expression_value
    - INTERVAL_TO_MICROSECONDS
    - is_funcclause
    - DirectFunctionCall2
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum generate_series_timestamp_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6962
      start: 6961
    functionDepth: 0
    functionLinenumber: 6961
    functionLinenumberEnd: 6962
    functionName: INTERVAL_TO_MICROSECONDS
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERVAL_TO_MICROSECONDS(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamp_timestamptz
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6997
      start: 6993
    functionDepth: 2
    functionLinenumber: 6993
    functionLinenumberEnd: 6997
    functionName: timestamp_at_local
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_timestamptz
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_at_local(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamptz_timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:7002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7003
      start: 6999
    functionDepth: 2
    functionLinenumber: 6999
    functionLinenumberEnd: 7003
    functionName: timestamptz_at_local
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamptz_timestamp
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_at_local(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/json.c:108,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/json.c:109,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/json.c:113,1
    - Dst: pg_parse_json_or_errsave
      Src: /src/postgres/src/backend/utils/adt/json.c:114,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:115,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 119
    functionName: json_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - pg_parse_json_or_errsave
    - PG_GETARG_CSTRING
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - makeJsonLexContext
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum json_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:128,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/json.c:130,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/json.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 131
    functionName: json_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - TextDatumGetCString
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum json_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/json.c:139,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/json.c:142,1
    - Dst: pq_sendtext
      Src: /src/postgres/src/backend/utils/adt/json.c:143,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/json.c:143,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/json.c:143,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/json.c:144,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/json.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 136
    functionDepth: 4
    functionLinenumber: 136
    functionLinenumberEnd: 145
    functionName: json_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - pq_sendtext
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum json_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:153,1
    - Dst: pq_getmsgtext
      Src: /src/postgres/src/backend/utils/adt/json.c:158,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/backend/utils/adt/json.c:161,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/json.c:161,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:163,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:165,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 166
    functionName: json_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    - pq_getmsgtext
    - PG_GETARG_POINTER
    - pg_parse_json_or_ereport
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: Datum
    signature: Datum json_recv(PG_FUNCTION_ARGS)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/json.c:185,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/json.c:188,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:192,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:192,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:201,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:202,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:203,1
    - Dst: array_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:208,1
    - Dst: composite_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:211,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:215,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/json.c:216,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:217,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:217,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:219,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:219,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:221,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/json.c:224,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:236,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:239,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:240,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:241,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:243,1
    - Dst: JsonEncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:249,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:250,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:251,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:252,1
    - Dst: JsonEncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:259,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:260,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:261,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:262,1
    - Dst: JsonEncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:269,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:270,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:271,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:272,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/json.c:277,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:278,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:279,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/json.c:283,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/json.c:283,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:284,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/json.c:284,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/json.c:285,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:286,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:292,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:292,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/json.c:295,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/adt/json.c:296,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:297,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 75
    argCount: 6
    argNames:
    - val
    - is_null
    - result
    - tcategory
    - outfuncoid
    - key_scalar
    argTypes:
    - Datum
    - bool
    - StringInfo
    - JsonTypeCategory
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 177
    functionDepth: 4
    functionLinenumber: 177
    functionLinenumberEnd: 301
    functionName: datum_to_json_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - errcode
    - check_stack_depth
    - JsonEncodeDateTime
    - VARDATA_ANY
    - DatumGetBool
    - appendBinaryStringInfo
    - Assert
    - pfree
    - appendStringInfoString
    - escape_json
    - VARSIZE_ANY_EXHDR
    - OidFunctionCall1
    - OidOutputFunctionCall
    - errmsg
    - composite_to_json
    - appendStringInfoChar
    - DatumGetTextPP
    - ereport
    - strlen
    - escape_json_text
    - array_to_json_internal
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void datum_to_json_internal(Datum val, bool is_null, StringInfo result,\n\t\t\t\t\t
      \  JsonTypeCategory tcategory, Oid outfuncoid,\n\t\t\t\t\t   bool key_scalar)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/json.c:312,1
    - Dst: DatumGetDateADT
      Src: /src/postgres/src/backend/utils/adt/json.c:321,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/json.c:324,1
    - Dst: EncodeSpecialDate
      Src: /src/postgres/src/backend/utils/adt/json.c:325,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/json.c:328,1
    - Dst: EncodeDateOnly
      Src: /src/postgres/src/backend/utils/adt/json.c:330,1
    - Dst: DatumGetTimeADT
      Src: /src/postgres/src/backend/utils/adt/json.c:336,1
    - Dst: time2tm
      Src: /src/postgres/src/backend/utils/adt/json.c:342,1
    - Dst: EncodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/json.c:343,1
    - Dst: DatumGetTimeTzADTP
      Src: /src/postgres/src/backend/utils/adt/json.c:348,1
    - Dst: timetz2tm
      Src: /src/postgres/src/backend/utils/adt/json.c:355,1
    - Dst: EncodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/json.c:356,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/json.c:365,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/json.c:367,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/json.c:368,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/json.c:369,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:370,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:372,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:374,1
    - Dst: DatumGetTimestampTz
      Src: /src/postgres/src/backend/utils/adt/json.c:385,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/json.c:400,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/json.c:401,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/json.c:402,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:408,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:411,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:412,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:413,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/json.c:417,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 4
    argNames:
    - buf
    - value
    - typid
    - tzp
    argTypes:
    - char*
    - Datum
    - Oid
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 422
    functionName: JsonEncodeDateTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - errcode
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - DatumGetTimestampTz
    - EncodeDateOnly
    - palloc
    - j2date
    - EncodeSpecialTimestamp
    - elog
    - DATE_NOT_FINITE
    - timetz2tm
    - errmsg
    - DatumGetTimeTzADTP
    - time2tm
    - ereport
    - EncodeDateTime
    - DatumGetTimestamp
    - EncodeTimeOnly
    - DatumGetDateADT
    - EncodeSpecialDate
    - DatumGetTimeADT
    linkageType: ''
    returnType: char
    signature: 'char *

      JsonEncodeDateTime(char *buf, Datum value, Oid typid, const int *tzp)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/json.c:437,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:441,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:446,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:450,1
    - Dst: array_dim_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:461,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:466,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 10
    argNames:
    - result
    - dim
    - ndims
    - dims
    - vals
    - nulls
    - valcount
    - tcategory
    - outfuncoid
    - use_line_feeds
    argTypes:
    - StringInfo
    - int
    - int
    - int*
    - Datum*
    - bool*
    - int*
    - JsonTypeCategory
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 429
    functionDepth: 5
    functionLinenumber: 429
    functionLinenumberEnd: 467
    functionName: array_dim_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - datum_to_json_internal
    - Assert
    - appendStringInfoString
    - array_dim_to_json
    - appendStringInfoChar
    linkageType: ''
    returnType: void
    signature: "void array_dim_to_json(StringInfo result, int dim, int ndims, int
      *dims, const Datum *vals,\n\t\t\t\t  const bool *nulls, int *valcount, JsonTypeCategory
      tcategory,\n\t\t\t\t  Oid outfuncoid, bool use_line_feeds)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/utils/adt/json.c:475,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/json.c:476,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/json.c:489,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/json.c:490,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/utils/adt/json.c:491,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:495,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/utils/adt/json.c:499,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:502,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/utils/adt/json.c:505,1
    - Dst: array_dim_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:509,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:512,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - array
    - result
    - use_line_feeds
    argTypes:
    - Datum
    - StringInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 472
    functionDepth: 6
    functionLinenumber: 472
    functionLinenumberEnd: 514
    functionName: array_to_json_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - get_typlenbyvalalign
    - pfree
    - appendStringInfoString
    - ARR_ELEMTYPE
    - json_categorize_type
    - array_dim_to_json
    - ARR_NDIM
    - DatumGetArrayTypeP
    - ArrayGetNItems
    - deconstruct_array
    - ARR_DIMS
    linkageType: ''
    returnType: void
    signature: void array_to_json_internal(Datum array, StringInfo result, bool use_line_feeds)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:539,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:539,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/utils/adt/json.c:541,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/json.c:544,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/json.c:545,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/json.c:546,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/json.c:549,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:553,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/json.c:562,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:568,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/json.c:571,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/adt/json.c:572,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:573,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/adt/json.c:575,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:583,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:586,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:590,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/json.c:591,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - composite
    - result
    - use_line_feeds
    argTypes:
    - Datum
    - StringInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 520
    functionDepth: 5
    functionLinenumber: 520
    functionLinenumberEnd: 592
    functionName: composite_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - appendStringInfoChar
    - appendBinaryStringInfo
    - HeapTupleHeaderGetDatumLength
    - heap_getattr
    - ReleaseTupleDesc
    - datum_to_json_internal
    - HeapTupleHeaderGetTypMod
    - escape_json
    - HeapTupleHeaderGetTypeId
    - lookup_rowtype_tupdesc
    - json_categorize_type
    - strlen
    - NameStr
    - TupleDescAttr
    - DatumGetHeapTupleHeader
    linkageType: ''
    returnType: void
    signature: void composite_to_json(Datum composite, StringInfo result, bool use_line_feeds)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:609,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:610,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:611,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:619,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - val
    - is_null
    - result
    - val_type
    - key_scalar
    argTypes:
    - Datum
    - bool
    - StringInfo
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 601
    functionDepth: 5
    functionLinenumber: 601
    functionLinenumberEnd: 624
    functionName: add_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - datum_to_json_internal
    - errcode
    - ereport
    - json_categorize_type
    - errmsg
    linkageType: ''
    returnType: void
    signature: "void add_json(Datum val, bool is_null, StringInfo result,\n\t\t Oid
      val_type, bool key_scalar)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:632,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:635,1
    - Dst: array_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:637,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:639,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 629
    functionDepth: 7
    functionLinenumber: 629
    functionLinenumberEnd: 640
    functionName: array_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_RETURN_TEXT_P
    - initStringInfo
    - cstring_to_text_with_len
    - array_to_json_internal
    linkageType: ''
    returnType: Datum
    signature: Datum array_to_json(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:648,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/json.c:649,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:652,1
    - Dst: array_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:654,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:656,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 645
    functionDepth: 7
    functionLinenumber: 645
    functionLinenumberEnd: 657
    functionName: array_to_json_pretty
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_BOOL
    - PG_RETURN_TEXT_P
    - initStringInfo
    - cstring_to_text_with_len
    - array_to_json_internal
    linkageType: ''
    returnType: Datum
    signature: Datum array_to_json_pretty(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:665,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:668,1
    - Dst: composite_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:670,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:672,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 662
    functionDepth: 6
    functionLinenumber: 662
    functionLinenumberEnd: 673
    functionName: row_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - initStringInfo
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    - composite_to_json
    linkageType: ''
    returnType: Datum
    signature: Datum row_to_json(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:681,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/json.c:682,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:685,1
    - Dst: composite_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:687,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:689,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 678
    functionDepth: 6
    functionLinenumber: 678
    functionLinenumberEnd: 690
    functionName: row_to_json_pretty
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_BOOL
    - PG_RETURN_TEXT_P
    - initStringInfo
    - cstring_to_text_with_len
    - composite_to_json
    linkageType: ''
    returnType: Datum
    signature: Datum row_to_json_pretty(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_check_mutability
      Src: /src/postgres/src/backend/utils/adt/json.c:700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - typoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 702
    functionName: to_json_is_immutable
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - json_check_mutability
    linkageType: ''
    returnType: bool
    signature: bool to_json_is_immutable(Oid typoid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:710,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/json.c:711,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:716,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:717,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:718,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:720,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:723,1
    - Dst: datum_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 707
    functionDepth: 2
    functionLinenumber: 707
    functionLinenumberEnd: 724
    functionName: to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 7
    functionsReached:
    - PG_GETARG_DATUM
    - errcode
    - PG_RETURN_DATUM
    - ereport
    - datum_to_json
    - json_categorize_type
    - errmsg
    - get_fn_expr_argtype
    linkageType: ''
    returnType: Datum
    signature: Datum to_json(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:736,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:737,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:740,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:740,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - val
    - tcategory
    - outfuncoid
    argTypes:
    - Datum
    - JsonTypeCategory
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 731
    functionDepth: 5
    functionLinenumber: 731
    functionLinenumberEnd: 741
    functionName: datum_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 2
    functionsReached:
    - cstring_to_text_with_len
    - initStringInfo
    - PointerGetDatum
    - datum_to_json_internal
    linkageType: ''
    returnType: Datum
    signature: Datum datum_to_json(Datum val, JsonTypeCategory tcategory, Oid outfuncoid)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/json.c:756,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/json.c:759,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:762,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/json.c:764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:767,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:768,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:769,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:777,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/json.c:778,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:779,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:780,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:782,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:783,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:788,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:791,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:792,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:795,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:798,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:800,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:802,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:805,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:808,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:812,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:815,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:823,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 2
    argNames:
    - fcinfo
    - absent_on_null
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 748
    functionDepth: 5
    functionLinenumber: 748
    functionLinenumberEnd: 824
    functionName: json_agg_transfn_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - elog
    - makeStringInfo
    - PG_GETARG_DATUM
    - errcode
    - AggCheckCallContext
    - datum_to_json_internal
    - appendStringInfoString
    - ereport
    - MemoryContextSwitchTo
    - json_categorize_type
    - errmsg
    - palloc_object
    - get_fn_expr_argtype
    - PG_RETURN_POINTER
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - appendStringInfoChar
    linkageType: ''
    returnType: Datum
    signature: Datum json_agg_transfn_worker(FunctionCallInfo fcinfo, bool absent_on_null)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_agg_transfn_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 830
    functionDepth: 6
    functionLinenumber: 830
    functionLinenumberEnd: 834
    functionName: json_agg_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - json_agg_transfn_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_agg_transfn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_agg_transfn_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 839
    functionDepth: 6
    functionLinenumber: 839
    functionLinenumberEnd: 843
    functionName: json_agg_strict_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - json_agg_transfn_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_agg_strict_transfn(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/json.c:854,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/json.c:854,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:856,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:858,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:862,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:865,1
    - Dst: catenate_stringinfo_string
      Src: /src/postgres/src/backend/utils/adt/json.c:865,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 848
    functionDepth: 2
    functionLinenumber: 848
    functionLinenumberEnd: 866
    functionName: json_agg_finalfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - Assert
    - AggCheckCallContext
    - PG_RETURN_TEXT_P
    - catenate_stringinfo_string
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum json_agg_finalfn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_bytes_uint32
      Src: /src/postgres/src/backend/utils/adt/json.c:873,1
    - Dst: hash_bytes
      Src: /src/postgres/src/backend/utils/adt/json.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 869
    functionDepth: 2
    functionLinenumber: 869
    functionLinenumberEnd: 878
    functionName: json_unique_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - hash_bytes
    - hash_bytes_uint32
    linkageType: ''
    returnType: uint32
    signature: uint32 json_unique_hash(const void *key, Size keysize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/json.c:892,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - void*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 893
    functionName: json_unique_hash_match
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int json_unique_hash_match(const void *key1, const void *key2, Size
      keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/json.c:906,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/json.c:913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - cxt
    argTypes:
    - JsonUniqueCheckState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 901
    functionDepth: 2
    functionLinenumber: 901
    functionLinenumberEnd: 917
    functionName: json_unique_check_init
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - memset
    - hash_create
    linkageType: ''
    returnType: void
    signature: void json_unique_check_init(JsonUniqueCheckState *cxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_unique_check_init
      Src: /src/postgres/src/backend/utils/adt/json.c:922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cxt
    argTypes:
    - JsonUniqueBuilderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 919
    functionDepth: 3
    functionLinenumber: 919
    functionLinenumberEnd: 925
    functionName: json_unique_builder_init
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - json_unique_check_init
    linkageType: ''
    returnType: void
    signature: void json_unique_builder_init(JsonUniqueBuilderState *cxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:934,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/json.c:937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - cxt
    - key
    - object_id
    argTypes:
    - JsonUniqueCheckState*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 927
    functionDepth: 2
    functionLinenumber: 927
    functionLinenumberEnd: 940
    functionName: json_unique_check_key
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - strlen
    - hash_search
    linkageType: ''
    returnType: bool
    signature: bool json_unique_check_key(JsonUniqueCheckState *cxt, const char *key,
      int object_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:954,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:956,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:957,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cxt
    argTypes:
    - JsonUniqueBuilderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 947
    functionDepth: 3
    functionLinenumber: 947
    functionLinenumberEnd: 964
    functionName: json_unique_builder_get_throwawaybuf
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - initStringInfo
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: StringInfo
    signature: StringInfo json_unique_builder_get_throwawaybuf(JsonUniqueBuilderState
      *cxt)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/json.c:983,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/json.c:986,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:989,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:999,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/json.c:1000,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1001,1
    - Dst: json_unique_builder_init
      Src: /src/postgres/src/backend/utils/adt/json.c:1003,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/json.c:1005,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:1006,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/json.c:1008,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1011,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1012,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1013,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:1015,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/json.c:1018,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1021,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1022,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1023,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:1025,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1028,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1032,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1043,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1044,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1045,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1046,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1049,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1059,1
    - Dst: json_unique_builder_get_throwawaybuf
      Src: /src/postgres/src/backend/utils/adt/json.c:1061,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1072,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1075,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:1079,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/utils/adt/json.c:1090,1
    - Dst: json_unique_check_key
      Src: /src/postgres/src/backend/utils/adt/json.c:1093,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1094,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1095,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1096,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1099,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1102,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1104,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1107,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:1109,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1109,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1113,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 3
    argNames:
    - fcinfo
    - absent_on_null
    - unique_keys
    argTypes:
    - FunctionCallInfo
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 971
    functionDepth: 5
    functionLinenumber: 971
    functionLinenumberEnd: 1114
    functionName: json_object_agg_transfn_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - errcode
    - json_unique_check_key
    - json_unique_builder_init
    - PG_RETURN_POINTER
    - elog
    - AggCheckCallContext
    - appendStringInfoString
    - errmsg
    - palloc_object
    - PG_GETARG_POINTER
    - json_unique_builder_get_throwawaybuf
    - PG_ARGISNULL
    - ereport
    - json_categorize_type
    - memset
    - get_fn_expr_argtype
    - datum_to_json_internal
    - MemoryContextStrdup
    - MemoryContextSwitchTo
    - makeStringInfo
    linkageType: ''
    returnType: Datum
    signature: "Datum json_object_agg_transfn_worker(FunctionCallInfo fcinfo,\n\t\t\t\t\t\t\t
      \  bool absent_on_null, bool unique_keys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_agg_transfn_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:1122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1119
    functionDepth: 6
    functionLinenumber: 1119
    functionLinenumberEnd: 1123
    functionName: json_object_agg_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - json_object_agg_transfn_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_object_agg_transfn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_agg_transfn_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:1131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1128
    functionDepth: 6
    functionLinenumber: 1128
    functionLinenumberEnd: 1132
    functionName: json_object_agg_strict_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - json_object_agg_transfn_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_object_agg_strict_transfn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_agg_transfn_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:1140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1137
    functionDepth: 6
    functionLinenumber: 1137
    functionLinenumberEnd: 1141
    functionName: json_object_agg_unique_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - json_object_agg_transfn_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_object_agg_unique_transfn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_agg_transfn_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:1149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1146
    functionDepth: 6
    functionLinenumber: 1146
    functionLinenumberEnd: 1150
    functionName: json_object_agg_unique_strict_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - json_object_agg_transfn_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_object_agg_unique_strict_transfn(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/json.c:1161,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/json.c:1161,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1163,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1163,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1167,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1170,1
    - Dst: catenate_stringinfo_string
      Src: /src/postgres/src/backend/utils/adt/json.c:1170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1155
    functionDepth: 2
    functionLinenumber: 1155
    functionLinenumberEnd: 1171
    functionName: json_object_agg_finalfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - Assert
    - AggCheckCallContext
    - PG_RETURN_TEXT_P
    - catenate_stringinfo_string
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum json_object_agg_finalfn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:1183,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/json.c:1184,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/json.c:1186,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/json.c:1187,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/json.c:1187,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/json.c:1188,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/json.c:1188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - addon
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1178
    functionDepth: 2
    functionLinenumber: 1178
    functionLinenumberEnd: 1191
    functionName: catenate_stringinfo_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 2
    functionsReached:
    - memcpy
    - strlen
    - VARDATA
    - SET_VARSIZE
    - palloc
    linkageType: ''
    returnType: text
    signature: 'text *

      catenate_stringinfo_string(StringInfo buffer, const char *addon)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1203,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1204,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1205,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/json.c:1207,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1210,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1212,1
    - Dst: json_unique_builder_init
      Src: /src/postgres/src/backend/utils/adt/json.c:1215,1
    - Dst: json_unique_builder_get_throwawaybuf
      Src: /src/postgres/src/backend/utils/adt/json.c:1232,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1236,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1245,1
    - Dst: add_json
      Src: /src/postgres/src/backend/utils/adt/json.c:1250,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/json.c:1262,1
    - Dst: json_unique_check_key
      Src: /src/postgres/src/backend/utils/adt/json.c:1264,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1265,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1266,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1267,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1273,1
    - Dst: add_json
      Src: /src/postgres/src/backend/utils/adt/json.c:1276,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1279,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:1281,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1281,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 6
    argNames:
    - nargs
    - args
    - nulls
    - types
    - absent_on_null
    - unique_keys
    argTypes:
    - int
    - Datum*
    - bool*
    - Oid*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1193
    functionDepth: 6
    functionLinenumber: 1193
    functionLinenumberEnd: 1282
    functionName: json_build_object_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - json_unique_builder_get_throwawaybuf
    - errcode
    - appendStringInfoString
    - pstrdup
    - ereport
    - errhint
    - json_unique_builder_init
    - json_unique_check_key
    - errmsg
    - PointerGetDatum
    - add_json
    - cstring_to_text_with_len
    - makeStringInfo
    - appendStringInfoChar
    linkageType: ''
    returnType: Datum
    signature: "Datum json_build_object_worker(int nargs, const Datum *args, const
      bool *nulls, const Oid *types,\n\t\t\t\t\t\t bool absent_on_null, bool unique_keys)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: extract_variadic_args
      Src: /src/postgres/src/backend/utils/adt/json.c:1295,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1299,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1301,1
    - Dst: json_build_object_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:1301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1287
    functionDepth: 7
    functionLinenumber: 1287
    functionLinenumberEnd: 1302
    functionName: json_build_object
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_RETURN_DATUM
    - extract_variadic_args
    - json_build_object_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_build_object(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1310,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1307
    functionDepth: 1
    functionLinenumber: 1307
    functionLinenumberEnd: 1311
    functionName: json_build_object_noargs
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - cstring_to_text_with_len
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum json_build_object_noargs(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1321,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1323,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1330,1
    - Dst: add_json
      Src: /src/postgres/src/backend/utils/adt/json.c:1332,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1335,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:1337,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1337,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - nargs
    - args
    - nulls
    - types
    - absent_on_null
    argTypes:
    - int
    - Datum*
    - bool*
    - Oid*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1313
    functionDepth: 6
    functionLinenumber: 1313
    functionLinenumberEnd: 1338
    functionName: json_build_array_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - initStringInfo
    - cstring_to_text_with_len
    - PointerGetDatum
    - add_json
    - appendStringInfoChar
    linkageType: ''
    returnType: Datum
    signature: "Datum json_build_array_worker(int nargs, const Datum *args, const
      bool *nulls, const Oid *types,\n\t\t\t\t\t\tbool absent_on_null)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: extract_variadic_args
      Src: /src/postgres/src/backend/utils/adt/json.c:1351,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1355,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1357,1
    - Dst: json_build_array_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:1357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1343
    functionDepth: 7
    functionLinenumber: 1343
    functionLinenumberEnd: 1358
    functionName: json_build_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_RETURN_DATUM
    - extract_variadic_args
    - json_build_array_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_build_array(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1366,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1363
    functionDepth: 1
    functionLinenumber: 1363
    functionLinenumberEnd: 1367
    functionName: json_build_array_noargs
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - cstring_to_text_with_len
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum json_build_array_noargs(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1378,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/json.c:1379,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1391,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:1391,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/json.c:1395,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1396,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1397,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1398,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/json.c:1402,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1403,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1404,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1409,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1410,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1411,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/json.c:1414,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1418,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1420,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1425,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1426,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1427,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1430,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1431,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:1431,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1432,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1434,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1437,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:1438,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1442,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1444,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1445,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1447,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1448,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1450,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1451
      start: 1375
    functionDepth: 3
    functionLinenumber: 1375
    functionLinenumberEnd: 1451
    functionName: json_object
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - appendStringInfoChar
    - escape_json_text
    - errcode
    - pfree
    - PG_RETURN_DATUM
    - initStringInfo
    - ereport
    - appendStringInfoString
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    - CStringGetTextDatum
    - ARR_NDIM
    - PG_GETARG_ARRAYTYPE_P
    - errmsg
    - ARR_DIMS
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum json_object(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1462,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1463,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/json.c:1464,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/json.c:1465,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1477,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1478,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1479,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1482,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:1482,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/json.c:1484,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/json.c:1485,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1488,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1489,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1490,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1492,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1494,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1499,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1500,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1501,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1504,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1505,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:1505,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1506,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1508,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1510,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:1511,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1514,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1516,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1517,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1518,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1519,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1521,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1522,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1524,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1459
    functionDepth: 3
    functionLinenumber: 1459
    functionLinenumberEnd: 1525
    functionName: json_object_two_arg
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - escape_json_text
    - errcode
    - pfree
    - PG_RETURN_DATUM
    - initStringInfo
    - ereport
    - appendStringInfoString
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    - CStringGetTextDatum
    - errmsg
    - ARR_NDIM
    - PG_GETARG_ARRAYTYPE_P
    - appendStringInfoChar
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum json_object_two_arg(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1537,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1540,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1543,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1546,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1549,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1552,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1555,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1559,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/json.c:1561,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - buf
    - c
    argTypes:
    - StringInfo
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1531
    functionDepth: 2
    functionLinenumber: 1531
    functionLinenumberEnd: 1564
    functionName: escape_json_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline escape_json_char(StringInfo buf, char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/json.c:1574,1
    - Dst: escape_json_char
      Src: /src/postgres/src/backend/utils/adt/json.c:1577,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/json.c:1579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1580
      start: 1571
    functionDepth: 3
    functionLinenumber: 1571
    functionLinenumberEnd: 1580
    functionName: escape_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 8
    functionsReached:
    - escape_json_char
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: void
    signature: void escape_json(StringInfo buf, const char *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/json.c:1605,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1612,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/json.c:1620,1
    - Dst: vector8_load
      Src: /src/postgres/src/backend/utils/adt/json.c:1638,1
    - Dst: vector8_has_le
      Src: /src/postgres/src/backend/utils/adt/json.c:1644,1
    - Dst: vector8_has
      Src: /src/postgres/src/backend/utils/adt/json.c:1645,1
    - Dst: vector8_has
      Src: /src/postgres/src/backend/utils/adt/json.c:1646,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1658,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/json.c:1685,1
    - Dst: escape_json_char
      Src: /src/postgres/src/backend/utils/adt/json.c:1687,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/json.c:1695,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 3
    argNames:
    - buf
    - str
    - len
    argTypes:
    - StringInfo
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1696
      start: 1600
    functionDepth: 3
    functionLinenumber: 1600
    functionLinenumberEnd: 1696
    functionName: escape_json_with_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - vector8_load
    - appendBinaryStringInfo
    - vector8_has
    - Assert
    - escape_json_char
    - vector8_has_le
    - enlargeStringInfo
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: void
    signature: void escape_json_with_len(StringInfo buf, const char *str, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_detoast_datum_packed
      Src: /src/postgres/src/backend/utils/adt/json.c:1709,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/utils/adt/json.c:1709,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/json.c:1710,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/json.c:1713,1
    - Dst: escape_json_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1715,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - txt
    argTypes:
    - StringInfo
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1705
    functionDepth: 4
    functionLinenumber: 1705
    functionLinenumberEnd: 1720
    functionName: escape_json_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 3
    functionsReached:
    - pfree
    - pg_detoast_datum_packed
    - unconstify
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - escape_json_with_len
    linkageType: ''
    returnType: void
    signature: void escape_json_text(StringInfo buf, const text *txt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/json.c:1733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1723
    functionDepth: 0
    functionLinenumber: 1723
    functionLinenumberEnd: 1739
    functionName: json_unique_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_unique_object_start(void *_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1752,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1741
    functionDepth: 0
    functionLinenumber: 1741
    functionLinenumberEnd: 1754
    functionName: json_unique_object_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - pfree
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_unique_object_end(void *_state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_unique_check_key
      Src: /src/postgres/src/backend/utils/adt/json.c:1766,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1775,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - _state
    - field
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1756
    functionDepth: 3
    functionLinenumber: 1756
    functionLinenumberEnd: 1778
    functionName: json_unique_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - pfree
    - json_unique_check_key
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType json_unique_object_field_start(void *_state, char
      *field, bool isnull)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/json.c:1789,1
    - Dst: json_unique_check_init
      Src: /src/postgres/src/backend/utils/adt/json.c:1797,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/backend/utils/adt/json.c:1805,1
    - Dst: json_errsave_error
      Src: /src/postgres/src/backend/utils/adt/json.c:1810,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1818,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1819,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1820,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/json.c:1826,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - json
    - check_unique_keys
    - throw_error
    argTypes:
    - text*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1781
    functionDepth: 3
    functionLinenumber: 1781
    functionLinenumberEnd: 1829
    functionName: json_validate
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 2
    functionsReached:
    - freeJsonLexContext
    - errcode
    - ereport
    - json_unique_check_init
    - pg_parse_json
    - errmsg
    - makeJsonLexContext
    - json_errsave_error
    linkageType: ''
    returnType: bool
    signature: bool json_validate(text *json, bool check_unique_keys, bool throw_error)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/json.c:1846,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/json.c:1852,1
    - Dst: json_lex
      Src: /src/postgres/src/backend/utils/adt/json.c:1853,1
    - Dst: json_errsave_error
      Src: /src/postgres/src/backend/utils/adt/json.c:1855,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/json.c:1879,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1882,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1882,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1883
      start: 1843
    functionDepth: 2
    functionLinenumber: 1843
    functionLinenumberEnd: 1883
    functionName: json_typeof
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - elog
    - json_lex
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - makeJsonLexContext
    - json_errsave_error
    - PG_GETARG_TEXT_PP
    linkageType: ''
    returnType: Datum
    signature: Datum json_typeof(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:69,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:70,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:79,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:82,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:85,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/bytea.c:87,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:87,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/bytea.c:89,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - bytea*
    - bytea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 92
    functionName: bytea_catenate
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - memcpy
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - VARDATA
    - SET_VARSIZE
    - palloc
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      bytea_catenate(bytea *t1, bytea *t2)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: PG_STR_GET_BYTEA
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PG_STR_GET_BYTEA(str_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/bytea.c:110,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:123,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:124,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:125,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/bytea.c:128,1
    - Dst: PG_STR_GET_BYTEA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:144,1
    - Dst: DatumGetByteaPSlice
      Src: /src/postgres/src/backend/utils/adt/bytea.c:154,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - str
    - S
    - L
    - length_not_specified
    argTypes:
    - Datum
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 155
    functionName: bytea_substring
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - DatumGetByteaPSlice
    - Max
    - errmsg
    - pg_add_s32_overflow
    - PG_STR_GET_BYTEA
    linkageType: ''
    returnType: bytea
    signature: "bytea *\nbytea_substring(Datum str,\n\t\t\t\tint S,\n\t\t\t\tint L,\n\t\t\t\tbool
      length_not_specified)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:173,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/bytea.c:174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:175,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:176,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:177,1
    - Dst: bytea_substring
      Src: /src/postgres/src/backend/utils/adt/bytea.c:179,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/bytea.c:179,1
    - Dst: bytea_substring
      Src: /src/postgres/src/backend/utils/adt/bytea.c:180,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/bytea.c:180,1
    - Dst: bytea_catenate
      Src: /src/postgres/src/backend/utils/adt/bytea.c:181,1
    - Dst: bytea_catenate
      Src: /src/postgres/src/backend/utils/adt/bytea.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - t1
    - t2
    - sp
    - sl
    argTypes:
    - bytea*
    - bytea*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 157
    functionDepth: 5
    functionLinenumber: 157
    functionLinenumberEnd: 185
    functionName: bytea_overlay
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - bytea_substring
    - errcode
    - bytea_catenate
    - ereport
    - errmsg
    - PointerGetDatum
    - pg_add_s32_overflow
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      bytea_overlay(bytea *t1, bytea *t2, int sp, int sl)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CH
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: VAL
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VAL(CH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - VAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 193
    functionName: DIG
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIG(VAL)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/bytea.c:203,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/bytea.c:205,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:215,1
    - Dst: hex_decode_safe
      Src: /src/postgres/src/backend/utils/adt/bytea.c:216,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:216,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:218,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:220,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:224,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:227,1
    - Dst: VAL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:238,1
    - Dst: VAL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:240,1
    - Dst: VAL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:242,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/bytea.c:256,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:257,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:258,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:262,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:263,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:265,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 266
    functionName: byteain
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - ereturn
    - errcode
    - PG_GETARG_CSTRING
    - PG_RETURN_BYTEA_P
    - strlen
    - errmsg
    - VARDATA
    - palloc
    - SET_VARSIZE
    - VAL
    - hex_decode_safe
    linkageType: ''
    returnType: Datum
    signature: Datum byteain(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:277,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:284,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:284,1
    - Dst: hex_encode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:287,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:287,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:287,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:297,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:298,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:314,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:315,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/bytea.c:316,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:317,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:319,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:320,1
    - Dst: DIG
      Src: /src/postgres/src/backend/utils/adt/bytea.c:333,1
    - Dst: DIG
      Src: /src/postgres/src/backend/utils/adt/bytea.c:335,1
    - Dst: DIG
      Src: /src/postgres/src/backend/utils/adt/bytea.c:337,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:346,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/bytea.c:351,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 274
    functionDepth: 4
    functionLinenumber: 274
    functionLinenumberEnd: 352
    functionName: byteaout
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 1
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - hex_encode
    - errmsg_internal
    - errcode
    - DIG
    - ereport
    - PG_RETURN_CSTRING
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum byteaout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bytea.c:360,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:365,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:366,1
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/utils/adt/bytea.c:367,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:367,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 369
    functionName: bytearecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - pq_copymsgbytes
    - VARDATA
    - SET_VARSIZE
    - PG_GETARG_POINTER
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum bytearecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_P_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:379,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 382
    functionName: byteasend
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 3
    functionsReached:
    - PG_RETURN_BYTEA_P
    - PG_GETARG_BYTEA_P_COPY
    linkageType: ''
    returnType: Datum
    signature: Datum byteasend(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:389,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bytea.c:389,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:392,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:394,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/bytea.c:413,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:416,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:423,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:424,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:425,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:430,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:432,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:434,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:434,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:435,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:437,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:440,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:440,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:441,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/bytea.c:449,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:450,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 384
    functionDepth: 4
    functionLinenumber: 384
    functionLinenumberEnd: 451
    functionName: bytea_string_agg_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - makeStringInfo
    - appendBinaryStringInfo
    - AggCheckCallContext
    - MemoryContextSwitchTo
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_POINTER
    - PG_RETURN_NULL
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_string_agg_transfn(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/bytea.c:459,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/bytea.c:459,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:461,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bytea.c:461,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:469,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:470,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/bytea.c:471,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:471,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:472,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:475,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 476
    functionName: bytea_string_agg_finalfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - AggCheckCallContext
    - PG_RETURN_BYTEA_P
    - PG_RETURN_NULL
    - SET_VARSIZE
    - palloc
    - VARDATA
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_string_agg_finalfn(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:487,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:490,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 484
    functionDepth: 4
    functionLinenumber: 484
    functionLinenumberEnd: 491
    functionName: byteaoctetlen
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - toast_raw_datum_size
    - PG_GETARG_DATUM
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum byteaoctetlen(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:503,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:504,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:506,1
    - Dst: bytea_catenate
      Src: /src/postgres/src/backend/utils/adt/bytea.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 500
    functionDepth: 5
    functionLinenumber: 500
    functionLinenumberEnd: 507
    functionName: byteacat
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - bytea_catenate
    - PG_RETURN_BYTEA_P
    linkageType: ''
    returnType: Datum
    signature: Datum byteacat(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:519,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:520,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:521,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:522,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:524,1
    - Dst: bytea_overlay
      Src: /src/postgres/src/backend/utils/adt/bytea.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 516
    functionDepth: 6
    functionLinenumber: 516
    functionLinenumberEnd: 525
    functionName: byteaoverlay
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - bytea_overlay
    - PG_GETARG_INT32
    - PG_RETURN_BYTEA_P
    linkageType: ''
    returnType: Datum
    signature: Datum byteaoverlay(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:530,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:531,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:532,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:535,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:536,1
    - Dst: bytea_overlay
      Src: /src/postgres/src/backend/utils/adt/bytea.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 527
    functionDepth: 6
    functionLinenumber: 527
    functionLinenumberEnd: 537
    functionName: byteaoverlay_no_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_BYTEA_P
    - VARSIZE_ANY_EXHDR
    - bytea_overlay
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum byteaoverlay_no_len(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:557,1
    - Dst: bytea_substring
      Src: /src/postgres/src/backend/utils/adt/bytea.c:557,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:557,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:558,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 554
    functionDepth: 3
    functionLinenumber: 554
    functionLinenumberEnd: 561
    functionName: bytea_substr
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - bytea_substring
    - PG_GETARG_DATUM
    - PG_GETARG_INT32
    - PG_RETURN_BYTEA_P
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_substr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:571,1
    - Dst: bytea_substring
      Src: /src/postgres/src/backend/utils/adt/bytea.c:571,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:571,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 568
    functionDepth: 3
    functionLinenumber: 568
    functionLinenumberEnd: 575
    functionName: bytea_substr_no_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - bytea_substring
    - PG_GETARG_DATUM
    - PG_GETARG_INT32
    - PG_RETURN_BYTEA_P
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_substr_no_len(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:583,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/bytea.c:585,1
    - Dst: pg_popcount
      Src: /src/postgres/src/backend/utils/adt/bytea.c:585,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:585,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 580
    functionDepth: 4
    functionLinenumber: 580
    functionLinenumberEnd: 586
    functionName: bytea_bit_count
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - pg_popcount
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_bit_count(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:597,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:598,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:607,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:608,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:611,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:613,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:614,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:620,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:628,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 594
    functionDepth: 4
    functionLinenumber: 594
    functionLinenumberEnd: 629
    functionName: byteapos
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_INT32
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum byteapos(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:641,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:642,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:646,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:649,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:650,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:651,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:654,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:656,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 638
    functionDepth: 4
    functionLinenumber: 638
    functionLinenumberEnd: 657
    functionName: byteaGetByte
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_INT32
    - errcode
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errmsg
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum byteaGetByte(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:670,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/bytea.c:671,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:680,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:681,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:682,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:689,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:692,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:694,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 667
    functionDepth: 4
    functionLinenumber: 667
    functionLinenumberEnd: 695
    functionName: byteaGetBit
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_INT32
    - errcode
    - ereport
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_GETARG_INT64
    - errmsg
    linkageType: ''
    returnType: Datum
    signature: Datum byteaGetBit(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_P_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:708,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:709,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:710,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:713,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:716,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:717,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:718,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:724,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:726,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 705
    functionDepth: 2
    functionLinenumber: 705
    functionLinenumberEnd: 727
    functionName: byteaSetByte
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - VARSIZE
    - errcode
    - ereport
    - PG_RETURN_BYTEA_P
    - errmsg
    - VARDATA
    - PG_GETARG_INT32
    - PG_GETARG_BYTEA_P_COPY
    linkageType: ''
    returnType: Datum
    signature: Datum byteaSetByte(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_P_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:740,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/bytea.c:741,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:742,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:749,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:752,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:753,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:765,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:766,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:767,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:772,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:779,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:781,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 737
    functionDepth: 2
    functionLinenumber: 737
    functionLinenumberEnd: 782
    functionName: byteaSetBit
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - VARSIZE
    - errcode
    - ereport
    - PG_RETURN_BYTEA_P
    - PG_GETARG_INT64
    - errmsg
    - VARDATA
    - PG_GETARG_INT32
    - PG_GETARG_BYTEA_P_COPY
    linkageType: ''
    returnType: Datum
    signature: Datum byteaSetBit(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:790,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:791,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:792,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:794,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:795,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:797,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 787
    functionDepth: 4
    functionLinenumber: 787
    functionLinenumberEnd: 803
    functionName: bytea_reverse
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_BYTEA_P
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - VARDATA
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_reverse(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:817,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:818,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:827,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:828,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:833,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:834,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:836,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:836,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:836,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:839,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:840,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 814
    functionDepth: 4
    functionLinenumber: 814
    functionLinenumberEnd: 844
    functionName: byteaeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - toast_raw_datum_size
    - DatumGetByteaPP
    - PG_RETURN_BOOL
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum byteaeq(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:849,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:850,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:859,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:860,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:865,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:866,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:868,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:868,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:868,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:871,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:872,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:875,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 846
    functionDepth: 4
    functionLinenumber: 846
    functionLinenumberEnd: 876
    functionName: byteane
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - toast_raw_datum_size
    - DatumGetByteaPP
    - PG_RETURN_BOOL
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum byteane(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:881,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:882,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:887,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:888,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:890,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:890,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:890,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:890,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:892,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:893,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:895,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 878
    functionDepth: 4
    functionLinenumber: 878
    functionLinenumberEnd: 896
    functionName: bytealt
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BOOL
    - Min
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum bytealt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:901,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:902,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:907,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:908,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:910,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:910,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:910,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:910,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:912,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:913,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:915,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 898
    functionDepth: 4
    functionLinenumber: 898
    functionLinenumberEnd: 916
    functionName: byteale
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BOOL
    - Min
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum byteale(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:921,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:922,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:927,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:928,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:930,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:930,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:930,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:930,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:932,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:933,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:935,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 918
    functionDepth: 4
    functionLinenumber: 918
    functionLinenumberEnd: 936
    functionName: byteagt
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BOOL
    - Min
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum byteagt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:941,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:942,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:947,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:948,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:950,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:950,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:950,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:950,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:952,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:953,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 938
    functionDepth: 4
    functionLinenumber: 938
    functionLinenumberEnd: 956
    functionName: byteage
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BOOL
    - Min
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum byteage(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:961,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:962,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:967,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:968,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:970,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:970,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:970,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:970,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:974,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:975,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:977,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 958
    functionDepth: 4
    functionLinenumber: 958
    functionLinenumberEnd: 978
    functionName: byteacmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_INT32
    - PG_FREE_IF_COPY
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - Min
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum byteacmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:983,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:984,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:990,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:991,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:993,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:993,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:993,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:993,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:996,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 980
    functionDepth: 4
    functionLinenumber: 980
    functionLinenumberEnd: 997
    functionName: bytea_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_BYTEA_P
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - Min
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1002,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1003,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1009,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1010,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1012,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1012,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1012,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1012,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1015,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 999
    functionDepth: 4
    functionLinenumber: 999
    functionLinenumberEnd: 1016
    functionName: bytea_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_BYTEA_P
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - Min
    - memcmp
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_smaller(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1024,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1025,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1032,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1033,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1035,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1036,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1038,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1038,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1043,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1044,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1045,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1046,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1021
    functionDepth: 4
    functionLinenumber: 1021
    functionLinenumberEnd: 1049
    functionName: byteafastcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - pfree
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - DatumGetByteaPP
    - PointerGetDatum
    - Min
    - memcmp
    linkageType: ''
    returnType: int
    signature: int byteafastcmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1062,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1063,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1072,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1073,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1096,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1096,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1109,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1109,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1110,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1113,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1113,1
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1115,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1121,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1121,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1122,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1122,1
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1125,1
    - Dst: DatumBigEndianToNative
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1133,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1136,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - original
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1057
    functionDepth: 4
    functionLinenumber: 1057
    functionLinenumberEnd: 1140
    functionName: bytea_abbrev_convert
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - memcpy
    - DatumBigEndianToNative
    - pfree
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - DatumGetByteaPP
    - hash_any
    - memset
    - DatumGetUInt64
    - hash_uint32
    - PointerGetDatum
    - Min
    - addHyperLogLog
    - DatumGetUInt32
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_abbrev_convert(Datum original, SortSupport ssup)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1157,1
    - Dst: estimateHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1163,1
    - Dst: estimateHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1164,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1181,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1206,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - memtupcount
    - ssup
    argTypes:
    - int
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1150
    functionDepth: 1
    functionLinenumber: 1150
    functionLinenumberEnd: 1211
    functionName: bytea_abbrev_abort
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - Assert
    - estimateHyperLogLog
    - elog
    linkageType: ''
    returnType: bool
    signature: bool bytea_abbrev_abort(int memtupcount, SortSupport ssup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1216,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1219,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1230,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1232,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1233,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1242,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1213
    functionDepth: 2
    functionLinenumber: 1213
    functionLinenumberEnd: 1245
    functionName: bytea_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - initHyperLogLog
    - MemoryContextSwitchTo
    - palloc_object
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1251,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1252,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1257,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1258,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1259,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1266,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1248
    functionDepth: 4
    functionLinenumber: 1248
    functionLinenumberEnd: 1270
    functionName: bytea_int2
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - errcode
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errmsg
    - PG_RETURN_INT16
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_int2(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1276,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1277,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1282,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1283,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1284,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1291,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1273
    functionDepth: 4
    functionLinenumber: 1273
    functionLinenumberEnd: 1295
    functionName: bytea_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_INT32
    - errcode
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errmsg
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_int4(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1301,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1302,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1307,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1309,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1316,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1298
    functionDepth: 4
    functionLinenumber: 1298
    functionLinenumberEnd: 1320
    functionName: bytea_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - errcode
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errmsg
    - PG_RETURN_INT64
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int2send
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1323
    functionDepth: 5
    functionLinenumber: 1323
    functionLinenumberEnd: 1327
    functionName: int2_bytea
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - int2send
    linkageType: ''
    returnType: Datum
    signature: Datum int2_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int4send
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1330
    functionDepth: 5
    functionLinenumber: 1330
    functionLinenumberEnd: 1334
    functionName: int4_bytea
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - int4send
    linkageType: ''
    returnType: Datum
    signature: Datum int4_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int8send
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1337
    functionDepth: 5
    functionLinenumber: 1337
    functionLinenumberEnd: 1341
    functionName: int8_bytea
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - int8send
    linkageType: ''
    returnType: Datum
    signature: Datum int8_bytea(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1347,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1348,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1352,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1353,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1354,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1355,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1357,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1358,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1358,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1344
    functionDepth: 4
    functionLinenumber: 1344
    functionLinenumberEnd: 1360
    functionName: bytea_uuid
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - memcpy
    - errcode
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errmsg
    - palloc_object
    - errdetail
    - PG_RETURN_UUID_P
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_uuid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uuid_send
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1363
    functionDepth: 5
    functionLinenumber: 1363
    functionLinenumberEnd: 1367
    functionName: uuid_bytea
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - uuid_send
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_bytea(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:73,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:74,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:75,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:76,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:81,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:82,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:83,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:84,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:89,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:90,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:91,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:92,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:98,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:99,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:100,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:101,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:106,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:107,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:108,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:109,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:114,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 121
    functionName: ndistinct_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - errsave
    - errmsg
    - errdetail
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType ndistinct_object_start(void *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:138,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:144,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:145,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:146,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:147,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:154,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:155,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:156,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:157,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:166,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:169,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:171,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:172,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:178,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:180,1
    - Dst: list_nth_int
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:184,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:186,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:189,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 128
    functionDepth: 6
    functionLinenumber: 128
    functionLinenumberEnd: 198
    functionName: ndistinct_object_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - errsave
    - list_nth_int
    - list_free
    - palloc0
    - lappend
    - errmsg
    - palloc_object
    - errdetail
    - list_length
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType ndistinct_object_end(void *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:223,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:224,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:225,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:226,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 231
    functionName: ndistinct_array_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - errcode
    - errmsg
    - errdetail
    - errsave
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType ndistinct_array_start(void *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:247,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:257,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:258,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:259,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:260,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:265,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:272,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:273,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:274,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:275,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:284,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 291
    functionName: ndistinct_array_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - errsave
    - errmsg
    - errdetail
    - list_length
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType ndistinct_array_end(void *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:305,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:309,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:310,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:311,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:312,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:321,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:325,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:326,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:327,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:328,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:337,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:338,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:339,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:340,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 344
    functionName: ndistinct_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - strcmp
    - errcode
    - errsave
    - errmsg
    - errdetail
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType ndistinct_object_field_start(void *state, char *fname,
      bool isnull)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:363,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:364,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:365,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:366,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:373,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:374,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:375,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:376,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:381,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 388
    functionName: ndistinct_array_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - errsave
    - errmsg
    - errdetail
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType ndistinct_array_element_start(void *state, bool
      isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - prev
    - cur
    argTypes:
    - AttrNumber
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 411
    functionName: valid_subsequent_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool valid_subsequent_attnum(AttrNumber prev, AttrNumber cur)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_strtoint16_safe
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:429,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:433,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:434,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:435,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:436,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:446,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:447,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:448,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:449,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:454,1
    - Dst: llast_int
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:456,1
    - Dst: valid_subsequent_attnum
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:458,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:460,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:461,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:462,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:463,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:469,1
    - Dst: pg_strtoint32_safe
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:479,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:487,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:488,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:489,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:490,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:495,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:496,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:497,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:498,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 419
    functionDepth: 6
    functionLinenumber: 419
    functionLinenumberEnd: 503
    functionName: ndistinct_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - lappend_int
    - errcode
    - errsave
    - pg_strtoint32_safe
    - valid_subsequent_attnum
    - errmsg
    - llast_int
    - errdetail
    - list_length
    - pg_strtoint16_safe
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType ndistinct_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - MVNDistinctItem*
    - MVNDistinctItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 527
    functionName: item_attributes_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool item_attributes_eq(const MVNDistinctItem *a, const MVNDistinctItem
      *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - item
    - attnum
    argTypes:
    - MVNDistinctItem*
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 542
    functionName: item_has_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool item_has_attnum(const MVNDistinctItem *item, AttrNumber attnum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: item_has_attnum
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:554,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - item
    - refitem
    argTypes:
    - MVNDistinctItem*
    - MVNDistinctItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 558
    functionName: item_is_attnum_subset
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - item_has_attnum
    linkageType: ''
    returnType: bool
    signature: "bool item_is_attnum_subset(const MVNDistinctItem *item,\n\t\t\t\t\t
      \ const MVNDistinctItem *refitem)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:570,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:572,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - item
    argTypes:
    - MVNDistinctItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 565
    functionDepth: 3
    functionLinenumber: 565
    functionLinenumberEnd: 578
    functionName: item_attnum_list
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      item_attnum_list(const MVNDistinctItem *item)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:591,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:606,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:612,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:613,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:614,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:615,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:620,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:621,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:622,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:623,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:627,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:636,1
    - Dst: item_attributes_eq
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:644,1
    - Dst: item_attnum_list
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:646,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:648,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:649,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:650,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:651,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:653,1
    - Dst: item_is_attnum_subset
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:690,1
    - Dst: item_attnum_list
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:695,1
    - Dst: item_attnum_list
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:696,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:698,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:699,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:700,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:701,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:704,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:705,1
    - Dst: statext_ndistinct_serialize
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:710,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:716,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:717,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 2
    argNames:
    - parse
    - str
    argTypes:
    - NDistinctParseState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 587
    functionDepth: 4
    functionLinenumber: 587
    functionLinenumberEnd: 720
    functionName: build_mvndistinct
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - errsave
    - pfree
    - item_is_attnum_subset
    - statext_ndistinct_serialize
    - item_attributes_eq
    - item_attnum_list
    - errmsg
    - errdetail
    - list_length
    - list_nth
    - palloc
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      build_mvndistinct(NDistinctParseState *parse, char *str)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:729,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:758,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:758,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:760,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:761,1
    - Dst: build_mvndistinct
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:764,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:766,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:767,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:770,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:776,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:777,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:778,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:779,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:780,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:782,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 726
    functionDepth: 5
    functionLinenumber: 726
    functionLinenumberEnd: 783
    functionName: pg_ndistinct_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - freeJsonLexContext
    - SOFT_ERROR_OCCURRED
    - list_free
    - errsave
    - PG_GETARG_CSTRING
    - errcode
    - list_free_deep
    - PG_RETURN_BYTEA_P
    - pg_parse_json
    - strlen
    - errmsg
    - errdetail
    - PG_RETURN_NULL
    - build_mvndistinct
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ndistinct_in(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:794,1
    - Dst: statext_ndistinct_deserialize
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:795,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:799,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:800,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:807,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:810,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:812,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:816,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:818,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:822,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:824,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 791
    functionDepth: 5
    functionLinenumber: 791
    functionLinenumberEnd: 825
    functionName: pg_ndistinct_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_GETARG_BYTEA_PP
    - appendStringInfo
    - appendStringInfoString
    - initStringInfo
    - PG_RETURN_CSTRING
    - statext_ndistinct_deserialize
    - appendStringInfoChar
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ndistinct_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:834,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:835,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:836,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 831
    functionDepth: 2
    functionLinenumber: 831
    functionLinenumberEnd: 839
    functionName: pg_ndistinct_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ndistinct_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: byteasend
      Src: /src/postgres/src/backend/utils/adt/pg_ndistinct.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 847
    functionDepth: 2
    functionLinenumber: 847
    functionLinenumberEnd: 851
    functionName: pg_ndistinct_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_ndistinct.c
    functionUses: 0
    functionsReached:
    - byteasend
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ndistinct_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - coll
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 75
    functionName: NONDETERMINISTIC
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NONDETERMINISTIC(coll)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:119,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:121,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: textlike_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - like_regex_support
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum textlike_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:127,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:129,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 130
    functionName: texticlike_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - like_regex_support
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum texticlike_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:135,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:137,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: textregexeq_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - like_regex_support
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum textregexeq_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:143,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:145,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 146
    functionName: texticregexeq_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - like_regex_support
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum texticregexeq_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:151,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:153,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: text_starts_with_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - like_regex_support
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum text_starts_with_support(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:162,1
    - Dst: patternsel_common
      Src: /src/postgres/src/backend/utils/adt/like_support.c:182,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:194,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:211,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/like_support.c:211,1
    - Dst: match_pattern_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:213,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/like_support.c:213,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/like_support.c:214,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:220,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:224,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/like_support.c:224,1
    - Dst: match_pattern_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:226,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/like_support.c:226,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/like_support.c:227,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - rawreq
    - ptype
    argTypes:
    - Node*
    - Pattern_Type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 236
    functionName: like_regex_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 5
    functionsReached:
    - is_funcclause
    - Assert
    - linitial
    - is_opclause
    - lsecond
    - list_length
    - match_pattern_prefix
    - IsA
    - patternsel_common
    linkageType: ''
    returnType: Node
    signature: 'Node *

      like_regex_support(Node *rawreq, Pattern_Type ptype)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:272,1
    - Dst: pattern_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:280,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/like_support.c:296,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:375,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/utils/adt/like_support.c:401,1
    - Dst: NONDETERMINISTIC
      Src: /src/postgres/src/backend/utils/adt/like_support.c:403,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:405,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:408,1
    - Dst: NONDETERMINISTIC
      Src: /src/postgres/src/backend/utils/adt/like_support.c:418,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:426,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/utils/adt/like_support.c:426,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:428,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:431,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/like_support.c:443,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/utils/adt/like_support.c:449,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:451,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:454,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/utils/adt/like_support.c:464,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/like_support.c:466,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:466,1
    - Dst: make_greater_string
      Src: /src/postgres/src/backend/utils/adt/like_support.c:467,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:470,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/like_support.c:473,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 96
    argCount: 6
    argNames:
    - leftop
    - rightop
    - ptype
    - expr_coll
    - opfamily
    - indexcollation
    argTypes:
    - Node*
    - Node*
    - Pattern_Type
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 242
    functionDepth: 6
    functionLinenumber: 242
    functionLinenumberEnd: 477
    functionName: match_pattern_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - op_in_opfamily
    - exprType
    - Assert
    - OidIsValid
    - pg_newlocale_from_collation
    - make_greater_string
    - lappend
    - NONDETERMINISTIC
    - make_opclause
    - list_make1
    - IsA
    - get_opcode
    - pattern_fixed_prefix
    - fmgr_info
    linkageType: ''
    returnType: List
    signature: "List *\nmatch_pattern_prefix(Node *leftop,\n\t\t\t\t\t Node *rightop,\n\t\t\t\t\t
      Pattern_Type ptype,\n\t\t\t\t\t Oid expr_coll,\n\t\t\t\t\t Oid opfamily,\n\t\t\t\t\t
      Oid indexcollation)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: get_restriction_variable
      Src: /src/postgres/src/backend/utils/adt/like_support.c:532,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:535,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/like_support.c:537,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/like_support.c:547,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/like_support.c:561,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/like_support.c:607,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:614,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/like_support.c:618,1
    - Dst: pattern_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:643,1
    - Dst: var_eq_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:653,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:681,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:682,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/like_support.c:683,1
    - Dst: histogram_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:685,1
    - Dst: prefix_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:696,1
    - Dst: mcv_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:731,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/like_support.c:750,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:754,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:754,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:755,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/like_support.c:758,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 95
    argCount: 8
    argNames:
    - root
    - oprid
    - opfuncid
    - args
    - varRelid
    - collation
    - ptype
    - negate
    argTypes:
    - PlannerInfo*
    - Oid
    - Oid
    - List*
    - int
    - Oid
    - Pattern_Type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 761
    functionName: patternsel_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - ReleaseVariableStats
    - prefix_selectivity
    - HeapTupleIsValid
    - Assert
    - var_eq_const
    - histogram_selectivity
    - pfree
    - get_restriction_variable
    - GETSTRUCT
    - CLAMP_PROBABILITY
    - OidIsValid
    - mcv_selectivity
    - IsA
    - get_opcode
    - pattern_fixed_prefix
    - fmgr_info
    - DatumGetPointer
    linkageType: ''
    returnType: double
    signature: "double patternsel_common(PlannerInfo *root,\n\t\t\t\t  Oid oprid,\n\t\t\t\t
      \ Oid opfuncid,\n\t\t\t\t  List *args,\n\t\t\t\t  int varRelid,\n\t\t\t\t  Oid
      collation,\n\t\t\t\t  Pattern_Type ptype,\n\t\t\t\t  bool negate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:769,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/like_support.c:770,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:771,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/like_support.c:772,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/like_support.c:773,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/utils/adt/like_support.c:781,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:782,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/like_support.c:783,1
    - Dst: patternsel_common
      Src: /src/postgres/src/backend/utils/adt/like_support.c:786,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ptype
    - negate
    argTypes:
    - Pattern_Type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 766
    functionDepth: 2
    functionLinenumber: 766
    functionLinenumberEnd: 794
    functionName: patternsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - elog
    - get_negator
    - PG_GET_COLLATION
    - PG_GETARG_OID
    - OidIsValid
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    - patternsel_common
    linkageType: ''
    returnType: double
    signature: double patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:802,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 799
    functionDepth: 3
    functionLinenumber: 799
    functionLinenumberEnd: 803
    functionName: regexeqsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternsel
    linkageType: ''
    returnType: Datum
    signature: Datum regexeqsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:811,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 808
    functionDepth: 3
    functionLinenumber: 808
    functionLinenumberEnd: 812
    functionName: icregexeqsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternsel
    linkageType: ''
    returnType: Datum
    signature: Datum icregexeqsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:820,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 817
    functionDepth: 3
    functionLinenumber: 817
    functionLinenumberEnd: 821
    functionName: likesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternsel
    linkageType: ''
    returnType: Datum
    signature: Datum likesel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:829,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 826
    functionDepth: 3
    functionLinenumber: 826
    functionLinenumberEnd: 830
    functionName: prefixsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternsel
    linkageType: ''
    returnType: Datum
    signature: Datum prefixsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:839,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 836
    functionDepth: 3
    functionLinenumber: 836
    functionLinenumberEnd: 840
    functionName: iclikesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternsel
    linkageType: ''
    returnType: Datum
    signature: Datum iclikesel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:848,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 845
    functionDepth: 3
    functionLinenumber: 845
    functionLinenumberEnd: 849
    functionName: regexnesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternsel
    linkageType: ''
    returnType: Datum
    signature: Datum regexnesel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:857,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 854
    functionDepth: 3
    functionLinenumber: 854
    functionLinenumberEnd: 858
    functionName: icregexnesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternsel
    linkageType: ''
    returnType: Datum
    signature: Datum icregexnesel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:866,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 863
    functionDepth: 3
    functionLinenumber: 863
    functionLinenumberEnd: 867
    functionName: nlikesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternsel
    linkageType: ''
    returnType: Datum
    signature: Datum nlikesel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:875,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 872
    functionDepth: 3
    functionLinenumber: 872
    functionLinenumberEnd: 876
    functionName: icnlikesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternsel
    linkageType: ''
    returnType: Datum
    signature: Datum icnlikesel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptype
    - negate
    argTypes:
    - Pattern_Type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 886
    functionName: patternjoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double patternjoinsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:894,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 891
    functionDepth: 1
    functionLinenumber: 891
    functionLinenumberEnd: 895
    functionName: regexeqjoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternjoinsel
    linkageType: ''
    returnType: Datum
    signature: Datum regexeqjoinsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:903,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 900
    functionDepth: 1
    functionLinenumber: 900
    functionLinenumberEnd: 904
    functionName: icregexeqjoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternjoinsel
    linkageType: ''
    returnType: Datum
    signature: Datum icregexeqjoinsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:912,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 913
    functionName: likejoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternjoinsel
    linkageType: ''
    returnType: Datum
    signature: Datum likejoinsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:921,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 918
    functionDepth: 1
    functionLinenumber: 918
    functionLinenumberEnd: 922
    functionName: prefixjoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternjoinsel
    linkageType: ''
    returnType: Datum
    signature: Datum prefixjoinsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:930,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 927
    functionDepth: 1
    functionLinenumber: 927
    functionLinenumberEnd: 931
    functionName: iclikejoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternjoinsel
    linkageType: ''
    returnType: Datum
    signature: Datum iclikejoinsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:939,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 940
    functionName: regexnejoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternjoinsel
    linkageType: ''
    returnType: Datum
    signature: Datum regexnejoinsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:948,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 945
    functionDepth: 1
    functionLinenumber: 945
    functionLinenumberEnd: 949
    functionName: icregexnejoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternjoinsel
    linkageType: ''
    returnType: Datum
    signature: Datum icregexnejoinsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:957,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 958
    functionName: nlikejoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternjoinsel
    linkageType: ''
    returnType: Datum
    signature: Datum nlikejoinsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/like_support.c:966,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 963
    functionDepth: 1
    functionLinenumber: 963
    functionLinenumberEnd: 967
    functionName: icnlikejoinsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - patternjoinsel
    linkageType: ''
    returnType: Datum
    signature: Datum icnlikejoinsel(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1010,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1014,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1015,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1019,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1021,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1022,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1023,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1023,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1024,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1024,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1027,1
    - Dst: string_to_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1050,1
    - Dst: string_to_bytea_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1052,1
    - Dst: like_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1055,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1057,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1058,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 3
    argNames:
    - patt_const
    - prefix_const
    - rest_selec
    argTypes:
    - Const*
    - Const**
    - Selectivity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 998
    functionDepth: 4
    functionLinenumber: 998
    functionLinenumberEnd: 1068
    functionName: like_fixed_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - pfree
    - string_to_bytea_const
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - DatumGetByteaPP
    - string_to_const
    - strlen
    - like_selectivity
    - palloc
    - TextDatumGetCString
    - DatumGetPointer
    linkageType: ''
    returnType: Pattern_Prefix_Status
    signature: "Pattern_Prefix_Status like_fixed_prefix(Const *patt_const, Const **prefix_const,\n\t\t\t\t
      \ Selectivity *rest_selec)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1078,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1080,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1091,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1094,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1095,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1096,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1098,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1104,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1106,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1107,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1110,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1112,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1113,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1113,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1115,1
    - Dst: pg_iswcased
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1135,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1143,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1143,1
    - Dst: pg_wchar2mb_with_len
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1144,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1146,1
    - Dst: string_to_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1148,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1149,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1157,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1157,1
    - Dst: pg_wchar2mb_with_len
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1158,1
    - Dst: like_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1160,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1161,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1164,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 4
    argNames:
    - patt_const
    - collation
    - prefix_const
    - rest_selec
    argTypes:
    - Const*
    - Oid
    - Const**
    - Selectivity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1074
    functionDepth: 4
    functionLinenumber: 1074
    functionLinenumberEnd: 1174
    functionName: like_fixed_prefix_ci
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - pg_mb2wchar_with_len
    - errcode
    - Assert
    - pg_newlocale_from_collation
    - DatumGetTextPP
    - pg_wchar2mb_with_len
    - ereport
    - pfree
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errhint
    - pg_database_encoding_max_length
    - string_to_const
    - errmsg
    - pg_iswcased
    - palloc
    - OidIsValid
    - like_selectivity
    linkageType: ''
    returnType: Pattern_Prefix_Status
    signature: "Pattern_Prefix_Status like_fixed_prefix_ci(Const *patt_const, Oid
      collation, Const **prefix_const,\n\t\t\t\t\t Selectivity *rest_selec)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1190,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1191,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1192,1
    - Dst: regexp_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1195,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1195,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1205,1
    - Dst: regex_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1207,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1207,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1210,1
    - Dst: string_to_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1216,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1227,1
    - Dst: regex_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1229,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1229,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1231,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1232,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1236,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - patt_const
    - case_insensitive
    - collation
    - prefix_const
    - rest_selec
    argTypes:
    - Const*
    - bool
    - Oid
    - Const**
    - Selectivity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1176
    functionDepth: 6
    functionLinenumber: 1176
    functionLinenumberEnd: 1242
    functionName: regex_fixed_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - errcode
    - pfree
    - DatumGetTextPP
    - ereport
    - string_to_const
    - strlen
    - errmsg
    - regexp_fixed_prefix
    - TextDatumGetCString
    - regex_selectivity
    linkageType: ''
    returnType: Pattern_Prefix_Status
    signature: "Pattern_Prefix_Status regex_fixed_prefix(Const *patt_const, bool case_insensitive,
      Oid collation,\n\t\t\t\t   Const **prefix_const, Selectivity *rest_selec)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: like_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1253,1
    - Dst: like_fixed_prefix_ci
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1256,1
    - Dst: regex_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1260,1
    - Dst: regex_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1264,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1270,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1274,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1283,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 5
    argNames:
    - patt
    - ptype
    - collation
    - prefix
    - rest_selec
    argTypes:
    - Const*
    - Pattern_Type
    - Oid
    - Const**
    - Selectivity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1244
    functionDepth: 7
    functionLinenumber: 1244
    functionLinenumberEnd: 1288
    functionName: pattern_fixed_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 2
    functionsReached:
    - elog
    - datumCopy
    - regex_fixed_prefix
    - like_fixed_prefix
    - makeConst
    - like_fixed_prefix_ci
    linkageType: ''
    returnType: Pattern_Prefix_Status
    signature: "Pattern_Prefix_Status pattern_fixed_prefix(Const *patt, Pattern_Type
      ptype, Oid collation,\n\t\t\t\t\t Const **prefix, Selectivity *rest_selec)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1320,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1320,1
    - Dst: ineq_histogram_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1322,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1337,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1337,1
    - Dst: make_greater_string
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1338,1
    - Dst: ineq_histogram_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1350,1
    - Dst: var_eq_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1374,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 7
    argNames:
    - root
    - vardata
    - eqopr
    - ltopr
    - geopr
    - collation
    - prefixcon
    argTypes:
    - PlannerInfo*
    - VariableStatData*
    - Oid
    - Oid
    - Oid
    - Oid
    - Const*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1308
    functionDepth: 1
    functionLinenumber: 1308
    functionLinenumberEnd: 1380
    functionName: prefix_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - Assert
    - make_greater_string
    - var_eq_const
    - ineq_histogram_selectivity
    - Max
    - get_opcode
    - fmgr_info
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity prefix_selectivity(PlannerInfo *root, VariableStatData
      *vardata,\n\t\t\t\t   Oid eqopr, Oid ltopr, Oid geopr,\n\t\t\t\t   Oid collation,\n\t\t\t\t
      \  Const *prefixcon)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 3
    argNames:
    - patt
    - pattlen
    - case_insensitive
    argTypes:
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1399
    functionDepth: 0
    functionLinenumber: 1399
    functionLinenumberEnd: 1434
    functionName: like_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Selectivity
    signature: Selectivity like_selectivity(const char *patt, int pattlen, bool case_insensitive)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1445,1
    - Dst: regex_selectivity_sub
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1459,1
    - Dst: regex_selectivity_sub
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1469,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 57
    argCount: 3
    argNames:
    - patt
    - pattlen
    - case_insensitive
    argTypes:
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1529
      start: 1436
    functionDepth: 1
    functionLinenumber: 1436
    functionLinenumberEnd: 1529
    functionName: regex_selectivity_sub
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - regex_selectivity_sub
    - check_stack_depth
    linkageType: ''
    returnType: Selectivity
    signature: Selectivity regex_selectivity_sub(const char *patt, int pattlen, bool
      case_insensitive)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regex_selectivity_sub
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1542,1
    - Dst: regex_selectivity_sub
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1547,1
    - Dst: pow
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1558,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1565,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - patt
    - pattlen
    - case_insensitive
    - fixed_prefix_len
    argTypes:
    - char*
    - int
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1531
    functionDepth: 2
    functionLinenumber: 1531
    functionLinenumberEnd: 1567
    functionName: regex_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - pow
    - regex_selectivity_sub
    - CLAMP_PROBABILITY
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity regex_selectivity(const char *patt, int pattlen, bool
      case_insensitive,\n\t\t\t\t  int fixed_prefix_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1581
      start: 1574
    functionDepth: 0
    functionLinenumber: 1574
    functionLinenumberEnd: 1581
    functionName: byte_increment
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool byte_increment(unsigned char *ptr, int len)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1642,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1644,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1645,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1646,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1646,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1647,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1647,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1653,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1653,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1656,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1657,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1658,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1671,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1673,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1675,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1684,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1685,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1688,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1692,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1693,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1694,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1694,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1695,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1696,1
    - Dst: pg_database_encoding_character_incrementer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1705,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1717,1
    - Dst: charinc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1728,1
    - Dst: string_to_bytea_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1733,1
    - Dst: string_to_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1735,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1737,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1737,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1744,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1745,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1750,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1750,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1751,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1764,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1765,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 68
    argCount: 3
    argNames:
    - str_const
    - ltproc
    - collation
    argTypes:
    - Const*
    - FmgrInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1624
    functionDepth: 4
    functionLinenumber: 1624
    functionLinenumberEnd: 1768
    functionName: make_greater_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 2
    functionsReached:
    - pg_newlocale_from_collation
    - VARDATA_ANY
    - SET_VARSIZE
    - VARDATA
    - pg_database_encoding_character_incrementer
    - DatumGetBool
    - memcpy
    - Assert
    - pfree
    - VARSIZE_ANY_EXHDR
    - PointerGetDatum
    - charinc
    - TextDatumGetCString
    - DatumGetCString
    - varstr_cmp
    - string_to_bytea_const
    - FunctionCall2Coll
    - string_to_const
    - DatumGetByteaPP
    - strlen
    - pg_mbcliplen
    - DirectFunctionCall1
    - palloc
    - DatumGetPointer
    linkageType: ''
    returnType: Const
    signature: 'Const *

      make_greater_string(const Const *str_const, FmgrInfo *ltproc, Oid collation)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1778,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1785,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1785,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1787,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1787,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - datatype
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1775
    functionDepth: 2
    functionLinenumber: 1775
    functionLinenumberEnd: 1790
    functionName: string_to_datum
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - Assert
    - CStringGetDatum
    - CStringGetTextDatum
    - DirectFunctionCall1
    linkageType: ''
    returnType: Datum
    signature: Datum string_to_datum(const char *str, Oid datatype)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: string_to_datum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1798,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1826,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1831,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - str
    - datatype
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1795
    functionDepth: 3
    functionLinenumber: 1795
    functionLinenumberEnd: 1833
    functionName: string_to_const
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 4
    functionsReached:
    - elog
    - makeConst
    - string_to_datum
    linkageType: ''
    returnType: Const
    signature: 'Const *

      string_to_const(const char *str, Oid datatype)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1841,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1844,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1844,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1845,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1846,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - str_len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1849
      start: 1838
    functionDepth: 2
    functionLinenumber: 1838
    functionLinenumberEnd: 1849
    functionName: string_to_bytea_const
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 2
    functionsReached:
    - memcpy
    - PointerGetDatum
    - SET_VARSIZE
    - VARDATA
    - makeConst
    - palloc
    linkageType: ''
    returnType: Const
    signature: 'Const *

      string_to_bytea_const(const char *str, size_t str_len)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:41,1
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:45,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:50,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:51,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:57,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:58,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:59,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - str
    - escontext
    argTypes:
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 61
    functionName: pg_lsn_in_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 1
    functionsReached:
    - strtoul
    - errcode
    - strspn
    - errmsg
    - ereturn
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr pg_lsn_in_safe(const char *str, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:66,1
    - Dst: pg_lsn_in_safe
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:69,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: pg_lsn_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - pg_lsn_in_safe
    - PG_RETURN_LSN
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:77,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:81,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:81,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:82,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 84
    functionName: pg_lsn_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - PG_RETURN_CSTRING
    - PG_GETARG_LSN
    - LSN_FORMAT_ARGS
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:89,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:92,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 94
    functionName: pg_lsn_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_LSN
    - PG_GETARG_POINTER
    - pq_getmsgint64
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:99,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:102,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:103,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:104,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: pg_lsn_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - PG_GETARG_LSN
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:115,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:116,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: pg_lsn_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSN
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:124,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:125,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: pg_lsn_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSN
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:133,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:134,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: pg_lsn_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSN
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:142,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:143,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 146
    functionName: pg_lsn_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSN
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:151,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:152,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 155
    functionName: pg_lsn_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSN
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:160,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:161,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 164
    functionName: pg_lsn_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSN
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:169,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:170,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 173
    functionName: pg_lsn_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSN
    - PG_RETURN_LSN
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:178,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:179,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 182
    functionName: pg_lsn_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSN
    - PG_RETURN_LSN
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_smaller(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:188,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:189,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:192,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:194,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 197
    functionName: pg_lsn_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSN
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 200
    functionDepth: 3
    functionLinenumber: 200
    functionLinenumberEnd: 205
    functionName: pg_lsn_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - hashint8
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_hash(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8extended
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 3
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: pg_lsn_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - hashint8extended
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_hash_extended(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:221,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:222,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:228,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:230,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:233,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:234,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:235,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 239
    functionName: pg_lsn_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - CStringGetDatum
    - DirectFunctionCall3
    - PG_GETARG_LSN
    - ObjectIdGetDatum
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_mi(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:248,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:249,1
    - Dst: numeric_is_nan
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:254,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:257,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:260,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:261,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:262,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:263,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:264,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:267,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:269,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 273
    functionName: pg_lsn_pli
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - NumericGetDatum
    - DirectFunctionCall2
    - errcode
    - Int32GetDatum
    - CStringGetDatum
    - ereport
    - DirectFunctionCall1
    - snprintf
    - numeric_is_nan
    - errmsg
    - DirectFunctionCall3
    - PG_GETARG_LSN
    - ObjectIdGetDatum
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_pli(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:282,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:283,1
    - Dst: numeric_is_nan
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:289,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:291,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:294,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:295,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:296,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:297,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:298,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:301,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:303,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 307
    functionName: pg_lsn_mii
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - NumericGetDatum
    - DirectFunctionCall2
    - errcode
    - Int32GetDatum
    - CStringGetDatum
    - ereport
    - DirectFunctionCall1
    - snprintf
    - numeric_is_nan
    - errmsg
    - DirectFunctionCall3
    - PG_GETARG_LSN
    - ObjectIdGetDatum
    - PG_GETARG_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lsn_mii(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:83,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - procNumber
    - lxid
    argTypes:
    - ProcNumber
    - LocalTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 86
    functionName: VXIDGetDatum
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - CStringGetTextDatum
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum VXIDGetDatum(ProcNumber procNumber, LocalTransactionId lxid)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:100,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:106,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:111,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:115,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:116,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:118,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:120,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:122,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:124,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:126,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:128,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:130,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:132,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:134,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:136,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:138,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:140,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:142,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:144,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:146,1
    - Dst: TupleDescFinalize
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:149,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:150,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:156,1
    - Dst: GetLockStatusData
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:159,1
    - Dst: GetPredicateLockStatusData
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:161,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:164,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:167,1
    - Dst: LOCKBIT_ON
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:195,1
    - Dst: LOCKBIT_OFF
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:198,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:240,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:244,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:250,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:251,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:261,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:272,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:273,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:274,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:283,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:284,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:285,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:286,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:295,1
    - Dst: VXIDGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:306,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:319,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:320,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:330,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:331,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:332,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:333,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:344,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:345,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:346,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:347,1
    - Dst: VXIDGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:356,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:358,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:361,1
    - Dst: GetLockmodeName
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:361,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:362,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:363,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:365,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:369,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:370,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:371,1
    - Dst: GET_PREDICATELOCKTARGETTAG_TYPE
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:397,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:399,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:402,1
    - Dst: GET_PREDICATELOCKTARGETTAG_DB
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:402,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:403,1
    - Dst: GET_PREDICATELOCKTARGETTAG_RELATION
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:403,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:405,1
    - Dst: GET_PREDICATELOCKTARGETTAG_OFFSET
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:405,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:410,1
    - Dst: GET_PREDICATELOCKTARGETTAG_PAGE
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:410,1
    - Dst: VXIDGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:422,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:425,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:433,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:434,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:435,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:438,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:439,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:440,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:443,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 211
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 92
    functionDepth: 6
    functionLinenumber: 92
    functionLinenumberEnd: 444
    functionName: pg_lock_status
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SRF_IS_FIRSTCALL
    - LOCKBIT_ON
    - GetPredicateLockStatusData
    - heap_form_tuple
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - SRF_FIRSTCALL_INIT
    - GetLockmodeName
    - Int32GetDatum
    - TupleDescFinalize
    - GET_PREDICATELOCKTARGETTAG_PAGE
    - palloc_object
    - ObjectIdGetDatum
    - TupleDescInitEntry
    - CreateTemplateTupleDesc
    - SRF_PERCALL_SETUP
    - GET_PREDICATELOCKTARGETTAG_RELATION
    - GetLockStatusData
    - VXIDGetDatum
    - BlessTupleDesc
    - TimestampTzGetDatum
    - Int16GetDatum
    - LOCKBIT_OFF
    - GET_PREDICATELOCKTARGETTAG_OFFSET
    - TransactionIdGetDatum
    - MemoryContextSwitchTo
    - HeapTupleGetDatum
    - CStringGetTextDatum
    - GET_PREDICATELOCKTARGETTAG_DB
    - BoolGetDatum
    - GET_PREDICATELOCKTARGETTAG_TYPE
    - snprintf
    linkageType: ''
    returnType: Datum
    signature: Datum pg_lock_status(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:469,1
    - Dst: GetBlockerStatusData
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:477,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:480,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:504,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:508,1
    - Dst: GetLockTagsMethodTable
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:510,1
    - Dst: LOCKBIT_ON
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:530,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:555,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:560,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:562,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:562,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 563
    functionName: pg_blocking_pids
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LOCKBIT_ON
    - Assert
    - GetBlockerStatusData
    - Int32GetDatum
    - GetLockTagsMethodTable
    - PG_RETURN_ARRAYTYPE_P
    - palloc
    - PG_GETARG_INT32
    - construct_array_builtin
    linkageType: ''
    returnType: Datum
    signature: Datum pg_blocking_pids(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:576,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:582,1
    - Dst: GetSafeSnapshotBlockingPids
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:586,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:593,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:595,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:600,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:600,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 601
    functionName: pg_safe_snapshot_blocking_pids
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - GetSafeSnapshotBlockingPids
    - PG_RETURN_ARRAYTYPE_P
    - palloc
    - PG_GETARG_INT32
    - construct_array_builtin
    linkageType: ''
    returnType: Datum
    signature: Datum pg_safe_snapshot_blocking_pids(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tag
    - ','
    - key64
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 620
    functionName: SET_LOCKTAG_INT64
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_INT64(tag, key64)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tag
    - ','
    - key1
    - ','
    - key2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 622
    functionName: SET_LOCKTAG_INT32
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LOCKTAG_INT32(tag, key1, key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:629,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:632,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:634,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 637
    functionName: pg_advisory_lock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - LockAcquire
    - PG_RETURN_VOID
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_lock_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:646,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:649,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:651,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 654
    functionName: pg_advisory_xact_lock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - LockAcquire
    - PG_RETURN_VOID
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_xact_lock_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:662,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:665,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:667,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 670
    functionName: pg_advisory_lock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - LockAcquire
    - PG_RETURN_VOID
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_lock_shared_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:679,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:682,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:684,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 687
    functionName: pg_advisory_xact_lock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - LockAcquire
    - PG_RETURN_VOID
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_xact_lock_shared_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:697,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:701,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:703,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 706
    functionName: pg_try_advisory_lock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - LockAcquire
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_try_advisory_lock_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:717,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:721,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:723,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 714
    functionDepth: 1
    functionLinenumber: 714
    functionLinenumberEnd: 726
    functionName: pg_try_advisory_xact_lock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - LockAcquire
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_try_advisory_xact_lock_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:736,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:740,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:742,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 745
    functionName: pg_try_advisory_lock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - LockAcquire
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_try_advisory_lock_shared_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:756,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:760,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:762,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 765
    functionName: pg_try_advisory_xact_lock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - LockAcquire
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_try_advisory_xact_lock_shared_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:775,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:779,1
    - Dst: LockRelease
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:781,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 784
    functionName: pg_advisory_unlock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockRelease
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_unlock_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:794,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:798,1
    - Dst: LockRelease
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:800,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 791
    functionDepth: 1
    functionLinenumber: 791
    functionLinenumberEnd: 803
    functionName: pg_advisory_unlock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockRelease
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_unlock_shared_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:811,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:812,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:815,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:817,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 820
    functionName: pg_advisory_lock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockAcquire
    - PG_GETARG_INT32
    - PG_RETURN_VOID
    - SET_LOCKTAG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_lock_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:829,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:830,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:833,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:835,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 838
    functionName: pg_advisory_xact_lock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockAcquire
    - PG_GETARG_INT32
    - PG_RETURN_VOID
    - SET_LOCKTAG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_xact_lock_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:846,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:847,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:850,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:852,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 855
    functionName: pg_advisory_lock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockAcquire
    - PG_GETARG_INT32
    - PG_RETURN_VOID
    - SET_LOCKTAG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_lock_shared_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:864,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:865,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:868,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:870,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 873
    functionName: pg_advisory_xact_lock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockAcquire
    - PG_GETARG_INT32
    - PG_RETURN_VOID
    - SET_LOCKTAG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_xact_lock_shared_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:883,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:884,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:888,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:890,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 893
    functionName: pg_try_advisory_lock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockAcquire
    - PG_GETARG_INT32
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_try_advisory_lock_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:904,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:905,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:909,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:911,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 914
    functionName: pg_try_advisory_xact_lock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockAcquire
    - PG_GETARG_INT32
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_try_advisory_xact_lock_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:924,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:925,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:929,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:931,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 934
    functionName: pg_try_advisory_lock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockAcquire
    - PG_GETARG_INT32
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_try_advisory_lock_shared_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:945,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:946,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:950,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:952,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 942
    functionDepth: 1
    functionLinenumber: 942
    functionLinenumberEnd: 955
    functionName: pg_try_advisory_xact_lock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockAcquire
    - PG_GETARG_INT32
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_try_advisory_xact_lock_shared_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:965,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:966,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:970,1
    - Dst: LockRelease
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:972,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 975
    functionName: pg_advisory_unlock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockRelease
    - PG_GETARG_INT32
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_unlock_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:985,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:986,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:990,1
    - Dst: LockRelease
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:992,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 982
    functionDepth: 1
    functionLinenumber: 982
    functionLinenumberEnd: 995
    functionName: pg_advisory_unlock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockRelease
    - PG_GETARG_INT32
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_unlock_shared_int4(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockReleaseSession
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:1003,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:1005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 1000
    functionDepth: 1
    functionLinenumber: 1000
    functionLinenumberEnd: 1006
    functionName: pg_advisory_unlock_all
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - LockReleaseSession
    linkageType: ''
    returnType: Datum
    signature: Datum pg_advisory_unlock_all(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:87,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:93,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:97,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:98,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:99,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:100,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:109,1
    - Dst: assign_record_type_identifier
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:110,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:120,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:131,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:131,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:135,1
    - Dst: EOH_init_header
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:137,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:141,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:165,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:174,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 3
    argNames:
    - type_id
    - typmod
    - parentcontext
    argTypes:
    - Oid
    - int32
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 68
    functionDepth: 4
    functionLinenumber: 68
    functionLinenumberEnd: 191
    functionName: make_expanded_record_from_typeid
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 3
    functionsReached:
    - format_type_be
    - ReleaseTupleDesc
    - errcode
    - MemoryContextAlloc
    - ereport
    - MemoryContextRegisterResetCallback
    - lookup_rowtype_tupdesc
    - EOH_init_header
    - memset
    - errmsg
    - AllocSetContextCreate
    - MAXALIGN
    - assign_record_type_identifier
    - lookup_type_cache
    linkageType: ''
    returnType: ExpandedRecordHeader
    signature: "ExpandedRecordHeader *\nmake_expanded_record_from_typeid(Oid type_id,
      int32 typmod,\n\t\t\t\t\t\t\t\t MemoryContext parentcontext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:229,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:230,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:231,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:232,1
    - Dst: assign_record_type_identifier
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:242,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:251,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:262,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:262,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:266,1
    - Dst: EOH_init_header
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:268,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:272,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:293,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:303,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:304,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 2
    argNames:
    - tupdesc
    - parentcontext
    argTypes:
    - TupleDesc
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 204
    functionDepth: 5
    functionLinenumber: 204
    functionLinenumberEnd: 315
    functionName: make_expanded_record_from_tupdesc
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 2
    functionsReached:
    - format_type_be
    - errcode
    - MemoryContextAlloc
    - CreateTupleDescCopy
    - ereport
    - MemoryContextRegisterResetCallback
    - MemoryContextSwitchTo
    - EOH_init_header
    - memset
    - errmsg
    - AllocSetContextCreate
    - MAXALIGN
    - assign_record_type_identifier
    - lookup_type_cache
    linkageType: ''
    returnType: ExpandedRecordHeader
    signature: "ExpandedRecordHeader *\nmake_expanded_record_from_tupdesc(TupleDesc
      tupdesc,\n\t\t\t\t\t\t\t\t  MemoryContext parentcontext)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:333,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:343,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:354,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:354,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:358,1
    - Dst: EOH_init_header
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:360,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:364,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:389,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:399,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:400,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 2
    argNames:
    - olderh
    - parentcontext
    argTypes:
    - ExpandedRecordHeader*
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 328
    functionDepth: 5
    functionLinenumber: 328
    functionLinenumberEnd: 419
    functionName: make_expanded_record_from_exprecord
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 2
    functionsReached:
    - expanded_record_get_tupdesc
    - MemoryContextAlloc
    - CreateTupleDescCopy
    - MemoryContextSwitchTo
    - EOH_init_header
    - memset
    - AllocSetContextCreate
    - MAXALIGN
    - MemoryContextRegisterResetCallback
    linkageType: ''
    returnType: ExpandedRecordHeader
    signature: "ExpandedRecordHeader *\nmake_expanded_record_from_exprecord(ExpandedRecordHeader
      *olderh,\n\t\t\t\t\t\t\t\t\tMemoryContext parentcontext)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:454,1
    - Dst: check_domain_for_new_tuple
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:460,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:470,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:471,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:473,1
    - Dst: get_short_term_cxt
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:473,1
    - Dst: toast_flatten_tuple
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:474,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:475,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:493,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:494,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:496,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:500,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:522,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:550,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:552,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:555,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:562,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 4
    argNames:
    - erh
    - tuple
    - copy
    - expand_external
    argTypes:
    - ExpandedRecordHeader*
    - HeapTuple
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 439
    functionDepth: 3
    functionLinenumber: 439
    functionLinenumberEnd: 565
    functionName: expanded_record_set_tuple
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 4
    functionsReached:
    - get_short_term_cxt
    - MemoryContextReset
    - heap_freetuple
    - Assert
    - HeapTupleHasExternal
    - pfree
    - toast_flatten_tuple
    - MemoryContextSwitchTo
    - heap_copytuple
    - DatumGetPointer
    - TupleDescCompactAttr
    - check_domain_for_new_tuple
    linkageType: ''
    returnType: void
    signature: "void expanded_record_set_tuple(ExpandedRecordHeader *erh,\n\t\t\t\t\t\t
      \ HeapTuple tuple,\n\t\t\t\t\t\t  bool copy,\n\t\t\t\t\t\t  bool expand_external)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:594,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:600,1
    - Dst: EOH_init_header
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:602,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:610,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:612,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:613,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:617,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:618,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:620,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:623,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:624,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:633,1
    - Dst: HeapTupleHeaderHasExternal
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:633,1
    - Dst: EOHPGetRWDatum
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 2
    argNames:
    - recorddatum
    - parentcontext
    argTypes:
    - Datum
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 579
    functionDepth: 3
    functionLinenumber: 579
    functionLinenumberEnd: 643
    functionName: make_expanded_record_from_datum
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - Assert
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderHasExternal
    - HeapTupleHeaderGetTypeId
    - MemoryContextSwitchTo
    - EOH_init_header
    - heap_copytuple
    - AllocSetContextCreate
    - ItemPointerSetInvalid
    - EOHPGetRWDatum
    - DatumGetHeapTupleHeader
    - MemoryContextAllocZero
    linkageType: ''
    returnType: Datum
    signature: Datum make_expanded_record_from_datum(Datum recorddatum, MemoryContext
      parentcontext)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:662,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:671,1
    - Dst: assign_record_type_typmod
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:672,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:690,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:702,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:706,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:706,1
    - Dst: expanded_record_set_field_internal
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:712,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:743,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:745,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:747,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 40
    argCount: 1
    argNames:
    - eohptr
    argTypes:
    - ExpandedObjectHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 651
    functionDepth: 4
    functionLinenumber: 651
    functionLinenumberEnd: 758
    functionName: ER_get_flat_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - expanded_record_get_tupdesc
    - expanded_record_set_field_internal
    - Assert
    - heap_compute_data_size
    - assign_record_type_typmod
    - deconstruct_expanded_record
    - VARATT_IS_EXTERNAL
    - TupleDescCompactAttr
    - MAXALIGN
    - BITMAPLEN
    - DatumGetPointer
    linkageType: ''
    returnType: Size
    signature: Size ER_get_flat_size(ExpandedObjectHeader *eohptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:771,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:777,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:778,1
    - Dst: HeapTupleHeaderSetDatumLength
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:780,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:781,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:782,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:787,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:790,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:793,1
    - Dst: HeapTupleHeaderSetDatumLength
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:796,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:797,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:798,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:800,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:802,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:806,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - eohptr
    - result
    - allocated_size
    argTypes:
    - ExpandedObjectHeader*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 763
    functionDepth: 5
    functionLinenumber: 763
    functionLinenumberEnd: 813
    functionName: ER_flatten_into
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderSetDatumLength
    - memcpy
    - expanded_record_get_tupdesc
    - Assert
    - heap_fill_tuple
    - HeapTupleHeaderSetTypMod
    - memset
    - ItemPointerSetInvalid
    - HeapTupleHeaderSetNatts
    - HeapTupleHeaderSetTypeId
    linkageType: ''
    returnType: void
    signature: "void ER_flatten_into(ExpandedObjectHeader *eohptr,\n\t\t\t\tvoid *result,
      Size allocated_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:833,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:848,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:857,1
    - Dst: assign_record_type_identifier
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:866,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - erh
    argTypes:
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 870
    functionName: expanded_record_fetch_tupdesc
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 1
    functionsReached:
    - lookup_rowtype_tupdesc
    - ReleaseTupleDesc
    - assign_record_type_identifier
    - MemoryContextRegisterResetCallback
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc expanded_record_fetch_tupdesc(ExpandedRecordHeader *erh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:892,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - erh
    argTypes:
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 883
    functionDepth: 6
    functionLinenumber: 883
    functionLinenumberEnd: 896
    functionName: expanded_record_get_tuple
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 3
    functionsReached:
    - heap_form_tuple
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple expanded_record_get_tuple(ExpandedRecordHeader *erh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:914,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 901
    functionDepth: 3
    functionLinenumber: 901
    functionLinenumberEnd: 917
    functionName: ER_mc_callback
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - FreeTupleDesc
    linkageType: ''
    returnType: void
    signature: void ER_mc_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:930,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:930,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:932,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:934,1
    - Dst: make_expanded_record_from_datum
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:939,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 926
    functionDepth: 4
    functionLinenumber: 926
    functionLinenumberEnd: 941
    functionName: DatumGetExpandedRecord
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - Assert
    - make_expanded_record_from_datum
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - DatumGetEOHP
    - DatumGetPointer
    linkageType: ''
    returnType: ExpandedRecordHeader
    signature: 'ExpandedRecordHeader *

      DatumGetExpandedRecord(Datum d)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:963,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:980,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:997,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1002,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1003,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - erh
    argTypes:
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 951
    functionDepth: 6
    functionLinenumber: 951
    functionLinenumberEnd: 1008
    functionName: deconstruct_expanded_record
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 4
    functionsReached:
    - memset
    - expanded_record_get_tupdesc
    - heap_deform_tuple
    - MemoryContextAlloc
    linkageType: ''
    returnType: void
    signature: void deconstruct_expanded_record(ExpandedRecordHeader *erh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1025,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1030,1
    - Dst: namestrcmp
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1031,1
    - Dst: SystemAttributeByName
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1043,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - erh
    - fieldname
    - finfo
    argTypes:
    - ExpandedRecordHeader*
    - char*
    - ExpandedRecordFieldInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1016
    functionDepth: 2
    functionLinenumber: 1016
    functionLinenumberEnd: 1054
    functionName: expanded_record_lookup_field
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 6
    functionsReached:
    - TupleDescAttr
    - SystemAttributeByName
    - expanded_record_get_tupdesc
    - namestrcmp
    linkageType: ''
    returnType: bool
    signature: "bool expanded_record_lookup_field(ExpandedRecordHeader *erh, const
      char *fieldname,\n\t\t\t\t\t\t\t ExpandedRecordFieldInfo *finfo)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1069,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1075,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1077,1
    - Dst: heap_getsysattr
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1094,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - erh
    - fnumber
    - isnull
    argTypes:
    - ExpandedRecordHeader*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1062
    functionDepth: 7
    functionLinenumber: 1062
    functionLinenumberEnd: 1096
    functionName: expanded_record_fetch_field
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 1
    functionsReached:
    - deconstruct_expanded_record
    - unlikely
    - ExpandedRecordIsEmpty
    - heap_getsysattr
    linkageType: ''
    returnType: Datum
    signature: "Datum expanded_record_fetch_field(ExpandedRecordHeader *erh, int fnumber,\n\t\t\t\t\t\t\tbool
      *isnull)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1127,1
    - Dst: check_domain_for_new_field
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1131,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1139,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1142,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1143,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1149,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1158,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1158,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1161,1
    - Dst: get_short_term_cxt
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1161,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1162,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1162,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1162,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1163,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1170,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1171,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1172,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1176,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1188,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1188,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1205,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1228,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 42
    argCount: 6
    argNames:
    - erh
    - fnumber
    - newValue
    - isnull
    - expand_external
    - check_constraints
    argTypes:
    - ExpandedRecordHeader*
    - int
    - Datum
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1111
    functionDepth: 7
    functionLinenumber: 1111
    functionLinenumberEnd: 1230
    functionName: expanded_record_set_field_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 2
    functionsReached:
    - elog
    - detoast_external_attr
    - get_short_term_cxt
    - MemoryContextReset
    - Assert
    - pfree
    - datumCopy
    - MemoryContextSwitchTo
    - deconstruct_expanded_record
    - unlikely
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - TupleDescCompactAttr
    - check_domain_for_new_field
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void expanded_record_set_field_internal(ExpandedRecordHeader *erh,
      int fnumber,\n\t\t\t\t\t\t\t\t   Datum newValue, bool isnull,\n\t\t\t\t\t\t\t\t
      \  bool expand_external,\n\t\t\t\t\t\t\t\t   bool check_constraints)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1260,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1268,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1275,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1282,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1303,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1303,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1308,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1308,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1308,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1313,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1315,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1315,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1322,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1333,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1337,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1340,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1357,1
    - Dst: get_short_term_cxt
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1357,1
    - Dst: domain_check
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1359,1
    - Dst: ExpandedRecordGetRODatum
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1359,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1365,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 4
    argNames:
    - erh
    - newValues
    - isnulls
    - expand_external
    argTypes:
    - ExpandedRecordHeader*
    - Datum*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1248
    functionDepth: 7
    functionLinenumber: 1248
    functionLinenumberEnd: 1366
    functionName: expanded_record_set_fields
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 1
    functionsReached:
    - detoast_external_attr
    - get_short_term_cxt
    - Assert
    - pfree
    - datumCopy
    - MemoryContextSwitchTo
    - deconstruct_expanded_record
    - VARATT_IS_EXTERNAL
    - unlikely
    - PointerGetDatum
    - domain_check
    - TupleDescCompactAttr
    - ExpandedRecordGetRODatum
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: "void expanded_record_set_fields(ExpandedRecordHeader *erh,\n\t\t\t\t\t\t
      \  const Datum *newValues, const bool *isnulls,\n\t\t\t\t\t\t   bool expand_external)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1383,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - erh
    argTypes:
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1389
      start: 1378
    functionDepth: 1
    functionLinenumber: 1378
    functionLinenumberEnd: 1389
    functionName: get_short_term_cxt
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 3
    functionsReached:
    - MemoryContextReset
    - AllocSetContextCreate
    linkageType: ''
    returnType: MemoryContext
    signature: MemoryContext get_short_term_cxt(ExpandedRecordHeader *erh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1405,1
    - Dst: get_short_term_cxt
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1408,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1421,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1422,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1426,1
    - Dst: EOH_init_header
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1439,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 1
    argNames:
    - main_erh
    argTypes:
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1401
    functionDepth: 2
    functionLinenumber: 1401
    functionLinenumberEnd: 1488
    functionName: build_dummy_expanded_header
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - get_short_term_cxt
    - expanded_record_get_tupdesc
    - MemoryContextAlloc
    - EOH_init_header
    - memset
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void build_dummy_expanded_header(ExpandedRecordHeader *main_erh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: build_dummy_expanded_header
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1501,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1509,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1511,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1512,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1514,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1521,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1522,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1529,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1530,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1544,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1547,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1547,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1555,1
    - Dst: domain_check
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1561,1
    - Dst: ExpandedRecordGetRODatum
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1561,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1566,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1569,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 4
    argNames:
    - erh
    - fnumber
    - newValue
    - isnull
    argTypes:
    - ExpandedRecordHeader*
    - int
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1493
    functionDepth: 7
    functionLinenumber: 1493
    functionLinenumberEnd: 1570
    functionName: check_domain_for_new_field
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 1
    functionsReached:
    - elog
    - MemoryContextReset
    - memcpy
    - ExpandedRecordIsEmpty
    - MemoryContextSwitchTo
    - deconstruct_expanded_record
    - unlikely
    - memset
    - VARATT_IS_EXTERNAL
    - domain_check
    - TupleDescCompactAttr
    - build_dummy_expanded_header
    - ExpandedRecordGetRODatum
    - DatumGetPointer
    linkageType: ''
    returnType: pg_noinline
    signature: "pg_noinline check_domain_for_new_field(ExpandedRecordHeader *erh,
      int fnumber,\n\t\t\t\t\t\t   Datum newValue, bool isnull)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1585,1
    - Dst: get_short_term_cxt
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1585,1
    - Dst: domain_check
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1587,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1592,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1595,1
    - Dst: build_dummy_expanded_header
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1601,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1611,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1618,1
    - Dst: domain_check
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1624,1
    - Dst: ExpandedRecordGetRODatum
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1624,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1629,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/expandedrecord.c:1632,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - erh
    - tuple
    argTypes:
    - ExpandedRecordHeader*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1575
    functionDepth: 3
    functionLinenumber: 1575
    functionLinenumberEnd: 1633
    functionName: check_domain_for_new_tuple
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 1
    functionsReached:
    - get_short_term_cxt
    - MemoryContextReset
    - HeapTupleHasExternal
    - MemoryContextSwitchTo
    - domain_check
    - build_dummy_expanded_header
    - ExpandedRecordGetRODatum
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline check_domain_for_new_tuple(ExpandedRecordHeader *erh, HeapTuple
      tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:54,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:56,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 64
    functionName: inet_spg_config
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum inet_spg_config(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:72,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:73,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:74,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:85,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:86,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:89,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:90,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:92,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:96,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:98,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:99,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:105,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:105,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:115,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:118,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:120,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:126,1
    - Dst: bitncmp
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:127,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:127,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:127,1
    - Dst: bitncommon
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:130,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:130,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:130,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:131,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:131,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:137,1
    - Dst: cidr_set_masklen_internal
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:137,1
    - Dst: inet_spg_node_number
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:143,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:146,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:148,1
    - Dst: inet_spg_node_number
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:157,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:158,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 161
    functionName: inet_spg_choose
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 0
    functionsReached:
    - InetPGetDatum
    - PG_RETURN_VOID
    - ip_family
    - bitncommon
    - Assert
    - bitncmp
    - cidr_set_masklen_internal
    - ip_addr
    - DatumGetInetPP
    - Min
    - PG_GETARG_POINTER
    - ip_bits
    - inet_spg_node_number
    linkageType: ''
    returnType: Datum
    signature: Datum inet_spg_choose(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:169,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:170,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:178,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:179,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:184,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:186,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:186,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:192,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:193,1
    - Dst: bitncommon
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:194,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:194,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:194,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:201,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:202,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:212,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:214,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:215,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:223,1
    - Dst: cidr_set_masklen_internal
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:223,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:228,1
    - Dst: inet_spg_node_number
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:229,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:230,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:234,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 235
    functionName: inet_spg_picksplit
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 0
    functionsReached:
    - InetPGetDatum
    - PG_RETURN_VOID
    - ip_family
    - bitncommon
    - cidr_set_masklen_internal
    - palloc_array
    - ip_addr
    - DatumGetInetPP
    - PG_GETARG_POINTER
    - ip_bits
    - inet_spg_node_number
    linkageType: ''
    returnType: Datum
    signature: Datum inet_spg_picksplit(PG_FUNCTION_ARGS)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:243,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:244,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:250,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:251,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:259,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:265,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:271,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:280,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:290,1
    - Dst: inet_spg_consistent_bitmap
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:293,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:293,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:306,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:318,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 319
    functionName: inet_spg_inner_consistent
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 0
    functionsReached:
    - inet_spg_consistent_bitmap
    - PG_RETURN_VOID
    - ip_family
    - Assert
    - palloc_array
    - DatumGetInetPP
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum inet_spg_inner_consistent(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:327,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:328,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:329,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:335,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:338,1
    - Dst: inet_spg_consistent_bitmap
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 340
    functionName: inet_spg_leaf_consistent
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 0
    functionsReached:
    - InetPGetDatum
    - inet_spg_consistent_bitmap
    - DatumGetInetPP
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum inet_spg_leaf_consistent(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ip_maxbits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:356,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:357,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:359,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - val
    - commonbits
    argTypes:
    - inet*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 363
    functionName: inet_spg_node_number
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 2
    functionsReached:
    - ip_maxbits
    - ip_bits
    - ip_addr
    linkageType: ''
    returnType: int
    signature: int inet_spg_node_number(const inet *val, int commonbits)
  - BBCount: 82
    BranchProfiles: []
    Callsites:
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:389,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:393,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:402,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:402,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:408,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:408,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:414,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:414,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:450,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:455,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:460,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:462,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:467,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:469,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:474,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:476,1
    - Dst: bitncmp
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:494,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:494,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:494,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:495,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:495,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:541,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:545,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:596,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:598,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:604,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:613,1
    - Dst: ip_maxbits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:627,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:631,1
    - Dst: bitncmp
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:672,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:672,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:672,1
    - Dst: ip_maxbits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:673,1
    CyclomaticComplexity: 94
    EdgeCount: 94
    ICount: 183
    argCount: 4
    argNames:
    - prefix
    - nkeys
    - scankeys
    - leaf
    argTypes:
    - inet*
    - int
    - ScanKey
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 375
    functionDepth: 2
    functionLinenumber: 375
    functionLinenumberEnd: 714
    functionName: inet_spg_consistent_bitmap
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 2
    functionsReached:
    - ip_family
    - ip_maxbits
    - bitncmp
    - ip_addr
    - DatumGetInetPP
    - Min
    - ip_bits
    linkageType: ''
    returnType: int
    signature: "int inet_spg_consistent_bitmap(const inet *prefix, int nkeys, ScanKey
      scankeys,\n\t\t\t\t\t\t   bool leaf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:61,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:65,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - input
    - flags
    - escontext
    argTypes:
    - char*
    - int
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 73
    functionName: init_tsvector_parser
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector_parser.c
    functionUses: 2
    functionsReached:
    - pg_database_encoding_max_length
    - palloc
    - palloc_object
    linkageType: ''
    returnType: TSVectorParseState
    signature: TSVectorParseState init_tsvector_parser(char *input, int flags, Node
      *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - input
    argTypes:
    - TSVectorParseState
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 84
    functionName: reset_tsvector_parser
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector_parser.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reset_tsvector_parser(TSVectorParseState state, char *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:92,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - TSVectorParseState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: close_tsvector_parser
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector_parser.c
    functionUses: 2
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void close_tsvector_parser(TSVectorParseState state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:144,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:145,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:147,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - TSVectorParseState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 151
    functionName: prssyntaxerror
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector_parser.c
    functionUses: 0
    functionsReached:
    - errcode
    - errmsg
    - errsave
    linkageType: ''
    returnType: bool
    signature: bool prssyntaxerror(TSVectorParseState state)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:199,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:201,1
    - Dst: ISOPERATOR
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:206,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:207,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:209,1
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:211,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:218,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:219,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:220,1
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:226,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:232,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:237,1
    - Dst: ISOPERATOR
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:238,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:239,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:247,1
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:260,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:265,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:269,1
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:279,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:284,1
    - Dst: ts_copychar_cstr
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:287,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:308,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:315,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:320,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:326,1
    - Dst: WEP_SETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:329,1
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:329,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:329,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:331,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:332,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:333,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:334,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:336,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:344,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:346,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:346,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:346,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:348,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:350,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:352,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:352,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:354,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:356,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:358,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:358,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:360,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:362,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:364,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:364,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:366,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:368,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:370,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:373,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:377,1
    - Dst: pg_mblen_cstr
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:381,1
    CyclomaticComplexity: 64
    EdgeCount: 64
    ICount: 138
    argCount: 6
    argNames:
    - state
    - strval
    - lenval
    - pos_ptr
    - poslen
    - endptr
    argTypes:
    - TSVectorParseState
    - char**
    - int*
    - WordEntryPos**
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 383
    functionName: gettoken_tsvector
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector_parser.c
    functionUses: 3
    functionsReached:
    - errcode
    - WEP_SETWEIGHT
    - palloc_array
    - elog
    - ISOPERATOR
    - isdigit
    - Assert
    - errmsg
    - isspace
    - LIMITPOS
    - repalloc_array
    - pg_mblen_cstr
    - WEP_GETPOS
    - WEP_GETWEIGHT
    - WEP_SETPOS
    - atoi
    - t_iseq
    - ereturn
    - ts_copychar_cstr
    linkageType: ''
    returnType: bool
    signature: "bool gettoken_tsvector(TSVectorParseState state,\n\t\t\t\t  char **strval,
      int *lenval,\n\t\t\t\t  WordEntryPos **pos_ptr, int *poslen,\n\t\t\t\t  char
      **endptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/oid8.c:30,1
    - Dst: uint64in_subr
      Src: /src/postgres/src/backend/utils/adt/oid8.c:33,1
    - Dst: PG_RETURN_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 35
    functionName: oid8in
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_OID8
    - uint64in_subr
    linkageType: ''
    returnType: Datum
    signature: Datum oid8in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:40,1
    - Dst: pg_ulltoa_n
      Src: /src/postgres/src/backend/utils/adt/oid8.c:45,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/oid8.c:52,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/oid8.c:53,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/oid8.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 55
    functionName: oid8out
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - pg_ulltoa_n
    - memcpy
    - PG_RETURN_CSTRING
    - PG_GETARG_OID8
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum oid8out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/oid8.c:63,1
    - Dst: PG_RETURN_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:65,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/oid8.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 66
    functionName: oid8recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID8
    - PG_GETARG_POINTER
    - pq_getmsgint64
    linkageType: ''
    returnType: Datum
    signature: Datum oid8recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:74,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/oid8.c:77,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/oid8.c:78,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/oid8.c:79,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/oid8.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 80
    functionName: oid8send
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - PG_GETARG_OID8
    linkageType: ''
    returnType: Datum
    signature: Datum oid8send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:89,1
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:90,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid8.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: oid8eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID8
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oid8eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:98,1
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:99,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid8.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 102
    functionName: oid8ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID8
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oid8ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:107,1
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:108,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid8.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 111
    functionName: oid8lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID8
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oid8lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:116,1
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:117,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid8.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: oid8le
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID8
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oid8le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:125,1
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:126,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid8.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 129
    functionName: oid8ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID8
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oid8ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:134,1
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:135,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid8.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 138
    functionName: oid8gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID8
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oid8gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: hashoid8
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - hashint8
    linkageType: ''
    returnType: Datum
    signature: Datum hashoid8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashint8extended
      Src: /src/postgres/src/backend/utils/adt/oid8.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: hashoid8extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - hashint8extended
    linkageType: ''
    returnType: Datum
    signature: Datum hashoid8extended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:155,1
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:156,1
    - Dst: PG_RETURN_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 159
    functionName: oid8larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID8
    - PG_RETURN_OID8
    linkageType: ''
    returnType: Datum
    signature: Datum oid8larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:164,1
    - Dst: PG_GETARG_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:165,1
    - Dst: PG_RETURN_OID8
      Src: /src/postgres/src/backend/utils/adt/oid8.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 168
    functionName: oid8smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID8
    - PG_RETURN_OID8
    linkageType: ''
    returnType: Datum
    signature: Datum oid8smaller(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: GET_SIGLEN
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_SIGLEN()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - siglen
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: SIGLENBIT
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIGLENBIT(siglen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - siglen
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: LOOPBYTE
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOOPBYTE(siglen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: GETBYTE
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETBYTE(x,i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: GETBITBYTE
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETBITBYTE(x,i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: CLRBIT
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CLRBIT(x,i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: SETBIT
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETBIT(x,i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: GETBIT
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETBIT(x,i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - val
    - ','
    - siglen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: HASHVAL
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASHVAL(val, siglen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sign
    - ','
    - val
    - ','
    - siglen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: HASH
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH(sign, val, siglen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - vec
    - ','
    - pos
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: GETENTRY
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETENTRY(vec,pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: ISARRKEY
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISARRKEY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: ISSIGNKEY
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISSIGNKEY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: ISALLTRUE
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISALLTRUE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - flag
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: CALCGTSIZE
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALCGTSIZE(flag, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: GETSIGN
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETSIGN(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: GETSIGLEN
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETSIGLEN(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: GETARR
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETARR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: ARRNELEM
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRNELEM(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:92,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:93,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:94,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: gtsvectorin
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ereport
    - errmsg
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvectorin(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:102,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:102,1
    - Dst: ISARRKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:105,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:106,1
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:106,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:109,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:110,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:113,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:114,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:114,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:116,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:117,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:121,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 123
    functionName: gtsvectorout
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - SIGLENBIT
    - ISARRKEY
    - PG_DETOAST_DATUM
    - psprintf
    - pstrdup
    - PG_FREE_IF_COPY
    - ARRNELEM
    - ISALLTRUE
    - sizebitvec
    - GETSIGN
    - PG_RETURN_POINTER
    - GETSIGLEN
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvectorout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - va
    - vb
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 132
    functionName: compareint
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int compareint(const void *va, const void *vb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:138,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:139,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:141,1
    - Dst: HASH
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - sign
    - a
    - siglen
    argTypes:
    - BITVECP
    - SignTSVector*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 144
    functionName: makesign
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - HASH
    - MemSet
    - GETARR
    - ARRNELEM
    linkageType: ''
    returnType: void
    signature: void makesign(BITVECP sign, SignTSVector *a, int siglen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CALCGTSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:149,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:150,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:152,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:156,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - flag
    - len
    - sign
    argTypes:
    - int
    - int
    - BITVECP
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 159
    functionName: gtsvector_alloc
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - memcpy
    - CALCGTSIZE
    - SET_VARSIZE
    - palloc
    - GETSIGN
    linkageType: ''
    returnType: SignTSVector
    signature: 'SignTSVector *

      gtsvector_alloc(int flag, int len, BITVECP sign)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:165,1
    - Dst: GET_SIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:166,1
    - Dst: DatumGetTSVector
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:171,1
    - Dst: gtsvector_alloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:172,1
    - Dst: ARRPTR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:175,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:176,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:178,1
    - Dst: INIT_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:184,1
    - Dst: COMP_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:185,1
    - Dst: FIN_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:186,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:193,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:193,1
    - Dst: qunique
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:194,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:194,1
    - Dst: CALCGTSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:201,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:202,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:203,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:207,1
    - Dst: gtsvector_alloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:209,1
    - Dst: makesign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:211,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:211,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:215,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:216,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:216,1
    - Dst: ISSIGNKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:220,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:220,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:221,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:221,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:225,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:225,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:230,1
    - Dst: gtsvector_alloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:233,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:234,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:235,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:235,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:239,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 162
    functionDepth: 3
    functionLinenumber: 162
    functionLinenumberEnd: 240
    functionName: gtsvector_compress
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - repalloc
    - gtsvector_alloc
    - STRPTR
    - SET_VARSIZE
    - GETSIGN
    - PG_RETURN_POINTER
    - qsort
    - ISSIGNKEY
    - qunique
    - GETARR
    - INIT_LEGACY_CRC32
    - GET_SIGLEN
    - ISALLTRUE
    - PointerGetDatum
    - palloc_object
    - ARRPTR
    - PG_GETARG_POINTER
    - VARSIZE
    - CALCGTSIZE
    - COMP_LEGACY_CRC32
    - DatumGetTSVector
    - makesign
    - gistentryinit
    - FIN_LEGACY_CRC32
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvector_compress(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 231
    functionName: LOOPBYTE
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: void
    signature: void LOOPBYTE(siglen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:249,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:250,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:252,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:254,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:256,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:256,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:260,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 264
    functionName: gtsvector_decompress
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - gistentryinit
    - PG_DETOAST_DATUM
    - PointerGetDatum
    - palloc_object
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvector_decompress(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - checkval
    - val
    - data
    argTypes:
    - void*
    - QueryOperand*
    - ExecPhraseData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 302
    functionName: checkcondition_arr
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TSTernaryValue
    signature: TSTernaryValue checkcondition_arr(void *checkval, QueryOperand *val,
      ExecPhraseData *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GETBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:318,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:318,1
    - Dst: HASHVAL
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:318,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - checkval
    - val
    - data
    argTypes:
    - void*
    - QueryOperand*
    - ExecPhraseData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 322
    functionName: checkcondition_bit
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - GETSIGN
    - GETBIT
    - HASHVAL
    - GETSIGLEN
    linkageType: ''
    returnType: TSTernaryValue
    signature: TSTernaryValue checkcondition_bit(void *checkval, QueryOperand *val,
      ExecPhraseData *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:327,1
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:328,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:330,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:331,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:333,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:334,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:340,1
    - Dst: ISSIGNKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:342,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:344,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:345,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:347,1
    - Dst: TS_execute
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:347,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:347,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:356,1
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:357,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:358,1
    - Dst: TS_execute
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:358,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:358,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 363
    functionName: gtsvector_consistent
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - ISSIGNKEY
    - PG_GETARG_TSQUERY
    - GETQUERY
    - GETARR
    - ARRNELEM
    - PG_GETARG_UINT16
    - TS_execute
    - ISALLTRUE
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    - PG_GETARG_POINTER
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvector_consistent(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ISSIGNKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:370,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:372,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:374,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:377,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:377,1
    - Dst: LOOPBYTE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:379,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:384,1
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:386,1
    - Dst: HASH
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:387,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - sbase
    - add
    - siglen
    argTypes:
    - BITVECP
    - SignTSVector*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 390
    functionName: unionkey
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - ISSIGNKEY
    - Assert
    - LOOPBYTE
    - GETARR
    - ARRNELEM
    - ISALLTRUE
    - HASH
    - GETSIGN
    - GETSIGLEN
    linkageType: ''
    returnType: int32
    signature: int32 unionkey(BITVECP sbase, SignTSVector *add, int siglen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:396,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:397,1
    - Dst: GET_SIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:398,1
    - Dst: gtsvector_alloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:399,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:400,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:403,1
    - Dst: unionkey
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:407,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:407,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:410,1
    - Dst: CALCGTSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:410,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:415,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:417,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 393
    functionDepth: 3
    functionLinenumber: 393
    functionLinenumberEnd: 418
    functionName: gtsvector_union
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - VARSIZE
    - CALCGTSIZE
    - unionkey
    - GET_SIGLEN
    - gtsvector_alloc
    - memset
    - SET_VARSIZE
    - PG_GETARG_POINTER
    - GETSIGN
    - PG_RETURN_POINTER
    - GETENTRY
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvector_union(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:423,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:424,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:425,1
    - Dst: GET_SIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:426,1
    - Dst: ISSIGNKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:428,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:430,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:430,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:432,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:434,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:439,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:440,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:442,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:442,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:442,1
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:457,1
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:458,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:464,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:465,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:478,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 479
    functionName: gtsvector_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - ISSIGNKEY
    - Assert
    - GETARR
    - ARRNELEM
    - GET_SIGLEN
    - ISALLTRUE
    - PG_GETARG_POINTER
    - GETSIGN
    - PG_RETURN_POINTER
    - GETSIGLEN
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvector_same(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 452
    functionName: LOOPBYTE
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LOOPBYTE(siglen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sign
    - siglen
    argTypes:
    - BITVECP
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 485
    functionName: sizebitvec
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 1
    functionsReached:
    - pg_popcount
    linkageType: ''
    returnType: int32
    signature: int32 sizebitvec(BITVECP sign, int siglen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - siglen
    argTypes:
    - BITVECP
    - BITVECP
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 501
    functionName: hemdistsign
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int hemdistsign(BITVECP a, BITVECP b, int siglen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 499
    functionName: LOOPBYTE
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LOOPBYTE(siglen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:506,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:507,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:509,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:511,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:514,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:514,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:514,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:516,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:517,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:517,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:519,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:521,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:521,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:521,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - SignTSVector*
    - SignTSVector*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 522
    functionName: hemdist
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - hemdistsign
    - SIGLENBIT
    - Assert
    - ISALLTRUE
    - sizebitvec
    - GETSIGN
    - GETSIGLEN
    linkageType: ''
    returnType: int
    signature: int hemdist(SignTSVector *a, SignTSVector *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:527,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:528,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:529,1
    - Dst: GET_SIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:530,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:531,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:532,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:533,1
    - Dst: ISARRKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:537,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:539,1
    - Dst: makesign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:541,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:543,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:545,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:548,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:552,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:554,1
    - Dst: hemdist
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:557,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:558,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 559
    functionName: gtsvector_penalty
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - hemdistsign
    - sizebitvec
    - makesign
    - SIGLENBIT
    - ISARRKEY
    - pfree
    - GET_SIGLEN
    - ISALLTRUE
    - palloc
    - PG_GETARG_POINTER
    - GETSIGN
    - PG_RETURN_POINTER
    - hemdist
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvector_penalty(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ISARRKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:571,1
    - Dst: makesign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:572,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:573,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:576,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - item
    - key
    - siglen
    argTypes:
    - CACHESIGN*
    - SignTSVector*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 577
    functionName: fillcache
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - makesign
    - memcpy
    - ISARRKEY
    - ISALLTRUE
    - GETSIGN
    linkageType: ''
    returnType: void
    signature: void fillcache(CACHESIGN *item, SignTSVector *key, int siglen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 580
    functionName: WISH_F
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WISH_F(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - va
    - vb
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 593
    functionName: comparecost
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int comparecost(const void *va, const void *vb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:604,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:604,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:607,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:607,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:609,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - a
    - b
    - siglen
    argTypes:
    - CACHESIGN*
    - CACHESIGN*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 610
    functionName: hemdistcache
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - hemdistsign
    - sizebitvec
    - SIGLENBIT
    linkageType: ''
    returnType: int
    signature: int hemdistcache(CACHESIGN *a, CACHESIGN *b, int siglen)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:615,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:616,1
    - Dst: GET_SIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:617,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:642,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:643,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:645,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:646,1
    - Dst: fillcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:651,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:651,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:654,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:656,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:656,1
    - Dst: fillcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:659,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:659,1
    - Dst: hemdistcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:661,1
    - Dst: gtsvector_alloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:683,1
    - Dst: gtsvector_alloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:685,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:687,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:688,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:689,1
    - Dst: fillcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:690,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:690,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:692,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:693,1
    - Dst: hemdistcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:696,1
    - Dst: hemdistcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:697,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:698,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:700,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:718,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:720,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:723,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:724,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:725,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:730,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:730,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:732,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:734,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:737,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:738,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:739,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:744,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:744,1
    - Dst: WISH_F
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:746,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:748,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:750,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:751,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:751,1
    - Dst: LOOPBYTE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:756,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:764,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:766,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:767,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:767,1
    - Dst: LOOPBYTE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:772,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:781,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:782,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:784,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 95
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 612
    functionDepth: 3
    functionLinenumber: 612
    functionLinenumberEnd: 785
    functionName: gtsvector_picksplit
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - palloc_array
    - gtsvector_alloc
    - GETSIGN
    - PG_RETURN_POINTER
    - qsort
    - LOOPBYTE
    - GET_SIGLEN
    - ISALLTRUE
    - PointerGetDatum
    - PG_GETARG_POINTER
    - GETENTRY
    - hemdistsign
    - hemdistcache
    - memset
    - fillcache
    - OffsetNumberNext
    - WISH_F
    - SIGLENBIT
    - abs
    - palloc
    - sizebitvec
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvector_picksplit(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gtsvector_consistent
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 794
    functionDepth: 2
    functionLinenumber: 794
    functionLinenumberEnd: 798
    functionName: gtsvector_consistent_oldsig
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - gtsvector_consistent
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvector_consistent_oldsig(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:803,1
    - Dst: init_local_reloptions
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:805,1
    - Dst: add_local_int_reloption
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:806,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 800
    functionDepth: 4
    functionLinenumber: 800
    functionLinenumberEnd: 811
    functionName: gtsvector_options
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - add_local_int_reloption
    - init_local_reloptions
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum gtsvector_options(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:100,1
    - Dst: std_typanalyze
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:109,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:110,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:115,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:116,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:117,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:124,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:129,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:130,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:131,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:132,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:135,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 159
    functionName: array_typanalyze
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 0
    functionsReached:
    - elog
    - std_typanalyze
    - get_base_element_type
    - PG_RETURN_BOOL
    - palloc_object
    - OidIsValid
    - PG_GETARG_POINTER
    - lookup_type_cache
    linkageType: ''
    returnType: Datum
    signature: Datum array_typanalyze(PG_FUNCTION_ARGS)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: ArrayAnalyzeExtraData*::std_compute_stats
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:250,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:284,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:293,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:317,1
    - Dst: fetchfunc
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:319,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:327,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:337,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:337,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:338,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:364,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:393,1
    - Dst: prune_element_hashtable
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:408,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:419,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:429,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:430,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:431,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:432,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:440,1
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:471,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:472,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:474,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:477,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:485,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:488,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:513,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:540,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:544,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:552,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:553,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:563,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:573,1
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:592,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:603,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:609,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:610,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:612,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:616,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:625,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:675,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 156
    argCount: 4
    argNames:
    - stats
    - fetchfunc
    - samplerows
    - totalrows
    argTypes:
    - VacAttrStats*
    - AnalyzeAttrFetchFunc
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 215
    functionDepth: 4
    functionLinenumber: 215
    functionLinenumberEnd: 690
    functionName: compute_array_stats
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 0
    functionsReached:
    - palloc_array
    - hash_seq_search
    - vacuum_delay_point
    - qsort_interruptible
    - elog
    - Assert
    - pfree
    - fetchfunc
    - PointerGetDatum
    - hash_create
    - toast_raw_datum_size
    - hash_seq_init
    - DatumGetArrayTypeP
    - deconstruct_array
    - hash_search
    - ArrayAnalyzeExtraData*::std_compute_stats
    - MemoryContextAlloc
    - datumCopy
    - prune_element_hashtable
    - MemoryContextSwitchTo
    - hash_get_num_entries
    - ARR_ELEMTYPE
    - Max
    - palloc
    linkageType: ''
    returnType: void
    signature: "void compute_array_stats(VacAttrStats *stats, AnalyzeAttrFetchFunc
      fetchfunc,\n\t\t\t\t\tint samplerows, double totalrows)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:702,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:703,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:709,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:711,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:714,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:714,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - elements_tab
    - b_current
    argTypes:
    - HTAB*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 696
    functionDepth: 2
    functionLinenumber: 696
    functionLinenumberEnd: 717
    functionName: prune_element_hashtable
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 1
    functionsReached:
    - elog
    - hash_search
    - pfree
    - hash_seq_search
    - hash_seq_init
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void prune_element_hashtable(HTAB *elements_tab, int b_current)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:731,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:734,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 725
    functionDepth: 1
    functionLinenumber: 725
    functionLinenumberEnd: 735
    functionName: element_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 0
    functionsReached:
    - FunctionCall1Coll
    - DatumGetUInt32
    linkageType: ''
    returnType: uint32
    signature: uint32 element_hash(const void *key, Size keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - void*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 745
    functionName: element_match
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 0
    functionsReached:
    - element_compare
    linkageType: ''
    returnType: int
    signature: int element_match(const void *key1, const void *key2, Size keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:762,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 755
    functionDepth: 1
    functionLinenumber: 755
    functionLinenumberEnd: 766
    functionName: element_compare
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 4
    functionsReached:
    - FunctionCall2Coll
    - DatumGetInt32
    linkageType: ''
    returnType: int
    signature: int element_compare(const void *key1, const void *key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - e1
    - e2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 778
    functionName: trackitem_compare_frequencies_desc
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int trackitem_compare_frequencies_desc(const void *e1, const void *e2,
      void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - e1
    - e2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 783
    functionDepth: 0
    functionLinenumber: 783
    functionLinenumberEnd: 790
    functionName: trackitem_compare_element
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 0
    functionsReached:
    - element_compare
    linkageType: ''
    returnType: int
    signature: int trackitem_compare_element(const void *e1, const void *e2, void
      *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - e1
    - e2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 807
    functionName: countitem_compare_count
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int countitem_compare_count(const void *e1, const void *e2, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArrayGetIntegerTypmods
      Src: /src/postgres/src/backend/utils/adt/varchar.c:39,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:46,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:47,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:48,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:51,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:52,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:53,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:55,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:56,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:57,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ta
    - typename
    argTypes:
    - ArrayType*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 32
    functionDepth: 3
    functionLinenumber: 32
    functionLinenumberEnd: 68
    functionName: anychar_typmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - ArrayGetIntegerTypmods
    - errcode
    linkageType: ''
    returnType: int32
    signature: int32 anychar_typmodin(ArrayType *ta, const char *typename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varchar.c:74,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/varchar.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 82
    functionName: anychar_typmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - snprintf
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      anychar_typmodout(int32 typmod)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varchar.c:144,1
    - Dst: pg_mbcharcliplen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:148,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/varchar.c:159,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:160,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:161,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varchar.c:181,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/varchar.c:182,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/varchar.c:183,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varchar.c:184,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/varchar.c:188,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - s
    - len
    - atttypmod
    - escontext
    argTypes:
    - char*
    - size_t
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 191
    functionName: bpchar_input
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - memcpy
    - errcode
    - pg_mbcharcliplen
    - errmsg
    - SET_VARSIZE
    - palloc
    - VARDATA
    - ereturn
    - memset
    - pg_mbstrlen_with_len
    linkageType: ''
    returnType: BpChar
    signature: 'BpChar *

      bpchar_input(const char *s, size_t len, int32 atttypmod, Node *escontext)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varchar.c:200,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:202,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:204,1
    - Dst: bpchar_input
      Src: /src/postgres/src/backend/utils/adt/varchar.c:207,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:207,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 197
    functionDepth: 3
    functionLinenumber: 197
    functionLinenumberEnd: 209
    functionName: bpcharin
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - bpchar_input
    - PG_GETARG_OID
    - strlen
    - PG_RETURN_BPCHAR_P
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varchar.c:221,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varchar.c:223,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/varchar.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 224
    functionName: bpcharout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - TextDatumGetCString
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varchar.c:232,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:234,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:236,1
    - Dst: pq_getmsgtext
      Src: /src/postgres/src/backend/utils/adt/varchar.c:241,1
    - Dst: bpchar_input
      Src: /src/postgres/src/backend/utils/adt/varchar.c:242,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varchar.c:243,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 245
    functionName: bpcharrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - pfree
    - bpchar_input
    - PG_GETARG_OID
    - PG_RETURN_BPCHAR_P
    - pq_getmsgtext
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: textsend
      Src: /src/postgres/src/backend/utils/adt/varchar.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 255
    functionName: bpcharsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - textsend
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharsend(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:273,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:274,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:275,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:286,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varchar.c:290,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:291,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varchar.c:293,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:297,1
    - Dst: pg_mbcharcliplen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:304,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/varchar.c:310,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:311,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varchar.c:333,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varchar.c:335,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/varchar.c:336,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/varchar.c:337,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varchar.c:339,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/varchar.c:343,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:345,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 270
    functionDepth: 4
    functionLinenumber: 270
    functionLinenumberEnd: 346
    functionName: bpchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - ereturn
    - memcpy
    - PG_GETARG_BOOL
    - errcode
    - Assert
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BPCHAR_P
    - pg_mbcharcliplen
    - errmsg
    - PG_GETARG_BPCHAR_PP
    - SET_VARSIZE
    - pg_mbstrlen_with_len
    - VARDATA
    - palloc
    - PG_GETARG_INT32
    - memset
    linkageType: ''
    returnType: Datum
    signature: Datum bpchar(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/utils/adt/varchar.c:356,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varchar.c:359,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/varchar.c:361,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/varchar.c:362,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 365
    functionName: char_bpchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CHAR
    - PG_RETURN_BPCHAR_P
    - VARDATA
    - SET_VARSIZE
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum char_bpchar(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:375,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varchar.c:380,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:381,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:385,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/varchar.c:396,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varchar.c:397,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varchar.c:397,1
    - Dst: PG_RETURN_NAME
      Src: /src/postgres/src/backend/utils/adt/varchar.c:399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 372
    functionDepth: 4
    functionLinenumber: 372
    functionLinenumberEnd: 400
    functionName: bpchar_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - memcpy
    - PG_RETURN_NAME
    - palloc0
    - pg_mbcliplen
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - NameStr
    - PG_GETARG_BPCHAR_PP
    linkageType: ''
    returnType: Datum
    signature: Datum bpchar_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/varchar.c:412,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varchar.c:415,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varchar.c:415,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 417
    functionName: name_bpchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_RETURN_BPCHAR_P
    - PG_GETARG_NAME
    - NameStr
    linkageType: ''
    returnType: Datum
    signature: Datum name_bpchar(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:422,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:424,1
    - Dst: anychar_typmodin
      Src: /src/postgres/src/backend/utils/adt/varchar.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 419
    functionDepth: 4
    functionLinenumber: 419
    functionLinenumberEnd: 425
    functionName: bpchartypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - anychar_typmodin
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum bpchartypmodin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:430,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varchar.c:432,1
    - Dst: anychar_typmodout
      Src: /src/postgres/src/backend/utils/adt/varchar.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 433
    functionName: bpchartypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - anychar_typmodout
    - PG_GETARG_INT32
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum bpchartypmodout(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_mbcharcliplen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:470,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/varchar.c:476,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:478,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varchar.c:489,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - s
    - len
    - atttypmod
    - escontext
    argTypes:
    - char*
    - size_t
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 459
    functionDepth: 2
    functionLinenumber: 459
    functionLinenumberEnd: 491
    functionName: varchar_input
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - errcode
    - cstring_to_text_with_len
    - pg_mbcharcliplen
    - errmsg
    - ereturn
    linkageType: ''
    returnType: VarChar
    signature: 'VarChar *

      varchar_input(const char *s, size_t len, int32 atttypmod, Node *escontext)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varchar.c:500,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:502,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:504,1
    - Dst: varchar_input
      Src: /src/postgres/src/backend/utils/adt/varchar.c:507,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:507,1
    - Dst: PG_RETURN_VARCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 497
    functionDepth: 3
    functionLinenumber: 497
    functionLinenumberEnd: 509
    functionName: varcharin
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varchar_input
    - PG_GETARG_CSTRING
    - PG_GETARG_OID
    - strlen
    - PG_RETURN_VARCHAR_P
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum varcharin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varchar.c:521,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varchar.c:523,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/varchar.c:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 524
    functionName: varcharout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - TextDatumGetCString
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum varcharout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varchar.c:532,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:534,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:536,1
    - Dst: pq_getmsgtext
      Src: /src/postgres/src/backend/utils/adt/varchar.c:541,1
    - Dst: varchar_input
      Src: /src/postgres/src/backend/utils/adt/varchar.c:542,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varchar.c:543,1
    - Dst: PG_RETURN_VARCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 529
    functionDepth: 3
    functionLinenumber: 529
    functionLinenumberEnd: 545
    functionName: varcharrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varchar_input
    - pfree
    - PG_GETARG_OID
    - PG_RETURN_VARCHAR_P
    - pq_getmsgtext
    - PG_GETARG_POINTER
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum varcharrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: textsend
      Src: /src/postgres/src/backend/utils/adt/varchar.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 555
    functionName: varcharsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - textsend
    linkageType: ''
    returnType: Datum
    signature: Datum varcharsend(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varchar.c:570,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/varchar.c:573,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varchar.c:579,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/varchar.c:579,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/varchar.c:581,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/varchar.c:583,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/varchar.c:585,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/utils/adt/varchar.c:586,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:587,1
    - Dst: relabel_to_typmod
      Src: /src/postgres/src/backend/utils/adt/varchar.c:592,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/varchar.c:596,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 567
    functionDepth: 5
    functionLinenumber: 567
    functionLinenumberEnd: 597
    functionName: varchar_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - exprTypmod
    - Assert
    - linitial
    - DatumGetInt32
    - lsecond
    - relabel_to_typmod
    - list_length
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum varchar_support(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_VARCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:614,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:615,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:616,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varchar.c:623,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:624,1
    - Dst: PG_RETURN_VARCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:629,1
    - Dst: pg_mbcharcliplen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:634,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/varchar.c:640,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:641,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:642,1
    - Dst: PG_RETURN_VARCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:646,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varchar.c:646,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 611
    functionDepth: 4
    functionLinenumber: 611
    functionLinenumberEnd: 648
    functionName: varchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 1
    functionsReached:
    - PG_GETARG_VARCHAR_PP
    - PG_GETARG_BOOL
    - errcode
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - cstring_to_text_with_len
    - pg_mbcharcliplen
    - errmsg
    - PG_RETURN_VARCHAR_P
    - ereturn
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum varchar(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:653,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:655,1
    - Dst: anychar_typmodin
      Src: /src/postgres/src/backend/utils/adt/varchar.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 650
    functionDepth: 4
    functionLinenumber: 650
    functionLinenumberEnd: 656
    functionName: varchartypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - anychar_typmodin
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum varchartypmodin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:661,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varchar.c:663,1
    - Dst: anychar_typmodout
      Src: /src/postgres/src/backend/utils/adt/varchar.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 664
    functionName: varchartypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - anychar_typmodout
    - PG_GETARG_INT32
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum varchartypmodout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bpchartruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:675,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:675,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varchar.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - BpChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 672
    functionDepth: 4
    functionLinenumber: 672
    functionLinenumberEnd: 676
    functionName: bcTruelen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - bpchartruelen
    linkageType: ''
    returnType: int
    signature: int bcTruelen(BpChar *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 693
    functionName: bpchartruelen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bpchartruelen(char *s, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:698,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:702,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/varchar.c:705,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varchar.c:706,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:706,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 695
    functionDepth: 5
    functionLinenumber: 695
    functionLinenumberEnd: 709
    functionName: bpcharlen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - bcTruelen
    - pg_database_encoding_max_length
    - VARDATA_ANY
    - PG_GETARG_BPCHAR_PP
    - pg_mbstrlen_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharlen(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varchar.c:714,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:717,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varchar.c:717,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 711
    functionDepth: 4
    functionLinenumber: 711
    functionLinenumberEnd: 718
    functionName: bpcharoctetlen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - toast_raw_datum_size
    - PG_GETARG_DATUM
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharoctetlen(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/varchar.c:732,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:738,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:739,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:740,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varchar.c:741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - collid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 729
    functionDepth: 2
    functionLinenumber: 729
    functionLinenumberEnd: 743
    functionName: check_collation_set
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - errhint
    - errmsg
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void check_collation_set(Oid collid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:748,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:749,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:753,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varchar.c:756,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:758,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:759,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varchar.c:761,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:772,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:772,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:772,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:776,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:776,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:776,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:780,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:781,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:783,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 745
    functionDepth: 5
    functionLinenumber: 745
    functionLinenumberEnd: 784
    functionName: bpchareq
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - memcmp
    - varstr_cmp
    - pg_newlocale_from_collation
    - PG_FREE_IF_COPY
    - bcTruelen
    - VARDATA_ANY
    - check_collation_set
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bpchareq(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:789,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:790,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:794,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varchar.c:797,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:799,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:800,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varchar.c:802,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:813,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:813,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:813,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:817,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:817,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:817,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:821,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:822,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:824,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 786
    functionDepth: 5
    functionLinenumber: 786
    functionLinenumberEnd: 825
    functionName: bpcharne
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - memcmp
    - varstr_cmp
    - pg_newlocale_from_collation
    - PG_FREE_IF_COPY
    - bcTruelen
    - VARDATA_ANY
    - check_collation_set
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:830,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:831,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:836,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:837,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:839,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:839,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:839,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:840,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:842,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:843,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 827
    functionDepth: 5
    functionLinenumber: 827
    functionLinenumberEnd: 846
    functionName: bpcharlt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_cmp
    - PG_FREE_IF_COPY
    - bcTruelen
    - VARDATA_ANY
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharlt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:851,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:852,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:857,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:858,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:860,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:860,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:860,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:861,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:863,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:864,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 848
    functionDepth: 5
    functionLinenumber: 848
    functionLinenumberEnd: 867
    functionName: bpcharle
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_cmp
    - PG_FREE_IF_COPY
    - bcTruelen
    - VARDATA_ANY
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharle(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:872,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:873,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:878,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:879,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:881,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:881,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:881,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:882,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:884,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:885,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 869
    functionDepth: 5
    functionLinenumber: 869
    functionLinenumberEnd: 888
    functionName: bpchargt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_cmp
    - PG_FREE_IF_COPY
    - bcTruelen
    - VARDATA_ANY
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bpchargt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:893,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:894,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:899,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:900,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:902,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:902,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:902,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:903,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:905,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:906,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:908,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 890
    functionDepth: 5
    functionLinenumber: 890
    functionLinenumberEnd: 909
    functionName: bpcharge
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_cmp
    - PG_FREE_IF_COPY
    - bcTruelen
    - VARDATA_ANY
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:914,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:915,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:920,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:921,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:923,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:923,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:923,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:924,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:926,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:927,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 911
    functionDepth: 5
    functionLinenumber: 911
    functionLinenumberEnd: 930
    functionName: bpcharcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_cmp
    - PG_RETURN_INT32
    - PG_FREE_IF_COPY
    - bcTruelen
    - VARDATA_ANY
    - PG_GETARG_BPCHAR_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharcmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varchar.c:935,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varchar.c:939,1
    - Dst: varstr_sortsupport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:942,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varchar.c:944,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 947
    functionName: bpchar_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_sortsupport
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: Datum
    signature: Datum bpchar_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:952,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:953,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:958,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:959,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:961,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:961,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:961,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:962,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 949
    functionDepth: 5
    functionLinenumber: 949
    functionLinenumberEnd: 965
    functionName: bpchar_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_cmp
    - bcTruelen
    - VARDATA_ANY
    - PG_RETURN_BPCHAR_P
    - PG_GETARG_BPCHAR_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bpchar_larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:970,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:971,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:976,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:977,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:979,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:979,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:979,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:980,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 967
    functionDepth: 5
    functionLinenumber: 967
    functionLinenumberEnd: 983
    functionName: bpchar_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_cmp
    - bcTruelen
    - VARDATA_ANY
    - PG_RETURN_BPCHAR_P
    - PG_GETARG_BPCHAR_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bpchar_smaller(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:993,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:994,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1001,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1002,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1003,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1004,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1006,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1007,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1009,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1013,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1021,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1022,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1024,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1028,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1035,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1037,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1041,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 990
    functionDepth: 5
    functionLinenumber: 990
    functionLinenumberEnd: 1044
    functionName: hashbpchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - pg_newlocale_from_collation
    - pfree
    - PG_FREE_IF_COPY
    - bcTruelen
    - ereport
    - VARDATA_ANY
    - pg_strnxfrm
    - errhint
    - errmsg
    - PG_GETARG_BPCHAR_PP
    - hash_any
    - PG_GET_COLLATION
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum hashbpchar(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1049,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1050,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1057,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1058,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1059,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1060,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1062,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1063,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1065,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1069,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1070,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1078,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1079,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1081,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1085,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1092,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1093,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1095,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1098,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1046
    functionDepth: 5
    functionLinenumber: 1046
    functionLinenumberEnd: 1101
    functionName: hashbpcharextended
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - elog
    - errcode
    - pg_newlocale_from_collation
    - pfree
    - PG_FREE_IF_COPY
    - bcTruelen
    - ereport
    - VARDATA_ANY
    - hash_any_extended
    - errhint
    - errmsg
    - PG_GETARG_INT64
    - PG_GETARG_BPCHAR_PP
    - pg_strnxfrm
    - PG_GET_COLLATION
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum hashbpcharextended(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1118,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1119,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1121,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1121,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1121,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - BpChar*
    - BpChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1111
    functionDepth: 5
    functionLinenumber: 1111
    functionLinenumberEnd: 1130
    functionName: internal_bpchar_pattern_compare
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - VARDATA_ANY
    - Min
    - memcmp
    - bcTruelen
    linkageType: ''
    returnType: int
    signature: int internal_bpchar_pattern_compare(BpChar *arg1, BpChar *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1136,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1137,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1140,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1142,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1143,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1133
    functionDepth: 6
    functionLinenumber: 1133
    functionLinenumberEnd: 1146
    functionName: bpchar_pattern_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - internal_bpchar_pattern_compare
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    linkageType: ''
    returnType: Datum
    signature: Datum bpchar_pattern_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1152,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1153,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1156,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1158,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1159,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1149
    functionDepth: 6
    functionLinenumber: 1149
    functionLinenumberEnd: 1162
    functionName: bpchar_pattern_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - internal_bpchar_pattern_compare
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    linkageType: ''
    returnType: Datum
    signature: Datum bpchar_pattern_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1168,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1169,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1172,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1174,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1175,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1165
    functionDepth: 6
    functionLinenumber: 1165
    functionLinenumberEnd: 1178
    functionName: bpchar_pattern_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - internal_bpchar_pattern_compare
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    linkageType: ''
    returnType: Datum
    signature: Datum bpchar_pattern_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1184,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1185,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1188,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1190,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1191,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1181
    functionDepth: 6
    functionLinenumber: 1181
    functionLinenumberEnd: 1194
    functionName: bpchar_pattern_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - internal_bpchar_pattern_compare
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    linkageType: ''
    returnType: Datum
    signature: Datum bpchar_pattern_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1200,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1201,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1204,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1206,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1207,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1197
    functionDepth: 6
    functionLinenumber: 1197
    functionLinenumberEnd: 1210
    functionName: btbpchar_pattern_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - internal_bpchar_pattern_compare
    - PG_RETURN_INT32
    - PG_GETARG_BPCHAR_PP
    linkageType: ''
    returnType: Datum
    signature: Datum btbpchar_pattern_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1216,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1219,1
    - Dst: varstr_sortsupport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1222,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1224,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1213
    functionDepth: 1
    functionLinenumber: 1213
    functionLinenumberEnd: 1227
    functionName: btbpchar_pattern_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_sortsupport
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: Datum
    signature: Datum btbpchar_pattern_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 29
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 131
    functionName: default_multirange_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double default_multirange_selectivity(Oid operator)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:139,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:140,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:141,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:142,1
    - Dst: get_restriction_variable
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:155,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:157,1
    - Dst: default_multirange_selectivity
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:157,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:162,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:164,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:165,1
    - Dst: default_multirange_selectivity
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:165,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:174,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:175,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:185,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:189,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:190,1
    - Dst: default_multirange_selectivity
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:190,1
    - Dst: multirange_get_typcache
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:207,1
    - Dst: range_serialize
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:222,1
    - Dst: make_multirange
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:224,1
    - Dst: multirange_get_typcache
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:240,1
    - Dst: DatumGetRangeTypeP
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:243,1
    - Dst: make_multirange
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:244,1
    - Dst: multirange_get_typcache
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:267,1
    - Dst: DatumGetMultirangeTypeP
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:269,1
    - Dst: calc_multirangesel
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:279,1
    - Dst: default_multirange_selectivity
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:281,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:283,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:285,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:287,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 288
    functionName: multirangesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - default_multirange_selectivity
    - ReleaseVariableStats
    - multirange_get_typcache
    - make_multirange
    - calc_multirangesel
    - DatumGetMultirangeTypeP
    - get_restriction_variable
    - range_serialize
    - PG_GETARG_OID
    - get_commutator
    - DatumGetRangeTypeP
    - CLAMP_PROBABILITY
    - PG_RETURN_FLOAT8
    - PG_GETARG_POINTER
    - IsA
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum multirangesel(PG_FUNCTION_ARGS)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:303,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:308,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:312,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:318,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:320,1
    - Dst: MultirangeIsEmpty
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:340,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:402,1
    - Dst: calc_hist_selectivity
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:417,1
    - Dst: default_multirange_selectivity
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:420,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:444,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 71
    argCount: 3
    argNames:
    - typcache
    - vardata
    - constval
    argTypes:
    - TypeCacheEntry*
    - VariableStatData*
    - MultirangeType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 447
    functionName: calc_multirangesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - elog
    - default_multirange_selectivity
    - calc_hist_selectivity
    - HeapTupleIsValid
    - MultirangeIsEmpty
    - GETSTRUCT
    - get_attstatsslot
    - free_attstatsslot
    - CLAMP_PROBABILITY
    linkageType: ''
    returnType: double
    signature: "double calc_multirangesel(TypeCacheEntry *typcache, VariableStatData
      *vardata,\n\t\t\t\t   const MultirangeType *constval, Oid operator)"
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:472,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:475,1
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:476,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:481,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:482,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:490,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:499,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:500,1
    - Dst: range_deserialize
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:505,1
    - Dst: DatumGetRangeTypeP
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:505,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:509,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:518,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:519,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:524,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:531,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:532,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:540,1
    - Dst: multirange_get_bounds
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:541,1
    - Dst: multirange_get_bounds
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:543,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:563,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:569,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:575,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:581,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:589,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:597,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:605,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:613,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:634,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:638,1
    - Dst: calc_hist_selectivity_contains
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:647,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:661,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:667,1
    - Dst: calc_hist_selectivity_contained
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:673,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:690,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:695,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:696,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 101
    argCount: 3
    argNames:
    - typcache
    - vardata
    - constval
    argTypes:
    - TypeCacheEntry*
    - VariableStatData*
    - MultirangeType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 699
    functionName: calc_hist_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - elog
    - range_deserialize
    - statistic_proc_security_check
    - calc_hist_selectivity_scalar
    - HeapTupleIsValid
    - Assert
    - calc_hist_selectivity_contained
    - palloc_array
    - multirange_get_bounds
    - calc_hist_selectivity_contains
    - memset
    - get_attstatsslot
    - free_attstatsslot
    - OidIsValid
    - DatumGetRangeTypeP
    linkageType: ''
    returnType: double
    signature: "double calc_hist_selectivity(TypeCacheEntry *typcache, VariableStatData
      *vardata,\n\t\t\t\t\t  const MultirangeType *constval, Oid operator)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbound_bsearch
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:717,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:718,1
    - Dst: get_position
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:722,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - typcache
    - constbound
    - hist
    - hist_nvalues
    - equal
    argTypes:
    - TypeCacheEntry*
    - RangeBound*
    - RangeBound*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 706
    functionDepth: 0
    functionLinenumber: 706
    functionLinenumberEnd: 726
    functionName: calc_hist_selectivity_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - rbound_bsearch
    - get_position
    - Max
    linkageType: ''
    returnType: double
    signature: "double calc_hist_selectivity_scalar(TypeCacheEntry *typcache, const
      RangeBound *constbound,\n\t\t\t\t\t\t\t const RangeBound *hist, int hist_nvalues,
      bool equal)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: range_cmp_bounds
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:750,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 5
    argNames:
    - typcache
    - value
    - hist
    - hist_length
    - equal
    argTypes:
    - TypeCacheEntry*
    - RangeBound*
    - RangeBound*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 758
    functionName: rbound_bsearch
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - range_cmp_bounds
    linkageType: ''
    returnType: int
    signature: "int rbound_bsearch(TypeCacheEntry *typcache, const RangeBound *value,
      const RangeBound *hist,\n\t\t\t   int hist_length, bool equal)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:781,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - length_hist_values
    - length_hist_nvalues
    - value
    - equal
    argTypes:
    - Datum*
    - int
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 767
    functionDepth: 2
    functionLinenumber: 767
    functionLinenumberEnd: 788
    functionName: length_hist_bsearch
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 0
    functionsReached:
    - DatumGetFloat8
    linkageType: ''
    returnType: int
    signature: "int length_hist_bsearch(const Datum *length_hist_values, int length_hist_nvalues,\n\t\t\t\t\tdouble
      value, bool equal)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:797,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:818,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:818,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:822,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:825,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:825,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:831,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:835,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:836,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 4
    argNames:
    - typcache
    - value
    - hist1
    - hist2
    argTypes:
    - TypeCacheEntry*
    - RangeBound*
    - RangeBound*
    - RangeBound*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 793
    functionDepth: 2
    functionLinenumber: 793
    functionLinenumberEnd: 866
    functionName: get_position
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - FunctionCall2Coll
    - Max
    - OidIsValid
    - Min
    - isnan
    - DatumGetFloat8
    linkageType: ''
    returnType: float8
    signature: "float8 get_position(TypeCacheEntry *typcache, const RangeBound *value,
      const RangeBound *hist1,\n\t\t\t const RangeBound *hist2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:875,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:875,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:882,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:887,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:887,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:895,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:895,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - value
    - hist1
    - hist2
    argTypes:
    - double
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 872
    functionDepth: 0
    functionLinenumber: 872
    functionLinenumberEnd: 912
    functionName: get_len_position
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 0
    functionsReached:
    - isinf
    linkageType: ''
    returnType: double
    signature: double get_len_position(double value, double hist1, double hist2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:920,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:932,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:932,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:937,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:951,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:956,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - typcache
    - bound1
    - bound2
    argTypes:
    - TypeCacheEntry*
    - RangeBound*
    - RangeBound*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 917
    functionDepth: 2
    functionLinenumber: 917
    functionLinenumberEnd: 958
    functionName: get_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 0
    functionsReached:
    - FunctionCall2Coll
    - OidIsValid
    - isnan
    - DatumGetFloat8
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: float8 get_distance(TypeCacheEntry *typcache, const RangeBound *bound1,
      const RangeBound *bound2)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:978,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:984,1
    - Dst: length_hist_bsearch
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1026,1
    - Dst: get_len_position
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1038,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1039,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1040,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1061,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1093,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1093,1
    - Dst: get_len_position
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1096,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1097,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1098,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1113,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1113,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 46
    argCount: 5
    argNames:
    - length_hist_values
    - length_hist_nvalues
    - length1
    - length2
    - equal
    argTypes:
    - Datum*
    - int
    - double
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 965
    functionDepth: 2
    functionLinenumber: 965
    functionLinenumberEnd: 1119
    functionName: calc_length_hist_frac
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 0
    functionsReached:
    - length_hist_bsearch
    - Assert
    - isinf
    - get_len_position
    - DatumGetFloat8
    linkageType: ''
    returnType: double
    signature: "double calc_length_hist_frac(const Datum *length_hist_values, int
      length_hist_nvalues,\n\t\t\t\t\t  double length1, double length2, bool equal)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rbound_bsearch
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1150,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1168,1
    - Dst: get_position
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1175,1
    - Dst: range_cmp_bounds
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1204,1
    - Dst: get_distance
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1206,1
    - Dst: get_position
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1212,1
    - Dst: get_distance
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1219,1
    - Dst: calc_length_hist_frac
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1225,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 7
    argNames:
    - typcache
    - lower
    - upper
    - hist_lower
    - hist_nvalues
    - length_hist_values
    - length_hist_nvalues
    argTypes:
    - TypeCacheEntry*
    - RangeBound*
    - RangeBound*
    - RangeBound*
    - int
    - Datum*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1130
    functionDepth: 1
    functionLinenumber: 1130
    functionLinenumberEnd: 1243
    functionName: calc_hist_selectivity_contained
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - rbound_bsearch
    - calc_length_hist_frac
    - get_distance
    - range_cmp_bounds
    - Min
    - get_position
    linkageType: ''
    returnType: double
    signature: "double calc_hist_selectivity_contained(TypeCacheEntry *typcache,\n\t\t\t\t\t\t\t\tconst
      RangeBound *lower, RangeBound *upper,\n\t\t\t\t\t\t\t\tconst RangeBound *hist_lower,
      int hist_nvalues,\n\t\t\t\t\t\t\t\tconst Datum *length_hist_values, int length_hist_nvalues)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbound_bsearch
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1265,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1283,1
    - Dst: get_position
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1290,1
    - Dst: get_distance
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1305,1
    - Dst: get_distance
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1318,1
    - Dst: calc_length_hist_frac
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:1325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 7
    argNames:
    - typcache
    - lower
    - upper
    - hist_lower
    - hist_nvalues
    - length_hist_values
    - length_hist_nvalues
    argTypes:
    - TypeCacheEntry*
    - RangeBound*
    - RangeBound*
    - RangeBound*
    - int
    - Datum*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1251
    functionDepth: 0
    functionLinenumber: 1251
    functionLinenumberEnd: 1336
    functionName: calc_hist_selectivity_contains
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - rbound_bsearch
    - calc_length_hist_frac
    - get_distance
    - Min
    - get_position
    linkageType: ''
    returnType: double
    signature: "double calc_hist_selectivity_contains(TypeCacheEntry *typcache,\n\t\t\t\t\t\t\t
      \  const RangeBound *lower, const RangeBound *upper,\n\t\t\t\t\t\t\t   const
      RangeBound *hist_lower, int hist_nvalues,\n\t\t\t\t\t\t\t   const Datum *length_hist_values,
      int length_hist_nvalues)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: compareDoubles
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int compareDoubles(const void *a, const void *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - centroid
    - inBox
    argTypes:
    - BOX*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 147
    functionName: getQuadrant
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint8
    signature: uint8 getQuadrant(BOX *centroid, BOX *inBox)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 168
    functionName: getRangeBox
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - palloc_object
    linkageType: ''
    returnType: RangeBox
    signature: 'RangeBox *

      getRangeBox(BOX *box)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:179,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 195
    functionName: initRectBox
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - get_float8_infinity
    - palloc_object
    linkageType: ''
    returnType: RectBox
    signature: 'RectBox *

      initRectBox(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:207,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:209,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - rect_box
    - centroid
    - quadrant
    argTypes:
    - RectBox*
    - RangeBox*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 232
    functionName: nextRectBox
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc_object
    linkageType: ''
    returnType: RectBox
    signature: 'RectBox *

      nextRectBox(RectBox *rect_box, RangeBox *centroid, uint8 quadrant)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:238,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - range_box
    - query
    argTypes:
    - RangeBox*
    - Range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 240
    functionName: overlap2D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - FPle
    - FPge
    linkageType: ''
    returnType: bool
    signature: bool overlap2D(RangeBox *range_box, Range *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: overlap2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:246,1
    - Dst: overlap2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 248
    functionName: overlap4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - overlap2D
    linkageType: ''
    returnType: bool
    signature: bool overlap4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:254,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - range_box
    - query
    argTypes:
    - RangeBox*
    - Range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 256
    functionName: contain2D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - FPle
    - FPge
    linkageType: ''
    returnType: bool
    signature: bool contain2D(RangeBox *range_box, Range *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contain2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:262,1
    - Dst: contain2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 264
    functionName: contain4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - contain2D
    linkageType: ''
    returnType: bool
    signature: bool contain4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:270,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:271,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:272,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - range_box
    - query
    argTypes:
    - RangeBox*
    - Range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 274
    functionName: contained2D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - FPle
    - FPge
    linkageType: ''
    returnType: bool
    signature: bool contained2D(RangeBox *range_box, Range *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: contained2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:280,1
    - Dst: contained2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 282
    functionName: contained4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - contained2D
    linkageType: ''
    returnType: bool
    signature: bool contained4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:288,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - range_box
    - query
    argTypes:
    - RangeBox*
    - Range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 290
    functionName: lower2D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - FPlt
    linkageType: ''
    returnType: bool
    signature: bool lower2D(RangeBox *range_box, Range *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:296,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - range_box
    - query
    argTypes:
    - RangeBox*
    - Range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 298
    functionName: overLower2D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - FPle
    linkageType: ''
    returnType: bool
    signature: bool overLower2D(RangeBox *range_box, Range *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:304,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - range_box
    - query
    argTypes:
    - RangeBox*
    - Range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 306
    functionName: higher2D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - FPgt
    linkageType: ''
    returnType: bool
    signature: bool higher2D(RangeBox *range_box, Range *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:312,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - range_box
    - query
    argTypes:
    - RangeBox*
    - Range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 314
    functionName: overHigher2D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - FPge
    linkageType: ''
    returnType: bool
    signature: bool overHigher2D(RangeBox *range_box, Range *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lower2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 321
    functionName: left4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - lower2D
    linkageType: ''
    returnType: bool
    signature: bool left4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: overLower2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 328
    functionName: overLeft4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - overLower2D
    linkageType: ''
    returnType: bool
    signature: bool overLeft4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: higher2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 331
    functionDepth: 2
    functionLinenumber: 331
    functionLinenumberEnd: 335
    functionName: right4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - higher2D
    linkageType: ''
    returnType: bool
    signature: bool right4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: overHigher2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 338
    functionDepth: 2
    functionLinenumber: 338
    functionLinenumberEnd: 342
    functionName: overRight4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - overHigher2D
    linkageType: ''
    returnType: bool
    signature: bool overRight4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lower2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 349
    functionName: below4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - lower2D
    linkageType: ''
    returnType: bool
    signature: bool below4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: overLower2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 356
    functionName: overBelow4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - overLower2D
    linkageType: ''
    returnType: bool
    signature: bool overBelow4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: higher2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 359
    functionDepth: 2
    functionLinenumber: 359
    functionLinenumberEnd: 363
    functionName: above4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - higher2D
    linkageType: ''
    returnType: bool
    signature: bool above4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: overHigher2D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rect_box
    - query
    argTypes:
    - RectBox*
    - RangeBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 370
    functionName: overAbove4D
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - overHigher2D
    linkageType: ''
    returnType: bool
    signature: bool overAbove4D(RectBox *rect_box, RangeBox *query)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hypot
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:393,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - point
    - rect_box
    argTypes:
    - Point*
    - RectBox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 394
    functionName: pointToRectBoxDistance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - hypot
    linkageType: ''
    returnType: double
    signature: double pointToRectBoxDistance(Point *point, RectBox *rect_box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:403,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 411
    functionName: spg_box_quad_config
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum spg_box_quad_config(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:419,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:420,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:421,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:422,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:425,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:429,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 416
    functionDepth: 2
    functionLinenumber: 416
    functionLinenumberEnd: 432
    functionName: spg_box_quad_choose
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - DatumGetBoxP
    - getQuadrant
    - BoxPGetDatum
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum spg_box_quad_choose(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:443,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:444,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:448,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:449,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:450,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:451,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:456,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:464,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:465,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:466,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:467,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:471,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:480,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:485,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:486,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:494,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:495,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:497,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 440
    functionDepth: 2
    functionLinenumber: 440
    functionLinenumberEnd: 502
    functionName: spg_box_quad_picksplit
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - qsort
    - PG_RETURN_VOID
    - DatumGetBoxP
    - palloc_array
    - getQuadrant
    - BoxPGetDatum
    - palloc_object
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum spg_box_quad_picksplit(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - strategy
    argTypes:
    - StrategyNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 525
    functionName: is_bounding_box_test_exact
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_bounding_box_test_exact(StrategyNumber strategy)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:536,1
    - Dst: is_bounding_box_test_exact
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:539,1
    - Dst: DatumGetPolygonP
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:541,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:544,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - sk
    - recheck
    argTypes:
    - ScanKey
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 530
    functionDepth: 2
    functionLinenumber: 530
    functionLinenumberEnd: 547
    functionName: spg_box_quad_get_scankey_bbox
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - elog
    - DatumGetPolygonP
    - DatumGetBoxP
    - is_bounding_box_test_exact
    linkageType: ''
    returnType: BOX
    signature: 'BOX *

      spg_box_quad_get_scankey_bbox(ScanKey sk, bool *recheck)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:555,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:556,1
    - Dst: initRectBox
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:571,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:577,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:583,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:588,1
    - Dst: pointToRectBoxDistance
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:590,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:593,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:598,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:599,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:604,1
    - Dst: getRangeBox
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:611,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:611,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:612,1
    - Dst: spg_box_quad_get_scankey_bbox
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:615,1
    - Dst: getRangeBox
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:617,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:622,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:623,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:625,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:632,1
    - Dst: nextRectBox
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:636,1
    - Dst: overlap4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:646,1
    - Dst: contain4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:650,1
    - Dst: contained4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:655,1
    - Dst: left4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:659,1
    - Dst: overLeft4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:663,1
    - Dst: right4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:667,1
    - Dst: overRight4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:671,1
    - Dst: above4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:675,1
    - Dst: overAbove4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:679,1
    - Dst: below4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:683,1
    - Dst: overBelow4D
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:687,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:691,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:706,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:713,1
    - Dst: pointToRectBoxDistance
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:715,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:727,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:732,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:734,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 552
    functionDepth: 3
    functionLinenumber: 552
    functionLinenumberEnd: 735
    functionName: spg_box_quad_inner_consistent
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - left4D
    - PG_RETURN_VOID
    - above4D
    - overlap4D
    - palloc_array
    - overAbove4D
    - nextRectBox
    - overRight4D
    - contain4D
    - elog
    - memcpy
    - initRectBox
    - pfree
    - contained4D
    - below4D
    - PG_GETARG_POINTER
    - overBelow4D
    - overLeft4D
    - spg_box_quad_get_scankey_bbox
    - getRangeBox
    - pointToRectBoxDistance
    - DatumGetBoxP
    - right4D
    - MemoryContextSwitchTo
    - DatumGetPointP
    linkageType: ''
    returnType: Datum
    signature: Datum spg_box_quad_inner_consistent(PG_FUNCTION_ARGS)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:743,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:744,1
    - Dst: spg_box_quad_get_scankey_bbox
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:764,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:766,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:771,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:771,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:776,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:776,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:781,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:781,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:786,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:786,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:791,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:791,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:796,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:796,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:801,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:801,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:806,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:806,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:811,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:811,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:816,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:816,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:821,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:821,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:826,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:826,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:831,1
    - Dst: spg_key_orderbys_distances
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:843,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:850,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 740
    functionDepth: 3
    functionLinenumber: 740
    functionLinenumberEnd: 851
    functionName: spg_box_quad_leaf_consistent
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - elog
    - spg_key_orderbys_distances
    - BoxPGetDatum
    - spg_box_quad_get_scankey_bbox
    - PG_RETURN_BOOL
    - DirectFunctionCall2
    - PG_GETARG_POINTER
    - DatumGetBool
    linkageType: ''
    returnType: Datum
    signature: Datum spg_box_quad_leaf_consistent(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:861,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 858
    functionDepth: 1
    functionLinenumber: 858
    functionLinenumberEnd: 870
    functionName: spg_bbox_quad_config
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum spg_bbox_quad_config(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:878,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:881,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 875
    functionDepth: 1
    functionLinenumber: 875
    functionLinenumberEnd: 885
    functionName: spg_poly_quad_compress
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_spgist.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_RETURN_BOX_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum spg_poly_quad_compress(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8in_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:199,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - num
    - x
    - endptr_p
    - type_name
    - orig_string
    - escontext
    argTypes:
    - char*
    - float8*
    - char**
    - char*
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 201
    functionName: single_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - float8in_internal
    linkageType: ''
    returnType: bool
    signature: "bool single_decode(char *num, float8 *x, char **endptr_p,\n\t\t\t
      \ const char *type_name, const char *orig_string,\n\t\t\t  Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:206,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:208,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - x
    - str
    argTypes:
    - float8
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: single_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pfree
    - float8out_internal
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void single_encode(float8 x, StringInfo str)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:219,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:224,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:230,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:237,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:251,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 7
    argNames:
    - str
    - x
    - y
    - endptr_p
    - type_name
    - orig_string
    - escontext
    argTypes:
    - char*
    - float8*
    - float8*
    - char**
    - char*
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 253
    functionName: pair_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - single_decode
    - errcode
    - isspace
    - errmsg
    - ereturn
    linkageType: ''
    returnType: bool
    signature: "bool pair_decode(char *str, float8 *x, float8 *y, char **endptr_p,\n\t\t\tconst
      char *type_name, const char *orig_string,\n\t\t\tNode *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:258,1
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:259,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:261,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:262,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - x
    - y
    - str
    argTypes:
    - float8
    - float8
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 264
    functionName: pair_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pfree
    - appendStringInfo
    - float8out_internal
    linkageType: ''
    returnType: void
    signature: void pair_encode(float8 x, float8 y, StringInfo str)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:276,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:289,1
    - Dst: strrchr
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:296,1
    - Dst: pair_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:305,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:319,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:334,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:335,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:336,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 49
    argCount: 9
    argNames:
    - str
    - opentype
    - npts
    - p
    - isopen
    - endptr_p
    - type_name
    - orig_string
    - escontext
    argTypes:
    - char*
    - bool
    - int
    - Point*
    - bool*
    - char**
    - char*
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 338
    functionName: path_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errcode
    - pair_decode
    - strrchr
    - isspace
    - errmsg
    - ereturn
    linkageType: ''
    returnType: bool
    signature: "bool path_decode(char *str, bool opentype, int npts, Point *p,\n\t\t\tbool
      *isopen, char **endptr_p,\n\t\t\tconst char *type_name, const char *orig_string,\n\t\t\tNode
      *escontext)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:346,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:351,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:354,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:363,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:364,1
    - Dst: pair_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:365,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:366,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:373,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:376,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - path_delim
    - npts
    - pt
    argTypes:
    - enum path_delim
    - int
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 340
    functionDepth: 3
    functionLinenumber: 340
    functionLinenumberEnd: 383
    functionName: path_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - initStringInfo
    - appendStringInfoChar
    - pair_encode
    linkageType: ''
    returnType: char
    signature: 'char *

      path_encode(enum path_delim path_delim, int npts, Point *pt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - s
    - delim
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 403
    functionName: pair_count
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: int
    signature: int pair_count(char *s, char delim)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:426,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:428,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:433,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:435,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:438,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:444,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:451,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 423
    functionDepth: 4
    functionLinenumber: 423
    functionLinenumberEnd: 452
    functionName: box_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - path_decode
    - PG_GETARG_CSTRING
    - float8_lt
    - PG_RETURN_BOX_P
    - palloc_object
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum box_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:460,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:462,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 457
    functionDepth: 4
    functionLinenumber: 457
    functionLinenumberEnd: 463
    functionName: box_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - path_encode
    - PG_RETURN_CSTRING
    - PG_GETARG_BOX_P
    linkageType: ''
    returnType: Datum
    signature: Datum box_out(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:471,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:476,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:478,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:479,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:480,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:481,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:484,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:490,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 468
    functionDepth: 3
    functionLinenumber: 468
    functionLinenumberEnd: 498
    functionName: box_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_getmsgfloat8
    - PG_RETURN_BOX_P
    - float8_lt
    - palloc_object
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum box_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:506,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:509,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:510,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:511,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:512,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:513,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:514,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 503
    functionDepth: 4
    functionLinenumber: 503
    functionLinenumberEnd: 515
    functionName: box_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_BOX_P
    - pq_sendfloat8
    linkageType: ''
    returnType: Datum
    signature: Datum box_send(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:524,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - result
    - pt1
    - pt2
    argTypes:
    - BOX*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 544
    functionName: box_construct
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_gt
    linkageType: ''
    returnType: void
    signature: void box_construct(BOX *result, Point *pt1, Point *pt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:558,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:559,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:561,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:561,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 563
    functionName: box_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_eq_point
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_same(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:571,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:572,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:574,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 568
    functionDepth: 1
    functionLinenumber: 568
    functionLinenumberEnd: 575
    functionName: box_overlap
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_ov
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_overlap(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:580,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:581,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:582,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - box1
    - box2
    argTypes:
    - BOX*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 584
    functionName: box_ov
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - FPle
    linkageType: ''
    returnType: bool
    signature: bool box_ov(BOX *box1, BOX *box2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:592,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:593,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:595,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 589
    functionDepth: 1
    functionLinenumber: 589
    functionLinenumberEnd: 596
    functionName: box_left
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_left(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:608,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:609,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:611,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 612
    functionName: box_overleft
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_overleft(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:620,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:621,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:623,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 624
    functionName: box_right
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPgt
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_right(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:636,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:637,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:639,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 640
    functionName: box_overright
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPge
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_overright(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:648,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:649,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:651,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 652
    functionName: box_below
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_below(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:661,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:662,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:664,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 665
    functionName: box_overbelow
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_overbelow(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:673,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:674,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:676,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 670
    functionDepth: 1
    functionLinenumber: 670
    functionLinenumberEnd: 677
    functionName: box_above
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPgt
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_above(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:686,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:687,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:689,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 690
    functionName: box_overabove
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPge
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_overabove(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:698,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:699,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:701,1
    - Dst: box_contain_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 702
    functionName: box_contained
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_contain_box
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_contained(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:710,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:711,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:713,1
    - Dst: box_contain_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 714
    functionName: box_contain
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_contain_box
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_contain(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:722,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:723,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:724,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:725,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - contains_box
    - contained_box
    argTypes:
    - BOX*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 726
    functionName: box_contain_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - FPle
    - FPge
    linkageType: ''
    returnType: bool
    signature: bool box_contain_box(BOX *contains_box, BOX *contained_box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:741,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:742,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:744,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 745
    functionName: box_below_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_below_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:750,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:751,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:753,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 747
    functionDepth: 1
    functionLinenumber: 747
    functionLinenumberEnd: 754
    functionName: box_above_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPge
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_above_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:764,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:765,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:767,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:767,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:767,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 761
    functionDepth: 1
    functionLinenumber: 761
    functionLinenumberEnd: 768
    functionName: box_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - box_ar
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:773,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:774,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:776,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:776,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:776,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 777
    functionName: box_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPgt
    - box_ar
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:782,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:783,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:785,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:785,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:785,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 786
    functionName: box_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPeq
    - box_ar
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:791,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:792,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:794,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:794,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:794,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 795
    functionName: box_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - box_ar
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:800,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:801,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:803,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:803,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:803,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 804
    functionName: box_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPge
    - box_ar
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:817,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:819,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 814
    functionDepth: 1
    functionLinenumber: 814
    functionLinenumberEnd: 820
    functionName: box_area
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - box_ar
    - PG_GETARG_BOX_P
    linkageType: ''
    returnType: Datum
    signature: Datum box_area(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:830,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:832,1
    - Dst: box_wd
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 827
    functionDepth: 1
    functionLinenumber: 827
    functionLinenumberEnd: 833
    functionName: box_width
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - box_wd
    - PG_GETARG_BOX_P
    linkageType: ''
    returnType: Datum
    signature: Datum box_width(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:843,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:845,1
    - Dst: box_ht
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 846
    functionName: box_height
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - box_ht
    - PG_GETARG_BOX_P
    linkageType: ''
    returnType: Datum
    signature: Datum box_height(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:856,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:857,1
    - Dst: box_cn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:861,1
    - Dst: box_cn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:862,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:864,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 853
    functionDepth: 1
    functionLinenumber: 853
    functionLinenumberEnd: 865
    functionName: box_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 4
    functionsReached:
    - PG_RETURN_FLOAT8
    - point_dt
    - PG_GETARG_BOX_P
    - box_cn
    linkageType: ''
    returnType: Datum
    signature: Datum box_distance(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:874,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:875,1
    - Dst: box_cn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:877,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:878,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:879,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:881,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 871
    functionDepth: 1
    functionLinenumber: 871
    functionLinenumberEnd: 882
    functionName: box_center
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_GETARG_BOX_P
    - palloc_object
    - PG_RETURN_NULL
    - PG_RETURN_POINT_P
    - box_cn
    linkageType: ''
    returnType: Datum
    signature: Datum box_center(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:891,1
    - Dst: box_wd
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:891,1
    - Dst: box_ht
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 888
    functionDepth: 3
    functionLinenumber: 888
    functionLinenumberEnd: 892
    functionName: box_ar
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 6
    functionsReached:
    - box_ht
    - float8_mul
    - box_wd
    linkageType: ''
    returnType: float8
    signature: float8 box_ar(BOX *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:904,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:905,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:908,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:909,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:912,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:913,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:916,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:917,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - center
    - box
    - escontext
    argTypes:
    - Point*
    - BOX*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 898
    functionDepth: 2
    functionLinenumber: 898
    functionLinenumberEnd: 919
    functionName: box_cn
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - float8_div_safe
    - float8_pl_safe
    - SOFT_ERROR_OCCURRED
    linkageType: ''
    returnType: void
    signature: void box_cn(Point *center, BOX *box, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 925
    functionDepth: 3
    functionLinenumber: 925
    functionLinenumberEnd: 929
    functionName: box_wd
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - float8_mi
    linkageType: ''
    returnType: float8
    signature: float8 box_wd(BOX *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 936
    functionDepth: 3
    functionLinenumber: 936
    functionLinenumberEnd: 940
    functionName: box_ht
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - float8_mi
    linkageType: ''
    returnType: float8
    signature: float8 box_ht(BOX *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:955,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:956,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:959,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:960,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:962,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:964,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:965,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:966,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:967,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:969,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 952
    functionDepth: 3
    functionLinenumber: 952
    functionLinenumberEnd: 970
    functionName: box_intersect
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_min
    - box_ov
    - PG_GETARG_BOX_P
    - PG_RETURN_BOX_P
    - palloc_object
    - PG_RETURN_NULL
    - float8_max
    linkageType: ''
    returnType: Datum
    signature: Datum box_intersect(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:981,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:982,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:984,1
    - Dst: PG_RETURN_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 987
    functionName: box_diagonal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_LSEG_P
    - statlseg_construct
    - PG_GETARG_BOX_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum box_diagonal(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:999,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1003,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1007,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1011,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1018,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1019,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1020,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 4
    argNames:
    - s
    - str
    - line
    - escontext
    argTypes:
    - char*
    - char*
    - LINE*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 995
    functionDepth: 2
    functionLinenumber: 995
    functionLinenumberEnd: 1022
    functionName: line_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - single_decode
    - errcode
    - isspace
    - errmsg
    - ereturn
    linkageType: ''
    returnType: bool
    signature: bool line_decode(char *s, const char *str, LINE *line, Node *escontext)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1027,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1029,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1035,1
    - Dst: line_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1039,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1040,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1041,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1041,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1042,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1043,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1044,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1048,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1050,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1051,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1052,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1053,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1054,1
    - Dst: line_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1061,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1061,1
    - Dst: PG_RETURN_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1064,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1024
    functionDepth: 4
    functionLinenumber: 1024
    functionLinenumberEnd: 1065
    functionName: line_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - line_construct
    - PG_RETURN_LINE_P
    - point_eq_point
    - errcode
    - FPzero
    - PG_GETARG_CSTRING
    - path_decode
    - isspace
    - lseg_sl
    - errmsg
    - palloc_object
    - PG_RETURN_NULL
    - ereturn
    - line_decode
    linkageType: ''
    returnType: Datum
    signature: Datum line_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1071,1
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1072,1
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1073,1
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1074,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1076,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1068
    functionDepth: 2
    functionLinenumber: 1068
    functionLinenumberEnd: 1078
    functionName: line_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8out_internal
    - PG_GETARG_LINE_P
    - psprintf
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum line_out(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1086,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1089,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1091,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1092,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1093,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1095,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1095,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1096,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1097,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1098,1
    - Dst: PG_RETURN_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1083
    functionDepth: 3
    functionLinenumber: 1083
    functionLinenumberEnd: 1101
    functionName: line_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_LINE_P
    - errcode
    - ereport
    - pq_getmsgfloat8
    - errmsg
    - palloc_object
    - PG_GETARG_POINTER
    - FPzero
    linkageType: ''
    returnType: Datum
    signature: Datum line_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1109,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1112,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1113,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1114,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1115,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1116,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1106
    functionDepth: 4
    functionLinenumber: 1106
    functionLinenumberEnd: 1117
    functionName: line_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LINE_P
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendfloat8
    linkageType: ''
    returnType: Datum
    signature: Datum line_send(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1131,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1150,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - result
    - pt
    - m
    argTypes:
    - LINE*
    - Point*
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1128
    functionDepth: 3
    functionLinenumber: 1128
    functionLinenumberEnd: 1155
    functionName: line_construct
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - float8_mi
    - isinf
    - float8_mul
    linkageType: ''
    returnType: void
    signature: void line_construct(LINE *result, Point *pt, float8 m)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1164,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1165,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1166,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1169,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1171,1
    - Dst: line_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1173,1
    - Dst: point_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1173,1
    - Dst: PG_RETURN_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1161
    functionDepth: 4
    functionLinenumber: 1161
    functionLinenumberEnd: 1176
    functionName: line_construct_pp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - line_construct
    - PG_RETURN_LINE_P
    - errcode
    - point_sl
    - ereport
    - errmsg
    - PG_GETARG_POINT_P
    - palloc_object
    - point_eq_point
    linkageType: ''
    returnType: Datum
    signature: Datum line_construct_pp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1186,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1187,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1189,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1183
    functionDepth: 1
    functionLinenumber: 1183
    functionLinenumberEnd: 1190
    functionName: line_intersect
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - line_interpt_line
    - PG_GETARG_LINE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum line_intersect(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1195,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1196,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1198,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1192
    functionDepth: 1
    functionLinenumber: 1192
    functionLinenumberEnd: 1199
    functionName: line_parallel
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - line_interpt_line
    - PG_GETARG_LINE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum line_parallel(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1204,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1205,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1207,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1208,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1208,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1209,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1210,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1210,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1211,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1212,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1212,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1213,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1214,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1214,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1216,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1216,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1216,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1216,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1201
    functionDepth: 3
    functionLinenumber: 1201
    functionLinenumberEnd: 1218
    functionName: line_perp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LINE_P
    - float8_mul
    - float8_div
    - PG_RETURN_BOOL
    - FPeq
    - FPzero
    linkageType: ''
    returnType: Datum
    signature: Datum line_perp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1223,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1225,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1220
    functionDepth: 1
    functionLinenumber: 1220
    functionLinenumberEnd: 1226
    functionName: line_vertical
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - PG_GETARG_LINE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum line_vertical(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1231,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1233,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1234
    functionName: line_horizontal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - PG_GETARG_LINE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum line_horizontal(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1243,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1244,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1248,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1248,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1248,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1248,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1249,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1249,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1249,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1251,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1251,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1252,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1253,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1257,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1258,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1259,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1260,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1261,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1262,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1266,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1266,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1266,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1267,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1267,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1268,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1268,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1240
    functionDepth: 3
    functionLinenumber: 1240
    functionLinenumberEnd: 1269
    functionName: line_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LINE_P
    - float8_mul
    - unlikely
    - float8_div
    - PG_RETURN_BOOL
    - FPeq
    - isnan
    - FPzero
    - float8_eq
    linkageType: ''
    returnType: Datum
    signature: Datum line_eq(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1282,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1284,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1285,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - line
    argTypes:
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1279
    functionDepth: 3
    functionLinenumber: 1279
    functionLinenumberEnd: 1287
    functionName: line_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - float8_div
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: float8 line_sl(LINE *line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1296,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1297,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1298,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - line
    argTypes:
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1293
    functionDepth: 3
    functionLinenumber: 1293
    functionLinenumberEnd: 1301
    functionName: line_invsl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - float8_div
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: float8 line_invsl(LINE *line)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1311,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1312,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1315,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1316,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1318,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1318,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1318,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1318,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1319,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1320,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1320,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1320,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1320,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1321,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1325,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1325,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1325,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1325,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1326,1
    - Dst: hypot
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1327,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1308
    functionDepth: 3
    functionLinenumber: 1308
    functionLinenumberEnd: 1328
    functionName: line_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LINE_P
    - hypot
    - float8_mul
    - fabs
    - line_interpt_line
    - float8_mi
    - float8_div
    - PG_RETURN_FLOAT8
    - isnan
    - FPzero
    linkageType: ''
    returnType: Datum
    signature: Datum line_distance(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1337,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1338,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1341,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1343,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1344,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1334
    functionDepth: 1
    functionLinenumber: 1334
    functionLinenumberEnd: 1346
    functionName: line_interpt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LINE_P
    - line_interpt_line
    - palloc_object
    - PG_RETURN_NULL
    - PG_RETURN_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum line_interpt(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1368,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1370,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1370,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1370,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1373,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1373,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1373,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1374,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1375,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1375,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1376,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1377,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1377,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1377,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1379,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1381,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1381,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1381,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1384,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1384,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1384,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1385,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1386,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1386,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1387,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1388,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1388,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1388,1
    - Dst: point_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1400,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - result
    - l1
    - l2
    argTypes:
    - Point*
    - LINE*
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1362
    functionDepth: 3
    functionLinenumber: 1362
    functionLinenumberEnd: 1403
    functionName: line_interpt_line
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 4
    functionsReached:
    - float8_pl
    - float8_mul
    - float8_div
    - float8_mi
    - FPeq
    - FPzero
    - point_construct
    linkageType: ''
    returnType: bool
    signature: bool line_interpt_line(Point *result, LINE *l1, LINE *l2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1431,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1437,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1442,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1442,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1443,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1443,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1446,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1446,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1428
    functionDepth: 3
    functionLinenumber: 1428
    functionLinenumberEnd: 1447
    functionName: path_area
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - float8_mul
    - fabs
    - PG_RETURN_NULL
    - float8_mi
    - float8_div
    - PG_GETARG_PATH_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum path_area(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1453,1
    - Dst: pair_count
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1463,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1464,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1465,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1466,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1470,1
    - Dst: strrchr
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1474,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1485,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1486,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1487,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1489,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1491,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1494,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1496,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1501,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1502,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1503,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1505,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1509,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1510,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1511,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1518,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1450
    functionDepth: 4
    functionLinenumber: 1450
    functionLinenumberEnd: 1519
    functionName: path_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errcode
    - path_decode
    - PG_GETARG_CSTRING
    - isspace
    - strrchr
    - errmsg
    - SET_VARSIZE
    - palloc
    - PG_RETURN_NULL
    - ereturn
    - PG_RETURN_PATH_P
    - pair_count
    linkageType: ''
    returnType: Datum
    signature: Datum path_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1525,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1527,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1522
    functionDepth: 4
    functionLinenumber: 1522
    functionLinenumberEnd: 1528
    functionName: path_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - path_encode
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum path_out(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1539,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1546,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1547,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1549,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1550,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1551,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1554,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1556,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1564,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1565,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1568,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1536
    functionDepth: 3
    functionLinenumber: 1536
    functionLinenumberEnd: 1569
    functionName: path_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errcode
    - pq_getmsgint
    - ereport
    - pq_getmsgfloat8
    - errmsg
    - SET_VARSIZE
    - palloc
    - PG_GETARG_POINTER
    - PG_RETURN_PATH_P
    - pq_getmsgbyte
    linkageType: ''
    returnType: Datum
    signature: Datum path_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1577,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1581,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1582,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1583,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1586,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1587,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1589,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1574
    functionDepth: 4
    functionLinenumber: 1574
    functionLinenumberEnd: 1590
    functionName: path_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendfloat8
    - PG_GETARG_PATH_P
    - pq_sendbyte
    linkageType: ''
    returnType: Datum
    signature: Datum path_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1604,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1605,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1608
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1608
    functionName: path_n_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum path_n_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1613,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1614,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1610
    functionDepth: 1
    functionLinenumber: 1610
    functionLinenumberEnd: 1617
    functionName: path_n_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum path_n_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1622,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1623,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1619
    functionDepth: 1
    functionLinenumber: 1619
    functionLinenumberEnd: 1626
    functionName: path_n_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum path_n_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1631,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1632,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1628
    functionDepth: 1
    functionLinenumber: 1628
    functionLinenumberEnd: 1635
    functionName: path_n_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum path_n_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1640,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1641,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1637
    functionDepth: 1
    functionLinenumber: 1637
    functionLinenumberEnd: 1644
    functionName: path_n_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum path_n_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1653,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1650
    functionDepth: 1
    functionLinenumber: 1650
    functionLinenumberEnd: 1656
    functionName: path_isclosed
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum path_isclosed(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1661,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1664
    functionName: path_isopen
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum path_isopen(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1669,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1672
      start: 1666
    functionDepth: 1
    functionLinenumber: 1666
    functionLinenumberEnd: 1672
    functionName: path_npoints
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum path_npoints(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1678,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1675
    functionDepth: 1
    functionLinenumber: 1675
    functionLinenumberEnd: 1683
    functionName: path_close
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_PATH_P
    - PG_GETARG_PATH_P_COPY
    linkageType: ''
    returnType: Datum
    signature: Datum path_close(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1688,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1692,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1685
    functionDepth: 1
    functionLinenumber: 1685
    functionLinenumberEnd: 1693
    functionName: path_open
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_PATH_P
    - PG_GETARG_PATH_P_COPY
    linkageType: ''
    returnType: Datum
    signature: Datum path_open(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1705,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1706,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1714,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1720,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1721,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1722,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1723,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1729,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1730,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1731,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1732,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1734,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1735,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1764,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1765,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1766,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1767,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1772,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1702
    functionDepth: 3
    functionLinenumber: 1702
    functionLinenumberEnd: 1773
    functionName: path_inter
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - lseg_interpt_lseg
    - float8_min
    - Assert
    - box_ov
    - statlseg_construct
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    - float8_max
    linkageType: ''
    returnType: Datum
    signature: Datum path_inter(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1783,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1784,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1819,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1820,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1822,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1823,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1832,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1834,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1835
      start: 1780
    functionDepth: 2
    functionLinenumber: 1780
    functionLinenumberEnd: 1835
    functionName: path_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - statlseg_construct
    - lseg_closept_lseg
    - PG_RETURN_NULL
    - float8_lt
    - PG_GETARG_PATH_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum path_distance(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1845,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1862,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1862,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1865,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1866
      start: 1842
    functionDepth: 3
    functionLinenumber: 1842
    functionLinenumberEnd: 1866
    functionName: path_length
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_FLOAT8
    - point_dt
    - float8_pl
    linkageType: ''
    returnType: Datum
    signature: Datum path_length(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1884,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1885,1
    - Dst: pair_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1888,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1881
    functionDepth: 3
    functionLinenumber: 1881
    functionLinenumberEnd: 1890
    functionName: point_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_POINT_P
    - pair_decode
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum point_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1895,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1897,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1898
      start: 1892
    functionDepth: 4
    functionLinenumber: 1892
    functionLinenumberEnd: 1898
    functionName: point_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - path_encode
    - PG_RETURN_CSTRING
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum point_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1906,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1909,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1910,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1911,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1903
    functionDepth: 3
    functionLinenumber: 1903
    functionLinenumberEnd: 1913
    functionName: point_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - PG_GETARG_POINTER
    - pq_getmsgfloat8
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum point_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1921,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1924,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1925,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1926,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1927,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1928
      start: 1918
    functionDepth: 4
    functionLinenumber: 1918
    functionLinenumberEnd: 1928
    functionName: point_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendfloat8
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum point_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - result
    - x
    - y
    argTypes:
    - Point*
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1934
    functionDepth: 0
    functionLinenumber: 1934
    functionLinenumberEnd: 1939
    functionName: point_construct
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void point_construct(Point *result, float8 x, float8 y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1954,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1955,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1957,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1951
    functionDepth: 1
    functionLinenumber: 1951
    functionLinenumberEnd: 1958
    functionName: point_left
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum point_left(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1963,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1964,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1966,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1967
      start: 1960
    functionDepth: 1
    functionLinenumber: 1960
    functionLinenumberEnd: 1967
    functionName: point_right
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPgt
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum point_right(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1972,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1973,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1975,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1976
      start: 1969
    functionDepth: 1
    functionLinenumber: 1969
    functionLinenumberEnd: 1976
    functionName: point_above
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPgt
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum point_above(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1981,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1982,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1984,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1978
    functionDepth: 1
    functionLinenumber: 1978
    functionLinenumberEnd: 1985
    functionName: point_below
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum point_below(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1990,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1991,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1993,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1987
    functionDepth: 1
    functionLinenumber: 1987
    functionLinenumberEnd: 1994
    functionName: point_vert
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPeq
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum point_vert(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1999,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2000,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2002,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1996
    functionDepth: 1
    functionLinenumber: 1996
    functionLinenumberEnd: 2003
    functionName: point_horiz
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPeq
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum point_horiz(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2008,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2009,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2011,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2012
      start: 2005
    functionDepth: 1
    functionLinenumber: 2005
    functionLinenumberEnd: 2012
    functionName: point_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_eq_point
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum point_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2017,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2018,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2020,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2021
      start: 2014
    functionDepth: 1
    functionLinenumber: 2014
    functionLinenumberEnd: 2021
    functionName: point_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_eq_point
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum point_ne(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2031,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2031,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2031,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2032,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2032,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2033,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2033,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2035,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2035,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 4
    argCount: 2
    argNames:
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2027
    functionDepth: 2
    functionLinenumber: 2027
    functionLinenumberEnd: 2036
    functionName: point_eq_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 5
    functionsReached:
    - FPeq
    - isnan
    - unlikely
    - float8_eq
    linkageType: ''
    returnType: bool
    signature: bool point_eq_point(Point *pt1, Point *pt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2046,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2047,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2049,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2049,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2050
      start: 2043
    functionDepth: 1
    functionLinenumber: 2043
    functionLinenumberEnd: 2050
    functionName: point_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - PG_RETURN_FLOAT8
    - point_dt
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum point_distance(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: float8_mi_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2058,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2059,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2059,1
    - Dst: float8_mi_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2062,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2063,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2063,1
    - Dst: hypot
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2066,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - pt1
    - pt2
    - escontext
    argTypes:
    - Point*
    - Point*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2052
    functionDepth: 2
    functionLinenumber: 2052
    functionLinenumberEnd: 2067
    functionName: point_dt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 3
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - unlikely
    - float8_mi_safe
    - hypot
    linkageType: ''
    returnType: float8
    signature: float8 point_dt(Point *pt1, Point *pt2, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2072,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2073,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2075,1
    - Dst: point_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2076
      start: 2069
    functionDepth: 1
    functionLinenumber: 2069
    functionLinenumberEnd: 2076
    functionName: point_slope
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - point_sl
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum point_slope(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2087,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2088,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2089,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2091,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2091,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2091,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2092
      start: 2084
    functionDepth: 3
    functionLinenumber: 2084
    functionLinenumberEnd: 2092
    functionName: point_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - float8_mi
    - FPeq
    - float8_div
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: float8 point_sl(Point *pt1, Point *pt2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2103,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2105,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2106,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2107,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2107,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2108
      start: 2100
    functionDepth: 3
    functionLinenumber: 2100
    functionLinenumberEnd: 2108
    functionName: point_invsl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - FPeq
    - float8_div
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: float8 point_invsl(Point *pt1, Point *pt2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2129,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2131,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2134,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2136,1
    - Dst: PG_RETURN_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2139
      start: 2126
    functionDepth: 4
    functionLinenumber: 2126
    functionLinenumberEnd: 2139
    functionName: lseg_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - path_decode
    - PG_GETARG_CSTRING
    - palloc_object
    - PG_RETURN_NULL
    - PG_RETURN_LSEG_P
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2145,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2147,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2148
      start: 2142
    functionDepth: 4
    functionLinenumber: 2142
    functionLinenumberEnd: 2148
    functionName: lseg_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - path_encode
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2156,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2159,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2161,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2162,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2163,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2164,1
    - Dst: PG_RETURN_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2153
    functionDepth: 3
    functionLinenumber: 2153
    functionLinenumberEnd: 2167
    functionName: lseg_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_LSEG_P
    - PG_GETARG_POINTER
    - pq_getmsgfloat8
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2175,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2178,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2179,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2180,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2181,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2182,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2183,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2184
      start: 2172
    functionDepth: 4
    functionLinenumber: 2172
    functionLinenumberEnd: 2184
    functionName: lseg_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendfloat8
    - PG_GETARG_LSEG_P
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2194,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2195,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2196,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2198,1
    - Dst: PG_RETURN_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2201
      start: 2191
    functionDepth: 1
    functionLinenumber: 2191
    functionLinenumberEnd: 2201
    functionName: lseg_construct
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 5
    functionsReached:
    - PG_RETURN_LSEG_P
    - statlseg_construct
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_construct(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - lseg
    - pt1
    - pt2
    argTypes:
    - LSEG*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2211
      start: 2204
    functionDepth: 0
    functionLinenumber: 2204
    functionLinenumberEnd: 2211
    functionName: statlseg_construct
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void statlseg_construct(LSEG *lseg, Point *pt1, Point *pt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: point_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lseg
    argTypes:
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2221
      start: 2217
    functionDepth: 4
    functionLinenumber: 2217
    functionLinenumberEnd: 2221
    functionName: lseg_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - point_sl
    linkageType: ''
    returnType: float8
    signature: float8 lseg_sl(LSEG *lseg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: point_invsl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lseg
    argTypes:
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2227
    functionDepth: 4
    functionLinenumber: 2227
    functionLinenumberEnd: 2231
    functionName: lseg_invsl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_invsl
    linkageType: ''
    returnType: float8
    signature: float8 lseg_invsl(LSEG *lseg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2237,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2239,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2234
    functionDepth: 3
    functionLinenumber: 2234
    functionLinenumberEnd: 2240
    functionName: lseg_length
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - point_dt
    - PG_GETARG_LSEG_P
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_length(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2253,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2254,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2256,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2257
      start: 2250
    functionDepth: 1
    functionLinenumber: 2250
    functionLinenumberEnd: 2257
    functionName: lseg_intersect
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - lseg_interpt_lseg
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_intersect(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2263,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2264,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2266,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2266,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2266,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2260
    functionDepth: 5
    functionLinenumber: 2260
    functionLinenumberEnd: 2267
    functionName: lseg_parallel
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPeq
    - PG_GETARG_LSEG_P
    - lseg_sl
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_parallel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2275,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2276,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2278,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2278,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2278,1
    - Dst: lseg_invsl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2279
      start: 2272
    functionDepth: 5
    functionLinenumber: 2272
    functionLinenumberEnd: 2279
    functionName: lseg_perp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - lseg_invsl
    - lseg_sl
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - FPeq
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_perp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2284,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2286,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2287
      start: 2281
    functionDepth: 1
    functionLinenumber: 2281
    functionLinenumberEnd: 2287
    functionName: lseg_vertical
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPeq
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_vertical(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2292,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2294,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2295
      start: 2289
    functionDepth: 1
    functionLinenumber: 2289
    functionLinenumberEnd: 2295
    functionName: lseg_horizontal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPeq
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_horizontal(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2301,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2302,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2304,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2304,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2306
      start: 2298
    functionDepth: 3
    functionLinenumber: 2298
    functionLinenumberEnd: 2306
    functionName: lseg_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_eq_point
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2311,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2312,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2314,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2314,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2316
      start: 2308
    functionDepth: 3
    functionLinenumber: 2308
    functionLinenumberEnd: 2316
    functionName: lseg_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_eq_point
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2321,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2322,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2324,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2324,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2324,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2326
      start: 2318
    functionDepth: 3
    functionLinenumber: 2318
    functionLinenumberEnd: 2326
    functionName: lseg_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - PG_GETARG_LSEG_P
    - FPlt
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2331,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2332,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2334,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2334,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2334,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2336
      start: 2328
    functionDepth: 3
    functionLinenumber: 2328
    functionLinenumberEnd: 2336
    functionName: lseg_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - point_dt
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2341,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2342,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2344,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2344,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2344,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2346
      start: 2338
    functionDepth: 3
    functionLinenumber: 2338
    functionLinenumberEnd: 2346
    functionName: lseg_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - PG_GETARG_LSEG_P
    - FPgt
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2351,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2352,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2354,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2354,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2354,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2348
    functionDepth: 3
    functionLinenumber: 2348
    functionLinenumberEnd: 2356
    functionName: lseg_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - FPge
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2372,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2373,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2375,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2369
    functionDepth: 1
    functionLinenumber: 2369
    functionLinenumberEnd: 2376
    functionName: lseg_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_LSEG_P
    - lseg_closept_lseg
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_distance(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2382,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2387,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2389,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2390,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2393,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2394,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2397,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2398,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2401,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2402,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2405,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2408,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2409
      start: 2379
    functionDepth: 2
    functionLinenumber: 2379
    functionLinenumberEnd: 2409
    functionName: lseg_center
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - float8_div_safe
    - float8_pl_safe
    - PG_GETARG_LSEG_P
    - palloc_object
    - PG_RETURN_NULL
    - PG_RETURN_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_center(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: line_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2425,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2425,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2426,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - result
    - l1
    - l2
    argTypes:
    - Point*
    - LSEG*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2440
      start: 2419
    functionDepth: 5
    functionLinenumber: 2419
    functionLinenumberEnd: 2440
    functionName: lseg_interpt_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - lseg_interpt_line
    - lseg_sl
    - line_construct
    - lseg_contain_point
    linkageType: ''
    returnType: bool
    signature: bool lseg_interpt_lseg(Point *result, LSEG *l1, LSEG *l2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2445,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2446,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2449,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2451,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2452,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2454
      start: 2442
    functionDepth: 6
    functionLinenumber: 2442
    functionLinenumberEnd: 2454
    functionName: lseg_interpt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_GETARG_LSEG_P
    - palloc_object
    - lseg_interpt_lseg
    - PG_RETURN_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_interpt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2474,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2475,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2477,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2478
      start: 2471
    functionDepth: 1
    functionLinenumber: 2471
    functionLinenumberEnd: 2478
    functionName: dist_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - line_closept_point
    - PG_GETARG_LINE_P
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum dist_pl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2486,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2487,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2489,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2490
      start: 2483
    functionDepth: 1
    functionLinenumber: 2483
    functionLinenumberEnd: 2490
    functionName: dist_lp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - line_closept_point
    - PG_GETARG_LINE_P
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum dist_lp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2498,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2499,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2501,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2502
      start: 2495
    functionDepth: 1
    functionLinenumber: 2495
    functionLinenumberEnd: 2502
    functionName: dist_ps
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_LSEG_P
    - PG_GETARG_POINT_P
    - lseg_closept_point
    linkageType: ''
    returnType: Datum
    signature: Datum dist_ps(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2510,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2511,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2513,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2514
      start: 2507
    functionDepth: 1
    functionLinenumber: 2507
    functionLinenumberEnd: 2514
    functionName: dist_sp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_LSEG_P
    - PG_GETARG_POINT_P
    - lseg_closept_point
    linkageType: ''
    returnType: Datum
    signature: Datum dist_sp(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2525,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2544,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2545,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2546,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - pt
    - path
    argTypes:
    - Point*
    - PATH*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2516
    functionDepth: 2
    functionLinenumber: 2516
    functionLinenumberEnd: 2554
    functionName: dist_ppath_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - Assert
    - statlseg_construct
    - float8_lt
    - lseg_closept_point
    linkageType: ''
    returnType: float8
    signature: float8 dist_ppath_internal(Point *pt, PATH *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2562,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2563,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2565,1
    - Dst: dist_ppath_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2566
      start: 2559
    functionDepth: 3
    functionLinenumber: 2559
    functionLinenumberEnd: 2566
    functionName: dist_ppath
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_FLOAT8
    - dist_ppath_internal
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum dist_ppath(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2574,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2575,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2577,1
    - Dst: dist_ppath_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2578
      start: 2571
    functionDepth: 3
    functionLinenumber: 2571
    functionLinenumberEnd: 2578
    functionName: dist_pathp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P
    - PG_RETURN_FLOAT8
    - dist_ppath_internal
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum dist_pathp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2586,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2587,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2589,1
    - Dst: box_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2590
      start: 2583
    functionDepth: 1
    functionLinenumber: 2583
    functionLinenumberEnd: 2590
    functionName: dist_pb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_BOX_P
    - PG_GETARG_POINT_P
    - box_closept_point
    linkageType: ''
    returnType: Datum
    signature: Datum dist_pb(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2598,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2599,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2601,1
    - Dst: box_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2602
      start: 2595
    functionDepth: 1
    functionLinenumber: 2595
    functionLinenumberEnd: 2602
    functionName: dist_bp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_POINT_P
    - PG_GETARG_BOX_P
    - box_closept_point
    linkageType: ''
    returnType: Datum
    signature: Datum dist_bp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2610,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2611,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2613,1
    - Dst: lseg_closept_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2614
      start: 2607
    functionDepth: 1
    functionLinenumber: 2607
    functionLinenumberEnd: 2614
    functionName: dist_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_LSEG_P
    - PG_GETARG_LINE_P
    - lseg_closept_line
    linkageType: ''
    returnType: Datum
    signature: Datum dist_sl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2622,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2623,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2625,1
    - Dst: lseg_closept_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2619
    functionDepth: 1
    functionLinenumber: 2619
    functionLinenumberEnd: 2626
    functionName: dist_ls
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_LSEG_P
    - PG_GETARG_LINE_P
    - lseg_closept_line
    linkageType: ''
    returnType: Datum
    signature: Datum dist_ls(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2634,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2635,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2637,1
    - Dst: box_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2638
      start: 2631
    functionDepth: 1
    functionLinenumber: 2631
    functionLinenumberEnd: 2638
    functionName: dist_sb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_LSEG_P
    - PG_GETARG_BOX_P
    - box_closept_lseg
    linkageType: ''
    returnType: Datum
    signature: Datum dist_sb(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2646,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2647,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2649,1
    - Dst: box_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2650
      start: 2643
    functionDepth: 1
    functionLinenumber: 2643
    functionLinenumberEnd: 2650
    functionName: dist_bs
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_LSEG_P
    - PG_GETARG_BOX_P
    - box_closept_lseg
    linkageType: ''
    returnType: Datum
    signature: Datum dist_bs(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2658,1
    - Dst: dist_ppoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2658,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - circle
    - poly
    argTypes:
    - CIRCLE*
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2652
    functionDepth: 3
    functionLinenumber: 2652
    functionLinenumberEnd: 2664
    functionName: dist_cpoly_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - dist_ppoly_internal
    linkageType: ''
    returnType: float8
    signature: float8 dist_cpoly_internal(CIRCLE *circle, POLYGON *poly)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2672,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2673,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2675,1
    - Dst: dist_cpoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2676
      start: 2669
    functionDepth: 4
    functionLinenumber: 2669
    functionLinenumberEnd: 2676
    functionName: dist_cpoly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_RETURN_FLOAT8
    - dist_cpoly_internal
    - PG_GETARG_CIRCLE_P
    linkageType: ''
    returnType: Datum
    signature: Datum dist_cpoly(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2684,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2685,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2687,1
    - Dst: dist_cpoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2688
      start: 2681
    functionDepth: 4
    functionLinenumber: 2681
    functionLinenumberEnd: 2688
    functionName: dist_polyc
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_RETURN_FLOAT8
    - dist_cpoly_internal
    - PG_GETARG_CIRCLE_P
    linkageType: ''
    returnType: Datum
    signature: Datum dist_polyc(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2696,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2697,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2699,1
    - Dst: dist_ppoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2700
      start: 2693
    functionDepth: 1
    functionLinenumber: 2693
    functionLinenumberEnd: 2700
    functionName: dist_ppoly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_RETURN_FLOAT8
    - dist_ppoly_internal
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum dist_ppoly(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2705,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2706,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2708,1
    - Dst: dist_ppoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2709
      start: 2702
    functionDepth: 1
    functionLinenumber: 2702
    functionLinenumberEnd: 2709
    functionName: dist_polyp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_RETURN_FLOAT8
    - dist_ppoly_internal
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum dist_polyp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2719,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2727,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2736,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2737,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - pt
    - poly
    argTypes:
    - Point*
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2742
      start: 2711
    functionDepth: 2
    functionLinenumber: 2711
    functionLinenumberEnd: 2742
    functionName: dist_ppoly_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 3
    functionsReached:
    - point_inside
    - float8_lt
    - lseg_closept_point
    linkageType: ''
    returnType: float8
    signature: float8 dist_ppoly_internal(Point *pt, POLYGON *poly)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: line_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2767,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2767,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2768,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2775,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2784,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2786,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - result
    - lseg
    - line
    argTypes:
    - Point*
    - LSEG*
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2793
      start: 2756
    functionDepth: 5
    functionLinenumber: 2756
    functionLinenumberEnd: 2793
    functionName: lseg_interpt_line
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - line_construct
    - point_eq_point
    - lseg_contain_point
    - line_interpt_line
    - lseg_sl
    linkageType: ''
    returnType: bool
    signature: bool lseg_interpt_line(Point *result, LSEG *lseg, LINE *line)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: line_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2816,1
    - Dst: line_invsl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2816,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2817,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2822,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2828,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - result
    - line
    - point
    argTypes:
    - Point*
    - LINE*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2829
      start: 2805
    functionDepth: 4
    functionLinenumber: 2805
    functionLinenumberEnd: 2829
    functionName: line_closept_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - line_construct
    - point_dt
    - line_interpt_line
    - line_invsl
    - get_float8_nan
    linkageType: ''
    returnType: float8
    signature: float8 line_closept_point(Point *result, LINE *line, Point *point)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2834,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2835,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2838,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2840,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2840,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2841,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2844
      start: 2831
    functionDepth: 5
    functionLinenumber: 2831
    functionLinenumberEnd: 2844
    functionName: close_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - PG_GETARG_LINE_P
    - line_closept_point
    - PG_GETARG_POINT_P
    - palloc_object
    - PG_RETURN_NULL
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum close_pl(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: line_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2863,1
    - Dst: point_invsl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2863,1
    - Dst: lseg_closept_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2864,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2869,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - result
    - lseg
    - pt
    argTypes:
    - Point*
    - LSEG*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2870
      start: 2853
    functionDepth: 4
    functionLinenumber: 2853
    functionLinenumberEnd: 2870
    functionName: lseg_closept_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 4
    functionsReached:
    - line_construct
    - lseg_closept_line
    - point_invsl
    - point_dt
    linkageType: ''
    returnType: float8
    signature: float8 lseg_closept_point(Point *result, LSEG *lseg, Point *pt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2875,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2876,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2879,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2881,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2881,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2882,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2884,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2885
      start: 2872
    functionDepth: 5
    functionLinenumber: 2872
    functionLinenumberEnd: 2885
    functionName: close_ps
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - lseg_closept_point
    - PG_GETARG_LSEG_P
    - PG_GETARG_POINT_P
    - palloc_object
    - PG_RETURN_NULL
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum close_ps(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2899,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2906,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2907,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2908,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2916,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2917,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2923,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2924,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - result
    - on_lseg
    - to_lseg
    argTypes:
    - Point*
    - LSEG*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2932
      start: 2891
    functionDepth: 6
    functionLinenumber: 2891
    functionLinenumberEnd: 2932
    functionName: lseg_closept_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - lseg_interpt_lseg
    - float8_lt
    - lseg_closept_point
    linkageType: ''
    returnType: float8
    signature: float8 lseg_closept_lseg(Point *result, LSEG *on_lseg, LSEG *to_lseg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2937,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2938,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2941,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2941,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2942,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2944,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2946,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2946,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2947,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2949,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2950
      start: 2934
    functionDepth: 7
    functionLinenumber: 2934
    functionLinenumberEnd: 2950
    functionName: close_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - lseg_closept_lseg
    - PG_GETARG_LSEG_P
    - palloc_object
    - PG_RETURN_NULL
    - lseg_sl
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum close_lseg(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2968,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2979,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2980,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2982,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2983,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2984,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2993,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2994,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2995,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3002,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3003,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3004,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - result
    - box
    - pt
    argTypes:
    - Point*
    - BOX*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3012
      start: 2959
    functionDepth: 5
    functionLinenumber: 2959
    functionLinenumberEnd: 3012
    functionName: box_closept_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - statlseg_construct
    - float8_lt
    - box_contain_point
    - lseg_closept_point
    linkageType: ''
    returnType: float8
    signature: float8 box_closept_point(Point *result, BOX *box, Point *pt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3017,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3018,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3021,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3023,1
    - Dst: box_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3023,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3024,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3026,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3027
      start: 3014
    functionDepth: 6
    functionLinenumber: 3014
    functionLinenumberEnd: 3027
    functionName: close_pb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - PG_GETARG_BOX_P
    - box_closept_point
    - PG_GETARG_POINT_P
    - palloc_object
    - PG_RETURN_NULL
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum close_pb(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3047,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3050,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3051,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - result
    - lseg
    - line
    argTypes:
    - Point*
    - LSEG*
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3067
      start: 3041
    functionDepth: 6
    functionLinenumber: 3041
    functionLinenumberEnd: 3067
    functionName: lseg_closept_line
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 3
    functionsReached:
    - lseg_interpt_line
    - line_closept_point
    linkageType: ''
    returnType: float8
    signature: float8 lseg_closept_line(Point *result, LSEG *lseg, LINE *line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3072,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3073,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3076,1
    - Dst: line_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3076,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3077,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3079,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3081,1
    - Dst: lseg_closept_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3081,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3082,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3084,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3085
      start: 3069
    functionDepth: 7
    functionLinenumber: 3069
    functionLinenumberEnd: 3085
    functionName: close_ls
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - PG_GETARG_LINE_P
    - line_sl
    - lseg_closept_line
    - PG_GETARG_LSEG_P
    - palloc_object
    - PG_RETURN_NULL
    - lseg_sl
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum close_ls(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: box_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3103,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3109,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3110,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3112,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3113,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3114,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3123,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3124,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3125,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3132,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3133,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3134,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - result
    - box
    - lseg
    argTypes:
    - Point*
    - BOX*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3142
      start: 3094
    functionDepth: 7
    functionLinenumber: 3094
    functionLinenumberEnd: 3142
    functionName: box_closept_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - statlseg_construct
    - box_interpt_lseg
    - float8_lt
    - lseg_closept_lseg
    linkageType: ''
    returnType: float8
    signature: float8 box_closept_lseg(Point *result, BOX *box, LSEG *lseg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3147,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3148,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3151,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3153,1
    - Dst: box_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3153,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3154,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3157
      start: 3144
    functionDepth: 8
    functionLinenumber: 3144
    functionLinenumberEnd: 3157
    functionName: close_sb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - PG_GETARG_BOX_P
    - box_closept_lseg
    - PG_GETARG_LSEG_P
    - palloc_object
    - PG_RETURN_NULL
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum close_sb(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3171,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3171,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3171,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3171,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - line
    - point
    argTypes:
    - LINE*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3174
      start: 3168
    functionDepth: 3
    functionLinenumber: 3168
    functionLinenumberEnd: 3174
    functionName: line_contain_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - float8_mul
    - float8_pl
    linkageType: ''
    returnType: bool
    signature: bool line_contain_point(LINE *line, Point *point)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3179,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3180,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3182,1
    - Dst: line_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3183
      start: 3176
    functionDepth: 4
    functionLinenumber: 3176
    functionLinenumberEnd: 3183
    functionName: on_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - line_contain_point
    - PG_GETARG_LINE_P
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum on_pl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3193,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3193,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3194,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lseg
    - pt
    argTypes:
    - LSEG*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3196
      start: 3190
    functionDepth: 3
    functionLinenumber: 3190
    functionLinenumberEnd: 3196
    functionName: lseg_contain_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - FPeq
    - point_dt
    linkageType: ''
    returnType: bool
    signature: bool lseg_contain_point(LSEG *lseg, Point *pt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3201,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3202,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3204,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3205
      start: 3198
    functionDepth: 4
    functionLinenumber: 3198
    functionLinenumberEnd: 3205
    functionName: on_ps
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - lseg_contain_point
    - PG_GETARG_LSEG_P
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum on_ps(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - box
    - point
    argTypes:
    - BOX*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3216
      start: 3211
    functionDepth: 0
    functionLinenumber: 3211
    functionLinenumberEnd: 3216
    functionName: box_contain_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool box_contain_point(BOX *box, Point *point)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3221,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3222,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3224,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3225
      start: 3218
    functionDepth: 1
    functionLinenumber: 3218
    functionLinenumberEnd: 3225
    functionName: on_pb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_contain_point
    - PG_GETARG_BOX_P
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum on_pb(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3230,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3231,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3233,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3234
      start: 3227
    functionDepth: 1
    functionLinenumber: 3227
    functionLinenumberEnd: 3234
    functionName: box_contain_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_contain_point
    - PG_GETARG_POINT_P
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum box_contain_pt(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3251,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3252,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3262,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3265,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3266,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3266,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3266,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3267,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3270,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3274,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3274,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3275
      start: 3248
    functionDepth: 3
    functionLinenumber: 3248
    functionLinenumberEnd: 3275
    functionName: on_ppath
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_inside
    - float8_pl
    - point_dt
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    - FPeq
    linkageType: ''
    returnType: Datum
    signature: Datum on_ppath(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3286,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3287,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3289,1
    - Dst: line_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3289,1
    - Dst: line_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3291
      start: 3283
    functionDepth: 4
    functionLinenumber: 3283
    functionLinenumberEnd: 3291
    functionName: on_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_GETARG_LINE_P
    - PG_RETURN_BOOL
    - line_contain_point
    linkageType: ''
    returnType: Datum
    signature: Datum on_sl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3302,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - box
    - lseg
    argTypes:
    - BOX*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3304
      start: 3299
    functionDepth: 1
    functionLinenumber: 3299
    functionLinenumberEnd: 3304
    functionName: box_contain_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_contain_point
    linkageType: ''
    returnType: bool
    signature: bool box_contain_lseg(BOX *box, LSEG *lseg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3309,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3310,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3312,1
    - Dst: box_contain_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3313
      start: 3306
    functionDepth: 2
    functionLinenumber: 3306
    functionLinenumberEnd: 3313
    functionName: on_sb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_contain_lseg
    - PG_GETARG_LSEG_P
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum on_sb(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3323,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3324,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3326,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3327
      start: 3320
    functionDepth: 6
    functionLinenumber: 3320
    functionLinenumberEnd: 3327
    functionName: inter_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - lseg_interpt_line
    - PG_GETARG_LSEG_P
    - PG_GETARG_LINE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum inter_sl(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3352,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3353,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3354,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3355,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3358,1
    - Dst: box_cn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3363,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3364,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3368,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3369,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3375,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3376,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3379,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3380,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3385,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3386,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3389,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3390,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - result
    - box
    - lseg
    argTypes:
    - Point*
    - BOX*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3395
      start: 3345
    functionDepth: 6
    functionLinenumber: 3345
    functionLinenumberEnd: 3395
    functionName: box_interpt_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - lseg_closept_point
    - float8_min
    - box_ov
    - statlseg_construct
    - box_contain_point
    - lseg_interpt_lseg
    - float8_max
    - box_cn
    linkageType: ''
    returnType: bool
    signature: bool box_interpt_lseg(Point *result, BOX *box, LSEG *lseg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3400,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3401,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3403,1
    - Dst: box_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3404
      start: 3397
    functionDepth: 7
    functionLinenumber: 3397
    functionLinenumberEnd: 3404
    functionName: inter_sb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_interpt_lseg
    - PG_GETARG_LSEG_P
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum inter_sb(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3414,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3415,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3425,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3426,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3427,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3430,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3431,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3432,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3435,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3436,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3437,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3440,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3441,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3442,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3445,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3446
      start: 3411
    functionDepth: 6
    functionLinenumber: 3411
    functionLinenumberEnd: 3446
    functionName: inter_lb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LINE_P
    - statlseg_construct
    - PG_GETARG_BOX_P
    - PG_RETURN_BOOL
    - lseg_interpt_line
    linkageType: ''
    returnType: Datum
    signature: Datum inter_lb(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3468,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3474,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3476,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3478,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3480,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - poly
    argTypes:
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3488
      start: 3459
    functionDepth: 2
    functionLinenumber: 3459
    functionLinenumberEnd: 3488
    functionName: make_bound_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - Assert
    - float8_gt
    - float8_lt
    linkageType: ''
    returnType: void
    signature: void make_bound_box(POLYGON *poly)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3501,1
    - Dst: pair_count
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3509,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3510,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3511,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3512,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3520,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3521,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3522,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3524,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3526,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3529,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3531,1
    - Dst: make_bound_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3533,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3535,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3536
      start: 3498
    functionDepth: 4
    functionLinenumber: 3498
    functionLinenumberEnd: 3536
    functionName: poly_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errcode
    - path_decode
    - PG_GETARG_CSTRING
    - PG_RETURN_POLYGON_P
    - palloc0
    - make_bound_box
    - errmsg
    - SET_VARSIZE
    - PG_RETURN_NULL
    - ereturn
    - pair_count
    linkageType: ''
    returnType: Datum
    signature: Datum poly_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3545,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3547,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3548
      start: 3542
    functionDepth: 4
    functionLinenumber: 3542
    functionLinenumberEnd: 3548
    functionName: poly_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - path_encode
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum poly_out(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3561,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3567,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3569,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3570,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3571,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3574,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3576,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3581,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3582,1
    - Dst: make_bound_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3585,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3588
      start: 3558
    functionDepth: 3
    functionLinenumber: 3558
    functionLinenumberEnd: 3588
    functionName: poly_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errcode
    - pq_getmsgint
    - palloc0
    - ereport
    - PG_RETURN_POLYGON_P
    - pq_getmsgfloat8
    - make_bound_box
    - errmsg
    - SET_VARSIZE
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum poly_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3596,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3600,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3601,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3604,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3605,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3607,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3607,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3608
      start: 3593
    functionDepth: 4
    functionLinenumber: 3593
    functionLinenumberEnd: 3608
    functionName: poly_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_POLYGON_P
    - pq_sendint32
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - pq_sendfloat8
    linkageType: ''
    returnType: Datum
    signature: Datum poly_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3619,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3620,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3628,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3629,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3632
      start: 3616
    functionDepth: 1
    functionLinenumber: 3616
    functionLinenumberEnd: 3632
    functionName: poly_left
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_left(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3642,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3643,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3651,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3652,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3655
      start: 3639
    functionDepth: 1
    functionLinenumber: 3639
    functionLinenumberEnd: 3655
    functionName: poly_overleft
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_overleft(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3665,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3666,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3674,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3675,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3677,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3678
      start: 3662
    functionDepth: 1
    functionLinenumber: 3662
    functionLinenumberEnd: 3678
    functionName: poly_right
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_right(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3688,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3689,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3697,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3698,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3701
      start: 3685
    functionDepth: 1
    functionLinenumber: 3685
    functionLinenumberEnd: 3701
    functionName: poly_overright
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_overright(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3711,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3712,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3720,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3721,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3724
      start: 3708
    functionDepth: 1
    functionLinenumber: 3708
    functionLinenumberEnd: 3724
    functionName: poly_below
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_below(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3734,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3735,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3743,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3744,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3747
      start: 3731
    functionDepth: 1
    functionLinenumber: 3731
    functionLinenumberEnd: 3747
    functionName: poly_overbelow
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_overbelow(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3757,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3758,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3766,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3767,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3770
      start: 3754
    functionDepth: 1
    functionLinenumber: 3754
    functionLinenumberEnd: 3770
    functionName: poly_above
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_above(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3780,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3781,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3789,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3790,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3793
      start: 3777
    functionDepth: 1
    functionLinenumber: 3777
    functionLinenumberEnd: 3793
    functionName: poly_overabove
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_overabove(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3806,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3807,1
    - Dst: plist_same
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3813,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3818,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3819,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3821,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3822
      start: 3803
    functionDepth: 1
    functionLinenumber: 3803
    functionLinenumberEnd: 3822
    functionName: poly_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - plist_same
    linkageType: ''
    returnType: Datum
    signature: Datum poly_same(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3832,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3835,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3864,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3876,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3877,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - polya
    - polyb
    argTypes:
    - POLYGON*
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3882
      start: 3827
    functionDepth: 6
    functionLinenumber: 3827
    functionLinenumberEnd: 3882
    functionName: poly_overlap_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - Assert
    - point_inside
    - box_ov
    - lseg_interpt_lseg
    linkageType: ''
    returnType: bool
    signature: bool poly_overlap_internal(POLYGON *polya, POLYGON *polyb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3887,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3888,1
    - Dst: poly_overlap_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3891,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3896,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3897,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3900
      start: 3884
    functionDepth: 7
    functionLinenumber: 3884
    functionLinenumberEnd: 3900
    functionName: poly_overlap
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - poly_overlap_internal
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_overlap(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3922,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3924,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3925,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3927,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3929,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3930,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3932,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3934,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3936,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3938,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - a
    - b
    - s
    - poly
    - start
    argTypes:
    - Point*
    - Point*
    - LSEG*
    - POLYGON*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3942
      start: 3913
    functionDepth: 4
    functionLinenumber: 3913
    functionLinenumberEnd: 3942
    functionName: touched_lseg_inside_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_eq_point
    - lseg_inside_poly
    - lseg_contain_point
    linkageType: ''
    returnType: bool
    signature: bool touched_lseg_inside_poly(Point *a, Point *b, LSEG *s, POLYGON
      *poly, int start)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3959,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3969,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3973,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3975,1
    - Dst: touched_lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3979,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3981,1
    - Dst: touched_lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3984,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3986,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3993,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3995,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4009,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4009,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4010,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4010,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4012,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - a
    - b
    - poly
    - start
    argTypes:
    - Point*
    - Point*
    - POLYGON*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4016
      start: 3949
    functionDepth: 6
    functionLinenumber: 3949
    functionLinenumberEnd: 4016
    functionName: lseg_inside_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - point_inside
    - float8_pl
    - check_stack_depth
    - CHECK_FOR_INTERRUPTS
    - lseg_contain_point
    - lseg_inside_poly
    - float8_div
    - touched_lseg_inside_poly
    - lseg_interpt_lseg
    linkageType: ''
    returnType: bool
    signature: bool lseg_inside_poly(Point *a, Point *b, POLYGON *poly, int start)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4027,1
    - Dst: box_contain_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4033,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4041,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - contains_poly
    - contained_poly
    argTypes:
    - POLYGON*
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4047
      start: 4021
    functionDepth: 7
    functionLinenumber: 4021
    functionLinenumberEnd: 4047
    functionName: poly_contain_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - Assert
    - box_contain_box
    - lseg_inside_poly
    linkageType: ''
    returnType: bool
    signature: bool poly_contain_poly(POLYGON *contains_poly, POLYGON *contained_poly)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4052,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4053,1
    - Dst: poly_contain_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4056,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4061,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4062,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4065
      start: 4049
    functionDepth: 8
    functionLinenumber: 4049
    functionLinenumberEnd: 4065
    functionName: poly_contain
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - poly_contain_poly
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_contain(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4074,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4075,1
    - Dst: poly_contain_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4079,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4084,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4085,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4088
      start: 4071
    functionDepth: 8
    functionLinenumber: 4071
    functionLinenumberEnd: 4088
    functionName: poly_contained
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_FREE_IF_COPY
    - poly_contain_poly
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_contained(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4094,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4095,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4097,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4097,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4098
      start: 4091
    functionDepth: 1
    functionLinenumber: 4091
    functionLinenumberEnd: 4098
    functionName: poly_contain_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - point_inside
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_contain_pt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4103,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4104,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4106,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4107
      start: 4100
    functionDepth: 1
    functionLinenumber: 4100
    functionLinenumberEnd: 4107
    functionName: pt_contained_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - point_inside
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pt_contained_poly(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4113,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4114,1
    - Dst: poly_overlap_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4128,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4129,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4154,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4155,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4157,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4158,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4167,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4169,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4170
      start: 4110
    functionDepth: 7
    functionLinenumber: 4110
    functionLinenumberEnd: 4170
    functionName: poly_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - statlseg_construct
    - lseg_closept_lseg
    - PG_RETURN_NULL
    - poly_overlap_internal
    - float8_lt
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum poly_distance(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4182,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4183,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4186,1
    - Dst: point_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4188,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4191
      start: 4179
    functionDepth: 1
    functionLinenumber: 4179
    functionLinenumberEnd: 4191
    functionName: construct_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - point_construct
    - PG_GETARG_FLOAT8
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum construct_point(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4200,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4201,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4204,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4205,1
    - Dst: point_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - result
    - pt1
    - pt2
    - escontext
    argTypes:
    - Point*
    - Point*
    - Point*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4209
      start: 4194
    functionDepth: 2
    functionLinenumber: 4194
    functionLinenumberEnd: 4209
    functionName: point_add_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl_safe
    - SOFT_ERROR_OCCURRED
    - point_construct
    linkageType: ''
    returnType: void
    signature: void point_add_point(Point *result, Point *pt1, Point *pt2, Node *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4214,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4215,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4218,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4220,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4223
      start: 4211
    functionDepth: 3
    functionLinenumber: 4211
    functionLinenumberEnd: 4223
    functionName: point_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_add_point
    - PG_RETURN_POINT_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum point_add(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: point_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4229,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4230,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - result
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4232
      start: 4226
    functionDepth: 3
    functionLinenumber: 4226
    functionLinenumberEnd: 4232
    functionName: point_sub_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - point_construct
    linkageType: ''
    returnType: void
    signature: void point_sub_point(Point *result, Point *pt1, Point *pt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4237,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4238,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4241,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4243,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4246
      start: 4234
    functionDepth: 4
    functionLinenumber: 4234
    functionLinenumberEnd: 4246
    functionName: point_sub
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - point_sub_point
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum point_sub(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: point_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4252,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4253,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4253,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4254,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4255,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4255,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - result
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4257
      start: 4249
    functionDepth: 3
    functionLinenumber: 4249
    functionLinenumberEnd: 4257
    functionName: point_mul_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - float8_mul
    - point_construct
    - float8_pl
    linkageType: ''
    returnType: void
    signature: void point_mul_point(Point *result, Point *pt1, Point *pt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4262,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4263,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4266,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4268,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4271
      start: 4259
    functionDepth: 4
    functionLinenumber: 4259
    functionLinenumberEnd: 4271
    functionName: point_mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - point_mul_point
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum point_mul(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4279,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4279,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4279,1
    - Dst: point_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4281,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4282,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4282,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4282,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4283,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4284,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4284,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4284,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - result
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4286
      start: 4274
    functionDepth: 3
    functionLinenumber: 4274
    functionLinenumberEnd: 4286
    functionName: point_div_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - float8_mul
    - float8_div
    - float8_mi
    - point_construct
    linkageType: ''
    returnType: void
    signature: void point_div_point(Point *result, Point *pt1, Point *pt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4291,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4292,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4295,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4297,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4300
      start: 4288
    functionDepth: 4
    functionLinenumber: 4288
    functionLinenumberEnd: 4300
    functionName: point_div
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - point_div_point
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum point_div(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4312,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4313,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4316,1
    - Dst: box_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4318,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4321
      start: 4309
    functionDepth: 3
    functionLinenumber: 4309
    functionLinenumberEnd: 4321
    functionName: points_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_construct
    - PG_RETURN_BOX_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum points_box(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4326,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4327,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4330,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4332,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4333,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4336
      start: 4323
    functionDepth: 3
    functionLinenumber: 4323
    functionLinenumberEnd: 4336
    functionName: box_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_add_point
    - PG_GETARG_BOX_P
    - PG_RETURN_BOX_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum box_add(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4341,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4342,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4345,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4347,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4348,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4351
      start: 4338
    functionDepth: 4
    functionLinenumber: 4338
    functionLinenumberEnd: 4351
    functionName: box_sub
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_sub_point
    - PG_GETARG_BOX_P
    - PG_RETURN_BOX_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum box_sub(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4356,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4357,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4362,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4364,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4365,1
    - Dst: box_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4367,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4370
      start: 4353
    functionDepth: 4
    functionLinenumber: 4353
    functionLinenumberEnd: 4370
    functionName: box_mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_construct
    - PG_GETARG_BOX_P
    - PG_RETURN_BOX_P
    - PG_GETARG_POINT_P
    - palloc_object
    - point_mul_point
    linkageType: ''
    returnType: Datum
    signature: Datum box_mul(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4375,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4376,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4381,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4383,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4384,1
    - Dst: box_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4386,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4389
      start: 4372
    functionDepth: 4
    functionLinenumber: 4372
    functionLinenumberEnd: 4389
    functionName: box_div
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_construct
    - point_div_point
    - PG_GETARG_BOX_P
    - PG_RETURN_BOX_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum box_div(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4397,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4400,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4408
      start: 4394
    functionDepth: 1
    functionLinenumber: 4394
    functionLinenumberEnd: 4408
    functionName: point_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOX_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum point_box(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4416,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4417,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4420,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4422,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4423,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4424,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4425,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4428
      start: 4413
    functionDepth: 3
    functionLinenumber: 4413
    functionLinenumberEnd: 4428
    functionName: boxes_bound_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_min
    - PG_GETARG_BOX_P
    - PG_RETURN_BOX_P
    - palloc_object
    - float8_max
    linkageType: ''
    returnType: Datum
    signature: Datum boxes_bound_box(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4444,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4445,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4452,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4460,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4461,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4462,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4464,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4466,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4483,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4484
      start: 4441
    functionDepth: 2
    functionLinenumber: 4441
    functionLinenumberEnd: 4484
    functionName: path_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errcode
    - ereport
    - PG_RETURN_NULL
    - errmsg
    - SET_VARSIZE
    - palloc
    - PG_GETARG_PATH_P
    - PG_RETURN_PATH_P
    linkageType: ''
    returnType: Datum
    signature: Datum path_add(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4493,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4494,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4498,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4501
      start: 4490
    functionDepth: 3
    functionLinenumber: 4490
    functionLinenumberEnd: 4501
    functionName: path_add_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_add_point
    - PG_RETURN_PATH_P
    - PG_GETARG_PATH_P_COPY
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum path_add_pt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4506,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4507,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4511,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4514
      start: 4503
    functionDepth: 4
    functionLinenumber: 4503
    functionLinenumberEnd: 4514
    functionName: path_sub_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_PATH_P
    - point_sub_point
    - PG_GETARG_PATH_P_COPY
    - PG_GETARG_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum path_sub_pt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4523,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4524,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4528,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4531
      start: 4520
    functionDepth: 4
    functionLinenumber: 4520
    functionLinenumberEnd: 4531
    functionName: path_mul_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_mul_point
    - PG_GETARG_PATH_P_COPY
    - PG_GETARG_POINT_P
    - PG_RETURN_PATH_P
    linkageType: ''
    returnType: Datum
    signature: Datum path_mul_pt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4536,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4537,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4541,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4544
      start: 4533
    functionDepth: 4
    functionLinenumber: 4533
    functionLinenumberEnd: 4544
    functionName: path_div_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_div_point
    - PG_GETARG_PATH_P_COPY
    - PG_GETARG_POINT_P
    - PG_RETURN_PATH_P
    linkageType: ''
    returnType: Datum
    signature: Datum path_div_pt(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4550,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4557,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4558,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4559,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4566,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4568,1
    - Dst: make_bound_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4577,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4579,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4580
      start: 4547
    functionDepth: 3
    functionLinenumber: 4547
    functionLinenumberEnd: 4580
    functionName: path_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errcode
    - PG_RETURN_POLYGON_P
    - make_bound_box
    - errmsg
    - SET_VARSIZE
    - palloc
    - PG_GETARG_PATH_P
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum path_poly(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4592,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4595
      start: 4589
    functionDepth: 1
    functionLinenumber: 4589
    functionLinenumberEnd: 4595
    functionName: poly_npoints
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum poly_npoints(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4601,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4605,1
    - Dst: poly_to_circle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4607,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4608,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4609,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4614
      start: 4598
    functionDepth: 1
    functionLinenumber: 4598
    functionLinenumberEnd: 4614
    functionName: poly_center
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - poly_to_circle
    - PG_GETARG_POLYGON_P
    - palloc_object
    - PG_RETURN_NULL
    - PG_RETURN_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum poly_center(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4620,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4623,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4627
      start: 4617
    functionDepth: 1
    functionLinenumber: 4617
    functionLinenumberEnd: 4627
    functionName: poly_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_RETURN_BOX_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum poly_box(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4637,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4643,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4645,1
    - Dst: box_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4657,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4660
      start: 4634
    functionDepth: 3
    functionLinenumber: 4634
    functionLinenumberEnd: 4660
    functionName: box_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_construct
    - PG_RETURN_POLYGON_P
    - PG_GETARG_BOX_P
    - SET_VARSIZE
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum box_poly(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4666,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4676,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4678,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4691
      start: 4663
    functionDepth: 2
    functionLinenumber: 4663
    functionLinenumberEnd: 4691
    functionName: poly_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - PG_RETURN_PATH_P
    - SET_VARSIZE
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum poly_path(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4714,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4716,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4722,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4730,1
    - Dst: pair_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4737,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4739,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4744,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4745,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4749,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4750,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4751,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4760,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4764,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4765,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4766,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4771,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4772,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4773,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4776,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4777
      start: 4711
    functionDepth: 3
    functionLinenumber: 4711
    functionLinenumberEnd: 4777
    functionName: circle_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - single_decode
    - PG_RETURN_CIRCLE_P
    - errcode
    - PG_GETARG_CSTRING
    - pair_decode
    - isspace
    - errmsg
    - palloc_object
    - PG_RETURN_NULL
    - ereturn
    linkageType: ''
    returnType: Datum
    signature: Datum circle_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4785,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4788,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4790,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4791,1
    - Dst: pair_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4792,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4793,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4794,1
    - Dst: single_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4795,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4796,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4799
      start: 4782
    functionDepth: 3
    functionLinenumber: 4782
    functionLinenumberEnd: 4799
    functionName: circle_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - single_encode
    - initStringInfo
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_CSTRING
    - pair_encode
    - appendStringInfoChar
    linkageType: ''
    returnType: Datum
    signature: Datum circle_out(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4807,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4810,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4812,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4813,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4814,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4818,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4819,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4820,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4823
      start: 4804
    functionDepth: 3
    functionLinenumber: 4804
    functionLinenumberEnd: 4823
    functionName: circle_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CIRCLE_P
    - errcode
    - ereport
    - pq_getmsgfloat8
    - errmsg
    - palloc_object
    - PG_GETARG_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum circle_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4831,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4834,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4835,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4836,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4837,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4838,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4839
      start: 4828
    functionDepth: 4
    functionLinenumber: 4828
    functionLinenumberEnd: 4839
    functionName: circle_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_begintypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_CIRCLE_P
    - pq_sendfloat8
    linkageType: ''
    returnType: Datum
    signature: Datum circle_send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4856,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4857,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4859,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4859,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4859,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4860,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4862
      start: 4853
    functionDepth: 3
    functionLinenumber: 4853
    functionLinenumberEnd: 4862
    functionName: circle_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_eq_point
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    - FPeq
    - isnan
    linkageType: ''
    returnType: Datum
    signature: Datum circle_same(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4870,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4871,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4873,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4873,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4873,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4875
      start: 4867
    functionDepth: 3
    functionLinenumber: 4867
    functionLinenumberEnd: 4875
    functionName: circle_overlap
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - float8_pl
    - point_dt
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_overlap(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4884,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4885,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4887,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4887,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4887,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4889
      start: 4881
    functionDepth: 3
    functionLinenumber: 4881
    functionLinenumberEnd: 4889
    functionName: circle_overleft
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - float8_pl
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_overleft(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4897,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4898,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4900,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4900,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4900,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4902
      start: 4894
    functionDepth: 3
    functionLinenumber: 4894
    functionLinenumberEnd: 4902
    functionName: circle_left
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - float8_pl
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    - float8_mi
    linkageType: ''
    returnType: Datum
    signature: Datum circle_left(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4910,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4911,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4913,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4913,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4913,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4915
      start: 4907
    functionDepth: 3
    functionLinenumber: 4907
    functionLinenumberEnd: 4915
    functionName: circle_right
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - PG_GETARG_CIRCLE_P
    - FPgt
    - PG_RETURN_BOOL
    - float8_mi
    linkageType: ''
    returnType: Datum
    signature: Datum circle_right(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4924,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4925,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4927,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4927,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4927,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4929
      start: 4921
    functionDepth: 3
    functionLinenumber: 4921
    functionLinenumberEnd: 4929
    functionName: circle_overright
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - FPge
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_overright(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4937,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4938,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4940,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4940,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4940,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4942
      start: 4934
    functionDepth: 3
    functionLinenumber: 4934
    functionLinenumberEnd: 4942
    functionName: circle_contained
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - point_dt
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    - float8_mi
    linkageType: ''
    returnType: Datum
    signature: Datum circle_contained(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4950,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4951,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4953,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4953,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4953,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4955
      start: 4947
    functionDepth: 3
    functionLinenumber: 4947
    functionLinenumberEnd: 4955
    functionName: circle_contain
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - point_dt
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    - float8_mi
    linkageType: ''
    returnType: Datum
    signature: Datum circle_contain(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4964,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4965,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4967,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4967,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4967,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4969
      start: 4961
    functionDepth: 3
    functionLinenumber: 4961
    functionLinenumberEnd: 4969
    functionName: circle_below
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - float8_pl
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    - float8_mi
    linkageType: ''
    returnType: Datum
    signature: Datum circle_below(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4977,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4978,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4980,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4980,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4980,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4982
      start: 4974
    functionDepth: 3
    functionLinenumber: 4974
    functionLinenumberEnd: 4982
    functionName: circle_above
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - PG_GETARG_CIRCLE_P
    - FPgt
    - PG_RETURN_BOOL
    - float8_mi
    linkageType: ''
    returnType: Datum
    signature: Datum circle_above(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4991,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4992,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4994,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4994,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4994,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4996
      start: 4988
    functionDepth: 3
    functionLinenumber: 4988
    functionLinenumberEnd: 4996
    functionName: circle_overbelow
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPle
    - float8_pl
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_overbelow(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5005,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5006,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5008,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5008,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5008,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5010
      start: 5002
    functionDepth: 3
    functionLinenumber: 5002
    functionLinenumberEnd: 5010
    functionName: circle_overabove
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - FPge
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_overabove(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5020,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5021,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5023,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5023,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5023,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5024
      start: 5017
    functionDepth: 1
    functionLinenumber: 5017
    functionLinenumberEnd: 5024
    functionName: circle_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - circle_ar
    - FPeq
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5029,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5030,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5032,1
    - Dst: FPne
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5032,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5032,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5033
      start: 5026
    functionDepth: 1
    functionLinenumber: 5026
    functionLinenumberEnd: 5033
    functionName: circle_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - circle_ar
    - FPne
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5038,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5039,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5041,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5041,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5041,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5042
      start: 5035
    functionDepth: 1
    functionLinenumber: 5035
    functionLinenumberEnd: 5042
    functionName: circle_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - circle_ar
    - FPlt
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5047,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5048,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5050,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5050,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5050,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5051
      start: 5044
    functionDepth: 1
    functionLinenumber: 5044
    functionLinenumberEnd: 5051
    functionName: circle_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - circle_ar
    - FPgt
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5056,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5057,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5059,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5059,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5059,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5060
      start: 5053
    functionDepth: 1
    functionLinenumber: 5053
    functionLinenumberEnd: 5060
    functionName: circle_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - circle_ar
    - FPle
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5065,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5066,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5068,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5068,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5068,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5069
      start: 5062
    functionDepth: 1
    functionLinenumber: 5062
    functionLinenumberEnd: 5069
    functionName: circle_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - circle_ar
    - FPge
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5083,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5084,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5087,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5089,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5093
      start: 5080
    functionDepth: 3
    functionLinenumber: 5080
    functionLinenumberEnd: 5093
    functionName: circle_add_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CIRCLE_P
    - point_add_point
    - PG_GETARG_CIRCLE_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum circle_add_pt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5098,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5099,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5102,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5104,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5108
      start: 5095
    functionDepth: 4
    functionLinenumber: 5095
    functionLinenumberEnd: 5108
    functionName: circle_sub_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_sub_point
    - PG_RETURN_CIRCLE_P
    - PG_GETARG_CIRCLE_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum circle_sub_pt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5118,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5119,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5122,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5124,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5125,1
    - Dst: hypot
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5125,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5128
      start: 5115
    functionDepth: 4
    functionLinenumber: 5115
    functionLinenumberEnd: 5128
    functionName: circle_mul_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CIRCLE_P
    - hypot
    - float8_mul
    - PG_GETARG_CIRCLE_P
    - PG_GETARG_POINT_P
    - palloc_object
    - point_mul_point
    linkageType: ''
    returnType: Datum
    signature: Datum circle_mul_pt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5133,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5134,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5137,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5139,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5140,1
    - Dst: hypot
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5140,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5143
      start: 5130
    functionDepth: 4
    functionLinenumber: 5130
    functionLinenumberEnd: 5143
    functionName: circle_div_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CIRCLE_P
    - hypot
    - point_div_point
    - PG_GETARG_CIRCLE_P
    - float8_div
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum circle_div_pt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5152,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5154,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5155
      start: 5149
    functionDepth: 1
    functionLinenumber: 5149
    functionLinenumberEnd: 5155
    functionName: circle_area
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - circle_ar
    - PG_GETARG_CIRCLE_P
    linkageType: ''
    returnType: Datum
    signature: Datum circle_area(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5164,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5166,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5167
      start: 5161
    functionDepth: 3
    functionLinenumber: 5161
    functionLinenumberEnd: 5167
    functionName: circle_diameter
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - float8_mul
    - PG_GETARG_CIRCLE_P
    linkageType: ''
    returnType: Datum
    signature: Datum circle_diameter(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5176,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5179
      start: 5173
    functionDepth: 1
    functionLinenumber: 5173
    functionLinenumberEnd: 5179
    functionName: circle_radius
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_CIRCLE_P
    linkageType: ''
    returnType: Datum
    signature: Datum circle_radius(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5189,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5190,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5193,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5193,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5194,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5199
      start: 5186
    functionDepth: 3
    functionLinenumber: 5186
    functionLinenumberEnd: 5199
    functionName: circle_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - point_dt
    - PG_GETARG_CIRCLE_P
    - float8_mi
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum circle_distance(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5205,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5206,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5209,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5211
      start: 5202
    functionDepth: 3
    functionLinenumber: 5202
    functionLinenumberEnd: 5211
    functionName: circle_contain_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - point_dt
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum circle_contain_pt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5217,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5218,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5221,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5223
      start: 5214
    functionDepth: 3
    functionLinenumber: 5214
    functionLinenumberEnd: 5223
    functionName: pt_contained_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CIRCLE_P
    - point_dt
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum pt_contained_circle(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5233,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5234,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5237,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5237,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5243
      start: 5230
    functionDepth: 3
    functionLinenumber: 5230
    functionLinenumberEnd: 5243
    functionName: dist_pc
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - PG_GETARG_CIRCLE_P
    - PG_GETARG_POINT_P
    - float8_mi
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dist_pc(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5251,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5252,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5255,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5255,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5260
      start: 5248
    functionDepth: 3
    functionLinenumber: 5248
    functionLinenumberEnd: 5260
    functionName: dist_cpoint
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - PG_GETARG_CIRCLE_P
    - PG_GETARG_POINT_P
    - float8_mi
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dist_cpoint(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5268,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5271,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5276
      start: 5265
    functionDepth: 1
    functionLinenumber: 5265
    functionLinenumberEnd: 5276
    functionName: circle_center
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - PG_GETARG_CIRCLE_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum circle_center(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5285,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - circle
    argTypes:
    - CIRCLE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5286
      start: 5282
    functionDepth: 3
    functionLinenumber: 5282
    functionLinenumberEnd: 5286
    functionName: circle_ar
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 7
    functionsReached:
    - float8_mul
    linkageType: ''
    returnType: float8
    signature: float8 circle_ar(CIRCLE *circle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5296,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5297,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5300,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5307
      start: 5293
    functionDepth: 1
    functionLinenumber: 5293
    functionLinenumberEnd: 5307
    functionName: cr_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT8
    - PG_RETURN_CIRCLE_P
    - PG_GETARG_POINT_P
    - palloc_object
    linkageType: ''
    returnType: Datum
    signature: Datum cr_circle(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5312,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5316,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5318,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5318,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5319,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5322,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5323,1
    - Dst: float8_mi_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5326,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5327,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5330,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5331,1
    - Dst: float8_mi_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5334,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5335,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5338,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5341,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5342
      start: 5309
    functionDepth: 2
    functionLinenumber: 5309
    functionLinenumberEnd: 5342
    functionName: circle_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - float8_mi_safe
    - float8_div_safe
    - float8_pl_safe
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_BOX_P
    - palloc_object
    - PG_RETURN_NULL
    - sqrt
    linkageType: ''
    returnType: Datum
    signature: Datum circle_box(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5351,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5356,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5358,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5359,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5362,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5363,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5366,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5367,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5370,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5371,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5374,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5377,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5380,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5383,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5384
      start: 5348
    functionDepth: 3
    functionLinenumber: 5348
    functionLinenumberEnd: 5384
    functionName: box_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - PG_RETURN_CIRCLE_P
    - float8_div_safe
    - float8_pl_safe
    - point_dt
    - PG_GETARG_BOX_P
    - palloc_object
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum box_circle(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5397,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5398,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5400,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5403,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5404,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5405,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5414,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5416,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5417,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5420,1
    - Dst: float8_mul_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5426,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5427,1
    - Dst: float8_mul_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5430,1
    - Dst: cos
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5430,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5431,1
    - Dst: float8_mi_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5434,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5435,1
    - Dst: float8_mul_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5438,1
    - Dst: sin
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5438,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5439,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5442,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5443,1
    - Dst: make_bound_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5447,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - npts
    - circle
    - fcinfo
    argTypes:
    - int32
    - CIRCLE*
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5450
      start: 5387
    functionDepth: 3
    functionLinenumber: 5387
    functionLinenumberEnd: 5450
    functionName: circle_poly_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mul_safe
    - SOFT_ERROR_OCCURRED
    - float8_mi_safe
    - errcode
    - float8_pl_safe
    - palloc0
    - make_bound_box
    - sin
    - float8_div
    - errmsg
    - SET_VARSIZE
    - cos
    - ereturn
    - FPzero
    linkageType: ''
    returnType: POLYGON
    signature: 'POLYGON *

      circle_poly_internal(int32 npts, const CIRCLE *circle, FunctionCallInfo fcinfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5455,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5456,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5458,1
    - Dst: circle_poly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5459
      start: 5452
    functionDepth: 4
    functionLinenumber: 5452
    functionLinenumberEnd: 5459
    functionName: circle_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POLYGON_P
    - circle_poly_internal
    - PG_GETARG_INT32
    - PG_GETARG_CIRCLE_P
    linkageType: ''
    returnType: Datum
    signature: Datum circle_poly(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5466,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5468,1
    - Dst: circle_poly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5469
      start: 5462
    functionDepth: 4
    functionLinenumber: 5462
    functionLinenumberEnd: 5469
    functionName: circle_to_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POLYGON_P
    - circle_poly_internal
    - PG_GETARG_CIRCLE_P
    linkageType: ''
    returnType: Datum
    signature: Datum circle_to_poly(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5485,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5493,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5494,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5498,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5499,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5502,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5503,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5508,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5509,1
    - Dst: float8_pl_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5512,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5513,1
    - Dst: float8_div_safe
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5517,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5518,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - result
    - poly
    - escontext
    argTypes:
    - CIRCLE*
    - POLYGON*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5520
      start: 5479
    functionDepth: 3
    functionLinenumber: 5479
    functionLinenumberEnd: 5520
    functionName: poly_to_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - Assert
    - point_add_point
    - float8_div_safe
    - point_dt
    - float8_pl_safe
    linkageType: ''
    returnType: void
    signature: void poly_to_circle(CIRCLE *result, POLYGON *poly, Node *escontext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5525,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5528,1
    - Dst: poly_to_circle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5530,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5531,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5532,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5535
      start: 5522
    functionDepth: 4
    functionLinenumber: 5522
    functionLinenumberEnd: 5535
    functionName: poly_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - SOFT_ERROR_OCCURRED
    - poly_to_circle
    - PG_RETURN_CIRCLE_P
    - PG_GETARG_POLYGON_P
    - palloc_object
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum poly_circle(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5570,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5573,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5574,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5582,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5583,1
    - Dst: lseg_crossing
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5586,1
    - Dst: lseg_crossing
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5595,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - p
    - npts
    - plist
    argTypes:
    - Point*
    - int
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5602
      start: 5557
    functionDepth: 3
    functionLinenumber: 5557
    functionLinenumberEnd: 5602
    functionName: point_inside
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 6
    functionsReached:
    - Assert
    - lseg_crossing
    - float8_mi
    linkageType: ''
    returnType: int
    signature: int point_inside(Point *p, int npts, Point *plist)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5621,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5623,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5625,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5627,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5629,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5630,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5634,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5636,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5643,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5645,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5647,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5648,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5649,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5654,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5654,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5657,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5657,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5662,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5662,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5662,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5663,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5663,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5664,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5666,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5667,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 31
    argCount: 4
    argNames:
    - x
    - y
    - prev_x
    - prev_y
    argTypes:
    - float8
    - float8
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5672
      start: 5615
    functionDepth: 3
    functionLinenumber: 5615
    functionLinenumberEnd: 5672
    functionName: lseg_crossing
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - FPle
    - FPlt
    - FPge
    - float8_mul
    - FPgt
    - float8_mi
    - FPzero
    linkageType: ''
    returnType: int
    signature: int lseg_crossing(float8 x, float8 y, float8 prev_x, float8 prev_y)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5685,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5693,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5704,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - npts
    - p1
    - p2
    argTypes:
    - int
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5713
      start: 5675
    functionDepth: 3
    functionLinenumber: 5675
    functionLinenumberEnd: 5713
    functionName: plist_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - point_eq_point
    linkageType: ''
    returnType: bool
    signature: bool plist_same(int npts, Point *p1, Point *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - year
    - month
    - day
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 319
    functionName: date2j
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int date2j(int year, int month, int day)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - jd
    - year
    - month
    - day
    argTypes:
    - int
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 344
    functionName: j2date
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void j2date(int jd, int *year, int *month, int *day)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - date
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 364
    functionName: j2day
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int j2day(int date)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimeUsec
      Src: /src/postgres/src/backend/utils/adt/datetime.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 382
    functionName: GetCurrentDateTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 5
    functionsReached:
    - GetCurrentTimeUsec
    linkageType: ''
    returnType: void
    signature: void GetCurrentDateTime(struct pg_tm *tm)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/datetime.c:400,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/datetime.c:429,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/datetime.c:431,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:432,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:433,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - tm
    - fsec
    - tzp
    argTypes:
    - struct pg_tm*
    - fsec_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 444
    functionName: GetCurrentTimeUsec
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 3
    functionsReached:
    - errcode
    - ereport
    - GetCurrentTransactionStartTimestamp
    - timestamp2tm
    - errmsg
    linkageType: ''
    returnType: void
    signature: void GetCurrentTimeUsec(struct pg_tm *tm, fsec_t *fsec, int *tzp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:461,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:464,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:464,1
    - Dst: pg_ultostr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:466,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:466,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:471,1
    - Dst: pg_ultostr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:506,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:506,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 5
    argNames:
    - cp
    - sec
    - fsec
    - precision
    - fillzeros
    argTypes:
    - char*
    - int
    - fsec_t
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 512
    functionName: AppendSeconds
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached:
    - Assert
    - pg_ultostr_zeropad
    - abs
    - pg_ultostr
    linkageType: ''
    returnType: char
    signature: 'char *

      AppendSeconds(char *cp, int sec, fsec_t fsec, int precision, bool fillzeros)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AppendSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cp
    - tm
    - fsec
    argTypes:
    - char*
    - struct pg_tm*
    - fsec_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 525
    functionName: AppendTimestampSeconds
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - AppendSeconds
    linkageType: ''
    returnType: char
    signature: 'char *

      AppendTimestampSeconds(char *cp, struct pg_tm *tm, fsec_t fsec)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:537,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - val
    - multiplier
    - sum
    argTypes:
    - int64
    - int64
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 541
    functionName: int64_multiply_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_add_s64_overflow
    - pg_mul_s64_overflow
    linkageType: ''
    returnType: bool
    signature: bool int64_multiply_add(int64 val, int64 multiplier, int64 *sum)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - frac
    - scale
    - itm_in
    argTypes:
    - double
    - int64
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 572
    functionName: AdjustFractMicroseconds
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_add_s64_overflow
    linkageType: ''
    returnType: bool
    signature: "bool AdjustFractMicroseconds(double frac, int64 scale,\n\t\t\t\t\t\tstruct
      pg_itm_in *itm_in)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:597,1
    - Dst: AdjustFractMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:602,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - frac
    - scale
    - itm_in
    argTypes:
    - double
    - int
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 579
    functionDepth: 2
    functionLinenumber: 579
    functionLinenumberEnd: 603
    functionName: AdjustFractDays
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - pg_add_s32_overflow
    - AdjustFractMicroseconds
    linkageType: ''
    returnType: bool
    signature: "bool AdjustFractDays(double frac, int scale,\n\t\t\t\tstruct pg_itm_in
      *itm_in)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:619,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - frac
    - scale
    - itm_in
    argTypes:
    - double
    - int
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 622
    functionName: AdjustFractYears
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_add_s32_overflow
    - rint
    linkageType: ''
    returnType: bool
    signature: "bool AdjustFractYears(double frac, int scale,\n\t\t\t\t struct pg_itm_in
      *itm_in)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: int64_multiply_add
      Src: /src/postgres/src/backend/utils/adt/datetime.c:633,1
    - Dst: AdjustFractMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - val
    - fval
    - scale
    - itm_in
    argTypes:
    - int64
    - double
    - int64
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 637
    functionName: AdjustMicroseconds
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - int64_multiply_add
    - AdjustFractMicroseconds
    linkageType: ''
    returnType: bool
    signature: "bool AdjustMicroseconds(int64 val, double fval, int64 scale,\n\t\t\t\t
      \  struct pg_itm_in *itm_in)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:650,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 3
    argNames:
    - val
    - scale
    - itm_in
    argTypes:
    - int64
    - int
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 652
    functionName: AdjustDays
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_add_s32_overflow
    - pg_mul_s32_overflow
    linkageType: ''
    returnType: bool
    signature: bool AdjustDays(int64 val, int scale, struct pg_itm_in *itm_in)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:664,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - val
    - itm_in
    argTypes:
    - int64
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 665
    functionName: AdjustMonths
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_add_s32_overflow
    linkageType: ''
    returnType: bool
    signature: bool AdjustMonths(int64 val, struct pg_itm_in *itm_in)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:679,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:680,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 3
    argNames:
    - val
    - scale
    - itm_in
    argTypes:
    - int64
    - int
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 681
    functionName: AdjustYears
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_add_s32_overflow
    - pg_mul_s32_overflow
    linkageType: ''
    returnType: bool
    signature: "bool AdjustYears(int64 val, int scale,\n\t\t\tstruct pg_itm_in *itm_in)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:694,1
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/datetime.c:712,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:712,1
    - Dst: strtod
      Src: /src/postgres/src/backend/utils/adt/datetime.c:716,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - cp
    - frac
    argTypes:
    - char*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 690
    functionDepth: 1
    functionLinenumber: 690
    functionLinenumberEnd: 722
    functionName: ParseFraction
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - Assert
    - strtod
    - strspn
    - strlen
    linkageType: ''
    returnType: int
    signature: int ParseFraction(char *cp, double *frac)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ParseFraction
      Src: /src/postgres/src/backend/utils/adt/datetime.c:734,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cp
    - fsec
    argTypes:
    - char*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 728
    functionDepth: 2
    functionLinenumber: 728
    functionLinenumberEnd: 739
    functionName: ParseFractionalSecond
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - ParseFraction
    - rint
    linkageType: ''
    returnType: int
    signature: int ParseFractionalSecond(char *cp, fsec_t *fsec)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/datetime.c:801,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:813,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:815,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:816,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:817,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:823,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:824,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:826,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:834,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:836,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:839,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:840,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:849,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:850,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:851,1
    - Dst: isalnum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:857,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:858,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:858,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:872,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:873,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:874,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:882,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:887,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:887,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:888,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:889,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:889,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:902,1
    - Dst: datebsearch
      Src: /src/postgres/src/backend/utils/adt/datetime.c:906,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:914,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:914,1
    - Dst: isalnum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:918,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:924,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/datetime.c:926,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:930,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:933,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:934,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:936,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:939,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:942,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:942,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:943,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:944,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:944,1
    - Dst: ispunct
      Src: /src/postgres/src/backend/utils/adt/datetime.c:951,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 93
    argCount: 7
    argNames:
    - timestr
    - workbuf
    - buflen
    - field
    - ftype
    - maxfields
    - numfields
    argTypes:
    - char*
    - char*
    - size_t
    - char**
    - int*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 774
    functionDepth: 2
    functionLinenumber: 774
    functionLinenumberEnd: 968
    functionName: ParseDateTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 10
    functionsReached:
    - APPEND_CHAR
    - isalnum
    - isdigit
    - isalpha
    - ispunct
    - isspace
    - datebsearch
    - pg_tolower
    linkageType: ''
    returnType: int
    signature: "int ParseDateTime(const char *timestr, char *workbuf, size_t buflen,\n\t\t\t
      \ char **field, int *ftype, int maxfields, int *numfields)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - bufptr
    - ','
    - end
    - ','
    - newchar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 789
    functionDepth: 0
    functionLinenumber: 789
    functionLinenumberEnd: 796
    functionName: APPEND_CHAR
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: APPEND_CHAR(bufptr, end, newchar)
  - BBCount: 98
    BranchProfiles: []
    Callsites:
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1056,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1060,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1064,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1068,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1084,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1084,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1085,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1085,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1091,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1114,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1118,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1127,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1127,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1138,1
    - Dst: pg_tzset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1142,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1149,1
    - Dst: DecodeDate
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1154,1
    - Dst: DecodeTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1173,1
    - Dst: time_overflows
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1179,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1191,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1195,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1210,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1223,1
    - Dst: ParseFraction
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1231,1
    - Dst: dt2time
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1235,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1244,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1244,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1267,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1268,1
    - Dst: DecodeDate
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1273,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1279,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1286,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1305,1
    - Dst: DecodeNumber
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1314,1
    - Dst: DecodeTimezoneAbbrev
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1327,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1332,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1336,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1343,1
    - Dst: GetCurrentTimeUsec
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1345,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1351,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1352,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1352,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1359,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1368,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1369,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1369,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1374,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1386,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1392,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1404,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1405,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1409,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1421,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1434,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1449,1
    - Dst: pg_tzset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1501,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1505,1
    - Dst: ValidateDate
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1530,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1557,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1560,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1570,1
    - Dst: DetermineTimeZoneAbbrevOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1573,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1577,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1583,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1586,1
    CyclomaticComplexity: 114
    EdgeCount: 114
    ICount: 312
    argCount: 8
    argNames:
    - field
    - ftype
    - nf
    - dtype
    - tm
    - fsec
    - tzp
    - extra
    argTypes:
    - char**